From fbb851c56863244cd9c0923c9d91bc07dd3f94e0 Mon Sep 17 00:00:00 2001 From: ian Date: Mon, 16 Dec 2013 19:58:50 +0000 Subject: compiler: Use backend interface for struct field expressions. * go-gcc.cc (Gcc_backend::struct_field_expression): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206029 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/ChangeLog | 4 ++++ gcc/go/go-gcc.cc | 36 ++++++++++++++++++++++++++++++++++++ gcc/go/gofrontend/backend.h | 4 ++++ gcc/go/gofrontend/expressions.cc | 28 ++++++---------------------- 4 files changed, 50 insertions(+), 22 deletions(-) (limited to 'gcc') diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index db0212cd37d..f6e6599bda3 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2013-12-16 Chris Manghane + + * go-gcc.cc (Gcc_backend::struct_field_expression): New function. + 2013-12-11 Ian Lance Taylor * go-lang.c (go_langhook_post_options): Disable sibling calls by diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc index 939be20c349..db8fd5e3355 100644 --- a/gcc/go/go-gcc.cc +++ b/gcc/go/go-gcc.cc @@ -243,6 +243,9 @@ class Gcc_backend : public Backend Bexpression* address_expression(Bexpression*, Location); + Bexpression* + struct_field_expression(Bexpression*, size_t, Location); + // Statements. Bstatement* @@ -998,6 +1001,39 @@ Gcc_backend::address_expression(Bexpression* bexpr, Location location) return this->make_expression(ret); } +// Return an expression for the field at INDEX in BSTRUCT. + +Bexpression* +Gcc_backend::struct_field_expression(Bexpression* bstruct, size_t index, + Location location) +{ + tree struct_tree = bstruct->get_tree(); + if (struct_tree == error_mark_node + || TREE_TYPE(struct_tree) == error_mark_node) + return this->error_expression(); + gcc_assert(TREE_CODE(TREE_TYPE(struct_tree)) == RECORD_TYPE); + tree field = TYPE_FIELDS(TREE_TYPE(struct_tree)); + if (field == NULL_TREE) + { + // This can happen for a type which refers to itself indirectly + // and then turns out to be erroneous. + return this->error_expression(); + } + for (unsigned int i = index; i > 0; --i) + { + field = DECL_CHAIN(field); + gcc_assert(field != NULL_TREE); + } + if (TREE_TYPE(field) == error_mark_node) + return this->error_expression(); + tree ret = fold_build3_loc(location.gcc_location(), COMPONENT_REF, + TREE_TYPE(field), struct_tree, field, + NULL_TREE); + if (TREE_CONSTANT(struct_tree)) + TREE_CONSTANT(ret) = 1; + return tree_to_expr(ret); +} + // An expression as a statement. Bstatement* diff --git a/gcc/go/gofrontend/backend.h b/gcc/go/gofrontend/backend.h index 8344da40120..55805941da6 100644 --- a/gcc/go/gofrontend/backend.h +++ b/gcc/go/gofrontend/backend.h @@ -280,6 +280,10 @@ class Backend virtual Bexpression* address_expression(Bexpression*, Location) = 0; + // Return an expression for the field at INDEX in BSTRUCT. + virtual Bexpression* + struct_field_expression(Bexpression* bstruct, size_t index, Location) = 0; + // Statements. // Create an error statement. This is used for cases which should diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 35bcdbb5145..81d18caae7a 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -11539,28 +11539,12 @@ Field_reference_expression::do_check_types(Gogo*) tree Field_reference_expression::do_get_tree(Translate_context* context) { - tree struct_tree = this->expr_->get_tree(context); - if (struct_tree == error_mark_node - || TREE_TYPE(struct_tree) == error_mark_node) - return error_mark_node; - go_assert(TREE_CODE(TREE_TYPE(struct_tree)) == RECORD_TYPE); - tree field = TYPE_FIELDS(TREE_TYPE(struct_tree)); - if (field == NULL_TREE) - { - // This can happen for a type which refers to itself indirectly - // and then turns out to be erroneous. - go_assert(saw_errors()); - return error_mark_node; - } - for (unsigned int i = this->field_index_; i > 0; --i) - { - field = DECL_CHAIN(field); - go_assert(field != NULL_TREE); - } - if (TREE_TYPE(field) == error_mark_node) - return error_mark_node; - return build3(COMPONENT_REF, TREE_TYPE(field), struct_tree, field, - NULL_TREE); + Bexpression* bstruct = tree_to_expr(this->expr_->get_tree(context)); + Bexpression* ret = + context->gogo()->backend()->struct_field_expression(bstruct, + this->field_index_, + this->location()); + return expr_to_tree(ret); } // Dump ast representation for a field reference expression. -- cgit v1.2.1 From 585f121a0ba15b3d5b5e60a18b4a985ae5fc8c08 Mon Sep 17 00:00:00 2001 From: janus Date: Mon, 16 Dec 2013 22:01:58 +0000 Subject: 2013-12-16 Janus Weil PR fortran/54949 * symbol.c (check_conflict): Forbid abstract procedure pointers. (gfc_add_abstract): Check for attribute conflicts. 2013-12-16 Janus Weil PR fortran/54949 * gfortran.dg/proc_ptr_44.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206033 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/symbol.c | 6 +++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/proc_ptr_44.f90 | 29 +++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/proc_ptr_44.f90 (limited to 'gcc') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 4f3a8e16a0e..1a81bfcc0cc 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2013-12-16 Janus Weil + + PR fortran/54949 + * symbol.c (check_conflict): Forbid abstract procedure pointers. + (gfc_add_abstract): Check for attribute conflicts. + 2013-12-16 Jakub Jelinek PR libgomp/59337 diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 9d23e8b48a3..07930f2916d 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -363,6 +363,7 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where) *cray_pointee = "CRAY POINTEE", *data = "DATA", *value = "VALUE", *volatile_ = "VOLATILE", *is_protected = "PROTECTED", *is_bind_c = "BIND(C)", *procedure = "PROCEDURE", + *proc_pointer = "PROCEDURE POINTER", *abstract = "ABSTRACT", *asynchronous = "ASYNCHRONOUS", *codimension = "CODIMENSION", *contiguous = "CONTIGUOUS", *generic = "GENERIC"; static const char *threadprivate = "THREADPRIVATE"; @@ -593,6 +594,8 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where) conf (procedure, asynchronous) conf (procedure, entry) + conf (proc_pointer, abstract) + a1 = gfc_code2string (flavors, attr->flavor); if (attr->in_namelist @@ -1440,7 +1443,8 @@ gfc_add_abstract (symbol_attribute* attr, locus* where) } attr->abstract = 1; - return true; + + return check_conflict (attr, NULL, where); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 79047575c55..671a8b5f30a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-16 Janus Weil + + PR fortran/54949 + * gfortran.dg/proc_ptr_44.f90: New. + 2013-12-16 Jakub Jelinek * c-c++-common/ubsan/overflow-mul-3.c: New test. diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_44.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_44.f90 new file mode 100644 index 00000000000..3ed65a88b58 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/proc_ptr_44.f90 @@ -0,0 +1,29 @@ +! { dg-do compile } +! +! PR 54949: [F03] abstract procedure pointers not rejected +! +! Contributed by Janus Weil + + implicit none + + abstract interface + subroutine abssub1 + end subroutine + end interface + pointer :: abssub1 ! { dg-error "PROCEDURE POINTER attribute conflicts with ABSTRACT attribute" } + + pointer :: abssub2 + abstract interface + subroutine abssub2 ! { dg-error "PROCEDURE POINTER attribute conflicts with ABSTRACT attribute" } + end subroutine + end interface + + abssub1 => sub ! { dg-error "is not a variable" } + abssub2 => sub + +contains + + subroutine sub + end subroutine + +end -- cgit v1.2.1 From 2b6fbf5728fc24d66e132819272070001dd2564a Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 17 Dec 2013 00:17:03 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206038 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index e068448f2b8..2a0220d811f 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131216 +20131217 -- cgit v1.2.1 From 9f484185af054bcf345c2859d862056e6d8d21eb Mon Sep 17 00:00:00 2001 From: jakub Date: Tue, 17 Dec 2013 08:46:16 +0000 Subject: * expr.c (convert_modes): For SUBREG_PROMOTED_VAR_P use SUBREG_REG (x) instead of x as last gen_lowpart argument. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206040 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/expr.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1cf51b49db2..639ec9bf197 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-17 Jakub Jelinek + + * expr.c (convert_modes): For SUBREG_PROMOTED_VAR_P use SUBREG_REG (x) + instead of x as last gen_lowpart argument. + 2013-12-16 Jakub Jelinek * predict.h (PROB_LIKELY): Fix the value. diff --git a/gcc/expr.c b/gcc/expr.c index cde0b859421..1c5658923bd 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -719,7 +719,7 @@ convert_modes (enum machine_mode mode, enum machine_mode oldmode, rtx x, int uns if (GET_CODE (x) == SUBREG && SUBREG_PROMOTED_VAR_P (x) && GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))) >= GET_MODE_SIZE (mode) && SUBREG_PROMOTED_UNSIGNED_P (x) == unsignedp) - x = gen_lowpart (mode, x); + x = gen_lowpart (mode, SUBREG_REG (x)); if (GET_MODE (x) != VOIDmode) oldmode = GET_MODE (x); -- cgit v1.2.1 From 76058579466865b1b832b659a3d6b09cb84394a7 Mon Sep 17 00:00:00 2001 From: hubicka Date: Tue, 17 Dec 2013 10:26:59 +0000 Subject: * g++.dg/ipa/devirt-13.C: Update template. * ipa-utils.h (possible_polymorphic_call_targets): Determine context of the call. * gimple-fold.c (gimple_fold_call): Use ipa-devirt to devirtualize. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206042 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/gimple-fold.c | 30 ++++++++++++------------------ gcc/ipa-utils.h | 9 ++++++++- gcc/testsuite/ChangeLog | 4 ++++ 4 files changed, 30 insertions(+), 19 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 639ec9bf197..7da6fc478cb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-17 Jan Hubicka + + * ipa-utils.h (possible_polymorphic_call_targets): Determine context of + the call. + * gimple-fold.c (gimple_fold_call): Use ipa-devirt to devirtualize. + 2013-12-17 Jakub Jelinek * expr.c (convert_modes): For SUBREG_PROMOTED_VAR_P use SUBREG_REG (x) diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 17053949511..767c869a476 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -1153,26 +1153,20 @@ gimple_fold_call (gimple_stmt_iterator *gsi, bool inplace) gimple_call_set_fn (stmt, OBJ_TYPE_REF_EXPR (callee)); changed = true; } - else if (virtual_method_call_p (callee)) + else if (flag_devirtualize && virtual_method_call_p (callee)) { - tree obj = OBJ_TYPE_REF_OBJECT (callee); - tree binfo = gimple_extract_devirt_binfo_from_cst - (obj, obj_type_ref_class (callee)); - if (binfo) + bool final; + vec targets + = possible_polymorphic_call_targets (callee, &final); + if (final && targets.length () <= 1) { - HOST_WIDE_INT token - = TREE_INT_CST_LOW (OBJ_TYPE_REF_TOKEN (callee)); - tree fndecl = gimple_get_virt_method_for_binfo (token, binfo); - if (fndecl) - { -#ifdef ENABLE_CHECKING - gcc_assert (possible_polymorphic_call_target_p - (callee, cgraph_get_node (fndecl))); - -#endif - gimple_call_set_fndecl (stmt, fndecl); - changed = true; - } + tree fndecl; + if (targets.length () == 1) + fndecl = targets[0]->decl; + else + fndecl = builtin_decl_implicit (BUILT_IN_UNREACHABLE); + gimple_call_set_fndecl (stmt, fndecl); + changed = true; } } } diff --git a/gcc/ipa-utils.h b/gcc/ipa-utils.h index b52742517ca..480b7529bed 100644 --- a/gcc/ipa-utils.h +++ b/gcc/ipa-utils.h @@ -121,10 +121,17 @@ possible_polymorphic_call_targets (tree call, bool *final = NULL, void **cache_token = NULL) { + tree otr_type; + HOST_WIDE_INT otr_token; + ipa_polymorphic_call_context context; + + get_polymorphic_call_info (current_function_decl, + call, + &otr_type, &otr_token, &context); return possible_polymorphic_call_targets (obj_type_ref_class (call), tree_to_uhwi (OBJ_TYPE_REF_TOKEN (call)), - ipa_dummy_polymorphic_call_context, + context, final, cache_token); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 671a8b5f30a..ec35aeafa7d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-17 Jan Hubicka + + * g++.dg/ipa/devirt-13.C: Update template. + 2013-12-16 Janus Weil PR fortran/54949 -- cgit v1.2.1 From e534aceb45dfc8a56febddf7e3dbee5144d0be9f Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Tue, 17 Dec 2013 12:11:40 +0000 Subject: * expmed.c (lowpart_bit_field_p): Fix comment. (store_bit_field_using_insv): Fix formatting. (store_bit_field): Likewise. (store_fixed_bit_field): More declaration and remove return. (store_fixed_bit_field_1): Fix formatting. (extract_fixed_bit_field): Move declaration. (extract_fixed_bit_field_1): Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206044 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 ++++++++++ gcc/expmed.c | 29 +++++++++++------------------ 2 files changed, 21 insertions(+), 18 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7da6fc478cb..3bd3247eb37 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2013-12-17 Eric Botcazou + + * expmed.c (lowpart_bit_field_p): Fix comment. + (store_bit_field_using_insv): Fix formatting. + (store_bit_field): Likewise. + (store_fixed_bit_field): More declaration and remove return. + (store_fixed_bit_field_1): Fix formatting. + (extract_fixed_bit_field): Move declaration. + (extract_fixed_bit_field_1): Simplify. + 2013-12-17 Jan Hubicka * ipa-utils.h (possible_polymorphic_call_targets): Determine context of diff --git a/gcc/expmed.c b/gcc/expmed.c index 3a6c919ce22..f672678a2d8 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -422,7 +422,7 @@ lowpart_bit_field_p (unsigned HOST_WIDE_INT bitnum, return bitnum % BITS_PER_WORD == 0; } -/* Return true if -fstrict-volatile-bitfields applies an access of OP0 +/* Return true if -fstrict-volatile-bitfields applies to an access of OP0 containing BITSIZE bits starting at BITNUM, with field mode FIELDMODE. Return false if the access would touch memory outside the range BITREGION_START to BITREGION_END for conformance to the C++ memory @@ -490,7 +490,8 @@ simple_mem_bitfield_p (rtx op0, unsigned HOST_WIDE_INT bitsize, static bool store_bit_field_using_insv (const extraction_insn *insv, rtx op0, unsigned HOST_WIDE_INT bitsize, - unsigned HOST_WIDE_INT bitnum, rtx value) + unsigned HOST_WIDE_INT bitnum, + rtx value) { struct expand_operand ops[4]; rtx value1; @@ -940,7 +941,6 @@ store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, if (strict_volatile_bitfield_p (str_rtx, bitsize, bitnum, fieldmode, bitregion_start, bitregion_end)) { - /* Storing any naturally aligned field can be done with a simple store. For targets that support fast unaligned memory, any naturally sized, unit aligned field can be done directly. */ @@ -957,8 +957,7 @@ store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, /* Explicitly override the C/C++ memory model; ignore the bit range so that we can do the access in the mode mandated by -fstrict-volatile-bitfields instead. */ - store_fixed_bit_field_1 (str_rtx, bitsize, bitnum, - value); + store_fixed_bit_field_1 (str_rtx, bitsize, bitnum, value); } return; @@ -1002,8 +1001,6 @@ store_fixed_bit_field (rtx op0, unsigned HOST_WIDE_INT bitsize, unsigned HOST_WIDE_INT bitregion_end, rtx value) { - enum machine_mode mode; - /* There is a case not handled here: a structure with a known alignment of just a halfword and a field split across two aligned halfwords within the structure. @@ -1013,7 +1010,7 @@ store_fixed_bit_field (rtx op0, unsigned HOST_WIDE_INT bitsize, if (MEM_P (op0)) { - mode = GET_MODE (op0); + enum machine_mode mode = GET_MODE (op0); if (GET_MODE_BITSIZE (mode) == 0 || GET_MODE_BITSIZE (mode) > GET_MODE_BITSIZE (word_mode)) mode = word_mode; @@ -1033,7 +1030,6 @@ store_fixed_bit_field (rtx op0, unsigned HOST_WIDE_INT bitsize, } store_fixed_bit_field_1 (op0, bitsize, bitnum, value); - return; } /* Helper function for store_fixed_bit_field, stores @@ -1041,8 +1037,8 @@ store_fixed_bit_field (rtx op0, unsigned HOST_WIDE_INT bitsize, static void store_fixed_bit_field_1 (rtx op0, unsigned HOST_WIDE_INT bitsize, - unsigned HOST_WIDE_INT bitnum, - rtx value) + unsigned HOST_WIDE_INT bitnum, + rtx value) { enum machine_mode mode; rtx temp; @@ -1793,12 +1789,11 @@ extract_fixed_bit_field (enum machine_mode tmode, rtx op0, unsigned HOST_WIDE_INT bitnum, rtx target, int unsignedp) { - enum machine_mode mode; - if (MEM_P (op0)) { - mode = get_best_mode (bitsize, bitnum, 0, 0, - MEM_ALIGN (op0), word_mode, MEM_VOLATILE_P (op0)); + enum machine_mode mode + = get_best_mode (bitsize, bitnum, 0, 0, MEM_ALIGN (op0), word_mode, + MEM_VOLATILE_P (op0)); if (mode == VOIDmode) /* The only way this should occur is if the field spans word @@ -1821,9 +1816,7 @@ extract_fixed_bit_field_1 (enum machine_mode tmode, rtx op0, unsigned HOST_WIDE_INT bitnum, rtx target, int unsignedp) { - enum machine_mode mode; - - mode = GET_MODE (op0); + enum machine_mode mode = GET_MODE (op0); gcc_assert (SCALAR_INT_MODE_P (mode)); /* Note that bitsize + bitnum can be greater than GET_MODE_BITSIZE (mode) -- cgit v1.2.1 From b7188fad665f9018305b04c701953472de7bf01b Mon Sep 17 00:00:00 2001 From: jgreenhalgh Date: Tue, 17 Dec 2013 12:24:05 +0000 Subject: [ARM 1/5 big.LITTLE] Add driver support for rewriting -mcpu names gcc/ * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): New. (arm_rewrite_mcpu): Likewise. * config/arm/arm-protos.h (arm_rewrite_selected_cpu): New. * config/arm/arm.h (BIG_LITTLE_SPEC): New. (BIG_LITTLE_SPEC_FUNCTIONS): Likewise. (EXTRA_SPEC_FUNCTIONS): Include BIG_LITTLE_SPEC_FUNCTIONS. (ASM_CPU_SPEC): Include BIG_LITTLE_SPEC. * config/arm/arm.c (arm_file_start): Rewrite arm_selecetd_cpu values. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206045 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/common/config/arm/arm-common.c | 35 +++++++++++++++++++++++++++++++++++ gcc/config/arm/arm-protos.h | 3 +++ gcc/config/arm/arm.c | 6 +++++- gcc/config/arm/arm.h | 14 ++++++++++++-- 5 files changed, 66 insertions(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3bd3247eb37..841cd85f90b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2013-12-17 James Greenhalgh + + * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): New. + (arm_rewrite_mcpu): Likewise. + * config/arm/arm-protos.h (arm_rewrite_selected_cpu): New. + * config/arm/arm.h (BIG_LITTLE_SPEC): New. + (BIG_LITTLE_SPEC_FUNCTIONS): Likewise. + (EXTRA_SPEC_FUNCTIONS): Include BIG_LITTLE_SPEC_FUNCTIONS. + (ASM_CPU_SPEC): Include BIG_LITTLE_SPEC. + * config/arm/arm.c (arm_file_start): Rewrite arm_selecetd_cpu values. + 2013-12-17 Eric Botcazou * expmed.c (lowpart_bit_field_p): Fix comment. diff --git a/gcc/common/config/arm/arm-common.c b/gcc/common/config/arm/arm-common.c index c43a2ce927b..87f18ecea77 100644 --- a/gcc/common/config/arm/arm-common.c +++ b/gcc/common/config/arm/arm-common.c @@ -63,6 +63,41 @@ arm_except_unwind_info (struct gcc_options *opts) return UI_SJLJ; } +#define ARM_CPU_NAME_LENGTH 20 + +/* Truncate NAME at the first '.' character seen, or return + NAME unmodified. */ + +const char * +arm_rewrite_selected_cpu (const char *name) +{ + static char output_buf[ARM_CPU_NAME_LENGTH + 1] = {0}; + char *arg_pos; + + strncpy (output_buf, name, ARM_CPU_NAME_LENGTH); + arg_pos = strchr (output_buf, '.'); + + /* If we found a '.' truncate the entry at that point. */ + if (arg_pos) + *arg_pos = '\0'; + + return output_buf; +} + +/* Called by the driver to rewrite a name passed to the -mcpu + argument in preparation to be passed to the assembler. The + name will be in ARGV[0], ARGC should always be 1. */ + +const char * +arm_rewrite_mcpu (int argc, const char **argv) +{ + gcc_assert (argc == 1); + return arm_rewrite_selected_cpu (argv[0]); +} + +#undef ARM_CPU_NAME_LENGTH + + #undef TARGET_DEFAULT_TARGET_FLAGS #define TARGET_DEFAULT_TARGET_FLAGS (TARGET_DEFAULT | MASK_SCHED_PROLOG) diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h index c5b16daae4f..558f13418e6 100644 --- a/gcc/config/arm/arm-protos.h +++ b/gcc/config/arm/arm-protos.h @@ -289,4 +289,7 @@ extern bool arm_autoinc_modes_ok_p (enum machine_mode, enum arm_auto_incmodes); extern void arm_emit_eabi_attribute (const char *, int, int); +/* Defined in gcc/common/config/arm-common.c. */ +extern const char *arm_rewrite_selected_cpu (const char *name); + #endif /* ! GCC_ARM_PROTOS_H */ diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 7027a262bcf..a4ab6be5e8b 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -27527,7 +27527,11 @@ arm_file_start (void) else if (strncmp (arm_selected_cpu->name, "generic", 7) == 0) asm_fprintf (asm_out_file, "\t.arch %s\n", arm_selected_cpu->name + 8); else - asm_fprintf (asm_out_file, "\t.cpu %s\n", arm_selected_cpu->name); + { + const char* truncated_name + = arm_rewrite_selected_cpu (arm_selected_cpu->name); + asm_fprintf (asm_out_file, "\t.cpu %s\n", truncated_name); + } if (TARGET_SOFT_FLOAT) { diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 8b8b80e19d3..6539ec6ffc2 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -2343,16 +2343,25 @@ extern int making_const_table; instruction. */ #define MAX_LDM_STM_OPS 4 +#define BIG_LITTLE_SPEC \ + " %{mcpu=*:% Date: Tue, 17 Dec 2013 12:26:10 +0000 Subject: [ARM 2/5 big.LITTLE] Allow tuning parameters without unique tuning targets. gcc/ * config/arm/arm-cores.def: Add new column for TUNE_IDENT. * config/arm/genopt.sh: Improve layout. * config/arm/arm-tune.md: Regenerate. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm-opts.h (ARM_CORE): Modify macro for TUNE_IDENT. * config/arm/arm.c (ARM_CORE): Modify macro for TUNE_IDENT. (arm_option_override): When a CPU is chosen, that should also form the tune target. * config/arm/arm.h (ARM_CORE): Modify macro for TUNE_IDENT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206046 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 12 +++ gcc/config/arm/arm-cores.def | 189 ++++++++++++++++++++++-------------------- gcc/config/arm/arm-opts.h | 5 +- gcc/config/arm/arm-tables.opt | 22 ++--- gcc/config/arm/arm-tune.md | 30 ++++++- gcc/config/arm/arm.c | 7 +- gcc/config/arm/arm.h | 4 +- gcc/config/arm/gentune.sh | 2 +- 8 files changed, 162 insertions(+), 109 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 841cd85f90b..5170f2da217 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2013-12-17 James Greenhalgh + + * config/arm/arm-cores.def: Add new column for TUNE_IDENT. + * config/arm/genopt.sh: Improve layout. + * config/arm/arm-tune.md: Regenerate. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-opts.h (ARM_CORE): Modify macro for TUNE_IDENT. + * config/arm/arm.c (ARM_CORE): Modify macro for TUNE_IDENT. + (arm_option_override): When a CPU is chosen, that should also + form the tune target. + * config/arm/arm.h (ARM_CORE): Modify macro for TUNE_IDENT. + 2013-12-17 James Greenhalgh * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): New. diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def index e7cea63beae..3264eedd57c 100644 --- a/gcc/config/arm/arm-cores.def +++ b/gcc/config/arm/arm-cores.def @@ -20,10 +20,13 @@ /* Before using #include to read this file, define a macro: - ARM_CORE(CORE_NAME, CORE_IDENT, ARCH, FLAGS, COSTS) + ARM_CORE(CORE_NAME, INTERNAL_IDENT, TUNE_IDENT, ARCH, FLAGS, COSTS) The CORE_NAME is the name of the core, represented as a string constant. - The CORE_IDENT is the name of the core, represented as an identifier. + The INTERNAL_IDENT is the name of the core represented as an identifier. + This must be unique for each entry in this table. + The TUNE_IDENT is the name of the core for which scheduling decisions + should be made, represented as an identifier. ARCH is the architecture revision implemented by the chip. FLAGS are the bitwise-or of the traits that apply to that core. This need not include flags implied by the architecture. @@ -35,109 +38,115 @@ Some tools assume no whitespace up to the first "," in each entry. */ /* V2/V2A Architecture Processors */ -ARM_CORE("arm2", arm2, 2, FL_CO_PROC | FL_MODE26, slowmul) -ARM_CORE("arm250", arm250, 2, FL_CO_PROC | FL_MODE26, slowmul) -ARM_CORE("arm3", arm3, 2, FL_CO_PROC | FL_MODE26, slowmul) +ARM_CORE("arm2", arm2, arm2, 2, FL_CO_PROC | FL_MODE26, slowmul) +ARM_CORE("arm250", arm250, arm250, 2, FL_CO_PROC | FL_MODE26, slowmul) +ARM_CORE("arm3", arm3, arm3, 2, FL_CO_PROC | FL_MODE26, slowmul) /* V3 Architecture Processors */ -ARM_CORE("arm6", arm6, 3, FL_CO_PROC | FL_MODE26, slowmul) -ARM_CORE("arm60", arm60, 3, FL_CO_PROC | FL_MODE26, slowmul) -ARM_CORE("arm600", arm600, 3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul) -ARM_CORE("arm610", arm610, 3, FL_MODE26 | FL_WBUF, slowmul) -ARM_CORE("arm620", arm620, 3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul) -ARM_CORE("arm7", arm7, 3, FL_CO_PROC | FL_MODE26, slowmul) -ARM_CORE("arm7d", arm7d, 3, FL_CO_PROC | FL_MODE26, slowmul) -ARM_CORE("arm7di", arm7di, 3, FL_CO_PROC | FL_MODE26, slowmul) -ARM_CORE("arm70", arm70, 3, FL_CO_PROC | FL_MODE26, slowmul) -ARM_CORE("arm700", arm700, 3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul) -ARM_CORE("arm700i", arm700i, 3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul) -ARM_CORE("arm710", arm710, 3, FL_MODE26 | FL_WBUF, slowmul) -ARM_CORE("arm720", arm720, 3, FL_MODE26 | FL_WBUF, slowmul) -ARM_CORE("arm710c", arm710c, 3, FL_MODE26 | FL_WBUF, slowmul) -ARM_CORE("arm7100", arm7100, 3, FL_MODE26 | FL_WBUF, slowmul) -ARM_CORE("arm7500", arm7500, 3, FL_MODE26 | FL_WBUF, slowmul) -/* Doesn't have an external co-proc, but does have embedded fpa. */ -ARM_CORE("arm7500fe", arm7500fe, 3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul) +ARM_CORE("arm6", arm6, arm6, 3, FL_CO_PROC | FL_MODE26, slowmul) +ARM_CORE("arm60", arm60, arm60, 3, FL_CO_PROC | FL_MODE26, slowmul) +ARM_CORE("arm600", arm600, arm600, 3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul) +ARM_CORE("arm610", arm610, arm610, 3, FL_MODE26 | FL_WBUF, slowmul) +ARM_CORE("arm620", arm620, arm620, 3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul) +ARM_CORE("arm7", arm7, arm7, 3, FL_CO_PROC | FL_MODE26, slowmul) +ARM_CORE("arm7d", arm7d, arm7d, 3, FL_CO_PROC | FL_MODE26, slowmul) +ARM_CORE("arm7di", arm7di, arm7di, 3, FL_CO_PROC | FL_MODE26, slowmul) +ARM_CORE("arm70", arm70, arm70, 3, FL_CO_PROC | FL_MODE26, slowmul) +ARM_CORE("arm700", arm700, arm700, 3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul) +ARM_CORE("arm700i", arm700i, arm700i, 3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul) +ARM_CORE("arm710", arm710, arm710, 3, FL_MODE26 | FL_WBUF, slowmul) +ARM_CORE("arm720", arm720, arm720, 3, FL_MODE26 | FL_WBUF, slowmul) +ARM_CORE("arm710c", arm710c, arm710c, 3, FL_MODE26 | FL_WBUF, slowmul) +ARM_CORE("arm7100", arm7100, arm7100, 3, FL_MODE26 | FL_WBUF, slowmul) +ARM_CORE("arm7500", arm7500, arm7500, 3, FL_MODE26 | FL_WBUF, slowmul) +/* Doesn't have an external co-proc, but does have embedded fpa. */ +ARM_CORE("arm7500fe", arm7500fe, arm7500fe, 3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul) /* V3M Architecture Processors */ /* arm7m doesn't exist on its own, but only with D, ("and", and I), but those don't alter the code, so arm7m is sometimes used. */ -ARM_CORE("arm7m", arm7m, 3M, FL_CO_PROC | FL_MODE26, fastmul) -ARM_CORE("arm7dm", arm7dm, 3M, FL_CO_PROC | FL_MODE26, fastmul) -ARM_CORE("arm7dmi", arm7dmi, 3M, FL_CO_PROC | FL_MODE26, fastmul) +ARM_CORE("arm7m", arm7m, arm7m, 3M, FL_CO_PROC | FL_MODE26, fastmul) +ARM_CORE("arm7dm", arm7dm, arm7dm, 3M, FL_CO_PROC | FL_MODE26, fastmul) +ARM_CORE("arm7dmi", arm7dmi, arm7dmi, 3M, FL_CO_PROC | FL_MODE26, fastmul) /* V4 Architecture Processors */ -ARM_CORE("arm8", arm8, 4, FL_MODE26 | FL_LDSCHED, fastmul) -ARM_CORE("arm810", arm810, 4, FL_MODE26 | FL_LDSCHED, fastmul) -ARM_CORE("strongarm", strongarm, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm) -ARM_CORE("strongarm110", strongarm110, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm) -ARM_CORE("strongarm1100", strongarm1100, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm) -ARM_CORE("strongarm1110", strongarm1110, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm) -ARM_CORE("fa526", fa526, 4, FL_LDSCHED, fastmul) -ARM_CORE("fa626", fa626, 4, FL_LDSCHED, fastmul) +ARM_CORE("arm8", arm8, arm8, 4, FL_MODE26 | FL_LDSCHED, fastmul) +ARM_CORE("arm810", arm810, arm810, 4, FL_MODE26 | FL_LDSCHED, fastmul) +ARM_CORE("strongarm", strongarm, strongarm, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm) +ARM_CORE("strongarm110", strongarm110, strongarm110, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm) +ARM_CORE("strongarm1100", strongarm1100, strongarm1100, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm) +ARM_CORE("strongarm1110", strongarm1110, strongarm1110, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm) +ARM_CORE("fa526", fa526, fa526, 4, FL_LDSCHED, fastmul) +ARM_CORE("fa626", fa626, fa626, 4, FL_LDSCHED, fastmul) /* V4T Architecture Processors */ -ARM_CORE("arm7tdmi", arm7tdmi, 4T, FL_CO_PROC , fastmul) -ARM_CORE("arm7tdmi-s", arm7tdmis, 4T, FL_CO_PROC , fastmul) -ARM_CORE("arm710t", arm710t, 4T, FL_WBUF, fastmul) -ARM_CORE("arm720t", arm720t, 4T, FL_WBUF, fastmul) -ARM_CORE("arm740t", arm740t, 4T, FL_WBUF, fastmul) -ARM_CORE("arm9", arm9, 4T, FL_LDSCHED, fastmul) -ARM_CORE("arm9tdmi", arm9tdmi, 4T, FL_LDSCHED, fastmul) -ARM_CORE("arm920", arm920, 4T, FL_LDSCHED, fastmul) -ARM_CORE("arm920t", arm920t, 4T, FL_LDSCHED, fastmul) -ARM_CORE("arm922t", arm922t, 4T, FL_LDSCHED, fastmul) -ARM_CORE("arm940t", arm940t, 4T, FL_LDSCHED, fastmul) -ARM_CORE("ep9312", ep9312, 4T, FL_LDSCHED, fastmul) +ARM_CORE("arm7tdmi", arm7tdmi, arm7tdmi, 4T, FL_CO_PROC, fastmul) +ARM_CORE("arm7tdmi-s", arm7tdmis, arm7tdmis, 4T, FL_CO_PROC, fastmul) +ARM_CORE("arm710t", arm710t, arm710t, 4T, FL_WBUF, fastmul) +ARM_CORE("arm720t", arm720t, arm720t, 4T, FL_WBUF, fastmul) +ARM_CORE("arm740t", arm740t, arm740t, 4T, FL_WBUF, fastmul) +ARM_CORE("arm9", arm9, arm9, 4T, FL_LDSCHED, fastmul) +ARM_CORE("arm9tdmi", arm9tdmi, arm9tdmi, 4T, FL_LDSCHED, fastmul) +ARM_CORE("arm920", arm920, arm920, 4T, FL_LDSCHED, fastmul) +ARM_CORE("arm920t", arm920t, arm920t, 4T, FL_LDSCHED, fastmul) +ARM_CORE("arm922t", arm922t, arm922t, 4T, FL_LDSCHED, fastmul) +ARM_CORE("arm940t", arm940t, arm940t, 4T, FL_LDSCHED, fastmul) +ARM_CORE("ep9312", ep9312, ep9312, 4T, FL_LDSCHED, fastmul) /* V5T Architecture Processors */ -ARM_CORE("arm10tdmi", arm10tdmi, 5T, FL_LDSCHED, fastmul) -ARM_CORE("arm1020t", arm1020t, 5T, FL_LDSCHED, fastmul) +ARM_CORE("arm10tdmi", arm10tdmi, arm10tdmi, 5T, FL_LDSCHED, fastmul) +ARM_CORE("arm1020t", arm1020t, arm1020t, 5T, FL_LDSCHED, fastmul) /* V5TE Architecture Processors */ -ARM_CORE("arm9e", arm9e, 5TE, FL_LDSCHED, 9e) -ARM_CORE("arm946e-s", arm946es, 5TE, FL_LDSCHED, 9e) -ARM_CORE("arm966e-s", arm966es, 5TE, FL_LDSCHED, 9e) -ARM_CORE("arm968e-s", arm968es, 5TE, FL_LDSCHED, 9e) -ARM_CORE("arm10e", arm10e, 5TE, FL_LDSCHED, fastmul) -ARM_CORE("arm1020e", arm1020e, 5TE, FL_LDSCHED, fastmul) -ARM_CORE("arm1022e", arm1022e, 5TE, FL_LDSCHED, fastmul) -ARM_CORE("xscale", xscale, 5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE, xscale) -ARM_CORE("iwmmxt", iwmmxt, 5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale) -ARM_CORE("iwmmxt2", iwmmxt2, 5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT | FL_IWMMXT2, xscale) -ARM_CORE("fa606te", fa606te, 5TE, FL_LDSCHED, 9e) -ARM_CORE("fa626te", fa626te, 5TE, FL_LDSCHED, 9e) -ARM_CORE("fmp626", fmp626, 5TE, FL_LDSCHED, 9e) -ARM_CORE("fa726te", fa726te, 5TE, FL_LDSCHED, fa726te) +ARM_CORE("arm9e", arm9e, arm9e, 5TE, FL_LDSCHED, 9e) +ARM_CORE("arm946e-s", arm946es, arm946es, 5TE, FL_LDSCHED, 9e) +ARM_CORE("arm966e-s", arm966es, arm966es, 5TE, FL_LDSCHED, 9e) +ARM_CORE("arm968e-s", arm968es, arm968es, 5TE, FL_LDSCHED, 9e) +ARM_CORE("arm10e", arm10e, arm10e, 5TE, FL_LDSCHED, fastmul) +ARM_CORE("arm1020e", arm1020e, arm1020e, 5TE, FL_LDSCHED, fastmul) +ARM_CORE("arm1022e", arm1022e, arm1022e, 5TE, FL_LDSCHED, fastmul) +ARM_CORE("xscale", xscale, xscale, 5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE, xscale) +ARM_CORE("iwmmxt", iwmmxt, iwmmxt, 5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale) +ARM_CORE("iwmmxt2", iwmmxt2, iwmmxt2, 5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT | FL_IWMMXT2, xscale) +ARM_CORE("fa606te", fa606te, fa606te, 5TE, FL_LDSCHED, 9e) +ARM_CORE("fa626te", fa626te, fa626te, 5TE, FL_LDSCHED, 9e) +ARM_CORE("fmp626", fmp626, fmp626, 5TE, FL_LDSCHED, 9e) +ARM_CORE("fa726te", fa726te, fa726te, 5TE, FL_LDSCHED, fa726te) /* V5TEJ Architecture Processors */ -ARM_CORE("arm926ej-s", arm926ejs, 5TEJ, FL_LDSCHED, 9e) -ARM_CORE("arm1026ej-s", arm1026ejs, 5TEJ, FL_LDSCHED, 9e) +ARM_CORE("arm926ej-s", arm926ejs, arm926ejs, 5TEJ, FL_LDSCHED, 9e) +ARM_CORE("arm1026ej-s", arm1026ejs, arm1026ejs, 5TEJ, FL_LDSCHED, 9e) /* V6 Architecture Processors */ -ARM_CORE("arm1136j-s", arm1136js, 6J, FL_LDSCHED, 9e) -ARM_CORE("arm1136jf-s", arm1136jfs, 6J, FL_LDSCHED | FL_VFPV2, 9e) -ARM_CORE("arm1176jz-s", arm1176jzs, 6ZK, FL_LDSCHED, 9e) -ARM_CORE("arm1176jzf-s", arm1176jzfs, 6ZK, FL_LDSCHED | FL_VFPV2, 9e) -ARM_CORE("mpcorenovfp", mpcorenovfp, 6K, FL_LDSCHED, 9e) -ARM_CORE("mpcore", mpcore, 6K, FL_LDSCHED | FL_VFPV2, 9e) -ARM_CORE("arm1156t2-s", arm1156t2s, 6T2, FL_LDSCHED, v6t2) -ARM_CORE("arm1156t2f-s", arm1156t2fs, 6T2, FL_LDSCHED | FL_VFPV2, v6t2) -ARM_CORE("generic-armv7-a", genericv7a, 7A, FL_LDSCHED, cortex) -ARM_CORE("cortex-a5", cortexa5, 7A, FL_LDSCHED, cortex_a5) -ARM_CORE("cortex-a7", cortexa7, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a7) -ARM_CORE("cortex-a8", cortexa8, 7A, FL_LDSCHED, cortex) -ARM_CORE("cortex-a9", cortexa9, 7A, FL_LDSCHED, cortex_a9) -ARM_CORE("cortex-a12", cortexa12, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a12) -ARM_CORE("cortex-a15", cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a15) -ARM_CORE("cortex-a53", cortexa53, 8A, FL_LDSCHED, cortex_a53) -ARM_CORE("cortex-r4", cortexr4, 7R, FL_LDSCHED, cortex) -ARM_CORE("cortex-r4f", cortexr4f, 7R, FL_LDSCHED, cortex) -ARM_CORE("cortex-r5", cortexr5, 7R, FL_LDSCHED | FL_ARM_DIV, cortex) -ARM_CORE("cortex-r7", cortexr7, 7R, FL_LDSCHED | FL_ARM_DIV, cortex) -ARM_CORE("cortex-m4", cortexm4, 7EM, FL_LDSCHED, v7m) -ARM_CORE("cortex-m3", cortexm3, 7M, FL_LDSCHED, v7m) -ARM_CORE("cortex-m1", cortexm1, 6M, FL_LDSCHED, v6m) -ARM_CORE("cortex-m0", cortexm0, 6M, FL_LDSCHED, v6m) -ARM_CORE("cortex-m0plus", cortexm0plus, 6M, FL_LDSCHED, v6m) -ARM_CORE("marvell-pj4", marvell_pj4, 7A, FL_LDSCHED, 9e) +ARM_CORE("arm1136j-s", arm1136js, arm1136js, 6J, FL_LDSCHED, 9e) +ARM_CORE("arm1136jf-s", arm1136jfs, arm1136jfs, 6J, FL_LDSCHED | FL_VFPV2, 9e) +ARM_CORE("arm1176jz-s", arm1176jzs, arm1176jzs, 6ZK, FL_LDSCHED, 9e) +ARM_CORE("arm1176jzf-s", arm1176jzfs, arm1176jzfs, 6ZK, FL_LDSCHED | FL_VFPV2, 9e) +ARM_CORE("mpcorenovfp", mpcorenovfp, mpcorenovfp, 6K, FL_LDSCHED, 9e) +ARM_CORE("mpcore", mpcore, mpcore, 6K, FL_LDSCHED | FL_VFPV2, 9e) +ARM_CORE("arm1156t2-s", arm1156t2s, arm1156t2s, 6T2, FL_LDSCHED, v6t2) +ARM_CORE("arm1156t2f-s", arm1156t2fs, arm1156t2fs, 6T2, FL_LDSCHED | FL_VFPV2, v6t2) + +/* V6M Architecture Processors */ +ARM_CORE("cortex-m1", cortexm1, cortexm1, 6M, FL_LDSCHED, v6m) +ARM_CORE("cortex-m0", cortexm0, cortexm0, 6M, FL_LDSCHED, v6m) +ARM_CORE("cortex-m0plus", cortexm0plus, cortexm0plus, 6M, FL_LDSCHED, v6m) + +/* V7 Architecture Processors */ +ARM_CORE("generic-armv7-a", genericv7a, genericv7a, 7A, FL_LDSCHED, cortex) +ARM_CORE("cortex-a5", cortexa5, cortexa5, 7A, FL_LDSCHED, cortex_a5) +ARM_CORE("cortex-a7", cortexa7, cortexa7, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a7) +ARM_CORE("cortex-a8", cortexa8, cortexa8, 7A, FL_LDSCHED, cortex) +ARM_CORE("cortex-a9", cortexa9, cortexa9, 7A, FL_LDSCHED, cortex_a9) +ARM_CORE("cortex-a12", cortexa12, cortexa12, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a12) +ARM_CORE("cortex-a15", cortexa15, cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a15) +ARM_CORE("cortex-r4", cortexr4, cortexr4, 7R, FL_LDSCHED, cortex) +ARM_CORE("cortex-r4f", cortexr4f, cortexr4f, 7R, FL_LDSCHED, cortex) +ARM_CORE("cortex-r5", cortexr5, cortexr5, 7R, FL_LDSCHED | FL_ARM_DIV, cortex) +ARM_CORE("cortex-r7", cortexr7, cortexr7, 7R, FL_LDSCHED | FL_ARM_DIV, cortex) +ARM_CORE("cortex-m4", cortexm4, cortexm4, 7EM, FL_LDSCHED, v7m) +ARM_CORE("cortex-m3", cortexm3, cortexm3, 7M, FL_LDSCHED, v7m) +ARM_CORE("marvell-pj4", marvell_pj4, marvell_pj4, 7A, FL_LDSCHED, 9e) + +/* V8 Architecture Processors */ +ARM_CORE("cortex-a53", cortexa53, cortexa53, 8A, FL_LDSCHED, cortex_a53) diff --git a/gcc/config/arm/arm-opts.h b/gcc/config/arm/arm-opts.h index a3ef36453c0..dab308ee3c3 100644 --- a/gcc/config/arm/arm-opts.h +++ b/gcc/config/arm/arm-opts.h @@ -23,8 +23,9 @@ /* The various ARM cores. */ enum processor_type { -#define ARM_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \ - IDENT, +#undef ARM_CORE +#define ARM_CORE(NAME, INTERNAL_IDENT, IDENT, ARCH, FLAGS, COSTS) \ + INTERNAL_IDENT, #include "arm-cores.def" #undef ARM_CORE /* Used to indicate that no processor has been specified. */ diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt index b3e7a7c62d7..7da7cc8e910 100644 --- a/gcc/config/arm/arm-tables.opt +++ b/gcc/config/arm/arm-tables.opt @@ -231,6 +231,15 @@ Enum(processor_type) String(arm1156t2-s) Value(arm1156t2s) EnumValue Enum(processor_type) String(arm1156t2f-s) Value(arm1156t2fs) +EnumValue +Enum(processor_type) String(cortex-m1) Value(cortexm1) + +EnumValue +Enum(processor_type) String(cortex-m0) Value(cortexm0) + +EnumValue +Enum(processor_type) String(cortex-m0plus) Value(cortexm0plus) + EnumValue Enum(processor_type) String(generic-armv7-a) Value(genericv7a) @@ -252,9 +261,6 @@ Enum(processor_type) String(cortex-a12) Value(cortexa12) EnumValue Enum(processor_type) String(cortex-a15) Value(cortexa15) -EnumValue -Enum(processor_type) String(cortex-a53) Value(cortexa53) - EnumValue Enum(processor_type) String(cortex-r4) Value(cortexr4) @@ -274,16 +280,10 @@ EnumValue Enum(processor_type) String(cortex-m3) Value(cortexm3) EnumValue -Enum(processor_type) String(cortex-m1) Value(cortexm1) - -EnumValue -Enum(processor_type) String(cortex-m0) Value(cortexm0) - -EnumValue -Enum(processor_type) String(cortex-m0plus) Value(cortexm0plus) +Enum(processor_type) String(marvell-pj4) Value(marvell_pj4) EnumValue -Enum(processor_type) String(marvell-pj4) Value(marvell_pj4) +Enum(processor_type) String(cortex-a53) Value(cortexa53) Enum Name(arm_arch) Type(int) diff --git a/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md index e10d0aa9544..0386afff742 100644 --- a/gcc/config/arm/arm-tune.md +++ b/gcc/config/arm/arm-tune.md @@ -1,5 +1,33 @@ ;; -*- buffer-read-only: t -*- ;; Generated automatically by gentune.sh from arm-cores.def (define_attr "tune" - "arm2,arm250,arm3,arm6,arm60,arm600,arm610,arm620,arm7,arm7d,arm7di,arm70,arm700,arm700i,arm710,arm720,arm710c,arm7100,arm7500,arm7500fe,arm7m,arm7dm,arm7dmi,arm8,arm810,strongarm,strongarm110,strongarm1100,strongarm1110,fa526,fa626,arm7tdmi,arm7tdmis,arm710t,arm720t,arm740t,arm9,arm9tdmi,arm920,arm920t,arm922t,arm940t,ep9312,arm10tdmi,arm1020t,arm9e,arm946es,arm966es,arm968es,arm10e,arm1020e,arm1022e,xscale,iwmmxt,iwmmxt2,fa606te,fa626te,fmp626,fa726te,arm926ejs,arm1026ejs,arm1136js,arm1136jfs,arm1176jzs,arm1176jzfs,mpcorenovfp,mpcore,arm1156t2s,arm1156t2fs,genericv7a,cortexa5,cortexa7,cortexa8,cortexa9,cortexa12,cortexa15,cortexa53,cortexr4,cortexr4f,cortexr5,cortexr7,cortexm4,cortexm3,cortexm1,cortexm0,cortexm0plus,marvell_pj4" + "arm2,arm250,arm3, + arm6,arm60,arm600, + arm610,arm620,arm7, + arm7d,arm7di,arm70, + arm700,arm700i,arm710, + arm720,arm710c,arm7100, + arm7500,arm7500fe,arm7m, + arm7dm,arm7dmi,arm8, + arm810,strongarm,strongarm110, + strongarm1100,strongarm1110,fa526, + fa626,arm7tdmi,arm7tdmis, + arm710t,arm720t,arm740t, + arm9,arm9tdmi,arm920, + arm920t,arm922t,arm940t, + ep9312,arm10tdmi,arm1020t, + arm9e,arm946es,arm966es, + arm968es,arm10e,arm1020e, + arm1022e,xscale,iwmmxt, + iwmmxt2,fa606te,fa626te, + fmp626,fa726te,arm926ejs, + arm1026ejs,arm1136js,arm1136jfs, + arm1176jzs,arm1176jzfs,mpcorenovfp, + mpcore,arm1156t2s,arm1156t2fs, + cortexm1,cortexm0,cortexm0plus, + genericv7a,cortexa5,cortexa7, + cortexa8,cortexa9,cortexa12, + cortexa15,cortexr4,cortexr4f, + cortexr5,cortexr7,cortexm4, + cortexm3,marvell_pj4,cortexa53" (const (symbol_ref "((enum attr_tune) arm_tune)"))) diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index a4ab6be5e8b..2bc9bf10d9c 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -1742,7 +1742,7 @@ const struct tune_params arm_fa726te_tune = static const struct processors all_cores[] = { /* ARM Cores */ -#define ARM_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \ +#define ARM_CORE(NAME, X, IDENT, ARCH, FLAGS, COSTS) \ {NAME, IDENT, #ARCH, BASE_ARCH_##ARCH, \ FLAGS | FL_FOR_ARCH##ARCH, &arm_##COSTS##_tune}, #include "arm-cores.def" @@ -2251,7 +2251,10 @@ arm_option_override (void) arm_selected_arch = &all_architectures[arm_arch_option]; if (global_options_set.x_arm_cpu_option) - arm_selected_cpu = &all_cores[(int) arm_cpu_option]; + { + arm_selected_cpu = &all_cores[(int) arm_cpu_option]; + arm_selected_tune = &all_cores[(int) arm_cpu_option]; + } if (global_options_set.x_arm_tune_option) arm_selected_tune = &all_cores[(int) arm_tune_option]; diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 6539ec6ffc2..7b5a7f98e31 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -162,8 +162,8 @@ extern char arm_arch_name[]; enum target_cpus { -#define ARM_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \ - TARGET_CPU_##IDENT, +#define ARM_CORE(NAME, INTERNAL_IDENT, IDENT, ARCH, FLAGS, COSTS) \ + TARGET_CPU_##INTERNAL_IDENT, #include "arm-cores.def" #undef ARM_CORE TARGET_CPU_generic diff --git a/gcc/config/arm/gentune.sh b/gcc/config/arm/gentune.sh index 725ae0fe6d1..2893ab4ef8d 100755 --- a/gcc/config/arm/gentune.sh +++ b/gcc/config/arm/gentune.sh @@ -25,5 +25,5 @@ echo ";; Generated automatically by gentune.sh from arm-cores.def" allcores=`awk -F'[(, ]+' '/^ARM_CORE/ { cores = cores$3"," } END { print cores } ' $1` echo "(define_attr \"tune\"" -echo " \"$allcores\"" | sed -e 's/,"$/"/' +echo " \"$allcores\"" | sed -e 's/,"$/"/' | sed -e 's/\([a-z0-9_]\+,[a-z0-9_]\+,[a-z0-9_]\+,\)/\1\n\t/g' echo " (const (symbol_ref \"((enum attr_tune) arm_tune)\")))" -- cgit v1.2.1 From 3eb65e5effb40f0260794cb78c74699cc14f7e99 Mon Sep 17 00:00:00 2001 From: jgreenhalgh Date: Tue, 17 Dec 2013 12:27:38 +0000 Subject: [ARM 3/5 big.LITTLE] Add support for -mcpu=cortex-a15.cortex-a7 2013-12-17 James Greenhalgh * config/arm/arm-cores.def (cortex-a15.cortex-a7): New. * doc/invoke.texi: Document -mcpu=cortex-a15.cortex-a7. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm-tune.md: Regenerate. * config/arm/bpabi.h (BE8_LINK_SPEC): Handle -mcpu=cortex-a5.cortex-a7. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206047 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/config/arm/arm-cores.def | 3 +++ gcc/config/arm/arm-tables.opt | 3 +++ gcc/config/arm/arm-tune.md | 3 ++- gcc/config/arm/bpabi.h | 2 ++ gcc/doc/invoke.texi | 3 +++ 6 files changed, 22 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5170f2da217..83084dad6ca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2013-12-17 James Greenhalgh + + * config/arm/arm-cores.def (cortex-a15.cortex-a7): New. + * doc/invoke.texi: Document -mcpu=cortex-a15.cortex-a7. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * config/arm/bpabi.h + (BE8_LINK_SPEC): Handle -mcpu=cortex-a5.cortex-a7. + 2013-12-17 James Greenhalgh * config/arm/arm-cores.def: Add new column for TUNE_IDENT. diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def index 3264eedd57c..0ea5eef8c98 100644 --- a/gcc/config/arm/arm-cores.def +++ b/gcc/config/arm/arm-cores.def @@ -148,5 +148,8 @@ ARM_CORE("cortex-m4", cortexm4, cortexm4, 7EM, FL_LDSCHED, v7m) ARM_CORE("cortex-m3", cortexm3, cortexm3, 7M, FL_LDSCHED, v7m) ARM_CORE("marvell-pj4", marvell_pj4, marvell_pj4, 7A, FL_LDSCHED, 9e) +/* V7 big.LITTLE implementations */ +ARM_CORE("cortex-a15.cortex-a7", cortexa15cortexa7, cortexa7, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a15) + /* V8 Architecture Processors */ ARM_CORE("cortex-a53", cortexa53, cortexa53, 8A, FL_LDSCHED, cortex_a53) diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt index 7da7cc8e910..d847c10b4d0 100644 --- a/gcc/config/arm/arm-tables.opt +++ b/gcc/config/arm/arm-tables.opt @@ -282,6 +282,9 @@ Enum(processor_type) String(cortex-m3) Value(cortexm3) EnumValue Enum(processor_type) String(marvell-pj4) Value(marvell_pj4) +EnumValue +Enum(processor_type) String(cortex-a15.cortex-a7) Value(cortexa15cortexa7) + EnumValue Enum(processor_type) String(cortex-a53) Value(cortexa53) diff --git a/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md index 0386afff742..beee9af013f 100644 --- a/gcc/config/arm/arm-tune.md +++ b/gcc/config/arm/arm-tune.md @@ -29,5 +29,6 @@ cortexa8,cortexa9,cortexa12, cortexa15,cortexr4,cortexr4f, cortexr5,cortexr7,cortexm4, - cortexm3,marvell_pj4,cortexa53" + cortexm3,marvell_pj4,cortexa15cortexa7, + cortexa53" (const (symbol_ref "((enum attr_tune) arm_tune)"))) diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h index b39c4a91a9d..669884d870d 100644 --- a/gcc/config/arm/bpabi.h +++ b/gcc/config/arm/bpabi.h @@ -60,6 +60,7 @@ |mcpu=cortex-a7 \ |mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15 \ |mcpu=cortex-a12 \ + |mcpu=cortex-a15.cortex-a7 \ |mcpu=marvell-pj4 \ |mcpu=cortex-a53 \ |mcpu=generic-armv7-a \ @@ -74,6 +75,7 @@ |mcpu=cortex-a7 \ |mcpu=cortex-a8|mcpu=cortex-a9|mcpu=cortex-a15 \ |mcpu=cortex-a12 \ + |mcpu=cortex-a15.cortex-a7 \ |mcpu=cortex-a53 \ |mcpu=marvell-pj4 \ |mcpu=generic-armv7-a \ diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index b655a6411b1..e069305890d 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -12168,6 +12168,9 @@ assembly code. Permissible names are: @samp{arm2}, @samp{arm250}, @samp{fa526}, @samp{fa626}, @samp{fa606te}, @samp{fa626te}, @samp{fmp626}, @samp{fa726te}. +Additionally, this option can specify that GCC should tune the performance +of the code for a big.LITTLE system. The only permissible name is: +@samp{cortex-a15.cortex-a7}. @option{-mcpu=generic-@var{arch}} is also permissible, and is equivalent to @option{-march=@var{arch} -mtune=generic-@var{arch}}. -- cgit v1.2.1 From 5f083251a93ded81a9860b3a114949e41e85b4d5 Mon Sep 17 00:00:00 2001 From: jgreenhalgh Date: Tue, 17 Dec 2013 12:30:35 +0000 Subject: [ARM 4/5 big.LITTLE] Add support for -mcpu=cortex-a57 gcc/ * config/arm/arm-cores.def (cortex-a57): New. * doc/invoke.texi: Document -mcpu=cortex-a57. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm-tune.md: Regenerate. * config/arm/bpabi.h (BE8_LINK_SPEC): Handle -mcpu=cortex-a57. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206048 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/config/arm/arm-cores.def | 1 + gcc/config/arm/arm-tables.opt | 3 +++ gcc/config/arm/arm-tune.md | 2 +- gcc/config/arm/bpabi.h | 2 ++ gcc/doc/invoke.texi | 3 ++- 6 files changed, 17 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 83084dad6ca..61696398118 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-12-17 James Greenhalgh + + * config/arm/arm-cores.def (cortex-a57): New. + * doc/invoke.texi: Document -mcpu=cortex-a57. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * config/arm/bpabi.h (BE8_LINK_SPEC): Handle -mcpu=cortex-a57. + 2013-12-17 James Greenhalgh * config/arm/arm-cores.def (cortex-a15.cortex-a7): New. diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def index 0ea5eef8c98..d5e562bfbd2 100644 --- a/gcc/config/arm/arm-cores.def +++ b/gcc/config/arm/arm-cores.def @@ -153,3 +153,4 @@ ARM_CORE("cortex-a15.cortex-a7", cortexa15cortexa7, cortexa7, 7A, FL_LDSCHED | /* V8 Architecture Processors */ ARM_CORE("cortex-a53", cortexa53, cortexa53, 8A, FL_LDSCHED, cortex_a53) +ARM_CORE("cortex-a57", cortexa57, cortexa15, 8A, FL_LDSCHED, cortex_a15) diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt index d847c10b4d0..03c1560114b 100644 --- a/gcc/config/arm/arm-tables.opt +++ b/gcc/config/arm/arm-tables.opt @@ -288,6 +288,9 @@ Enum(processor_type) String(cortex-a15.cortex-a7) Value(cortexa15cortexa7) EnumValue Enum(processor_type) String(cortex-a53) Value(cortexa53) +EnumValue +Enum(processor_type) String(cortex-a57) Value(cortexa57) + Enum Name(arm_arch) Type(int) Known ARM architectures (for use with the -march= option): diff --git a/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md index beee9af013f..d56956d0ab1 100644 --- a/gcc/config/arm/arm-tune.md +++ b/gcc/config/arm/arm-tune.md @@ -30,5 +30,5 @@ cortexa15,cortexr4,cortexr4f, cortexr5,cortexr7,cortexm4, cortexm3,marvell_pj4,cortexa15cortexa7, - cortexa53" + cortexa53,cortexa57" (const (symbol_ref "((enum attr_tune) arm_tune)"))) diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h index 669884d870d..796003bd7d5 100644 --- a/gcc/config/arm/bpabi.h +++ b/gcc/config/arm/bpabi.h @@ -63,6 +63,7 @@ |mcpu=cortex-a15.cortex-a7 \ |mcpu=marvell-pj4 \ |mcpu=cortex-a53 \ + |mcpu=cortex-a57 \ |mcpu=generic-armv7-a \ |march=armv7-m|mcpu=cortex-m3 \ |march=armv7e-m|mcpu=cortex-m4 \ @@ -77,6 +78,7 @@ |mcpu=cortex-a12 \ |mcpu=cortex-a15.cortex-a7 \ |mcpu=cortex-a53 \ + |mcpu=cortex-a57 \ |mcpu=marvell-pj4 \ |mcpu=generic-armv7-a \ |march=armv7-m|mcpu=cortex-m3 \ diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index e069305890d..974338743b1 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -12157,7 +12157,8 @@ assembly code. Permissible names are: @samp{arm2}, @samp{arm250}, @samp{arm1136j-s}, @samp{arm1136jf-s}, @samp{mpcore}, @samp{mpcorenovfp}, @samp{arm1156t2-s}, @samp{arm1156t2f-s}, @samp{arm1176jz-s}, @samp{arm1176jzf-s}, @samp{cortex-a5}, @samp{cortex-a7}, @samp{cortex-a8}, @samp{cortex-a9}, -@samp{cortex-a12}, @samp{cortex-a15}, @samp{cortex-a53}, @samp{cortex-r4}, +@samp{cortex-a12}, @samp{cortex-a15}, @samp{cortex-a53}, @samp{cortex-a57}, +@samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-m4}, @samp{cortex-m3}, @samp{cortex-m1}, -- cgit v1.2.1 From d66de42e3110020e02b15b61e4148db3d1a358f1 Mon Sep 17 00:00:00 2001 From: jgreenhalgh Date: Tue, 17 Dec 2013 12:32:43 +0000 Subject: [ARM 5/5 big.LITTLE] Add support for -mcpu=cortex-a57.cortex-a53 gcc/ * config/arm/arm-cores.def (cortex-a57.cortex-a53): New. * doc/invoke.texi: Document -mcpu=cortex-a57.cortex-a53. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm-tune.md: Regenerate. * config/arm/bpabi.h (BE8_LINK_SPEC): Handle -mcpu=cortex-a57.cortex-a53. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206049 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/config/arm/arm-cores.def | 3 +++ gcc/config/arm/arm-tables.opt | 3 +++ gcc/config/arm/arm-tune.md | 2 +- gcc/config/arm/bpabi.h | 2 ++ gcc/doc/invoke.texi | 4 ++-- 6 files changed, 20 insertions(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 61696398118..b618d5eb756 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2013-12-17 James Greenhalgh + + * config/arm/arm-cores.def (cortex-a57.cortex-a53): New. + * doc/invoke.texi: Document -mcpu=cortex-a57.cortex-a53. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * config/arm/bpabi.h + (BE8_LINK_SPEC): Handle -mcpu=cortex-a57.cortex-a53. + 2013-12-17 James Greenhalgh * config/arm/arm-cores.def (cortex-a57): New. diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def index d5e562bfbd2..9bd3f3922e1 100644 --- a/gcc/config/arm/arm-cores.def +++ b/gcc/config/arm/arm-cores.def @@ -154,3 +154,6 @@ ARM_CORE("cortex-a15.cortex-a7", cortexa15cortexa7, cortexa7, 7A, FL_LDSCHED | /* V8 Architecture Processors */ ARM_CORE("cortex-a53", cortexa53, cortexa53, 8A, FL_LDSCHED, cortex_a53) ARM_CORE("cortex-a57", cortexa57, cortexa15, 8A, FL_LDSCHED, cortex_a15) + +/* V8 big.LITTLE implementations */ +ARM_CORE("cortex-a57.cortex-a53", cortexa57cortexa53, cortexa53, 8A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a15) diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt index 03c1560114b..702338c23f9 100644 --- a/gcc/config/arm/arm-tables.opt +++ b/gcc/config/arm/arm-tables.opt @@ -291,6 +291,9 @@ Enum(processor_type) String(cortex-a53) Value(cortexa53) EnumValue Enum(processor_type) String(cortex-a57) Value(cortexa57) +EnumValue +Enum(processor_type) String(cortex-a57.cortex-a53) Value(cortexa57cortexa53) + Enum Name(arm_arch) Type(int) Known ARM architectures (for use with the -march= option): diff --git a/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md index d56956d0ab1..954cab8efb1 100644 --- a/gcc/config/arm/arm-tune.md +++ b/gcc/config/arm/arm-tune.md @@ -30,5 +30,5 @@ cortexa15,cortexr4,cortexr4f, cortexr5,cortexr7,cortexm4, cortexm3,marvell_pj4,cortexa15cortexa7, - cortexa53,cortexa57" + cortexa53,cortexa57,cortexa57cortexa53" (const (symbol_ref "((enum attr_tune) arm_tune)"))) diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h index 796003bd7d5..5cfaeb88986 100644 --- a/gcc/config/arm/bpabi.h +++ b/gcc/config/arm/bpabi.h @@ -64,6 +64,7 @@ |mcpu=marvell-pj4 \ |mcpu=cortex-a53 \ |mcpu=cortex-a57 \ + |mcpu=cortex-a57.cortex-a53 \ |mcpu=generic-armv7-a \ |march=armv7-m|mcpu=cortex-m3 \ |march=armv7e-m|mcpu=cortex-m4 \ @@ -79,6 +80,7 @@ |mcpu=cortex-a15.cortex-a7 \ |mcpu=cortex-a53 \ |mcpu=cortex-a57 \ + |mcpu=cortex-a57.cortex-a53 \ |mcpu=marvell-pj4 \ |mcpu=generic-armv7-a \ |march=armv7-m|mcpu=cortex-m3 \ diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 974338743b1..b102e13b0e8 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -12170,8 +12170,8 @@ assembly code. Permissible names are: @samp{arm2}, @samp{arm250}, @samp{fa606te}, @samp{fa626te}, @samp{fmp626}, @samp{fa726te}. Additionally, this option can specify that GCC should tune the performance -of the code for a big.LITTLE system. The only permissible name is: -@samp{cortex-a15.cortex-a7}. +of the code for a big.LITTLE system. Permissible names are: +@samp{cortex-a15.cortex-a7}, @samp{cortex-a57.cortex-a53}. @option{-mcpu=generic-@var{arch}} is also permissible, and is equivalent to @option{-march=@var{arch} -mtune=generic-@var{arch}}. -- cgit v1.2.1 From 43e4f6e8620642ba6ab42473ca09fa43f9603c81 Mon Sep 17 00:00:00 2001 From: ktkachov Date: Tue, 17 Dec 2013 13:44:07 +0000 Subject: 2013-12-17 Kyrylo Tkachov * config/arm/arm-cores.def (cortex-a12): Use cortexa15 scheduling. * config/arm/arm.c (arm_issue_rate): Handle cortexa12. * config/arm/arm.md (generic_vfp): Remove cortexa12. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206050 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/arm/arm-cores.def | 2 +- gcc/config/arm/arm.c | 1 + gcc/config/arm/arm.md | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b618d5eb756..849b76cd8f0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-17 Kyrylo Tkachov + + * config/arm/arm-cores.def (cortex-a12): Use cortexa15 scheduling. + * config/arm/arm.c (arm_issue_rate): Handle cortexa12. + * config/arm/arm.md (generic_vfp): Remove cortexa12. + 2013-12-17 James Greenhalgh * config/arm/arm-cores.def (cortex-a57.cortex-a53): New. diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def index 9bd3f3922e1..806cd7fdcf9 100644 --- a/gcc/config/arm/arm-cores.def +++ b/gcc/config/arm/arm-cores.def @@ -138,7 +138,7 @@ ARM_CORE("cortex-a5", cortexa5, cortexa5, 7A, FL_LDSCHED, cortex_a5) ARM_CORE("cortex-a7", cortexa7, cortexa7, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a7) ARM_CORE("cortex-a8", cortexa8, cortexa8, 7A, FL_LDSCHED, cortex) ARM_CORE("cortex-a9", cortexa9, cortexa9, 7A, FL_LDSCHED, cortex_a9) -ARM_CORE("cortex-a12", cortexa12, cortexa12, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a12) +ARM_CORE("cortex-a12", cortexa12, cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a12) ARM_CORE("cortex-a15", cortexa15, cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a15) ARM_CORE("cortex-r4", cortexr4, cortexr4, 7R, FL_LDSCHED, cortex) ARM_CORE("cortex-r4f", cortexr4f, cortexr4f, 7R, FL_LDSCHED, cortex) diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 2bc9bf10d9c..05fc2f973fd 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -28983,6 +28983,7 @@ arm_issue_rate (void) case cortexa7: case cortexa8: case cortexa9: + case cortexa12: case cortexa53: case fa726te: case marvell_pj4: diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 46fc4422d5c..c474ff16d51 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -477,7 +477,7 @@ (define_attr "generic_vfp" "yes,no" (const (if_then_else (and (eq_attr "fpu" "vfp") - (eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa7,cortexa8,cortexa9,cortexa12,cortexa53,cortexm4,marvell_pj4") + (eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa7,cortexa8,cortexa9,cortexa53,cortexm4,marvell_pj4") (eq_attr "tune_cortexr4" "no")) (const_string "yes") (const_string "no")))) -- cgit v1.2.1 From 395dc01c7903b66cd0b23b71f3d43237b661b614 Mon Sep 17 00:00:00 2001 From: tschwinge Date: Tue, 17 Dec 2013 15:21:07 +0000 Subject: Fix description of OpenMP parallel directive in the C and C++ front ends. gcc/c/ * c-parser.c (c_parser_omp_parallel): Fix description. gcc/cp/ * parser.c (cp_parser_omp_parallel): Fix description. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206052 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/c/ChangeLog | 4 ++++ gcc/c/c-parser.c | 13 ++++++++++--- gcc/cp/ChangeLog | 4 ++++ gcc/cp/parser.c | 12 ++++++++---- 4 files changed, 26 insertions(+), 7 deletions(-) (limited to 'gcc') diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 17ca2c5d8dd..9db78c6baa6 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,7 @@ +2013-12-17 Thomas Schwinge + + * c-parser.c (c_parser_omp_parallel): Fix description. + 2013-12-11 Balaji V. Iyer * c-objc-common.h (LANG_HOOKS_CILKPLUS_FRAME_CLEANUP): Remove. diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index c78d26909b4..28f53c166d4 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -12032,9 +12032,16 @@ c_parser_omp_sections (location_t loc, c_parser *parser, } /* OpenMP 2.5: - # pragma parallel parallel-clause new-line - # pragma parallel for parallel-for-clause new-line - # pragma parallel sections parallel-sections-clause new-line + # pragma omp parallel parallel-clause[optseq] new-line + structured-block + # pragma omp parallel for parallel-for-clause[optseq] new-line + structured-block + # pragma omp parallel sections parallel-sections-clause[optseq] new-line + structured-block + + OpenMP 4.0: + # pragma omp parallel for simd parallel-for-simd-clause[optseq] new-line + structured-block LOC is the location of the #pragma token. */ diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5cb02e220c9..d44ff7c6c04 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2013-12-17 Thomas Schwinge + + * parser.c (cp_parser_omp_parallel): Fix description. + 2013-12-12 Jason Merrill PR c++/58954 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index dd027342178..9f8ad39dfe1 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -29512,12 +29512,16 @@ cp_parser_omp_sections (cp_parser *parser, cp_token *pragma_tok, } /* OpenMP 2.5: - # pragma parallel parallel-clause new-line - # pragma parallel for parallel-for-clause new-line - # pragma parallel sections parallel-sections-clause new-line + # pragma omp parallel parallel-clause[optseq] new-line + structured-block + # pragma omp parallel for parallel-for-clause[optseq] new-line + structured-block + # pragma omp parallel sections parallel-sections-clause[optseq] new-line + structured-block OpenMP 4.0: - # pragma parallel for simd parallel-for-simd-clause new-line */ + # pragma omp parallel for simd parallel-for-simd-clause[optseq] new-line + structured-block */ #define OMP_PARALLEL_CLAUSE_MASK \ ( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IF) \ -- cgit v1.2.1 From 7edcaecfd0fe19d441c9d518e146ff6f42ed25b1 Mon Sep 17 00:00:00 2001 From: tschwinge Date: Tue, 17 Dec 2013 15:21:23 +0000 Subject: Properly order chapters in GCC Internals manual. gcc/ * doc/gccint.texi (Top): Fix inclusion order. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206053 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/doc/gccint.texi | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 849b76cd8f0..92d92762042 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2013-12-17 Thomas Schwinge + + * doc/gccint.texi (Top): Fix inclusion order. + 2013-12-17 Kyrylo Tkachov * config/arm/arm-cores.def (cortex-a12): Use cortexa15 scheduling. diff --git a/gcc/doc/gccint.texi b/gcc/doc/gccint.texi index 7d795000c0e..a80cc5d4003 100644 --- a/gcc/doc/gccint.texi +++ b/gcc/doc/gccint.texi @@ -143,12 +143,12 @@ Additional tutorial information is linked to from @include sourcebuild.texi @include options.texi @include passes.texi -@include rtl.texi @include generic.texi @include gimple.texi @include tree-ssa.texi -@include loop.texi +@include rtl.texi @include cfg.texi +@include loop.texi @include md.texi @include tm.texi @include hostconfig.texi -- cgit v1.2.1 From 40084dd347e7059d9489e5ddbc53104139f32ea3 Mon Sep 17 00:00:00 2001 From: tschwinge Date: Tue, 17 Dec 2013 15:21:34 +0000 Subject: Document passes.def. gcc/ * doc/cfg.texi (Control Flow): Refer to passes.def instead of passes.c. * doc/passes.texi (Pass manager): Refer to passes.def. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206054 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/doc/cfg.texi | 2 +- gcc/doc/passes.texi | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92d92762042..592bb8c4347 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2013-12-17 Thomas Schwinge + * doc/cfg.texi (Control Flow): Refer to passes.def instead of + passes.c. + * doc/passes.texi (Pass manager): Refer to passes.def. + * doc/gccint.texi (Top): Fix inclusion order. 2013-12-17 Kyrylo Tkachov diff --git a/gcc/doc/cfg.texi b/gcc/doc/cfg.texi index b759e36ff75..1be3f47a792 100644 --- a/gcc/doc/cfg.texi +++ b/gcc/doc/cfg.texi @@ -23,7 +23,7 @@ used to represent the control flow graph are defined in In GCC, the representation of control flow is maintained throughout the compilation process, from constructing the CFG early in -@code{pass_build_cfg} to @code{pass_free_cfg} (see @file{passes.c}). +@code{pass_build_cfg} to @code{pass_free_cfg} (see @file{passes.def}). The CFG takes various different modes and may undergo extensive manipulations, but the graph is always valid between its construction and its release. This way, transfer of information such as data flow, diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi index 3ed9a4fc204..9a68ad29c5c 100644 --- a/gcc/doc/passes.texi +++ b/gcc/doc/passes.texi @@ -208,6 +208,7 @@ semantic checks), it should return @code{GS_ERROR}. The pass manager is located in @file{passes.c}, @file{tree-optimize.c} and @file{tree-pass.h}. +It processes passes as described in @file{passes.def}. Its job is to run all of the individual passes in the correct order, and take care of standard bookkeeping that applies to every pass. -- cgit v1.2.1 From a7dfc4fe27a44b482506f286ddb73911cc1c226b Mon Sep 17 00:00:00 2001 From: tschwinge Date: Tue, 17 Dec 2013 15:21:45 +0000 Subject: Reflect reality in comment. gcc/ * omp-low.c (check_combined_parallel): Reflect reality in comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206055 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 2 ++ gcc/omp-low.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 592bb8c4347..5ed175db3f1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,7 @@ 2013-12-17 Thomas Schwinge + * omp-low.c (check_combined_parallel): Reflect reality in comment. + * doc/cfg.texi (Control Flow): Refer to passes.def instead of passes.c. * doc/passes.texi (Pass manager): Refer to passes.def. diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 97092dd0894..1bab84e6eb0 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -9052,7 +9052,7 @@ lower_omp_for (gimple_stmt_iterator *gsi_p, omp_context *ctx) } /* Callback for walk_stmts. Check if the current statement only contains - GIMPLE_OMP_FOR or GIMPLE_OMP_PARALLEL. */ + GIMPLE_OMP_FOR or GIMPLE_OMP_SECTIONS. */ static tree check_combined_parallel (gimple_stmt_iterator *gsi_p, -- cgit v1.2.1 From 2b1bc0964534ac5c4bd78b7ea6549489a15a970a Mon Sep 17 00:00:00 2001 From: tschwinge Date: Tue, 17 Dec 2013 15:21:57 +0000 Subject: Fix typo in dg-warning comment. gcc/testsuite/ * gcc.dg/dfp/wtr-conversion-1.c (testfunc1): Fix typo. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206056 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/dfp/wtr-conversion-1.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ec35aeafa7d..5b8a37d5093 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-17 Thomas Schwinge + + * gcc.dg/dfp/wtr-conversion-1.c (testfunc1): Fix typo. + 2013-12-17 Jan Hubicka * g++.dg/ipa/devirt-13.C: Update template. diff --git a/gcc/testsuite/gcc.dg/dfp/wtr-conversion-1.c b/gcc/testsuite/gcc.dg/dfp/wtr-conversion-1.c index 2b50fe6a56e..4eff0072590 100644 --- a/gcc/testsuite/gcc.dg/dfp/wtr-conversion-1.c +++ b/gcc/testsuite/gcc.dg/dfp/wtr-conversion-1.c @@ -24,7 +24,7 @@ testfunc1 () { foo_i (i); foo_i (d32); /* { dg-warning "as integer rather than floating" "prototype conversion warning" } */ - foo_i (d64); /* { dg-warning "as integer rather than floating" "prototype convDersion warning" } */ + foo_i (d64); /* { dg-warning "as integer rather than floating" "prototype conversion warning" } */ foo_i (d128); /* { dg-warning "as integer rather than floating" "prototype conversion warning" } */ foo_d32 (i); /* { dg-warning "as floating rather than integer" "prototype conversion warning" } */ foo_d32 (f); /* { dg-warning "as '_Decimal32' rather than 'float'" "prototype conversion warning" } */ -- cgit v1.2.1 From 7f6ab982acd540623697eaeac097e477cc5d9ebb Mon Sep 17 00:00:00 2001 From: tschwinge Date: Tue, 17 Dec 2013 15:22:07 +0000 Subject: Remove leftover comment. gcc/ * omp-low.c: Remove leftover comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206057 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 2 ++ gcc/omp-low.c | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5ed175db3f1..0a39124d657 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,7 @@ 2013-12-17 Thomas Schwinge + * omp-low.c: Remove leftover comment. + * omp-low.c (check_combined_parallel): Reflect reality in comment. * doc/cfg.texi (Control Flow): Refer to passes.def instead of diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 1bab84e6eb0..cb04c71c9d3 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -1220,8 +1220,6 @@ omp_copy_decl (tree var, copy_body_data *cb) } -/* Return the parallel region associated with STMT. */ - /* Debugging dumps for parallel regions. */ void dump_omp_region (FILE *, struct omp_region *, int); void debug_omp_region (struct omp_region *); -- cgit v1.2.1 From 2f472e7095708dbc0b52023e6be075a43ddfea95 Mon Sep 17 00:00:00 2001 From: tschwinge Date: Tue, 17 Dec 2013 15:22:18 +0000 Subject: Remove leftover function declaration. gcc/ * tree-pass.h (make_pass_expand_omp_ssa): Remove leftover function declaration. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206058 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 3 +++ gcc/tree-pass.h | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0a39124d657..0f9dfbce1ed 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2013-12-17 Thomas Schwinge + * tree-pass.h (make_pass_expand_omp_ssa): Remove leftover function + declaration. + * omp-low.c: Remove leftover comment. * omp-low.c (check_combined_parallel): Reflect reality in comment. diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index b7b43de4423..44b330803d5 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -400,7 +400,6 @@ extern gimple_opt_pass *make_pass_lower_vector_ssa (gcc::context *ctxt); extern gimple_opt_pass *make_pass_lower_omp (gcc::context *ctxt); extern gimple_opt_pass *make_pass_diagnose_omp_blocks (gcc::context *ctxt); extern gimple_opt_pass *make_pass_expand_omp (gcc::context *ctxt); -extern gimple_opt_pass *make_pass_expand_omp_ssa (gcc::context *ctxt); extern gimple_opt_pass *make_pass_object_sizes (gcc::context *ctxt); extern gimple_opt_pass *make_pass_strlen (gcc::context *ctxt); extern gimple_opt_pass *make_pass_fold_builtins (gcc::context *ctxt); -- cgit v1.2.1 From 93750b22a3ef455db9ba970421f6f541b46a55cc Mon Sep 17 00:00:00 2001 From: tschwinge Date: Tue, 17 Dec 2013 15:22:29 +0000 Subject: Remove leftover variable definition. gcc/ * omp-low.c (tmp_ompfn_id_num): Remove leftover variable definition. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206059 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 3 +++ gcc/omp-low.c | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0f9dfbce1ed..d51d0613296 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2013-12-17 Thomas Schwinge + * omp-low.c (tmp_ompfn_id_num): Remove leftover variable + definition. + * tree-pass.h (make_pass_expand_omp_ssa): Remove leftover function declaration. diff --git a/gcc/omp-low.c b/gcc/omp-low.c index cb04c71c9d3..2398a96c0ea 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -1820,8 +1820,6 @@ scan_sharing_clauses (tree clauses, omp_context *ctx) /* Create a new name for omp child function. Returns an identifier. */ -static GTY(()) unsigned int tmp_ompfn_id_num; - static tree create_omp_child_function_name (bool task_copy) { -- cgit v1.2.1 From 46f6d81758e05d4a366e932d3647bc5fb504d0a5 Mon Sep 17 00:00:00 2001 From: hubicka Date: Tue, 17 Dec 2013 16:07:18 +0000 Subject: * g++.dg/ipa/devirt-13.C: Update template. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206060 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/g++.dg/ipa/devirt-13.C | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/testsuite/g++.dg/ipa/devirt-13.C b/gcc/testsuite/g++.dg/ipa/devirt-13.C index 13fbaeea9c8..b338a4c34c2 100644 --- a/gcc/testsuite/g++.dg/ipa/devirt-13.C +++ b/gcc/testsuite/g++.dg/ipa/devirt-13.C @@ -1,6 +1,6 @@ /* { dg-do run } */ /* Call to foo should be devirtualized because there are no derived types of A. */ -/* { dg-options "-O2 -fdump-ipa-cgraph -fdump-tree-ssa" } */ +/* { dg-options "-O2 -fdump-tree-ssa" } */ namespace { class A { public: @@ -16,7 +16,5 @@ main() return b->foo(); } -/* { dg-final { scan-ipa-dump "Devirtualizing call" "cgraph" } } */ /* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "ssa"} } */ -/* { dg-final { cleanup-ipa-dump "cgraph" } } */ /* { dg-final { cleanup-tree-dump "ssa" } } */ -- cgit v1.2.1 From f9db59d91a12a7c7e334372a8784d0dd84a2efeb Mon Sep 17 00:00:00 2001 From: hubicka Date: Tue, 17 Dec 2013 16:08:42 +0000 Subject: * ipa-devirt.c (get_polymorphic_call_info): Fix offset calculatoin in contains_type_p query. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206061 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/ipa-devirt.c | 11 +++++------ 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d51d0613296..3c7b0d57ac9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-17 Jan Hubicka + + * ipa-devirt.c (get_polymorphic_call_info): Fix offset calculatoin + in contains_type_p query. + 2013-12-17 Thomas Schwinge * omp-low.c (tmp_ompfn_id_num): Remove leftover variable diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index f5b5926504c..a3f2ad674e1 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -982,23 +982,22 @@ get_polymorphic_call_info (tree fndecl, is known. */ else if (DECL_P (base)) { - context->outer_type = TREE_TYPE (base); - gcc_assert (!POINTER_TYPE_P (context->outer_type)); + gcc_assert (!POINTER_TYPE_P (TREE_TYPE (base))); /* Only type inconsistent programs can have otr_type that is not part of outer type. */ - if (!contains_type_p (context->outer_type, - context->offset, *otr_type)) + if (!contains_type_p (TREE_TYPE (base), + context->offset + offset2, *otr_type)) return base_pointer; + context->outer_type = TREE_TYPE (base); context->offset += offset2; - base_pointer = NULL; /* Make very conservative assumption that all objects may be in construction. TODO: ipa-prop already contains code to tell better. merge it later. */ context->maybe_in_construction = true; context->maybe_derived_type = false; - return base_pointer; + return NULL; } else break; -- cgit v1.2.1 From ea4029c81d79045b0f39c6f363429789542dc6f4 Mon Sep 17 00:00:00 2001 From: jakub Date: Tue, 17 Dec 2013 17:35:59 +0000 Subject: PR ipa/58290 * gfortran.dg/pr58290.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206062 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/pr58290.f90 | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/pr58290.f90 (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5b8a37d5093..b76e1fc6dbd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-17 Jakub Jelinek + + PR ipa/58290 + * gfortran.dg/pr58290.f90: New test. + 2013-12-17 Thomas Schwinge * gcc.dg/dfp/wtr-conversion-1.c (testfunc1): Fix typo. diff --git a/gcc/testsuite/gfortran.dg/pr58290.f90 b/gcc/testsuite/gfortran.dg/pr58290.f90 new file mode 100644 index 00000000000..b19cdde05c6 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr58290.f90 @@ -0,0 +1,33 @@ +! PR ipa/58290 +! { dg-do compile } +! { dg-options "-O1 -fipa-pta" } + +MODULE pr58290 + TYPE b + CHARACTER(10) :: s = '' + END TYPE b + TYPE c + TYPE(b) :: d + END TYPE c + TYPE h + INTEGER, DIMENSION(:), POINTER :: b + END TYPE h +CONTAINS + SUBROUTINE foo(x, y) + LOGICAL, INTENT(IN) :: x + TYPE(c), INTENT(INOUT) :: y + END SUBROUTINE + FUNCTION bar (g) RESULT (z) + TYPE(h), INTENT(IN) :: g + TYPE(c) :: y + CALL foo (.TRUE., y) + z = SIZE (g%b) + END FUNCTION bar + SUBROUTINE baz (g) + TYPE(h), INTENT(INOUT) :: g + INTEGER :: i, j + j = bar(g) + DO i = 1, j + ENDDO + END SUBROUTINE baz +END MODULE -- cgit v1.2.1 From 3b48070b4f56249abee273b131665772e452642b Mon Sep 17 00:00:00 2001 From: mpolacek Date: Tue, 17 Dec 2013 18:41:01 +0000 Subject: Add __int128 test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206065 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 ++ gcc/testsuite/c-c++-common/ubsan/overflow-int128.c | 48 ++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 gcc/testsuite/c-c++-common/ubsan/overflow-int128.c (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b76e1fc6dbd..d0b796cb91a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-17 Marek Polacek + + * c-c++-common/ubsan/overflow-int128.c: New test. + 2013-12-17 Jakub Jelinek PR ipa/58290 diff --git a/gcc/testsuite/c-c++-common/ubsan/overflow-int128.c b/gcc/testsuite/c-c++-common/ubsan/overflow-int128.c new file mode 100644 index 00000000000..3680bd3e726 --- /dev/null +++ b/gcc/testsuite/c-c++-common/ubsan/overflow-int128.c @@ -0,0 +1,48 @@ +/* { dg-do run } */ +/* { dg-require-effective-target int128 } */ +/* { dg-options "-fsanitize=signed-integer-overflow" } */ +/* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */ + +/* 2^127 - 1 */ +#define INT128_MAX (__int128) (((unsigned __int128) 1 << ((__SIZEOF_INT128__ * __CHAR_BIT__) - 1)) - 1) +#define INT128_MIN (-INT128_MAX - 1) + +int +main (void) +{ + volatile __int128 i = INT128_MAX; + volatile __int128 j = 1; + volatile __int128 k = i + j; + k = j + i; + i++; + j = INT128_MAX - 100; + j += (1 << 10); + + j = INT128_MIN; + i = -1; + k = i + j; + k = j + i; + j--; + j = INT128_MIN + 100; + j += -(1 << 10); + + i = INT128_MAX; + j = 2; + k = i * j; + + i = INT128_MIN; + i = -i; + + return 0; +} + +/* { dg-output "signed integer overflow: 0x7fffffffffffffffffffffffffffffff \\+ 1 cannot be represented in type '__int128'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: 1 \\+ 0x7fffffffffffffffffffffffffffffff cannot be represented in type '__int128'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: 0x7fffffffffffffffffffffffffffffff \\+ 1 cannot be represented in type '__int128'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: 0x7fffffffffffffffffffffffffffff9b \\+ 1024 cannot be represented in type '__int128'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: -1 \\+ 0x80000000000000000000000000000000 cannot be represented in type '__int128'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: 0x80000000000000000000000000000000 \\+ -1 cannot be represented in type '__int128'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: 0x80000000000000000000000000000000 \\+ -1 cannot be represented in type '__int128'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: 0x80000000000000000000000000000064 \\+ -1024 cannot be represented in type '__int128'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: 0x7fffffffffffffffffffffffffffffff \\* 2 cannot be represented in type '__int128'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*negation of 0x80000000000000000000000000000000 cannot be represented in type '__int128'; cast to an unsigned type to negate this value to itself(\n|\r\n|\r)" } */ -- cgit v1.2.1 From 102603376305c4c8d942399dd14258157db99ef2 Mon Sep 17 00:00:00 2001 From: aldyh Date: Tue, 17 Dec 2013 20:18:28 +0000 Subject: * ipa-inline.c (gate_ipa_inline): Remove. (const pass_data pass_data_ipa_inline): Unset has_gate. (class pass_ipa_inline): Remove gate() method. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206066 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/ipa-inline.c | 16 +--------------- gcc/tree-inline.h | 4 ++-- 3 files changed, 9 insertions(+), 17 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3c7b0d57ac9..e7989720c12 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-17 Aldy Hernandez + + * ipa-inline.c (gate_ipa_inline): Remove. + (const pass_data pass_data_ipa_inline): Unset has_gate. + (class pass_ipa_inline): Remove gate() method. + 2013-12-17 Jan Hubicka * ipa-devirt.c (get_polymorphic_call_info): Fix offset calculatoin diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 38157caf829..9fd5d4183d0 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -2339,19 +2339,6 @@ make_pass_early_inline (gcc::context *ctxt) return new pass_early_inline (ctxt); } - -/* When to run IPA inlining. Inlining of always-inline functions - happens during early inlining. - - Enable inlining unconditoinally, because callgraph redirection - happens here. */ - -static bool -gate_ipa_inline (void) -{ - return true; -} - namespace { const pass_data pass_data_ipa_inline = @@ -2359,7 +2346,7 @@ const pass_data pass_data_ipa_inline = IPA_PASS, /* type */ "inline", /* name */ OPTGROUP_INLINE, /* optinfo_flags */ - true, /* has_gate */ + false, /* has_gate */ true, /* has_execute */ TV_IPA_INLINING, /* tv_id */ 0, /* properties_required */ @@ -2386,7 +2373,6 @@ public: {} /* opt_pass methods: */ - bool gate () { return gate_ipa_inline (); } unsigned int execute () { return ipa_inline (); } }; // class pass_ipa_inline diff --git a/gcc/tree-inline.h b/gcc/tree-inline.h index 00c0b0cf738..210f312b36a 100644 --- a/gcc/tree-inline.h +++ b/gcc/tree-inline.h @@ -162,8 +162,8 @@ typedef struct eni_weights_d /* Cost of return. */ unsigned return_cost; - /* True when time of statemnt should be estimated. Thus i.e - cost of switch statement is logarithmic rather than linear in number + /* True when time of statement should be estimated. Thus, the + cost of a switch statement is logarithmic rather than linear in number of cases. */ bool time_based; } eni_weights; -- cgit v1.2.1 From aff1f085d4a2c324040206998e72d9d9970092fb Mon Sep 17 00:00:00 2001 From: ian Date: Tue, 17 Dec 2013 20:27:52 +0000 Subject: compiler: Use backend interface for runtime errors. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206067 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/gofrontend/expressions.cc | 21 ++++++++++++--------- gcc/go/gofrontend/gogo-tree.cc | 24 ------------------------ gcc/go/gofrontend/gogo.cc | 13 +++++++++++++ gcc/go/gofrontend/gogo.h | 2 +- 4 files changed, 26 insertions(+), 34 deletions(-) (limited to 'gcc') diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 81d18caae7a..2f1c026c983 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -4305,8 +4305,9 @@ Unary_expression::do_get_tree(Translate_context* context) expr, fold_convert(TREE_TYPE(expr), null_pointer_node)); - tree crash = gogo->runtime_error(RUNTIME_ERROR_NIL_DEREFERENCE, - loc); + Expression* crash_expr = + gogo->runtime_error(RUNTIME_ERROR_NIL_DEREFERENCE, loc); + tree crash = crash_expr->get_tree(context); expr = fold_build2_loc(loc.gcc_location(), COMPOUND_EXPR, TREE_TYPE(expr), build3(COND_EXPR, void_type_node, @@ -6183,9 +6184,9 @@ Binary_expression::do_get_tree(Translate_context* context) // __go_runtime_error(RUNTIME_ERROR_DIVISION_BY_ZERO), 0 int errcode = RUNTIME_ERROR_DIVISION_BY_ZERO; + Expression* crash = gogo->runtime_error(errcode, this->location()); tree panic = fold_build2_loc(gccloc, COMPOUND_EXPR, TREE_TYPE(ret), - gogo->runtime_error(errcode, - this->location()), + crash->get_tree(context), fold_convert_loc(gccloc, TREE_TYPE(ret), integer_zero_node)); @@ -6975,8 +6976,9 @@ Bound_method_expression::do_get_tree(Translate_context* context) if (nil_check != NULL) { tree nil_check_tree = nil_check->get_tree(context); - tree crash = + Expression* crash_expr = context->gogo()->runtime_error(RUNTIME_ERROR_NIL_DEREFERENCE, loc); + tree crash = crash_expr->get_tree(context); if (ret_tree == error_mark_node || nil_check_tree == error_mark_node || crash == error_mark_node) @@ -10715,7 +10717,7 @@ Array_index_expression::do_get_tree(Translate_context* context) : (this->end_ == NULL ? RUNTIME_ERROR_SLICE_INDEX_OUT_OF_BOUNDS : RUNTIME_ERROR_SLICE_SLICE_OUT_OF_BOUNDS)); - tree crash = gogo->runtime_error(code, loc); + tree crash = gogo->runtime_error(code, loc)->get_tree(context); if (this->end_ == NULL) { @@ -11089,7 +11091,7 @@ String_index_expression::do_get_tree(Translate_context* context) int code = (this->end_ == NULL ? RUNTIME_ERROR_STRING_INDEX_OUT_OF_BOUNDS : RUNTIME_ERROR_STRING_SLICE_OUT_OF_BOUNDS); - tree crash = context->gogo()->runtime_error(code, loc); + tree crash = context->gogo()->runtime_error(code, loc)->get_tree(context); if (this->end_ == NULL) { @@ -11879,8 +11881,9 @@ Interface_field_reference_expression::do_get_tree(Translate_context* context) this->expr_, Expression::make_nil(loc), loc); - tree crash = context->gogo()->runtime_error(RUNTIME_ERROR_NIL_DEREFERENCE, - loc); + Expression* crash_expr = + context->gogo()->runtime_error(RUNTIME_ERROR_NIL_DEREFERENCE, loc); + tree crash = crash_expr->get_tree(context); if (closure_tree == error_mark_node || nil_check_tree == error_mark_node || crash == error_mark_node) diff --git a/gcc/go/gofrontend/gogo-tree.cc b/gcc/go/gofrontend/gogo-tree.cc index fcceffb2977..b04e660a92d 100644 --- a/gcc/go/gofrontend/gogo-tree.cc +++ b/gcc/go/gofrontend/gogo-tree.cc @@ -2252,30 +2252,6 @@ Gogo::call_builtin(tree* pdecl, Location location, const char* name, return ret; } -// Build a call to the runtime error function. - -tree -Gogo::runtime_error(int code, Location location) -{ - Type* int32_type = Type::lookup_integer_type("int32"); - tree int32_type_tree = type_to_tree(int32_type->get_backend(this)); - - static tree runtime_error_fndecl; - tree ret = Gogo::call_builtin(&runtime_error_fndecl, - location, - "__go_runtime_error", - 1, - void_type_node, - int32_type_tree, - build_int_cst(int32_type_tree, code)); - if (ret == error_mark_node) - return error_mark_node; - // The runtime error function panics and does not return. - TREE_NOTHROW(runtime_error_fndecl) = 0; - TREE_THIS_VOLATILE(runtime_error_fndecl) = 1; - return ret; -} - // Return a tree for receiving a value of type TYPE_TREE on CHANNEL. // TYPE_DESCRIPTOR_TREE is the channel's type descriptor. This does a // blocking receive and returns the value read from the channel. diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc index 045763c7bee..e46bf9c4193 100644 --- a/gcc/go/gofrontend/gogo.cc +++ b/gcc/go/gofrontend/gogo.cc @@ -3060,6 +3060,19 @@ Gogo::build_recover_thunks() this->traverse(&build_recover_thunks); } +// Build a call to the runtime error function. + +Expression* +Gogo::runtime_error(int code, Location location) +{ + Type* int32_type = Type::lookup_integer_type("int32"); + mpz_t val; + mpz_init_set_ui(val, code); + Expression* code_expr = Expression::make_integer(&val, int32_type, location); + mpz_clear(val); + return Runtime::make_call(Runtime::RUNTIME_ERROR, location, 1, code_expr); +} + // Look for named types to see whether we need to create an interface // method table. diff --git a/gcc/go/gofrontend/gogo.h b/gcc/go/gofrontend/gogo.h index 31b258d62d6..a9a56815c17 100644 --- a/gcc/go/gofrontend/gogo.h +++ b/gcc/go/gofrontend/gogo.h @@ -576,7 +576,7 @@ class Gogo tree rettype, ...); // Build a call to the runtime error function. - tree + Expression* runtime_error(int code, Location); // Build a builtin struct with a list of fields. -- cgit v1.2.1 From cf4f5d5e5a8bffc5c58b5dc64ac035adf9c98e1d Mon Sep 17 00:00:00 2001 From: jakub Date: Tue, 17 Dec 2013 21:36:21 +0000 Subject: PR tree-optimization/59523 * tree-vectorizer.c (fold_loop_vectorized_call): Call update_stmt on updated stmts. * gcc.dg/pr59523.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206069 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr59523.c | 17 +++++++++++++++++ gcc/tree-vectorizer.c | 7 +++++-- 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr59523.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e7989720c12..58613eef093 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-17 Jakub Jelinek + + PR tree-optimization/59523 + * tree-vectorizer.c (fold_loop_vectorized_call): Call update_stmt + on updated stmts. + 2013-12-17 Aldy Hernandez * ipa-inline.c (gate_ipa_inline): Remove. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d0b796cb91a..29110efb85b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-17 Jakub Jelinek + + PR tree-optimization/59523 + * gcc.dg/pr59523.c: New test. + 2013-12-17 Marek Polacek * c-c++-common/ubsan/overflow-int128.c: New test. diff --git a/gcc/testsuite/gcc.dg/pr59523.c b/gcc/testsuite/gcc.dg/pr59523.c new file mode 100644 index 00000000000..b523eaea8a1 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr59523.c @@ -0,0 +1,17 @@ +/* PR tree-optimization/59523 */ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ +/* { dg-additional-options "-mavx2" { target { i?86-*-* x86_64-*-* } } } */ + +int * +foo (int a, int *b, int *c, int *d) +{ + int i, *r = __builtin_alloca (a * sizeof (int)); + __builtin_memcpy (r, d, a * sizeof (int)); + for (i = 0; i < 64; i++) + c[i] += b[i]; + for (i = 0; i < a; i++) + if (r[i] == 0) + r[i] = 1; + return r; +} diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index 1c411c4dec6..e3e552b81f2 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -369,8 +369,11 @@ fold_loop_vectorized_call (gimple g, tree value) update_call_from_tree (&gsi, value); FOR_EACH_IMM_USE_STMT (use_stmt, iter, lhs) - FOR_EACH_IMM_USE_ON_STMT (use_p, iter) - SET_USE (use_p, value); + { + FOR_EACH_IMM_USE_ON_STMT (use_p, iter) + SET_USE (use_p, value); + update_stmt (use_stmt); + } } /* Function vectorize_loops. -- cgit v1.2.1 From af48f0b184090da9bd5bd5f959e2387385f92b8c Mon Sep 17 00:00:00 2001 From: marxin Date: Tue, 17 Dec 2013 22:20:12 +0000 Subject: Time profile-based function reordering (phase 2). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206070 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/cgraphunit.c | 40 +++++++++++++++++++++++++++++++++++++++- gcc/common.opt | 4 ++++ gcc/config/darwin.c | 26 +++++++++++++++++++------- gcc/doc/invoke.texi | 10 +++++++++- gcc/ipa-split.c | 4 ++++ gcc/ipa-utils.c | 5 +++++ gcc/lto/lto-partition.c | 30 +++++++++++++++++++++++++++--- gcc/lto/lto.c | 5 ++++- gcc/opts.c | 2 ++ gcc/predict.c | 12 ++++++++++++ gcc/varasm.c | 14 ++++++++++++-- 12 files changed, 148 insertions(+), 15 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 58613eef093..2c10c04358d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2013-12-18 Martin Liska + Jan Hubicka + + * cgraphunit.c (node_cmp): New function. + (expand_all_functions): Function ordering added. + * common.opt: New profile based function reordering flag introduced. + * lto-partition.c: Support for time profile added. + * lto.c: Likewise. + * predict.c (handle_missing_profiles): Time profile handled in + missing profiles. + 2013-12-17 Jakub Jelinek PR tree-optimization/59523 diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 44f3afd6e4a..28f51162bba 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -1831,6 +1831,23 @@ expand_function (struct cgraph_node *node) ipa_remove_all_references (&node->ref_list); } +/* Node comparer that is responsible for the order that corresponds + to time when a function was launched for the first time. */ + +static int +node_cmp (const void *pa, const void *pb) +{ + const struct cgraph_node *a = *(const struct cgraph_node * const *) pa; + const struct cgraph_node *b = *(const struct cgraph_node * const *) pb; + + /* Functions with time profile must be before these without profile. */ + if (!a->tp_first_run || !b->tp_first_run) + return a->tp_first_run - b->tp_first_run; + + return a->tp_first_run != b->tp_first_run + ? b->tp_first_run - a->tp_first_run + : b->order - a->order; +} /* Expand all functions that must be output. @@ -1847,6 +1864,7 @@ expand_all_functions (void) { struct cgraph_node *node; struct cgraph_node **order = XCNEWVEC (struct cgraph_node *, cgraph_n_nodes); + unsigned int expanded_func_count = 0, profiled_func_count = 0; int order_pos, new_order_pos = 0; int i; @@ -1859,20 +1877,39 @@ expand_all_functions (void) if (order[i]->process) order[new_order_pos++] = order[i]; + if (flag_profile_reorder_functions) + qsort (order, new_order_pos, sizeof (struct cgraph_node *), node_cmp); + for (i = new_order_pos - 1; i >= 0; i--) { node = order[i]; + if (node->process) { + expanded_func_count++; + if(node->tp_first_run) + profiled_func_count++; + + if (cgraph_dump_file) + fprintf (cgraph_dump_file, "Time profile order in expand_all_functions:%s:%d\n", node->asm_name (), node->tp_first_run); + node->process = 0; expand_function (node); } } + + if (dump_file) + fprintf (dump_file, "Expanded functions with time profile (%s):%u/%u\n", + main_input_filename, profiled_func_count, expanded_func_count); + + if (cgraph_dump_file && flag_profile_reorder_functions) + fprintf (cgraph_dump_file, "Expanded functions with time profile:%u/%u\n", + profiled_func_count, expanded_func_count); + cgraph_process_new_functions (); free_gimplify_stack (); free (order); - } /* This is used to sort the node types by the cgraph order number. */ @@ -2194,6 +2231,7 @@ compile (void) #endif cgraph_state = CGRAPH_STATE_EXPANSION; + if (!flag_toplevel_reorder) output_in_order (); else diff --git a/gcc/common.opt b/gcc/common.opt index 0cd1fddd4ad..ea323fdc9c3 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -1712,6 +1712,10 @@ fprofile-report Common Report Var(profile_report) Report on consistency of profile +fprofile-reorder-functions +Common Report Var(flag_profile_reorder_functions) +Enable function reordering that improves code placement + frandom-seed Common Var(common_deferred_options) Defer diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index ea056a9ab9d..4267c89dc06 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -3621,9 +3621,16 @@ darwin_function_section (tree decl, enum node_frequency freq, unlikely executed (this happens especially with function splitting where we can split away unnecessary parts of static constructors). */ if (startup && freq != NODE_FREQUENCY_UNLIKELY_EXECUTED) - return (weak) - ? darwin_sections[text_startup_coal_section] - : darwin_sections[text_startup_section]; + { + /* If we do have a profile or(and) LTO phase is executed, we do not need + these ELF section. */ + if (!in_lto_p || !flag_profile_values) + return (weak) + ? darwin_sections[text_startup_coal_section] + : darwin_sections[text_startup_section]; + else + return text_section; + } /* Similarly for exit. */ if (exit && freq != NODE_FREQUENCY_UNLIKELY_EXECUTED) @@ -3640,10 +3647,15 @@ darwin_function_section (tree decl, enum node_frequency freq, : darwin_sections[text_cold_section]; break; case NODE_FREQUENCY_HOT: - return (weak) - ? darwin_sections[text_hot_coal_section] - : darwin_sections[text_hot_section]; - break; + { + /* If we do have a profile or(and) LTO phase is executed, we do not need + these ELF section. */ + if (!in_lto_p || !flag_profile_values) + return (weak) + ? darwin_sections[text_hot_coal_section] + : darwin_sections[text_hot_section]; + break; + } default: return (weak) ? darwin_sections[text_coal_section] diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index b102e13b0e8..99ec1d2dce6 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -394,7 +394,7 @@ Objective-C and Objective-C++ Dialects}. -fprefetch-loop-arrays -fprofile-report @gol -fprofile-correction -fprofile-dir=@var{path} -fprofile-generate @gol -fprofile-generate=@var{path} @gol --fprofile-use -fprofile-use=@var{path} -fprofile-values @gol +-fprofile-use -fprofile-use=@var{path} -fprofile-values -fprofile-reorder-functions @gol -freciprocal-math -free -frename-registers -freorder-blocks @gol -freorder-blocks-and-partition -freorder-functions @gol -frerun-cse-after-loop -freschedule-modulo-scheduled-loops @gol @@ -9071,6 +9071,14 @@ from profiling values of expressions for usage in optimizations. Enabled with @option{-fprofile-generate} and @option{-fprofile-use}. +@item -fprofile-reoder-functions +@opindex fprofile-reorder-functions +Function reordering based on profile instrumentation collects +first time of execution of a function and orders these functions +in ascending order. + +Enabled with @option{-fprofile-use}. + @item -fvpt @opindex fvpt If combined with @option{-fprofile-arcs}, this option instructs the compiler diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c index 6d9334882ed..43758b6db7a 100644 --- a/gcc/ipa-split.c +++ b/gcc/ipa-split.c @@ -1234,6 +1234,10 @@ split_function (struct split_point *split_point) !split_part_return_p, split_point->split_bbs, split_point->entry_bb, "part"); + + /* Let's take a time profile for splitted function. */ + node->tp_first_run = cur_node->tp_first_run + 1; + /* For usual cloning it is enough to clear builtin only when signature changes. For partial inlining we however can not expect the part of builtin implementation to have same semantic as the whole. */ diff --git a/gcc/ipa-utils.c b/gcc/ipa-utils.c index 92972803ba0..66416268f57 100644 --- a/gcc/ipa-utils.c +++ b/gcc/ipa-utils.c @@ -655,6 +655,11 @@ ipa_merge_profiles (struct cgraph_node *dst, return; if (src->frequency < dst->frequency) src->frequency = dst->frequency; + + /* Time profiles are merged. */ + if (dst->tp_first_run > src->tp_first_run && src->tp_first_run) + dst->tp_first_run = src->tp_first_run; + if (!dst->count) return; if (cgraph_dump_file) diff --git a/gcc/lto/lto-partition.c b/gcc/lto/lto-partition.c index 5b46af9d907..5e0335ea5a4 100644 --- a/gcc/lto/lto-partition.c +++ b/gcc/lto/lto-partition.c @@ -286,9 +286,11 @@ add_symbol_to_partition (ltrans_partition part, symtab_node *node) Be lax about comdats; they may or may not be duplicated and we may end up in need to duplicate keyed comdat because it has unkeyed alias. */ + gcc_assert (get_symbol_class (node) == SYMBOL_DUPLICATE || DECL_COMDAT (node->decl) || !symbol_partitioned_p (node)); + add_symbol_to_partition_1 (part, node); } @@ -401,6 +403,25 @@ node_cmp (const void *pa, const void *pb) { const struct cgraph_node *a = *(const struct cgraph_node * const *) pa; const struct cgraph_node *b = *(const struct cgraph_node * const *) pb; + + /* Profile reorder flag enables function reordering based on first execution + of a function. All functions with profile are placed in ascending + order at the beginning. */ + + if (flag_profile_reorder_functions) + { + /* Functions with time profile are sorted in ascending order. */ + if (a->tp_first_run && b->tp_first_run) + return a->tp_first_run != b->tp_first_run + ? a->tp_first_run - b->tp_first_run + : a->order - b->order; + + /* Functions with time profile are sorted before the functions + that do not have the profile. */ + if (a->tp_first_run || b->tp_first_run) + return b->tp_first_run - a->tp_first_run; + } + return b->order - a->order; } @@ -487,10 +508,13 @@ lto_balanced_map (void) get better about minimizing the function bounday, but until that things works smoother if we order in source order. */ qsort (order, n_nodes, sizeof (struct cgraph_node *), node_cmp); + + if (cgraph_dump_file) + for(i = 0; i < n_nodes; i++) + fprintf (cgraph_dump_file, "Balanced map symbol order:%s:%u\n", order[i]->name (), order[i]->tp_first_run); + if (!flag_toplevel_reorder) { - qsort (order, n_nodes, sizeof (struct cgraph_node *), node_cmp); - FOR_EACH_VARIABLE (vnode) if (get_symbol_class (vnode) == SYMBOL_PARTITION) n_varpool_nodes++; @@ -855,7 +879,7 @@ may_need_named_section_p (lto_symtab_encoder_t encoder, symtab_node *node) of the same name in partition ENCODER (or in whole compilation unit if ENCODER is NULL) and if so, mangle the statics. Always mangle all conflicting statics, so we reduce changes of silently miscompiling - asm statemnets referring to them by symbol name. */ + asm statements referring to them by symbol name. */ static void rename_statics (lto_symtab_encoder_t encoder, symtab_node *node) diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index f322a0071d2..8e5eeb3d11f 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -2503,9 +2503,12 @@ lto_wpa_write_files (void) /* Sort partitions by size so small ones are compiled last. FIXME: Even when not reordering we may want to output one list for parallel make and other for final link command. */ - ltrans_partitions.qsort (flag_toplevel_reorder + + if (!flag_profile_reorder_functions || !flag_profile_use) + ltrans_partitions.qsort (flag_toplevel_reorder ? cmp_partitions_size : cmp_partitions_order); + for (i = 0; i < n_sets; i++) { size_t len; diff --git a/gcc/opts.c b/gcc/opts.c index 4cb2cdf4eff..5be03faa703 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -1710,6 +1710,8 @@ common_handle_option (struct gcc_options *opts, opts->x_flag_vect_cost_model = VECT_COST_MODEL_DYNAMIC; if (!opts_set->x_flag_tree_loop_distribute_patterns) opts->x_flag_tree_loop_distribute_patterns = value; + if (!opts_set->x_flag_profile_reorder_functions) + opts->x_flag_profile_reorder_functions = value; /* Indirect call profiling should do all useful transformations speculative devirtualization does. */ if (!opts_set->x_flag_devirtualize_speculatively diff --git a/gcc/predict.c b/gcc/predict.c index a5ad34f601a..1826a0699ec 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -2839,12 +2839,24 @@ handle_missing_profiles (void) { struct cgraph_edge *e; gcov_type call_count = 0; + gcov_type max_tp_first_run = 0; struct function *fn = DECL_STRUCT_FUNCTION (node->decl); if (node->count) continue; for (e = node->callers; e; e = e->next_caller) + { call_count += e->count; + + if (e->caller->tp_first_run > max_tp_first_run) + max_tp_first_run = e->caller->tp_first_run; + } + + /* If time profile is missing, let assign the maximum that comes from + caller functions. */ + if (!node->tp_first_run && max_tp_first_run) + node->tp_first_run = max_tp_first_run + 1; + if (call_count && fn && fn->cfg && (call_count * unlikely_count_fraction >= profile_info->runs)) diff --git a/gcc/varasm.c b/gcc/varasm.c index 5c5025ac5e6..1d2c03e6fbb 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -552,7 +552,14 @@ default_function_section (tree decl, enum node_frequency freq, unlikely executed (this happens especially with function splitting where we can split away unnecessary parts of static constructors. */ if (startup && freq != NODE_FREQUENCY_UNLIKELY_EXECUTED) - return get_named_text_section (decl, ".text.startup", NULL); + { + /* If we do have a profile or(and) LTO phase is executed, we do not need + these ELF section. */ + if (!in_lto_p || !flag_profile_values) + return get_named_text_section (decl, ".text.startup", NULL); + else + return NULL; + } /* Similarly for exit. */ if (exit && freq != NODE_FREQUENCY_UNLIKELY_EXECUTED) @@ -564,7 +571,10 @@ default_function_section (tree decl, enum node_frequency freq, case NODE_FREQUENCY_UNLIKELY_EXECUTED: return get_named_text_section (decl, ".text.unlikely", NULL); case NODE_FREQUENCY_HOT: - return get_named_text_section (decl, ".text.hot", NULL); + /* If we do have a profile or(and) LTO phase is executed, we do not need + these ELF section. */ + if (!in_lto_p || !flag_profile_values) + return get_named_text_section (decl, ".text.hot", NULL); default: return NULL; } -- cgit v1.2.1 From 3b649e5d0060c1933b68a753ae80c543acde7e64 Mon Sep 17 00:00:00 2001 From: tejohnson Date: Tue, 17 Dec 2013 22:35:38 +0000 Subject: 2013-12-17 Teresa Johnson PR gcov-profile/59527 * cfgrtl.c (fixup_reorder_chain): Handle a region-crossing branch, which can't be eliminated. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206072 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/cfgrtl.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2c10c04358d..a90f8af0d80 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-17 Teresa Johnson + + PR gcov-profile/59527 + * cfgrtl.c (fixup_reorder_chain): Handle a region-crossing + branch, which can't be eliminated. + 2013-12-18 Martin Liska Jan Hubicka diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 1a632498a64..18e65bd6730 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -3736,7 +3736,8 @@ fixup_reorder_chain (void) if (!e_fall) { gcc_assert (!onlyjump_p (bb_end_insn) - || returnjump_p (bb_end_insn)); + || returnjump_p (bb_end_insn) + || (e_taken->flags & EDGE_CROSSING)); emit_barrier_after (bb_end_insn); continue; } -- cgit v1.2.1 From 273da1f564227177d7deb06ab08fe79b1d7b3290 Mon Sep 17 00:00:00 2001 From: hubicka Date: Tue, 17 Dec 2013 23:41:41 +0000 Subject: PR middle-end/35535 * tree-vrp.c (extract_range_from_unary_expr_1): Handle OBJ_TYPE_REF. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206073 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/tree-vrp.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a90f8af0d80..6ce6a601181 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-17 Jan Hubicka + + PR middle-end/35535 + * tree-vrp.c (extract_range_from_unary_expr_1): Handle OBJ_TYPE_REF. + 2013-12-17 Teresa Johnson PR gcov-profile/59527 diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 4de7c4d9199..d10abe953e4 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -3202,9 +3202,9 @@ extract_range_from_unary_expr_1 (value_range_t *vr, } /* Handle operations that we express in terms of others. */ - if (code == PAREN_EXPR) + if (code == PAREN_EXPR || code == OBJ_TYPE_REF) { - /* PAREN_EXPR is a simple copy. */ + /* PAREN_EXPR and OBJ_TYPE_REF are simple copies. */ copy_value_range (vr, &vr0); return; } -- cgit v1.2.1 From 0329fcdbd2bae83fcca728df14a497d8193e976a Mon Sep 17 00:00:00 2001 From: hubicka Date: Tue, 17 Dec 2013 23:43:22 +0000 Subject: PR middle-end/35535 * gimple-fold.c (fold_gimple_assign): Attempt to devirtualize OBJ_TYPE_REF. (gimple_fold_stmt_to_constant_1): Bypass OBJ_TYPE_REF wrappers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206074 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/gimple-fold.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6ce6a601181..2441b102b87 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-12-17 Jan Hubicka + + PR middle-end/35535 + * gimple-fold.c (fold_gimple_assign): Attempt to devirtualize + OBJ_TYPE_REF. + (gimple_fold_stmt_to_constant_1): Bypass OBJ_TYPE_REF wrappers. + 2013-12-17 Jan Hubicka PR middle-end/35535 diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 767c869a476..3b6fc571c40 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -374,6 +374,30 @@ fold_gimple_assign (gimple_stmt_iterator *si) if (REFERENCE_CLASS_P (rhs)) return maybe_fold_reference (rhs, false); + else if (TREE_CODE (rhs) == OBJ_TYPE_REF) + { + tree val = OBJ_TYPE_REF_EXPR (rhs); + if (is_gimple_min_invariant (val)) + return val; + else if (flag_devirtualize && virtual_method_call_p (val)) + { + bool final; + vec targets + = possible_polymorphic_call_targets (val, &final); + if (final && targets.length () <= 1) + { + tree fndecl; + if (targets.length () == 1) + fndecl = targets[0]->decl; + else + fndecl = builtin_decl_implicit (BUILT_IN_UNREACHABLE); + val = fold_convert (TREE_TYPE (val), fndecl); + STRIP_USELESS_TYPE_CONVERSION (val); + return val; + } + } + + } else if (TREE_CODE (rhs) == ADDR_EXPR) { tree ref = TREE_OPERAND (rhs, 0); @@ -2525,6 +2549,13 @@ gimple_fold_stmt_to_constant_1 (gimple stmt, tree (*valueize) (tree)) return build_vector (TREE_TYPE (rhs), vec); } + if (subcode == OBJ_TYPE_REF) + { + tree val = (*valueize) (OBJ_TYPE_REF_EXPR (rhs)); + /* If callee is constant, we can fold away the wrapper. */ + if (is_gimple_min_invariant (val)) + return val; + } if (kind == tcc_reference) { -- cgit v1.2.1 From 8599dc90d986b768c2b70f56118258a12028e22d Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 18 Dec 2013 00:16:52 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206077 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 2a0220d811f..ff3ac57569b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131217 +20131218 -- cgit v1.2.1 From c3d9b08926175f0b9c9623c3a3f16e80dd4e8b89 Mon Sep 17 00:00:00 2001 From: kyukhin Date: Wed, 18 Dec 2013 07:45:29 +0000 Subject: * config/i386/sse.md (avx512f_cmp3): Extend to support masking. (avx512f_ucmp3): Ditto. (avx512f_eq3): Ditto. (avx512f_gt3): Ditto. (avx512f_testm3): Ditto. (avx512f_testnm3): Ditto. * config/i386/subst.md (SUBST_S): New. (mask_scalar_merge_name): Ditto. (mask_scalar_merge_operand3): Ditto. (mask_scalar_merge_operand4): Ditto. (mask_scalar_merge): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206080 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 22 ++++++++++++++++++++++ gcc/config/i386/sse.md | 26 +++++++++++++------------- gcc/config/i386/subst.md | 16 ++++++++++++++++ 3 files changed, 51 insertions(+), 13 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2441b102b87..8830abc53d3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,25 @@ +2013-11-13 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (avx512f_cmp3): Extend to support masking. + (avx512f_ucmp3): Ditto. + (avx512f_eq3): Ditto. + (avx512f_gt3): Ditto. + (avx512f_testm3): Ditto. + (avx512f_testnm3): Ditto. + * config/i386/subst.md (SUBST_S): New. + (mask_scalar_merge_name): Ditto. + (mask_scalar_merge_operand3): Ditto. + (mask_scalar_merge_operand4): Ditto. + (mask_scalar_merge): Ditto. + 2013-12-17 Jan Hubicka PR middle-end/35535 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 30895c67c09..46842d29551 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -2099,7 +2099,7 @@ [(V16SF "const_0_to_31_operand") (V8DF "const_0_to_31_operand") (V16SI "const_0_to_7_operand") (V8DI "const_0_to_7_operand")]) -(define_insn "avx512f_cmp3" +(define_insn "avx512f_cmp3" [(set (match_operand: 0 "register_operand" "=k") (unspec: [(match_operand:VI48F_512 1 "register_operand" "v") @@ -2107,13 +2107,13 @@ (match_operand:SI 3 "" "n")] UNSPEC_PCMP))] "TARGET_AVX512F" - "vcmp\t{%3, %2, %1, %0|%0, %1, %2, %3}" + "vcmp\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssecmp") (set_attr "length_immediate" "1") (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_ucmp3" +(define_insn "avx512f_ucmp3" [(set (match_operand: 0 "register_operand" "=k") (unspec: [(match_operand:VI48_512 1 "register_operand" "v") @@ -2121,7 +2121,7 @@ (match_operand:SI 3 "const_0_to_7_operand" "n")] UNSPEC_UNSIGNED_PCMP))] "TARGET_AVX512F" - "vpcmpu\t{%3, %2, %1, %0|%0, %1, %2, %3}" + "vpcmpu\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssecmp") (set_attr "length_immediate" "1") (set_attr "prefix" "evex") @@ -8360,7 +8360,7 @@ (set_attr "prefix" "vex") (set_attr "mode" "OI")]) -(define_expand "avx512f_eq3" +(define_expand "avx512f_eq3" [(set (match_operand: 0 "register_operand") (unspec: [(match_operand:VI48_512 1 "register_operand") @@ -8369,14 +8369,14 @@ "TARGET_AVX512F" "ix86_fixup_binary_operands_no_copy (EQ, mode, operands);") -(define_insn "avx512f_eq3_1" +(define_insn "avx512f_eq3_1" [(set (match_operand: 0 "register_operand" "=k") (unspec: [(match_operand:VI48_512 1 "register_operand" "%v") (match_operand:VI48_512 2 "nonimmediate_operand" "vm")] UNSPEC_MASKED_EQ))] "TARGET_AVX512F && ix86_binary_operator_ok (EQ, mode, operands)" - "vpcmpeq\t{%2, %1, %0|%0, %1, %2}" + "vpcmpeq\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ssecmp") (set_attr "prefix_extra" "1") (set_attr "prefix" "evex") @@ -8456,13 +8456,13 @@ (set_attr "prefix" "vex") (set_attr "mode" "OI")]) -(define_insn "avx512f_gt3" +(define_insn "avx512f_gt3" [(set (match_operand: 0 "register_operand" "=k") (unspec: [(match_operand:VI48_512 1 "register_operand" "v") (match_operand:VI48_512 2 "nonimmediate_operand" "vm")] UNSPEC_MASKED_GT))] "TARGET_AVX512F" - "vpcmpgt\t{%2, %1, %0|%0, %1, %2}" + "vpcmpgt\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ssecmp") (set_attr "prefix_extra" "1") (set_attr "prefix" "evex") @@ -8856,25 +8856,25 @@ ] (const_string "")))]) -(define_insn "avx512f_testm3" +(define_insn "avx512f_testm3" [(set (match_operand: 0 "register_operand" "=k") (unspec: [(match_operand:VI48_512 1 "register_operand" "v") (match_operand:VI48_512 2 "nonimmediate_operand" "vm")] UNSPEC_TESTM))] "TARGET_AVX512F" - "vptestm\t{%2, %1, %0|%0, %1, %2}" + "vptestm\t{%2, %1, %0|%0, %1, %2}" [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_testnm3" +(define_insn "avx512f_testnm3" [(set (match_operand: 0 "register_operand" "=k") (unspec: [(match_operand:VI48_512 1 "register_operand" "v") (match_operand:VI48_512 2 "nonimmediate_operand" "vm")] UNSPEC_TESTNM))] "TARGET_AVX512CD" - "%vptestnm\t{%2, %1, %0|%0, %1, %2}" + "%vptestnm\t{%2, %1, %0|%0, %1, %2}" [(set_attr "prefix" "evex") (set_attr "mode" "")]) diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md index 6b45d058f22..0fdef6d77cc 100644 --- a/gcc/config/i386/subst.md +++ b/gcc/config/i386/subst.md @@ -27,6 +27,9 @@ V16SF V8SF V4SF V8DF V4DF V2DF]) +(define_mode_iterator SUBST_S + [QI HI SI DI]) + (define_subst_attr "mask_name" "mask" "" "_mask") (define_subst_attr "mask_applied" "mask" "false" "true") (define_subst_attr "mask_operand2" "mask" "" "%{%3%}%N2") @@ -54,3 +57,16 @@ (match_dup 1) (match_operand:SUBST_V 2 "vector_move_operand" "0C") (match_operand: 3 "register_operand" "k")))]) + +(define_subst_attr "mask_scalar_merge_name" "mask_scalar_merge" "" "_mask") +(define_subst_attr "mask_scalar_merge_operand3" "mask_scalar_merge" "" "%{%3%}") +(define_subst_attr "mask_scalar_merge_operand4" "mask_scalar_merge" "" "%{%4%}") + +(define_subst "mask_scalar_merge" + [(set (match_operand:SUBST_S 0) + (match_operand:SUBST_S 1))] + "TARGET_AVX512F" + [(set (match_dup 0) + (and:SUBST_S + (match_dup 1) + (match_operand:SUBST_S 3 "register_operand" "k")))]) -- cgit v1.2.1 From 9a5ea1d5984652dda5998268c6bd79600ba708ba Mon Sep 17 00:00:00 2001 From: kyukhin Date: Wed, 18 Dec 2013 08:18:22 +0000 Subject: * config/i386/sse.md (*fma_fmadd_): Extend to support masking. (*fma_fmsub_): Ditto. (*fma_fnmadd_): Ditto. (*fma_fnmsub_): Ditto. (*fma_fmaddsub_): Ditto. (*fma_fmsubadd_): Ditto. (avx512f_vternlog): Ditto. (avx512f_fixupimm): Ditto. (avx512f_sfixupimm): Ditto. (avx512f_vpermi2var3): Ditto. (avx512f_vpermt2var3): Ditto. (avx512f_fmaddsub__maskz): New. (avx512f_vternlog_maskz): Ditto. (avx512f_fixupimm_maskz): Ditto. (avx512f_sfixupimm_maskz): Ditto. (avx512f_vpermi2var3_maskz): Ditto. (avx512f_vpermt2var3_maskz): Ditto. (avx512f_expand_maskz): Ditto. * config/i386/subst.md (sd_maskz_name): Ditto. (sd_mask_op4): Ditto. (sd_mask_op5): Ditto. (sd_mask_codefor): Ditto. (sd_mask_mode512bit_condition): Ditto. (sd): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206081 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 37 +++++++++- gcc/config/i386/sse.md | 178 ++++++++++++++++++++++++++++++++++++----------- gcc/config/i386/subst.md | 17 +++++ 3 files changed, 191 insertions(+), 41 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8830abc53d3..7bf07cc56f0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,39 @@ -2013-11-13 Alexander Ivchenko +2013-12-18 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (*fma_fmadd_): Extend to support masking. + (*fma_fmsub_): Ditto. + (*fma_fnmadd_): Ditto. + (*fma_fnmsub_): Ditto. + (*fma_fmaddsub_): Ditto. + (*fma_fmsubadd_): Ditto. + (avx512f_vternlog): Ditto. + (avx512f_fixupimm): Ditto. + (avx512f_sfixupimm): Ditto. + (avx512f_vpermi2var3): Ditto. + (avx512f_vpermt2var3): Ditto. + (avx512f_fmaddsub__maskz): New. + (avx512f_vternlog_maskz): Ditto. + (avx512f_fixupimm_maskz): Ditto. + (avx512f_sfixupimm_maskz): Ditto. + (avx512f_vpermi2var3_maskz): Ditto. + (avx512f_vpermt2var3_maskz): Ditto. + (avx512f_expand_maskz): Ditto. + * config/i386/subst.md (sd_maskz_name): Ditto. + (sd_mask_op4): Ditto. + (sd_mask_op5): Ditto. + (sd_mask_codefor): Ditto. + (sd_mask_mode512bit_condition): Ditto. + (sd): Ditto. + +2013-12-18 Alexander Ivchenko Maxim Kuznetsov Sergey Lega Anna Tikhonova diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 46842d29551..adedf44fc31 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -2698,17 +2698,17 @@ (match_operand:FMAMODE 3 "nonimmediate_operand")))] "") -(define_insn "*fma_fmadd_" +(define_insn "fma_fmadd_" [(set (match_operand:FMAMODE 0 "register_operand" "=v,v,v,x,x") (fma:FMAMODE (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0, v, x,x") (match_operand:FMAMODE 2 "nonimmediate_operand" "vm, v,vm, x,m") (match_operand:FMAMODE 3 "nonimmediate_operand" " v,vm, 0,xm,x")))] - "" + "" "@ - vfmadd132\t{%2, %3, %0|%0, %3, %2} - vfmadd213\t{%3, %2, %0|%0, %2, %3} - vfmadd231\t{%2, %1, %0|%0, %1, %2} + vfmadd132\t{%2, %3, %0|%0, %3, %2} + vfmadd213\t{%3, %2, %0|%0, %2, %3} + vfmadd231\t{%2, %1, %0|%0, %1, %2} vfmadd\t{%3, %2, %1, %0|%0, %1, %2, %3} vfmadd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") @@ -2747,18 +2747,18 @@ (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "*fma_fmsub_" +(define_insn "fma_fmsub_" [(set (match_operand:FMAMODE 0 "register_operand" "=v,v,v,x,x") (fma:FMAMODE (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0, v, x,x") (match_operand:FMAMODE 2 "nonimmediate_operand" "vm, v,vm, x,m") (neg:FMAMODE (match_operand:FMAMODE 3 "nonimmediate_operand" " v,vm, 0,xm,x"))))] - "" + "" "@ - vfmsub132\t{%2, %3, %0|%0, %3, %2} - vfmsub213\t{%3, %2, %0|%0, %2, %3} - vfmsub231\t{%2, %1, %0|%0, %1, %2} + vfmsub132\t{%2, %3, %0|%0, %3, %2} + vfmsub213\t{%3, %2, %0|%0, %2, %3} + vfmsub231\t{%2, %1, %0|%0, %1, %2} vfmsub\t{%3, %2, %1, %0|%0, %1, %2, %3} vfmsub\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") @@ -2799,18 +2799,18 @@ (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "*fma_fnmadd_" +(define_insn "fma_fnmadd_" [(set (match_operand:FMAMODE 0 "register_operand" "=v,v,v,x,x") (fma:FMAMODE (neg:FMAMODE (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0, v, x,x")) (match_operand:FMAMODE 2 "nonimmediate_operand" "vm, v,vm, x,m") (match_operand:FMAMODE 3 "nonimmediate_operand" " v,vm, 0,xm,x")))] - "" + "" "@ - vfnmadd132\t{%2, %3, %0|%0, %3, %2} - vfnmadd213\t{%3, %2, %0|%0, %2, %3} - vfnmadd231\t{%2, %1, %0|%0, %1, %2} + vfnmadd132\t{%2, %3, %0|%0, %3, %2} + vfnmadd213\t{%3, %2, %0|%0, %2, %3} + vfnmadd231\t{%2, %1, %0|%0, %1, %2} vfnmadd\t{%3, %2, %1, %0|%0, %1, %2, %3} vfnmadd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") @@ -2851,7 +2851,7 @@ (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "*fma_fnmsub_" +(define_insn "fma_fnmsub_" [(set (match_operand:FMAMODE 0 "register_operand" "=v,v,v,x,x") (fma:FMAMODE (neg:FMAMODE @@ -2859,11 +2859,11 @@ (match_operand:FMAMODE 2 "nonimmediate_operand" "vm, v,vm, x,m") (neg:FMAMODE (match_operand:FMAMODE 3 "nonimmediate_operand" " v,vm, 0,xm,x"))))] - "" + "" "@ - vfnmsub132\t{%2, %3, %0|%0, %3, %2} - vfnmsub213\t{%3, %2, %0|%0, %2, %3} - vfnmsub231\t{%2, %1, %0|%0, %1, %2} + vfnmsub132\t{%2, %3, %0|%0, %3, %2} + vfnmsub213\t{%3, %2, %0|%0, %2, %3} + vfnmsub231\t{%2, %1, %0|%0, %1, %2} vfnmsub\t{%3, %2, %1, %0|%0, %1, %2, %3} vfnmsub\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") @@ -2926,18 +2926,32 @@ UNSPEC_FMADDSUB))] "TARGET_FMA || TARGET_FMA4 || TARGET_AVX512F") -(define_insn "*fma_fmaddsub_" +(define_expand "avx512f_fmaddsub__maskz" + [(match_operand:VF_512 0 "register_operand") + (match_operand:VF_512 1 "nonimmediate_operand") + (match_operand:VF_512 2 "nonimmediate_operand") + (match_operand:VF_512 3 "nonimmediate_operand") + (match_operand: 4 "register_operand")] + "TARGET_AVX512F" +{ + emit_insn (gen_fma_fmaddsub__maskz_1 ( + operands[0], operands[1], operands[2], operands[3], + CONST0_RTX (mode), operands[4])); + DONE; +}) + +(define_insn "fma_fmaddsub_" [(set (match_operand:VF 0 "register_operand" "=v,v,v,x,x") (unspec:VF [(match_operand:VF 1 "nonimmediate_operand" "%0, 0, v, x,x") (match_operand:VF 2 "nonimmediate_operand" "vm, v,vm, x,m") (match_operand:VF 3 "nonimmediate_operand" " v,vm, 0,xm,x")] UNSPEC_FMADDSUB))] - "(TARGET_FMA || TARGET_FMA4 || TARGET_AVX512F)" + "(TARGET_FMA || TARGET_FMA4 || TARGET_AVX512F) && " "@ - vfmaddsub132\t{%2, %3, %0|%0, %3, %2} - vfmaddsub213\t{%3, %2, %0|%0, %2, %3} - vfmaddsub231\t{%2, %1, %0|%0, %1, %2} + vfmaddsub132\t{%2, %3, %0|%0, %3, %2} + vfmaddsub213\t{%3, %2, %0|%0, %2, %3} + vfmaddsub231\t{%2, %1, %0|%0, %1, %2} vfmaddsub\t{%3, %2, %1, %0|%0, %1, %2, %3} vfmaddsub\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") @@ -2978,7 +2992,7 @@ (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "*fma_fmsubadd_" +(define_insn "fma_fmsubadd_" [(set (match_operand:VF 0 "register_operand" "=v,v,v,x,x") (unspec:VF [(match_operand:VF 1 "nonimmediate_operand" "%0, 0, v, x,x") @@ -2986,11 +3000,11 @@ (neg:VF (match_operand:VF 3 "nonimmediate_operand" " v,vm, 0,xm,x"))] UNSPEC_FMADDSUB))] - "(TARGET_FMA || TARGET_FMA4 || TARGET_AVX512F)" + "(TARGET_FMA || TARGET_FMA4 || TARGET_AVX512F) && " "@ - vfmsubadd132\t{%2, %3, %0|%0, %3, %2} - vfmsubadd213\t{%3, %2, %0|%0, %2, %3} - vfmsubadd231\t{%2, %1, %0|%0, %1, %2} + vfmsubadd132\t{%2, %3, %0|%0, %3, %2} + vfmsubadd213\t{%3, %2, %0|%0, %2, %3} + vfmsubadd231\t{%2, %1, %0|%0, %1, %2} vfmsubadd\t{%3, %2, %1, %0|%0, %1, %2, %3} vfmsubadd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") @@ -6443,7 +6457,22 @@ [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_vternlog" +(define_expand "avx512f_vternlog_maskz" + [(match_operand:VI48_512 0 "register_operand") + (match_operand:VI48_512 1 "register_operand") + (match_operand:VI48_512 2 "register_operand") + (match_operand:VI48_512 3 "nonimmediate_operand") + (match_operand:SI 4 "const_0_to_255_operand") + (match_operand: 5 "register_operand")] + "TARGET_AVX512F" +{ + emit_insn (gen_avx512f_vternlog_maskz_1 ( + operands[0], operands[1], operands[2], operands[3], + operands[4], CONST0_RTX (mode), operands[5])); + DONE; +}) + +(define_insn "avx512f_vternlog" [(set (match_operand:VI48_512 0 "register_operand" "=v") (unspec:VI48_512 [(match_operand:VI48_512 1 "register_operand" "0") @@ -6452,7 +6481,7 @@ (match_operand:SI 4 "const_0_to_255_operand")] UNSPEC_VTERNLOG))] "TARGET_AVX512F" - "vpternlog\t{%4, %3, %2, %0|%0, %2, %3, %4}" + "vpternlog\t{%4, %3, %2, %0|%0, %2, %3, %4}" [(set_attr "type" "sselog") (set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -6539,7 +6568,23 @@ DONE; }) -(define_insn "avx512f_fixupimm" + +(define_expand "avx512f_fixupimm_maskz" + [(match_operand:VF_512 0 "register_operand") + (match_operand:VF_512 1 "register_operand") + (match_operand:VF_512 2 "register_operand") + (match_operand: 3 "nonimmediate_operand") + (match_operand:SI 4 "const_0_to_255_operand") + (match_operand: 5 "register_operand")] + "TARGET_AVX512F" +{ + emit_insn (gen_avx512f_fixupimm_maskz_1 ( + operands[0], operands[1], operands[2], operands[3], + operands[4], CONST0_RTX (mode), operands[5])); + DONE; +}) + +(define_insn "avx512f_fixupimm" [(set (match_operand:VF_512 0 "register_operand" "=v") (unspec:VF_512 [(match_operand:VF_512 1 "register_operand" "0") @@ -6548,7 +6593,7 @@ (match_operand:SI 4 "const_0_to_255_operand")] UNSPEC_FIXUPIMM))] "TARGET_AVX512F" - "vfixupimm\t{%4, %3, %2, %0|%0, %2, %3, %4}"; + "vfixupimm\t{%4, %3, %2, %0|%0, %2, %3, %4}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -6568,7 +6613,22 @@ [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_sfixupimm" +(define_expand "avx512f_sfixupimm_maskz" + [(match_operand:VF_128 0 "register_operand") + (match_operand:VF_128 1 "register_operand") + (match_operand:VF_128 2 "register_operand") + (match_operand: 3 "nonimmediate_operand") + (match_operand:SI 4 "const_0_to_255_operand") + (match_operand: 5 "register_operand")] + "TARGET_AVX512F" +{ + emit_insn (gen_avx512f_sfixupimm_maskz_1 ( + operands[0], operands[1], operands[2], operands[3], + operands[4], CONST0_RTX (mode), operands[5])); + DONE; +}) + +(define_insn "avx512f_sfixupimm" [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (unspec:VF_128 @@ -6580,7 +6640,7 @@ (match_dup 1) (const_int 1)))] "TARGET_AVX512F" - "vfixupimm\t{%4, %3, %2, %0|%0, %2, %3, %4}"; + "vfixupimm\t{%4, %3, %2, %0|%0, %2, %3, %4}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -13892,7 +13952,21 @@ (set_attr "prefix" "") (set_attr "mode" "")]) -(define_insn "avx512f_vpermi2var3" +(define_expand "avx512f_vpermi2var3_maskz" + [(match_operand:VI48F_512 0 "register_operand" "=v") + (match_operand:VI48F_512 1 "register_operand" "v") + (match_operand: 2 "register_operand" "0") + (match_operand:VI48F_512 3 "nonimmediate_operand" "vm") + (match_operand: 4 "register_operand" "k")] + "TARGET_AVX512F" +{ + emit_insn (gen_avx512f_vpermi2var3_maskz_1 ( + operands[0], operands[1], operands[2], operands[3], + CONST0_RTX (mode), operands[4])); + DONE; +}) + +(define_insn "avx512f_vpermi2var3" [(set (match_operand:VI48F_512 0 "register_operand" "=v") (unspec:VI48F_512 [(match_operand:VI48F_512 1 "register_operand" "v") @@ -13900,7 +13974,7 @@ (match_operand:VI48F_512 3 "nonimmediate_operand" "vm")] UNSPEC_VPERMI2))] "TARGET_AVX512F" - "vpermi2\t{%3, %1, %0|%0, %1, %3}" + "vpermi2\t{%3, %1, %0|%0, %1, %3}" [(set_attr "type" "sselog") (set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -13921,7 +13995,21 @@ (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_vpermt2var3" +(define_expand "avx512f_vpermt2var3_maskz" + [(match_operand:VI48F_512 0 "register_operand" "=v") + (match_operand: 1 "register_operand" "v") + (match_operand:VI48F_512 2 "register_operand" "0") + (match_operand:VI48F_512 3 "nonimmediate_operand" "vm") + (match_operand: 4 "register_operand" "k")] + "TARGET_AVX512F" +{ + emit_insn (gen_avx512f_vpermt2var3_maskz_1 ( + operands[0], operands[1], operands[2], operands[3], + CONST0_RTX (mode), operands[4])); + DONE; +}) + +(define_insn "avx512f_vpermt2var3" [(set (match_operand:VI48F_512 0 "register_operand" "=v") (unspec:VI48F_512 [(match_operand: 1 "register_operand" "v") @@ -13929,7 +14017,7 @@ (match_operand:VI48F_512 3 "nonimmediate_operand" "vm")] UNSPEC_VPERMT2))] "TARGET_AVX512F" - "vpermt2\t{%3, %1, %0|%0, %1, %3}" + "vpermt2\t{%3, %1, %0|%0, %1, %3}" [(set_attr "type" "sselog") (set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -14938,6 +15026,16 @@ (set_attr "memory" "store") (set_attr "mode" "")]) +(define_expand "avx512f_expand_maskz" + [(set (match_operand:VI48F_512 0 "register_operand") + (unspec:VI48F_512 + [(match_operand:VI48F_512 1 "nonimmediate_operand") + (match_operand:VI48F_512 2 "vector_move_operand") + (match_operand: 3 "register_operand")] + UNSPEC_EXPAND))] + "TARGET_AVX512F" + "operands[2] = CONST0_RTX (mode);") + (define_insn "avx512f_expand_mask" [(set (match_operand:VI48F_512 0 "register_operand" "=v,v") (unspec:VI48F_512 diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md index 0fdef6d77cc..594dc438922 100644 --- a/gcc/config/i386/subst.md +++ b/gcc/config/i386/subst.md @@ -70,3 +70,20 @@ (and:SUBST_S (match_dup 1) (match_operand:SUBST_S 3 "register_operand" "k")))]) + +(define_subst_attr "sd_maskz_name" "sd" "" "_maskz_1") +(define_subst_attr "sd_mask_op4" "sd" "" "%{%5%}%N4") +(define_subst_attr "sd_mask_op5" "sd" "" "%{%6%}%N5") +(define_subst_attr "sd_mask_codefor" "sd" "*" "") +(define_subst_attr "sd_mask_mode512bit_condition" "sd" "1" "(GET_MODE_SIZE (GET_MODE (operands[0])) == 64)") + +(define_subst "sd" + [(set (match_operand:SUBST_V 0) + (match_operand:SUBST_V 1))] + "" + [(set (match_dup 0) + (vec_merge:SUBST_V + (match_dup 1) + (match_operand:SUBST_V 2 "const0_operand" "C") + (match_operand: 3 "register_operand" "k"))) +]) -- cgit v1.2.1 From c2b38fc8ca1cdd3cbbed478e02b49a7431df8612 Mon Sep 17 00:00:00 2001 From: hubicka Date: Wed, 18 Dec 2013 08:34:29 +0000 Subject: Fix PR number. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206083 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7bf07cc56f0..d4f1196c6dd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -57,14 +57,14 @@ 2013-12-17 Jan Hubicka - PR middle-end/35535 + PR middle-end/35545 * gimple-fold.c (fold_gimple_assign): Attempt to devirtualize OBJ_TYPE_REF. (gimple_fold_stmt_to_constant_1): Bypass OBJ_TYPE_REF wrappers. 2013-12-17 Jan Hubicka - PR middle-end/35535 + PR middle-end/35545 * tree-vrp.c (extract_range_from_unary_expr_1): Handle OBJ_TYPE_REF. 2013-12-17 Teresa Johnson -- cgit v1.2.1 From fad67b809178902d4297c954ee244fd43a50ef33 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Wed, 18 Dec 2013 10:34:00 +0000 Subject: PR debug/59418 * dwarf2cfi.c (dwarf2out_frame_debug_cfa_offset): Fix comment and tidy. (dwarf2out_frame_debug_cfa_restore): Handle TARGET_DWARF_REGISTER_SPAN. (dwarf2out_frame_debug_expr): Tidy. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206084 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/dwarf2cfi.c | 46 +++++++++++++++++++++++++++++------------- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/pr59418.c | 35 ++++++++++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 14 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr59418.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d4f1196c6dd..52a1998cf36 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-12-18 Eric Botcazou + + PR debug/59418 + * dwarf2cfi.c (dwarf2out_frame_debug_cfa_offset): Fix comment and tidy. + (dwarf2out_frame_debug_cfa_restore): Handle TARGET_DWARF_REGISTER_SPAN. + (dwarf2out_frame_debug_expr): Tidy. + 2013-12-18 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c index 330836b66e8..77152990ea5 100644 --- a/gcc/dwarf2cfi.c +++ b/gcc/dwarf2cfi.c @@ -1149,18 +1149,15 @@ dwarf2out_frame_debug_cfa_offset (rtx set) else { /* We have a PARALLEL describing where the contents of SRC live. - Queue register saves for each piece of the PARALLEL. */ - int par_index; - int limit; + Adjust the offset for each piece of the PARALLEL. */ HOST_WIDE_INT span_offset = offset; gcc_assert (GET_CODE (span) == PARALLEL); - limit = XVECLEN (span, 0); - for (par_index = 0; par_index < limit; par_index++) + const int par_len = XVECLEN (span, 0); + for (int par_index = 0; par_index < par_len; par_index++) { rtx elem = XVECEXP (span, 0, par_index); - sregno = dwf_regno (src); reg_save (sregno, INVALID_REGNUM, span_offset); span_offset += GET_MODE_SIZE (GET_MODE (elem)); @@ -1229,10 +1226,31 @@ dwarf2out_frame_debug_cfa_expression (rtx set) static void dwarf2out_frame_debug_cfa_restore (rtx reg) { - unsigned int regno = dwf_regno (reg); + gcc_assert (REG_P (reg)); + + rtx span = targetm.dwarf_register_span (reg); + if (!span) + { + unsigned int regno = dwf_regno (reg); + add_cfi_restore (regno); + update_row_reg_save (cur_row, regno, NULL); + } + else + { + /* We have a PARALLEL describing where the contents of REG live. + Restore the register for each piece of the PARALLEL. */ + gcc_assert (GET_CODE (span) == PARALLEL); - add_cfi_restore (regno); - update_row_reg_save (cur_row, regno, NULL); + const int par_len = XVECLEN (span, 0); + for (int par_index = 0; par_index < par_len; par_index++) + { + reg = XVECEXP (span, 0, par_index); + gcc_assert (REG_P (reg)); + unsigned int regno = dwf_regno (reg); + add_cfi_restore (regno); + update_row_reg_save (cur_row, regno, NULL); + } + } } /* A subroutine of dwarf2out_frame_debug, process a REG_CFA_WINDOW_SAVE. @@ -1884,23 +1902,23 @@ dwarf2out_frame_debug_expr (rtx expr) } } - span = NULL; if (REG_P (src)) span = targetm.dwarf_register_span (src); + else + span = NULL; + if (!span) queue_reg_save (src, NULL_RTX, offset); else { /* We have a PARALLEL describing where the contents of SRC live. Queue register saves for each piece of the PARALLEL. */ - int par_index; - int limit; HOST_WIDE_INT span_offset = offset; gcc_assert (GET_CODE (span) == PARALLEL); - limit = XVECLEN (span, 0); - for (par_index = 0; par_index < limit; par_index++) + const int par_len = XVECLEN (span, 0); + for (int par_index = 0; par_index < par_len; par_index++) { rtx elem = XVECEXP (span, 0, par_index); queue_reg_save (elem, NULL_RTX, span_offset); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 29110efb85b..f192b5d3526 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-18 Eric Botcazou + + * gcc.dg/pr59418.c: New test. + 2013-12-17 Jakub Jelinek PR tree-optimization/59523 diff --git a/gcc/testsuite/gcc.dg/pr59418.c b/gcc/testsuite/gcc.dg/pr59418.c new file mode 100644 index 00000000000..114c1d383c4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr59418.c @@ -0,0 +1,35 @@ +/* PR debug/59418 */ +/* Reported by Ryan Mansfield */ + +/* { dg-do compile } */ +/* { dg-options "-Os -g" } */ +/* { dg-options "-march=armv7-a -mfloat-abi=hard -Os -g" { target arm*-*-* } } */ + +extern int printf (const char *__format, ...); + +void +foo (const char *pptr, int caplen) +{ + int type; + const char *tptr; + if (caplen < 4) + { + (void) printf ("foo"); + return; + } + while (tptr < pptr) + { + switch (type) + { + case 0x01: + printf (""); + case 0x0b: + printf (""); + case 0x0e: + printf (""); + case 0x10: + printf ("%1.2fW", bar (tptr, caplen) / 1000.0); + } + } + printf ("foo"); +} -- cgit v1.2.1 From bcfea5cdc96ca6a184060964a71d866bdd03737a Mon Sep 17 00:00:00 2001 From: ktkachov Date: Wed, 18 Dec 2013 13:25:58 +0000 Subject: 2013-12-18 James Greenhalgh Kyrylo Tkachov * config/arm/t-aprofile: Add cortex-a15.cortex-a7, cortex-a12, cortex-a57, cortex-a57.cortex-a53. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206086 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/arm/t-aprofile | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 52a1998cf36..f7164e8de05 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-18 James Greenhalgh + Kyrylo Tkachov + + * config/arm/t-aprofile: Add cortex-a15.cortex-a7, cortex-a12, + cortex-a57, cortex-a57.cortex-a53. + 2013-12-18 Eric Botcazou PR debug/59418 diff --git a/gcc/config/arm/t-aprofile b/gcc/config/arm/t-aprofile index ce45d4d210a..5c5ee0c2589 100644 --- a/gcc/config/arm/t-aprofile +++ b/gcc/config/arm/t-aprofile @@ -83,8 +83,11 @@ MULTILIB_EXCEPTIONS += *mcpu=cortex-a7/*mfpu=neon-fp-armv8* MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a8 MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a9 MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a5 -MULTILIB_MATCHES += mcpu?cortex-a7=mcpu?cortex-a15 +MULTILIB_MATCHES += mcpu?cortex-a7=mcpu?cortex-a15=mcpu?cortex-a12 +MULTILIB_MATCHES += mcpu?cortex-a7=mcpu?cortex-a15.cortex-a7 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a53 +MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57 +MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57.cortex-a53 # FPU matches MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3 -- cgit v1.2.1 From e3b4a69679448b237b79654c78afaac7663ff46f Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Wed, 18 Dec 2013 15:15:03 +0000 Subject: * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Fix thinko. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206087 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/config/arm/arm.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f7164e8de05..46f1e9b64fc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2013-12-18 Eric Botcazou + + * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Fix thinko. + 2013-12-18 James Greenhalgh Kyrylo Tkachov diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 05fc2f973fd..8fea2a6ed51 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -26855,8 +26855,8 @@ arm_expand_epilogue_apcs_frame (bool really_return) if (crtl->calls_eh_return) emit_insn (gen_addsi3 (stack_pointer_rtx, - stack_pointer_rtx, - GEN_INT (ARM_EH_STACKADJ_REGNUM))); + stack_pointer_rtx, + gen_rtx_REG (SImode, ARM_EH_STACKADJ_REGNUM))); if (IS_STACKALIGN (func_type)) /* Restore the original stack pointer. Before prologue, the stack was -- cgit v1.2.1 From f8c4f1f87f9b9e6876a42e196f1b47a4feff6e26 Mon Sep 17 00:00:00 2001 From: nickc Date: Wed, 18 Dec 2013 15:29:47 +0000 Subject: * gcc.dg/pr32912-2.c: Fix for 16-bit targets. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206089 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/pr32912-2.c | 25 ++++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f192b5d3526..730ce06a24b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-18 Nick Clifton + + * gcc.dg/pr32912-2.c: Fix for 16-bit targets. + 2013-12-18 Eric Botcazou * gcc.dg/pr59418.c: New test. diff --git a/gcc/testsuite/gcc.dg/pr32912-2.c b/gcc/testsuite/gcc.dg/pr32912-2.c index f29e63e7058..2e800784d52 100644 --- a/gcc/testsuite/gcc.dg/pr32912-2.c +++ b/gcc/testsuite/gcc.dg/pr32912-2.c @@ -1,14 +1,24 @@ /* { dg-do run } */ /* { dg-options "-O2 -w" } */ -/* { dg-skip-if "TImode not supported" { "avr-*-*" } { "*" } { "" } } */ extern void abort (void); #if(__SIZEOF_INT__ >= 4) -typedef int __m128i __attribute__ ((__vector_size__ (16))); +# define TYPE int +# define TYPED(a) a + +#elif(__SIZEOF_INT__ > 2) +# define TYPE long +# define TYPED(a) a##L + #else -typedef long __m128i __attribute__ ((__vector_size__ (16))); +# define TYPE long long +# define TYPED(a) a##LL #endif + + +typedef TYPE __m128i __attribute__ ((__vector_size__ (16))); + __m128i foo (void) { @@ -26,11 +36,7 @@ bar (void) int main (void) { -#if(__SIZEOF_INT__ >= 4) - union { __m128i v; int i[sizeof (__m128i) / sizeof (int)]; } u, v; -#else - union { __m128i v; long i[sizeof (__m128i) / sizeof (long)]; } u, v; -#endif + union { __m128i v; TYPE i[sizeof (__m128i) / sizeof (TYPE)]; } u, v; int i; u.v = foo (); @@ -39,9 +45,10 @@ main (void) { if (u.i[i] != ~v.i[i]) abort (); + if (i < 3) { - if (u.i[i] != (0x11111111 << i)) + if (u.i[i] != (TYPED (0x11111111) << i)) abort (); } else if (u.i[i]) -- cgit v1.2.1 From 58fb74ce708e3251b4bb3e91d92d19b480f45259 Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 18 Dec 2013 16:50:06 +0000 Subject: PR target/59539 * config/i386/sse.md (_loadu, _loaddqu): New expanders, prefix existing define_insn names with *. * gcc.target/i386/pr59539-1.c: New test. * gcc.target/i386/pr59539-2.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206090 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++ gcc/config/i386/sse.md | 47 +++++++++++++++++++++++++++++-- gcc/testsuite/ChangeLog | 6 ++++ gcc/testsuite/gcc.target/i386/pr59539-1.c | 16 +++++++++++ gcc/testsuite/gcc.target/i386/pr59539-2.c | 16 +++++++++++ 5 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr59539-1.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59539-2.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 46f1e9b64fc..83e8321f9c2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-12-18 Jakub Jelinek + + PR target/59539 + * config/i386/sse.md + (_loadu, + _loaddqu): New expanders, + prefix existing define_insn names with *. + 2013-12-18 Eric Botcazou * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Fix thinko. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index adedf44fc31..2cbbb14ccea 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -912,7 +912,28 @@ DONE; }) -(define_insn "_loadu" +(define_expand "_loadu" + [(set (match_operand:VF 0 "register_operand") + (unspec:VF [(match_operand:VF 1 "nonimmediate_operand")] + UNSPEC_LOADU))] + "TARGET_SSE && " +{ + /* For AVX, normal *mov_internal pattern will handle unaligned loads + just fine if misaligned_operand is true, and without the UNSPEC it can + be combined with arithmetic instructions. If misaligned_operand is + false, still emit UNSPEC_LOADU insn to honor user's request for + misaligned load. */ + if (TARGET_AVX + && misaligned_operand (operands[1], mode) + /* FIXME: Revisit after AVX512F merge is completed. */ + && !) + { + emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1])); + DONE; + } +}) + +(define_insn "*_loadu" [(set (match_operand:VF 0 "register_operand" "=v") (unspec:VF [(match_operand:VF 1 "nonimmediate_operand" "vm")] @@ -999,7 +1020,29 @@ (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "_loaddqu" +(define_expand "_loaddqu" + [(set (match_operand:VI_UNALIGNED_LOADSTORE 0 "register_operand") + (unspec:VI_UNALIGNED_LOADSTORE + [(match_operand:VI_UNALIGNED_LOADSTORE 1 "nonimmediate_operand")] + UNSPEC_LOADU))] + "TARGET_SSE2 && " +{ + /* For AVX, normal *mov_internal pattern will handle unaligned loads + just fine if misaligned_operand is true, and without the UNSPEC it can + be combined with arithmetic instructions. If misaligned_operand is + false, still emit UNSPEC_LOADU insn to honor user's request for + misaligned load. */ + if (TARGET_AVX + && misaligned_operand (operands[1], mode) + /* FIXME: Revisit after AVX512F merge is completed. */ + && !) + { + emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1])); + DONE; + } +}) + +(define_insn "*_loaddqu" [(set (match_operand:VI_UNALIGNED_LOADSTORE 0 "register_operand" "=v") (unspec:VI_UNALIGNED_LOADSTORE [(match_operand:VI_UNALIGNED_LOADSTORE 1 "nonimmediate_operand" "vm")] diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 730ce06a24b..20a1bc59c4f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-12-18 Jakub Jelinek + + PR target/59539 + * gcc.target/i386/pr59539-1.c: New test. + * gcc.target/i386/pr59539-2.c: New test. + 2013-12-18 Nick Clifton * gcc.dg/pr32912-2.c: Fix for 16-bit targets. diff --git a/gcc/testsuite/gcc.target/i386/pr59539-1.c b/gcc/testsuite/gcc.target/i386/pr59539-1.c new file mode 100644 index 00000000000..9b34053c4cb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59539-1.c @@ -0,0 +1,16 @@ +/* PR target/59539 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx" } */ + +#include + +int +foo (void *p1, void *p2) +{ + __m128i d1 = _mm_loadu_si128 ((__m128i *) p1); + __m128i d2 = _mm_loadu_si128 ((__m128i *) p2); + __m128i result = _mm_cmpeq_epi16 (d1, d2); + return _mm_movemask_epi8 (result); +} + +/* { dg-final { scan-assembler-times "vmovdqu" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr59539-2.c b/gcc/testsuite/gcc.target/i386/pr59539-2.c new file mode 100644 index 00000000000..b53b8c407ab --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59539-2.c @@ -0,0 +1,16 @@ +/* PR target/59539 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx2" } */ + +#include + +int +foo (void *p1, void *p2) +{ + __m256i d1 = _mm256_loadu_si256 ((__m256i *) p1); + __m256i d2 = _mm256_loadu_si256 ((__m256i *) p2); + __m256i result = _mm256_cmpeq_epi16 (d1, d2); + return _mm256_movemask_epi8 (result); +} + +/* { dg-final { scan-assembler-times "vmovdqu" 1 } } */ -- cgit v1.2.1 From f05a2bd1ed596260a807de5d941a7ac27134f07b Mon Sep 17 00:00:00 2001 From: aldyh Date: Wed, 18 Dec 2013 17:32:07 +0000 Subject: * doc/tree-ssa.texi (SSA Operands): Remove reference to SSA_OP_VMAYUSE. Synchronize SSA_OP* definitions with source. * ssa-iterators.h: Fix comment for FOR_EACH_IMM_USE_STMT. Add not to SSA_OP* macro definitions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206091 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/doc/tree-ssa.texi | 35 ++++++++++------------------------- gcc/ssa-iterators.h | 4 ++-- 3 files changed, 20 insertions(+), 27 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 83e8321f9c2..e595132f8d3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-12-18 Aldy Hernandez + + * doc/tree-ssa.texi (SSA Operands): Remove reference to + SSA_OP_VMAYUSE. + Synchronize SSA_OP* definitions with source. + * ssa-iterators.h: Fix comment for FOR_EACH_IMM_USE_STMT. + Add not to SSA_OP* macro definitions. + 2013-12-18 Jakub Jelinek PR target/59539 diff --git a/gcc/doc/tree-ssa.texi b/gcc/doc/tree-ssa.texi index 93f596d07a4..17c1b0c70e4 100644 --- a/gcc/doc/tree-ssa.texi +++ b/gcc/doc/tree-ssa.texi @@ -265,15 +265,15 @@ those you are interested in. They are documented in #define SSA_OP_USE 0x01 /* @r{Real USE operands.} */ #define SSA_OP_DEF 0x02 /* @r{Real DEF operands.} */ #define SSA_OP_VUSE 0x04 /* @r{VUSE operands.} */ -#define SSA_OP_VMAYUSE 0x08 /* @r{USE portion of VDEFS.} */ -#define SSA_OP_VDEF 0x10 /* @r{DEF portion of VDEFS.} */ +#define SSA_OP_VDEF 0x08 /* @r{VDEF operands.} */ /* @r{These are commonly grouped operand flags.} */ -#define SSA_OP_VIRTUAL_USES (SSA_OP_VUSE | SSA_OP_VMAYUSE) -#define SSA_OP_VIRTUAL_DEFS (SSA_OP_VDEF) -#define SSA_OP_ALL_USES (SSA_OP_VIRTUAL_USES | SSA_OP_USE) -#define SSA_OP_ALL_DEFS (SSA_OP_VIRTUAL_DEFS | SSA_OP_DEF) -#define SSA_OP_ALL_OPERANDS (SSA_OP_ALL_USES | SSA_OP_ALL_DEFS) +#define SSA_OP_VIRTUAL_USES (SSA_OP_VUSE) +#define SSA_OP_VIRTUAL_DEFS (SSA_OP_VDEF) +#define SSA_OP_ALL_VIRTUALS (SSA_OP_VIRTUAL_USES | SSA_OP_VIRTUAL_DEFS) +#define SSA_OP_ALL_USES (SSA_OP_VIRTUAL_USES | SSA_OP_USE) +#define SSA_OP_ALL_DEFS (SSA_OP_VIRTUAL_DEFS | SSA_OP_DEF) +#define SSA_OP_ALL_OPERANDS (SSA_OP_ALL_USES | SSA_OP_ALL_DEFS) @end smallexample @end enumerate @@ -307,25 +307,10 @@ aren't using operand pointers, use and defs flags can be mixed. @code{VDEF}s are broken into two flags, one for the @code{DEF} portion (@code{SSA_OP_VDEF}) and one for the USE portion -(@code{SSA_OP_VMAYUSE}). If all you want to look at are the -@code{VDEF}s together, there is a fourth iterator macro for this, -which returns both a def_operand_p and a use_operand_p for each -@code{VDEF} in the statement. Note that you don't need any flags for -this one. +(@code{SSA_OP_VUSE}). -@smallexample - use_operand_p use_p; - def_operand_p def_p; - ssa_op_iter iter; - - FOR_EACH_SSA_MAYDEF_OPERAND (def_p, use_p, stmt, iter) - @{ - my_code; - @} -@end smallexample - -There are many examples in the code as well, as well as the -documentation in @file{tree-ssa-operands.h}. +There are many examples in the code, in addition to the documentation +in @file{tree-ssa-operands.h} and @file{ssa-iterators.h}. There are also a couple of variants on the stmt iterators regarding PHI nodes. diff --git a/gcc/ssa-iterators.h b/gcc/ssa-iterators.h index eceddbce214..7b13928cfb4 100644 --- a/gcc/ssa-iterators.h +++ b/gcc/ssa-iterators.h @@ -98,7 +98,7 @@ struct imm_use_iterator get access to each occurrence of ssavar on the stmt returned by that iterator.. for instance: - FOR_EACH_IMM_USE_STMT (stmt, iter, var) + FOR_EACH_IMM_USE_STMT (stmt, iter, ssavar) { FOR_EACH_IMM_USE_ON_STMT (use_p, iter) { @@ -142,13 +142,13 @@ struct ssa_op_iter gimple stmt; }; +/* NOTE: Keep these in sync with doc/tree-ssa.texi. */ /* These flags are used to determine which operands are returned during execution of the loop. */ #define SSA_OP_USE 0x01 /* Real USE operands. */ #define SSA_OP_DEF 0x02 /* Real DEF operands. */ #define SSA_OP_VUSE 0x04 /* VUSE operands. */ #define SSA_OP_VDEF 0x08 /* VDEF operands. */ - /* These are commonly grouped operand flags. */ #define SSA_OP_VIRTUAL_USES (SSA_OP_VUSE) #define SSA_OP_VIRTUAL_DEFS (SSA_OP_VDEF) -- cgit v1.2.1 From 5d00fc6037a11c8abcb95ae811541d37c26e40d7 Mon Sep 17 00:00:00 2001 From: aldyh Date: Wed, 18 Dec 2013 17:38:07 +0000 Subject: * passes.c (execute_function_dump): Set graph_dump_initialized appropriately. (pass_init_dump_file): Similarly. (execute_one_pass): Pass new argument to do_per_function. * tree-pass.h (class opt_pass): New field graph_dump_initialized. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206092 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/passes.c | 21 +++++++++++++++++---- gcc/tree-pass.h | 5 +++++ 3 files changed, 30 insertions(+), 4 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e595132f8d3..b83157ff250 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-12-18 Aldy Hernandez + + * passes.c (execute_function_dump): Set graph_dump_initialized + appropriately. + (pass_init_dump_file): Similarly. + (execute_one_pass): Pass new argument to do_per_function. + * tree-pass.h (class opt_pass): New field graph_dump_initialized. + 2013-12-18 Aldy Hernandez * doc/tree-ssa.texi (SSA Operands): Remove reference to diff --git a/gcc/passes.c b/gcc/passes.c index f30f159813e..bc7bf064489 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -1640,8 +1640,10 @@ do_per_function_toporder (void (*callback) (void *data), void *data) /* Helper function to perform function body dump. */ static void -execute_function_dump (void *data ATTRIBUTE_UNUSED) +execute_function_dump (void *data) { + opt_pass *pass = (opt_pass *)data; + if (dump_file && current_function_decl) { if (cfun->curr_properties & PROP_trees) @@ -1655,7 +1657,14 @@ execute_function_dump (void *data ATTRIBUTE_UNUSED) if ((cfun->curr_properties & PROP_cfg) && (dump_flags & TDF_GRAPH)) - print_graph_cfg (dump_file_name, cfun); + { + if (!pass->graph_dump_initialized) + { + clean_graph_dump_file (dump_file_name); + pass->graph_dump_initialized = true; + } + print_graph_cfg (dump_file_name, cfun); + } } } @@ -1936,6 +1945,7 @@ verify_curr_properties (void *data) bool pass_init_dump_file (opt_pass *pass) { + pass->graph_dump_initialized = false; /* If a dump file name is present, open it if enabled. */ if (pass->static_pass_number != -1) { @@ -1950,7 +1960,10 @@ pass_init_dump_file (opt_pass *pass) if (initializing_dump && dump_file && (dump_flags & TDF_GRAPH) && cfun && (cfun->curr_properties & PROP_cfg)) - clean_graph_dump_file (dump_file_name); + { + clean_graph_dump_file (dump_file_name); + pass->graph_dump_initialized = true; + } timevar_pop (TV_DUMP); return initializing_dump; } @@ -2230,7 +2243,7 @@ execute_one_pass (opt_pass *pass) verify_interpass_invariants (); if (dump_file) - do_per_function (execute_function_dump, NULL); + do_per_function (execute_function_dump, pass); if (pass->type == IPA_PASS) { struct cgraph_node *node; diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index 44b330803d5..308631f3dd1 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -114,6 +114,11 @@ public: /* Static pass number, used as a fragment of the dump file name. */ int static_pass_number; + /* When a given dump file is being initialized, this flag is set to + true if the corresponding TDF_graph dump file has also been + initialized. */ + bool graph_dump_initialized; + protected: gcc::context *m_ctxt; }; -- cgit v1.2.1 From 74acc7033622011364c71b05078fa77399065913 Mon Sep 17 00:00:00 2001 From: bviyer Date: Wed, 18 Dec 2013 19:00:21 +0000 Subject: Added support for Cilk Plus SIMD-enabled function for C. +++ gcc/ChangeLog +2013-12-18 Balaji V. Iyer + + * omp-low.c (simd_clone_clauses_extract): Replaced the string + "cilk simd elemental" with "cilk simd function." + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + Removed a carriage-return from a warning string. + +++ gcc/c-family/ChangeLog +2013-12-18 Balaji V. Iyer + + * c-common.c (c_common_attribute_table): Added "cilk simd function" + attribute. + * c-pragma.h (enum pragma_cilk_clause): Remove. + (enum pragma_omp_clause): Added the following fields: + PRAGMA_CILK_CLAUSE_NOMASK, PRAGMA_CILK_CLAUSE_MASK, + PRAGMA_CILK_CLAUSE_VECTORLENGTH, PRAGMA_CILK_CLAUSE_NONE, + PRAGMA_CILK_CLAUSE_LINEAR, PRAGMA_CILK_CLAUSE_PRIVATE, + PRAGMA_CILK_CLAUSE_FIRSTPRIVATE, PRAGMA_CILK_CLAUSE_LASTPRIVATE, + PRAGMA_CILK_CLAUSE_UNIFORM. + + +++ gcc/c/ChangeLog +2013-12-18 Balaji V. Iyer + + * c-parser.c (struct c_parser::cilk_simd_fn_tokens): Added new field. + (c_parser_declaration_or_fndef): Added a check if cilk_simd_fn_tokens + field in parser is not empty. If not-empty, call the function + c_parser_finish_omp_declare_simd. + (c_parser_cilk_clause_vectorlength): Modified function to be shared + between SIMD-enabled functions and #pragma simd. Added new parameter. + (c_parser_cilk_all_clauses): Modified the usage of the function + c_parser_cilk_clause_vectorlength as mentioned above. + (c_parser_cilk_simd_fn_vector_attrs): New function. + (c_finish_cilk_simd_fn_tokens): Likewise. + (is_cilkplus_vector_p): Likewise. + (c_parser_omp_clause_name): Added checking for "vectorlength," + "nomask," and "mask" strings in clause name. + (c_parser_omp_all_clauses): Added 3 new case statements: + PRAGMA_CILK_CLAUSE_VECTORLENGTH, PRAGMA_CILK_CLAUSE_MASK and + PRAGMA_CILK_CLAUSE_NOMASK. + (c_parser_attributes): Added a cilk_simd_fn_tokens parameter. Added a + check for vector attribute and if so call the function + c_parser_cilk_simd_fn_vector_attrs. Also, when Cilk plus is enabled, + called the function c_finish_cilk_simd_fn_tokens. + (c_finish_omp_declare_simd): Added a check if cilk_simd_fn_tokens in + parser field is non-empty. If so, parse them as you would parse + the omp declare simd pragma. + (c_parser_omp_clause_linear): Added a new bool parm. is_cilk_simd_fn. + Added a check when step is a parameter and flag it as error. + (CILK_SIMD_FN_CLAUSE_MASK): New #define. + (c_parser_cilk_clause_name): Changed pragma_cilk_clause to + pragma_omp_clause. + +++ gcc/testsuite/ChangeLog +2013-12-18 Balaji V. Iyer + + * c-c++-common/cilk-plus/SE/ef_test.c: New test. + * c-c++-common/cilk-plus/SE/ef_test2.c: Likewise. + * c-c++-common/cilk-plus/SE/vlength_errors.c: Likewise. + * c-c++-common/cilk-plus/SE/ef_error.c: Likewise. + * c-c++-common/cilk-plus/SE/ef_error2.c: Likewise. + * c-c++-common/cilk-plus/SE/ef_error3.c: Likewise. + * gcc.dg/cilk-plus/cilk-plus.exp: Added calls for the above tests. + git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206095 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 + gcc/c-family/ChangeLog | 13 ++ gcc/c-family/c-common.c | 2 + gcc/c-family/c-pragma.h | 25 +- gcc/c/ChangeLog | 31 +++ gcc/c/c-parser.c | 257 ++++++++++++++++++--- gcc/config/i386/i386.c | 2 +- gcc/cp/parser.c | 6 +- gcc/omp-low.c | 2 +- gcc/testsuite/ChangeLog | 10 + gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c | 32 +++ .../c-c++-common/cilk-plus/SE/ef_error2.c | 14 ++ .../c-c++-common/cilk-plus/SE/ef_error3.c | 13 ++ gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test.c | 78 +++++++ gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test2.c | 16 ++ .../c-c++-common/cilk-plus/SE/vlength_errors.c | 56 +++++ gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp | 4 + 17 files changed, 517 insertions(+), 51 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c create mode 100644 gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c create mode 100644 gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error3.c create mode 100644 gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test.c create mode 100644 gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test2.c create mode 100644 gcc/testsuite/c-c++-common/cilk-plus/SE/vlength_errors.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b83157ff250..7f77d8a8980 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-12-18 Balaji V. Iyer + + * omp-low.c (simd_clone_clauses_extract): Replaced the string + "cilk simd elemental" with "cilk simd function." + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + Removed a carriage-return from a warning string. + 2013-12-18 Aldy Hernandez * passes.c (execute_function_dump): Set graph_dump_initialized diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 462b4b18dd0..ffd8eff1324 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,16 @@ +2013-12-18 Balaji V. Iyer + + * c-common.c (c_common_attribute_table): Added "cilk simd function" + attribute. + * c-pragma.h (enum pragma_cilk_clause): Remove. + (enum pragma_omp_clause): Added the following fields: + PRAGMA_CILK_CLAUSE_NOMASK, PRAGMA_CILK_CLAUSE_MASK, + PRAGMA_CILK_CLAUSE_VECTORLENGTH, PRAGMA_CILK_CLAUSE_NONE, + PRAGMA_CILK_CLAUSE_LINEAR, PRAGMA_CILK_CLAUSE_PRIVATE, + PRAGMA_CILK_CLAUSE_FIRSTPRIVATE, PRAGMA_CILK_CLAUSE_LASTPRIVATE, + PRAGMA_CILK_CLAUSE_UNIFORM. + + 2013-12-11 Balaji V. Iyer * cilk.c (cilk_outline): Made this function non-static. diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index cfaeaf09f6b..229f8fa22e8 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -762,6 +762,8 @@ const struct attribute_spec c_common_attribute_table[] = handle_returns_nonnull_attribute, false }, { "omp declare simd", 0, -1, true, false, false, handle_omp_declare_simd_attribute, false }, + { "cilk simd function", 0, -1, true, false, false, + handle_omp_declare_simd_attribute, false }, { "omp declare target", 0, 0, true, false, false, handle_omp_declare_target_attribute, false }, { NULL, 0, 0, false, false, false, NULL, false } diff --git a/gcc/c-family/c-pragma.h b/gcc/c-family/c-pragma.h index 5379b9e4eb8..683b3f8aca9 100644 --- a/gcc/c-family/c-pragma.h +++ b/gcc/c-family/c-pragma.h @@ -103,19 +103,20 @@ typedef enum pragma_omp_clause { PRAGMA_OMP_CLAUSE_THREAD_LIMIT, PRAGMA_OMP_CLAUSE_TO, PRAGMA_OMP_CLAUSE_UNIFORM, - PRAGMA_OMP_CLAUSE_UNTIED -} pragma_omp_clause; - -/* All Cilk Plus #pragma omp clauses. */ -typedef enum pragma_cilk_clause { - PRAGMA_CILK_CLAUSE_NONE = 0, + PRAGMA_OMP_CLAUSE_UNTIED, + + /* Clauses for Cilk Plus SIMD-enabled function. */ + PRAGMA_CILK_CLAUSE_NOMASK, + PRAGMA_CILK_CLAUSE_MASK, PRAGMA_CILK_CLAUSE_VECTORLENGTH, - PRAGMA_CILK_CLAUSE_LINEAR, - PRAGMA_CILK_CLAUSE_PRIVATE, - PRAGMA_CILK_CLAUSE_FIRSTPRIVATE, - PRAGMA_CILK_CLAUSE_LASTPRIVATE, - PRAGMA_CILK_CLAUSE_REDUCTION -} pragma_cilk_clause; + PRAGMA_CILK_CLAUSE_NONE = PRAGMA_OMP_CLAUSE_NONE, + PRAGMA_CILK_CLAUSE_LINEAR = PRAGMA_OMP_CLAUSE_LINEAR, + PRAGMA_CILK_CLAUSE_PRIVATE = PRAGMA_OMP_CLAUSE_PRIVATE, + PRAGMA_CILK_CLAUSE_FIRSTPRIVATE = PRAGMA_OMP_CLAUSE_FIRSTPRIVATE, + PRAGMA_CILK_CLAUSE_LASTPRIVATE = PRAGMA_OMP_CLAUSE_LASTPRIVATE, + PRAGMA_CILK_CLAUSE_REDUCTION = PRAGMA_OMP_CLAUSE_REDUCTION, + PRAGMA_CILK_CLAUSE_UNIFORM = PRAGMA_OMP_CLAUSE_UNIFORM +} pragma_omp_clause; extern struct cpp_reader* parse_in; diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 9db78c6baa6..58631eeea09 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,34 @@ +2013-12-18 Balaji V. Iyer + + * c-parser.c (struct c_parser::cilk_simd_fn_tokens): Added new field. + (c_parser_declaration_or_fndef): Added a check if cilk_simd_fn_tokens + field in parser is not empty. If not-empty, call the function + c_parser_finish_omp_declare_simd. + (c_parser_cilk_clause_vectorlength): Modified function to be shared + between SIMD-enabled functions and #pragma simd. Added new parameter. + (c_parser_cilk_all_clauses): Modified the usage of the function + c_parser_cilk_clause_vectorlength as mentioned above. + (c_parser_cilk_simd_fn_vector_attrs): New function. + (c_finish_cilk_simd_fn_tokens): Likewise. + (is_cilkplus_vector_p): Likewise. + (c_parser_omp_clause_name): Added checking for "vectorlength," + "nomask," and "mask" strings in clause name. + (c_parser_omp_all_clauses): Added 3 new case statements: + PRAGMA_CILK_CLAUSE_VECTORLENGTH, PRAGMA_CILK_CLAUSE_MASK and + PRAGMA_CILK_CLAUSE_NOMASK. + (c_parser_attributes): Added a cilk_simd_fn_tokens parameter. Added a + check for vector attribute and if so call the function + c_parser_cilk_simd_fn_vector_attrs. Also, when Cilk plus is enabled, + called the function c_finish_cilk_simd_fn_tokens. + (c_finish_omp_declare_simd): Added a check if cilk_simd_fn_tokens in + parser field is non-empty. If so, parse them as you would parse + the omp declare simd pragma. + (c_parser_omp_clause_linear): Added a new bool parm. is_cilk_simd_fn. + Added a check when step is a parameter and flag it as error. + (CILK_SIMD_FN_CLAUSE_MASK): New #define. + (c_parser_cilk_clause_name): Changed pragma_cilk_clause to + pragma_omp_clause. + 2013-12-17 Thomas Schwinge * c-parser.c (c_parser_omp_parallel): Fix description. diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index 28f53c166d4..5dd953d7a2f 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -208,6 +208,12 @@ typedef struct GTY(()) c_parser { /* True if we are in a context where the Objective-C "Property attribute" keywords are valid. */ BOOL_BITFIELD objc_property_attr_context : 1; + + /* Cilk Plus specific parser/lexer information. */ + + /* Buffer to hold all the tokens from parsing the vector attribute for the + SIMD-enabled functions (formerly known as elemental functions). */ + vec *cilk_simd_fn_tokens; } c_parser; @@ -1245,6 +1251,7 @@ static bool c_parser_objc_diagnose_bad_element_prefix static void c_parser_cilk_simd (c_parser *); static bool c_parser_cilk_verify_simd (c_parser *, enum pragma_context); static tree c_parser_array_notation (location_t, c_parser *, tree, tree); +static tree c_parser_cilk_clause_vectorlength (c_parser *, tree, bool); /* Parse a translation unit (C90 6.7, C99 6.9). @@ -1646,7 +1653,8 @@ c_parser_declaration_or_fndef (c_parser *parser, bool fndef_ok, C_DTR_NORMAL, &dummy); if (declarator == NULL) { - if (omp_declare_simd_clauses.exists ()) + if (omp_declare_simd_clauses.exists () + || !vec_safe_is_empty (parser->cilk_simd_fn_tokens)) c_finish_omp_declare_simd (parser, NULL_TREE, NULL_TREE, omp_declare_simd_clauses); c_parser_skip_to_end_of_block_or_statement (parser); @@ -1733,7 +1741,8 @@ c_parser_declaration_or_fndef (c_parser *parser, bool fndef_ok, chainon (postfix_attrs, all_prefix_attrs)); if (!d) d = error_mark_node; - if (omp_declare_simd_clauses.exists ()) + if (omp_declare_simd_clauses.exists () + || !vec_safe_is_empty (parser->cilk_simd_fn_tokens)) c_finish_omp_declare_simd (parser, d, NULL_TREE, omp_declare_simd_clauses); } @@ -1745,7 +1754,8 @@ c_parser_declaration_or_fndef (c_parser *parser, bool fndef_ok, chainon (postfix_attrs, all_prefix_attrs)); if (!d) d = error_mark_node; - if (omp_declare_simd_clauses.exists ()) + if (omp_declare_simd_clauses.exists () + || !vec_safe_is_empty (parser->cilk_simd_fn_tokens)) c_finish_omp_declare_simd (parser, d, NULL_TREE, omp_declare_simd_clauses); start_init (d, asm_name, global_bindings_p ()); @@ -1773,7 +1783,8 @@ c_parser_declaration_or_fndef (c_parser *parser, bool fndef_ok, tree d = start_decl (declarator, specs, false, chainon (postfix_attrs, all_prefix_attrs)); - if (omp_declare_simd_clauses.exists ()) + if (omp_declare_simd_clauses.exists () + || !vec_safe_is_empty (parser->cilk_simd_fn_tokens)) { tree parms = NULL_TREE; if (d && TREE_CODE (d) == FUNCTION_DECL) @@ -1901,7 +1912,8 @@ c_parser_declaration_or_fndef (c_parser *parser, bool fndef_ok, c_parser_declaration_or_fndef (parser, false, false, false, true, false, NULL, vNULL); store_parm_decls (); - if (omp_declare_simd_clauses.exists ()) + if (omp_declare_simd_clauses.exists () + || !vec_safe_is_empty (parser->cilk_simd_fn_tokens)) c_finish_omp_declare_simd (parser, current_function_decl, NULL_TREE, omp_declare_simd_clauses); DECL_STRUCT_FUNCTION (current_function_decl)->function_start_locus @@ -3765,6 +3777,87 @@ c_parser_attribute_any_word (c_parser *parser) return attr_name; } +/* Returns true of NAME is an IDENTIFIER_NODE with identiifer "vector," + "__vector" or "__vector__." */ + +static inline bool +is_cilkplus_vector_p (tree name) +{ + if (flag_enable_cilkplus && is_attribute_p ("vector", name)) + return true; + return false; +} + +#define CILK_SIMD_FN_CLAUSE_MASK \ + ((OMP_CLAUSE_MASK_1 << PRAGMA_CILK_CLAUSE_VECTORLENGTH) \ + | (OMP_CLAUSE_MASK_1 << PRAGMA_CILK_CLAUSE_LINEAR) \ + | (OMP_CLAUSE_MASK_1 << PRAGMA_CILK_CLAUSE_UNIFORM) \ + | (OMP_CLAUSE_MASK_1 << PRAGMA_CILK_CLAUSE_MASK) \ + | (OMP_CLAUSE_MASK_1 << PRAGMA_CILK_CLAUSE_NOMASK)) + +/* Parses the vector attribute of SIMD enabled functions in Cilk Plus. + VEC_TOKEN is the "vector" token that is replaced with "simd" and + pushed into the token list. + Syntax: + vector + vector (). */ + +static void +c_parser_cilk_simd_fn_vector_attrs (c_parser *parser, c_token vec_token) +{ + gcc_assert (is_cilkplus_vector_p (vec_token.value)); + + int paren_scope = 0; + vec_safe_push (parser->cilk_simd_fn_tokens, vec_token); + /* Consume the "vector" token. */ + c_parser_consume_token (parser); + + if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) + { + c_parser_consume_token (parser); + paren_scope++; + } + while (paren_scope > 0) + { + c_token *token = c_parser_peek_token (parser); + if (token->type == CPP_OPEN_PAREN) + paren_scope++; + else if (token->type == CPP_CLOSE_PAREN) + paren_scope--; + /* Do not push the last ')' since we are not pushing the '('. */ + if (!(token->type == CPP_CLOSE_PAREN && paren_scope == 0)) + vec_safe_push (parser->cilk_simd_fn_tokens, *token); + c_parser_consume_token (parser); + } + + /* Since we are converting an attribute to a pragma, we need to end the + attribute with PRAGMA_EOL. */ + c_token eol_token; + memset (&eol_token, 0, sizeof (eol_token)); + eol_token.type = CPP_PRAGMA_EOL; + vec_safe_push (parser->cilk_simd_fn_tokens, eol_token); +} + +/* Add 2 CPP_EOF at the end of PARSER->ELEM_FN_TOKENS vector. */ + +static void +c_finish_cilk_simd_fn_tokens (c_parser *parser) +{ + c_token last_token = parser->cilk_simd_fn_tokens->last (); + + /* c_parser_attributes is called in several places, so if these EOF + tokens are already inserted, then don't do them again. */ + if (last_token.type == CPP_EOF) + return; + + /* Two CPP_EOF token are added as a safety net since the normal C + front-end has two token look-ahead. */ + c_token eof_token; + eof_token.type = CPP_EOF; + vec_safe_push (parser->cilk_simd_fn_tokens, eof_token); + vec_safe_push (parser->cilk_simd_fn_tokens, eof_token); +} + /* Parse (possibly empty) attributes. This is a GNU extension. attributes: @@ -3829,6 +3922,12 @@ c_parser_attributes (c_parser *parser) attr_name = c_parser_attribute_any_word (parser); if (attr_name == NULL) break; + if (is_cilkplus_vector_p (attr_name)) + { + c_token *v_token = c_parser_peek_token (parser); + c_parser_cilk_simd_fn_vector_attrs (parser, *v_token); + continue; + } c_parser_consume_token (parser); if (c_parser_next_token_is_not (parser, CPP_OPEN_PAREN)) { @@ -3909,6 +4008,9 @@ c_parser_attributes (c_parser *parser) } parser->lex_untranslated_string = false; } + + if (flag_enable_cilkplus && !vec_safe_is_empty (parser->cilk_simd_fn_tokens)) + c_finish_cilk_simd_fn_tokens (parser); return attrs; } @@ -9524,6 +9626,8 @@ c_parser_omp_clause_name (c_parser *parser) result = PRAGMA_OMP_CLAUSE_MAP; else if (!strcmp ("mergeable", p)) result = PRAGMA_OMP_CLAUSE_MERGEABLE; + else if (flag_enable_cilkplus && !strcmp ("mask", p)) + result = PRAGMA_CILK_CLAUSE_MASK; break; case 'n': if (!strcmp ("notinbranch", p)) @@ -9534,6 +9638,8 @@ c_parser_omp_clause_name (c_parser *parser) result = PRAGMA_OMP_CLAUSE_NUM_TEAMS; else if (!strcmp ("num_threads", p)) result = PRAGMA_OMP_CLAUSE_NUM_THREADS; + else if (flag_enable_cilkplus && !strcmp ("nomask", p)) + result = PRAGMA_CILK_CLAUSE_NOMASK; break; case 'o': if (!strcmp ("ordered", p)) @@ -9577,6 +9683,10 @@ c_parser_omp_clause_name (c_parser *parser) else if (!strcmp ("untied", p)) result = PRAGMA_OMP_CLAUSE_UNTIED; break; + case 'v': + if (flag_enable_cilkplus && !strcmp ("vectorlength", p)) + result = PRAGMA_CILK_CLAUSE_VECTORLENGTH; + break; } } @@ -10393,7 +10503,7 @@ c_parser_omp_clause_aligned (c_parser *parser, tree list) linear ( variable-list : expression ) */ static tree -c_parser_omp_clause_linear (c_parser *parser, tree list) +c_parser_omp_clause_linear (c_parser *parser, tree list, bool is_cilk_simd_fn) { location_t clause_loc = c_parser_peek_token (parser)->location; tree nl, c, step; @@ -10410,6 +10520,11 @@ c_parser_omp_clause_linear (c_parser *parser, tree list) step = c_parser_expression (parser).value; mark_exp_read (step); step = c_fully_fold (step, false, NULL); + if (is_cilk_simd_fn && TREE_CODE (step) == PARM_DECL) + { + sorry ("using parameters for % step is not supported yet"); + step = integer_one_node; + } if (!INTEGRAL_TYPE_P (TREE_TYPE (step))) { error_at (clause_loc, "% clause step expression must " @@ -10768,7 +10883,7 @@ c_parser_omp_all_clauses (c_parser *parser, omp_clause_mask mask, const char *where, bool finish_p = true) { tree clauses = NULL; - bool first = true; + bool first = true, cilk_simd_fn = false; while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL)) { @@ -10854,11 +10969,13 @@ c_parser_omp_all_clauses (c_parser *parser, omp_clause_mask mask, c_name = "untied"; break; case PRAGMA_OMP_CLAUSE_INBRANCH: + case PRAGMA_CILK_CLAUSE_MASK: clauses = c_parser_omp_clause_branch (parser, OMP_CLAUSE_INBRANCH, clauses); c_name = "inbranch"; break; case PRAGMA_OMP_CLAUSE_NOTINBRANCH: + case PRAGMA_CILK_CLAUSE_NOMASK: clauses = c_parser_omp_clause_branch (parser, OMP_CLAUSE_NOTINBRANCH, clauses); c_name = "notinbranch"; @@ -10924,8 +11041,10 @@ c_parser_omp_all_clauses (c_parser *parser, omp_clause_mask mask, clauses = c_parser_omp_clause_aligned (parser, clauses); c_name = "aligned"; break; - case PRAGMA_OMP_CLAUSE_LINEAR: - clauses = c_parser_omp_clause_linear (parser, clauses); + case PRAGMA_OMP_CLAUSE_LINEAR: + if (((mask >> PRAGMA_CILK_CLAUSE_VECTORLENGTH) & 1) != 0) + cilk_simd_fn = true; + clauses = c_parser_omp_clause_linear (parser, clauses, cilk_simd_fn); c_name = "linear"; break; case PRAGMA_OMP_CLAUSE_DEPEND: @@ -10952,6 +11071,10 @@ c_parser_omp_all_clauses (c_parser *parser, omp_clause_mask mask, clauses = c_parser_omp_clause_safelen (parser, clauses); c_name = "safelen"; break; + case PRAGMA_CILK_CLAUSE_VECTORLENGTH: + clauses = c_parser_cilk_clause_vectorlength (parser, clauses, true); + c_name = "simdlen"; + break; case PRAGMA_OMP_CLAUSE_SIMDLEN: clauses = c_parser_omp_clause_simdlen (parser, clauses); c_name = "simdlen"; @@ -12727,10 +12850,19 @@ static void c_finish_omp_declare_simd (c_parser *parser, tree fndecl, tree parms, vec clauses) { + if (flag_enable_cilkplus + && clauses.exists () && !vec_safe_is_empty (parser->cilk_simd_fn_tokens)) + { + error ("%<#pragma omp declare simd%> cannot be used in the same " + "function marked as a Cilk Plus SIMD-enabled function"); + vec_free (parser->cilk_simd_fn_tokens); + return; + } + /* Normally first token is CPP_NAME "simd". CPP_EOF there indicates error has been reported and CPP_PRAGMA that c_finish_omp_declare_simd has already processed the tokens. */ - if (clauses[0].type == CPP_EOF) + if (clauses.exists () && clauses[0].type == CPP_EOF) return; if (fndecl == NULL_TREE || TREE_CODE (fndecl) != FUNCTION_DECL) { @@ -12739,7 +12871,7 @@ c_finish_omp_declare_simd (c_parser *parser, tree fndecl, tree parms, clauses[0].type = CPP_EOF; return; } - if (clauses[0].type != CPP_NAME) + if (clauses.exists () && clauses[0].type != CPP_NAME) { error_at (DECL_SOURCE_LOCATION (fndecl), "%<#pragma omp declare simd%> not immediately followed by " @@ -12753,23 +12885,49 @@ c_finish_omp_declare_simd (c_parser *parser, tree fndecl, tree parms, unsigned int tokens_avail = parser->tokens_avail; gcc_assert (parser->tokens == &parser->tokens_buf[0]); - parser->tokens = clauses.address (); - parser->tokens_avail = clauses.length (); - + bool is_cilkplus_cilk_simd_fn = false; + + if (flag_enable_cilkplus && !vec_safe_is_empty (parser->cilk_simd_fn_tokens)) + { + parser->tokens = parser->cilk_simd_fn_tokens->address (); + parser->tokens_avail = vec_safe_length (parser->cilk_simd_fn_tokens); + is_cilkplus_cilk_simd_fn = true; + } + else + { + parser->tokens = clauses.address (); + parser->tokens_avail = clauses.length (); + } + /* c_parser_omp_declare_simd pushed 2 extra CPP_EOF tokens at the end. */ while (parser->tokens_avail > 3) { c_token *token = c_parser_peek_token (parser); - gcc_assert (token->type == CPP_NAME - && strcmp (IDENTIFIER_POINTER (token->value), "simd") == 0); + if (!is_cilkplus_cilk_simd_fn) + gcc_assert (token->type == CPP_NAME + && strcmp (IDENTIFIER_POINTER (token->value), "simd") == 0); + else + gcc_assert (token->type == CPP_NAME + && is_cilkplus_vector_p (token->value)); c_parser_consume_token (parser); parser->in_pragma = true; - tree c = c_parser_omp_all_clauses (parser, OMP_DECLARE_SIMD_CLAUSE_MASK, - "#pragma omp declare simd"); + tree c = NULL_TREE; + if (is_cilkplus_cilk_simd_fn) + c = c_parser_omp_all_clauses (parser, CILK_SIMD_FN_CLAUSE_MASK, + "SIMD-enabled functions attribute"); + else + c = c_parser_omp_all_clauses (parser, OMP_DECLARE_SIMD_CLAUSE_MASK, + "#pragma omp declare simd"); c = c_omp_declare_simd_clauses_to_numbers (parms, c); if (c != NULL_TREE) c = tree_cons (NULL_TREE, c, NULL_TREE); + if (is_cilkplus_cilk_simd_fn) + { + tree k = build_tree_list (get_identifier ("cilk simd function"), c); + TREE_CHAIN (k) = DECL_ATTRIBUTES (fndecl); + DECL_ATTRIBUTES (fndecl) = k; + } c = build_tree_list (get_identifier ("omp declare simd"), c); TREE_CHAIN (c) = DECL_ATTRIBUTES (fndecl); DECL_ATTRIBUTES (fndecl) = c; @@ -12777,7 +12935,11 @@ c_finish_omp_declare_simd (c_parser *parser, tree fndecl, tree parms, parser->tokens = &parser->tokens_buf[0]; parser->tokens_avail = tokens_avail; - clauses[0].type = CPP_PRAGMA; + if (clauses.exists ()) + clauses[0].type = CPP_PRAGMA; + + if (!vec_safe_is_empty (parser->cilk_simd_fn_tokens)) + vec_free (parser->cilk_simd_fn_tokens); } @@ -13370,14 +13532,26 @@ c_parser_cilk_verify_simd (c_parser *parser, } /* Cilk Plus: - vectorlength ( constant-expression ) */ + This function is shared by SIMD-enabled functions and #pragma simd. + If IS_SIMD_FN is true then it is parsing a SIMD-enabled function and + CLAUSES is unused. The main purpose of this function is to parse a + vectorlength attribute or clause and check for parse errors. + When IS_SIMD_FN is true then the function is merely caching the tokens + in PARSER->CILK_SIMD_FN_TOKENS. If errors are found then the token + cache is cleared since there is no reason to continue. + Syntax: + vectorlength ( constant-expression ) */ static tree -c_parser_cilk_clause_vectorlength (c_parser *parser, tree clauses) +c_parser_cilk_clause_vectorlength (c_parser *parser, tree clauses, + bool is_simd_fn) { + if (is_simd_fn) + check_no_duplicate_clause (clauses, OMP_CLAUSE_SIMDLEN, "vectorlength"); + else /* The vectorlength clause behaves exactly like OpenMP's safelen clause. Represent it in OpenMP terms. */ - check_no_duplicate_clause (clauses, OMP_CLAUSE_SAFELEN, "vectorlength"); + check_no_duplicate_clause (clauses, OMP_CLAUSE_SAFELEN, "vectorlength"); if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) return clauses; @@ -13386,18 +13560,33 @@ c_parser_cilk_clause_vectorlength (c_parser *parser, tree clauses) tree expr = c_parser_expr_no_commas (parser, NULL).value; expr = c_fully_fold (expr, false, NULL); - if (!TREE_TYPE (expr) - || !TREE_CONSTANT (expr) - || !INTEGRAL_TYPE_P (TREE_TYPE (expr))) - error_at (loc, "vectorlength must be an integer constant"); + /* If expr is an error_mark_node then the above function would have + emitted an error. No reason to do it twice. */ + if (expr == error_mark_node) + ; + else if (!TREE_TYPE (expr) + || !TREE_CONSTANT (expr) + || !INTEGRAL_TYPE_P (TREE_TYPE (expr))) + + error_at (loc, "vectorlength must be an integer constant"); else if (exact_log2 (TREE_INT_CST_LOW (expr)) == -1) error_at (loc, "vectorlength must be a power of 2"); else { - tree u = build_omp_clause (loc, OMP_CLAUSE_SAFELEN); - OMP_CLAUSE_SAFELEN_EXPR (u) = expr; - OMP_CLAUSE_CHAIN (u) = clauses; - clauses = u; + if (is_simd_fn) + { + tree u = build_omp_clause (loc, OMP_CLAUSE_SIMDLEN); + OMP_CLAUSE_SIMDLEN_EXPR (u) = expr; + OMP_CLAUSE_CHAIN (u) = clauses; + clauses = u; + } + else + { + tree u = build_omp_clause (loc, OMP_CLAUSE_SAFELEN); + OMP_CLAUSE_SAFELEN_EXPR (u) = expr; + OMP_CLAUSE_CHAIN (u) = clauses; + clauses = u; + } } c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"); @@ -13494,10 +13683,10 @@ c_parser_cilk_clause_linear (c_parser *parser, tree clauses) not consumed. Otherwise, the appropriate pragma_simd_clause is returned and the token is consumed. */ -static pragma_cilk_clause +static pragma_omp_clause c_parser_cilk_clause_name (c_parser *parser) { - pragma_cilk_clause result; + pragma_omp_clause result; c_token *token = c_parser_peek_token (parser); if (!token->value || token->type != CPP_NAME) @@ -13534,14 +13723,14 @@ c_parser_cilk_all_clauses (c_parser *parser) while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL)) { - pragma_cilk_clause c_kind; + pragma_omp_clause c_kind; c_kind = c_parser_cilk_clause_name (parser); switch (c_kind) { case PRAGMA_CILK_CLAUSE_VECTORLENGTH: - clauses = c_parser_cilk_clause_vectorlength (parser, clauses); + clauses = c_parser_cilk_clause_vectorlength (parser, clauses, false); break; case PRAGMA_CILK_CLAUSE_LINEAR: clauses = c_parser_cilk_clause_linear (parser, clauses); diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index ecf5e0b1bc0..0be671da390 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -43860,7 +43860,7 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node, || (clonei->simdlen & (clonei->simdlen - 1)) != 0)) { warning_at (DECL_SOURCE_LOCATION (node->decl), 0, - "unsupported simdlen %d\n", clonei->simdlen); + "unsupported simdlen %d", clonei->simdlen); return 0; } diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 9f8ad39dfe1..2a2cbf0f061 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -31478,10 +31478,10 @@ cp_parser_cilk_simd_linear (cp_parser *parser, tree clauses) token is not consumed. Otherwise, the appropriate enum from the pragma_simd_clause is returned and the token is consumed. */ -static pragma_cilk_clause +static pragma_omp_clause cp_parser_cilk_simd_clause_name (cp_parser *parser) { - pragma_cilk_clause clause_type; + pragma_omp_clause clause_type; cp_token *token = cp_lexer_peek_token (parser->lexer); if (token->keyword == RID_PRIVATE) @@ -31515,7 +31515,7 @@ cp_parser_cilk_simd_all_clauses (cp_parser *parser, cp_token *pragma_token) while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL) && clauses != error_mark_node) { - pragma_cilk_clause c_kind; + pragma_omp_clause c_kind; c_kind = cp_parser_cilk_simd_clause_name (parser); if (c_kind == PRAGMA_CILK_CLAUSE_VECTORLENGTH) clauses = cp_parser_cilk_simd_vectorlength (parser, clauses); diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 2398a96c0ea..aacee3872b2 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -10688,7 +10688,7 @@ simd_clone_clauses_extract (struct cgraph_node *node, tree clauses, declare simd". */ bool cilk_clone = (flag_enable_cilkplus - && lookup_attribute ("cilk plus elemental", + && lookup_attribute ("cilk simd function", DECL_ATTRIBUTES (node->decl))); /* Allocate one more than needed just in case this is an in-branch diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 20a1bc59c4f..f4e055fdc89 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2013-12-18 Balaji V. Iyer + + * c-c++-common/cilk-plus/SE/ef_test.c: New test. + * c-c++-common/cilk-plus/SE/ef_test2.c: Likewise. + * c-c++-common/cilk-plus/SE/vlength_errors.c: Likewise. + * c-c++-common/cilk-plus/SE/ef_error.c: Likewise. + * c-c++-common/cilk-plus/SE/ef_error2.c: Likewise. + * c-c++-common/cilk-plus/SE/ef_error3.c: Likewise. + * gcc.dg/cilk-plus/cilk-plus.exp: Added calls for the above tests. + 2013-12-18 Jakub Jelinek PR target/59539 diff --git a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c new file mode 100644 index 00000000000..6a4b4a4178e --- /dev/null +++ b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c @@ -0,0 +1,32 @@ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus -fopenmp" } */ + +#pragma omp declare simd linear(y:1) simdlen(4) +__attribute__((vector (linear (y:1), vectorlength(4)))) +int func (int x, int y) { /* { dg-error "cannot be used in the same function marked as a Cilk Plus SIMD-enabled" } */ + return (x+y); +} +__attribute__((vector (linear (y:1), private (x)))) /* { dg-error "is not valid for" } */ +int func2 (int x, int y) { + return (x+y); +} + +__attribute__((vector (linear (y:1), simdlen (4)))) /* { dg-error "is not valid for" } */ +int func2_1 (int x, int y) { + return (x+y); +} + +__attribute__((vector (linear (y:1), inbranch))) /* { dg-error "is not valid for" } */ +int func2_3 (int x, int y) { + return (x+y); +} + +__attribute__((vector (notinbranch, vectorlength (4)))) /* { dg-error "is not valid for" } */ +int func2_2 (int x, int y) { + return (x+y); +} + +int main (void) +{ + return (func (5,6)); +} diff --git a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c new file mode 100644 index 00000000000..518d6407eeb --- /dev/null +++ b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c @@ -0,0 +1,14 @@ +/* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */ +/* { dg-options "-fcilkplus -Wall" } */ + +__attribute__((vector (vectorlength(32)))) +//#pragma omp simd simdlen (32) +int func2 (int x, int y) /* { dg-warning "unsupported simdlen" } */ +{ + return (x+y); +} + +int main (void) +{ + return (func2 (5,6)); +} diff --git a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error3.c b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error3.c new file mode 100644 index 00000000000..ab55fae0c32 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error3.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */ +/* { dg-options "-fcilkplus -Wall" } */ + +__attribute__((vector (linear (x:y)))) +int func2 (int x, int y) +{ /* { dg-message "using parameters for" } */ + return (x+y); +} + +int main (void) +{ + return (func2 (5,6)); +} diff --git a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test.c b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test.c new file mode 100644 index 00000000000..e606acac16f --- /dev/null +++ b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test.c @@ -0,0 +1,78 @@ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus -Wunknown-pragmas" } */ + +/* Tests the clauses in several combinations put in different locations. */ +/* This is mostly a parser test. */ +#define Q 4 + +int z = Q; + + __attribute__ ((vector (uniform(x), linear (y:1), vectorlength (4) ))) +int func (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + __attribute__ ((__vector__ (uniform(x), vectorlength (2), linear (y:1) ))) +int func2 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector (uniform(y), linear (x), vectorlength (4) ))) +int func3 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector (uniform(x), linear (y:1), mask))) +int func4 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector (uniform(x), linear (y:1), nomask))) +int func5 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector (uniform(x), mask, linear (y:1)))) +int func6 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector (uniform (x), mask, linear (y:1)), vector)) +int func7 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector (uniform (x), mask, linear (y:1)), vector (uniform (y), mask))) +int func8 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector, vector (uniform (y), mask))) +int func9 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +int main (int argc, char *argv[]) +{ + int ii = 0, q = 5; + for (ii = 0; ii < 10; ii++) + q += func (argc, ii); + return q; +} diff --git a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test2.c b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test2.c new file mode 100644 index 00000000000..7ec0578b412 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_test2.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus" } */ +void func (int x, int y) __attribute__((vector(linear(x:1), uniform (y)), + vector)); + +int q; +int main (void) +{ + int ii = 0; + q = 5; + for (ii = 0; ii < 100; ii++) + func (ii, q); + + return 0; +} + diff --git a/gcc/testsuite/c-c++-common/cilk-plus/SE/vlength_errors.c b/gcc/testsuite/c-c++-common/cilk-plus/SE/vlength_errors.c new file mode 100644 index 00000000000..38d610a8679 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cilk-plus/SE/vlength_errors.c @@ -0,0 +1,56 @@ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus -Wunknown-pragmas" } */ + +#define Q 4 + +int z = Q; + +__attribute__ ((vector (uniform(x), vectorlength (), linear (y:1) ))) /* { dg-error "expected expression" } */ +int func2 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector (uniform(x), linear (y:1), vectorlength (4.5) ))) /* { dg-error "vectorlength must be an integer" } */ +int func3 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector (uniform(x), linear (y:1), vectorlength (z) ))) /* { dg-error "vectorlength must be an integer" } */ +int func4 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector (uniform(x), linear (y:1), vectorlength (Q) ))) /* This is OK! */ +int func5 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector (uniform(x), vectorlength (z), linear (y:1)))) /* { dg-error "vectorlength must be an integer" } */ +int func6 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +__attribute__ ((vector (uniform(x), linear (y:1), vectorlength (sizeof (int)) ))) /* This is OK too! */ +int func7 (int x, int y) +{ + int zq = 5; + return x + (y*zq); +} + +int main (void) +{ + int ii = 0, q = 5; + for (ii = 0; ii < 10; ii++) + q += func2 (z, ii); + return q; +} diff --git a/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp b/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp index 39abbba3fbc..51c715df2e1 100644 --- a/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp +++ b/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp @@ -60,6 +60,10 @@ if { [check_effective_target_lto] } { dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -flto -g -fcilkplus" " " } +dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -g" " " +dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -std=c99" " " +dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -g" " " + dg-finish unset TEST_EXTRA_LIBS -- cgit v1.2.1 From 568d720f1c32578e6358e21c3da819ce0a1cf45f Mon Sep 17 00:00:00 2001 From: bviyer Date: Wed, 18 Dec 2013 19:04:04 +0000 Subject: Forgot to add a changelog entry for previous commit. Added here. gcc/cp/ChangeLog. 2013-12-18 Balaji V. Iyer * parser.c (cp_parser_cilk_simd_clause_name): Changed cilk_clause_name to omp_clause_name. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206096 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d44ff7c6c04..96bc0d9e885 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2013-12-18 Balaji V. Iyer + + * parser.c (cp_parser_cilk_simd_clause_name): Changed cilk_clause_name + to omp_clause_name. + 2013-12-17 Thomas Schwinge * parser.c (cp_parser_omp_parallel): Fix description. -- cgit v1.2.1 From 60ae84fc4d8621707474432fd7459b8468f63194 Mon Sep 17 00:00:00 2001 From: jgreenhalgh Date: Wed, 18 Dec 2013 19:21:45 +0000 Subject: [AArch64 1/3 big.LITTLE] Driver rewriting of big.LITTLE names. gcc/ * common/config/aarch64/aarch64-common.c (aarch64_rewrite_selected_cpu): New. (aarch64_rewrite_mcpu): New. * config/aarch64/aarch64-protos.h (aarch64_rewrite_selected_cpu): New. * config/aarch64/aarch64.h (BIG_LITTLE_SPEC): New. (BIG_LITTLE_SPEC_FUNCTIONS): Likewise. (ASM_CPU_SPEC): Likewise. (EXTRA_SPEC_FUNCTIONS): Likewise. (EXTRA_SPECS): Likewise. (ASM_SPEC): Likewise. * config/aarch64/aarch64.c (aarch64_start_file): Rewrite target CPU name. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206098 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 16 ++++++++++++++ gcc/common/config/aarch64/aarch64-common.c | 35 ++++++++++++++++++++++++++++++ gcc/config/aarch64/aarch64-elf.h | 3 ++- gcc/config/aarch64/aarch64-protos.h | 2 ++ gcc/config/aarch64/aarch64.c | 4 +++- gcc/config/aarch64/aarch64.h | 15 +++++++++++++ 6 files changed, 73 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7f77d8a8980..9ad5ec88da6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2013-12-18 James Greenhalgh + + * common/config/aarch64/aarch64-common.c + (aarch64_rewrite_selected_cpu): New. + (aarch64_rewrite_mcpu): New. + * config/aarch64/aarch64-protos.h + (aarch64_rewrite_selected_cpu): New. + * config/aarch64/aarch64.h (BIG_LITTLE_SPEC): New. + (BIG_LITTLE_SPEC_FUNCTIONS): Likewise. + (ASM_CPU_SPEC): Likewise. + (EXTRA_SPEC_FUNCTIONS): Likewise. + (EXTRA_SPECS): Likewise. + (ASM_SPEC): Likewise. + * config/aarch64/aarch64.c (aarch64_start_file): Rewrite target + CPU name. + 2013-12-18 Balaji V. Iyer * omp-low.c (simd_clone_clauses_extract): Replaced the string diff --git a/gcc/common/config/aarch64/aarch64-common.c b/gcc/common/config/aarch64/aarch64-common.c index 9c8e7705109..19acce1087c 100644 --- a/gcc/common/config/aarch64/aarch64-common.c +++ b/gcc/common/config/aarch64/aarch64-common.c @@ -88,3 +88,38 @@ aarch64_handle_option (struct gcc_options *opts, } struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; + +#define AARCH64_CPU_NAME_LENGTH 20 + +/* Truncate NAME at the first '.' character seen, or return + NAME unmodified. */ + +const char * +aarch64_rewrite_selected_cpu (const char *name) +{ + static char output_buf[AARCH64_CPU_NAME_LENGTH + 1] = {0}; + char *arg_pos; + + strncpy (output_buf, name, AARCH64_CPU_NAME_LENGTH); + arg_pos = strchr (output_buf, '.'); + + /* If we found a '.' truncate the entry at that point. */ + if (arg_pos) + *arg_pos = '\0'; + + return output_buf; +} + +/* Called by the driver to rewrite a name passed to the -mcpu + argument in preparation to be passed to the assembler. The + name will be in ARGV[0], ARGC should always be 1. */ + +const char * +aarch64_rewrite_mcpu (int argc, const char **argv) +{ + gcc_assert (argc == 1); + return aarch64_rewrite_selected_cpu (argv[0]); +} + +#undef AARCH64_CPU_NAME_LENGTH + diff --git a/gcc/config/aarch64/aarch64-elf.h b/gcc/config/aarch64/aarch64-elf.h index a66c3dbe9a1..97e1fb5ddb7 100644 --- a/gcc/config/aarch64/aarch64-elf.h +++ b/gcc/config/aarch64/aarch64-elf.h @@ -145,7 +145,8 @@ %{mbig-endian:-EB} \ %{mlittle-endian:-EL} \ %{mcpu=*:-mcpu=%*} \ -%{march=*:-march=%*}" \ +%{march=*:-march=%*} \ +%(asm_cpu_spec)" \ ASM_MABI_SPEC #endif diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 489fd1cd7b5..6ac059b2f38 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -189,6 +189,8 @@ bool aarch64_simd_valid_immediate (rtx, enum machine_mode, bool, bool aarch64_symbolic_address_p (rtx); bool aarch64_uimm12_shift (HOST_WIDE_INT); const char *aarch64_output_casesi (rtx *); +const char *aarch64_rewrite_selected_cpu (const char *name); + enum aarch64_symbol_type aarch64_classify_symbol (rtx, enum aarch64_symbol_context); enum aarch64_symbol_type aarch64_classify_tls_symbol (rtx); diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index afcf43f8331..0c53e6475a8 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -7437,7 +7437,9 @@ aarch64_start_file (void) } else if (selected_cpu) { - asm_fprintf (asm_out_file, "\t.cpu %s", selected_cpu->name); + const char *truncated_name + = aarch64_rewrite_selected_cpu (selected_cpu->name); + asm_fprintf (asm_out_file, "\t.cpu %s", truncated_name); aarch64_print_extension (); } default_file_start(); diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index cead022c3c0..d89c09b9c14 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -857,4 +857,19 @@ extern enum aarch64_code_model aarch64_cmodel; #define ENDIAN_LANE_N(mode, n) \ (BYTES_BIG_ENDIAN ? GET_MODE_NUNITS (mode) - 1 - n : n) +#define BIG_LITTLE_SPEC \ + " %{mcpu=*:% Date: Wed, 18 Dec 2013 19:25:45 +0000 Subject: [AArch64 2/3 big.LITTLE] Allow tuning parameters without unique tuning targets. gcc/ * config/aarch64/aarch64-cores.def: Add new column for SCHEDULER_IDENT. * config/aarch64/aarch64-opts.h (AARCH64_CORE): Handle SCHEDULER_IDENT. * config/aarch64/aarch64.c (AARCH64_CORE): Handle SCHEDULER_IDENT. (aarch64_parse_cpu): mcpu implies a default value for mtune. * config/aarch64/aarch64.h (AARCH64_CORE): Handle SCHEDULER_IDENT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206099 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 12 ++++++++++++ gcc/config/aarch64/aarch64-cores.def | 12 ++++++------ gcc/config/aarch64/aarch64-opts.h | 4 ++-- gcc/config/aarch64/aarch64.c | 3 ++- gcc/config/aarch64/aarch64.h | 4 ++-- 5 files changed, 24 insertions(+), 11 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9ad5ec88da6..d8e6b99b3c9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2013-12-18 James Greenhalgh + + * config/aarch64/aarch64-cores.def: Add new column for + SCHEDULER_IDENT. + * config/aarch64/aarch64-opts.h (AARCH64_CORE): Handle + SCHEDULER_IDENT. + * config/aarch64/aarch64.c (AARCH64_CORE): Handle + SCHEDULER_IDENT. + (aarch64_parse_cpu): mcpu implies a default value for mtune. + * config/aarch64/aarch64.h (AARCH64_CORE): Handle + SCHEDULER_IDENT. + 2013-12-18 James Greenhalgh * common/config/aarch64/aarch64-common.c diff --git a/gcc/config/aarch64/aarch64-cores.def b/gcc/config/aarch64/aarch64-cores.def index b631dbed924..1b4a49f7747 100644 --- a/gcc/config/aarch64/aarch64-cores.def +++ b/gcc/config/aarch64/aarch64-cores.def @@ -21,18 +21,18 @@ Before using #include to read this file, define a macro: - AARCH64_CORE(CORE_NAME, CORE_IDENT, ARCH, FLAGS, COSTS) + AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHEDULER_IDENT, ARCH, FLAGS, COSTS) The CORE_NAME is the name of the core, represented as a string constant. The CORE_IDENT is the name of the core, represented as an identifier. + The SCHEDULER_IDENT is the name of the core for which scheduling decisions + will be made, represented as an identifier. ARCH is the architecture revision implemented by the chip. FLAGS are the bitwise-or of the traits that apply to that core. This need not include flags implied by the architecture. COSTS is the name of the rtx_costs routine to use. */ -/* V8 Architecture Processors. - This list currently contains example CPUs that implement AArch64, and - therefore serves as a template for adding more CPUs in the future. */ +/* V8 Architecture Processors. */ -AARCH64_CORE("cortex-a53", cortexa53, 8, AARCH64_FL_FPSIMD, cortexa53) -AARCH64_CORE("cortex-a57", cortexa15, 8, AARCH64_FL_FPSIMD, generic) +AARCH64_CORE("cortex-a53", cortexa53, cortexa53, 8, AARCH64_FL_FPSIMD, cortexa53) +AARCH64_CORE("cortex-a57", cortexa15, cortexa15, 8, AARCH64_FL_FPSIMD, generic) diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h index 31e105f689e..62751127e8e 100644 --- a/gcc/config/aarch64/aarch64-opts.h +++ b/gcc/config/aarch64/aarch64-opts.h @@ -25,8 +25,8 @@ /* The various cores that implement AArch64. */ enum aarch64_processor { -#define AARCH64_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \ - IDENT, +#define AARCH64_CORE(NAME, INTERNAL_IDENT, IDENT, ARCH, FLAGS, COSTS) \ + INTERNAL_IDENT, #include "aarch64-cores.def" #undef AARCH64_CORE /* Used to indicate that no processor has been specified. */ diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 0c53e6475a8..e66808833f3 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -246,7 +246,7 @@ struct processor /* Processor cores implementing AArch64. */ static const struct processor all_cores[] = { -#define AARCH64_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \ +#define AARCH64_CORE(NAME, X, IDENT, ARCH, FLAGS, COSTS) \ {NAME, IDENT, #ARCH, FLAGS | AARCH64_FL_FOR_ARCH##ARCH, &COSTS##_tunings}, #include "aarch64-cores.def" #undef AARCH64_CORE @@ -5119,6 +5119,7 @@ aarch64_parse_cpu (void) if (strlen (cpu->name) == len && strncmp (cpu->name, str, len) == 0) { selected_cpu = cpu; + selected_tune = cpu; aarch64_isa_flags = selected_cpu->flags; if (ext != NULL) diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index d89c09b9c14..e3e4846d663 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -461,8 +461,8 @@ enum reg_class enum target_cpus { -#define AARCH64_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \ - TARGET_CPU_##IDENT, +#define AARCH64_CORE(NAME, INTERNAL_IDENT, IDENT, ARCH, FLAGS, COSTS) \ + TARGET_CPU_##INTERNAL_IDENT, #include "aarch64-cores.def" #undef AARCH64_CORE TARGET_CPU_generic -- cgit v1.2.1 From c535591bdf6fb193dc81563225eedf31da393345 Mon Sep 17 00:00:00 2001 From: jgreenhalgh Date: Wed, 18 Dec 2013 19:27:27 +0000 Subject: [AArch64 3/3 big.LITTLE] Add support for -mcpu=cortex-a57.cortex-a53 gcc/ * config/aarch64/aarch64-cores.def: Add support for -mcpu=cortex-a57.cortex-a53. * config/aarch64/aarch64-tune.md: Regenerate. * doc/invoke.texi: Document -mcpu=cortex-a57.cortex-a53. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206100 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config/aarch64/aarch64-cores.def | 4 ++++ gcc/config/aarch64/aarch64-tune.md | 2 +- gcc/doc/invoke.texi | 3 +++ 4 files changed, 15 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d8e6b99b3c9..660deebf9c8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-12-18 James Greenhalgh + + * config/aarch64/aarch64-cores.def: Add support for + -mcpu=cortex-a57.cortex-a53. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi: Document -mcpu=cortex-a57.cortex-a53. + 2013-12-18 James Greenhalgh * config/aarch64/aarch64-cores.def: Add new column for diff --git a/gcc/config/aarch64/aarch64-cores.def b/gcc/config/aarch64/aarch64-cores.def index 1b4a49f7747..430cc569295 100644 --- a/gcc/config/aarch64/aarch64-cores.def +++ b/gcc/config/aarch64/aarch64-cores.def @@ -36,3 +36,7 @@ AARCH64_CORE("cortex-a53", cortexa53, cortexa53, 8, AARCH64_FL_FPSIMD, cortexa53) AARCH64_CORE("cortex-a57", cortexa15, cortexa15, 8, AARCH64_FL_FPSIMD, generic) + +/* V8 big.LITTLE implementations. */ + +AARCH64_CORE("cortex-a57.cortex-a53", cortexa57cortexa53, cortexa53, 8, AARCH64_FL_FPSIMD, generic) diff --git a/gcc/config/aarch64/aarch64-tune.md b/gcc/config/aarch64/aarch64-tune.md index 84081d1ba57..b7e40e0b5d1 100644 --- a/gcc/config/aarch64/aarch64-tune.md +++ b/gcc/config/aarch64/aarch64-tune.md @@ -1,5 +1,5 @@ ;; -*- buffer-read-only: t -*- ;; Generated automatically by gentune.sh from aarch64-cores.def (define_attr "tune" - "cortexa53,cortexa15" + "cortexa53,cortexa15,cortexa57cortexa53" (const (symbol_ref "((enum attr_tune) aarch64_tune)"))) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 99ec1d2dce6..1a6d815f041 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -11334,6 +11334,9 @@ possible values for @var{cpu} are @samp{generic}, @samp{cortex-a53}, @samp{cortex-a57}. The possible values for @var{feature} are documented in the sub-section below. +Additionally, this option can specify that the target is a big.LITTLE system. +The only possible value is @samp{cortex-a57.cortex-a53}. + Where conflicting feature modifiers are specified, the right-most feature is used. -- cgit v1.2.1 From 25014fa71ea6bebbf52195b789618d7b04a3b35d Mon Sep 17 00:00:00 2001 From: janus Date: Wed, 18 Dec 2013 22:00:53 +0000 Subject: 2013-12-18 Janus Weil PR fortran/59493 * gfortran.h (gfc_find_intrinsic_vtab): Removed prototype. (gfc_find_vtab): New prototype. * class.c (gfc_find_intrinsic_vtab): Rename to 'find_intrinsic_vtab' and make static. Minor modifications. (gfc_find_vtab): New function. (gfc_class_initializer): Use new function 'gfc_find_vtab'. * check.c (gfc_check_move_alloc): Ditto. * expr.c (gfc_check_pointer_assign): Ditto. * interface.c (compare_actual_formal): Ditto. * resolve.c (resolve_allocate_expr, resolve_select_type): Ditto. * trans-expr.c (gfc_conv_intrinsic_to_class, gfc_trans_class_assign): Ditto. * trans-intrinsic.c (conv_intrinsic_move_alloc): Ditto. * trans-stmt.c (gfc_trans_allocate): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206101 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 18 +++++++++++++ gcc/fortran/check.c | 7 +---- gcc/fortran/class.c | 63 ++++++++++++++++++++++++------------------- gcc/fortran/expr.c | 8 +++--- gcc/fortran/gfortran.h | 2 +- gcc/fortran/interface.c | 2 +- gcc/fortran/resolve.c | 7 ++--- gcc/fortran/trans-expr.c | 10 +++---- gcc/fortran/trans-intrinsic.c | 10 ++----- gcc/fortran/trans-stmt.c | 11 ++------ 10 files changed, 69 insertions(+), 69 deletions(-) (limited to 'gcc') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 1a81bfcc0cc..2a1e1972e70 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,21 @@ +2013-12-18 Janus Weil + + PR fortran/59493 + * gfortran.h (gfc_find_intrinsic_vtab): Removed prototype. + (gfc_find_vtab): New prototype. + * class.c (gfc_find_intrinsic_vtab): Rename to 'find_intrinsic_vtab' and + make static. Minor modifications. + (gfc_find_vtab): New function. + (gfc_class_initializer): Use new function 'gfc_find_vtab'. + * check.c (gfc_check_move_alloc): Ditto. + * expr.c (gfc_check_pointer_assign): Ditto. + * interface.c (compare_actual_formal): Ditto. + * resolve.c (resolve_allocate_expr, resolve_select_type): Ditto. + * trans-expr.c (gfc_conv_intrinsic_to_class, gfc_trans_class_assign): + Ditto. + * trans-intrinsic.c (conv_intrinsic_move_alloc): Ditto. + * trans-stmt.c (gfc_trans_allocate): Ditto. + 2013-12-16 Janus Weil PR fortran/54949 diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 1508c744724..0064761e170 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -2858,12 +2858,7 @@ gfc_check_move_alloc (gfc_expr *from, gfc_expr *to) /* CLASS arguments: Make sure the vtab of from is present. */ if (to->ts.type == BT_CLASS && !UNLIMITED_POLY (from)) - { - if (from->ts.type == BT_CLASS || from->ts.type == BT_DERIVED) - gfc_find_derived_vtab (from->ts.u.derived); - else - gfc_find_intrinsic_vtab (&from->ts); - } + gfc_find_vtab (&from->ts); return true; } diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c index b65cd892b1d..5c3a4ec37fb 100644 --- a/gcc/fortran/class.c +++ b/gcc/fortran/class.c @@ -423,18 +423,11 @@ gfc_class_initializer (gfc_typespec *ts, gfc_expr *init_expr) gfc_expr *init; gfc_component *comp; gfc_symbol *vtab = NULL; - bool is_unlimited_polymorphic; - is_unlimited_polymorphic = ts->u.derived - && ts->u.derived->components->ts.u.derived - && ts->u.derived->components->ts.u.derived->attr.unlimited_polymorphic; - - if (is_unlimited_polymorphic && init_expr) - vtab = gfc_find_intrinsic_vtab (&ts->u.derived->components->ts); - else if (init_expr && init_expr->expr_type != EXPR_NULL) - vtab = gfc_find_derived_vtab (init_expr->ts.u.derived); + if (init_expr && init_expr->expr_type != EXPR_NULL) + vtab = gfc_find_vtab (&init_expr->ts); else - vtab = gfc_find_derived_vtab (ts->u.derived); + vtab = gfc_find_vtab (ts); init = gfc_get_structure_constructor_expr (ts->type, ts->kind, &ts->u.derived->declared_at); @@ -2403,39 +2396,34 @@ yes: /* Find (or generate) the symbol for an intrinsic type's vtab. This is - need to support unlimited polymorphism. */ + needed to support unlimited polymorphism. */ -gfc_symbol * -gfc_find_intrinsic_vtab (gfc_typespec *ts) +static gfc_symbol * +find_intrinsic_vtab (gfc_typespec *ts) { gfc_namespace *ns; gfc_symbol *vtab = NULL, *vtype = NULL, *found_sym = NULL; gfc_symbol *copy = NULL, *src = NULL, *dst = NULL; int charlen = 0; - if (ts->type == BT_CHARACTER && ts->deferred) + if (ts->type == BT_CHARACTER) { - gfc_error ("TODO: Deferred character length variable at %C cannot " - "yet be associated with unlimited polymorphic entities"); - return NULL; + if (ts->deferred) + { + gfc_error ("TODO: Deferred character length variable at %C cannot " + "yet be associated with unlimited polymorphic entities"); + return NULL; + } + else if (ts->u.cl && ts->u.cl->length + && ts->u.cl->length->expr_type == EXPR_CONSTANT) + charlen = mpz_get_si (ts->u.cl->length->value.integer); } - if (ts->type == BT_UNKNOWN) - return NULL; - - /* Sometimes the typespec is passed from a single call. */ - if (ts->type == BT_DERIVED || ts->type == BT_CLASS) - return gfc_find_derived_vtab (ts->u.derived); - /* Find the top-level namespace. */ for (ns = gfc_current_ns; ns; ns = ns->parent) if (!ns->parent) break; - if (ts->type == BT_CHARACTER && ts->u.cl && ts->u.cl->length - && ts->u.cl->length->expr_type == EXPR_CONSTANT) - charlen = mpz_get_si (ts->u.cl->length->value.integer); - if (ns) { char name[GFC_MAX_SYMBOL_LEN+1], tname[GFC_MAX_SYMBOL_LEN+1]; @@ -2636,6 +2624,25 @@ cleanup: } +/* Find (or generate) a vtab for an arbitrary type (derived or intrinsic). */ + +gfc_symbol * +gfc_find_vtab (gfc_typespec *ts) +{ + switch (ts->type) + { + case BT_UNKNOWN: + return NULL; + case BT_DERIVED: + return gfc_find_derived_vtab (ts->u.derived); + case BT_CLASS: + return gfc_find_derived_vtab (ts->u.derived->components->ts.u.derived); + default: + return find_intrinsic_vtab (ts); + } +} + + /* General worker function to find either a type-bound procedure or a type-bound user operator. */ diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index df96e5b4d35..00a4beff62b 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -3618,11 +3618,9 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue) return false; } - /* Make sure the vtab is present. */ - if (lvalue->ts.type == BT_CLASS && rvalue->ts.type == BT_DERIVED) - gfc_find_derived_vtab (rvalue->ts.u.derived); - else if (UNLIMITED_POLY (lvalue) && !UNLIMITED_POLY (rvalue)) - gfc_find_intrinsic_vtab (&rvalue->ts); + /* Make sure the vtab is present. */ + if (lvalue->ts.type == BT_CLASS && !UNLIMITED_POLY (rvalue)) + gfc_find_vtab (&rvalue->ts); /* Check rank remapping. */ if (rank_remap) diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index ff3ffb5a1c3..03d9136d01b 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -2990,7 +2990,7 @@ unsigned int gfc_hash_value (gfc_symbol *); bool gfc_build_class_symbol (gfc_typespec *, symbol_attribute *, gfc_array_spec **, bool); gfc_symbol *gfc_find_derived_vtab (gfc_symbol *); -gfc_symbol *gfc_find_intrinsic_vtab (gfc_typespec *); +gfc_symbol *gfc_find_vtab (gfc_typespec *); gfc_symtree* gfc_find_typebound_proc (gfc_symbol*, bool*, const char*, bool, locus*); gfc_symtree* gfc_find_typebound_user_op (gfc_symbol*, bool*, diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 1cd1c2b0e3a..243b0f12150 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -2606,7 +2606,7 @@ compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal, if (UNLIMITED_POLY (f->sym) && a->expr->ts.type != BT_DERIVED && a->expr->ts.type != BT_CLASS) - gfc_find_intrinsic_vtab (&a->expr->ts); + gfc_find_vtab (&a->expr->ts); if (a->expr->expr_type == EXPR_NULL && ((f->sym->ts.type != BT_CLASS && !f->sym->attr.pointer diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index db2f5eb705a..57e6cbb979e 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -6930,10 +6930,7 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code) gcc_assert (ts); - if (ts->type == BT_CLASS || ts->type == BT_DERIVED) - gfc_find_derived_vtab (ts->u.derived); - else - gfc_find_intrinsic_vtab (ts); + gfc_find_vtab (ts); if (dimension) e = gfc_expr_to_initialize (e); @@ -8054,7 +8051,7 @@ resolve_select_type (gfc_code *code, gfc_namespace *old_ns) gfc_symbol *ivtab; gfc_expr *e; - ivtab = gfc_find_intrinsic_vtab (&c->ts); + ivtab = gfc_find_vtab (&c->ts); gcc_assert (ivtab && CLASS_DATA (ivtab)->initializer); e = CLASS_DATA (ivtab)->initializer; c->low = c->high = gfc_copy_expr (e); diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 62ba93203cd..d6498ae607a 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -558,7 +558,7 @@ gfc_conv_intrinsic_to_class (gfc_se *parmse, gfc_expr *e, /* Set the vptr. */ ctree = gfc_class_vptr_get (var); - vtab = gfc_find_intrinsic_vtab (&e->ts); + vtab = gfc_find_vtab (&e->ts); gcc_assert (vtab); tmp = gfc_build_addr_expr (NULL_TREE, gfc_get_symbol_decl (vtab)); gfc_add_modify (&parmse->pre, ctree, @@ -1015,12 +1015,10 @@ gfc_trans_class_assign (gfc_expr *expr1, gfc_expr *expr2, gfc_exec_op op) goto assign_vptr; } - if (expr2->ts.type == BT_DERIVED) - vtab = gfc_find_derived_vtab (expr2->ts.u.derived); - else if (expr2->expr_type == EXPR_NULL) - vtab = gfc_find_derived_vtab (expr1->ts.u.derived); + if (expr2->expr_type == EXPR_NULL) + vtab = gfc_find_vtab (&expr1->ts); else - vtab = gfc_find_intrinsic_vtab (&expr2->ts); + vtab = gfc_find_vtab (&expr2->ts); gcc_assert (vtab); rhs = gfc_get_expr (); diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 4acdc8dc756..1f5d6154bef 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -7657,10 +7657,7 @@ conv_intrinsic_move_alloc (gfc_code *code) } else { - if (from_expr->ts.type != BT_DERIVED) - vtab = gfc_find_intrinsic_vtab (&from_expr->ts); - else - vtab = gfc_find_derived_vtab (from_expr->ts.u.derived); + vtab = gfc_find_vtab (&from_expr->ts); gcc_assert (vtab); tmp = gfc_build_addr_expr (NULL_TREE, gfc_get_symbol_decl (vtab)); gfc_add_modify_loc (input_location, &block, to_se.expr, @@ -7714,10 +7711,7 @@ conv_intrinsic_move_alloc (gfc_code *code) } else { - if (from_expr->ts.type != BT_DERIVED) - vtab = gfc_find_intrinsic_vtab (&from_expr->ts); - else - vtab = gfc_find_derived_vtab (from_expr->ts.u.derived); + vtab = gfc_find_vtab (&from_expr->ts); gcc_assert (vtab); tmp = gfc_build_addr_expr (NULL_TREE, gfc_get_symbol_decl (vtab)); gfc_add_modify_loc (input_location, &block, to_se.expr, diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 4f211975581..51d037e90f9 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -5144,10 +5144,7 @@ gfc_trans_allocate (gfc_code * code) if (ts->type == BT_DERIVED || UNLIMITED_POLY (e)) { - if (ts->type == BT_DERIVED) - vtab = gfc_find_derived_vtab (ts->u.derived); - else - vtab = gfc_find_intrinsic_vtab (ts); + vtab = gfc_find_vtab (ts); gcc_assert (vtab); gfc_init_se (&lse, NULL); lse.want_pointer = 1; @@ -5232,12 +5229,8 @@ gfc_trans_allocate (gfc_code * code) ppc = gfc_copy_expr (rhs); gfc_add_vptr_component (ppc); } - else if (rhs->ts.type == BT_DERIVED) - ppc = gfc_lval_expr_from_sym - (gfc_find_derived_vtab (rhs->ts.u.derived)); else - ppc = gfc_lval_expr_from_sym - (gfc_find_intrinsic_vtab (&rhs->ts)); + ppc = gfc_lval_expr_from_sym (gfc_find_vtab (&rhs->ts)); gfc_add_component_ref (ppc, "_copy"); ppc_code = gfc_get_code (EXEC_CALL); -- cgit v1.2.1 From 1af038be028da98c8071aee04aca9895c78191db Mon Sep 17 00:00:00 2001 From: kargl Date: Wed, 18 Dec 2013 23:41:50 +0000 Subject: 2013-12-18 Steven G. Kargl * io/read.c (read_f): Convert assert to runtime error. 2013-12-18 Steven G. Kargl * gfortran.dg/io_err_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206102 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gfortran.dg/io_err_1.f90 | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/io_err_1.f90 (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f4e055fdc89..2ba0cbf71c5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-18 Steven G. Kargl + + * gfortran.dg/io_err_1.f90: New test. + 2013-12-18 Balaji V. Iyer * c-c++-common/cilk-plus/SE/ef_test.c: New test. diff --git a/gcc/testsuite/gfortran.dg/io_err_1.f90 b/gcc/testsuite/gfortran.dg/io_err_1.f90 new file mode 100644 index 00000000000..4159a041a72 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/io_err_1.f90 @@ -0,0 +1,14 @@ +! { dg-do run } +! { dg-shouldfail "Compile-time specifier checking" } +! +! Contributed by Dominique Dhumieres +program read + character(50) :: buf='0.D99999' + double precision val + read (UNIT=buf, FMT='(D60.0)', ERR=10) Val + call abort +10 read (UNIT=buf, FMT='(D60.0)') Val +end program read +! { dg-output "At line 10 of file.*" } +! { dg-output "Fortran runtime error: Bad value during floating point read" } + -- cgit v1.2.1 From 495ec164bd7e248bdaff0e62e5f0d4e42598a0a1 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 19 Dec 2013 00:16:30 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206105 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ff3ac57569b..c706ed7b963 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131218 +20131219 -- cgit v1.2.1 From f2d32ded5ce6cd5c7211258c4c5cdfe13e544758 Mon Sep 17 00:00:00 2001 From: jasonwucj Date: Thu, 19 Dec 2013 08:32:20 +0000 Subject: 2013-12-19 Monk Chiang gcc/ * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Consider TARGET_CPU_DEFAULT settings. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206106 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/common/config/nds32/nds32-common.c | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 660deebf9c8..5cd142256ac 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-19 Monk Chiang + + * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): + Consider TARGET_CPU_DEFAULT settings. + 2013-12-18 James Greenhalgh * config/aarch64/aarch64-cores.def: Add support for diff --git a/gcc/common/config/nds32/nds32-common.c b/gcc/common/config/nds32/nds32-common.c index f82f725af14..6a2ef81a1fa 100644 --- a/gcc/common/config/nds32/nds32-common.c +++ b/gcc/common/config/nds32/nds32-common.c @@ -86,14 +86,23 @@ static const struct default_options nds32_option_optimization_table[] = /* Run-time Target Specification. */ -/* Default enable +/* The default target flags consist of + TARGET_CPU_DEFAULT and other MASK_XXX flags. + + The value of TARGET_CPU_DEFAULT is set by + the process of 'configure' and 'make' stage. + Please check gcc/config.gcc for more implementation detail. + + Other MASK_XXX flags are set individually. + By default we enable TARGET_GP_DIRECT: Generate gp-imply instruction. TARGET_16_BIT : Generate 16/32 bit mixed length instruction. TARGET_PERF_EXT : Generate performance extention instrcution. TARGET_CMOV : Generate conditional move instruction. */ #undef TARGET_DEFAULT_TARGET_FLAGS #define TARGET_DEFAULT_TARGET_FLAGS \ - (MASK_GP_DIRECT \ + (TARGET_CPU_DEFAULT \ + | MASK_GP_DIRECT \ | MASK_16_BIT \ | MASK_PERF_EXT \ | MASK_CMOV) -- cgit v1.2.1 From c51f5ca52e4fe423bcde3f3231cdcd10099dd5a3 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Thu, 19 Dec 2013 09:13:13 +0000 Subject: * print-tree.c (print_node) : Print no_force_blk_flag for all types. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206107 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/print-tree.c | 8 ++------ 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5cd142256ac..e4bb6b724ed 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-19 Eric Botcazou + + * print-tree.c (print_node) : Print no_force_blk_flag + for all types. + 2013-12-19 Monk Chiang * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): diff --git a/gcc/print-tree.c b/gcc/print-tree.c index 1f4bf222aa1..f4a98d564ae 100644 --- a/gcc/print-tree.c +++ b/gcc/print-tree.c @@ -583,16 +583,12 @@ print_node (FILE *file, const char *prefix, tree node, int indent) if (TYPE_UNSIGNED (node)) fputs (" unsigned", file); - /* The no-force-blk flag is used for different things in - different types. */ - if ((code == RECORD_TYPE - || code == UNION_TYPE - || code == QUAL_UNION_TYPE) - && TYPE_NO_FORCE_BLK (node)) + if (TYPE_NO_FORCE_BLK (node)) fputs (" no-force-blk", file); if (TYPE_STRING_FLAG (node)) fputs (" string-flag", file); + if (TYPE_NEEDS_CONSTRUCTING (node)) fputs (" needs-constructing", file); -- cgit v1.2.1 From c376ebb3c1ef03e1fed81cea0dd157d42ab2dd03 Mon Sep 17 00:00:00 2001 From: mpolacek Date: Thu, 19 Dec 2013 10:25:34 +0000 Subject: * config/i386/i386.c (ix86_parse_stringop_strategy_string): Remove variable alg. Use index variable i directly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206108 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.c | 12 +++--------- 2 files changed, 8 insertions(+), 9 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e4bb6b724ed..13bb35aedca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-19 Marek Polacek + + * config/i386/i386.c (ix86_parse_stringop_strategy_string): Remove + variable alg. Use index variable i directly. + 2013-12-19 Eric Botcazou * print-tree.c (print_node) : Print no_force_blk_flag diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 0be671da390..862231bf80c 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2856,7 +2856,6 @@ ix86_parse_stringop_strategy_string (char *strategy_str, bool is_memset) do { int maxs; - stringop_alg alg; char alg_name[128]; char align[16]; next_range_str = strchr (curr_range_str, ','); @@ -2879,13 +2878,8 @@ ix86_parse_stringop_strategy_string (char *strategy_str, bool is_memset) } for (i = 0; i < last_alg; i++) - { - if (!strcmp (alg_name, stringop_alg_names[i])) - { - alg = (stringop_alg) i; - break; - } - } + if (!strcmp (alg_name, stringop_alg_names[i])) + break; if (i == last_alg) { @@ -2896,7 +2890,7 @@ ix86_parse_stringop_strategy_string (char *strategy_str, bool is_memset) } input_ranges[n].max = maxs; - input_ranges[n].alg = alg; + input_ranges[n].alg = (stringop_alg) i; if (!strcmp (align, "align")) input_ranges[n].noalign = false; else if (!strcmp (align, "noalign")) -- cgit v1.2.1 From 531ebae2274f30ddfb6a97b2665951535f98c0cb Mon Sep 17 00:00:00 2001 From: ktkachov Date: Thu, 19 Dec 2013 10:33:15 +0000 Subject: 2013-12-19 Kyrylo Tkachov * c-c++-common/cilk-plus/SE/ef_error.c: Add fopenmp effective target check. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206109 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c | 1 + 2 files changed, 6 insertions(+) (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2ba0cbf71c5..b5100b7f375 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-19 Kyrylo Tkachov + + * c-c++-common/cilk-plus/SE/ef_error.c: Add fopenmp effective + target check. + 2013-12-18 Steven G. Kargl * gfortran.dg/io_err_1.f90: New test. diff --git a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c index 6a4b4a4178e..478bfa1fc4a 100644 --- a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c +++ b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-fcilkplus -fopenmp" } */ +/* { dg-require-effective-target fopenmp } */ #pragma omp declare simd linear(y:1) simdlen(4) __attribute__((vector (linear (y:1), vectorlength(4)))) -- cgit v1.2.1 From 914252e9e5b0cf8d3824f20e867b8f8533cadd41 Mon Sep 17 00:00:00 2001 From: gganesh Date: Thu, 19 Dec 2013 11:04:43 +0000 Subject: Enable TARGET_LOOP_UNROLL_ADJUST for bdver3/bdver4 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206110 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 ++++++++ gcc/config/i386/i386.c | 62 ++++++++++++++++++++++++++++++++++++++++++++ gcc/config/i386/i386.h | 2 ++ gcc/config/i386/x86-tune.def | 6 +++++ 4 files changed, 81 insertions(+) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 13bb35aedca..6f69334aa8a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2013-12-19 Ganesh Gopalasubramanian + + * config/i386/i386.c: Include cfgloop.h. + (ix86_loop_memcount): New function. + (ix86_loop_unroll_adjust): New function. + (TARGET_LOOP_UNROLL_ADJUST): Define. + * config/i386/i386.h + (TARGET_ADJUST_UNROLL): Define. + * config/i386/x86-tune.def + (X86_TUNE_ADJUST_UNROLL): Define. + 2013-12-19 Marek Polacek * config/i386/i386.c (ix86_parse_stringop_strategy_string): Remove diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 862231bf80c..f82d1a40470 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -64,6 +64,7 @@ along with GCC; see the file COPYING3. If not see #include "is-a.h" #include "gimple.h" #include "gimplify.h" +#include "cfgloop.h" #include "dwarf2.h" #include "df.h" #include "tm-constrs.h" @@ -44014,6 +44015,64 @@ ix86_simd_clone_usable (struct cgraph_node *node) } } +/* This function gives out the number of memory references. + This value determines the unrolling factor for + bdver3 and bdver4 architectures. */ + +static int +ix86_loop_memcount (rtx *x, unsigned *mem_count) +{ + if (*x != NULL_RTX && MEM_P (*x)) + { + enum machine_mode mode; + unsigned int n_words; + + mode = GET_MODE (*x); + n_words = GET_MODE_SIZE (mode) / UNITS_PER_WORD; + + if (n_words > 4) + (*mem_count)+=2; + else + (*mem_count)+=1; + } + return 0; +} + +/* This function adjusts the unroll factor based on + the hardware capabilities. For ex, bdver3 has + a loop buffer which makes unrolling of smaller + loops less important. This function decides the + unroll factor using number of memory references + (value 32 is used) as a heuristic. */ + +static unsigned +ix86_loop_unroll_adjust (unsigned nunroll, struct loop *loop) +{ + basic_block *bbs; + rtx insn; + unsigned i; + unsigned mem_count = 0; + + if (!TARGET_ADJUST_UNROLL) + return nunroll; + + /* Count the number of memory references within the loop body. */ + bbs = get_loop_body (loop); + for (i = 0; i < loop->num_nodes; i++) + { + for (insn = BB_HEAD (bbs[i]); insn != BB_END (bbs[i]); insn = NEXT_INSN (insn)) + if (NONDEBUG_INSN_P (insn)) + for_each_rtx (&insn, (rtx_function) ix86_loop_memcount, &mem_count); + } + free (bbs); + + if (mem_count && mem_count <=32) + return 32/mem_count; + + return nunroll; +} + + /* Implement TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P. */ static bool @@ -44499,6 +44558,9 @@ ix86_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) #define TARGET_INIT_LIBFUNCS darwin_rename_builtins #endif +#undef TARGET_LOOP_UNROLL_ADJUST +#define TARGET_LOOP_UNROLL_ADJUST ix86_loop_unroll_adjust + #undef TARGET_SPILL_CLASS #define TARGET_SPILL_CLASS ix86_spill_class diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 7efd1e01f4e..b6e7d4611e6 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -443,6 +443,8 @@ extern unsigned char ix86_tune_features[X86_TUNE_LAST]; ix86_tune_features[X86_TUNE_AVOID_MEM_OPND_FOR_CMOVE] #define TARGET_SPLIT_MEM_OPND_FOR_FP_CONVERTS \ ix86_tune_features[X86_TUNE_SPLIT_MEM_OPND_FOR_FP_CONVERTS] +#define TARGET_ADJUST_UNROLL \ + ix86_tune_features[X86_TUNE_ADJUST_UNROLL] /* Feature tests against the various architecture variations. */ enum ix86_arch_indices { diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def index 4c13c3a0ec6..95396850172 100644 --- a/gcc/config/i386/x86-tune.def +++ b/gcc/config/i386/x86-tune.def @@ -503,3 +503,9 @@ DEF_TUNE (X86_TUNE_QIMODE_MATH, "qimode_math", ~0) arithmetic to 32bit via PROMOTE_MODE macro. This code generation scheme is usually used for RISC targets. */ DEF_TUNE (X86_TUNE_PROMOTE_QI_REGS, "promote_qi_regs", 0) + +/* X86_TUNE_ADJUST_UNROLL: This enables adjusting the unroll factor based + on hardware capabilities. Bdver3 hardware has a loop buffer which makes + unrolling small loop less important. For, such architectures we adjust + the unroll factor so that the unrolled loop fits the loop buffer. */ +DEF_TUNE (X86_TUNE_ADJUST_UNROLL, "adjust_unroll_factor", m_BDVER3 | m_BDVER4) -- cgit v1.2.1 From 77bc991286f1e7e90335648dc049948259dc64b6 Mon Sep 17 00:00:00 2001 From: krebbel Date: Thu, 19 Dec 2013 12:00:43 +0000 Subject: 2013-12-19 Dominik Vogt Andreas Krebbel * config/s390/s390.c (s390_hotpatch_trampoline_halfwords_default): New constant (s390_hotpatch_trampoline_halfwords_max): New constant (s390_hotpatch_trampoline_halfwords): New static variable (get_hotpatch_attribute): New function (s390_handle_hotpatch_attribute): New function (s390_attribute_table): New target specific attribute table to implement the hotpatch attribute (s390_option_override): Parse hotpatch options (s390_function_num_hotpatch_trampoline_halfwords): New function (s390_can_inline_p): Implement target hook to suppress hotpatching for explicitly inlined functions (s390_asm_output_function_label): Generate hotpatch prologue (TARGET_ATTRIBUTE_TABLE): Define to implement target attribute table (TARGET_CAN_INLINE_P): Define to implement target hook * config/s390/s390.opt (mhotpatch): New options -mhotpatch, -mhotpatch= * config/s390/s390-protos.h (s390_asm_output_function_label): Add prototype * config/s390/s390.h (ASM_OUTPUT_FUNCTION_LABEL): Target specific function label generation for hotpatching (FUNCTION_BOUNDARY): Align functions to eight bytes * doc/extend.texi: Document hotpatch attribute * doc/invoke.texi: Document -mhotpatch option 2013-12-19 Dominik Vogt Andreas Krebbel * gcc/testsuite/gcc.target/s390/hotpatch-1.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-2.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-3.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-4.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-5.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-6.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-7.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-8.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-9.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-10.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-11.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-12.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c: New test * gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c: New test git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206111 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 27 +++ gcc/config/s390/s390-protos.h | 1 + gcc/config/s390/s390.c | 201 +++++++++++++++++++++ gcc/config/s390/s390.h | 5 +- gcc/config/s390/s390.opt | 8 + gcc/doc/extend.texi | 11 ++ gcc/doc/invoke.texi | 18 +- gcc/testsuite/ChangeLog | 23 +++ gcc/testsuite/gcc.target/s390/hotpatch-1.c | 20 ++ gcc/testsuite/gcc.target/s390/hotpatch-10.c | 21 +++ gcc/testsuite/gcc.target/s390/hotpatch-11.c | 20 ++ gcc/testsuite/gcc.target/s390/hotpatch-12.c | 20 ++ gcc/testsuite/gcc.target/s390/hotpatch-2.c | 20 ++ gcc/testsuite/gcc.target/s390/hotpatch-3.c | 20 ++ gcc/testsuite/gcc.target/s390/hotpatch-4.c | 26 +++ gcc/testsuite/gcc.target/s390/hotpatch-5.c | 21 +++ gcc/testsuite/gcc.target/s390/hotpatch-6.c | 21 +++ gcc/testsuite/gcc.target/s390/hotpatch-7.c | 21 +++ gcc/testsuite/gcc.target/s390/hotpatch-8.c | 28 +++ gcc/testsuite/gcc.target/s390/hotpatch-9.c | 21 +++ gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c | 27 +++ gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c | 27 +++ gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c | 27 +++ gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c | 11 ++ gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c | 28 +++ gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c | 11 ++ gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c | 68 +++++++ 27 files changed, 750 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-1.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-10.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-11.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-12.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-2.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-3.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-4.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-5.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-6.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-7.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-8.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-9.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c create mode 100644 gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f69334aa8a..94170651d7f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,30 @@ +2013-12-19 Dominik Vogt + Andreas Krebbel + + * config/s390/s390.c (s390_hotpatch_trampoline_halfwords_default): New + constant + (s390_hotpatch_trampoline_halfwords_max): New constant + (s390_hotpatch_trampoline_halfwords): New static variable + (get_hotpatch_attribute): New function + (s390_handle_hotpatch_attribute): New function + (s390_attribute_table): New target specific attribute table to implement + the hotpatch attribute + (s390_option_override): Parse hotpatch options + (s390_function_num_hotpatch_trampoline_halfwords): New function + (s390_can_inline_p): Implement target hook to + suppress hotpatching for explicitly inlined functions + (s390_asm_output_function_label): Generate hotpatch prologue + (TARGET_ATTRIBUTE_TABLE): Define to implement target attribute table + (TARGET_CAN_INLINE_P): Define to implement target hook + * config/s390/s390.opt (mhotpatch): New options -mhotpatch, -mhotpatch= + * config/s390/s390-protos.h (s390_asm_output_function_label): Add + prototype + * config/s390/s390.h (ASM_OUTPUT_FUNCTION_LABEL): Target specific + function label generation for hotpatching + (FUNCTION_BOUNDARY): Align functions to eight bytes + * doc/extend.texi: Document hotpatch attribute + * doc/invoke.texi: Document -mhotpatch option + 2013-12-19 Ganesh Gopalasubramanian * config/i386/i386.c: Include cfgloop.h. diff --git a/gcc/config/s390/s390-protos.h b/gcc/config/s390/s390-protos.h index 67283df4553..7b43ed01b65 100644 --- a/gcc/config/s390/s390-protos.h +++ b/gcc/config/s390/s390-protos.h @@ -110,5 +110,6 @@ extern bool s390_decompose_shift_count (rtx, rtx *, HOST_WIDE_INT *); extern int s390_branch_condition_mask (rtx); extern int s390_compare_and_branch_condition_mask (rtx); extern bool s390_extzv_shift_ok (int, int, unsigned HOST_WIDE_INT); +extern void s390_asm_output_function_label (FILE *, const char *, tree); #endif /* RTX_CODE */ diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index f9b7cd0f741..5319a69e6e6 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -434,6 +434,65 @@ struct GTY(()) machine_function bytes on a z10 (or higher) CPU. */ #define PREDICT_DISTANCE (TARGET_Z10 ? 384 : 2048) +static const int s390_hotpatch_trampoline_halfwords_default = 12; +static const int s390_hotpatch_trampoline_halfwords_max = 1000000; +static int s390_hotpatch_trampoline_halfwords = -1; + +/* Return the argument of the given hotpatch attribute or the default value if + no argument is present. */ + +static inline int +get_hotpatch_attribute (tree hotpatch_attr) +{ + const_tree args; + + args = TREE_VALUE (hotpatch_attr); + + return (args) ? + TREE_INT_CST_LOW (TREE_VALUE (args)): + s390_hotpatch_trampoline_halfwords_default; +} + +/* Check whether the hotpatch attribute is applied to a function and, if it has + an argument, the argument is valid. */ + +static tree +s390_handle_hotpatch_attribute (tree *node, tree name, tree args, + int flags ATTRIBUTE_UNUSED, bool *no_add_attrs) +{ + if (TREE_CODE (*node) != FUNCTION_DECL) + { + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); + *no_add_attrs = true; + } + else if (args) + { + tree expr = TREE_VALUE (args); + + if (TREE_CODE (expr) != INTEGER_CST + || !INTEGRAL_TYPE_P (TREE_TYPE (expr)) + || TREE_INT_CST_HIGH (expr) != 0 + || TREE_INT_CST_LOW (expr) > (unsigned int) + s390_hotpatch_trampoline_halfwords_max) + { + error ("requested %qE attribute is not a non-negative integer" + " constant or too large (max. %d)", name, + s390_hotpatch_trampoline_halfwords_max); + *no_add_attrs = true; + } + } + + return NULL_TREE; +} + +static const struct attribute_spec s390_attribute_table[] = { + { "hotpatch", 0, 1, true, false, false, s390_handle_hotpatch_attribute, false + }, + /* End element. */ + { NULL, 0, 0, false, false, false, NULL, false } +}; + /* Return the alignment for LABEL. We default to the -falign-labels value except for the literal pool base label. */ int @@ -1622,6 +1681,46 @@ s390_init_machine_status (void) static void s390_option_override (void) { + unsigned int i; + cl_deferred_option *opt; + vec *v = + (vec *) s390_deferred_options; + + if (v) + FOR_EACH_VEC_ELT (*v, i, opt) + { + switch (opt->opt_index) + { + case OPT_mhotpatch: + s390_hotpatch_trampoline_halfwords = (opt->value) ? + s390_hotpatch_trampoline_halfwords_default : -1; + break; + case OPT_mhotpatch_: + { + int val; + + val = integral_argument (opt->arg); + if (val == -1) + { + /* argument is not a plain number */ + error ("argument to %qs should be a non-negative integer", + "-mhotpatch="); + break; + } + else if (val > s390_hotpatch_trampoline_halfwords_max) + { + error ("argument to %qs is too large (max. %d)", + "-mhotpatch=", s390_hotpatch_trampoline_halfwords_max); + break; + } + s390_hotpatch_trampoline_halfwords = val; + break; + } + default: + gcc_unreachable (); + } + } + /* Set up function hooks. */ init_machine_status = s390_init_machine_status; @@ -5347,6 +5446,102 @@ get_some_local_dynamic_name (void) gcc_unreachable (); } +/* Returns -1 if the function should not be made hotpatchable. Otherwise it + returns a number >= 0 that is the desired size of the hotpatch trampoline + in halfwords. */ + +static int s390_function_num_hotpatch_trampoline_halfwords (tree decl, + bool do_warn) +{ + tree attr; + + if (DECL_DECLARED_INLINE_P (decl) + || DECL_ARTIFICIAL (decl) + || MAIN_NAME_P (DECL_NAME (decl))) + { + /* - Explicitly inlined functions cannot be hotpatched. + - Artificial functions need not be hotpatched. + - Making the main function hotpatchable is useless. */ + return -1; + } + attr = lookup_attribute ("hotpatch", DECL_ATTRIBUTES (decl)); + if (attr || s390_hotpatch_trampoline_halfwords >= 0) + { + if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (decl))) + { + if (do_warn) + warning (OPT_Wattributes, "function %qE with the %qs attribute" + " is not hotpatchable", DECL_NAME (decl), "always_inline"); + return -1; + } + else + { + return (attr) ? + get_hotpatch_attribute (attr) : s390_hotpatch_trampoline_halfwords; + } + } + + return -1; +} + +/* Hook to determine if one function can safely inline another. */ + +static bool +s390_can_inline_p (tree caller, tree callee) +{ + if (s390_function_num_hotpatch_trampoline_halfwords (callee, false) >= 0) + return false; + + return default_target_can_inline_p (caller, callee); +} + +/* Write the extra assembler code needed to declare a function properly. */ + +void +s390_asm_output_function_label (FILE *asm_out_file, const char *fname, + tree decl) +{ + int hotpatch_trampoline_halfwords = -1; + + if (decl) + { + hotpatch_trampoline_halfwords = + s390_function_num_hotpatch_trampoline_halfwords (decl, true); + if (hotpatch_trampoline_halfwords >= 0 + && decl_function_context (decl) != NULL_TREE) + { + warning_at (0, DECL_SOURCE_LOCATION (decl), + "hotpatch_prologue is not compatible with nested" + " function"); + hotpatch_trampoline_halfwords = -1; + } + } + + if (hotpatch_trampoline_halfwords > 0) + { + int i; + + /* Add a trampoline code area before the function label and initialize it + with two-byte nop instructions. This area can be overwritten with code + that jumps to a patched version of the function. */ + for (i = 0; i < hotpatch_trampoline_halfwords; i++) + asm_fprintf (asm_out_file, "\tnopr\t%%r7\n"); + /* Note: The function label must be aligned so that (a) the bytes of the + following nop do not cross a cacheline boundary, and (b) a jump address + (eight bytes for 64 bit targets, 4 bytes for 32 bit targets) can be + stored directly before the label without crossing a cacheline + boundary. All this is necessary to make sure the trampoline code can + be changed atomically. */ + } + + ASM_OUTPUT_LABEL (asm_out_file, fname); + + /* Output a four-byte nop if hotpatching is enabled. This can be overwritten + atomically with a relative backwards jump to the trampoline area. */ + if (hotpatch_trampoline_halfwords >= 0) + asm_fprintf (asm_out_file, "\tnop\t0\n"); +} + /* Output machine-dependent UNSPECs occurring in address constant X in assembler syntax to stdio stream FILE. Returns true if the constant X could be recognized, false otherwise. */ @@ -11920,6 +12115,12 @@ s390_loop_unroll_adjust (unsigned nunroll, struct loop *loop) #undef TARGET_HARD_REGNO_SCRATCH_OK #define TARGET_HARD_REGNO_SCRATCH_OK s390_hard_regno_scratch_ok +#undef TARGET_ATTRIBUTE_TABLE +#define TARGET_ATTRIBUTE_TABLE s390_attribute_table + +#undef TARGET_CAN_INLINE_P +#define TARGET_CAN_INLINE_P s390_can_inline_p + struct gcc_target targetm = TARGET_INITIALIZER; #include "gt-s390.h" diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h index bca18fe36f5..75b642b4c2b 100644 --- a/gcc/config/s390/s390.h +++ b/gcc/config/s390/s390.h @@ -217,7 +217,7 @@ enum processor_flags #define STACK_BOUNDARY 64 /* Allocation boundary (in *bits*) for the code of a function. */ -#define FUNCTION_BOUNDARY 32 +#define FUNCTION_BOUNDARY 64 /* There is no point aligning anything to a rounder boundary than this. */ #define BIGGEST_ALIGNMENT 64 @@ -878,6 +878,9 @@ do { \ fputc ('\n', (FILE)); \ } while (0) +#undef ASM_OUTPUT_FUNCTION_LABEL +#define ASM_OUTPUT_FUNCTION_LABEL(FILE, NAME, DECL) \ + s390_asm_output_function_label (FILE, NAME, DECL) /* Miscellaneous parameters. */ diff --git a/gcc/config/s390/s390.opt b/gcc/config/s390/s390.opt index 7dedb836701..ef92f465baf 100644 --- a/gcc/config/s390/s390.opt +++ b/gcc/config/s390/s390.opt @@ -96,6 +96,14 @@ mhard-float Target Report RejectNegative Negative(msoft-float) InverseMask(SOFT_FLOAT, HARD_FLOAT) Enable hardware floating point +mhotpatch +Target Report Var(s390_deferred_options) Defer +Prepend the function label with 12 two-byte Nop instructions, and add a four byte Nop instruction after the label for hotpatching. + +mhotpatch= +Target RejectNegative Report Joined Var(s390_deferred_options) Defer +Prepend the function label with the given number of two-byte Nop instructions, and add a four byte Nop instruction after the label for hotpatching. + mlong-double-128 Target Report RejectNegative Negative(mlong-double-64) Mask(LONG_DOUBLE_128) Use 128-bit long double diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index af258d72faf..2ce00989bcb 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -3266,6 +3266,17 @@ this function attribute to make GCC generate the ``hot-patching'' function prologue used in Win32 API functions in Microsoft Windows XP Service Pack 2 and newer. +@item hotpatch [(@var{prologue-halfwords})] +@cindex @code{hotpatch} attribute + +On S/390 System z targets, you can use this function attribute to +make GCC generate a ``hot-patching'' function prologue. The +@code{hotpatch} has no effect on funtions that are explicitly +inline. If the @option{-mhotpatch} or @option{-mno-hotpatch} +command-line option is used at the same time, the @code{hotpatch} +attribute takes precedence. If an argument is given, the maximum +allowed value is 1000000. + @item naked @cindex function without a prologue/epilogue code Use this attribute on the ARM, AVR, MCORE, MSP430, NDS32, RL78, RX and SPU diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 1a6d815f041..6e888bdbe45 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -933,7 +933,8 @@ See RS/6000 and PowerPC Options. -msmall-exec -mno-small-exec -mmvcle -mno-mvcle @gol -m64 -m31 -mdebug -mno-debug -mesa -mzarch @gol -mtpf-trace -mno-tpf-trace -mfused-madd -mno-fused-madd @gol --mwarn-framesize -mwarn-dynamicstack -mstack-size -mstack-guard} +-mwarn-framesize -mwarn-dynamicstack -mstack-size -mstack-guard @gol +-mhotpatch[=@var{halfwords}] -mno-hotpatch} @emph{Score Options} @gccoptlist{-meb -mel @gol @@ -19777,6 +19778,21 @@ values have to be exact powers of 2 and @var{stack-size} has to be greater than In order to be efficient the extra code makes the assumption that the stack starts at an address aligned to the value given by @var{stack-size}. The @var{stack-guard} option can only be used in conjunction with @var{stack-size}. + +@item -mhotpatch[=@var{halfwords}] +@itemx -mno-hotpatch +@opindex mhotpatch +If the hotpatch option is enabled, a ``hot-patching'' function +prologue is generated for all functions in the compilation unit. +The funtion label is prepended with the given number of two-byte +Nop instructions (@var{halfwords}, maximum 1000000) or 12 Nop +instructions if no argument is present. Functions with a +hot-patching prologue are never inlined automatically, and a +hot-patching prologue is never generated for functions functions +that are explicitly inline. + +This option can be overridden for individual functions with the +@code{hotpatch} attribute. @end table @node Score Options diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b5100b7f375..3f9884fa913 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,26 @@ +2013-12-19 Dominik Vogt + Andreas Krebbel + + * gcc/testsuite/gcc.target/s390/hotpatch-1.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-2.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-3.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-4.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-5.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-6.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-7.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-8.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-9.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-10.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-11.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-12.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c: New test + * gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c: New test + 2013-12-19 Kyrylo Tkachov * c-c++-common/cilk-plus/SE/ef_error.c: Add fopenmp effective diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-1.c b/gcc/testsuite/gcc.target/s390/hotpatch-1.c new file mode 100644 index 00000000000..b9d6139b080 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-1.c @@ -0,0 +1,20 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ + +#include + +void hp1(void) +{ + printf("hello, world!\n"); +} + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-times "nopr\t%r7" 12 } } */ +/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-10.c b/gcc/testsuite/gcc.target/s390/hotpatch-10.c new file mode 100644 index 00000000000..b91b3478ee3 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-10.c @@ -0,0 +1,21 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mno-hotpatch --save-temps" } */ + +#include + +__attribute__ ((hotpatch(2))) +void hp1(void) +{ + printf("hello, world!\n"); +} + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-times "nopr\t%r7" 2 } } */ +/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-11.c b/gcc/testsuite/gcc.target/s390/hotpatch-11.c new file mode 100644 index 00000000000..49167734253 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-11.c @@ -0,0 +1,20 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch -mno-hotpatch --save-temps" } */ + +#include + +void hp1(void) +{ + printf("hello, world!\n"); +} + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ +/* { dg-final { scan-assembler-not "nop\t0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-12.c b/gcc/testsuite/gcc.target/s390/hotpatch-12.c new file mode 100644 index 00000000000..b3e9427d4e2 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-12.c @@ -0,0 +1,20 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mno-hotpatch -mhotpatch=1 --save-temps" } */ + +#include + +void hp1(void) +{ + printf("hello, world!\n"); +} + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ +/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-2.c b/gcc/testsuite/gcc.target/s390/hotpatch-2.c new file mode 100644 index 00000000000..6cc29447de4 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-2.c @@ -0,0 +1,20 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch=1 --save-temps" } */ + +#include + +void hp1(void) +{ + printf("hello, world!\n"); +} + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ +/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-3.c b/gcc/testsuite/gcc.target/s390/hotpatch-3.c new file mode 100644 index 00000000000..9f0b2b756a4 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-3.c @@ -0,0 +1,20 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch=0 --save-temps" } */ + +#include + +void hp1(void) +{ + printf("hello, world!\n"); +} + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ +/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-4.c b/gcc/testsuite/gcc.target/s390/hotpatch-4.c new file mode 100644 index 00000000000..c1dba20a379 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-4.c @@ -0,0 +1,26 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ + +#include + +inline void hp1(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((always_inline)) +void hp2(void) /* { dg-warning "always_inline function might not be inlinable" } */ +{ + printf("hello, world!\n"); +} /* { dg-warning "function 'hp2' with the 'always_inline' attribute is not hotpatchable" } */ + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ +/* { dg-final { scan-assembler-not "nop\t0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-5.c b/gcc/testsuite/gcc.target/s390/hotpatch-5.c new file mode 100644 index 00000000000..ec267d65aae --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-5.c @@ -0,0 +1,21 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ + +#include + +__attribute__ ((hotpatch)) +void hp1(void) +{ + printf("hello, world!\n"); +} + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-times "nopr\t%r7" 12 } } */ +/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-6.c b/gcc/testsuite/gcc.target/s390/hotpatch-6.c new file mode 100644 index 00000000000..5af090d03a6 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-6.c @@ -0,0 +1,21 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ + +#include + +__attribute__ ((hotpatch(1))) +void hp1(void) +{ + printf("hello, world!\n"); +} + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */ +/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-7.c b/gcc/testsuite/gcc.target/s390/hotpatch-7.c new file mode 100644 index 00000000000..e73a510b4d6 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-7.c @@ -0,0 +1,21 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ + +#include + +__attribute__ ((hotpatch(0))) +void hp1(void) +{ + printf("hello, world!\n"); +} + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ +/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-8.c b/gcc/testsuite/gcc.target/s390/hotpatch-8.c new file mode 100644 index 00000000000..399aa7260b4 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-8.c @@ -0,0 +1,28 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */ + +#include + +__attribute__ ((hotpatch)) +inline void hp1(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((hotpatch)) +__attribute__ ((always_inline)) +void hp2(void) /* { dg-warning "always_inline function might not be inlinable" } */ +{ + printf("hello, world!\n"); +} /* { dg-warning "function 'hp2' with the 'always_inline' attribute is not hotpatchable" } */ + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-not "nopr\t%r7" } } */ +/* { dg-final { scan-assembler-not "nop\t0" } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-9.c b/gcc/testsuite/gcc.target/s390/hotpatch-9.c new file mode 100644 index 00000000000..5da675866b3 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-9.c @@ -0,0 +1,21 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch=1 --save-temps" } */ + +#include + +__attribute__ ((hotpatch(2))) +void hp1(void) +{ + printf("hello, world!\n"); +} + +int main (void) +{ + return 0; +} + +/* Check number of occurences of certain instructions. */ +/* { dg-final { scan-assembler-times "nopr\t%r7" 2 } } */ +/* { dg-final { scan-assembler-times "nop\t0" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c b/gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c new file mode 100644 index 00000000000..45a2cc5dc20 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c @@ -0,0 +1,27 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch" } */ + +#include + +void hp1(void) +{ + printf("hello, world!\n"); +} + +inline void hp2(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((always_inline)) +void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */ +{ + printf("hello, world!\n"); +} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */ + +int main (void) +{ + return 0; +} diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c b/gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c new file mode 100644 index 00000000000..5947f564f53 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c @@ -0,0 +1,27 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch=0" } */ + +#include + +void hp1(void) +{ + printf("hello, world!\n"); +} + +inline void hp2(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((always_inline)) +void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */ +{ + printf("hello, world!\n"); +} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */ + +int main (void) +{ + return 0; +} diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c b/gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c new file mode 100644 index 00000000000..e0c7f6f52c1 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c @@ -0,0 +1,27 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch=1" } */ + +#include + +void hp1(void) +{ + printf("hello, world!\n"); +} + +inline void hp2(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((always_inline)) +void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */ +{ + printf("hello, world!\n"); +} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */ + +int main (void) +{ + return 0; +} diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c b/gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c new file mode 100644 index 00000000000..d9f13425adc --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c @@ -0,0 +1,11 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do compile } */ +/* { dg-options "-O3 -mzarch -mhotpatch=-1" } */ + +int main (void) +{ + return 0; +} + +/* { dg-excess-errors "argument to '-mhotpatch=' should be a non-negative integer" } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c b/gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c new file mode 100644 index 00000000000..53f7eac9e54 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c @@ -0,0 +1,28 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do compile } */ +/* { dg-options "-O3 -mzarch -mhotpatch=1000000" } */ + +#include + +void hp1(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((hotpatch(1000000))) +void hp2(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((hotpatch(1000001))) +void hp3(void) +{ /* { dg-error "requested 'hotpatch' attribute is not a non-negative integer constant or too large .max. 1000000." } */ + printf("hello, world!\n"); +} + +int main (void) +{ + return 0; +} diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c b/gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c new file mode 100644 index 00000000000..cb10b66f0d3 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c @@ -0,0 +1,11 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do compile } */ +/* { dg-options "-O3 -mzarch -mhotpatch=1000001" } */ + +int main (void) +{ + return 0; +} + +/* { dg-excess-errors "argument to '-mhotpatch=' is too large .max. 1000000." } */ diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c b/gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c new file mode 100644 index 00000000000..98ccb42c003 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c @@ -0,0 +1,68 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mno-hotpatch" } */ + +#include + +__attribute__ ((hotpatch)) +void hp1(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((hotpatch)) +inline void hp2(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((hotpatch)) +__attribute__ ((always_inline)) +void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */ +{ + printf("hello, world!\n"); +} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */ + +__attribute__ ((hotpatch(0))) +void hp4(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((hotpatch(0))) +inline void hp5(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((hotpatch(0))) +__attribute__ ((always_inline)) +void hp6(void) /* { dg-warning "always_inline function might not be inlinable" } */ +{ + printf("hello, world!\n"); +} /* { dg-warning "function 'hp6' with the 'always_inline' attribute is not hotpatchable" } */ + +__attribute__ ((hotpatch(1))) +void hp7(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((hotpatch(1))) +inline void hp8(void) +{ + printf("hello, world!\n"); +} + +__attribute__ ((hotpatch(1))) +__attribute__ ((always_inline)) +void hp9(void) /* { dg-warning "always_inline function might not be inlinable" } */ +{ + printf("hello, world!\n"); +} /* { dg-warning "function 'hp9' with the 'always_inline' attribute is not hotpatchable" } */ + +int main (void) +{ + return 0; +} -- cgit v1.2.1 From 7ea1ebafc15b4e2a8c93b67ce2d87f8180d4621a Mon Sep 17 00:00:00 2001 From: belagod Date: Thu, 19 Dec 2013 14:41:52 +0000 Subject: Define TARGET_CRYPTO for AArch64. * config/aarch64/aarch64.h (TARGET_CRYPTO): New. (__ARM_FEATURE_CRYPTO): Define if TARGET_CRYPTO is true. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206114 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/aarch64/aarch64.h | 4 ++++ 2 files changed, 9 insertions(+) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 94170651d7f..ced3eb7dfd9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-19 Tejas Belagod + + * config/aarch64/aarch64.h (TARGET_CRYPTO): New. + (__ARM_FEATURE_CRYPTO): Define if TARGET_CRYPTO is true. + 2013-12-19 Dominik Vogt Andreas Krebbel diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index e3e4846d663..693aca56962 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -54,6 +54,8 @@ cpp_define (parse_in, "_ILP32"); \ cpp_define (parse_in, "__ILP32__"); \ } \ + if (TARGET_CRYPTO) \ + builtin_define ("__ARM_FEATURE_CRYPTO"); \ } while (0) @@ -180,6 +182,8 @@ extern unsigned long aarch64_isa_flags; extern unsigned long aarch64_tune_flags; #define AARCH64_TUNE_SLOWMUL (aarch64_tune_flags & AARCH64_FL_SLOWMUL) +/* Crypto is an optional feature. */ +#define TARGET_CRYPTO AARCH64_ISA_CRYPTO /* Standard register usage. */ -- cgit v1.2.1 From 6d077882691e2365f0603580e8c6bb975d95a289 Mon Sep 17 00:00:00 2001 From: belagod Date: Thu, 19 Dec 2013 14:44:55 +0000 Subject: Introduce AArch64 Crypto instruction types. * config/arm/types.md (neon_mul_d_long, crypto_aes, crypto_sha1_xor, crypto_sha1_fast, crypto_sha1_slow, crypto_sha256_fast, crypto_sha256_slow): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206115 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/arm/types.md | 20 +++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ced3eb7dfd9..63a22c8c864 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-19 Tejas Belagod + + * config/arm/types.md (neon_mul_d_long, crypto_aes, crypto_sha1_xor, + crypto_sha1_fast, crypto_sha1_slow, crypto_sha256_fast, + crypto_sha256_slow): New. + 2013-12-19 Tejas Belagod * config/aarch64/aarch64.h (TARGET_CRYPTO): New. diff --git a/gcc/config/arm/types.md b/gcc/config/arm/types.md index 6351f080b32..0ff9b08f460 100644 --- a/gcc/config/arm/types.md +++ b/gcc/config/arm/types.md @@ -327,6 +327,7 @@ ; neon_mul_b_long ; neon_mul_h_long ; neon_mul_s_long +; neon_mul_d_long ; neon_mul_h_scalar ; neon_mul_h_scalar_q ; neon_mul_s_scalar @@ -520,6 +521,15 @@ ; neon_fp_div_s_q ; neon_fp_div_d ; neon_fp_div_d_q +; +; The classification below is for Crypto instructions. +; +; crypto_aes +; crypto_sha1_xor +; crypto_sha1_fast +; crypto_sha1_slow +; crypto_sha256_fast +; crypto_sha256_slow (define_attr "type" "adc_imm,\ @@ -823,6 +833,7 @@ neon_mul_b_long,\ neon_mul_h_long,\ neon_mul_s_long,\ + neon_mul_d_long,\ neon_mul_h_scalar,\ neon_mul_h_scalar_q,\ neon_mul_s_scalar,\ @@ -1037,7 +1048,14 @@ neon_fp_div_s,\ neon_fp_div_s_q,\ neon_fp_div_d,\ - neon_fp_div_d_q" + neon_fp_div_d_q,\ +\ + crypto_aes,\ + crypto_sha1_xor,\ + crypto_sha1_fast,\ + crypto_sha1_slow,\ + crypto_sha256_fast,\ + crypto_sha256_slow" (const_string "untyped")) ; Is this an (integer side) multiply with a 32-bit (or smaller) result? -- cgit v1.2.1 From 90513b0374f5deb446832da917ddd2d238f2f632 Mon Sep 17 00:00:00 2001 From: belagod Date: Thu, 19 Dec 2013 14:51:28 +0000 Subject: Implement support for AArch64 Crypto AES. gcc/ * config/aarch64/aarch64-simd-builtins.def: Update builtins table. * config/aarch64/aarch64-builtins.c (aarch64_types_binopu_qualifiers, TYPES_BINOPU): New. * config/aarch64/aarch64-simd.md (aarch64_crypto_aesv16qi, aarch64_crypto_aesv16qi): New. * config/aarch64/arm_neon.h (vaeseq_u8, vaesdq_u8, vaesmcq_u8, vaesimcq_u8): New. * config/aarch64/iterators.md (UNSPEC_AESE, UNSPEC_AESD, UNSPEC_AESMC, UNSPEC_AESIMC): New. (CRYPTO_AES, CRYPTO_AESMC): New int iterators. (aes_op, aesmc_op): New int attributes. testsuite/ * gcc.target/aarch64/aes_1.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206117 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 14 ++++++++++ gcc/config/aarch64/aarch64-builtins.c | 8 ++++++ gcc/config/aarch64/aarch64-simd-builtins.def | 5 ++++ gcc/config/aarch64/aarch64-simd.md | 22 +++++++++++++++ gcc/config/aarch64/arm_neon.h | 30 +++++++++++++++++++++ gcc/config/aarch64/iterators.md | 10 +++++++ gcc/testsuite/ChangeLog | 4 +++ gcc/testsuite/gcc.target/aarch64/aes_1.c | 40 ++++++++++++++++++++++++++++ 8 files changed, 133 insertions(+) create mode 100644 gcc/testsuite/gcc.target/aarch64/aes_1.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 63a22c8c864..e7d0deb3724 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2013-12-19 Tejas Belagod + + * config/aarch64/aarch64-simd-builtins.def: Update builtins table. + * config/aarch64/aarch64-builtins.c (aarch64_types_binopu_qualifiers, + TYPES_BINOPU): New. + * config/aarch64/aarch64-simd.md (aarch64_crypto_aesv16qi, + aarch64_crypto_aesv16qi): New. + * config/aarch64/arm_neon.h (vaeseq_u8, vaesdq_u8, vaesmcq_u8, + vaesimcq_u8): New. + * config/aarch64/iterators.md (UNSPEC_AESE, UNSPEC_AESD, UNSPEC_AESMC, + UNSPEC_AESIMC): New. + (CRYPTO_AES, CRYPTO_AESMC): New int iterators. + (aes_op, aesmc_op): New int attributes. + 2013-12-19 Tejas Belagod * config/arm/types.md (neon_mul_d_long, crypto_aes, crypto_sha1_xor, diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c index 1bc3cc5e96d..00a33ce4069 100644 --- a/gcc/config/aarch64/aarch64-builtins.c +++ b/gcc/config/aarch64/aarch64-builtins.c @@ -142,6 +142,10 @@ static enum aarch64_type_qualifiers aarch64_types_unop_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_none, qualifier_none }; #define TYPES_UNOP (aarch64_types_unop_qualifiers) +static enum aarch64_type_qualifiers +aarch64_types_unopu_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_unsigned, qualifier_unsigned }; +#define TYPES_UNOPU (aarch64_types_unopu_qualifiers) #define TYPES_CREATE (aarch64_types_unop_qualifiers) #define TYPES_REINTERP (aarch64_types_unop_qualifiers) static enum aarch64_type_qualifiers @@ -149,6 +153,10 @@ aarch64_types_binop_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_none, qualifier_none, qualifier_maybe_immediate }; #define TYPES_BINOP (aarch64_types_binop_qualifiers) static enum aarch64_type_qualifiers +aarch64_types_binopu_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_unsigned, qualifier_unsigned, qualifier_unsigned }; +#define TYPES_BINOPU (aarch64_types_binopu_qualifiers) +static enum aarch64_type_qualifiers aarch64_types_ternop_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_none, qualifier_none, qualifier_none, qualifier_none }; #define TYPES_TERNOP (aarch64_types_ternop_qualifiers) diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def index 1dc3c1fe33f..6b72e8ff791 100644 --- a/gcc/config/aarch64/aarch64-simd-builtins.def +++ b/gcc/config/aarch64/aarch64-simd-builtins.def @@ -367,3 +367,8 @@ BUILTIN_VSDQ_I_DI (BSL_U, simd_bsl, 0) BUILTIN_VALLDIF (BSL_S, simd_bsl, 0) + /* Implemented by aarch64_crypto_aes. */ + VAR1 (BINOPU, crypto_aese, 0, v16qi) + VAR1 (BINOPU, crypto_aesd, 0, v16qi) + VAR1 (UNOPU, crypto_aesmc, 0, v16qi) + VAR1 (UNOPU, crypto_aesimc, 0, v16qi) diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 158b3dca6da..f8c204f3f82 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -4074,3 +4074,25 @@ (gen_aarch64_get_lane (operands[0], operands[1], operands[2])); DONE; }) + +;; aes + +(define_insn "aarch64_crypto_aesv16qi" + [(set (match_operand:V16QI 0 "register_operand" "=w") + (unspec:V16QI [(match_operand:V16QI 1 "register_operand" "0") + (match_operand:V16QI 2 "register_operand" "w")] + CRYPTO_AES))] + "TARGET_SIMD && TARGET_CRYPTO" + "aes\\t%0.16b, %2.16b" + [(set_attr "type" "crypto_aes")] +) + +(define_insn "aarch64_crypto_aesv16qi" + [(set (match_operand:V16QI 0 "register_operand" "=w") + (unspec:V16QI [(match_operand:V16QI 1 "register_operand" "w")] + CRYPTO_AESMC))] + "TARGET_SIMD && TARGET_CRYPTO" + "aes\\t%0.16b, %1.16b" + [(set_attr "type" "crypto_aes")] +) + diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h index 03549bd7a27..6cfea434c63 100644 --- a/gcc/config/aarch64/arm_neon.h +++ b/gcc/config/aarch64/arm_neon.h @@ -15575,6 +15575,36 @@ vbslq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) return __builtin_aarch64_simd_bslv2di_uuuu (__a, __b, __c); } +#ifdef __ARM_FEATURE_CRYPTO + +/* vaes */ + +static __inline uint8x16_t +vaeseq_u8 (uint8x16_t data, uint8x16_t key) +{ + return __builtin_aarch64_crypto_aesev16qi_uuu (data, key); +} + +static __inline uint8x16_t +vaesdq_u8 (uint8x16_t data, uint8x16_t key) +{ + return __builtin_aarch64_crypto_aesdv16qi_uuu (data, key); +} + +static __inline uint8x16_t +vaesmcq_u8 (uint8x16_t data) +{ + return __builtin_aarch64_crypto_aesmcv16qi_uu (data); +} + +static __inline uint8x16_t +vaesimcq_u8 (uint8x16_t data) +{ + return __builtin_aarch64_crypto_aesimcv16qi_uu (data); +} + +#endif + /* vcage */ __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 43279ad2c0c..eeab8e9db78 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -267,6 +267,10 @@ UNSPEC_UZP2 ; Used in vector permute patterns. UNSPEC_TRN1 ; Used in vector permute patterns. UNSPEC_TRN2 ; Used in vector permute patterns. + UNSPEC_AESE ; Used in aarch64-simd.md. + UNSPEC_AESD ; Used in aarch64-simd.md. + UNSPEC_AESMC ; Used in aarch64-simd.md. + UNSPEC_AESIMC ; Used in aarch64-simd.md. ]) ;; ------------------------------------------------------------------- @@ -848,6 +852,9 @@ (define_int_iterator FRECP [UNSPEC_FRECPE UNSPEC_FRECPX]) +(define_int_iterator CRYPTO_AES [UNSPEC_AESE UNSPEC_AESD]) +(define_int_iterator CRYPTO_AESMC [UNSPEC_AESMC UNSPEC_AESIMC]) + ;; ------------------------------------------------------------------- ;; Int Iterators Attributes. ;; ------------------------------------------------------------------- @@ -964,3 +971,6 @@ (UNSPEC_UZP1 "1") (UNSPEC_UZP2 "2")]) (define_int_attr frecp_suffix [(UNSPEC_FRECPE "e") (UNSPEC_FRECPX "x")]) + +(define_int_attr aes_op [(UNSPEC_AESE "e") (UNSPEC_AESD "d")]) +(define_int_attr aesmc_op [(UNSPEC_AESMC "mc") (UNSPEC_AESIMC "imc")]) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3f9884fa913..5e96012f59d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-19 Tejas Belagod + + * gcc.target/aarch64/aes_1.c: New. + 2013-12-19 Dominik Vogt Andreas Krebbel diff --git a/gcc/testsuite/gcc.target/aarch64/aes_1.c b/gcc/testsuite/gcc.target/aarch64/aes_1.c new file mode 100644 index 00000000000..5fa61379ea6 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/aes_1.c @@ -0,0 +1,40 @@ + +/* { dg-do compile } */ +/* { dg-options "-march=armv8-a+crypto" } */ + +#include "arm_neon.h" + +uint8x16_t +test_vaeseq_u8 (uint8x16_t data, uint8x16_t key) +{ + return vaeseq_u8 (data, key); +} + +/* { dg-final { scan-assembler-times "aese\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ + +uint8x16_t +test_vaesdq_u8 (uint8x16_t data, uint8x16_t key) +{ + return vaesdq_u8 (data, key); +} + +/* { dg-final { scan-assembler-times "aesd\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ + +uint8x16_t +test_vaesmcq_u8 (uint8x16_t data) +{ + return vaesmcq_u8 (data); +} + +/* { dg-final { scan-assembler-times "aesmc\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ + +uint8x16_t +test_vaesimcq_u8 (uint8x16_t data) +{ + return vaesimcq_u8 (data); +} + +/* { dg-final { scan-assembler-times "aesimc\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ + + +/* { dg-final { cleanup-saved-temps } } */ -- cgit v1.2.1 From feff02e436cb0bf35d5f118e2b78c2772319731b Mon Sep 17 00:00:00 2001 From: belagod Date: Thu, 19 Dec 2013 14:55:47 +0000 Subject: Implement support for AArch64 Crypto SHA1. gcc/ * config/aarch64/aarch64-simd-builtins.def: Update builtins table. * config/aarch64/aarch64-builtins.c (aarch64_types_ternopu_qualifiers, TYPES_TERNOPU): New. * config/aarch64/aarch64-simd.md (aarch64_crypto_sha1hsi, aarch64_crypto_sha1su1v4si, aarch64_crypto_sha1v4si, aarch64_crypto_sha1su0v4si): New. * config/aarch64/arm_neon.h (vsha1cq_u32, sha1mq_u32, vsha1pq_u32, vsha1h_u32, vsha1su0q_u32, vsha1su1q_u32): New. * config/aarch64/iterators.md (UNSPEC_SHA1, UNSPEC_SHA1SU<01>): New. (CRYPTO_SHA1): New int iterator. (sha1_op): New int attribute. testsuite/ * gcc.target/aarch64/sha1_1.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206118 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 15 ++++++++ gcc/config/aarch64/aarch64-builtins.c | 6 +++ gcc/config/aarch64/aarch64-simd-builtins.def | 8 ++++ gcc/config/aarch64/aarch64-simd.md | 43 ++++++++++++++++++++++ gcc/config/aarch64/arm_neon.h | 40 ++++++++++++++++++++ gcc/config/aarch64/iterators.md | 11 ++++++ gcc/testsuite/ChangeLog | 4 ++ gcc/testsuite/gcc.target/aarch64/sha1_1.c | 55 ++++++++++++++++++++++++++++ 8 files changed, 182 insertions(+) create mode 100644 gcc/testsuite/gcc.target/aarch64/sha1_1.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e7d0deb3724..1886afbd9dd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2013-12-19 Tejas Belagod + + * config/aarch64/aarch64-simd-builtins.def: Update builtins table. + * config/aarch64/aarch64-builtins.c (aarch64_types_ternopu_qualifiers, + TYPES_TERNOPU): New. + * config/aarch64/aarch64-simd.md (aarch64_crypto_sha1hsi, + aarch64_crypto_sha1su1v4si, aarch64_crypto_sha1v4si, + aarch64_crypto_sha1su0v4si): New. + * config/aarch64/arm_neon.h (vsha1cq_u32, sha1mq_u32, vsha1pq_u32, + vsha1h_u32, vsha1su0q_u32, vsha1su1q_u32): New. + * config/aarch64/iterators.md (UNSPEC_SHA1, UNSPEC_SHA1SU<01>): + New. + (CRYPTO_SHA1): New int iterator. + (sha1_op): New int attribute. + 2013-12-19 Tejas Belagod * config/aarch64/aarch64-simd-builtins.def: Update builtins table. diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c index 00a33ce4069..ea933d617f5 100644 --- a/gcc/config/aarch64/aarch64-builtins.c +++ b/gcc/config/aarch64/aarch64-builtins.c @@ -160,6 +160,12 @@ static enum aarch64_type_qualifiers aarch64_types_ternop_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_none, qualifier_none, qualifier_none, qualifier_none }; #define TYPES_TERNOP (aarch64_types_ternop_qualifiers) +static enum aarch64_type_qualifiers +aarch64_types_ternopu_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_unsigned, qualifier_unsigned, + qualifier_unsigned, qualifier_unsigned }; +#define TYPES_TERNOPU (aarch64_types_ternopu_qualifiers) + static enum aarch64_type_qualifiers aarch64_types_quadop_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_none, qualifier_none, qualifier_none, diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def index 6b72e8ff791..7f90c827b0a 100644 --- a/gcc/config/aarch64/aarch64-simd-builtins.def +++ b/gcc/config/aarch64/aarch64-simd-builtins.def @@ -372,3 +372,11 @@ VAR1 (BINOPU, crypto_aesd, 0, v16qi) VAR1 (UNOPU, crypto_aesmc, 0, v16qi) VAR1 (UNOPU, crypto_aesimc, 0, v16qi) + + /* Implemented by aarch64_crypto_sha1. */ + VAR1 (UNOPU, crypto_sha1h, 0, si) + VAR1 (BINOPU, crypto_sha1su1, 0, v4si) + VAR1 (TERNOPU, crypto_sha1c, 0, v4si) + VAR1 (TERNOPU, crypto_sha1m, 0, v4si) + VAR1 (TERNOPU, crypto_sha1p, 0, v4si) + VAR1 (TERNOPU, crypto_sha1su0, 0, v4si) diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index f8c204f3f82..5b454caba2e 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -4096,3 +4096,46 @@ [(set_attr "type" "crypto_aes")] ) +;; sha1 + +(define_insn "aarch64_crypto_sha1hsi" + [(set (match_operand:SI 0 "register_operand" "=w") + (unspec:SI [(match_operand:SI 1 + "register_operand" "w")] + UNSPEC_SHA1H))] + "TARGET_SIMD && TARGET_CRYPTO" + "sha1h\\t%s0, %s1" + [(set_attr "type" "crypto_sha1_fast")] +) + +(define_insn "aarch64_crypto_sha1su1v4si" + [(set (match_operand:V4SI 0 "register_operand" "=w") + (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "register_operand" "w")] + UNSPEC_SHA1SU1))] + "TARGET_SIMD && TARGET_CRYPTO" + "sha1su1\\t%0.4s, %2.4s" + [(set_attr "type" "crypto_sha1_fast")] +) + +(define_insn "aarch64_crypto_sha1v4si" + [(set (match_operand:V4SI 0 "register_operand" "=w") + (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:SI 2 "register_operand" "w") + (match_operand:V4SI 3 "register_operand" "w")] + CRYPTO_SHA1))] + "TARGET_SIMD && TARGET_CRYPTO" + "sha1\\t%q0, %s2, %3.4s" + [(set_attr "type" "crypto_sha1_slow")] +) + +(define_insn "aarch64_crypto_sha1su0v4si" + [(set (match_operand:V4SI 0 "register_operand" "=w") + (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "register_operand" "w") + (match_operand:V4SI 3 "register_operand" "w")] + UNSPEC_SHA1SU0))] + "TARGET_SIMD && TARGET_CRYPTO" + "sha1su0\\t%0.4s, %2.4s, %3.4s" + [(set_attr "type" "crypto_sha1_xor")] +) diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h index 6cfea434c63..5a5691dda75 100644 --- a/gcc/config/aarch64/arm_neon.h +++ b/gcc/config/aarch64/arm_neon.h @@ -22952,6 +22952,46 @@ vrsrad_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c) return (uint64x1_t) __builtin_aarch64_ursra_ndi (__a, __b, __c); } +#ifdef __ARM_FEATURE_CRYPTO + +/* vsha1 */ + +static __inline uint32x4_t +vsha1cq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk) +{ + return __builtin_aarch64_crypto_sha1cv4si_uuuu (hash_abcd, hash_e, wk); +} +static __inline uint32x4_t +vsha1mq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk) +{ + return __builtin_aarch64_crypto_sha1mv4si_uuuu (hash_abcd, hash_e, wk); +} +static __inline uint32x4_t +vsha1pq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk) +{ + return __builtin_aarch64_crypto_sha1pv4si_uuuu (hash_abcd, hash_e, wk); +} + +static __inline uint32_t +vsha1h_u32 (uint32_t hash_e) +{ + return __builtin_aarch64_crypto_sha1hsi_uu (hash_e); +} + +static __inline uint32x4_t +vsha1su0q_u32 (uint32x4_t w0_3, uint32x4_t w4_7, uint32x4_t w8_11) +{ + return __builtin_aarch64_crypto_sha1su0v4si_uuuu (w0_3, w4_7, w8_11); +} + +static __inline uint32x4_t +vsha1su1q_u32 (uint32x4_t tw0_3, uint32x4_t w12_15) +{ + return __builtin_aarch64_crypto_sha1su1v4si_uuu (tw0_3, w12_15); +} + +#endif + /* vshl */ __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index eeab8e9db78..12de4acf1ad 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -271,6 +271,12 @@ UNSPEC_AESD ; Used in aarch64-simd.md. UNSPEC_AESMC ; Used in aarch64-simd.md. UNSPEC_AESIMC ; Used in aarch64-simd.md. + UNSPEC_SHA1C ; Used in aarch64-simd.md. + UNSPEC_SHA1M ; Used in aarch64-simd.md. + UNSPEC_SHA1P ; Used in aarch64-simd.md. + UNSPEC_SHA1H ; Used in aarch64-simd.md. + UNSPEC_SHA1SU0 ; Used in aarch64-simd.md. + UNSPEC_SHA1SU1 ; Used in aarch64-simd.md. ]) ;; ------------------------------------------------------------------- @@ -855,6 +861,8 @@ (define_int_iterator CRYPTO_AES [UNSPEC_AESE UNSPEC_AESD]) (define_int_iterator CRYPTO_AESMC [UNSPEC_AESMC UNSPEC_AESIMC]) +(define_int_iterator CRYPTO_SHA1 [UNSPEC_SHA1C UNSPEC_SHA1M UNSPEC_SHA1P]) + ;; ------------------------------------------------------------------- ;; Int Iterators Attributes. ;; ------------------------------------------------------------------- @@ -974,3 +982,6 @@ (define_int_attr aes_op [(UNSPEC_AESE "e") (UNSPEC_AESD "d")]) (define_int_attr aesmc_op [(UNSPEC_AESMC "mc") (UNSPEC_AESIMC "imc")]) + +(define_int_attr sha1_op [(UNSPEC_SHA1C "c") (UNSPEC_SHA1P "p") + (UNSPEC_SHA1M "m")]) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5e96012f59d..849d1f7bca3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-19 Tejas Belagod + + * gcc.target/aarch64/sha1_1.c: New. + 2013-12-19 Tejas Belagod * gcc.target/aarch64/aes_1.c: New. diff --git a/gcc/testsuite/gcc.target/aarch64/sha1_1.c b/gcc/testsuite/gcc.target/aarch64/sha1_1.c new file mode 100644 index 00000000000..776753dcd5f --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/sha1_1.c @@ -0,0 +1,55 @@ + +/* { dg-do compile } */ +/* { dg-options "-march=armv8-a+crypto" } */ + +#include "arm_neon.h" + +uint32x4_t +test_vsha1cq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk) +{ + return vsha1cq_u32 (hash_abcd, hash_e, wk); +} + +/* { dg-final { scan-assembler-times "sha1c\\tq" 1 } } */ + +uint32x4_t +test_vsha1mq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk) +{ + return vsha1mq_u32 (hash_abcd, hash_e, wk); +} + +/* { dg-final { scan-assembler-times "sha1m\\tq" 1 } } */ + +uint32x4_t +test_vsha1pq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk) +{ + return vsha1pq_u32 (hash_abcd, hash_e, wk); +} + +/* { dg-final { scan-assembler-times "sha1p\\tq" 1 } } */ + +uint32_t +test_vsha1h_u32 (uint32_t hash_e) +{ + return vsha1h_u32 (hash_e); +} + +/* { dg-final { scan-assembler-times "sha1h\\ts" 1 } } */ + +uint32x4_t +test_vsha1su0q_u32 (uint32x4_t w0_3, uint32x4_t w4_7, uint32x4_t w8_11) +{ + return vsha1su0q_u32 (w0_3, w4_7, w8_11); +} + +/* { dg-final { scan-assembler-times "sha1su0\\tv" 1 } } */ + +uint32x4_t +test_vsha1su1q_u32 (uint32x4_t tw0_3, uint32x4_t w12_15) +{ + return vsha1su1q_u32 (tw0_3, w12_15); +} + +/* { dg-final { scan-assembler-times "sha1su1\\tv" 1 } } */ + +/* { dg-final { cleanup-saved-temps } } */ -- cgit v1.2.1 From 7462aa993831e73b5c0a3ffb60afb0dea564f95b Mon Sep 17 00:00:00 2001 From: belagod Date: Thu, 19 Dec 2013 15:00:53 +0000 Subject: Implement support for AArch64 Crypto SHA256. gcc/ * config/aarch64/aarch64-simd-builtins.def: Update builtins table. * config/aarch64/aarch64-simd.md (aarch64_crypto_sha256hv4si, aarch64_crypto_sha256su0v4si, aarch64_crypto_sha256su1v4si): New. * config/aarch64/arm_neon.h (vsha256hq_u32, vsha256h2q_u32, vsha256su0q_u32, vsha256su1q_u32): New. * config/aarch64/iterators.md (UNSPEC_SHA256H<2>, UNSPEC_SHA256SU<01>): New. (CRYPTO_SHA256): New int iterator. (sha256_op): New int attribute. testsuite/ * gcc.target/aarch64/sha256_1.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206119 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 12 +++++++++ gcc/config/aarch64/aarch64-simd-builtins.def | 6 +++++ gcc/config/aarch64/aarch64-simd.md | 34 +++++++++++++++++++++++ gcc/config/aarch64/arm_neon.h | 24 +++++++++++++++++ gcc/config/aarch64/iterators.md | 8 ++++++ gcc/testsuite/ChangeLog | 4 +++ gcc/testsuite/gcc.target/aarch64/sha256_1.c | 40 ++++++++++++++++++++++++++++ 7 files changed, 128 insertions(+) create mode 100644 gcc/testsuite/gcc.target/aarch64/sha256_1.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1886afbd9dd..1c4a9fc58ad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2013-12-19 Tejas Belagod + + * config/aarch64/aarch64-simd-builtins.def: Update builtins table. + * config/aarch64/aarch64-simd.md (aarch64_crypto_sha256hv4si, + aarch64_crypto_sha256su0v4si, aarch64_crypto_sha256su1v4si): New. + * config/aarch64/arm_neon.h (vsha256hq_u32, vsha256h2q_u32, + vsha256su0q_u32, vsha256su1q_u32): New. + * config/aarch64/iterators.md (UNSPEC_SHA256H<2>, UNSPEC_SHA256SU<01>): + New. + (CRYPTO_SHA256): New int iterator. + (sha256_op): New int attribute. + 2013-12-19 Tejas Belagod * config/aarch64/aarch64-simd-builtins.def: Update builtins table. diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def index 7f90c827b0a..c7e1120660d 100644 --- a/gcc/config/aarch64/aarch64-simd-builtins.def +++ b/gcc/config/aarch64/aarch64-simd-builtins.def @@ -380,3 +380,9 @@ VAR1 (TERNOPU, crypto_sha1m, 0, v4si) VAR1 (TERNOPU, crypto_sha1p, 0, v4si) VAR1 (TERNOPU, crypto_sha1su0, 0, v4si) + + /* Implemented by aarch64_crypto_sha256. */ + VAR1 (TERNOPU, crypto_sha256h, 0, v4si) + VAR1 (TERNOPU, crypto_sha256h2, 0, v4si) + VAR1 (BINOPU, crypto_sha256su0, 0, v4si) + VAR1 (TERNOPU, crypto_sha256su1, 0, v4si) diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 5b454caba2e..874d5324ffe 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -4139,3 +4139,37 @@ "sha1su0\\t%0.4s, %2.4s, %3.4s" [(set_attr "type" "crypto_sha1_xor")] ) + +;; sha256 + +(define_insn "aarch64_crypto_sha256hv4si" + [(set (match_operand:V4SI 0 "register_operand" "=w") + (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "register_operand" "w") + (match_operand:V4SI 3 "register_operand" "w")] + CRYPTO_SHA256))] + "TARGET_SIMD && TARGET_CRYPTO" + "sha256h\\t%q0, %q2, %3.4s" + [(set_attr "type" "crypto_sha256_slow")] +) + +(define_insn "aarch64_crypto_sha256su0v4si" + [(set (match_operand:V4SI 0 "register_operand" "=w") + (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "register_operand" "w")] + UNSPEC_SHA256SU0))] + "TARGET_SIMD &&TARGET_CRYPTO" + "sha256su0\\t%0.4s, %2.4s" + [(set_attr "type" "crypto_sha256_fast")] +) + +(define_insn "aarch64_crypto_sha256su1v4si" + [(set (match_operand:V4SI 0 "register_operand" "=w") + (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "register_operand" "w") + (match_operand:V4SI 3 "register_operand" "w")] + UNSPEC_SHA256SU1))] + "TARGET_SIMD &&TARGET_CRYPTO" + "sha256su1\\t%0.4s, %2.4s, %3.4s" + [(set_attr "type" "crypto_sha256_slow")] +) diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h index 5a5691dda75..709c6a14c5f 100644 --- a/gcc/config/aarch64/arm_neon.h +++ b/gcc/config/aarch64/arm_neon.h @@ -22990,6 +22990,30 @@ vsha1su1q_u32 (uint32x4_t tw0_3, uint32x4_t w12_15) return __builtin_aarch64_crypto_sha1su1v4si_uuu (tw0_3, w12_15); } +static __inline uint32x4_t +vsha256hq_u32 (uint32x4_t hash_abcd, uint32x4_t hash_efgh, uint32x4_t wk) +{ + return __builtin_aarch64_crypto_sha256hv4si_uuuu (hash_abcd, hash_efgh, wk); +} + +static __inline uint32x4_t +vsha256h2q_u32 (uint32x4_t hash_efgh, uint32x4_t hash_abcd, uint32x4_t wk) +{ + return __builtin_aarch64_crypto_sha256h2v4si_uuuu (hash_efgh, hash_abcd, wk); +} + +static __inline uint32x4_t +vsha256su0q_u32 (uint32x4_t w0_3, uint32x4_t w4_7) +{ + return __builtin_aarch64_crypto_sha256su0v4si_uuu (w0_3, w4_7); +} + +static __inline uint32x4_t +vsha256su1q_u32 (uint32x4_t tw0_3, uint32x4_t w8_11, uint32x4_t w12_15) +{ + return __builtin_aarch64_crypto_sha256su1v4si_uuuu (tw0_3, w8_11, w12_15); +} + #endif /* vshl */ diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 12de4acf1ad..88eddddf77c 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -277,6 +277,10 @@ UNSPEC_SHA1H ; Used in aarch64-simd.md. UNSPEC_SHA1SU0 ; Used in aarch64-simd.md. UNSPEC_SHA1SU1 ; Used in aarch64-simd.md. + UNSPEC_SHA256H ; Used in aarch64-simd.md. + UNSPEC_SHA256H2 ; Used in aarch64-simd.md. + UNSPEC_SHA256SU0 ; Used in aarch64-simd.md. + UNSPEC_SHA256SU1 ; Used in aarch64-simd.md. ]) ;; ------------------------------------------------------------------- @@ -863,6 +867,8 @@ (define_int_iterator CRYPTO_SHA1 [UNSPEC_SHA1C UNSPEC_SHA1M UNSPEC_SHA1P]) +(define_int_iterator CRYPTO_SHA256 [UNSPEC_SHA256H UNSPEC_SHA256H2]) + ;; ------------------------------------------------------------------- ;; Int Iterators Attributes. ;; ------------------------------------------------------------------- @@ -985,3 +991,5 @@ (define_int_attr sha1_op [(UNSPEC_SHA1C "c") (UNSPEC_SHA1P "p") (UNSPEC_SHA1M "m")]) + +(define_int_attr sha256_op [(UNSPEC_SHA256H "") (UNSPEC_SHA256H2 "2")]) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 849d1f7bca3..2ee577e4a25 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-19 Tejas Belagod + + * gcc.target/aarch64/sha256_1.c: New. + 2013-12-19 Tejas Belagod * gcc.target/aarch64/sha1_1.c: New. diff --git a/gcc/testsuite/gcc.target/aarch64/sha256_1.c b/gcc/testsuite/gcc.target/aarch64/sha256_1.c new file mode 100644 index 00000000000..569817eb083 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/sha256_1.c @@ -0,0 +1,40 @@ + +/* { dg-do compile } */ +/* { dg-options "-march=armv8-a+crypto" } */ + +#include "arm_neon.h" + +uint32x4_t +test_vsha256hq_u32 (uint32x4_t hash_abcd, uint32x4_t hash_efgh, uint32x4_t wk) +{ + return vsha256hq_u32 (hash_abcd, hash_efgh, wk); +} + +/* { dg-final { scan-assembler-times "sha256h\\tq" 1 } } */ + +uint32x4_t +test_vsha256h2q_u32 (uint32x4_t hash_efgh, uint32x4_t hash_abcd, uint32x4_t wk) +{ + return vsha256h2q_u32 (hash_efgh, hash_abcd, wk); +} + +/* { dg-final { scan-assembler-times "sha256h2\\tq" 1 } } */ + +uint32x4_t +test_vsha256su0q_u32 (uint32x4_t w0_3, uint32x4_t w4_7) +{ + return vsha256su0q_u32 (w0_3, w4_7); +} + +/* { dg-final { scan-assembler-times "sha256su0\\tv" 1 } } */ + +uint32x4_t +test_vsha256su1q_u32 (uint32x4_t tw0_3, uint32x4_t w8_11, uint32x4_t w12_15) +{ + return vsha256su1q_u32 (tw0_3, w8_11, w12_15); +} + +/* { dg-final { scan-assembler-times "sha256su1\\tv" 1 } } */ + + +/* { dg-final { cleanup-saved-temps } } */ -- cgit v1.2.1 From e45446c45e5c368e19481486eaef583edc25c6f7 Mon Sep 17 00:00:00 2001 From: belagod Date: Thu, 19 Dec 2013 15:04:19 +0000 Subject: Implement support for AArch64 Crypto PMULL.64. gcc/ * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins): Define builtin types for poly64_t poly128_t. (TYPES_BINOPP, aarch64_types_binopp_qualifiers): New. * aarch64/aarch64-simd-builtins.def: Update builtins table. * config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi, aarch64_crypto_pmullv2di): New. * config/aarch64/aarch64.c (aarch64_simd_mangle_map): Update table for poly64x2_t mangler. * config/aarch64/arm_neon.h (poly64x2_t, poly64_t, poly128_t): Define. (vmull_p64, vmull_high_p64): New. * config/aarch64/iterators.md (UNSPEC_PMULL<2>): New. testsuite/ * gcc.target/aarch64/pmull_1.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206120 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 14 ++++++++++++++ gcc/config/aarch64/aarch64-builtins.c | 11 +++++++++++ gcc/config/aarch64/aarch64-simd-builtins.def | 4 ++++ gcc/config/aarch64/aarch64-simd.md | 22 ++++++++++++++++++++++ gcc/config/aarch64/aarch64.c | 1 + gcc/config/aarch64/arm_neon.h | 17 +++++++++++++++++ gcc/config/aarch64/iterators.md | 2 ++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.target/aarch64/pmull_1.c | 23 +++++++++++++++++++++++ 9 files changed, 98 insertions(+) create mode 100644 gcc/testsuite/gcc.target/aarch64/pmull_1.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1c4a9fc58ad..47dfb73660b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +o2013-12-19 Tejas Belagod + + * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins): + Define builtin types for poly64_t poly128_t. + (TYPES_BINOPP, aarch64_types_binopp_qualifiers): New. + * aarch64/aarch64-simd-builtins.def: Update builtins table. + * config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi, + aarch64_crypto_pmullv2di): New. + * config/aarch64/aarch64.c (aarch64_simd_mangle_map): Update table for + poly64x2_t mangler. + * config/aarch64/arm_neon.h (poly64x2_t, poly64_t, poly128_t): Define. + (vmull_p64, vmull_high_p64): New. + * config/aarch64/iterators.md (UNSPEC_PMULL<2>): New. + 2013-12-19 Tejas Belagod * config/aarch64/aarch64-simd-builtins.def: Update builtins table. diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c index ea933d617f5..439c3f4d820 100644 --- a/gcc/config/aarch64/aarch64-builtins.c +++ b/gcc/config/aarch64/aarch64-builtins.c @@ -156,6 +156,11 @@ static enum aarch64_type_qualifiers aarch64_types_binopu_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_unsigned, qualifier_unsigned, qualifier_unsigned }; #define TYPES_BINOPU (aarch64_types_binopu_qualifiers) +static enum aarch64_type_qualifiers +aarch64_types_binopp_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_poly, qualifier_poly, qualifier_poly }; +#define TYPES_BINOPP (aarch64_types_binopp_qualifiers) + static enum aarch64_type_qualifiers aarch64_types_ternop_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_none, qualifier_none, qualifier_none, qualifier_none }; @@ -574,6 +579,8 @@ aarch64_init_simd_builtins (void) /* Poly scalar type nodes. */ tree aarch64_simd_polyQI_type_node = aarch64_build_poly_type (QImode); tree aarch64_simd_polyHI_type_node = aarch64_build_poly_type (HImode); + tree aarch64_simd_polyDI_type_node = aarch64_build_poly_type (DImode); + tree aarch64_simd_polyTI_type_node = aarch64_build_poly_type (TImode); /* Float type nodes. */ tree aarch64_simd_float_type_node = aarch64_build_signed_type (SFmode); @@ -598,6 +605,10 @@ aarch64_init_simd_builtins (void) "__builtin_aarch64_simd_poly8"); (*lang_hooks.types.register_builtin_type) (aarch64_simd_polyHI_type_node, "__builtin_aarch64_simd_poly16"); + (*lang_hooks.types.register_builtin_type) (aarch64_simd_polyDI_type_node, + "__builtin_aarch64_simd_poly64"); + (*lang_hooks.types.register_builtin_type) (aarch64_simd_polyTI_type_node, + "__builtin_aarch64_simd_poly128"); (*lang_hooks.types.register_builtin_type) (aarch64_simd_intTI_type_node, "__builtin_aarch64_simd_ti"); (*lang_hooks.types.register_builtin_type) (aarch64_simd_intEI_type_node, diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def index c7e1120660d..705d33ac6c3 100644 --- a/gcc/config/aarch64/aarch64-simd-builtins.def +++ b/gcc/config/aarch64/aarch64-simd-builtins.def @@ -386,3 +386,7 @@ VAR1 (TERNOPU, crypto_sha256h2, 0, v4si) VAR1 (BINOPU, crypto_sha256su0, 0, v4si) VAR1 (TERNOPU, crypto_sha256su1, 0, v4si) + + /* Implemented by aarch64_crypto_pmull. */ + VAR1 (BINOPP, crypto_pmull, 0, di) + VAR1 (BINOPP, crypto_pmull, 0, v2di) diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 874d5324ffe..53457592800 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -4173,3 +4173,25 @@ "sha256su1\\t%0.4s, %2.4s, %3.4s" [(set_attr "type" "crypto_sha256_slow")] ) + +;; pmull + +(define_insn "aarch64_crypto_pmulldi" + [(set (match_operand:TI 0 "register_operand" "=w") + (unspec:TI [(match_operand:DI 1 "register_operand" "w") + (match_operand:DI 2 "register_operand" "w")] + UNSPEC_PMULL))] + "TARGET_SIMD && TARGET_CRYPTO" + "pmull\\t%0.1q, %1.1d, %2.1d" + [(set_attr "type" "neon_mul_d_long")] +) + +(define_insn "aarch64_crypto_pmullv2di" + [(set (match_operand:TI 0 "register_operand" "=w") + (unspec:TI [(match_operand:V2DI 1 "register_operand" "w") + (match_operand:V2DI 2 "register_operand" "w")] + UNSPEC_PMULL2))] + "TARGET_SIMD && TARGET_CRYPTO" + "pmull2\\t%0.1q, %1.2d, %2.2d" + [(set_attr "type" "neon_mul_d_long")] +) diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index e66808833f3..3d32ea5ee91 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -6387,6 +6387,7 @@ static aarch64_simd_mangle_map_entry aarch64_simd_mangle_map[] = { { V2DFmode, "__builtin_aarch64_simd_df", "13__Float64x2_t" }, { V16QImode, "__builtin_aarch64_simd_poly8", "12__Poly8x16_t" }, { V8HImode, "__builtin_aarch64_simd_poly16", "12__Poly16x8_t" }, + { V2DImode, "__builtin_aarch64_simd_poly64", "12__Poly64x2_t" }, { VOIDmode, NULL, NULL } }; diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h index 709c6a14c5f..e33a684aa27 100644 --- a/gcc/config/aarch64/arm_neon.h +++ b/gcc/config/aarch64/arm_neon.h @@ -75,6 +75,8 @@ typedef __builtin_aarch64_simd_poly8 poly8x16_t __attribute__ ((__vector_size__ (16))); typedef __builtin_aarch64_simd_poly16 poly16x8_t __attribute__ ((__vector_size__ (16))); +typedef __builtin_aarch64_simd_poly64 poly64x2_t + __attribute__ ((__vector_size__ (16))); typedef __builtin_aarch64_simd_uqi uint8x16_t __attribute__ ((__vector_size__ (16))); typedef __builtin_aarch64_simd_uhi uint16x8_t @@ -88,6 +90,8 @@ typedef float float32_t; typedef double float64_t; typedef __builtin_aarch64_simd_poly8 poly8_t; typedef __builtin_aarch64_simd_poly16 poly16_t; +typedef __builtin_aarch64_simd_poly64 poly64_t; +typedef __builtin_aarch64_simd_poly128 poly128_t; typedef struct int8x8x2_t { @@ -23014,6 +23018,19 @@ vsha256su1q_u32 (uint32x4_t tw0_3, uint32x4_t w8_11, uint32x4_t w12_15) return __builtin_aarch64_crypto_sha256su1v4si_uuuu (tw0_3, w8_11, w12_15); } +static __inline poly128_t +vmull_p64 (poly64_t a, poly64_t b) +{ + return + __builtin_aarch64_crypto_pmulldi_ppp (a, b); +} + +static __inline poly128_t +vmull_high_p64 (poly64x2_t a, poly64x2_t b) +{ + return __builtin_aarch64_crypto_pmullv2di_ppp (a, b); +} + #endif /* vshl */ diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 88eddddf77c..c4f95dc4fee 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -281,6 +281,8 @@ UNSPEC_SHA256H2 ; Used in aarch64-simd.md. UNSPEC_SHA256SU0 ; Used in aarch64-simd.md. UNSPEC_SHA256SU1 ; Used in aarch64-simd.md. + UNSPEC_PMULL ; Used in aarch64-simd.md. + UNSPEC_PMULL2 ; Used in aarch64-simd.md. ]) ;; ------------------------------------------------------------------- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2ee577e4a25..62eaaeb4f5b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-19 Tejas Belagod + + * gcc.target/aarch64/pmull_1.c: New. + 2013-12-19 Tejas Belagod * gcc.target/aarch64/sha256_1.c: New. diff --git a/gcc/testsuite/gcc.target/aarch64/pmull_1.c b/gcc/testsuite/gcc.target/aarch64/pmull_1.c new file mode 100644 index 00000000000..bccaec1750e --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/pmull_1.c @@ -0,0 +1,23 @@ + +/* { dg-do compile } */ +/* { dg-options "-march=armv8-a+crypto" } */ + +#include "arm_neon.h" + +poly128_t +test_vmull_p64 (poly64_t a, poly64_t b) +{ + return vmull_p64 (a, b); +} + +/* { dg-final { scan-assembler-times "pmull\\tv" 1 } } */ + +poly128_t +test_vmull_high_p64 (poly64x2_t a, poly64x2_t b) +{ + return vmull_high_p64 (a, b); +} + +/* { dg-final { scan-assembler-times "pmull2\\tv" 1 } } */ + +/* { dg-final { cleanup-saved-temps } } */ -- cgit v1.2.1 From 78eccafd29e28303cc465d9725000a182e28b50a Mon Sep 17 00:00:00 2001 From: olegendo Date: Thu, 19 Dec 2013 15:45:35 +0000 Subject: * gcc.dg/long-long-compare-1.c: Don't use deprecated -mcbranchdi option for target sh4-*-*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206121 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/long-long-compare-1.c | 4 +--- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 62eaaeb4f5b..039d1f95dcd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-19 Oleg Endo + + * gcc.dg/long-long-compare-1.c: Don't use deprecated -mcbranchdi option + for target sh4-*-*. + 2013-12-19 Tejas Belagod * gcc.target/aarch64/pmull_1.c: New. diff --git a/gcc/testsuite/gcc.dg/long-long-compare-1.c b/gcc/testsuite/gcc.dg/long-long-compare-1.c index 2c378602072..e05fcead21f 100644 --- a/gcc/testsuite/gcc.dg/long-long-compare-1.c +++ b/gcc/testsuite/gcc.dg/long-long-compare-1.c @@ -1,8 +1,6 @@ -/* Problem only noticed on SH for -mcbranchdi DImode comparison with constants. - * Target dependent failure but test valid for alls. */ +/* Problem noticed on SH for DImode comparison with constants. /* { dg-do run } */ /* { dg-options "-O0" } */ -/* { dg-options "-O0 -mcbranchdi" { target sh4-*-* } } */ extern void abort(void); extern void exit(int); -- cgit v1.2.1 From 6d92059b612326d7f54a2c82e5b4758590c0d153 Mon Sep 17 00:00:00 2001 From: olegendo Date: Thu, 19 Dec 2013 15:59:17 +0000 Subject: Remove gcc/testsuite/ prefixes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206122 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 039d1f95dcd..e67e25554ca 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -22,25 +22,25 @@ 2013-12-19 Dominik Vogt Andreas Krebbel - * gcc/testsuite/gcc.target/s390/hotpatch-1.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-2.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-3.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-4.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-5.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-6.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-7.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-8.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-9.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-10.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-11.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-12.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c: New test - * gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c: New test + * gcc.target/s390/hotpatch-1.c: New test + * gcc.target/s390/hotpatch-2.c: New test + * gcc.target/s390/hotpatch-3.c: New test + * gcc.target/s390/hotpatch-4.c: New test + * gcc.target/s390/hotpatch-5.c: New test + * gcc.target/s390/hotpatch-6.c: New test + * gcc.target/s390/hotpatch-7.c: New test + * gcc.target/s390/hotpatch-8.c: New test + * gcc.target/s390/hotpatch-9.c: New test + * gcc.target/s390/hotpatch-10.c: New test + * gcc.target/s390/hotpatch-11.c: New test + * gcc.target/s390/hotpatch-12.c: New test + * gcc.target/s390/hotpatch-compile-1.c: New test + * gcc.target/s390/hotpatch-compile-2.c: New test + * gcc.target/s390/hotpatch-compile-3.c: New test + * gcc.target/s390/hotpatch-compile-4.c: New test + * gcc.target/s390/hotpatch-compile-5.c: New test + * gcc.target/s390/hotpatch-compile-6.c: New test + * gcc.target/s390/hotpatch-compile-7.c: New test 2013-12-19 Kyrylo Tkachov -- cgit v1.2.1 From 2f2163a4db1e11694539e95b53723d0bc970ea06 Mon Sep 17 00:00:00 2001 From: clyon Date: Thu, 19 Dec 2013 16:32:04 +0000 Subject: 2013-12-19 Charles Baylis PR target/59142 * config/arm/predicates.md (vfp_hard_register_operand): New predicate. * config/arm/arm.md (vfp_pop_multiple_with_writeback): Use vfp_hard_register_operand. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206123 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 ++++++++- gcc/config/arm/arm.md | 2 +- gcc/config/arm/predicates.md | 6 ++++++ 3 files changed, 15 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 47dfb73660b..7ff9d7c7fc1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,11 @@ -o2013-12-19 Tejas Belagod +2013-12-19 Charles Baylis + + PR target/59142 + * config/arm/predicates.md (vfp_hard_register_operand): New predicate. + * config/arm/arm.md (vfp_pop_multiple_with_writeback): Use + vfp_hard_register_operand. + +2013-12-19 Tejas Belagod * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins): Define builtin types for poly64_t poly128_t. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index c474ff16d51..6e1b47d69e2 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -12253,7 +12253,7 @@ [(set (match_operand:SI 1 "s_register_operand" "+rk") (plus:SI (match_dup 1) (match_operand:SI 2 "const_int_operand" "I"))) - (set (match_operand:DF 3 "arm_hard_register_operand" "") + (set (match_operand:DF 3 "vfp_hard_register_operand" "") (mem:DF (match_dup 1)))])] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" "* diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md index 29e1e5c8276..24f05489aaf 100644 --- a/gcc/config/arm/predicates.md +++ b/gcc/config/arm/predicates.md @@ -98,6 +98,12 @@ && REGNO_REG_CLASS (REGNO (op)) == VFP_REGS))); }) +(define_predicate "vfp_hard_register_operand" + (match_code "reg") +{ + return (IS_VFP_REGNUM (REGNO (op))); +}) + (define_predicate "zero_operand" (and (match_code "const_int,const_double,const_vector") (match_test "op == CONST0_RTX (mode)"))) -- cgit v1.2.1 From f0a37dbd4edf8b005eab06be7e88a4f4939e826c Mon Sep 17 00:00:00 2001 From: clyon Date: Thu, 19 Dec 2013 16:51:35 +0000 Subject: 2013-12-19 Charles Baylis PR target/59142 gcc/ * arm/predicates.md (arm_hard_general_register_operand): New predicate. (arm_hard_register_operand): Remove. * config/arm/arm-ldmstm.ml: Use arm_hard_general_register_operand for all patterns. * config/arm/ldmstm.md: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206124 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 ++ gcc/config/arm/arm-ldmstm.ml | 4 +- gcc/config/arm/ldmstm.md | 342 +++++++++++++++++++++---------------------- gcc/config/arm/predicates.md | 4 +- 4 files changed, 185 insertions(+), 175 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7ff9d7c7fc1..aedb667de10 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2013-12-19 Charles Baylis + + PR target/59142 + * arm/predicates.md (arm_hard_general_register_operand): New + predicate. + (arm_hard_register_operand): Remove. + * config/arm/arm-ldmstm.ml: Use arm_hard_general_register_operand + for all patterns. + * config/arm/ldmstm.md: Regenerate. + 2013-12-19 Charles Baylis PR target/59142 diff --git a/gcc/config/arm/arm-ldmstm.ml b/gcc/config/arm/arm-ldmstm.ml index e615437b125..0ec5e193b54 100644 --- a/gcc/config/arm/arm-ldmstm.ml +++ b/gcc/config/arm/arm-ldmstm.ml @@ -70,7 +70,7 @@ let destreg nregs first op_type thumb = let write_ldm_set thumb nregs offset opnr first = let indent = " " in Printf.printf "%s" (if first then " [" else indent); - Printf.printf "(set (match_operand:SI %d \"arm_hard_register_operand\" \"\")\n" opnr; + Printf.printf "(set (match_operand:SI %d \"arm_hard_general_register_operand\" \"\")\n" opnr; Printf.printf "%s (mem:SI " indent; begin if offset != 0 then Printf.printf "(plus:SI " end; Printf.printf "%s" (destreg nregs first IN thumb); @@ -84,7 +84,7 @@ let write_stm_set thumb nregs offset opnr first = begin if offset != 0 then Printf.printf "(plus:SI " end; Printf.printf "%s" (destreg nregs first IN thumb); begin if offset != 0 then Printf.printf " (const_int %d))" offset end; - Printf.printf ")\n%s (match_operand:SI %d \"arm_hard_register_operand\" \"\"))" indent opnr + Printf.printf ")\n%s (match_operand:SI %d \"arm_hard_general_register_operand\" \"\"))" indent opnr let write_ldm_peep_set extra_indent nregs opnr first = let indent = " " ^ extra_indent in diff --git a/gcc/config/arm/ldmstm.md b/gcc/config/arm/ldmstm.md index ad137d492e4..22970fd662c 100644 --- a/gcc/config/arm/ldmstm.md +++ b/gcc/config/arm/ldmstm.md @@ -23,15 +23,15 @@ (define_insn "*ldm4_ia" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_operand:SI 5 "s_register_operand" "rk"))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) - (set (match_operand:SI 4 "arm_hard_register_operand" "") + (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" @@ -42,15 +42,15 @@ (define_insn "*thumb_ldm4_ia" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_operand:SI 5 "s_register_operand" "l"))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) - (set (match_operand:SI 4 "arm_hard_register_operand" "") + (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" @@ -61,15 +61,15 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_dup 5))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) - (set (match_operand:SI 4 "arm_hard_register_operand" "") + (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" @@ -82,15 +82,15 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&l") (plus:SI (match_dup 5) (const_int 16))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_dup 5))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) - (set (match_operand:SI 4 "arm_hard_register_operand" "") + (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5" @@ -100,13 +100,13 @@ (define_insn "*stm4_ia" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (match_operand:SI 5 "s_register_operand" "rk")) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) - (match_operand:SI 3 "arm_hard_register_operand" "")) + (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) - (match_operand:SI 4 "arm_hard_register_operand" ""))])] + (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(ia%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") @@ -118,13 +118,13 @@ [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) (set (mem:SI (match_dup 5)) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) - (match_operand:SI 3 "arm_hard_register_operand" "")) + (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) - (match_operand:SI 4 "arm_hard_register_operand" ""))])] + (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" "stm%(ia%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") @@ -136,29 +136,29 @@ [(set (match_operand:SI 5 "s_register_operand" "+&l") (plus:SI (match_dup 5) (const_int 16))) (set (mem:SI (match_dup 5)) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) - (match_operand:SI 3 "arm_hard_register_operand" "")) + (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) - (match_operand:SI 4 "arm_hard_register_operand" ""))])] + (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5" "stm%(ia%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4")]) (define_insn "*ldm4_ib" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int 4)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12)))) - (set (match_operand:SI 4 "arm_hard_register_operand" "") + (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 16))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" @@ -170,16 +170,16 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12)))) - (set (match_operand:SI 4 "arm_hard_register_operand" "") + (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 16))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" @@ -190,13 +190,13 @@ (define_insn "*stm4_ib" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int 4))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) - (match_operand:SI 3 "arm_hard_register_operand" "")) + (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 16))) - (match_operand:SI 4 "arm_hard_register_operand" ""))])] + (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(ib%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") @@ -207,13 +207,13 @@ [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) - (match_operand:SI 3 "arm_hard_register_operand" "")) + (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 16))) - (match_operand:SI 4 "arm_hard_register_operand" ""))])] + (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "stm%(ib%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") @@ -221,16 +221,16 @@ (define_insn "*ldm4_da" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -12)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4)))) - (set (match_operand:SI 4 "arm_hard_register_operand" "") + (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (match_dup 5)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "ldm%(da%)\t%5, {%1, %2, %3, %4}" @@ -241,16 +241,16 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -12)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4)))) - (set (match_operand:SI 4 "arm_hard_register_operand" "") + (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (match_dup 5)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "ldm%(da%)\t%5!, {%1, %2, %3, %4}" @@ -260,13 +260,13 @@ (define_insn "*stm4_da" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -12))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) - (match_operand:SI 3 "arm_hard_register_operand" "")) + (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 5)) - (match_operand:SI 4 "arm_hard_register_operand" ""))])] + (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(da%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") @@ -277,13 +277,13 @@ [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) (set (mem:SI (plus:SI (match_dup 5) (const_int -12))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) - (match_operand:SI 3 "arm_hard_register_operand" "")) + (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 5)) - (match_operand:SI 4 "arm_hard_register_operand" ""))])] + (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "stm%(da%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") @@ -291,16 +291,16 @@ (define_insn "*ldm4_db" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -16)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -12)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) - (set (match_operand:SI 4 "arm_hard_register_operand" "") + (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" @@ -313,16 +313,16 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -16)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -12)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) - (set (match_operand:SI 4 "arm_hard_register_operand" "") + (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" @@ -334,13 +334,13 @@ (define_insn "*stm4_db" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -16))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -12))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) - (match_operand:SI 3 "arm_hard_register_operand" "")) + (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) - (match_operand:SI 4 "arm_hard_register_operand" ""))])] + (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(db%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") @@ -352,13 +352,13 @@ [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) (set (mem:SI (plus:SI (match_dup 5) (const_int -16))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -12))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) - (match_operand:SI 3 "arm_hard_register_operand" "")) + (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) - (match_operand:SI 4 "arm_hard_register_operand" ""))])] + (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" "stm%(db%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") @@ -474,12 +474,12 @@ (define_insn "*ldm3_ia" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_operand:SI 4 "s_register_operand" "rk"))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" @@ -490,12 +490,12 @@ (define_insn "*thumb_ldm3_ia" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_operand:SI 4 "s_register_operand" "l"))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" @@ -506,12 +506,12 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_dup 4))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" @@ -524,12 +524,12 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&l") (plus:SI (match_dup 4) (const_int 12))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_dup 4))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" @@ -539,11 +539,11 @@ (define_insn "*stm3_ia" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (match_operand:SI 4 "s_register_operand" "rk")) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) - (match_operand:SI 3 "arm_hard_register_operand" ""))])] + (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(ia%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") @@ -555,11 +555,11 @@ [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) (set (mem:SI (match_dup 4)) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) - (match_operand:SI 3 "arm_hard_register_operand" ""))])] + (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(ia%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") @@ -571,24 +571,24 @@ [(set (match_operand:SI 4 "s_register_operand" "+&l") (plus:SI (match_dup 4) (const_int 12))) (set (mem:SI (match_dup 4)) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) - (match_operand:SI 3 "arm_hard_register_operand" ""))])] + (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" "stm%(ia%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3")]) (define_insn "*ldm3_ib" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int 4)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 12))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" @@ -600,13 +600,13 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 12))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" @@ -617,11 +617,11 @@ (define_insn "*stm3_ib" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int 4))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 12))) - (match_operand:SI 3 "arm_hard_register_operand" ""))])] + (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(ib%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") @@ -632,11 +632,11 @@ [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 12))) - (match_operand:SI 3 "arm_hard_register_operand" ""))])] + (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(ib%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") @@ -644,13 +644,13 @@ (define_insn "*ldm3_da" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -8)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (match_dup 4)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "ldm%(da%)\t%4, {%1, %2, %3}" @@ -661,13 +661,13 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -8)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (match_dup 4)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "ldm%(da%)\t%4!, {%1, %2, %3}" @@ -677,11 +677,11 @@ (define_insn "*stm3_da" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -8))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 4)) - (match_operand:SI 3 "arm_hard_register_operand" ""))])] + (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(da%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") @@ -692,11 +692,11 @@ [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) (set (mem:SI (plus:SI (match_dup 4) (const_int -8))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 4)) - (match_operand:SI 3 "arm_hard_register_operand" ""))])] + (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(da%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") @@ -704,13 +704,13 @@ (define_insn "*ldm3_db" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -12)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -8)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" @@ -723,13 +723,13 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -12)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -8)))) - (set (match_operand:SI 3 "arm_hard_register_operand" "") + (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" @@ -741,11 +741,11 @@ (define_insn "*stm3_db" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -12))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -8))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) - (match_operand:SI 3 "arm_hard_register_operand" ""))])] + (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(db%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") @@ -757,11 +757,11 @@ [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) (set (mem:SI (plus:SI (match_dup 4) (const_int -12))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -8))) - (match_operand:SI 2 "arm_hard_register_operand" "")) + (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) - (match_operand:SI 3 "arm_hard_register_operand" ""))])] + (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(db%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") @@ -863,9 +863,9 @@ (define_insn "*ldm2_ia" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_operand:SI 3 "s_register_operand" "rk"))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" @@ -876,9 +876,9 @@ (define_insn "*thumb_ldm2_ia" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_operand:SI 3 "s_register_operand" "l"))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 2" @@ -889,9 +889,9 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_dup 3))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" @@ -904,9 +904,9 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&l") (plus:SI (match_dup 3) (const_int 8))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_dup 3))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" @@ -916,9 +916,9 @@ (define_insn "*stm2_ia" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (match_operand:SI 3 "s_register_operand" "rk")) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) - (match_operand:SI 2 "arm_hard_register_operand" ""))])] + (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" "stm%(ia%)\t%3, {%1, %2}" [(set_attr "type" "store2") @@ -930,9 +930,9 @@ [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) (set (mem:SI (match_dup 3)) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) - (match_operand:SI 2 "arm_hard_register_operand" ""))])] + (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(ia%)\t%3!, {%1, %2}" [(set_attr "type" "store2") @@ -944,19 +944,19 @@ [(set (match_operand:SI 3 "s_register_operand" "+&l") (plus:SI (match_dup 3) (const_int 8))) (set (mem:SI (match_dup 3)) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) - (match_operand:SI 2 "arm_hard_register_operand" ""))])] + (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" "stm%(ia%)\t%3!, {%1, %2}" [(set_attr "type" "store2")]) (define_insn "*ldm2_ib" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int 4)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 8))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" @@ -968,10 +968,10 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 8))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" @@ -982,9 +982,9 @@ (define_insn "*stm2_ib" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int 4))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 8))) - (match_operand:SI 2 "arm_hard_register_operand" ""))])] + (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "stm%(ib%)\t%3, {%1, %2}" [(set_attr "type" "store2") @@ -995,9 +995,9 @@ [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 8))) - (match_operand:SI 2 "arm_hard_register_operand" ""))])] + (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(ib%)\t%3!, {%1, %2}" [(set_attr "type" "store2") @@ -1005,10 +1005,10 @@ (define_insn "*ldm2_da" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -4)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (match_dup 3)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "ldm%(da%)\t%3, {%1, %2}" @@ -1019,10 +1019,10 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -4)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (match_dup 3)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "ldm%(da%)\t%3!, {%1, %2}" @@ -1032,9 +1032,9 @@ (define_insn "*stm2_da" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -4))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 3)) - (match_operand:SI 2 "arm_hard_register_operand" ""))])] + (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "stm%(da%)\t%3, {%1, %2}" [(set_attr "type" "store2") @@ -1045,9 +1045,9 @@ [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) (set (mem:SI (plus:SI (match_dup 3) (const_int -4))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 3)) - (match_operand:SI 2 "arm_hard_register_operand" ""))])] + (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(da%)\t%3!, {%1, %2}" [(set_attr "type" "store2") @@ -1055,10 +1055,10 @@ (define_insn "*ldm2_db" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_register_operand" "") + [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -8)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" @@ -1071,10 +1071,10 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) - (set (match_operand:SI 1 "arm_hard_register_operand" "") + (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -8)))) - (set (match_operand:SI 2 "arm_hard_register_operand" "") + (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" @@ -1086,9 +1086,9 @@ (define_insn "*stm2_db" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -8))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int -4))) - (match_operand:SI 2 "arm_hard_register_operand" ""))])] + (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" "stm%(db%)\t%3, {%1, %2}" [(set_attr "type" "store2") @@ -1100,9 +1100,9 @@ [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) (set (mem:SI (plus:SI (match_dup 3) (const_int -8))) - (match_operand:SI 1 "arm_hard_register_operand" "")) + (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int -4))) - (match_operand:SI 2 "arm_hard_register_operand" ""))])] + (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(db%)\t%3!, {%1, %2}" [(set_attr "type" "store2") diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md index 24f05489aaf..ed015783515 100644 --- a/gcc/config/arm/predicates.md +++ b/gcc/config/arm/predicates.md @@ -54,10 +54,10 @@ (match_operand 0 "s_register_operand"))) ;; Any hard register. -(define_predicate "arm_hard_register_operand" +(define_predicate "arm_hard_general_register_operand" (match_code "reg") { - return REGNO (op) < FIRST_PSEUDO_REGISTER; + return REGNO (op) <= LAST_ARM_REGNUM; }) ;; A low register. -- cgit v1.2.1 From 1c2027c26800c37baa2ac8fc16f6882aa9db94ad Mon Sep 17 00:00:00 2001 From: clyon Date: Thu, 19 Dec 2013 16:54:16 +0000 Subject: 2013-12-19 Charles Baylis PR target/59142 gcc/ * config/arm/arm-ldmstm.ml: Use low_register_operand for Thumb patterns. * config/arm/ldmstm.md: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206125 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++-- gcc/config/arm/arm-ldmstm.ml | 7 ++++-- gcc/config/arm/ldmstm.md | 54 ++++++++++++++++++++++---------------------- 3 files changed, 41 insertions(+), 31 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aedb667de10..7786c661797 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,8 +1,15 @@ 2013-12-19 Charles Baylis PR target/59142 - * arm/predicates.md (arm_hard_general_register_operand): New - predicate. + * config/arm/arm-ldmstm.ml: Use low_register_operand for Thumb + patterns. + * config/arm/ldmstm.md: Regenerate. + +2013-12-19 Charles Baylis + + PR target/59142 + * config/arm/predicates.md (arm_hard_general_register_operand): + New predicate. (arm_hard_register_operand): Remove. * config/arm/arm-ldmstm.ml: Use arm_hard_general_register_operand for all patterns. diff --git a/gcc/config/arm/arm-ldmstm.ml b/gcc/config/arm/arm-ldmstm.ml index 0ec5e193b54..682aa2c8ee3 100644 --- a/gcc/config/arm/arm-ldmstm.ml +++ b/gcc/config/arm/arm-ldmstm.ml @@ -67,10 +67,13 @@ let destreg nregs first op_type thumb = Printf.sprintf ("(match_operand:SI %d \"s_register_operand\" \"%s%s\")") (nregs + 1) (inout_constr op_type) (constr thumb) +let reg_predicate thumb = + if thumb then "low_register_operand" else "arm_hard_general_register_operand" + let write_ldm_set thumb nregs offset opnr first = let indent = " " in Printf.printf "%s" (if first then " [" else indent); - Printf.printf "(set (match_operand:SI %d \"arm_hard_general_register_operand\" \"\")\n" opnr; + Printf.printf "(set (match_operand:SI %d \"%s\" \"\")\n" opnr (reg_predicate thumb); Printf.printf "%s (mem:SI " indent; begin if offset != 0 then Printf.printf "(plus:SI " end; Printf.printf "%s" (destreg nregs first IN thumb); @@ -84,7 +87,7 @@ let write_stm_set thumb nregs offset opnr first = begin if offset != 0 then Printf.printf "(plus:SI " end; Printf.printf "%s" (destreg nregs first IN thumb); begin if offset != 0 then Printf.printf " (const_int %d))" offset end; - Printf.printf ")\n%s (match_operand:SI %d \"arm_hard_general_register_operand\" \"\"))" indent opnr + Printf.printf ")\n%s (match_operand:SI %d \"%s\" \"\"))" indent opnr (reg_predicate thumb) let write_ldm_peep_set extra_indent nregs opnr first = let indent = " " ^ extra_indent in diff --git a/gcc/config/arm/ldmstm.md b/gcc/config/arm/ldmstm.md index 22970fd662c..6e3c5d15a04 100644 --- a/gcc/config/arm/ldmstm.md +++ b/gcc/config/arm/ldmstm.md @@ -42,15 +42,15 @@ (define_insn "*thumb_ldm4_ia" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") + [(set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_operand:SI 5 "s_register_operand" "l"))) - (set (match_operand:SI 2 "arm_hard_general_register_operand" "") + (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_general_register_operand" "") + (set (match_operand:SI 3 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) - (set (match_operand:SI 4 "arm_hard_general_register_operand" "") + (set (match_operand:SI 4 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" @@ -82,15 +82,15 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&l") (plus:SI (match_dup 5) (const_int 16))) - (set (match_operand:SI 1 "arm_hard_general_register_operand" "") + (set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_dup 5))) - (set (match_operand:SI 2 "arm_hard_general_register_operand" "") + (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_general_register_operand" "") + (set (match_operand:SI 3 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) - (set (match_operand:SI 4 "arm_hard_general_register_operand" "") + (set (match_operand:SI 4 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5" @@ -136,13 +136,13 @@ [(set (match_operand:SI 5 "s_register_operand" "+&l") (plus:SI (match_dup 5) (const_int 16))) (set (mem:SI (match_dup 5)) - (match_operand:SI 1 "arm_hard_general_register_operand" "")) + (match_operand:SI 1 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) - (match_operand:SI 2 "arm_hard_general_register_operand" "")) + (match_operand:SI 2 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) - (match_operand:SI 3 "arm_hard_general_register_operand" "")) + (match_operand:SI 3 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) - (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] + (match_operand:SI 4 "low_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5" "stm%(ia%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4")]) @@ -490,12 +490,12 @@ (define_insn "*thumb_ldm3_ia" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") + [(set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_operand:SI 4 "s_register_operand" "l"))) - (set (match_operand:SI 2 "arm_hard_general_register_operand" "") + (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_general_register_operand" "") + (set (match_operand:SI 3 "low_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" @@ -524,12 +524,12 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&l") (plus:SI (match_dup 4) (const_int 12))) - (set (match_operand:SI 1 "arm_hard_general_register_operand" "") + (set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_dup 4))) - (set (match_operand:SI 2 "arm_hard_general_register_operand" "") + (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) - (set (match_operand:SI 3 "arm_hard_general_register_operand" "") + (set (match_operand:SI 3 "low_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" @@ -571,11 +571,11 @@ [(set (match_operand:SI 4 "s_register_operand" "+&l") (plus:SI (match_dup 4) (const_int 12))) (set (mem:SI (match_dup 4)) - (match_operand:SI 1 "arm_hard_general_register_operand" "")) + (match_operand:SI 1 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) - (match_operand:SI 2 "arm_hard_general_register_operand" "")) + (match_operand:SI 2 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) - (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] + (match_operand:SI 3 "low_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" "stm%(ia%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3")]) @@ -876,9 +876,9 @@ (define_insn "*thumb_ldm2_ia" [(match_parallel 0 "load_multiple_operation" - [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") + [(set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_operand:SI 3 "s_register_operand" "l"))) - (set (match_operand:SI 2 "arm_hard_general_register_operand" "") + (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 2" @@ -904,9 +904,9 @@ [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&l") (plus:SI (match_dup 3) (const_int 8))) - (set (match_operand:SI 1 "arm_hard_general_register_operand" "") + (set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_dup 3))) - (set (match_operand:SI 2 "arm_hard_general_register_operand" "") + (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" @@ -944,9 +944,9 @@ [(set (match_operand:SI 3 "s_register_operand" "+&l") (plus:SI (match_dup 3) (const_int 8))) (set (mem:SI (match_dup 3)) - (match_operand:SI 1 "arm_hard_general_register_operand" "")) + (match_operand:SI 1 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) - (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] + (match_operand:SI 2 "low_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" "stm%(ia%)\t%3!, {%1, %2}" [(set_attr "type" "store2")]) -- cgit v1.2.1 From ef8395d0500fcfe4ba7cba65ab09989a6bf65da8 Mon Sep 17 00:00:00 2001 From: clyon Date: Thu, 19 Dec 2013 16:55:40 +0000 Subject: Fix comment in gcc/config/arm/predicates.md git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206126 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/config/arm/predicates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md index ed015783515..e151a6b1f88 100644 --- a/gcc/config/arm/predicates.md +++ b/gcc/config/arm/predicates.md @@ -53,7 +53,7 @@ (ior (match_operand 0 "imm_for_neon_logic_operand") (match_operand 0 "s_register_operand"))) -;; Any hard register. +;; Any general register. (define_predicate "arm_hard_general_register_operand" (match_code "reg") { -- cgit v1.2.1 From d0862f78b8a71728b4537c67ed5102c9aa596092 Mon Sep 17 00:00:00 2001 From: ktkachov Date: Thu, 19 Dec 2013 17:05:42 +0000 Subject: 2013-12-19 Kyrylo Tkachov * c-c++-common/cilk-plus/SE/ef_error.c: Use -fopen-simd. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206127 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e67e25554ca..8d61415b624 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-19 Kyrylo Tkachov + + * c-c++-common/cilk-plus/SE/ef_error.c: Use -fopen-simd. + 2013-12-19 Oleg Endo * gcc.dg/long-long-compare-1.c: Don't use deprecated -mcbranchdi option diff --git a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c index 478bfa1fc4a..5312992ff66 100644 --- a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c +++ b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error.c @@ -1,6 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-fcilkplus -fopenmp" } */ -/* { dg-require-effective-target fopenmp } */ +/* { dg-options "-fcilkplus -fopenmp-simd" } */ #pragma omp declare simd linear(y:1) simdlen(4) __attribute__((vector (linear (y:1), vectorlength(4)))) -- cgit v1.2.1 From 2a0c73f2467c12226f584db5fc85592011a37155 Mon Sep 17 00:00:00 2001 From: ktkachov Date: Thu, 19 Dec 2013 17:55:38 +0000 Subject: [gcc/] 2013-12-19 Kyrylo Tkachov * Makefile.in (TEXI_GCC_FILES): Add arm-acle-intrinsics.texi. * config.gcc (extra_headers): Add arm_acle.h. * config/arm/arm.c (FL_CRC32): Define. (arm_have_crc): Likewise. (arm_option_override): Set arm_have_crc. (arm_builtins): Add CRC32 builtins. (bdesc_2arg): Likewise. (arm_init_crc32_builtins): New function. (arm_init_builtins): Initialise CRC32 builtins. (arm_file_start): Handle architecture extensions. * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FEATURE_CRC32. Define __ARM_32BIT_STATE. (TARGET_CRC32): Define. * config/arm/arm-arches.def: Add armv8-a+crc. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm.md (type): Add crc. (): New insn. * config/arm/arm_acle.h: New file. * config/arm/iterators.md (CRC): New int iterator. (crc_variant, crc_mode): New int attributes. * confg/arm/unspecs.md (UNSPEC_CRC32B, UNSPEC_CRC32H, UNSPEC_CRC32W, UNSPEC_CRC32CB, UNSPEC_CRC32CH, UNSPEC_CRC32CW): New unspecs. * doc/invoke.texi: Document -march=armv8-a+crc option. * doc/extend.texi: Document ACLE intrinsics. [gcc/testsuite/] 2013-12-19 Kyrylo Tkachov * lib/target-supports.exp (add_options_for_arm_crc): New procedure. (check_effective_target_arm_crc_ok_nocache): Likewise. (check_effective_target_arm_crc_ok): Likewise. * gcc.target/arm/acle/: New directory. * gcc.target/arm/acle/acle.exp: New. * gcc.target/arm/acle/crc32b.c: New test. * gcc.target/arm/acle/crc32h.c: Likewise. * gcc.target/arm/acle/crc32w.c: Likewise. * gcc.target/arm/acle/crc32d.c: Likewise. * gcc.target/arm/acle/crc32cb.c: Likewise. * gcc.target/arm/acle/crc32ch.c: Likewise. * gcc.target/arm/acle/crc32cw.c: Likewise. * gcc.target/arm/acle/crc32cd.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206128 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 27 ++++++++ gcc/Makefile.in | 3 +- gcc/config.gcc | 2 +- gcc/config/arm/arm-arches.def | 1 + gcc/config/arm/arm-tables.opt | 7 +- gcc/config/arm/arm.c | 81 +++++++++++++++++++++- gcc/config/arm/arm.h | 9 +++ gcc/config/arm/arm.md | 11 +++ gcc/config/arm/arm_acle.h | 100 ++++++++++++++++++++++++++++ gcc/config/arm/iterators.md | 12 ++++ gcc/config/arm/types.md | 1 + gcc/config/arm/unspecs.md | 6 ++ gcc/doc/arm-acle-intrinsics.texi | 55 +++++++++++++++ gcc/doc/extend.texi | 9 +++ gcc/doc/invoke.texi | 5 +- gcc/testsuite/ChangeLog | 16 +++++ gcc/testsuite/gcc.target/arm/acle/acle.exp | 35 ++++++++++ gcc/testsuite/gcc.target/arm/acle/crc32b.c | 20 ++++++ gcc/testsuite/gcc.target/arm/acle/crc32cb.c | 20 ++++++ gcc/testsuite/gcc.target/arm/acle/crc32cd.c | 20 ++++++ gcc/testsuite/gcc.target/arm/acle/crc32ch.c | 20 ++++++ gcc/testsuite/gcc.target/arm/acle/crc32cw.c | 20 ++++++ gcc/testsuite/gcc.target/arm/acle/crc32d.c | 20 ++++++ gcc/testsuite/gcc.target/arm/acle/crc32h.c | 20 ++++++ gcc/testsuite/gcc.target/arm/acle/crc32w.c | 20 ++++++ gcc/testsuite/lib/target-supports.exp | 23 +++++++ 26 files changed, 556 insertions(+), 7 deletions(-) create mode 100644 gcc/config/arm/arm_acle.h create mode 100644 gcc/doc/arm-acle-intrinsics.texi create mode 100644 gcc/testsuite/gcc.target/arm/acle/acle.exp create mode 100644 gcc/testsuite/gcc.target/arm/acle/crc32b.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/crc32cb.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/crc32cd.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/crc32ch.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/crc32cw.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/crc32d.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/crc32h.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/crc32w.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7786c661797..5729893a655 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,30 @@ +2013-12-19 Kyrylo Tkachov + + * Makefile.in (TEXI_GCC_FILES): Add arm-acle-intrinsics.texi. + * config.gcc (extra_headers): Add arm_acle.h. + * config/arm/arm.c (FL_CRC32): Define. + (arm_have_crc): Likewise. + (arm_option_override): Set arm_have_crc. + (arm_builtins): Add CRC32 builtins. + (bdesc_2arg): Likewise. + (arm_init_crc32_builtins): New function. + (arm_init_builtins): Initialise CRC32 builtins. + (arm_file_start): Handle architecture extensions. + * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FEATURE_CRC32. + Define __ARM_32BIT_STATE. + (TARGET_CRC32): Define. + * config/arm/arm-arches.def: Add armv8-a+crc. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm.md (type): Add crc. + (): New insn. + * config/arm/arm_acle.h: New file. + * config/arm/iterators.md (CRC): New int iterator. + (crc_variant, crc_mode): New int attributes. + * confg/arm/unspecs.md (UNSPEC_CRC32B, UNSPEC_CRC32H, UNSPEC_CRC32W, + UNSPEC_CRC32CB, UNSPEC_CRC32CH, UNSPEC_CRC32CW): New unspecs. + * doc/invoke.texi: Document -march=armv8-a+crc option. + * doc/extend.texi: Document ACLE intrinsics. + 2013-12-19 Charles Baylis PR target/59142 diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 0d09ba982ad..b79bb0c0aca 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -2794,7 +2794,8 @@ TEXI_GCC_FILES = gcc.texi gcc-common.texi gcc-vers.texi frontends.texi \ gcov.texi trouble.texi bugreport.texi service.texi \ contribute.texi compat.texi funding.texi gnu.texi gpl_v3.texi \ fdl.texi contrib.texi cppenv.texi cppopts.texi avr-mmcu.texi \ - implement-c.texi implement-cxx.texi arm-neon-intrinsics.texi + implement-c.texi implement-cxx.texi arm-neon-intrinsics.texi \ + arm-acle-intrinsics.texi # we explicitly use $(srcdir)/doc/tm.texi here to avoid confusion with # the generated tm.texi; the latter might have a more recent timestamp, diff --git a/gcc/config.gcc b/gcc/config.gcc index 8464d8fdfee..fbfc121f9c6 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -329,8 +329,8 @@ arc*-*-*) ;; arm*-*-*) cpu_type=arm - extra_headers="mmintrin.h arm_neon.h" extra_objs="aarch-common.o" + extra_headers="mmintrin.h arm_neon.h arm_acle.h" target_type_format_char='%' c_target_objs="arm-c.o" cxx_target_objs="arm-c.o" diff --git a/gcc/config/arm/arm-arches.def b/gcc/config/arm/arm-arches.def index fcf34012262..9b7d20c2e23 100644 --- a/gcc/config/arm/arm-arches.def +++ b/gcc/config/arm/arm-arches.def @@ -54,5 +54,6 @@ ARM_ARCH("armv7-r", cortexr4, 7R, FL_CO_PROC | FL_FOR_ARCH7R) ARM_ARCH("armv7-m", cortexm3, 7M, FL_CO_PROC | FL_FOR_ARCH7M) ARM_ARCH("armv7e-m", cortexm4, 7EM, FL_CO_PROC | FL_FOR_ARCH7EM) ARM_ARCH("armv8-a", cortexa53, 8A, FL_CO_PROC | FL_FOR_ARCH8A) +ARM_ARCH("armv8-a+crc",cortexa53, 8A,FL_CO_PROC | FL_CRC32 | FL_FOR_ARCH8A) ARM_ARCH("iwmmxt", iwmmxt, 5TE, FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT) ARM_ARCH("iwmmxt2", iwmmxt2, 5TE, FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT | FL_IWMMXT2) diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt index 702338c23f9..3a17c2c730b 100644 --- a/gcc/config/arm/arm-tables.opt +++ b/gcc/config/arm/arm-tables.opt @@ -371,10 +371,13 @@ EnumValue Enum(arm_arch) String(armv8-a) Value(23) EnumValue -Enum(arm_arch) String(iwmmxt) Value(24) +Enum(arm_arch) String(armv8-a+crc) Value(24) EnumValue -Enum(arm_arch) String(iwmmxt2) Value(25) +Enum(arm_arch) String(iwmmxt) Value(25) + +EnumValue +Enum(arm_arch) String(iwmmxt2) Value(26) Enum Name(arm_fpu) Type(int) diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 8fea2a6ed51..be9044ed1c7 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -736,6 +736,7 @@ static int thumb_call_reg_needed; #define FL_ARCH7 (1 << 22) /* Architecture 7. */ #define FL_ARM_DIV (1 << 23) /* Hardware divide (ARM mode). */ #define FL_ARCH8 (1 << 24) /* Architecture 8. */ +#define FL_CRC32 (1 << 25) /* ARMv8 CRC32 instructions. */ #define FL_IWMMXT (1 << 29) /* XScale v2 or "Intel Wireless MMX technology". */ #define FL_IWMMXT2 (1 << 30) /* "Intel Wireless MMX2 technology". */ @@ -901,6 +902,9 @@ int arm_condexec_mask = 0; /* The number of bits used in arm_condexec_mask. */ int arm_condexec_masklen = 0; +/* Nonzero if chip supports the ARMv8 CRC instructions. */ +int arm_arch_crc = 0; + /* The condition codes of the ARM, and the inverse function. */ static const char * const arm_condition_codes[] = { @@ -2480,6 +2484,7 @@ arm_option_override (void) arm_arch_thumb_hwdiv = (insn_flags & FL_THUMB_DIV) != 0; arm_arch_arm_hwdiv = (insn_flags & FL_ARM_DIV) != 0; arm_tune_cortex_a9 = (arm_tune == cortexa9) != 0; + arm_arch_crc = (insn_flags & FL_CRC32) != 0; if (arm_restrict_it == 2) arm_restrict_it = arm_arch8 && TARGET_THUMB2; @@ -23139,6 +23144,13 @@ enum arm_builtins ARM_BUILTIN_WMERGE, + ARM_BUILTIN_CRC32B, + ARM_BUILTIN_CRC32H, + ARM_BUILTIN_CRC32W, + ARM_BUILTIN_CRC32CB, + ARM_BUILTIN_CRC32CH, + ARM_BUILTIN_CRC32CW, + #include "arm_neon_builtins.def" ,ARM_BUILTIN_MAX @@ -23718,7 +23730,7 @@ struct builtin_description const enum rtx_code comparison; const unsigned int flag; }; - + static const struct builtin_description bdesc_2arg[] = { #define IWMMXT_BUILTIN(code, string, builtin) \ @@ -23824,6 +23836,17 @@ static const struct builtin_description bdesc_2arg[] = IWMMXT_BUILTIN2 (iwmmxt_wpackdus, WPACKDUS) IWMMXT_BUILTIN2 (iwmmxt_wmacuz, WMACUZ) IWMMXT_BUILTIN2 (iwmmxt_wmacsz, WMACSZ) + +#define CRC32_BUILTIN(L, U) \ + {0, CODE_FOR_##L, "__builtin_arm_"#L, ARM_BUILTIN_##U, \ + UNKNOWN, 0}, + CRC32_BUILTIN (crc32b, CRC32B) + CRC32_BUILTIN (crc32h, CRC32H) + CRC32_BUILTIN (crc32w, CRC32W) + CRC32_BUILTIN (crc32cb, CRC32CB) + CRC32_BUILTIN (crc32ch, CRC32CH) + CRC32_BUILTIN (crc32cw, CRC32CW) +#undef CRC32_BUILTIN }; static const struct builtin_description bdesc_1arg[] = @@ -24242,6 +24265,42 @@ arm_init_fp16_builtins (void) (*lang_hooks.types.register_builtin_type) (fp16_type, "__fp16"); } +static void +arm_init_crc32_builtins () +{ + tree si_ftype_si_qi + = build_function_type_list (unsigned_intSI_type_node, + unsigned_intSI_type_node, + unsigned_intQI_type_node, NULL_TREE); + tree si_ftype_si_hi + = build_function_type_list (unsigned_intSI_type_node, + unsigned_intSI_type_node, + unsigned_intHI_type_node, NULL_TREE); + tree si_ftype_si_si + = build_function_type_list (unsigned_intSI_type_node, + unsigned_intSI_type_node, + unsigned_intSI_type_node, NULL_TREE); + + arm_builtin_decls[ARM_BUILTIN_CRC32B] + = add_builtin_function ("__builtin_arm_crc32b", si_ftype_si_qi, + ARM_BUILTIN_CRC32B, BUILT_IN_MD, NULL, NULL_TREE); + arm_builtin_decls[ARM_BUILTIN_CRC32H] + = add_builtin_function ("__builtin_arm_crc32h", si_ftype_si_hi, + ARM_BUILTIN_CRC32H, BUILT_IN_MD, NULL, NULL_TREE); + arm_builtin_decls[ARM_BUILTIN_CRC32W] + = add_builtin_function ("__builtin_arm_crc32w", si_ftype_si_si, + ARM_BUILTIN_CRC32W, BUILT_IN_MD, NULL, NULL_TREE); + arm_builtin_decls[ARM_BUILTIN_CRC32CB] + = add_builtin_function ("__builtin_arm_crc32cb", si_ftype_si_qi, + ARM_BUILTIN_CRC32CB, BUILT_IN_MD, NULL, NULL_TREE); + arm_builtin_decls[ARM_BUILTIN_CRC32CH] + = add_builtin_function ("__builtin_arm_crc32ch", si_ftype_si_hi, + ARM_BUILTIN_CRC32CH, BUILT_IN_MD, NULL, NULL_TREE); + arm_builtin_decls[ARM_BUILTIN_CRC32CW] + = add_builtin_function ("__builtin_arm_crc32cw", si_ftype_si_si, + ARM_BUILTIN_CRC32CW, BUILT_IN_MD, NULL, NULL_TREE); +} + static void arm_init_builtins (void) { @@ -24253,6 +24312,9 @@ arm_init_builtins (void) if (arm_fp16_format) arm_init_fp16_builtins (); + + if (TARGET_CRC32) + arm_init_crc32_builtins (); } /* Return the ARM builtin for CODE. */ @@ -27526,7 +27588,22 @@ arm_file_start (void) { const char *fpu_name; if (arm_selected_arch) - asm_fprintf (asm_out_file, "\t.arch %s\n", arm_selected_arch->name); + { + const char* pos = strchr (arm_selected_arch->name, '+'); + if (pos) + { + char buf[15]; + gcc_assert (strlen (arm_selected_arch->name) + <= sizeof (buf) / sizeof (*pos)); + strncpy (buf, arm_selected_arch->name, + (pos - arm_selected_arch->name) * sizeof (*pos)); + buf[pos - arm_selected_arch->name] = '\0'; + asm_fprintf (asm_out_file, "\t.arch %s\n", buf); + asm_fprintf (asm_out_file, "\t.arch_extension %s\n", pos + 1); + } + else + asm_fprintf (asm_out_file, "\t.arch %s\n", arm_selected_arch->name); + } else if (strncmp (arm_selected_cpu->name, "generic", 7) == 0) asm_fprintf (asm_out_file, "\t.arch %s\n", arm_selected_cpu->name + 8); else diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 7b5a7f98e31..e02b2ad17e8 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -51,6 +51,10 @@ extern char arm_arch_name[]; builtin_define ("__ARM_FEATURE_SAT"); \ if (unaligned_access) \ builtin_define ("__ARM_FEATURE_UNALIGNED"); \ + if (TARGET_CRC32) \ + builtin_define ("__ARM_FEATURE_CRC32"); \ + if (TARGET_32BIT) \ + builtin_define ("__ARM_32BIT_STATE"); \ if (TARGET_ARM_FEATURE_LDREX) \ builtin_define_with_int_value ( \ "__ARM_FEATURE_LDREX", TARGET_ARM_FEATURE_LDREX); \ @@ -274,6 +278,8 @@ extern void (*arm_lang_output_object_attributes_hook)(void); #define TARGET_LDRD (arm_arch5e && ARM_DOUBLEWORD_ALIGN \ && !TARGET_THUMB1) +#define TARGET_CRC32 (arm_arch_crc) + /* The following two macros concern the ability to execute coprocessor instructions for VFPv3 or NEON. TARGET_VFP3/TARGET_VFPD32 are currently only ever tested when we know we are generating for VFP hardware; we need @@ -561,6 +567,9 @@ extern int prefer_neon_for_64bits; extern bool arm_disable_literal_pool; #endif +/* Nonzero if chip supports the ARMv8 CRC instructions. */ +extern int arm_arch_crc; + #ifndef TARGET_DEFAULT #define TARGET_DEFAULT (MASK_APCS_FRAME) #endif diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 6e1b47d69e2..0440ce67451 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -12870,6 +12870,17 @@ (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) +;; ARMv8 CRC32 instructions. +(define_insn "" + [(set (match_operand:SI 0 "s_register_operand" "=r") + (unspec:SI [(match_operand:SI 1 "s_register_operand" "r") + (match_operand: 2 "s_register_operand" "r")] + CRC))] + "TARGET_CRC32" + "\\t%0, %1, %2" + [(set_attr "type" "crc") + (set_attr "conds" "unconditional")] +) ;; Load the load/store double peephole optimizations. (include "ldrdstrd.md") diff --git a/gcc/config/arm/arm_acle.h b/gcc/config/arm/arm_acle.h new file mode 100644 index 00000000000..b04605bfc23 --- /dev/null +++ b/gcc/config/arm/arm_acle.h @@ -0,0 +1,100 @@ +/* ARM Non-NEON ACLE intrinsics include file. + + Copyright (C) 2013 Free Software Foundation, Inc. + Contributed by ARM Ltd. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + +#ifndef _GCC_ARM_ACLE_H +#define _GCC_ARM_ACLE_H + +#include +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __ARM_FEATURE_CRC32 +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32b (uint32_t a, uint8_t b) +{ + return __builtin_arm_crc32b (a, b); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32h (uint32_t a, uint16_t b) +{ + return __builtin_arm_crc32h (a, b); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32w (uint32_t a, uint32_t b) +{ + return __builtin_arm_crc32w (a, b); +} + +#ifdef __ARM_32BIT_STATE +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32d (uint32_t a, uint64_t b) +{ + uint32_t d; + + d = __crc32w (__crc32w (a, b & 0xffffffffULL), b >> 32); + return d; +} +#endif + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32cb (uint32_t a, uint8_t b) +{ + return __builtin_arm_crc32cb (a, b); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32ch (uint32_t a, uint16_t b) +{ + return __builtin_arm_crc32ch (a, b); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32cw (uint32_t a, uint32_t b) +{ + return __builtin_arm_crc32cw (a, b); +} + +#ifdef __ARM_32BIT_STATE +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +__crc32cd (uint32_t a, uint64_t b) +{ + uint32_t d; + + d = __crc32cw (__crc32cw (a, b & 0xffffffffULL), b >> 32); + return d; +} +#endif + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/gcc/config/arm/iterators.md b/gcc/config/arm/iterators.md index 66779a7b7fa..ff5462c4b35 100644 --- a/gcc/config/arm/iterators.md +++ b/gcc/config/arm/iterators.md @@ -201,6 +201,9 @@ (define_int_iterator NEON_VRINT [UNSPEC_NVRINTP UNSPEC_NVRINTZ UNSPEC_NVRINTM UNSPEC_NVRINTX UNSPEC_NVRINTA UNSPEC_NVRINTN]) +(define_int_iterator CRC [UNSPEC_CRC32B UNSPEC_CRC32H UNSPEC_CRC32W + UNSPEC_CRC32CB UNSPEC_CRC32CH UNSPEC_CRC32CW]) + ;;---------------------------------------------------------------------------- ;; Mode attributes ;;---------------------------------------------------------------------------- @@ -518,6 +521,15 @@ (define_int_attr nvrint_variant [(UNSPEC_NVRINTZ "z") (UNSPEC_NVRINTP "p") (UNSPEC_NVRINTA "a") (UNSPEC_NVRINTM "m") (UNSPEC_NVRINTX "x") (UNSPEC_NVRINTN "n")]) + +(define_int_attr crc_variant [(UNSPEC_CRC32B "crc32b") (UNSPEC_CRC32H "crc32h") + (UNSPEC_CRC32W "crc32w") (UNSPEC_CRC32CB "crc32cb") + (UNSPEC_CRC32CH "crc32ch") (UNSPEC_CRC32CW "crc32cw")]) + +(define_int_attr crc_mode [(UNSPEC_CRC32B "QI") (UNSPEC_CRC32H "HI") + (UNSPEC_CRC32W "SI") (UNSPEC_CRC32CB "QI") + (UNSPEC_CRC32CH "HI") (UNSPEC_CRC32CW "SI")]) + ;; Both kinds of return insn. (define_code_iterator returns [return simple_return]) (define_code_attr return_str [(return "") (simple_return "simple_")]) diff --git a/gcc/config/arm/types.md b/gcc/config/arm/types.md index 0ff9b08f460..40c4a787ac3 100644 --- a/gcc/config/arm/types.md +++ b/gcc/config/arm/types.md @@ -554,6 +554,7 @@ clz,\ no_insn,\ csel,\ + crc,\ extend,\ f_cvt,\ f_cvtf2i,\ diff --git a/gcc/config/arm/unspecs.md b/gcc/config/arm/unspecs.md index 508603cf6c8..f8faba3ae12 100644 --- a/gcc/config/arm/unspecs.md +++ b/gcc/config/arm/unspecs.md @@ -149,6 +149,12 @@ (define_c_enum "unspec" [ UNSPEC_ASHIFT_SIGNED UNSPEC_ASHIFT_UNSIGNED + UNSPEC_CRC32B + UNSPEC_CRC32H + UNSPEC_CRC32W + UNSPEC_CRC32CB + UNSPEC_CRC32CH + UNSPEC_CRC32CW UNSPEC_LOAD_COUNT UNSPEC_VABD UNSPEC_VABDL diff --git a/gcc/doc/arm-acle-intrinsics.texi b/gcc/doc/arm-acle-intrinsics.texi new file mode 100644 index 00000000000..bb6290b207d --- /dev/null +++ b/gcc/doc/arm-acle-intrinsics.texi @@ -0,0 +1,55 @@ +@c Copyright (C) 2013 Free Software Foundation, Inc. +@c This is part of the GCC manual. +@c For copying conditions, see the file gcc.texi. + +@subsubsection CRC32 intrinsics + +@itemize @bullet +@item uint32_t __crc32b (uint32_t, uint8_t) +@*@emph{Form of expected instruction(s):} @code{crc32b @var{r0}, @var{r0}, @var{r0}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32h (uint32_t, uint16_t) +@*@emph{Form of expected instruction(s):} @code{crc32h @var{r0}, @var{r0}, @var{r0}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32w (uint32_t, uint32_t) +@*@emph{Form of expected instruction(s):} @code{crc32w @var{r0}, @var{r0}, @var{r0}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32d (uint32_t, uint64_t) +@*@emph{Form of expected instruction(s):} Two @code{crc32w @var{r0}, @var{r0}, @var{r0}} +instructions for AArch32. One @code{crc32w @var{w0}, @var{w0}, @var{x0}} instruction for +AArch64. +@end itemize + +@itemize @bullet +@item uint32_t __crc32cb (uint32_t, uint8_t) +@*@emph{Form of expected instruction(s):} @code{crc32cb @var{r0}, @var{r0}, @var{r0}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32ch (uint32_t, uint16_t) +@*@emph{Form of expected instruction(s):} @code{crc32ch @var{r0}, @var{r0}, @var{r0}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32cw (uint32_t, uint32_t) +@*@emph{Form of expected instruction(s):} @code{crc32cw @var{r0}, @var{r0}, @var{r0}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32cd (uint32_t, uint64_t) +@*@emph{Form of expected instruction(s):} Two @code{crc32cw @var{r0}, @var{r0}, @var{r0}} +instructions for AArch32. One @code{crc32cw @var{w0}, @var{w0}, @var{x0}} instruction for +AArch64. +@end itemize diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 2ce00989bcb..d539bd18d17 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -9016,6 +9016,7 @@ instructions, but allow the compiler to schedule those calls. * ARC SIMD Built-in Functions:: * ARM iWMMXt Built-in Functions:: * ARM NEON Intrinsics:: +* ARM ACLE Intrinsics:: * AVR Built-in Functions:: * Blackfin Built-in Functions:: * FR-V Built-in Functions:: @@ -9708,6 +9709,14 @@ when the @option{-mfpu=neon} switch is used: @include arm-neon-intrinsics.texi +@node ARM ACLE Intrinsics +@subsection ARM ACLE Intrinsics + +These built-in intrinsics for the ARMv8-A CRC32 extension are available when +the @option{-march=armv8-a+crc} switch is used: + +@include arm-acle-intrinsics.texi + @node AVR Built-in Functions @subsection AVR Built-in Functions diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 6e888bdbe45..689b3ab87a4 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -12228,9 +12228,12 @@ of the @option{-mcpu=} option. Permissible names are: @samp{armv2}, @samp{armv6}, @samp{armv6j}, @samp{armv6t2}, @samp{armv6z}, @samp{armv6zk}, @samp{armv6-m}, @samp{armv7}, @samp{armv7-a}, @samp{armv7-r}, @samp{armv7-m}, -@samp{armv8-a}, +@samp{armv8-a}, @samp{armv8-a+crc}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}. +@option{-march=armv8-a+crc} enables code generation for the ARMv8-A +architecture together with the optional CRC32 extensions. + @option{-march=native} causes the compiler to auto-detect the architecture of the build computer. At present, this feature is only supported on Linux, and not all architectures are recognized. If the auto-detect is diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8d61415b624..318550a8f67 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,19 @@ +2013-12-19 Kyrylo Tkachov + + * lib/target-supports.exp (add_options_for_arm_crc): New procedure. + (check_effective_target_arm_crc_ok_nocache): Likewise. + (check_effective_target_arm_crc_ok): Likewise. + * gcc.target/arm/acle/: New directory. + * gcc.target/arm/acle/acle.exp: New. + * gcc.target/arm/acle/crc32b.c: New test. + * gcc.target/arm/acle/crc32h.c: Likewise. + * gcc.target/arm/acle/crc32w.c: Likewise. + * gcc.target/arm/acle/crc32d.c: Likewise. + * gcc.target/arm/acle/crc32cb.c: Likewise. + * gcc.target/arm/acle/crc32ch.c: Likewise. + * gcc.target/arm/acle/crc32cw.c: Likewise. + * gcc.target/arm/acle/crc32cd.c: Likewise. + 2013-12-19 Kyrylo Tkachov * c-c++-common/cilk-plus/SE/ef_error.c: Use -fopen-simd. diff --git a/gcc/testsuite/gcc.target/arm/acle/acle.exp b/gcc/testsuite/gcc.target/arm/acle/acle.exp new file mode 100644 index 00000000000..a1822a199d3 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/acle.exp @@ -0,0 +1,35 @@ +# Copyright (C) 2013 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# GCC testsuite that uses the `dg.exp' driver. + +# Exit immediately if this isn't an ARM target. +if ![istarget arm*-*-*] then { + return +} + +# Load support procs. +load_lib gcc-dg.exp + +# Initialize `dg'. +dg-init + +# Main loop. +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \ + "" "" + +# All done. +dg-finish diff --git a/gcc/testsuite/gcc.target/arm/acle/crc32b.c b/gcc/testsuite/gcc.target/arm/acle/crc32b.c new file mode 100644 index 00000000000..d6f35e9fd8f --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/crc32b.c @@ -0,0 +1,20 @@ +/* Test the crc32b ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crc_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crc } */ + +#include "arm_acle.h" + +void test_crc32b (void) +{ + uint32_t out_uint32_t; + uint32_t arg0_uint32_t; + uint8_t arg1_uint8_t; + + out_uint32_t = __crc32b (arg0_uint32_t, arg1_uint8_t); +} + +/* { dg-final { scan-assembler "crc32b\t...?, ...?, ...?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/acle/crc32cb.c b/gcc/testsuite/gcc.target/arm/acle/crc32cb.c new file mode 100644 index 00000000000..44aea21fcf9 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/crc32cb.c @@ -0,0 +1,20 @@ +/* Test the crc32cb ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crc_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crc } */ + +#include "arm_acle.h" + +void test_crc32cb (void) +{ + uint32_t out_uint32_t; + uint32_t arg0_uint32_t; + uint8_t arg1_uint8_t; + + out_uint32_t = __crc32cb (arg0_uint32_t, arg1_uint8_t); +} + +/* { dg-final { scan-assembler "crc32cb\t...?, ...?, ...?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/acle/crc32cd.c b/gcc/testsuite/gcc.target/arm/acle/crc32cd.c new file mode 100644 index 00000000000..cb7ee0df0a9 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/crc32cd.c @@ -0,0 +1,20 @@ +/* Test the crc32cd ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crc_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crc } */ + +#include "arm_acle.h" + +void test_crc32cd (void) +{ + uint32_t out_uint32_t; + uint32_t arg0_uint32_t; + uint64_t arg1_uint64_t; + + out_uint32_t = __crc32cd (arg0_uint32_t, arg1_uint64_t); +} + +/* { dg-final { scan-assembler-times "crc32cw\t...?, ...?, ...?\n" 2 } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/acle/crc32ch.c b/gcc/testsuite/gcc.target/arm/acle/crc32ch.c new file mode 100644 index 00000000000..d8e73389433 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/crc32ch.c @@ -0,0 +1,20 @@ +/* Test the crc32ch ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crc_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crc } */ + +#include "arm_acle.h" + +void test_crc32ch (void) +{ + uint32_t out_uint32_t; + uint32_t arg0_uint32_t; + uint16_t arg1_uint16_t; + + out_uint32_t = __crc32ch (arg0_uint32_t, arg1_uint16_t); +} + +/* { dg-final { scan-assembler "crc32ch\t...?, ...?, ...?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/acle/crc32cw.c b/gcc/testsuite/gcc.target/arm/acle/crc32cw.c new file mode 100644 index 00000000000..84384c5d540 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/crc32cw.c @@ -0,0 +1,20 @@ +/* Test the crc32cw ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crc_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crc } */ + +#include "arm_acle.h" + +void test_crc32cw (void) +{ + uint32_t out_uint32_t; + uint32_t arg0_uint32_t; + uint32_t arg1_uint32_t; + + out_uint32_t = __crc32cw (arg0_uint32_t, arg1_uint32_t); +} + +/* { dg-final { scan-assembler "crc32cw\t...?, ...?, ...?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/acle/crc32d.c b/gcc/testsuite/gcc.target/arm/acle/crc32d.c new file mode 100644 index 00000000000..c90fad9a7a6 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/crc32d.c @@ -0,0 +1,20 @@ +/* Test the crc32d ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crc_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crc } */ + +#include "arm_acle.h" + +void test_crc32d (void) +{ + uint32_t out_uint32_t; + uint32_t arg0_uint32_t; + uint64_t arg1_uint64_t; + + out_uint32_t = __crc32d (arg0_uint32_t, arg1_uint64_t); +} + +/* { dg-final { scan-assembler-times "crc32w\t...?, ...?, ...?\n" 2 } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/acle/crc32h.c b/gcc/testsuite/gcc.target/arm/acle/crc32h.c new file mode 100644 index 00000000000..c21a4ae3e31 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/crc32h.c @@ -0,0 +1,20 @@ +/* Test the crc32h ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crc_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crc } */ + +#include "arm_acle.h" + +void test_crc32h (void) +{ + uint32_t out_uint32_t; + uint32_t arg0_uint32_t; + uint16_t arg1_uint16_t; + + out_uint32_t = __crc32h (arg0_uint32_t, arg1_uint16_t); +} + +/* { dg-final { scan-assembler "crc32h\t...?, ...?, ...?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/acle/crc32w.c b/gcc/testsuite/gcc.target/arm/acle/crc32w.c new file mode 100644 index 00000000000..60cd09e4be5 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/crc32w.c @@ -0,0 +1,20 @@ +/* Test the crc32w ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crc_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crc } */ + +#include "arm_acle.h" + +void test_crc32w (void) +{ + uint32_t out_uint32_t; + uint32_t arg0_uint32_t; + uint32_t arg1_uint32_t; + + out_uint32_t = __crc32w (arg0_uint32_t, arg1_uint32_t); +} + +/* { dg-final { scan-assembler "crc32w\t...?, ...?, ...?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 642c3448bda..0f9ef4c4f03 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -2327,6 +2327,14 @@ proc add_options_for_arm_v8_neon { flags } { return "$flags $et_arm_v8_neon_flags -march=armv8-a" } +proc add_options_for_arm_crc { flags } { + if { ! [check_effective_target_arm_crc_ok] } { + return "$flags" + } + global et_arm_crc_flags + return "$flags $et_arm_crc_flags" +} + # Add the options needed for NEON. We need either -mfloat-abi=softfp # or -mfloat-abi=hard, but if one is already specified by the # multilib, use it. Similarly, if a -mfpu option already enables @@ -2368,6 +2376,21 @@ proc check_effective_target_arm_neon_ok { } { check_effective_target_arm_neon_ok_nocache] } +proc check_effective_target_arm_crc_ok_nocache { } { + global et_arm_crc_flags + set et_arm_crc_flags "-march=armv8-a+crc" + return [check_no_compiler_messages_nocache arm_crc_ok object { + #if !defined (__ARM_FEATURE_CRC32) + #error FOO + #endif + } "$et_arm_crc_flags"] +} + +proc check_effective_target_arm_crc_ok { } { + return [check_cached_effective_target arm_crc_ok \ + check_effective_target_arm_crc_ok_nocache] +} + # Return 1 if this is an ARM target supporting -mfpu=neon-fp16 # -mfloat-abi=softfp or equivalent options. Some multilibs may be # incompatible with these options. Also set et_arm_neon_flags to the -- cgit v1.2.1 From c75e49900f44eab87509cf465539ea48dab31def Mon Sep 17 00:00:00 2001 From: hjl Date: Thu, 19 Dec 2013 18:11:42 +0000 Subject: Improve -fuse-ld=[bfd|gold] check PR driver/59321 * collect2.c (main): Check -fuse-ld=[bfd|gold] when DEFAULT_LINKER is defined. * common.opt (fuse-ld=bfd): Add Driver. (fuse-ld=gold): Likewise. * gcc.c (use_ld): New variable. (driver_handle_option): Set use_ld for OPT_fuse_ld_bfd and OPT_fuse_ld_gold. (main): Check -fuse-ld=[bfd|gold] for -print-prog-name=ld. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206129 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 12 ++++++++++++ gcc/collect2.c | 30 +++++++++++++++++++++++++++++- gcc/common.opt | 4 ++-- gcc/gcc.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5729893a655..0b02dd59a56 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2013-12-19 H.J. Lu + + PR driver/59321 + * collect2.c (main): Check -fuse-ld=[bfd|gold] when + DEFAULT_LINKER is defined. + * common.opt (fuse-ld=bfd): Add Driver. + (fuse-ld=gold): Likewise. + * gcc.c (use_ld): New variable. + (driver_handle_option): Set use_ld for OPT_fuse_ld_bfd and + OPT_fuse_ld_gold. + (main): Check -fuse-ld=[bfd|gold] for -print-prog-name=ld. + 2013-12-19 Kyrylo Tkachov * Makefile.in (TEXI_GCC_FILES): Add arm-acle-intrinsics.texi. diff --git a/gcc/collect2.c b/gcc/collect2.c index 95f817d307a..1d8ea4f9173 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -1121,7 +1121,35 @@ main (int argc, char **argv) /* Maybe we know the right file to use (if not cross). */ ld_file_name = 0; #ifdef DEFAULT_LINKER - if (access (DEFAULT_LINKER, X_OK) == 0) + if (selected_linker == USE_BFD_LD || selected_linker == USE_GOLD_LD) + { + char *linker_name; +# ifdef HOST_EXECUTABLE_SUFFIX + int len = (sizeof (DEFAULT_LINKER) + - sizeof (HOST_EXECUTABLE_SUFFIX)); + linker_name = NULL; + if (len > 0) + { + char *default_linker = xstrdup (DEFAULT_LINKER); + /* Strip HOST_EXECUTABLE_SUFFIX if DEFAULT_LINKER contains + HOST_EXECUTABLE_SUFFIX. */ + if (! strcmp (&default_linker[len], HOST_EXECUTABLE_SUFFIX)) + { + default_linker[len] = '\0'; + linker_name = concat (default_linker, + &ld_suffixes[selected_linker][2], + HOST_EXECUTABLE_SUFFIX, NULL); + } + } + if (linker_name == NULL) +# endif + linker_name = concat (DEFAULT_LINKER, + &ld_suffixes[selected_linker][2], + NULL); + if (access (linker_name, X_OK) == 0) + ld_file_name = linker_name; + } + if (ld_file_name == 0 && access (DEFAULT_LINKER, X_OK) == 0) ld_file_name = DEFAULT_LINKER; if (ld_file_name == 0) #endif diff --git a/gcc/common.opt b/gcc/common.opt index ea323fdc9c3..76e4447217d 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -2250,11 +2250,11 @@ Common Report Var(flag_unwind_tables) Optimization Just generate unwind tables for exception handling fuse-ld=bfd -Common Negative(fuse-ld=gold) +Common Driver Negative(fuse-ld=gold) Use the bfd linker instead of the default linker fuse-ld=gold -Common Negative(fuse-ld=bfd) +Common Driver Negative(fuse-ld=bfd) Use the gold linker instead of the default linker fuse-linker-plugin diff --git a/gcc/gcc.c b/gcc/gcc.c index b895f226ad0..0866e748cc6 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -105,6 +105,9 @@ static int verbose_only_flag; static int print_subprocess_help; +/* Linker suffix passed to -fuse-ld=... */ +static const char *use_ld; + /* Whether we should report subprocess execution times to a file. */ FILE *report_times_to_file = NULL; @@ -3380,6 +3383,14 @@ driver_handle_option (struct gcc_options *opts, do_save = false; break; + case OPT_fuse_ld_bfd: + use_ld = ".bfd"; + break; + + case OPT_fuse_ld_gold: + use_ld = ".gold"; + break; + case OPT_fcompare_debug_second: compare_debug_second = 1; break; @@ -6708,6 +6719,38 @@ main (int argc, char **argv) if (print_prog_name) { + if (use_ld != NULL && ! strcmp (print_prog_name, "ld")) + { + /* Append USE_LD to to the default linker. */ +#ifdef DEFAULT_LINKER + char *ld; +# ifdef HAVE_HOST_EXECUTABLE_SUFFIX + int len = (sizeof (DEFAULT_LINKER) + - sizeof (HOST_EXECUTABLE_SUFFIX)); + ld = NULL; + if (len > 0) + { + char *default_linker = xstrdup (DEFAULT_LINKER); + /* Strip HOST_EXECUTABLE_SUFFIX if DEFAULT_LINKER contains + HOST_EXECUTABLE_SUFFIX. */ + if (! strcmp (&default_linker[len], HOST_EXECUTABLE_SUFFIX)) + { + default_linker[len] = '\0'; + ld = concat (default_linker, use_ld, + HOST_EXECUTABLE_SUFFIX, NULL); + } + } + if (ld == NULL) +# endif + ld = concat (DEFAULT_LINKER, use_ld, NULL); + if (access (ld, X_OK) == 0) + { + printf ("%s\n", ld); + return (0); + } +#endif + print_prog_name = concat (print_prog_name, use_ld, NULL); + } char *newname = find_a_file (&exec_prefixes, print_prog_name, X_OK, 0); printf ("%s\n", (newname ? newname : print_prog_name)); return (0); -- cgit v1.2.1 From e84fdf6e58807a7507efd0bfe56caaf077bae294 Mon Sep 17 00:00:00 2001 From: ktkachov Date: Thu, 19 Dec 2013 18:21:10 +0000 Subject: 2013-12-19 Kyrylo Tkachov * config/arm/arm.c (enum arm_builtins): Add crypto builtins. (arm_init_neon_builtins): Handle crypto builtins. (bdesc_2arg): Likewise. (bdesc_1arg): Likewise. (bdesc_3arg): New table. (arm_expand_ternop_builtin): New function. (arm_expand_unop_builtin): Handle sha1h explicitly. (arm_expand_builtin): Handle ternary builtins. * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FEATURE_CRYPTO. * config/arm/arm.md: Include crypto.md. (is_neon_type): Add crypto types. * config/arm/arm_neon_builtins.def: Add TImode reinterprets. * config/arm/crypto.def: New. * config/arm/crypto.md: Likewise. * config/arm/iterators.md (CRYPTO_UNARY): New int iterator. (CRYPTO_BINARY): Likewise. (CRYPTO_TERNARY): Likewise. (CRYPTO_SELECTING): Likewise. (crypto_pattern): New int attribute. (crypto_size_sfx): Likewise. (crypto_mode): Likewise. (crypto_type): Likewise. * config/arm/neon-gen.ml: Handle poly64_t and poly128_t types. Handle crypto intrinsics. * config/arm/neon.ml: Add support for poly64 and polt128 types and intrinsics. Define crypto intrinsics. * config/arm/neon.md (neon_vreinterpretti): New pattern. (neon_vreinterpretv16qi): Use VQXMOV mode iterator. (neon_vreinterpretv8hi): Likewise. (neon_vreinterpretv4si): Likewise. (neon_vreinterpretv4sf): Likewise. (neon_vreinterpretv2di): Likewise. * config/arm/unspecs.md (UNSPEC_AESD, UNSPEC_AESE, UNSPEC_AESIMC, UNSPEC_AESMC, UNSPEC_SHA1C, UNSPEC_SHA1M, UNSPEC_SHA1P, UNSPEC_SHA1H, UNSPEC_SHA1SU0, UNSPEC_SHA1SU1, UNSPEC_SHA256H, UNSPEC_SHA256H2, UNSPEC_SHA256SU0, UNSPEC_SHA256SU1, VMULLP64): Define. * config/arm/arm_neon.h: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206130 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 41 + gcc/config/arm/arm.c | 255 +++- gcc/config/arm/arm.h | 2 + gcc/config/arm/arm.md | 8 +- gcc/config/arm/arm_neon.h | 2249 +++++++++++++++++++++++++--------- gcc/config/arm/arm_neon_builtins.def | 11 +- gcc/config/arm/crypto.def | 35 + gcc/config/arm/crypto.md | 86 ++ gcc/config/arm/iterators.md | 45 + gcc/config/arm/neon-gen.ml | 99 +- gcc/config/arm/neon.md | 20 +- gcc/config/arm/neon.ml | 389 +++++- gcc/config/arm/unspecs.md | 15 + 13 files changed, 2555 insertions(+), 700 deletions(-) create mode 100644 gcc/config/arm/crypto.def create mode 100644 gcc/config/arm/crypto.md (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0b02dd59a56..3a19c2ec45c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,44 @@ +2013-12-19 Kyrylo Tkachov + + * config/arm/arm.c (enum arm_builtins): Add crypto builtins. + (arm_init_neon_builtins): Handle crypto builtins. + (bdesc_2arg): Likewise. + (bdesc_1arg): Likewise. + (bdesc_3arg): New table. + (arm_expand_ternop_builtin): New function. + (arm_expand_unop_builtin): Handle sha1h explicitly. + (arm_expand_builtin): Handle ternary builtins. + * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): + Define __ARM_FEATURE_CRYPTO. + * config/arm/arm.md: Include crypto.md. + (is_neon_type): Add crypto types. + * config/arm/arm_neon_builtins.def: Add TImode reinterprets. + * config/arm/crypto.def: New. + * config/arm/crypto.md: Likewise. + * config/arm/iterators.md (CRYPTO_UNARY): New int iterator. + (CRYPTO_BINARY): Likewise. + (CRYPTO_TERNARY): Likewise. + (CRYPTO_SELECTING): Likewise. + (crypto_pattern): New int attribute. + (crypto_size_sfx): Likewise. + (crypto_mode): Likewise. + (crypto_type): Likewise. + * config/arm/neon-gen.ml: Handle poly64_t and poly128_t types. + Handle crypto intrinsics. + * config/arm/neon.ml: Add support for poly64 and polt128 types + and intrinsics. Define crypto intrinsics. + * config/arm/neon.md (neon_vreinterpretti): New pattern. + (neon_vreinterpretv16qi): Use VQXMOV mode iterator. + (neon_vreinterpretv8hi): Likewise. + (neon_vreinterpretv4si): Likewise. + (neon_vreinterpretv4sf): Likewise. + (neon_vreinterpretv2di): Likewise. + * config/arm/unspecs.md (UNSPEC_AESD, UNSPEC_AESE, UNSPEC_AESIMC, + UNSPEC_AESMC, UNSPEC_SHA1C, UNSPEC_SHA1M, UNSPEC_SHA1P, UNSPEC_SHA1H, + UNSPEC_SHA1SU0, UNSPEC_SHA1SU1, UNSPEC_SHA256H, UNSPEC_SHA256H2, + UNSPEC_SHA256SU0, UNSPEC_SHA256SU1, VMULLP64): Define. + * config/arm/arm_neon.h: Regenerate. + 2013-12-19 H.J. Lu PR driver/59321 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index be9044ed1c7..8c6eaaa6695 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -23151,6 +23151,23 @@ enum arm_builtins ARM_BUILTIN_CRC32CH, ARM_BUILTIN_CRC32CW, +#undef CRYPTO1 +#undef CRYPTO2 +#undef CRYPTO3 + +#define CRYPTO1(L, U, M1, M2) \ + ARM_BUILTIN_CRYPTO_##U, +#define CRYPTO2(L, U, M1, M2, M3) \ + ARM_BUILTIN_CRYPTO_##U, +#define CRYPTO3(L, U, M1, M2, M3, M4) \ + ARM_BUILTIN_CRYPTO_##U, + +#include "crypto.def" + +#undef CRYPTO1 +#undef CRYPTO2 +#undef CRYPTO3 + #include "arm_neon_builtins.def" ,ARM_BUILTIN_MAX @@ -23172,6 +23189,9 @@ enum arm_builtins static GTY(()) tree arm_builtin_decls[ARM_BUILTIN_MAX]; +#define NUM_DREG_TYPES 5 +#define NUM_QREG_TYPES 6 + static void arm_init_neon_builtins (void) { @@ -23185,6 +23205,7 @@ arm_init_neon_builtins (void) tree neon_polyHI_type_node; tree neon_intSI_type_node; tree neon_intDI_type_node; + tree neon_intUTI_type_node; tree neon_float_type_node; tree intQI_pointer_node; @@ -23247,9 +23268,9 @@ arm_init_neon_builtins (void) tree void_ftype_pv4sf_v4sf_v4sf; tree void_ftype_pv2di_v2di_v2di; - tree reinterp_ftype_dreg[5][5]; - tree reinterp_ftype_qreg[5][5]; - tree dreg_types[5], qreg_types[5]; + tree reinterp_ftype_dreg[NUM_DREG_TYPES][NUM_DREG_TYPES]; + tree reinterp_ftype_qreg[NUM_QREG_TYPES][NUM_QREG_TYPES]; + tree dreg_types[NUM_DREG_TYPES], qreg_types[NUM_QREG_TYPES]; /* Create distinguished type nodes for NEON vector element types, and pointers to values of such types, so we can detect them later. */ @@ -23339,6 +23360,8 @@ arm_init_neon_builtins (void) intUHI_type_node = make_unsigned_type (GET_MODE_PRECISION (HImode)); intUSI_type_node = make_unsigned_type (GET_MODE_PRECISION (SImode)); intUDI_type_node = make_unsigned_type (GET_MODE_PRECISION (DImode)); + neon_intUTI_type_node = make_unsigned_type (GET_MODE_PRECISION (TImode)); + (*lang_hooks.types.register_builtin_type) (intUQI_type_node, "__builtin_neon_uqi"); @@ -23348,6 +23371,10 @@ arm_init_neon_builtins (void) "__builtin_neon_usi"); (*lang_hooks.types.register_builtin_type) (intUDI_type_node, "__builtin_neon_udi"); + (*lang_hooks.types.register_builtin_type) (intUDI_type_node, + "__builtin_neon_poly64"); + (*lang_hooks.types.register_builtin_type) (neon_intUTI_type_node, + "__builtin_neon_poly128"); /* Opaque integer types for structures of vectors. */ intEI_type_node = make_signed_type (GET_MODE_PRECISION (EImode)); @@ -23409,6 +23436,80 @@ arm_init_neon_builtins (void) build_function_type_list (void_type_node, V2DI_pointer_node, V2DI_type_node, V2DI_type_node, NULL); + if (TARGET_CRYPTO && TARGET_HARD_FLOAT) + { + tree V4USI_type_node = + build_vector_type_for_mode (intUSI_type_node, V4SImode); + + tree V16UQI_type_node = + build_vector_type_for_mode (intUQI_type_node, V16QImode); + + tree v16uqi_ftype_v16uqi + = build_function_type_list (V16UQI_type_node, V16UQI_type_node, NULL_TREE); + + tree v16uqi_ftype_v16uqi_v16uqi + = build_function_type_list (V16UQI_type_node, V16UQI_type_node, + V16UQI_type_node, NULL_TREE); + + tree v4usi_ftype_v4usi + = build_function_type_list (V4USI_type_node, V4USI_type_node, NULL_TREE); + + tree v4usi_ftype_v4usi_v4usi + = build_function_type_list (V4USI_type_node, V4USI_type_node, + V4USI_type_node, NULL_TREE); + + tree v4usi_ftype_v4usi_v4usi_v4usi + = build_function_type_list (V4USI_type_node, V4USI_type_node, + V4USI_type_node, V4USI_type_node, NULL_TREE); + + tree uti_ftype_udi_udi + = build_function_type_list (neon_intUTI_type_node, intUDI_type_node, + intUDI_type_node, NULL_TREE); + + #undef CRYPTO1 + #undef CRYPTO2 + #undef CRYPTO3 + #undef C + #undef N + #undef CF + #undef FT1 + #undef FT2 + #undef FT3 + + #define C(U) \ + ARM_BUILTIN_CRYPTO_##U + #define N(L) \ + "__builtin_arm_crypto_"#L + #define FT1(R, A) \ + R##_ftype_##A + #define FT2(R, A1, A2) \ + R##_ftype_##A1##_##A2 + #define FT3(R, A1, A2, A3) \ + R##_ftype_##A1##_##A2##_##A3 + #define CRYPTO1(L, U, R, A) \ + arm_builtin_decls[C (U)] = add_builtin_function (N (L), FT1 (R, A), \ + C (U), BUILT_IN_MD, \ + NULL, NULL_TREE); + #define CRYPTO2(L, U, R, A1, A2) \ + arm_builtin_decls[C (U)] = add_builtin_function (N (L), FT2 (R, A1, A2), \ + C (U), BUILT_IN_MD, \ + NULL, NULL_TREE); + + #define CRYPTO3(L, U, R, A1, A2, A3) \ + arm_builtin_decls[C (U)] = add_builtin_function (N (L), FT3 (R, A1, A2, A3), \ + C (U), BUILT_IN_MD, \ + NULL, NULL_TREE); + #include "crypto.def" + + #undef CRYPTO1 + #undef CRYPTO2 + #undef CRYPTO3 + #undef C + #undef N + #undef FT1 + #undef FT2 + #undef FT3 + } dreg_types[0] = V8QI_type_node; dreg_types[1] = V4HI_type_node; dreg_types[2] = V2SI_type_node; @@ -23420,14 +23521,17 @@ arm_init_neon_builtins (void) qreg_types[2] = V4SI_type_node; qreg_types[3] = V4SF_type_node; qreg_types[4] = V2DI_type_node; + qreg_types[5] = neon_intUTI_type_node; - for (i = 0; i < 5; i++) + for (i = 0; i < NUM_QREG_TYPES; i++) { int j; - for (j = 0; j < 5; j++) + for (j = 0; j < NUM_QREG_TYPES; j++) { - reinterp_ftype_dreg[i][j] - = build_function_type_list (dreg_types[i], dreg_types[j], NULL); + if (i < NUM_DREG_TYPES && j < NUM_DREG_TYPES) + reinterp_ftype_dreg[i][j] + = build_function_type_list (dreg_types[i], dreg_types[j], NULL); + reinterp_ftype_qreg[i][j] = build_function_type_list (qreg_types[i], qreg_types[j], NULL); } @@ -23642,10 +23746,14 @@ arm_init_neon_builtins (void) case NEON_REINTERP: { - /* We iterate over 5 doubleword types, then 5 quadword - types. V4HF is not a type used in reinterpret, so we translate + /* We iterate over NUM_DREG_TYPES doubleword types, + then NUM_QREG_TYPES quadword types. + V4HF is not a type used in reinterpret, so we translate d->mode to the correct index in reinterp_ftype_dreg. */ - int rhs = (d->mode - ((d->mode > T_V4HF) ? 1 : 0)) % 5; + bool qreg_p + = GET_MODE_SIZE (insn_data[d->code].operand[0].mode) > 8; + int rhs = (d->mode - ((!qreg_p && (d->mode > T_V4HF)) ? 1 : 0)) + % NUM_QREG_TYPES; switch (insn_data[d->code].operand[0].mode) { case V8QImode: ftype = reinterp_ftype_dreg[0][rhs]; break; @@ -23658,6 +23766,7 @@ arm_init_neon_builtins (void) case V4SImode: ftype = reinterp_ftype_qreg[2][rhs]; break; case V4SFmode: ftype = reinterp_ftype_qreg[3][rhs]; break; case V2DImode: ftype = reinterp_ftype_qreg[4][rhs]; break; + case TImode: ftype = reinterp_ftype_qreg[5][rhs]; break; default: gcc_unreachable (); } } @@ -23708,6 +23817,9 @@ arm_init_neon_builtins (void) } } +#undef NUM_DREG_TYPES +#undef NUM_QREG_TYPES + #define def_mbuiltin(MASK, NAME, TYPE, CODE) \ do \ { \ @@ -23847,6 +23959,22 @@ static const struct builtin_description bdesc_2arg[] = CRC32_BUILTIN (crc32ch, CRC32CH) CRC32_BUILTIN (crc32cw, CRC32CW) #undef CRC32_BUILTIN + + +#define CRYPTO_BUILTIN(L, U) \ + {0, CODE_FOR_crypto_##L, "__builtin_arm_crypto_"#L, ARM_BUILTIN_CRYPTO_##U, \ + UNKNOWN, 0}, +#undef CRYPTO1 +#undef CRYPTO2 +#undef CRYPTO3 +#define CRYPTO2(L, U, R, A1, A2) CRYPTO_BUILTIN (L, U) +#define CRYPTO1(L, U, R, A) +#define CRYPTO3(L, U, R, A1, A2, A3) +#include "crypto.def" +#undef CRYPTO1 +#undef CRYPTO2 +#undef CRYPTO3 + }; static const struct builtin_description bdesc_1arg[] = @@ -23875,8 +24003,28 @@ static const struct builtin_description bdesc_1arg[] = IWMMXT_BUILTIN (tbcstv8qi, "tbcstb", TBCSTB) IWMMXT_BUILTIN (tbcstv4hi, "tbcsth", TBCSTH) IWMMXT_BUILTIN (tbcstv2si, "tbcstw", TBCSTW) + +#define CRYPTO1(L, U, R, A) CRYPTO_BUILTIN (L, U) +#define CRYPTO2(L, U, R, A1, A2) +#define CRYPTO3(L, U, R, A1, A2, A3) +#include "crypto.def" +#undef CRYPTO1 +#undef CRYPTO2 +#undef CRYPTO3 }; +static const struct builtin_description bdesc_3arg[] = +{ +#define CRYPTO3(L, U, R, A1, A2, A3) CRYPTO_BUILTIN (L, U) +#define CRYPTO1(L, U, R, A) +#define CRYPTO2(L, U, R, A1, A2) +#include "crypto.def" +#undef CRYPTO1 +#undef CRYPTO2 +#undef CRYPTO3 + }; +#undef CRYPTO_BUILTIN + /* Set up all the iWMMXt builtins. This is not called if TARGET_IWMMXT is zero. */ @@ -24408,6 +24556,73 @@ safe_vector_operand (rtx x, enum machine_mode mode) return x; } +/* Function to expand ternary builtins. */ +static rtx +arm_expand_ternop_builtin (enum insn_code icode, + tree exp, rtx target) +{ + rtx pat; + tree arg0 = CALL_EXPR_ARG (exp, 0); + tree arg1 = CALL_EXPR_ARG (exp, 1); + tree arg2 = CALL_EXPR_ARG (exp, 2); + + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); + rtx op2 = expand_normal (arg2); + rtx op3 = NULL_RTX; + + /* The sha1c, sha1p, sha1m crypto builtins require a different vec_select + lane operand depending on endianness. */ + bool builtin_sha1cpm_p = false; + + if (insn_data[icode].n_operands == 5) + { + gcc_assert (icode == CODE_FOR_crypto_sha1c + || icode == CODE_FOR_crypto_sha1p + || icode == CODE_FOR_crypto_sha1m); + builtin_sha1cpm_p = true; + } + enum machine_mode tmode = insn_data[icode].operand[0].mode; + enum machine_mode mode0 = insn_data[icode].operand[1].mode; + enum machine_mode mode1 = insn_data[icode].operand[2].mode; + enum machine_mode mode2 = insn_data[icode].operand[3].mode; + + + if (VECTOR_MODE_P (mode0)) + op0 = safe_vector_operand (op0, mode0); + if (VECTOR_MODE_P (mode1)) + op1 = safe_vector_operand (op1, mode1); + if (VECTOR_MODE_P (mode2)) + op2 = safe_vector_operand (op2, mode2); + + if (! target + || GET_MODE (target) != tmode + || ! (*insn_data[icode].operand[0].predicate) (target, tmode)) + target = gen_reg_rtx (tmode); + + gcc_assert ((GET_MODE (op0) == mode0 || GET_MODE (op0) == VOIDmode) + && (GET_MODE (op1) == mode1 || GET_MODE (op1) == VOIDmode) + && (GET_MODE (op2) == mode2 || GET_MODE (op2) == VOIDmode)); + + if (! (*insn_data[icode].operand[1].predicate) (op0, mode0)) + op0 = copy_to_mode_reg (mode0, op0); + if (! (*insn_data[icode].operand[2].predicate) (op1, mode1)) + op1 = copy_to_mode_reg (mode1, op1); + if (! (*insn_data[icode].operand[3].predicate) (op2, mode2)) + op2 = copy_to_mode_reg (mode2, op2); + if (builtin_sha1cpm_p) + op3 = GEN_INT (TARGET_BIG_END ? 1 : 0); + + if (builtin_sha1cpm_p) + pat = GEN_FCN (icode) (target, op0, op1, op2, op3); + else + pat = GEN_FCN (icode) (target, op0, op1, op2); + if (! pat) + return 0; + emit_insn (pat); + return target; +} + /* Subroutine of arm_expand_builtin to take care of binop insns. */ static rtx @@ -24457,8 +24672,16 @@ arm_expand_unop_builtin (enum insn_code icode, rtx pat; tree arg0 = CALL_EXPR_ARG (exp, 0); rtx op0 = expand_normal (arg0); + rtx op1 = NULL_RTX; enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode0 = insn_data[icode].operand[1].mode; + bool builtin_sha1h_p = false; + + if (insn_data[icode].n_operands == 3) + { + gcc_assert (icode == CODE_FOR_crypto_sha1h); + builtin_sha1h_p = true; + } if (! target || GET_MODE (target) != tmode @@ -24474,8 +24697,13 @@ arm_expand_unop_builtin (enum insn_code icode, if (! (*insn_data[icode].operand[1].predicate) (op0, mode0)) op0 = copy_to_mode_reg (mode0, op0); } + if (builtin_sha1h_p) + op1 = GEN_INT (TARGET_BIG_END ? 1 : 0); - pat = GEN_FCN (icode) (target, op0); + if (builtin_sha1h_p) + pat = GEN_FCN (icode) (target, op0, op1); + else + pat = GEN_FCN (icode) (target, op0); if (! pat) return 0; emit_insn (pat); @@ -25433,6 +25661,10 @@ arm_expand_builtin (tree exp, if (d->code == (const enum arm_builtins) fcode) return arm_expand_unop_builtin (d->icode, exp, target, 0); + for (i = 0, d = bdesc_3arg; i < ARRAY_SIZE (bdesc_3arg); i++, d++) + if (d->code == (const enum arm_builtins) fcode) + return arm_expand_ternop_builtin (d->icode, exp, target); + /* @@@ Should really do something sensible here. */ return NULL_RTX; } @@ -29096,6 +29328,7 @@ static arm_mangle_map_entry arm_mangle_map[] = { { V2SFmode, "__builtin_neon_sf", "18__simd64_float32_t" }, { V8QImode, "__builtin_neon_poly8", "16__simd64_poly8_t" }, { V4HImode, "__builtin_neon_poly16", "17__simd64_poly16_t" }, + /* 128-bit containerized types. */ { V16QImode, "__builtin_neon_qi", "16__simd128_int8_t" }, { V16QImode, "__builtin_neon_uqi", "17__simd128_uint8_t" }, diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index e02b2ad17e8..fb5ce1c19b0 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -49,6 +49,8 @@ extern char arm_arch_name[]; builtin_define ("__ARM_FEATURE_QBIT"); \ if (TARGET_ARM_SAT) \ builtin_define ("__ARM_FEATURE_SAT"); \ + if (TARGET_CRYPTO) \ + builtin_define ("__ARM_FEATURE_CRYPTO"); \ if (unaligned_access) \ builtin_define ("__ARM_FEATURE_UNALIGNED"); \ if (TARGET_CRC32) \ diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 0440ce67451..9e114b49d2f 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -293,7 +293,7 @@ neon_ext, neon_ext_q, neon_rbit, neon_rbit_q,\ neon_rev, neon_rev_q, neon_mul_b, neon_mul_b_q, neon_mul_h,\ neon_mul_h_q, neon_mul_s, neon_mul_s_q, neon_mul_b_long,\ - neon_mul_h_long, neon_mul_s_long, neon_mul_h_scalar,\ + neon_mul_h_long, neon_mul_s_long, neon_mul_d_long, neon_mul_h_scalar,\ neon_mul_h_scalar_q, neon_mul_s_scalar, neon_mul_s_scalar_q,\ neon_mul_h_scalar_long, neon_mul_s_scalar_long, neon_sat_mul_b,\ neon_sat_mul_b_q, neon_sat_mul_h, neon_sat_mul_h_q,\ @@ -355,7 +355,9 @@ neon_fp_mla_s_scalar, neon_fp_mla_s_scalar_q, neon_fp_mla_d,\ neon_fp_mla_d_q, neon_fp_mla_d_scalar_q, neon_fp_sqrt_s,\ neon_fp_sqrt_s_q, neon_fp_sqrt_d, neon_fp_sqrt_d_q,\ - neon_fp_div_s, neon_fp_div_s_q, neon_fp_div_d, neon_fp_div_d_q") + neon_fp_div_s, neon_fp_div_s_q, neon_fp_div_d, neon_fp_div_d_q, crypto_aes,\ + crypto_sha1_xor, crypto_sha1_fast, crypto_sha1_slow, crypto_sha256_fast,\ + crypto_sha256_slow") (const_string "yes") (const_string "no"))) @@ -12918,6 +12920,8 @@ (include "thumb2.md") ;; Neon patterns (include "neon.md") +;; Crypto patterns +(include "crypto.md") ;; Synchronization Primitives (include "sync.md") ;; Fixed-point patterns diff --git a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h index e23d03b9d10..59ef22c530d 100644 --- a/gcc/config/arm/arm_neon.h +++ b/gcc/config/arm/arm_neon.h @@ -42,10 +42,13 @@ typedef __builtin_neon_qi int8x8_t __attribute__ ((__vector_size__ (8))); typedef __builtin_neon_hi int16x4_t __attribute__ ((__vector_size__ (8))); typedef __builtin_neon_si int32x2_t __attribute__ ((__vector_size__ (8))); typedef __builtin_neon_di int64x1_t; -typedef __builtin_neon_sf float32x2_t __attribute__ ((__vector_size__ (8))); typedef __builtin_neon_hf float16x4_t __attribute__ ((__vector_size__ (8))); +typedef __builtin_neon_sf float32x2_t __attribute__ ((__vector_size__ (8))); typedef __builtin_neon_poly8 poly8x8_t __attribute__ ((__vector_size__ (8))); typedef __builtin_neon_poly16 poly16x4_t __attribute__ ((__vector_size__ (8))); +#ifdef __ARM_FEATURE_CRYPTO +typedef __builtin_neon_poly64 poly64x1_t; +#endif typedef __builtin_neon_uqi uint8x8_t __attribute__ ((__vector_size__ (8))); typedef __builtin_neon_uhi uint16x4_t __attribute__ ((__vector_size__ (8))); typedef __builtin_neon_usi uint32x2_t __attribute__ ((__vector_size__ (8))); @@ -57,6 +60,9 @@ typedef __builtin_neon_di int64x2_t __attribute__ ((__vector_size__ (16))); typedef __builtin_neon_sf float32x4_t __attribute__ ((__vector_size__ (16))); typedef __builtin_neon_poly8 poly8x16_t __attribute__ ((__vector_size__ (16))); typedef __builtin_neon_poly16 poly16x8_t __attribute__ ((__vector_size__ (16))); +#ifdef __ARM_FEATURE_CRYPTO +typedef __builtin_neon_poly64 poly64x2_t __attribute__ ((__vector_size__ (16))); +#endif typedef __builtin_neon_uqi uint8x16_t __attribute__ ((__vector_size__ (16))); typedef __builtin_neon_uhi uint16x8_t __attribute__ ((__vector_size__ (16))); typedef __builtin_neon_usi uint32x4_t __attribute__ ((__vector_size__ (16))); @@ -65,6 +71,10 @@ typedef __builtin_neon_udi uint64x2_t __attribute__ ((__vector_size__ (16))); typedef float float32_t; typedef __builtin_neon_poly8 poly8_t; typedef __builtin_neon_poly16 poly16_t; +#ifdef __ARM_FEATURE_CRYPTO +typedef __builtin_neon_poly64 poly64_t; +typedef __builtin_neon_poly128 poly128_t; +#endif typedef struct int8x8x2_t { @@ -176,6 +186,22 @@ typedef struct poly16x8x2_t poly16x8_t val[2]; } poly16x8x2_t; +#ifdef __ARM_FEATURE_CRYPTO +typedef struct poly64x1x2_t +{ + poly64x1_t val[2]; +} poly64x1x2_t; +#endif + + +#ifdef __ARM_FEATURE_CRYPTO +typedef struct poly64x2x2_t +{ + poly64x2_t val[2]; +} poly64x2x2_t; +#endif + + typedef struct int8x8x3_t { int8x8_t val[3]; @@ -286,6 +312,22 @@ typedef struct poly16x8x3_t poly16x8_t val[3]; } poly16x8x3_t; +#ifdef __ARM_FEATURE_CRYPTO +typedef struct poly64x1x3_t +{ + poly64x1_t val[3]; +} poly64x1x3_t; +#endif + + +#ifdef __ARM_FEATURE_CRYPTO +typedef struct poly64x2x3_t +{ + poly64x2_t val[3]; +} poly64x2x3_t; +#endif + + typedef struct int8x8x4_t { int8x8_t val[4]; @@ -396,6 +438,22 @@ typedef struct poly16x8x4_t poly16x8_t val[4]; } poly16x8x4_t; +#ifdef __ARM_FEATURE_CRYPTO +typedef struct poly64x1x4_t +{ + poly64x1_t val[4]; +} poly64x1x4_t; +#endif + + +#ifdef __ARM_FEATURE_CRYPTO +typedef struct poly64x2x4_t +{ + poly64x2_t val[4]; +} poly64x2x4_t; +#endif + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) vadd_s8 (int8x8_t __a, int8x8_t __b) @@ -4361,6 +4419,14 @@ vrsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c) return (uint64x2_t)__builtin_neon_vsra_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c, 4); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vsri_n_p64 (poly64x1_t __a, poly64x1_t __b, const int __c) +{ + return (poly64x1_t)__builtin_neon_vsri_ndi (__a, __b, __c); +} + +#endif __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) vsri_n_s8 (int8x8_t __a, int8x8_t __b, const int __c) { @@ -4421,6 +4487,14 @@ vsri_n_p16 (poly16x4_t __a, poly16x4_t __b, const int __c) return (poly16x4_t)__builtin_neon_vsri_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vsriq_n_p64 (poly64x2_t __a, poly64x2_t __b, const int __c) +{ + return (poly64x2_t)__builtin_neon_vsri_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c); +} + +#endif __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) vsriq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c) { @@ -4481,6 +4555,14 @@ vsriq_n_p16 (poly16x8_t __a, poly16x8_t __b, const int __c) return (poly16x8_t)__builtin_neon_vsri_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vsli_n_p64 (poly64x1_t __a, poly64x1_t __b, const int __c) +{ + return (poly64x1_t)__builtin_neon_vsli_ndi (__a, __b, __c); +} + +#endif __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) vsli_n_s8 (int8x8_t __a, int8x8_t __b, const int __c) { @@ -4541,6 +4623,14 @@ vsli_n_p16 (poly16x4_t __a, poly16x4_t __b, const int __c) return (poly16x4_t)__builtin_neon_vsli_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vsliq_n_p64 (poly64x2_t __a, poly64x2_t __b, const int __c) +{ + return (poly64x2_t)__builtin_neon_vsli_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c); +} + +#endif __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) vsliq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c) { @@ -5309,6 +5399,14 @@ vsetq_lane_u64 (uint64_t __a, uint64x2_t __b, const int __c) return (uint64x2_t)__builtin_neon_vset_lanev2di ((__builtin_neon_di) __a, (int64x2_t) __b, __c); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vcreate_p64 (uint64_t __a) +{ + return (poly64x1_t)__builtin_neon_vcreatedi ((__builtin_neon_di) __a); +} + +#endif __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) vcreate_s8 (uint64_t __a) { @@ -5429,6 +5527,14 @@ vdup_n_p16 (poly16_t __a) return (poly16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vdup_n_p64 (poly64_t __a) +{ + return (poly64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a); +} + +#endif __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) vdup_n_s64 (int64_t __a) { @@ -5441,6 +5547,14 @@ vdup_n_u64 (uint64_t __a) return (uint64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vdupq_n_p64 (poly64_t __a) +{ + return (poly64x2_t)__builtin_neon_vdup_nv2di ((__builtin_neon_di) __a); +} + +#endif __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) vdupq_n_s8 (int8_t __a) { @@ -5693,6 +5807,14 @@ vdup_lane_p16 (poly16x4_t __a, const int __b) return (poly16x4_t)__builtin_neon_vdup_lanev4hi ((int16x4_t) __a, __b); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vdup_lane_p64 (poly64x1_t __a, const int __b) +{ + return (poly64x1_t)__builtin_neon_vdup_lanedi (__a, __b); +} + +#endif __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) vdup_lane_s64 (int64x1_t __a, const int __b) { @@ -5759,6 +5881,14 @@ vdupq_lane_p16 (poly16x4_t __a, const int __b) return (poly16x8_t)__builtin_neon_vdup_lanev8hi ((int16x4_t) __a, __b); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vdupq_lane_p64 (poly64x1_t __a, const int __b) +{ + return (poly64x2_t)__builtin_neon_vdup_lanev2di (__a, __b); +} + +#endif __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) vdupq_lane_s64 (int64x1_t __a, const int __b) { @@ -5771,6 +5901,14 @@ vdupq_lane_u64 (uint64x1_t __a, const int __b) return (uint64x2_t)__builtin_neon_vdup_lanev2di ((int64x1_t) __a, __b); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vcombine_p64 (poly64x1_t __a, poly64x1_t __b) +{ + return (poly64x2_t)__builtin_neon_vcombinedi (__a, __b); +} + +#endif __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) vcombine_s8 (int8x8_t __a, int8x8_t __b) { @@ -5837,6 +5975,14 @@ vcombine_p16 (poly16x4_t __a, poly16x4_t __b) return (poly16x8_t)__builtin_neon_vcombinev4hi ((int16x4_t) __a, (int16x4_t) __b); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vget_high_p64 (poly64x2_t __a) +{ + return (poly64x1_t)__builtin_neon_vget_highv2di ((int64x2_t) __a); +} + +#endif __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) vget_high_s8 (int8x16_t __a) { @@ -5957,6 +6103,14 @@ vget_low_p16 (poly16x8_t __a) return (poly16x4_t)__builtin_neon_vget_lowv8hi ((int16x8_t) __a); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vget_low_p64 (poly64x2_t __a) +{ + return (poly64x1_t)__builtin_neon_vget_lowv2di ((int64x2_t) __a); +} + +#endif __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) vget_low_s64 (int64x2_t __a) { @@ -7041,6 +7195,14 @@ vqdmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c) return (int64x2_t)__builtin_neon_vqdmlsl_nv2si (__a, __b, (__builtin_neon_si) __c, 1); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vext_p64 (poly64x1_t __a, poly64x1_t __b, const int __c) +{ + return (poly64x1_t)__builtin_neon_vextdi (__a, __b, __c); +} + +#endif __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) vext_s8 (int8x8_t __a, int8x8_t __b, const int __c) { @@ -7107,6 +7269,14 @@ vext_p16 (poly16x4_t __a, poly16x4_t __b, const int __c) return (poly16x4_t)__builtin_neon_vextv4hi ((int16x4_t) __a, (int16x4_t) __b, __c); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vextq_p64 (poly64x2_t __a, poly64x2_t __b, const int __c) +{ + return (poly64x2_t)__builtin_neon_vextv2di ((int64x2_t) __a, (int64x2_t) __b, __c); +} + +#endif __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) vextq_s8 (int8x16_t __a, int8x16_t __b, const int __c) { @@ -7389,6 +7559,14 @@ vrev16q_p8 (poly8x16_t __a) return (poly8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 }); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vbsl_p64 (uint64x1_t __a, poly64x1_t __b, poly64x1_t __c) +{ + return (poly64x1_t)__builtin_neon_vbsldi ((int64x1_t) __a, __b, __c); +} + +#endif __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) vbsl_s8 (uint8x8_t __a, int8x8_t __b, int8x8_t __c) { @@ -7455,6 +7633,14 @@ vbsl_p16 (uint16x4_t __a, poly16x4_t __b, poly16x4_t __c) return (poly16x4_t)__builtin_neon_vbslv4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vbslq_p64 (uint64x2_t __a, poly64x2_t __b, poly64x2_t __c) +{ + return (poly64x2_t)__builtin_neon_vbslv2di ((int64x2_t) __a, (int64x2_t) __b, (int64x2_t) __c); +} + +#endif __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) vbslq_s8 (uint8x16_t __a, int8x16_t __b, int8x16_t __c) { @@ -8007,6 +8193,14 @@ vuzpq_p16 (poly16x8_t __a, poly16x8_t __b) return __rv; } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vld1_p64 (const poly64_t * __a) +{ + return (poly64x1_t)__builtin_neon_vld1di ((const __builtin_neon_di *) __a); +} + +#endif __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) vld1_s8 (const int8_t * __a) { @@ -8073,6 +8267,14 @@ vld1_p16 (const poly16_t * __a) return (poly16x4_t)__builtin_neon_vld1v4hi ((const __builtin_neon_hi *) __a); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vld1q_p64 (const poly64_t * __a) +{ + return (poly64x2_t)__builtin_neon_vld1v2di ((const __builtin_neon_di *) __a); +} + +#endif __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) vld1q_s8 (const int8_t * __a) { @@ -8193,6 +8395,14 @@ vld1_lane_p16 (const poly16_t * __a, poly16x4_t __b, const int __c) return (poly16x4_t)__builtin_neon_vld1_lanev4hi ((const __builtin_neon_hi *) __a, (int16x4_t) __b, __c); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vld1_lane_p64 (const poly64_t * __a, poly64x1_t __b, const int __c) +{ + return (poly64x1_t)__builtin_neon_vld1_lanedi ((const __builtin_neon_di *) __a, __b, __c); +} + +#endif __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) vld1_lane_s64 (const int64_t * __a, int64x1_t __b, const int __c) { @@ -8259,6 +8469,14 @@ vld1q_lane_p16 (const poly16_t * __a, poly16x8_t __b, const int __c) return (poly16x8_t)__builtin_neon_vld1_lanev8hi ((const __builtin_neon_hi *) __a, (int16x8_t) __b, __c); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vld1q_lane_p64 (const poly64_t * __a, poly64x2_t __b, const int __c) +{ + return (poly64x2_t)__builtin_neon_vld1_lanev2di ((const __builtin_neon_di *) __a, (int64x2_t) __b, __c); +} + +#endif __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) vld1q_lane_s64 (const int64_t * __a, int64x2_t __b, const int __c) { @@ -8325,6 +8543,14 @@ vld1_dup_p16 (const poly16_t * __a) return (poly16x4_t)__builtin_neon_vld1_dupv4hi ((const __builtin_neon_hi *) __a); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vld1_dup_p64 (const poly64_t * __a) +{ + return (poly64x1_t)__builtin_neon_vld1_dupdi ((const __builtin_neon_di *) __a); +} + +#endif __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) vld1_dup_s64 (const int64_t * __a) { @@ -8391,6 +8617,14 @@ vld1q_dup_p16 (const poly16_t * __a) return (poly16x8_t)__builtin_neon_vld1_dupv8hi ((const __builtin_neon_hi *) __a); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vld1q_dup_p64 (const poly64_t * __a) +{ + return (poly64x2_t)__builtin_neon_vld1_dupv2di ((const __builtin_neon_di *) __a); +} + +#endif __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) vld1q_dup_s64 (const int64_t * __a) { @@ -8403,6 +8637,14 @@ vld1q_dup_u64 (const uint64_t * __a) return (uint64x2_t)__builtin_neon_vld1_dupv2di ((const __builtin_neon_di *) __a); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline void __attribute__ ((__always_inline__)) +vst1_p64 (poly64_t * __a, poly64x1_t __b) +{ + __builtin_neon_vst1di ((__builtin_neon_di *) __a, __b); +} + +#endif __extension__ static __inline void __attribute__ ((__always_inline__)) vst1_s8 (int8_t * __a, int8x8_t __b) { @@ -8469,6 +8711,14 @@ vst1_p16 (poly16_t * __a, poly16x4_t __b) __builtin_neon_vst1v4hi ((__builtin_neon_hi *) __a, (int16x4_t) __b); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline void __attribute__ ((__always_inline__)) +vst1q_p64 (poly64_t * __a, poly64x2_t __b) +{ + __builtin_neon_vst1v2di ((__builtin_neon_di *) __a, (int64x2_t) __b); +} + +#endif __extension__ static __inline void __attribute__ ((__always_inline__)) vst1q_s8 (int8_t * __a, int8x16_t __b) { @@ -8589,6 +8839,14 @@ vst1_lane_p16 (poly16_t * __a, poly16x4_t __b, const int __c) __builtin_neon_vst1_lanev4hi ((__builtin_neon_hi *) __a, (int16x4_t) __b, __c); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline void __attribute__ ((__always_inline__)) +vst1_lane_p64 (poly64_t * __a, poly64x1_t __b, const int __c) +{ + __builtin_neon_vst1_lanedi ((__builtin_neon_di *) __a, __b, __c); +} + +#endif __extension__ static __inline void __attribute__ ((__always_inline__)) vst1_lane_s64 (int64_t * __a, int64x1_t __b, const int __c) { @@ -8655,6 +8913,14 @@ vst1q_lane_p16 (poly16_t * __a, poly16x8_t __b, const int __c) __builtin_neon_vst1_lanev8hi ((__builtin_neon_hi *) __a, (int16x8_t) __b, __c); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline void __attribute__ ((__always_inline__)) +vst1q_lane_p64 (poly64_t * __a, poly64x2_t __b, const int __c) +{ + __builtin_neon_vst1_lanev2di ((__builtin_neon_di *) __a, (int64x2_t) __b, __c); +} + +#endif __extension__ static __inline void __attribute__ ((__always_inline__)) vst1q_lane_s64 (int64_t * __a, int64x2_t __b, const int __c) { @@ -8739,6 +9005,16 @@ vld2_p16 (const poly16_t * __a) return __rv.__i; } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1x2_t __attribute__ ((__always_inline__)) +vld2_p64 (const poly64_t * __a) +{ + union { poly64x1x2_t __i; __builtin_neon_ti __o; } __rv; + __rv.__o = __builtin_neon_vld2di ((const __builtin_neon_di *) __a); + return __rv.__i; +} + +#endif __extension__ static __inline int64x1x2_t __attribute__ ((__always_inline__)) vld2_s64 (const int64_t * __a) { @@ -9034,6 +9310,16 @@ vld2_dup_p16 (const poly16_t * __a) return __rv.__i; } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1x2_t __attribute__ ((__always_inline__)) +vld2_dup_p64 (const poly64_t * __a) +{ + union { poly64x1x2_t __i; __builtin_neon_ti __o; } __rv; + __rv.__o = __builtin_neon_vld2_dupdi ((const __builtin_neon_di *) __a); + return __rv.__i; +} + +#endif __extension__ static __inline int64x1x2_t __attribute__ ((__always_inline__)) vld2_dup_s64 (const int64_t * __a) { @@ -9113,6 +9399,15 @@ vst2_p16 (poly16_t * __a, poly16x4x2_t __b) __builtin_neon_vst2v4hi ((__builtin_neon_hi *) __a, __bu.__o); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline void __attribute__ ((__always_inline__)) +vst2_p64 (poly64_t * __a, poly64x1x2_t __b) +{ + union { poly64x1x2_t __i; __builtin_neon_ti __o; } __bu = { __b }; + __builtin_neon_vst2di ((__builtin_neon_di *) __a, __bu.__o); +} + +#endif __extension__ static __inline void __attribute__ ((__always_inline__)) vst2_s64 (int64_t * __a, int64x1x2_t __b) { @@ -9367,6 +9662,16 @@ vld3_p16 (const poly16_t * __a) return __rv.__i; } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1x3_t __attribute__ ((__always_inline__)) +vld3_p64 (const poly64_t * __a) +{ + union { poly64x1x3_t __i; __builtin_neon_ei __o; } __rv; + __rv.__o = __builtin_neon_vld3di ((const __builtin_neon_di *) __a); + return __rv.__i; +} + +#endif __extension__ static __inline int64x1x3_t __attribute__ ((__always_inline__)) vld3_s64 (const int64_t * __a) { @@ -9662,6 +9967,16 @@ vld3_dup_p16 (const poly16_t * __a) return __rv.__i; } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1x3_t __attribute__ ((__always_inline__)) +vld3_dup_p64 (const poly64_t * __a) +{ + union { poly64x1x3_t __i; __builtin_neon_ei __o; } __rv; + __rv.__o = __builtin_neon_vld3_dupdi ((const __builtin_neon_di *) __a); + return __rv.__i; +} + +#endif __extension__ static __inline int64x1x3_t __attribute__ ((__always_inline__)) vld3_dup_s64 (const int64_t * __a) { @@ -9741,6 +10056,15 @@ vst3_p16 (poly16_t * __a, poly16x4x3_t __b) __builtin_neon_vst3v4hi ((__builtin_neon_hi *) __a, __bu.__o); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline void __attribute__ ((__always_inline__)) +vst3_p64 (poly64_t * __a, poly64x1x3_t __b) +{ + union { poly64x1x3_t __i; __builtin_neon_ei __o; } __bu = { __b }; + __builtin_neon_vst3di ((__builtin_neon_di *) __a, __bu.__o); +} + +#endif __extension__ static __inline void __attribute__ ((__always_inline__)) vst3_s64 (int64_t * __a, int64x1x3_t __b) { @@ -9995,6 +10319,16 @@ vld4_p16 (const poly16_t * __a) return __rv.__i; } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1x4_t __attribute__ ((__always_inline__)) +vld4_p64 (const poly64_t * __a) +{ + union { poly64x1x4_t __i; __builtin_neon_oi __o; } __rv; + __rv.__o = __builtin_neon_vld4di ((const __builtin_neon_di *) __a); + return __rv.__i; +} + +#endif __extension__ static __inline int64x1x4_t __attribute__ ((__always_inline__)) vld4_s64 (const int64_t * __a) { @@ -10290,6 +10624,16 @@ vld4_dup_p16 (const poly16_t * __a) return __rv.__i; } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1x4_t __attribute__ ((__always_inline__)) +vld4_dup_p64 (const poly64_t * __a) +{ + union { poly64x1x4_t __i; __builtin_neon_oi __o; } __rv; + __rv.__o = __builtin_neon_vld4_dupdi ((const __builtin_neon_di *) __a); + return __rv.__i; +} + +#endif __extension__ static __inline int64x1x4_t __attribute__ ((__always_inline__)) vld4_dup_s64 (const int64_t * __a) { @@ -10369,6 +10713,15 @@ vst4_p16 (poly16_t * __a, poly16x4x4_t __b) __builtin_neon_vst4v4hi ((__builtin_neon_hi *) __a, __bu.__o); } +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline void __attribute__ ((__always_inline__)) +vst4_p64 (poly64_t * __a, poly64x1x4_t __b) +{ + union { poly64x1x4_t __i; __builtin_neon_oi __o; } __bu = { __b }; + __builtin_neon_vst4di ((__builtin_neon_di *) __a, __bu.__o); +} + +#endif __extension__ static __inline void __attribute__ ((__always_inline__)) vst4_s64 (int64_t * __a, int64x1x4_t __b) { @@ -11033,23 +11386,25 @@ vornq_u64 (uint64x2_t __a, uint64x2_t __b) __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) -vreinterpret_p8_s8 (int8x8_t __a) +vreinterpret_p8_p16 (poly16x4_t __a) { - return (poly8x8_t)__builtin_neon_vreinterpretv8qiv8qi (__a); + return (poly8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a); } __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) -vreinterpret_p8_s16 (int16x4_t __a) +vreinterpret_p8_f32 (float32x2_t __a) { - return (poly8x8_t)__builtin_neon_vreinterpretv8qiv4hi (__a); + return (poly8x8_t)__builtin_neon_vreinterpretv8qiv2sf (__a); } +#ifdef __ARM_FEATURE_CRYPTO __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) -vreinterpret_p8_s32 (int32x2_t __a) +vreinterpret_p8_p64 (poly64x1_t __a) { - return (poly8x8_t)__builtin_neon_vreinterpretv8qiv2si (__a); + return (poly8x8_t)__builtin_neon_vreinterpretv8qidi (__a); } +#endif __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) vreinterpret_p8_s64 (int64x1_t __a) { @@ -11057,99 +11412,77 @@ vreinterpret_p8_s64 (int64x1_t __a) } __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) -vreinterpret_p8_f32 (float32x2_t __a) +vreinterpret_p8_u64 (uint64x1_t __a) { - return (poly8x8_t)__builtin_neon_vreinterpretv8qiv2sf (__a); + return (poly8x8_t)__builtin_neon_vreinterpretv8qidi ((int64x1_t) __a); } __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) -vreinterpret_p8_u8 (uint8x8_t __a) +vreinterpret_p8_s8 (int8x8_t __a) { - return (poly8x8_t)__builtin_neon_vreinterpretv8qiv8qi ((int8x8_t) __a); + return (poly8x8_t)__builtin_neon_vreinterpretv8qiv8qi (__a); } __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) -vreinterpret_p8_u16 (uint16x4_t __a) +vreinterpret_p8_s16 (int16x4_t __a) { - return (poly8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a); + return (poly8x8_t)__builtin_neon_vreinterpretv8qiv4hi (__a); } __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) -vreinterpret_p8_u32 (uint32x2_t __a) +vreinterpret_p8_s32 (int32x2_t __a) { - return (poly8x8_t)__builtin_neon_vreinterpretv8qiv2si ((int32x2_t) __a); + return (poly8x8_t)__builtin_neon_vreinterpretv8qiv2si (__a); } __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) -vreinterpret_p8_u64 (uint64x1_t __a) +vreinterpret_p8_u8 (uint8x8_t __a) { - return (poly8x8_t)__builtin_neon_vreinterpretv8qidi ((int64x1_t) __a); + return (poly8x8_t)__builtin_neon_vreinterpretv8qiv8qi ((int8x8_t) __a); } __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) -vreinterpret_p8_p16 (poly16x4_t __a) +vreinterpret_p8_u16 (uint16x4_t __a) { return (poly8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a); } -__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_p8_s8 (int8x16_t __a) +__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) +vreinterpret_p8_u32 (uint32x2_t __a) { - return (poly8x16_t)__builtin_neon_vreinterpretv16qiv16qi (__a); + return (poly8x8_t)__builtin_neon_vreinterpretv8qiv2si ((int32x2_t) __a); } -__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_p8_s16 (int16x8_t __a) +__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +vreinterpret_p16_p8 (poly8x8_t __a) { - return (poly8x16_t)__builtin_neon_vreinterpretv16qiv8hi (__a); + return (poly16x4_t)__builtin_neon_vreinterpretv4hiv8qi ((int8x8_t) __a); } -__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_p8_s32 (int32x4_t __a) +__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +vreinterpret_p16_f32 (float32x2_t __a) { - return (poly8x16_t)__builtin_neon_vreinterpretv16qiv4si (__a); + return (poly16x4_t)__builtin_neon_vreinterpretv4hiv2sf (__a); } -__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_p8_s64 (int64x2_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +vreinterpret_p16_p64 (poly64x1_t __a) { - return (poly8x16_t)__builtin_neon_vreinterpretv16qiv2di (__a); + return (poly16x4_t)__builtin_neon_vreinterpretv4hidi (__a); } -__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_p8_f32 (float32x4_t __a) -{ - return (poly8x16_t)__builtin_neon_vreinterpretv16qiv4sf (__a); -} - -__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_p8_u8 (uint8x16_t __a) -{ - return (poly8x16_t)__builtin_neon_vreinterpretv16qiv16qi ((int8x16_t) __a); -} - -__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_p8_u16 (uint16x8_t __a) -{ - return (poly8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); -} - -__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_p8_u32 (uint32x4_t __a) -{ - return (poly8x16_t)__builtin_neon_vreinterpretv16qiv4si ((int32x4_t) __a); -} - -__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_p8_u64 (uint64x2_t __a) +#endif +__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +vreinterpret_p16_s64 (int64x1_t __a) { - return (poly8x16_t)__builtin_neon_vreinterpretv16qiv2di ((int64x2_t) __a); + return (poly16x4_t)__builtin_neon_vreinterpretv4hidi (__a); } -__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_p8_p16 (poly16x8_t __a) +__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) +vreinterpret_p16_u64 (uint64x1_t __a) { - return (poly8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); + return (poly16x4_t)__builtin_neon_vreinterpretv4hidi ((int64x1_t) __a); } __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) @@ -11170,18 +11503,6 @@ vreinterpret_p16_s32 (int32x2_t __a) return (poly16x4_t)__builtin_neon_vreinterpretv4hiv2si (__a); } -__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) -vreinterpret_p16_s64 (int64x1_t __a) -{ - return (poly16x4_t)__builtin_neon_vreinterpretv4hidi (__a); -} - -__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) -vreinterpret_p16_f32 (float32x2_t __a) -{ - return (poly16x4_t)__builtin_neon_vreinterpretv4hiv2sf (__a); -} - __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) vreinterpret_p16_u8 (uint8x8_t __a) { @@ -11200,76 +11521,36 @@ vreinterpret_p16_u32 (uint32x2_t __a) return (poly16x4_t)__builtin_neon_vreinterpretv4hiv2si ((int32x2_t) __a); } -__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) -vreinterpret_p16_u64 (uint64x1_t __a) -{ - return (poly16x4_t)__builtin_neon_vreinterpretv4hidi ((int64x1_t) __a); -} - -__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__)) -vreinterpret_p16_p8 (poly8x8_t __a) -{ - return (poly16x4_t)__builtin_neon_vreinterpretv4hiv8qi ((int8x8_t) __a); -} - -__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_p16_s8 (int8x16_t __a) -{ - return (poly16x8_t)__builtin_neon_vreinterpretv8hiv16qi (__a); -} - -__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_p16_s16 (int16x8_t __a) -{ - return (poly16x8_t)__builtin_neon_vreinterpretv8hiv8hi (__a); -} - -__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_p16_s32 (int32x4_t __a) -{ - return (poly16x8_t)__builtin_neon_vreinterpretv8hiv4si (__a); -} - -__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_p16_s64 (int64x2_t __a) -{ - return (poly16x8_t)__builtin_neon_vreinterpretv8hiv2di (__a); -} - -__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_p16_f32 (float32x4_t __a) -{ - return (poly16x8_t)__builtin_neon_vreinterpretv8hiv4sf (__a); -} - -__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_p16_u8 (uint8x16_t __a) +__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +vreinterpret_f32_p8 (poly8x8_t __a) { - return (poly16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); + return (float32x2_t)__builtin_neon_vreinterpretv2sfv8qi ((int8x8_t) __a); } -__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_p16_u16 (uint16x8_t __a) +__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +vreinterpret_f32_p16 (poly16x4_t __a) { - return (poly16x8_t)__builtin_neon_vreinterpretv8hiv8hi ((int16x8_t) __a); + return (float32x2_t)__builtin_neon_vreinterpretv2sfv4hi ((int16x4_t) __a); } -__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_p16_u32 (uint32x4_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +vreinterpret_f32_p64 (poly64x1_t __a) { - return (poly16x8_t)__builtin_neon_vreinterpretv8hiv4si ((int32x4_t) __a); + return (float32x2_t)__builtin_neon_vreinterpretv2sfdi (__a); } -__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_p16_u64 (uint64x2_t __a) +#endif +__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +vreinterpret_f32_s64 (int64x1_t __a) { - return (poly16x8_t)__builtin_neon_vreinterpretv8hiv2di ((int64x2_t) __a); + return (float32x2_t)__builtin_neon_vreinterpretv2sfdi (__a); } -__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_p16_p8 (poly8x16_t __a) +__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +vreinterpret_f32_u64 (uint64x1_t __a) { - return (poly16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); + return (float32x2_t)__builtin_neon_vreinterpretv2sfdi ((int64x1_t) __a); } __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) @@ -11290,12 +11571,6 @@ vreinterpret_f32_s32 (int32x2_t __a) return (float32x2_t)__builtin_neon_vreinterpretv2sfv2si (__a); } -__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) -vreinterpret_f32_s64 (int64x1_t __a) -{ - return (float32x2_t)__builtin_neon_vreinterpretv2sfdi (__a); -} - __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) vreinterpret_f32_u8 (uint8x8_t __a) { @@ -11314,82 +11589,124 @@ vreinterpret_f32_u32 (uint32x2_t __a) return (float32x2_t)__builtin_neon_vreinterpretv2sfv2si ((int32x2_t) __a); } -__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) -vreinterpret_f32_u64 (uint64x1_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vreinterpret_p64_p8 (poly8x8_t __a) { - return (float32x2_t)__builtin_neon_vreinterpretv2sfdi ((int64x1_t) __a); + return (poly64x1_t)__builtin_neon_vreinterpretdiv8qi ((int8x8_t) __a); } -__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) -vreinterpret_f32_p8 (poly8x8_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vreinterpret_p64_p16 (poly16x4_t __a) { - return (float32x2_t)__builtin_neon_vreinterpretv2sfv8qi ((int8x8_t) __a); + return (poly64x1_t)__builtin_neon_vreinterpretdiv4hi ((int16x4_t) __a); } -__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) -vreinterpret_f32_p16 (poly16x4_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vreinterpret_p64_f32 (float32x2_t __a) { - return (float32x2_t)__builtin_neon_vreinterpretv2sfv4hi ((int16x4_t) __a); + return (poly64x1_t)__builtin_neon_vreinterpretdiv2sf (__a); } -__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_f32_s8 (int8x16_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vreinterpret_p64_s64 (int64x1_t __a) { - return (float32x4_t)__builtin_neon_vreinterpretv4sfv16qi (__a); + return (poly64x1_t)__builtin_neon_vreinterpretdidi (__a); } -__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_f32_s16 (int16x8_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vreinterpret_p64_u64 (uint64x1_t __a) { - return (float32x4_t)__builtin_neon_vreinterpretv4sfv8hi (__a); + return (poly64x1_t)__builtin_neon_vreinterpretdidi ((int64x1_t) __a); } -__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_f32_s32 (int32x4_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vreinterpret_p64_s8 (int8x8_t __a) { - return (float32x4_t)__builtin_neon_vreinterpretv4sfv4si (__a); + return (poly64x1_t)__builtin_neon_vreinterpretdiv8qi (__a); } -__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_f32_s64 (int64x2_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vreinterpret_p64_s16 (int16x4_t __a) { - return (float32x4_t)__builtin_neon_vreinterpretv4sfv2di (__a); + return (poly64x1_t)__builtin_neon_vreinterpretdiv4hi (__a); } -__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_f32_u8 (uint8x16_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vreinterpret_p64_s32 (int32x2_t __a) { - return (float32x4_t)__builtin_neon_vreinterpretv4sfv16qi ((int8x16_t) __a); + return (poly64x1_t)__builtin_neon_vreinterpretdiv2si (__a); } -__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_f32_u16 (uint16x8_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vreinterpret_p64_u8 (uint8x8_t __a) { - return (float32x4_t)__builtin_neon_vreinterpretv4sfv8hi ((int16x8_t) __a); + return (poly64x1_t)__builtin_neon_vreinterpretdiv8qi ((int8x8_t) __a); } -__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_f32_u32 (uint32x4_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vreinterpret_p64_u16 (uint16x4_t __a) { - return (float32x4_t)__builtin_neon_vreinterpretv4sfv4si ((int32x4_t) __a); + return (poly64x1_t)__builtin_neon_vreinterpretdiv4hi ((int16x4_t) __a); } -__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_f32_u64 (uint64x2_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__)) +vreinterpret_p64_u32 (uint32x2_t __a) { - return (float32x4_t)__builtin_neon_vreinterpretv4sfv2di ((int64x2_t) __a); + return (poly64x1_t)__builtin_neon_vreinterpretdiv2si ((int32x2_t) __a); } -__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_f32_p8 (poly8x16_t __a) +#endif +__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +vreinterpret_s64_p8 (poly8x8_t __a) { - return (float32x4_t)__builtin_neon_vreinterpretv4sfv16qi ((int8x16_t) __a); + return (int64x1_t)__builtin_neon_vreinterpretdiv8qi ((int8x8_t) __a); } -__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_f32_p16 (poly16x8_t __a) +__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +vreinterpret_s64_p16 (poly16x4_t __a) { - return (float32x4_t)__builtin_neon_vreinterpretv4sfv8hi ((int16x8_t) __a); + return (int64x1_t)__builtin_neon_vreinterpretdiv4hi ((int16x4_t) __a); +} + +__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +vreinterpret_s64_f32 (float32x2_t __a) +{ + return (int64x1_t)__builtin_neon_vreinterpretdiv2sf (__a); +} + +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +vreinterpret_s64_p64 (poly64x1_t __a) +{ + return (int64x1_t)__builtin_neon_vreinterpretdidi (__a); +} + +#endif +__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +vreinterpret_s64_u64 (uint64x1_t __a) +{ + return (int64x1_t)__builtin_neon_vreinterpretdidi ((int64x1_t) __a); } __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) @@ -11410,12 +11727,6 @@ vreinterpret_s64_s32 (int32x2_t __a) return (int64x1_t)__builtin_neon_vreinterpretdiv2si (__a); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -vreinterpret_s64_f32 (float32x2_t __a) -{ - return (int64x1_t)__builtin_neon_vreinterpretdiv2sf (__a); -} - __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) vreinterpret_s64_u8 (uint8x8_t __a) { @@ -11434,550 +11745,1204 @@ vreinterpret_s64_u32 (uint32x2_t __a) return (int64x1_t)__builtin_neon_vreinterpretdiv2si ((int32x2_t) __a); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -vreinterpret_s64_u64 (uint64x1_t __a) +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vreinterpret_u64_p8 (poly8x8_t __a) { - return (int64x1_t)__builtin_neon_vreinterpretdidi ((int64x1_t) __a); + return (uint64x1_t)__builtin_neon_vreinterpretdiv8qi ((int8x8_t) __a); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -vreinterpret_s64_p8 (poly8x8_t __a) +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vreinterpret_u64_p16 (poly16x4_t __a) { - return (int64x1_t)__builtin_neon_vreinterpretdiv8qi ((int8x8_t) __a); + return (uint64x1_t)__builtin_neon_vreinterpretdiv4hi ((int16x4_t) __a); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -vreinterpret_s64_p16 (poly16x4_t __a) +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vreinterpret_u64_f32 (float32x2_t __a) { - return (int64x1_t)__builtin_neon_vreinterpretdiv4hi ((int16x4_t) __a); + return (uint64x1_t)__builtin_neon_vreinterpretdiv2sf (__a); } -__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_s64_s8 (int8x16_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vreinterpret_u64_p64 (poly64x1_t __a) { - return (int64x2_t)__builtin_neon_vreinterpretv2div16qi (__a); + return (uint64x1_t)__builtin_neon_vreinterpretdidi (__a); } -__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_s64_s16 (int16x8_t __a) +#endif +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vreinterpret_u64_s64 (int64x1_t __a) { - return (int64x2_t)__builtin_neon_vreinterpretv2div8hi (__a); + return (uint64x1_t)__builtin_neon_vreinterpretdidi (__a); } -__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_s64_s32 (int32x4_t __a) +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vreinterpret_u64_s8 (int8x8_t __a) { - return (int64x2_t)__builtin_neon_vreinterpretv2div4si (__a); + return (uint64x1_t)__builtin_neon_vreinterpretdiv8qi (__a); } -__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_s64_f32 (float32x4_t __a) +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vreinterpret_u64_s16 (int16x4_t __a) { - return (int64x2_t)__builtin_neon_vreinterpretv2div4sf (__a); + return (uint64x1_t)__builtin_neon_vreinterpretdiv4hi (__a); } -__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_s64_u8 (uint8x16_t __a) +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vreinterpret_u64_s32 (int32x2_t __a) { - return (int64x2_t)__builtin_neon_vreinterpretv2div16qi ((int8x16_t) __a); + return (uint64x1_t)__builtin_neon_vreinterpretdiv2si (__a); } -__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_s64_u16 (uint16x8_t __a) +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vreinterpret_u64_u8 (uint8x8_t __a) { - return (int64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a); + return (uint64x1_t)__builtin_neon_vreinterpretdiv8qi ((int8x8_t) __a); } -__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_s64_u32 (uint32x4_t __a) +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vreinterpret_u64_u16 (uint16x4_t __a) +{ + return (uint64x1_t)__builtin_neon_vreinterpretdiv4hi ((int16x4_t) __a); +} + +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vreinterpret_u64_u32 (uint32x2_t __a) +{ + return (uint64x1_t)__builtin_neon_vreinterpretdiv2si ((int32x2_t) __a); +} + +__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +vreinterpret_s8_p8 (poly8x8_t __a) +{ + return (int8x8_t)__builtin_neon_vreinterpretv8qiv8qi ((int8x8_t) __a); +} + +__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +vreinterpret_s8_p16 (poly16x4_t __a) +{ + return (int8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a); +} + +__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +vreinterpret_s8_f32 (float32x2_t __a) +{ + return (int8x8_t)__builtin_neon_vreinterpretv8qiv2sf (__a); +} + +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +vreinterpret_s8_p64 (poly64x1_t __a) +{ + return (int8x8_t)__builtin_neon_vreinterpretv8qidi (__a); +} + +#endif +__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +vreinterpret_s8_s64 (int64x1_t __a) +{ + return (int8x8_t)__builtin_neon_vreinterpretv8qidi (__a); +} + +__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +vreinterpret_s8_u64 (uint64x1_t __a) +{ + return (int8x8_t)__builtin_neon_vreinterpretv8qidi ((int64x1_t) __a); +} + +__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +vreinterpret_s8_s16 (int16x4_t __a) +{ + return (int8x8_t)__builtin_neon_vreinterpretv8qiv4hi (__a); +} + +__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +vreinterpret_s8_s32 (int32x2_t __a) +{ + return (int8x8_t)__builtin_neon_vreinterpretv8qiv2si (__a); +} + +__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +vreinterpret_s8_u8 (uint8x8_t __a) +{ + return (int8x8_t)__builtin_neon_vreinterpretv8qiv8qi ((int8x8_t) __a); +} + +__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +vreinterpret_s8_u16 (uint16x4_t __a) +{ + return (int8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a); +} + +__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +vreinterpret_s8_u32 (uint32x2_t __a) +{ + return (int8x8_t)__builtin_neon_vreinterpretv8qiv2si ((int32x2_t) __a); +} + +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +vreinterpret_s16_p8 (poly8x8_t __a) +{ + return (int16x4_t)__builtin_neon_vreinterpretv4hiv8qi ((int8x8_t) __a); +} + +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +vreinterpret_s16_p16 (poly16x4_t __a) +{ + return (int16x4_t)__builtin_neon_vreinterpretv4hiv4hi ((int16x4_t) __a); +} + +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +vreinterpret_s16_f32 (float32x2_t __a) +{ + return (int16x4_t)__builtin_neon_vreinterpretv4hiv2sf (__a); +} + +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +vreinterpret_s16_p64 (poly64x1_t __a) +{ + return (int16x4_t)__builtin_neon_vreinterpretv4hidi (__a); +} + +#endif +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +vreinterpret_s16_s64 (int64x1_t __a) +{ + return (int16x4_t)__builtin_neon_vreinterpretv4hidi (__a); +} + +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +vreinterpret_s16_u64 (uint64x1_t __a) +{ + return (int16x4_t)__builtin_neon_vreinterpretv4hidi ((int64x1_t) __a); +} + +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +vreinterpret_s16_s8 (int8x8_t __a) +{ + return (int16x4_t)__builtin_neon_vreinterpretv4hiv8qi (__a); +} + +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +vreinterpret_s16_s32 (int32x2_t __a) +{ + return (int16x4_t)__builtin_neon_vreinterpretv4hiv2si (__a); +} + +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +vreinterpret_s16_u8 (uint8x8_t __a) +{ + return (int16x4_t)__builtin_neon_vreinterpretv4hiv8qi ((int8x8_t) __a); +} + +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +vreinterpret_s16_u16 (uint16x4_t __a) +{ + return (int16x4_t)__builtin_neon_vreinterpretv4hiv4hi ((int16x4_t) __a); +} + +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) +vreinterpret_s16_u32 (uint32x2_t __a) +{ + return (int16x4_t)__builtin_neon_vreinterpretv4hiv2si ((int32x2_t) __a); +} + +__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +vreinterpret_s32_p8 (poly8x8_t __a) +{ + return (int32x2_t)__builtin_neon_vreinterpretv2siv8qi ((int8x8_t) __a); +} + +__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +vreinterpret_s32_p16 (poly16x4_t __a) +{ + return (int32x2_t)__builtin_neon_vreinterpretv2siv4hi ((int16x4_t) __a); +} + +__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +vreinterpret_s32_f32 (float32x2_t __a) +{ + return (int32x2_t)__builtin_neon_vreinterpretv2siv2sf (__a); +} + +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +vreinterpret_s32_p64 (poly64x1_t __a) +{ + return (int32x2_t)__builtin_neon_vreinterpretv2sidi (__a); +} + +#endif +__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +vreinterpret_s32_s64 (int64x1_t __a) +{ + return (int32x2_t)__builtin_neon_vreinterpretv2sidi (__a); +} + +__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +vreinterpret_s32_u64 (uint64x1_t __a) +{ + return (int32x2_t)__builtin_neon_vreinterpretv2sidi ((int64x1_t) __a); +} + +__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +vreinterpret_s32_s8 (int8x8_t __a) +{ + return (int32x2_t)__builtin_neon_vreinterpretv2siv8qi (__a); +} + +__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +vreinterpret_s32_s16 (int16x4_t __a) +{ + return (int32x2_t)__builtin_neon_vreinterpretv2siv4hi (__a); +} + +__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +vreinterpret_s32_u8 (uint8x8_t __a) +{ + return (int32x2_t)__builtin_neon_vreinterpretv2siv8qi ((int8x8_t) __a); +} + +__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +vreinterpret_s32_u16 (uint16x4_t __a) +{ + return (int32x2_t)__builtin_neon_vreinterpretv2siv4hi ((int16x4_t) __a); +} + +__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +vreinterpret_s32_u32 (uint32x2_t __a) +{ + return (int32x2_t)__builtin_neon_vreinterpretv2siv2si ((int32x2_t) __a); +} + +__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +vreinterpret_u8_p8 (poly8x8_t __a) +{ + return (uint8x8_t)__builtin_neon_vreinterpretv8qiv8qi ((int8x8_t) __a); +} + +__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +vreinterpret_u8_p16 (poly16x4_t __a) +{ + return (uint8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a); +} + +__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +vreinterpret_u8_f32 (float32x2_t __a) +{ + return (uint8x8_t)__builtin_neon_vreinterpretv8qiv2sf (__a); +} + +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +vreinterpret_u8_p64 (poly64x1_t __a) +{ + return (uint8x8_t)__builtin_neon_vreinterpretv8qidi (__a); +} + +#endif +__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +vreinterpret_u8_s64 (int64x1_t __a) +{ + return (uint8x8_t)__builtin_neon_vreinterpretv8qidi (__a); +} + +__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +vreinterpret_u8_u64 (uint64x1_t __a) +{ + return (uint8x8_t)__builtin_neon_vreinterpretv8qidi ((int64x1_t) __a); +} + +__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +vreinterpret_u8_s8 (int8x8_t __a) +{ + return (uint8x8_t)__builtin_neon_vreinterpretv8qiv8qi (__a); +} + +__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +vreinterpret_u8_s16 (int16x4_t __a) +{ + return (uint8x8_t)__builtin_neon_vreinterpretv8qiv4hi (__a); +} + +__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +vreinterpret_u8_s32 (int32x2_t __a) +{ + return (uint8x8_t)__builtin_neon_vreinterpretv8qiv2si (__a); +} + +__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +vreinterpret_u8_u16 (uint16x4_t __a) +{ + return (uint8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a); +} + +__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +vreinterpret_u8_u32 (uint32x2_t __a) +{ + return (uint8x8_t)__builtin_neon_vreinterpretv8qiv2si ((int32x2_t) __a); +} + +__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +vreinterpret_u16_p8 (poly8x8_t __a) +{ + return (uint16x4_t)__builtin_neon_vreinterpretv4hiv8qi ((int8x8_t) __a); +} + +__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +vreinterpret_u16_p16 (poly16x4_t __a) +{ + return (uint16x4_t)__builtin_neon_vreinterpretv4hiv4hi ((int16x4_t) __a); +} + +__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +vreinterpret_u16_f32 (float32x2_t __a) +{ + return (uint16x4_t)__builtin_neon_vreinterpretv4hiv2sf (__a); +} + +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +vreinterpret_u16_p64 (poly64x1_t __a) +{ + return (uint16x4_t)__builtin_neon_vreinterpretv4hidi (__a); +} + +#endif +__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +vreinterpret_u16_s64 (int64x1_t __a) +{ + return (uint16x4_t)__builtin_neon_vreinterpretv4hidi (__a); +} + +__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +vreinterpret_u16_u64 (uint64x1_t __a) +{ + return (uint16x4_t)__builtin_neon_vreinterpretv4hidi ((int64x1_t) __a); +} + +__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +vreinterpret_u16_s8 (int8x8_t __a) +{ + return (uint16x4_t)__builtin_neon_vreinterpretv4hiv8qi (__a); +} + +__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +vreinterpret_u16_s16 (int16x4_t __a) +{ + return (uint16x4_t)__builtin_neon_vreinterpretv4hiv4hi (__a); +} + +__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +vreinterpret_u16_s32 (int32x2_t __a) +{ + return (uint16x4_t)__builtin_neon_vreinterpretv4hiv2si (__a); +} + +__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +vreinterpret_u16_u8 (uint8x8_t __a) +{ + return (uint16x4_t)__builtin_neon_vreinterpretv4hiv8qi ((int8x8_t) __a); +} + +__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +vreinterpret_u16_u32 (uint32x2_t __a) +{ + return (uint16x4_t)__builtin_neon_vreinterpretv4hiv2si ((int32x2_t) __a); +} + +__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +vreinterpret_u32_p8 (poly8x8_t __a) +{ + return (uint32x2_t)__builtin_neon_vreinterpretv2siv8qi ((int8x8_t) __a); +} + +__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +vreinterpret_u32_p16 (poly16x4_t __a) +{ + return (uint32x2_t)__builtin_neon_vreinterpretv2siv4hi ((int16x4_t) __a); +} + +__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +vreinterpret_u32_f32 (float32x2_t __a) +{ + return (uint32x2_t)__builtin_neon_vreinterpretv2siv2sf (__a); +} + +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +vreinterpret_u32_p64 (poly64x1_t __a) +{ + return (uint32x2_t)__builtin_neon_vreinterpretv2sidi (__a); +} + +#endif +__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +vreinterpret_u32_s64 (int64x1_t __a) +{ + return (uint32x2_t)__builtin_neon_vreinterpretv2sidi (__a); +} + +__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +vreinterpret_u32_u64 (uint64x1_t __a) +{ + return (uint32x2_t)__builtin_neon_vreinterpretv2sidi ((int64x1_t) __a); +} + +__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +vreinterpret_u32_s8 (int8x8_t __a) +{ + return (uint32x2_t)__builtin_neon_vreinterpretv2siv8qi (__a); +} + +__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +vreinterpret_u32_s16 (int16x4_t __a) +{ + return (uint32x2_t)__builtin_neon_vreinterpretv2siv4hi (__a); +} + +__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +vreinterpret_u32_s32 (int32x2_t __a) +{ + return (uint32x2_t)__builtin_neon_vreinterpretv2siv2si (__a); +} + +__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +vreinterpret_u32_u8 (uint8x8_t __a) +{ + return (uint32x2_t)__builtin_neon_vreinterpretv2siv8qi ((int8x8_t) __a); +} + +__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +vreinterpret_u32_u16 (uint16x4_t __a) +{ + return (uint32x2_t)__builtin_neon_vreinterpretv2siv4hi ((int16x4_t) __a); +} + +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_p16 (poly16x8_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); +} + +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_f32 (float32x4_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiv4sf (__a); +} + +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_p64 (poly64x2_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiv2di ((int64x2_t) __a); +} + +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_p128 (poly128_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiti ((__builtin_neon_ti) __a); +} + +#endif +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_s64 (int64x2_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiv2di (__a); +} + +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_u64 (uint64x2_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiv2di ((int64x2_t) __a); +} + +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_s8 (int8x16_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiv16qi (__a); +} + +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_s16 (int16x8_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiv8hi (__a); +} + +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_s32 (int32x4_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiv4si (__a); +} + +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_u8 (uint8x16_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiv16qi ((int8x16_t) __a); +} + +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_u16 (uint16x8_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); +} + +__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_p8_u32 (uint32x4_t __a) +{ + return (poly8x16_t)__builtin_neon_vreinterpretv16qiv4si ((int32x4_t) __a); +} + +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_p8 (poly8x16_t __a) +{ + return (poly16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); +} + +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_f32 (float32x4_t __a) +{ + return (poly16x8_t)__builtin_neon_vreinterpretv8hiv4sf (__a); +} + +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_p64 (poly64x2_t __a) +{ + return (poly16x8_t)__builtin_neon_vreinterpretv8hiv2di ((int64x2_t) __a); +} + +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_p128 (poly128_t __a) +{ + return (poly16x8_t)__builtin_neon_vreinterpretv8hiti ((__builtin_neon_ti) __a); +} + +#endif +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_s64 (int64x2_t __a) +{ + return (poly16x8_t)__builtin_neon_vreinterpretv8hiv2di (__a); +} + +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_u64 (uint64x2_t __a) +{ + return (poly16x8_t)__builtin_neon_vreinterpretv8hiv2di ((int64x2_t) __a); +} + +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_s8 (int8x16_t __a) +{ + return (poly16x8_t)__builtin_neon_vreinterpretv8hiv16qi (__a); +} + +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_s16 (int16x8_t __a) +{ + return (poly16x8_t)__builtin_neon_vreinterpretv8hiv8hi (__a); +} + +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_s32 (int32x4_t __a) { - return (int64x2_t)__builtin_neon_vreinterpretv2div4si ((int32x4_t) __a); + return (poly16x8_t)__builtin_neon_vreinterpretv8hiv4si (__a); } -__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_s64_u64 (uint64x2_t __a) +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_u8 (uint8x16_t __a) { - return (int64x2_t)__builtin_neon_vreinterpretv2div2di ((int64x2_t) __a); + return (poly16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); } -__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_s64_p8 (poly8x16_t __a) +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_u16 (uint16x8_t __a) { - return (int64x2_t)__builtin_neon_vreinterpretv2div16qi ((int8x16_t) __a); + return (poly16x8_t)__builtin_neon_vreinterpretv8hiv8hi ((int16x8_t) __a); } -__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_s64_p16 (poly16x8_t __a) +__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_p16_u32 (uint32x4_t __a) { - return (int64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a); + return (poly16x8_t)__builtin_neon_vreinterpretv8hiv4si ((int32x4_t) __a); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vreinterpret_u64_s8 (int8x8_t __a) +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_p8 (poly8x16_t __a) { - return (uint64x1_t)__builtin_neon_vreinterpretdiv8qi (__a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfv16qi ((int8x16_t) __a); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vreinterpret_u64_s16 (int16x4_t __a) +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_p16 (poly16x8_t __a) { - return (uint64x1_t)__builtin_neon_vreinterpretdiv4hi (__a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfv8hi ((int16x8_t) __a); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vreinterpret_u64_s32 (int32x2_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_p64 (poly64x2_t __a) { - return (uint64x1_t)__builtin_neon_vreinterpretdiv2si (__a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfv2di ((int64x2_t) __a); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vreinterpret_u64_s64 (int64x1_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_p128 (poly128_t __a) { - return (uint64x1_t)__builtin_neon_vreinterpretdidi (__a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfti ((__builtin_neon_ti) __a); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vreinterpret_u64_f32 (float32x2_t __a) +#endif +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_s64 (int64x2_t __a) { - return (uint64x1_t)__builtin_neon_vreinterpretdiv2sf (__a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfv2di (__a); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vreinterpret_u64_u8 (uint8x8_t __a) +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_u64 (uint64x2_t __a) { - return (uint64x1_t)__builtin_neon_vreinterpretdiv8qi ((int8x8_t) __a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfv2di ((int64x2_t) __a); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vreinterpret_u64_u16 (uint16x4_t __a) +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_s8 (int8x16_t __a) { - return (uint64x1_t)__builtin_neon_vreinterpretdiv4hi ((int16x4_t) __a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfv16qi (__a); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vreinterpret_u64_u32 (uint32x2_t __a) +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_s16 (int16x8_t __a) { - return (uint64x1_t)__builtin_neon_vreinterpretdiv2si ((int32x2_t) __a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfv8hi (__a); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vreinterpret_u64_p8 (poly8x8_t __a) +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_s32 (int32x4_t __a) { - return (uint64x1_t)__builtin_neon_vreinterpretdiv8qi ((int8x8_t) __a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfv4si (__a); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vreinterpret_u64_p16 (poly16x4_t __a) +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_u8 (uint8x16_t __a) { - return (uint64x1_t)__builtin_neon_vreinterpretdiv4hi ((int16x4_t) __a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfv16qi ((int8x16_t) __a); } -__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_u64_s8 (int8x16_t __a) +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_u16 (uint16x8_t __a) { - return (uint64x2_t)__builtin_neon_vreinterpretv2div16qi (__a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfv8hi ((int16x8_t) __a); } -__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_u64_s16 (int16x8_t __a) +__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_f32_u32 (uint32x4_t __a) { - return (uint64x2_t)__builtin_neon_vreinterpretv2div8hi (__a); + return (float32x4_t)__builtin_neon_vreinterpretv4sfv4si ((int32x4_t) __a); } -__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_u64_s32 (int32x4_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_p8 (poly8x16_t __a) { - return (uint64x2_t)__builtin_neon_vreinterpretv2div4si (__a); + return (poly64x2_t)__builtin_neon_vreinterpretv2div16qi ((int8x16_t) __a); } -__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_u64_s64 (int64x2_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_p16 (poly16x8_t __a) { - return (uint64x2_t)__builtin_neon_vreinterpretv2div2di (__a); + return (poly64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a); } -__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_u64_f32 (float32x4_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_f32 (float32x4_t __a) { - return (uint64x2_t)__builtin_neon_vreinterpretv2div4sf (__a); + return (poly64x2_t)__builtin_neon_vreinterpretv2div4sf (__a); } -__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_u64_u8 (uint8x16_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_p128 (poly128_t __a) { - return (uint64x2_t)__builtin_neon_vreinterpretv2div16qi ((int8x16_t) __a); + return (poly64x2_t)__builtin_neon_vreinterpretv2diti ((__builtin_neon_ti) __a); } -__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_u64_u16 (uint16x8_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_s64 (int64x2_t __a) { - return (uint64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a); + return (poly64x2_t)__builtin_neon_vreinterpretv2div2di (__a); } -__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_u64_u32 (uint32x4_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_u64 (uint64x2_t __a) { - return (uint64x2_t)__builtin_neon_vreinterpretv2div4si ((int32x4_t) __a); + return (poly64x2_t)__builtin_neon_vreinterpretv2div2di ((int64x2_t) __a); } -__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_u64_p8 (poly8x16_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_s8 (int8x16_t __a) { - return (uint64x2_t)__builtin_neon_vreinterpretv2div16qi ((int8x16_t) __a); + return (poly64x2_t)__builtin_neon_vreinterpretv2div16qi (__a); } -__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) -vreinterpretq_u64_p16 (poly16x8_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_s16 (int16x8_t __a) { - return (uint64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a); + return (poly64x2_t)__builtin_neon_vreinterpretv2div8hi (__a); } -__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) -vreinterpret_s8_s16 (int16x4_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_s32 (int32x4_t __a) { - return (int8x8_t)__builtin_neon_vreinterpretv8qiv4hi (__a); + return (poly64x2_t)__builtin_neon_vreinterpretv2div4si (__a); } -__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) -vreinterpret_s8_s32 (int32x2_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_u8 (uint8x16_t __a) { - return (int8x8_t)__builtin_neon_vreinterpretv8qiv2si (__a); + return (poly64x2_t)__builtin_neon_vreinterpretv2div16qi ((int8x16_t) __a); } -__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) -vreinterpret_s8_s64 (int64x1_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_u16 (uint16x8_t __a) { - return (int8x8_t)__builtin_neon_vreinterpretv8qidi (__a); + return (poly64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a); } -__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) -vreinterpret_s8_f32 (float32x2_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_p64_u32 (uint32x4_t __a) { - return (int8x8_t)__builtin_neon_vreinterpretv8qiv2sf (__a); + return (poly64x2_t)__builtin_neon_vreinterpretv2div4si ((int32x4_t) __a); } -__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) -vreinterpret_s8_u8 (uint8x8_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_p8 (poly8x16_t __a) { - return (int8x8_t)__builtin_neon_vreinterpretv8qiv8qi ((int8x8_t) __a); + return (poly128_t)__builtin_neon_vreinterprettiv16qi ((int8x16_t) __a); } -__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) -vreinterpret_s8_u16 (uint16x4_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_p16 (poly16x8_t __a) { - return (int8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a); + return (poly128_t)__builtin_neon_vreinterprettiv8hi ((int16x8_t) __a); } -__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) -vreinterpret_s8_u32 (uint32x2_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_f32 (float32x4_t __a) { - return (int8x8_t)__builtin_neon_vreinterpretv8qiv2si ((int32x2_t) __a); + return (poly128_t)__builtin_neon_vreinterprettiv4sf (__a); } -__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) -vreinterpret_s8_u64 (uint64x1_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_p64 (poly64x2_t __a) { - return (int8x8_t)__builtin_neon_vreinterpretv8qidi ((int64x1_t) __a); + return (poly128_t)__builtin_neon_vreinterprettiv2di ((int64x2_t) __a); } -__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) -vreinterpret_s8_p8 (poly8x8_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_s64 (int64x2_t __a) { - return (int8x8_t)__builtin_neon_vreinterpretv8qiv8qi ((int8x8_t) __a); + return (poly128_t)__builtin_neon_vreinterprettiv2di (__a); } -__extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) -vreinterpret_s8_p16 (poly16x4_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_u64 (uint64x2_t __a) { - return (int8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a); + return (poly128_t)__builtin_neon_vreinterprettiv2di ((int64x2_t) __a); } -__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_s8_s16 (int16x8_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_s8 (int8x16_t __a) { - return (int8x16_t)__builtin_neon_vreinterpretv16qiv8hi (__a); + return (poly128_t)__builtin_neon_vreinterprettiv16qi (__a); } -__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_s8_s32 (int32x4_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_s16 (int16x8_t __a) { - return (int8x16_t)__builtin_neon_vreinterpretv16qiv4si (__a); + return (poly128_t)__builtin_neon_vreinterprettiv8hi (__a); } -__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_s8_s64 (int64x2_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_s32 (int32x4_t __a) { - return (int8x16_t)__builtin_neon_vreinterpretv16qiv2di (__a); + return (poly128_t)__builtin_neon_vreinterprettiv4si (__a); } -__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_s8_f32 (float32x4_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_u8 (uint8x16_t __a) { - return (int8x16_t)__builtin_neon_vreinterpretv16qiv4sf (__a); + return (poly128_t)__builtin_neon_vreinterprettiv16qi ((int8x16_t) __a); } -__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_s8_u8 (uint8x16_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_u16 (uint16x8_t __a) { - return (int8x16_t)__builtin_neon_vreinterpretv16qiv16qi ((int8x16_t) __a); + return (poly128_t)__builtin_neon_vreinterprettiv8hi ((int16x8_t) __a); } -__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_s8_u16 (uint16x8_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vreinterpretq_p128_u32 (uint32x4_t __a) { - return (int8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); + return (poly128_t)__builtin_neon_vreinterprettiv4si ((int32x4_t) __a); } -__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_s8_u32 (uint32x4_t __a) +#endif +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_p8 (poly8x16_t __a) { - return (int8x16_t)__builtin_neon_vreinterpretv16qiv4si ((int32x4_t) __a); + return (int64x2_t)__builtin_neon_vreinterpretv2div16qi ((int8x16_t) __a); } -__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_s8_u64 (uint64x2_t __a) +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_p16 (poly16x8_t __a) { - return (int8x16_t)__builtin_neon_vreinterpretv16qiv2di ((int64x2_t) __a); + return (int64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a); } -__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_s8_p8 (poly8x16_t __a) +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_f32 (float32x4_t __a) { - return (int8x16_t)__builtin_neon_vreinterpretv16qiv16qi ((int8x16_t) __a); + return (int64x2_t)__builtin_neon_vreinterpretv2div4sf (__a); } -__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_s8_p16 (poly16x8_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_p64 (poly64x2_t __a) { - return (int8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); + return (int64x2_t)__builtin_neon_vreinterpretv2div2di ((int64x2_t) __a); } -__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) -vreinterpret_s16_s8 (int8x8_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_p128 (poly128_t __a) { - return (int16x4_t)__builtin_neon_vreinterpretv4hiv8qi (__a); + return (int64x2_t)__builtin_neon_vreinterpretv2diti ((__builtin_neon_ti) __a); } -__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) -vreinterpret_s16_s32 (int32x2_t __a) +#endif +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_u64 (uint64x2_t __a) +{ + return (int64x2_t)__builtin_neon_vreinterpretv2div2di ((int64x2_t) __a); +} + +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_s8 (int8x16_t __a) +{ + return (int64x2_t)__builtin_neon_vreinterpretv2div16qi (__a); +} + +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_s16 (int16x8_t __a) +{ + return (int64x2_t)__builtin_neon_vreinterpretv2div8hi (__a); +} + +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_s32 (int32x4_t __a) +{ + return (int64x2_t)__builtin_neon_vreinterpretv2div4si (__a); +} + +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_u8 (uint8x16_t __a) +{ + return (int64x2_t)__builtin_neon_vreinterpretv2div16qi ((int8x16_t) __a); +} + +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_u16 (uint16x8_t __a) +{ + return (int64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a); +} + +__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_s64_u32 (uint32x4_t __a) { - return (int16x4_t)__builtin_neon_vreinterpretv4hiv2si (__a); + return (int64x2_t)__builtin_neon_vreinterpretv2div4si ((int32x4_t) __a); } -__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) -vreinterpret_s16_s64 (int64x1_t __a) +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_p8 (poly8x16_t __a) { - return (int16x4_t)__builtin_neon_vreinterpretv4hidi (__a); + return (uint64x2_t)__builtin_neon_vreinterpretv2div16qi ((int8x16_t) __a); } -__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) -vreinterpret_s16_f32 (float32x2_t __a) +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_p16 (poly16x8_t __a) { - return (int16x4_t)__builtin_neon_vreinterpretv4hiv2sf (__a); + return (uint64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a); } -__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) -vreinterpret_s16_u8 (uint8x8_t __a) +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_f32 (float32x4_t __a) { - return (int16x4_t)__builtin_neon_vreinterpretv4hiv8qi ((int8x8_t) __a); + return (uint64x2_t)__builtin_neon_vreinterpretv2div4sf (__a); } -__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) -vreinterpret_s16_u16 (uint16x4_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_p64 (poly64x2_t __a) { - return (int16x4_t)__builtin_neon_vreinterpretv4hiv4hi ((int16x4_t) __a); + return (uint64x2_t)__builtin_neon_vreinterpretv2div2di ((int64x2_t) __a); } -__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) -vreinterpret_s16_u32 (uint32x2_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_p128 (poly128_t __a) { - return (int16x4_t)__builtin_neon_vreinterpretv4hiv2si ((int32x2_t) __a); + return (uint64x2_t)__builtin_neon_vreinterpretv2diti ((__builtin_neon_ti) __a); } -__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) -vreinterpret_s16_u64 (uint64x1_t __a) +#endif +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_s64 (int64x2_t __a) { - return (int16x4_t)__builtin_neon_vreinterpretv4hidi ((int64x1_t) __a); + return (uint64x2_t)__builtin_neon_vreinterpretv2div2di (__a); } -__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) -vreinterpret_s16_p8 (poly8x8_t __a) +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_s8 (int8x16_t __a) { - return (int16x4_t)__builtin_neon_vreinterpretv4hiv8qi ((int8x8_t) __a); + return (uint64x2_t)__builtin_neon_vreinterpretv2div16qi (__a); } -__extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) -vreinterpret_s16_p16 (poly16x4_t __a) +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_s16 (int16x8_t __a) { - return (int16x4_t)__builtin_neon_vreinterpretv4hiv4hi ((int16x4_t) __a); + return (uint64x2_t)__builtin_neon_vreinterpretv2div8hi (__a); } -__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_s16_s8 (int8x16_t __a) +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_s32 (int32x4_t __a) { - return (int16x8_t)__builtin_neon_vreinterpretv8hiv16qi (__a); + return (uint64x2_t)__builtin_neon_vreinterpretv2div4si (__a); } -__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_s16_s32 (int32x4_t __a) +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_u8 (uint8x16_t __a) { - return (int16x8_t)__builtin_neon_vreinterpretv8hiv4si (__a); + return (uint64x2_t)__builtin_neon_vreinterpretv2div16qi ((int8x16_t) __a); } -__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_s16_s64 (int64x2_t __a) +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_u16 (uint16x8_t __a) { - return (int16x8_t)__builtin_neon_vreinterpretv8hiv2di (__a); + return (uint64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a); } -__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_s16_f32 (float32x4_t __a) +__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +vreinterpretq_u64_u32 (uint32x4_t __a) { - return (int16x8_t)__builtin_neon_vreinterpretv8hiv4sf (__a); + return (uint64x2_t)__builtin_neon_vreinterpretv2div4si ((int32x4_t) __a); } -__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_s16_u8 (uint8x16_t __a) +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_p8 (poly8x16_t __a) { - return (int16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiv16qi ((int8x16_t) __a); } -__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_s16_u16 (uint16x8_t __a) +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_p16 (poly16x8_t __a) { - return (int16x8_t)__builtin_neon_vreinterpretv8hiv8hi ((int16x8_t) __a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); } -__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_s16_u32 (uint32x4_t __a) +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_f32 (float32x4_t __a) { - return (int16x8_t)__builtin_neon_vreinterpretv8hiv4si ((int32x4_t) __a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiv4sf (__a); } -__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_s16_u64 (uint64x2_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_p64 (poly64x2_t __a) { - return (int16x8_t)__builtin_neon_vreinterpretv8hiv2di ((int64x2_t) __a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiv2di ((int64x2_t) __a); } -__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_s16_p8 (poly8x16_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_p128 (poly128_t __a) { - return (int16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiti ((__builtin_neon_ti) __a); } -__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_s16_p16 (poly16x8_t __a) +#endif +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_s64 (int64x2_t __a) { - return (int16x8_t)__builtin_neon_vreinterpretv8hiv8hi ((int16x8_t) __a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiv2di (__a); } -__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) -vreinterpret_s32_s8 (int8x8_t __a) +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_u64 (uint64x2_t __a) { - return (int32x2_t)__builtin_neon_vreinterpretv2siv8qi (__a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiv2di ((int64x2_t) __a); } -__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) -vreinterpret_s32_s16 (int16x4_t __a) +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_s16 (int16x8_t __a) { - return (int32x2_t)__builtin_neon_vreinterpretv2siv4hi (__a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiv8hi (__a); } -__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) -vreinterpret_s32_s64 (int64x1_t __a) +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_s32 (int32x4_t __a) { - return (int32x2_t)__builtin_neon_vreinterpretv2sidi (__a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiv4si (__a); } -__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) -vreinterpret_s32_f32 (float32x2_t __a) +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_u8 (uint8x16_t __a) { - return (int32x2_t)__builtin_neon_vreinterpretv2siv2sf (__a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiv16qi ((int8x16_t) __a); } -__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) -vreinterpret_s32_u8 (uint8x8_t __a) +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_u16 (uint16x8_t __a) { - return (int32x2_t)__builtin_neon_vreinterpretv2siv8qi ((int8x8_t) __a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); } -__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) -vreinterpret_s32_u16 (uint16x4_t __a) +__extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_s8_u32 (uint32x4_t __a) { - return (int32x2_t)__builtin_neon_vreinterpretv2siv4hi ((int16x4_t) __a); + return (int8x16_t)__builtin_neon_vreinterpretv16qiv4si ((int32x4_t) __a); } -__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) -vreinterpret_s32_u32 (uint32x2_t __a) +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_p8 (poly8x16_t __a) { - return (int32x2_t)__builtin_neon_vreinterpretv2siv2si ((int32x2_t) __a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); } -__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) -vreinterpret_s32_u64 (uint64x1_t __a) +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_p16 (poly16x8_t __a) { - return (int32x2_t)__builtin_neon_vreinterpretv2sidi ((int64x1_t) __a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiv8hi ((int16x8_t) __a); } -__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) -vreinterpret_s32_p8 (poly8x8_t __a) +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_f32 (float32x4_t __a) { - return (int32x2_t)__builtin_neon_vreinterpretv2siv8qi ((int8x8_t) __a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiv4sf (__a); } -__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) -vreinterpret_s32_p16 (poly16x4_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_p64 (poly64x2_t __a) { - return (int32x2_t)__builtin_neon_vreinterpretv2siv4hi ((int16x4_t) __a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiv2di ((int64x2_t) __a); } -__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_s32_s8 (int8x16_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_p128 (poly128_t __a) { - return (int32x4_t)__builtin_neon_vreinterpretv4siv16qi (__a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiti ((__builtin_neon_ti) __a); } -__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_s32_s16 (int16x8_t __a) +#endif +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_s64 (int64x2_t __a) { - return (int32x4_t)__builtin_neon_vreinterpretv4siv8hi (__a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiv2di (__a); } -__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_s32_s64 (int64x2_t __a) +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_u64 (uint64x2_t __a) { - return (int32x4_t)__builtin_neon_vreinterpretv4siv2di (__a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiv2di ((int64x2_t) __a); } -__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_s32_f32 (float32x4_t __a) +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_s8 (int8x16_t __a) { - return (int32x4_t)__builtin_neon_vreinterpretv4siv4sf (__a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiv16qi (__a); } -__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_s32_u8 (uint8x16_t __a) +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_s32 (int32x4_t __a) { - return (int32x4_t)__builtin_neon_vreinterpretv4siv16qi ((int8x16_t) __a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiv4si (__a); } -__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_s32_u16 (uint16x8_t __a) +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_u8 (uint8x16_t __a) { - return (int32x4_t)__builtin_neon_vreinterpretv4siv8hi ((int16x8_t) __a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); } -__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_s32_u32 (uint32x4_t __a) +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_u16 (uint16x8_t __a) { - return (int32x4_t)__builtin_neon_vreinterpretv4siv4si ((int32x4_t) __a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiv8hi ((int16x8_t) __a); } -__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_s32_u64 (uint64x2_t __a) +__extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_s16_u32 (uint32x4_t __a) { - return (int32x4_t)__builtin_neon_vreinterpretv4siv2di ((int64x2_t) __a); + return (int16x8_t)__builtin_neon_vreinterpretv8hiv4si ((int32x4_t) __a); } __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) @@ -11992,88 +12957,80 @@ vreinterpretq_s32_p16 (poly16x8_t __a) return (int32x4_t)__builtin_neon_vreinterpretv4siv8hi ((int16x8_t) __a); } -__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) -vreinterpret_u8_s8 (int8x8_t __a) -{ - return (uint8x8_t)__builtin_neon_vreinterpretv8qiv8qi (__a); -} - -__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) -vreinterpret_u8_s16 (int16x4_t __a) -{ - return (uint8x8_t)__builtin_neon_vreinterpretv8qiv4hi (__a); -} - -__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) -vreinterpret_u8_s32 (int32x2_t __a) +__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_s32_f32 (float32x4_t __a) { - return (uint8x8_t)__builtin_neon_vreinterpretv8qiv2si (__a); + return (int32x4_t)__builtin_neon_vreinterpretv4siv4sf (__a); } -__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) -vreinterpret_u8_s64 (int64x1_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_s32_p64 (poly64x2_t __a) { - return (uint8x8_t)__builtin_neon_vreinterpretv8qidi (__a); + return (int32x4_t)__builtin_neon_vreinterpretv4siv2di ((int64x2_t) __a); } -__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) -vreinterpret_u8_f32 (float32x2_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_s32_p128 (poly128_t __a) { - return (uint8x8_t)__builtin_neon_vreinterpretv8qiv2sf (__a); + return (int32x4_t)__builtin_neon_vreinterpretv4siti ((__builtin_neon_ti) __a); } -__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) -vreinterpret_u8_u16 (uint16x4_t __a) +#endif +__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_s32_s64 (int64x2_t __a) { - return (uint8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a); + return (int32x4_t)__builtin_neon_vreinterpretv4siv2di (__a); } -__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) -vreinterpret_u8_u32 (uint32x2_t __a) +__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_s32_u64 (uint64x2_t __a) { - return (uint8x8_t)__builtin_neon_vreinterpretv8qiv2si ((int32x2_t) __a); + return (int32x4_t)__builtin_neon_vreinterpretv4siv2di ((int64x2_t) __a); } -__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) -vreinterpret_u8_u64 (uint64x1_t __a) +__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_s32_s8 (int8x16_t __a) { - return (uint8x8_t)__builtin_neon_vreinterpretv8qidi ((int64x1_t) __a); + return (int32x4_t)__builtin_neon_vreinterpretv4siv16qi (__a); } -__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) -vreinterpret_u8_p8 (poly8x8_t __a) +__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_s32_s16 (int16x8_t __a) { - return (uint8x8_t)__builtin_neon_vreinterpretv8qiv8qi ((int8x8_t) __a); + return (int32x4_t)__builtin_neon_vreinterpretv4siv8hi (__a); } -__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) -vreinterpret_u8_p16 (poly16x4_t __a) +__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_s32_u8 (uint8x16_t __a) { - return (uint8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a); + return (int32x4_t)__builtin_neon_vreinterpretv4siv16qi ((int8x16_t) __a); } -__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_u8_s8 (int8x16_t __a) +__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_s32_u16 (uint16x8_t __a) { - return (uint8x16_t)__builtin_neon_vreinterpretv16qiv16qi (__a); + return (int32x4_t)__builtin_neon_vreinterpretv4siv8hi ((int16x8_t) __a); } -__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_u8_s16 (int16x8_t __a) +__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_s32_u32 (uint32x4_t __a) { - return (uint8x16_t)__builtin_neon_vreinterpretv16qiv8hi (__a); + return (int32x4_t)__builtin_neon_vreinterpretv4siv4si ((int32x4_t) __a); } __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_u8_s32 (int32x4_t __a) +vreinterpretq_u8_p8 (poly8x16_t __a) { - return (uint8x16_t)__builtin_neon_vreinterpretv16qiv4si (__a); + return (uint8x16_t)__builtin_neon_vreinterpretv16qiv16qi ((int8x16_t) __a); } __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_u8_s64 (int64x2_t __a) +vreinterpretq_u8_p16 (poly16x8_t __a) { - return (uint8x16_t)__builtin_neon_vreinterpretv16qiv2di (__a); + return (uint8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); } __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) @@ -12082,16 +13039,26 @@ vreinterpretq_u8_f32 (float32x4_t __a) return (uint8x16_t)__builtin_neon_vreinterpretv16qiv4sf (__a); } +#ifdef __ARM_FEATURE_CRYPTO __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_u8_u16 (uint16x8_t __a) +vreinterpretq_u8_p64 (poly64x2_t __a) { - return (uint8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); + return (uint8x16_t)__builtin_neon_vreinterpretv16qiv2di ((int64x2_t) __a); } +#endif +#ifdef __ARM_FEATURE_CRYPTO __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_u8_u32 (uint32x4_t __a) +vreinterpretq_u8_p128 (poly128_t __a) { - return (uint8x16_t)__builtin_neon_vreinterpretv16qiv4si ((int32x4_t) __a); + return (uint8x16_t)__builtin_neon_vreinterpretv16qiti ((__builtin_neon_ti) __a); +} + +#endif +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_u8_s64 (int64x2_t __a) +{ + return (uint8x16_t)__builtin_neon_vreinterpretv16qiv2di (__a); } __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) @@ -12101,75 +13068,79 @@ vreinterpretq_u8_u64 (uint64x2_t __a) } __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_u8_p8 (poly8x16_t __a) +vreinterpretq_u8_s8 (int8x16_t __a) { - return (uint8x16_t)__builtin_neon_vreinterpretv16qiv16qi ((int8x16_t) __a); + return (uint8x16_t)__builtin_neon_vreinterpretv16qiv16qi (__a); } __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) -vreinterpretq_u8_p16 (poly16x8_t __a) +vreinterpretq_u8_s16 (int16x8_t __a) { - return (uint8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); + return (uint8x16_t)__builtin_neon_vreinterpretv16qiv8hi (__a); } -__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) -vreinterpret_u16_s8 (int8x8_t __a) +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_u8_s32 (int32x4_t __a) { - return (uint16x4_t)__builtin_neon_vreinterpretv4hiv8qi (__a); + return (uint8x16_t)__builtin_neon_vreinterpretv16qiv4si (__a); } -__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) -vreinterpret_u16_s16 (int16x4_t __a) +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_u8_u16 (uint16x8_t __a) { - return (uint16x4_t)__builtin_neon_vreinterpretv4hiv4hi (__a); + return (uint8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a); } -__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) -vreinterpret_u16_s32 (int32x2_t __a) +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vreinterpretq_u8_u32 (uint32x4_t __a) { - return (uint16x4_t)__builtin_neon_vreinterpretv4hiv2si (__a); + return (uint8x16_t)__builtin_neon_vreinterpretv16qiv4si ((int32x4_t) __a); } -__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) -vreinterpret_u16_s64 (int64x1_t __a) +__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_u16_p8 (poly8x16_t __a) { - return (uint16x4_t)__builtin_neon_vreinterpretv4hidi (__a); + return (uint16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); } -__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) -vreinterpret_u16_f32 (float32x2_t __a) +__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_u16_p16 (poly16x8_t __a) { - return (uint16x4_t)__builtin_neon_vreinterpretv4hiv2sf (__a); + return (uint16x8_t)__builtin_neon_vreinterpretv8hiv8hi ((int16x8_t) __a); } -__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) -vreinterpret_u16_u8 (uint8x8_t __a) +__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_u16_f32 (float32x4_t __a) { - return (uint16x4_t)__builtin_neon_vreinterpretv4hiv8qi ((int8x8_t) __a); + return (uint16x8_t)__builtin_neon_vreinterpretv8hiv4sf (__a); } -__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) -vreinterpret_u16_u32 (uint32x2_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_u16_p64 (poly64x2_t __a) { - return (uint16x4_t)__builtin_neon_vreinterpretv4hiv2si ((int32x2_t) __a); + return (uint16x8_t)__builtin_neon_vreinterpretv8hiv2di ((int64x2_t) __a); } -__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) -vreinterpret_u16_u64 (uint64x1_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_u16_p128 (poly128_t __a) { - return (uint16x4_t)__builtin_neon_vreinterpretv4hidi ((int64x1_t) __a); + return (uint16x8_t)__builtin_neon_vreinterpretv8hiti ((__builtin_neon_ti) __a); } -__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) -vreinterpret_u16_p8 (poly8x8_t __a) +#endif +__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_u16_s64 (int64x2_t __a) { - return (uint16x4_t)__builtin_neon_vreinterpretv4hiv8qi ((int8x8_t) __a); + return (uint16x8_t)__builtin_neon_vreinterpretv8hiv2di (__a); } -__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) -vreinterpret_u16_p16 (poly16x4_t __a) +__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +vreinterpretq_u16_u64 (uint64x2_t __a) { - return (uint16x4_t)__builtin_neon_vreinterpretv4hiv4hi ((int16x4_t) __a); + return (uint16x8_t)__builtin_neon_vreinterpretv8hiv2di ((int64x2_t) __a); } __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) @@ -12191,167 +13162,231 @@ vreinterpretq_u16_s32 (int32x4_t __a) } __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_u16_s64 (int64x2_t __a) +vreinterpretq_u16_u8 (uint8x16_t __a) { - return (uint16x8_t)__builtin_neon_vreinterpretv8hiv2di (__a); + return (uint16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); } __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_u16_f32 (float32x4_t __a) +vreinterpretq_u16_u32 (uint32x4_t __a) { - return (uint16x8_t)__builtin_neon_vreinterpretv8hiv4sf (__a); + return (uint16x8_t)__builtin_neon_vreinterpretv8hiv4si ((int32x4_t) __a); } -__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_u16_u8 (uint8x16_t __a) +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_p8 (poly8x16_t __a) { - return (uint16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siv16qi ((int8x16_t) __a); } -__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_u16_u32 (uint32x4_t __a) +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_p16 (poly16x8_t __a) { - return (uint16x8_t)__builtin_neon_vreinterpretv8hiv4si ((int32x4_t) __a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siv8hi ((int16x8_t) __a); } -__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_u16_u64 (uint64x2_t __a) +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_f32 (float32x4_t __a) { - return (uint16x8_t)__builtin_neon_vreinterpretv8hiv2di ((int64x2_t) __a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siv4sf (__a); } -__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_u16_p8 (poly8x16_t __a) +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_p64 (poly64x2_t __a) { - return (uint16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siv2di ((int64x2_t) __a); } -__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) -vreinterpretq_u16_p16 (poly16x8_t __a) +#endif +#ifdef __ARM_FEATURE_CRYPTO +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_p128 (poly128_t __a) { - return (uint16x8_t)__builtin_neon_vreinterpretv8hiv8hi ((int16x8_t) __a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siti ((__builtin_neon_ti) __a); } -__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) -vreinterpret_u32_s8 (int8x8_t __a) +#endif +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_s64 (int64x2_t __a) { - return (uint32x2_t)__builtin_neon_vreinterpretv2siv8qi (__a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siv2di (__a); } -__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) -vreinterpret_u32_s16 (int16x4_t __a) +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_u64 (uint64x2_t __a) { - return (uint32x2_t)__builtin_neon_vreinterpretv2siv4hi (__a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siv2di ((int64x2_t) __a); } -__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) -vreinterpret_u32_s32 (int32x2_t __a) +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_s8 (int8x16_t __a) { - return (uint32x2_t)__builtin_neon_vreinterpretv2siv2si (__a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siv16qi (__a); } -__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) -vreinterpret_u32_s64 (int64x1_t __a) +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_s16 (int16x8_t __a) { - return (uint32x2_t)__builtin_neon_vreinterpretv2sidi (__a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siv8hi (__a); } -__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) -vreinterpret_u32_f32 (float32x2_t __a) +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_s32 (int32x4_t __a) { - return (uint32x2_t)__builtin_neon_vreinterpretv2siv2sf (__a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siv4si (__a); } -__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) -vreinterpret_u32_u8 (uint8x8_t __a) +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_u8 (uint8x16_t __a) { - return (uint32x2_t)__builtin_neon_vreinterpretv2siv8qi ((int8x8_t) __a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siv16qi ((int8x16_t) __a); } -__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) -vreinterpret_u32_u16 (uint16x4_t __a) +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vreinterpretq_u32_u16 (uint16x8_t __a) { - return (uint32x2_t)__builtin_neon_vreinterpretv2siv4hi ((int16x4_t) __a); + return (uint32x4_t)__builtin_neon_vreinterpretv4siv8hi ((int16x8_t) __a); } -__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) -vreinterpret_u32_u64 (uint64x1_t __a) + +#ifdef __ARM_FEATURE_CRYPTO + +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vldrq_p128 (poly128_t const * __ptr) { - return (uint32x2_t)__builtin_neon_vreinterpretv2sidi ((int64x1_t) __a); +#ifdef __ARM_BIG_ENDIAN + poly64_t* __ptmp = (poly64_t*) __ptr; + poly64_t __d0 = vld1_p64 (__ptmp); + poly64_t __d1 = vld1_p64 (__ptmp + 1); + return vreinterpretq_p128_p64 (vcombine_p64 (__d1, __d0)); +#else + return vreinterpretq_p128_p64 (vld1q_p64 ((poly64_t*) __ptr)); +#endif } -__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) -vreinterpret_u32_p8 (poly8x8_t __a) +__extension__ static __inline void __attribute__ ((__always_inline__)) +vstrq_p128 (poly128_t * __ptr, poly128_t __val) { - return (uint32x2_t)__builtin_neon_vreinterpretv2siv8qi ((int8x8_t) __a); +#ifdef __ARM_BIG_ENDIAN + poly64x2_t __tmp = vreinterpretq_p64_p128 (__val); + poly64_t __d0 = vget_high_p64 (__tmp); + poly64_t __d1 = vget_low_p64 (__tmp); + vst1q_p64 ((poly64_t*) __ptr, vcombine_p64 (__d0, __d1)); +#else + vst1q_p64 ((poly64_t*) __ptr, vreinterpretq_p64_p128 (__val)); +#endif } -__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) -vreinterpret_u32_p16 (poly16x4_t __a) +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vaeseq_u8 (uint8x16_t __data, uint8x16_t __key) { - return (uint32x2_t)__builtin_neon_vreinterpretv2siv4hi ((int16x4_t) __a); + return __builtin_arm_crypto_aese (__data, __key); } -__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_u32_s8 (int8x16_t __a) +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vaesdq_u8 (uint8x16_t __data, uint8x16_t __key) { - return (uint32x4_t)__builtin_neon_vreinterpretv4siv16qi (__a); + return __builtin_arm_crypto_aesd (__data, __key); +} + +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vaesmcq_u8 (uint8x16_t __data) +{ + return __builtin_arm_crypto_aesmc (__data); +} + +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vaesimcq_u8 (uint8x16_t __data) +{ + return __builtin_arm_crypto_aesimc (__data); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +vsha1h_u32 (uint32_t __hash_e) +{ + uint32x4_t __t = vdupq_n_u32 (0); + __t = vsetq_lane_u32 (__hash_e, __t, 0); + __t = __builtin_arm_crypto_sha1h (__t); + return vgetq_lane_u32 (__t, 0); } __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_u32_s16 (int16x8_t __a) +vsha1cq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk) { - return (uint32x4_t)__builtin_neon_vreinterpretv4siv8hi (__a); + uint32x4_t __t = vdupq_n_u32 (0); + __t = vsetq_lane_u32 (__hash_e, __t, 0); + return __builtin_arm_crypto_sha1c (__hash_abcd, __t, __wk); } __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_u32_s32 (int32x4_t __a) +vsha1pq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk) { - return (uint32x4_t)__builtin_neon_vreinterpretv4siv4si (__a); + uint32x4_t __t = vdupq_n_u32 (0); + __t = vsetq_lane_u32 (__hash_e, __t, 0); + return __builtin_arm_crypto_sha1p (__hash_abcd, __t, __wk); } __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_u32_s64 (int64x2_t __a) +vsha1mq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk) { - return (uint32x4_t)__builtin_neon_vreinterpretv4siv2di (__a); + uint32x4_t __t = vdupq_n_u32 (0); + __t = vsetq_lane_u32 (__hash_e, __t, 0); + return __builtin_arm_crypto_sha1m (__hash_abcd, __t, __wk); } __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_u32_f32 (float32x4_t __a) +vsha1su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7, uint32x4_t __w8_11) { - return (uint32x4_t)__builtin_neon_vreinterpretv4siv4sf (__a); + return __builtin_arm_crypto_sha1su0 (__w0_3, __w4_7, __w8_11); } __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_u32_u8 (uint8x16_t __a) +vsha1su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w12_15) { - return (uint32x4_t)__builtin_neon_vreinterpretv4siv16qi ((int8x16_t) __a); + return __builtin_arm_crypto_sha1su1 (__tw0_3, __w12_15); } __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_u32_u16 (uint16x8_t __a) +vsha256hq_u32 (uint32x4_t __hash_abcd, uint32x4_t __hash_efgh, uint32x4_t __wk) { - return (uint32x4_t)__builtin_neon_vreinterpretv4siv8hi ((int16x8_t) __a); + return __builtin_arm_crypto_sha256h (__hash_abcd, __hash_efgh, __wk); } __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_u32_u64 (uint64x2_t __a) +vsha256h2q_u32 (uint32x4_t __hash_abcd, uint32x4_t __hash_efgh, uint32x4_t __wk) { - return (uint32x4_t)__builtin_neon_vreinterpretv4siv2di ((int64x2_t) __a); + return __builtin_arm_crypto_sha256h2 (__hash_abcd, __hash_efgh, __wk); } __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_u32_p8 (poly8x16_t __a) +vsha256su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7) { - return (uint32x4_t)__builtin_neon_vreinterpretv4siv16qi ((int8x16_t) __a); + return __builtin_arm_crypto_sha256su0 (__w0_3, __w4_7); } __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) -vreinterpretq_u32_p16 (poly16x8_t __a) +vsha256su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w8_11, uint32x4_t __w12_15) { - return (uint32x4_t)__builtin_neon_vreinterpretv4siv8hi ((int16x8_t) __a); + return __builtin_arm_crypto_sha256su1 (__tw0_3, __w8_11, __w12_15); } +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vmull_p64 (poly64_t __a, poly64_t __b) +{ + return (poly128_t) __builtin_arm_crypto_vmullp64 ((uint64_t) __a, (uint64_t) __b); +} + +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vmull_high_p64 (poly64x2_t __a, poly64x2_t __b) +{ + poly64_t __t1 = vget_high_p64 (__a); + poly64_t __t2 = vget_high_p64 (__b); + + return (poly128_t) __builtin_arm_crypto_vmullp64 ((uint64_t) __t1, (uint64_t) __t2); +} + +#endif #ifdef __cplusplus } #endif diff --git a/gcc/config/arm/arm_neon_builtins.def b/gcc/config/arm/arm_neon_builtins.def index 92f1d7ad1c4..5fa17bd0bf1 100644 --- a/gcc/config/arm/arm_neon_builtins.def +++ b/gcc/config/arm/arm_neon_builtins.def @@ -158,11 +158,12 @@ VAR5 (REINTERP, vreinterpretv4hi, v8qi, v4hi, v2si, v2sf, di), VAR5 (REINTERP, vreinterpretv2si, v8qi, v4hi, v2si, v2sf, di), VAR5 (REINTERP, vreinterpretv2sf, v8qi, v4hi, v2si, v2sf, di), VAR5 (REINTERP, vreinterpretdi, v8qi, v4hi, v2si, v2sf, di), -VAR5 (REINTERP, vreinterpretv16qi, v16qi, v8hi, v4si, v4sf, v2di), -VAR5 (REINTERP, vreinterpretv8hi, v16qi, v8hi, v4si, v4sf, v2di), -VAR5 (REINTERP, vreinterpretv4si, v16qi, v8hi, v4si, v4sf, v2di), -VAR5 (REINTERP, vreinterpretv4sf, v16qi, v8hi, v4si, v4sf, v2di), -VAR5 (REINTERP, vreinterpretv2di, v16qi, v8hi, v4si, v4sf, v2di), +VAR6 (REINTERP, vreinterpretv16qi, v16qi, v8hi, v4si, v4sf, v2di, ti), +VAR6 (REINTERP, vreinterpretv8hi, v16qi, v8hi, v4si, v4sf, v2di, ti), +VAR6 (REINTERP, vreinterpretv4si, v16qi, v8hi, v4si, v4sf, v2di, ti), +VAR6 (REINTERP, vreinterpretv4sf, v16qi, v8hi, v4si, v4sf, v2di, ti), +VAR6 (REINTERP, vreinterpretv2di, v16qi, v8hi, v4si, v4sf, v2di, ti), +VAR6 (REINTERP, vreinterpretti, v16qi, v8hi, v4si, v4sf, v2di, ti), VAR10 (LOAD1, vld1, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), VAR10 (LOAD1LANE, vld1_lane, diff --git a/gcc/config/arm/crypto.def b/gcc/config/arm/crypto.def new file mode 100644 index 00000000000..0b3a395b452 --- /dev/null +++ b/gcc/config/arm/crypto.def @@ -0,0 +1,35 @@ +/* Cryptographic instruction builtin definitions. + Copyright (C) 2013 + Free Software Foundation, Inc. + Contributed by ARM Ltd. + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ + +CRYPTO2 (aesd, AESD, v16uqi, v16uqi, v16uqi) +CRYPTO2 (aese, AESE, v16uqi, v16uqi, v16uqi) +CRYPTO1 (aesimc, AESIMC, v16uqi, v16uqi) +CRYPTO1 (aesmc, AESMC, v16uqi, v16uqi) +CRYPTO1 (sha1h, SHA1H, v4usi, v4usi) +CRYPTO2 (sha1su1, SHA1SU1, v4usi, v4usi, v4usi) +CRYPTO2 (sha256su0, SHA256SU0, v4usi, v4usi, v4usi) +CRYPTO3 (sha1c, SHA1C, v4usi, v4usi, v4usi, v4usi) +CRYPTO3 (sha1m, SHA1M, v4usi, v4usi, v4usi, v4usi) +CRYPTO3 (sha1p, SHA1P, v4usi, v4usi, v4usi, v4usi) +CRYPTO3 (sha1su0, SHA1SU0, v4usi, v4usi, v4usi, v4usi) +CRYPTO3 (sha256h, SHA256H, v4usi, v4usi, v4usi, v4usi) +CRYPTO3 (sha256h2, SHA256H2, v4usi, v4usi, v4usi, v4usi) +CRYPTO3 (sha256su1, SHA256SU1, v4usi, v4usi, v4usi, v4usi) +CRYPTO2 (vmullp64, VMULLP64, uti, udi, udi) diff --git a/gcc/config/arm/crypto.md b/gcc/config/arm/crypto.md new file mode 100644 index 00000000000..e365cf85281 --- /dev/null +++ b/gcc/config/arm/crypto.md @@ -0,0 +1,86 @@ +;; ARMv8-A crypto patterns. +;; Copyright (C) 2013 Free Software Foundation, Inc. +;; Contributed by ARM Ltd. + +;; This file is part of GCC. + +;; GCC is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. + +;; GCC is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; . + +(define_insn "crypto_" + [(set (match_operand: 0 "register_operand" "=w") + (unspec: [(match_operand: 1 + "register_operand" "w")] + CRYPTO_UNARY))] + "TARGET_CRYPTO" + ".\\t%q0, %q1" + [(set_attr "type" "")] +) + +(define_insn "crypto_" + [(set (match_operand: 0 "register_operand" "=w") + (unspec: [(match_operand: 1 "register_operand" "0") + (match_operand: 2 "register_operand" "w")] + CRYPTO_BINARY))] + "TARGET_CRYPTO" + ".\\t%q0, %q2" + [(set_attr "type" "")] +) + +(define_insn "crypto_" + [(set (match_operand: 0 "register_operand" "=w") + (unspec: [(match_operand: 1 "register_operand" "0") + (match_operand: 2 "register_operand" "w") + (match_operand: 3 "register_operand" "w")] + CRYPTO_TERNARY))] + "TARGET_CRYPTO" + ".\\t%q0, %q2, %q3" + [(set_attr "type" "")] +) + +(define_insn "crypto_sha1h" + [(set (match_operand:V4SI 0 "register_operand" "=w") + (zero_extend:V4SI + (unspec:SI [(vec_select:SI + (match_operand:V4SI 1 "register_operand" "w") + (parallel [(match_operand:SI 2 "immediate_operand" "i")]))] + UNSPEC_SHA1H)))] + "TARGET_CRYPTO" + "sha1h.32\\t%q0, %q1" + [(set_attr "type" "crypto_sha1_fast")] +) + +(define_insn "crypto_vmullp64" + [(set (match_operand:TI 0 "register_operand" "=w") + (unspec:TI [(match_operand:DI 1 "register_operand" "w") + (match_operand:DI 2 "register_operand" "w")] + UNSPEC_VMULLP64))] + "TARGET_CRYPTO" + "vmull.p64\\t%q0, %P1, %P2" + [(set_attr "type" "neon_mul_d_long")] +) + +(define_insn "crypto_" + [(set (match_operand:V4SI 0 "register_operand" "=w") + (unspec: + [(match_operand: 1 "register_operand" "0") + (vec_select:SI + (match_operand: 2 "register_operand" "w") + (parallel [(match_operand:SI 4 "immediate_operand" "i")])) + (match_operand: 3 "register_operand" "w")] + CRYPTO_SELECTING))] + "TARGET_CRYPTO" + ".\\t%q0, %q2, %q3" + [(set_attr "type" "")] +) diff --git a/gcc/config/arm/iterators.md b/gcc/config/arm/iterators.md index ff5462c4b35..299c9594532 100644 --- a/gcc/config/arm/iterators.md +++ b/gcc/config/arm/iterators.md @@ -204,6 +204,17 @@ (define_int_iterator CRC [UNSPEC_CRC32B UNSPEC_CRC32H UNSPEC_CRC32W UNSPEC_CRC32CB UNSPEC_CRC32CH UNSPEC_CRC32CW]) +(define_int_iterator CRYPTO_UNARY [UNSPEC_AESMC UNSPEC_AESIMC]) + +(define_int_iterator CRYPTO_BINARY [UNSPEC_AESD UNSPEC_AESE + UNSPEC_SHA1SU1 UNSPEC_SHA256SU0]) + +(define_int_iterator CRYPTO_TERNARY [UNSPEC_SHA1SU0 UNSPEC_SHA256H + UNSPEC_SHA256H2 UNSPEC_SHA256SU1]) + +(define_int_iterator CRYPTO_SELECTING [UNSPEC_SHA1C UNSPEC_SHA1M + UNSPEC_SHA1P]) + ;;---------------------------------------------------------------------------- ;; Mode attributes ;;---------------------------------------------------------------------------- @@ -530,6 +541,40 @@ (UNSPEC_CRC32W "SI") (UNSPEC_CRC32CB "QI") (UNSPEC_CRC32CH "HI") (UNSPEC_CRC32CW "SI")]) +(define_int_attr crypto_pattern [(UNSPEC_SHA1H "sha1h") (UNSPEC_AESMC "aesmc") + (UNSPEC_AESIMC "aesimc") (UNSPEC_AESD "aesd") + (UNSPEC_AESE "aese") (UNSPEC_SHA1SU1 "sha1su1") + (UNSPEC_SHA256SU0 "sha256su0") (UNSPEC_SHA1C "sha1c") + (UNSPEC_SHA1M "sha1m") (UNSPEC_SHA1P "sha1p") + (UNSPEC_SHA1SU0 "sha1su0") (UNSPEC_SHA256H "sha256h") + (UNSPEC_SHA256H2 "sha256h2") + (UNSPEC_SHA256SU1 "sha256su1")]) + +(define_int_attr crypto_type + [(UNSPEC_AESE "crypto_aes") (UNSPEC_AESD "crypto_aes") + (UNSPEC_AESMC "crypto_aes") (UNSPEC_AESIMC "crypto_aes") + (UNSPEC_SHA1C "crypto_sha1_slow") (UNSPEC_SHA1P "crypto_sha1_slow") + (UNSPEC_SHA1M "crypto_sha1_slow") (UNSPEC_SHA1SU1 "crypto_sha1_fast") + (UNSPEC_SHA1SU0 "crypto_sha1_xor") (UNSPEC_SHA256H "crypto_sha256_slow") + (UNSPEC_SHA256H2 "crypto_sha256_slow") (UNSPEC_SHA256SU0 "crypto_sha256_fast") + (UNSPEC_SHA256SU1 "crypto_sha256_slow")]) + +(define_int_attr crypto_size_sfx [(UNSPEC_SHA1H "32") (UNSPEC_AESMC "8") + (UNSPEC_AESIMC "8") (UNSPEC_AESD "8") + (UNSPEC_AESE "8") (UNSPEC_SHA1SU1 "32") + (UNSPEC_SHA256SU0 "32") (UNSPEC_SHA1C "32") + (UNSPEC_SHA1M "32") (UNSPEC_SHA1P "32") + (UNSPEC_SHA1SU0 "32") (UNSPEC_SHA256H "32") + (UNSPEC_SHA256H2 "32") (UNSPEC_SHA256SU1 "32")]) + +(define_int_attr crypto_mode [(UNSPEC_SHA1H "V4SI") (UNSPEC_AESMC "V16QI") + (UNSPEC_AESIMC "V16QI") (UNSPEC_AESD "V16QI") + (UNSPEC_AESE "V16QI") (UNSPEC_SHA1SU1 "V4SI") + (UNSPEC_SHA256SU0 "V4SI") (UNSPEC_SHA1C "V4SI") + (UNSPEC_SHA1M "V4SI") (UNSPEC_SHA1P "V4SI") + (UNSPEC_SHA1SU0 "V4SI") (UNSPEC_SHA256H "V4SI") + (UNSPEC_SHA256H2 "V4SI") (UNSPEC_SHA256SU1 "V4SI")]) + ;; Both kinds of return insn. (define_code_iterator returns [return simple_return]) (define_code_attr return_str [(return "") (simple_return "simple_")]) diff --git a/gcc/config/arm/neon-gen.ml b/gcc/config/arm/neon-gen.ml index 948b162ccfa..e5da658687f 100644 --- a/gcc/config/arm/neon-gen.ml +++ b/gcc/config/arm/neon-gen.ml @@ -114,6 +114,7 @@ let rec signed_ctype = function | T_uint32x4 -> T_int32x4 | T_uint64x1 -> T_int64x1 | T_uint64x2 -> T_int64x2 + | T_poly64x2 -> T_int64x2 (* Cast to types defined by mode in arm.c, not random types pulled in from the header in use. This fixes incompatible pointer errors when compiling with C++. *) @@ -125,6 +126,8 @@ let rec signed_ctype = function | T_float32 -> T_floatSF | T_poly8 -> T_intQI | T_poly16 -> T_intHI + | T_poly64 -> T_intDI + | T_poly128 -> T_intTI | T_arrayof (n, elt) -> T_arrayof (n, signed_ctype elt) | T_ptrto elt -> T_ptrto (signed_ctype elt) | T_const elt -> T_const (signed_ctype elt) @@ -362,80 +365,96 @@ let print_ops ops = abase : "ARM" base name for the type (i.e. int in int8x8_t). esize : element size. enum : element count. + alevel: architecture level at which available. *) +type fpulevel = CRYPTO | ALL + let deftypes () = let typeinfo = [ (* Doubleword vector types. *) - "__builtin_neon_qi", "int", 8, 8; - "__builtin_neon_hi", "int", 16, 4; - "__builtin_neon_si", "int", 32, 2; - "__builtin_neon_di", "int", 64, 1; - "__builtin_neon_hf", "float", 16, 4; - "__builtin_neon_sf", "float", 32, 2; - "__builtin_neon_poly8", "poly", 8, 8; - "__builtin_neon_poly16", "poly", 16, 4; - "__builtin_neon_uqi", "uint", 8, 8; - "__builtin_neon_uhi", "uint", 16, 4; - "__builtin_neon_usi", "uint", 32, 2; - "__builtin_neon_udi", "uint", 64, 1; + "__builtin_neon_qi", "int", 8, 8, ALL; + "__builtin_neon_hi", "int", 16, 4, ALL; + "__builtin_neon_si", "int", 32, 2, ALL; + "__builtin_neon_di", "int", 64, 1, ALL; + "__builtin_neon_hf", "float", 16, 4, ALL; + "__builtin_neon_sf", "float", 32, 2, ALL; + "__builtin_neon_poly8", "poly", 8, 8, ALL; + "__builtin_neon_poly16", "poly", 16, 4, ALL; + "__builtin_neon_poly64", "poly", 64, 1, CRYPTO; + "__builtin_neon_uqi", "uint", 8, 8, ALL; + "__builtin_neon_uhi", "uint", 16, 4, ALL; + "__builtin_neon_usi", "uint", 32, 2, ALL; + "__builtin_neon_udi", "uint", 64, 1, ALL; (* Quadword vector types. *) - "__builtin_neon_qi", "int", 8, 16; - "__builtin_neon_hi", "int", 16, 8; - "__builtin_neon_si", "int", 32, 4; - "__builtin_neon_di", "int", 64, 2; - "__builtin_neon_sf", "float", 32, 4; - "__builtin_neon_poly8", "poly", 8, 16; - "__builtin_neon_poly16", "poly", 16, 8; - "__builtin_neon_uqi", "uint", 8, 16; - "__builtin_neon_uhi", "uint", 16, 8; - "__builtin_neon_usi", "uint", 32, 4; - "__builtin_neon_udi", "uint", 64, 2 + "__builtin_neon_qi", "int", 8, 16, ALL; + "__builtin_neon_hi", "int", 16, 8, ALL; + "__builtin_neon_si", "int", 32, 4, ALL; + "__builtin_neon_di", "int", 64, 2, ALL; + "__builtin_neon_sf", "float", 32, 4, ALL; + "__builtin_neon_poly8", "poly", 8, 16, ALL; + "__builtin_neon_poly16", "poly", 16, 8, ALL; + "__builtin_neon_poly64", "poly", 64, 2, CRYPTO; + "__builtin_neon_uqi", "uint", 8, 16, ALL; + "__builtin_neon_uhi", "uint", 16, 8, ALL; + "__builtin_neon_usi", "uint", 32, 4, ALL; + "__builtin_neon_udi", "uint", 64, 2, ALL ] in List.iter - (fun (cbase, abase, esize, enum) -> + (fun (cbase, abase, esize, enum, fpulevel) -> let attr = match enum with 1 -> "" | _ -> Printf.sprintf "\t__attribute__ ((__vector_size__ (%d)))" (esize * enum / 8) in - Format.printf "typedef %s %s%dx%d_t%s;@\n" cbase abase esize enum attr) + if fpulevel == CRYPTO then + Format.printf "#ifdef __ARM_FEATURE_CRYPTO\n"; + Format.printf "typedef %s %s%dx%d_t%s;@\n" cbase abase esize enum attr; + if fpulevel == CRYPTO then + Format.printf "#endif\n";) typeinfo; Format.print_newline (); (* Extra types not in . *) Format.printf "typedef float float32_t;\n"; Format.printf "typedef __builtin_neon_poly8 poly8_t;\n"; - Format.printf "typedef __builtin_neon_poly16 poly16_t;\n" + Format.printf "typedef __builtin_neon_poly16 poly16_t;\n"; + Format.printf "#ifdef __ARM_FEATURE_CRYPTO\n"; + Format.printf "typedef __builtin_neon_poly64 poly64_t;\n"; + Format.printf "typedef __builtin_neon_poly128 poly128_t;\n"; + Format.printf "#endif\n" -(* Output structs containing arrays, for load & store instructions etc. *) +(* Output structs containing arrays, for load & store instructions etc. + poly128_t is deliberately not included here because it has no array types + defined for it. *) let arrtypes () = let typeinfo = [ - "int", 8; "int", 16; - "int", 32; "int", 64; - "uint", 8; "uint", 16; - "uint", 32; "uint", 64; - "float", 32; "poly", 8; - "poly", 16 + "int", 8, ALL; "int", 16, ALL; + "int", 32, ALL; "int", 64, ALL; + "uint", 8, ALL; "uint", 16, ALL; + "uint", 32, ALL; "uint", 64, ALL; + "float", 32, ALL; "poly", 8, ALL; + "poly", 16, ALL; "poly", 64, CRYPTO ] in - let writestruct elname elsize regsize arrsize = + let writestruct elname elsize regsize arrsize fpulevel = let elnum = regsize / elsize in let structname = Printf.sprintf "%s%dx%dx%d_t" elname elsize elnum arrsize in let sfmt = start_function () in - Format.printf "typedef struct %s" structname; + Format.printf "%stypedef struct %s" + (if fpulevel == CRYPTO then "#ifdef __ARM_FEATURE_CRYPTO\n" else "") structname; open_braceblock sfmt; Format.printf "%s%dx%d_t val[%d];" elname elsize elnum arrsize; close_braceblock sfmt; - Format.printf " %s;" structname; + Format.printf " %s;%s" structname (if fpulevel == CRYPTO then "\n#endif\n" else ""); end_function sfmt; in for n = 2 to 4 do List.iter - (fun (elname, elsize) -> - writestruct elname elsize 64 n; - writestruct elname elsize 128 n) + (fun (elname, elsize, alevel) -> + writestruct elname elsize 64 n alevel; + writestruct elname elsize 128 n alevel) typeinfo done @@ -491,6 +510,8 @@ let _ = print_ops ops; Format.print_newline (); print_ops reinterp; + print_ops reinterpq; + Format.printf "%s" crypto_intrinsics; print_lines [ "#ifdef __cplusplus"; "}"; diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index b2ac45e65f9..5e9b4410662 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -4259,9 +4259,19 @@ DONE; }) +(define_expand "neon_vreinterpretti" + [(match_operand:TI 0 "s_register_operand" "") + (match_operand:VQXMOV 1 "s_register_operand" "")] + "TARGET_NEON" +{ + neon_reinterpret (operands[0], operands[1]); + DONE; +}) + + (define_expand "neon_vreinterpretv16qi" [(match_operand:V16QI 0 "s_register_operand" "") - (match_operand:VQX 1 "s_register_operand" "")] + (match_operand:VQXMOV 1 "s_register_operand" "")] "TARGET_NEON" { neon_reinterpret (operands[0], operands[1]); @@ -4270,7 +4280,7 @@ (define_expand "neon_vreinterpretv8hi" [(match_operand:V8HI 0 "s_register_operand" "") - (match_operand:VQX 1 "s_register_operand" "")] + (match_operand:VQXMOV 1 "s_register_operand" "")] "TARGET_NEON" { neon_reinterpret (operands[0], operands[1]); @@ -4279,7 +4289,7 @@ (define_expand "neon_vreinterpretv4si" [(match_operand:V4SI 0 "s_register_operand" "") - (match_operand:VQX 1 "s_register_operand" "")] + (match_operand:VQXMOV 1 "s_register_operand" "")] "TARGET_NEON" { neon_reinterpret (operands[0], operands[1]); @@ -4288,7 +4298,7 @@ (define_expand "neon_vreinterpretv4sf" [(match_operand:V4SF 0 "s_register_operand" "") - (match_operand:VQX 1 "s_register_operand" "")] + (match_operand:VQXMOV 1 "s_register_operand" "")] "TARGET_NEON" { neon_reinterpret (operands[0], operands[1]); @@ -4297,7 +4307,7 @@ (define_expand "neon_vreinterpretv2di" [(match_operand:V2DI 0 "s_register_operand" "") - (match_operand:VQX 1 "s_register_operand" "")] + (match_operand:VQXMOV 1 "s_register_operand" "")] "TARGET_NEON" { neon_reinterpret (operands[0], operands[1]); diff --git a/gcc/config/arm/neon.ml b/gcc/config/arm/neon.ml index ca9a4c06aa6..968c17121e7 100644 --- a/gcc/config/arm/neon.ml +++ b/gcc/config/arm/neon.ml @@ -22,7 +22,7 @@ (* Shorthand types for vector elements. *) type elts = S8 | S16 | S32 | S64 | F16 | F32 | U8 | U16 | U32 | U64 | P8 | P16 - | I8 | I16 | I32 | I64 | B8 | B16 | B32 | B64 | Conv of elts * elts + | P64 | P128 | I8 | I16 | I32 | I64 | B8 | B16 | B32 | B64 | Conv of elts * elts | Cast of elts * elts | NoElts type eltclass = Signed | Unsigned | Float | Poly | Int | Bits @@ -47,13 +47,15 @@ type vectype = T_int8x8 | T_int8x16 | T_uint8 | T_uint16 | T_uint32 | T_uint64 | T_poly8 | T_poly16 + | T_poly64 | T_poly64x1 + | T_poly64x2 | T_poly128 | T_float16 | T_float32 | T_arrayof of int * vectype | T_ptrto of vectype | T_const of vectype | T_void | T_intQI | T_intHI | T_intSI - | T_intDI | T_floatHF - | T_floatSF + | T_intDI | T_intTI + | T_floatHF | T_floatSF (* The meanings of the following are: TImode : "Tetra", two registers (four words). @@ -96,7 +98,7 @@ type arity = Arity0 of vectype | Arity4 of vectype * vectype * vectype * vectype * vectype type vecmode = V8QI | V4HI | V4HF |V2SI | V2SF | DI - | V16QI | V8HI | V4SI | V4SF | V2DI + | V16QI | V8HI | V4SI | V4SF | V2DI | TI | QI | HI | SI | SF type opcode = @@ -299,7 +301,8 @@ let rec elt_width = function S8 | U8 | P8 | I8 | B8 -> 8 | S16 | U16 | P16 | I16 | B16 | F16 -> 16 | S32 | F32 | U32 | I32 | B32 -> 32 - | S64 | U64 | I64 | B64 -> 64 + | S64 | U64 | P64 | I64 | B64 -> 64 + | P128 -> 128 | Conv (a, b) -> let wa = elt_width a and wb = elt_width b in if wa = wb then wa else raise (MixedMode (a, b)) @@ -309,7 +312,7 @@ let rec elt_width = function let rec elt_class = function S8 | S16 | S32 | S64 -> Signed | U8 | U16 | U32 | U64 -> Unsigned - | P8 | P16 -> Poly + | P8 | P16 | P64 | P128 -> Poly | F16 | F32 -> Float | I8 | I16 | I32 | I64 -> Int | B8 | B16 | B32 | B64 -> Bits @@ -330,6 +333,8 @@ let elt_of_class_width c w = | Unsigned, 64 -> U64 | Poly, 8 -> P8 | Poly, 16 -> P16 + | Poly, 64 -> P64 + | Poly, 128 -> P128 | Int, 8 -> I8 | Int, 16 -> I16 | Int, 32 -> I32 @@ -402,7 +407,7 @@ let rec mode_of_elt ?argpos elt shape = Float | ConvClass(_, Float) -> true | _ -> false in let idx = match elt_width elt with - 8 -> 0 | 16 -> 1 | 32 -> 2 | 64 -> 3 + 8 -> 0 | 16 -> 1 | 32 -> 2 | 64 -> 3 | 128 -> 4 | _ -> failwith "Bad element width" in match shape with All (_, Dreg) | By_scalar Dreg | Pair_result Dreg | Unary_scalar Dreg @@ -413,7 +418,7 @@ let rec mode_of_elt ?argpos elt shape = [| V8QI; V4HI; V2SI; DI |].(idx) | All (_, Qreg) | By_scalar Qreg | Pair_result Qreg | Unary_scalar Qreg | Binary_imm Qreg | Long_noreg Qreg | Wide_noreg Qreg -> - [| V16QI; V8HI; if flt then V4SF else V4SI; V2DI |].(idx) + [| V16QI; V8HI; if flt then V4SF else V4SI; V2DI; TI|].(idx) | All (_, (Corereg | PtrTo _ | CstPtrTo _)) -> [| QI; HI; if flt then SF else SI; DI |].(idx) | Long | Wide | Wide_lane | Wide_scalar @@ -474,6 +479,8 @@ let type_for_elt shape elt no = | U16 -> T_uint16x4 | U32 -> T_uint32x2 | U64 -> T_uint64x1 + | P64 -> T_poly64x1 + | P128 -> T_poly128 | F16 -> T_float16x4 | F32 -> T_float32x2 | P8 -> T_poly8x8 @@ -493,6 +500,8 @@ let type_for_elt shape elt no = | F32 -> T_float32x4 | P8 -> T_poly8x16 | P16 -> T_poly16x8 + | P64 -> T_poly64x2 + | P128 -> T_poly128 | _ -> failwith "Bad elt type for Qreg" end | Corereg -> @@ -507,6 +516,8 @@ let type_for_elt shape elt no = | U64 -> T_uint64 | P8 -> T_poly8 | P16 -> T_poly16 + | P64 -> T_poly64 + | P128 -> T_poly128 | F32 -> T_float32 | _ -> failwith "Bad elt type for Corereg" end @@ -527,10 +538,10 @@ let type_for_elt shape elt no = let vectype_size = function T_int8x8 | T_int16x4 | T_int32x2 | T_int64x1 | T_uint8x8 | T_uint16x4 | T_uint32x2 | T_uint64x1 - | T_float32x2 | T_poly8x8 | T_poly16x4 | T_float16x4 -> 64 + | T_float32x2 | T_poly8x8 | T_poly64x1 | T_poly16x4 | T_float16x4 -> 64 | T_int8x16 | T_int16x8 | T_int32x4 | T_int64x2 | T_uint8x16 | T_uint16x8 | T_uint32x4 | T_uint64x2 - | T_float32x4 | T_poly8x16 | T_poly16x8 -> 128 + | T_float32x4 | T_poly8x16 | T_poly64x2 | T_poly16x8 -> 128 | _ -> raise Not_found let inttype_for_array num elttype = @@ -1041,14 +1052,22 @@ let ops = "vRsraQ_n", shift_right_acc, su_8_64; (* Vector shift right and insert. *) + Vsri, [Requires_feature "CRYPTO"], Use_operands [| Dreg; Dreg; Immed |], "vsri_n", shift_insert, + [P64]; Vsri, [], Use_operands [| Dreg; Dreg; Immed |], "vsri_n", shift_insert, P8 :: P16 :: su_8_64; + Vsri, [Requires_feature "CRYPTO"], Use_operands [| Qreg; Qreg; Immed |], "vsriQ_n", shift_insert, + [P64]; Vsri, [], Use_operands [| Qreg; Qreg; Immed |], "vsriQ_n", shift_insert, P8 :: P16 :: su_8_64; (* Vector shift left and insert. *) + Vsli, [Requires_feature "CRYPTO"], Use_operands [| Dreg; Dreg; Immed |], "vsli_n", shift_insert, + [P64]; Vsli, [], Use_operands [| Dreg; Dreg; Immed |], "vsli_n", shift_insert, P8 :: P16 :: su_8_64; + Vsli, [Requires_feature "CRYPTO"], Use_operands [| Qreg; Qreg; Immed |], "vsliQ_n", shift_insert, + [P64]; Vsli, [], Use_operands [| Qreg; Qreg; Immed |], "vsliQ_n", shift_insert, P8 :: P16 :: su_8_64; @@ -1134,6 +1153,11 @@ let ops = set_lane_notype, [S64; U64]; (* Create vector from literal bit pattern. *) + Vcreate, + [Requires_feature "CRYPTO"; No_op], (* Not really, but it can yield various things that are too + hard for the test generator at this time. *) + Use_operands [| Dreg; Corereg |], "vcreate", create_vector, + [P64]; Vcreate, [No_op], (* Not really, but it can yield various things that are too hard for the test generator at this time. *) @@ -1147,12 +1171,25 @@ let ops = Element_of_dreg ] |]]], Use_operands [| Dreg; Corereg |], "vdup_n", bits_1, pf_su_8_32; + Vdup_n, + [No_op; Requires_feature "CRYPTO"; + Instruction_name ["vmov"]; + Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]], + Use_operands [| Dreg; Corereg |], "vdup_n", notype_1, + [P64]; Vdup_n, [No_op; Instruction_name ["vmov"]; Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]], Use_operands [| Dreg; Corereg |], "vdup_n", notype_1, [S64; U64]; + Vdup_n, + [No_op; Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| Qreg; + Alternatives [ Corereg; + Element_of_dreg ] |]]], + Use_operands [| Qreg; Corereg |], "vdupQ_n", bits_1, + [P64]; Vdup_n, [Disassembles_as [Use_operands [| Qreg; Alternatives [ Corereg; @@ -1205,22 +1242,34 @@ let ops = Vdup_lane, [Disassembles_as [Use_operands [| Dreg; Element_of_dreg |]]], Unary_scalar Dreg, "vdup_lane", bits_2, pf_su_8_32; + Vdup_lane, + [No_op; Requires_feature "CRYPTO"; Const_valuator (fun _ -> 0)], + Unary_scalar Dreg, "vdup_lane", bits_2, [P64]; Vdup_lane, [No_op; Const_valuator (fun _ -> 0)], Unary_scalar Dreg, "vdup_lane", bits_2, [S64; U64]; Vdup_lane, [Disassembles_as [Use_operands [| Qreg; Element_of_dreg |]]], Unary_scalar Qreg, "vdupQ_lane", bits_2, pf_su_8_32; + Vdup_lane, + [No_op; Requires_feature "CRYPTO"; Const_valuator (fun _ -> 0)], + Unary_scalar Qreg, "vdupQ_lane", bits_2, [P64]; Vdup_lane, [No_op; Const_valuator (fun _ -> 0)], Unary_scalar Qreg, "vdupQ_lane", bits_2, [S64; U64]; (* Combining vectors. *) + Vcombine, [Requires_feature "CRYPTO"; No_op], + Use_operands [| Qreg; Dreg; Dreg |], "vcombine", notype_2, + [P64]; Vcombine, [No_op], Use_operands [| Qreg; Dreg; Dreg |], "vcombine", notype_2, pf_su_8_64; (* Splitting vectors. *) + Vget_high, [Requires_feature "CRYPTO"; No_op], + Use_operands [| Dreg; Qreg |], "vget_high", + notype_1, [P64]; Vget_high, [No_op], Use_operands [| Dreg; Qreg |], "vget_high", notype_1, pf_su_8_64; @@ -1229,7 +1278,10 @@ let ops = Fixed_vector_reg], Use_operands [| Dreg; Qreg |], "vget_low", notype_1, pf_su_8_32; - Vget_low, [No_op], + Vget_low, [Requires_feature "CRYPTO"; No_op], + Use_operands [| Dreg; Qreg |], "vget_low", + notype_1, [P64]; + Vget_low, [No_op], Use_operands [| Dreg; Qreg |], "vget_low", notype_1, [S64; U64]; @@ -1412,9 +1464,15 @@ let ops = [S16; S32]; (* Vector extract. *) + Vext, [Requires_feature "CRYPTO"; Const_valuator (fun _ -> 0)], + Use_operands [| Dreg; Dreg; Dreg; Immed |], "vext", extend, + [P64]; Vext, [Const_valuator (fun _ -> 0)], Use_operands [| Dreg; Dreg; Dreg; Immed |], "vext", extend, pf_su_8_64; + Vext, [Requires_feature "CRYPTO"; Const_valuator (fun _ -> 0)], + Use_operands [| Qreg; Qreg; Qreg; Immed |], "vextQ", extend, + [P64]; Vext, [Const_valuator (fun _ -> 0)], Use_operands [| Qreg; Qreg; Qreg; Immed |], "vextQ", extend, pf_su_8_64; @@ -1434,11 +1492,21 @@ let ops = [P8; S8; U8]; (* Bit selection. *) + Vbsl, + [Requires_feature "CRYPTO"; Instruction_name ["vbsl"; "vbit"; "vbif"]; + Disassembles_as [Use_operands [| Dreg; Dreg; Dreg |]]], + Use_operands [| Dreg; Dreg; Dreg; Dreg |], "vbsl", bit_select, + [P64]; Vbsl, [Instruction_name ["vbsl"; "vbit"; "vbif"]; Disassembles_as [Use_operands [| Dreg; Dreg; Dreg |]]], Use_operands [| Dreg; Dreg; Dreg; Dreg |], "vbsl", bit_select, pf_su_8_64; + Vbsl, + [Requires_feature "CRYPTO"; Instruction_name ["vbsl"; "vbit"; "vbif"]; + Disassembles_as [Use_operands [| Qreg; Qreg; Qreg |]]], + Use_operands [| Qreg; Qreg; Qreg; Qreg |], "vbslQ", bit_select, + [P64]; Vbsl, [Instruction_name ["vbsl"; "vbit"; "vbif"]; Disassembles_as [Use_operands [| Qreg; Qreg; Qreg |]]], @@ -1460,11 +1528,22 @@ let ops = pf_su_8_32; (* Element/structure loads. VLD1 variants. *) + Vldx 1, + [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (1, Dreg); + CstPtrTo Corereg |]]], + Use_operands [| Dreg; CstPtrTo Corereg |], "vld1", bits_1, + [P64]; Vldx 1, [Disassembles_as [Use_operands [| VecArray (1, Dreg); CstPtrTo Corereg |]]], Use_operands [| Dreg; CstPtrTo Corereg |], "vld1", bits_1, pf_su_8_64; + Vldx 1, [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (2, Dreg); + CstPtrTo Corereg |]]], + Use_operands [| Qreg; CstPtrTo Corereg |], "vld1Q", bits_1, + [P64]; Vldx 1, [Disassembles_as [Use_operands [| VecArray (2, Dreg); CstPtrTo Corereg |]]], Use_operands [| Qreg; CstPtrTo Corereg |], "vld1Q", bits_1, @@ -1475,6 +1554,13 @@ let ops = CstPtrTo Corereg |]]], Use_operands [| Dreg; CstPtrTo Corereg; Dreg; Immed |], "vld1_lane", bits_3, pf_su_8_32; + Vldx_lane 1, + [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (1, Dreg); + CstPtrTo Corereg |]]; + Const_valuator (fun _ -> 0)], + Use_operands [| Dreg; CstPtrTo Corereg; Dreg; Immed |], + "vld1_lane", bits_3, [P64]; Vldx_lane 1, [Disassembles_as [Use_operands [| VecArray (1, Dreg); CstPtrTo Corereg |]]; @@ -1486,6 +1572,12 @@ let ops = CstPtrTo Corereg |]]], Use_operands [| Qreg; CstPtrTo Corereg; Qreg; Immed |], "vld1Q_lane", bits_3, pf_su_8_32; + Vldx_lane 1, + [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (1, Dreg); + CstPtrTo Corereg |]]], + Use_operands [| Qreg; CstPtrTo Corereg; Qreg; Immed |], + "vld1Q_lane", bits_3, [P64]; Vldx_lane 1, [Disassembles_as [Use_operands [| VecArray (1, Dreg); CstPtrTo Corereg |]]], @@ -1497,6 +1589,12 @@ let ops = CstPtrTo Corereg |]]], Use_operands [| Dreg; CstPtrTo Corereg |], "vld1_dup", bits_1, pf_su_8_32; + Vldx_dup 1, + [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (1, Dreg); + CstPtrTo Corereg |]]], + Use_operands [| Dreg; CstPtrTo Corereg |], "vld1_dup", + bits_1, [P64]; Vldx_dup 1, [Disassembles_as [Use_operands [| VecArray (1, Dreg); CstPtrTo Corereg |]]], @@ -1509,6 +1607,12 @@ let ops = bits_1, pf_su_8_32; (* Treated identically to vld1_dup above as we now do a single load followed by a duplicate. *) + Vldx_dup 1, + [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (1, Dreg); + CstPtrTo Corereg |]]], + Use_operands [| Qreg; CstPtrTo Corereg |], "vld1Q_dup", + bits_1, [P64]; Vldx_dup 1, [Disassembles_as [Use_operands [| VecArray (1, Dreg); CstPtrTo Corereg |]]], @@ -1516,10 +1620,20 @@ let ops = bits_1, [S64; U64]; (* VST1 variants. *) + Vstx 1, [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (1, Dreg); + PtrTo Corereg |]]], + Use_operands [| PtrTo Corereg; Dreg |], "vst1", + store_1, [P64]; Vstx 1, [Disassembles_as [Use_operands [| VecArray (1, Dreg); PtrTo Corereg |]]], Use_operands [| PtrTo Corereg; Dreg |], "vst1", store_1, pf_su_8_64; + Vstx 1, [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (2, Dreg); + PtrTo Corereg |]]], + Use_operands [| PtrTo Corereg; Qreg |], "vst1Q", + store_1, [P64]; Vstx 1, [Disassembles_as [Use_operands [| VecArray (2, Dreg); PtrTo Corereg |]]], Use_operands [| PtrTo Corereg; Qreg |], "vst1Q", @@ -1530,6 +1644,13 @@ let ops = CstPtrTo Corereg |]]], Use_operands [| PtrTo Corereg; Dreg; Immed |], "vst1_lane", store_3, pf_su_8_32; + Vstx_lane 1, + [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (1, Dreg); + CstPtrTo Corereg |]]; + Const_valuator (fun _ -> 0)], + Use_operands [| PtrTo Corereg; Dreg; Immed |], + "vst1_lane", store_3, [P64]; Vstx_lane 1, [Disassembles_as [Use_operands [| VecArray (1, Dreg); CstPtrTo Corereg |]]; @@ -1541,6 +1662,12 @@ let ops = CstPtrTo Corereg |]]], Use_operands [| PtrTo Corereg; Qreg; Immed |], "vst1Q_lane", store_3, pf_su_8_32; + Vstx_lane 1, + [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (1, Dreg); + CstPtrTo Corereg |]]], + Use_operands [| PtrTo Corereg; Qreg; Immed |], + "vst1Q_lane", store_3, [P64]; Vstx_lane 1, [Disassembles_as [Use_operands [| VecArray (1, Dreg); CstPtrTo Corereg |]]], @@ -1550,6 +1677,9 @@ let ops = (* VLD2 variants. *) Vldx 2, [], Use_operands [| VecArray (2, Dreg); CstPtrTo Corereg |], "vld2", bits_1, pf_su_8_32; + Vldx 2, [Requires_feature "CRYPTO"; Instruction_name ["vld1"]], + Use_operands [| VecArray (2, Dreg); CstPtrTo Corereg |], + "vld2", bits_1, [P64]; Vldx 2, [Instruction_name ["vld1"]], Use_operands [| VecArray (2, Dreg); CstPtrTo Corereg |], "vld2", bits_1, [S64; U64]; @@ -1580,6 +1710,12 @@ let ops = [| VecArray (2, All_elements_of_dreg); CstPtrTo Corereg |]]], Use_operands [| VecArray (2, Dreg); CstPtrTo Corereg |], "vld2_dup", bits_1, pf_su_8_32; + Vldx_dup 2, + [Requires_feature "CRYPTO"; + Instruction_name ["vld1"]; Disassembles_as [Use_operands + [| VecArray (2, Dreg); CstPtrTo Corereg |]]], + Use_operands [| VecArray (2, Dreg); CstPtrTo Corereg |], + "vld2_dup", bits_1, [P64]; Vldx_dup 2, [Instruction_name ["vld1"]; Disassembles_as [Use_operands [| VecArray (2, Dreg); CstPtrTo Corereg |]]], @@ -1591,6 +1727,12 @@ let ops = PtrTo Corereg |]]], Use_operands [| PtrTo Corereg; VecArray (2, Dreg) |], "vst2", store_1, pf_su_8_32; + Vstx 2, [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (2, Dreg); + PtrTo Corereg |]]; + Instruction_name ["vst1"]], + Use_operands [| PtrTo Corereg; VecArray (2, Dreg) |], "vst2", + store_1, [P64]; Vstx 2, [Disassembles_as [Use_operands [| VecArray (2, Dreg); PtrTo Corereg |]]; Instruction_name ["vst1"]], @@ -1619,6 +1761,9 @@ let ops = (* VLD3 variants. *) Vldx 3, [], Use_operands [| VecArray (3, Dreg); CstPtrTo Corereg |], "vld3", bits_1, pf_su_8_32; + Vldx 3, [Requires_feature "CRYPTO"; Instruction_name ["vld1"]], + Use_operands [| VecArray (3, Dreg); CstPtrTo Corereg |], + "vld3", bits_1, [P64]; Vldx 3, [Instruction_name ["vld1"]], Use_operands [| VecArray (3, Dreg); CstPtrTo Corereg |], "vld3", bits_1, [S64; U64]; @@ -1649,6 +1794,12 @@ let ops = [| VecArray (3, All_elements_of_dreg); CstPtrTo Corereg |]]], Use_operands [| VecArray (3, Dreg); CstPtrTo Corereg |], "vld3_dup", bits_1, pf_su_8_32; + Vldx_dup 3, + [Requires_feature "CRYPTO"; + Instruction_name ["vld1"]; Disassembles_as [Use_operands + [| VecArray (3, Dreg); CstPtrTo Corereg |]]], + Use_operands [| VecArray (3, Dreg); CstPtrTo Corereg |], + "vld3_dup", bits_1, [P64]; Vldx_dup 3, [Instruction_name ["vld1"]; Disassembles_as [Use_operands [| VecArray (3, Dreg); CstPtrTo Corereg |]]], @@ -1660,6 +1811,12 @@ let ops = PtrTo Corereg |]]], Use_operands [| PtrTo Corereg; VecArray (3, Dreg) |], "vst3", store_1, pf_su_8_32; + Vstx 3, [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (4, Dreg); + PtrTo Corereg |]]; + Instruction_name ["vst1"]], + Use_operands [| PtrTo Corereg; VecArray (3, Dreg) |], "vst3", + store_1, [P64]; Vstx 3, [Disassembles_as [Use_operands [| VecArray (4, Dreg); PtrTo Corereg |]]; Instruction_name ["vst1"]], @@ -1688,6 +1845,9 @@ let ops = (* VLD4/VST4 variants. *) Vldx 4, [], Use_operands [| VecArray (4, Dreg); CstPtrTo Corereg |], "vld4", bits_1, pf_su_8_32; + Vldx 4, [Requires_feature "CRYPTO"; Instruction_name ["vld1"]], + Use_operands [| VecArray (4, Dreg); CstPtrTo Corereg |], + "vld4", bits_1, [P64]; Vldx 4, [Instruction_name ["vld1"]], Use_operands [| VecArray (4, Dreg); CstPtrTo Corereg |], "vld4", bits_1, [S64; U64]; @@ -1718,6 +1878,12 @@ let ops = [| VecArray (4, All_elements_of_dreg); CstPtrTo Corereg |]]], Use_operands [| VecArray (4, Dreg); CstPtrTo Corereg |], "vld4_dup", bits_1, pf_su_8_32; + Vldx_dup 4, + [Requires_feature "CRYPTO"; + Instruction_name ["vld1"]; Disassembles_as [Use_operands + [| VecArray (4, Dreg); CstPtrTo Corereg |]]], + Use_operands [| VecArray (4, Dreg); CstPtrTo Corereg |], + "vld4_dup", bits_1, [P64]; Vldx_dup 4, [Instruction_name ["vld1"]; Disassembles_as [Use_operands [| VecArray (4, Dreg); CstPtrTo Corereg |]]], @@ -1728,6 +1894,12 @@ let ops = PtrTo Corereg |]]], Use_operands [| PtrTo Corereg; VecArray (4, Dreg) |], "vst4", store_1, pf_su_8_32; + Vstx 4, [Requires_feature "CRYPTO"; + Disassembles_as [Use_operands [| VecArray (4, Dreg); + PtrTo Corereg |]]; + Instruction_name ["vst1"]], + Use_operands [| PtrTo Corereg; VecArray (4, Dreg) |], "vst4", + store_1, [P64]; Vstx 4, [Disassembles_as [Use_operands [| VecArray (4, Dreg); PtrTo Corereg |]]; Instruction_name ["vst1"]], @@ -1779,26 +1951,32 @@ let ops = Vorn, [], All (3, Qreg), "vornQ", notype_2, su_8_64; ] +let type_in_crypto_only t + = (t == P64) or (t == P128) + +let cross_product s1 s2 + = List.filter (fun (e, e') -> e <> e') + (List.concat (List.map (fun e1 -> List.map (fun e2 -> (e1,e2)) s1) s2)) + let reinterp = - let elems = P8 :: P16 :: F32 :: su_8_64 in - List.fold_right - (fun convto acc -> - let types = List.fold_right - (fun convfrom acc -> - if convfrom <> convto then - Cast (convto, convfrom) :: acc - else - acc) - elems - [] - in - let dconv = Vreinterp, [No_op], Use_operands [| Dreg; Dreg |], - "vreinterpret", conv_1, types - and qconv = Vreinterp, [No_op], Use_operands [| Qreg; Qreg |], - "vreinterpretQ", conv_1, types in - dconv :: qconv :: acc) - elems - [] + let elems = P8 :: P16 :: F32 :: P64 :: su_8_64 in + let casts = cross_product elems elems in + List.map + (fun (convto, convfrom) -> + Vreinterp, (if (type_in_crypto_only convto) or (type_in_crypto_only convfrom) + then [Requires_feature "CRYPTO"] else []) @ [No_op], Use_operands [| Dreg; Dreg |], + "vreinterpret", conv_1, [Cast (convto, convfrom)]) + casts + +let reinterpq = + let elems = P8 :: P16 :: F32 :: P64 :: P128 :: su_8_64 in + let casts = cross_product elems elems in + List.map + (fun (convto, convfrom) -> + Vreinterp, (if (type_in_crypto_only convto) or (type_in_crypto_only convfrom) + then [Requires_feature "CRYPTO"] else []) @ [No_op], Use_operands [| Qreg; Qreg |], + "vreinterpretQ", conv_1, [Cast (convto, convfrom)]) + casts (* Output routines. *) @@ -1808,6 +1986,7 @@ let rec string_of_elt = function | I8 -> "i8" | I16 -> "i16" | I32 -> "i32" | I64 -> "i64" | B8 -> "8" | B16 -> "16" | B32 -> "32" | B64 -> "64" | F16 -> "f16" | F32 -> "f32" | P8 -> "p8" | P16 -> "p16" + | P64 -> "p64" | P128 -> "p128" | Conv (a, b) | Cast (a, b) -> string_of_elt a ^ "_" ^ string_of_elt b | NoElts -> failwith "No elts" @@ -1851,6 +2030,10 @@ let string_of_vectype vt = | T_uint64 -> affix "uint64" | T_poly8 -> affix "poly8" | T_poly16 -> affix "poly16" + | T_poly64 -> affix "poly64" + | T_poly64x1 -> affix "poly64x1" + | T_poly64x2 -> affix "poly64x2" + | T_poly128 -> affix "poly128" | T_float16 -> affix "float16" | T_float32 -> affix "float32" | T_immediate _ -> "const int" @@ -1859,6 +2042,7 @@ let string_of_vectype vt = | T_intHI -> "__builtin_neon_hi" | T_intSI -> "__builtin_neon_si" | T_intDI -> "__builtin_neon_di" + | T_intTI -> "__builtin_neon_ti" | T_floatHF -> "__builtin_neon_hf" | T_floatSF -> "__builtin_neon_sf" | T_arrayof (num, base) -> @@ -1884,7 +2068,7 @@ let string_of_mode = function V8QI -> "v8qi" | V4HI -> "v4hi" | V4HF -> "v4hf" | V2SI -> "v2si" | V2SF -> "v2sf" | DI -> "di" | V16QI -> "v16qi" | V8HI -> "v8hi" | V4SI -> "v4si" | V4SF -> "v4sf" | V2DI -> "v2di" | QI -> "qi" - | HI -> "hi" | SI -> "si" | SF -> "sf" + | HI -> "hi" | SI -> "si" | SF -> "sf" | TI -> "ti" (* Use uppercase chars for letters which form part of the intrinsic name, but should be omitted from the builtin name (the info is passed in an extra @@ -1991,3 +2175,146 @@ let analyze_all_shapes features shape f = | _ -> assert false with Not_found -> [f shape] +(* The crypto intrinsics have unconventional shapes and are not that + numerous to be worth the trouble of encoding here. We implement them + explicitly here. *) +let crypto_intrinsics = +" +#ifdef __ARM_FEATURE_CRYPTO + +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vldrq_p128 (poly128_t const * __ptr) +{ +#ifdef __ARM_BIG_ENDIAN + poly64_t* __ptmp = (poly64_t*) __ptr; + poly64_t __d0 = vld1_p64 (__ptmp); + poly64_t __d1 = vld1_p64 (__ptmp + 1); + return vreinterpretq_p128_p64 (vcombine_p64 (__d1, __d0)); +#else + return vreinterpretq_p128_p64 (vld1q_p64 ((poly64_t*) __ptr)); +#endif +} + +__extension__ static __inline void __attribute__ ((__always_inline__)) +vstrq_p128 (poly128_t * __ptr, poly128_t __val) +{ +#ifdef __ARM_BIG_ENDIAN + poly64x2_t __tmp = vreinterpretq_p64_p128 (__val); + poly64_t __d0 = vget_high_p64 (__tmp); + poly64_t __d1 = vget_low_p64 (__tmp); + vst1q_p64 ((poly64_t*) __ptr, vcombine_p64 (__d0, __d1)); +#else + vst1q_p64 ((poly64_t*) __ptr, vreinterpretq_p64_p128 (__val)); +#endif +} + +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vaeseq_u8 (uint8x16_t __data, uint8x16_t __key) +{ + return __builtin_arm_crypto_aese (__data, __key); +} + +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vaesdq_u8 (uint8x16_t __data, uint8x16_t __key) +{ + return __builtin_arm_crypto_aesd (__data, __key); +} + +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vaesmcq_u8 (uint8x16_t __data) +{ + return __builtin_arm_crypto_aesmc (__data); +} + +__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +vaesimcq_u8 (uint8x16_t __data) +{ + return __builtin_arm_crypto_aesimc (__data); +} + +__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +vsha1h_u32 (uint32_t __hash_e) +{ + uint32x4_t __t = vdupq_n_u32 (0); + __t = vsetq_lane_u32 (__hash_e, __t, 0); + __t = __builtin_arm_crypto_sha1h (__t); + return vgetq_lane_u32 (__t, 0); +} + +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vsha1cq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk) +{ + uint32x4_t __t = vdupq_n_u32 (0); + __t = vsetq_lane_u32 (__hash_e, __t, 0); + return __builtin_arm_crypto_sha1c (__hash_abcd, __t, __wk); +} + +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vsha1pq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk) +{ + uint32x4_t __t = vdupq_n_u32 (0); + __t = vsetq_lane_u32 (__hash_e, __t, 0); + return __builtin_arm_crypto_sha1p (__hash_abcd, __t, __wk); +} + +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vsha1mq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk) +{ + uint32x4_t __t = vdupq_n_u32 (0); + __t = vsetq_lane_u32 (__hash_e, __t, 0); + return __builtin_arm_crypto_sha1m (__hash_abcd, __t, __wk); +} + +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vsha1su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7, uint32x4_t __w8_11) +{ + return __builtin_arm_crypto_sha1su0 (__w0_3, __w4_7, __w8_11); +} + +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vsha1su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w12_15) +{ + return __builtin_arm_crypto_sha1su1 (__tw0_3, __w12_15); +} + +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vsha256hq_u32 (uint32x4_t __hash_abcd, uint32x4_t __hash_efgh, uint32x4_t __wk) +{ + return __builtin_arm_crypto_sha256h (__hash_abcd, __hash_efgh, __wk); +} + +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vsha256h2q_u32 (uint32x4_t __hash_abcd, uint32x4_t __hash_efgh, uint32x4_t __wk) +{ + return __builtin_arm_crypto_sha256h2 (__hash_abcd, __hash_efgh, __wk); +} + +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vsha256su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7) +{ + return __builtin_arm_crypto_sha256su0 (__w0_3, __w4_7); +} + +__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +vsha256su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w8_11, uint32x4_t __w12_15) +{ + return __builtin_arm_crypto_sha256su1 (__tw0_3, __w8_11, __w12_15); +} + +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vmull_p64 (poly64_t __a, poly64_t __b) +{ + return (poly128_t) __builtin_arm_crypto_vmullp64 ((uint64_t) __a, (uint64_t) __b); +} + +__extension__ static __inline poly128_t __attribute__ ((__always_inline__)) +vmull_high_p64 (poly64x2_t __a, poly64x2_t __b) +{ + poly64_t __t1 = vget_high_p64 (__a); + poly64_t __t2 = vget_high_p64 (__b); + + return (poly128_t) __builtin_arm_crypto_vmullp64 ((uint64_t) __t1, (uint64_t) __t2); +} + +#endif +" diff --git a/gcc/config/arm/unspecs.md b/gcc/config/arm/unspecs.md index f8faba3ae12..af4b832e88b 100644 --- a/gcc/config/arm/unspecs.md +++ b/gcc/config/arm/unspecs.md @@ -155,6 +155,21 @@ UNSPEC_CRC32CB UNSPEC_CRC32CH UNSPEC_CRC32CW + UNSPEC_AESD + UNSPEC_AESE + UNSPEC_AESIMC + UNSPEC_AESMC + UNSPEC_SHA1C + UNSPEC_SHA1M + UNSPEC_SHA1P + UNSPEC_SHA1H + UNSPEC_SHA1SU0 + UNSPEC_SHA1SU1 + UNSPEC_SHA256H + UNSPEC_SHA256H2 + UNSPEC_SHA256SU0 + UNSPEC_SHA256SU1 + UNSPEC_VMULLP64 UNSPEC_LOAD_COUNT UNSPEC_VABD UNSPEC_VABDL -- cgit v1.2.1 From 39b22e1be650d6bb14f09d33b1626b41706a5302 Mon Sep 17 00:00:00 2001 From: ktkachov Date: Thu, 19 Dec 2013 18:29:09 +0000 Subject: [gcc/] 2013-12-19 Kyrylo Tkachov * config/arm/neon-testgen.ml (effective_target): Handle "CRYPTO". [gcc/testsuite] 2013-12-04 Kyrylo Tkachov * lib/target-supports.exp (check_effective_target_arm_crypto_ok): New procedure. (add_options_for_arm_crypto): Likewise. * gcc.target/arm/crypto-vaesdq_u8.c: New test. * gcc.target/arm/crypto-vaeseq_u8.c: Likewise. * gcc.target/arm/crypto-vaesimcq_u8.c: Likewise. * gcc.target/arm/crypto-vaesmcq_u8.c: Likewise. * gcc.target/arm/crypto-vldrq_p128.c: Likewise. * gcc.target/arm/crypto-vmull_high_p64.c: Likewise. * gcc.target/arm/crypto-vmullp64.c: Likewise. * gcc.target/arm/crypto-vsha1cq_u32.c: Likewise. * gcc.target/arm/crypto-vsha1h_u32.c: Likewise. * gcc.target/arm/crypto-vsha1mq_u32.c: Likewise. * gcc.target/arm/crypto-vsha1pq_u32.c: Likewise. * gcc.target/arm/crypto-vsha1su0q_u32.c: Likewise. * gcc.target/arm/crypto-vsha1su1q_u32.c: Likewise. * gcc.target/arm/crypto-vsha256h2q_u32.c: Likewise. * gcc.target/arm/crypto-vsha256hq_u32.c: Likewise. * gcc.target/arm/crypto-vsha256su0q_u32.c: Likewise. * gcc.target/arm/crypto-vsha256su1q_u32.c: Likewise. * gcc.target/arm/crypto-vstrq_p128.c: Likewise. * gcc.target/arm/neon/vbslQp64: Generate. * gcc.target/arm/neon/vbslp64: Likewise. * gcc.target/arm/neon/vcombinep64: Likewise. * gcc.target/arm/neon/vcreatep64: Likewise. * gcc.target/arm/neon/vdupQ_lanep64: Likewise. * gcc.target/arm/neon/vdupQ_np64: Likewise. * gcc.target/arm/neon/vdup_lanep64: Likewise. * gcc.target/arm/neon/vdup_np64: Likewise. * gcc.target/arm/neon/vextQp64: Likewise. * gcc.target/arm/neon/vextp64: Likewise. * gcc.target/arm/neon/vget_highp64: Likewise. * gcc.target/arm/neon/vget_lowp64: Likewise. * gcc.target/arm/neon/vld1Q_dupp64: Likewise. * gcc.target/arm/neon/vld1Q_lanep64: Likewise. * gcc.target/arm/neon/vld1Qp64: Likewise. * gcc.target/arm/neon/vld1_dupp64: Likewise. * gcc.target/arm/neon/vld1_lanep64: Likewise. * gcc.target/arm/neon/vld1p64: Likewise. * gcc.target/arm/neon/vld2_dupp64: Likewise. * gcc.target/arm/neon/vld2p64: Likewise. * gcc.target/arm/neon/vld3_dupp64: Likewise. * gcc.target/arm/neon/vld3p64: Likewise. * gcc.target/arm/neon/vld4_dupp64: Likewise. * gcc.target/arm/neon/vld4p64: Likewise. * gcc.target/arm/neon/vreinterpretQf32_p128: Likewise. * gcc.target/arm/neon/vreinterpretQf32_p64: Likewise. * gcc.target/arm/neon/vreinterpretQp128_f32: Likewise. * gcc.target/arm/neon/vreinterpretQp128_p16: Likewise. * gcc.target/arm/neon/vreinterpretQp128_p64: Likewise. * gcc.target/arm/neon/vreinterpretQp128_p8: Likewise. * gcc.target/arm/neon/vreinterpretQp128_s16: Likewise. * gcc.target/arm/neon/vreinterpretQp128_s32: Likewise. * gcc.target/arm/neon/vreinterpretQp128_s64: Likewise. * gcc.target/arm/neon/vreinterpretQp128_s8: Likewise. * gcc.target/arm/neon/vreinterpretQp128_u16: Likewise. * gcc.target/arm/neon/vreinterpretQp128_u32: Likewise. * gcc.target/arm/neon/vreinterpretQp128_u64: Likewise. * gcc.target/arm/neon/vreinterpretQp128_u8: Likewise. * gcc.target/arm/neon/vreinterpretQp16_p128: Likewise. * gcc.target/arm/neon/vreinterpretQp16_p64: Likewise. * gcc.target/arm/neon/vreinterpretQp64_f32: Likewise. * gcc.target/arm/neon/vreinterpretQp64_p128: Likewise. * gcc.target/arm/neon/vreinterpretQp64_p16: Likewise. * gcc.target/arm/neon/vreinterpretQp64_p8: Likewise. * gcc.target/arm/neon/vreinterpretQp64_s16: Likewise. * gcc.target/arm/neon/vreinterpretQp64_s32: Likewise. * gcc.target/arm/neon/vreinterpretQp64_s64: Likewise. * gcc.target/arm/neon/vreinterpretQp64_s8: Likewise. * gcc.target/arm/neon/vreinterpretQp64_u16: Likewise. * gcc.target/arm/neon/vreinterpretQp64_u32: Likewise. * gcc.target/arm/neon/vreinterpretQp64_u64: Likewise. * gcc.target/arm/neon/vreinterpretQp64_u8: Likewise. * gcc.target/arm/neon/vreinterpretQp8_p128: Likewise. * gcc.target/arm/neon/vreinterpretQp8_p64: Likewise. * gcc.target/arm/neon/vreinterpretQs16_p128: Likewise. * gcc.target/arm/neon/vreinterpretQs16_p64: Likewise. * gcc.target/arm/neon/vreinterpretQs32_p128: Likewise. * gcc.target/arm/neon/vreinterpretQs32_p64: Likewise. * gcc.target/arm/neon/vreinterpretQs64_p128: Likewise. * gcc.target/arm/neon/vreinterpretQs64_p64: Likewise. * gcc.target/arm/neon/vreinterpretQs8_p128: Likewise. * gcc.target/arm/neon/vreinterpretQs8_p64: Likewise. * gcc.target/arm/neon/vreinterpretQu16_p128: Likewise. * gcc.target/arm/neon/vreinterpretQu16_p64: Likewise. * gcc.target/arm/neon/vreinterpretQu32_p128: Likewise. * gcc.target/arm/neon/vreinterpretQu32_p64: Likewise. * gcc.target/arm/neon/vreinterpretQu64_p128: Likewise. * gcc.target/arm/neon/vreinterpretQu64_p64: Likewise. * gcc.target/arm/neon/vreinterpretQu8_p128: Likewise. * gcc.target/arm/neon/vreinterpretQu8_p64: Likewise. * gcc.target/arm/neon/vreinterpretf32_p64: Likewise. * gcc.target/arm/neon/vreinterpretp16_p64: Likewise. * gcc.target/arm/neon/vreinterpretp64_f32: Likewise. * gcc.target/arm/neon/vreinterpretp64_p16: Likewise. * gcc.target/arm/neon/vreinterpretp64_p8: Likewise. * gcc.target/arm/neon/vreinterpretp64_s16: Likewise. * gcc.target/arm/neon/vreinterpretp64_s32: Likewise. * gcc.target/arm/neon/vreinterpretp64_s64: Likewise. * gcc.target/arm/neon/vreinterpretp64_s8: Likewise. * gcc.target/arm/neon/vreinterpretp64_u16: Likewise. * gcc.target/arm/neon/vreinterpretp64_u32: Likewise. * gcc.target/arm/neon/vreinterpretp64_u64: Likewise. * gcc.target/arm/neon/vreinterpretp64_u8: Likewise. * gcc.target/arm/neon/vreinterpretp8_p64: Likewise. * gcc.target/arm/neon/vreinterprets16_p64: Likewise. * gcc.target/arm/neon/vreinterprets32_p64: Likewise. * gcc.target/arm/neon/vreinterprets64_p64: Likewise. * gcc.target/arm/neon/vreinterprets8_p64: Likewise. * gcc.target/arm/neon/vreinterpretu16_p64: Likewise. * gcc.target/arm/neon/vreinterpretu32_p64: Likewise. * gcc.target/arm/neon/vreinterpretu64_p64: Likewise. * gcc.target/arm/neon/vreinterpretu8_p64: Likewise. * gcc.target/arm/neon/vsliQ_np64: Likewise. * gcc.target/arm/neon/vsli_np64: Likewise. * gcc.target/arm/neon/vsriQ_np64: Likewise. * gcc.target/arm/neon/vsri_np64: Likewise. * gcc.target/arm/neon/vst1Q_lanep64: Likewise. * gcc.target/arm/neon/vst1Qp64: Likewise. * gcc.target/arm/neon/vst1_lanep64: Likewise. * gcc.target/arm/neon/vst1p64: Likewise. * gcc.target/arm/neon/vst2p64: Likewise. * gcc.target/arm/neon/vst3p64: Likewise. * gcc.target/arm/neon/vst4p64: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206131 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 + gcc/config/arm/neon-testgen.ml | 3 +- gcc/testsuite/ChangeLog | 127 +++++++++++++++++++++ gcc/testsuite/gcc.target/arm/crypto-vaesdq_u8.c | 22 ++++ gcc/testsuite/gcc.target/arm/crypto-vaeseq_u8.c | 22 ++++ gcc/testsuite/gcc.target/arm/crypto-vaesimcq_u8.c | 20 ++++ gcc/testsuite/gcc.target/arm/crypto-vaesmcq_u8.c | 20 ++++ gcc/testsuite/gcc.target/arm/crypto-vldrq_p128.c | 13 +++ .../gcc.target/arm/crypto-vmull_high_p64.c | 15 +++ gcc/testsuite/gcc.target/arm/crypto-vmullp64.c | 15 +++ gcc/testsuite/gcc.target/arm/crypto-vsha1cq_u32.c | 18 +++ gcc/testsuite/gcc.target/arm/crypto-vsha1h_u32.c | 14 +++ gcc/testsuite/gcc.target/arm/crypto-vsha1mq_u32.c | 18 +++ gcc/testsuite/gcc.target/arm/crypto-vsha1pq_u32.c | 18 +++ .../gcc.target/arm/crypto-vsha1su0q_u32.c | 18 +++ .../gcc.target/arm/crypto-vsha1su1q_u32.c | 17 +++ .../gcc.target/arm/crypto-vsha256h2q_u32.c | 18 +++ .../gcc.target/arm/crypto-vsha256hq_u32.c | 18 +++ .../gcc.target/arm/crypto-vsha256su0q_u32.c | 17 +++ .../gcc.target/arm/crypto-vsha256su1q_u32.c | 18 +++ gcc/testsuite/gcc.target/arm/crypto-vstrq_p128.c | 13 +++ gcc/testsuite/gcc.target/arm/neon/vbslQp64.c | 22 ++++ gcc/testsuite/gcc.target/arm/neon/vbslp64.c | 22 ++++ gcc/testsuite/gcc.target/arm/neon/vcombinep64.c | 20 ++++ gcc/testsuite/gcc.target/arm/neon/vcreatep64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vdupQ_np64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vdup_lanep64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vdup_np64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vextQp64.c | 21 ++++ gcc/testsuite/gcc.target/arm/neon/vextp64.c | 21 ++++ gcc/testsuite/gcc.target/arm/neon/vget_highp64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vget_lowp64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep64.c | 20 ++++ gcc/testsuite/gcc.target/arm/neon/vld1Qp64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vld1_dupp64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vld1_lanep64.c | 20 ++++ gcc/testsuite/gcc.target/arm/neon/vld1p64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vld2_dupp64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vld2p64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vld3_dupp64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vld3p64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vld4_dupp64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vld4p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQf32_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQf32_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_f32.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_p16.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_p8.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_s16.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_s32.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_s64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_s8.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_u16.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_u32.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_u64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp128_u8.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp16_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp16_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_f32.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_p16.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_p8.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_s16.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_s32.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_s64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_s8.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_u16.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_u32.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_u64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp64_u8.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp8_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQp8_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQs16_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQs16_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQs32_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQs32_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQs64_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQs64_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQs8_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQs8_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQu16_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQu16_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQu32_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQu32_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQu64_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQu64_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQu8_p128.c | 19 +++ .../gcc.target/arm/neon/vreinterpretQu8_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretf32_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp16_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp64_f32.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp64_p16.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp64_p8.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp64_s16.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp64_s32.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp64_s64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp64_s8.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp64_u16.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp64_u32.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp64_u64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp64_u8.c | 19 +++ .../gcc.target/arm/neon/vreinterpretp8_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterprets16_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterprets32_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterprets64_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterprets8_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretu16_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretu32_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretu64_p64.c | 19 +++ .../gcc.target/arm/neon/vreinterpretu8_p64.c | 19 +++ gcc/testsuite/gcc.target/arm/neon/vsliQ_np64.c | 21 ++++ gcc/testsuite/gcc.target/arm/neon/vsli_np64.c | 21 ++++ gcc/testsuite/gcc.target/arm/neon/vsriQ_np64.c | 21 ++++ gcc/testsuite/gcc.target/arm/neon/vsri_np64.c | 21 ++++ gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep64.c | 20 ++++ gcc/testsuite/gcc.target/arm/neon/vst1Qp64.c | 20 ++++ gcc/testsuite/gcc.target/arm/neon/vst1_lanep64.c | 20 ++++ gcc/testsuite/gcc.target/arm/neon/vst1p64.c | 20 ++++ gcc/testsuite/gcc.target/arm/neon/vst2p64.c | 20 ++++ gcc/testsuite/gcc.target/arm/neon/vst3p64.c | 20 ++++ gcc/testsuite/gcc.target/arm/neon/vst4p64.c | 20 ++++ gcc/testsuite/lib/target-supports.exp | 24 ++++ 125 files changed, 2456 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vaesdq_u8.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vaeseq_u8.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vaesimcq_u8.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vaesmcq_u8.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vldrq_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vmull_high_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vmullp64.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vsha1cq_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vsha1h_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vsha1mq_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vsha1pq_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vsha1su0q_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vsha1su1q_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vsha256h2q_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vsha256hq_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vsha256su0q_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vsha256su1q_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/crypto-vstrq_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vbslQp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vbslp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vcombinep64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vcreatep64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vdupQ_np64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vdup_lanep64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vdup_np64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vextQp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vextp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vget_highp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vget_lowp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld1Qp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld1_dupp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld1_lanep64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld1p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld2_dupp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld2p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld3_dupp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld3p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld4_dupp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vld4p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_f32.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p16.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p8.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s16.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s32.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s8.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u16.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u8.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_f32.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p16.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p8.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s16.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s32.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s8.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u16.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u8.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p128.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_f32.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p16.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p8.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s16.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s32.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s8.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u16.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u32.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u8.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vsliQ_np64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vsli_np64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vsriQ_np64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vsri_np64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vst1Qp64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vst1_lanep64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vst1p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vst2p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vst3p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon/vst4p64.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3a19c2ec45c..6522c600218 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2013-12-19 Kyrylo Tkachov + + * config/arm/neon-testgen.ml (effective_target): Handle "CRYPTO". + 2013-12-19 Kyrylo Tkachov * config/arm/arm.c (enum arm_builtins): Add crypto builtins. diff --git a/gcc/config/arm/neon-testgen.ml b/gcc/config/arm/neon-testgen.ml index 543318bfcc6..e1e4e250787 100644 --- a/gcc/config/arm/neon-testgen.ml +++ b/gcc/config/arm/neon-testgen.ml @@ -167,6 +167,7 @@ let effective_target features = | _ -> false) features with Requires_feature "FMA" -> "arm_neonv2" + | Requires_feature "CRYPTO" -> "arm_crypto" | Requires_arch 8 -> "arm_v8_neon" | Requires_FP_bit 1 -> "arm_neon_fp16" | _ -> assert false @@ -300,5 +301,5 @@ let test_intrinsic_group dir (opcode, features, shape, name, munge, types) = (* Program entry point. *) let _ = let directory = if Array.length Sys.argv <> 1 then Sys.argv.(1) else "." in - List.iter (test_intrinsic_group directory) (reinterp @ ops) + List.iter (test_intrinsic_group directory) (reinterp @ reinterpq @ ops) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 318550a8f67..7e40136359c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,130 @@ +2013-12-04 Kyrylo Tkachov + + * lib/target-supports.exp (check_effective_target_arm_crypto_ok): + New procedure. + (add_options_for_arm_crypto): Likewise. + * gcc.target/arm/crypto-vaesdq_u8.c: New test. + * gcc.target/arm/crypto-vaeseq_u8.c: Likewise. + * gcc.target/arm/crypto-vaesimcq_u8.c: Likewise. + * gcc.target/arm/crypto-vaesmcq_u8.c: Likewise. + * gcc.target/arm/crypto-vldrq_p128.c: Likewise. + * gcc.target/arm/crypto-vmull_high_p64.c: Likewise. + * gcc.target/arm/crypto-vmullp64.c: Likewise. + * gcc.target/arm/crypto-vsha1cq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1h_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1mq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1pq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1su0q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1su1q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256h2q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256hq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256su0q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256su1q_u32.c: Likewise. + * gcc.target/arm/crypto-vstrq_p128.c: Likewise. + * gcc.target/arm/neon/vbslQp64: Generate. + * gcc.target/arm/neon/vbslp64: Likewise. + * gcc.target/arm/neon/vcombinep64: Likewise. + * gcc.target/arm/neon/vcreatep64: Likewise. + * gcc.target/arm/neon/vdupQ_lanep64: Likewise. + * gcc.target/arm/neon/vdupQ_np64: Likewise. + * gcc.target/arm/neon/vdup_lanep64: Likewise. + * gcc.target/arm/neon/vdup_np64: Likewise. + * gcc.target/arm/neon/vextQp64: Likewise. + * gcc.target/arm/neon/vextp64: Likewise. + * gcc.target/arm/neon/vget_highp64: Likewise. + * gcc.target/arm/neon/vget_lowp64: Likewise. + * gcc.target/arm/neon/vld1Q_dupp64: Likewise. + * gcc.target/arm/neon/vld1Q_lanep64: Likewise. + * gcc.target/arm/neon/vld1Qp64: Likewise. + * gcc.target/arm/neon/vld1_dupp64: Likewise. + * gcc.target/arm/neon/vld1_lanep64: Likewise. + * gcc.target/arm/neon/vld1p64: Likewise. + * gcc.target/arm/neon/vld2_dupp64: Likewise. + * gcc.target/arm/neon/vld2p64: Likewise. + * gcc.target/arm/neon/vld3_dupp64: Likewise. + * gcc.target/arm/neon/vld3p64: Likewise. + * gcc.target/arm/neon/vld4_dupp64: Likewise. + * gcc.target/arm/neon/vld4p64: Likewise. + * gcc.target/arm/neon/vreinterpretQf32_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQf32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_f32: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_p16: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_p8: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s16: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s32: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s8: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u16: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u32: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u8: Likewise. + * gcc.target/arm/neon/vreinterpretQp16_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQp16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_f32: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_p16: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_p8: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s16: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s32: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s64: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s8: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u16: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u32: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u64: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u8: Likewise. + * gcc.target/arm/neon/vreinterpretQp8_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQp8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs16_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs32_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs64_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs64_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs8_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu16_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu32_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu64_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu64_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu8_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretf32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretp16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretp64_f32: Likewise. + * gcc.target/arm/neon/vreinterpretp64_p16: Likewise. + * gcc.target/arm/neon/vreinterpretp64_p8: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s16: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s32: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s64: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s8: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u16: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u32: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u64: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u8: Likewise. + * gcc.target/arm/neon/vreinterpretp8_p64: Likewise. + * gcc.target/arm/neon/vreinterprets16_p64: Likewise. + * gcc.target/arm/neon/vreinterprets32_p64: Likewise. + * gcc.target/arm/neon/vreinterprets64_p64: Likewise. + * gcc.target/arm/neon/vreinterprets8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu64_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu8_p64: Likewise. + * gcc.target/arm/neon/vsliQ_np64: Likewise. + * gcc.target/arm/neon/vsli_np64: Likewise. + * gcc.target/arm/neon/vsriQ_np64: Likewise. + * gcc.target/arm/neon/vsri_np64: Likewise. + * gcc.target/arm/neon/vst1Q_lanep64: Likewise. + * gcc.target/arm/neon/vst1Qp64: Likewise. + * gcc.target/arm/neon/vst1_lanep64: Likewise. + * gcc.target/arm/neon/vst1p64: Likewise. + * gcc.target/arm/neon/vst2p64: Likewise. + * gcc.target/arm/neon/vst3p64: Likewise. + * gcc.target/arm/neon/vst4p64: Likewise. + 2013-12-19 Kyrylo Tkachov * lib/target-supports.exp (add_options_for_arm_crc): New procedure. diff --git a/gcc/testsuite/gcc.target/arm/crypto-vaesdq_u8.c b/gcc/testsuite/gcc.target/arm/crypto-vaesdq_u8.c new file mode 100644 index 00000000000..e0b25b93cf8 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vaesdq_u8.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint8x16_t a, b, c; + int i = 0; + + for (i = 0; i < 16; ++i) + { + a[i] = i; + b[i] = 15 - i; + } + c = vaesdq_u8 (a, b); + return c[0]; +} + +/* { dg-final { scan-assembler "aesd.8\tq\[0-9\]+, q\[0-9\]+" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vaeseq_u8.c b/gcc/testsuite/gcc.target/arm/crypto-vaeseq_u8.c new file mode 100644 index 00000000000..f47864662eb --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vaeseq_u8.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint8x16_t a, b, c; + int i = 0; + + for (i = 0; i < 16; ++i) + { + a[i] = i; + b[i] = 15 - i; + } + c = vaeseq_u8 (a, b); + return c[0]; +} + +/* { dg-final { scan-assembler "aese.8\tq\[0-9\]+, q\[0-9\]+" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vaesimcq_u8.c b/gcc/testsuite/gcc.target/arm/crypto-vaesimcq_u8.c new file mode 100644 index 00000000000..fbbfda609fc --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vaesimcq_u8.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint8x16_t a, b; + int i = 0; + + for (i = 0; i < 16; ++i) + a[i] = i; + + b = vaesimcq_u8 (a); + return b[0]; +} + +/* { dg-final { scan-assembler "aesimc.8\tq\[0-9\]+, q\[0-9\]+" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vaesmcq_u8.c b/gcc/testsuite/gcc.target/arm/crypto-vaesmcq_u8.c new file mode 100644 index 00000000000..cae8bd096b8 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vaesmcq_u8.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint8x16_t a, b; + int i = 0; + + for (i = 0; i < 16; ++i) + a[i] = i; + + b = vaesmcq_u8 (a); + return b[0]; +} + +/* { dg-final { scan-assembler "aesmc.8\tq\[0-9\]+, q\[0-9\]+" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vldrq_p128.c b/gcc/testsuite/gcc.target/arm/crypto-vldrq_p128.c new file mode 100644 index 00000000000..96c0e9a755a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vldrq_p128.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +poly128_t +foo (poly128_t* ptr) +{ + return vldrq_p128 (ptr); +} + +/* { dg-final { scan-assembler "vld1.64\t{d\[0-9\]+-d\[0-9\]+}.*" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vmull_high_p64.c b/gcc/testsuite/gcc.target/arm/crypto-vmull_high_p64.c new file mode 100644 index 00000000000..1290f31a6a7 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vmull_high_p64.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +poly128_t +foo (void) +{ + poly64x2_t a = { 0xdeadbeef, 0xadabcaca }; + poly64x2_t b = { 0xdcdcdcdc, 0xbdbdbdbd }; + return vmull_high_p64 (a, b); +} + +/* { dg-final { scan-assembler "vmull.p64.*" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vmullp64.c b/gcc/testsuite/gcc.target/arm/crypto-vmullp64.c new file mode 100644 index 00000000000..b788dca52ff --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vmullp64.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +poly128_t +foo (void) +{ + poly64_t a = 0xdeadbeef; + poly64_t b = 0xadadadad; + return vmull_p64 (a, b); +} + +/* { dg-final { scan-assembler "vmull.p64.*" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vsha1cq_u32.c b/gcc/testsuite/gcc.target/arm/crypto-vsha1cq_u32.c new file mode 100644 index 00000000000..4dc9dee6617 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vsha1cq_u32.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint32_t hash = 0xdeadbeef; + uint32x4_t a = {0, 1, 2, 3}; + uint32x4_t b = {3, 2, 1, 0}; + + uint32x4_t res = vsha1cq_u32 (a, hash, b); + return res[0]; +} + +/* { dg-final { scan-assembler "sha1c.32\tq\[0-9\]+, q\[0-9\]+" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vsha1h_u32.c b/gcc/testsuite/gcc.target/arm/crypto-vsha1h_u32.c new file mode 100644 index 00000000000..dee27748524 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vsha1h_u32.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint32_t val = 0xdeadbeef; + return vsha1h_u32 (val); +} + +/* { dg-final { scan-assembler "sha1h.32\tq\[0-9\]+, q\[0-9\]+" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vsha1mq_u32.c b/gcc/testsuite/gcc.target/arm/crypto-vsha1mq_u32.c new file mode 100644 index 00000000000..672b93a9747 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vsha1mq_u32.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint32_t hash = 0xdeadbeef; + uint32x4_t a = {0, 1, 2, 3}; + uint32x4_t b = {3, 2, 1, 0}; + + uint32x4_t res = vsha1mq_u32 (a, hash, b); + return res[0]; +} + +/* { dg-final { scan-assembler "sha1m.32\tq\[0-9\]+, q\[0-9\]+" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vsha1pq_u32.c b/gcc/testsuite/gcc.target/arm/crypto-vsha1pq_u32.c new file mode 100644 index 00000000000..ff508e0dc7f --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vsha1pq_u32.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint32_t hash = 0xdeadbeef; + uint32x4_t a = {0, 1, 2, 3}; + uint32x4_t b = {3, 2, 1, 0}; + + uint32x4_t res = vsha1pq_u32 (a, hash, b); + return res[0]; +} + +/* { dg-final { scan-assembler "sha1p.32\tq\[0-9\]+, q\[0-9\]+" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vsha1su0q_u32.c b/gcc/testsuite/gcc.target/arm/crypto-vsha1su0q_u32.c new file mode 100644 index 00000000000..4435d1800b2 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vsha1su0q_u32.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint32x4_t a = {0xd, 0xe, 0xa, 0xd}; + uint32x4_t b = {0, 1, 2, 3}; + uint32x4_t c = {3, 2, 1, 0}; + + uint32x4_t res = vsha1su0q_u32 (a, b, c); + return res[0]; +} + +/* { dg-final { scan-assembler "sha1su0.32\tq\[0-9\]+, q\[0-9\]+, q\[0-9\]" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vsha1su1q_u32.c b/gcc/testsuite/gcc.target/arm/crypto-vsha1su1q_u32.c new file mode 100644 index 00000000000..8610c4de269 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vsha1su1q_u32.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint32x4_t a = {0xd, 0xe, 0xa, 0xd}; + uint32x4_t b = {0, 1, 2, 3}; + + uint32x4_t res = vsha1su1q_u32 (a, b); + return res[0]; +} + +/* { dg-final { scan-assembler "sha1su1.32\tq\[0-9\]+, q\[0-9\]+" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vsha256h2q_u32.c b/gcc/testsuite/gcc.target/arm/crypto-vsha256h2q_u32.c new file mode 100644 index 00000000000..4a3e2e15835 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vsha256h2q_u32.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint32x4_t a = {0xd, 0xe, 0xa, 0xd}; + uint32x4_t b = {0, 1, 2, 3}; + uint32x4_t c = {3, 2, 1, 0}; + + uint32x4_t res = vsha256h2q_u32 (a, b, c); + return res[0]; +} + +/* { dg-final { scan-assembler "sha256h2.32\tq\[0-9\]+, q\[0-9\]+, q\[0-9\]" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vsha256hq_u32.c b/gcc/testsuite/gcc.target/arm/crypto-vsha256hq_u32.c new file mode 100644 index 00000000000..49577f2b724 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vsha256hq_u32.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint32x4_t a = {0xd, 0xe, 0xa, 0xd}; + uint32x4_t b = {0, 1, 2, 3}; + uint32x4_t c = {3, 2, 1, 0}; + + uint32x4_t res = vsha256hq_u32 (a, b, c); + return res[0]; +} + +/* { dg-final { scan-assembler "sha256h.32\tq\[0-9\]+, q\[0-9\]+, q\[0-9\]" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vsha256su0q_u32.c b/gcc/testsuite/gcc.target/arm/crypto-vsha256su0q_u32.c new file mode 100644 index 00000000000..cc4305d38b5 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vsha256su0q_u32.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint32x4_t a = {0xd, 0xe, 0xa, 0xd}; + uint32x4_t b = {0, 1, 2, 3}; + + uint32x4_t res = vsha256su0q_u32 (a, b); + return res[0]; +} + +/* { dg-final { scan-assembler "sha256su0.32\tq\[0-9\]+, q\[0-9\]+" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vsha256su1q_u32.c b/gcc/testsuite/gcc.target/arm/crypto-vsha256su1q_u32.c new file mode 100644 index 00000000000..430f38adc0f --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vsha256su1q_u32.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +int +foo (void) +{ + uint32x4_t a = {0xd, 0xe, 0xa, 0xd}; + uint32x4_t b = {0, 1, 2, 3}; + uint32x4_t c = {3, 2, 1, 0}; + + uint32x4_t res = vsha256su1q_u32 (a, b, c); + return res[0]; +} + +/* { dg-final { scan-assembler "sha256su1.32\tq\[0-9\]+, q\[0-9\]+, q\[0-9\]" } } */ diff --git a/gcc/testsuite/gcc.target/arm/crypto-vstrq_p128.c b/gcc/testsuite/gcc.target/arm/crypto-vstrq_p128.c new file mode 100644 index 00000000000..acd8af34f66 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/crypto-vstrq_p128.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void +foo (poly128_t* ptr, poly128_t val) +{ + vstrq_p128 (ptr, val); +} + +/* { dg-final { scan-assembler "vst1.64\t{d\[0-9\]+-d\[0-9\]+}.*" } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vbslQp64.c b/gcc/testsuite/gcc.target/arm/neon/vbslQp64.c new file mode 100644 index 00000000000..519ee370d1f --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vbslQp64.c @@ -0,0 +1,22 @@ +/* Test the `vbslQp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vbslQp64 (void) +{ + poly64x2_t out_poly64x2_t; + uint64x2_t arg0_uint64x2_t; + poly64x2_t arg1_poly64x2_t; + poly64x2_t arg2_poly64x2_t; + + out_poly64x2_t = vbslq_p64 (arg0_uint64x2_t, arg1_poly64x2_t, arg2_poly64x2_t); +} + +/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vbslp64.c b/gcc/testsuite/gcc.target/arm/neon/vbslp64.c new file mode 100644 index 00000000000..51929274dbb --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vbslp64.c @@ -0,0 +1,22 @@ +/* Test the `vbslp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vbslp64 (void) +{ + poly64x1_t out_poly64x1_t; + uint64x1_t arg0_uint64x1_t; + poly64x1_t arg1_poly64x1_t; + poly64x1_t arg2_poly64x1_t; + + out_poly64x1_t = vbsl_p64 (arg0_uint64x1_t, arg1_poly64x1_t, arg2_poly64x1_t); +} + +/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vcombinep64.c b/gcc/testsuite/gcc.target/arm/neon/vcombinep64.c new file mode 100644 index 00000000000..d5e156bdf34 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vcombinep64.c @@ -0,0 +1,20 @@ +/* Test the `vcombinep64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vcombinep64 (void) +{ + poly64x2_t out_poly64x2_t; + poly64x1_t arg0_poly64x1_t; + poly64x1_t arg1_poly64x1_t; + + out_poly64x2_t = vcombine_p64 (arg0_poly64x1_t, arg1_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vcreatep64.c b/gcc/testsuite/gcc.target/arm/neon/vcreatep64.c new file mode 100644 index 00000000000..7aedb73fcc7 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vcreatep64.c @@ -0,0 +1,19 @@ +/* Test the `vcreatep64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vcreatep64 (void) +{ + poly64x1_t out_poly64x1_t; + uint64_t arg0_uint64_t; + + out_poly64x1_t = vcreate_p64 (arg0_uint64_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep64.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep64.c new file mode 100644 index 00000000000..6211413c76c --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep64.c @@ -0,0 +1,19 @@ +/* Test the `vdupQ_lanep64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vdupQ_lanep64 (void) +{ + poly64x2_t out_poly64x2_t; + poly64x1_t arg0_poly64x1_t; + + out_poly64x2_t = vdupq_lane_p64 (arg0_poly64x1_t, 0); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vdupQ_np64.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_np64.c new file mode 100644 index 00000000000..68a1d746bcc --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_np64.c @@ -0,0 +1,19 @@ +/* Test the `vdupQ_np64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vdupQ_np64 (void) +{ + poly64x2_t out_poly64x2_t; + poly64_t arg0_poly64_t; + + out_poly64x2_t = vdupq_n_p64 (arg0_poly64_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vdup_lanep64.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanep64.c new file mode 100644 index 00000000000..ab263f17080 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanep64.c @@ -0,0 +1,19 @@ +/* Test the `vdup_lanep64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vdup_lanep64 (void) +{ + poly64x1_t out_poly64x1_t; + poly64x1_t arg0_poly64x1_t; + + out_poly64x1_t = vdup_lane_p64 (arg0_poly64x1_t, 0); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vdup_np64.c b/gcc/testsuite/gcc.target/arm/neon/vdup_np64.c new file mode 100644 index 00000000000..3b6b7ec312c --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vdup_np64.c @@ -0,0 +1,19 @@ +/* Test the `vdup_np64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vdup_np64 (void) +{ + poly64x1_t out_poly64x1_t; + poly64_t arg0_poly64_t; + + out_poly64x1_t = vdup_n_p64 (arg0_poly64_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vextQp64.c b/gcc/testsuite/gcc.target/arm/neon/vextQp64.c new file mode 100644 index 00000000000..bc5e08aa783 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vextQp64.c @@ -0,0 +1,21 @@ +/* Test the `vextQp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vextQp64 (void) +{ + poly64x2_t out_poly64x2_t; + poly64x2_t arg0_poly64x2_t; + poly64x2_t arg1_poly64x2_t; + + out_poly64x2_t = vextq_p64 (arg0_poly64x2_t, arg1_poly64x2_t, 0); +} + +/* { dg-final { scan-assembler "vext\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vextp64.c b/gcc/testsuite/gcc.target/arm/neon/vextp64.c new file mode 100644 index 00000000000..aa1e91f59bb --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vextp64.c @@ -0,0 +1,21 @@ +/* Test the `vextp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vextp64 (void) +{ + poly64x1_t out_poly64x1_t; + poly64x1_t arg0_poly64x1_t; + poly64x1_t arg1_poly64x1_t; + + out_poly64x1_t = vext_p64 (arg0_poly64x1_t, arg1_poly64x1_t, 0); +} + +/* { dg-final { scan-assembler "vext\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_highp64.c b/gcc/testsuite/gcc.target/arm/neon/vget_highp64.c new file mode 100644 index 00000000000..f2b1b7a9e38 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vget_highp64.c @@ -0,0 +1,19 @@ +/* Test the `vget_highp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vget_highp64 (void) +{ + poly64x1_t out_poly64x1_t; + poly64x2_t arg0_poly64x2_t; + + out_poly64x1_t = vget_high_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lowp64.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowp64.c new file mode 100644 index 00000000000..94cd3a8ab75 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowp64.c @@ -0,0 +1,19 @@ +/* Test the `vget_lowp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vget_lowp64 (void) +{ + poly64x1_t out_poly64x1_t; + poly64x2_t arg0_poly64x2_t; + + out_poly64x1_t = vget_low_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp64.c new file mode 100644 index 00000000000..2d504c163ac --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp64.c @@ -0,0 +1,19 @@ +/* Test the `vld1Q_dupp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld1Q_dupp64 (void) +{ + poly64x2_t out_poly64x2_t; + + out_poly64x2_t = vld1q_dup_p64 (0); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep64.c new file mode 100644 index 00000000000..d19267a4ff8 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep64.c @@ -0,0 +1,20 @@ +/* Test the `vld1Q_lanep64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld1Q_lanep64 (void) +{ + poly64x2_t out_poly64x2_t; + poly64x2_t arg1_poly64x2_t; + + out_poly64x2_t = vld1q_lane_p64 (0, arg1_poly64x2_t, 1); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1Qp64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qp64.c new file mode 100644 index 00000000000..99ef8767321 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qp64.c @@ -0,0 +1,19 @@ +/* Test the `vld1Qp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld1Qp64 (void) +{ + poly64x2_t out_poly64x2_t; + + out_poly64x2_t = vld1q_p64 (0); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp64.c new file mode 100644 index 00000000000..f2b05c5d1e3 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp64.c @@ -0,0 +1,19 @@ +/* Test the `vld1_dupp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld1_dupp64 (void) +{ + poly64x1_t out_poly64x1_t; + + out_poly64x1_t = vld1_dup_p64 (0); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep64.c new file mode 100644 index 00000000000..cf09f6cd641 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep64.c @@ -0,0 +1,20 @@ +/* Test the `vld1_lanep64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld1_lanep64 (void) +{ + poly64x1_t out_poly64x1_t; + poly64x1_t arg1_poly64x1_t; + + out_poly64x1_t = vld1_lane_p64 (0, arg1_poly64x1_t, 0); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld1p64.c b/gcc/testsuite/gcc.target/arm/neon/vld1p64.c new file mode 100644 index 00000000000..9f182d4419f --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld1p64.c @@ -0,0 +1,19 @@ +/* Test the `vld1p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld1p64 (void) +{ + poly64x1_t out_poly64x1_t; + + out_poly64x1_t = vld1_p64 (0); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp64.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp64.c new file mode 100644 index 00000000000..0531a732dea --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp64.c @@ -0,0 +1,19 @@ +/* Test the `vld2_dupp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld2_dupp64 (void) +{ + poly64x1x2_t out_poly64x1x2_t; + + out_poly64x1x2_t = vld2_dup_p64 (0); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld2p64.c b/gcc/testsuite/gcc.target/arm/neon/vld2p64.c new file mode 100644 index 00000000000..0a39b37f01a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld2p64.c @@ -0,0 +1,19 @@ +/* Test the `vld2p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld2p64 (void) +{ + poly64x1x2_t out_poly64x1x2_t; + + out_poly64x1x2_t = vld2_p64 (0); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp64.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp64.c new file mode 100644 index 00000000000..23bf88aa6d7 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp64.c @@ -0,0 +1,19 @@ +/* Test the `vld3_dupp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld3_dupp64 (void) +{ + poly64x1x3_t out_poly64x1x3_t; + + out_poly64x1x3_t = vld3_dup_p64 (0); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld3p64.c b/gcc/testsuite/gcc.target/arm/neon/vld3p64.c new file mode 100644 index 00000000000..cc799289246 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld3p64.c @@ -0,0 +1,19 @@ +/* Test the `vld3p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld3p64 (void) +{ + poly64x1x3_t out_poly64x1x3_t; + + out_poly64x1x3_t = vld3_p64 (0); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp64.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp64.c new file mode 100644 index 00000000000..bb15964af0a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp64.c @@ -0,0 +1,19 @@ +/* Test the `vld4_dupp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld4_dupp64 (void) +{ + poly64x1x4_t out_poly64x1x4_t; + + out_poly64x1x4_t = vld4_dup_p64 (0); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vld4p64.c b/gcc/testsuite/gcc.target/arm/neon/vld4p64.c new file mode 100644 index 00000000000..b11fb938432 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vld4p64.c @@ -0,0 +1,19 @@ +/* Test the `vld4p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vld4p64 (void) +{ + poly64x1x4_t out_poly64x1x4_t; + + out_poly64x1x4_t = vld4_p64 (0); +} + +/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p128.c new file mode 100644 index 00000000000..91cac4df5c5 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQf32_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQf32_p128 (void) +{ + float32x4_t out_float32x4_t; + poly128_t arg0_poly128_t; + + out_float32x4_t = vreinterpretq_f32_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p64.c new file mode 100644 index 00000000000..96909f677d7 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQf32_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQf32_p64 (void) +{ + float32x4_t out_float32x4_t; + poly64x2_t arg0_poly64x2_t; + + out_float32x4_t = vreinterpretq_f32_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_f32.c new file mode 100644 index 00000000000..aa7d2e7e7de --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_f32.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_f32' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_f32 (void) +{ + poly128_t out_poly128_t; + float32x4_t arg0_float32x4_t; + + out_poly128_t = vreinterpretq_p128_f32 (arg0_float32x4_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p16.c new file mode 100644 index 00000000000..94f2e9b4afa --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p16.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_p16' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_p16 (void) +{ + poly128_t out_poly128_t; + poly16x8_t arg0_poly16x8_t; + + out_poly128_t = vreinterpretq_p128_p16 (arg0_poly16x8_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p64.c new file mode 100644 index 00000000000..d32007547e0 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_p64 (void) +{ + poly128_t out_poly128_t; + poly64x2_t arg0_poly64x2_t; + + out_poly128_t = vreinterpretq_p128_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p8.c new file mode 100644 index 00000000000..112b0c6e3cc --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p8.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_p8' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_p8 (void) +{ + poly128_t out_poly128_t; + poly8x16_t arg0_poly8x16_t; + + out_poly128_t = vreinterpretq_p128_p8 (arg0_poly8x16_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s16.c new file mode 100644 index 00000000000..4fa06b2382b --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s16.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_s16' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_s16 (void) +{ + poly128_t out_poly128_t; + int16x8_t arg0_int16x8_t; + + out_poly128_t = vreinterpretq_p128_s16 (arg0_int16x8_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s32.c new file mode 100644 index 00000000000..5f17cb81309 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s32.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_s32' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_s32 (void) +{ + poly128_t out_poly128_t; + int32x4_t arg0_int32x4_t; + + out_poly128_t = vreinterpretq_p128_s32 (arg0_int32x4_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s64.c new file mode 100644 index 00000000000..9b83912b979 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_s64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_s64 (void) +{ + poly128_t out_poly128_t; + int64x2_t arg0_int64x2_t; + + out_poly128_t = vreinterpretq_p128_s64 (arg0_int64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s8.c new file mode 100644 index 00000000000..49e8b74b45a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s8.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_s8' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_s8 (void) +{ + poly128_t out_poly128_t; + int8x16_t arg0_int8x16_t; + + out_poly128_t = vreinterpretq_p128_s8 (arg0_int8x16_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u16.c new file mode 100644 index 00000000000..d47429aeb5d --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u16.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_u16' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_u16 (void) +{ + poly128_t out_poly128_t; + uint16x8_t arg0_uint16x8_t; + + out_poly128_t = vreinterpretq_p128_u16 (arg0_uint16x8_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u32.c new file mode 100644 index 00000000000..57abf79a92e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u32.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_u32' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_u32 (void) +{ + poly128_t out_poly128_t; + uint32x4_t arg0_uint32x4_t; + + out_poly128_t = vreinterpretq_p128_u32 (arg0_uint32x4_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u64.c new file mode 100644 index 00000000000..4d04daaaa11 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_u64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_u64 (void) +{ + poly128_t out_poly128_t; + uint64x2_t arg0_uint64x2_t; + + out_poly128_t = vreinterpretq_p128_u64 (arg0_uint64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u8.c new file mode 100644 index 00000000000..ba07bbc8ac3 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u8.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp128_u8' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp128_u8 (void) +{ + poly128_t out_poly128_t; + uint8x16_t arg0_uint8x16_t; + + out_poly128_t = vreinterpretq_p128_u8 (arg0_uint8x16_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p128.c new file mode 100644 index 00000000000..27d0d0afb51 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp16_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp16_p128 (void) +{ + poly16x8_t out_poly16x8_t; + poly128_t arg0_poly128_t; + + out_poly16x8_t = vreinterpretq_p16_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p64.c new file mode 100644 index 00000000000..a0a3aaff49e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp16_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp16_p64 (void) +{ + poly16x8_t out_poly16x8_t; + poly64x2_t arg0_poly64x2_t; + + out_poly16x8_t = vreinterpretq_p16_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_f32.c new file mode 100644 index 00000000000..9f9b1a4ea1f --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_f32.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_f32' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_f32 (void) +{ + poly64x2_t out_poly64x2_t; + float32x4_t arg0_float32x4_t; + + out_poly64x2_t = vreinterpretq_p64_f32 (arg0_float32x4_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p128.c new file mode 100644 index 00000000000..3f712951359 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_p128 (void) +{ + poly64x2_t out_poly64x2_t; + poly128_t arg0_poly128_t; + + out_poly64x2_t = vreinterpretq_p64_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p16.c new file mode 100644 index 00000000000..897b7cd9d00 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p16.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_p16' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_p16 (void) +{ + poly64x2_t out_poly64x2_t; + poly16x8_t arg0_poly16x8_t; + + out_poly64x2_t = vreinterpretq_p64_p16 (arg0_poly16x8_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p8.c new file mode 100644 index 00000000000..772b268bf8a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p8.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_p8' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_p8 (void) +{ + poly64x2_t out_poly64x2_t; + poly8x16_t arg0_poly8x16_t; + + out_poly64x2_t = vreinterpretq_p64_p8 (arg0_poly8x16_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s16.c new file mode 100644 index 00000000000..29f3f6c1cdf --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s16.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_s16' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_s16 (void) +{ + poly64x2_t out_poly64x2_t; + int16x8_t arg0_int16x8_t; + + out_poly64x2_t = vreinterpretq_p64_s16 (arg0_int16x8_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s32.c new file mode 100644 index 00000000000..fae22f65ef2 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s32.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_s32' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_s32 (void) +{ + poly64x2_t out_poly64x2_t; + int32x4_t arg0_int32x4_t; + + out_poly64x2_t = vreinterpretq_p64_s32 (arg0_int32x4_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s64.c new file mode 100644 index 00000000000..8769bc8e6b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_s64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_s64 (void) +{ + poly64x2_t out_poly64x2_t; + int64x2_t arg0_int64x2_t; + + out_poly64x2_t = vreinterpretq_p64_s64 (arg0_int64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s8.c new file mode 100644 index 00000000000..1163cc2b7c7 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s8.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_s8' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_s8 (void) +{ + poly64x2_t out_poly64x2_t; + int8x16_t arg0_int8x16_t; + + out_poly64x2_t = vreinterpretq_p64_s8 (arg0_int8x16_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u16.c new file mode 100644 index 00000000000..f2b53260e03 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u16.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_u16' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_u16 (void) +{ + poly64x2_t out_poly64x2_t; + uint16x8_t arg0_uint16x8_t; + + out_poly64x2_t = vreinterpretq_p64_u16 (arg0_uint16x8_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u32.c new file mode 100644 index 00000000000..6b6179ba41f --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u32.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_u32' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_u32 (void) +{ + poly64x2_t out_poly64x2_t; + uint32x4_t arg0_uint32x4_t; + + out_poly64x2_t = vreinterpretq_p64_u32 (arg0_uint32x4_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u64.c new file mode 100644 index 00000000000..655ffd4fafb --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_u64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_u64 (void) +{ + poly64x2_t out_poly64x2_t; + uint64x2_t arg0_uint64x2_t; + + out_poly64x2_t = vreinterpretq_p64_u64 (arg0_uint64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u8.c new file mode 100644 index 00000000000..40b40dd11dd --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u8.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp64_u8' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp64_u8 (void) +{ + poly64x2_t out_poly64x2_t; + uint8x16_t arg0_uint8x16_t; + + out_poly64x2_t = vreinterpretq_p64_u8 (arg0_uint8x16_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p128.c new file mode 100644 index 00000000000..b517a6fdfa6 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp8_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp8_p128 (void) +{ + poly8x16_t out_poly8x16_t; + poly128_t arg0_poly128_t; + + out_poly8x16_t = vreinterpretq_p8_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p64.c new file mode 100644 index 00000000000..9e70b8a0756 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQp8_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQp8_p64 (void) +{ + poly8x16_t out_poly8x16_t; + poly64x2_t arg0_poly64x2_t; + + out_poly8x16_t = vreinterpretq_p8_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p128.c new file mode 100644 index 00000000000..77bfe3882ad --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQs16_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQs16_p128 (void) +{ + int16x8_t out_int16x8_t; + poly128_t arg0_poly128_t; + + out_int16x8_t = vreinterpretq_s16_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p64.c new file mode 100644 index 00000000000..41890f32aad --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQs16_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQs16_p64 (void) +{ + int16x8_t out_int16x8_t; + poly64x2_t arg0_poly64x2_t; + + out_int16x8_t = vreinterpretq_s16_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p128.c new file mode 100644 index 00000000000..9a179ae3beb --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQs32_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQs32_p128 (void) +{ + int32x4_t out_int32x4_t; + poly128_t arg0_poly128_t; + + out_int32x4_t = vreinterpretq_s32_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p64.c new file mode 100644 index 00000000000..cc7ad95ea9d --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQs32_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQs32_p64 (void) +{ + int32x4_t out_int32x4_t; + poly64x2_t arg0_poly64x2_t; + + out_int32x4_t = vreinterpretq_s32_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p128.c new file mode 100644 index 00000000000..adc1b9bbf0c --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQs64_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQs64_p128 (void) +{ + int64x2_t out_int64x2_t; + poly128_t arg0_poly128_t; + + out_int64x2_t = vreinterpretq_s64_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p64.c new file mode 100644 index 00000000000..89ab9ccb4b2 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQs64_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQs64_p64 (void) +{ + int64x2_t out_int64x2_t; + poly64x2_t arg0_poly64x2_t; + + out_int64x2_t = vreinterpretq_s64_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p128.c new file mode 100644 index 00000000000..d94090068e3 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQs8_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQs8_p128 (void) +{ + int8x16_t out_int8x16_t; + poly128_t arg0_poly128_t; + + out_int8x16_t = vreinterpretq_s8_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p64.c new file mode 100644 index 00000000000..a9adec38704 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQs8_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQs8_p64 (void) +{ + int8x16_t out_int8x16_t; + poly64x2_t arg0_poly64x2_t; + + out_int8x16_t = vreinterpretq_s8_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p128.c new file mode 100644 index 00000000000..792609246c1 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQu16_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQu16_p128 (void) +{ + uint16x8_t out_uint16x8_t; + poly128_t arg0_poly128_t; + + out_uint16x8_t = vreinterpretq_u16_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p64.c new file mode 100644 index 00000000000..7a9b538f232 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQu16_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQu16_p64 (void) +{ + uint16x8_t out_uint16x8_t; + poly64x2_t arg0_poly64x2_t; + + out_uint16x8_t = vreinterpretq_u16_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p128.c new file mode 100644 index 00000000000..ce716b0ab1c --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQu32_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQu32_p128 (void) +{ + uint32x4_t out_uint32x4_t; + poly128_t arg0_poly128_t; + + out_uint32x4_t = vreinterpretq_u32_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p64.c new file mode 100644 index 00000000000..a8b709e0298 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQu32_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQu32_p64 (void) +{ + uint32x4_t out_uint32x4_t; + poly64x2_t arg0_poly64x2_t; + + out_uint32x4_t = vreinterpretq_u32_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p128.c new file mode 100644 index 00000000000..789973e0a27 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQu64_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQu64_p128 (void) +{ + uint64x2_t out_uint64x2_t; + poly128_t arg0_poly128_t; + + out_uint64x2_t = vreinterpretq_u64_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p64.c new file mode 100644 index 00000000000..38071503eaa --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQu64_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQu64_p64 (void) +{ + uint64x2_t out_uint64x2_t; + poly64x2_t arg0_poly64x2_t; + + out_uint64x2_t = vreinterpretq_u64_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p128.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p128.c new file mode 100644 index 00000000000..54a832cf41c --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p128.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQu8_p128' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQu8_p128 (void) +{ + uint8x16_t out_uint8x16_t; + poly128_t arg0_poly128_t; + + out_uint8x16_t = vreinterpretq_u8_p128 (arg0_poly128_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p64.c new file mode 100644 index 00000000000..3336e6c24e8 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretQu8_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretQu8_p64 (void) +{ + uint8x16_t out_uint8x16_t; + poly64x2_t arg0_poly64x2_t; + + out_uint8x16_t = vreinterpretq_u8_p64 (arg0_poly64x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p64.c new file mode 100644 index 00000000000..e9714658fc3 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretf32_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretf32_p64 (void) +{ + float32x2_t out_float32x2_t; + poly64x1_t arg0_poly64x1_t; + + out_float32x2_t = vreinterpret_f32_p64 (arg0_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p64.c new file mode 100644 index 00000000000..4cd6818db83 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp16_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp16_p64 (void) +{ + poly16x4_t out_poly16x4_t; + poly64x1_t arg0_poly64x1_t; + + out_poly16x4_t = vreinterpret_p16_p64 (arg0_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_f32.c new file mode 100644 index 00000000000..d9ecd6f88c8 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_f32.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp64_f32' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp64_f32 (void) +{ + poly64x1_t out_poly64x1_t; + float32x2_t arg0_float32x2_t; + + out_poly64x1_t = vreinterpret_p64_f32 (arg0_float32x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p16.c new file mode 100644 index 00000000000..db437279b5b --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p16.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp64_p16' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp64_p16 (void) +{ + poly64x1_t out_poly64x1_t; + poly16x4_t arg0_poly16x4_t; + + out_poly64x1_t = vreinterpret_p64_p16 (arg0_poly16x4_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p8.c new file mode 100644 index 00000000000..1fb0131d8d3 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p8.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp64_p8' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp64_p8 (void) +{ + poly64x1_t out_poly64x1_t; + poly8x8_t arg0_poly8x8_t; + + out_poly64x1_t = vreinterpret_p64_p8 (arg0_poly8x8_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s16.c new file mode 100644 index 00000000000..528db2d57fe --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s16.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp64_s16' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp64_s16 (void) +{ + poly64x1_t out_poly64x1_t; + int16x4_t arg0_int16x4_t; + + out_poly64x1_t = vreinterpret_p64_s16 (arg0_int16x4_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s32.c new file mode 100644 index 00000000000..c6887d7e089 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s32.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp64_s32' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp64_s32 (void) +{ + poly64x1_t out_poly64x1_t; + int32x2_t arg0_int32x2_t; + + out_poly64x1_t = vreinterpret_p64_s32 (arg0_int32x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s64.c new file mode 100644 index 00000000000..f2b04164903 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp64_s64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp64_s64 (void) +{ + poly64x1_t out_poly64x1_t; + int64x1_t arg0_int64x1_t; + + out_poly64x1_t = vreinterpret_p64_s64 (arg0_int64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s8.c new file mode 100644 index 00000000000..1866d19fb69 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s8.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp64_s8' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp64_s8 (void) +{ + poly64x1_t out_poly64x1_t; + int8x8_t arg0_int8x8_t; + + out_poly64x1_t = vreinterpret_p64_s8 (arg0_int8x8_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u16.c new file mode 100644 index 00000000000..7903ec26f38 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u16.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp64_u16' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp64_u16 (void) +{ + poly64x1_t out_poly64x1_t; + uint16x4_t arg0_uint16x4_t; + + out_poly64x1_t = vreinterpret_p64_u16 (arg0_uint16x4_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u32.c new file mode 100644 index 00000000000..3d8e9e40f3e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u32.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp64_u32' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp64_u32 (void) +{ + poly64x1_t out_poly64x1_t; + uint32x2_t arg0_uint32x2_t; + + out_poly64x1_t = vreinterpret_p64_u32 (arg0_uint32x2_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u64.c new file mode 100644 index 00000000000..caa0464aac1 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp64_u64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp64_u64 (void) +{ + poly64x1_t out_poly64x1_t; + uint64x1_t arg0_uint64x1_t; + + out_poly64x1_t = vreinterpret_p64_u64 (arg0_uint64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u8.c new file mode 100644 index 00000000000..47e1dfa5f4a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u8.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp64_u8' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp64_u8 (void) +{ + poly64x1_t out_poly64x1_t; + uint8x8_t arg0_uint8x8_t; + + out_poly64x1_t = vreinterpret_p64_u8 (arg0_uint8x8_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p64.c new file mode 100644 index 00000000000..f5eff21abb9 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretp8_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretp8_p64 (void) +{ + poly8x8_t out_poly8x8_t; + poly64x1_t arg0_poly64x1_t; + + out_poly8x8_t = vreinterpret_p8_p64 (arg0_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p64.c new file mode 100644 index 00000000000..127865d169b --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterprets16_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterprets16_p64 (void) +{ + int16x4_t out_int16x4_t; + poly64x1_t arg0_poly64x1_t; + + out_int16x4_t = vreinterpret_s16_p64 (arg0_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p64.c new file mode 100644 index 00000000000..f8be30b9246 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterprets32_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterprets32_p64 (void) +{ + int32x2_t out_int32x2_t; + poly64x1_t arg0_poly64x1_t; + + out_int32x2_t = vreinterpret_s32_p64 (arg0_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p64.c new file mode 100644 index 00000000000..5f7c17bd33e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterprets64_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterprets64_p64 (void) +{ + int64x1_t out_int64x1_t; + poly64x1_t arg0_poly64x1_t; + + out_int64x1_t = vreinterpret_s64_p64 (arg0_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p64.c new file mode 100644 index 00000000000..8345963ef3a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterprets8_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterprets8_p64 (void) +{ + int8x8_t out_int8x8_t; + poly64x1_t arg0_poly64x1_t; + + out_int8x8_t = vreinterpret_s8_p64 (arg0_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p64.c new file mode 100644 index 00000000000..34f920bbd7a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretu16_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretu16_p64 (void) +{ + uint16x4_t out_uint16x4_t; + poly64x1_t arg0_poly64x1_t; + + out_uint16x4_t = vreinterpret_u16_p64 (arg0_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p64.c new file mode 100644 index 00000000000..b5f24fbc4b9 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretu32_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretu32_p64 (void) +{ + uint32x2_t out_uint32x2_t; + poly64x1_t arg0_poly64x1_t; + + out_uint32x2_t = vreinterpret_u32_p64 (arg0_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p64.c new file mode 100644 index 00000000000..741912a4ebc --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretu64_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretu64_p64 (void) +{ + uint64x1_t out_uint64x1_t; + poly64x1_t arg0_poly64x1_t; + + out_uint64x1_t = vreinterpret_u64_p64 (arg0_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p64.c new file mode 100644 index 00000000000..907b67c157d --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p64.c @@ -0,0 +1,19 @@ +/* Test the `vreinterpretu8_p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vreinterpretu8_p64 (void) +{ + uint8x8_t out_uint8x8_t; + poly64x1_t arg0_poly64x1_t; + + out_uint8x8_t = vreinterpret_u8_p64 (arg0_poly64x1_t); +} + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vsliQ_np64.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_np64.c new file mode 100644 index 00000000000..cbb47285e46 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_np64.c @@ -0,0 +1,21 @@ +/* Test the `vsliQ_np64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vsliQ_np64 (void) +{ + poly64x2_t out_poly64x2_t; + poly64x2_t arg0_poly64x2_t; + poly64x2_t arg1_poly64x2_t; + + out_poly64x2_t = vsliq_n_p64 (arg0_poly64x2_t, arg1_poly64x2_t, 1); +} + +/* { dg-final { scan-assembler "vsli\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vsli_np64.c b/gcc/testsuite/gcc.target/arm/neon/vsli_np64.c new file mode 100644 index 00000000000..801add49be1 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vsli_np64.c @@ -0,0 +1,21 @@ +/* Test the `vsli_np64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vsli_np64 (void) +{ + poly64x1_t out_poly64x1_t; + poly64x1_t arg0_poly64x1_t; + poly64x1_t arg1_poly64x1_t; + + out_poly64x1_t = vsli_n_p64 (arg0_poly64x1_t, arg1_poly64x1_t, 1); +} + +/* { dg-final { scan-assembler "vsli\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vsriQ_np64.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_np64.c new file mode 100644 index 00000000000..d2e48165aa3 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_np64.c @@ -0,0 +1,21 @@ +/* Test the `vsriQ_np64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vsriQ_np64 (void) +{ + poly64x2_t out_poly64x2_t; + poly64x2_t arg0_poly64x2_t; + poly64x2_t arg1_poly64x2_t; + + out_poly64x2_t = vsriq_n_p64 (arg0_poly64x2_t, arg1_poly64x2_t, 1); +} + +/* { dg-final { scan-assembler "vsri\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vsri_np64.c b/gcc/testsuite/gcc.target/arm/neon/vsri_np64.c new file mode 100644 index 00000000000..0abffc2e0e5 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vsri_np64.c @@ -0,0 +1,21 @@ +/* Test the `vsri_np64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vsri_np64 (void) +{ + poly64x1_t out_poly64x1_t; + poly64x1_t arg0_poly64x1_t; + poly64x1_t arg1_poly64x1_t; + + out_poly64x1_t = vsri_n_p64 (arg0_poly64x1_t, arg1_poly64x1_t, 1); +} + +/* { dg-final { scan-assembler "vsri\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep64.c new file mode 100644 index 00000000000..74a198baf81 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep64.c @@ -0,0 +1,20 @@ +/* Test the `vst1Q_lanep64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vst1Q_lanep64 (void) +{ + poly64_t *arg0_poly64_t; + poly64x2_t arg1_poly64x2_t; + + vst1q_lane_p64 (arg0_poly64_t, arg1_poly64x2_t, 1); +} + +/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1Qp64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qp64.c new file mode 100644 index 00000000000..7d1e020f111 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qp64.c @@ -0,0 +1,20 @@ +/* Test the `vst1Qp64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vst1Qp64 (void) +{ + poly64_t *arg0_poly64_t; + poly64x2_t arg1_poly64x2_t; + + vst1q_p64 (arg0_poly64_t, arg1_poly64x2_t); +} + +/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep64.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep64.c new file mode 100644 index 00000000000..f8c70c35952 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep64.c @@ -0,0 +1,20 @@ +/* Test the `vst1_lanep64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vst1_lanep64 (void) +{ + poly64_t *arg0_poly64_t; + poly64x1_t arg1_poly64x1_t; + + vst1_lane_p64 (arg0_poly64_t, arg1_poly64x1_t, 0); +} + +/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vst1p64.c b/gcc/testsuite/gcc.target/arm/neon/vst1p64.c new file mode 100644 index 00000000000..7329fba9d0c --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vst1p64.c @@ -0,0 +1,20 @@ +/* Test the `vst1p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vst1p64 (void) +{ + poly64_t *arg0_poly64_t; + poly64x1_t arg1_poly64x1_t; + + vst1_p64 (arg0_poly64_t, arg1_poly64x1_t); +} + +/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vst2p64.c b/gcc/testsuite/gcc.target/arm/neon/vst2p64.c new file mode 100644 index 00000000000..3ccaa5464f6 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vst2p64.c @@ -0,0 +1,20 @@ +/* Test the `vst2p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vst2p64 (void) +{ + poly64_t *arg0_poly64_t; + poly64x1x2_t arg1_poly64x1x2_t; + + vst2_p64 (arg0_poly64_t, arg1_poly64x1x2_t); +} + +/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vst3p64.c b/gcc/testsuite/gcc.target/arm/neon/vst3p64.c new file mode 100644 index 00000000000..73ced95448f --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vst3p64.c @@ -0,0 +1,20 @@ +/* Test the `vst3p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vst3p64 (void) +{ + poly64_t *arg0_poly64_t; + poly64x1x3_t arg1_poly64x1x3_t; + + vst3_p64 (arg0_poly64_t, arg1_poly64x1x3_t); +} + +/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/arm/neon/vst4p64.c b/gcc/testsuite/gcc.target/arm/neon/vst4p64.c new file mode 100644 index 00000000000..b9f7b168d2e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vst4p64.c @@ -0,0 +1,20 @@ +/* Test the `vst4p64' ARM Neon intrinsic. */ +/* This file was autogenerated by neon-testgen. */ + +/* { dg-do assemble } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-options "-save-temps -O0" } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" + +void test_vst4p64 (void) +{ + poly64_t *arg0_poly64_t; + poly64x1x4_t arg1_poly64x1x4_t; + + vst4_p64 (arg0_poly64_t, arg1_poly64x1x4_t); +} + +/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 0f9ef4c4f03..af80a698075 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -2299,6 +2299,30 @@ proc check_effective_target_arm_unaligned { } { }] } +# Return 1 if this is an ARM target supporting -mfpu=crypto-neon-fp-armv8 +# -mfloat-abi=softfp. +proc check_effective_target_arm_crypto_ok {} { + if { [check_effective_target_arm32] } { + return [check_no_compiler_messages arm_crypto_ok object { + int foo (void) + { + __asm__ volatile ("aese.8 q0, q0"); + return 0; + } + } "-mfpu=crypto-neon-fp-armv8 -mfloat-abi=softfp"] + } else { + return 0 + } +} + +# Add options for crypto extensions. +proc add_options_for_arm_crypto { flags } { + if { ! [check_effective_target_arm_crypto_ok] } { + return "$flags" + } + return "$flags -mfpu=crypto-neon-fp-armv8 -mfloat-abi=softfp" +} + # Add the options needed for NEON. We need either -mfloat-abi=softfp # or -mfloat-abi=hard, but if one is already specified by the # multilib, use it. Similarly, if a -mfpu option already enables -- cgit v1.2.1 From fafb2b1c87f0a52f04ffa8a8cc7a82fc20b308f6 Mon Sep 17 00:00:00 2001 From: ktkachov Date: Thu, 19 Dec 2013 18:30:18 +0000 Subject: 2013-12-19 Kyrylo Tkachov * config/arm/neon-docgen.ml: Add crypto intrinsics documentation. * doc/arm-neon-intrinsics.texi: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206132 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 + gcc/config/arm/neon-docgen.ml | 72 +++ gcc/doc/arm-neon-intrinsics.texi | 1047 ++++++++++++++++++++++++++++++-------- 3 files changed, 906 insertions(+), 218 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6522c600218..bc32092b8cd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-19 Kyrylo Tkachov + + * config/arm/neon-docgen.ml: Add crypto intrinsics documentation. + * doc/arm-neon-intrinsics.texi: Regenerate. + 2013-12-19 Kyrylo Tkachov * config/arm/neon-testgen.ml (effective_target): Handle "CRYPTO". diff --git a/gcc/config/arm/neon-docgen.ml b/gcc/config/arm/neon-docgen.ml index f17314f2ab3..66d21cf1139 100644 --- a/gcc/config/arm/neon-docgen.ml +++ b/gcc/config/arm/neon-docgen.ml @@ -329,6 +329,77 @@ let gnu_header chan = "@c This file is generated automatically using gcc/config/arm/neon-docgen.ml"; "@c Please do not edit manually."] +let crypto_doc = +" +@itemize @bullet +@item poly128_t vldrq_p128(poly128_t const *) +@end itemize + +@itemize @bullet +@item void vstrq_p128(poly128_t *, poly128_t) +@end itemize + +@itemize @bullet +@item uint32_t vsha1h_u32 (uint32_t) +@*@emph{Form of expected instruction(s):} @code{sha1h.32 @var{q0}, @var{q1}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha1cq_u32 (uint32x4_t, uint32_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha1c.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha1pq_u32 (uint32x4_t, uint32_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha1p.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha1mq_u32 (uint32x4_t, uint32_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha1m.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha1su0q_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha1su0.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha1su1q_u32 (uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha1su1.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha256hq_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha256h.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha256h2q_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha256h2.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha256su0q_u32 (uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha256su0.32 @var{q0}, @var{q1}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha256su1q_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha256su1.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item poly128_t vmull_p64 (poly64_t a, poly64_t b) +@*@emph{Form of expected instruction(s):} @code{vmull.p64 @var{q0}, @var{d1}, @var{d2}} +@end itemize + +@itemize @bullet +@item poly128_t vmull_high_p64 (poly64x2_t a, poly64x2_t b) +@*@emph{Form of expected instruction(s):} @code{vmull.p64 @var{q0}, @var{d1}, @var{d2}} +@end itemize +" + (* Program entry point. *) let _ = if Array.length Sys.argv <> 2 then @@ -339,6 +410,7 @@ let _ = let chan = open_out file in gnu_header chan; List.iter (document_group chan) intrinsic_groups; + Printf.fprintf chan "%s\n" crypto_doc; close_out chan with Sys_error sys -> failwith ("Could not create output file " ^ file ^ ": " ^ sys) diff --git a/gcc/doc/arm-neon-intrinsics.texi b/gcc/doc/arm-neon-intrinsics.texi index fcd6c0f5305..610892d6463 100644 --- a/gcc/doc/arm-neon-intrinsics.texi +++ b/gcc/doc/arm-neon-intrinsics.texi @@ -4078,6 +4078,12 @@ @subsubsection Vector shift right and insert +@itemize @bullet +@item poly64x1_t vsri_n_p64 (poly64x1_t, poly64x1_t, const int) +@*@emph{Form of expected instruction(s):} @code{vsri.64 @var{d0}, @var{d0}, #@var{0}} +@end itemize + + @itemize @bullet @item uint32x2_t vsri_n_u32 (uint32x2_t, uint32x2_t, const int) @*@emph{Form of expected instruction(s):} @code{vsri.32 @var{d0}, @var{d0}, #@var{0}} @@ -4138,6 +4144,12 @@ @end itemize +@itemize @bullet +@item poly64x2_t vsriq_n_p64 (poly64x2_t, poly64x2_t, const int) +@*@emph{Form of expected instruction(s):} @code{vsri.64 @var{q0}, @var{q0}, #@var{0}} +@end itemize + + @itemize @bullet @item uint32x4_t vsriq_n_u32 (uint32x4_t, uint32x4_t, const int) @*@emph{Form of expected instruction(s):} @code{vsri.32 @var{q0}, @var{q0}, #@var{0}} @@ -4202,6 +4214,12 @@ @subsubsection Vector shift left and insert +@itemize @bullet +@item poly64x1_t vsli_n_p64 (poly64x1_t, poly64x1_t, const int) +@*@emph{Form of expected instruction(s):} @code{vsli.64 @var{d0}, @var{d0}, #@var{0}} +@end itemize + + @itemize @bullet @item uint32x2_t vsli_n_u32 (uint32x2_t, uint32x2_t, const int) @*@emph{Form of expected instruction(s):} @code{vsli.32 @var{d0}, @var{d0}, #@var{0}} @@ -4262,6 +4280,12 @@ @end itemize +@itemize @bullet +@item poly64x2_t vsliq_n_p64 (poly64x2_t, poly64x2_t, const int) +@*@emph{Form of expected instruction(s):} @code{vsli.64 @var{q0}, @var{q0}, #@var{0}} +@end itemize + + @itemize @bullet @item uint32x4_t vsliq_n_u32 (uint32x4_t, uint32x4_t, const int) @*@emph{Form of expected instruction(s):} @code{vsli.32 @var{q0}, @var{q0}, #@var{0}} @@ -5070,6 +5094,11 @@ @subsubsection Create vector from literal bit pattern +@itemize @bullet +@item poly64x1_t vcreate_p64 (uint64_t) +@end itemize + + @itemize @bullet @item uint32x2_t vcreate_u32 (uint64_t) @end itemize @@ -5183,6 +5212,11 @@ @end itemize +@itemize @bullet +@item poly64x1_t vdup_n_p64 (poly64_t) +@end itemize + + @itemize @bullet @item uint64x1_t vdup_n_u64 (uint64_t) @end itemize @@ -5193,6 +5227,11 @@ @end itemize +@itemize @bullet +@item poly64x2_t vdupq_n_p64 (poly64_t) +@end itemize + + @itemize @bullet @item uint32x4_t vdupq_n_u32 (uint32_t) @*@emph{Form of expected instruction(s):} @code{vdup.32 @var{q0}, @var{r0}} @@ -5439,6 +5478,11 @@ @end itemize +@itemize @bullet +@item poly64x1_t vdup_lane_p64 (poly64x1_t, const int) +@end itemize + + @itemize @bullet @item uint64x1_t vdup_lane_u64 (uint64x1_t, const int) @end itemize @@ -5503,6 +5547,11 @@ @end itemize +@itemize @bullet +@item poly64x2_t vdupq_lane_p64 (poly64x1_t, const int) +@end itemize + + @itemize @bullet @item uint64x2_t vdupq_lane_u64 (uint64x1_t, const int) @end itemize @@ -5517,6 +5566,11 @@ @subsubsection Combining vectors +@itemize @bullet +@item poly64x2_t vcombine_p64 (poly64x1_t, poly64x1_t) +@end itemize + + @itemize @bullet @item uint32x4_t vcombine_u32 (uint32x2_t, uint32x2_t) @end itemize @@ -5576,6 +5630,11 @@ @subsubsection Splitting vectors +@itemize @bullet +@item poly64x1_t vget_high_p64 (poly64x2_t) +@end itemize + + @itemize @bullet @item uint32x2_t vget_high_u32 (uint32x4_t) @end itemize @@ -5685,6 +5744,11 @@ @end itemize +@itemize @bullet +@item poly64x1_t vget_low_p64 (poly64x2_t) +@end itemize + + @itemize @bullet @item uint64x1_t vget_low_u64 (uint64x2_t) @end itemize @@ -6817,6 +6881,12 @@ @subsubsection Vector extract +@itemize @bullet +@item poly64x1_t vext_p64 (poly64x1_t, poly64x1_t, const int) +@*@emph{Form of expected instruction(s):} @code{vext.64 @var{d0}, @var{d0}, @var{d0}, #@var{0}} +@end itemize + + @itemize @bullet @item uint32x2_t vext_u32 (uint32x2_t, uint32x2_t, const int) @*@emph{Form of expected instruction(s):} @code{vext.32 @var{d0}, @var{d0}, @var{d0}, #@var{0}} @@ -6883,6 +6953,12 @@ @end itemize +@itemize @bullet +@item poly64x2_t vextq_p64 (poly64x2_t, poly64x2_t, const int) +@*@emph{Form of expected instruction(s):} @code{vext.64 @var{q0}, @var{q0}, @var{q0}, #@var{0}} +@end itemize + + @itemize @bullet @item uint32x4_t vextq_u32 (uint32x4_t, uint32x4_t, const int) @*@emph{Form of expected instruction(s):} @code{vext.32 @var{q0}, @var{q0}, @var{q0}, #@var{0}} @@ -7173,6 +7249,12 @@ @subsubsection Bit selection +@itemize @bullet +@item poly64x1_t vbsl_p64 (uint64x1_t, poly64x1_t, poly64x1_t) +@*@emph{Form of expected instruction(s):} @code{vbsl @var{d0}, @var{d0}, @var{d0}} @emph{or} @code{vbit @var{d0}, @var{d0}, @var{d0}} @emph{or} @code{vbif @var{d0}, @var{d0}, @var{d0}} +@end itemize + + @itemize @bullet @item uint32x2_t vbsl_u32 (uint32x2_t, uint32x2_t, uint32x2_t) @*@emph{Form of expected instruction(s):} @code{vbsl @var{d0}, @var{d0}, @var{d0}} @emph{or} @code{vbit @var{d0}, @var{d0}, @var{d0}} @emph{or} @code{vbif @var{d0}, @var{d0}, @var{d0}} @@ -7239,6 +7321,12 @@ @end itemize +@itemize @bullet +@item poly64x2_t vbslq_p64 (uint64x2_t, poly64x2_t, poly64x2_t) +@*@emph{Form of expected instruction(s):} @code{vbsl @var{q0}, @var{q0}, @var{q0}} @emph{or} @code{vbit @var{q0}, @var{q0}, @var{q0}} @emph{or} @code{vbif @var{q0}, @var{q0}, @var{q0}} +@end itemize + + @itemize @bullet @item uint32x4_t vbslq_u32 (uint32x4_t, uint32x4_t, uint32x4_t) @*@emph{Form of expected instruction(s):} @code{vbsl @var{q0}, @var{q0}, @var{q0}} @emph{or} @code{vbit @var{q0}, @var{q0}, @var{q0}} @emph{or} @code{vbif @var{q0}, @var{q0}, @var{q0}} @@ -7645,6 +7733,12 @@ @subsubsection Element/structure loads, VLD1 variants +@itemize @bullet +@item poly64x1_t vld1_p64 (const poly64_t *) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint32x2_t vld1_u32 (const uint32_t *) @*@emph{Form of expected instruction(s):} @code{vld1.32 @{@var{d0}@}, [@var{r0}]} @@ -7711,6 +7805,12 @@ @end itemize +@itemize @bullet +@item poly64x2_t vld1q_p64 (const poly64_t *) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint32x4_t vld1q_u32 (const uint32_t *) @*@emph{Form of expected instruction(s):} @code{vld1.32 @{@var{d0}, @var{d1}@}, [@var{r0}]} @@ -7831,6 +7931,12 @@ @end itemize +@itemize @bullet +@item poly64x1_t vld1_lane_p64 (const poly64_t *, poly64x1_t, const int) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint64x1_t vld1_lane_u64 (const uint64_t *, uint64x1_t, const int) @*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}@}, [@var{r0}]} @@ -7897,6 +8003,12 @@ @end itemize +@itemize @bullet +@item poly64x2_t vld1q_lane_p64 (const poly64_t *, poly64x2_t, const int) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint64x2_t vld1q_lane_u64 (const uint64_t *, uint64x2_t, const int) @*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}@}, [@var{r0}]} @@ -7963,6 +8075,12 @@ @end itemize +@itemize @bullet +@item poly64x1_t vld1_dup_p64 (const poly64_t *) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint64x1_t vld1_dup_u64 (const uint64_t *) @*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}@}, [@var{r0}]} @@ -8029,6 +8147,12 @@ @end itemize +@itemize @bullet +@item poly64x2_t vld1q_dup_p64 (const poly64_t *) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint64x2_t vld1q_dup_u64 (const uint64_t *) @*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}@}, [@var{r0}]} @@ -8045,6 +8169,12 @@ @subsubsection Element/structure stores, VST1 variants +@itemize @bullet +@item void vst1_p64 (poly64_t *, poly64x1_t) +@*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item void vst1_u32 (uint32_t *, uint32x2_t) @*@emph{Form of expected instruction(s):} @code{vst1.32 @{@var{d0}@}, [@var{r0}]} @@ -8111,6 +8241,12 @@ @end itemize +@itemize @bullet +@item void vst1q_p64 (poly64_t *, poly64x2_t) +@*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}, @var{d1}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item void vst1q_u32 (uint32_t *, uint32x4_t) @*@emph{Form of expected instruction(s):} @code{vst1.32 @{@var{d0}, @var{d1}@}, [@var{r0}]} @@ -8231,6 +8367,12 @@ @end itemize +@itemize @bullet +@item void vst1_lane_p64 (poly64_t *, poly64x1_t, const int) +@*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item void vst1_lane_s64 (int64_t *, int64x1_t, const int) @*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}@}, [@var{r0}]} @@ -8297,6 +8439,12 @@ @end itemize +@itemize @bullet +@item void vst1q_lane_p64 (poly64_t *, poly64x2_t, const int) +@*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item void vst1q_lane_s64 (int64_t *, int64x2_t, const int) @*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}@}, [@var{r0}]} @@ -8367,6 +8515,12 @@ @end itemize +@itemize @bullet +@item poly64x1x2_t vld2_p64 (const poly64_t *) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint64x1x2_t vld2_u64 (const uint64_t *) @*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}@}, [@var{r0}]} @@ -8577,6 +8731,12 @@ @end itemize +@itemize @bullet +@item poly64x1x2_t vld2_dup_p64 (const poly64_t *) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint64x1x2_t vld2_dup_u64 (const uint64_t *) @*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}@}, [@var{r0}]} @@ -8647,6 +8807,12 @@ @end itemize +@itemize @bullet +@item void vst2_p64 (poly64_t *, poly64x1x2_t) +@*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}, @var{d1}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item void vst2_u64 (uint64_t *, uint64x1x2_t) @*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}, @var{d1}@}, [@var{r0}]} @@ -8861,6 +9027,12 @@ @end itemize +@itemize @bullet +@item poly64x1x3_t vld3_p64 (const poly64_t *) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}, @var{d2}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint64x1x3_t vld3_u64 (const uint64_t *) @*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}, @var{d2}@}, [@var{r0}]} @@ -9071,6 +9243,12 @@ @end itemize +@itemize @bullet +@item poly64x1x3_t vld3_dup_p64 (const poly64_t *) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}, @var{d2}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint64x1x3_t vld3_dup_u64 (const uint64_t *) @*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}, @var{d2}@}, [@var{r0}]} @@ -9141,6 +9319,12 @@ @end itemize +@itemize @bullet +@item void vst3_p64 (poly64_t *, poly64x1x3_t) +@*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}, @var{d1}, @var{d2}, @var{d3}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item void vst3_u64 (uint64_t *, uint64x1x3_t) @*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}, @var{d1}, @var{d2}, @var{d3}@}, [@var{r0}]} @@ -9355,6 +9539,12 @@ @end itemize +@itemize @bullet +@item poly64x1x4_t vld4_p64 (const poly64_t *) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}, @var{d2}, @var{d3}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint64x1x4_t vld4_u64 (const uint64_t *) @*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}, @var{d2}, @var{d3}@}, [@var{r0}]} @@ -9565,6 +9755,12 @@ @end itemize +@itemize @bullet +@item poly64x1x4_t vld4_dup_p64 (const poly64_t *) +@*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}, @var{d2}, @var{d3}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item uint64x1x4_t vld4_dup_u64 (const uint64_t *) @*@emph{Form of expected instruction(s):} @code{vld1.64 @{@var{d0}, @var{d1}, @var{d2}, @var{d3}@}, [@var{r0}]} @@ -9635,6 +9831,12 @@ @end itemize +@itemize @bullet +@item void vst4_p64 (poly64_t *, poly64x1x4_t) +@*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}, @var{d1}, @var{d2}, @var{d3}@}, [@var{r0}]} +@end itemize + + @itemize @bullet @item void vst4_u64 (uint64_t *, uint64x1x4_t) @*@emph{Form of expected instruction(s):} @code{vst1.64 @{@var{d0}, @var{d1}, @var{d2}, @var{d3}@}, [@var{r0}]} @@ -10286,27 +10488,27 @@ @subsubsection Reinterpret casts @itemize @bullet -@item poly8x8_t vreinterpret_p8_u32 (uint32x2_t) +@item poly8x8_t vreinterpret_p8_p16 (poly16x4_t) @end itemize @itemize @bullet -@item poly8x8_t vreinterpret_p8_u16 (uint16x4_t) +@item poly8x8_t vreinterpret_p8_f32 (float32x2_t) @end itemize @itemize @bullet -@item poly8x8_t vreinterpret_p8_u8 (uint8x8_t) +@item poly8x8_t vreinterpret_p8_p64 (poly64x1_t) @end itemize @itemize @bullet -@item poly8x8_t vreinterpret_p8_s32 (int32x2_t) +@item poly8x8_t vreinterpret_p8_s64 (int64x1_t) @end itemize @itemize @bullet -@item poly8x8_t vreinterpret_p8_s16 (int16x4_t) +@item poly8x8_t vreinterpret_p8_u64 (uint64x1_t) @end itemize @@ -10316,1067 +10518,1352 @@ @itemize @bullet -@item poly8x8_t vreinterpret_p8_u64 (uint64x1_t) +@item poly8x8_t vreinterpret_p8_s16 (int16x4_t) @end itemize @itemize @bullet -@item poly8x8_t vreinterpret_p8_s64 (int64x1_t) +@item poly8x8_t vreinterpret_p8_s32 (int32x2_t) @end itemize @itemize @bullet -@item poly8x8_t vreinterpret_p8_f32 (float32x2_t) +@item poly8x8_t vreinterpret_p8_u8 (uint8x8_t) @end itemize @itemize @bullet -@item poly8x8_t vreinterpret_p8_p16 (poly16x4_t) +@item poly8x8_t vreinterpret_p8_u16 (uint16x4_t) @end itemize @itemize @bullet -@item poly8x16_t vreinterpretq_p8_u32 (uint32x4_t) +@item poly8x8_t vreinterpret_p8_u32 (uint32x2_t) @end itemize @itemize @bullet -@item poly8x16_t vreinterpretq_p8_u16 (uint16x8_t) +@item poly16x4_t vreinterpret_p16_p8 (poly8x8_t) @end itemize @itemize @bullet -@item poly8x16_t vreinterpretq_p8_u8 (uint8x16_t) +@item poly16x4_t vreinterpret_p16_f32 (float32x2_t) @end itemize @itemize @bullet -@item poly8x16_t vreinterpretq_p8_s32 (int32x4_t) +@item poly16x4_t vreinterpret_p16_p64 (poly64x1_t) @end itemize @itemize @bullet -@item poly8x16_t vreinterpretq_p8_s16 (int16x8_t) +@item poly16x4_t vreinterpret_p16_s64 (int64x1_t) @end itemize @itemize @bullet -@item poly8x16_t vreinterpretq_p8_s8 (int8x16_t) +@item poly16x4_t vreinterpret_p16_u64 (uint64x1_t) @end itemize @itemize @bullet -@item poly8x16_t vreinterpretq_p8_u64 (uint64x2_t) +@item poly16x4_t vreinterpret_p16_s8 (int8x8_t) @end itemize @itemize @bullet -@item poly8x16_t vreinterpretq_p8_s64 (int64x2_t) +@item poly16x4_t vreinterpret_p16_s16 (int16x4_t) @end itemize @itemize @bullet -@item poly8x16_t vreinterpretq_p8_f32 (float32x4_t) +@item poly16x4_t vreinterpret_p16_s32 (int32x2_t) @end itemize @itemize @bullet -@item poly8x16_t vreinterpretq_p8_p16 (poly16x8_t) +@item poly16x4_t vreinterpret_p16_u8 (uint8x8_t) @end itemize @itemize @bullet -@item poly16x4_t vreinterpret_p16_u32 (uint32x2_t) +@item poly16x4_t vreinterpret_p16_u16 (uint16x4_t) @end itemize @itemize @bullet -@item poly16x4_t vreinterpret_p16_u16 (uint16x4_t) +@item poly16x4_t vreinterpret_p16_u32 (uint32x2_t) @end itemize @itemize @bullet -@item poly16x4_t vreinterpret_p16_u8 (uint8x8_t) +@item float32x2_t vreinterpret_f32_p8 (poly8x8_t) @end itemize @itemize @bullet -@item poly16x4_t vreinterpret_p16_s32 (int32x2_t) +@item float32x2_t vreinterpret_f32_p16 (poly16x4_t) @end itemize @itemize @bullet -@item poly16x4_t vreinterpret_p16_s16 (int16x4_t) +@item float32x2_t vreinterpret_f32_p64 (poly64x1_t) @end itemize @itemize @bullet -@item poly16x4_t vreinterpret_p16_s8 (int8x8_t) +@item float32x2_t vreinterpret_f32_s64 (int64x1_t) @end itemize @itemize @bullet -@item poly16x4_t vreinterpret_p16_u64 (uint64x1_t) +@item float32x2_t vreinterpret_f32_u64 (uint64x1_t) @end itemize @itemize @bullet -@item poly16x4_t vreinterpret_p16_s64 (int64x1_t) +@item float32x2_t vreinterpret_f32_s8 (int8x8_t) @end itemize @itemize @bullet -@item poly16x4_t vreinterpret_p16_f32 (float32x2_t) +@item float32x2_t vreinterpret_f32_s16 (int16x4_t) @end itemize @itemize @bullet -@item poly16x4_t vreinterpret_p16_p8 (poly8x8_t) +@item float32x2_t vreinterpret_f32_s32 (int32x2_t) @end itemize @itemize @bullet -@item poly16x8_t vreinterpretq_p16_u32 (uint32x4_t) +@item float32x2_t vreinterpret_f32_u8 (uint8x8_t) @end itemize @itemize @bullet -@item poly16x8_t vreinterpretq_p16_u16 (uint16x8_t) +@item float32x2_t vreinterpret_f32_u16 (uint16x4_t) @end itemize @itemize @bullet -@item poly16x8_t vreinterpretq_p16_u8 (uint8x16_t) +@item float32x2_t vreinterpret_f32_u32 (uint32x2_t) @end itemize @itemize @bullet -@item poly16x8_t vreinterpretq_p16_s32 (int32x4_t) +@item poly64x1_t vreinterpret_p64_p8 (poly8x8_t) @end itemize @itemize @bullet -@item poly16x8_t vreinterpretq_p16_s16 (int16x8_t) +@item poly64x1_t vreinterpret_p64_p16 (poly16x4_t) @end itemize @itemize @bullet -@item poly16x8_t vreinterpretq_p16_s8 (int8x16_t) +@item poly64x1_t vreinterpret_p64_f32 (float32x2_t) @end itemize @itemize @bullet -@item poly16x8_t vreinterpretq_p16_u64 (uint64x2_t) +@item poly64x1_t vreinterpret_p64_s64 (int64x1_t) @end itemize @itemize @bullet -@item poly16x8_t vreinterpretq_p16_s64 (int64x2_t) +@item poly64x1_t vreinterpret_p64_u64 (uint64x1_t) @end itemize @itemize @bullet -@item poly16x8_t vreinterpretq_p16_f32 (float32x4_t) +@item poly64x1_t vreinterpret_p64_s8 (int8x8_t) @end itemize @itemize @bullet -@item poly16x8_t vreinterpretq_p16_p8 (poly8x16_t) +@item poly64x1_t vreinterpret_p64_s16 (int16x4_t) @end itemize @itemize @bullet -@item float32x2_t vreinterpret_f32_u32 (uint32x2_t) +@item poly64x1_t vreinterpret_p64_s32 (int32x2_t) @end itemize @itemize @bullet -@item float32x2_t vreinterpret_f32_u16 (uint16x4_t) +@item poly64x1_t vreinterpret_p64_u8 (uint8x8_t) @end itemize @itemize @bullet -@item float32x2_t vreinterpret_f32_u8 (uint8x8_t) +@item poly64x1_t vreinterpret_p64_u16 (uint16x4_t) @end itemize @itemize @bullet -@item float32x2_t vreinterpret_f32_s32 (int32x2_t) +@item poly64x1_t vreinterpret_p64_u32 (uint32x2_t) @end itemize @itemize @bullet -@item float32x2_t vreinterpret_f32_s16 (int16x4_t) +@item int64x1_t vreinterpret_s64_p8 (poly8x8_t) @end itemize @itemize @bullet -@item float32x2_t vreinterpret_f32_s8 (int8x8_t) +@item int64x1_t vreinterpret_s64_p16 (poly16x4_t) @end itemize @itemize @bullet -@item float32x2_t vreinterpret_f32_u64 (uint64x1_t) +@item int64x1_t vreinterpret_s64_f32 (float32x2_t) @end itemize @itemize @bullet -@item float32x2_t vreinterpret_f32_s64 (int64x1_t) +@item int64x1_t vreinterpret_s64_p64 (poly64x1_t) @end itemize @itemize @bullet -@item float32x2_t vreinterpret_f32_p16 (poly16x4_t) +@item int64x1_t vreinterpret_s64_u64 (uint64x1_t) @end itemize @itemize @bullet -@item float32x2_t vreinterpret_f32_p8 (poly8x8_t) +@item int64x1_t vreinterpret_s64_s8 (int8x8_t) @end itemize @itemize @bullet -@item float32x4_t vreinterpretq_f32_u32 (uint32x4_t) +@item int64x1_t vreinterpret_s64_s16 (int16x4_t) @end itemize @itemize @bullet -@item float32x4_t vreinterpretq_f32_u16 (uint16x8_t) +@item int64x1_t vreinterpret_s64_s32 (int32x2_t) @end itemize @itemize @bullet -@item float32x4_t vreinterpretq_f32_u8 (uint8x16_t) +@item int64x1_t vreinterpret_s64_u8 (uint8x8_t) @end itemize @itemize @bullet -@item float32x4_t vreinterpretq_f32_s32 (int32x4_t) +@item int64x1_t vreinterpret_s64_u16 (uint16x4_t) @end itemize @itemize @bullet -@item float32x4_t vreinterpretq_f32_s16 (int16x8_t) +@item int64x1_t vreinterpret_s64_u32 (uint32x2_t) @end itemize @itemize @bullet -@item float32x4_t vreinterpretq_f32_s8 (int8x16_t) +@item uint64x1_t vreinterpret_u64_p8 (poly8x8_t) @end itemize @itemize @bullet -@item float32x4_t vreinterpretq_f32_u64 (uint64x2_t) +@item uint64x1_t vreinterpret_u64_p16 (poly16x4_t) @end itemize @itemize @bullet -@item float32x4_t vreinterpretq_f32_s64 (int64x2_t) +@item uint64x1_t vreinterpret_u64_f32 (float32x2_t) @end itemize @itemize @bullet -@item float32x4_t vreinterpretq_f32_p16 (poly16x8_t) +@item uint64x1_t vreinterpret_u64_p64 (poly64x1_t) @end itemize @itemize @bullet -@item float32x4_t vreinterpretq_f32_p8 (poly8x16_t) +@item uint64x1_t vreinterpret_u64_s64 (int64x1_t) @end itemize @itemize @bullet -@item int64x1_t vreinterpret_s64_u32 (uint32x2_t) +@item uint64x1_t vreinterpret_u64_s8 (int8x8_t) @end itemize @itemize @bullet -@item int64x1_t vreinterpret_s64_u16 (uint16x4_t) +@item uint64x1_t vreinterpret_u64_s16 (int16x4_t) @end itemize @itemize @bullet -@item int64x1_t vreinterpret_s64_u8 (uint8x8_t) +@item uint64x1_t vreinterpret_u64_s32 (int32x2_t) @end itemize @itemize @bullet -@item int64x1_t vreinterpret_s64_s32 (int32x2_t) +@item uint64x1_t vreinterpret_u64_u8 (uint8x8_t) @end itemize @itemize @bullet -@item int64x1_t vreinterpret_s64_s16 (int16x4_t) +@item uint64x1_t vreinterpret_u64_u16 (uint16x4_t) @end itemize @itemize @bullet -@item int64x1_t vreinterpret_s64_s8 (int8x8_t) +@item uint64x1_t vreinterpret_u64_u32 (uint32x2_t) @end itemize @itemize @bullet -@item int64x1_t vreinterpret_s64_u64 (uint64x1_t) +@item int8x8_t vreinterpret_s8_p8 (poly8x8_t) @end itemize @itemize @bullet -@item int64x1_t vreinterpret_s64_f32 (float32x2_t) +@item int8x8_t vreinterpret_s8_p16 (poly16x4_t) @end itemize @itemize @bullet -@item int64x1_t vreinterpret_s64_p16 (poly16x4_t) +@item int8x8_t vreinterpret_s8_f32 (float32x2_t) @end itemize @itemize @bullet -@item int64x1_t vreinterpret_s64_p8 (poly8x8_t) +@item int8x8_t vreinterpret_s8_p64 (poly64x1_t) @end itemize @itemize @bullet -@item int64x2_t vreinterpretq_s64_u32 (uint32x4_t) +@item int8x8_t vreinterpret_s8_s64 (int64x1_t) @end itemize @itemize @bullet -@item int64x2_t vreinterpretq_s64_u16 (uint16x8_t) +@item int8x8_t vreinterpret_s8_u64 (uint64x1_t) @end itemize @itemize @bullet -@item int64x2_t vreinterpretq_s64_u8 (uint8x16_t) +@item int8x8_t vreinterpret_s8_s16 (int16x4_t) @end itemize @itemize @bullet -@item int64x2_t vreinterpretq_s64_s32 (int32x4_t) +@item int8x8_t vreinterpret_s8_s32 (int32x2_t) @end itemize @itemize @bullet -@item int64x2_t vreinterpretq_s64_s16 (int16x8_t) +@item int8x8_t vreinterpret_s8_u8 (uint8x8_t) @end itemize @itemize @bullet -@item int64x2_t vreinterpretq_s64_s8 (int8x16_t) +@item int8x8_t vreinterpret_s8_u16 (uint16x4_t) @end itemize @itemize @bullet -@item int64x2_t vreinterpretq_s64_u64 (uint64x2_t) +@item int8x8_t vreinterpret_s8_u32 (uint32x2_t) @end itemize @itemize @bullet -@item int64x2_t vreinterpretq_s64_f32 (float32x4_t) +@item int16x4_t vreinterpret_s16_p8 (poly8x8_t) @end itemize @itemize @bullet -@item int64x2_t vreinterpretq_s64_p16 (poly16x8_t) +@item int16x4_t vreinterpret_s16_p16 (poly16x4_t) @end itemize @itemize @bullet -@item int64x2_t vreinterpretq_s64_p8 (poly8x16_t) +@item int16x4_t vreinterpret_s16_f32 (float32x2_t) @end itemize @itemize @bullet -@item uint64x1_t vreinterpret_u64_u32 (uint32x2_t) +@item int16x4_t vreinterpret_s16_p64 (poly64x1_t) @end itemize @itemize @bullet -@item uint64x1_t vreinterpret_u64_u16 (uint16x4_t) +@item int16x4_t vreinterpret_s16_s64 (int64x1_t) @end itemize @itemize @bullet -@item uint64x1_t vreinterpret_u64_u8 (uint8x8_t) +@item int16x4_t vreinterpret_s16_u64 (uint64x1_t) @end itemize @itemize @bullet -@item uint64x1_t vreinterpret_u64_s32 (int32x2_t) +@item int16x4_t vreinterpret_s16_s8 (int8x8_t) @end itemize @itemize @bullet -@item uint64x1_t vreinterpret_u64_s16 (int16x4_t) +@item int16x4_t vreinterpret_s16_s32 (int32x2_t) @end itemize @itemize @bullet -@item uint64x1_t vreinterpret_u64_s8 (int8x8_t) +@item int16x4_t vreinterpret_s16_u8 (uint8x8_t) @end itemize @itemize @bullet -@item uint64x1_t vreinterpret_u64_s64 (int64x1_t) +@item int16x4_t vreinterpret_s16_u16 (uint16x4_t) @end itemize @itemize @bullet -@item uint64x1_t vreinterpret_u64_f32 (float32x2_t) +@item int16x4_t vreinterpret_s16_u32 (uint32x2_t) @end itemize @itemize @bullet -@item uint64x1_t vreinterpret_u64_p16 (poly16x4_t) +@item int32x2_t vreinterpret_s32_p8 (poly8x8_t) @end itemize @itemize @bullet -@item uint64x1_t vreinterpret_u64_p8 (poly8x8_t) +@item int32x2_t vreinterpret_s32_p16 (poly16x4_t) @end itemize @itemize @bullet -@item uint64x2_t vreinterpretq_u64_u32 (uint32x4_t) +@item int32x2_t vreinterpret_s32_f32 (float32x2_t) @end itemize @itemize @bullet -@item uint64x2_t vreinterpretq_u64_u16 (uint16x8_t) +@item int32x2_t vreinterpret_s32_p64 (poly64x1_t) @end itemize @itemize @bullet -@item uint64x2_t vreinterpretq_u64_u8 (uint8x16_t) +@item int32x2_t vreinterpret_s32_s64 (int64x1_t) @end itemize @itemize @bullet -@item uint64x2_t vreinterpretq_u64_s32 (int32x4_t) +@item int32x2_t vreinterpret_s32_u64 (uint64x1_t) @end itemize @itemize @bullet -@item uint64x2_t vreinterpretq_u64_s16 (int16x8_t) +@item int32x2_t vreinterpret_s32_s8 (int8x8_t) @end itemize @itemize @bullet -@item uint64x2_t vreinterpretq_u64_s8 (int8x16_t) +@item int32x2_t vreinterpret_s32_s16 (int16x4_t) @end itemize @itemize @bullet -@item uint64x2_t vreinterpretq_u64_s64 (int64x2_t) +@item int32x2_t vreinterpret_s32_u8 (uint8x8_t) @end itemize @itemize @bullet -@item uint64x2_t vreinterpretq_u64_f32 (float32x4_t) +@item int32x2_t vreinterpret_s32_u16 (uint16x4_t) @end itemize @itemize @bullet -@item uint64x2_t vreinterpretq_u64_p16 (poly16x8_t) +@item int32x2_t vreinterpret_s32_u32 (uint32x2_t) @end itemize @itemize @bullet -@item uint64x2_t vreinterpretq_u64_p8 (poly8x16_t) +@item uint8x8_t vreinterpret_u8_p8 (poly8x8_t) @end itemize @itemize @bullet -@item int8x8_t vreinterpret_s8_u32 (uint32x2_t) +@item uint8x8_t vreinterpret_u8_p16 (poly16x4_t) @end itemize @itemize @bullet -@item int8x8_t vreinterpret_s8_u16 (uint16x4_t) +@item uint8x8_t vreinterpret_u8_f32 (float32x2_t) @end itemize @itemize @bullet -@item int8x8_t vreinterpret_s8_u8 (uint8x8_t) +@item uint8x8_t vreinterpret_u8_p64 (poly64x1_t) @end itemize @itemize @bullet -@item int8x8_t vreinterpret_s8_s32 (int32x2_t) +@item uint8x8_t vreinterpret_u8_s64 (int64x1_t) @end itemize @itemize @bullet -@item int8x8_t vreinterpret_s8_s16 (int16x4_t) +@item uint8x8_t vreinterpret_u8_u64 (uint64x1_t) @end itemize @itemize @bullet -@item int8x8_t vreinterpret_s8_u64 (uint64x1_t) +@item uint8x8_t vreinterpret_u8_s8 (int8x8_t) @end itemize @itemize @bullet -@item int8x8_t vreinterpret_s8_s64 (int64x1_t) +@item uint8x8_t vreinterpret_u8_s16 (int16x4_t) @end itemize @itemize @bullet -@item int8x8_t vreinterpret_s8_f32 (float32x2_t) +@item uint8x8_t vreinterpret_u8_s32 (int32x2_t) @end itemize @itemize @bullet -@item int8x8_t vreinterpret_s8_p16 (poly16x4_t) +@item uint8x8_t vreinterpret_u8_u16 (uint16x4_t) @end itemize @itemize @bullet -@item int8x8_t vreinterpret_s8_p8 (poly8x8_t) +@item uint8x8_t vreinterpret_u8_u32 (uint32x2_t) @end itemize @itemize @bullet -@item int8x16_t vreinterpretq_s8_u32 (uint32x4_t) +@item uint16x4_t vreinterpret_u16_p8 (poly8x8_t) @end itemize @itemize @bullet -@item int8x16_t vreinterpretq_s8_u16 (uint16x8_t) +@item uint16x4_t vreinterpret_u16_p16 (poly16x4_t) @end itemize @itemize @bullet -@item int8x16_t vreinterpretq_s8_u8 (uint8x16_t) +@item uint16x4_t vreinterpret_u16_f32 (float32x2_t) @end itemize @itemize @bullet -@item int8x16_t vreinterpretq_s8_s32 (int32x4_t) +@item uint16x4_t vreinterpret_u16_p64 (poly64x1_t) @end itemize @itemize @bullet -@item int8x16_t vreinterpretq_s8_s16 (int16x8_t) +@item uint16x4_t vreinterpret_u16_s64 (int64x1_t) @end itemize @itemize @bullet -@item int8x16_t vreinterpretq_s8_u64 (uint64x2_t) +@item uint16x4_t vreinterpret_u16_u64 (uint64x1_t) @end itemize @itemize @bullet -@item int8x16_t vreinterpretq_s8_s64 (int64x2_t) +@item uint16x4_t vreinterpret_u16_s8 (int8x8_t) @end itemize @itemize @bullet -@item int8x16_t vreinterpretq_s8_f32 (float32x4_t) +@item uint16x4_t vreinterpret_u16_s16 (int16x4_t) @end itemize @itemize @bullet -@item int8x16_t vreinterpretq_s8_p16 (poly16x8_t) +@item uint16x4_t vreinterpret_u16_s32 (int32x2_t) @end itemize @itemize @bullet -@item int8x16_t vreinterpretq_s8_p8 (poly8x16_t) +@item uint16x4_t vreinterpret_u16_u8 (uint8x8_t) @end itemize @itemize @bullet -@item int16x4_t vreinterpret_s16_u32 (uint32x2_t) +@item uint16x4_t vreinterpret_u16_u32 (uint32x2_t) @end itemize @itemize @bullet -@item int16x4_t vreinterpret_s16_u16 (uint16x4_t) +@item uint32x2_t vreinterpret_u32_p8 (poly8x8_t) @end itemize @itemize @bullet -@item int16x4_t vreinterpret_s16_u8 (uint8x8_t) +@item uint32x2_t vreinterpret_u32_p16 (poly16x4_t) @end itemize @itemize @bullet -@item int16x4_t vreinterpret_s16_s32 (int32x2_t) +@item uint32x2_t vreinterpret_u32_f32 (float32x2_t) @end itemize @itemize @bullet -@item int16x4_t vreinterpret_s16_s8 (int8x8_t) +@item uint32x2_t vreinterpret_u32_p64 (poly64x1_t) @end itemize @itemize @bullet -@item int16x4_t vreinterpret_s16_u64 (uint64x1_t) +@item uint32x2_t vreinterpret_u32_s64 (int64x1_t) @end itemize @itemize @bullet -@item int16x4_t vreinterpret_s16_s64 (int64x1_t) +@item uint32x2_t vreinterpret_u32_u64 (uint64x1_t) @end itemize @itemize @bullet -@item int16x4_t vreinterpret_s16_f32 (float32x2_t) +@item uint32x2_t vreinterpret_u32_s8 (int8x8_t) @end itemize @itemize @bullet -@item int16x4_t vreinterpret_s16_p16 (poly16x4_t) +@item uint32x2_t vreinterpret_u32_s16 (int16x4_t) @end itemize @itemize @bullet -@item int16x4_t vreinterpret_s16_p8 (poly8x8_t) +@item uint32x2_t vreinterpret_u32_s32 (int32x2_t) @end itemize @itemize @bullet -@item int16x8_t vreinterpretq_s16_u32 (uint32x4_t) +@item uint32x2_t vreinterpret_u32_u8 (uint8x8_t) @end itemize @itemize @bullet -@item int16x8_t vreinterpretq_s16_u16 (uint16x8_t) +@item uint32x2_t vreinterpret_u32_u16 (uint16x4_t) @end itemize @itemize @bullet -@item int16x8_t vreinterpretq_s16_u8 (uint8x16_t) +@item poly8x16_t vreinterpretq_p8_p16 (poly16x8_t) @end itemize @itemize @bullet -@item int16x8_t vreinterpretq_s16_s32 (int32x4_t) +@item poly8x16_t vreinterpretq_p8_f32 (float32x4_t) @end itemize @itemize @bullet -@item int16x8_t vreinterpretq_s16_s8 (int8x16_t) +@item poly8x16_t vreinterpretq_p8_p64 (poly64x2_t) @end itemize @itemize @bullet -@item int16x8_t vreinterpretq_s16_u64 (uint64x2_t) +@item poly8x16_t vreinterpretq_p8_p128 (poly128_t) @end itemize @itemize @bullet -@item int16x8_t vreinterpretq_s16_s64 (int64x2_t) +@item poly8x16_t vreinterpretq_p8_s64 (int64x2_t) @end itemize @itemize @bullet -@item int16x8_t vreinterpretq_s16_f32 (float32x4_t) +@item poly8x16_t vreinterpretq_p8_u64 (uint64x2_t) @end itemize @itemize @bullet -@item int16x8_t vreinterpretq_s16_p16 (poly16x8_t) +@item poly8x16_t vreinterpretq_p8_s8 (int8x16_t) @end itemize @itemize @bullet -@item int16x8_t vreinterpretq_s16_p8 (poly8x16_t) +@item poly8x16_t vreinterpretq_p8_s16 (int16x8_t) @end itemize @itemize @bullet -@item int32x2_t vreinterpret_s32_u32 (uint32x2_t) +@item poly8x16_t vreinterpretq_p8_s32 (int32x4_t) @end itemize @itemize @bullet -@item int32x2_t vreinterpret_s32_u16 (uint16x4_t) +@item poly8x16_t vreinterpretq_p8_u8 (uint8x16_t) @end itemize @itemize @bullet -@item int32x2_t vreinterpret_s32_u8 (uint8x8_t) +@item poly8x16_t vreinterpretq_p8_u16 (uint16x8_t) @end itemize @itemize @bullet -@item int32x2_t vreinterpret_s32_s16 (int16x4_t) +@item poly8x16_t vreinterpretq_p8_u32 (uint32x4_t) @end itemize @itemize @bullet -@item int32x2_t vreinterpret_s32_s8 (int8x8_t) +@item poly16x8_t vreinterpretq_p16_p8 (poly8x16_t) @end itemize @itemize @bullet -@item int32x2_t vreinterpret_s32_u64 (uint64x1_t) +@item poly16x8_t vreinterpretq_p16_f32 (float32x4_t) @end itemize @itemize @bullet -@item int32x2_t vreinterpret_s32_s64 (int64x1_t) +@item poly16x8_t vreinterpretq_p16_p64 (poly64x2_t) @end itemize @itemize @bullet -@item int32x2_t vreinterpret_s32_f32 (float32x2_t) +@item poly16x8_t vreinterpretq_p16_p128 (poly128_t) @end itemize @itemize @bullet -@item int32x2_t vreinterpret_s32_p16 (poly16x4_t) +@item poly16x8_t vreinterpretq_p16_s64 (int64x2_t) @end itemize @itemize @bullet -@item int32x2_t vreinterpret_s32_p8 (poly8x8_t) +@item poly16x8_t vreinterpretq_p16_u64 (uint64x2_t) @end itemize @itemize @bullet -@item int32x4_t vreinterpretq_s32_u32 (uint32x4_t) +@item poly16x8_t vreinterpretq_p16_s8 (int8x16_t) @end itemize @itemize @bullet -@item int32x4_t vreinterpretq_s32_u16 (uint16x8_t) +@item poly16x8_t vreinterpretq_p16_s16 (int16x8_t) @end itemize @itemize @bullet -@item int32x4_t vreinterpretq_s32_u8 (uint8x16_t) +@item poly16x8_t vreinterpretq_p16_s32 (int32x4_t) @end itemize @itemize @bullet -@item int32x4_t vreinterpretq_s32_s16 (int16x8_t) +@item poly16x8_t vreinterpretq_p16_u8 (uint8x16_t) @end itemize @itemize @bullet -@item int32x4_t vreinterpretq_s32_s8 (int8x16_t) +@item poly16x8_t vreinterpretq_p16_u16 (uint16x8_t) @end itemize @itemize @bullet -@item int32x4_t vreinterpretq_s32_u64 (uint64x2_t) +@item poly16x8_t vreinterpretq_p16_u32 (uint32x4_t) @end itemize @itemize @bullet -@item int32x4_t vreinterpretq_s32_s64 (int64x2_t) +@item float32x4_t vreinterpretq_f32_p8 (poly8x16_t) @end itemize @itemize @bullet -@item int32x4_t vreinterpretq_s32_f32 (float32x4_t) +@item float32x4_t vreinterpretq_f32_p16 (poly16x8_t) @end itemize @itemize @bullet -@item int32x4_t vreinterpretq_s32_p16 (poly16x8_t) +@item float32x4_t vreinterpretq_f32_p64 (poly64x2_t) @end itemize @itemize @bullet -@item int32x4_t vreinterpretq_s32_p8 (poly8x16_t) +@item float32x4_t vreinterpretq_f32_p128 (poly128_t) @end itemize @itemize @bullet -@item uint8x8_t vreinterpret_u8_u32 (uint32x2_t) +@item float32x4_t vreinterpretq_f32_s64 (int64x2_t) @end itemize @itemize @bullet -@item uint8x8_t vreinterpret_u8_u16 (uint16x4_t) +@item float32x4_t vreinterpretq_f32_u64 (uint64x2_t) @end itemize @itemize @bullet -@item uint8x8_t vreinterpret_u8_s32 (int32x2_t) +@item float32x4_t vreinterpretq_f32_s8 (int8x16_t) @end itemize @itemize @bullet -@item uint8x8_t vreinterpret_u8_s16 (int16x4_t) +@item float32x4_t vreinterpretq_f32_s16 (int16x8_t) @end itemize @itemize @bullet -@item uint8x8_t vreinterpret_u8_s8 (int8x8_t) +@item float32x4_t vreinterpretq_f32_s32 (int32x4_t) @end itemize @itemize @bullet -@item uint8x8_t vreinterpret_u8_u64 (uint64x1_t) +@item float32x4_t vreinterpretq_f32_u8 (uint8x16_t) @end itemize @itemize @bullet -@item uint8x8_t vreinterpret_u8_s64 (int64x1_t) +@item float32x4_t vreinterpretq_f32_u16 (uint16x8_t) @end itemize @itemize @bullet -@item uint8x8_t vreinterpret_u8_f32 (float32x2_t) +@item float32x4_t vreinterpretq_f32_u32 (uint32x4_t) @end itemize @itemize @bullet -@item uint8x8_t vreinterpret_u8_p16 (poly16x4_t) +@item poly64x2_t vreinterpretq_p64_p8 (poly8x16_t) @end itemize @itemize @bullet -@item uint8x8_t vreinterpret_u8_p8 (poly8x8_t) +@item poly64x2_t vreinterpretq_p64_p16 (poly16x8_t) @end itemize @itemize @bullet -@item uint8x16_t vreinterpretq_u8_u32 (uint32x4_t) +@item poly64x2_t vreinterpretq_p64_f32 (float32x4_t) @end itemize @itemize @bullet -@item uint8x16_t vreinterpretq_u8_u16 (uint16x8_t) +@item poly64x2_t vreinterpretq_p64_p128 (poly128_t) @end itemize @itemize @bullet -@item uint8x16_t vreinterpretq_u8_s32 (int32x4_t) +@item poly64x2_t vreinterpretq_p64_s64 (int64x2_t) @end itemize @itemize @bullet -@item uint8x16_t vreinterpretq_u8_s16 (int16x8_t) +@item poly64x2_t vreinterpretq_p64_u64 (uint64x2_t) @end itemize @itemize @bullet -@item uint8x16_t vreinterpretq_u8_s8 (int8x16_t) +@item poly64x2_t vreinterpretq_p64_s8 (int8x16_t) @end itemize @itemize @bullet -@item uint8x16_t vreinterpretq_u8_u64 (uint64x2_t) +@item poly64x2_t vreinterpretq_p64_s16 (int16x8_t) @end itemize @itemize @bullet -@item uint8x16_t vreinterpretq_u8_s64 (int64x2_t) +@item poly64x2_t vreinterpretq_p64_s32 (int32x4_t) @end itemize @itemize @bullet -@item uint8x16_t vreinterpretq_u8_f32 (float32x4_t) +@item poly64x2_t vreinterpretq_p64_u8 (uint8x16_t) @end itemize @itemize @bullet -@item uint8x16_t vreinterpretq_u8_p16 (poly16x8_t) +@item poly64x2_t vreinterpretq_p64_u16 (uint16x8_t) @end itemize @itemize @bullet -@item uint8x16_t vreinterpretq_u8_p8 (poly8x16_t) +@item poly64x2_t vreinterpretq_p64_u32 (uint32x4_t) @end itemize @itemize @bullet -@item uint16x4_t vreinterpret_u16_u32 (uint32x2_t) +@item poly128_t vreinterpretq_p128_p8 (poly8x16_t) @end itemize @itemize @bullet -@item uint16x4_t vreinterpret_u16_u8 (uint8x8_t) +@item poly128_t vreinterpretq_p128_p16 (poly16x8_t) @end itemize @itemize @bullet -@item uint16x4_t vreinterpret_u16_s32 (int32x2_t) +@item poly128_t vreinterpretq_p128_f32 (float32x4_t) @end itemize @itemize @bullet -@item uint16x4_t vreinterpret_u16_s16 (int16x4_t) +@item poly128_t vreinterpretq_p128_p64 (poly64x2_t) @end itemize @itemize @bullet -@item uint16x4_t vreinterpret_u16_s8 (int8x8_t) +@item poly128_t vreinterpretq_p128_s64 (int64x2_t) @end itemize @itemize @bullet -@item uint16x4_t vreinterpret_u16_u64 (uint64x1_t) +@item poly128_t vreinterpretq_p128_u64 (uint64x2_t) @end itemize @itemize @bullet -@item uint16x4_t vreinterpret_u16_s64 (int64x1_t) +@item poly128_t vreinterpretq_p128_s8 (int8x16_t) @end itemize @itemize @bullet -@item uint16x4_t vreinterpret_u16_f32 (float32x2_t) +@item poly128_t vreinterpretq_p128_s16 (int16x8_t) @end itemize @itemize @bullet -@item uint16x4_t vreinterpret_u16_p16 (poly16x4_t) +@item poly128_t vreinterpretq_p128_s32 (int32x4_t) @end itemize @itemize @bullet -@item uint16x4_t vreinterpret_u16_p8 (poly8x8_t) +@item poly128_t vreinterpretq_p128_u8 (uint8x16_t) @end itemize @itemize @bullet -@item uint16x8_t vreinterpretq_u16_u32 (uint32x4_t) +@item poly128_t vreinterpretq_p128_u16 (uint16x8_t) @end itemize @itemize @bullet -@item uint16x8_t vreinterpretq_u16_u8 (uint8x16_t) +@item poly128_t vreinterpretq_p128_u32 (uint32x4_t) @end itemize @itemize @bullet -@item uint16x8_t vreinterpretq_u16_s32 (int32x4_t) +@item int64x2_t vreinterpretq_s64_p8 (poly8x16_t) @end itemize @itemize @bullet -@item uint16x8_t vreinterpretq_u16_s16 (int16x8_t) +@item int64x2_t vreinterpretq_s64_p16 (poly16x8_t) @end itemize @itemize @bullet -@item uint16x8_t vreinterpretq_u16_s8 (int8x16_t) +@item int64x2_t vreinterpretq_s64_f32 (float32x4_t) @end itemize @itemize @bullet -@item uint16x8_t vreinterpretq_u16_u64 (uint64x2_t) +@item int64x2_t vreinterpretq_s64_p64 (poly64x2_t) @end itemize @itemize @bullet -@item uint16x8_t vreinterpretq_u16_s64 (int64x2_t) +@item int64x2_t vreinterpretq_s64_p128 (poly128_t) @end itemize @itemize @bullet -@item uint16x8_t vreinterpretq_u16_f32 (float32x4_t) +@item int64x2_t vreinterpretq_s64_u64 (uint64x2_t) @end itemize @itemize @bullet -@item uint16x8_t vreinterpretq_u16_p16 (poly16x8_t) +@item int64x2_t vreinterpretq_s64_s8 (int8x16_t) @end itemize @itemize @bullet -@item uint16x8_t vreinterpretq_u16_p8 (poly8x16_t) +@item int64x2_t vreinterpretq_s64_s16 (int16x8_t) @end itemize @itemize @bullet -@item uint32x2_t vreinterpret_u32_u16 (uint16x4_t) +@item int64x2_t vreinterpretq_s64_s32 (int32x4_t) @end itemize @itemize @bullet -@item uint32x2_t vreinterpret_u32_u8 (uint8x8_t) +@item int64x2_t vreinterpretq_s64_u8 (uint8x16_t) @end itemize @itemize @bullet -@item uint32x2_t vreinterpret_u32_s32 (int32x2_t) +@item int64x2_t vreinterpretq_s64_u16 (uint16x8_t) @end itemize @itemize @bullet -@item uint32x2_t vreinterpret_u32_s16 (int16x4_t) +@item int64x2_t vreinterpretq_s64_u32 (uint32x4_t) @end itemize @itemize @bullet -@item uint32x2_t vreinterpret_u32_s8 (int8x8_t) +@item uint64x2_t vreinterpretq_u64_p8 (poly8x16_t) @end itemize @itemize @bullet -@item uint32x2_t vreinterpret_u32_u64 (uint64x1_t) +@item uint64x2_t vreinterpretq_u64_p16 (poly16x8_t) @end itemize @itemize @bullet -@item uint32x2_t vreinterpret_u32_s64 (int64x1_t) +@item uint64x2_t vreinterpretq_u64_f32 (float32x4_t) @end itemize @itemize @bullet -@item uint32x2_t vreinterpret_u32_f32 (float32x2_t) +@item uint64x2_t vreinterpretq_u64_p64 (poly64x2_t) @end itemize @itemize @bullet -@item uint32x2_t vreinterpret_u32_p16 (poly16x4_t) +@item uint64x2_t vreinterpretq_u64_p128 (poly128_t) @end itemize @itemize @bullet -@item uint32x2_t vreinterpret_u32_p8 (poly8x8_t) +@item uint64x2_t vreinterpretq_u64_s64 (int64x2_t) @end itemize @itemize @bullet -@item uint32x4_t vreinterpretq_u32_u16 (uint16x8_t) +@item uint64x2_t vreinterpretq_u64_s8 (int8x16_t) @end itemize @itemize @bullet -@item uint32x4_t vreinterpretq_u32_u8 (uint8x16_t) +@item uint64x2_t vreinterpretq_u64_s16 (int16x8_t) @end itemize @itemize @bullet -@item uint32x4_t vreinterpretq_u32_s32 (int32x4_t) +@item uint64x2_t vreinterpretq_u64_s32 (int32x4_t) @end itemize @itemize @bullet -@item uint32x4_t vreinterpretq_u32_s16 (int16x8_t) +@item uint64x2_t vreinterpretq_u64_u8 (uint8x16_t) @end itemize @itemize @bullet -@item uint32x4_t vreinterpretq_u32_s8 (int8x16_t) +@item uint64x2_t vreinterpretq_u64_u16 (uint16x8_t) @end itemize @itemize @bullet -@item uint32x4_t vreinterpretq_u32_u64 (uint64x2_t) +@item uint64x2_t vreinterpretq_u64_u32 (uint32x4_t) @end itemize @itemize @bullet -@item uint32x4_t vreinterpretq_u32_s64 (int64x2_t) +@item int8x16_t vreinterpretq_s8_p8 (poly8x16_t) @end itemize @itemize @bullet -@item uint32x4_t vreinterpretq_u32_f32 (float32x4_t) +@item int8x16_t vreinterpretq_s8_p16 (poly16x8_t) @end itemize @itemize @bullet -@item uint32x4_t vreinterpretq_u32_p16 (poly16x8_t) +@item int8x16_t vreinterpretq_s8_f32 (float32x4_t) +@end itemize + + +@itemize @bullet +@item int8x16_t vreinterpretq_s8_p64 (poly64x2_t) +@end itemize + + +@itemize @bullet +@item int8x16_t vreinterpretq_s8_p128 (poly128_t) +@end itemize + + +@itemize @bullet +@item int8x16_t vreinterpretq_s8_s64 (int64x2_t) +@end itemize + + +@itemize @bullet +@item int8x16_t vreinterpretq_s8_u64 (uint64x2_t) +@end itemize + + +@itemize @bullet +@item int8x16_t vreinterpretq_s8_s16 (int16x8_t) +@end itemize + + +@itemize @bullet +@item int8x16_t vreinterpretq_s8_s32 (int32x4_t) +@end itemize + + +@itemize @bullet +@item int8x16_t vreinterpretq_s8_u8 (uint8x16_t) +@end itemize + + +@itemize @bullet +@item int8x16_t vreinterpretq_s8_u16 (uint16x8_t) +@end itemize + + +@itemize @bullet +@item int8x16_t vreinterpretq_s8_u32 (uint32x4_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_p8 (poly8x16_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_p16 (poly16x8_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_f32 (float32x4_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_p64 (poly64x2_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_p128 (poly128_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_s64 (int64x2_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_u64 (uint64x2_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_s8 (int8x16_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_s32 (int32x4_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_u8 (uint8x16_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_u16 (uint16x8_t) +@end itemize + + +@itemize @bullet +@item int16x8_t vreinterpretq_s16_u32 (uint32x4_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_p8 (poly8x16_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_p16 (poly16x8_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_f32 (float32x4_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_p64 (poly64x2_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_p128 (poly128_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_s64 (int64x2_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_u64 (uint64x2_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_s8 (int8x16_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_s16 (int16x8_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_u8 (uint8x16_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_u16 (uint16x8_t) +@end itemize + + +@itemize @bullet +@item int32x4_t vreinterpretq_s32_u32 (uint32x4_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_p8 (poly8x16_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_p16 (poly16x8_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_f32 (float32x4_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_p64 (poly64x2_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_p128 (poly128_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_s64 (int64x2_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_u64 (uint64x2_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_s8 (int8x16_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_s16 (int16x8_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_s32 (int32x4_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_u16 (uint16x8_t) +@end itemize + + +@itemize @bullet +@item uint8x16_t vreinterpretq_u8_u32 (uint32x4_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_p8 (poly8x16_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_p16 (poly16x8_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_f32 (float32x4_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_p64 (poly64x2_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_p128 (poly128_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_s64 (int64x2_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_u64 (uint64x2_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_s8 (int8x16_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_s16 (int16x8_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_s32 (int32x4_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_u8 (uint8x16_t) +@end itemize + + +@itemize @bullet +@item uint16x8_t vreinterpretq_u16_u32 (uint32x4_t) @end itemize @@ -11385,5 +11872,129 @@ @end itemize +@itemize @bullet +@item uint32x4_t vreinterpretq_u32_p16 (poly16x8_t) +@end itemize + + +@itemize @bullet +@item uint32x4_t vreinterpretq_u32_f32 (float32x4_t) +@end itemize + + +@itemize @bullet +@item uint32x4_t vreinterpretq_u32_p64 (poly64x2_t) +@end itemize + + +@itemize @bullet +@item uint32x4_t vreinterpretq_u32_p128 (poly128_t) +@end itemize + + +@itemize @bullet +@item uint32x4_t vreinterpretq_u32_s64 (int64x2_t) +@end itemize + + +@itemize @bullet +@item uint32x4_t vreinterpretq_u32_u64 (uint64x2_t) +@end itemize + + +@itemize @bullet +@item uint32x4_t vreinterpretq_u32_s8 (int8x16_t) +@end itemize + + +@itemize @bullet +@item uint32x4_t vreinterpretq_u32_s16 (int16x8_t) +@end itemize + + +@itemize @bullet +@item uint32x4_t vreinterpretq_u32_s32 (int32x4_t) +@end itemize + + +@itemize @bullet +@item uint32x4_t vreinterpretq_u32_u8 (uint8x16_t) +@end itemize + + +@itemize @bullet +@item uint32x4_t vreinterpretq_u32_u16 (uint16x8_t) +@end itemize + + + + + +@itemize @bullet +@item poly128_t vldrq_p128(poly128_t const *) +@end itemize + +@itemize @bullet +@item void vstrq_p128(poly128_t *, poly128_t) +@end itemize + +@itemize @bullet +@item uint32_t vsha1h_u32 (uint32_t) +@*@emph{Form of expected instruction(s):} @code{sha1h.32 @var{q0}, @var{q1}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha1cq_u32 (uint32x4_t, uint32_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha1c.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha1pq_u32 (uint32x4_t, uint32_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha1p.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize +@itemize @bullet +@item uint32x4_t vsha1mq_u32 (uint32x4_t, uint32_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha1m.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha1su0q_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha1su0.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha1su1q_u32 (uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha1su1.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha256hq_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha256h.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha256h2q_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha256h2.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha256su0q_u32 (uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha256su0.32 @var{q0}, @var{q1}} +@end itemize + +@itemize @bullet +@item uint32x4_t vsha256su1q_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +@*@emph{Form of expected instruction(s):} @code{sha256su1.32 @var{q0}, @var{q1}, @var{q2}} +@end itemize + +@itemize @bullet +@item poly128_t vmull_p64 (poly64_t a, poly64_t b) +@*@emph{Form of expected instruction(s):} @code{vmull.p64 @var{q0}, @var{d1}, @var{d2}} +@end itemize + +@itemize @bullet +@item poly128_t vmull_high_p64 (poly64x2_t a, poly64x2_t b) +@*@emph{Form of expected instruction(s):} @code{vmull.p64 @var{q0}, @var{d1}, @var{d2}} +@end itemize -- cgit v1.2.1 From 60141df0b99ea85a2132e79c3ee2193d3ad31adc Mon Sep 17 00:00:00 2001 From: jakub Date: Thu, 19 Dec 2013 21:27:51 +0000 Subject: PR other/59545 * genattrtab.c (struct attr_hash): Change hashcode type to unsigned. (attr_hash_add_rtx, attr_hash_add_string): Change hashcode parameter to unsigned. (attr_rtx_1): Change hashcode variable to unsigned. (attr_string): Likewise. Perform first multiplication in unsigned type. * ifcvt.c (noce_try_store_flag_constants): Avoid signed integer overflows. * double-int.c (neg_double): Likewise. * stor-layout.c (set_min_and_max_values_for_integral_type): Likewise. * combine.c (force_to_mode): Likewise. * postreload.c (move2add_use_add2_insn, move2add_use_add3_insn, reload_cse_move2add, move2add_note_store): Likewise. * simplify-rtx.c (simplify_const_unary_operation, simplify_const_binary_operation): Likewise. * ipa-split.c (find_split_points): Initialize first.can_split and first.non_ssa_vars. * gengtype-state.c (read_state_files_list): Fix up check. * genautomata.c (reserv_sets_hash_value): Use portable rotation idiom. java/ * class.c (hashUtf8String): Compute hash in unsigned type. * javaop.h (WORD_TO_INT): Avoid signed integer overflow. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206134 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 24 ++++++++++++++++++++++++ gcc/combine.c | 4 +--- gcc/double-int.c | 2 +- gcc/genattrtab.c | 14 +++++++------- gcc/genautomata.c | 2 +- gcc/gengtype-state.c | 2 +- gcc/ifcvt.c | 7 ++++--- gcc/ipa-split.c | 2 ++ gcc/java/ChangeLog | 6 ++++++ gcc/java/class.c | 2 +- gcc/java/javaop.h | 2 +- gcc/postreload.c | 12 ++++++------ gcc/simplify-rtx.c | 8 ++++---- gcc/stor-layout.c | 4 ++-- 14 files changed, 61 insertions(+), 30 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bc32092b8cd..c2cc196d82d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,27 @@ +2013-12-19 Jakub Jelinek + + PR other/59545 + * genattrtab.c (struct attr_hash): Change hashcode type to unsigned. + (attr_hash_add_rtx, attr_hash_add_string): Change hashcode parameter + to unsigned. + (attr_rtx_1): Change hashcode variable to unsigned. + (attr_string): Likewise. Perform first multiplication in unsigned + type. + * ifcvt.c (noce_try_store_flag_constants): Avoid signed integer + overflows. + * double-int.c (neg_double): Likewise. + * stor-layout.c (set_min_and_max_values_for_integral_type): Likewise. + * combine.c (force_to_mode): Likewise. + * postreload.c (move2add_use_add2_insn, move2add_use_add3_insn, + reload_cse_move2add, move2add_note_store): Likewise. + * simplify-rtx.c (simplify_const_unary_operation, + simplify_const_binary_operation): Likewise. + * ipa-split.c (find_split_points): Initialize first.can_split + and first.non_ssa_vars. + * gengtype-state.c (read_state_files_list): Fix up check. + * genautomata.c (reserv_sets_hash_value): Use portable rotation + idiom. + 2013-12-19 Kyrylo Tkachov * config/arm/neon-docgen.ml: Add crypto intrinsics documentation. diff --git a/gcc/combine.c b/gcc/combine.c index dea6c2818bb..ed1dac9d053 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -8200,9 +8200,7 @@ force_to_mode (rtx x, enum machine_mode mode, unsigned HOST_WIDE_INT mask, /* If X is (minus C Y) where C's least set bit is larger than any bit in the mask, then we may replace with (neg Y). */ if (CONST_INT_P (XEXP (x, 0)) - && (((unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 0)) - & -INTVAL (XEXP (x, 0)))) - > mask)) + && ((UINTVAL (XEXP (x, 0)) & -UINTVAL (XEXP (x, 0))) > mask)) { x = simplify_gen_unary (NEG, GET_MODE (x), XEXP (x, 1), GET_MODE (x)); diff --git a/gcc/double-int.c b/gcc/double-int.c index 3803a63e3a9..a810a050e57 100644 --- a/gcc/double-int.c +++ b/gcc/double-int.c @@ -138,7 +138,7 @@ neg_double (unsigned HOST_WIDE_INT l1, HOST_WIDE_INT h1, if (l1 == 0) { *lv = 0; - *hv = - h1; + *hv = - (unsigned HOST_WIDE_INT) h1; return (*hv & h1) < 0; } else diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c index c0125d103b7..70f35316404 100644 --- a/gcc/genattrtab.c +++ b/gcc/genattrtab.c @@ -320,7 +320,7 @@ static FILE *attr_file, *dfa_file, *latency_file; struct attr_hash { struct attr_hash *next; /* Next structure in the bucket. */ - int hashcode; /* Hash code of this rtx or string. */ + unsigned int hashcode; /* Hash code of this rtx or string. */ union { char *str; /* The string (negative hash codes) */ @@ -345,7 +345,7 @@ static struct attr_hash *attr_hash_table[RTL_HASH_SIZE]; /* Add an entry to the hash table for RTL with hash code HASHCODE. */ static void -attr_hash_add_rtx (int hashcode, rtx rtl) +attr_hash_add_rtx (unsigned int hashcode, rtx rtl) { struct attr_hash *h; @@ -359,7 +359,7 @@ attr_hash_add_rtx (int hashcode, rtx rtl) /* Add an entry to the hash table for STRING with hash code HASHCODE. */ static void -attr_hash_add_string (int hashcode, char *str) +attr_hash_add_string (unsigned int hashcode, char *str) { struct attr_hash *h; @@ -384,7 +384,7 @@ static rtx attr_rtx_1 (enum rtx_code code, va_list p) { rtx rt_val = NULL_RTX;/* RTX to return to caller... */ - int hashcode; + unsigned int hashcode; struct attr_hash *h; struct obstack *old_obstack = rtl_obstack; @@ -612,15 +612,15 @@ static char * attr_string (const char *str, int len) { struct attr_hash *h; - int hashcode; + unsigned int hashcode; int i; char *new_str; /* Compute the hash code. */ - hashcode = (len + 1) * 613 + (unsigned) str[0]; + hashcode = (len + 1) * 613U + (unsigned) str[0]; for (i = 1; i < len; i += 2) hashcode = ((hashcode * 613) + (unsigned) str[i]); - if (hashcode < 0) + if ((int) hashcode < 0) hashcode = -hashcode; /* Search the table for the string. */ diff --git a/gcc/genautomata.c b/gcc/genautomata.c index 5580c69a352..372ba90efc8 100644 --- a/gcc/genautomata.c +++ b/gcc/genautomata.c @@ -3494,7 +3494,7 @@ reserv_sets_hash_value (reserv_sets_t reservs) { reservs_num--; hash_value += ((*reserv_ptr >> i) - | (*reserv_ptr << (sizeof (set_el_t) * CHAR_BIT - i))); + | (*reserv_ptr << ((sizeof (set_el_t) * CHAR_BIT) & -i))); i++; if (i == sizeof (set_el_t) * CHAR_BIT) i = 0; diff --git a/gcc/gengtype-state.c b/gcc/gengtype-state.c index fda473a2dbe..ef7713ff06a 100644 --- a/gcc/gengtype-state.c +++ b/gcc/gengtype-state.c @@ -2651,7 +2651,7 @@ read_state_files_list (void) "expecting file in !fileslist of state file"); }; t0 = peek_state_token (0); - if (!state_token_kind (t0) == STOK_RIGHTPAR) + if (state_token_kind (t0) != STOK_RIGHTPAR) fatal_reading_state (t0, "missing ) for !fileslist in state file"); next_state_tokens (1); } diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 569b9bf46c4..db5b8a23eb8 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -1112,12 +1112,13 @@ noce_try_store_flag_constants (struct noce_if_info *if_info) ifalse = INTVAL (if_info->a); itrue = INTVAL (if_info->b); + diff = (unsigned HOST_WIDE_INT) itrue - ifalse; /* Make sure we can represent the difference between the two values. */ - if ((itrue - ifalse > 0) + if ((diff > 0) != ((ifalse < 0) != (itrue < 0) ? ifalse < 0 : ifalse < itrue)) return FALSE; - diff = trunc_int_for_mode (itrue - ifalse, mode); + diff = trunc_int_for_mode (diff, mode); can_reverse = (reversed_comparison_code (if_info->cond, if_info->jump) != UNKNOWN); @@ -1148,7 +1149,7 @@ noce_try_store_flag_constants (struct noce_if_info *if_info) if (reversep) { tmp = itrue; itrue = ifalse; ifalse = tmp; - diff = trunc_int_for_mode (-diff, mode); + diff = trunc_int_for_mode (-(unsigned HOST_WIDE_INT) diff, mode); } start_sequence (); diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c index 43758b6db7a..40c8fd6f99b 100644 --- a/gcc/ipa-split.c +++ b/gcc/ipa-split.c @@ -950,7 +950,9 @@ find_split_points (int overall_time, int overall_size) first.earliest = INT_MAX; first.set_ssa_names = 0; first.used_ssa_names = 0; + first.non_ssa_vars = 0; first.bbs_visited = 0; + first.can_split = false; stack.safe_push (first); ENTRY_BLOCK_PTR_FOR_FN (cfun)->aux = (void *)(intptr_t)-1; diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 3b8a95a6baf..5ab19210cb7 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,9 @@ +2013-12-19 Jakub Jelinek + + PR other/59545 + * class.c (hashUtf8String): Compute hash in unsigned type. + * javaop.h (WORD_TO_INT): Avoid signed integer overflow. + 2013-11-22 Andrew MacLeod * java-gimplify.c: Add required include files from gimple.h. diff --git a/gcc/java/class.c b/gcc/java/class.c index 532c9c1d94f..e5d2e6d8e8c 100644 --- a/gcc/java/class.c +++ b/gcc/java/class.c @@ -920,7 +920,7 @@ hashUtf8String (const char *str, int len) { const unsigned char* ptr = (const unsigned char*) str; const unsigned char *limit = ptr + len; - int32 hash = 0; + uint32 hash = 0; for (; ptr < limit;) { int ch = UTF8_GET (ptr, limit); diff --git a/gcc/java/javaop.h b/gcc/java/javaop.h index 574c10c7992..bffa857cc3e 100644 --- a/gcc/java/javaop.h +++ b/gcc/java/javaop.h @@ -154,7 +154,7 @@ WORD_TO_INT(jword w) { jint n = w & 0xffffffff; /* Mask lower 32 bits. */ n ^= (jint)1 << 31; - n -= (jint)1 << 31; /* Sign extend lower 32 bits to upper. */ + n -= (uint32)1 << 31; /* Sign extend lower 32 bits to upper. */ return n; } diff --git a/gcc/postreload.c b/gcc/postreload.c index 37bd9ff6ae3..478a552608f 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -1766,7 +1766,7 @@ move2add_use_add2_insn (rtx reg, rtx sym, rtx off, rtx insn) rtx pat = PATTERN (insn); rtx src = SET_SRC (pat); int regno = REGNO (reg); - rtx new_src = gen_int_mode (INTVAL (off) - reg_offset[regno], + rtx new_src = gen_int_mode (UINTVAL (off) - reg_offset[regno], GET_MODE (reg)); bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn)); bool changed = false; @@ -1866,7 +1866,7 @@ move2add_use_add3_insn (rtx reg, rtx sym, rtx off, rtx insn) && reg_symbol_ref[i] != NULL_RTX && rtx_equal_p (sym, reg_symbol_ref[i])) { - rtx new_src = gen_int_mode (INTVAL (off) - reg_offset[i], + rtx new_src = gen_int_mode (UINTVAL (off) - reg_offset[i], GET_MODE (reg)); /* (set (reg) (plus (reg) (const_int 0))) is not canonical; use (set (reg) (reg)) instead. @@ -1901,7 +1901,7 @@ move2add_use_add3_insn (rtx reg, rtx sym, rtx off, rtx insn) tem = gen_rtx_REG (GET_MODE (reg), min_regno); if (i != min_regno) { - rtx new_src = gen_int_mode (INTVAL (off) - reg_offset[min_regno], + rtx new_src = gen_int_mode (UINTVAL (off) - reg_offset[min_regno], GET_MODE (reg)); tem = gen_rtx_PLUS (GET_MODE (reg), tem, new_src); } @@ -2010,7 +2010,7 @@ reload_cse_move2add (rtx first) && CONST_INT_P (XEXP (SET_SRC (set), 1))) { rtx src3 = XEXP (SET_SRC (set), 1); - HOST_WIDE_INT added_offset = INTVAL (src3); + unsigned HOST_WIDE_INT added_offset = UINTVAL (src3); HOST_WIDE_INT base_offset = reg_offset[REGNO (src)]; HOST_WIDE_INT regno_offset = reg_offset[regno]; rtx new_src = @@ -2224,7 +2224,7 @@ move2add_note_store (rtx dst, const_rtx set, void *data) { rtx src = SET_SRC (set); rtx base_reg; - HOST_WIDE_INT offset; + unsigned HOST_WIDE_INT offset; int base_regno; switch (GET_CODE (src)) @@ -2235,7 +2235,7 @@ move2add_note_store (rtx dst, const_rtx set, void *data) base_reg = XEXP (src, 0); if (CONST_INT_P (XEXP (src, 1))) - offset = INTVAL (XEXP (src, 1)); + offset = UINTVAL (XEXP (src, 1)); else if (REG_P (XEXP (src, 1)) && move2add_valid_value_p (REGNO (XEXP (src, 1)), mode)) { diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index 78cd665e9a8..3019fd86112 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -1647,7 +1647,7 @@ simplify_const_unary_operation (enum rtx_code code, enum machine_mode mode, break; case NEG: - val = - arg0; + val = - (unsigned HOST_WIDE_INT) arg0; break; case ABS: @@ -4117,15 +4117,15 @@ simplify_const_binary_operation (enum rtx_code code, enum machine_mode mode, switch (code) { case PLUS: - val = arg0s + arg1s; + val = (unsigned HOST_WIDE_INT) arg0s + arg1s; break; case MINUS: - val = arg0s - arg1s; + val = (unsigned HOST_WIDE_INT) arg0s - arg1s; break; case MULT: - val = arg0s * arg1s; + val = (unsigned HOST_WIDE_INT) arg0s * arg1s; break; case DIV: diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 9325525dd9f..675a12386eb 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -2521,7 +2521,7 @@ set_min_and_max_values_for_integral_type (tree type, max_value = build_int_cst_wide (type, precision - HOST_BITS_PER_WIDE_INT >= 0 ? -1 - : ((HOST_WIDE_INT) 1 << precision) - 1, + : (HOST_WIDE_INT_1U << precision) - 1, precision - HOST_BITS_PER_WIDE_INT > 0 ? ((unsigned HOST_WIDE_INT) ~0 >> (HOST_BITS_PER_WIDE_INT @@ -2534,7 +2534,7 @@ set_min_and_max_values_for_integral_type (tree type, = build_int_cst_wide (type, (precision - HOST_BITS_PER_WIDE_INT > 0 ? 0 - : (HOST_WIDE_INT) (-1) << (precision - 1)), + : HOST_WIDE_INT_M1U << (precision - 1)), (((HOST_WIDE_INT) (-1) << (precision - HOST_BITS_PER_WIDE_INT - 1 > 0 ? precision - HOST_BITS_PER_WIDE_INT - 1 -- cgit v1.2.1 From 4a3e6cf531ccef9db5d198c21362066cd2f09b63 Mon Sep 17 00:00:00 2001 From: tejohnson Date: Thu, 19 Dec 2013 22:11:25 +0000 Subject: 2013-12-19 Teresa Johnson PR gcov-profile/59542 * bb-reorder.c (duplicate_computed_gotos): Invoke fixup_partitions if we have made any changes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206135 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/bb-reorder.c | 7 +++++++ 2 files changed, 13 insertions(+) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c2cc196d82d..32ac966eaba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-19 Teresa Johnson + + PR gcov-profile/59542 + * bb-reorder.c (duplicate_computed_gotos): Invoke fixup_partitions + if we have made any changes. + 2013-12-19 Jakub Jelinek PR other/59545 diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index 7f8ea075e1b..7b8584f8ff9 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -2390,6 +2390,7 @@ duplicate_computed_gotos (void) basic_block bb, new_bb; bitmap candidates; int max_size; + bool changed = false; if (n_basic_blocks_for_fn (cfun) <= NUM_FIXED_BLOCKS + 1) return 0; @@ -2486,9 +2487,15 @@ duplicate_computed_gotos (void) new_bb->aux = bb->aux; bb->aux = new_bb; new_bb->flags |= BB_VISITED; + changed = true; } done: + /* Duplicating blocks above will redirect edges and may cause hot blocks + previously reached by both hot and cold blocks to become dominated only + by cold blocks. */ + if (changed) + fixup_partitions (); cfg_layout_finalize (); BITMAP_FREE (candidates); -- cgit v1.2.1 From af173e5820950d8d89a4a84b50e0a9e20f40daa3 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 20 Dec 2013 00:16:43 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206138 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index c706ed7b963..2bfcc2a29de 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131219 +20131220 -- cgit v1.2.1 From 84f9cfc3311019882a8c1e36a69873f830d137fb Mon Sep 17 00:00:00 2001 From: law Date: Fri, 20 Dec 2013 04:33:34 +0000 Subject: * doc/invoke.texi: (dump-rtl-ree): Fix typo and clarify ree handles both zero and sign extension. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206139 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/doc/invoke.texi | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 32ac966eaba..1adb68ff912 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-19 Jeff Law + + * doc/invoke.texi: (dump-rtl-ree): Fix typo and clarify ree + handles both zero and sign extension. + 2013-12-19 Teresa Johnson PR gcov-profile/59542 diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 689b3ab87a4..e65a28c2155 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -5978,9 +5978,9 @@ Dump after generating the function prologues and epilogues. @option{-fdump-rtl-sched1} and @option{-fdump-rtl-sched2} enable dumping after the basic block scheduling passes. -@item -fdump-rtl-see -@opindex fdump-rtl-see -Dump after sign extension elimination. +@item -fdump-rtl-ree +@opindex fdump-rtl-ree +Dump after sign/zero extension elimination. @item -fdump-rtl-seqabstr @opindex fdump-rtl-seqabstr -- cgit v1.2.1 From 433ee92e68029b15162b7c9a2f347d2a749317fb Mon Sep 17 00:00:00 2001 From: jasonwucj Date: Fri, 20 Dec 2013 09:02:58 +0000 Subject: 2013-12-20 Chung-Ju Wu * config/nds32/nds32.h (NDS32_MODE_TYPE_ALIGN): New macro. (NDS32_AVAILABLE_REGNUM_FOR_ARG): Use more accurate alignment checking to determine available register number. * config/nds32/nds32.c (nds32_needs_double_word_align): Use new macro NDS32_MODE_TYPE_ALIGN. (nds32_function_arg): Refine code layout. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206142 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/config/nds32/nds32.c | 12 ++++++------ gcc/config/nds32/nds32.h | 19 +++++++++++++++---- 3 files changed, 30 insertions(+), 10 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1adb68ff912..2301ccbea50 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2013-12-20 Chung-Ju Wu + + * config/nds32/nds32.h (NDS32_MODE_TYPE_ALIGN): New macro. + (NDS32_AVAILABLE_REGNUM_FOR_ARG): Use more accurate alignment checking + to determine available register number. + * config/nds32/nds32.c (nds32_needs_double_word_align): Use new + macro NDS32_MODE_TYPE_ALIGN. + (nds32_function_arg): Refine code layout. + 2013-12-19 Jeff Law * doc/invoke.texi: (dump-rtl-ree): Fix typo and clarify ree diff --git a/gcc/config/nds32/nds32.c b/gcc/config/nds32/nds32.c index 124b1af8a2c..e7d1dc0b2d9 100644 --- a/gcc/config/nds32/nds32.c +++ b/gcc/config/nds32/nds32.c @@ -1438,8 +1438,8 @@ nds32_needs_double_word_align (enum machine_mode mode, const_tree type) { unsigned int align; - /* When 'type' is nonnull, there is no need to look at 'mode'. */ - align = (type ? TYPE_ALIGN (type) : GET_MODE_ALIGNMENT (mode)); + /* Pick up the alignment according to the mode or type. */ + align = NDS32_MODE_TYPE_ALIGN (mode, type); return (align > PARM_BOUNDARY); } @@ -1853,10 +1853,10 @@ nds32_function_arg (cumulative_args_t ca, enum machine_mode mode, if (NDS32_ARG_PASS_IN_REG_P (cum->reg_offset, mode, type)) { /* Pick up the next available register number. */ - return gen_rtx_REG (mode, - NDS32_AVAILABLE_REGNUM_FOR_ARG (cum->reg_offset, - mode, - type)); + unsigned int regno; + + regno = NDS32_AVAILABLE_REGNUM_FOR_ARG (cum->reg_offset, mode, type); + return gen_rtx_REG (mode, regno); } else { diff --git a/gcc/config/nds32/nds32.h b/gcc/config/nds32/nds32.h index 74f126cecc4..1e798e41059 100644 --- a/gcc/config/nds32/nds32.h +++ b/gcc/config/nds32/nds32.h @@ -126,6 +126,11 @@ enum nds32_16bit_address_type #define NDS32_SINGLE_WORD_ALIGN_P(value) (((value) & 0x03) == 0) #define NDS32_DOUBLE_WORD_ALIGN_P(value) (((value) & 0x07) == 0) +/* Get alignment according to mode or type information. + When 'type' is nonnull, there is no need to look at 'mode'. */ +#define NDS32_MODE_TYPE_ALIGN(mode, type) \ + (type ? TYPE_ALIGN (type) : GET_MODE_ALIGNMENT (mode)) + /* Round X up to the nearest double word. */ #define NDS32_ROUND_UP_DOUBLE_WORD(value) (((value) + 7) & ~7) @@ -142,12 +147,18 @@ enum nds32_16bit_address_type /* This macro is used to return the register number for passing argument. We need to obey the following rules: 1. If it is required MORE THAN one register, - make sure the register number is a even value. + we need to further check if it really needs to be + aligned on double words. + a) If double word alignment is necessary, + the register number must be even value. + b) Otherwise, the register number can be odd or even value. 2. If it is required ONLY one register, the register number can be odd or even value. */ -#define NDS32_AVAILABLE_REGNUM_FOR_ARG(reg_offset, mode, type) \ - ((NDS32_NEED_N_REGS_FOR_ARG (mode, type) > 1) \ - ? (((reg_offset) + NDS32_GPR_ARG_FIRST_REGNUM + 1) & ~1) \ +#define NDS32_AVAILABLE_REGNUM_FOR_ARG(reg_offset, mode, type) \ + ((NDS32_NEED_N_REGS_FOR_ARG (mode, type) > 1) \ + ? ((NDS32_MODE_TYPE_ALIGN (mode, type) > PARM_BOUNDARY) \ + ? (((reg_offset) + NDS32_GPR_ARG_FIRST_REGNUM + 1) & ~1) \ + : ((reg_offset) + NDS32_GPR_ARG_FIRST_REGNUM)) \ : ((reg_offset) + NDS32_GPR_ARG_FIRST_REGNUM)) /* This macro is to check if there are still available registers -- cgit v1.2.1 From ec08f7b0e683045053277a9ba0f0f0864a2d4289 Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 20 Dec 2013 09:05:04 +0000 Subject: * ubsan.c: Include tree-ssanames.h, asan.h and gimplify-me.h. (ubsan_type_descriptor): Handle BOOLEAN_TYPE and ENUMERAL_TYPE like INTEGER_TYPE. (instrument_bool_enum_load): New function. (ubsan_pass): Call it. (gate_ubsan): Also enable for SANITIZE_BOOL or SANITIZE_ENUM. * asan.c (create_cond_insert_point): No longer static. * asan.h (create_cond_insert_point): Declare. * sanitizer.def (BUILT_IN_UBSAN_HANDLE_LOAD_INVALID_VALUE): New built-in. * opts.c (common_handle_option): Handle -fsanitize=bool and -fsanitize=enum. * builtins.c (fold_builtin_memory_op): When sanitizing bool and enum loads, don't use enum or bool types for memcpy folding. * flag-types.h (SANITIZE_BOOL, SANITIZE_ENUM): New. (SANITIZE_UNDEFINED): Or these in. * c-c++-common/ubsan/load-bool-enum.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206143 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 19 ++++ gcc/asan.c | 2 +- gcc/asan.h | 3 + gcc/builtins.c | 23 +++++ gcc/flag-types.h | 4 +- gcc/opts.c | 2 + gcc/sanitizer.def | 4 + gcc/testsuite/ChangeLog | 4 + gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c | 29 ++++++ gcc/ubsan.c | 110 +++++++++++++++++++++- 10 files changed, 197 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2301ccbea50..ccffe8e0933 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,22 @@ +2013-12-20 Jakub Jelinek + + * ubsan.c: Include tree-ssanames.h, asan.h and gimplify-me.h. + (ubsan_type_descriptor): Handle BOOLEAN_TYPE and ENUMERAL_TYPE + like INTEGER_TYPE. + (instrument_bool_enum_load): New function. + (ubsan_pass): Call it. + (gate_ubsan): Also enable for SANITIZE_BOOL or SANITIZE_ENUM. + * asan.c (create_cond_insert_point): No longer static. + * asan.h (create_cond_insert_point): Declare. + * sanitizer.def (BUILT_IN_UBSAN_HANDLE_LOAD_INVALID_VALUE): New + built-in. + * opts.c (common_handle_option): Handle -fsanitize=bool and + -fsanitize=enum. + * builtins.c (fold_builtin_memory_op): When sanitizing bool + and enum loads, don't use enum or bool types for memcpy folding. + * flag-types.h (SANITIZE_BOOL, SANITIZE_ENUM): New. + (SANITIZE_UNDEFINED): Or these in. + 2013-12-20 Chung-Ju Wu * config/nds32/nds32.h (NDS32_MODE_TYPE_ALIGN): New macro. diff --git a/gcc/asan.c b/gcc/asan.c index 1394e1314c5..d4059d6e7dd 100644 --- a/gcc/asan.c +++ b/gcc/asan.c @@ -1337,7 +1337,7 @@ report_error_func (bool is_store, int size_in_bytes) same as what ITER was pointing to prior to calling this function, if BEFORE_P is true; otherwise, it is its following statement. */ -static gimple_stmt_iterator +gimple_stmt_iterator create_cond_insert_point (gimple_stmt_iterator *iter, bool before_p, bool then_more_likely_p, diff --git a/gcc/asan.h b/gcc/asan.h index 42383c48525..8ffd90e94f4 100644 --- a/gcc/asan.h +++ b/gcc/asan.h @@ -29,6 +29,9 @@ extern bool asan_protect_global (tree); extern void initialize_sanitizer_builtins (void); extern tree asan_dynamic_init_call (bool); +extern gimple_stmt_iterator create_cond_insert_point + (gimple_stmt_iterator *, bool, bool, bool, basic_block *, basic_block *); + /* Alias set for accessing the shadow memory. */ extern alias_set_type asan_shadow_set; diff --git a/gcc/builtins.c b/gcc/builtins.c index 4f1c8180a5b..5b6d39a8b60 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -8912,6 +8912,29 @@ fold_builtin_memory_op (location_t loc, tree dest, tree src, off0 = build_int_cst (build_pointer_type_for_mode (char_type_node, ptr_mode, true), 0); + /* For -fsanitize={bool,enum} make sure the load isn't performed in + the bool or enum type. */ + if (((flag_sanitize & SANITIZE_BOOL) + && TREE_CODE (desttype) == BOOLEAN_TYPE) + || ((flag_sanitize & SANITIZE_ENUM) + && TREE_CODE (desttype) == ENUMERAL_TYPE)) + { + tree destitype + = lang_hooks.types.type_for_mode (TYPE_MODE (desttype), + TYPE_UNSIGNED (desttype)); + desttype = build_aligned_type (destitype, TYPE_ALIGN (desttype)); + } + if (((flag_sanitize & SANITIZE_BOOL) + && TREE_CODE (srctype) == BOOLEAN_TYPE) + || ((flag_sanitize & SANITIZE_ENUM) + && TREE_CODE (srctype) == ENUMERAL_TYPE)) + { + tree srcitype + = lang_hooks.types.type_for_mode (TYPE_MODE (srctype), + TYPE_UNSIGNED (srctype)); + srctype = build_aligned_type (srcitype, TYPE_ALIGN (srctype)); + } + destvar = dest; STRIP_NOPS (destvar); if (TREE_CODE (destvar) == ADDR_EXPR diff --git a/gcc/flag-types.h b/gcc/flag-types.h index bea268f9aba..e4792dd3cfd 100644 --- a/gcc/flag-types.h +++ b/gcc/flag-types.h @@ -216,9 +216,11 @@ enum sanitize_code { SANITIZE_NULL = 1 << 7, SANITIZE_RETURN = 1 << 8, SANITIZE_SI_OVERFLOW = 1 << 9, + SANITIZE_BOOL = 1 << 10, + SANITIZE_ENUM = 1 << 11, SANITIZE_UNDEFINED = SANITIZE_SHIFT | SANITIZE_DIVIDE | SANITIZE_UNREACHABLE | SANITIZE_VLA | SANITIZE_NULL | SANITIZE_RETURN - | SANITIZE_SI_OVERFLOW + | SANITIZE_SI_OVERFLOW | SANITIZE_BOOL | SANITIZE_ENUM }; /* flag_vtable_verify initialization levels. */ diff --git a/gcc/opts.c b/gcc/opts.c index 5be03faa703..251605ceb96 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -1462,6 +1462,8 @@ common_handle_option (struct gcc_options *opts, { "null", SANITIZE_NULL, sizeof "null" - 1 }, { "signed-integer-overflow", SANITIZE_SI_OVERFLOW, sizeof "signed-integer-overflow" -1 }, + { "bool", SANITIZE_BOOL, sizeof "bool" - 1 }, + { "enum", SANITIZE_ENUM, sizeof "enum" - 1 }, { NULL, 0, 0 } }; const char *comma; diff --git a/gcc/sanitizer.def b/gcc/sanitizer.def index 9c94650321e..43f7467fc2a 100644 --- a/gcc/sanitizer.def +++ b/gcc/sanitizer.def @@ -331,3 +331,7 @@ DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_NEGATE_OVERFLOW, "__ubsan_handle_negate_overflow", BT_FN_VOID_PTR_PTR, ATTR_COLD_NOTHROW_LEAF_LIST) +DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_LOAD_INVALID_VALUE, + "__ubsan_handle_load_invalid_value", + BT_FN_VOID_PTR_PTR, + ATTR_COLD_NOTHROW_LEAF_LIST) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7e40136359c..4d994b41472 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-20 Jakub Jelinek + + * c-c++-common/ubsan/load-bool-enum.c: New test. + 2013-12-04 Kyrylo Tkachov * lib/target-supports.exp (check_effective_target_arm_crypto_ok): diff --git a/gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c b/gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c new file mode 100644 index 00000000000..db346cbf719 --- /dev/null +++ b/gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c @@ -0,0 +1,29 @@ +/* { dg-do run } */ +/* { dg-options "-fsanitize=bool,enum" } */ + +#ifndef __cplusplus +#define bool _Bool +#endif +enum A { B = -3, C = 2 } a; +bool b; + +__attribute__((noinline, noclone)) enum A +foo (bool *p) +{ + *p = b; /* { dg-output "load-bool-enum.c:13:\[^\n\r]*runtime error: load of value 4, which is not a valid value for type '(_B|b)ool'(\n|\r\n|\r)" } */ + return a; /* { dg-output "\[^\n\r]*load-bool-enum.c:14:\[^\n\r]*runtime error: load of value 9, which is not a valid value for type 'A'(\n|\r\n|\r)" { target c++ } } */ +} + +int +main () +{ + char c = 4; + int d = 9; + if (sizeof (int) != sizeof (a) || sizeof (b) != 1) + return 0; + __builtin_memcpy (&a, &d, sizeof (int)); + __builtin_memcpy (&b, &c, 1); + bool e; + foo (&e); + return 0; +} diff --git a/gcc/ubsan.c b/gcc/ubsan.c index 51b4f8dd7bf..dfc9fbc6ab6 100644 --- a/gcc/ubsan.c +++ b/gcc/ubsan.c @@ -43,6 +43,9 @@ along with GCC; see the file COPYING3. If not see #include "c-family/c-common.h" #include "rtl.h" #include "expr.h" +#include "tree-ssanames.h" +#include "asan.h" +#include "gimplify-me.h" /* Map from a tree to a VAR_DECL tree. */ @@ -344,6 +347,8 @@ ubsan_type_descriptor (tree type, bool want_pointer_type_p) switch (TREE_CODE (type)) { + case BOOLEAN_TYPE: + case ENUMERAL_TYPE: case INTEGER_TYPE: tkind = 0x0000; break; @@ -733,6 +738,104 @@ instrument_si_overflow (gimple_stmt_iterator gsi) } } +/* Instrument loads from (non-bitfield) bool and C++ enum values + to check if the memory value is outside of the range of the valid + type values. */ + +static void +instrument_bool_enum_load (gimple_stmt_iterator *gsi) +{ + gimple stmt = gsi_stmt (*gsi); + tree rhs = gimple_assign_rhs1 (stmt); + tree type = TREE_TYPE (rhs); + tree minv = NULL_TREE, maxv = NULL_TREE; + + if (TREE_CODE (type) == BOOLEAN_TYPE && (flag_sanitize & SANITIZE_BOOL)) + { + minv = boolean_false_node; + maxv = boolean_true_node; + } + else if (TREE_CODE (type) == ENUMERAL_TYPE + && (flag_sanitize & SANITIZE_ENUM) + && TREE_TYPE (type) != NULL_TREE + && TREE_CODE (TREE_TYPE (type)) == INTEGER_TYPE + && (TYPE_PRECISION (TREE_TYPE (type)) + < GET_MODE_PRECISION (TYPE_MODE (type)))) + { + minv = TYPE_MIN_VALUE (TREE_TYPE (type)); + maxv = TYPE_MAX_VALUE (TREE_TYPE (type)); + } + else + return; + + int modebitsize = GET_MODE_BITSIZE (TYPE_MODE (type)); + HOST_WIDE_INT bitsize, bitpos; + tree offset; + enum machine_mode mode; + int volatilep = 0, unsignedp = 0; + tree base = get_inner_reference (rhs, &bitsize, &bitpos, &offset, &mode, + &unsignedp, &volatilep, false); + tree utype = build_nonstandard_integer_type (modebitsize, 1); + + if ((TREE_CODE (base) == VAR_DECL && DECL_HARD_REGISTER (base)) + || (bitpos % modebitsize) != 0 + || bitsize != modebitsize + || GET_MODE_BITSIZE (TYPE_MODE (utype)) != modebitsize + || TREE_CODE (gimple_assign_lhs (stmt)) != SSA_NAME) + return; + + location_t loc = gimple_location (stmt); + tree ptype = build_pointer_type (TREE_TYPE (rhs)); + tree atype = reference_alias_ptr_type (rhs); + gimple g = gimple_build_assign (make_ssa_name (ptype, NULL), + build_fold_addr_expr (rhs)); + gimple_set_location (g, loc); + gsi_insert_before (gsi, g, GSI_SAME_STMT); + tree mem = build2 (MEM_REF, utype, gimple_assign_lhs (g), + build_int_cst (atype, 0)); + tree urhs = make_ssa_name (utype, NULL); + g = gimple_build_assign (urhs, mem); + gimple_set_location (g, loc); + gsi_insert_before (gsi, g, GSI_SAME_STMT); + minv = fold_convert (utype, minv); + maxv = fold_convert (utype, maxv); + if (!integer_zerop (minv)) + { + g = gimple_build_assign_with_ops (MINUS_EXPR, + make_ssa_name (utype, NULL), + urhs, minv); + gimple_set_location (g, loc); + gsi_insert_before (gsi, g, GSI_SAME_STMT); + } + + gimple_stmt_iterator gsi2 = *gsi; + basic_block then_bb, fallthru_bb; + *gsi = create_cond_insert_point (gsi, true, false, true, + &then_bb, &fallthru_bb); + g = gimple_build_cond (GT_EXPR, gimple_assign_lhs (g), + int_const_binop (MINUS_EXPR, maxv, minv), + NULL_TREE, NULL_TREE); + gimple_set_location (g, loc); + gsi_insert_after (gsi, g, GSI_NEW_STMT); + + gimple_assign_set_rhs_with_ops (&gsi2, NOP_EXPR, urhs, NULL_TREE); + update_stmt (stmt); + + tree data = ubsan_create_data ("__ubsan_invalid_value_data", + loc, NULL, + ubsan_type_descriptor (type, false), + NULL_TREE); + data = build_fold_addr_expr_loc (loc, data); + tree fn = builtin_decl_explicit (BUILT_IN_UBSAN_HANDLE_LOAD_INVALID_VALUE); + + gsi2 = gsi_after_labels (then_bb); + tree val = force_gimple_operand_gsi (&gsi2, ubsan_encode_value (urhs), + true, NULL_TREE, true, GSI_SAME_STMT); + g = gimple_build_call (fn, 2, data, val); + gimple_set_location (g, loc); + gsi_insert_before (&gsi2, g, GSI_SAME_STMT); +} + /* Gate and execute functions for ubsan pass. */ static unsigned int @@ -764,6 +867,10 @@ ubsan_pass (void) instrument_null (gsi, false); } + if (flag_sanitize & (SANITIZE_BOOL | SANITIZE_ENUM) + && gimple_assign_load_p (stmt)) + instrument_bool_enum_load (&gsi); + gsi_next (&gsi); } } @@ -773,7 +880,8 @@ ubsan_pass (void) static bool gate_ubsan (void) { - return flag_sanitize & (SANITIZE_NULL | SANITIZE_SI_OVERFLOW); + return flag_sanitize & (SANITIZE_NULL | SANITIZE_SI_OVERFLOW + | SANITIZE_BOOL | SANITIZE_ENUM); } namespace { -- cgit v1.2.1 From f86a627fc0b19a6f6a78488eba7c0f81a7f788d9 Mon Sep 17 00:00:00 2001 From: kyukhin Date: Fri, 20 Dec 2013 09:11:48 +0000 Subject: * config.gcc: Support march=broadwell. * config/i386/driver-i386.c (host_detect_local_cpu): Detect Broadwell. * config/i386/i386.c (ix86_option_override_internal): Add broadwell. * doc/invoke.texi: Document march=broadwell. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206144 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config.gcc | 2 +- gcc/config/i386/driver-i386.c | 4 +++- gcc/config/i386/i386.c | 7 +++++++ gcc/doc/invoke.texi | 5 +++++ 5 files changed, 23 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ccffe8e0933..5636956b33d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-12-20 Tocar Ilya + + * config.gcc: Support march=broadwell. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect Broadwell. + * config/i386/i386.c (ix86_option_override_internal): Add broadwell. + * doc/invoke.texi: Document march=broadwell. + 2013-12-20 Jakub Jelinek * ubsan.c: Include tree-ssanames.h, asan.h and gimplify-me.h. diff --git a/gcc/config.gcc b/gcc/config.gcc index fbfc121f9c6..24dbaf92c5f 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -3676,7 +3676,7 @@ case "${target}" in | opteron-sse3 | athlon-fx | bdver4 | bdver3 | bdver2 \ | bdver1 | btver2 | btver1 | amdfam10 | barcelona \ | nocona | core2 | corei7 | corei7-avx | core-avx-i \ - | core-avx2 | atom | slm) + | core-avx2 | broadwell | atom | slm) # OK ;; *) diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index 0b8af3f4ffd..26ae601068f 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -689,7 +689,9 @@ const char *host_detect_local_cpu (int argc, const char **argv) if (arch) { /* This is unknown family 0x6 CPU. */ - if (has_avx2) + if (has_adx) + cpu = "broadwell"; + else if (has_avx2) /* Assume Haswell. */ cpu = "core-avx2"; else if (has_avx) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index f82d1a40470..1710e8c8e38 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3131,6 +3131,13 @@ ix86_option_override_internal (bool main_args_p, | PTA_RDRND | PTA_F16C | PTA_BMI | PTA_BMI2 | PTA_LZCNT | PTA_FMA | PTA_MOVBE | PTA_RTM | PTA_HLE | PTA_FXSR | PTA_XSAVE | PTA_XSAVEOPT}, + {"broadwell", PROCESSOR_HASWELL, CPU_COREI7, + PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 + | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AVX | PTA_AVX2 + | PTA_CX16 | PTA_POPCNT | PTA_AES | PTA_PCLMUL | PTA_FSGSBASE + | PTA_RDRND | PTA_F16C | PTA_BMI | PTA_BMI2 | PTA_LZCNT + | PTA_FMA | PTA_MOVBE | PTA_RTM | PTA_HLE | PTA_FXSR | PTA_XSAVE + | PTA_XSAVEOPT | PTA_ADX | PTA_PRFCHW | PTA_RDSEED}, {"atom", PROCESSOR_ATOM, CPU_ATOM, PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_SSSE3 | PTA_CX16 | PTA_MOVBE | PTA_FXSR}, diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index e65a28c2155..63bd23b7668 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -14666,6 +14666,11 @@ Intel Core CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2 and F16C instruction set support. +@item broadwell +Intel Broadwell CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, +SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, +BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW instruction set support. + @item atom Intel Atom CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3 and SSSE3 instruction set support. -- cgit v1.2.1 From f6b317ce0c7c656e09212aae569a4e554095c6b5 Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 20 Dec 2013 13:07:10 +0000 Subject: PR tree-optimization/59413 * gcc.c-torture/execute/pr59413.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206147 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/gcc.c-torture/execute/pr59413.c | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr59413.c (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4d994b41472..7e90641adf7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2013-12-20 Jakub Jelinek + PR tree-optimization/59413 + * gcc.c-torture/execute/pr59413.c: New test. + * c-c++-common/ubsan/load-bool-enum.c: New test. 2013-12-04 Kyrylo Tkachov diff --git a/gcc/testsuite/gcc.c-torture/execute/pr59413.c b/gcc/testsuite/gcc.c-torture/execute/pr59413.c new file mode 100644 index 00000000000..d7a2084ed63 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr59413.c @@ -0,0 +1,21 @@ +/* PR tree-optimization/59413 */ + +typedef unsigned int uint32_t; + +uint32_t a; +int b; + +int +main () +{ + uint32_t c; + for (a = 7; a <= 1; a++) + { + char d = a; + c = d; + b = a == c; + } + if (a != 7) + __builtin_abort (); + return 0; +} -- cgit v1.2.1 From ae70175f90a1104e54936e49a6caade9626f3dcc Mon Sep 17 00:00:00 2001 From: meibf Date: Fri, 20 Dec 2013 13:46:01 +0000 Subject: 2013-12-20 Bingfeng Mei PR tree-optimization/59544 * tree-vect-stmts.c (perm_mask_for_reverse): Move before vectorizable_store. (vectorizable_store): Handle negative step. * gcc.target/i386/pr59544.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206148 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++ gcc/testsuite/ChangeLog | 5 ++ gcc/testsuite/gcc.target/i386/pr59544.c | 13 +++++ gcc/tree-vect-stmts.c | 95 ++++++++++++++++++++++++--------- 4 files changed, 96 insertions(+), 24 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr59544.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5636956b33d..8442c7f07a1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-12-20 Bingfeng Mei + + PR tree-optimization/59544 + * tree-vect-stmts.c (perm_mask_for_reverse): Move before + vectorizable_store. + (vectorizable_store): Handle negative step. + 2013-12-20 Tocar Ilya * config.gcc: Support march=broadwell. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7e90641adf7..fbc6244d4de 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-20 Bingfeng Mei + + PR tree-optimization/59544 + * gcc.target/i386/pr59544.c: New test. + 2013-12-20 Jakub Jelinek PR tree-optimization/59413 diff --git a/gcc/testsuite/gcc.target/i386/pr59544.c b/gcc/testsuite/gcc.target/i386/pr59544.c new file mode 100644 index 00000000000..5499a53d954 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59544.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx -ftree-vectorize -fdump-tree-vect-details" } */ + +void test1(short * __restrict__ x, short * __restrict__ y, short * __restrict__ z) +{ + int i; + for (i=127; i>=0; i--) { + x[i] = y[127-i] + z[127-i]; + } +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 99f6b1f1ccb..3056c2ede00 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -4859,6 +4859,25 @@ ensure_base_align (stmt_vec_info stmt_info, struct data_reference *dr) } +/* Given a vector type VECTYPE returns the VECTOR_CST mask that implements + reversal of the vector elements. If that is impossible to do, + returns NULL. */ + +static tree +perm_mask_for_reverse (tree vectype) +{ + int i, nunits; + unsigned char *sel; + + nunits = TYPE_VECTOR_SUBPARTS (vectype); + sel = XALLOCAVEC (unsigned char, nunits); + + for (i = 0; i < nunits; ++i) + sel[i] = nunits - 1 - i; + + return vect_gen_perm_mask (vectype, sel); +} + /* Function vectorizable_store. Check if STMT defines a non scalar data-ref (array/pointer/structure) that @@ -4902,6 +4921,8 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, vec oprnds = vNULL; vec result_chain = vNULL; bool inv_p; + bool negative = false; + tree offset = NULL_TREE; vec vec_oprnds = vNULL; bool slp = (slp_node != NULL); unsigned int vec_num; @@ -4976,16 +4997,39 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, if (!STMT_VINFO_DATA_REF (stmt_info)) return false; - if (tree_int_cst_compare (loop && nested_in_vect_loop_p (loop, stmt) - ? STMT_VINFO_DR_STEP (stmt_info) : DR_STEP (dr), - size_zero_node) < 0) + negative = + tree_int_cst_compare (loop && nested_in_vect_loop_p (loop, stmt) + ? STMT_VINFO_DR_STEP (stmt_info) : DR_STEP (dr), + size_zero_node) < 0; + if (negative && ncopies > 1) { if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, - "negative step for store.\n"); + "multiple types with negative step."); return false; } + if (negative) + { + gcc_assert (!grouped_store); + alignment_support_scheme = vect_supportable_dr_alignment (dr, false); + if (alignment_support_scheme != dr_aligned + && alignment_support_scheme != dr_unaligned_supported) + { + if (dump_enabled_p ()) + dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, + "negative step but alignment required."); + return false; + } + if (!perm_mask_for_reverse (vectype)) + { + if (dump_enabled_p ()) + dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, + "negative step and reversing not supported."); + return false; + } + } + if (STMT_VINFO_GROUPED_ACCESS (stmt_info)) { grouped_store = true; @@ -5090,6 +5134,9 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, || alignment_support_scheme == dr_aligned || alignment_support_scheme == dr_unaligned_supported); + if (negative) + offset = size_int (-TYPE_VECTOR_SUBPARTS (vectype) + 1); + if (store_lanes_p) aggr_type = build_array_type_nelts (elem_type, vec_num * nunits); else @@ -5200,7 +5247,7 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, dataref_ptr = vect_create_data_ref_ptr (first_stmt, aggr_type, simd_lane_access_p ? loop : NULL, - NULL_TREE, &dummy, gsi, &ptr_incr, + offset, &dummy, gsi, &ptr_incr, simd_lane_access_p, &inv_p); gcc_assert (bb_vinfo || !inv_p); } @@ -5306,6 +5353,25 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, set_ptr_info_alignment (get_ptr_info (dataref_ptr), align, misalign); + if (negative) + { + tree perm_mask = perm_mask_for_reverse (vectype); + tree perm_dest + = vect_create_destination_var (gimple_assign_rhs1 (stmt), + vectype); + tree new_temp = make_ssa_name (perm_dest, NULL); + + /* Generate the permute statement. */ + gimple perm_stmt + = gimple_build_assign_with_ops (VEC_PERM_EXPR, new_temp, + vec_oprnd, vec_oprnd, + perm_mask); + vect_finish_stmt_generation (stmt, perm_stmt, gsi); + + perm_stmt = SSA_NAME_DEF_STMT (new_temp); + vec_oprnd = new_temp; + } + /* Arguments are ready. Create the new vector stmt. */ new_stmt = gimple_build_assign (data_ref, vec_oprnd); vect_finish_stmt_generation (stmt, new_stmt, gsi); @@ -5363,25 +5429,6 @@ vect_gen_perm_mask (tree vectype, unsigned char *sel) return mask_vec; } -/* Given a vector type VECTYPE returns the VECTOR_CST mask that implements - reversal of the vector elements. If that is impossible to do, - returns NULL. */ - -static tree -perm_mask_for_reverse (tree vectype) -{ - int i, nunits; - unsigned char *sel; - - nunits = TYPE_VECTOR_SUBPARTS (vectype); - sel = XALLOCAVEC (unsigned char, nunits); - - for (i = 0; i < nunits; ++i) - sel[i] = nunits - 1 - i; - - return vect_gen_perm_mask (vectype, sel); -} - /* Given a vector variable X and Y, that was generated for the scalar STMT, generate instructions to permute the vector elements of X and Y using permutation mask MASK_VEC, insert them at *GSI and return the -- cgit v1.2.1 From 8d2b40ea38a0e74486078d66b71997f5ce241104 Mon Sep 17 00:00:00 2001 From: ktkachov Date: Fri, 20 Dec 2013 13:55:41 +0000 Subject: 2013-12-20 Kyrylo Tkachov * config/arm/arm_acle.h: Add underscores before variables. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206149 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/config/arm/arm_acle.h | 40 ++++++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 20 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8442c7f07a1..9de43b154bd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2013-12-20 Kyrylo Tkachov + + * config/arm/arm_acle.h: Add underscores before variables. + 2013-12-20 Bingfeng Mei PR tree-optimization/59544 diff --git a/gcc/config/arm/arm_acle.h b/gcc/config/arm/arm_acle.h index b04605bfc23..a14f043a445 100644 --- a/gcc/config/arm/arm_acle.h +++ b/gcc/config/arm/arm_acle.h @@ -34,60 +34,60 @@ extern "C" { #ifdef __ARM_FEATURE_CRC32 __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) -__crc32b (uint32_t a, uint8_t b) +__crc32b (uint32_t __a, uint8_t __b) { - return __builtin_arm_crc32b (a, b); + return __builtin_arm_crc32b (__a, __b); } __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) -__crc32h (uint32_t a, uint16_t b) +__crc32h (uint32_t __a, uint16_t __b) { - return __builtin_arm_crc32h (a, b); + return __builtin_arm_crc32h (__a, __b); } __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) -__crc32w (uint32_t a, uint32_t b) +__crc32w (uint32_t __a, uint32_t __b) { - return __builtin_arm_crc32w (a, b); + return __builtin_arm_crc32w (__a, __b); } #ifdef __ARM_32BIT_STATE __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) -__crc32d (uint32_t a, uint64_t b) +__crc32d (uint32_t __a, uint64_t __b) { - uint32_t d; + uint32_t __d; - d = __crc32w (__crc32w (a, b & 0xffffffffULL), b >> 32); - return d; + __d = __crc32w (__crc32w (__a, __b & 0xffffffffULL), __b >> 32); + return __d; } #endif __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) -__crc32cb (uint32_t a, uint8_t b) +__crc32cb (uint32_t __a, uint8_t __b) { - return __builtin_arm_crc32cb (a, b); + return __builtin_arm_crc32cb (__a, __b); } __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) -__crc32ch (uint32_t a, uint16_t b) +__crc32ch (uint32_t __a, uint16_t __b) { - return __builtin_arm_crc32ch (a, b); + return __builtin_arm_crc32ch (__a, __b); } __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) -__crc32cw (uint32_t a, uint32_t b) +__crc32cw (uint32_t __a, uint32_t __b) { - return __builtin_arm_crc32cw (a, b); + return __builtin_arm_crc32cw (__a, __b); } #ifdef __ARM_32BIT_STATE __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) -__crc32cd (uint32_t a, uint64_t b) +__crc32cd (uint32_t __a, uint64_t __b) { - uint32_t d; + uint32_t __d; - d = __crc32cw (__crc32cw (a, b & 0xffffffffULL), b >> 32); - return d; + __d = __crc32cw (__crc32cw (__a, __b & 0xffffffffULL), __b >> 32); + return __d; } #endif -- cgit v1.2.1 From 50817a330748509b08676ce7efbade701be67a89 Mon Sep 17 00:00:00 2001 From: yroux Date: Fri, 20 Dec 2013 14:37:53 +0000 Subject: 2013-12-20 Vladimir Makarov * config/arm/arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Return NO_REGS for LRA. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206150 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/arm/arm.h | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9de43b154bd..bc9f5a3db70 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-20 Vladimir Makarov + + * config/arm/arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Return NO_REGS + for LRA. + 2013-12-20 Kyrylo Tkachov * config/arm/arm_acle.h: Add underscores before variables. diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index fb5ce1c19b0..288ff8b2fc8 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -1296,11 +1296,12 @@ enum reg_class : NO_REGS)) #define THUMB_SECONDARY_OUTPUT_RELOAD_CLASS(CLASS, MODE, X) \ - ((CLASS) != LO_REGS && (CLASS) != BASE_REGS \ - ? ((true_regnum (X) == -1 ? LO_REGS \ - : (true_regnum (X) + HARD_REGNO_NREGS (0, MODE) > 8) ? LO_REGS \ - : NO_REGS)) \ - : NO_REGS) + (lra_in_progress ? NO_REGS \ + : (CLASS) != LO_REGS && (CLASS) != BASE_REGS \ + ? ((true_regnum (X) == -1 ? LO_REGS \ + : (true_regnum (X) + HARD_REGNO_NREGS (0, MODE) > 8) ? LO_REGS \ + : NO_REGS)) \ + : NO_REGS) /* Return the register class of a scratch register needed to copy IN into or out of a register in CLASS in MODE. If it can be done directly, -- cgit v1.2.1 From c46598c18375a4e0b5655f19ef7dd040d69f2632 Mon Sep 17 00:00:00 2001 From: ktkachov Date: Fri, 20 Dec 2013 16:10:43 +0000 Subject: [gcc/] 2013-12-20 Kyrylo Tkachov * config/arm/neon.ml (crypto_intrinsics): Add vceq_64 and vtst_p64. * config/arm/arm_neon.h: Regenerate. * config/arm/neon-docgen.ml: Add vceq_p64 and vtst_p64. * doc/arm-neon-intrinsics.texi: Regenerate. [gcc/testsuite/] 2013-12-20 Kyrylo Tkachov * gcc.target/arm/neon-vceq_p64.c: New test. * gcc.target/arm/neon-vtst_p64.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206151 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++ gcc/config/arm/arm_neon.h | 35 +++++++++++++++++++++++++ gcc/config/arm/neon-docgen.ml | 8 ++++++ gcc/config/arm/neon.ml | 35 +++++++++++++++++++++++++ gcc/doc/arm-neon-intrinsics.texi | 8 ++++++ gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gcc.target/arm/neon-vceq_p64.c | 38 ++++++++++++++++++++++++++++ gcc/testsuite/gcc.target/arm/neon-vtst_p64.c | 38 ++++++++++++++++++++++++++++ 8 files changed, 174 insertions(+) create mode 100644 gcc/testsuite/gcc.target/arm/neon-vceq_p64.c create mode 100644 gcc/testsuite/gcc.target/arm/neon-vtst_p64.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bc9f5a3db70..2f4f57e1296 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-12-20 Kyrylo Tkachov + + * config/arm/neon.ml (crypto_intrinsics): Add vceq_64 and vtst_p64. + * config/arm/arm_neon.h: Regenerate. + * config/arm/neon-docgen.ml: Add vceq_p64 and vtst_p64. + * doc/arm-neon-intrinsics.texi: Regenerate. + 2013-12-20 Vladimir Makarov * config/arm/arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Return NO_REGS diff --git a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h index 59ef22c530d..1abbba2256c 100644 --- a/gcc/config/arm/arm_neon.h +++ b/gcc/config/arm/arm_neon.h @@ -13278,6 +13278,41 @@ vstrq_p128 (poly128_t * __ptr, poly128_t __val) #endif } +/* The vceq_p64 intrinsic does not map to a single instruction. + Instead we emulate it by performing a 32-bit variant of the vceq + and applying a pairwise min reduction to the result. + vceq_u32 will produce two 32-bit halves, each of which will contain either + all ones or all zeros depending on whether the corresponding 32-bit + halves of the poly64_t were equal. The whole poly64_t values are equal + if and only if both halves are equal, i.e. vceq_u32 returns all ones. + If the result is all zeroes for any half then the whole result is zeroes. + This is what the pairwise min reduction achieves. */ + +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vceq_p64 (poly64x1_t __a, poly64x1_t __b) +{ + uint32x2_t __t_a = vreinterpret_u32_p64 (__a); + uint32x2_t __t_b = vreinterpret_u32_p64 (__b); + uint32x2_t __c = vceq_u32 (__t_a, __t_b); + uint32x2_t __m = vpmin_u32 (__c, __c); + return vreinterpret_u64_u32 (__m); +} + +/* The vtst_p64 intrinsic does not map to a single instruction. + We emulate it in way similar to vceq_p64 above but here we do + a reduction with max since if any two corresponding bits + in the two poly64_t's match, then the whole result must be all ones. */ + +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vtst_p64 (poly64x1_t __a, poly64x1_t __b) +{ + uint32x2_t __t_a = vreinterpret_u32_p64 (__a); + uint32x2_t __t_b = vreinterpret_u32_p64 (__b); + uint32x2_t __c = vtst_u32 (__t_a, __t_b); + uint32x2_t __m = vpmax_u32 (__c, __c); + return vreinterpret_u64_u32 (__m); +} + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) vaeseq_u8 (uint8x16_t __data, uint8x16_t __key) { diff --git a/gcc/config/arm/neon-docgen.ml b/gcc/config/arm/neon-docgen.ml index 66d21cf1139..46cae14fdc2 100644 --- a/gcc/config/arm/neon-docgen.ml +++ b/gcc/config/arm/neon-docgen.ml @@ -339,6 +339,14 @@ let crypto_doc = @item void vstrq_p128(poly128_t *, poly128_t) @end itemize +@itemize @bullet +@item uint64x1_t vceq_p64 (poly64x1_t, poly64x1_t) +@end itemize + +@itemize @bullet +@item uint64x1_t vtst_p64 (poly64x1_t, poly64x1_t) +@end itemize + @itemize @bullet @item uint32_t vsha1h_u32 (uint32_t) @*@emph{Form of expected instruction(s):} @code{sha1h.32 @var{q0}, @var{q1}} diff --git a/gcc/config/arm/neon.ml b/gcc/config/arm/neon.ml index 968c17121e7..738ee066bb0 100644 --- a/gcc/config/arm/neon.ml +++ b/gcc/config/arm/neon.ml @@ -2208,6 +2208,41 @@ vstrq_p128 (poly128_t * __ptr, poly128_t __val) #endif } +/* The vceq_p64 intrinsic does not map to a single instruction. + Instead we emulate it by performing a 32-bit variant of the vceq + and applying a pairwise min reduction to the result. + vceq_u32 will produce two 32-bit halves, each of which will contain either + all ones or all zeros depending on whether the corresponding 32-bit + halves of the poly64_t were equal. The whole poly64_t values are equal + if and only if both halves are equal, i.e. vceq_u32 returns all ones. + If the result is all zeroes for any half then the whole result is zeroes. + This is what the pairwise min reduction achieves. */ + +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vceq_p64 (poly64x1_t __a, poly64x1_t __b) +{ + uint32x2_t __t_a = vreinterpret_u32_p64 (__a); + uint32x2_t __t_b = vreinterpret_u32_p64 (__b); + uint32x2_t __c = vceq_u32 (__t_a, __t_b); + uint32x2_t __m = vpmin_u32 (__c, __c); + return vreinterpret_u64_u32 (__m); +} + +/* The vtst_p64 intrinsic does not map to a single instruction. + We emulate it in way similar to vceq_p64 above but here we do + a reduction with max since if any two corresponding bits + in the two poly64_t's match, then the whole result must be all ones. */ + +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vtst_p64 (poly64x1_t __a, poly64x1_t __b) +{ + uint32x2_t __t_a = vreinterpret_u32_p64 (__a); + uint32x2_t __t_b = vreinterpret_u32_p64 (__b); + uint32x2_t __c = vtst_u32 (__t_a, __t_b); + uint32x2_t __m = vpmax_u32 (__c, __c); + return vreinterpret_u64_u32 (__m); +} + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) vaeseq_u8 (uint8x16_t __data, uint8x16_t __key) { diff --git a/gcc/doc/arm-neon-intrinsics.texi b/gcc/doc/arm-neon-intrinsics.texi index 610892d6463..b1468683f83 100644 --- a/gcc/doc/arm-neon-intrinsics.texi +++ b/gcc/doc/arm-neon-intrinsics.texi @@ -11938,6 +11938,14 @@ @item void vstrq_p128(poly128_t *, poly128_t) @end itemize +@itemize @bullet +@item uint64x1_t vceq_p64 (poly64x1_t, poly64x1_t) +@end itemize + +@itemize @bullet +@item uint64x1_t vtst_p64 (poly64x1_t, poly64x1_t) +@end itemize + @itemize @bullet @item uint32_t vsha1h_u32 (uint32_t) @*@emph{Form of expected instruction(s):} @code{sha1h.32 @var{q0}, @var{q1}} diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fbc6244d4de..95afd485006 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-20 Kyrylo Tkachov + + * gcc.target/arm/neon-vceq_p64.c: New test. + * gcc.target/arm/neon-vtst_p64.c: Likewise. + 2013-12-20 Bingfeng Mei PR tree-optimization/59544 diff --git a/gcc/testsuite/gcc.target/arm/neon-vceq_p64.c b/gcc/testsuite/gcc.target/arm/neon-vceq_p64.c new file mode 100644 index 00000000000..21a6a78a221 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon-vceq_p64.c @@ -0,0 +1,38 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-require-effective-target arm_neon_hw } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" +#include + +extern void abort (void); + +int +main (void) +{ + uint64_t args[] = { 0x0, 0xdeadbeef, ~0xdeadbeef, 0xffff, + ~0xffff, 0xffffffff, ~0xffffffff, ~0x0 }; + int i, j; + + for (i = 0; i < sizeof (args) / sizeof (args[0]); ++i) + { + for (j = 0; j < sizeof (args) / sizeof (args[0]); ++j) + { + uint64_t a1 = args[i]; + uint64_t a2 = args[j]; + uint64_t res = vceq_p64 (vreinterpret_p64_u64 (a1), + vreinterpret_p64_u64 (a2)); + uint64_t exp = (a1 == a2) ? ~0x0 : 0x0; + + if (res != exp) + { + fprintf (stderr, "vceq_p64 (a1= %lx, a2= %lx)" + " returned %lx, expected %lx\n", + a1, a2, res, exp); + abort (); + } + } + } + return 0; +} diff --git a/gcc/testsuite/gcc.target/arm/neon-vtst_p64.c b/gcc/testsuite/gcc.target/arm/neon-vtst_p64.c new file mode 100644 index 00000000000..3a0b117c261 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon-vtst_p64.c @@ -0,0 +1,38 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_crypto_ok } */ +/* { dg-require-effective-target arm_neon_hw } */ +/* { dg-add-options arm_crypto } */ + +#include "arm_neon.h" +#include + +extern void abort (void); + +int +main (void) +{ + uint64_t args[] = { 0x0, 0xdeadbeef, ~0xdeadbeef, 0xffff, + ~0xffff, 0xffffffff, ~0xffffffff, ~0x0 }; + int i, j; + + for (i = 0; i < sizeof (args) / sizeof (args[0]); ++i) + { + for (j = 0; j < sizeof (args) / sizeof (args[0]); ++j) + { + uint64_t a1 = args[i]; + uint64_t a2 = args[j]; + uint64_t res = vtst_p64 (vreinterpret_p64_u64 (a1), + vreinterpret_p64_u64 (a2)); + uint64_t exp = (a1 & a2) ? ~0x0 : 0x0; + + if (res != exp) + { + fprintf (stderr, "vtst_p64 (a1= %lx, a2= %lx)" + " returned %lx, expected %lx\n", + a1, a2, res, exp); + abort (); + } + } + } + return 0; +} -- cgit v1.2.1 From 32d19e092c9c707348cc209f1265cf552e719d6a Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 20 Dec 2013 16:32:21 +0000 Subject: PR c++/59255 * g++.dg/tree-prof/pr59255.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206152 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/tree-prof/pr59255.C | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 gcc/testsuite/g++.dg/tree-prof/pr59255.C (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 95afd485006..73f0cb904a2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-20 Jakub Jelinek + + PR c++/59255 + * g++.dg/tree-prof/pr59255.C: New test. + 2013-12-20 Kyrylo Tkachov * gcc.target/arm/neon-vceq_p64.c: New test. diff --git a/gcc/testsuite/g++.dg/tree-prof/pr59255.C b/gcc/testsuite/g++.dg/tree-prof/pr59255.C new file mode 100644 index 00000000000..eb2b51f7e25 --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-prof/pr59255.C @@ -0,0 +1,29 @@ +// PR c++/59255 +// { dg-options "-O2 -std=c++11" } + +struct S +{ + __attribute__((noinline, noclone)) ~S () noexcept (true) + { + if (fn) + fn (1); + } + void (*fn) (int); +}; + +__attribute__((noinline, noclone)) void +foo (int x) +{ + if (x != 1) + throw 1; +} + +int +main () +{ + for (int i = 0; i < 100; i++) + { + S s; + s.fn = foo; + } +} -- cgit v1.2.1 From 349be7d3687a208c4c3fc8f104157d40ccc03bea Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Fri, 20 Dec 2013 16:46:37 +0000 Subject: * config/arm/arm.c (arm_expand_prologue): In a nested APCS frame with arguments to push onto the stack and no varargs, save ip into the last stack slot if r3 isn't available on entry. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206154 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++ gcc/config/arm/arm.c | 58 +++++++++++++++++++----------- gcc/testsuite/ChangeLog | 4 +++ gcc/testsuite/gcc.target/arm/nested-apcs.c | 34 ++++++++++++++++++ 4 files changed, 82 insertions(+), 20 deletions(-) create mode 100644 gcc/testsuite/gcc.target/arm/nested-apcs.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2f4f57e1296..c7a8c254fb8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-20 Eric Botcazou + + * config/arm/arm.c (arm_expand_prologue): In a nested APCS frame with + arguments to push onto the stack and no varargs, save ip into the last + stack slot if r3 isn't available on entry. + 2013-12-20 Kyrylo Tkachov * config/arm/neon.ml (crypto_intrinsics): Add vceq_64 and vtst_p64. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 8c6eaaa6695..706846e909f 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -18679,8 +18679,7 @@ arm_r3_live_at_start_p (void) /* Just look at cfg info, which is still close enough to correct at this point. This gives false positives for broken functions that might use uninitialized data that happens to be allocated in r3, but who cares? */ - return REGNO_REG_SET_P (df_get_live_out (ENTRY_BLOCK_PTR_FOR_FN (cfun)), - 3); + return REGNO_REG_SET_P (df_get_live_out (ENTRY_BLOCK_PTR_FOR_FN (cfun)), 3); } /* Compute the number of bytes used to store the static chain register on the @@ -20706,11 +20705,13 @@ arm_expand_prologue (void) whilst the frame is being created. We try the following places in order: - 1. The last argument register r3. - 2. A slot on the stack above the frame. (This only - works if the function is not a varargs function). + 1. The last argument register r3 if it is available. + 2. A slot on the stack above the frame if there are no + arguments to push onto the stack. 3. Register r3 again, after pushing the argument registers - onto the stack. + onto the stack, if this is a varargs function. + 4. The last slot on the stack created for the arguments to + push, if this isn't a varargs function. Note - we only need to tell the dwarf2 backend about the SP adjustment in the second variant; the static chain register @@ -20721,13 +20722,13 @@ arm_expand_prologue (void) insn = emit_set_insn (gen_rtx_REG (SImode, 3), ip_rtx); else if (args_to_push == 0) { - rtx dwarf; + rtx addr, dwarf; gcc_assert(arm_compute_static_chain_stack_bytes() == 4); saved_regs += 4; - insn = gen_rtx_PRE_DEC (SImode, stack_pointer_rtx); - insn = emit_set_insn (gen_frame_mem (SImode, insn), ip_rtx); + addr = gen_rtx_PRE_DEC (Pmode, stack_pointer_rtx); + insn = emit_set_insn (gen_frame_mem (SImode, addr), ip_rtx); fp_offset = 4; /* Just tell the dwarf backend that we adjusted SP. */ @@ -20741,21 +20742,38 @@ arm_expand_prologue (void) { /* Store the args on the stack. */ if (cfun->machine->uses_anonymous_args) - insn = emit_multi_reg_push - ((0xf0 >> (args_to_push / 4)) & 0xf); + { + insn + = emit_multi_reg_push ((0xf0 >> (args_to_push / 4)) & 0xf); + emit_set_insn (gen_rtx_REG (SImode, 3), ip_rtx); + saved_pretend_args = 1; + } else - insn = emit_insn - (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, - GEN_INT (- args_to_push))); + { + rtx addr, dwarf; - RTX_FRAME_RELATED_P (insn) = 1; + if (args_to_push == 4) + addr = gen_rtx_PRE_DEC (Pmode, stack_pointer_rtx); + else + addr + = gen_rtx_PRE_MODIFY (Pmode, stack_pointer_rtx, + plus_constant (Pmode, + stack_pointer_rtx, + -args_to_push)); + + insn = emit_set_insn (gen_frame_mem (SImode, addr), ip_rtx); - saved_pretend_args = 1; + /* Just tell the dwarf backend that we adjusted SP. */ + dwarf + = gen_rtx_SET (VOIDmode, stack_pointer_rtx, + plus_constant (Pmode, stack_pointer_rtx, + -args_to_push)); + add_reg_note (insn, REG_FRAME_RELATED_EXPR, dwarf); + } + + RTX_FRAME_RELATED_P (insn) = 1; fp_offset = args_to_push; args_to_push = 0; - - /* Now reuse r3 to preserve IP. */ - emit_set_insn (gen_rtx_REG (SImode, 3), ip_rtx); } } @@ -20861,7 +20879,7 @@ arm_expand_prologue (void) /* Recover the static chain register. */ if (!arm_r3_live_at_start_p () || saved_pretend_args) insn = gen_rtx_REG (SImode, 3); - else /* if (crtl->args.pretend_args_size == 0) */ + else { insn = plus_constant (Pmode, hard_frame_pointer_rtx, 4); insn = gen_frame_mem (SImode, insn); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 73f0cb904a2..ac0b7e0acc4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-20 Richard Earnshaw + + * gcc.target/arm/nested-apcs.c: New test. + 2013-12-20 Jakub Jelinek PR c++/59255 diff --git a/gcc/testsuite/gcc.target/arm/nested-apcs.c b/gcc/testsuite/gcc.target/arm/nested-apcs.c new file mode 100644 index 00000000000..9dac3043e27 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/nested-apcs.c @@ -0,0 +1,34 @@ +/* { dg-do run } */ +/* { dg-options "-fno-omit-frame-pointer -mapcs-frame -O" } */ + +extern void abort (void); + +struct x +{ + int y; + int z; +}; + +int __attribute__((noinline)) f (int c, int d, int e, int h, int i) +{ + int a; + struct x b; + + int __attribute__((noinline)) g (int p, int q, int r, struct x s) + { + return a + p + q + r + s.y + s.z; + } + + a = 5; + b.y = h; + b.z = i; + + return g(c, d, e, b); +} + +int main(void) +{ + if (f (1, 2, 3, 4, 5) != 20) + abort(); + return 0; +} -- cgit v1.2.1 From 4997014d846a7882f5d4103e24a47ac0eedeab06 Mon Sep 17 00:00:00 2001 From: tbsaunde Date: Fri, 20 Dec 2013 20:34:33 +0000 Subject: merge auto_vec and stack_vec git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206155 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 14 ++++++++++++++ gcc/ada/ChangeLog | 5 +++++ gcc/ada/gcc-interface/decl.c | 2 +- gcc/config/i386/i386.c | 2 +- gcc/cp/ChangeLog | 5 +++++ gcc/cp/semantics.c | 2 +- gcc/df-scan.c | 8 ++++---- gcc/function.c | 2 +- gcc/genautomata.c | 6 +++--- gcc/gimplify.c | 2 +- gcc/graphite-clast-to-gimple.c | 2 +- gcc/graphite-dependences.c | 2 +- gcc/graphite-scop-detection.c | 12 ++++++------ gcc/graphite-sese-to-poly.c | 16 ++++++++-------- gcc/hw-doloop.c | 2 +- gcc/trans-mem.c | 2 +- gcc/tree-call-cdce.c | 2 +- gcc/tree-data-ref.c | 4 ++-- gcc/tree-dfa.c | 2 +- gcc/tree-if-conv.c | 2 +- gcc/tree-inline.c | 2 +- gcc/tree-loop-distribution.c | 8 ++++---- gcc/tree-parloops.c | 6 +++--- gcc/tree-predcom.c | 2 +- gcc/tree-ssa-alias.c | 4 ++-- gcc/tree-ssa-loop-ivcanon.c | 2 +- gcc/tree-ssa-phiopt.c | 2 +- gcc/tree-ssa-threadedge.c | 2 +- gcc/tree-ssa-uncprop.c | 2 +- gcc/tree-vect-loop.c | 2 +- gcc/tree-vect-patterns.c | 2 +- gcc/tree-vect-slp.c | 2 +- gcc/tree-vect-stmts.c | 6 +++--- gcc/var-tracking.c | 6 +++--- gcc/vec.h | 41 ++++++++++++++++++++++------------------- 35 files changed, 105 insertions(+), 78 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c7a8c254fb8..c6f01720c61 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2013-12-20 Trevor saunders + + * vec.h (stack_vec): Convert to a templaate specialization of + auto_vec. + * config/i386/i386.c, df-scan.c, function.c, genautomata.c, + gimplify.c, graphite-clast-to-gimple.c, graphite-dependences.c, + graphite-scop-detection.c, graphite-sese-to-poly.c, hw-doloop.c, + trans-mem.c, tree-call-cdce.c, tree-data-ref.c, tree-dfa.c, + tree-if-conv.c, tree-inline.c, tree-loop-distribution.c, + tree-parloops.c, tree-predcom.c, tree-ssa-alias.c, + tree-ssa-loop-ivcanon.c, tree-ssa-phiopt.c, tree-ssa-threadedge.c, + tree-ssa-uncprop.c, tree-vect-loop.c, tree-vect-patterns.c, + tree-vect-slp.c, tree-vect-stmts.c, var-tracking.c: Adjust. + 2013-12-20 Eric Botcazou * config/arm/arm.c (arm_expand_prologue): In a nested APCS frame with diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 47279366d82..8c5ee48dbf7 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2013-12-20 Trevor saunders + + * gcc-interface/decl.c (components_to_record): Replace stack_vec with + auto_vec. + 2013-12-12 Eric Botcazou * gcc-interface/Makefile.in (ARM linux, GNU eabi): Tweak regexp. diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index a80d1a9c0af..ad129c6803c 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -7010,7 +7010,7 @@ components_to_record (tree gnu_record_type, Node_Id gnat_component_list, tree gnu_union_type, gnu_union_name; tree this_first_free_pos, gnu_variant_list = NULL_TREE; bool union_field_needs_strict_alignment = false; - stack_vec variant_types; + auto_vec variant_types; vinfo_t *gnu_variant; unsigned int variants_align = 0; unsigned int i; diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 1710e8c8e38..0034d3338df 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -30821,7 +30821,7 @@ ix86_generate_version_dispatcher_body (void *node_p) push_cfun (DECL_STRUCT_FUNCTION (resolver_decl)); - stack_vec fn_ver_vec; + auto_vec fn_ver_vec; for (versn_info = node_version_info->next; versn_info; versn_info = versn_info->next) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 96bc0d9e885..98022633e0f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2013-12-20 Trevor saunders + + * semantics.c (build_anon_member_initialization): Replace + stack_vec with auto_vec. + 2013-12-18 Balaji V. Iyer * parser.c (cp_parser_cilk_simd_clause_name): Changed cilk_clause_name diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 63f50fb4705..c08d53f4898 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -7439,7 +7439,7 @@ build_anon_member_initialization (tree member, tree init, to build up the initializer from the outside in so that we can reuse previously built CONSTRUCTORs if this is, say, the second field in an anonymous struct. So we use a vec as a stack. */ - stack_vec fields; + auto_vec fields; do { fields.safe_push (TREE_OPERAND (member, 1)); diff --git a/gcc/df-scan.c b/gcc/df-scan.c index a35b12fbebb..a7272ce88c5 100644 --- a/gcc/df-scan.c +++ b/gcc/df-scan.c @@ -86,10 +86,10 @@ static HARD_REG_SET elim_reg_set; struct df_collection_rec { - stack_vec def_vec; - stack_vec use_vec; - stack_vec eq_use_vec; - stack_vec mw_vec; + auto_vec def_vec; + auto_vec use_vec; + auto_vec eq_use_vec; + auto_vec mw_vec; }; static df_ref df_null_ref_rec[1]; diff --git a/gcc/function.c b/gcc/function.c index e2d0e233e80..13e98773eb6 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -4114,7 +4114,7 @@ reorder_blocks (void) if (block == NULL_TREE) return; - stack_vec block_stack; + auto_vec block_stack; /* Reset the TREE_ASM_WRITTEN bit for all blocks. */ clear_block_marks (block); diff --git a/gcc/genautomata.c b/gcc/genautomata.c index 372ba90efc8..a66a21920a3 100644 --- a/gcc/genautomata.c +++ b/gcc/genautomata.c @@ -3349,7 +3349,7 @@ uniq_sort_alt_states (alt_state_t alt_states_list) if (alt_states_list->next_alt_state == 0) return alt_states_list; - stack_vec alt_states; + auto_vec alt_states; for (curr_alt_state = alt_states_list; curr_alt_state != NULL; curr_alt_state = curr_alt_state->next_alt_state) @@ -5484,7 +5484,7 @@ form_ainsn_with_same_reservs (automaton_t automaton) { ainsn_t curr_ainsn; size_t i; - stack_vec last_insns; + auto_vec last_insns; for (curr_ainsn = automaton->ainsn_list; curr_ainsn != NULL; @@ -5555,7 +5555,7 @@ make_automaton (automaton_t automaton) state_t state; state_t start_state; state_t state2; - stack_vec state_stack; + auto_vec state_stack; int states_n; reserv_sets_t reservs_matter = form_reservs_matter (automaton); diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 1ca847ac759..1ca4ad1bb33 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1846,7 +1846,7 @@ gimplify_compound_lval (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, /* Create a stack of the subexpressions so later we can walk them in order from inner to outer. */ - stack_vec expr_stack; + auto_vec expr_stack; /* We can handle anything that get_inner_reference can deal with. */ for (p = expr_p; ; p = &TREE_OPERAND (*p, 0)) diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c index 038c4f2abb2..2b9e743e730 100644 --- a/gcc/graphite-clast-to-gimple.c +++ b/gcc/graphite-clast-to-gimple.c @@ -1659,7 +1659,7 @@ debug_generated_program (scop_p scop) bool gloog (scop_p scop, bb_pbb_htab_type bb_pbb_mapping) { - stack_vec newivs; + auto_vec newivs; loop_p context_loop; sese region = SCOP_REGION (scop); ifsese if_region = NULL; diff --git a/gcc/graphite-dependences.c b/gcc/graphite-dependences.c index c0d769c7dd6..f16cb938b3d 100644 --- a/gcc/graphite-dependences.c +++ b/gcc/graphite-dependences.c @@ -593,7 +593,7 @@ loop_is_parallel_p (loop_p loop, bb_pbb_htab_type bb_pbb_mapping, int depth) scop_p scop; timevar_push (TV_GRAPHITE_DATA_DEPS); - stack_vec body; + auto_vec body; scop = get_loop_body_pbbs (loop, bb_pbb_mapping, &body); dependences = loop_level_carries_dependences (scop, body, depth); timevar_pop (TV_GRAPHITE_DATA_DEPS); diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index fea15e55abe..0722ab8bbbf 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -481,7 +481,7 @@ scopdet_basic_block_info (basic_block bb, loop_p outermost_loop, case GBB_LOOP_SING_EXIT_HEADER: { - stack_vec regions; + auto_vec regions; struct scopdet_info sinfo; edge exit_e = single_exit (loop); @@ -546,7 +546,7 @@ scopdet_basic_block_info (basic_block bb, loop_p outermost_loop, { /* XXX: For now we just do not join loops with multiple exits. If the exits lead to the same bb it may be possible to join the loop. */ - stack_vec regions; + auto_vec regions; vec exits = get_loop_exit_edges (loop); edge e; int i; @@ -589,7 +589,7 @@ scopdet_basic_block_info (basic_block bb, loop_p outermost_loop, } case GBB_COND_HEADER: { - stack_vec regions; + auto_vec regions; struct scopdet_info sinfo; vec dominated; int i; @@ -1192,7 +1192,7 @@ print_graphite_statistics (FILE* file, vec scops) static void limit_scops (vec *scops) { - stack_vec regions; + auto_vec regions; int i; scop_p scop; @@ -1404,7 +1404,7 @@ void build_scops (vec *scops) { struct loop *loop = current_loops->tree_root; - stack_vec regions; + auto_vec regions; canonicalize_loop_closed_ssa_form (); build_scops_1 (single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun)), @@ -1595,7 +1595,7 @@ dot_all_scops (vec scops) DEBUG_FUNCTION void dot_scop (scop_p scop) { - stack_vec scops; + auto_vec scops; if (scop) scops.safe_push (scop); diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 66c1b6ef95e..1f54eb9816f 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -1245,7 +1245,7 @@ public: virtual void after_dom_children (basic_block); private: - stack_vec m_conditions, m_cases; + auto_vec m_conditions, m_cases; sese m_region; }; @@ -1890,7 +1890,7 @@ build_scop_drs (scop_p scop) int i, j; poly_bb_p pbb; data_reference_p dr; - stack_vec drs; + auto_vec drs; /* Remove all the PBBs that do not have data references: these basic blocks are not handled in the polyhedral representation. */ @@ -1988,7 +1988,7 @@ insert_stmts (scop_p scop, gimple stmt, gimple_seq stmts, gimple_stmt_iterator insert_gsi) { gimple_stmt_iterator gsi; - stack_vec x; + auto_vec x; gimple_seq_add_stmt (&stmts, stmt); for (gsi = gsi_start (stmts); !gsi_end_p (gsi); gsi_next (&gsi)) @@ -2007,7 +2007,7 @@ insert_out_of_ssa_copy (scop_p scop, tree res, tree expr, gimple after_stmt) gimple_stmt_iterator gsi; tree var = force_gimple_operand (expr, &stmts, true, NULL_TREE); gimple stmt = gimple_build_assign (unshare_expr (res), var); - stack_vec x; + auto_vec x; gimple_seq_add_stmt (&stmts, stmt); for (gsi = gsi_start (stmts); !gsi_end_p (gsi); gsi_next (&gsi)) @@ -2062,7 +2062,7 @@ insert_out_of_ssa_copy_on_edge (scop_p scop, edge e, tree res, tree expr) tree var = force_gimple_operand (expr, &stmts, true, NULL_TREE); gimple stmt = gimple_build_assign (unshare_expr (res), var); basic_block bb; - stack_vec x; + auto_vec x; gimple_seq_add_stmt (&stmts, stmt); for (gsi = gsi_start (stmts); !gsi_end_p (gsi); gsi_next (&gsi)) @@ -2870,7 +2870,7 @@ remove_phi (gimple phi) tree def; use_operand_p use_p; gimple_stmt_iterator gsi; - stack_vec update; + auto_vec update; unsigned int i; gimple stmt; @@ -3028,8 +3028,8 @@ rewrite_commutative_reductions_out_of_ssa_close_phi (scop_p scop, gimple close_phi) { bool res; - stack_vec in; - stack_vec out; + auto_vec in; + auto_vec out; detect_commutative_reduction (scop, close_phi, &in, &out); res = in.length () > 1; diff --git a/gcc/hw-doloop.c b/gcc/hw-doloop.c index b6184a26d87..4e67760cb8b 100644 --- a/gcc/hw-doloop.c +++ b/gcc/hw-doloop.c @@ -252,7 +252,7 @@ discover_loop (hwloop_info loop, basic_block tail_bb, rtx tail_insn, rtx reg) loop->head = BRANCH_EDGE (tail_bb)->dest; loop->successor = FALLTHRU_EDGE (tail_bb)->dest; - stack_vec works; + auto_vec works; works.safe_push (loop->head); found_tail = false; diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c index ba344887d91..941035bc0ba 100644 --- a/gcc/trans-mem.c +++ b/gcc/trans-mem.c @@ -4532,7 +4532,7 @@ ipa_tm_scan_irr_function (struct cgraph_node *node, bool for_clone) calculate_dominance_info (CDI_DOMINATORS); d = get_cg_data (&node, true); - stack_vec queue; + auto_vec queue; new_irr = BITMAP_ALLOC (&tm_obstack); /* Scan each tm region, propagating irrevocable status through the tree. */ diff --git a/gcc/tree-call-cdce.c b/gcc/tree-call-cdce.c index 32d0d5a93a1..5e59cad9958 100644 --- a/gcc/tree-call-cdce.c +++ b/gcc/tree-call-cdce.c @@ -727,7 +727,7 @@ shrink_wrap_one_built_in_call (gimple bi_call) tree bi_call_label_decl; gimple bi_call_label; - stack_vec conds; + auto_vec conds; gen_shrink_wrap_conditions (bi_call, conds, &nconds); /* This can happen if the condition generator decides diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index 94c7917344a..03060201649 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -4453,7 +4453,7 @@ find_data_references_in_stmt (struct loop *nest, gimple stmt, vec *datarefs) { unsigned i; - stack_vec references; + auto_vec references; data_ref_loc *ref; bool ret = true; data_reference_p dr; @@ -4483,7 +4483,7 @@ graphite_find_data_references_in_stmt (loop_p nest, loop_p loop, gimple stmt, vec *datarefs) { unsigned i; - stack_vec references; + auto_vec references; data_ref_loc *ref; bool ret = true; data_reference_p dr; diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index 302822c1f20..e014a719e5a 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -737,7 +737,7 @@ dump_enumerated_decls (FILE *file, int flags) { basic_block bb; struct walk_stmt_info wi; - stack_vec decl_list; + auto_vec decl_list; memset (&wi, '\0', sizeof (wi)); wi.info = (void *) &decl_list; diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 59404ec14e2..283f476be22 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -1314,7 +1314,7 @@ if_convertible_loop_p (struct loop *loop, bool *any_mask_load_store) refs.create (5); ddrs.create (25); - stack_vec loop_nest; + auto_vec loop_nest; res = if_convertible_loop_p_1 (loop, &loop_nest, &refs, &ddrs, any_mask_load_store); diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 96a480593d4..4f14e5e10b0 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -5240,7 +5240,7 @@ tree_function_versioning (tree old_decl, tree new_decl, unsigned i; struct ipa_replace_map *replace_info; basic_block old_entry_block, bb; - stack_vec init_stmts; + auto_vec init_stmts; tree vars = NULL_TREE; gcc_assert (TREE_CODE (old_decl) == FUNCTION_DECL diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index c16e51fb7c7..c536162b5f9 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -448,7 +448,7 @@ build_rdg (vec loop_nest, control_dependences *cd) vec datarefs; /* Create the RDG vertices from the stmts of the loop nest. */ - stack_vec stmts; + auto_vec stmts; stmts_from_loop (loop_nest[0], &stmts); rdg = new_graph (stmts.length ()); datarefs.create (10); @@ -964,7 +964,7 @@ static partition_t build_rdg_partition_for_vertex (struct graph *rdg, int v) { partition_t partition = partition_alloc (NULL, NULL); - stack_vec nodes; + auto_vec nodes; unsigned i; int x; @@ -1418,7 +1418,7 @@ distribute_loop (struct loop *loop, vec stmts, int num_sccs = 1; *nb_calls = 0; - stack_vec loop_nest; + auto_vec loop_nest; if (!find_loop_nest (loop, &loop_nest)) return 0; @@ -1436,7 +1436,7 @@ distribute_loop (struct loop *loop, vec stmts, if (dump_file && (dump_flags & TDF_DETAILS)) dump_rdg (dump_file, rdg); - stack_vec partitions; + auto_vec partitions; rdg_build_partitions (rdg, stmts, &partitions); any_builtin = false; diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index a56145dbebe..368a05e4441 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -424,7 +424,7 @@ loop_parallel_p (struct loop *loop, struct obstack * parloop_obstack) /* Check for problems with dependences. If the loop can be reversed, the iterations are independent. */ - stack_vec loop_nest; + auto_vec loop_nest; datarefs.create (10); dependence_relations.create (100); if (! compute_data_dependences_for_loop (loop, true, &loop_nest, &datarefs, @@ -752,7 +752,7 @@ static void eliminate_local_variables (edge entry, edge exit) { basic_block bb; - stack_vec body; + auto_vec body; unsigned i; gimple_stmt_iterator gsi; bool has_debug_stmt = false; @@ -1303,7 +1303,7 @@ separate_decls_in_region (edge entry, edge exit, tree type, type_name, nvar; gimple_stmt_iterator gsi; struct clsn_data clsn_data; - stack_vec body; + auto_vec body; basic_block bb; basic_block entry_bb = bb1; basic_block exit_bb = exit->dest; diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c index ea31302101f..4814281fd33 100644 --- a/gcc/tree-predcom.c +++ b/gcc/tree-predcom.c @@ -2398,7 +2398,7 @@ tree_predictive_commoning_loop (struct loop *loop) /* Find the data references and split them into components according to their dependence relations. */ - stack_vec loop_nest; + auto_vec loop_nest; dependences.create (10); datarefs.create (10); if (! compute_data_dependences_for_loop (loop, true, &loop_nest, &datarefs, diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index e412d72a2c2..0fb4c447ab0 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -768,8 +768,8 @@ aliasing_component_refs_p (tree ref1, static bool nonoverlapping_component_refs_of_decl_p (tree ref1, tree ref2) { - stack_vec component_refs1; - stack_vec component_refs2; + auto_vec component_refs1; + auto_vec component_refs2; /* Create the stack of handled components for REF1. */ while (handled_component_p (ref1)) diff --git a/gcc/tree-ssa-loop-ivcanon.c b/gcc/tree-ssa-loop-ivcanon.c index fd4ac70821c..2533971864a 100644 --- a/gcc/tree-ssa-loop-ivcanon.c +++ b/gcc/tree-ssa-loop-ivcanon.c @@ -1171,7 +1171,7 @@ tree_unroll_loops_completely_1 (bool may_increase_size, bool unroll_outer, unsigned int tree_unroll_loops_completely (bool may_increase_size, bool unroll_outer) { - stack_vec father_stack; + auto_vec father_stack; bool changed; int iteration = 0; bool irred_invalidated = false; diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index b6bb7e9d906..390258f666b 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -1874,7 +1874,7 @@ cond_if_else_store_replacement (basic_block then_bb, basic_block else_bb, } /* Find pairs of stores with equal LHS. */ - stack_vec then_stores, else_stores; + auto_vec then_stores, else_stores; FOR_EACH_VEC_ELT (then_datarefs, i, then_dr) { if (DR_IS_READ (then_dr)) diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c index cb6accf08f4..e2eb471cb48 100644 --- a/gcc/tree-ssa-threadedge.c +++ b/gcc/tree-ssa-threadedge.c @@ -690,7 +690,7 @@ propagate_threaded_block_debug_into (basic_block dest, basic_block src) i++; } - stack_vec fewvars; + auto_vec fewvars; pointer_set_t *vars = NULL; /* If we're already starting with 3/4 of alloc_count, go for a diff --git a/gcc/tree-ssa-uncprop.c b/gcc/tree-ssa-uncprop.c index 63a2e10472c..6318ec1911d 100644 --- a/gcc/tree-ssa-uncprop.c +++ b/gcc/tree-ssa-uncprop.c @@ -380,7 +380,7 @@ private: leading to this block. If no such edge equivalency exists, then we record NULL. These equivalences are live until we leave the dominator subtree rooted at the block where we record the equivalency. */ - stack_vec m_equiv_stack; + auto_vec m_equiv_stack; }; /* Main driver for un-cprop. */ diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index fc377477648..d13b1df85f9 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -621,7 +621,7 @@ vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, struct loop *loop) { basic_block bb = loop->header; tree init, step; - stack_vec worklist; + auto_vec worklist; gimple_stmt_iterator gsi; bool double_reduc; diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index 7823cc3932d..d1f8123c7a5 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -3213,7 +3213,7 @@ vect_pattern_recog (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo) gimple_stmt_iterator si; unsigned int i, j; vect_recog_func_ptr vect_recog_func; - stack_vec stmts_to_replace; + auto_vec stmts_to_replace; gimple stmt; if (dump_enabled_p ()) diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index 2387c0d9dfc..d1e17965165 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -2029,7 +2029,7 @@ vect_bb_vectorization_profitable_p (bb_vec_info bb_vinfo) /* Calculate scalar cost. */ FOR_EACH_VEC_ELT (slp_instances, i, instance) { - stack_vec life; + auto_vec life; life.safe_grow_cleared (SLP_INSTANCE_GROUP_SIZE (instance)); scalar_cost += vect_bb_slp_scalar_cost (BB_VINFO_BB (bb_vinfo), SLP_INSTANCE_TREE (instance), diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 3056c2ede00..18cf5630ca2 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -629,7 +629,7 @@ vect_mark_stmts_to_be_vectorized (loop_vec_info loop_vinfo) dump_printf_loc (MSG_NOTE, vect_location, "=== vect_mark_stmts_to_be_vectorized ===\n"); - stack_vec worklist; + auto_vec worklist; /* 1. Init worklist. */ for (i = 0; i < nbbs; i++) @@ -6605,8 +6605,8 @@ vectorizable_condition (gimple stmt, gimple_stmt_iterator *gsi, { if (slp_node) { - stack_vec ops; - stack_vec, 4> vec_defs; + auto_vec ops; + auto_vec, 4> vec_defs; ops.safe_push (TREE_OPERAND (cond_expr, 0)); ops.safe_push (TREE_OPERAND (cond_expr, 1)); diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index 8eb86bf4feb..b0d7922ce82 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -7931,7 +7931,7 @@ struct expand_loc_callback_data /* Stack of values and debug_exprs under expansion, and their children. */ - stack_vec expanding; + auto_vec expanding; /* Stack of values and debug_exprs whose expansion hit recursion cycles. They will have VALUE_RECURSED_INTO marked when added to @@ -7939,7 +7939,7 @@ struct expand_loc_callback_data resolves to a valid location. So, if the flag remains set at the end of the search, we know no valid location for this one can possibly exist. */ - stack_vec pending; + auto_vec pending; /* The maximum depth among the sub-expressions under expansion. Zero indicates no expansion so far. */ @@ -8886,7 +8886,7 @@ process_changed_values (variable_table_type htab) { int i, n; rtx val; - stack_vec changed_values_stack; + auto_vec changed_values_stack; /* Move values from changed_variables to changed_values_stack. */ changed_variables diff --git a/gcc/vec.h b/gcc/vec.h index 03455851b0f..afde351a796 100644 --- a/gcc/vec.h +++ b/gcc/vec.h @@ -1184,25 +1184,17 @@ public: }; -/* auto_vec is a sub class of vec whose storage is released when it is - destroyed. */ -template +/* auto_vec is a subclass of vec that automatically manages creating and + releasing the internal vector. If N is non zero then it has N elements of + internal storage. The default is no internal storage, and you probably only + want to ask for internal storage for vectors on the stack because if the + size of the vector is larger than the internal storage that space is wasted. + */ +template class auto_vec : public vec { public: - auto_vec () { this->m_vec = NULL; } - auto_vec (size_t n) { this->create (n); } - ~auto_vec () { this->release (); } -}; - -/* stack_vec is a subclass of vec containing N elements of internal storage. - You probably only want to allocate this on the stack because if the array - ends up being larger or much smaller than N it will be wasting space. */ -template -class stack_vec : public vec -{ -public: - stack_vec () + auto_vec () { m_header.m_alloc = N; m_header.m_has_auto_buf = 1; @@ -1210,7 +1202,7 @@ public: this->m_vec = reinterpret_cast *> (&m_header); } - ~stack_vec () + ~auto_vec () { this->release (); } @@ -1222,6 +1214,17 @@ private: T m_data[N]; }; +/* auto_vec is a sub class of vec whose storage is released when it is + destroyed. */ +template +class auto_vec : public vec +{ +public: + auto_vec () { this->m_vec = NULL; } + auto_vec (size_t n) { this->create (n); } + ~auto_vec () { this->release (); } +}; + /* Allocate heap memory for pointer V and create the internal vector with space for NELEMS elements. If NELEMS is 0, the internal @@ -1421,7 +1424,7 @@ vec::release (void) if (using_auto_storage ()) { - static_cast *> (this)->m_header.m_num = 0; + static_cast *> (this)->m_header.m_num = 0; return; } @@ -1654,7 +1657,7 @@ vec::using_auto_storage () const return false; const vec_prefix *auto_header - = &static_cast *> (this)->m_header; + = &static_cast *> (this)->m_header; return reinterpret_cast (m_vec) == auto_header; } -- cgit v1.2.1 From 33c503bd9001b6fe823aa9be319a09df500a6b40 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 21 Dec 2013 00:16:29 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206160 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 2bfcc2a29de..17356c3f8a6 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131220 +20131221 -- cgit v1.2.1 From 16e19638fbbf438fbec1d25afad6f9851b17f522 Mon Sep 17 00:00:00 2001 From: singhai Date: Sat, 21 Dec 2013 07:42:31 +0000 Subject: 2013-12-20 Sharad Singhai * Makefile.in: Add optinfo.texi. * doc/invoke.texi: Fix typo. * doc/optinfo.texi: New documentation for optimization info. * doc/passes.texi: Add new node. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206161 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 ++ gcc/Makefile.in | 2 +- gcc/doc/invoke.texi | 2 +- gcc/doc/optinfo.texi | 228 +++++++++++++++++++++++++++++++++++++++++++++++++++ gcc/doc/passes.texi | 6 ++ 5 files changed, 243 insertions(+), 2 deletions(-) create mode 100644 gcc/doc/optinfo.texi (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c6f01720c61..529180a1ff4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-12-20 Sharad Singhai + + * Makefile.in: Add optinfo.texi. + * doc/invoke.texi: Fix typo. + * doc/optinfo.texi: New documentation for optimization info. + * doc/passes.texi: Add new node. + 2013-12-20 Trevor saunders * vec.h (stack_vec): Convert to a templaate specialization of diff --git a/gcc/Makefile.in b/gcc/Makefile.in index b79bb0c0aca..d824551b081 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -2808,7 +2808,7 @@ TEXI_GCCINT_FILES = gccint.texi gcc-common.texi gcc-vers.texi \ configfiles.texi collect2.texi headerdirs.texi funding.texi \ gnu.texi gpl_v3.texi fdl.texi contrib.texi languages.texi \ sourcebuild.texi gty.texi libgcc.texi cfg.texi tree-ssa.texi \ - loop.texi generic.texi gimple.texi plugins.texi + loop.texi generic.texi gimple.texi plugins.texi optinfo.texi TEXI_GCCINSTALL_FILES = install.texi install-old.texi fdl.texi \ gcc-common.texi gcc-vers.texi diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 63bd23b7668..93468a8e1b3 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -6507,7 +6507,7 @@ gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt Here the two output filenames @file{vec.miss} and @file{loop.opt} are in conflict since only one output file is allowed. In this case, only the first option takes effect and the subsequent options are -ignored. Thus only the @file{vec.miss} is produced which cotaints +ignored. Thus only the @file{vec.miss} is produced which contains dumps from the vectorizer about missed opportunities. @item -frandom-seed=@var{string} diff --git a/gcc/doc/optinfo.texi b/gcc/doc/optinfo.texi new file mode 100644 index 00000000000..983d653ddbd --- /dev/null +++ b/gcc/doc/optinfo.texi @@ -0,0 +1,228 @@ +@c Copyright (C) 2013 Free Software Foundation, Inc. +@c This is part of the GCC manual. +@c For copying conditions, see the file gcc.texi. + +@cindex optimization dumps + +This section is describes dump infrastructure which is common to both +pass dumps as well as optimization dumps. The goal for this +infrastructure is to provide both gcc developers and users detailed +information about various compiler transformations and optimizations. + +@menu +* Dump setup:: Setup of optimization dumps. +* Optimization groups:: Groups made up of optimization passes. +* Dump output verbosity:: How much information to dump. +* Dump files and streams:: Dump output file names and streams. +* Dump types:: Various types of dump functions. +* Dump examples:: Sample usage. +@end menu + +@node Dump setup +@subsection Dump setup +@cindex dump setup + +A dump_manager class is defined in @file{dumpfile.h}. Various passes +register dumping pass-specific information via @code{dump_register} in +@file{passes.c}. During the registration, an optimization pass can +select its optimization group (@pxref{Optimization groups}). After +that optimization information corresponding to the entire group +(presumably from multiple passes) can be output via command-line +switches. Note that if a pass does not fit into any of the pre-defined +groups, it can select @code{OPTGROUP_NONE}. + +Note that in general, a pass need not know its dump output file name, +whether certain flags are enabled, etc. However, for legacy reasons, +passes could also call @code{dump_begin} which returns a stream in +case the particular pass has optimization dumps enabled. A pass could +call @code{dump_end} when the dump has ended. These methods should go +away once all the passes are converted to use the new dump +infrastructure. + +The recommended way to setup the dump output is via @code{dump_start} +and @code{dump_end}. + +@node Optimization groups +@subsection Optimization groups +@cindex optimization groups +The optimization passes are grouped into several categories. Currently +defined categories in @file{dumpfile.h} are + +@ftable @code + +@item OPTGROUP_IPA +IPA optimization passes. Enabled by @option{-ipa} + +@item OPTGROUP_LOOP +Loop optimization passes. Enabled by @option{-loop}. + +@item OPTGROUP_INLINE +Inlining passes. Enabled by @option{-inline}. + +@item OPTGROUP_VEC +Vectorization passes. Enabled by @option{-vec}. + +@item OPTGROUP_OTHER +All other optimization passes which do not fall into one of the above. + +@item OPTGROUP_ALL +All optimization passes. Enabled by @option{-all}. + +@end ftable + +By using groups a user could selectively enable optimization +information only for a group of passes. By default, the optimization +information for all the passes is dumped. + +@node Dump files and streams +@subsection Dump files and streams +@cindex optimization info file names + +There are two separate output streams available for outputting +optimization information from passes. Note that both these streams +accept @code{stderr} and @code{stdout} as valid streams and thus it is +possible to dump output to standard output or error. This is specially +handy for outputting all available information in a single file by +redirecting @code{stderr}. + +@table @code +@item @code{pstream} +This stream is for pass-specific dump output. For example, +@option{-fdump-tree-vect=foo.v} dumps tree vectorization pass output +into the given file name @file{foo.v}. If the file name is not provided, +the default file name is based on the source file and pass number. Note +that one could also use special file names @code{stdout} and +@code{stderr} for dumping to standard output and standard error +respectively. + +@item @code{alt_stream} +This steam is used for printing optimization specific output in +response to the @option{-fopt-info}. Again a file name can be given. If +the file name is not given, it defaults to @code{stderr}. +@end table + +@node Dump output verbosity +@subsection Dump output verbosity +@cindex dump verbosity + +The dump verbosity has the following options + +@table @samp +@item optimized +Print information when an optimization is successfully applied. It is +up to a pass to decide which information is relevant. For example, the +vectorizer passes print the source location of loops which got +successfully vectorized. + +@item missed +Print information about missed optimizations. Individual passes +control which information to include in the output. For example, + +@smallexample +gcc -O2 -ftree-vectorize -fopt-info-vec-missed +@end smallexample + +will print information about missed optimization opportunities from +vectorization passes on stderr. + +@item note +Print verbose information about optimizations, such as certain +transformations, more detailed messages about decisions etc. + +@item all +Print detailed optimization information. This includes +@var{optimized}, @var{missed}, and @var{note}. +@end table + +@node Dump types +@subsection Dump types +@cindex dump types + +@ftable @code + +@item dump_printf + +This is a generic method for doing formatted output. It takes an +additional argument @code{dump_kind} which signifies the type of +dump. This method outputs information only when the dumps are enabled +for this particular @code{dump_kind}. Note that the caller doesn't +need to know if the particular dump is enabled or not, or even the +file name. The caller only needs to decide which dump output +information is relevant, and under what conditions. This determines +the associated flags. + +Consider the following example from @file{loop-unroll.c} where an +informative message about a loop (along with its location) is printed +when any of the following flags is enabled +@itemize @minus + +@item optimization messages +@item RTL dumps +@item detailed dumps + +@end itemize + +@example +int report_flags = MSG_OPTIMIZED_LOCATIONS | TDF_RTL | TDF_DETAILS; +dump_printf_loc (report_flags, locus, + "loop turned into non-loop; it never loops.\n"); +@end example + +@item dump_basic_block +Output basic block. +@item dump_generic_expr +Output generic expression. +@item dump_gimple_stmt +Output gimple statement. + +Note that the above methods also have variants prefixed with +@code{_loc}, such as @code{dump_printf_loc}, which are similar except +they also output the source location information. + +@end ftable + +@node Dump examples +@subsection Dump examples +@cindex dump examples + +@smallexample +gcc -O3 -fopt-info-missed=missed.all +@end smallexample + +outputs missed optimization report from all the passes into +@file{missed.all}. + +As another example, +@smallexample +gcc -O3 -fopt-info-inline-optimized-missed=inline.txt +@end smallexample + +will output information about missed optimizations as well as +optimized locations from all the inlining passes into +@file{inline.txt}. + +If the @var{filename} is provided, then the dumps from all the +applicable optimizations are concatenated into the @file{filename}. +Otherwise the dump is output onto @file{stderr}. If @var{options} is +omitted, it defaults to @option{all-all}, which means dump all +available optimization info from all the passes. In the following +example, all optimization info is output on to @file{stderr}. + +@smallexample +gcc -O3 -fopt-info +@end smallexample + +Note that @option{-fopt-info-vec-missed} behaves the same as +@option{-fopt-info-missed-vec}. + +As another example, consider + +@smallexample +gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt +@end smallexample + +Here the two output file names @file{vec.miss} and @file{loop.opt} are +in conflict since only one output file is allowed. In this case, only +the first option takes effect and the subsequent options are +ignored. Thus only the @file{vec.miss} is produced which containts +dumps from the vectorizer about missed opportunities. diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi index 9a68ad29c5c..a1f57cc3701 100644 --- a/gcc/doc/passes.texi +++ b/gcc/doc/passes.texi @@ -9,6 +9,7 @@ @cindex passes and files of the compiler @cindex files and passes of the compiler @cindex compiler passes and files +@cindex pass dumps This chapter is dedicated to giving an overview of the optimization and code generation passes of the compiler. In the process, it describes @@ -22,6 +23,7 @@ where near complete. * Pass manager:: Sequencing the optimization passes. * Tree SSA passes:: Optimizations on a high-level representation. * RTL passes:: Optimizations on a low-level representation. +* Optimization info:: Dumping optimization information from passes. @end menu @node Parsing pass @@ -975,3 +977,7 @@ symbol table format, and @file{vmsdbgout.c} for VMS debug symbol table format. @end itemize + +@node Optimization info +@section Optimization info +@include optinfo.texi -- cgit v1.2.1 From f2f4a9f186bedf5a9b451785ff297365451998e4 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 22 Dec 2013 00:16:56 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206165 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 17356c3f8a6..a33ed116051 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131221 +20131222 -- cgit v1.2.1 From 2be118aec1b81723fe8a2d0ca73ac2ff85ab94f5 Mon Sep 17 00:00:00 2001 From: uros Date: Sun, 22 Dec 2013 12:28:24 +0000 Subject: * gcc.target/x86_64/abi/callabi/func-2a.c (dg-do): Remove target selector. * gcc.target/x86_64/abi/callabi/func-indirect-2a.c (dg-do): Ditto. * gcc.target/x86_64/abi/callabi/vaarg-4a.c (dg-do): Ditto. * gcc.target/x86_64/abi/callabi/vaarg-5a.c (dg-do): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206166 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 258 +++++++++++---------- .../gcc.target/x86_64/abi/callabi/func-2a.c | 2 +- .../x86_64/abi/callabi/func-indirect-2a.c | 2 +- .../gcc.target/x86_64/abi/callabi/vaarg-4a.c | 2 +- .../gcc.target/x86_64/abi/callabi/vaarg-5a.c | 2 +- 5 files changed, 137 insertions(+), 129 deletions(-) (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ac0b7e0acc4..d0efe2ac255 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2013-12-22 Uros Bizjak + + * gcc.target/x86_64/abi/callabi/func-2a.c (dg-do): Remove + target selector. + * gcc.target/x86_64/abi/callabi/func-indirect-2a.c (dg-do): Ditto. + * gcc.target/x86_64/abi/callabi/vaarg-4a.c (dg-do): Ditto. + * gcc.target/x86_64/abi/callabi/vaarg-5a.c (dg-do): Ditto. + 2013-12-20 Richard Earnshaw * gcc.target/arm/nested-apcs.c: New test. @@ -26,130 +34,130 @@ 2013-12-04 Kyrylo Tkachov - * lib/target-supports.exp (check_effective_target_arm_crypto_ok): - New procedure. - (add_options_for_arm_crypto): Likewise. - * gcc.target/arm/crypto-vaesdq_u8.c: New test. - * gcc.target/arm/crypto-vaeseq_u8.c: Likewise. - * gcc.target/arm/crypto-vaesimcq_u8.c: Likewise. - * gcc.target/arm/crypto-vaesmcq_u8.c: Likewise. - * gcc.target/arm/crypto-vldrq_p128.c: Likewise. - * gcc.target/arm/crypto-vmull_high_p64.c: Likewise. - * gcc.target/arm/crypto-vmullp64.c: Likewise. - * gcc.target/arm/crypto-vsha1cq_u32.c: Likewise. - * gcc.target/arm/crypto-vsha1h_u32.c: Likewise. - * gcc.target/arm/crypto-vsha1mq_u32.c: Likewise. - * gcc.target/arm/crypto-vsha1pq_u32.c: Likewise. - * gcc.target/arm/crypto-vsha1su0q_u32.c: Likewise. - * gcc.target/arm/crypto-vsha1su1q_u32.c: Likewise. - * gcc.target/arm/crypto-vsha256h2q_u32.c: Likewise. - * gcc.target/arm/crypto-vsha256hq_u32.c: Likewise. - * gcc.target/arm/crypto-vsha256su0q_u32.c: Likewise. - * gcc.target/arm/crypto-vsha256su1q_u32.c: Likewise. - * gcc.target/arm/crypto-vstrq_p128.c: Likewise. - * gcc.target/arm/neon/vbslQp64: Generate. - * gcc.target/arm/neon/vbslp64: Likewise. - * gcc.target/arm/neon/vcombinep64: Likewise. - * gcc.target/arm/neon/vcreatep64: Likewise. - * gcc.target/arm/neon/vdupQ_lanep64: Likewise. - * gcc.target/arm/neon/vdupQ_np64: Likewise. - * gcc.target/arm/neon/vdup_lanep64: Likewise. - * gcc.target/arm/neon/vdup_np64: Likewise. - * gcc.target/arm/neon/vextQp64: Likewise. - * gcc.target/arm/neon/vextp64: Likewise. - * gcc.target/arm/neon/vget_highp64: Likewise. - * gcc.target/arm/neon/vget_lowp64: Likewise. - * gcc.target/arm/neon/vld1Q_dupp64: Likewise. - * gcc.target/arm/neon/vld1Q_lanep64: Likewise. - * gcc.target/arm/neon/vld1Qp64: Likewise. - * gcc.target/arm/neon/vld1_dupp64: Likewise. - * gcc.target/arm/neon/vld1_lanep64: Likewise. - * gcc.target/arm/neon/vld1p64: Likewise. - * gcc.target/arm/neon/vld2_dupp64: Likewise. - * gcc.target/arm/neon/vld2p64: Likewise. - * gcc.target/arm/neon/vld3_dupp64: Likewise. - * gcc.target/arm/neon/vld3p64: Likewise. - * gcc.target/arm/neon/vld4_dupp64: Likewise. - * gcc.target/arm/neon/vld4p64: Likewise. - * gcc.target/arm/neon/vreinterpretQf32_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQf32_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_f32: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_p16: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_p8: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_s16: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_s32: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_s64: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_s8: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_u16: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_u32: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_u64: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_u8: Likewise. - * gcc.target/arm/neon/vreinterpretQp16_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQp16_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_f32: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_p16: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_p8: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_s16: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_s32: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_s64: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_s8: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_u16: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_u32: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_u64: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_u8: Likewise. - * gcc.target/arm/neon/vreinterpretQp8_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQp8_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQs16_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQs16_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQs32_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQs32_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQs64_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQs64_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQs8_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQs8_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQu16_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQu16_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQu32_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQu32_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQu64_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQu64_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQu8_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQu8_p64: Likewise. - * gcc.target/arm/neon/vreinterpretf32_p64: Likewise. - * gcc.target/arm/neon/vreinterpretp16_p64: Likewise. - * gcc.target/arm/neon/vreinterpretp64_f32: Likewise. - * gcc.target/arm/neon/vreinterpretp64_p16: Likewise. - * gcc.target/arm/neon/vreinterpretp64_p8: Likewise. - * gcc.target/arm/neon/vreinterpretp64_s16: Likewise. - * gcc.target/arm/neon/vreinterpretp64_s32: Likewise. - * gcc.target/arm/neon/vreinterpretp64_s64: Likewise. - * gcc.target/arm/neon/vreinterpretp64_s8: Likewise. - * gcc.target/arm/neon/vreinterpretp64_u16: Likewise. - * gcc.target/arm/neon/vreinterpretp64_u32: Likewise. - * gcc.target/arm/neon/vreinterpretp64_u64: Likewise. - * gcc.target/arm/neon/vreinterpretp64_u8: Likewise. - * gcc.target/arm/neon/vreinterpretp8_p64: Likewise. - * gcc.target/arm/neon/vreinterprets16_p64: Likewise. - * gcc.target/arm/neon/vreinterprets32_p64: Likewise. - * gcc.target/arm/neon/vreinterprets64_p64: Likewise. - * gcc.target/arm/neon/vreinterprets8_p64: Likewise. - * gcc.target/arm/neon/vreinterpretu16_p64: Likewise. - * gcc.target/arm/neon/vreinterpretu32_p64: Likewise. - * gcc.target/arm/neon/vreinterpretu64_p64: Likewise. - * gcc.target/arm/neon/vreinterpretu8_p64: Likewise. - * gcc.target/arm/neon/vsliQ_np64: Likewise. - * gcc.target/arm/neon/vsli_np64: Likewise. - * gcc.target/arm/neon/vsriQ_np64: Likewise. - * gcc.target/arm/neon/vsri_np64: Likewise. - * gcc.target/arm/neon/vst1Q_lanep64: Likewise. - * gcc.target/arm/neon/vst1Qp64: Likewise. - * gcc.target/arm/neon/vst1_lanep64: Likewise. - * gcc.target/arm/neon/vst1p64: Likewise. - * gcc.target/arm/neon/vst2p64: Likewise. - * gcc.target/arm/neon/vst3p64: Likewise. - * gcc.target/arm/neon/vst4p64: Likewise. + * lib/target-supports.exp (check_effective_target_arm_crypto_ok): + New procedure. + (add_options_for_arm_crypto): Likewise. + * gcc.target/arm/crypto-vaesdq_u8.c: New test. + * gcc.target/arm/crypto-vaeseq_u8.c: Likewise. + * gcc.target/arm/crypto-vaesimcq_u8.c: Likewise. + * gcc.target/arm/crypto-vaesmcq_u8.c: Likewise. + * gcc.target/arm/crypto-vldrq_p128.c: Likewise. + * gcc.target/arm/crypto-vmull_high_p64.c: Likewise. + * gcc.target/arm/crypto-vmullp64.c: Likewise. + * gcc.target/arm/crypto-vsha1cq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1h_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1mq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1pq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1su0q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1su1q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256h2q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256hq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256su0q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256su1q_u32.c: Likewise. + * gcc.target/arm/crypto-vstrq_p128.c: Likewise. + * gcc.target/arm/neon/vbslQp64: Generate. + * gcc.target/arm/neon/vbslp64: Likewise. + * gcc.target/arm/neon/vcombinep64: Likewise. + * gcc.target/arm/neon/vcreatep64: Likewise. + * gcc.target/arm/neon/vdupQ_lanep64: Likewise. + * gcc.target/arm/neon/vdupQ_np64: Likewise. + * gcc.target/arm/neon/vdup_lanep64: Likewise. + * gcc.target/arm/neon/vdup_np64: Likewise. + * gcc.target/arm/neon/vextQp64: Likewise. + * gcc.target/arm/neon/vextp64: Likewise. + * gcc.target/arm/neon/vget_highp64: Likewise. + * gcc.target/arm/neon/vget_lowp64: Likewise. + * gcc.target/arm/neon/vld1Q_dupp64: Likewise. + * gcc.target/arm/neon/vld1Q_lanep64: Likewise. + * gcc.target/arm/neon/vld1Qp64: Likewise. + * gcc.target/arm/neon/vld1_dupp64: Likewise. + * gcc.target/arm/neon/vld1_lanep64: Likewise. + * gcc.target/arm/neon/vld1p64: Likewise. + * gcc.target/arm/neon/vld2_dupp64: Likewise. + * gcc.target/arm/neon/vld2p64: Likewise. + * gcc.target/arm/neon/vld3_dupp64: Likewise. + * gcc.target/arm/neon/vld3p64: Likewise. + * gcc.target/arm/neon/vld4_dupp64: Likewise. + * gcc.target/arm/neon/vld4p64: Likewise. + * gcc.target/arm/neon/vreinterpretQf32_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQf32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_f32: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_p16: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_p8: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s16: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s32: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s8: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u16: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u32: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u8: Likewise. + * gcc.target/arm/neon/vreinterpretQp16_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQp16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_f32: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_p16: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_p8: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s16: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s32: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s64: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s8: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u16: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u32: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u64: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u8: Likewise. + * gcc.target/arm/neon/vreinterpretQp8_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQp8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs16_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs32_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs64_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs64_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs8_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu16_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu32_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu64_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu64_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu8_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretf32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretp16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretp64_f32: Likewise. + * gcc.target/arm/neon/vreinterpretp64_p16: Likewise. + * gcc.target/arm/neon/vreinterpretp64_p8: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s16: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s32: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s64: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s8: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u16: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u32: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u64: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u8: Likewise. + * gcc.target/arm/neon/vreinterpretp8_p64: Likewise. + * gcc.target/arm/neon/vreinterprets16_p64: Likewise. + * gcc.target/arm/neon/vreinterprets32_p64: Likewise. + * gcc.target/arm/neon/vreinterprets64_p64: Likewise. + * gcc.target/arm/neon/vreinterprets8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu64_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu8_p64: Likewise. + * gcc.target/arm/neon/vsliQ_np64: Likewise. + * gcc.target/arm/neon/vsli_np64: Likewise. + * gcc.target/arm/neon/vsriQ_np64: Likewise. + * gcc.target/arm/neon/vsri_np64: Likewise. + * gcc.target/arm/neon/vst1Q_lanep64: Likewise. + * gcc.target/arm/neon/vst1Qp64: Likewise. + * gcc.target/arm/neon/vst1_lanep64: Likewise. + * gcc.target/arm/neon/vst1p64: Likewise. + * gcc.target/arm/neon/vst2p64: Likewise. + * gcc.target/arm/neon/vst3p64: Likewise. + * gcc.target/arm/neon/vst4p64: Likewise. 2013-12-19 Kyrylo Tkachov @@ -233,7 +241,7 @@ * c-c++-common/cilk-plus/SE/ef_error2.c: Likewise. * c-c++-common/cilk-plus/SE/ef_error3.c: Likewise. * gcc.dg/cilk-plus/cilk-plus.exp: Added calls for the above tests. - + 2013-12-18 Jakub Jelinek PR target/59539 diff --git a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c index 3b26da6312c..c4135494283 100644 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c @@ -1,5 +1,5 @@ /* Test for cross x86_64<->w64 abi standard calls. */ -/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */ +/* { dg-do run } */ /* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin -maccumulate-outgoing-args" } */ /* { dg-additional-sources "func-2b.c" } */ diff --git a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c index ab124660518..f8a4d78b619 100644 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c @@ -1,5 +1,5 @@ /* Test for cross x86_64<->w64 abi standard calls via variable. */ -/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */ +/* { dg-do run } */ /* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin -maccumulate-outgoing-args" } */ /* { dg-additional-sources "func-indirect-2b.c" } */ diff --git a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c index ec63d5acfe3..94f287d964b 100644 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c @@ -1,5 +1,5 @@ /* Test for cross x86_64<->w64 abi va_list calls. */ -/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */ +/* { dg-do run } */ /* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin -maccumulate-outgoing-args" } */ /* { dg-additional-sources "vaarg-4b.c" } */ diff --git a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c index 7e56e5d6bab..fc79877d174 100644 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c @@ -1,5 +1,5 @@ /* Test for cross x86_64<->w64 abi va_list calls. */ -/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */ +/* { dg-do run } */ /* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin -maccumulate-outgoing-args" } */ /* { dg-additional-sources "vaarg-5b.c" } */ -- cgit v1.2.1 From 9e72a4ba942fb1f4c74af4146b174f00a8fff548 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 23 Dec 2013 00:16:53 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206171 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index a33ed116051..83af7e2ffc7 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131222 +20131223 -- cgit v1.2.1 From f4ce3ea7b963cd159801a2916e1349b3b6f39ccc Mon Sep 17 00:00:00 2001 From: abel Date: Mon, 23 Dec 2013 06:41:22 +0000 Subject: PR rtl-optimization/57422 * sel-sched.c (mark_unavailable_hard_regs): Fix typo when calling add_to_hard_reg_set. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206173 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/sel-sched.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 529180a1ff4..dd3232d5a68 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-23 Andrey Belevantsev + + PR rtl-optimization/57422 + * sel-sched.c (mark_unavailable_hard_regs): Fix typo when calling + add_to_hard_reg_set. + 2013-12-20 Sharad Singhai * Makefile.in: Add optinfo.texi. diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index 3e1fd96840d..5a94fda5783 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -1253,7 +1253,7 @@ mark_unavailable_hard_regs (def_t def, struct reg_rename *reg_rename_p, if (!HARD_FRAME_POINTER_IS_FRAME_POINTER) add_to_hard_reg_set (®_rename_p->unavailable_hard_regs, - Pmode, HARD_FRAME_POINTER_IS_FRAME_POINTER); + Pmode, HARD_FRAME_POINTER_REGNUM); } #ifdef STACK_REGS -- cgit v1.2.1 From c4326fd2d817b40b26e25f7ed49e31a9cd23c6de Mon Sep 17 00:00:00 2001 From: abel Date: Mon, 23 Dec 2013 06:43:49 +0000 Subject: PR rtl-optimization/57422 * sel-sched.c (fill_vec_av_set): Assert that the fence insn can always be scheduled in its current form. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206174 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/sel-sched.c | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dd3232d5a68..1e502d19f97 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-23 Andrey Belevantsev + + PR rtl-optimization/57422 + * sel-sched.c (fill_vec_av_set): Assert that the fence insn + can always be scheduled in its current form. + 2013-12-23 Andrey Belevantsev PR rtl-optimization/57422 diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index 5a94fda5783..29a5f1fa1f8 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -3801,6 +3801,7 @@ fill_vec_av_set (av_set_t av, blist_t bnds, fence_t fence, signed char target_available; bool is_orig_reg_p = true; int need_cycles, new_prio; + bool fence_insn_p = INSN_UID (insn) == INSN_UID (FENCE_INSN (fence)); /* Don't allow any insns other than from SCHED_GROUP if we have one. */ if (FENCE_SCHED_NEXT (fence) && insn != FENCE_SCHED_NEXT (fence)) @@ -3855,9 +3856,16 @@ fill_vec_av_set (av_set_t av, blist_t bnds, fence_t fence, if (sched_verbose >= 4) sel_print ("Expr %d has no suitable target register\n", INSN_UID (insn)); - continue; + + /* A fence insn should not get here. */ + gcc_assert (!fence_insn_p); + continue; } + /* At this point a fence insn should always be available. */ + gcc_assert (!fence_insn_p + || INSN_UID (FENCE_INSN (fence)) == INSN_UID (EXPR_INSN_RTX (expr))); + /* Filter expressions that need to be renamed or speculated when pipelining, because compensating register copies or speculation checks are likely to be placed near the beginning of the loop, -- cgit v1.2.1 From a9d891a46fc3e7d5a768367d57ca8894c3ab4cd4 Mon Sep 17 00:00:00 2001 From: mpolacek Date: Mon, 23 Dec 2013 12:14:56 +0000 Subject: PR c++/59111 cp/ * search.c (lookup_conversions): Return NULL_TREE if !CLASS_TYPE_P. testsuite/ * g++.dg/cpp0x/pr59111.C: New test. * g++.dg/cpp1y/pr59110.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206177 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/search.c | 2 +- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/g++.dg/cpp0x/pr59111.C | 5 +++++ gcc/testsuite/g++.dg/cpp1y/pr59110.C | 4 ++++ 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/pr59111.C create mode 100644 gcc/testsuite/g++.dg/cpp1y/pr59110.C (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 98022633e0f..e4896d5c0fa 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2013-12-23 Marek Polacek + + PR c++/59111 + * search.c (lookup_conversions): Return NULL_TREE if !CLASS_TYPE_P. + 2013-12-20 Trevor saunders * semantics.c (build_anon_member_initialization): Replace diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 166ac116fd3..b700be9a7e2 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -2506,7 +2506,7 @@ lookup_conversions (tree type) tree list = NULL_TREE; complete_type (type); - if (!TYPE_BINFO (type)) + if (!CLASS_TYPE_P (type) || !TYPE_BINFO (type)) return NULL_TREE; lookup_conversions_r (TYPE_BINFO (type), 0, 0, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d0efe2ac255..fbd5ba13160 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-12-23 Marek Polacek + + PR c++/59111 + * g++.dg/cpp0x/pr59111.C: New test. + * g++.dg/cpp1y/pr59110.C: New test. + 2013-12-22 Uros Bizjak * gcc.target/x86_64/abi/callabi/func-2a.c (dg-do): Remove diff --git a/gcc/testsuite/g++.dg/cpp0x/pr59111.C b/gcc/testsuite/g++.dg/cpp0x/pr59111.C new file mode 100644 index 00000000000..14b45b14b09 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/pr59111.C @@ -0,0 +1,5 @@ +// PR c++/59111 +// { dg-do compile { target c++11 } } + +auto& foo(); // { dg-error "type specifier without trailing return type" } +int i = foo(); // { dg-error "cannot convert" } diff --git a/gcc/testsuite/g++.dg/cpp1y/pr59110.C b/gcc/testsuite/g++.dg/cpp1y/pr59110.C new file mode 100644 index 00000000000..dbbfa9b41de --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/pr59110.C @@ -0,0 +1,4 @@ +// PR c++/59110 +// { dg-options "-std=c++1y" } + +int i = *(auto*)0; // { dg-error "cannot convert" } -- cgit v1.2.1 From ccc305ffe28576a6215d68fe41b5070439fd1798 Mon Sep 17 00:00:00 2001 From: hjl Date: Mon, 23 Dec 2013 13:05:09 +0000 Subject: Use proper Intel processor names for -march=/-mtune= gcc/ * config/i386/core2.md: Replace corei7 with nehalem. * config/i386/driver-i386.c (host_detect_local_cpu): Use nehalem, westmere, sandybridge, ivybridge, haswell, bonnell, silvermont for cpu names. * config/i386/i386-c.c (ix86_target_macros_internal): Replace PROCESSOR_COREI7, PROCESSOR_COREI7_AVX, PROCESSOR_ATOM, PROCESSOR_SLM with PROCESSOR_NEHALEM, PROCESSOR_SANDYBRIDGE, PROCESSOR_BONNELL, PROCESSOR_SILVERMONT. Define __nehalem/__nehalem__, __sandybridge/__sandybridge__, __haswell/__haswell__, __tune_nehalem__, __tune_sandybridge__, __tune_haswell__, __bonnell/__bonnell__, __silvermont/__silvermont__, __tune_bonnell__, __tune_silvermont__. * config/i386/i386.c (m_COREI7): Renamed to ... (m_NEHALEM): This. (m_COREI7_AVX): Renamed to ... (m_SANDYBRIDGE): This. (m_ATOM): Renamed to ... (m_BONNELL): This. (m_SLM): Renamed to ... (m_SILVERMONT): This. (m_CORE_ALL): Updated. (cpu_names): Add "nehalem", "westmere", "sandybridge", "ivybridge", "haswell", "broadwell", "bonnell", "silvermont". (PTA_CORE2): New. (PTA_NEHALEM): Likewise. (PTA_WESTMERE): Likewise. (PTA_SANDYBRIDGE): Likewise. (PTA_IVYBRIDGE): Likewise. (PTA_HASWELL): Likewise. (PTA_BROADWELL): Likewise. (PTA_BONNELL): Likewise. (PTA_SILVERMONT): Likewise. (ix86_option_override_internal): Use new PTA_XXX. Add nehalem, westmere, sandybridge, ivybridge, haswell, bonnell, silvermont. (ix86_lea_outperforms): Updated. (ix86_issue_rate): Likewise. (ix86_adjust_cost): Likewise. (ia32_multipass_dfa_lookahead): Likewise. (do_reorder_for_imul): Likewise. (swap_top_of_ready_list): Likewise. (ix86_sched_reorder): Likewise. (ix86_sched_init_global): Likewise. (get_builtin_code_for_version): Likewise. (processor_model): Replace M_INTEL_ATOM, M_INTEL_SLM with M_INTEL_BONNELL, M_INTEL_SILVERMONT. (arch_names_table): Updated. * config/i386/i386.h (TARGET_COREI7): Removed. (TARGET_COREI7_AVX): Likewise. (TARGET_ATOM): Likewise. (TARGET_SLM): Likewise. (TARGET_NEHALEM): New. (TARGET_SANDYBRIDGE): Likewise. (TARGET_BONNELL): Likewise. (TARGET_SILVERMONT): Likewise. (target_cpu_default): Add TARGET_CPU_DEFAULT_core_avx2, TARGET_CPU_DEFAULT_nehalem, TARGET_CPU_DEFAULT_westmere, TARGET_CPU_DEFAULT_sandybridge, TARGET_CPU_DEFAULT_ivybridge, TARGET_CPU_DEFAULT_broadwell, TARGET_CPU_DEFAULT_bonnell, TARGET_CPU_DEFAULT_silvermont. Move TARGET_CPU_DEFAULT_haswell before TARGET_CPU_DEFAULT_broadwell. (processor_type): Replace PROCESSOR_COREI7, PROCESSOR_COREI7_AVX, PROCESSOR_ATOM, PROCESSOR_SLM with PROCESSOR_NEHALEM, PROCESSOR_SANDYBRIDGE, PROCESSOR_BONNELL, PROCESSOR_SILVERMONT. * config/i386/i386.md (cpu): Replace corei7 with nehalem. * config/i386/x86-tune.def: Updated. * doc/invoke.texi: Replace corei7, corei7-avx, core-avx-i, core-avx2, atom, slm with nehalem, sandybridge, ivybridge, haswell, bonnel, silvermont. Add westmere. libgcc/ * config/i386/cpuinfo.c (processor_subtypes): Replace INTEL_ATOM, INTEL_SLM with INTEL_BONNELL, INTEL_SILVERMONT. (get_intel_cpu): Updated. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206178 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 80 ++++++++++++++++++++ gcc/config/i386/core2.md | 172 +++++++++++++++++++++--------------------- gcc/config/i386/driver-i386.c | 32 ++++---- gcc/config/i386/i386-c.c | 31 ++++++-- gcc/config/i386/i386.c | 158 ++++++++++++++++++++------------------ gcc/config/i386/i386.h | 26 ++++--- gcc/config/i386/i386.md | 2 +- gcc/config/i386/x86-tune.def | 84 ++++++++++----------- gcc/doc/invoke.texi | 28 ++++--- 9 files changed, 366 insertions(+), 247 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1e502d19f97..9a5b7984d31 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,83 @@ +2013-12-23 H.J. Lu + Tocar Ilya + + * config/i386/core2.md: Replace corei7 with nehalem. + + * config/i386/driver-i386.c (host_detect_local_cpu): Use nehalem, + westmere, sandybridge, ivybridge, haswell, bonnell, silvermont + for cpu names. + + * config/i386/i386-c.c (ix86_target_macros_internal): Replace + PROCESSOR_COREI7, PROCESSOR_COREI7_AVX, PROCESSOR_ATOM, + PROCESSOR_SLM with PROCESSOR_NEHALEM, PROCESSOR_SANDYBRIDGE, + PROCESSOR_BONNELL, PROCESSOR_SILVERMONT. Define + __nehalem/__nehalem__, __sandybridge/__sandybridge__, + __haswell/__haswell__, __tune_nehalem__, __tune_sandybridge__, + __tune_haswell__, __bonnell/__bonnell__, + __silvermont/__silvermont__, __tune_bonnell__, + __tune_silvermont__. + + * config/i386/i386.c (m_COREI7): Renamed to ... + (m_NEHALEM): This. + (m_COREI7_AVX): Renamed to ... + (m_SANDYBRIDGE): This. + (m_ATOM): Renamed to ... + (m_BONNELL): This. + (m_SLM): Renamed to ... + (m_SILVERMONT): This. + (m_CORE_ALL): Updated. + (cpu_names): Add "nehalem", "westmere", "sandybridge", + "ivybridge", "haswell", "broadwell", "bonnell", "silvermont". + (PTA_CORE2): New. + (PTA_NEHALEM): Likewise. + (PTA_WESTMERE): Likewise. + (PTA_SANDYBRIDGE): Likewise. + (PTA_IVYBRIDGE): Likewise. + (PTA_HASWELL): Likewise. + (PTA_BROADWELL): Likewise. + (PTA_BONNELL): Likewise. + (PTA_SILVERMONT): Likewise. + (ix86_option_override_internal): Use new PTA_XXX. Add nehalem, + westmere, sandybridge, ivybridge, haswell, bonnell, silvermont. + (ix86_lea_outperforms): Updated. + (ix86_issue_rate): Likewise. + (ix86_adjust_cost): Likewise. + (ia32_multipass_dfa_lookahead): Likewise. + (do_reorder_for_imul): Likewise. + (swap_top_of_ready_list): Likewise. + (ix86_sched_reorder): Likewise. + (ix86_sched_init_global): Likewise. + (get_builtin_code_for_version): Likewise. + (processor_model): Replace M_INTEL_ATOM, M_INTEL_SLM with + M_INTEL_BONNELL, M_INTEL_SILVERMONT. + (arch_names_table): Updated. + + * config/i386/i386.h (TARGET_COREI7): Removed. + (TARGET_COREI7_AVX): Likewise. + (TARGET_ATOM): Likewise. + (TARGET_SLM): Likewise. + (TARGET_NEHALEM): New. + (TARGET_SANDYBRIDGE): Likewise. + (TARGET_BONNELL): Likewise. + (TARGET_SILVERMONT): Likewise. + (target_cpu_default): Add TARGET_CPU_DEFAULT_core_avx2, + TARGET_CPU_DEFAULT_nehalem, TARGET_CPU_DEFAULT_westmere, + TARGET_CPU_DEFAULT_sandybridge, TARGET_CPU_DEFAULT_ivybridge, + TARGET_CPU_DEFAULT_broadwell, TARGET_CPU_DEFAULT_bonnell, + TARGET_CPU_DEFAULT_silvermont. Move TARGET_CPU_DEFAULT_haswell + before TARGET_CPU_DEFAULT_broadwell. + (processor_type): Replace PROCESSOR_COREI7, PROCESSOR_COREI7_AVX, + PROCESSOR_ATOM, PROCESSOR_SLM with PROCESSOR_NEHALEM, + PROCESSOR_SANDYBRIDGE, PROCESSOR_BONNELL, PROCESSOR_SILVERMONT. + + * config/i386/i386.md (cpu): Replace corei7 with nehalem. + + * config/i386/x86-tune.def: Updated. + + * doc/invoke.texi: Replace corei7, corei7-avx, core-avx-i, + core-avx2, atom, slm with nehalem, sandybridge, ivybridge, + haswell, bonnel, silvermont. Add westmere. + 2013-12-23 Andrey Belevantsev PR rtl-optimization/57422 diff --git a/gcc/config/i386/core2.md b/gcc/config/i386/core2.md index 2e42675bbcb..daf7b8d5599 100644 --- a/gcc/config/i386/core2.md +++ b/gcc/config/i386/core2.md @@ -102,12 +102,12 @@ ;; on decoder 0, and say that it takes a little while before the result ;; is available. (define_insn_reservation "c2_complex_insn" 6 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (eq_attr "type" "other,multi,str")) "c2_decoder0") (define_insn_reservation "c2_call" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (eq_attr "type" "call,callv")) "c2_decoder0") @@ -115,50 +115,50 @@ ;; imovx always decodes to one uop, and also doesn't use the integer ;; units if it has memory operands. (define_insn_reservation "c2_imov" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "imov,imovx"))) "c2_decodern,(c2_p0|c2_p1|c2_p5)") (define_insn_reservation "c2_imov_load" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (eq_attr "type" "imov,imovx"))) "c2_decodern,c2_p2") (define_insn_reservation "c2_imov_store" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "store") (eq_attr "type" "imov"))) "c2_decodern,c2_p4+c2_p3") (define_insn_reservation "c2_icmov" 2 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "icmov"))) "c2_decoder0,(c2_p0|c2_p1|c2_p5)*2") (define_insn_reservation "c2_icmov_load" 2 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (eq_attr "type" "icmov"))) "c2_decoder0,c2_p2,(c2_p0|c2_p1|c2_p5)*2") (define_insn_reservation "c2_push_reg" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "store") (eq_attr "type" "push"))) "c2_decodern,c2_p4+c2_p3") (define_insn_reservation "c2_push_mem" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "both") (eq_attr "type" "push"))) "c2_decoder0,c2_p2,c2_p4+c2_p3") ;; lea executes on port 0 with latency one and throughput 1. (define_insn_reservation "c2_lea" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "lea"))) "c2_decodern,c2_p0") @@ -167,61 +167,61 @@ ;; The load and store units need to be reserved when memory operands ;; are involved. (define_insn_reservation "c2_shift_rotate" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "ishift,ishift1,rotate,rotate1"))) "c2_decodern,(c2_p0|c2_p5)") (define_insn_reservation "c2_shift_rotate_mem" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "!none") (eq_attr "type" "ishift,ishift1,rotate,rotate1"))) "c2_decoder0,c2_p2,(c2_p0|c2_p5),c2_p4+c2_p3") ;; See comments in ppro.md for the corresponding reservation. (define_insn_reservation "c2_branch" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "ibr"))) "c2_decodern,c2_p5") ;; ??? Indirect branches probably have worse latency than this. (define_insn_reservation "c2_indirect_branch" 6 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "!none") (eq_attr "type" "ibr"))) "c2_decoder0,c2_p2+c2_p5") (define_insn_reservation "c2_leave" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (eq_attr "type" "leave")) "c2_decoder0,c2_p2+(c2_p0|c2_p1),(c2_p0|c2_p1)") ;; mul and imul with two/three operands only execute on port 1 for HImode ;; and SImode, port 0 for DImode. (define_insn_reservation "c2_imul_hisi" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "HI,SI") (eq_attr "type" "imul")))) "c2_decodern,c2_p1") (define_insn_reservation "c2_imul_hisi_mem" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "!none") (and (eq_attr "mode" "HI,SI") (eq_attr "type" "imul")))) "c2_decoder0,c2_p2+c2_p1") (define_insn_reservation "c2_imul_di" 5 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "DI") (eq_attr "type" "imul")))) "c2_decodern,c2_p0") (define_insn_reservation "c2_imul_di_mem" 5 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "!none") (and (eq_attr "mode" "DI") (eq_attr "type" "imul")))) @@ -231,42 +231,42 @@ ;; QI, HI, and SI have issue latency 12, 21, and 37, respectively. ;; These issue latencies are modelled via the c2_div automaton. (define_insn_reservation "c2_idiv_QI" 19 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "QI") (eq_attr "type" "idiv")))) "c2_decoder0,(c2_p0+c2_idiv)*2,(c2_p0|c2_p1)+c2_idiv,c2_idiv*9") (define_insn_reservation "c2_idiv_QI_load" 19 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "mode" "QI") (eq_attr "type" "idiv")))) "c2_decoder0,c2_p2+c2_p0+c2_idiv,c2_p0+c2_idiv,(c2_p0|c2_p1)+c2_idiv,c2_idiv*9") (define_insn_reservation "c2_idiv_HI" 23 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "HI") (eq_attr "type" "idiv")))) "c2_decoder0,(c2_p0+c2_idiv)*3,(c2_p0|c2_p1)+c2_idiv,c2_idiv*17") (define_insn_reservation "c2_idiv_HI_load" 23 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "mode" "HI") (eq_attr "type" "idiv")))) "c2_decoder0,c2_p2+c2_p0+c2_idiv,c2_p0+c2_idiv,(c2_p0|c2_p1)+c2_idiv,c2_idiv*18") (define_insn_reservation "c2_idiv_SI" 39 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "SI") (eq_attr "type" "idiv")))) "c2_decoder0,(c2_p0+c2_idiv)*3,(c2_p0|c2_p1)+c2_idiv,c2_idiv*33") (define_insn_reservation "c2_idiv_SI_load" 39 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "mode" "SI") (eq_attr "type" "idiv")))) @@ -275,90 +275,90 @@ ;; x87 floating point operations. (define_insn_reservation "c2_fxch" 0 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (eq_attr "type" "fxch")) "c2_decodern") (define_insn_reservation "c2_fop" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none,unknown") (eq_attr "type" "fop"))) "c2_decodern,c2_p1") (define_insn_reservation "c2_fop_load" 5 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (eq_attr "type" "fop"))) "c2_decoder0,c2_p2+c2_p1,c2_p1") (define_insn_reservation "c2_fop_store" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "store") (eq_attr "type" "fop"))) "c2_decoder0,c2_p0,c2_p0,c2_p0+c2_p4+c2_p3") (define_insn_reservation "c2_fop_both" 5 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "both") (eq_attr "type" "fop"))) "c2_decoder0,c2_p2+c2_p0,c2_p0+c2_p4+c2_p3") (define_insn_reservation "c2_fsgn" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (eq_attr "type" "fsgn")) "c2_decodern,c2_p0") (define_insn_reservation "c2_fistp" 5 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (eq_attr "type" "fistp")) "c2_decoder0,c2_p0*2,c2_p4+c2_p3") (define_insn_reservation "c2_fcmov" 2 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (eq_attr "type" "fcmov")) "c2_decoder0,c2_p0*2") (define_insn_reservation "c2_fcmp" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "fcmp"))) "c2_decodern,c2_p1") (define_insn_reservation "c2_fcmp_load" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (eq_attr "type" "fcmp"))) "c2_decoder0,c2_p2+c2_p1") (define_insn_reservation "c2_fmov" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "fmov"))) "c2_decodern,c2_p0") (define_insn_reservation "c2_fmov_load" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "mode" "!XF") (eq_attr "type" "fmov")))) "c2_decodern,c2_p2") (define_insn_reservation "c2_fmov_XF_load" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "mode" "XF") (eq_attr "type" "fmov")))) "c2_decoder0,(c2_p2+c2_p0)*2") (define_insn_reservation "c2_fmov_store" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "store") (and (eq_attr "mode" "!XF") (eq_attr "type" "fmov")))) "c2_decodern,c2_p3+c2_p4") (define_insn_reservation "c2_fmov_XF_store" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "store") (and (eq_attr "mode" "XF") (eq_attr "type" "fmov")))) @@ -367,13 +367,13 @@ ;; fmul executes on port 0 with latency 5. It has issue latency 2, ;; but we don't model this. (define_insn_reservation "c2_fmul" 5 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "fmul"))) "c2_decoder0,c2_p0*2") (define_insn_reservation "c2_fmul_load" 6 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (eq_attr "type" "fmul"))) "c2_decoder0,c2_p2+c2_p0,c2_p0") @@ -384,42 +384,42 @@ ;; that. Throughput is equal to latency - 1, which we model using the ;; c2_div automaton. (define_insn_reservation "c2_fdiv_SF" 18 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "SF") (eq_attr "type" "fdiv,fpspc")))) "c2_decodern,c2_p0+c2_fdiv,c2_fdiv*16") (define_insn_reservation "c2_fdiv_SF_load" 19 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "mode" "SF") (eq_attr "type" "fdiv,fpspc")))) "c2_decoder0,c2_p2+c2_p0+c2_fdiv,c2_fdiv*16") (define_insn_reservation "c2_fdiv_DF" 32 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "DF") (eq_attr "type" "fdiv,fpspc")))) "c2_decodern,c2_p0+c2_fdiv,c2_fdiv*30") (define_insn_reservation "c2_fdiv_DF_load" 33 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "mode" "DF") (eq_attr "type" "fdiv,fpspc")))) "c2_decoder0,c2_p2+c2_p0+c2_fdiv,c2_fdiv*30") (define_insn_reservation "c2_fdiv_XF" 38 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "XF") (eq_attr "type" "fdiv,fpspc")))) "c2_decodern,c2_p0+c2_fdiv,c2_fdiv*36") (define_insn_reservation "c2_fdiv_XF_load" 39 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "mode" "XF") (eq_attr "type" "fdiv,fpspc")))) @@ -428,71 +428,71 @@ ;; MMX instructions. (define_insn_reservation "c2_mmx_add" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "mmxadd,sseiadd"))) "c2_decodern,c2_p0|c2_p5") (define_insn_reservation "c2_mmx_add_load" 2 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (eq_attr "type" "mmxadd,sseiadd"))) "c2_decodern,c2_p2+c2_p0|c2_p5") (define_insn_reservation "c2_mmx_shft" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "mmxshft"))) "c2_decodern,c2_p0|c2_p5") (define_insn_reservation "c2_mmx_shft_load" 2 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (eq_attr "type" "mmxshft"))) "c2_decoder0,c2_p2+c2_p1") (define_insn_reservation "c2_mmx_sse_shft" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "type" "sseishft") (eq_attr "length_immediate" "!0")))) "c2_decodern,c2_p1") (define_insn_reservation "c2_mmx_sse_shft_load" 2 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "type" "sseishft") (eq_attr "length_immediate" "!0")))) "c2_decodern,c2_p1") (define_insn_reservation "c2_mmx_sse_shft1" 2 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "type" "sseishft") (eq_attr "length_immediate" "0")))) "c2_decodern,c2_p1") (define_insn_reservation "c2_mmx_sse_shft1_load" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "type" "sseishft") (eq_attr "length_immediate" "0")))) "c2_decodern,c2_p1") (define_insn_reservation "c2_mmx_mul" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "mmxmul,sseimul"))) "c2_decodern,c2_p1") (define_insn_reservation "c2_mmx_mul_load" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "mmxmul,sseimul"))) "c2_decoder0,c2_p2+c2_p1") (define_insn_reservation "c2_sse_mmxcvt" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "mode" "DI") (eq_attr "type" "mmxcvt"))) "c2_decodern,c2_p1") @@ -500,94 +500,94 @@ ;; FIXME: These are Pentium III only, but we cannot tell here if ;; we're generating code for PentiumPro/Pentium II or Pentium III ;; (define_insn_reservation "c2_sse_mmxshft" 2 -;; (and (eq_attr "cpu" "core2,corei7") +;; (and (eq_attr "cpu" "core2,nehalem") ;; (and (eq_attr "mode" "TI") ;; (eq_attr "type" "mmxshft"))) ;; "c2_decodern,c2_p0") ;; The sfence instruction. (define_insn_reservation "c2_sse_sfence" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "unknown") (eq_attr "type" "sse"))) "c2_decoder0,c2_p4+c2_p3") ;; FIXME: This reservation is all wrong when we're scheduling sqrtss. (define_insn_reservation "c2_sse_SFDF" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "mode" "SF,DF") (eq_attr "type" "sse"))) "c2_decodern,c2_p0") (define_insn_reservation "c2_sse_V4SF" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "mode" "V4SF") (eq_attr "type" "sse"))) "c2_decoder0,c2_p1*2") (define_insn_reservation "c2_sse_addcmp" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "sseadd,sseadd1,ssecmp,ssecomi"))) "c2_decodern,c2_p1") (define_insn_reservation "c2_sse_addcmp_load" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (eq_attr "type" "sseadd,sseadd1,ssecmp,ssecomi"))) "c2_decodern,c2_p2+c2_p1") (define_insn_reservation "c2_sse_mul_SF" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "SF,V4SF") (eq_attr "type" "ssemul")))) "c2_decodern,c2_p0") (define_insn_reservation "c2_sse_mul_SF_load" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "mode" "SF,V4SF") (eq_attr "type" "ssemul")))) "c2_decodern,c2_p2+c2_p0") (define_insn_reservation "c2_sse_mul_DF" 5 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "DF,V2DF") (eq_attr "type" "ssemul")))) "c2_decodern,c2_p0") (define_insn_reservation "c2_sse_mul_DF_load" 5 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (and (eq_attr "mode" "DF,V2DF") (eq_attr "type" "ssemul")))) "c2_decodern,c2_p2+c2_p0") (define_insn_reservation "c2_sse_div_SF" 18 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "SF,V4SF") (eq_attr "type" "ssediv")))) "c2_decodern,c2_p0,c2_ssediv*17") (define_insn_reservation "c2_sse_div_SF_load" 18 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "SF,V4SF") (eq_attr "type" "ssediv")))) "c2_decodern,(c2_p2+c2_p0),c2_ssediv*17") (define_insn_reservation "c2_sse_div_DF" 32 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "DF,V2DF") (eq_attr "type" "ssediv")))) "c2_decodern,c2_p0,c2_ssediv*31") (define_insn_reservation "c2_sse_div_DF_load" 32 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "DF,V2DF") (eq_attr "type" "ssediv")))) @@ -595,61 +595,61 @@ ;; FIXME: these have limited throughput (define_insn_reservation "c2_sse_icvt_SF" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "SF") (eq_attr "type" "sseicvt")))) "c2_decodern,c2_p1") (define_insn_reservation "c2_sse_icvt_SF_load" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "!none") (and (eq_attr "mode" "SF") (eq_attr "type" "sseicvt")))) "c2_decodern,c2_p2+c2_p1") (define_insn_reservation "c2_sse_icvt_DF" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "DF") (eq_attr "type" "sseicvt")))) "c2_decoder0,c2_p0+c2_p1") (define_insn_reservation "c2_sse_icvt_DF_load" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "!none") (and (eq_attr "mode" "DF") (eq_attr "type" "sseicvt")))) "c2_decoder0,(c2_p2+c2_p1)") (define_insn_reservation "c2_sse_icvt_SI" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (and (eq_attr "mode" "SI") (eq_attr "type" "sseicvt")))) "c2_decodern,c2_p1") (define_insn_reservation "c2_sse_icvt_SI_load" 3 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "!none") (and (eq_attr "mode" "SI") (eq_attr "type" "sseicvt")))) "c2_decodern,(c2_p2+c2_p1)") (define_insn_reservation "c2_sse_mov" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none") (eq_attr "type" "ssemov"))) "c2_decodern,(c2_p0|c2_p1|c2_p5)") (define_insn_reservation "c2_sse_mov_load" 2 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (eq_attr "type" "ssemov"))) "c2_decodern,c2_p2") (define_insn_reservation "c2_sse_mov_store" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "store") (eq_attr "type" "ssemov"))) "c2_decodern,c2_p4+c2_p3") @@ -663,13 +663,13 @@ ;; the three decoders. Loads benefit from micro-op fusion and can be ;; treated in the same way. (define_insn_reservation "c2_insn" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "none,unknown") (eq_attr "type" "alu,alu1,negnot,incdec,icmp,test,setcc,sseishft1,mmx,mmxcmp"))) "c2_decodern,(c2_p0|c2_p1|c2_p5)") (define_insn_reservation "c2_insn_load" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "load") (eq_attr "type" "alu,alu1,negnot,incdec,icmp,test,setcc,pop,sseishft1,mmx,mmxcmp"))) "c2_decodern,c2_p2,(c2_p0|c2_p1|c2_p5)") @@ -677,7 +677,7 @@ ;; register-memory instructions have three uops, so they have to be ;; decoded on c2_decoder0. (define_insn_reservation "c2_insn_store" 1 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "store") (eq_attr "type" "alu,alu1,negnot,incdec,icmp,test,setcc,sseishft1,mmx,mmxcmp"))) "c2_decoder0,(c2_p0|c2_p1|c2_p5),c2_p4+c2_p3") @@ -685,7 +685,7 @@ ;; read-modify-store instructions produce 4 uops so they have to be ;; decoded on c2_decoder0 as well. (define_insn_reservation "c2_insn_both" 4 - (and (eq_attr "cpu" "core2,corei7") + (and (eq_attr "cpu" "core2,nehalem") (and (eq_attr "memory" "both") (eq_attr "type" "alu,alu1,negnot,incdec,icmp,test,setcc,pop,sseishft1,mmx,mmxcmp"))) "c2_decoder0,c2_p2,(c2_p0|c2_p1|c2_p5),c2_p4+c2_p3") diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index 26ae601068f..4d0b2646bae 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -643,13 +643,13 @@ const char *host_detect_local_cpu (int argc, const char **argv) { case 0x1c: case 0x26: - /* Atom. */ - cpu = "atom"; + /* Bonnell. */ + cpu = "bonnell"; break; case 0x37: case 0x4d: /* Silvermont. */ - cpu = "slm"; + cpu = "silvermont"; break; case 0x0f: /* Merom. */ @@ -663,27 +663,29 @@ const char *host_detect_local_cpu (int argc, const char **argv) case 0x1f: case 0x2e: /* Nehalem. */ + cpu = "nehalem"; + break; case 0x25: case 0x2c: case 0x2f: /* Westmere. */ - cpu = "corei7"; + cpu = "westmere"; break; case 0x2a: case 0x2d: /* Sandy Bridge. */ - cpu = "corei7-avx"; + cpu = "sandybridge"; break; case 0x3a: case 0x3e: /* Ivy Bridge. */ - cpu = "core-avx-i"; + cpu = "ivybridge"; break; case 0x3c: case 0x45: case 0x46: /* Haswell. */ - cpu = "core-avx2"; + cpu = "haswell"; break; default: if (arch) @@ -693,24 +695,24 @@ const char *host_detect_local_cpu (int argc, const char **argv) cpu = "broadwell"; else if (has_avx2) /* Assume Haswell. */ - cpu = "core-avx2"; + cpu = "haswell"; else if (has_avx) /* Assume Sandy Bridge. */ - cpu = "corei7-avx"; + cpu = "sandybridge"; else if (has_sse4_2) { if (has_movbe) - /* Assume SLM. */ - cpu = "slm"; + /* Assume Silvermont. */ + cpu = "silvermont"; else - /* Assume Core i7. */ - cpu = "corei7"; + /* Assume Nehalem. */ + cpu = "nehalem"; } else if (has_ssse3) { if (has_movbe) - /* Assume Atom. */ - cpu = "atom"; + /* Assume Bonnell. */ + cpu = "bonnell"; else /* Assume Core 2. */ cpu = "core2"; diff --git a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c index ff1a17a9d11..3710c6e176e 100644 --- a/gcc/config/i386/i386-c.c +++ b/gcc/config/i386/i386-c.c @@ -141,25 +141,35 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, def_or_undef (parse_in, "__core2"); def_or_undef (parse_in, "__core2__"); break; - case PROCESSOR_COREI7: + case PROCESSOR_NEHALEM: def_or_undef (parse_in, "__corei7"); def_or_undef (parse_in, "__corei7__"); + def_or_undef (parse_in, "__nehalem"); + def_or_undef (parse_in, "__nehalem__"); break; - case PROCESSOR_COREI7_AVX: + case PROCESSOR_SANDYBRIDGE: def_or_undef (parse_in, "__corei7_avx"); def_or_undef (parse_in, "__corei7_avx__"); + def_or_undef (parse_in, "__sandybridge"); + def_or_undef (parse_in, "__sandybridge__"); break; case PROCESSOR_HASWELL: def_or_undef (parse_in, "__core_avx2"); def_or_undef (parse_in, "__core_avx2__"); + def_or_undef (parse_in, "__haswell"); + def_or_undef (parse_in, "__haswell__"); break; - case PROCESSOR_ATOM: + case PROCESSOR_BONNELL: def_or_undef (parse_in, "__atom"); def_or_undef (parse_in, "__atom__"); + def_or_undef (parse_in, "__bonnell"); + def_or_undef (parse_in, "__bonnell__"); break; - case PROCESSOR_SLM: + case PROCESSOR_SILVERMONT: def_or_undef (parse_in, "__slm"); def_or_undef (parse_in, "__slm__"); + def_or_undef (parse_in, "__silvermont"); + def_or_undef (parse_in, "__silvermont__"); break; /* use PROCESSOR_max to not set/unset the arch macro. */ case PROCESSOR_max: @@ -246,20 +256,25 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, case PROCESSOR_CORE2: def_or_undef (parse_in, "__tune_core2__"); break; - case PROCESSOR_COREI7: + case PROCESSOR_NEHALEM: def_or_undef (parse_in, "__tune_corei7__"); + def_or_undef (parse_in, "__tune_nehalem__"); break; - case PROCESSOR_COREI7_AVX: + case PROCESSOR_SANDYBRIDGE: def_or_undef (parse_in, "__tune_corei7_avx__"); + def_or_undef (parse_in, "__tune_sandybridge__"); break; case PROCESSOR_HASWELL: def_or_undef (parse_in, "__tune_core_avx2__"); + def_or_undef (parse_in, "__tune_haswell__"); break; - case PROCESSOR_ATOM: + case PROCESSOR_BONNELL: def_or_undef (parse_in, "__tune_atom__"); + def_or_undef (parse_in, "__tune_bonnell__"); break; - case PROCESSOR_SLM: + case PROCESSOR_SILVERMONT: def_or_undef (parse_in, "__tune_slm__"); + def_or_undef (parse_in, "__tune_silvermont__"); break; case PROCESSOR_GENERIC: break; diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 0034d3338df..2d480b345d4 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -1935,12 +1935,12 @@ const struct processor_costs *ix86_cost = &pentium_cost; #define m_NOCONA (1<tick) - if (ix86_tune != PROCESSOR_SLM) + if (ix86_tune != PROCESSOR_SILVERMONT) return false; if (!NONDEBUG_INSN_P (top)) @@ -25709,8 +25718,9 @@ ix86_sched_reorder (FILE *dump, int sched_verbose, rtx *ready, int *pn_ready, /* Set up issue rate. */ issue_rate = ix86_issue_rate (); - /* Do reodering for Atom/SLM only. */ - if (ix86_tune != PROCESSOR_ATOM && ix86_tune != PROCESSOR_SLM) + /* Do reodering for BONNELL/SILVERMONT only. */ + if (ix86_tune != PROCESSOR_BONNELL + && ix86_tune != PROCESSOR_SILVERMONT) return issue_rate; /* Nothing to do if ready list contains only 1 instruction. */ @@ -26165,8 +26175,8 @@ ix86_sched_init_global (FILE *dump ATTRIBUTE_UNUSED, switch (ix86_tune) { case PROCESSOR_CORE2: - case PROCESSOR_COREI7: - case PROCESSOR_COREI7_AVX: + case PROCESSOR_NEHALEM: + case PROCESSOR_SANDYBRIDGE: case PROCESSOR_HASWELL: /* Do not perform multipass scheduling for pre-reload schedule to save compile time. */ @@ -30040,16 +30050,16 @@ get_builtin_code_for_version (tree decl, tree *predicate_list) arg_str = "core2"; priority = P_PROC_SSSE3; break; - case PROCESSOR_COREI7: - arg_str = "corei7"; + case PROCESSOR_NEHALEM: + arg_str = "nehalem"; priority = P_PROC_SSE4_2; break; - case PROCESSOR_COREI7_AVX: - arg_str = "corei7-avx"; + case PROCESSOR_SANDYBRIDGE: + arg_str = "sandybridge"; priority = P_PROC_SSE4_2; break; - case PROCESSOR_ATOM: - arg_str = "atom"; + case PROCESSOR_BONNELL: + arg_str = "bonnell"; priority = P_PROC_SSSE3; break; case PROCESSOR_AMDFAM10: @@ -30939,12 +30949,12 @@ fold_builtin_cpu (tree fndecl, tree *args) M_INTEL = 1, M_AMD, M_CPU_TYPE_START, - M_INTEL_ATOM, + M_INTEL_BONNELL, M_INTEL_CORE2, M_INTEL_COREI7, M_AMDFAM10H, M_AMDFAM15H, - M_INTEL_SLM, + M_INTEL_SILVERMONT, M_CPU_SUBTYPE_START, M_INTEL_COREI7_NEHALEM, M_INTEL_COREI7_WESTMERE, @@ -30967,8 +30977,8 @@ fold_builtin_cpu (tree fndecl, tree *args) { {"amd", M_AMD}, {"intel", M_INTEL}, - {"atom", M_INTEL_ATOM}, - {"slm", M_INTEL_SLM}, + {"atom", M_INTEL_BONNELL}, + {"slm", M_INTEL_SILVERMONT}, {"core2", M_INTEL_CORE2}, {"corei7", M_INTEL_COREI7}, {"nehalem", M_INTEL_COREI7_NEHALEM}, diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index b6e7d4611e6..aafc1accd67 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -301,9 +301,11 @@ extern const struct processor_costs ix86_size_cost; #define TARGET_ATHLON_K8 (TARGET_K8 || TARGET_ATHLON) #define TARGET_NOCONA (ix86_tune == PROCESSOR_NOCONA) #define TARGET_CORE2 (ix86_tune == PROCESSOR_CORE2) -#define TARGET_COREI7 (ix86_tune == PROCESSOR_COREI7) -#define TARGET_COREI7_AVX (ix86_tune == PROCESSOR_COREI7_AVX) +#define TARGET_NEHALEM (ix86_tune == PROCESSOR_NEHALEM) +#define TARGET_SANDYBRIDGE (ix86_tune == PROCESSOR_SANDYBRIDGE) #define TARGET_HASWELL (ix86_tune == PROCESSOR_HASWELL) +#define TARGET_BONNELL (ix86_tune == PROCESSOR_BONNELL) +#define TARGET_SILVERMONT (ix86_tune == PROCESSOR_SILVERMONT) #define TARGET_GENERIC (ix86_tune == PROCESSOR_GENERIC) #define TARGET_AMDFAM10 (ix86_tune == PROCESSOR_AMDFAM10) #define TARGET_BDVER1 (ix86_tune == PROCESSOR_BDVER1) @@ -312,8 +314,6 @@ extern const struct processor_costs ix86_size_cost; #define TARGET_BDVER4 (ix86_tune == PROCESSOR_BDVER4) #define TARGET_BTVER1 (ix86_tune == PROCESSOR_BTVER1) #define TARGET_BTVER2 (ix86_tune == PROCESSOR_BTVER2) -#define TARGET_ATOM (ix86_tune == PROCESSOR_ATOM) -#define TARGET_SLM (ix86_tune == PROCESSOR_SLM) /* Feature tests against the various tunings. */ enum ix86_tune_indices { @@ -625,9 +625,17 @@ enum target_cpu_default TARGET_CPU_DEFAULT_core2, TARGET_CPU_DEFAULT_corei7, TARGET_CPU_DEFAULT_corei7_avx, - TARGET_CPU_DEFAULT_haswell, + TARGET_CPU_DEFAULT_core_avx2, TARGET_CPU_DEFAULT_atom, TARGET_CPU_DEFAULT_slm, + TARGET_CPU_DEFAULT_nehalem, + TARGET_CPU_DEFAULT_westmere, + TARGET_CPU_DEFAULT_sandybridge, + TARGET_CPU_DEFAULT_ivybridge, + TARGET_CPU_DEFAULT_haswell, + TARGET_CPU_DEFAULT_broadwell, + TARGET_CPU_DEFAULT_bonnell, + TARGET_CPU_DEFAULT_silvermont, TARGET_CPU_DEFAULT_intel, TARGET_CPU_DEFAULT_geode, @@ -2220,9 +2228,11 @@ enum processor_type PROCESSOR_K8, PROCESSOR_NOCONA, PROCESSOR_CORE2, - PROCESSOR_COREI7, - PROCESSOR_COREI7_AVX, + PROCESSOR_NEHALEM, + PROCESSOR_SANDYBRIDGE, PROCESSOR_HASWELL, + PROCESSOR_BONNELL, + PROCESSOR_SILVERMONT, PROCESSOR_GENERIC, PROCESSOR_AMDFAM10, PROCESSOR_BDVER1, @@ -2231,8 +2241,6 @@ enum processor_type PROCESSOR_BDVER4, PROCESSOR_BTVER1, PROCESSOR_BTVER2, - PROCESSOR_ATOM, - PROCESSOR_SLM, PROCESSOR_max }; diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index ab5b33f6399..7a16c8ec1df 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -354,7 +354,7 @@ ;; Processor type. -(define_attr "cpu" "none,pentium,pentiumpro,geode,k6,athlon,k8,core2,corei7, +(define_attr "cpu" "none,pentium,pentiumpro,geode,k6,athlon,k8,core2,nehalem, atom,slm,generic,amdfam10,bdver1,bdver2,bdver3,bdver4, btver1,btver2" (const (symbol_ref "ix86_schedule"))) diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def index 95396850172..88e0402462b 100644 --- a/gcc/config/i386/x86-tune.def +++ b/gcc/config/i386/x86-tune.def @@ -40,7 +40,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see /* X86_TUNE_SCHEDULE: Enable scheduling. */ DEF_TUNE (X86_TUNE_SCHEDULE, "schedule", - m_PENT | m_PPRO | m_CORE_ALL | m_ATOM | m_SLM | m_K6_GEODE + m_PENT | m_PPRO | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_K6_GEODE | m_AMD_MULTIPLE | m_GENERIC) /* X86_TUNE_PARTIAL_REG_DEPENDENCY: Enable more register renaming @@ -48,7 +48,7 @@ DEF_TUNE (X86_TUNE_SCHEDULE, "schedule", over partial stores. For example preffer MOVZBL or MOVQ to load 8bit value over movb. */ DEF_TUNE (X86_TUNE_PARTIAL_REG_DEPENDENCY, "partial_reg_dependency", - m_P4_NOCONA | m_CORE_ALL | m_ATOM | m_SLM | m_AMD_MULTIPLE + m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_AMD_MULTIPLE | m_GENERIC) /* X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY: This knob promotes all store @@ -58,7 +58,7 @@ DEF_TUNE (X86_TUNE_PARTIAL_REG_DEPENDENCY, "partial_reg_dependency", SPECfp regression, while enabling it on K8 brings roughly 2.4% regression that can be partly masked by careful scheduling of moves. */ DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY, "sse_partial_reg_dependency", - m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_ATOM | m_SLM | m_AMDFAM10 + m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_AMDFAM10 | m_BDVER | m_GENERIC) /* X86_TUNE_SSE_SPLIT_REGS: Set for machines where the type and dependencies @@ -84,13 +84,13 @@ DEF_TUNE (X86_TUNE_PARTIAL_FLAG_REG_STALL, "partial_flag_reg_stall", /* X86_TUNE_MOVX: Enable to zero extend integer registers to avoid partial dependencies. */ DEF_TUNE (X86_TUNE_MOVX, "movx", - m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_ATOM | m_SLM | m_GEODE + m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_GEODE | m_AMD_MULTIPLE | m_GENERIC) /* X86_TUNE_MEMORY_MISMATCH_STALL: Avoid partial stores that are followed by full sized loads. */ DEF_TUNE (X86_TUNE_MEMORY_MISMATCH_STALL, "memory_mismatch_stall", - m_P4_NOCONA | m_CORE_ALL | m_ATOM | m_SLM | m_AMD_MULTIPLE | m_GENERIC) + m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_AMD_MULTIPLE | m_GENERIC) /* X86_TUNE_FUSE_CMP_AND_BRANCH_32: Fuse compare with a subsequent conditional jump instruction for 32 bit TARGET. @@ -102,29 +102,29 @@ DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_32, "fuse_cmp_and_branch_32", conditional jump instruction for TARGET_64BIT. FIXME: revisit for generic. */ DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_64, "fuse_cmp_and_branch_64", - m_COREI7 | m_COREI7_AVX | m_HASWELL | m_BDVER) + m_NEHALEM | m_SANDYBRIDGE | m_HASWELL | m_BDVER) /* X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS: Fuse compare with a subsequent conditional jump instruction when the condition jump check sign flag (SF) or overflow flag (OF). */ DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, "fuse_cmp_and_branch_soflags", - m_COREI7 | m_COREI7_AVX | m_HASWELL | m_BDVER) + m_NEHALEM | m_SANDYBRIDGE | m_HASWELL | m_BDVER) /* X86_TUNE_FUSE_ALU_AND_BRANCH: Fuse alu with a subsequent conditional jump instruction when the alu instruction produces the CCFLAG consumed by the conditional jump instruction. */ DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH, "fuse_alu_and_branch", - m_COREI7_AVX | m_HASWELL) + m_SANDYBRIDGE | m_HASWELL) /* X86_TUNE_REASSOC_INT_TO_PARALLEL: Try to produce parallel computations during reassociation of integer computation. */ DEF_TUNE (X86_TUNE_REASSOC_INT_TO_PARALLEL, "reassoc_int_to_parallel", - m_ATOM) + m_BONNELL) /* X86_TUNE_REASSOC_FP_TO_PARALLEL: Try to produce parallel computations during reassociation of fp computation. */ DEF_TUNE (X86_TUNE_REASSOC_FP_TO_PARALLEL, "reassoc_fp_to_parallel", - m_ATOM | m_SLM | m_HASWELL | m_BDVER1 | m_BDVER2 | m_GENERIC) + m_BONNELL | m_SILVERMONT | m_HASWELL | m_BDVER1 | m_BDVER2 | m_GENERIC) /*****************************************************************************/ /* Function prologue, epilogue and function calling sequences. */ @@ -142,33 +142,33 @@ DEF_TUNE (X86_TUNE_REASSOC_FP_TO_PARALLEL, "reassoc_fp_to_parallel", Bobcat and Generic. This is because disabling it causes large regression on mgrid due to IRA limitation leading to unecessary use of the frame pointer in 32bit mode. */ -DEF_TUNE (X86_TUNE_ACCUMULATE_OUTGOING_ARGS, "accumulate_outgoing_args", - m_PPRO | m_P4_NOCONA | m_ATOM | m_SLM | m_AMD_MULTIPLE | m_GENERIC) +DEF_TUNE (X86_TUNE_ACCUMULATE_OUTGOING_ARGS, "accumulate_outgoing_args", + m_PPRO | m_P4_NOCONA | m_BONNELL | m_SILVERMONT | m_AMD_MULTIPLE | m_GENERIC) /* X86_TUNE_PROLOGUE_USING_MOVE: Do not use push/pop in prologues that are considered on critical path. */ -DEF_TUNE (X86_TUNE_PROLOGUE_USING_MOVE, "prologue_using_move", +DEF_TUNE (X86_TUNE_PROLOGUE_USING_MOVE, "prologue_using_move", m_PPRO | m_ATHLON_K8) /* X86_TUNE_PROLOGUE_USING_MOVE: Do not use push/pop in epilogues that are considered on critical path. */ DEF_TUNE (X86_TUNE_EPILOGUE_USING_MOVE, "epilogue_using_move", - m_PPRO | m_ATHLON_K8) + m_PPRO | m_ATHLON_K8) /* X86_TUNE_USE_LEAVE: Use "leave" instruction in epilogues where it fits. */ -DEF_TUNE (X86_TUNE_USE_LEAVE, "use_leave", +DEF_TUNE (X86_TUNE_USE_LEAVE, "use_leave", m_386 | m_CORE_ALL | m_K6_GEODE | m_AMD_MULTIPLE | m_GENERIC) /* X86_TUNE_PUSH_MEMORY: Enable generation of "push mem" instructions. Some chips, like 486 and Pentium works faster with separate load and push instructions. */ -DEF_TUNE (X86_TUNE_PUSH_MEMORY, "push_memory", - m_386 | m_P4_NOCONA | m_CORE_ALL | m_K6_GEODE | m_AMD_MULTIPLE +DEF_TUNE (X86_TUNE_PUSH_MEMORY, "push_memory", + m_386 | m_P4_NOCONA | m_CORE_ALL | m_K6_GEODE | m_AMD_MULTIPLE | m_GENERIC) /* X86_TUNE_SINGLE_PUSH: Enable if single push insn is preferred over esp subtraction. */ -DEF_TUNE (X86_TUNE_SINGLE_PUSH, "single_push", m_386 | m_486 | m_PENT +DEF_TUNE (X86_TUNE_SINGLE_PUSH, "single_push", m_386 | m_486 | m_PENT | m_K6_GEODE) /* X86_TUNE_DOUBLE_PUSH. Enable if double push insn is preferred @@ -189,7 +189,7 @@ DEF_TUNE (X86_TUNE_DOUBLE_POP, "double_pop", m_PENT) /* X86_TUNE_PAD_SHORT_FUNCTION: Make every function to be at least 4 instructions long. */ -DEF_TUNE (X86_TUNE_PAD_SHORT_FUNCTION, "pad_short_function", m_ATOM) +DEF_TUNE (X86_TUNE_PAD_SHORT_FUNCTION, "pad_short_function", m_BONNELL) /* X86_TUNE_PAD_RETURNS: Place NOP before every RET that is a destination of conditional jump or directly preceded by other jump instruction. @@ -202,7 +202,7 @@ DEF_TUNE (X86_TUNE_PAD_RETURNS, "pad_returns", /* X86_TUNE_FOUR_JUMP_LIMIT: Some CPU cores are not able to predict more than 4 branch instructions in the 16 byte window. */ DEF_TUNE (X86_TUNE_FOUR_JUMP_LIMIT, "four_jump_limit", - m_PPRO | m_P4_NOCONA | m_ATOM | m_SLM | m_ATHLON_K8 | m_AMDFAM10) + m_PPRO | m_P4_NOCONA | m_BONNELL | m_SILVERMONT | m_ATHLON_K8 | m_AMDFAM10) /*****************************************************************************/ /* Integer instruction selection tuning */ @@ -224,26 +224,26 @@ DEF_TUNE (X86_TUNE_READ_MODIFY, "read_modify", ~(m_PENT | m_PPRO)) /* X86_TUNE_USE_INCDEC: Enable use of inc/dec instructions. */ DEF_TUNE (X86_TUNE_USE_INCDEC, "use_incdec", - ~(m_P4_NOCONA | m_CORE_ALL | m_ATOM | m_SLM | m_GENERIC)) + ~(m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_GENERIC)) /* X86_TUNE_INTEGER_DFMODE_MOVES: Enable if integer moves are preferred for DFmode copies */ DEF_TUNE (X86_TUNE_INTEGER_DFMODE_MOVES, "integer_dfmode_moves", - ~(m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_ATOM | m_SLM + ~(m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_GEODE | m_AMD_MULTIPLE | m_GENERIC)) /* X86_TUNE_OPT_AGU: Optimize for Address Generation Unit. This flag will impact LEA instruction selection. */ -DEF_TUNE (X86_TUNE_OPT_AGU, "opt_agu", m_ATOM | m_SLM) +DEF_TUNE (X86_TUNE_OPT_AGU, "opt_agu", m_BONNELL | m_SILVERMONT) /* X86_TUNE_SLOW_IMUL_IMM32_MEM: Imul of 32-bit constant and memory is - vector path on AMD machines. + vector path on AMD machines. FIXME: Do we need to enable this for core? */ DEF_TUNE (X86_TUNE_SLOW_IMUL_IMM32_MEM, "slow_imul_imm32_mem", m_K8 | m_AMDFAM10) /* X86_TUNE_SLOW_IMUL_IMM8: Imul of 8-bit constant is vector path on AMD - machines. + machines. FIXME: Do we need to enable this for core? */ DEF_TUNE (X86_TUNE_SLOW_IMUL_IMM8, "slow_imul_imm8", m_K8 | m_AMDFAM10) @@ -251,7 +251,7 @@ DEF_TUNE (X86_TUNE_SLOW_IMUL_IMM8, "slow_imul_imm8", /* X86_TUNE_AVOID_MEM_OPND_FOR_CMOVE: Try to avoid memory operands for a conditional move. */ DEF_TUNE (X86_TUNE_AVOID_MEM_OPND_FOR_CMOVE, "avoid_mem_opnd_for_cmove", - m_ATOM | m_SLM) + m_BONNELL | m_SILVERMONT) /* X86_TUNE_SINGLE_STRINGOP: Enable use of single string operations, such as MOVS and STOS (without a REP prefix) to move/set sequences of bytes. */ @@ -268,15 +268,15 @@ DEF_TUNE (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES, /* X86_TUNE_USE_SAHF: Controls use of SAHF. */ DEF_TUNE (X86_TUNE_USE_SAHF, "use_sahf", - m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_ATOM | m_SLM | m_K6_GEODE + m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_K6_GEODE | m_K8 | m_AMDFAM10 | m_BDVER | m_BTVER | m_GENERIC) /* X86_TUNE_USE_CLTD: Controls use of CLTD and CTQO instructions. */ -DEF_TUNE (X86_TUNE_USE_CLTD, "use_cltd", ~(m_PENT | m_ATOM | m_SLM | m_K6)) +DEF_TUNE (X86_TUNE_USE_CLTD, "use_cltd", ~(m_PENT | m_BONNELL | m_SILVERMONT | m_K6)) /* X86_TUNE_USE_BT: Enable use of BT (bit test) instructions. */ DEF_TUNE (X86_TUNE_USE_BT, "use_bt", - m_CORE_ALL | m_ATOM | m_SLM | m_AMD_MULTIPLE | m_GENERIC) + m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_AMD_MULTIPLE | m_GENERIC) /*****************************************************************************/ /* 387 instruction selection tuning */ @@ -285,21 +285,21 @@ DEF_TUNE (X86_TUNE_USE_BT, "use_bt", /* X86_TUNE_USE_HIMODE_FIOP: Enables use of x87 instructions with 16bit integer operand. FIXME: Why this is disabled for modern chips? */ -DEF_TUNE (X86_TUNE_USE_HIMODE_FIOP, "use_himode_fiop", +DEF_TUNE (X86_TUNE_USE_HIMODE_FIOP, "use_himode_fiop", m_386 | m_486 | m_K6_GEODE) /* X86_TUNE_USE_SIMODE_FIOP: Enables use of x87 instructions with 32bit integer operand. */ DEF_TUNE (X86_TUNE_USE_SIMODE_FIOP, "use_simode_fiop", - ~(m_PENT | m_PPRO | m_CORE_ALL | m_ATOM - | m_SLM | m_AMD_MULTIPLE | m_GENERIC)) + ~(m_PENT | m_PPRO | m_CORE_ALL | m_BONNELL + | m_SILVERMONT | m_AMD_MULTIPLE | m_GENERIC)) /* X86_TUNE_USE_FFREEP: Use freep instruction instead of fstp. */ DEF_TUNE (X86_TUNE_USE_FFREEP, "use_ffreep", m_AMD_MULTIPLE) /* X86_TUNE_EXT_80387_CONSTANTS: Use fancy 80387 constants, such as PI. */ DEF_TUNE (X86_TUNE_EXT_80387_CONSTANTS, "ext_80387_constants", - m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_ATOM | m_SLM | m_K6_GEODE + m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_K6_GEODE | m_ATHLON_K8 | m_GENERIC) /*****************************************************************************/ @@ -308,7 +308,7 @@ DEF_TUNE (X86_TUNE_EXT_80387_CONSTANTS, "ext_80387_constants", /* X86_TUNE_VECTORIZE_DOUBLE: Enable double precision vector instructions. */ -DEF_TUNE (X86_TUNE_VECTORIZE_DOUBLE, "vectorize_double", ~m_ATOM) +DEF_TUNE (X86_TUNE_VECTORIZE_DOUBLE, "vectorize_double", ~m_BONNELL) /* X86_TUNE_GENERAL_REGS_SSE_SPILL: Try to spill general regs to SSE regs instead of memory. */ @@ -318,12 +318,12 @@ DEF_TUNE (X86_TUNE_GENERAL_REGS_SSE_SPILL, "general_regs_sse_spill", /* X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL: Use movups for misaligned loads instead of a sequence loading registers by parts. */ DEF_TUNE (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL, "sse_unaligned_load_optimal", - m_COREI7 | m_COREI7_AVX | m_HASWELL | m_AMDFAM10 | m_BDVER | m_BTVER | m_SLM | m_GENERIC) + m_NEHALEM | m_SANDYBRIDGE | m_HASWELL | m_AMDFAM10 | m_BDVER | m_BTVER | m_SILVERMONT | m_GENERIC) /* X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL: Use movups for misaligned stores instead of a sequence loading registers by parts. */ DEF_TUNE (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL, "sse_unaligned_store_optimal", - m_COREI7 | m_COREI7_AVX | m_HASWELL | m_BDVER | m_SLM | m_GENERIC) + m_NEHALEM | m_SANDYBRIDGE | m_HASWELL | m_BDVER | m_SILVERMONT | m_GENERIC) /* Use packed single precision instructions where posisble. I.e. movups instead of movupd. */ @@ -360,7 +360,7 @@ DEF_TUNE (X86_TUNE_INTER_UNIT_CONVERSIONS, "inter_unit_conversions", /* X86_TUNE_SPLIT_MEM_OPND_FOR_FP_CONVERTS: Try to split memory operand for fp converts to destination register. */ DEF_TUNE (X86_TUNE_SPLIT_MEM_OPND_FOR_FP_CONVERTS, "split_mem_opnd_for_fp_converts", - m_SLM) + m_SILVERMONT) /* X86_TUNE_USE_VECTOR_FP_CONVERTS: Prefer vector packed SSE conversion from FP to FP. This form of instructions avoids partial write to the @@ -378,13 +378,13 @@ DEF_TUNE (X86_TUNE_USE_VECTOR_CONVERTS, "use_vector_converts", m_AMDFAM10) /* X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL: if false, unaligned loads are split. */ -DEF_TUNE (X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL, "256_unaligned_load_optimal", - ~(m_COREI7 | m_COREI7_AVX | m_GENERIC)) +DEF_TUNE (X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL, "256_unaligned_load_optimal", + ~(m_NEHALEM | m_SANDYBRIDGE | m_GENERIC)) /* X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL: if false, unaligned stores are split. */ -DEF_TUNE (X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL, "256_unaligned_store_optimal", - ~(m_COREI7 | m_COREI7_AVX | m_BDVER | m_GENERIC)) +DEF_TUNE (X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL, "256_unaligned_store_optimal", + ~(m_NEHALEM | m_SANDYBRIDGE | m_BDVER | m_GENERIC)) /* X86_TUNE_AVX128_OPTIMAL: Enable 128-bit AVX instruction generation for the auto-vectorizer. */ @@ -401,7 +401,7 @@ DEF_TUNE (X86_TUNE_DOUBLE_WITH_ADD, "double_with_add", ~m_386) /* X86_TUNE_ALWAYS_FANCY_MATH_387: controls use of fancy 387 operations, such as fsqrt, fprem, fsin, fcos, fsincos etc. Should be enabled for all targets that always has coprocesor. */ -DEF_TUNE (X86_TUNE_ALWAYS_FANCY_MATH_387, "always_fancy_math_387", +DEF_TUNE (X86_TUNE_ALWAYS_FANCY_MATH_387, "always_fancy_math_387", ~(m_386 | m_486)) /* X86_TUNE_UNROLL_STRLEN: Produce (quite lame) unrolled sequence for diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 93468a8e1b3..a10b6f56745 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -14648,34 +14648,38 @@ SSE2 and SSE3 instruction set support. Intel Core 2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 instruction set support. -@item corei7 -Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, +@item nehalem +Intel Nehalem CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and POPCNT instruction set support. -@item corei7-avx -Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, +@item westmere +Intel Westmere CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, +SSE4.1, SSE4.2, POPCNT, AES and PCLMUL instruction set support. + +@item sandybridge +Intel Sandy Bridge CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES and PCLMUL instruction set support. -@item core-avx-i -Intel Core CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, +@item ivybridge +Intel Ivy Bridge CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND and F16C instruction set support. -@item core-avx2 -Intel Core CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, +@item haswell +Intel Haswell CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2 and F16C instruction set support. @item broadwell Intel Broadwell CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, -BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW instruction set support. +BMI, BMI2, F16C, RDSEED, ADCX and PREFETCHW instruction set support. -@item atom -Intel Atom CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3 and SSSE3 +@item bonnell +Intel Bonnell CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3 and SSSE3 instruction set support. -@item slm +@item silvermont Intel Silvermont CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL and RDRND instruction set support. -- cgit v1.2.1 From 13bad991da84974db996d0cea1a414429b429d97 Mon Sep 17 00:00:00 2001 From: meibf Date: Mon, 23 Dec 2013 15:07:58 +0000 Subject: 2013-12-23 Bingfeng Mei PR middle-end/59569 * tree-vect-stmts.c (vectorizable_store): Skip permutation for consant operand, and add a few missing \n. * gcc.c-torture/compile/pr59569-1.c: New test. * gcc.c-torture/compile/pr59569-2.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206179 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gcc.c-torture/compile/pr59569-1.c | 9 +++++++++ gcc/testsuite/gcc.c-torture/compile/pr59569-2.c | 6 ++++++ gcc/tree-vect-stmts.c | 14 +++++++++----- 5 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr59569-1.c create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr59569-2.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9a5b7984d31..b9fe7632681 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-23 Bingfeng Mei + + PR middle-end/59569 + * tree-vect-stmts.c (vectorizable_store): Skip permutation for + consant/external operand, and add a few missing \n. + 2013-12-23 H.J. Lu Tocar Ilya diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fbd5ba13160..c4fad36aa9e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-12-23 Bingfeng Mei + + PR middle-end/59569 + * gcc.c-torture/compile/pr59569-1.c: New test. + * gcc.c-torture/compile/pr59569-2.c: Ditto. + 2013-12-23 Marek Polacek PR c++/59111 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr59569-1.c b/gcc/testsuite/gcc.c-torture/compile/pr59569-1.c new file mode 100644 index 00000000000..116c72474cc --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr59569-1.c @@ -0,0 +1,9 @@ +/* PR middle-end/59569 */ +extern char c; + +void +foo (int i, char **j) +{ + while (i) + j[--i] = &c; +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr59569-2.c b/gcc/testsuite/gcc.c-torture/compile/pr59569-2.c new file mode 100644 index 00000000000..e813b88d857 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr59569-2.c @@ -0,0 +1,6 @@ +/* PR middle-end/59569 */ +void foo (int *a, int b) +{ + for (; b; b--) + a[b] = 1; +} diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 18cf5630ca2..e3009d9a474 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -5005,7 +5005,7 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, { if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, - "multiple types with negative step."); + "multiple types with negative step.\n"); return false; } @@ -5018,14 +5018,16 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, { if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, - "negative step but alignment required."); + "negative step but alignment required.\n"); return false; } - if (!perm_mask_for_reverse (vectype)) + if (dt != vect_constant_def + && dt != vect_external_def + && !perm_mask_for_reverse (vectype)) { if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, - "negative step and reversing not supported."); + "negative step and reversing not supported.\n"); return false; } } @@ -5353,7 +5355,9 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, set_ptr_info_alignment (get_ptr_info (dataref_ptr), align, misalign); - if (negative) + if (negative + && dt != vect_constant_def + && dt != vect_external_def) { tree perm_mask = perm_mask_for_reverse (vectype); tree perm_dest -- cgit v1.2.1 From ff385162ee38caf3100ba4a0f682241c3b0d681d Mon Sep 17 00:00:00 2001 From: hjl Date: Mon, 23 Dec 2013 17:11:00 +0000 Subject: Move Bonnell and Silvermont entries before generic * config/i386/i386.c (processor_target_table): Move Bonnell and Silvermont entries before generic. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206180 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.c | 14 ++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b9fe7632681..b2f9f6e1619 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-23 H.J. Lu + + * config/i386/i386.c (processor_target_table): Move Bonnell and + Silvermont entries before generic. + 2013-12-23 Bingfeng Mei PR middle-end/59569 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 2d480b345d4..ced6618fc4c 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2397,12 +2397,16 @@ static const struct ptt processor_target_table[PROCESSOR_max] = {&nocona_cost, 0, 0, 0, 0, 0}, /* Core 2 */ {&core_cost, 16, 10, 16, 10, 16}, - /* Core i7 */ + /* Nehalem */ {&core_cost, 16, 10, 16, 10, 16}, - /* Core i7 avx */ + /* Sandy Bridge */ {&core_cost, 16, 10, 16, 10, 16}, - /* Core avx2 */ + /* Haswell */ {&core_cost, 16, 10, 16, 10, 16}, + /* Bonnell */ + {&atom_cost, 16, 15, 16, 7, 16}, + /* Silvermont */ + {&slm_cost, 16, 15, 16, 7, 16}, {&generic_cost, 16, 10, 16, 10, 16}, {&amdfam10_cost, 32, 24, 32, 7, 32}, {&bdver1_cost, 16, 10, 16, 7, 11}, @@ -2410,9 +2414,7 @@ static const struct ptt processor_target_table[PROCESSOR_max] = {&bdver3_cost, 16, 10, 16, 7, 11}, {&bdver4_cost, 16, 10, 16, 7, 11}, {&btver1_cost, 16, 10, 16, 7, 11}, - {&btver2_cost, 16, 10, 16, 7, 11}, - {&atom_cost, 16, 15, 16, 7, 16}, - {&slm_cost, 16, 15, 16, 7, 16} + {&btver2_cost, 16, 10, 16, 7, 11} }; static const char *const cpu_names[TARGET_CPU_DEFAULT_max] = -- cgit v1.2.1 From 5a1baa9d247f64349cc016895b357948d180ef7b Mon Sep 17 00:00:00 2001 From: meibf Date: Mon, 23 Dec 2013 17:22:30 +0000 Subject: 2013-12-23 Bingfeng Mei * gcc.dg/vect/vect-neg-store-1.c: New test. * gcc.dg/vect/vect-neg-store-2.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206181 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gcc.dg/vect/vect-neg-store-1.c | 39 ++++++++++++++++++++++++++++ gcc/testsuite/gcc.dg/vect/vect-neg-store-2.c | 39 ++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/vect/vect-neg-store-1.c create mode 100644 gcc/testsuite/gcc.dg/vect/vect-neg-store-2.c (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c4fad36aa9e..c0bba43dc39 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-23 Bingfeng Mei + + * gcc.dg/vect/vect-neg-store-1.c: New test. + * gcc.dg/vect/vect-neg-store-2.c: Ditto. + 2013-12-23 Bingfeng Mei PR middle-end/59569 diff --git a/gcc/testsuite/gcc.dg/vect/vect-neg-store-1.c b/gcc/testsuite/gcc.dg/vect/vect-neg-store-1.c new file mode 100644 index 00000000000..178f0a1ec9d --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-neg-store-1.c @@ -0,0 +1,39 @@ +/* { dg-require-effective-target vect_int } */ +#include + +__attribute__((noinline, noclone)) +void test1(short x[128]) +{ + int i; + for (i=127; i>=0; i--) { + x[i] = 1234; + } +} + +int main (void) +{ + short x[128 + 32]; + int i; + + for (i = 0; i < 16; i ++) + { + asm (""); + x[i] = x[i + 144] = 5678; + } + + test1 (x + 16); + + for (i = 0; i < 128; i++) + if (x[i + 16] != 1234) + abort (); + + for (i = 0; i < 16; i++) + if (x[i] != 5678 + || x[i + 144] != 5678) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-neg-store-2.c b/gcc/testsuite/gcc.dg/vect/vect-neg-store-2.c new file mode 100644 index 00000000000..e97b9bf40ef --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-neg-store-2.c @@ -0,0 +1,39 @@ +/* { dg-require-effective-target vect_int } */ +#include + +__attribute__((noinline, noclone)) +void test1(short x[128], short D) +{ + int i; + for (i=127; i>=0; i--) { + x[i] = D; + } +} + +int main (void) +{ + short x[128 + 32]; + int i; + + for (i = 0; i < 16; i ++) + { + asm (""); + x[i] = x[i + 144] = 5678; + } + + test1 (x + 16, 1234); + + for (i = 0; i < 128; i++) + if (x[i + 16] != 1234) + abort (); + + for (i = 0; i < 16; i++) + if (x[i] != 5678 + || x[i + 144] != 5678) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ -- cgit v1.2.1 From 468088aca3d51046f289052028ca22f1552a1df9 Mon Sep 17 00:00:00 2001 From: jason Date: Mon, 23 Dec 2013 17:49:47 +0000 Subject: PR c++/41090 Add -fdeclone-ctor-dtor. gcc/cp/ * optimize.c (can_alias_cdtor, populate_clone_array): Split out from maybe_clone_body. (maybe_thunk_body): New function. (maybe_clone_body): Call it. * mangle.c (write_mangled_name): Remove code to suppress writing of mangled name for cloned constructor or destructor. (write_special_name_constructor): Handle decloned constructor. (write_special_name_destructor): Handle decloned destructor. * method.c (trivial_fn_p): Handle decloning. * semantics.c (expand_or_defer_fn_1): Clone after setting linkage. gcc/c-family/ * c.opt: Add -fdeclone-ctor-dtor. * c-opts.c (c_common_post_options): Default to on iff -Os. gcc/ * cgraph.h (struct cgraph_node): Add calls_comdat_local. (symtab_comdat_local_p, symtab_in_same_comdat_p): New. * cif-code.def: Add USES_COMDAT_LOCAL. * symtab.c (verify_symtab_base): Make sure we don't refer to a comdat-local symbol from outside its comdat. * cgraph.c (verify_cgraph_node): Likewise. * cgraphunit.c (mark_functions_to_output): Don't mark comdat-locals. * ipa.c (symtab_remove_unreachable_nodes): Likewise. (function_and_variable_visibility): Handle comdat-local fns. * ipa-cp.c (determine_versionability): Don't clone comdat-locals. * ipa-inline-analysis.c (compute_inline_parameters): Update calls_comdat_local. * ipa-inline-transform.c (inline_call): Likewise. (save_inline_function_body): Don't clear DECL_COMDAT_GROUP. * ipa-inline.c (can_inline_edge_p): Check calls_comdat_local. * lto-cgraph.c (input_overwrite_node): Read calls_comdat_local. (lto_output_node): Write it. * symtab.c (symtab_dissolve_same_comdat_group_list): Clear DECL_COMDAT_GROUP for comdat-locals. include/ * demangle.h (enum gnu_v3_ctor_kinds): Added literal gnu_v3_unified_ctor. (enum gnu_v3_ctor_kinds): Added literal gnu_v3_unified_dtor. libiberty/ * cp-demangle.c (cplus_demangle_fill_ctor,cplus_demangle_fill_dtor): Handle unified ctor/dtor. (d_ctor_dtor_name): Handle unified ctor/dtor. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206182 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 22 +++ gcc/c-family/ChangeLog | 7 + gcc/c-family/c-opts.c | 4 + gcc/c-family/c.opt | 4 + gcc/cgraph.c | 8 + gcc/cgraph.h | 21 +++ gcc/cgraphunit.c | 3 +- gcc/cif-code.def | 3 + gcc/cp/ChangeLog | 16 ++ gcc/cp/decl.c | 4 +- gcc/cp/mangle.c | 43 ++---- gcc/cp/method.c | 3 +- gcc/cp/optimize.c | 293 +++++++++++++++++++++++++++++++----- gcc/cp/semantics.c | 28 ++-- gcc/doc/invoke.texi | 12 ++ gcc/ipa-cp.c | 4 + gcc/ipa-inline-analysis.c | 5 + gcc/ipa-inline-transform.c | 13 +- gcc/ipa-inline.c | 7 +- gcc/ipa.c | 11 +- gcc/lto-cgraph.c | 2 + gcc/symtab.c | 23 +++ gcc/testsuite/g++.dg/ext/label13a.C | 25 +++ gcc/testsuite/g++.dg/opt/declone1.C | 21 +++ 24 files changed, 496 insertions(+), 86 deletions(-) create mode 100644 gcc/testsuite/g++.dg/ext/label13a.C create mode 100644 gcc/testsuite/g++.dg/opt/declone1.C (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b2f9f6e1619..ab6875e977f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,25 @@ +2013-12-23 Jason Merrill + + * cgraph.h (struct cgraph_node): Add calls_comdat_local. + (symtab_comdat_local_p, symtab_in_same_comdat_p): New. + * cif-code.def: Add USES_COMDAT_LOCAL. + * symtab.c (verify_symtab_base): Make sure we don't refer to a + comdat-local symbol from outside its comdat. + * cgraph.c (verify_cgraph_node): Likewise. + * cgraphunit.c (mark_functions_to_output): Don't mark comdat-locals. + * ipa.c (symtab_remove_unreachable_nodes): Likewise. + (function_and_variable_visibility): Handle comdat-local fns. + * ipa-cp.c (determine_versionability): Don't clone comdat-locals. + * ipa-inline-analysis.c (compute_inline_parameters): Update + calls_comdat_local. + * ipa-inline-transform.c (inline_call): Likewise. + (save_inline_function_body): Don't clear DECL_COMDAT_GROUP. + * ipa-inline.c (can_inline_edge_p): Check calls_comdat_local. + * lto-cgraph.c (input_overwrite_node): Read calls_comdat_local. + (lto_output_node): Write it. + * symtab.c (symtab_dissolve_same_comdat_group_list): Clear + DECL_COMDAT_GROUP for comdat-locals. + 2013-12-23 H.J. Lu * config/i386/i386.c (processor_target_table): Move Bonnell and diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index ffd8eff1324..1e0da89b347 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,10 @@ +2013-12-23 Stuart Hastings + Bill Maddox + Jason Merrill + + * c.opt: Add -fdeclone-ctor-dtor. + * c-opts.c (c_common_post_options): Default to on iff -Os. + 2013-12-18 Balaji V. Iyer * c-common.c (c_common_attribute_table): Added "cilk simd function" diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c index f368cab289f..3576f7d57c1 100644 --- a/gcc/c-family/c-opts.c +++ b/gcc/c-family/c-opts.c @@ -899,6 +899,10 @@ c_common_post_options (const char **pfilename) if (warn_implicit_function_declaration == -1) warn_implicit_function_declaration = flag_isoc99; + /* Declone C++ 'structors if -Os. */ + if (flag_declone_ctor_dtor == -1) + flag_declone_ctor_dtor = optimize_size; + if (cxx_dialect >= cxx11) { /* If we're allowing C++0x constructs, don't warn about C++98 diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index bfca1e0e6f6..d270f77ae6b 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -890,6 +890,10 @@ fdeduce-init-list C++ ObjC++ Var(flag_deduce_init_list) Init(0) -fdeduce-init-list enable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list +fdeclone-ctor-dtor +C++ ObjC++ Var(flag_declone_ctor_dtor) Init(-1) +Factor complex constructors and destructors to favor space over speed + fdefault-inline C++ ObjC++ Ignore Does nothing. Preserved for backward compatibility. diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 9501afa0c66..ccd150c8145 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -2666,10 +2666,18 @@ verify_cgraph_node (struct cgraph_node *node) error_found = true; } } + bool check_comdat = symtab_comdat_local_p (node); for (e = node->callers; e; e = e->next_caller) { if (verify_edge_count_and_frequency (e)) error_found = true; + if (check_comdat + && !symtab_in_same_comdat_p (e->caller, node)) + { + error ("comdat-local function called by %s outside its comdat", + identifier_to_locale (e->caller->name ())); + error_found = true; + } if (!e->inline_failed) { if (node->global.inlined_to diff --git a/gcc/cgraph.h b/gcc/cgraph.h index 0a88da3889e..69b97a7e703 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -428,6 +428,9 @@ public: unsigned tm_clone : 1; /* True if this decl is a dispatcher for function versions. */ unsigned dispatcher_function : 1; + /* True if this decl calls a COMDAT-local function. This is set up in + compute_inline_parameters and inline_call. */ + unsigned calls_comdat_local : 1; }; @@ -1490,4 +1493,22 @@ symtab_can_be_discarded (symtab_node *node) && node->resolution != LDPR_PREVAILING_DEF_IRONLY && node->resolution != LDPR_PREVAILING_DEF_IRONLY_EXP)); } + +/* Return true if NODE is local to a particular COMDAT group, and must not + be named from outside the COMDAT. This is used for C++ decloned + constructors. */ + +static inline bool +symtab_comdat_local_p (symtab_node *node) +{ + return (node->same_comdat_group && !TREE_PUBLIC (node->decl)); +} + +/* Return true if ONE and TWO are part of the same COMDAT group. */ + +static inline bool +symtab_in_same_comdat_p (symtab_node *one, symtab_node *two) +{ + return DECL_COMDAT_GROUP (one->decl) == DECL_COMDAT_GROUP (two->decl); +} #endif /* GCC_CGRAPH_H */ diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 28f51162bba..679c9eca818 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -1244,7 +1244,8 @@ mark_functions_to_output (void) for (next = cgraph (node->same_comdat_group); next != node; next = cgraph (next->same_comdat_group)) - if (!next->thunk.thunk_p && !next->alias) + if (!next->thunk.thunk_p && !next->alias + && !symtab_comdat_local_p (next)) next->process = 1; } } diff --git a/gcc/cif-code.def b/gcc/cif-code.def index e71123dc609..be4af6a0a5d 100644 --- a/gcc/cif-code.def +++ b/gcc/cif-code.def @@ -106,3 +106,6 @@ DEFCIFCODE(TARGET_OPTION_MISMATCH, N_("target specific option mismatch")) /* We can't inline because of mismatched optimization levels. */ DEFCIFCODE(OPTIMIZATION_MISMATCH, N_("optimization level attribute mismatch")) + +/* We can't inline because the callee refers to comdat-local symbols. */ +DEFCIFCODE(USES_COMDAT_LOCAL, N_("callee refers to comdat-local symbols")) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e4896d5c0fa..52400421d64 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,19 @@ +2013-12-23 Stuart Hastings + Bill Maddox + Jason Merrill + + PR c++/41090 + * optimize.c (can_alias_cdtor, populate_clone_array): Split out + from maybe_clone_body. + (maybe_thunk_body): New function. + (maybe_clone_body): Call it. + * mangle.c (write_mangled_name): Remove code to suppress + writing of mangled name for cloned constructor or destructor. + (write_special_name_constructor): Handle decloned constructor. + (write_special_name_destructor): Handle decloned destructor. + * method.c (trivial_fn_p): Handle decloning. + * semantics.c (expand_or_defer_fn_1): Clone after setting linkage. + 2013-12-23 Marek Polacek PR c++/59111 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 5d06b371865..a184dcc0c1b 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -10185,7 +10185,9 @@ grokdeclarator (const cp_declarator *declarator, /* The TYPE_DECL is "abstract" because there will be clones of this constructor/destructor, and there will be copies of this TYPE_DECL generated in those - clones. */ + clones. The decloning optimization (for space) may + revert this subsequently if it determines that + the clones should share a common implementation. */ DECL_ABSTRACT (decl) = 1; } else if (current_class_type diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index 8a24d6c8cfd..d99062dcb5e 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -689,13 +689,6 @@ write_mangled_name (const tree decl, bool top_level) mangled_name:; write_string ("_Z"); write_encoding (decl); - if (DECL_LANG_SPECIFIC (decl) - && (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (decl) - || DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl))) - /* We need a distinct mangled name for these entities, but - we should never actually output it. So, we append some - characters the assembler won't like. */ - write_string (" *INTERNAL* "); } } @@ -1653,25 +1646,21 @@ write_identifier (const char *identifier) ::= C2 # base object constructor ::= C3 # complete object allocating constructor - Currently, allocating constructors are never used. - - We also need to provide mangled names for the maybe-in-charge - constructor, so we treat it here too. mangle_decl_string will - append *INTERNAL* to that, to make sure we never emit it. */ + Currently, allocating constructors are never used. */ static void write_special_name_constructor (const tree ctor) { if (DECL_BASE_CONSTRUCTOR_P (ctor)) write_string ("C2"); + /* This is the old-style "[unified]" constructor. + In some cases, we may emit this function and call + it from the clones in order to share code and save space. */ + else if (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (ctor)) + write_string ("C4"); else { - gcc_assert (DECL_COMPLETE_CONSTRUCTOR_P (ctor) - /* Even though we don't ever emit a definition of - the old-style destructor, we still have to - consider entities (like static variables) nested - inside it. */ - || DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (ctor)); + gcc_assert (DECL_COMPLETE_CONSTRUCTOR_P (ctor)); write_string ("C1"); } } @@ -1681,11 +1670,7 @@ write_special_name_constructor (const tree ctor) ::= D0 # deleting (in-charge) destructor ::= D1 # complete object (in-charge) destructor - ::= D2 # base object (not-in-charge) destructor - - We also need to provide mangled names for the maybe-incharge - destructor, so we treat it here too. mangle_decl_string will - append *INTERNAL* to that, to make sure we never emit it. */ + ::= D2 # base object (not-in-charge) destructor */ static void write_special_name_destructor (const tree dtor) @@ -1694,14 +1679,14 @@ write_special_name_destructor (const tree dtor) write_string ("D0"); else if (DECL_BASE_DESTRUCTOR_P (dtor)) write_string ("D2"); + else if (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (dtor)) + /* This is the old-style "[unified]" destructor. + In some cases, we may emit this function and call + it from the clones in order to share code and save space. */ + write_string ("D4"); else { - gcc_assert (DECL_COMPLETE_DESTRUCTOR_P (dtor) - /* Even though we don't ever emit a definition of - the old-style destructor, we still have to - consider entities (like static variables) nested - inside it. */ - || DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (dtor)); + gcc_assert (DECL_COMPLETE_DESTRUCTOR_P (dtor)); write_string ("D1"); } } diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 740536573cb..e79a9221a99 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -477,7 +477,8 @@ trivial_fn_p (tree fn) return false; /* If fn is a clone, get the primary variant. */ - fn = DECL_ORIGIN (fn); + if (tree prim = DECL_CLONED_FUNCTION (fn)) + fn = prim; return type_has_trivial_fn (DECL_CONTEXT (fn), special_function_p (fn)); } diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c index f1b09bfd55e..40494f27a55 100644 --- a/gcc/cp/optimize.c +++ b/gcc/cp/optimize.c @@ -193,30 +193,40 @@ cdtor_comdat_group (tree complete, tree base) return get_identifier (grp_name); } -/* FN is a function that has a complete body. Clone the body as - necessary. Returns nonzero if there's no longer any need to - process the main body. */ +/* Returns true iff we can make the base and complete [cd]tor aliases of + the same symbol rather than separate functions. */ -bool -maybe_clone_body (tree fn) +static bool +can_alias_cdtor (tree fn) { - tree comdat_group = NULL_TREE; - tree clone; - tree fns[3]; - bool first = true; - bool in_charge_parm_used; - int idx; - bool need_alias = false; +#ifndef ASM_OUTPUT_DEF + /* If aliases aren't supported by the assembler, fail. */ + return false; +#endif + /* We can't use an alias if there are virtual bases. */ + if (CLASSTYPE_VBASECLASSES (DECL_CONTEXT (fn))) + return false; + /* ??? Why not use aliases with -frepo? */ + if (flag_use_repository) + return false; + gcc_assert (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (fn) + || DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (fn)); + /* Don't use aliases for weak/linkonce definitions unless we can put both + symbols in the same COMDAT group. */ + return (DECL_INTERFACE_KNOWN (fn) + && (SUPPORTS_ONE_ONLY || !DECL_WEAK (fn)) + && (!DECL_ONE_ONLY (fn) + || (HAVE_COMDAT_GROUP && DECL_WEAK (fn)))); +} - /* We only clone constructors and destructors. */ - if (!DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (fn) - && !DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (fn)) - return 0; +/* FN is a [cd]tor, fns is a pointer to an array of length 3. Fill fns + with pointers to the base, complete, and deleting variants. */ - /* Emit the DWARF1 abstract instance. */ - (*debug_hooks->deferred_inline_function) (fn); +static void +populate_clone_array (tree fn, tree *fns) +{ + tree clone; - in_charge_parm_used = CLASSTYPE_VBASECLASSES (DECL_CONTEXT (fn)) != NULL; fns[0] = NULL_TREE; fns[1] = NULL_TREE; fns[2] = NULL_TREE; @@ -234,6 +244,206 @@ maybe_clone_body (tree fn) fns[2] = clone; else gcc_unreachable (); +} + +/* FN is a constructor or destructor, and there are FUNCTION_DECLs + cloned from it nearby. Instead of cloning this body, leave it + alone and create tiny one-call bodies for the cloned + FUNCTION_DECLs. These clones are sibcall candidates, and their + resulting code will be very thunk-esque. */ + +static bool +maybe_thunk_body (tree fn, bool force) +{ + tree bind, block, call, clone, clone_result, fn_parm, fn_parm_typelist; + tree last_arg, modify, *args; + int parmno, vtt_parmno, max_parms; + tree fns[3]; + + if (!force && !flag_declone_ctor_dtor) + return 0; + + /* If function accepts variable arguments, give up. */ + last_arg = tree_last (TYPE_ARG_TYPES (TREE_TYPE (fn))); + if (last_arg != void_list_node) + return 0; + + /* If we got this far, we've decided to turn the clones into thunks. */ + + /* We're going to generate code for fn, so it is no longer "abstract." + Also make the unified ctor/dtor private to either the translation unit + (for non-vague linkage ctors) or the COMDAT group (otherwise). */ + + populate_clone_array (fn, fns); + DECL_ABSTRACT (fn) = false; + if (!DECL_WEAK (fn)) + { + TREE_PUBLIC (fn) = false; + DECL_EXTERNAL (fn) = false; + DECL_INTERFACE_KNOWN (fn) = true; + } + else if (HAVE_COMDAT_GROUP) + { + tree comdat_group = cdtor_comdat_group (fns[1], fns[0]); + DECL_COMDAT_GROUP (fns[0]) = comdat_group; + symtab_add_to_same_comdat_group (cgraph_get_create_node (fns[1]), + cgraph_get_create_node (fns[0])); + symtab_add_to_same_comdat_group (symtab_get_node (fn), + symtab_get_node (fns[0])); + if (fns[2]) + /* If *[CD][12]* dtors go into the *[CD]5* comdat group and dtor is + virtual, it goes into the same comdat group as well. */ + symtab_add_to_same_comdat_group (cgraph_get_create_node (fns[2]), + symtab_get_node (fns[0])); + TREE_PUBLIC (fn) = false; + DECL_EXTERNAL (fn) = false; + DECL_INTERFACE_KNOWN (fn) = true; + /* function_and_variable_visibility doesn't want !PUBLIC decls to + have these flags set. */ + DECL_WEAK (fn) = false; + DECL_COMDAT (fn) = false; + } + + /* Find the vtt_parm, if present. */ + for (vtt_parmno = -1, parmno = 0, fn_parm = DECL_ARGUMENTS (fn); + fn_parm; + ++parmno, fn_parm = TREE_CHAIN (fn_parm)) + { + if (DECL_ARTIFICIAL (fn_parm) + && DECL_NAME (fn_parm) == vtt_parm_identifier) + { + /* Compensate for removed in_charge parameter. */ + vtt_parmno = parmno; + break; + } + } + + /* Allocate an argument buffer for build_cxx_call(). + Make sure it is large enough for any of the clones. */ + max_parms = 0; + FOR_EACH_CLONE (clone, fn) + { + int length = list_length (DECL_ARGUMENTS (fn)); + if (length > max_parms) + max_parms = length; + } + args = (tree *) alloca (max_parms * sizeof (tree)); + + /* We know that any clones immediately follow FN in TYPE_METHODS. */ + FOR_EACH_CLONE (clone, fn) + { + tree clone_parm; + + /* If we've already generated a body for this clone, avoid + duplicating it. (Is it possible for a clone-list to grow after we + first see it?) */ + if (DECL_SAVED_TREE (clone) || TREE_ASM_WRITTEN (clone)) + continue; + + /* Start processing the function. */ + start_preparsed_function (clone, NULL_TREE, SF_PRE_PARSED); + + if (clone == fns[2]) + { + for (clone_parm = DECL_ARGUMENTS (clone); clone_parm; + clone_parm = TREE_CHAIN (clone_parm)) + DECL_ABSTRACT_ORIGIN (clone_parm) = NULL_TREE; + /* Build the delete destructor by calling complete destructor and + delete function. */ + build_delete_destructor_body (clone, fns[1]); + } + else + { + /* Walk parameter lists together, creating parameter list for + call to original function. */ + for (parmno = 0, + fn_parm = DECL_ARGUMENTS (fn), + fn_parm_typelist = TYPE_ARG_TYPES (TREE_TYPE (fn)), + clone_parm = DECL_ARGUMENTS (clone); + fn_parm; + ++parmno, + fn_parm = TREE_CHAIN (fn_parm)) + { + if (parmno == vtt_parmno && ! DECL_HAS_VTT_PARM_P (clone)) + { + gcc_assert (fn_parm_typelist); + /* Clobber argument with formal parameter type. */ + args[parmno] + = convert (TREE_VALUE (fn_parm_typelist), + null_pointer_node); + } + else if (parmno == 1 && DECL_HAS_IN_CHARGE_PARM_P (fn)) + { + tree in_charge + = copy_node (in_charge_arg_for_name (DECL_NAME (clone))); + args[parmno] = in_charge; + } + /* Map other parameters to their equivalents in the cloned + function. */ + else + { + gcc_assert (clone_parm); + DECL_ABSTRACT_ORIGIN (clone_parm) = NULL; + args[parmno] = clone_parm; + clone_parm = TREE_CHAIN (clone_parm); + } + if (fn_parm_typelist) + fn_parm_typelist = TREE_CHAIN (fn_parm_typelist); + } + + /* We built this list backwards; fix now. */ + mark_used (fn); + call = build_cxx_call (fn, parmno, args, tf_warning_or_error); + /* Arguments passed to the thunk by invisible reference should + be transmitted to the callee unchanged. Do not create a + temporary and invoke the copy constructor. The thunking + transformation must not introduce any constructor calls. */ + CALL_FROM_THUNK_P (call) = 1; + block = make_node (BLOCK); + if (targetm.cxx.cdtor_returns_this ()) + { + clone_result = DECL_RESULT (clone); + modify = build2 (MODIFY_EXPR, TREE_TYPE (clone_result), + clone_result, call); + add_stmt (modify); + BLOCK_VARS (block) = clone_result; + } + else + { + add_stmt (call); + } + bind = c_build_bind_expr (DECL_SOURCE_LOCATION (clone), + block, cur_stmt_list); + DECL_SAVED_TREE (clone) = push_stmt_list (); + add_stmt (bind); + } + + DECL_ABSTRACT_ORIGIN (clone) = NULL; + expand_or_defer_fn (finish_function (0)); + } + return 1; +} + +/* FN is a function that has a complete body. Clone the body as + necessary. Returns nonzero if there's no longer any need to + process the main body. */ + +bool +maybe_clone_body (tree fn) +{ + tree comdat_group = NULL_TREE; + tree clone; + tree fns[3]; + bool first = true; + int idx; + bool need_alias = false; + + /* We only clone constructors and destructors. */ + if (!DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (fn) + && !DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (fn)) + return 0; + + populate_clone_array (fn, fns); /* Remember if we can't have multiple clones for some reason. We need to check this before we remap local static initializers in clone_body. */ @@ -247,9 +457,6 @@ maybe_clone_body (tree fn) { tree parm; tree clone_parm; - int parmno; - bool alias = false; - struct pointer_map_t *decl_map; clone = fns[idx]; if (!clone) @@ -296,26 +503,44 @@ maybe_clone_body (tree fn) parm = DECL_CHAIN (parm), clone_parm = DECL_CHAIN (clone_parm)) /* Update this parameter. */ update_cloned_parm (parm, clone_parm, first); + } + + bool can_alias = can_alias_cdtor (fn); + + /* If we decide to turn clones into thunks, they will branch to fn. + Must have original function available to call. */ + if (!can_alias && maybe_thunk_body (fn, need_alias)) + { + pop_from_top_level (); + /* We still need to emit the original function. */ + return 0; + } + + /* Emit the DWARF1 abstract instance. */ + (*debug_hooks->deferred_inline_function) (fn); + + /* We know that any clones immediately follow FN in the TYPE_METHODS list. */ + for (idx = 0; idx < 3; idx++) + { + tree parm; + tree clone_parm; + int parmno; + struct pointer_map_t *decl_map; + bool alias = false; + + clone = fns[idx]; + if (!clone) + continue; /* Start processing the function. */ start_preparsed_function (clone, NULL_TREE, SF_PRE_PARSED); /* Tell cgraph if both ctors or both dtors are known to have the same body. */ - if (!in_charge_parm_used + if (can_alias && fns[0] && idx == 1 - && !flag_use_repository - && DECL_INTERFACE_KNOWN (fns[0]) - && (SUPPORTS_ONE_ONLY || !DECL_WEAK (fns[0])) - && (!DECL_ONE_ONLY (fns[0]) - || (HAVE_COMDAT_GROUP - && DECL_WEAK (fns[0]))) - && !flag_syntax_only - /* Set linkage flags appropriately before - cgraph_create_function_alias looks at them. */ - && expand_or_defer_fn_1 (clone) - && cgraph_same_body_alias (cgraph_get_node (fns[0]), + && cgraph_same_body_alias (cgraph_get_create_node (fns[0]), clone, fns[0])) { alias = true; diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index c08d53f4898..1a5948478b4 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -3901,20 +3901,6 @@ expand_or_defer_fn_1 (tree fn) gcc_assert (DECL_SAVED_TREE (fn)); - /* If this is a constructor or destructor body, we have to clone - it. */ - if (maybe_clone_body (fn)) - { - /* We don't want to process FN again, so pretend we've written - it out, even though we haven't. */ - TREE_ASM_WRITTEN (fn) = 1; - /* If this is an instantiation of a constexpr function, keep - DECL_SAVED_TREE for explain_invalid_constexpr_fn. */ - if (!is_instantiation_of_constexpr (fn)) - DECL_SAVED_TREE (fn) = NULL_TREE; - return false; - } - /* We make a decision about linkage for these functions at the end of the compilation. Until that point, we do not want the back end to output them -- but we do want it to see the bodies of @@ -3962,6 +3948,20 @@ expand_or_defer_fn_1 (tree fn) } } + /* If this is a constructor or destructor body, we have to clone + it. */ + if (maybe_clone_body (fn)) + { + /* We don't want to process FN again, so pretend we've written + it out, even though we haven't. */ + TREE_ASM_WRITTEN (fn) = 1; + /* If this is an instantiation of a constexpr function, keep + DECL_SAVED_TREE for explain_invalid_constexpr_fn. */ + if (!is_instantiation_of_constexpr (fn)) + DECL_SAVED_TREE (fn) = NULL_TREE; + return false; + } + /* There's no reason to do any of the work here if we're only doing semantic analysis; this code just generates RTL. */ if (flag_syntax_only) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index a10b6f56745..60675c585e0 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -7339,6 +7339,18 @@ branch-less equivalents. Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}. +@item -fdeclone-ctor-dtor +@opindex fdeclone-ctor-dtor +The C++ ABI requires multiple entry points for constructors and +destructors: one for a base subobject, one for a complete object, and +one for a virtual destructor that calls operator delete afterwards. +For a hierarchy with virtual bases, the base and complete variants are +clones, which means two copies of the function. With this option, the +base and complete variants are changed to be thunks that call a common +implementation. + +Enabled by @option{-Os}. + @item -fdelete-null-pointer-checks @opindex fdelete-null-pointer-checks Assume that programs cannot safely dereference null pointers, and that diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index 305ad2d72db..b484d053f16 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -437,6 +437,10 @@ determine_versionability (struct cgraph_node *node) coexist, but that may not be worth the effort. */ reason = "function has SIMD clones"; } + /* Don't clone decls local to a comdat group; it breaks and for C++ + decloned constructors, inlining is always better anyway. */ + else if (symtab_comdat_local_p (node)) + reason = "comdat-local function"; if (reason && dump_file && !node->alias && !node->thunk.thunk_p) fprintf (dump_file, "Function %s/%i is not versionable, reason: %s.\n", diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c index 9e9087f30db..21e52a193ff 100644 --- a/gcc/ipa-inline-analysis.c +++ b/gcc/ipa-inline-analysis.c @@ -2796,6 +2796,11 @@ compute_inline_parameters (struct cgraph_node *node, bool early) } estimate_function_body_sizes (node, early); + for (e = node->callees; e; e = e->next_callee) + if (symtab_comdat_local_p (e->callee)) + break; + node->calls_comdat_local = (e != NULL); + /* Inlining characteristics are maintained by the cgraph_mark_inline. */ info->time = info->self_time; info->size = info->self_size; diff --git a/gcc/ipa-inline-transform.c b/gcc/ipa-inline-transform.c index 7fb4ab97fa4..71d7800cea1 100644 --- a/gcc/ipa-inline-transform.c +++ b/gcc/ipa-inline-transform.c @@ -272,6 +272,18 @@ inline_call (struct cgraph_edge *e, bool update_original, inline_update_overall_summary (to); new_size = inline_summary (to)->size; + if (callee->calls_comdat_local) + to->calls_comdat_local = true; + else if (to->calls_comdat_local && symtab_comdat_local_p (callee)) + { + struct cgraph_edge *se = to->callees; + for (; se; se = se->next_callee) + if (se->inline_failed && symtab_comdat_local_p (se->callee)) + break; + if (se == NULL) + to->calls_comdat_local = false; + } + #ifdef ENABLE_CHECKING /* Verify that estimated growth match real growth. Allow off-by-one error due to INLINE_SIZE_SCALE roudoff errors. */ @@ -369,7 +381,6 @@ save_inline_function_body (struct cgraph_node *node) /* The function will be short lived and removed after we inline all the clones, but make it internal so we won't confuse ourself. */ DECL_EXTERNAL (first_clone->decl) = 0; - DECL_COMDAT_GROUP (first_clone->decl) = NULL_TREE; TREE_PUBLIC (first_clone->decl) = 0; DECL_COMDAT (first_clone->decl) = 0; first_clone->ipa_transforms_to_apply.release (); diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 9fd5d4183d0..f6a26a882e6 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -241,7 +241,7 @@ report_inline_failed_reason (struct cgraph_edge *e) if REPORT is true, output reason to the dump file. - if DISREGARD_LIMITES is true, ignore size limits.*/ + if DISREGARD_LIMITS is true, ignore size limits.*/ static bool can_inline_edge_p (struct cgraph_edge *e, bool report, @@ -271,6 +271,11 @@ can_inline_edge_p (struct cgraph_edge *e, bool report, e->inline_failed = CIF_BODY_NOT_AVAILABLE; inlinable = false; } + else if (callee->calls_comdat_local) + { + e->inline_failed = CIF_USES_COMDAT_LOCAL; + inlinable = false; + } else if (!inline_summary (callee)->inlinable || (caller_cfun && fn_contains_cilk_spawn_p (caller_cfun))) { diff --git a/gcc/ipa.c b/gcc/ipa.c index 1ec4b5fc3b7..3c19288f26c 100644 --- a/gcc/ipa.c +++ b/gcc/ipa.c @@ -362,14 +362,17 @@ symtab_remove_unreachable_nodes (bool before_inlining_p, FILE *file) enqueue_node (origin_node, &first, reachable); } /* If any symbol in a comdat group is reachable, force - all other in the same comdat group to be also reachable. */ + all externally visible symbols in the same comdat + group to be reachable as well. Comdat-local symbols + can be discarded if all uses were inlined. */ if (node->same_comdat_group) { symtab_node *next; for (next = node->same_comdat_group; next != node; next = next->same_comdat_group) - if (!pointer_set_insert (reachable, next)) + if (!symtab_comdat_local_p (next) + && !pointer_set_insert (reachable, next)) enqueue_node (next, &first, reachable); } /* Mark references as reachable. */ @@ -969,14 +972,14 @@ function_and_variable_visibility (bool whole_program) node->unique_name = ((node->resolution == LDPR_PREVAILING_DEF_IRONLY || node->resolution == LDPR_PREVAILING_DEF_IRONLY_EXP) && TREE_PUBLIC (node->decl)); - symtab_make_decl_local (node->decl); node->resolution = LDPR_PREVAILING_DEF_IRONLY; - if (node->same_comdat_group) + if (node->same_comdat_group && TREE_PUBLIC (node->decl)) /* cgraph_externally_visible_p has already checked all other nodes in the group and they will all be made local. We need to dissolve the group at once so that the predicate does not segfault though. */ symtab_dissolve_same_comdat_group_list (node); + symtab_make_decl_local (node->decl); } if (node->thunk.thunk_p diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c index 44cfa286fad..7834ed04160 100644 --- a/gcc/lto-cgraph.c +++ b/gcc/lto-cgraph.c @@ -518,6 +518,7 @@ lto_output_node (struct lto_simple_output_block *ob, struct cgraph_node *node, bp_pack_value (&bp, node->only_called_at_startup, 1); bp_pack_value (&bp, node->only_called_at_exit, 1); bp_pack_value (&bp, node->tm_clone, 1); + bp_pack_value (&bp, node->calls_comdat_local, 1); bp_pack_value (&bp, node->thunk.thunk_p && !boundary_p, 1); bp_pack_enum (&bp, ld_plugin_symbol_resolution, LDPR_NUM_KNOWN, node->resolution); @@ -993,6 +994,7 @@ input_overwrite_node (struct lto_file_decl_data *file_data, node->only_called_at_startup = bp_unpack_value (bp, 1); node->only_called_at_exit = bp_unpack_value (bp, 1); node->tm_clone = bp_unpack_value (bp, 1); + node->calls_comdat_local = bp_unpack_value (bp, 1); node->thunk.thunk_p = bp_unpack_value (bp, 1); node->resolution = bp_unpack_enum (bp, ld_plugin_symbol_resolution, LDPR_NUM_KNOWN); diff --git a/gcc/symtab.c b/gcc/symtab.c index dc700e7c735..8d36cae7b27 100644 --- a/gcc/symtab.c +++ b/gcc/symtab.c @@ -538,6 +538,10 @@ symtab_dissolve_same_comdat_group_list (symtab_node *node) { next = n->same_comdat_group; n->same_comdat_group = NULL; + /* Clear DECL_COMDAT_GROUP for comdat locals, since + make_decl_local doesn't. */ + if (!TREE_PUBLIC (n->decl)) + DECL_COMDAT_GROUP (n->decl) = NULL_TREE; n = next; } while (n != node); @@ -844,6 +848,21 @@ verify_symtab_base (symtab_node *node) n = n->same_comdat_group; } while (n != node); + if (symtab_comdat_local_p (node)) + { + struct ipa_ref_list *refs = &node->ref_list; + struct ipa_ref *ref; + for (int i = 0; ipa_ref_list_referring_iterate (refs, i, ref); ++i) + { + if (!symtab_in_same_comdat_p (ref->referring, node)) + { + error ("comdat-local symbol referred to by %s outside its " + "comdat", + identifier_to_locale (ref->referring->name())); + error_found = true; + } + } + } } return error_found; } @@ -911,6 +930,10 @@ symtab_make_decl_local (tree decl) { rtx rtl, symbol; + /* Avoid clearing DECL_COMDAT_GROUP on comdat-local decls. */ + if (TREE_PUBLIC (decl) == 0) + return; + if (TREE_CODE (decl) == VAR_DECL) DECL_COMMON (decl) = 0; else gcc_assert (TREE_CODE (decl) == FUNCTION_DECL); diff --git a/gcc/testsuite/g++.dg/ext/label13a.C b/gcc/testsuite/g++.dg/ext/label13a.C new file mode 100644 index 00000000000..3be8e311487 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/label13a.C @@ -0,0 +1,25 @@ +// PR c++/41090 +// { dg-do run } +// { dg-options "-save-temps" } +// { dg-final { scan-assembler "_ZN1CC4Ev" } } +// { dg-final cleanup-saved-temps } + +int i; +struct A { A() {} }; +struct C: virtual A +{ + C(); +}; + +C::C() +{ + static void *labelref = &&label; + goto *labelref; + label: i = 1; +} + +int main() +{ + C c; + return (i != 1); +} diff --git a/gcc/testsuite/g++.dg/opt/declone1.C b/gcc/testsuite/g++.dg/opt/declone1.C new file mode 100644 index 00000000000..1f935b7e399 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/declone1.C @@ -0,0 +1,21 @@ +// { dg-options "-fdeclone-ctor-dtor -O3" } + +struct V {}; + +template +struct A: virtual V { + static A* p; + A(); +}; + +template +A::A() +{ + if (!p) + p = new A(); +} + +int main() +{ + A a; +} -- cgit v1.2.1 From 12a7d3be33b5329cda46a11fbf7f6a3446b3e50c Mon Sep 17 00:00:00 2001 From: jason Date: Mon, 23 Dec 2013 17:51:03 +0000 Subject: * gdbinit.in (input_line, input_filename): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206183 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 2 ++ gcc/gdbinit.in | 2 ++ 2 files changed, 4 insertions(+) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ab6875e977f..1f170a6d56f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,7 @@ 2013-12-23 Jason Merrill + * gdbinit.in (input_line, input_filename): Define. + * cgraph.h (struct cgraph_node): Add calls_comdat_local. (symtab_comdat_local_p, symtab_in_same_comdat_p): New. * cif-code.def: Add USES_COMDAT_LOCAL. diff --git a/gcc/gdbinit.in b/gcc/gdbinit.in index aa0bf9beda6..79361a5bfd1 100644 --- a/gcc/gdbinit.in +++ b/gcc/gdbinit.in @@ -195,6 +195,8 @@ macro define __FILE__ "gdb" macro define __LINE__ 1 macro define __FUNCTION__ "gdb" macro define __null 0 +macro define input_line expand_location(input_location).line +macro define input_filename expand_location(input_location).file # Gracefully handle aborts in functions used from gdb. set unwindonsignal on -- cgit v1.2.1 From d2cbed01ceeb2357442d44c98bb9d2e68a545d8a Mon Sep 17 00:00:00 2001 From: hp Date: Mon, 23 Dec 2013 22:33:52 +0000 Subject: PR middle-end/59584 * config/cris/predicates.md (cris_nonsp_register_operand): New define_predicate. * config/cris/cris.md: Replace register_operand with cris_nonsp_register_operand for destinations in all define_splits where a register is set more than once. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206187 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/config/cris/cris.md | 27 ++++++++++++++------------- gcc/config/cris/predicates.md | 4 ++++ 3 files changed, 27 insertions(+), 13 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1f170a6d56f..00b2c2192db 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2013-12-23 Hans-Peter Nilsson + + PR middle-end/59584 + * config/cris/predicates.md (cris_nonsp_register_operand): + New define_predicate. + * config/cris/cris.md: Replace register_operand with + cris_nonsp_register_operand for destinations in all + define_splits where a register is set more than once. + 2013-12-23 Jason Merrill * gdbinit.in (input_line, input_filename): Define. diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md index 8a7f0bfdd70..b3e9f0494b8 100644 --- a/gcc/config/cris/cris.md +++ b/gcc/config/cris/cris.md @@ -758,7 +758,7 @@ (match_operand:SI 1 "const_int_operand" "")) (match_operand:SI 2 "register_operand" ""))]) (match_operand 3 "register_operand" "")) - (set (match_operand:SI 4 "register_operand" "") + (set (match_operand:SI 4 "cris_nonsp_register_operand" "") (plus:SI (mult:SI (match_dup 0) (match_dup 1)) (match_dup 2)))])] @@ -859,7 +859,7 @@ (match_operand:SI 0 "cris_bdap_operand" "") (match_operand:SI 1 "cris_bdap_operand" ""))]) (match_operand 2 "register_operand" "")) - (set (match_operand:SI 3 "register_operand" "") + (set (match_operand:SI 3 "cris_nonsp_register_operand" "") (plus:SI (match_dup 0) (match_dup 1)))])] "reload_completed && reg_overlap_mentioned_p (operands[3], operands[2])" [(set (match_dup 4) (match_dup 2)) @@ -3960,7 +3960,7 @@ ;; up. (define_split - [(set (match_operand 0 "register_operand" "") + [(set (match_operand 0 "cris_nonsp_register_operand" "") (match_operator 4 "cris_operand_extend_operator" [(match_operand 1 "register_operand" "") @@ -3990,7 +3990,7 @@ ;; Call this op-extend-split-rx=rz (define_split - [(set (match_operand 0 "register_operand" "") + [(set (match_operand 0 "cris_nonsp_register_operand" "") (match_operator 4 "cris_plus_or_bound_operator" [(match_operand 1 "register_operand" "") @@ -4018,7 +4018,7 @@ ;; Call this op-extend-split-swapped (define_split - [(set (match_operand 0 "register_operand" "") + [(set (match_operand 0 "cris_nonsp_register_operand" "") (match_operator 4 "cris_plus_or_bound_operator" [(match_operator @@ -4044,7 +4044,7 @@ ;; bound. Call this op-extend-split-swapped-rx=rz. (define_split - [(set (match_operand 0 "register_operand" "") + [(set (match_operand 0 "cris_nonsp_register_operand" "") (match_operator 4 "cris_plus_or_bound_operator" [(match_operator @@ -4075,7 +4075,7 @@ ;; Call this op-extend. (define_split - [(set (match_operand 0 "register_operand" "") + [(set (match_operand 0 "cris_nonsp_register_operand" "") (match_operator 3 "cris_orthogonal_operator" [(match_operand 1 "register_operand" "") @@ -4099,7 +4099,7 @@ ;; Call this op-split-rx=rz (define_split - [(set (match_operand 0 "register_operand" "") + [(set (match_operand 0 "cris_nonsp_register_operand" "") (match_operator 3 "cris_commutative_orth_op" [(match_operand 2 "memory_operand" "") @@ -4123,7 +4123,7 @@ ;; Call this op-split-swapped. (define_split - [(set (match_operand 0 "register_operand" "") + [(set (match_operand 0 "cris_nonsp_register_operand" "") (match_operator 3 "cris_commutative_orth_op" [(match_operand 1 "register_operand" "") @@ -4146,7 +4146,7 @@ ;; Call this op-split-swapped-rx=rz. (define_split - [(set (match_operand 0 "register_operand" "") + [(set (match_operand 0 "cris_nonsp_register_operand" "") (match_operator 3 "cris_orthogonal_operator" [(match_operand 2 "memory_operand" "") @@ -4555,10 +4555,11 @@ ;; We're not allowed to generate copies of registers with different mode ;; until after reload; copying pseudos upsets reload. CVS as of ;; 2001-08-24, unwind-dw2-fde.c, _Unwind_Find_FDE ICE in -;; cselib_invalidate_regno. +;; cselib_invalidate_regno. Also, don't do this for the stack-pointer, +;; as we don't want it set temporarily to an invalid value. (define_split ; indir_to_reg_split - [(set (match_operand 0 "register_operand" "") + [(set (match_operand 0 "cris_nonsp_register_operand" "") (match_operand 1 "indirect_operand" ""))] "reload_completed && REG_P (operands[0]) @@ -4574,7 +4575,7 @@ ;; As the above, but MOVS and MOVU. (define_split - [(set (match_operand 0 "register_operand" "") + [(set (match_operand 0 "cris_nonsp_register_operand" "") (match_operator 4 "cris_extend_operator" [(match_operand 1 "indirect_operand" "")]))] diff --git a/gcc/config/cris/predicates.md b/gcc/config/cris/predicates.md index 040482ba9d1..2acd02f8ad9 100644 --- a/gcc/config/cris/predicates.md +++ b/gcc/config/cris/predicates.md @@ -76,6 +76,10 @@ (match_test "cris_simple_address_operand (XEXP (op, 0), Pmode)")))) +(define_predicate "cris_nonsp_register_operand" + (and (match_operand 0 "register_operand") + (match_test "op != stack_pointer_rtx"))) + ;; The caller needs to use :SI. (define_predicate "cris_bdap_sign_extend_operand" ; Disabled until -- cgit v1.2.1 From e444274665d31dc74823efc81646d96354558922 Mon Sep 17 00:00:00 2001 From: hp Date: Mon, 23 Dec 2013 23:12:09 +0000 Subject: PR target/59203 * config/cris/cris.c (cris_pic_symbol_type_of): Fix typo, checking t1 twice instead of t1 and t2 respectively. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206188 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/config/cris/cris.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 00b2c2192db..cc8c0938eec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2013-12-23 Hans-Peter Nilsson + PR target/59203 + * config/cris/cris.c (cris_pic_symbol_type_of): Fix typo, + checking t1 twice instead of t1 and t2 respectively. + PR middle-end/59584 * config/cris/predicates.md (cris_nonsp_register_operand): New define_predicate. diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c index 235b6c652cf..5e24c3fef4e 100644 --- a/gcc/config/cris/cris.c +++ b/gcc/config/cris/cris.c @@ -2493,7 +2493,7 @@ cris_pic_symbol_type_of (const_rtx x) gcc_assert (t1 == cris_no_symbol || t2 == cris_no_symbol); - if (t1 == cris_got_symbol || t1 == cris_got_symbol) + if (t1 == cris_got_symbol || t2 == cris_got_symbol) return cris_got_symbol_needing_fixup; return t1 != cris_no_symbol ? t1 : t2; -- cgit v1.2.1 From 1f97fc03a0a5c55c66f4612c44623db66f2d02cc Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 24 Dec 2013 00:16:59 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206191 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 83af7e2ffc7..0b73326dea1 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131223 +20131224 -- cgit v1.2.1 From 081bb582712ed8926563a4828032c7ffc93bb04b Mon Sep 17 00:00:00 2001 From: jason Date: Tue, 24 Dec 2013 04:22:15 +0000 Subject: PR c++/59349 * parser.c (cp_parser_lambda_introducer): Handle empty init. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206192 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/parser.c | 5 +++++ gcc/testsuite/g++.dg/cpp1y/lambda-init7.C | 6 ++++++ 3 files changed, 16 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-init7.C (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 52400421d64..c921f203ac9 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2013-12-23 Jason Merrill + + PR c++/59349 + * parser.c (cp_parser_lambda_introducer): Handle empty init. + 2013-12-23 Stuart Hastings Bill Maddox Jason Merrill diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 2a2cbf0f061..4ef0f05c9be 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -8898,6 +8898,11 @@ cp_parser_lambda_introducer (cp_parser* parser, tree lambda_expr) capture_init_expr = cp_parser_initializer (parser, &direct, &non_constant); explicit_init_p = true; + if (capture_init_expr == NULL_TREE) + { + error ("empty initializer for lambda init-capture"); + capture_init_expr = error_mark_node; + } } else { diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init7.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init7.C new file mode 100644 index 00000000000..ad152cf535b --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init7.C @@ -0,0 +1,6 @@ +// PR c++/59349 +// { dg-options "-std=c++1y" } + +int foo () { + [bar()]{}; // { dg-error "empty initializer" } +} -- cgit v1.2.1 From b46a48d66a0830552d009ad9dc21e2a8e7b1fc70 Mon Sep 17 00:00:00 2001 From: jason Date: Tue, 24 Dec 2013 04:22:23 +0000 Subject: PR c++/59271 * lambda.c (build_capture_proxy): Use build_cplus_array_type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206193 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/lambda.c | 4 ++-- gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C | 24 ++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c921f203ac9..242342b5453 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2013-12-23 Jason Merrill + PR c++/59271 + * lambda.c (build_capture_proxy): Use build_cplus_array_type. + PR c++/59349 * parser.c (cp_parser_lambda_introducer): Handle empty init. diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c index 24aa2c55cc0..bd8df1d94a9 100644 --- a/gcc/cp/lambda.c +++ b/gcc/cp/lambda.c @@ -377,8 +377,8 @@ build_capture_proxy (tree member) tree ptr = build_simple_component_ref (object, field); field = next_initializable_field (DECL_CHAIN (field)); tree max = build_simple_component_ref (object, field); - type = build_array_type (TREE_TYPE (TREE_TYPE (ptr)), - build_index_type (max)); + type = build_cplus_array_type (TREE_TYPE (TREE_TYPE (ptr)), + build_index_type (max)); type = build_reference_type (type); REFERENCE_VLA_OK (type) = true; object = convert (type, ptr); diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C new file mode 100644 index 00000000000..556722ca62d --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-vla1.C @@ -0,0 +1,24 @@ +// PR c++/59271 +// { dg-options -std=c++1y } + +extern "C" int printf (const char *, ...); + +void f(int n) +{ + int a[n]; + + for (auto& i : a) + { + i = &i - a; + } + + [&a] (auto m) + { + for (auto i : a) + { + printf ("%d", i); + } + + return m; + }; +} -- cgit v1.2.1 From 7cb1e49b3b3955f1970b0e1f1f32967b0d1def61 Mon Sep 17 00:00:00 2001 From: yufeng Date: Tue, 24 Dec 2013 15:34:30 +0000 Subject: gcc/ 2013-12-24 Renlin Li * config/arm/arm-protos.h (vfp_const_double_for_bits): Declare. * config/arm/constraints.md (Dp): Define new constraint. * config/arm/predicates.md (const_double_vcvt_power_of_two): Define new predicate. * config/arm/arm.c (arm_print_operand): Add print for new fucntion. (vfp3_const_double_for_bits): New function. * config/arm/vfp.md (combine_vcvtf2i): Define new instruction. gcc/testsuite/ 2013-12-24 Renlin Li * gcc.target/arm/fixed_float_conversion.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206195 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 +++++++++ gcc/config/arm/arm-protos.h | 2 ++ gcc/config/arm/arm.c | 26 +++++++++++++++++++++- gcc/config/arm/constraints.md | 10 +++++++-- gcc/config/arm/predicates.md | 9 ++++++-- gcc/config/arm/vfp.md | 14 ++++++++++++ gcc/testsuite/ChangeLog | 4 ++++ .../gcc.target/arm/fixed_float_conversion.c | 19 ++++++++++++++++ 8 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.target/arm/fixed_float_conversion.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cc8c0938eec..3e9214a5f32 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2013-12-24 Renlin Li + + * config/arm/arm-protos.h (vfp_const_double_for_bits): Declare. + * config/arm/constraints.md (Dp): Define new constraint. + * config/arm/predicates.md (const_double_vcvt_power_of_two): Define + new predicate. + * config/arm/arm.c (arm_print_operand): Add print for new fucntion. + (vfp3_const_double_for_bits): New function. + * config/arm/vfp.md (combine_vcvtf2i): Define new instruction. + 2013-12-23 Hans-Peter Nilsson PR target/59203 diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h index 558f13418e6..62741cbd161 100644 --- a/gcc/config/arm/arm-protos.h +++ b/gcc/config/arm/arm-protos.h @@ -276,6 +276,8 @@ struct tune_params extern const struct tune_params *current_tune; extern int vfp3_const_double_for_fract_bits (rtx); +/* return power of two from operand, otherwise 0. */ +extern int vfp3_const_double_for_bits (rtx); extern void arm_emit_coreregs_64bit_shift (enum rtx_code, rtx, rtx, rtx, rtx, rtx); diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 706846e909f..39d23ccb251 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -21594,7 +21594,11 @@ arm_print_operand (FILE *stream, rtx x, int code) case 'v': gcc_assert (CONST_DOUBLE_P (x)); - fprintf (stream, "#%d", vfp3_const_double_for_fract_bits (x)); + int result; + result = vfp3_const_double_for_fract_bits (x); + if (result == 0) + result = vfp3_const_double_for_bits (x); + fprintf (stream, "#%d", result); return; /* Register specifier for vld1.16/vst1.16. Translate the S register @@ -29707,6 +29711,26 @@ vfp3_const_double_for_fract_bits (rtx operand) } return 0; } + +int +vfp3_const_double_for_bits (rtx operand) +{ + REAL_VALUE_TYPE r0; + + if (!CONST_DOUBLE_P (operand)) + return 0; + + REAL_VALUE_FROM_CONST_DOUBLE (r0, operand); + if (exact_real_truncate (DFmode, &r0)) + { + HOST_WIDE_INT value = real_to_integer (&r0); + value = value & 0xffffffff; + if ((value != 0) && ( (value & (value - 1)) == 0)) + return int_log2 (value); + } + + return 0; +} /* Emit a memory barrier around an atomic sequence according to MODEL. */ diff --git a/gcc/config/arm/constraints.md b/gcc/config/arm/constraints.md index e2a3099e041..59ca4b62440 100644 --- a/gcc/config/arm/constraints.md +++ b/gcc/config/arm/constraints.md @@ -31,7 +31,7 @@ ;; 'H' was previously used for FPA. ;; The following multi-letter normal constraints have been used: -;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, Dl, DL, Do, Dv, Dy, Di, Dt, Dz +;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, Dl, DL, Do, Dv, Dy, Di, Dt, Dp, Dz ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe ;; in Thumb-2 state: Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py @@ -328,12 +328,18 @@ (and (match_code "const_double") (match_test "TARGET_32BIT && TARGET_VFP_DOUBLE && vfp3_const_double_rtx (op)"))) -(define_constraint "Dt" +(define_constraint "Dt" "@internal In ARM/ Thumb2 a const_double which can be used with a vcvt.f32.s32 with fract bits operation" (and (match_code "const_double") (match_test "TARGET_32BIT && TARGET_VFP && vfp3_const_double_for_fract_bits (op)"))) +(define_constraint "Dp" + "@internal + In ARM/ Thumb2 a const_double which can be used with a vcvt.s32.f32 with bits operation" + (and (match_code "const_double") + (match_test "TARGET_32BIT && TARGET_VFP && vfp3_const_double_for_bits (op)"))) + (define_register_constraint "Ts" "(arm_restrict_it) ? LO_REGS : GENERAL_REGS" "For arm_restrict_it the core registers @code{r0}-@code{r7}. GENERAL_REGS otherwise.") diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md index e151a6b1f88..641228612f5 100644 --- a/gcc/config/arm/predicates.md +++ b/gcc/config/arm/predicates.md @@ -645,8 +645,13 @@ (define_predicate "const_double_vcvt_power_of_two_reciprocal" (and (match_code "const_double") - (match_test "TARGET_32BIT && TARGET_VFP - && vfp3_const_double_for_fract_bits (op)"))) + (match_test "TARGET_32BIT && TARGET_VFP + && vfp3_const_double_for_fract_bits (op)"))) + +(define_predicate "const_double_vcvt_power_of_two" + (and (match_code "const_double") + (match_test "TARGET_32BIT && TARGET_VFP + && vfp3_const_double_for_bits (op)"))) (define_predicate "neon_struct_operand" (and (match_code "mem") diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index 6d0515a92b1..8d755fc1dfe 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -1253,6 +1253,20 @@ (set_attr "length" "8")] ) +(define_insn "*combine_vcvtf2i" + [(set (match_operand:SI 0 "s_register_operand" "=r") + (fix:SI (fix:SF (mult:SF (match_operand:SF 1 "s_register_operand" "t") + (match_operand 2 + "const_double_vcvt_power_of_two" "Dp")))))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math" + "vcvt%?.s32.f32\\t%1, %1, %v2\;vmov%?\\t%0, %1" + [(set_attr "predicable" "yes") + (set_attr "predicable_short_it" "no") + (set_attr "ce_count" "2") + (set_attr "type" "f_cvtf2i") + (set_attr "length" "8")] + ) + ;; Store multiple insn used in function prologue. (define_insn "*push_multi_vfp" [(match_parallel 2 "multi_register_push" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c0bba43dc39..b7437545132 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-12-24 Renlin Li + + * gcc.target/arm/fixed_float_conversion.c: New test case. + 2013-12-23 Bingfeng Mei * gcc.dg/vect/vect-neg-store-1.c: New test. diff --git a/gcc/testsuite/gcc.target/arm/fixed_float_conversion.c b/gcc/testsuite/gcc.target/arm/fixed_float_conversion.c new file mode 100644 index 00000000000..a8befd0fba7 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/fixed_float_conversion.c @@ -0,0 +1,19 @@ +/* Check that vcvt is used for fixed and float data conversions. */ +/* { dg-do compile } */ +/* { dg-options "-O1 -mfpu=vfp3" } */ +/* { dg-require-effective-target arm_vfp_ok } */ + +float +fixed_to_float (int i) +{ + return ((float) i / (1 << 16)); +} + +int +float_to_fixed (float f) +{ + return ((int) (f * (1 << 16))); +} + +/* { dg-final { scan-assembler "vcvt.f32.s32" } } */ +/* { dg-final { scan-assembler "vcvt.s32.f32" } } */ -- cgit v1.2.1 From 202a632801eb2fcf573645b855194653b1649a4c Mon Sep 17 00:00:00 2001 From: hjl Date: Tue, 24 Dec 2013 20:12:47 +0000 Subject: Check opts->x_ix86_arch_string * config/i386/i386.c (ix86_option_override_internal): Check opts->x_ix86_arch_string instead of ix86_arch_string. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206196 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3e9214a5f32..8c756a6dcec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-24 H.J. Lu + + * config/i386/i386.c (ix86_option_override_internal): Check + opts->x_ix86_arch_string instead of ix86_arch_string. + 2013-12-24 Renlin Li * config/arm/arm-protos.h (vfp_const_double_for_bits): Declare. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index ced6618fc4c..f5d9ce56e86 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3645,7 +3645,7 @@ ix86_option_override_internal (bool main_args_p, if (!strcmp (opts->x_ix86_arch_string, "generic")) error ("generic CPU can be used only for %stune=%s %s", prefix, suffix, sw); - else if (!strcmp (ix86_arch_string, "intel")) + else if (!strcmp (opts->x_ix86_arch_string, "intel")) error ("intel CPU can be used only for %stune=%s %s", prefix, suffix, sw); else if (!strncmp (opts->x_ix86_arch_string, "generic", 7) || i == pta_size) -- cgit v1.2.1 From d71211f3745d7636e6a10e7d932b6f11899a524e Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 25 Dec 2013 00:16:54 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206199 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 0b73326dea1..c535bf7e2ae 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131224 +20131225 -- cgit v1.2.1 From 8a5280dcbb9a9f60be0b2d0b96d70f7fad47e6c1 Mon Sep 17 00:00:00 2001 From: uros Date: Wed, 25 Dec 2013 22:22:24 +0000 Subject: gcc/ 2013-12-25 Allan Sandfeld Jensen H.J. Lu PR target/59422 * config/i386/i386.c (get_builtin_code_for_version): Handle PROCESSOR_HASWELL, PROCESSOR_SILVERMONT, PROCESSOR_BTVER1, PROCESSOR_BTVER2, PROCESSOR_BDVER3 and PROCESSOR_BDVER4. Change priority of PROCESSOR_BDVER1 to P_PROC_XOP. (fold_builtin_cpu): Add "ivybridge", "haswell", "bonnell", "silvermont", "bobcat" and "jaguar" CPU names. Add "sse4a", "fma4", "xop" and "fma" ISA names. libgcc/ 2013-12-25 Allan Sandfeld Jensen H.J. Lu PR target/59422 * config/i386/cpuinfo.c (enum processor_types): Add AMD_BOBCAT and AMD_JAGUAR. (enum processor_subtypes): Add AMDFAM15H_BDVER3, AMDFAM15H_BDVER4, INTEL_COREI7_IVYBRIDGE and INTEL_COREI7_HASWELL. (enum processor_features): Add FEATURE_SSE4_A, FEATURE_FMA4, FEATURE_XOP and FEATURE_FMA. (get_amd_cpu): Handle AMD_BOBCAT, AMD_JAGUAR, AMDFAM15H_BDVER2 and AMDFAM15H_BDVER3. (get_intel_cpu): Handle INTEL_COREI7 and INTEL_COREI7_HASWELL. (get_available_features): Handle FEATURE_FMA, FEATURE_SSE4_A, FEATURE_FMA4 and FEATURE_XOP. testsuite/ 2013-12-25 Allan Sandfeld Jensen PR target/59422 * gcc.target/i386/funcspec-5.c (test_fma, test_xop, test_no_fma, test_no_xop, test_arch_corei7, test_arch_corei7_avx, test_arch_core_avx2, test_arch_bdver1, test_arch_bdver2, test_arch_bdver3, test_tune_corei7, test_tune_corei7_avx, test_tune_core_avx2, test_tune_bdver1, test_tune_bdver2 and test_tune_bdver3): New function prototypes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206200 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 244 +++++++++++++++-------------- gcc/config/i386/i386.c | 73 +++++++-- gcc/testsuite/ChangeLog | 10 ++ gcc/testsuite/gcc.target/i386/funcspec-5.c | 16 ++ 4 files changed, 212 insertions(+), 131 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8c756a6dcec..e7c03afafcc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2013-12-25 Allan Sandfeld Jensen + H.J. Lu + + PR target/59422 + * config/i386/i386.c (get_builtin_code_for_version): Handle + PROCESSOR_HASWELL, PROCESSOR_SILVERMONT, PROCESSOR_BTVER1, + PROCESSOR_BTVER2, PROCESSOR_BDVER3 and PROCESSOR_BDVER4. + Change priority of PROCESSOR_BDVER1 to P_PROC_XOP. + (fold_builtin_cpu): Add "ivybridge", "haswell", "bonnell", + "silvermont", "bobcat" and "jaguar" CPU names. Add "sse4a", + "fma4", "xop" and "fma" ISA names. + 2013-12-24 H.J. Lu * config/i386/i386.c (ix86_option_override_internal): Check @@ -62,7 +74,7 @@ consant/external operand, and add a few missing \n. 2013-12-23 H.J. Lu - Tocar Ilya + Tocar Ilya * config/i386/core2.md: Replace corei7 with nehalem. @@ -189,8 +201,8 @@ 2013-12-20 Vladimir Makarov - * config/arm/arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Return NO_REGS - for LRA. + * config/arm/arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Return + NO_REGS for LRA. 2013-12-20 Kyrylo Tkachov @@ -200,7 +212,7 @@ PR tree-optimization/59544 * tree-vect-stmts.c (perm_mask_for_reverse): Move before - vectorizable_store. + vectorizable_store. (vectorizable_store): Handle negative step. 2013-12-20 Tocar Ilya @@ -256,8 +268,8 @@ (attr_hash_add_rtx, attr_hash_add_string): Change hashcode parameter to unsigned. (attr_rtx_1): Change hashcode variable to unsigned. - (attr_string): Likewise. Perform first multiplication in unsigned - type. + (attr_string): Likewise. Perform first multiplication in + unsigned type. * ifcvt.c (noce_try_store_flag_constants): Avoid signed integer overflows. * double-int.c (neg_double): Likewise. @@ -270,8 +282,7 @@ * ipa-split.c (find_split_points): Initialize first.can_split and first.non_ssa_vars. * gengtype-state.c (read_state_files_list): Fix up check. - * genautomata.c (reserv_sets_hash_value): Use portable rotation - idiom. + * genautomata.c (reserv_sets_hash_value): Use portable rotation idiom. 2013-12-19 Kyrylo Tkachov @@ -284,44 +295,44 @@ 2013-12-19 Kyrylo Tkachov - * config/arm/arm.c (enum arm_builtins): Add crypto builtins. - (arm_init_neon_builtins): Handle crypto builtins. - (bdesc_2arg): Likewise. - (bdesc_1arg): Likewise. - (bdesc_3arg): New table. - (arm_expand_ternop_builtin): New function. - (arm_expand_unop_builtin): Handle sha1h explicitly. - (arm_expand_builtin): Handle ternary builtins. - * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): - Define __ARM_FEATURE_CRYPTO. - * config/arm/arm.md: Include crypto.md. - (is_neon_type): Add crypto types. - * config/arm/arm_neon_builtins.def: Add TImode reinterprets. - * config/arm/crypto.def: New. - * config/arm/crypto.md: Likewise. - * config/arm/iterators.md (CRYPTO_UNARY): New int iterator. - (CRYPTO_BINARY): Likewise. - (CRYPTO_TERNARY): Likewise. - (CRYPTO_SELECTING): Likewise. - (crypto_pattern): New int attribute. - (crypto_size_sfx): Likewise. - (crypto_mode): Likewise. - (crypto_type): Likewise. - * config/arm/neon-gen.ml: Handle poly64_t and poly128_t types. - Handle crypto intrinsics. - * config/arm/neon.ml: Add support for poly64 and polt128 types - and intrinsics. Define crypto intrinsics. - * config/arm/neon.md (neon_vreinterpretti): New pattern. - (neon_vreinterpretv16qi): Use VQXMOV mode iterator. - (neon_vreinterpretv8hi): Likewise. - (neon_vreinterpretv4si): Likewise. - (neon_vreinterpretv4sf): Likewise. - (neon_vreinterpretv2di): Likewise. - * config/arm/unspecs.md (UNSPEC_AESD, UNSPEC_AESE, UNSPEC_AESIMC, - UNSPEC_AESMC, UNSPEC_SHA1C, UNSPEC_SHA1M, UNSPEC_SHA1P, UNSPEC_SHA1H, - UNSPEC_SHA1SU0, UNSPEC_SHA1SU1, UNSPEC_SHA256H, UNSPEC_SHA256H2, - UNSPEC_SHA256SU0, UNSPEC_SHA256SU1, VMULLP64): Define. - * config/arm/arm_neon.h: Regenerate. + * config/arm/arm.c (enum arm_builtins): Add crypto builtins. + (arm_init_neon_builtins): Handle crypto builtins. + (bdesc_2arg): Likewise. + (bdesc_1arg): Likewise. + (bdesc_3arg): New table. + (arm_expand_ternop_builtin): New function. + (arm_expand_unop_builtin): Handle sha1h explicitly. + (arm_expand_builtin): Handle ternary builtins. + * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): + Define __ARM_FEATURE_CRYPTO. + * config/arm/arm.md: Include crypto.md. + (is_neon_type): Add crypto types. + * config/arm/arm_neon_builtins.def: Add TImode reinterprets. + * config/arm/crypto.def: New. + * config/arm/crypto.md: Likewise. + * config/arm/iterators.md (CRYPTO_UNARY): New int iterator. + (CRYPTO_BINARY): Likewise. + (CRYPTO_TERNARY): Likewise. + (CRYPTO_SELECTING): Likewise. + (crypto_pattern): New int attribute. + (crypto_size_sfx): Likewise. + (crypto_mode): Likewise. + (crypto_type): Likewise. + * config/arm/neon-gen.ml: Handle poly64_t and poly128_t types. + Handle crypto intrinsics. + * config/arm/neon.ml: Add support for poly64 and polt128 types + and intrinsics. Define crypto intrinsics. + * config/arm/neon.md (neon_vreinterpretti): New pattern. + (neon_vreinterpretv16qi): Use VQXMOV mode iterator. + (neon_vreinterpretv8hi): Likewise. + (neon_vreinterpretv4si): Likewise. + (neon_vreinterpretv4sf): Likewise. + (neon_vreinterpretv2di): Likewise. + * config/arm/unspecs.md (UNSPEC_AESD, UNSPEC_AESE, UNSPEC_AESIMC) + (UNSPEC_AESMC, UNSPEC_SHA1C, UNSPEC_SHA1M, UNSPEC_SHA1P, UNSPEC_SHA1H) + (UNSPEC_SHA1SU0, UNSPEC_SHA1SU1, UNSPEC_SHA256H, UNSPEC_SHA256H2) + (UNSPEC_SHA256SU0, UNSPEC_SHA256SU1, VMULLP64): Define. + * config/arm/arm_neon.h: Regenerate. 2013-12-19 H.J. Lu @@ -347,8 +358,8 @@ (arm_init_crc32_builtins): New function. (arm_init_builtins): Initialise CRC32 builtins. (arm_file_start): Handle architecture extensions. - * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FEATURE_CRC32. - Define __ARM_32BIT_STATE. + * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define + __ARM_FEATURE_CRC32. Define __ARM_32BIT_STATE. (TARGET_CRC32): Define. * config/arm/arm-arches.def: Add armv8-a+crc. * config/arm/arm-tables.opt: Regenerate. @@ -403,8 +414,9 @@ 2013-12-19 Tejas Belagod * config/aarch64/aarch64-simd-builtins.def: Update builtins table. - * config/aarch64/aarch64-simd.md (aarch64_crypto_sha256hv4si, - aarch64_crypto_sha256su0v4si, aarch64_crypto_sha256su1v4si): New. + * config/aarch64/aarch64-simd.md + (aarch64_crypto_sha256hv4si, aarch64_crypto_sha256su0v4si, + aarch64_crypto_sha256su1v4si): New. * config/aarch64/arm_neon.h (vsha256hq_u32, vsha256h2q_u32, vsha256su0q_u32, vsha256su1q_u32): New. * config/aarch64/iterators.md (UNSPEC_SHA256H<2>, UNSPEC_SHA256SU<01>): @@ -456,32 +468,33 @@ Andreas Krebbel * config/s390/s390.c (s390_hotpatch_trampoline_halfwords_default): New - constant - (s390_hotpatch_trampoline_halfwords_max): New constant - (s390_hotpatch_trampoline_halfwords): New static variable - (get_hotpatch_attribute): New function - (s390_handle_hotpatch_attribute): New function - (s390_attribute_table): New target specific attribute table to implement - the hotpatch attribute - (s390_option_override): Parse hotpatch options - (s390_function_num_hotpatch_trampoline_halfwords): New function + constant. + (s390_hotpatch_trampoline_halfwords_max): New constant. + (s390_hotpatch_trampoline_halfwords): New static variable. + (get_hotpatch_attribute): New function. + (s390_handle_hotpatch_attribute): New function. + (s390_attribute_table): New target specific attribute table to + implement the hotpatch attribute. + (s390_option_override): Parse hotpatch options. + (s390_function_num_hotpatch_trampoline_halfwords): New function. (s390_can_inline_p): Implement target hook to - suppress hotpatching for explicitly inlined functions - (s390_asm_output_function_label): Generate hotpatch prologue - (TARGET_ATTRIBUTE_TABLE): Define to implement target attribute table - (TARGET_CAN_INLINE_P): Define to implement target hook - * config/s390/s390.opt (mhotpatch): New options -mhotpatch, -mhotpatch= + suppress hotpatching for explicitly inlined functions. + (s390_asm_output_function_label): Generate hotpatch prologue. + (TARGET_ATTRIBUTE_TABLE): Define to implement target attribute table. + (TARGET_CAN_INLINE_P): Define to implement target hook. + * config/s390/s390.opt (mhotpatch): New options -mhotpatch, + -mhotpatch=. * config/s390/s390-protos.h (s390_asm_output_function_label): Add - prototype + prototype. * config/s390/s390.h (ASM_OUTPUT_FUNCTION_LABEL): Target specific - function label generation for hotpatching - (FUNCTION_BOUNDARY): Align functions to eight bytes - * doc/extend.texi: Document hotpatch attribute - * doc/invoke.texi: Document -mhotpatch option + function label generation for hotpatching. + (FUNCTION_BOUNDARY): Align functions to eight bytes. + * doc/extend.texi: Document hotpatch attribute. + * doc/invoke.texi: Document -mhotpatch option. 2013-12-19 Ganesh Gopalasubramanian - * config/i386/i386.c: Include cfgloop.h. + * config/i386/i386.c: Include cfgloop.h. (ix86_loop_memcount): New function. (ix86_loop_unroll_adjust): New function. (TARGET_LOOP_UNROLL_ADJUST): Define. @@ -514,15 +527,11 @@ 2013-12-18 James Greenhalgh - * config/aarch64/aarch64-cores.def: Add new column for - SCHEDULER_IDENT. - * config/aarch64/aarch64-opts.h (AARCH64_CORE): Handle - SCHEDULER_IDENT. - * config/aarch64/aarch64.c (AARCH64_CORE): Handle - SCHEDULER_IDENT. + * config/aarch64/aarch64-cores.def: Add new column for SCHEDULER_IDENT. + * config/aarch64/aarch64-opts.h (AARCH64_CORE): Handle SCHEDULER_IDENT. + * config/aarch64/aarch64.c (AARCH64_CORE): Handle SCHEDULER_IDENT. (aarch64_parse_cpu): mcpu implies a default value for mtune. - * config/aarch64/aarch64.h (AARCH64_CORE): Handle - SCHEDULER_IDENT. + * config/aarch64/aarch64.h (AARCH64_CORE): Handle SCHEDULER_IDENT. 2013-12-18 James Greenhalgh @@ -544,9 +553,9 @@ * omp-low.c (simd_clone_clauses_extract): Replaced the string "cilk simd elemental" with "cilk simd function." - * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): Removed a carriage-return from a warning string. - + 2013-12-18 Aldy Hernandez * passes.c (execute_function_dump): Set graph_dump_initialized @@ -576,7 +585,7 @@ * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Fix thinko. 2013-12-18 James Greenhalgh - Kyrylo Tkachov + Kyrylo Tkachov * config/arm/t-aprofile: Add cortex-a15.cortex-a7, cortex-a12, cortex-a57, cortex-a57.cortex-a53. @@ -693,8 +702,7 @@ 2013-12-17 Thomas Schwinge - * omp-low.c (tmp_ompfn_id_num): Remove leftover variable - definition. + * omp-low.c (tmp_ompfn_id_num): Remove leftover variable definition. * tree-pass.h (make_pass_expand_omp_ssa): Remove leftover function declaration. @@ -703,8 +711,7 @@ * omp-low.c (check_combined_parallel): Reflect reality in comment. - * doc/cfg.texi (Control Flow): Refer to passes.def instead of - passes.c. + * doc/cfg.texi (Control Flow): Refer to passes.def instead of passes.c. * doc/passes.texi (Pass manager): Refer to passes.def. * doc/gccint.texi (Top): Fix inclusion order. @@ -776,8 +783,8 @@ 2013-12-17 Jan Hubicka - * ipa-utils.h (possible_polymorphic_call_targets): Determine context of - the call. + * ipa-utils.h (possible_polymorphic_call_targets): Determine + context of the call. * gimple-fold.c (gimple_fold_call): Use ipa-devirt to devirtualize. 2013-12-17 Jakub Jelinek @@ -812,12 +819,12 @@ * config/arm/driver-arm.c (arm_cpu_table): Add cortex-a12 entry. 2013-12-14 Jan Hubicka - Markus Trippelsdorf + Markus Trippelsdorf PR ipa/59265 * ipa-profile.c (ipa_profile_generate_summary): Do not ICE when call is already devirtualized. - + 2013-12-16 Jakub Jelinek * Makefile.in (version.o): Restore dependencies on @@ -882,6 +889,7 @@ devirtualized calls. 2013-12-14 Jan Hubicka + PR middle-end/58477 * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Skip clobbers. @@ -945,7 +953,7 @@ 2013-12-13 Kenneth Zadeck * genmodes.c (emit_max_int): Fixed missing parens. - + 2013-12-13 Aldy Hernandez PR tree-optimization/59149 @@ -1066,8 +1074,7 @@ 2013-12-11 Bernd Edlinger * expr.c (expand_assignment): Remove dependency on - flag_strict_volatile_bitfields. Always set the memory - access mode. + flag_strict_volatile_bitfields. Always set the memory access mode. (expand_expr_real_1): Likewise. 2013-12-11 Bernd Edlinger @@ -1234,7 +1241,7 @@ 2013-12-10 H.J. Lu - * basic-block.h (gcov_working_set_t): Put back typedef. + * basic-block.h (gcov_working_set_t): Put back typedef. * gcov-io.h (gcov_bucket_type): Likewise. (gcov_working_set_info, gcov_working_set_t): Likewise. @@ -1406,8 +1413,7 @@ afterwards, check gimple_code of stmts here. Replace is_predicated check with dominance check. Add any_mask_load_store argument, pass it down to if_convertible_stmt_p and if_convertible_phi_p, - call if_convertible_phi_p only after all if_convertible_stmt_p - calls. + call if_convertible_phi_p only after all if_convertible_stmt_p calls. (if_convertible_loop_p): Add any_mask_load_store argument, pass it down to if_convertible_loop_p_1. (predicate_mem_writes): Emit MASK_LOAD and/or MASK_STORE calls. @@ -1456,8 +1462,7 @@ pass_if_conversion. * tree-predcom.c (split_data_refs_to_components): Give up if DR_STMT is a call. - * tree-vect-stmts.c (vect_mark_relevant): Don't crash if lhs - is NULL. + * tree-vect-stmts.c (vect_mark_relevant): Don't crash if lhs is NULL. (exist_non_indexing_operands_for_use_p): Handle MASK_LOAD and MASK_STORE. (vectorizable_mask_load_store): New function. @@ -1545,7 +1550,7 @@ * predict.c (estimate_loops): Likewise. * sched-rgn.c (haifa_find_rgns): Likewise. * tree-cfg.c (split_critical_edges): Likewise. - * tree-dfa.c (renumber_gimple_stmt_uids): Likewise. + * tree-dfa.c (renumber_gimple_stmt_uids): Likewise. * tree-loop-distribution.c (tree_loop_distribution): Likewise. * tree-ssa-pre.c (compute_antic, insert, init_pre): Likewise. * tree-ssa-propagate.c (ssa_prop_init): Likewise. @@ -1782,8 +1787,9 @@ vrp_initialize, identify_jump_threads, instrument_memory_accesses): Likewise. * ubsan.c (ubsan_pass): Likewise. - * value-prof.c (verify_histograms, gimple_value_profile_transformations, - gimple_find_values_to_profile): Likewise. + * value-prof.c (verify_histograms, + gimple_value_profile_transformations, gimple_find_values_to_profile): + Likewise. * var-tracking.c (vt_find_locations, dump_dataflow_sets, vt_emit_notes, vt_initialize, delete_debug_insns, vt_finalize): Likewise. @@ -1837,16 +1843,16 @@ * graphite-sese-to-poly.c (build_scop_bbs): Likewise. * haifa-sched.c (unlink_bb_notes): Likewise. * ipa-split.c (execute_split_functions): Likewise. - * ira-build.c (create_loop_tree_nodes, - remove_unnecessary_regions): Likewise. + * ira-build.c (create_loop_tree_nodes, remove_unnecessary_regions): + Likewise. * ira-emit.c (ira_emit): Likewise. * ira.c (find_moveable_pseudos, ira): Likewise. * lcm.c (compute_antinout_edge, compute_laterin, compute_insert_delete, pre_edge_lcm, compute_available, compute_nearerout, compute_rev_insert_delete, pre_edge_rev_lcm): Likewise. - * loop-unroll.c (opt_info_start_duplication, - apply_opt_in_copies): Likewise. + * loop-unroll.c (opt_info_start_duplication, apply_opt_in_copies): + Likewise. * lower-subreg.c (decompose_multiword_subregs): Likewise. * lra-lives.c (lra_create_live_ranges): Likewise. * lra.c (lra): Likewise. @@ -1918,9 +1924,8 @@ * basic-block.h (label_to_block_map): Eliminate macro. - * gimple.c (gimple_set_bb): Replace uses of label_to_block_map - with uses of label_to_block_map_for_fn, making uses of cfun be - explicit. + * gimple.c (gimple_set_bb): Replace uses of label_to_block_map with + uses of label_to_block_map_for_fn, making uses of cfun be explicit. * tree-cfg.c (delete_tree_cfg_annotations): Likewise. (verify_gimple_label): Likewise. @@ -1928,9 +1933,8 @@ * basic-block.h (basic_block_info): Eliminate macro. - * cfgrtl.c (rtl_create_basic_block): Replace uses of - basic_block_info with basic_block_info_for_fn, making uses - of cfun be explicit. + * cfgrtl.c (rtl_create_basic_block): Replace uses of basic_block_info + with basic_block_info_for_fn, making uses of cfun be explicit. * tree-cfg.c (build_gimple_cfg, create_bb): Likewise. 2013-12-09 David Malcolm @@ -1975,8 +1979,8 @@ * lra-lives.c (lra_create_live_ranges): Likewise. * predict.c (propagate_freq): Likewise. * regrename.c (regrename_analyze): Likewise. - * regstat.c (regstat_bb_compute_ri, - regstat_bb_compute_calls_crossed): Likewise. + * regstat.c (regstat_bb_compute_ri, regstat_bb_compute_calls_crossed): + Likewise. * resource.c (mark_target_live_regs): Likewise. * sched-ebb.c (ebb_fix_recovery_cfg): Likewise. * sched-int.h (EBB_FIRST_BB, EBB_LAST_BB): Likewise. @@ -1987,8 +1991,8 @@ * sel-sched-ir.c (sel_finish_global_and_expr, verify_backedges, purge_empty_blocks, sel_remove_loop_preheader): Likewise. * sel-sched.c (remove_insns_that_need_bookkeeping) - (current_region_empty_p, sel_region_init, - simplify_changed_insns): Likewise. + (current_region_empty_p, sel_region_init, simplify_changed_insns): + Likewise. * trans-mem.c (execute_tm_mark, execute_tm_edges, tm_memopt_compute_antic, ipa_tm_scan_irr_function): Likewise. * tree-cfg.c (make_edges, end_recording_case_labels, @@ -2003,10 +2007,11 @@ insert_phi_nodes_for, insert_updated_phi_nodes_for): Likewise. * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise. * tree-ssa-live.c (live_worklist): Likewise. - * tree-ssa-loop-manip.c (compute_live_loop_exits, - add_exit_phis_var, find_uses_to_rename, copy_phi_node_args): Likewise. + * tree-ssa-loop-manip.c (compute_live_loop_exits, add_exit_phis_var, + find_uses_to_rename, copy_phi_node_args): Likewise. * tree-ssa-pre.c (compute_antic): Likewise. - * tree-ssa-reassoc.c (update_range_test, optimize_range_tests): Likewise. + * tree-ssa-reassoc.c (update_range_test, optimize_range_tests): + Likewise. * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise. * tree-ssa-tail-merge.c (same_succ_hash, same_succ_def::equal, same_succ_flush_bbs, update_worklist, set_cluster, @@ -2091,8 +2096,7 @@ unreachable code. (do_complex_constraint): Call set_union_with_increment with the solution delta, not the full solution. - (make_transitive_closure_constraints): Merge the two - constraints. + (make_transitive_closure_constraints): Merge the two constraints. 2013-12-09 Richard Earnshaw @@ -14604,7 +14608,7 @@ 2013-10-10 Andrew MacLeod - * config/aplha/alpha.c: Add gimple-ssa.h to include list. + * config/alpha/alpha.c: Add gimple-ssa.h to include list. 2013-10-09 Easwaran Raman diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index f5d9ce56e86..e8c393db8ac 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -29972,16 +29972,21 @@ get_builtin_code_for_version (tree decl, tree *predicate_list) P_SSE3, P_SSSE3, P_PROC_SSSE3, - P_SSE4_a, - P_PROC_SSE4_a, + P_SSE4_A, + P_PROC_SSE4_A, P_SSE4_1, P_SSE4_2, P_PROC_SSE4_2, P_POPCNT, P_AVX, + P_PROC_AVX, + P_FMA4, + P_XOP, + P_PROC_XOP, + P_FMA, + P_PROC_FMA, P_AVX2, - P_FMA, - P_PROC_FMA + P_PROC_AVX2 }; enum feature_priority priority = P_ZERO; @@ -30000,11 +30005,15 @@ get_builtin_code_for_version (tree decl, tree *predicate_list) {"sse", P_SSE}, {"sse2", P_SSE2}, {"sse3", P_SSE3}, + {"sse4a", P_SSE4_A}, {"ssse3", P_SSSE3}, {"sse4.1", P_SSE4_1}, {"sse4.2", P_SSE4_2}, {"popcnt", P_POPCNT}, {"avx", P_AVX}, + {"fma4", P_FMA4}, + {"xop", P_XOP}, + {"fma", P_FMA}, {"avx2", P_AVX2} }; @@ -30056,26 +30065,50 @@ get_builtin_code_for_version (tree decl, tree *predicate_list) arg_str = "nehalem"; priority = P_PROC_SSE4_2; break; - case PROCESSOR_SANDYBRIDGE: - arg_str = "sandybridge"; - priority = P_PROC_SSE4_2; - break; + case PROCESSOR_SANDYBRIDGE: + arg_str = "sandybridge"; + priority = P_PROC_AVX; + break; + case PROCESSOR_HASWELL: + arg_str = "haswell"; + priority = P_PROC_AVX2; + break; case PROCESSOR_BONNELL: arg_str = "bonnell"; priority = P_PROC_SSSE3; break; + case PROCESSOR_SILVERMONT: + arg_str = "silvermont"; + priority = P_PROC_SSE4_2; + break; case PROCESSOR_AMDFAM10: arg_str = "amdfam10h"; - priority = P_PROC_SSE4_a; + priority = P_PROC_SSE4_A; + break; + case PROCESSOR_BTVER1: + arg_str = "bobcat"; + priority = P_PROC_SSE4_A; + break; + case PROCESSOR_BTVER2: + arg_str = "jaguar"; + priority = P_PROC_AVX; break; case PROCESSOR_BDVER1: arg_str = "bdver1"; - priority = P_PROC_FMA; + priority = P_PROC_XOP; break; case PROCESSOR_BDVER2: arg_str = "bdver2"; priority = P_PROC_FMA; break; + case PROCESSOR_BDVER3: + arg_str = "bdver3"; + priority = P_PROC_FMA; + break; + case PROCESSOR_BDVER4: + arg_str = "bdver4"; + priority = P_PROC_AVX2; + break; } } @@ -30940,6 +30973,10 @@ fold_builtin_cpu (tree fndecl, tree *args) F_SSE4_2, F_AVX, F_AVX2, + F_SSE4_A, + F_FMA4, + F_XOP, + F_FMA, F_MAX }; @@ -30957,6 +30994,8 @@ fold_builtin_cpu (tree fndecl, tree *args) M_AMDFAM10H, M_AMDFAM15H, M_INTEL_SILVERMONT, + M_AMD_BOBCAT, + M_AMD_JAGUAR, M_CPU_SUBTYPE_START, M_INTEL_COREI7_NEHALEM, M_INTEL_COREI7_WESTMERE, @@ -30967,7 +31006,9 @@ fold_builtin_cpu (tree fndecl, tree *args) M_AMDFAM15H_BDVER1, M_AMDFAM15H_BDVER2, M_AMDFAM15H_BDVER3, - M_AMDFAM15H_BDVER4 + M_AMDFAM15H_BDVER4, + M_INTEL_COREI7_IVYBRIDGE, + M_INTEL_COREI7_HASWELL }; static struct _arch_names_table @@ -30986,15 +31027,21 @@ fold_builtin_cpu (tree fndecl, tree *args) {"nehalem", M_INTEL_COREI7_NEHALEM}, {"westmere", M_INTEL_COREI7_WESTMERE}, {"sandybridge", M_INTEL_COREI7_SANDYBRIDGE}, + {"ivybridge", M_INTEL_COREI7_IVYBRIDGE}, + {"haswell", M_INTEL_COREI7_HASWELL}, + {"bonnell", M_INTEL_BONNELL}, + {"silvermont", M_INTEL_SILVERMONT}, {"amdfam10h", M_AMDFAM10H}, {"barcelona", M_AMDFAM10H_BARCELONA}, {"shanghai", M_AMDFAM10H_SHANGHAI}, {"istanbul", M_AMDFAM10H_ISTANBUL}, + {"bobcat", M_AMD_BOBCAT}, {"amdfam15h", M_AMDFAM15H}, {"bdver1", M_AMDFAM15H_BDVER1}, {"bdver2", M_AMDFAM15H_BDVER2}, {"bdver3", M_AMDFAM15H_BDVER3}, {"bdver4", M_AMDFAM15H_BDVER4}, + {"jaguar", M_AMD_JAGUAR}, }; static struct _isa_names_table @@ -31011,9 +31058,13 @@ fold_builtin_cpu (tree fndecl, tree *args) {"sse2", F_SSE2}, {"sse3", F_SSE3}, {"ssse3", F_SSSE3}, + {"sse4a", F_SSE4_A}, {"sse4.1", F_SSE4_1}, {"sse4.2", F_SSE4_2}, {"avx", F_AVX}, + {"fma4", F_FMA4}, + {"xop", F_XOP}, + {"fma", F_FMA}, {"avx2", F_AVX2} }; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b7437545132..aede8f8d308 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2013-12-25 Allan Sandfeld Jensen + + PR target/59422 + * gcc.target/i386/funcspec-5.c (test_fma, test_xop, test_no_fma, + test_no_xop, test_arch_corei7, test_arch_corei7_avx, + test_arch_core_avx2, test_arch_bdver1, test_arch_bdver2, + test_arch_bdver3, test_tune_corei7, test_tune_corei7_avx, + test_tune_core_avx2, test_tune_bdver1, test_tune_bdver2 and + test_tune_bdver3): New function prototypes. + 2013-12-24 Renlin Li * gcc.target/arm/fixed_float_conversion.c: New test case. diff --git a/gcc/testsuite/gcc.target/i386/funcspec-5.c b/gcc/testsuite/gcc.target/i386/funcspec-5.c index df97a2d7bdb..0acfe000da7 100644 --- a/gcc/testsuite/gcc.target/i386/funcspec-5.c +++ b/gcc/testsuite/gcc.target/i386/funcspec-5.c @@ -17,7 +17,9 @@ extern void test_sse4 (void) __attribute__((__target__("sse4"))); extern void test_sse4_1 (void) __attribute__((__target__("sse4.1"))); extern void test_sse4_2 (void) __attribute__((__target__("sse4.2"))); extern void test_sse4a (void) __attribute__((__target__("sse4a"))); +extern void test_fma (void) __attribute__((__target__("fma"))); extern void test_fma4 (void) __attribute__((__target__("fma4"))); +extern void test_xop (void) __attribute__((__target__("xop"))); extern void test_ssse3 (void) __attribute__((__target__("ssse3"))); extern void test_tbm (void) __attribute__((__target__("tbm"))); extern void test_avx (void) __attribute__((__target__("avx"))); @@ -37,7 +39,9 @@ extern void test_no_sse4 (void) __attribute__((__target__("no-sse4"))); extern void test_no_sse4_1 (void) __attribute__((__target__("no-sse4.1"))); extern void test_no_sse4_2 (void) __attribute__((__target__("no-sse4.2"))); extern void test_no_sse4a (void) __attribute__((__target__("no-sse4a"))); +extern void test_no_fma (void) __attribute__((__target__("no-fma"))); extern void test_no_fma4 (void) __attribute__((__target__("no-fma4"))); +extern void test_no_xop (void) __attribute__((__target__("no-xop"))); extern void test_no_ssse3 (void) __attribute__((__target__("no-ssse3"))); extern void test_no_tbm (void) __attribute__((__target__("no-tbm"))); extern void test_no_avx (void) __attribute__((__target__("no-avx"))); @@ -63,6 +67,9 @@ extern void test_arch_pentium4m (void) __attribute__((__target__("arch=pentium4 extern void test_arch_prescott (void) __attribute__((__target__("arch=prescott"))); extern void test_arch_nocona (void) __attribute__((__target__("arch=nocona"))); extern void test_arch_core2 (void) __attribute__((__target__("arch=core2"))); +extern void test_arch_corei7 (void) __attribute__((__target__("arch=corei7"))); +extern void test_arch_corei7_avx (void) __attribute__((__target__("arch=corei7-avx"))); +extern void test_arch_core_avx2 (void) __attribute__((__target__("arch=core-avx2"))); extern void test_arch_geode (void) __attribute__((__target__("arch=geode"))); extern void test_arch_k6 (void) __attribute__((__target__("arch=k6"))); extern void test_arch_k6_2 (void) __attribute__((__target__("arch=k6-2"))); @@ -81,6 +88,9 @@ extern void test_arch_athlon64_sse3 (void) __attribute__((__target__("arch=athlo extern void test_arch_athlon_fx (void) __attribute__((__target__("arch=athlon-fx"))); extern void test_arch_amdfam10 (void) __attribute__((__target__("arch=amdfam10"))); extern void test_arch_barcelona (void) __attribute__((__target__("arch=barcelona"))); +extern void test_arch_bdver1 (void) __attribute__((__target__("arch=bdver1"))); +extern void test_arch_bdver2 (void) __attribute__((__target__("arch=bdver2"))); +extern void test_arch_bdver3 (void) __attribute__((__target__("arch=bdver3"))); extern void test_arch_foo (void) __attribute__((__target__("arch=foo"))); /* { dg-error "bad value" } */ extern void test_tune_i386 (void) __attribute__((__target__("tune=i386"))); @@ -103,6 +113,9 @@ extern void test_tune_pentium4m (void) __attribute__((__target__("tune=pentium4 extern void test_tune_prescott (void) __attribute__((__target__("tune=prescott"))); extern void test_tune_nocona (void) __attribute__((__target__("tune=nocona"))); extern void test_tune_core2 (void) __attribute__((__target__("tune=core2"))); +extern void test_tune_corei7 (void) __attribute__((__target__("tune=corei7"))); +extern void test_tune_corei7_avx (void) __attribute__((__target__("tune=corei7-avx"))); +extern void test_tune_core_avx2 (void) __attribute__((__target__("tune=core-avx2"))); extern void test_tune_geode (void) __attribute__((__target__("tune=geode"))); extern void test_tune_k6 (void) __attribute__((__target__("tune=k6"))); extern void test_tune_k6_2 (void) __attribute__((__target__("tune=k6-2"))); @@ -121,6 +134,9 @@ extern void test_tune_athlon64_sse3 (void) __attribute__((__target__("tune=athlo extern void test_tune_athlon_fx (void) __attribute__((__target__("tune=athlon-fx"))); extern void test_tune_amdfam10 (void) __attribute__((__target__("tune=amdfam10"))); extern void test_tune_barcelona (void) __attribute__((__target__("tune=barcelona"))); +extern void test_tune_bdver1 (void) __attribute__((__target__("tune=bdver1"))); +extern void test_tune_bdver2 (void) __attribute__((__target__("tune=bdver2"))); +extern void test_tune_bdver3 (void) __attribute__((__target__("tune=bdver3"))); extern void test_tune_generic (void) __attribute__((__target__("tune=generic"))); extern void test_tune_foo (void) __attribute__((__target__("tune=foo"))); /* { dg-error "bad value" } */ -- cgit v1.2.1 From 4b9a75da846b36340067736c6420cc648d3fb429 Mon Sep 17 00:00:00 2001 From: hjl Date: Wed, 25 Dec 2013 22:44:04 +0000 Subject: Remove target_cpu_default/cpu_names Add processor names to processor_target_table and use it instead of target_cpu_default and cpu_names. PR target/59587 * config/i386/i386.c (struct ptt): Add a field for processor name. (processor_target_table): Sync with processor_type. Add processor names. (cpu_names): Removed. (ix86_option_override_internal): Default x_ix86_tune_string to processor_target_table[TARGET_CPU_DEFAULT].name. (ix86_function_specific_print): Assert arch and tune < PROCESSOR_max. Use processor_target_table to print arch and tune names. * config/i386/i386.h (TARGET_CPU_DEFAULT): Default to PROCESSOR_GENERIC. (target_cpu_default): Removed. (processor_type): Reordered. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206202 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 18 ++++++++ gcc/config/i386/i386.c | 116 ++++++++++++++----------------------------------- gcc/config/i386/i386.h | 68 +++++------------------------ 3 files changed, 60 insertions(+), 142 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e7c03afafcc..b7740743301 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2013-12-25 H.J. Lu + + PR target/59587 + * config/i386/i386.c (struct ptt): Add a field for processor + name. + (processor_target_table): Sync with processor_type. Add + processor names. + (cpu_names): Removed. + (ix86_option_override_internal): Default x_ix86_tune_string + to processor_target_table[TARGET_CPU_DEFAULT].name. + (ix86_function_specific_print): Assert arch and tune < + PROCESSOR_max. Use processor_target_table to print arch and + tune names. + * config/i386/i386.h (TARGET_CPU_DEFAULT): Default to + PROCESSOR_GENERIC. + (target_cpu_default): Removed. + (processor_type): Reordered. + 2013-12-25 Allan Sandfeld Jensen H.J. Lu diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index e8c393db8ac..a6cc206750a 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2375,6 +2375,7 @@ static tree ix86_veclibabi_acml (enum built_in_function, tree, tree); /* Processor target table, indexed by processor number */ struct ptt { + const char *const name; /* processor name */ const struct processor_costs *cost; /* Processor costs */ const int align_loop; /* Default alignments. */ const int align_loop_max_skip; @@ -2383,83 +2384,33 @@ struct ptt const int align_func; }; +/* This table must be in sync with enum processor_type in i386.h. */ static const struct ptt processor_target_table[PROCESSOR_max] = { - {&i386_cost, 4, 3, 4, 3, 4}, - {&i486_cost, 16, 15, 16, 15, 16}, - {&pentium_cost, 16, 7, 16, 7, 16}, - {&pentiumpro_cost, 16, 15, 16, 10, 16}, - {&geode_cost, 0, 0, 0, 0, 0}, - {&k6_cost, 32, 7, 32, 7, 32}, - {&athlon_cost, 16, 7, 16, 7, 16}, - {&pentium4_cost, 0, 0, 0, 0, 0}, - {&k8_cost, 16, 7, 16, 7, 16}, - {&nocona_cost, 0, 0, 0, 0, 0}, - /* Core 2 */ - {&core_cost, 16, 10, 16, 10, 16}, - /* Nehalem */ - {&core_cost, 16, 10, 16, 10, 16}, - /* Sandy Bridge */ - {&core_cost, 16, 10, 16, 10, 16}, - /* Haswell */ - {&core_cost, 16, 10, 16, 10, 16}, - /* Bonnell */ - {&atom_cost, 16, 15, 16, 7, 16}, - /* Silvermont */ - {&slm_cost, 16, 15, 16, 7, 16}, - {&generic_cost, 16, 10, 16, 10, 16}, - {&amdfam10_cost, 32, 24, 32, 7, 32}, - {&bdver1_cost, 16, 10, 16, 7, 11}, - {&bdver2_cost, 16, 10, 16, 7, 11}, - {&bdver3_cost, 16, 10, 16, 7, 11}, - {&bdver4_cost, 16, 10, 16, 7, 11}, - {&btver1_cost, 16, 10, 16, 7, 11}, - {&btver2_cost, 16, 10, 16, 7, 11} -}; - -static const char *const cpu_names[TARGET_CPU_DEFAULT_max] = -{ - "generic", - "i386", - "i486", - "pentium", - "pentium-mmx", - "pentiumpro", - "pentium2", - "pentium3", - "pentium4", - "pentium-m", - "prescott", - "nocona", - "core2", - "corei7", - "corei7-avx", - "core-avx2", - "atom", - "slm", - "nehalem", - "westmere", - "sandybridge", - "ivybridge", - "haswell", - "broadwell", - "bonnell", - "silvermont", - "intel", - "geode", - "k6", - "k6-2", - "k6-3", - "athlon", - "athlon-4", - "k8", - "amdfam10", - "bdver1", - "bdver2", - "bdver3", - "bdver4", - "btver1", - "btver2" + {"generic", &generic_cost, 16, 10, 16, 10, 16}, + {"i386", &i386_cost, 4, 3, 4, 3, 4}, + {"i486", &i486_cost, 16, 15, 16, 15, 16}, + {"pentium", &pentium_cost, 16, 7, 16, 7, 16}, + {"pentiumpro", &pentiumpro_cost, 16, 15, 16, 10, 16}, + {"pentium4", &pentium4_cost, 0, 0, 0, 0, 0}, + {"nocona", &nocona_cost, 0, 0, 0, 0, 0}, + {"core2", &core_cost, 16, 10, 16, 10, 16}, + {"nehalem", &core_cost, 16, 10, 16, 10, 16}, + {"sandybridge", &core_cost, 16, 10, 16, 10, 16}, + {"haswell", &core_cost, 16, 10, 16, 10, 16}, + {"bonnell", &atom_cost, 16, 15, 16, 7, 16}, + {"silvermont", &slm_cost, 16, 15, 16, 7, 16}, + {"geode", &geode_cost, 0, 0, 0, 0, 0}, + {"k6", &k6_cost, 32, 7, 32, 7, 32}, + {"athlon", &athlon_cost, 16, 7, 16, 7, 16}, + {"k8", &k8_cost, 16, 7, 16, 7, 16}, + {"amdfam10", &amdfam10_cost, 32, 24, 32, 7, 32}, + {"bdver1", &bdver1_cost, 16, 10, 16, 7, 11}, + {"bdver2", &bdver2_cost, 16, 10, 16, 7, 11}, + {"bdver3", &bdver3_cost, 16, 10, 16, 7, 11}, + {"bdver4", &bdver4_cost, 16, 10, 16, 7, 11}, + {"btver1", &btver1_cost, 16, 10, 16, 7, 11}, + {"btver2", &btver2_cost, 16, 10, 16, 7, 11} }; static bool @@ -3360,7 +3311,8 @@ ix86_option_override_internal (bool main_args_p, opts->x_ix86_tune_string = opts->x_ix86_arch_string; if (!opts->x_ix86_tune_string) { - opts->x_ix86_tune_string = cpu_names[TARGET_CPU_DEFAULT]; + opts->x_ix86_tune_string + = processor_target_table[TARGET_CPU_DEFAULT].name; ix86_tune_defaulted = 1; } @@ -4411,19 +4363,15 @@ ix86_function_specific_print (FILE *file, int indent, = ix86_target_string (ptr->x_ix86_isa_flags, ptr->x_target_flags, NULL, NULL, ptr->x_ix86_fpmath, false); + gcc_assert (ptr->arch < PROCESSOR_max); fprintf (file, "%*sarch = %d (%s)\n", indent, "", - ptr->arch, - ((ptr->arch < TARGET_CPU_DEFAULT_max) - ? cpu_names[ptr->arch] - : "")); + ptr->arch, processor_target_table[ptr->arch].name); + gcc_assert (ptr->tune < PROCESSOR_max); fprintf (file, "%*stune = %d (%s)\n", indent, "", - ptr->tune, - ((ptr->tune < TARGET_CPU_DEFAULT_max) - ? cpu_names[ptr->tune] - : "")); + ptr->tune, processor_target_table[ptr->tune].name); fprintf (file, "%*sbranch_cost = %d\n", indent, "", ptr->branch_cost); diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index aafc1accd67..5976435a389 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -247,10 +247,10 @@ extern const struct processor_costs ix86_size_cost; /* Macros used in the machine description to test the flags. */ -/* configure can arrange to make this 2, to force a 486. */ +/* configure can arrange to change it. */ #ifndef TARGET_CPU_DEFAULT -#define TARGET_CPU_DEFAULT TARGET_CPU_DEFAULT_generic +#define TARGET_CPU_DEFAULT PROCESSOR_GENERIC #endif #ifndef TARGET_FPMATH_DEFAULT @@ -607,55 +607,6 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); /* Target Pragmas. */ #define REGISTER_TARGET_PRAGMAS() ix86_register_pragmas () -enum target_cpu_default -{ - TARGET_CPU_DEFAULT_generic = 0, - - TARGET_CPU_DEFAULT_i386, - TARGET_CPU_DEFAULT_i486, - TARGET_CPU_DEFAULT_pentium, - TARGET_CPU_DEFAULT_pentium_mmx, - TARGET_CPU_DEFAULT_pentiumpro, - TARGET_CPU_DEFAULT_pentium2, - TARGET_CPU_DEFAULT_pentium3, - TARGET_CPU_DEFAULT_pentium4, - TARGET_CPU_DEFAULT_pentium_m, - TARGET_CPU_DEFAULT_prescott, - TARGET_CPU_DEFAULT_nocona, - TARGET_CPU_DEFAULT_core2, - TARGET_CPU_DEFAULT_corei7, - TARGET_CPU_DEFAULT_corei7_avx, - TARGET_CPU_DEFAULT_core_avx2, - TARGET_CPU_DEFAULT_atom, - TARGET_CPU_DEFAULT_slm, - TARGET_CPU_DEFAULT_nehalem, - TARGET_CPU_DEFAULT_westmere, - TARGET_CPU_DEFAULT_sandybridge, - TARGET_CPU_DEFAULT_ivybridge, - TARGET_CPU_DEFAULT_haswell, - TARGET_CPU_DEFAULT_broadwell, - TARGET_CPU_DEFAULT_bonnell, - TARGET_CPU_DEFAULT_silvermont, - TARGET_CPU_DEFAULT_intel, - - TARGET_CPU_DEFAULT_geode, - TARGET_CPU_DEFAULT_k6, - TARGET_CPU_DEFAULT_k6_2, - TARGET_CPU_DEFAULT_k6_3, - TARGET_CPU_DEFAULT_athlon, - TARGET_CPU_DEFAULT_athlon_sse, - TARGET_CPU_DEFAULT_k8, - TARGET_CPU_DEFAULT_amdfam10, - TARGET_CPU_DEFAULT_bdver1, - TARGET_CPU_DEFAULT_bdver2, - TARGET_CPU_DEFAULT_bdver3, - TARGET_CPU_DEFAULT_bdver4, - TARGET_CPU_DEFAULT_btver1, - TARGET_CPU_DEFAULT_btver2, - - TARGET_CPU_DEFAULT_max -}; - #ifndef CC1_SPEC #define CC1_SPEC "%(cc1_cpu) " #endif @@ -2213,19 +2164,17 @@ do { \ with x86-64 medium memory model */ #define DEFAULT_LARGE_SECTION_THRESHOLD 65536 -/* Which processor to tune code generation for. */ +/* Which processor to tune code generation for. These must be in sync + with processor_target_table in i386.c. */ enum processor_type { - PROCESSOR_I386 = 0, /* 80386 */ + PROCESSOR_GENERIC = 0, + PROCESSOR_I386, /* 80386 */ PROCESSOR_I486, /* 80486DX, 80486SX, 80486DX[24] */ PROCESSOR_PENTIUM, PROCESSOR_PENTIUMPRO, - PROCESSOR_GEODE, - PROCESSOR_K6, - PROCESSOR_ATHLON, PROCESSOR_PENTIUM4, - PROCESSOR_K8, PROCESSOR_NOCONA, PROCESSOR_CORE2, PROCESSOR_NEHALEM, @@ -2233,7 +2182,10 @@ enum processor_type PROCESSOR_HASWELL, PROCESSOR_BONNELL, PROCESSOR_SILVERMONT, - PROCESSOR_GENERIC, + PROCESSOR_GEODE, + PROCESSOR_K6, + PROCESSOR_ATHLON, + PROCESSOR_K8, PROCESSOR_AMDFAM10, PROCESSOR_BDVER1, PROCESSOR_BDVER2, -- cgit v1.2.1 From a35af8e831b5fcb57cb728c284826e5e005940e5 Mon Sep 17 00:00:00 2001 From: uros Date: Thu, 26 Dec 2013 00:05:44 +0000 Subject: * config/i386/driver-i386.c (decode_caches_intel): Add missing entries. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206203 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 16 +++++++++------- gcc/config/i386/driver-i386.c | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 7 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b7740743301..0b851a52622 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,16 +1,18 @@ +2013-12-26 Uros Bizjak + + * config/i386/driver-i386.c (decode_caches_intel): Add missing entries. + 2013-12-25 H.J. Lu PR target/59587 - * config/i386/i386.c (struct ptt): Add a field for processor - name. - (processor_target_table): Sync with processor_type. Add - processor names. + * config/i386/i386.c (struct ptt): Add a field for processor name. + (processor_target_table): Sync with processor_type. + Add processor names. (cpu_names): Removed. (ix86_option_override_internal): Default x_ix86_tune_string to processor_target_table[TARGET_CPU_DEFAULT].name. - (ix86_function_specific_print): Assert arch and tune < - PROCESSOR_max. Use processor_target_table to print arch and - tune names. + (ix86_function_specific_print): Assert arch and tune < PROCESSOR_max. + Use processor_target_table to print arch and tune names. * config/i386/i386.h (TARGET_CPU_DEFAULT): Default to PROCESSOR_GENERIC. (target_cpu_default): Removed. diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index 4d0b2646bae..e02d05d6620 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -126,6 +126,18 @@ decode_caches_intel (unsigned reg, bool xeon_mp, case 0x0c: level1->sizekb = 16; level1->assoc = 4; level1->line = 32; break; + case 0x0d: + level1->sizekb = 16; level1->assoc = 4; level1->line = 64; + break; + case 0x0e: + level1->sizekb = 24; level1->assoc = 6; level1->line = 64; + break; + case 0x21: + level2->sizekb = 256; level2->assoc = 8; level2->line = 64; + break; + case 0x24: + level2->sizekb = 1024; level2->assoc = 16; level2->line = 64; + break; case 0x2c: level1->sizekb = 32; level1->assoc = 8; level1->line = 64; break; @@ -162,6 +174,9 @@ decode_caches_intel (unsigned reg, bool xeon_mp, case 0x45: level2->sizekb = 2048; level2->assoc = 4; level2->line = 32; break; + case 0x48: + level2->sizekb = 3072; level2->assoc = 12; level2->line = 64; + break; case 0x49: if (xeon_mp) break; @@ -203,6 +218,9 @@ decode_caches_intel (unsigned reg, bool xeon_mp, case 0x7f: level2->sizekb = 512; level2->assoc = 2; level2->line = 64; break; + case 0x80: + level2->sizekb = 512; level2->assoc = 8; level2->line = 64; + break; case 0x82: level2->sizekb = 256; level2->assoc = 8; level2->line = 32; break; -- cgit v1.2.1 From 1ef4e6761df84fb6835366323f3e86a887a08e21 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 26 Dec 2013 00:17:22 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206207 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index c535bf7e2ae..f1126d4f1c5 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131225 +20131226 -- cgit v1.2.1 From 0337c8efb855d00db2bd4c13d8222555e0764750 Mon Sep 17 00:00:00 2001 From: gganesh Date: Thu, 26 Dec 2013 08:54:49 +0000 Subject: Change AMD cpu names git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206210 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/config/i386/i386.c | 12 ++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0b851a52622..52a74f0241f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-12-26 Ganesh Gopalasubramanian + + * config/i386/i386.c (get_builtin_code_for_version): Rename AMD + CPU names M_AMD_BOBCAT to M_AMD_BTVER1 and M_AMD_JAGUAR + to M_AMD_BTVER2. + (processor_model): Likewise. + (arch_names_table): Likewise. + 2013-12-26 Uros Bizjak * config/i386/driver-i386.c (decode_caches_intel): Add missing entries. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index a6cc206750a..33e649564d5 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -30034,11 +30034,11 @@ get_builtin_code_for_version (tree decl, tree *predicate_list) priority = P_PROC_SSE4_A; break; case PROCESSOR_BTVER1: - arg_str = "bobcat"; + arg_str = "btver1"; priority = P_PROC_SSE4_A; break; case PROCESSOR_BTVER2: - arg_str = "jaguar"; + arg_str = "btver2"; priority = P_PROC_AVX; break; case PROCESSOR_BDVER1: @@ -30942,8 +30942,8 @@ fold_builtin_cpu (tree fndecl, tree *args) M_AMDFAM10H, M_AMDFAM15H, M_INTEL_SILVERMONT, - M_AMD_BOBCAT, - M_AMD_JAGUAR, + M_AMD_BTVER1, + M_AMD_BTVER2, M_CPU_SUBTYPE_START, M_INTEL_COREI7_NEHALEM, M_INTEL_COREI7_WESTMERE, @@ -30983,13 +30983,13 @@ fold_builtin_cpu (tree fndecl, tree *args) {"barcelona", M_AMDFAM10H_BARCELONA}, {"shanghai", M_AMDFAM10H_SHANGHAI}, {"istanbul", M_AMDFAM10H_ISTANBUL}, - {"bobcat", M_AMD_BOBCAT}, + {"btver1", M_AMD_BTVER1}, {"amdfam15h", M_AMDFAM15H}, {"bdver1", M_AMDFAM15H_BDVER1}, {"bdver2", M_AMDFAM15H_BDVER2}, {"bdver3", M_AMDFAM15H_BDVER3}, {"bdver4", M_AMDFAM15H_BDVER4}, - {"jaguar", M_AMD_JAGUAR}, + {"btver2", M_AMD_BTVER2}, }; static struct _isa_names_table -- cgit v1.2.1 From cf6982ab067c2e569b75a17122bd1caaded2bc96 Mon Sep 17 00:00:00 2001 From: hjl Date: Thu, 26 Dec 2013 14:47:15 +0000 Subject: Map "arch=corei7"/"arch=nehalem" to M_INTEL_COREI7 After Intel processor name cleanup, __attribute__ ((target("arch=corei7"))) is translated to PROCESSOR_NEHALEM and mapped to M_INTEL_COREI7_NEHALEM. __attribute__ ((target("arch=corei7"))) used to cover M_INTEL_COREI7_XXXX. Now it only covers M_INTEL_COREI7_NEHALEM. We have PROCESSOR_SANDYBRIDGE and PROCESSOR_HASWELL. But there is nothing to mark Westmere and Ivy Bridge. Since function versioning doesn't support extra ISAs in Westmere and Ivy Bridge, we don't lose anything. The solution is to map __attribute__ ((target("arch=corei7"))) and __attribute__ ((target("arch=nehalem"))) to M_INTEL_COREI7. gcc/ PR target/59601 * config/i386/i386.c (get_builtin_code_for_version): Map PROCESSOR_NEHALEM to "corei7". gcc/testsuite/ PR target/59601 * g++.dg/ext/mv14.C: New tests. * g++.dg/ext/mv15.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206212 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 16 +++++++++++----- gcc/config/i386/i386.c | 5 ++++- gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/g++.dg/ext/mv14.C | 40 ++++++++++++++++++++++++++++++++++++++++ gcc/testsuite/g++.dg/ext/mv15.C | 40 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 102 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/g++.dg/ext/mv14.C create mode 100644 gcc/testsuite/g++.dg/ext/mv15.C (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 52a74f0241f..186fa1c0311 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,10 +1,16 @@ +2013-12-26 H.J. Lu + + PR target/59601 + * config/i386/i386.c (get_builtin_code_for_version): Map + PROCESSOR_NEHALEM to "corei7". + 2013-12-26 Ganesh Gopalasubramanian - * config/i386/i386.c (get_builtin_code_for_version): Rename AMD - CPU names M_AMD_BOBCAT to M_AMD_BTVER1 and M_AMD_JAGUAR - to M_AMD_BTVER2. - (processor_model): Likewise. - (arch_names_table): Likewise. + * config/i386/i386.c (get_builtin_code_for_version): Rename AMD + CPU names M_AMD_BOBCAT to M_AMD_BTVER1 and M_AMD_JAGUAR + to M_AMD_BTVER2. + (processor_model): Likewise. + (arch_names_table): Likewise. 2013-12-26 Uros Bizjak diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 33e649564d5..71063bbbada 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -30010,7 +30010,10 @@ get_builtin_code_for_version (tree decl, tree *predicate_list) priority = P_PROC_SSSE3; break; case PROCESSOR_NEHALEM: - arg_str = "nehalem"; + /* We translate "arch=corei7" and "arch=nehelam" to + "corei7" so that it will be mapped to M_INTEL_COREI7 + as cpu type to cover all M_INTEL_COREI7_XXXs. */ + arg_str = "corei7"; priority = P_PROC_SSE4_2; break; case PROCESSOR_SANDYBRIDGE: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index aede8f8d308..51be98c7121 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2013-12-26 Uros Bizjak + H.J. Lu + + PR target/59601 + * g++.dg/ext/mv14.C: New tests. + * g++.dg/ext/mv15.C: Likewise. + 2013-12-25 Allan Sandfeld Jensen PR target/59422 diff --git a/gcc/testsuite/g++.dg/ext/mv14.C b/gcc/testsuite/g++.dg/ext/mv14.C new file mode 100644 index 00000000000..e36e08d50ca --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/mv14.C @@ -0,0 +1,40 @@ +/* Test case to check if Multiversioning works. */ +/* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-ifunc "" } */ +/* { dg-options "-O2 -fPIC" } */ + +#include + +/* Default version. */ +int foo (); // Extra declaration that is merged with the second one. +int foo () __attribute__ ((target("default"))); + +int foo () __attribute__ ((target("arch=corei7"))); + +int (*p)() = &foo; +int main () +{ + int val = foo (); + assert (val == (*p)()); + + /* Check in the exact same order in which the dispatching + is expected to happen. */ + if (__builtin_cpu_is ("corei7")) + assert (val == 5); + else + assert (val == 0); + + return 0; +} + +int __attribute__ ((target("default"))) +foo () +{ + return 0; +} + +int __attribute__ ((target("arch=corei7"))) +foo () +{ + return 5; +} diff --git a/gcc/testsuite/g++.dg/ext/mv15.C b/gcc/testsuite/g++.dg/ext/mv15.C new file mode 100644 index 00000000000..42e39d24c6a --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/mv15.C @@ -0,0 +1,40 @@ +/* Test case to check if Multiversioning works. */ +/* { dg-do run { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-ifunc "" } */ +/* { dg-options "-O2 -fPIC" } */ + +#include + +/* Default version. */ +int foo (); // Extra declaration that is merged with the second one. +int foo () __attribute__ ((target("default"))); + +int foo () __attribute__ ((target("arch=nehalem"))); + +int (*p)() = &foo; +int main () +{ + int val = foo (); + assert (val == (*p)()); + + /* Check in the exact same order in which the dispatching + is expected to happen. */ + if (__builtin_cpu_is ("corei7")) + assert (val == 5); + else + assert (val == 0); + + return 0; +} + +int __attribute__ ((target("default"))) +foo () +{ + return 0; +} + +int __attribute__ ((target("arch=nehalem"))) +foo () +{ + return 5; +} -- cgit v1.2.1 From f00e2a163b026cc20d31158ff994904d2e8cf147 Mon Sep 17 00:00:00 2001 From: hjl Date: Thu, 26 Dec 2013 16:10:55 +0000 Subject: Don't check/change generic/i686 tuning gcc/ PR target/59588 * config/i386/i386.c (ix86_option_override_internal): Don't check generic tuning. Don't change i686 tuning. gcc/testsuite/ PR target/59588 * gcc.target/i386/pr59588-1.c: New file. * gcc.target/i386/pr59588-2.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206213 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/i386/i386.c | 20 ++++---------------- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gcc.target/i386/pr59588-1.c | 7 +++++++ gcc/testsuite/gcc.target/i386/pr59588-2.c | 7 +++++++ 5 files changed, 30 insertions(+), 16 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr59588-1.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59588-2.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 186fa1c0311..d8c272afb26 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-26 H.J. Lu + + PR target/59588 + * config/i386/i386.c (ix86_option_override_internal): Don't + check generic tuning. Don't change i686 tuning. + 2013-12-26 H.J. Lu PR target/59601 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 71063bbbada..0cf0a9da0a2 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3283,23 +3283,13 @@ ix86_option_override_internal (bool main_args_p, /* Need to check -mtune=generic first. */ if (opts->x_ix86_tune_string) { - if (!strcmp (opts->x_ix86_tune_string, "generic") - || !strcmp (opts->x_ix86_tune_string, "i686") - /* As special support for cross compilers we read -mtune=native + /* As special support for cross compilers we read -mtune=native as -mtune=generic. With native compilers we won't see the -mtune=native, as it was changed by the driver. */ - || !strcmp (opts->x_ix86_tune_string, "native")) + if (!strcmp (opts->x_ix86_tune_string, "native")) { opts->x_ix86_tune_string = "generic"; } - /* If this call is for setting the option attribute, allow the - generic that was previously set. */ - else if (!main_args_p - && !strcmp (opts->x_ix86_tune_string, "generic")) - ; - else if (!strncmp (opts->x_ix86_tune_string, "generic", 7)) - error ("bad value (%s) for %stune=%s %s", - opts->x_ix86_tune_string, prefix, suffix, sw); else if (!strcmp (opts->x_ix86_tune_string, "x86-64")) warning (OPT_Wdeprecated, "%stune=x86-64%s is deprecated; use " "%stune=k8%s or %stune=generic%s instead as appropriate", @@ -3318,9 +3308,7 @@ ix86_option_override_internal (bool main_args_p, /* opts->x_ix86_tune_string is set to opts->x_ix86_arch_string or defaulted. We need to use a sensible tune option. */ - if (!strcmp (opts->x_ix86_tune_string, "generic") - || !strcmp (opts->x_ix86_tune_string, "x86-64") - || !strcmp (opts->x_ix86_tune_string, "i686")) + if (!strcmp (opts->x_ix86_tune_string, "x86-64")) { opts->x_ix86_tune_string = "generic"; } @@ -3600,7 +3588,7 @@ ix86_option_override_internal (bool main_args_p, else if (!strcmp (opts->x_ix86_arch_string, "intel")) error ("intel CPU can be used only for %stune=%s %s", prefix, suffix, sw); - else if (!strncmp (opts->x_ix86_arch_string, "generic", 7) || i == pta_size) + else if (i == pta_size) error ("bad value (%s) for %sarch=%s %s", opts->x_ix86_arch_string, prefix, suffix, sw); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 51be98c7121..c64a5522c7c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-12-26 H.J. Lu + + PR target/59588 + * gcc.target/i386/pr59588-1.c: New file. + * gcc.target/i386/pr59588-2.c: Likewise. + 2013-12-26 Uros Bizjak H.J. Lu diff --git a/gcc/testsuite/gcc.target/i386/pr59588-1.c b/gcc/testsuite/gcc.target/i386/pr59588-1.c new file mode 100644 index 00000000000..6f5fb7238ca --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59588-1.c @@ -0,0 +1,7 @@ +/* { dg-do preprocess } */ +/* { dg-require-effective-target ia32 } */ +/* { dg-options "-march=i686" } */ + +#ifndef __tune_i686__ +#error "__tune_i686__ should be defined for this test" +#endif diff --git a/gcc/testsuite/gcc.target/i386/pr59588-2.c b/gcc/testsuite/gcc.target/i386/pr59588-2.c new file mode 100644 index 00000000000..7c427e3e1cb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59588-2.c @@ -0,0 +1,7 @@ +/* { dg-do preprocess } */ +/* { dg-require-effective-target ia32 } */ +/* { dg-options "-mtune=i686" } */ + +#ifndef __tune_i686__ +#error "__tune_i686__ should be defined for this test" +#endif -- cgit v1.2.1 From 66df6bd16e0b5b5b833ac7c99942771a57295486 Mon Sep 17 00:00:00 2001 From: hjl Date: Thu, 26 Dec 2013 19:13:41 +0000 Subject: Replace -mtune=i686 with -mtune=generic * gcc.target/i386/andor-2.c (dg-options): Replace -mtune=i686 with -mtune=generic. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206214 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/i386/andor-2.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c64a5522c7c..98d22b3e952 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-26 H.J. Lu + + * gcc.target/i386/andor-2.c (dg-options): Replace -mtune=i686 + with -mtune=generic. + 2013-12-26 H.J. Lu PR target/59588 diff --git a/gcc/testsuite/gcc.target/i386/andor-2.c b/gcc/testsuite/gcc.target/i386/andor-2.c index 88118aab575..eacc7b1e449 100644 --- a/gcc/testsuite/gcc.target/i386/andor-2.c +++ b/gcc/testsuite/gcc.target/i386/andor-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -mtune=i686" } */ +/* { dg-options "-O2 -mtune=generic" } */ int h(int x, int y) { -- cgit v1.2.1 From 8e9698504010c129d16ee6fe5adca4173e699c7b Mon Sep 17 00:00:00 2001 From: hjl Date: Thu, 26 Dec 2013 21:05:02 +0000 Subject: Replace -mtune=i686 with -mtune=generic * g++.old-deja/g++.other/store-expr1.C (dg-options): Replace -mtune=i686 with -mtune=generic. * g++.old-deja/g++.other/store-expr2.C (dg-options): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206215 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/g++.old-deja/g++.other/store-expr1.C | 2 +- gcc/testsuite/g++.old-deja/g++.other/store-expr2.C | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 98d22b3e952..ad98f631c34 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-12-26 H.J. Lu + + * g++.old-deja/g++.other/store-expr1.C (dg-options): Replace + -mtune=i686 with -mtune=generic. + * g++.old-deja/g++.other/store-expr2.C (dg-options): Likewise. + 2013-12-26 H.J. Lu * gcc.target/i386/andor-2.c (dg-options): Replace -mtune=i686 diff --git a/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C b/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C index 72d30eba26e..af5e415b7f2 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C +++ b/gcc/testsuite/g++.old-deja/g++.other/store-expr1.C @@ -1,7 +1,7 @@ // { dg-do run { target i?86-*-* x86_64-*-* } } // { dg-require-effective-target ilp32 } // { dg-require-effective-target fpic } -// { dg-options "-mtune=i686 -O2 -fpic" } +// { dg-options "-mtune=generic -O2 -fpic" } class G {}; struct N { diff --git a/gcc/testsuite/g++.old-deja/g++.other/store-expr2.C b/gcc/testsuite/g++.old-deja/g++.other/store-expr2.C index 99e0943b3b6..1dffbcc1aae 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/store-expr2.C +++ b/gcc/testsuite/g++.old-deja/g++.other/store-expr2.C @@ -1,6 +1,6 @@ // { dg-do run { target i?86-*-* x86_64-*-*} } // { dg-require-effective-target ilp32 } -// { dg-options "-mtune=i686 -O2" } +// { dg-options "-mtune=generic -O2" } class G {}; struct N { -- cgit v1.2.1 From 8f6b3e91bef02b3d59c7ba25581f31044588085f Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 27 Dec 2013 00:17:09 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206218 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index f1126d4f1c5..a6735ca32db 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131226 +20131227 -- cgit v1.2.1 From b57be5d14322b2577f07d44c207e8ee3d0dab39a Mon Sep 17 00:00:00 2001 From: ygribov Date: Fri, 27 Dec 2013 13:56:18 +0000 Subject: 2013-12-27 Yury Gribov PR target/59585 * c-c++-common/ubsan/div-by-zero-1.c: Fixed pattern. * c-c++-common/ubsan/div-by-zero-2.c: Likewise. * c-c++-common/ubsan/div-by-zero-3.c: Likewise. * c-c++-common/ubsan/load-bool-enum.c: Likewise. * c-c++-common/ubsan/overflow-add-2.c: Likewise. * c-c++-common/ubsan/overflow-mul-2.c: Likewise. * c-c++-common/ubsan/overflow-mul-4.c: Likewise. * c-c++-common/ubsan/overflow-negate-1.c: Likewise. * c-c++-common/ubsan/overflow-sub-2.c: Likewise. * c-c++-common/ubsan/pr59333.c: Likewise. * c-c++-common/ubsan/shift-1.c: Likewise. * c-c++-common/ubsan/shift-2.c: Likewise. * c-c++-common/ubsan/shift-4.c: Likewise. * c-c++-common/ubsan/vla-1.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206219 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 18 ++++++++++++++++++ gcc/testsuite/c-c++-common/ubsan/div-by-zero-1.c | 2 +- gcc/testsuite/c-c++-common/ubsan/div-by-zero-2.c | 2 +- gcc/testsuite/c-c++-common/ubsan/div-by-zero-3.c | 2 +- gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c | 4 ++-- gcc/testsuite/c-c++-common/ubsan/overflow-add-2.c | 2 +- gcc/testsuite/c-c++-common/ubsan/overflow-mul-2.c | 2 +- gcc/testsuite/c-c++-common/ubsan/overflow-mul-4.c | 2 +- gcc/testsuite/c-c++-common/ubsan/overflow-negate-1.c | 2 +- gcc/testsuite/c-c++-common/ubsan/overflow-sub-2.c | 2 +- gcc/testsuite/c-c++-common/ubsan/pr59333.c | 2 +- gcc/testsuite/c-c++-common/ubsan/shift-1.c | 2 +- gcc/testsuite/c-c++-common/ubsan/shift-2.c | 2 +- gcc/testsuite/c-c++-common/ubsan/shift-4.c | 2 +- gcc/testsuite/c-c++-common/ubsan/vla-1.c | 2 +- 15 files changed, 33 insertions(+), 15 deletions(-) (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ad98f631c34..bd46fa64ab2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,21 @@ +2013-12-27 Yury Gribov + + PR target/59585 + * c-c++-common/ubsan/div-by-zero-1.c: Fixed pattern. + * c-c++-common/ubsan/div-by-zero-2.c: Likewise. + * c-c++-common/ubsan/div-by-zero-3.c: Likewise. + * c-c++-common/ubsan/load-bool-enum.c: Likewise. + * c-c++-common/ubsan/overflow-add-2.c: Likewise. + * c-c++-common/ubsan/overflow-mul-2.c: Likewise. + * c-c++-common/ubsan/overflow-mul-4.c: Likewise. + * c-c++-common/ubsan/overflow-negate-1.c: Likewise. + * c-c++-common/ubsan/overflow-sub-2.c: Likewise. + * c-c++-common/ubsan/pr59333.c: Likewise. + * c-c++-common/ubsan/shift-1.c: Likewise. + * c-c++-common/ubsan/shift-2.c: Likewise. + * c-c++-common/ubsan/shift-4.c: Likewise. + * c-c++-common/ubsan/vla-1.c: Likewise. + 2013-12-26 H.J. Lu * g++.old-deja/g++.other/store-expr1.C (dg-options): Replace diff --git a/gcc/testsuite/c-c++-common/ubsan/div-by-zero-1.c b/gcc/testsuite/c-c++-common/ubsan/div-by-zero-1.c index 4e2a2b92749..ec391e40be2 100644 --- a/gcc/testsuite/c-c++-common/ubsan/div-by-zero-1.c +++ b/gcc/testsuite/c-c++-common/ubsan/div-by-zero-1.c @@ -21,4 +21,4 @@ main (void) /* { dg-output "\[^\n\r]*division by zero(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*division by zero(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*division by zero(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*division by zero(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*division by zero" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/div-by-zero-2.c b/gcc/testsuite/c-c++-common/ubsan/div-by-zero-2.c index ee9673800d3..c8820fa9466 100644 --- a/gcc/testsuite/c-c++-common/ubsan/div-by-zero-2.c +++ b/gcc/testsuite/c-c++-common/ubsan/div-by-zero-2.c @@ -20,4 +20,4 @@ main (void) /* { dg-output "\[^\n\r]*division by zero(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*division by zero(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*division by zero(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*division by zero(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*division by zero" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/div-by-zero-3.c b/gcc/testsuite/c-c++-common/ubsan/div-by-zero-3.c index f3ee23bd021..399071ee7aa 100644 --- a/gcc/testsuite/c-c++-common/ubsan/div-by-zero-3.c +++ b/gcc/testsuite/c-c++-common/ubsan/div-by-zero-3.c @@ -18,4 +18,4 @@ main (void) /* { dg-output "division of -2147483648 by -1 cannot be represented in type 'int'(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*division of -2147483648 by -1 cannot be represented in type 'int'(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*division of -2147483648 by -1 cannot be represented in type 'int'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*division of -2147483648 by -1 cannot be represented in type 'int'" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c b/gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c index db346cbf719..96f7984f86a 100644 --- a/gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c +++ b/gcc/testsuite/c-c++-common/ubsan/load-bool-enum.c @@ -10,8 +10,8 @@ bool b; __attribute__((noinline, noclone)) enum A foo (bool *p) { - *p = b; /* { dg-output "load-bool-enum.c:13:\[^\n\r]*runtime error: load of value 4, which is not a valid value for type '(_B|b)ool'(\n|\r\n|\r)" } */ - return a; /* { dg-output "\[^\n\r]*load-bool-enum.c:14:\[^\n\r]*runtime error: load of value 9, which is not a valid value for type 'A'(\n|\r\n|\r)" { target c++ } } */ + *p = b; /* { dg-output "load-bool-enum.c:13:\[^\n\r]*runtime error: load of value 4, which is not a valid value for type '(_B|b)ool'(\n|\r\n|\r)*" } */ + return a; /* { dg-output "\[^\n\r]*load-bool-enum.c:14:\[^\n\r]*runtime error: load of value 9, which is not a valid value for type 'A'(\n|\r\n|\r)*" { target c++ } } */ } int diff --git a/gcc/testsuite/c-c++-common/ubsan/overflow-add-2.c b/gcc/testsuite/c-c++-common/ubsan/overflow-add-2.c index de2cd2d0f88..f8af8281f1c 100644 --- a/gcc/testsuite/c-c++-common/ubsan/overflow-add-2.c +++ b/gcc/testsuite/c-c++-common/ubsan/overflow-add-2.c @@ -58,4 +58,4 @@ main (void) /* { dg-output "\[^\n\r]*signed integer overflow: \[^\n\r]* \\+ 1024 cannot be represented in type 'long int'(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* \\+ -1 cannot be represented in type 'long int'(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*signed integer overflow: -1 \\+ -\[^\n\r]* cannot be represented in type 'long int'(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* \\+ -1024 cannot be represented in type 'long int'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* \\+ -1024 cannot be represented in type 'long int'" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/overflow-mul-2.c b/gcc/testsuite/c-c++-common/ubsan/overflow-mul-2.c index adcbfe1a761..ddfbb2e7ae0 100644 --- a/gcc/testsuite/c-c++-common/ubsan/overflow-mul-2.c +++ b/gcc/testsuite/c-c++-common/ubsan/overflow-mul-2.c @@ -24,4 +24,4 @@ main (void) /* { dg-output "signed integer overflow: 2147483647 \\* 2 cannot be represented in type 'int'(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*signed integer overflow: 2 \\* 2147483647 cannot be represented in type 'int'(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*signed integer overflow: \[^\n\r]* \\* 2 cannot be represented in type 'long int'(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*signed integer overflow: 2 \\* \[^\n\r]* cannot be represented in type 'long int'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: 2 \\* \[^\n\r]* cannot be represented in type 'long int'" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/overflow-mul-4.c b/gcc/testsuite/c-c++-common/ubsan/overflow-mul-4.c index 923c14585eb..b05c1a43fb7 100644 --- a/gcc/testsuite/c-c++-common/ubsan/overflow-mul-4.c +++ b/gcc/testsuite/c-c++-common/ubsan/overflow-mul-4.c @@ -83,4 +83,4 @@ main () /* { dg-output "\[^\n\r]*overflow-mul-4.c:48:\[^\n\r]*signed integer overflow: 4257126176 \\* 2166572391 cannot be represented in type 'long long int'(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*overflow-mul-4.c:49:\[^\n\r]*signed integer overflow: -4257126176 \\* -2166572391 cannot be represented in type 'long long int'(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*overflow-mul-4.c:50:\[^\n\r]*signed integer overflow: -4257126176 \\* 2166572391 cannot be represented in type 'long long int'(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*overflow-mul-4.c:51:\[^\n\r]*signed integer overflow: 4257126176 \\* -2166572391 cannot be represented in type 'long long int'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*overflow-mul-4.c:51:\[^\n\r]*signed integer overflow: 4257126176 \\* -2166572391 cannot be represented in type 'long long int'" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/overflow-negate-1.c b/gcc/testsuite/c-c++-common/ubsan/overflow-negate-1.c index 2bdec61cba4..b73787c1d19 100644 --- a/gcc/testsuite/c-c++-common/ubsan/overflow-negate-1.c +++ b/gcc/testsuite/c-c++-common/ubsan/overflow-negate-1.c @@ -36,4 +36,4 @@ main (void) /* { dg-output "\[^\n\r]*negation of -\[^\n\r]* cannot be represented in type 'long int'; cast to an unsigned type to negate this value to itself(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*negation of -9223372036854775808 cannot be represented in type 'long long int'; cast to an unsigned type to negate this value to itself(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*negation of -9223372036854775808 cannot be represented in type 'long long int'; cast to an unsigned type to negate this value to itself(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*negation of -9223372036854775808 cannot be represented in type 'long long int'; cast to an unsigned type to negate this value to itself(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*negation of -9223372036854775808 cannot be represented in type 'long long int'; cast to an unsigned type to negate this value to itself" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/overflow-sub-2.c b/gcc/testsuite/c-c++-common/ubsan/overflow-sub-2.c index e06e3f6e891..99f59054e16 100644 --- a/gcc/testsuite/c-c++-common/ubsan/overflow-sub-2.c +++ b/gcc/testsuite/c-c++-common/ubsan/overflow-sub-2.c @@ -52,4 +52,4 @@ main (void) /* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* \\+ -1 cannot be represented in type 'long int'(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* \\+ -1024 cannot be represented in type 'long int'(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* \\+ -1 cannot be represented in type 'long int'(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* \\+ -1048576 cannot be represented in type 'long int'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* \\+ -1048576 cannot be represented in type 'long int'" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/pr59333.c b/gcc/testsuite/c-c++-common/ubsan/pr59333.c index af539204960..170da8c859b 100644 --- a/gcc/testsuite/c-c++-common/ubsan/pr59333.c +++ b/gcc/testsuite/c-c++-common/ubsan/pr59333.c @@ -16,4 +16,4 @@ main (void) return 0; } -/* { dg-output "signed integer overflow: 2 \\+ 9223372036854775807 cannot be represented in type 'long long int'(\n|\r\n|\r)" } */ +/* { dg-output "signed integer overflow: 2 \\+ 9223372036854775807 cannot be represented in type 'long long int'" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/shift-1.c b/gcc/testsuite/c-c++-common/ubsan/shift-1.c index 0928ff7a102..d2538802aab 100644 --- a/gcc/testsuite/c-c++-common/ubsan/shift-1.c +++ b/gcc/testsuite/c-c++-common/ubsan/shift-1.c @@ -28,4 +28,4 @@ main (void) /* { dg-output "\[^\n\r]*shift exponent 154 is too large for \[^\n\r]*-bit type 'int'(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*shift exponent 524 is too large for \[^\n\r]*-bit type 'long long unsigned int'(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*shift exponent 370 is too large for \[^\n\r]*-bit type 'int'(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*shift exponent 402 is too large for \[^\n\r]*-bit type 'long int'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*shift exponent 402 is too large for \[^\n\r]*-bit type 'long int'" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/shift-2.c b/gcc/testsuite/c-c++-common/ubsan/shift-2.c index 68a7d136f43..aaaeb6fcc09 100644 --- a/gcc/testsuite/c-c++-common/ubsan/shift-2.c +++ b/gcc/testsuite/c-c++-common/ubsan/shift-2.c @@ -20,4 +20,4 @@ main (void) /* { dg-output "\[^\n\r]*shift exponent -4 is negative(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*shift exponent -5 is negative(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*shift exponent -6 is negative(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*shift exponent -11 is negative(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*shift exponent -11 is negative" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/shift-4.c b/gcc/testsuite/c-c++-common/ubsan/shift-4.c index 239c0131fb9..5f095b61ac8 100644 --- a/gcc/testsuite/c-c++-common/ubsan/shift-4.c +++ b/gcc/testsuite/c-c++-common/ubsan/shift-4.c @@ -11,4 +11,4 @@ main () return 0; } -/* { dg-output "shift exponent 120 is too large\[^\n\r]*(\n|\r\n|\r)" } */ +/* { dg-output "shift exponent 120 is too large\[^\n\r]*" } */ diff --git a/gcc/testsuite/c-c++-common/ubsan/vla-1.c b/gcc/testsuite/c-c++-common/ubsan/vla-1.c index ca538ed8693..0fecfa2a3d5 100644 --- a/gcc/testsuite/c-c++-common/ubsan/vla-1.c +++ b/gcc/testsuite/c-c++-common/ubsan/vla-1.c @@ -116,4 +116,4 @@ main (void) /* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value -1(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value -1(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value -6(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value -4(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value -4" } */ -- cgit v1.2.1 From be60ab9614cfd4f32c3750f5b76008a84a0dc507 Mon Sep 17 00:00:00 2001 From: kyukhin Date: Fri, 27 Dec 2013 14:03:55 +0000 Subject: * config/i386/i386.c (ix86_print_operand): Print EVEX's RC modifiers. * config/i386/i386.md (define_constants): Define EVEx's RC constants. * gcc/config/i386/sse.md (3): Extend to support EVEX's rounding control. (*3): Ditto. (mul3): Ditto. (*mul3): Ditto. (_div3): Ditto. (_sqrt2): Ditto. (fma_fmadd_): Ditto. (avx512f_fmadd__mask): Ditto. (avx512f_fmadd__mask3): Ditto. (fma_fmsub_): Ditto. (avx512f_fmsub__mask): Ditto. (avx512f_fmsub__mask3): Ditto. (fma_fnmadd_): Ditto. (avx512f_fnmadd__mask): Ditto. (avx512f_fnmadd__mask3): Ditto. (fma_fnmsub_): Ditto. (avx512f_fnmsub__mask): Ditto. (avx512f_fnmsub__mask3): Ditto. (fma_fmaddsub_): Ditto. (avx512f_fmaddsub__mask): Ditto. (avx512f_fmaddsub__mask3): Ditto. (fma_fmsubadd_): Ditto. (avx512f_fmsubadd__mask): Ditto. (avx512f_fmsubadd__mask3): Ditto. (fmai_vmfmadd_): Ditto. (*fmai_fmadd_): Ditto. (*fmai_fmsub_): Ditto. (*fmai_fnmadd_): Ditto. (*fmai_fnmsub_): Ditto. (sse_cvtsi2ss): Ditto. (sse_cvtsi2ssq): Ditto. (sse_cvtss2si): Ditto. (sse_cvtss2siq): Ditto. (cvtusi232): Ditto. (cvtusi264): Ditto. (float2): Ditto. (ufloatv16siv16sf2): Ditto. (avx512f_fix_notruncv16sfv16si): Ditto. (avx512f_ufix_notruncv16sfv16si): Ditto. (sse2_cvtsi2sdq): Ditto. (avx512f_vcvtss2usi): Ditto. (avx512f_vcvtss2usiq): Ditto. (avx512f_vcvtsd2usi): Ditto. (avx512f_vcvtsd2usiq): Ditto. (sse2_cvtsd2si): Ditto. (sse2_cvtsd2siq): Ditto. (avx512f_cvtpd2dq512): Ditto. (avx512f_ufix_notruncv8dfv8si): Ditto. (avx512f_cvtpd2ps512): Ditto. (avx512f_scalef): Ditto. (3): Ditto. (*avx2_3): Ditto. (avx512er_exp2avx512er_rcp28): Ditto. (avx512er_rsqrt28): Ditto. (avx512f_fmadd__maskz): New. * config/i386/subst.md (SUBST_A): New. (round_name): Ditto. (round_mask_operand2): Ditto. (round_mask_operand3): Ditto. (round_mask_scalar_operand3): Ditto. (round_sd_mask_operand4): Ditto. (round_op2): Ditto. (round_op3): Ditto. (round_op4): Ditto. (round_op5): Ditto. (round_op6): Ditto. (round_mask_op2): Ditto. (round_mask_op3): Ditto. (round_mask_scalar_op3): Ditto. (round_sd_mask_op4): Ditto. (round_constraint): Ditto. (round_constraint2): Ditto. (round_constraint3): Ditto. (round_nimm_predicate): Ditto. (round_mode512bit_condition): Ditto. (round_modev4sf_condition): Ditto. (round_codefor): Ditto. (round_opnum): Ditto. (round): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206220 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 94 ++++++++++ gcc/config/i386/i386.c | 32 ++++ gcc/config/i386/i386.md | 10 + gcc/config/i386/sse.md | 480 ++++++++++++++++++++++++----------------------- gcc/config/i386/subst.md | 42 +++++ 5 files changed, 425 insertions(+), 233 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d8c272afb26..afc4cc13862 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,97 @@ +2013-12-27 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.c (ix86_print_operand): Print EVEX's RC modifiers. + * config/i386/i386.md (define_constants): Define EVEx's RC constants. + * gcc/config/i386/sse.md (3): Extend + to support EVEX's rounding control. + (*3): Ditto. + (mul3): Ditto. + (*mul3): Ditto. + (_div3): Ditto. + (_sqrt2): Ditto. + (fma_fmadd_): Ditto. + (avx512f_fmadd__mask): Ditto. + (avx512f_fmadd__mask3): Ditto. + (fma_fmsub_): Ditto. + (avx512f_fmsub__mask): Ditto. + (avx512f_fmsub__mask3): Ditto. + (fma_fnmadd_): Ditto. + (avx512f_fnmadd__mask): Ditto. + (avx512f_fnmadd__mask3): Ditto. + (fma_fnmsub_): Ditto. + (avx512f_fnmsub__mask): Ditto. + (avx512f_fnmsub__mask3): Ditto. + (fma_fmaddsub_): Ditto. + (avx512f_fmaddsub__mask): Ditto. + (avx512f_fmaddsub__mask3): Ditto. + (fma_fmsubadd_): Ditto. + (avx512f_fmsubadd__mask): Ditto. + (avx512f_fmsubadd__mask3): Ditto. + (fmai_vmfmadd_): Ditto. + (*fmai_fmadd_): Ditto. + (*fmai_fmsub_): Ditto. + (*fmai_fnmadd_): Ditto. + (*fmai_fnmsub_): Ditto. + (sse_cvtsi2ss): Ditto. + (sse_cvtsi2ssq): Ditto. + (sse_cvtss2si): Ditto. + (sse_cvtss2siq): Ditto. + (cvtusi232): Ditto. + (cvtusi264): Ditto. + (float2): Ditto. + (ufloatv16siv16sf2): Ditto. + (avx512f_fix_notruncv16sfv16si): Ditto. + (avx512f_ufix_notruncv16sfv16si): Ditto. + (sse2_cvtsi2sdq): Ditto. + (avx512f_vcvtss2usi): Ditto. + (avx512f_vcvtss2usiq): Ditto. + (avx512f_vcvtsd2usi): Ditto. + (avx512f_vcvtsd2usiq): Ditto. + (sse2_cvtsd2si): Ditto. + (sse2_cvtsd2siq): Ditto. + (avx512f_cvtpd2dq512): Ditto. + (avx512f_ufix_notruncv8dfv8si): Ditto. + (avx512f_cvtpd2ps512): Ditto. + (avx512f_scalef): Ditto. + (3): Ditto. + (*avx2_3): Ditto. + (avx512er_exp2avx512er_rcp28): Ditto. + (avx512er_rsqrt28): Ditto. + (avx512f_fmadd__maskz): New. + * config/i386/subst.md (SUBST_A): New. + (round_name): Ditto. + (round_mask_operand2): Ditto. + (round_mask_operand3): Ditto. + (round_mask_scalar_operand3): Ditto. + (round_sd_mask_operand4): Ditto. + (round_op2): Ditto. + (round_op3): Ditto. + (round_op4): Ditto. + (round_op5): Ditto. + (round_op6): Ditto. + (round_mask_op2): Ditto. + (round_mask_op3): Ditto. + (round_mask_scalar_op3): Ditto. + (round_sd_mask_op4): Ditto. + (round_constraint): Ditto. + (round_constraint2): Ditto. + (round_constraint3): Ditto. + (round_nimm_predicate): Ditto. + (round_mode512bit_condition): Ditto. + (round_modev4sf_condition): Ditto. + (round_codefor): Ditto. + (round_opnum): Ditto. + (round): Ditto. + 2013-12-26 H.J. Lu PR target/59588 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 0cf0a9da0a2..2fc9b802993 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -14990,6 +14990,38 @@ ix86_print_operand (FILE *file, rtx x, int code) fputs ("{z}", file); return; + case 'R': + gcc_assert (CONST_INT_P (x)); + + if (ASSEMBLER_DIALECT == ASM_INTEL) + fputs (", ", file); + + switch (INTVAL (x)) + { + case ROUND_NEAREST_INT: + fputs ("{rn-sae}", file); + break; + case ROUND_NEG_INF: + fputs ("{rd-sae}", file); + break; + case ROUND_POS_INF: + fputs ("{ru-sae}", file); + break; + case ROUND_ZERO: + fputs ("{rz-sae}", file); + break; + case ROUND_SAE: + fputs ("{sae}", file); + break; + default: + gcc_unreachable (); + } + + if (ASSEMBLER_DIALECT == ASM_ATT) + fputs (", ", file); + + return; + case '*': if (ASSEMBLER_DIALECT == ASM_ATT) putc ('*', file); diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 7a16c8ec1df..c7ed099f38a 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -241,6 +241,16 @@ (ROUND_NO_EXC 0x8) ]) +;; Constants to represent AVX512F embeded rounding +(define_constants + [(ROUND_NEAREST_INT 0) + (ROUND_NEG_INF 1) + (ROUND_POS_INF 2) + (ROUND_ZERO 3) + (NO_ROUND 4) + (ROUND_SAE 5) + ]) + ;; Constants to represent pcomtrue/pcomfalse variants (define_constants [(PCOM_FALSE 0) diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 2cbbb14ccea..4c9f310594e 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -1272,23 +1272,23 @@ } [(set_attr "isa" "noavx,noavx,avx,avx")]) -(define_expand "3" +(define_expand "3" [(set (match_operand:VF 0 "register_operand") (plusminus:VF - (match_operand:VF 1 "nonimmediate_operand") - (match_operand:VF 2 "nonimmediate_operand")))] - "TARGET_SSE && " + (match_operand:VF 1 "") + (match_operand:VF 2 "")))] + "TARGET_SSE && && " "ix86_fixup_binary_operands_no_copy (, mode, operands);") -(define_insn "*3" +(define_insn "*3" [(set (match_operand:VF 0 "register_operand" "=x,v") (plusminus:VF - (match_operand:VF 1 "nonimmediate_operand" "0,v") - (match_operand:VF 2 "nonimmediate_operand" "xm,vm")))] - "TARGET_SSE && ix86_binary_operator_ok (, mode, operands) && " + (match_operand:VF 1 "" "0,v") + (match_operand:VF 2 "" "xm,")))] + "TARGET_SSE && ix86_binary_operator_ok (, mode, operands) && && " "@ \t{%2, %0|%0, %2} - v\t{%2, %1, %0|%0, %1, %2}" + v\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,avx") (set_attr "type" "sseadd") (set_attr "prefix" "") @@ -1311,23 +1311,23 @@ (set_attr "prefix" "orig,vex") (set_attr "mode" "")]) -(define_expand "mul3" +(define_expand "mul3" [(set (match_operand:VF 0 "register_operand") (mult:VF - (match_operand:VF 1 "nonimmediate_operand") - (match_operand:VF 2 "nonimmediate_operand")))] - "TARGET_SSE && " + (match_operand:VF 1 "") + (match_operand:VF 2 "")))] + "TARGET_SSE && && " "ix86_fixup_binary_operands_no_copy (MULT, mode, operands);") -(define_insn "*mul3" +(define_insn "*mul3" [(set (match_operand:VF 0 "register_operand" "=x,v") (mult:VF - (match_operand:VF 1 "nonimmediate_operand" "%0,v") - (match_operand:VF 2 "nonimmediate_operand" "xm,vm")))] - "TARGET_SSE && ix86_binary_operator_ok (MULT, mode, operands) && " + (match_operand:VF 1 "" "%0,v") + (match_operand:VF 2 "" "xm,")))] + "TARGET_SSE && ix86_binary_operator_ok (MULT, mode, operands) && && " "@ mul\t{%2, %0|%0, %2} - vmul\t{%2, %1, %0|%0, %1, %2}" + vmul\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,avx") (set_attr "type" "ssemul") (set_attr "prefix" "") @@ -1378,15 +1378,15 @@ } }) -(define_insn "_div3" +(define_insn "_div3" [(set (match_operand:VF 0 "register_operand" "=x,v") (div:VF (match_operand:VF 1 "register_operand" "0,v") - (match_operand:VF 2 "nonimmediate_operand" "xm,vm")))] - "TARGET_SSE && " + (match_operand:VF 2 "" "xm,")))] + "TARGET_SSE && && " "@ div\t{%2, %0|%0, %2} - vdiv\t{%2, %1, %0|%0, %1, %2}" + vdiv\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,avx") (set_attr "type" "ssediv") (set_attr "prefix" "") @@ -1470,11 +1470,11 @@ } }) -(define_insn "_sqrt2" +(define_insn "_sqrt2" [(set (match_operand:VF 0 "register_operand" "=v") - (sqrt:VF (match_operand:VF 1 "nonimmediate_operand" "vm")))] - "TARGET_SSE && " - "%vsqrt\t{%1, %0|%0, %1}" + (sqrt:VF (match_operand:VF 1 "" "")))] + "TARGET_SSE && && " + "%vsqrt\t{%1, %0|%0, %1}" [(set_attr "type" "sse") (set_attr "atom_sse_attr" "sqrt") (set_attr "btver2_sse_attr" "sqrt") @@ -2741,210 +2741,224 @@ (match_operand:FMAMODE 3 "nonimmediate_operand")))] "") -(define_insn "fma_fmadd_" +(define_expand "avx512f_fmadd__maskz" + [(match_operand:VF_512 0 "register_operand") + (match_operand:VF_512 1 "nonimmediate_operand") + (match_operand:VF_512 2 "nonimmediate_operand") + (match_operand:VF_512 3 "nonimmediate_operand") + (match_operand: 4 "register_operand")] + "TARGET_AVX512F" +{ + emit_insn (gen_fma_fmadd__maskz_1 ( + operands[0], operands[1], operands[2], operands[3], + CONST0_RTX (mode), operands[4])); + DONE; +}) + +(define_insn "fma_fmadd_" [(set (match_operand:FMAMODE 0 "register_operand" "=v,v,v,x,x") (fma:FMAMODE - (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0, v, x,x") - (match_operand:FMAMODE 2 "nonimmediate_operand" "vm, v,vm, x,m") - (match_operand:FMAMODE 3 "nonimmediate_operand" " v,vm, 0,xm,x")))] - "" - "@ - vfmadd132\t{%2, %3, %0|%0, %3, %2} - vfmadd213\t{%3, %2, %0|%0, %2, %3} - vfmadd231\t{%2, %1, %0|%0, %1, %2} + (match_operand:FMAMODE 1 "" "%0,0,v,x,x") + (match_operand:FMAMODE 2 "" ",v,,x,m") + (match_operand:FMAMODE 3 "" "v,,0,xm,x")))] + " && " + "@ + vfmadd132\t{%2, %3, %0|%0, %3, %2} + vfmadd213\t{%3, %2, %0|%0, %2, %3} + vfmadd231\t{%2, %1, %0|%0, %1, %2} vfmadd\t{%3, %2, %1, %0|%0, %1, %2, %3} vfmadd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fmadd__mask" +(define_insn "avx512f_fmadd__mask" [(set (match_operand:VF_512 0 "register_operand" "=v,v") (vec_merge:VF_512 (fma:VF_512 (match_operand:VF_512 1 "register_operand" "0,0") - (match_operand:VF_512 2 "nonimmediate_operand" "vm,v") - (match_operand:VF_512 3 "nonimmediate_operand" "v,vm")) + (match_operand:VF_512 2 "" ",v") + (match_operand:VF_512 3 "" "v,")) (match_dup 1) (match_operand: 4 "register_operand" "k,k")))] "TARGET_AVX512F" "@ - vfmadd132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} - vfmadd213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" + vfmadd132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} + vfmadd213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fmadd__mask3" +(define_insn "avx512f_fmadd__mask3" [(set (match_operand:VF_512 0 "register_operand" "=x") (vec_merge:VF_512 (fma:VF_512 (match_operand:VF_512 1 "register_operand" "x") - (match_operand:VF_512 2 "nonimmediate_operand" "vm") + (match_operand:VF_512 2 "" "") (match_operand:VF_512 3 "register_operand" "0")) (match_dup 3) (match_operand: 4 "register_operand" "k")))] "TARGET_AVX512F" - "vfmadd231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" + "vfmadd231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" [(set_attr "isa" "fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "fma_fmsub_" +(define_insn "fma_fmsub_" [(set (match_operand:FMAMODE 0 "register_operand" "=v,v,v,x,x") (fma:FMAMODE - (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0, v, x,x") - (match_operand:FMAMODE 2 "nonimmediate_operand" "vm, v,vm, x,m") + (match_operand:FMAMODE 1 "" "%0, 0, v, x,x") + (match_operand:FMAMODE 2 "" ",v,,x,m") (neg:FMAMODE - (match_operand:FMAMODE 3 "nonimmediate_operand" " v,vm, 0,xm,x"))))] - "" + (match_operand:FMAMODE 3 "" "v,,0,xm,x"))))] + " && " "@ - vfmsub132\t{%2, %3, %0|%0, %3, %2} - vfmsub213\t{%3, %2, %0|%0, %2, %3} - vfmsub231\t{%2, %1, %0|%0, %1, %2} + vfmsub132\t{%2, %3, %0|%0, %3, %2} + vfmsub213\t{%3, %2, %0|%0, %2, %3} + vfmsub231\t{%2, %1, %0|%0, %1, %2} vfmsub\t{%3, %2, %1, %0|%0, %1, %2, %3} vfmsub\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fmsub__mask" +(define_insn "avx512f_fmsub__mask" [(set (match_operand:VF_512 0 "register_operand" "=v,v") (vec_merge:VF_512 (fma:VF_512 (match_operand:VF_512 1 "register_operand" "0,0") - (match_operand:VF_512 2 "nonimmediate_operand" "vm,v") + (match_operand:VF_512 2 "" ",v") (neg:VF_512 - (match_operand:VF_512 3 "nonimmediate_operand" "v,vm"))) + (match_operand:VF_512 3 "" "v,"))) (match_dup 1) (match_operand: 4 "register_operand" "k,k")))] "TARGET_AVX512F" "@ - vfmsub132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} - vfmsub213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" + vfmsub132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} + vfmsub213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fmsub__mask3" +(define_insn "avx512f_fmsub__mask3" [(set (match_operand:VF_512 0 "register_operand" "=v") (vec_merge:VF_512 (fma:VF_512 (match_operand:VF_512 1 "register_operand" "v") - (match_operand:VF_512 2 "nonimmediate_operand" "vm") + (match_operand:VF_512 2 "" "") (neg:VF_512 (match_operand:VF_512 3 "register_operand" "0"))) (match_dup 3) (match_operand: 4 "register_operand" "k")))] "TARGET_AVX512F" - "vfmsub231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" + "vfmsub231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" [(set_attr "isa" "fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "fma_fnmadd_" +(define_insn "fma_fnmadd_" [(set (match_operand:FMAMODE 0 "register_operand" "=v,v,v,x,x") (fma:FMAMODE (neg:FMAMODE - (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0, v, x,x")) - (match_operand:FMAMODE 2 "nonimmediate_operand" "vm, v,vm, x,m") - (match_operand:FMAMODE 3 "nonimmediate_operand" " v,vm, 0,xm,x")))] - "" - "@ - vfnmadd132\t{%2, %3, %0|%0, %3, %2} - vfnmadd213\t{%3, %2, %0|%0, %2, %3} - vfnmadd231\t{%2, %1, %0|%0, %1, %2} + (match_operand:FMAMODE 1 "" "%0,0,v,x,x")) + (match_operand:FMAMODE 2 "" ",v,,x,m") + (match_operand:FMAMODE 3 "" "v,,0,xm,x")))] + " && " + "@ + vfnmadd132\t{%2, %3, %0|%0, %3, %2} + vfnmadd213\t{%3, %2, %0|%0, %2, %3} + vfnmadd231\t{%2, %1, %0|%0, %1, %2} vfnmadd\t{%3, %2, %1, %0|%0, %1, %2, %3} vfnmadd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fnmadd__mask" +(define_insn "avx512f_fnmadd__mask" [(set (match_operand:VF_512 0 "register_operand" "=v,v") (vec_merge:VF_512 (fma:VF_512 (neg:VF_512 (match_operand:VF_512 1 "register_operand" "0,0")) - (match_operand:VF_512 2 "nonimmediate_operand" "vm,v") - (match_operand:VF_512 3 "nonimmediate_operand" "v,vm")) + (match_operand:VF_512 2 "" ",v") + (match_operand:VF_512 3 "" "v,")) (match_dup 1) (match_operand: 4 "register_operand" "k,k")))] "TARGET_AVX512F" "@ - vfnmadd132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} - vfnmadd213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" + vfnmadd132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} + vfnmadd213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fnmadd__mask3" +(define_insn "avx512f_fnmadd__mask3" [(set (match_operand:VF_512 0 "register_operand" "=v") (vec_merge:VF_512 (fma:VF_512 (neg:VF_512 (match_operand:VF_512 1 "register_operand" "v")) - (match_operand:VF_512 2 "nonimmediate_operand" "vm") + (match_operand:VF_512 2 "" "") (match_operand:VF_512 3 "register_operand" "0")) (match_dup 3) (match_operand: 4 "register_operand" "k")))] "TARGET_AVX512F" - "vfnmadd231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" + "vfnmadd231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" [(set_attr "isa" "fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "fma_fnmsub_" +(define_insn "fma_fnmsub_" [(set (match_operand:FMAMODE 0 "register_operand" "=v,v,v,x,x") (fma:FMAMODE (neg:FMAMODE - (match_operand:FMAMODE 1 "nonimmediate_operand" "%0, 0, v, x,x")) - (match_operand:FMAMODE 2 "nonimmediate_operand" "vm, v,vm, x,m") + (match_operand:FMAMODE 1 "" "%0,0,v,x,x")) + (match_operand:FMAMODE 2 "" ",v,,x,m") (neg:FMAMODE - (match_operand:FMAMODE 3 "nonimmediate_operand" " v,vm, 0,xm,x"))))] - "" + (match_operand:FMAMODE 3 "" "v,,0,xm,x"))))] + " && " "@ - vfnmsub132\t{%2, %3, %0|%0, %3, %2} - vfnmsub213\t{%3, %2, %0|%0, %2, %3} - vfnmsub231\t{%2, %1, %0|%0, %1, %2} + vfnmsub132\t{%2, %3, %0|%0, %3, %2} + vfnmsub213\t{%3, %2, %0|%0, %2, %3} + vfnmsub231\t{%2, %1, %0|%0, %1, %2} vfnmsub\t{%3, %2, %1, %0|%0, %1, %2, %3} vfnmsub\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fnmsub__mask" +(define_insn "avx512f_fnmsub__mask" [(set (match_operand:VF_512 0 "register_operand" "=v,v") (vec_merge:VF_512 (fma:VF_512 (neg:VF_512 (match_operand:VF_512 1 "register_operand" "0,0")) - (match_operand:VF_512 2 "nonimmediate_operand" "vm,v") + (match_operand:VF_512 2 "" ",v") (neg:VF_512 - (match_operand:VF_512 3 "nonimmediate_operand" "v,vm"))) + (match_operand:VF_512 3 "" "v,"))) (match_dup 1) (match_operand: 4 "register_operand" "k,k")))] "TARGET_AVX512F" "@ - vfnmsub132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} - vfnmsub213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" + vfnmsub132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} + vfnmsub213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fnmsub__mask3" +(define_insn "avx512f_fnmsub__mask3" [(set (match_operand:VF_512 0 "register_operand" "=v") (vec_merge:VF_512 (fma:VF_512 (neg:VF_512 (match_operand:VF_512 1 "register_operand" "v")) - (match_operand:VF_512 2 "nonimmediate_operand" "vm") + (match_operand:VF_512 2 "" "") (neg:VF_512 (match_operand:VF_512 3 "register_operand" "0"))) (match_dup 3) (match_operand: 4 "register_operand" "k")))] "TARGET_AVX512F" - "vfnmsub231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" + "vfnmsub231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" [(set_attr "isa" "fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) @@ -2983,109 +2997,109 @@ DONE; }) -(define_insn "fma_fmaddsub_" +(define_insn "fma_fmaddsub_" [(set (match_operand:VF 0 "register_operand" "=v,v,v,x,x") (unspec:VF - [(match_operand:VF 1 "nonimmediate_operand" "%0, 0, v, x,x") - (match_operand:VF 2 "nonimmediate_operand" "vm, v,vm, x,m") - (match_operand:VF 3 "nonimmediate_operand" " v,vm, 0,xm,x")] + [(match_operand:VF 1 "" "%0,0,v,x,x") + (match_operand:VF 2 "" ",v,,x,m") + (match_operand:VF 3 "" "v,,0,xm,x")] UNSPEC_FMADDSUB))] - "(TARGET_FMA || TARGET_FMA4 || TARGET_AVX512F) && " + "(TARGET_FMA || TARGET_FMA4 || TARGET_AVX512F) && && " "@ - vfmaddsub132\t{%2, %3, %0|%0, %3, %2} - vfmaddsub213\t{%3, %2, %0|%0, %2, %3} - vfmaddsub231\t{%2, %1, %0|%0, %1, %2} + vfmaddsub132\t{%2, %3, %0|%0, %3, %2} + vfmaddsub213\t{%3, %2, %0|%0, %2, %3} + vfmaddsub231\t{%2, %1, %0|%0, %1, %2} vfmaddsub\t{%3, %2, %1, %0|%0, %1, %2, %3} vfmaddsub\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fmaddsub__mask" +(define_insn "avx512f_fmaddsub__mask" [(set (match_operand:VF_512 0 "register_operand" "=v,v") (vec_merge:VF_512 (unspec:VF_512 [(match_operand:VF_512 1 "register_operand" "0,0") - (match_operand:VF_512 2 "nonimmediate_operand" "vm,v") - (match_operand:VF_512 3 "nonimmediate_operand" "v,vm")] + (match_operand:VF_512 2 "" ",v") + (match_operand:VF_512 3 "" "v,")] UNSPEC_FMADDSUB) (match_dup 1) (match_operand: 4 "register_operand" "k,k")))] "TARGET_AVX512F" "@ - vfmaddsub132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} - vfmaddsub213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" + vfmaddsub132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} + vfmaddsub213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fmaddsub__mask3" +(define_insn "avx512f_fmaddsub__mask3" [(set (match_operand:VF_512 0 "register_operand" "=v") (vec_merge:VF_512 (unspec:VF_512 [(match_operand:VF_512 1 "register_operand" "v") - (match_operand:VF_512 2 "nonimmediate_operand" "vm") + (match_operand:VF_512 2 "" "") (match_operand:VF_512 3 "register_operand" "0")] UNSPEC_FMADDSUB) (match_dup 3) (match_operand: 4 "register_operand" "k")))] "TARGET_AVX512F" - "vfmaddsub231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" + "vfmaddsub231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" [(set_attr "isa" "fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "fma_fmsubadd_" +(define_insn "fma_fmsubadd_" [(set (match_operand:VF 0 "register_operand" "=v,v,v,x,x") (unspec:VF - [(match_operand:VF 1 "nonimmediate_operand" "%0, 0, v, x,x") - (match_operand:VF 2 "nonimmediate_operand" "vm, v,vm, x,m") + [(match_operand:VF 1 "" "%0,0,v,x,x") + (match_operand:VF 2 "" ",v,,x,m") (neg:VF - (match_operand:VF 3 "nonimmediate_operand" " v,vm, 0,xm,x"))] + (match_operand:VF 3 "" "v,,0,xm,x"))] UNSPEC_FMADDSUB))] - "(TARGET_FMA || TARGET_FMA4 || TARGET_AVX512F) && " + "(TARGET_FMA || TARGET_FMA4 || TARGET_AVX512F) && && " "@ - vfmsubadd132\t{%2, %3, %0|%0, %3, %2} - vfmsubadd213\t{%3, %2, %0|%0, %2, %3} - vfmsubadd231\t{%2, %1, %0|%0, %1, %2} + vfmsubadd132\t{%2, %3, %0|%0, %3, %2} + vfmsubadd213\t{%3, %2, %0|%0, %2, %3} + vfmsubadd231\t{%2, %1, %0|%0, %1, %2} vfmsubadd\t{%3, %2, %1, %0|%0, %1, %2, %3} vfmsubadd\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f,fma_avx512f,fma4,fma4") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fmsubadd__mask" +(define_insn "avx512f_fmsubadd__mask" [(set (match_operand:VF_512 0 "register_operand" "=v,v") (vec_merge:VF_512 (unspec:VF_512 [(match_operand:VF_512 1 "register_operand" "0,0") - (match_operand:VF_512 2 "nonimmediate_operand" "vm,v") + (match_operand:VF_512 2 "" ",v") (neg:VF_512 - (match_operand:VF_512 3 "nonimmediate_operand" "v,vm"))] + (match_operand:VF_512 3 "" "v,"))] UNSPEC_FMADDSUB) (match_dup 1) (match_operand: 4 "register_operand" "k,k")))] "TARGET_AVX512F" "@ - vfmsubadd132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} - vfmsubadd213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" + vfmsubadd132\t{%2, %3, %0%{%4%}|%0%{%4%}, %3, %2} + vfmsubadd213\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" [(set_attr "isa" "fma_avx512f,fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "avx512f_fmsubadd__mask3" +(define_insn "avx512f_fmsubadd__mask3" [(set (match_operand:VF_512 0 "register_operand" "=v") (vec_merge:VF_512 (unspec:VF_512 [(match_operand:VF_512 1 "register_operand" "v") - (match_operand:VF_512 2 "nonimmediate_operand" "vm") + (match_operand:VF_512 2 "" "") (neg:VF_512 (match_operand:VF_512 3 "register_operand" "0"))] UNSPEC_FMADDSUB) (match_dup 3) (match_operand: 4 "register_operand" "k")))] "TARGET_AVX512F" - "vfmsubadd231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" + "vfmsubadd231\t{%2, %1, %0%{%4%}|%0%{%4%}, %1, %2}" [(set_attr "isa" "fma_avx512f") (set_attr "type" "ssemuladd") (set_attr "mode" "")]) @@ -3093,13 +3107,13 @@ ;; FMA3 floating point scalar intrinsics. These merge result with ;; high-order elements from the destination register. -(define_expand "fmai_vmfmadd_" +(define_expand "fmai_vmfmadd_" [(set (match_operand:VF_128 0 "register_operand") (vec_merge:VF_128 (fma:VF_128 - (match_operand:VF_128 1 "nonimmediate_operand") - (match_operand:VF_128 2 "nonimmediate_operand") - (match_operand:VF_128 3 "nonimmediate_operand")) + (match_operand:VF_128 1 "") + (match_operand:VF_128 2 "") + (match_operand:VF_128 3 "")) (match_dup 1) (const_int 1)))] "TARGET_FMA") @@ -3108,15 +3122,15 @@ [(set (match_operand:VF_128 0 "register_operand" "=v,v") (vec_merge:VF_128 (fma:VF_128 - (match_operand:VF_128 1 "nonimmediate_operand" " 0, 0") - (match_operand:VF_128 2 "nonimmediate_operand" "vm, v") - (match_operand:VF_128 3 "nonimmediate_operand" " v,vm")) + (match_operand:VF_128 1 "" " 0, 0") + (match_operand:VF_128 2 "" ", v") + (match_operand:VF_128 3 "" " v,")) (match_dup 1) (const_int 1)))] "TARGET_FMA || TARGET_AVX512F" "@ - vfmadd132\t{%2, %3, %0|%0, %3, %2} - vfmadd213\t{%3, %2, %0|%0, %2, %3}" + vfmadd132\t{%2, %3, %0|%0, %3, %2} + vfmadd213\t{%3, %2, %0|%0, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "")]) @@ -3124,51 +3138,51 @@ [(set (match_operand:VF_128 0 "register_operand" "=v,v") (vec_merge:VF_128 (fma:VF_128 - (match_operand:VF_128 1 "nonimmediate_operand" " 0, 0") - (match_operand:VF_128 2 "nonimmediate_operand" "vm, v") + (match_operand:VF_128 1 "" "0,0") + (match_operand:VF_128 2 "" ",v") (neg:VF_128 - (match_operand:VF_128 3 "nonimmediate_operand" " v,vm"))) + (match_operand:VF_128 3 "" " v,"))) (match_dup 1) (const_int 1)))] "TARGET_FMA || TARGET_AVX512F" "@ - vfmsub132\t{%2, %3, %0|%0, %3, %2} - vfmsub213\t{%3, %2, %0|%0, %2, %3}" + vfmsub132\t{%2, %3, %0|%0, %3, %2} + vfmsub213\t{%3, %2, %0|%0, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "*fmai_fnmadd_" +(define_insn "*fmai_fnmadd_" [(set (match_operand:VF_128 0 "register_operand" "=v,v") (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "nonimmediate_operand" "vm, v")) - (match_operand:VF_128 1 "nonimmediate_operand" " 0, 0") - (match_operand:VF_128 3 "nonimmediate_operand" " v,vm")) + (match_operand:VF_128 2 "" ",v")) + (match_operand:VF_128 1 "" "0,0") + (match_operand:VF_128 3 "" "v,")) (match_dup 1) (const_int 1)))] "TARGET_FMA || TARGET_AVX512F" "@ - vfnmadd132\t{%2, %3, %0|%0, %3, %2} - vfnmadd213\t{%3, %2, %0|%0, %2, %3}" + vfnmadd132\t{%2, %3, %0|%0, %3, %2} + vfnmadd213\t{%3, %2, %0|%0, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "*fmai_fnmsub_" +(define_insn "*fmai_fnmsub_" [(set (match_operand:VF_128 0 "register_operand" "=v,v") (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "nonimmediate_operand" "vm, v")) - (match_operand:VF_128 1 "nonimmediate_operand" " 0, 0") + (match_operand:VF_128 2 "" ", v")) + (match_operand:VF_128 1 "" " 0, 0") (neg:VF_128 - (match_operand:VF_128 3 "nonimmediate_operand" " v,vm"))) + (match_operand:VF_128 3 "" " v,"))) (match_dup 1) (const_int 1)))] "TARGET_FMA || TARGET_AVX512F" "@ - vfnmsub132\t{%2, %3, %0|%0, %3, %2} - vfnmsub213\t{%3, %2, %0|%0, %2, %3}" + vfnmsub132\t{%2, %3, %0|%0, %3, %2} + vfnmsub213\t{%3, %2, %0|%0, %2, %3}" [(set_attr "type" "ssemuladd") (set_attr "mode" "")]) @@ -3289,18 +3303,18 @@ (set_attr "prefix_rep" "0") (set_attr "mode" "SF")]) -(define_insn "sse_cvtsi2ss" +(define_insn "sse_cvtsi2ss" [(set (match_operand:V4SF 0 "register_operand" "=x,x,v") (vec_merge:V4SF (vec_duplicate:V4SF - (float:SF (match_operand:SI 2 "nonimmediate_operand" "r,m,rm"))) + (float:SF (match_operand:SI 2 "" "r,m,"))) (match_operand:V4SF 1 "register_operand" "0,0,v") (const_int 1)))] "TARGET_SSE" "@ cvtsi2ss\t{%2, %0|%0, %2} cvtsi2ss\t{%2, %0|%0, %2} - vcvtsi2ss\t{%2, %1, %0|%0, %1, %2}" + vcvtsi2ss\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,noavx,avx") (set_attr "type" "sseicvt") (set_attr "athlon_decode" "vector,double,*") @@ -3310,18 +3324,18 @@ (set_attr "prefix" "orig,orig,maybe_evex") (set_attr "mode" "SF")]) -(define_insn "sse_cvtsi2ssq" +(define_insn "sse_cvtsi2ssq" [(set (match_operand:V4SF 0 "register_operand" "=x,x,v") (vec_merge:V4SF (vec_duplicate:V4SF - (float:SF (match_operand:DI 2 "nonimmediate_operand" "r,m,rm"))) + (float:SF (match_operand:DI 2 "" "r,m,"))) (match_operand:V4SF 1 "register_operand" "0,0,v") (const_int 1)))] "TARGET_SSE && TARGET_64BIT" "@ cvtsi2ssq\t{%2, %0|%0, %2} cvtsi2ssq\t{%2, %0|%0, %2} - vcvtsi2ssq\t{%2, %1, %0|%0, %1, %2}" + vcvtsi2ssq\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,noavx,avx") (set_attr "type" "sseicvt") (set_attr "athlon_decode" "vector,double,*") @@ -3333,15 +3347,15 @@ (set_attr "prefix" "orig,orig,maybe_evex") (set_attr "mode" "SF")]) -(define_insn "sse_cvtss2si" +(define_insn "sse_cvtss2si" [(set (match_operand:SI 0 "register_operand" "=r,r") (unspec:SI [(vec_select:SF - (match_operand:V4SF 1 "nonimmediate_operand" "v,m") + (match_operand:V4SF 1 "" "v,") (parallel [(const_int 0)]))] UNSPEC_FIX_NOTRUNC))] "TARGET_SSE" - "%vcvtss2si\t{%1, %0|%0, %k1}" + "%vcvtss2si\t{%1, %0|%0, %k1}" [(set_attr "type" "sseicvt") (set_attr "athlon_decode" "double,vector") (set_attr "bdver1_decode" "double,double") @@ -3363,15 +3377,15 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "SI")]) -(define_insn "sse_cvtss2siq" +(define_insn "sse_cvtss2siq" [(set (match_operand:DI 0 "register_operand" "=r,r") (unspec:DI [(vec_select:SF - (match_operand:V4SF 1 "nonimmediate_operand" "v,m") + (match_operand:V4SF 1 "" "v,") (parallel [(const_int 0)]))] UNSPEC_FIX_NOTRUNC))] "TARGET_SSE && TARGET_64BIT" - "%vcvtss2si{q}\t{%1, %0|%0, %k1}" + "%vcvtss2si{q}\t{%1, %0|%0, %k1}" [(set_attr "type" "sseicvt") (set_attr "athlon_decode" "double,vector") (set_attr "bdver1_decode" "double,double") @@ -3425,50 +3439,50 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "DI")]) -(define_insn "cvtusi232" +(define_insn "cvtusi232" [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (vec_duplicate:VF_128 (unsigned_float: - (match_operand:SI 2 "nonimmediate_operand" "rm"))) + (match_operand:SI 2 "" ""))) (match_operand:VF_128 1 "register_operand" "v") (const_int 1)))] - "TARGET_AVX512F" - "vcvtusi2\t{%2, %1, %0|%0, %1, %2}" + "TARGET_AVX512F && " + "vcvtusi2\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "cvtusi264" +(define_insn "cvtusi264" [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (vec_duplicate:VF_128 (unsigned_float: - (match_operand:DI 2 "nonimmediate_operand" "rm"))) + (match_operand:DI 2 "" ""))) (match_operand:VF_128 1 "register_operand" "v") (const_int 1)))] "TARGET_AVX512F && TARGET_64BIT" - "vcvtusi2\t{%2, %1, %0|%0, %1, %2}" + "vcvtusi2\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "float2" +(define_insn "float2" [(set (match_operand:VF1 0 "register_operand" "=v") (float:VF1 - (match_operand: 1 "nonimmediate_operand" "vm")))] - "TARGET_SSE2 && " - "%vcvtdq2ps\t{%1, %0|%0, %1}" + (match_operand: 1 "" "")))] + "TARGET_SSE2 && && " + "%vcvtdq2ps\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "maybe_vex") (set_attr "mode" "")]) -(define_insn "ufloatv16siv16sf2" +(define_insn "ufloatv16siv16sf2" [(set (match_operand:V16SF 0 "register_operand" "=v") (unsigned_float:V16SF - (match_operand:V16SI 1 "nonimmediate_operand" "vm")))] + (match_operand:V16SI 1 "" "")))] "TARGET_AVX512F" - "vcvtudq2ps\t{%1, %0|%0, %1}" + "vcvtudq2ps\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "evex") (set_attr "mode" "V16SF")]) @@ -3503,24 +3517,24 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "")]) -(define_insn "avx512f_fix_notruncv16sfv16si" +(define_insn "avx512f_fix_notruncv16sfv16si" [(set (match_operand:V16SI 0 "register_operand" "=v") (unspec:V16SI - [(match_operand:V16SF 1 "nonimmediate_operand" "vm")] + [(match_operand:V16SF 1 "" "")] UNSPEC_FIX_NOTRUNC))] "TARGET_AVX512F" - "vcvtps2dq\t{%1, %0|%0, %1}" + "vcvtps2dq\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "evex") (set_attr "mode" "XI")]) -(define_insn "avx512f_ufix_notruncv16sfv16si" +(define_insn "avx512f_ufix_notruncv16sfv16si" [(set (match_operand:V16SI 0 "register_operand" "=v") (unspec:V16SI - [(match_operand:V16SF 1 "nonimmediate_operand" "vm")] + [(match_operand:V16SF 1 "" "")] UNSPEC_UNSIGNED_FIX_NOTRUNC))] "TARGET_AVX512F" - "vcvtps2udq\t{%1, %0|%0, %1}" + "vcvtps2udq\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "evex") (set_attr "mode" "XI")]) @@ -3638,18 +3652,18 @@ (set_attr "prefix" "orig,orig,vex") (set_attr "mode" "DF")]) -(define_insn "sse2_cvtsi2sdq" +(define_insn "sse2_cvtsi2sdq" [(set (match_operand:V2DF 0 "register_operand" "=x,x,v") (vec_merge:V2DF (vec_duplicate:V2DF - (float:DF (match_operand:DI 2 "nonimmediate_operand" "r,m,rm"))) + (float:DF (match_operand:DI 2 "" "r,m,"))) (match_operand:V2DF 1 "register_operand" "0,0,v") (const_int 1)))] "TARGET_SSE2 && TARGET_64BIT" "@ cvtsi2sdq\t{%2, %0|%0, %2} cvtsi2sdq\t{%2, %0|%0, %2} - vcvtsi2sdq\t{%2, %1, %0|%0, %1, %2}" + vcvtsi2sdq\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,noavx,avx") (set_attr "type" "sseicvt") (set_attr "athlon_decode" "double,direct,*") @@ -3660,28 +3674,28 @@ (set_attr "prefix" "orig,orig,maybe_evex") (set_attr "mode" "DF")]) -(define_insn "avx512f_vcvtss2usi" +(define_insn "avx512f_vcvtss2usi" [(set (match_operand:SI 0 "register_operand" "=r") (unspec:SI [(vec_select:SF - (match_operand:V4SF 1 "nonimmediate_operand" "vm") + (match_operand:V4SF 1 "" "") (parallel [(const_int 0)]))] UNSPEC_UNSIGNED_FIX_NOTRUNC))] "TARGET_AVX512F" - "vcvtss2usi\t{%1, %0|%0, %1}" + "vcvtss2usi\t{%1, %0|%0, %1}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "SI")]) -(define_insn "avx512f_vcvtss2usiq" +(define_insn "avx512f_vcvtss2usiq" [(set (match_operand:DI 0 "register_operand" "=r") (unspec:DI [(vec_select:SF - (match_operand:V4SF 1 "nonimmediate_operand" "vm") + (match_operand:V4SF 1 "" "") (parallel [(const_int 0)]))] UNSPEC_UNSIGNED_FIX_NOTRUNC))] "TARGET_AVX512F && TARGET_64BIT" - "vcvtss2usi\t{%1, %0|%0, %1}" + "vcvtss2usi\t{%1, %0|%0, %1}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "DI")]) @@ -3710,28 +3724,28 @@ (set_attr "prefix" "evex") (set_attr "mode" "DI")]) -(define_insn "avx512f_vcvtsd2usi" +(define_insn "avx512f_vcvtsd2usi" [(set (match_operand:SI 0 "register_operand" "=r") (unspec:SI [(vec_select:DF - (match_operand:V2DF 1 "nonimmediate_operand" "vm") + (match_operand:V2DF 1 "" "") (parallel [(const_int 0)]))] UNSPEC_UNSIGNED_FIX_NOTRUNC))] "TARGET_AVX512F" - "vcvtsd2usi\t{%1, %0|%0, %1}" + "vcvtsd2usi\t{%1, %0|%0, %1}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "SI")]) -(define_insn "avx512f_vcvtsd2usiq" +(define_insn "avx512f_vcvtsd2usiq" [(set (match_operand:DI 0 "register_operand" "=r") (unspec:DI [(vec_select:DF - (match_operand:V2DF 1 "nonimmediate_operand" "vm") + (match_operand:V2DF 1 "" "") (parallel [(const_int 0)]))] UNSPEC_UNSIGNED_FIX_NOTRUNC))] "TARGET_AVX512F && TARGET_64BIT" - "vcvtsd2usi\t{%1, %0|%0, %1}" + "vcvtsd2usi\t{%1, %0|%0, %1}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "DI")]) @@ -3760,15 +3774,15 @@ (set_attr "prefix" "evex") (set_attr "mode" "DI")]) -(define_insn "sse2_cvtsd2si" +(define_insn "sse2_cvtsd2si" [(set (match_operand:SI 0 "register_operand" "=r,r") (unspec:SI [(vec_select:DF - (match_operand:V2DF 1 "nonimmediate_operand" "v,m") + (match_operand:V2DF 1 "" "v,") (parallel [(const_int 0)]))] UNSPEC_FIX_NOTRUNC))] "TARGET_SSE2" - "%vcvtsd2si\t{%1, %0|%0, %q1}" + "%vcvtsd2si\t{%1, %0|%0, %q1}" [(set_attr "type" "sseicvt") (set_attr "athlon_decode" "double,vector") (set_attr "bdver1_decode" "double,double") @@ -3791,15 +3805,15 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "SI")]) -(define_insn "sse2_cvtsd2siq" +(define_insn "sse2_cvtsd2siq" [(set (match_operand:DI 0 "register_operand" "=r,r") (unspec:DI [(vec_select:DF - (match_operand:V2DF 1 "nonimmediate_operand" "v,m") + (match_operand:V2DF 1 "" "v,") (parallel [(const_int 0)]))] UNSPEC_FIX_NOTRUNC))] "TARGET_SSE2 && TARGET_64BIT" - "%vcvtsd2si{q}\t{%1, %0|%0, %q1}" + "%vcvtsd2si{q}\t{%1, %0|%0, %q1}" [(set_attr "type" "sseicvt") (set_attr "athlon_decode" "double,vector") (set_attr "bdver1_decode" "double,double") @@ -3920,13 +3934,13 @@ (set_attr "ssememalign" "64") (set_attr "mode" "V2DF")]) -(define_insn "avx512f_cvtpd2dq512" +(define_insn "avx512f_cvtpd2dq512" [(set (match_operand:V8SI 0 "register_operand" "=v") (unspec:V8SI - [(match_operand:V8DF 1 "nonimmediate_operand" "vm")] + [(match_operand:V8DF 1 "" "")] UNSPEC_FIX_NOTRUNC))] "TARGET_AVX512F" - "vcvtpd2dq\t{%1, %0|%0, %1}" + "vcvtpd2dq\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "evex") (set_attr "mode" "OI")]) @@ -3994,13 +4008,13 @@ (set_attr "athlon_decode" "vector") (set_attr "bdver1_decode" "double")]) -(define_insn "avx512f_ufix_notruncv8dfv8si" +(define_insn "avx512f_ufix_notruncv8dfv8si" [(set (match_operand:V8SI 0 "register_operand" "=v") (unspec:V8SI - [(match_operand:V8DF 1 "nonimmediate_operand" "vm")] + [(match_operand:V8DF 1 "" "")] UNSPEC_UNSIGNED_FIX_NOTRUNC))] "TARGET_AVX512F" - "vcvtpd2udq\t{%1, %0|%0, %1}" + "vcvtpd2udq\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "evex") (set_attr "mode" "OI")]) @@ -4116,12 +4130,12 @@ (set_attr "prefix" "orig,orig,vex") (set_attr "mode" "DF")]) -(define_insn "avx512f_cvtpd2ps512" +(define_insn "avx512f_cvtpd2ps512" [(set (match_operand:V8SF 0 "register_operand" "=v") (float_truncate:V8SF - (match_operand:V8DF 1 "nonimmediate_operand" "vm")))] + (match_operand:V8DF 1 "" "")))] "TARGET_AVX512F" - "vcvtpd2ps\t{%1, %0|%0, %1}" + "vcvtpd2ps\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "evex") (set_attr "mode" "V8SF")]) @@ -6489,14 +6503,14 @@ [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_scalef" +(define_insn "avx512f_scalef" [(set (match_operand:VF_512 0 "register_operand" "=v") (unspec:VF_512 [(match_operand:VF_512 1 "register_operand" "v") - (match_operand:VF_512 2 "nonimmediate_operand" "vm")] + (match_operand:VF_512 2 "" "")] UNSPEC_SCALEF))] "TARGET_AVX512F" - "%vscalef\t{%2, %1, %0|%0, %1, %2}" + "%vscalef\t{%2, %1, %0|%0, %1, %2}" [(set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -8230,22 +8244,22 @@ [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_expand "3" +(define_expand "3" [(set (match_operand:VI124_256_48_512 0 "register_operand") (maxmin:VI124_256_48_512 - (match_operand:VI124_256_48_512 1 "nonimmediate_operand") - (match_operand:VI124_256_48_512 2 "nonimmediate_operand")))] - "TARGET_AVX2 && " + (match_operand:VI124_256_48_512 1 "") + (match_operand:VI124_256_48_512 2 "")))] + "TARGET_AVX2 && && " "ix86_fixup_binary_operands_no_copy (, mode, operands);") -(define_insn "*avx2_3" +(define_insn "*avx2_3" [(set (match_operand:VI124_256_48_512 0 "register_operand" "=v") (maxmin:VI124_256_48_512 - (match_operand:VI124_256_48_512 1 "nonimmediate_operand" "%v") - (match_operand:VI124_256_48_512 2 "nonimmediate_operand" "vm")))] + (match_operand:VI124_256_48_512 1 "" "%v") + (match_operand:VI124_256_48_512 2 "" "")))] "TARGET_AVX2 && ix86_binary_operator_ok (, mode, operands) - && " - "vp\t{%2, %1, %0|%0, %1, %2}" + && && " + "vp\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sseiadd") (set_attr "prefix_extra" "1") (set_attr "prefix" "maybe_evex") @@ -12543,33 +12557,33 @@ (set_attr "prefix" "evex") (set_attr "mode" "XI")]) -(define_insn "avx512er_exp2" +(define_insn "avx512er_exp2" [(set (match_operand:VF_512 0 "register_operand" "=v") (unspec:VF_512 - [(match_operand:VF_512 1 "nonimmediate_operand" "vm")] + [(match_operand:VF_512 1 "" "")] UNSPEC_EXP2))] "TARGET_AVX512ER" - "vexp2\t{%1, %0|%0, %1}" + "vexp2\t{%1, %0|%0, %1}" [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512er_rcp28" +(define_insn "avx512er_rcp28" [(set (match_operand:VF_512 0 "register_operand" "=v") (unspec:VF_512 - [(match_operand:VF_512 1 "nonimmediate_operand" "vm")] + [(match_operand:VF_512 1 "" "")] UNSPEC_RCP28))] "TARGET_AVX512ER" - "vrcp28\t{%1, %0|%0, %1}" + "vrcp28\t{%1, %0|%0, %1}" [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512er_rsqrt28" +(define_insn "avx512er_rsqrt28" [(set (match_operand:VF_512 0 "register_operand" "=v") (unspec:VF_512 - [(match_operand:VF_512 1 "nonimmediate_operand" "vm")] + [(match_operand:VF_512 1 "" "")] UNSPEC_RSQRT28))] "TARGET_AVX512ER" - "vrsqrt28\t{%1, %0|%0, %1}" + "vrsqrt28\t{%1, %0|%0, %1}" [(set_attr "prefix" "evex") (set_attr "mode" "")]) diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md index 594dc438922..b20cf20f95d 100644 --- a/gcc/config/i386/subst.md +++ b/gcc/config/i386/subst.md @@ -30,6 +30,16 @@ (define_mode_iterator SUBST_S [QI HI SI DI]) +(define_mode_iterator SUBST_A + [V16QI + V16HI V8HI + V16SI V8SI V4SI + V8DI V4DI V2DI + V16SF V8SF V4SF + V8DF V4DF V2DF + QI HI SI DI SF DF + CCFP CCFPU]) + (define_subst_attr "mask_name" "mask" "" "_mask") (define_subst_attr "mask_applied" "mask" "false" "true") (define_subst_attr "mask_operand2" "mask" "" "%{%3%}%N2") @@ -87,3 +97,35 @@ (match_operand:SUBST_V 2 "const0_operand" "C") (match_operand: 3 "register_operand" "k"))) ]) + +(define_subst_attr "round_name" "round" "" "_round") +(define_subst_attr "round_mask_operand2" "mask" "%R2" "%R4") +(define_subst_attr "round_mask_operand3" "mask" "%R3" "%R5") +(define_subst_attr "round_mask_scalar_operand3" "mask_scalar" "%R3" "%R5") +(define_subst_attr "round_sd_mask_operand4" "sd" "%R4" "%R6") +(define_subst_attr "round_op2" "round" "" "%R2") +(define_subst_attr "round_op3" "round" "" "%R3") +(define_subst_attr "round_op4" "round" "" "%R4") +(define_subst_attr "round_op5" "round" "" "%R5") +(define_subst_attr "round_op6" "round" "" "%R6") +(define_subst_attr "round_mask_op2" "round" "" "") +(define_subst_attr "round_mask_op3" "round" "" "") +(define_subst_attr "round_mask_scalar_op3" "round" "" "") +(define_subst_attr "round_sd_mask_op4" "round" "" "") +(define_subst_attr "round_constraint" "round" "vm" "v") +(define_subst_attr "round_constraint2" "round" "m" "v") +(define_subst_attr "round_constraint3" "round" "rm" "r") +(define_subst_attr "round_nimm_predicate" "round" "nonimmediate_operand" "register_operand") +(define_subst_attr "round_mode512bit_condition" "round" "1" "(GET_MODE (operands[0]) == V16SFmode || GET_MODE (operands[0]) == V8DFmode)") +(define_subst_attr "round_modev4sf_condition" "round" "1" "(GET_MODE (operands[0]) == V4SFmode)") +(define_subst_attr "round_codefor" "round" "*" "") +(define_subst_attr "round_opnum" "round" "5" "6") + +(define_subst "round" + [(set (match_operand:SUBST_A 0) + (match_operand:SUBST_A 1))] + "TARGET_AVX512F" + [(parallel[ + (set (match_dup 0) + (match_dup 1)) + (unspec [(match_operand:SI 2 "const_0_to_4_operand")] UNSPEC_EMBEDDED_ROUNDING)])]) -- cgit v1.2.1 From dbfe84d56ae04bb319da66414381c3458b0b89bc Mon Sep 17 00:00:00 2001 From: kyukhin Date: Fri, 27 Dec 2013 14:22:35 +0000 Subject: * config/i386/sse.md (3): Extend to support EVEX's SAE mode. (*3_finite): Ditto. (*3): Ditto. (avx512f_cmp3): Ditto. (avx512f_vmcmp3): Ditto. (avx512f_vmcmp3_mask): Ditto. (_comi): Ditto. (_ucomi): Ditto. (sse_cvttss2si): Ditto. (sse_cvttss2siq): Ditto. (fix_truncv16sfv16si2): Ditto. (avx512f_vcvttss2usi): Ditto. (avx512f_vcvttss2usiq): Ditto. (avx512f_vcvttsd2usi): Ditto. (avx512f_vcvttsd2usiq): Ditto. (sse2_cvttsd2si): Ditto. (sse2_cvttsd2siq): Ditto. (fix_truncv8dfv8si2): Ditto. (_cvtps2pd): Ditto. (avx512f_getexp): Ditto. (avx512f_fixupimm): Ditto. (avx512f_fixupimm_mask): Ditto. (avx512f_sfixupimm): Ditto. (avx512f_sfixupimm_mask): Ditto. (avx512f_rndscale): Ditto. (avx512f_vcvtph2ps512): Ditto. (avx512f_getmant): Ditto. * config/i386/subst.md (round_saeonly_name): New. (round_saeonly_mask_operand2): Ditto. (round_saeonly_mask_operand3): Ditto. (round_saeonly_mask_scalar_operand3): Ditto. (round_saeonly_mask_scalar_operand4): Ditto. (round_saeonly_mask_scalar_merge_operand4): Ditto. (round_saeonly_sd_mask_operand5): Ditto. (round_saeonly_op2): Ditto. (round_saeonly_op4): Ditto. (round_saeonly_op5): Ditto. (round_saeonly_op6): Ditto. (round_saeonly_mask_op2): Ditto. (round_saeonly_mask_op3): Ditto. (round_saeonly_mask_scalar_op3): Ditto. (round_saeonly_mask_scalar_op4): Ditto. (round_saeonly_mask_scalar_merge_op4): Ditto. (round_saeonly_sd_mask_op5): Ditto. (round_saeonly_constraint): Ditto. (round_saeonly_constraint2): Ditto. (round_saeonly_nimm_predicate): Ditto. (round_saeonly_mode512bit_condition): Ditto. (round_saeonly): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206221 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 61 +++++++++++++++++ gcc/config/i386/sse.md | 174 +++++++++++++++++++++++------------------------ gcc/config/i386/subst.md | 31 +++++++++ 3 files changed, 179 insertions(+), 87 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index afc4cc13862..88e65b5cf60 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,64 @@ +2013-12-27 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (3): Extend to support + EVEX's SAE mode. + (*3_finite): Ditto. + (*3): Ditto. + (avx512f_cmp3): Ditto. + (avx512f_vmcmp3): Ditto. + (avx512f_vmcmp3_mask): Ditto. + (_comi): Ditto. + (_ucomi): Ditto. + (sse_cvttss2si): Ditto. + (sse_cvttss2siq): Ditto. + (fix_truncv16sfv16si2): Ditto. + (avx512f_vcvttss2usi): Ditto. + (avx512f_vcvttss2usiq): Ditto. + (avx512f_vcvttsd2usi): Ditto. + (avx512f_vcvttsd2usiq): Ditto. + (sse2_cvttsd2si): Ditto. + (sse2_cvttsd2siq): Ditto. + (fix_truncv8dfv8si2): Ditto. + (_cvtps2pd): Ditto. + (avx512f_getexp): Ditto. + (avx512f_fixupimm): Ditto. + (avx512f_fixupimm_mask): Ditto. + (avx512f_sfixupimm): Ditto. + (avx512f_sfixupimm_mask): Ditto. + (avx512f_rndscale): Ditto. + (avx512f_vcvtph2ps512): Ditto. + (avx512f_getmant): Ditto. + * config/i386/subst.md (round_saeonly_name): New. + (round_saeonly_mask_operand2): Ditto. + (round_saeonly_mask_operand3): Ditto. + (round_saeonly_mask_scalar_operand3): Ditto. + (round_saeonly_mask_scalar_operand4): Ditto. + (round_saeonly_mask_scalar_merge_operand4): Ditto. + (round_saeonly_sd_mask_operand5): Ditto. + (round_saeonly_op2): Ditto. + (round_saeonly_op4): Ditto. + (round_saeonly_op5): Ditto. + (round_saeonly_op6): Ditto. + (round_saeonly_mask_op2): Ditto. + (round_saeonly_mask_op3): Ditto. + (round_saeonly_mask_scalar_op3): Ditto. + (round_saeonly_mask_scalar_op4): Ditto. + (round_saeonly_mask_scalar_merge_op4): Ditto. + (round_saeonly_sd_mask_op5): Ditto. + (round_saeonly_constraint): Ditto. + (round_saeonly_constraint2): Ditto. + (round_saeonly_nimm_predicate): Ditto. + (round_saeonly_mode512bit_condition): Ditto. + (round_saeonly): Ditto. + 2013-12-27 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 4c9f310594e..59eedf42522 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -1566,45 +1566,45 @@ ;; isn't really correct, as those rtl operators aren't defined when ;; applied to NaNs. Hopefully the optimizers won't get too smart on us. -(define_expand "3" +(define_expand "3" [(set (match_operand:VF 0 "register_operand") (smaxmin:VF - (match_operand:VF 1 "nonimmediate_operand") - (match_operand:VF 2 "nonimmediate_operand")))] - "TARGET_SSE && " + (match_operand:VF 1 "") + (match_operand:VF 2 "")))] + "TARGET_SSE && && " { if (!flag_finite_math_only) operands[1] = force_reg (mode, operands[1]); ix86_fixup_binary_operands_no_copy (, mode, operands); }) -(define_insn "*3_finite" +(define_insn "*3_finite" [(set (match_operand:VF 0 "register_operand" "=x,v") (smaxmin:VF - (match_operand:VF 1 "nonimmediate_operand" "%0,v") - (match_operand:VF 2 "nonimmediate_operand" "xm,vm")))] + (match_operand:VF 1 "" "%0,v") + (match_operand:VF 2 "" "xm,")))] "TARGET_SSE && flag_finite_math_only && ix86_binary_operator_ok (, mode, operands) - && " + && && " "@ \t{%2, %0|%0, %2} - v\t{%2, %1, %0|%0, %1, %2}" + v\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,avx") (set_attr "type" "sseadd") (set_attr "btver2_sse_attr" "maxmin") (set_attr "prefix" "") (set_attr "mode" "")]) -(define_insn "*3" +(define_insn "*3" [(set (match_operand:VF 0 "register_operand" "=x,v") (smaxmin:VF (match_operand:VF 1 "register_operand" "0,v") - (match_operand:VF 2 "nonimmediate_operand" "xm,vm")))] + (match_operand:VF 2 "" "xm,")))] "TARGET_SSE && !flag_finite_math_only - && " + && && " "@ \t{%2, %0|%0, %2} - v\t{%2, %1, %0|%0, %1, %2}" + v\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,avx") (set_attr "type" "sseadd") (set_attr "btver2_sse_attr" "maxmin") @@ -2142,15 +2142,15 @@ [(V16SF "const_0_to_31_operand") (V8DF "const_0_to_31_operand") (V16SI "const_0_to_7_operand") (V8DI "const_0_to_7_operand")]) -(define_insn "avx512f_cmp3" +(define_insn "avx512f_cmp3" [(set (match_operand: 0 "register_operand" "=k") (unspec: [(match_operand:VI48F_512 1 "register_operand" "v") - (match_operand:VI48F_512 2 "nonimmediate_operand" "vm") + (match_operand:VI48F_512 2 "" "") (match_operand:SI 3 "" "n")] UNSPEC_PCMP))] - "TARGET_AVX512F" - "vcmp\t{%3, %2, %1, %0|%0, %1, %2, %3}" + "TARGET_AVX512F && " + "vcmp\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssecmp") (set_attr "length_immediate" "1") (set_attr "prefix" "evex") @@ -2170,35 +2170,35 @@ (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_vmcmp3" +(define_insn "avx512f_vmcmp3" [(set (match_operand: 0 "register_operand" "=k") (and: (unspec: [(match_operand:VF_128 1 "register_operand" "v") - (match_operand:VF_128 2 "nonimmediate_operand" "vm") + (match_operand:VF_128 2 "" "") (match_operand:SI 3 "const_0_to_31_operand" "n")] UNSPEC_PCMP) (const_int 1)))] "TARGET_AVX512F" - "vcmp\t{%3, %2, %1, %0|%0, %1, %2, %3}" + "vcmp\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ssecmp") (set_attr "length_immediate" "1") (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_vmcmp3_mask" +(define_insn "avx512f_vmcmp3_mask" [(set (match_operand: 0 "register_operand" "=k") (and: (unspec: [(match_operand:VF_128 1 "register_operand" "v") - (match_operand:VF_128 2 "nonimmediate_operand" "vm") + (match_operand:VF_128 2 "" "") (match_operand:SI 3 "const_0_to_31_operand" "n")] UNSPEC_PCMP) (and: (match_operand: 4 "register_operand" "k") (const_int 1))))] "TARGET_AVX512F" - "vcmp\t{%3, %2, %1, %0%{%4%}|%0%{%4%}, %1, %2, %3}" + "vcmp\t{%3, %2, %1, %0%{%4%}|%0%{%4%}, %1, %2, %3}" [(set_attr "type" "ssecmp") (set_attr "length_immediate" "1") (set_attr "prefix" "evex") @@ -2216,17 +2216,17 @@ (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "_comi" +(define_insn "_comi" [(set (reg:CCFP FLAGS_REG) (compare:CCFP (vec_select:MODEF (match_operand: 0 "register_operand" "v") (parallel [(const_int 0)])) (vec_select:MODEF - (match_operand: 1 "nonimmediate_operand" "vm") + (match_operand: 1 "" "") (parallel [(const_int 0)]))))] "SSE_FLOAT_MODE_P (mode)" - "%vcomi\t{%1, %0|%0, %1}" + "%vcomi\t{%1, %0|%0, %1}" [(set_attr "type" "ssecomi") (set_attr "prefix" "maybe_vex") (set_attr "prefix_rep" "0") @@ -2236,17 +2236,17 @@ (const_string "0"))) (set_attr "mode" "")]) -(define_insn "_ucomi" +(define_insn "_ucomi" [(set (reg:CCFPU FLAGS_REG) (compare:CCFPU (vec_select:MODEF (match_operand: 0 "register_operand" "v") (parallel [(const_int 0)])) (vec_select:MODEF - (match_operand: 1 "nonimmediate_operand" "vm") + (match_operand: 1 "" "") (parallel [(const_int 0)]))))] "SSE_FLOAT_MODE_P (mode)" - "%vucomi\t{%1, %0|%0, %1}" + "%vucomi\t{%1, %0|%0, %1}" [(set_attr "type" "ssecomi") (set_attr "prefix" "maybe_vex") (set_attr "prefix_rep" "0") @@ -3407,14 +3407,14 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "DI")]) -(define_insn "sse_cvttss2si" +(define_insn "sse_cvttss2si" [(set (match_operand:SI 0 "register_operand" "=r,r") (fix:SI (vec_select:SF - (match_operand:V4SF 1 "nonimmediate_operand" "v,m") + (match_operand:V4SF 1 "" "v,") (parallel [(const_int 0)]))))] "TARGET_SSE" - "%vcvttss2si\t{%1, %0|%0, %k1}" + "%vcvttss2si\t{%1, %0|%0, %k1}" [(set_attr "type" "sseicvt") (set_attr "athlon_decode" "double,vector") (set_attr "amdfam10_decode" "double,double") @@ -3423,14 +3423,14 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "SI")]) -(define_insn "sse_cvttss2siq" +(define_insn "sse_cvttss2siq" [(set (match_operand:DI 0 "register_operand" "=r,r") (fix:DI (vec_select:SF - (match_operand:V4SF 1 "nonimmediate_operand" "v,vm") + (match_operand:V4SF 1 "" "v,") (parallel [(const_int 0)]))))] "TARGET_SSE && TARGET_64BIT" - "%vcvttss2si{q}\t{%1, %0|%0, %k1}" + "%vcvttss2si{q}\t{%1, %0|%0, %k1}" [(set_attr "type" "sseicvt") (set_attr "athlon_decode" "double,vector") (set_attr "amdfam10_decode" "double,double") @@ -3539,12 +3539,12 @@ (set_attr "prefix" "evex") (set_attr "mode" "XI")]) -(define_insn "fix_truncv16sfv16si2" +(define_insn "fix_truncv16sfv16si2" [(set (match_operand:V16SI 0 "register_operand" "=v") (any_fix:V16SI - (match_operand:V16SF 1 "nonimmediate_operand" "vm")))] + (match_operand:V16SF 1 "" "")))] "TARGET_AVX512F" - "vcvttps2dq\t{%1, %0|%0, %1}" + "vcvttps2dq\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "evex") (set_attr "mode" "XI")]) @@ -3700,26 +3700,26 @@ (set_attr "prefix" "evex") (set_attr "mode" "DI")]) -(define_insn "avx512f_vcvttss2usi" +(define_insn "avx512f_vcvttss2usi" [(set (match_operand:SI 0 "register_operand" "=r") (unsigned_fix:SI (vec_select:SF - (match_operand:V4SF 1 "nonimmediate_operand" "vm") + (match_operand:V4SF 1 "" "") (parallel [(const_int 0)]))))] "TARGET_AVX512F" - "vcvttss2usi\t{%1, %0|%0, %1}" + "vcvttss2usi\t{%1, %0|%0, %1}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "SI")]) -(define_insn "avx512f_vcvttss2usiq" +(define_insn "avx512f_vcvttss2usiq" [(set (match_operand:DI 0 "register_operand" "=r") (unsigned_fix:DI (vec_select:SF - (match_operand:V4SF 1 "nonimmediate_operand" "vm") + (match_operand:V4SF 1 "" "") (parallel [(const_int 0)]))))] "TARGET_AVX512F && TARGET_64BIT" - "vcvttss2usi\t{%1, %0|%0, %1}" + "vcvttss2usi\t{%1, %0|%0, %1}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "DI")]) @@ -3750,26 +3750,26 @@ (set_attr "prefix" "evex") (set_attr "mode" "DI")]) -(define_insn "avx512f_vcvttsd2usi" +(define_insn "avx512f_vcvttsd2usi" [(set (match_operand:SI 0 "register_operand" "=r") (unsigned_fix:SI (vec_select:DF - (match_operand:V2DF 1 "nonimmediate_operand" "vm") + (match_operand:V2DF 1 "" "") (parallel [(const_int 0)]))))] "TARGET_AVX512F" - "vcvttsd2usi\t{%1, %0|%0, %1}" + "vcvttsd2usi\t{%1, %0|%0, %1}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "SI")]) -(define_insn "avx512f_vcvttsd2usiq" +(define_insn "avx512f_vcvttsd2usiq" [(set (match_operand:DI 0 "register_operand" "=r") (unsigned_fix:DI (vec_select:DF - (match_operand:V2DF 1 "nonimmediate_operand" "vm") + (match_operand:V2DF 1 "" "") (parallel [(const_int 0)]))))] "TARGET_AVX512F && TARGET_64BIT" - "vcvttsd2usi\t{%1, %0|%0, %1}" + "vcvttsd2usi\t{%1, %0|%0, %1}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "DI")]) @@ -3835,14 +3835,14 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "DI")]) -(define_insn "sse2_cvttsd2si" +(define_insn "sse2_cvttsd2si" [(set (match_operand:SI 0 "register_operand" "=r,r") (fix:SI (vec_select:DF - (match_operand:V2DF 1 "nonimmediate_operand" "v,m") + (match_operand:V2DF 1 "" "v,") (parallel [(const_int 0)]))))] "TARGET_SSE2" - "%vcvttsd2si\t{%1, %0|%0, %q1}" + "%vcvttsd2si\t{%1, %0|%0, %q1}" [(set_attr "type" "sseicvt") (set_attr "athlon_decode" "double,vector") (set_attr "amdfam10_decode" "double,double") @@ -3852,14 +3852,14 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "SI")]) -(define_insn "sse2_cvttsd2siq" +(define_insn "sse2_cvttsd2siq" [(set (match_operand:DI 0 "register_operand" "=r,r") (fix:DI (vec_select:DF - (match_operand:V2DF 1 "nonimmediate_operand" "v,m") + (match_operand:V2DF 1 "" "v,") (parallel [(const_int 0)]))))] "TARGET_SSE2 && TARGET_64BIT" - "%vcvttsd2si{q}\t{%1, %0|%0, %q1}" + "%vcvttsd2si{q}\t{%1, %0|%0, %q1}" [(set_attr "type" "sseicvt") (set_attr "athlon_decode" "double,vector") (set_attr "amdfam10_decode" "double,double") @@ -4019,12 +4019,12 @@ (set_attr "prefix" "evex") (set_attr "mode" "OI")]) -(define_insn "fix_truncv8dfv8si2" +(define_insn "fix_truncv8dfv8si2" [(set (match_operand:V8SI 0 "register_operand" "=v") (any_fix:V8SI - (match_operand:V8DF 1 "nonimmediate_operand" "vm")))] + (match_operand:V8DF 1 "" "")))] "TARGET_AVX512F" - "vcvttpd2dq\t{%1, %0|%0, %1}" + "vcvttpd2dq\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "evex") (set_attr "mode" "OI")]) @@ -4185,12 +4185,12 @@ (define_mode_attr sf2dfmode [(V8DF "V8SF") (V4DF "V4SF")]) -(define_insn "_cvtps2pd" +(define_insn "_cvtps2pd" [(set (match_operand:VF2_512_256 0 "register_operand" "=v") (float_extend:VF2_512_256 - (match_operand: 1 "nonimmediate_operand" "vm")))] - "TARGET_AVX && " - "vcvtps2pd\t{%1, %0|%0, %1}" + (match_operand: 1 "" "")))] + "TARGET_AVX && && " + "vcvtps2pd\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "maybe_vex") (set_attr "mode" "")]) @@ -6560,12 +6560,12 @@ (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_getexp" +(define_insn "avx512f_getexp" [(set (match_operand:VF_512 0 "register_operand" "=v") - (unspec:VF_512 [(match_operand:VF_512 1 "nonimmediate_operand" "vm")] + (unspec:VF_512 [(match_operand:VF_512 1 "" "")] UNSPEC_GETEXP))] "TARGET_AVX512F" - "vgetexp\t{%1, %0|%0, %1}"; + "vgetexp\t{%1, %0|%0, %1}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -6641,32 +6641,32 @@ DONE; }) -(define_insn "avx512f_fixupimm" +(define_insn "avx512f_fixupimm" [(set (match_operand:VF_512 0 "register_operand" "=v") (unspec:VF_512 [(match_operand:VF_512 1 "register_operand" "0") (match_operand:VF_512 2 "register_operand" "v") - (match_operand: 3 "nonimmediate_operand" "vm") + (match_operand: 3 "" "") (match_operand:SI 4 "const_0_to_255_operand")] UNSPEC_FIXUPIMM))] "TARGET_AVX512F" - "vfixupimm\t{%4, %3, %2, %0|%0, %2, %3, %4}"; + "vfixupimm\t{%4, %3, %2, %0|%0, %2, %3, %4}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_fixupimm_mask" +(define_insn "avx512f_fixupimm_mask" [(set (match_operand:VF_512 0 "register_operand" "=v") (vec_merge:VF_512 (unspec:VF_512 [(match_operand:VF_512 1 "register_operand" "0") (match_operand:VF_512 2 "register_operand" "v") - (match_operand: 3 "nonimmediate_operand" "vm") + (match_operand: 3 "" "") (match_operand:SI 4 "const_0_to_255_operand")] UNSPEC_FIXUPIMM) (match_dup 1) (match_operand: 5 "register_operand" "k")))] "TARGET_AVX512F" - "vfixupimm\t{%4, %3, %2, %0%{%5%}|%0%{%5%}, %2, %3, %4}"; + "vfixupimm\t{%4, %3, %2, %0%{%5%}|%0%{%5%}, %2, %3, %4}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -6685,30 +6685,30 @@ DONE; }) -(define_insn "avx512f_sfixupimm" +(define_insn "avx512f_sfixupimm" [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (unspec:VF_128 [(match_operand:VF_128 1 "register_operand" "0") (match_operand:VF_128 2 "register_operand" "v") - (match_operand: 3 "nonimmediate_operand" "vm") + (match_operand: 3 "" "") (match_operand:SI 4 "const_0_to_255_operand")] UNSPEC_FIXUPIMM) (match_dup 1) (const_int 1)))] "TARGET_AVX512F" - "vfixupimm\t{%4, %3, %2, %0|%0, %2, %3, %4}"; + "vfixupimm\t{%4, %3, %2, %0|%0, %2, %3, %4}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_sfixupimm_mask" +(define_insn "avx512f_sfixupimm_mask" [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (vec_merge:VF_128 (unspec:VF_128 [(match_operand:VF_128 1 "register_operand" "0") (match_operand:VF_128 2 "register_operand" "v") - (match_operand: 3 "nonimmediate_operand" "vm") + (match_operand: 3 "" "") (match_operand:SI 4 "const_0_to_255_operand")] UNSPEC_FIXUPIMM) (match_dup 1) @@ -6716,18 +6716,18 @@ (match_dup 1) (match_operand: 5 "register_operand" "k")))] "TARGET_AVX512F" - "vfixupimm\t{%4, %3, %2, %0%{%5%}|%0%{%5%}, %2, %3, %4}"; + "vfixupimm\t{%4, %3, %2, %0%{%5%}|%0%{%5%}, %2, %3, %4}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_rndscale" +(define_insn "avx512f_rndscale" [(set (match_operand:VF_512 0 "register_operand" "=v") (unspec:VF_512 - [(match_operand:VF_512 1 "nonimmediate_operand" "vm") + [(match_operand:VF_512 1 "" "") (match_operand:SI 2 "const_0_to_255_operand")] UNSPEC_ROUND))] "TARGET_AVX512F" - "vrndscale\t{%2, %1, %0|%0, %1, %2}" + "vrndscale\t{%2, %1, %0|%0, %1, %2}" [(set_attr "length_immediate" "1") (set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -14602,13 +14602,13 @@ (set_attr "btver2_decode" "double") (set_attr "mode" "V8SF")]) -(define_insn "avx512f_vcvtph2ps512" +(define_insn "avx512f_vcvtph2ps512" [(set (match_operand:V16SF 0 "register_operand" "=v") (unspec:V16SF - [(match_operand:V16HI 1 "nonimmediate_operand" "vm")] + [(match_operand:V16HI 1 "" "")] UNSPEC_VCVTPH2PS))] "TARGET_AVX512F" - "vcvtph2ps\t{%1, %0|%0, %1}" + "vcvtph2ps\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") (set_attr "prefix" "evex") (set_attr "mode" "V16SF")]) @@ -15107,14 +15107,14 @@ (set_attr "memory" "none,load") (set_attr "mode" "")]) -(define_insn "avx512f_getmant" +(define_insn "avx512f_getmant" [(set (match_operand:VF_512 0 "register_operand" "=v") (unspec:VF_512 - [(match_operand:VF_512 1 "nonimmediate_operand" "vm") + [(match_operand:VF_512 1 "" "") (match_operand:SI 2 "const_0_to_15_operand")] UNSPEC_GETMANT))] "TARGET_AVX512F" - "vgetmant\t{%2, %1, %0|%0, %1, %2}"; + "vgetmant\t{%2, %1, %0|%0, %1, %2}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md index b20cf20f95d..d17b8b263ed 100644 --- a/gcc/config/i386/subst.md +++ b/gcc/config/i386/subst.md @@ -129,3 +129,34 @@ (set (match_dup 0) (match_dup 1)) (unspec [(match_operand:SI 2 "const_0_to_4_operand")] UNSPEC_EMBEDDED_ROUNDING)])]) + +(define_subst_attr "round_saeonly_name" "round_saeonly" "" "_round") +(define_subst_attr "round_saeonly_mask_operand2" "mask" "%R2" "%R4") +(define_subst_attr "round_saeonly_mask_operand3" "mask" "%R3" "%R5") +(define_subst_attr "round_saeonly_mask_scalar_operand3" "mask_scalar" "%R3" "%R5") +(define_subst_attr "round_saeonly_mask_scalar_operand4" "mask_scalar" "%R4" "%R6") +(define_subst_attr "round_saeonly_mask_scalar_merge_operand4" "mask_scalar_merge" "%R4" "%R5") +(define_subst_attr "round_saeonly_sd_mask_operand5" "sd" "%R5" "%R7") +(define_subst_attr "round_saeonly_op2" "round_saeonly" "" "%R2") +(define_subst_attr "round_saeonly_op4" "round_saeonly" "" "%R4") +(define_subst_attr "round_saeonly_op5" "round_saeonly" "" "%R5") +(define_subst_attr "round_saeonly_op6" "round_saeonly" "" "%R6") +(define_subst_attr "round_saeonly_mask_op2" "round_saeonly" "" "") +(define_subst_attr "round_saeonly_mask_op3" "round_saeonly" "" "") +(define_subst_attr "round_saeonly_mask_scalar_op3" "round_saeonly" "" "") +(define_subst_attr "round_saeonly_mask_scalar_op4" "round_saeonly" "" "") +(define_subst_attr "round_saeonly_mask_scalar_merge_op4" "round_saeonly" "" "") +(define_subst_attr "round_saeonly_sd_mask_op5" "round_saeonly" "" "") +(define_subst_attr "round_saeonly_constraint" "round_saeonly" "vm" "v") +(define_subst_attr "round_saeonly_constraint2" "round_saeonly" "m" "v") +(define_subst_attr "round_saeonly_nimm_predicate" "round_saeonly" "nonimmediate_operand" "register_operand") +(define_subst_attr "round_saeonly_mode512bit_condition" "round_saeonly" "1" "(mode == V16SFmode || mode == V8DFmode)") + +(define_subst "round_saeonly" + [(set (match_operand:SUBST_A 0) + (match_operand:SUBST_A 1))] + "TARGET_AVX512F" + [(parallel[ + (set (match_dup 0) + (match_dup 1)) + (unspec [(match_operand:SI 2 "const_4_to_5_operand")] UNSPEC_EMBEDDED_ROUNDING)])]) -- cgit v1.2.1 From adf45678b6850aa17c4065238e460af6c19a594b Mon Sep 17 00:00:00 2001 From: kyukhin Date: Fri, 27 Dec 2013 14:33:51 +0000 Subject: * config/i386/sse.md (avx512f_fmadd__maskz): Extend to support EVEX's RC. (avx512f_fmaddsub__maskz): Ditto. * config/i386/subst.md (round_expand_name): New. (round_expand_nimm_predicate): Ditto. (round_expand_operand): Ditto. (round_expand): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206222 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 18 ++++++++++++++++++ gcc/config/i386/sse.md | 24 ++++++++++++------------ gcc/config/i386/subst.md | 18 ++++++++++++++++++ 3 files changed, 48 insertions(+), 12 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 88e65b5cf60..9cd2138be53 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2013-12-27 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (avx512f_fmadd__maskz): Extend to support + EVEX's RC. + (avx512f_fmaddsub__maskz): Ditto. + * config/i386/subst.md (round_expand_name): New. + (round_expand_nimm_predicate): Ditto. + (round_expand_operand): Ditto. + (round_expand): Ditto. + 2013-12-27 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 59eedf42522..4e4d5c7ead8 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -2741,17 +2741,17 @@ (match_operand:FMAMODE 3 "nonimmediate_operand")))] "") -(define_expand "avx512f_fmadd__maskz" +(define_expand "avx512f_fmadd__maskz" [(match_operand:VF_512 0 "register_operand") - (match_operand:VF_512 1 "nonimmediate_operand") - (match_operand:VF_512 2 "nonimmediate_operand") - (match_operand:VF_512 3 "nonimmediate_operand") + (match_operand:VF_512 1 "") + (match_operand:VF_512 2 "") + (match_operand:VF_512 3 "") (match_operand: 4 "register_operand")] "TARGET_AVX512F" { - emit_insn (gen_fma_fmadd__maskz_1 ( + emit_insn (gen_fma_fmadd__maskz_1 ( operands[0], operands[1], operands[2], operands[3], - CONST0_RTX (mode), operands[4])); + CONST0_RTX (mode), operands[4])); DONE; }) @@ -2983,17 +2983,17 @@ UNSPEC_FMADDSUB))] "TARGET_FMA || TARGET_FMA4 || TARGET_AVX512F") -(define_expand "avx512f_fmaddsub__maskz" +(define_expand "avx512f_fmaddsub__maskz" [(match_operand:VF_512 0 "register_operand") - (match_operand:VF_512 1 "nonimmediate_operand") - (match_operand:VF_512 2 "nonimmediate_operand") - (match_operand:VF_512 3 "nonimmediate_operand") + (match_operand:VF_512 1 "") + (match_operand:VF_512 2 "") + (match_operand:VF_512 3 "") (match_operand: 4 "register_operand")] "TARGET_AVX512F" { - emit_insn (gen_fma_fmaddsub__maskz_1 ( + emit_insn (gen_fma_fmaddsub__maskz_1 ( operands[0], operands[1], operands[2], operands[3], - CONST0_RTX (mode), operands[4])); + CONST0_RTX (mode), operands[4])); DONE; }) diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md index d17b8b263ed..595dfb9e5f4 100644 --- a/gcc/config/i386/subst.md +++ b/gcc/config/i386/subst.md @@ -160,3 +160,21 @@ (set (match_dup 0) (match_dup 1)) (unspec [(match_operand:SI 2 "const_4_to_5_operand")] UNSPEC_EMBEDDED_ROUNDING)])]) + +(define_subst_attr "round_expand_name" "round_expand" "" "_round") +(define_subst_attr "round_expand_nimm_predicate" "round_expand" "nonimmediate_operand" "register_operand") +(define_subst_attr "round_expand_operand" "round_expand" "" ", operands[5]") + +(define_subst "round_expand" + [(match_operand:SUBST_V 0) + (match_operand:SUBST_V 1) + (match_operand:SUBST_V 2) + (match_operand:SUBST_V 3) + (match_operand:SUBST_S 4)] + "TARGET_AVX512F" + [(match_dup 0) + (match_dup 1) + (match_dup 2) + (match_dup 3) + (match_dup 4) + (unspec [(match_operand:SI 5 "const_0_to_4_operand")] UNSPEC_EMBEDDED_ROUNDING)]) -- cgit v1.2.1 From affa436aec0c9a328d2791413b943a46a4eed123 Mon Sep 17 00:00:00 2001 From: kyukhin Date: Fri, 27 Dec 2013 14:37:34 +0000 Subject: * config/i386/sse.md (avx512f_fixupimm_maskz): Extend to support EVEX's RC. (avx512f_sfixupimm_maskz): Ditto. * config/i386/subst.md (round_saeonly_expand_name): New. (round_saeonly_expand_nimm_predicate): Ditto. (round_saeonly_expand_operand6): Ditto. (round_saeonly_expand): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206223 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 18 ++++++++++++++++++ gcc/config/i386/sse.md | 18 ++++++++++-------- gcc/config/i386/subst.md | 20 ++++++++++++++++++++ 3 files changed, 48 insertions(+), 8 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9cd2138be53..601bc7692c5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2013-12-27 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (avx512f_fixupimm_maskz): Extend to support + EVEX's RC. + (avx512f_sfixupimm_maskz): Ditto. + * config/i386/subst.md (round_saeonly_expand_name): New. + (round_saeonly_expand_nimm_predicate): Ditto. + (round_saeonly_expand_operand6): Ditto. + (round_saeonly_expand): Ditto. + 2013-12-27 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 4e4d5c7ead8..7beb245d9c7 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -6626,18 +6626,19 @@ }) -(define_expand "avx512f_fixupimm_maskz" +(define_expand "avx512f_fixupimm_maskz" [(match_operand:VF_512 0 "register_operand") (match_operand:VF_512 1 "register_operand") (match_operand:VF_512 2 "register_operand") - (match_operand: 3 "nonimmediate_operand") + (match_operand: 3 "") (match_operand:SI 4 "const_0_to_255_operand") (match_operand: 5 "register_operand")] "TARGET_AVX512F" { - emit_insn (gen_avx512f_fixupimm_maskz_1 ( + emit_insn (gen_avx512f_fixupimm_maskz_1 ( operands[0], operands[1], operands[2], operands[3], - operands[4], CONST0_RTX (mode), operands[5])); + operands[4], CONST0_RTX (mode), operands[5] + )); DONE; }) @@ -6670,18 +6671,19 @@ [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_expand "avx512f_sfixupimm_maskz" +(define_expand "avx512f_sfixupimm_maskz" [(match_operand:VF_128 0 "register_operand") (match_operand:VF_128 1 "register_operand") (match_operand:VF_128 2 "register_operand") - (match_operand: 3 "nonimmediate_operand") + (match_operand: 3 "") (match_operand:SI 4 "const_0_to_255_operand") (match_operand: 5 "register_operand")] "TARGET_AVX512F" { - emit_insn (gen_avx512f_sfixupimm_maskz_1 ( + emit_insn (gen_avx512f_sfixupimm_maskz_1 ( operands[0], operands[1], operands[2], operands[3], - operands[4], CONST0_RTX (mode), operands[5])); + operands[4], CONST0_RTX (mode), operands[5] + )); DONE; }) diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md index 595dfb9e5f4..4a6d4778d9c 100644 --- a/gcc/config/i386/subst.md +++ b/gcc/config/i386/subst.md @@ -178,3 +178,23 @@ (match_dup 3) (match_dup 4) (unspec [(match_operand:SI 5 "const_0_to_4_operand")] UNSPEC_EMBEDDED_ROUNDING)]) + +(define_subst_attr "round_saeonly_expand_name" "round_saeonly_expand" "" "_round") +(define_subst_attr "round_saeonly_expand_nimm_predicate" "round_saeonly_expand" "nonimmediate_operand" "register_operand") +(define_subst_attr "round_saeonly_expand_operand6" "round_saeonly_expand" "" ", operands[6]") + +(define_subst "round_saeonly_expand" + [(match_operand:SUBST_V 0) + (match_operand:SUBST_V 1) + (match_operand:SUBST_V 2) + (match_operand:SUBST_A 3) + (match_operand:SI 4) + (match_operand:SUBST_S 5)] + "TARGET_AVX512F" + [(match_dup 0) + (match_dup 1) + (match_dup 2) + (match_dup 3) + (match_dup 4) + (match_dup 5) + (unspec [(match_operand:SI 6 "const_4_to_5_operand")] UNSPEC_EMBEDDED_ROUNDING)]) -- cgit v1.2.1 From 2236cdbff909c7e5ff9f6db087f633a5a981d571 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 28 Dec 2013 00:17:20 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206227 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index a6735ca32db..b665d833894 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131227 +20131228 -- cgit v1.2.1 From 7fb0fe24ba97af5ff080a4795179f701caf79d91 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Sat, 28 Dec 2013 10:12:59 +0000 Subject: * c-ada-spec.c (print_constructor): New function. (print_destructor): Retrieve the origin of the destructor. (print_ada_declaration): Revamp handling of constructors/destructors. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206228 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/c-family/ChangeLog | 6 ++++ gcc/c-family/c-ada-spec.c | 75 ++++++++++++++++++++++++++--------------------- 2 files changed, 47 insertions(+), 34 deletions(-) (limited to 'gcc') diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 1e0da89b347..5895ed37604 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2013-12-28 Eric Botcazou + + * c-ada-spec.c (print_constructor): New function. + (print_destructor): Retrieve the origin of the destructor. + (print_ada_declaration): Revamp handling of constructors/destructors. + 2013-12-23 Stuart Hastings Bill Maddox Jason Merrill diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index 1724c748af5..27fb9d76527 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -2521,20 +2521,34 @@ dump_nested_types (pretty_printer *buffer, tree t, tree parent, bool forward, TREE_VISITED (t) = 1; } +/* Dump in BUFFER constructor spec corresponding to T. */ + +static void +print_constructor (pretty_printer *buffer, tree t) +{ + tree decl_name = DECL_NAME (DECL_ORIGIN (t)); + + pp_string (buffer, "New_"); + pp_ada_tree_identifier (buffer, decl_name, t, false); +} + /* Dump in BUFFER destructor spec corresponding to T. */ static void print_destructor (pretty_printer *buffer, tree t) { - const char *s = IDENTIFIER_POINTER (DECL_NAME (t)); + tree decl_name = DECL_NAME (DECL_ORIGIN (t)); + const char *s = IDENTIFIER_POINTER (decl_name); if (*s == '_') - for (s += 2; *s != ' '; s++) - pp_character (buffer, *s); + { + for (s += 2; *s != ' '; s++) + pp_character (buffer, *s); + } else { pp_string (buffer, "Delete_"); - pp_ada_tree_identifier (buffer, DECL_NAME (t), t, false); + pp_ada_tree_identifier (buffer, decl_name, t, false); } } @@ -2785,7 +2799,7 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc) } else if (TREE_CODE (t) == FUNCTION_DECL) { - bool is_function = true, is_abstract_class = false; + bool is_function, is_abstract_class = false; bool is_method = TREE_CODE (TREE_TYPE (t)) == METHOD_TYPE; tree decl_name = DECL_NAME (t); int prev_in_function = in_function; @@ -2805,24 +2819,21 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc) is_copy_constructor = cpp_check (t, IS_COPY_CONSTRUCTOR); } - /* Skip __comp_dtor destructor which is redundant with the '~class()' - destructor. */ - if (is_destructor - && !strncmp (IDENTIFIER_POINTER (decl_name), "__comp", 6)) - return 0; - /* Skip copy constructors: some are internal only, and those that are not cannot be called easily from Ada anyway. */ if (is_copy_constructor) return 0; - /* If this function has an entry in the dispatch table, we cannot - omit it. */ - if (!DECL_VINDEX (t) && *IDENTIFIER_POINTER (decl_name) == '_') + if (is_constructor || is_destructor) { - if (IDENTIFIER_POINTER (decl_name)[1] == '_') + /* Only consider constructors/destructors for complete objects. */ + if (strncmp (IDENTIFIER_POINTER (decl_name), "__comp", 6) != 0) return 0; + } + /* If this function has an entry in the vtable, we cannot omit it. */ + else if (!DECL_VINDEX (t) && *IDENTIFIER_POINTER (decl_name) == '_') + { INDENT (spc); pp_string (buffer, "-- skipped func "); pp_string (buffer, IDENTIFIER_POINTER (decl_name)); @@ -2832,19 +2843,22 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc) if (need_indent) INDENT (spc); - if (is_constructor) - pp_string (buffer, "function New_"); - else if (VOID_TYPE_P (TREE_TYPE (TREE_TYPE (t)))) + if (VOID_TYPE_P (TREE_TYPE (TREE_TYPE (t))) && !is_constructor) { - is_function = false; pp_string (buffer, "procedure "); + is_function = false; } else - pp_string (buffer, "function "); + { + pp_string (buffer, "function "); + is_function = true; + } in_function = is_function; - if (is_destructor) + if (is_constructor) + print_constructor (buffer, t); + else if (is_destructor) print_destructor (buffer, t); else dump_ada_decl_name (buffer, t, false); @@ -2856,16 +2870,9 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc) if (is_function) { pp_string (buffer, " return "); - - if (is_constructor) - { - dump_ada_decl_name (buffer, t, false); - } - else - { - dump_generic_ada_node - (buffer, TREE_TYPE (TREE_TYPE (t)), type, spc, false, true); - } + tree ret_type + = is_constructor ? DECL_CONTEXT (t) : TREE_TYPE (TREE_TYPE (t)); + dump_generic_ada_node (buffer, ret_type, type, spc, false, true); } if (is_constructor @@ -2877,7 +2884,7 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc) for (tmp = TYPE_METHODS (type); tmp; tmp = TREE_CHAIN (tmp)) if (cpp_check (tmp, IS_ABSTRACT)) { - is_abstract_class = 1; + is_abstract_class = true; break; } } @@ -2896,8 +2903,8 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc) if (is_constructor) { - pp_string (buffer, "pragma CPP_Constructor (New_"); - dump_ada_decl_name (buffer, t, false); + pp_string (buffer, "pragma CPP_Constructor ("); + print_constructor (buffer, t); pp_string (buffer, ", \""); pp_asm_name (buffer, t); pp_string (buffer, "\");"); -- cgit v1.2.1 From df05db280231e2cd01f43b76a17b2e6d03e82edc Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Sat, 28 Dec 2013 10:43:12 +0000 Subject: * doc/invoke.texi (output file options): Document -fada-spec-parent. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206229 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/doc/invoke.texi | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 601bc7692c5..5834df2d7c3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2013-12-28 Eric Botcazou + + * doc/invoke.texi (output file options): Document -fada-spec-parent. + 2013-12-27 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 60675c585e0..d4ca2bf40da 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -161,7 +161,7 @@ in the following sections. -pipe -pass-exit-codes @gol -x @var{language} -v -### --help@r{[}=@var{class}@r{[},@dots{}@r{]]} --target-help @gol --version -wrapper @@@var{file} -fplugin=@var{file} -fplugin-arg-@var{name}=@var{arg} @gol --fdump-ada-spec@r{[}-slim@r{]} -fada-spec-parent=@var{arg} -fdump-go-spec=@var{file}} +-fdump-ada-spec@r{[}-slim@r{]} -fada-spec-parent=@var{unit} -fdump-go-spec=@var{file}} @item C Language Options @xref{C Dialect Options,,Options Controlling C Dialect}. @@ -1518,10 +1518,15 @@ for the plugin called @var{name}. @item -fdump-ada-spec@r{[}-slim@r{]} @opindex fdump-ada-spec -For C and C++ source and include files, generate corresponding Ada -specs. @xref{Generating Ada Bindings for C and C++ headers,,, gnat_ugn, +For C and C++ source and include files, generate corresponding Ada specs. +@xref{Generating Ada Bindings for C and C++ headers,,, gnat_ugn, GNAT User's Guide}, which provides detailed documentation on this feature. +@item -fada-spec-parent=@var{unit} +@opindex fada-spec-parent +In conjunction with @option{-fdump-ada-spec@r{[}-slim@r{]}} above, generate +Ada specs as child units of parent @var{unit}. + @item -fdump-go-spec=@var{file} @opindex fdump-go-spec For input files in any language, generate corresponding Go -- cgit v1.2.1 From fc40508b6cc56389817d0059861f464984865f6a Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 29 Dec 2013 00:16:14 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206236 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index b665d833894..ceb81e68546 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131228 +20131229 -- cgit v1.2.1 From 26f91b7f153357e230dd1ed3c9dd1282ca76104a Mon Sep 17 00:00:00 2001 From: janus Date: Sun, 29 Dec 2013 17:20:50 +0000 Subject: 2013-12-29 Janus Weil PR fortran/59612 * dump-parse-tree.c (show_typespec): Check for charlen. * invoke.texi: Fix documentation of -fdump-fortran-optimized and -fdump-parse-tree. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206237 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 7 +++++++ gcc/fortran/dump-parse-tree.c | 3 ++- gcc/fortran/invoke.texi | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2a1e1972e70..60922b86450 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2013-12-29 Janus Weil + + PR fortran/59612 + * dump-parse-tree.c (show_typespec): Check for charlen. + * invoke.texi: Fix documentation of -fdump-fortran-optimized and + -fdump-parse-tree. + 2013-12-18 Janus Weil PR fortran/59493 diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c index 14ff0041219..501a4ebb566 100644 --- a/gcc/fortran/dump-parse-tree.c +++ b/gcc/fortran/dump-parse-tree.c @@ -110,7 +110,8 @@ show_typespec (gfc_typespec *ts) break; case BT_CHARACTER: - show_expr (ts->u.cl->length); + if (ts->u.cl) + show_expr (ts->u.cl->length); fprintf(dumpfile, " %d", ts->kind); break; diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 6a5c8a14471..535f34c6f53 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -989,11 +989,12 @@ Output the internal parse tree after translating the source program into internal representation. Only really useful for debugging the GNU Fortran compiler itself. -@item -fdump-optimized-tree +@item -fdump-fortran-optimized @opindex @code{fdump-fortran-optimized} Output the parse tree after front-end optimization. Only really useful for debugging the GNU Fortran compiler itself. +@item -fdump-parse-tree @opindex @code{fdump-parse-tree} Output the internal parse tree after translating the source program into internal representation. Only really useful for debugging the -- cgit v1.2.1 From 1eebad884470b953ab976020b653694645ba8e89 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 30 Dec 2013 00:16:41 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206241 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ceb81e68546..a43c3c45a69 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131229 +20131230 -- cgit v1.2.1 From b8daf0d16a6c9b031e83ca8c2e4dd566aaeb6338 Mon Sep 17 00:00:00 2001 From: jakub Date: Mon, 30 Dec 2013 08:48:25 +0000 Subject: PR target/59605 * config/i386/i386.c (ix86_expand_set_or_movmem): Create jump_around_label only if it doesn't exist. * gcc.dg/pr59605.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206242 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 +++++ gcc/config/i386/i386.c | 3 ++- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gcc.dg/pr59605.c | 55 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/pr59605.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5834df2d7c3..290a978f8bd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-30 H.J. Lu + + PR target/59605 + * config/i386/i386.c (ix86_expand_set_or_movmem): Create + jump_around_label only if it doesn't exist. + 2013-12-28 Eric Botcazou * doc/invoke.texi (output file options): Document -fada-spec-parent. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 2fc9b802993..6e6b2617f92 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -24047,7 +24047,8 @@ ix86_expand_set_or_movmem (rtx dst, rtx src, rtx count_exp, rtx val_exp, else { rtx hot_label = gen_label_rtx (); - jump_around_label = gen_label_rtx (); + if (jump_around_label == NULL_RTX) + jump_around_label = gen_label_rtx (); emit_cmp_and_jump_insns (count_exp, GEN_INT (dynamic_check - 1), LEU, 0, GET_MODE (count_exp), 1, hot_label); predict_jump (REG_BR_PROB_BASE * 90 / 100); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bd46fa64ab2..b7f12f5b9b5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-30 H.J. Lu + + PR target/59605 + * gcc.dg/pr59605.c: New test. + 2013-12-27 Yury Gribov PR target/59585 diff --git a/gcc/testsuite/gcc.dg/pr59605.c b/gcc/testsuite/gcc.dg/pr59605.c new file mode 100644 index 00000000000..45568438277 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr59605.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2" } */ +/* { dg-additional-options "-minline-stringops-dynamically" { target { i?86-*-* x86_64-*-* } } } */ + +extern void abort (void); + +#define MAX_OFFSET (sizeof (long long)) +#define MAX_COPY (1024 + 8192) +#define MAX_EXTRA (sizeof (long long)) + +#define MAX_LENGTH (MAX_OFFSET + MAX_COPY + MAX_EXTRA) + +static union { + char buf[MAX_LENGTH]; + long long align_int; + long double align_fp; +} u; + +char A[MAX_LENGTH]; + +int +main () +{ + int off, len, i; + char *p, *q; + + for (i = 0; i < MAX_LENGTH; i++) + A[i] = 'A'; + + for (off = 0; off < MAX_OFFSET; off++) + for (len = 1; len < MAX_COPY; len++) + { + for (i = 0; i < MAX_LENGTH; i++) + u.buf[i] = 'a'; + + p = __builtin_memcpy (u.buf + off, A, len); + if (p != u.buf + off) + abort (); + + q = u.buf; + for (i = 0; i < off; i++, q++) + if (*q != 'a') + abort (); + + for (i = 0; i < len; i++, q++) + if (*q != 'A') + abort (); + + for (i = 0; i < MAX_EXTRA; i++, q++) + if (*q != 'a') + abort (); + } + + return 0; +} -- cgit v1.2.1 From 43afe000301b613027f38d9010c9b640a99b79aa Mon Sep 17 00:00:00 2001 From: jakub Date: Mon, 30 Dec 2013 08:53:10 +0000 Subject: PR target/59501 * config/i386/i386.c (ix86_save_reg): Don't return true for drap_reg if !crtl->stack_realign_needed. (ix86_finalize_stack_realign_flags): If drap_reg isn't live on entry and stack_realign_needed will be false, clear drap_reg and need_drap. Optimize leaf functions that don't need stack frame even if crtl->need_drap. * gcc.target/i386/pr59501-1.c: New test. * gcc.target/i386/pr59501-1a.c: New test. * gcc.target/i386/pr59501-2.c: New test. * gcc.target/i386/pr59501-2a.c: New test. * gcc.target/i386/pr59501-3.c: New test. * gcc.target/i386/pr59501-3a.c: New test. * gcc.target/i386/pr59501-4.c: New test. * gcc.target/i386/pr59501-4a.c: New test. * gcc.target/i386/pr59501-5.c: New test. * gcc.target/i386/pr59501-6.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206243 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 ++++++++ gcc/config/i386/i386.c | 29 ++++++++++++++++++++-- gcc/testsuite/ChangeLog | 14 +++++++++++ gcc/testsuite/gcc.target/i386/pr59501-1.c | 30 +++++++++++++++++++++++ gcc/testsuite/gcc.target/i386/pr59501-1a.c | 17 +++++++++++++ gcc/testsuite/gcc.target/i386/pr59501-2.c | 5 ++++ gcc/testsuite/gcc.target/i386/pr59501-2a.c | 10 ++++++++ gcc/testsuite/gcc.target/i386/pr59501-3.c | 30 +++++++++++++++++++++++ gcc/testsuite/gcc.target/i386/pr59501-3a.c | 15 ++++++++++++ gcc/testsuite/gcc.target/i386/pr59501-4.c | 5 ++++ gcc/testsuite/gcc.target/i386/pr59501-4a.c | 8 ++++++ gcc/testsuite/gcc.target/i386/pr59501-5.c | 39 ++++++++++++++++++++++++++++++ gcc/testsuite/gcc.target/i386/pr59501-6.c | 5 ++++ 13 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr59501-1.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59501-1a.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59501-2.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59501-2a.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59501-3.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59501-3a.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59501-4.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59501-4a.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59501-5.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59501-6.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 290a978f8bd..b0870aa1f85 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2013-12-30 Jakub Jelinek + + PR target/59501 + * config/i386/i386.c (ix86_save_reg): Don't return true for drap_reg + if !crtl->stack_realign_needed. + (ix86_finalize_stack_realign_flags): If drap_reg isn't live on entry + and stack_realign_needed will be false, clear drap_reg and need_drap. + Optimize leaf functions that don't need stack frame even if + crtl->need_drap. + 2013-12-30 H.J. Lu PR target/59605 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 6e6b2617f92..0a90ead8970 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -9189,7 +9189,9 @@ ix86_save_reg (unsigned int regno, bool maybe_eh_return) } } - if (crtl->drap_reg && regno == REGNO (crtl->drap_reg)) + if (crtl->drap_reg + && regno == REGNO (crtl->drap_reg) + && crtl->stack_realign_needed) return true; return (df_regs_ever_live_p (regno) @@ -10427,12 +10429,23 @@ ix86_finalize_stack_realign_flags (void) return; } + /* If drap has been set, but it actually isn't live at the start + of the function and !stack_realign, there is no reason to set it up. */ + if (crtl->drap_reg && !stack_realign) + { + basic_block bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb; + if (! REGNO_REG_SET_P (DF_LR_IN (bb), REGNO (crtl->drap_reg))) + { + crtl->drap_reg = NULL_RTX; + crtl->need_drap = false; + } + } + /* If the only reason for frame_pointer_needed is that we conservatively assumed stack realignment might be needed, but in the end nothing that needed the stack alignment had been spilled, clear frame_pointer_needed and say we don't need stack realignment. */ if (stack_realign - && !crtl->need_drap && frame_pointer_needed && crtl->is_leaf && flag_omit_frame_pointer @@ -10470,6 +10483,18 @@ ix86_finalize_stack_realign_flags (void) } } + /* If drap has been set, but it actually isn't live at the start + of the function, there is no reason to set it up. */ + if (crtl->drap_reg) + { + basic_block bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb; + if (! REGNO_REG_SET_P (DF_LR_IN (bb), REGNO (crtl->drap_reg))) + { + crtl->drap_reg = NULL_RTX; + crtl->need_drap = false; + } + } + frame_pointer_needed = false; stack_realign = false; crtl->max_used_stack_slot_alignment = incoming_stack_boundary; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b7f12f5b9b5..e5f1a82c887 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,17 @@ +2013-12-30 Jakub Jelinek + + PR target/59501 + * gcc.target/i386/pr59501-1.c: New test. + * gcc.target/i386/pr59501-1a.c: New test. + * gcc.target/i386/pr59501-2.c: New test. + * gcc.target/i386/pr59501-2a.c: New test. + * gcc.target/i386/pr59501-3.c: New test. + * gcc.target/i386/pr59501-3a.c: New test. + * gcc.target/i386/pr59501-4.c: New test. + * gcc.target/i386/pr59501-4a.c: New test. + * gcc.target/i386/pr59501-5.c: New test. + * gcc.target/i386/pr59501-6.c: New test. + 2013-12-30 H.J. Lu PR target/59605 diff --git a/gcc/testsuite/gcc.target/i386/pr59501-1.c b/gcc/testsuite/gcc.target/i386/pr59501-1.c new file mode 100644 index 00000000000..6a104eef1ad --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59501-1.c @@ -0,0 +1,30 @@ +/* PR target/59501 */ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx -mno-accumulate-outgoing-args" } */ + +#define CHECK_H "avx-check.h" +#define TEST avx_test + +#include CHECK_H + +typedef double V __attribute__ ((vector_size (32))); + +__attribute__((noinline, noclone)) V +foo (double *x, unsigned *y) +{ + V r = { x[y[0]], x[y[1]], x[y[2]], x[y[3]] }; + return r; +} + +static void +TEST (void) +{ + double a[16]; + unsigned b[4] = { 5, 0, 15, 7 }; + int i; + for (i = 0; i < 16; i++) + a[i] = 0.5 + i; + V v = foo (a, b); + if (v[0] != 5.5 || v[1] != 0.5 || v[2] != 15.5 || v[3] != 7.5) + __builtin_abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/pr59501-1a.c b/gcc/testsuite/gcc.target/i386/pr59501-1a.c new file mode 100644 index 00000000000..5b468e55635 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59501-1a.c @@ -0,0 +1,17 @@ +/* PR target/59501 */ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-O2 -mavx -mno-accumulate-outgoing-args" } */ + +typedef double V __attribute__ ((vector_size (32))); + +V +foo (double *x, unsigned *y) +{ + V r = { x[y[0]], x[y[1]], x[y[2]], x[y[3]] }; + return r; +} + +/* Verify no dynamic realignment is performed. */ +/* { dg-final { scan-assembler-not "and\[^\n\r]*sp" } } */ +/* And DRAP isn't needed either. */ +/* { dg-final { scan-assembler-not "r10" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr59501-2.c b/gcc/testsuite/gcc.target/i386/pr59501-2.c new file mode 100644 index 00000000000..8ce177deb8e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59501-2.c @@ -0,0 +1,5 @@ +/* PR target/59501 */ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx -maccumulate-outgoing-args" } */ + +#include "pr59501-1.c" diff --git a/gcc/testsuite/gcc.target/i386/pr59501-2a.c b/gcc/testsuite/gcc.target/i386/pr59501-2a.c new file mode 100644 index 00000000000..c0fe3626961 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59501-2a.c @@ -0,0 +1,10 @@ +/* PR target/59501 */ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-O2 -mavx -maccumulate-outgoing-args" } */ + +#include "pr59501-1a.c" + +/* Verify no dynamic realignment is performed. */ +/* { dg-final { scan-assembler-not "and\[^\n\r]*sp" } } */ +/* And DRAP isn't needed either. */ +/* { dg-final { scan-assembler-not "r10" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr59501-3.c b/gcc/testsuite/gcc.target/i386/pr59501-3.c new file mode 100644 index 00000000000..0bf5ef6139a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59501-3.c @@ -0,0 +1,30 @@ +/* PR target/59501 */ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx -mno-accumulate-outgoing-args" } */ + +#define CHECK_H "avx-check.h" +#define TEST avx_test + +#include CHECK_H + +typedef double V __attribute__ ((vector_size (32))); + +__attribute__((noinline, noclone)) V +foo (double *x, int a, int b, int c, int d, int e, int f, unsigned *y) +{ + V r = { x[y[0]], x[y[1]], x[y[2]], x[y[3]] }; + return r; +} + +static void +TEST (void) +{ + double a[16]; + unsigned b[4] = { 5, 0, 15, 7 }; + int i; + for (i = 0; i < 16; i++) + a[i] = 0.5 + i; + V v = foo (a, 0, 0, 0, 0, 0, 0, b); + if (v[0] != 5.5 || v[1] != 0.5 || v[2] != 15.5 || v[3] != 7.5) + __builtin_abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/pr59501-3a.c b/gcc/testsuite/gcc.target/i386/pr59501-3a.c new file mode 100644 index 00000000000..ded4336fc88 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59501-3a.c @@ -0,0 +1,15 @@ +/* PR target/59501 */ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-O2 -mavx -mno-accumulate-outgoing-args" } */ + +typedef double V __attribute__ ((vector_size (32))); + +V +foo (double *x, int a, int b, int c, int d, int e, int f, unsigned *y) +{ + V r = { x[y[0]], x[y[1]], x[y[2]], x[y[3]] }; + return r; +} + +/* Verify no dynamic realignment is performed. */ +/* { dg-final { scan-assembler-not "and\[^\n\r]*sp" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr59501-4.c b/gcc/testsuite/gcc.target/i386/pr59501-4.c new file mode 100644 index 00000000000..43a5ad2428a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59501-4.c @@ -0,0 +1,5 @@ +/* PR target/59501 */ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx -maccumulate-outgoing-args" } */ + +#include "pr59501-3.c" diff --git a/gcc/testsuite/gcc.target/i386/pr59501-4a.c b/gcc/testsuite/gcc.target/i386/pr59501-4a.c new file mode 100644 index 00000000000..5c3cb683a2e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59501-4a.c @@ -0,0 +1,8 @@ +/* PR target/59501 */ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-O2 -mavx -maccumulate-outgoing-args" } */ + +#include "pr59501-3a.c" + +/* Verify no dynamic realignment is performed. */ +/* { dg-final { scan-assembler-not "and\[^\n\r]*sp" { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr59501-5.c b/gcc/testsuite/gcc.target/i386/pr59501-5.c new file mode 100644 index 00000000000..f2feca8ec4f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59501-5.c @@ -0,0 +1,39 @@ +/* PR target/59501 */ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx -mno-accumulate-outgoing-args" } */ + +#define CHECK_H "avx-check.h" +#define TEST avx_test + +#include CHECK_H + +typedef double V __attribute__ ((vector_size (32))); + +__attribute__((noinline, noclone)) void +bar (char *p) +{ + p[0] = 1; + p[37] = 2; + asm volatile ("" : : "r" (p) : "memory"); +} + +__attribute__((noinline, noclone)) V +foo (double *x, int a, int b, int c, int d, int e, int f, unsigned *y) +{ + bar (__builtin_alloca (a + b + c + d + e + f)); + V r = { x[y[0]], x[y[1]], x[y[2]], x[y[3]] }; + return r; +} + +static void +TEST (void) +{ + double a[16]; + unsigned b[4] = { 5, 0, 15, 7 }; + int i; + for (i = 0; i < 16; i++) + a[i] = 0.5 + i; + V v = foo (a, 0, 30, 0, 0, 8, 0, b); + if (v[0] != 5.5 || v[1] != 0.5 || v[2] != 15.5 || v[3] != 7.5) + __builtin_abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/pr59501-6.c b/gcc/testsuite/gcc.target/i386/pr59501-6.c new file mode 100644 index 00000000000..d0ac2425b90 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59501-6.c @@ -0,0 +1,5 @@ +/* PR target/59501 */ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx -maccumulate-outgoing-args" } */ + +#include "pr59501-5.c" -- cgit v1.2.1 From 4433d0ad29b411a58e1fef1b8868806f2fea5153 Mon Sep 17 00:00:00 2001 From: vmakarov Date: Mon, 30 Dec 2013 16:10:14 +0000 Subject: 2013-12-30 Felix Yang * ira-costs.c (cost_classes_hasher::equal): Check equality of memcmp and 0 if no difference exists for HV1 and HV2. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206246 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/ira-costs.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b0870aa1f85..635704a8be5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-12-30 Felix Yang + + * ira-costs.c (cost_classes_hasher::equal): Check equality of + memcmp and 0 if no difference exists for HV1 and HV2. + 2013-12-30 Jakub Jelinek PR target/59501 diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c index c8d64d5e50a..1d9e1a4e337 100644 --- a/gcc/ira-costs.c +++ b/gcc/ira-costs.c @@ -154,8 +154,9 @@ cost_classes_hasher::hash (const value_type *hv) inline bool cost_classes_hasher::equal (const value_type *hv1, const compare_type *hv2) { - return hv1->num == hv2->num && memcmp (hv1->classes, hv2->classes, - sizeof (enum reg_class) * hv1->num); + return (hv1->num == hv2->num + && memcmp (hv1->classes, hv2->classes, + sizeof (enum reg_class) * hv1->num) == 0); } /* Delete cost classes info V from the hash table. */ -- cgit v1.2.1 From b2cc50a9fce6a1be302a7f4ea6a27b1f43536451 Mon Sep 17 00:00:00 2001 From: nickc Date: Mon, 30 Dec 2013 16:28:08 +0000 Subject: * config/msp430/msp430.c (msp430_print_operand): Rename %B to %b and %A to %Q. Add %A, %B, %C and %D as selectors for 16-bit parts of a 64-bit operand. * config/msp430/msp430.md: Replace uses of %B with %b and uses of %A with %q. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206247 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 +++++ gcc/config/msp430/msp430.c | 66 ++++++++++++++++++++++++++++++++-- gcc/config/msp430/msp430.md | 86 ++++++++++++++++++++++----------------------- 3 files changed, 115 insertions(+), 45 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 635704a8be5..1a6ae5e7692 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-12-30 Nick Clifton + + * config/msp430/msp430.c (msp430_print_operand): Rename %B to %b + and %A to %Q. Add %A, %B, %C and %D as selectors for 16-bit parts + of a 64-bit operand. + * config/msp430/msp430.md: Replace uses of %B with %b and uses of + %A with %q. + 2013-12-30 Felix Yang * ira-costs.c (cost_classes_hasher::equal): Check equality of diff --git a/gcc/config/msp430/msp430.c b/gcc/config/msp430/msp430.c index 6887d505d31..beee438aeb9 100644 --- a/gcc/config/msp430/msp430.c +++ b/gcc/config/msp430/msp430.c @@ -1914,6 +1914,24 @@ msp430_print_operand_addr (FILE * file, rtx addr) #undef TARGET_PRINT_OPERAND #define TARGET_PRINT_OPERAND msp430_print_operand +/* A low 16-bits of int/lower of register pair + B high 16-bits of int/higher of register pair + C bits 32-47 of a 64-bit value/reg 3 of a DImode value + D bits 48-63 of a 64-bit value/reg 4 of a DImode value + H like %B (for backwards compatibility) + I inverse of value + L like %A (for backwards compatibility) + O offset of the top of the stack + Q like X but generates an A postfix + R inverse of condition code, unsigned. + X X instruction postfix in large mode + Y value - 4 + Z value - 1 + b .B or .W or .A, depending upon the mode + p bit position + r inverse of condition code + x like X but only for pointers. */ + static void msp430_print_operand (FILE * file, rtx op, int letter) { @@ -1978,7 +1996,7 @@ msp430_print_operand (FILE * file, rtx op, int letter) gcc_assert (CONST_INT_P (op)); fprintf (file, "#%d", 1 << INTVAL (op)); return; - case 'B': + case 'b': switch (GET_MODE (op)) { case QImode: fprintf (file, ".B"); return; @@ -1988,6 +2006,7 @@ msp430_print_operand (FILE * file, rtx op, int letter) default: return; } + case 'A': case 'L': /* Low half. */ switch (GET_CODE (op)) { @@ -2005,6 +2024,7 @@ msp430_print_operand (FILE * file, rtx op, int letter) gcc_unreachable (); } break; + case 'B': case 'H': /* high half */ switch (GET_CODE (op)) { @@ -2023,6 +2043,42 @@ msp430_print_operand (FILE * file, rtx op, int letter) gcc_unreachable (); } break; + case 'C': + switch (GET_CODE (op)) + { + case MEM: + op = adjust_address (op, Pmode, 3); + break; + case REG: + op = gen_rtx_REG (Pmode, REGNO (op) + 2); + break; + case CONST_INT: + op = GEN_INT (INTVAL (op) >> 32); + letter = 0; + break; + default: + /* If you get here, figure out a test case :-) */ + gcc_unreachable (); + } + break; + case 'D': + switch (GET_CODE (op)) + { + case MEM: + op = adjust_address (op, Pmode, 4); + break; + case REG: + op = gen_rtx_REG (Pmode, REGNO (op) + 3); + break; + case CONST_INT: + op = GEN_INT (INTVAL (op) >> 48); + letter = 0; + break; + default: + /* If you get here, figure out a test case :-) */ + gcc_unreachable (); + } + break; case 'X': /* This is used to turn, for example, an ADD opcode into an ADDX @@ -2039,7 +2095,7 @@ msp430_print_operand (FILE * file, rtx op, int letter) fprintf (file, "X"); return; - case 'A': + case 'Q': /* Likewise, for BR -> BRA. */ if (TARGET_LARGE) fprintf (file, "A"); @@ -2053,6 +2109,12 @@ msp430_print_operand (FILE * file, rtx op, int letter) msp430_initial_elimination_offset (ARG_POINTER_REGNUM, STACK_POINTER_REGNUM) - 2); return; + + case 0: + break; + default: + output_operand_lossage ("invalid operand prefix"); + return; } switch (GET_CODE (op)) diff --git a/gcc/config/msp430/msp430.md b/gcc/config/msp430/msp430.md index 93ff3bd21f8..ef59beeb6c6 100644 --- a/gcc/config/msp430/msp430.md +++ b/gcc/config/msp430/msp430.md @@ -87,7 +87,7 @@ [(unspec_volatile [(match_operand 0 "register_operand" "r") (match_operand 1 "immediate_operand" "n")] UNS_PUSHM)] "" - "PUSHM%B0\t%1, %0" + "PUSHM%b0\t%1, %0" ) (define_insn "pop" @@ -105,7 +105,7 @@ ) ;; This is nasty. Operand0 is bogus. It is only there so that we can get a -;; mode for the %B0 to work. We should use operand1 for this, but that does +;; mode for the %b0 to work. We should use operand1 for this, but that does ;; not have a mode. ;; ;; Operand1 is actually a register, but we cannot accept (REG...) because the @@ -115,7 +115,7 @@ ;; because that is the only operator that will omit the # prefix to an ;; integer value. Unfortunately it also inverts the integer value, so we ;; have pre-invert it when generating this insn. (We could of course add a -;; new operator, eg %D, just for this pattern...) +;; new operator, eg %J, just for this pattern...) ;; ;; The pushm pattern does not have this problem because of all of the ;; frame info cruft attached to it, so cprop_hardreg leaves it alone. @@ -124,7 +124,7 @@ (match_operand 1 "immediate_operand" "i") (match_operand 2 "immediate_operand" "i")] UNS_POPM)] "" - "POPM%B0\t%2, r%I1" + "POPM%b0\t%2, r%I1" ) ;; The next two patterns are here to support a "feature" of how GCC implements @@ -215,9 +215,9 @@ (match_operand:PSI 1 "msp_general_operand" "riYa,r,rmi"))] "" "@ - MOV%A0\t%1, %0 - MOV%A0\t%1, %0 - MOV%X0.%A0\t%1, %0") + MOV%Q0\t%1, %0 + MOV%Q0\t%1, %0 + MOV%X0.%Q0\t%1, %0") ; This pattern is identical to the truncsipsi2 pattern except ; that it uses a SUBREG instead of a TRUNC. It is needed in @@ -316,7 +316,7 @@ ; that are not single_set() very well. (define_insn "addhi3_cy" - [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=r,rm") + [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=r,rm") (plus:HI (match_operand:HI 1 "msp_nonimmediate_operand" "%0,0") (match_operand:HI 2 "msp_general_operand" "r,rm"))) (set (reg:BI CARRY) @@ -347,7 +347,7 @@ ; Version of addhi that adds the carry, for SImode adds. (define_insn "addchi4_cy" - [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=r,rm") + [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=r,rm") (plus:HI (plus:HI (match_operand:HI 1 "msp_nonimmediate_operand" "%0,0") (match_operand:HI 2 "msp_general_operand" "ri,rmi")) (zero_extend:HI (reg:BI CARRY)))) @@ -362,7 +362,7 @@ ; so that gcc knows when it can and can't optimize away the two ; halves. (define_split - [(set (match_operand:SI 0 "msp430_nonsubreg_operand") + [(set (match_operand:SI 0 "msp430_nonsubreg_operand") (plus:SI (match_operand:SI 1 "nonimmediate_operand") (match_operand:SI 2 "general_operand"))) ] @@ -452,8 +452,8 @@ (match_operand 2 "msp430_inv_constgen_operator" "n,n")))] "" "@ - BIC%x0%B0\t#%I2, %0 - BIC%X0%B0\t#%I2, %0" + BIC%x0%b0\t#%I2, %0 + BIC%X0%b0\t#%I2, %0" ) (define_insn "bic3" @@ -462,8 +462,8 @@ (match_operand:QHI 2 "msp_nonimmediate_operand" "0,0")))] "" "@ - BIC%x0%B0\t%1, %0 - BIC%X0%B0\t%1, %0" + BIC%x0%b0\t%1, %0 + BIC%X0%b0\t%1, %0" ) (define_insn "and3" @@ -472,42 +472,42 @@ (match_operand:QHI 2 "msp_general_operand" "riYs,rmi")))] "" "@ - AND%x0%B0\t%2, %0 - AND%X0%B0\t%2, %0" + AND%x0%b0\t%2, %0 + AND%X0%b0\t%2, %0" ) (define_insn "ior3" - [(set (match_operand:QHI 0 "msp_nonimmediate_operand" "=rYs,rm") + [(set (match_operand:QHI 0 "msp_nonimmediate_operand" "=rYs,rm") (ior:QHI (match_operand:QHI 1 "msp_nonimmediate_operand" "%0,0") (match_operand:QHI 2 "msp_general_operand" "riYs,rmi")))] "" "@ - BIS%x0%B0\t%2, %0 - BIS%X0%B0\t%2, %0" + BIS%x0%b0\t%2, %0 + BIS%X0%b0\t%2, %0" ) (define_insn "xor3" - [(set (match_operand:QHI 0 "msp_nonimmediate_operand" "=rYs,rm") + [(set (match_operand:QHI 0 "msp_nonimmediate_operand" "=rYs,rm") (xor:QHI (match_operand:QHI 1 "msp_nonimmediate_operand" "%0,0") (match_operand:QHI 2 "msp_general_operand" "riYs,rmi")))] "" "@ - XOR%x0%B0\t%2, %0 - XOR%X0%B0\t%2, %0" + XOR%x0%b0\t%2, %0 + XOR%X0%b0\t%2, %0" ) ;; Macro : XOR #~0, %0 (define_insn "one_cmpl2" - [(set (match_operand:QHI 0 "msp_nonimmediate_operand" "=rYs,m") + [(set (match_operand:QHI 0 "msp_nonimmediate_operand" "=rYs,m") (not:QHI (match_operand:QHI 1 "msp_nonimmediate_operand" "0,0")))] "" "@ - INV%x0%B0\t%0 - INV%X0%B0\t%0" + INV%x0%b0\t%0 + INV%X0%b0\t%0" ) (define_insn "extendqihi2" - [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=rYs,m") + [(set (match_operand:HI 0 "msp_nonimmediate_operand" "=rYs,m") (sign_extend:HI (match_operand:QI 1 "msp_nonimmediate_operand" "0,0")))] "" "@ @@ -920,7 +920,7 @@ (define_insn "epilogue_helper" [(unspec_volatile [(match_operand 0 "immediate_operand" "i")] UNS_EPILOGUE_HELPER)] "" - "BR%A0\t#__mspabi_func_epilog_%D0" + "BR%Q0\t#__mspabi_func_epilog_%0" ) @@ -956,7 +956,7 @@ [(call (mem:HI (match_operand 0 "general_operand" "rmi")) (match_operand 1 ""))] "" - "CALL%A0\t%0" + "CALL%Q0\t%0" ) (define_expand "call_value" @@ -972,7 +972,7 @@ (call (mem:HI (match_operand 1 "general_operand" "rmi")) (match_operand 2 "")))] "" - "CALL%A0\t%1" + "CALL%Q0\t%1" ) (define_insn "msp_return" @@ -1010,7 +1010,7 @@ [(set (pc) (label_ref (match_operand 0 "" "")))] "" - "BR%A0\t#%l0" + "BR%Q0\t#%l0" ) ;; FIXME: GCC currently (8/feb/2013) cannot handle symbol_refs @@ -1019,7 +1019,7 @@ [(set (pc) (match_operand 0 "nonimmediate_operand" "rYl"))] "" - "BR%A0\t%0" + "BR%Q0\t%0" ) ;;------------------------------------------------------------ @@ -1049,7 +1049,7 @@ ] "" "@ - CMP%A0\t%2, %1 { J%0\t%l3 + CMP%Q0\t%2, %1 { J%0\t%l3 CMPX.A\t%2, %1 { J%0\t%l3 CMPX.A\t%2, %1 { J%0\t%l3" ) @@ -1095,7 +1095,7 @@ ] "" "@ - CMP%A0\t%1, %2 { J%R0\t%l3 + CMP%Q0\t%1, %2 { J%R0\t%l3 CMPX.A\t%1, %2 { J%R0\t%l3 CMPX.A\t%1, %2 { J%R0\t%l3" ) @@ -1141,8 +1141,8 @@ ] "" "@ - BIT%x0%B0\t%1, %0 { JNE\t%l2 - BIT%X0%B0\t%1, %0 { JNE\t%l2" + BIT%x0%b0\t%1, %0 { JNE\t%l2 + BIT%X0%b0\t%1, %0 { JNE\t%l2" ) (define_insn "*bitbranch4" @@ -1155,7 +1155,7 @@ (clobber (reg:BI CARRY)) ] "" - "BIT%x0%X0%B0\t%1, %0 { JEQ\t%l2" + "BIT%x0%X0%b0\t%1, %0 { JEQ\t%l2" ) (define_insn "*bitbranch4" @@ -1168,7 +1168,7 @@ (clobber (reg:BI CARRY)) ] "" - "BIT%X0%B0\t%1, %0 { JNE\t%l2" + "BIT%X0%b0\t%1, %0 { JNE\t%l2" ) (define_insn "*bitbranch4" @@ -1181,7 +1181,7 @@ (clobber (reg:BI CARRY)) ] "" - "BIT%X0%B0\t%1, %0 { JEQ\t%l2" + "BIT%X0%b0\t%1, %0 { JEQ\t%l2" ) ;;------------------------------------------------------------ @@ -1199,8 +1199,8 @@ ] "" "@ - BIT%x0%B0\t%p1, %0 { JNE\t%l2 - BIT%X0%B0\t%p1, %0 { JNE\t%l2" + BIT%x0%b0\t%p1, %0 { JNE\t%l2 + BIT%X0%b0\t%p1, %0 { JNE\t%l2" ) (define_insn "*bitbranch4_z" @@ -1214,7 +1214,7 @@ (clobber (reg:BI CARRY)) ] "" - "BIT%x0%X0%B0\t%p1, %0 { JEQ\t%l2" + "BIT%x0%X0%b0\t%p1, %0 { JEQ\t%l2" ) (define_insn "*bitbranch4_z" @@ -1228,7 +1228,7 @@ (clobber (reg:BI CARRY)) ] "" - "BIT%X0%B0\t%p1, %0 { JNE\t%l2" + "BIT%X0%b0\t%p1, %0 { JNE\t%l2" ) (define_insn "*bitbranch4_z" @@ -1242,7 +1242,7 @@ (clobber (reg:BI CARRY)) ] "" - "BIT%X0%B0\t%p1, %0 { JEQ\t%l2" + "BIT%X0%b0\t%p1, %0 { JEQ\t%l2" ) ;;------------------------------------------------------------ -- cgit v1.2.1 From dbe41d8cd456967fb142ff1fa49dec23c694070d Mon Sep 17 00:00:00 2001 From: jakub Date: Mon, 30 Dec 2013 17:05:10 +0000 Subject: PR tree-optimization/59591 * tree-vect-stmts.c (vectorizable_mask_load_store): Fix up handling of modifier = NARROW masked gathers. (permute_vec_elements): Use gimple_get_lhs instead of gimple_assign_lhs. * gcc.dg/vect/pr59591-1.c: New test. * gcc.dg/vect/pr59591-2.c: New test. * gcc.target/i386/pr59591-1.c: New test. * gcc.target/i386/pr59591-2.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206248 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++ gcc/testsuite/ChangeLog | 6 +++ gcc/testsuite/gcc.dg/vect/pr59591-1.c | 55 +++++++++++++++++++++++ gcc/testsuite/gcc.dg/vect/pr59591-2.c | 56 ++++++++++++++++++++++++ gcc/testsuite/gcc.target/i386/pr59591-1.c | 17 ++++++++ gcc/testsuite/gcc.target/i386/pr59591-2.c | 17 ++++++++ gcc/tree-vect-stmts.c | 72 ++++++++++++++++++------------- 7 files changed, 201 insertions(+), 30 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/vect/pr59591-1.c create mode 100644 gcc/testsuite/gcc.dg/vect/pr59591-2.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59591-1.c create mode 100644 gcc/testsuite/gcc.target/i386/pr59591-2.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1a6ae5e7692..09e0ad22927 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-12-30 Jakub Jelinek + + PR tree-optimization/59591 + * tree-vect-stmts.c (vectorizable_mask_load_store): Fix up handling + of modifier = NARROW masked gathers. + (permute_vec_elements): Use gimple_get_lhs instead of + gimple_assign_lhs. + 2013-12-30 Nick Clifton * config/msp430/msp430.c (msp430_print_operand): Rename %B to %b diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e5f1a82c887..3d686751d8a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,11 @@ 2013-12-30 Jakub Jelinek + PR tree-optimization/59591 + * gcc.dg/vect/pr59591-1.c: New test. + * gcc.dg/vect/pr59591-2.c: New test. + * gcc.target/i386/pr59591-1.c: New test. + * gcc.target/i386/pr59591-2.c: New test. + PR target/59501 * gcc.target/i386/pr59501-1.c: New test. * gcc.target/i386/pr59501-1a.c: New test. diff --git a/gcc/testsuite/gcc.dg/vect/pr59591-1.c b/gcc/testsuite/gcc.dg/vect/pr59591-1.c new file mode 100644 index 00000000000..b216deea91d --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr59591-1.c @@ -0,0 +1,55 @@ +/* PR tree-optimization/59591 */ +/* { dg-do run } */ +/* { dg-additional-options "-fopenmp-simd" } */ + +#ifndef CHECK_H +#include "tree-vect.h" +#endif + +extern void abort (void); + +int p[256], q[256], r[256], t[256]; + +__attribute__((noinline, noclone)) void +foo (void) +{ + int i; + #pragma omp simd safelen(64) + for (i = 0; i < 256; i++) + if (r[i] > 32) + t[i] = p[q[i] * 3L + 2L]; +} + +__attribute__((noinline, noclone)) void +bar (void) +{ + int i; + for (i = 0; i < 256; i++) + { + r[i] = ((i >> 2) & (1 << (i & 3))) ? 32 + i : 32 - i; + q[i] = r[i] > 32 ? ((i * 7) % 84) : 99 + i; + p[i] = i * 11; + t[i] = i * 13; + } + foo (); + for (i = 0; i < 256; i++) + if ((i >> 2) & (1 << (i & 3))) + { + if (t[i] != (((i * 7) % 84) * 3 + 2) * 11) + abort (); + } + else if (t[i] != i * 13) + abort (); +} + +#ifndef CHECK_H +int +main () +{ + check_vect (); + bar (); + return 0; +} +#endif + +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/pr59591-2.c b/gcc/testsuite/gcc.dg/vect/pr59591-2.c new file mode 100644 index 00000000000..429b187bf22 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr59591-2.c @@ -0,0 +1,56 @@ +/* PR tree-optimization/59591 */ +/* { dg-do run } */ +/* { dg-additional-options "-fopenmp-simd" } */ + +#ifndef CHECK_H +#include "tree-vect.h" +#endif + +extern void abort (void); + +long long int p[256], r[256], t[256]; +int q[256]; + +__attribute__((noinline, noclone)) void +foo (void) +{ + int i; + #pragma omp simd safelen(64) + for (i = 0; i < 256; i++) + if (r[i] > 32LL) + t[i] = p[q[i]]; +} + +__attribute__((noinline, noclone)) void +bar (void) +{ + int i; + for (i = 0; i < 256; i++) + { + r[i] = ((i >> 2) & (1 << (i & 3))) ? 32 + i : 32 - i; + q[i] = r[i] > 32 ? ((i * 7) % 256) : 258 + i; + p[i] = i * 11; + t[i] = i * 13; + } + foo (); + for (i = 0; i < 256; i++) + if ((i >> 2) & (1 << (i & 3))) + { + if (t[i] != ((i * 7) % 256) * 11) + abort (); + } + else if (t[i] != i * 13) + abort (); +} + +#ifndef CHECK_H +int +main () +{ + check_vect (); + bar (); + return 0; +} +#endif + +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr59591-1.c b/gcc/testsuite/gcc.target/i386/pr59591-1.c new file mode 100644 index 00000000000..a88c6fd9365 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59591-1.c @@ -0,0 +1,17 @@ +/* PR tree-optimization/59591 */ +/* { dg-do run } */ +/* { dg-options "-O2 -fopenmp-simd -mavx2 -fno-vect-cost-model" } */ +/* { dg-require-effective-target avx2 } */ + +#define CHECK_H "avx2-check.h" +#define TEST avx2_test + +#include "../../gcc.dg/vect/pr59591-1.c" + +#include CHECK_H + +static void +TEST (void) +{ + bar (); +} diff --git a/gcc/testsuite/gcc.target/i386/pr59591-2.c b/gcc/testsuite/gcc.target/i386/pr59591-2.c new file mode 100644 index 00000000000..c0323649b49 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59591-2.c @@ -0,0 +1,17 @@ +/* PR tree-optimization/59591 */ +/* { dg-do run } */ +/* { dg-options "-O2 -fopenmp-simd -mavx2 -fno-vect-cost-model" } */ +/* { dg-require-effective-target avx2 } */ + +#define CHECK_H "avx2-check.h" +#define TEST avx2_test + +#include "../../gcc.dg/vect/pr59591-2.c" + +#include CHECK_H + +static void +TEST (void) +{ + bar (); +} diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index e3009d9a474..a07c14d153e 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -1855,14 +1855,24 @@ vectorizable_mask_load_store (gimple stmt, gimple_stmt_iterator *gsi, tree vec_oprnd0 = NULL_TREE, op; tree arglist = TYPE_ARG_TYPES (TREE_TYPE (gather_decl)); tree rettype, srctype, ptrtype, idxtype, masktype, scaletype; - tree ptr, vec_mask = NULL_TREE, mask_op, var, scale; + tree ptr, vec_mask = NULL_TREE, mask_op = NULL_TREE, var, scale; tree perm_mask = NULL_TREE, prev_res = NULL_TREE; + tree mask_perm_mask = NULL_TREE; edge pe = loop_preheader_edge (loop); gimple_seq seq; basic_block new_bb; enum { NARROW, NONE, WIDEN } modifier; int gather_off_nunits = TYPE_VECTOR_SUBPARTS (gather_off_vectype); + rettype = TREE_TYPE (TREE_TYPE (gather_decl)); + srctype = TREE_VALUE (arglist); arglist = TREE_CHAIN (arglist); + ptrtype = TREE_VALUE (arglist); arglist = TREE_CHAIN (arglist); + idxtype = TREE_VALUE (arglist); arglist = TREE_CHAIN (arglist); + masktype = TREE_VALUE (arglist); arglist = TREE_CHAIN (arglist); + scaletype = TREE_VALUE (arglist); + gcc_checking_assert (types_compatible_p (srctype, rettype) + && types_compatible_p (srctype, masktype)); + if (nunits == gather_off_nunits) modifier = NONE; else if (nunits == gather_off_nunits / 2) @@ -1888,19 +1898,14 @@ vectorizable_mask_load_store (gimple stmt, gimple_stmt_iterator *gsi, perm_mask = vect_gen_perm_mask (vectype, sel); gcc_assert (perm_mask != NULL_TREE); ncopies *= 2; + for (i = 0; i < nunits; ++i) + sel[i] = i | gather_off_nunits; + mask_perm_mask = vect_gen_perm_mask (masktype, sel); + gcc_assert (mask_perm_mask != NULL_TREE); } else gcc_unreachable (); - rettype = TREE_TYPE (TREE_TYPE (gather_decl)); - srctype = TREE_VALUE (arglist); arglist = TREE_CHAIN (arglist); - ptrtype = TREE_VALUE (arglist); arglist = TREE_CHAIN (arglist); - idxtype = TREE_VALUE (arglist); arglist = TREE_CHAIN (arglist); - masktype = TREE_VALUE (arglist); arglist = TREE_CHAIN (arglist); - scaletype = TREE_VALUE (arglist); - gcc_checking_assert (types_compatible_p (srctype, rettype) - && types_compatible_p (srctype, masktype)); - vec_dest = vect_create_destination_var (gimple_call_lhs (stmt), vectype); ptr = fold_convert (ptrtype, gather_base); @@ -1940,28 +1945,35 @@ vectorizable_mask_load_store (gimple stmt, gimple_stmt_iterator *gsi, op = var; } - if (j == 0) - vec_mask = vect_get_vec_def_for_operand (mask, stmt, NULL); + if (mask_perm_mask && (j & 1)) + mask_op = permute_vec_elements (mask_op, mask_op, + mask_perm_mask, stmt, gsi); else { - vect_is_simple_use (vec_mask, NULL, loop_vinfo, NULL, &def_stmt, - &def, &dt); - vec_mask = vect_get_vec_def_for_stmt_copy (dt, vec_mask); - } + if (j == 0) + vec_mask = vect_get_vec_def_for_operand (mask, stmt, NULL); + else + { + vect_is_simple_use (vec_mask, NULL, loop_vinfo, NULL, + &def_stmt, &def, &dt); + vec_mask = vect_get_vec_def_for_stmt_copy (dt, vec_mask); + } - mask_op = vec_mask; - if (!useless_type_conversion_p (masktype, TREE_TYPE (vec_mask))) - { - gcc_assert (TYPE_VECTOR_SUBPARTS (TREE_TYPE (mask_op)) - == TYPE_VECTOR_SUBPARTS (masktype)); - var = vect_get_new_vect_var (masktype, vect_simple_var, NULL); - var = make_ssa_name (var, NULL); - mask_op = build1 (VIEW_CONVERT_EXPR, masktype, mask_op); - new_stmt - = gimple_build_assign_with_ops (VIEW_CONVERT_EXPR, var, - mask_op, NULL_TREE); - vect_finish_stmt_generation (stmt, new_stmt, gsi); - mask_op = var; + mask_op = vec_mask; + if (!useless_type_conversion_p (masktype, TREE_TYPE (vec_mask))) + { + gcc_assert (TYPE_VECTOR_SUBPARTS (TREE_TYPE (mask_op)) + == TYPE_VECTOR_SUBPARTS (masktype)); + var = vect_get_new_vect_var (masktype, vect_simple_var, + NULL); + var = make_ssa_name (var, NULL); + mask_op = build1 (VIEW_CONVERT_EXPR, masktype, mask_op); + new_stmt + = gimple_build_assign_with_ops (VIEW_CONVERT_EXPR, var, + mask_op, NULL_TREE); + vect_finish_stmt_generation (stmt, new_stmt, gsi); + mask_op = var; + } } new_stmt @@ -5446,7 +5458,7 @@ permute_vec_elements (tree x, tree y, tree mask_vec, gimple stmt, tree perm_dest, data_ref; gimple perm_stmt; - perm_dest = vect_create_destination_var (gimple_assign_lhs (stmt), vectype); + perm_dest = vect_create_destination_var (gimple_get_lhs (stmt), vectype); data_ref = make_ssa_name (perm_dest, NULL); /* Generate the permute statement. */ -- cgit v1.2.1 From 92b18bc08101bcc6b167c0bf0e1532fa334f1c78 Mon Sep 17 00:00:00 2001 From: janus Date: Mon, 30 Dec 2013 17:33:21 +0000 Subject: 2013-12-30 Janus Weil PR fortran/58998 * resolve.c (resolve_symbol): Check that symbol is not only flavorless but also untyped. 2013-12-30 Janus Weil PR fortran/58998 * gfortran.dg/generic_28.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206249 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/resolve.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/generic_28.f90 | 18 ++++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/generic_28.f90 (limited to 'gcc') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 60922b86450..6c7cea7c4a4 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2013-12-30 Janus Weil + + PR fortran/58998 + * resolve.c (resolve_symbol): Check that symbol is not only flavorless + but also untyped. + 2013-12-29 Janus Weil PR fortran/59612 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 57e6cbb979e..54cfdd6fd68 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -12732,7 +12732,8 @@ resolve_symbol (gfc_symbol *sym) if (sym->attr.flavor == FL_UNKNOWN || (sym->attr.flavor == FL_PROCEDURE && !sym->attr.intrinsic && !sym->attr.generic && !sym->attr.external - && sym->attr.if_source == IFSRC_UNKNOWN)) + && sym->attr.if_source == IFSRC_UNKNOWN + && sym->ts.type == BT_UNKNOWN)) { /* If we find that a flavorless symbol is an interface in one of the diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3d686751d8a..8f94e495a0b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-30 Janus Weil + + PR fortran/58998 + * gfortran.dg/generic_28.f90: New. + 2013-12-30 Jakub Jelinek PR tree-optimization/59591 diff --git a/gcc/testsuite/gfortran.dg/generic_28.f90 b/gcc/testsuite/gfortran.dg/generic_28.f90 new file mode 100644 index 00000000000..5ddc9798f98 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/generic_28.f90 @@ -0,0 +1,18 @@ +! { dg-do compile } +! +! PR 58998: [4.8/4.9 Regression] Generic interface problem with gfortran +! +! Contributed by Paul van Delst + + interface iargc + procedure iargc_8 + end interface + +contains + + integer(8) function iargc_8() + integer(4) iargc + iargc_8 = iargc() + end function + +end -- cgit v1.2.1 From 44a9bb76e9a99aa7bc5c8b65066f4f0b910af20f Mon Sep 17 00:00:00 2001 From: nickc Date: Mon, 30 Dec 2013 17:37:08 +0000 Subject: PR target/59631 * stor-layout.c (get_mode_bounds): Use GET_MODE_PRECISION instead of GET_MODE_BITSIZE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206250 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/stor-layout.c | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 09e0ad22927..3d2a3d26e4f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -6,6 +6,13 @@ (permute_vec_elements): Use gimple_get_lhs instead of gimple_assign_lhs. +2013-12-30 Nick Clifton + Peter Bigot + + PR target/59631 + * stor-layout.c (get_mode_bounds): Use GET_MODE_PRECISION instead + of GET_MODE_BITSIZE. + 2013-12-30 Nick Clifton * config/msp430/msp430.c (msp430_print_operand): Rename %B to %b diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 675a12386eb..26fa2452744 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -2816,7 +2816,7 @@ get_mode_bounds (enum machine_mode mode, int sign, enum machine_mode target_mode, rtx *mmin, rtx *mmax) { - unsigned size = GET_MODE_BITSIZE (mode); + unsigned size = GET_MODE_PRECISION (mode); unsigned HOST_WIDE_INT min_val, max_val; gcc_assert (size <= HOST_BITS_PER_WIDE_INT); -- cgit v1.2.1 From e4a9acaf65a750f28b51645af4fb2f20a30e0312 Mon Sep 17 00:00:00 2001 From: mrs Date: Mon, 30 Dec 2013 19:06:25 +0000 Subject: Fix spacing. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206251 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 242342b5453..146e67c589a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -35,7 +35,7 @@ 2013-12-18 Balaji V. Iyer * parser.c (cp_parser_cilk_simd_clause_name): Changed cilk_clause_name - to omp_clause_name. + to omp_clause_name. 2013-12-17 Thomas Schwinge @@ -74,7 +74,7 @@ * cp-gimplify.c (cp_gimplify_expr): Added a CILK_SPAWN_STMT and CALL_EXPR case. Added handling of spawned function in MODIFY_EXPR and INIT_EXPR. - + 2013-12-09 Paolo Carlini PR c++/59435 @@ -2176,19 +2176,19 @@ ARRAY_NOTATION_REF case. * cp-gimplify.c (cp_genericize): Added expansion of array notation expressions here. - * cp-array-notation.c (make_triplet_val_inv): Removed loc and cry + * cp-array-notation.c (make_triplet_val_inv): Removed loc and cry parameters. Replaced build_decls with get_temp_regvar with type as ptrdiff. (create_array_refs): Made the type-casting to ptrdiff_type. - (replace_invariant_var): Added a check for void return type before + (replace_invariant_var): Added a check for void return type before creating new var. Replaced build_decl and build_min_nt_loc with get_temp_regvar. - (expand_an_in_modify_expr): Ditto. Replaced body of redundant else - with gcc_unreachable. Removed few unwanted checks. Made induction - variable type as ptrdiff_type. Removed loc and complain arguments - passed into make_triplet_val_inv. Replaced all modify expression's - code from NOP EXPR to INIT EXPR. Replaced all forceful appending - into stmt. list with the non-forceful one. Replaced some integer + (expand_an_in_modify_expr): Ditto. Replaced body of redundant else + with gcc_unreachable. Removed few unwanted checks. Made induction + variable type as ptrdiff_type. Removed loc and complain arguments + passed into make_triplet_val_inv. Replaced all modify expression's + code from NOP EXPR to INIT EXPR. Replaced all forceful appending + into stmt. list with the non-forceful one. Replaced some integer conversion and equality-checking to using tree_int_cst_equal. (expand_sec_reduce_builtin): All changes mentioned in above function expand_an_in_modify_expr. Made the new variable type of -- cgit v1.2.1 From 3f0637f98b1f93a6791db3fa01d0836ff66e9395 Mon Sep 17 00:00:00 2001 From: mrs Date: Mon, 30 Dec 2013 19:34:53 +0000 Subject: PR c++/41090 * g++.dg/ext/label13.C: Update to not expect failures. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206252 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/ext/label13.C | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8f94e495a0b..bd670ebd4f3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-30 Mike Stump + + PR c++/41090 + * g++.dg/ext/label13.C: Update to not expect failures. + 2013-12-30 Janus Weil PR fortran/58998 diff --git a/gcc/testsuite/g++.dg/ext/label13.C b/gcc/testsuite/g++.dg/ext/label13.C index 6551c0a41d4..0887d46a2f0 100644 --- a/gcc/testsuite/g++.dg/ext/label13.C +++ b/gcc/testsuite/g++.dg/ext/label13.C @@ -8,7 +8,7 @@ struct C C(); }; -C::C() // { dg-bogus "can never be copied" "" { xfail { { *-apple-darwin* } || { hppa*-*-hpux* && { ! lp64 } } } } } +C::C() // { dg-bogus "can never be copied" "" } { static void *labelref = &&label; goto *labelref; -- cgit v1.2.1 From 67b0eaca86935ccfefb5482499e00033fdf08203 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 31 Dec 2013 00:16:59 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206255 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index a43c3c45a69..3e6006fbda7 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131230 +20131231 -- cgit v1.2.1 From de65406d2e2c1bca110b9193527c0870d9882b86 Mon Sep 17 00:00:00 2001 From: cltang Date: Tue, 31 Dec 2013 07:05:35 +0000 Subject: Commit of nios2 port to trunk: contrib/ 2013-12-31 Chung-Lin Tang * config-list.mk: Add nios2-elf, nios2-linux-gnu. Corrected ordering of some configs. gcc/ 2013-12-31 Chung-Lin Tang Sandra Loosemore Based on patches from Altera Corporation * config.gcc (nios2-*-*): Add nios2 config targets. * configure.ac (TLS_SECTION_ASM_FLAG): Add nios2 case. ("$cpu_type"): Add nios2 as new cpu type. * configure: Regenerate. * config/nios2/nios2.c: New file. * config/nios2/nios2.h: New file. * config/nios2/nios2-opts.h: New file. * config/nios2/nios2-protos.h: New file. * config/nios2/elf.h: New file. * config/nios2/elf.opt: New file. * config/nios2/linux.h: New file. * config/nios2/nios2.opt: New file. * config/nios2/nios2.md: New file. * config/nios2/predicates.md: New file. * config/nios2/constraints.md: New file. * config/nios2/t-nios2: New file. * common/config/nios2/nios2-common.c: New file. * doc/invoke.texi (Nios II options): Document Nios II specific options. * doc/md.texi (Nios II family): Document Nios II specific constraints. * doc/extend.texi (Function Specific Option Pragmas): Document Nios II supported target pragma functionality. gcc/testsuite/ 2013-12-31 Sandra Loosemore Chung-Lin Tang Based on patches from Altera Corporation * gcc.dg/stack-usage-1.c (SIZE): Define case for __nios2__. * gcc.dg/20040813-1.c: Skip for nios2-*-*. * gcc.dg/20020312-2.c: Add __nios2__ case. * g++.dg/other/PR23205.C: Skip for nios2-*-*. * g++.dg/other/pr23205-2.C: Skip for nios2-*-*. * g++.dg/cpp0x/constexpr-rom.C: Skip for nios2-*-*. * g++.dg/cpp0x/alias-decl-debug-0.C: Skip for nios2-*-*. * g++.old-deja/g++.jason/thunk3.C: Skip for nios2-*-*. * lib/target-supports.exp (check_profiling_available): Check for nios2-*-elf. * gcc.c-torture/execute/pr47237.x:: Skip for nios2-*-*. * gcc.c-torture/execute/20101011-1.c: Skip for nios2-*-*. * gcc.c-torture/execute/builtins/lib/chk.c (memset): Place char-based memset loop before inline check, to prevent problems when called to initialize .bss. Update comments. * gcc.target/nios2/nios2.exp: New DejaGNU file. * gcc.target/nios2/nios2-custom-1.c: New test. * gcc.target/nios2/nios2-trap-insn.c: New test. * gcc.target/nios2/nios2-builtin-custom.c: New test. * gcc.target/nios2/nios2-builtin-io.c: New test. * gcc.target/nios2/nios2-stack-check-1.c: New test. * gcc.target/nios2/nios2-stack-check-2.c: New test. * gcc.target/nios2/nios2-rdctl.c: New test. * gcc.target/nios2/nios2-wrctl.c: New test. * gcc.target/nios2/nios2-wrctl-zero.c: New test. * gcc.target/nios2/nios2-wrctl-not-zero.c: New test. * gcc.target/nios2/nios2-rdwrctl-1.c: New test. * gcc.target/nios2/nios2-reg-constraints.c: New test. * gcc.target/nios2/nios2-ashlsi3-one_shift.c: New test. * gcc.target/nios2/nios2-mul-options-1.c: New test. * gcc.target/nios2/nios2-mul-options-2.c: New test. * gcc.target/nios2/nios2-mul-options-3.c: New test. * gcc.target/nios2/nios2-mul-options-4.c: New test. * gcc.target/nios2/nios2-nor.c: New test. * gcc.target/nios2/nios2-stxio.c: New test. * gcc.target/nios2/custom-fp-1.c: New test. * gcc.target/nios2/custom-fp-2.c: New test. * gcc.target/nios2/custom-fp-3.c: New test. * gcc.target/nios2/custom-fp-4.c: New test. * gcc.target/nios2/custom-fp-5.c: New test. * gcc.target/nios2/custom-fp-6.c: New test. * gcc.target/nios2/custom-fp-7.c: New test. * gcc.target/nios2/custom-fp-8.c: New test. * gcc.target/nios2/custom-fp-cmp-1.c: New test. * gcc.target/nios2/custom-fp-conversion.c: New test. * gcc.target/nios2/custom-fp-double.c: New test. * gcc.target/nios2/custom-fp-float.c: New test. * gcc.target/nios2/nios2-int-types.c: New test. * gcc.target/nios2/nios2-cache-1.c: New test. * gcc.target/nios2/nios2-cache-2.c: New test. libgcc/ 2013-12-31 Sandra Loosemore Chung-Lin Tang Based on patches from Altera Corporation * config.host (nios2-*-*,nios2-*-linux*): Add nios2 host cases. * config/nios2/lib2-nios2.h: New file. * config/nios2/lib2-divmod-hi.c: New file. * config/nios2/linux-unwind.h: New file. * config/nios2/lib2-divmod.c: New file. * config/nios2/linux-atomic.c: New file. * config/nios2/t-nios2: New file. * config/nios2/crti.asm: New file. * config/nios2/t-linux: New file. * config/nios2/lib2-divtable.c: New file. * config/nios2/lib2-mul.c: New file. * config/nios2/tramp.c: New file. * config/nios2/crtn.asm: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206256 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 28 + gcc/common/config/nios2/nios2-common.c | 44 + gcc/config.gcc | 17 + gcc/config/nios2/constraints.md | 89 + gcc/config/nios2/elf.h | 52 + gcc/config/nios2/elf.opt | 38 + gcc/config/nios2/linux.h | 38 + gcc/config/nios2/nios2-opts.h | 69 + gcc/config/nios2/nios2-protos.h | 61 + gcc/config/nios2/nios2.c | 3224 ++++++++++++++++++++ gcc/config/nios2/nios2.h | 500 +++ gcc/config/nios2/nios2.md | 1029 +++++++ gcc/config/nios2/nios2.opt | 531 ++++ gcc/config/nios2/predicates.md | 85 + gcc/config/nios2/t-nios2 | 27 + gcc/configure | 11 +- gcc/configure.ac | 11 +- gcc/doc/extend.texi | 148 +- gcc/doc/invoke.texi | 290 ++ gcc/doc/md.texi | 46 + gcc/testsuite/ChangeLog | 55 + gcc/testsuite/g++.dg/cpp0x/alias-decl-debug-0.C | 2 +- gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C | 2 +- gcc/testsuite/g++.dg/other/PR23205.C | 2 +- gcc/testsuite/g++.dg/other/pr23205-2.C | 2 +- gcc/testsuite/g++.old-deja/g++.jason/thunk3.C | 2 +- gcc/testsuite/gcc.c-torture/execute/20101011-1.c | 4 + .../gcc.c-torture/execute/builtins/lib/chk.c | 9 +- gcc/testsuite/gcc.c-torture/execute/pr47237.x | 6 + gcc/testsuite/gcc.dg/20020312-2.c | 2 + gcc/testsuite/gcc.dg/20040813-1.c | 2 +- gcc/testsuite/gcc.dg/stack-usage-1.c | 2 + gcc/testsuite/gcc.target/nios2/custom-fp-1.c | 22 + gcc/testsuite/gcc.target/nios2/custom-fp-2.c | 26 + gcc/testsuite/gcc.target/nios2/custom-fp-3.c | 26 + gcc/testsuite/gcc.target/nios2/custom-fp-4.c | 29 + gcc/testsuite/gcc.target/nios2/custom-fp-5.c | 26 + gcc/testsuite/gcc.target/nios2/custom-fp-6.c | 30 + gcc/testsuite/gcc.target/nios2/custom-fp-7.c | 33 + gcc/testsuite/gcc.target/nios2/custom-fp-8.c | 24 + gcc/testsuite/gcc.target/nios2/custom-fp-cmp-1.c | 53 + .../gcc.target/nios2/custom-fp-conversion.c | 66 + gcc/testsuite/gcc.target/nios2/custom-fp-double.c | 86 + gcc/testsuite/gcc.target/nios2/custom-fp-float.c | 80 + .../gcc.target/nios2/nios2-ashlsi3-one_shift.c | 10 + .../gcc.target/nios2/nios2-builtin-custom.c | 9 + gcc/testsuite/gcc.target/nios2/nios2-builtin-io.c | 26 + gcc/testsuite/gcc.target/nios2/nios2-cache-1.c | 21 + gcc/testsuite/gcc.target/nios2/nios2-cache-2.c | 21 + gcc/testsuite/gcc.target/nios2/nios2-custom-1.c | 64 + gcc/testsuite/gcc.target/nios2/nios2-custom-2.c | 7 + gcc/testsuite/gcc.target/nios2/nios2-int-types.c | 34 + .../gcc.target/nios2/nios2-mul-options-1.c | 11 + .../gcc.target/nios2/nios2-mul-options-2.c | 11 + .../gcc.target/nios2/nios2-mul-options-3.c | 11 + .../gcc.target/nios2/nios2-mul-options-4.c | 11 + gcc/testsuite/gcc.target/nios2/nios2-nor.c | 8 + gcc/testsuite/gcc.target/nios2/nios2-rdctl.c | 8 + gcc/testsuite/gcc.target/nios2/nios2-rdwrctl-1.c | 14 + .../gcc.target/nios2/nios2-stack-check-1.c | 9 + .../gcc.target/nios2/nios2-stack-check-2.c | 9 + gcc/testsuite/gcc.target/nios2/nios2-stxio.c | 25 + gcc/testsuite/gcc.target/nios2/nios2-trap-insn.c | 7 + .../gcc.target/nios2/nios2-wrctl-not-zero.c | 7 + gcc/testsuite/gcc.target/nios2/nios2-wrctl-zero.c | 7 + gcc/testsuite/gcc.target/nios2/nios2-wrctl.c | 7 + gcc/testsuite/gcc.target/nios2/nios2.exp | 41 + gcc/testsuite/lib/target-supports.exp | 1 + 68 files changed, 7284 insertions(+), 24 deletions(-) create mode 100644 gcc/common/config/nios2/nios2-common.c create mode 100644 gcc/config/nios2/constraints.md create mode 100644 gcc/config/nios2/elf.h create mode 100644 gcc/config/nios2/elf.opt create mode 100644 gcc/config/nios2/linux.h create mode 100644 gcc/config/nios2/nios2-opts.h create mode 100644 gcc/config/nios2/nios2-protos.h create mode 100644 gcc/config/nios2/nios2.c create mode 100644 gcc/config/nios2/nios2.h create mode 100644 gcc/config/nios2/nios2.md create mode 100644 gcc/config/nios2/nios2.opt create mode 100644 gcc/config/nios2/predicates.md create mode 100644 gcc/config/nios2/t-nios2 create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr47237.x create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-1.c create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-2.c create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-3.c create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-4.c create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-5.c create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-6.c create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-7.c create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-8.c create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-cmp-1.c create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-conversion.c create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-double.c create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-float.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-ashlsi3-one_shift.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-builtin-custom.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-builtin-io.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-cache-1.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-cache-2.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-custom-1.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-custom-2.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-int-types.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-mul-options-1.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-mul-options-2.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-mul-options-3.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-mul-options-4.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-nor.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-rdctl.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-rdwrctl-1.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-stack-check-1.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-stack-check-2.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-stxio.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-trap-insn.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-wrctl-not-zero.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-wrctl-zero.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2-wrctl.c create mode 100644 gcc/testsuite/gcc.target/nios2/nios2.exp (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3d2a3d26e4f..cdd781dba91 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,31 @@ +2013-12-31 Chung-Lin Tang + Sandra Loosemore + Based on patches from Altera Corporation + + * config.gcc (nios2-*-*): Add nios2 config targets. + * configure.ac (TLS_SECTION_ASM_FLAG): Add nios2 case. + ("$cpu_type"): Add nios2 as new cpu type. + * configure: Regenerate. + * config/nios2/nios2.c: New file. + * config/nios2/nios2.h: New file. + * config/nios2/nios2-opts.h: New file. + * config/nios2/nios2-protos.h: New file. + * config/nios2/elf.h: New file. + * config/nios2/elf.opt: New file. + * config/nios2/linux.h: New file. + * config/nios2/nios2.opt: New file. + * config/nios2/nios2.md: New file. + * config/nios2/predicates.md: New file. + * config/nios2/constraints.md: New file. + * config/nios2/t-nios2: New file. + * common/config/nios2/nios2-common.c: New file. + * doc/invoke.texi (Nios II options): Document Nios II specific + options. + * doc/md.texi (Nios II family): Document Nios II specific + constraints. + * doc/extend.texi (Function Specific Option Pragmas): Document + Nios II supported target pragma functionality. + 2013-12-30 Jakub Jelinek PR tree-optimization/59591 diff --git a/gcc/common/config/nios2/nios2-common.c b/gcc/common/config/nios2/nios2-common.c new file mode 100644 index 00000000000..a27f1b0802b --- /dev/null +++ b/gcc/common/config/nios2/nios2-common.c @@ -0,0 +1,44 @@ +/* Common hooks for Altera Nios II. + Copyright (C) 2012-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +. */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "diagnostic-core.h" +#include "tm.h" +#include "common/common-target.h" +#include "common/common-target-def.h" +#include "opts.h" +#include "flags.h" + +/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ +static const struct default_options nios2_option_optimization_table[] = + { + { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, + { OPT_LEVELS_3_PLUS, OPT_mfast_sw_div, NULL, 1 }, + { OPT_LEVELS_NONE, 0, NULL, 0 } + }; + +#undef TARGET_DEFAULT_TARGET_FLAGS +#define TARGET_DEFAULT_TARGET_FLAGS TARGET_DEFAULT + +#undef TARGET_OPTION_OPTIMIZATION_TABLE +#define TARGET_OPTION_OPTIMIZATION_TABLE nios2_option_optimization_table + +struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/config.gcc b/gcc/config.gcc index 24dbaf92c5f..99f11e5561a 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -425,6 +425,10 @@ nds32*) cpu_type=nds32 extra_headers="nds32_intrinsic.h" ;; +nios2-*-*) + cpu_type=nios2 + extra_options="${extra_options} g.opt" + ;; picochip-*-*) cpu_type=picochip ;; @@ -2114,6 +2118,19 @@ nds32be-*-*) tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}" tmake_file="nds32/t-mlibs" ;; +nios2-*-*) + tm_file="elfos.h ${tm_file}" + tmake_file="${tmake_file} nios2/t-nios2" + case ${target} in + nios2-*-linux*) + tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h " + ;; + nios2-*-elf*) + tm_file="${tm_file} newlib-stdint.h nios2/elf.h" + extra_options="${extra_options} nios2/elf.opt" + ;; + esac + ;; pdp11-*-*) tm_file="${tm_file} newlib-stdint.h" use_gcc_stdint=wrap diff --git a/gcc/config/nios2/constraints.md b/gcc/config/nios2/constraints.md new file mode 100644 index 00000000000..a1d55d30852 --- /dev/null +++ b/gcc/config/nios2/constraints.md @@ -0,0 +1,89 @@ +;; Constraint definitions for Altera Nios II. +;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Contributed by Chung-Lin Tang +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. +;; +;; GCC is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; . + +;; We use the following constraint letters for constants +;; +;; I: -32768 to -32767 +;; J: 0 to 65535 +;; K: $nnnn0000 for some nnnn +;; L: 0 to 31 (for shift counts) +;; M: 0 +;; N: 0 to 255 (for custom instruction numbers) +;; O: 0 to 31 (for control register numbers) +;; +;; We use the following built-in register classes: +;; +;; r: general purpose register (r0..r31) +;; m: memory operand +;; +;; Plus, we define the following constraint strings: +;; +;; S: symbol that is in the "small data" area + +;; Register constraints + +(define_register_constraint "j" "SIB_REGS" + "A register suitable for an indirect sibcall.") + +;; Integer constraints + +(define_constraint "I" + "A signed 16-bit constant (for arithmetic instructions)." + (and (match_code "const_int") + (match_test "SMALL_INT (ival)"))) + +(define_constraint "J" + "An unsigned 16-bit constant (for logical instructions)." + (and (match_code "const_int") + (match_test "SMALL_INT_UNSIGNED (ival)"))) + +(define_constraint "K" + "An unsigned 16-bit high constant (for logical instructions)." + (and (match_code "const_int") + (match_test "UPPER16_INT (ival)"))) + +(define_constraint "L" + "An unsigned 5-bit constant (for shift counts)." + (and (match_code "const_int") + (match_test "ival >= 0 && ival <= 31"))) + +(define_constraint "M" + "Integer zero." + (and (match_code "const_int") + (match_test "ival == 0"))) + +(define_constraint "N" + "An unsigned 8-bit constant (for custom instruction codes)." + (and (match_code "const_int") + (match_test "ival >= 0 && ival <= 255"))) + +(define_constraint "O" + "An unsigned 5-bit constant (for control register numbers)." + (and (match_code "const_int") + (match_test "ival >= 0 && ival <= 31"))) + +(define_constraint "S" + "An immediate stored in small data, accessible by GP." + (and (match_code "symbol_ref") + (match_test "nios2_symbol_ref_in_small_data_p (op)"))) + +(define_constraint "T" + "A constant unspec offset representing a relocation." + (match_test "nios2_unspec_reloc_p (op)")) diff --git a/gcc/config/nios2/elf.h b/gcc/config/nios2/elf.h new file mode 100644 index 00000000000..82b0aa1328f --- /dev/null +++ b/gcc/config/nios2/elf.h @@ -0,0 +1,52 @@ +/* Definitions of ELF target support for Altera Nios II. + Copyright (C) 2012-2013 Free Software Foundation, Inc. + Contributed by Jonah Graham (jgraham@altera.com), + Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com). + Contributed by Mentor Graphics, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ + + +/* Specs to support the additional command-line options for Nios II ELF + toolchains. */ + +/* -msmallc chooses an alternate C library. + -msys-lib= specifies an additional low-level system/hosting library and + is typically used to suck in a library provided by a HAL BSP. */ +#undef LIB_SPEC +#define LIB_SPEC \ +"--start-group %{msmallc: -lsmallc} %{!msmallc: -lc} -lgcc \ + %{msys-lib=*: -l%*} \ + --end-group \ +" + +/* Linking with -mhal suppresses inclusion of the GCC-provided crt* begin/end + code. Normally in this case you also link with -msys-crt0= to specify + the startup code provided by the HAL BSP instead. */ +#undef STARTFILE_SPEC +#define STARTFILE_SPEC \ + "%{mhal:" \ + "%{msys-crt0=*:%*} %{!msys-crt0=*:crt0%O%s} " \ + "%{msys-crt0=:%eYou need a C startup file for -msys-crt0=};" \ + ":crti%O%s crtbegin%O%s}" + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC "%{!mhal:crtend%O%s crtn%O%s}" + +/* The ELF target doesn't support the Nios II Linux ABI. */ +#define TARGET_LINUX_ABI 0 + diff --git a/gcc/config/nios2/elf.opt b/gcc/config/nios2/elf.opt new file mode 100644 index 00000000000..8d7bfb2a14f --- /dev/null +++ b/gcc/config/nios2/elf.opt @@ -0,0 +1,38 @@ +; Options for the Altera Nios II port of the compiler. +; Copyright (C) 2012-2013 Free Software Foundation, Inc. +; Contributed by Altera and Mentor Graphics, Inc. +; +; This file is part of GCC. +; +; GCC is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 3, or (at your option) +; any later version. +; +; GCC is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with GCC; see the file COPYING3. If not see +; . + +; These additional options are supported for ELF (bare-metal) Nios II +; toolchains. + +msmallc +Target Report RejectNegative +Link with a limited version of the C library + +msys-lib= +Target RejectNegative Joined Var(nios2_sys_lib_string) +Name of system library to link against + +msys-crt0= +Target RejectNegative Joined Var(nios2_sys_crt0_string) +Name of the startfile + +mhal +Target Report RejectNegative +Link with HAL BSP diff --git a/gcc/config/nios2/linux.h b/gcc/config/nios2/linux.h new file mode 100644 index 00000000000..0306335b409 --- /dev/null +++ b/gcc/config/nios2/linux.h @@ -0,0 +1,38 @@ +/* Definitions of target support for Altera Nios II systems + running GNU/Linux with ELF format. + Copyright (C) 2012-2013 Free Software Foundation, Inc. + Contributed by Mentor Graphics, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ + +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + GNU_USER_TARGET_OS_CPP_BUILTINS(); \ + } \ + while (0) + +#undef LINK_SPEC +#define LINK_SPEC LINK_SPEC_ENDIAN \ + " %{shared:-shared} \ + %{static:-Bstatic} \ + %{rdynamic:-export-dynamic}" + +/* This toolchain implements the ABI for Linux Systems documented in the + Nios II Processor Reference Handbook. */ +#define TARGET_LINUX_ABI 1 + diff --git a/gcc/config/nios2/nios2-opts.h b/gcc/config/nios2/nios2-opts.h new file mode 100644 index 00000000000..be7bc6e3080 --- /dev/null +++ b/gcc/config/nios2/nios2-opts.h @@ -0,0 +1,69 @@ +/* Definitions for option handling for Nios II. + Copyright (C) 2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +. */ + +#ifndef NIOS2_OPTS_H +#define NIOS2_OPTS_H + +/* Enumeration of all FPU insn codes. */ +#define N2FPU_ALL_CODES \ + N2FPU_CODE(fadds) N2FPU_CODE(fsubs) N2FPU_CODE(fmuls) N2FPU_CODE(fdivs) \ + N2FPU_CODE(fmins) N2FPU_CODE(fmaxs) \ + N2FPU_CODE(fnegs) N2FPU_CODE(fabss) N2FPU_CODE(fsqrts) \ + N2FPU_CODE(fsins) N2FPU_CODE(fcoss) N2FPU_CODE(ftans) N2FPU_CODE(fatans) \ + N2FPU_CODE(fexps) N2FPU_CODE(flogs) \ + N2FPU_CODE(fcmpeqs) N2FPU_CODE(fcmpnes) \ + N2FPU_CODE(fcmplts) N2FPU_CODE(fcmples) \ + N2FPU_CODE(fcmpgts) N2FPU_CODE(fcmpges) \ + \ + N2FPU_CODE(faddd) N2FPU_CODE(fsubd) N2FPU_CODE(fmuld) N2FPU_CODE(fdivd) \ + N2FPU_CODE(fmind) N2FPU_CODE(fmaxd) \ + N2FPU_CODE(fnegd) N2FPU_CODE(fabsd) N2FPU_CODE(fsqrtd) \ + N2FPU_CODE(fsind) N2FPU_CODE(fcosd) N2FPU_CODE(ftand) N2FPU_CODE(fatand) \ + N2FPU_CODE(fexpd) N2FPU_CODE(flogd) \ + N2FPU_CODE(fcmpeqd) N2FPU_CODE(fcmpned) \ + N2FPU_CODE(fcmpltd) N2FPU_CODE(fcmpled) \ + N2FPU_CODE(fcmpgtd) N2FPU_CODE(fcmpged) \ + \ + N2FPU_CODE(floatis) N2FPU_CODE(floatus) \ + N2FPU_CODE(floatid) N2FPU_CODE(floatud) \ + N2FPU_CODE(fixsi) N2FPU_CODE(fixsu) \ + N2FPU_CODE(fixdi) N2FPU_CODE(fixdu) \ + N2FPU_CODE(fextsd) N2FPU_CODE(ftruncds) \ + \ + N2FPU_CODE(fwrx) N2FPU_CODE(fwry) \ + N2FPU_CODE(frdxlo) N2FPU_CODE(frdxhi) N2FPU_CODE(frdy) + +enum n2fpu_code { +#define N2FPU_CODE(name) n2fpu_ ## name, + N2FPU_ALL_CODES +#undef N2FPU_CODE + n2fpu_code_num +}; + +/* An enumeration to indicate the custom code status; if values within 0--255 + are registered to an FPU insn, or custom insn. */ +enum nios2_ccs_code +{ + CCS_UNUSED, + CCS_FPU, + CCS_BUILTIN_CALL +}; + +#endif + diff --git a/gcc/config/nios2/nios2-protos.h b/gcc/config/nios2/nios2-protos.h new file mode 100644 index 00000000000..c256b023b51 --- /dev/null +++ b/gcc/config/nios2/nios2-protos.h @@ -0,0 +1,61 @@ +/* Subroutine declarations for Altera Nios II target support. + Copyright (C) 2012-2013 Free Software Foundation, Inc. + Contributed by Jonah Graham (jgraham@altera.com). + Contributed by Mentor Graphics, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ + +#ifndef GCC_NIOS2_PROTOS_H +#define GCC_NIOS2_PROTOS_H + +extern int nios2_initial_elimination_offset (int, int); +extern int nios2_can_use_return_insn (void); +extern void nios2_expand_prologue (void); +extern void nios2_expand_epilogue (bool); +extern void nios2_function_profiler (FILE *, int); + +#ifdef RTX_CODE +extern int nios2_emit_move_sequence (rtx *, enum machine_mode); +extern void nios2_emit_expensive_div (rtx *, enum machine_mode); +extern void nios2_adjust_call_address (rtx *); + +extern rtx nios2_get_return_address (int); +extern void nios2_set_return_address (rtx, rtx); + +extern bool nios2_validate_compare (enum machine_mode, rtx *, rtx *, rtx *); +extern bool nios2_validate_fpu_compare (enum machine_mode, rtx *, rtx *, rtx *, + bool); + +extern bool nios2_fpu_insn_enabled (enum n2fpu_code); +extern const char * nios2_fpu_insn_asm (enum n2fpu_code); + +extern bool nios2_legitimate_pic_operand_p (rtx); +extern bool nios2_symbol_ref_in_small_data_p (rtx); +extern bool nios2_regno_ok_for_base_p (int, bool); +extern bool nios2_unspec_reloc_p (rtx); + +#ifdef TREE_CODE +#ifdef ARGS_SIZE_RTX +/* expr.h defines both ARGS_SIZE_RTX and `enum direction' */ +extern enum direction nios2_function_arg_padding (enum machine_mode, const_tree); +extern enum direction nios2_block_reg_padding (enum machine_mode, tree, int); +#endif /* ARGS_SIZE_RTX */ + +#endif /* TREE_CODE */ +#endif /* RTX_CODE */ + +#endif /* GCC_NIOS2_PROTOS_H */ diff --git a/gcc/config/nios2/nios2.c b/gcc/config/nios2/nios2.c new file mode 100644 index 00000000000..92ecfe568ae --- /dev/null +++ b/gcc/config/nios2/nios2.c @@ -0,0 +1,3224 @@ +/* Target machine subroutines for Altera Nios II. + Copyright (C) 2012-2013 Free Software Foundation, Inc. + Contributed by Jonah Graham (jgraham@altera.com), + Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com). + Contributed by Mentor Graphics, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "tm.h" +#include "rtl.h" +#include "tree.h" +#include "regs.h" +#include "hard-reg-set.h" +#include "insn-config.h" +#include "conditions.h" +#include "output.h" +#include "insn-attr.h" +#include "flags.h" +#include "recog.h" +#include "expr.h" +#include "optabs.h" +#include "function.h" +#include "ggc.h" +#include "basic-block.h" +#include "diagnostic-core.h" +#include "toplev.h" +#include "target.h" +#include "target-def.h" +#include "tm_p.h" +#include "langhooks.h" +#include "df.h" +#include "debug.h" +#include "real.h" +#include "reload.h" +#include "stor-layout.h" +#include "varasm.h" +#include "calls.h" + +/* Forward function declarations. */ +static bool prologue_saved_reg_p (unsigned); +static void nios2_load_pic_register (void); +static void nios2_register_custom_code (unsigned int, enum nios2_ccs_code, int); +static const char *nios2_unspec_reloc_name (int); +static void nios2_register_builtin_fndecl (unsigned, tree); + +/* Threshold for data being put into the small data/bss area, instead + of the normal data area (references to the small data/bss area take + 1 instruction, and use the global pointer, references to the normal + data area takes 2 instructions). */ +unsigned HOST_WIDE_INT nios2_section_threshold = NIOS2_DEFAULT_GVALUE; + +struct GTY (()) machine_function +{ + /* Current frame information, to be filled in by nios2_compute_frame_layout + with register save masks, and offsets for the current function. */ + + /* Mask of registers to save. */ + unsigned int save_mask; + /* Number of bytes that the entire frame takes up. */ + int total_size; + /* Number of bytes that variables take up. */ + int var_size; + /* Number of bytes that outgoing arguments take up. */ + int args_size; + /* Number of bytes needed to store registers in frame. */ + int save_reg_size; + /* Offset from new stack pointer to store registers. */ + int save_regs_offset; + /* != 0 if frame layout already calculated. */ + int initialized; +}; + +/* State to track the assignment of custom codes to FPU/custom builtins. */ +static enum nios2_ccs_code custom_code_status[256]; +static int custom_code_index[256]; +/* Set to true if any conflicts (re-use of a code between 0-255) are found. */ +static bool custom_code_conflict = false; + + +/* Definition of builtin function types for nios2. */ + +#define N2_FTYPES \ + N2_FTYPE(1, (SF)) \ + N2_FTYPE(1, (VOID)) \ + N2_FTYPE(2, (DF, DF)) \ + N2_FTYPE(3, (DF, DF, DF)) \ + N2_FTYPE(2, (DF, SF)) \ + N2_FTYPE(2, (DF, SI)) \ + N2_FTYPE(2, (DF, UI)) \ + N2_FTYPE(2, (SF, DF)) \ + N2_FTYPE(2, (SF, SF)) \ + N2_FTYPE(3, (SF, SF, SF)) \ + N2_FTYPE(2, (SF, SI)) \ + N2_FTYPE(2, (SF, UI)) \ + N2_FTYPE(2, (SI, CVPTR)) \ + N2_FTYPE(2, (SI, DF)) \ + N2_FTYPE(3, (SI, DF, DF)) \ + N2_FTYPE(2, (SI, SF)) \ + N2_FTYPE(3, (SI, SF, SF)) \ + N2_FTYPE(2, (SI, SI)) \ + N2_FTYPE(2, (UI, CVPTR)) \ + N2_FTYPE(2, (UI, DF)) \ + N2_FTYPE(2, (UI, SF)) \ + N2_FTYPE(2, (VOID, DF)) \ + N2_FTYPE(2, (VOID, SF)) \ + N2_FTYPE(3, (VOID, SI, SI)) \ + N2_FTYPE(3, (VOID, VPTR, SI)) + +#define N2_FTYPE_OP1(R) N2_FTYPE_ ## R ## _VOID +#define N2_FTYPE_OP2(R, A1) N2_FTYPE_ ## R ## _ ## A1 +#define N2_FTYPE_OP3(R, A1, A2) N2_FTYPE_ ## R ## _ ## A1 ## _ ## A2 + +/* Expand ftcode enumeration. */ +enum nios2_ftcode { +#define N2_FTYPE(N,ARGS) N2_FTYPE_OP ## N ARGS, +N2_FTYPES +#undef N2_FTYPE +N2_FTYPE_MAX +}; + +/* Return the tree function type, based on the ftcode. */ +static tree +nios2_ftype (enum nios2_ftcode ftcode) +{ + static tree types[(int) N2_FTYPE_MAX]; + + tree N2_TYPE_SF = float_type_node; + tree N2_TYPE_DF = double_type_node; + tree N2_TYPE_SI = integer_type_node; + tree N2_TYPE_UI = unsigned_type_node; + tree N2_TYPE_VOID = void_type_node; + + static const_tree N2_TYPE_CVPTR, N2_TYPE_VPTR; + if (!N2_TYPE_CVPTR) + { + /* const volatile void *. */ + N2_TYPE_CVPTR + = build_pointer_type (build_qualified_type (void_type_node, + (TYPE_QUAL_CONST + | TYPE_QUAL_VOLATILE))); + /* volatile void *. */ + N2_TYPE_VPTR + = build_pointer_type (build_qualified_type (void_type_node, + TYPE_QUAL_VOLATILE)); + } + if (types[(int) ftcode] == NULL_TREE) + switch (ftcode) + { +#define N2_FTYPE_ARGS1(R) N2_TYPE_ ## R +#define N2_FTYPE_ARGS2(R,A1) N2_TYPE_ ## R, N2_TYPE_ ## A1 +#define N2_FTYPE_ARGS3(R,A1,A2) N2_TYPE_ ## R, N2_TYPE_ ## A1, N2_TYPE_ ## A2 +#define N2_FTYPE(N,ARGS) \ + case N2_FTYPE_OP ## N ARGS: \ + types[(int) ftcode] \ + = build_function_type_list (N2_FTYPE_ARGS ## N ARGS, NULL_TREE); \ + break; + N2_FTYPES +#undef N2_FTYPE + default: gcc_unreachable (); + } + return types[(int) ftcode]; +} + + +/* Definition of FPU instruction descriptions. */ + +struct nios2_fpu_insn_info +{ + const char *name; + int num_operands, *optvar; + int opt, no_opt; +#define N2F_DF 0x1 +#define N2F_DFREQ 0x2 +#define N2F_UNSAFE 0x4 +#define N2F_FINITE 0x8 + unsigned int flags; + enum insn_code icode; + enum nios2_ftcode ftcode; +}; + +/* Base macro for defining FPU instructions. */ +#define N2FPU_INSN_DEF_BASE(insn, nop, flags, icode, args) \ + { #insn, nop, &nios2_custom_ ## insn, OPT_mcustom_##insn##_, \ + OPT_mno_custom_##insn, flags, CODE_FOR_ ## icode, \ + N2_FTYPE_OP ## nop args } + +/* Arithmetic and math functions; 2 or 3 operand FP operations. */ +#define N2FPU_OP2(mode) (mode, mode) +#define N2FPU_OP3(mode) (mode, mode, mode) +#define N2FPU_INSN_DEF(code, icode, nop, flags, m, M) \ + N2FPU_INSN_DEF_BASE (f ## code ## m, nop, flags, \ + icode ## m ## f ## nop, N2FPU_OP ## nop (M ## F)) +#define N2FPU_INSN_SF(code, nop, flags) \ + N2FPU_INSN_DEF (code, code, nop, flags, s, S) +#define N2FPU_INSN_DF(code, nop, flags) \ + N2FPU_INSN_DEF (code, code, nop, flags | N2F_DF, d, D) + +/* Compare instructions, 3 operand FP operation with a SI result. */ +#define N2FPU_CMP_DEF(code, flags, m, M) \ + N2FPU_INSN_DEF_BASE (fcmp ## code ## m, 3, flags, \ + nios2_s ## code ## m ## f, (SI, M ## F, M ## F)) +#define N2FPU_CMP_SF(code) N2FPU_CMP_DEF (code, 0, s, S) +#define N2FPU_CMP_DF(code) N2FPU_CMP_DEF (code, N2F_DF, d, D) + +/* The order of definition needs to be maintained consistent with + enum n2fpu_code in nios2-opts.h. */ +struct nios2_fpu_insn_info nios2_fpu_insn[] = + { + /* Single precision instructions. */ + N2FPU_INSN_SF (add, 3, 0), + N2FPU_INSN_SF (sub, 3, 0), + N2FPU_INSN_SF (mul, 3, 0), + N2FPU_INSN_SF (div, 3, 0), + /* Due to textual difference between min/max and smin/smax. */ + N2FPU_INSN_DEF (min, smin, 3, N2F_FINITE, s, S), + N2FPU_INSN_DEF (max, smax, 3, N2F_FINITE, s, S), + N2FPU_INSN_SF (neg, 2, 0), + N2FPU_INSN_SF (abs, 2, 0), + N2FPU_INSN_SF (sqrt, 2, 0), + N2FPU_INSN_SF (sin, 2, N2F_UNSAFE), + N2FPU_INSN_SF (cos, 2, N2F_UNSAFE), + N2FPU_INSN_SF (tan, 2, N2F_UNSAFE), + N2FPU_INSN_SF (atan, 2, N2F_UNSAFE), + N2FPU_INSN_SF (exp, 2, N2F_UNSAFE), + N2FPU_INSN_SF (log, 2, N2F_UNSAFE), + /* Single precision compares. */ + N2FPU_CMP_SF (eq), N2FPU_CMP_SF (ne), + N2FPU_CMP_SF (lt), N2FPU_CMP_SF (le), + N2FPU_CMP_SF (gt), N2FPU_CMP_SF (ge), + + /* Double precision instructions. */ + N2FPU_INSN_DF (add, 3, 0), + N2FPU_INSN_DF (sub, 3, 0), + N2FPU_INSN_DF (mul, 3, 0), + N2FPU_INSN_DF (div, 3, 0), + /* Due to textual difference between min/max and smin/smax. */ + N2FPU_INSN_DEF (min, smin, 3, N2F_FINITE, d, D), + N2FPU_INSN_DEF (max, smax, 3, N2F_FINITE, d, D), + N2FPU_INSN_DF (neg, 2, 0), + N2FPU_INSN_DF (abs, 2, 0), + N2FPU_INSN_DF (sqrt, 2, 0), + N2FPU_INSN_DF (sin, 2, N2F_UNSAFE), + N2FPU_INSN_DF (cos, 2, N2F_UNSAFE), + N2FPU_INSN_DF (tan, 2, N2F_UNSAFE), + N2FPU_INSN_DF (atan, 2, N2F_UNSAFE), + N2FPU_INSN_DF (exp, 2, N2F_UNSAFE), + N2FPU_INSN_DF (log, 2, N2F_UNSAFE), + /* Double precision compares. */ + N2FPU_CMP_DF (eq), N2FPU_CMP_DF (ne), + N2FPU_CMP_DF (lt), N2FPU_CMP_DF (le), + N2FPU_CMP_DF (gt), N2FPU_CMP_DF (ge), + + /* Conversion instructions. */ + N2FPU_INSN_DEF_BASE (floatis, 2, 0, floatsisf2, (SF, SI)), + N2FPU_INSN_DEF_BASE (floatus, 2, 0, floatunssisf2, (SF, UI)), + N2FPU_INSN_DEF_BASE (floatid, 2, 0, floatsidf2, (DF, SI)), + N2FPU_INSN_DEF_BASE (floatud, 2, 0, floatunssidf2, (DF, UI)), + N2FPU_INSN_DEF_BASE (fixsi, 2, 0, fix_truncsfsi2, (SI, SF)), + N2FPU_INSN_DEF_BASE (fixsu, 2, 0, fixuns_truncsfsi2, (UI, SF)), + N2FPU_INSN_DEF_BASE (fixdi, 2, 0, fix_truncdfsi2, (SI, DF)), + N2FPU_INSN_DEF_BASE (fixdu, 2, 0, fixuns_truncdfsi2, (UI, DF)), + N2FPU_INSN_DEF_BASE (fextsd, 2, 0, extendsfdf2, (DF, SF)), + N2FPU_INSN_DEF_BASE (ftruncds, 2, 0, truncdfsf2, (SF, DF)), + + /* X, Y access instructions. */ + N2FPU_INSN_DEF_BASE (fwrx, 2, N2F_DFREQ, nios2_fwrx, (VOID, DF)), + N2FPU_INSN_DEF_BASE (fwry, 2, N2F_DFREQ, nios2_fwry, (VOID, SF)), + N2FPU_INSN_DEF_BASE (frdxlo, 1, N2F_DFREQ, nios2_frdxlo, (SF)), + N2FPU_INSN_DEF_BASE (frdxhi, 1, N2F_DFREQ, nios2_frdxhi, (SF)), + N2FPU_INSN_DEF_BASE (frdy, 1, N2F_DFREQ, nios2_frdy, (SF)) + }; + +/* Some macros for ease of access. */ +#define N2FPU(code) nios2_fpu_insn[(int) code] +#define N2FPU_ENABLED_P(code) (N2FPU_N(code) >= 0) +#define N2FPU_N(code) (*N2FPU(code).optvar) +#define N2FPU_NAME(code) (N2FPU(code).name) +#define N2FPU_ICODE(code) (N2FPU(code).icode) +#define N2FPU_FTCODE(code) (N2FPU(code).ftcode) +#define N2FPU_FINITE_P(code) (N2FPU(code).flags & N2F_FINITE) +#define N2FPU_UNSAFE_P(code) (N2FPU(code).flags & N2F_UNSAFE) +#define N2FPU_DOUBLE_P(code) (N2FPU(code).flags & N2F_DF) +#define N2FPU_DOUBLE_REQUIRED_P(code) (N2FPU(code).flags & N2F_DFREQ) + +/* Same as above, but for cases where using only the op part is shorter. */ +#define N2FPU_OP(op) N2FPU(n2fpu_ ## op) +#define N2FPU_OP_NAME(op) N2FPU_NAME(n2fpu_ ## op) +#define N2FPU_OP_ENABLED_P(op) N2FPU_ENABLED_P(n2fpu_ ## op) + +/* Export the FPU insn enabled predicate to nios2.md. */ +bool +nios2_fpu_insn_enabled (enum n2fpu_code code) +{ + return N2FPU_ENABLED_P (code); +} + +/* Return true if COND comparison for mode MODE is enabled under current + settings. */ + +static bool +nios2_fpu_compare_enabled (enum rtx_code cond, enum machine_mode mode) +{ + if (mode == SFmode) + switch (cond) + { + case EQ: return N2FPU_OP_ENABLED_P (fcmpeqs); + case NE: return N2FPU_OP_ENABLED_P (fcmpnes); + case GT: return N2FPU_OP_ENABLED_P (fcmpgts); + case GE: return N2FPU_OP_ENABLED_P (fcmpges); + case LT: return N2FPU_OP_ENABLED_P (fcmplts); + case LE: return N2FPU_OP_ENABLED_P (fcmples); + default: break; + } + else if (mode == DFmode) + switch (cond) + { + case EQ: return N2FPU_OP_ENABLED_P (fcmpeqd); + case NE: return N2FPU_OP_ENABLED_P (fcmpned); + case GT: return N2FPU_OP_ENABLED_P (fcmpgtd); + case GE: return N2FPU_OP_ENABLED_P (fcmpged); + case LT: return N2FPU_OP_ENABLED_P (fcmpltd); + case LE: return N2FPU_OP_ENABLED_P (fcmpled); + default: break; + } + return false; +} + +/* Stack layout and calling conventions. */ + +#define NIOS2_STACK_ALIGN(LOC) \ + (((LOC) + ((PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT) - 1)) \ + & ~((PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT) - 1)) + +/* Return the bytes needed to compute the frame pointer from the current + stack pointer. */ +static int +nios2_compute_frame_layout (void) +{ + unsigned int regno; + unsigned int save_mask = 0; + int total_size; + int var_size; + int out_args_size; + int save_reg_size; + + if (cfun->machine->initialized) + return cfun->machine->total_size; + + var_size = NIOS2_STACK_ALIGN (get_frame_size ()); + out_args_size = NIOS2_STACK_ALIGN (crtl->outgoing_args_size); + total_size = var_size + out_args_size; + + /* Calculate space needed for gp registers. */ + save_reg_size = 0; + for (regno = 0; regno <= LAST_GP_REG; regno++) + if (prologue_saved_reg_p (regno)) + { + save_mask |= 1 << regno; + save_reg_size += 4; + } + + /* If we call eh_return, we need to save the EH data registers. */ + if (crtl->calls_eh_return) + { + unsigned i; + unsigned r; + + for (i = 0; (r = EH_RETURN_DATA_REGNO (i)) != INVALID_REGNUM; i++) + if (!(save_mask & (1 << r))) + { + save_mask |= 1 << r; + save_reg_size += 4; + } + } + + save_reg_size = NIOS2_STACK_ALIGN (save_reg_size); + total_size += save_reg_size; + total_size += NIOS2_STACK_ALIGN (crtl->args.pretend_args_size); + + /* Save other computed information. */ + cfun->machine->save_mask = save_mask; + cfun->machine->total_size = total_size; + cfun->machine->var_size = var_size; + cfun->machine->args_size = out_args_size; + cfun->machine->save_reg_size = save_reg_size; + cfun->machine->initialized = reload_completed; + cfun->machine->save_regs_offset = out_args_size + var_size; + + return total_size; +} + +/* Generate save/restore of register REGNO at SP + OFFSET. Used by the + prologue/epilogue expand routines. */ +static void +save_reg (int regno, unsigned offset) +{ + rtx reg = gen_rtx_REG (SImode, regno); + rtx addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx, + gen_int_mode (offset, Pmode)); + rtx insn = emit_move_insn (gen_frame_mem (Pmode, addr), reg); + RTX_FRAME_RELATED_P (insn) = 1; +} + +static void +restore_reg (int regno, unsigned offset) +{ + rtx reg = gen_rtx_REG (SImode, regno); + rtx addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx, + gen_int_mode (offset, Pmode)); + rtx insn = emit_move_insn (reg, gen_frame_mem (Pmode, addr)); + /* Tag epilogue unwind note. */ + add_reg_note (insn, REG_CFA_RESTORE, reg); + RTX_FRAME_RELATED_P (insn) = 1; +} + +/* Emit conditional trap for checking stack limit. */ +static void +nios2_emit_stack_limit_check (void) +{ + if (REG_P (stack_limit_rtx)) + emit_insn (gen_ctrapsi4 (gen_rtx_LTU (VOIDmode, stack_pointer_rtx, + stack_limit_rtx), + stack_pointer_rtx, stack_limit_rtx, GEN_INT (3))); + else + sorry ("only register based stack limit is supported"); +} + +/* Temp regno used inside prologue/epilogue. */ +#define TEMP_REG_NUM 8 + +void +nios2_expand_prologue (void) +{ + unsigned int regno; + int total_frame_size, save_offset; + int sp_offset; /* offset from base_reg to final stack value. */ + int fp_offset; /* offset from base_reg to final fp value. */ + rtx insn; + + total_frame_size = nios2_compute_frame_layout (); + + if (flag_stack_usage_info) + current_function_static_stack_size = total_frame_size; + + /* Decrement the stack pointer. */ + if (!SMALL_INT (total_frame_size)) + { + /* We need an intermediary point, this will point at the spill block. */ + insn = emit_insn + (gen_add2_insn (stack_pointer_rtx, + gen_int_mode (cfun->machine->save_regs_offset + - total_frame_size, Pmode))); + RTX_FRAME_RELATED_P (insn) = 1; + + fp_offset = 0; + sp_offset = -cfun->machine->save_regs_offset; + } + else if (total_frame_size) + { + insn = emit_insn (gen_add2_insn (stack_pointer_rtx, + gen_int_mode (-total_frame_size, + Pmode))); + RTX_FRAME_RELATED_P (insn) = 1; + fp_offset = cfun->machine->save_regs_offset; + sp_offset = 0; + } + else + fp_offset = sp_offset = 0; + + if (crtl->limit_stack) + nios2_emit_stack_limit_check (); + + save_offset = fp_offset + cfun->machine->save_reg_size; + + for (regno = LAST_GP_REG; regno > 0; regno--) + if (cfun->machine->save_mask & (1 << regno)) + { + save_offset -= 4; + save_reg (regno, save_offset); + } + + if (frame_pointer_needed) + { + insn = emit_insn (gen_add3_insn (hard_frame_pointer_rtx, + stack_pointer_rtx, + gen_int_mode (fp_offset, Pmode))); + RTX_FRAME_RELATED_P (insn) = 1; + } + + if (sp_offset) + { + rtx sp_adjust + = gen_rtx_SET (VOIDmode, stack_pointer_rtx, + plus_constant (Pmode, stack_pointer_rtx, sp_offset)); + if (SMALL_INT (sp_offset)) + insn = emit_insn (sp_adjust); + else + { + rtx tmp = gen_rtx_REG (Pmode, TEMP_REG_NUM); + emit_move_insn (tmp, gen_int_mode (sp_offset, Pmode)); + insn = emit_insn (gen_add2_insn (stack_pointer_rtx, tmp)); + /* Attach the sp_adjust as a note indicating what happened. */ + add_reg_note (insn, REG_FRAME_RELATED_EXPR, sp_adjust); + } + RTX_FRAME_RELATED_P (insn) = 1; + + if (crtl->limit_stack) + nios2_emit_stack_limit_check (); + } + + /* Load the PIC register if needed. */ + if (crtl->uses_pic_offset_table) + nios2_load_pic_register (); + + /* If we are profiling, make sure no instructions are scheduled before + the call to mcount. */ + if (crtl->profile) + emit_insn (gen_blockage ()); +} + +void +nios2_expand_epilogue (bool sibcall_p) +{ + rtx insn, cfa_adj; + int total_frame_size; + int sp_adjust, save_offset; + unsigned int regno; + + if (!sibcall_p && nios2_can_use_return_insn ()) + { + emit_jump_insn (gen_return ()); + return; + } + + emit_insn (gen_blockage ()); + + total_frame_size = nios2_compute_frame_layout (); + if (frame_pointer_needed) + { + /* Recover the stack pointer. */ + insn = emit_move_insn (stack_pointer_rtx, hard_frame_pointer_rtx); + cfa_adj = plus_constant (Pmode, stack_pointer_rtx, + (total_frame_size + - cfun->machine->save_regs_offset)); + add_reg_note (insn, REG_CFA_DEF_CFA, cfa_adj); + RTX_FRAME_RELATED_P (insn) = 1; + + save_offset = 0; + sp_adjust = total_frame_size - cfun->machine->save_regs_offset; + } + else if (!SMALL_INT (total_frame_size)) + { + rtx tmp = gen_rtx_REG (Pmode, TEMP_REG_NUM); + emit_move_insn (tmp, gen_int_mode (cfun->machine->save_regs_offset, + Pmode)); + insn = emit_insn (gen_add2_insn (stack_pointer_rtx, tmp)); + cfa_adj = gen_rtx_SET (VOIDmode, stack_pointer_rtx, + plus_constant (Pmode, stack_pointer_rtx, + cfun->machine->save_regs_offset)); + add_reg_note (insn, REG_CFA_ADJUST_CFA, cfa_adj); + RTX_FRAME_RELATED_P (insn) = 1; + save_offset = 0; + sp_adjust = total_frame_size - cfun->machine->save_regs_offset; + } + else + { + save_offset = cfun->machine->save_regs_offset; + sp_adjust = total_frame_size; + } + + save_offset += cfun->machine->save_reg_size; + + for (regno = LAST_GP_REG; regno > 0; regno--) + if (cfun->machine->save_mask & (1 << regno)) + { + save_offset -= 4; + restore_reg (regno, save_offset); + } + + if (sp_adjust) + { + insn = emit_insn (gen_add2_insn (stack_pointer_rtx, + gen_int_mode (sp_adjust, Pmode))); + cfa_adj = gen_rtx_SET (VOIDmode, stack_pointer_rtx, + plus_constant (Pmode, stack_pointer_rtx, + sp_adjust)); + add_reg_note (insn, REG_CFA_ADJUST_CFA, cfa_adj); + RTX_FRAME_RELATED_P (insn) = 1; + } + + /* Add in the __builtin_eh_return stack adjustment. */ + if (crtl->calls_eh_return) + emit_insn (gen_add2_insn (stack_pointer_rtx, EH_RETURN_STACKADJ_RTX)); + + if (!sibcall_p) + emit_jump_insn (gen_simple_return ()); +} + +/* Implement RETURN_ADDR_RTX. Note, we do not support moving + back to a previous frame. */ +rtx +nios2_get_return_address (int count) +{ + if (count != 0) + return const0_rtx; + + return get_hard_reg_initial_val (Pmode, RA_REGNO); +} + +/* Emit code to change the current function's return address to + ADDRESS. SCRATCH is available as a scratch register, if needed. + ADDRESS and SCRATCH are both word-mode GPRs. */ +void +nios2_set_return_address (rtx address, rtx scratch) +{ + nios2_compute_frame_layout (); + if (cfun->machine->save_mask & (1 << RA_REGNO)) + { + unsigned offset = cfun->machine->save_reg_size - 4; + rtx base; + + if (frame_pointer_needed) + base = hard_frame_pointer_rtx; + else + { + base = stack_pointer_rtx; + offset += cfun->machine->save_regs_offset; + + if (!SMALL_INT (offset)) + { + emit_move_insn (scratch, gen_int_mode (offset, Pmode)); + emit_insn (gen_add2_insn (scratch, base)); + base = scratch; + offset = 0; + } + } + if (offset) + base = plus_constant (Pmode, base, offset); + emit_move_insn (gen_rtx_MEM (Pmode, base), address); + } + else + emit_move_insn (gen_rtx_REG (Pmode, RA_REGNO), address); +} + +/* Implement FUNCTION_PROFILER macro. */ +void +nios2_function_profiler (FILE *file, int labelno ATTRIBUTE_UNUSED) +{ + fprintf (file, "\tmov\tr8, ra\n"); + if (flag_pic) + { + fprintf (file, "\tnextpc\tr2\n"); + fprintf (file, "\t1: movhi\tr3, %%hiadj(_GLOBAL_OFFSET_TABLE_ - 1b)\n"); + fprintf (file, "\taddi\tr3, r3, %%lo(_GLOBAL_OFFSET_TABLE_ - 1b)\n"); + fprintf (file, "\tadd\tr2, r2, r3\n"); + fprintf (file, "\tldw\tr2, %%call(_mcount)(r2)\n"); + fprintf (file, "\tcallr\tr2\n"); + } + else + fprintf (file, "\tcall\t_mcount\n"); + fprintf (file, "\tmov\tra, r8\n"); +} + +/* Dump stack layout. */ +static void +nios2_dump_frame_layout (FILE *file) +{ + fprintf (file, "\t%s Current Frame Info\n", ASM_COMMENT_START); + fprintf (file, "\t%s total_size = %d\n", ASM_COMMENT_START, + cfun->machine->total_size); + fprintf (file, "\t%s var_size = %d\n", ASM_COMMENT_START, + cfun->machine->var_size); + fprintf (file, "\t%s args_size = %d\n", ASM_COMMENT_START, + cfun->machine->args_size); + fprintf (file, "\t%s save_reg_size = %d\n", ASM_COMMENT_START, + cfun->machine->save_reg_size); + fprintf (file, "\t%s initialized = %d\n", ASM_COMMENT_START, + cfun->machine->initialized); + fprintf (file, "\t%s save_regs_offset = %d\n", ASM_COMMENT_START, + cfun->machine->save_regs_offset); + fprintf (file, "\t%s is_leaf = %d\n", ASM_COMMENT_START, + crtl->is_leaf); + fprintf (file, "\t%s frame_pointer_needed = %d\n", ASM_COMMENT_START, + frame_pointer_needed); + fprintf (file, "\t%s pretend_args_size = %d\n", ASM_COMMENT_START, + crtl->args.pretend_args_size); +} + +/* Return true if REGNO should be saved in the prologue. */ +static bool +prologue_saved_reg_p (unsigned regno) +{ + gcc_assert (GP_REG_P (regno)); + + if (df_regs_ever_live_p (regno) && !call_used_regs[regno]) + return true; + + if (regno == HARD_FRAME_POINTER_REGNUM && frame_pointer_needed) + return true; + + if (regno == PIC_OFFSET_TABLE_REGNUM && crtl->uses_pic_offset_table) + return true; + + if (regno == RA_REGNO && df_regs_ever_live_p (RA_REGNO)) + return true; + + return false; +} + +/* Implement TARGET_CAN_ELIMINATE. */ +static bool +nios2_can_eliminate (const int from ATTRIBUTE_UNUSED, const int to) +{ + if (to == STACK_POINTER_REGNUM) + return !frame_pointer_needed; + return true; +} + +/* Implement INITIAL_ELIMINATION_OFFSET macro. */ +int +nios2_initial_elimination_offset (int from, int to) +{ + int offset; + + nios2_compute_frame_layout (); + + /* Set OFFSET to the offset from the stack pointer. */ + switch (from) + { + case FRAME_POINTER_REGNUM: + offset = cfun->machine->args_size; + break; + + case ARG_POINTER_REGNUM: + offset = cfun->machine->total_size; + offset -= crtl->args.pretend_args_size; + break; + + default: + gcc_unreachable (); + } + + /* If we are asked for the frame pointer offset, then adjust OFFSET + by the offset from the frame pointer to the stack pointer. */ + if (to == HARD_FRAME_POINTER_REGNUM) + offset -= cfun->machine->save_regs_offset; + + return offset; +} + +/* Return nonzero if this function is known to have a null epilogue. + This allows the optimizer to omit jumps to jumps if no stack + was created. */ +int +nios2_can_use_return_insn (void) +{ + if (!reload_completed || crtl->profile) + return 0; + + return nios2_compute_frame_layout () == 0; +} + + +/* Check and signal some warnings/errors on FPU insn options. */ +static void +nios2_custom_check_insns (void) +{ + unsigned int i, j; + bool errors = false; + + for (i = 0; i < ARRAY_SIZE (nios2_fpu_insn); i++) + if (N2FPU_ENABLED_P (i) && N2FPU_DOUBLE_P (i)) + { + for (j = 0; j < ARRAY_SIZE (nios2_fpu_insn); j++) + if (N2FPU_DOUBLE_REQUIRED_P (j) && ! N2FPU_ENABLED_P (j)) + { + error ("switch %<-mcustom-%s%> is required for double " + "precision floating point", N2FPU_NAME (j)); + errors = true; + } + break; + } + + /* Warn if the user has certain exotic operations that won't get used + without -funsafe-math-optimizations. See expand_builtin () in + builtins.c. */ + if (!flag_unsafe_math_optimizations) + for (i = 0; i < ARRAY_SIZE (nios2_fpu_insn); i++) + if (N2FPU_ENABLED_P (i) && N2FPU_UNSAFE_P (i)) + warning (0, "switch %<-mcustom-%s%> has no effect unless " + "-funsafe-math-optimizations is specified", N2FPU_NAME (i)); + + /* Warn if the user is trying to use -mcustom-fmins et. al, that won't + get used without -ffinite-math-only. See fold_builtin_fmin_fmax () + in builtins.c. */ + if (!flag_finite_math_only) + for (i = 0; i < ARRAY_SIZE (nios2_fpu_insn); i++) + if (N2FPU_ENABLED_P (i) && N2FPU_FINITE_P (i)) + warning (0, "switch %<-mcustom-%s%> has no effect unless " + "-ffinite-math-only is specified", N2FPU_NAME (i)); + + if (errors || custom_code_conflict) + fatal_error ("conflicting use of -mcustom switches, target attributes, " + "and/or __builtin_custom_ functions"); +} + +static void +nios2_set_fpu_custom_code (enum n2fpu_code code, int n, bool override_p) +{ + if (override_p || N2FPU_N (code) == -1) + N2FPU_N (code) = n; + nios2_register_custom_code (n, CCS_FPU, (int) code); +} + +/* Type to represent a standard FPU config. */ +struct nios2_fpu_config +{ + const char *name; + bool set_sp_constants; + int code[n2fpu_code_num]; +}; + +#define NIOS2_FPU_CONFIG_NUM 3 +static struct nios2_fpu_config custom_fpu_config[NIOS2_FPU_CONFIG_NUM]; + +static void +nios2_init_fpu_configs (void) +{ + struct nios2_fpu_config* cfg; + int i = 0; +#define NEXT_FPU_CONFIG \ + do { \ + cfg = &custom_fpu_config[i++]; \ + memset (cfg, -1, sizeof (struct nios2_fpu_config));\ + } while (0) + + NEXT_FPU_CONFIG; + cfg->name = "60-1"; + cfg->set_sp_constants = true; + cfg->code[n2fpu_fmuls] = 252; + cfg->code[n2fpu_fadds] = 253; + cfg->code[n2fpu_fsubs] = 254; + + NEXT_FPU_CONFIG; + cfg->name = "60-2"; + cfg->set_sp_constants = true; + cfg->code[n2fpu_fmuls] = 252; + cfg->code[n2fpu_fadds] = 253; + cfg->code[n2fpu_fsubs] = 254; + cfg->code[n2fpu_fdivs] = 255; + + NEXT_FPU_CONFIG; + cfg->name = "72-3"; + cfg->set_sp_constants = true; + cfg->code[n2fpu_floatus] = 243; + cfg->code[n2fpu_fixsi] = 244; + cfg->code[n2fpu_floatis] = 245; + cfg->code[n2fpu_fcmpgts] = 246; + cfg->code[n2fpu_fcmples] = 249; + cfg->code[n2fpu_fcmpeqs] = 250; + cfg->code[n2fpu_fcmpnes] = 251; + cfg->code[n2fpu_fmuls] = 252; + cfg->code[n2fpu_fadds] = 253; + cfg->code[n2fpu_fsubs] = 254; + cfg->code[n2fpu_fdivs] = 255; + +#undef NEXT_FPU_CONFIG + gcc_assert (i == NIOS2_FPU_CONFIG_NUM); +} + +static struct nios2_fpu_config * +nios2_match_custom_fpu_cfg (const char *cfgname, const char *endp) +{ + int i; + for (i = 0; i < NIOS2_FPU_CONFIG_NUM; i++) + { + bool match = !(endp != NULL + ? strncmp (custom_fpu_config[i].name, cfgname, + endp - cfgname) + : strcmp (custom_fpu_config[i].name, cfgname)); + if (match) + return &custom_fpu_config[i]; + } + return NULL; +} + +/* Use CFGNAME to lookup FPU config, ENDP if not NULL marks end of string. + OVERRIDE is true if loaded config codes should overwrite current state. */ +static void +nios2_handle_custom_fpu_cfg (const char *cfgname, const char *endp, + bool override) +{ + struct nios2_fpu_config *cfg = nios2_match_custom_fpu_cfg (cfgname, endp); + if (cfg) + { + unsigned int i; + for (i = 0; i < ARRAY_SIZE (nios2_fpu_insn); i++) + if (cfg->code[i] >= 0) + nios2_set_fpu_custom_code ((enum n2fpu_code) i, cfg->code[i], + override); + if (cfg->set_sp_constants) + flag_single_precision_constant = 1; + } + else + warning (0, "ignoring unrecognized switch %<-mcustom-fpu-cfg%> " + "value %<%s%>", cfg); + + /* Guard against errors in the standard configurations. */ + nios2_custom_check_insns (); +} + +/* Check individual FPU insn options, and register custom code. */ +static void +nios2_handle_custom_fpu_insn_option (int fpu_insn_index) +{ + int param = N2FPU_N (fpu_insn_index); + + if (0 <= param && param <= 255) + nios2_register_custom_code (param, CCS_FPU, fpu_insn_index); + + /* Valid values are 0-255, but also allow -1 so that the + -mno-custom- switches work. */ + else if (param != -1) + error ("switch %<-mcustom-%s%> value %d must be between 0 and 255", + N2FPU_NAME (fpu_insn_index), param); +} + +/* Allocate a chunk of memory for per-function machine-dependent data. */ +static struct machine_function * +nios2_init_machine_status (void) +{ + return ggc_alloc_cleared_machine_function (); +} + +/* Implement TARGET_OPTION_OVERRIDE. */ +static void +nios2_option_override (void) +{ + unsigned int i; + +#ifdef SUBTARGET_OVERRIDE_OPTIONS + SUBTARGET_OVERRIDE_OPTIONS; +#endif + + /* Check for unsupported options. */ + if (flag_pic && !TARGET_LINUX_ABI) + sorry ("position-independent code requires the Linux ABI"); + + /* Function to allocate machine-dependent function status. */ + init_machine_status = &nios2_init_machine_status; + + nios2_section_threshold + = (global_options_set.x_g_switch_value + ? g_switch_value : NIOS2_DEFAULT_GVALUE); + + /* Default to -mgpopt unless -fpic or -fPIC. */ + if (TARGET_GPOPT == -1 && flag_pic) + TARGET_GPOPT = 0; + + /* If we don't have mul, we don't have mulx either! */ + if (!TARGET_HAS_MUL && TARGET_HAS_MULX) + target_flags &= ~MASK_HAS_MULX; + + /* Initialize default FPU configurations. */ + nios2_init_fpu_configs (); + + /* Set up default handling for floating point custom instructions. + + Putting things in this order means that the -mcustom-fpu-cfg= + switch will always be overridden by individual -mcustom-fadds= + switches, regardless of the order in which they were specified + on the command line. + + This behavior of prioritization of individual -mcustom-= + options before the -mcustom-fpu-cfg= switch is maintained for + compatibility. */ + if (nios2_custom_fpu_cfg_string && *nios2_custom_fpu_cfg_string) + nios2_handle_custom_fpu_cfg (nios2_custom_fpu_cfg_string, NULL, false); + + /* Handle options for individual FPU insns. */ + for (i = 0; i < ARRAY_SIZE (nios2_fpu_insn); i++) + nios2_handle_custom_fpu_insn_option (i); + + nios2_custom_check_insns (); + + /* Save the initial options in case the user does function specific + options. */ + target_option_default_node = target_option_current_node + = build_target_option_node (&global_options); +} + + +/* Return true if CST is a constant within range of movi/movui/movhi. */ +static bool +nios2_simple_const_p (const_rtx cst) +{ + HOST_WIDE_INT val = INTVAL (cst); + return SMALL_INT (val) || SMALL_INT_UNSIGNED (val) || UPPER16_INT (val); +} + +/* Compute a (partial) cost for rtx X. Return true if the complete + cost has been computed, and false if subexpressions should be + scanned. In either case, *TOTAL contains the cost result. */ +static bool +nios2_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, + int opno ATTRIBUTE_UNUSED, + int *total, bool speed ATTRIBUTE_UNUSED) +{ + switch (code) + { + case CONST_INT: + if (INTVAL (x) == 0) + { + *total = COSTS_N_INSNS (0); + return true; + } + else if (nios2_simple_const_p (x)) + { + *total = COSTS_N_INSNS (2); + return true; + } + else + { + *total = COSTS_N_INSNS (4); + return true; + } + + case LABEL_REF: + case SYMBOL_REF: + case CONST: + case CONST_DOUBLE: + { + *total = COSTS_N_INSNS (4); + return true; + } + + case AND: + { + /* Recognize 'nor' insn pattern. */ + if (GET_CODE (XEXP (x, 0)) == NOT + && GET_CODE (XEXP (x, 1)) == NOT) + { + *total = COSTS_N_INSNS (1); + return true; + } + return false; + } + + case MULT: + { + *total = COSTS_N_INSNS (1); + return false; + } + case SIGN_EXTEND: + { + *total = COSTS_N_INSNS (3); + return false; + } + case ZERO_EXTEND: + { + *total = COSTS_N_INSNS (1); + return false; + } + + default: + return false; + } +} + +/* Implement TARGET_PREFERRED_RELOAD_CLASS. */ +static reg_class_t +nios2_preferred_reload_class (rtx x ATTRIBUTE_UNUSED, reg_class_t regclass) +{ + return regclass == NO_REGS ? GENERAL_REGS : regclass; +} + +/* Emit a call to __tls_get_addr. TI is the argument to this function. + RET is an RTX for the return value location. The entire insn sequence + is returned. */ +static GTY(()) rtx nios2_tls_symbol; + +static rtx +nios2_call_tls_get_addr (rtx ti) +{ + rtx arg = gen_rtx_REG (Pmode, FIRST_ARG_REGNO); + rtx ret = gen_rtx_REG (Pmode, FIRST_RETVAL_REGNO); + rtx fn, insn; + + if (!nios2_tls_symbol) + nios2_tls_symbol = init_one_libfunc ("__tls_get_addr"); + + emit_move_insn (arg, ti); + fn = gen_rtx_MEM (QImode, nios2_tls_symbol); + insn = emit_call_insn (gen_call_value (ret, fn, const0_rtx)); + RTL_CONST_CALL_P (insn) = 1; + use_reg (&CALL_INSN_FUNCTION_USAGE (insn), ret); + use_reg (&CALL_INSN_FUNCTION_USAGE (insn), arg); + + return ret; +} + +static rtx +nios2_unspec_address (rtx loc, rtx base_reg, int unspec) +{ + rtx unspec_offset = + gen_rtx_CONST (Pmode, gen_rtx_UNSPEC (Pmode, gen_rtvec (1, loc), + unspec)); + return gen_rtx_PLUS (Pmode, base_reg, unspec_offset); +} + +static rtx +nios2_got_address (rtx loc, int unspec) +{ + crtl->uses_pic_offset_table = 1; + return nios2_unspec_address (loc, pic_offset_table_rtx, unspec); +} + +/* Generate the code to access LOC, a thread local SYMBOL_REF. The + return value will be a valid address and move_operand (either a REG + or a LO_SUM). */ +static rtx +nios2_legitimize_tls_address (rtx loc) +{ + rtx tmp, mem, tp; + enum tls_model model = SYMBOL_REF_TLS_MODEL (loc); + + switch (model) + { + case TLS_MODEL_GLOBAL_DYNAMIC: + tmp = gen_reg_rtx (Pmode); + emit_move_insn (tmp, nios2_got_address (loc, UNSPEC_ADD_TLS_GD)); + return nios2_call_tls_get_addr (tmp); + + case TLS_MODEL_LOCAL_DYNAMIC: + tmp = gen_reg_rtx (Pmode); + emit_move_insn (tmp, nios2_got_address (loc, UNSPEC_ADD_TLS_LDM)); + return nios2_unspec_address (loc, nios2_call_tls_get_addr (tmp), + UNSPEC_ADD_TLS_LDO); + + case TLS_MODEL_INITIAL_EXEC: + tmp = gen_reg_rtx (Pmode); + mem = gen_const_mem (Pmode, nios2_got_address (loc, UNSPEC_LOAD_TLS_IE)); + emit_move_insn (tmp, mem); + tp = gen_rtx_REG (Pmode, TP_REGNO); + return gen_rtx_PLUS (Pmode, tp, tmp); + + case TLS_MODEL_LOCAL_EXEC: + tp = gen_rtx_REG (Pmode, TP_REGNO); + return nios2_unspec_address (loc, tp, UNSPEC_ADD_TLS_LE); + + default: + gcc_unreachable (); + } +} + +/* Divide Support + + If -O3 is used, we want to output a table lookup for + divides between small numbers (both num and den >= 0 + and < 0x10). The overhead of this method in the worst + case is 40 bytes in the text section (10 insns) and + 256 bytes in the data section. Additional divides do + not incur additional penalties in the data section. + + Code speed is improved for small divides by about 5x + when using this method in the worse case (~9 cycles + vs ~45). And in the worst case divides not within the + table are penalized by about 10% (~5 cycles vs ~45). + However in the typical case the penalty is not as bad + because doing the long divide in only 45 cycles is + quite optimistic. + + ??? would be nice to have some benchmarks other + than Dhrystone to back this up. + + This bit of expansion is to create this instruction + sequence as rtl. + or $8, $4, $5 + slli $9, $4, 4 + cmpgeui $3, $8, 16 + beq $3, $0, .L3 + or $10, $9, $5 + add $12, $11, divide_table + ldbu $2, 0($12) + br .L1 +.L3: + call slow_div +.L1: +# continue here with result in $2 + + ??? Ideally I would like the libcall block to contain all + of this code, but I don't know how to do that. What it + means is that if the divide can be eliminated, it may not + completely disappear. + + ??? The __divsi3_table label should ideally be moved out + of this block and into a global. If it is placed into the + sdata section we can save even more cycles by doing things + gp relative. */ +void +nios2_emit_expensive_div (rtx *operands, enum machine_mode mode) +{ + rtx or_result, shift_left_result; + rtx lookup_value; + rtx lab1, lab3; + rtx insns; + rtx libfunc; + rtx final_result; + rtx tmp; + rtx table; + + /* It may look a little generic, but only SImode is supported for now. */ + gcc_assert (mode == SImode); + libfunc = optab_libfunc (sdiv_optab, SImode); + + lab1 = gen_label_rtx (); + lab3 = gen_label_rtx (); + + or_result = expand_simple_binop (SImode, IOR, + operands[1], operands[2], + 0, 0, OPTAB_LIB_WIDEN); + + emit_cmp_and_jump_insns (or_result, GEN_INT (15), GTU, 0, + GET_MODE (or_result), 0, lab3); + JUMP_LABEL (get_last_insn ()) = lab3; + + shift_left_result = expand_simple_binop (SImode, ASHIFT, + operands[1], GEN_INT (4), + 0, 0, OPTAB_LIB_WIDEN); + + lookup_value = expand_simple_binop (SImode, IOR, + shift_left_result, operands[2], + 0, 0, OPTAB_LIB_WIDEN); + table = gen_rtx_PLUS (SImode, lookup_value, + gen_rtx_SYMBOL_REF (SImode, "__divsi3_table")); + convert_move (operands[0], gen_rtx_MEM (QImode, table), 1); + + tmp = emit_jump_insn (gen_jump (lab1)); + JUMP_LABEL (tmp) = lab1; + emit_barrier (); + + emit_label (lab3); + LABEL_NUSES (lab3) = 1; + + start_sequence (); + final_result = emit_library_call_value (libfunc, NULL_RTX, + LCT_CONST, SImode, 2, + operands[1], SImode, + operands[2], SImode); + + insns = get_insns (); + end_sequence (); + emit_libcall_block (insns, operands[0], final_result, + gen_rtx_DIV (SImode, operands[1], operands[2])); + + emit_label (lab1); + LABEL_NUSES (lab1) = 1; +} + + +/* Branches and compares. */ + +/* Return in *ALT_CODE and *ALT_OP, an alternate equivalent constant + comparison, e.g. >= 1 into > 0. */ +static void +nios2_alternate_compare_const (enum rtx_code code, rtx op, + enum rtx_code *alt_code, rtx *alt_op, + enum machine_mode mode) +{ + HOST_WIDE_INT opval = INTVAL (op); + enum rtx_code scode = signed_condition (code); + bool dec_p = (scode == LT || scode == GE); + + if (code == EQ || code == NE) + { + *alt_code = code; + *alt_op = op; + return; + } + + *alt_op = (dec_p + ? gen_int_mode (opval - 1, mode) + : gen_int_mode (opval + 1, mode)); + + /* The required conversion between [>,>=] and [<,<=] is captured + by a reverse + swap of condition codes. */ + *alt_code = reverse_condition (swap_condition (code)); + + { + /* Test if the incremented/decremented value crosses the over/underflow + boundary. Supposedly, such boundary cases should already be transformed + into always-true/false or EQ conditions, so use an assertion here. */ + unsigned HOST_WIDE_INT alt_opval = INTVAL (*alt_op); + if (code == scode) + alt_opval ^= (1 << (GET_MODE_BITSIZE (mode) - 1)); + alt_opval &= GET_MODE_MASK (mode); + gcc_assert (dec_p ? alt_opval != GET_MODE_MASK (mode) : alt_opval != 0); + } +} + +/* Return true if the constant comparison is supported by nios2. */ +static bool +nios2_valid_compare_const_p (enum rtx_code code, rtx op) +{ + switch (code) + { + case EQ: case NE: case GE: case LT: + return SMALL_INT (INTVAL (op)); + case GEU: case LTU: + return SMALL_INT_UNSIGNED (INTVAL (op)); + default: + return false; + } +} + +/* Checks if the FPU comparison in *CMP, *OP1, and *OP2 can be supported in + the current configuration. Perform modifications if MODIFY_P is true. + Returns true if FPU compare can be done. */ + +bool +nios2_validate_fpu_compare (enum machine_mode mode, rtx *cmp, rtx *op1, rtx *op2, + bool modify_p) +{ + bool rev_p = false; + enum rtx_code code = GET_CODE (*cmp); + + if (!nios2_fpu_compare_enabled (code, mode)) + { + code = swap_condition (code); + if (nios2_fpu_compare_enabled (code, mode)) + rev_p = true; + else + return false; + } + + if (modify_p) + { + if (rev_p) + { + rtx tmp = *op1; + *op1 = *op2; + *op2 = tmp; + } + *op1 = force_reg (mode, *op1); + *op2 = force_reg (mode, *op2); + *cmp = gen_rtx_fmt_ee (code, mode, *op1, *op2); + } + return true; +} + +/* Checks and modifies the comparison in *CMP, *OP1, and *OP2 into valid + nios2 supported form. Returns true if success. */ +bool +nios2_validate_compare (enum machine_mode mode, rtx *cmp, rtx *op1, rtx *op2) +{ + enum rtx_code code = GET_CODE (*cmp); + enum rtx_code alt_code; + rtx alt_op2; + + if (GET_MODE_CLASS (mode) == MODE_FLOAT) + return nios2_validate_fpu_compare (mode, cmp, op1, op2, true); + + if (!reg_or_0_operand (*op2, mode)) + { + /* Create alternate constant compare. */ + nios2_alternate_compare_const (code, *op2, &alt_code, &alt_op2, mode); + + /* If alterate op2 is zero(0), we can use it directly, possibly + swapping the compare code. */ + if (alt_op2 == const0_rtx) + { + code = alt_code; + *op2 = alt_op2; + goto check_rebuild_cmp; + } + + /* Check if either constant compare can be used. */ + if (nios2_valid_compare_const_p (code, *op2)) + return true; + else if (nios2_valid_compare_const_p (alt_code, alt_op2)) + { + code = alt_code; + *op2 = alt_op2; + goto rebuild_cmp; + } + + /* We have to force op2 into a register now. Try to pick one + with a lower cost. */ + if (! nios2_simple_const_p (*op2) + && nios2_simple_const_p (alt_op2)) + { + code = alt_code; + *op2 = alt_op2; + } + *op2 = force_reg (SImode, *op2); + } + check_rebuild_cmp: + if (code == GT || code == GTU || code == LE || code == LEU) + { + rtx t = *op1; *op1 = *op2; *op2 = t; + code = swap_condition (code); + } + rebuild_cmp: + *cmp = gen_rtx_fmt_ee (code, mode, *op1, *op2); + return true; +} + + +/* Addressing Modes. */ + +/* Implement TARGET_LEGITIMATE_CONSTANT_P. */ +static bool +nios2_legitimate_constant_p (enum machine_mode mode ATTRIBUTE_UNUSED, rtx x) +{ + rtx base, offset; + split_const (x, &base, &offset); + return GET_CODE (base) != SYMBOL_REF || !SYMBOL_REF_TLS_MODEL (base); +} + +/* Implement TARGET_CANNOT_FORCE_CONST_MEM. */ +static bool +nios2_cannot_force_const_mem (enum machine_mode mode ATTRIBUTE_UNUSED, rtx x) +{ + return nios2_legitimate_constant_p (mode, x) == false; +} + +/* Return true if register REGNO is a valid base register. + STRICT_P is true if REG_OK_STRICT is in effect. */ + +bool +nios2_regno_ok_for_base_p (int regno, bool strict_p) +{ + if (!HARD_REGISTER_NUM_P (regno)) + { + if (!strict_p) + return true; + + if (!reg_renumber) + return false; + + regno = reg_renumber[regno]; + } + + /* The fake registers will be eliminated to either the stack or + hard frame pointer, both of which are usually valid base registers. + Reload deals with the cases where the eliminated form isn't valid. */ + return (GP_REG_P (regno) + || regno == FRAME_POINTER_REGNUM + || regno == ARG_POINTER_REGNUM); +} + +/* Return true if the address expression formed by BASE + OFFSET is + valid. */ +static bool +nios2_valid_addr_expr_p (rtx base, rtx offset, bool strict_p) +{ + if (!strict_p && GET_CODE (base) == SUBREG) + base = SUBREG_REG (base); + return (REG_P (base) + && nios2_regno_ok_for_base_p (REGNO (base), strict_p) + && (offset == NULL_RTX + || const_arith_operand (offset, Pmode) + || nios2_unspec_reloc_p (offset))); +} + +/* Implement TARGET_LEGITIMATE_ADDRESS_P. */ +static bool +nios2_legitimate_address_p (enum machine_mode mode ATTRIBUTE_UNUSED, + rtx operand, bool strict_p) +{ + switch (GET_CODE (operand)) + { + /* Direct. */ + case SYMBOL_REF: + if (SYMBOL_REF_TLS_MODEL (operand)) + return false; + + if (nios2_symbol_ref_in_small_data_p (operand)) + return true; + + /* Else, fall through. */ + case LABEL_REF: + case CONST_INT: + case CONST: + case CONST_DOUBLE: + return false; + + /* Register indirect. */ + case REG: + return nios2_regno_ok_for_base_p (REGNO (operand), strict_p); + + /* Register indirect with displacement. */ + case PLUS: + { + rtx op0 = XEXP (operand, 0); + rtx op1 = XEXP (operand, 1); + + return (nios2_valid_addr_expr_p (op0, op1, strict_p) + || nios2_valid_addr_expr_p (op1, op0, strict_p)); + } + + default: + break; + } + return false; +} + +/* Return true if SECTION is a small section name. */ +static bool +nios2_small_section_name_p (const char *section) +{ + return (strcmp (section, ".sbss") == 0 + || strncmp (section, ".sbss.", 6) == 0 + || strcmp (section, ".sdata") == 0 + || strncmp (section, ".sdata.", 7) == 0); +} + +/* Return true if EXP should be placed in the small data section. */ +static bool +nios2_in_small_data_p (const_tree exp) +{ + /* We want to merge strings, so we never consider them small data. */ + if (TREE_CODE (exp) == STRING_CST) + return false; + + if (TREE_CODE (exp) == VAR_DECL) + { + if (DECL_SECTION_NAME (exp)) + { + const char *section = TREE_STRING_POINTER (DECL_SECTION_NAME (exp)); + if (nios2_section_threshold > 0 + && nios2_small_section_name_p (section)) + return true; + } + else + { + HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp)); + + /* If this is an incomplete type with size 0, then we can't put it + in sdata because it might be too big when completed. */ + if (size > 0 + && (unsigned HOST_WIDE_INT) size <= nios2_section_threshold) + return true; + } + } + + return false; +} + +/* Return true if symbol is in small data section. */ + +bool +nios2_symbol_ref_in_small_data_p (rtx sym) +{ + gcc_assert (GET_CODE (sym) == SYMBOL_REF); + return + (TARGET_GPOPT + /* GP-relative access cannot be used for externally defined symbols, + because the compilation unit that defines the symbol may place it + in a section that cannot be reached from GP. */ + && !SYMBOL_REF_EXTERNAL_P (sym) + /* True if a symbol is both small and not weak. */ + && SYMBOL_REF_SMALL_P (sym) + && !(SYMBOL_REF_DECL (sym) && DECL_WEAK (SYMBOL_REF_DECL (sym))) + /* TLS variables are not accessed through the GP. */ + && SYMBOL_REF_TLS_MODEL (sym) == 0); + +} + +/* Implement TARGET_SECTION_TYPE_FLAGS. */ + +static unsigned int +nios2_section_type_flags (tree decl, const char *name, int reloc) +{ + unsigned int flags; + + flags = default_section_type_flags (decl, name, reloc); + + if (nios2_small_section_name_p (name)) + flags |= SECTION_SMALL; + + return flags; +} + + +/* Position independent code related. */ + +/* Emit code to load the PIC register. */ +static void +nios2_load_pic_register (void) +{ + rtx tmp = gen_rtx_REG (Pmode, TEMP_REG_NUM); + + emit_insn (gen_load_got_register (pic_offset_table_rtx, tmp)); + emit_insn (gen_add3_insn (pic_offset_table_rtx, pic_offset_table_rtx, tmp)); +} + +/* Generate a PIC address as a MEM rtx. */ +static rtx +nios2_load_pic_address (rtx sym, int unspec) +{ + rtx gotaddr = nios2_got_address (sym, unspec); + return gen_const_mem (Pmode, gotaddr); +} + +/* Nonzero if the constant value X is a legitimate general operand + when generating PIC code. It is given that flag_pic is on and + that X satisfies CONSTANT_P or is a CONST_DOUBLE. */ +bool +nios2_legitimate_pic_operand_p (rtx x) +{ + return ! (GET_CODE (x) == SYMBOL_REF + || GET_CODE (x) == LABEL_REF || GET_CODE (x) == CONST); +} + +/* Return TRUE if X is a thread-local symbol. */ +static bool +nios2_tls_symbol_p (rtx x) +{ + return (targetm.have_tls && GET_CODE (x) == SYMBOL_REF + && SYMBOL_REF_TLS_MODEL (x) != 0); +} + +/* Legitimize addresses that are CONSTANT_P expressions. */ +static rtx +nios2_legitimize_constant_address (rtx addr) +{ + rtx base, offset; + split_const (addr, &base, &offset); + + if (nios2_tls_symbol_p (base)) + base = nios2_legitimize_tls_address (base); + else if (flag_pic) + base = nios2_load_pic_address (base, UNSPEC_PIC_SYM); + else + return addr; + + if (offset != const0_rtx) + { + gcc_assert (can_create_pseudo_p ()); + return gen_rtx_PLUS (Pmode, force_reg (Pmode, base), + (CONST_INT_P (offset) + ? (SMALL_INT (INTVAL (offset)) + ? offset : force_reg (Pmode, offset)) + : offset)); + } + return base; +} + +/* Implement TARGET_LEGITIMIZE_ADDRESS. */ +static rtx +nios2_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, + enum machine_mode mode ATTRIBUTE_UNUSED) +{ + if (CONSTANT_P (x)) + return nios2_legitimize_constant_address (x); + + /* For the TLS LE (Local Exec) model, the compiler may try to + combine constant offsets with unspec relocs, creating address RTXs + looking like this: + (plus:SI (reg:SI 23 r23) + (const:SI + (plus:SI + (unspec:SI [(symbol_ref:SI ("var"))] UNSPEC_ADD_TLS_LE) + (const_int 48 [0x30])))) + + This usually happens when 'var' is a thread-local struct variable, + and access of a field in var causes the addend. + + We typically want this combining, so transform the above into this + form, which is allowed: + (plus:SI (reg:SI 23 r23) + (const:SI + (unspec:SI + [(const:SI + (plus:SI (symbol_ref:SI ("var")) + (const_int 48 [0x30])))] UNSPEC_ADD_TLS_LE))) + + Which will be output as '%tls_le(var+48)(r23)' in assembly. */ + if (GET_CODE (x) == PLUS + && GET_CODE (XEXP (x, 0)) == REG + && GET_CODE (XEXP (x, 1)) == CONST) + { + rtx unspec, offset, reg = XEXP (x, 0); + split_const (XEXP (x, 1), &unspec, &offset); + if (GET_CODE (unspec) == UNSPEC + && nios2_unspec_reloc_name (XINT (unspec, 1)) != NULL + && offset != const0_rtx) + { + unspec = copy_rtx (unspec); + XVECEXP (unspec, 0, 0) + = plus_constant (Pmode, XVECEXP (unspec, 0, 0), INTVAL (offset)); + x = gen_rtx_PLUS (Pmode, reg, gen_rtx_CONST (Pmode, unspec)); + } + } + + return x; +} + +/* Main expander function for RTL moves. */ +int +nios2_emit_move_sequence (rtx *operands, enum machine_mode mode) +{ + rtx to = operands[0]; + rtx from = operands[1]; + + if (!register_operand (to, mode) && !reg_or_0_operand (from, mode)) + { + gcc_assert (can_create_pseudo_p ()); + from = copy_to_mode_reg (mode, from); + } + + if (GET_CODE (from) == SYMBOL_REF || GET_CODE (from) == LABEL_REF + || GET_CODE (from) == CONST) + from = nios2_legitimize_constant_address (from); + + operands[0] = to; + operands[1] = from; + return 0; +} + +/* The function with address *ADDR is being called. If the address + needs to be loaded from the GOT, emit the instruction to do so and + update *ADDR to point to the rtx for the loaded value. */ +void +nios2_adjust_call_address (rtx *call_op) +{ + rtx addr; + gcc_assert (MEM_P (*call_op)); + addr = XEXP (*call_op, 0); + if (flag_pic && CONSTANT_P (addr)) + { + rtx reg = gen_reg_rtx (Pmode); + emit_move_insn (reg, nios2_load_pic_address (addr, UNSPEC_PIC_CALL_SYM)); + XEXP (*call_op, 0) = reg; + } +} + + +/* Output assembly language related definitions. */ + +/* Print the operand OP to file stream FILE modified by LETTER. + LETTER can be one of: + + i: print "i" if OP is an immediate, except 0 + o: print "io" if OP is volatile + z: for const0_rtx print $0 instead of 0 + H: for %hiadj + L: for %lo + U: for upper half of 32 bit value + D: for the upper 32-bits of a 64-bit double value + R: prints reverse condition. +*/ +static void +nios2_print_operand (FILE *file, rtx op, int letter) +{ + + switch (letter) + { + case 'i': + if (CONSTANT_P (op) && op != const0_rtx) + fprintf (file, "i"); + return; + + case 'o': + if (GET_CODE (op) == MEM + && ((MEM_VOLATILE_P (op) && TARGET_BYPASS_CACHE_VOLATILE) + || TARGET_BYPASS_CACHE)) + fprintf (file, "io"); + return; + + default: + break; + } + + if (comparison_operator (op, VOIDmode)) + { + enum rtx_code cond = GET_CODE (op); + if (letter == 0) + { + fprintf (file, "%s", GET_RTX_NAME (cond)); + return; + } + if (letter == 'R') + { + fprintf (file, "%s", GET_RTX_NAME (reverse_condition (cond))); + return; + } + } + + switch (GET_CODE (op)) + { + case REG: + if (letter == 0 || letter == 'z') + { + fprintf (file, "%s", reg_names[REGNO (op)]); + return; + } + else if (letter == 'D') + { + fprintf (file, "%s", reg_names[REGNO (op)+1]); + return; + } + break; + + case CONST_INT: + if (INTVAL (op) == 0 && letter == 'z') + { + fprintf (file, "zero"); + return; + } + + if (letter == 'U') + { + HOST_WIDE_INT val = INTVAL (op); + val = (val >> 16) & 0xFFFF; + output_addr_const (file, gen_int_mode (val, SImode)); + return; + } + /* Else, fall through. */ + + case CONST: + case LABEL_REF: + case SYMBOL_REF: + case CONST_DOUBLE: + if (letter == 0 || letter == 'z') + { + output_addr_const (file, op); + return; + } + else if (letter == 'H') + { + fprintf (file, "%%hiadj("); + output_addr_const (file, op); + fprintf (file, ")"); + return; + } + else if (letter == 'L') + { + fprintf (file, "%%lo("); + output_addr_const (file, op); + fprintf (file, ")"); + return; + } + break; + + case SUBREG: + case MEM: + if (letter == 0) + { + output_address (op); + return; + } + break; + + case CODE_LABEL: + if (letter == 0) + { + output_addr_const (file, op); + return; + } + break; + + default: + break; + } + + output_operand_lossage ("Unsupported operand for code '%c'", letter); + gcc_unreachable (); +} + +/* Return true if this is a GP-relative accessible reference. */ +static bool +gprel_constant_p (rtx op) +{ + if (GET_CODE (op) == SYMBOL_REF + && nios2_symbol_ref_in_small_data_p (op)) + return true; + else if (GET_CODE (op) == CONST + && GET_CODE (XEXP (op, 0)) == PLUS) + return gprel_constant_p (XEXP (XEXP (op, 0), 0)); + + return false; +} + +/* Return the name string for a supported unspec reloc offset. */ +static const char * +nios2_unspec_reloc_name (int unspec) +{ + switch (unspec) + { + case UNSPEC_PIC_SYM: + return "got"; + case UNSPEC_PIC_CALL_SYM: + return "call"; + case UNSPEC_LOAD_TLS_IE: + return "tls_ie"; + case UNSPEC_ADD_TLS_LE: + return "tls_le"; + case UNSPEC_ADD_TLS_GD: + return "tls_gd"; + case UNSPEC_ADD_TLS_LDM: + return "tls_ldm"; + case UNSPEC_ADD_TLS_LDO: + return "tls_ldo"; + default: + return NULL; + } +} + +/* Return true for conforming unspec relocations. Also used in + constraints.md and predicates.md. */ +bool +nios2_unspec_reloc_p (rtx op) +{ + return (GET_CODE (op) == CONST + && GET_CODE (XEXP (op, 0)) == UNSPEC + && nios2_unspec_reloc_name (XINT (XEXP (op, 0), 1)) != NULL); +} + +/* Implement TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA. */ +static bool +nios2_output_addr_const_extra (FILE *file, rtx op) +{ + const char *name; + gcc_assert (GET_CODE (op) == UNSPEC); + + /* Support for printing out const unspec relocations. */ + name = nios2_unspec_reloc_name (XINT (op, 1)); + if (name) + { + fprintf (file, "%%%s(", name); + output_addr_const (file, XVECEXP (op, 0, 0)); + fprintf (file, ")"); + return true; + } + return false; +} + +/* Implement TARGET_PRINT_OPERAND_ADDRESS. */ +static void +nios2_print_operand_address (FILE *file, rtx op) +{ + switch (GET_CODE (op)) + { + case CONST: + case CONST_INT: + case LABEL_REF: + case CONST_DOUBLE: + case SYMBOL_REF: + if (gprel_constant_p (op)) + { + fprintf (file, "%%gprel("); + output_addr_const (file, op); + fprintf (file, ")(%s)", reg_names[GP_REGNO]); + return; + } + + break; + + case PLUS: + { + rtx op0 = XEXP (op, 0); + rtx op1 = XEXP (op, 1); + + if (REG_P (op0) && CONSTANT_P (op1)) + { + output_addr_const (file, op1); + fprintf (file, "(%s)", reg_names[REGNO (op0)]); + return; + } + else if (REG_P (op1) && CONSTANT_P (op0)) + { + output_addr_const (file, op0); + fprintf (file, "(%s)", reg_names[REGNO (op1)]); + return; + } + } + break; + + case REG: + fprintf (file, "0(%s)", reg_names[REGNO (op)]); + return; + + case MEM: + { + rtx base = XEXP (op, 0); + nios2_print_operand_address (file, base); + return; + } + default: + break; + } + + fprintf (stderr, "Missing way to print address\n"); + debug_rtx (op); + gcc_unreachable (); +} + +/* Implement TARGET_ASM_OUTPUT_DWARF_DTPREL. */ +static void +nios2_output_dwarf_dtprel (FILE *file, int size, rtx x) +{ + gcc_assert (size == 4); + fprintf (file, "\t.4byte\t%%tls_ldo("); + output_addr_const (file, x); + fprintf (file, ")"); +} + +/* Implement TARGET_ASM_FUNCTION_PROLOGUE. */ +static void +nios2_asm_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED) +{ + if (flag_verbose_asm || flag_debug_asm) + { + nios2_compute_frame_layout (); + nios2_dump_frame_layout (file); + } +} + +/* Emit assembly of custom FPU instructions. */ +const char * +nios2_fpu_insn_asm (enum n2fpu_code code) +{ + static char buf[256]; + const char *op1, *op2, *op3; + int ln = 256, n = 0; + + int N = N2FPU_N (code); + int num_operands = N2FPU (code).num_operands; + const char *insn_name = N2FPU_NAME (code); + tree ftype = nios2_ftype (N2FPU_FTCODE (code)); + enum machine_mode dst_mode = TYPE_MODE (TREE_TYPE (ftype)); + enum machine_mode src_mode = TYPE_MODE (TREE_VALUE (TYPE_ARG_TYPES (ftype))); + + /* Prepare X register for DF input operands. */ + if (GET_MODE_SIZE (src_mode) == 8 && num_operands == 3) + n = snprintf (buf, ln, "custom\t%d, zero, %%1, %%D1 # fwrx %%1\n\t", + N2FPU_N (n2fpu_fwrx)); + + if (src_mode == SFmode) + { + if (dst_mode == VOIDmode) + { + /* The fwry case. */ + op1 = op3 = "zero"; + op2 = "%0"; + num_operands -= 1; + } + else + { + op1 = "%0"; op2 = "%1"; + op3 = (num_operands == 2 ? "zero" : "%2"); + } + } + else if (src_mode == DFmode) + { + if (dst_mode == VOIDmode) + { + /* The fwrx case. */ + op1 = "zero"; + op2 = "%0"; + op3 = "%D0"; + num_operands -= 1; + } + else + { + op1 = (dst_mode == DFmode ? "%D0" : "%0"); + op2 = (num_operands == 2 ? "%1" : "%2"); + op3 = (num_operands == 2 ? "%D1" : "%D2"); + } + } + else if (src_mode == VOIDmode) + { + /* frdxlo, frdxhi, frdy cases. */ + gcc_assert (dst_mode == SFmode); + op1 = "%0"; + op2 = op3 = "zero"; + } + else if (src_mode == SImode) + { + /* Conversion operators. */ + gcc_assert (num_operands == 2); + op1 = (dst_mode == DFmode ? "%D0" : "%0"); + op2 = "%1"; + op3 = "zero"; + } + else + gcc_unreachable (); + + /* Main instruction string. */ + n += snprintf (buf + n, ln - n, "custom\t%d, %s, %s, %s # %s %%0%s%s", + N, op1, op2, op3, insn_name, + (num_operands >= 2 ? ", %1" : ""), + (num_operands == 3 ? ", %2" : "")); + + /* Extraction of Y register for DF results. */ + if (dst_mode == DFmode) + snprintf (buf + n, ln - n, "\n\tcustom\t%d, %%0, zero, zero # frdy %%0", + N2FPU_N (n2fpu_frdy)); + return buf; +} + + + +/* Function argument related. */ + +/* Define where to put the arguments to a function. Value is zero to + push the argument on the stack, or a hard register in which to + store the argument. + + MODE is the argument's machine mode. + TYPE is the data type of the argument (as a tree). + This is null for libcalls where that information may + not be available. + CUM is a variable of type CUMULATIVE_ARGS which gives info about + the preceding args and about the function being called. + NAMED is nonzero if this argument is a named parameter + (otherwise it is an extra parameter matching an ellipsis). */ + +static rtx +nios2_function_arg (cumulative_args_t cum_v, enum machine_mode mode, + const_tree type ATTRIBUTE_UNUSED, + bool named ATTRIBUTE_UNUSED) +{ + CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v); + rtx return_rtx = NULL_RTX; + + if (cum->regs_used < NUM_ARG_REGS) + return_rtx = gen_rtx_REG (mode, FIRST_ARG_REGNO + cum->regs_used); + + return return_rtx; +} + +/* Return number of bytes, at the beginning of the argument, that must be + put in registers. 0 is the argument is entirely in registers or entirely + in memory. */ + +static int +nios2_arg_partial_bytes (cumulative_args_t cum_v, + enum machine_mode mode, tree type ATTRIBUTE_UNUSED, + bool named ATTRIBUTE_UNUSED) +{ + CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v); + HOST_WIDE_INT param_size; + + if (mode == BLKmode) + { + param_size = int_size_in_bytes (type); + gcc_assert (param_size >= 0); + } + else + param_size = GET_MODE_SIZE (mode); + + /* Convert to words (round up). */ + param_size = (UNITS_PER_WORD - 1 + param_size) / UNITS_PER_WORD; + + if (cum->regs_used < NUM_ARG_REGS + && cum->regs_used + param_size > NUM_ARG_REGS) + return (NUM_ARG_REGS - cum->regs_used) * UNITS_PER_WORD; + + return 0; +} + +/* Update the data in CUM to advance over an argument of mode MODE + and data type TYPE; TYPE is null for libcalls where that information + may not be available. */ + +static void +nios2_function_arg_advance (cumulative_args_t cum_v, enum machine_mode mode, + const_tree type ATTRIBUTE_UNUSED, + bool named ATTRIBUTE_UNUSED) +{ + CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v); + HOST_WIDE_INT param_size; + + if (mode == BLKmode) + { + param_size = int_size_in_bytes (type); + gcc_assert (param_size >= 0); + } + else + param_size = GET_MODE_SIZE (mode); + + /* Convert to words (round up). */ + param_size = (UNITS_PER_WORD - 1 + param_size) / UNITS_PER_WORD; + + if (cum->regs_used + param_size > NUM_ARG_REGS) + cum->regs_used = NUM_ARG_REGS; + else + cum->regs_used += param_size; +} + +enum direction +nios2_function_arg_padding (enum machine_mode mode, const_tree type) +{ + /* On little-endian targets, the first byte of every stack argument + is passed in the first byte of the stack slot. */ + if (!BYTES_BIG_ENDIAN) + return upward; + + /* Otherwise, integral types are padded downward: the last byte of a + stack argument is passed in the last byte of the stack slot. */ + if (type != 0 + ? INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type) + : GET_MODE_CLASS (mode) == MODE_INT) + return downward; + + /* Arguments smaller than a stack slot are padded downward. */ + if (mode != BLKmode) + return (GET_MODE_BITSIZE (mode) >= PARM_BOUNDARY) ? upward : downward; + + return ((int_size_in_bytes (type) >= (PARM_BOUNDARY / BITS_PER_UNIT)) + ? upward : downward); +} + +enum direction +nios2_block_reg_padding (enum machine_mode mode, tree type, + int first ATTRIBUTE_UNUSED) +{ + return nios2_function_arg_padding (mode, type); +} + +/* Emit RTL insns to initialize the variable parts of a trampoline. + FNADDR is an RTX for the address of the function's pure code. + CXT is an RTX for the static chain value for the function. + On Nios II, we handle this by a library call. */ +static void +nios2_trampoline_init (rtx m_tramp, tree fndecl, rtx cxt) +{ + rtx fnaddr = XEXP (DECL_RTL (fndecl), 0); + rtx ctx_reg = force_reg (Pmode, cxt); + rtx addr = force_reg (Pmode, XEXP (m_tramp, 0)); + + emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__trampoline_setup"), + LCT_NORMAL, VOIDmode, 3, addr, Pmode, fnaddr, Pmode, + ctx_reg, Pmode); +} + +/* Implement TARGET_FUNCTION_VALUE. */ +static rtx +nios2_function_value (const_tree ret_type, const_tree fn ATTRIBUTE_UNUSED, + bool outgoing ATTRIBUTE_UNUSED) +{ + return gen_rtx_REG (TYPE_MODE (ret_type), FIRST_RETVAL_REGNO); +} + +/* Implement TARGET_LIBCALL_VALUE. */ +static rtx +nios2_libcall_value (enum machine_mode mode, const_rtx fun ATTRIBUTE_UNUSED) +{ + return gen_rtx_REG (mode, FIRST_RETVAL_REGNO); +} + +/* Implement TARGET_FUNCTION_VALUE_REGNO_P. */ +static bool +nios2_function_value_regno_p (const unsigned int regno) +{ + return regno == FIRST_RETVAL_REGNO; +} + +/* Implement TARGET_RETURN_IN_MEMORY. */ +static bool +nios2_return_in_memory (const_tree type, const_tree fntype ATTRIBUTE_UNUSED) +{ + return (int_size_in_bytes (type) > (2 * UNITS_PER_WORD) + || int_size_in_bytes (type) == -1); +} + +/* TODO: It may be possible to eliminate the copyback and implement + own va_arg type. */ +static void +nios2_setup_incoming_varargs (cumulative_args_t cum_v, + enum machine_mode mode, tree type, + int *pretend_size, int second_time) +{ + CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v); + CUMULATIVE_ARGS local_cum; + cumulative_args_t local_cum_v = pack_cumulative_args (&local_cum); + int regs_to_push; + int pret_size; + + local_cum = *cum; + nios2_function_arg_advance (local_cum_v, mode, type, 1); + + regs_to_push = NUM_ARG_REGS - local_cum.regs_used; + + if (!second_time && regs_to_push > 0) + { + rtx ptr = virtual_incoming_args_rtx; + rtx mem = gen_rtx_MEM (BLKmode, ptr); + emit_insn (gen_blockage ()); + move_block_from_reg (local_cum.regs_used + FIRST_ARG_REGNO, mem, + regs_to_push); + emit_insn (gen_blockage ()); + } + + pret_size = regs_to_push * UNITS_PER_WORD; + if (pret_size) + *pretend_size = pret_size; +} + + + +/* Init FPU builtins. */ +static void +nios2_init_fpu_builtins (int start_code) +{ + tree fndecl; + char builtin_name[64] = "__builtin_custom_"; + unsigned int i, n = strlen ("__builtin_custom_"); + + for (i = 0; i < ARRAY_SIZE (nios2_fpu_insn); i++) + { + snprintf (builtin_name + n, sizeof (builtin_name) - n, + "%s", N2FPU_NAME (i)); + fndecl = + add_builtin_function (builtin_name, nios2_ftype (N2FPU_FTCODE (i)), + start_code + i, BUILT_IN_MD, NULL, NULL_TREE); + nios2_register_builtin_fndecl (start_code + i, fndecl); + } +} + +/* Helper function for expanding FPU builtins. */ +static rtx +nios2_expand_fpu_builtin (tree exp, unsigned int code, rtx target) +{ + struct expand_operand ops[MAX_RECOG_OPERANDS]; + enum insn_code icode = N2FPU_ICODE (code); + int nargs, argno, opno = 0; + int num_operands = N2FPU (code).num_operands; + enum machine_mode dst_mode = TYPE_MODE (TREE_TYPE (exp)); + bool has_target_p = (dst_mode != VOIDmode); + + if (N2FPU_N (code) < 0) + fatal_error ("Cannot call %<__builtin_custom_%s%> without specifying switch" + " %<-mcustom-%s%>", N2FPU_NAME (code), N2FPU_NAME (code)); + if (has_target_p) + create_output_operand (&ops[opno++], target, dst_mode); + else + /* Subtract away the count of the VOID return, mainly for fwrx/fwry. */ + num_operands -= 1; + nargs = call_expr_nargs (exp); + for (argno = 0; argno < nargs; argno++) + { + tree arg = CALL_EXPR_ARG (exp, argno); + create_input_operand (&ops[opno++], expand_normal (arg), + TYPE_MODE (TREE_TYPE (arg))); + } + if (!maybe_expand_insn (icode, num_operands, ops)) + { + error ("invalid argument to built-in function"); + return has_target_p ? gen_reg_rtx (ops[0].mode) : const0_rtx; + } + return has_target_p ? ops[0].value : const0_rtx; +} + +/* Nios II has custom instruction built-in functions of the forms: + __builtin_custom_n + __builtin_custom_nX + __builtin_custom_nXX + __builtin_custom_Xn + __builtin_custom_XnX + __builtin_custom_XnXX + + where each X could be either 'i' (int), 'f' (float), or 'p' (void*). + Therefore with 0-1 return values, and 0-2 arguments, we have a + total of (3 + 1) * (1 + 3 + 9) == 52 custom builtin functions. +*/ +#define NUM_CUSTOM_BUILTINS ((3 + 1) * (1 + 3 + 9)) +static char custom_builtin_name[NUM_CUSTOM_BUILTINS][5]; + +static void +nios2_init_custom_builtins (int start_code) +{ + tree builtin_ftype, ret_type, fndecl; + char builtin_name[32] = "__builtin_custom_"; + int n = strlen ("__builtin_custom_"); + int builtin_code = 0; + int lhs, rhs1, rhs2; + + struct { tree type; const char *c; } op[4]; + /* z */ op[0].c = ""; op[0].type = NULL_TREE; + /* f */ op[1].c = "f"; op[1].type = float_type_node; + /* i */ op[2].c = "i"; op[2].type = integer_type_node; + /* p */ op[3].c = "p"; op[3].type = ptr_type_node; + + /* We enumerate through the possible operand types to create all the + __builtin_custom_XnXX function tree types. Note that these may slightly + overlap with the function types created for other fixed builtins. */ + + for (lhs = 0; lhs < 4; lhs++) + for (rhs1 = 0; rhs1 < 4; rhs1++) + for (rhs2 = 0; rhs2 < 4; rhs2++) + { + if (rhs1 == 0 && rhs2 != 0) + continue; + ret_type = (op[lhs].type ? op[lhs].type : void_type_node); + builtin_ftype + = build_function_type_list (ret_type, integer_type_node, + op[rhs1].type, op[rhs2].type, + NULL_TREE); + snprintf (builtin_name + n, 32 - n, "%sn%s%s", + op[lhs].c, op[rhs1].c, op[rhs2].c); + /* Save copy of parameter string into custom_builtin_name[]. */ + strncpy (custom_builtin_name[builtin_code], builtin_name + n, 5); + fndecl = + add_builtin_function (builtin_name, builtin_ftype, + start_code + builtin_code, + BUILT_IN_MD, NULL, NULL_TREE); + nios2_register_builtin_fndecl (start_code + builtin_code, fndecl); + builtin_code += 1; + } +} + +/* Helper function for expanding custom builtins. */ +static rtx +nios2_expand_custom_builtin (tree exp, unsigned int index, rtx target) +{ + bool has_target_p = (TREE_TYPE (exp) != void_type_node); + enum machine_mode tmode = VOIDmode; + int nargs, argno; + rtx value, insn, unspec_args[3]; + tree arg; + + /* XnXX form. */ + if (has_target_p) + { + tmode = TYPE_MODE (TREE_TYPE (exp)); + if (!target || GET_MODE (target) != tmode + || !REG_P (target)) + target = gen_reg_rtx (tmode); + } + + nargs = call_expr_nargs (exp); + for (argno = 0; argno < nargs; argno++) + { + arg = CALL_EXPR_ARG (exp, argno); + value = expand_normal (arg); + unspec_args[argno] = value; + if (argno == 0) + { + if (!custom_insn_opcode (value, VOIDmode)) + error ("custom instruction opcode must be compile time " + "constant in the range 0-255 for __builtin_custom_%s", + custom_builtin_name[index]); + } + else + /* For other arguments, force into a register. */ + unspec_args[argno] = force_reg (TYPE_MODE (TREE_TYPE (arg)), + unspec_args[argno]); + } + /* Fill remaining unspec operands with zero. */ + for (; argno < 3; argno++) + unspec_args[argno] = const0_rtx; + + insn = (has_target_p + ? gen_rtx_SET (VOIDmode, target, + gen_rtx_UNSPEC_VOLATILE (tmode, + gen_rtvec_v (3, unspec_args), + UNSPECV_CUSTOM_XNXX)) + : gen_rtx_UNSPEC_VOLATILE (VOIDmode, gen_rtvec_v (3, unspec_args), + UNSPECV_CUSTOM_NXX)); + emit_insn (insn); + return has_target_p ? target : const0_rtx; +} + + + + +/* Main definition of built-in functions. Nios II has a small number of fixed + builtins, plus a large number of FPU insn builtins, and builtins for + generating custom instructions. */ + +struct nios2_builtin_desc +{ + enum insn_code icode; + enum nios2_ftcode ftype; + const char *name; +}; + +#define N2_BUILTINS \ + N2_BUILTIN_DEF (sync, N2_FTYPE_VOID_VOID) \ + N2_BUILTIN_DEF (ldbio, N2_FTYPE_SI_CVPTR) \ + N2_BUILTIN_DEF (ldbuio, N2_FTYPE_UI_CVPTR) \ + N2_BUILTIN_DEF (ldhio, N2_FTYPE_SI_CVPTR) \ + N2_BUILTIN_DEF (ldhuio, N2_FTYPE_UI_CVPTR) \ + N2_BUILTIN_DEF (ldwio, N2_FTYPE_SI_CVPTR) \ + N2_BUILTIN_DEF (stbio, N2_FTYPE_VOID_VPTR_SI) \ + N2_BUILTIN_DEF (sthio, N2_FTYPE_VOID_VPTR_SI) \ + N2_BUILTIN_DEF (stwio, N2_FTYPE_VOID_VPTR_SI) \ + N2_BUILTIN_DEF (rdctl, N2_FTYPE_SI_SI) \ + N2_BUILTIN_DEF (wrctl, N2_FTYPE_VOID_SI_SI) + +enum nios2_builtin_code { +#define N2_BUILTIN_DEF(name, ftype) NIOS2_BUILTIN_ ## name, + N2_BUILTINS +#undef N2_BUILTIN_DEF + NUM_FIXED_NIOS2_BUILTINS +}; + +static const struct nios2_builtin_desc nios2_builtins[] = { +#define N2_BUILTIN_DEF(name, ftype) \ + { CODE_FOR_ ## name, ftype, "__builtin_" #name }, + N2_BUILTINS +#undef N2_BUILTIN_DEF +}; + +/* Start/ends of FPU/custom insn builtin index ranges. */ +static unsigned int nios2_fpu_builtin_base; +static unsigned int nios2_custom_builtin_base; +static unsigned int nios2_custom_builtin_end; + +/* Implement TARGET_INIT_BUILTINS. */ +static void +nios2_init_builtins (void) +{ + unsigned int i; + + /* Initialize fixed builtins. */ + for (i = 0; i < ARRAY_SIZE (nios2_builtins); i++) + { + const struct nios2_builtin_desc *d = &nios2_builtins[i]; + tree fndecl = + add_builtin_function (d->name, nios2_ftype (d->ftype), i, + BUILT_IN_MD, NULL, NULL); + nios2_register_builtin_fndecl (i, fndecl); + } + + /* Initialize FPU builtins. */ + nios2_fpu_builtin_base = ARRAY_SIZE (nios2_builtins); + nios2_init_fpu_builtins (nios2_fpu_builtin_base); + + /* Initialize custom insn builtins. */ + nios2_custom_builtin_base + = nios2_fpu_builtin_base + ARRAY_SIZE (nios2_fpu_insn); + nios2_custom_builtin_end + = nios2_custom_builtin_base + NUM_CUSTOM_BUILTINS; + nios2_init_custom_builtins (nios2_custom_builtin_base); +} + +/* Array of fndecls for TARGET_BUILTIN_DECL. */ +#define NIOS2_NUM_BUILTINS \ + (ARRAY_SIZE (nios2_builtins) + ARRAY_SIZE (nios2_fpu_insn) + NUM_CUSTOM_BUILTINS) +static GTY(()) tree nios2_builtin_decls[NIOS2_NUM_BUILTINS]; + +static void +nios2_register_builtin_fndecl (unsigned code, tree fndecl) +{ + nios2_builtin_decls[code] = fndecl; +} + +/* Implement TARGET_BUILTIN_DECL. */ +static tree +nios2_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED) +{ + gcc_assert (nios2_custom_builtin_end == ARRAY_SIZE (nios2_builtin_decls)); + + if (code >= nios2_custom_builtin_end) + return error_mark_node; + + if (code >= nios2_fpu_builtin_base + && code < nios2_custom_builtin_base + && ! N2FPU_ENABLED_P (code - nios2_fpu_builtin_base)) + return error_mark_node; + + return nios2_builtin_decls[code]; +} + + +/* Low-level built-in expand routine. */ +static rtx +nios2_expand_builtin_insn (const struct nios2_builtin_desc *d, int n, + struct expand_operand *ops, bool has_target_p) +{ + if (maybe_expand_insn (d->icode, n, ops)) + return has_target_p ? ops[0].value : const0_rtx; + else + { + error ("invalid argument to built-in function %s", d->name); + return has_target_p ? gen_reg_rtx (ops[0].mode) : const0_rtx; + } +} + +/* Expand ldio/stio form load-store instruction builtins. */ +static rtx +nios2_expand_ldstio_builtin (tree exp, rtx target, + const struct nios2_builtin_desc *d) +{ + bool has_target_p; + rtx addr, mem, val; + struct expand_operand ops[MAX_RECOG_OPERANDS]; + enum machine_mode mode = insn_data[d->icode].operand[0].mode; + + addr = expand_normal (CALL_EXPR_ARG (exp, 0)); + mem = gen_rtx_MEM (mode, addr); + + if (insn_data[d->icode].operand[0].allows_mem) + { + /* stxio. */ + val = expand_normal (CALL_EXPR_ARG (exp, 1)); + if (CONST_INT_P (val)) + val = force_reg (mode, gen_int_mode (INTVAL (val), mode)); + val = simplify_gen_subreg (mode, val, GET_MODE (val), 0); + create_output_operand (&ops[0], mem, mode); + create_input_operand (&ops[1], val, mode); + has_target_p = false; + } + else + { + /* ldxio. */ + create_output_operand (&ops[0], target, mode); + create_input_operand (&ops[1], mem, mode); + has_target_p = true; + } + return nios2_expand_builtin_insn (d, 2, ops, has_target_p); +} + +/* Expand rdctl/wrctl builtins. */ +static rtx +nios2_expand_rdwrctl_builtin (tree exp, rtx target, + const struct nios2_builtin_desc *d) +{ + bool has_target_p = (insn_data[d->icode].operand[0].predicate + == register_operand); + rtx ctlcode = expand_normal (CALL_EXPR_ARG (exp, 0)); + struct expand_operand ops[MAX_RECOG_OPERANDS]; + if (!rdwrctl_operand (ctlcode, VOIDmode)) + { + error ("Control register number must be in range 0-31 for %s", + d->name); + return has_target_p ? gen_reg_rtx (SImode) : const0_rtx; + } + if (has_target_p) + { + create_output_operand (&ops[0], target, SImode); + create_integer_operand (&ops[1], INTVAL (ctlcode)); + } + else + { + rtx val = expand_normal (CALL_EXPR_ARG (exp, 1)); + create_integer_operand (&ops[0], INTVAL (ctlcode)); + create_input_operand (&ops[1], val, SImode); + } + return nios2_expand_builtin_insn (d, 2, ops, has_target_p); +} + +/* Implement TARGET_EXPAND_BUILTIN. Expand an expression EXP that calls + a built-in function, with result going to TARGET if that's convenient + (and in mode MODE if that's convenient). + SUBTARGET may be used as the target for computing one of EXP's operands. + IGNORE is nonzero if the value is to be ignored. */ + +static rtx +nios2_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, + enum machine_mode mode ATTRIBUTE_UNUSED, + int ignore ATTRIBUTE_UNUSED) +{ + tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0); + unsigned int fcode = DECL_FUNCTION_CODE (fndecl); + + if (fcode < nios2_fpu_builtin_base) + { + const struct nios2_builtin_desc *d = &nios2_builtins[fcode]; + + switch (fcode) + { + case NIOS2_BUILTIN_sync: + emit_insn (gen_sync ()); + return const0_rtx; + + case NIOS2_BUILTIN_ldbio: + case NIOS2_BUILTIN_ldbuio: + case NIOS2_BUILTIN_ldhio: + case NIOS2_BUILTIN_ldhuio: + case NIOS2_BUILTIN_ldwio: + case NIOS2_BUILTIN_stbio: + case NIOS2_BUILTIN_sthio: + case NIOS2_BUILTIN_stwio: + return nios2_expand_ldstio_builtin (exp, target, d); + + case NIOS2_BUILTIN_rdctl: + case NIOS2_BUILTIN_wrctl: + return nios2_expand_rdwrctl_builtin (exp, target, d); + + default: + gcc_unreachable (); + } + } + else if (fcode < nios2_custom_builtin_base) + /* FPU builtin range. */ + return nios2_expand_fpu_builtin (exp, fcode - nios2_fpu_builtin_base, + target); + else if (fcode < nios2_custom_builtin_end) + /* Custom insn builtin range. */ + return nios2_expand_custom_builtin (exp, fcode - nios2_custom_builtin_base, + target); + else + gcc_unreachable (); +} + +/* Implement TARGET_INIT_LIBFUNCS. */ +static void +nios2_init_libfuncs (void) +{ + /* For Linux, we have access to kernel support for atomic operations. */ + if (TARGET_LINUX_ABI) + init_sync_libfuncs (UNITS_PER_WORD); +} + + + +/* Register a custom code use, and signal error if a conflict was found. */ +static void +nios2_register_custom_code (unsigned int N, enum nios2_ccs_code status, + int index) +{ + gcc_assert (N <= 255); + + if (status == CCS_FPU) + { + if (custom_code_status[N] == CCS_FPU && index != custom_code_index[N]) + { + custom_code_conflict = true; + error ("switch %<-mcustom-%s%> conflicts with switch %<-mcustom-%s%>", + N2FPU_NAME (custom_code_index[N]), N2FPU_NAME (index)); + } + else if (custom_code_status[N] == CCS_BUILTIN_CALL) + { + custom_code_conflict = true; + error ("call to %<__builtin_custom_%s%> conflicts with switch " + "%<-mcustom-%s%>", custom_builtin_name[custom_code_index[N]], + N2FPU_NAME (index)); + } + } + else if (status == CCS_BUILTIN_CALL) + { + if (custom_code_status[N] == CCS_FPU) + { + custom_code_conflict = true; + error ("call to %<__builtin_custom_%s%> conflicts with switch " + "%<-mcustom-%s%>", custom_builtin_name[index], + N2FPU_NAME (custom_code_index[N])); + } + else + { + /* Note that code conflicts between different __builtin_custom_xnxx + calls are not checked. */ + } + } + else + gcc_unreachable (); + + custom_code_status[N] = status; + custom_code_index[N] = index; +} + +/* Mark a custom code as not in use. */ +static void +nios2_deregister_custom_code (unsigned int N) +{ + if (N <= 255) + { + custom_code_status[N] = CCS_UNUSED; + custom_code_index[N] = 0; + } +} + +/* Target attributes can affect per-function option state, so we need to + save/restore the custom code tracking info using the + TARGET_OPTION_SAVE/TARGET_OPTION_RESTORE hooks. */ + +static void +nios2_option_save (struct cl_target_option *ptr, + struct gcc_options *opts ATTRIBUTE_UNUSED) +{ + unsigned int i; + for (i = 0; i < ARRAY_SIZE (nios2_fpu_insn); i++) + ptr->saved_fpu_custom_code[i] = N2FPU_N (i); + memcpy (ptr->saved_custom_code_status, custom_code_status, + sizeof (custom_code_status)); + memcpy (ptr->saved_custom_code_index, custom_code_index, + sizeof (custom_code_index)); +} + +static void +nios2_option_restore (struct gcc_options *opts ATTRIBUTE_UNUSED, + struct cl_target_option *ptr) +{ + unsigned int i; + for (i = 0; i < ARRAY_SIZE (nios2_fpu_insn); i++) + N2FPU_N (i) = ptr->saved_fpu_custom_code[i]; + memcpy (custom_code_status, ptr->saved_custom_code_status, + sizeof (custom_code_status)); + memcpy (custom_code_index, ptr->saved_custom_code_index, + sizeof (custom_code_index)); +} + +/* Inner function to process the attribute((target(...))), take an argument and + set the current options from the argument. If we have a list, recursively + go over the list. */ + +static bool +nios2_valid_target_attribute_rec (tree args) +{ + if (TREE_CODE (args) == TREE_LIST) + { + bool ret = true; + for (; args; args = TREE_CHAIN (args)) + if (TREE_VALUE (args) + && !nios2_valid_target_attribute_rec (TREE_VALUE (args))) + ret = false; + return ret; + } + else if (TREE_CODE (args) == STRING_CST) + { + char *argstr = ASTRDUP (TREE_STRING_POINTER (args)); + while (argstr && *argstr != '\0') + { + bool no_opt = false, end_p = false; + char *eq = NULL, *p; + while (ISSPACE (*argstr)) + argstr++; + p = argstr; + while (*p != '\0' && *p != ',') + { + if (!eq && *p == '=') + eq = p; + ++p; + } + if (*p == '\0') + end_p = true; + else + *p = '\0'; + if (eq) *eq = '\0'; + + if (!strncmp (argstr, "no-", 3)) + { + no_opt = true; + argstr += 3; + } + if (!strncmp (argstr, "custom-fpu-cfg", 14)) + { + char *end_eq = p; + if (no_opt) + { + error ("custom-fpu-cfg option does not support %"); + return false; + } + if (!eq) + { + error ("custom-fpu-cfg option requires configuration" + " argument"); + return false; + } + /* Increment and skip whitespace. */ + while (ISSPACE (*(++eq))) ; + /* Decrement and skip to before any trailing whitespace. */ + while (ISSPACE (*(--end_eq))) ; + + nios2_handle_custom_fpu_cfg (eq, end_eq + 1, true); + } + else if (!strncmp (argstr, "custom-", 7)) + { + int code = -1; + unsigned int i; + for (i = 0; i < ARRAY_SIZE (nios2_fpu_insn); i++) + if (!strncmp (argstr + 7, N2FPU_NAME (i), + strlen (N2FPU_NAME (i)))) + { + /* Found insn. */ + code = i; + break; + } + if (code >= 0) + { + if (no_opt) + { + if (eq) + { + error ("% does not accept arguments", + N2FPU_NAME (code)); + return false; + } + /* Disable option by setting to -1. */ + nios2_deregister_custom_code (N2FPU_N (code)); + N2FPU_N (code) = -1; + } + else + { + char *t; + if (eq) + while (ISSPACE (*(++eq))) ; + if (!eq || eq == p) + { + error ("% requires argument", + N2FPU_NAME (code)); + return false; + } + for (t = eq; t != p; ++t) + { + if (ISSPACE (*t)) + continue; + if (!ISDIGIT (*t)) + { + error ("`custom-%s=' argument requires " + "numeric digits", N2FPU_NAME (code)); + return false; + } + } + /* Set option to argument. */ + N2FPU_N (code) = atoi (eq); + nios2_handle_custom_fpu_insn_option (code); + } + } + else + { + error ("% is not recognised as FPU instruction", + argstr + 7); + return false; + } + } + else + { + error ("%<%s%> is unknown", argstr); + return false; + } + + if (end_p) + break; + else + argstr = p + 1; + } + return true; + } + else + gcc_unreachable (); +} + +/* Return a TARGET_OPTION_NODE tree of the target options listed or NULL. */ + +static tree +nios2_valid_target_attribute_tree (tree args) +{ + if (!nios2_valid_target_attribute_rec (args)) + return NULL_TREE; + nios2_custom_check_insns (); + return build_target_option_node (&global_options); +} + +/* Hook to validate attribute((target("string"))). */ + +static bool +nios2_valid_target_attribute_p (tree fndecl, tree ARG_UNUSED (name), + tree args, int ARG_UNUSED (flags)) +{ + struct cl_target_option cur_target; + bool ret = true; + tree old_optimize = build_optimization_node (&global_options); + tree new_target, new_optimize; + tree func_optimize = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl); + + /* If the function changed the optimization levels as well as setting target + options, start with the optimizations specified. */ + if (func_optimize && func_optimize != old_optimize) + cl_optimization_restore (&global_options, + TREE_OPTIMIZATION (func_optimize)); + + /* The target attributes may also change some optimization flags, so update + the optimization options if necessary. */ + cl_target_option_save (&cur_target, &global_options); + new_target = nios2_valid_target_attribute_tree (args); + new_optimize = build_optimization_node (&global_options); + + if (!new_target) + ret = false; + + else if (fndecl) + { + DECL_FUNCTION_SPECIFIC_TARGET (fndecl) = new_target; + + if (old_optimize != new_optimize) + DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl) = new_optimize; + } + + cl_target_option_restore (&global_options, &cur_target); + + if (old_optimize != new_optimize) + cl_optimization_restore (&global_options, + TREE_OPTIMIZATION (old_optimize)); + return ret; +} + +/* Remember the last target of nios2_set_current_function. */ +static GTY(()) tree nios2_previous_fndecl; + +/* Establish appropriate back-end context for processing the function + FNDECL. The argument might be NULL to indicate processing at top + level, outside of any function scope. */ +static void +nios2_set_current_function (tree fndecl) +{ + tree old_tree = (nios2_previous_fndecl + ? DECL_FUNCTION_SPECIFIC_TARGET (nios2_previous_fndecl) + : NULL_TREE); + + tree new_tree = (fndecl + ? DECL_FUNCTION_SPECIFIC_TARGET (fndecl) + : NULL_TREE); + + if (fndecl && fndecl != nios2_previous_fndecl) + { + nios2_previous_fndecl = fndecl; + if (old_tree == new_tree) + ; + + else if (new_tree) + { + cl_target_option_restore (&global_options, + TREE_TARGET_OPTION (new_tree)); + target_reinit (); + } + + else if (old_tree) + { + struct cl_target_option *def + = TREE_TARGET_OPTION (target_option_current_node); + + cl_target_option_restore (&global_options, def); + target_reinit (); + } + } +} + +/* Hook to validate the current #pragma GCC target and set the FPU custom + code option state. If ARGS is NULL, then POP_TARGET is used to reset + the options. */ +static bool +nios2_pragma_target_parse (tree args, tree pop_target) +{ + tree cur_tree; + if (! args) + { + cur_tree = ((pop_target) + ? pop_target + : target_option_default_node); + cl_target_option_restore (&global_options, + TREE_TARGET_OPTION (cur_tree)); + } + else + { + cur_tree = nios2_valid_target_attribute_tree (args); + if (!cur_tree) + return false; + } + + target_option_current_node = cur_tree; + return true; +} + +/* Implement TARGET_MERGE_DECL_ATTRIBUTES. + We are just using this hook to add some additional error checking to + the default behavior. GCC does not provide a target hook for merging + the target options, and only correctly handles merging empty vs non-empty + option data; see merge_decls() in c-decl.c. + So here we require either that at least one of the decls has empty + target options, or that the target options/data be identical. */ +static tree +nios2_merge_decl_attributes (tree olddecl, tree newdecl) +{ + tree oldopts = lookup_attribute ("target", DECL_ATTRIBUTES (olddecl)); + tree newopts = lookup_attribute ("target", DECL_ATTRIBUTES (newdecl)); + if (newopts && oldopts && newopts != oldopts) + { + tree oldtree = DECL_FUNCTION_SPECIFIC_TARGET (olddecl); + tree newtree = DECL_FUNCTION_SPECIFIC_TARGET (newdecl); + if (oldtree && newtree && oldtree != newtree) + { + struct cl_target_option *olddata = TREE_TARGET_OPTION (oldtree); + struct cl_target_option *newdata = TREE_TARGET_OPTION (newtree); + if (olddata != newdata + && memcmp (olddata, newdata, sizeof (struct cl_target_option))) + error ("%qE redeclared with conflicting %qs attributes", + DECL_NAME (newdecl), "target"); + } + } + return merge_attributes (DECL_ATTRIBUTES (olddecl), + DECL_ATTRIBUTES (newdecl)); +} + + +/* Initialize the GCC target structure. */ +#undef TARGET_ASM_FUNCTION_PROLOGUE +#define TARGET_ASM_FUNCTION_PROLOGUE nios2_asm_function_prologue + +#undef TARGET_IN_SMALL_DATA_P +#define TARGET_IN_SMALL_DATA_P nios2_in_small_data_p + +#undef TARGET_SECTION_TYPE_FLAGS +#define TARGET_SECTION_TYPE_FLAGS nios2_section_type_flags + +#undef TARGET_INIT_BUILTINS +#define TARGET_INIT_BUILTINS nios2_init_builtins +#undef TARGET_EXPAND_BUILTIN +#define TARGET_EXPAND_BUILTIN nios2_expand_builtin +#undef TARGET_BUILTIN_DECL +#define TARGET_BUILTIN_DECL nios2_builtin_decl + +#undef TARGET_INIT_LIBFUNCS +#define TARGET_INIT_LIBFUNCS nios2_init_libfuncs + +#undef TARGET_FUNCTION_OK_FOR_SIBCALL +#define TARGET_FUNCTION_OK_FOR_SIBCALL hook_bool_tree_tree_true + +#undef TARGET_CAN_ELIMINATE +#define TARGET_CAN_ELIMINATE nios2_can_eliminate + +#undef TARGET_FUNCTION_ARG +#define TARGET_FUNCTION_ARG nios2_function_arg + +#undef TARGET_FUNCTION_ARG_ADVANCE +#define TARGET_FUNCTION_ARG_ADVANCE nios2_function_arg_advance + +#undef TARGET_ARG_PARTIAL_BYTES +#define TARGET_ARG_PARTIAL_BYTES nios2_arg_partial_bytes + +#undef TARGET_TRAMPOLINE_INIT +#define TARGET_TRAMPOLINE_INIT nios2_trampoline_init + +#undef TARGET_FUNCTION_VALUE +#define TARGET_FUNCTION_VALUE nios2_function_value + +#undef TARGET_LIBCALL_VALUE +#define TARGET_LIBCALL_VALUE nios2_libcall_value + +#undef TARGET_FUNCTION_VALUE_REGNO_P +#define TARGET_FUNCTION_VALUE_REGNO_P nios2_function_value_regno_p + +#undef TARGET_RETURN_IN_MEMORY +#define TARGET_RETURN_IN_MEMORY nios2_return_in_memory + +#undef TARGET_PROMOTE_PROTOTYPES +#define TARGET_PROMOTE_PROTOTYPES hook_bool_const_tree_true + +#undef TARGET_SETUP_INCOMING_VARARGS +#define TARGET_SETUP_INCOMING_VARARGS nios2_setup_incoming_varargs + +#undef TARGET_MUST_PASS_IN_STACK +#define TARGET_MUST_PASS_IN_STACK must_pass_in_stack_var_size + +#undef TARGET_LEGITIMATE_CONSTANT_P +#define TARGET_LEGITIMATE_CONSTANT_P nios2_legitimate_constant_p + +#undef TARGET_LEGITIMIZE_ADDRESS +#define TARGET_LEGITIMIZE_ADDRESS nios2_legitimize_address + +#undef TARGET_LEGITIMATE_ADDRESS_P +#define TARGET_LEGITIMATE_ADDRESS_P nios2_legitimate_address_p + +#undef TARGET_PREFERRED_RELOAD_CLASS +#define TARGET_PREFERRED_RELOAD_CLASS nios2_preferred_reload_class + +#undef TARGET_RTX_COSTS +#define TARGET_RTX_COSTS nios2_rtx_costs + +#undef TARGET_HAVE_TLS +#define TARGET_HAVE_TLS TARGET_LINUX_ABI + +#undef TARGET_CANNOT_FORCE_CONST_MEM +#define TARGET_CANNOT_FORCE_CONST_MEM nios2_cannot_force_const_mem + +#undef TARGET_ASM_OUTPUT_DWARF_DTPREL +#define TARGET_ASM_OUTPUT_DWARF_DTPREL nios2_output_dwarf_dtprel + +#undef TARGET_PRINT_OPERAND +#define TARGET_PRINT_OPERAND nios2_print_operand + +#undef TARGET_PRINT_OPERAND_ADDRESS +#define TARGET_PRINT_OPERAND_ADDRESS nios2_print_operand_address + +#undef TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA +#define TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA nios2_output_addr_const_extra + +#undef TARGET_OPTION_OVERRIDE +#define TARGET_OPTION_OVERRIDE nios2_option_override + +#undef TARGET_OPTION_SAVE +#define TARGET_OPTION_SAVE nios2_option_save + +#undef TARGET_OPTION_RESTORE +#define TARGET_OPTION_RESTORE nios2_option_restore + +#undef TARGET_SET_CURRENT_FUNCTION +#define TARGET_SET_CURRENT_FUNCTION nios2_set_current_function + +#undef TARGET_OPTION_VALID_ATTRIBUTE_P +#define TARGET_OPTION_VALID_ATTRIBUTE_P nios2_valid_target_attribute_p + +#undef TARGET_OPTION_PRAGMA_PARSE +#define TARGET_OPTION_PRAGMA_PARSE nios2_pragma_target_parse + +#undef TARGET_MERGE_DECL_ATTRIBUTES +#define TARGET_MERGE_DECL_ATTRIBUTES nios2_merge_decl_attributes + +struct gcc_target targetm = TARGET_INITIALIZER; + +#include "gt-nios2.h" diff --git a/gcc/config/nios2/nios2.h b/gcc/config/nios2/nios2.h new file mode 100644 index 00000000000..8e6941b4011 --- /dev/null +++ b/gcc/config/nios2/nios2.h @@ -0,0 +1,500 @@ +/* Definitions of target machine for Altera Nios II. + Copyright (C) 2012-2013 Free Software Foundation, Inc. + Contributed by Jonah Graham (jgraham@altera.com), + Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com). + Contributed by Mentor Graphics, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ + +#ifndef GCC_NIOS2_H +#define GCC_NIOS2_H + +/* FPU insn codes declared here. */ +#include "config/nios2/nios2-opts.h" + +/* Define built-in preprocessor macros. */ +#define TARGET_CPU_CPP_BUILTINS() \ + do \ + { \ + builtin_define_std ("NIOS2"); \ + builtin_define_std ("nios2"); \ + if (TARGET_BIG_ENDIAN) \ + builtin_define_std ("nios2_big_endian"); \ + else \ + builtin_define_std ("nios2_little_endian"); \ + } \ + while (0) + +/* We're little endian, unless otherwise specified by defining + BIG_ENDIAN_FLAG. */ +#ifndef TARGET_ENDIAN_DEFAULT +# define TARGET_ENDIAN_DEFAULT 0 +#endif + +/* Default target_flags if no switches specified. */ +#ifndef TARGET_DEFAULT +# define TARGET_DEFAULT (MASK_HAS_MUL | TARGET_ENDIAN_DEFAULT) +#endif + +#define CC1_SPEC "%{G*}" + +#if TARGET_ENDIAN_DEFAULT == 0 +# define ASM_SPEC "%{!meb:-EL} %{meb:-EB}" +# define LINK_SPEC_ENDIAN "%{!meb:-EL} %{meb:-EB}" +# define MULTILIB_DEFAULTS { "EL" } +#else +# define ASM_SPEC "%{!mel:-EB} %{mel:-EL}" +# define LINK_SPEC_ENDIAN "%{!mel:-EB} %{mel:-EL}" +# define MULTILIB_DEFAULTS { "EB" } +#endif + +#define LINK_SPEC LINK_SPEC_ENDIAN \ + " %{shared:-shared} \ + %{static:-Bstatic}" + + +/* Storage layout. */ + +#define DEFAULT_SIGNED_CHAR 1 +#define BITS_BIG_ENDIAN 0 +#define BYTES_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0) +#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0) +#define BITS_PER_UNIT 8 +#define BITS_PER_WORD 32 +#define UNITS_PER_WORD 4 +#define POINTER_SIZE 32 +#define BIGGEST_ALIGNMENT 32 +#define STRICT_ALIGNMENT 1 +#define FUNCTION_BOUNDARY 32 +#define PARM_BOUNDARY 32 +#define STACK_BOUNDARY 32 +#define PREFERRED_STACK_BOUNDARY 32 +#define MAX_FIXED_MODE_SIZE 64 + +#define CONSTANT_ALIGNMENT(EXP, ALIGN) \ + ((TREE_CODE (EXP) == STRING_CST) \ + && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN)) + +/* Layout of source language data types. */ + +#define INT_TYPE_SIZE 32 +#define SHORT_TYPE_SIZE 16 +#define LONG_TYPE_SIZE 32 +#define LONG_LONG_TYPE_SIZE 64 +#define FLOAT_TYPE_SIZE 32 +#define DOUBLE_TYPE_SIZE 64 +#define LONG_DOUBLE_TYPE_SIZE DOUBLE_TYPE_SIZE + +#undef SIZE_TYPE +#define SIZE_TYPE "unsigned int" + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE "int" + + +/* Basic characteristics of Nios II registers: + + Regno Name + 0 r0 zero always zero + 1 r1 at Assembler Temporary + 2-3 r2-r3 Return Location + 4-7 r4-r7 Register Arguments + 8-15 r8-r15 Caller Saved Registers + 16-22 r16-r22 Callee Saved Registers + 22 r22 Global Offset Table pointer (Linux ABI only) + 23 r23 Thread pointer (Linux ABI only) + 24 r24 et Exception Temporary + 25 r25 bt Breakpoint Temporary + 26 r26 gp Global Pointer + 27 r27 sp Stack Pointer + 28 r28 fp Frame Pointer + 29 r29 ea Exception Return Address + 30 r30 ba Breakpoint Return Address + 31 r31 ra Return Address + + 32 ctl0 status + 33 ctl1 estatus STATUS saved by exception + 34 ctl2 bstatus STATUS saved by break + 35 ctl3 ipri Interrupt Priority Mask + 36 ctl4 ecause Exception Cause + + 37 pc Not an actual register + + 38 fake_fp Fake Frame Pointer (always eliminated) + 39 fake_ap Fake Argument Pointer (always eliminated) + 40 First Pseudo Register + + In addition, r12 is used as the static chain register and r13, r14, and r15 + are clobbered by PLT code sequences. + + The definitions for all the hard register numbers are located in nios2.md. +*/ + +#define FIXED_REGISTERS \ + { \ +/* +0 1 2 3 4 5 6 7 8 9 */ \ +/* 0 */ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \ +/* 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +/* 20 */ 0, 0, TARGET_LINUX_ABI, TARGET_LINUX_ABI, 1, 1, 1, 1, 0, 1, \ +/* 30 */ 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, \ + } + +/* Call used == caller saved + fixed regs + args + ret vals. */ +#define CALL_USED_REGISTERS \ + { \ +/* +0 1 2 3 4 5 6 7 8 9 */ \ +/* 0 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ +/* 10 */ 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, \ +/* 20 */ 0, 0, TARGET_LINUX_ABI, TARGET_LINUX_ABI, 1, 1, 1, 1, 0, 1, \ +/* 30 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ + } + +#define MODES_TIEABLE_P(MODE1, MODE2) 1 +#define HARD_REGNO_MODE_OK(REGNO, MODE) 1 +#define HARD_REGNO_NREGS(REGNO, MODE) \ + ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) + +/* Register Classes. */ + +enum reg_class +{ + NO_REGS, + SIB_REGS, + GP_REGS, + ALL_REGS, + LIM_REG_CLASSES +}; + +#define N_REG_CLASSES (int) LIM_REG_CLASSES + +#define REG_CLASS_NAMES \ + { "NO_REGS", \ + "SIB_REGS", \ + "GP_REGS", \ + "ALL_REGS" } + +#define GENERAL_REGS ALL_REGS + +#define REG_CLASS_CONTENTS \ + { \ + /* NO_REGS */ { 0, 0}, \ + /* SIB_REGS */ { 0xfe0c, 0}, \ + /* GP_REGS */ {~0, 0}, \ + /* ALL_REGS */ {~0,~0} \ + } + + +#define GP_REG_P(REGNO) ((unsigned)(REGNO) <= LAST_GP_REG) +#define REGNO_REG_CLASS(REGNO) (GP_REG_P (REGNO) ? GP_REGS : ALL_REGS) +#define CLASS_MAX_NREGS(CLASS, MODE) \ + ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) + +/* Tests for various kinds of constants used in the Nios II port. */ + +#define SMALL_INT(X) ((unsigned HOST_WIDE_INT)(X) + 0x8000 < 0x10000) +#define SMALL_INT_UNSIGNED(X) ((X) >= 0 && (X) < 0x10000) +#define UPPER16_INT(X) (((X) & 0xffff) == 0) +#define SHIFT_INT(X) ((X) >= 0 && (X) <= 31) +#define RDWRCTL_INT(X) ((X) >= 0 && (X) <= 31) +#define CUSTOM_INSN_OPCODE(X) ((X) >= 0 && (X) <= 255) + +/* Say that the epilogue uses the return address register. Note that + in the case of sibcalls, the values "used by the epilogue" are + considered live at the start of the called function. */ +#define EPILOGUE_USES(REGNO) (epilogue_completed && (REGNO) == RA_REGNO) + +/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function, + the stack pointer does not matter. The value is tested only in + functions that have frame pointers. + No definition is equivalent to always zero. */ + +#define EXIT_IGNORE_STACK 1 + +/* Trampolines use a 5-instruction sequence. */ +#define TRAMPOLINE_SIZE 20 + +/* Stack layout. */ +#define STACK_GROWS_DOWNWARD +#define STARTING_FRAME_OFFSET 0 +#define FIRST_PARM_OFFSET(FUNDECL) 0 + +/* Before the prologue, RA lives in r31. */ +#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (VOIDmode, RA_REGNO) +#define RETURN_ADDR_RTX(C,F) nios2_get_return_address (C) + +#define DWARF_FRAME_RETURN_COLUMN RA_REGNO + +/* The CFA includes the pretend args. */ +#define ARG_POINTER_CFA_OFFSET(FNDECL) \ + (gcc_assert ((FNDECL) == current_function_decl), \ + FIRST_PARM_OFFSET (FNDECL) + crtl->args.pretend_args_size) + +/* Frame/arg pointer elimination settings. */ +#define ELIMINABLE_REGS \ +{{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ + { ARG_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}, \ + { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ + { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}} + +#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \ + (OFFSET) = nios2_initial_elimination_offset ((FROM), (TO)) + +/* Calling convention definitions. */ +typedef struct nios2_args +{ + int regs_used; +} CUMULATIVE_ARGS; + +#define NUM_ARG_REGS (LAST_ARG_REGNO - FIRST_ARG_REGNO + 1) + +#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \ + do { (CUM).regs_used = 0; } while (0) + +#define FUNCTION_ARG_PADDING(MODE, TYPE) \ + (nios2_function_arg_padding ((MODE), (TYPE))) + +#define PAD_VARARGS_DOWN \ + (FUNCTION_ARG_PADDING (TYPE_MODE (type), type) == downward) + +#define BLOCK_REG_PADDING(MODE, TYPE, FIRST) \ + (nios2_block_reg_padding ((MODE), (TYPE), (FIRST))) + +#define FUNCTION_ARG_REGNO_P(REGNO) \ + ((REGNO) >= FIRST_ARG_REGNO && (REGNO) <= LAST_ARG_REGNO) + +/* Passing function arguments on stack. */ +#define PUSH_ARGS 0 +#define ACCUMULATE_OUTGOING_ARGS 1 + +/* We define TARGET_RETURN_IN_MEMORY, so set to zero. */ +#define DEFAULT_PCC_STRUCT_RETURN 0 + +/* Profiling. */ +#define PROFILE_BEFORE_PROLOGUE +#define NO_PROFILE_COUNTERS 1 +#define FUNCTION_PROFILER(FILE, LABELNO) \ + nios2_function_profiler ((FILE), (LABELNO)) + +/* Addressing modes. */ + +#define CONSTANT_ADDRESS_P(X) \ + (CONSTANT_P (X) && memory_address_p (SImode, X)) + +#define MAX_REGS_PER_ADDRESS 1 +#define BASE_REG_CLASS ALL_REGS +#define INDEX_REG_CLASS NO_REGS + +#define REGNO_OK_FOR_BASE_P(REGNO) nios2_regno_ok_for_base_p ((REGNO), true) +#define REGNO_OK_FOR_INDEX_P(REGNO) 0 + +/* Describing Relative Costs of Operations. */ +#define MOVE_MAX 4 +#define SLOW_BYTE_ACCESS 1 + +/* It is as good to call a constant function address as to call an address + kept in a register. */ +#define NO_FUNCTION_CSE + +/* Position independent code. */ + +#define PIC_OFFSET_TABLE_REGNUM 22 +#define LEGITIMATE_PIC_OPERAND_P(X) nios2_legitimate_pic_operand_p (X) + +/* Define output assembler language. */ + +#define ASM_APP_ON "#APP\n" +#define ASM_APP_OFF "#NO_APP\n" + +#define ASM_COMMENT_START "# " + +#define GLOBAL_ASM_OP "\t.global\t" + +#define REGISTER_NAMES \ + { \ + "zero", \ + "at", \ + "r2", \ + "r3", \ + "r4", \ + "r5", \ + "r6", \ + "r7", \ + "r8", \ + "r9", \ + "r10", \ + "r11", \ + "r12", \ + "r13", \ + "r14", \ + "r15", \ + "r16", \ + "r17", \ + "r18", \ + "r19", \ + "r20", \ + "r21", \ + "r22", \ + "r23", \ + "et", \ + "bt", \ + "gp", \ + "sp", \ + "fp", \ + "ta", \ + "ba", \ + "ra", \ + "status", \ + "estatus", \ + "bstatus", \ + "ipri", \ + "ecause", \ + "pc", \ + "fake_fp", \ + "fake_ap", \ +} + +#define ADDITIONAL_REGISTER_NAMES \ +{ \ + {"r0", 0}, \ + {"r1", 1}, \ + {"r24", 24}, \ + {"r25", 25}, \ + {"r26", 26}, \ + {"r27", 27}, \ + {"r28", 28}, \ + {"r29", 29}, \ + {"r30", 30}, \ + {"r31", 31} \ +} + +#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \ + do \ + { \ + fputs (integer_asm_op (POINTER_SIZE / BITS_PER_UNIT, TRUE), FILE); \ + fprintf (FILE, ".L%u\n", (unsigned) (VALUE)); \ + } \ + while (0) + +#define ASM_OUTPUT_ADDR_DIFF_ELT(STREAM, BODY, VALUE, REL)\ + do \ + { \ + fputs (integer_asm_op (POINTER_SIZE / BITS_PER_UNIT, TRUE), STREAM); \ + fprintf (STREAM, ".L%u-.L%u\n", (unsigned) (VALUE), (unsigned) (REL)); \ + } \ + while (0) + +/* Section directives. */ + +/* Output before read-only data. */ +#define TEXT_SECTION_ASM_OP "\t.section\t.text" + +/* Output before writable data. */ +#define DATA_SECTION_ASM_OP "\t.section\t.data" + +/* Output before uninitialized data. */ +#define BSS_SECTION_ASM_OP "\t.section\t.bss" + +/* Output before 'small' uninitialized data. */ +#define SBSS_SECTION_ASM_OP "\t.section\t.sbss" + +#ifndef IN_LIBGCC2 +/* Default the definition of "small data" to 8 bytes. */ +extern unsigned HOST_WIDE_INT nios2_section_threshold; +#endif + +#define NIOS2_DEFAULT_GVALUE 8 + +/* This says how to output assembler code to declare an + uninitialized external linkage data object. Under SVR4, + the linker seems to want the alignment of data objects + to depend on their types. We do exactly that here. */ +#undef COMMON_ASM_OP +#define COMMON_ASM_OP "\t.comm\t" + +#define ASM_OUTPUT_ALIGN(FILE, LOG) \ + do { \ + fprintf ((FILE), "%s%d\n", ALIGN_ASM_OP, (LOG)); \ + } while (0) + +#undef ASM_OUTPUT_ALIGNED_COMMON +#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \ +do \ + { \ + fprintf ((FILE), "%s", COMMON_ASM_OP); \ + assemble_name ((FILE), (NAME)); \ + fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", (SIZE), \ + (ALIGN) / BITS_PER_UNIT); \ + } \ +while (0) + + +/* This says how to output assembler code to declare an + uninitialized internal linkage data object. Under SVR4, + the linker seems to want the alignment of data objects + to depend on their types. We do exactly that here. */ + +#undef ASM_OUTPUT_ALIGNED_LOCAL +#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \ +do { \ + if ((SIZE) <= nios2_section_threshold) \ + switch_to_section (sbss_section); \ + else \ + switch_to_section (bss_section); \ + ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \ + if (!flag_inhibit_size_directive) \ + ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE); \ + ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT)); \ + ASM_OUTPUT_LABEL(FILE, NAME); \ + ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1); \ +} while (0) + +/* Put the jump tables in .text because when using position-independent code, + Nios II elf has no relocation that can represent arbitrary differences + between symbols in different sections. */ +#define JUMP_TABLES_IN_TEXT_SECTION 1 + +/* Exception handling. */ + +/* Describe __builtin_eh_return. */ +#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, LAST_RETVAL_REGNO) +#define EH_RETURN_DATA_REGNO(N) ((N) <= (LAST_ARG_REGNO - FIRST_ARG_REGNO) \ + ? (N) + FIRST_ARG_REGNO : INVALID_REGNUM) + +/* Nios II has no appropriate relocations for a 32-bit PC-relative or + section-relative pointer encoding. This therefore always chooses an + absolute representation for pointers. An unfortunate consequence of + this is that ld complains about the absolute fde encoding when linking + with -shared or -fpie, but the warning is harmless and there seems to + be no good way to suppress it. */ +#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \ + (flag_pic ? DW_EH_PE_aligned : DW_EH_PE_sdata4) + +/* Misc. parameters. */ + +#define STORE_FLAG_VALUE 1 +#define Pmode SImode +#define FUNCTION_MODE QImode + +#define CASE_VECTOR_MODE Pmode + +#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1 + +#define LOAD_EXTEND_OP(MODE) (ZERO_EXTEND) + +#define WORD_REGISTER_OPERATIONS + +#endif /* GCC_NIOS2_H */ diff --git a/gcc/config/nios2/nios2.md b/gcc/config/nios2/nios2.md new file mode 100644 index 00000000000..cf1559934b3 --- /dev/null +++ b/gcc/config/nios2/nios2.md @@ -0,0 +1,1029 @@ +;; Machine Description for Altera Nios II. +;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Contributed by Jonah Graham (jgraham@altera.com) and +;; Will Reece (wreece@altera.com). +;; Contributed by Mentor Graphics, Inc. +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. +;; +;; GCC is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; . + +;; Register numbers +(define_constants + [ + (FIRST_RETVAL_REGNO 2) ; Return value registers + (LAST_RETVAL_REGNO 3) ; + (FIRST_ARG_REGNO 4) ; Argument registers + (LAST_ARG_REGNO 7) ; + + (TP_REGNO 23) ; Thread pointer register + (GP_REGNO 26) ; Global pointer register + (FP_REGNO 28) ; Frame pointer register + (EA_REGNO 29) ; Exception return address register + (RA_REGNO 31) ; Return address register + (LAST_GP_REG 31) ; Last general purpose register + + ;; Target register definitions + (STATIC_CHAIN_REGNUM 12) + (STACK_POINTER_REGNUM 27) + (HARD_FRAME_POINTER_REGNUM 28) + (PC_REGNUM 37) + (FRAME_POINTER_REGNUM 38) + (ARG_POINTER_REGNUM 39) + (FIRST_PSEUDO_REGISTER 40) + ] +) + +;; Enumeration of UNSPECs + +(define_c_enum "unspecv" [ + UNSPECV_BLOCKAGE + UNSPECV_WRCTL + UNSPECV_RDCTL + UNSPECV_FWRX + UNSPECV_FWRY + UNSPECV_FRDXLO + UNSPECV_FRDXHI + UNSPECV_FRDY + UNSPECV_CUSTOM_NXX + UNSPECV_CUSTOM_XNXX + UNSPECV_LDXIO + UNSPECV_STXIO +]) + +(define_c_enum "unspec" [ + UNSPEC_FCOS + UNSPEC_FSIN + UNSPEC_FTAN + UNSPEC_FATAN + UNSPEC_FEXP + UNSPEC_FLOG + UNSPEC_LOAD_GOT_REGISTER + UNSPEC_PIC_SYM + UNSPEC_PIC_CALL_SYM + UNSPEC_TLS + UNSPEC_TLS_LDM + UNSPEC_LOAD_TLS_IE + UNSPEC_ADD_TLS_LE + UNSPEC_ADD_TLS_GD + UNSPEC_ADD_TLS_LDM + UNSPEC_ADD_TLS_LDO + UNSPEC_EH_RETURN + UNSPEC_SYNC +]) + + +;; Instruction scheduler + +; No schedule info is currently available, using an assumption that no +; instruction can use the results of the previous instruction without +; incuring a stall. + +; length of an instruction (in bytes) +(define_attr "length" "" (const_int 4)) +(define_attr "type" + "unknown,complex,control,alu,cond_alu,st,ld,shift,mul,div,custom" + (const_string "complex")) + +(define_asm_attributes + [(set_attr "length" "4") + (set_attr "type" "complex")]) + +(define_automaton "nios2") +(automata_option "v") +;(automata_option "no-minimization") +(automata_option "ndfa") + +; The nios2 pipeline is fairly straightforward for the fast model. +; Every alu operation is pipelined so that an instruction can +; be issued every cycle. However, there are still potential +; stalls which this description tries to deal with. + +(define_cpu_unit "cpu" "nios2") + +(define_insn_reservation "complex" 1 + (eq_attr "type" "complex") + "cpu") + +(define_insn_reservation "control" 1 + (eq_attr "type" "control") + "cpu") + +(define_insn_reservation "alu" 1 + (eq_attr "type" "alu") + "cpu") + +(define_insn_reservation "cond_alu" 1 + (eq_attr "type" "cond_alu") + "cpu") + +(define_insn_reservation "st" 1 + (eq_attr "type" "st") + "cpu") + +(define_insn_reservation "custom" 1 + (eq_attr "type" "custom") + "cpu") + +; shifts, muls and lds have three cycle latency +(define_insn_reservation "ld" 3 + (eq_attr "type" "ld") + "cpu") + +(define_insn_reservation "shift" 3 + (eq_attr "type" "shift") + "cpu") + +(define_insn_reservation "mul" 3 + (eq_attr "type" "mul") + "cpu") + +(define_insn_reservation "div" 1 + (eq_attr "type" "div") + "cpu") + +(include "predicates.md") +(include "constraints.md") + + +;; Move instructions + +(define_mode_iterator M [QI HI SI]) + +(define_expand "mov" + [(set (match_operand:M 0 "nonimmediate_operand" "") + (match_operand:M 1 "general_operand" ""))] + "" +{ + if (nios2_emit_move_sequence (operands, mode)) + DONE; +}) + +(define_insn "movqi_internal" + [(set (match_operand:QI 0 "nonimmediate_operand" "=m, r,r, r") + (match_operand:QI 1 "general_operand" "rM,m,rM,I"))] + "(register_operand (operands[0], QImode) + || reg_or_0_operand (operands[1], QImode))" + "@ + stb%o0\\t%z1, %0 + ldbu%o1\\t%0, %1 + mov\\t%0, %z1 + movi\\t%0, %1" + [(set_attr "type" "st,ld,alu,alu")]) + +(define_insn "movhi_internal" + [(set (match_operand:HI 0 "nonimmediate_operand" "=m, r,r, r") + (match_operand:HI 1 "general_operand" "rM,m,rM,I"))] + "(register_operand (operands[0], HImode) + || reg_or_0_operand (operands[1], HImode))" + "@ + sth%o0\\t%z1, %0 + ldhu%o1\\t%0, %1 + mov\\t%0, %z1 + movi\\t%0, %1" + [(set_attr "type" "st,ld,alu,alu")]) + +(define_insn "movsi_internal" + [(set (match_operand:SI 0 "nonimmediate_operand" "=m, r,r, r,r,r,r,r") + (match_operand:SI 1 "general_operand" "rM,m,rM,I,J,K,S,i"))] + "(register_operand (operands[0], SImode) + || reg_or_0_operand (operands[1], SImode))" + "@ + stw%o0\\t%z1, %0 + ldw%o1\\t%0, %1 + mov\\t%0, %z1 + movi\\t%0, %1 + movui\\t%0, %1 + movhi\\t%0, %H1 + addi\\t%0, gp, %%gprel(%1) + movhi\\t%0, %H1\;addi\\t%0, %0, %L1" + [(set_attr "type" "st,ld,alu,alu,alu,alu,alu,alu") + (set_attr "length" "4,4,4,4,4,4,4,8")]) + +(define_mode_iterator BH [QI HI]) +(define_mode_iterator BHW [QI HI SI]) +(define_mode_attr bh [(QI "b") (HI "h")]) +(define_mode_attr bhw [(QI "b") (HI "h") (SI "w")]) +(define_mode_attr bhw_uns [(QI "bu") (HI "hu") (SI "w")]) + +(define_insn "ldio" + [(set (match_operand:BHW 0 "register_operand" "=r") + (unspec_volatile:BHW + [(match_operand:BHW 1 "memory_operand" "m")] UNSPECV_LDXIO))] + "" + "ldio\\t%0, %1" + [(set_attr "type" "ld")]) + +(define_expand "ldio" + [(set (match_operand:BH 0 "register_operand" "=r") + (match_operand:BH 1 "memory_operand" "m"))] + "" +{ + rtx tmp = gen_reg_rtx (SImode); + emit_insn (gen_ldio_signed (tmp, operands[1])); + emit_insn (gen_mov (operands[0], gen_lowpart (mode, tmp))); + DONE; +}) + +(define_insn "ldio_signed" + [(set (match_operand:SI 0 "register_operand" "=r") + (sign_extend:SI + (unspec_volatile:BH + [(match_operand:BH 1 "memory_operand" "m")] UNSPECV_LDXIO)))] + "" + "ldio\\t%0, %1" + [(set_attr "type" "ld")]) + +(define_insn "stio" + [(set (match_operand:BHW 0 "memory_operand" "=m") + (unspec_volatile:BHW + [(match_operand:BHW 1 "reg_or_0_operand" "rM")] UNSPECV_STXIO))] + "" + "stio\\t%z1, %0" + [(set_attr "type" "st")]) + + +;; QI to [HI, SI] extension patterns are collected together +(define_mode_iterator QX [HI SI]) + +;; Zero extension patterns +(define_insn "zero_extendhisi2" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))] + "" + "@ + andi\\t%0, %1, 0xffff + ldhu%o1\\t%0, %1" + [(set_attr "type" "alu,ld")]) + +(define_insn "zero_extendqi2" + [(set (match_operand:QX 0 "register_operand" "=r,r") + (zero_extend:QX (match_operand:QI 1 "nonimmediate_operand" "r,m")))] + "" + "@ + andi\\t%0, %1, 0xff + ldbu%o1\\t%0, %1" + [(set_attr "type" "alu,ld")]) + +;; Sign extension patterns + +(define_insn "extendhisi2" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))] + "" + "@ + # + ldh%o1\\t%0, %1" + [(set_attr "type" "alu,ld")]) + +(define_insn "extendqi2" + [(set (match_operand:QX 0 "register_operand" "=r,r") + (sign_extend:QX (match_operand:QI 1 "nonimmediate_operand" "r,m")))] + "" + "@ + # + ldb%o1\\t%0, %1" + [(set_attr "type" "alu,ld")]) + +;; Split patterns for register alternative cases. +(define_split + [(set (match_operand:SI 0 "register_operand" "") + (sign_extend:SI (match_operand:HI 1 "register_operand" "")))] + "reload_completed" + [(set (match_dup 0) + (and:SI (match_dup 1) (const_int 65535))) + (set (match_dup 0) + (xor:SI (match_dup 0) (const_int 32768))) + (set (match_dup 0) + (plus:SI (match_dup 0) (const_int -32768)))] + "operands[1] = gen_lowpart (SImode, operands[1]);") + +(define_split + [(set (match_operand:QX 0 "register_operand" "") + (sign_extend:QX (match_operand:QI 1 "register_operand" "")))] + "reload_completed" + [(set (match_dup 0) + (and:SI (match_dup 1) (const_int 255))) + (set (match_dup 0) + (xor:SI (match_dup 0) (const_int 128))) + (set (match_dup 0) + (plus:SI (match_dup 0) (const_int -128)))] + "operands[0] = gen_lowpart (SImode, operands[0]); + operands[1] = gen_lowpart (SImode, operands[1]);") + + +;; Arithmetic Operations + +(define_insn "addsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (plus:SI (match_operand:SI 1 "register_operand" "%r") + (match_operand:SI 2 "add_regimm_operand" "rIT")))] + "" + "add%i2\\t%0, %1, %z2" + [(set_attr "type" "alu")]) + +(define_insn "subsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (minus:SI (match_operand:SI 1 "reg_or_0_operand" "rM") + (match_operand:SI 2 "register_operand" "r")))] + "" + "sub\\t%0, %z1, %2" + [(set_attr "type" "alu")]) + +(define_insn "mulsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (mult:SI (match_operand:SI 1 "register_operand" "%r") + (match_operand:SI 2 "arith_operand" "rI")))] + "TARGET_HAS_MUL" + "mul%i2\\t%0, %1, %z2" + [(set_attr "type" "mul")]) + +(define_expand "divsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (div:SI (match_operand:SI 1 "register_operand" "r") + (match_operand:SI 2 "register_operand" "r")))] + "" +{ + if (!TARGET_HAS_DIV) + { + if (TARGET_FAST_SW_DIV) + { + nios2_emit_expensive_div (operands, SImode); + DONE; + } + else + FAIL; + } +}) + +(define_insn "divsi3_insn" + [(set (match_operand:SI 0 "register_operand" "=r") + (div:SI (match_operand:SI 1 "register_operand" "r") + (match_operand:SI 2 "register_operand" "r")))] + "TARGET_HAS_DIV" + "div\\t%0, %1, %2" + [(set_attr "type" "div")]) + +(define_insn "udivsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (udiv:SI (match_operand:SI 1 "register_operand" "r") + (match_operand:SI 2 "register_operand" "r")))] + "TARGET_HAS_DIV" + "divu\\t%0, %1, %2" + [(set_attr "type" "div")]) + +(define_code_iterator EXTEND [sign_extend zero_extend]) +(define_code_attr us [(sign_extend "s") (zero_extend "u")]) +(define_code_attr mul [(sign_extend "mul") (zero_extend "umul")]) + +(define_insn "mulsi3_highpart" + [(set (match_operand:SI 0 "register_operand" "=r") + (truncate:SI + (lshiftrt:DI + (mult:DI (EXTEND:DI (match_operand:SI 1 "register_operand" "r")) + (EXTEND:DI (match_operand:SI 2 "register_operand" "r"))) + (const_int 32))))] + "TARGET_HAS_MULX" + "mulx\\t%0, %1, %2" + [(set_attr "type" "mul")]) + +(define_expand "sidi3" + [(set (match_operand:DI 0 "register_operand" "") + (mult:DI (EXTEND:DI (match_operand:SI 1 "register_operand" "")) + (EXTEND:DI (match_operand:SI 2 "register_operand" ""))))] + "TARGET_HAS_MULX" +{ + rtx hi = gen_reg_rtx (SImode); + rtx lo = gen_reg_rtx (SImode); + + emit_insn (gen_mulsi3_highpart (hi, operands[1], operands[2])); + emit_insn (gen_mulsi3 (lo, operands[1], operands[2])); + emit_move_insn (gen_lowpart (SImode, operands[0]), lo); + emit_move_insn (gen_highpart (SImode, operands[0]), hi); + DONE; +}) + + +;; Negate and ones complement + +(define_insn "negsi2" + [(set (match_operand:SI 0 "register_operand" "=r") + (neg:SI (match_operand:SI 1 "register_operand" "r")))] + "" + "sub\\t%0, zero, %1" + [(set_attr "type" "alu")]) + +(define_insn "one_cmplsi2" + [(set (match_operand:SI 0 "register_operand" "=r") + (not:SI (match_operand:SI 1 "register_operand" "r")))] + "" + "nor\\t%0, zero, %1" + [(set_attr "type" "alu")]) + + +;; Integer logical Operations + +(define_code_iterator LOGICAL [and ior xor]) +(define_code_attr logical_asm [(and "and") (ior "or") (xor "xor")]) + +(define_insn "si3" + [(set (match_operand:SI 0 "register_operand" "=r,r,r") + (LOGICAL:SI (match_operand:SI 1 "register_operand" "%r,r,r") + (match_operand:SI 2 "logical_operand" "rM,J,K")))] + "" + "@ + \\t%0, %1, %z2 + %i2\\t%0, %1, %2 + h%i2\\t%0, %1, %U2" + [(set_attr "type" "alu")]) + +(define_insn "*norsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (and:SI (not:SI (match_operand:SI 1 "register_operand" "%r")) + (not:SI (match_operand:SI 2 "register_operand" "r"))))] + "" + "nor\\t%0, %1, %2" + [(set_attr "type" "alu")]) + + +;; Shift instructions + +(define_code_iterator SHIFT [ashift ashiftrt lshiftrt rotate]) +(define_code_attr shift_op [(ashift "ashl") (ashiftrt "ashr") + (lshiftrt "lshr") (rotate "rotl")]) +(define_code_attr shift_asm [(ashift "sll") (ashiftrt "sra") + (lshiftrt "srl") (rotate "rol")]) + +(define_insn "si3" + [(set (match_operand:SI 0 "register_operand" "=r") + (SHIFT:SI (match_operand:SI 1 "register_operand" "r") + (match_operand:SI 2 "shift_operand" "rL")))] + "" + "%i2\\t%0, %1, %z2" + [(set_attr "type" "shift")]) + +(define_insn "rotrsi3" + [(set (match_operand:SI 0 "register_operand" "=r") + (rotatert:SI (match_operand:SI 1 "register_operand" "r") + (match_operand:SI 2 "register_operand" "r")))] + "" + "ror\\t%0, %1, %2" + [(set_attr "type" "shift")]) + + +;; Floating point instructions + +;; Mode iterator for single/double float +(define_mode_iterator F [SF DF]) +(define_mode_attr f [(SF "s") (DF "d")]) + +;; Basic arithmetic instructions +(define_code_iterator FOP3 [plus minus mult div]) +(define_code_attr fop3 [(plus "add") (minus "sub") (mult "mul") (div "div")]) + +(define_insn "3" + [(set (match_operand:F 0 "register_operand" "=r") + (FOP3:F (match_operand:F 1 "register_operand" "r") + (match_operand:F 2 "register_operand" "r")))] + "nios2_fpu_insn_enabled (n2fpu_f)" + { return nios2_fpu_insn_asm (n2fpu_f); } + [(set_attr "type" "custom")]) + +;; Floating point min/max operations +(define_code_iterator SMINMAX [smin smax]) +(define_code_attr minmax [(smin "min") (smax "max")]) +(define_insn "3" + [(set (match_operand:F 0 "register_operand" "=r") + (SMINMAX:F (match_operand:F 1 "register_operand" "r") + (match_operand:F 2 "register_operand" "r")))] + "nios2_fpu_insn_enabled (n2fpu_f)" + { return nios2_fpu_insn_asm (n2fpu_f); } + [(set_attr "type" "custom")]) + +;; These 2-operand FP operations can be collected together +(define_code_iterator FOP2 [abs neg sqrt]) +(define_insn "2" + [(set (match_operand:F 0 "register_operand" "=r") + (FOP2:F (match_operand:F 1 "register_operand" "r")))] + "nios2_fpu_insn_enabled (n2fpu_f)" + { return nios2_fpu_insn_asm (n2fpu_f); } + [(set_attr "type" "custom")]) + +;; X, Y register access instructions +(define_insn "nios2_fwrx" + [(unspec_volatile [(match_operand:DF 0 "register_operand" "r")] UNSPECV_FWRX)] + "nios2_fpu_insn_enabled (n2fpu_fwrx)" + { return nios2_fpu_insn_asm (n2fpu_fwrx); } + [(set_attr "type" "custom")]) + +(define_insn "nios2_fwry" + [(unspec_volatile [(match_operand:SF 0 "register_operand" "r")] UNSPECV_FWRY)] + "nios2_fpu_insn_enabled (n2fpu_fwry)" + { return nios2_fpu_insn_asm (n2fpu_fwry); } + [(set_attr "type" "custom")]) + +;; The X, Y read insns uses an int iterator +(define_int_iterator UNSPEC_READ_XY [UNSPECV_FRDXLO UNSPECV_FRDXHI + UNSPECV_FRDY]) +(define_int_attr read_xy [(UNSPECV_FRDXLO "frdxlo") (UNSPECV_FRDXHI "frdxhi") + (UNSPECV_FRDY "frdy")]) +(define_insn "nios2_" + [(set (match_operand:SF 0 "register_operand" "=r") + (unspec_volatile:SF [(const_int 0)] UNSPEC_READ_XY))] + "nios2_fpu_insn_enabled (n2fpu_)" + { return nios2_fpu_insn_asm (n2fpu_); } + [(set_attr "type" "custom")]) + +;; Various math functions +(define_int_iterator MATHFUNC + [UNSPEC_FCOS UNSPEC_FSIN UNSPEC_FTAN UNSPEC_FATAN UNSPEC_FEXP UNSPEC_FLOG]) +(define_int_attr mathfunc [(UNSPEC_FCOS "cos") (UNSPEC_FSIN "sin") + (UNSPEC_FTAN "tan") (UNSPEC_FATAN "atan") + (UNSPEC_FEXP "exp") (UNSPEC_FLOG "log")]) + +(define_insn "2" + [(set (match_operand:F 0 "register_operand" "=r") + (unspec:F [(match_operand:F 1 "register_operand" "r")] MATHFUNC))] + "nios2_fpu_insn_enabled (n2fpu_f)" + { return nios2_fpu_insn_asm (n2fpu_f); } + [(set_attr "type" "custom")]) + +;; Converting between floating point and fixed point + +(define_code_iterator FLOAT [float unsigned_float]) +(define_code_iterator FIX [fix unsigned_fix]) + +(define_code_attr conv_op [(float "float") (unsigned_float "floatuns") + (fix "fix") (unsigned_fix "fixuns")]) +(define_code_attr i [(float "i") (unsigned_float "u") + (fix "i") (unsigned_fix "u")]) + +;; Integer to float conversions +(define_insn "si2" + [(set (match_operand:F 0 "register_operand" "=r") + (FLOAT:F (match_operand:SI 1 "register_operand" "r")))] + "nios2_fpu_insn_enabled (n2fpu_float)" + { return nios2_fpu_insn_asm (n2fpu_float); } + [(set_attr "type" "custom")]) + +;; Float to integer conversions +(define_insn "_truncsi2" + [(set (match_operand:SI 0 "register_operand" "=r") + (FIX:SI (match_operand:F 1 "general_operand" "r")))] + "nios2_fpu_insn_enabled (n2fpu_fix)" + { return nios2_fpu_insn_asm (n2fpu_fix); } + [(set_attr "type" "custom")]) + +(define_insn "extendsfdf2" + [(set (match_operand:DF 0 "register_operand" "=r") + (float_extend:DF (match_operand:SF 1 "general_operand" "r")))] + "nios2_fpu_insn_enabled (n2fpu_fextsd)" + { return nios2_fpu_insn_asm (n2fpu_fextsd); } + [(set_attr "type" "custom")]) + +(define_insn "truncdfsf2" + [(set (match_operand:SF 0 "register_operand" "=r") + (float_truncate:SF (match_operand:DF 1 "general_operand" "r")))] + "nios2_fpu_insn_enabled (n2fpu_ftruncds)" + { return nios2_fpu_insn_asm (n2fpu_ftruncds); } + [(set_attr "type" "custom")]) + + + +;; Prologue, Epilogue and Return + +(define_expand "prologue" + [(const_int 1)] + "" +{ + nios2_expand_prologue (); + DONE; +}) + +(define_expand "epilogue" + [(return)] + "" +{ + nios2_expand_epilogue (false); + DONE; +}) + +(define_expand "sibcall_epilogue" + [(return)] + "" +{ + nios2_expand_epilogue (true); + DONE; +}) + +(define_insn "return" + [(simple_return)] + "nios2_can_use_return_insn ()" + "ret") + +(define_insn "simple_return" + [(simple_return)] + "" + "ret") + +;; Block any insns from being moved before this point, since the +;; profiling call to mcount can use various registers that aren't +;; saved or used to pass arguments. + +(define_insn "blockage" + [(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE)] + "" + "" + [(set_attr "type" "unknown") + (set_attr "length" "0")]) + +;; This is used in compiling the unwind routines. +(define_expand "eh_return" + [(use (match_operand 0 "general_operand"))] + "" +{ + if (GET_MODE (operands[0]) != Pmode) + operands[0] = convert_to_mode (Pmode, operands[0], 0); + emit_insn (gen_eh_set_ra (operands[0])); + DONE; +}) + +;; Modify the return address for EH return. We can't expand this +;; until we know where it will be put in the stack frame. + +(define_insn_and_split "eh_set_ra" + [(unspec [(match_operand:SI 0 "register_operand" "r")] UNSPEC_EH_RETURN) + (clobber (match_scratch:SI 1 "=&r"))] + "" + "#" + "reload_completed" + [(const_int 0)] +{ + nios2_set_return_address (operands[0], operands[1]); + DONE; +}) + + +;; Jumps and calls + +; Note that the assembler fixes up any out-of-range branch instructions not +; caught by the compiler branch shortening code. The sequence emitted by +; the assembler can be very inefficient, but it is correct for PIC code. +; For non-PIC we are better off converting to an absolute JMPI. +; +; Direct calls and sibcalls use the CALL and JMPI instructions, respectively. +; These instructions have an immediate operand that specifies the low 28 bits +; of the PC, effectively allowing direct calls within a 256MB memory segment. +; Per the Nios II Processor Reference Handbook, the linker is not required to +; check or adjust for overflow. + +(define_insn "indirect_jump" + [(set (pc) (match_operand:SI 0 "register_operand" "r"))] + "" + "jmp\\t%0" + [(set_attr "type" "control")]) + +(define_insn "jump" + [(set (pc) + (label_ref (match_operand 0 "" "")))] + "" + { + if (flag_pic || get_attr_length (insn) == 4) + return "br\\t%0"; + else + return "jmpi\\t%0"; + } + [(set_attr "type" "control") + (set (attr "length") + (if_then_else + (and (ge (minus (match_dup 0) (pc)) (const_int -32768)) + (le (minus (match_dup 0) (pc)) (const_int 32764))) + (const_int 4) + (const_int 8)))]) + + +(define_expand "call" + [(parallel [(call (match_operand 0 "" "") + (match_operand 1 "" "")) + (clobber (reg:SI RA_REGNO))])] + "" + "nios2_adjust_call_address (&operands[0]);") + +(define_expand "call_value" + [(parallel [(set (match_operand 0 "" "") + (call (match_operand 1 "" "") + (match_operand 2 "" ""))) + (clobber (reg:SI RA_REGNO))])] + "" + "nios2_adjust_call_address (&operands[1]);") + +(define_insn "*call" + [(call (mem:QI (match_operand:SI 0 "call_operand" "i,r")) + (match_operand 1 "" "")) + (clobber (reg:SI RA_REGNO))] + "" + "@ + call\\t%0 + callr\\t%0" + [(set_attr "type" "control")]) + +(define_insn "*call_value" + [(set (match_operand 0 "" "") + (call (mem:QI (match_operand:SI 1 "call_operand" "i,r")) + (match_operand 2 "" ""))) + (clobber (reg:SI RA_REGNO))] + "" + "@ + call\\t%1 + callr\\t%1" + [(set_attr "type" "control")]) + +(define_expand "sibcall" + [(parallel [(call (match_operand 0 "" "") + (match_operand 1 "" "")) + (return)])] + "" + "nios2_adjust_call_address (&operands[0]);") + +(define_expand "sibcall_value" + [(parallel [(set (match_operand 0 "" "") + (call (match_operand 1 "" "") + (match_operand 2 "" ""))) + (return)])] + "" + "nios2_adjust_call_address (&operands[1]);") + +(define_insn "*sibcall" + [(call (mem:QI (match_operand:SI 0 "call_operand" "i,j")) + (match_operand 1 "" "")) + (return)] + "" + "@ + jmpi\\t%0 + jmp\\t%0" + [(set_attr "type" "control")]) + +(define_insn "*sibcall_value" + [(set (match_operand 0 "register_operand" "") + (call (mem:QI (match_operand:SI 1 "call_operand" "i,j")) + (match_operand 2 "" ""))) + (return)] + "" + "@ + jmpi\\t%1 + jmp\\t%1" + [(set_attr "type" "control")]) + +(define_expand "tablejump" + [(parallel [(set (pc) (match_operand 0 "register_operand" "r")) + (use (label_ref (match_operand 1 "" "")))])] + "" +{ + if (flag_pic) + { + /* Hopefully, CSE will eliminate this copy. */ + rtx reg1 = copy_addr_to_reg (gen_rtx_LABEL_REF (Pmode, operands[1])); + rtx reg2 = gen_reg_rtx (SImode); + + emit_insn (gen_addsi3 (reg2, operands[0], reg1)); + operands[0] = reg2; + } +}) + +(define_insn "*tablejump" + [(set (pc) + (match_operand:SI 0 "register_operand" "r")) + (use (label_ref (match_operand 1 "" "")))] + "" + "jmp\\t%0" + [(set_attr "type" "control")]) + + +;; cstore, cbranch patterns + +(define_mode_iterator CM [SI SF DF]) + +(define_expand "cstore4" + [(set (match_operand:SI 0 "register_operand" "=r") + (match_operator:SI 1 "expandable_comparison_operator" + [(match_operand:CM 2 "register_operand") + (match_operand:CM 3 "nonmemory_operand")]))] + "" +{ + if (!nios2_validate_compare (mode, &operands[1], &operands[2], + &operands[3])) + FAIL; +}) + +(define_expand "cbranch4" + [(set (pc) + (if_then_else + (match_operator 0 "expandable_comparison_operator" + [(match_operand:CM 1 "register_operand") + (match_operand:CM 2 "nonmemory_operand")]) + (label_ref (match_operand 3 "")) + (pc)))] + "" +{ + if (!nios2_validate_compare (mode, &operands[0], &operands[1], + &operands[2])) + FAIL; + if (GET_MODE_CLASS (mode) == MODE_FLOAT + || !reg_or_0_operand (operands[2], mode)) + { + rtx condreg = gen_reg_rtx (SImode); + emit_insn (gen_cstore4 + (condreg, operands[0], operands[1], operands[2])); + operands[1] = condreg; + operands[2] = const0_rtx; + operands[0] = gen_rtx_fmt_ee (NE, VOIDmode, condreg, const0_rtx); + } +}) + +(define_insn "nios2_cbranch" + [(set (pc) + (if_then_else + (match_operator 0 "ordered_comparison_operator" + [(match_operand:SI 1 "reg_or_0_operand" "rM") + (match_operand:SI 2 "reg_or_0_operand" "rM")]) + (label_ref (match_operand 3 "" "")) + (pc)))] + "" + { + if (flag_pic || get_attr_length (insn) == 4) + return "b%0\t%z1, %z2, %l3"; + else + return "b%R0\t%z1, %z2, .+8;jmpi\t%l3"; + } + [(set_attr "type" "control") + (set (attr "length") + (if_then_else + (and (ge (minus (match_dup 1) (pc)) (const_int -32768)) + (le (minus (match_dup 1) (pc)) (const_int 32764))) + (const_int 4) (const_int 8)))]) + +;; Floating point comparisons +(define_code_iterator FCMP [eq ne gt ge le lt]) +(define_insn "nios2_s" + [(set (match_operand:SI 0 "register_operand" "=r") + (FCMP:SI (match_operand:F 1 "register_operand" "r") + (match_operand:F 2 "register_operand" "r")))] + "nios2_fpu_insn_enabled (n2fpu_fcmp)" + { return nios2_fpu_insn_asm (n2fpu_fcmp); } + [(set_attr "type" "custom")]) + +;; Integer comparisons + +(define_code_iterator EQNE [eq ne]) +(define_insn "nios2_cmp" + [(set (match_operand:SI 0 "register_operand" "=r") + (EQNE:SI (match_operand:SI 1 "register_operand" "%r") + (match_operand:SI 2 "arith_operand" "rI")))] + "" + "cmp%i2\\t%0, %1, %z2" + [(set_attr "type" "alu")]) + +(define_code_iterator SCMP [ge lt]) +(define_insn "nios2_cmp" + [(set (match_operand:SI 0 "register_operand" "=r") + (SCMP:SI (match_operand:SI 1 "reg_or_0_operand" "rM") + (match_operand:SI 2 "arith_operand" "rI")))] + "" + "cmp%i2\\t%0, %z1, %z2" + [(set_attr "type" "alu")]) + +(define_code_iterator UCMP [geu ltu]) +(define_insn "nios2_cmp" + [(set (match_operand:SI 0 "register_operand" "=r") + (UCMP:SI (match_operand:SI 1 "reg_or_0_operand" "rM") + (match_operand:SI 2 "uns_arith_operand" "rJ")))] + "" + "cmp%i2\\t%0, %z1, %z2" + [(set_attr "type" "alu")]) + + + +;; Custom instruction patterns. The operands are intentionally +;; mode-less, to serve as generic carriers of all Altera defined +;; built-in instruction/function types. + +(define_insn "custom_nxx" + [(unspec_volatile [(match_operand 0 "custom_insn_opcode" "N") + (match_operand 1 "reg_or_0_operand" "rM") + (match_operand 2 "reg_or_0_operand" "rM")] + UNSPECV_CUSTOM_NXX)] + "" + "custom\\t%0, zero, %z1, %z2" + [(set_attr "type" "custom")]) + +(define_insn "custom_xnxx" + [(set (match_operand 0 "register_operand" "=r") + (unspec_volatile [(match_operand 1 "custom_insn_opcode" "N") + (match_operand 2 "reg_or_0_operand" "rM") + (match_operand 3 "reg_or_0_operand" "rM")] + UNSPECV_CUSTOM_XNXX))] + "" + "custom\\t%1, %0, %z2, %z3" + [(set_attr "type" "custom")]) + + +;; Misc. patterns + +(define_insn "nop" + [(const_int 0)] + "" + "nop" + [(set_attr "type" "alu")]) + +;; Connect 'sync' to 'memory_barrier' standard expand name +(define_expand "memory_barrier" + [(const_int 0)] + "" +{ + emit_insn (gen_sync ()); + DONE; +}) + +;; For the nios2 __builtin_sync built-in function +(define_expand "sync" + [(set (match_dup 0) + (unspec:BLK [(match_dup 0)] UNSPEC_SYNC))] + "" +{ + operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); + MEM_VOLATILE_P (operands[0]) = 1; +}) + +(define_insn "*sync_insn" + [(set (match_operand:BLK 0 "" "") + (unspec:BLK [(match_dup 0)] UNSPEC_SYNC))] + "" + "sync" + [(set_attr "type" "control")]) + +(define_insn "rdctl" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec_volatile:SI [(match_operand:SI 1 "rdwrctl_operand" "O")] + UNSPECV_RDCTL))] + "" + "rdctl\\t%0, ctl%1" + [(set_attr "type" "control")]) + +(define_insn "wrctl" + [(unspec_volatile:SI [(match_operand:SI 0 "rdwrctl_operand" "O") + (match_operand:SI 1 "reg_or_0_operand" "rM")] + UNSPECV_WRCTL)] + "" + "wrctl\\tctl%0, %z1" + [(set_attr "type" "control")]) + +;; Trap patterns +(define_insn "trap" + [(trap_if (const_int 1) (const_int 3))] + "" + "break\\t3" + [(set_attr "type" "control")]) + +(define_insn "ctrapsi4" + [(trap_if (match_operator 0 "ordered_comparison_operator" + [(match_operand:SI 1 "reg_or_0_operand" "rM") + (match_operand:SI 2 "reg_or_0_operand" "rM")]) + (match_operand 3 "const_int_operand" "i"))] + "" + "b%R0\\t%z1, %z2, 1f\;break\\t%3\;1:" + [(set_attr "type" "control") + (set_attr "length" "8")]) + +;; Load the GOT register. +(define_insn "load_got_register" + [(set (match_operand:SI 0 "register_operand" "=&r") + (unspec:SI [(const_int 0)] UNSPEC_LOAD_GOT_REGISTER)) + (set (match_operand:SI 1 "register_operand" "=r") + (unspec:SI [(const_int 0)] UNSPEC_LOAD_GOT_REGISTER))] + "" + "nextpc\\t%0 +\\t1: +\\tmovhi\\t%1, %%hiadj(_GLOBAL_OFFSET_TABLE_ - 1b) +\\taddi\\t%1, %1, %%lo(_GLOBAL_OFFSET_TABLE_ - 1b)" + [(set_attr "length" "12")]) + +;; Read thread pointer register +(define_expand "get_thread_pointersi" + [(match_operand:SI 0 "register_operand" "=r")] + "TARGET_LINUX_ABI" +{ + emit_move_insn (operands[0], gen_rtx_REG (Pmode, TP_REGNO)); + DONE; +}) diff --git a/gcc/config/nios2/nios2.opt b/gcc/config/nios2/nios2.opt new file mode 100644 index 00000000000..13aef254610 --- /dev/null +++ b/gcc/config/nios2/nios2.opt @@ -0,0 +1,531 @@ +; Options for the Altera Nios II port of the compiler. +; Copyright (C) 2012-2013 Free Software Foundation, Inc. +; Contributed by Altera and Mentor Graphics, Inc. +; +; This file is part of GCC. +; +; GCC is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 3, or (at your option) +; any later version. +; +; GCC is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with GCC; see the file COPYING3. If not see +; . + +HeaderInclude +config/nios2/nios2-opts.h + +TargetSave +int saved_fpu_custom_code[n2fpu_code_num] + +TargetSave +enum nios2_ccs_code saved_custom_code_status[256] + +TargetSave +int saved_custom_code_index[256] + +mhw-div +Target Report Mask(HAS_DIV) +Enable DIV, DIVU + +mhw-mul +Target Report Mask(HAS_MUL) +Enable MUL instructions + +mhw-mulx +Target Report Mask(HAS_MULX) +Enable MULX instructions, assume fast shifter + +mfast-sw-div +Target Report Mask(FAST_SW_DIV) +Use table based fast divide (default at -O3) + +mbypass-cache +Target Report Mask(BYPASS_CACHE) +All memory accesses use I/O load/store instructions + +mno-cache-volatile +Target Report RejectNegative Mask(BYPASS_CACHE_VOLATILE) +Volatile memory accesses use I/O load/store instructions + +mcache-volatile +Target Report RejectNegative Undocumented InverseMask(BYPASS_CACHE_VOLATILE) +Volatile memory accesses do not use I/O load/store instructions + +mgpopt +Target Report Var(TARGET_GPOPT) Init(-1) +Use GP-relative addressing to access small data + +meb +Target Report RejectNegative Mask(BIG_ENDIAN) +Use big-endian byte order + +mel +Target Report RejectNegative InverseMask(BIG_ENDIAN) +Use little-endian byte order + +mcustom-fpu-cfg= +Target RejectNegative Joined Var(nios2_custom_fpu_cfg_string) +Floating point custom instruction configuration name + +mno-custom-ftruncds +Target Report RejectNegative Var(nios2_custom_ftruncds, -1) +Do not use the ftruncds custom instruction + +mcustom-ftruncds= +Target Report RejectNegative Joined UInteger Var(nios2_custom_ftruncds) Init(-1) +Integer id (N) of ftruncds custom instruction + +mno-custom-fextsd +Target Report RejectNegative Var(nios2_custom_fextsd, -1) +Do not use the fextsd custom instruction + +mcustom-fextsd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fextsd) Init(-1) +Integer id (N) of fextsd custom instruction + +mno-custom-fixdu +Target Report RejectNegative Var(nios2_custom_fixdu, -1) +Do not use the fixdu custom instruction + +mcustom-fixdu= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fixdu) Init(-1) +Integer id (N) of fixdu custom instruction + +mno-custom-fixdi +Target Report RejectNegative Var(nios2_custom_fixdi, -1) +Do not use the fixdi custom instruction + +mcustom-fixdi= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fixdi) Init(-1) +Integer id (N) of fixdi custom instruction + +mno-custom-fixsu +Target Report RejectNegative Var(nios2_custom_fixsu, -1) +Do not use the fixsu custom instruction + +mcustom-fixsu= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fixsu) Init(-1) +Integer id (N) of fixsu custom instruction + +mno-custom-fixsi +Target Report RejectNegative Var(nios2_custom_fixsi, -1) +Do not use the fixsi custom instruction + +mcustom-fixsi= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fixsi) Init(-1) +Integer id (N) of fixsi custom instruction + +mno-custom-floatud +Target Report RejectNegative Var(nios2_custom_floatud, -1) +Do not use the floatud custom instruction + +mcustom-floatud= +Target Report RejectNegative Joined UInteger Var(nios2_custom_floatud) Init(-1) +Integer id (N) of floatud custom instruction + +mno-custom-floatid +Target Report RejectNegative Var(nios2_custom_floatid, -1) +Do not use the floatid custom instruction + +mcustom-floatid= +Target Report RejectNegative Joined UInteger Var(nios2_custom_floatid) Init(-1) +Integer id (N) of floatid custom instruction + +mno-custom-floatus +Target Report RejectNegative Var(nios2_custom_floatus, -1) +Do not use the floatus custom instruction + +mcustom-floatus= +Target Report RejectNegative Joined UInteger Var(nios2_custom_floatus) Init(-1) +Integer id (N) of floatus custom instruction + +mno-custom-floatis +Target Report RejectNegative Var(nios2_custom_floatis, -1) +Do not use the floatis custom instruction + +mcustom-floatis= +Target Report RejectNegative Joined UInteger Var(nios2_custom_floatis) Init(-1) +Integer id (N) of floatis custom instruction + +mno-custom-fcmpned +Target Report RejectNegative Var(nios2_custom_fcmpned, -1) +Do not use the fcmpned custom instruction + +mcustom-fcmpned= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmpned) Init(-1) +Integer id (N) of fcmpned custom instruction + +mno-custom-fcmpeqd +Target Report RejectNegative Var(nios2_custom_fcmpeqd, -1) +Do not use the fcmpeqd custom instruction + +mcustom-fcmpeqd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmpeqd) Init(-1) +Integer id (N) of fcmpeqd custom instruction + +mno-custom-fcmpged +Target Report RejectNegative Var(nios2_custom_fcmpged, -1) +Do not use the fcmpged custom instruction + +mcustom-fcmpged= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmpged) Init(-1) +Integer id (N) of fcmpged custom instruction + +mno-custom-fcmpgtd +Target Report RejectNegative Var(nios2_custom_fcmpgtd, -1) +Do not use the fcmpgtd custom instruction + +mcustom-fcmpgtd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmpgtd) Init(-1) +Integer id (N) of fcmpgtd custom instruction + +mno-custom-fcmpled +Target Report RejectNegative Var(nios2_custom_fcmpled, -1) +Do not use the fcmpled custom instruction + +mcustom-fcmpled= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmpled) Init(-1) +Integer id (N) of fcmpled custom instruction + +mno-custom-fcmpltd +Target Report RejectNegative Var(nios2_custom_fcmpltd, -1) +Do not use the fcmpltd custom instruction + +mcustom-fcmpltd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmpltd) Init(-1) +Integer id (N) of fcmpltd custom instruction + +mno-custom-flogd +Target Report RejectNegative Var(nios2_custom_flogd, -1) +Do not use the flogd custom instruction + +mcustom-flogd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_flogd) Init(-1) +Integer id (N) of flogd custom instruction + +mno-custom-fexpd +Target Report RejectNegative Var(nios2_custom_fexpd, -1) +Do not use the fexpd custom instruction + +mcustom-fexpd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fexpd) Init(-1) +Integer id (N) of fexpd custom instruction + +mno-custom-fatand +Target Report RejectNegative Var(nios2_custom_fatand, -1) +Do not use the fatand custom instruction + +mcustom-fatand= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fatand) Init(-1) +Integer id (N) of fatand custom instruction + +mno-custom-ftand +Target Report RejectNegative Var(nios2_custom_ftand, -1) +Do not use the ftand custom instruction + +mcustom-ftand= +Target Report RejectNegative Joined UInteger Var(nios2_custom_ftand) Init(-1) +Integer id (N) of ftand custom instruction + +mno-custom-fsind +Target Report RejectNegative Var(nios2_custom_fsind, -1) +Do not use the fsind custom instruction + +mcustom-fsind= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fsind) Init(-1) +Integer id (N) of fsind custom instruction + +mno-custom-fcosd +Target Report RejectNegative Var(nios2_custom_fcosd, -1) +Do not use the fcosd custom instruction + +mcustom-fcosd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcosd) Init(-1) +Integer id (N) of fcosd custom instruction + +mno-custom-fsqrtd +Target Report RejectNegative Var(nios2_custom_fsqrtd, -1) +Do not use the fsqrtd custom instruction + +mcustom-fsqrtd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fsqrtd) Init(-1) +Integer id (N) of fsqrtd custom instruction + +mno-custom-fabsd +Target Report RejectNegative Var(nios2_custom_fabsd, -1) +Do not use the fabsd custom instruction + +mcustom-fabsd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fabsd) Init(-1) +Integer id (N) of fabsd custom instruction + +mno-custom-fnegd +Target Report RejectNegative Var(nios2_custom_fnegd, -1) +Do not use the fnegd custom instruction + +mcustom-fnegd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fnegd) Init(-1) +Integer id (N) of fnegd custom instruction + +mno-custom-fmaxd +Target Report RejectNegative Var(nios2_custom_fmaxd, -1) +Do not use the fmaxd custom instruction + +mcustom-fmaxd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fmaxd) Init(-1) +Integer id (N) of fmaxd custom instruction + +mno-custom-fmind +Target Report RejectNegative Var(nios2_custom_fmind, -1) +Do not use the fmind custom instruction + +mcustom-fmind= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fmind) Init(-1) +Integer id (N) of fmind custom instruction + +mno-custom-fdivd +Target Report RejectNegative Var(nios2_custom_fdivd, -1) +Do not use the fdivd custom instruction + +mcustom-fdivd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fdivd) Init(-1) +Integer id (N) of fdivd custom instruction + +mno-custom-fmuld +Target Report RejectNegative Var(nios2_custom_fmuld, -1) +Do not use the fmuld custom instruction + +mcustom-fmuld= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fmuld) Init(-1) +Integer id (N) of fmuld custom instruction + +mno-custom-fsubd +Target Report RejectNegative Var(nios2_custom_fsubd, -1) +Do not use the fsubd custom instruction + +mcustom-fsubd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fsubd) Init(-1) +Integer id (N) of fsubd custom instruction + +mno-custom-faddd +Target Report RejectNegative Var(nios2_custom_faddd, -1) +Do not use the faddd custom instruction + +mcustom-faddd= +Target Report RejectNegative Joined UInteger Var(nios2_custom_faddd) Init(-1) +Integer id (N) of faddd custom instruction + +mno-custom-fcmpnes +Target Report RejectNegative Var(nios2_custom_fcmpnes, -1) +Do not use the fcmpnes custom instruction + +mcustom-fcmpnes= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmpnes) Init(-1) +Integer id (N) of fcmpnes custom instruction + +mno-custom-fcmpeqs +Target Report RejectNegative Var(nios2_custom_fcmpeqs, -1) +Do not use the fcmpeqs custom instruction + +mcustom-fcmpeqs= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmpeqs) Init(-1) +Integer id (N) of fcmpeqs custom instruction + +mno-custom-fcmpges +Target Report RejectNegative Var(nios2_custom_fcmpges, -1) +Do not use the fcmpges custom instruction + +mcustom-fcmpges= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmpges) Init(-1) +Integer id (N) of fcmpges custom instruction + +mno-custom-fcmpgts +Target Report RejectNegative Var(nios2_custom_fcmpgts, -1) +Do not use the fcmpgts custom instruction + +mcustom-fcmpgts= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmpgts) Init(-1) +Integer id (N) of fcmpgts custom instruction + +mno-custom-fcmples +Target Report RejectNegative Var(nios2_custom_fcmples, -1) +Do not use the fcmples custom instruction + +mcustom-fcmples= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmples) Init(-1) +Integer id (N) of fcmples custom instruction + +mno-custom-fcmplts +Target Report RejectNegative Var(nios2_custom_fcmplts, -1) +Do not use the fcmplts custom instruction + +mcustom-fcmplts= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcmplts) Init(-1) +Integer id (N) of fcmplts custom instruction + +mno-custom-flogs +Target Report RejectNegative Var(nios2_custom_flogs, -1) +Do not use the flogs custom instruction + +mcustom-flogs= +Target Report RejectNegative Joined UInteger Var(nios2_custom_flogs) Init(-1) +Integer id (N) of flogs custom instruction + +mno-custom-fexps +Target Report RejectNegative Var(nios2_custom_fexps, -1) +Do not use the fexps custom instruction + +mcustom-fexps= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fexps) Init(-1) +Integer id (N) of fexps custom instruction + +mno-custom-fatans +Target Report RejectNegative Var(nios2_custom_fatans, -1) +Do not use the fatans custom instruction + +mcustom-fatans= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fatans) Init(-1) +Integer id (N) of fatans custom instruction + +mno-custom-ftans +Target Report RejectNegative Var(nios2_custom_ftans, -1) +Do not use the ftans custom instruction + +mcustom-ftans= +Target Report RejectNegative Joined UInteger Var(nios2_custom_ftans) Init(-1) +Integer id (N) of ftans custom instruction + +mno-custom-fsins +Target Report RejectNegative Var(nios2_custom_fsins, -1) +Do not use the fsins custom instruction + +mcustom-fsins= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fsins) Init(-1) +Integer id (N) of fsins custom instruction + +mno-custom-fcoss +Target Report RejectNegative Var(nios2_custom_fcoss, -1) +Do not use the fcoss custom instruction + +mcustom-fcoss= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fcoss) Init(-1) +Integer id (N) of fcoss custom instruction + +mno-custom-fsqrts +Target Report RejectNegative Var(nios2_custom_fsqrts, -1) +Do not use the fsqrts custom instruction + +mcustom-fsqrts= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fsqrts) Init(-1) +Integer id (N) of fsqrts custom instruction + +mno-custom-fabss +Target Report RejectNegative Var(nios2_custom_fabss, -1) +Do not use the fabss custom instr + +mcustom-fabss= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fabss) Init(-1) +Integer id (N) of fabss custom instruction + +mno-custom-fnegs +Target Report RejectNegative Var(nios2_custom_fnegs, -1) +Do not use the fnegs custom instruction + +mcustom-fnegs= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fnegs) Init(-1) +Integer id (N) of fnegs custom instruction + +mno-custom-fmaxs +Target Report RejectNegative Var(nios2_custom_fmaxs, -1) +Do not use the fmaxs custom instruction + +mcustom-fmaxs= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fmaxs) Init(-1) +Integer id (N) of fmaxs custom instruction + +mno-custom-fmins +Target Report RejectNegative Var(nios2_custom_fmins, -1) +Do not use the fmins custom instruction + +mcustom-fmins= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fmins) Init(-1) +Integer id (N) of fmins custom instruction + +mno-custom-fdivs +Target Report RejectNegative Var(nios2_custom_fdivs, -1) +Do not use the fdivs custom instruction + +mcustom-fdivs= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fdivs) Init(-1) +Integer id (N) of fdivs custom instruction + +mno-custom-fmuls +Target Report RejectNegative Var(nios2_custom_fmuls, -1) +Do not use the fmuls custom instruction + +mcustom-fmuls= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fmuls) Init(-1) +Integer id (N) of fmuls custom instruction + +mno-custom-fsubs +Target Report RejectNegative Var(nios2_custom_fsubs, -1) +Do not use the fsubs custom instruction + +mcustom-fsubs= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fsubs) Init(-1) +Integer id (N) of fsubs custom instruction + +mno-custom-fadds +Target Report RejectNegative Var(nios2_custom_fadds, -1) +Do not use the fadds custom instruction + +mcustom-fadds= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fadds) Init(-1) +Integer id (N) of fadds custom instruction + +mno-custom-frdy +Target Report RejectNegative Var(nios2_custom_frdy, -1) +Do not use the frdy custom instruction + +mcustom-frdy= +Target Report RejectNegative Joined UInteger Var(nios2_custom_frdy) Init(-1) +Integer id (N) of frdy custom instruction + +mno-custom-frdxhi +Target Report RejectNegative Var(nios2_custom_frdxhi, -1) +Do not use the frdxhi custom instruction + +mcustom-frdxhi= +Target Report RejectNegative Joined UInteger Var(nios2_custom_frdxhi) Init(-1) +Integer id (N) of frdxhi custom instruction + +mno-custom-frdxlo +Target Report RejectNegative Var(nios2_custom_frdxlo, -1) +Do not use the frdxlo custom instruction + +mcustom-frdxlo= +Target Report RejectNegative Joined UInteger Var(nios2_custom_frdxlo) Init(-1) +Integer id (N) of frdxlo custom instruction + +mno-custom-fwry +Target Report RejectNegative Var(nios2_custom_fwry, -1) +Do not use the fwry custom instruction + +mcustom-fwry= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fwry) Init(-1) +Integer id (N) of fwry custom instruction + +mno-custom-fwrx +Target Report RejectNegative Var(nios2_custom_fwrx, -1) +Do not use the fwrx custom instruction + +mcustom-fwrx= +Target Report RejectNegative Joined UInteger Var(nios2_custom_fwrx) Init(-1) +Integer id (N) of fwrx custom instruction diff --git a/gcc/config/nios2/predicates.md b/gcc/config/nios2/predicates.md new file mode 100644 index 00000000000..8bc18fa4f5a --- /dev/null +++ b/gcc/config/nios2/predicates.md @@ -0,0 +1,85 @@ +;; Predicate definitions for Altera Nios II. +;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Contributed by Chung-Lin Tang +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. +;; +;; GCC is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; . + +(define_predicate "const_0_operand" + (and (match_code "const_int,const_double,const_vector") + (match_test "op == CONST0_RTX (GET_MODE (op))"))) + +(define_predicate "reg_or_0_operand" + (ior (match_operand 0 "const_0_operand") + (match_operand 0 "register_operand"))) + +(define_predicate "const_uns_arith_operand" + (and (match_code "const_int") + (match_test "SMALL_INT_UNSIGNED (INTVAL (op))"))) + +(define_predicate "uns_arith_operand" + (ior (match_operand 0 "const_uns_arith_operand") + (match_operand 0 "register_operand"))) + +(define_predicate "const_arith_operand" + (and (match_code "const_int") + (match_test "SMALL_INT (INTVAL (op))"))) + +(define_predicate "arith_operand" + (ior (match_operand 0 "const_arith_operand") + (match_operand 0 "register_operand"))) + +(define_predicate "add_regimm_operand" + (ior (match_operand 0 "arith_operand") + (match_test "nios2_unspec_reloc_p (op)"))) + +(define_predicate "const_logical_operand" + (and (match_code "const_int") + (match_test "(INTVAL (op) & 0xffff) == 0 + || (INTVAL (op) & 0xffff0000) == 0"))) + +(define_predicate "logical_operand" + (ior (match_operand 0 "const_logical_operand") + (match_operand 0 "register_operand"))) + +(define_predicate "const_shift_operand" + (and (match_code "const_int") + (match_test "SHIFT_INT (INTVAL (op))"))) + +(define_predicate "shift_operand" + (ior (match_operand 0 "const_shift_operand") + (match_operand 0 "register_operand"))) + +(define_predicate "call_operand" + (ior (match_operand 0 "immediate_operand") + (match_operand 0 "register_operand"))) + +(define_predicate "rdwrctl_operand" + (and (match_code "const_int") + (match_test "RDWRCTL_INT (INTVAL (op))"))) + +(define_predicate "custom_insn_opcode" + (and (match_code "const_int") + (match_test "CUSTOM_INSN_OPCODE (INTVAL (op))"))) + +(define_special_predicate "expandable_comparison_operator" + (match_operand 0 "ordered_comparison_operator") +{ + return (GET_MODE_CLASS (GET_MODE (XEXP (op, 0))) != MODE_FLOAT + || nios2_validate_fpu_compare (GET_MODE (XEXP (op, 0)), &op, + &XEXP (op, 0), &XEXP (op, 1), + false)); +}) diff --git a/gcc/config/nios2/t-nios2 b/gcc/config/nios2/t-nios2 new file mode 100644 index 00000000000..09a407626aa --- /dev/null +++ b/gcc/config/nios2/t-nios2 @@ -0,0 +1,27 @@ +# Target Makefile Fragment for Altera Nios II. +# Copyright (C) 2013 Free Software Foundation, Inc. +# Contributed by Altera and Mentor Graphics, Inc. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 3, or (at your +# option) any later version. +# +# GCC is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +# License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# MULTILIB_OPTIONS = mno-hw-mul/mhw-mulx mcustom-fpu-cfg=60-1/mcustom-fpu-cfg=60-2 +# MULTILIB_DIRNAMES = nomul mulx fpu-60-1 fpu-60-2 +# MULTILIB_EXCEPTIONS = + +# MULTILIB_OPTIONS += EL/EB +# MULTILIB_DIRNAMES += le be +# MULTILIB_MATCHES += EL=mel EB=meb diff --git a/gcc/configure b/gcc/configure index e4527fcec84..5a58b59699e 100755 --- a/gcc/configure +++ b/gcc/configure @@ -23396,6 +23396,13 @@ foo: tls_first_minor=19 tls_as_opt='--fatal-warnings' ;; + nios2-*-*) + conftest_s=' + .section ".tdata","awT",@progbits' + tls_first_major=2 + tls_first_minor=23 + tls_as_opt="--fatal-warnings" + ;; aarch64*-*-*) conftest_s=' .section ".tdata","awT",%progbits @@ -26251,8 +26258,8 @@ esac # version to the per-target configury. case "$cpu_type" in aarch64 | alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze \ - | mips | pa | rs6000 | score | sparc | spu | tilegx | tilepro | xstormy16 \ - | xtensa) + | mips | nios2 | pa | rs6000 | score | sparc | spu | tilegx | tilepro \ + | xstormy16 | xtensa) insn="nop" ;; ia64 | s390) diff --git a/gcc/configure.ac b/gcc/configure.ac index 59de08da86d..f9976a209f9 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -3068,6 +3068,13 @@ foo: tls_first_minor=19 tls_as_opt='--fatal-warnings' ;; + nios2-*-*) + conftest_s=' + .section ".tdata","awT",@progbits' + tls_first_major=2 + tls_first_minor=23 + tls_as_opt="--fatal-warnings" + ;; aarch64*-*-*) conftest_s=' .section ".tdata","awT",%progbits @@ -4303,8 +4310,8 @@ esac # version to the per-target configury. case "$cpu_type" in aarch64 | alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze \ - | mips | pa | rs6000 | score | sparc | spu | tilegx | tilepro | xstormy16 \ - | xtensa) + | mips | nios2 | pa | rs6000 | score | sparc | spu | tilegx | tilepro \ + | xstormy16 | xtensa) insn="nop" ;; ia64 | s390) diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index d539bd18d17..713d4208195 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -3847,6 +3847,14 @@ int core2_func (void) __attribute__ ((__target__ ("arch=core2"))); int sse3_func (void) __attribute__ ((__target__ ("sse3"))); @end smallexample +You can either use multiple +strings to specify multiple options, or separate the options +with a comma (@samp{,}). + +The @code{target} attribute is presently implemented for +i386/x86_64, PowerPC, and Nios II targets only. +The options supported are specific to each target. + On the 386, the following options are allowed: @table @samp @@ -4168,9 +4176,29 @@ compilation tunes for the @var{CPU} architecture, and not the default tuning specified on the command line. @end table -On the 386/x86_64 and PowerPC back ends, you can use either multiple -strings to specify multiple options, or you can separate the option -with a comma (@code{,}). +When compiling for Nios II, the following options are allowed: + +@table @samp +@item custom-@var{insn}=@var{N} +@itemx no-custom-@var{insn} +@cindex @code{target("custom-@var{insn}=@var{N}")} attribute +@cindex @code{target("no-custom-@var{insn}")} attribute +Each @samp{custom-@var{insn}=@var{N}} attribute locally enables use of a +custom instruction with encoding @var{N} when generating code that uses +@var{insn}. Similarly, @samp{no-custom-@var{insn}} locally inhibits use of +the custom instruction @var{insn}. +These target attributes correspond to the +@option{-mcustom-@var{insn}=@var{N}} and @option{-mno-custom-@var{insn}} +command-line options, and support the same set of @var{insn} keywords. +@xref{Nios II Options}, for more information. + +@item custom-fpu-cfg=@var{name} +@cindex @code{target("custom-fpu-cfg=@var{name}")} attribute +This attribute corresponds to the @option{-mcustom-fpu-cfg=@var{name}} +command-line option, to select a predefined set of custom instructions +named @var{name}. +@xref{Nios II Options}, for more information. +@end table On the 386/x86_64 and PowerPC back ends, the inliner does not inline a function that has different target options than the caller, unless the @@ -4178,10 +4206,6 @@ callee has a subset of the target options of the caller. For example a function declared with @code{target("sse3")} can inline a function with @code{target("sse2")}, since @code{-msse3} implies @code{-msse2}. -The @code{target} attribute is not implemented in GCC versions earlier -than 4.4 for the i386/x86_64 and 4.6 for the PowerPC back ends. It is -not currently implemented for other back ends. - @item tiny_data @cindex tiny data section on the H8/300H and H8S Use this attribute on the H8/300H and H8S to indicate that the specified @@ -9012,6 +9036,7 @@ instructions, but allow the compiler to schedule those calls. @menu * Alpha Built-in Functions:: +* Altera Nios II Built-in Functions:: * ARC Built-in Functions:: * ARC SIMD Built-in Functions:: * ARM iWMMXt Built-in Functions:: @@ -9124,6 +9149,110 @@ void *__builtin_thread_pointer (void) void __builtin_set_thread_pointer (void *) @end smallexample +@node Altera Nios II Built-in Functions +@subsection Altera Nios II Built-in Functions + +These built-in functions are available for the Altera Nios II +family of processors. + +The following built-in functions are always available. They +all generate the machine instruction that is part of the name. + +@example +int __builtin_ldbio (volatile const void *) +int __builtin_ldbuio (volatile const void *) +int __builtin_ldhio (volatile const void *) +int __builtin_ldhuio (volatile const void *) +int __builtin_ldwio (volatile const void *) +void __builtin_stbio (volatile void *, int) +void __builtin_sthio (volatile void *, int) +void __builtin_stwio (volatile void *, int) +void __builtin_sync (void) +int __builtin_rdctl (int) +void __builtin_wrctl (int, int) +@end example + +The following built-in functions are always available. They +all generate a Nios II Custom Instruction. The name of the +function represents the types that the function takes and +returns. The letter before the @code{n} is the return type +or void if absent. The @code{n} represents the first parameter +to all the custom instructions, the custom instruction number. +The two letters after the @code{n} represent the up to two +parameters to the function. + +The letters represent the following data types: +@table @code +@item +@code{void} for return type and no parameter for parameter types. + +@item i +@code{int} for return type and parameter type + +@item f +@code{float} for return type and parameter type + +@item p +@code{void *} for return type and parameter type + +@end table + +And the function names are: +@example +void __builtin_custom_n (void) +void __builtin_custom_ni (int) +void __builtin_custom_nf (float) +void __builtin_custom_np (void *) +void __builtin_custom_nii (int, int) +void __builtin_custom_nif (int, float) +void __builtin_custom_nip (int, void *) +void __builtin_custom_nfi (float, int) +void __builtin_custom_nff (float, float) +void __builtin_custom_nfp (float, void *) +void __builtin_custom_npi (void *, int) +void __builtin_custom_npf (void *, float) +void __builtin_custom_npp (void *, void *) +int __builtin_custom_in (void) +int __builtin_custom_ini (int) +int __builtin_custom_inf (float) +int __builtin_custom_inp (void *) +int __builtin_custom_inii (int, int) +int __builtin_custom_inif (int, float) +int __builtin_custom_inip (int, void *) +int __builtin_custom_infi (float, int) +int __builtin_custom_inff (float, float) +int __builtin_custom_infp (float, void *) +int __builtin_custom_inpi (void *, int) +int __builtin_custom_inpf (void *, float) +int __builtin_custom_inpp (void *, void *) +float __builtin_custom_fn (void) +float __builtin_custom_fni (int) +float __builtin_custom_fnf (float) +float __builtin_custom_fnp (void *) +float __builtin_custom_fnii (int, int) +float __builtin_custom_fnif (int, float) +float __builtin_custom_fnip (int, void *) +float __builtin_custom_fnfi (float, int) +float __builtin_custom_fnff (float, float) +float __builtin_custom_fnfp (float, void *) +float __builtin_custom_fnpi (void *, int) +float __builtin_custom_fnpf (void *, float) +float __builtin_custom_fnpp (void *, void *) +void * __builtin_custom_pn (void) +void * __builtin_custom_pni (int) +void * __builtin_custom_pnf (float) +void * __builtin_custom_pnp (void *) +void * __builtin_custom_pnii (int, int) +void * __builtin_custom_pnif (int, float) +void * __builtin_custom_pnip (int, void *) +void * __builtin_custom_pnfi (float, int) +void * __builtin_custom_pnff (float, float) +void * __builtin_custom_pnfp (float, void *) +void * __builtin_custom_pnpi (void *, int) +void * __builtin_custom_pnpf (void *, float) +void * __builtin_custom_pnpp (void *, void *) +@end example + @node ARC Built-in Functions @subsection ARC Built-in Functions @@ -16290,9 +16419,8 @@ function. The parenthesis around the options is optional. @xref{Function Attributes}, for more information about the @code{target} attribute and the attribute syntax. -The @code{#pragma GCC target} attribute is not implemented in GCC versions earlier -than 4.4 for the i386/x86_64 and 4.6 for the PowerPC back ends. At -present, it is not implemented for other back ends. +The @code{#pragma GCC target} pragma is presently implemented for +i386/x86_64, PowerPC, and Nios II targets only. @end table @table @code diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index d4ca2bf40da..0fd18248197 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -840,6 +840,16 @@ Objective-C and Objective-C++ Dialects}. -mforce-fp-as-gp -mforbid-fp-as-gp @gol -mex9 -mctor-dtor -mrelax} +@emph{Nios II Options} +@gccoptlist{-G @var{num} -mgpopt -mno-gpopt -mel -meb @gol +-mno-bypass-cache -mbypass-cache @gol +-mno-cache-volatile -mcache-volatile @gol +-mno-fast-sw-div -mfast-sw-div @gol +-mhw-mul -mno-hw-mul -mhw-mulx -mno-hw-mulx -mno-hw-div -mhw-div @gol +-mcustom-@var{insn}=@var{N} -mno-custom-@var{insn} @gol +-mcustom-fpu-cfg=@var{name} @gol +-mhal -msmallc -msys-crt0=@var{name} -msys-lib=@var{name}} + @emph{PDP-11 Options} @gccoptlist{-mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10 @gol -mbcopy -mbcopy-builtin -mint32 -mno-int16 @gol @@ -11230,6 +11240,7 @@ platform. * Moxie Options:: * MSP430 Options:: * NDS32 Options:: +* Nios II Options:: * PDP-11 Options:: * picoChip Options:: * PowerPC Options:: @@ -18214,6 +18225,285 @@ Guide linker to relax instructions. @end table +@node Nios II Options +@subsection Nios II Options +@cindex Nios II options +@cindex Altera Nios II options + +These are the options defined for the Altera Nios II processor. + +@table @gcctabopt + +@item -G @var{num} +@opindex G +@cindex smaller data references +Put global and static objects less than or equal to @var{num} bytes +into the small data or BSS sections instead of the normal data or BSS +sections. The default value of @var{num} is 8. + +@item -mgpopt +@itemx -mno-gpopt +@opindex mgpopt +@opindex mno-gpopt +Generate (do not generate) GP-relative accesses for objects in the +small data or BSS sections. The default is @option{-mgpopt} except +when @option{-fpic} or @option{-fPIC} is specified to generate +position-independent code. Note that the Nios II ABI does not permit +GP-relative accesses from shared libraries. + +You may need to specify @option{-mno-gpopt} explicitly when building +programs that include large amounts of small data, including large +GOT data sections. In this case, the 16-bit offset for GP-relative +addressing may not be large enough to allow access to the entire +small data section. + +@item -mel +@itemx -meb +@opindex mel +@opindex meb +Generate little-endian (default) or big-endian (experimental) code, +respectively. + +@item -mbypass-cache +@itemx -mno-bypass-cache +@opindex mno-bypass-cache +@opindex mbypass-cache +Force all load and store instructions to always bypass cache by +using I/O variants of the instructions. The default is not to +bypass the cache. + +@item -mno-cache-volatile +@itemx -mcache-volatile +@opindex mcache-volatile +@opindex mno-cache-volatile +Volatile memory access bypass the cache using the I/O variants of +the load and store instructions. The default is not to bypass the cache. + +@item -mno-fast-sw-div +@itemx -mfast-sw-div +@opindex mno-fast-sw-div +@opindex mfast-sw-div +Do not use table-based fast divide for small numbers. The default +is to use the fast divide at @option{-O3} and above. + +@item -mno-hw-mul +@itemx -mhw-mul +@itemx -mno-hw-mulx +@itemx -mhw-mulx +@itemx -mno-hw-div +@itemx -mhw-div +@opindex mno-hw-mul +@opindex mhw-mul +@opindex mno-hw-mulx +@opindex mhw-mulx +@opindex mno-hw-div +@opindex mhw-div +Enable or disable emitting @code{mul}, @code{mulx} and @code{div} family of +instructions by the compiler. The default is to emit @code{mul} +and not emit @code{div} and @code{mulx}. + +@item -mcustom-@var{insn}=@var{N} +@itemx -mno-custom-@var{insn} +@opindex mcustom-@var{insn} +@opindex mno-custom-@var{insn} +Each @option{-mcustom-@var{insn}=@var{N}} option enables use of a +custom instruction with encoding @var{N} when generating code that uses +@var{insn}. For example, @code{-mcustom-fadds=253} generates custom +instruction 253 for single-precision floating-point add operations instead +of the default behavior of using a library call. + +The following values of @var{insn} are supported. Except as otherwise +noted, floating-point operations are expected to be implemented with +normal IEEE 754 semantics and correspond directly to the C operators or the +equivalent GCC built-in functions (@pxref{Other Builtins}). + +Single-precision floating point: +@table @asis + +@item @samp{fadds}, @samp{fsubs}, @samp{fdivs}, @samp{fmuls} +Binary arithmetic operations. + +@item @samp{fnegs} +Unary negation. + +@item @samp{fabss} +Unary absolute value. + +@item @samp{fcmpeqs}, @samp{fcmpges}, @samp{fcmpgts}, @samp{fcmples}, @samp{fcmplts}, @samp{fcmpnes} +Comparison operations. + +@item @samp{fmins}, @samp{fmaxs} +Floating-point minimum and maximum. These instructions are only +generated if @option{-ffinite-math-only} is specified. + +@item @samp{fsqrts} +Unary square root operation. + +@item @samp{fcoss}, @samp{fsins}, @samp{ftans}, @samp{fatans}, @samp{fexps}, @samp{flogs} +Floating-point trigonometric and exponential functions. These instructions +are only generated if @option{-funsafe-math-optimizations} is also specified. + +@end table + +Double-precision floating point: +@table @asis + +@item @samp{faddd}, @samp{fsubd}, @samp{fdivd}, @samp{fmuld} +Binary arithmetic operations. + +@item @samp{fnegd} +Unary negation. + +@item @samp{fabsd} +Unary absolute value. + +@item @samp{fcmpeqd}, @samp{fcmpged}, @samp{fcmpgtd}, @samp{fcmpled}, @samp{fcmpltd}, @samp{fcmpned} +Comparison operations. + +@item @samp{fmind}, @samp{fmaxd} +Double-precision minimum and maximum. These instructions are only +generated if @option{-ffinite-math-only} is specified. + +@item @samp{fsqrtd} +Unary square root operation. + +@item @samp{fcosd}, @samp{fsind}, @samp{ftand}, @samp{fatand}, @samp{fexpd}, @samp{flogd} +Double-precision trigonometric and exponential functions. These instructions +are only generated if @option{-funsafe-math-optimizations} is also specified. + +@end table + +Conversions: +@table @asis +@item @samp{fextsd} +Conversion from single precision to double precision. + +@item @samp{ftruncds} +Conversion from double precision to single precision. + +@item @samp{fixsi}, @samp{fixsu}, @samp{fixdi}, @samp{fixdu} +Conversion from floating point to signed or unsigned integer types, with +truncation towards zero. + +@item @samp{floatis}, @samp{floatus}, @samp{floatid}, @samp{floatud} +Conversion from signed or unsigned integer types to floating-point types. + +@end table + +In addition, all of the following transfer instructions for internal +registers X and Y must be provided to use any of the double-precision +floating-point instructions. Custom instructions taking two +double-precision source operands expect the first operand in the +64-bit register X. The other operand (or only operand of a unary +operation) is given to the custom arithmetic instruction with the +least significant half in source register @var{src1} and the most +significant half in @var{src2}. A custom instruction that returns a +double-precision result returns the most significant 32 bits in the +destination register and the other half in 32-bit register Y. +GCC automatically generates the necessary code sequences to write +register X and/or read register Y when double-precision floating-point +instructions are used. + +@table @asis + +@item @samp{fwrx} +Write @var{src1} into the least significant half of X and @var{src2} into +the most significant half of X. + +@item @samp{fwry} +Write @var{src1} into Y. + +@item @samp{frdxhi}, @samp{frdxlo} +Read the most or least (respectively) significant half of X and store it in +@var{dest}. + +@item @samp{frdy} +Read the value of Y and store it into @var{dest}. +@end table + +Note that you can gain more local control over generation of Nios II custom +instructions by using the @code{target("custom-@var{insn}=@var{N}")} +and @code{target("no-custom-@var{insn}")} function attributes +(@pxref{Function Attributes}) +or pragmas (@pxref{Function Specific Option Pragmas}). + +@item -mcustom-fpu-cfg=@var{name} +@opindex mcustom-fpu-cfg + +This option enables a predefined, named set of custom instruction encodings +(see @option{-mcustom-@var{insn}} above). +Currently, the following sets are defined: + +@option{-mcustom-fpu-cfg=60-1} is equivalent to: +@gccoptlist{-mcustom-fmuls=252 @gol +-mcustom-fadds=253 @gol +-mcustom-fsubs=254 @gol +-fsingle-precision-constant} + +@option{-mcustom-fpu-cfg=60-2} is equivalent to: +@gccoptlist{-mcustom-fmuls=252 @gol +-mcustom-fadds=253 @gol +-mcustom-fsubs=254 @gol +-mcustom-fdivs=255 @gol +-fsingle-precision-constant} + +@option{-mcustom-fpu-cfg=72-3} is equivalent to: +@gccoptlist{-mcustom-floatus=243 @gol +-mcustom-fixsi=244 @gol +-mcustom-floatis=245 @gol +-mcustom-fcmpgts=246 @gol +-mcustom-fcmples=249 @gol +-mcustom-fcmpeqs=250 @gol +-mcustom-fcmpnes=251 @gol +-mcustom-fmuls=252 @gol +-mcustom-fadds=253 @gol +-mcustom-fsubs=254 @gol +-mcustom-fdivs=255 @gol +-fsingle-precision-constant} + +Custom instruction assignments given by individual +@option{-mcustom-@var{insn}=} options override those given by +@option{-mcustom-fpu-cfg=}, regardless of the +order of the options on the command line. + +Note that you can gain more local control over selection of a FPU +configuration by using the @code{target("custom-fpu-cfg=@var{name}")} +function attribute (@pxref{Function Attributes}) +or pragma (@pxref{Function Specific Option Pragmas}). + +@end table + +These additional @samp{-m} options are available for the Altera Nios II +ELF (bare-metal) target: + +@table @gcctabopt + +@item -mhal +@opindex mhal +Link with HAL BSP. This suppresses linking with the GCC-provided C runtime +startup and termination code, and is typically used in conjunction with +@option{-msys-crt0=} to specify the location of the alternate startup code +provided by the HAL BSP. + +@item -msmallc +@opindex msmallc +Link with a limited version of the C library, @option{-lsmallc}, rather than +Newlib. + +@item -msys-crt0=@var{startfile} +@opindex msys-crt0 +@var{startfile} is the file name of the startfile (crt0) to use +when linking. This option is only useful in conjunction with @option{-mhal}. + +@item -msys-lib=@var{systemlib} +@opindex msys-lib +@var{systemlib} is the library name of the library that provides +low-level system calls required by the C library, +e.g. @code{read} and @code{write}. +This option is typically used to link with a library provided by a HAL BSP. + +@end table + @node PDP-11 Options @subsection PDP-11 Options @cindex PDP-11 Options diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 44a91830b48..74ba5a1d2fb 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -3233,6 +3233,52 @@ Memory constraint for 45 format. Memory constraint for 37 format. @end table +@item Nios II family---@file{config/nios2/constraints.md} +@table @code + +@item I +Integer that is valid as an immediate operand in an +instruction taking a signed 16-bit number. Range +@minus{}32768 to 32767. + +@item J +Integer that is valid as an immediate operand in an +instruction taking an unsigned 16-bit number. Range +0 to 65535. + +@item K +Integer that is valid as an immediate operand in an +instruction taking only the upper 16-bits of a +32-bit number. Range 32-bit numbers with the lower +16-bits being 0. + +@item L +Integer that is valid as an immediate operand for a +shift instruction. Range 0 to 31. + +@item M +Integer that is valid as an immediate operand for +only the value 0. Can be used in conjunction with +the format modifier @code{z} to use @code{r0} +instead of @code{0} in the assembly output. + +@item N +Integer that is valid as an immediate operand for +a custom instruction opcode. Range 0 to 255. + +@item S +Matches immediates which are addresses in the small +data section and therefore can be added to @code{gp} +as a 16-bit immediate to re-create their 32-bit value. + +@ifset INTERNALS +@item T +A @code{const} wrapped @code{UNSPEC} expression, +representing a supported PIC or TLS relocation. +@end ifset + +@end table + @item PDP-11---@file{config/pdp11/constraints.md} @table @code @item a diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bd670ebd4f3..1060e569aaa 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,58 @@ +2013-12-31 Sandra Loosemore + Chung-Lin Tang + Based on patches from Altera Corporation + + * gcc.dg/stack-usage-1.c (SIZE): Define case for __nios2__. + * gcc.dg/20040813-1.c: Skip for nios2-*-*. + * gcc.dg/20020312-2.c: Add __nios2__ case. + * g++.dg/other/PR23205.C: Skip for nios2-*-*. + * g++.dg/other/pr23205-2.C: Skip for nios2-*-*. + * g++.dg/cpp0x/constexpr-rom.C: Skip for nios2-*-*. + * g++.dg/cpp0x/alias-decl-debug-0.C: Skip for nios2-*-*. + * g++.old-deja/g++.jason/thunk3.C: Skip for nios2-*-*. + * lib/target-supports.exp (check_profiling_available): Check for + nios2-*-elf. + * gcc.c-torture/execute/pr47237.x:: Skip for nios2-*-*. + * gcc.c-torture/execute/20101011-1.c: Skip for nios2-*-*. + * gcc.c-torture/execute/builtins/lib/chk.c (memset): Place + char-based memset loop before inline check, to prevent + problems when called to initialize .bss. Update comments. + * gcc.target/nios2/nios2.exp: New DejaGNU file. + * gcc.target/nios2/nios2-custom-1.c: New test. + * gcc.target/nios2/nios2-trap-insn.c: New test. + * gcc.target/nios2/nios2-builtin-custom.c: New test. + * gcc.target/nios2/nios2-builtin-io.c: New test. + * gcc.target/nios2/nios2-stack-check-1.c: New test. + * gcc.target/nios2/nios2-stack-check-2.c: New test. + * gcc.target/nios2/nios2-rdctl.c: New test. + * gcc.target/nios2/nios2-wrctl.c: New test. + * gcc.target/nios2/nios2-wrctl-zero.c: New test. + * gcc.target/nios2/nios2-wrctl-not-zero.c: New test. + * gcc.target/nios2/nios2-rdwrctl-1.c: New test. + * gcc.target/nios2/nios2-reg-constraints.c: New test. + * gcc.target/nios2/nios2-ashlsi3-one_shift.c: New test. + * gcc.target/nios2/nios2-mul-options-1.c: New test. + * gcc.target/nios2/nios2-mul-options-2.c: New test. + * gcc.target/nios2/nios2-mul-options-3.c: New test. + * gcc.target/nios2/nios2-mul-options-4.c: New test. + * gcc.target/nios2/nios2-nor.c: New test. + * gcc.target/nios2/nios2-stxio.c: New test. + * gcc.target/nios2/custom-fp-1.c: New test. + * gcc.target/nios2/custom-fp-2.c: New test. + * gcc.target/nios2/custom-fp-3.c: New test. + * gcc.target/nios2/custom-fp-4.c: New test. + * gcc.target/nios2/custom-fp-5.c: New test. + * gcc.target/nios2/custom-fp-6.c: New test. + * gcc.target/nios2/custom-fp-7.c: New test. + * gcc.target/nios2/custom-fp-8.c: New test. + * gcc.target/nios2/custom-fp-cmp-1.c: New test. + * gcc.target/nios2/custom-fp-conversion.c: New test. + * gcc.target/nios2/custom-fp-double.c: New test. + * gcc.target/nios2/custom-fp-float.c: New test. + * gcc.target/nios2/nios2-int-types.c: New test. + * gcc.target/nios2/nios2-cache-1.c: New test. + * gcc.target/nios2/nios2-cache-2.c: New test. + 2013-12-30 Mike Stump PR c++/41090 diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-debug-0.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-debug-0.C index 04e9b7065bf..5b5d15a6271 100644 --- a/gcc/testsuite/g++.dg/cpp0x/alias-decl-debug-0.C +++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-debug-0.C @@ -1,5 +1,5 @@ // Origin: PR c++/51032 -// { dg-skip-if "No stabs" { aarch64*-*-* mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } } +// { dg-skip-if "No stabs" { aarch64*-*-* mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* nios2-*-* } { "*" } { "" } } // { dg-options "-std=c++11 -gstabs+" } template diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C index 0f5384a9062..5f4a1d18fcf 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C @@ -1,6 +1,6 @@ // PR c++/49673: check that test_data goes into .rodata // { dg-options -std=c++11 } -// { dg-additional-options -G0 { target { { alpha*-*-* frv*-*-* ia64-*-* lm32*-*-* m32r*-*-* microblaze*-*-* mips*-*-* powerpc*-*-* rs6000*-*-* score*-*-* } && { ! { *-*-darwin* *-*-aix* alpha*-*-*vms* } } } } } +// { dg-additional-options -G0 { target { { alpha*-*-* frv*-*-* ia64-*-* lm32*-*-* m32r*-*-* microblaze*-*-* mips*-*-* nios2-*-* powerpc*-*-* rs6000*-*-* score*-*-* } && { ! { *-*-darwin* *-*-aix* alpha*-*-*vms* } } } } } // { dg-final { scan-assembler "\\.rdata" { target mips*-*-* } } } // { dg-final { scan-assembler "rodata" { target { { *-*-linux-gnu *-*-gnu* *-*-elf } && { ! mips*-*-* } } } } } diff --git a/gcc/testsuite/g++.dg/other/PR23205.C b/gcc/testsuite/g++.dg/other/PR23205.C index e55710b40f0..b05087b5420 100644 --- a/gcc/testsuite/g++.dg/other/PR23205.C +++ b/gcc/testsuite/g++.dg/other/PR23205.C @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-skip-if "No stabs" { aarch64*-*-* mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* tile*-*-* *-*-vxworks } { "*" } { "" } } */ +/* { dg-skip-if "No stabs" { aarch64*-*-* mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* nios2-*-* tile*-*-* *-*-vxworks } { "*" } { "" } } */ /* { dg-options "-gstabs+ -fno-eliminate-unused-debug-types" } */ const int foobar = 4; diff --git a/gcc/testsuite/g++.dg/other/pr23205-2.C b/gcc/testsuite/g++.dg/other/pr23205-2.C index 607e5a2b4e4..c7eefaa58c9 100644 --- a/gcc/testsuite/g++.dg/other/pr23205-2.C +++ b/gcc/testsuite/g++.dg/other/pr23205-2.C @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-skip-if "No stabs" { aarch64*-*-* mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* tile*-*-* } { "*" } { "" } } */ +/* { dg-skip-if "No stabs" { aarch64*-*-* mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* tile*-*-* nios2-*-* } { "*" } { "" } } */ /* { dg-options "-gstabs+ -fno-eliminate-unused-debug-types -ftoplevel-reorder" } */ const int foobar = 4; diff --git a/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C b/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C index f0c1187b01e..7e0b93afe72 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C @@ -1,5 +1,5 @@ // { dg-do run } -// { dg-skip-if "fails with generic thunk support" { rs6000-*-* powerpc-*-eabi v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa*-*-* m32r*-*-* lm32-*-* } { "*" } { "" } } +// { dg-skip-if "fails with generic thunk support" { rs6000-*-* powerpc-*-eabi v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa*-*-* m32r*-*-* lm32-*-* nios2-*-* } { "*" } { "" } } // Test that variadic function calls using thunks work right. // Note that this will break on any target that uses the generic thunk // support, because it doesn't support variadic functions. diff --git a/gcc/testsuite/gcc.c-torture/execute/20101011-1.c b/gcc/testsuite/gcc.c-torture/execute/20101011-1.c index 56b48ca72bf..1952dbd7029 100644 --- a/gcc/testsuite/gcc.c-torture/execute/20101011-1.c +++ b/gcc/testsuite/gcc.c-torture/execute/20101011-1.c @@ -63,6 +63,10 @@ __aeabi_idiv0 (int return_value) } # define DO_TEST 1 # endif +#elif defined (__nios2__) + /* Nios II requires both hardware support and user configuration to + raise an exception on divide by zero. */ +# define DO_TEST 0 #else # define DO_TEST 1 #endif diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/chk.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/chk.c index 9db60c8e3f4..b19d7bf813f 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/chk.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/chk.c @@ -124,16 +124,17 @@ __memmove_chk (void *dst, const void *src, __SIZE_TYPE__ n, __SIZE_TYPE__ size) void * memset (void *dst, int c, __SIZE_TYPE__ n) { + while (n-- != 0) + n[(char *) dst] = c; + /* Single-byte memsets should be done inline when optimisation - is enabled. */ + is enabled. Do this after the copy in case we're being called to + initialize bss. */ #ifdef __OPTIMIZE__ if (memset_disallowed && inside_main && n < 2) abort (); #endif - while (n-- != 0) - n[(char *) dst] = c; - return dst; } diff --git a/gcc/testsuite/gcc.c-torture/execute/pr47237.x b/gcc/testsuite/gcc.c-torture/execute/pr47237.x new file mode 100644 index 00000000000..d5d6988f93f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr47237.x @@ -0,0 +1,6 @@ +if { [istarget "nios2-*-*"] } { + # This test can cause the stack to underflow on Nios II. + set torture_execute_xfail [istarget] +} + +return 0 diff --git a/gcc/testsuite/gcc.dg/20020312-2.c b/gcc/testsuite/gcc.dg/20020312-2.c index 7562a8d65f6..63fbfcc5c4b 100644 --- a/gcc/testsuite/gcc.dg/20020312-2.c +++ b/gcc/testsuite/gcc.dg/20020312-2.c @@ -54,6 +54,8 @@ extern void abort (void); /* No pic register. */ #elif defined(__nds32__) /* No pic register. */ +#elif defined(__nios2__) +/* No pic register. */ #elif defined(__hppa__) /* PIC register is %r27 or %r19, but is used even without -fpic. */ #elif defined(__pdp11__) diff --git a/gcc/testsuite/gcc.dg/20040813-1.c b/gcc/testsuite/gcc.dg/20040813-1.c index c1a9fd0409a..8be831d96b6 100644 --- a/gcc/testsuite/gcc.dg/20040813-1.c +++ b/gcc/testsuite/gcc.dg/20040813-1.c @@ -2,7 +2,7 @@ /* Contributed by Devang Patel */ /* { dg-do compile } */ -/* { dg-skip-if "No stabs" { aarch64*-*-* mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* tile*-*-* *-*-vxworks* } { "*" } { "" } } */ +/* { dg-skip-if "No stabs" { aarch64*-*-* mmix-*-* *-*-aix* alpha*-*-* hppa*64*-*-* ia64-*-* tile*-*-* nios2-*-* *-*-vxworks* } { "*" } { "" } } */ /* { dg-options "-gstabs" } */ int diff --git a/gcc/testsuite/gcc.dg/stack-usage-1.c b/gcc/testsuite/gcc.dg/stack-usage-1.c index 7956efc4089..05e3df7bef0 100644 --- a/gcc/testsuite/gcc.dg/stack-usage-1.c +++ b/gcc/testsuite/gcc.dg/stack-usage-1.c @@ -79,6 +79,8 @@ # define SIZE 248 #elif defined (xstormy16) # define SIZE 254 +#elif defined (__nios2__) +# define SIZE 252 #else # define SIZE 256 #endif diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-1.c b/gcc/testsuite/gcc.target/nios2/custom-fp-1.c new file mode 100644 index 00000000000..c9afa682977 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-1.c @@ -0,0 +1,22 @@ +/* Test specification of custom instructions via command-line options. */ + +/* { dg-do compile } */ +/* { dg-options "-O1 -ffinite-math-only -mcustom-fmaxs=246 -mcustom-fmins=247 -mcustom-fsqrts=251" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#include +#include + +void +custom_fp (float operand_a, float operand_b, float *result) +{ + result[0] = fmaxf (operand_a, operand_b); + result[1] = fminf (operand_a, operand_b); + result[2] = sqrtf (operand_a); +} + +/* { dg-final { scan-assembler "custom\\t246, .* # fmaxs .*" } } */ +/* { dg-final { scan-assembler "custom\\t247, .* # fmins .*" } } */ +/* { dg-final { scan-assembler "custom\\t251, .* # fsqrts .*" } } */ diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-2.c b/gcc/testsuite/gcc.target/nios2/custom-fp-2.c new file mode 100644 index 00000000000..fc7c643705e --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-2.c @@ -0,0 +1,26 @@ +/* Test specification of custom instructions via pragmas. */ + +/* { dg-do compile } */ +/* { dg-options "-O1 -ffinite-math-only" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#include +#include + +#pragma GCC target ("custom-fmaxs=246") +#pragma GCC target ("custom-fmins=247") +#pragma GCC target ("custom-fsqrts=251") + +void +custom_fp (float operand_a, float operand_b, float *result) +{ + result[0] = fmaxf (operand_a, operand_b); + result[1] = fminf (operand_a, operand_b); + result[2] = sqrtf (operand_a); +} + +/* { dg-final { scan-assembler "custom\\t246, .* # fmaxs .*" } } */ +/* { dg-final { scan-assembler "custom\\t247, .* # fmins .*" } } */ +/* { dg-final { scan-assembler "custom\\t251, .* # fsqrts .*" } } */ diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-3.c b/gcc/testsuite/gcc.target/nios2/custom-fp-3.c new file mode 100644 index 00000000000..703bc9fa5bd --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-3.c @@ -0,0 +1,26 @@ +/* Test specification of custom instructions via function attributes. */ + +/* { dg-do compile } */ +/* { dg-options "-O1 -ffinite-math-only" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#include +#include + +extern void +custom_fp (float operand_a, float operand_b, float *result) + __attribute__ ((target ("custom-fmaxs=246,custom-fmins=247,custom-fsqrts=251"))); + +void +custom_fp (float operand_a, float operand_b, float *result) +{ + result[0] = fmaxf (operand_a, operand_b); + result[1] = fminf (operand_a, operand_b); + result[2] = sqrtf (operand_a); +} + +/* { dg-final { scan-assembler "custom\\t246, .* # fmaxs .*" } } */ +/* { dg-final { scan-assembler "custom\\t247, .* # fmins .*" } } */ +/* { dg-final { scan-assembler "custom\\t251, .* # fsqrts .*" } } */ diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-4.c b/gcc/testsuite/gcc.target/nios2/custom-fp-4.c new file mode 100644 index 00000000000..6c5f2a24be4 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-4.c @@ -0,0 +1,29 @@ +/* Test conflict between pragma and attribute specification of custom + instructions. */ + +/* { dg-do compile } */ +/* { dg-options "-O1 -ffinite-math-only" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#include +#include + +/* This test case is expected to cause an error because GCC does not know + how to merge different custom instruction attribute sets. The extern + declaration sees the options specified by both the pragma and the function + attribute, but the function definition sees only the pragma options. */ + +#pragma GCC target ("custom-fmaxs=246") + +extern void +custom_fp (float operand_a, float operand_b, float *result) + __attribute__ ((target ("custom-fmins=247"))); + +void +custom_fp (float operand_a, float operand_b, float *result) +{ /* { dg-error "conflicting" } */ + result[0] = fmaxf (operand_a, operand_b); + result[1] = fminf (operand_a, operand_b); +} diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-5.c b/gcc/testsuite/gcc.target/nios2/custom-fp-5.c new file mode 100644 index 00000000000..1dba87a4e44 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-5.c @@ -0,0 +1,26 @@ +/* Test that forward declaration and definition don't conflict when used + with pragma specification of custom instructions. */ + +/* { dg-do compile } */ +/* { dg-options "-O1 -ffinite-math-only" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#include +#include + +#pragma GCC target ("custom-fmaxs=246,custom-fmins=247") + +extern void +custom_fp (float operand_a, float operand_b, float *result); + +void +custom_fp (float operand_a, float operand_b, float *result) +{ + result[0] = fmaxf (operand_a, operand_b); + result[1] = fminf (operand_a, operand_b); +} + +/* { dg-final { scan-assembler "custom\\t246, .* # fmaxs .*" } } */ +/* { dg-final { scan-assembler "custom\\t247, .* # fmins .*" } } */ diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-6.c b/gcc/testsuite/gcc.target/nios2/custom-fp-6.c new file mode 100644 index 00000000000..7540c57b282 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-6.c @@ -0,0 +1,30 @@ +/* Test conflict between pragma and attribute specification of custom + instructions. */ + +/* { dg-do compile } */ +/* { dg-options "-O1 -ffinite-math-only" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#include +#include + +/* This test case is expected to cause an error because GCC does not know + how to merge different custom instruction attribute sets, even if they + do not overlap. */ + +extern void +custom_fp (float operand_a, float operand_b, float *result) + __attribute__ ((target ("custom-fmaxs=246"))); + +extern void +custom_fp (float operand_a, float operand_b, float *result) + __attribute__ ((target ("custom-fmins=247"))); /* { dg-error "conflicting" } */ + +void +custom_fp (float operand_a, float operand_b, float *result) +{ + result[0] = fmaxf (operand_a, operand_b); + result[1] = fminf (operand_a, operand_b); +} diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-7.c b/gcc/testsuite/gcc.target/nios2/custom-fp-7.c new file mode 100644 index 00000000000..6f17336fbb9 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-7.c @@ -0,0 +1,33 @@ +/* Test that duplicate declarations with the same custom insn attributes + don't cause an error. */ + +/* { dg-do compile } */ +/* { dg-options "-O1 -ffinite-math-only" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#include +#include + +/* This test case is expected to cause an error because GCC does not know + how to merge different custom instruction attribute sets, even if they + do not overlap. */ + +extern void +custom_fp (float operand_a, float operand_b, float *result) + __attribute__ ((target ("custom-fmaxs=246,custom-fmins=247"))); + +extern void +custom_fp (float operand_a, float operand_b, float *result) + __attribute__ ((target ("custom-fmaxs=246,custom-fmins=247"))); + +void +custom_fp (float operand_a, float operand_b, float *result) +{ + result[0] = fmaxf (operand_a, operand_b); + result[1] = fminf (operand_a, operand_b); +} + +/* { dg-final { scan-assembler "custom\\t246, .* # fmaxs .*" } } */ +/* { dg-final { scan-assembler "custom\\t247, .* # fmins .*" } } */ diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-8.c b/gcc/testsuite/gcc.target/nios2/custom-fp-8.c new file mode 100644 index 00000000000..32f8a041479 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-8.c @@ -0,0 +1,24 @@ +/* Test whitespace skipping in target attributes. */ + +/* { dg-do compile } */ + +#pragma GCC target ("custom-fdivs=246") +#pragma GCC target (" custom-fdivs=246") +#pragma GCC target ("custom-fdivs =246") +#pragma GCC target ("custom-fdivs= 246") +#pragma GCC target ("custom-fdivs=246 ") + +#pragma GCC target ("custom-fdivs=246,custom-fabss=247") +#pragma GCC target ("custom-fdivs=246 ,custom-fabss=247") +#pragma GCC target ("custom-fdivs=246, custom-fabss=247") +#pragma GCC target ("custom-fdivs=246 , custom-fabss=247") + +void foo (void) __attribute__ ((target ("custom-fcmpnes=226,custom-fcmpeqs=227"))); +void foo (void) __attribute__ ((target ("custom-fcmpnes =226 ,custom-fcmpeqs=227"))); +void foo (void) __attribute__ ((target ("custom-fcmpnes= 226, custom-fcmpeqs=227"))); +void foo (void) __attribute__ ((target (" custom-fcmpnes=226 , custom-fcmpeqs = 227"))); +void foo (void) __attribute__ ((target (" custom-fcmpnes=226 ,custom-fcmpeqs =227 "))); + +#pragma GCC target ("custom-fpu-cfg=60-1") +#pragma GCC target ("custom-fpu-cfg =60-1 ") +#pragma GCC target (" custom-fpu-cfg= 60-1 ") diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-cmp-1.c b/gcc/testsuite/gcc.target/nios2/custom-fp-cmp-1.c new file mode 100644 index 00000000000..b290c41e475 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-cmp-1.c @@ -0,0 +1,53 @@ +/* Test generation of floating-point compare custom instructions. */ + +/* { dg-do compile } */ +/* { dg-options "-O1" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#pragma GCC target ("custom-frdxhi=40") +#pragma GCC target ("custom-frdxlo=41") +#pragma GCC target ("custom-frdy=42") +#pragma GCC target ("custom-fwrx=43") +#pragma GCC target ("custom-fwry=44") + +#pragma GCC target ("custom-fcmpeqs=200") + +int +test_fcmpeqs (float a, float b) +{ + return (a == b); +} + +/* { dg-final { scan-assembler "custom\\t200, .* # fcmpeqs .*" } } */ + +#pragma GCC target ("custom-fcmpgtd=201") + +int +test_fcmpgtd (double a, double b) +{ + return (a > b); +} + +/* { dg-final { scan-assembler "custom\\t201, .* # fcmpgtd .*" } } */ + +#pragma GCC target ("custom-fcmples=202") + +int +test_fcmples (float a, float b) +{ + return (a <= b); +} + +/* { dg-final { scan-assembler "custom\\t202, .* # fcmples .*" } } */ + +#pragma GCC target ("custom-fcmpned=203") + +int +test_fcmpned (double a, double b) +{ + return (a != b); +} + +/* { dg-final { scan-assembler "custom\\t203, .* # fcmpned .*" } } */ diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-conversion.c b/gcc/testsuite/gcc.target/nios2/custom-fp-conversion.c new file mode 100644 index 00000000000..20b2159960e --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-conversion.c @@ -0,0 +1,66 @@ +/* Test generation of conversion custom instructions. */ + +/* { dg-do compile } */ +/* { dg-options "-O1 -ffinite-math-only -funsafe-math-optimizations" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#include +#include + +#pragma GCC target ("custom-frdxhi=40") +#pragma GCC target ("custom-frdxlo=41") +#pragma GCC target ("custom-frdy=42") +#pragma GCC target ("custom-fwrx=43") +#pragma GCC target ("custom-fwry=44") + +#pragma GCC target ("custom-fextsd=100") +#pragma GCC target ("custom-fixdi=101") +#pragma GCC target ("custom-fixdu=102") +#pragma GCC target ("custom-fixsi=103") +#pragma GCC target ("custom-fixsu=104") +#pragma GCC target ("custom-floatid=105") +#pragma GCC target ("custom-floatis=106") +#pragma GCC target ("custom-floatud=107") +#pragma GCC target ("custom-floatus=108") +#pragma GCC target ("custom-ftruncds=109") + +typedef struct data { + double fextsd; + int fixdi; + unsigned fixdu; + int fixsi; + unsigned fixsu; + double floatid; + float floatis; + double floatud; + float floatus; + float ftruncds; +} data_t; + +void +custom_fp (int i, unsigned u, float f, double d, data_t *out) +{ + out->fextsd = (double) f; + out->fixdi = (int) d; + out->fixdu = (unsigned) d; + out->fixsi = (int) f; + out->fixsu = (unsigned) f; + out->floatid = (double) i; + out->floatis = (float) i; + out->floatud = (double) u; + out->floatus = (float) u; + out->ftruncds = (float) d; +} + +/* { dg-final { scan-assembler "custom\\t100, .* # fextsd .*" } } */ +/* { dg-final { scan-assembler "custom\\t101, .* # fixdi .*" } } */ +/* { dg-final { scan-assembler "custom\\t102, .* # fixdu .*" } } */ +/* { dg-final { scan-assembler "custom\\t103, .* # fixsi .*" } } */ +/* { dg-final { scan-assembler "custom\\t104, .* # fixsu .*" } } */ +/* { dg-final { scan-assembler "custom\\t105, .* # floatid .*" } } */ +/* { dg-final { scan-assembler "custom\\t106, .* # floatis .*" } } */ +/* { dg-final { scan-assembler "custom\\t107, .* # floatud .*" } } */ +/* { dg-final { scan-assembler "custom\\t108, .* # floatus .*" } } */ +/* { dg-final { scan-assembler "custom\\t109, .* # ftruncds .*" } } */ diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-double.c b/gcc/testsuite/gcc.target/nios2/custom-fp-double.c new file mode 100644 index 00000000000..d907c572af1 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-double.c @@ -0,0 +1,86 @@ +/* Test generation of all double-float custom instructions. */ + +/* { dg-do compile } */ +/* { dg-options "-O1 -ffinite-math-only -funsafe-math-optimizations" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#include +#include + +#pragma GCC target ("custom-frdxhi=40") +#pragma GCC target ("custom-frdxlo=41") +#pragma GCC target ("custom-frdy=42") +#pragma GCC target ("custom-fwrx=43") +#pragma GCC target ("custom-fwry=44") + +#pragma GCC target ("custom-fabsd=100") +#pragma GCC target ("custom-faddd=101") +#pragma GCC target ("custom-fatand=102") +#pragma GCC target ("custom-fcosd=103") +#pragma GCC target ("custom-fdivd=104") +#pragma GCC target ("custom-fexpd=105") +#pragma GCC target ("custom-flogd=106") +#pragma GCC target ("custom-fmaxd=107") +#pragma GCC target ("custom-fmind=108") +#pragma GCC target ("custom-fmuld=109") +#pragma GCC target ("custom-fnegd=110") +#pragma GCC target ("custom-fsind=111") +#pragma GCC target ("custom-fsqrtd=112") +#pragma GCC target ("custom-fsubd=113") +#pragma GCC target ("custom-ftand=114") +#pragma GCC target ("custom-fcmpeqd=200") +#pragma GCC target ("custom-fcmpged=201") +#pragma GCC target ("custom-fcmpgtd=202") +#pragma GCC target ("custom-fcmpled=203") +#pragma GCC target ("custom-fcmpltd=204") +#pragma GCC target ("custom-fcmpned=205") + +void +custom_fp (double a, double b, double *fp, int *ip) +{ + fp[0] = fabs (a); + fp[1] = a + b; + fp[2] = atan (a); + fp[3] = cos (a); + fp[4] = a / b; + fp[5] = exp (a); + fp[6] = log (a); + fp[7] = fmax (a, b); + fp[8] = fmin (a, b); + fp[9] = a * b; + fp[10] = -b; + fp[11] = sin (b); + fp[12] = sqrt (a); + fp[13] = a - b; + fp[14] = tan (a); + ip[0] = (a == fp[0]); + ip[1] = (a >= fp[1]); + ip[2] = (a > fp[2]); + ip[3] = (a <= fp[3]); + ip[4] = (a < fp[4]); + ip[5] = (a != fp[5]); +} + +/* { dg-final { scan-assembler "custom\\t100, .* # fabsd .*" } } */ +/* { dg-final { scan-assembler "custom\\t101, .* # faddd .*" } } */ +/* { dg-final { scan-assembler "custom\\t102, .* # fatand .*" } } */ +/* { dg-final { scan-assembler "custom\\t103, .* # fcosd .*" } } */ +/* { dg-final { scan-assembler "custom\\t104, .* # fdivd .*" } } */ +/* { dg-final { scan-assembler "custom\\t105, .* # fexpd .*" } } */ +/* { dg-final { scan-assembler "custom\\t106, .* # flogd .*" } } */ +/* { dg-final { scan-assembler "custom\\t107, .* # fmaxd .*" } } */ +/* { dg-final { scan-assembler "custom\\t108, .* # fmind .*" } } */ +/* { dg-final { scan-assembler "custom\\t109, .* # fmuld .*" } } */ +/* { dg-final { scan-assembler "custom\\t110, .* # fnegd .*" } } */ +/* { dg-final { scan-assembler "custom\\t111, .* # fsind .*" } } */ +/* { dg-final { scan-assembler "custom\\t112, .* # fsqrtd .*" } } */ +/* { dg-final { scan-assembler "custom\\t113, .* # fsubd .*" } } */ +/* { dg-final { scan-assembler "custom\\t114, .* # ftand .*" } } */ +/* { dg-final { scan-assembler "custom\\t200, .* # fcmpeqd .*" } } */ +/* { dg-final { scan-assembler "custom\\t201, .* # fcmpged .*" } } */ +/* { dg-final { scan-assembler "custom\\t202, .* # fcmpgtd .*" } } */ +/* { dg-final { scan-assembler "custom\\t203, .* # fcmpled .*" } } */ +/* { dg-final { scan-assembler "custom\\t204, .* # fcmpltd .*" } } */ +/* { dg-final { scan-assembler "custom\\t205, .* # fcmpned .*" } } */ diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-float.c b/gcc/testsuite/gcc.target/nios2/custom-fp-float.c new file mode 100644 index 00000000000..26919d2f20e --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-float.c @@ -0,0 +1,80 @@ +/* Test generation of all single-float custom instructions. */ + +/* { dg-do compile } */ +/* { dg-options "-O1 -ffinite-math-only -funsafe-math-optimizations" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#include +#include + +#pragma GCC target ("custom-fabss=100") +#pragma GCC target ("custom-fadds=101") +#pragma GCC target ("custom-fatans=102") +#pragma GCC target ("custom-fcoss=103") +#pragma GCC target ("custom-fdivs=104") +#pragma GCC target ("custom-fexps=105") +#pragma GCC target ("custom-flogs=106") +#pragma GCC target ("custom-fmaxs=107") +#pragma GCC target ("custom-fmins=108") +#pragma GCC target ("custom-fmuls=109") +#pragma GCC target ("custom-fnegs=110") +#pragma GCC target ("custom-fsins=111") +#pragma GCC target ("custom-fsqrts=112") +#pragma GCC target ("custom-fsubs=113") +#pragma GCC target ("custom-ftans=114") +#pragma GCC target ("custom-fcmpeqs=200") +#pragma GCC target ("custom-fcmpges=201") +#pragma GCC target ("custom-fcmpgts=202") +#pragma GCC target ("custom-fcmples=203") +#pragma GCC target ("custom-fcmplts=204") +#pragma GCC target ("custom-fcmpnes=205") + +void +custom_fp (float a, float b, float *fp, int *ip) +{ + fp[0] = fabsf (a); + fp[1] = a + b; + fp[2] = atanf (a); + fp[3] = cosf (a); + fp[4] = a / b; + fp[5] = expf (a); + fp[6] = logf (a); + fp[7] = fmaxf (a, b); + fp[8] = fminf (a, b); + fp[9] = a * b; + fp[10] = -b; + fp[11] = sinf (b); + fp[12] = sqrtf (a); + fp[13] = a - b; + fp[14] = tanf (a); + ip[0] = (a == fp[0]); + ip[1] = (a >= fp[1]); + ip[2] = (a > fp[2]); + ip[3] = (a <= fp[3]); + ip[4] = (a < fp[4]); + ip[5] = (a != fp[5]); +} + +/* { dg-final { scan-assembler "custom\\t100, .* # fabss .*" } } */ +/* { dg-final { scan-assembler "custom\\t101, .* # fadds .*" } } */ +/* { dg-final { scan-assembler "custom\\t102, .* # fatans .*" } } */ +/* { dg-final { scan-assembler "custom\\t103, .* # fcoss .*" } } */ +/* { dg-final { scan-assembler "custom\\t104, .* # fdivs .*" } } */ +/* { dg-final { scan-assembler "custom\\t105, .* # fexps .*" } } */ +/* { dg-final { scan-assembler "custom\\t106, .* # flogs .*" } } */ +/* { dg-final { scan-assembler "custom\\t107, .* # fmaxs .*" } } */ +/* { dg-final { scan-assembler "custom\\t108, .* # fmins .*" } } */ +/* { dg-final { scan-assembler "custom\\t109, .* # fmuls .*" } } */ +/* { dg-final { scan-assembler "custom\\t110, .* # fnegs .*" } } */ +/* { dg-final { scan-assembler "custom\\t111, .* # fsins .*" } } */ +/* { dg-final { scan-assembler "custom\\t112, .* # fsqrts .*" } } */ +/* { dg-final { scan-assembler "custom\\t113, .* # fsubs .*" } } */ +/* { dg-final { scan-assembler "custom\\t114, .* # ftans .*" } } */ +/* { dg-final { scan-assembler "custom\\t200, .* # fcmpeqs .*" } } */ +/* { dg-final { scan-assembler "custom\\t201, .* # fcmpges .*" } } */ +/* { dg-final { scan-assembler "custom\\t202, .* # fcmpgts .*" } } */ +/* { dg-final { scan-assembler "custom\\t203, .* # fcmples .*" } } */ +/* { dg-final { scan-assembler "custom\\t204, .* # fcmplts .*" } } */ +/* { dg-final { scan-assembler "custom\\t205, .* # fcmpnes .*" } } */ diff --git a/gcc/testsuite/gcc.target/nios2/nios2-ashlsi3-one_shift.c b/gcc/testsuite/gcc.target/nios2/nios2-ashlsi3-one_shift.c new file mode 100644 index 00000000000..6af6d4f9cb0 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-ashlsi3-one_shift.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options " " } */ +/* { dg-final { scan-assembler-not "slli" } } */ + +int x; + +void foo(void) +{ + x <<= 1; +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-builtin-custom.c b/gcc/testsuite/gcc.target/nios2/nios2-builtin-custom.c new file mode 100644 index 00000000000..18399facc00 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-builtin-custom.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-final { scan-assembler "custom" } } */ + +/* This test case used to cause an unrecognizable insn crash. */ + +void foo (void) +{ + int offset = __builtin_custom_in(0x1); +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-builtin-io.c b/gcc/testsuite/gcc.target/nios2/nios2-builtin-io.c new file mode 100644 index 00000000000..58bc83f8abc --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-builtin-io.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-final { scan-assembler "ldbio" } } */ +/* { dg-final { scan-assembler "ldbuio" } } */ +/* { dg-final { scan-assembler "ldhio" } } */ +/* { dg-final { scan-assembler "ldhuio" } } */ +/* { dg-final { scan-assembler "ldwio" } } */ +/* { dg-final { scan-assembler "stbio" } } */ +/* { dg-final { scan-assembler "sthio" } } */ +/* { dg-final { scan-assembler "stwio" } } */ + +volatile char b; +volatile short h; +volatile int w; + +void x () +{ + __builtin_ldbio (&b); + __builtin_ldbuio (&b); + __builtin_ldhio (&h); + __builtin_ldhuio (&h); + __builtin_ldwio (&w); + + __builtin_stbio (&b, 42); + __builtin_sthio (&h, 43); + __builtin_stwio (&w, 44); +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-cache-1.c b/gcc/testsuite/gcc.target/nios2/nios2-cache-1.c new file mode 100644 index 00000000000..5516a1367ca --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-cache-1.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +/* { dg-final { scan-assembler-not "ldwio" } } */ +/* { dg-final { scan-assembler-not "stwio" } } */ + +/* Make sure the default behavior is not to generate I/O variants of + the load and stores to foo. */ + +extern volatile int foo; + +int +read_foo (void) +{ + return foo; +} + +void +write_foo (int x) +{ + foo = x; +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-cache-2.c b/gcc/testsuite/gcc.target/nios2/nios2-cache-2.c new file mode 100644 index 00000000000..239c600ac56 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-cache-2.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mno-cache-volatile" } */ +/* { dg-final { scan-assembler "ldwio" } } */ +/* { dg-final { scan-assembler "stwio" } } */ + +/* Make sure -mno-cache-volatile generates I/O variants of the load and + stores to foo. */ + +extern volatile int foo; + +int +read_foo (void) +{ + return foo; +} + +void +write_foo (int x) +{ + foo = x; +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-custom-1.c b/gcc/testsuite/gcc.target/nios2/nios2-custom-1.c new file mode 100644 index 00000000000..c6e4b517e71 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-custom-1.c @@ -0,0 +1,64 @@ +/* { dg-do compile } */ + +float fres, f1, f2; +int ires, i1, i2; +void *pres, *p1, *p2; + +void x () +{ + __builtin_custom_n (0); + __builtin_custom_ni (1, i1); + __builtin_custom_nf (2, f1); + __builtin_custom_np (3, p1); + __builtin_custom_nii (4, i1, i2); + __builtin_custom_nif (5, i1, f2); + __builtin_custom_nip (6, i1, p2); + __builtin_custom_nfi (7, f1, i2); + __builtin_custom_nff (8, f1, f2); + __builtin_custom_nfp (9, f1, p2); + __builtin_custom_npi (10, p1, i2); + __builtin_custom_npf (11, p1, f2); + __builtin_custom_npp (12, p1, p2); + + ires = __builtin_custom_in (13+0); + ires = __builtin_custom_ini (13+1, i1); + ires = __builtin_custom_inf (13+2, f1); + ires = __builtin_custom_inp (13+3, p1); + ires = __builtin_custom_inii (13+4, i1, i2); + ires = __builtin_custom_inif (13+5, i1, f2); + ires = __builtin_custom_inip (13+6, i1, p2); + ires = __builtin_custom_infi (13+7, f1, i2); + ires = __builtin_custom_inff (13+8, f1, f2); + ires = __builtin_custom_infp (13+9, f1, p2); + ires = __builtin_custom_inpi (13+10, p1, i2); + ires = __builtin_custom_inpf (13+11, p1, f2); + ires = __builtin_custom_inpp (13+12, p1, p2); + + fres = __builtin_custom_fn (26+0); + fres = __builtin_custom_fni (26+1, i1); + fres = __builtin_custom_fnf (26+2, f1); + fres = __builtin_custom_fnp (26+3, p1); + fres = __builtin_custom_fnii (26+4, i1, i2); + fres = __builtin_custom_fnif (26+5, i1, f2); + fres = __builtin_custom_fnip (26+6, i1, p2); + fres = __builtin_custom_fnfi (26+7, f1, i2); + fres = __builtin_custom_fnff (26+8, f1, f2); + fres = __builtin_custom_fnfp (26+9, f1, p2); + fres = __builtin_custom_fnpi (26+10, p1, i2); + fres = __builtin_custom_fnpf (26+11, p1, f2); + fres = __builtin_custom_fnpp (26+12, p1, p2); + + pres = __builtin_custom_pn (39+0); + pres = __builtin_custom_pni (39+1, i1); + pres = __builtin_custom_pnf (39+2, f1); + pres = __builtin_custom_pnp (39+3, p1); + pres = __builtin_custom_pnii (39+4, i1, i2); + pres = __builtin_custom_pnif (39+5, i1, f2); + pres = __builtin_custom_pnip (39+6, i1, p2); + pres = __builtin_custom_pnfi (39+7, f1, i2); + pres = __builtin_custom_pnff (39+8, f1, f2); + pres = __builtin_custom_pnfp (39+9, f1, p2); + pres = __builtin_custom_pnpi (39+10, p1, i2); + pres = __builtin_custom_pnpf (39+11, p1, f2); + pres = __builtin_custom_pnpp (39+12, p1, p2); +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-custom-2.c b/gcc/testsuite/gcc.target/nios2/nios2-custom-2.c new file mode 100644 index 00000000000..7f5d21a5440 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-custom-2.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ + +float foo (float) __attribute__ ((target ("custom-fsqrts=128"))); +float foo (float x) +{ + return __builtin_custom_fsqrts (x) + __builtin_custom_fnf (128, x); +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-int-types.c b/gcc/testsuite/gcc.target/nios2/nios2-int-types.c new file mode 100644 index 00000000000..21b4a02be9f --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-int-types.c @@ -0,0 +1,34 @@ +/* Test that various types are all derived from int. */ +/* { dg-do compile } */ + +#include +#include +#include + +extern size_t a; +unsigned int a; +extern unsigned int aa; +size_t aa; + +extern ssize_t b; +int b; +extern int bb; +ssize_t bb; + +extern ptrdiff_t c; +int c; +extern int cc; +ptrdiff_t cc; + +extern intptr_t d; +int d; +extern int dd; +intptr_t dd; + +extern uintptr_t e; +unsigned int e; +extern unsigned int ee; +uintptr_t ee; + + + diff --git a/gcc/testsuite/gcc.target/nios2/nios2-mul-options-1.c b/gcc/testsuite/gcc.target/nios2/nios2-mul-options-1.c new file mode 100644 index 00000000000..b639482bfa6 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-mul-options-1.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "" } */ +/* { dg-final { scan-assembler "__muldi3" } } */ + +long long x, y, z; + +void test() +{ + x = y * z; +} + diff --git a/gcc/testsuite/gcc.target/nios2/nios2-mul-options-2.c b/gcc/testsuite/gcc.target/nios2/nios2-mul-options-2.c new file mode 100644 index 00000000000..f93b4e7c585 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-mul-options-2.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-mhw-mulx" } */ +/* { dg-final { scan-assembler-not "__muldi3" } } */ + +long long x, y, z; + +void test() +{ + x = y * z; +} + diff --git a/gcc/testsuite/gcc.target/nios2/nios2-mul-options-3.c b/gcc/testsuite/gcc.target/nios2/nios2-mul-options-3.c new file mode 100644 index 00000000000..2da74ba6b3b --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-mul-options-3.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "" } */ +/* { dg-final { scan-assembler-not "__mulsi3" } } */ + +int x, y, z; + +void test() +{ + x = y * z; +} + diff --git a/gcc/testsuite/gcc.target/nios2/nios2-mul-options-4.c b/gcc/testsuite/gcc.target/nios2/nios2-mul-options-4.c new file mode 100644 index 00000000000..7794f6d8756 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-mul-options-4.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-mno-hw-mul" } */ +/* { dg-final { scan-assembler "__mulsi3" } } */ + +int x, y, z; + +void test() +{ + x = y * z; +} + diff --git a/gcc/testsuite/gcc.target/nios2/nios2-nor.c b/gcc/testsuite/gcc.target/nios2/nios2-nor.c new file mode 100644 index 00000000000..3a1911e326d --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-nor.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-options "-O" } */ +/* { dg-final { scan-assembler "nor" } } */ + +int foo (int x, int y) +{ + return ~(x | y); +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-rdctl.c b/gcc/testsuite/gcc.target/nios2/nios2-rdctl.c new file mode 100644 index 00000000000..6b44d88e65a --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-rdctl.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-final { scan-assembler "rdctl" } } */ + +int x () +{ + __builtin_rdctl (0); + return 0; +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-rdwrctl-1.c b/gcc/testsuite/gcc.target/nios2/nios2-rdwrctl-1.c new file mode 100644 index 00000000000..922942ab980 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-rdwrctl-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ + +volatile int res; + +void x () +{ + __builtin_wrctl (0, res); + __builtin_wrctl (15, res); + __builtin_wrctl (31, res); + + res = __builtin_rdctl (0); + res = __builtin_rdctl (15); + res = __builtin_rdctl (31); +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-stack-check-1.c b/gcc/testsuite/gcc.target/nios2/nios2-stack-check-1.c new file mode 100644 index 00000000000..415906fc5ee --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-stack-check-1.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-fstack-limit-register=et" } */ +/* { dg-final { scan-assembler "bgeu\\tsp, et" } } */ +/* { dg-final { scan-assembler "break\\t3" } } */ +/* check stack checking */ +void test() +{ + int a, b, c; +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-stack-check-2.c b/gcc/testsuite/gcc.target/nios2/nios2-stack-check-2.c new file mode 100644 index 00000000000..b903db5cdc4 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-stack-check-2.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options " " } */ +/* { dg-final { scan-assembler-not "bgeu\\tsp, et" } } */ +/* { dg-final { scan-assembler-not "break\\t3" } } */ +/* check stack checking */ +void test() +{ + int a, b, c; +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-stxio.c b/gcc/testsuite/gcc.target/nios2/nios2-stxio.c new file mode 100644 index 00000000000..af079d641c7 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-stxio.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ + +void test_stbio (unsigned char* p1, unsigned char* p2) +{ + __builtin_stbio (p1, *p2); + __builtin_stbio (p2, 0); + __builtin_stbio (p2 + 1, 0x80); + __builtin_stbio (p2 + 2, 0x7f); +} + +void test_sthio (unsigned short* p1, unsigned short* p2) +{ + __builtin_sthio (p1, *p2); + __builtin_sthio (p2, 0); + __builtin_sthio (p2 + 1, 0x8000); + __builtin_sthio (p2 + 2, 0x7fff); +} + +void test_stwio (unsigned int* p1, unsigned int* p2) +{ + __builtin_stwio (p1, *p2); + __builtin_stwio (p2, 0); + __builtin_stwio (p2 + 1, 0x80000000); + __builtin_stwio (p2 + 2, 0x7fffffff); +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-trap-insn.c b/gcc/testsuite/gcc.target/nios2/nios2-trap-insn.c new file mode 100644 index 00000000000..dd881d166c8 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-trap-insn.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-final { scan-assembler "break\\t3" } } */ + +/* Test the nios2 trap instruction */ +void foo(void){ + __builtin_trap(); +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-wrctl-not-zero.c b/gcc/testsuite/gcc.target/nios2/nios2-wrctl-not-zero.c new file mode 100644 index 00000000000..f32a9ca4e50 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-wrctl-not-zero.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options " " } */ +/* { dg-final { scan-assembler-not "wrctl\\tctl6, zero" } } */ + +void foo(void){ + __builtin_wrctl(6,4); +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-wrctl-zero.c b/gcc/testsuite/gcc.target/nios2/nios2-wrctl-zero.c new file mode 100644 index 00000000000..93f01b07708 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-wrctl-zero.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "-O1" } */ +/* { dg-final { scan-assembler "wrctl\\tctl6, zero" } } */ + +void foo(void){ + __builtin_wrctl(6,0); +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2-wrctl.c b/gcc/testsuite/gcc.target/nios2/nios2-wrctl.c new file mode 100644 index 00000000000..5ebdc24b8be --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2-wrctl.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "" } */ +/* { dg-final { scan-assembler "wrctl" } } */ + +void foo(void){ + __builtin_wrctl(6,4); +} diff --git a/gcc/testsuite/gcc.target/nios2/nios2.exp b/gcc/testsuite/gcc.target/nios2/nios2.exp new file mode 100644 index 00000000000..558da111e28 --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/nios2.exp @@ -0,0 +1,41 @@ +# Copyright (C) 2012-2013 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# GCC testsuite that uses the `dg.exp' driver. + +# Exit immediately if this isn't a Nios II target. +if ![istarget nios2*-*-*] then { + return +} + +# Load support procs. +load_lib gcc-dg.exp + +# If a testcase doesn't have special options, use these. +global DEFAULT_CFLAGS +if ![info exists DEFAULT_CFLAGS] then { + set DEFAULT_CFLAGS " -ansi -pedantic-errors" +} + +# Initialize `dg'. +dg-init + +# Main loop. +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \ + "" $DEFAULT_CFLAGS + +# All done. +dg-finish diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index af80a698075..3fe71d74147 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -531,6 +531,7 @@ proc check_profiling_available { test_what } { || [istarget moxie-*-elf*] || [istarget msp430-*-*] || [istarget nds32*-*-elf] + || [istarget nios2-*-elf] || [istarget picochip-*-*] || [istarget powerpc-*-eabi*] || [istarget powerpc-*-elf] -- cgit v1.2.1 From f750fe99449324d741dba8cce75c64961b80ee69 Mon Sep 17 00:00:00 2001 From: nickc Date: Tue, 31 Dec 2013 08:48:09 +0000 Subject: Fix typo in PR number (59613) of recent commit. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206258 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cdd781dba91..33946f28d0e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -37,7 +37,7 @@ 2013-12-30 Nick Clifton Peter Bigot - PR target/59631 + PR target/59613 * stor-layout.c (get_mode_bounds): Use GET_MODE_PRECISION instead of GET_MODE_BITSIZE. -- cgit v1.2.1 From 1706116db656978bf56667cdc36742be0a507a9b Mon Sep 17 00:00:00 2001 From: kyukhin Date: Tue, 31 Dec 2013 11:09:42 +0000 Subject: gcc/ * config/i386/i386.c (MAX_CLASSES): Increase number of classes. (classify_argument): Extend for 512 bit vectors. (construct_container): Ditto. (function_arg_advance_32): Ditto. (function_arg_advance_64): Ditto. (function_arg_32): Ditto. (function_arg_64): Ditto. (function_value_32): Ditto. (return_in_memory_32): Ditto. (ix86_gimplify_va_arg): Ditto. (standard_sse_constant_p): Ditto. (standard_sse_constant_opcode): Ditto. (ix86_expand_vector_convert_uns_vsivsf): Ditto. (ix86_build_const_vector): Ditto. (ix86_build_signbit_mask): Ditto. (ix86_expand_sse_cmp): Extend for AVX512. (ix86_expand_sse_movcc): Ditto. (ix86_expand_int_vcond): Ditto. (ix86_expand_vec_perm): Ditto. (ix86_expand_sse_unpack): Ditto. (ix86_constant_alignment): Ditto. (ix86_builtin_vectorized_function): Ditto. (ix86_vectorize_builtin_gather): Ditto. (avx_vpermilp_parallel): Ditto. (ix86_rtx_costs): Ditto. (ix86_expand_vector_init_duplicate): Ditto. (ix86_expand_vector_init_concat): Ditto. (ix86_expand_vector_init_general): Ditto. (ix86_expand_vector_extract): Ditto. (emit_reduc_half): Ditto. (ix86_vector_mode_supported_p): Ditto. (ix86_emit_swdivsf): Ditto. (ix86_emit_swsqrtsf): Ditto. (expand_vec_perm_1): Ditto. (ix86_vectorize_vec_perm_const_ok): Ditto. (ix86_expand_mul_widen_evenodd): Ditto. (ix86_expand_sse2_mulvxdi3): Ditto. (ix86_preferred_simd_mode): Ditto. (ix86_autovectorize_vector_sizes): Ditto. (ix86_expand_vec_perm_vpermi2): New. (ix86_vector_duplicate_value): Ditto. (IX86_BUILTIN_SQRTPD512, IX86_BUILTIN_EXP2PS, IX86_BUILTIN_SQRTPS_NR512, IX86_BUILTIN_GATHER3ALTDIV16SF, IX86_BUILTIN_GATHER3ALTDIV16SI, IX86_BUILTIN_GATHER3ALTSIV8DF, IX86_BUILTIN_GATHER3ALTSIV8DI, IX86_BUILTIN_GATHER3DIV16SF, IX86_BUILTIN_GATHER3DIV16SI, IX86_BUILTIN_GATHER3DIV8DF, IX86_BUILTIN_GATHER3DIV8DI, IX86_BUILTIN_GATHER3SIV16SF, IX86_BUILTIN_GATHER3SIV16SI, IX86_BUILTIN_GATHER3SIV8DF, IX86_BUILTIN_CEILPD_VEC_PACK_SFIX512, IX86_BUILTIN_CPYSGNPS512, IX86_BUILTIN_CPYSGNPD512, IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX512, IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX512): Ditto. * config/i386/sse.md (*mov_internal): Disable SSE typeless stores vectors > 128bit (AVX*). (_storeu): Ditto. (_storedqu): Extend for AVX-512, disable SSE typeless stores vectors > 128bit (AVX*). (fixuns_trunc2): Extend for AVX-512. (vec_pack_ufix_trunc_): Ditto. (vec_unpacku_float_hi_v16si): New. * tree-vect-stmts.c (vectorizable_load): Support AVX512's gathers. * tree-vectorizer.h (MAX_VECTORIZATION_FACTOR): Extend for 512 bit vectors. testsuite/ * gcc.target/i386/pr49002-2.c: allow vmovapd generation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206260 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 73 ++++ gcc/config/i386/i386.c | 673 ++++++++++++++++++++++++++---- gcc/config/i386/sse.md | 115 +++-- gcc/testsuite/ChangeLog | 12 + gcc/testsuite/gcc.target/i386/pr49002-2.c | 2 +- gcc/tree-vect-stmts.c | 34 +- gcc/tree-vectorizer.h | 4 +- 7 files changed, 802 insertions(+), 111 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 33946f28d0e..1bb86a88fc9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,76 @@ +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.c (MAX_CLASSES): Increase number of classes. + (classify_argument): Extend for 512 bit vectors. + (construct_container): Ditto. + (function_arg_advance_32): Ditto. + (function_arg_advance_64): Ditto. + (function_arg_32): Ditto. + (function_arg_64): Ditto. + (function_value_32): Ditto. + (return_in_memory_32): Ditto. + (ix86_gimplify_va_arg): Ditto. + (standard_sse_constant_p): Ditto. + (standard_sse_constant_opcode): Ditto. + (ix86_expand_vector_convert_uns_vsivsf): Ditto. + (ix86_build_const_vector): Ditto. + (ix86_build_signbit_mask): Ditto. + (ix86_expand_sse_cmp): Extend for AVX512. + (ix86_expand_sse_movcc): Ditto. + (ix86_expand_int_vcond): Ditto. + (ix86_expand_vec_perm): Ditto. + (ix86_expand_sse_unpack): Ditto. + (ix86_constant_alignment): Ditto. + (ix86_builtin_vectorized_function): Ditto. + (ix86_vectorize_builtin_gather): Ditto. + (avx_vpermilp_parallel): Ditto. + (ix86_rtx_costs): Ditto. + (ix86_expand_vector_init_duplicate): Ditto. + (ix86_expand_vector_init_concat): Ditto. + (ix86_expand_vector_init_general): Ditto. + (ix86_expand_vector_extract): Ditto. + (emit_reduc_half): Ditto. + (ix86_vector_mode_supported_p): Ditto. + (ix86_emit_swdivsf): Ditto. + (ix86_emit_swsqrtsf): Ditto. + (expand_vec_perm_1): Ditto. + (ix86_vectorize_vec_perm_const_ok): Ditto. + (ix86_expand_mul_widen_evenodd): Ditto. + (ix86_expand_sse2_mulvxdi3): Ditto. + (ix86_preferred_simd_mode): Ditto. + (ix86_autovectorize_vector_sizes): Ditto. + (ix86_expand_vec_perm_vpermi2): New. + (ix86_vector_duplicate_value): Ditto. + (IX86_BUILTIN_SQRTPD512, IX86_BUILTIN_EXP2PS, IX86_BUILTIN_SQRTPS_NR512, + IX86_BUILTIN_GATHER3ALTDIV16SF, IX86_BUILTIN_GATHER3ALTDIV16SI, + IX86_BUILTIN_GATHER3ALTSIV8DF, IX86_BUILTIN_GATHER3ALTSIV8DI, + IX86_BUILTIN_GATHER3DIV16SF, IX86_BUILTIN_GATHER3DIV16SI, + IX86_BUILTIN_GATHER3DIV8DF, IX86_BUILTIN_GATHER3DIV8DI, + IX86_BUILTIN_GATHER3SIV16SF, IX86_BUILTIN_GATHER3SIV16SI, + IX86_BUILTIN_GATHER3SIV8DF, IX86_BUILTIN_CEILPD_VEC_PACK_SFIX512, + IX86_BUILTIN_CPYSGNPS512, IX86_BUILTIN_CPYSGNPD512, + IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX512, + IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX512): Ditto. + * config/i386/sse.md (*mov_internal): Disable SSE typeless + stores vectors > 128bit (AVX*). + (_storeu): Ditto. + (_storedqu): Extend for AVX-512, disable + SSE typeless stores vectors > 128bit (AVX*). + (fixuns_trunc2): Extend for AVX-512. + (vec_pack_ufix_trunc_): Ditto. + (vec_unpacku_float_hi_v16si): New. + * tree-vect-stmts.c (vectorizable_load): Support AVX512's gathers. + * tree-vectorizer.h (MAX_VECTORIZATION_FACTOR): Extend for 512 bit + vectors. + 2013-12-31 Chung-Lin Tang Sandra Loosemore Based on patches from Altera Corporation diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 0a90ead8970..dd48cc51656 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2308,7 +2308,7 @@ enum x86_64_reg_class X86_64_MEMORY_CLASS }; -#define MAX_CLASSES 4 +#define MAX_CLASSES 8 /* Table of constants used by fldpi, fldln2, etc.... */ static REAL_VALUE_TYPE ext_80387_constants_table [5]; @@ -6242,7 +6242,7 @@ merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2) sized containers, classes[0] will be NO_CLASS and 1 is returned. BIT_OFFSET is used internally for handling records and specifies offset - of the offset in bits modulo 256 to avoid overflow cases. + of the offset in bits modulo 512 to avoid overflow cases. See the x86-64 PS ABI for details. */ @@ -6342,7 +6342,7 @@ classify_argument (enum machine_mode mode, const_tree type, num = classify_argument (TYPE_MODE (type), type, subclasses, (int_bit_position (field) - + bit_offset) % 256); + + bit_offset) % 512); if (!num) return 0; pos = (int_bit_position (field) @@ -6592,6 +6592,21 @@ classify_argument (enum machine_mode mode, const_tree type, classes[2] = X86_64_SSEUP_CLASS; classes[3] = X86_64_SSEUP_CLASS; return 4; + case V8DFmode: + case V16SFmode: + case V8DImode: + case V16SImode: + case V32HImode: + case V64QImode: + classes[0] = X86_64_SSE_CLASS; + classes[1] = X86_64_SSEUP_CLASS; + classes[2] = X86_64_SSEUP_CLASS; + classes[3] = X86_64_SSEUP_CLASS; + classes[4] = X86_64_SSEUP_CLASS; + classes[5] = X86_64_SSEUP_CLASS; + classes[6] = X86_64_SSEUP_CLASS; + classes[7] = X86_64_SSEUP_CLASS; + return 8; case V4SFmode: case V4SImode: case V16QImode: @@ -6777,6 +6792,18 @@ construct_container (enum machine_mode mode, enum machine_mode orig_mode, && mode != BLKmode) return gen_reg_or_parallel (mode, orig_mode, SSE_REGNO (sse_regno)); + if (n == 8 + && regclass[0] == X86_64_SSE_CLASS + && regclass[1] == X86_64_SSEUP_CLASS + && regclass[2] == X86_64_SSEUP_CLASS + && regclass[3] == X86_64_SSEUP_CLASS + && regclass[4] == X86_64_SSEUP_CLASS + && regclass[5] == X86_64_SSEUP_CLASS + && regclass[6] == X86_64_SSEUP_CLASS + && regclass[7] == X86_64_SSEUP_CLASS + && mode != BLKmode) + return gen_reg_or_parallel (mode, orig_mode, + SSE_REGNO (sse_regno)); if (n == 2 && regclass[0] == X86_64_X87_CLASS && regclass[1] == X86_64_X87UP_CLASS) @@ -6858,6 +6885,18 @@ construct_container (enum machine_mode mode, enum machine_mode orig_mode, tmpmode = OImode; i += 3; break; + case 8: + gcc_assert (i == 0 + && regclass[1] == X86_64_SSEUP_CLASS + && regclass[2] == X86_64_SSEUP_CLASS + && regclass[3] == X86_64_SSEUP_CLASS + && regclass[4] == X86_64_SSEUP_CLASS + && regclass[5] == X86_64_SSEUP_CLASS + && regclass[6] == X86_64_SSEUP_CLASS + && regclass[7] == X86_64_SSEUP_CLASS); + tmpmode = XImode; + i += 7; + break; default: gcc_unreachable (); } @@ -6931,6 +6970,12 @@ function_arg_advance_32 (CUMULATIVE_ARGS *cum, enum machine_mode mode, case V8SFmode: case V8SImode: + case V64QImode: + case V32HImode: + case V16SImode: + case V8DImode: + case V16SFmode: + case V8DFmode: case V32QImode: case V16HImode: case V4DFmode: @@ -6982,8 +7027,9 @@ function_arg_advance_64 (CUMULATIVE_ARGS *cum, enum machine_mode mode, { int int_nregs, sse_nregs; - /* Unnamed 256bit vector mode parameters are passed on stack. */ - if (!named && VALID_AVX256_REG_MODE (mode)) + /* Unnamed 512 and 256bit vector mode parameters are passed on stack. */ + if (!named && (VALID_AVX512F_REG_MODE (mode) + || VALID_AVX256_REG_MODE (mode))) return; if (examine_argument (mode, type, 0, &int_nregs, &sse_nregs) @@ -7134,9 +7180,16 @@ function_arg_32 (const CUMULATIVE_ARGS *cum, enum machine_mode mode, break; case OImode: - /* OImode shouldn't be used directly. */ + case XImode: + /* OImode and XImode shouldn't be used directly. */ gcc_unreachable (); + case V64QImode: + case V32HImode: + case V16SImode: + case V8DImode: + case V16SFmode: + case V8DFmode: case V8SFmode: case V8SImode: case V32QImode: @@ -7199,7 +7252,13 @@ function_arg_64 (const CUMULATIVE_ARGS *cum, enum machine_mode mode, case V16HImode: case V4DFmode: case V4DImode: - /* Unnamed 256bit vector mode parameters are passed on stack. */ + case V16SFmode: + case V16SImode: + case V64QImode: + case V32HImode: + case V8DFmode: + case V8DImode: + /* Unnamed 256 and 512bit vector mode parameters are passed on stack. */ if (!named) return NULL; break; @@ -7602,6 +7661,10 @@ function_value_32 (enum machine_mode orig_mode, enum machine_mode mode, else if (VECTOR_MODE_P (mode) && GET_MODE_SIZE (mode) == 32) regno = FIRST_SSE_REG; + /* 64-byte vector modes in %zmm0. */ + else if (VECTOR_MODE_P (mode) && GET_MODE_SIZE (mode) == 64) + regno = FIRST_SSE_REG; + /* Floating point return values in %st(0) (unless -mno-fp-ret-in-387). */ else if (X87_FLOAT_MODE_P (mode) && TARGET_FLOAT_RETURNS_IN_80387) regno = FIRST_FLOAT_REG; @@ -7809,6 +7872,10 @@ return_in_memory_32 (const_tree type, enum machine_mode mode) /* AVX values are returned in YMM0, except when it doesn't exist. */ if (size == 32) return !TARGET_AVX; + + /* AVX512F values are returned in ZMM0, except when it doesn't exist. */ + if (size == 64) + return !TARGET_AVX512F; } if (mode == XFmode) @@ -8345,7 +8412,13 @@ ix86_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p, case V16HImode: case V4DFmode: case V4DImode: - /* Unnamed 256bit vector mode parameters are passed on stack. */ + case V16SFmode: + case V16SImode: + case V64QImode: + case V32HImode: + case V8DFmode: + case V8DImode: + /* Unnamed 256 and 512bit vector mode parameters are passed on stack. */ if (!TARGET_64BIT_MS_ABI) { container = NULL; @@ -8760,6 +8833,12 @@ standard_sse_constant_p (rtx x) case V4DImode: if (TARGET_AVX2) return 2; + case V64QImode: + case V32HImode: + case V16SImode: + case V8DImode: + if (TARGET_AVX512F) + return 2; default: break; } @@ -8778,6 +8857,11 @@ standard_sse_constant_opcode (rtx insn, rtx x) case 1: switch (get_attr_mode (insn)) { + case MODE_XI: + case MODE_V16SF: + return "vpxord\t%g0, %g0, %g0"; + case MODE_V8DF: + return "vpxorq\t%g0, %g0, %g0"; case MODE_TI: return "%vpxor\t%0, %d0"; case MODE_V2DF: @@ -18693,17 +18777,23 @@ ix86_build_const_vector (enum machine_mode mode, bool vect, rtx value) switch (mode) { + case V64QImode: case V32QImode: case V16QImode: + case V32HImode: case V16HImode: case V8HImode: + case V16SImode: case V8SImode: case V4SImode: + case V8DImode: case V4DImode: case V2DImode: gcc_assert (vect); + case V16SFmode: case V8SFmode: case V4SFmode: + case V8DFmode: case V4DFmode: case V2DFmode: n_elt = GET_MODE_NUNITS (mode); @@ -18740,6 +18830,8 @@ ix86_build_signbit_mask (enum machine_mode mode, bool vect, bool invert) /* Find the sign bit, sign extended to 2*HWI. */ switch (mode) { + case V16SImode: + case V16SFmode: case V8SImode: case V4SImode: case V8SFmode: @@ -18750,8 +18842,10 @@ ix86_build_signbit_mask (enum machine_mode mode, bool vect, bool invert) lo = 0x80000000, hi = lo < 0; break; + case V8DImode: case V4DImode: case V2DImode: + case V8DFmode: case V4DFmode: case V2DFmode: vec_mode = mode; @@ -20608,22 +20702,63 @@ ix86_expand_sse_cmp (rtx dest, enum rtx_code code, rtx cmp_op0, rtx cmp_op1, rtx op_true, rtx op_false) { enum machine_mode mode = GET_MODE (dest); - enum machine_mode cmp_mode = GET_MODE (cmp_op0); + enum machine_mode cmp_ops_mode = GET_MODE (cmp_op0); + + /* In general case result of comparison can differ from operands' type. */ + enum machine_mode cmp_mode; + + /* In AVX512F the result of comparison is an integer mask. */ + bool maskcmp = false; rtx x; - cmp_op0 = force_reg (cmp_mode, cmp_op0); - if (!nonimmediate_operand (cmp_op1, cmp_mode)) - cmp_op1 = force_reg (cmp_mode, cmp_op1); + if (GET_MODE_SIZE (cmp_ops_mode) == 64) + { + cmp_mode = mode_for_size (GET_MODE_NUNITS (cmp_ops_mode), MODE_INT, 0); + gcc_assert (cmp_mode != BLKmode); + + maskcmp = true; + } + else + cmp_mode = cmp_ops_mode; + + + cmp_op0 = force_reg (cmp_ops_mode, cmp_op0); + if (!nonimmediate_operand (cmp_op1, cmp_ops_mode)) + cmp_op1 = force_reg (cmp_ops_mode, cmp_op1); if (optimize || reg_overlap_mentioned_p (dest, op_true) || reg_overlap_mentioned_p (dest, op_false)) - dest = gen_reg_rtx (mode); + dest = gen_reg_rtx (maskcmp ? cmp_mode : mode); + + /* Compare patterns for int modes are unspec in AVX512F only. */ + if (maskcmp && (code == GT || code == EQ)) + { + rtx (*gen)(rtx, rtx, rtx); + switch (cmp_ops_mode) + { + case V16SImode: + gen = code == GT ? gen_avx512f_gtv16si3 : gen_avx512f_eqv16si3_1; + break; + case V8DImode: + gen = code == GT ? gen_avx512f_gtv8di3 : gen_avx512f_eqv8di3_1; + break; + default: + gen = NULL; + } + + if (gen) + { + emit_insn (gen (dest, cmp_op0, cmp_op1)); + return dest; + } + } x = gen_rtx_fmt_ee (code, cmp_mode, cmp_op0, cmp_op1); - if (cmp_mode != mode) + + if (cmp_mode != mode && !maskcmp) { - x = force_reg (cmp_mode, x); + x = force_reg (cmp_ops_mode, x); convert_move (dest, x, false); } else @@ -20639,33 +20774,43 @@ static void ix86_expand_sse_movcc (rtx dest, rtx cmp, rtx op_true, rtx op_false) { enum machine_mode mode = GET_MODE (dest); + enum machine_mode cmpmode = GET_MODE (cmp); + + /* In AVX512F the result of comparison is an integer mask. */ + bool maskcmp = (mode != cmpmode && TARGET_AVX512F); + rtx t2, t3, x; if (vector_all_ones_operand (op_true, mode) - && rtx_equal_p (op_false, CONST0_RTX (mode))) + && rtx_equal_p (op_false, CONST0_RTX (mode)) + && !maskcmp) { emit_insn (gen_rtx_SET (VOIDmode, dest, cmp)); } - else if (op_false == CONST0_RTX (mode)) + else if (op_false == CONST0_RTX (mode) + && !maskcmp) { op_true = force_reg (mode, op_true); x = gen_rtx_AND (mode, cmp, op_true); emit_insn (gen_rtx_SET (VOIDmode, dest, x)); } - else if (op_true == CONST0_RTX (mode)) + else if (op_true == CONST0_RTX (mode) + && !maskcmp) { op_false = force_reg (mode, op_false); x = gen_rtx_NOT (mode, cmp); x = gen_rtx_AND (mode, x, op_false); emit_insn (gen_rtx_SET (VOIDmode, dest, x)); } - else if (INTEGRAL_MODE_P (mode) && op_true == CONSTM1_RTX (mode)) + else if (INTEGRAL_MODE_P (mode) && op_true == CONSTM1_RTX (mode) + && !maskcmp) { op_false = force_reg (mode, op_false); x = gen_rtx_IOR (mode, cmp, op_false); emit_insn (gen_rtx_SET (VOIDmode, dest, x)); } - else if (TARGET_XOP) + else if (TARGET_XOP + && !maskcmp) { op_true = force_reg (mode, op_true); @@ -20733,6 +20878,20 @@ ix86_expand_sse_movcc (rtx dest, rtx cmp, rtx op_true, rtx op_false) cmp = gen_lowpart (V32QImode, cmp); } break; + + case V16SImode: + gen = gen_avx512f_blendmv16si; + break; + case V8DImode: + gen = gen_avx512f_blendmv8di; + break; + case V8DFmode: + gen = gen_avx512f_blendmv8df; + break; + case V16SFmode: + gen = gen_avx512f_blendmv16sf; + break; + default: break; } @@ -21000,6 +21159,8 @@ ix86_expand_int_vcond (rtx operands[]) switch (mode) { + case V16SImode: + case V8DImode: case V8SImode: case V4DImode: case V4SImode: @@ -21010,6 +21171,8 @@ ix86_expand_int_vcond (rtx operands[]) switch (mode) { + case V16SImode: gen_sub3 = gen_subv16si3; break; + case V8DImode: gen_sub3 = gen_subv8di3; break; case V8SImode: gen_sub3 = gen_subv8si3; break; case V4DImode: gen_sub3 = gen_subv4di3; break; case V4SImode: gen_sub3 = gen_subv4si3; break; @@ -21065,7 +21228,8 @@ ix86_expand_int_vcond (rtx operands[]) gcc_assert (GET_MODE_SIZE (data_mode) == GET_MODE_SIZE (mode)); x = ix86_expand_sse_cmp (gen_reg_rtx (mode), code, cop0, cop1, operands[1+negate], operands[2-negate]); - x = gen_lowpart (data_mode, x); + if (GET_MODE (x) == mode) + x = gen_lowpart (data_mode, x); } ix86_expand_sse_movcc (operands[0], x, operands[1+negate], @@ -21073,6 +21237,35 @@ ix86_expand_int_vcond (rtx operands[]) return true; } +static bool +ix86_expand_vec_perm_vpermi2 (rtx target, rtx op0, rtx mask, rtx op1) +{ + enum machine_mode mode = GET_MODE (op0); + switch (mode) + { + case V16SImode: + emit_insn (gen_avx512f_vpermi2varv16si3 (target, op0, + force_reg (V16SImode, mask), + op1)); + return true; + case V16SFmode: + emit_insn (gen_avx512f_vpermi2varv16sf3 (target, op0, + force_reg (V16SImode, mask), + op1)); + return true; + case V8DImode: + emit_insn (gen_avx512f_vpermi2varv8di3 (target, op0, + force_reg (V8DImode, mask), op1)); + return true; + case V8DFmode: + emit_insn (gen_avx512f_vpermi2varv8df3 (target, op0, + force_reg (V8DImode, mask), op1)); + return true; + default: + return false; + } +} + /* Expand a variable vector permutation. */ void @@ -21091,7 +21284,10 @@ ix86_expand_vec_perm (rtx operands[]) /* Number of elements in the vector. */ w = GET_MODE_NUNITS (mode); e = GET_MODE_UNIT_SIZE (mode); - gcc_assert (w <= 32); + gcc_assert (w <= 64); + + if (ix86_expand_vec_perm_vpermi2 (target, op0, mask, op1)) + return; if (TARGET_AVX2) { @@ -21471,6 +21667,15 @@ ix86_expand_sse_unpack (rtx dest, rtx src, bool unsigned_p, bool high_p) extract = high_p ? gen_vec_extract_hi_v32qi : gen_vec_extract_lo_v32qi; break; + case V32HImode: + if (unsigned_p) + unpack = gen_avx512f_zero_extendv16hiv16si2; + else + unpack = gen_avx512f_sign_extendv16hiv16si2; + halfmode = V16HImode; + extract + = high_p ? gen_vec_extract_hi_v32hi : gen_vec_extract_lo_v32hi; + break; case V16HImode: if (unsigned_p) unpack = gen_avx2_zero_extendv8hiv8si2; @@ -21480,6 +21685,15 @@ ix86_expand_sse_unpack (rtx dest, rtx src, bool unsigned_p, bool high_p) extract = high_p ? gen_vec_extract_hi_v16hi : gen_vec_extract_lo_v16hi; break; + case V16SImode: + if (unsigned_p) + unpack = gen_avx512f_zero_extendv8siv8di2; + else + unpack = gen_avx512f_sign_extendv8siv8di2; + halfmode = V8SImode; + extract + = high_p ? gen_vec_extract_hi_v16si : gen_vec_extract_lo_v16si; + break; case V8SImode: if (unsigned_p) unpack = gen_avx2_zero_extendv4siv4di2; @@ -21511,7 +21725,7 @@ ix86_expand_sse_unpack (rtx dest, rtx src, bool unsigned_p, bool high_p) gcc_unreachable (); } - if (GET_MODE_SIZE (imode) == 32) + if (GET_MODE_SIZE (imode) >= 32) { tmp = gen_reg_rtx (halfmode); emit_insn (extract (tmp, src)); @@ -26245,7 +26459,8 @@ ix86_constant_alignment (tree exp, int align) int ix86_data_alignment (tree type, int align, bool opt) { - int max_align = optimize_size ? BITS_PER_WORD : MIN (256, MAX_OFILE_ALIGNMENT); + int max_align = optimize_size ? BITS_PER_WORD + : MIN (512, MAX_OFILE_ALIGNMENT); if (opt && AGGREGATE_TYPE_P (type) @@ -27707,12 +27922,27 @@ enum ix86_builtins IX86_BUILTIN_GATHERDIV4SI, IX86_BUILTIN_GATHERDIV8SI, + IX86_BUILTIN_SQRTPD512, + IX86_BUILTIN_EXP2PS, + IX86_BUILTIN_SQRTPS_NR512, + /* Alternate 4 element gather for the vectorizer where all operands are 32-byte wide. */ IX86_BUILTIN_GATHERALTSIV4DF, IX86_BUILTIN_GATHERALTDIV8SF, IX86_BUILTIN_GATHERALTSIV4DI, IX86_BUILTIN_GATHERALTDIV8SI, + IX86_BUILTIN_GATHER3ALTDIV16SF, + IX86_BUILTIN_GATHER3ALTDIV16SI, + IX86_BUILTIN_GATHER3ALTSIV8DF, + IX86_BUILTIN_GATHER3ALTSIV8DI, + IX86_BUILTIN_GATHER3DIV16SF, + IX86_BUILTIN_GATHER3DIV16SI, + IX86_BUILTIN_GATHER3DIV8DF, + IX86_BUILTIN_GATHER3DIV8DI, + IX86_BUILTIN_GATHER3SIV16SF, + IX86_BUILTIN_GATHER3SIV16SI, + IX86_BUILTIN_GATHER3SIV8DF, /* TFmode support builtins. */ IX86_BUILTIN_INFQ, @@ -27721,10 +27951,16 @@ enum ix86_builtins IX86_BUILTIN_COPYSIGNQ, /* Vectorizer support builtins. */ + IX86_BUILTIN_CEILPD_VEC_PACK_SFIX512, IX86_BUILTIN_CPYSGNPS, IX86_BUILTIN_CPYSGNPD, IX86_BUILTIN_CPYSGNPS256, + IX86_BUILTIN_CPYSGNPS512, IX86_BUILTIN_CPYSGNPD256, + IX86_BUILTIN_CPYSGNPD512, + IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX512, + IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX512, + /* FMA4 instructions. */ IX86_BUILTIN_VFMADDSS, @@ -33902,6 +34138,16 @@ ix86_builtin_vectorized_function (tree fndecl, tree type_out, return ix86_get_builtin (IX86_BUILTIN_SQRTPD); else if (out_n == 4 && in_n == 4) return ix86_get_builtin (IX86_BUILTIN_SQRTPD256); + else if (out_n == 8 && in_n == 8) + return ix86_get_builtin (IX86_BUILTIN_SQRTPD512); + } + break; + + case BUILT_IN_EXP2F: + if (out_mode == SFmode && in_mode == SFmode) + { + if (out_n == 16 && in_n == 16) + return ix86_get_builtin (IX86_BUILTIN_EXP2PS); } break; @@ -33912,6 +34158,8 @@ ix86_builtin_vectorized_function (tree fndecl, tree type_out, return ix86_get_builtin (IX86_BUILTIN_SQRTPS_NR); else if (out_n == 8 && in_n == 8) return ix86_get_builtin (IX86_BUILTIN_SQRTPS_NR256); + else if (out_n == 16 && in_n == 16) + return ix86_get_builtin (IX86_BUILTIN_SQRTPS_NR512); } break; @@ -33928,6 +34176,8 @@ ix86_builtin_vectorized_function (tree fndecl, tree type_out, return ix86_get_builtin (IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX); else if (out_n == 8 && in_n == 4) return ix86_get_builtin (IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX256); + else if (out_n == 16 && in_n == 8) + return ix86_get_builtin (IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX512); } break; @@ -33960,6 +34210,8 @@ ix86_builtin_vectorized_function (tree fndecl, tree type_out, return ix86_get_builtin (IX86_BUILTIN_CEILPD_VEC_PACK_SFIX); else if (out_n == 8 && in_n == 4) return ix86_get_builtin (IX86_BUILTIN_CEILPD_VEC_PACK_SFIX256); + else if (out_n == 16 && in_n == 8) + return ix86_get_builtin (IX86_BUILTIN_CEILPD_VEC_PACK_SFIX512); } break; @@ -34016,6 +34268,8 @@ ix86_builtin_vectorized_function (tree fndecl, tree type_out, return ix86_get_builtin (IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX); else if (out_n == 8 && in_n == 4) return ix86_get_builtin (IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX256); + else if (out_n == 16 && in_n == 8) + return ix86_get_builtin (IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX512); } break; @@ -34042,6 +34296,8 @@ ix86_builtin_vectorized_function (tree fndecl, tree type_out, return ix86_get_builtin (IX86_BUILTIN_CPYSGNPD); else if (out_n == 4 && in_n == 4) return ix86_get_builtin (IX86_BUILTIN_CPYSGNPD256); + else if (out_n == 8 && in_n == 8) + return ix86_get_builtin (IX86_BUILTIN_CPYSGNPD512); } break; @@ -34052,6 +34308,8 @@ ix86_builtin_vectorized_function (tree fndecl, tree type_out, return ix86_get_builtin (IX86_BUILTIN_CPYSGNPS); else if (out_n == 8 && in_n == 8) return ix86_get_builtin (IX86_BUILTIN_CPYSGNPS256); + else if (out_n == 16 && in_n == 16) + return ix86_get_builtin (IX86_BUILTIN_CPYSGNPS512); } break; @@ -34487,6 +34745,34 @@ ix86_vectorize_builtin_gather (const_tree mem_vectype, case V8SImode: code = si ? IX86_BUILTIN_GATHERSIV8SI : IX86_BUILTIN_GATHERALTDIV8SI; break; +#if 0 + /* FIXME: Commented until vectorizer can work with (mask_type != src_type) + PR59617. */ + case V8DFmode: + if (TARGET_AVX512F) + code = si ? IX86_BUILTIN_GATHER3ALTSIV8DF : IX86_BUILTIN_GATHER3DIV8DF; + else + return NULL_TREE; + break; + case V8DImode: + if (TARGET_AVX512F) + code = si ? IX86_BUILTIN_GATHER3ALTSIV8DI : IX86_BUILTIN_GATHER3DIV8DI; + else + return NULL_TREE; + break; + case V16SFmode: + if (TARGET_AVX512F) + code = si ? IX86_BUILTIN_GATHER3SIV16SF : IX86_BUILTIN_GATHER3ALTDIV16SF; + else + return NULL_TREE; + break; + case V16SImode: + if (TARGET_AVX512F) + code = si ? IX86_BUILTIN_GATHER3SIV16SI : IX86_BUILTIN_GATHER3ALTDIV16SI; + else + return NULL_TREE; + break; +#endif default: return NULL_TREE; } @@ -34542,7 +34828,7 @@ avx_vpermilp_parallel (rtx par, enum machine_mode mode) { unsigned i, nelt = GET_MODE_NUNITS (mode); unsigned mask = 0; - unsigned char ipar[8] = {}; /* Silence -Wuninitialized warning. */ + unsigned char ipar[16] = {}; /* Silence -Wuninitialized warning. */ if (XVECLEN (par, 0) != (int) nelt) return 0; @@ -34565,6 +34851,24 @@ avx_vpermilp_parallel (rtx par, enum machine_mode mode) switch (mode) { + case V8DFmode: + /* In the 512-bit DFmode case, we can only move elements within + a 128-bit lane. First fill the second part of the mask, + then fallthru. */ + for (i = 4; i < 6; ++i) + { + if (ipar[i] < 4 || ipar[i] >= 6) + return 0; + mask |= (ipar[i] - 4) << i; + } + for (i = 6; i < 8; ++i) + { + if (ipar[i] < 6) + return 0; + mask |= (ipar[i] - 6) << i; + } + /* FALLTHRU */ + case V4DFmode: /* In the 256-bit DFmode case, we can only move elements within a 128-bit lane. */ @@ -34582,10 +34886,18 @@ avx_vpermilp_parallel (rtx par, enum machine_mode mode) } break; + case V16SFmode: + /* In 512 bit SFmode case, permutation in the upper 256 bits + must mirror the permutation in the lower 256-bits. */ + for (i = 0; i < 8; ++i) + if (ipar[i] + 8 != ipar[i + 8]) + return 0; + /* FALLTHRU */ + case V8SFmode: - /* In the 256-bit SFmode case, we have full freedom of movement - within the low 128-bit lane, but the high 128-bit lane must - mirror the exact same pattern. */ + /* In 256 bit SFmode case, we have full freedom of + movement within the low 128-bit lane, but the high 128-bit + lane must mirror the exact same pattern. */ for (i = 0; i < 4; ++i) if (ipar[i] + 4 != ipar[i + 4]) return 0; @@ -35536,6 +35848,7 @@ static bool ix86_rtx_costs (rtx x, int code_i, int outer_code_i, int opno, int *total, bool speed) { + rtx mask; enum rtx_code code = (enum rtx_code) code_i; enum rtx_code outer_code = (enum rtx_code) outer_code_i; enum machine_mode mode = GET_MODE (x); @@ -36012,13 +36325,21 @@ ix86_rtx_costs (rtx x, int code_i, int outer_code_i, int opno, int *total, case VEC_SELECT: case VEC_CONCAT: - case VEC_MERGE: case VEC_DUPLICATE: /* ??? Assume all of these vector manipulation patterns are recognizable. In which case they all pretty much have the same cost. */ *total = cost->fabs; return true; + case VEC_MERGE: + mask = XEXP (x, 2); + /* This is masked instruction, assume the same cost, + as nonmasked variant. */ + if (TARGET_AVX512F && register_operand (mask, GET_MODE (mask))) + *total = rtx_cost (XEXP (x, 0), outer_code, opno, speed); + else + *total = cost->fabs; + return true; default: return false; @@ -37184,6 +37505,36 @@ get_mode_wider_vector (enum machine_mode o) return n; } +/* A subroutine of ix86_expand_vector_init_duplicate. Tries to + fill target with val via vec_duplicate. */ + +static bool +ix86_vector_duplicate_value (enum machine_mode mode, rtx target, rtx val) +{ + bool ok; + rtx insn, dup; + + /* First attempt to recognize VAL as-is. */ + dup = gen_rtx_VEC_DUPLICATE (mode, val); + insn = emit_insn (gen_rtx_SET (VOIDmode, target, dup)); + if (recog_memoized (insn) < 0) + { + rtx seq; + /* If that fails, force VAL into a register. */ + + start_sequence (); + XEXP (dup, 0) = force_reg (GET_MODE_INNER (mode), val); + seq = get_insns (); + end_sequence (); + if (seq) + emit_insn_before (seq, insn); + + ok = recog_memoized (insn) >= 0; + gcc_assert (ok); + } + return true; +} + /* A subroutine of ix86_expand_vector_init. Store into TARGET a vector with all elements equal to VAR. Return true if successful. */ @@ -37209,29 +37560,11 @@ ix86_expand_vector_init_duplicate (bool mmx_ok, enum machine_mode mode, case V2DImode: case V4SFmode: case V4SImode: - { - rtx insn, dup; - - /* First attempt to recognize VAL as-is. */ - dup = gen_rtx_VEC_DUPLICATE (mode, val); - insn = emit_insn (gen_rtx_SET (VOIDmode, target, dup)); - if (recog_memoized (insn) < 0) - { - rtx seq; - /* If that fails, force VAL into a register. */ - - start_sequence (); - XEXP (dup, 0) = force_reg (GET_MODE_INNER (mode), val); - seq = get_insns (); - end_sequence (); - if (seq) - emit_insn_before (seq, insn); - - ok = recog_memoized (insn) >= 0; - gcc_assert (ok); - } - } - return true; + case V16SImode: + case V8DImode: + case V16SFmode: + case V8DFmode: + return ix86_vector_duplicate_value (mode, target, val); case V4HImode: if (!mmx_ok) @@ -37581,8 +37914,8 @@ static void ix86_expand_vector_init_concat (enum machine_mode mode, rtx target, rtx *ops, int n) { - enum machine_mode cmode, hmode = VOIDmode; - rtx first[8], second[4]; + enum machine_mode cmode, hmode = VOIDmode, gmode = VOIDmode; + rtx first[16], second[8], third[4]; rtvec v; int i, j; @@ -37591,6 +37924,18 @@ ix86_expand_vector_init_concat (enum machine_mode mode, case 2: switch (mode) { + case V16SImode: + cmode = V8SImode; + break; + case V16SFmode: + cmode = V8SFmode; + break; + case V8DImode: + cmode = V4DImode; + break; + case V8DFmode: + cmode = V4DFmode; + break; case V8SImode: cmode = V4SImode; break; @@ -37657,6 +38002,14 @@ ix86_expand_vector_init_concat (enum machine_mode mode, case 8: switch (mode) { + case V8DImode: + cmode = V2DImode; + hmode = V4DImode; + break; + case V8DFmode: + cmode = V2DFmode; + hmode = V4DFmode; + break; case V8SImode: cmode = V2SImode; hmode = V4SImode; @@ -37670,6 +38023,24 @@ ix86_expand_vector_init_concat (enum machine_mode mode, } goto half; + case 16: + switch (mode) + { + case V16SImode: + cmode = V2SImode; + hmode = V4SImode; + gmode = V8SImode; + break; + case V16SFmode: + cmode = V2SFmode; + hmode = V4SFmode; + gmode = V8SFmode; + break; + default: + gcc_unreachable (); + } + goto half; + half: /* FIXME: We process inputs backward to help RA. PR 36222. */ i = n - 1; @@ -37683,7 +38054,27 @@ half: } n >>= 1; - if (n > 2) + if (n > 4) + { + gcc_assert (hmode != VOIDmode); + gcc_assert (gmode != VOIDmode); + for (i = j = 0; i < n; i += 2, j++) + { + second[j] = gen_reg_rtx (hmode); + ix86_expand_vector_init_concat (hmode, second [j], + &first [i], 2); + } + n >>= 1; + for (i = j = 0; i < n; i += 2, j++) + { + third[j] = gen_reg_rtx (gmode); + ix86_expand_vector_init_concat (gmode, third[j], + &second[i], 2); + } + n >>= 1; + ix86_expand_vector_init_concat (mode, target, third, n); + } + else if (n > 2) { gcc_assert (hmode != VOIDmode); for (i = j = 0; i < n; i += 2, j++) @@ -37826,7 +38217,7 @@ static void ix86_expand_vector_init_general (bool mmx_ok, enum machine_mode mode, rtx target, rtx vals) { - rtx ops[32], op0, op1; + rtx ops[64], op0, op1; enum machine_mode half_mode = VOIDmode; int n, i; @@ -37838,6 +38229,10 @@ ix86_expand_vector_init_general (bool mmx_ok, enum machine_mode mode, break; /* FALLTHRU */ + case V16SImode: + case V16SFmode: + case V8DFmode: + case V8DImode: case V8SFmode: case V8SImode: case V4DFmode: @@ -38463,6 +38858,42 @@ ix86_expand_vector_extract (bool mmx_ok, rtx target, rtx vec, int elt) } break; + case V16SFmode: + tmp = gen_reg_rtx (V8SFmode); + if (elt < 8) + emit_insn (gen_vec_extract_lo_v16sf (tmp, vec)); + else + emit_insn (gen_vec_extract_hi_v16sf (tmp, vec)); + ix86_expand_vector_extract (false, target, tmp, elt & 7); + return; + + case V8DFmode: + tmp = gen_reg_rtx (V4DFmode); + if (elt < 4) + emit_insn (gen_vec_extract_lo_v8df (tmp, vec)); + else + emit_insn (gen_vec_extract_hi_v8df (tmp, vec)); + ix86_expand_vector_extract (false, target, tmp, elt & 3); + return; + + case V16SImode: + tmp = gen_reg_rtx (V8SImode); + if (elt < 8) + emit_insn (gen_vec_extract_lo_v16si (tmp, vec)); + else + emit_insn (gen_vec_extract_hi_v16si (tmp, vec)); + ix86_expand_vector_extract (false, target, tmp, elt & 7); + return; + + case V8DImode: + tmp = gen_reg_rtx (V4DImode); + if (elt < 4) + emit_insn (gen_vec_extract_lo_v8di (tmp, vec)); + else + emit_insn (gen_vec_extract_hi_v8di (tmp, vec)); + ix86_expand_vector_extract (false, target, tmp, elt & 3); + return; + case V8QImode: /* ??? Could extract the appropriate HImode element and shift. */ default: @@ -38555,6 +38986,44 @@ emit_reduc_half (rtx dest, rtx src, int i) GEN_INT (i / 2)); } break; + case V16SImode: + case V16SFmode: + case V8DImode: + case V8DFmode: + if (i > 128) + tem = gen_avx512f_shuf_i32x4_1 (gen_lowpart (V16SImode, dest), + gen_lowpart (V16SImode, src), + gen_lowpart (V16SImode, src), + GEN_INT (0x4 + (i == 512 ? 4 : 0)), + GEN_INT (0x5 + (i == 512 ? 4 : 0)), + GEN_INT (0x6 + (i == 512 ? 4 : 0)), + GEN_INT (0x7 + (i == 512 ? 4 : 0)), + GEN_INT (0xC), GEN_INT (0xD), + GEN_INT (0xE), GEN_INT (0xF), + GEN_INT (0x10), GEN_INT (0x11), + GEN_INT (0x12), GEN_INT (0x13), + GEN_INT (0x14), GEN_INT (0x15), + GEN_INT (0x16), GEN_INT (0x17)); + else + tem = gen_avx512f_pshufd_1 (gen_lowpart (V16SImode, dest), + gen_lowpart (V16SImode, src), + GEN_INT (i == 128 ? 0x2 : 0x1), + GEN_INT (0x3), + GEN_INT (0x3), + GEN_INT (0x3), + GEN_INT (i == 128 ? 0x6 : 0x5), + GEN_INT (0x7), + GEN_INT (0x7), + GEN_INT (0x7), + GEN_INT (i == 128 ? 0xA : 0x9), + GEN_INT (0xB), + GEN_INT (0xB), + GEN_INT (0xB), + GEN_INT (i == 128 ? 0xE : 0xD), + GEN_INT (0xF), + GEN_INT (0xF), + GEN_INT (0xF)); + break; default: gcc_unreachable (); } @@ -38619,6 +39088,8 @@ ix86_vector_mode_supported_p (enum machine_mode mode) return true; if (TARGET_AVX && VALID_AVX256_REG_MODE (mode)) return true; + if (TARGET_AVX512F && VALID_AVX512F_REG_MODE (mode)) + return true; if (TARGET_MMX && VALID_MMX_REG_MODE (mode)) return true; if (TARGET_3DNOW && VALID_MMX_REG_MODE_3DNOW (mode)) @@ -38932,9 +39403,15 @@ void ix86_emit_swdivsf (rtx res, rtx a, rtx b, enum machine_mode mode) b = force_reg (mode, b); /* x0 = rcp(b) estimate */ - emit_insn (gen_rtx_SET (VOIDmode, x0, - gen_rtx_UNSPEC (mode, gen_rtvec (1, b), - UNSPEC_RCP))); + if (mode == V16SFmode || mode == V8DFmode) + emit_insn (gen_rtx_SET (VOIDmode, x0, + gen_rtx_UNSPEC (mode, gen_rtvec (1, b), + UNSPEC_RCP14))); + else + emit_insn (gen_rtx_SET (VOIDmode, x0, + gen_rtx_UNSPEC (mode, gen_rtvec (1, b), + UNSPEC_RCP))); + /* e0 = x0 * b */ emit_insn (gen_rtx_SET (VOIDmode, e0, gen_rtx_MULT (mode, x0, b))); @@ -38964,6 +39441,7 @@ void ix86_emit_swsqrtsf (rtx res, rtx a, enum machine_mode mode, { rtx x0, e0, e1, e2, e3, mthree, mhalf; REAL_VALUE_TYPE r; + int unspec; x0 = gen_reg_rtx (mode); e0 = gen_reg_rtx (mode); @@ -38976,11 +39454,15 @@ void ix86_emit_swsqrtsf (rtx res, rtx a, enum machine_mode mode, real_arithmetic (&r, NEGATE_EXPR, &dconsthalf, NULL); mhalf = CONST_DOUBLE_FROM_REAL_VALUE (r, SFmode); + unspec = UNSPEC_RSQRT; if (VECTOR_MODE_P (mode)) { mthree = ix86_build_const_vector (mode, true, mthree); mhalf = ix86_build_const_vector (mode, true, mhalf); + /* There is no 512-bit rsqrt. There is however rsqrt14. */ + if (GET_MODE_SIZE (mode) == 64) + unspec = UNSPEC_RSQRT14; } /* sqrt(a) = -0.5 * a * rsqrtss(a) * (a * rsqrtss(a) * rsqrtss(a) - 3.0) @@ -38991,7 +39473,7 @@ void ix86_emit_swsqrtsf (rtx res, rtx a, enum machine_mode mode, /* x0 = rsqrt(a) estimate */ emit_insn (gen_rtx_SET (VOIDmode, x0, gen_rtx_UNSPEC (mode, gen_rtvec (1, a), - UNSPEC_RSQRT))); + unspec))); /* If (a == 0.0) Filter out infinity to prevent NaN for sqrt(0.0). */ if (!recip) @@ -39002,11 +39484,23 @@ void ix86_emit_swsqrtsf (rtx res, rtx a, enum machine_mode mode, mask = gen_reg_rtx (mode); zero = force_reg (mode, CONST0_RTX(mode)); - emit_insn (gen_rtx_SET (VOIDmode, mask, - gen_rtx_NE (mode, zero, a))); - emit_insn (gen_rtx_SET (VOIDmode, x0, - gen_rtx_AND (mode, x0, mask))); + /* Handle masked compare. */ + if (VECTOR_MODE_P (mode) && GET_MODE_SIZE (mode) == 64) + { + mask = gen_reg_rtx (HImode); + /* Imm value 0x4 corresponds to not-equal comparison. */ + emit_insn (gen_avx512f_cmpv16sf3 (mask, zero, a, GEN_INT (0x4))); + emit_insn (gen_avx512f_blendmv16sf (x0, zero, x0, mask)); + } + else + { + emit_insn (gen_rtx_SET (VOIDmode, mask, + gen_rtx_NE (mode, zero, a))); + + emit_insn (gen_rtx_SET (VOIDmode, x0, + gen_rtx_AND (mode, x0, mask))); + } } /* e0 = x0 * a */ @@ -40528,6 +41022,19 @@ expand_vec_perm_1 (struct expand_vec_perm_d *d) if (expand_vec_perm_pshufb (d)) return true; + /* Try the AVX512F vpermi2 instructions. */ + rtx vec[64]; + enum machine_mode mode = d->vmode; + if (mode == V8DFmode) + mode = V8DImode; + else if (mode == V16SFmode) + mode = V16SImode; + for (i = 0; i < nelt; ++i) + vec[i] = GEN_INT (d->perm[i]); + rtx mask = gen_rtx_CONST_VECTOR (mode, gen_rtvec_v (nelt, vec)); + if (ix86_expand_vec_perm_vpermi2 (d->target, d->op0, mask, d->op1)) + return true; + return false; } @@ -42135,6 +42642,10 @@ ix86_vectorize_vec_perm_const_ok (enum machine_mode vmode, /* Given sufficient ISA support we can just return true here for selected vector modes. */ + if (d.vmode == V16SImode || d.vmode == V16SFmode + || d.vmode == V8DFmode || d.vmode == V8DImode) + /* All implementable with a single vpermi2 insn. */ + return true; if (GET_MODE_SIZE (d.vmode) == 16) { /* All implementable with a single vpperm insn. */ @@ -42377,7 +42888,7 @@ ix86_expand_mul_widen_evenodd (rtx dest, rtx op1, rtx op2, op2 = force_reg (mode, op2); /* We only play even/odd games with vectors of SImode. */ - gcc_assert (mode == V4SImode || mode == V8SImode); + gcc_assert (mode == V4SImode || mode == V8SImode || mode == V16SImode); /* If we're looking for the odd results, shift those members down to the even slots. For some cpus this is faster than a PSHUFD. */ @@ -42403,7 +42914,14 @@ ix86_expand_mul_widen_evenodd (rtx dest, rtx op1, rtx op2, op2 = gen_lowpart (mode, op2); } - if (mode == V8SImode) + if (mode == V16SImode) + { + if (uns_p) + x = gen_vec_widen_umult_even_v16si (dest, op1, op2); + else + x = gen_vec_widen_smult_even_v16si (dest, op1, op2); + } + else if (mode == V8SImode) { if (uns_p) x = gen_vec_widen_umult_even_v8si (dest, op1, op2); @@ -42623,6 +43141,11 @@ ix86_expand_sse2_mulvxdi3 (rtx op0, rtx op1, rtx op2) umul = gen_vec_widen_umult_even_v8si; nmode = V8SImode; } + else if (mode == V8DImode) + { + umul = gen_vec_widen_umult_even_v16si; + nmode = V16SImode; + } else gcc_unreachable (); @@ -43769,12 +44292,16 @@ ix86_preferred_simd_mode (enum machine_mode mode) case HImode: return (TARGET_AVX && !TARGET_PREFER_AVX128) ? V16HImode : V8HImode; case SImode: - return (TARGET_AVX && !TARGET_PREFER_AVX128) ? V8SImode : V4SImode; + return TARGET_AVX512F ? V16SImode : + (TARGET_AVX && !TARGET_PREFER_AVX128) ? V8SImode : V4SImode; case DImode: - return (TARGET_AVX && !TARGET_PREFER_AVX128) ? V4DImode : V2DImode; + return TARGET_AVX512F ? V8DImode : + (TARGET_AVX && !TARGET_PREFER_AVX128) ? V4DImode : V2DImode; case SFmode: - if (TARGET_AVX && !TARGET_PREFER_AVX128) + if (TARGET_AVX512F) + return V16SFmode; + else if (TARGET_AVX && !TARGET_PREFER_AVX128) return V8SFmode; else return V4SFmode; @@ -43782,6 +44309,8 @@ ix86_preferred_simd_mode (enum machine_mode mode) case DFmode: if (!TARGET_VECTORIZE_DOUBLE) return word_mode; + else if (TARGET_AVX512F) + return V8DFmode; else if (TARGET_AVX && !TARGET_PREFER_AVX128) return V4DFmode; else if (TARGET_SSE2) @@ -43794,12 +44323,14 @@ ix86_preferred_simd_mode (enum machine_mode mode) } /* If AVX is enabled then try vectorizing with both 256bit and 128bit - vectors. */ + vectors. If AVX512F is enabled then try vectorizing with 512bit, + 256bit and 128bit vectors. */ static unsigned int ix86_autovectorize_vector_sizes (void) { - return (TARGET_AVX && !TARGET_PREFER_AVX128) ? 32 | 16 : 0; + return TARGET_AVX512F ? 64 | 32 | 16 : + (TARGET_AVX && !TARGET_PREFER_AVX128) ? 32 | 16 : 0; } diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 7beb245d9c7..a3c0e0c2398 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -748,8 +748,9 @@ (set (attr "mode") (cond [(match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL") (const_string "") - (and (eq_attr "alternative" "2") - (match_test "TARGET_SSE_TYPELESS_STORES")) + (and (match_test "GET_MODE_SIZE (mode) == 16") + (and (eq_attr "alternative" "2") + (match_test "TARGET_SSE_TYPELESS_STORES"))) (const_string "") (match_test "TARGET_AVX") (const_string "") @@ -986,8 +987,9 @@ (set_attr "ssememalign" "8") (set_attr "prefix" "maybe_vex") (set (attr "mode") - (cond [(ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL") - (match_test "TARGET_SSE_TYPELESS_STORES")) + (cond [(and (match_test "GET_MODE_SIZE (mode) == 16") + (ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL") + (match_test "TARGET_SSE_TYPELESS_STORES"))) (const_string "") (match_test "TARGET_AVX") (const_string "") @@ -1091,6 +1093,7 @@ { switch (get_attr_mode (insn)) { + case MODE_V16SF: case MODE_V8SF: case MODE_V4SF: return "%vmovups\t{%1, %0|%0, %1}"; @@ -1113,8 +1116,9 @@ (const_string "1"))) (set_attr "prefix" "maybe_vex") (set (attr "mode") - (cond [(ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL") - (match_test "TARGET_SSE_TYPELESS_STORES")) + (cond [(and (match_test "GET_MODE_SIZE (mode) == 16") + (ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL") + (match_test "TARGET_SSE_TYPELESS_STORES"))) (const_string "") (match_test "TARGET_AVX") (const_string "") @@ -3492,7 +3496,11 @@ (match_operand: 1 "register_operand")] "TARGET_SSE2 && (mode == V4SFmode || TARGET_AVX2)" { - ix86_expand_vector_convert_uns_vsivsf (operands[0], operands[1]); + if (mode == V16SFmode) + emit_insn (gen_ufloatv16siv16sf2 (operands[0], operands[1])); + else + ix86_expand_vector_convert_uns_vsivsf (operands[0], operands[1]); + DONE; }) @@ -3583,11 +3591,17 @@ (match_operand:VF1 1 "register_operand")] "TARGET_SSE2" { - rtx tmp[3]; - tmp[0] = ix86_expand_adjust_ufix_to_sfix_si (operands[1], &tmp[2]); - tmp[1] = gen_reg_rtx (mode); - emit_insn (gen_fix_trunc2 (tmp[1], tmp[0])); - emit_insn (gen_xor3 (operands[0], tmp[1], tmp[2])); + if (mode == V16SFmode) + emit_insn (gen_ufix_truncv16sfv16si2 (operands[0], + operands[1])); + else + { + rtx tmp[3]; + tmp[0] = ix86_expand_adjust_ufix_to_sfix_si (operands[1], &tmp[2]); + tmp[1] = gen_reg_rtx (mode); + emit_insn (gen_fix_trunc2 (tmp[1], tmp[0])); + emit_insn (gen_xor3 (operands[0], tmp[1], tmp[2])); + } DONE; }) @@ -4514,6 +4528,32 @@ DONE; }) +(define_expand "vec_unpacku_float_hi_v16si" + [(match_operand:V8DF 0 "register_operand") + (match_operand:V16SI 1 "register_operand")] + "TARGET_AVX512F" +{ + REAL_VALUE_TYPE TWO32r; + rtx k, x, tmp[4]; + + real_ldexp (&TWO32r, &dconst1, 32); + x = const_double_from_real_value (TWO32r, DFmode); + + tmp[0] = force_reg (V8DFmode, CONST0_RTX (V8DFmode)); + tmp[1] = force_reg (V8DFmode, ix86_build_const_vector (V8DFmode, 1, x)); + tmp[2] = gen_reg_rtx (V8DFmode); + tmp[3] = gen_reg_rtx (V8SImode); + k = gen_reg_rtx (QImode); + + emit_insn (gen_vec_extract_hi_v16si (tmp[3], operands[1])); + emit_insn (gen_floatv8siv8df2 (tmp[2], tmp[3])); + emit_insn (gen_rtx_SET (VOIDmode, k, + gen_rtx_LT (QImode, tmp[2], tmp[0]))); + emit_insn (gen_addv8df3_mask (tmp[2], tmp[2], tmp[1], tmp[2], k)); + emit_move_insn (operands[0], tmp[2]); + DONE; +}) + (define_expand "vec_unpacku_float_lo_v8si" [(match_operand:V4DF 0 "register_operand") (match_operand:V8SI 1 "nonimmediate_operand")] @@ -4679,31 +4719,46 @@ (define_expand "vec_pack_ufix_trunc_" [(match_operand: 0 "register_operand") - (match_operand:VF2_128_256 1 "register_operand") - (match_operand:VF2_128_256 2 "register_operand")] + (match_operand:VF2 1 "register_operand") + (match_operand:VF2 2 "register_operand")] "TARGET_SSE2" { - rtx tmp[7]; - tmp[0] = ix86_expand_adjust_ufix_to_sfix_si (operands[1], &tmp[2]); - tmp[1] = ix86_expand_adjust_ufix_to_sfix_si (operands[2], &tmp[3]); - tmp[4] = gen_reg_rtx (mode); - emit_insn (gen_vec_pack_sfix_trunc_ (tmp[4], tmp[0], tmp[1])); - if (mode == V4SImode || TARGET_AVX2) + if (mode == V8DFmode) { - tmp[5] = gen_reg_rtx (mode); - ix86_expand_vec_extract_even_odd (tmp[5], tmp[2], tmp[3], 0); + rtx r1, r2; + + r1 = gen_reg_rtx (V8SImode); + r2 = gen_reg_rtx (V8SImode); + + emit_insn (gen_ufix_truncv8dfv8si2 (r1, operands[1])); + emit_insn (gen_ufix_truncv8dfv8si2 (r2, operands[2])); + emit_insn (gen_avx_vec_concatv16si (operands[0], r1, r2)); } else { - tmp[5] = gen_reg_rtx (V8SFmode); - ix86_expand_vec_extract_even_odd (tmp[5], gen_lowpart (V8SFmode, tmp[2]), - gen_lowpart (V8SFmode, tmp[3]), 0); - tmp[5] = gen_lowpart (V8SImode, tmp[5]); + rtx tmp[7]; + tmp[0] = ix86_expand_adjust_ufix_to_sfix_si (operands[1], &tmp[2]); + tmp[1] = ix86_expand_adjust_ufix_to_sfix_si (operands[2], &tmp[3]); + tmp[4] = gen_reg_rtx (mode); + emit_insn (gen_vec_pack_sfix_trunc_ (tmp[4], tmp[0], tmp[1])); + if (mode == V4SImode || TARGET_AVX2) + { + tmp[5] = gen_reg_rtx (mode); + ix86_expand_vec_extract_even_odd (tmp[5], tmp[2], tmp[3], 0); + } + else + { + tmp[5] = gen_reg_rtx (V8SFmode); + ix86_expand_vec_extract_even_odd (tmp[5], gen_lowpart (V8SFmode, tmp[2]), + gen_lowpart (V8SFmode, tmp[3]), 0); + tmp[5] = gen_lowpart (V8SImode, tmp[5]); + } + tmp[6] = expand_simple_binop (mode, XOR, tmp[4], tmp[5], + operands[0], 0, OPTAB_DIRECT); + if (tmp[6] != operands[0]) + emit_move_insn (operands[0], tmp[6]); } - tmp[6] = expand_simple_binop (mode, XOR, tmp[4], tmp[5], - operands[0], 0, OPTAB_DIRECT); - if (tmp[6] != operands[0]) - emit_move_insn (operands[0], tmp[6]); + DONE; }) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1060e569aaa..ed9467b04bb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * gcc.target/i386/pr49002-2.c: allow vmovapd generation. + 2013-12-31 Sandra Loosemore Chung-Lin Tang Based on patches from Altera Corporation diff --git a/gcc/testsuite/gcc.target/i386/pr49002-2.c b/gcc/testsuite/gcc.target/i386/pr49002-2.c index 9f21a2d17d9..dfb83b4a75d 100644 --- a/gcc/testsuite/gcc.target/i386/pr49002-2.c +++ b/gcc/testsuite/gcc.target/i386/pr49002-2.c @@ -12,4 +12,4 @@ void foo(const __m128d from, __m256d *to) /* Ensure we store ymm, not xmm. */ /* { dg-final { scan-assembler-not "vmovapd\[\t \]*%xmm\[0-9\]\+,\[^,\]*" } } */ /* { dg-final { scan-assembler-not "vmovaps\[\t \]*%xmm\[0-9\]\+,\[^,\]*" } } */ -/* { dg-final { scan-assembler "vmovaps\[\t \]*%ymm\[0-9\]\+,\[^,\]*" } } */ +/* { dg-final { scan-assembler "vmovap\[sd\]\[\t \]*%ymm\[0-9\]\+,\[^,\]*" } } */ diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index a07c14d153e..e4f04c44760 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -5699,7 +5699,7 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, tree vec_oprnd0 = NULL_TREE, op; tree arglist = TYPE_ARG_TYPES (TREE_TYPE (gather_decl)); tree rettype, srctype, ptrtype, idxtype, masktype, scaletype; - tree ptr, mask, var, scale, perm_mask = NULL_TREE, prev_res = NULL_TREE; + tree ptr, mask, var, scale, merge, perm_mask = NULL_TREE, prev_res = NULL_TREE; edge pe = loop_preheader_edge (loop); gimple_seq seq; basic_block new_bb; @@ -5741,8 +5741,7 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, idxtype = TREE_VALUE (arglist); arglist = TREE_CHAIN (arglist); masktype = TREE_VALUE (arglist); arglist = TREE_CHAIN (arglist); scaletype = TREE_VALUE (arglist); - gcc_checking_assert (types_compatible_p (srctype, rettype) - && types_compatible_p (srctype, masktype)); + gcc_checking_assert (types_compatible_p (srctype, rettype)); vec_dest = vect_create_destination_var (scalar_dest, vectype); @@ -5756,8 +5755,13 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, /* Currently we support only unconditional gather loads, so mask should be all ones. */ - if (TREE_CODE (TREE_TYPE (masktype)) == INTEGER_TYPE) - mask = build_int_cst (TREE_TYPE (masktype), -1); + if (TREE_CODE (masktype) == INTEGER_TYPE) + mask = build_int_cst (masktype, -1); + else if (TREE_CODE (TREE_TYPE (masktype)) == INTEGER_TYPE) + { + mask = build_int_cst (TREE_TYPE (masktype), -1); + mask = build_vector_from_val (masktype, mask); + } else if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (masktype))) { REAL_VALUE_TYPE r; @@ -5766,14 +5770,30 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, tmp[j] = -1; real_from_target (&r, tmp, TYPE_MODE (TREE_TYPE (masktype))); mask = build_real (TREE_TYPE (masktype), r); + mask = build_vector_from_val (masktype, mask); } else gcc_unreachable (); - mask = build_vector_from_val (masktype, mask); mask = vect_init_vector (stmt, mask, masktype, NULL); scale = build_int_cst (scaletype, gather_scale); + if (TREE_CODE (TREE_TYPE (rettype)) == INTEGER_TYPE) + merge = build_int_cst (TREE_TYPE (rettype), 0); + else if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (rettype))) + { + REAL_VALUE_TYPE r; + long tmp[6]; + for (j = 0; j < 6; ++j) + tmp[j] = 0; + real_from_target (&r, tmp, TYPE_MODE (TREE_TYPE (rettype))); + merge = build_real (TREE_TYPE (rettype), r); + } + else + gcc_unreachable (); + merge = build_vector_from_val (rettype, merge); + merge = vect_init_vector (stmt, merge, rettype, NULL); + prev_stmt_info = NULL; for (j = 0; j < ncopies; ++j) { @@ -5802,7 +5822,7 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, } new_stmt - = gimple_build_call (gather_decl, 5, mask, ptr, op, mask, scale); + = gimple_build_call (gather_decl, 5, merge, ptr, op, mask, scale); if (!useless_type_conversion_p (vectype, rettype)) { diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 54e73c8c9a0..00e56dcb388 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -683,8 +683,8 @@ struct dataref_aux { conversion. */ #define MAX_INTERM_CVT_STEPS 3 -/* The maximum vectorization factor supported by any target (V32QI). */ -#define MAX_VECTORIZATION_FACTOR 32 +/* The maximum vectorization factor supported by any target (V64QI). */ +#define MAX_VECTORIZATION_FACTOR 64 /* Avoid GTY(()) on stmt_vec_info. */ typedef void *vec_void_p; -- cgit v1.2.1 From e2098065954afd61e2b34be92b8894267875a4f9 Mon Sep 17 00:00:00 2001 From: kyukhin Date: Tue, 31 Dec 2013 11:30:14 +0000 Subject: gcc/ * config.gcc (extra_headers): Add avx512fintrin.h, avx512cdintrin.h, avx512erintrin.h, avx512pfintrin.h. * config/i386/avx512cdintrin.h: New file. * config/i386/avx512erintrin.h: New file. * config/i386/avx512fintrin.h: New file. * config/i386/avx512pfintrin.h: New file. * config/i386/i386-builtin-types.def: Add V16UHI, V32SF, V16SF, V8DF, V8DI, V16SI, V64QI, PV8DF, PV8DI, PV16SI, PV16SF, PCV8DF, PCV16SF, PCV8DI, PCV16SI, V16QI_FTYPE_V16SI, V8DF_FTYPE_V8SI, V8DF_FTYPE_V8DF, V8HI_FTYPE_V8DI, V16SF_FTYPE_V16SF, V8SI_FTYPE_V8DI, V8SF_FTYPE_V8DF, V8SF_FTYPE_V8DF_V8SF_QI, V16HI_FTYPE_V16SI, V16SF_FTYPE_FLOAT, V16SI_FTYPE_INT, V8DF_FTYPE_DOUBLE, V8DI_FTYPE_INT64, V16SF_FTYPE_V4SF, V8DF_FTYPE_V4DF, V8DI_FTYPE_V4DI, V16QI_FTYPE_V8DI, UINT_FTYPE_V4SF, UINT64_FTYPE_V4SF, UINT_FTYPE_V2DF, UINT64_FTYPE_V2DF, V16SI_FTYPE_V16SI, V16SI_FTYPE_V16SI_V16SI_HI, V8DI_FTYPE_V8DI, V8DI_FTYPE_V8DI_V8DI_QI, V16SI_FTYPE_PV4SI, V16SF_FTYPE_PV4SF, V8DI_FTYPE_PV4DI, V8DF_FTYPE_PV4DF, V8UHI_FTYPE_V8UHI, V8USI_FTYPE_V8USI, V2DF_FTYPE_V2DF_UINT, V2DF_FTYPE_V2DF_UINT64, V4DF_FTYPE_V8DF_INT, V4DF_FTYPE_V8DF_INT_V4DF_QI, V8DF_FTYPE_V8DF_V8DI, V4SF_FTYPE_V4SF_UINT, V4SF_FTYPE_V4SF_UINT64, INT_FTYPE_V4SF_V4SF_INT_INT, INT_FTYPE_V2DF_V2DF_INT_INT, V16SF_FTYPE_V16SF_INT, V4SF_FTYPE_V16SF_INT, V4SF_FTYPE_V16SF_INT_V4SF_QI, V16SF_FTYPE_V16SF_V16SF, V16SF_FTYPE_V16SF_V16SI, V8DF_FTYPE_V8DF_V4DF_INT_V8DF_QI, V8DF_FTYPE_V8DF_V8DF_INT_V8DF_QI, V8DF_FTYPE_V8DF_INT_V8DF_QI, V8DF_FTYPE_V8DF_V8DF_V8DI_INT_QI_INT, V8DF_FTYPE_V8DF_V8DF, V16SF_FTYPE_V16SF_V16SF_INT, V16SF_FTYPE_V16SF_V16SF_INT_V16SF_HI, V16SF_FTYPE_V16SF_INT_V16SF_HI, V16SI_FTYPE_V16SI_V4SI_INT_V16SI_HI, V16SF_FTYPE_V16SF_V16SF_V16SI_INT, V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI, V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI, V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI_INT, V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI, V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI_INT, V16SF_FTYPE_V16SF_V4SF_INT, V16SF_FTYPE_V16SF_V4SF_INT_V16SF_HI, V16HI_FTYPE_V16SF_INT, V16HI_FTYPE_V16SF_INT_V16HI_HI, V16HI_FTYPE_V16HI_V16HI_INT_V16HI_HI, V16SI_FTYPE_V16SI_V4SI, V16SI_FTYPE_V16SI_V4SI_INT, V4SI_FTYPE_V16SI_INT, V4SI_FTYPE_V16SI_INT_V4SI_QI, V16SI_FTYPE_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_INT_V16SI_HI, V16SI_FTYPE_V16SI_SI, V16SI_FTYPE_V16SI_INT, V16SI_FTYPE_V16SI_V4SI_V16SI_HI, V16SI_FTYPE_V16SI_INT_V16SI_HI, V8DI_FTYPE_V8DI_V8DI, V16SI_FTYPE_V8DF_V8DF, V8DI_FTYPE_V8DI_V8DI_INT_V8DI_QI, V8DI_FTYPE_V8DI_V4DI_INT_V8DI_QI, V8DI_FTYPE_V8DI_V2DI, V4DI_FTYPE_V8DI_INT, V4DI_FTYPE_V8DI_INT_V4DI_QI, V8DI_FTYPE_V8DI_V2DI_V8DI_QI, V8DI_FTYPE_V8DI_INT_V8DI_QI, VOID_FTYPE_PDOUBLE_V8DF, VOID_FTYPE_PFLOAT_V16SF, VOID_FTYPE_PV8DI_V8DI, HI_FTYPE_HI, HI_FTYPE_HI_HI, HI_FTYPE_HI_INT, QI_FTYPE_V8DI_V8DI, QI_FTYPE_V8DI_V8DI_QI, HI_FTYPE_V16SI_V16SI, HI_FTYPE_V16SI_V16SI_HI, QI_FTYPE_V8DI_V8DI_INT, QI_FTYPE_V8DI_V8DI_INT_QI, HI_FTYPE_V16SI_V16SI_INT, HI_FTYPE_V16SI_V16SI_INT ,HI, QI_FTYPE_V8DF_V8DF_INT, QI_FTYPE_V8DF_V8DF_INT_QI, QI_FTYPE_V8DF_V8DF_INT_QI_INT, HI_FTYPE_V16SF_V16SF_INT, HI_FTYPE_V16SF_V16SF_INT_HI, HI_FTYPE_V16SF_V16SF_INT_HI_INT, QI_FTYPE_V2DF_V2DF_INT, QI_FTYPE_V2DF_V2DF_INT_QI, QI_FTYPE_V2DF_V2DF_INT_QI_INT, QI_FTYPE_V4SF_V4SF_INT, QI_FTYPE_V4SF_V4SF_INT_QI, QI_FTYPE_V4SF_V4SF_INT_QI_INT, V16SI_FTYPE_HI, V8DI_FTYPE_QI, V8DF_FTYPE_V8DF_V8DF_V8DF, V16SF_FTYPE_V16SF_V16SF_V16SF, V8DF_FTYPE_V8DF_V8DF_QI, V8DF_FTYPE_V8SF_V8DF_QI, V8DF_FTYPE_V8SI_V8DF_QI, V8DI_FTYPE_V8SI_V8DI_QI, V8DI_FTYPE_V8HI_V8DI_QI, V8DI_FTYPE_V16QI_V8DI_QI, V8DI_FTYPE_V8DI_V8DI_V8DI_QI, V8DF_FTYPE_V8DI_V8DF_V8DF, V8DF_FTYPE_V8DI_V8DF_V8DF_QI, V8DF_FTYPE_V8DF_V8DI_V8DF_QI, V8DF_FTYPE_V8DF_V8DF_V8DF_QI, V16SI_FTYPE_V16SI_V16SI_V16SI_HI, V2DF_FTYPE_V2DF_V2DF_V2DF_QI, V2DF_FTYPE_V2DF_V4SF_V2DF_QI, V16SF_FTYPE_V16SF_V16SF_HI, V16SF_FTYPE_V16SI_V16SF_HI, V16SF_FTYPE_V16SF_V16SF_V16SF_HI, V16SF_FTYPE_V16SI_V16SF_V16SF, V16SF_FTYPE_V16SI_V16SF_V16SF_HI, V16SF_FTYPE_V16SF_V16SI_V16SF_HI, V4SF_FTYPE_V4SF_V2DF_V4SF_QI, V4SF_FTYPE_V4SF_V4SF_V4SF_QI, V16SF_FTYPE_V4SF_V16SF_HI, V8DF_FTYPE_V4DF_V8DF_QI, V8DF_FTYPE_V2DF_V8DF_QI, V16SI_FTYPE_V4SI_V16SI_HI, V16SI_FTYPE_SI_V16SI_HI, V16SI_FTYPE_V16HI_V16SI_HI, V16SI_FTYPE_V16QI_V16SI_HI, V8SI_FTYPE_V8DF_V8SI_QI, V8DI_FTYPE_V4DI_V8DI_QI, V8DI_FTYPE_V2DI_V8DI_QI, V8DI_FTYPE_DI_V8DI_QI, V16SF_FTYPE_PCV16SF_V16SF_HI, V8DF_FTYPE_PCV8DF_V8DF_QI, V16SI_FTYPE_PCV16SI_V16SI_HI, V8DI_FTYPE_PCV8DI_V8DI_QI, V2DF_FTYPE_PCDOUBLE_V2DF_QI, V4SF_FTYPE_PCFLOAT_V4SF_QI, V16QI_FTYPE_V16SI_V16QI_HI, V16HI_FTYPE_V16SI_V16HI_HI, V8SI_FTYPE_V8DI_V8SI_QI, V8HI_FTYPE_V8DI_V8HI_QI, V16QI_FTYPE_V8DI_V16QI_QI, VOID_FTYPE_PV8DF_V8DF_QI, VOID_FTYPE_PV16SF_V16SF_HI, VOID_FTYPE_PV8DI_V8DI_QI, VOID_FTYPE_PV16SI_V16SI_HI, VOID_FTYPE_PDOUBLE_V2DF_QI, VOID_FTYPE_PFLOAT_V4SF_QI, V16SI_FTYPE_V16SF_V16SI_HI, V8DI_FTYPE_V8DI_V8DI_V8DI_INT_QI, V16SI_FTYPE_V16SI_V16SI_V16SI_INT_HI, V8DI_FTYPE_V8DI_V8DI_V8DI, V16SI_FTYPE_V16SI_V16SI_V16SI, V8DF_FTYPE_V8DF_V8DI_V8DF, V16SF_FTYPE_V16SF_V16SI_V16SF, V4SF_FTYPE_V4SF_V4SF_INT_V4SF_QI, V2DF_FTYPE_V2DF_V2DF_INT_V2DF_QI, V8DI_FTYPE_V16SI_V16SI_V8DI_QI, UINT64_FTYPE_V2DF_INT, UINT64_FTYPE_V4SF_INT, UINT_FTYPE_V2DF_INT, UINT_FTYPE_V4SF_INT, INT64_FTYPE_V2DF_INT, INT64_FTYPE_V4SF_INT, INT_FTYPE_V2DF_INT, INT_FTYPE_V4SF_INT, V2DF_FTYPE_V2DF_UINT64_INT, V4SF_FTYPE_V4SF_UINT64_INT, V4SF_FTYPE_V4SF_UINT_INT, V2DF_FTYPE_V2DF_INT64_INT, V4SF_FTYPE_V4SF_INT64_INT, V4SF_FTYPE_V4SF_INT_INT, V16SI_FTYPE_V16SF_V16SI_HI_INT, V16SF_FTYPE_V16SI_V16SF_HI_INT, V16SF_FTYPE_V16SF_V16SF_HI_INT, V16SF_FTYPE_V16HI_V16SF_HI_INT, V8SI_FTYPE_V8DF_V8SI_QI_INT, V8SF_FTYPE_V8DF_V8SF_QI_INT, V8DF_FTYPE_V8DF_V8DF_QI_INT, V8DF_FTYPE_V8SF_V8DF_QI_INT, V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT, V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT, V4SF_FTYPE_V4SF_V4SF_V4SF_QI_INT, V4SF_FTYPE_V4SF_V2DF_V4SF_QI_INT, V2DF_FTYPE_V2DF_V2DF_V2DF_QI_INT, V2DF_FTYPE_V2DF_V4SF_V2DF_QI_INT, V2DF_FTYPE_V2DF_V2DF_V2DF_INT, V16SF_FTYPE_V16SF_INT_V16SF_HI_INT, V8DF_FTYPE_V8DF_INT_V8DF_QI_INT, V4SF_FTYPE_V4SF_V4SF_INT_V4SF_QI_INT, V2DF_FTYPE_V2DF_V2DF_INT_V2DF_QI_INT, V8DI_FTYPE_V8DI_SI_V8DI_V8DI, V16SF_FTYPE_V16SF_PCFLOAT_V16SI_HI_INT, V16SF_FTYPE_V16SF_PCFLOAT_V8DI_HI_INT, V8DF_FTYPE_V8DF_PCDOUBLE_V8SI_QI_INT, V8DF_FTYPE_V8DF_PCDOUBLE_V16SI_QI_INT, V8SF_FTYPE_V8SF_PCFLOAT_V8DI_QI_INT, V8DF_FTYPE_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_FTYPE_V16SI_PCINT_V16SI_HI_INT, V16SI_FTYPE_V16SI_PCINT_V8DI_HI_INT, V8DI_FTYPE_V8DI_PCINT64_V8SI_QI_INT, V8DI_FTYPE_V8DI_PCINT64_V16SI_QI_INT, V8SI_FTYPE_V8SI_PCINT_V8DI_QI_INT, V8DI_FTYPE_V8DI_PCINT64_V8DI_QI_INT, VOID_FTYPE_PFLOAT_HI_V16SI_V16SF_INT, VOID_FTYPE_PDOUBLE_QI_V8SI_V8DF_INT, VOID_FTYPE_PFLOAT_QI_V8DI_V8SF_INT, VOID_FTYPE_PDOUBLE_QI_V8DI_V8DF_INT, VOID_FTYPE_PINT_HI_V16SI_V16SI_INT, VOID_FTYPE_PLONGLONG_QI_V8SI_V8DI_INT, VOID_FTYPE_PINT_QI_V8DI_V8SI_INT, VOID_FTYPE_PLONGLONG_QI_V8DI_V8DI_INT, VOID_FTYPE_HI_V16SI_PCINT_INT_INT, VOID_FTYPE_QI_V8DI_PCINT_INT_INT. (ALIAS): Add DEF_FUNCTION_TYPE_ALIAS (V16SI_FTYPE_V8DF_V8DF, ROUND). * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_ADDPD512, IX86_BUILTIN_ADDPS512, IX86_BUILTIN_ADDSD_MASK, IX86_BUILTIN_ADDSS_MASK, IX86_BUILTIN_ALIGND512, IX86_BUILTIN_ALIGNQ512, IX86_BUILTIN_BLENDMD512, IX86_BUILTIN_BLENDMPD512, IX86_BUILTIN_BLENDMPS512, IX86_BUILTIN_BLENDMQ512, IX86_BUILTIN_BROADCASTF32X4_512, IX86_BUILTIN_BROADCASTF64X4_512, IX86_BUILTIN_BROADCASTI32X4_512, IX86_BUILTIN_BROADCASTI64X4_512, IX86_BUILTIN_BROADCASTSD512, IX86_BUILTIN_BROADCASTSS512, IX86_BUILTIN_CMPD512, IX86_BUILTIN_CMPPD512, IX86_BUILTIN_CMPPS512, IX86_BUILTIN_CMPQ512, IX86_BUILTIN_CMPSD_MASK, IX86_BUILTIN_CMPSS_MASK, IX86_BUILTIN_COMIDF, IX86_BUILTIN_COMISF, IX86_BUILTIN_COMPRESSPD512, IX86_BUILTIN_COMPRESSPDSTORE512, IX86_BUILTIN_COMPRESSPS512, IX86_BUILTIN_COMPRESSPSSTORE512, IX86_BUILTIN_CVTDQ2PD512, IX86_BUILTIN_CVTDQ2PS512, IX86_BUILTIN_CVTPD2DQ512, IX86_BUILTIN_CVTPD2PS512, IX86_BUILTIN_CVTPD2UDQ512, IX86_BUILTIN_CVTPH2PS512, IX86_BUILTIN_CVTPS2DQ512, IX86_BUILTIN_CVTPS2PD512, IX86_BUILTIN_CVTPS2PH512, IX86_BUILTIN_CVTPS2UDQ512, IX86_BUILTIN_CVTSD2SS_MASK, IX86_BUILTIN_CVTSI2SD64, IX86_BUILTIN_CVTSI2SS32, IX86_BUILTIN_CVTSI2SS64, IX86_BUILTIN_CVTSS2SD_MASK, IX86_BUILTIN_CVTTPD2DQ512, IX86_BUILTIN_CVTTPD2UDQ512, IX86_BUILTIN_CVTTPS2DQ512, IX86_BUILTIN_CVTTPS2UDQ512, IX86_BUILTIN_CVTUDQ2PD512, IX86_BUILTIN_CVTUDQ2PS512, IX86_BUILTIN_CVTUSI2SD32, IX86_BUILTIN_CVTUSI2SD64, IX86_BUILTIN_CVTUSI2SS32, IX86_BUILTIN_CVTUSI2SS64, IX86_BUILTIN_DIVPD512, IX86_BUILTIN_DIVPS512, IX86_BUILTIN_DIVSD_MASK, IX86_BUILTIN_DIVSS_MASK, IX86_BUILTIN_EXPANDPD512, IX86_BUILTIN_EXPANDPD512Z, IX86_BUILTIN_EXPANDPDLOAD512, IX86_BUILTIN_EXPANDPDLOAD512Z, IX86_BUILTIN_EXPANDPS512, IX86_BUILTIN_EXPANDPS512Z, IX86_BUILTIN_EXPANDPSLOAD512, IX86_BUILTIN_EXPANDPSLOAD512Z, IX86_BUILTIN_EXTRACTF32X4, IX86_BUILTIN_EXTRACTF64X4, IX86_BUILTIN_EXTRACTI32X4, IX86_BUILTIN_EXTRACTI64X4, IX86_BUILTIN_FIXUPIMMPD512_MASK, IX86_BUILTIN_FIXUPIMMPD512_MASKZ, IX86_BUILTIN_FIXUPIMMPS512_MASK, IX86_BUILTIN_FIXUPIMMPS512_MASKZ, IX86_BUILTIN_FIXUPIMMSD128_MASK, IX86_BUILTIN_FIXUPIMMSD128_MASKZ, IX86_BUILTIN_FIXUPIMMSS128_MASK, IX86_BUILTIN_FIXUPIMMSS128_MASKZ, IX86_BUILTIN_GETEXPPD512, IX86_BUILTIN_GETEXPPS512, IX86_BUILTIN_GETEXPSD128, IX86_BUILTIN_GETEXPSS128, IX86_BUILTIN_GETMANTPD512, IX86_BUILTIN_GETMANTPS512, IX86_BUILTIN_GETMANTSD128, IX86_BUILTIN_GETMANTSS128, IX86_BUILTIN_INSERTF32X4, IX86_BUILTIN_INSERTF64X4, IX86_BUILTIN_INSERTI32X4, IX86_BUILTIN_INSERTI64X4, IX86_BUILTIN_LOADAPD512, IX86_BUILTIN_LOADAPS512, IX86_BUILTIN_LOADDQUDI512, IX86_BUILTIN_LOADDQUSI512, IX86_BUILTIN_LOADSD, IX86_BUILTIN_LOADSS, IX86_BUILTIN_LOADUPD512, IX86_BUILTIN_LOADUPS512, IX86_BUILTIN_MAXPD512, IX86_BUILTIN_MAXPS512, IX86_BUILTIN_MAXSD_MASK, IX86_BUILTIN_MAXSS_MASK, IX86_BUILTIN_MINPD512, IX86_BUILTIN_MINPS512, IX86_BUILTIN_MINSD_MASK, IX86_BUILTIN_MINSS_MASK, IX86_BUILTIN_MOVAPD512, IX86_BUILTIN_MOVAPS512, IX86_BUILTIN_MOVDDUP512, IX86_BUILTIN_MOVDQA32LOAD512, IX86_BUILTIN_MOVDQA32STORE512, IX86_BUILTIN_MOVDQA32_512, IX86_BUILTIN_MOVDQA64LOAD512, IX86_BUILTIN_MOVDQA64STORE512, IX86_BUILTIN_MOVDQA64_512, IX86_BUILTIN_MOVESD, IX86_BUILTIN_MOVESS, IX86_BUILTIN_MOVNTDQ512, IX86_BUILTIN_MOVNTPD512, IX86_BUILTIN_MOVNTPS512, IX86_BUILTIN_MOVSHDUP512, IX86_BUILTIN_MOVSLDUP512, IX86_BUILTIN_MULPD512, IX86_BUILTIN_MULPS512, IX86_BUILTIN_MULSD_MASK, IX86_BUILTIN_MULSS_MASK, IX86_BUILTIN_PABSD512, IX86_BUILTIN_PABSQ512, IX86_BUILTIN_PADDD512, IX86_BUILTIN_PADDQ512, IX86_BUILTIN_PANDD512, IX86_BUILTIN_PANDND512, IX86_BUILTIN_PANDNQ512, IX86_BUILTIN_PANDQ512, IX86_BUILTIN_PBROADCASTD512, IX86_BUILTIN_PBROADCASTD512_GPR, IX86_BUILTIN_PBROADCASTMB512, IX86_BUILTIN_PBROADCASTMW512, IX86_BUILTIN_PBROADCASTQ512, IX86_BUILTIN_PBROADCASTQ512_GPR, IX86_BUILTIN_PBROADCASTQ512_MEM, IX86_BUILTIN_PCMPEQD512_MASK, IX86_BUILTIN_PCMPEQQ512_MASK, IX86_BUILTIN_PCMPGTD512_MASK, IX86_BUILTIN_PCMPGTQ512_MASK, IX86_BUILTIN_PCOMPRESSD512, IX86_BUILTIN_PCOMPRESSDSTORE512, IX86_BUILTIN_PCOMPRESSQ512, IX86_BUILTIN_PCOMPRESSQSTORE512, IX86_BUILTIN_PEXPANDD512, IX86_BUILTIN_PEXPANDD512Z, IX86_BUILTIN_PEXPANDDLOAD512, IX86_BUILTIN_PEXPANDDLOAD512Z, IX86_BUILTIN_PEXPANDQ512, IX86_BUILTIN_PEXPANDQ512Z, IX86_BUILTIN_PEXPANDQLOAD512, IX86_BUILTIN_PEXPANDQLOAD512Z, IX86_BUILTIN_PMAXSD512, IX86_BUILTIN_PMAXSQ512, IX86_BUILTIN_PMAXUD512, IX86_BUILTIN_PMAXUQ512, IX86_BUILTIN_PMINSD512, IX86_BUILTIN_PMINSQ512, IX86_BUILTIN_PMINUD512, IX86_BUILTIN_PMINUQ512, IX86_BUILTIN_PMOVDB512, IX86_BUILTIN_PMOVDW512, IX86_BUILTIN_PMOVQB512, IX86_BUILTIN_PMOVQD512, IX86_BUILTIN_PMOVQW512, IX86_BUILTIN_PMOVSDB512, IX86_BUILTIN_PMOVSDW512, IX86_BUILTIN_PMOVSQB512, IX86_BUILTIN_PMOVSQD512, IX86_BUILTIN_PMOVSQW512, IX86_BUILTIN_PMOVSXBD512, IX86_BUILTIN_PMOVSXBQ512, IX86_BUILTIN_PMOVSXDQ512, IX86_BUILTIN_PMOVSXWD512, IX86_BUILTIN_PMOVSXWQ512, IX86_BUILTIN_PMOVUSDB512, IX86_BUILTIN_PMOVUSDW512, IX86_BUILTIN_PMOVUSQB512, IX86_BUILTIN_PMOVUSQD512, IX86_BUILTIN_PMOVUSQW512, IX86_BUILTIN_PMOVZXBD512, IX86_BUILTIN_PMOVZXBQ512, IX86_BUILTIN_PMOVZXDQ512, IX86_BUILTIN_PMOVZXWD512, IX86_BUILTIN_PMOVZXWQ512, IX86_BUILTIN_PMULDQ512, IX86_BUILTIN_PMULLD512, IX86_BUILTIN_PMULUDQ512, IX86_BUILTIN_PORD512, IX86_BUILTIN_PORQ512, IX86_BUILTIN_PROLD512, IX86_BUILTIN_PROLQ512, IX86_BUILTIN_PROLVD512, IX86_BUILTIN_PROLVQ512, IX86_BUILTIN_PRORD512, IX86_BUILTIN_PRORQ512, IX86_BUILTIN_PRORVD512, IX86_BUILTIN_PRORVQ512, IX86_BUILTIN_PSHUFD512, IX86_BUILTIN_PSLLD512, IX86_BUILTIN_PSLLDI512, IX86_BUILTIN_PSLLQ512, IX86_BUILTIN_PSLLQI512, IX86_BUILTIN_PSLLVV16SI, IX86_BUILTIN_PSLLVV8DI, IX86_BUILTIN_PSRAD512, IX86_BUILTIN_PSRADI512, IX86_BUILTIN_PSRAQ512, IX86_BUILTIN_PSRAQI512, IX86_BUILTIN_PSRAVV16SI, IX86_BUILTIN_PSRAVV8DI, IX86_BUILTIN_PSRLD512, IX86_BUILTIN_PSRLDI512, IX86_BUILTIN_PSRLQ512, IX86_BUILTIN_PSRLQI512, IX86_BUILTIN_PSRLVV16SI, IX86_BUILTIN_PSRLVV8DI, IX86_BUILTIN_PSUBD512, IX86_BUILTIN_PSUBQ512, IX86_BUILTIN_PTESTMD512, IX86_BUILTIN_PTESTMQ512, IX86_BUILTIN_PTESTNMD512, IX86_BUILTIN_PTESTNMQ512, IX86_BUILTIN_PUNPCKHDQ512, IX86_BUILTIN_PUNPCKHQDQ512, IX86_BUILTIN_PUNPCKLDQ512, IX86_BUILTIN_PUNPCKLQDQ512, IX86_BUILTIN_PXORD512, IX86_BUILTIN_PXORQ512, IX86_BUILTIN_RCP14PD512, IX86_BUILTIN_RCP14PS512, IX86_BUILTIN_RCP14SD, IX86_BUILTIN_RCP14SS, IX86_BUILTIN_RNDSCALEPD, IX86_BUILTIN_RNDSCALEPS, IX86_BUILTIN_RNDSCALESD, IX86_BUILTIN_RNDSCALESS, IX86_BUILTIN_RSQRT14PD512, IX86_BUILTIN_RSQRT14PS512, IX86_BUILTIN_RSQRT14SD, IX86_BUILTIN_RSQRT14SS, IX86_BUILTIN_SCALEFPD512, IX86_BUILTIN_SCALEFPS512, IX86_BUILTIN_SCALEFSD, IX86_BUILTIN_SCALEFSS, IX86_BUILTIN_SHUFPD512, IX86_BUILTIN_SHUFPS512, IX86_BUILTIN_SHUF_F32x4, IX86_BUILTIN_SHUF_F64x2, IX86_BUILTIN_SHUF_I32x4, IX86_BUILTIN_SHUF_I64x2, IX86_BUILTIN_SQRTPD512_MASK, IX86_BUILTIN_SQRTPS512_MASK, IX86_BUILTIN_SQRTSD_MASK, IX86_BUILTIN_SQRTSS_MASK, IX86_BUILTIN_STOREAPD512, IX86_BUILTIN_STOREAPS512, IX86_BUILTIN_STOREDQUDI512, IX86_BUILTIN_STOREDQUSI512, IX86_BUILTIN_STORESD, IX86_BUILTIN_STORESS, IX86_BUILTIN_STOREUPD512, IX86_BUILTIN_STOREUPS512, IX86_BUILTIN_SUBPD512, IX86_BUILTIN_SUBPS512, IX86_BUILTIN_SUBSD_MASK, IX86_BUILTIN_SUBSS_MASK, IX86_BUILTIN_UCMPD512, IX86_BUILTIN_UCMPQ512, IX86_BUILTIN_UNPCKHPD512, IX86_BUILTIN_UNPCKHPS512, IX86_BUILTIN_UNPCKLPD512, IX86_BUILTIN_UNPCKLPS512, IX86_BUILTIN_VCVTSD2SI32, IX86_BUILTIN_VCVTSD2SI64, IX86_BUILTIN_VCVTSD2USI32, IX86_BUILTIN_VCVTSD2USI64, IX86_BUILTIN_VCVTSS2SI32, IX86_BUILTIN_VCVTSS2SI64, IX86_BUILTIN_VCVTSS2USI32, IX86_BUILTIN_VCVTSS2USI64, IX86_BUILTIN_VCVTTSD2SI32, IX86_BUILTIN_VCVTTSD2SI64, IX86_BUILTIN_VCVTTSD2USI32, IX86_BUILTIN_VCVTTSD2USI64, IX86_BUILTIN_VCVTTSS2SI32, IX86_BUILTIN_VCVTTSS2SI64, IX86_BUILTIN_VCVTTSS2USI32, IX86_BUILTIN_VCVTTSS2USI64, IX86_BUILTIN_VFMADDPD512_MASK, IX86_BUILTIN_VFMADDPD512_MASK3, IX86_BUILTIN_VFMADDPD512_MASKZ, IX86_BUILTIN_VFMADDPS512_MASK, IX86_BUILTIN_VFMADDPS512_MASK3, IX86_BUILTIN_VFMADDPS512_MASKZ, IX86_BUILTIN_VFMADDSD3_MASK, IX86_BUILTIN_VFMADDSD3_MASK3, IX86_BUILTIN_VFMADDSD3_MASKZ, IX86_BUILTIN_VFMADDSS3_MASK, IX86_BUILTIN_VFMADDSS3_MASK3, IX86_BUILTIN_VFMADDSS3_MASKZ, IX86_BUILTIN_VFMADDSUBPD512_MASK, IX86_BUILTIN_VFMADDSUBPD512_MASK3, IX86_BUILTIN_VFMADDSUBPD512_MASKZ, IX86_BUILTIN_VFMADDSUBPS512_MASK, IX86_BUILTIN_VFMADDSUBPS512_MASK3, IX86_BUILTIN_VFMADDSUBPS512_MASKZ, IX86_BUILTIN_VFMSUBADDPD512_MASK3, IX86_BUILTIN_VFMSUBADDPS512_MASK3, IX86_BUILTIN_VFMSUBPD512_MASK3, IX86_BUILTIN_VFMSUBPS512_MASK3, IX86_BUILTIN_VFMSUBSD3_MASK3, IX86_BUILTIN_VFMSUBSS3_MASK3, IX86_BUILTIN_VFNMADDPD512_MASK, IX86_BUILTIN_VFNMADDPS512_MASK, IX86_BUILTIN_VFNMSUBPD512_MASK, IX86_BUILTIN_VFNMSUBPD512_MASK3, IX86_BUILTIN_VFNMSUBPS512_MASK, IX86_BUILTIN_VFNMSUBPS512_MASK3, IX86_BUILTIN_VPCLZCNTD512, IX86_BUILTIN_VPCLZCNTQ512, IX86_BUILTIN_VPCONFLICTD512, IX86_BUILTIN_VPCONFLICTQ512, IX86_BUILTIN_VPERMDF512, IX86_BUILTIN_VPERMDI512, IX86_BUILTIN_VPERMI2VARD512, IX86_BUILTIN_VPERMI2VARPD512, IX86_BUILTIN_VPERMI2VARPS512, IX86_BUILTIN_VPERMI2VARQ512, IX86_BUILTIN_VPERMILPD512, IX86_BUILTIN_VPERMILPS512, IX86_BUILTIN_VPERMILVARPD512, IX86_BUILTIN_VPERMILVARPS512, IX86_BUILTIN_VPERMT2VARD512, IX86_BUILTIN_VPERMT2VARD512_MASKZ, IX86_BUILTIN_VPERMT2VARPD512, IX86_BUILTIN_VPERMT2VARPD512_MASKZ, IX86_BUILTIN_VPERMT2VARPS512, IX86_BUILTIN_VPERMT2VARPS512_MASKZ, IX86_BUILTIN_VPERMT2VARQ512, IX86_BUILTIN_VPERMT2VARQ512_MASKZ, IX86_BUILTIN_VPERMVARDF512, IX86_BUILTIN_VPERMVARDI512, IX86_BUILTIN_VPERMVARSF512, IX86_BUILTIN_VPERMVARSI512, IX86_BUILTIN_VTERNLOGD512_MASK, IX86_BUILTIN_VTERNLOGD512_MASKZ, IX86_BUILTIN_VTERNLOGQ512_MASK, IX86_BUILTIN_VTERNLOGQ512_MASKZ, IX86_BUILTIN_KAND16, IX86_BUILTIN_KANDN16, IX86_BUILTIN_KNOT16, IX86_BUILTIN_KOR16, IX86_BUILTIN_KORTESTC16, IX86_BUILTIN_KORTESTZ16, IX86_BUILTIN_KUNPCKBW, IX86_BUILTIN_KXNOR16, IX86_BUILTIN_KXOR16, IX86_BUILTIN_GATHER3SIV8DI, IX86_BUILTIN_SCATTERDIV16SF, IX86_BUILTIN_SCATTERDIV16SI, IX86_BUILTIN_SCATTERDIV8DF, IX86_BUILTIN_SCATTERDIV8DI, IX86_BUILTIN_SCATTERSIV16SF, IX86_BUILTIN_SCATTERSIV16SI, IX86_BUILTIN_SCATTERSIV8DF, IX86_BUILTIN_SCATTERSIV8DI, IX86_BUILTIN_GATHERPFDPS, IX86_BUILTIN_GATHERPFQPS, IX86_BUILTIN_SCATTERPFDPS, IX86_BUILTIN_SCATTERPFQPS, IX86_BUILTIN_EXP2PD_MASK, IX86_BUILTIN_EXP2PS_MASK, IX86_BUILTIN_RCP28PD, IX86_BUILTIN_RCP28PS, IX86_BUILTIN_RSQRT28PD, IX86_BUILTIN_RSQRT28PS. (bdesc_special_args): Add __builtin_ia32_compressstoresf512_mask, __builtin_ia32_compressstoresi512_mask, __builtin_ia32_compressstoredf512_mask, __builtin_ia32_compressstoredi512_mask, __builtin_ia32_expandloadsf512_mask, __builtin_ia32_expandloadsf512_maskz, __builtin_ia32_expandloadsi512_mask, __builtin_ia32_expandloadsi512_maskz, __builtin_ia32_expandloaddf512_mask, __builtin_ia32_expandloaddf512_maskz, __builtin_ia32_expandloaddi512_mask, __builtin_ia32_expandloaddi512_maskz, __builtin_ia32_loaddqusi512_mask, __builtin_ia32_loaddqudi512_mask, __builtin_ia32_loadsd_mask, __builtin_ia32_loadss_mask, __builtin_ia32_loadupd512_mask, __builtin_ia32_loadups512_mask, __builtin_ia32_loadaps512_mask, __builtin_ia32_movdqa32load512_mask, __builtin_ia32_loadapd512_mask, __builtin_ia32_movdqa64load512_mask, __builtin_ia32_movntps512, __builtin_ia32_movntpd512, __builtin_ia32_movntdq512, __builtin_ia32_storedqusi512_mask, __builtin_ia32_storedqudi512_mask, __builtin_ia32_storesd_mask, __builtin_ia32_storess_mask, __builtin_ia32_storeupd512_mask, __builtin_ia32_storeups512_mask, __builtin_ia32_storeaps512_mask, __builtin_ia32_movdqa32store512_mask, __builtin_ia32_storeapd512_mask, __builtin_ia32_movdqa64store512_mask, __builtin_ia32_alignd512_mask, __builtin_ia32_alignq512_mask, __builtin_ia32_blendmd_512_mask, __builtin_ia32_blendmpd_512_mask, __builtin_ia32_blendmps_512_mask, __builtin_ia32_blendmq_512_mask, __builtin_ia32_broadcastf32x4_512, __builtin_ia32_broadcastf64x4_512, __builtin_ia32_broadcasti32x4_512, __builtin_ia32_broadcasti64x4_512, __builtin_ia32_broadcastsd512, __builtin_ia32_broadcastss512, __builtin_ia32_cmpd512_mask, __builtin_ia32_cmpq512_mask, __builtin_ia32_compressdf512_mask, __builtin_ia32_compresssf512_mask, __builtin_ia32_cvtdq2pd512_mask, __builtin_ia32_vcvtps2ph512_mask, __builtin_ia32_cvtudq2pd512_mask, __builtin_ia32_cvtusi2sd32, __builtin_ia32_expanddf512_mask, __builtin_ia32_expanddf512_maskz, __builtin_ia32_expandsf512_mask, __builtin_ia32_expandsf512_maskz, __builtin_ia32_extractf32x4_mask, __builtin_ia32_extractf64x4_mask, __builtin_ia32_extracti32x4_mask, __builtin_ia32_extracti64x4_mask, __builtin_ia32_insertf32x4_mask, __builtin_ia32_insertf64x4_mask, __builtin_ia32_inserti32x4_mask, __builtin_ia32_inserti64x4_mask, __builtin_ia32_movapd512_mask, __builtin_ia32_movaps512_mask, __builtin_ia32_movddup512_mask, __builtin_ia32_movdqa32_512_mask, __builtin_ia32_movdqa64_512_mask, __builtin_ia32_movesd_mask, __builtin_ia32_movess_mask, __builtin_ia32_movshdup512_mask, __builtin_ia32_movsldup512_mask, __builtin_ia32_pabsd512_mask, __builtin_ia32_pabsq512_mask, __builtin_ia32_paddd512_mask, __builtin_ia32_paddq512_mask, __builtin_ia32_pandd512_mask, __builtin_ia32_pandnd512_mask, __builtin_ia32_pandnq512_mask, __builtin_ia32_pandq512_mask, __builtin_ia32_pbroadcastd512, __builtin_ia32_pbroadcastd512_gpr_mask, __builtin_ia32_broadcastmb512, __builtin_ia32_broadcastmw512, __builtin_ia32_pbroadcastq512, __builtin_ia32_pbroadcastq512_gpr_mask, __builtin_ia32_pbroadcastq512_mem_mask, __builtin_ia32_pcmpeqd512_mask, __builtin_ia32_pcmpeqq512_mask, __builtin_ia32_pcmpgtd512_mask, __builtin_ia32_pcmpgtq512_mask, __builtin_ia32_compresssi512_mask, __builtin_ia32_compressdi512_mask, __builtin_ia32_expandsi512_mask, __builtin_ia32_expandsi512_maskz, __builtin_ia32_expanddi512_mask, __builtin_ia32_expanddi512_maskz, __builtin_ia32_pmaxsd512_mask, __builtin_ia32_pmaxsq512_mask, __builtin_ia32_pmaxud512_mask, __builtin_ia32_pmaxuq512_mask, __builtin_ia32_pminsd512_mask, __builtin_ia32_pminsq512_mask, __builtin_ia32_pminud512_mask, __builtin_ia32_pminuq512_mask, __builtin_ia32_pmovdb512_mask, __builtin_ia32_pmovdw512_mask, __builtin_ia32_pmovqb512_mask, __builtin_ia32_pmovqd512_mask, __builtin_ia32_pmovqw512_mask, __builtin_ia32_pmovsdb512_mask, __builtin_ia32_pmovsdw512_mask, __builtin_ia32_pmovsqb512_mask, __builtin_ia32_pmovsqd512_mask, __builtin_ia32_pmovsqw512_mask, __builtin_ia32_pmovsxbd512_mask, __builtin_ia32_pmovsxbq512_mask, __builtin_ia32_pmovsxdq512_mask, __builtin_ia32_pmovsxwd512_mask, __builtin_ia32_pmovsxwq512_mask, __builtin_ia32_pmovusdb512_mask, __builtin_ia32_pmovusdw512_mask, __builtin_ia32_pmovusqb512_mask, __builtin_ia32_pmovusqd512_mask, __builtin_ia32_pmovusqw512_mask, __builtin_ia32_pmovzxbd512_mask, __builtin_ia32_pmovzxbq512_mask, __builtin_ia32_pmovzxdq512_mask, __builtin_ia32_pmovzxwd512_mask, __builtin_ia32_pmovzxwq512_mask, __builtin_ia32_pmuldq512_mask, __builtin_ia32_pmulld512_mask, __builtin_ia32_pmuludq512_mask, __builtin_ia32_pord512_mask, __builtin_ia32_porq512_mask, __builtin_ia32_prold512_mask, __builtin_ia32_prolq512_mask, __builtin_ia32_prolvd512_mask, __builtin_ia32_prolvq512_mask, __builtin_ia32_prord512_mask, __builtin_ia32_prorq512_mask, __builtin_ia32_prorvd512_mask, __builtin_ia32_prorvq512_mask, __builtin_ia32_pshufd512_mask, __builtin_ia32_pslld512_mask, __builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask, __builtin_ia32_psllqi512_mask, __builtin_ia32_psllv16si_mask, __builtin_ia32_psllv8di_mask, __builtin_ia32_psrad512_mask, __builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask, __builtin_ia32_psraqi512_mask, __builtin_ia32_psrav16si_mask, __builtin_ia32_psrav8di_mask, __builtin_ia32_psrld512_mask, __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask, __builtin_ia32_psrlqi512_mask, __builtin_ia32_psrlv16si_mask, __builtin_ia32_psrlv8di_mask, __builtin_ia32_psubd512_mask, __builtin_ia32_psubq512_mask, __builtin_ia32_ptestmd512, __builtin_ia32_ptestmq512, __builtin_ia32_ptestnmd512, __builtin_ia32_ptestnmq512, __builtin_ia32_punpckhdq512_mask, __builtin_ia32_punpckhqdq512_mask, __builtin_ia32_punpckldq512_mask, __builtin_ia32_punpcklqdq512_mask, __builtin_ia32_pxord512_mask, __builtin_ia32_pxorq512_mask, __builtin_ia32_rcp14pd512_mask, __builtin_ia32_rcp14ps512_mask, __builtin_ia32_rcp14sd_mask, __builtin_ia32_rcp14ss_mask, __builtin_ia32_rsqrt14pd512_mask, __builtin_ia32_rsqrt14ps512_mask, __builtin_ia32_rsqrt14sd_mask, __builtin_ia32_rsqrt14ss_mask, __builtin_ia32_shufpd512_mask, __builtin_ia32_shufps512_mask, __builtin_ia32_shuf_f32x4_mask, __builtin_ia32_shuf_f64x2_mask, __builtin_ia32_shuf_i32x4_mask, __builtin_ia32_shuf_i64x2_mask, __builtin_ia32_ucmpd512_mask, __builtin_ia32_ucmpq512_mask, __builtin_ia32_unpckhpd512_mask, __builtin_ia32_unpckhps512_mask, __builtin_ia32_unpcklpd512_mask, __builtin_ia32_unpcklps512_mask, __builtin_ia32_vplzcntd_512_mask, __builtin_ia32_vplzcntq_512_mask, __builtin_ia32_vpconflictsi_512_mask, __builtin_ia32_vpconflictdi_512_mask, __builtin_ia32_permdf512_mask, __builtin_ia32_permdi512_mask, __builtin_ia32_vpermi2vard512_mask, __builtin_ia32_vpermi2varpd512_mask, __builtin_ia32_vpermi2varps512_mask, __builtin_ia32_vpermi2varq512_mask, __builtin_ia32_vpermilpd512_mask, __builtin_ia32_vpermilps512_mask, __builtin_ia32_vpermilvarpd512_mask, __builtin_ia32_vpermilvarps512_mask, __builtin_ia32_vpermt2vard512_mask, __builtin_ia32_vpermt2vard512_maskz, __builtin_ia32_vpermt2varpd512_mask, __builtin_ia32_vpermt2varpd512_maskz, __builtin_ia32_vpermt2varps512_mask, __builtin_ia32_vpermt2varps512_maskz, __builtin_ia32_vpermt2varq512_mask, __builtin_ia32_vpermt2varq512_maskz, __builtin_ia32_permvardf512_mask, __builtin_ia32_permvardi512_mask, __builtin_ia32_permvarsf512_mask, __builtin_ia32_permvarsi512_mask, __builtin_ia32_pternlogd512_mask, __builtin_ia32_pternlogd512_maskz, __builtin_ia32_pternlogq512_mask, __builtin_ia32_pternlogq512_maskz, __builtin_ia32_copysignps512, __builtin_ia32_copysignpd512, __builtin_ia32_sqrtpd512, __builtin_ia32_sqrtps512, __builtin_ia32_exp2ps, __builtin_ia32_roundpd_az_vec_pack_sfix512, __builtin_ia32_floorpd_vec_pack_sfix512, __builtin_ia32_ceilpd_vec_pack_sfix512, __builtin_ia32_kandhi, __builtin_ia32_kandnhi, __builtin_ia32_knothi, __builtin_ia32_korhi, __builtin_ia32_kortestchi, __builtin_ia32_kortestzhi, __builtin_ia32_kunpckhi, __builtin_ia32_kxnorhi, __builtin_ia32_kxorhi, __builtin_ia32_addpd512_mask, __builtin_ia32_addps512_mask, __builtin_ia32_addsd_mask, __builtin_ia32_addss_mask, __builtin_ia32_cmppd512_mask, __builtin_ia32_cmpps512_mask, __builtin_ia32_cmpsd_mask, __builtin_ia32_cmpss_mask, __builtin_ia32_vcomisd, __builtin_ia32_vcomiss, __builtin_ia32_cvtdq2ps512_mask, __builtin_ia32_cvtpd2dq512_mask, __builtin_ia32_cvtpd2ps512_mask, __builtin_ia32_cvtpd2udq512_mask, __builtin_ia32_vcvtph2ps512_mask, __builtin_ia32_cvtps2dq512_mask, __builtin_ia32_cvtps2pd512_mask, __builtin_ia32_cvtps2udq512_mask, __builtin_ia32_cvtsd2ss_mask, __builtin_ia32_cvtsi2sd64, __builtin_ia32_cvtsi2ss32, __builtin_ia32_cvtsi2ss64, __builtin_ia32_cvtss2sd_mask, __builtin_ia32_cvttpd2dq512_mask, __builtin_ia32_cvttpd2udq512_mask, __builtin_ia32_cvttps2dq512_mask, __builtin_ia32_cvttps2udq512_mask, __builtin_ia32_cvtudq2ps512_mask, __builtin_ia32_cvtusi2sd64, __builtin_ia32_cvtusi2ss32, __builtin_ia32_cvtusi2ss64, __builtin_ia32_divpd512_mask, __builtin_ia32_divps512_mask, __builtin_ia32_divsd_mask, __builtin_ia32_divss_mask, __builtin_ia32_fixupimmpd512_mask, __builtin_ia32_fixupimmpd512_maskz, __builtin_ia32_fixupimmps512_mask, __builtin_ia32_fixupimmps512_maskz, __builtin_ia32_fixupimmsd_mask, __builtin_ia32_fixupimmsd_maskz, __builtin_ia32_fixupimmss_mask, __builtin_ia32_fixupimmss_maskz, __builtin_ia32_getexppd512_mask, __builtin_ia32_getexpps512_mask, __builtin_ia32_getexpsd128_mask, __builtin_ia32_getexpss128_mask, __builtin_ia32_getmantpd512_mask, __builtin_ia32_getmantps512_mask, __builtin_ia32_getmantsd_mask, __builtin_ia32_getmantss_mask, __builtin_ia32_maxpd512_mask, __builtin_ia32_maxps512_mask, __builtin_ia32_maxsd_mask, __builtin_ia32_maxss_mask, __builtin_ia32_minpd512_mask, __builtin_ia32_minps512_mask, __builtin_ia32_minsd_mask, __builtin_ia32_minss_mask, __builtin_ia32_mulpd512_mask, __builtin_ia32_mulps512_mask, __builtin_ia32_mulsd_mask, __builtin_ia32_mulss_mask, __builtin_ia32_rndscalepd_mask, __builtin_ia32_rndscaleps_mask, __builtin_ia32_rndscalesd_mask, __builtin_ia32_rndscaless_mask, __builtin_ia32_scalefpd512_mask, __builtin_ia32_scalefps512_mask, __builtin_ia32_scalefsd_mask, __builtin_ia32_scalefss_mask, __builtin_ia32_sqrtpd512_mask, __builtin_ia32_sqrtps512_mask, __builtin_ia32_sqrtsd_mask, __builtin_ia32_sqrtss_mask, __builtin_ia32_subpd512_mask, __builtin_ia32_subps512_mask, __builtin_ia32_subsd_mask, __builtin_ia32_subss_mask, __builtin_ia32_vcvtsd2si32, __builtin_ia32_vcvtsd2si64, __builtin_ia32_vcvtsd2usi32, __builtin_ia32_vcvtsd2usi64, __builtin_ia32_vcvtss2si32, __builtin_ia32_vcvtss2si64, __builtin_ia32_vcvtss2usi32, __builtin_ia32_vcvtss2usi64, __builtin_ia32_vcvttsd2si32, __builtin_ia32_vcvttsd2si64, __builtin_ia32_vcvttsd2usi32, __builtin_ia32_vcvttsd2usi64, __builtin_ia32_vcvttss2si32, __builtin_ia32_vcvttss2si64, __builtin_ia32_vcvttss2usi32, __builtin_ia32_vcvttss2usi64, __builtin_ia32_vfmaddpd512_mask, __builtin_ia32_vfmaddpd512_mask3, __builtin_ia32_vfmaddpd512_maskz, __builtin_ia32_vfmaddps512_mask, __builtin_ia32_vfmaddps512_mask3, __builtin_ia32_vfmaddps512_maskz, __builtin_ia32_vfmaddsd3_mask, __builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz, __builtin_ia32_vfmaddss3_mask, __builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz, __builtin_ia32_vfmaddsubpd512_mask, __builtin_ia32_vfmaddsubpd512_mask3, __builtin_ia32_vfmaddsubpd512_maskz, __builtin_ia32_vfmaddsubps512_mask, __builtin_ia32_vfmaddsubps512_mask3, __builtin_ia32_vfmaddsubps512_maskz, __builtin_ia32_vfmsubaddpd512_mask3, __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_exp2pd_mask, __builtin_ia32_exp2ps_mask, __builtin_ia32_rcp28pd_mask, __builtin_ia32_rcp28ps_mask, __builtin_ia32_rsqrt28pd_mask, __builtin_ia32_rsqrt28ps_mask, __builtin_ia32_gathersiv16sf, __builtin_ia32_gathersiv8df, __builtin_ia32_gatherdiv16sf, __builtin_ia32_gatherdiv8df, __builtin_ia32_gathersiv16si, __builtin_ia32_gathersiv8di, __builtin_ia32_gatherdiv16si, __builtin_ia32_gatherdiv8di, __builtin_ia32_gatheraltsiv8df , __builtin_ia32_gatheraltdiv8sf , __builtin_ia32_gatheraltsiv8di , __builtin_ia32_gatheraltdiv8si , __builtin_ia32_scattersiv16sf, __builtin_ia32_scattersiv8df, __builtin_ia32_scatterdiv16sf, __builtin_ia32_scatterdiv8df, __builtin_ia32_scattersiv16si, __builtin_ia32_scattersiv8di, __builtin_ia32_scatterdiv16si, __builtin_ia32_scatterdiv8di, __builtin_ia32_gatherpfdps, __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, __builtin_ia32_scatterpfqps. (ix86_init_mmx_sse_builtins): Handle builtins with AVX512 embeded rounding, builtins for AVX512 gathers/scatters. (ix86_expand_args_builtin): Handle new functions types, add warnings for masked builtins. (ix86_erase_embedded_rounding): Handle patterns with embedded rounding. (ix86_expand_sse_comi_round): Ditto. (ix86_expand_round_builtin): Ditto. (ix86_expand_builtin): Handle AVX512's gathers/scatters and kortest{z}. Call ix86_expand_round_builtin. * config/i386/immintrin.h: Add avx512fintrin.h, avx512erintrin.h, avx512pfintrin.h, avx512cdintrin.h. testsuite/ * gcc.target/i386/avx-1.c: Extend to AVX-512. * gcc.target/i386/sse-22.c: Ditto. * gcc.target/i386/sse-23.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206261 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 549 ++ gcc/config.gcc | 14 +- gcc/config/i386/avx512cdintrin.h | 219 + gcc/config/i386/avx512erintrin.h | 333 + gcc/config/i386/avx512fintrin.h | 12147 +++++++++++++++++++++++++++++++ gcc/config/i386/avx512pfintrin.h | 130 + gcc/config/i386/i386-builtin-types.def | 259 + gcc/config/i386/i386.c | 1745 ++++- gcc/config/i386/immintrin.h | 8 + gcc/testsuite/ChangeLog | 30 +- gcc/testsuite/gcc.target/i386/avx-1.c | 175 + gcc/testsuite/gcc.target/i386/sse-22.c | 424 +- gcc/testsuite/gcc.target/i386/sse-23.c | 175 +- 13 files changed, 16150 insertions(+), 58 deletions(-) create mode 100644 gcc/config/i386/avx512cdintrin.h create mode 100644 gcc/config/i386/avx512erintrin.h create mode 100644 gcc/config/i386/avx512fintrin.h create mode 100644 gcc/config/i386/avx512pfintrin.h (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1bb86a88fc9..be9476cae0d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,552 @@ +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config.gcc (extra_headers): Add avx512fintrin.h, avx512cdintrin.h, + avx512erintrin.h, avx512pfintrin.h. + * config/i386/avx512cdintrin.h: New file. + * config/i386/avx512erintrin.h: New file. + * config/i386/avx512fintrin.h: New file. + * config/i386/avx512pfintrin.h: New file. + * config/i386/i386-builtin-types.def: Add V16UHI, V32SF, V16SF, V8DF, + V8DI, V16SI, V64QI, PV8DF, PV8DI, PV16SI, PV16SF, PCV8DF, PCV16SF, + PCV8DI, PCV16SI, V16QI_FTYPE_V16SI, V8DF_FTYPE_V8SI, V8DF_FTYPE_V8DF, + V8HI_FTYPE_V8DI, V16SF_FTYPE_V16SF, V8SI_FTYPE_V8DI, V8SF_FTYPE_V8DF, + V8SF_FTYPE_V8DF_V8SF_QI, V16HI_FTYPE_V16SI, V16SF_FTYPE_FLOAT, + V16SI_FTYPE_INT, V8DF_FTYPE_DOUBLE, V8DI_FTYPE_INT64, + V16SF_FTYPE_V4SF, V8DF_FTYPE_V4DF, V8DI_FTYPE_V4DI, V16QI_FTYPE_V8DI, + UINT_FTYPE_V4SF, UINT64_FTYPE_V4SF, UINT_FTYPE_V2DF, + UINT64_FTYPE_V2DF, V16SI_FTYPE_V16SI, V16SI_FTYPE_V16SI_V16SI_HI, + V8DI_FTYPE_V8DI, V8DI_FTYPE_V8DI_V8DI_QI, V16SI_FTYPE_PV4SI, + V16SF_FTYPE_PV4SF, V8DI_FTYPE_PV4DI, V8DF_FTYPE_PV4DF, + V8UHI_FTYPE_V8UHI, V8USI_FTYPE_V8USI, V2DF_FTYPE_V2DF_UINT, + V2DF_FTYPE_V2DF_UINT64, V4DF_FTYPE_V8DF_INT, + V4DF_FTYPE_V8DF_INT_V4DF_QI, V8DF_FTYPE_V8DF_V8DI, + V4SF_FTYPE_V4SF_UINT, V4SF_FTYPE_V4SF_UINT64, + INT_FTYPE_V4SF_V4SF_INT_INT, INT_FTYPE_V2DF_V2DF_INT_INT, + V16SF_FTYPE_V16SF_INT, V4SF_FTYPE_V16SF_INT, + V4SF_FTYPE_V16SF_INT_V4SF_QI, V16SF_FTYPE_V16SF_V16SF, + V16SF_FTYPE_V16SF_V16SI, V8DF_FTYPE_V8DF_V4DF_INT_V8DF_QI, + V8DF_FTYPE_V8DF_V8DF_INT_V8DF_QI, V8DF_FTYPE_V8DF_INT_V8DF_QI, + V8DF_FTYPE_V8DF_V8DF_V8DI_INT_QI_INT, V8DF_FTYPE_V8DF_V8DF, + V16SF_FTYPE_V16SF_V16SF_INT, V16SF_FTYPE_V16SF_V16SF_INT_V16SF_HI, + V16SF_FTYPE_V16SF_INT_V16SF_HI, V16SI_FTYPE_V16SI_V4SI_INT_V16SI_HI, + V16SF_FTYPE_V16SF_V16SF_V16SI_INT, + V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI, + V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI_INT, + V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI, + V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI_INT, + V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI, + V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI_INT, V16SF_FTYPE_V16SF_V4SF_INT, + V16SF_FTYPE_V16SF_V4SF_INT_V16SF_HI, V16HI_FTYPE_V16SF_INT, + V16HI_FTYPE_V16SF_INT_V16HI_HI, V16HI_FTYPE_V16HI_V16HI_INT_V16HI_HI, + V16SI_FTYPE_V16SI_V4SI, V16SI_FTYPE_V16SI_V4SI_INT, + V4SI_FTYPE_V16SI_INT, V4SI_FTYPE_V16SI_INT_V4SI_QI, + V16SI_FTYPE_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_INT_V16SI_HI, + V16SI_FTYPE_V16SI_SI, V16SI_FTYPE_V16SI_INT, + V16SI_FTYPE_V16SI_V4SI_V16SI_HI, V16SI_FTYPE_V16SI_INT_V16SI_HI, + V8DI_FTYPE_V8DI_V8DI, V16SI_FTYPE_V8DF_V8DF, + V8DI_FTYPE_V8DI_V8DI_INT_V8DI_QI, V8DI_FTYPE_V8DI_V4DI_INT_V8DI_QI, + V8DI_FTYPE_V8DI_V2DI, V4DI_FTYPE_V8DI_INT, + V4DI_FTYPE_V8DI_INT_V4DI_QI, V8DI_FTYPE_V8DI_V2DI_V8DI_QI, + V8DI_FTYPE_V8DI_INT_V8DI_QI, VOID_FTYPE_PDOUBLE_V8DF, + VOID_FTYPE_PFLOAT_V16SF, VOID_FTYPE_PV8DI_V8DI, HI_FTYPE_HI, + HI_FTYPE_HI_HI, HI_FTYPE_HI_INT, QI_FTYPE_V8DI_V8DI, + QI_FTYPE_V8DI_V8DI_QI, HI_FTYPE_V16SI_V16SI, HI_FTYPE_V16SI_V16SI_HI, + QI_FTYPE_V8DI_V8DI_INT, QI_FTYPE_V8DI_V8DI_INT_QI, + HI_FTYPE_V16SI_V16SI_INT, HI_FTYPE_V16SI_V16SI_INT ,HI, + QI_FTYPE_V8DF_V8DF_INT, QI_FTYPE_V8DF_V8DF_INT_QI, + QI_FTYPE_V8DF_V8DF_INT_QI_INT, HI_FTYPE_V16SF_V16SF_INT, + HI_FTYPE_V16SF_V16SF_INT_HI, HI_FTYPE_V16SF_V16SF_INT_HI_INT, + QI_FTYPE_V2DF_V2DF_INT, QI_FTYPE_V2DF_V2DF_INT_QI, + QI_FTYPE_V2DF_V2DF_INT_QI_INT, QI_FTYPE_V4SF_V4SF_INT, + QI_FTYPE_V4SF_V4SF_INT_QI, QI_FTYPE_V4SF_V4SF_INT_QI_INT, + V16SI_FTYPE_HI, V8DI_FTYPE_QI, V8DF_FTYPE_V8DF_V8DF_V8DF, + V16SF_FTYPE_V16SF_V16SF_V16SF, V8DF_FTYPE_V8DF_V8DF_QI, + V8DF_FTYPE_V8SF_V8DF_QI, V8DF_FTYPE_V8SI_V8DF_QI, + V8DI_FTYPE_V8SI_V8DI_QI, V8DI_FTYPE_V8HI_V8DI_QI, + V8DI_FTYPE_V16QI_V8DI_QI, V8DI_FTYPE_V8DI_V8DI_V8DI_QI, + V8DF_FTYPE_V8DI_V8DF_V8DF, V8DF_FTYPE_V8DI_V8DF_V8DF_QI, + V8DF_FTYPE_V8DF_V8DI_V8DF_QI, V8DF_FTYPE_V8DF_V8DF_V8DF_QI, + V16SI_FTYPE_V16SI_V16SI_V16SI_HI, V2DF_FTYPE_V2DF_V2DF_V2DF_QI, + V2DF_FTYPE_V2DF_V4SF_V2DF_QI, V16SF_FTYPE_V16SF_V16SF_HI, + V16SF_FTYPE_V16SI_V16SF_HI, V16SF_FTYPE_V16SF_V16SF_V16SF_HI, + V16SF_FTYPE_V16SI_V16SF_V16SF, V16SF_FTYPE_V16SI_V16SF_V16SF_HI, + V16SF_FTYPE_V16SF_V16SI_V16SF_HI, V4SF_FTYPE_V4SF_V2DF_V4SF_QI, + V4SF_FTYPE_V4SF_V4SF_V4SF_QI, V16SF_FTYPE_V4SF_V16SF_HI, + V8DF_FTYPE_V4DF_V8DF_QI, V8DF_FTYPE_V2DF_V8DF_QI, + V16SI_FTYPE_V4SI_V16SI_HI, V16SI_FTYPE_SI_V16SI_HI, + V16SI_FTYPE_V16HI_V16SI_HI, V16SI_FTYPE_V16QI_V16SI_HI, + V8SI_FTYPE_V8DF_V8SI_QI, V8DI_FTYPE_V4DI_V8DI_QI, + V8DI_FTYPE_V2DI_V8DI_QI, V8DI_FTYPE_DI_V8DI_QI, + V16SF_FTYPE_PCV16SF_V16SF_HI, V8DF_FTYPE_PCV8DF_V8DF_QI, + V16SI_FTYPE_PCV16SI_V16SI_HI, V8DI_FTYPE_PCV8DI_V8DI_QI, + V2DF_FTYPE_PCDOUBLE_V2DF_QI, V4SF_FTYPE_PCFLOAT_V4SF_QI, + V16QI_FTYPE_V16SI_V16QI_HI, V16HI_FTYPE_V16SI_V16HI_HI, + V8SI_FTYPE_V8DI_V8SI_QI, V8HI_FTYPE_V8DI_V8HI_QI, + V16QI_FTYPE_V8DI_V16QI_QI, VOID_FTYPE_PV8DF_V8DF_QI, + VOID_FTYPE_PV16SF_V16SF_HI, VOID_FTYPE_PV8DI_V8DI_QI, + VOID_FTYPE_PV16SI_V16SI_HI, VOID_FTYPE_PDOUBLE_V2DF_QI, + VOID_FTYPE_PFLOAT_V4SF_QI, V16SI_FTYPE_V16SF_V16SI_HI, + V8DI_FTYPE_V8DI_V8DI_V8DI_INT_QI, + V16SI_FTYPE_V16SI_V16SI_V16SI_INT_HI, V8DI_FTYPE_V8DI_V8DI_V8DI, + V16SI_FTYPE_V16SI_V16SI_V16SI, V8DF_FTYPE_V8DF_V8DI_V8DF, + V16SF_FTYPE_V16SF_V16SI_V16SF, V4SF_FTYPE_V4SF_V4SF_INT_V4SF_QI, + V2DF_FTYPE_V2DF_V2DF_INT_V2DF_QI, V8DI_FTYPE_V16SI_V16SI_V8DI_QI, + UINT64_FTYPE_V2DF_INT, UINT64_FTYPE_V4SF_INT, UINT_FTYPE_V2DF_INT, + UINT_FTYPE_V4SF_INT, INT64_FTYPE_V2DF_INT, INT64_FTYPE_V4SF_INT, + INT_FTYPE_V2DF_INT, INT_FTYPE_V4SF_INT, V2DF_FTYPE_V2DF_UINT64_INT, + V4SF_FTYPE_V4SF_UINT64_INT, V4SF_FTYPE_V4SF_UINT_INT, + V2DF_FTYPE_V2DF_INT64_INT, V4SF_FTYPE_V4SF_INT64_INT, + V4SF_FTYPE_V4SF_INT_INT, V16SI_FTYPE_V16SF_V16SI_HI_INT, + V16SF_FTYPE_V16SI_V16SF_HI_INT, V16SF_FTYPE_V16SF_V16SF_HI_INT, + V16SF_FTYPE_V16HI_V16SF_HI_INT, V8SI_FTYPE_V8DF_V8SI_QI_INT, + V8SF_FTYPE_V8DF_V8SF_QI_INT, V8DF_FTYPE_V8DF_V8DF_QI_INT, + V8DF_FTYPE_V8SF_V8DF_QI_INT, V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT, + V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT, V4SF_FTYPE_V4SF_V4SF_V4SF_QI_INT, + V4SF_FTYPE_V4SF_V2DF_V4SF_QI_INT, V2DF_FTYPE_V2DF_V2DF_V2DF_QI_INT, + V2DF_FTYPE_V2DF_V4SF_V2DF_QI_INT, V2DF_FTYPE_V2DF_V2DF_V2DF_INT, + V16SF_FTYPE_V16SF_INT_V16SF_HI_INT, V8DF_FTYPE_V8DF_INT_V8DF_QI_INT, + V4SF_FTYPE_V4SF_V4SF_INT_V4SF_QI_INT, + V2DF_FTYPE_V2DF_V2DF_INT_V2DF_QI_INT, V8DI_FTYPE_V8DI_SI_V8DI_V8DI, + V16SF_FTYPE_V16SF_PCFLOAT_V16SI_HI_INT, + V16SF_FTYPE_V16SF_PCFLOAT_V8DI_HI_INT, + V8DF_FTYPE_V8DF_PCDOUBLE_V8SI_QI_INT, + V8DF_FTYPE_V8DF_PCDOUBLE_V16SI_QI_INT, + V8SF_FTYPE_V8SF_PCFLOAT_V8DI_QI_INT, + V8DF_FTYPE_V8DF_PCDOUBLE_V8DI_QI_INT, + V16SI_FTYPE_V16SI_PCINT_V16SI_HI_INT, + V16SI_FTYPE_V16SI_PCINT_V8DI_HI_INT, + V8DI_FTYPE_V8DI_PCINT64_V8SI_QI_INT, + V8DI_FTYPE_V8DI_PCINT64_V16SI_QI_INT, + V8SI_FTYPE_V8SI_PCINT_V8DI_QI_INT, + V8DI_FTYPE_V8DI_PCINT64_V8DI_QI_INT, + VOID_FTYPE_PFLOAT_HI_V16SI_V16SF_INT, + VOID_FTYPE_PDOUBLE_QI_V8SI_V8DF_INT, + VOID_FTYPE_PFLOAT_QI_V8DI_V8SF_INT, + VOID_FTYPE_PDOUBLE_QI_V8DI_V8DF_INT, + VOID_FTYPE_PINT_HI_V16SI_V16SI_INT, + VOID_FTYPE_PLONGLONG_QI_V8SI_V8DI_INT, + VOID_FTYPE_PINT_QI_V8DI_V8SI_INT, + VOID_FTYPE_PLONGLONG_QI_V8DI_V8DI_INT, + VOID_FTYPE_HI_V16SI_PCINT_INT_INT, VOID_FTYPE_QI_V8DI_PCINT_INT_INT. + (ALIAS): Add DEF_FUNCTION_TYPE_ALIAS (V16SI_FTYPE_V8DF_V8DF, ROUND). + * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_ADDPD512, + IX86_BUILTIN_ADDPS512, IX86_BUILTIN_ADDSD_MASK, + IX86_BUILTIN_ADDSS_MASK, IX86_BUILTIN_ALIGND512, + IX86_BUILTIN_ALIGNQ512, IX86_BUILTIN_BLENDMD512, + IX86_BUILTIN_BLENDMPD512, IX86_BUILTIN_BLENDMPS512, + IX86_BUILTIN_BLENDMQ512, IX86_BUILTIN_BROADCASTF32X4_512, + IX86_BUILTIN_BROADCASTF64X4_512, IX86_BUILTIN_BROADCASTI32X4_512, + IX86_BUILTIN_BROADCASTI64X4_512, IX86_BUILTIN_BROADCASTSD512, + IX86_BUILTIN_BROADCASTSS512, IX86_BUILTIN_CMPD512, + IX86_BUILTIN_CMPPD512, IX86_BUILTIN_CMPPS512, IX86_BUILTIN_CMPQ512, + IX86_BUILTIN_CMPSD_MASK, IX86_BUILTIN_CMPSS_MASK, IX86_BUILTIN_COMIDF, + IX86_BUILTIN_COMISF, IX86_BUILTIN_COMPRESSPD512, + IX86_BUILTIN_COMPRESSPDSTORE512, IX86_BUILTIN_COMPRESSPS512, + IX86_BUILTIN_COMPRESSPSSTORE512, IX86_BUILTIN_CVTDQ2PD512, + IX86_BUILTIN_CVTDQ2PS512, IX86_BUILTIN_CVTPD2DQ512, + IX86_BUILTIN_CVTPD2PS512, IX86_BUILTIN_CVTPD2UDQ512, + IX86_BUILTIN_CVTPH2PS512, IX86_BUILTIN_CVTPS2DQ512, + IX86_BUILTIN_CVTPS2PD512, IX86_BUILTIN_CVTPS2PH512, + IX86_BUILTIN_CVTPS2UDQ512, IX86_BUILTIN_CVTSD2SS_MASK, + IX86_BUILTIN_CVTSI2SD64, IX86_BUILTIN_CVTSI2SS32, + IX86_BUILTIN_CVTSI2SS64, IX86_BUILTIN_CVTSS2SD_MASK, + IX86_BUILTIN_CVTTPD2DQ512, IX86_BUILTIN_CVTTPD2UDQ512, + IX86_BUILTIN_CVTTPS2DQ512, IX86_BUILTIN_CVTTPS2UDQ512, + IX86_BUILTIN_CVTUDQ2PD512, IX86_BUILTIN_CVTUDQ2PS512, + IX86_BUILTIN_CVTUSI2SD32, IX86_BUILTIN_CVTUSI2SD64, + IX86_BUILTIN_CVTUSI2SS32, IX86_BUILTIN_CVTUSI2SS64, + IX86_BUILTIN_DIVPD512, IX86_BUILTIN_DIVPS512, IX86_BUILTIN_DIVSD_MASK, + IX86_BUILTIN_DIVSS_MASK, IX86_BUILTIN_EXPANDPD512, + IX86_BUILTIN_EXPANDPD512Z, IX86_BUILTIN_EXPANDPDLOAD512, + IX86_BUILTIN_EXPANDPDLOAD512Z, IX86_BUILTIN_EXPANDPS512, + IX86_BUILTIN_EXPANDPS512Z, IX86_BUILTIN_EXPANDPSLOAD512, + IX86_BUILTIN_EXPANDPSLOAD512Z, IX86_BUILTIN_EXTRACTF32X4, + IX86_BUILTIN_EXTRACTF64X4, IX86_BUILTIN_EXTRACTI32X4, + IX86_BUILTIN_EXTRACTI64X4, IX86_BUILTIN_FIXUPIMMPD512_MASK, + IX86_BUILTIN_FIXUPIMMPD512_MASKZ, IX86_BUILTIN_FIXUPIMMPS512_MASK, + IX86_BUILTIN_FIXUPIMMPS512_MASKZ, IX86_BUILTIN_FIXUPIMMSD128_MASK, + IX86_BUILTIN_FIXUPIMMSD128_MASKZ, IX86_BUILTIN_FIXUPIMMSS128_MASK, + IX86_BUILTIN_FIXUPIMMSS128_MASKZ, IX86_BUILTIN_GETEXPPD512, + IX86_BUILTIN_GETEXPPS512, IX86_BUILTIN_GETEXPSD128, + IX86_BUILTIN_GETEXPSS128, IX86_BUILTIN_GETMANTPD512, + IX86_BUILTIN_GETMANTPS512, IX86_BUILTIN_GETMANTSD128, + IX86_BUILTIN_GETMANTSS128, IX86_BUILTIN_INSERTF32X4, + IX86_BUILTIN_INSERTF64X4, IX86_BUILTIN_INSERTI32X4, + IX86_BUILTIN_INSERTI64X4, IX86_BUILTIN_LOADAPD512, + IX86_BUILTIN_LOADAPS512, IX86_BUILTIN_LOADDQUDI512, + IX86_BUILTIN_LOADDQUSI512, IX86_BUILTIN_LOADSD, IX86_BUILTIN_LOADSS, + IX86_BUILTIN_LOADUPD512, IX86_BUILTIN_LOADUPS512, + IX86_BUILTIN_MAXPD512, IX86_BUILTIN_MAXPS512, IX86_BUILTIN_MAXSD_MASK, + IX86_BUILTIN_MAXSS_MASK, IX86_BUILTIN_MINPD512, IX86_BUILTIN_MINPS512, + IX86_BUILTIN_MINSD_MASK, IX86_BUILTIN_MINSS_MASK, + IX86_BUILTIN_MOVAPD512, IX86_BUILTIN_MOVAPS512, + IX86_BUILTIN_MOVDDUP512, IX86_BUILTIN_MOVDQA32LOAD512, + IX86_BUILTIN_MOVDQA32STORE512, IX86_BUILTIN_MOVDQA32_512, + IX86_BUILTIN_MOVDQA64LOAD512, IX86_BUILTIN_MOVDQA64STORE512, + IX86_BUILTIN_MOVDQA64_512, IX86_BUILTIN_MOVESD, IX86_BUILTIN_MOVESS, + IX86_BUILTIN_MOVNTDQ512, IX86_BUILTIN_MOVNTPD512, + IX86_BUILTIN_MOVNTPS512, IX86_BUILTIN_MOVSHDUP512, + IX86_BUILTIN_MOVSLDUP512, IX86_BUILTIN_MULPD512, + IX86_BUILTIN_MULPS512, IX86_BUILTIN_MULSD_MASK, + IX86_BUILTIN_MULSS_MASK, IX86_BUILTIN_PABSD512, IX86_BUILTIN_PABSQ512, + IX86_BUILTIN_PADDD512, IX86_BUILTIN_PADDQ512, IX86_BUILTIN_PANDD512, + IX86_BUILTIN_PANDND512, IX86_BUILTIN_PANDNQ512, IX86_BUILTIN_PANDQ512, + IX86_BUILTIN_PBROADCASTD512, IX86_BUILTIN_PBROADCASTD512_GPR, + IX86_BUILTIN_PBROADCASTMB512, IX86_BUILTIN_PBROADCASTMW512, + IX86_BUILTIN_PBROADCASTQ512, IX86_BUILTIN_PBROADCASTQ512_GPR, + IX86_BUILTIN_PBROADCASTQ512_MEM, IX86_BUILTIN_PCMPEQD512_MASK, + IX86_BUILTIN_PCMPEQQ512_MASK, IX86_BUILTIN_PCMPGTD512_MASK, + IX86_BUILTIN_PCMPGTQ512_MASK, IX86_BUILTIN_PCOMPRESSD512, + IX86_BUILTIN_PCOMPRESSDSTORE512, IX86_BUILTIN_PCOMPRESSQ512, + IX86_BUILTIN_PCOMPRESSQSTORE512, IX86_BUILTIN_PEXPANDD512, + IX86_BUILTIN_PEXPANDD512Z, IX86_BUILTIN_PEXPANDDLOAD512, + IX86_BUILTIN_PEXPANDDLOAD512Z, IX86_BUILTIN_PEXPANDQ512, + IX86_BUILTIN_PEXPANDQ512Z, IX86_BUILTIN_PEXPANDQLOAD512, + IX86_BUILTIN_PEXPANDQLOAD512Z, IX86_BUILTIN_PMAXSD512, + IX86_BUILTIN_PMAXSQ512, IX86_BUILTIN_PMAXUD512, + IX86_BUILTIN_PMAXUQ512, IX86_BUILTIN_PMINSD512, + IX86_BUILTIN_PMINSQ512, IX86_BUILTIN_PMINUD512, + IX86_BUILTIN_PMINUQ512, IX86_BUILTIN_PMOVDB512, + IX86_BUILTIN_PMOVDW512, IX86_BUILTIN_PMOVQB512, + IX86_BUILTIN_PMOVQD512, IX86_BUILTIN_PMOVQW512, + IX86_BUILTIN_PMOVSDB512, IX86_BUILTIN_PMOVSDW512, + IX86_BUILTIN_PMOVSQB512, IX86_BUILTIN_PMOVSQD512, + IX86_BUILTIN_PMOVSQW512, IX86_BUILTIN_PMOVSXBD512, + IX86_BUILTIN_PMOVSXBQ512, IX86_BUILTIN_PMOVSXDQ512, + IX86_BUILTIN_PMOVSXWD512, IX86_BUILTIN_PMOVSXWQ512, + IX86_BUILTIN_PMOVUSDB512, IX86_BUILTIN_PMOVUSDW512, + IX86_BUILTIN_PMOVUSQB512, IX86_BUILTIN_PMOVUSQD512, + IX86_BUILTIN_PMOVUSQW512, IX86_BUILTIN_PMOVZXBD512, + IX86_BUILTIN_PMOVZXBQ512, IX86_BUILTIN_PMOVZXDQ512, + IX86_BUILTIN_PMOVZXWD512, IX86_BUILTIN_PMOVZXWQ512, + IX86_BUILTIN_PMULDQ512, IX86_BUILTIN_PMULLD512, + IX86_BUILTIN_PMULUDQ512, IX86_BUILTIN_PORD512, IX86_BUILTIN_PORQ512, + IX86_BUILTIN_PROLD512, IX86_BUILTIN_PROLQ512, IX86_BUILTIN_PROLVD512, + IX86_BUILTIN_PROLVQ512, IX86_BUILTIN_PRORD512, IX86_BUILTIN_PRORQ512, + IX86_BUILTIN_PRORVD512, IX86_BUILTIN_PRORVQ512, + IX86_BUILTIN_PSHUFD512, IX86_BUILTIN_PSLLD512, IX86_BUILTIN_PSLLDI512, + IX86_BUILTIN_PSLLQ512, IX86_BUILTIN_PSLLQI512, + IX86_BUILTIN_PSLLVV16SI, IX86_BUILTIN_PSLLVV8DI, + IX86_BUILTIN_PSRAD512, IX86_BUILTIN_PSRADI512, IX86_BUILTIN_PSRAQ512, + IX86_BUILTIN_PSRAQI512, IX86_BUILTIN_PSRAVV16SI, + IX86_BUILTIN_PSRAVV8DI, IX86_BUILTIN_PSRLD512, IX86_BUILTIN_PSRLDI512, + IX86_BUILTIN_PSRLQ512, IX86_BUILTIN_PSRLQI512, + IX86_BUILTIN_PSRLVV16SI, IX86_BUILTIN_PSRLVV8DI, + IX86_BUILTIN_PSUBD512, IX86_BUILTIN_PSUBQ512, IX86_BUILTIN_PTESTMD512, + IX86_BUILTIN_PTESTMQ512, IX86_BUILTIN_PTESTNMD512, + IX86_BUILTIN_PTESTNMQ512, IX86_BUILTIN_PUNPCKHDQ512, + IX86_BUILTIN_PUNPCKHQDQ512, IX86_BUILTIN_PUNPCKLDQ512, + IX86_BUILTIN_PUNPCKLQDQ512, IX86_BUILTIN_PXORD512, + IX86_BUILTIN_PXORQ512, IX86_BUILTIN_RCP14PD512, + IX86_BUILTIN_RCP14PS512, IX86_BUILTIN_RCP14SD, IX86_BUILTIN_RCP14SS, + IX86_BUILTIN_RNDSCALEPD, IX86_BUILTIN_RNDSCALEPS, + IX86_BUILTIN_RNDSCALESD, IX86_BUILTIN_RNDSCALESS, + IX86_BUILTIN_RSQRT14PD512, IX86_BUILTIN_RSQRT14PS512, + IX86_BUILTIN_RSQRT14SD, IX86_BUILTIN_RSQRT14SS, + IX86_BUILTIN_SCALEFPD512, IX86_BUILTIN_SCALEFPS512, + IX86_BUILTIN_SCALEFSD, IX86_BUILTIN_SCALEFSS, IX86_BUILTIN_SHUFPD512, + IX86_BUILTIN_SHUFPS512, IX86_BUILTIN_SHUF_F32x4, + IX86_BUILTIN_SHUF_F64x2, IX86_BUILTIN_SHUF_I32x4, + IX86_BUILTIN_SHUF_I64x2, + IX86_BUILTIN_SQRTPD512_MASK, IX86_BUILTIN_SQRTPS512_MASK, + IX86_BUILTIN_SQRTSD_MASK, + IX86_BUILTIN_SQRTSS_MASK, IX86_BUILTIN_STOREAPD512, + IX86_BUILTIN_STOREAPS512, IX86_BUILTIN_STOREDQUDI512, + IX86_BUILTIN_STOREDQUSI512, IX86_BUILTIN_STORESD, + IX86_BUILTIN_STORESS, IX86_BUILTIN_STOREUPD512, + IX86_BUILTIN_STOREUPS512, IX86_BUILTIN_SUBPD512, + IX86_BUILTIN_SUBPS512, IX86_BUILTIN_SUBSD_MASK, + IX86_BUILTIN_SUBSS_MASK, IX86_BUILTIN_UCMPD512, IX86_BUILTIN_UCMPQ512, + IX86_BUILTIN_UNPCKHPD512, IX86_BUILTIN_UNPCKHPS512, + IX86_BUILTIN_UNPCKLPD512, IX86_BUILTIN_UNPCKLPS512, + IX86_BUILTIN_VCVTSD2SI32, IX86_BUILTIN_VCVTSD2SI64, + IX86_BUILTIN_VCVTSD2USI32, IX86_BUILTIN_VCVTSD2USI64, + IX86_BUILTIN_VCVTSS2SI32, IX86_BUILTIN_VCVTSS2SI64, + IX86_BUILTIN_VCVTSS2USI32, IX86_BUILTIN_VCVTSS2USI64, + IX86_BUILTIN_VCVTTSD2SI32, IX86_BUILTIN_VCVTTSD2SI64, + IX86_BUILTIN_VCVTTSD2USI32, IX86_BUILTIN_VCVTTSD2USI64, + IX86_BUILTIN_VCVTTSS2SI32, IX86_BUILTIN_VCVTTSS2SI64, + IX86_BUILTIN_VCVTTSS2USI32, IX86_BUILTIN_VCVTTSS2USI64, + IX86_BUILTIN_VFMADDPD512_MASK, IX86_BUILTIN_VFMADDPD512_MASK3, + IX86_BUILTIN_VFMADDPD512_MASKZ, IX86_BUILTIN_VFMADDPS512_MASK, + IX86_BUILTIN_VFMADDPS512_MASK3, IX86_BUILTIN_VFMADDPS512_MASKZ, + IX86_BUILTIN_VFMADDSD3_MASK, IX86_BUILTIN_VFMADDSD3_MASK3, + IX86_BUILTIN_VFMADDSD3_MASKZ, IX86_BUILTIN_VFMADDSS3_MASK, + IX86_BUILTIN_VFMADDSS3_MASK3, IX86_BUILTIN_VFMADDSS3_MASKZ, + IX86_BUILTIN_VFMADDSUBPD512_MASK, IX86_BUILTIN_VFMADDSUBPD512_MASK3, + IX86_BUILTIN_VFMADDSUBPD512_MASKZ, IX86_BUILTIN_VFMADDSUBPS512_MASK, + IX86_BUILTIN_VFMADDSUBPS512_MASK3, IX86_BUILTIN_VFMADDSUBPS512_MASKZ, + IX86_BUILTIN_VFMSUBADDPD512_MASK3, IX86_BUILTIN_VFMSUBADDPS512_MASK3, + IX86_BUILTIN_VFMSUBPD512_MASK3, IX86_BUILTIN_VFMSUBPS512_MASK3, + IX86_BUILTIN_VFMSUBSD3_MASK3, IX86_BUILTIN_VFMSUBSS3_MASK3, + IX86_BUILTIN_VFNMADDPD512_MASK, IX86_BUILTIN_VFNMADDPS512_MASK, + IX86_BUILTIN_VFNMSUBPD512_MASK, IX86_BUILTIN_VFNMSUBPD512_MASK3, + IX86_BUILTIN_VFNMSUBPS512_MASK, IX86_BUILTIN_VFNMSUBPS512_MASK3, + IX86_BUILTIN_VPCLZCNTD512, IX86_BUILTIN_VPCLZCNTQ512, + IX86_BUILTIN_VPCONFLICTD512, IX86_BUILTIN_VPCONFLICTQ512, + IX86_BUILTIN_VPERMDF512, IX86_BUILTIN_VPERMDI512, + IX86_BUILTIN_VPERMI2VARD512, IX86_BUILTIN_VPERMI2VARPD512, + IX86_BUILTIN_VPERMI2VARPS512, IX86_BUILTIN_VPERMI2VARQ512, + IX86_BUILTIN_VPERMILPD512, IX86_BUILTIN_VPERMILPS512, + IX86_BUILTIN_VPERMILVARPD512, IX86_BUILTIN_VPERMILVARPS512, + IX86_BUILTIN_VPERMT2VARD512, IX86_BUILTIN_VPERMT2VARD512_MASKZ, + IX86_BUILTIN_VPERMT2VARPD512, IX86_BUILTIN_VPERMT2VARPD512_MASKZ, + IX86_BUILTIN_VPERMT2VARPS512, IX86_BUILTIN_VPERMT2VARPS512_MASKZ, + IX86_BUILTIN_VPERMT2VARQ512, IX86_BUILTIN_VPERMT2VARQ512_MASKZ, + IX86_BUILTIN_VPERMVARDF512, IX86_BUILTIN_VPERMVARDI512, + IX86_BUILTIN_VPERMVARSF512, IX86_BUILTIN_VPERMVARSI512, + IX86_BUILTIN_VTERNLOGD512_MASK, IX86_BUILTIN_VTERNLOGD512_MASKZ, + IX86_BUILTIN_VTERNLOGQ512_MASK, IX86_BUILTIN_VTERNLOGQ512_MASKZ, + IX86_BUILTIN_KAND16, IX86_BUILTIN_KANDN16, IX86_BUILTIN_KNOT16, + IX86_BUILTIN_KOR16, IX86_BUILTIN_KORTESTC16, IX86_BUILTIN_KORTESTZ16, + IX86_BUILTIN_KUNPCKBW, IX86_BUILTIN_KXNOR16, IX86_BUILTIN_KXOR16, + IX86_BUILTIN_GATHER3SIV8DI, + IX86_BUILTIN_SCATTERDIV16SF, IX86_BUILTIN_SCATTERDIV16SI, + IX86_BUILTIN_SCATTERDIV8DF, IX86_BUILTIN_SCATTERDIV8DI, + IX86_BUILTIN_SCATTERSIV16SF, IX86_BUILTIN_SCATTERSIV16SI, + IX86_BUILTIN_SCATTERSIV8DF, IX86_BUILTIN_SCATTERSIV8DI, + IX86_BUILTIN_GATHERPFDPS, IX86_BUILTIN_GATHERPFQPS, + IX86_BUILTIN_SCATTERPFDPS, IX86_BUILTIN_SCATTERPFQPS, + IX86_BUILTIN_EXP2PD_MASK, IX86_BUILTIN_EXP2PS_MASK, + IX86_BUILTIN_RCP28PD, IX86_BUILTIN_RCP28PS, + IX86_BUILTIN_RSQRT28PD, IX86_BUILTIN_RSQRT28PS. + (bdesc_special_args): Add __builtin_ia32_compressstoresf512_mask, + __builtin_ia32_compressstoresi512_mask, + __builtin_ia32_compressstoredf512_mask, + __builtin_ia32_compressstoredi512_mask, + __builtin_ia32_expandloadsf512_mask, + __builtin_ia32_expandloadsf512_maskz, + __builtin_ia32_expandloadsi512_mask, + __builtin_ia32_expandloadsi512_maskz, + __builtin_ia32_expandloaddf512_mask, + __builtin_ia32_expandloaddf512_maskz, + __builtin_ia32_expandloaddi512_mask, + __builtin_ia32_expandloaddi512_maskz, + __builtin_ia32_loaddqusi512_mask, __builtin_ia32_loaddqudi512_mask, + __builtin_ia32_loadsd_mask, __builtin_ia32_loadss_mask, + __builtin_ia32_loadupd512_mask, __builtin_ia32_loadups512_mask, + __builtin_ia32_loadaps512_mask, __builtin_ia32_movdqa32load512_mask, + __builtin_ia32_loadapd512_mask, __builtin_ia32_movdqa64load512_mask, + __builtin_ia32_movntps512, __builtin_ia32_movntpd512, + __builtin_ia32_movntdq512, __builtin_ia32_storedqusi512_mask, + __builtin_ia32_storedqudi512_mask, __builtin_ia32_storesd_mask, + __builtin_ia32_storess_mask, __builtin_ia32_storeupd512_mask, + __builtin_ia32_storeups512_mask, __builtin_ia32_storeaps512_mask, + __builtin_ia32_movdqa32store512_mask, __builtin_ia32_storeapd512_mask, + __builtin_ia32_movdqa64store512_mask, __builtin_ia32_alignd512_mask, + __builtin_ia32_alignq512_mask, __builtin_ia32_blendmd_512_mask, + __builtin_ia32_blendmpd_512_mask, __builtin_ia32_blendmps_512_mask, + __builtin_ia32_blendmq_512_mask, __builtin_ia32_broadcastf32x4_512, + __builtin_ia32_broadcastf64x4_512, __builtin_ia32_broadcasti32x4_512, + __builtin_ia32_broadcasti64x4_512, __builtin_ia32_broadcastsd512, + __builtin_ia32_broadcastss512, __builtin_ia32_cmpd512_mask, + __builtin_ia32_cmpq512_mask, __builtin_ia32_compressdf512_mask, + __builtin_ia32_compresssf512_mask, __builtin_ia32_cvtdq2pd512_mask, + __builtin_ia32_vcvtps2ph512_mask, __builtin_ia32_cvtudq2pd512_mask, + __builtin_ia32_cvtusi2sd32, __builtin_ia32_expanddf512_mask, + __builtin_ia32_expanddf512_maskz, __builtin_ia32_expandsf512_mask, + __builtin_ia32_expandsf512_maskz, __builtin_ia32_extractf32x4_mask, + __builtin_ia32_extractf64x4_mask, __builtin_ia32_extracti32x4_mask, + __builtin_ia32_extracti64x4_mask, __builtin_ia32_insertf32x4_mask, + __builtin_ia32_insertf64x4_mask, __builtin_ia32_inserti32x4_mask, + __builtin_ia32_inserti64x4_mask, __builtin_ia32_movapd512_mask, + __builtin_ia32_movaps512_mask, __builtin_ia32_movddup512_mask, + __builtin_ia32_movdqa32_512_mask, __builtin_ia32_movdqa64_512_mask, + __builtin_ia32_movesd_mask, __builtin_ia32_movess_mask, + __builtin_ia32_movshdup512_mask, __builtin_ia32_movsldup512_mask, + __builtin_ia32_pabsd512_mask, __builtin_ia32_pabsq512_mask, + __builtin_ia32_paddd512_mask, __builtin_ia32_paddq512_mask, + __builtin_ia32_pandd512_mask, __builtin_ia32_pandnd512_mask, + __builtin_ia32_pandnq512_mask, __builtin_ia32_pandq512_mask, + __builtin_ia32_pbroadcastd512, __builtin_ia32_pbroadcastd512_gpr_mask, + __builtin_ia32_broadcastmb512, __builtin_ia32_broadcastmw512, + __builtin_ia32_pbroadcastq512, __builtin_ia32_pbroadcastq512_gpr_mask, + __builtin_ia32_pbroadcastq512_mem_mask, + __builtin_ia32_pcmpeqd512_mask, __builtin_ia32_pcmpeqq512_mask, + __builtin_ia32_pcmpgtd512_mask, __builtin_ia32_pcmpgtq512_mask, + __builtin_ia32_compresssi512_mask, __builtin_ia32_compressdi512_mask, + __builtin_ia32_expandsi512_mask, __builtin_ia32_expandsi512_maskz, + __builtin_ia32_expanddi512_mask, __builtin_ia32_expanddi512_maskz, + __builtin_ia32_pmaxsd512_mask, __builtin_ia32_pmaxsq512_mask, + __builtin_ia32_pmaxud512_mask, __builtin_ia32_pmaxuq512_mask, + __builtin_ia32_pminsd512_mask, __builtin_ia32_pminsq512_mask, + __builtin_ia32_pminud512_mask, __builtin_ia32_pminuq512_mask, + __builtin_ia32_pmovdb512_mask, __builtin_ia32_pmovdw512_mask, + __builtin_ia32_pmovqb512_mask, __builtin_ia32_pmovqd512_mask, + __builtin_ia32_pmovqw512_mask, __builtin_ia32_pmovsdb512_mask, + __builtin_ia32_pmovsdw512_mask, __builtin_ia32_pmovsqb512_mask, + __builtin_ia32_pmovsqd512_mask, __builtin_ia32_pmovsqw512_mask, + __builtin_ia32_pmovsxbd512_mask, __builtin_ia32_pmovsxbq512_mask, + __builtin_ia32_pmovsxdq512_mask, __builtin_ia32_pmovsxwd512_mask, + __builtin_ia32_pmovsxwq512_mask, __builtin_ia32_pmovusdb512_mask, + __builtin_ia32_pmovusdw512_mask, __builtin_ia32_pmovusqb512_mask, + __builtin_ia32_pmovusqd512_mask, __builtin_ia32_pmovusqw512_mask, + __builtin_ia32_pmovzxbd512_mask, __builtin_ia32_pmovzxbq512_mask, + __builtin_ia32_pmovzxdq512_mask, __builtin_ia32_pmovzxwd512_mask, + __builtin_ia32_pmovzxwq512_mask, __builtin_ia32_pmuldq512_mask, + __builtin_ia32_pmulld512_mask, __builtin_ia32_pmuludq512_mask, + __builtin_ia32_pord512_mask, __builtin_ia32_porq512_mask, + __builtin_ia32_prold512_mask, __builtin_ia32_prolq512_mask, + __builtin_ia32_prolvd512_mask, __builtin_ia32_prolvq512_mask, + __builtin_ia32_prord512_mask, __builtin_ia32_prorq512_mask, + __builtin_ia32_prorvd512_mask, __builtin_ia32_prorvq512_mask, + __builtin_ia32_pshufd512_mask, __builtin_ia32_pslld512_mask, + __builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask, + __builtin_ia32_psllqi512_mask, __builtin_ia32_psllv16si_mask, + __builtin_ia32_psllv8di_mask, __builtin_ia32_psrad512_mask, + __builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask, + __builtin_ia32_psraqi512_mask, __builtin_ia32_psrav16si_mask, + __builtin_ia32_psrav8di_mask, __builtin_ia32_psrld512_mask, + __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask, + __builtin_ia32_psrlqi512_mask, __builtin_ia32_psrlv16si_mask, + __builtin_ia32_psrlv8di_mask, __builtin_ia32_psubd512_mask, + __builtin_ia32_psubq512_mask, __builtin_ia32_ptestmd512, + __builtin_ia32_ptestmq512, __builtin_ia32_ptestnmd512, + __builtin_ia32_ptestnmq512, __builtin_ia32_punpckhdq512_mask, + __builtin_ia32_punpckhqdq512_mask, __builtin_ia32_punpckldq512_mask, + __builtin_ia32_punpcklqdq512_mask, __builtin_ia32_pxord512_mask, + __builtin_ia32_pxorq512_mask, __builtin_ia32_rcp14pd512_mask, + __builtin_ia32_rcp14ps512_mask, __builtin_ia32_rcp14sd_mask, + __builtin_ia32_rcp14ss_mask, __builtin_ia32_rsqrt14pd512_mask, + __builtin_ia32_rsqrt14ps512_mask, __builtin_ia32_rsqrt14sd_mask, + __builtin_ia32_rsqrt14ss_mask, __builtin_ia32_shufpd512_mask, + __builtin_ia32_shufps512_mask, __builtin_ia32_shuf_f32x4_mask, + __builtin_ia32_shuf_f64x2_mask, __builtin_ia32_shuf_i32x4_mask, + __builtin_ia32_shuf_i64x2_mask, __builtin_ia32_ucmpd512_mask, + __builtin_ia32_ucmpq512_mask, __builtin_ia32_unpckhpd512_mask, + __builtin_ia32_unpckhps512_mask, __builtin_ia32_unpcklpd512_mask, + __builtin_ia32_unpcklps512_mask, __builtin_ia32_vplzcntd_512_mask, + __builtin_ia32_vplzcntq_512_mask, + __builtin_ia32_vpconflictsi_512_mask, + __builtin_ia32_vpconflictdi_512_mask, __builtin_ia32_permdf512_mask, + __builtin_ia32_permdi512_mask, __builtin_ia32_vpermi2vard512_mask, + __builtin_ia32_vpermi2varpd512_mask, + __builtin_ia32_vpermi2varps512_mask, + __builtin_ia32_vpermi2varq512_mask, __builtin_ia32_vpermilpd512_mask, + __builtin_ia32_vpermilps512_mask, __builtin_ia32_vpermilvarpd512_mask, + __builtin_ia32_vpermilvarps512_mask, + __builtin_ia32_vpermt2vard512_mask, + __builtin_ia32_vpermt2vard512_maskz, + __builtin_ia32_vpermt2varpd512_mask, + __builtin_ia32_vpermt2varpd512_maskz, + __builtin_ia32_vpermt2varps512_mask, + __builtin_ia32_vpermt2varps512_maskz, + __builtin_ia32_vpermt2varq512_mask, + __builtin_ia32_vpermt2varq512_maskz, __builtin_ia32_permvardf512_mask, + __builtin_ia32_permvardi512_mask, __builtin_ia32_permvarsf512_mask, + __builtin_ia32_permvarsi512_mask, __builtin_ia32_pternlogd512_mask, + __builtin_ia32_pternlogd512_maskz, __builtin_ia32_pternlogq512_mask, + __builtin_ia32_pternlogq512_maskz, __builtin_ia32_copysignps512, + __builtin_ia32_copysignpd512, __builtin_ia32_sqrtpd512, + __builtin_ia32_sqrtps512, __builtin_ia32_exp2ps, + __builtin_ia32_roundpd_az_vec_pack_sfix512, + __builtin_ia32_floorpd_vec_pack_sfix512, + __builtin_ia32_ceilpd_vec_pack_sfix512, __builtin_ia32_kandhi, + __builtin_ia32_kandnhi, __builtin_ia32_knothi, __builtin_ia32_korhi, + __builtin_ia32_kortestchi, __builtin_ia32_kortestzhi, + __builtin_ia32_kunpckhi, __builtin_ia32_kxnorhi, + __builtin_ia32_kxorhi, __builtin_ia32_addpd512_mask, + __builtin_ia32_addps512_mask, __builtin_ia32_addsd_mask, + __builtin_ia32_addss_mask, __builtin_ia32_cmppd512_mask, + __builtin_ia32_cmpps512_mask, __builtin_ia32_cmpsd_mask, + __builtin_ia32_cmpss_mask, __builtin_ia32_vcomisd, + __builtin_ia32_vcomiss, __builtin_ia32_cvtdq2ps512_mask, + __builtin_ia32_cvtpd2dq512_mask, __builtin_ia32_cvtpd2ps512_mask, + __builtin_ia32_cvtpd2udq512_mask, __builtin_ia32_vcvtph2ps512_mask, + __builtin_ia32_cvtps2dq512_mask, __builtin_ia32_cvtps2pd512_mask, + __builtin_ia32_cvtps2udq512_mask, __builtin_ia32_cvtsd2ss_mask, + __builtin_ia32_cvtsi2sd64, __builtin_ia32_cvtsi2ss32, + __builtin_ia32_cvtsi2ss64, __builtin_ia32_cvtss2sd_mask, + __builtin_ia32_cvttpd2dq512_mask, __builtin_ia32_cvttpd2udq512_mask, + __builtin_ia32_cvttps2dq512_mask, __builtin_ia32_cvttps2udq512_mask, + __builtin_ia32_cvtudq2ps512_mask, __builtin_ia32_cvtusi2sd64, + __builtin_ia32_cvtusi2ss32, __builtin_ia32_cvtusi2ss64, + __builtin_ia32_divpd512_mask, __builtin_ia32_divps512_mask, + __builtin_ia32_divsd_mask, __builtin_ia32_divss_mask, + __builtin_ia32_fixupimmpd512_mask, __builtin_ia32_fixupimmpd512_maskz, + __builtin_ia32_fixupimmps512_mask, __builtin_ia32_fixupimmps512_maskz, + __builtin_ia32_fixupimmsd_mask, __builtin_ia32_fixupimmsd_maskz, + __builtin_ia32_fixupimmss_mask, __builtin_ia32_fixupimmss_maskz, + __builtin_ia32_getexppd512_mask, __builtin_ia32_getexpps512_mask, + __builtin_ia32_getexpsd128_mask, __builtin_ia32_getexpss128_mask, + __builtin_ia32_getmantpd512_mask, __builtin_ia32_getmantps512_mask, + __builtin_ia32_getmantsd_mask, __builtin_ia32_getmantss_mask, + __builtin_ia32_maxpd512_mask, __builtin_ia32_maxps512_mask, + __builtin_ia32_maxsd_mask, __builtin_ia32_maxss_mask, + __builtin_ia32_minpd512_mask, __builtin_ia32_minps512_mask, + __builtin_ia32_minsd_mask, __builtin_ia32_minss_mask, + __builtin_ia32_mulpd512_mask, __builtin_ia32_mulps512_mask, + __builtin_ia32_mulsd_mask, __builtin_ia32_mulss_mask, + __builtin_ia32_rndscalepd_mask, __builtin_ia32_rndscaleps_mask, + __builtin_ia32_rndscalesd_mask, __builtin_ia32_rndscaless_mask, + __builtin_ia32_scalefpd512_mask, __builtin_ia32_scalefps512_mask, + __builtin_ia32_scalefsd_mask, __builtin_ia32_scalefss_mask, + __builtin_ia32_sqrtpd512_mask, __builtin_ia32_sqrtps512_mask, + __builtin_ia32_sqrtsd_mask, __builtin_ia32_sqrtss_mask, + __builtin_ia32_subpd512_mask, __builtin_ia32_subps512_mask, + __builtin_ia32_subsd_mask, __builtin_ia32_subss_mask, + __builtin_ia32_vcvtsd2si32, __builtin_ia32_vcvtsd2si64, + __builtin_ia32_vcvtsd2usi32, __builtin_ia32_vcvtsd2usi64, + __builtin_ia32_vcvtss2si32, __builtin_ia32_vcvtss2si64, + __builtin_ia32_vcvtss2usi32, __builtin_ia32_vcvtss2usi64, + __builtin_ia32_vcvttsd2si32, __builtin_ia32_vcvttsd2si64, + __builtin_ia32_vcvttsd2usi32, __builtin_ia32_vcvttsd2usi64, + __builtin_ia32_vcvttss2si32, __builtin_ia32_vcvttss2si64, + __builtin_ia32_vcvttss2usi32, __builtin_ia32_vcvttss2usi64, + __builtin_ia32_vfmaddpd512_mask, __builtin_ia32_vfmaddpd512_mask3, + __builtin_ia32_vfmaddpd512_maskz, __builtin_ia32_vfmaddps512_mask, + __builtin_ia32_vfmaddps512_mask3, __builtin_ia32_vfmaddps512_maskz, + __builtin_ia32_vfmaddsd3_mask, __builtin_ia32_vfmaddsd3_mask3, + __builtin_ia32_vfmaddsd3_maskz, __builtin_ia32_vfmaddss3_mask, + __builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz, + __builtin_ia32_vfmaddsubpd512_mask, + __builtin_ia32_vfmaddsubpd512_mask3, + __builtin_ia32_vfmaddsubpd512_maskz, + __builtin_ia32_vfmaddsubps512_mask, + __builtin_ia32_vfmaddsubps512_mask3, + __builtin_ia32_vfmaddsubps512_maskz, + __builtin_ia32_vfmsubaddpd512_mask3, + __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, + __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, + __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, + __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, + __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, + __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_exp2pd_mask, + __builtin_ia32_exp2ps_mask, __builtin_ia32_rcp28pd_mask, + __builtin_ia32_rcp28ps_mask, __builtin_ia32_rsqrt28pd_mask, + __builtin_ia32_rsqrt28ps_mask, __builtin_ia32_gathersiv16sf, + __builtin_ia32_gathersiv8df, __builtin_ia32_gatherdiv16sf, + __builtin_ia32_gatherdiv8df, __builtin_ia32_gathersiv16si, + __builtin_ia32_gathersiv8di, __builtin_ia32_gatherdiv16si, + __builtin_ia32_gatherdiv8di, __builtin_ia32_gatheraltsiv8df , + __builtin_ia32_gatheraltdiv8sf , __builtin_ia32_gatheraltsiv8di , + __builtin_ia32_gatheraltdiv8si , __builtin_ia32_scattersiv16sf, + __builtin_ia32_scattersiv8df, __builtin_ia32_scatterdiv16sf, + __builtin_ia32_scatterdiv8df, __builtin_ia32_scattersiv16si, + __builtin_ia32_scattersiv8di, __builtin_ia32_scatterdiv16si, + __builtin_ia32_scatterdiv8di, __builtin_ia32_gatherpfdps, + __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, + __builtin_ia32_scatterpfqps. + (ix86_init_mmx_sse_builtins): Handle builtins with AVX512 embeded + rounding, builtins for AVX512 gathers/scatters. + (ix86_expand_args_builtin): Handle new functions types, add warnings + for masked builtins. + (ix86_erase_embedded_rounding): Handle patterns with embedded rounding. + (ix86_expand_sse_comi_round): Ditto. + (ix86_expand_round_builtin): Ditto. + (ix86_expand_builtin): Handle AVX512's gathers/scatters and kortest{z}. + Call ix86_expand_round_builtin. + * config/i386/immintrin.h: Add avx512fintrin.h, avx512erintrin.h, + avx512pfintrin.h, avx512cdintrin.h. + 2013-12-31 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/config.gcc b/gcc/config.gcc index 99f11e5561a..9ce29901f6e 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -372,9 +372,10 @@ i[34567]86-*-*) immintrin.h x86intrin.h avxintrin.h xopintrin.h ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h - avx2intrin.h fmaintrin.h f16cintrin.h rtmintrin.h - xtestintrin.h rdseedintrin.h prfchwintrin.h adxintrin.h - fxsrintrin.h xsaveintrin.h xsaveoptintrin.h" + avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h + rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h + adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h + avx512cdintrin.h avx512erintrin.h avx512pfintrin.h" ;; x86_64-*-*) cpu_type=i386 @@ -387,9 +388,10 @@ x86_64-*-*) immintrin.h x86intrin.h avxintrin.h xopintrin.h ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h lzcntintrin.h bmiintrin.h tbmintrin.h bmi2intrin.h - avx2intrin.h fmaintrin.h f16cintrin.h rtmintrin.h - xtestintrin.h rdseedintrin.h prfchwintrin.h adxintrin.h - fxsrintrin.h xsaveintrin.h xsaveoptintrin.h" + avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h + rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h + adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h + avx512cdintrin.h avx512erintrin.h avx512pfintrin.h" need_64bit_hwint=yes ;; ia64-*-*) diff --git a/gcc/config/i386/avx512cdintrin.h b/gcc/config/i386/avx512cdintrin.h new file mode 100644 index 00000000000..6186e06bdbe --- /dev/null +++ b/gcc/config/i386/avx512cdintrin.h @@ -0,0 +1,219 @@ +/* Copyright (C) 2013 + Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GCC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + +#ifndef _IMMINTRIN_H_INCLUDED +#error "Never use directly; include instead." +#endif + +#ifndef _AVX512CDINTRIN_H_INCLUDED +#define _AVX512CDINTRIN_H_INCLUDED + +#ifndef __AVX512CD__ +#pragma GCC push_options +#pragma GCC target("avx512cd") +#define __DISABLE_AVX512CD__ +#endif /* __AVX512CD__ */ + +/* Internal data types for implementing the intrinsics. */ +typedef long long __v8di __attribute__ ((__vector_size__ (64))); +typedef int __v16si __attribute__ ((__vector_size__ (64))); + +/* The Intel API is flexible enough that we must allow aliasing with other + vector types, and their scalar components. */ +typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__)); +typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__)); + +typedef unsigned char __mmask8; +typedef unsigned short __mmask16; + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_conflict_epi32 (__m512i __A) +{ + return (__m512i) + __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, + (__v16si) _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_conflict_epi32 (__m512i __W, __mmask16 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_conflict_epi32 (__mmask16 __U, __m512i __A) +{ + return (__m512i) + __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, + (__v16si) _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_conflict_epi64 (__m512i __A) +{ + return (__m512i) + __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, + (__v8di) _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_conflict_epi64 (__m512i __W, __mmask8 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_conflict_epi64 (__mmask8 __U, __m512i __A) +{ + return (__m512i) + __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, + (__v8di) _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_lzcnt_epi64 (__m512i __A) +{ + return (__m512i) + __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, + (__v8di) _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_lzcnt_epi64 (__m512i __W, __mmask8 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_lzcnt_epi64 (__mmask8 __U, __m512i __A) +{ + return (__m512i) + __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, + (__v8di) _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_lzcnt_epi32 (__m512i __A) +{ + return (__m512i) + __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, + (__v16si) _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_lzcnt_epi32 (__m512i __W, __mmask16 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_lzcnt_epi32 (__mmask16 __U, __m512i __A) +{ + return (__m512i) + __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, + (__v16si) _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_broadcastmb_epi64 (__mmask8 __A) +{ + return (__m512i) __builtin_ia32_broadcastmb512 (__A); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_broadcastmw_epi32 (__mmask16 __A) +{ + return (__m512i) __builtin_ia32_broadcastmw512 (__A); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_testn_epi32_mask (__m512i __A, __m512i __B) +{ + return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A, + (__v16si) __B, + (__mmask16) -1); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A, + (__v16si) __B, __U); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_testn_epi64_mask (__m512i __A, __m512i __B) +{ + return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A, + (__v8di) __B, + (__mmask8) -1); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A, + (__v8di) __B, __U); +} + +#ifdef __DISABLE_AVX512CD__ +#undef __DISABLE_AVX512CD__ +#pragma GCC pop_options +#endif /* __DISABLE_AVX512CD__ */ + +#endif /* _AVX512CDINTRIN_H_INCLUDED */ diff --git a/gcc/config/i386/avx512erintrin.h b/gcc/config/i386/avx512erintrin.h new file mode 100644 index 00000000000..4583d690378 --- /dev/null +++ b/gcc/config/i386/avx512erintrin.h @@ -0,0 +1,333 @@ +/* Copyright (C) 2013 + Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GCC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + +#ifndef _IMMINTRIN_H_INCLUDED +#error "Never use directly; include instead." +#endif + +#ifndef _AVX512ERINTRIN_H_INCLUDED +#define _AVX512ERINTRIN_H_INCLUDED + +#ifndef __AVX512ER__ +#pragma GCC push_options +#pragma GCC target("avx512er") +#define __DISABLE_AVX512ER__ +#endif /* __AVX512ER__ */ + +/* Internal data types for implementing the intrinsics. */ +typedef double __v8df __attribute__ ((__vector_size__ (64))); +typedef float __v16sf __attribute__ ((__vector_size__ (64))); + +/* The Intel API is flexible enough that we must allow aliasing with other + vector types, and their scalar components. */ +typedef float __m512 __attribute__ ((__vector_size__ (64), __may_alias__)); +typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__)); + +typedef unsigned char __mmask8; +typedef unsigned short __mmask16; + +#ifdef __OPTIMIZE__ +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_exp2a23_round_pd (__m512d __A, int __R) +{ + __m512d __W; + return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_exp2a23_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R) +{ + return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_exp2a23_round_pd (__mmask8 __U, __m512d __A, int __R) +{ + return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A, + (__v8df) _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_exp2a23_round_ps (__m512 __A, int __R) +{ + __m512 __W; + return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_exp2a23_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R) +{ + return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_exp2a23_round_ps (__mmask16 __U, __m512 __A, int __R) +{ + return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A, + (__v16sf) _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rcp28_round_pd (__m512d __A, int __R) +{ + __m512d __W; + return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rcp28_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R) +{ + return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rcp28_round_pd (__mmask8 __U, __m512d __A, int __R) +{ + return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A, + (__v8df) _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rcp28_round_ps (__m512 __A, int __R) +{ + __m512 __W; + return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rcp28_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R) +{ + return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rcp28_round_ps (__mmask16 __U, __m512 __A, int __R) +{ + return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A, + (__v16sf) _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rsqrt28_round_pd (__m512d __A, int __R) +{ + __m512d __W; + return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rsqrt28_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R) +{ + return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rsqrt28_round_pd (__mmask8 __U, __m512d __A, int __R) +{ + return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A, + (__v8df) _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rsqrt28_round_ps (__m512 __A, int __R) +{ + __m512 __W; + return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rsqrt28_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R) +{ + return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rsqrt28_round_ps (__mmask16 __U, __m512 __A, int __R) +{ + return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A, + (__v16sf) _mm512_setzero_ps (), + (__mmask16) __U, __R); +} +#else +#define _mm512_exp2a23_round_pd(A, C) \ + __builtin_ia32_exp2pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) + +#define _mm512_mask_exp2a23_round_pd(W, U, A, C) \ + __builtin_ia32_exp2pd_mask(A, W, U, C) + +#define _mm512_maskz_exp2a23_round_pd(U, A, C) \ + __builtin_ia32_exp2pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C) + +#define _mm512_exp2a23_round_ps(A, C) \ + __builtin_ia32_exp2ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C) + +#define _mm512_mask_exp2a23_round_ps(W, U, A, C) \ + __builtin_ia32_exp2ps_mask(A, W, U, C) + +#define _mm512_maskz_exp2a23_round_ps(U, A, C) \ + __builtin_ia32_exp2ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C) + +#define _mm512_rcp28_round_pd(A, C) \ + __builtin_ia32_rcp28pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) + +#define _mm512_mask_rcp28_round_pd(W, U, A, C) \ + __builtin_ia32_rcp28pd_mask(A, W, U, C) + +#define _mm512_maskz_rcp28_round_pd(U, A, C) \ + __builtin_ia32_rcp28pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C) + +#define _mm512_rcp28_round_ps(A, C) \ + __builtin_ia32_rcp28ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C) + +#define _mm512_mask_rcp28_round_ps(W, U, A, C) \ + __builtin_ia32_rcp28ps_mask(A, W, U, C) + +#define _mm512_maskz_rcp28_round_ps(U, A, C) \ + __builtin_ia32_rcp28ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C) + +#define _mm512_rsqrt28_round_pd(A, C) \ + __builtin_ia32_rsqrt28pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) + +#define _mm512_mask_rsqrt28_round_pd(W, U, A, C) \ + __builtin_ia32_rsqrt28pd_mask(A, W, U, C) + +#define _mm512_maskz_rsqrt28_round_pd(U, A, C) \ + __builtin_ia32_rsqrt28pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C) + +#define _mm512_rsqrt28_round_ps(A, C) \ + __builtin_ia32_rsqrt28ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C) + +#define _mm512_mask_rsqrt28_round_ps(W, U, A, C) \ + __builtin_ia32_rsqrt28ps_mask(A, W, U, C) + +#define _mm512_maskz_rsqrt28_round_ps(U, A, C) \ + __builtin_ia32_rsqrt28ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C) +#endif + +#define _mm512_exp2a23_pd(A) \ + _mm512_exp2a23_round_pd(A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_mask_exp2a23_pd(W, U, A) \ + _mm512_mask_exp2a23_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_maskz_exp2a23_pd(U, A) \ + _mm512_maskz_exp2a23_round_pd(U, A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_exp2a23_ps(A) \ + _mm512_exp2a23_round_ps(A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_mask_exp2a23_ps(W, U, A) \ + _mm512_mask_exp2a23_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_maskz_exp2a23_ps(U, A) \ + _mm512_maskz_exp2a23_round_ps(U, A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_rcp28_pd(A) \ + _mm512_rcp28_round_pd(A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_mask_rcp28_pd(W, U, A) \ + _mm512_mask_rcp28_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_maskz_rcp28_pd(U, A) \ + _mm512_maskz_rcp28_round_pd(U, A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_rcp28_ps(A) \ + _mm512_rcp28_round_ps(A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_mask_rcp28_ps(W, U, A) \ + _mm512_mask_rcp28_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_maskz_rcp28_ps(U, A) \ + _mm512_maskz_rcp28_round_ps(U, A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_rsqrt28_pd(A) \ + _mm512_rsqrt28_round_pd(A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_mask_rsqrt28_pd(W, U, A) \ + _mm512_mask_rsqrt28_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_maskz_rsqrt28_pd(U, A) \ + _mm512_maskz_rsqrt28_round_pd(U, A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_rsqrt28_ps(A) \ + _mm512_rsqrt28_round_ps(A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_mask_rsqrt28_ps(W, U, A) \ + _mm512_mask_rsqrt28_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION) + +#define _mm512_maskz_rsqrt28_ps(U, A) \ + _mm512_maskz_rsqrt28_round_ps(U, A, _MM_FROUND_CUR_DIRECTION) + +#ifdef __DISABLE_AVX512ER__ +#undef __DISABLE_AVX512ER__ +#pragma GCC pop_options +#endif /* __DISABLE_AVX512ER__ */ + +#endif /* _AVX512ERINTRIN_H_INCLUDED */ diff --git a/gcc/config/i386/avx512fintrin.h b/gcc/config/i386/avx512fintrin.h new file mode 100644 index 00000000000..f717d4601fc --- /dev/null +++ b/gcc/config/i386/avx512fintrin.h @@ -0,0 +1,12147 @@ +/* Copyright (C) 2013 + Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GCC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + +#ifndef _IMMINTRIN_H_INCLUDED +#error "Never use directly; include instead." +#endif + +#ifndef _AVX512FINTRIN_H_INCLUDED +#define _AVX512FINTRIN_H_INCLUDED + +#ifndef __AVX512F__ +#pragma GCC push_options +#pragma GCC target("avx512f") +#define __DISABLE_AVX512F__ +#endif /* __AVX512F__ */ + +/* Internal data types for implementing the intrinsics. */ +typedef double __v8df __attribute__ ((__vector_size__ (64))); +typedef float __v16sf __attribute__ ((__vector_size__ (64))); +typedef long long __v8di __attribute__ ((__vector_size__ (64))); +typedef int __v16si __attribute__ ((__vector_size__ (64))); + +/* The Intel API is flexible enough that we must allow aliasing with other + vector types, and their scalar components. */ +typedef float __m512 __attribute__ ((__vector_size__ (64), __may_alias__)); +typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__)); +typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__)); + +typedef unsigned char __mmask8; +typedef unsigned short __mmask16; + +/* Rounding mode macros. */ +#define _MM_FROUND_TO_NEAREST_INT 0x00 +#define _MM_FROUND_TO_NEG_INF 0x01 +#define _MM_FROUND_TO_POS_INF 0x02 +#define _MM_FROUND_TO_ZERO 0x03 +#define _MM_FROUND_CUR_DIRECTION 0x04 +#define _MM_FROUND_NO_EXC 0x05 + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_set_epi64 (long long __A, long long __B, long long __C, + long long __D, long long __E, long long __F, + long long __G, long long __H) +{ + return __extension__ (__m512i) (__v8di) + { __H, __G, __F, __E, __D, __C, __B, __A }; +} + +/* Create the vector [A B C D E F G H I J K L M N O P]. */ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_set_epi32 (int __A, int __B, int __C, int __D, + int __E, int __F, int __G, int __H, + int __I, int __J, int __K, int __L, + int __M, int __N, int __O, int __P) +{ + return __extension__ (__m512i)(__v16si) + { __P, __O, __N, __M, __L, __K, __J, __I, + __H, __G, __F, __E, __D, __C, __B, __A }; +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_set_pd (double __A, double __B, double __C, double __D, + double __E, double __F, double __G, double __H) +{ + return __extension__ (__m512d) + { __H, __G, __F, __E, __D, __C, __B, __A }; +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_set_ps (float __A, float __B, float __C, float __D, + float __E, float __F, float __G, float __H, + float __I, float __J, float __K, float __L, + float __M, float __N, float __O, float __P) +{ + return __extension__ (__m512) + { __P, __O, __N, __M, __L, __K, __J, __I, + __H, __G, __F, __E, __D, __C, __B, __A }; +} + +#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \ + _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0) + +#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \ + e8,e9,e10,e11,e12,e13,e14,e15) \ + _mm512_set_epi32(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0) + +#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \ + _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0) + +#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \ + _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0) + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_setzero_ps (void) +{ + return __extension__ (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_setzero_pd (void) +{ + return __extension__ (__m512d) { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_setzero_si512 (void) +{ + return __extension__ (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 }; +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_load_pd (void const *__P) +{ + return *(__m512d *) __P; +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P) +{ + return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_load_pd (__mmask8 __U, void const *__P) +{ + return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_store_pd (void *__P, __m512d __A) +{ + *(__m512d *) __P = __A; +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_store_pd (void *__P, __mmask8 __U, __m512d __A) +{ + __builtin_ia32_storeapd512_mask ((__v8df *) __P, (__v8df) __A, + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_load_ps (void const *__P) +{ + return *(__m512 *) __P; +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P) +{ + return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_load_ps (__mmask16 __U, void const *__P) +{ + return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_store_ps (void *__P, __m512 __A) +{ + *(__m512 *) __P = __A; +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_store_ps (void *__P, __mmask16 __U, __m512 __A) +{ + __builtin_ia32_storeaps512_mask ((__v16sf *) __P, (__v16sf) __A, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_load_epi64 (void const *__P) +{ + return *(__m512i *) __P; +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P) +{ + return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P) +{ + return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_store_epi64 (void *__P, __m512i __A) +{ + *(__m512i *) __P = __A; +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A) +{ + __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_load_si512 (void const *__P) +{ + return *(__m512i *) __P; +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_load_epi32 (void const *__P) +{ + return *(__m512i *) __P; +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P) +{ + return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P) +{ + return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_store_si512 (void *__P, __m512i __A) +{ + *(__m512i *) __P = __A; +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_store_epi32 (void *__P, __m512i __A) +{ + *(__m512i *) __P = __A; +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A) +{ + __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mullo_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sllv_epi32 (__m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_srav_epi32 (__m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_srlv_epi32 (__m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_add_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sub_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sllv_epi64 (__m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_srav_epi64 (__m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_srlv_epi64 (__m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_add_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mul_epi32 (__m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X, + (__v16si) __Y, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X, + (__v16si) __Y, + (__v8di) __W, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X, + (__v16si) __Y, + (__v8di) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sub_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mul_epu32 (__m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X, + (__v16si) __Y, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X, + (__v16si) __Y, + (__v8di) __W, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X, + (__v16si) __Y, + (__v8di) + _mm512_setzero_si512 (), + __M); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_slli_epi64 (__m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_slli_epi64 (__m512i __W, __mmask8 __U, __m512i __A, + unsigned int __B) +{ + return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_slli_epi64 (__mmask8 __U, __m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} +#else +#define _mm512_slli_epi64(X, C) \ + ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ + (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__mmask8)-1)) + +#define _mm512_mask_slli_epi64(W, U, X, C) \ + ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ + (__v8di)(__m512i)(W),\ + (__mmask8)(U))) + +#define _mm512_maskz_slli_epi64(U, X, C) \ + ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ + (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__mmask8)(U))) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sll_epi64 (__m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A, + (__v2di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A, + (__v2di) __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A, + (__v2di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_srli_epi64 (__m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_srli_epi64 (__m512i __W, __mmask8 __U, + __m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_srli_epi64 (__mmask8 __U, __m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} +#else +#define _mm512_srli_epi64(X, C) \ + ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ + (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__mmask8)-1)) + +#define _mm512_mask_srli_epi64(W, U, X, C) \ + ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ + (__v8di)(__m512i)(W),\ + (__mmask8)(U))) + +#define _mm512_maskz_srli_epi64(U, X, C) \ + ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ + (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__mmask8)(U))) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_srl_epi64 (__m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A, + (__v2di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A, + (__v2di) __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A, + (__v2di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_srai_epi64 (__m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_srai_epi64 (__m512i __W, __mmask8 __U, __m512i __A, + unsigned int __B) +{ + return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_srai_epi64 (__mmask8 __U, __m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} +#else +#define _mm512_srai_epi64(X, C) \ + ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ + (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__mmask8)-1)) + +#define _mm512_mask_srai_epi64(W, U, X, C) \ + ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ + (__v8di)(__m512i)(W),\ + (__mmask8)(U))) + +#define _mm512_maskz_srai_epi64(U, X, C) \ + ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ + (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__mmask8)(U))) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sra_epi64 (__m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A, + (__v2di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A, + (__v2di) __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A, + (__v2di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_slli_epi32 (__m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_slli_epi32 (__m512i __W, __mmask16 __U, __m512i __A, + unsigned int __B) +{ + return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_slli_epi32 (__mmask16 __U, __m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} +#else +#define _mm512_slli_epi32(X, C) \ + ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__mmask16)-1)) + +#define _mm512_mask_slli_epi32(W, U, X, C) \ + ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)(W),\ + (__mmask16)(U))) + +#define _mm512_maskz_slli_epi32(U, X, C) \ + ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__mmask16)(U))) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sll_epi32 (__m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A, + (__v4si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A, + (__v4si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A, + (__v4si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_srli_epi32 (__m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_srli_epi32 (__m512i __W, __mmask16 __U, + __m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_srli_epi32 (__mmask16 __U, __m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} +#else +#define _mm512_srli_epi32(X, C) \ + ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__mmask16)-1)) + +#define _mm512_mask_srli_epi32(W, U, X, C) \ + ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)(W),\ + (__mmask16)(U))) + +#define _mm512_maskz_srli_epi32(U, X, C) \ + ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__mmask16)(U))) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_srl_epi32 (__m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A, + (__v4si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A, + (__v4si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A, + (__v4si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_srai_epi32 (__m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_srai_epi32 (__m512i __W, __mmask16 __U, __m512i __A, + unsigned int __B) +{ + return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_srai_epi32 (__mmask16 __U, __m512i __A, unsigned int __B) +{ + return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} +#else +#define _mm512_srai_epi32(X, C) \ + ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__mmask16)-1)) + +#define _mm512_mask_srai_epi32(W, U, X, C) \ + ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)(W),\ + (__mmask16)(U))) + +#define _mm512_maskz_srai_epi32(U, X, C) \ + ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__mmask16)(U))) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sra_epi32 (__m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A, + (__v4si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A, + (__v4si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B) +{ + return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A, + (__v4si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_ternarylogic_epi64 (__m512i __A, __m512i __B, __m512i __C, const int imm) +{ + return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __C, imm, + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_ternarylogic_epi64 (__m512i __A, __mmask8 __U, __m512i __B, + __m512i __C, const int imm) +{ + return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __C, imm, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_ternarylogic_epi64 (__mmask8 __U, __m512i __A, __m512i __B, + __m512i __C, const int imm) +{ + return (__m512i) __builtin_ia32_pternlogq512_maskz ((__v8di) __A, + (__v8di) __B, + (__v8di) __C, + imm, (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_ternarylogic_epi32 (__m512i __A, __m512i __B, __m512i __C, const int imm) +{ + return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __C, + imm, (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_ternarylogic_epi32 (__m512i __A, __mmask16 __U, __m512i __B, + __m512i __C, const int imm) +{ + return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __C, + imm, (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_ternarylogic_epi32 (__mmask16 __U, __m512i __A, __m512i __B, + __m512i __C, const int imm) +{ + return (__m512i) __builtin_ia32_pternlogd512_maskz ((__v16si) __A, + (__v16si) __B, + (__v16si) __C, + imm, (__mmask16) __U); +} +#else +#define _mm512_ternarylogic_epi64(A, B, C, I) \ + ((__m512i) __builtin_ia32_pternlogq512_mask ((__v8di)(__m512i)(A), \ + (__v8di)(__m512i)(B), (__v8di)(__m512i)(C), (int)(I), (__mmask8)-1)) +#define _mm512_mask_ternarylogic_epi64(A, U, B, C, I) \ + ((__m512i) __builtin_ia32_pternlogq512_mask ((__v8di)(__m512i)(A), \ + (__v8di)(__m512i)(B), (__v8di)(__m512i)(C), (int)(I), (__mmask8)(U))) +#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, I) \ + ((__m512i) __builtin_ia32_pternlogq512_maskz ((__v8di)(__m512i)(A), \ + (__v8di)(__m512i)(B), (__v8di)(__m512i)(C), (int)(I), (__mmask8)(U))) +#define _mm512_ternarylogic_epi32(A, B, C, I) \ + ((__m512i) __builtin_ia32_pternlogd512_mask ((__v16si)(__m512i)(A), \ + (__v16si)(__m512i)(B), (__v16si)(__m512i)(C), (int)(I), \ + (__mmask16)-1)) +#define _mm512_mask_ternarylogic_epi32(A, U, B, C, I) \ + ((__m512i) __builtin_ia32_pternlogd512_mask ((__v16si)(__m512i)(A), \ + (__v16si)(__m512i)(B), (__v16si)(__m512i)(C), (int)(I), \ + (__mmask16)(U))) +#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, I) \ + ((__m512i) __builtin_ia32_pternlogd512_maskz ((__v16si)(__m512i)(A), \ + (__v16si)(__m512i)(B), (__v16si)(__m512i)(C), (int)(I), \ + (__mmask16)(U))) +#endif + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rcp14_pd (__m512d __A) +{ + return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rcp14_ps (__m512 __A) +{ + return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rsqrt14_pd (__m512d __A) +{ + return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rsqrt14_ps (__m512 __A) +{ + return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sqrt_round_pd (__m512d __A, const int __R) +{ + return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sqrt_round_pd (__m512d __W, __mmask8 __U, __m512d __A, + const int __R) +{ + return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sqrt_round_pd (__mmask8 __U, __m512d __A, const int __R) +{ + return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sqrt_round_ps (__m512 __A, const int __R) +{ + return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sqrt_round_ps (__m512 __W, __mmask16 __U, __m512 __A, const int __R) +{ + return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sqrt_round_ps (__mmask16 __U, __m512 __A, const int __R) +{ + return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +#else +#define _mm512_sqrt_round_pd(A, C) \ + (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) + +#define _mm512_mask_sqrt_round_pd(W, U, A, C) \ + (__m512d)__builtin_ia32_sqrtpd512_mask(A, W, U, C) + +#define _mm512_maskz_sqrt_round_pd(U, A, C) \ + (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_setzero_pd(), U, C) + +#define _mm512_sqrt_round_ps(A, C) \ + (__m512)__builtin_ia32_sqrtps512_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C) + +#define _mm512_mask_sqrt_round_ps(W, U, A, C) \ + (__m512)__builtin_ia32_sqrtps512_mask(A, W, U, C) + +#define _mm512_maskz_sqrt_round_ps(U, A, C) \ + (__m512)__builtin_ia32_sqrtps512_mask(A, (__v16sf)_mm512_setzero_ps(), U, C) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi8_epi32 (__m128i __A) +{ + return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi8_epi64 (__m128i __A) +{ + return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi16_epi32 (__m256i __A) +{ + return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A) +{ + return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A) +{ + return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi16_epi64 (__m128i __A) +{ + return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi32_epi64 (__m256i __X) +{ + return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X) +{ + return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X) +{ + return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepu8_epi32 (__m128i __A) +{ + return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepu8_epi64 (__m128i __A) +{ + return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepu16_epi32 (__m256i __A) +{ + return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A) +{ + return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A) +{ + return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepu16_epi64 (__m128i __A) +{ + return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A) +{ + return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepu32_epi64 (__m256i __X) +{ + return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X) +{ + return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X) +{ + return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_add_round_pd (__m512d __A, __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_add_round_pd (__m512d __W, __mmask8 __U, __m512d __A, + __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_add_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + const int __R) +{ + return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_add_round_ps (__m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_add_round_ps (__m512 __W, __mmask16 __U, __m512 __A, + __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_add_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sub_round_pd (__m512d __A, __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sub_round_pd (__m512d __W, __mmask8 __U, __m512d __A, + __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sub_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + const int __R) +{ + return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sub_round_ps (__m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sub_round_ps (__m512 __W, __mmask16 __U, __m512 __A, + __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sub_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} +#else +#define _mm512_add_round_pd(A, B, C) \ + (__m512d)__builtin_ia32_addpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) + +#define _mm512_mask_add_round_pd(W, U, A, B, C) \ + (__m512d)__builtin_ia32_addpd512_mask(A, B, W, U, C) + +#define _mm512_maskz_add_round_pd(U, A, B, C) \ + (__m512d)__builtin_ia32_addpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C) + +#define _mm512_add_round_ps(A, B, C) \ + (__m512)__builtin_ia32_addps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, C) + +#define _mm512_mask_add_round_ps(W, U, A, B, C) \ + (__m512)__builtin_ia32_addps512_mask(A, B, W, U, C) + +#define _mm512_maskz_add_round_ps(U, A, B, C) \ + (__m512)__builtin_ia32_addps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C) + +#define _mm512_sub_round_pd(A, B, C) \ + (__m512d)__builtin_ia32_subpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) + +#define _mm512_mask_sub_round_pd(W, U, A, B, C) \ + (__m512d)__builtin_ia32_subpd512_mask(A, B, W, U, C) + +#define _mm512_maskz_sub_round_pd(U, A, B, C) \ + (__m512d)__builtin_ia32_subpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C) + +#define _mm512_sub_round_ps(A, B, C) \ + (__m512)__builtin_ia32_subps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, C) + +#define _mm512_mask_sub_round_ps(W, U, A, B, C) \ + (__m512)__builtin_ia32_subps512_mask(A, B, W, U, C) + +#define _mm512_maskz_sub_round_ps(U, A, B, C) \ + (__m512)__builtin_ia32_subps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mul_round_pd (__m512d __A, __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_mul_round_pd (__m512d __W, __mmask8 __U, __m512d __A, + __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_mul_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + const int __R) +{ + return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mul_round_ps (__m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_mul_round_ps (__m512 __W, __mmask16 __U, __m512 __A, + __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_mul_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_div_round_pd (__m512d __M, __m512d __V, const int __R) +{ + return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M, + (__v8df) __V, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_div_round_pd (__m512d __W, __mmask8 __U, __m512d __M, + __m512d __V, const int __R) +{ + return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M, + (__v8df) __V, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_div_round_pd (__mmask8 __U, __m512d __M, __m512d __V, + const int __R) +{ + return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M, + (__v8df) __V, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_div_round_ps (__m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_div_round_ps (__m512 __W, __mmask16 __U, __m512 __A, + __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_div_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +#else +#define _mm512_mul_round_pd(A, B, C) \ + (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) + +#define _mm512_mask_mul_round_pd(W, U, A, B, C) \ + (__m512d)__builtin_ia32_mulpd512_mask(A, B, W, U, C) + +#define _mm512_maskz_mul_round_pd(U, A, B, C) \ + (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C) + +#define _mm512_mul_round_ps(A, B, C) \ + (__m512)__builtin_ia32_mulps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, C) + +#define _mm512_mask_mul_round_ps(W, U, A, B, C) \ + (__m512)__builtin_ia32_mulps512_mask(A, B, W, U, C) + +#define _mm512_maskz_mul_round_ps(U, A, B, C) \ + (__m512)__builtin_ia32_mulps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C) + +#define _mm512_div_round_pd(A, B, C) \ + (__m512d)__builtin_ia32_divpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) + +#define _mm512_mask_div_round_pd(W, U, A, B, C) \ + (__m512d)__builtin_ia32_divpd512_mask(A, B, W, U, C) + +#define _mm512_maskz_div_round_pd(U, A, B, C) \ + (__m512d)__builtin_ia32_divpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C) + +#define _mm512_div_round_ps(A, B, C) \ + (__m512)__builtin_ia32_divps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, C) + +#define _mm512_mask_div_round_ps(W, U, A, B, C) \ + (__m512)__builtin_ia32_divps512_mask(A, B, W, U, C) + +#define _mm512_maskz_div_round_ps(U, A, B, C) \ + (__m512)__builtin_ia32_divps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_max_round_pd (__m512d __A, __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_max_round_pd (__m512d __W, __mmask8 __U, __m512d __A, + __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_max_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + const int __R) +{ + return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_max_round_ps (__m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_max_round_ps (__m512 __W, __mmask16 __U, __m512 __A, + __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_max_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_min_round_pd (__m512d __A, __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_min_round_pd (__m512d __W, __mmask8 __U, __m512d __A, + __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_min_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + const int __R) +{ + return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_min_round_ps (__m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_min_round_ps (__m512 __W, __mmask16 __U, __m512 __A, + __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_min_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} +#else +#define _mm512_max_round_pd(A, B, R) \ + (__m512d)__builtin_ia32_maxpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, R) + +#define _mm512_mask_max_round_pd(W, U, A, B, R) \ + (__m512d)__builtin_ia32_maxpd512_mask(A, B, W, U, R) + +#define _mm512_maskz_max_round_pd(U, A, B, R) \ + (__m512d)__builtin_ia32_maxpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, R) + +#define _mm512_max_round_ps(A, B, R) \ + (__m512)__builtin_ia32_maxps512_mask(A, B, (__v16sf)_mm512_setzero_pd(), -1, R) + +#define _mm512_mask_max_round_ps(W, U, A, B, R) \ + (__m512)__builtin_ia32_maxps512_mask(A, B, W, U, R) + +#define _mm512_maskz_max_round_ps(U, A, B, R) \ + (__m512)__builtin_ia32_maxps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, R) + +#define _mm512_min_round_pd(A, B, R) \ + (__m512d)__builtin_ia32_minpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, R) + +#define _mm512_mask_min_round_pd(W, U, A, B, R) \ + (__m512d)__builtin_ia32_minpd512_mask(A, B, W, U, R) + +#define _mm512_maskz_min_round_pd(U, A, B, R) \ + (__m512d)__builtin_ia32_minpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, R) + +#define _mm512_min_round_ps(A, B, R) \ + (__m512)__builtin_ia32_minps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, R) + +#define _mm512_mask_min_round_ps(W, U, A, B, R) \ + (__m512)__builtin_ia32_minps512_mask(A, B, W, U, R) + +#define _mm512_maskz_min_round_ps(U, A, B, R) \ + (__m512)__builtin_ia32_minps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, R) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_scalef_round_pd (__m512d __A, __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_scalef_round_pd (__m512d __W, __mmask8 __U, __m512d __A, + __m512d __B, const int __R) +{ + return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_scalef_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + const int __R) +{ + return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_scalef_round_ps (__m512 __A, __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_scalef_round_ps (__m512 __W, __mmask16 __U, __m512 __A, + __m512 __B, const int __R) +{ + return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_scalef_round_ps (__mmask16 __U, __m512 __A, __m512 __B, + const int __R) +{ + return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +#else +#define _mm512_scalef_round_pd(A, B, C) \ + (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) + +#define _mm512_mask_scalef_round_pd(W, U, A, B, C) \ + (__m512d)__builtin_ia32_scalefpd512_mask(A, B, W, U, C) + +#define _mm512_maskz_scalef_round_pd(U, A, B, C) \ + (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C) + +#define _mm512_scalef_round_ps(A, B, C) \ + (__m512)__builtin_ia32_scalefps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, C) + +#define _mm512_mask_scalef_round_ps(W, U, A, B, C) \ + (__m512)__builtin_ia32_scalefps512_mask(A, B, W, U, C) + +#define _mm512_maskz_scalef_round_ps(U, A, B, C) \ + (__m512)__builtin_ia32_scalefps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmadd_round_pd (__m512d __A, __m512d __B, __m512d __C, + __mmask8 __U, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmadd_round_ps (__m512 __A, __m512 __B, __m512 __C, + __mmask16 __U, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmsub_round_pd (__m512d __A, __m512d __B, __m512d __C, + __mmask8 __U, const int __R) +{ + return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmsub_round_ps (__m512 __A, __m512 __B, __m512 __C, + __mmask16 __U, const int __R) +{ + return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmaddsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmaddsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmaddsub_round_pd (__m512d __A, __m512d __B, __m512d __C, + __mmask8 __U, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmaddsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmaddsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmaddsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmaddsub_round_ps (__m512 __A, __m512 __B, __m512 __C, + __mmask16 __U, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmaddsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmsubadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmsubadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmsubadd_round_pd (__m512d __A, __m512d __B, __m512d __C, + __mmask8 __U, const int __R) +{ + return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmsubadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmsubadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmsubadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmsubadd_round_ps (__m512 __A, __m512 __B, __m512 __C, + __mmask16 __U, const int __R) +{ + return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmsubadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fnmadd_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fnmadd_round_pd (__m512d __A, __mmask8 __U, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fnmadd_round_pd (__m512d __A, __m512d __B, __m512d __C, + __mmask8 __U, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fnmadd_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fnmadd_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fnmadd_round_ps (__m512 __A, __mmask16 __U, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fnmadd_round_ps (__m512 __A, __m512 __B, __m512 __C, + __mmask16 __U, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fnmadd_round_ps (__mmask16 __U, __m512 __A, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fnmsub_round_pd (__m512d __A, __m512d __B, __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fnmsub_round_pd (__m512d __A, __mmask8 __U, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fnmsub_round_pd (__m512d __A, __m512d __B, __m512d __C, + __mmask8 __U, const int __R) +{ + return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fnmsub_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + __m512d __C, const int __R) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fnmsub_round_ps (__m512 __A, __m512 __B, __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fnmsub_round_ps (__m512 __A, __mmask16 __U, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fnmsub_round_ps (__m512 __A, __m512 __B, __m512 __C, + __mmask16 __U, const int __R) +{ + return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fnmsub_round_ps (__mmask16 __U, __m512 __A, __m512 __B, + __m512 __C, const int __R) +{ + return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) __U, __R); +} +#else +#define _mm512_fmadd_round_pd(A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, -1, R) + +#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, U, R) + +#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_mask3(A, B, C, U, R) + +#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_maskz(A, B, C, U, R) + +#define _mm512_fmadd_round_ps(A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddps512_mask(A, B, C, -1, R) + +#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) \ + (__m512)__builtin_ia32_vfmaddps512_mask(A, B, C, U, R) + +#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) \ + (__m512)__builtin_ia32_vfmaddps512_mask3(A, B, C, U, R) + +#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddps512_maskz(A, B, C, U, R) + +#define _mm512_fmsub_round_pd(A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, -(C), -1, R) + +#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, -(C), U, R) + +#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) \ + (__m512d)__builtin_ia32_vfmsubpd512_mask3(A, B, C, U, R) + +#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_maskz(A, B, -(C), U, R) + +#define _mm512_fmsub_round_ps(A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddps512_mask(A, B, -(C), -1, R) + +#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) \ + (__m512)__builtin_ia32_vfmaddps512_mask(A, B, -(C), U, R) + +#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) \ + (__m512)__builtin_ia32_vfmsubps512_mask3(A, B, C, U, R) + +#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddps512_maskz(A, B, -(C), U, R) + +#define _mm512_fmaddsub_round_pd(A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, C, -1, R) + +#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, U, R) + +#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) \ + (__m512d)__builtin_ia32_vfmaddsubpd512_mask3(A, B, C, U, R) + +#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddsubpd512_maskz(A, B, C, U, R) + +#define _mm512_fmaddsub_round_ps(A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, C, -1, R) + +#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) \ + (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, C, U, R) + +#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) \ + (__m512)__builtin_ia32_vfmaddsubps512_mask3(A, B, C, U, R) + +#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddsubps512_maskz(A, B, C, U, R) + +#define _mm512_fmsubadd_round_pd(A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, -(C), -1, R) + +#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, -(C), U, R) + +#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) \ + (__m512d)__builtin_ia32_vfmsubaddpd512_mask3(A, B, C, U, R) + +#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddsubpd512_maskz(A, B, -(C), U, R) + +#define _mm512_fmsubadd_round_ps(A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, -(C), -1, R) + +#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) \ + (__m512)__builtin_ia32_vfmaddsubps512_mask(A, B, -(C), U, R) + +#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) \ + (__m512)__builtin_ia32_vfmsubaddps512_mask3(A, B, C, U, R) + +#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddsubps512_maskz(A, B, -(C), U, R) + +#define _mm512_fnmadd_round_pd(A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_mask(-(A), B, C, -1, R) + +#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) \ + (__m512d)__builtin_ia32_vfnmaddpd512_mask(-(A), B, C, U, R) + +#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(A), B, C, U, R) + +#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(A), B, C, U, R) + +#define _mm512_fnmadd_round_ps(A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddps512_mask(-(A), B, C, -1, R) + +#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) \ + (__m512)__builtin_ia32_vfnmaddps512_mask(-(A), B, C, U, R) + +#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) \ + (__m512)__builtin_ia32_vfmaddps512_mask3(-(A), B, C, U, R) + +#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddps512_maskz(-(A), B, C, U, R) + +#define _mm512_fnmsub_round_pd(A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_mask(-(A), B, -(C), -1, R) + +#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) \ + (__m512d)__builtin_ia32_vfnmsubpd512_mask(A, B, C, U, R) + +#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) \ + (__m512d)__builtin_ia32_vfnmsubpd512_mask3(A, B, C, U, R) + +#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) \ + (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(A), B, -(C), U, R) + +#define _mm512_fnmsub_round_ps(A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddps512_mask(-(A), B, -(C), -1, R) + +#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) \ + (__m512)__builtin_ia32_vfnmsubps512_mask(A, B, C, U, R) + +#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) \ + (__m512)__builtin_ia32_vfnmsubps512_mask3(A, B, C, U, R) + +#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) \ + (__m512)__builtin_ia32_vfmaddps512_maskz(-(A), B, -(C), U, R) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_abs_epi64 (__m512i __A) +{ + return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_abs_epi32 (__m512i __A) +{ + return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_broadcastss_ps (__m128 __A) +{ + __v16sf __O; + return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A, __O, + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A) +{ + return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A, + (__v16sf) __O, __M); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A) +{ + return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A, + (__v16sf) + _mm512_setzero_ps (), + __M); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_broadcastsd_pd (__m128d __A) +{ + __v8df __O; + return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A, __O, + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A) +{ + return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A, + (__v8df) __O, __M); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A) +{ + return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A, + (__v8df) + _mm512_setzero_pd (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_broadcastd_epi32 (__m128i __A) +{ + __v16si __O; + return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A, __O, + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A, + (__v16si) __O, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A, + (__v16si) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_set1_epi32 (int __A) +{ + __v16si __O; + return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, __O, + (__mmask16)(-1)); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A) +{ + return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O, + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_set1_epi32 (__mmask16 __M, int __A) +{ + return (__m512i) + __builtin_ia32_pbroadcastd512_gpr_mask (__A, + (__v16si) _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_broadcastq_epi64 (__m128i __A) +{ + __v8di __O; + return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A, __O, + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A, + (__v8di) __O, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A, + (__v8di) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_set1_epi64 (long long __A) +{ + __v8di __O; +#ifdef TARGET_64BIT + return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, __O, + (__mmask8)(-1)); +#else + return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A, __O, + (__mmask8)(-1)); +#endif +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A) +{ +#ifdef TARGET_64BIT + return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O, + __M); +#else + return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A, (__v8di) __O, + __M); +#endif +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_set1_epi64 (__mmask8 __M, long long __A) +{ +#ifdef TARGET_64BIT + return (__m512i) + __builtin_ia32_pbroadcastq512_gpr_mask (__A, + (__v8di) _mm512_setzero_si512 (), + __M); +#else + return (__m512i) + __builtin_ia32_pbroadcastq512_mem_mask (__A, + (__v8di) _mm512_setzero_si512 (), + __M); +#endif +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_broadcast_f32x4 (__m128 __A) +{ + __v16sf __O; + return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A, __O, + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A) +{ + return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A, + (__v16sf) __O, + __M); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A) +{ + return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A, + (__v16sf) + _mm512_setzero_ps (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_broadcast_i32x4 (__m128i __A) +{ + __v16si __O; + return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A, + __O, + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A, + (__v16si) __O, + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A, + (__v16si) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_broadcast_f64x4 (__m256d __A) +{ + __v8df __O; + return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A, + __O, + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A) +{ + return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A, + (__v8df) __O, + __M); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A) +{ + return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A, + (__v8df) + _mm512_setzero_pd (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_broadcast_i64x4 (__m256i __A) +{ + __v8di __O; + return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A, + __O, + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A) +{ + return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A, + (__v8di) __O, + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A) +{ + return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A, + (__v8di) + _mm512_setzero_si512 (), + __M); +} + +typedef enum +{ + _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02, + _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05, + _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08, + _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B, + _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E, + _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11, + _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14, + _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17, + _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A, + _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D, + _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20, + _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23, + _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26, + _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29, + _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C, + _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F, + _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32, + _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35, + _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38, + _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B, + _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E, + _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41, + _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44, + _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47, + _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A, + _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D, + _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50, + _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53, + _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56, + _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59, + _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C, + _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F, + _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62, + _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65, + _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68, + _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B, + _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E, + _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71, + _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74, + _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77, + _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A, + _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D, + _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80, + _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83, + _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86, + _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89, + _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C, + _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F, + _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92, + _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95, + _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98, + _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B, + _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E, + _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1, + _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4, + _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7, + _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA, + _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD, + _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0, + _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3, + _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6, + _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9, + _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC, + _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF, + _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2, + _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5, + _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8, + _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB, + _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE, + _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1, + _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4, + _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7, + _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA, + _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD, + _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0, + _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3, + _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6, + _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9, + _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC, + _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF, + _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2, + _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5, + _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8, + _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB, + _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE, + _MM_PERM_DDDD = 0xFF +} _MM_PERM_ENUM; + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_shuffle_epi32 (__m512i __A, _MM_PERM_ENUM __mask) +{ + return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A, + __mask, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_shuffle_epi32 (__m512i __W, __mmask16 __U, __m512i __A, + _MM_PERM_ENUM __mask) +{ + return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A, + __mask, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_shuffle_epi32 (__mmask16 __U, __m512i __A, _MM_PERM_ENUM __mask) +{ + return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A, + __mask, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_shuffle_i64x2 (__m512i __A, __m512i __B, const int __imm) +{ + return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A, + (__v8di) __B, __imm, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_shuffle_i64x2 (__m512i __W, __mmask8 __U, __m512i __A, + __m512i __B, const int __imm) +{ + return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A, + (__v8di) __B, __imm, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_shuffle_i64x2 (__mmask8 __U, __m512i __A, __m512i __B, + const int __imm) +{ + return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A, + (__v8di) __B, __imm, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_shuffle_i32x4 (__m512i __A, __m512i __B, const int __imm) +{ + return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A, + (__v16si) __B, + __imm, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_shuffle_i32x4 (__m512i __W, __mmask16 __U, __m512i __A, + __m512i __B, const int __imm) +{ + return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A, + (__v16si) __B, + __imm, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_shuffle_i32x4 (__mmask16 __U, __m512i __A, __m512i __B, + const int __imm) +{ + return (__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si) __A, + (__v16si) __B, + __imm, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_shuffle_f64x2 (__m512d __A, __m512d __B, const int __imm) +{ + return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A, + (__v8df) __B, __imm, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_shuffle_f64x2 (__m512d __W, __mmask8 __U, __m512d __A, + __m512d __B, const int __imm) +{ + return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A, + (__v8df) __B, __imm, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_shuffle_f64x2 (__mmask8 __U, __m512d __A, __m512d __B, + const int __imm) +{ + return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A, + (__v8df) __B, __imm, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_shuffle_f32x4 (__m512 __A, __m512 __B, const int __imm) +{ + return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A, + (__v16sf) __B, __imm, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_shuffle_f32x4 (__m512 __W, __mmask16 __U, __m512 __A, + __m512 __B, const int __imm) +{ + return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A, + (__v16sf) __B, __imm, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_shuffle_f32x4 (__mmask16 __U, __m512 __A, __m512 __B, + const int __imm) +{ + return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A, + (__v16sf) __B, __imm, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +#else +#define _mm512_shuffle_epi32(X, C) \ + ((__m512i) __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__mmask16)-1)) + +#define _mm512_mask_shuffle_epi32(W, U, X, C) \ + ((__m512i) __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)(W),\ + (__mmask16)(U))) + +#define _mm512_maskz_shuffle_epi32(U, X, C) \ + ((__m512i) __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\ + (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__mmask16)(U))) + +#define _mm512_shuffle_i64x2(X, Y, C) \ + ((__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(C),\ + (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__mmask8)-1)) + +#define _mm512_mask_shuffle_i64x2(W, U, X, Y, C) \ + ((__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(C),\ + (__v8di)(__m512i)(W),\ + (__mmask8)(U))) + +#define _mm512_maskz_shuffle_i64x2(U, X, Y, C) \ + ((__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(C),\ + (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__mmask8)(U))) + +#define _mm512_shuffle_i32x4(X, Y, C) \ + ((__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(C),\ + (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__mmask16)-1)) + +#define _mm512_mask_shuffle_i32x4(W, U, X, Y, C) \ + ((__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(C),\ + (__v16si)(__m512i)(W),\ + (__mmask16)(U))) + +#define _mm512_maskz_shuffle_i32x4(U, X, Y, C) \ + ((__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(C),\ + (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__mmask16)(U))) + +#define _mm512_shuffle_f64x2(X, Y, C) \ + ((__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (int)(C),\ + (__v8df)(__m512d)_mm512_setzero_pd(),\ + (__mmask8)-1)) + +#define _mm512_mask_shuffle_f64x2(W, U, X, Y, C) \ + ((__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (int)(C),\ + (__v8df)(__m512d)(W),\ + (__mmask8)(U))) + +#define _mm512_maskz_shuffle_f64x2(U, X, Y, C) \ + ((__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (int)(C),\ + (__v8df)(__m512d)_mm512_setzero_pd(),\ + (__mmask8)(U))) + +#define _mm512_shuffle_f32x4(X, Y, C) \ + ((__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (int)(C),\ + (__v16sf)(__m512)_mm512_setzero_ps(),\ + (__mmask16)-1)) + +#define _mm512_mask_shuffle_f32x4(W, U, X, Y, C) \ + ((__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (int)(C),\ + (__v16sf)(__m512)(W),\ + (__mmask16)(U))) + +#define _mm512_maskz_shuffle_f32x4(U, X, Y, C) \ + ((__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (int)(C),\ + (__v16sf)(__m512)_mm512_setzero_ps(),\ + (__mmask16)(U))) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rolv_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rorv_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rolv_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rorv_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtt_roundpd_epi32 (__m512d __A, const int __R) +{ + return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) -1, __R); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtt_roundpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A, + const int __R) +{ + return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A, + (__v8si) __W, + (__mmask8) __U, __R); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtt_roundpd_epi32 (__mmask8 __U, __m512d __A, const int __R) +{ + return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) __U, __R); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtt_roundpd_epu32 (__m512d __A, const int __R) +{ + return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) -1, __R); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtt_roundpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A, + const int __R) +{ + return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A, + (__v8si) __W, + (__mmask8) __U, __R); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtt_roundpd_epu32 (__mmask8 __U, __m512d __A, const int __R) +{ + return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) __U, __R); +} +#else +#define _mm512_cvtt_roundpd_epi32(A, B) \ + ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), -1, B)) + +#define _mm512_mask_cvtt_roundpd_epi32(W, U, A, B) \ + ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)(W), U, B)) + +#define _mm512_maskz_cvtt_roundpd_epi32(U, A, B) \ + ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B)) + +#define _mm512_cvtt_roundpd_epu32(A, B) \ + ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), -1, B)) + +#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, B) \ + ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)(W), U, B)) + +#define _mm512_maskz_cvtt_roundpd_epu32(U, A, B) \ + ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B)) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvt_roundpd_epi32 (__m512d __A, const int __R) +{ + return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) -1, __R); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvt_roundpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A, + const int __R) +{ + return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A, + (__v8si) __W, + (__mmask8) __U, __R); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvt_roundpd_epi32 (__mmask8 __U, __m512d __A, const int __R) +{ + return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) __U, __R); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvt_roundpd_epu32 (__m512d __A, const int __R) +{ + return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) -1, __R); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvt_roundpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A, + const int __R) +{ + return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A, + (__v8si) __W, + (__mmask8) __U, __R); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvt_roundpd_epu32 (__mmask8 __U, __m512d __A, const int __R) +{ + return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) __U, __R); +} +#else +#define _mm512_cvt_roundpd_epi32(A, B) \ + ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), -1, B)) + +#define _mm512_mask_cvt_roundpd_epi32(W, U, A, B) \ + ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)(W), U, B)) + +#define _mm512_maskz_cvt_roundpd_epi32(U, A, B) \ + ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B)) + +#define _mm512_cvt_roundpd_epu32(A, B) \ + ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), -1, B)) + +#define _mm512_mask_cvt_roundpd_epu32(W, U, A, B) \ + ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)(W), U, B)) + +#define _mm512_maskz_cvt_roundpd_epu32(U, A, B) \ + ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B)) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtt_roundps_epi32 (__m512 __A, const int __R) +{ + return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1, __R); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtt_roundps_epi32 (__m512i __W, __mmask16 __U, __m512 __A, + const int __R) +{ + return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A, + (__v16si) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtt_roundps_epi32 (__mmask16 __U, __m512 __A, const int __R) +{ + return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U, __R); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtt_roundps_epu32 (__m512 __A, const int __R) +{ + return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1, __R); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtt_roundps_epu32 (__m512i __W, __mmask16 __U, __m512 __A, + const int __R) +{ + return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A, + (__v16si) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtt_roundps_epu32 (__mmask16 __U, __m512 __A, const int __R) +{ + return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U, __R); +} +#else +#define _mm512_cvtt_roundps_epi32(A, B) \ + ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), -1, B)) + +#define _mm512_mask_cvtt_roundps_epi32(W, U, A, B) \ + ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)(W), U, B)) + +#define _mm512_maskz_cvtt_roundps_epi32(U, A, B) \ + ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B)) + +#define _mm512_cvtt_roundps_epu32(A, B) \ + ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), -1, B)) + +#define _mm512_mask_cvtt_roundps_epu32(W, U, A, B) \ + ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)(W), U, B)) + +#define _mm512_maskz_cvtt_roundps_epu32(U, A, B) \ + ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B)) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvt_roundps_epi32 (__m512 __A, const int __R) +{ + return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1, __R); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvt_roundps_epi32 (__m512i __W, __mmask16 __U, __m512 __A, + const int __R) +{ + return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A, + (__v16si) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvt_roundps_epi32 (__mmask16 __U, __m512 __A, const int __R) +{ + return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U, __R); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvt_roundps_epu32 (__m512 __A, const int __R) +{ + return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1, __R); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvt_roundps_epu32 (__m512i __W, __mmask16 __U, __m512 __A, + const int __R) +{ + return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A, + (__v16si) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvt_roundps_epu32 (__mmask16 __U, __m512 __A, const int __R) +{ + return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U, __R); +} +#else +#define _mm512_cvt_roundps_epi32(A, B) \ + ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), -1, B)) + +#define _mm512_mask_cvt_roundps_epi32(W, U, A, B) \ + ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)(W), U, B)) + +#define _mm512_maskz_cvt_roundps_epi32(U, A, B) \ + ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B)) + +#define _mm512_cvt_roundps_epu32(A, B) \ + ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), -1, B)) + +#define _mm512_mask_cvt_roundps_epu32(W, U, A, B) \ + ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)(W), U, B)) + +#define _mm512_maskz_cvt_roundps_epu32(U, A, B) \ + ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B)) +#endif + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtu32_sd (__m128d __A, unsigned __B) +{ + return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B); +} + +#ifdef __x86_64__ +#ifdef __OPTIMIZE__ +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundu64_sd (__m128d __A, unsigned long long __B, const int __R) +{ + return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B, __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundi64_sd (__m128d __A, long long __B, const int __R) +{ + return (__m128d) __builtin_ia32_cvtsi2sd64 ((__v2df) __A, __B, __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundsi64_sd (__m128d __A, long long __B, const int __R) +{ + return (__m128d) __builtin_ia32_cvtsi2sd64 ((__v2df) __A, __B, __R); +} +#else +#define _mm_cvt_roundu64_sd(A, B, C) \ + (__m128d)__builtin_ia32_cvtusi2sd64(A, B, C) + +#define _mm_cvt_roundi64_sd(A, B, C) \ + (__m128d)__builtin_ia32_cvtsi2sd64(A, B, C) + +#define _mm_cvt_roundsi64_sd(A, B, C) \ + (__m128d)__builtin_ia32_cvtsi2sd64(A, B, C) +#endif + +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundu32_ss (__m128 __A, unsigned __B, const int __R) +{ + return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B, __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundsi32_ss (__m128 __A, int __B, const int __R) +{ + return (__m128) __builtin_ia32_cvtsi2ss32 ((__v4sf) __A, __B, __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundi32_ss (__m128 __A, int __B, const int __R) +{ + return (__m128) __builtin_ia32_cvtsi2ss32 ((__v4sf) __A, __B, __R); +} +#else +#define _mm_cvt_roundu32_ss(A, B, C) \ + (__m128)__builtin_ia32_cvtusi2ss32(A, B, C) + +#define _mm_cvt_roundi32_ss(A, B, C) \ + (__m128)__builtin_ia32_cvtsi2ss32(A, B, C) + +#define _mm_cvt_roundsi32_ss(A, B, C) \ + (__m128)__builtin_ia32_cvtsi2ss32(A, B, C) +#endif + +#ifdef __x86_64__ +#ifdef __OPTIMIZE__ +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundu64_ss (__m128 __A, unsigned long long __B, const int __R) +{ + return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B, __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundsi64_ss (__m128 __A, long long __B, const int __R) +{ + return (__m128) __builtin_ia32_cvtsi2ss64 ((__v4sf) __A, __B, __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundi64_ss (__m128 __A, long long __B, const int __R) +{ + return (__m128) __builtin_ia32_cvtsi2ss64 ((__v4sf) __A, __B, __R); +} +#else +#define _mm_cvt_roundu64_ss(A, B, C) \ + (__m128)__builtin_ia32_cvtusi2ss64(A, B, C) + +#define _mm_cvt_roundi64_ss(A, B, C) \ + (__m128)__builtin_ia32_cvtsi2ss64(A, B, C) + +#define _mm_cvt_roundsi64_ss(A, B, C) \ + (__m128)__builtin_ia32_cvtsi2ss64(A, B, C) +#endif + +#endif + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi32_epi8 (__m512i __A) +{ + __v16qi __O; + return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A, __O, + (__mmask16) -1); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A, + (__v16qi) __O, __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A, + (__v16qi) + _mm_setzero_si128 (), + __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtsepi32_epi8 (__m512i __A) +{ + __v16qi __O; + return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A, __O, + (__mmask16) -1); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A, + (__v16qi) __O, __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A, + (__v16qi) + _mm_setzero_si128 (), + __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtusepi32_epi8 (__m512i __A) +{ + __v16qi __O; + return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A, __O, + (__mmask16) -1); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A, + (__v16qi) __O, + __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A, + (__v16qi) + _mm_setzero_si128 (), + __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi32_epi16 (__m512i __A) +{ + __v16hi __O; + return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A, __O, + (__mmask16) -1); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A, + (__v16hi) __O, __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A, + (__v16hi) + _mm256_setzero_si256 (), + __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtsepi32_epi16 (__m512i __A) +{ + __v16hi __O; + return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A, __O, + (__mmask16) -1); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A, + (__v16hi) __O, __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A, + (__v16hi) + _mm256_setzero_si256 (), + __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtusepi32_epi16 (__m512i __A) +{ + __v16hi __O; + return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A, __O, + (__mmask16) -1); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A, + (__v16hi) __O, + __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A, + (__v16hi) + _mm256_setzero_si256 (), + __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi64_epi32 (__m512i __A) +{ + __v8si __O; + return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A, __O, + (__mmask8) -1); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A, + (__v8si) __O, __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A, + (__v8si) + _mm256_setzero_si256 (), + __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtsepi64_epi32 (__m512i __A) +{ + __v8si __O; + return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A, __O, + (__mmask8) -1); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A, + (__v8si) __O, __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A, + (__v8si) + _mm256_setzero_si256 (), + __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtusepi64_epi32 (__m512i __A) +{ + __v8si __O; + return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A, __O, + (__mmask8) -1); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A, + (__v8si) __O, __M); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A) +{ + return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A, + (__v8si) + _mm256_setzero_si256 (), + __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi64_epi16 (__m512i __A) +{ + __v8hi __O; + return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A, __O, + (__mmask8) -1); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A, + (__v8hi) __O, __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A, + (__v8hi) + _mm_setzero_si128 (), + __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtsepi64_epi16 (__m512i __A) +{ + __v8hi __O; + return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A, __O, + (__mmask8) -1); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A, + (__v8hi) __O, __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A, + (__v8hi) + _mm_setzero_si128 (), + __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtusepi64_epi16 (__m512i __A) +{ + __v8hi __O; + return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A, __O, + (__mmask8) -1); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A, + (__v8hi) __O, __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A, + (__v8hi) + _mm_setzero_si128 (), + __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi64_epi8 (__m512i __A) +{ + __v16qi __O; + return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A, __O, + (__mmask8) -1); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A, + (__v16qi) __O, __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A, + (__v16qi) + _mm_setzero_si128 (), + __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtsepi64_epi8 (__m512i __A) +{ + __v16qi __O; + return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A, __O, + (__mmask8) -1); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A, + (__v16qi) __O, __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A, + (__v16qi) + _mm_setzero_si128 (), + __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtusepi64_epi8 (__m512i __A) +{ + __v16qi __O; + return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A, __O, + (__mmask8) -1); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A, + (__v16qi) __O, + __M); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A) +{ + return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A, + (__v16qi) + _mm_setzero_si128 (), + __M); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi32_pd (__m256i __A) +{ + return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A) +{ + return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A) +{ + return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepu32_pd (__m256i __A) +{ + return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A) +{ + return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A) +{ + return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvt_roundepi32_ps (__m512i __A, const int __R) +{ + return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvt_roundepi32_ps (__m512 __W, __mmask16 __U, __m512i __A, + const int __R) +{ + return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvt_roundepi32_ps (__mmask16 __U, __m512i __A, const int __R) +{ + return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvt_roundepu32_ps (__m512i __A, const int __R) +{ + return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvt_roundepu32_ps (__m512 __W, __mmask16 __U, __m512i __A, + const int __R) +{ + return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvt_roundepu32_ps (__mmask16 __U, __m512i __A, const int __R) +{ + return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +#else +#define _mm512_cvt_roundepi32_ps(A, B) \ + (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), -1, B) + +#define _mm512_mask_cvt_roundepi32_ps(W, U, A, B) \ + (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), W, U, B) + +#define _mm512_maskz_cvt_roundepi32_ps(U, A, B) \ + (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), U, B) + +#define _mm512_cvt_roundepu32_ps(A, B) \ + (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), -1, B) + +#define _mm512_mask_cvt_roundepu32_ps(W, U, A, B) \ + (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), W, U, B) + +#define _mm512_maskz_cvt_roundepu32_ps(U, A, B) \ + (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), U, B) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m256d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_extractf64x4_pd (__m512d __A, const int __imm) +{ + return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A, + __imm, + (__v4df) + _mm256_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m256d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_extractf64x4_pd (__m256d __W, __mmask8 __U, __m512d __A, + const int __imm) +{ + return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A, + __imm, + (__v4df) __W, + (__mmask8) __U); +} + +extern __inline __m256d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_extractf64x4_pd (__mmask8 __U, __m512d __A, const int __imm) +{ + return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A, + __imm, + (__v4df) + _mm256_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_extractf32x4_ps (__m512 __A, const int __imm) +{ + return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A, + __imm, + (__v4sf) + _mm_setzero_ps (), + (__mmask8) -1); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_extractf32x4_ps (__m128 __W, __mmask8 __U, __m512 __A, + const int __imm) +{ + return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A, + __imm, + (__v4sf) __W, + (__mmask8) __U); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_extractf32x4_ps (__mmask8 __U, __m512 __A, const int __imm) +{ + return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A, + __imm, + (__v4sf) + _mm_setzero_ps (), + (__mmask8) __U); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_extracti64x4_epi64 (__m512i __A, const int __imm) +{ + return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A, + __imm, + (__v4di) + _mm256_setzero_si256 (), + (__mmask8) -1); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_extracti64x4_epi64 (__m256i __W, __mmask8 __U, __m512i __A, + const int __imm) +{ + return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A, + __imm, + (__v4di) __W, + (__mmask8) __U); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_extracti64x4_epi64 (__mmask8 __U, __m512i __A, const int __imm) +{ + return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A, + __imm, + (__v4di) + _mm256_setzero_si256 (), + (__mmask8) __U); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_extracti32x4_epi32 (__m512i __A, const int __imm) +{ + return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A, + __imm, + (__v4si) + _mm_setzero_si128 (), + (__mmask8) -1); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_extracti32x4_epi32 (__m128i __W, __mmask8 __U, __m512i __A, + const int __imm) +{ + return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A, + __imm, + (__v4si) __W, + (__mmask8) __U); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_extracti32x4_epi32 (__mmask8 __U, __m512i __A, const int __imm) +{ + return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A, + __imm, + (__v4si) + _mm_setzero_si128 (), + (__mmask8) __U); +} +#else + +#define _mm512_extractf64x4_pd(X, C) \ + ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X), \ + (int) (C),\ + (__v4df)(__m256d)_mm256_setzero_pd(),\ + (__mmask8)-1)) + +#define _mm512_mask_extractf64x4_pd(W, U, X, C) \ + ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X), \ + (int) (C),\ + (__v4df)(__m256d)(W),\ + (__mmask8)(U))) + +#define _mm512_maskz_extractf64x4_pd(U, X, C) \ + ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X), \ + (int) (C),\ + (__v4df)(__m256d)_mm256_setzero_pd(),\ + (__mmask8)(U))) + +#define _mm512_extractf32x4_ps(X, C) \ + ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X), \ + (int) (C),\ + (__v4sf)(__m128)_mm_setzero_ps(),\ + (__mmask8)-1)) + +#define _mm512_mask_extractf32x4_ps(W, U, X, C) \ + ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X), \ + (int) (C),\ + (__v4sf)(__m128)(W),\ + (__mmask8)(U))) + +#define _mm512_maskz_extractf32x4_ps(U, X, C) \ + ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X), \ + (int) (C),\ + (__v4sf)(__m128)_mm_setzero_ps(),\ + (__mmask8)(U))) + +#define _mm512_extracti64x4_epi64(X, C) \ + ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X), \ + (int) (C),\ + (__v4di)(__m256i)_mm256_setzero_si256 (),\ + (__mmask8)-1)) + +#define _mm512_mask_extracti64x4_epi64(W, U, X, C) \ + ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X), \ + (int) (C),\ + (__v4di)(__m256i)(W),\ + (__mmask8)(U))) + +#define _mm512_maskz_extracti64x4_epi64(U, X, C) \ + ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X), \ + (int) (C),\ + (__v4di)(__m256i)_mm256_setzero_si256 (),\ + (__mmask8)(U))) + +#define _mm512_extracti32x4_epi32(X, C) \ + ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X), \ + (int) (C),\ + (__v4si)(__m128i)_mm_setzero_si128 (),\ + (__mmask8)-1)) + +#define _mm512_mask_extracti32x4_epi32(W, U, X, C) \ + ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X), \ + (int) (C),\ + (__v4si)(__m128i)(W),\ + (__mmask8)(U))) + +#define _mm512_maskz_extracti32x4_epi32(U, X, C) \ + ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X), \ + (int) (C),\ + (__v4si)(__m128i)_mm_setzero_si128 (),\ + (__mmask8)(U))) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_inserti32x4 (__m512i __A, __m128i __B, const int __imm) +{ + return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __A, + (__v4si) __B, + __imm, + (__v16si) __A, -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_insertf32x4 (__m512 __A, __m128 __B, const int __imm) +{ + return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __A, + (__v4sf) __B, + __imm, + (__v16sf) __A, -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_inserti64x4 (__m512i __A, __m256i __B, const int __imm) +{ + return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A, + (__v4di) __B, + __imm, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_inserti64x4 (__m512i __W, __mmask8 __U, __m512i __A, + __m256i __B, const int __imm) +{ + return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A, + (__v4di) __B, + __imm, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_inserti64x4 (__mmask8 __U, __m512i __A, __m256i __B, + const int __imm) +{ + return (__m512i) __builtin_ia32_inserti64x4_mask ((__v8di) __A, + (__v4di) __B, + __imm, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_insertf64x4 (__m512d __A, __m256d __B, const int __imm) +{ + return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A, + (__v4df) __B, + __imm, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_insertf64x4 (__m512d __W, __mmask8 __U, __m512d __A, + __m256d __B, const int __imm) +{ + return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A, + (__v4df) __B, + __imm, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_insertf64x4 (__mmask8 __U, __m512d __A, __m256d __B, + const int __imm) +{ + return (__m512d) __builtin_ia32_insertf64x4_mask ((__v8df) __A, + (__v4df) __B, + __imm, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} +#else +#define _mm512_insertf32x4(X, Y, C) \ + ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X), \ + (__v4sf)(__m128) (Y), (int) (C), (__v16sf)(__m512) (X), (__mmask16)(-1))) + +#define _mm512_inserti32x4(X, Y, C) \ + ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X), \ + (__v4si)(__m128i) (Y), (int) (C), (__v16si)(__m512i) (X), (__mmask16)(-1))) + +#define _mm512_insertf64x4(X, Y, C) \ + ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X), \ + (__v4df)(__m256d) (Y), (int) (C), \ + (__v8df)(__m512d)_mm512_setzero_pd(), \ + (__mmask8)-1)) + +#define _mm512_mask_insertf64x4(W, U, X, Y, C) \ + ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X), \ + (__v4df)(__m256d) (Y), (int) (C), \ + (__v8df)(__m512d)(W), \ + (__mmask8)(U))) + +#define _mm512_maskz_insertf64x4(U, X, Y, C) \ + ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X), \ + (__v4df)(__m256d) (Y), (int) (C), \ + (__v8df)(__m512d)_mm512_setzero_pd(), \ + (__mmask8)(U))) + +#define _mm512_inserti64x4(X, Y, C) \ + ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X), \ + (__v4di)(__m256i) (Y), (int) (C), \ + (__v8di)(__m512i)_mm512_setzero_si512 (), \ + (__mmask8)-1)) + +#define _mm512_mask_inserti64x4(W, U, X, Y, C) \ + ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X), \ + (__v4di)(__m256i) (Y), (int) (C),\ + (__v8di)(__m512i)(W),\ + (__mmask8)(U))) + +#define _mm512_maskz_inserti64x4(U, X, Y, C) \ + ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X), \ + (__v4di)(__m256i) (Y), (int) (C), \ + (__v8di)(__m512i)_mm512_setzero_si512 (), \ + (__mmask8)(U))) +#endif + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_loadu_pd (void const *__P) +{ + return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *) __P, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P) +{ + return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *) __P, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_loadu_pd (__mmask8 __U, void const *__P) +{ + return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *) __P, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_storeu_pd (void *__P, __m512d __A) +{ + __builtin_ia32_storeupd512_mask ((__v8df *) __P, (__v8df) __A, + (__mmask8) -1); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_storeu_pd (void *__P, __mmask8 __U, __m512d __A) +{ + __builtin_ia32_storeupd512_mask ((__v8df *) __P, (__v8df) __A, + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_loadu_ps (void const *__P) +{ + return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *) __P, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P) +{ + return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *) __P, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_loadu_ps (__mmask16 __U, void const *__P) +{ + return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *) __P, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_storeu_ps (void *__P, __m512 __A) +{ + __builtin_ia32_storeups512_mask ((__v16sf *) __P, (__v16sf) __A, + (__mmask16) -1); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_storeu_ps (void *__P, __mmask16 __U, __m512 __A) +{ + __builtin_ia32_storeups512_mask ((__v16sf *) __P, (__v16sf) __A, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P) +{ + return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *) __P, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_loadu_epi64 (__mmask8 __U, void const *__P) +{ + return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *) __P, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_storeu_epi64 (void *__P, __mmask8 __U, __m512i __A) +{ + __builtin_ia32_storedqudi512_mask ((__v8di *) __P, (__v8di) __A, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_loadu_si512 (void const *__P) +{ + return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *) __P, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P) +{ + return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *) __P, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_loadu_epi32 (__mmask16 __U, void const *__P) +{ + return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *) __P, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_storeu_si512 (void *__P, __m512i __A) +{ + __builtin_ia32_storedqusi512_mask ((__v16si *) __P, (__v16si) __A, + (__mmask16) -1); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_storeu_epi32 (void *__P, __mmask16 __U, __m512i __A) +{ + __builtin_ia32_storedqusi512_mask ((__v16si *) __P, (__v16si) __A, + (__mmask16) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutevar_pd (__m512d __A, __m512i __C) +{ + return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A, + (__v8di) __C, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C) +{ + return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A, + (__v8di) __C, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C) +{ + return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A, + (__v8di) __C, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutevar_ps (__m512 __A, __m512i __C) +{ + return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A, + (__v16si) __C, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C) +{ + return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A, + (__v16si) __C, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C) +{ + return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A, + (__v16si) __C, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutex2var_epi64 (__m512i __A, __m512i __I, __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I + /* idx */ , + (__v8di) __A, + (__v8di) __B, + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I, + __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I + /* idx */ , + (__v8di) __A, + (__v8di) __B, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I, + __mmask8 __U, __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A, + (__v8di) __I + /* idx */ , + (__v8di) __B, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A, + __m512i __I, __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I + /* idx */ , + (__v8di) __A, + (__v8di) __B, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutex2var_epi32 (__m512i __A, __m512i __I, __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I + /* idx */ , + (__v16si) __A, + (__v16si) __B, + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U, + __m512i __I, __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I + /* idx */ , + (__v16si) __A, + (__v16si) __B, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I, + __mmask16 __U, __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A, + (__v16si) __I + /* idx */ , + (__v16si) __B, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A, + __m512i __I, __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I + /* idx */ , + (__v16si) __A, + (__v16si) __B, + (__mmask16) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutex2var_pd (__m512d __A, __m512i __I, __m512d __B) +{ + return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I + /* idx */ , + (__v8df) __A, + (__v8df) __B, + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, + __m512d __B) +{ + return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I + /* idx */ , + (__v8df) __A, + (__v8df) __B, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U, + __m512d __B) +{ + return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A, + (__v8di) __I + /* idx */ , + (__v8df) __B, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I, + __m512d __B) +{ + return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I + /* idx */ , + (__v8df) __A, + (__v8df) __B, + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutex2var_ps (__m512 __A, __m512i __I, __m512 __B) +{ + return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I + /* idx */ , + (__v16sf) __A, + (__v16sf) __B, + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B) +{ + return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I + /* idx */ , + (__v16sf) __A, + (__v16sf) __B, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U, + __m512 __B) +{ + return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A, + (__v16si) __I + /* idx */ , + (__v16sf) __B, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I, + __m512 __B) +{ + return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I + /* idx */ , + (__v16sf) __A, + (__v16sf) __B, + (__mmask16) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permute_pd (__m512d __X, const int __C) +{ + return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permute_pd (__m512d __W, __mmask8 __U, __m512d __X, const int __C) +{ + return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permute_pd (__mmask8 __U, __m512d __X, const int __C) +{ + return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permute_ps (__m512 __X, const int __C) +{ + return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permute_ps (__m512 __W, __mmask16 __U, __m512 __X, const int __C) +{ + return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permute_ps (__mmask16 __U, __m512 __X, const int __C) +{ + return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} +#else +#define _mm512_permute_pd(X, C) \ + ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C), \ + (__v8df)(__m512d)(X), \ + (__mmask8)(-1))) + +#define _mm512_mask_permute_pd(W, U, X, C) \ + ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C), \ + (__v8df)(__m512d)(W), \ + (__mmask8)(U))) + +#define _mm512_maskz_permute_pd(U, X, C) \ + ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C), \ + (__v8df)(__m512d)_mm512_setzero_pd(), \ + (__mmask8)(U))) + +#define _mm512_permute_ps(X, C) \ + ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C), \ + (__v16sf)(__m512)(X), \ + (__mmask16)(-1))) + +#define _mm512_mask_permute_ps(W, U, X, C) \ + ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C), \ + (__v16sf)(__m512)(W), \ + (__mmask16)(U))) + +#define _mm512_maskz_permute_ps(U, X, C) \ + ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C), \ + (__v16sf)(__m512)_mm512_setzero_ps(), \ + (__mmask16)(U))) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutex_epi64 (__m512i __X, const int __I) +{ + return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) (-1)); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutex_epi64 (__m512i __W, __mmask8 __M, + __m512i __X, const int __I) +{ + return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I, + (__v8di) __W, + (__mmask8) __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutex_epi64 (__mmask8 __M, __m512i __X, const int __I) +{ + return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __M); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutex_pd (__m512d __X, const int __M) +{ + return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutex_pd (__m512d __W, __mmask8 __U, __m512d __X, const int __M) +{ + return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutex_pd (__mmask8 __U, __m512d __X, const int __M) +{ + return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} +#else +#define _mm512_permutex_pd(X, M) \ + ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M), \ + (__v8df)(__m512d)(X), (__mmask8)-1)) + +#define _mm512_mask_permutex_pd(W, U, X, M) \ + ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M), \ + (__v8df)(__m512d)(W), (__mmask8)(U))) + +#define _mm512_maskz_permutex_pd(U, X, M) \ + ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M), \ + (__v8df)(__m512d)_mm512_setzero_pd(),\ + (__mmask8)(U))) + +#define _mm512_permutex_epi64(X, I) \ + ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \ + (int)(I), \ + (__v8di)(__m512i)(X), \ + (__mmask8)(-1))) + +#define _mm512_maskz_permutex_epi64(M, X, I) \ + ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \ + (int)(I), \ + (__v8di)(__m512i) \ + (_mm512_setzero_si512 ()),\ + (__mmask8)(M))) + +#define _mm512_mask_permutex_epi64(W, M, X, I) \ + ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \ + (int)(I), \ + (__v8di)(__m512i)(W), \ + (__mmask8)(M))) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X, + __m512i __Y) +{ + return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __X, + (__v8di) __Y, + (__v8di) __W, + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y) +{ + return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X, + __m512i __Y) +{ + return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __X, + (__v16si) __Y, + (__v16si) __W, + __M); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutexvar_pd (__m512i __X, __m512d __Y) +{ + return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y, + (__v8di) __X, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y) +{ + return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y, + (__v8di) __X, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y) +{ + return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y, + (__v8di) __X, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_permutexvar_ps (__m512i __X, __m512 __Y) +{ + return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y, + (__v16si) __X, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y) +{ + return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y, + (__v16si) __X, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y) +{ + return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y, + (__v16si) __X, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_shuffle_ps (__m512 __M, __m512 __V, const int __imm) +{ + return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M, + (__v16sf) __V, __imm, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_shuffle_ps (__m512 __W, __mmask16 __U, __m512 __M, + __m512 __V, const int __imm) +{ + return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M, + (__v16sf) __V, __imm, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_shuffle_ps (__mmask16 __U, __m512 __M, __m512 __V, const int __imm) +{ + return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M, + (__v16sf) __V, __imm, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_shuffle_pd (__m512d __M, __m512d __V, const int __imm) +{ + return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M, + (__v8df) __V, __imm, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_shuffle_pd (__m512d __W, __mmask8 __U, __m512d __M, + __m512d __V, const int __imm) +{ + return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M, + (__v8df) __V, __imm, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_shuffle_pd (__mmask8 __U, __m512d __M, __m512d __V, + const int __imm) +{ + return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M, + (__v8df) __V, __imm, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fixupimm_round_pd (__m512d __A, __m512d __B, __m512i __C, + const int __imm, const int __R) +{ + return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8di) __C, + __imm, + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fixupimm_round_pd (__m512d __A, __mmask8 __U, __m512d __B, + __m512i __C, const int __imm, const int __R) +{ + return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8di) __C, + __imm, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fixupimm_round_pd (__mmask8 __U, __m512d __A, __m512d __B, + __m512i __C, const int __imm, const int __R) +{ + return (__m512d) __builtin_ia32_fixupimmpd512_maskz ((__v8df) __A, + (__v8df) __B, + (__v8di) __C, + __imm, + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fixupimm_round_ps (__m512 __A, __m512 __B, __m512i __C, + const int __imm, const int __R) +{ + return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16si) __C, + __imm, + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fixupimm_round_ps (__m512 __A, __mmask16 __U, __m512 __B, + __m512i __C, const int __imm, const int __R) +{ + return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16si) __C, + __imm, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fixupimm_round_ps (__mmask16 __U, __m512 __A, __m512 __B, + __m512i __C, const int __imm, const int __R) +{ + return (__m512) __builtin_ia32_fixupimmps512_maskz ((__v16sf) __A, + (__v16sf) __B, + (__v16si) __C, + __imm, + (__mmask16) __U, __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fixupimm_round_sd (__m128d __A, __m128d __B, __m128i __C, + const int __imm, const int __R) +{ + return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A, + (__v2df) __B, + (__v2di) __C, __imm, + (__mmask8) -1, __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_mask_fixupimm_round_sd (__m128d __A, __mmask8 __U, __m128d __B, + __m128i __C, const int __imm, const int __R) +{ + return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A, + (__v2df) __B, + (__v2di) __C, __imm, + (__mmask8) __U, __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_maskz_fixupimm_round_sd (__mmask8 __U, __m128d __A, __m128d __B, + __m128i __C, const int __imm, const int __R) +{ + return (__m128d) __builtin_ia32_fixupimmsd_maskz ((__v2df) __A, + (__v2df) __B, + (__v2di) __C, + __imm, + (__mmask8) __U, __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fixupimm_round_ss (__m128 __A, __m128 __B, __m128i __C, + const int __imm, const int __R) +{ + return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A, + (__v4sf) __B, + (__v4si) __C, __imm, + (__mmask8) -1, __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_mask_fixupimm_round_ss (__m128 __A, __mmask8 __U, __m128 __B, + __m128i __C, const int __imm, const int __R) +{ + return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A, + (__v4sf) __B, + (__v4si) __C, __imm, + (__mmask8) __U, __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_maskz_fixupimm_round_ss (__mmask8 __U, __m128 __A, __m128 __B, + __m128i __C, const int __imm, const int __R) +{ + return (__m128) __builtin_ia32_fixupimmss_maskz ((__v4sf) __A, + (__v4sf) __B, + (__v4si) __C, __imm, + (__mmask8) __U, __R); +} + +#else +#define _mm512_shuffle_pd(X, Y, C) \ + ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (int)(C),\ + (__v8df)(__m512d)_mm512_setzero_pd(),\ + (__mmask8)-1)) + +#define _mm512_mask_shuffle_pd(W, U, X, Y, C) \ + ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (int)(C),\ + (__v8df)(__m512d)(W),\ + (__mmask8)(U))) + +#define _mm512_maskz_shuffle_pd(U, X, Y, C) \ + ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (int)(C),\ + (__v8df)(__m512d)_mm512_setzero_pd(),\ + (__mmask8)(U))) + +#define _mm512_shuffle_ps(X, Y, C) \ + ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (int)(C),\ + (__v16sf)(__m512)_mm512_setzero_ps(),\ + (__mmask16)-1)) + +#define _mm512_mask_shuffle_ps(W, U, X, Y, C) \ + ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (int)(C),\ + (__v16sf)(__m512)(W),\ + (__mmask16)(U))) + +#define _mm512_maskz_shuffle_ps(U, X, Y, C) \ + ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (int)(C),\ + (__v16sf)(__m512)_mm512_setzero_ps(),\ + (__mmask16)(U))) + +#define _mm512_fixupimm_round_pd(X, Y, Z, C, R) \ + ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \ + (__mmask8)(-1), (R))) + +#define _mm512_mask_fixupimm_round_pd(X, U, Y, Z, C, R) \ + ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \ + (__mmask8)(U), (R))) + +#define _mm512_maskz_fixupimm_round_pd(U, X, Y, Z, C, R) \ + ((__m512d)__builtin_ia32_fixupimmpd512_maskz ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \ + (__mmask8)(U), (R))) + +#define _mm512_fixupimm_round_ps(X, Y, Z, C, R) \ + ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \ + (__mmask16)(-1), (R))) + +#define _mm512_mask_fixupimm_round_ps(X, U, Y, Z, C, R) \ + ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \ + (__mmask16)(U), (R))) + +#define _mm512_maskz_fixupimm_round_ps(U, X, Y, Z, C, R) \ + ((__m512)__builtin_ia32_fixupimmps512_maskz ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \ + (__mmask16)(U), (R))) + +#define _mm_fixupimm_round_sd(X, Y, Z, C, R) \ + ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \ + (__mmask8)(-1), (R))) + +#define _mm_mask_fixupimm_round_sd(X, U, Y, Z, C, R) \ + ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \ + (__mmask8)(U), (R))) + +#define _mm_maskz_fixupimm_round_sd(U, X, Y, Z, C, R) \ + ((__m128d)__builtin_ia32_fixupimmsd_maskz ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \ + (__mmask8)(U), (R))) + +#define _mm_fixupimm_round_ss(X, Y, Z, C, R) \ + ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \ + (__mmask8)(-1), (R))) + +#define _mm_mask_fixupimm_round_ss(X, U, Y, Z, C, R) \ + ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \ + (__mmask8)(U), (R))) + +#define _mm_maskz_fixupimm_round_ss(U, X, Y, Z, C, R) \ + ((__m128)__builtin_ia32_fixupimmss_maskz ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \ + (__mmask8)(U), (R))) +#endif + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_movehdup_ps (__m512 __A) +{ + return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_moveldup_ps (__m512 __A) +{ + return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_or_si512 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_or_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_or_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_or_epi32 (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_or_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_or_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_or_epi64 (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_xor_si512 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_xor_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_xor_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_xor_epi32 (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_xor_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_xor_epi64 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_xor_epi64 (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rol_epi32 (__m512i __A, const int __B) +{ + return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rol_epi32 (__m512i __W, __mmask16 __U, __m512i __A, const int __B) +{ + return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rol_epi32 (__mmask16 __U, __m512i __A, const int __B) +{ + return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_ror_epi32 (__m512i __A, int __B) +{ + return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_ror_epi32 (__m512i __W, __mmask16 __U, __m512i __A, int __B) +{ + return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_ror_epi32 (__mmask16 __U, __m512i __A, int __B) +{ + return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_rol_epi64 (__m512i __A, const int __B) +{ + return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_rol_epi64 (__m512i __W, __mmask8 __U, __m512i __A, const int __B) +{ + return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_rol_epi64 (__mmask8 __U, __m512i __A, const int __B) +{ + return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_ror_epi64 (__m512i __A, int __B) +{ + return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_ror_epi64 (__m512i __W, __mmask8 __U, __m512i __A, int __B) +{ + return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_ror_epi64 (__mmask8 __U, __m512i __A, int __B) +{ + return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +#else +#define _mm512_rol_epi32(A, B) \ + ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A), \ + (int)(B), \ + (__v16si)_mm512_setzero_si512 (), \ + (__mmask16)(-1))) +#define _mm512_mask_rol_epi32(W, U, A, B) \ + ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A), \ + (int)(B), \ + (__v16si)(__m512i)(W), \ + (__mmask16)(U))) +#define _mm512_maskz_rol_epi32(U, A, B) \ + ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A), \ + (int)(B), \ + (__v16si)_mm512_setzero_si512 (), \ + (__mmask16)(U))) +#define _mm512_ror_epi32(A, B) \ + ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A), \ + (int)(B), \ + (__v16si)_mm512_setzero_si512 (), \ + (__mmask16)(-1))) +#define _mm512_mask_ror_epi32(W, U, A, B) \ + ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A), \ + (int)(B), \ + (__v16si)(__m512i)(W), \ + (__mmask16)(U))) +#define _mm512_maskz_ror_epi32(U, A, B) \ + ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A), \ + (int)(B), \ + (__v16si)_mm512_setzero_si512 (), \ + (__mmask16)(U))) +#define _mm512_rol_epi64(A, B) \ + ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A), \ + (int)(B), \ + (__v8di)_mm512_setzero_si512 (), \ + (__mmask8)(-1))) +#define _mm512_mask_rol_epi64(W, U, A, B) \ + ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A), \ + (int)(B), \ + (__v8di)(__m512i)(W), \ + (__mmask8)(U))) +#define _mm512_maskz_rol_epi64(U, A, B) \ + ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A), \ + (int)(B), \ + (__v8di)_mm512_setzero_si512 (), \ + (__mmask8)(U))) + +#define _mm512_ror_epi64(A, B) \ + ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A), \ + (int)(B), \ + (__v8di)_mm512_setzero_si512 (), \ + (__mmask8)(-1))) +#define _mm512_mask_ror_epi64(W, U, A, B) \ + ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A), \ + (int)(B), \ + (__v8di)(__m512i)(W), \ + (__mmask8)(U))) +#define _mm512_maskz_ror_epi64(U, A, B) \ + ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A), \ + (int)(B), \ + (__v8di)_mm512_setzero_si512 (), \ + (__mmask8)(U))) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_and_si512 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_and_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_and_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_and_epi32 (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_and_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_and_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_and_epi64 (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_pd (), + __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_andnot_si512 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_andnot_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_andnot_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_pd (), + __U); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_test_epi32_mask (__m512i __A, __m512i __B) +{ + return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A, + (__v16si) __B, + (__mmask16) -1); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A, + (__v16si) __B, __U); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_test_epi64_mask (__m512i __A, __m512i __B) +{ + return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, + (__v8di) __B, + (__mmask8) -1); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_unpackhi_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_unpackhi_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_unpacklo_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_unpacklo_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +#ifdef __x86_64__ +#ifdef __OPTIMIZE__ +extern __inline unsigned long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundss_u64 (__m128 __A, const int __R) +{ + return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf) __A, __R); +} + +extern __inline long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundss_si64 (__m128 __A, const int __R) +{ + return (long long) __builtin_ia32_vcvtss2si64 ((__v4sf) __A, __R); +} + +extern __inline long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundss_i64 (__m128 __A, const int __R) +{ + return (long long) __builtin_ia32_vcvtss2si64 ((__v4sf) __A, __R); +} + +extern __inline unsigned long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundss_u64 (__m128 __A, const int __R) +{ + return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf) __A, __R); +} + +extern __inline long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundss_i64 (__m128 __A, const int __R) +{ + return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A, __R); +} + +extern __inline long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundss_si64 (__m128 __A, const int __R) +{ + return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A, __R); +} +#else +#define _mm_cvt_roundss_u64(A, B) \ + ((unsigned long long)__builtin_ia32_vcvtss2usi64(A, B)) + +#define _mm_cvt_roundss_si64(A, B) \ + ((long long)__builtin_ia32_vcvtss2si64(A, B)) + +#define _mm_cvt_roundss_i64(A, B) \ + ((long long)__builtin_ia32_vcvtss2si64(A, B)) + +#define _mm_cvtt_roundss_u64(A, B) \ + ((unsigned long long)__builtin_ia32_vcvttss2usi64(A, B)) + +#define _mm_cvtt_roundss_i64(A, B) \ + ((long long)__builtin_ia32_vcvttss2si64(A, B)) + +#define _mm_cvtt_roundss_si64(A, B) \ + ((long long)__builtin_ia32_vcvttss2si64(A, B)) +#endif +#endif + +#ifdef __OPTIMIZE__ +extern __inline unsigned +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundss_u32 (__m128 __A, const int __R) +{ + return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A, __R); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundss_si32 (__m128 __A, const int __R) +{ + return (int) __builtin_ia32_vcvtss2si32 ((__v4sf) __A, __R); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundss_i32 (__m128 __A, const int __R) +{ + return (int) __builtin_ia32_vcvtss2si32 ((__v4sf) __A, __R); +} + +extern __inline unsigned +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundss_u32 (__m128 __A, const int __R) +{ + return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A, __R); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundss_i32 (__m128 __A, const int __R) +{ + return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A, __R); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundss_si32 (__m128 __A, const int __R) +{ + return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A, __R); +} +#else +#define _mm_cvt_roundss_u32(A, B) \ + ((unsigned)__builtin_ia32_vcvtss2usi32(A, B)) + +#define _mm_cvt_roundss_si32(A, B) \ + ((int)__builtin_ia32_vcvtss2si32(A, B)) + +#define _mm_cvt_roundss_i32(A, B) \ + ((int)__builtin_ia32_vcvtss2si32(A, B)) + +#define _mm_cvtt_roundss_u32(A, B) \ + ((unsigned)__builtin_ia32_vcvttss2usi32(A, B)) + +#define _mm_cvtt_roundss_si32(A, B) \ + ((int)__builtin_ia32_vcvttss2si32(A, B)) + +#define _mm_cvtt_roundss_i32(A, B) \ + ((int)__builtin_ia32_vcvttss2si32(A, B)) +#endif + +#ifdef __x86_64__ +#ifdef __OPTIMIZE__ +extern __inline unsigned long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundsd_u64 (__m128d __A, const int __R) +{ + return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df) __A, __R); +} + +extern __inline long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundsd_si64 (__m128d __A, const int __R) +{ + return (long long) __builtin_ia32_vcvtsd2si64 ((__v2df) __A, __R); +} + +extern __inline long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundsd_i64 (__m128d __A, const int __R) +{ + return (long long) __builtin_ia32_vcvtsd2si64 ((__v2df) __A, __R); +} + +extern __inline unsigned long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundsd_u64 (__m128d __A, const int __R) +{ + return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df) __A, __R); +} + +extern __inline long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundsd_si64 (__m128d __A, const int __R) +{ + return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A, __R); +} + +extern __inline long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundsd_i64 (__m128d __A, const int __R) +{ + return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A, __R); +} +#else +#define _mm_cvt_roundsd_u64(A, B) \ + ((unsigned long long)__builtin_ia32_vcvtsd2usi64(A, B)) + +#define _mm_cvt_roundsd_si64(A, B) \ + ((long long)__builtin_ia32_vcvtsd2si64(A, B)) + +#define _mm_cvt_roundsd_i64(A, B) \ + ((long long)__builtin_ia32_vcvtsd2si64(A, B)) + +#define _mm_cvtt_roundsd_u64(A, B) \ + ((unsigned long long)__builtin_ia32_vcvttsd2usi64(A, B)) + +#define _mm_cvtt_roundsd_si64(A, B) \ + ((long long)__builtin_ia32_vcvttsd2si64(A, B)) + +#define _mm_cvtt_roundsd_i64(A, B) \ + ((long long)__builtin_ia32_vcvttsd2si64(A, B)) +#endif +#endif + +#ifdef __OPTIMIZE__ +extern __inline unsigned +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundsd_u32 (__m128d __A, const int __R) +{ + return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A, __R); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundsd_si32 (__m128d __A, const int __R) +{ + return (int) __builtin_ia32_vcvtsd2si32 ((__v2df) __A, __R); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundsd_i32 (__m128d __A, const int __R) +{ + return (int) __builtin_ia32_vcvtsd2si32 ((__v2df) __A, __R); +} + +extern __inline unsigned +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundsd_u32 (__m128d __A, const int __R) +{ + return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A, __R); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundsd_i32 (__m128d __A, const int __R) +{ + return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A, __R); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtt_roundsd_si32 (__m128d __A, const int __R) +{ + return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A, __R); +} +#else +#define _mm_cvt_roundsd_u32(A, B) \ + ((unsigned)__builtin_ia32_vcvtsd2usi32(A, B)) + +#define _mm_cvt_roundsd_si32(A, B) \ + ((int)__builtin_ia32_vcvtsd2si32(A, B)) + +#define _mm_cvt_roundsd_i32(A, B) \ + ((int)__builtin_ia32_vcvtsd2si32(A, B)) + +#define _mm_cvtt_roundsd_u32(A, B) \ + ((unsigned)__builtin_ia32_vcvttsd2usi32(A, B)) + +#define _mm_cvtt_roundsd_si32(A, B) \ + ((int)__builtin_ia32_vcvttsd2si32(A, B)) + +#define _mm_cvtt_roundsd_i32(A, B) \ + ((int)__builtin_ia32_vcvttsd2si32(A, B)) +#endif + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_movedup_pd (__m512d __A) +{ + return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_unpacklo_pd (__m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_unpackhi_pd (__m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_unpackhi_ps (__m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvt_roundps_pd (__m256 __A, const int __R) +{ + return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvt_roundps_pd (__m512d __W, __mmask8 __U, __m256 __A, + const int __R) +{ + return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvt_roundps_pd (__mmask8 __U, __m256 __A, const int __R) +{ + return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvt_roundph_ps (__m256i __A, const int __R) +{ + return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvt_roundph_ps (__m512 __W, __mmask16 __U, __m256i __A, + const int __R) +{ + return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvt_roundph_ps (__mmask16 __U, __m256i __A, const int __R) +{ + return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvt_roundps_ph (__m512 __A, const int __I) +{ + return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A, + __I, + (__v16hi) + _mm256_setzero_si256 (), + -1); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtps_ph (__m512 __A, const int __I) +{ + return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A, + __I, + (__v16hi) + _mm256_setzero_si256 (), + -1); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvt_roundps_ph (__m256i __U, __mmask16 __W, __m512 __A, + const int __I) +{ + return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A, + __I, + (__v16hi) __U, + (__mmask16) __W); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtps_ph (__m256i __U, __mmask16 __W, __m512 __A, const int __I) +{ + return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A, + __I, + (__v16hi) __U, + (__mmask16) __W); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvt_roundps_ph (__mmask16 __W, __m512 __A, const int __I) +{ + return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A, + __I, + (__v16hi) + _mm256_setzero_si256 (), + (__mmask16) __W); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtps_ph (__mmask16 __W, __m512 __A, const int __I) +{ + return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A, + __I, + (__v16hi) + _mm256_setzero_si256 (), + (__mmask16) __W); +} +#else +#define _mm512_cvt_roundps_pd(A, B) \ + (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)_mm512_setzero_pd(), -1, B) + +#define _mm512_mask_cvt_roundps_pd(W, U, A, B) \ + (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)(W), U, B) + +#define _mm512_maskz_cvt_roundps_pd(U, A, B) \ + (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)_mm512_setzero_pd(), U, B) + +#define _mm512_cvt_roundph_ps(A, B) \ + (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)_mm512_setzero_ps(), -1, B) + +#define _mm512_mask_cvt_roundph_ps(W, U, A, B) \ + (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)(W), U, B) + +#define _mm512_maskz_cvt_roundph_ps(U, A, B) \ + (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)_mm512_setzero_ps(), U, B) + +#define _mm512_cvt_roundps_ph(A, I) \ + ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ + (__v16hi)_mm256_setzero_si256 (), -1)) +#define _mm512_cvtps_ph(A, I) \ + ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ + (__v16hi)_mm256_setzero_si256 (), -1)) +#define _mm512_mask_cvt_roundps_ph(U, W, A, I) \ + ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ + (__v16hi)(__m256i)(U), (__mmask16) (W))) +#define _mm512_mask_cvtps_ph(U, W, A, I) \ + ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ + (__v16hi)(__m256i)(U), (__mmask16) (W))) +#define _mm512_maskz_cvt_roundps_ph(W, A, I) \ + ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ + (__v16hi)_mm256_setzero_si256 (), (__mmask16) (W))) +#define _mm512_maskz_cvtps_ph(W, A, I) \ + ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ + (__v16hi)_mm256_setzero_si256 (), (__mmask16) (W))) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m256 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvt_roundpd_ps (__m512d __A, const int __R) +{ + return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A, + (__v8sf) + _mm256_setzero_ps (), + (__mmask8) -1, __R); +} + +extern __inline __m256 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvt_roundpd_ps (__m256 __W, __mmask8 __U, __m512d __A, + const int __R) +{ + return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A, + (__v8sf) __W, + (__mmask8) __U, __R); +} + +extern __inline __m256 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvt_roundpd_ps (__mmask8 __U, __m512d __A, const int __R) +{ + return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A, + (__v8sf) + _mm256_setzero_ps (), + (__mmask8) __U, __R); +} + +#else +#define _mm512_cvt_roundpd_ps(A, B) \ + (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_setzero_ps(), -1, B) + +#define _mm512_mask_cvt_roundpd_ps(W, U, A, B) \ + (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)(W), U, B) + +#define _mm512_maskz_cvt_roundpd_ps(U, A, B) \ + (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_setzero_ps(), U, B) +#endif + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_stream_si512 (__m512i * __P, __m512i __A) +{ + __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_stream_ps (float *__P, __m512 __A) +{ + __builtin_ia32_movntps512 (__P, (__v16sf) __A); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_stream_pd (double *__P, __m512d __A) +{ + __builtin_ia32_movntpd512 (__P, (__v8df) __A); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_getexp_round_ps (__m512 __A, const int __R) +{ + return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_getexp_round_ps (__m512 __W, __mmask16 __U, __m512 __A, + const int __R) +{ + return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_getexp_round_ps (__mmask16 __U, __m512 __A, const int __R) +{ + return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_getexp_round_pd (__m512d __A, const int __R) +{ + return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_getexp_round_pd (__m512d __W, __mmask8 __U, __m512d __A, + const int __R) +{ + return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_getexp_round_pd (__mmask8 __U, __m512d __A, const int __R) +{ + return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, __R); +} + +/* Constants for mantissa extraction */ +typedef enum +{ + _MM_MANT_NORM_1_2, /* interval [1, 2) */ + _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */ + _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */ + _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */ +} _MM_MANTISSA_NORM_ENUM; + +typedef enum +{ + _MM_MANT_SIGN_src, /* sign = sign(SRC) */ + _MM_MANT_SIGN_zero, /* sign = 0 */ + _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */ +} _MM_MANTISSA_SIGN_ENUM; + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_getmant_round_pd (__m512d __A, _MM_MANTISSA_NORM_ENUM __B, + _MM_MANTISSA_SIGN_ENUM __C, const int __R) +{ + return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A, + (__C << 2) | __B, + _mm512_setzero_pd (), + (__mmask8) -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_getmant_round_pd (__m512d __W, __mmask8 __U, __m512d __A, + _MM_MANTISSA_NORM_ENUM __B, + _MM_MANTISSA_SIGN_ENUM __C, const int __R) +{ + return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A, + (__C << 2) | __B, + (__v8df) __W, __U, + __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_getmant_round_pd (__mmask8 __U, __m512d __A, + _MM_MANTISSA_NORM_ENUM __B, + _MM_MANTISSA_SIGN_ENUM __C, const int __R) +{ + return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A, + (__C << 2) | __B, + (__v8df) + _mm512_setzero_pd (), + __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_getmant_round_ps (__m512 __A, _MM_MANTISSA_NORM_ENUM __B, + _MM_MANTISSA_SIGN_ENUM __C, const int __R) +{ + return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A, + (__C << 2) | __B, + _mm512_setzero_ps (), + (__mmask16) -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_getmant_round_ps (__m512 __W, __mmask16 __U, __m512 __A, + _MM_MANTISSA_NORM_ENUM __B, + _MM_MANTISSA_SIGN_ENUM __C, const int __R) +{ + return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A, + (__C << 2) | __B, + (__v16sf) __W, __U, + __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_getmant_round_ps (__mmask16 __U, __m512 __A, + _MM_MANTISSA_NORM_ENUM __B, + _MM_MANTISSA_SIGN_ENUM __C, const int __R) +{ + return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A, + (__C << 2) | __B, + (__v16sf) + _mm512_setzero_ps (), + __U, __R); +} + +#else +#define _mm512_getmant_round_pd(X, B, C, R) \ + ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \ + (int)(((C)<<2) | (B)), \ + (__v8df)(__m512d)_mm512_setzero_pd(), \ + (__mmask8)-1,\ + (R))) + +#define _mm512_mask_getmant_round_pd(W, U, X, B, C, R) \ + ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \ + (int)(((C)<<2) | (B)), \ + (__v8df)(__m512d)(W), \ + (__mmask8)(U),\ + (R))) + +#define _mm512_maskz_getmant_round_pd(U, X, B, C, R) \ + ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \ + (int)(((C)<<2) | (B)), \ + (__v8df)(__m512d)_mm512_setzero_pd(), \ + (__mmask8)(U),\ + (R))) +#define _mm512_getmant_round_ps(X, B, C, R) \ + ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \ + (int)(((C)<<2) | (B)), \ + (__v16sf)(__m512)_mm512_setzero_ps(), \ + (__mmask16)-1,\ + (R))) + +#define _mm512_mask_getmant_round_ps(W, U, X, B, C, R) \ + ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \ + (int)(((C)<<2) | (B)), \ + (__v16sf)(__m512)(W), \ + (__mmask16)(U),\ + (R))) + +#define _mm512_maskz_getmant_round_ps(U, X, B, C, R) \ + ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \ + (int)(((C)<<2) | (B)), \ + (__v16sf)(__m512)_mm512_setzero_ps(), \ + (__mmask16)(U),\ + (R))) +#define _mm512_getexp_round_ps(A, R) \ + ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ + (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, R)) + +#define _mm512_mask_getexp_round_ps(W, U, A, R) \ + ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ + (__v16sf)(__m512)(W), (__mmask16)(U), R)) + +#define _mm512_maskz_getexp_round_ps(U, A, R) \ + ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ + (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), R)) + +#define _mm512_getexp_round_pd(A, R) \ + ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \ + (__v8df)_mm512_setzero_pd(), (__mmask8)-1, R)) + +#define _mm512_mask_getexp_round_pd(W, U, A, R) \ + ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \ + (__v8df)(__m512d)(W), (__mmask8)(U), R)) + +#define _mm512_maskz_getexp_round_pd(U, A, R) \ + ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \ + (__v8df)_mm512_setzero_pd(), (__mmask8)(U), R)) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_roundscale_round_ps (__m512 __A, const int __imm, const int __R) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, __imm, + (__v16sf) __A, -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_roundscale_round_ps (__m512 __A, __mmask16 __B, __m512 __C, + const int __imm, const int __R) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __C, __imm, + (__v16sf) __A, + (__mmask16) __B, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_roundscale_round_ps (__mmask16 __A, __m512 __B, + const int __imm, const int __R) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __B, + __imm, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __A, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_roundscale_round_pd (__m512d __A, const int __imm, const int __R) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, __imm, + (__v8df) __A, -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_roundscale_round_pd (__m512d __A, __mmask8 __B, + __m512d __C, const int __imm, const int __R) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __C, __imm, + (__v8df) __A, + (__mmask8) __B, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_roundscale_round_pd (__mmask8 __A, __m512d __B, + const int __imm, const int __R) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __B, + __imm, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __A, __R); +} +#else +#define _mm512_roundscale_round_ps(A, B, R) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\ + (__v16sf)(__m512)(A), (__mmask16)(-1), R)) +#define _mm512_mask_roundscale_round_ps(A, B, C, D, R) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C), \ + (int)(D), \ + (__v16sf)(__m512)(A), \ + (__mmask16)(B), R)) +#define _mm512_maskz_roundscale_round_ps(A, B, C, R) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(B), \ + (int)(C), \ + (__v16sf)_mm512_setzero_ps(),\ + (__mmask16)(A), R)) +#define _mm512_roundscale_round_pd(A, B, R) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), (int)(B),\ + (__v8df)(__m512d)(A), (__mmask8)(-1), R)) +#define _mm512_mask_roundscale_round_pd(A, B, C, D, R) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C), \ + (int)(D), \ + (__v8df)(__m512d)(A), \ + (__mmask8)(B), R)) +#define _mm512_maskz_roundscale_round_pd(A, B, C, R) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(B), \ + (int)(C), \ + (__v8df)_mm512_setzero_pd(),\ + (__mmask8)(A), R)) +#endif + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_floor_ps (__m512 __A) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_FLOOR, + (__v16sf) __A, -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_floor_pd (__m512d __A) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_FLOOR, + (__v8df) __A, -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_ceil_ps (__m512 __A) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_CEIL, + (__v16sf) __A, -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_ceil_pd (__m512d __A) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_CEIL, + (__v8df) __A, -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_FLOOR, + (__v16sf) __W, __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_FLOOR, + (__v8df) __W, __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_CEIL, + (__v16sf) __W, __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_CEIL, + (__v8df) __W, __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_floor_ps (__mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_FLOOR, + (__v16sf) + _mm512_setzero_ps (), + __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_floor_pd (__mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_FLOOR, + (__v8df) + _mm512_setzero_pd (), + __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_ceil_ps (__mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_CEIL, + (__v16sf) + _mm512_setzero_ps (), + __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_ceil_pd (__mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_CEIL, + (__v8df) + _mm512_setzero_pd (), + __U, + _MM_FROUND_CUR_DIRECTION); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_floor_round_ps (__m512 __A, const int __R) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_FLOOR, + (__v16sf) __A, -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_floor_round_pd (__m512d __A, const int __R) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_FLOOR, + (__v8df) __A, -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_ceil_round_ps (__m512 __A, const int __R) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_CEIL, + (__v16sf) __A, -1, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_ceil_round_pd (__m512d __A, const int __R) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_CEIL, + (__v8df) __A, -1, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_floor_round_ps (__m512 __W, __mmask16 __U, __m512 __A, + const int __R) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_FLOOR, + (__v16sf) __W, __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_floor_round_pd (__m512d __W, __mmask8 __U, __m512d __A, + const int __R) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_FLOOR, + (__v8df) __W, __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_ceil_round_ps (__m512 __W, __mmask16 __U, __m512 __A, const int __R) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_CEIL, + (__v16sf) __W, __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_ceil_round_pd (__m512d __W, __mmask8 __U, __m512d __A, + const int __R) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_CEIL, + (__v8df) __W, __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_floor_round_ps (__mmask16 __U, __m512 __A, const int __R) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_FLOOR, + (__v16sf) + _mm512_setzero_ps (), + __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_floor_round_pd (__mmask8 __U, __m512d __A, const int __R) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_FLOOR, + (__v8df) + _mm512_setzero_pd (), + __U, __R); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_ceil_round_ps (__mmask16 __U, __m512 __A, const int __R) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, + _MM_FROUND_CEIL, + (__v16sf) + _mm512_setzero_ps (), + __U, __R); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_ceil_round_pd (__mmask8 __U, __m512d __A, const int __R) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, + _MM_FROUND_CEIL, + (__v8df) + _mm512_setzero_pd (), + __U, __R); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_alignr_epi32 (__m512i __A, __m512i __B, const int __imm) +{ + return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A, + (__v16si) __B, __imm, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_alignr_epi32 (__m512i __W, __mmask16 __U, __m512i __A, + __m512i __B, const int __imm) +{ + return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A, + (__v16si) __B, __imm, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_alignr_epi32 (__mmask16 __U, __m512i __A, __m512i __B, + const int __imm) +{ + return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A, + (__v16si) __B, __imm, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_alignr_epi64 (__m512i __A, __m512i __B, const int __imm) +{ + return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A, + (__v8di) __B, __imm, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_alignr_epi64 (__m512i __W, __mmask8 __U, __m512i __A, + __m512i __B, const int __imm) +{ + return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A, + (__v8di) __B, __imm, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_alignr_epi64 (__mmask8 __U, __m512i __A, __m512i __B, + const int __imm) +{ + return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A, + (__v8di) __B, __imm, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} +#else +#define _mm512_floor_round_ps(A, R) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), \ + _MM_FROUND_FLOOR, \ + (__v16sf)(__m512)(A), \ + (__mmask16)(-1), R)) +#define _mm512_mask_floor_round_ps(A, B, C, R) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C), \ + _MM_FROUND_FLOOR, \ + (__v16sf)(__m512)(A), \ + (__mmask16)(B), R)) +#define _mm512_maskz_floor_round_ps(A, B, R) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(B), \ + _MM_FROUND_FLOOR, \ + (__v16sf)_mm512_setzero_ps(),\ + (__mmask16)(A), R)) +#define _mm512_floor_round_pd(A, R) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), \ + _MM_FROUND_FLOOR, \ + (__v8df)(__m512d)(A), \ + (__mmask8)(-1), R)) +#define _mm512_mask_floor_round_pd(A, B, C, R) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C), \ + _MM_FROUND_FLOOR, \ + (__v8df)(__m512d)(A), \ + (__mmask8)(B), R)) +#define _mm512_maskz_floor_round_pd(A, B, R) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(B), \ + _MM_FROUND_FLOOR, \ + (__v8df)_mm512_setzero_pd(),\ + (__mmask8)(A), R)) +#define _mm512_ceil_round_ps(A, R) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), \ + _MM_FROUND_CEIL, \ + (__v16sf)(__m512)(A), \ + (__mmask16)(-1), R)) +#define _mm512_mask_ceil_round_ps(A, B, C, R) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C), \ + _MM_FROUND_CEIL, \ + (__v16sf)(__m512)(A), \ + (__mmask16)(B), R)) +#define _mm512_maskz_ceil_round_ps(A, B, R) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(B), \ + _MM_FROUND_CEIL, \ + (__v16sf)_mm512_setzero_ps(),\ + (__mmask16)(A), R)) +#define _mm512_ceil_round_pd(A, R) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), \ + _MM_FROUND_CEIL, \ + (__v8df)(__m512d)(A), \ + (__mmask8)(-1), R)) +#define _mm512_mask_ceil_round_pd(A, B, C, R) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C), \ + _MM_FROUND_CEIL, \ + (__v8df)(__m512d)(A), \ + (__mmask8)(B), R)) +#define _mm512_maskz_ceil_round_pd(A, B, R) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(B), \ + _MM_FROUND_CEIL, \ + (__v8df)_mm512_setzero_pd(),\ + (__mmask8)(A), R)) + +#define _mm512_alignr_epi32(X, Y, C) \ + ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(C), (__v16si)(__m512i)(X), \ + (__mmask16)-1)) + +#define _mm512_mask_alignr_epi32(W, U, X, Y, C) \ + ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(C), (__v16si)(__m512i)(W), \ + (__mmask16)(U))) + +#define _mm512_maskz_alignr_epi32(U, X, Y, C) \ + ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(C), (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__mmask16)(U))) + +#define _mm512_alignr_epi64(X, Y, C) \ + ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(C), (__v8di)(__m512i)(X), (__mmask8)-1)) + +#define _mm512_mask_alignr_epi64(W, U, X, Y, C) \ + ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(C), (__v8di)(__m512i)(W), (__mmask8)(U))) + +#define _mm512_maskz_alignr_epi64(U, X, Y, C) \ + ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(C), (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__mmask8)(U))) +#endif + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmpeq_epi32_mask (__m512i __A, __m512i __B) +{ + return (__mmask16) __builtin_ia32_pcmpeqd512_mask ((__v16si) __A, + (__v16si) __B, + (__mmask16) -1); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmpeq_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__mmask16) __builtin_ia32_pcmpeqd512_mask ((__v16si) __A, + (__v16si) __B, __U); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmpeq_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__mmask8) __builtin_ia32_pcmpeqq512_mask ((__v8di) __A, + (__v8di) __B, __U); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmpeq_epi64_mask (__m512i __A, __m512i __B) +{ + return (__mmask8) __builtin_ia32_pcmpeqq512_mask ((__v8di) __A, + (__v8di) __B, + (__mmask8) -1); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmpgt_epi32_mask (__m512i __A, __m512i __B) +{ + return (__mmask16) __builtin_ia32_pcmpgtd512_mask ((__v16si) __A, + (__v16si) __B, + (__mmask16) -1); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmpgt_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) +{ + return (__mmask16) __builtin_ia32_pcmpgtd512_mask ((__v16si) __A, + (__v16si) __B, __U); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmpgt_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) +{ + return (__mmask8) __builtin_ia32_pcmpgtq512_mask ((__v8di) __A, + (__v8di) __B, __U); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmpgt_epi64_mask (__m512i __A, __m512i __B) +{ + return (__mmask8) __builtin_ia32_pcmpgtq512_mask ((__v8di) __A, + (__v8di) __B, + (__mmask8) -1); +} + +#define _MM_CMPINT_EQ 0x0 +#define _MM_CMPINT_LT 0x1 +#define _MM_CMPINT_LE 0x2 +#define _MM_CMPINT_UNUSED 0x3 +#define _MM_CMPINT_NE 0x4 +#define _MM_CMPINT_NLT 0x5 +#define _MM_CMPINT_GE 0x5 +#define _MM_CMPINT_NLE 0x6 +#define _MM_CMPINT_GT 0x6 + +#ifdef __OPTIMIZE__ +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmp_epi64_mask (__m512i __X, __m512i __Y, const int __P) +{ + return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X, + (__v8di) __Y, __P, + (__mmask8) -1); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmp_epi32_mask (__m512i __X, __m512i __Y, const int __P) +{ + return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X, + (__v16si) __Y, __P, + (__mmask16) -1); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmp_epu64_mask (__m512i __X, __m512i __Y, const int __P) +{ + return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X, + (__v8di) __Y, __P, + (__mmask8) -1); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmp_epu32_mask (__m512i __X, __m512i __Y, const int __P) +{ + return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X, + (__v16si) __Y, __P, + (__mmask16) -1); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmp_round_pd_mask (__m512d __X, __m512d __Y, const int __P, + const int __R) +{ + return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X, + (__v8df) __Y, __P, + (__mmask8) -1, __R); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmp_round_ps_mask (__m512 __X, __m512 __Y, const int __P, const int __R) +{ + return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X, + (__v16sf) __Y, __P, + (__mmask16) -1, __R); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmp_epi64_mask (__mmask8 __U, __m512i __X, __m512i __Y, + const int __P) +{ + return (__mmask8) __builtin_ia32_cmpq512_mask ((__v8di) __X, + (__v8di) __Y, __P, + (__mmask8) __U); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmp_epi32_mask (__mmask16 __U, __m512i __X, __m512i __Y, + const int __P) +{ + return (__mmask16) __builtin_ia32_cmpd512_mask ((__v16si) __X, + (__v16si) __Y, __P, + (__mmask16) __U); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmp_epu64_mask (__mmask8 __U, __m512i __X, __m512i __Y, + const int __P) +{ + return (__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di) __X, + (__v8di) __Y, __P, + (__mmask8) __U); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmp_epu32_mask (__mmask16 __U, __m512i __X, __m512i __Y, + const int __P) +{ + return (__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si) __X, + (__v16si) __Y, __P, + (__mmask16) __U); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmp_round_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y, + const int __P, const int __R) +{ + return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X, + (__v8df) __Y, __P, + (__mmask8) __U, __R); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmp_round_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y, + const int __P, const int __R) +{ + return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X, + (__v16sf) __Y, __P, + (__mmask16) __U, __R); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cmp_round_sd_mask (__m128d __X, __m128d __Y, const int __P, const int __R) +{ + return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X, + (__v2df) __Y, __P, + (__mmask8) -1, __R); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_mask_cmp_round_sd_mask (__mmask8 __M, __m128d __X, __m128d __Y, + const int __P, const int __R) +{ + return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X, + (__v2df) __Y, __P, + (__mmask8) __M, __R); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cmp_round_ss_mask (__m128 __X, __m128 __Y, const int __P, const int __R) +{ + return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X, + (__v4sf) __Y, __P, + (__mmask8) -1, __R); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_mask_cmp_round_ss_mask (__mmask8 __M, __m128 __X, __m128 __Y, + const int __P, const int __R) +{ + return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X, + (__v4sf) __Y, __P, + (__mmask8) __M, __R); +} + +#else +#define _mm512_cmp_epi64_mask(X, Y, P) \ + ((__mmask8) __builtin_ia32_cmpq512_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(P),\ + (__mmask8)-1)) + +#define _mm512_cmp_epi32_mask(X, Y, P) \ + ((__mmask8) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(P),\ + (__mmask16)-1)) + +#define _mm512_cmp_epu64_mask(X, Y, P) \ + ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(P),\ + (__mmask8)-1)) + +#define _mm512_cmp_epu32_mask(X, Y, P) \ + ((__mmask8) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(P),\ + (__mmask16)-1)) + +#define _mm512_cmp_round_pd_mask(X, Y, P, R) \ + ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (int)(P),\ + (__mmask8)-1, R)) + +#define _mm512_cmp_round_ps_mask(X, Y, P, R) \ + ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (int)(P),\ + (__mmask16)-1, R)) + +#define _mm512_mask_cmp_epi64_mask(M, X, Y, P) \ + ((__mmask8) __builtin_ia32_cmpq512_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(P),\ + (__mmask8)M)) + +#define _mm512_mask_cmp_epi32_mask(M, X, Y, P) \ + ((__mmask8) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(P),\ + (__mmask16)M)) + +#define _mm512_mask_cmp_epu64_mask(M, X, Y, P) \ + ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(P),\ + (__mmask8)M)) + +#define _mm512_mask_cmp_epu32_mask(M, X, Y, P) \ + ((__mmask8) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(P),\ + (__mmask16)M)) + +#define _mm512_mask_cmp_round_pd_mask(M, X, Y, P, R) \ + ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (int)(P),\ + (__mmask8)M, R)) + +#define _mm512_mask_cmp_round_ps_mask(M, X, Y, P, R) \ + ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (int)(P),\ + (__mmask16)M, R)) + +#define _mm_cmp_round_sd_mask(X, Y, P, R) \ + ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), (int)(P),\ + (__mmask8)-1, R)) + +#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) \ + ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), (int)(P),\ + (M), R)) + +#define _mm_cmp_round_ss_mask(X, Y, P, R) \ + ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), (int)(P), \ + (__mmask8)-1, R)) + +#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) \ + ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), (int)(P), \ + (M), R)) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i32gather_ps (__m512i __index, float const *__addr, int __scale) +{ + __m512 v1_old = _mm512_setzero_ps (); + __mmask16 mask = 0xFFFF; + + return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) v1_old, + __addr, + (__v16si) __index, + mask, __scale); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i32gather_ps (__m512 v1_old, __mmask16 __mask, + __m512i __index, float const *__addr, int __scale) +{ + return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) v1_old, + __addr, + (__v16si) __index, + __mask, __scale); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i32gather_pd (__m256i __index, double const *__addr, int __scale) +{ + __m512d v1_old = _mm512_setzero_pd (); + __mmask8 mask = 0xFF; + + return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) v1_old, + __addr, + (__v8si) __index, mask, + __scale); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i32gather_pd (__m512d __v1_old, __mmask8 __mask, + __m256i __index, double const *__addr, int __scale) +{ + return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) __v1_old, + __addr, + (__v8si) __index, + __mask, __scale); +} + +extern __inline __m256 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i64gather_ps (__m512i __index, float const *__addr, int __scale) +{ + __m256 v1_old = _mm256_setzero_ps (); + __mmask8 mask = 0xFF; + + return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) v1_old, + __addr, + (__v8di) __index, mask, + __scale); +} + +extern __inline __m256 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i64gather_ps (__m256 __v1_old, __mmask8 __mask, + __m512i __index, float const *__addr, int __scale) +{ + return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old, + __addr, + (__v8di) __index, + __mask, __scale); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i64gather_pd (__m512i __index, double const *__addr, int __scale) +{ + __m512d v1_old = _mm512_setzero_pd (); + __mmask8 mask = 0xFF; + + return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) v1_old, + __addr, + (__v8di) __index, mask, + __scale); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i64gather_pd (__m512d __v1_old, __mmask8 __mask, + __m512i __index, double const *__addr, int __scale) +{ + return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old, + __addr, + (__v8di) __index, + __mask, __scale); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i32gather_epi32 (__m512i __index, int const *__addr, int __scale) +{ + __m512i v1_old = _mm512_setzero_si512 (); + __mmask16 mask = 0xFFFF; + + return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) v1_old, + __addr, + (__v16si) __index, + mask, __scale); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i32gather_epi32 (__m512i __v1_old, __mmask16 __mask, + __m512i __index, int const *__addr, int __scale) +{ + return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) __v1_old, + __addr, + (__v16si) __index, + __mask, __scale); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i32gather_epi64 (__m256i __index, long long const *__addr, int __scale) +{ + __m512i v1_old = _mm512_setzero_si512 (); + __mmask8 mask = 0xFF; + + return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) v1_old, + __addr, + (__v8si) __index, mask, + __scale); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i32gather_epi64 (__m512i __v1_old, __mmask8 __mask, + __m256i __index, long long const *__addr, + int __scale) +{ + return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) __v1_old, + __addr, + (__v8si) __index, + __mask, __scale); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i64gather_epi32 (__m512i __index, int const *__addr, int __scale) +{ + __m256i v1_old = _mm256_setzero_si256 (); + __mmask8 mask = 0xFF; + + return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) v1_old, + __addr, + (__v8di) __index, + mask, __scale); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i64gather_epi32 (__m256i __v1_old, __mmask8 __mask, + __m512i __index, int const *__addr, int __scale) +{ + return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old, + __addr, + (__v8di) __index, + __mask, __scale); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i64gather_epi64 (__m512i __index, long long const *__addr, int __scale) +{ + __m512i v1_old = _mm512_setzero_si512 (); + __mmask8 mask = 0xFF; + + return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) v1_old, + __addr, + (__v8di) __index, mask, + __scale); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i64gather_epi64 (__m512i __v1_old, __mmask8 __mask, + __m512i __index, long long const *__addr, + int __scale) +{ + return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) __v1_old, + __addr, + (__v8di) __index, + __mask, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i32scatter_ps (float *__addr, __m512i __index, __m512 __v1, int __scale) +{ + __builtin_ia32_scattersiv16sf (__addr, (__mmask16) 0xFFFF, + (__v16si) __index, (__v16sf) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i32scatter_ps (float *__addr, __mmask16 __mask, + __m512i __index, __m512 __v1, int __scale) +{ + __builtin_ia32_scattersiv16sf (__addr, __mask, (__v16si) __index, + (__v16sf) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i32scatter_pd (double *__addr, __m256i __index, __m512d __v1, + int __scale) +{ + __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF, + (__v8si) __index, (__v8df) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i32scatter_pd (double *__addr, __mmask8 __mask, + __m256i __index, __m512d __v1, int __scale) +{ + __builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index, + (__v8df) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i64scatter_ps (float *__addr, __m512i __index, __m256 __v1, int __scale) +{ + __builtin_ia32_scatterdiv16sf (__addr, (__mmask8) 0xFF, + (__v8di) __index, (__v8sf) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i64scatter_ps (float *__addr, __mmask8 __mask, + __m512i __index, __m256 __v1, int __scale) +{ + __builtin_ia32_scatterdiv16sf (__addr, __mask, (__v8di) __index, + (__v8sf) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i64scatter_pd (double *__addr, __m512i __index, __m512d __v1, + int __scale) +{ + __builtin_ia32_scatterdiv8df (__addr, (__mmask8) 0xFF, + (__v8di) __index, (__v8df) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i64scatter_pd (double *__addr, __mmask8 __mask, + __m512i __index, __m512d __v1, int __scale) +{ + __builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index, + (__v8df) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i32scatter_epi32 (int *__addr, __m512i __index, + __m512i __v1, int __scale) +{ + __builtin_ia32_scattersiv16si (__addr, (__mmask16) 0xFFFF, + (__v16si) __index, (__v16si) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i32scatter_epi32 (int *__addr, __mmask16 __mask, + __m512i __index, __m512i __v1, int __scale) +{ + __builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index, + (__v16si) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i32scatter_epi64 (long long *__addr, __m256i __index, + __m512i __v1, int __scale) +{ + __builtin_ia32_scattersiv8di (__addr, (__mmask8) 0xFF, + (__v8si) __index, (__v8di) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i32scatter_epi64 (long long *__addr, __mmask8 __mask, + __m256i __index, __m512i __v1, int __scale) +{ + __builtin_ia32_scattersiv8di (__addr, __mask, (__v8si) __index, + (__v8di) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i64scatter_epi32 (int *__addr, __m512i __index, + __m256i __v1, int __scale) +{ + __builtin_ia32_scatterdiv16si (__addr, (__mmask8) 0xFF, + (__v8di) __index, (__v8si) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i64scatter_epi32 (int *__addr, __mmask8 __mask, + __m512i __index, __m256i __v1, int __scale) +{ + __builtin_ia32_scatterdiv16si (__addr, __mask, (__v8di) __index, + (__v8si) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_i64scatter_epi64 (long long *__addr, __m512i __index, + __m512i __v1, int __scale) +{ + __builtin_ia32_scatterdiv8di (__addr, (__mmask8) 0xFF, + (__v8di) __index, (__v8di) __v1, __scale); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_i64scatter_epi64 (long long *__addr, __mmask8 __mask, + __m512i __index, __m512i __v1, int __scale) +{ + __builtin_ia32_scatterdiv8di (__addr, __mask, (__v8di) __index, + (__v8di) __v1, __scale); +} +#else +#define _mm512_i32gather_ps(INDEX, ADDR, SCALE) \ + (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)_mm512_setzero_ps(), \ + (float const *)ADDR, \ + (__v16si)(__m512i)INDEX, \ + (__mmask16)0xFFFF, (int)SCALE) + +#define _mm512_mask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \ + (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)(__m512)V1OLD, \ + (float const *)ADDR, \ + (__v16si)(__m512i)INDEX, \ + (__mmask16)MASK, (int)SCALE) + +#define _mm512_i32gather_pd(INDEX, ADDR, SCALE) \ + (__m512d) __builtin_ia32_gathersiv8df ((__v8df)_mm512_setzero_pd(), \ + (double const *)ADDR, \ + (__v8si)(__m256i)INDEX, \ + (__mmask8)0xFF, (int)SCALE) + +#define _mm512_mask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \ + (__m512d) __builtin_ia32_gathersiv8df ((__v8df)(__m512d)V1OLD, \ + (double const *)ADDR, \ + (__v8si)(__m256i)INDEX, \ + (__mmask8)MASK, (int)SCALE) + +#define _mm512_i64gather_ps(INDEX, ADDR, SCALE) \ + (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)_mm256_setzero_ps(), \ + (float const *)ADDR, \ + (__v8di)(__m512i)INDEX, \ + (__mmask8)0xFF, (int)SCALE) + +#define _mm512_mask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \ + (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)(__m256)V1OLD, \ + (float const *)ADDR, \ + (__v8di)(__m512i)INDEX, \ + (__mmask8)MASK, (int)SCALE) + +#define _mm512_i64gather_pd(INDEX, ADDR, SCALE) \ + (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)_mm512_setzero_pd(), \ + (double const *)ADDR, \ + (__v8di)(__m512i)INDEX, \ + (__mmask8)0xFF, (int)SCALE) + +#define _mm512_mask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \ + (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)(__m512d)V1OLD, \ + (double const *)ADDR, \ + (__v8di)(__m512i)INDEX, \ + (__mmask8)MASK, (int)SCALE) + +#define _mm512_i32gather_epi32(INDEX, ADDR, SCALE) \ + (__m512i) __builtin_ia32_gathersiv16si ((__v16si)_mm512_setzero_si512 (), \ + (int const *)ADDR, \ + (__v16si)(__m512i)INDEX, \ + (__mmask16)0xFFFF, (int)SCALE) + +#define _mm512_mask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \ + (__m512i) __builtin_ia32_gathersiv16si ((__v16si)(__m512i)V1OLD, \ + (int const *)ADDR, \ + (__v16si)(__m512i)INDEX, \ + (__mmask16)MASK, (int)SCALE) + +#define _mm512_i32gather_epi64(INDEX, ADDR, SCALE) \ + (__m512i) __builtin_ia32_gathersiv8di ((__v8di)_mm512_setzero_si512 (), \ + (long long const *)ADDR, \ + (__v8si)(__m256i)INDEX, \ + (__mmask8)0xFF, (int)SCALE) + +#define _mm512_mask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \ + (__m512i) __builtin_ia32_gathersiv8di ((__v8di)(__m512i)V1OLD, \ + (long long const *)ADDR, \ + (__v8si)(__m256i)INDEX, \ + (__mmask8)MASK, (int)SCALE) + +#define _mm512_i64gather_epi32(INDEX, ADDR, SCALE) \ + (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)_mm256_setzero_si256(), \ + (int const *)ADDR, \ + (__v8di)(__m512i)INDEX, \ + (__mmask8)0xFF, (int)SCALE) + +#define _mm512_mask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \ + (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)(__m256i)V1OLD, \ + (int const *)ADDR, \ + (__v8di)(__m512i)INDEX, \ + (__mmask8)MASK, (int)SCALE) + +#define _mm512_i64gather_epi64(INDEX, ADDR, SCALE) \ + (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)_mm512_setzero_si512 (), \ + (long long const *)ADDR, \ + (__v8di)(__m512i)INDEX, \ + (__mmask8)0xFF, (int)SCALE) + +#define _mm512_mask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \ + (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)(__m512i)V1OLD, \ + (long long const *)ADDR, \ + (__v8di)(__m512i)INDEX, \ + (__mmask8)MASK, (int)SCALE) + +#define _mm512_i32scatter_ps(ADDR, INDEX, V1, SCALE) \ + __builtin_ia32_scattersiv16sf ((float *)ADDR, (__mmask16)0xFFFF, \ + (__v16si)(__m512i)INDEX, \ + (__v16sf)(__m512)V1, (int)SCALE) + +#define _mm512_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \ + __builtin_ia32_scattersiv16sf ((float *)ADDR, (__mmask16)MASK, \ + (__v16si)(__m512i)INDEX, \ + (__v16sf)(__m512)V1, (int)SCALE) + +#define _mm512_i32scatter_pd(ADDR, INDEX, V1, SCALE) \ + __builtin_ia32_scattersiv8df ((double *)ADDR, (__mmask8)0xFF, \ + (__v8si)(__m256i)INDEX, \ + (__v8df)(__m512d)V1, (int)SCALE) + +#define _mm512_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \ + __builtin_ia32_scattersiv8df ((double *)ADDR, (__mmask8)MASK, \ + (__v8si)(__m256i)INDEX, \ + (__v8df)(__m512d)V1, (int)SCALE) + +#define _mm512_i64scatter_ps(ADDR, INDEX, V1, SCALE) \ + __builtin_ia32_scatterdiv16sf ((float *)ADDR, (__mmask8)0xFF, \ + (__v8di)(__m512i)INDEX, \ + (__v8sf)(__m256)V1, (int)SCALE) + +#define _mm512_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \ + __builtin_ia32_scatterdiv16sf ((float *)ADDR, (__mmask16)MASK, \ + (__v8di)(__m512i)INDEX, \ + (__v8sf)(__m256)V1, (int)SCALE) + +#define _mm512_i64scatter_pd(ADDR, INDEX, V1, SCALE) \ + __builtin_ia32_scatterdiv8df ((double *)ADDR, (__mmask8)0xFF, \ + (__v8di)(__m512i)INDEX, \ + (__v8df)(__m512d)V1, (int)SCALE) + +#define _mm512_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \ + __builtin_ia32_scatterdiv8df ((double *)ADDR, (__mmask8)MASK, \ + (__v8di)(__m512i)INDEX, \ + (__v8df)(__m512d)V1, (int)SCALE) + +#define _mm512_i32scatter_epi32(ADDR, INDEX, V1, SCALE) \ + __builtin_ia32_scattersiv16si ((int *)ADDR, (__mmask16)0xFFFF, \ + (__v16si)(__m512i)INDEX, \ + (__v16si)(__m512i)V1, (int)SCALE) + +#define _mm512_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \ + __builtin_ia32_scattersiv16si ((int *)ADDR, (__mmask16)MASK, \ + (__v16si)(__m512i)INDEX, \ + (__v16si)(__m512i)V1, (int)SCALE) + +#define _mm512_i32scatter_epi64(ADDR, INDEX, V1, SCALE) \ + __builtin_ia32_scattersiv8di ((long long *)ADDR, (__mmask8)0xFF, \ + (__v8si)(__m256i)INDEX, \ + (__v8di)(__m512i)V1, (int)SCALE) + +#define _mm512_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \ + __builtin_ia32_scattersiv8di ((long long *)ADDR, (__mmask8)MASK, \ + (__v8si)(__m256i)INDEX, \ + (__v8di)(__m512i)V1, (int)SCALE) + +#define _mm512_i64scatter_epi32(ADDR, INDEX, V1, SCALE) \ + __builtin_ia32_scatterdiv16si ((int *)ADDR, (__mmask8)0xFF, \ + (__v8di)(__m512i)INDEX, \ + (__v8si)(__m256i)V1, (int)SCALE) + +#define _mm512_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \ + __builtin_ia32_scatterdiv16si ((int *)ADDR, (__mmask8)MASK, \ + (__v8di)(__m512i)INDEX, \ + (__v8si)(__m256i)V1, (int)SCALE) + +#define _mm512_i64scatter_epi64(ADDR, INDEX, V1, SCALE) \ + __builtin_ia32_scatterdiv8di ((long long *)ADDR, (__mmask8)0xFF, \ + (__v8di)(__m512i)INDEX, \ + (__v8di)(__m512i)V1, (int)SCALE) + +#define _mm512_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \ + __builtin_ia32_scatterdiv8di ((long long *)ADDR, (__mmask8)MASK, \ + (__v8di)(__m512i)INDEX, \ + (__v8di)(__m512i)V1, (int)SCALE) +#endif + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A) +{ + __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A, + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A) +{ + __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A) +{ + __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A) +{ + __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A, + (__mmask16) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_expanddf512_maskz ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_expandloadu_pd (__m512d __W, __mmask8 __U, void const *__P) +{ + return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *) __P, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_expandloadu_pd (__mmask8 __U, void const *__P) +{ + return (__m512d) __builtin_ia32_expandloaddf512_maskz ((const __v8df *) __P, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_expandsf512_maskz ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_expandloadu_ps (__m512 __W, __mmask16 __U, void const *__P) +{ + return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *) __P, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_expandloadu_ps (__mmask16 __U, void const *__P) +{ + return (__m512) __builtin_ia32_expandloadsf512_maskz ((const __v16sf *) __P, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_expand_epi64 (__mmask8 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_expanddi512_maskz ((__v8di) __A, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_expandloadu_epi64 (__m512i __W, __mmask8 __U, void const *__P) +{ + return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *) __P, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) +{ + return (__m512i) + __builtin_ia32_expandloaddi512_maskz ((const __v8di *) __P, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_expandsi512_maskz ((__v16si) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_expandloadu_epi32 (__m512i __W, __mmask16 __U, void const *__P) +{ + return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *) __P, + (__v16si) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_expandloadu_epi32 (__mmask16 __U, void const *__P) +{ + return (__m512i) __builtin_ia32_expandloadsi512_maskz ((const __v16si *) __P, + (__v16si) + _mm512_setzero_si512 + (), (__mmask16) __U); +} + +/* Mask arithmetic operations */ +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_kand (__mmask16 __A, __mmask16 __B) +{ + return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_kandn (__mmask16 __A, __mmask16 __B) +{ + return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_kor (__mmask16 __A, __mmask16 __B) +{ + return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_kortestz (__mmask16 __A, __mmask16 __B) +{ + return (__mmask16) __builtin_ia32_kortestzhi ((__mmask16) __A, + (__mmask16) __B); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_kortestc (__mmask16 __A, __mmask16 __B) +{ + return (__mmask16) __builtin_ia32_kortestchi ((__mmask16) __A, + (__mmask16) __B); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_kxnor (__mmask16 __A, __mmask16 __B) +{ + return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_kxor (__mmask16 __A, __mmask16 __B) +{ + return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_knot (__mmask16 __A) +{ + return (__mmask16) __builtin_ia32_knothi ((__mmask16) __A); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_kunpackb (__mmask16 __A, __mmask16 __B) +{ + return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_inserti32x4 (__mmask16 __B, __m512i __C, __m128i __D, + const int __imm) +{ + return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __C, + (__v4si) __D, + __imm, + (__v16si) + _mm512_setzero_si512 (), + __B); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_insertf32x4 (__mmask16 __B, __m512 __C, __m128 __D, + const int __imm) +{ + return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __C, + (__v4sf) __D, + __imm, + (__v16sf) + _mm512_setzero_ps (), __B); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_inserti32x4 (__m512i __A, __mmask16 __B, __m512i __C, + __m128i __D, const int __imm) +{ + return (__m512i) __builtin_ia32_inserti32x4_mask ((__v16si) __C, + (__v4si) __D, + __imm, + (__v16si) __A, + __B); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_insertf32x4 (__m512 __A, __mmask16 __B, __m512 __C, + __m128 __D, const int __imm) +{ + return (__m512) __builtin_ia32_insertf32x4_mask ((__v16sf) __C, + (__v4sf) __D, + __imm, + (__v16sf) __A, __B); +} +#else +#define _mm512_maskz_insertf32x4(A, X, Y, C) \ + ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X), \ + (__v4sf)(__m128) (Y), (int) (C), (__v16sf)_mm512_setzero_ps(), \ + (__mmask8)(A))) + +#define _mm512_maskz_inserti32x4(A, X, Y, C) \ + ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X), \ + (__v4si)(__m128i) (Y), (int) (C), (__v16si)_mm512_setzero_si512 (), \ + (__mmask8)(A))) + +#define _mm512_mask_insertf32x4(A, B, X, Y, C) \ + ((__m512) __builtin_ia32_insertf32x4_mask ((__v16sf)(__m512) (X), \ + (__v4sf)(__m128) (Y), (int) (C), (__v16sf)(__m512) (A), \ + (__mmask8)(B))) + +#define _mm512_mask_inserti32x4(A, B, X, Y, C) \ + ((__m512i) __builtin_ia32_inserti32x4_mask ((__v16si)(__m512i) (X), \ + (__v4si)(__m128i) (Y), (int) (C), (__v16si)(__m512i) (A), \ + (__mmask8)(B))) +#endif + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_max_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_min_epi64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_max_epu64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_min_epu64 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + (__mmask8) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) __W, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A, + (__v8di) __B, + (__v8di) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_max_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_min_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_max_epu32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_min_epu32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) + _mm512_setzero_si512 (), + __M); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A, + (__v16si) __B, + (__v16si) __W, __M); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_unpacklo_ps (__m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_blend_pd (__mmask8 __U, __m512d __A, __m512d __W) +{ + return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_blend_ps (__mmask16 __U, __m512 __A, __m512 __W) +{ + return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_blend_epi64 (__mmask8 __U, __m512i __A, __m512i __W) +{ + return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A, + (__v8di) __W, + (__mmask8) __U); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_blend_epi32 (__mmask16 __U, __m512i __A, __m512i __W) +{ + return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A, + (__v16si) __W, + (__mmask16) __U); +} + +#ifdef __OPTIMIZE__ +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_comi_round_ss (__m128 __A, __m128 __B, const int __P, const int __R) +{ + return __builtin_ia32_vcomiss ((__v4sf) __A, (__v4sf) __B, __P, __R); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_comi_round_sd (__m128d __A, __m128d __B, const int __P, const int __R) +{ + return __builtin_ia32_vcomisd ((__v2df) __A, (__v2df) __B, __P, __R); +} +#else +#define _mm_comi_round_ss(A, B, C, D)\ +__builtin_ia32_vcomiss(A, B, C, D) +#define _mm_comi_round_sd(A, B, C, D)\ +__builtin_ia32_vcomisd(A, B, C, D) +#endif + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sqrt_pd (__m512d __A) +{ + return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sqrt_ps (__m512 __A) +{ + return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sqrt_ps (__m512 __W, __mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sqrt_ps (__mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_add_pd (__m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_add_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_add_pd (__mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_add_ps (__m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_add_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_add_ps (__mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sub_pd (__m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sub_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sub_pd (__mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_sub_ps (__m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_sub_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_sub_ps (__mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mul_pd (__m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_mul_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_mul_pd (__mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mul_ps (__m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_mul_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_mul_ps (__mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_div_pd (__m512d __M, __m512d __V) +{ + return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M, + (__v8df) __V, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_div_pd (__m512d __W, __mmask8 __U, __m512d __M, __m512d __V) +{ + return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M, + (__v8df) __V, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_div_pd (__mmask8 __U, __m512d __M, __m512d __V) +{ + return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M, + (__v8df) __V, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_div_ps (__m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_div_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_div_ps (__mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_max_pd (__m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_max_ps (__m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_min_pd (__m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_min_ps (__m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_scalef_pd (__m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B) +{ + return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_scalef_ps (__m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B) +{ + return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmadd_pd (__m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmadd_ps (__m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmsub_pd (__m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) +{ + return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmsub_ps (__m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) +{ + return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmaddsub_pd (__m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmaddsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmaddsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmaddsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmaddsub_ps (__m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmaddsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmaddsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmaddsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmsubadd_pd (__m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmsubadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmsubadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) +{ + return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmsubadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fmsubadd_ps (__m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fmsubadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fmsubadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) +{ + return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fmsubadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fnmadd_pd (__m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fnmadd_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fnmadd_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fnmadd_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fnmadd_ps (__m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fnmadd_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fnmadd_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fnmadd_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fnmsub_pd (__m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fnmsub_pd (__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fnmsub_pd (__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) +{ + return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A, + (__v8df) __B, + (__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fnmsub_pd (__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) +{ + return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A, + (__v8df) __B, + -(__v8df) __C, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fnmsub_ps (__m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fnmsub_ps (__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask3_fnmsub_ps (__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) +{ + return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fnmsub_ps (__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) +{ + return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A, + (__v16sf) __B, + -(__v16sf) __C, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvttpd_epi32 (__m512d __A) +{ + return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A) +{ + return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A, + (__v8si) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A) +{ + return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvttpd_epu32 (__m512d __A) +{ + return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A) +{ + return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A, + (__v8si) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A) +{ + return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtpd_epi32 (__m512d __A) +{ + return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A) +{ + return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A, + (__v8si) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A) +{ + return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtpd_epu32 (__m512d __A) +{ + return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A) +{ + return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A, + (__v8si) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A) +{ + return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvttps_epi32 (__m512 __A) +{ + return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A) +{ + return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A, + (__v16si) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A) +{ + return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvttps_epu32 (__m512 __A) +{ + return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A) +{ + return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A, + (__v16si) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A) +{ + return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtps_epi32 (__m512 __A) +{ + return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A) +{ + return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A, + (__v16si) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A) +{ + return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtps_epu32 (__m512 __A) +{ + return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A) +{ + return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A, + (__v16si) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtps_epu32 (__mmask16 __U, __m512 __A) +{ + return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A, + (__v16si) + _mm512_setzero_si512 (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +#ifdef __x86_64__ +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtu64_ss (__m128 __A, unsigned long long __B) +{ + return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtu64_sd (__m128d __A, unsigned long long __B) +{ + return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B, + _MM_FROUND_CUR_DIRECTION); +} +#endif + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtu32_ss (__m128 __A, unsigned __B) +{ + return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepi32_ps (__m512i __A) +{ + return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A) +{ + return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A) +{ + return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtepu32_ps (__m512i __A) +{ + return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A) +{ + return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A) +{ + return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fixupimm_pd (__m512d __A, __m512d __B, __m512i __C, const int __imm) +{ + return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8di) __C, + __imm, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fixupimm_pd (__m512d __A, __mmask8 __U, __m512d __B, + __m512i __C, const int __imm) +{ + return (__m512d) __builtin_ia32_fixupimmpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8di) __C, + __imm, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fixupimm_pd (__mmask8 __U, __m512d __A, __m512d __B, + __m512i __C, const int __imm) +{ + return (__m512d) __builtin_ia32_fixupimmpd512_maskz ((__v8df) __A, + (__v8df) __B, + (__v8di) __C, + __imm, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_fixupimm_ps (__m512 __A, __m512 __B, __m512i __C, const int __imm) +{ + return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16si) __C, + __imm, + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_fixupimm_ps (__m512 __A, __mmask16 __U, __m512 __B, + __m512i __C, const int __imm) +{ + return (__m512) __builtin_ia32_fixupimmps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16si) __C, + __imm, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_fixupimm_ps (__mmask16 __U, __m512 __A, __m512 __B, + __m512i __C, const int __imm) +{ + return (__m512) __builtin_ia32_fixupimmps512_maskz ((__v16sf) __A, + (__v16sf) __B, + (__v16si) __C, + __imm, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fixupimm_sd (__m128d __A, __m128d __B, __m128i __C, const int __imm) +{ + return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A, + (__v2df) __B, + (__v2di) __C, __imm, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_mask_fixupimm_sd (__m128d __A, __mmask8 __U, __m128d __B, + __m128i __C, const int __imm) +{ + return (__m128d) __builtin_ia32_fixupimmsd_mask ((__v2df) __A, + (__v2df) __B, + (__v2di) __C, __imm, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_maskz_fixupimm_sd (__mmask8 __U, __m128d __A, __m128d __B, + __m128i __C, const int __imm) +{ + return (__m128d) __builtin_ia32_fixupimmsd_maskz ((__v2df) __A, + (__v2df) __B, + (__v2di) __C, + __imm, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fixupimm_ss (__m128 __A, __m128 __B, __m128i __C, const int __imm) +{ + return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A, + (__v4sf) __B, + (__v4si) __C, __imm, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_mask_fixupimm_ss (__m128 __A, __mmask8 __U, __m128 __B, + __m128i __C, const int __imm) +{ + return (__m128) __builtin_ia32_fixupimmss_mask ((__v4sf) __A, + (__v4sf) __B, + (__v4si) __C, __imm, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_maskz_fixupimm_ss (__mmask8 __U, __m128 __A, __m128 __B, + __m128i __C, const int __imm) +{ + return (__m128) __builtin_ia32_fixupimmss_maskz ((__v4sf) __A, + (__v4sf) __B, + (__v4si) __C, __imm, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} +#else +#define _mm512_fixupimm_pd(X, Y, Z, C) \ + ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \ + (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_mask_fixupimm_pd(X, U, Y, Z, C) \ + ((__m512d)__builtin_ia32_fixupimmpd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \ + (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_maskz_fixupimm_pd(U, X, Y, Z, C) \ + ((__m512d)__builtin_ia32_fixupimmpd512_maskz ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (__v8di)(__m512i)(Z), (int)(C), \ + (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_fixupimm_ps(X, Y, Z, C) \ + ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \ + (__mmask16)(-1), _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_mask_fixupimm_ps(X, U, Y, Z, C) \ + ((__m512)__builtin_ia32_fixupimmps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \ + (__mmask16)(U), _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_maskz_fixupimm_ps(U, X, Y, Z, C) \ + ((__m512)__builtin_ia32_fixupimmps512_maskz ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (__v16si)(__m512i)(Z), (int)(C), \ + (__mmask16)(U), _MM_FROUND_CUR_DIRECTION)) + +#define _mm_fixupimm_sd(X, Y, Z, C) \ + ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \ + (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION)) + +#define _mm_mask_fixupimm_sd(X, U, Y, Z, C) \ + ((__m128d)__builtin_ia32_fixupimmsd_mask ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \ + (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) + +#define _mm_maskz_fixupimm_sd(U, X, Y, Z, C) \ + ((__m128d)__builtin_ia32_fixupimmsd_maskz ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), (__v2di)(__m128i)(Z), (int)(C), \ + (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) + +#define _mm_fixupimm_ss(X, Y, Z, C) \ + ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \ + (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION)) + +#define _mm_mask_fixupimm_ss(X, U, Y, Z, C) \ + ((__m128)__builtin_ia32_fixupimmss_mask ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \ + (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) + +#define _mm_maskz_fixupimm_ss(U, X, Y, Z, C) \ + ((__m128)__builtin_ia32_fixupimmss_maskz ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), (__v4si)(__m128i)(Z), (int)(C), \ + (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) +#endif + +#ifdef __x86_64__ +extern __inline unsigned long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtss_u64 (__m128 __A) +{ + return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf) + __A, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline unsigned long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvttss_u64 (__m128 __A) +{ + return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf) + __A, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvttss_i64 (__m128 __A) +{ + return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A, + _MM_FROUND_CUR_DIRECTION); +} +#endif /* __x86_64__ */ + +extern __inline unsigned +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtss_u32 (__m128 __A) +{ + return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline unsigned +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvttss_u32 (__m128 __A) +{ + return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvttss_i32 (__m128 __A) +{ + return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A, + _MM_FROUND_CUR_DIRECTION); +} + +#ifdef __x86_64__ +extern __inline unsigned long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtsd_u64 (__m128d __A) +{ + return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df) + __A, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline unsigned long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvttsd_u64 (__m128d __A) +{ + return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df) + __A, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline long long +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvttsd_i64 (__m128d __A) +{ + return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A, + _MM_FROUND_CUR_DIRECTION); +} +#endif /* __x86_64__ */ + +extern __inline unsigned +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvtsd_u32 (__m128d __A) +{ + return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline unsigned +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvttsd_u32 (__m128d __A) +{ + return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline int +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvttsd_i32 (__m128d __A) +{ + return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtps_pd (__m256 __A) +{ + return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A) +{ + return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A) +{ + return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtph_ps (__m256i __A) +{ + return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A) +{ + return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A) +{ + return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cvtpd_ps (__m512d __A) +{ + return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A, + (__v8sf) + _mm256_setzero_ps (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A) +{ + return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A, + (__v8sf) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m256 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A) +{ + return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A, + (__v8sf) + _mm256_setzero_ps (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +#ifdef __OPTIMIZE__ +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_getexp_ps (__m512 __A) +{ + return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A) +{ + return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_getexp_pd (__m512d __A) +{ + return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A) +{ + return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_getmant_pd (__m512d __A, _MM_MANTISSA_NORM_ENUM __B, + _MM_MANTISSA_SIGN_ENUM __C) +{ + return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A, + (__C << 2) | __B, + _mm512_setzero_pd (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_getmant_pd (__m512d __W, __mmask8 __U, __m512d __A, + _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C) +{ + return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A, + (__C << 2) | __B, + (__v8df) __W, __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_getmant_pd (__mmask8 __U, __m512d __A, + _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C) +{ + return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A, + (__C << 2) | __B, + (__v8df) + _mm512_setzero_pd (), + __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_getmant_ps (__m512 __A, _MM_MANTISSA_NORM_ENUM __B, + _MM_MANTISSA_SIGN_ENUM __C) +{ + return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A, + (__C << 2) | __B, + _mm512_setzero_ps (), + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_getmant_ps (__m512 __W, __mmask16 __U, __m512 __A, + _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C) +{ + return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A, + (__C << 2) | __B, + (__v16sf) __W, __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_getmant_ps (__mmask16 __U, __m512 __A, + _MM_MANTISSA_NORM_ENUM __B, _MM_MANTISSA_SIGN_ENUM __C) +{ + return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A, + (__C << 2) | __B, + (__v16sf) + _mm512_setzero_ps (), + __U, + _MM_FROUND_CUR_DIRECTION); +} + +#else +#define _mm512_getmant_pd(X, B, C) \ + ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \ + (int)(((C)<<2) | (B)), \ + (__v8df)(__m512d)_mm512_setzero_pd(), \ + (__mmask8)-1,\ + _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_mask_getmant_pd(W, U, X, B, C) \ + ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \ + (int)(((C)<<2) | (B)), \ + (__v8df)(__m512d)(W), \ + (__mmask8)(U),\ + _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_maskz_getmant_pd(U, X, B, C) \ + ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \ + (int)(((C)<<2) | (B)), \ + (__v8df)(__m512d)_mm512_setzero_pd(), \ + (__mmask8)(U),\ + _MM_FROUND_CUR_DIRECTION)) +#define _mm512_getmant_ps(X, B, C) \ + ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \ + (int)(((C)<<2) | (B)), \ + (__v16sf)(__m512)_mm512_setzero_ps(), \ + (__mmask16)-1,\ + _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_mask_getmant_ps(W, U, X, B, C) \ + ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \ + (int)(((C)<<2) | (B)), \ + (__v16sf)(__m512)(W), \ + (__mmask16)(U),\ + _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_maskz_getmant_ps(U, X, B, C) \ + ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \ + (int)(((C)<<2) | (B)), \ + (__v16sf)(__m512)_mm512_setzero_ps(), \ + (__mmask16)(U),\ + _MM_FROUND_CUR_DIRECTION)) +#define _mm512_getexp_ps(A) \ + ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ + (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_mask_getexp_ps(W, U, A) \ + ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ + (__v16sf)(__m512)(W), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_maskz_getexp_ps(U, A) \ + ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ + (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_getexp_pd(A) \ + ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \ + (__v8df)_mm512_setzero_pd(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_mask_getexp_pd(W, U, A) \ + ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \ + (__v8df)(__m512d)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_maskz_getexp_pd(U, A) \ + ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \ + (__v8df)_mm512_setzero_pd(), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_roundscale_ps (__m512 __A, const int __imm) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, __imm, + (__v16sf) __A, -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_roundscale_ps (__m512 __A, __mmask16 __B, __m512 __C, + const int __imm) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __C, __imm, + (__v16sf) __A, + (__mmask16) __B, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_roundscale_ps (__mmask16 __A, __m512 __B, const int __imm) +{ + return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __B, + __imm, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __A, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_roundscale_pd (__m512d __A, const int __imm) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, __imm, + (__v8df) __A, -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_roundscale_pd (__m512d __A, __mmask8 __B, __m512d __C, + const int __imm) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __C, __imm, + (__v8df) __A, + (__mmask8) __B, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_maskz_roundscale_pd (__mmask8 __A, __m512d __B, const int __imm) +{ + return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __B, + __imm, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __A, + _MM_FROUND_CUR_DIRECTION); +} + +#else +#define _mm512_roundscale_ps(A, B) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\ + (__v16sf)(__m512)(A), (__mmask16)(-1), _MM_FROUND_CUR_DIRECTION)) +#define _mm512_mask_roundscale_ps(A, B, C, D) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C), \ + (int)(D), \ + (__v16sf)(__m512)(A), \ + (__mmask16)(B), _MM_FROUND_CUR_DIRECTION)) +#define _mm512_maskz_roundscale_ps(A, B, C) \ + ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(B), \ + (int)(C), \ + (__v16sf)_mm512_setzero_ps(),\ + (__mmask16)(A), _MM_FROUND_CUR_DIRECTION)) +#define _mm512_roundscale_pd(A, B) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), (int)(B),\ + (__v8df)(__m512d)(A), (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION)) +#define _mm512_mask_roundscale_pd(A, B, C, D) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C), \ + (int)(D), \ + (__v8df)(__m512d)(A), \ + (__mmask8)(B), _MM_FROUND_CUR_DIRECTION)) +#define _mm512_maskz_roundscale_pd(A, B, C) \ + ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(B), \ + (int)(C), \ + (__v8df)_mm512_setzero_pd(),\ + (__mmask8)(A), _MM_FROUND_CUR_DIRECTION)) +#endif + +#ifdef __OPTIMIZE__ +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmp_pd_mask (__m512d __X, __m512d __Y, const int __P) +{ + return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X, + (__v8df) __Y, __P, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_cmp_ps_mask (__m512 __X, __m512 __Y, const int __P) +{ + return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X, + (__v16sf) __Y, __P, + (__mmask16) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __mmask16 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmp_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y, const int __P) +{ + return (__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf) __X, + (__v16sf) __Y, __P, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_cmp_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y, const int __P) +{ + return (__mmask8) __builtin_ia32_cmppd512_mask ((__v8df) __X, + (__v8df) __Y, __P, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cmp_sd_mask (__m128d __X, __m128d __Y, const int __P) +{ + return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X, + (__v2df) __Y, __P, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_mask_cmp_sd_mask (__mmask8 __M, __m128d __X, __m128d __Y, const int __P) +{ + return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X, + (__v2df) __Y, __P, + (__mmask8) __M, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cmp_ss_mask (__m128 __X, __m128 __Y, const int __P) +{ + return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X, + (__v4sf) __Y, __P, + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __mmask8 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_mask_cmp_ss_mask (__mmask8 __M, __m128 __X, __m128 __Y, const int __P) +{ + return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X, + (__v4sf) __Y, __P, + (__mmask8) __M, + _MM_FROUND_CUR_DIRECTION); +} + +#else +#define _mm512_cmp_pd_mask(X, Y, P) \ + ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (int)(P),\ + (__mmask8)-1,_MM_FROUND_CUR_DIRECTION)) + +#define _mm512_cmp_ps_mask(X, Y, P) \ + ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (int)(P),\ + (__mmask16)-1,_MM_FROUND_CUR_DIRECTION)) + +#define _mm512_mask_cmp_pd_mask(M, X, Y, P) \ + ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (int)(P),\ + (__mmask8)M, _MM_FROUND_CUR_DIRECTION)) + +#define _mm512_mask_cmp_ps_mask(M, X, Y, P) \ + ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (int)(P),\ + (__mmask16)M,_MM_FROUND_CUR_DIRECTION)) + +#define _mm_cmp_sd_mask(X, Y, P) \ + ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), (int)(P),\ + (__mmask8)-1,_MM_FROUND_CUR_DIRECTION)) + +#define _mm_mask_cmp_sd_mask(M, X, Y, P) \ + ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), (int)(P),\ + M,_MM_FROUND_CUR_DIRECTION)) + +#define _mm_cmp_ss_mask(X, Y, P) \ + ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), (int)(P), \ + (__mmask8)-1,_MM_FROUND_CUR_DIRECTION)) + +#define _mm_mask_cmp_ss_mask(M, X, Y, P) \ + ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), (int)(P), \ + M,_MM_FROUND_CUR_DIRECTION)) +#endif + +#ifdef __DISABLE_AVX512F__ +#undef __DISABLE_AVX512F__ +#pragma GCC pop_options +#endif /* __DISABLE_AVX512F__ */ + +#endif /* _AVX512FINTRIN_H_INCLUDED */ diff --git a/gcc/config/i386/avx512pfintrin.h b/gcc/config/i386/avx512pfintrin.h new file mode 100644 index 00000000000..4dba640458d --- /dev/null +++ b/gcc/config/i386/avx512pfintrin.h @@ -0,0 +1,130 @@ +/* Copyright (C) 2013 + Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GCC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + +#ifndef _IMMINTRIN_H_INCLUDED +#error "Never use directly; include instead." +#endif + +#ifndef _AVX512PFINTRIN_H_INCLUDED +#define _AVX512PFINTRIN_H_INCLUDED + +#ifndef __AVX512PF__ +#pragma GCC push_options +#pragma GCC target("avx512pf") +#define __DISABLE_AVX512PF__ +#endif /* __AVX512PF__ */ + +/* Internal data types for implementing the intrinsics. */ +typedef long long __v8di __attribute__ ((__vector_size__ (64))); +typedef int __v16si __attribute__ ((__vector_size__ (64))); + +/* The Intel API is flexible enough that we must allow aliasing with other + vector types, and their scalar components. */ +typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__)); + +typedef unsigned char __mmask8; +typedef unsigned short __mmask16; + +#ifdef __OPTIMIZE__ +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_prefetch_i32gather_ps (__m512i index, __mmask16 mask, + int const *addr, int scale, int hint) +{ + __builtin_ia32_gatherpfdps (mask, (__v16si) index, addr, scale, hint); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_prefetch_i64gather_ps (__m512i index, __mmask8 mask, + int const *addr, int scale, int hint) +{ + __builtin_ia32_gatherpfqps (mask, (__v8di) index, addr, scale, hint); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_prefetch_i32scatter_ps (int const *addr, __m512i index, int scale, + int hint) +{ + __builtin_ia32_scatterpfdps ((__mmask16) 0xFFFF, (__v16si) index, addr, scale, + hint); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_prefetch_i32scatter_ps (int const *addr, __mmask16 mask, + __m512i index, int scale, int hint) +{ + __builtin_ia32_scatterpfdps (mask, (__v16si) index, addr, scale, hint); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_prefetch_i64scatter_ps (int const *addr, __m512i index, int scale, + int hint) +{ + __builtin_ia32_scatterpfqps ((__mmask8) 0xFF, (__v8di) index, addr, scale, + hint); +} + +extern __inline void +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_mask_prefetch_i64scatter_ps (int const *addr, __mmask16 mask, + __m512i index, int scale, int hint) +{ + __builtin_ia32_scatterpfqps (mask, (__v8di) index, addr, scale, hint); +} +#else +#define _mm512_mask_prefetch_i32gather_ps(INDEX, MASK, ADDR, SCALE, HINT) \ + __builtin_ia32_gatherpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX, \ + (int const *)ADDR, (int)SCALE, (int)HINT) + +#define _mm512_mask_prefetch_i64gather_ps(INDEX, MASK, ADDR, SCALE, HINT) \ + __builtin_ia32_gatherpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \ + (int const *)ADDR, (int)SCALE, (int)HINT) + +#define _mm512_prefetch_i32scatter_ps(ADDR, INDEX, SCALE, HINT) \ + __builtin_ia32_scatterpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i)INDEX, \ + (int const *)ADDR, (int)SCALE, (int)HINT) + +#define _mm512_mask_prefetch_i32scatter_ps(ADDR, MASK, INDEX, SCALE, HINT) \ + __builtin_ia32_scatterpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX, \ + (int const *)ADDR, (int)SCALE, (int)HINT) + +#define _mm512_prefetch_i64scatter_ps(ADDR, INDEX, SCALE, HINT) \ + __builtin_ia32_scatterpfqps ((__mmask8)0xFF, (__v8di)(__m512i)INDEX, \ + (int const *)ADDR, (int)SCALE, (int)HINT) + +#define _mm512_mask_prefetch_i64scatter_ps(ADDR, MASK, INDEX, SCALE, HINT) \ + __builtin_ia32_scatterpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \ + (int const *)ADDR, (int)SCALE, (int)HINT) +#endif + +#ifdef __DISABLE_AVX512PF__ +#undef __DISABLE_AVX512PF__ +#pragma GCC pop_options +#endif /* __DISABLE_AVX512PF__ */ + +#endif /* _AVX512PFINTRIN_H_INCLUDED */ diff --git a/gcc/config/i386/i386-builtin-types.def b/gcc/config/i386/i386-builtin-types.def index c866170bde8..86ad31ea478 100644 --- a/gcc/config/i386/i386-builtin-types.def +++ b/gcc/config/i386/i386-builtin-types.def @@ -99,6 +99,15 @@ DEF_VECTOR_TYPE (V16HI, HI) DEF_VECTOR_TYPE (V32QI, QI) DEF_VECTOR_TYPE (V4UDI, UDI, V4DI) DEF_VECTOR_TYPE (V8USI, USI, V8SI) +DEF_VECTOR_TYPE (V16UHI, UHI, V16HI) + +# AVX512F vectors +DEF_VECTOR_TYPE (V32SF, FLOAT) +DEF_VECTOR_TYPE (V16SF, FLOAT) +DEF_VECTOR_TYPE (V8DF, DOUBLE) +DEF_VECTOR_TYPE (V8DI, DI) +DEF_VECTOR_TYPE (V16SI, SI) +DEF_VECTOR_TYPE (V64QI, QI) DEF_POINTER_TYPE (PCCHAR, CHAR, CONST) DEF_POINTER_TYPE (PCDOUBLE, DOUBLE, CONST) @@ -123,21 +132,29 @@ DEF_POINTER_TYPE (PV2SF, V2SF) DEF_POINTER_TYPE (PV4DF, V4DF) DEF_POINTER_TYPE (PV4DI, V4DI) DEF_POINTER_TYPE (PV4SF, V4SF) +DEF_POINTER_TYPE (PV8DF, V8DF) DEF_POINTER_TYPE (PV8SF, V8SF) DEF_POINTER_TYPE (PV4SI, V4SI) DEF_POINTER_TYPE (PV8SI, V8SI) +DEF_POINTER_TYPE (PV8DI, V8DI) +DEF_POINTER_TYPE (PV16SI, V16SI) +DEF_POINTER_TYPE (PV16SF, V16SF) DEF_POINTER_TYPE (PCV2SI, V2SI, CONST) DEF_POINTER_TYPE (PCV2DF, V2DF, CONST) DEF_POINTER_TYPE (PCV2SF, V2SF, CONST) DEF_POINTER_TYPE (PCV4DF, V4DF, CONST) DEF_POINTER_TYPE (PCV4SF, V4SF, CONST) +DEF_POINTER_TYPE (PCV8DF, V8DF, CONST) DEF_POINTER_TYPE (PCV8SF, V8SF, CONST) +DEF_POINTER_TYPE (PCV16SF, V16SF, CONST) DEF_POINTER_TYPE (PCV2DI, V2DI, CONST) DEF_POINTER_TYPE (PCV4SI, V4SI, CONST) DEF_POINTER_TYPE (PCV4DI, V4DI, CONST) DEF_POINTER_TYPE (PCV8SI, V8SI, CONST) +DEF_POINTER_TYPE (PCV8DI, V8DI, CONST) +DEF_POINTER_TYPE (PCV16SI, V16SI, CONST) DEF_FUNCTION_TYPE (FLOAT128) DEF_FUNCTION_TYPE (UINT64) @@ -165,6 +182,7 @@ DEF_FUNCTION_TYPE (UINT16, UINT16) DEF_FUNCTION_TYPE (UINT64, PUNSIGNED) DEF_FUNCTION_TYPE (V16QI, PCCHAR) DEF_FUNCTION_TYPE (V16QI, V16QI) +DEF_FUNCTION_TYPE (V16QI, V16SI) DEF_FUNCTION_TYPE (V2DF, PCDOUBLE) DEF_FUNCTION_TYPE (V2DF, V2DF) DEF_FUNCTION_TYPE (V2DF, V2SI) @@ -190,6 +208,8 @@ DEF_FUNCTION_TYPE (V4DF, V2DF) DEF_FUNCTION_TYPE (V4DF, V4DF) DEF_FUNCTION_TYPE (V4DF, V4SF) DEF_FUNCTION_TYPE (V4DF, V4SI) +DEF_FUNCTION_TYPE (V8DF, V8SI) +DEF_FUNCTION_TYPE (V8DF, V8DF) DEF_FUNCTION_TYPE (V4HI, V4HI) DEF_FUNCTION_TYPE (V4SF, PCFLOAT) DEF_FUNCTION_TYPE (V4SF, V2DF) @@ -207,6 +227,7 @@ DEF_FUNCTION_TYPE (V4SI, V4SI) DEF_FUNCTION_TYPE (V4SI, V8HI) DEF_FUNCTION_TYPE (V4SI, V8SI) DEF_FUNCTION_TYPE (V8HI, V16QI) +DEF_FUNCTION_TYPE (V8HI, V8DI) DEF_FUNCTION_TYPE (V8HI, V8HI) DEF_FUNCTION_TYPE (V8QI, V8QI) DEF_FUNCTION_TYPE (V8SF, PCFLOAT) @@ -216,10 +237,15 @@ DEF_FUNCTION_TYPE (V8SF, V4SF) DEF_FUNCTION_TYPE (V8SF, V8SF) DEF_FUNCTION_TYPE (V8SF, V8SI) DEF_FUNCTION_TYPE (V8SF, V8HI) +DEF_FUNCTION_TYPE (V16SF, V16SF) +DEF_FUNCTION_TYPE (V8SI, V8DI) DEF_FUNCTION_TYPE (V8SI, V4SI) +DEF_FUNCTION_TYPE (V8SF, V8DF) +DEF_FUNCTION_TYPE (V8SF, V8DF, V8SF, QI) DEF_FUNCTION_TYPE (V8SI, V8SF) DEF_FUNCTION_TYPE (V32QI, V32QI) DEF_FUNCTION_TYPE (V32QI, V16QI) +DEF_FUNCTION_TYPE (V16HI, V16SI) DEF_FUNCTION_TYPE (V16HI, V16HI) DEF_FUNCTION_TYPE (V16HI, V8HI) DEF_FUNCTION_TYPE (V8SI, V8SI) @@ -239,6 +265,28 @@ DEF_FUNCTION_TYPE (V4DI, V8HI) DEF_FUNCTION_TYPE (V4DI, V4SI) DEF_FUNCTION_TYPE (V4DI, PV4DI) DEF_FUNCTION_TYPE (V4DI, V2DI) +DEF_FUNCTION_TYPE (V16SF, FLOAT) +DEF_FUNCTION_TYPE (V16SI, INT) +DEF_FUNCTION_TYPE (V8DF, DOUBLE) +DEF_FUNCTION_TYPE (V8DI, INT64) +DEF_FUNCTION_TYPE (V16SF, V4SF) +DEF_FUNCTION_TYPE (V8DF, V4DF) +DEF_FUNCTION_TYPE (V8DI, V4DI) +DEF_FUNCTION_TYPE (V16QI, V8DI) +DEF_FUNCTION_TYPE (UINT, V4SF) +DEF_FUNCTION_TYPE (UINT64, V4SF) +DEF_FUNCTION_TYPE (UINT, V2DF) +DEF_FUNCTION_TYPE (UINT64, V2DF) +DEF_FUNCTION_TYPE (V16SI, V16SI) +DEF_FUNCTION_TYPE (V16SI, V16SI, V16SI, HI) +DEF_FUNCTION_TYPE (V8DI, V8DI) +DEF_FUNCTION_TYPE (V8DI, V8DI, V8DI, QI) +DEF_FUNCTION_TYPE (V16SI, PV4SI) +DEF_FUNCTION_TYPE (V16SF, PV4SF) +DEF_FUNCTION_TYPE (V8DI, PV4DI) +DEF_FUNCTION_TYPE (V8DF, PV4DF) +DEF_FUNCTION_TYPE (V8UHI, V8UHI) +DEF_FUNCTION_TYPE (V8USI, V8USI) DEF_FUNCTION_TYPE (DI, V2DI, INT) DEF_FUNCTION_TYPE (DOUBLE, V2DF, INT) @@ -270,6 +318,8 @@ DEF_FUNCTION_TYPE (V1DI, V1DI, V1DI) DEF_FUNCTION_TYPE (V1DI, V2SI, V2SI) DEF_FUNCTION_TYPE (V1DI, V8QI, V8QI) DEF_FUNCTION_TYPE (V2DF, PCV2DF, V2DI) +DEF_FUNCTION_TYPE (V2DF, V2DF, UINT) +DEF_FUNCTION_TYPE (V2DF, V2DF, UINT64) DEF_FUNCTION_TYPE (V2DF, V2DF, DI) DEF_FUNCTION_TYPE (V2DF, V2DF, INT) DEF_FUNCTION_TYPE (V2DF, V2DF, PCDOUBLE) @@ -295,16 +345,23 @@ DEF_FUNCTION_TYPE (V2SI, V2SI, V2SI) DEF_FUNCTION_TYPE (V2SI, V4HI, V4HI) DEF_FUNCTION_TYPE (V4DF, PCV4DF, V4DI) DEF_FUNCTION_TYPE (V4DF, V4DF, INT) +DEF_FUNCTION_TYPE (V4DF, V8DF, INT) +DEF_FUNCTION_TYPE (V4DF, V8DF, INT, V4DF, QI) DEF_FUNCTION_TYPE (V4DF, V4DF, V4DF) DEF_FUNCTION_TYPE (V4DF, V4DF, V4DI) +DEF_FUNCTION_TYPE (V8DF, V8DF, V8DI) DEF_FUNCTION_TYPE (V4HI, V2SI, V2SI) DEF_FUNCTION_TYPE (V4HI, V4HI, INT) DEF_FUNCTION_TYPE (V4HI, V4HI, SI) DEF_FUNCTION_TYPE (V4HI, V4HI, V4HI) DEF_FUNCTION_TYPE (V4HI, V8QI, V8QI) DEF_FUNCTION_TYPE (V4SF, PCV4SF, V4SI) +DEF_FUNCTION_TYPE (V4SF, V4SF, UINT) +DEF_FUNCTION_TYPE (V4SF, V4SF, UINT64) DEF_FUNCTION_TYPE (V4SF, V4SF, DI) DEF_FUNCTION_TYPE (V4SF, V4SF, INT) +DEF_FUNCTION_TYPE (INT, V4SF, V4SF, INT, INT) +DEF_FUNCTION_TYPE (INT, V2DF, V2DF, INT, INT) DEF_FUNCTION_TYPE (V4SF, V4SF, PCV2SF) DEF_FUNCTION_TYPE (V4SF, V4SF, SI) DEF_FUNCTION_TYPE (V4SF, V4SF, V2DF) @@ -331,30 +388,75 @@ DEF_FUNCTION_TYPE (V8QI, V4HI, V4HI) DEF_FUNCTION_TYPE (V8QI, V8QI, V8QI) DEF_FUNCTION_TYPE (V8SF, PCV8SF, V8SI) DEF_FUNCTION_TYPE (V8SF, V8SF, INT) +DEF_FUNCTION_TYPE (V16SF, V16SF, INT) +DEF_FUNCTION_TYPE (V4SF, V16SF, INT) +DEF_FUNCTION_TYPE (V4SF, V16SF, INT, V4SF, QI) DEF_FUNCTION_TYPE (V8SF, V8SF, V8SF) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF) DEF_FUNCTION_TYPE (V8SF, V8SF, V8SI) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SI) DEF_FUNCTION_TYPE (V32QI, V16HI, V16HI) DEF_FUNCTION_TYPE (V16HI, V8SI, V8SI) +DEF_FUNCTION_TYPE (V8DF, V8DF, V4DF, INT, V8DF, QI) +DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF, INT, V8DF, QI) +DEF_FUNCTION_TYPE (V8DF, V8DF, INT, V8DF, QI) +DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF, V8DI, INT, QI, INT) +DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, INT) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, INT, V16SF, HI) +DEF_FUNCTION_TYPE (V16SF, V16SF, INT, V16SF, HI) +DEF_FUNCTION_TYPE (V16SI, V16SI, V4SI, INT, V16SI, HI) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, V16SI, INT) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, V16SI, INT, HI) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, V16SI, INT, HI, INT) +DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SI, INT, QI) +DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SI, INT, QI, INT) +DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DI, INT, QI) +DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DI, INT, QI, INT) +DEF_FUNCTION_TYPE (V16SF, V16SF, V4SF, INT) +DEF_FUNCTION_TYPE (V16SF, V16SF, V4SF, INT, V16SF, HI) DEF_FUNCTION_TYPE (V32QI, V32QI, V32QI) DEF_FUNCTION_TYPE (V16HI, V32QI, V32QI) DEF_FUNCTION_TYPE (V16HI, V16HI, V8HI) DEF_FUNCTION_TYPE (V16HI, V16HI, V16HI) DEF_FUNCTION_TYPE (V16HI, V16HI, INT) +DEF_FUNCTION_TYPE (V16HI, V16SF, INT) +DEF_FUNCTION_TYPE (V16HI, V16SF, INT, V16HI, HI) +DEF_FUNCTION_TYPE (V16HI, V16HI, V16HI, INT, V16HI, HI) DEF_FUNCTION_TYPE (V16HI, V16HI, SI) DEF_FUNCTION_TYPE (V16HI, V16HI, V16HI, INT) DEF_FUNCTION_TYPE (V32QI, V32QI, V32QI, INT) DEF_FUNCTION_TYPE (V8SI, V4DF, V4DF) DEF_FUNCTION_TYPE (V8SI, V8SI, V4SI) +DEF_FUNCTION_TYPE (V16SI, V16SI, V4SI) +DEF_FUNCTION_TYPE (V16SI, V16SI, V4SI, INT) +DEF_FUNCTION_TYPE (V4SI, V16SI, INT) +DEF_FUNCTION_TYPE (V4SI, V16SI, INT, V4SI, QI) DEF_FUNCTION_TYPE (V8SI, V8SI, V8SI) +DEF_FUNCTION_TYPE (V16SI, V16SI, V16SI) +DEF_FUNCTION_TYPE (V16SI, V16SI, V16SI, INT, V16SI, HI) DEF_FUNCTION_TYPE (V8SI, V16HI, V16HI) DEF_FUNCTION_TYPE (V8SI, V8SI, INT) DEF_FUNCTION_TYPE (V8SI, V8SI, SI) +DEF_FUNCTION_TYPE (V16SI, V16SI, SI) +DEF_FUNCTION_TYPE (V16SI, V16SI, INT) +DEF_FUNCTION_TYPE (V16SI, V16SI, V4SI, V16SI, HI) +DEF_FUNCTION_TYPE (V16SI, V16SI, INT, V16SI, HI) DEF_FUNCTION_TYPE (V8SI, PCV8SI, V8SI) DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI) +DEF_FUNCTION_TYPE (V8DI, V8DI, V8DI) +DEF_FUNCTION_TYPE (V16SI, V8DF, V8DF) +DEF_FUNCTION_TYPE (V8DI, V8DI, V8DI, INT, V8DI, QI) +DEF_FUNCTION_TYPE (V8DI, V8DI, V4DI, INT, V8DI, QI) DEF_FUNCTION_TYPE (V4DI, V8SI, V8SI) DEF_FUNCTION_TYPE (V4UDI, V8USI, V8USI) DEF_FUNCTION_TYPE (V4DI, V4DI, V2DI) +DEF_FUNCTION_TYPE (V8DI, V8DI, V2DI) DEF_FUNCTION_TYPE (V4DI, PCV4DI, V4DI) +DEF_FUNCTION_TYPE (V4DI, V8DI, INT) +DEF_FUNCTION_TYPE (V4DI, V8DI, INT, V4DI, QI) +DEF_FUNCTION_TYPE (V8DI, V8DI, V2DI, V8DI, QI) +DEF_FUNCTION_TYPE (V8DI, V8DI, INT, V8DI, QI) DEF_FUNCTION_TYPE (V4DI, V4DI, INT) DEF_FUNCTION_TYPE (V2DI, V4DI, INT) DEF_FUNCTION_TYPE (VOID, PVOID, INT64) @@ -362,8 +464,10 @@ DEF_FUNCTION_TYPE (VOID, PCHAR, V16QI) DEF_FUNCTION_TYPE (VOID, PCHAR, V32QI) DEF_FUNCTION_TYPE (VOID, PDOUBLE, V2DF) DEF_FUNCTION_TYPE (VOID, PDOUBLE, V4DF) +DEF_FUNCTION_TYPE (VOID, PDOUBLE, V8DF) DEF_FUNCTION_TYPE (VOID, PFLOAT, V4SF) DEF_FUNCTION_TYPE (VOID, PFLOAT, V8SF) +DEF_FUNCTION_TYPE (VOID, PFLOAT, V16SF) DEF_FUNCTION_TYPE (VOID, PINT, INT) DEF_FUNCTION_TYPE (VOID, PLONGLONG, LONGLONG) DEF_FUNCTION_TYPE (VOID, PULONGLONG, ULONGLONG) @@ -374,6 +478,34 @@ DEF_FUNCTION_TYPE (VOID, PV4DI, V4DI) DEF_FUNCTION_TYPE (VOID, PV4SF, V4SF) DEF_FUNCTION_TYPE (VOID, PV8SF, V8SF) DEF_FUNCTION_TYPE (VOID, UNSIGNED, UNSIGNED) +DEF_FUNCTION_TYPE (VOID, PV8DI, V8DI) + +# Instructions returning mask +DEF_FUNCTION_TYPE (HI, HI) +DEF_FUNCTION_TYPE (HI, HI, HI) +DEF_FUNCTION_TYPE (HI, HI, INT) +DEF_FUNCTION_TYPE (QI, V8DI, V8DI) +DEF_FUNCTION_TYPE (QI, V8DI, V8DI, QI) +DEF_FUNCTION_TYPE (HI, V16SI, V16SI) +DEF_FUNCTION_TYPE (HI, V16SI, V16SI, HI) +DEF_FUNCTION_TYPE (QI, V8DI, V8DI, INT) +DEF_FUNCTION_TYPE (QI, V8DI, V8DI, INT, QI) +DEF_FUNCTION_TYPE (HI, V16SI, V16SI, INT) +DEF_FUNCTION_TYPE (HI, V16SI, V16SI, INT ,HI) +DEF_FUNCTION_TYPE (QI, V8DF, V8DF, INT) +DEF_FUNCTION_TYPE (QI, V8DF, V8DF, INT, QI) +DEF_FUNCTION_TYPE (QI, V8DF, V8DF, INT, QI, INT) +DEF_FUNCTION_TYPE (HI, V16SF, V16SF, INT) +DEF_FUNCTION_TYPE (HI, V16SF, V16SF, INT, HI) +DEF_FUNCTION_TYPE (HI, V16SF, V16SF, INT, HI, INT) +DEF_FUNCTION_TYPE (QI, V2DF, V2DF, INT) +DEF_FUNCTION_TYPE (QI, V2DF, V2DF, INT, QI) +DEF_FUNCTION_TYPE (QI, V2DF, V2DF, INT, QI, INT) +DEF_FUNCTION_TYPE (QI, V4SF, V4SF, INT) +DEF_FUNCTION_TYPE (QI, V4SF, V4SF, INT, QI) +DEF_FUNCTION_TYPE (QI, V4SF, V4SF, INT, QI, INT) +DEF_FUNCTION_TYPE (V16SI, HI) +DEF_FUNCTION_TYPE (V8DI, QI) DEF_FUNCTION_TYPE (INT, V16QI, V16QI, INT) DEF_FUNCTION_TYPE (UCHAR, UINT, UINT, UINT) @@ -413,11 +545,69 @@ DEF_FUNCTION_TYPE (V8SF, V8SF, V4SF, INT) DEF_FUNCTION_TYPE (V8SF, V8SF, V8SF, INT) DEF_FUNCTION_TYPE (V8SF, V8SF, V8SF, V8SF) DEF_FUNCTION_TYPE (V8SF, V8SF, V8SF, V8SI, INT) +DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF, V8DF) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, V16SF) DEF_FUNCTION_TYPE (V8SI, V8SI, V4SI, INT) DEF_FUNCTION_TYPE (V8SI, V8SI, V8SI, INT) DEF_FUNCTION_TYPE (V8SI, V8SI, V8SI, V8SI) DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, INT) DEF_FUNCTION_TYPE (V4DI, V4DI, V2DI, INT) + +# Instructions with masking +DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF, QI) +DEF_FUNCTION_TYPE (V8DF, V8SF, V8DF, QI) +DEF_FUNCTION_TYPE (V8DF, V8SI, V8DF, QI) +DEF_FUNCTION_TYPE (V8DI, V8SI, V8DI, QI) +DEF_FUNCTION_TYPE (V8DI, V8HI, V8DI, QI) +DEF_FUNCTION_TYPE (V8DI, V16QI, V8DI, QI) +DEF_FUNCTION_TYPE (V8DI, V8DI, V8DI, V8DI, QI) +DEF_FUNCTION_TYPE (V8DF, V8DI, V8DF, V8DF) +DEF_FUNCTION_TYPE (V8DF, V8DI, V8DF, V8DF, QI) +DEF_FUNCTION_TYPE (V8DF, V8DF, V8DI, V8DF, QI) +DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF, V8DF, QI) +DEF_FUNCTION_TYPE (V16SI, V16SI, V16SI, V16SI, HI) +DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DF, QI) +DEF_FUNCTION_TYPE (V2DF, V2DF, V4SF, V2DF, QI) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, HI) +DEF_FUNCTION_TYPE (V16SF, V16SI, V16SF, HI) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, V16SF, HI) +DEF_FUNCTION_TYPE (V16SF, V16SI, V16SF, V16SF) +DEF_FUNCTION_TYPE (V16SF, V16SI, V16SF, V16SF, HI) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SI, V16SF, HI) +DEF_FUNCTION_TYPE (V4SF, V4SF, V2DF, V4SF, QI) +DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SF, QI) +DEF_FUNCTION_TYPE (V16SF, V4SF, V16SF, HI) +DEF_FUNCTION_TYPE (V8DF, V4DF, V8DF, QI) +DEF_FUNCTION_TYPE (V8DF, V2DF, V8DF, QI) +DEF_FUNCTION_TYPE (V16SI, V4SI, V16SI, HI) +DEF_FUNCTION_TYPE (V16SI, SI, V16SI, HI) +DEF_FUNCTION_TYPE (V16SI, V16HI, V16SI, HI) +DEF_FUNCTION_TYPE (V16SI, V16QI, V16SI, HI) +DEF_FUNCTION_TYPE (V8SI, V8DF, V8SI, QI) +DEF_FUNCTION_TYPE (V8DI, V4DI, V8DI, QI) +DEF_FUNCTION_TYPE (V8DI, V2DI, V8DI, QI) +DEF_FUNCTION_TYPE (V8DI, DI, V8DI, QI) +DEF_FUNCTION_TYPE (V16SF, PCV16SF, V16SF, HI) +DEF_FUNCTION_TYPE (V8DF, PCV8DF, V8DF, QI) +DEF_FUNCTION_TYPE (V16SI, PCV16SI, V16SI, HI) +DEF_FUNCTION_TYPE (V8DI, PCV8DI, V8DI, QI) +DEF_FUNCTION_TYPE (V2DF, PCDOUBLE, V2DF, QI) +DEF_FUNCTION_TYPE (V4SF, PCFLOAT, V4SF, QI) +DEF_FUNCTION_TYPE (V16QI, V16SI, V16QI, HI) +DEF_FUNCTION_TYPE (V16HI, V16SI, V16HI, HI) +DEF_FUNCTION_TYPE (V8SI, V8DI, V8SI, QI) +DEF_FUNCTION_TYPE (V8HI, V8DI, V8HI, QI) +DEF_FUNCTION_TYPE (V16QI, V8DI, V16QI, QI) +DEF_FUNCTION_TYPE (VOID, PV8DF, V8DF, QI) +DEF_FUNCTION_TYPE (VOID, PV16SF, V16SF, HI) +DEF_FUNCTION_TYPE (VOID, PV8DI, V8DI, QI) +DEF_FUNCTION_TYPE (VOID, PV16SI, V16SI, HI) +DEF_FUNCTION_TYPE (VOID, PDOUBLE, V2DF, QI) +DEF_FUNCTION_TYPE (VOID, PFLOAT, V4SF, QI) +DEF_FUNCTION_TYPE (V16SI, V16SF, V16SI, HI) +DEF_FUNCTION_TYPE (V8DI, V8DI, V8DI, V8DI, INT, QI) +DEF_FUNCTION_TYPE (V16SI, V16SI, V16SI, V16SI, INT, HI) + DEF_FUNCTION_TYPE (VOID, PCVOID, UNSIGNED, UNSIGNED) DEF_FUNCTION_TYPE (VOID, PV2DF, V2DI, V2DF) DEF_FUNCTION_TYPE (VOID, PV4DF, V4DI, V4DF) @@ -439,6 +629,13 @@ DEF_FUNCTION_TYPE (V8UHI, V8UHI, V8UHI, V8UHI) DEF_FUNCTION_TYPE (V16UQI, V16UQI, V16UQI, V16UQI) DEF_FUNCTION_TYPE (V4DF, V4DF, V4DF, V4DI) DEF_FUNCTION_TYPE (V8SF, V8SF, V8SF, V8SI) +DEF_FUNCTION_TYPE (V8DI, V8DI, V8DI, V8DI) +DEF_FUNCTION_TYPE (V16SI, V16SI, V16SI, V16SI) +DEF_FUNCTION_TYPE (V8DF, V8DF, V8DI, V8DF) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SI, V16SF) +DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, INT, V4SF, QI) +DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, INT, V2DF, QI) +DEF_FUNCTION_TYPE (V8DI, V16SI, V16SI, V8DI, QI) DEF_FUNCTION_TYPE (V2DI, V2DI, V2DI, UINT, UINT) DEF_FUNCTION_TYPE (V4HI, HI, HI, HI, HI) @@ -451,6 +648,43 @@ DEF_FUNCTION_TYPE (V8QI, QI, QI, QI, QI, QI, QI, QI, QI) DEF_FUNCTION_TYPE (UCHAR, UCHAR, UINT, UINT, PUNSIGNED) DEF_FUNCTION_TYPE (UCHAR, UCHAR, ULONGLONG, ULONGLONG, PULONGLONG) +# Instructions with rounding +DEF_FUNCTION_TYPE (UINT64, V2DF, INT) +DEF_FUNCTION_TYPE (UINT64, V4SF, INT) +DEF_FUNCTION_TYPE (UINT, V2DF, INT) +DEF_FUNCTION_TYPE (UINT, V4SF, INT) +DEF_FUNCTION_TYPE (INT64, V2DF, INT) +DEF_FUNCTION_TYPE (INT64, V4SF, INT) +DEF_FUNCTION_TYPE (INT, V2DF, INT) +DEF_FUNCTION_TYPE (INT, V4SF, INT) +DEF_FUNCTION_TYPE (V2DF, V2DF, UINT64, INT) +DEF_FUNCTION_TYPE (V4SF, V4SF, UINT64, INT) +DEF_FUNCTION_TYPE (V4SF, V4SF, UINT, INT) +DEF_FUNCTION_TYPE (V2DF, V2DF, INT64, INT) +DEF_FUNCTION_TYPE (V4SF, V4SF, INT64, INT) +DEF_FUNCTION_TYPE (V4SF, V4SF, INT, INT) +DEF_FUNCTION_TYPE (V16SI, V16SF, V16SI, HI, INT) +DEF_FUNCTION_TYPE (V16SF, V16SI, V16SF, HI, INT) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, HI, INT) +DEF_FUNCTION_TYPE (V16SF, V16HI, V16SF, HI, INT) +DEF_FUNCTION_TYPE (V8SI, V8DF, V8SI, QI, INT) +DEF_FUNCTION_TYPE (V8SF, V8DF, V8SF, QI, INT) +DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF, QI, INT) +DEF_FUNCTION_TYPE (V8DF, V8SF, V8DF, QI, INT) +DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, V16SF, HI, INT) +DEF_FUNCTION_TYPE (V8DF, V8DF, V8DF, V8DF, QI, INT) +DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SF, QI, INT) +DEF_FUNCTION_TYPE (V4SF, V4SF, V2DF, V4SF, QI, INT) +DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DF, QI, INT) +DEF_FUNCTION_TYPE (V2DF, V2DF, V4SF, V2DF, QI, INT) +DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DF, INT) + +DEF_FUNCTION_TYPE (V16SF, V16SF, INT, V16SF, HI, INT) +DEF_FUNCTION_TYPE (V8DF, V8DF, INT, V8DF, QI, INT) +DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, INT, V4SF, QI, INT) +DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, INT, V2DF, QI, INT) +DEF_FUNCTION_TYPE (V8DI, V8DI, SI, V8DI, V8DI) + DEF_FUNCTION_TYPE (V2DF, V2DF, PCDOUBLE, V4SI, V2DF, INT) DEF_FUNCTION_TYPE (V4DF, V4DF, PCDOUBLE, V4SI, V4DF, INT) DEF_FUNCTION_TYPE (V4DF, V4DF, PCDOUBLE, V8SI, V4DF, INT) @@ -472,6 +706,30 @@ DEF_FUNCTION_TYPE (V4SI, V4SI, PCINT, V2DI, V4SI, INT) DEF_FUNCTION_TYPE (V4SI, V4SI, PCINT, V4DI, V4SI, INT) DEF_FUNCTION_TYPE (V8SI, V8SI, PCINT, V4DI, V8SI, INT) +DEF_FUNCTION_TYPE (V16SF, V16SF, PCFLOAT, V16SI, HI, INT) +DEF_FUNCTION_TYPE (V16SF, V16SF, PCFLOAT, V8DI, HI, INT) +DEF_FUNCTION_TYPE (V8DF, V8DF, PCDOUBLE, V8SI, QI, INT) +DEF_FUNCTION_TYPE (V8DF, V8DF, PCDOUBLE, V16SI, QI, INT) +DEF_FUNCTION_TYPE (V8SF, V8SF, PCFLOAT, V8DI, QI, INT) +DEF_FUNCTION_TYPE (V8DF, V8DF, PCDOUBLE, V8DI, QI, INT) +DEF_FUNCTION_TYPE (V16SI, V16SI, PCINT, V16SI, HI, INT) +DEF_FUNCTION_TYPE (V16SI, V16SI, PCINT, V8DI, HI, INT) +DEF_FUNCTION_TYPE (V8DI, V8DI, PCINT64, V8SI, QI, INT) +DEF_FUNCTION_TYPE (V8DI, V8DI, PCINT64, V16SI, QI, INT) +DEF_FUNCTION_TYPE (V8SI, V8SI, PCINT, V8DI, QI, INT) +DEF_FUNCTION_TYPE (V8DI, V8DI, PCINT64, V8DI, QI, INT) +DEF_FUNCTION_TYPE (VOID, PFLOAT, HI, V16SI, V16SF, INT) +DEF_FUNCTION_TYPE (VOID, PDOUBLE, QI, V8SI, V8DF, INT) +DEF_FUNCTION_TYPE (VOID, PFLOAT, QI, V8DI, V8SF, INT) +DEF_FUNCTION_TYPE (VOID, PDOUBLE, QI, V8DI, V8DF, INT) +DEF_FUNCTION_TYPE (VOID, PINT, HI, V16SI, V16SI, INT) +DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V8SI, V8DI, INT) +DEF_FUNCTION_TYPE (VOID, PINT, QI, V8DI, V8SI, INT) +DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V8DI, V8DI, INT) + +DEF_FUNCTION_TYPE (VOID, HI, V16SI, PCINT, INT, INT) +DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCINT, INT, INT) + DEF_FUNCTION_TYPE_ALIAS (V2DF_FTYPE_V2DF, ROUND) DEF_FUNCTION_TYPE_ALIAS (V4DF_FTYPE_V4DF, ROUND) DEF_FUNCTION_TYPE_ALIAS (V4SF_FTYPE_V4SF, ROUND) @@ -479,6 +737,7 @@ DEF_FUNCTION_TYPE_ALIAS (V8SF_FTYPE_V8SF, ROUND) DEF_FUNCTION_TYPE_ALIAS (V4SI_FTYPE_V2DF_V2DF, ROUND) DEF_FUNCTION_TYPE_ALIAS (V8SI_FTYPE_V4DF_V4DF, ROUND) +DEF_FUNCTION_TYPE_ALIAS (V16SI_FTYPE_V8DF_V8DF, ROUND) DEF_FUNCTION_TYPE_ALIAS (V4SI_FTYPE_V4SF, ROUND) DEF_FUNCTION_TYPE_ALIAS (V8SI_FTYPE_V8SF, ROUND) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index dd48cc51656..95ebf52d2b5 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -27922,12 +27922,334 @@ enum ix86_builtins IX86_BUILTIN_GATHERDIV4SI, IX86_BUILTIN_GATHERDIV8SI, + /* AVX512F */ + IX86_BUILTIN_ADDPD512, + IX86_BUILTIN_ADDPS512, + IX86_BUILTIN_ALIGND512, + IX86_BUILTIN_ALIGNQ512, + IX86_BUILTIN_BLENDMD512, + IX86_BUILTIN_BLENDMPD512, + IX86_BUILTIN_BLENDMPS512, + IX86_BUILTIN_BLENDMQ512, + IX86_BUILTIN_BROADCASTF32X4_512, + IX86_BUILTIN_BROADCASTF64X4_512, + IX86_BUILTIN_BROADCASTI32X4_512, + IX86_BUILTIN_BROADCASTI64X4_512, + IX86_BUILTIN_BROADCASTSD512, + IX86_BUILTIN_BROADCASTSS512, + IX86_BUILTIN_CMPD512, + IX86_BUILTIN_CMPPD512, + IX86_BUILTIN_CMPPS512, + IX86_BUILTIN_CMPQ512, + IX86_BUILTIN_CMPSD_MASK, + IX86_BUILTIN_CMPSS_MASK, + IX86_BUILTIN_COMIDF, + IX86_BUILTIN_COMISF, + IX86_BUILTIN_COMPRESSPD512, + IX86_BUILTIN_COMPRESSPDSTORE512, + IX86_BUILTIN_COMPRESSPS512, + IX86_BUILTIN_COMPRESSPSSTORE512, + IX86_BUILTIN_CVTDQ2PD512, + IX86_BUILTIN_CVTDQ2PS512, + IX86_BUILTIN_CVTPD2DQ512, + IX86_BUILTIN_CVTPD2PS512, + IX86_BUILTIN_CVTPD2UDQ512, + IX86_BUILTIN_CVTPH2PS512, + IX86_BUILTIN_CVTPS2DQ512, + IX86_BUILTIN_CVTPS2PD512, + IX86_BUILTIN_CVTPS2PH512, + IX86_BUILTIN_CVTPS2UDQ512, + IX86_BUILTIN_CVTSI2SD64, + IX86_BUILTIN_CVTSI2SS32, + IX86_BUILTIN_CVTSI2SS64, + IX86_BUILTIN_CVTTPD2DQ512, + IX86_BUILTIN_CVTTPD2UDQ512, + IX86_BUILTIN_CVTTPS2DQ512, + IX86_BUILTIN_CVTTPS2UDQ512, + IX86_BUILTIN_CVTUDQ2PD512, + IX86_BUILTIN_CVTUDQ2PS512, + IX86_BUILTIN_CVTUSI2SD32, + IX86_BUILTIN_CVTUSI2SD64, + IX86_BUILTIN_CVTUSI2SS32, + IX86_BUILTIN_CVTUSI2SS64, + IX86_BUILTIN_DIVPD512, + IX86_BUILTIN_DIVPS512, + IX86_BUILTIN_EXPANDPD512, + IX86_BUILTIN_EXPANDPD512Z, + IX86_BUILTIN_EXPANDPDLOAD512, + IX86_BUILTIN_EXPANDPDLOAD512Z, + IX86_BUILTIN_EXPANDPS512, + IX86_BUILTIN_EXPANDPS512Z, + IX86_BUILTIN_EXPANDPSLOAD512, + IX86_BUILTIN_EXPANDPSLOAD512Z, + IX86_BUILTIN_EXTRACTF32X4, + IX86_BUILTIN_EXTRACTF64X4, + IX86_BUILTIN_EXTRACTI32X4, + IX86_BUILTIN_EXTRACTI64X4, + IX86_BUILTIN_FIXUPIMMPD512_MASK, + IX86_BUILTIN_FIXUPIMMPD512_MASKZ, + IX86_BUILTIN_FIXUPIMMPS512_MASK, + IX86_BUILTIN_FIXUPIMMPS512_MASKZ, + IX86_BUILTIN_FIXUPIMMSD128_MASK, + IX86_BUILTIN_FIXUPIMMSD128_MASKZ, + IX86_BUILTIN_FIXUPIMMSS128_MASK, + IX86_BUILTIN_FIXUPIMMSS128_MASKZ, + IX86_BUILTIN_GETEXPPD512, + IX86_BUILTIN_GETEXPPS512, + IX86_BUILTIN_GETMANTPD512, + IX86_BUILTIN_GETMANTPS512, + IX86_BUILTIN_INSERTF32X4, + IX86_BUILTIN_INSERTF64X4, + IX86_BUILTIN_INSERTI32X4, + IX86_BUILTIN_INSERTI64X4, + IX86_BUILTIN_LOADAPD512, + IX86_BUILTIN_LOADAPS512, + IX86_BUILTIN_LOADDQUDI512, + IX86_BUILTIN_LOADDQUSI512, + IX86_BUILTIN_LOADUPD512, + IX86_BUILTIN_LOADUPS512, + IX86_BUILTIN_MAXPD512, + IX86_BUILTIN_MAXPS512, + IX86_BUILTIN_MINPD512, + IX86_BUILTIN_MINPS512, + IX86_BUILTIN_MOVAPD512, + IX86_BUILTIN_MOVAPS512, + IX86_BUILTIN_MOVDDUP512, + IX86_BUILTIN_MOVDQA32LOAD512, + IX86_BUILTIN_MOVDQA32STORE512, + IX86_BUILTIN_MOVDQA32_512, + IX86_BUILTIN_MOVDQA64LOAD512, + IX86_BUILTIN_MOVDQA64STORE512, + IX86_BUILTIN_MOVDQA64_512, + IX86_BUILTIN_MOVNTDQ512, + IX86_BUILTIN_MOVNTPD512, + IX86_BUILTIN_MOVNTPS512, + IX86_BUILTIN_MOVSHDUP512, + IX86_BUILTIN_MOVSLDUP512, + IX86_BUILTIN_MULPD512, + IX86_BUILTIN_MULPS512, + IX86_BUILTIN_PABSD512, + IX86_BUILTIN_PABSQ512, + IX86_BUILTIN_PADDD512, + IX86_BUILTIN_PADDQ512, + IX86_BUILTIN_PANDD512, + IX86_BUILTIN_PANDND512, + IX86_BUILTIN_PANDNQ512, + IX86_BUILTIN_PANDQ512, + IX86_BUILTIN_PBROADCASTD512, + IX86_BUILTIN_PBROADCASTD512_GPR, + IX86_BUILTIN_PBROADCASTMB512, + IX86_BUILTIN_PBROADCASTMW512, + IX86_BUILTIN_PBROADCASTQ512, + IX86_BUILTIN_PBROADCASTQ512_GPR, + IX86_BUILTIN_PBROADCASTQ512_MEM, + IX86_BUILTIN_PCMPEQD512_MASK, + IX86_BUILTIN_PCMPEQQ512_MASK, + IX86_BUILTIN_PCMPGTD512_MASK, + IX86_BUILTIN_PCMPGTQ512_MASK, + IX86_BUILTIN_PCOMPRESSD512, + IX86_BUILTIN_PCOMPRESSDSTORE512, + IX86_BUILTIN_PCOMPRESSQ512, + IX86_BUILTIN_PCOMPRESSQSTORE512, + IX86_BUILTIN_PEXPANDD512, + IX86_BUILTIN_PEXPANDD512Z, + IX86_BUILTIN_PEXPANDDLOAD512, + IX86_BUILTIN_PEXPANDDLOAD512Z, + IX86_BUILTIN_PEXPANDQ512, + IX86_BUILTIN_PEXPANDQ512Z, + IX86_BUILTIN_PEXPANDQLOAD512, + IX86_BUILTIN_PEXPANDQLOAD512Z, + IX86_BUILTIN_PMAXSD512, + IX86_BUILTIN_PMAXSQ512, + IX86_BUILTIN_PMAXUD512, + IX86_BUILTIN_PMAXUQ512, + IX86_BUILTIN_PMINSD512, + IX86_BUILTIN_PMINSQ512, + IX86_BUILTIN_PMINUD512, + IX86_BUILTIN_PMINUQ512, + IX86_BUILTIN_PMOVDB512, + IX86_BUILTIN_PMOVDW512, + IX86_BUILTIN_PMOVQB512, + IX86_BUILTIN_PMOVQD512, + IX86_BUILTIN_PMOVQW512, + IX86_BUILTIN_PMOVSDB512, + IX86_BUILTIN_PMOVSDW512, + IX86_BUILTIN_PMOVSQB512, + IX86_BUILTIN_PMOVSQD512, + IX86_BUILTIN_PMOVSQW512, + IX86_BUILTIN_PMOVSXBD512, + IX86_BUILTIN_PMOVSXBQ512, + IX86_BUILTIN_PMOVSXDQ512, + IX86_BUILTIN_PMOVSXWD512, + IX86_BUILTIN_PMOVSXWQ512, + IX86_BUILTIN_PMOVUSDB512, + IX86_BUILTIN_PMOVUSDW512, + IX86_BUILTIN_PMOVUSQB512, + IX86_BUILTIN_PMOVUSQD512, + IX86_BUILTIN_PMOVUSQW512, + IX86_BUILTIN_PMOVZXBD512, + IX86_BUILTIN_PMOVZXBQ512, + IX86_BUILTIN_PMOVZXDQ512, + IX86_BUILTIN_PMOVZXWD512, + IX86_BUILTIN_PMOVZXWQ512, + IX86_BUILTIN_PMULDQ512, + IX86_BUILTIN_PMULLD512, + IX86_BUILTIN_PMULUDQ512, + IX86_BUILTIN_PORD512, + IX86_BUILTIN_PORQ512, + IX86_BUILTIN_PROLD512, + IX86_BUILTIN_PROLQ512, + IX86_BUILTIN_PROLVD512, + IX86_BUILTIN_PROLVQ512, + IX86_BUILTIN_PRORD512, + IX86_BUILTIN_PRORQ512, + IX86_BUILTIN_PRORVD512, + IX86_BUILTIN_PRORVQ512, + IX86_BUILTIN_PSHUFD512, + IX86_BUILTIN_PSLLD512, + IX86_BUILTIN_PSLLDI512, + IX86_BUILTIN_PSLLQ512, + IX86_BUILTIN_PSLLQI512, + IX86_BUILTIN_PSLLVV16SI, + IX86_BUILTIN_PSLLVV8DI, + IX86_BUILTIN_PSRAD512, + IX86_BUILTIN_PSRADI512, + IX86_BUILTIN_PSRAQ512, + IX86_BUILTIN_PSRAQI512, + IX86_BUILTIN_PSRAVV16SI, + IX86_BUILTIN_PSRAVV8DI, + IX86_BUILTIN_PSRLD512, + IX86_BUILTIN_PSRLDI512, + IX86_BUILTIN_PSRLQ512, + IX86_BUILTIN_PSRLQI512, + IX86_BUILTIN_PSRLVV16SI, + IX86_BUILTIN_PSRLVV8DI, + IX86_BUILTIN_PSUBD512, + IX86_BUILTIN_PSUBQ512, + IX86_BUILTIN_PTESTMD512, + IX86_BUILTIN_PTESTMQ512, + IX86_BUILTIN_PTESTNMD512, + IX86_BUILTIN_PTESTNMQ512, + IX86_BUILTIN_PUNPCKHDQ512, + IX86_BUILTIN_PUNPCKHQDQ512, + IX86_BUILTIN_PUNPCKLDQ512, + IX86_BUILTIN_PUNPCKLQDQ512, + IX86_BUILTIN_PXORD512, + IX86_BUILTIN_PXORQ512, + IX86_BUILTIN_RCP14PD512, + IX86_BUILTIN_RCP14PS512, + IX86_BUILTIN_RNDSCALEPD, + IX86_BUILTIN_RNDSCALEPS, + IX86_BUILTIN_RSQRT14PD512, + IX86_BUILTIN_RSQRT14PS512, + IX86_BUILTIN_SCALEFPD512, + IX86_BUILTIN_SCALEFPS512, + IX86_BUILTIN_SHUFPD512, + IX86_BUILTIN_SHUFPS512, + IX86_BUILTIN_SHUF_F32x4, + IX86_BUILTIN_SHUF_F64x2, + IX86_BUILTIN_SHUF_I32x4, + IX86_BUILTIN_SHUF_I64x2, IX86_BUILTIN_SQRTPD512, - IX86_BUILTIN_EXP2PS, + IX86_BUILTIN_SQRTPD512_MASK, + IX86_BUILTIN_SQRTPS512_MASK, IX86_BUILTIN_SQRTPS_NR512, - - /* Alternate 4 element gather for the vectorizer where - all operands are 32-byte wide. */ + IX86_BUILTIN_STOREAPD512, + IX86_BUILTIN_STOREAPS512, + IX86_BUILTIN_STOREDQUDI512, + IX86_BUILTIN_STOREDQUSI512, + IX86_BUILTIN_STOREUPD512, + IX86_BUILTIN_STOREUPS512, + IX86_BUILTIN_SUBPD512, + IX86_BUILTIN_SUBPS512, + IX86_BUILTIN_UCMPD512, + IX86_BUILTIN_UCMPQ512, + IX86_BUILTIN_UNPCKHPD512, + IX86_BUILTIN_UNPCKHPS512, + IX86_BUILTIN_UNPCKLPD512, + IX86_BUILTIN_UNPCKLPS512, + IX86_BUILTIN_VCVTSD2SI32, + IX86_BUILTIN_VCVTSD2SI64, + IX86_BUILTIN_VCVTSD2USI32, + IX86_BUILTIN_VCVTSD2USI64, + IX86_BUILTIN_VCVTSS2SI32, + IX86_BUILTIN_VCVTSS2SI64, + IX86_BUILTIN_VCVTSS2USI32, + IX86_BUILTIN_VCVTSS2USI64, + IX86_BUILTIN_VCVTTSD2SI32, + IX86_BUILTIN_VCVTTSD2SI64, + IX86_BUILTIN_VCVTTSD2USI32, + IX86_BUILTIN_VCVTTSD2USI64, + IX86_BUILTIN_VCVTTSS2SI32, + IX86_BUILTIN_VCVTTSS2SI64, + IX86_BUILTIN_VCVTTSS2USI32, + IX86_BUILTIN_VCVTTSS2USI64, + IX86_BUILTIN_VFMADDPD512_MASK, + IX86_BUILTIN_VFMADDPD512_MASK3, + IX86_BUILTIN_VFMADDPD512_MASKZ, + IX86_BUILTIN_VFMADDPS512_MASK, + IX86_BUILTIN_VFMADDPS512_MASK3, + IX86_BUILTIN_VFMADDPS512_MASKZ, + IX86_BUILTIN_VFMADDSUBPD512_MASK, + IX86_BUILTIN_VFMADDSUBPD512_MASK3, + IX86_BUILTIN_VFMADDSUBPD512_MASKZ, + IX86_BUILTIN_VFMADDSUBPS512_MASK, + IX86_BUILTIN_VFMADDSUBPS512_MASK3, + IX86_BUILTIN_VFMADDSUBPS512_MASKZ, + IX86_BUILTIN_VFMSUBADDPD512_MASK3, + IX86_BUILTIN_VFMSUBADDPS512_MASK3, + IX86_BUILTIN_VFMSUBPD512_MASK3, + IX86_BUILTIN_VFMSUBPS512_MASK3, + IX86_BUILTIN_VFNMADDPD512_MASK, + IX86_BUILTIN_VFNMADDPS512_MASK, + IX86_BUILTIN_VFNMSUBPD512_MASK, + IX86_BUILTIN_VFNMSUBPD512_MASK3, + IX86_BUILTIN_VFNMSUBPS512_MASK, + IX86_BUILTIN_VFNMSUBPS512_MASK3, + IX86_BUILTIN_VPCLZCNTD512, + IX86_BUILTIN_VPCLZCNTQ512, + IX86_BUILTIN_VPCONFLICTD512, + IX86_BUILTIN_VPCONFLICTQ512, + IX86_BUILTIN_VPERMDF512, + IX86_BUILTIN_VPERMDI512, + IX86_BUILTIN_VPERMI2VARD512, + IX86_BUILTIN_VPERMI2VARPD512, + IX86_BUILTIN_VPERMI2VARPS512, + IX86_BUILTIN_VPERMI2VARQ512, + IX86_BUILTIN_VPERMILPD512, + IX86_BUILTIN_VPERMILPS512, + IX86_BUILTIN_VPERMILVARPD512, + IX86_BUILTIN_VPERMILVARPS512, + IX86_BUILTIN_VPERMT2VARD512, + IX86_BUILTIN_VPERMT2VARD512_MASKZ, + IX86_BUILTIN_VPERMT2VARPD512, + IX86_BUILTIN_VPERMT2VARPD512_MASKZ, + IX86_BUILTIN_VPERMT2VARPS512, + IX86_BUILTIN_VPERMT2VARPS512_MASKZ, + IX86_BUILTIN_VPERMT2VARQ512, + IX86_BUILTIN_VPERMT2VARQ512_MASKZ, + IX86_BUILTIN_VPERMVARDF512, + IX86_BUILTIN_VPERMVARDI512, + IX86_BUILTIN_VPERMVARSF512, + IX86_BUILTIN_VPERMVARSI512, + IX86_BUILTIN_VTERNLOGD512_MASK, + IX86_BUILTIN_VTERNLOGD512_MASKZ, + IX86_BUILTIN_VTERNLOGQ512_MASK, + IX86_BUILTIN_VTERNLOGQ512_MASKZ, + + /* Mask arithmetic operations */ + IX86_BUILTIN_KAND16, + IX86_BUILTIN_KANDN16, + IX86_BUILTIN_KNOT16, + IX86_BUILTIN_KOR16, + IX86_BUILTIN_KORTESTC16, + IX86_BUILTIN_KORTESTZ16, + IX86_BUILTIN_KUNPCKBW, + IX86_BUILTIN_KXNOR16, + IX86_BUILTIN_KXOR16, + + /* Alternate 4 and 8 element gather/scatter for the vectorizer + where all operands are 32-byte or 64-byte wide respectively. */ IX86_BUILTIN_GATHERALTSIV4DF, IX86_BUILTIN_GATHERALTDIV8SF, IX86_BUILTIN_GATHERALTSIV4DI, @@ -27943,6 +28265,28 @@ enum ix86_builtins IX86_BUILTIN_GATHER3SIV16SF, IX86_BUILTIN_GATHER3SIV16SI, IX86_BUILTIN_GATHER3SIV8DF, + IX86_BUILTIN_GATHER3SIV8DI, + IX86_BUILTIN_SCATTERDIV16SF, + IX86_BUILTIN_SCATTERDIV16SI, + IX86_BUILTIN_SCATTERDIV8DF, + IX86_BUILTIN_SCATTERDIV8DI, + IX86_BUILTIN_SCATTERSIV16SF, + IX86_BUILTIN_SCATTERSIV16SI, + IX86_BUILTIN_SCATTERSIV8DF, + IX86_BUILTIN_SCATTERSIV8DI, + + /* AVX512PF */ + IX86_BUILTIN_GATHERPFDPS, + IX86_BUILTIN_GATHERPFQPS, + IX86_BUILTIN_SCATTERPFDPS, + IX86_BUILTIN_SCATTERPFQPS, + IX86_BUILTIN_EXP2PD_MASK, + IX86_BUILTIN_EXP2PS_MASK, + IX86_BUILTIN_EXP2PS, + IX86_BUILTIN_RCP28PD, + IX86_BUILTIN_RCP28PS, + IX86_BUILTIN_RSQRT28PD, + IX86_BUILTIN_RSQRT28PS, /* TFmode support builtins. */ IX86_BUILTIN_INFQ, @@ -28497,6 +28841,39 @@ static const struct builtin_description bdesc_special_args[] = { OPTION_MASK_ISA_AVX2, CODE_FOR_avx2_maskstored256, "__builtin_ia32_maskstored256", IX86_BUILTIN_MASKSTORED256, UNKNOWN, (int) VOID_FTYPE_PV8SI_V8SI_V8SI }, { OPTION_MASK_ISA_AVX2, CODE_FOR_avx2_maskstoreq256, "__builtin_ia32_maskstoreq256", IX86_BUILTIN_MASKSTOREQ256, UNKNOWN, (int) VOID_FTYPE_PV4DI_V4DI_V4DI }, + /* AVX512F */ + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_compressstorev16sf_mask, "__builtin_ia32_compressstoresf512_mask", IX86_BUILTIN_COMPRESSPSSTORE512, UNKNOWN, (int) VOID_FTYPE_PV16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_compressstorev16si_mask, "__builtin_ia32_compressstoresi512_mask", IX86_BUILTIN_PCOMPRESSDSTORE512, UNKNOWN, (int) VOID_FTYPE_PV16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_compressstorev8df_mask, "__builtin_ia32_compressstoredf512_mask", IX86_BUILTIN_COMPRESSPDSTORE512, UNKNOWN, (int) VOID_FTYPE_PV8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_compressstorev8di_mask, "__builtin_ia32_compressstoredi512_mask", IX86_BUILTIN_PCOMPRESSQSTORE512, UNKNOWN, (int) VOID_FTYPE_PV8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv16sf_mask, "__builtin_ia32_expandloadsf512_mask", IX86_BUILTIN_EXPANDPSLOAD512, UNKNOWN, (int) V16SF_FTYPE_PCV16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv16sf_maskz, "__builtin_ia32_expandloadsf512_maskz", IX86_BUILTIN_EXPANDPSLOAD512Z, UNKNOWN, (int) V16SF_FTYPE_PCV16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv16si_mask, "__builtin_ia32_expandloadsi512_mask", IX86_BUILTIN_PEXPANDDLOAD512, UNKNOWN, (int) V16SI_FTYPE_PCV16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv16si_maskz, "__builtin_ia32_expandloadsi512_maskz", IX86_BUILTIN_PEXPANDDLOAD512Z, UNKNOWN, (int) V16SI_FTYPE_PCV16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv8df_mask, "__builtin_ia32_expandloaddf512_mask", IX86_BUILTIN_EXPANDPDLOAD512, UNKNOWN, (int) V8DF_FTYPE_PCV8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv8df_maskz, "__builtin_ia32_expandloaddf512_maskz", IX86_BUILTIN_EXPANDPDLOAD512Z, UNKNOWN, (int) V8DF_FTYPE_PCV8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv8di_mask, "__builtin_ia32_expandloaddi512_mask", IX86_BUILTIN_PEXPANDQLOAD512, UNKNOWN, (int) V8DI_FTYPE_PCV8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv8di_maskz, "__builtin_ia32_expandloaddi512_maskz", IX86_BUILTIN_PEXPANDQLOAD512Z, UNKNOWN, (int) V8DI_FTYPE_PCV8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loaddquv16si_mask, "__builtin_ia32_loaddqusi512_mask", IX86_BUILTIN_LOADDQUSI512, UNKNOWN, (int) V16SI_FTYPE_PCV16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loaddquv8di_mask, "__builtin_ia32_loaddqudi512_mask", IX86_BUILTIN_LOADDQUDI512, UNKNOWN, (int) V8DI_FTYPE_PCV8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loadupd512_mask, "__builtin_ia32_loadupd512_mask", IX86_BUILTIN_LOADUPD512, UNKNOWN, (int) V8DF_FTYPE_PCV8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loadups512_mask, "__builtin_ia32_loadups512_mask", IX86_BUILTIN_LOADUPS512, UNKNOWN, (int) V16SF_FTYPE_PCV16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loadv16sf_mask, "__builtin_ia32_loadaps512_mask", IX86_BUILTIN_LOADAPS512, UNKNOWN, (int) V16SF_FTYPE_PCV16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loadv16si_mask, "__builtin_ia32_movdqa32load512_mask", IX86_BUILTIN_MOVDQA32LOAD512, UNKNOWN, (int) V16SI_FTYPE_PCV16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loadv8df_mask, "__builtin_ia32_loadapd512_mask", IX86_BUILTIN_LOADAPD512, UNKNOWN, (int) V8DF_FTYPE_PCV8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loadv8di_mask, "__builtin_ia32_movdqa64load512_mask", IX86_BUILTIN_MOVDQA64LOAD512, UNKNOWN, (int) V8DI_FTYPE_PCV8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_movntv16sf, "__builtin_ia32_movntps512", IX86_BUILTIN_MOVNTPS512, UNKNOWN, (int) VOID_FTYPE_PFLOAT_V16SF }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_movntv8df, "__builtin_ia32_movntpd512", IX86_BUILTIN_MOVNTPD512, UNKNOWN, (int) VOID_FTYPE_PDOUBLE_V8DF }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_movntv8di, "__builtin_ia32_movntdq512", IX86_BUILTIN_MOVNTDQ512, UNKNOWN, (int) VOID_FTYPE_PV8DI_V8DI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_storedquv16si_mask, "__builtin_ia32_storedqusi512_mask", IX86_BUILTIN_STOREDQUSI512, UNKNOWN, (int) VOID_FTYPE_PV16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_storedquv8di_mask, "__builtin_ia32_storedqudi512_mask", IX86_BUILTIN_STOREDQUDI512, UNKNOWN, (int) VOID_FTYPE_PV8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_storeupd512_mask, "__builtin_ia32_storeupd512_mask", IX86_BUILTIN_STOREUPD512, UNKNOWN, (int) VOID_FTYPE_PV8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_storeups512_mask, "__builtin_ia32_storeups512_mask", IX86_BUILTIN_STOREUPS512, UNKNOWN, (int) VOID_FTYPE_PV16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_storev16sf_mask, "__builtin_ia32_storeaps512_mask", IX86_BUILTIN_STOREAPS512, UNKNOWN, (int) VOID_FTYPE_PV16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_storev16si_mask, "__builtin_ia32_movdqa32store512_mask", IX86_BUILTIN_MOVDQA32STORE512, UNKNOWN, (int) VOID_FTYPE_PV16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_storev8df_mask, "__builtin_ia32_storeapd512_mask", IX86_BUILTIN_STOREAPD512, UNKNOWN, (int) VOID_FTYPE_PV8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_storev8di_mask, "__builtin_ia32_movdqa64store512_mask", IX86_BUILTIN_MOVDQA64STORE512, UNKNOWN, (int) VOID_FTYPE_PV8DI_V8DI_QI }, + { OPTION_MASK_ISA_LWP, CODE_FOR_lwp_llwpcb, "__builtin_ia32_llwpcb", IX86_BUILTIN_LLWPCB, UNKNOWN, (int) VOID_FTYPE_PVOID }, { OPTION_MASK_ISA_LWP, CODE_FOR_lwp_slwpcb, "__builtin_ia32_slwpcb", IX86_BUILTIN_SLWPCB, UNKNOWN, (int) PVOID_FTYPE_VOID }, { OPTION_MASK_ISA_LWP, CODE_FOR_lwp_lwpvalsi3, "__builtin_ia32_lwpval32", IX86_BUILTIN_LWPVAL32, UNKNOWN, (int) VOID_FTYPE_UINT_UINT_UINT }, @@ -29348,6 +29725,322 @@ static const struct builtin_description bdesc_args[] = { OPTION_MASK_ISA_BMI2, CODE_FOR_bmi2_pdep_di3, "__builtin_ia32_pdep_di", IX86_BUILTIN_PDEP64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, { OPTION_MASK_ISA_BMI2, CODE_FOR_bmi2_pext_si3, "__builtin_ia32_pext_si", IX86_BUILTIN_PEXT32, UNKNOWN, (int) UINT_FTYPE_UINT_UINT }, { OPTION_MASK_ISA_BMI2, CODE_FOR_bmi2_pext_di3, "__builtin_ia32_pext_di", IX86_BUILTIN_PEXT64, UNKNOWN, (int) UINT64_FTYPE_UINT64_UINT64 }, + + /* AVX512F */ + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_alignv16si_mask, "__builtin_ia32_alignd512_mask", IX86_BUILTIN_ALIGND512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_alignv8di_mask, "__builtin_ia32_alignq512_mask", IX86_BUILTIN_ALIGNQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_blendmv16si, "__builtin_ia32_blendmd_512_mask", IX86_BUILTIN_BLENDMD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_blendmv8df, "__builtin_ia32_blendmpd_512_mask", IX86_BUILTIN_BLENDMPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_blendmv16sf, "__builtin_ia32_blendmps_512_mask", IX86_BUILTIN_BLENDMPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_blendmv8di, "__builtin_ia32_blendmq_512_mask", IX86_BUILTIN_BLENDMQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_broadcastv16sf_mask, "__builtin_ia32_broadcastf32x4_512", IX86_BUILTIN_BROADCASTF32X4_512, UNKNOWN, (int) V16SF_FTYPE_V4SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_broadcastv8df_mask, "__builtin_ia32_broadcastf64x4_512", IX86_BUILTIN_BROADCASTF64X4_512, UNKNOWN, (int) V8DF_FTYPE_V4DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_broadcastv16si_mask, "__builtin_ia32_broadcasti32x4_512", IX86_BUILTIN_BROADCASTI32X4_512, UNKNOWN, (int) V16SI_FTYPE_V4SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_broadcastv8di_mask, "__builtin_ia32_broadcasti64x4_512", IX86_BUILTIN_BROADCASTI64X4_512, UNKNOWN, (int) V8DI_FTYPE_V4DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vec_dupv8df_mask, "__builtin_ia32_broadcastsd512", IX86_BUILTIN_BROADCASTSD512, UNKNOWN, (int) V8DF_FTYPE_V2DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vec_dupv16sf_mask, "__builtin_ia32_broadcastss512", IX86_BUILTIN_BROADCASTSS512, UNKNOWN, (int) V16SF_FTYPE_V4SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_cmpv16si3_mask, "__builtin_ia32_cmpd512_mask", IX86_BUILTIN_CMPD512, UNKNOWN, (int) HI_FTYPE_V16SI_V16SI_INT_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_cmpv8di3_mask, "__builtin_ia32_cmpq512_mask", IX86_BUILTIN_CMPQ512, UNKNOWN, (int) QI_FTYPE_V8DI_V8DI_INT_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_compressv8df_mask, "__builtin_ia32_compressdf512_mask", IX86_BUILTIN_COMPRESSPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_compressv16sf_mask, "__builtin_ia32_compresssf512_mask", IX86_BUILTIN_COMPRESSPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_floatv8siv8df2_mask, "__builtin_ia32_cvtdq2pd512_mask", IX86_BUILTIN_CVTDQ2PD512, UNKNOWN, (int) V8DF_FTYPE_V8SI_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vcvtps2ph512_mask, "__builtin_ia32_vcvtps2ph512_mask", IX86_BUILTIN_CVTPS2PH512, UNKNOWN, (int) V16HI_FTYPE_V16SF_INT_V16HI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ufloatv8siv8df_mask, "__builtin_ia32_cvtudq2pd512_mask", IX86_BUILTIN_CVTUDQ2PD512, UNKNOWN, (int) V8DF_FTYPE_V8SI_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_cvtusi2sd32, "__builtin_ia32_cvtusi2sd32", IX86_BUILTIN_CVTUSI2SD32, UNKNOWN, (int) V2DF_FTYPE_V2DF_UINT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv8df_mask, "__builtin_ia32_expanddf512_mask", IX86_BUILTIN_EXPANDPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv8df_maskz, "__builtin_ia32_expanddf512_maskz", IX86_BUILTIN_EXPANDPD512Z, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv16sf_mask, "__builtin_ia32_expandsf512_mask", IX86_BUILTIN_EXPANDPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv16sf_maskz, "__builtin_ia32_expandsf512_maskz", IX86_BUILTIN_EXPANDPS512Z, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vextractf32x4_mask, "__builtin_ia32_extractf32x4_mask", IX86_BUILTIN_EXTRACTF32X4, UNKNOWN, (int) V4SF_FTYPE_V16SF_INT_V4SF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vextractf64x4_mask, "__builtin_ia32_extractf64x4_mask", IX86_BUILTIN_EXTRACTF64X4, UNKNOWN, (int) V4DF_FTYPE_V8DF_INT_V4DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vextracti32x4_mask, "__builtin_ia32_extracti32x4_mask", IX86_BUILTIN_EXTRACTI32X4, UNKNOWN, (int) V4SI_FTYPE_V16SI_INT_V4SI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vextracti64x4_mask, "__builtin_ia32_extracti64x4_mask", IX86_BUILTIN_EXTRACTI64X4, UNKNOWN, (int) V4DI_FTYPE_V8DI_INT_V4DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vinsertf32x4_mask, "__builtin_ia32_insertf32x4_mask", IX86_BUILTIN_INSERTF32X4, UNKNOWN, (int) V16SF_FTYPE_V16SF_V4SF_INT_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vinsertf64x4_mask, "__builtin_ia32_insertf64x4_mask", IX86_BUILTIN_INSERTF64X4, UNKNOWN, (int) V8DF_FTYPE_V8DF_V4DF_INT_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vinserti32x4_mask, "__builtin_ia32_inserti32x4_mask", IX86_BUILTIN_INSERTI32X4, UNKNOWN, (int) V16SI_FTYPE_V16SI_V4SI_INT_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vinserti64x4_mask, "__builtin_ia32_inserti64x4_mask", IX86_BUILTIN_INSERTI64X4, UNKNOWN, (int) V8DI_FTYPE_V8DI_V4DI_INT_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loadv8df_mask, "__builtin_ia32_movapd512_mask", IX86_BUILTIN_MOVAPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loadv16sf_mask, "__builtin_ia32_movaps512_mask", IX86_BUILTIN_MOVAPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_movddup512_mask, "__builtin_ia32_movddup512_mask", IX86_BUILTIN_MOVDDUP512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loadv16si_mask, "__builtin_ia32_movdqa32_512_mask", IX86_BUILTIN_MOVDQA32_512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_loadv8di_mask, "__builtin_ia32_movdqa64_512_mask", IX86_BUILTIN_MOVDQA64_512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_movshdup512_mask, "__builtin_ia32_movshdup512_mask", IX86_BUILTIN_MOVSHDUP512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_movsldup512_mask, "__builtin_ia32_movsldup512_mask", IX86_BUILTIN_MOVSLDUP512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_absv16si2_mask, "__builtin_ia32_pabsd512_mask", IX86_BUILTIN_PABSD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_absv8di2_mask, "__builtin_ia32_pabsq512_mask", IX86_BUILTIN_PABSQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_addv16si3_mask, "__builtin_ia32_paddd512_mask", IX86_BUILTIN_PADDD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_addv8di3_mask, "__builtin_ia32_paddq512_mask", IX86_BUILTIN_PADDQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_andv16si3_mask, "__builtin_ia32_pandd512_mask", IX86_BUILTIN_PANDD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_andnotv16si3_mask, "__builtin_ia32_pandnd512_mask", IX86_BUILTIN_PANDND512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_andnotv8di3_mask, "__builtin_ia32_pandnq512_mask", IX86_BUILTIN_PANDNQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_andv8di3_mask, "__builtin_ia32_pandq512_mask", IX86_BUILTIN_PANDQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vec_dupv16si_mask, "__builtin_ia32_pbroadcastd512", IX86_BUILTIN_PBROADCASTD512, UNKNOWN, (int) V16SI_FTYPE_V4SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vec_dup_gprv16si_mask, "__builtin_ia32_pbroadcastd512_gpr_mask", IX86_BUILTIN_PBROADCASTD512_GPR, UNKNOWN, (int) V16SI_FTYPE_SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512CD, CODE_FOR_avx512cd_maskb_vec_dupv8di, "__builtin_ia32_broadcastmb512", IX86_BUILTIN_PBROADCASTMB512, UNKNOWN, (int) V8DI_FTYPE_QI }, + { OPTION_MASK_ISA_AVX512CD, CODE_FOR_avx512cd_maskw_vec_dupv16si, "__builtin_ia32_broadcastmw512", IX86_BUILTIN_PBROADCASTMW512, UNKNOWN, (int) V16SI_FTYPE_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vec_dupv8di_mask, "__builtin_ia32_pbroadcastq512", IX86_BUILTIN_PBROADCASTQ512, UNKNOWN, (int) V8DI_FTYPE_V2DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_avx512f_vec_dup_gprv8di_mask, "__builtin_ia32_pbroadcastq512_gpr_mask", IX86_BUILTIN_PBROADCASTQ512_GPR, UNKNOWN, (int) V8DI_FTYPE_DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F & ~OPTION_MASK_ISA_64BIT, CODE_FOR_avx512f_vec_dup_memv8di_mask, "__builtin_ia32_pbroadcastq512_mem_mask", IX86_BUILTIN_PBROADCASTQ512_MEM, UNKNOWN, (int) V8DI_FTYPE_DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_eqv16si3_mask, "__builtin_ia32_pcmpeqd512_mask", IX86_BUILTIN_PCMPEQD512_MASK, UNKNOWN, (int) HI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_eqv8di3_mask, "__builtin_ia32_pcmpeqq512_mask", IX86_BUILTIN_PCMPEQQ512_MASK, UNKNOWN, (int) QI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_gtv16si3_mask, "__builtin_ia32_pcmpgtd512_mask", IX86_BUILTIN_PCMPGTD512_MASK, UNKNOWN, (int) HI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_gtv8di3_mask, "__builtin_ia32_pcmpgtq512_mask", IX86_BUILTIN_PCMPGTQ512_MASK, UNKNOWN, (int) QI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_compressv16si_mask, "__builtin_ia32_compresssi512_mask", IX86_BUILTIN_PCOMPRESSD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_compressv8di_mask, "__builtin_ia32_compressdi512_mask", IX86_BUILTIN_PCOMPRESSQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv16si_mask, "__builtin_ia32_expandsi512_mask", IX86_BUILTIN_PEXPANDD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv16si_maskz, "__builtin_ia32_expandsi512_maskz", IX86_BUILTIN_PEXPANDD512Z, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv8di_mask, "__builtin_ia32_expanddi512_mask", IX86_BUILTIN_PEXPANDQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_expandv8di_maskz, "__builtin_ia32_expanddi512_maskz", IX86_BUILTIN_PEXPANDQ512Z, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_smaxv16si3_mask, "__builtin_ia32_pmaxsd512_mask", IX86_BUILTIN_PMAXSD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_smaxv8di3_mask, "__builtin_ia32_pmaxsq512_mask", IX86_BUILTIN_PMAXSQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_umaxv16si3_mask, "__builtin_ia32_pmaxud512_mask", IX86_BUILTIN_PMAXUD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_umaxv8di3_mask, "__builtin_ia32_pmaxuq512_mask", IX86_BUILTIN_PMAXUQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sminv16si3_mask, "__builtin_ia32_pminsd512_mask", IX86_BUILTIN_PMINSD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sminv8di3_mask, "__builtin_ia32_pminsq512_mask", IX86_BUILTIN_PMINSQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_uminv16si3_mask, "__builtin_ia32_pminud512_mask", IX86_BUILTIN_PMINUD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_uminv8di3_mask, "__builtin_ia32_pminuq512_mask", IX86_BUILTIN_PMINUQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_truncatev16siv16qi2_mask, "__builtin_ia32_pmovdb512_mask", IX86_BUILTIN_PMOVDB512, UNKNOWN, (int) V16QI_FTYPE_V16SI_V16QI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_truncatev16siv16hi2_mask, "__builtin_ia32_pmovdw512_mask", IX86_BUILTIN_PMOVDW512, UNKNOWN, (int) V16HI_FTYPE_V16SI_V16HI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_truncatev8div16qi2_mask, "__builtin_ia32_pmovqb512_mask", IX86_BUILTIN_PMOVQB512, UNKNOWN, (int) V16QI_FTYPE_V8DI_V16QI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_truncatev8div8si2_mask, "__builtin_ia32_pmovqd512_mask", IX86_BUILTIN_PMOVQD512, UNKNOWN, (int) V8SI_FTYPE_V8DI_V8SI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_truncatev8div8hi2_mask, "__builtin_ia32_pmovqw512_mask", IX86_BUILTIN_PMOVQW512, UNKNOWN, (int) V8HI_FTYPE_V8DI_V8HI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ss_truncatev16siv16qi2_mask, "__builtin_ia32_pmovsdb512_mask", IX86_BUILTIN_PMOVSDB512, UNKNOWN, (int) V16QI_FTYPE_V16SI_V16QI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ss_truncatev16siv16hi2_mask, "__builtin_ia32_pmovsdw512_mask", IX86_BUILTIN_PMOVSDW512, UNKNOWN, (int) V16HI_FTYPE_V16SI_V16HI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ss_truncatev8div16qi2_mask, "__builtin_ia32_pmovsqb512_mask", IX86_BUILTIN_PMOVSQB512, UNKNOWN, (int) V16QI_FTYPE_V8DI_V16QI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ss_truncatev8div8si2_mask, "__builtin_ia32_pmovsqd512_mask", IX86_BUILTIN_PMOVSQD512, UNKNOWN, (int) V8SI_FTYPE_V8DI_V8SI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ss_truncatev8div8hi2_mask, "__builtin_ia32_pmovsqw512_mask", IX86_BUILTIN_PMOVSQW512, UNKNOWN, (int) V8HI_FTYPE_V8DI_V8HI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sign_extendv16qiv16si2_mask, "__builtin_ia32_pmovsxbd512_mask", IX86_BUILTIN_PMOVSXBD512, UNKNOWN, (int) V16SI_FTYPE_V16QI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sign_extendv8qiv8di2_mask, "__builtin_ia32_pmovsxbq512_mask", IX86_BUILTIN_PMOVSXBQ512, UNKNOWN, (int) V8DI_FTYPE_V16QI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sign_extendv8siv8di2_mask, "__builtin_ia32_pmovsxdq512_mask", IX86_BUILTIN_PMOVSXDQ512, UNKNOWN, (int) V8DI_FTYPE_V8SI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sign_extendv16hiv16si2_mask, "__builtin_ia32_pmovsxwd512_mask", IX86_BUILTIN_PMOVSXWD512, UNKNOWN, (int) V16SI_FTYPE_V16HI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sign_extendv8hiv8di2_mask, "__builtin_ia32_pmovsxwq512_mask", IX86_BUILTIN_PMOVSXWQ512, UNKNOWN, (int) V8DI_FTYPE_V8HI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_us_truncatev16siv16qi2_mask, "__builtin_ia32_pmovusdb512_mask", IX86_BUILTIN_PMOVUSDB512, UNKNOWN, (int) V16QI_FTYPE_V16SI_V16QI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_us_truncatev16siv16hi2_mask, "__builtin_ia32_pmovusdw512_mask", IX86_BUILTIN_PMOVUSDW512, UNKNOWN, (int) V16HI_FTYPE_V16SI_V16HI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_us_truncatev8div16qi2_mask, "__builtin_ia32_pmovusqb512_mask", IX86_BUILTIN_PMOVUSQB512, UNKNOWN, (int) V16QI_FTYPE_V8DI_V16QI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_us_truncatev8div8si2_mask, "__builtin_ia32_pmovusqd512_mask", IX86_BUILTIN_PMOVUSQD512, UNKNOWN, (int) V8SI_FTYPE_V8DI_V8SI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_us_truncatev8div8hi2_mask, "__builtin_ia32_pmovusqw512_mask", IX86_BUILTIN_PMOVUSQW512, UNKNOWN, (int) V8HI_FTYPE_V8DI_V8HI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_zero_extendv16qiv16si2_mask, "__builtin_ia32_pmovzxbd512_mask", IX86_BUILTIN_PMOVZXBD512, UNKNOWN, (int) V16SI_FTYPE_V16QI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_zero_extendv8qiv8di2_mask, "__builtin_ia32_pmovzxbq512_mask", IX86_BUILTIN_PMOVZXBQ512, UNKNOWN, (int) V8DI_FTYPE_V16QI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_zero_extendv8siv8di2_mask, "__builtin_ia32_pmovzxdq512_mask", IX86_BUILTIN_PMOVZXDQ512, UNKNOWN, (int) V8DI_FTYPE_V8SI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_zero_extendv16hiv16si2_mask, "__builtin_ia32_pmovzxwd512_mask", IX86_BUILTIN_PMOVZXWD512, UNKNOWN, (int) V16SI_FTYPE_V16HI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_zero_extendv8hiv8di2_mask, "__builtin_ia32_pmovzxwq512_mask", IX86_BUILTIN_PMOVZXWQ512, UNKNOWN, (int) V8DI_FTYPE_V8HI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_vec_widen_smult_even_v16si_mask, "__builtin_ia32_pmuldq512_mask", IX86_BUILTIN_PMULDQ512, UNKNOWN, (int) V8DI_FTYPE_V16SI_V16SI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_mulv16si3_mask, "__builtin_ia32_pmulld512_mask" , IX86_BUILTIN_PMULLD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_vec_widen_umult_even_v16si_mask, "__builtin_ia32_pmuludq512_mask", IX86_BUILTIN_PMULUDQ512, UNKNOWN, (int) V8DI_FTYPE_V16SI_V16SI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_iorv16si3_mask, "__builtin_ia32_pord512_mask", IX86_BUILTIN_PORD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_iorv8di3_mask, "__builtin_ia32_porq512_mask", IX86_BUILTIN_PORQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rolv16si_mask, "__builtin_ia32_prold512_mask", IX86_BUILTIN_PROLD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_INT_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rolv8di_mask, "__builtin_ia32_prolq512_mask", IX86_BUILTIN_PROLQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_INT_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rolvv16si_mask, "__builtin_ia32_prolvd512_mask", IX86_BUILTIN_PROLVD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rolvv8di_mask, "__builtin_ia32_prolvq512_mask", IX86_BUILTIN_PROLVQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rorv16si_mask, "__builtin_ia32_prord512_mask", IX86_BUILTIN_PRORD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_INT_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rorv8di_mask, "__builtin_ia32_prorq512_mask", IX86_BUILTIN_PRORQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_INT_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rorvv16si_mask, "__builtin_ia32_prorvd512_mask", IX86_BUILTIN_PRORVD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rorvv8di_mask, "__builtin_ia32_prorvq512_mask", IX86_BUILTIN_PRORVQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_pshufdv3_mask, "__builtin_ia32_pshufd512_mask", IX86_BUILTIN_PSHUFD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_INT_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ashlv16si3_mask, "__builtin_ia32_pslld512_mask", IX86_BUILTIN_PSLLD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V4SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ashlv16si3_mask, "__builtin_ia32_pslldi512_mask", IX86_BUILTIN_PSLLDI512, UNKNOWN, (int) V16SI_FTYPE_V16SI_INT_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ashlv8di3_mask, "__builtin_ia32_psllq512_mask", IX86_BUILTIN_PSLLQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V2DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ashlv8di3_mask, "__builtin_ia32_psllqi512_mask", IX86_BUILTIN_PSLLQI512, UNKNOWN, (int) V8DI_FTYPE_V8DI_INT_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ashlvv16si_mask, "__builtin_ia32_psllv16si_mask", IX86_BUILTIN_PSLLVV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ashlvv8di_mask, "__builtin_ia32_psllv8di_mask", IX86_BUILTIN_PSLLVV8DI, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ashrv16si3_mask, "__builtin_ia32_psrad512_mask", IX86_BUILTIN_PSRAD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V4SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ashrv16si3_mask, "__builtin_ia32_psradi512_mask", IX86_BUILTIN_PSRADI512, UNKNOWN, (int) V16SI_FTYPE_V16SI_INT_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ashrv8di3_mask, "__builtin_ia32_psraq512_mask", IX86_BUILTIN_PSRAQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V2DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ashrv8di3_mask, "__builtin_ia32_psraqi512_mask", IX86_BUILTIN_PSRAQI512, UNKNOWN, (int) V8DI_FTYPE_V8DI_INT_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ashrvv16si_mask, "__builtin_ia32_psrav16si_mask", IX86_BUILTIN_PSRAVV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ashrvv8di_mask, "__builtin_ia32_psrav8di_mask", IX86_BUILTIN_PSRAVV8DI, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_lshrv16si3_mask, "__builtin_ia32_psrld512_mask", IX86_BUILTIN_PSRLD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V4SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_lshrv16si3_mask, "__builtin_ia32_psrldi512_mask", IX86_BUILTIN_PSRLDI512, UNKNOWN, (int) V16SI_FTYPE_V16SI_INT_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_lshrv8di3_mask, "__builtin_ia32_psrlq512_mask", IX86_BUILTIN_PSRLQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V2DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_lshrv8di3_mask, "__builtin_ia32_psrlqi512_mask", IX86_BUILTIN_PSRLQI512, UNKNOWN, (int) V8DI_FTYPE_V8DI_INT_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_lshrvv16si_mask, "__builtin_ia32_psrlv16si_mask", IX86_BUILTIN_PSRLVV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_lshrvv8di_mask, "__builtin_ia32_psrlv8di_mask", IX86_BUILTIN_PSRLVV8DI, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_subv16si3_mask, "__builtin_ia32_psubd512_mask", IX86_BUILTIN_PSUBD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_subv8di3_mask, "__builtin_ia32_psubq512_mask", IX86_BUILTIN_PSUBQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_testmv16si3_mask, "__builtin_ia32_ptestmd512", IX86_BUILTIN_PTESTMD512, UNKNOWN, (int) HI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_testmv8di3_mask, "__builtin_ia32_ptestmq512", IX86_BUILTIN_PTESTMQ512, UNKNOWN, (int) QI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512CD, CODE_FOR_avx512f_testnmv16si3_mask, "__builtin_ia32_ptestnmd512", IX86_BUILTIN_PTESTNMD512, UNKNOWN, (int) HI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512CD, CODE_FOR_avx512f_testnmv8di3_mask, "__builtin_ia32_ptestnmq512", IX86_BUILTIN_PTESTNMQ512, UNKNOWN, (int) QI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_interleave_highv16si_mask, "__builtin_ia32_punpckhdq512_mask", IX86_BUILTIN_PUNPCKHDQ512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_interleave_highv8di_mask, "__builtin_ia32_punpckhqdq512_mask", IX86_BUILTIN_PUNPCKHQDQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_interleave_lowv16si_mask, "__builtin_ia32_punpckldq512_mask", IX86_BUILTIN_PUNPCKLDQ512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_interleave_lowv8di_mask, "__builtin_ia32_punpcklqdq512_mask", IX86_BUILTIN_PUNPCKLQDQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_xorv16si3_mask, "__builtin_ia32_pxord512_mask", IX86_BUILTIN_PXORD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_xorv8di3_mask, "__builtin_ia32_pxorq512_mask", IX86_BUILTIN_PXORQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_rcp14v8df_mask, "__builtin_ia32_rcp14pd512_mask", IX86_BUILTIN_RCP14PD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_rcp14v16sf_mask, "__builtin_ia32_rcp14ps512_mask", IX86_BUILTIN_RCP14PS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_rsqrt14v8df_mask, "__builtin_ia32_rsqrt14pd512_mask", IX86_BUILTIN_RSQRT14PD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_rsqrt14v16sf_mask, "__builtin_ia32_rsqrt14ps512_mask", IX86_BUILTIN_RSQRT14PS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_shufpd512_mask, "__builtin_ia32_shufpd512_mask", IX86_BUILTIN_SHUFPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_INT_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_shufps512_mask, "__builtin_ia32_shufps512_mask", IX86_BUILTIN_SHUFPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_INT_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_shuf_f32x4_mask, "__builtin_ia32_shuf_f32x4_mask", IX86_BUILTIN_SHUF_F32x4, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_INT_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_shuf_f64x2_mask, "__builtin_ia32_shuf_f64x2_mask", IX86_BUILTIN_SHUF_F64x2, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_INT_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_shuf_i32x4_mask, "__builtin_ia32_shuf_i32x4_mask", IX86_BUILTIN_SHUF_I32x4, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_shuf_i64x2_mask, "__builtin_ia32_shuf_i64x2_mask", IX86_BUILTIN_SHUF_I64x2, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ucmpv16si3_mask, "__builtin_ia32_ucmpd512_mask", IX86_BUILTIN_UCMPD512, UNKNOWN, (int) HI_FTYPE_V16SI_V16SI_INT_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ucmpv8di3_mask, "__builtin_ia32_ucmpq512_mask", IX86_BUILTIN_UCMPQ512, UNKNOWN, (int) QI_FTYPE_V8DI_V8DI_INT_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_unpckhpd512_mask, "__builtin_ia32_unpckhpd512_mask", IX86_BUILTIN_UNPCKHPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_unpckhps512_mask, "__builtin_ia32_unpckhps512_mask", IX86_BUILTIN_UNPCKHPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_unpcklpd512_mask, "__builtin_ia32_unpcklpd512_mask", IX86_BUILTIN_UNPCKLPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_unpcklps512_mask, "__builtin_ia32_unpcklps512_mask", IX86_BUILTIN_UNPCKLPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512CD, CODE_FOR_clzv16si2_mask, "__builtin_ia32_vplzcntd_512_mask", IX86_BUILTIN_VPCLZCNTD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512CD, CODE_FOR_clzv8di2_mask, "__builtin_ia32_vplzcntq_512_mask", IX86_BUILTIN_VPCLZCNTQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512CD, CODE_FOR_conflictv16si_mask, "__builtin_ia32_vpconflictsi_512_mask", IX86_BUILTIN_VPCONFLICTD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512CD, CODE_FOR_conflictv8di_mask, "__builtin_ia32_vpconflictdi_512_mask", IX86_BUILTIN_VPCONFLICTQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_permv8df_mask, "__builtin_ia32_permdf512_mask", IX86_BUILTIN_VPERMDF512, UNKNOWN, (int) V8DF_FTYPE_V8DF_INT_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_permv8di_mask, "__builtin_ia32_permdi512_mask", IX86_BUILTIN_VPERMDI512, UNKNOWN, (int) V8DI_FTYPE_V8DI_INT_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermi2varv16si3_mask, "__builtin_ia32_vpermi2vard512_mask", IX86_BUILTIN_VPERMI2VARD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermi2varv8df3_mask, "__builtin_ia32_vpermi2varpd512_mask", IX86_BUILTIN_VPERMI2VARPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DI_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermi2varv16sf3_mask, "__builtin_ia32_vpermi2varps512_mask", IX86_BUILTIN_VPERMI2VARPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SI_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermi2varv8di3_mask, "__builtin_ia32_vpermi2varq512_mask", IX86_BUILTIN_VPERMI2VARQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermilv8df_mask, "__builtin_ia32_vpermilpd512_mask", IX86_BUILTIN_VPERMILPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_INT_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermilv16sf_mask, "__builtin_ia32_vpermilps512_mask", IX86_BUILTIN_VPERMILPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_INT_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermilvarv8df3_mask, "__builtin_ia32_vpermilvarpd512_mask", IX86_BUILTIN_VPERMILVARPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DI_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermilvarv16sf3_mask, "__builtin_ia32_vpermilvarps512_mask", IX86_BUILTIN_VPERMILVARPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SI_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermt2varv16si3_mask, "__builtin_ia32_vpermt2vard512_mask", IX86_BUILTIN_VPERMT2VARD512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermt2varv16si3_maskz, "__builtin_ia32_vpermt2vard512_maskz", IX86_BUILTIN_VPERMT2VARD512_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermt2varv8df3_mask, "__builtin_ia32_vpermt2varpd512_mask", IX86_BUILTIN_VPERMT2VARPD512, UNKNOWN, (int) V8DF_FTYPE_V8DI_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermt2varv8df3_maskz, "__builtin_ia32_vpermt2varpd512_maskz", IX86_BUILTIN_VPERMT2VARPD512_MASKZ, UNKNOWN, (int) V8DF_FTYPE_V8DI_V8DF_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermt2varv16sf3_mask, "__builtin_ia32_vpermt2varps512_mask", IX86_BUILTIN_VPERMT2VARPS512, UNKNOWN, (int) V16SF_FTYPE_V16SI_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermt2varv16sf3_maskz, "__builtin_ia32_vpermt2varps512_maskz", IX86_BUILTIN_VPERMT2VARPS512_MASKZ, UNKNOWN, (int) V16SF_FTYPE_V16SI_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermt2varv8di3_mask, "__builtin_ia32_vpermt2varq512_mask", IX86_BUILTIN_VPERMT2VARQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vpermt2varv8di3_maskz, "__builtin_ia32_vpermt2varq512_maskz", IX86_BUILTIN_VPERMT2VARQ512_MASKZ, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_permvarv8df_mask, "__builtin_ia32_permvardf512_mask", IX86_BUILTIN_VPERMVARDF512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DI_V8DF_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_permvarv8di_mask, "__builtin_ia32_permvardi512_mask", IX86_BUILTIN_VPERMVARDI512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_permvarv16sf_mask, "__builtin_ia32_permvarsf512_mask", IX86_BUILTIN_VPERMVARSF512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SI_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_permvarv16si_mask, "__builtin_ia32_permvarsi512_mask", IX86_BUILTIN_VPERMVARSI512, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vternlogv16si_mask, "__builtin_ia32_pternlogd512_mask", IX86_BUILTIN_VTERNLOGD512_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vternlogv16si_maskz, "__builtin_ia32_pternlogd512_maskz", IX86_BUILTIN_VTERNLOGD512_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vternlogv8di_mask, "__builtin_ia32_pternlogq512_mask", IX86_BUILTIN_VTERNLOGQ512_MASK, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT_QI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vternlogv8di_maskz, "__builtin_ia32_pternlogq512_maskz", IX86_BUILTIN_VTERNLOGQ512_MASKZ, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT_QI }, + + { OPTION_MASK_ISA_AVX512F, CODE_FOR_copysignv16sf3, "__builtin_ia32_copysignps512", IX86_BUILTIN_CPYSGNPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_copysignv8df3, "__builtin_ia32_copysignpd512", IX86_BUILTIN_CPYSGNPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sqrtv8df2, "__builtin_ia32_sqrtpd512", IX86_BUILTIN_SQRTPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sqrtv16sf2, "__builtin_ia32_sqrtps512", IX86_BUILTIN_SQRTPS_NR512, UNKNOWN, (int) V16SF_FTYPE_V16SF }, + { OPTION_MASK_ISA_AVX512ER, CODE_FOR_avx512er_exp2v16sf, "__builtin_ia32_exp2ps", IX86_BUILTIN_EXP2PS, UNKNOWN, (int) V16SF_FTYPE_V16SF }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_roundv8df2_vec_pack_sfix, "__builtin_ia32_roundpd_az_vec_pack_sfix512", IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX512, UNKNOWN, (int) V16SI_FTYPE_V8DF_V8DF }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_roundpd_vec_pack_sfix512, "__builtin_ia32_floorpd_vec_pack_sfix512", IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX512, (enum rtx_code) ROUND_FLOOR, (int) V16SI_FTYPE_V8DF_V8DF_ROUND }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_roundpd_vec_pack_sfix512, "__builtin_ia32_ceilpd_vec_pack_sfix512", IX86_BUILTIN_CEILPD_VEC_PACK_SFIX512, (enum rtx_code) ROUND_CEIL, (int) V16SI_FTYPE_V8DF_V8DF_ROUND }, + + /* Mask arithmetic operations */ + { OPTION_MASK_ISA_AVX512F, CODE_FOR_andhi3, "__builtin_ia32_kandhi", IX86_BUILTIN_KAND16, UNKNOWN, (int) HI_FTYPE_HI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_kandnhi, "__builtin_ia32_kandnhi", IX86_BUILTIN_KANDN16, UNKNOWN, (int) HI_FTYPE_HI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_one_cmplhi2, "__builtin_ia32_knothi", IX86_BUILTIN_KNOT16, UNKNOWN, (int) HI_FTYPE_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_iorhi3, "__builtin_ia32_korhi", IX86_BUILTIN_KOR16, UNKNOWN, (int) HI_FTYPE_HI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_kortestchi, "__builtin_ia32_kortestchi", IX86_BUILTIN_KORTESTC16, UNKNOWN, (int) HI_FTYPE_HI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_kortestzhi, "__builtin_ia32_kortestzhi", IX86_BUILTIN_KORTESTZ16, UNKNOWN, (int) HI_FTYPE_HI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_kunpckhi, "__builtin_ia32_kunpckhi", IX86_BUILTIN_KUNPCKBW, UNKNOWN, (int) HI_FTYPE_HI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_kxnorhi, "__builtin_ia32_kxnorhi", IX86_BUILTIN_KXNOR16, UNKNOWN, (int) HI_FTYPE_HI_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_xorhi3, "__builtin_ia32_kxorhi", IX86_BUILTIN_KXOR16, UNKNOWN, (int) HI_FTYPE_HI_HI }, +}; + +/* Builtins with rounding support. */ +static const struct builtin_description bdesc_round_args[] = +{ + /* AVX512F */ + { OPTION_MASK_ISA_AVX512F, CODE_FOR_addv8df3_mask_round, "__builtin_ia32_addpd512_mask", IX86_BUILTIN_ADDPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_addv16sf3_mask_round, "__builtin_ia32_addps512_mask", IX86_BUILTIN_ADDPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_cmpv8df3_mask_round, "__builtin_ia32_cmppd512_mask", IX86_BUILTIN_CMPPD512, UNKNOWN, (int) QI_FTYPE_V8DF_V8DF_INT_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_cmpv16sf3_mask_round, "__builtin_ia32_cmpps512_mask", IX86_BUILTIN_CMPPS512, UNKNOWN, (int) HI_FTYPE_V16SF_V16SF_INT_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vmcmpv2df3_mask_round, "__builtin_ia32_cmpsd_mask", IX86_BUILTIN_CMPSD_MASK, UNKNOWN, (int) QI_FTYPE_V2DF_V2DF_INT_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vmcmpv4sf3_mask_round, "__builtin_ia32_cmpss_mask", IX86_BUILTIN_CMPSS_MASK, UNKNOWN, (int) QI_FTYPE_V4SF_V4SF_INT_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_comi_round, "__builtin_ia32_vcomisd", IX86_BUILTIN_COMIDF, UNKNOWN, (int) INT_FTYPE_V2DF_V2DF_INT_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_comi_round, "__builtin_ia32_vcomiss", IX86_BUILTIN_COMISF, UNKNOWN, (int) INT_FTYPE_V4SF_V4SF_INT_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_floatv16siv16sf2_mask_round, "__builtin_ia32_cvtdq2ps512_mask", IX86_BUILTIN_CVTDQ2PS512, UNKNOWN, (int) V16SF_FTYPE_V16SI_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_cvtpd2dq512_mask_round, "__builtin_ia32_cvtpd2dq512_mask", IX86_BUILTIN_CVTPD2DQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_cvtpd2ps512_mask_round, "__builtin_ia32_cvtpd2ps512_mask", IX86_BUILTIN_CVTPD2PS512, UNKNOWN, (int) V8SF_FTYPE_V8DF_V8SF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ufix_notruncv8dfv8si_mask_round, "__builtin_ia32_cvtpd2udq512_mask", IX86_BUILTIN_CVTPD2UDQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vcvtph2ps512_mask_round, "__builtin_ia32_vcvtph2ps512_mask", IX86_BUILTIN_CVTPH2PS512, UNKNOWN, (int) V16SF_FTYPE_V16HI_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fix_notruncv16sfv16si_mask_round, "__builtin_ia32_cvtps2dq512_mask", IX86_BUILTIN_CVTPS2DQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_cvtps2pd512_mask_round, "__builtin_ia32_cvtps2pd512_mask", IX86_BUILTIN_CVTPS2PD512, UNKNOWN, (int) V8DF_FTYPE_V8SF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ufix_notruncv16sfv16si_mask_round, "__builtin_ia32_cvtps2udq512_mask", IX86_BUILTIN_CVTPS2UDQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_sse2_cvtsi2sdq_round, "__builtin_ia32_cvtsi2sd64", IX86_BUILTIN_CVTSI2SD64, UNKNOWN, (int) V2DF_FTYPE_V2DF_INT64_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_cvtsi2ss_round, "__builtin_ia32_cvtsi2ss32", IX86_BUILTIN_CVTSI2SS32, UNKNOWN, (int) V4SF_FTYPE_V4SF_INT_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_sse_cvtsi2ssq_round, "__builtin_ia32_cvtsi2ss64", IX86_BUILTIN_CVTSI2SS64, UNKNOWN, (int) V4SF_FTYPE_V4SF_INT64_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_fix_truncv8dfv8si2_mask_round, "__builtin_ia32_cvttpd2dq512_mask", IX86_BUILTIN_CVTTPD2DQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ufix_truncv8dfv8si2_mask_round, "__builtin_ia32_cvttpd2udq512_mask", IX86_BUILTIN_CVTTPD2UDQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_fix_truncv16sfv16si2_mask_round, "__builtin_ia32_cvttps2dq512_mask", IX86_BUILTIN_CVTTPS2DQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ufix_truncv16sfv16si2_mask_round, "__builtin_ia32_cvttps2udq512_mask", IX86_BUILTIN_CVTTPS2UDQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_ufloatv16siv16sf2_mask_round, "__builtin_ia32_cvtudq2ps512_mask", IX86_BUILTIN_CVTUDQ2PS512, UNKNOWN, (int) V16SF_FTYPE_V16SI_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_cvtusi2sd64_round, "__builtin_ia32_cvtusi2sd64", IX86_BUILTIN_CVTUSI2SD64, UNKNOWN, (int) V2DF_FTYPE_V2DF_UINT64_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_cvtusi2ss32_round, "__builtin_ia32_cvtusi2ss32", IX86_BUILTIN_CVTUSI2SS32, UNKNOWN, (int) V4SF_FTYPE_V4SF_UINT_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_cvtusi2ss64_round, "__builtin_ia32_cvtusi2ss64", IX86_BUILTIN_CVTUSI2SS64, UNKNOWN, (int) V4SF_FTYPE_V4SF_UINT64_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_divv8df3_mask_round, "__builtin_ia32_divpd512_mask", IX86_BUILTIN_DIVPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_divv16sf3_mask_round, "__builtin_ia32_divps512_mask", IX86_BUILTIN_DIVPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fixupimmv8df_mask_round, "__builtin_ia32_fixupimmpd512_mask", IX86_BUILTIN_FIXUPIMMPD512_MASK, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DI_INT_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fixupimmv8df_maskz_round, "__builtin_ia32_fixupimmpd512_maskz", IX86_BUILTIN_FIXUPIMMPD512_MASKZ, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DI_INT_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fixupimmv16sf_mask_round, "__builtin_ia32_fixupimmps512_mask", IX86_BUILTIN_FIXUPIMMPS512_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fixupimmv16sf_maskz_round, "__builtin_ia32_fixupimmps512_maskz", IX86_BUILTIN_FIXUPIMMPS512_MASKZ, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sfixupimmv2df_mask_round, "__builtin_ia32_fixupimmsd_mask", IX86_BUILTIN_FIXUPIMMSD128_MASK, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sfixupimmv2df_maskz_round, "__builtin_ia32_fixupimmsd_maskz", IX86_BUILTIN_FIXUPIMMSD128_MASKZ, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sfixupimmv4sf_mask_round, "__builtin_ia32_fixupimmss_mask", IX86_BUILTIN_FIXUPIMMSS128_MASK, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sfixupimmv4sf_maskz_round, "__builtin_ia32_fixupimmss_maskz", IX86_BUILTIN_FIXUPIMMSS128_MASKZ, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_getexpv8df_mask_round, "__builtin_ia32_getexppd512_mask", IX86_BUILTIN_GETEXPPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_getexpv16sf_mask_round, "__builtin_ia32_getexpps512_mask", IX86_BUILTIN_GETEXPPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_getmantv8df_mask_round, "__builtin_ia32_getmantpd512_mask", IX86_BUILTIN_GETMANTPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_INT_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_getmantv16sf_mask_round, "__builtin_ia32_getmantps512_mask", IX86_BUILTIN_GETMANTPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_INT_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_smaxv8df3_mask_round, "__builtin_ia32_maxpd512_mask", IX86_BUILTIN_MAXPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_smaxv16sf3_mask_round, "__builtin_ia32_maxps512_mask", IX86_BUILTIN_MAXPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sminv8df3_mask_round, "__builtin_ia32_minpd512_mask", IX86_BUILTIN_MINPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sminv16sf3_mask_round, "__builtin_ia32_minps512_mask", IX86_BUILTIN_MINPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_mulv8df3_mask_round, "__builtin_ia32_mulpd512_mask", IX86_BUILTIN_MULPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_mulv16sf3_mask_round, "__builtin_ia32_mulps512_mask", IX86_BUILTIN_MULPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rndscalev8df_mask_round, "__builtin_ia32_rndscalepd_mask", IX86_BUILTIN_RNDSCALEPD, UNKNOWN, (int) V8DF_FTYPE_V8DF_INT_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rndscalev16sf_mask_round, "__builtin_ia32_rndscaleps_mask", IX86_BUILTIN_RNDSCALEPS, UNKNOWN, (int) V16SF_FTYPE_V16SF_INT_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_scalefv8df_mask_round, "__builtin_ia32_scalefpd512_mask", IX86_BUILTIN_SCALEFPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_scalefv16sf_mask_round, "__builtin_ia32_scalefps512_mask", IX86_BUILTIN_SCALEFPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sqrtv8df2_mask_round, "__builtin_ia32_sqrtpd512_mask", IX86_BUILTIN_SQRTPD512_MASK, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sqrtv16sf2_mask_round, "__builtin_ia32_sqrtps512_mask", IX86_BUILTIN_SQRTPS512_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_subv8df3_mask_round, "__builtin_ia32_subpd512_mask", IX86_BUILTIN_SUBPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_subv16sf3_mask_round, "__builtin_ia32_subps512_mask", IX86_BUILTIN_SUBPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_cvtsd2si_round, "__builtin_ia32_vcvtsd2si32", IX86_BUILTIN_VCVTSD2SI32, UNKNOWN, (int) INT_FTYPE_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_sse2_cvtsd2siq_round, "__builtin_ia32_vcvtsd2si64", IX86_BUILTIN_VCVTSD2SI64, UNKNOWN, (int) INT64_FTYPE_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vcvtsd2usi_round, "__builtin_ia32_vcvtsd2usi32", IX86_BUILTIN_VCVTSD2USI32, UNKNOWN, (int) UINT_FTYPE_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_avx512f_vcvtsd2usiq_round, "__builtin_ia32_vcvtsd2usi64", IX86_BUILTIN_VCVTSD2USI64, UNKNOWN, (int) UINT64_FTYPE_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_cvtss2si_round, "__builtin_ia32_vcvtss2si32", IX86_BUILTIN_VCVTSS2SI32, UNKNOWN, (int) INT_FTYPE_V4SF_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_sse_cvtss2siq_round, "__builtin_ia32_vcvtss2si64", IX86_BUILTIN_VCVTSS2SI64, UNKNOWN, (int) INT64_FTYPE_V4SF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vcvtss2usi_round, "__builtin_ia32_vcvtss2usi32", IX86_BUILTIN_VCVTSS2USI32, UNKNOWN, (int) UINT_FTYPE_V4SF_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_avx512f_vcvtss2usiq_round, "__builtin_ia32_vcvtss2usi64", IX86_BUILTIN_VCVTSS2USI64, UNKNOWN, (int) UINT64_FTYPE_V4SF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_cvttsd2si_round, "__builtin_ia32_vcvttsd2si32", IX86_BUILTIN_VCVTTSD2SI32, UNKNOWN, (int) INT_FTYPE_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_sse2_cvttsd2siq_round, "__builtin_ia32_vcvttsd2si64", IX86_BUILTIN_VCVTTSD2SI64, UNKNOWN, (int) INT64_FTYPE_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vcvttsd2usi_round, "__builtin_ia32_vcvttsd2usi32", IX86_BUILTIN_VCVTTSD2USI32, UNKNOWN, (int) UINT_FTYPE_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_avx512f_vcvttsd2usiq_round, "__builtin_ia32_vcvttsd2usi64", IX86_BUILTIN_VCVTTSD2USI64, UNKNOWN, (int) UINT64_FTYPE_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_cvttss2si_round, "__builtin_ia32_vcvttss2si32", IX86_BUILTIN_VCVTTSS2SI32, UNKNOWN, (int) INT_FTYPE_V4SF_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_sse_cvttss2siq_round, "__builtin_ia32_vcvttss2si64", IX86_BUILTIN_VCVTTSS2SI64, UNKNOWN, (int) INT64_FTYPE_V4SF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vcvttss2usi_round, "__builtin_ia32_vcvttss2usi32", IX86_BUILTIN_VCVTTSS2USI32, UNKNOWN, (int) UINT_FTYPE_V4SF_INT }, + { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_avx512f_vcvttss2usiq_round, "__builtin_ia32_vcvttss2usi64", IX86_BUILTIN_VCVTTSS2USI64, UNKNOWN, (int) UINT64_FTYPE_V4SF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmadd_v8df_mask_round, "__builtin_ia32_vfmaddpd512_mask", IX86_BUILTIN_VFMADDPD512_MASK, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmadd_v8df_mask3_round, "__builtin_ia32_vfmaddpd512_mask3", IX86_BUILTIN_VFMADDPD512_MASK3, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmadd_v8df_maskz_round, "__builtin_ia32_vfmaddpd512_maskz", IX86_BUILTIN_VFMADDPD512_MASKZ, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmadd_v16sf_mask_round, "__builtin_ia32_vfmaddps512_mask", IX86_BUILTIN_VFMADDPS512_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmadd_v16sf_mask3_round, "__builtin_ia32_vfmaddps512_mask3", IX86_BUILTIN_VFMADDPS512_MASK3, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmadd_v16sf_maskz_round, "__builtin_ia32_vfmaddps512_maskz", IX86_BUILTIN_VFMADDPS512_MASKZ, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmaddsub_v8df_mask_round, "__builtin_ia32_vfmaddsubpd512_mask", IX86_BUILTIN_VFMADDSUBPD512_MASK, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmaddsub_v8df_mask3_round, "__builtin_ia32_vfmaddsubpd512_mask3", IX86_BUILTIN_VFMADDSUBPD512_MASK3, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmaddsub_v8df_maskz_round, "__builtin_ia32_vfmaddsubpd512_maskz", IX86_BUILTIN_VFMADDSUBPD512_MASKZ, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmaddsub_v16sf_mask_round, "__builtin_ia32_vfmaddsubps512_mask", IX86_BUILTIN_VFMADDSUBPS512_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmaddsub_v16sf_mask3_round, "__builtin_ia32_vfmaddsubps512_mask3", IX86_BUILTIN_VFMADDSUBPS512_MASK3, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmaddsub_v16sf_maskz_round, "__builtin_ia32_vfmaddsubps512_maskz", IX86_BUILTIN_VFMADDSUBPS512_MASKZ, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmsubadd_v8df_mask3_round, "__builtin_ia32_vfmsubaddpd512_mask3", IX86_BUILTIN_VFMSUBADDPD512_MASK3, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmsubadd_v16sf_mask3_round, "__builtin_ia32_vfmsubaddps512_mask3", IX86_BUILTIN_VFMSUBADDPS512_MASK3, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmsub_v8df_mask3_round, "__builtin_ia32_vfmsubpd512_mask3", IX86_BUILTIN_VFMSUBPD512_MASK3, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmsub_v16sf_mask3_round, "__builtin_ia32_vfmsubps512_mask3", IX86_BUILTIN_VFMSUBPS512_MASK3, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fnmadd_v8df_mask_round, "__builtin_ia32_vfnmaddpd512_mask", IX86_BUILTIN_VFNMADDPD512_MASK, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fnmadd_v16sf_mask_round, "__builtin_ia32_vfnmaddps512_mask", IX86_BUILTIN_VFNMADDPS512_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fnmsub_v8df_mask_round, "__builtin_ia32_vfnmsubpd512_mask", IX86_BUILTIN_VFNMSUBPD512_MASK, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fnmsub_v8df_mask3_round, "__builtin_ia32_vfnmsubpd512_mask3", IX86_BUILTIN_VFNMSUBPD512_MASK3, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fnmsub_v16sf_mask_round, "__builtin_ia32_vfnmsubps512_mask", IX86_BUILTIN_VFNMSUBPS512_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fnmsub_v16sf_mask3_round, "__builtin_ia32_vfnmsubps512_mask3", IX86_BUILTIN_VFNMSUBPS512_MASK3, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + + /* AVX512ER */ + { OPTION_MASK_ISA_AVX512ER, CODE_FOR_avx512er_exp2v8df_mask_round, "__builtin_ia32_exp2pd_mask", IX86_BUILTIN_EXP2PD_MASK, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512ER, CODE_FOR_avx512er_exp2v16sf_mask_round, "__builtin_ia32_exp2ps_mask", IX86_BUILTIN_EXP2PS_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512ER, CODE_FOR_avx512er_rcp28v8df_mask_round, "__builtin_ia32_rcp28pd_mask", IX86_BUILTIN_RCP28PD, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512ER, CODE_FOR_avx512er_rcp28v16sf_mask_round, "__builtin_ia32_rcp28ps_mask", IX86_BUILTIN_RCP28PS, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512ER, CODE_FOR_avx512er_rsqrt28v8df_mask_round, "__builtin_ia32_rsqrt28pd_mask", IX86_BUILTIN_RSQRT28PD, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT }, + { OPTION_MASK_ISA_AVX512ER, CODE_FOR_avx512er_rsqrt28v16sf_mask_round, "__builtin_ia32_rsqrt28ps_mask", IX86_BUILTIN_RSQRT28PS, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT }, }; /* FMA4 and XOP. */ @@ -29794,6 +30487,18 @@ ix86_init_mmx_sse_builtins (void) def_builtin_const (d->mask, d->name, ftype, d->code); } + /* Add all builtins with rounding. */ + for (i = 0, d = bdesc_round_args; + i < ARRAY_SIZE (bdesc_round_args); + i++, d++) + { + if (d->name == 0) + continue; + + ftype = (enum ix86_builtin_func_type) d->flag; + def_builtin_const (d->mask, d->name, ftype, d->code); + } + /* pcmpestr[im] insns. */ for (i = 0, d = bdesc_pcmpestr; i < ARRAY_SIZE (bdesc_pcmpestr); @@ -29962,6 +30667,101 @@ ix86_init_mmx_sse_builtins (void) V8SI_FTYPE_V8SI_PCINT_V4DI_V8SI_INT, IX86_BUILTIN_GATHERALTDIV8SI); + /* AVX512F */ + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv16sf", + V16SF_FTYPE_V16SF_PCFLOAT_V16SI_HI_INT, + IX86_BUILTIN_GATHER3SIV16SF); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv8df", + V8DF_FTYPE_V8DF_PCDOUBLE_V8SI_QI_INT, + IX86_BUILTIN_GATHER3SIV8DF); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv16sf", + V8SF_FTYPE_V8SF_PCFLOAT_V8DI_QI_INT, + IX86_BUILTIN_GATHER3DIV16SF); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv8df", + V8DF_FTYPE_V8DF_PCDOUBLE_V8DI_QI_INT, + IX86_BUILTIN_GATHER3DIV8DF); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv16si", + V16SI_FTYPE_V16SI_PCINT_V16SI_HI_INT, + IX86_BUILTIN_GATHER3SIV16SI); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv8di", + V8DI_FTYPE_V8DI_PCINT64_V8SI_QI_INT, + IX86_BUILTIN_GATHER3SIV8DI); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv16si", + V8SI_FTYPE_V8SI_PCINT_V8DI_QI_INT, + IX86_BUILTIN_GATHER3DIV16SI); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv8di", + V8DI_FTYPE_V8DI_PCINT64_V8DI_QI_INT, + IX86_BUILTIN_GATHER3DIV8DI); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatheraltsiv8df ", + V8DF_FTYPE_V8DF_PCDOUBLE_V16SI_QI_INT, + IX86_BUILTIN_GATHER3ALTSIV8DF); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatheraltdiv8sf ", + V16SF_FTYPE_V16SF_PCFLOAT_V8DI_HI_INT, + IX86_BUILTIN_GATHER3ALTDIV16SF); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatheraltsiv8di ", + V8DI_FTYPE_V8DI_PCINT64_V16SI_QI_INT, + IX86_BUILTIN_GATHER3ALTSIV8DI); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatheraltdiv8si ", + V16SI_FTYPE_V16SI_PCINT_V8DI_HI_INT, + IX86_BUILTIN_GATHER3ALTDIV16SI); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv16sf", + VOID_FTYPE_PFLOAT_HI_V16SI_V16SF_INT, + IX86_BUILTIN_SCATTERSIV16SF); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv8df", + VOID_FTYPE_PDOUBLE_QI_V8SI_V8DF_INT, + IX86_BUILTIN_SCATTERSIV8DF); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv16sf", + VOID_FTYPE_PFLOAT_QI_V8DI_V8SF_INT, + IX86_BUILTIN_SCATTERDIV16SF); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv8df", + VOID_FTYPE_PDOUBLE_QI_V8DI_V8DF_INT, + IX86_BUILTIN_SCATTERDIV8DF); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv16si", + VOID_FTYPE_PINT_HI_V16SI_V16SI_INT, + IX86_BUILTIN_SCATTERSIV16SI); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv8di", + VOID_FTYPE_PLONGLONG_QI_V8SI_V8DI_INT, + IX86_BUILTIN_SCATTERSIV8DI); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv16si", + VOID_FTYPE_PINT_QI_V8DI_V8SI_INT, + IX86_BUILTIN_SCATTERDIV16SI); + + def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv8di", + VOID_FTYPE_PLONGLONG_QI_V8DI_V8DI_INT, + IX86_BUILTIN_SCATTERDIV8DI); + + /* AVX512PF */ + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps", + VOID_FTYPE_HI_V16SI_PCINT_INT_INT, + IX86_BUILTIN_GATHERPFDPS); + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps", + VOID_FTYPE_QI_V8DI_PCINT_INT_INT, + IX86_BUILTIN_GATHERPFQPS); + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdps", + VOID_FTYPE_HI_V16SI_PCINT_INT_INT, + IX86_BUILTIN_SCATTERPFDPS); + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfqps", + VOID_FTYPE_QI_V8DI_PCINT_INT_INT, + IX86_BUILTIN_SCATTERPFQPS); + /* RTM. */ def_builtin (OPTION_MASK_ISA_RTM, "__builtin_ia32_xabort", VOID_FTYPE_UNSIGNED, IX86_BUILTIN_XABORT); @@ -32364,12 +33164,13 @@ ix86_expand_args_builtin (const struct builtin_description *d, rtx pat, real_target; unsigned int i, nargs; unsigned int nargs_constant = 0; + unsigned int mask_pos = 0; int num_memory = 0; struct { rtx op; enum machine_mode mode; - } args[4]; + } args[6]; bool last_arg_count = false; enum insn_code icode = d->icode; const struct insn_data_d *insn_p = &insn_data[icode]; @@ -32389,6 +33190,7 @@ ix86_expand_args_builtin (const struct builtin_description *d, return ix86_expand_sse_round (d, exp, target); case V4SI_FTYPE_V2DF_V2DF_ROUND: case V8SI_FTYPE_V4DF_V4DF_ROUND: + case V16SI_FTYPE_V8DF_V8DF_ROUND: return ix86_expand_sse_round_vec_pack_sfix (d, exp, target); case INT_FTYPE_V8SF_V8SF_PTEST: case INT_FTYPE_V4DI_V4DI_PTEST: @@ -32467,6 +33269,32 @@ ix86_expand_args_builtin (const struct builtin_description *d, case V4DI_FTYPE_V8HI: case V4DI_FTYPE_V4SI: case V4DI_FTYPE_V2DI: + case HI_FTYPE_HI: + case UINT_FTYPE_V2DF: + case UINT_FTYPE_V4SF: + case UINT64_FTYPE_V2DF: + case UINT64_FTYPE_V4SF: + case V16QI_FTYPE_V8DI: + case V16HI_FTYPE_V16SI: + case V16SI_FTYPE_HI: + case V16SI_FTYPE_V16SI: + case V16SI_FTYPE_INT: + case V16SF_FTYPE_FLOAT: + case V16SF_FTYPE_V4SF: + case V16SF_FTYPE_V16SF: + case V8HI_FTYPE_V8DI: + case V8UHI_FTYPE_V8UHI: + case V8SI_FTYPE_V8DI: + case V8USI_FTYPE_V8USI: + case V8SF_FTYPE_V8DF: + case V8DI_FTYPE_QI: + case V8DI_FTYPE_INT64: + case V8DI_FTYPE_V4DI: + case V8DI_FTYPE_V8DI: + case V8DF_FTYPE_DOUBLE: + case V8DF_FTYPE_V4DF: + case V8DF_FTYPE_V8DF: + case V8DF_FTYPE_V8SI: nargs = 1; break; case V4SF_FTYPE_V4SF_VEC_MERGE: @@ -32475,6 +33303,9 @@ ix86_expand_args_builtin (const struct builtin_description *d, case FLOAT128_FTYPE_FLOAT128_FLOAT128: case V16QI_FTYPE_V16QI_V16QI: case V16QI_FTYPE_V8HI_V8HI: + case V16SI_FTYPE_V16SI_V16SI: + case V16SF_FTYPE_V16SF_V16SF: + case V16SF_FTYPE_V16SF_V16SI: case V8QI_FTYPE_V8QI_V8QI: case V8QI_FTYPE_V4HI_V4HI: case V8HI_FTYPE_V8HI_V8HI: @@ -32482,6 +33313,9 @@ ix86_expand_args_builtin (const struct builtin_description *d, case V8HI_FTYPE_V4SI_V4SI: case V8SF_FTYPE_V8SF_V8SF: case V8SF_FTYPE_V8SF_V8SI: + case V8DI_FTYPE_V8DI_V8DI: + case V8DF_FTYPE_V8DF_V8DF: + case V8DF_FTYPE_V8DF_V8DI: case V4SI_FTYPE_V4SI_V4SI: case V4SI_FTYPE_V8HI_V8HI: case V4SI_FTYPE_V4SF_V4SF: @@ -32495,6 +33329,8 @@ ix86_expand_args_builtin (const struct builtin_description *d, case V4SF_FTYPE_V4SF_V4SI: case V4SF_FTYPE_V4SF_V2SI: case V4SF_FTYPE_V4SF_V2DF: + case V4SF_FTYPE_V4SF_UINT: + case V4SF_FTYPE_V4SF_UINT64: case V4SF_FTYPE_V4SF_DI: case V4SF_FTYPE_V4SF_SI: case V2DI_FTYPE_V2DI_V2DI: @@ -32511,6 +33347,8 @@ ix86_expand_args_builtin (const struct builtin_description *d, case V2DF_FTYPE_V2DF_V2DI: case V2DF_FTYPE_V2DF_DI: case V2DF_FTYPE_V2DF_SI: + case V2DF_FTYPE_V2DF_UINT: + case V2DF_FTYPE_V2DF_UINT64: case V2SF_FTYPE_V2SF_V2SF: case V1DI_FTYPE_V1DI_V1DI: case V1DI_FTYPE_V8QI_V8QI: @@ -32526,6 +33364,8 @@ ix86_expand_args_builtin (const struct builtin_description *d, case V4DI_FTYPE_V4DI_V4DI: case V4DI_FTYPE_V8SI_V8SI: case V4UDI_FTYPE_V8USI_V8USI: + case QI_FTYPE_V8DI_V8DI: + case HI_FTYPE_V16SI_V16SI: if (comparison == UNKNOWN) return ix86_expand_binop_builtin (icode, exp, target); nargs = 2; @@ -32563,6 +33403,8 @@ ix86_expand_args_builtin (const struct builtin_description *d, case UINT_FTYPE_UINT_UCHAR: case UINT16_FTYPE_UINT16_INT: case UINT8_FTYPE_UINT8_INT: + case HI_FTYPE_HI_HI: + case V16SI_FTYPE_V8DF_V8DF: nargs = 2; break; case V2DI_FTYPE_V2DI_INT_CONVERT: @@ -32577,12 +33419,16 @@ ix86_expand_args_builtin (const struct builtin_description *d, break; case V8HI_FTYPE_V8HI_INT: case V8HI_FTYPE_V8SF_INT: + case V16HI_FTYPE_V16SF_INT: case V8HI_FTYPE_V4SF_INT: case V8SF_FTYPE_V8SF_INT: + case V4SF_FTYPE_V16SF_INT: + case V16SF_FTYPE_V16SF_INT: case V4SI_FTYPE_V4SI_INT: case V4SI_FTYPE_V8SI_INT: case V4HI_FTYPE_V4HI_INT: case V4DF_FTYPE_V4DF_INT: + case V4DF_FTYPE_V8DF_INT: case V4SF_FTYPE_V4SF_INT: case V4SF_FTYPE_V8SF_INT: case V2DI_FTYPE_V2DI_INT: @@ -32590,8 +33436,12 @@ ix86_expand_args_builtin (const struct builtin_description *d, case V2DF_FTYPE_V4DF_INT: case V16HI_FTYPE_V16HI_INT: case V8SI_FTYPE_V8SI_INT: + case V16SI_FTYPE_V16SI_INT: + case V4SI_FTYPE_V16SI_INT: case V4DI_FTYPE_V4DI_INT: case V2DI_FTYPE_V4DI_INT: + case V4DI_FTYPE_V8DI_INT: + case HI_FTYPE_HI_INT: nargs = 2; nargs_constant = 1; break; @@ -32601,6 +33451,46 @@ ix86_expand_args_builtin (const struct builtin_description *d, case V4SF_FTYPE_V4SF_V4SF_V4SF: case V2DF_FTYPE_V2DF_V2DF_V2DF: case V32QI_FTYPE_V32QI_V32QI_V32QI: + case HI_FTYPE_V16SI_V16SI_HI: + case QI_FTYPE_V8DI_V8DI_QI: + case V16HI_FTYPE_V16SI_V16HI_HI: + case V16QI_FTYPE_V16SI_V16QI_HI: + case V16QI_FTYPE_V8DI_V16QI_QI: + case V16SF_FTYPE_V16SF_V16SF_HI: + case V16SF_FTYPE_V16SF_V16SF_V16SF: + case V16SF_FTYPE_V16SF_V16SI_V16SF: + case V16SF_FTYPE_V16SI_V16SF_HI: + case V16SF_FTYPE_V16SI_V16SF_V16SF: + case V16SF_FTYPE_V4SF_V16SF_HI: + case V16SI_FTYPE_SI_V16SI_HI: + case V16SI_FTYPE_V16HI_V16SI_HI: + case V16SI_FTYPE_V16QI_V16SI_HI: + case V16SI_FTYPE_V16SF_V16SI_HI: + case V16SI_FTYPE_V16SI_V16SI_HI: + case V16SI_FTYPE_V16SI_V16SI_V16SI: + case V16SI_FTYPE_V4SI_V16SI_HI: + case V2DI_FTYPE_V2DI_V2DI_V2DI: + case V4DI_FTYPE_V4DI_V4DI_V4DI: + case V8DF_FTYPE_V2DF_V8DF_QI: + case V8DF_FTYPE_V4DF_V8DF_QI: + case V8DF_FTYPE_V8DF_V8DF_QI: + case V8DF_FTYPE_V8DF_V8DF_V8DF: + case V8DF_FTYPE_V8DF_V8DI_V8DF: + case V8DF_FTYPE_V8DI_V8DF_V8DF: + case V8DF_FTYPE_V8SF_V8DF_QI: + case V8DF_FTYPE_V8SI_V8DF_QI: + case V8DI_FTYPE_DI_V8DI_QI: + case V8DI_FTYPE_V16QI_V8DI_QI: + case V8DI_FTYPE_V2DI_V8DI_QI: + case V8DI_FTYPE_V4DI_V8DI_QI: + case V8DI_FTYPE_V8DI_V8DI_QI: + case V8DI_FTYPE_V8DI_V8DI_V8DI: + case V8DI_FTYPE_V8HI_V8DI_QI: + case V8DI_FTYPE_V8SI_V8DI_QI: + case V8HI_FTYPE_V8DI_V8HI_QI: + case V8SF_FTYPE_V8DF_V8SF_QI: + case V8SI_FTYPE_V8DF_V8SI_QI: + case V8SI_FTYPE_V8DI_V8SI_QI: nargs = 3; break; case V32QI_FTYPE_V32QI_V32QI_INT: @@ -32614,11 +33504,20 @@ ix86_expand_args_builtin (const struct builtin_description *d, case V8SF_FTYPE_V8SF_V4SF_INT: case V4SI_FTYPE_V4SI_V4SI_INT: case V4DF_FTYPE_V4DF_V4DF_INT: + case V16SF_FTYPE_V16SF_V16SF_INT: + case V16SF_FTYPE_V16SF_V4SF_INT: + case V16SI_FTYPE_V16SI_V4SI_INT: case V4DF_FTYPE_V4DF_V2DF_INT: case V4SF_FTYPE_V4SF_V4SF_INT: case V2DI_FTYPE_V2DI_V2DI_INT: case V4DI_FTYPE_V4DI_V2DI_INT: case V2DF_FTYPE_V2DF_V2DF_INT: + case QI_FTYPE_V8DI_V8DI_INT: + case QI_FTYPE_V8DF_V8DF_INT: + case QI_FTYPE_V2DF_V2DF_INT: + case QI_FTYPE_V4SF_V4SF_INT: + case HI_FTYPE_V16SI_V16SI_INT: + case HI_FTYPE_V16SF_V16SF_INT: nargs = 3; nargs_constant = 1; break; @@ -32641,11 +33540,36 @@ ix86_expand_args_builtin (const struct builtin_description *d, nargs = 3; nargs_constant = 2; break; + case V16SF_FTYPE_V16SF_V16SF_V16SF_HI: + case V16SF_FTYPE_V16SF_V16SI_V16SF_HI: + case V16SF_FTYPE_V16SI_V16SF_V16SF_HI: + case V16SI_FTYPE_V16SI_V16SI_V16SI_HI: + case V16SI_FTYPE_V16SI_V4SI_V16SI_HI: + case V2DF_FTYPE_V2DF_V2DF_V2DF_QI: + case V2DF_FTYPE_V2DF_V4SF_V2DF_QI: + case V4SF_FTYPE_V4SF_V2DF_V4SF_QI: + case V4SF_FTYPE_V4SF_V4SF_V4SF_QI: + case V8DF_FTYPE_V8DF_V8DF_V8DF_QI: + case V8DF_FTYPE_V8DF_V8DI_V8DF_QI: + case V8DF_FTYPE_V8DI_V8DF_V8DF_QI: + case V8DI_FTYPE_V16SI_V16SI_V8DI_QI: + case V8DI_FTYPE_V8DI_SI_V8DI_V8DI: + case V8DI_FTYPE_V8DI_V2DI_V8DI_QI: + case V8DI_FTYPE_V8DI_V8DI_V8DI_QI: + nargs = 4; + break; case V2DF_FTYPE_V2DF_V2DF_V2DI_INT: case V4DF_FTYPE_V4DF_V4DF_V4DI_INT: case V4SF_FTYPE_V4SF_V4SF_V4SI_INT: case V8SF_FTYPE_V8SF_V8SF_V8SI_INT: + case V16SF_FTYPE_V16SF_V16SF_V16SI_INT: + nargs = 4; + nargs_constant = 1; + break; + case QI_FTYPE_V2DF_V2DF_INT_QI: + case QI_FTYPE_V4SF_V4SF_INT_QI: nargs = 4; + mask_pos = 1; nargs_constant = 1; break; case V2DI_FTYPE_V2DI_V2DI_UINT_UINT: @@ -32656,6 +33580,51 @@ ix86_expand_args_builtin (const struct builtin_description *d, case UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PULONGLONG: nargs = 4; break; + case QI_FTYPE_V8DI_V8DI_INT_QI: + case HI_FTYPE_V16SI_V16SI_INT_HI: + case QI_FTYPE_V8DF_V8DF_INT_QI: + case HI_FTYPE_V16SF_V16SF_INT_HI: + mask_pos = 1; + nargs = 4; + nargs_constant = 1; + break; + case V8DF_FTYPE_V8DF_INT_V8DF_QI: + case V16SF_FTYPE_V16SF_INT_V16SF_HI: + case V16HI_FTYPE_V16SF_INT_V16HI_HI: + case V16SI_FTYPE_V16SI_INT_V16SI_HI: + case V4SI_FTYPE_V16SI_INT_V4SI_QI: + case V4DI_FTYPE_V8DI_INT_V4DI_QI: + case V4DF_FTYPE_V8DF_INT_V4DF_QI: + case V4SF_FTYPE_V16SF_INT_V4SF_QI: + case V8DI_FTYPE_V8DI_INT_V8DI_QI: + nargs = 4; + mask_pos = 2; + nargs_constant = 1; + break; + case V16SF_FTYPE_V16SF_V4SF_INT_V16SF_HI: + case V16SI_FTYPE_V16SI_V4SI_INT_V16SI_HI: + case V8DF_FTYPE_V8DF_V8DF_INT_V8DF_QI: + case V8DI_FTYPE_V8DI_V8DI_INT_V8DI_QI: + case V16SF_FTYPE_V16SF_V16SF_INT_V16SF_HI: + case V16SI_FTYPE_V16SI_V16SI_INT_V16SI_HI: + case V4SF_FTYPE_V4SF_V4SF_INT_V4SF_QI: + case V2DF_FTYPE_V2DF_V2DF_INT_V2DF_QI: + case V8DF_FTYPE_V8DF_V4DF_INT_V8DF_QI: + case V8DI_FTYPE_V8DI_V4DI_INT_V8DI_QI: + nargs = 5; + mask_pos = 2; + nargs_constant = 1; + break; + case V8DI_FTYPE_V8DI_V8DI_V8DI_INT_QI: + case V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI: + case V16SI_FTYPE_V16SI_V16SI_V16SI_INT_HI: + case V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI: + case V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI: + nargs = 5; + mask_pos = 1; + nargs_constant = 1; + break; + default: gcc_unreachable (); } @@ -32702,7 +33671,8 @@ ix86_expand_args_builtin (const struct builtin_description *d, op = copy_to_reg (op); } } - else if ((nargs - i) <= nargs_constant) + else if ((mask_pos && (nargs - i - mask_pos) == nargs_constant) || + (!mask_pos && (nargs - i) <= nargs_constant)) { if (!match) switch (icode) @@ -32712,6 +33682,13 @@ ix86_expand_args_builtin (const struct builtin_description *d, error ("the last argument must be an 1-bit immediate"); return const0_rtx; + case CODE_FOR_avx512f_cmpv8di3_mask: + case CODE_FOR_avx512f_cmpv16si3_mask: + case CODE_FOR_avx512f_ucmpv8di3_mask: + case CODE_FOR_avx512f_ucmpv16si3_mask: + error ("the last argument must be a 3-bit immediate"); + return const0_rtx; + case CODE_FOR_sse4_1_roundsd: case CODE_FOR_sse4_1_roundss: @@ -32728,6 +33705,8 @@ ix86_expand_args_builtin (const struct builtin_description *d, case CODE_FOR_sse4_1_blendps: case CODE_FOR_avx_blendpd256: case CODE_FOR_avx_vpermilv4df: + case CODE_FOR_avx512f_getmantv8df_mask: + case CODE_FOR_avx512f_getmantv16sf_mask: error ("the last argument must be a 4-bit immediate"); return const0_rtx; @@ -32737,6 +33716,10 @@ ix86_expand_args_builtin (const struct builtin_description *d, case CODE_FOR_xop_vpermil2v4sf3: case CODE_FOR_xop_vpermil2v4df3: case CODE_FOR_xop_vpermil2v8sf3: + case CODE_FOR_avx512f_vinsertf32x4_mask: + case CODE_FOR_avx512f_vinserti32x4_mask: + case CODE_FOR_avx512f_vextractf32x4_mask: + case CODE_FOR_avx512f_vextracti32x4_mask: error ("the last argument must be a 2-bit immediate"); return const0_rtx; @@ -32746,6 +33729,10 @@ ix86_expand_args_builtin (const struct builtin_description *d, case CODE_FOR_avx_vinsertf128v4df: case CODE_FOR_avx_vinsertf128v8sf: case CODE_FOR_avx_vinsertf128v8si: + case CODE_FOR_avx512f_vinsertf64x4_mask: + case CODE_FOR_avx512f_vinserti64x4_mask: + case CODE_FOR_avx512f_vextractf64x4_mask: + case CODE_FOR_avx512f_vextracti64x4_mask: error ("the last argument must be a 1-bit immediate"); return const0_rtx; @@ -32755,14 +33742,19 @@ ix86_expand_args_builtin (const struct builtin_description *d, case CODE_FOR_avx_cmpv4sf3: case CODE_FOR_avx_cmpv4df3: case CODE_FOR_avx_cmpv8sf3: + case CODE_FOR_avx512f_cmpv8df3_mask: + case CODE_FOR_avx512f_cmpv16sf3_mask: + case CODE_FOR_avx512f_vmcmpv2df3_mask: + case CODE_FOR_avx512f_vmcmpv4sf3_mask: error ("the last argument must be a 5-bit immediate"); return const0_rtx; - default: + default: switch (nargs_constant) { case 2: - if ((nargs - i) == nargs_constant) + if ((mask_pos && (nargs - i - mask_pos) == nargs_constant) || + (!mask_pos && (nargs - i) == nargs_constant)) { error ("the next to last argument must be an 8-bit immediate"); break; @@ -32818,6 +33810,14 @@ ix86_expand_args_builtin (const struct builtin_description *d, pat = GEN_FCN (icode) (real_target, args[0].op, args[1].op, args[2].op, args[3].op); break; + case 5: + pat = GEN_FCN (icode) (real_target, args[0].op, args[1].op, + args[2].op, args[3].op, args[4].op); + case 6: + pat = GEN_FCN (icode) (real_target, args[0].op, args[1].op, + args[2].op, args[3].op, args[4].op, + args[5].op); + break; default: gcc_unreachable (); } @@ -32829,6 +33829,363 @@ ix86_expand_args_builtin (const struct builtin_description *d, return target; } +/* Transform pattern of following layout: + (parallel [ + set (A B) + (unspec [C] UNSPEC_EMBEDDED_ROUNDING)]) + ]) + into: + (set (A B)) + + Or: + (parallel [ A B + ... + (unspec [C] UNSPEC_EMBEDDED_ROUNDING) + ... + ]) + into: + (parallel [ A B ... ]) */ + +static rtx +ix86_erase_embedded_rounding (rtx pat) +{ + if (GET_CODE (pat) == INSN) + pat = PATTERN (pat); + + gcc_assert (GET_CODE (pat) == PARALLEL); + + if (XVECLEN (pat, 0) == 2) + { + rtx p0 = XVECEXP (pat, 0, 0); + rtx p1 = XVECEXP (pat, 0, 1); + + gcc_assert (GET_CODE (p0) == SET + && GET_CODE (p1) == UNSPEC + && XINT (p1, 1) == UNSPEC_EMBEDDED_ROUNDING); + + return p0; + } + else + { + rtx *res = XALLOCAVEC (rtx, XVECLEN (pat, 0)); + int i = 0; + int j = 0; + + for (; i < XVECLEN (pat, 0); ++i) + { + rtx elem = XVECEXP (pat, 0, i); + if (GET_CODE (elem) != UNSPEC + || XINT (elem, 1) != UNSPEC_EMBEDDED_ROUNDING) + res [j++] = elem; + } + + /* No more than 1 occurence was removed. */ + gcc_assert (j >= XVECLEN (pat, 0) - 1); + + return gen_rtx_PARALLEL (GET_MODE (pat), gen_rtvec_v (j, res)); + } +} + +/* Subroutine of ix86_expand_round_builtin to take care of comi insns + with rounding. */ +static rtx +ix86_expand_sse_comi_round (const struct builtin_description *d, + tree exp, rtx target) +{ + rtx pat, set_dst; + tree arg0 = CALL_EXPR_ARG (exp, 0); + tree arg1 = CALL_EXPR_ARG (exp, 1); + tree arg2 = CALL_EXPR_ARG (exp, 2); + tree arg3 = CALL_EXPR_ARG (exp, 3); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); + rtx op2 = expand_normal (arg2); + rtx op3 = expand_normal (arg3); + enum insn_code icode = d->icode; + const struct insn_data_d *insn_p = &insn_data[icode]; + enum machine_mode mode0 = insn_p->operand[0].mode; + enum machine_mode mode1 = insn_p->operand[1].mode; + enum rtx_code comparison = UNEQ; + bool need_ucomi = false; + + /* See avxintrin.h for values. */ + enum rtx_code comi_comparisons[32] = + { + UNEQ, GT, GE, UNORDERED, LTGT, UNLE, UNLT, ORDERED, UNEQ, UNLT, + UNLE, LT, LTGT, GE, GT, LT, UNEQ, GT, GE, UNORDERED, LTGT, UNLE, + UNLT, ORDERED, UNEQ, UNLT, UNLE, LT, LTGT, GE, GT, LT + }; + bool need_ucomi_values[32] = + { + true, false, false, true, true, false, false, true, + true, false, false, true, true, false, false, true, + false, true, true, false, false, true, true, false, + false, true, true, false, false, true, true, false + }; + + if (!CONST_INT_P (op2)) + { + error ("the third argument must be comparison constant"); + return const0_rtx; + } + if (INTVAL (op2) < 0 || INTVAL (op2) >= 32) + { + error ("incorect comparison mode"); + return const0_rtx; + } + + if (!insn_p->operand[2].predicate (op3, SImode)) + { + error ("incorrect rounding operand"); + return const0_rtx; + } + + comparison = comi_comparisons[INTVAL (op2)]; + need_ucomi = need_ucomi_values[INTVAL (op2)]; + + if (VECTOR_MODE_P (mode0)) + op0 = safe_vector_operand (op0, mode0); + if (VECTOR_MODE_P (mode1)) + op1 = safe_vector_operand (op1, mode1); + + target = gen_reg_rtx (SImode); + emit_move_insn (target, const0_rtx); + target = gen_rtx_SUBREG (QImode, target, 0); + + if ((optimize && !register_operand (op0, mode0)) + || !insn_p->operand[0].predicate (op0, mode0)) + op0 = copy_to_mode_reg (mode0, op0); + if ((optimize && !register_operand (op1, mode1)) + || !insn_p->operand[1].predicate (op1, mode1)) + op1 = copy_to_mode_reg (mode1, op1); + + if (need_ucomi) + icode = icode == CODE_FOR_sse_comi_round + ? CODE_FOR_sse_ucomi_round + : CODE_FOR_sse2_ucomi_round; + + pat = GEN_FCN (icode) (op0, op1, op3); + if (! pat) + return 0; + + /* Rounding operand can be either NO_ROUND or ROUND_SAE at this point. */ + if (INTVAL (op3) == NO_ROUND) + { + pat = ix86_erase_embedded_rounding (pat); + if (! pat) + return 0; + + set_dst = SET_DEST (pat); + } + else + { + gcc_assert (GET_CODE (XVECEXP (pat, 0, 0)) == SET); + set_dst = SET_DEST (XVECEXP (pat, 0, 0)); + } + + emit_insn (pat); + emit_insn (gen_rtx_SET (VOIDmode, + gen_rtx_STRICT_LOW_PART (VOIDmode, target), + gen_rtx_fmt_ee (comparison, QImode, + set_dst, + const0_rtx))); + + return SUBREG_REG (target); +} + +static rtx +ix86_expand_round_builtin (const struct builtin_description *d, + tree exp, rtx target) +{ + rtx pat; + unsigned int i, nargs; + struct + { + rtx op; + enum machine_mode mode; + } args[6]; + enum insn_code icode = d->icode; + const struct insn_data_d *insn_p = &insn_data[icode]; + enum machine_mode tmode = insn_p->operand[0].mode; + unsigned int nargs_constant = 0; + unsigned int redundant_embed_rnd = 0; + + switch ((enum ix86_builtin_func_type) d->flag) + { + case UINT64_FTYPE_V2DF_INT: + case UINT64_FTYPE_V4SF_INT: + case UINT_FTYPE_V2DF_INT: + case UINT_FTYPE_V4SF_INT: + case INT64_FTYPE_V2DF_INT: + case INT64_FTYPE_V4SF_INT: + case INT_FTYPE_V2DF_INT: + case INT_FTYPE_V4SF_INT: + nargs = 2; + break; + case V4SF_FTYPE_V4SF_UINT_INT: + case V4SF_FTYPE_V4SF_UINT64_INT: + case V2DF_FTYPE_V2DF_UINT64_INT: + case V4SF_FTYPE_V4SF_INT_INT: + case V4SF_FTYPE_V4SF_INT64_INT: + case V2DF_FTYPE_V2DF_INT64_INT: + nargs = 3; + break; + case V8SF_FTYPE_V8DF_V8SF_QI_INT: + case V8DF_FTYPE_V8DF_V8DF_QI_INT: + case V8SI_FTYPE_V8DF_V8SI_QI_INT: + case V16SF_FTYPE_V16SF_V16SF_HI_INT: + case V16SF_FTYPE_V16SI_V16SF_HI_INT: + case V16SI_FTYPE_V16SF_V16SI_HI_INT: + case V8DF_FTYPE_V8SF_V8DF_QI_INT: + case V16SF_FTYPE_V16HI_V16SF_HI_INT: + nargs = 4; + break; + case INT_FTYPE_V4SF_V4SF_INT_INT: + case INT_FTYPE_V2DF_V2DF_INT_INT: + return ix86_expand_sse_comi_round (d, exp, target); + case V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT: + case V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT: + case V2DF_FTYPE_V2DF_V2DF_V2DF_QI_INT: + case V2DF_FTYPE_V2DF_V4SF_V2DF_QI_INT: + case V4SF_FTYPE_V4SF_V4SF_V4SF_QI_INT: + case V4SF_FTYPE_V4SF_V2DF_V4SF_QI_INT: + nargs = 5; + break; + case V16SF_FTYPE_V16SF_INT_V16SF_HI_INT: + case V8DF_FTYPE_V8DF_INT_V8DF_QI_INT: + nargs_constant = 4; + nargs = 5; + break; + case QI_FTYPE_V8DF_V8DF_INT_QI_INT: + case QI_FTYPE_V2DF_V2DF_INT_QI_INT: + case HI_FTYPE_V16SF_V16SF_INT_HI_INT: + case QI_FTYPE_V4SF_V4SF_INT_QI_INT: + nargs_constant = 3; + nargs = 5; + break; + case V4SF_FTYPE_V4SF_V4SF_INT_V4SF_QI_INT: + case V2DF_FTYPE_V2DF_V2DF_INT_V2DF_QI_INT: + nargs = 6; + nargs_constant = 4; + break; + case V8DF_FTYPE_V8DF_V8DF_V8DI_INT_QI_INT: + case V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI_INT: + case V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI_INT: + case V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI_INT: + nargs = 6; + nargs_constant = 3; + break; + default: + gcc_unreachable (); + } + gcc_assert (nargs <= ARRAY_SIZE (args)); + + if (optimize + || target == 0 + || GET_MODE (target) != tmode + || !insn_p->operand[0].predicate (target, tmode)) + target = gen_reg_rtx (tmode); + + for (i = 0; i < nargs; i++) + { + tree arg = CALL_EXPR_ARG (exp, i); + rtx op = expand_normal (arg); + enum machine_mode mode = insn_p->operand[i + 1].mode; + bool match = insn_p->operand[i + 1].predicate (op, mode); + + if (i == nargs - nargs_constant) + { + if (!match) + { + switch (icode) + { + case CODE_FOR_avx512f_getmantv8df_mask_round: + case CODE_FOR_avx512f_getmantv16sf_mask_round: + error ("the immediate argument must be a 4-bit immediate"); + return const0_rtx; + case CODE_FOR_avx512f_cmpv8df3_mask_round: + case CODE_FOR_avx512f_cmpv16sf3_mask_round: + case CODE_FOR_avx512f_vmcmpv2df3_mask_round: + case CODE_FOR_avx512f_vmcmpv4sf3_mask_round: + error ("the immediate argument must be a 5-bit immediate"); + return const0_rtx; + default: + error ("the immediate argument must be an 8-bit immediate"); + return const0_rtx; + } + } + } + else if (i == nargs-1) + { + if (!insn_p->operand[nargs].predicate (op, SImode)) + { + error ("incorrect rounding operand"); + return const0_rtx; + } + + /* If there is no rounding use normal version of the pattern. */ + if (INTVAL (op) == NO_ROUND) + redundant_embed_rnd = 1; + } + else + { + if (VECTOR_MODE_P (mode)) + op = safe_vector_operand (op, mode); + + if (GET_MODE (op) == mode || GET_MODE (op) == VOIDmode) + { + if (optimize || !match) + op = copy_to_mode_reg (mode, op); + } + else + { + op = copy_to_reg (op); + op = simplify_gen_subreg (mode, op, GET_MODE (op), 0); + } + } + + args[i].op = op; + args[i].mode = mode; + } + + switch (nargs) + { + case 1: + pat = GEN_FCN (icode) (target, args[0].op); + break; + case 2: + pat = GEN_FCN (icode) (target, args[0].op, args[1].op); + break; + case 3: + pat = GEN_FCN (icode) (target, args[0].op, args[1].op, + args[2].op); + break; + case 4: + pat = GEN_FCN (icode) (target, args[0].op, args[1].op, + args[2].op, args[3].op); + break; + case 5: + pat = GEN_FCN (icode) (target, args[0].op, args[1].op, + args[2].op, args[3].op, args[4].op); + case 6: + pat = GEN_FCN (icode) (target, args[0].op, args[1].op, + args[2].op, args[3].op, args[4].op, + args[5].op); + break; + default: + gcc_unreachable (); + } + + if (!pat) + return 0; + + if (redundant_embed_rnd) + pat = ix86_erase_embedded_rounding (pat); + + emit_insn (pat); + return target; +} + /* Subroutine of ix86_expand_builtin to take care of special insns with variable number of operands. */ @@ -32882,6 +34239,10 @@ ix86_expand_special_args_builtin (const struct builtin_description *d, case V4DF_FTYPE_PCDOUBLE: case V2DF_FTYPE_PCDOUBLE: case VOID_FTYPE_PVOID: + case V16SI_FTYPE_PV4SI: + case V16SF_FTYPE_PV4SF: + case V8DI_FTYPE_PV4DI: + case V8DF_FTYPE_PV4DF: nargs = 1; klass = load; memory = 0; @@ -32896,12 +34257,15 @@ ix86_expand_special_args_builtin (const struct builtin_description *d, } break; case VOID_FTYPE_PV2SF_V4SF: + case VOID_FTYPE_PV8DI_V8DI: case VOID_FTYPE_PV4DI_V4DI: case VOID_FTYPE_PV2DI_V2DI: case VOID_FTYPE_PCHAR_V32QI: case VOID_FTYPE_PCHAR_V16QI: + case VOID_FTYPE_PFLOAT_V16SF: case VOID_FTYPE_PFLOAT_V8SF: case VOID_FTYPE_PFLOAT_V4SF: + case VOID_FTYPE_PDOUBLE_V8DF: case VOID_FTYPE_PDOUBLE_V4DF: case VOID_FTYPE_PDOUBLE_V2DF: case VOID_FTYPE_PLONGLONG_LONGLONG: @@ -32958,11 +34322,27 @@ ix86_expand_special_args_builtin (const struct builtin_description *d, case VOID_FTYPE_PV4DI_V4DI_V4DI: case VOID_FTYPE_PV4SI_V4SI_V4SI: case VOID_FTYPE_PV2DI_V2DI_V2DI: + case VOID_FTYPE_PV8DF_V8DF_QI: + case VOID_FTYPE_PV16SF_V16SF_HI: + case VOID_FTYPE_PV8DI_V8DI_QI: + case VOID_FTYPE_PV16SI_V16SI_HI: + case VOID_FTYPE_PDOUBLE_V2DF_QI: + case VOID_FTYPE_PFLOAT_V4SF_QI: nargs = 2; klass = store; /* Reserve memory operand for target. */ memory = ARRAY_SIZE (args); break; + case V16SF_FTYPE_PCV16SF_V16SF_HI: + case V16SI_FTYPE_PCV16SI_V16SI_HI: + case V8DF_FTYPE_PCV8DF_V8DF_QI: + case V8DI_FTYPE_PCV8DI_V8DI_QI: + case V2DF_FTYPE_PCDOUBLE_V2DF_QI: + case V4SF_FTYPE_PCFLOAT_V4SF_QI: + nargs = 3; + klass = load; + memory = 0; + break; case VOID_FTYPE_UINT_UINT_UINT: case VOID_FTYPE_UINT64_UINT_UINT: case UCHAR_FTYPE_UINT_UINT_UINT: @@ -33061,9 +34441,13 @@ ix86_expand_special_args_builtin (const struct builtin_description *d, if (VECTOR_MODE_P (mode)) op = safe_vector_operand (op, mode); - gcc_assert (GET_MODE (op) == mode - || GET_MODE (op) == VOIDmode); - op = copy_to_mode_reg (mode, op); + if (GET_MODE (op) == mode || GET_MODE (op) == VOIDmode) + op = copy_to_mode_reg (mode, op); + else + { + op = copy_to_reg (op); + op = simplify_gen_subreg (mode, op, GET_MODE (op), 0); + } } } @@ -33804,6 +35188,38 @@ addcarryx: emit_insn (gen_pop (gen_rtx_REG (word_mode, FLAGS_REG))); return 0; + case IX86_BUILTIN_KORTESTC16: + icode = CODE_FOR_kortestchi; + mode0 = HImode; + mode1 = CCCmode; + goto kortest; + + case IX86_BUILTIN_KORTESTZ16: + icode = CODE_FOR_kortestzhi; + mode0 = HImode; + mode1 = CCZmode; + + kortest: + arg0 = CALL_EXPR_ARG (exp, 0); /* Mask reg src1. */ + arg1 = CALL_EXPR_ARG (exp, 1); /* Mask reg src2. */ + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); + + op0 = copy_to_reg (op0); + op0 = simplify_gen_subreg (mode0, op0, GET_MODE (op0), 0); + op1 = copy_to_reg (op1); + op1 = simplify_gen_subreg (mode0, op1, GET_MODE (op1), 0); + + target = gen_reg_rtx (QImode); + emit_insn (gen_rtx_SET (mode0, target, const0_rtx)); + + /* Emit kortest. */ + emit_insn (GEN_FCN (icode) (op0, op1)); + /* And use setcc to return result from flags. */ + ix86_expand_setcc (target, EQ, + gen_rtx_REG (mode1, FLAGS_REG), const0_rtx); + return target; + case IX86_BUILTIN_GATHERSIV2DF: icode = CODE_FOR_avx2_gathersiv2df; goto gather_gen; @@ -33864,8 +35280,83 @@ addcarryx: case IX86_BUILTIN_GATHERALTDIV8SI: icode = CODE_FOR_avx2_gatherdiv8si; goto gather_gen; + case IX86_BUILTIN_GATHER3SIV16SF: + icode = CODE_FOR_avx512f_gathersiv16sf; + goto gather_gen; + case IX86_BUILTIN_GATHER3SIV8DF: + icode = CODE_FOR_avx512f_gathersiv8df; + goto gather_gen; + case IX86_BUILTIN_GATHER3DIV16SF: + icode = CODE_FOR_avx512f_gatherdiv16sf; + goto gather_gen; + case IX86_BUILTIN_GATHER3DIV8DF: + icode = CODE_FOR_avx512f_gatherdiv8df; + goto gather_gen; + case IX86_BUILTIN_GATHER3SIV16SI: + icode = CODE_FOR_avx512f_gathersiv16si; + goto gather_gen; + case IX86_BUILTIN_GATHER3SIV8DI: + icode = CODE_FOR_avx512f_gathersiv8di; + goto gather_gen; + case IX86_BUILTIN_GATHER3DIV16SI: + icode = CODE_FOR_avx512f_gatherdiv16si; + goto gather_gen; + case IX86_BUILTIN_GATHER3DIV8DI: + icode = CODE_FOR_avx512f_gatherdiv8di; + goto gather_gen; + case IX86_BUILTIN_GATHER3ALTSIV8DF: + icode = CODE_FOR_avx512f_gathersiv8df; + goto gather_gen; + case IX86_BUILTIN_GATHER3ALTDIV16SF: + icode = CODE_FOR_avx512f_gatherdiv16sf; + goto gather_gen; + case IX86_BUILTIN_GATHER3ALTSIV8DI: + icode = CODE_FOR_avx512f_gathersiv8di; + goto gather_gen; + case IX86_BUILTIN_GATHER3ALTDIV16SI: + icode = CODE_FOR_avx512f_gatherdiv16si; + goto gather_gen; + case IX86_BUILTIN_SCATTERSIV16SF: + icode = CODE_FOR_avx512f_scattersiv16sf; + goto scatter_gen; + case IX86_BUILTIN_SCATTERSIV8DF: + icode = CODE_FOR_avx512f_scattersiv8df; + goto scatter_gen; + case IX86_BUILTIN_SCATTERDIV16SF: + icode = CODE_FOR_avx512f_scatterdiv16sf; + goto scatter_gen; + case IX86_BUILTIN_SCATTERDIV8DF: + icode = CODE_FOR_avx512f_scatterdiv8df; + goto scatter_gen; + case IX86_BUILTIN_SCATTERSIV16SI: + icode = CODE_FOR_avx512f_scattersiv16si; + goto scatter_gen; + case IX86_BUILTIN_SCATTERSIV8DI: + icode = CODE_FOR_avx512f_scattersiv8di; + goto scatter_gen; + case IX86_BUILTIN_SCATTERDIV16SI: + icode = CODE_FOR_avx512f_scatterdiv16si; + goto scatter_gen; + case IX86_BUILTIN_SCATTERDIV8DI: + icode = CODE_FOR_avx512f_scatterdiv8di; + goto scatter_gen; + case IX86_BUILTIN_GATHERPFDPS: + icode = CODE_FOR_avx512pf_gatherpfv16si; + goto vec_prefetch_gen; + case IX86_BUILTIN_GATHERPFQPS: + icode = CODE_FOR_avx512pf_gatherpfv8di; + goto vec_prefetch_gen; + case IX86_BUILTIN_SCATTERPFDPS: + icode = CODE_FOR_avx512pf_scatterpfv16si; + goto vec_prefetch_gen; + case IX86_BUILTIN_SCATTERPFQPS: + icode = CODE_FOR_avx512pf_scatterpfv8di; + goto vec_prefetch_gen; gather_gen: + rtx half; + rtx (*gen) (rtx, rtx); + arg0 = CALL_EXPR_ARG (exp, 0); arg1 = CALL_EXPR_ARG (exp, 1); arg2 = CALL_EXPR_ARG (exp, 2); @@ -33888,20 +35379,46 @@ addcarryx: else subtarget = target; - if (fcode == IX86_BUILTIN_GATHERALTSIV4DF - || fcode == IX86_BUILTIN_GATHERALTSIV4DI) + switch (fcode) { - rtx half = gen_reg_rtx (V4SImode); + case IX86_BUILTIN_GATHER3ALTSIV8DF: + case IX86_BUILTIN_GATHER3ALTSIV8DI: + half = gen_reg_rtx (V8SImode); + if (!nonimmediate_operand (op2, V16SImode)) + op2 = copy_to_mode_reg (V16SImode, op2); + emit_insn (gen_vec_extract_lo_v16si (half, op2)); + op2 = half; + break; + case IX86_BUILTIN_GATHERALTSIV4DF: + case IX86_BUILTIN_GATHERALTSIV4DI: + half = gen_reg_rtx (V4SImode); if (!nonimmediate_operand (op2, V8SImode)) op2 = copy_to_mode_reg (V8SImode, op2); emit_insn (gen_vec_extract_lo_v8si (half, op2)); op2 = half; - } - else if (fcode == IX86_BUILTIN_GATHERALTDIV8SF - || fcode == IX86_BUILTIN_GATHERALTDIV8SI) - { - rtx (*gen) (rtx, rtx); - rtx half = gen_reg_rtx (mode0); + break; + case IX86_BUILTIN_GATHER3ALTDIV16SF: + case IX86_BUILTIN_GATHER3ALTDIV16SI: + half = gen_reg_rtx (mode0); + if (mode0 == V8SFmode) + gen = gen_vec_extract_lo_v16sf; + else + gen = gen_vec_extract_lo_v16si; + if (!nonimmediate_operand (op0, GET_MODE (op0))) + op0 = copy_to_mode_reg (GET_MODE (op0), op0); + emit_insn (gen (half, op0)); + op0 = half; + if (GET_MODE (op3) != VOIDmode) + { + if (!nonimmediate_operand (op3, GET_MODE (op3))) + op3 = copy_to_mode_reg (GET_MODE (op3), op3); + emit_insn (gen (half, op3)); + op3 = half; + } + break; + case IX86_BUILTIN_GATHERALTDIV8SF: + case IX86_BUILTIN_GATHERALTDIV8SI: + half = gen_reg_rtx (mode0); if (mode0 == V4SFmode) gen = gen_vec_extract_lo_v8sf; else @@ -33910,10 +35427,16 @@ addcarryx: op0 = copy_to_mode_reg (GET_MODE (op0), op0); emit_insn (gen (half, op0)); op0 = half; - if (!nonimmediate_operand (op3, GET_MODE (op3))) - op3 = copy_to_mode_reg (GET_MODE (op3), op3); - emit_insn (gen (half, op3)); - op3 = half; + if (GET_MODE (op3) != VOIDmode) + { + if (!nonimmediate_operand (op3, GET_MODE (op3))) + op3 = copy_to_mode_reg (GET_MODE (op3), op3); + emit_insn (gen (half, op3)); + op3 = half; + } + break; + default: + break; } /* Force memory operand only with base register here. But we @@ -33927,11 +35450,19 @@ addcarryx: op1 = copy_to_mode_reg (Pmode, op1); if (!insn_data[icode].operand[3].predicate (op2, mode2)) op2 = copy_to_mode_reg (mode2, op2); - if (!insn_data[icode].operand[4].predicate (op3, mode3)) - op3 = copy_to_mode_reg (mode3, op3); + if (GET_MODE (op3) == mode3 || GET_MODE (op3) == VOIDmode) + { + if (!insn_data[icode].operand[4].predicate (op3, mode3)) + op3 = copy_to_mode_reg (mode3, op3); + } + else + { + op3 = copy_to_reg (op3); + op3 = simplify_gen_subreg (mode3, op3, GET_MODE (op3), 0); + } if (!insn_data[icode].operand[5].predicate (op4, mode4)) { - error ("last argument must be scale 1, 2, 4, 8"); + error ("the last argument must be scale 1, 2, 4, 8"); return const0_rtx; } @@ -33941,7 +35472,12 @@ addcarryx: previous contents. */ if (optimize) { - if (TREE_CODE (arg3) == VECTOR_CST) + if (TREE_CODE (arg3) == INTEGER_CST) + { + if (integer_all_onesp (arg3)) + op0 = pc_rtx; + } + else if (TREE_CODE (arg3) == VECTOR_CST) { unsigned int negative = 0; for (i = 0; i < VECTOR_CST_NELTS (arg3); ++i) @@ -33957,7 +35493,8 @@ addcarryx: if (negative == TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg3))) op0 = pc_rtx; } - else if (TREE_CODE (arg3) == SSA_NAME) + else if (TREE_CODE (arg3) == SSA_NAME + && TREE_CODE (TREE_TYPE (arg3)) == VECTOR_TYPE) { /* Recognize also when mask is like: __v2df src = _mm_setzero_pd (); @@ -34002,22 +35539,146 @@ addcarryx: return const0_rtx; emit_insn (pat); - if (fcode == IX86_BUILTIN_GATHERDIV8SF - || fcode == IX86_BUILTIN_GATHERDIV8SI) + switch (fcode) { - enum machine_mode tmode = GET_MODE (subtarget) == V8SFmode - ? V4SFmode : V4SImode; + case IX86_BUILTIN_GATHER3DIV16SF: if (target == NULL_RTX) - target = gen_reg_rtx (tmode); - if (tmode == V4SFmode) - emit_insn (gen_vec_extract_lo_v8sf (target, subtarget)); - else - emit_insn (gen_vec_extract_lo_v8si (target, subtarget)); + target = gen_reg_rtx (V8SFmode); + emit_insn (gen_vec_extract_lo_v16sf (target, subtarget)); + break; + case IX86_BUILTIN_GATHER3DIV16SI: + if (target == NULL_RTX) + target = gen_reg_rtx (V8SImode); + emit_insn (gen_vec_extract_lo_v16si (target, subtarget)); + break; + case IX86_BUILTIN_GATHERDIV8SF: + if (target == NULL_RTX) + target = gen_reg_rtx (V4SFmode); + emit_insn (gen_vec_extract_lo_v8sf (target, subtarget)); + break; + case IX86_BUILTIN_GATHERDIV8SI: + if (target == NULL_RTX) + target = gen_reg_rtx (V4SImode); + emit_insn (gen_vec_extract_lo_v8si (target, subtarget)); + break; + default: + target = subtarget; + break; + } + return target; + + scatter_gen: + arg0 = CALL_EXPR_ARG (exp, 0); + arg1 = CALL_EXPR_ARG (exp, 1); + arg2 = CALL_EXPR_ARG (exp, 2); + arg3 = CALL_EXPR_ARG (exp, 3); + arg4 = CALL_EXPR_ARG (exp, 4); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); + op2 = expand_normal (arg2); + op3 = expand_normal (arg3); + op4 = expand_normal (arg4); + mode1 = insn_data[icode].operand[1].mode; + mode2 = insn_data[icode].operand[2].mode; + mode3 = insn_data[icode].operand[3].mode; + mode4 = insn_data[icode].operand[4].mode; + + /* Force memory operand only with base register here. But we + don't want to do it on memory operand for other builtin + functions. */ + op0 = force_reg (Pmode, convert_to_mode (Pmode, op0, 1)); + + if (!insn_data[icode].operand[0].predicate (op0, Pmode)) + op0 = copy_to_mode_reg (Pmode, op0); + + if (GET_MODE (op1) == mode1 || GET_MODE (op1) == VOIDmode) + { + if (!insn_data[icode].operand[1].predicate (op1, mode1)) + op1 = copy_to_mode_reg (mode1, op1); } else - target = subtarget; + { + op1 = copy_to_reg (op1); + op1 = simplify_gen_subreg (mode1, op1, GET_MODE (op1), 0); + } - return target; + if (!insn_data[icode].operand[2].predicate (op2, mode2)) + op2 = copy_to_mode_reg (mode2, op2); + + if (!insn_data[icode].operand[3].predicate (op3, mode3)) + op3 = copy_to_mode_reg (mode3, op3); + + if (!insn_data[icode].operand[4].predicate (op4, mode4)) + { + error ("the last argument must be scale 1, 2, 4, 8"); + return const0_rtx; + } + + pat = GEN_FCN (icode) (op0, op1, op2, op3, op4); + if (! pat) + return const0_rtx; + + emit_insn (pat); + return 0; + + vec_prefetch_gen: + arg0 = CALL_EXPR_ARG (exp, 0); + arg1 = CALL_EXPR_ARG (exp, 1); + arg2 = CALL_EXPR_ARG (exp, 2); + arg3 = CALL_EXPR_ARG (exp, 3); + arg4 = CALL_EXPR_ARG (exp, 4); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); + op2 = expand_normal (arg2); + op3 = expand_normal (arg3); + op4 = expand_normal (arg4); + mode0 = insn_data[icode].operand[0].mode; + mode1 = insn_data[icode].operand[1].mode; + mode3 = insn_data[icode].operand[3].mode; + mode4 = insn_data[icode].operand[4].mode; + + if (GET_MODE (op0) == mode0 + || (GET_MODE (op0) == VOIDmode && op0 != constm1_rtx)) + { + if (!insn_data[icode].operand[0].predicate (op0, mode0)) + op0 = copy_to_mode_reg (mode0, op0); + } + else if (op0 != constm1_rtx) + { + op0 = copy_to_reg (op0); + op0 = simplify_gen_subreg (mode0, op0, GET_MODE (op0), 0); + } + + if (!insn_data[icode].operand[1].predicate (op1, mode1)) + op1 = copy_to_mode_reg (mode1, op1); + + /* Force memory operand only with base register here. But we + don't want to do it on memory operand for other builtin + functions. */ + op2 = force_reg (Pmode, convert_to_mode (Pmode, op2, 1)); + + if (!insn_data[icode].operand[2].predicate (op2, Pmode)) + op2 = copy_to_mode_reg (Pmode, op2); + + if (!insn_data[icode].operand[3].predicate (op3, mode3)) + { + error ("the forth argument must be scale 1, 2, 4, 8"); + return const0_rtx; + } + + if (!insn_data[icode].operand[4].predicate (op4, mode4)) + { + error ("the last argument must be hint 0 or 1"); + return const0_rtx; + } + + pat = GEN_FCN (icode) (op0, op1, op2, op3, op4); + if (! pat) + return const0_rtx; + + emit_insn (pat); + + return 0; case IX86_BUILTIN_XABORT: icode = CODE_FOR_xabort; @@ -34061,6 +35722,10 @@ addcarryx: if (d->code == fcode) return ix86_expand_sse_comi (d, exp, target); + for (i = 0, d = bdesc_round_args; i < ARRAY_SIZE (bdesc_round_args); i++, d++) + if (d->code == fcode) + return ix86_expand_round_builtin (d, exp, target); + for (i = 0, d = bdesc_pcmpestr; i < ARRAY_SIZE (bdesc_pcmpestr); i++, d++) diff --git a/gcc/config/i386/immintrin.h b/gcc/config/i386/immintrin.h index e825c34a256..fa75a30ba79 100644 --- a/gcc/config/i386/immintrin.h +++ b/gcc/config/i386/immintrin.h @@ -42,6 +42,14 @@ #include +#include + +#include + +#include + +#include + #include #include diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ed9467b04bb..240a964a47e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,12 +1,26 @@ 2013-12-31 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * gcc.target/i386/avx-1.c: Extend to AVX-512. + * gcc.target/i386/sse-22.c: Ditto. + * gcc.target/i386/sse-23.c: Ditto. + +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin * gcc.target/i386/pr49002-2.c: allow vmovapd generation. diff --git a/gcc/testsuite/gcc.target/i386/avx-1.c b/gcc/testsuite/gcc.target/i386/avx-1.c index 7496746aec8..75b6f04e24b 100644 --- a/gcc/testsuite/gcc.target/i386/avx-1.c +++ b/gcc/testsuite/gcc.target/i386/avx-1.c @@ -166,6 +166,181 @@ /* rtmintrin.h */ #define __builtin_ia32_xabort(I) __builtin_ia32_xabort(0) +/* avx512fintrin.h */ +#define __builtin_ia32_addpd512_mask(A, B, C, D, E) __builtin_ia32_addpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_addps512_mask(A, B, C, D, E) __builtin_ia32_addps512_mask(A, B, C, D, 1) +#define __builtin_ia32_alignd512_mask(A, B, F, D, E) __builtin_ia32_alignd512_mask(A, B, 1, D, E) +#define __builtin_ia32_alignq512_mask(A, B, F, D, E) __builtin_ia32_alignq512_mask(A, B, 1, D, E) +#define __builtin_ia32_cmpd512_mask(A, B, E, D) __builtin_ia32_cmpd512_mask(A, B, 1, D) +#define __builtin_ia32_cmppd512_mask(A, B, F, D, E) __builtin_ia32_cmppd512_mask(A, B, 1, D, 5) +#define __builtin_ia32_cmpps512_mask(A, B, F, D, E) __builtin_ia32_cmpps512_mask(A, B, 1, D, 5) +#define __builtin_ia32_cmpq512_mask(A, B, E, D) __builtin_ia32_cmpq512_mask(A, B, 1, D) +#define __builtin_ia32_cmpsd_mask(A, B, F, D, E) __builtin_ia32_cmpsd_mask(A, B, 1, D, 5) +#define __builtin_ia32_cmpss_mask(A, B, F, D, E) __builtin_ia32_cmpss_mask(A, B, 1, D, 5) +#define __builtin_ia32_cvtdq2ps512_mask(A, B, C, D) __builtin_ia32_cvtdq2ps512_mask(A, B, C, 1) +#define __builtin_ia32_cvtpd2dq512_mask(A, B, C, D) __builtin_ia32_cvtpd2dq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtpd2ps512_mask(A, B, C, D) __builtin_ia32_cvtpd2ps512_mask(A, B, C, 1) +#define __builtin_ia32_cvtpd2udq512_mask(A, B, C, D) __builtin_ia32_cvtpd2udq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtps2dq512_mask(A, B, C, D) __builtin_ia32_cvtps2dq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtps2pd512_mask(A, B, C, D) __builtin_ia32_cvtps2pd512_mask(A, B, C, 5) +#define __builtin_ia32_cvtps2udq512_mask(A, B, C, D) __builtin_ia32_cvtps2udq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtsd2ss_mask(A, B, C, D, E) __builtin_ia32_cvtsd2ss_mask(A, B, C, D, 1) +#define __builtin_ia32_cvtsi2sd64(A, B, C) __builtin_ia32_cvtsi2sd64(A, B, 1) +#define __builtin_ia32_cvtsi2ss32(A, B, C) __builtin_ia32_cvtsi2ss32(A, B, 1) +#define __builtin_ia32_cvtsi2ss64(A, B, C) __builtin_ia32_cvtsi2ss64(A, B, 1) +#define __builtin_ia32_cvtss2sd_mask(A, B, C, D, E) __builtin_ia32_cvtss2sd_mask(A, B, C, D, 5) +#define __builtin_ia32_cvttpd2dq512_mask(A, B, C, D) __builtin_ia32_cvttpd2dq512_mask(A, B, C, 5) +#define __builtin_ia32_cvttpd2udq512_mask(A, B, C, D) __builtin_ia32_cvttpd2udq512_mask(A, B, C, 5) +#define __builtin_ia32_cvttps2dq512_mask(A, B, C, D) __builtin_ia32_cvttps2dq512_mask(A, B, C, 5) +#define __builtin_ia32_cvttps2udq512_mask(A, B, C, D) __builtin_ia32_cvttps2udq512_mask(A, B, C, 5) +#define __builtin_ia32_cvtudq2ps512_mask(A, B, C, D) __builtin_ia32_cvtudq2ps512_mask(A, B, C, 1) +#define __builtin_ia32_cvtusi2sd64(A, B, C) __builtin_ia32_cvtusi2sd64(A, B, 1) +#define __builtin_ia32_cvtusi2ss32(A, B, C) __builtin_ia32_cvtusi2ss32(A, B, 1) +#define __builtin_ia32_cvtusi2ss64(A, B, C) __builtin_ia32_cvtusi2ss64(A, B, 1) +#define __builtin_ia32_divpd512_mask(A, B, C, D, E) __builtin_ia32_divpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_divps512_mask(A, B, C, D, E) __builtin_ia32_divps512_mask(A, B, C, D, 1) +#define __builtin_ia32_extractf32x4_mask(A, E, C, D) __builtin_ia32_extractf32x4_mask(A, 1, C, D) +#define __builtin_ia32_extractf64x4_mask(A, E, C, D) __builtin_ia32_extractf64x4_mask(A, 1, C, D) +#define __builtin_ia32_extracti32x4_mask(A, E, C, D) __builtin_ia32_extracti32x4_mask(A, 1, C, D) +#define __builtin_ia32_extracti64x4_mask(A, E, C, D) __builtin_ia32_extracti64x4_mask(A, 1, C, D) +#define __builtin_ia32_fixupimmpd512_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmpd512_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmpd512_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmpd512_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmps512_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmps512_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmps512_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmps512_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmsd_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmsd_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmsd_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmsd_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmss_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmss_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmss_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmss_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_gatherdiv8df(A, B, C, D, F) __builtin_ia32_gatherdiv8df(A, B, C, D, 1) +#define __builtin_ia32_gatherdiv8di(A, B, C, D, F) __builtin_ia32_gatherdiv8di(A, B, C, D, 1) +#define __builtin_ia32_gatherdiv16sf(A, B, C, D, F) __builtin_ia32_gatherdiv16sf(A, B, C, D, 1) +#define __builtin_ia32_gatherdiv16si(A, B, C, D, F) __builtin_ia32_gatherdiv16si(A, B, C, D, 1) +#define __builtin_ia32_gathersiv16sf(A, B, C, D, F) __builtin_ia32_gathersiv16sf(A, B, C, D, 1) +#define __builtin_ia32_gathersiv16si(A, B, C, D, F) __builtin_ia32_gathersiv16si(A, B, C, D, 1) +#define __builtin_ia32_gathersiv8df(A, B, C, D, F) __builtin_ia32_gathersiv8df(A, B, C, D, 1) +#define __builtin_ia32_gathersiv8di(A, B, C, D, F) __builtin_ia32_gathersiv8di(A, B, C, D, 1) +#define __builtin_ia32_getexppd512_mask(A, B, C, D) __builtin_ia32_getexppd512_mask(A, B, C, 5) +#define __builtin_ia32_getexpps512_mask(A, B, C, D) __builtin_ia32_getexpps512_mask(A, B, C, 5) +#define __builtin_ia32_getmantpd512_mask(A, F, C, D, E) __builtin_ia32_getmantpd512_mask(A, 1, C, D, 5) +#define __builtin_ia32_getmantps512_mask(A, F, C, D, E) __builtin_ia32_getmantps512_mask(A, 1, C, D, 5) +#define __builtin_ia32_insertf32x4_mask(A, B, F, D, E) __builtin_ia32_insertf32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_insertf64x4_mask(A, B, F, D, E) __builtin_ia32_insertf64x4_mask(A, B, 1, D, E) +#define __builtin_ia32_inserti32x4_mask(A, B, F, D, E) __builtin_ia32_inserti32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_inserti64x4_mask(A, B, F, D, E) __builtin_ia32_inserti64x4_mask(A, B, 1, D, E) +#define __builtin_ia32_maxpd512_mask(A, B, C, D, E) __builtin_ia32_maxpd512_mask(A, B, C, D, 5) +#define __builtin_ia32_maxps512_mask(A, B, C, D, E) __builtin_ia32_maxps512_mask(A, B, C, D, 5) +#define __builtin_ia32_minpd512_mask(A, B, C, D, E) __builtin_ia32_minpd512_mask(A, B, C, D, 5) +#define __builtin_ia32_minps512_mask(A, B, C, D, E) __builtin_ia32_minps512_mask(A, B, C, D, 5) +#define __builtin_ia32_mulpd512_mask(A, B, C, D, E) __builtin_ia32_mulpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_mulps512_mask(A, B, C, D, E) __builtin_ia32_mulps512_mask(A, B, C, D, 1) +#define __builtin_ia32_permdf512_mask(A, E, C, D) __builtin_ia32_permdf512_mask(A, 1, C, D) +#define __builtin_ia32_permdi512_mask(A, E, C, D) __builtin_ia32_permdi512_mask(A, 1, C, D) +#define __builtin_ia32_prold512_mask(A, E, C, D) __builtin_ia32_prold512_mask(A, 1, C, D) +#define __builtin_ia32_prolq512_mask(A, E, C, D) __builtin_ia32_prolq512_mask(A, 1, C, D) +#define __builtin_ia32_prord512_mask(A, E, C, D) __builtin_ia32_prord512_mask(A, 1, C, D) +#define __builtin_ia32_prorq512_mask(A, E, C, D) __builtin_ia32_prorq512_mask(A, 1, C, D) +#define __builtin_ia32_pshufd512_mask(A, E, C, D) __builtin_ia32_pshufd512_mask(A, 1, C, D) +#define __builtin_ia32_pslldi512_mask(A, E, C, D) __builtin_ia32_pslldi512_mask(A, 1, C, D) +#define __builtin_ia32_psllqi512_mask(A, E, C, D) __builtin_ia32_psllqi512_mask(A, 1, C, D) +#define __builtin_ia32_psradi512_mask(A, E, C, D) __builtin_ia32_psradi512_mask(A, 1, C, D) +#define __builtin_ia32_psraqi512_mask(A, E, C, D) __builtin_ia32_psraqi512_mask(A, 1, C, D) +#define __builtin_ia32_psrldi512_mask(A, E, C, D) __builtin_ia32_psrldi512_mask(A, 1, C, D) +#define __builtin_ia32_psrlqi512_mask(A, E, C, D) __builtin_ia32_psrlqi512_mask(A, 1, C, D) +#define __builtin_ia32_pternlogd512_mask(A, B, C, F, E) __builtin_ia32_pternlogd512_mask(A, B, C, 1, E) +#define __builtin_ia32_pternlogd512_maskz(A, B, C, F, E) __builtin_ia32_pternlogd512_maskz(A, B, C, 1, E) +#define __builtin_ia32_pternlogq512_mask(A, B, C, F, E) __builtin_ia32_pternlogq512_mask(A, B, C, 1, E) +#define __builtin_ia32_pternlogq512_maskz(A, B, C, F, E) __builtin_ia32_pternlogq512_maskz(A, B, C, 1, E) +#define __builtin_ia32_rndscalepd_mask(A, F, C, D, E) __builtin_ia32_rndscalepd_mask(A, 1, C, D, 5) +#define __builtin_ia32_rndscaleps_mask(A, F, C, D, E) __builtin_ia32_rndscaleps_mask(A, 1, C, D, 5) +#define __builtin_ia32_rndscalesd_mask(A, B, I, D, E, F) __builtin_ia32_rndscalesd_mask(A, B, 1, D, E, 5) +#define __builtin_ia32_rndscaless_mask(A, B, I, D, E, F) __builtin_ia32_rndscaless_mask(A, B, 1, D, E, 5) +#define __builtin_ia32_scalefpd512_mask(A, B, C, D, E) __builtin_ia32_scalefpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_scalefps512_mask(A, B, C, D, E) __builtin_ia32_scalefps512_mask(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv8df(A, B, C, D, F) __builtin_ia32_scatterdiv8df(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv8di(A, B, C, D, F) __builtin_ia32_scatterdiv8di(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv16sf(A, B, C, D, F) __builtin_ia32_scatterdiv16sf(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv16si(A, B, C, D, F) __builtin_ia32_scatterdiv16si(A, B, C, D, 1) +#define __builtin_ia32_scattersiv16sf(A, B, C, D, F) __builtin_ia32_scattersiv16sf(A, B, C, D, 1) +#define __builtin_ia32_scattersiv16si(A, B, C, D, F) __builtin_ia32_scattersiv16si(A, B, C, D, 1) +#define __builtin_ia32_scattersiv8df(A, B, C, D, F) __builtin_ia32_scattersiv8df(A, B, C, D, 1) +#define __builtin_ia32_scattersiv8di(A, B, C, D, F) __builtin_ia32_scattersiv8di(A, B, C, D, 1) +#define __builtin_ia32_shuf_f32x4_mask(A, B, F, D, E) __builtin_ia32_shuf_f32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_shuf_f64x2_mask(A, B, F, D, E) __builtin_ia32_shuf_f64x2_mask(A, B, 1, D, E) +#define __builtin_ia32_shuf_i32x4_mask(A, B, F, D, E) __builtin_ia32_shuf_i32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_shuf_i64x2_mask(A, B, F, D, E) __builtin_ia32_shuf_i64x2_mask(A, B, 1, D, E) +#define __builtin_ia32_shufpd512_mask(A, B, F, D, E) __builtin_ia32_shufpd512_mask(A, B, 1, D, E) +#define __builtin_ia32_shufps512_mask(A, B, F, D, E) __builtin_ia32_shufps512_mask(A, B, 1, D, E) +#define __builtin_ia32_sqrtpd512_mask(A, B, C, D) __builtin_ia32_sqrtpd512_mask(A, B, C, 1) +#define __builtin_ia32_sqrtps512_mask(A, B, C, D) __builtin_ia32_sqrtps512_mask(A, B, C, 1) +#define __builtin_ia32_sqrtsd_mask(A, B, C, D, E) __builtin_ia32_sqrtsd_mask(A, B, C, D, 1) +#define __builtin_ia32_sqrtss_mask(A, B, C, D, E) __builtin_ia32_sqrtss_mask(A, B, C, D, 1) +#define __builtin_ia32_subpd512_mask(A, B, C, D, E) __builtin_ia32_subpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_subps512_mask(A, B, C, D, E) __builtin_ia32_subps512_mask(A, B, C, D, 1) +#define __builtin_ia32_ucmpd512_mask(A, B, E, D) __builtin_ia32_ucmpd512_mask(A, B, 1, D) +#define __builtin_ia32_ucmpq512_mask(A, B, E, D) __builtin_ia32_ucmpq512_mask(A, B, 1, D) +#define __builtin_ia32_vcomisd(A, B, C, D) __builtin_ia32_vcomisd(A, B, 1, 5) +#define __builtin_ia32_vcomiss(A, B, C, D) __builtin_ia32_vcomiss(A, B, 1, 5) +#define __builtin_ia32_vcvtph2ps512_mask(A, B, C, D) __builtin_ia32_vcvtph2ps512_mask(A, B, C, 5) +#define __builtin_ia32_vcvtps2ph512_mask(A, E, C, D) __builtin_ia32_vcvtps2ph512_mask(A, 1, C, D) +#define __builtin_ia32_vcvtsd2si32(A, B) __builtin_ia32_vcvtsd2si32(A, 1) +#define __builtin_ia32_vcvtsd2si64(A, B) __builtin_ia32_vcvtsd2si64(A, 1) +#define __builtin_ia32_vcvtsd2usi32(A, B) __builtin_ia32_vcvtsd2usi32(A, 1) +#define __builtin_ia32_vcvtsd2usi64(A, B) __builtin_ia32_vcvtsd2usi64(A, 1) +#define __builtin_ia32_vcvtss2si32(A, B) __builtin_ia32_vcvtss2si32(A, 1) +#define __builtin_ia32_vcvtss2si64(A, B) __builtin_ia32_vcvtss2si64(A, 1) +#define __builtin_ia32_vcvtss2usi32(A, B) __builtin_ia32_vcvtss2usi32(A, 1) +#define __builtin_ia32_vcvtss2usi64(A, B) __builtin_ia32_vcvtss2usi64(A, 1) +#define __builtin_ia32_vcvttsd2si32(A, B) __builtin_ia32_vcvttsd2si32(A, 5) +#define __builtin_ia32_vcvttsd2si64(A, B) __builtin_ia32_vcvttsd2si64(A, 5) +#define __builtin_ia32_vcvttsd2usi32(A, B) __builtin_ia32_vcvttsd2usi32(A, 5) +#define __builtin_ia32_vcvttsd2usi64(A, B) __builtin_ia32_vcvttsd2usi64(A, 5) +#define __builtin_ia32_vcvttss2si32(A, B) __builtin_ia32_vcvttss2si32(A, 5) +#define __builtin_ia32_vcvttss2si64(A, B) __builtin_ia32_vcvttss2si64(A, 5) +#define __builtin_ia32_vcvttss2usi32(A, B) __builtin_ia32_vcvttss2usi32(A, 5) +#define __builtin_ia32_vcvttss2usi64(A, B) __builtin_ia32_vcvttss2usi64(A, 5) +#define __builtin_ia32_vfmaddpd512_mask(A, B, C, D, E) __builtin_ia32_vfmaddpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddpd512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddpd512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddps512_mask(A, B, C, D, E) __builtin_ia32_vfmaddps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddps512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddps512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddps512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsd3_mask(A, B, C, D, E) __builtin_ia32_vfmaddsd3_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsd3_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsd3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsd3_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsd3_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddss3_mask(A, B, C, D, E) __builtin_ia32_vfmaddss3_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddss3_mask3(A, B, C, D, E) __builtin_ia32_vfmaddss3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddss3_maskz(A, B, C, D, E) __builtin_ia32_vfmaddss3_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubpd512_mask(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubpd512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubps512_mask(A, B, C, D, E) __builtin_ia32_vfmaddsubps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubps512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsubps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubps512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsubps512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmsubaddpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubaddpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubaddps512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubaddps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubps512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubsd3_mask3(A, B, C, D, E) __builtin_ia32_vfmsubsd3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubss3_mask3(A, B, C, D, E) __builtin_ia32_vfmsubss3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfnmaddpd512_mask(A, B, C, D, E) __builtin_ia32_vfnmaddpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmaddps512_mask(A, B, C, D, E) __builtin_ia32_vfnmaddps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubpd512_mask(A, B, C, D, E) __builtin_ia32_vfnmsubpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfnmsubpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubps512_mask(A, B, C, D, E) __builtin_ia32_vfnmsubps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubps512_mask3(A, B, C, D, E) __builtin_ia32_vfnmsubps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vpermilpd512_mask(A, E, C, D) __builtin_ia32_vpermilpd512_mask(A, 1, C, D) +#define __builtin_ia32_vpermilps512_mask(A, E, C, D) __builtin_ia32_vpermilps512_mask(A, 1, C, D) +#define __builtin_ia32_exp2ps_mask(A, B, C, D) __builtin_ia32_exp2ps_mask(A, B, C, 1) +#define __builtin_ia32_exp2pd_mask(A, B, C, D) __builtin_ia32_exp2pd_mask(A, B, C, 1) +#define __builtin_ia32_rcp28ps_mask(A, B, C, D) __builtin_ia32_exp2ps_mask(A, B, C, 1) +#define __builtin_ia32_rcp28pd_mask(A, B, C, D) __builtin_ia32_exp2pd_mask(A, B, C, 1) +#define __builtin_ia32_rsqrt28ps_mask(A, B, C, D) __builtin_ia32_rsqrt28ps_mask(A, B, C, 1) +#define __builtin_ia32_rsqrt28pd_mask(A, B, C, D) __builtin_ia32_rsqrt28pd_mask(A, B, C, 1) +#define __builtin_ia32_gatherpfdps(A, B, C, D, E) __builtin_ia32_gatherpfdps(A, B, C, 1, 1) +#define __builtin_ia32_gatherpfqps(A, B, C, D, E) __builtin_ia32_gatherpfqps(A, B, C, 1, 1) +#define __builtin_ia32_scatterpfdps(A, B, C, D, E) __builtin_ia32_scatterpfdps(A, B, C, 1, 1) +#define __builtin_ia32_scatterpfqps(A, B, C, D, E) __builtin_ia32_scatterpfqps(A, B, C, 1, 1) + #include #include #include diff --git a/gcc/testsuite/gcc.target/i386/sse-22.c b/gcc/testsuite/gcc.target/i386/sse-22.c index 8e4c4bd3ebd..6f625ad11c9 100644 --- a/gcc/testsuite/gcc.target/i386/sse-22.c +++ b/gcc/testsuite/gcc.target/i386/sse-22.c @@ -30,6 +30,10 @@ type _CONCAT(_,func) (op1_type A, int const I, int const L) \ { return func (A, imm1, imm2); } +#define test_1y(func, type, op1_type, imm1, imm2, imm3) \ + type _CONCAT(_,func) (op1_type A, int const I, int const L, int const R)\ + { return func (A, imm1, imm2, imm3); } + #define test_2(func, type, op1_type, op2_type, imm) \ type _CONCAT(_,func) (op1_type A, op2_type B, int const I) \ { return func (A, B, imm); } @@ -38,19 +42,64 @@ type _CONCAT(_,func) (op1_type A, op2_type B, int const I, int const L) \ { return func (A, B, imm1, imm2); } +#define test_2y(func, type, op1_type, op2_type, imm1, imm2, imm3) \ + type _CONCAT(_,func) (op1_type A, op2_type B, int const I, int const L,\ + int const R) \ + { return func (A, B, imm1, imm2, imm3); } + +#define test_2vx(func, op1_type, op2_type, imm1, imm2) \ + _CONCAT(_,func) (op1_type A, op2_type B, int const I, int const L) \ + { func (A, B, imm1, imm2); } + #define test_3(func, type, op1_type, op2_type, op3_type, imm) \ type _CONCAT(_,func) (op1_type A, op2_type B, \ op3_type C, int const I) \ { return func (A, B, C, imm); } +#define test_3x(func, type, op1_type, op2_type, op3_type, imm1, imm2) \ + type _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, int const I, int const L) \ + { return func (A, B, C, imm1, imm2); } + +#define test_3y(func, type, op1_type, op2_type, op3_type, imm1, imm2, imm3) \ + type _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, int const I, int const L, int const R) \ + { return func (A, B, C, imm1, imm2, imm3); } + +#define test_3v(func, op1_type, op2_type, op3_type, imm) \ + _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, int const I) \ + { func (A, B, C, imm); } + +#define test_3vx(func, op1_type, op2_type, op3_type, imm1, imm2) \ + _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, int const I, int const L) \ + { func (A, B, C, imm1, imm2); } + #define test_4(func, type, op1_type, op2_type, op3_type, op4_type, imm) \ type _CONCAT(_,func) (op1_type A, op2_type B, \ op3_type C, op4_type D, int const I) \ { return func (A, B, C, D, imm); } +#define test_4x(func, type, op1_type, op2_type, op3_type, op4_type, imm1, imm2) \ + type _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, op4_type D, int const I, int const L) \ + { return func (A, B, C, D, imm1, imm2); } + +#define test_4y(func, type, op1_type, op2_type, op3_type, op4_type, imm1, imm2, imm3) \ + type _CONCAT(_,func) (op1_type A, op2_type B, op3_type C, \ + op4_type D, int const I, int const L, int const R) \ + { return func (A, B, C, D, imm1, imm2, imm3); } + + +#define test_4v(func, op1_type, op2_type, op3_type, op4_type, imm) \ + _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, op4_type D, int const I) \ + { func (A, B, C, D, imm); } + #ifndef DIFFERENT_PRAGMAS -#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt") +#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512pf,avx512er,avx512cd") #endif /* Following intrinsics require immediate arguments. They @@ -163,9 +212,9 @@ test_4 (_mm_cmpestro, int, __m128i, int, __m128i, int, 1) test_4 (_mm_cmpestrs, int, __m128i, int, __m128i, int, 1) test_4 (_mm_cmpestrz, int, __m128i, int, __m128i, int, 1) -/* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM) */ +/* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F) */ #ifdef DIFFERENT_PRAGMAS -#pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm") +#pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,avx512f,avx512er,avx512cd,avx512pf") #endif #include test_1 (_cvtss_sh, unsigned short, float, 1) @@ -248,6 +297,375 @@ test_2 ( _mm256_i64gather_epi32, __m128i, int const *, __m256i, 1) /* rtmintrin.h */ test_0 ( _xabort, void, 1) +/* avx512fintrin.h */ +test_1 (_mm512_cvt_roundepi32_ps, __m512, __m512i, 1) +test_1 (_mm512_cvt_roundepu32_ps, __m512, __m512i, 1) +test_1 (_mm512_cvt_roundpd_epi32, __m256i, __m512d, 1) +test_1 (_mm512_cvt_roundpd_epu32, __m256i, __m512d, 1) +test_1 (_mm512_cvt_roundpd_ps, __m256, __m512d, 1) +test_1 (_mm512_cvt_roundph_ps, __m512, __m256i, 5) +test_1 (_mm512_cvt_roundps_epi32, __m512i, __m512, 1) +test_1 (_mm512_cvt_roundps_epu32, __m512i, __m512, 1) +test_1 (_mm512_cvt_roundps_pd, __m512d, __m256, 5) +test_1 (_mm512_cvtps_ph, __m256i, __m512, 1) +test_1 (_mm512_cvtt_roundpd_epi32, __m256i, __m512d, 5) +test_1 (_mm512_cvtt_roundpd_epu32, __m256i, __m512d, 5) +test_1 (_mm512_cvtt_roundps_epi32, __m512i, __m512, 5) +test_1 (_mm512_cvtt_roundps_epu32, __m512i, __m512, 5) +test_1 (_mm512_extractf32x4_ps, __m128, __m512, 1) +test_1 (_mm512_extractf64x4_pd, __m256d, __m512d, 1) +test_1 (_mm512_extracti32x4_epi32, __m128i, __m512i, 1) +test_1 (_mm512_extracti64x4_epi64, __m256i, __m512i, 1) +test_1 (_mm512_getexp_round_pd, __m512d, __m512d, 5) +test_1 (_mm512_getexp_round_ps, __m512, __m512, 5) +test_1y (_mm512_getmant_round_pd, __m512d, __m512d, 1, 1, 5) +test_1y (_mm512_getmant_round_ps, __m512, __m512, 1, 1, 5) +test_1 (_mm512_permute_pd, __m512d, __m512d, 1) +test_1 (_mm512_permute_ps, __m512, __m512, 1) +test_1 (_mm512_permutex_epi64, __m512i, __m512i, 1) +test_1 (_mm512_permutex_pd, __m512d, __m512d, 1) +test_1 (_mm512_rol_epi32, __m512i, __m512i, 1) +test_1 (_mm512_rol_epi64, __m512i, __m512i, 1) +test_1 (_mm512_ror_epi32, __m512i, __m512i, 1) +test_1 (_mm512_ror_epi64, __m512i, __m512i, 1) +test_1 (_mm512_shuffle_epi32, __m512i, __m512i, 1) +test_1 (_mm512_slli_epi32, __m512i, __m512i, 1) +test_1 (_mm512_slli_epi64, __m512i, __m512i, 1) +test_1 (_mm512_sqrt_round_pd, __m512d, __m512d, 1) +test_1 (_mm512_sqrt_round_ps, __m512, __m512, 1) +test_1 (_mm512_srai_epi32, __m512i, __m512i, 1) +test_1 (_mm512_srai_epi64, __m512i, __m512i, 1) +test_1 (_mm512_srli_epi32, __m512i, __m512i, 1) +test_1 (_mm512_srli_epi64, __m512i, __m512i, 1) +test_1 (_mm_cvt_roundsd_i32, int, __m128d, 1) +test_1 (_mm_cvt_roundsd_u32, unsigned, __m128d, 1) +test_1 (_mm_cvt_roundss_i32, int, __m128, 1) +test_1 (_mm_cvt_roundss_u32, unsigned, __m128, 1) +test_1 (_mm_cvtt_roundsd_i32, int, __m128d, 5) +test_1 (_mm_cvtt_roundsd_u32, unsigned, __m128d, 5) +test_1 (_mm_cvtt_roundss_i32, int, __m128, 5) +test_1 (_mm_cvtt_roundss_u32, unsigned, __m128, 5) +test_1x (_mm512_getmant_pd, __m512d, __m512d, 1, 1) +test_1x (_mm512_getmant_ps, __m512, __m512, 1, 1) +test_1x (_mm_cvt_roundi32_ss, __m128, __m128, 1, 1) +test_2 (_mm512_add_round_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_add_round_ps, __m512, __m512, __m512, 1) +test_2 (_mm512_alignr_epi32, __m512i, __m512i, __m512i, 1) +test_2 (_mm512_alignr_epi64, __m512i, __m512i, __m512i, 1) +test_2 (_mm512_cmp_epi32_mask, __mmask16, __m512i, __m512i, 1) +test_2 (_mm512_cmp_epi64_mask, __mmask8, __m512i, __m512i, 1) +test_2 (_mm512_cmp_epu32_mask, __mmask16, __m512i, __m512i, 1) +test_2 (_mm512_cmp_epu64_mask, __mmask8, __m512i, __m512i, 1) +test_2 (_mm512_cmp_pd_mask, __mmask8, __m512d, __m512d, 1) +test_2 (_mm512_cmp_ps_mask, __mmask16, __m512, __m512, 1) +test_2 (_mm512_div_round_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_div_round_ps, __m512, __m512, __m512, 1) +test_2 (_mm512_i32gather_epi32, __m512i, __m512i, void const *, 1) +test_2 (_mm512_i32gather_epi64, __m512i, __m256i, void const *, 1) +test_2 (_mm512_i32gather_pd, __m512d, __m256i, void const *, 1) +test_2 (_mm512_i32gather_ps, __m512, __m512i, void const *, 1) +test_2 (_mm512_i64gather_epi32, __m256i, __m512i, void const *, 1) +test_2 (_mm512_i64gather_epi64, __m512i, __m512i, void const *, 1) +test_2 (_mm512_i64gather_pd, __m512d, __m512i, void const *, 1) +test_2 (_mm512_i64gather_ps, __m256, __m512i, void const *, 1) +test_2 (_mm512_insertf32x4, __m512, __m512, __m128, 1) +test_2 (_mm512_insertf64x4, __m512d, __m512d, __m256d, 1) +test_2 (_mm512_inserti32x4, __m512i, __m512i, __m128i, 1) +test_2 (_mm512_inserti64x4, __m512i, __m512i, __m256i, 1) +test_2 (_mm512_maskz_cvt_roundepi32_ps, __m512, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_cvt_roundepu32_ps, __m512, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_cvt_roundpd_epi32, __m256i, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_cvt_roundpd_epu32, __m256i, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_cvt_roundpd_ps, __m256, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_cvt_roundph_ps, __m512, __mmask16, __m256i, 5) +test_2 (_mm512_maskz_cvt_roundps_epi32, __m512i, __mmask16, __m512, 1) +test_2 (_mm512_maskz_cvt_roundps_epu32, __m512i, __mmask16, __m512, 1) +test_2 (_mm512_maskz_cvt_roundps_pd, __m512d, __mmask8, __m256, 5) +test_2 (_mm512_maskz_cvtps_ph, __m256i, __mmask16, __m512, 1) +test_2 (_mm512_maskz_cvtt_roundpd_epi32, __m256i, __mmask8, __m512d, 5) +test_2 (_mm512_maskz_cvtt_roundpd_epu32, __m256i, __mmask8, __m512d, 5) +test_2 (_mm512_maskz_cvtt_roundps_epi32, __m512i, __mmask16, __m512, 5) +test_2 (_mm512_maskz_cvtt_roundps_epu32, __m512i, __mmask16, __m512, 5) +test_2 (_mm512_maskz_extractf32x4_ps, __m128, __mmask8, __m512, 1) +test_2 (_mm512_maskz_extractf64x4_pd, __m256d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_extracti32x4_epi32, __m128i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_extracti64x4_epi64, __m256i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_getexp_round_pd, __m512d, __mmask8, __m512d, 5) +test_2 (_mm512_maskz_getexp_round_ps, __m512, __mmask16, __m512, 5) +test_2y (_mm512_maskz_getmant_round_pd, __m512d, __mmask8, __m512d, 1, 1, 5) +test_2y (_mm512_maskz_getmant_round_ps, __m512, __mmask16, __m512, 1, 1, 5) +test_2 (_mm512_maskz_permute_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_permute_ps, __m512, __mmask16, __m512, 1) +test_2 (_mm512_maskz_permutex_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_permutex_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_rol_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_rol_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_ror_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_ror_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_shuffle_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_slli_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_slli_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_sqrt_round_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_sqrt_round_ps, __m512, __mmask16, __m512, 1) +test_2 (_mm512_maskz_srai_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_srai_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_srli_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_srli_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_max_round_pd, __m512d, __m512d, __m512d, 5) +test_2 (_mm512_max_round_ps, __m512, __m512, __m512, 5) +test_2 (_mm512_min_round_pd, __m512d, __m512d, __m512d, 5) +test_2 (_mm512_min_round_ps, __m512, __m512, __m512, 5) +test_2 (_mm512_mul_round_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_mul_round_ps, __m512, __m512, __m512, 1) +test_2 (_mm512_scalef_round_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_scalef_round_ps, __m512, __m512, __m512, 1) +test_2 (_mm512_shuffle_f32x4, __m512, __m512, __m512, 1) +test_2 (_mm512_shuffle_f64x2, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_shuffle_i32x4, __m512i, __m512i, __m512i, 1) +test_2 (_mm512_shuffle_i64x2, __m512i, __m512i, __m512i, 1) +test_2 (_mm512_shuffle_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_shuffle_ps, __m512, __m512, __m512, 1) +test_2 (_mm512_sub_round_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_sub_round_ps, __m512, __m512, __m512, 1) +test_2 (_mm_cmp_sd_mask, __mmask8, __m128d, __m128d, 1) +test_2 (_mm_cmp_ss_mask, __mmask8, __m128, __m128, 1) +#ifdef __x86_64__ +test_2 (_mm_cvt_roundi64_sd, __m128d, __m128d, long long, 1) +test_2 (_mm_cvt_roundi64_ss, __m128, __m128, long long, 1) +#endif +test_2 (_mm_cvt_roundu32_ss, __m128, __m128, unsigned, 1) +#ifdef __x86_64__ +test_2 (_mm_cvt_roundu64_sd, __m128d, __m128d, unsigned long long, 1) +test_2 (_mm_cvt_roundu64_ss, __m128, __m128, unsigned long long, 1) +#endif +test_2x (_mm512_cmp_round_pd_mask, __mmask8, __m512d, __m512d, 1, 5) +test_2x (_mm512_cmp_round_ps_mask, __mmask16, __m512, __m512, 1, 5) +test_2x (_mm512_maskz_roundscale_round_pd, __m512d, __mmask8, __m512d, 1, 5) +test_2x (_mm512_maskz_roundscale_round_ps, __m512, __mmask16, __m512, 1, 5) +test_2x (_mm_cmp_round_sd_mask, __mmask8, __m128d, __m128d, 1, 5) +test_2x (_mm_cmp_round_ss_mask, __mmask8, __m128, __m128, 1, 5) +test_2x (_mm_comi_round_sd, int, __m128d, __m128d, 1, 5) +test_2x (_mm_comi_round_ss, int, __m128, __m128, 1, 5) +test_3 (_mm512_fmadd_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fmadd_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_fmaddsub_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fmaddsub_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_fmsub_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fmsub_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_fmsubadd_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fmsubadd_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_fnmadd_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fnmadd_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_fnmsub_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fnmsub_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_mask_cmp_epi32_mask, __mmask16, __mmask16, __m512i, __m512i, 1) +test_3 (_mm512_mask_cmp_epi64_mask, __mmask8, __mmask8, __m512i, __m512i, 1) +test_3 (_mm512_mask_cmp_epu32_mask, __mmask16, __mmask16, __m512i, __m512i, 1) +test_3 (_mm512_mask_cmp_epu64_mask, __mmask8, __mmask8, __m512i, __m512i, 1) +test_3 (_mm512_mask_cmp_pd_mask, __mmask8, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_mask_cmp_ps_mask, __mmask16, __mmask16, __m512, __m512, 1) +test_3 (_mm512_mask_cvt_roundepi32_ps, __m512, __m512, __mmask16, __m512i, 1) +test_3 (_mm512_mask_cvt_roundepu32_ps, __m512, __m512, __mmask16, __m512i, 1) +test_3 (_mm512_mask_cvt_roundpd_epi32, __m256i, __m256i, __mmask8, __m512d, 1) +test_3 (_mm512_mask_cvt_roundpd_epu32, __m256i, __m256i, __mmask8, __m512d, 1) +test_3 (_mm512_mask_cvt_roundpd_ps, __m256, __m256, __mmask8, __m512d, 1) +test_3 (_mm512_mask_cvt_roundph_ps, __m512, __m512, __mmask16, __m256i, 5) +test_3 (_mm512_mask_cvt_roundps_epi32, __m512i, __m512i, __mmask16, __m512, 1) +test_3 (_mm512_mask_cvt_roundps_epu32, __m512i, __m512i, __mmask16, __m512, 1) +test_3 (_mm512_mask_cvt_roundps_pd, __m512d, __m512d, __mmask8, __m256, 5) +test_3 (_mm512_mask_cvtps_ph, __m256i, __m256i, __mmask16, __m512, 1) +test_3 (_mm512_mask_cvtt_roundpd_epi32, __m256i, __m256i, __mmask8, __m512d, 5) +test_3 (_mm512_mask_cvtt_roundpd_epu32, __m256i, __m256i, __mmask8, __m512d, 5) +test_3 (_mm512_mask_cvtt_roundps_epi32, __m512i, __m512i, __mmask16, __m512, 5) +test_3 (_mm512_mask_cvtt_roundps_epu32, __m512i, __m512i, __mmask16, __m512, 5) +test_3 (_mm512_mask_extractf32x4_ps, __m128, __m128, __mmask8, __m512, 1) +test_3 (_mm512_mask_extractf64x4_pd, __m256d, __m256d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_extracti32x4_epi32, __m128i, __m128i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_extracti64x4_epi64, __m256i, __m256i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_getexp_round_pd, __m512d, __m512d, __mmask8, __m512d, 5) +test_3 (_mm512_mask_getexp_round_ps, __m512, __m512, __mmask16, __m512, 5) +test_3y (_mm512_mask_getmant_round_pd, __m512d, __m512d, __mmask8, __m512d, 1, 1, 5) +test_3y (_mm512_mask_getmant_round_ps, __m512, __m512, __mmask16, __m512, 1, 1, 5) +test_3 (_mm512_mask_permute_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_permute_ps, __m512, __m512, __mmask16, __m512, 1) +test_3 (_mm512_mask_permutex_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_permutex_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_rol_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_rol_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_ror_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_ror_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_shuffle_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_slli_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_slli_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_sqrt_round_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_sqrt_round_ps, __m512, __m512, __mmask16, __m512, 1) +test_3 (_mm512_mask_srai_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_srai_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_srli_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_srli_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_maskz_add_round_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_add_round_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_alignr_epi32, __m512i, __mmask16, __m512i, __m512i, 1) +test_3 (_mm512_maskz_alignr_epi64, __m512i, __mmask8, __m512i, __m512i, 1) +test_3 (_mm512_maskz_div_round_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_div_round_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_insertf32x4, __m512, __mmask16, __m512, __m128, 1) +test_3 (_mm512_maskz_insertf64x4, __m512d, __mmask8, __m512d, __m256d, 1) +test_3 (_mm512_maskz_inserti32x4, __m512i, __mmask16, __m512i, __m128i, 1) +test_3 (_mm512_maskz_inserti64x4, __m512i, __mmask8, __m512i, __m256i, 1) +test_3 (_mm512_maskz_max_round_pd, __m512d, __mmask8, __m512d, __m512d, 5) +test_3 (_mm512_maskz_max_round_ps, __m512, __mmask16, __m512, __m512, 5) +test_3 (_mm512_maskz_min_round_pd, __m512d, __mmask8, __m512d, __m512d, 5) +test_3 (_mm512_maskz_min_round_ps, __m512, __mmask16, __m512, __m512, 5) +test_3 (_mm512_maskz_mul_round_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_mul_round_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_scalef_round_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_scalef_round_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_shuffle_f32x4, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_shuffle_f64x2, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_shuffle_i32x4, __m512i, __mmask16, __m512i, __m512i, 1) +test_3 (_mm512_maskz_shuffle_i64x2, __m512i, __mmask8, __m512i, __m512i, 1) +test_3 (_mm512_maskz_shuffle_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_shuffle_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_sub_round_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_sub_round_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_ternarylogic_epi32, __m512i, __m512i, __m512i, __m512i, 1) +test_3 (_mm512_ternarylogic_epi64, __m512i, __m512i, __m512i, __m512i, 1) +test_3 (_mm_mask_cmp_sd_mask, __mmask8, __mmask8, __m128d, __m128d, 1) +test_3 (_mm_mask_cmp_ss_mask, __mmask8, __mmask8, __m128, __m128, 1) +test_3v (_mm512_i32scatter_epi32, void *, __m512i, __m512i, 1) +test_3v (_mm512_i32scatter_epi64, void *, __m256i, __m512i, 1) +test_3v (_mm512_i32scatter_pd, void *, __m256i, __m512d, 1) +test_3v (_mm512_i32scatter_ps, void *, __m512i, __m512, 1) +test_3v (_mm512_i64scatter_epi32, void *, __m512i, __m256i, 1) +test_3v (_mm512_i64scatter_epi64, void *, __m512i, __m512i, 1) +test_3v (_mm512_i64scatter_pd, void *, __m512i, __m512d, 1) +test_3v (_mm512_i64scatter_ps, void *, __m512i, __m256, 1) +test_3x (_mm512_mask_roundscale_round_pd, __m512d, __m512d, __mmask8, __m512d, 1, 5) +test_3x (_mm512_mask_roundscale_round_ps, __m512, __m512, __mmask16, __m512, 1, 5) +test_3x (_mm512_mask_cmp_round_pd_mask, __mmask8, __mmask8, __m512d, __m512d, 1, 5) +test_3x (_mm512_mask_cmp_round_ps_mask, __mmask16, __mmask16, __m512, __m512, 1, 5) +test_3x (_mm_fixupimm_round_sd, __m128d, __m128d, __m128d, __m128i, 1, 5) +test_3x (_mm_fixupimm_round_ss, __m128, __m128, __m128, __m128i, 1, 5) +test_3x (_mm_mask_cmp_round_sd_mask, __mmask8, __mmask8, __m128d, __m128d, 1, 5) +test_3x (_mm_mask_cmp_round_ss_mask, __mmask8, __mmask8, __m128, __m128, 1, 5) +test_4 (_mm512_mask3_fmadd_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fmadd_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask3_fmaddsub_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fmaddsub_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask3_fmsub_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fmsub_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask3_fmsubadd_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fmsubadd_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask3_fnmadd_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fnmadd_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask3_fnmsub_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fnmsub_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask_add_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_add_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_alignr_epi32, __m512i, __m512i, __mmask16, __m512i, __m512i, 1) +test_4 (_mm512_mask_alignr_epi64, __m512i, __m512i, __mmask8, __m512i, __m512i, 1) +test_4 (_mm512_mask_div_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_div_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fmadd_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fmadd_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fmaddsub_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fmaddsub_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fmsub_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fmsub_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fmsubadd_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fmsubadd_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fnmadd_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fnmadd_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fnmsub_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fnmsub_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_i32gather_epi32, __m512i, __m512i, __mmask16, __m512i, void const *, 1) +test_4 (_mm512_mask_i32gather_epi64, __m512i, __m512i, __mmask8, __m256i, void const *, 1) +test_4 (_mm512_mask_i32gather_pd, __m512d, __m512d, __mmask8, __m256i, void const *, 1) +test_4 (_mm512_mask_i32gather_ps, __m512, __m512, __mmask16, __m512i, void const *, 1) +test_4 (_mm512_mask_i64gather_epi32, __m256i, __m256i, __mmask8, __m512i, void const *, 1) +test_4 (_mm512_mask_i64gather_epi64, __m512i, __m512i, __mmask8, __m512i, void const *, 1) +test_4 (_mm512_mask_i64gather_pd, __m512d, __m512d, __mmask8, __m512i, void const *, 1) +test_4 (_mm512_mask_i64gather_ps, __m256, __m256, __mmask8, __m512i, void const *, 1) +test_4 (_mm512_mask_insertf32x4, __m512, __m512, __mmask16, __m512, __m128, 1) +test_4 (_mm512_mask_insertf64x4, __m512d, __m512d, __mmask8, __m512d, __m256d, 1) +test_4 (_mm512_mask_inserti32x4, __m512i, __m512i, __mmask16, __m512i, __m128i, 1) +test_4 (_mm512_mask_inserti64x4, __m512i, __m512i, __mmask8, __m512i, __m256i, 1) +test_4 (_mm512_mask_max_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 5) +test_4 (_mm512_mask_max_round_ps, __m512, __m512, __mmask16, __m512, __m512, 5) +test_4 (_mm512_mask_min_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 5) +test_4 (_mm512_mask_min_round_ps, __m512, __m512, __mmask16, __m512, __m512, 5) +test_4 (_mm512_mask_mul_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_mul_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_scalef_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_scalef_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_shuffle_f32x4, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_shuffle_f64x2, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_shuffle_i32x4, __m512i, __m512i, __mmask16, __m512i, __m512i, 1) +test_4 (_mm512_mask_shuffle_i64x2, __m512i, __m512i, __mmask8, __m512i, __m512i, 1) +test_4 (_mm512_mask_shuffle_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_shuffle_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_sub_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_sub_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_ternarylogic_epi32, __m512i, __m512i, __mmask16, __m512i, __m512i, 1) +test_4 (_mm512_mask_ternarylogic_epi64, __m512i, __m512i, __mmask8, __m512i, __m512i, 1) +test_4 (_mm512_maskz_fmadd_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fmadd_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_fmaddsub_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fmaddsub_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_fmsub_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fmsub_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_fmsubadd_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fmsubadd_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_fnmadd_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fnmadd_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_fnmsub_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fnmsub_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_ternarylogic_epi32, __m512i, __mmask16, __m512i, __m512i, __m512i, 1) +test_4 (_mm512_maskz_ternarylogic_epi64, __m512i, __mmask8, __m512i, __m512i, __m512i, 1) +test_4v (_mm512_mask_i32scatter_epi32, void *, __mmask16, __m512i, __m512i, 1) +test_4v (_mm512_mask_i32scatter_epi64, void *, __mmask8, __m256i, __m512i, 1) +test_4v (_mm512_mask_i32scatter_pd, void *, __mmask8, __m256i, __m512d, 1) +test_4v (_mm512_mask_i32scatter_ps, void *, __mmask16, __m512i, __m512, 1) +test_4v (_mm512_mask_i64scatter_epi32, void *, __mmask8, __m512i, __m256i, 1) +test_4v (_mm512_mask_i64scatter_epi64, void *, __mmask8, __m512i, __m512i, 1) +test_4v (_mm512_mask_i64scatter_pd, void *, __mmask8, __m512i, __m512d, 1) +test_4v (_mm512_mask_i64scatter_ps, void *, __mmask8, __m512i, __m256, 1) +test_4x (_mm512_mask_fixupimm_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512i, 1, 5) +test_4x (_mm512_mask_fixupimm_round_ps, __m512, __m512, __mmask16, __m512, __m512i, 1, 5) +test_4x (_mm512_maskz_fixupimm_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512i, 1, 5) +test_4x (_mm512_maskz_fixupimm_round_ps, __m512, __mmask16, __m512, __m512, __m512i, 1, 5) +test_4x (_mm_mask_fixupimm_round_sd, __m128d, __m128d, __mmask8, __m128d, __m128i, 1, 5) +test_4x (_mm_mask_fixupimm_round_ss, __m128, __m128, __mmask8, __m128, __m128i, 1, 5) +test_4x (_mm_maskz_fixupimm_round_sd, __m128d, __mmask8, __m128d, __m128d, __m128i, 1, 5) +test_4x (_mm_maskz_fixupimm_round_ss, __m128, __mmask8, __m128, __m128, __m128i, 1, 5) + +/* avx512pfintrin.h */ +test_3vx (_mm512_mask_prefetch_i32gather_ps, __m512i, __mmask16, void const *, 1, 1) +test_3vx (_mm512_mask_prefetch_i32scatter_ps, void const *, __mmask16, __m512i, 1, 1) +test_3vx (_mm512_mask_prefetch_i64gather_ps, __m512i, __mmask8, void const *, 1, 1) +test_3vx (_mm512_mask_prefetch_i64scatter_ps, void const *, __mmask8, __m512i, 1, 1) + +/* avx512erintrin.h */ +test_1 (_mm512_exp2a23_round_pd, __m512d, __m512d, 1) +test_1 (_mm512_exp2a23_round_ps, __m512, __m512, 1) +test_1 (_mm512_rcp28_round_pd, __m512d, __m512d, 1) +test_1 (_mm512_rcp28_round_ps, __m512, __m512, 1) +test_1 (_mm512_rsqrt28_round_pd, __m512d, __m512d, 1) +test_1 (_mm512_rsqrt28_round_ps, __m512, __m512, 1) +test_2 (_mm512_maskz_exp2a23_round_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_exp2a23_round_ps, __m512, __mmask16, __m512, 1) +test_2 (_mm512_maskz_rcp28_round_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_rcp28_round_ps, __m512, __mmask16, __m512, 1) +test_2 (_mm512_maskz_rsqrt28_round_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_rsqrt28_round_ps, __m512, __mmask16, __m512, 1) +test_3 (_mm512_mask_exp2a23_round_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_exp2a23_round_ps, __m512, __m512, __mmask16, __m512, 1) +test_3 (_mm512_mask_rcp28_round_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_rcp28_round_ps, __m512, __m512, __mmask16, __m512, 1) +test_3 (_mm512_mask_rsqrt28_round_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_rsqrt28_round_ps, __m512, __m512, __mmask16, __m512, 1) + /* wmmintrin.h (AES/PCLMUL). */ #ifdef DIFFERENT_PRAGMAS #pragma GCC target ("aes,pclmul") diff --git a/gcc/testsuite/gcc.target/i386/sse-23.c b/gcc/testsuite/gcc.target/i386/sse-23.c index 069f8e7cb80..f993c07cdf1 100644 --- a/gcc/testsuite/gcc.target/i386/sse-23.c +++ b/gcc/testsuite/gcc.target/i386/sse-23.c @@ -183,7 +183,180 @@ /* rtmintrin.h */ #define __builtin_ia32_xabort(M) __builtin_ia32_xabort(1) -#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt") +/* avx512fintrin.h */ +#define __builtin_ia32_addpd512_mask(A, B, C, D, E) __builtin_ia32_addpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_addps512_mask(A, B, C, D, E) __builtin_ia32_addps512_mask(A, B, C, D, 1) +#define __builtin_ia32_alignd512_mask(A, B, F, D, E) __builtin_ia32_alignd512_mask(A, B, 1, D, E) +#define __builtin_ia32_alignq512_mask(A, B, F, D, E) __builtin_ia32_alignq512_mask(A, B, 1, D, E) +#define __builtin_ia32_cmpd512_mask(A, B, E, D) __builtin_ia32_cmpd512_mask(A, B, 1, D) +#define __builtin_ia32_cmppd512_mask(A, B, F, D, E) __builtin_ia32_cmppd512_mask(A, B, 1, D, 5) +#define __builtin_ia32_cmpps512_mask(A, B, F, D, E) __builtin_ia32_cmpps512_mask(A, B, 1, D, 5) +#define __builtin_ia32_cmpq512_mask(A, B, E, D) __builtin_ia32_cmpq512_mask(A, B, 1, D) +#define __builtin_ia32_cmpsd_mask(A, B, F, D, E) __builtin_ia32_cmpsd_mask(A, B, 1, D, 5) +#define __builtin_ia32_cmpss_mask(A, B, F, D, E) __builtin_ia32_cmpss_mask(A, B, 1, D, 5) +#define __builtin_ia32_cvtdq2ps512_mask(A, B, C, D) __builtin_ia32_cvtdq2ps512_mask(A, B, C, 1) +#define __builtin_ia32_cvtpd2dq512_mask(A, B, C, D) __builtin_ia32_cvtpd2dq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtpd2ps512_mask(A, B, C, D) __builtin_ia32_cvtpd2ps512_mask(A, B, C, 1) +#define __builtin_ia32_cvtpd2udq512_mask(A, B, C, D) __builtin_ia32_cvtpd2udq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtps2dq512_mask(A, B, C, D) __builtin_ia32_cvtps2dq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtps2pd512_mask(A, B, C, D) __builtin_ia32_cvtps2pd512_mask(A, B, C, 5) +#define __builtin_ia32_cvtps2udq512_mask(A, B, C, D) __builtin_ia32_cvtps2udq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtsi2sd64(A, B, C) __builtin_ia32_cvtsi2sd64(A, B, 1) +#define __builtin_ia32_cvtsi2ss32(A, B, C) __builtin_ia32_cvtsi2ss32(A, B, 1) +#define __builtin_ia32_cvtsi2ss64(A, B, C) __builtin_ia32_cvtsi2ss64(A, B, 1) +#define __builtin_ia32_cvttpd2dq512_mask(A, B, C, D) __builtin_ia32_cvttpd2dq512_mask(A, B, C, 5) +#define __builtin_ia32_cvttpd2udq512_mask(A, B, C, D) __builtin_ia32_cvttpd2udq512_mask(A, B, C, 5) +#define __builtin_ia32_cvttps2dq512_mask(A, B, C, D) __builtin_ia32_cvttps2dq512_mask(A, B, C, 5) +#define __builtin_ia32_cvttps2udq512_mask(A, B, C, D) __builtin_ia32_cvttps2udq512_mask(A, B, C, 5) +#define __builtin_ia32_cvtudq2ps512_mask(A, B, C, D) __builtin_ia32_cvtudq2ps512_mask(A, B, C, 1) +#define __builtin_ia32_cvtusi2sd64(A, B, C) __builtin_ia32_cvtusi2sd64(A, B, 1) +#define __builtin_ia32_cvtusi2ss32(A, B, C) __builtin_ia32_cvtusi2ss32(A, B, 1) +#define __builtin_ia32_cvtusi2ss64(A, B, C) __builtin_ia32_cvtusi2ss64(A, B, 1) +#define __builtin_ia32_divpd512_mask(A, B, C, D, E) __builtin_ia32_divpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_divps512_mask(A, B, C, D, E) __builtin_ia32_divps512_mask(A, B, C, D, 1) +#define __builtin_ia32_extractf32x4_mask(A, E, C, D) __builtin_ia32_extractf32x4_mask(A, 1, C, D) +#define __builtin_ia32_extractf64x4_mask(A, E, C, D) __builtin_ia32_extractf64x4_mask(A, 1, C, D) +#define __builtin_ia32_extracti32x4_mask(A, E, C, D) __builtin_ia32_extracti32x4_mask(A, 1, C, D) +#define __builtin_ia32_extracti64x4_mask(A, E, C, D) __builtin_ia32_extracti64x4_mask(A, 1, C, D) +#define __builtin_ia32_fixupimmpd512_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmpd512_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmpd512_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmpd512_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmps512_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmps512_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmps512_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmps512_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmsd_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmsd_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmsd_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmsd_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmss_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmss_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmss_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmss_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_gatherdiv8df(A, B, C, D, F) __builtin_ia32_gatherdiv8df(A, B, C, D, 1) +#define __builtin_ia32_gatherdiv8di(A, B, C, D, F) __builtin_ia32_gatherdiv8di(A, B, C, D, 1) +#define __builtin_ia32_gatherdiv16sf(A, B, C, D, F) __builtin_ia32_gatherdiv16sf(A, B, C, D, 1) +#define __builtin_ia32_gatherdiv16si(A, B, C, D, F) __builtin_ia32_gatherdiv16si(A, B, C, D, 1) +#define __builtin_ia32_gathersiv16sf(A, B, C, D, F) __builtin_ia32_gathersiv16sf(A, B, C, D, 1) +#define __builtin_ia32_gathersiv16si(A, B, C, D, F) __builtin_ia32_gathersiv16si(A, B, C, D, 1) +#define __builtin_ia32_gathersiv8df(A, B, C, D, F) __builtin_ia32_gathersiv8df(A, B, C, D, 1) +#define __builtin_ia32_gathersiv8di(A, B, C, D, F) __builtin_ia32_gathersiv8di(A, B, C, D, 1) +#define __builtin_ia32_getexppd512_mask(A, B, C, D) __builtin_ia32_getexppd512_mask(A, B, C, 5) +#define __builtin_ia32_getexpps512_mask(A, B, C, D) __builtin_ia32_getexpps512_mask(A, B, C, 5) +#define __builtin_ia32_getmantpd512_mask(A, F, C, D, E) __builtin_ia32_getmantpd512_mask(A, 1, C, D, 5) +#define __builtin_ia32_getmantps512_mask(A, F, C, D, E) __builtin_ia32_getmantps512_mask(A, 1, C, D, 5) +#define __builtin_ia32_insertf32x4_mask(A, B, F, D, E) __builtin_ia32_insertf32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_insertf64x4_mask(A, B, F, D, E) __builtin_ia32_insertf64x4_mask(A, B, 1, D, E) +#define __builtin_ia32_inserti32x4_mask(A, B, F, D, E) __builtin_ia32_inserti32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_inserti64x4_mask(A, B, F, D, E) __builtin_ia32_inserti64x4_mask(A, B, 1, D, E) +#define __builtin_ia32_maxpd512_mask(A, B, C, D, E) __builtin_ia32_maxpd512_mask(A, B, C, D, 5) +#define __builtin_ia32_maxps512_mask(A, B, C, D, E) __builtin_ia32_maxps512_mask(A, B, C, D, 5) +#define __builtin_ia32_minpd512_mask(A, B, C, D, E) __builtin_ia32_minpd512_mask(A, B, C, D, 5) +#define __builtin_ia32_minps512_mask(A, B, C, D, E) __builtin_ia32_minps512_mask(A, B, C, D, 5) +#define __builtin_ia32_mulpd512_mask(A, B, C, D, E) __builtin_ia32_mulpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_mulps512_mask(A, B, C, D, E) __builtin_ia32_mulps512_mask(A, B, C, D, 1) +#define __builtin_ia32_permdf512_mask(A, E, C, D) __builtin_ia32_permdf512_mask(A, 1, C, D) +#define __builtin_ia32_permdi512_mask(A, E, C, D) __builtin_ia32_permdi512_mask(A, 1, C, D) +#define __builtin_ia32_prold512_mask(A, E, C, D) __builtin_ia32_prold512_mask(A, 1, C, D) +#define __builtin_ia32_prolq512_mask(A, E, C, D) __builtin_ia32_prolq512_mask(A, 1, C, D) +#define __builtin_ia32_prord512_mask(A, E, C, D) __builtin_ia32_prord512_mask(A, 1, C, D) +#define __builtin_ia32_prorq512_mask(A, E, C, D) __builtin_ia32_prorq512_mask(A, 1, C, D) +#define __builtin_ia32_pshufd512_mask(A, E, C, D) __builtin_ia32_pshufd512_mask(A, 1, C, D) +#define __builtin_ia32_pslldi512_mask(A, E, C, D) __builtin_ia32_pslldi512_mask(A, 1, C, D) +#define __builtin_ia32_psllqi512_mask(A, E, C, D) __builtin_ia32_psllqi512_mask(A, 1, C, D) +#define __builtin_ia32_psradi512_mask(A, E, C, D) __builtin_ia32_psradi512_mask(A, 1, C, D) +#define __builtin_ia32_psraqi512_mask(A, E, C, D) __builtin_ia32_psraqi512_mask(A, 1, C, D) +#define __builtin_ia32_psrldi512_mask(A, E, C, D) __builtin_ia32_psrldi512_mask(A, 1, C, D) +#define __builtin_ia32_psrlqi512_mask(A, E, C, D) __builtin_ia32_psrlqi512_mask(A, 1, C, D) +#define __builtin_ia32_pternlogd512_mask(A, B, C, F, E) __builtin_ia32_pternlogd512_mask(A, B, C, 1, E) +#define __builtin_ia32_pternlogd512_maskz(A, B, C, F, E) __builtin_ia32_pternlogd512_maskz(A, B, C, 1, E) +#define __builtin_ia32_pternlogq512_mask(A, B, C, F, E) __builtin_ia32_pternlogq512_mask(A, B, C, 1, E) +#define __builtin_ia32_pternlogq512_maskz(A, B, C, F, E) __builtin_ia32_pternlogq512_maskz(A, B, C, 1, E) +#define __builtin_ia32_rndscalepd_mask(A, F, C, D, E) __builtin_ia32_rndscalepd_mask(A, 1, C, D, 5) +#define __builtin_ia32_rndscaleps_mask(A, F, C, D, E) __builtin_ia32_rndscaleps_mask(A, 1, C, D, 5) +#define __builtin_ia32_scalefpd512_mask(A, B, C, D, E) __builtin_ia32_scalefpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_scalefps512_mask(A, B, C, D, E) __builtin_ia32_scalefps512_mask(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv8df(A, B, C, D, F) __builtin_ia32_scatterdiv8df(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv8di(A, B, C, D, F) __builtin_ia32_scatterdiv8di(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv16sf(A, B, C, D, F) __builtin_ia32_scatterdiv16sf(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv16si(A, B, C, D, F) __builtin_ia32_scatterdiv16si(A, B, C, D, 1) +#define __builtin_ia32_scattersiv16sf(A, B, C, D, F) __builtin_ia32_scattersiv16sf(A, B, C, D, 1) +#define __builtin_ia32_scattersiv16si(A, B, C, D, F) __builtin_ia32_scattersiv16si(A, B, C, D, 1) +#define __builtin_ia32_scattersiv8df(A, B, C, D, F) __builtin_ia32_scattersiv8df(A, B, C, D, 1) +#define __builtin_ia32_scattersiv8di(A, B, C, D, F) __builtin_ia32_scattersiv8di(A, B, C, D, 1) +#define __builtin_ia32_shuf_f32x4_mask(A, B, F, D, E) __builtin_ia32_shuf_f32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_shuf_f64x2_mask(A, B, F, D, E) __builtin_ia32_shuf_f64x2_mask(A, B, 1, D, E) +#define __builtin_ia32_shuf_i32x4_mask(A, B, F, D, E) __builtin_ia32_shuf_i32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_shuf_i64x2_mask(A, B, F, D, E) __builtin_ia32_shuf_i64x2_mask(A, B, 1, D, E) +#define __builtin_ia32_shufpd512_mask(A, B, F, D, E) __builtin_ia32_shufpd512_mask(A, B, 1, D, E) +#define __builtin_ia32_shufps512_mask(A, B, F, D, E) __builtin_ia32_shufps512_mask(A, B, 1, D, E) +#define __builtin_ia32_sqrtpd512_mask(A, B, C, D) __builtin_ia32_sqrtpd512_mask(A, B, C, 1) +#define __builtin_ia32_sqrtps512_mask(A, B, C, D) __builtin_ia32_sqrtps512_mask(A, B, C, 1) +#define __builtin_ia32_subpd512_mask(A, B, C, D, E) __builtin_ia32_subpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_subps512_mask(A, B, C, D, E) __builtin_ia32_subps512_mask(A, B, C, D, 1) +#define __builtin_ia32_ucmpd512_mask(A, B, E, D) __builtin_ia32_ucmpd512_mask(A, B, 1, D) +#define __builtin_ia32_ucmpq512_mask(A, B, E, D) __builtin_ia32_ucmpq512_mask(A, B, 1, D) +#define __builtin_ia32_vcomisd(A, B, C, D) __builtin_ia32_vcomisd(A, B, 1, 5) +#define __builtin_ia32_vcomiss(A, B, C, D) __builtin_ia32_vcomiss(A, B, 1, 5) +#define __builtin_ia32_vcvtph2ps512_mask(A, B, C, D) __builtin_ia32_vcvtph2ps512_mask(A, B, C, 5) +#define __builtin_ia32_vcvtps2ph512_mask(A, E, C, D) __builtin_ia32_vcvtps2ph512_mask(A, 1, C, D) +#define __builtin_ia32_vcvtsd2si32(A, B) __builtin_ia32_vcvtsd2si32(A, 1) +#define __builtin_ia32_vcvtsd2si64(A, B) __builtin_ia32_vcvtsd2si64(A, 1) +#define __builtin_ia32_vcvtsd2usi32(A, B) __builtin_ia32_vcvtsd2usi32(A, 1) +#define __builtin_ia32_vcvtsd2usi64(A, B) __builtin_ia32_vcvtsd2usi64(A, 1) +#define __builtin_ia32_vcvtss2si32(A, B) __builtin_ia32_vcvtss2si32(A, 1) +#define __builtin_ia32_vcvtss2si64(A, B) __builtin_ia32_vcvtss2si64(A, 1) +#define __builtin_ia32_vcvtss2usi32(A, B) __builtin_ia32_vcvtss2usi32(A, 1) +#define __builtin_ia32_vcvtss2usi64(A, B) __builtin_ia32_vcvtss2usi64(A, 1) +#define __builtin_ia32_vcvttsd2si32(A, B) __builtin_ia32_vcvttsd2si32(A, 5) +#define __builtin_ia32_vcvttsd2si64(A, B) __builtin_ia32_vcvttsd2si64(A, 5) +#define __builtin_ia32_vcvttsd2usi32(A, B) __builtin_ia32_vcvttsd2usi32(A, 5) +#define __builtin_ia32_vcvttsd2usi64(A, B) __builtin_ia32_vcvttsd2usi64(A, 5) +#define __builtin_ia32_vcvttss2si32(A, B) __builtin_ia32_vcvttss2si32(A, 5) +#define __builtin_ia32_vcvttss2si64(A, B) __builtin_ia32_vcvttss2si64(A, 5) +#define __builtin_ia32_vcvttss2usi32(A, B) __builtin_ia32_vcvttss2usi32(A, 5) +#define __builtin_ia32_vcvttss2usi64(A, B) __builtin_ia32_vcvttss2usi64(A, 5) +#define __builtin_ia32_vfmaddpd512_mask(A, B, C, D, E) __builtin_ia32_vfmaddpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddpd512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddpd512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddps512_mask(A, B, C, D, E) __builtin_ia32_vfmaddps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddps512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddps512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddps512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsd3_mask(A, B, C, D, E) __builtin_ia32_vfmaddsd3_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsd3_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsd3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsd3_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsd3_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddss3_mask(A, B, C, D, E) __builtin_ia32_vfmaddss3_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddss3_mask3(A, B, C, D, E) __builtin_ia32_vfmaddss3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddss3_maskz(A, B, C, D, E) __builtin_ia32_vfmaddss3_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubpd512_mask(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubpd512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubps512_mask(A, B, C, D, E) __builtin_ia32_vfmaddsubps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubps512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsubps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubps512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsubps512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmsubaddpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubaddpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubaddps512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubaddps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubps512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubsd3_mask3(A, B, C, D, E) __builtin_ia32_vfmsubsd3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubss3_mask3(A, B, C, D, E) __builtin_ia32_vfmsubss3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfnmaddpd512_mask(A, B, C, D, E) __builtin_ia32_vfnmaddpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmaddps512_mask(A, B, C, D, E) __builtin_ia32_vfnmaddps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubpd512_mask(A, B, C, D, E) __builtin_ia32_vfnmsubpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfnmsubpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubps512_mask(A, B, C, D, E) __builtin_ia32_vfnmsubps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubps512_mask3(A, B, C, D, E) __builtin_ia32_vfnmsubps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vpermilpd512_mask(A, E, C, D) __builtin_ia32_vpermilpd512_mask(A, 1, C, D) +#define __builtin_ia32_vpermilps512_mask(A, E, C, D) __builtin_ia32_vpermilps512_mask(A, 1, C, D) + +/* avx512pfintrin.h */ +#define __builtin_ia32_gatherpfdps(A, B, C, D, E) __builtin_ia32_gatherpfdps(A, B, C, 1, 1) +#define __builtin_ia32_gatherpfqps(A, B, C, D, E) __builtin_ia32_gatherpfqps(A, B, C, 1, 1) +#define __builtin_ia32_scatterpfdps(A, B, C, D, E) __builtin_ia32_scatterpfdps(A, B, C, 1, 1) +#define __builtin_ia32_scatterpfqps(A, B, C, D, E) __builtin_ia32_scatterpfqps(A, B, C, 1, 1) + +/* avx512erintrin.h */ +#define __builtin_ia32_exp2pd_mask(A, B, C, D) __builtin_ia32_exp2pd_mask (A, B, C, 1) +#define __builtin_ia32_exp2ps_mask(A, B, C, D) __builtin_ia32_exp2ps_mask (A, B, C, 1) +#define __builtin_ia32_rcp28pd_mask(A, B, C, D) __builtin_ia32_rcp28pd_mask (A, B, C, 1) +#define __builtin_ia32_rcp28ps_mask(A, B, C, D) __builtin_ia32_rcp28ps_mask (A, B, C, 1) +#define __builtin_ia32_rsqrt28pd_mask(A, B, C, D) __builtin_ia32_rsqrt28pd_mask (A, B, C, 1) +#define __builtin_ia32_rsqrt28ps_mask(A, B, C, D) __builtin_ia32_rsqrt28ps_mask (A, B, C, 1) + +#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512er,avx512pf,avx512cd") #include #include #include -- cgit v1.2.1 From e0b3f4f8a639c665840b775df005fb38b820ec20 Mon Sep 17 00:00:00 2001 From: kyukhin Date: Tue, 31 Dec 2013 11:34:58 +0000 Subject: testsuite/ * gcc.target/i386/avx512cd-check.h: New file. * gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c: Ditto. * gcc.target/i386/avx512cd-vpbroadcastmb2q-2.c: Ditto. * gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c: Ditto. * gcc.target/i386/avx512cd-vpbroadcastmw2d-2.c: Ditto. * gcc.target/i386/avx512cd-vpconflictd-1.c: Ditto. * gcc.target/i386/avx512cd-vpconflictd-2.c: Ditto. * gcc.target/i386/avx512cd-vpconflictq-1.c: Ditto. * gcc.target/i386/avx512cd-vpconflictq-2.c: Ditto. * gcc.target/i386/avx512cd-vplzcntd-1.c: Ditto. * gcc.target/i386/avx512cd-vplzcntd-2.c: Ditto. * gcc.target/i386/avx512cd-vplzcntq-1.c: Ditto. * gcc.target/i386/avx512cd-vplzcntq-2.c: Ditto. * gcc.target/i386/avx512cd-vptestnmd-1.c: Ditto. * gcc.target/i386/avx512cd-vptestnmd-2.c: Ditto. * gcc.target/i386/avx512cd-vptestnmq-1.c: Ditto. * gcc.target/i386/avx512cd-vptestnmq-2.c: Ditto. * gcc.target/i386/avx512er-vexp2pd-1.c: Ditto. * gcc.target/i386/avx512er-vexp2pd-2.c: Ditto. * gcc.target/i386/avx512er-vexp2ps-1.c: Ditto. * gcc.target/i386/avx512er-vexp2ps-2.c: Ditto. * gcc.target/i386/avx512er-vrcp28pd-1.c: Ditto. * gcc.target/i386/avx512er-vrcp28pd-2.c: Ditto. * gcc.target/i386/avx512er-vrcp28ps-1.c: Ditto. * gcc.target/i386/avx512er-vrcp28ps-2.c: Ditto. * gcc.target/i386/avx512er-vrsqrt28pd-1.c: Ditto. * gcc.target/i386/avx512er-vrsqrt28pd-2.c: Ditto. * gcc.target/i386/avx512er-vrsqrt28ps-1.c: Ditto. * gcc.target/i386/avx512er-vrsqrt28ps-2.c: Ditto. * gcc.target/i386/avx512f-broadcast-gpr-1.c: Ditto. * gcc.target/i386/avx512f-broadcast-gpr-2.c: Ditto. * gcc.target/i386/avx512f-ceil-sfix-vec-1.c: Ditto. * gcc.target/i386/avx512f-ceil-sfix-vec-2.c: Ditto. * gcc.target/i386/avx512f-dummy.c: Ditto. * gcc.target/i386/avx512f-floor-sfix-vec-1.c: Ditto. * gcc.target/i386/avx512f-floor-sfix-vec-2.c: Ditto. * gcc.target/i386/avx512f-gather-1.c: Ditto. * gcc.target/i386/avx512f-gather-2.c: Ditto. * gcc.target/i386/avx512f-gather-3.c: Ditto. * gcc.target/i386/avx512f-gather-4.c: Ditto. * gcc.target/i386/avx512f-gather-5.c: Ditto. * gcc.target/i386/avx512f-i32gatherd512-1.c: Ditto. * gcc.target/i386/avx512f-i32gatherd512-2.c: Ditto. * gcc.target/i386/avx512f-i32gatherpd512-1.c: Ditto. * gcc.target/i386/avx512f-i32gatherpd512-2.c: Ditto. * gcc.target/i386/avx512f-i32gatherps512-1.c: Ditto. * gcc.target/i386/avx512f-i32gatherps512-2.c: Ditto. * gcc.target/i386/avx512f-i32gatherq512-1.c: Ditto. * gcc.target/i386/avx512f-i32gatherq512-2.c: Ditto. * gcc.target/i386/avx512f-i32scatterd512-1.c: Ditto. * gcc.target/i386/avx512f-i32scatterd512-2.c: Ditto. * gcc.target/i386/avx512f-i32scatterpd512-1.c: Ditto. * gcc.target/i386/avx512f-i32scatterpd512-2.c: Ditto. * gcc.target/i386/avx512f-i32scatterps512-1.c: Ditto. * gcc.target/i386/avx512f-i32scatterps512-2.c: Ditto. * gcc.target/i386/avx512f-i32scatterq512-1.c: Ditto. * gcc.target/i386/avx512f-i32scatterq512-2.c: Ditto. * gcc.target/i386/avx512f-i64gatherd512-1.c: Ditto. * gcc.target/i386/avx512f-i64gatherd512-2.c: Ditto. * gcc.target/i386/avx512f-i64gatherpd512-1.c: Ditto. * gcc.target/i386/avx512f-i64gatherpd512-2.c: Ditto. * gcc.target/i386/avx512f-i64gatherps512-1.c: Ditto. * gcc.target/i386/avx512f-i64gatherps512-2.c: Ditto. * gcc.target/i386/avx512f-i64gatherq512-1.c: Ditto. * gcc.target/i386/avx512f-i64gatherq512-2.c: Ditto. * gcc.target/i386/avx512f-i64scatterd512-1.c: Ditto. * gcc.target/i386/avx512f-i64scatterd512-2.c: Ditto. * gcc.target/i386/avx512f-i64scatterpd512-1.c: Ditto. * gcc.target/i386/avx512f-i64scatterpd512-2.c: Ditto. * gcc.target/i386/avx512f-i64scatterps512-1.c: Ditto. * gcc.target/i386/avx512f-i64scatterps512-2.c: Ditto. * gcc.target/i386/avx512f-i64scatterq512-1.c: Ditto. * gcc.target/i386/avx512f-i64scatterq512-2.c: Ditto. * gcc.target/i386/avx512f-inline-asm.c: Ditto. * gcc.target/i386/avx512f-kandnw-1.c: Ditto. * gcc.target/i386/avx512f-kandw-1.c: Ditto. * gcc.target/i386/avx512f-klogic-2.c: Ditto. * gcc.target/i386/avx512f-knotw-1.c: Ditto. * gcc.target/i386/avx512f-kortestw-1.c: Ditto. * gcc.target/i386/avx512f-kortestw-2.c: Ditto. * gcc.target/i386/avx512f-korw-1.c: Ditto. * gcc.target/i386/avx512f-kunpckbw-1.c: Ditto. * gcc.target/i386/avx512f-kxnorw-1.c: Ditto. * gcc.target/i386/avx512f-kxorw-1.c: Ditto. * gcc.target/i386/avx512f-rounding.c: Ditto. * gcc.target/i386/avx512f-set-v16sf-1.c: Ditto. * gcc.target/i386/avx512f-set-v16sf-2.c: Ditto. * gcc.target/i386/avx512f-set-v16sf-3.c: Ditto. * gcc.target/i386/avx512f-set-v16sf-4.c: Ditto. * gcc.target/i386/avx512f-set-v16sf-5.c: Ditto. * gcc.target/i386/avx512f-set-v16si-1.c: Ditto. * gcc.target/i386/avx512f-set-v16si-2.c: Ditto. * gcc.target/i386/avx512f-set-v16si-3.c: Ditto. * gcc.target/i386/avx512f-set-v16si-4.c: Ditto. * gcc.target/i386/avx512f-set-v16si-5.c: Ditto. * gcc.target/i386/avx512f-set-v8df-1.c: Ditto. * gcc.target/i386/avx512f-set-v8df-2.c: Ditto. * gcc.target/i386/avx512f-set-v8df-3.c: Ditto. * gcc.target/i386/avx512f-set-v8df-4.c: Ditto. * gcc.target/i386/avx512f-set-v8df-5.c: Ditto. * gcc.target/i386/avx512f-set-v8di-1.c: Ditto. * gcc.target/i386/avx512f-set-v8di-2.c: Ditto. * gcc.target/i386/avx512f-set-v8di-3.c: Ditto. * gcc.target/i386/avx512f-set-v8di-4.c: Ditto. * gcc.target/i386/avx512f-set-v8di-5.c: Ditto. * gcc.target/i386/avx512f-setzero-pd-1.c: Ditto. * gcc.target/i386/avx512f-setzero-ps-1.c: Ditto. * gcc.target/i386/avx512f-setzero-si512-1.c: Ditto. * gcc.target/i386/avx512f-vaddpd-1.c: Ditto. * gcc.target/i386/avx512f-vaddpd-2.c: Ditto. * gcc.target/i386/avx512f-vaddps-1.c: Ditto. * gcc.target/i386/avx512f-vaddps-2.c: Ditto. * gcc.target/i386/avx512f-vaddsd-1.c: Ditto. * gcc.target/i386/avx512f-vaddsd-2.c: Ditto. * gcc.target/i386/avx512f-vaddss-1.c: Ditto. * gcc.target/i386/avx512f-vaddss-2.c: Ditto. * gcc.target/i386/avx512f-valignd-1.c: Ditto. * gcc.target/i386/avx512f-valignd-2.c: Ditto. * gcc.target/i386/avx512f-valignq-1.c: Ditto. * gcc.target/i386/avx512f-valignq-2.c: Ditto. * gcc.target/i386/avx512f-vblendmpd-1.c: Ditto. * gcc.target/i386/avx512f-vblendmpd-2.c: Ditto. * gcc.target/i386/avx512f-vblendmps-1.c: Ditto. * gcc.target/i386/avx512f-vblendmps-2.c: Ditto. * gcc.target/i386/avx512f-vbroadcastf32x4-1.c: Ditto. * gcc.target/i386/avx512f-vbroadcastf32x4-2.c: Ditto. * gcc.target/i386/avx512f-vbroadcastf64x4-1.c: Ditto. * gcc.target/i386/avx512f-vbroadcastf64x4-2.c: Ditto. * gcc.target/i386/avx512f-vbroadcasti32x4-1.c: Ditto. * gcc.target/i386/avx512f-vbroadcasti32x4-2.c: Ditto. * gcc.target/i386/avx512f-vbroadcasti64x4-1.c: Ditto. * gcc.target/i386/avx512f-vbroadcasti64x4-2.c: Ditto. * gcc.target/i386/avx512f-vbroadcastsd-1.c: Ditto. * gcc.target/i386/avx512f-vbroadcastsd-2.c: Ditto. * gcc.target/i386/avx512f-vbroadcastss-1.c: Ditto. * gcc.target/i386/avx512f-vbroadcastss-2.c: Ditto. * gcc.target/i386/avx512f-vcmppd-1.c: Ditto. * gcc.target/i386/avx512f-vcmppd-2.c: Ditto. * gcc.target/i386/avx512f-vcmpps-1.c: Ditto. * gcc.target/i386/avx512f-vcmpps-2.c: Ditto. * gcc.target/i386/avx512f-vcmpsd-1.c: Ditto. * gcc.target/i386/avx512f-vcmpsd-2.c: Ditto. * gcc.target/i386/avx512f-vcmpss-1.c: Ditto. * gcc.target/i386/avx512f-vcmpss-2.c: Ditto. * gcc.target/i386/avx512f-vcomisd-1.c: Ditto. * gcc.target/i386/avx512f-vcomiss-1.c: Ditto. * gcc.target/i386/avx512f-vcompresspd-1.c: Ditto. * gcc.target/i386/avx512f-vcompresspd-2.c: Ditto. * gcc.target/i386/avx512f-vcompressps-1.c: Ditto. * gcc.target/i386/avx512f-vcompressps-2.c: Ditto. * gcc.target/i386/avx512f-vcvtdq2pd-1.c: Ditto. * gcc.target/i386/avx512f-vcvtdq2pd-2.c: Ditto. * gcc.target/i386/avx512f-vcvtdq2ps-1.c: Ditto. * gcc.target/i386/avx512f-vcvtdq2ps-2.c: Ditto. * gcc.target/i386/avx512f-vcvtpd2dq-1.c: Ditto. * gcc.target/i386/avx512f-vcvtpd2dq-2.c: Ditto. * gcc.target/i386/avx512f-vcvtpd2ps-1.c: Ditto. * gcc.target/i386/avx512f-vcvtpd2ps-2.c: Ditto. * gcc.target/i386/avx512f-vcvtpd2udq-1.c: Ditto. * gcc.target/i386/avx512f-vcvtpd2udq-2.c: Ditto. * gcc.target/i386/avx512f-vcvtph2ps-1.c: Ditto. * gcc.target/i386/avx512f-vcvtph2ps-2.c: Ditto. * gcc.target/i386/avx512f-vcvtps2dq-1.c: Ditto. * gcc.target/i386/avx512f-vcvtps2dq-2.c: Ditto. * gcc.target/i386/avx512f-vcvtps2pd-1.c: Ditto. * gcc.target/i386/avx512f-vcvtps2pd-2.c: Ditto. * gcc.target/i386/avx512f-vcvtps2ph-1.c: Ditto. * gcc.target/i386/avx512f-vcvtps2ph-2.c: Ditto. * gcc.target/i386/avx512f-vcvtps2udq-1.c: Ditto. * gcc.target/i386/avx512f-vcvtps2udq-2.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2si-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2si64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2ss-2.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2usi-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2usi-2.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2usi64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2usi64-2.c: Ditto. * gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsi2ss-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2sd-2.c: Ditto. * gcc.target/i386/avx512f-vcvtss2si-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2si64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2usi-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2usi-2.c: Ditto. * gcc.target/i386/avx512f-vcvtss2usi64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2usi64-2.c: Ditto. * gcc.target/i386/avx512f-vcvttpd2dq-1.c: Ditto. * gcc.target/i386/avx512f-vcvttpd2dq-2.c: Ditto. * gcc.target/i386/avx512f-vcvttpd2udq-1.c: Ditto. * gcc.target/i386/avx512f-vcvttpd2udq-2.c: Ditto. * gcc.target/i386/avx512f-vcvttps2dq-1.c: Ditto. * gcc.target/i386/avx512f-vcvttps2dq-2.c: Ditto. * gcc.target/i386/avx512f-vcvttps2udq-1.c: Ditto. * gcc.target/i386/avx512f-vcvttps2udq-2.c: Ditto. * gcc.target/i386/avx512f-vcvttsd2si-1.c: Ditto. * gcc.target/i386/avx512f-vcvttsd2si-2.c: Ditto. * gcc.target/i386/avx512f-vcvttsd2si64-1.c: Ditto. * gcc.target/i386/avx512f-vcvttsd2si64-2.c: Ditto. * gcc.target/i386/avx512f-vcvttsd2usi-1.c: Ditto. * gcc.target/i386/avx512f-vcvttsd2usi-2.c: Ditto. * gcc.target/i386/avx512f-vcvttsd2usi64-1.c: Ditto. * gcc.target/i386/avx512f-vcvttsd2usi64-2.c: Ditto. * gcc.target/i386/avx512f-vcvttss2si-1.c: Ditto. * gcc.target/i386/avx512f-vcvttss2si-2.c: Ditto. * gcc.target/i386/avx512f-vcvttss2si64-1.c: Ditto. * gcc.target/i386/avx512f-vcvttss2si64-2.c: Ditto. * gcc.target/i386/avx512f-vcvttss2usi-1.c: Ditto. * gcc.target/i386/avx512f-vcvttss2usi-2.c: Ditto. * gcc.target/i386/avx512f-vcvttss2usi64-1.c: Ditto. * gcc.target/i386/avx512f-vcvttss2usi64-2.c: Ditto. * gcc.target/i386/avx512f-vcvtudq2pd-1.c: Ditto. * gcc.target/i386/avx512f-vcvtudq2pd-2.c: Ditto. * gcc.target/i386/avx512f-vcvtudq2ps-1.c: Ditto. * gcc.target/i386/avx512f-vcvtudq2ps-2.c: Ditto. * gcc.target/i386/avx512f-vcvtusi2sd-1.c: Ditto. * gcc.target/i386/avx512f-vcvtusi2sd-2.c: Ditto. * gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtusi2sd64-2.c: Ditto. * gcc.target/i386/avx512f-vcvtusi2ss-1.c: Ditto. * gcc.target/i386/avx512f-vcvtusi2ss-2.c: Ditto. * gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtusi2ss64-2.c: Ditto. * gcc.target/i386/avx512f-vdivpd-1.c: Ditto. * gcc.target/i386/avx512f-vdivpd-2.c: Ditto. * gcc.target/i386/avx512f-vdivps-1.c: Ditto. * gcc.target/i386/avx512f-vdivps-2.c: Ditto. * gcc.target/i386/avx512f-vdivsd-1.c: Ditto. * gcc.target/i386/avx512f-vdivsd-2.c: Ditto. * gcc.target/i386/avx512f-vdivss-1.c: Ditto. * gcc.target/i386/avx512f-vdivss-2.c: Ditto. * gcc.target/i386/avx512f-vec-init.c: Ditto. * gcc.target/i386/avx512f-vec-unpack.c: Ditto. * gcc.target/i386/avx512f-vexpandpd-1.c: Ditto. * gcc.target/i386/avx512f-vexpandpd-2.c: Ditto. * gcc.target/i386/avx512f-vexpandps-1.c: Ditto. * gcc.target/i386/avx512f-vexpandps-2.c: Ditto. * gcc.target/i386/avx512f-vextractf32x4-1.c: Ditto. * gcc.target/i386/avx512f-vextractf32x4-2.c: Ditto. * gcc.target/i386/avx512f-vextractf64x4-1.c: Ditto. * gcc.target/i386/avx512f-vextractf64x4-2.c: Ditto. * gcc.target/i386/avx512f-vextracti32x4-1.c: Ditto. * gcc.target/i386/avx512f-vextracti32x4-2.c: Ditto. * gcc.target/i386/avx512f-vextracti64x4-1.c: Ditto. * gcc.target/i386/avx512f-vextracti64x4-2.c: Ditto. * gcc.target/i386/avx512f-vfixupimmpd-1.c: Ditto. * gcc.target/i386/avx512f-vfixupimmpd-2.c: Ditto. * gcc.target/i386/avx512f-vfixupimmps-1.c: Ditto. * gcc.target/i386/avx512f-vfixupimmps-2.c: Ditto. * gcc.target/i386/avx512f-vfixupimmsd-1.c: Ditto. * gcc.target/i386/avx512f-vfixupimmsd-2.c: Ditto. * gcc.target/i386/avx512f-vfixupimmss-1.c: Ditto. * gcc.target/i386/avx512f-vfixupimmss-2.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXpd-2.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXps-2.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXsd-2.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXss-2.c: Ditto. * gcc.target/i386/avx512f-vfmaddsubXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddsubXXXpd-2.c: Ditto. * gcc.target/i386/avx512f-vfmaddsubXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddsubXXXps-2.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXpd-2.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXps-2.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXsd-2.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXss-2.c: Ditto. * gcc.target/i386/avx512f-vfmsubaddXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubaddXXXpd-2.c: Ditto. * gcc.target/i386/avx512f-vfmsubaddXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubaddXXXps-2.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXpd-2.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXps-2.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXsd-2.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXss-2.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXpd-2.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXps-2.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXsd-2.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXss-2.c: Ditto. * gcc.target/i386/avx512f-vgetexppd-1.c: Ditto. * gcc.target/i386/avx512f-vgetexppd-2.c: Ditto. * gcc.target/i386/avx512f-vgetexpps-1.c: Ditto. * gcc.target/i386/avx512f-vgetexpps-2.c: Ditto. * gcc.target/i386/avx512f-vgetexpsd-1.c: Ditto. * gcc.target/i386/avx512f-vgetexpsd-2.c: Ditto. * gcc.target/i386/avx512f-vgetexpss-1.c: Ditto. * gcc.target/i386/avx512f-vgetexpss-2.c: Ditto. * gcc.target/i386/avx512f-vgetmantpd-1.c: Ditto. * gcc.target/i386/avx512f-vgetmantpd-2.c: Ditto. * gcc.target/i386/avx512f-vgetmantps-1.c: Ditto. * gcc.target/i386/avx512f-vgetmantps-2.c: Ditto. * gcc.target/i386/avx512f-vgetmantsd-1.c: Ditto. * gcc.target/i386/avx512f-vgetmantsd-2.c: Ditto. * gcc.target/i386/avx512f-vgetmantss-1.c: Ditto. * gcc.target/i386/avx512f-vgetmantss-2.c: Ditto. * gcc.target/i386/avx512f-vinsertf32x4-1.c: Ditto. * gcc.target/i386/avx512f-vinsertf32x4-2.c: Ditto. * gcc.target/i386/avx512f-vinsertf64x4-1.c: Ditto. * gcc.target/i386/avx512f-vinsertf64x4-2.c: Ditto. * gcc.target/i386/avx512f-vinserti32x4-1.c: Ditto. * gcc.target/i386/avx512f-vinserti32x4-2.c: Ditto. * gcc.target/i386/avx512f-vinserti64x4-1.c: Ditto. * gcc.target/i386/avx512f-vinserti64x4-2.c: Ditto. * gcc.target/i386/avx512f-vmaxpd-1.c: Ditto. * gcc.target/i386/avx512f-vmaxpd-2.c: Ditto. * gcc.target/i386/avx512f-vmaxps-1.c: Ditto. * gcc.target/i386/avx512f-vmaxps-2.c: Ditto. * gcc.target/i386/avx512f-vmaxsd-1.c: Ditto. * gcc.target/i386/avx512f-vmaxsd-2.c: Ditto. * gcc.target/i386/avx512f-vmaxss-1.c: Ditto. * gcc.target/i386/avx512f-vmaxss-2.c: Ditto. * gcc.target/i386/avx512f-vminpd-1.c: Ditto. * gcc.target/i386/avx512f-vminpd-2.c: Ditto. * gcc.target/i386/avx512f-vminps-1.c: Ditto. * gcc.target/i386/avx512f-vminps-2.c: Ditto. * gcc.target/i386/avx512f-vminsd-1.c: Ditto. * gcc.target/i386/avx512f-vminsd-2.c: Ditto. * gcc.target/i386/avx512f-vminss-1.c: Ditto. * gcc.target/i386/avx512f-vminss-2.c: Ditto. * gcc.target/i386/avx512f-vmovapd-1.c: Ditto. * gcc.target/i386/avx512f-vmovapd-2.c: Ditto. * gcc.target/i386/avx512f-vmovaps-1.c: Ditto. * gcc.target/i386/avx512f-vmovaps-2.c: Ditto. * gcc.target/i386/avx512f-vmovddup-1.c: Ditto. * gcc.target/i386/avx512f-vmovddup-2.c: Ditto. * gcc.target/i386/avx512f-vmovdqa32-1.c: Ditto. * gcc.target/i386/avx512f-vmovdqa32-2.c: Ditto. * gcc.target/i386/avx512f-vmovdqa64-1.c: Ditto. * gcc.target/i386/avx512f-vmovdqa64-2.c: Ditto. * gcc.target/i386/avx512f-vmovdqu32-1.c: Ditto. * gcc.target/i386/avx512f-vmovdqu32-2.c: Ditto. * gcc.target/i386/avx512f-vmovdqu64-1.c: Ditto. * gcc.target/i386/avx512f-vmovdqu64-2.c: Ditto. * gcc.target/i386/avx512f-vmovntdq-1.c: Ditto. * gcc.target/i386/avx512f-vmovntdq-2.c: Ditto. * gcc.target/i386/avx512f-vmovntpd-1.c: Ditto. * gcc.target/i386/avx512f-vmovntpd-2.c: Ditto. * gcc.target/i386/avx512f-vmovntps-1.c: Ditto. * gcc.target/i386/avx512f-vmovntps-2.c: Ditto. * gcc.target/i386/avx512f-vmovsd-1.c: Ditto. * gcc.target/i386/avx512f-vmovsd-2.c: Ditto. * gcc.target/i386/avx512f-vmovshdup-1.c: Ditto. * gcc.target/i386/avx512f-vmovshdup-2.c: Ditto. * gcc.target/i386/avx512f-vmovsldup-1.c: Ditto. * gcc.target/i386/avx512f-vmovsldup-2.c: Ditto. * gcc.target/i386/avx512f-vmovss-1.c: Ditto. * gcc.target/i386/avx512f-vmovss-2.c: Ditto. * gcc.target/i386/avx512f-vmovupd-1.c: Ditto. * gcc.target/i386/avx512f-vmovupd-2.c: Ditto. * gcc.target/i386/avx512f-vmovups-1.c: Ditto. * gcc.target/i386/avx512f-vmovups-2.c: Ditto. * gcc.target/i386/avx512f-vmulpd-1.c: Ditto. * gcc.target/i386/avx512f-vmulpd-2.c: Ditto. * gcc.target/i386/avx512f-vmulps-1.c: Ditto. * gcc.target/i386/avx512f-vmulps-2.c: Ditto. * gcc.target/i386/avx512f-vmulsd-1.c: Ditto. * gcc.target/i386/avx512f-vmulsd-2.c: Ditto. * gcc.target/i386/avx512f-vmulss-1.c: Ditto. * gcc.target/i386/avx512f-vmulss-2.c: Ditto. * gcc.target/i386/avx512f-vpabsd-2.c: Ditto. * gcc.target/i386/avx512f-vpabsd512-1.c: Ditto. * gcc.target/i386/avx512f-vpabsq-2.c: Ditto. * gcc.target/i386/avx512f-vpabsq512-1.c: Ditto. * gcc.target/i386/avx512f-vpaddd-1.c: Ditto. * gcc.target/i386/avx512f-vpaddd-2.c: Ditto. * gcc.target/i386/avx512f-vpaddq-1.c: Ditto. * gcc.target/i386/avx512f-vpaddq-2.c: Ditto. * gcc.target/i386/avx512f-vpandd-1.c: Ditto. * gcc.target/i386/avx512f-vpandd-2.c: Ditto. * gcc.target/i386/avx512f-vpandnd-1.c: Ditto. * gcc.target/i386/avx512f-vpandnd-2.c: Ditto. * gcc.target/i386/avx512f-vpandnq-1.c: Ditto. * gcc.target/i386/avx512f-vpandnq-2.c: Ditto. * gcc.target/i386/avx512f-vpandq-1.c: Ditto. * gcc.target/i386/avx512f-vpandq-2.c: Ditto. * gcc.target/i386/avx512f-vpblendmd-1.c: Ditto. * gcc.target/i386/avx512f-vpblendmd-2.c: Ditto. * gcc.target/i386/avx512f-vpblendmq-1.c: Ditto. * gcc.target/i386/avx512f-vpblendmq-2.c: Ditto. * gcc.target/i386/avx512f-vpbroadcastd-1.c: Ditto. * gcc.target/i386/avx512f-vpbroadcastd-2.c: Ditto. * gcc.target/i386/avx512f-vpbroadcastq-1.c: Ditto. * gcc.target/i386/avx512f-vpbroadcastq-2.c: Ditto. * gcc.target/i386/avx512f-vpcmpd-1.c: Ditto. * gcc.target/i386/avx512f-vpcmpd-2.c: Ditto. * gcc.target/i386/avx512f-vpcmpeqd-1.c: Ditto. * gcc.target/i386/avx512f-vpcmpeqd-2.c: Ditto. * gcc.target/i386/avx512f-vpcmpeqq-1.c: Ditto. * gcc.target/i386/avx512f-vpcmpeqq-2.c: Ditto. * gcc.target/i386/avx512f-vpcmpgtd-1.c: Ditto. * gcc.target/i386/avx512f-vpcmpgtd-2.c: Ditto. * gcc.target/i386/avx512f-vpcmpgtq-1.c: Ditto. * gcc.target/i386/avx512f-vpcmpgtq-2.c: Ditto. * gcc.target/i386/avx512f-vpcmpq-1.c: Ditto. * gcc.target/i386/avx512f-vpcmpq-2.c: Ditto. * gcc.target/i386/avx512f-vpcmpud-1.c: Ditto. * gcc.target/i386/avx512f-vpcmpud-2.c: Ditto. * gcc.target/i386/avx512f-vpcmpuq-1.c: Ditto. * gcc.target/i386/avx512f-vpcmpuq-2.c: Ditto. * gcc.target/i386/avx512f-vpcompressd-1.c: Ditto. * gcc.target/i386/avx512f-vpcompressd-2.c: Ditto. * gcc.target/i386/avx512f-vpcompressq-1.c: Ditto. * gcc.target/i386/avx512f-vpcompressq-2.c: Ditto. * gcc.target/i386/avx512f-vpermd-1.c: Ditto. * gcc.target/i386/avx512f-vpermd-2.c: Ditto. * gcc.target/i386/avx512f-vpermi2d-1.c: Ditto. * gcc.target/i386/avx512f-vpermi2d-2.c: Ditto. * gcc.target/i386/avx512f-vpermi2pd-1.c: Ditto. * gcc.target/i386/avx512f-vpermi2pd-2.c: Ditto. * gcc.target/i386/avx512f-vpermi2ps-1.c: Ditto. * gcc.target/i386/avx512f-vpermi2ps-2.c: Ditto. * gcc.target/i386/avx512f-vpermi2q-1.c: Ditto. * gcc.target/i386/avx512f-vpermi2q-2.c: Ditto. * gcc.target/i386/avx512f-vpermilpd-1.c: Ditto. * gcc.target/i386/avx512f-vpermilpd-2.c: Ditto. * gcc.target/i386/avx512f-vpermilpdi-1.c: Ditto. * gcc.target/i386/avx512f-vpermilpdi-2.c: Ditto. * gcc.target/i386/avx512f-vpermilps-1.c: Ditto. * gcc.target/i386/avx512f-vpermilps-2.c: Ditto. * gcc.target/i386/avx512f-vpermilpsi-1.c: Ditto. * gcc.target/i386/avx512f-vpermilpsi-2.c: Ditto. * gcc.target/i386/avx512f-vpermpd-1.c: Ditto. * gcc.target/i386/avx512f-vpermpd-2.c: Ditto. * gcc.target/i386/avx512f-vpermpdi-1.c: Ditto. * gcc.target/i386/avx512f-vpermpdi-2.c: Ditto. * gcc.target/i386/avx512f-vpermps-1.c: Ditto. * gcc.target/i386/avx512f-vpermps-2.c: Ditto. * gcc.target/i386/avx512f-vpermq-imm-1.c: Ditto. * gcc.target/i386/avx512f-vpermq-imm-2.c: Ditto. * gcc.target/i386/avx512f-vpermq-var-1.c: Ditto. * gcc.target/i386/avx512f-vpermq-var-2.c: Ditto. * gcc.target/i386/avx512f-vpermt2d-1.c: Ditto. * gcc.target/i386/avx512f-vpermt2d-2.c: Ditto. * gcc.target/i386/avx512f-vpermt2pd-1.c: Ditto. * gcc.target/i386/avx512f-vpermt2pd-2.c: Ditto. * gcc.target/i386/avx512f-vpermt2ps-1.c: Ditto. * gcc.target/i386/avx512f-vpermt2ps-2.c: Ditto. * gcc.target/i386/avx512f-vpermt2q-1.c: Ditto. * gcc.target/i386/avx512f-vpermt2q-2.c: Ditto. * gcc.target/i386/avx512f-vpexpandd-1.c: Ditto. * gcc.target/i386/avx512f-vpexpandd-2.c: Ditto. * gcc.target/i386/avx512f-vpexpandq-1.c: Ditto. * gcc.target/i386/avx512f-vpexpandq-2.c: Ditto. * gcc.target/i386/avx512f-vpmaxsd-1.c: Ditto. * gcc.target/i386/avx512f-vpmaxsd-2.c: Ditto. * gcc.target/i386/avx512f-vpmaxsq-1.c: Ditto. * gcc.target/i386/avx512f-vpmaxsq-2.c: Ditto. * gcc.target/i386/avx512f-vpmaxud-1.c: Ditto. * gcc.target/i386/avx512f-vpmaxud-2.c: Ditto. * gcc.target/i386/avx512f-vpmaxuq-1.c: Ditto. * gcc.target/i386/avx512f-vpmaxuq-2.c: Ditto. * gcc.target/i386/avx512f-vpminsd-1.c: Ditto. * gcc.target/i386/avx512f-vpminsd-2.c: Ditto. * gcc.target/i386/avx512f-vpminsq-1.c: Ditto. * gcc.target/i386/avx512f-vpminsq-2.c: Ditto. * gcc.target/i386/avx512f-vpminud-1.c: Ditto. * gcc.target/i386/avx512f-vpminud-2.c: Ditto. * gcc.target/i386/avx512f-vpminuq-1.c: Ditto. * gcc.target/i386/avx512f-vpminuq-2.c: Ditto. * gcc.target/i386/avx512f-vpmovdb-1.c: Ditto. * gcc.target/i386/avx512f-vpmovdb-2.c: Ditto. * gcc.target/i386/avx512f-vpmovdw-1.c: Ditto. * gcc.target/i386/avx512f-vpmovdw-2.c: Ditto. * gcc.target/i386/avx512f-vpmovqb-1.c: Ditto. * gcc.target/i386/avx512f-vpmovqb-2.c: Ditto. * gcc.target/i386/avx512f-vpmovqd-1.c: Ditto. * gcc.target/i386/avx512f-vpmovqd-2.c: Ditto. * gcc.target/i386/avx512f-vpmovqw-1.c: Ditto. * gcc.target/i386/avx512f-vpmovqw-2.c: Ditto. * gcc.target/i386/avx512f-vpmovsdb-1.c: Ditto. * gcc.target/i386/avx512f-vpmovsdb-2.c: Ditto. * gcc.target/i386/avx512f-vpmovsdw-1.c: Ditto. * gcc.target/i386/avx512f-vpmovsdw-2.c: Ditto. * gcc.target/i386/avx512f-vpmovsqb-1.c: Ditto. * gcc.target/i386/avx512f-vpmovsqb-2.c: Ditto. * gcc.target/i386/avx512f-vpmovsqd-1.c: Ditto. * gcc.target/i386/avx512f-vpmovsqd-2.c: Ditto. * gcc.target/i386/avx512f-vpmovsqw-1.c: Ditto. * gcc.target/i386/avx512f-vpmovsqw-2.c: Ditto. * gcc.target/i386/avx512f-vpmovsxbd-1.c: Ditto. * gcc.target/i386/avx512f-vpmovsxbd-2.c: Ditto. * gcc.target/i386/avx512f-vpmovsxbq-1.c: Ditto. * gcc.target/i386/avx512f-vpmovsxbq-2.c: Ditto. * gcc.target/i386/avx512f-vpmovsxdq-1.c: Ditto. * gcc.target/i386/avx512f-vpmovsxdq-2.c: Ditto. * gcc.target/i386/avx512f-vpmovsxwd-1.c: Ditto. * gcc.target/i386/avx512f-vpmovsxwd-2.c: Ditto. * gcc.target/i386/avx512f-vpmovsxwq-1.c: Ditto. * gcc.target/i386/avx512f-vpmovsxwq-2.c: Ditto. * gcc.target/i386/avx512f-vpmovusdb-1.c: Ditto. * gcc.target/i386/avx512f-vpmovusdb-2.c: Ditto. * gcc.target/i386/avx512f-vpmovusdw-1.c: Ditto. * gcc.target/i386/avx512f-vpmovusdw-2.c: Ditto. * gcc.target/i386/avx512f-vpmovusqb-1.c: Ditto. * gcc.target/i386/avx512f-vpmovusqb-2.c: Ditto. * gcc.target/i386/avx512f-vpmovusqd-1.c: Ditto. * gcc.target/i386/avx512f-vpmovusqd-2.c: Ditto. * gcc.target/i386/avx512f-vpmovusqw-1.c: Ditto. * gcc.target/i386/avx512f-vpmovusqw-2.c: Ditto. * gcc.target/i386/avx512f-vpmovzxbd-1.c: Ditto. * gcc.target/i386/avx512f-vpmovzxbd-2.c: Ditto. * gcc.target/i386/avx512f-vpmovzxbq-1.c: Ditto. * gcc.target/i386/avx512f-vpmovzxbq-2.c: Ditto. * gcc.target/i386/avx512f-vpmovzxdq-1.c: Ditto. * gcc.target/i386/avx512f-vpmovzxdq-2.c: Ditto. * gcc.target/i386/avx512f-vpmovzxwd-1.c: Ditto. * gcc.target/i386/avx512f-vpmovzxwd-2.c: Ditto. * gcc.target/i386/avx512f-vpmovzxwq-1.c: Ditto. * gcc.target/i386/avx512f-vpmovzxwq-2.c: Ditto. * gcc.target/i386/avx512f-vpmuldq-1.c: Ditto. * gcc.target/i386/avx512f-vpmuldq-2.c: Ditto. * gcc.target/i386/avx512f-vpmulld-1.c: Ditto. * gcc.target/i386/avx512f-vpmulld-2.c: Ditto. * gcc.target/i386/avx512f-vpmuludq-1.c: Ditto. * gcc.target/i386/avx512f-vpmuludq-2.c: Ditto. * gcc.target/i386/avx512f-vpord-1.c: Ditto. * gcc.target/i386/avx512f-vpord-2.c: Ditto. * gcc.target/i386/avx512f-vporq-1.c: Ditto. * gcc.target/i386/avx512f-vporq-2.c: Ditto. * gcc.target/i386/avx512f-vprold-1.c: Ditto. * gcc.target/i386/avx512f-vprold-2.c: Ditto. * gcc.target/i386/avx512f-vprolq-1.c: Ditto. * gcc.target/i386/avx512f-vprolq-2.c: Ditto. * gcc.target/i386/avx512f-vprolvd-1.c: Ditto. * gcc.target/i386/avx512f-vprolvd-2.c: Ditto. * gcc.target/i386/avx512f-vprolvq-1.c: Ditto. * gcc.target/i386/avx512f-vprolvq-2.c: Ditto. * gcc.target/i386/avx512f-vprord-1.c: Ditto. * gcc.target/i386/avx512f-vprord-2.c: Ditto. * gcc.target/i386/avx512f-vprorq-1.c: Ditto. * gcc.target/i386/avx512f-vprorq-2.c: Ditto. * gcc.target/i386/avx512f-vprorvd-1.c: Ditto. * gcc.target/i386/avx512f-vprorvd-2.c: Ditto. * gcc.target/i386/avx512f-vprorvq-1.c: Ditto. * gcc.target/i386/avx512f-vprorvq-2.c: Ditto. * gcc.target/i386/avx512f-vpshufd-1.c: Ditto. * gcc.target/i386/avx512f-vpshufd-2.c: Ditto. * gcc.target/i386/avx512f-vpslld-1.c: Ditto. * gcc.target/i386/avx512f-vpslld-2.c: Ditto. * gcc.target/i386/avx512f-vpslldi-1.c: Ditto. * gcc.target/i386/avx512f-vpslldi-2.c: Ditto. * gcc.target/i386/avx512f-vpsllq-1.c: Ditto. * gcc.target/i386/avx512f-vpsllq-2.c: Ditto. * gcc.target/i386/avx512f-vpsllqi-1.c: Ditto. * gcc.target/i386/avx512f-vpsllqi-2.c: Ditto. * gcc.target/i386/avx512f-vpsllvd-1.c: Ditto. * gcc.target/i386/avx512f-vpsllvd-2.c: Ditto. * gcc.target/i386/avx512f-vpsllvq-1.c: Ditto. * gcc.target/i386/avx512f-vpsllvq-2.c: Ditto. * gcc.target/i386/avx512f-vpsllvq512-1.c: Ditto. * gcc.target/i386/avx512f-vpsllvq512-2.c: Ditto. * gcc.target/i386/avx512f-vpsrad-1.c: Ditto. * gcc.target/i386/avx512f-vpsrad-2.c: Ditto. * gcc.target/i386/avx512f-vpsradi-1.c: Ditto. * gcc.target/i386/avx512f-vpsradi-2.c: Ditto. * gcc.target/i386/avx512f-vpsraq-1.c: Ditto. * gcc.target/i386/avx512f-vpsraq-2.c: Ditto. * gcc.target/i386/avx512f-vpsraqi-1.c: Ditto. * gcc.target/i386/avx512f-vpsraqi-2.c: Ditto. * gcc.target/i386/avx512f-vpsravd-1.c: Ditto. * gcc.target/i386/avx512f-vpsravd-2.c: Ditto. * gcc.target/i386/avx512f-vpsravq-1.c: Ditto. * gcc.target/i386/avx512f-vpsravq-2.c: Ditto. * gcc.target/i386/avx512f-vpsravq512-1.c: Ditto. * gcc.target/i386/avx512f-vpsravq512-2.c: Ditto. * gcc.target/i386/avx512f-vpsrld-1.c: Ditto. * gcc.target/i386/avx512f-vpsrld-2.c: Ditto. * gcc.target/i386/avx512f-vpsrldi-1.c: Ditto. * gcc.target/i386/avx512f-vpsrldi-2.c: Ditto. * gcc.target/i386/avx512f-vpsrlq-1.c: Ditto. * gcc.target/i386/avx512f-vpsrlq-2.c: Ditto. * gcc.target/i386/avx512f-vpsrlqi-1.c: Ditto. * gcc.target/i386/avx512f-vpsrlqi-2.c: Ditto. * gcc.target/i386/avx512f-vpsrlvd-1.c: Ditto. * gcc.target/i386/avx512f-vpsrlvd-2.c: Ditto. * gcc.target/i386/avx512f-vpsrlvq-1.c: Ditto. * gcc.target/i386/avx512f-vpsrlvq-2.c: Ditto. * gcc.target/i386/avx512f-vpsrlvq512-1.c: Ditto. * gcc.target/i386/avx512f-vpsrlvq512-2.c: Ditto. * gcc.target/i386/avx512f-vpsubd-1.c: Ditto. * gcc.target/i386/avx512f-vpsubd-2.c: Ditto. * gcc.target/i386/avx512f-vpsubq-1.c: Ditto. * gcc.target/i386/avx512f-vpsubq-2.c: Ditto. * gcc.target/i386/avx512f-vpternlogd-1.c: Ditto. * gcc.target/i386/avx512f-vpternlogd-2.c: Ditto. * gcc.target/i386/avx512f-vpternlogq-1.c: Ditto. * gcc.target/i386/avx512f-vpternlogq-2.c: Ditto. * gcc.target/i386/avx512f-vptestmd-1.c: Ditto. * gcc.target/i386/avx512f-vptestmd-2.c: Ditto. * gcc.target/i386/avx512f-vptestmq-1.c: Ditto. * gcc.target/i386/avx512f-vptestmq-2.c: Ditto. * gcc.target/i386/avx512f-vpunpckhdq-1.c: Ditto. * gcc.target/i386/avx512f-vpunpckhdq-2.c: Ditto. * gcc.target/i386/avx512f-vpunpckhqdq-1.c: Ditto. * gcc.target/i386/avx512f-vpunpckhqdq-2.c: Ditto. * gcc.target/i386/avx512f-vpunpckldq-1.c: Ditto. * gcc.target/i386/avx512f-vpunpckldq-2.c: Ditto. * gcc.target/i386/avx512f-vpunpcklqdq-1.c: Ditto. * gcc.target/i386/avx512f-vpunpcklqdq-2.c: Ditto. * gcc.target/i386/avx512f-vpxord-1.c: Ditto. * gcc.target/i386/avx512f-vpxord-2.c: Ditto. * gcc.target/i386/avx512f-vpxorq-1.c: Ditto. * gcc.target/i386/avx512f-vpxorq-2.c: Ditto. * gcc.target/i386/avx512f-vrcp14pd-1.c: Ditto. * gcc.target/i386/avx512f-vrcp14pd-2.c: Ditto. * gcc.target/i386/avx512f-vrcp14ps-1.c: Ditto. * gcc.target/i386/avx512f-vrcp14ps-2.c: Ditto. * gcc.target/i386/avx512f-vrcp14sd-1.c: Ditto. * gcc.target/i386/avx512f-vrcp14sd-2.c: Ditto. * gcc.target/i386/avx512f-vrcp14ss-1.c: Ditto. * gcc.target/i386/avx512f-vrcp14ss-2.c: Ditto. * gcc.target/i386/avx512f-vrndscalepd-1.c: Ditto. * gcc.target/i386/avx512f-vrndscalepd-2.c: Ditto. * gcc.target/i386/avx512f-vrndscaleps-1.c: Ditto. * gcc.target/i386/avx512f-vrndscaleps-2.c: Ditto. * gcc.target/i386/avx512f-vrndscalesd-1.c: Ditto. * gcc.target/i386/avx512f-vrndscalesd-2.c: Ditto. * gcc.target/i386/avx512f-vrndscaless-1.c: Ditto. * gcc.target/i386/avx512f-vrndscaless-2.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14pd-1.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14pd-2.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14ps-1.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14ps-2.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14sd-1.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14sd-2.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14ss-1.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14ss-2.c: Ditto. * gcc.target/i386/avx512f-vscalefpd-1.c: Ditto. * gcc.target/i386/avx512f-vscalefpd-2.c: Ditto. * gcc.target/i386/avx512f-vscalefps-1.c: Ditto. * gcc.target/i386/avx512f-vscalefps-2.c: Ditto. * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto. * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto. * gcc.target/i386/avx512f-vscalefss-1.c: Ditto. * gcc.target/i386/avx512f-vscalefss-2.c: Ditto. * gcc.target/i386/avx512f-vshuff32x4-1.c: Ditto. * gcc.target/i386/avx512f-vshuff32x4-2.c: Ditto. * gcc.target/i386/avx512f-vshuff64x2-1.c: Ditto. * gcc.target/i386/avx512f-vshuff64x2-2.c: Ditto. * gcc.target/i386/avx512f-vshufi32x4-1.c: Ditto. * gcc.target/i386/avx512f-vshufi32x4-2.c: Ditto. * gcc.target/i386/avx512f-vshufi64x2-1.c: Ditto. * gcc.target/i386/avx512f-vshufi64x2-2.c: Ditto. * gcc.target/i386/avx512f-vshufpd-1.c: Ditto. * gcc.target/i386/avx512f-vshufpd-2.c: Ditto. * gcc.target/i386/avx512f-vshufps-1.c: Ditto. * gcc.target/i386/avx512f-vshufps-2.c: Ditto. * gcc.target/i386/avx512f-vsqrtpd-1.c: Ditto. * gcc.target/i386/avx512f-vsqrtpd-2.c: Ditto. * gcc.target/i386/avx512f-vsqrtps-1.c: Ditto. * gcc.target/i386/avx512f-vsqrtps-2.c: Ditto. * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto. * gcc.target/i386/avx512f-vsqrtsd-2.c: Ditto. * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto. * gcc.target/i386/avx512f-vsqrtss-2.c: Ditto. * gcc.target/i386/avx512f-vsubpd-1.c: Ditto. * gcc.target/i386/avx512f-vsubpd-2.c: Ditto. * gcc.target/i386/avx512f-vsubps-1.c: Ditto. * gcc.target/i386/avx512f-vsubps-2.c: Ditto. * gcc.target/i386/avx512f-vsubsd-1.c: Ditto. * gcc.target/i386/avx512f-vsubsd-2.c: Ditto. * gcc.target/i386/avx512f-vsubss-1.c: Ditto. * gcc.target/i386/avx512f-vsubss-2.c: Ditto. * gcc.target/i386/avx512f-vucomisd-1.c: Ditto. * gcc.target/i386/avx512f-vucomiss-1.c: Ditto. * gcc.target/i386/avx512f-vunpckhpd-1.c: Ditto. * gcc.target/i386/avx512f-vunpckhpd-2.c: Ditto. * gcc.target/i386/avx512f-vunpckhps-1.c: Ditto. * gcc.target/i386/avx512f-vunpckhps-2.c: Ditto. * gcc.target/i386/avx512f-vunpcklpd-1.c: Ditto. * gcc.target/i386/avx512f-vunpcklpd-2.c: Ditto. * gcc.target/i386/avx512f-vunpcklps-1.c: Ditto. * gcc.target/i386/avx512f-vunpcklps-2.c: Ditto. * gcc.target/i386/avx512f_cond_move.c: Ditto. * gcc.target/i386/avx512f_evex_reg_asm-1.c: Ditto. * gcc.target/i386/avx512f_evex_reg_asm-2.c: Ditto. * gcc.target/i386/avx512pf-vgatherpf0dps-1.c: Ditto. * gcc.target/i386/avx512pf-vgatherpf0qps-1.c: Ditto. * gcc.target/i386/avx512pf-vgatherpf1dps-1.c: Ditto. * gcc.target/i386/avx512pf-vgatherpf1qps-1.c: Ditto. * gcc.target/i386/avx512pf-vscatterpf0dps-1.c: Ditto. * gcc.target/i386/avx512pf-vscatterpf0qps-1.c: Ditto. * gcc.target/i386/avx512pf-vscatterpf1dps-1.c: Ditto. * gcc.target/i386/avx512pf-vscatterpf1qps-1.c: Ditto. * gcc.target/i386/sse-12.c: Updated options. * gcc.target/i386/sse-13.c: Updated options, added defines for __builtin_ia32_addpd512_mask, __builtin_ia32_addps512_mask, __builtin_ia32_addsd_mask, __builtin_ia32_addss_mask, __builtin_ia32_alignd512_mask, __builtin_ia32_alignq512_mask, __builtin_ia32_cmpd512_mask, __builtin_ia32_cmppd512_mask, __builtin_ia32_cmpps512_mask, __builtin_ia32_cmpq512_mask, __builtin_ia32_cmpsd_mask, __builtin_ia32_cmpss_mask, __builtin_ia32_cvtdq2ps512_mask, __builtin_ia32_cvtpd2dq512_mask, __builtin_ia32_cvtpd2ps512_mask, __builtin_ia32_cvtpd2udq512_mask, __builtin_ia32_cvtps2dq512_mask, __builtin_ia32_cvtps2pd512_mask, __builtin_ia32_cvtps2udq512_mask, __builtin_ia32_cvtsd2ss_mask, __builtin_ia32_cvtsi2sd64, __builtin_ia32_cvtsi2ss32, __builtin_ia32_cvtsi2ss64, __builtin_ia32_cvtss2sd_mask, __builtin_ia32_cvttpd2dq512_mask, __builtin_ia32_cvttpd2udq512_mask, __builtin_ia32_cvttps2dq512_mask, __builtin_ia32_cvttps2udq512_mask, __builtin_ia32_cvtudq2ps512_mask, __builtin_ia32_cvtusi2sd64, __builtin_ia32_cvtusi2ss32, __builtin_ia32_cvtusi2ss64, __builtin_ia32_divpd512_mask, __builtin_ia32_divps512_mask, __builtin_ia32_divsd_mask, __builtin_ia32_divss_mask, __builtin_ia32_extractf32x4_mask, __builtin_ia32_extractf64x4_mask, __builtin_ia32_extracti32x4_mask, __builtin_ia32_extracti64x4_mask, __builtin_ia32_fixupimmpd512_mask, __builtin_ia32_fixupimmpd512_maskz, __builtin_ia32_fixupimmps512_mask, __builtin_ia32_fixupimmps512_maskz, __builtin_ia32_fixupimmsd_mask, __builtin_ia32_fixupimmsd_maskz, __builtin_ia32_fixupimmss_mask, __builtin_ia32_fixupimmss_maskz, __builtin_ia32_gatherdiv8df, __builtin_ia32_gatherdiv8di, __builtin_ia32_gatherdiv16sf, __builtin_ia32_gatherdiv16si, __builtin_ia32_gathersiv16sf, __builtin_ia32_gathersiv16si, __builtin_ia32_gathersiv8df, __builtin_ia32_gathersiv8di, __builtin_ia32_getexppd512_mask, __builtin_ia32_getexpps512_mask, __builtin_ia32_getexpsd128_mask, __builtin_ia32_getexpss128_mask, __builtin_ia32_getmantpd512_mask, __builtin_ia32_getmantps512_mask, __builtin_ia32_getmantsd_mask, __builtin_ia32_getmantss_mask, __builtin_ia32_insertf32x4_mask, __builtin_ia32_insertf64x4_mask, __builtin_ia32_inserti32x4_mask, __builtin_ia32_inserti64x4_mask, __builtin_ia32_maxpd512_mask, __builtin_ia32_maxps512_mask, __builtin_ia32_maxsd_mask, __builtin_ia32_maxss_mask, __builtin_ia32_minpd512_mask, __builtin_ia32_minps512_mask, __builtin_ia32_minsd_mask, __builtin_ia32_minss_mask, __builtin_ia32_mulpd512_mask, __builtin_ia32_mulps512_mask, __builtin_ia32_mulsd_mask, __builtin_ia32_mulss_mask, __builtin_ia32_permdf512_mask, __builtin_ia32_permdi512_mask, __builtin_ia32_prold512_mask, __builtin_ia32_prolq512_mask, __builtin_ia32_prord512_mask, __builtin_ia32_prorq512_mask, __builtin_ia32_pshufd512_mask, __builtin_ia32_pslldi512_mask, __builtin_ia32_psllqi512_mask, __builtin_ia32_psradi512_mask, __builtin_ia32_psraqi512_mask, __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlqi512_mask, __builtin_ia32_pternlogd512_mask, __builtin_ia32_pternlogd512_maskz, __builtin_ia32_pternlogq512_mask, __builtin_ia32_pternlogq512_maskz, __builtin_ia32_rndscalepd_mask, __builtin_ia32_rndscaleps_mask, __builtin_ia32_rndscalesd_mask, __builtin_ia32_rndscaless_mask, __builtin_ia32_scalefpd512_mask, __builtin_ia32_scalefps512_mask, __builtin_ia32_scalefsd_mask, __builtin_ia32_scalefss_mask, __builtin_ia32_scatterdiv8df, __builtin_ia32_scatterdiv8di, __builtin_ia32_scatterdiv16sf, __builtin_ia32_scatterdiv16si, __builtin_ia32_scattersiv16sf, __builtin_ia32_scattersiv16si, __builtin_ia32_scattersiv8df, __builtin_ia32_scattersiv8di, __builtin_ia32_shuf_f32x4_mask, __builtin_ia32_shuf_f64x2_mask, __builtin_ia32_shuf_i32x4_mask, __builtin_ia32_shuf_i64x2_mask, __builtin_ia32_shufpd512_mask, __builtin_ia32_shufps512_mask, __builtin_ia32_sqrtpd512_mask, __builtin_ia32_sqrtps512_mask, __builtin_ia32_sqrtsd_mask, __builtin_ia32_sqrtss_mask, __builtin_ia32_subpd512_mask, __builtin_ia32_subps512_mask, __builtin_ia32_subsd_mask, __builtin_ia32_subss_mask, __builtin_ia32_ucmpd512_mask, __builtin_ia32_ucmpq512_mask, __builtin_ia32_vcomisd, __builtin_ia32_vcomiss, __builtin_ia32_vcvtph2ps512_mask, __builtin_ia32_vcvtps2ph512_mask, __builtin_ia32_vcvtsd2si32, __builtin_ia32_vcvtsd2si64, __builtin_ia32_vcvtsd2usi32, __builtin_ia32_vcvtsd2usi64, __builtin_ia32_vcvtss2si32, __builtin_ia32_vcvtss2si64, __builtin_ia32_vcvtss2usi32, __builtin_ia32_vcvtss2usi64, __builtin_ia32_vcvttsd2si32, __builtin_ia32_vcvttsd2si64, __builtin_ia32_vcvttsd2usi32, __builtin_ia32_vcvttsd2usi64, __builtin_ia32_vcvttss2si32, __builtin_ia32_vcvttss2si64, __builtin_ia32_vcvttss2usi32, __builtin_ia32_vcvttss2usi64, __builtin_ia32_vfmaddpd512_mask, __builtin_ia32_vfmaddpd512_mask3, __builtin_ia32_vfmaddpd512_maskz, __builtin_ia32_vfmaddps512_mask, __builtin_ia32_vfmaddps512_mask3, __builtin_ia32_vfmaddps512_maskz, __builtin_ia32_vfmaddsd3_mask, __builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz, __builtin_ia32_vfmaddss3_mask, __builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz, __builtin_ia32_vfmaddsubpd512_mask, __builtin_ia32_vfmaddsubpd512_mask3, __builtin_ia32_vfmaddsubpd512_maskz, __builtin_ia32_vfmaddsubps512_mask, __builtin_ia32_vfmaddsubps512_mask3, __builtin_ia32_vfmaddsubps512_maskz, __builtin_ia32_vfmsubaddpd512_mask3, __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_vpermilpd512_mask, __builtin_ia32_vpermilps512_mask, __builtin_ia32_exp2ps_mask, __builtin_ia32_exp2pd_mask, __builtin_ia32_exp2ps_mask, __builtin_ia32_exp2pd_mask, __builtin_ia32_rsqrt28ps_mask, __builtin_ia32_rsqrt28pd_mask, __builtin_ia32_gatherpfdps, __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, __builtin_ia32_scatterpfqps, __builtin_ia32_addpd512_mask, __builtin_ia32_addps512_mask, __builtin_ia32_addsd_mask, __builtin_ia32_addss_mask, __builtin_ia32_alignd512_mask, __builtin_ia32_alignq512_mask, __builtin_ia32_cmpd512_mask, __builtin_ia32_cmppd512_mask, __builtin_ia32_cmpps512_mask, __builtin_ia32_cmpq512_mask, __builtin_ia32_cmpsd_mask, __builtin_ia32_cmpss_mask, __builtin_ia32_cvtdq2ps512_mask, __builtin_ia32_cvtpd2dq512_mask, __builtin_ia32_cvtpd2ps512_mask, __builtin_ia32_cvtpd2udq512_mask, __builtin_ia32_cvtps2dq512_mask, __builtin_ia32_cvtps2pd512_mask, __builtin_ia32_cvtps2udq512_mask, __builtin_ia32_cvtsd2ss_mask, __builtin_ia32_cvtsi2sd64, __builtin_ia32_cvtsi2ss32, __builtin_ia32_cvtsi2ss64, __builtin_ia32_cvtss2sd_mask, __builtin_ia32_cvttpd2dq512_mask, __builtin_ia32_cvttpd2udq512_mask, __builtin_ia32_cvttps2dq512_mask, __builtin_ia32_cvttps2udq512_mask, __builtin_ia32_cvtudq2ps512_mask, __builtin_ia32_cvtusi2sd64, __builtin_ia32_cvtusi2ss32, __builtin_ia32_cvtusi2ss64, __builtin_ia32_divpd512_mask, __builtin_ia32_divps512_mask, __builtin_ia32_divsd_mask, __builtin_ia32_divss_mask, __builtin_ia32_extractf32x4_mask, __builtin_ia32_extractf64x4_mask, __builtin_ia32_extracti32x4_mask, __builtin_ia32_extracti64x4_mask, __builtin_ia32_fixupimmpd512_mask, __builtin_ia32_fixupimmpd512_maskz, __builtin_ia32_fixupimmps512_mask, __builtin_ia32_fixupimmps512_maskz, __builtin_ia32_fixupimmsd_mask, __builtin_ia32_fixupimmsd_maskz, __builtin_ia32_fixupimmss_mask, __builtin_ia32_fixupimmss_maskz, __builtin_ia32_gatherdiv8df, __builtin_ia32_gatherdiv8di, __builtin_ia32_gatherdiv16sf, __builtin_ia32_gatherdiv16si, __builtin_ia32_gathersiv16sf, __builtin_ia32_gathersiv16si, __builtin_ia32_gathersiv8df, __builtin_ia32_gathersiv8di, __builtin_ia32_getexppd512_mask, __builtin_ia32_getexpps512_mask, __builtin_ia32_getexpsd128_mask, __builtin_ia32_getexpss128_mask, __builtin_ia32_getmantpd512_mask, __builtin_ia32_getmantps512_mask, __builtin_ia32_getmantsd_mask, __builtin_ia32_getmantss_mask, __builtin_ia32_insertf32x4_mask, __builtin_ia32_insertf64x4_mask, __builtin_ia32_inserti32x4_mask, __builtin_ia32_inserti64x4_mask, __builtin_ia32_maxpd512_mask, __builtin_ia32_maxps512_mask, __builtin_ia32_maxsd_mask, __builtin_ia32_maxss_mask, __builtin_ia32_minpd512_mask, __builtin_ia32_minps512_mask, __builtin_ia32_minsd_mask, __builtin_ia32_minss_mask, __builtin_ia32_mulpd512_mask, __builtin_ia32_mulps512_mask, __builtin_ia32_mulsd_mask, __builtin_ia32_mulss_mask, __builtin_ia32_permdf512_mask, __builtin_ia32_permdi512_mask, __builtin_ia32_prold512_mask, __builtin_ia32_prolq512_mask, __builtin_ia32_prord512_mask, __builtin_ia32_prorq512_mask, __builtin_ia32_pshufd512_mask, __builtin_ia32_pslldi512_mask, __builtin_ia32_psllqi512_mask, __builtin_ia32_psradi512_mask, __builtin_ia32_psraqi512_mask, __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlqi512_mask, __builtin_ia32_pternlogd512_mask, __builtin_ia32_pternlogd512_maskz, __builtin_ia32_pternlogq512_mask, __builtin_ia32_pternlogq512_maskz, __builtin_ia32_rndscalepd_mask, __builtin_ia32_rndscaleps_mask, __builtin_ia32_rndscalesd_mask, __builtin_ia32_rndscaless_mask, __builtin_ia32_scalefpd512_mask, __builtin_ia32_scalefps512_mask, __builtin_ia32_scalefsd_mask, __builtin_ia32_scalefss_mask, __builtin_ia32_scatterdiv8df, __builtin_ia32_scatterdiv8di, __builtin_ia32_scatterdiv16sf, __builtin_ia32_scatterdiv16si, __builtin_ia32_scattersiv16sf, __builtin_ia32_scattersiv16si, __builtin_ia32_scattersiv8df, __builtin_ia32_scattersiv8di, __builtin_ia32_shuf_f32x4_mask, __builtin_ia32_shuf_f64x2_mask, __builtin_ia32_shuf_i32x4_mask, __builtin_ia32_shuf_i64x2_mask, __builtin_ia32_shufpd512_mask, __builtin_ia32_shufps512_mask, __builtin_ia32_sqrtpd512_mask, __builtin_ia32_sqrtps512_mask, __builtin_ia32_sqrtsd_mask, __builtin_ia32_sqrtss_mask, __builtin_ia32_subpd512_mask, __builtin_ia32_subps512_mask, __builtin_ia32_subsd_mask, __builtin_ia32_subss_mask, __builtin_ia32_ucmpd512_mask, __builtin_ia32_ucmpq512_mask, __builtin_ia32_vcomisd, __builtin_ia32_vcomiss, __builtin_ia32_vcvtph2ps512_mask, __builtin_ia32_vcvtps2ph512_mask, __builtin_ia32_vcvtsd2si32, __builtin_ia32_vcvtsd2si64, __builtin_ia32_vcvtsd2usi32, __builtin_ia32_vcvtsd2usi64, __builtin_ia32_vcvtss2si32, __builtin_ia32_vcvtss2si64, __builtin_ia32_vcvtss2usi32, __builtin_ia32_vcvtss2usi64, __builtin_ia32_vcvttsd2si32, __builtin_ia32_vcvttsd2si64, __builtin_ia32_vcvttsd2usi32, __builtin_ia32_vcvttsd2usi64, __builtin_ia32_vcvttss2si32, __builtin_ia32_vcvttss2si64, __builtin_ia32_vcvttss2usi32, __builtin_ia32_vcvttss2usi64, __builtin_ia32_vfmaddpd512_mask, __builtin_ia32_vfmaddpd512_mask3, __builtin_ia32_vfmaddpd512_maskz, __builtin_ia32_vfmaddps512_mask, __builtin_ia32_vfmaddps512_mask3, __builtin_ia32_vfmaddps512_maskz, __builtin_ia32_vfmaddsd3_mask, __builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz, __builtin_ia32_vfmaddss3_mask, __builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz, __builtin_ia32_vfmaddsubpd512_mask, __builtin_ia32_vfmaddsubpd512_mask3, __builtin_ia32_vfmaddsubpd512_maskz, __builtin_ia32_vfmaddsubps512_mask, __builtin_ia32_vfmaddsubps512_mask3, __builtin_ia32_vfmaddsubps512_maskz, __builtin_ia32_vfmsubaddpd512_mask3, __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_vpermilpd512_mask, __builtin_ia32_vpermilps512_mask, __builtin_ia32_gatherpfdps, __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, __builtin_ia32_scatterpfqps, __builtin_ia32_exp2pd_mask, __builtin_ia32_exp2ps_mask, __builtin_ia32_rcp28pd_mask, __builtin_ia32_rcp28ps_mask, __builtin_ia32_rsqrt28pd_mask, __builtin_ia32_rsqrt28ps_mask. * gcc.target/i386/sse-14.c (test_1y): New. (test_2y): Ditto. (test_2vx): Ditto. (test_3x): Ditto. (test_3v): Ditto. (test_3vx): Ditto. (test_4x): Ditto. (test_4y): Ditto. (test_4v): Ditto. (pragma GCC target): Add avx512f, avx512er, avx512cd, avx512pf. (tests): Add _mm512_cvt_roundepi32_ps, _mm512_cvt_roundepu32_ps, _mm512_cvt_roundpd_epi32, _mm512_cvt_roundpd_epu32, _mm512_cvt_roundpd_ps, _mm512_cvt_roundph_ps, _mm512_cvt_roundps_epi32, _mm512_cvt_roundps_epu32, _mm512_cvt_roundps_pd, _mm512_cvtps_ph, _mm512_cvtt_roundpd_epi32, _mm512_cvtt_roundpd_epu32, _mm512_cvtt_roundps_epi32, _mm512_cvtt_roundps_epu32, _mm512_extractf32x4_ps, _mm512_extractf64x4_pd, _mm512_extracti32x4_epi32, _mm512_extracti64x4_epi64, _mm512_getexp_round_pd, _mm512_getexp_round_ps, _mm512_getmant_round_pd, _mm512_getmant_round_ps, _mm512_permute_pd, _mm512_permute_ps, _mm512_permutex_epi64, _mm512_permutex_pd, _mm512_rol_epi32, _mm512_rol_epi64, _mm512_ror_epi32, _mm512_ror_epi64, _mm512_shuffle_epi32, _mm512_slli_epi32, _mm512_slli_epi64, _mm512_sqrt_round_pd, _mm512_sqrt_round_ps, _mm512_srai_epi32, _mm512_srai_epi64, _mm512_srli_epi32, _mm512_srli_epi64, _mm_cvt_roundsd_i32, _mm_cvt_roundsd_u32, _mm_cvt_roundss_i32, _mm_cvt_roundss_u32, _mm_cvtt_roundsd_i32, _mm_cvtt_roundsd_u32, _mm_cvtt_roundss_i32, _mm_cvtt_roundss_u32, _mm512_getmant_pd, _mm512_getmant_ps, _mm_cvt_roundi32_ss, _mm512_add_round_pd, _mm512_add_round_ps, _mm512_alignr_epi32, _mm512_alignr_epi64, _mm512_cmp_epi32_mask, _mm512_cmp_epi64_mask, _mm512_cmp_epu32_mask, _mm512_cmp_epu64_mask, _mm512_cmp_pd_mask, _mm512_cmp_ps_mask, _mm512_div_round_pd, _mm512_div_round_ps, _mm512_i32gather_epi32, _mm512_i32gather_epi64, _mm512_i32gather_pd, _mm512_i32gather_ps, _mm512_i64gather_epi32, _mm512_i64gather_epi64, _mm512_i64gather_pd, _mm512_i64gather_ps, _mm512_insertf32x4, _mm512_insertf64x4, _mm512_inserti32x4, _mm512_inserti64x4, _mm512_maskz_cvt_roundepi32_ps, _mm512_maskz_cvt_roundepu32_ps, _mm512_maskz_cvt_roundpd_epi32, _mm512_maskz_cvt_roundpd_epu32, _mm512_maskz_cvt_roundpd_ps, _mm512_maskz_cvt_roundph_ps, _mm512_maskz_cvt_roundps_epi32, _mm512_maskz_cvt_roundps_epu32, _mm512_maskz_cvt_roundps_pd, _mm512_maskz_cvtps_ph, _mm512_maskz_cvtt_roundpd_epi32, _mm512_maskz_cvtt_roundpd_epu32, _mm512_maskz_cvtt_roundps_epi32, _mm512_maskz_cvtt_roundps_epu32, _mm512_maskz_extractf32x4_ps, _mm512_maskz_extractf64x4_pd, _mm512_maskz_extracti32x4_epi32, _mm512_maskz_extracti64x4_epi64, _mm512_maskz_getexp_round_pd, _mm512_maskz_getexp_round_ps, _mm512_maskz_getmant_round_pd, _mm512_maskz_getmant_round_ps, _mm512_maskz_permute_pd, _mm512_maskz_permute_ps, _mm512_maskz_permutex_epi64, _mm512_maskz_permutex_pd, _mm512_maskz_rol_epi32, _mm512_maskz_rol_epi64, _mm512_maskz_ror_epi32, _mm512_maskz_ror_epi64, _mm512_maskz_shuffle_epi32, _mm512_maskz_slli_epi32, _mm512_maskz_slli_epi64, _mm512_maskz_sqrt_round_pd, _mm512_maskz_sqrt_round_ps, _mm512_maskz_srai_epi32, _mm512_maskz_srai_epi64, _mm512_maskz_srli_epi32, _mm512_maskz_srli_epi64, _mm512_max_round_pd, _mm512_max_round_ps, _mm512_min_round_pd, _mm512_min_round_ps, _mm512_mul_round_pd, _mm512_mul_round_ps, _mm512_scalef_round_pd, _mm512_scalef_round_ps, _mm512_shuffle_f32x4, _mm512_shuffle_f64x2, _mm512_shuffle_i32x4, _mm512_shuffle_i64x2, _mm512_shuffle_pd, _mm512_shuffle_ps, _mm512_sub_round_pd, _mm512_sub_round_ps, _mm_add_round_sd, _mm_add_round_ss, _mm_cmp_sd_mask, _mm_cmp_ss_mask, _mm_cvt_roundi64_sd, _mm_cvt_roundi64_ss, _mm_cvt_roundsd_ss, _mm_cvt_roundss_sd, _mm_cvt_roundu32_ss, _mm_cvt_roundu64_sd, _mm_cvt_roundu64_ss, _mm_div_round_sd, _mm_div_round_ss, _mm_getexp_round_sd, _mm_getexp_round_ss, _mm_getmant_round_sd, _mm_getmant_round_ss, _mm_mul_round_sd, _mm_mul_round_ss, _mm_scalef_round_sd, _mm_scalef_round_ss, _mm_sqrt_round_sd, _mm_sqrt_round_ss, _mm_sub_round_sd, _mm_sub_round_ss, _mm512_cmp_round_pd_mask, _mm512_cmp_round_ps_mask, _mm512_maskz_roundscale_round_pd, _mm512_maskz_roundscale_round_ps, _mm_cmp_round_sd_mask, _mm_cmp_round_ss_mask, _mm_comi_round_sd, _mm_comi_round_ss, _mm_roundscale_round_sd, _mm_roundscale_round_ss, _mm512_fmadd_round_pd, _mm512_fmadd_round_ps, _mm512_fmaddsub_round_pd, _mm512_fmaddsub_round_ps, _mm512_fmsub_round_pd, _mm512_fmsub_round_ps, _mm512_fmsubadd_round_pd, _mm512_fmsubadd_round_ps, _mm512_fnmadd_round_pd, _mm512_fnmadd_round_ps, _mm512_fnmsub_round_pd, _mm512_fnmsub_round_ps, _mm512_mask_cmp_epi32_mask, _mm512_mask_cmp_epi64_mask, _mm512_mask_cmp_epu32_mask, _mm512_mask_cmp_epu64_mask, _mm512_mask_cmp_pd_mask, _mm512_mask_cmp_ps_mask, _mm512_mask_cvt_roundepi32_ps, _mm512_mask_cvt_roundepu32_ps, _mm512_mask_cvt_roundpd_epi32, _mm512_mask_cvt_roundpd_epu32, _mm512_mask_cvt_roundpd_ps, _mm512_mask_cvt_roundph_ps, _mm512_mask_cvt_roundps_epi32, _mm512_mask_cvt_roundps_epu32, _mm512_mask_cvt_roundps_pd, _mm512_mask_cvtps_ph, _mm512_mask_cvtt_roundpd_epi32, _mm512_mask_cvtt_roundpd_epu32, _mm512_mask_cvtt_roundps_epi32, _mm512_mask_cvtt_roundps_epu32, _mm512_mask_extractf32x4_ps, _mm512_mask_extractf64x4_pd, _mm512_mask_extracti32x4_epi32, _mm512_mask_extracti64x4_epi64, _mm512_mask_getexp_round_pd, _mm512_mask_getexp_round_ps, _mm512_mask_getmant_round_pd, _mm512_mask_getmant_round_ps, _mm512_mask_permute_pd, _mm512_mask_permute_ps, _mm512_mask_permutex_epi64, _mm512_mask_permutex_pd, _mm512_mask_rol_epi32, _mm512_mask_rol_epi64, _mm512_mask_ror_epi32, _mm512_mask_ror_epi64, _mm512_mask_shuffle_epi32, _mm512_mask_slli_epi32, _mm512_mask_slli_epi64, _mm512_mask_sqrt_round_pd, _mm512_mask_sqrt_round_ps, _mm512_mask_srai_epi32, _mm512_mask_srai_epi64, _mm512_mask_srli_epi32, _mm512_mask_srli_epi64, _mm512_maskz_add_round_pd, _mm512_maskz_add_round_ps, _mm512_maskz_alignr_epi32, _mm512_maskz_alignr_epi64, _mm512_maskz_div_round_pd, _mm512_maskz_div_round_ps, _mm512_maskz_insertf32x4, _mm512_maskz_insertf64x4, _mm512_maskz_inserti32x4, _mm512_maskz_inserti64x4, _mm512_maskz_max_round_pd, _mm512_maskz_max_round_ps, _mm512_maskz_min_round_pd, _mm512_maskz_min_round_ps, _mm512_maskz_mul_round_pd, _mm512_maskz_mul_round_ps, _mm512_maskz_scalef_round_pd, _mm512_maskz_scalef_round_ps, _mm512_maskz_shuffle_f32x4, _mm512_maskz_shuffle_f64x2, _mm512_maskz_shuffle_i32x4, _mm512_maskz_shuffle_i64x2, _mm512_maskz_shuffle_pd, _mm512_maskz_shuffle_ps, _mm512_maskz_sub_round_pd, _mm512_maskz_sub_round_ps, _mm512_ternarylogic_epi32, _mm512_ternarylogic_epi64, _mm_fmadd_round_sd, _mm_fmadd_round_ss, _mm_fmsub_round_sd, _mm_fmsub_round_ss, _mm_fnmadd_round_sd, _mm_fnmadd_round_ss, _mm_fnmsub_round_sd, _mm_fnmsub_round_ss, _mm_mask_cmp_sd_mask, _mm_mask_cmp_ss_mask, _mm_maskz_add_round_sd, _mm_maskz_add_round_ss, _mm_maskz_cvt_roundsd_ss, _mm_maskz_cvt_roundss_sd, _mm_maskz_div_round_sd, _mm_maskz_div_round_ss, _mm_maskz_getexp_round_sd, _mm_maskz_getexp_round_ss, _mm_maskz_getmant_round_sd, _mm_maskz_getmant_round_ss, _mm_maskz_mul_round_sd, _mm_maskz_mul_round_ss, _mm_maskz_scalef_round_sd, _mm_maskz_scalef_round_ss, _mm_maskz_sqrt_round_sd, _mm_maskz_sqrt_round_ss, _mm_maskz_sub_round_sd, _mm_maskz_sub_round_ss, _mm512_i32scatter_epi32, _mm512_i32scatter_epi64, _mm512_i32scatter_pd, _mm512_i32scatter_ps, _mm512_i64scatter_epi32, _mm512_i64scatter_epi64, _mm512_i64scatter_pd, _mm512_i64scatter_ps, _mm512_mask_roundscale_round_pd, _mm512_mask_roundscale_round_ps, _mm512_mask_cmp_round_pd_mask, _mm512_mask_cmp_round_ps_mask, _mm_fixupimm_round_sd, _mm_fixupimm_round_ss, _mm_mask_cmp_round_sd_mask, _mm_mask_cmp_round_ss_mask, _mm_maskz_roundscale_round_sd, _mm_maskz_roundscale_round_ss, _mm512_mask3_fmadd_round_pd, _mm512_mask3_fmadd_round_ps, _mm512_mask3_fmaddsub_round_pd, _mm512_mask3_fmaddsub_round_ps, _mm512_mask3_fmsub_round_pd, _mm512_mask3_fmsub_round_ps, _mm512_mask3_fmsubadd_round_pd, _mm512_mask3_fmsubadd_round_ps, _mm512_mask3_fnmadd_round_pd, _mm512_mask3_fnmadd_round_ps, _mm512_mask3_fnmsub_round_pd, _mm512_mask3_fnmsub_round_ps, _mm512_mask_add_round_pd, _mm512_mask_add_round_ps, _mm512_mask_alignr_epi32, _mm512_mask_alignr_epi64, _mm512_mask_div_round_pd, _mm512_mask_div_round_ps, _mm512_mask_fmadd_round_pd, _mm512_mask_fmadd_round_ps, _mm512_mask_fmaddsub_round_pd, _mm512_mask_fmaddsub_round_ps, _mm512_mask_fmsub_round_pd, _mm512_mask_fmsub_round_ps, _mm512_mask_fmsubadd_round_pd, _mm512_mask_fmsubadd_round_ps, _mm512_mask_fnmadd_round_pd, _mm512_mask_fnmadd_round_ps, _mm512_mask_fnmsub_round_pd, _mm512_mask_fnmsub_round_ps, _mm512_mask_i32gather_epi32, _mm512_mask_i32gather_epi64, _mm512_mask_i32gather_pd, _mm512_mask_i32gather_ps, _mm512_mask_i64gather_epi32, _mm512_mask_i64gather_epi64, _mm512_mask_i64gather_pd, _mm512_mask_i64gather_ps, _mm512_mask_insertf32x4, _mm512_mask_insertf64x4, _mm512_mask_inserti32x4, _mm512_mask_inserti64x4, _mm512_mask_max_round_pd, _mm512_mask_max_round_ps, _mm512_mask_min_round_pd, _mm512_mask_min_round_ps, _mm512_mask_mul_round_pd, _mm512_mask_mul_round_ps, _mm512_mask_scalef_round_pd, _mm512_mask_scalef_round_ps, _mm512_mask_shuffle_f32x4, _mm512_mask_shuffle_f64x2, _mm512_mask_shuffle_i32x4, _mm512_mask_shuffle_i64x2, _mm512_mask_shuffle_pd, _mm512_mask_shuffle_ps, _mm512_mask_sub_round_pd, _mm512_mask_sub_round_ps, _mm512_mask_ternarylogic_epi32, _mm512_mask_ternarylogic_epi64, _mm512_maskz_fmadd_round_pd, _mm512_maskz_fmadd_round_ps, _mm512_maskz_fmaddsub_round_pd, _mm512_maskz_fmaddsub_round_ps, _mm512_maskz_fmsub_round_pd, _mm512_maskz_fmsub_round_ps, _mm512_maskz_fmsubadd_round_pd, _mm512_maskz_fmsubadd_round_ps, _mm512_maskz_fnmadd_round_pd, _mm512_maskz_fnmadd_round_ps, _mm512_maskz_fnmsub_round_pd, _mm512_maskz_fnmsub_round_ps, _mm512_maskz_ternarylogic_epi32, _mm512_maskz_ternarylogic_epi64, _mm_mask3_fmadd_round_sd, _mm_mask3_fmadd_round_ss, _mm_mask3_fmsub_round_sd, _mm_mask3_fmsub_round_ss, _mm_mask3_fnmadd_round_sd, _mm_mask3_fnmadd_round_ss, _mm_mask3_fnmsub_round_sd, _mm_mask3_fnmsub_round_ss, _mm_mask_add_round_sd, _mm_mask_add_round_ss, _mm_mask_cvt_roundsd_ss, _mm_mask_cvt_roundss_sd, _mm_mask_div_round_sd, _mm_mask_div_round_ss, _mm_mask_fmadd_round_sd, _mm_mask_fmadd_round_ss, _mm_mask_fmsub_round_sd, _mm_mask_fmsub_round_ss, _mm_mask_fnmadd_round_sd, _mm_mask_fnmadd_round_ss, _mm_mask_fnmsub_round_sd, _mm_mask_fnmsub_round_ss, _mm_mask_getexp_round_sd, _mm_mask_getexp_round_ss, _mm_mask_getmant_round_sd, _mm_mask_getmant_round_ss, _mm_mask_mul_round_sd, _mm_mask_mul_round_ss, _mm_mask_scalef_round_sd, _mm_mask_scalef_round_ss, _mm_mask_sqrt_round_sd, _mm_mask_sqrt_round_ss, _mm_mask_sub_round_sd, _mm_mask_sub_round_ss, _mm_maskz_fmadd_round_sd, _mm_maskz_fmadd_round_ss, _mm_maskz_fmsub_round_sd, _mm_maskz_fmsub_round_ss, _mm_maskz_fnmadd_round_sd, _mm_maskz_fnmadd_round_ss, _mm_maskz_fnmsub_round_sd, _mm_maskz_fnmsub_round_ss, _mm512_mask_i32scatter_epi32, _mm512_mask_i32scatter_epi64, _mm512_mask_i32scatter_pd, _mm512_mask_i32scatter_ps, _mm512_mask_i64scatter_epi32, _mm512_mask_i64scatter_epi64, _mm512_mask_i64scatter_pd, _mm512_mask_i64scatter_ps, _mm_mask_getmant_sd, _mm_mask_getmant_ss, _mm_mask_roundscale_round_sd, _mm_mask_roundscale_round_ss, _mm512_mask_fixupimm_round_pd, _mm512_mask_fixupimm_round_ps, _mm512_maskz_fixupimm_round_pd, _mm512_maskz_fixupimm_round_ps, _mm_mask_fixupimm_round_sd, _mm_mask_fixupimm_round_ss, _mm_maskz_fixupimm_round_sd, _mm_maskz_fixupimm_round_ss, _mm512_mask_prefetch_i32gather_ps, _mm512_mask_prefetch_i32scatter_ps, _mm512_mask_prefetch_i64gather_ps, _mm512_mask_prefetch_i64scatter_ps, _mm512_exp2a23_round_pd, _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps, _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps, _mm512_maskz_exp2a23_round_pd, _mm512_maskz_exp2a23_round_ps, _mm512_maskz_rcp28_round_pd, _mm512_maskz_rcp28_round_ps, _mm512_maskz_rsqrt28_round_pd, _mm512_maskz_rsqrt28_round_ps, _mm512_mask_exp2a23_round_pd, _mm512_mask_exp2a23_round_ps, _mm512_mask_rcp28_round_pd, _mm512_mask_rcp28_round_ps, _mm512_mask_rsqrt28_round_pd, _mm512_mask_rsqrt28_round_ps. * gcc.target/i386/testimm-10.c: New file. * gcc.target/i386/testround-1.c: Ditto. * gcc.target/i386/testround-2.c: Ditto. * gcc.target/x86_64/abi/avx512f/test_m512_returning.c: Ditto. * gcc.target/x86_64/abi/avx512f/test_passing_m512.c: Ditto. * gcc.target/x86_64/abi/avx512f/test_passing_structs.c: Ditto. * gcc.target/x86_64/abi/avx512f/test_passing_unions.c: Ditto. * gcc.target/i386/avx512cd-check.h: Ditto. * gcc.target/i386/avx512er-check.h: Ditto. * gcc.target/i386/avx512f-check.h: Ditto. * gcc.target/i386/avx512f-helper.h: Ditto. * gcc.target/i386/avx512f-mask-type.h: Ditto. * gcc.target/i386/avx512f-os-support.h: Ditto. * gcc.target/i386/i386.exp (check_effective_target_avx512f): New. (check_effective_target_avx512cd): Ditto. (check_effective_target_avx512er): Ditto. * gcc.target/i386/m128-check.h (CHECK_FP_EXP): Ditto. * gcc.target/i386/m512-check.h: Ditto. * gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: New file. * gcc.target/x86_64/abi/avx512f/args.h: Ditto. * gcc.target/x86_64/abi/avx512f/asm-support.S: Ditto. * gcc.target/x86_64/abi/avx512f/avx512f-check.h: Ditto. * lib/target-supports.exp (check_effective_target_avx512f): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206262 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 1148 ++++++++++++++++++++ gcc/testsuite/g++.dg/other/i386-2.C | 2 +- gcc/testsuite/g++.dg/other/i386-3.C | 2 +- gcc/testsuite/gcc.target/i386/avx512cd-check.h | 46 + .../gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c | 14 + .../gcc.target/i386/avx512cd-vpbroadcastmb2q-2.c | 39 + .../gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c | 14 + .../gcc.target/i386/avx512cd-vpbroadcastmw2d-2.c | 39 + .../gcc.target/i386/avx512cd-vpconflictd-1.c | 18 + .../gcc.target/i386/avx512cd-vpconflictd-2.c | 60 + .../gcc.target/i386/avx512cd-vpconflictq-1.c | 18 + .../gcc.target/i386/avx512cd-vpconflictq-2.c | 60 + .../gcc.target/i386/avx512cd-vplzcntd-1.c | 18 + .../gcc.target/i386/avx512cd-vplzcntd-2.c | 60 + .../gcc.target/i386/avx512cd-vplzcntq-1.c | 18 + .../gcc.target/i386/avx512cd-vplzcntq-2.c | 60 + .../gcc.target/i386/avx512cd-vptestnmd-1.c | 16 + .../gcc.target/i386/avx512cd-vptestnmd-2.c | 52 + .../gcc.target/i386/avx512cd-vptestnmq-1.c | 16 + .../gcc.target/i386/avx512cd-vptestnmq-2.c | 52 + gcc/testsuite/gcc.target/i386/avx512er-check.h | 46 + gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c | 48 + gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-2.c | 48 + .../gcc.target/i386/avx512er-vrcp28pd-1.c | 24 + .../gcc.target/i386/avx512er-vrcp28pd-2.c | 47 + .../gcc.target/i386/avx512er-vrcp28ps-1.c | 24 + .../gcc.target/i386/avx512er-vrcp28ps-2.c | 47 + .../gcc.target/i386/avx512er-vrsqrt28pd-1.c | 24 + .../gcc.target/i386/avx512er-vrsqrt28pd-2.c | 48 + .../gcc.target/i386/avx512er-vrsqrt28ps-1.c | 24 + .../gcc.target/i386/avx512er-vrsqrt28ps-2.c | 48 + .../gcc.target/i386/avx512f-broadcast-gpr-1.c | 21 + .../gcc.target/i386/avx512f-broadcast-gpr-2.c | 29 + .../gcc.target/i386/avx512f-ceil-sfix-vec-1.c | 53 + .../gcc.target/i386/avx512f-ceil-sfix-vec-2.c | 7 + gcc/testsuite/gcc.target/i386/avx512f-check.h | 47 + gcc/testsuite/gcc.target/i386/avx512f-dummy.c | 13 + .../gcc.target/i386/avx512f-floor-sfix-vec-1.c | 53 + .../gcc.target/i386/avx512f-floor-sfix-vec-2.c | 7 + gcc/testsuite/gcc.target/i386/avx512f-gather-1.c | 217 ++++ gcc/testsuite/gcc.target/i386/avx512f-gather-2.c | 11 + gcc/testsuite/gcc.target/i386/avx512f-gather-3.c | 169 +++ gcc/testsuite/gcc.target/i386/avx512f-gather-4.c | 38 + gcc/testsuite/gcc.target/i386/avx512f-gather-5.c | 10 + gcc/testsuite/gcc.target/i386/avx512f-helper.h | 96 ++ .../gcc.target/i386/avx512f-i32gatherd512-1.c | 16 + .../gcc.target/i386/avx512f-i32gatherd512-2.c | 53 + .../gcc.target/i386/avx512f-i32gatherpd512-1.c | 17 + .../gcc.target/i386/avx512f-i32gatherpd512-2.c | 56 + .../gcc.target/i386/avx512f-i32gatherps512-1.c | 17 + .../gcc.target/i386/avx512f-i32gatherps512-2.c | 56 + .../gcc.target/i386/avx512f-i32gatherq512-1.c | 17 + .../gcc.target/i386/avx512f-i32gatherq512-2.c | 55 + .../gcc.target/i386/avx512f-i32scatterd512-1.c | 16 + .../gcc.target/i386/avx512f-i32scatterd512-2.c | 51 + .../gcc.target/i386/avx512f-i32scatterpd512-1.c | 17 + .../gcc.target/i386/avx512f-i32scatterpd512-2.c | 52 + .../gcc.target/i386/avx512f-i32scatterps512-1.c | 17 + .../gcc.target/i386/avx512f-i32scatterps512-2.c | 52 + .../gcc.target/i386/avx512f-i32scatterq512-1.c | 17 + .../gcc.target/i386/avx512f-i32scatterq512-2.c | 53 + .../gcc.target/i386/avx512f-i64gatherd512-1.c | 17 + .../gcc.target/i386/avx512f-i64gatherd512-2.c | 54 + .../gcc.target/i386/avx512f-i64gatherpd512-1.c | 17 + .../gcc.target/i386/avx512f-i64gatherpd512-2.c | 56 + .../gcc.target/i386/avx512f-i64gatherps512-1.c | 17 + .../gcc.target/i386/avx512f-i64gatherps512-2.c | 56 + .../gcc.target/i386/avx512f-i64gatherq512-1.c | 16 + .../gcc.target/i386/avx512f-i64gatherq512-2.c | 54 + .../gcc.target/i386/avx512f-i64scatterd512-1.c | 17 + .../gcc.target/i386/avx512f-i64scatterd512-2.c | 52 + .../gcc.target/i386/avx512f-i64scatterpd512-1.c | 17 + .../gcc.target/i386/avx512f-i64scatterpd512-2.c | 52 + .../gcc.target/i386/avx512f-i64scatterps512-1.c | 17 + .../gcc.target/i386/avx512f-i64scatterps512-2.c | 52 + .../gcc.target/i386/avx512f-i64scatterq512-1.c | 16 + .../gcc.target/i386/avx512f-i64scatterq512-2.c | 52 + gcc/testsuite/gcc.target/i386/avx512f-inline-asm.c | 68 ++ gcc/testsuite/gcc.target/i386/avx512f-kandnw-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-kandw-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-klogic-2.c | 58 + gcc/testsuite/gcc.target/i386/avx512f-knotw-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-kortestw-1.c | 22 + gcc/testsuite/gcc.target/i386/avx512f-kortestw-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-korw-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-1.c | 17 + gcc/testsuite/gcc.target/i386/avx512f-kxnorw-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-kxorw-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-mask-type.h | 8 + gcc/testsuite/gcc.target/i386/avx512f-os-support.h | 10 + gcc/testsuite/gcc.target/i386/avx512f-rounding.c | 10 + .../gcc.target/i386/avx512f-set-v16sf-1.c | 45 + .../gcc.target/i386/avx512f-set-v16sf-2.c | 49 + .../gcc.target/i386/avx512f-set-v16sf-3.c | 45 + .../gcc.target/i386/avx512f-set-v16sf-4.c | 119 ++ .../gcc.target/i386/avx512f-set-v16sf-5.c | 119 ++ .../gcc.target/i386/avx512f-set-v16si-1.c | 47 + .../gcc.target/i386/avx512f-set-v16si-2.c | 49 + .../gcc.target/i386/avx512f-set-v16si-3.c | 45 + .../gcc.target/i386/avx512f-set-v16si-4.c | 119 ++ .../gcc.target/i386/avx512f-set-v16si-5.c | 119 ++ gcc/testsuite/gcc.target/i386/avx512f-set-v8df-1.c | 38 + gcc/testsuite/gcc.target/i386/avx512f-set-v8df-2.c | 40 + gcc/testsuite/gcc.target/i386/avx512f-set-v8df-3.c | 43 + gcc/testsuite/gcc.target/i386/avx512f-set-v8df-4.c | 87 ++ gcc/testsuite/gcc.target/i386/avx512f-set-v8df-5.c | 87 ++ gcc/testsuite/gcc.target/i386/avx512f-set-v8di-1.c | 39 + gcc/testsuite/gcc.target/i386/avx512f-set-v8di-2.c | 41 + gcc/testsuite/gcc.target/i386/avx512f-set-v8di-3.c | 43 + gcc/testsuite/gcc.target/i386/avx512f-set-v8di-4.c | 87 ++ gcc/testsuite/gcc.target/i386/avx512f-set-v8di-5.c | 87 ++ .../gcc.target/i386/avx512f-setzero-pd-1.c | 21 + .../gcc.target/i386/avx512f-setzero-ps-1.c | 21 + .../gcc.target/i386/avx512f-setzero-si512-1.c | 21 + gcc/testsuite/gcc.target/i386/avx512f-vaddpd-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vaddpd-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vaddps-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vaddps-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-valignd-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-valignd-2.c | 61 ++ gcc/testsuite/gcc.target/i386/avx512f-valignq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-valignq-2.c | 61 ++ .../gcc.target/i386/avx512f-vblendmpd-1.c | 14 + .../gcc.target/i386/avx512f-vblendmpd-2.c | 43 + .../gcc.target/i386/avx512f-vblendmps-1.c | 14 + .../gcc.target/i386/avx512f-vblendmps-2.c | 43 + .../gcc.target/i386/avx512f-vbroadcastf32x4-1.c | 19 + .../gcc.target/i386/avx512f-vbroadcastf32x4-2.c | 55 + .../gcc.target/i386/avx512f-vbroadcastf64x4-1.c | 19 + .../gcc.target/i386/avx512f-vbroadcastf64x4-2.c | 55 + .../gcc.target/i386/avx512f-vbroadcasti32x4-1.c | 19 + .../gcc.target/i386/avx512f-vbroadcasti32x4-2.c | 55 + .../gcc.target/i386/avx512f-vbroadcasti64x4-1.c | 19 + .../gcc.target/i386/avx512f-vbroadcasti64x4-2.c | 55 + .../gcc.target/i386/avx512f-vbroadcastsd-1.c | 19 + .../gcc.target/i386/avx512f-vbroadcastsd-2.c | 55 + .../gcc.target/i386/avx512f-vbroadcastss-1.c | 19 + .../gcc.target/i386/avx512f-vbroadcastss-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c | 20 + gcc/testsuite/gcc.target/i386/avx512f-vcmppd-2.c | 75 ++ gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c | 20 + gcc/testsuite/gcc.target/i386/avx512f-vcmpps-2.c | 79 ++ gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-1.c | 20 + gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-2.c | 67 ++ gcc/testsuite/gcc.target/i386/avx512f-vcmpss-1.c | 20 + gcc/testsuite/gcc.target/i386/avx512f-vcmpss-2.c | 68 ++ gcc/testsuite/gcc.target/i386/avx512f-vcomisd-1.c | 14 + gcc/testsuite/gcc.target/i386/avx512f-vcomiss-1.c | 21 + .../gcc.target/i386/avx512f-vcompresspd-1.c | 20 + .../gcc.target/i386/avx512f-vcompresspd-2.c | 62 ++ .../gcc.target/i386/avx512f-vcompressps-1.c | 20 + .../gcc.target/i386/avx512f-vcompressps-2.c | 62 ++ .../gcc.target/i386/avx512f-vcvtdq2pd-1.c | 19 + .../gcc.target/i386/avx512f-vcvtdq2pd-2.c | 58 + .../gcc.target/i386/avx512f-vcvtdq2ps-1.c | 25 + .../gcc.target/i386/avx512f-vcvtdq2ps-2.c | 55 + .../gcc.target/i386/avx512f-vcvtpd2dq-1.c | 25 + .../gcc.target/i386/avx512f-vcvtpd2dq-2.c | 59 + .../gcc.target/i386/avx512f-vcvtpd2ps-1.c | 24 + .../gcc.target/i386/avx512f-vcvtpd2ps-2.c | 53 + .../gcc.target/i386/avx512f-vcvtpd2udq-1.c | 25 + .../gcc.target/i386/avx512f-vcvtpd2udq-2.c | 57 + .../gcc.target/i386/avx512f-vcvtph2ps-1.c | 24 + .../gcc.target/i386/avx512f-vcvtph2ps-2.c | 84 ++ .../gcc.target/i386/avx512f-vcvtps2dq-1.c | 25 + .../gcc.target/i386/avx512f-vcvtps2dq-2.c | 52 + .../gcc.target/i386/avx512f-vcvtps2pd-1.c | 25 + .../gcc.target/i386/avx512f-vcvtps2pd-2.c | 58 + .../gcc.target/i386/avx512f-vcvtps2ph-1.c | 18 + .../gcc.target/i386/avx512f-vcvtps2ph-2.c | 84 ++ .../gcc.target/i386/avx512f-vcvtps2udq-1.c | 25 + .../gcc.target/i386/avx512f-vcvtps2udq-2.c | 50 + .../gcc.target/i386/avx512f-vcvtsd2si-1.c | 13 + .../gcc.target/i386/avx512f-vcvtsd2si64-1.c | 14 + .../gcc.target/i386/avx512f-vcvtsd2usi-1.c | 15 + .../gcc.target/i386/avx512f-vcvtsd2usi-2.c | 20 + .../gcc.target/i386/avx512f-vcvtsd2usi64-1.c | 16 + .../gcc.target/i386/avx512f-vcvtsd2usi64-2.c | 20 + .../gcc.target/i386/avx512f-vcvtsi2sd64-1.c | 14 + .../gcc.target/i386/avx512f-vcvtsi2ss-1.c | 14 + .../gcc.target/i386/avx512f-vcvtsi2ss64-1.c | 14 + .../gcc.target/i386/avx512f-vcvtss2si-1.c | 13 + .../gcc.target/i386/avx512f-vcvtss2si64-1.c | 14 + .../gcc.target/i386/avx512f-vcvtss2usi-1.c | 15 + .../gcc.target/i386/avx512f-vcvtss2usi-2.c | 20 + .../gcc.target/i386/avx512f-vcvtss2usi64-1.c | 16 + .../gcc.target/i386/avx512f-vcvtss2usi64-2.c | 20 + .../gcc.target/i386/avx512f-vcvttpd2dq-1.c | 25 + .../gcc.target/i386/avx512f-vcvttpd2dq-2.c | 58 + .../gcc.target/i386/avx512f-vcvttpd2udq-1.c | 25 + .../gcc.target/i386/avx512f-vcvttpd2udq-2.c | 57 + .../gcc.target/i386/avx512f-vcvttps2dq-1.c | 25 + .../gcc.target/i386/avx512f-vcvttps2dq-2.c | 52 + .../gcc.target/i386/avx512f-vcvttps2udq-1.c | 25 + .../gcc.target/i386/avx512f-vcvttps2udq-2.c | 50 + .../gcc.target/i386/avx512f-vcvttsd2si-1.c | 15 + .../gcc.target/i386/avx512f-vcvttsd2si-2.c | 28 + .../gcc.target/i386/avx512f-vcvttsd2si64-1.c | 16 + .../gcc.target/i386/avx512f-vcvttsd2si64-2.c | 28 + .../gcc.target/i386/avx512f-vcvttsd2usi-1.c | 15 + .../gcc.target/i386/avx512f-vcvttsd2usi-2.c | 27 + .../gcc.target/i386/avx512f-vcvttsd2usi64-1.c | 16 + .../gcc.target/i386/avx512f-vcvttsd2usi64-2.c | 27 + .../gcc.target/i386/avx512f-vcvttss2si-1.c | 15 + .../gcc.target/i386/avx512f-vcvttss2si-2.c | 28 + .../gcc.target/i386/avx512f-vcvttss2si64-1.c | 16 + .../gcc.target/i386/avx512f-vcvttss2si64-2.c | 28 + .../gcc.target/i386/avx512f-vcvttss2usi-1.c | 15 + .../gcc.target/i386/avx512f-vcvttss2usi-2.c | 27 + .../gcc.target/i386/avx512f-vcvttss2usi64-1.c | 16 + .../gcc.target/i386/avx512f-vcvttss2usi64-2.c | 27 + .../gcc.target/i386/avx512f-vcvtudq2pd-1.c | 19 + .../gcc.target/i386/avx512f-vcvtudq2pd-2.c | 57 + .../gcc.target/i386/avx512f-vcvtudq2ps-1.c | 25 + .../gcc.target/i386/avx512f-vcvtudq2ps-2.c | 54 + .../gcc.target/i386/avx512f-vcvtusi2sd-1.c | 14 + .../gcc.target/i386/avx512f-vcvtusi2sd-2.c | 31 + .../gcc.target/i386/avx512f-vcvtusi2sd64-1.c | 16 + .../gcc.target/i386/avx512f-vcvtusi2sd64-2.c | 31 + .../gcc.target/i386/avx512f-vcvtusi2ss-1.c | 16 + .../gcc.target/i386/avx512f-vcvtusi2ss-2.c | 33 + .../gcc.target/i386/avx512f-vcvtusi2ss64-1.c | 16 + .../gcc.target/i386/avx512f-vcvtusi2ss64-2.c | 33 + gcc/testsuite/gcc.target/i386/avx512f-vdivpd-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vdivpd-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vdivps-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vdivps-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vec-init.c | 121 +++ gcc/testsuite/gcc.target/i386/avx512f-vec-unpack.c | 127 +++ .../gcc.target/i386/avx512f-vexpandpd-1.c | 20 + .../gcc.target/i386/avx512f-vexpandpd-2.c | 66 ++ .../gcc.target/i386/avx512f-vexpandps-1.c | 20 + .../gcc.target/i386/avx512f-vexpandps-2.c | 66 ++ .../gcc.target/i386/avx512f-vextractf32x4-1.c | 18 + .../gcc.target/i386/avx512f-vextractf64x4-1.c | 18 + .../gcc.target/i386/avx512f-vextractf64x4-2.c | 65 ++ .../gcc.target/i386/avx512f-vextracti32x4-1.c | 18 + .../gcc.target/i386/avx512f-vextracti64x4-1.c | 18 + .../gcc.target/i386/avx512f-vextracti64x4-2.c | 62 ++ .../gcc.target/i386/avx512f-vfixupimmpd-1.c | 25 + .../gcc.target/i386/avx512f-vfixupimmpd-2.c | 115 ++ .../gcc.target/i386/avx512f-vfixupimmps-1.c | 25 + .../gcc.target/i386/avx512f-vfixupimmps-2.c | 121 +++ .../gcc.target/i386/avx512f-vfixupimmsd-1.c | 25 + .../gcc.target/i386/avx512f-vfixupimmsd-2.c | 118 ++ .../gcc.target/i386/avx512f-vfixupimmss-1.c | 25 + .../gcc.target/i386/avx512f-vfixupimmss-2.c | 119 ++ .../gcc.target/i386/avx512f-vfmaddXXXpd-1.c | 28 + .../gcc.target/i386/avx512f-vfmaddXXXpd-2.c | 66 ++ .../gcc.target/i386/avx512f-vfmaddXXXps-1.c | 28 + .../gcc.target/i386/avx512f-vfmaddXXXps-2.c | 66 ++ .../gcc.target/i386/avx512f-vfmaddsubXXXpd-1.c | 28 + .../gcc.target/i386/avx512f-vfmaddsubXXXpd-2.c | 69 ++ .../gcc.target/i386/avx512f-vfmaddsubXXXps-1.c | 28 + .../gcc.target/i386/avx512f-vfmaddsubXXXps-2.c | 69 ++ .../gcc.target/i386/avx512f-vfmsubXXXpd-1.c | 28 + .../gcc.target/i386/avx512f-vfmsubXXXpd-2.c | 66 ++ .../gcc.target/i386/avx512f-vfmsubXXXps-1.c | 28 + .../gcc.target/i386/avx512f-vfmsubXXXps-2.c | 66 ++ .../gcc.target/i386/avx512f-vfmsubaddXXXpd-1.c | 28 + .../gcc.target/i386/avx512f-vfmsubaddXXXpd-2.c | 69 ++ .../gcc.target/i386/avx512f-vfmsubaddXXXps-1.c | 28 + .../gcc.target/i386/avx512f-vfmsubaddXXXps-2.c | 69 ++ .../gcc.target/i386/avx512f-vfnmaddXXXpd-1.c | 28 + .../gcc.target/i386/avx512f-vfnmaddXXXpd-2.c | 66 ++ .../gcc.target/i386/avx512f-vfnmaddXXXps-1.c | 28 + .../gcc.target/i386/avx512f-vfnmaddXXXps-2.c | 66 ++ .../gcc.target/i386/avx512f-vfnmsubXXXpd-1.c | 28 + .../gcc.target/i386/avx512f-vfnmsubXXXpd-2.c | 66 ++ .../gcc.target/i386/avx512f-vfnmsubXXXps-1.c | 28 + .../gcc.target/i386/avx512f-vfnmsubXXXps-2.c | 66 ++ .../gcc.target/i386/avx512f-vgetexppd-1.c | 24 + .../gcc.target/i386/avx512f-vgetexppd-2.c | 58 + .../gcc.target/i386/avx512f-vgetexpps-1.c | 24 + .../gcc.target/i386/avx512f-vgetexpps-2.c | 58 + .../gcc.target/i386/avx512f-vgetmantpd-1.c | 33 + .../gcc.target/i386/avx512f-vgetmantpd-2.c | 122 +++ .../gcc.target/i386/avx512f-vgetmantps-1.c | 33 + .../gcc.target/i386/avx512f-vgetmantps-2.c | 123 +++ .../gcc.target/i386/avx512f-vinsertf32x4-1.c | 18 + .../gcc.target/i386/avx512f-vinsertf32x4-2.c | 59 + .../gcc.target/i386/avx512f-vinsertf64x4-1.c | 18 + .../gcc.target/i386/avx512f-vinsertf64x4-2.c | 65 ++ .../gcc.target/i386/avx512f-vinserti32x4-1.c | 18 + .../gcc.target/i386/avx512f-vinserti32x4-2.c | 59 + .../gcc.target/i386/avx512f-vinserti64x4-1.c | 18 + .../gcc.target/i386/avx512f-vinserti64x4-2.c | 65 ++ gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vmaxps-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vmaxps-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vminpd-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vminpd-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vminps-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vminps-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c | 27 + gcc/testsuite/gcc.target/i386/avx512f-vmovapd-2.c | 71 ++ gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c | 27 + gcc/testsuite/gcc.target/i386/avx512f-vmovaps-2.c | 71 ++ gcc/testsuite/gcc.target/i386/avx512f-vmovddup-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vmovddup-2.c | 54 + .../gcc.target/i386/avx512f-vmovdqa32-1.c | 29 + .../gcc.target/i386/avx512f-vmovdqa32-2.c | 80 ++ .../gcc.target/i386/avx512f-vmovdqa64-1.c | 27 + .../gcc.target/i386/avx512f-vmovdqa64-2.c | 71 ++ .../gcc.target/i386/avx512f-vmovdqu32-1.c | 24 + .../gcc.target/i386/avx512f-vmovdqu32-2.c | 62 ++ .../gcc.target/i386/avx512f-vmovdqu64-1.c | 20 + .../gcc.target/i386/avx512f-vmovdqu64-2.c | 50 + gcc/testsuite/gcc.target/i386/avx512f-vmovntdq-1.c | 14 + gcc/testsuite/gcc.target/i386/avx512f-vmovntdq-2.c | 17 + gcc/testsuite/gcc.target/i386/avx512f-vmovntpd-1.c | 14 + gcc/testsuite/gcc.target/i386/avx512f-vmovntpd-2.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vmovntps-1.c | 14 + gcc/testsuite/gcc.target/i386/avx512f-vmovntps-2.c | 22 + .../gcc.target/i386/avx512f-vmovshdup-1.c | 18 + .../gcc.target/i386/avx512f-vmovshdup-2.c | 53 + .../gcc.target/i386/avx512f-vmovsldup-1.c | 18 + .../gcc.target/i386/avx512f-vmovsldup-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vmovupd-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vmovupd-2.c | 54 + gcc/testsuite/gcc.target/i386/avx512f-vmovups-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vmovups-2.c | 54 + gcc/testsuite/gcc.target/i386/avx512f-vmulpd-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vmulpd-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vmulps-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vmulps-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vpabsd-2.c | 56 + .../gcc.target/i386/avx512f-vpabsd512-1.c | 17 + gcc/testsuite/gcc.target/i386/avx512f-vpabsq-2.c | 56 + .../gcc.target/i386/avx512f-vpabsq512-1.c | 17 + gcc/testsuite/gcc.target/i386/avx512f-vpaddd-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpaddd-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vpaddq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpaddq-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vpandd-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpandd-2.c | 57 + gcc/testsuite/gcc.target/i386/avx512f-vpandnd-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpandnd-2.c | 57 + gcc/testsuite/gcc.target/i386/avx512f-vpandnq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpandnq-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpandq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpandq-2.c | 53 + .../gcc.target/i386/avx512f-vpblendmd-1.c | 14 + .../gcc.target/i386/avx512f-vpblendmd-2.c | 43 + .../gcc.target/i386/avx512f-vpblendmq-1.c | 14 + .../gcc.target/i386/avx512f-vpblendmq-2.c | 43 + .../gcc.target/i386/avx512f-vpbroadcastd-1.c | 27 + .../gcc.target/i386/avx512f-vpbroadcastd-2.c | 72 ++ .../gcc.target/i386/avx512f-vpbroadcastq-1.c | 27 + .../gcc.target/i386/avx512f-vpbroadcastq-2.c | 72 ++ gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c | 16 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-2.c | 52 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-1.c | 16 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-1.c | 16 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-1.c | 16 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtq-1.c | 16 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtq-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-1.c | 16 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-2.c | 48 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c | 16 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-2.c | 52 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c | 16 + gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-2.c | 48 + .../gcc.target/i386/avx512f-vpcompressd-1.c | 20 + .../gcc.target/i386/avx512f-vpcompressd-2.c | 62 ++ .../gcc.target/i386/avx512f-vpcompressq-1.c | 20 + .../gcc.target/i386/avx512f-vpcompressq-2.c | 62 ++ gcc/testsuite/gcc.target/i386/avx512f-vpermd-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c | 56 + gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-1.c | 14 + gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c | 54 + .../gcc.target/i386/avx512f-vpermi2pd-1.c | 15 + .../gcc.target/i386/avx512f-vpermi2pd-2.c | 66 ++ .../gcc.target/i386/avx512f-vpermi2ps-1.c | 15 + .../gcc.target/i386/avx512f-vpermi2ps-2.c | 66 ++ gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-1.c | 14 + gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c | 54 + .../gcc.target/i386/avx512f-vpermilpd-1.c | 19 + .../gcc.target/i386/avx512f-vpermilpd-2.c | 60 + .../gcc.target/i386/avx512f-vpermilpdi-1.c | 18 + .../gcc.target/i386/avx512f-vpermilpdi-2.c | 57 + .../gcc.target/i386/avx512f-vpermilps-1.c | 19 + .../gcc.target/i386/avx512f-vpermilps-2.c | 60 + .../gcc.target/i386/avx512f-vpermilpsi-1.c | 18 + .../gcc.target/i386/avx512f-vpermilpsi-2.c | 82 ++ gcc/testsuite/gcc.target/i386/avx512f-vpermpd-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpermpd-2.c | 56 + gcc/testsuite/gcc.target/i386/avx512f-vpermpdi-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpermpdi-2.c | 58 + gcc/testsuite/gcc.target/i386/avx512f-vpermps-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c | 56 + .../gcc.target/i386/avx512f-vpermq-imm-1.c | 18 + .../gcc.target/i386/avx512f-vpermq-imm-2.c | 59 + .../gcc.target/i386/avx512f-vpermq-var-1.c | 18 + .../gcc.target/i386/avx512f-vpermq-var-2.c | 56 + gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c | 66 ++ .../gcc.target/i386/avx512f-vpermt2pd-1.c | 19 + .../gcc.target/i386/avx512f-vpermt2pd-2.c | 66 ++ .../gcc.target/i386/avx512f-vpermt2ps-1.c | 19 + .../gcc.target/i386/avx512f-vpermt2ps-2.c | 66 ++ gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c | 66 ++ .../gcc.target/i386/avx512f-vpexpandd-1.c | 20 + .../gcc.target/i386/avx512f-vpexpandd-2.c | 66 ++ .../gcc.target/i386/avx512f-vpexpandq-1.c | 20 + .../gcc.target/i386/avx512f-vpexpandq-2.c | 66 ++ gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpmaxud-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpmaxud-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpmaxuq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpmaxuq-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpminsd-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpminsd-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpminsq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpminsq-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpminud-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpminud-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpminuq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpminuq-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-2.c | 54 + gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-2.c | 54 + gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-2.c | 54 + gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-2.c | 61 ++ gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-2.c | 62 ++ gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-2.c | 61 ++ gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-2.c | 62 ++ gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-2.c | 61 ++ .../gcc.target/i386/avx512f-vpmovsxbd-1.c | 19 + .../gcc.target/i386/avx512f-vpmovsxbd-2.c | 55 + .../gcc.target/i386/avx512f-vpmovsxbq-1.c | 19 + .../gcc.target/i386/avx512f-vpmovsxbq-2.c | 55 + .../gcc.target/i386/avx512f-vpmovsxdq-1.c | 19 + .../gcc.target/i386/avx512f-vpmovsxdq-2.c | 55 + .../gcc.target/i386/avx512f-vpmovsxwd-1.c | 19 + .../gcc.target/i386/avx512f-vpmovsxwd-2.c | 55 + .../gcc.target/i386/avx512f-vpmovsxwq-1.c | 19 + .../gcc.target/i386/avx512f-vpmovsxwq-2.c | 55 + .../gcc.target/i386/avx512f-vpmovusdb-1.c | 19 + .../gcc.target/i386/avx512f-vpmovusdb-2.c | 54 + .../gcc.target/i386/avx512f-vpmovusdw-1.c | 19 + .../gcc.target/i386/avx512f-vpmovusdw-2.c | 55 + .../gcc.target/i386/avx512f-vpmovusqb-1.c | 19 + .../gcc.target/i386/avx512f-vpmovusqb-2.c | 54 + .../gcc.target/i386/avx512f-vpmovusqd-1.c | 19 + .../gcc.target/i386/avx512f-vpmovusqd-2.c | 55 + .../gcc.target/i386/avx512f-vpmovusqw-1.c | 19 + .../gcc.target/i386/avx512f-vpmovusqw-2.c | 54 + .../gcc.target/i386/avx512f-vpmovzxbd-1.c | 19 + .../gcc.target/i386/avx512f-vpmovzxbd-2.c | 54 + .../gcc.target/i386/avx512f-vpmovzxbq-1.c | 19 + .../gcc.target/i386/avx512f-vpmovzxbq-2.c | 54 + .../gcc.target/i386/avx512f-vpmovzxdq-1.c | 19 + .../gcc.target/i386/avx512f-vpmovzxdq-2.c | 54 + .../gcc.target/i386/avx512f-vpmovzxwd-1.c | 19 + .../gcc.target/i386/avx512f-vpmovzxwd-2.c | 54 + .../gcc.target/i386/avx512f-vpmovzxwq-1.c | 19 + .../gcc.target/i386/avx512f-vpmovzxwq-2.c | 54 + gcc/testsuite/gcc.target/i386/avx512f-vpmuldq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpmuldq-2.c | 56 + gcc/testsuite/gcc.target/i386/avx512f-vpmulld-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpmulld-2.c | 56 + gcc/testsuite/gcc.target/i386/avx512f-vpmuludq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpmuludq-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vpord-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpord-2.c | 57 + gcc/testsuite/gcc.target/i386/avx512f-vporq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vporq-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vprold-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vprold-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vprolq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vprolq-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vprolvd-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vprolvd-2.c | 52 + gcc/testsuite/gcc.target/i386/avx512f-vprolvq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vprolvq-2.c | 52 + gcc/testsuite/gcc.target/i386/avx512f-vprord-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vprord-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vprorq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vprorq-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vprorvd-1.c | 16 + gcc/testsuite/gcc.target/i386/avx512f-vprorvd-2.c | 52 + gcc/testsuite/gcc.target/i386/avx512f-vprorvq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vprorvq-2.c | 52 + gcc/testsuite/gcc.target/i386/avx512f-vpshufd-1.c | 17 + gcc/testsuite/gcc.target/i386/avx512f-vpshufd-2.c | 59 + gcc/testsuite/gcc.target/i386/avx512f-vpslld-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpslld-2.c | 62 ++ gcc/testsuite/gcc.target/i386/avx512f-vpslldi-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpslldi-2.c | 76 ++ gcc/testsuite/gcc.target/i386/avx512f-vpsllq-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsllq-2.c | 62 ++ gcc/testsuite/gcc.target/i386/avx512f-vpsllqi-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsllqi-2.c | 76 ++ gcc/testsuite/gcc.target/i386/avx512f-vpsllvd-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsllvd-2.c | 54 + gcc/testsuite/gcc.target/i386/avx512f-vpsllvq-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsllvq-2.c | 55 + .../gcc.target/i386/avx512f-vpsllvq512-1.c | 13 + .../gcc.target/i386/avx512f-vpsllvq512-2.c | 47 + gcc/testsuite/gcc.target/i386/avx512f-vpsrad-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsrad-2.c | 64 ++ gcc/testsuite/gcc.target/i386/avx512f-vpsradi-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsradi-2.c | 78 ++ gcc/testsuite/gcc.target/i386/avx512f-vpsraq-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsraq-2.c | 65 ++ gcc/testsuite/gcc.target/i386/avx512f-vpsraqi-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsraqi-2.c | 80 ++ gcc/testsuite/gcc.target/i386/avx512f-vpsravd-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpsravd-2.c | 57 + gcc/testsuite/gcc.target/i386/avx512f-vpsravq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpsravq-2.c | 58 + .../gcc.target/i386/avx512f-vpsravq512-1.c | 13 + .../gcc.target/i386/avx512f-vpsravq512-2.c | 47 + gcc/testsuite/gcc.target/i386/avx512f-vpsrld-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsrld-2.c | 60 + gcc/testsuite/gcc.target/i386/avx512f-vpsrldi-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsrldi-2.c | 76 ++ gcc/testsuite/gcc.target/i386/avx512f-vpsrlq-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsrlq-2.c | 60 + gcc/testsuite/gcc.target/i386/avx512f-vpsrlqi-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsrlqi-2.c | 77 ++ gcc/testsuite/gcc.target/i386/avx512f-vpsrlvd-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsrlvd-2.c | 54 + gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq-2.c | 55 + .../gcc.target/i386/avx512f-vpsrlvq512-1.c | 13 + .../gcc.target/i386/avx512f-vpsrlvq512-2.c | 47 + gcc/testsuite/gcc.target/i386/avx512f-vpsubd-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpsubd-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vpsubq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpsubq-2.c | 55 + .../gcc.target/i386/avx512f-vpternlogd-1.c | 18 + .../gcc.target/i386/avx512f-vpternlogd-2.c | 71 ++ .../gcc.target/i386/avx512f-vpternlogq-1.c | 18 + .../gcc.target/i386/avx512f-vpternlogq-2.c | 73 ++ gcc/testsuite/gcc.target/i386/avx512f-vptestmd-1.c | 16 + gcc/testsuite/gcc.target/i386/avx512f-vptestmd-2.c | 50 + gcc/testsuite/gcc.target/i386/avx512f-vptestmq-1.c | 16 + gcc/testsuite/gcc.target/i386/avx512f-vptestmq-2.c | 52 + .../gcc.target/i386/avx512f-vpunpckhdq-1.c | 18 + .../gcc.target/i386/avx512f-vpunpckhdq-2.c | 59 + .../gcc.target/i386/avx512f-vpunpckhqdq-1.c | 18 + .../gcc.target/i386/avx512f-vpunpckhqdq-2.c | 57 + .../gcc.target/i386/avx512f-vpunpckldq-1.c | 18 + .../gcc.target/i386/avx512f-vpunpckldq-2.c | 59 + .../gcc.target/i386/avx512f-vpunpcklqdq-1.c | 18 + .../gcc.target/i386/avx512f-vpunpcklqdq-2.c | 57 + gcc/testsuite/gcc.target/i386/avx512f-vpxord-1.c | 19 + gcc/testsuite/gcc.target/i386/avx512f-vpxord-2.c | 57 + gcc/testsuite/gcc.target/i386/avx512f-vpxorq-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vpxorq-2.c | 53 + gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-2.c | 54 + gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-1.c | 18 + gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-2.c | 54 + .../gcc.target/i386/avx512f-vrndscalepd-1.c | 35 + .../gcc.target/i386/avx512f-vrndscalepd-2.c | 96 ++ .../gcc.target/i386/avx512f-vrndscaleps-1.c | 35 + .../gcc.target/i386/avx512f-vrndscaleps-2.c | 94 ++ .../gcc.target/i386/avx512f-vrsqrt14pd-1.c | 18 + .../gcc.target/i386/avx512f-vrsqrt14pd-2.c | 54 + .../gcc.target/i386/avx512f-vrsqrt14ps-1.c | 18 + .../gcc.target/i386/avx512f-vrsqrt14ps-2.c | 54 + .../gcc.target/i386/avx512f-vscalefpd-1.c | 24 + .../gcc.target/i386/avx512f-vscalefpd-2.c | 56 + .../gcc.target/i386/avx512f-vscalefps-1.c | 24 + .../gcc.target/i386/avx512f-vscalefps-2.c | 56 + .../gcc.target/i386/avx512f-vshuff32x4-1.c | 17 + .../gcc.target/i386/avx512f-vshuff32x4-2.c | 68 ++ .../gcc.target/i386/avx512f-vshuff64x2-1.c | 17 + .../gcc.target/i386/avx512f-vshuff64x2-2.c | 68 ++ .../gcc.target/i386/avx512f-vshufi32x4-1.c | 17 + .../gcc.target/i386/avx512f-vshufi32x4-2.c | 68 ++ .../gcc.target/i386/avx512f-vshufi64x2-1.c | 17 + .../gcc.target/i386/avx512f-vshufi64x2-2.c | 68 ++ gcc/testsuite/gcc.target/i386/avx512f-vshufpd-1.c | 17 + gcc/testsuite/gcc.target/i386/avx512f-vshufpd-2.c | 61 ++ gcc/testsuite/gcc.target/i386/avx512f-vshufps-1.c | 17 + gcc/testsuite/gcc.target/i386/avx512f-vshufps-2.c | 74 ++ gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-2.c | 54 + gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-2.c | 54 + gcc/testsuite/gcc.target/i386/avx512f-vsubpd-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vsubpd-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vsubps-1.c | 24 + gcc/testsuite/gcc.target/i386/avx512f-vsubps-2.c | 55 + gcc/testsuite/gcc.target/i386/avx512f-vucomisd-1.c | 14 + gcc/testsuite/gcc.target/i386/avx512f-vucomiss-1.c | 14 + .../gcc.target/i386/avx512f-vunpckhpd-1.c | 18 + .../gcc.target/i386/avx512f-vunpckhpd-2.c | 55 + .../gcc.target/i386/avx512f-vunpckhps-1.c | 18 + .../gcc.target/i386/avx512f-vunpckhps-2.c | 57 + .../gcc.target/i386/avx512f-vunpcklpd-1.c | 18 + .../gcc.target/i386/avx512f-vunpcklpd-2.c | 55 + .../gcc.target/i386/avx512f-vunpcklps-1.c | 17 + .../gcc.target/i386/avx512f-vunpcklps-2.c | 57 + gcc/testsuite/gcc.target/i386/avx512f_cond_move.c | 14 + .../gcc.target/i386/avx512f_evex_reg_asm-1.c | 9 + .../gcc.target/i386/avx512f_evex_reg_asm-2.c | 10 + .../gcc.target/i386/avx512pf-vgatherpf0dps-1.c | 15 + .../gcc.target/i386/avx512pf-vgatherpf0qps-1.c | 15 + .../gcc.target/i386/avx512pf-vgatherpf1dps-1.c | 15 + .../gcc.target/i386/avx512pf-vgatherpf1qps-1.c | 15 + .../gcc.target/i386/avx512pf-vscatterpf0dps-1.c | 17 + .../gcc.target/i386/avx512pf-vscatterpf0qps-1.c | 17 + .../gcc.target/i386/avx512pf-vscatterpf1dps-1.c | 17 + .../gcc.target/i386/avx512pf-vscatterpf1qps-1.c | 17 + gcc/testsuite/gcc.target/i386/i386.exp | 40 + gcc/testsuite/gcc.target/i386/m128-check.h | 23 + gcc/testsuite/gcc.target/i386/m512-check.h | 73 ++ gcc/testsuite/gcc.target/i386/sse-12.c | 2 +- gcc/testsuite/gcc.target/i386/sse-13.c | 199 +++- gcc/testsuite/gcc.target/i386/sse-14.c | 400 ++++++- gcc/testsuite/gcc.target/i386/testimm-10.c | 183 ++++ gcc/testsuite/gcc.target/i386/testround-1.c | 444 ++++++++ gcc/testsuite/gcc.target/i386/testround-2.c | 57 + .../gcc.target/x86_64/abi/avx512f/abi-avx512f.exp | 61 ++ gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h | 184 ++++ .../gcc.target/x86_64/abi/avx512f/asm-support.S | 98 ++ .../gcc.target/x86_64/abi/avx512f/avx512f-check.h | 41 + .../x86_64/abi/avx512f/test_m512_returning.c | 32 + .../x86_64/abi/avx512f/test_passing_m512.c | 168 +++ .../x86_64/abi/avx512f/test_passing_structs.c | 73 ++ .../x86_64/abi/avx512f/test_passing_unions.c | 242 +++++ gcc/testsuite/lib/target-supports.exp | 13 + 648 files changed, 27789 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-check.h create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmb2q-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmw2d-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vpconflictd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vpconflictd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vpconflictq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vpconflictq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vplzcntd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vplzcntd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vptestnmd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vptestnmd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vptestnmq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512cd-vptestnmq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-check.h create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-check.h create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-dummy.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-gather-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-gather-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-gather-3.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-gather-4.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-gather-5.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-helper.h create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32scatterd512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32scatterd512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32scatterpd512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32scatterpd512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32scatterps512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32scatterps512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32scatterq512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i32scatterq512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64gatherd512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64gatherd512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64gatherpd512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64gatherpd512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64gatherps512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64gatherps512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64gatherq512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64gatherq512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64scatterd512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64scatterd512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64scatterpd512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64scatterpd512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64scatterps512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64scatterps512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64scatterq512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-i64scatterq512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-inline-asm.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-kandnw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-kandw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-klogic-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-knotw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-kortestw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-kortestw-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-korw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-kxnorw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-kxorw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-mask-type.h create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-os-support.h create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-rounding.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-3.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-4.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-5.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v16si-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v16si-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v16si-3.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v16si-4.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v16si-5.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v8df-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v8df-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v8df-3.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v8df-4.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v8df-5.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v8di-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v8di-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v8di-3.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v8di-4.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-set-v8di-5.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-setzero-pd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-setzero-ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-setzero-si512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vaddpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vaddpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vaddps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vaddps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-valignd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-valignd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-valignq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-valignq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vblendmpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vblendmpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vblendmps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vblendmps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf32x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf32x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf64x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf64x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti32x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti32x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti64x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti64x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcmppd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcmpps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcmpss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcmpss-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcomisd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcomiss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcompresspd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcompresspd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcompressps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcompressps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2pd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2pd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2ps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2dq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2dq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2ps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2udq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2udq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtph2ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtph2ps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2udq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2udq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttps2dq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttps2dq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2ps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vdivpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vdivpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vdivps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vdivps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vec-init.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vec-unpack.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vexpandps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vexpandps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetexppd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetexppd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vinsertf64x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vinsertf64x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vinserti32x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vinserti32x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vinserti64x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vinserti64x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmaxps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmaxps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vminpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vminpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vminps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vminps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovapd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovaps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovddup-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovddup-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovdqu64-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovdqu64-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovntdq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovntdq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovntpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovntpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovntps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovntps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovshdup-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovshdup-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovsldup-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovsldup-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovupd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovupd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovups-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmovups-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmulpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmulpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmulps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmulps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpabsd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpabsd512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpabsq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpabsq512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpaddd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpaddd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpaddq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpaddq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpandd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpandd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpandnd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpandnd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpandnq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpandnq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpandq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpandq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpblendmd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpblendmd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermilpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermilpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermilpdi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermilpdi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermilps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermilps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermilpsi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermilpsi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermpdi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermpdi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmaxud-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmaxud-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmaxuq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmaxuq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpminsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpminsd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpminsq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpminsq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpminud-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpminud-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpminuq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpminuq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsxdq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsxdq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovusdb-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovusdb-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovusdw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovusdw-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovusqb-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovusqb-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovusqd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovusqd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovusqw-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovusqw-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovzxdq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovzxdq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmuldq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmuldq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmulld-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmulld-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmuludq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpmuludq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpord-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpord-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vporq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vporq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprold-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprold-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprolq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprolq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprolvd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprolvd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprolvq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprolvq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprord-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprord-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprorq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprorq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprorvd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprorvd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprorvq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vprorvq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpshufd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpshufd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpslld-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpslld-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpslldi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpslldi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsllq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsllq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsllqi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsllqi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsllvd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsllvd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsllvq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsllvq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsllvq512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsllvq512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrad-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrad-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsradi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsradi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsraq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsraq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsraqi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsraqi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsravd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsravd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsravq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsravq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsravq512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsravq512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrld-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrld-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrldi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrldi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrlq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrlq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrlqi-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrlqi-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrlvd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrlvd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq512-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq512-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsubd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsubd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsubq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpsubq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpternlogd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpternlogd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpternlogq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpternlogq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vptestmd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vptestmd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vptestmq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vptestmq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpunpckhdq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpunpckhdq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpunpckhqdq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpunpckhqdq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpunpckldq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpunpckldq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpunpcklqdq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpunpcklqdq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpxord-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpxord-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpxorq-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vpxorq-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14pd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14pd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vscalefps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vscalefps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshufpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshufpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshufps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vshufps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsubpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsubpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsubps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsubps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vucomisd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vucomiss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vunpckhpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vunpckhpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vunpckhps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vunpckhps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vunpcklpd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vunpcklpd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vunpcklps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vunpcklps-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f_cond_move.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c create mode 100644 gcc/testsuite/gcc.target/i386/m512-check.h create mode 100644 gcc/testsuite/gcc.target/i386/testimm-10.c create mode 100644 gcc/testsuite/gcc.target/i386/testround-1.c create mode 100644 gcc/testsuite/gcc.target/i386/testround-2.c create mode 100644 gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp create mode 100644 gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h create mode 100644 gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S create mode 100644 gcc/testsuite/gcc.target/x86_64/abi/avx512f/avx512f-check.h create mode 100644 gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_m512_returning.c create mode 100644 gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_m512.c create mode 100644 gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_structs.c create mode 100644 gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_unions.c (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 240a964a47e..c76c3c2dc92 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,1151 @@ +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * gcc.target/i386/avx512cd-check.h: New file. + * gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c: Ditto. + * gcc.target/i386/avx512cd-vpbroadcastmb2q-2.c: Ditto. + * gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c: Ditto. + * gcc.target/i386/avx512cd-vpbroadcastmw2d-2.c: Ditto. + * gcc.target/i386/avx512cd-vpconflictd-1.c: Ditto. + * gcc.target/i386/avx512cd-vpconflictd-2.c: Ditto. + * gcc.target/i386/avx512cd-vpconflictq-1.c: Ditto. + * gcc.target/i386/avx512cd-vpconflictq-2.c: Ditto. + * gcc.target/i386/avx512cd-vplzcntd-1.c: Ditto. + * gcc.target/i386/avx512cd-vplzcntd-2.c: Ditto. + * gcc.target/i386/avx512cd-vplzcntq-1.c: Ditto. + * gcc.target/i386/avx512cd-vplzcntq-2.c: Ditto. + * gcc.target/i386/avx512cd-vptestnmd-1.c: Ditto. + * gcc.target/i386/avx512cd-vptestnmd-2.c: Ditto. + * gcc.target/i386/avx512cd-vptestnmq-1.c: Ditto. + * gcc.target/i386/avx512cd-vptestnmq-2.c: Ditto. + * gcc.target/i386/avx512er-vexp2pd-1.c: Ditto. + * gcc.target/i386/avx512er-vexp2pd-2.c: Ditto. + * gcc.target/i386/avx512er-vexp2ps-1.c: Ditto. + * gcc.target/i386/avx512er-vexp2ps-2.c: Ditto. + * gcc.target/i386/avx512er-vrcp28pd-1.c: Ditto. + * gcc.target/i386/avx512er-vrcp28pd-2.c: Ditto. + * gcc.target/i386/avx512er-vrcp28ps-1.c: Ditto. + * gcc.target/i386/avx512er-vrcp28ps-2.c: Ditto. + * gcc.target/i386/avx512er-vrsqrt28pd-1.c: Ditto. + * gcc.target/i386/avx512er-vrsqrt28pd-2.c: Ditto. + * gcc.target/i386/avx512er-vrsqrt28ps-1.c: Ditto. + * gcc.target/i386/avx512er-vrsqrt28ps-2.c: Ditto. + * gcc.target/i386/avx512f-broadcast-gpr-1.c: Ditto. + * gcc.target/i386/avx512f-broadcast-gpr-2.c: Ditto. + * gcc.target/i386/avx512f-ceil-sfix-vec-1.c: Ditto. + * gcc.target/i386/avx512f-ceil-sfix-vec-2.c: Ditto. + * gcc.target/i386/avx512f-dummy.c: Ditto. + * gcc.target/i386/avx512f-floor-sfix-vec-1.c: Ditto. + * gcc.target/i386/avx512f-floor-sfix-vec-2.c: Ditto. + * gcc.target/i386/avx512f-gather-1.c: Ditto. + * gcc.target/i386/avx512f-gather-2.c: Ditto. + * gcc.target/i386/avx512f-gather-3.c: Ditto. + * gcc.target/i386/avx512f-gather-4.c: Ditto. + * gcc.target/i386/avx512f-gather-5.c: Ditto. + * gcc.target/i386/avx512f-i32gatherd512-1.c: Ditto. + * gcc.target/i386/avx512f-i32gatherd512-2.c: Ditto. + * gcc.target/i386/avx512f-i32gatherpd512-1.c: Ditto. + * gcc.target/i386/avx512f-i32gatherpd512-2.c: Ditto. + * gcc.target/i386/avx512f-i32gatherps512-1.c: Ditto. + * gcc.target/i386/avx512f-i32gatherps512-2.c: Ditto. + * gcc.target/i386/avx512f-i32gatherq512-1.c: Ditto. + * gcc.target/i386/avx512f-i32gatherq512-2.c: Ditto. + * gcc.target/i386/avx512f-i32scatterd512-1.c: Ditto. + * gcc.target/i386/avx512f-i32scatterd512-2.c: Ditto. + * gcc.target/i386/avx512f-i32scatterpd512-1.c: Ditto. + * gcc.target/i386/avx512f-i32scatterpd512-2.c: Ditto. + * gcc.target/i386/avx512f-i32scatterps512-1.c: Ditto. + * gcc.target/i386/avx512f-i32scatterps512-2.c: Ditto. + * gcc.target/i386/avx512f-i32scatterq512-1.c: Ditto. + * gcc.target/i386/avx512f-i32scatterq512-2.c: Ditto. + * gcc.target/i386/avx512f-i64gatherd512-1.c: Ditto. + * gcc.target/i386/avx512f-i64gatherd512-2.c: Ditto. + * gcc.target/i386/avx512f-i64gatherpd512-1.c: Ditto. + * gcc.target/i386/avx512f-i64gatherpd512-2.c: Ditto. + * gcc.target/i386/avx512f-i64gatherps512-1.c: Ditto. + * gcc.target/i386/avx512f-i64gatherps512-2.c: Ditto. + * gcc.target/i386/avx512f-i64gatherq512-1.c: Ditto. + * gcc.target/i386/avx512f-i64gatherq512-2.c: Ditto. + * gcc.target/i386/avx512f-i64scatterd512-1.c: Ditto. + * gcc.target/i386/avx512f-i64scatterd512-2.c: Ditto. + * gcc.target/i386/avx512f-i64scatterpd512-1.c: Ditto. + * gcc.target/i386/avx512f-i64scatterpd512-2.c: Ditto. + * gcc.target/i386/avx512f-i64scatterps512-1.c: Ditto. + * gcc.target/i386/avx512f-i64scatterps512-2.c: Ditto. + * gcc.target/i386/avx512f-i64scatterq512-1.c: Ditto. + * gcc.target/i386/avx512f-i64scatterq512-2.c: Ditto. + * gcc.target/i386/avx512f-inline-asm.c: Ditto. + * gcc.target/i386/avx512f-kandnw-1.c: Ditto. + * gcc.target/i386/avx512f-kandw-1.c: Ditto. + * gcc.target/i386/avx512f-klogic-2.c: Ditto. + * gcc.target/i386/avx512f-knotw-1.c: Ditto. + * gcc.target/i386/avx512f-kortestw-1.c: Ditto. + * gcc.target/i386/avx512f-kortestw-2.c: Ditto. + * gcc.target/i386/avx512f-korw-1.c: Ditto. + * gcc.target/i386/avx512f-kunpckbw-1.c: Ditto. + * gcc.target/i386/avx512f-kxnorw-1.c: Ditto. + * gcc.target/i386/avx512f-kxorw-1.c: Ditto. + * gcc.target/i386/avx512f-rounding.c: Ditto. + * gcc.target/i386/avx512f-set-v16sf-1.c: Ditto. + * gcc.target/i386/avx512f-set-v16sf-2.c: Ditto. + * gcc.target/i386/avx512f-set-v16sf-3.c: Ditto. + * gcc.target/i386/avx512f-set-v16sf-4.c: Ditto. + * gcc.target/i386/avx512f-set-v16sf-5.c: Ditto. + * gcc.target/i386/avx512f-set-v16si-1.c: Ditto. + * gcc.target/i386/avx512f-set-v16si-2.c: Ditto. + * gcc.target/i386/avx512f-set-v16si-3.c: Ditto. + * gcc.target/i386/avx512f-set-v16si-4.c: Ditto. + * gcc.target/i386/avx512f-set-v16si-5.c: Ditto. + * gcc.target/i386/avx512f-set-v8df-1.c: Ditto. + * gcc.target/i386/avx512f-set-v8df-2.c: Ditto. + * gcc.target/i386/avx512f-set-v8df-3.c: Ditto. + * gcc.target/i386/avx512f-set-v8df-4.c: Ditto. + * gcc.target/i386/avx512f-set-v8df-5.c: Ditto. + * gcc.target/i386/avx512f-set-v8di-1.c: Ditto. + * gcc.target/i386/avx512f-set-v8di-2.c: Ditto. + * gcc.target/i386/avx512f-set-v8di-3.c: Ditto. + * gcc.target/i386/avx512f-set-v8di-4.c: Ditto. + * gcc.target/i386/avx512f-set-v8di-5.c: Ditto. + * gcc.target/i386/avx512f-setzero-pd-1.c: Ditto. + * gcc.target/i386/avx512f-setzero-ps-1.c: Ditto. + * gcc.target/i386/avx512f-setzero-si512-1.c: Ditto. + * gcc.target/i386/avx512f-vaddpd-1.c: Ditto. + * gcc.target/i386/avx512f-vaddpd-2.c: Ditto. + * gcc.target/i386/avx512f-vaddps-1.c: Ditto. + * gcc.target/i386/avx512f-vaddps-2.c: Ditto. + * gcc.target/i386/avx512f-vaddsd-1.c: Ditto. + * gcc.target/i386/avx512f-vaddsd-2.c: Ditto. + * gcc.target/i386/avx512f-vaddss-1.c: Ditto. + * gcc.target/i386/avx512f-vaddss-2.c: Ditto. + * gcc.target/i386/avx512f-valignd-1.c: Ditto. + * gcc.target/i386/avx512f-valignd-2.c: Ditto. + * gcc.target/i386/avx512f-valignq-1.c: Ditto. + * gcc.target/i386/avx512f-valignq-2.c: Ditto. + * gcc.target/i386/avx512f-vblendmpd-1.c: Ditto. + * gcc.target/i386/avx512f-vblendmpd-2.c: Ditto. + * gcc.target/i386/avx512f-vblendmps-1.c: Ditto. + * gcc.target/i386/avx512f-vblendmps-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastf32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastf32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastf64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastf64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcasti32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcasti32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcasti64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcasti64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastsd-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastsd-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastss-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastss-2.c: Ditto. + * gcc.target/i386/avx512f-vcmppd-1.c: Ditto. + * gcc.target/i386/avx512f-vcmppd-2.c: Ditto. + * gcc.target/i386/avx512f-vcmpps-1.c: Ditto. + * gcc.target/i386/avx512f-vcmpps-2.c: Ditto. + * gcc.target/i386/avx512f-vcmpsd-1.c: Ditto. + * gcc.target/i386/avx512f-vcmpsd-2.c: Ditto. + * gcc.target/i386/avx512f-vcmpss-1.c: Ditto. + * gcc.target/i386/avx512f-vcmpss-2.c: Ditto. + * gcc.target/i386/avx512f-vcomisd-1.c: Ditto. + * gcc.target/i386/avx512f-vcomiss-1.c: Ditto. + * gcc.target/i386/avx512f-vcompresspd-1.c: Ditto. + * gcc.target/i386/avx512f-vcompresspd-2.c: Ditto. + * gcc.target/i386/avx512f-vcompressps-1.c: Ditto. + * gcc.target/i386/avx512f-vcompressps-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtdq2pd-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtdq2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtdq2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtdq2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2dq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2dq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2udq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2udq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtph2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtph2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2dq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2dq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2pd-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2ph-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2ph-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2udq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2udq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2si-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2si64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2ss-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2usi-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2usi-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2usi64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2usi64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsi2ss-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2sd-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2si-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2si64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2usi-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2usi-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2usi64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2usi64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttpd2dq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttpd2dq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttpd2udq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttpd2udq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttps2dq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttps2dq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttps2udq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttps2udq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2si-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2si-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2si64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2si64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2usi-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2usi-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2usi64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2usi64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2si-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2si-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2si64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2si64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2usi-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2usi-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2usi64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2usi64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtudq2pd-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtudq2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtudq2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtudq2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2sd-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2sd-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2sd64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2ss-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2ss-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2ss64-2.c: Ditto. + * gcc.target/i386/avx512f-vdivpd-1.c: Ditto. + * gcc.target/i386/avx512f-vdivpd-2.c: Ditto. + * gcc.target/i386/avx512f-vdivps-1.c: Ditto. + * gcc.target/i386/avx512f-vdivps-2.c: Ditto. + * gcc.target/i386/avx512f-vdivsd-1.c: Ditto. + * gcc.target/i386/avx512f-vdivsd-2.c: Ditto. + * gcc.target/i386/avx512f-vdivss-1.c: Ditto. + * gcc.target/i386/avx512f-vdivss-2.c: Ditto. + * gcc.target/i386/avx512f-vec-init.c: Ditto. + * gcc.target/i386/avx512f-vec-unpack.c: Ditto. + * gcc.target/i386/avx512f-vexpandpd-1.c: Ditto. + * gcc.target/i386/avx512f-vexpandpd-2.c: Ditto. + * gcc.target/i386/avx512f-vexpandps-1.c: Ditto. + * gcc.target/i386/avx512f-vexpandps-2.c: Ditto. + * gcc.target/i386/avx512f-vextractf32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vextractf32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vextractf64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vextractf64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vextracti32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vextracti32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vextracti64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vextracti64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmps-1.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmps-2.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmsd-2.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmss-1.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmss-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXsd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXss-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddsubXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddsubXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddsubXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddsubXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXsd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXss-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubaddXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubaddXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubaddXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubaddXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXsd-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXss-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXsd-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXss-2.c: Ditto. + * gcc.target/i386/avx512f-vgetexppd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexppd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetexpps-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpps-2.c: Ditto. + * gcc.target/i386/avx512f-vgetexpsd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpsd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetexpss-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpss-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantpd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantpd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantps-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantps-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantsd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantsd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantss-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantss-2.c: Ditto. + * gcc.target/i386/avx512f-vinsertf32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vinsertf32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vinsertf64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vinsertf64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vinserti32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vinserti32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vinserti64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vinserti64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vmaxpd-1.c: Ditto. + * gcc.target/i386/avx512f-vmaxpd-2.c: Ditto. + * gcc.target/i386/avx512f-vmaxps-1.c: Ditto. + * gcc.target/i386/avx512f-vmaxps-2.c: Ditto. + * gcc.target/i386/avx512f-vmaxsd-1.c: Ditto. + * gcc.target/i386/avx512f-vmaxsd-2.c: Ditto. + * gcc.target/i386/avx512f-vmaxss-1.c: Ditto. + * gcc.target/i386/avx512f-vmaxss-2.c: Ditto. + * gcc.target/i386/avx512f-vminpd-1.c: Ditto. + * gcc.target/i386/avx512f-vminpd-2.c: Ditto. + * gcc.target/i386/avx512f-vminps-1.c: Ditto. + * gcc.target/i386/avx512f-vminps-2.c: Ditto. + * gcc.target/i386/avx512f-vminsd-1.c: Ditto. + * gcc.target/i386/avx512f-vminsd-2.c: Ditto. + * gcc.target/i386/avx512f-vminss-1.c: Ditto. + * gcc.target/i386/avx512f-vminss-2.c: Ditto. + * gcc.target/i386/avx512f-vmovapd-1.c: Ditto. + * gcc.target/i386/avx512f-vmovapd-2.c: Ditto. + * gcc.target/i386/avx512f-vmovaps-1.c: Ditto. + * gcc.target/i386/avx512f-vmovaps-2.c: Ditto. + * gcc.target/i386/avx512f-vmovddup-1.c: Ditto. + * gcc.target/i386/avx512f-vmovddup-2.c: Ditto. + * gcc.target/i386/avx512f-vmovdqa32-1.c: Ditto. + * gcc.target/i386/avx512f-vmovdqa32-2.c: Ditto. + * gcc.target/i386/avx512f-vmovdqa64-1.c: Ditto. + * gcc.target/i386/avx512f-vmovdqa64-2.c: Ditto. + * gcc.target/i386/avx512f-vmovdqu32-1.c: Ditto. + * gcc.target/i386/avx512f-vmovdqu32-2.c: Ditto. + * gcc.target/i386/avx512f-vmovdqu64-1.c: Ditto. + * gcc.target/i386/avx512f-vmovdqu64-2.c: Ditto. + * gcc.target/i386/avx512f-vmovntdq-1.c: Ditto. + * gcc.target/i386/avx512f-vmovntdq-2.c: Ditto. + * gcc.target/i386/avx512f-vmovntpd-1.c: Ditto. + * gcc.target/i386/avx512f-vmovntpd-2.c: Ditto. + * gcc.target/i386/avx512f-vmovntps-1.c: Ditto. + * gcc.target/i386/avx512f-vmovntps-2.c: Ditto. + * gcc.target/i386/avx512f-vmovsd-1.c: Ditto. + * gcc.target/i386/avx512f-vmovsd-2.c: Ditto. + * gcc.target/i386/avx512f-vmovshdup-1.c: Ditto. + * gcc.target/i386/avx512f-vmovshdup-2.c: Ditto. + * gcc.target/i386/avx512f-vmovsldup-1.c: Ditto. + * gcc.target/i386/avx512f-vmovsldup-2.c: Ditto. + * gcc.target/i386/avx512f-vmovss-1.c: Ditto. + * gcc.target/i386/avx512f-vmovss-2.c: Ditto. + * gcc.target/i386/avx512f-vmovupd-1.c: Ditto. + * gcc.target/i386/avx512f-vmovupd-2.c: Ditto. + * gcc.target/i386/avx512f-vmovups-1.c: Ditto. + * gcc.target/i386/avx512f-vmovups-2.c: Ditto. + * gcc.target/i386/avx512f-vmulpd-1.c: Ditto. + * gcc.target/i386/avx512f-vmulpd-2.c: Ditto. + * gcc.target/i386/avx512f-vmulps-1.c: Ditto. + * gcc.target/i386/avx512f-vmulps-2.c: Ditto. + * gcc.target/i386/avx512f-vmulsd-1.c: Ditto. + * gcc.target/i386/avx512f-vmulsd-2.c: Ditto. + * gcc.target/i386/avx512f-vmulss-1.c: Ditto. + * gcc.target/i386/avx512f-vmulss-2.c: Ditto. + * gcc.target/i386/avx512f-vpabsd-2.c: Ditto. + * gcc.target/i386/avx512f-vpabsd512-1.c: Ditto. + * gcc.target/i386/avx512f-vpabsq-2.c: Ditto. + * gcc.target/i386/avx512f-vpabsq512-1.c: Ditto. + * gcc.target/i386/avx512f-vpaddd-1.c: Ditto. + * gcc.target/i386/avx512f-vpaddd-2.c: Ditto. + * gcc.target/i386/avx512f-vpaddq-1.c: Ditto. + * gcc.target/i386/avx512f-vpaddq-2.c: Ditto. + * gcc.target/i386/avx512f-vpandd-1.c: Ditto. + * gcc.target/i386/avx512f-vpandd-2.c: Ditto. + * gcc.target/i386/avx512f-vpandnd-1.c: Ditto. + * gcc.target/i386/avx512f-vpandnd-2.c: Ditto. + * gcc.target/i386/avx512f-vpandnq-1.c: Ditto. + * gcc.target/i386/avx512f-vpandnq-2.c: Ditto. + * gcc.target/i386/avx512f-vpandq-1.c: Ditto. + * gcc.target/i386/avx512f-vpandq-2.c: Ditto. + * gcc.target/i386/avx512f-vpblendmd-1.c: Ditto. + * gcc.target/i386/avx512f-vpblendmd-2.c: Ditto. + * gcc.target/i386/avx512f-vpblendmq-1.c: Ditto. + * gcc.target/i386/avx512f-vpblendmq-2.c: Ditto. + * gcc.target/i386/avx512f-vpbroadcastd-1.c: Ditto. + * gcc.target/i386/avx512f-vpbroadcastd-2.c: Ditto. + * gcc.target/i386/avx512f-vpbroadcastq-1.c: Ditto. + * gcc.target/i386/avx512f-vpbroadcastq-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpd-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpd-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpeqd-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpeqd-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpeqq-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpeqq-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpgtd-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpgtd-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpgtq-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpgtq-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpq-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpq-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpud-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpud-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpuq-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpuq-2.c: Ditto. + * gcc.target/i386/avx512f-vpcompressd-1.c: Ditto. + * gcc.target/i386/avx512f-vpcompressd-2.c: Ditto. + * gcc.target/i386/avx512f-vpcompressq-1.c: Ditto. + * gcc.target/i386/avx512f-vpcompressq-2.c: Ditto. + * gcc.target/i386/avx512f-vpermd-1.c: Ditto. + * gcc.target/i386/avx512f-vpermd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermi2d-1.c: Ditto. + * gcc.target/i386/avx512f-vpermi2d-2.c: Ditto. + * gcc.target/i386/avx512f-vpermi2pd-1.c: Ditto. + * gcc.target/i386/avx512f-vpermi2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermi2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vpermi2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vpermi2q-1.c: Ditto. + * gcc.target/i386/avx512f-vpermi2q-2.c: Ditto. + * gcc.target/i386/avx512f-vpermilpd-1.c: Ditto. + * gcc.target/i386/avx512f-vpermilpd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermilpdi-1.c: Ditto. + * gcc.target/i386/avx512f-vpermilpdi-2.c: Ditto. + * gcc.target/i386/avx512f-vpermilps-1.c: Ditto. + * gcc.target/i386/avx512f-vpermilps-2.c: Ditto. + * gcc.target/i386/avx512f-vpermilpsi-1.c: Ditto. + * gcc.target/i386/avx512f-vpermilpsi-2.c: Ditto. + * gcc.target/i386/avx512f-vpermpd-1.c: Ditto. + * gcc.target/i386/avx512f-vpermpd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermpdi-1.c: Ditto. + * gcc.target/i386/avx512f-vpermpdi-2.c: Ditto. + * gcc.target/i386/avx512f-vpermps-1.c: Ditto. + * gcc.target/i386/avx512f-vpermps-2.c: Ditto. + * gcc.target/i386/avx512f-vpermq-imm-1.c: Ditto. + * gcc.target/i386/avx512f-vpermq-imm-2.c: Ditto. + * gcc.target/i386/avx512f-vpermq-var-1.c: Ditto. + * gcc.target/i386/avx512f-vpermq-var-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2d-1.c: Ditto. + * gcc.target/i386/avx512f-vpermt2d-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2pd-1.c: Ditto. + * gcc.target/i386/avx512f-vpermt2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vpermt2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2q-1.c: Ditto. + * gcc.target/i386/avx512f-vpermt2q-2.c: Ditto. + * gcc.target/i386/avx512f-vpexpandd-1.c: Ditto. + * gcc.target/i386/avx512f-vpexpandd-2.c: Ditto. + * gcc.target/i386/avx512f-vpexpandq-1.c: Ditto. + * gcc.target/i386/avx512f-vpexpandq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmaxsd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmaxsd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmaxsq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmaxsq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmaxud-1.c: Ditto. + * gcc.target/i386/avx512f-vpmaxud-2.c: Ditto. + * gcc.target/i386/avx512f-vpmaxuq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmaxuq-2.c: Ditto. + * gcc.target/i386/avx512f-vpminsd-1.c: Ditto. + * gcc.target/i386/avx512f-vpminsd-2.c: Ditto. + * gcc.target/i386/avx512f-vpminsq-1.c: Ditto. + * gcc.target/i386/avx512f-vpminsq-2.c: Ditto. + * gcc.target/i386/avx512f-vpminud-1.c: Ditto. + * gcc.target/i386/avx512f-vpminud-2.c: Ditto. + * gcc.target/i386/avx512f-vpminuq-1.c: Ditto. + * gcc.target/i386/avx512f-vpminuq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovdb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovdb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovdw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovdw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovqb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovqb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovqd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovqd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovqw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovqw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsdb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsdb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsdw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsdw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxbd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxbd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxbq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxbq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxdq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxdq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxwd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxwd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxwq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxwq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovusdb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovusdb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovusdw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovusdw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxbd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxbd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxbq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxbq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxdq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxdq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxwd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxwd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxwq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxwq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmuldq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmuldq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmulld-1.c: Ditto. + * gcc.target/i386/avx512f-vpmulld-2.c: Ditto. + * gcc.target/i386/avx512f-vpmuludq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmuludq-2.c: Ditto. + * gcc.target/i386/avx512f-vpord-1.c: Ditto. + * gcc.target/i386/avx512f-vpord-2.c: Ditto. + * gcc.target/i386/avx512f-vporq-1.c: Ditto. + * gcc.target/i386/avx512f-vporq-2.c: Ditto. + * gcc.target/i386/avx512f-vprold-1.c: Ditto. + * gcc.target/i386/avx512f-vprold-2.c: Ditto. + * gcc.target/i386/avx512f-vprolq-1.c: Ditto. + * gcc.target/i386/avx512f-vprolq-2.c: Ditto. + * gcc.target/i386/avx512f-vprolvd-1.c: Ditto. + * gcc.target/i386/avx512f-vprolvd-2.c: Ditto. + * gcc.target/i386/avx512f-vprolvq-1.c: Ditto. + * gcc.target/i386/avx512f-vprolvq-2.c: Ditto. + * gcc.target/i386/avx512f-vprord-1.c: Ditto. + * gcc.target/i386/avx512f-vprord-2.c: Ditto. + * gcc.target/i386/avx512f-vprorq-1.c: Ditto. + * gcc.target/i386/avx512f-vprorq-2.c: Ditto. + * gcc.target/i386/avx512f-vprorvd-1.c: Ditto. + * gcc.target/i386/avx512f-vprorvd-2.c: Ditto. + * gcc.target/i386/avx512f-vprorvq-1.c: Ditto. + * gcc.target/i386/avx512f-vprorvq-2.c: Ditto. + * gcc.target/i386/avx512f-vpshufd-1.c: Ditto. + * gcc.target/i386/avx512f-vpshufd-2.c: Ditto. + * gcc.target/i386/avx512f-vpslld-1.c: Ditto. + * gcc.target/i386/avx512f-vpslld-2.c: Ditto. + * gcc.target/i386/avx512f-vpslldi-1.c: Ditto. + * gcc.target/i386/avx512f-vpslldi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsllq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsllq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsllqi-1.c: Ditto. + * gcc.target/i386/avx512f-vpsllqi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsllvd-1.c: Ditto. + * gcc.target/i386/avx512f-vpsllvd-2.c: Ditto. + * gcc.target/i386/avx512f-vpsllvq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsllvq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsllvq512-1.c: Ditto. + * gcc.target/i386/avx512f-vpsllvq512-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrad-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrad-2.c: Ditto. + * gcc.target/i386/avx512f-vpsradi-1.c: Ditto. + * gcc.target/i386/avx512f-vpsradi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsraq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsraq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsraqi-1.c: Ditto. + * gcc.target/i386/avx512f-vpsraqi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsravd-1.c: Ditto. + * gcc.target/i386/avx512f-vpsravd-2.c: Ditto. + * gcc.target/i386/avx512f-vpsravq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsravq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsravq512-1.c: Ditto. + * gcc.target/i386/avx512f-vpsravq512-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrld-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrld-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrldi-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrldi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrlq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrlq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrlqi-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrlqi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvd-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvd-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvq512-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvq512-2.c: Ditto. + * gcc.target/i386/avx512f-vpsubd-1.c: Ditto. + * gcc.target/i386/avx512f-vpsubd-2.c: Ditto. + * gcc.target/i386/avx512f-vpsubq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsubq-2.c: Ditto. + * gcc.target/i386/avx512f-vpternlogd-1.c: Ditto. + * gcc.target/i386/avx512f-vpternlogd-2.c: Ditto. + * gcc.target/i386/avx512f-vpternlogq-1.c: Ditto. + * gcc.target/i386/avx512f-vpternlogq-2.c: Ditto. + * gcc.target/i386/avx512f-vptestmd-1.c: Ditto. + * gcc.target/i386/avx512f-vptestmd-2.c: Ditto. + * gcc.target/i386/avx512f-vptestmq-1.c: Ditto. + * gcc.target/i386/avx512f-vptestmq-2.c: Ditto. + * gcc.target/i386/avx512f-vpunpckhdq-1.c: Ditto. + * gcc.target/i386/avx512f-vpunpckhdq-2.c: Ditto. + * gcc.target/i386/avx512f-vpunpckhqdq-1.c: Ditto. + * gcc.target/i386/avx512f-vpunpckhqdq-2.c: Ditto. + * gcc.target/i386/avx512f-vpunpckldq-1.c: Ditto. + * gcc.target/i386/avx512f-vpunpckldq-2.c: Ditto. + * gcc.target/i386/avx512f-vpunpcklqdq-1.c: Ditto. + * gcc.target/i386/avx512f-vpunpcklqdq-2.c: Ditto. + * gcc.target/i386/avx512f-vpxord-1.c: Ditto. + * gcc.target/i386/avx512f-vpxord-2.c: Ditto. + * gcc.target/i386/avx512f-vpxorq-1.c: Ditto. + * gcc.target/i386/avx512f-vpxorq-2.c: Ditto. + * gcc.target/i386/avx512f-vrcp14pd-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14pd-2.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ps-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ps-2.c: Ditto. + * gcc.target/i386/avx512f-vrcp14sd-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14sd-2.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ss-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ss-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscalepd-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscalepd-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscaleps-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscaleps-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscalesd-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscalesd-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscaless-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscaless-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14pd-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14pd-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ps-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ps-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14sd-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14sd-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ss-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ss-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefpd-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefpd-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefps-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefps-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefss-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefss-2.c: Ditto. + * gcc.target/i386/avx512f-vshuff32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vshuff32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vshuff64x2-1.c: Ditto. + * gcc.target/i386/avx512f-vshuff64x2-2.c: Ditto. + * gcc.target/i386/avx512f-vshufi32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vshufi32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vshufi64x2-1.c: Ditto. + * gcc.target/i386/avx512f-vshufi64x2-2.c: Ditto. + * gcc.target/i386/avx512f-vshufpd-1.c: Ditto. + * gcc.target/i386/avx512f-vshufpd-2.c: Ditto. + * gcc.target/i386/avx512f-vshufps-1.c: Ditto. + * gcc.target/i386/avx512f-vshufps-2.c: Ditto. + * gcc.target/i386/avx512f-vsqrtpd-1.c: Ditto. + * gcc.target/i386/avx512f-vsqrtpd-2.c: Ditto. + * gcc.target/i386/avx512f-vsqrtps-1.c: Ditto. + * gcc.target/i386/avx512f-vsqrtps-2.c: Ditto. + * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto. + * gcc.target/i386/avx512f-vsqrtsd-2.c: Ditto. + * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto. + * gcc.target/i386/avx512f-vsqrtss-2.c: Ditto. + * gcc.target/i386/avx512f-vsubpd-1.c: Ditto. + * gcc.target/i386/avx512f-vsubpd-2.c: Ditto. + * gcc.target/i386/avx512f-vsubps-1.c: Ditto. + * gcc.target/i386/avx512f-vsubps-2.c: Ditto. + * gcc.target/i386/avx512f-vsubsd-1.c: Ditto. + * gcc.target/i386/avx512f-vsubsd-2.c: Ditto. + * gcc.target/i386/avx512f-vsubss-1.c: Ditto. + * gcc.target/i386/avx512f-vsubss-2.c: Ditto. + * gcc.target/i386/avx512f-vucomisd-1.c: Ditto. + * gcc.target/i386/avx512f-vucomiss-1.c: Ditto. + * gcc.target/i386/avx512f-vunpckhpd-1.c: Ditto. + * gcc.target/i386/avx512f-vunpckhpd-2.c: Ditto. + * gcc.target/i386/avx512f-vunpckhps-1.c: Ditto. + * gcc.target/i386/avx512f-vunpckhps-2.c: Ditto. + * gcc.target/i386/avx512f-vunpcklpd-1.c: Ditto. + * gcc.target/i386/avx512f-vunpcklpd-2.c: Ditto. + * gcc.target/i386/avx512f-vunpcklps-1.c: Ditto. + * gcc.target/i386/avx512f-vunpcklps-2.c: Ditto. + * gcc.target/i386/avx512f_cond_move.c: Ditto. + * gcc.target/i386/avx512f_evex_reg_asm-1.c: Ditto. + * gcc.target/i386/avx512f_evex_reg_asm-2.c: Ditto. + * gcc.target/i386/avx512pf-vgatherpf0dps-1.c: Ditto. + * gcc.target/i386/avx512pf-vgatherpf0qps-1.c: Ditto. + * gcc.target/i386/avx512pf-vgatherpf1dps-1.c: Ditto. + * gcc.target/i386/avx512pf-vgatherpf1qps-1.c: Ditto. + * gcc.target/i386/avx512pf-vscatterpf0dps-1.c: Ditto. + * gcc.target/i386/avx512pf-vscatterpf0qps-1.c: Ditto. + * gcc.target/i386/avx512pf-vscatterpf1dps-1.c: Ditto. + * gcc.target/i386/avx512pf-vscatterpf1qps-1.c: Ditto. + * gcc.target/i386/sse-12.c: Updated options. + * gcc.target/i386/sse-13.c: Updated options, added defines for + __builtin_ia32_addpd512_mask, __builtin_ia32_addps512_mask, + __builtin_ia32_addsd_mask, __builtin_ia32_addss_mask, + __builtin_ia32_alignd512_mask, __builtin_ia32_alignq512_mask, + __builtin_ia32_cmpd512_mask, __builtin_ia32_cmppd512_mask, + __builtin_ia32_cmpps512_mask, __builtin_ia32_cmpq512_mask, + __builtin_ia32_cmpsd_mask, __builtin_ia32_cmpss_mask, + __builtin_ia32_cvtdq2ps512_mask, __builtin_ia32_cvtpd2dq512_mask, + __builtin_ia32_cvtpd2ps512_mask, __builtin_ia32_cvtpd2udq512_mask, + __builtin_ia32_cvtps2dq512_mask, __builtin_ia32_cvtps2pd512_mask, + __builtin_ia32_cvtps2udq512_mask, __builtin_ia32_cvtsd2ss_mask, + __builtin_ia32_cvtsi2sd64, __builtin_ia32_cvtsi2ss32, + __builtin_ia32_cvtsi2ss64, __builtin_ia32_cvtss2sd_mask, + __builtin_ia32_cvttpd2dq512_mask, __builtin_ia32_cvttpd2udq512_mask, + __builtin_ia32_cvttps2dq512_mask, __builtin_ia32_cvttps2udq512_mask, + __builtin_ia32_cvtudq2ps512_mask, __builtin_ia32_cvtusi2sd64, + __builtin_ia32_cvtusi2ss32, __builtin_ia32_cvtusi2ss64, + __builtin_ia32_divpd512_mask, __builtin_ia32_divps512_mask, + __builtin_ia32_divsd_mask, __builtin_ia32_divss_mask, + __builtin_ia32_extractf32x4_mask, __builtin_ia32_extractf64x4_mask, + __builtin_ia32_extracti32x4_mask, __builtin_ia32_extracti64x4_mask, + __builtin_ia32_fixupimmpd512_mask, __builtin_ia32_fixupimmpd512_maskz, + __builtin_ia32_fixupimmps512_mask, __builtin_ia32_fixupimmps512_maskz, + __builtin_ia32_fixupimmsd_mask, __builtin_ia32_fixupimmsd_maskz, + __builtin_ia32_fixupimmss_mask, __builtin_ia32_fixupimmss_maskz, + __builtin_ia32_gatherdiv8df, __builtin_ia32_gatherdiv8di, + __builtin_ia32_gatherdiv16sf, __builtin_ia32_gatherdiv16si, + __builtin_ia32_gathersiv16sf, __builtin_ia32_gathersiv16si, + __builtin_ia32_gathersiv8df, __builtin_ia32_gathersiv8di, + __builtin_ia32_getexppd512_mask, __builtin_ia32_getexpps512_mask, + __builtin_ia32_getexpsd128_mask, __builtin_ia32_getexpss128_mask, + __builtin_ia32_getmantpd512_mask, __builtin_ia32_getmantps512_mask, + __builtin_ia32_getmantsd_mask, __builtin_ia32_getmantss_mask, + __builtin_ia32_insertf32x4_mask, __builtin_ia32_insertf64x4_mask, + __builtin_ia32_inserti32x4_mask, __builtin_ia32_inserti64x4_mask, + __builtin_ia32_maxpd512_mask, __builtin_ia32_maxps512_mask, + __builtin_ia32_maxsd_mask, __builtin_ia32_maxss_mask, + __builtin_ia32_minpd512_mask, __builtin_ia32_minps512_mask, + __builtin_ia32_minsd_mask, __builtin_ia32_minss_mask, + __builtin_ia32_mulpd512_mask, __builtin_ia32_mulps512_mask, + __builtin_ia32_mulsd_mask, __builtin_ia32_mulss_mask, + __builtin_ia32_permdf512_mask, __builtin_ia32_permdi512_mask, + __builtin_ia32_prold512_mask, __builtin_ia32_prolq512_mask, + __builtin_ia32_prord512_mask, __builtin_ia32_prorq512_mask, + __builtin_ia32_pshufd512_mask, __builtin_ia32_pslldi512_mask, + __builtin_ia32_psllqi512_mask, __builtin_ia32_psradi512_mask, + __builtin_ia32_psraqi512_mask, __builtin_ia32_psrldi512_mask, + __builtin_ia32_psrlqi512_mask, __builtin_ia32_pternlogd512_mask, + __builtin_ia32_pternlogd512_maskz, __builtin_ia32_pternlogq512_mask, + __builtin_ia32_pternlogq512_maskz, __builtin_ia32_rndscalepd_mask, + __builtin_ia32_rndscaleps_mask, __builtin_ia32_rndscalesd_mask, + __builtin_ia32_rndscaless_mask, __builtin_ia32_scalefpd512_mask, + __builtin_ia32_scalefps512_mask, __builtin_ia32_scalefsd_mask, + __builtin_ia32_scalefss_mask, __builtin_ia32_scatterdiv8df, + __builtin_ia32_scatterdiv8di, __builtin_ia32_scatterdiv16sf, + __builtin_ia32_scatterdiv16si, __builtin_ia32_scattersiv16sf, + __builtin_ia32_scattersiv16si, __builtin_ia32_scattersiv8df, + __builtin_ia32_scattersiv8di, __builtin_ia32_shuf_f32x4_mask, + __builtin_ia32_shuf_f64x2_mask, __builtin_ia32_shuf_i32x4_mask, + __builtin_ia32_shuf_i64x2_mask, __builtin_ia32_shufpd512_mask, + __builtin_ia32_shufps512_mask, __builtin_ia32_sqrtpd512_mask, + __builtin_ia32_sqrtps512_mask, __builtin_ia32_sqrtsd_mask, + __builtin_ia32_sqrtss_mask, __builtin_ia32_subpd512_mask, + __builtin_ia32_subps512_mask, __builtin_ia32_subsd_mask, + __builtin_ia32_subss_mask, __builtin_ia32_ucmpd512_mask, + __builtin_ia32_ucmpq512_mask, __builtin_ia32_vcomisd, + __builtin_ia32_vcomiss, __builtin_ia32_vcvtph2ps512_mask, + __builtin_ia32_vcvtps2ph512_mask, __builtin_ia32_vcvtsd2si32, + __builtin_ia32_vcvtsd2si64, __builtin_ia32_vcvtsd2usi32, + __builtin_ia32_vcvtsd2usi64, __builtin_ia32_vcvtss2si32, + __builtin_ia32_vcvtss2si64, __builtin_ia32_vcvtss2usi32, + __builtin_ia32_vcvtss2usi64, __builtin_ia32_vcvttsd2si32, + __builtin_ia32_vcvttsd2si64, __builtin_ia32_vcvttsd2usi32, + __builtin_ia32_vcvttsd2usi64, __builtin_ia32_vcvttss2si32, + __builtin_ia32_vcvttss2si64, __builtin_ia32_vcvttss2usi32, + __builtin_ia32_vcvttss2usi64, __builtin_ia32_vfmaddpd512_mask, + __builtin_ia32_vfmaddpd512_mask3, __builtin_ia32_vfmaddpd512_maskz, + __builtin_ia32_vfmaddps512_mask, __builtin_ia32_vfmaddps512_mask3, + __builtin_ia32_vfmaddps512_maskz, __builtin_ia32_vfmaddsd3_mask, + __builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz, + __builtin_ia32_vfmaddss3_mask, __builtin_ia32_vfmaddss3_mask3, + __builtin_ia32_vfmaddss3_maskz, __builtin_ia32_vfmaddsubpd512_mask, + __builtin_ia32_vfmaddsubpd512_mask3, + __builtin_ia32_vfmaddsubpd512_maskz, + __builtin_ia32_vfmaddsubps512_mask, + __builtin_ia32_vfmaddsubps512_mask3, + __builtin_ia32_vfmaddsubps512_maskz, + __builtin_ia32_vfmsubaddpd512_mask3, + __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, + __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, + __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, + __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, + __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, + __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_vpermilpd512_mask, + __builtin_ia32_vpermilps512_mask, __builtin_ia32_exp2ps_mask, + __builtin_ia32_exp2pd_mask, __builtin_ia32_exp2ps_mask, + __builtin_ia32_exp2pd_mask, __builtin_ia32_rsqrt28ps_mask, + __builtin_ia32_rsqrt28pd_mask, __builtin_ia32_gatherpfdps, + __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, + __builtin_ia32_scatterpfqps, __builtin_ia32_addpd512_mask, + __builtin_ia32_addps512_mask, __builtin_ia32_addsd_mask, + __builtin_ia32_addss_mask, __builtin_ia32_alignd512_mask, + __builtin_ia32_alignq512_mask, __builtin_ia32_cmpd512_mask, + __builtin_ia32_cmppd512_mask, __builtin_ia32_cmpps512_mask, + __builtin_ia32_cmpq512_mask, __builtin_ia32_cmpsd_mask, + __builtin_ia32_cmpss_mask, __builtin_ia32_cvtdq2ps512_mask, + __builtin_ia32_cvtpd2dq512_mask, __builtin_ia32_cvtpd2ps512_mask, + __builtin_ia32_cvtpd2udq512_mask, __builtin_ia32_cvtps2dq512_mask, + __builtin_ia32_cvtps2pd512_mask, __builtin_ia32_cvtps2udq512_mask, + __builtin_ia32_cvtsd2ss_mask, __builtin_ia32_cvtsi2sd64, + __builtin_ia32_cvtsi2ss32, __builtin_ia32_cvtsi2ss64, + __builtin_ia32_cvtss2sd_mask, __builtin_ia32_cvttpd2dq512_mask, + __builtin_ia32_cvttpd2udq512_mask, __builtin_ia32_cvttps2dq512_mask, + __builtin_ia32_cvttps2udq512_mask, __builtin_ia32_cvtudq2ps512_mask, + __builtin_ia32_cvtusi2sd64, __builtin_ia32_cvtusi2ss32, + __builtin_ia32_cvtusi2ss64, __builtin_ia32_divpd512_mask, + __builtin_ia32_divps512_mask, __builtin_ia32_divsd_mask, + __builtin_ia32_divss_mask, __builtin_ia32_extractf32x4_mask, + __builtin_ia32_extractf64x4_mask, __builtin_ia32_extracti32x4_mask, + __builtin_ia32_extracti64x4_mask, __builtin_ia32_fixupimmpd512_mask, + __builtin_ia32_fixupimmpd512_maskz, __builtin_ia32_fixupimmps512_mask, + __builtin_ia32_fixupimmps512_maskz, __builtin_ia32_fixupimmsd_mask, + __builtin_ia32_fixupimmsd_maskz, __builtin_ia32_fixupimmss_mask, + __builtin_ia32_fixupimmss_maskz, __builtin_ia32_gatherdiv8df, + __builtin_ia32_gatherdiv8di, __builtin_ia32_gatherdiv16sf, + __builtin_ia32_gatherdiv16si, __builtin_ia32_gathersiv16sf, + __builtin_ia32_gathersiv16si, __builtin_ia32_gathersiv8df, + __builtin_ia32_gathersiv8di, __builtin_ia32_getexppd512_mask, + __builtin_ia32_getexpps512_mask, __builtin_ia32_getexpsd128_mask, + __builtin_ia32_getexpss128_mask, __builtin_ia32_getmantpd512_mask, + __builtin_ia32_getmantps512_mask, __builtin_ia32_getmantsd_mask, + __builtin_ia32_getmantss_mask, __builtin_ia32_insertf32x4_mask, + __builtin_ia32_insertf64x4_mask, __builtin_ia32_inserti32x4_mask, + __builtin_ia32_inserti64x4_mask, __builtin_ia32_maxpd512_mask, + __builtin_ia32_maxps512_mask, __builtin_ia32_maxsd_mask, + __builtin_ia32_maxss_mask, __builtin_ia32_minpd512_mask, + __builtin_ia32_minps512_mask, __builtin_ia32_minsd_mask, + __builtin_ia32_minss_mask, __builtin_ia32_mulpd512_mask, + __builtin_ia32_mulps512_mask, __builtin_ia32_mulsd_mask, + __builtin_ia32_mulss_mask, __builtin_ia32_permdf512_mask, + __builtin_ia32_permdi512_mask, __builtin_ia32_prold512_mask, + __builtin_ia32_prolq512_mask, __builtin_ia32_prord512_mask, + __builtin_ia32_prorq512_mask, __builtin_ia32_pshufd512_mask, + __builtin_ia32_pslldi512_mask, __builtin_ia32_psllqi512_mask, + __builtin_ia32_psradi512_mask, __builtin_ia32_psraqi512_mask, + __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlqi512_mask, + __builtin_ia32_pternlogd512_mask, __builtin_ia32_pternlogd512_maskz, + __builtin_ia32_pternlogq512_mask, __builtin_ia32_pternlogq512_maskz, + __builtin_ia32_rndscalepd_mask, __builtin_ia32_rndscaleps_mask, + __builtin_ia32_rndscalesd_mask, __builtin_ia32_rndscaless_mask, + __builtin_ia32_scalefpd512_mask, __builtin_ia32_scalefps512_mask, + __builtin_ia32_scalefsd_mask, __builtin_ia32_scalefss_mask, + __builtin_ia32_scatterdiv8df, __builtin_ia32_scatterdiv8di, + __builtin_ia32_scatterdiv16sf, __builtin_ia32_scatterdiv16si, + __builtin_ia32_scattersiv16sf, __builtin_ia32_scattersiv16si, + __builtin_ia32_scattersiv8df, __builtin_ia32_scattersiv8di, + __builtin_ia32_shuf_f32x4_mask, __builtin_ia32_shuf_f64x2_mask, + __builtin_ia32_shuf_i32x4_mask, __builtin_ia32_shuf_i64x2_mask, + __builtin_ia32_shufpd512_mask, __builtin_ia32_shufps512_mask, + __builtin_ia32_sqrtpd512_mask, __builtin_ia32_sqrtps512_mask, + __builtin_ia32_sqrtsd_mask, __builtin_ia32_sqrtss_mask, + __builtin_ia32_subpd512_mask, __builtin_ia32_subps512_mask, + __builtin_ia32_subsd_mask, __builtin_ia32_subss_mask, + __builtin_ia32_ucmpd512_mask, __builtin_ia32_ucmpq512_mask, + __builtin_ia32_vcomisd, __builtin_ia32_vcomiss, + __builtin_ia32_vcvtph2ps512_mask, __builtin_ia32_vcvtps2ph512_mask, + __builtin_ia32_vcvtsd2si32, __builtin_ia32_vcvtsd2si64, + __builtin_ia32_vcvtsd2usi32, __builtin_ia32_vcvtsd2usi64, + __builtin_ia32_vcvtss2si32, __builtin_ia32_vcvtss2si64, + __builtin_ia32_vcvtss2usi32, __builtin_ia32_vcvtss2usi64, + __builtin_ia32_vcvttsd2si32, __builtin_ia32_vcvttsd2si64, + __builtin_ia32_vcvttsd2usi32, __builtin_ia32_vcvttsd2usi64, + __builtin_ia32_vcvttss2si32, __builtin_ia32_vcvttss2si64, + __builtin_ia32_vcvttss2usi32, __builtin_ia32_vcvttss2usi64, + __builtin_ia32_vfmaddpd512_mask, __builtin_ia32_vfmaddpd512_mask3, + __builtin_ia32_vfmaddpd512_maskz, __builtin_ia32_vfmaddps512_mask, + __builtin_ia32_vfmaddps512_mask3, __builtin_ia32_vfmaddps512_maskz, + __builtin_ia32_vfmaddsd3_mask, __builtin_ia32_vfmaddsd3_mask3, + __builtin_ia32_vfmaddsd3_maskz, __builtin_ia32_vfmaddss3_mask, + __builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz, + __builtin_ia32_vfmaddsubpd512_mask, + __builtin_ia32_vfmaddsubpd512_mask3, + __builtin_ia32_vfmaddsubpd512_maskz, + __builtin_ia32_vfmaddsubps512_mask, + __builtin_ia32_vfmaddsubps512_mask3, + __builtin_ia32_vfmaddsubps512_maskz, + __builtin_ia32_vfmsubaddpd512_mask3, + __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, + __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, + __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, + __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, + __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, + __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_vpermilpd512_mask, + __builtin_ia32_vpermilps512_mask, __builtin_ia32_gatherpfdps, + __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, + __builtin_ia32_scatterpfqps, __builtin_ia32_exp2pd_mask, + __builtin_ia32_exp2ps_mask, __builtin_ia32_rcp28pd_mask, + __builtin_ia32_rcp28ps_mask, __builtin_ia32_rsqrt28pd_mask, + __builtin_ia32_rsqrt28ps_mask. + * gcc.target/i386/sse-14.c (test_1y): New. + (test_2y): Ditto. + (test_2vx): Ditto. + (test_3x): Ditto. + (test_3v): Ditto. + (test_3vx): Ditto. + (test_4x): Ditto. + (test_4y): Ditto. + (test_4v): Ditto. + (pragma GCC target): Add avx512f, avx512er, avx512cd, avx512pf. + (tests): Add _mm512_cvt_roundepi32_ps, _mm512_cvt_roundepu32_ps, + _mm512_cvt_roundpd_epi32, _mm512_cvt_roundpd_epu32, + _mm512_cvt_roundpd_ps, _mm512_cvt_roundph_ps, + _mm512_cvt_roundps_epi32, _mm512_cvt_roundps_epu32, + _mm512_cvt_roundps_pd, _mm512_cvtps_ph, _mm512_cvtt_roundpd_epi32, + _mm512_cvtt_roundpd_epu32, _mm512_cvtt_roundps_epi32, + _mm512_cvtt_roundps_epu32, _mm512_extractf32x4_ps, + _mm512_extractf64x4_pd, _mm512_extracti32x4_epi32, + _mm512_extracti64x4_epi64, _mm512_getexp_round_pd, + _mm512_getexp_round_ps, _mm512_getmant_round_pd, + _mm512_getmant_round_ps, _mm512_permute_pd, _mm512_permute_ps, + _mm512_permutex_epi64, _mm512_permutex_pd, _mm512_rol_epi32, + _mm512_rol_epi64, _mm512_ror_epi32, _mm512_ror_epi64, + _mm512_shuffle_epi32, _mm512_slli_epi32, _mm512_slli_epi64, + _mm512_sqrt_round_pd, _mm512_sqrt_round_ps, _mm512_srai_epi32, + _mm512_srai_epi64, _mm512_srli_epi32, _mm512_srli_epi64, + _mm_cvt_roundsd_i32, _mm_cvt_roundsd_u32, _mm_cvt_roundss_i32, + _mm_cvt_roundss_u32, _mm_cvtt_roundsd_i32, _mm_cvtt_roundsd_u32, + _mm_cvtt_roundss_i32, _mm_cvtt_roundss_u32, _mm512_getmant_pd, + _mm512_getmant_ps, _mm_cvt_roundi32_ss, _mm512_add_round_pd, + _mm512_add_round_ps, _mm512_alignr_epi32, _mm512_alignr_epi64, + _mm512_cmp_epi32_mask, _mm512_cmp_epi64_mask, _mm512_cmp_epu32_mask, + _mm512_cmp_epu64_mask, _mm512_cmp_pd_mask, _mm512_cmp_ps_mask, + _mm512_div_round_pd, _mm512_div_round_ps, _mm512_i32gather_epi32, + _mm512_i32gather_epi64, _mm512_i32gather_pd, _mm512_i32gather_ps, + _mm512_i64gather_epi32, _mm512_i64gather_epi64, _mm512_i64gather_pd, + _mm512_i64gather_ps, _mm512_insertf32x4, _mm512_insertf64x4, + _mm512_inserti32x4, _mm512_inserti64x4, + _mm512_maskz_cvt_roundepi32_ps, _mm512_maskz_cvt_roundepu32_ps, + _mm512_maskz_cvt_roundpd_epi32, _mm512_maskz_cvt_roundpd_epu32, + _mm512_maskz_cvt_roundpd_ps, _mm512_maskz_cvt_roundph_ps, + _mm512_maskz_cvt_roundps_epi32, _mm512_maskz_cvt_roundps_epu32, + _mm512_maskz_cvt_roundps_pd, _mm512_maskz_cvtps_ph, + _mm512_maskz_cvtt_roundpd_epi32, _mm512_maskz_cvtt_roundpd_epu32, + _mm512_maskz_cvtt_roundps_epi32, _mm512_maskz_cvtt_roundps_epu32, + _mm512_maskz_extractf32x4_ps, _mm512_maskz_extractf64x4_pd, + _mm512_maskz_extracti32x4_epi32, _mm512_maskz_extracti64x4_epi64, + _mm512_maskz_getexp_round_pd, _mm512_maskz_getexp_round_ps, + _mm512_maskz_getmant_round_pd, _mm512_maskz_getmant_round_ps, + _mm512_maskz_permute_pd, _mm512_maskz_permute_ps, + _mm512_maskz_permutex_epi64, _mm512_maskz_permutex_pd, + _mm512_maskz_rol_epi32, _mm512_maskz_rol_epi64, + _mm512_maskz_ror_epi32, _mm512_maskz_ror_epi64, + _mm512_maskz_shuffle_epi32, _mm512_maskz_slli_epi32, + _mm512_maskz_slli_epi64, _mm512_maskz_sqrt_round_pd, + _mm512_maskz_sqrt_round_ps, _mm512_maskz_srai_epi32, + _mm512_maskz_srai_epi64, _mm512_maskz_srli_epi32, + _mm512_maskz_srli_epi64, _mm512_max_round_pd, _mm512_max_round_ps, + _mm512_min_round_pd, _mm512_min_round_ps, _mm512_mul_round_pd, + _mm512_mul_round_ps, _mm512_scalef_round_pd, _mm512_scalef_round_ps, + _mm512_shuffle_f32x4, _mm512_shuffle_f64x2, _mm512_shuffle_i32x4, + _mm512_shuffle_i64x2, _mm512_shuffle_pd, _mm512_shuffle_ps, + _mm512_sub_round_pd, _mm512_sub_round_ps, _mm_add_round_sd, + _mm_add_round_ss, _mm_cmp_sd_mask, _mm_cmp_ss_mask, + _mm_cvt_roundi64_sd, _mm_cvt_roundi64_ss, _mm_cvt_roundsd_ss, + _mm_cvt_roundss_sd, _mm_cvt_roundu32_ss, _mm_cvt_roundu64_sd, + _mm_cvt_roundu64_ss, _mm_div_round_sd, _mm_div_round_ss, + _mm_getexp_round_sd, _mm_getexp_round_ss, _mm_getmant_round_sd, + _mm_getmant_round_ss, _mm_mul_round_sd, _mm_mul_round_ss, + _mm_scalef_round_sd, _mm_scalef_round_ss, _mm_sqrt_round_sd, + _mm_sqrt_round_ss, _mm_sub_round_sd, _mm_sub_round_ss, + _mm512_cmp_round_pd_mask, _mm512_cmp_round_ps_mask, + _mm512_maskz_roundscale_round_pd, _mm512_maskz_roundscale_round_ps, + _mm_cmp_round_sd_mask, _mm_cmp_round_ss_mask, _mm_comi_round_sd, + _mm_comi_round_ss, _mm_roundscale_round_sd, _mm_roundscale_round_ss, + _mm512_fmadd_round_pd, _mm512_fmadd_round_ps, + _mm512_fmaddsub_round_pd, _mm512_fmaddsub_round_ps, + _mm512_fmsub_round_pd, _mm512_fmsub_round_ps, + _mm512_fmsubadd_round_pd, _mm512_fmsubadd_round_ps, + _mm512_fnmadd_round_pd, _mm512_fnmadd_round_ps, + _mm512_fnmsub_round_pd, _mm512_fnmsub_round_ps, + _mm512_mask_cmp_epi32_mask, _mm512_mask_cmp_epi64_mask, + _mm512_mask_cmp_epu32_mask, _mm512_mask_cmp_epu64_mask, + _mm512_mask_cmp_pd_mask, _mm512_mask_cmp_ps_mask, + _mm512_mask_cvt_roundepi32_ps, _mm512_mask_cvt_roundepu32_ps, + _mm512_mask_cvt_roundpd_epi32, _mm512_mask_cvt_roundpd_epu32, + _mm512_mask_cvt_roundpd_ps, _mm512_mask_cvt_roundph_ps, + _mm512_mask_cvt_roundps_epi32, _mm512_mask_cvt_roundps_epu32, + _mm512_mask_cvt_roundps_pd, _mm512_mask_cvtps_ph, + _mm512_mask_cvtt_roundpd_epi32, _mm512_mask_cvtt_roundpd_epu32, + _mm512_mask_cvtt_roundps_epi32, _mm512_mask_cvtt_roundps_epu32, + _mm512_mask_extractf32x4_ps, _mm512_mask_extractf64x4_pd, + _mm512_mask_extracti32x4_epi32, _mm512_mask_extracti64x4_epi64, + _mm512_mask_getexp_round_pd, _mm512_mask_getexp_round_ps, + _mm512_mask_getmant_round_pd, _mm512_mask_getmant_round_ps, + _mm512_mask_permute_pd, _mm512_mask_permute_ps, + _mm512_mask_permutex_epi64, _mm512_mask_permutex_pd, + _mm512_mask_rol_epi32, _mm512_mask_rol_epi64, _mm512_mask_ror_epi32, + _mm512_mask_ror_epi64, _mm512_mask_shuffle_epi32, + _mm512_mask_slli_epi32, _mm512_mask_slli_epi64, + _mm512_mask_sqrt_round_pd, _mm512_mask_sqrt_round_ps, + _mm512_mask_srai_epi32, _mm512_mask_srai_epi64, + _mm512_mask_srli_epi32, _mm512_mask_srli_epi64, + _mm512_maskz_add_round_pd, _mm512_maskz_add_round_ps, + _mm512_maskz_alignr_epi32, _mm512_maskz_alignr_epi64, + _mm512_maskz_div_round_pd, _mm512_maskz_div_round_ps, + _mm512_maskz_insertf32x4, _mm512_maskz_insertf64x4, + _mm512_maskz_inserti32x4, _mm512_maskz_inserti64x4, + _mm512_maskz_max_round_pd, _mm512_maskz_max_round_ps, + _mm512_maskz_min_round_pd, _mm512_maskz_min_round_ps, + _mm512_maskz_mul_round_pd, _mm512_maskz_mul_round_ps, + _mm512_maskz_scalef_round_pd, _mm512_maskz_scalef_round_ps, + _mm512_maskz_shuffle_f32x4, _mm512_maskz_shuffle_f64x2, + _mm512_maskz_shuffle_i32x4, _mm512_maskz_shuffle_i64x2, + _mm512_maskz_shuffle_pd, _mm512_maskz_shuffle_ps, + _mm512_maskz_sub_round_pd, _mm512_maskz_sub_round_ps, + _mm512_ternarylogic_epi32, _mm512_ternarylogic_epi64, + _mm_fmadd_round_sd, _mm_fmadd_round_ss, _mm_fmsub_round_sd, + _mm_fmsub_round_ss, _mm_fnmadd_round_sd, _mm_fnmadd_round_ss, + _mm_fnmsub_round_sd, _mm_fnmsub_round_ss, _mm_mask_cmp_sd_mask, + _mm_mask_cmp_ss_mask, _mm_maskz_add_round_sd, _mm_maskz_add_round_ss, + _mm_maskz_cvt_roundsd_ss, _mm_maskz_cvt_roundss_sd, + _mm_maskz_div_round_sd, _mm_maskz_div_round_ss, + _mm_maskz_getexp_round_sd, _mm_maskz_getexp_round_ss, + _mm_maskz_getmant_round_sd, _mm_maskz_getmant_round_ss, + _mm_maskz_mul_round_sd, _mm_maskz_mul_round_ss, + _mm_maskz_scalef_round_sd, _mm_maskz_scalef_round_ss, + _mm_maskz_sqrt_round_sd, _mm_maskz_sqrt_round_ss, + _mm_maskz_sub_round_sd, _mm_maskz_sub_round_ss, + _mm512_i32scatter_epi32, _mm512_i32scatter_epi64, + _mm512_i32scatter_pd, _mm512_i32scatter_ps, _mm512_i64scatter_epi32, + _mm512_i64scatter_epi64, _mm512_i64scatter_pd, _mm512_i64scatter_ps, + _mm512_mask_roundscale_round_pd, _mm512_mask_roundscale_round_ps, + _mm512_mask_cmp_round_pd_mask, _mm512_mask_cmp_round_ps_mask, + _mm_fixupimm_round_sd, _mm_fixupimm_round_ss, + _mm_mask_cmp_round_sd_mask, _mm_mask_cmp_round_ss_mask, + _mm_maskz_roundscale_round_sd, _mm_maskz_roundscale_round_ss, + _mm512_mask3_fmadd_round_pd, _mm512_mask3_fmadd_round_ps, + _mm512_mask3_fmaddsub_round_pd, _mm512_mask3_fmaddsub_round_ps, + _mm512_mask3_fmsub_round_pd, _mm512_mask3_fmsub_round_ps, + _mm512_mask3_fmsubadd_round_pd, _mm512_mask3_fmsubadd_round_ps, + _mm512_mask3_fnmadd_round_pd, _mm512_mask3_fnmadd_round_ps, + _mm512_mask3_fnmsub_round_pd, _mm512_mask3_fnmsub_round_ps, + _mm512_mask_add_round_pd, _mm512_mask_add_round_ps, + _mm512_mask_alignr_epi32, _mm512_mask_alignr_epi64, + _mm512_mask_div_round_pd, _mm512_mask_div_round_ps, + _mm512_mask_fmadd_round_pd, _mm512_mask_fmadd_round_ps, + _mm512_mask_fmaddsub_round_pd, _mm512_mask_fmaddsub_round_ps, + _mm512_mask_fmsub_round_pd, _mm512_mask_fmsub_round_ps, + _mm512_mask_fmsubadd_round_pd, _mm512_mask_fmsubadd_round_ps, + _mm512_mask_fnmadd_round_pd, _mm512_mask_fnmadd_round_ps, + _mm512_mask_fnmsub_round_pd, _mm512_mask_fnmsub_round_ps, + _mm512_mask_i32gather_epi32, _mm512_mask_i32gather_epi64, + _mm512_mask_i32gather_pd, _mm512_mask_i32gather_ps, + _mm512_mask_i64gather_epi32, _mm512_mask_i64gather_epi64, + _mm512_mask_i64gather_pd, _mm512_mask_i64gather_ps, + _mm512_mask_insertf32x4, _mm512_mask_insertf64x4, + _mm512_mask_inserti32x4, _mm512_mask_inserti64x4, + _mm512_mask_max_round_pd, _mm512_mask_max_round_ps, + _mm512_mask_min_round_pd, _mm512_mask_min_round_ps, + _mm512_mask_mul_round_pd, _mm512_mask_mul_round_ps, + _mm512_mask_scalef_round_pd, _mm512_mask_scalef_round_ps, + _mm512_mask_shuffle_f32x4, _mm512_mask_shuffle_f64x2, + _mm512_mask_shuffle_i32x4, _mm512_mask_shuffle_i64x2, + _mm512_mask_shuffle_pd, _mm512_mask_shuffle_ps, + _mm512_mask_sub_round_pd, _mm512_mask_sub_round_ps, + _mm512_mask_ternarylogic_epi32, _mm512_mask_ternarylogic_epi64, + _mm512_maskz_fmadd_round_pd, _mm512_maskz_fmadd_round_ps, + _mm512_maskz_fmaddsub_round_pd, _mm512_maskz_fmaddsub_round_ps, + _mm512_maskz_fmsub_round_pd, _mm512_maskz_fmsub_round_ps, + _mm512_maskz_fmsubadd_round_pd, _mm512_maskz_fmsubadd_round_ps, + _mm512_maskz_fnmadd_round_pd, _mm512_maskz_fnmadd_round_ps, + _mm512_maskz_fnmsub_round_pd, _mm512_maskz_fnmsub_round_ps, + _mm512_maskz_ternarylogic_epi32, _mm512_maskz_ternarylogic_epi64, + _mm_mask3_fmadd_round_sd, _mm_mask3_fmadd_round_ss, + _mm_mask3_fmsub_round_sd, _mm_mask3_fmsub_round_ss, + _mm_mask3_fnmadd_round_sd, _mm_mask3_fnmadd_round_ss, + _mm_mask3_fnmsub_round_sd, _mm_mask3_fnmsub_round_ss, + _mm_mask_add_round_sd, _mm_mask_add_round_ss, _mm_mask_cvt_roundsd_ss, + _mm_mask_cvt_roundss_sd, _mm_mask_div_round_sd, _mm_mask_div_round_ss, + _mm_mask_fmadd_round_sd, _mm_mask_fmadd_round_ss, + _mm_mask_fmsub_round_sd, _mm_mask_fmsub_round_ss, + _mm_mask_fnmadd_round_sd, _mm_mask_fnmadd_round_ss, + _mm_mask_fnmsub_round_sd, _mm_mask_fnmsub_round_ss, + _mm_mask_getexp_round_sd, _mm_mask_getexp_round_ss, + _mm_mask_getmant_round_sd, _mm_mask_getmant_round_ss, + _mm_mask_mul_round_sd, _mm_mask_mul_round_ss, + _mm_mask_scalef_round_sd, _mm_mask_scalef_round_ss, + _mm_mask_sqrt_round_sd, _mm_mask_sqrt_round_ss, _mm_mask_sub_round_sd, + _mm_mask_sub_round_ss, _mm_maskz_fmadd_round_sd, + _mm_maskz_fmadd_round_ss, _mm_maskz_fmsub_round_sd, + _mm_maskz_fmsub_round_ss, _mm_maskz_fnmadd_round_sd, + _mm_maskz_fnmadd_round_ss, _mm_maskz_fnmsub_round_sd, + _mm_maskz_fnmsub_round_ss, _mm512_mask_i32scatter_epi32, + _mm512_mask_i32scatter_epi64, _mm512_mask_i32scatter_pd, + _mm512_mask_i32scatter_ps, _mm512_mask_i64scatter_epi32, + _mm512_mask_i64scatter_epi64, _mm512_mask_i64scatter_pd, + _mm512_mask_i64scatter_ps, _mm_mask_getmant_sd, _mm_mask_getmant_ss, + _mm_mask_roundscale_round_sd, _mm_mask_roundscale_round_ss, + _mm512_mask_fixupimm_round_pd, _mm512_mask_fixupimm_round_ps, + _mm512_maskz_fixupimm_round_pd, _mm512_maskz_fixupimm_round_ps, + _mm_mask_fixupimm_round_sd, _mm_mask_fixupimm_round_ss, + _mm_maskz_fixupimm_round_sd, _mm_maskz_fixupimm_round_ss, + _mm512_mask_prefetch_i32gather_ps, _mm512_mask_prefetch_i32scatter_ps, + _mm512_mask_prefetch_i64gather_ps, _mm512_mask_prefetch_i64scatter_ps, + _mm512_exp2a23_round_pd, _mm512_exp2a23_round_ps, + _mm512_rcp28_round_pd, _mm512_rcp28_round_ps, _mm512_rsqrt28_round_pd, + _mm512_rsqrt28_round_ps, _mm512_maskz_exp2a23_round_pd, + _mm512_maskz_exp2a23_round_ps, _mm512_maskz_rcp28_round_pd, + _mm512_maskz_rcp28_round_ps, _mm512_maskz_rsqrt28_round_pd, + _mm512_maskz_rsqrt28_round_ps, _mm512_mask_exp2a23_round_pd, + _mm512_mask_exp2a23_round_ps, _mm512_mask_rcp28_round_pd, + _mm512_mask_rcp28_round_ps, _mm512_mask_rsqrt28_round_pd, + _mm512_mask_rsqrt28_round_ps. + * gcc.target/i386/testimm-10.c: New file. + * gcc.target/i386/testround-1.c: Ditto. + * gcc.target/i386/testround-2.c: Ditto. + * gcc.target/x86_64/abi/avx512f/test_m512_returning.c: Ditto. + * gcc.target/x86_64/abi/avx512f/test_passing_m512.c: Ditto. + * gcc.target/x86_64/abi/avx512f/test_passing_structs.c: Ditto. + * gcc.target/x86_64/abi/avx512f/test_passing_unions.c: Ditto. + * gcc.target/i386/avx512cd-check.h: Ditto. + * gcc.target/i386/avx512er-check.h: Ditto. + * gcc.target/i386/avx512f-check.h: Ditto. + * gcc.target/i386/avx512f-helper.h: Ditto. + * gcc.target/i386/avx512f-mask-type.h: Ditto. + * gcc.target/i386/avx512f-os-support.h: Ditto. + * gcc.target/i386/i386.exp (check_effective_target_avx512f): New. + (check_effective_target_avx512cd): Ditto. + (check_effective_target_avx512er): Ditto. + * gcc.target/i386/m128-check.h (CHECK_FP_EXP): Ditto. + * gcc.target/i386/m512-check.h: Ditto. + * gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: New file. + * gcc.target/x86_64/abi/avx512f/args.h: Ditto. + * gcc.target/x86_64/abi/avx512f/asm-support.S: Ditto. + * gcc.target/x86_64/abi/avx512f/avx512f-check.h: Ditto. + * lib/target-supports.exp (check_effective_target_avx512f): New. + 2013-12-31 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/testsuite/g++.dg/other/i386-2.C b/gcc/testsuite/g++.dg/other/i386-2.C index 67dea2aa804..73729eb61d1 100644 --- a/gcc/testsuite/g++.dg/other/i386-2.C +++ b/gcc/testsuite/g++.dg/other/i386-2.C @@ -1,5 +1,5 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ -/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt" } */ +/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd" } */ /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h, xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h, diff --git a/gcc/testsuite/g++.dg/other/i386-3.C b/gcc/testsuite/g++.dg/other/i386-3.C index 8b86785e8c2..f73d8d77381 100644 --- a/gcc/testsuite/g++.dg/other/i386-3.C +++ b/gcc/testsuite/g++.dg/other/i386-3.C @@ -1,5 +1,5 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ -/* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt" } */ +/* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd" } */ /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h, xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h, diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-check.h b/gcc/testsuite/gcc.target/i386/avx512cd-check.h new file mode 100644 index 00000000000..bccf8b48e06 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-check.h @@ -0,0 +1,46 @@ +#include +#include "cpuid.h" +#include "m512-check.h" +#include "avx512f-os-support.h" + +static void avx512cd_test (void); + +static void __attribute__ ((noinline)) do_test (void) +{ + avx512cd_test (); +} + +int +main () +{ + unsigned int eax, ebx, ecx, edx; + + if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) + return 0; + + if ((ecx & bit_OSXSAVE) == (bit_OSXSAVE)) + { + if (__get_cpuid_max (0, NULL) < 7) + return 0; + + __cpuid_count (7, 0, eax, ebx, ecx, edx); + + if ((avx512f_os_support ()) && ((ebx & (bit_AVX512CD)) == (bit_AVX512CD))) + { + do_test (); +#ifdef DEBUG + printf ("PASSED\n"); +#endif + return 0; + } +#ifdef DEBUG + printf ("SKIPPED\n"); +#endif + } +#ifdef DEBUG + else + printf ("SKIPPED\n"); +#endif + + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c b/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c new file mode 100644 index 00000000000..036031b7659 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512cd -O2" } */ +/* { dg-final { scan-assembler "vpbroadcastmb2q\[ \\t\]+\[^\n\]*k\[1-7\]\[^\n\]*%zmm\[0-7\]" } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m8; + +void extern +avx512f_test (void) +{ + x = _mm512_broadcastmb_epi64 (m8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmb2q-2.c b/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmb2q-2.c new file mode 100644 index 00000000000..05f4bfc4252 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmb2q-2.c @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512cd" } */ +/* { dg-require-effective-target avx512cd } */ + +#define HAVE_512 +#define AVX512CD + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) + +CALC (long long *res, __mmask8 src) +{ + int i; + + for (i = 0; i < SIZE; i++) + res[i] = src; +} + +static void +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_q) res; + long long res_ref[SIZE]; + __mmask8 src; + + for (i = 0; i < SIZE; i++) + { + res.a[i] = -1; + } + + res.x = INTRINSIC (_broadcastmb_epi64) (src); + + CALC (res_ref, src); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c b/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c new file mode 100644 index 00000000000..36abb5e7bc1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512cd -O2" } */ +/* { dg-final { scan-assembler "vpbroadcastmw2d\[ \\t\]+\[^\n\]*k\[1-7\]\[^\n\]*%zmm\[0-7\]" } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m16; + +void extern +avx512f_test (void) +{ + x = _mm512_broadcastmw_epi32 (m16); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmw2d-2.c b/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmw2d-2.c new file mode 100644 index 00000000000..7282110ab37 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vpbroadcastmw2d-2.c @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512cd" } */ +/* { dg-require-effective-target avx512cd } */ + +#define HAVE_512 +#define AVX512CD + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) + +CALC (int *res, __mmask16 src) +{ + int i; + + for (i = 0; i < SIZE; i++) + res[i] = src; +} + +static void +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_d) res; + int res_ref[SIZE]; + __mmask16 src; + + for (i = 0; i < SIZE; i++) + { + res.a[i] = -1; + } + + res.x = INTRINSIC (_broadcastmw_epi32) (src); + + CALC (res_ref, src); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictd-1.c b/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictd-1.c new file mode 100644 index 00000000000..d3f2a258dbf --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512cd -O2" } */ +/* { dg-final { scan-assembler-times "vpconflictd\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpconflictd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpconflictd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m512i res; + +void extern +avx512f_test (void) +{ + res = _mm512_conflict_epi32 (s); + res = _mm512_mask_conflict_epi32 (res, 2, s); + res = _mm512_maskz_conflict_epi32 (2, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictd-2.c b/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictd-2.c new file mode 100644 index 00000000000..16597fbafb0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictd-2.c @@ -0,0 +1,60 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512cd" } */ +/* { dg-require-effective-target avx512cd } */ + +#define HAVE_512 +#define AVX512CD + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *s, int *r) +{ + int i, j; + + for (i = 0; i < SIZE; i++) + { + r[i] = 0; + for (j = 0; j < i; j++) + { + r[i] |= s[j] == s[i] ? 1 << j : 0; + } + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s, res1, res2, res3; + int res_ref[SIZE]; + MASK_TYPE mask = MASK_VALUE; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 1234 * (i % 5); + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_conflict_epi32) (s.x); + res2.x = INTRINSIC (_mask_conflict_epi32) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_conflict_epi32) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictq-1.c b/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictq-1.c new file mode 100644 index 00000000000..795fa6add48 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512cd -O2" } */ +/* { dg-final { scan-assembler-times "vpconflictq\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpconflictq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vpconflictq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512i s; +volatile __m512i res; + +void extern +avx512f_test (void) +{ + res = _mm512_conflict_epi64 (s); + res = _mm512_mask_conflict_epi64 (res, 2, s); + res = _mm512_maskz_conflict_epi64 (2, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictq-2.c b/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictq-2.c new file mode 100644 index 00000000000..a2695195c48 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vpconflictq-2.c @@ -0,0 +1,60 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512cd" } */ +/* { dg-require-effective-target avx512cd } */ + +#define HAVE_512 +#define AVX512CD + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (long long *s, long long *r) +{ + int i, j; + + for (i = 0; i < SIZE; i++) + { + r[i] = 0; + for (j = 0; j < i; j++) + { + r[i] |= s[i] == s[j] ? 1 << j : 0; + } + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s, res1, res2, res3; + long long res_ref[SIZE]; + MASK_TYPE mask = MASK_VALUE; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 12345678 * (i % 5); + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_conflict_epi64) (s.x); + res2.x = INTRINSIC (_mask_conflict_epi64) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_conflict_epi64) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntd-1.c b/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntd-1.c new file mode 100644 index 00000000000..65a2a32751a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512cd -O2" } */ +/* { dg-final { scan-assembler-times "vplzcntd\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vplzcntd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1} } */ +/* { dg-final { scan-assembler-times "vplzcntd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512i s; +volatile __m512i res; + +void extern +avx512f_test (void) +{ + res = _mm512_lzcnt_epi32 (s); + res = _mm512_mask_lzcnt_epi32 (res, 2, s); + res = _mm512_maskz_lzcnt_epi32 (2, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntd-2.c b/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntd-2.c new file mode 100644 index 00000000000..0a357b69fa6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntd-2.c @@ -0,0 +1,60 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512cd" } */ +/* { dg-require-effective-target avx512cd } */ + +#define HAVE_512 +#define AVX512CD + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include + +static void +CALC (int *s, int *r) +{ + int i, res; + + for (i = 0; i < SIZE; i++) + { + res = 0; + while ((res < 32) && (((s[i] >> (31 - res)) & 1) == 0)) + ++res; + r[i] = res; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s, res1, res2, res3; + int res_ref[SIZE]; + MASK_TYPE mask = MASK_VALUE; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 12345678 * (i % 5); + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_lzcnt_epi32) (s.x); + res2.x = INTRINSIC (_mask_lzcnt_epi32) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_lzcnt_epi32) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-1.c b/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-1.c new file mode 100644 index 00000000000..0324cd0c2be --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512cd -O2" } */ +/* { dg-final { scan-assembler-times "vplzcntq\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vplzcntq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vplzcntq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m512i res; + +void extern +avx512f_test (void) +{ + res = _mm512_lzcnt_epi64 (s); + res = _mm512_maskz_lzcnt_epi64 (2, s); + res = _mm512_mask_lzcnt_epi64 (res, 2, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-2.c b/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-2.c new file mode 100644 index 00000000000..f0cc40304c9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vplzcntq-2.c @@ -0,0 +1,60 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512cd" } */ +/* { dg-require-effective-target avx512cd } */ + +#define HAVE_512 +#define AVX512CD + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include + +static void +CALC (long long *s, long long *r) +{ + int i, res; + + for (i = 0; i < SIZE; i++) + { + res = 0; + while ((res < 64) && (((s[i] >> (63 - res)) & 1) == 0)) + ++res; + r[i] = res; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s, res1, res2, res3; + long long res_ref[SIZE]; + MASK_TYPE mask = MASK_VALUE; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 12345678 * (i % 5); + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_lzcnt_epi64) (s.x); + res2.x = INTRINSIC (_mask_lzcnt_epi64) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_lzcnt_epi64) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmd-1.c b/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmd-1.c new file mode 100644 index 00000000000..39797a8fca4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmd-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512cd -O2" } */ +/* { dg-final { scan-assembler-times "vptestnmd\[ \\t\]+\[^\n\]*%zmm\[0-7\]\[^\n^k\]*k\[1-7\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vptestnmd\[ \\t\]+\[^\n\]*%zmm\[0-7\]\[^\n^k\]*k\[1-7\]\{" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m16; + +void extern +avx512cd_test (void) +{ + m16 = _mm512_testn_epi32_mask (x, x); + m16 = _mm512_mask_testn_epi32_mask (3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmd-2.c b/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmd-2.c new file mode 100644 index 00000000000..567e164044c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmd-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512cd" } */ +/* { dg-require-effective-target avx512cd } */ + +#define AVX512CD + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (MASK_TYPE *res, int *src1, int *src2) +{ + int i; + *res = 0; + MASK_TYPE one = 1; + + for (i = 0; i < SIZE; i++) + if (!(src1[i] & src2[i])) + *res = *res | one << i; +} + +static void +TEST (void) +{ + int i, sign = 1; + UNION_TYPE (AVX512F_LEN, i_d) src1, src2; + MASK_TYPE res_ref, res1, res2; + MASK_TYPE mask = MASK_VALUE; + res1 = 0; + res2 = 0; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * i * sign; + src2.a[i] = i + 20; + sign = -sign; + } + + res1 = INTRINSIC (_testn_epi32_mask) (src1.x, src2.x); + res2 = INTRINSIC (_mask_testn_epi32_mask) (mask, src1.x, src2.x); + + CALC (&res_ref, src1.a, src2.a); + + if (res1 != res_ref) + abort (); + + res_ref &= mask; + + if (res2 != res_ref) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmq-1.c b/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmq-1.c new file mode 100644 index 00000000000..dd68612ad43 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmq-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512cd -O2" } */ +/* { dg-final { scan-assembler-times "vptestnmq\[ \\t\]+\[^\n\]*%zmm\[0-7\]\[^\n^k\]*k\[1-7\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vptestnmq\[ \\t\]+\[^\n\]*%zmm\[0-7\]\[^\n^k\]*k\[1-7\]\{" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m8; + +void extern +avx512cd_test (void) +{ + m8 = _mm512_testn_epi64_mask (x, x); + m8 = _mm512_mask_testn_epi64_mask (3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmq-2.c b/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmq-2.c new file mode 100644 index 00000000000..ff9f011427e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512cd-vptestnmq-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512cd" } */ +/* { dg-require-effective-target avx512cd } */ + +#define AVX512CD + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (MASK_TYPE *res, long long *src1, long long *src2) +{ + int i; + *res = 0; + MASK_TYPE one = 1; + + for (i = 0; i < SIZE; i++) + if (!(src1[i] & src2[i])) + *res = *res | one << i; +} + +static void +TEST (void) +{ + int i, sign = 1; + UNION_TYPE (AVX512F_LEN, i_q) src1, src2; + MASK_TYPE res_ref, res1, res2; + MASK_TYPE mask = MASK_VALUE; + res1 = 0; + res2 = 0; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * i * sign; + src2.a[i] = i + 20; + sign = -sign; + } + + res1 = INTRINSIC (_testn_epi64_mask) (src1.x, src2.x); + res2 = INTRINSIC (_mask_testn_epi64_mask) (mask, src1.x, src2.x); + + CALC (&res_ref, src1.a, src2.a); + + if (res1 != res_ref) + abort (); + + res_ref &= mask; + + if (res2 != res_ref) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-check.h b/gcc/testsuite/gcc.target/i386/avx512er-check.h new file mode 100644 index 00000000000..34440d346b2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-check.h @@ -0,0 +1,46 @@ +#include +#include "cpuid.h" +#include "m512-check.h" +#include "avx512f-os-support.h" + +static void avx512er_test (void); + +static void __attribute__ ((noinline)) do_test (void) +{ + avx512er_test (); +} + +int +main () +{ + unsigned int eax, ebx, ecx, edx; + + if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) + return 0; + + if ((ecx & bit_OSXSAVE) == (bit_OSXSAVE)) + { + if (__get_cpuid_max (0, NULL) < 7) + return 0; + + __cpuid_count (7, 0, eax, ebx, ecx, edx); + + if ((avx512f_os_support ()) && ((ebx & bit_AVX512ER) == bit_AVX512ER)) + { + do_test (); +#ifdef DEBUG + printf ("PASSED\n"); +#endif + return 0; + } +#ifdef DEBUG + printf ("SKIPPED\n"); +#endif + } +#ifdef DEBUG + else + printf ("SKIPPED\n"); +#endif + + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c new file mode 100644 index 00000000000..9fb87cfb8ec --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512er -O2" } */ +/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512er_test (void) +{ + x = _mm512_exp2a23_pd (x); + x = _mm512_mask_exp2a23_pd (x, m, x); + x = _mm512_maskz_exp2a23_pd (m, x); + x = _mm512_exp2a23_round_pd (x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_exp2a23_round_pd (x, m, x, _MM_FROUND_TO_NEG_INF); + x = _mm512_maskz_exp2a23_round_pd (m, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c new file mode 100644 index 00000000000..ce4e86c1f95 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c @@ -0,0 +1,48 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512er } */ +/* { dg-options "-O2 -mavx512er" } */ + +#include "avx512er-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" +#include + +void static +compute_vexp2pd (double *s, double *r) +{ + int i; + for (i = 0; i < 8; i++) + r[i] = pow (2.0, s[i]); +} + +void static +avx512er_test (void) +{ + union512d src, res1, res2, res3; + __mmask8 mask = MASK_VALUE; + double res_ref[8]; + int i; + + for (i = 0; i < 8; i++) + { + src.a[i] = 179.345 - 6.5645 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = _mm512_exp2a23_pd (src.x); + res2.x = _mm512_mask_exp2a23_pd (res2.x, mask, src.x); + res3.x = _mm512_maskz_exp2a23_pd (mask, src.x); + + compute_vexp2pd (src.a, res_ref); + + if (check_rough_union512d (res1, res_ref, 0.0001)) + abort (); + + MASK_MERGE (d) (res_ref, mask, 8); + if (check_rough_union512d (res2, res_ref, 0.0001)) + abort (); + + MASK_ZERO (d) (res_ref, mask, 8); + if (check_rough_union512d (res3, res_ref, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-1.c new file mode 100644 index 00000000000..a7e7009ec01 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512er -O2" } */ +/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512er_test (void) +{ + x = _mm512_exp2a23_ps (x); + x = _mm512_mask_exp2a23_ps (x, m, x); + x = _mm512_maskz_exp2a23_ps (m, x); + x = _mm512_exp2a23_round_ps (x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_exp2a23_round_ps (x, m, x, _MM_FROUND_TO_POS_INF); + x = _mm512_maskz_exp2a23_round_ps (m, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-2.c new file mode 100644 index 00000000000..06ef68c3d2a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-2.c @@ -0,0 +1,48 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512er } */ +/* { dg-options "-O2 -mavx512er" } */ + +#include "avx512er-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" +#include + +void static +compute_vexp2ps (float *s, float *r) +{ + int i; + for (i = 0; i < 16; i++) + r[i] = pow (2.0, s[i]); +} + +void static +avx512er_test (void) +{ + union512 src, res1, res2, res3; + __mmask16 mask = MASK_VALUE; + float res_ref[16]; + int i; + + for (i = 0; i < 16; i++) + { + src.a[i] = 179.345 - 6.5645 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = _mm512_exp2a23_ps (src.x); + res2.x = _mm512_mask_exp2a23_ps (res2.x, mask, src.x); + res3.x = _mm512_maskz_exp2a23_ps (mask, src.x); + + compute_vexp2ps (src.a, res_ref); + + if (check_rough_union512 (res1, res_ref, 0.0001)) + abort (); + + MASK_MERGE ()(res_ref, mask, 16); + if (check_rough_union512 (res2, res_ref, 0.0001)) + abort (); + + MASK_ZERO ()(res_ref, mask, 16); + if (check_rough_union512 (res3, res_ref, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-1.c new file mode 100644 index 00000000000..06b61609f14 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512er -O2" } */ +/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512er_test (void) +{ + x = _mm512_rcp28_pd (x); + x = _mm512_mask_rcp28_pd (x, m, x); + x = _mm512_maskz_rcp28_pd (m, x); + x = _mm512_rcp28_round_pd (x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_rcp28_round_pd (x, m, x, _MM_FROUND_TO_NEG_INF); + x = _mm512_maskz_rcp28_round_pd (m, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-2.c new file mode 100644 index 00000000000..609aeaa31c6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-2.c @@ -0,0 +1,47 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512er } */ +/* { dg-options "-O2 -mavx512er" } */ + +#include "avx512er-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" + +void static +compute_vrcp28pd (double *s, double *r) +{ + int i; + for (i = 0; i < 8; i++) + r[i] = 1.0 / s[i]; +} + +void static +avx512er_test (void) +{ + union512d src, res1, res2, res3; + __mmask8 mask = MASK_VALUE; + double res_ref[8]; + int i; + + for (i = 0; i < 8; i++) + { + src.a[i] = 179.345 - 6.5645 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = _mm512_rcp28_pd (src.x); + res2.x = _mm512_mask_rcp28_pd (res2.x, mask, src.x); + res3.x = _mm512_maskz_rcp28_pd (mask, src.x); + + compute_vrcp28pd (src.a, res_ref); + + if (check_rough_union512d (res1, res_ref, 0.0001)) + abort (); + + MASK_MERGE (d) (res_ref, mask, 8); + if (check_rough_union512d (res2, res_ref, 0.0001)) + abort (); + + MASK_ZERO (d) (res_ref, mask, 8); + if (check_rough_union512d (res3, res_ref, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-1.c new file mode 100644 index 00000000000..023d6b2f519 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512er -O2" } */ +/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512er_test (void) +{ + x = _mm512_rcp28_ps (x); + x = _mm512_mask_rcp28_ps (x, m, x); + x = _mm512_maskz_rcp28_ps (m, x); + x = _mm512_rcp28_round_ps (x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_rcp28_round_ps (x, m, x, _MM_FROUND_TO_POS_INF); + x = _mm512_maskz_rcp28_round_ps (m, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-2.c new file mode 100644 index 00000000000..4059e0e7f52 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-2.c @@ -0,0 +1,47 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512er } */ +/* { dg-options "-O2 -mavx512er" } */ + +#include "avx512er-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" + +void static +compute_vrcp28ps (float *s, float *r) +{ + int i; + for (i = 0; i < 16; i++) + r[i] = 1.0 / s[i]; +} + +void static +avx512er_test (void) +{ + union512 src, res1, res2, res3; + __mmask16 mask = MASK_VALUE; + float res_ref[16]; + int i; + + for (i = 0; i < 16; i++) + { + src.a[i] = 179.345 - 6.5645 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = _mm512_rcp28_ps (src.x); + res2.x = _mm512_mask_rcp28_ps (res2.x, mask, src.x); + res3.x = _mm512_maskz_rcp28_ps (mask, src.x); + + compute_vrcp28ps (src.a, res_ref); + + if (check_rough_union512 (res1, res_ref, 0.0001)) + abort (); + + MASK_MERGE ()(res_ref, mask, 16); + if (check_rough_union512 (res2, res_ref, 0.0001)) + abort (); + + MASK_ZERO ()(res_ref, mask, 16); + if (check_rough_union512 (res3, res_ref, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-1.c new file mode 100644 index 00000000000..dfb95b2bf30 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512er -O2" } */ +/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512er_test (void) +{ + x = _mm512_rsqrt28_pd (x); + x = _mm512_mask_rsqrt28_pd (x, m, x); + x = _mm512_maskz_rsqrt28_pd (m, x); + x = _mm512_rsqrt28_round_pd (x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_rsqrt28_round_pd (x, m, x, _MM_FROUND_TO_NEG_INF); + x = _mm512_maskz_rsqrt28_round_pd (m, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-2.c new file mode 100644 index 00000000000..84a66addd55 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-2.c @@ -0,0 +1,48 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512er } */ +/* { dg-options "-O2 -mavx512er" } */ + +#include "avx512er-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" +#include + +void static +compute_vrsqrt28pd (double *s, double *r) +{ + int i; + for (i = 0; i < 8; i++) + r[i] = 1.0 / sqrt (s[i]); +} + +void static +avx512er_test (void) +{ + union512d src, res1, res2, res3; + __mmask8 mask = MASK_VALUE; + double res_ref[8]; + int i; + + for (i = 0; i < 8; i++) + { + src.a[i] = 179.345 - 6.5645 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = _mm512_rsqrt28_pd (src.x); + res2.x = _mm512_mask_rsqrt28_pd (res2.x, mask, src.x); + res3.x = _mm512_maskz_rsqrt28_pd (mask, src.x); + + compute_vrsqrt28pd (src.a, res_ref); + + if (check_rough_union512d (res1, res_ref, 0.0001)) + abort (); + + MASK_MERGE (d) (res_ref, mask, 8); + if (check_rough_union512d (res2, res_ref, 0.0001)) + abort (); + + MASK_ZERO (d) (res_ref, mask, 8); + if (check_rough_union512d (res3, res_ref, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-1.c new file mode 100644 index 00000000000..ecd3a6fbf12 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512er -O2" } */ +/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512er_test (void) +{ + x = _mm512_rsqrt28_ps (x); + x = _mm512_mask_rsqrt28_ps (x, m, x); + x = _mm512_maskz_rsqrt28_ps (m, x); + x = _mm512_rsqrt28_round_ps (x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_rsqrt28_round_ps (x, m, x, _MM_FROUND_TO_POS_INF); + x = _mm512_maskz_rsqrt28_round_ps (m, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-2.c new file mode 100644 index 00000000000..a92472e6191 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-2.c @@ -0,0 +1,48 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512er } */ +/* { dg-options "-O2 -mavx512er" } */ + +#include "avx512er-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" +#include + +void static +compute_vrsqrt28ps (float *s, float *r) +{ + int i; + for (i = 0; i < 16; i++) + r[i] = 1.0 / sqrt (s[i]); +} + +void static +avx512er_test (void) +{ + union512 src, res1, res2, res3; + __mmask16 mask = MASK_VALUE; + float res_ref[16]; + int i; + + for (i = 0; i < 16; i++) + { + src.a[i] = 179.345 - 6.5645 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = _mm512_rsqrt28_ps (src.x); + res2.x = _mm512_mask_rsqrt28_ps (res2.x, mask, src.x); + res3.x = _mm512_maskz_rsqrt28_ps (mask, src.x); + + compute_vrsqrt28ps (src.a, res_ref); + + if (check_rough_union512 (res1, res_ref, 0.0001)) + abort (); + + MASK_MERGE ()(res_ref, mask, 16); + if (check_rough_union512 (res2, res_ref, 0.0001)) + abort (); + + MASK_ZERO ()(res_ref, mask, 16); + if (check_rough_union512 (res3, res_ref, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-1.c b/gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-1.c new file mode 100644 index 00000000000..f550e22471b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-1.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+%r\[^\n\]+%zmm\[0-9\]\[^\{\]" 1 { target { ! { ia32 } } } } } */ +/* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+%e\[^\n\]+%zmm\[0-9\]\[^\{\]" 1 { target { ! { ia32 } } } } } */ +/* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\n\]+%zmm\[0-9\]\[^\{\]" 1 { target ia32 } } } */ +/* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\n\]+%zmm\[0-9\]\[^\{\]" 1 { target ia32 } } } */ + +#include + +__m512i +foo_1 (long long y) +{ + return __extension__ (__m512i)(__v8di){ y, y, y, y, y, y, y, y }; +} + +__m512i +foo_2 (int y) +{ + return __extension__ (__m512i)(__v16si){ y, y, y, y, y, y, y, y, y, + y, y, y, y, y, y, y }; +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-2.c b/gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-2.c new file mode 100644 index 00000000000..91665b299ad --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-2.c @@ -0,0 +1,29 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" +#include "avx512f-broadcast-gpr-1.c" + +void +avx512f_test (void) +{ + union512i_q q; + union512i_d d; + int i; + + q.x = foo_1 (3); + d.x = foo_2 (5); + + for (i = 0; i < 8; i++) + { + if (q.a[i] != 3) + abort (); + } + + for (i = 0; i < 16; i++) + { + if (d.a[i] != 5) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c b/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c new file mode 100644 index 00000000000..038d25e3582 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ +/* { dg-skip-if "no M_PI" { vxworks_kernel } } */ + +#include +#include "avx512f-check.h" + +extern double ceil (double); + +#define NUM 64 + +static void +__attribute__((__target__("fpmath=sse"))) +init_src (double *src) +{ + int i, sign = 1; + double f = rand (); + + for (i = 0; i < NUM; i++) + { + src[i] = (i + 1) * f * M_PI * sign; + if (i < (NUM / 2)) + { + if ((i % 6) == 0) + f = f * src[i]; + } + else if (i == (NUM / 2)) + f = rand (); + else if ((i % 6) == 0) + f = 1 / (f * (i + 1) * src[i] * M_PI * sign); + sign = -sign; + } +} + +static void +__attribute__((__target__("fpmath=387"))) +avx512f_test (void) +{ + double a[NUM]; + int r[NUM]; + int i; + + init_src (a); + + for (i = 0; i < NUM; i++) + r[i] = (int) ceil (a[i]); + + /* check results: */ + for (i = 0; i < NUM; i++) + if (r[i] != (int) ceil (a[i])) + abort(); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-2.c b/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-2.c new file mode 100644 index 00000000000..8dafb1bf815 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-2.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512f" } */ + +#include "avx512f-ceil-sfix-vec-1.c" + +/* { dg-final { scan-assembler "vrndscalepd\[^\n\]*zmm\[0-9\]" } } */ +/* { dg-final { scan-assembler "vcvttpd2dq\[^\n\]*zmm\[0-9\]" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512f-check.h b/gcc/testsuite/gcc.target/i386/avx512f-check.h new file mode 100644 index 00000000000..9e01367205c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-check.h @@ -0,0 +1,47 @@ +#include +#include "cpuid.h" +#include "m512-check.h" +#include "avx512f-os-support.h" + +static void avx512f_test (void); + +static void __attribute__ ((noinline)) do_test (void) +{ + avx512f_test (); +} + +int +main () +{ + unsigned int eax, ebx, ecx, edx; + + if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) + return 0; + + /* Run AVX512F test only if host has AVX512F support. */ + if ((ecx & bit_OSXSAVE) == (bit_OSXSAVE)) + { + if (__get_cpuid_max (0, NULL) < 7) + return 0; + + __cpuid_count (7, 0, eax, ebx, ecx, edx); + + if ((avx512f_os_support ()) && ((ebx & bit_AVX512F) == bit_AVX512F)) + { + do_test (); +#ifdef DEBUG + printf ("PASSED\n"); +#endif + return 0; + } +#ifdef DEBUG + printf ("SKIPPED\n"); +#endif + } +#ifdef DEBUG + else + printf ("SKIPPED\n"); +#endif + + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-dummy.c b/gcc/testsuite/gcc.target/i386/avx512f-dummy.c new file mode 100644 index 00000000000..84b062789b9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-dummy.c @@ -0,0 +1,13 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void static +avx512f_test (void) +{ + union512i_q u, s1, s2; + long long e[8]; + volatile int tst = check_union512i_q (u, e); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c b/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c new file mode 100644 index 00000000000..fab7e6528ae --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-1.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ +/* { dg-skip-if "no M_PI" { vxworks_kernel } } */ + +#include +#include "avx512f-check.h" + +extern double floor (double); + +#define NUM 64 + +static void +__attribute__((__target__("fpmath=sse"))) +init_src (double *src) +{ + int i, sign = 1; + double f = rand (); + + for (i = 0; i < NUM; i++) + { + src[i] = (i + 1) * f * M_PI * sign; + if (i < (NUM / 2)) + { + if ((i % 6) == 0) + f = f * src[i]; + } + else if (i == (NUM / 2)) + f = rand (); + else if ((i % 6) == 0) + f = 1 / (f * (i + 1) * src[i] * M_PI * sign); + sign = -sign; + } +} + +static void +__attribute__((__target__("fpmath=387"))) +avx512f_test (void) +{ + double a[NUM]; + int r[NUM]; + int i; + + init_src (a); + + for (i = 0; i < NUM; i++) + r[i] = (int) floor (a[i]); + + /* check results: */ + for (i = 0; i < NUM; i++) + if (r[i] != (int) floor (a[i])) + abort(); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-2.c b/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-2.c new file mode 100644 index 00000000000..90e625abcd5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-floor-sfix-vec-2.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512f" } */ + +#include "avx512f-floor-sfix-vec-1.c" + +/* { dg-final { scan-assembler "vrndscalepd\[^\n\]*zmm\[0-9\]" } } */ +/* { dg-final { scan-assembler "vcvttpd2dq\[^\n\]*zmm\[0-9\]" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512f-gather-1.c b/gcc/testsuite/gcc.target/i386/avx512f-gather-1.c new file mode 100644 index 00000000000..5ccb03a1f49 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-gather-1.c @@ -0,0 +1,217 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512f } */ +/* { dg-options "-O3 -mavx512f" } */ + +#include "avx512f-check.h" + +#define N 1024 +float vf1[N+16], vf2[N]; +double vd1[N+16], vd2[N]; +int vi1[N+16], vi2[N], k[N]; +long long vl1[N+16], vl2[N]; +long l[N]; + +__attribute__((noinline, noclone)) void +f1 (void) +{ + int i; + for (i = 0; i < N; i++) + vf2[i] = vf1[k[i]]; +} + +__attribute__((noinline, noclone)) void +f2 (void) +{ + int i; + for (i = 0; i < N; i++) + vi2[i] = vi1[k[i]]; +} + +__attribute__((noinline, noclone)) void +f3 (int x) +{ + int i; + for (i = 0; i < N; i++) + vf2[i] = vf1[k[i] + x]; +} + +__attribute__((noinline, noclone)) void +f4 (int x) +{ + int i; + for (i = 0; i < N; i++) + vi2[i] = vi1[k[i] + x]; +} + +__attribute__((noinline, noclone)) void +f5 (void) +{ + int i; + for (i = 0; i < N; i++) + vd2[i] = vd1[k[i]]; +} + +__attribute__((noinline, noclone)) void +f6 (void) +{ + int i; + for (i = 0; i < N; i++) + vl2[i] = vl1[k[i]]; +} + +__attribute__((noinline, noclone)) void +f7 (int x) +{ + int i; + for (i = 0; i < N; i++) + vd2[i] = vd1[k[i] + x]; +} + +__attribute__((noinline, noclone)) void +f8 (int x) +{ + int i; + for (i = 0; i < N; i++) + vl2[i] = vl1[k[i] + x]; +} + +__attribute__((noinline, noclone)) void +f9 (void) +{ + int i; + for (i = 0; i < N; i++) + vf2[i] = vf1[l[i]]; +} + +__attribute__((noinline, noclone)) void +f10 (void) +{ + int i; + for (i = 0; i < N; i++) + vi2[i] = vi1[l[i]]; +} + +__attribute__((noinline, noclone)) void +f11 (int x) +{ + int i; + for (i = 0; i < N; i++) + vf2[i] = vf1[l[i] + x]; +} + +__attribute__((noinline, noclone)) void +f12 (int x) +{ + int i; + for (i = 0; i < N; i++) + vi2[i] = vi1[l[i] + x]; +} + +__attribute__((noinline, noclone)) void +f13 (void) +{ + int i; + for (i = 0; i < N; i++) + vd2[i] = vd1[l[i]]; +} + +__attribute__((noinline, noclone)) void +f14 (void) +{ + int i; + for (i = 0; i < N; i++) + vl2[i] = vl1[l[i]]; +} + +__attribute__((noinline, noclone)) void +f15 (int x) +{ + int i; + for (i = 0; i < N; i++) + vd2[i] = vd1[l[i] + x]; +} + +__attribute__((noinline, noclone)) void +f16 (int x) +{ + int i; + for (i = 0; i < N; i++) + vl2[i] = vl1[l[i] + x]; +} + +static void +avx512f_test (void) +{ + int i; + + for (i = 0; i < N + 16; i++) + { + asm (""); + vf1[i] = 17.0f + i; + vd1[i] = 19.0 + i; + vi1[i] = 21 + i; + vl1[i] = 23L + i; + } + for (i = 0; i < N; i++) + { + asm (""); + k[i] = (i * 731) & (N - 1); + l[i] = (i * 657) & (N - 1); + } + + f1 (); + f2 (); + for (i = 0; i < N; i++) + if (vf2[i] != ((i * 731) & (N - 1)) + 17 + || vi2[i] != ((i * 731) & (N - 1)) + 21) + abort (); + + f3 (12); + f4 (14); + for (i = 0; i < N; i++) + if (vf2[i] != ((i * 731) & (N - 1)) + 17 + 12 + || vi2[i] != ((i * 731) & (N - 1)) + 21 + 14) + abort (); + + f5 (); + f6 (); + for (i = 0; i < N; i++) + if (vd2[i] != ((i * 731) & (N - 1)) + 19 + || vl2[i] != ((i * 731) & (N - 1)) + 23) + abort (); + + f7 (6); + f8 (3); + for (i = 0; i < N; i++) + if (vd2[i] != ((i * 731) & (N - 1)) + 19 + 6 + || vl2[i] != ((i * 731) & (N - 1)) + 23 + 3) + abort (); + + f9 (); + f10 (); + for (i = 0; i < N; i++) + if (vf2[i] != ((i * 657) & (N - 1)) + 17 + || vi2[i] != ((i * 657) & (N - 1)) + 21) + abort (); + + f11 (7); + f12 (9); + for (i = 0; i < N; i++) + if (vf2[i] != ((i * 657) & (N - 1)) + 17 + 7 + || vi2[i] != ((i * 657) & (N - 1)) + 21 + 9) + abort (); + + f13 (); + f14 (); + for (i = 0; i < N; i++) + if (vd2[i] != ((i * 657) & (N - 1)) + 19 + || vl2[i] != ((i * 657) & (N - 1)) + 23) + abort (); + + f15 (2); + f16 (12); + for (i = 0; i < N; i++) + if (vd2[i] != ((i * 657) & (N - 1)) + 19 + 2 + || vl2[i] != ((i * 657) & (N - 1)) + 23 + 12) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-gather-2.c b/gcc/testsuite/gcc.target/i386/avx512f-gather-2.c new file mode 100644 index 00000000000..86641926149 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-gather-2.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ /* PR59617 */ +/* { dg-options "-O3 -mavx512f -fdump-tree-vect-details" } */ + +#include "avx512f-gather-1.c" + +/* { dg-final { scan-assembler-not "gather\[^\n\]*ymm\[^\n\]*ymm" { xfail { *-*-* } } } } */ /* PR59617 */ +/* { dg-final { scan-assembler-not "gather\[^\n\]*xmm\[^\n\]*ymm" { xfail { *-*-* } } } } */ /* PR59617 */ +/* { dg-final { scan-assembler-not "gather\[^\n\]*ymm\[^\n\]*xmm" { xfail { *-*-* } } } } */ /* PR59617 */ +/* { dg-final { scan-assembler-not "gather\[^\n\]*xmm\[^\n\]*xmm" { xfail { lp64 } } } } */ /* PR59617 */ +/* { dg-final { scan-tree-dump-times "note: vectorized 1 loops in function" 16 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512f-gather-3.c b/gcc/testsuite/gcc.target/i386/avx512f-gather-3.c new file mode 100644 index 00000000000..5e20dd8898a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-gather-3.c @@ -0,0 +1,169 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512f } */ +/* { dg-options "-O3 -mavx512f -ffast-math" } */ + +#include "avx512f-check.h" + +#define N 1024 +float f[N]; +double d[N]; +int k[N]; +float *l[N]; +double *n[N]; +int **m[N]; +long q[N]; +long long **o[N]; +long long t[N]; +long long *r[N]; +int *s[N]; + +__attribute__((noinline, noclone)) float +f1 (void) +{ + int i; + float g = 0.0; + for (i = 0; i < N / 2; i++) + g += f[k[i]]; + return g; +} + +__attribute__((noinline, noclone)) float +f2 (float *p) +{ + int i; + float g = 0.0; + for (i = 0; i < N / 2; i++) + g += p[k[i]]; + return g; +} + +__attribute__((noinline, noclone)) float +f3 (void) +{ + int i; + float g = 0.0; + for (i = 0; i < N / 2; i++) + g += *l[i]; + return g; +} + +__attribute__((noinline, noclone)) int +f4 (void) +{ + int i; + int g = 0; + for (i = 0; i < N / 2; i++) + g += **m[i]; + return g; +} + +__attribute__((noinline, noclone)) double +f5 (void) +{ + int i; + double g = 0.0; + for (i = 0; i < N / 2; i++) + g += d[k[i]]; + return g; +} + +__attribute__((noinline, noclone)) double +f6 (double *p) +{ + int i; + double g = 0.0; + for (i = 0; i < N / 2; i++) + g += p[k[i]]; + return g; +} + +__attribute__((noinline, noclone)) double +f7 (void) +{ + int i; + double g = 0.0; + for (i = 0; i < N / 2; i++) + g += *n[i]; + return g; +} + +__attribute__((noinline, noclone)) int +f8 (void) +{ + int i; + int g = 0; + for (i = 0; i < N / 2; i++) + g += **o[i]; + return g; +} + +__attribute__((noinline, noclone)) float +f9 (void) +{ + int i; + float g = 0.0; + for (i = 0; i < N / 2; i++) + g += f[q[i]]; + return g; +} + +__attribute__((noinline, noclone)) float +f10 (float *p) +{ + int i; + float g = 0.0; + for (i = 0; i < N / 2; i++) + g += p[q[i]]; + return g; +} + +__attribute__((noinline, noclone)) double +f11 (void) +{ + int i; + double g = 0.0; + for (i = 0; i < N / 2; i++) + g += d[q[i]]; + return g; +} + +__attribute__((noinline, noclone)) double +f12 (double *p) +{ + int i; + double g = 0.0; + for (i = 0; i < N / 2; i++) + g += p[q[i]]; + return g; +} + +static void +avx512f_test (void) +{ + int i; + + for (i = 0; i < N; i++) + { + asm (""); + f[i] = -256.0f + i; + d[i] = -258.0 + i; + k[i] = (i * 731) & (N - 1); + q[i] = (i * 657) & (N - 1); + t[i] = (i * 657) & (N - 1); + l[i] = &f[(i * 239) & (N - 1)]; + n[i] = &d[(i * 271) & (N - 1)]; + r[i] = &t[(i * 323) & (N - 1)]; + s[i] = &k[(i * 565) & (N - 1)]; + m[i] = &s[(i * 13) & (N - 1)]; + o[i] = &r[(i * 19) & (N - 1)]; + } + + if (f1 () != 136448.0f || f2 (f) != 136448.0f || f3 () != 130304.0) + abort (); + if (f4 () != 261376 || f5 () != 135424.0 || f6 (d) != 135424.0) + abort (); + if (f7 () != 129280.0 || f8 () != 259840L || f9 () != 130816.0f) + abort (); + if (f10 (f) != 130816.0f || f11 () != 129792.0 || f12 (d) != 129792.0) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-gather-4.c b/gcc/testsuite/gcc.target/i386/avx512f-gather-4.c new file mode 100644 index 00000000000..bea8c24b8cd --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-gather-4.c @@ -0,0 +1,38 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512f } */ +/* { dg-options "-O3 -mavx512f" } */ + +#include "avx512f-check.h" + +#define N 1024 +int a[N], b[N], c[N], d[N]; + +__attribute__((noinline, noclone)) void +foo (float *__restrict p, float *__restrict q, float *__restrict r, + int s1, int s2, int s3) +{ + int i; + for (i = 0; i < N; i++) + p[i] = q[a[i] * s1 + b[i] * s2 + s3] * r[c[i] * s1 + d[i] * s2 + s3]; +} + +static void +avx512f_test (void) +{ + int i; + float e[N], f[N], g[N]; + for (i = 0; i < N; i++) + { + a[i] = (i * 7) & (N / 8 - 1); + b[i] = (i * 13) & (N / 8 - 1); + c[i] = (i * 23) & (N / 8 - 1); + d[i] = (i * 5) & (N / 8 - 1); + e[i] = 16.5 + i; + f[i] = 127.5 - i; + } + foo (g, e, f, 3, 2, 4); + for (i = 0; i < N; i++) + if (g[i] != (float) ((20.5 + a[i] * 3 + b[i] * 2) + * (123.5 - c[i] * 3 - d[i] * 2))) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-gather-5.c b/gcc/testsuite/gcc.target/i386/avx512f-gather-5.c new file mode 100644 index 00000000000..5edd446cb73 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-gather-5.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -mavx512f" } */ + +#include "avx512f-gather-4.c" + +/* { dg-final { scan-assembler "gather\[^\n\]*zmm" { xfail { *-*-* } } } } */ /* PR59617 */ +/* { dg-final { scan-assembler-not "gather\[^\n\]*ymm\[^\n\]*ymm" { xfail { *-*-* } } } } */ /* PR59617 */ +/* { dg-final { scan-assembler-not "gather\[^\n\]*xmm\[^\n\]*ymm" } } */ +/* { dg-final { scan-assembler-not "gather\[^\n\]*ymm\[^\n\]*xmm" } } */ +/* { dg-final { scan-assembler-not "gather\[^\n\]*xmm\[^\n\]*xmm" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512f-helper.h b/gcc/testsuite/gcc.target/i386/avx512f-helper.h new file mode 100644 index 00000000000..61b2e90d197 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-helper.h @@ -0,0 +1,96 @@ +/* This file is used to reduce a number of runtime tests for AVX512F + instructions. Idea is to create one file per instruction - + avx512f-insn-2.c - using defines from this file instead of intrinsic + name, vector length etc. Then dg-options are set with appropriate + -Dwhatever options in that .c file producing tests for specific + length. */ + +#if defined (AVX512F) +#include "avx512f-check.h" +#elif defined (AVX512ER) +#include "avx512er-check.h" +#elif defined (AVX512CD) +#include "avx512cd-check.h" +#endif + +/* Macros expansion. */ +#define CONCAT(a,b,c) a ## b ## c +#define EVAL(a,b,c) CONCAT(a,b,c) + +/* Value to be written into destination. + We have one value for all types so it must be small enough + to fit into signed char. */ +#define DEFAULT_VALUE 117 + +#define MAKE_MASK_MERGE(NAME, TYPE) \ +static void \ +__attribute__((noinline, unused)) \ +merge_masking_##NAME (TYPE *arr, unsigned long long mask, int size) \ +{ \ + int i; \ + for (i = 0; i < size; i++) \ + { \ + arr[i] = (mask & (1LL << i)) ? arr[i] : DEFAULT_VALUE; \ + } \ +} + +MAKE_MASK_MERGE(i_b, char) +MAKE_MASK_MERGE(i_w, short) +MAKE_MASK_MERGE(i_d, int) +MAKE_MASK_MERGE(i_q, long long) +MAKE_MASK_MERGE(, float) +MAKE_MASK_MERGE(d, double) + +#define MASK_MERGE(TYPE) merge_masking_##TYPE + +#define MAKE_MASK_ZERO(NAME, TYPE) \ +static void \ +__attribute__((noinline, unused)) \ +zero_masking_##NAME (TYPE *arr, unsigned long long mask, int size) \ +{ \ + int i; \ + for (i = 0; i < size; i++) \ + { \ + arr[i] = (mask & (1LL << i)) ? arr[i] : 0; \ + } \ +} + +MAKE_MASK_ZERO(i_b, char) +MAKE_MASK_ZERO(i_w, short) +MAKE_MASK_ZERO(i_d, int) +MAKE_MASK_ZERO(i_q, long long) +MAKE_MASK_ZERO(, float) +MAKE_MASK_ZERO(d, double) + +#define MASK_ZERO(TYPE) zero_masking_##TYPE + +/* Intrinsic being tested. */ +#define INTRINSIC(NAME) EVAL(_mm, AVX512F_LEN, NAME) +/* Unions used for testing (for example union512d, union256d etc.). */ +#define UNION_TYPE(SIZE, NAME) EVAL(union, SIZE, NAME) +/* Corresponding union check. */ +#define UNION_CHECK(SIZE, NAME) EVAL(check_union, SIZE, NAME) +/* Corresponding fp union check. */ +#define UNION_FP_CHECK(SIZE, NAME) EVAL(check_fp_union, SIZE, NAME) +/* Corresponding rough union check. */ +#define UNION_ROUGH_CHECK(SIZE, NAME) \ + EVAL(check_rough_union, SIZE, NAME) +/* Function which tests intrinsic for given length. */ +#define TEST EVAL(test_, AVX512F_LEN,) +/* Function which calculates result. */ +#define CALC EVAL(calc_, AVX512F_LEN,) + +#define AVX512F_LEN 512 +#define AVX512F_LEN_HALF 256 +static void test_512 (); + +#if defined (AVX512F) +void +avx512f_test (void) { test_512 (); } +#elif defined (AVX512CD) +void +avx512cd_test (void) { test_512 (); } +#elif defined (AVX512ER) +void +avx512er_test (void) { test_512 (); } +#endif diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-1.c new file mode 100644 index 00000000000..7a0ee9978fd --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpgatherdd\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512i x, idx; +volatile __mmask16 m16; +int *base; + +void extern +avx512f_test (void) +{ + x = _mm512_i32gather_epi32 (idx, base, 8); + x = _mm512_mask_i32gather_epi32 (x, m16, idx, base, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-2.c new file mode 100644 index 00000000000..d89ef048d82 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherd512-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_gatherdd (int *res, __mmask16 m16, int *idx, + int *src, int scale, int *r) +{ + int i; + + for (i = 0; i < 16; i++) + { + if (m16 & (1 << i)) + r[i] = *(int *) (((unsigned char *) src) + idx[i] * scale); + else + r[i] = res[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union512i_d idx, res; + int src[16]; + int res_ref[16]; + __mmask16 m16 = 0xBC5D; + + for (i = 0; i < 16; i++) + { + src[i] = 1973 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 4) >> 1; + } + + res.x = _mm512_mask_i32gather_epi32 (res.x, m16, idx.x, src, SCALE); + compute_gatherdd (res.a, m16, idx.a, src, SCALE, res_ref); + + if (check_union512i_d (res, res_ref)) + abort (); + + res.x = _mm512_i32gather_epi32 (idx.x, src, SCALE); + compute_gatherdd (res.a, 0xFFFF, idx.a, src, SCALE, res_ref); + + if (check_union512i_d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-1.c new file mode 100644 index 00000000000..88b9ae62455 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vgatherdpd\[ \\t\]+\[^\n\]*ymm\[0-9\]\[^\n\]*zmm\[0-9\]{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512d x; +volatile __m256i idx; +volatile __mmask8 m8; +double *base; + +void extern +avx512f_test (void) +{ + x = _mm512_i32gather_pd (idx, base, 8); + x = _mm512_mask_i32gather_pd (x, m8, idx, base, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-2.c new file mode 100644 index 00000000000..3af491548ba --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherpd512-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_gatherdpd (double *res, __mmask8 m8, int *idx, + double *src, int scale, double *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + r[i] = *(double *) (((unsigned char *) src) + idx[i] * scale); + else + r[i] = res[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union512d res; + union256i_d idx; + double src[8]; + double res_ref[8]; + __mmask8 m8 = 0xC5; + + res.x = _mm512_setzero_pd(); + + for (i = 0; i < 8; i++) + { + src[i] = 2.718281828459045 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 8) >> 1; + } + + res.x = _mm512_mask_i32gather_pd (res.x, m8, idx.x, src, SCALE); + compute_gatherdpd (res.a, m8, idx.a, src, SCALE, res_ref); + + if (check_union512d (res, res_ref)) + abort (); + + res.x = _mm512_i32gather_pd (idx.x, src, SCALE); + compute_gatherdpd (res.a, 0xFF, idx.a, src, SCALE, res_ref); + + if (check_union512d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-1.c new file mode 100644 index 00000000000..6abc2301d57 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vgatherdps\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512 x; +volatile __m512i idx; +volatile __mmask16 m16; +float *base; + +void extern +avx512f_test (void) +{ + x = _mm512_i32gather_ps (idx, base, 8); + x = _mm512_mask_i32gather_ps (x, m16, idx, base, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-2.c new file mode 100644 index 00000000000..691413ab2ea --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherps512-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_gatherdps (float *res, __mmask16 m16, int *idx, + float *src, int scale, float *r) +{ + int i; + + for (i = 0; i < 16; i++) + { + if (m16 & (1 << i)) + r[i] = *(float *) (((unsigned char *) src) + idx[i] * scale); + else + r[i] = res[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union512 res; + union512i_d idx; + float src[16]; + float res_ref[16]; + __mmask16 m16 = 0xBC5D; + + res.x = _mm512_setzero_ps(); + + for (i = 0; i < 16; i++) + { + src[i] = 2.718281828459045 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 4) >> 1; + } + + res.x = _mm512_mask_i32gather_ps (res.x, m16, idx.x, src, SCALE); + compute_gatherdps (res.a, m16, idx.a, src, SCALE, res_ref); + + if (check_union512 (res, res_ref)) + abort (); + + res.x = _mm512_i32gather_ps (idx.x, src, SCALE); + compute_gatherdps (res.a, 0xFFFF, idx.a, src, SCALE, res_ref); + + if (check_union512 (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-1.c new file mode 100644 index 00000000000..ee4491eb1db --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpgatherdq\[ \\t\]+\[^\n\]*ymm\[0-9\]\[^\n\]*zmm\[0-9\]{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512i x; +volatile __m256i idx; +volatile __mmask8 m8; +long long *base; + +void extern +avx512f_test (void) +{ + x = _mm512_i32gather_epi64 (idx, base, 8); + x = _mm512_mask_i32gather_epi64 (x, m8, idx, base, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-2.c new file mode 100644 index 00000000000..4d472faa2ab --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32gatherq512-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_gatherdq (long long *res, __mmask8 m8, int *idx, + long long *src, int scale, long long *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + r[i] = *(long long *) + (((unsigned char *) src) + idx[i] * scale); + else + r[i] = res[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union256i_d idx; + union512i_q res; + long long src[8]; + long long res_ref[8]; + __mmask8 m8 = 0xC5; + + for (i = 0; i < 8; i++) + { + src[i] = 1983 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 8) >> 1; + } + + res.x = _mm512_mask_i32gather_epi64 (res.x, m8, idx.x, src, SCALE); + compute_gatherdq (res.a, m8, idx.a, src, SCALE, res_ref); + + if (check_union512i_q (res, res_ref)) + abort (); + + res.x = _mm512_i32gather_epi64 (idx.x, src, SCALE); + compute_gatherdq (res.a, 0xFF, idx.a, src, SCALE, res_ref); + + if (check_union512i_q (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32scatterd512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterd512-1.c new file mode 100644 index 00000000000..7a5c311661e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterd512-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpscatterdd\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512i src, idx; +volatile __mmask16 m16; +int *addr; + +void extern +avx512f_test (void) +{ + _mm512_i32scatter_epi32 (addr, idx, src, 8); + _mm512_mask_i32scatter_epi32 (addr, m16, idx, src, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32scatterd512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterd512-2.c new file mode 100644 index 00000000000..569690021ae --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterd512-2.c @@ -0,0 +1,51 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_scatterdd (__mmask16 m16, int *idx, + int *src, int scale, int *r) +{ + int i; + + for (i = 0; i < 16; i++) + { + if (m16 & (1 << i)) + *(int *) (((unsigned char *) r) + idx[i] * scale) = src[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union512i_d src, idx; + int res[16] = { 0 }; + int res_ref[16] = { 0 }; + __mmask16 m16 = 0xBC5D; + + for (i = 0; i < 16; i++) + { + src.a[i] = 1973 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 4) >> 1; + } + + _mm512_mask_i32scatter_epi32 (res, m16, idx.x, src.x, SCALE); + compute_scatterdd (m16, idx.a, src.a, SCALE, res_ref); + + if (checkVi (res, res_ref, 16)) + abort (); + + _mm512_i32scatter_epi32 (res, idx.x, src.x, SCALE); + compute_scatterdd (0xFFFF, idx.a, src.a, SCALE, res_ref); + + if (checkVi (res, res_ref, 16)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32scatterpd512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterpd512-1.c new file mode 100644 index 00000000000..6c5ddc0a9c8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterpd512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vscatterdpd\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*ymm\[0-9\]\[^\n\]*{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512d src; +volatile __m256i idx; +volatile __mmask8 m8; +double *addr; + +void extern +avx512f_test (void) +{ + _mm512_i32scatter_pd (addr, idx, src, 8); + _mm512_mask_i32scatter_pd (addr, m8, idx, src, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32scatterpd512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterpd512-2.c new file mode 100644 index 00000000000..987b3f437f0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterpd512-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_scatterdpd (__mmask8 m8, int *idx, double *src, + int scale, double *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + *(double *) (((unsigned char *) r) + idx[i] * scale) = src[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union512d src; + union256i_d idx; + double res[8] = { 0.0 }; + double res_ref[8] = { 0.0 }; + __mmask8 m8 = 0xC5; + + for (i = 0; i < 8; i++) + { + src.a[i] = 2.718281828459045 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 8) >> 1; + } + + _mm512_mask_i32scatter_pd (res, m8, idx.x, src.x, SCALE); + compute_scatterdpd (m8, idx.a, src.a, SCALE, res_ref); + + if (checkVd (res, res_ref, 8)) + abort (); + + _mm512_i32scatter_pd (res, idx.x, src.x, SCALE); + compute_scatterdpd (0xFF, idx.a, src.a, SCALE, res_ref); + + if (checkVd (res, res_ref, 8)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32scatterps512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterps512-1.c new file mode 100644 index 00000000000..c24344a28d6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterps512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vscatterdps\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512 src; +volatile __m512i idx; +volatile __mmask16 m16; +float *addr; + +void extern +avx512f_test (void) +{ + _mm512_i32scatter_ps (addr, idx, src, 8); + _mm512_mask_i32scatter_ps (addr, m16, idx, src, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32scatterps512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterps512-2.c new file mode 100644 index 00000000000..8604c8d5c1c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterps512-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_scatterdps (__mmask16 m16, int *idx, + float *src, int scale, float *r) +{ + int i; + + for (i = 0; i < 16; i++) + { + if (m16 & (1 << i)) + *(float *) (((unsigned char *) r) + idx[i] * scale) = src[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union512 src; + union512i_d idx; + float res[16] = { 0.0 }; + float res_ref[16] = { 0.0 }; + __mmask16 m16 = 0xBC5D; + + for (i = 0; i < 16; i++) + { + src.a[i] = 2.718281828459045 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 4) >> 1; + } + + _mm512_mask_i32scatter_ps (res, m16, idx.x, src.x, SCALE); + compute_scatterdps (m16, idx.a, src.a, SCALE, res_ref); + + if (checkVf (res, res_ref, 16)) + abort (); + + _mm512_i32scatter_ps (res, idx.x, src.x, SCALE); + compute_scatterdps (0xFFFF, idx.a, src.a, SCALE, res_ref); + + if (checkVf (res, res_ref, 16)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32scatterq512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterq512-1.c new file mode 100644 index 00000000000..5b28175465a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterq512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpscatterdq\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*ymm\[0-9\]\[^\n\]*{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512i src; +volatile __m256i idx; +volatile __mmask8 m8; +long long *addr; + +void extern +avx512f_test (void) +{ + _mm512_i32scatter_epi64 (addr, idx, src, 8); + _mm512_mask_i32scatter_epi64 (addr, m8, idx, src, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i32scatterq512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterq512-2.c new file mode 100644 index 00000000000..fe5c3ade1a9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i32scatterq512-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_scatterdq (__mmask8 m8, int *idx, long long *src, + int scale, long long *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + *(long long *) (((unsigned char *) r) + idx[i] * scale) = + src[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union256i_d idx; + union512i_q src; + long long res[8] = { 0 }; + long long res_ref[8] = { 0 }; + __mmask8 m8 = 0xC5; + + for (i = 0; i < 8; i++) + { + src.a[i] = 1983 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 8) >> 1; + } + + _mm512_mask_i32scatter_epi64 (res, m8, idx.x, src.x, SCALE); + compute_scatterdq (m8, idx.a, src.a, SCALE, res_ref); + + if (checkVl (res, res_ref, 8)) + abort (); + + _mm512_i32scatter_epi64 (res, idx.x, src.x, SCALE); + compute_scatterdq (0xFF, idx.a, src.a, SCALE, res_ref); + + if (checkVl (res, res_ref, 8)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64gatherd512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherd512-1.c new file mode 100644 index 00000000000..66dcf6f60c4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherd512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpgatherqd\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*ymm\[0-9\]{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m256i x; +volatile __m512i idx; +volatile __mmask8 m8; +int *base; + +void extern +avx512f_test (void) +{ + x = _mm512_i64gather_epi32 (idx, base, 8); + x = _mm512_mask_i64gather_epi32 (x, m8, idx, base, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64gatherd512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherd512-2.c new file mode 100644 index 00000000000..dff818db4ea --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherd512-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_gatherqd (int *res, __mmask8 m8, long long *idx, + int *src, int scale, int *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + r[i] = *(int *) (((unsigned char *) src) + idx[i] * scale); + else + r[i] = res[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union256i_d res; + union512i_q idx; + int src[8]; + int res_ref[8]; + __mmask8 m8 = 0xC5; + + for (i = 0; i < 8; i++) + { + src[i] = 1973 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (32 - (i + 1) * 4) >> 1; + } + + res.x = _mm512_mask_i64gather_epi32 (res.x, m8, idx.x, src, SCALE); + compute_gatherqd (res.a, m8, idx.a, src, SCALE, res_ref); + + if (check_union256i_d (res, res_ref)) + abort (); + + res.x = _mm512_i64gather_epi32 (idx.x, src, SCALE); + compute_gatherqd (res.a, 0xFF, idx.a, src, SCALE, res_ref); + + if (check_union256i_d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64gatherpd512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherpd512-1.c new file mode 100644 index 00000000000..4a3df890497 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherpd512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vgatherqpd\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512d x; +volatile __m512i idx; +volatile __mmask8 m8; +double *base; + +void extern +avx512f_test (void) +{ + x = _mm512_i64gather_pd (idx, base, 8); + x = _mm512_mask_i64gather_pd (x, m8, idx, base, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64gatherpd512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherpd512-2.c new file mode 100644 index 00000000000..7cb6d82eb00 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherpd512-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_gatherqpd (double *res, __mmask8 m8, long long *idx, + double *src, int scale, double *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + r[i] = *(double *) (((unsigned char *) src) + idx[i] * scale); + else + r[i] = res[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union512d res; + union512i_q idx; + double src[8]; + double res_ref[8]; + __mmask8 m8 = 0xC5; + + res.x = _mm512_setzero_pd(); + + for (i = 0; i < 8; i++) + { + src[i] = 2.718281828459045 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 8) >> 1; + } + + res.x = _mm512_mask_i64gather_pd (res.x, m8, idx.x, src, SCALE); + compute_gatherqpd (res.a, m8, idx.a, src, SCALE, res_ref); + + if (check_union512d (res, res_ref)) + abort (); + + res.x = _mm512_i64gather_pd (idx.x, src, SCALE); + compute_gatherqpd (res.a, 0xFF, idx.a, src, SCALE, res_ref); + + if (check_union512d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64gatherps512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherps512-1.c new file mode 100644 index 00000000000..4caee0569ba --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherps512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vgatherqps\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*ymm\[0-9\]{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m256 x; +volatile __m512i idx; +volatile __mmask8 m8; +float *base; + +void extern +avx512f_test (void) +{ + x = _mm512_i64gather_ps (idx, base, 8); + x = _mm512_mask_i64gather_ps (x, m8, idx, base, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64gatherps512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherps512-2.c new file mode 100644 index 00000000000..8ed0fcef409 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherps512-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_gatherqps (float *res, __mmask8 m8, long long *idx, + float *src, int scale, float *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + r[i] = *(float *) (((unsigned char *) src) + idx[i] * scale); + else + r[i] = res[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union256 res; + union512i_q idx; + float src[8]; + float res_ref[8]; + __mmask8 m8 = 0xC5; + + res.x = _mm256_setzero_ps(); + + for (i = 0; i < 8; i++) + { + src[i] = 2.718281828459045 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (32 - (i + 1) * 4) >> 1; + } + + res.x = _mm512_mask_i64gather_ps (res.x, m8, idx.x, src, SCALE); + compute_gatherqps (res.a, m8, idx.a, src, SCALE, res_ref); + + if (check_union256 (res, res_ref)) + abort (); + + res.x = _mm512_i64gather_ps (idx.x, src, SCALE); + compute_gatherqps (res.a, 0xFF, idx.a, src, SCALE, res_ref); + + if (check_union256 (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64gatherq512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherq512-1.c new file mode 100644 index 00000000000..20d39e74849 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherq512-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpgatherqq\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512i x, idx; +volatile __mmask8 m8; +long long *base; + +void extern +avx512f_test (void) +{ + x = _mm512_i64gather_epi64 (idx, base, 8); + x = _mm512_mask_i64gather_epi64 (x, m8, idx, base, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64gatherq512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherq512-2.c new file mode 100644 index 00000000000..134fd18b82d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64gatherq512-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_gatherqq (long long *res, __mmask8 m8, long long *idx, + long long *src, int scale, long long *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + r[i] = *(long long *) + (((unsigned char *) src) + idx[i] * scale); + else + r[i] = res[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union512i_q idx, res; + long long src[8]; + long long res_ref[8]; + __mmask8 m8 = 0xC5; + + for (i = 0; i < 8; i++) + { + src[i] = 1983 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 8) >> 1; + } + + res.x = _mm512_mask_i64gather_epi64 (res.x, m8, idx.x, src, SCALE); + compute_gatherqq (res.a, m8, idx.a, src, SCALE, res_ref); + + if (check_union512i_q (res, res_ref)) + abort (); + + res.x = _mm512_i64gather_epi64 (idx.x, src, SCALE); + compute_gatherqq (res.a, 0xFF, idx.a, src, SCALE, res_ref); + + if (check_union512i_q (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64scatterd512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterd512-1.c new file mode 100644 index 00000000000..a2f5275d67e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterd512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpscatterqd\[ \\t\]+\[^\n\]*ymm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m256i src; +volatile __m512i idx; +volatile __mmask8 m8; +int *addr; + +void extern +avx512f_test (void) +{ + _mm512_i64scatter_epi32 (addr, idx, src, 8); + _mm512_mask_i64scatter_epi32 (addr, m8, idx, src, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64scatterd512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterd512-2.c new file mode 100644 index 00000000000..877ef906205 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterd512-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_scatterqd (__mmask8 m8, long long *idx, + int *src, int scale, int *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + *(int *) (((unsigned char *) r) + idx[i] * scale) = src[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union256i_d src; + union512i_q idx; + int res[8] = { 0 }; + int res_ref[8] = { 0 }; + __mmask8 m8 = 0xC5; + + for (i = 0; i < 8; i++) + { + src.a[i] = 1973 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (32 - (i + 1) * 4) >> 1; + } + + _mm512_mask_i64scatter_epi32 (res, m8, idx.x, src.x, SCALE); + compute_scatterqd (m8, idx.a, src.a, SCALE, res_ref); + + if (checkVi (res, res_ref, 8)) + abort (); + + _mm512_i64scatter_epi32 (res, idx.x, src.x, SCALE); + compute_scatterqd (0xFF, idx.a, src.a, SCALE, res_ref); + + if (checkVi (res, res_ref, 8)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64scatterpd512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterpd512-1.c new file mode 100644 index 00000000000..288a2183b0c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterpd512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vscatterqpd\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512d src; +volatile __m512i idx; +volatile __mmask8 m8; +double *addr; + +void extern +avx512f_test (void) +{ + _mm512_i64scatter_pd (addr, idx, src, 8); + _mm512_mask_i64scatter_pd (addr, m8, idx, src, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64scatterpd512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterpd512-2.c new file mode 100644 index 00000000000..2ded7bc7628 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterpd512-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_scatterqpd (__mmask8 m8, long long *idx, double *src, + int scale, double *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + *(double *) (((unsigned char *) r) + idx[i] * scale) = src[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union512d src; + union512i_q idx; + double res[8] = { 0.0 }; + double res_ref[8] = { 0.0 }; + __mmask8 m8 = 0xC5; + + for (i = 0; i < 8; i++) + { + src.a[i] = 2.718281828459045 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 8) >> 1; + } + + _mm512_mask_i64scatter_pd (res, m8, idx.x, src.x, SCALE); + compute_scatterqpd (m8, idx.a, src.a, SCALE, res_ref); + + if (checkVd (res, res_ref, 8)) + abort (); + + _mm512_i64scatter_pd (res, idx.x, src.x, SCALE); + compute_scatterqpd (0xFF, idx.a, src.a, SCALE, res_ref); + + if (checkVd (res, res_ref, 8)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64scatterps512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterps512-1.c new file mode 100644 index 00000000000..6a0b05d7997 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterps512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vscatterqps\[ \\t\]+\[^\n\]*ymm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m256 src; +volatile __m512i idx; +volatile __mmask8 m8; +float *addr; + +void extern +avx512f_test (void) +{ + _mm512_i64scatter_ps (addr, idx, src, 8); + _mm512_mask_i64scatter_ps (addr, m8, idx, src, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64scatterps512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterps512-2.c new file mode 100644 index 00000000000..4a74d4667ba --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterps512-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_scatterqps (__mmask8 m8, long long *idx, + float *src, int scale, float *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + *(float *) (((unsigned char *) r) + idx[i] * scale) = src[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union256 src; + union512i_q idx; + float res[8] = { 0.0 }; + float res_ref[8] = { 0.0 }; + __mmask8 m8 = 0xC5; + + for (i = 0; i < 8; i++) + { + src.a[i] = 2.718281828459045 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (32 - (i + 1) * 4) >> 1; + } + + _mm512_mask_i64scatter_ps (res, m8, idx.x, src.x, SCALE); + compute_scatterqps (m8, idx.a, src.a, SCALE, res_ref); + + if (checkVf (res, res_ref, 8)) + abort (); + + _mm512_i64scatter_ps (res, idx.x, src.x, SCALE); + compute_scatterqps (0xFF, idx.a, src.a, SCALE, res_ref); + + if (checkVf (res, res_ref, 8)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64scatterq512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterq512-1.c new file mode 100644 index 00000000000..10a7a4be6f4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterq512-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpscatterqq\[ \\t\]+\[^\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}" 2 } } */ + +#include + +volatile __m512i src, idx; +volatile __mmask8 m8; +long long *addr; + +void extern +avx512f_test (void) +{ + _mm512_i64scatter_epi64 (addr, idx, src, 8); + _mm512_mask_i64scatter_epi64 (addr, m8, idx, src, 8); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-i64scatterq512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterq512-2.c new file mode 100644 index 00000000000..975973f34f9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-i64scatterq512-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +#define SCALE 2 + +static void +compute_scatterqq (__mmask8 m8, long long *idx, long long *src, + int scale, long long *r) +{ + int i; + + for (i = 0; i < 8; i++) + { + if (m8 & (1 << i)) + *(long long *) (((unsigned char *) r) + idx[i] * scale) = + src[i]; + } +} + +static void +avx512f_test (void) +{ + int i; + union512i_q src, idx; + long long res[8] = { 0 }; + long long res_ref[8] = { 0 }; + __mmask8 m8 = 0xC5; + + for (i = 0; i < 8; i++) + { + src.a[i] = 1983 * (i + 1) * (i + 2); + + /* About to gather in reverse order, + divide by 2 to demonstrate scale */ + idx.a[i] = (64 - (i + 1) * 8) >> 1; + } + + _mm512_mask_i64scatter_epi64 (res, m8, idx.x, src.x, SCALE); + compute_scatterqq (m8, idx.a, src.a, SCALE, res_ref); + + if (checkVl (res, res_ref, 8)) + abort (); + + _mm512_i64scatter_epi64 (res, idx.x, src.x, SCALE); + compute_scatterqq (0xFF, idx.a, src.a, SCALE, res_ref); + + if (checkVl (res, res_ref, 8)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-inline-asm.c b/gcc/testsuite/gcc.target/i386/avx512f-inline-asm.c new file mode 100644 index 00000000000..4e675e09618 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-inline-asm.c @@ -0,0 +1,68 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static void +init_vpadd_mask (int* dst, int *src1, int *src2, int seed) +{ + int i; + + for (i = 0; i < 16; i++) + { + dst[i] = -1; + src1[i] = seed * 2 * i + 1; + src2[i] = seed * 2 * i; + } +} + +static inline void +calc_vpadd_mask_zeroed (int *dst, __mmask16 m, int *src1, int *src2) +{ + int i; + + for (i = 0; i < 16; i++) + { + if (m & (1 << i)) + dst[i] = src1[i] + src2[i]; + else + dst[i] = 0; + } +} + +void static +avx512f_test (void) +{ + /* Checking mask arithmetic instruction */ + + __mmask16 msk_dst, msk_src1, msk_src2, msk_dst_ref; + + msk_src1 = 0x0FFB; + msk_src2 = 0x0F0F; + + asm ("kandw\t%2, %1, %0" + : "=Yk" (msk_dst) + : "Yk" (msk_src1), "Yk" (msk_src2)); + + msk_dst_ref = _mm512_kand (msk_src1, msk_src2); + if (msk_dst != msk_dst_ref) + abort (); + + + /* Checking zero-masked vector instruction */ + union512i_d dst, src1, src2; + int dst_ref[16]; + + init_vpadd_mask (dst.a, src1.a, src2.a, 1); + init_vpadd_mask (dst_ref, src1.a, src2.a, 1); + + asm ("vpaddd\t%2, %1, %0 %{%3%}%{z%}" + : "=x" (dst.x) + : "x" (src1.x), "x" (src2.x), "k" (msk_dst)); + + calc_vpadd_mask_zeroed (dst_ref, msk_dst, src1.a, src2.a); + + if (check_union512i_d (dst, dst_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-kandnw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-kandnw-1.c new file mode 100644 index 00000000000..3d777c83015 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-kandnw-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "kandnw\[ \\t\]+\[^\n\]*%k\[1-7\]" 1 } } */ + +#include + +void +avx512f_test () +{ + __mmask16 k1, k2, k3; + volatile __m512 x; + + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (1) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (2) ); + + k3 = _mm512_kandn (k1, k2); + x = _mm512_mask_add_ps (x, k3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-kandw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-kandw-1.c new file mode 100644 index 00000000000..19a3cf4dbc3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-kandw-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "kandw\[ \\t\]+\[^\n\]*%k\[1-7\]" 1 } } */ + +#include + +void +avx512f_test () +{ + __mmask16 k1, k2, k3; + volatile __m512 x; + + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (1) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (2) ); + + k3 = _mm512_kand (k1, k2); + x = _mm512_mask_add_ps (x, k3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-klogic-2.c b/gcc/testsuite/gcc.target/i386/avx512f-klogic-2.c new file mode 100644 index 00000000000..df7fc9b7b7d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-klogic-2.c @@ -0,0 +1,58 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void +avx512f_test (void) +{ + __mmask16 dst, src1, src2, dst_ref; + volatile __m512 x; + + __asm__( "kmovw %1, %0" : "=k" (src1) : "r" (0x0FFF) ); + __asm__( "kmovw %1, %0" : "=k" (src2) : "r" (0x0F0F) ); + + dst = _mm512_kand (src1, src2); + x = _mm512_mask_add_ps (x, dst, x, x); + dst_ref = src1 & src2; + if (dst != dst_ref) + abort (); + + dst = _mm512_kandn (src1, src2); + x = _mm512_mask_add_ps (x, dst, x, x); + dst_ref = ~src1 & src2; + if (dst != dst_ref) + abort (); + + dst = _mm512_kor (src1, src2); + x = _mm512_mask_add_ps (x, dst, x, x); + dst_ref = src1 | src2; + if (dst != dst_ref) + abort (); + + dst = _mm512_kxnor (src1, src2); + x = _mm512_mask_add_ps (x, dst, x, x); + dst_ref = ~(src1 ^ src2); + if (dst != dst_ref) + abort (); + + dst = _mm512_kxor (src1, src2); + x = _mm512_mask_add_ps (x, dst, x, x); + dst_ref = src1 ^ src2; + if (dst != dst_ref) + abort (); + + dst = _mm512_knot (src1); + x = _mm512_mask_add_ps (x, dst, x, x); + dst_ref = ~src1; + if (dst != dst_ref) + abort (); + + dst = _mm512_kunpackb (src1, src2); + x = _mm512_mask_add_ps (x, dst, x, x); + dst_ref = 0xFF0F; + + if (dst != dst_ref) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-knotw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-knotw-1.c new file mode 100644 index 00000000000..a8f8f10b6be --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-knotw-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "knotw\[ \\t\]+\[^\n\]*%k\[1-7\]" 1 } } */ + +#include + +void +avx512f_test () +{ + __mmask16 k1, k2; + volatile __m512 x; + + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (45) ); + + k2 = _mm512_knot (k1); + + x = _mm512_mask_add_ps (x, k1, x, x); + x = _mm512_mask_add_ps (x, k2, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-kortestw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-kortestw-1.c new file mode 100644 index 00000000000..a3cdd4a1ab7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-kortestw-1.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -mavx512f" } */ +/* { dg-final { scan-assembler-times "kortestw\[ \\t\]+\[^\n\]*%k\[0-7\]" 4 } } */ + +#include + +void +avx512f_test () { + volatile __mmask16 k1; + __mmask16 k2; + volatile __mmask8 k3; + __mmask8 k4; + + volatile short r; + + /* Check that appropriate insn sequence is generated at -O0. */ + r = _mm512_kortestc (k1, k2); + r = _mm512_kortestz (k1, k2); + + r = _mm512_kortestc (k3, k4); + r = _mm512_kortestz (k3, k4); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-kortestw-2.c b/gcc/testsuite/gcc.target/i386/avx512f-kortestw-2.c new file mode 100644 index 00000000000..4b9cadcc2d1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-kortestw-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void +avx512f_test () { + volatile __mmask16 k1; + __mmask16 k2; + volatile short r = 0; + + /* Test kortestc. */ + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (0) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (45) ); + + r += _mm512_kortestc (k1, k2); + + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (0) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (0) ); + + r += _mm512_kortestc (k1, k2); + if (r) + abort (); + + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (-1) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (0) ); + + r += _mm512_kortestc (k1, k2); + if (!r) + abort (); + + r = 0; + /* Test kortestz. */ + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (0) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (45) ); + + r += _mm512_kortestz (k1, k2); + + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (-1) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (0) ); + + r += _mm512_kortestz (k1, k2); + if (r) + abort (); + + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (0) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (0) ); + + r += _mm512_kortestz (k1, k2); + if (!r) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-korw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-korw-1.c new file mode 100644 index 00000000000..96f837b96b0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-korw-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "korw\[ \\t\]+\[^\n\]*%k\[1-7\]" 1 } } */ + +#include + +void +avx512f_test () +{ + __mmask16 k1, k2, k3; + volatile __m512 x; + + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (1) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (2) ); + + k3 = _mm512_kor (k1, k2); + x = _mm512_mask_add_ps (x, k3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-1.c new file mode 100644 index 00000000000..bc55f8b301c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "kunpckbw\[ \\t\]+\[^\n\]*%k\[1-7\]" 1 } } */ + +#include + +void +avx512f_test () { + __mmask16 k1, k2, k3; + volatile __m512 x; + + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (1) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (2) ); + + k3 = _mm512_kunpackb (k1, k2); + x = _mm512_mask_add_ps (x, k3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-kxnorw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-kxnorw-1.c new file mode 100644 index 00000000000..8b12b2ac896 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-kxnorw-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "kxnorw\[ \\t\]+\[^\n\]*%k\[1-7\]" 1 } } */ + +#include + +void +avx512f_test () +{ + __mmask16 k1, k2, k3; + volatile __m512 x; + + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (1) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (2) ); + + k3 = _mm512_kxnor (k1, k2); + x = _mm512_mask_add_ps (x, k3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-kxorw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-kxorw-1.c new file mode 100644 index 00000000000..7ae1bc46204 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-kxorw-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "kxorw\[ \\t\]+\[^\n\]*%k\[1-7\]" 1 } } */ + +#include + +void +avx512f_test () +{ + __mmask16 k1, k2, k3; + volatile __m512 x; + + __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (1) ); + __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (2) ); + + k3 = _mm512_kxor (k1, k2); + x = _mm512_mask_add_ps (x, k3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-mask-type.h b/gcc/testsuite/gcc.target/i386/avx512f-mask-type.h new file mode 100644 index 00000000000..53c439e24d1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-mask-type.h @@ -0,0 +1,8 @@ +/* Type of mask. */ +#if SIZE <= 8 +#define MASK_TYPE __mmask8 +#define MASK_VALUE 0xB9 +#elif SIZE <= 16 +#define MASK_TYPE __mmask16 +#define MASK_VALUE 0xA6BA +#endif diff --git a/gcc/testsuite/gcc.target/i386/avx512f-os-support.h b/gcc/testsuite/gcc.target/i386/avx512f-os-support.h new file mode 100644 index 00000000000..deefa5e1105 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-os-support.h @@ -0,0 +1,10 @@ +/* Check if the OS supports executing AVX512F instructions. */ + +static int +avx512f_os_support (void) +{ + unsigned int eax, edx; + + __asm__ ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); + return (eax & 230) == 230; +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-rounding.c b/gcc/testsuite/gcc.target/i386/avx512f-rounding.c new file mode 100644 index 00000000000..254e3a418f1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-rounding.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -mavx512f" } */ + +#include + +int +test_rounding (__m128d x, int r) +{ + return _mm_cvt_roundsd_i32 (x, r); /* { dg-error "incorrect rounding operand." } */ +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-1.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-1.c new file mode 100644 index 00000000000..0ae82bc4138 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-1.c @@ -0,0 +1,45 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512 +__attribute__ ((noinline)) +foo (float *v) +{ + return _mm512_set_ps (v[15], v[14], v[13], v[12], + v[11], v[10], v[9], v[8], + v[7], v[6], v[5], v[4], + v[3], v[2], v[1], v[0]); +} + +static __m512 +__attribute__ ((noinline)) +foo_r (float *v) +{ + return _mm512_setr_ps (v[0], v[1], v[2], v[3], + v[4], v[5], v[6], v[7], + v[8], v[9], v[10], v[11], + v[12], v[13], v[14], v[15]); +} + +static void +avx512f_test (void) +{ + float v[16] = { -3.3, 2.6, 1.48, 9.104, -23.9, 17, -13.48, 4, + 69.78, 0.33, 81, 0.4, -8.9, -173.37, 0.8, 68 }; + union512 res; + + res.x = foo (v); + + if (check_union512 (res, v)) + abort (); + + res.x = _mm512_setzero_ps (); + + res.x = foo_r (v); + + if (check_union512 (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-2.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-2.c new file mode 100644 index 00000000000..1884c2f334f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-2.c @@ -0,0 +1,49 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512 +__attribute__ ((noinline)) +foo (float x1, float x2, float x3, float x4, + float x5, float x6, float x7, float x8, + float x9, float x10, float x11, float x12, + float x13, float x14, float x15, float x16) +{ + return _mm512_set_ps (x1, x2, x3, x4, x5, x6, x7, x8, + x9, x10, x11, x12, x13, x14, x15, x16); +} + +static __m512 +__attribute__ ((noinline)) +foo_r (float x1, float x2, float x3, float x4, + float x5, float x6, float x7, float x8, + float x9, float x10, float x11, float x12, + float x13, float x14, float x15, float x16) +{ + return _mm512_setr_ps (x16, x15, x14, x13, x12, x11, x10, x9, + x8, x7, x6, x5, x4, x3, x2, x1); +} + +static void +avx512f_test (void) +{ + float v[16] = { -3.3, 2.6, 1.48, 9.104, -23.9, 17, -13.48, 4, + 69.78, 0.33, 81, 0.4, -8.9, -173.37, 0.8, 68 }; + union512 res; + + res.x = foo (v[15], v[14], v[13], v[12], v[11], v[10], v[9], v[8], + v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]); + + if (check_union512 (res, v)) + abort (); + + res.x = _mm512_setzero_ps (); + + res.x = foo_r (v[15], v[14], v[13], v[12], v[11], v[10], v[9], v[8], + v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]); + + if (check_union512 (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-3.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-3.c new file mode 100644 index 00000000000..7ec166a5886 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-3.c @@ -0,0 +1,45 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512 +__attribute__ ((noinline)) +foo (float x) +{ + return _mm512_set_ps (x, x, x, x, x, x, x, x, + x, x, x, x, x, x, x, x); +} + +static __m512 +__attribute__ ((noinline)) +foo_r (float x) +{ + return _mm512_setr_ps (x, x, x, x, x, x, x, x, + x, x, x, x, x, x, x, x); +} + +static void +avx512f_test (void) +{ + int i; + float e = 34.5; + float v[16]; + union512 res; + + for (i = 0; i < 16; i++) + v[i] = e; + + res.x = foo (e); + + if (check_union512 (res, v)) + abort (); + + res.x = _mm512_setzero_ps (); + + res.x = foo_r (e); + + if (check_union512 (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-4.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-4.c new file mode 100644 index 00000000000..cd37e006450 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-4.c @@ -0,0 +1,119 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512 +__attribute__ ((noinline)) +foo (float x, int i) +{ + switch (i) + { + case 15: + return _mm512_set_ps (x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 14: + return _mm512_set_ps (0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 13: + return _mm512_set_ps (0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 12: + return _mm512_set_ps (0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 11: + return _mm512_set_ps (0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 10: + return _mm512_set_ps (0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 9: + return _mm512_set_ps (0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 8: + return _mm512_set_ps (0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0); + case 7: + return _mm512_set_ps (0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0); + case 6: + return _mm512_set_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0); + case 5: + return _mm512_set_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0); + case 4: + return _mm512_set_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0); + case 3: + return _mm512_set_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0); + case 2: + return _mm512_set_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0); + case 1: + return _mm512_set_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0); + case 0: + return _mm512_set_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x); + default: + abort (); + } +} + +static __m512 +__attribute__ ((noinline)) +foo_r (float x, int i) +{ + switch (i) + { + case 0: + return _mm512_setr_ps (x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 1: + return _mm512_setr_ps (0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 2: + return _mm512_setr_ps (0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 3: + return _mm512_setr_ps (0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 4: + return _mm512_setr_ps (0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 5: + return _mm512_setr_ps (0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 6: + return _mm512_setr_ps (0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 7: + return _mm512_setr_ps (0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0); + case 8: + return _mm512_setr_ps (0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0); + case 9: + return _mm512_setr_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0); + case 10: + return _mm512_setr_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0); + case 11: + return _mm512_setr_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0); + case 12: + return _mm512_setr_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0); + case 13: + return _mm512_setr_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0); + case 14: + return _mm512_setr_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0); + case 15: + return _mm512_setr_ps (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x); + default: + abort (); + } +} + +static void +avx512f_test (void) +{ + float e = -3.234; + float v[16]; + union512 res; + int i, j; + + for (i = 0; i < 16; i++) + { + for (j = 0; j < 16; j++) + v[j] = 0; + v[i] = e; + + res.x = foo (e, i); + + if (check_union512 (res, v)) + abort (); + + res.x = _mm512_setzero_ps (); + + res.x = foo_r (e, i); + + if (check_union512 (res, v)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-5.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-5.c new file mode 100644 index 00000000000..dec7fd40a7e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v16sf-5.c @@ -0,0 +1,119 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512 +__attribute__ ((noinline)) +foo (float x, int i) +{ + switch (i) + { + case 15: + return _mm512_set_ps (x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 14: + return _mm512_set_ps (1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 13: + return _mm512_set_ps (1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 12: + return _mm512_set_ps (1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 11: + return _mm512_set_ps (1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 10: + return _mm512_set_ps (1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 9: + return _mm512_set_ps (1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 8: + return _mm512_set_ps (1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1); + case 7: + return _mm512_set_ps (1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1); + case 6: + return _mm512_set_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1); + case 5: + return _mm512_set_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1); + case 4: + return _mm512_set_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1); + case 3: + return _mm512_set_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1); + case 2: + return _mm512_set_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1); + case 1: + return _mm512_set_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1); + case 0: + return _mm512_set_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x); + default: + abort (); + } +} + +static __m512 +__attribute__ ((noinline)) +foo_r (float x, int i) +{ + switch (i) + { + case 0: + return _mm512_setr_ps (x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 1: + return _mm512_setr_ps (1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 2: + return _mm512_setr_ps (1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 3: + return _mm512_setr_ps (1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 4: + return _mm512_setr_ps (1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 5: + return _mm512_setr_ps (1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 6: + return _mm512_setr_ps (1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 7: + return _mm512_setr_ps (1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1); + case 8: + return _mm512_setr_ps (1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1); + case 9: + return _mm512_setr_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1); + case 10: + return _mm512_setr_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1); + case 11: + return _mm512_setr_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1); + case 12: + return _mm512_setr_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1); + case 13: + return _mm512_setr_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1); + case 14: + return _mm512_setr_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1); + case 15: + return _mm512_setr_ps (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x); + default: + abort (); + } +} + +static void +avx512f_test (void) +{ + float e = -3.234; + float v[16]; + union512 res; + int i, j; + + for (i = 0; i < 16; i++) + { + for (j = 0; j < 16; j++) + v[j] = 1; + v[i] = e; + + res.x = foo (e, i); + + if (check_union512 (res, v)) + abort (); + + res.x = _mm512_setzero_ps (); + + res.x = foo_r (e, i); + + if (check_union512 (res, v)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-1.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-1.c new file mode 100644 index 00000000000..ebd0486999f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-1.c @@ -0,0 +1,47 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512i +__attribute__ ((noinline)) +foo (int *v) +{ + return _mm512_set_epi32 (v[15], v[14], v[13], v[12], + v[11], v[10], v[9], v[8], + v[7], v[6], v[5], v[4], + v[3], v[2], v[1], v[0]); +} + +static __m512i +__attribute__ ((noinline)) +foo_r (int *v) +{ + return _mm512_setr_epi32 (v[0], v[1], v[2], v[3], + v[4], v[5], v[6], v[7], + v[8], v[9], v[10], v[11], + v[12], v[13], v[14], v[15]); +} + +static void +avx512f_test (void) +{ + int v[16] = { 19832468, 2134, 6576856, 6678, + 8723467, 54646, 234566, 12314, + 786784, 77575, 645245, 234555, + 9487733, 411244, 12344, 86533 }; + union512i_d res; + + res.x = foo (v); + + if (check_union512i_d (res, v)) + abort (); + + res.x = _mm512_setzero_si512 (); + + res.x = foo_r (v); + + if (check_union512i_d (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-2.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-2.c new file mode 100644 index 00000000000..3090a2de66c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-2.c @@ -0,0 +1,49 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512i +__attribute__ ((noinline)) +foo (int x1, int x2, int x3, int x4, + int x5, int x6, int x7, int x8, + int x9, int x10, int x11, int x12, + int x13, int x14, int x15, int x16) +{ + return _mm512_set_epi32 (x1, x2, x3, x4, x5, x6, x7, x8, + x9, x10, x11, x12, x13, x14, x15, x16); +} + +static __m512i +__attribute__ ((noinline)) +foo_r (int x1, int x2, int x3, int x4, + int x5, int x6, int x7, int x8, + int x9, int x10, int x11, int x12, + int x13, int x14, int x15, int x16) +{ + return _mm512_setr_epi32 (x16, x15, x14, x13, x12, x11, x10, x9, + x8, x7, x6, x5, x4, x3, x2, x1); +} + +static void +avx512f_test (void) +{ + int v[16] = { -3, -453, 2, -231, 1, -111, 9, -145, + 23, 671, -173, 166, -13, 714, 69, 123 }; + union512i_d res; + + res.x = foo (v[15], v[14], v[13], v[12], v[11], v[10], v[9], v[8], + v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]); + + if (check_union512i_d (res, v)) + abort (); + + res.x = _mm512_setzero_si512 (); + + res.x = foo_r (v[15], v[14], v[13], v[12], v[11], v[10], v[9], v[8], + v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]); + + if (check_union512i_d (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-3.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-3.c new file mode 100644 index 00000000000..c02838ec349 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-3.c @@ -0,0 +1,45 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512i +__attribute__ ((noinline)) +foo (int x) +{ + return _mm512_set_epi32 (x, x, x, x, x, x, x, x, + x, x, x, x, x, x, x, x); +} + +static __m512i +__attribute__ ((noinline)) +foo_r (int x) +{ + return _mm512_setr_epi32 (x, x, x, x, x, x, x, x, + x, x, x, x, x, x, x, x); +} + +static void +avx512f_test (void) +{ + int i; + int e = 0xabadbeef; + int v[16]; + union512i_d res; + + for (i = 0; i < 16; i++) + v[i] = e; + + res.x = foo (e); + + if (check_union512i_d (res, v)) + abort (); + + res.x = _mm512_setzero_si512 (); + + res.x = foo_r (e); + + if (check_union512i_d (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-4.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-4.c new file mode 100644 index 00000000000..a16f6f06852 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-4.c @@ -0,0 +1,119 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512i +__attribute__ ((noinline)) +foo (int x, int i) +{ + switch (i) + { + case 15: + return _mm512_set_epi32 (x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 14: + return _mm512_set_epi32 (0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 13: + return _mm512_set_epi32 (0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 12: + return _mm512_set_epi32 (0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 11: + return _mm512_set_epi32 (0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 10: + return _mm512_set_epi32 (0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 9: + return _mm512_set_epi32 (0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 8: + return _mm512_set_epi32 (0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0); + case 7: + return _mm512_set_epi32 (0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0); + case 6: + return _mm512_set_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0); + case 5: + return _mm512_set_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0); + case 4: + return _mm512_set_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0); + case 3: + return _mm512_set_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0); + case 2: + return _mm512_set_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0); + case 1: + return _mm512_set_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0); + case 0: + return _mm512_set_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x); + default: + abort (); + } +} + +static __m512i +__attribute__ ((noinline)) +foo_r (int x, int i) +{ + switch (i) + { + case 0: + return _mm512_setr_epi32 (x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 1: + return _mm512_setr_epi32 (0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 2: + return _mm512_setr_epi32 (0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 3: + return _mm512_setr_epi32 (0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 4: + return _mm512_setr_epi32 (0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 5: + return _mm512_setr_epi32 (0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 6: + return _mm512_setr_epi32 (0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0); + case 7: + return _mm512_setr_epi32 (0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0); + case 8: + return _mm512_setr_epi32 (0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0); + case 9: + return _mm512_setr_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0); + case 10: + return _mm512_setr_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0); + case 11: + return _mm512_setr_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0); + case 12: + return _mm512_setr_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0); + case 13: + return _mm512_setr_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0); + case 14: + return _mm512_setr_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0); + case 15: + return _mm512_setr_epi32 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x); + default: + abort (); + } +} + +static void +avx512f_test (void) +{ + int e = 0xabadbeef; + int v[16]; + union512i_d res; + int i, j; + + for (i = 0; i < 16; i++) + { + for (j = 0; j < 16; j++) + v[j] = 0; + v[i] = e; + + res.x = foo (e, i); + + if (check_union512i_d (res, v)) + abort (); + + res.x = _mm512_setzero_si512 (); + + res.x = foo_r (e, i); + + if (check_union512i_d (res, v)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-5.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-5.c new file mode 100644 index 00000000000..948d4ed42f1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v16si-5.c @@ -0,0 +1,119 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512i +__attribute__ ((noinline)) +foo (int x, int i) +{ + switch (i) + { + case 15: + return _mm512_set_epi32 (x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 14: + return _mm512_set_epi32 (1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 13: + return _mm512_set_epi32 (1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 12: + return _mm512_set_epi32 (1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 11: + return _mm512_set_epi32 (1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 10: + return _mm512_set_epi32 (1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 9: + return _mm512_set_epi32 (1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 8: + return _mm512_set_epi32 (1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1); + case 7: + return _mm512_set_epi32 (1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1); + case 6: + return _mm512_set_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1); + case 5: + return _mm512_set_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1); + case 4: + return _mm512_set_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1); + case 3: + return _mm512_set_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1); + case 2: + return _mm512_set_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1); + case 1: + return _mm512_set_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1); + case 0: + return _mm512_set_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x); + default: + abort (); + } +} + +static __m512i +__attribute__ ((noinline)) +foo_r (int x, int i) +{ + switch (i) + { + case 0: + return _mm512_setr_epi32 (x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 1: + return _mm512_setr_epi32 (1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 2: + return _mm512_setr_epi32 (1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 3: + return _mm512_setr_epi32 (1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 4: + return _mm512_setr_epi32 (1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 5: + return _mm512_setr_epi32 (1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 6: + return _mm512_setr_epi32 (1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1); + case 7: + return _mm512_setr_epi32 (1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1); + case 8: + return _mm512_setr_epi32 (1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1); + case 9: + return _mm512_setr_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1); + case 10: + return _mm512_setr_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1); + case 11: + return _mm512_setr_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1); + case 12: + return _mm512_setr_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1); + case 13: + return _mm512_setr_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1); + case 14: + return _mm512_setr_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1); + case 15: + return _mm512_setr_epi32 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x); + default: + abort (); + } +} + +static void +avx512f_test (void) +{ + int e = 0xabadbeef; + int v[16]; + union512i_d res; + int i, j; + + for (i = 0; i < 16; i++) + { + for (j = 0; j < 16; j++) + v[j] = 1; + v[i] = e; + + res.x = foo (e, i); + + if (check_union512i_d (res, v)) + abort (); + + res.x = _mm512_setzero_si512 (); + + res.x = foo_r (e, i); + + if (check_union512i_d (res, v)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-1.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-1.c new file mode 100644 index 00000000000..a3514ef7271 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-1.c @@ -0,0 +1,38 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512d +__attribute__ ((noinline)) +foo (double *v) +{ + return _mm512_set_pd (v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]); +} + +static __m512d +__attribute__ ((noinline)) +foo_r (double *v) +{ + return _mm512_setr_pd (v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]); +} + +static void +avx512f_test (void) +{ + double v[8] = { -3.3, 2.6, 1.48, 9.104, -23.9, -173.37, -13.48, 69.78 }; + union512d res; + + res.x = foo (v); + + if (check_union512d (res, v)) + abort (); + + res.x = _mm512_setzero_pd (); + + res.x = foo_r (v); + + if (check_union512d (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-2.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-2.c new file mode 100644 index 00000000000..a412de58207 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-2.c @@ -0,0 +1,40 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512d +__attribute__ ((noinline)) +foo (double x1, double x2, double x3, double x4, + double x5, double x6, double x7, double x8) +{ + return _mm512_set_pd (x1, x2, x3, x4, x5, x6, x7, x8); +} + +static __m512d +__attribute__ ((noinline)) +foo_r (double x1, double x2, double x3, double x4, + double x5, double x6, double x7, double x8) +{ + return _mm512_setr_pd (x8, x7, x6, x5, x4, x3, x2, x1); +} + +static void +avx512f_test (void) +{ + double v[8] = { -3.3, 2.6, 1.48, 9.104, -23.9, -173.37, -13.48, 69.78 }; + union512d res; + + res.x = foo (v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]); + + if (check_union512d (res, v)) + abort (); + + res.x = _mm512_setzero_pd (); + + res.x = foo_r (v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]); + + if (check_union512d (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-3.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-3.c new file mode 100644 index 00000000000..751af670378 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-3.c @@ -0,0 +1,43 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512d +__attribute__ ((noinline)) +foo (double x) +{ + return _mm512_set_pd (x, x, x, x, x, x, x, x); +} + +static __m512d +__attribute__ ((noinline)) +foo_r (double x) +{ + return _mm512_setr_pd (x, x, x, x, x, x, x, x); +} + +static void +avx512f_test (void) +{ + int i; + double e = 34.5; + double v[8]; + union512d res; + + for (i = 0; i < 8; i++) + v[i] = e; + + res.x = foo (e); + + if (check_union512d (res, v)) + abort (); + + res.x = _mm512_setzero_pd (); + + res.x = foo_r (e); + + if (check_union512d (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-4.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-4.c new file mode 100644 index 00000000000..f62bb5fa065 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-4.c @@ -0,0 +1,87 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512d +__attribute__ ((noinline)) +foo (double x, int i) +{ + switch (i) + { + case 7: + return _mm512_set_pd (x, 0, 0, 0, 0, 0, 0, 0); + case 6: + return _mm512_set_pd (0, x, 0, 0, 0, 0, 0, 0); + case 5: + return _mm512_set_pd (0, 0, x, 0, 0, 0, 0, 0); + case 4: + return _mm512_set_pd (0, 0, 0, x, 0, 0, 0, 0); + case 3: + return _mm512_set_pd (0, 0, 0, 0, x, 0, 0, 0); + case 2: + return _mm512_set_pd (0, 0, 0, 0, 0, x, 0, 0); + case 1: + return _mm512_set_pd (0, 0, 0, 0, 0, 0, x, 0); + case 0: + return _mm512_set_pd (0, 0, 0, 0, 0, 0, 0, x); + default: + abort (); + } +} + +static __m512d +__attribute__ ((noinline)) +foo_r (double x, int i) +{ + switch (i) + { + case 0: + return _mm512_setr_pd (x, 0, 0, 0, 0, 0, 0, 0); + case 1: + return _mm512_setr_pd (0, x, 0, 0, 0, 0, 0, 0); + case 2: + return _mm512_setr_pd (0, 0, x, 0, 0, 0, 0, 0); + case 3: + return _mm512_setr_pd (0, 0, 0, x, 0, 0, 0, 0); + case 4: + return _mm512_setr_pd (0, 0, 0, 0, x, 0, 0, 0); + case 5: + return _mm512_setr_pd (0, 0, 0, 0, 0, x, 0, 0); + case 6: + return _mm512_setr_pd (0, 0, 0, 0, 0, 0, x, 0); + case 7: + return _mm512_setr_pd (0, 0, 0, 0, 0, 0, 0, x); + default: + abort (); + } +} + +static void +avx512f_test (void) +{ + double e = -3.234; + double v[8]; + union512d res; + int i, j; + + for (i = 0; i < 8; i++) + { + for (j = 0; j < 8; j++) + v[j] = 0; + v[i] = e; + + res.x = foo (e, i); + + if (check_union512d (res, v)) + abort (); + + res.x = _mm512_setzero_pd (); + + res.x = foo_r (e, i); + + if (check_union512d (res, v)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-5.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-5.c new file mode 100644 index 00000000000..c6abd82da04 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v8df-5.c @@ -0,0 +1,87 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512d +__attribute__ ((noinline)) +foo (double x, int i) +{ + switch (i) + { + case 7: + return _mm512_set_pd (x, 1, 1, 1, 1, 1, 1, 1); + case 6: + return _mm512_set_pd (1, x, 1, 1, 1, 1, 1, 1); + case 5: + return _mm512_set_pd (1, 1, x, 1, 1, 1, 1, 1); + case 4: + return _mm512_set_pd (1, 1, 1, x, 1, 1, 1, 1); + case 3: + return _mm512_set_pd (1, 1, 1, 1, x, 1, 1, 1); + case 2: + return _mm512_set_pd (1, 1, 1, 1, 1, x, 1, 1); + case 1: + return _mm512_set_pd (1, 1, 1, 1, 1, 1, x, 1); + case 0: + return _mm512_set_pd (1, 1, 1, 1, 1, 1, 1, x); + default: + abort (); + } +} + +static __m512d +__attribute__ ((noinline)) +foo_r (double x, int i) +{ + switch (i) + { + case 0: + return _mm512_setr_pd (x, 1, 1, 1, 1, 1, 1, 1); + case 1: + return _mm512_setr_pd (1, x, 1, 1, 1, 1, 1, 1); + case 2: + return _mm512_setr_pd (1, 1, x, 1, 1, 1, 1, 1); + case 3: + return _mm512_setr_pd (1, 1, 1, x, 1, 1, 1, 1); + case 4: + return _mm512_setr_pd (1, 1, 1, 1, x, 1, 1, 1); + case 5: + return _mm512_setr_pd (1, 1, 1, 1, 1, x, 1, 1); + case 6: + return _mm512_setr_pd (1, 1, 1, 1, 1, 1, x, 1); + case 7: + return _mm512_setr_pd (1, 1, 1, 1, 1, 1, 1, x); + default: + abort (); + } +} + +static void +avx512f_test (void) +{ + double e = -3.234; + double v[8]; + union512d res; + int i, j; + + for (i = 0; i < 8; i++) + { + for (j = 0; j < 8; j++) + v[j] = 1; + v[i] = e; + + res.x = foo (e, i); + + if (check_union512d (res, v)) + abort (); + + res.x = _mm512_setzero_pd (); + + res.x = foo_r (e, i); + + if (check_union512d (res, v)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-1.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-1.c new file mode 100644 index 00000000000..8cb1f8f61b2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-1.c @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512i +__attribute__ ((noinline)) +foo (long long *v) +{ + return _mm512_set_epi64 (v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]); +} + +static __m512i +__attribute__ ((noinline)) +foo_r (long long *v) +{ + return _mm512_setr_epi64 (v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]); +} + +static void +avx512f_test (void) +{ + long long v[8] = { 0x12e9e94645ad8LL, 0x851c0b39446LL, 2134, 6678, + 0x786784645245LL, 0x9487731234LL, 41124, 86530 }; + union512i_q res; + + res.x = foo (v); + + if (check_union512i_q (res, v)) + abort (); + + res.x = _mm512_setzero_si512 (); + + res.x = foo_r (v); + + if (check_union512i_q (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-2.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-2.c new file mode 100644 index 00000000000..fd033ce24e0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-2.c @@ -0,0 +1,41 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512i +__attribute__ ((noinline)) +foo (long long x1, long long x2, long long x3, long long x4, + long long x5, long long x6, long long x7, long long x8) +{ + return _mm512_set_epi64 (x1, x2, x3, x4, x5, x6, x7, x8); +} + +static __m512i +__attribute__ ((noinline)) +foo_r (long long x1, long long x2, long long x3, long long x4, + long long x5, long long x6, long long x7, long long x8) +{ + return _mm512_setr_epi64 (x8, x7, x6, x5, x4, x3, x2, x1); +} + +static void +avx512f_test (void) +{ + long long v[8] = { 0x12e9e94645ad8LL, 0x851c0b39446LL, 2134, 6678, + 0x786784645245LL, 0x9487731234LL, 41124, 86530 }; + union512i_q res; + + res.x = foo (v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]); + + if (check_union512i_q (res, v)) + abort (); + + res.x = _mm512_setzero_si512 (); + + res.x = foo_r (v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]); + + if (check_union512i_q (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-3.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-3.c new file mode 100644 index 00000000000..16e12c7f1a9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-3.c @@ -0,0 +1,43 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512i +__attribute__ ((noinline)) +foo (long long x) +{ + return _mm512_set_epi64 (x, x, x, x, x, x, x, x); +} + +static __m512i +__attribute__ ((noinline)) +foo_r (long long x) +{ + return _mm512_setr_epi64 (x, x, x, x, x, x, x, x); +} + +static void +avx512f_test (void) +{ + int i; + long long e = 0xfed178ab134badf1LL; + long long v[8]; + union512i_q res; + + for (i = 0; i < 8; i++) + v[i] = e; + + res.x = foo (e); + + if (check_union512i_q (res, v)) + abort (); + + res.x = _mm512_setzero_si512 (); + + res.x = foo_r (e); + + if (check_union512i_q (res, v)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-4.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-4.c new file mode 100644 index 00000000000..ea6421fcc03 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-4.c @@ -0,0 +1,87 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512i +__attribute__ ((noinline)) +foo (long long x, int i) +{ + switch (i) + { + case 7: + return _mm512_set_epi64 (x, 0, 0, 0, 0, 0, 0, 0); + case 6: + return _mm512_set_epi64 (0, x, 0, 0, 0, 0, 0, 0); + case 5: + return _mm512_set_epi64 (0, 0, x, 0, 0, 0, 0, 0); + case 4: + return _mm512_set_epi64 (0, 0, 0, x, 0, 0, 0, 0); + case 3: + return _mm512_set_epi64 (0, 0, 0, 0, x, 0, 0, 0); + case 2: + return _mm512_set_epi64 (0, 0, 0, 0, 0, x, 0, 0); + case 1: + return _mm512_set_epi64 (0, 0, 0, 0, 0, 0, x, 0); + case 0: + return _mm512_set_epi64 (0, 0, 0, 0, 0, 0, 0, x); + default: + abort (); + } +} + +static __m512i +__attribute__ ((noinline)) +foo_r (long long x, int i) +{ + switch (i) + { + case 0: + return _mm512_setr_epi64 (x, 0, 0, 0, 0, 0, 0, 0); + case 1: + return _mm512_setr_epi64 (0, x, 0, 0, 0, 0, 0, 0); + case 2: + return _mm512_setr_epi64 (0, 0, x, 0, 0, 0, 0, 0); + case 3: + return _mm512_setr_epi64 (0, 0, 0, x, 0, 0, 0, 0); + case 4: + return _mm512_setr_epi64 (0, 0, 0, 0, x, 0, 0, 0); + case 5: + return _mm512_setr_epi64 (0, 0, 0, 0, 0, x, 0, 0); + case 6: + return _mm512_setr_epi64 (0, 0, 0, 0, 0, 0, x, 0); + case 7: + return _mm512_setr_epi64 (0, 0, 0, 0, 0, 0, 0, x); + default: + abort (); + } +} + +static void +avx512f_test (void) +{ + long long e = 0xabadbeef01234567LL; + long long v[8]; + union512i_q res; + int i, j; + + for (i = 0; i < 8; i++) + { + for (j = 0; j < 8; j++) + v[j] = 0; + v[i] = e; + + res.x = foo (e, i); + + if (check_union512i_q (res, v)) + abort (); + + res.x = _mm512_setzero_si512 (); + + res.x = foo_r (e, i); + + if (check_union512i_q (res, v)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-5.c b/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-5.c new file mode 100644 index 00000000000..76ec4438897 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-set-v8di-5.c @@ -0,0 +1,87 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static __m512i +__attribute__ ((noinline)) +foo (long long x, int i) +{ + switch (i) + { + case 7: + return _mm512_set_epi64 (x, 1, 1, 1, 1, 1, 1, 1); + case 6: + return _mm512_set_epi64 (1, x, 1, 1, 1, 1, 1, 1); + case 5: + return _mm512_set_epi64 (1, 1, x, 1, 1, 1, 1, 1); + case 4: + return _mm512_set_epi64 (1, 1, 1, x, 1, 1, 1, 1); + case 3: + return _mm512_set_epi64 (1, 1, 1, 1, x, 1, 1, 1); + case 2: + return _mm512_set_epi64 (1, 1, 1, 1, 1, x, 1, 1); + case 1: + return _mm512_set_epi64 (1, 1, 1, 1, 1, 1, x, 1); + case 0: + return _mm512_set_epi64 (1, 1, 1, 1, 1, 1, 1, x); + default: + abort (); + } +} + +static __m512i +__attribute__ ((noinline)) +foo_r (long long x, int i) +{ + switch (i) + { + case 0: + return _mm512_setr_epi64 (x, 1, 1, 1, 1, 1, 1, 1); + case 1: + return _mm512_setr_epi64 (1, x, 1, 1, 1, 1, 1, 1); + case 2: + return _mm512_setr_epi64 (1, 1, x, 1, 1, 1, 1, 1); + case 3: + return _mm512_setr_epi64 (1, 1, 1, x, 1, 1, 1, 1); + case 4: + return _mm512_setr_epi64 (1, 1, 1, 1, x, 1, 1, 1); + case 5: + return _mm512_setr_epi64 (1, 1, 1, 1, 1, x, 1, 1); + case 6: + return _mm512_setr_epi64 (1, 1, 1, 1, 1, 1, x, 1); + case 7: + return _mm512_setr_epi64 (1, 1, 1, 1, 1, 1, 1, x); + default: + abort (); + } +} + +static void +avx512f_test (void) +{ + long long e = 0xabadbeef01234567LL; + long long v[8]; + union512i_q res; + int i, j; + + for (i = 0; i < 8; i++) + { + for (j = 0; j < 8; j++) + v[j] = 1; + v[i] = e; + + res.x = foo (e, i); + + if (check_union512i_q (res, v)) + abort (); + + res.x = _mm512_setzero_si512 (); + + res.x = foo_r (e, i); + + if (check_union512i_q (res, v)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-setzero-pd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-setzero-pd-1.c new file mode 100644 index 00000000000..f0589bd18a3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-setzero-pd-1.c @@ -0,0 +1,21 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void static +avx512f_test (void) +{ + int i; + union512d res; + double res_ref[8]; + + res.x = _mm512_setzero_pd (); + + for (i = 0; i < 8; i++) + res_ref[i] = 0.0; + + if (check_union512d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-setzero-ps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-setzero-ps-1.c new file mode 100644 index 00000000000..5b1ee29e340 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-setzero-ps-1.c @@ -0,0 +1,21 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void static +avx512f_test (void) +{ + int i; + union512 res; + float res_ref[16]; + + res.x = _mm512_setzero_ps (); + + for (i = 0; i < 16; i++) + res_ref[i] = 0.0; + + if (check_union512 (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-setzero-si512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-setzero-si512-1.c new file mode 100644 index 00000000000..1c60489b4fb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-setzero-si512-1.c @@ -0,0 +1,21 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void static +avx512f_test (void) +{ + int i; + union512i_q res; + long long res_ref[8]; + + res.x = _mm512_setzero_si512 (); + + for (i = 0; i < 8; i++) + res_ref[i] = 0; + + if (check_union512i_q (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vaddpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vaddpd-1.c new file mode 100644 index 00000000000..8e37fec8e3d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vaddpd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vaddpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vaddpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vaddpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vaddpd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vaddpd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vaddpd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_add_pd (x, x); + x = _mm512_mask_add_pd (x, m, x, x); + x = _mm512_maskz_add_pd (m, x, x); + x = _mm512_add_round_pd (x, x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_add_round_pd (x, m, x, x, _MM_FROUND_TO_NEG_INF); + x = _mm512_maskz_add_round_pd (m, x, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vaddpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vaddpd-2.c new file mode 100644 index 00000000000..ce6918ed66e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vaddpd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (double *r, double *s1, double *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] + s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_add_pd) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_add_pd) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_add_pd) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vaddps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vaddps-1.c new file mode 100644 index 00000000000..648fe486888 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vaddps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vaddps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vaddps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vaddps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vaddps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vaddps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vaddps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_add_ps (x, x); + x = _mm512_mask_add_ps (x, m, x, x); + x = _mm512_maskz_add_ps (m, x, x); + x = _mm512_add_round_ps (x, x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_add_round_ps (x, m, x, x, _MM_FROUND_TO_POS_INF); + x = _mm512_maskz_add_round_ps (m, x, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vaddps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vaddps-2.c new file mode 100644 index 00000000000..6c982bcaffc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vaddps-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (float *r, float *s1, float *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] + s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN,) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_add_ps) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_add_ps) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_add_ps) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-valignd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-valignd-1.c new file mode 100644 index 00000000000..693adb0577f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-valignd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "valignd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "valignd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "valignd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i z; +volatile __mmask16 m1; + +void extern +avx512f_test (void) +{ + z = _mm512_alignr_epi32 (z, z, 3); + z = _mm512_mask_alignr_epi32 (z, m1, z, z, 3); + z = _mm512_maskz_alignr_epi32 (m1, z, z, 3); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-valignd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-valignd-2.c new file mode 100644 index 00000000000..3d2a71ca1c8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-valignd-2.c @@ -0,0 +1,61 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +#define N (SIZE / 2) + +static void +CALC (int *s1, int *s2, int *r) +{ + int i; + int s[2 * SIZE]; + + for (i = 0; i < SIZE; i++) + { + s[i] = s2[i]; + s[i + SIZE] = s1[i]; + } + + for (i = 0; i < SIZE; i++) + r[i] = s[i + N]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, s1, s2; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 2 * i; + s2.a[i] = i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_alignr_epi32) (s1.x, s2.x, N); + res2.x = INTRINSIC (_mask_alignr_epi32) (res2.x, mask, s1.x, s2.x, N); + res3.x = INTRINSIC (_maskz_alignr_epi32) (mask, s1.x, s2.x, N); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-valignq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-valignq-1.c new file mode 100644 index 00000000000..a72946837a0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-valignq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "valignq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "valignq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "valignq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i z; +volatile __mmask8 m1; + +void extern +avx512f_test (void) +{ + z = _mm512_alignr_epi64 (z, z, 3); + z = _mm512_mask_alignr_epi64 (z, m1, z, z, 3); + z = _mm512_maskz_alignr_epi64 (m1, z, z, 3); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-valignq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-valignq-2.c new file mode 100644 index 00000000000..b3c09c7b1a3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-valignq-2.c @@ -0,0 +1,61 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +#define N (SIZE / 2) + +static void +CALC (long long *s1, long long *s2, long long *r) +{ + int i; + long long s[2 * SIZE]; + + for (i = 0; i < SIZE; i++) + { + s[i] = s2[i]; + s[i + SIZE] = s1[i]; + } + + for (i = 0; i < SIZE; i++) + r[i] = s[i + N]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, s1, s2; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 2 * i; + s2.a[i] = i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_alignr_epi64) (s1.x, s2.x, N); + res2.x = INTRINSIC (_mask_alignr_epi64) (res2.x, mask, s1.x, s2.x, N); + res3.x = INTRINSIC (_maskz_alignr_epi64) (mask, s1.x, s2.x, N); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vblendmpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vblendmpd-1.c new file mode 100644 index 00000000000..cb0e4c2504f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vblendmpd-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "(vblendmpd|vmovapd)\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}" } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_blend_pd (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vblendmpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vblendmpd-2.c new file mode 100644 index 00000000000..1fe4cb61605 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vblendmpd-2.c @@ -0,0 +1,43 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (double *r, double *s1, double *s2, MASK_TYPE mask) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = (mask & (1LL << i)) ? s2[i] : s1[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, d) res1, src1, src2; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + + res1.x = INTRINSIC (_mask_blend_pd) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a, mask); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vblendmps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vblendmps-1.c new file mode 100644 index 00000000000..faee9955b64 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vblendmps-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "(vblendmps|vmovaps)\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}" } } */ + +#include + +volatile __m512 x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_blend_ps (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vblendmps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vblendmps-2.c new file mode 100644 index 00000000000..e92c70c37e5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vblendmps-2.c @@ -0,0 +1,43 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (float *r, float *s1, float *s2, MASK_TYPE mask) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = (mask & (1 << i)) ? s2[i] : s1[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN,) res1, src1, src2; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + + res1.x = INTRINSIC (_mask_blend_ps) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a, mask); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf32x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf32x4-1.c new file mode 100644 index 00000000000..2af23f11dbd --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf32x4-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vbroadcastf32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]|vshuff32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcastf32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]|vshuff32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcastf32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}|vshuff32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512 x; +volatile __m128 y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_broadcast_f32x4 (y); + x = _mm512_mask_broadcast_f32x4 (x, m, y); + x = _mm512_maskz_broadcast_f32x4 (m, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf32x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf32x4-2.c new file mode 100644 index 00000000000..79abcdc0d27 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf32x4-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (float *r, float *s) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s[i % 4]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN,) res1, res2, res3; + UNION_TYPE (128,) src; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + + sign = -1; + for (i = 0; i < 4; i++) + { + src.a[i] = 34.67 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_broadcast_f32x4) (src.x); + res2.x = INTRINSIC (_mask_broadcast_f32x4) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_broadcast_f32x4) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf64x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf64x4-1.c new file mode 100644 index 00000000000..dbc3967ccba --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf64x4-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vbroadcastf64x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]|vshuff64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcastf64x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]|vshuff64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcastf64x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}|vshuff64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512d x; +volatile __m256d y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_broadcast_f64x4 (y); + x = _mm512_mask_broadcast_f64x4 (x, m, y); + x = _mm512_maskz_broadcast_f64x4 (m, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf64x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf64x4-2.c new file mode 100644 index 00000000000..bc5f6a1cc6f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastf64x4-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (double *r, double *s) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s[i % 4]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3; + UNION_TYPE (256, d) src; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + + sign = -1; + for (i = 0; i < 2; i++) + { + src.a[i] = 34.67 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_broadcast_f64x4) (src.x); + res2.x = INTRINSIC (_mask_broadcast_f64x4) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_broadcast_f64x4) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti32x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti32x4-1.c new file mode 100644 index 00000000000..743e1cbcc87 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti32x4-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vbroadcasti32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]|vshufi32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcasti32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]|vshufi32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcasti32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}|vshufi32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512i x; +volatile __m128i y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_broadcast_i32x4 (y); + x = _mm512_mask_broadcast_i32x4 (x, m, y); + x = _mm512_maskz_broadcast_i32x4 (m, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti32x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti32x4-2.c new file mode 100644 index 00000000000..61dccc227a1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti32x4-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s[i % 4]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3; + UNION_TYPE (128, i_d) src; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < 4; i++) + { + src.a[i] = 34 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_broadcast_i32x4) (src.x); + res2.x = INTRINSIC (_mask_broadcast_i32x4) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_broadcast_i32x4) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti64x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti64x4-1.c new file mode 100644 index 00000000000..28a50ed8ccd --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti64x4-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vbroadcasti64x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]|vshufi64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcasti64x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]|vshufi64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcasti64x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}|vshufi64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512i x; +volatile __m256i y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_broadcast_i64x4 (y); + x = _mm512_mask_broadcast_i64x4 (x, m, y); + x = _mm512_maskz_broadcast_i64x4 (m, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti64x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti64x4-2.c new file mode 100644 index 00000000000..6286fca8178 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcasti64x4-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s[i % 4]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3; + UNION_TYPE (256, i_q) src; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + sign = -1; + for (i = 0; i < 2; i++) + { + src.a[i] = 34 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_broadcast_i64x4) (src.x); + res2.x = INTRINSIC (_mask_broadcast_i64x4) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_broadcast_i64x4) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-1.c new file mode 100644 index 00000000000..3d261afea75 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vbroadcastsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcastsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcastsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __m128d y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_broadcastsd_pd (y); + x = _mm512_mask_broadcastsd_pd (x, m, y); + x = _mm512_maskz_broadcastsd_pd (m, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-2.c new file mode 100644 index 00000000000..3ecc1a7c588 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (double *r, double *s) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s[0]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3; + UNION_TYPE (128, d) src; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + + sign = -1; + for (i = 0; i < 2; i++) + { + src.a[i] = 1.5 + 34.67 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_broadcastsd_pd) (src.x); + res2.x = INTRINSIC (_mask_broadcastsd_pd) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_broadcastsd_pd) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-1.c new file mode 100644 index 00000000000..4cc8cb78714 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vbroadcastss\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcastss\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcastss\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __m128 y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_broadcastss_ps (y); + x = _mm512_mask_broadcastss_ps (x, m, y); + x = _mm512_maskz_broadcastss_ps (m, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-2.c new file mode 100644 index 00000000000..f3f339825bd --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (float *r, float *s) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s[0]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN,) res1, res2, res3; + UNION_TYPE (128,) src; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + + sign = -1; + for (i = 0; i < 4; i++) + { + src.a[i] = 1.5 + 34.67 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_broadcastss_ps) (src.x); + res2.x = INTRINSIC (_mask_broadcastss_ps) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_broadcastss_ps) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c new file mode 100644 index 00000000000..fa3655610c7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler "vcmppd\[ \\t\]+\[^\n\]*\[^\}\]%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ +/* { dg-final { scan-assembler "vcmppd\[ \\t\]+\[^\n\]*\[^\}\]%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ +/* { dg-final { scan-assembler "vcmppd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ +/* { dg-final { scan-assembler "vcmppd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + m = _mm512_cmp_pd_mask (x, x, _CMP_FALSE_OQ); + m = _mm512_mask_cmp_pd_mask (m, x, x, _CMP_FALSE_OQ); + m = _mm512_cmp_round_pd_mask (x, x, _CMP_FALSE_OQ, _MM_FROUND_NO_EXC); + m = _mm512_mask_cmp_round_pd_mask (m, x, x, _CMP_FALSE_OQ, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcmppd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcmppd-2.c new file mode 100644 index 00000000000..333a83576b2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcmppd-2.c @@ -0,0 +1,75 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#include +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +#if AVX512F_LEN == 512 +#define CMP(imm, rel) \ + dst_ref = 0; \ + for (i = 0; i < 8; i++) \ + { \ + dst_ref = (((int) rel) << i) | dst_ref; \ + } \ + source1.x = _mm512_loadu_pd(s1); \ + source2.x = _mm512_loadu_pd(s2); \ + dst1 = _mm512_cmp_pd_mask(source1.x, source2.x, imm);\ + dst2 = _mm512_mask_cmp_pd_mask(mask, source1.x, source2.x, imm);\ + if (dst_ref != dst1) abort(); \ + if ((dst_ref & mask) != dst2) abort(); +#endif + +static void +TEST () +{ + UNION_TYPE (AVX512F_LEN, d) source1, source2; + MASK_TYPE dst1, dst2, dst_ref; + MASK_TYPE mask = MASK_VALUE; + int i; + double s1[8]={2134.3343, 6678.346, 453.345635, 54646.464, + 231.23311, 5674.455, 111.111111, 23241.152}; + double s2[8]={41124.234, 6678.346, 8653.65635, 856.43576, + 231.23311, 4646.123, 111.111111, 124.12455}; + + CMP(_CMP_EQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]); + CMP(_CMP_LT_OS, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]); + CMP(_CMP_LE_OS, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]); + CMP(_CMP_UNORD_Q, isunordered(s1[i], s2[i])); + CMP(_CMP_NEQ_UQ, isunordered(s1[i], s2[i]) || s1[i] != s2[i]); + CMP(_CMP_NLT_US, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]); + CMP(_CMP_NLE_US, isunordered(s1[i], s2[i]) || s1[i] > s2[i]); + CMP(_CMP_ORD_Q, !isunordered(s1[i], s2[i])); + + CMP(_CMP_EQ_UQ, isunordered(s1[i], s2[i]) || s1[i] == s2[i]); + CMP(_CMP_NGE_US, isunordered(s1[i], s2[i]) || s1[i] < s2[i]); + CMP(_CMP_NGT_US, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]); + + CMP(_CMP_FALSE_OQ, 0); + CMP(_CMP_NEQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]); + CMP(_CMP_GE_OS, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]); + CMP(_CMP_GT_OS, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]); + CMP(_CMP_TRUE_UQ, 1); + + CMP(_CMP_EQ_OS, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]); + CMP(_CMP_LT_OQ, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]); + CMP(_CMP_LE_OQ, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]); + CMP(_CMP_UNORD_S, isunordered(s1[i], s2[i])); + CMP(_CMP_NEQ_US, isunordered(s1[i], s2[i]) || s1[i] != s2[i]); + CMP(_CMP_NLT_UQ, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]); + CMP(_CMP_NLE_UQ, isunordered(s1[i], s2[i]) || s1[i] > s2[i]); + CMP(_CMP_ORD_S, !isunordered(s1[i], s2[i])); + CMP(_CMP_EQ_US, isunordered(s1[i], s2[i]) || s1[i] == s2[i]); + CMP(_CMP_NGE_UQ, isunordered(s1[i], s2[i]) || s1[i] < s2[i]); + CMP(_CMP_NGT_UQ, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]); + CMP(_CMP_FALSE_OS, 0); + CMP(_CMP_NEQ_OS, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]); + CMP(_CMP_GE_OQ, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]); + CMP(_CMP_GT_OQ, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]); + CMP(_CMP_TRUE_US, 1) +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c new file mode 100644 index 00000000000..b90be8c726a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler "vcmpps\[ \\t\]+\[^\n\]*\[^\}\]%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ +/* { dg-final { scan-assembler "vcmpps\[ \\t\]+\[^\n\]*\[^\}\]%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ +/* { dg-final { scan-assembler "vcmpps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ +/* { dg-final { scan-assembler "vcmpps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + m = _mm512_cmp_ps_mask (x, x, _CMP_FALSE_OQ); + m = _mm512_mask_cmp_ps_mask (m, x, x, _CMP_FALSE_OQ); + m = _mm512_cmp_round_ps_mask (x, x, _CMP_FALSE_OQ, _MM_FROUND_NO_EXC); + m = _mm512_mask_cmp_round_ps_mask (m, x, x, _CMP_FALSE_OQ, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcmpps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcmpps-2.c new file mode 100644 index 00000000000..5ffd470dbe2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcmpps-2.c @@ -0,0 +1,79 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#include +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +#if AVX512F_LEN == 512 +#define CMP(imm, rel) \ + dst_ref = 0; \ + for (i = 0; i < 16; i++) \ + { \ + dst_ref = (((int) rel) << i) | dst_ref; \ + } \ + source1.x = _mm512_loadu_ps(s1); \ + source2.x = _mm512_loadu_ps(s2); \ + dst1 = _mm512_cmp_ps_mask(source1.x, source2.x, imm);\ + dst2 = _mm512_mask_cmp_ps_mask(mask, source1.x, source2.x, imm);\ + if (dst_ref != dst1) abort(); \ + if ((dst_ref & mask) != dst2) abort(); +#endif + +static void +TEST () +{ + UNION_TYPE (AVX512F_LEN,) source1, source2; + MASK_TYPE dst1, dst2, dst_ref; + MASK_TYPE mask = MASK_VALUE; + int i; + float s1[16] = {2134.3343, 6678.346, 453.345635, 54646.464, + 231.23311, 5674.455, 111.111111, 23241.152, + 123.14811, 1245.124, 244.151353, 53454.141, + 926.16717, 3733.261, 643.161644, 23514.633}; + float s2[16] = {41124.234, 6678.346, 8653.65635, 856.43576, + 231.23311, 4646.123, 111.111111, 124.12455, + 123.14811, 1245.124, 244.151353, 53454.141, + 2134.3343, 6678.346, 453.345635, 54646.464}; + + CMP(_CMP_EQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]); + CMP(_CMP_LT_OS, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]); + CMP(_CMP_LE_OS, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]); + CMP(_CMP_UNORD_Q, isunordered(s1[i], s2[i])); + CMP(_CMP_NEQ_UQ, isunordered(s1[i], s2[i]) || s1[i] != s2[i]); + CMP(_CMP_NLT_US, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]); + CMP(_CMP_NLE_US, isunordered(s1[i], s2[i]) || s1[i] > s2[i]); + CMP(_CMP_ORD_Q, !isunordered(s1[i], s2[i])); + + CMP(_CMP_EQ_UQ, isunordered(s1[i], s2[i]) || s1[i] == s2[i]); + CMP(_CMP_NGE_US, isunordered(s1[i], s2[i]) || s1[i] < s2[i]); + CMP(_CMP_NGT_US, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]); + + CMP(_CMP_FALSE_OQ, 0); + CMP(_CMP_NEQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]); + CMP(_CMP_GE_OS, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]); + CMP(_CMP_GT_OS, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]); + CMP(_CMP_TRUE_UQ, 1); + + CMP(_CMP_EQ_OS, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]); + CMP(_CMP_LT_OQ, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]); + CMP(_CMP_LE_OQ, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]); + CMP(_CMP_UNORD_S, isunordered(s1[i], s2[i])); + CMP(_CMP_NEQ_US, isunordered(s1[i], s2[i]) || s1[i] != s2[i]); + CMP(_CMP_NLT_UQ, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]); + CMP(_CMP_NLE_UQ, isunordered(s1[i], s2[i]) || s1[i] > s2[i]); + CMP(_CMP_ORD_S, !isunordered(s1[i], s2[i])); + CMP(_CMP_EQ_US, isunordered(s1[i], s2[i]) || s1[i] == s2[i]); + CMP(_CMP_NGE_UQ, isunordered(s1[i], s2[i]) || s1[i] < s2[i]); + CMP(_CMP_NGT_UQ, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]); + CMP(_CMP_FALSE_OS, 0); + CMP(_CMP_NEQ_OS, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]); + CMP(_CMP_GE_OQ, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]); + CMP(_CMP_GT_OQ, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]); + CMP(_CMP_TRUE_US, 1) +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-1.c new file mode 100644 index 00000000000..7f92fbea386 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler "vcmpsd\[ \\t\]+\[^\n\]*\[^\}\]%xmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ +/* { dg-final { scan-assembler "vcmpsd\[ \\t\]+\[^\n\]*\[^\}\]%xmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ +/* { dg-final { scan-assembler "vcmpsd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ +/* { dg-final { scan-assembler "vcmpsd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ + +#include + +volatile __m128d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + m = _mm_cmp_sd_mask (x, x, _CMP_FALSE_OQ); + m = _mm_mask_cmp_sd_mask (m, x, x, _CMP_FALSE_OQ); + m = _mm_cmp_round_sd_mask (x, x, _CMP_FALSE_OQ, _MM_FROUND_NO_EXC); + m = _mm_mask_cmp_round_sd_mask (m, x, x, _CMP_FALSE_OQ, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-2.c new file mode 100644 index 00000000000..3e4729e4aac --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-2.c @@ -0,0 +1,67 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512f } */ +/* { dg-require-effective-target c99_runtime } */ +/* { dg-options "-O2 -mavx512f -std=c99" } */ + +#include "avx512f-check.h" +#include + +double s1[2] = {2134.3343, 6678.346}; +double s2[2] = {1485.1288, 6678.346}; + +__mmask8 dst_ref; + +#define CMP(imm, rel) \ + dst_ref = 0; \ + dst_ref = ((int) rel) | dst_ref; \ + source1 = _mm_loadu_pd(s1); \ + source2 = _mm_loadu_pd(s2); \ + dst = _mm_cmp_sd_mask(source1, source2, imm); \ + dst2 = _mm_mask_cmp_sd_mask(mask, source1, source2, imm);\ + if (dst_ref != dst) abort(); \ + if ((dst_ref & mask) != dst2) abort(); + +static void +avx512f_test () +{ + __m128d source1, source2; + __mmask8 dst, dst2, mask; + mask = 1; + int i; + + CMP(_CMP_EQ_OQ, !isunordered(s1[0], s2[0]) && s1[0] == s2[0]); + CMP(_CMP_LT_OS, !isunordered(s1[0], s2[0]) && s1[0] < s2[0]); + CMP(_CMP_LE_OS, !isunordered(s1[0], s2[0]) && s1[0] <= s2[0]); + CMP(_CMP_UNORD_Q, isunordered(s1[0], s2[0])); + CMP(_CMP_NEQ_UQ, isunordered(s1[0], s2[0]) || s1[0] != s2[0]); + CMP(_CMP_NLT_US, isunordered(s1[0], s2[0]) || s1[0] >= s2[0]); + CMP(_CMP_NLE_US, isunordered(s1[0], s2[0]) || s1[0] > s2[0]); + CMP(_CMP_ORD_Q, !isunordered(s1[0], s2[0])); + + CMP(_CMP_EQ_UQ, isunordered(s1[0], s2[0]) || s1[0] == s2[0]); + CMP(_CMP_NGE_US, isunordered(s1[0], s2[0]) || s1[0] < s2[0]); + CMP(_CMP_NGT_US, isunordered(s1[0], s2[0]) || s1[0] <= s2[0]); + + CMP(_CMP_FALSE_OQ, 0); + CMP(_CMP_NEQ_OQ, !isunordered(s1[0], s2[0]) && s1[0] != s2[0]); + CMP(_CMP_GE_OS, !isunordered(s1[0], s2[0]) && s1[0] >= s2[0]); + CMP(_CMP_GT_OS, !isunordered(s1[0], s2[0]) && s1[0] > s2[0]); + CMP(_CMP_TRUE_UQ, 1); + + CMP(_CMP_EQ_OS, !isunordered(s1[0], s2[0]) && s1[0] == s2[0]); + CMP(_CMP_LT_OQ, !isunordered(s1[0], s2[0]) && s1[0] < s2[0]); + CMP(_CMP_LE_OQ, !isunordered(s1[0], s2[0]) && s1[0] <= s2[0]); + CMP(_CMP_UNORD_S, isunordered(s1[0], s2[0])); + CMP(_CMP_NEQ_US, isunordered(s1[0], s2[0]) || s1[0] != s2[0]); + CMP(_CMP_NLT_UQ, isunordered(s1[0], s2[0]) || s1[0] >= s2[0]); + CMP(_CMP_NLE_UQ, isunordered(s1[0], s2[0]) || s1[0] > s2[0]); + CMP(_CMP_ORD_S, !isunordered(s1[0], s2[0])); + CMP(_CMP_EQ_US, isunordered(s1[0], s2[0]) || s1[0] == s2[0]); + CMP(_CMP_NGE_UQ, isunordered(s1[0], s2[0]) || s1[0] < s2[0]); + CMP(_CMP_NGT_UQ, isunordered(s1[0], s2[0]) || s1[0] <= s2[0]); + CMP(_CMP_FALSE_OS, 0); + CMP(_CMP_NEQ_OS, !isunordered(s1[0], s2[0]) && s1[0] != s2[0]); + CMP(_CMP_GE_OQ, !isunordered(s1[0], s2[0]) && s1[0] >= s2[0]); + CMP(_CMP_GT_OQ, !isunordered(s1[0], s2[0]) && s1[0] > s2[0]); + CMP(_CMP_TRUE_US, 1) +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcmpss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcmpss-1.c new file mode 100644 index 00000000000..9f370cb0e1e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcmpss-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler "vcmpss\[ \\t\]+\[^\n\]*\[^\}\]%xmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ +/* { dg-final { scan-assembler "vcmpss\[ \\t\]+\[^\n\]*\[^\}\]%xmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ +/* { dg-final { scan-assembler "vcmpss\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ +/* { dg-final { scan-assembler "vcmpss\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ + +#include + +volatile __m128 x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + m = _mm_cmp_ss_mask (x, x, _CMP_FALSE_OQ); + m = _mm_mask_cmp_ss_mask (m, x, x, _CMP_FALSE_OQ); + m = _mm_cmp_round_ss_mask (x, x, _CMP_FALSE_OQ, _MM_FROUND_NO_EXC); + m = _mm_mask_cmp_round_ss_mask (m, x, x, _CMP_FALSE_OQ, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcmpss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcmpss-2.c new file mode 100644 index 00000000000..7343cb05cdb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcmpss-2.c @@ -0,0 +1,68 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512f } */ +/* { dg-require-effective-target c99_runtime } */ +/* { dg-options "-O2 -mavx512f -std=c99" } */ + +#include "avx512f-check.h" +#include + +float s1[4] = {2134.3343, 6678.346, 453.345635, 54646.464}; +float s2[4] = {1485.1288, 6678.346, 8653.65635, 856.43576}; + +__mmask8 dst_ref; + +#define CMP(imm, rel) \ + dst_ref = 0; \ + dst_ref = ((int) rel) | dst_ref; \ + source1 = _mm_loadu_ps(s1); \ + source2 = _mm_loadu_ps(s2); \ + dst = _mm_cmp_ss_mask(source1, source2, imm); \ + dst2 = _mm_mask_cmp_ss_mask(mask, source1, source2, imm);\ + if (dst_ref != dst) abort(); \ + if ((dst_ref & mask)!= dst2) abort(); + +static void +avx512f_test () +{ + __m128 source1, source2; + __mmask8 dst, dst2, mask; + int i; + + mask = 1; + + CMP(_CMP_EQ_OQ, !isunordered(s1[0], s2[0]) && s1[0] == s2[0]); + CMP(_CMP_LT_OS, !isunordered(s1[0], s2[0]) && s1[0] < s2[0]); + CMP(_CMP_LE_OS, !isunordered(s1[0], s2[0]) && s1[0] <= s2[0]); + CMP(_CMP_UNORD_Q, isunordered(s1[0], s2[0])); + CMP(_CMP_NEQ_UQ, isunordered(s1[0], s2[0]) || s1[0] != s2[0]); + CMP(_CMP_NLT_US, isunordered(s1[0], s2[0]) || s1[0] >= s2[0]); + CMP(_CMP_NLE_US, isunordered(s1[0], s2[0]) || s1[0] > s2[0]); + CMP(_CMP_ORD_Q, !isunordered(s1[0], s2[0])); + + CMP(_CMP_EQ_UQ, isunordered(s1[0], s2[0]) || s1[0] == s2[0]); + CMP(_CMP_NGE_US, isunordered(s1[0], s2[0]) || s1[0] < s2[0]); + CMP(_CMP_NGT_US, isunordered(s1[0], s2[0]) || s1[0] <= s2[0]); + + CMP(_CMP_FALSE_OQ, 0); + CMP(_CMP_NEQ_OQ, !isunordered(s1[0], s2[0]) && s1[0] != s2[0]); + CMP(_CMP_GE_OS, !isunordered(s1[0], s2[0]) && s1[0] >= s2[0]); + CMP(_CMP_GT_OS, !isunordered(s1[0], s2[0]) && s1[0] > s2[0]); + CMP(_CMP_TRUE_UQ, 1); + + CMP(_CMP_EQ_OS, !isunordered(s1[0], s2[0]) && s1[0] == s2[0]); + CMP(_CMP_LT_OQ, !isunordered(s1[0], s2[0]) && s1[0] < s2[0]); + CMP(_CMP_LE_OQ, !isunordered(s1[0], s2[0]) && s1[0] <= s2[0]); + CMP(_CMP_UNORD_S, isunordered(s1[0], s2[0])); + CMP(_CMP_NEQ_US, isunordered(s1[0], s2[0]) || s1[0] != s2[0]); + CMP(_CMP_NLT_UQ, isunordered(s1[0], s2[0]) || s1[0] >= s2[0]); + CMP(_CMP_NLE_UQ, isunordered(s1[0], s2[0]) || s1[0] > s2[0]); + CMP(_CMP_ORD_S, !isunordered(s1[0], s2[0])); + CMP(_CMP_EQ_US, isunordered(s1[0], s2[0]) || s1[0] == s2[0]); + CMP(_CMP_NGE_UQ, isunordered(s1[0], s2[0]) || s1[0] < s2[0]); + CMP(_CMP_NGT_UQ, isunordered(s1[0], s2[0]) || s1[0] <= s2[0]); + CMP(_CMP_FALSE_OS, 0); + CMP(_CMP_NEQ_OS, !isunordered(s1[0], s2[0]) && s1[0] != s2[0]); + CMP(_CMP_GE_OQ, !isunordered(s1[0], s2[0]) && s1[0] >= s2[0]); + CMP(_CMP_GT_OQ, !isunordered(s1[0], s2[0]) && s1[0] > s2[0]); + CMP(_CMP_TRUE_US, 1) +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcomisd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcomisd-1.c new file mode 100644 index 00000000000..7b5aff4e34b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcomisd-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "vcomisd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm" } } */ + +#include + +volatile __m128d x; +volatile int res; + +void extern +avx512f_test (void) +{ + res = _mm_comi_round_sd (x, x, _CMP_LT_OS, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcomiss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcomiss-1.c new file mode 100644 index 00000000000..bc504190487 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcomiss-1.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcomiss\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm" 1 } } */ +/* { dg-final { scan-assembler-times "vcomiss\[ \\t\]+\[^{}\n\]*%xmm" 1 } } */ + +#include + +volatile __m128 x; +volatile int res; + +void extern +avx512f_test (void) +{ + res = _mm_comi_round_ss (x, x, _CMP_LT_OS, _MM_FROUND_NO_EXC); +} + +void extern +avx512f_test_2 (void) +{ + res = _mm_comi_round_ss (x, x, _CMP_LT_OS, _MM_FROUND_CUR_DIRECTION); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcompresspd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcompresspd-1.c new file mode 100644 index 00000000000..3f2cdff9c14 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcompresspd-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcompresspd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcompresspd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vcompresspd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +double *p; +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_compress_pd (x, m, x); + x = _mm512_maskz_compress_pd (m, x); + + _mm512_mask_compressstoreu_pd (p, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcompresspd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcompresspd-2.c new file mode 100644 index 00000000000..4acbadbe729 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcompresspd-2.c @@ -0,0 +1,62 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#define MASK ((1 << SIZE) - 1) +#include + +static void +CALC (double *s, double *r, MASK_TYPE mask) +{ + int i, k; + + for (i = 0, k = 0; i < SIZE; i++) + { + if (mask & (1 << i)) + r[k++] = s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s, res1, res2; + double res3[SIZE]; + MASK_TYPE compressed_mask, mask = MASK_VALUE; + double res_ref[SIZE]; + int i, mask_bit_count, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 12345 * (i + 200) * sign; + res1.a[i] = DEFAULT_VALUE; + res3[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_mask_compress_pd) (res1.x, mask, s.x); + res2.x = INTRINSIC (_maskz_compress_pd) (mask, s.x); + INTRINSIC (_mask_compressstoreu_pd) (res3, mask, s.x); + + mask_bit_count = __popcntd (mask & MASK); + compressed_mask = (1 << mask_bit_count) - 1; + CALC (s.a, res_ref, mask); + + MASK_MERGE (d) (res_ref, compressed_mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, compressed_mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, compressed_mask, SIZE); + if (checkVd (res3, res_ref, SIZE)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcompressps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcompressps-1.c new file mode 100644 index 00000000000..ab715c6fc09 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcompressps-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcompressps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcompressps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vcompressps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +float *p; +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_compress_ps (x, m, x); + x = _mm512_maskz_compress_ps (m, x); + + _mm512_mask_compressstoreu_ps (p, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcompressps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcompressps-2.c new file mode 100644 index 00000000000..f996452b091 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcompressps-2.c @@ -0,0 +1,62 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#define MASK ((1 << SIZE) - 1) +#include + +static void +CALC (float *s, float *r, MASK_TYPE mask) +{ + int i, k; + + for (i = 0, k = 0; i < SIZE; i++) + { + if (mask & (1 << i)) + r[k++] = s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s, res1, res2; + float res3[SIZE]; + MASK_TYPE compressed_mask, mask = MASK_VALUE; + float res_ref[SIZE]; + int i, mask_bit_count, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 12345 * (i + 200) * sign; + res1.a[i] = DEFAULT_VALUE; + res3[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_mask_compress_ps) (res1.x, mask, s.x); + res2.x = INTRINSIC (_maskz_compress_ps) (mask, s.x); + INTRINSIC (_mask_compressstoreu_ps) (res3, mask, s.x); + + mask_bit_count = __popcntd (mask & MASK); + compressed_mask = (1 << mask_bit_count) - 1; + CALC (s.a, res_ref, mask); + + MASK_MERGE () (res_ref, compressed_mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) + abort (); + + MASK_ZERO () (res_ref, compressed_mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref)) + abort (); + + MASK_MERGE () (res_ref, compressed_mask, SIZE); + if (checkVf (res3, res_ref, SIZE)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2pd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2pd-1.c new file mode 100644 index 00000000000..d2c616b08b5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2pd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtdq2pd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtdq2pd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtdq2pd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m256i s; +volatile __m512d res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi32_pd (s); + res = _mm512_mask_cvtepi32_pd (res, m, s); + res = _mm512_maskz_cvtepi32_pd (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2pd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2pd-2.c new file mode 100644 index 00000000000..77cdbab0eea --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2pd-2.c @@ -0,0 +1,58 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SRC_SIZE ((AVX512F_LEN_HALF) / 32) +#include "avx512f-mask-type.h" +#define DST_SIZE ((AVX512F_LEN) / 64) + +static void +CALC (int *s, double *r) +{ + int i; + + for (i = 0; i < DST_SIZE; i++) + { + r[i] = (double) s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN_HALF, i_d) s; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + double res_ref[DST_SIZE]; + int i, sign = 1; + + for (i = 0; i < SRC_SIZE; i++) + { + s.a[i] = 123456 * (i + 2000) * sign; + sign = -sign; + } + + for (i = 0; i < DST_SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_cvtepi32_pd) (s.x); + res2.x = INTRINSIC (_mask_cvtepi32_pd) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepi32_pd) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, DST_SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, DST_SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2ps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2ps-1.c new file mode 100644 index 00000000000..58e727d2814 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2ps-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtdq2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vcvtdq2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtdq2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtdq2ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtdq2ps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtdq2ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m512 res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi32_ps (s); + res = _mm512_mask_cvtepi32_ps (res, m, s); + res = _mm512_maskz_cvtepi32_ps (m, s); + res = _mm512_cvt_roundepi32_ps (s, _MM_FROUND_TO_NEAREST_INT); + res = _mm512_mask_cvt_roundepi32_ps (res, m, s, _MM_FROUND_TO_POS_INF); + res = _mm512_maskz_cvt_roundepi32_ps (m, s, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2ps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2ps-2.c new file mode 100644 index 00000000000..4a3e3aa4baf --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtdq2ps-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *s, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = (float) s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s; + UNION_TYPE (AVX512F_LEN, ) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 123456 * (i + 2000) * sign; + res2.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_cvtepi32_ps) (s.x); + res2.x = INTRINSIC (_mask_cvtepi32_ps) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepi32_ps) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2dq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2dq-1.c new file mode 100644 index 00000000000..964878f92ae --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2dq-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtpd2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2dq\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2dq\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2dq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d s; +volatile __m256i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtpd_epi32 (s); + res = _mm512_mask_cvtpd_epi32 (res, m, s); + res = _mm512_maskz_cvtpd_epi32 (m, s); + res = _mm512_cvt_roundpd_epi32 (s, _MM_FROUND_TO_NEAREST_INT); + res = _mm512_mask_cvt_roundpd_epi32 (res, m, s, _MM_FROUND_TO_POS_INF); + res = _mm512_maskz_cvt_roundpd_epi32 (m, s, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2dq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2dq-2.c new file mode 100644 index 00000000000..5ecb640aec5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2dq-2.c @@ -0,0 +1,59 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SRC_SIZE ((AVX512F_LEN) / 64) +#include "avx512f-mask-type.h" +#define DST_SIZE ((AVX512F_LEN_HALF) / 32) + +static void +CALC (double *s, unsigned *r) +{ + int i; + + for (i = 0; i < SRC_SIZE; i++) + { + r[i] = (s[i] >= 0) ? (int) (s[i] + 0.5) + : (int) (s[i] - 0.5); + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s; + UNION_TYPE (AVX512F_LEN_HALF, i_d) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[DST_SIZE] = { 0 }; + int i, sign = 1; + + for (i = 0; i < SRC_SIZE; i++) + { + s.a[i] = 123.456 * (i + 2000) * sign; + sign = -sign; + } + + for (i = 0; i < DST_SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_cvtpd_epi32) (s.x); + res2.x = INTRINSIC (_mask_cvtpd_epi32) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtpd_epi32) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SRC_SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SRC_SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2ps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2ps-1.c new file mode 100644 index 00000000000..457bb07700f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2ps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvtpd2ps\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 6 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2ps\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2ps\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%ymm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2ps\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __m256 y; + +void extern +avx512f_test (void) +{ + y = _mm512_cvtpd_ps (x); + y = _mm512_mask_cvtpd_ps (y, 4, x); + y = _mm512_maskz_cvtpd_ps (6, x); + y = _mm512_cvt_roundpd_ps (x, _MM_FROUND_TO_NEAREST_INT); + y = _mm512_mask_cvt_roundpd_ps (y, 4, x, _MM_FROUND_TO_NEG_INF); + y = _mm512_maskz_cvt_roundpd_ps (6, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2ps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2ps-2.c new file mode 100644 index 00000000000..fa17ef9aa4c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2ps-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +void static +CALC (float *e, UNION_TYPE (AVX512F_LEN, d) s1) +{ + int i; + for (i = 0; i < SIZE; i++) + e[i] = (float) s1.a[i]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1; + UNION_TYPE (AVX512F_LEN_HALF,) u1, u2, u3; + MASK_TYPE mask = MASK_VALUE; + float e[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 0.12 * (i + 37.09); + u1.a[i] = DEFAULT_VALUE; + u2.a[i] = DEFAULT_VALUE; + u3.a[i] = DEFAULT_VALUE; + } + + u1.x = INTRINSIC (_cvtpd_ps) (s1.x); + u2.x = INTRINSIC (_mask_cvtpd_ps) (u2.x, mask, s1.x); + u3.x = INTRINSIC (_maskz_cvtpd_ps) (mask, s1.x); + + CALC (e, s1); + + if (UNION_CHECK (AVX512F_LEN_HALF,) (u1, e)) + abort (); + + MASK_MERGE ()(e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF,) (u2, e)) + abort (); + + MASK_ZERO ()(e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF,) (u3, e)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2udq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2udq-1.c new file mode 100644 index 00000000000..28bfb17aa99 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2udq-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtpd2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2udq\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2udq\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtpd2udq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d s; +volatile __m256i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtpd_epu32 (s); + res = _mm512_mask_cvtpd_epu32 (res, m, s); + res = _mm512_maskz_cvtpd_epu32 (m, s); + res = _mm512_cvt_roundpd_epu32 (s, _MM_FROUND_TO_NEAREST_INT); + res = _mm512_mask_cvt_roundpd_epu32 (res, m, s, _MM_FROUND_TO_POS_INF); + res = _mm512_maskz_cvt_roundpd_epu32 (m, s, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2udq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2udq-2.c new file mode 100644 index 00000000000..24788d97a44 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtpd2udq-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SRC_SIZE ((AVX512F_LEN) / 64) +#include "avx512f-mask-type.h" +#define DST_SIZE ((AVX512F_LEN_HALF) / 32) + +static void +CALC (double *s, unsigned *r) +{ + int i; + + for (i = 0; i < DST_SIZE; i++) + { + r[i] = (unsigned) (s[i] + 0.5); + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s; + UNION_TYPE (AVX512F_LEN_HALF, i_d) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + unsigned res_ref[DST_SIZE] = { 0 }; + int i; + + for (i = 0; i < SRC_SIZE; i++) + { + s.a[i] = 123.456 * (i + 2000); + } + + for (i = 0; i < DST_SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_cvtpd_epu32) (s.x); + res2.x = INTRINSIC (_mask_cvtpd_epu32) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtpd_epu32) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SRC_SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SRC_SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtph2ps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtph2ps-1.c new file mode 100644 index 00000000000..b22a950dd66 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtph2ps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvtph2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 6 } } */ +/* { dg-final { scan-assembler-times "vcvtph2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtph2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtph2ps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vcvtph2ps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtph2ps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m256i x; +volatile __m512 y; + +void extern +avx512f_test (void) +{ + y = _mm512_cvtph_ps (x); + y = _mm512_mask_cvtph_ps (y, 4, x); + y = _mm512_maskz_cvtph_ps (6, x); + y = _mm512_cvt_roundph_ps (x, _MM_FROUND_NO_EXC); + y = _mm512_mask_cvt_roundph_ps (y, 4, x, _MM_FROUND_NO_EXC); + y = _mm512_maskz_cvt_roundph_ps (6, x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtph2ps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtph2ps-2.c new file mode 100644 index 00000000000..725e1e87bb7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtph2ps-2.c @@ -0,0 +1,84 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN_HALF, i_w) val; + UNION_TYPE (AVX512F_LEN,) res1,res2,res3; + MASK_TYPE mask = MASK_VALUE; + float exp[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + } + + exp[0] = 1; + exp[1] = 2; + exp[2] = 4; + exp[3] = 8; +#if AVX512F_LEN > 128 + exp[4] = -1; + exp[5] = -2; + exp[6] = -4; + exp[7] = -8; +#endif +#if AVX512F_LEN > 256 + exp[8] = 1; + exp[9] = 2; + exp[10] = 4; + exp[11] = 8; + exp[12] = -1; + exp[13] = -2; + exp[14] = -4; + exp[15] = -8; +#endif + + val.a[0] = 0x3c00; + val.a[1] = 0x4000; + val.a[2] = 0x4400; + val.a[3] = 0x4800; +#if AVX512F_LEN > 128 + val.a[4] = 0xbc00; + val.a[5] = 0xc000; + val.a[6] = 0xc400; + val.a[7] = 0xc800; +#endif +#if AVX512F_LEN > 256 + val.a[8] = 0x3c00; + val.a[9] = 0x4000; + val.a[10] = 0x4400; + val.a[11] = 0x4800; + val.a[12] = 0xbc00; + val.a[13] = 0xc000; + val.a[14] = 0xc400; + val.a[15] = 0xc800; +#endif + + res1.x = _mm512_cvtph_ps (val.x); + res2.x = _mm512_mask_cvtph_ps (res2.x, mask, val.x); + res3.x = _mm512_maskz_cvtph_ps (mask, val.x); + + if (UNION_CHECK (AVX512F_LEN,) (res1, exp)) + abort (); + + MASK_MERGE () (exp, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, exp)) + abort (); + + MASK_ZERO () (exp, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, exp)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-1.c new file mode 100644 index 00000000000..2db36e9c135 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtps2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtps2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtps2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtps2dq\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtps2dq\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtps2dq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 s; +volatile __m512i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtps_epi32 (s); + res = _mm512_mask_cvtps_epi32 (res, m, s); + res = _mm512_maskz_cvtps_epi32 (m, s); + res = _mm512_cvt_roundps_epi32 (s, _MM_FROUND_TO_NEAREST_INT); + res = _mm512_mask_cvt_roundps_epi32 (res, m, s, _MM_FROUND_TO_POS_INF); + res = _mm512_maskz_cvt_roundps_epi32 (m, s, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-2.c new file mode 100644 index 00000000000..a35c2ad02dd --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, float *s) +{ + int i; + for (i = 0; i < SIZE; i++) + r[i] = (s[i] >= 0) ? (int) (s[i] + 0.5) : (int) (s[i] - 0.5); +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3; + UNION_TYPE (AVX512F_LEN,) src; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + res2.a[i] = DEFAULT_VALUE; + src.a[i] = 1.5 + 34.67 * i * sign; + sign = sign * -1; + } + + res1.x = INTRINSIC (_cvtps_epi32) (src.x); + res2.x = INTRINSIC (_mask_cvtps_epi32) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtps_epi32) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-1.c new file mode 100644 index 00000000000..c6fc4733720 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m256 s; +volatile __m512d res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtps_pd (s); + res = _mm512_mask_cvtps_pd (res, m, s); + res = _mm512_maskz_cvtps_pd (m, s); + res = _mm512_cvt_roundps_pd (s, _MM_FROUND_NO_EXC); + res = _mm512_mask_cvt_roundps_pd (res, m, s, _MM_FROUND_NO_EXC); + res = _mm512_maskz_cvt_roundps_pd (m, s, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-2.c new file mode 100644 index 00000000000..5bed4f33fc9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-2.c @@ -0,0 +1,58 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SRC_SIZE ((AVX512F_LEN_HALF) / 32) +#include "avx512f-mask-type.h" +#define DST_SIZE ((AVX512F_LEN) / 64) + +static void +CALC (float *s, double *r) +{ + int i; + + for (i = 0; i < DST_SIZE; i++) + { + r[i] = (double) s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN_HALF, ) s; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + double res_ref[DST_SIZE]; + int i, sign = 1; + + for (i = 0; i < SRC_SIZE; i++) + { + s.a[i] = 123.456 * (i + 2000) * sign; + sign = -sign; + } + + for (i = 0; i < DST_SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_cvtps_pd) (s.x); + res2.x = INTRINSIC (_mask_cvtps_pd) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtps_pd) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, DST_SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, DST_SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-1.c new file mode 100644 index 00000000000..daf701484a6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvtps2ph\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vcvtps2ph\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtps2ph\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __m256i y; + +void extern +avx512f_test (void) +{ + y = _mm512_cvtps_ph (x, 0); + y = _mm512_maskz_cvtps_ph (4, x, 0); + y = _mm512_mask_cvtps_ph (y, 2, x, 0); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-2.c new file mode 100644 index 00000000000..6fe9effd6a0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-2.c @@ -0,0 +1,84 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN,) val; + UNION_TYPE (AVX512F_LEN_HALF, i_w) res1,res2,res3; + MASK_TYPE mask = MASK_VALUE; + short exp[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + } + + val.a[0] = 1; + val.a[1] = 2; + val.a[2] = 4; + val.a[3] = 8; +#if AVX512F_LEN > 128 + val.a[4] = -1; + val.a[5] = -2; + val.a[6] = -4; + val.a[7] = -8; +#endif +#if AVX512F_LEN > 256 + val.a[8] = 1; + val.a[9] = 2; + val.a[10] = 4; + val.a[11] = 8; + val.a[12] = -1; + val.a[13] = -2; + val.a[14] = -4; + val.a[15] = -8; +#endif + + exp[0] = 0x3c00; + exp[1] = 0x4000; + exp[2] = 0x4400; + exp[3] = 0x4800; +#if AVX512F_LEN > 128 + exp[4] = 0xbc00; + exp[5] = 0xc000; + exp[6] = 0xc400; + exp[7] = 0xc800; +#endif +#if AVX512F_LEN > 256 + exp[8] = 0x3c00; + exp[9] = 0x4000; + exp[10] = 0x4400; + exp[11] = 0x4800; + exp[12] = 0xbc00; + exp[13] = 0xc000; + exp[14] = 0xc400; + exp[15] = 0xc800; +#endif + + res1.x = _mm512_cvtps_ph (val.x, 0); + res2.x = _mm512_mask_cvtps_ph (res2.x, mask, val.x, 0); + res3.x = _mm512_maskz_cvtps_ph (mask, val.x, 0); + + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res1, exp)) + abort (); + + MASK_MERGE (i_w) (exp, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res2, exp)) + abort (); + + MASK_ZERO (i_w) (exp, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res3, exp)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-1.c new file mode 100644 index 00000000000..dfc08ab10d4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtps2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtps2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtps2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtps2udq\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtps2udq\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtps2udq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 s; +volatile __m512i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtps_epu32 (s); + res = _mm512_mask_cvtps_epu32 (res, m, s); + res = _mm512_maskz_cvtps_epu32 (m, s); + res = _mm512_cvt_roundps_epu32 (s, _MM_FROUND_TO_NEAREST_INT); + res = _mm512_mask_cvt_roundps_epu32 (res, m, s, _MM_FROUND_TO_NEG_INF); + res = _mm512_maskz_cvt_roundps_epu32 (m, s, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-2.c new file mode 100644 index 00000000000..7826e2d795c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-2.c @@ -0,0 +1,50 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (unsigned *r, float *s) +{ + int i; + for (i = 0; i < SIZE; i++) + r[i] = (unsigned) (s[i] + 0.5); +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3; + UNION_TYPE (AVX512F_LEN,) src; + MASK_TYPE mask = MASK_VALUE; + unsigned res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1.5 + 34.67 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtps_epu32) (src.x); + res2.x = INTRINSIC (_mask_cvtps_epu32) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtps_epu32) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c new file mode 100644 index 00000000000..84a10da4b6e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvtsd2si\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ +#include + +volatile __m128d x; +volatile unsigned y; + +void extern +avx512f_test (void) +{ + y = _mm_cvt_roundsd_i32 (x, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c new file mode 100644 index 00000000000..ca2ff58b3b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvtsd2siq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x; +volatile unsigned long long y; + +void extern +avx512f_test (void) +{ + y = _mm_cvt_roundsd_i64 (x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c new file mode 100644 index 00000000000..c5e80aed47d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ +#include + +volatile __m128d x; +volatile unsigned y; + +void extern +avx512f_test (void) +{ + y = _mm_cvtsd_u32 (x); + y = _mm_cvt_roundsd_u32 (x, _MM_FROUND_TO_NEG_INF); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-2.c new file mode 100644 index 00000000000..e53012446e0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-2.c @@ -0,0 +1,20 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void static +avx512f_test (void) +{ + union128d s1; + unsigned int d; + unsigned int e; + + s1.x = _mm_set_pd (24.43, 68.346); + d = _mm_cvtsd_u32 (s1.x); + e = (unsigned int)(s1.a[0] + 0.5); + + if (e != d) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c new file mode 100644 index 00000000000..9edecd31d8f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x; +volatile unsigned long long y; + +void extern +avx512f_test (void) +{ + y = _mm_cvtsd_u64 (x); + y = _mm_cvt_roundsd_u64 (x, _MM_FROUND_TO_POS_INF); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-2.c new file mode 100644 index 00000000000..92843d9e361 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-2.c @@ -0,0 +1,20 @@ +/* { dg-do run { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void static +avx512f_test (void) +{ + union128d s1; + unsigned long long d; + unsigned long long e; + + s1.x = _mm_set_pd (24.43, 68.346); + d = _mm_cvtsd_u64 (s1.x); + e = (unsigned long long)(s1.a[0] + 0.5); + + if (e != d) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c new file mode 100644 index 00000000000..2d49094131e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtsi2sdq\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x; +volatile long long n; + +void extern +avx512f_test (void) +{ + x = _mm_cvt_roundi64_sd (x, n, _MM_FROUND_TO_POS_INF); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c new file mode 100644 index 00000000000..9768a570169 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtsi2ss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x; +volatile int n; + +void extern +avx512f_test (void) +{ + x = _mm_cvt_roundi32_ss (x, n, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c new file mode 100644 index 00000000000..c9d2daf363f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtsi2ssq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x; +volatile long long n; + +void extern +avx512f_test (void) +{ + x = _mm_cvt_roundi64_ss (x, n, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c new file mode 100644 index 00000000000..1e52fea6396 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvtss2si\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ +#include + +volatile __m128 x; +volatile unsigned y; + +void extern +avx512f_test (void) +{ + y = _mm_cvt_roundss_i32 (x, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c new file mode 100644 index 00000000000..bc3e301e231 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvtss2siq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x; +volatile unsigned long long y; + +void extern +avx512f_test (void) +{ + y = _mm_cvt_roundss_i64 (x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c new file mode 100644 index 00000000000..70fcfe82c39 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ +#include + +volatile __m128 x; +volatile unsigned y; + +void extern +avx512f_test (void) +{ + y = _mm_cvtss_u32 (x); + y = _mm_cvt_roundss_u32 (x, _MM_FROUND_TO_NEG_INF); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-2.c new file mode 100644 index 00000000000..bdfab830956 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-2.c @@ -0,0 +1,20 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void static +avx512f_test (void) +{ + union128 s1; + unsigned int d; + unsigned int e; + + s1.x = _mm_set_ps (24.43, 68.346, 35.7765, 34508.51); + d = _mm_cvtss_u32 (s1.x); + e = (unsigned int)(s1.a[0] + 0.5); + + if (e != d) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c new file mode 100644 index 00000000000..0dd46cd9347 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x; +volatile unsigned long long y; + +void extern +avx512f_test (void) +{ + y = _mm_cvtss_u64 (x); + y = _mm_cvt_roundss_u64 (x, _MM_FROUND_TO_POS_INF); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-2.c new file mode 100644 index 00000000000..d19da31719c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-2.c @@ -0,0 +1,20 @@ +/* { dg-do run { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void static +avx512f_test (void) +{ + union128 s1; + unsigned long long d; + unsigned long long e; + + s1.x = _mm_set_ps (24.43, 68.346, 12.34, 80.67); + d = _mm_cvtss_u64 (s1.x); + e = (unsigned long long)(s1.a[0] + 0.5); + + if (e != d) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-1.c new file mode 100644 index 00000000000..5fad1e354c9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvttpd2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttpd2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttpd2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttpd2dq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvttpd2dq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvttpd2dq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d s; +volatile __m256i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvttpd_epi32 (s); + res = _mm512_mask_cvttpd_epi32 (res, m, s); + res = _mm512_maskz_cvttpd_epi32 (m, s); + res = _mm512_cvtt_roundpd_epi32 (s, _MM_FROUND_NO_EXC); + res = _mm512_mask_cvtt_roundpd_epi32 (res, m, s, _MM_FROUND_NO_EXC); + res = _mm512_maskz_cvtt_roundpd_epi32 (m, s, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-2.c new file mode 100644 index 00000000000..f73c5c3c9f8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-2.c @@ -0,0 +1,58 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SRC_SIZE ((AVX512F_LEN) / 64) +#include "avx512f-mask-type.h" +#define DST_SIZE ((AVX512F_LEN_HALF) / 32) + +static void +CALC (double *s, int *r) +{ + int i; + + for (i = 0; i < SRC_SIZE; i++) + { + r[i] = (int) s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s; + UNION_TYPE (AVX512F_LEN_HALF, i_d) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[DST_SIZE] = { 0 }; + int i, sign = 1; + + for (i = 0; i < SRC_SIZE; i++) + { + s.a[i] = 123.456 * (i + 2000) * sign; + sign = -sign; + } + + for (i = 0; i < DST_SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_cvttpd_epi32) (s.x); + res2.x = INTRINSIC (_mask_cvttpd_epi32) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvttpd_epi32) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SRC_SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SRC_SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2udq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2udq-1.c new file mode 100644 index 00000000000..36f2e40c59b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2udq-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvttpd2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttpd2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttpd2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttpd2udq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvttpd2udq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvttpd2udq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d s; +volatile __m256i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvttpd_epu32 (s); + res = _mm512_mask_cvttpd_epu32 (res, m, s); + res = _mm512_maskz_cvttpd_epu32 (m, s); + res = _mm512_cvtt_roundpd_epu32 (s, _MM_FROUND_NO_EXC); + res = _mm512_mask_cvtt_roundpd_epu32 (res, m, s, _MM_FROUND_NO_EXC); + res = _mm512_maskz_cvtt_roundpd_epu32 (m, s, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2udq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2udq-2.c new file mode 100644 index 00000000000..a8d3adc8d46 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2udq-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SRC_SIZE ((AVX512F_LEN) / 64) +#include "avx512f-mask-type.h" +#define DST_SIZE ((AVX512F_LEN_HALF) / 32) + +static void +CALC (double *s, unsigned *r) +{ + int i; + + for (i = 0; i < DST_SIZE; i++) + { + r[i] = (unsigned) s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s; + UNION_TYPE (AVX512F_LEN_HALF, i_d) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + unsigned res_ref[DST_SIZE] = { 0 }; + int i; + + for (i = 0; i < SRC_SIZE; i++) + { + s.a[i] = 123.456 * (i + 2000); + } + + for (i = 0; i < DST_SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_cvttpd_epu32) (s.x); + res2.x = INTRINSIC (_mask_cvttpd_epu32) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvttpd_epu32) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SRC_SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SRC_SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2dq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2dq-1.c new file mode 100644 index 00000000000..a156dbee9f1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2dq-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvttps2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttps2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttps2dq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttps2dq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[\\n\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvttps2dq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvttps2dq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 s; +volatile __m512i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvttps_epi32 (s); + res = _mm512_mask_cvttps_epi32 (res, m, s); + res = _mm512_maskz_cvttps_epi32 (m, s); + res = _mm512_cvtt_roundps_epi32 (s, _MM_FROUND_NO_EXC); + res = _mm512_mask_cvtt_roundps_epi32 (res, m, s, _MM_FROUND_NO_EXC); + res = _mm512_maskz_cvtt_roundps_epi32 (m, s, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2dq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2dq-2.c new file mode 100644 index 00000000000..f2cb5c708d2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2dq-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, float *s) +{ + int i; + for (i = 0; i < SIZE; i++) + r[i] = (int) s[i]; +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3; + UNION_TYPE (AVX512F_LEN,) src; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + res2.a[i] = DEFAULT_VALUE; + src.a[i] = 1.5 + 34.67 * i * sign; + sign = sign * -1; + } + + res1.x = INTRINSIC (_cvttps_epi32) (src.x); + res2.x = INTRINSIC (_mask_cvttps_epi32) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvttps_epi32) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-1.c new file mode 100644 index 00000000000..ffbfdfca328 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[\\n\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 s; +volatile __m512i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvttps_epu32 (s); + res = _mm512_mask_cvttps_epu32 (res, m, s); + res = _mm512_maskz_cvttps_epu32 (m, s); + res = _mm512_cvtt_roundps_epu32 (s, _MM_FROUND_NO_EXC); + res = _mm512_mask_cvtt_roundps_epu32 (res, m, s, _MM_FROUND_NO_EXC); + res = _mm512_maskz_cvtt_roundps_epu32 (m, s, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-2.c new file mode 100644 index 00000000000..2b0212e1c54 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-2.c @@ -0,0 +1,50 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (unsigned *r, float *s) +{ + int i; + for (i = 0; i < SIZE; i++) + r[i] = (unsigned) s[i]; +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3; + UNION_TYPE (AVX512F_LEN,) src; + MASK_TYPE mask = MASK_VALUE; + unsigned res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1.5 + 34.67 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvttps_epu32) (src.x); + res2.x = INTRINSIC (_mask_cvttps_epu32) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvttps_epu32) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-1.c new file mode 100644 index 00000000000..e813a24a0a1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvttsd2si\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttsd2si\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ +#include + +volatile __m128d x; +volatile y; + +void extern +avx512f_test (void) +{ + y = _mm_cvttsd_i32 (x); + y = _mm_cvtt_roundsd_i32 (x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-2.c new file mode 100644 index 00000000000..a447a873421 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-2.c @@ -0,0 +1,28 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" + +static int +__attribute__ ((noinline, unused)) +test (__m128d x) +{ + return _mm_cvttsd_i32 (x); +} + +static void +avx512f_test (void) +{ + union128d s1; + int res, res_ref; + + s1.x = _mm_set_pd (123.321, 456.987); + res = test (s1.x); + res_ref = (int) s1.a[0]; + + if (res != res_ref) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-1.c new file mode 100644 index 00000000000..a3b870c1004 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvttsd2siq\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttsd2siq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x; +volatile long long y; + +void extern +avx512f_test (void) +{ + y = _mm_cvttsd_i64 (x); + y = _mm_cvtt_roundsd_i64 (x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-2.c new file mode 100644 index 00000000000..7b759c1fa9e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-2.c @@ -0,0 +1,28 @@ +/* { dg-do run { target { ! { ia32 } } } } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" + +static int +__attribute__ ((noinline, unused)) +test (__m128d x) +{ + return _mm_cvttsd_i64 (x); +} + +static void +avx512f_test (void) +{ + union128d s1; + long long res, res_ref; + + s1.x = _mm_set_pd (123.321, 456.987); + res = test (s1.x); + res_ref = (long long) s1.a[0]; + + if (res != res_ref) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-1.c new file mode 100644 index 00000000000..3a88517a738 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ +#include + +volatile __m128d x; +volatile unsigned y; + +void extern +avx512f_test (void) +{ + y = _mm_cvttsd_u32 (x); + y = _mm_cvtt_roundsd_u32 (x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-2.c new file mode 100644 index 00000000000..00f7eb6e5d6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-2.c @@ -0,0 +1,27 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static unsigned int +__attribute__((noinline, unused)) +test (union128d s1) +{ + return _mm_cvttsd_u32 (s1.x); +} + +void static +avx512f_test (void) +{ + union128d s1; + unsigned int d; + unsigned int e; + + s1.x = _mm_set_pd (24.43, 68.346); + d = test (s1); + e = (unsigned int)s1.a[0]; + + if (e != d) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-1.c new file mode 100644 index 00000000000..87bbcb7be6e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x; +volatile unsigned long long y; + +void extern +avx512f_test (void) +{ + y = _mm_cvttsd_u64 (x); + y = _mm_cvtt_roundsd_u64 (x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-2.c new file mode 100644 index 00000000000..4aa45ef8264 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-2.c @@ -0,0 +1,27 @@ +/* { dg-do run { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static unsigned long long +__attribute__((noinline, unused)) +test (union128d s1) +{ + return _mm_cvttsd_u64 (s1.x); +} + +void static +avx512f_test (void) +{ + union128d s1; + unsigned long long d; + unsigned long long e; + + s1.x = _mm_set_pd (24.43, 68.346); + d = test (s1); + e = (unsigned long long)s1.a[0]; + + if (e != d) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-1.c new file mode 100644 index 00000000000..7669a1729a2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvttss2si\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttss2si\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ +#include + +volatile __m128 x; +volatile y; + +void extern +avx512f_test (void) +{ + y = _mm_cvttss_i32 (x); + y = _mm_cvtt_roundss_i32 (x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-2.c new file mode 100644 index 00000000000..2aa62c07140 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-2.c @@ -0,0 +1,28 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" + +static int +__attribute__ ((noinline, unused)) +test (__m128 x) +{ + return _mm_cvttss_i32 (x); +} + +static void +avx512f_test (void) +{ + union128 s1; + int res, res_ref; + + s1.x = _mm_set_ps (24.43, 68.346, 43.35, 546.46); + res = test (s1.x); + res_ref = (int) s1.a[0]; + + if (res != res_ref) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-1.c new file mode 100644 index 00000000000..4888d6d1d9a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvttss2siq\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttss2siq\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x; +volatile long long y; + +void extern +avx512f_test (void) +{ + y = _mm_cvttss_i64 (x); + y = _mm_cvtt_roundss_i64 (x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-2.c new file mode 100644 index 00000000000..cf33b997a8e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-2.c @@ -0,0 +1,28 @@ +/* { dg-do run { target { ! { ia32 } } } } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" + +static int +__attribute__ ((noinline, unused)) +test (__m128 x) +{ + return _mm_cvttss_i64 (x); +} + +static void +avx512f_test (void) +{ + union128 s1; + long long res, res_ref; + + s1.x = _mm_set_ps (24.43, 68.346, 43.35, 546.46); + res = test (s1.x); + res_ref = (long long) s1.a[0]; + + if (res != res_ref) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-1.c new file mode 100644 index 00000000000..b270276352c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ +#include + +volatile __m128 x; +volatile unsigned y; + +void extern +avx512f_test (void) +{ + y = _mm_cvttss_u32 (x); + y = _mm_cvtt_roundss_u32 (x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-2.c new file mode 100644 index 00000000000..4d19104776b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-2.c @@ -0,0 +1,27 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static unsigned int +__attribute__((noinline, unused)) +test (union128 s1) +{ + return _mm_cvttss_u32 (s1.x); +} + +void static +avx512f_test (void) +{ + union128 s1; + unsigned int d; + unsigned int e; + + s1.x = _mm_set_ps (24.43, 68.346, 45.12, 90.97); + d = test (s1); + e = (unsigned int)s1.a[0]; + + if (e != d) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-1.c new file mode 100644 index 00000000000..7c3b473c3b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x; +volatile unsigned long long y; + +void extern +avx512f_test (void) +{ + y = _mm_cvttss_u64 (x); + y = _mm_cvtt_roundss_u64 (x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-2.c new file mode 100644 index 00000000000..85f55d6cd7d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-2.c @@ -0,0 +1,27 @@ +/* { dg-do run { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static unsigned long long +__attribute__((noinline, unused)) +test (union128 s1) +{ + return _mm_cvttss_u64 (s1.x); +} + +void static +avx512f_test (void) +{ + union128 s1; + unsigned long long d; + unsigned long long e; + + s1.x = _mm_set_ps (24.43, 68.346, 10.756, 89.145); + d = test (s1); + e = (unsigned long long)s1.a[0]; + + if (e != d) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-1.c new file mode 100644 index 00000000000..933e785e866 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtudq2pd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtudq2pd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtudq2pd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m256i s; +volatile __m512d res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepu32_pd (s); + res = _mm512_mask_cvtepu32_pd (res, m, s); + res = _mm512_maskz_cvtepu32_pd (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-2.c new file mode 100644 index 00000000000..814a7b769c2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SRC_SIZE ((AVX512F_LEN_HALF) / 32) +#include "avx512f-mask-type.h" +#define DST_SIZE ((AVX512F_LEN) / 64) + +static void +CALC (unsigned *s, double *r) +{ + int i; + + for (i = 0; i < DST_SIZE; i++) + { + r[i] = (double) s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN_HALF, i_d) s; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + double res_ref[DST_SIZE]; + int i; + + for (i = 0; i < SRC_SIZE; i++) + { + s.a[i] = 123456 * (i + 2000); + } + + for (i = 0; i < DST_SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_cvtepu32_pd) (s.x); + res2.x = INTRINSIC (_mask_cvtepu32_pd) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepu32_pd) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, DST_SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, DST_SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2ps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2ps-1.c new file mode 100644 index 00000000000..a42a58890a2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2ps-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtudq2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vcvtudq2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtudq2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtudq2ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtudq2ps\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vcvtudq2ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m512 res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepu32_ps (s); + res = _mm512_mask_cvtepu32_ps (res, m, s); + res = _mm512_maskz_cvtepu32_ps (m, s); + res = _mm512_cvt_roundepu32_ps (s, _MM_FROUND_TO_NEAREST_INT); + res = _mm512_mask_cvt_roundepu32_ps (res, m, s, _MM_FROUND_TO_NEG_INF); + res = _mm512_maskz_cvt_roundepu32_ps (m, s, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2ps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2ps-2.c new file mode 100644 index 00000000000..c43df063abc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2ps-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (unsigned *s, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = (float) s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s; + UNION_TYPE (AVX512F_LEN, ) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 123456 * (i + 2000); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtepu32_ps) (s.x); + res2.x = INTRINSIC (_mask_cvtepu32_ps) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepu32_ps) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-1.c new file mode 100644 index 00000000000..b00c321c500 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "vcvtusi2sd\[ \\t\]+\[^\n\]*%xmm\[0-9\]" } } */ + +#include + +volatile __m128d x; +volatile unsigned n; + +void extern +avx512f_test (void) +{ + x = _mm_cvtu32_sd (x, n); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-2.c new file mode 100644 index 00000000000..2100cbeb423 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-2.c @@ -0,0 +1,31 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static void + __attribute__ ((noinline, unused)) +compute_vcvtusi2sd (double *s1, unsigned s2, double *r) +{ + r[0] = (double) s2; + r[1] = s1[1]; +} + +static void +avx512f_test (void) +{ + union128d s1, res; + unsigned s2; + double res_ref[2]; + + s1.x = _mm_set_pd (-24.43, -43.35); + s2 = 0xFEDCA987; + + res.x = _mm_cvtu32_sd (s1.x, s2); + + compute_vcvtusi2sd (s1.a, s2, res_ref); + + if (check_union128d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c new file mode 100644 index 00000000000..097cfa27b51 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtusi2sd\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtusi2sd\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x; +volatile unsigned long long n; + +void extern +avx512f_test (void) +{ + x = _mm_cvtu64_sd (x, n); + x = _mm_cvt_roundu64_sd (x, n, _MM_FROUND_TO_POS_INF); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-2.c new file mode 100644 index 00000000000..997e21bb54d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-2.c @@ -0,0 +1,31 @@ +/* { dg-do run { target { ! { ia32 } } } } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static void + __attribute__ ((noinline, unused)) +compute_vcvtusi2sd (double *s1, unsigned long long s2, double *r) +{ + r[0] = (double) s2; + r[1] = s1[1]; +} + +static void +avx512f_test (void) +{ + union128d s1, res; + unsigned long long s2; + double res_ref[4]; + + s1.x = _mm_set_pd (-24.43, -43.35); + s2 = 0xFEDCBA9876543210; + + res.x = _mm_cvtu64_sd (s1.x, s2); + + compute_vcvtusi2sd (s1.a, s2, res_ref); + + if (check_union128d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c new file mode 100644 index 00000000000..93b53fd543e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x; +volatile unsigned n; + +void extern +avx512f_test (void) +{ + x = _mm_cvtu32_ss (x, n); + x = _mm_cvt_roundu32_ss (x, n, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-2.c new file mode 100644 index 00000000000..b5f67dd0ba0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-2.c @@ -0,0 +1,33 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static void + __attribute__ ((noinline, unused)) +compute_vcvtusi2ss (float *s1, unsigned s2, float *r) +{ + r[0] = (float) s2; + r[1] = s1[1]; + r[2] = s1[2]; + r[3] = s1[3]; +} + +static void +avx512f_test (void) +{ + union128 s1, res; + unsigned s2; + float res_ref[4]; + + s1.x = _mm_set_ps (-24.43, 68.346, -43.35, 546.46); + s2 = 0xFEDCA987; + + res.x = _mm_cvtu32_ss (s1.x, s2); + + compute_vcvtusi2ss (s1.a, s2, res_ref); + + if (check_union128 (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c new file mode 100644 index 00000000000..f1f691e88d8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^\n\]*%xmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x; +volatile unsigned long long n; + +void extern +avx512f_test (void) +{ + x = _mm_cvtu64_ss (x, n); + x = _mm_cvt_roundu64_ss (x, n, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-2.c new file mode 100644 index 00000000000..eeb499aac9f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-2.c @@ -0,0 +1,33 @@ +/* { dg-do run { target { ! { ia32 } } } } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +static void + __attribute__ ((noinline, unused)) +compute_vcvtusi2ss (float *s1, unsigned long long s2, float *r) +{ + r[0] = (float) s2; + r[1] = s1[1]; + r[2] = s1[2]; + r[3] = s1[3]; +} + +static void +avx512f_test (void) +{ + union128 s1, res; + unsigned long long s2; + float res_ref[4]; + + s1.x = _mm_set_ps (-24.43, 68.346, -43.35, 546.46); + s2 = 0xFEDCBA9876543210; + + res.x = _mm_cvtu64_ss (s1.x, s2); + + compute_vcvtusi2ss (s1.a, s2, res_ref); + + if (check_union128 (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vdivpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vdivpd-1.c new file mode 100644 index 00000000000..660c9566342 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vdivpd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vdivpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vdivpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vdivpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vdivpd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vdivpd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vdivpd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_div_pd (x, x); + x = _mm512_mask_div_pd (x, m, x, x); + x = _mm512_maskz_div_pd (m, x, x); + x = _mm512_div_round_pd (x, x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_div_round_pd (x, m, x, x, _MM_FROUND_TO_NEG_INF); + x = _mm512_maskz_div_round_pd (m, x, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vdivpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vdivpd-2.c new file mode 100644 index 00000000000..761ee20f898 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vdivpd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (double *r, double *s1, double *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] / s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign + 1.0; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_div_pd) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_div_pd) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_div_pd) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vdivps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vdivps-1.c new file mode 100644 index 00000000000..8274440f7ea --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vdivps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vdivps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vdivps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vdivps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vdivps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vdivps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vdivps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_div_ps (x, x); + x = _mm512_mask_div_ps (x, m, x, x); + x = _mm512_maskz_div_ps (m, x, x); + x = _mm512_div_round_ps (x, x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_div_round_ps (x, m, x, x, _MM_FROUND_TO_POS_INF); + x = _mm512_maskz_div_round_ps (m, x, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vdivps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vdivps-2.c new file mode 100644 index 00000000000..5249bbdf4d2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vdivps-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (float *r, float *s1, float *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] / s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN,) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign + 1.0; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_div_ps) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_div_ps) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_div_ps) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vec-init.c b/gcc/testsuite/gcc.target/i386/avx512f-vec-init.c new file mode 100644 index 00000000000..acbd34f3f36 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vec-init.c @@ -0,0 +1,121 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+%zmm" 2 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastd" 1 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastq" 1 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastb" 2 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastw" 2 } } */ +/* { dg-final { scan-assembler-times "vbroadcastss" 1 } } */ +/* { dg-final { scan-assembler-times "vbroadcastsd" 1 } } */ + +#include + +typedef char __v64qi __attribute__ ((vector_size (64))); +typedef short __v32hi __attribute__ ((vector_size (64))); + +__v64qi foo_1 (char c) +{ + __v64qi v1 = { + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c + }; + + return v1; +} + +__v32hi foo_2 (short c) +{ + __v32hi v1 = { + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c + }; + + return v1; +} + +__v16si foo_3 (int c) +{ + __v16si v1 = { + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c + }; + + return v1; +} + +__v8di foo_4 (long long c) +{ + __v8di v1 = { + c, c, c, c, c, c, c, c + }; + + return v1; +} + +__v32qi foo_5 (char c) +{ + __v32qi v1 = { + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c + }; + + return v1; +} + +__v16hi foo_6 (short c) +{ + __v16hi v1 = { + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c + }; + + return v1; +} + +__v8si foo_7 (int c) +{ + __v8si v1 = { + c, c, c, c, c, c, c, c + }; + + return v1; +} + +__v4di foo_8 (long long c) +{ + __v4di v1 = { + c, c, c, c + }; + + return v1; +} + + +__v16qi foo_9 (char c) +{ + __v16qi v1 = { + c, c, c, c, c, c, c, c, + c, c, c, c, c, c, c, c + }; + + return v1; +} + +__v8hi foo_10(short c) +{ + __v8hi v1 = { + c, c, c, c, c, c, c, c + }; + + return v1; +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vec-unpack.c b/gcc/testsuite/gcc.target/i386/avx512f-vec-unpack.c new file mode 100644 index 00000000000..8dcdac7b063 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vec-unpack.c @@ -0,0 +1,127 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -mavx512f" } */ + +long long *D; +int *S; +short *H; +char *Q; + +long long foo_unpack_1 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + D[i] *= S[i]; + + return D[ind]; +} + +long long foo_unpack_2 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + D[i] *= H[i]; + + return D[ind]; +} + +long long foo_unpack_3 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + D[i] *= Q[i]; + + return D[ind]; +} + +int foo_unpack_4 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + S[i] *= H[i]; + + return S[ind]; +} + +int foo_unpack_5 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + S[i] *= Q[i]; + + return S[ind]; +} + +short foo_unpack_6 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + H[i] *= Q[i]; + + return H[ind]; +} + +int foo_expand_1 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + S[i] *= D[i]; + + return S[ind]; +} + +short foo_expand_2 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + H[i] *= D[i]; + + return H[ind]; +} + +char foo_expand_3 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + Q[i] *= D[i]; + + return Q[ind]; +} + +short foo_expand_4 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + H[i] *= S[i]; + + return H[ind]; +} + +char foo_expand_5 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + Q[i] *= S[i]; + + return Q[ind]; +} + +char foo_expand_6 (int low, int high, int ind) +{ + int i; + + for (i = low; i <= high; i++) + Q[i] *= H[i]; + + return Q[ind]; +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-1.c new file mode 100644 index 00000000000..fc121656f20 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vexpandpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vexpandpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ + +#include + +double *p; +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_expand_pd (x, m, x); + x = _mm512_maskz_expand_pd (m, x); + + x = _mm512_mask_expandloadu_pd (x, m, p); + x = _mm512_maskz_expandloadu_pd (m, p); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-2.c new file mode 100644 index 00000000000..088a2dd02e1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (double *s, double *r, MASK_TYPE mask) +{ + int i, k; + + for (i = 0, k = 0; i < SIZE; i++) + { + if (mask & (1 << i)) + r[i] = s[k++]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + double s2[SIZE]; + double res_ref1[SIZE]; + double res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 123.456 * (i + 200) * sign; + s2[i] = 789.012 * (i + 300) * sign; + res1.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_mask_expand_pd) (res1.x, mask, s1.x); + res2.x = INTRINSIC (_maskz_expand_pd) (mask, s1.x); + res3.x = INTRINSIC (_mask_expandloadu_pd) (res3.x, mask, s2); + res4.x = INTRINSIC (_maskz_expandloadu_pd) (mask, s2); + + CALC (s1.a, res_ref1, mask); + CALC (s2, res_ref2, mask); + + MASK_MERGE (d) (res_ref1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref1)) + abort (); + + MASK_ZERO (d) (res_ref1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref1)) + abort (); + + MASK_MERGE (d) (res_ref2, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref2)) + abort (); + + MASK_ZERO (d) (res_ref2, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res4, res_ref2)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vexpandps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vexpandps-1.c new file mode 100644 index 00000000000..fcf87642b40 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vexpandps-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vexpandps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vexpandps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ + +#include + +float *p; +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_expand_ps (x, m, x); + x = _mm512_maskz_expand_ps (m, x); + + x = _mm512_mask_expandloadu_ps (x, m, p); + x = _mm512_maskz_expandloadu_ps (m, p); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vexpandps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vexpandps-2.c new file mode 100644 index 00000000000..1faf3dfe917 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vexpandps-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (float *s, float *r, MASK_TYPE mask) +{ + int i, k; + + for (i = 0, k = 0; i < SIZE; i++) + { + if (mask & (1 << i)) + r[i] = s[k++]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s1, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + float s2[SIZE]; + float res_ref1[SIZE]; + float res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 123.456 * (i + 200) * sign; + s2[i] = 789.012 * (i + 300) * sign; + res1.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_mask_expand_ps) (res1.x, mask, s1.x); + res2.x = INTRINSIC (_maskz_expand_ps) (mask, s1.x); + res3.x = INTRINSIC (_mask_expandloadu_ps) (res3.x, mask, s2); + res4.x = INTRINSIC (_maskz_expandloadu_ps) (mask, s2); + + CALC (s1.a, res_ref1, mask); + CALC (s2, res_ref2, mask); + + MASK_MERGE () (res_ref1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref1)) + abort (); + + MASK_ZERO () (res_ref1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref1)) + abort (); + + MASK_MERGE () (res_ref2, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res3, res_ref2)) + abort (); + + MASK_ZERO () (res_ref2, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res4, res_ref2)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-1.c new file mode 100644 index 00000000000..b32d161ba9a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512 x; +volatile __m128 y; + +void extern +avx512f_test (void) +{ + y = _mm512_extractf32x4_ps (x, 1); + y = _mm512_mask_extractf32x4_ps (y, 2, x, 1); + y = _mm512_maskz_extractf32x4_ps (2, x, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-1.c new file mode 100644 index 00000000000..6259ac80624 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vextractf64x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vextractf64x4\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vextractf64x4\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512d x; +volatile __m256d y; + +void extern +avx512f_test (void) +{ + y = _mm512_extractf64x4_pd (x, 1); + y = _mm512_maskz_extractf64x4_pd (2, x, 1); + y = _mm512_mask_extractf64x4_pd (y, 2, x, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-2.c new file mode 100644 index 00000000000..b73044917b5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-2.c @@ -0,0 +1,65 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512f } */ +/* { dg-options "-O2 -mavx512f" } */ + +#include +#include "avx512f-check.h" +#include "avx512f-helper.h" + +void static +avx512f_test (void) +{ + union512d s1; + union256d res1, res2, res3; + __mmask8 mask = 0xBA; + double res_ref[4]; + int j; + + for (j = 0; j < 8; j++) + { + s1.a[j] = j * j / 4.56; + } + + for (j = 0; j < 4; j++) + { + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + } + + res1.x = _mm512_extractf64x4_pd (s1.x, 0); + res2.x = _mm512_mask_extractf64x4_pd (res2.x, mask, s1.x, 0); + res3.x = _mm512_maskz_extractf64x4_pd (mask, s1.x, 0); + + memset (res_ref, 0, 32); + memcpy (res_ref, s1.a, 32); + + if (check_union256d (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, 4); + if (check_union256d (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, 4); + if (check_union256d (res3, res_ref)) + abort (); + + res1.x = _mm512_extractf64x4_pd (s1.x, 1); + res2.x = _mm512_mask_extractf64x4_pd (res2.x, mask, s1.x, 1); + res3.x = _mm512_maskz_extractf64x4_pd (mask, s1.x, 1); + + memset (res_ref, 0, 32); + memcpy (res_ref, s1.a + 4, 32); + + if (check_union256d (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, 4); + if (check_union256d (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, 4); + if (check_union256d (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-1.c new file mode 100644 index 00000000000..87c92f7b5d8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vextracti32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vextracti32x4\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vextracti32x4\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m128i y; + +void extern +avx512f_test (void) +{ + y = _mm512_extracti32x4_epi32 (x, 1); + y = _mm512_mask_extracti32x4_epi32 (y, 2, x, 1); + y = _mm512_maskz_extracti32x4_epi32 (2, x, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-1.c new file mode 100644 index 00000000000..71268bcbe52 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vextracti64x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vextracti64x4\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vextracti64x4\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512i x; +volatile __m256i y; + +void extern +avx512f_test (void) +{ + y = _mm512_extracti64x4_epi64 (x, 1); + y = _mm512_mask_extracti64x4_epi64 (y, 2, x, 1); + y = _mm512_maskz_extracti64x4_epi64 (2, x, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-2.c new file mode 100644 index 00000000000..9753d2461f0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-2.c @@ -0,0 +1,62 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512f } */ +/* { dg-options "-O2 -mavx512f" } */ + +#include +#include "avx512f-check.h" +#include "avx512f-helper.h" + +void static +avx512f_test (void) +{ + union512i_q s1; + union256i_q res1, res2, res3; + __mmask8 mask = 0xBA; + long long int res_ref[4]; + int j; + + for (j = 0; j < 8; j++) + s1.a[j] = j * j; + + for (j = 0; j < 4; j++) + { + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + } + res1.x = _mm512_extracti64x4_epi64 (s1.x, 0); + res2.x = _mm512_mask_extracti64x4_epi64 (res2.x, mask, s1.x, 0); + res3.x = _mm512_maskz_extracti64x4_epi64 (mask, s1.x, 0); + + memset (res_ref, 0, 32); + memcpy (res_ref, s1.a, 32); + + if (check_union256i_q (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, 4); + if (check_union256i_q (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, 4); + if (check_union256i_q (res3, res_ref)) + abort (); + + res1.x = _mm512_extracti64x4_epi64 (s1.x, 1); + res2.x = _mm512_mask_extracti64x4_epi64 (res2.x, mask, s1.x, 1); + res3.x = _mm512_maskz_extracti64x4_epi64 (mask, s1.x, 1); + + memset (res_ref, 0, 32); + memcpy (res_ref, s1.a + 4, 32); + + if (check_union256i_q (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, 4); + if (check_union256i_q (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, 4); + if (check_union256i_q (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-1.c new file mode 100644 index 00000000000..e452ebcffd0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vfixupimmpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vfixupimmpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfixupimmpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfixupimmpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vfixupimmpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfixupimmpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x1, x2; +volatile __m512i y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fixupimm_pd (x1, x2, y, 3); + x1 = _mm512_mask_fixupimm_pd (x1, m, x2, y, 3); + x1 = _mm512_maskz_fixupimm_pd (m, x1, x2, y, 3); + x1 = _mm512_fixupimm_round_pd (x1, x2, y, 3, _MM_FROUND_NO_EXC); + x1 = _mm512_mask_fixupimm_round_pd (x1, m, x2, y, 3, _MM_FROUND_NO_EXC); + x1 = _mm512_maskz_fixupimm_round_pd (m, x1, x2, y, 3, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c new file mode 100644 index 00000000000..263fecd5f71 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c @@ -0,0 +1,115 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include "math.h" +#include "values.h" + +static void +CALC (double *r, double src, long long tbl) +{ + switch (tbl & 0xf) + { + case 0: + *r = src; + break; + case 1: + *r = src; + break; + case 2: + *r = signbit (src) ? -NAN : NAN; + break; + case 3: + *r = -NAN; + break; + case 4: + *r = -INFINITY; + break; + case 5: + *r = INFINITY; + break; + case 6: + *r = signbit (src) ? -INFINITY : INFINITY; + break; + case 7: + *r = 1.0 / -INFINITY; + break; + case 8: + *r = 0.0; + break; + case 9: + *r = -1.0; + break; + case 10: + *r = 1.0; + break; + case 11: + *r = 1.0 / 2.0; + break; + case 12: + *r = 90.0; + break; + case 13: + *r = M_PI_2; + break; + case 14: + *r = MAXDOUBLE; + break; + case 15: + *r = -MAXDOUBLE; + break; + default: + abort (); + } +} + +void static +TEST (void) +{ + int i, j, k; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3, s1; + UNION_TYPE (AVX512F_LEN, i_q) s2; + double res_ref[SIZE]; + + + float vals[2] = { -10, 10 }; + int controls[8] = {0x11111111, 0x77777777, 0x77777777, 0x88888888, + 0x99999999, 0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc}; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < 2; i++) + { + for (j = 0; j < SIZE; j++) + { + s1.a[j] = vals[i]; + s2.a[j] = controls[j]; + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + + CALC (&res_ref[j], s1.a[j], s2.a[j]); + } + + res1.x = INTRINSIC (_fixupimm_pd) (res1.x, s1.x, s2.x, 0); + res2.x = INTRINSIC (_mask_fixupimm_pd) (res2.x, mask, s1.x, s2.x, 0); + res3.x = INTRINSIC (_maskz_fixupimm_pd) (mask, res3.x, s1.x, s2.x, 0); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE(d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + MASK_ZERO(d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); + } +} + diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-1.c new file mode 100644 index 00000000000..5cf045df342 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vfixupimmps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vfixupimmps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfixupimmps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfixupimmps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vfixupimmps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfixupimmps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x1, x2; +volatile __m512i y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fixupimm_ps (x1, x2, y, 3); + x1 = _mm512_mask_fixupimm_ps (x1, m, x2, y, 3); + x1 = _mm512_maskz_fixupimm_ps (m, x1, x2, y, 3); + x1 = _mm512_fixupimm_round_ps (x1, x2, y, 3, _MM_FROUND_NO_EXC); + x1 = _mm512_mask_fixupimm_round_ps (x1, m, x2, y, 3, _MM_FROUND_NO_EXC); + x1 = _mm512_maskz_fixupimm_round_ps (m, x1, x2, y, 3, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c new file mode 100644 index 00000000000..9fca53705de --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c @@ -0,0 +1,121 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "math.h" +#include "values.h" + +static void +CALC (float *r, float src, int tbl) +{ + switch (tbl & 0xf) + { + case 0: + *r = src; + break; + case 1: + *r = src; + break; + case 2: + *r = signbit (src) ? -NAN : NAN; + break; + case 3: + *r = -NAN; + break; + case 4: + *r = -INFINITY; + break; + case 5: + *r = INFINITY; + break; + case 6: + *r = signbit (src) ? -INFINITY : INFINITY; + break; + case 7: + *r = 1.0 / -INFINITY; + break; + case 8: + *r = 0.0; + break; + case 9: + *r = -1.0; + break; + case 10: + *r = 1.0; + break; + case 11: + *r = 1.0 / 2.0; + break; + case 12: + *r = 90.0; + break; + case 13: + *r = M_PI_2; + break; + case 14: + *r = MAXFLOAT; + break; + case 15: + *r = -MAXFLOAT; + break; + default: + abort (); + } +} + + +void static +TEST (void) +{ + int i, j, k; + UNION_TYPE (AVX512F_LEN,) res1, res2, res3, s1; + UNION_TYPE (AVX512F_LEN, i_d) s2; + float res_ref[SIZE]; + + + float vals[2] = { -10, 10 }; + int controls[16] = { 0x11111111, + 0x77777777, 0x88888888, 0x99999999, + 0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc, + 0x77777777, 0x88888888, 0x99999999, + 0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc, + 0xdddddddd, 0xeeeeeeee, 0xffffffff + }; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < 2; i++) + { + for (j = 0; j < SIZE; j++) + { + s1.a[j] = vals[i]; + s2.a[j] = controls[j]; + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + + CALC (&res_ref[j], s1.a[j], s2.a[j]); + } + + res1.x = INTRINSIC (_fixupimm_ps) (res1.x, s1.x, s2.x, 0); + res2.x = INTRINSIC (_mask_fixupimm_ps) (res2.x, mask, s1.x, s2.x, 0); + res3.x = INTRINSIC (_maskz_fixupimm_ps) (mask, res3.x, s1.x, s2.x, 0); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE() (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + MASK_ZERO() (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); + } +} + diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-1.c new file mode 100644 index 00000000000..76676afef82 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vfixupimmsd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vfixupimmsd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfixupimmsd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfixupimmsd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vfixupimmsd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfixupimmsd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m128d x; +volatile __m128i y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm_fixupimm_sd (x, x, y, 3); + x = _mm_mask_fixupimm_sd (x, m, x, y, 3); + x = _mm_maskz_fixupimm_sd (m, x, x, y, 3); + x = _mm_fixupimm_round_sd (x, x, y, 3, _MM_FROUND_NO_EXC); + x = _mm_mask_fixupimm_round_sd (x, m, x, y, 3, _MM_FROUND_NO_EXC); + x = _mm_maskz_fixupimm_round_sd (m, x, x, y, 3, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c new file mode 100644 index 00000000000..ebd288ed268 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c @@ -0,0 +1,118 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" +#include "avx512f-helper.h" +#include +#include +#include "avx512f-mask-type.h" + +void +compute_fixupimmpd (double *r, double src, long long tbl) +{ + switch (tbl & 0xf) + { + case 0: + *r = src; + break; + case 1: + *r = src; + break; + case 2: + *r = signbit (src) ? -NAN : NAN; + break; + case 3: + *r = -NAN; + break; + case 4: + *r = -INFINITY; + break; + case 5: + *r = INFINITY; + break; + case 6: + *r = signbit (src) ? -INFINITY : INFINITY; + break; + case 7: + *r = 1.0 / -INFINITY; + break; + case 8: + *r = 0.0; + break; + case 9: + *r = -1.0; + break; + case 10: + *r = 1.0; + break; + case 11: + *r = 1.0 / 2.0; + break; + case 12: + *r = 90.0; + break; + case 13: + *r = M_PI_2; + break; + case 14: + *r = MAXDOUBLE; + break; + case 15: + *r = -MAXDOUBLE; + break; + default: + abort (); + } +} + +void static +avx512f_test (void) +{ + union128d s1, res1, res2, res3; + union128i_q s2; + double res_ref[2]; + int i, j, k; + + float vals[2] = { -10, 10 }; + int controls[10] = { 0x11111111, + 0x77777777, 0x88888888, 0x99999999, + 0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc, + 0xdddddddd, 0xeeeeeeee, 0xffffffff + }; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < 2; i++) + { + s1.a[0] = vals[i]; + s1.a[1] = 1.0; + s2.a[1] = 1.0; + + res_ref[0] = 1.0; + res_ref[1] = 1.0; + res1.a[0] = res2.a[0] = res3.a[0] = DEFAULT_VALUE; + res1.a[1] = res2.a[1] = res3.a[1] = DEFAULT_VALUE; + + for (j = 0; j < 10; j++) + { + s2.a[0] = controls[j]; + compute_fixupimmpd (&res_ref[0], s1.a[0], s2.a[0]); + + res1.x = _mm_fixupimm_sd (res1.x, s1.x, s2.x, 0); + res2.x = _mm_mask_fixupimm_sd (res2.x, mask, s1.x, s2.x, 0); + res3.x = _mm_maskz_fixupimm_sd (mask, res3.x, s1.x, s2.x, 0); + + if (check_union128d (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, 1); + if (check_union128d (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, 1); + if (check_union128d (res3, res_ref)) + abort (); + } + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-1.c new file mode 100644 index 00000000000..435befbfa6f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-1.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vfixupimmss\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vfixupimmss\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfixupimmss\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfixupimmss\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vfixupimmss\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfixupimmss\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m128 x; +volatile __m128i y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm_fixupimm_ss (x, x, y, 3); + x = _mm_mask_fixupimm_ss (x, m, x, y, 3); + x = _mm_maskz_fixupimm_ss (m, x, x, y, 3); + x = _mm_fixupimm_round_ss (x, x, y, 3, _MM_FROUND_NO_EXC); + x = _mm_mask_fixupimm_round_ss (x, m, x, y, 3, _MM_FROUND_NO_EXC); + x = _mm_maskz_fixupimm_round_ss (m, x, x, y, 3, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c new file mode 100644 index 00000000000..50830b8bd36 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c @@ -0,0 +1,119 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" +#include "avx512f-helper.h" +#include +#include +#include "avx512f-mask-type.h" + +void +compute_fixupimmps (float *r, float src, int tbl) +{ + switch (tbl & 0xf) + { + case 0: + *r = src; + break; + case 1: + *r = src; + break; + case 2: + *r = signbit (src) ? -NAN : NAN; + break; + case 3: + *r = -NAN; + break; + case 4: + *r = -INFINITY; + break; + case 5: + *r = INFINITY; + break; + case 6: + *r = signbit (src) ? -INFINITY : INFINITY; + break; + case 7: + *r = 1.0 / -INFINITY; + break; + case 8: + *r = 0.0; + break; + case 9: + *r = -1.0; + break; + case 10: + *r = 1.0; + break; + case 11: + *r = 1.0 / 2.0; + break; + case 12: + *r = 90.0; + break; + case 13: + *r = M_PI_2; + break; + case 14: + *r = MAXFLOAT; + break; + case 15: + *r = -MAXFLOAT; + break; + default: + abort (); + } +} + +void static +avx512f_test (void) +{ + union128 s1, res1, res2, res3; + union128i_d s2; + float res_ref[4]; + int i, j, k; + + float vals[2] = { -10, 10 }; + int controls[10] = { 0x11111111, + 0x77777777, 0x88888888, 0x99999999, + 0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc, + 0xdddddddd, 0xeeeeeeee, 0xffffffff + }; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < 2; i++) + { + s1.a[0] = vals[i]; + res1.a[0] = res2.a[0] = res3.a[0] = DEFAULT_VALUE; + for (k = 1; k < 4; k++) + { + s1.a[k] = k; + s2.a[k] = k; + res_ref[k] = k; + res1.a[k] = res2.a[k] = res3.a[k] = DEFAULT_VALUE; + } + + for (j = 0; j < 10; j++) + { + s2.a[0] = controls[j]; + compute_fixupimmps (&res_ref[0], s1.a[0], s2.a[0]); + + res1.x = _mm_fixupimm_ss (res1.x, s1.x, s2.x, 0); + res2.x = _mm_mask_fixupimm_ss (res2.x, mask, s1.x, s2.x, 0); + res3.x = _mm_maskz_fixupimm_ss (mask, res3.x, s1.x, s2.x, 0); + + if (check_union128 (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, 1); + if (check_union128 (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, 1); + if (check_union128 (res3, res_ref)) + abort (); + } + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXpd-1.c new file mode 100644 index 00000000000..c45930c6b20 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXpd-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmadd...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfmadd...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfmadd231pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfmadd...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfmadd...pd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmadd...pd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmadd231pd\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmadd...pd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x1, x2, x3; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fmadd_pd (x1, x2, x3); + x1 = _mm512_mask_fmadd_pd (x1, m, x2, x3); + x3 = _mm512_mask3_fmadd_pd (x1, x2, x3, m); + x1 = _mm512_maskz_fmadd_pd (m, x1, x2, x3); + x1 = _mm512_fmadd_round_pd (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fmadd_round_pd (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fmadd_round_pd (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fmadd_round_pd (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXpd-2.c new file mode 100644 index 00000000000..79736300869 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXpd-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (double *s1, double *s2, double *s3, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] * s2[i] + s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + double res_ref1[SIZE]; + double res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fmadd_pd) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fmadd_pd) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fmadd_pd) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fmadd_pd) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE (d) (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXps-1.c new file mode 100644 index 00000000000..ddeddb21b67 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXps-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmadd...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfmadd...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfmadd231ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfmadd...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfmadd...ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmadd...ps\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmadd231ps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmadd...ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x1, x2, x3; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fmadd_ps (x1, x2, x3); + x1 = _mm512_mask_fmadd_ps (x1, m, x2, x3); + x3 = _mm512_mask3_fmadd_ps (x1, x2, x3, m); + x1 = _mm512_maskz_fmadd_ps (m, x1, x2, x3); + x1 = _mm512_fmadd_round_ps (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fmadd_round_ps (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fmadd_round_ps (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fmadd_round_ps (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXps-2.c new file mode 100644 index 00000000000..6883b77d7fb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXps-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (float *s1, float *s2, float *s3, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] * s2[i] + s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + float res_ref1[SIZE]; + float res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fmadd_ps) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fmadd_ps) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fmadd_ps) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fmadd_ps) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE () (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXpd-1.c new file mode 100644 index 00000000000..7f4ab7bdd1c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXpd-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmaddsub...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub231pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub...pd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub...pd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub231pd\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub...pd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x1, x2, x3; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fmaddsub_pd (x1, x2, x3); + x1 = _mm512_mask_fmaddsub_pd (x1, m, x2, x3); + x3 = _mm512_mask3_fmaddsub_pd (x1, x2, x3, m); + x1 = _mm512_maskz_fmaddsub_pd (m, x1, x2, x3); + x1 = _mm512_fmaddsub_round_pd (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fmaddsub_round_pd (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fmaddsub_round_pd (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fmaddsub_round_pd (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXpd-2.c new file mode 100644 index 00000000000..c546520335f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXpd-2.c @@ -0,0 +1,69 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (double *s1, double *s2, double *s3, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + if (i % 2) + r[i] = s1[i] * s2[i] + s3[i]; + else + r[i] = s1[i] * s2[i] - s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + double res_ref1[SIZE]; + double res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fmaddsub_pd) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fmaddsub_pd) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fmaddsub_pd) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fmaddsub_pd) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE (d) (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXps-1.c new file mode 100644 index 00000000000..73936c71caa --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXps-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmaddsub...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub231ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub...ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub...ps\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub231ps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmaddsub...ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x1, x2, x3; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fmaddsub_ps (x1, x2, x3); + x1 = _mm512_mask_fmaddsub_ps (x1, m, x2, x3); + x3 = _mm512_mask3_fmaddsub_ps (x1, x2, x3, m); + x1 = _mm512_maskz_fmaddsub_ps (m, x1, x2, x3); + x1 = _mm512_fmaddsub_round_ps (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fmaddsub_round_ps (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fmaddsub_round_ps (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fmaddsub_round_ps (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXps-2.c new file mode 100644 index 00000000000..2e27ffb46be --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddsubXXXps-2.c @@ -0,0 +1,69 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (float *s1, float *s2, float *s3, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + if (i % 2) + r[i] = s1[i] * s2[i] + s3[i]; + else + r[i] = s1[i] * s2[i] - s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + float res_ref1[SIZE]; + float res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fmaddsub_ps) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fmaddsub_ps) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fmaddsub_ps) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fmaddsub_ps) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE () (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXpd-1.c new file mode 100644 index 00000000000..2ad15573290 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXpd-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmsub...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfmsub...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfmsub231pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfmsub...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfmsub...pd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsub...pd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsub231pd\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsub...pd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x1, x2, x3; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fmsub_pd (x1, x2, x3); + x1 = _mm512_mask_fmsub_pd (x1, m, x2, x3); + x3 = _mm512_mask3_fmsub_pd (x1, x2, x3, m); + x1 = _mm512_maskz_fmsub_pd (m, x1, x2, x3); + x1 = _mm512_fmsub_round_pd (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fmsub_round_pd (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fmsub_round_pd (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fmsub_round_pd (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXpd-2.c new file mode 100644 index 00000000000..caebada6d18 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXpd-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (double *s1, double *s2, double *s3, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] * s2[i] - s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + double res_ref1[SIZE]; + double res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fmsub_pd) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fmsub_pd) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fmsub_pd) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fmsub_pd) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE (d) (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXps-1.c new file mode 100644 index 00000000000..81afaf59092 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXps-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmsub...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfmsub...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfmsub231ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfmsub...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfmsub...ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsub...ps\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsub231ps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsub...ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x1, x2, x3; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fmsub_ps (x1, x2, x3); + x1 = _mm512_mask_fmsub_ps (x1, m, x2, x3); + x3 = _mm512_mask3_fmsub_ps (x1, x2, x3, m); + x1 = _mm512_maskz_fmsub_ps (m, x1, x2, x3); + x1 = _mm512_fmsub_round_ps (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fmsub_round_ps (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fmsub_round_ps (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fmsub_round_ps (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXps-2.c new file mode 100644 index 00000000000..da8908f33ca --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXps-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (float *s1, float *s2, float *s3, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] * s2[i] - s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + float res_ref1[SIZE]; + float res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fmsub_ps) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fmsub_ps) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fmsub_ps) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fmsub_ps) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE () (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXpd-1.c new file mode 100644 index 00000000000..1ff3f2b7536 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXpd-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmsubadd...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd231pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd...pd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd...pd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd231pd\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd...pd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x1, x2, x3; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fmsubadd_pd (x1, x2, x3); + x1 = _mm512_mask_fmsubadd_pd (x1, m, x2, x3); + x3 = _mm512_mask3_fmsubadd_pd (x1, x2, x3, m); + x1 = _mm512_maskz_fmsubadd_pd (m, x1, x2, x3); + x1 = _mm512_fmsubadd_round_pd (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fmsubadd_round_pd (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fmsubadd_round_pd (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fmsubadd_round_pd (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXpd-2.c new file mode 100644 index 00000000000..537948b1c4b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXpd-2.c @@ -0,0 +1,69 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (double *s1, double *s2, double *s3, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + if (i % 2) + r[i] = s1[i] * s2[i] - s3[i]; + else + r[i] = s1[i] * s2[i] + s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + double res_ref1[SIZE]; + double res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fmsubadd_pd) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fmsubadd_pd) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fmsubadd_pd) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fmsubadd_pd) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE (d) (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXps-1.c new file mode 100644 index 00000000000..283c0af19f6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXps-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmsubadd...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd231ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd...ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd...ps\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd231ps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmsubadd...ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x1, x2, x3; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fmsubadd_ps (x1, x2, x3); + x1 = _mm512_mask_fmsubadd_ps (x1, m, x2, x3); + x3 = _mm512_mask3_fmsubadd_ps (x1, x2, x3, m); + x1 = _mm512_maskz_fmsubadd_ps (m, x1, x2, x3); + x1 = _mm512_fmsubadd_round_ps (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fmsubadd_round_ps (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fmsubadd_round_ps (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fmsubadd_round_ps (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXps-2.c new file mode 100644 index 00000000000..85be77ccb12 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubaddXXXps-2.c @@ -0,0 +1,69 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (float *s1, float *s2, float *s3, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + if (i % 2) + r[i] = s1[i] * s2[i] - s3[i]; + else + r[i] = s1[i] * s2[i] + s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + float res_ref1[SIZE]; + float res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fmsubadd_ps) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fmsubadd_ps) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fmsubadd_ps) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fmsubadd_ps) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE () (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXpd-1.c new file mode 100644 index 00000000000..b08d7e18891 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXpd-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfnmadd...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfnmadd...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfnmadd231pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfnmadd...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfnmadd...pd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmadd...pd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmadd231pd\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmadd...pd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x1, x2, x3; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fnmadd_pd (x1, x2, x3); + x1 = _mm512_mask_fnmadd_pd (x1, m, x2, x3); + x3 = _mm512_mask3_fnmadd_pd (x1, x2, x3, m); + x1 = _mm512_maskz_fnmadd_pd (m, x1, x2, x3); + x1 = _mm512_fnmadd_round_pd (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fnmadd_round_pd (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fnmadd_round_pd (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fnmadd_round_pd (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXpd-2.c new file mode 100644 index 00000000000..71939a5628b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXpd-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (double *s1, double *s2, double *s3, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = -s1[i] * s2[i] + s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + double res_ref1[SIZE]; + double res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fnmadd_pd) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fnmadd_pd) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fnmadd_pd) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fnmadd_pd) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE (d) (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXps-1.c new file mode 100644 index 00000000000..8b4447c832f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXps-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfnmadd...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfnmadd...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfnmadd231ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfnmadd...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfnmadd...ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmadd...ps\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmadd231ps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmadd...ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x1, x2, x3; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fnmadd_ps (x1, x2, x3); + x1 = _mm512_mask_fnmadd_ps (x1, m, x2, x3); + x3 = _mm512_mask3_fnmadd_ps (x1, x2, x3, m); + x1 = _mm512_maskz_fnmadd_ps (m, x1, x2, x3); + x1 = _mm512_fnmadd_round_ps (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fnmadd_round_ps (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fnmadd_round_ps (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fnmadd_round_ps (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXps-2.c new file mode 100644 index 00000000000..b591d23aaa9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXps-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (float *s1, float *s2, float *s3, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = -s1[i] * s2[i] + s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + float res_ref1[SIZE]; + float res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fnmadd_ps) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fnmadd_ps) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fnmadd_ps) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fnmadd_ps) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE () (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXpd-1.c new file mode 100644 index 00000000000..a0776430d58 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXpd-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfnmsub...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfnmsub...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfnmsub231pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfnmsub...pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfnmsub...pd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmsub...pd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmsub231pd\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmsub...pd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x1, x2, x3; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fnmsub_pd (x1, x2, x3); + x1 = _mm512_mask_fnmsub_pd (x1, m, x2, x3); + x3 = _mm512_mask3_fnmsub_pd (x1, x2, x3, m); + x1 = _mm512_maskz_fnmsub_pd (m, x1, x2, x3); + x1 = _mm512_fnmsub_round_pd (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fnmsub_round_pd (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fnmsub_round_pd (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fnmsub_round_pd (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXpd-2.c new file mode 100644 index 00000000000..177ea73062a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXpd-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (double *s1, double *s2, double *s3, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = -s1[i] * s2[i] - s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + double res_ref1[SIZE]; + double res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fnmsub_pd) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fnmsub_pd) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fnmsub_pd) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fnmsub_pd) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE (d) (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO (d) (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXps-1.c new file mode 100644 index 00000000000..b863fb1bbd1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXps-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfnmsub...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 8 } } */ +/* { dg-final { scan-assembler-times "vfnmsub...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vfnmsub231ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vfnmsub...ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vfnmsub...ps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmsub...ps\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmsub231ps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfnmsub...ps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x1, x2, x3; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_fnmsub_ps (x1, x2, x3); + x1 = _mm512_mask_fnmsub_ps (x1, m, x2, x3); + x3 = _mm512_mask3_fnmsub_ps (x1, x2, x3, m); + x1 = _mm512_maskz_fnmsub_ps (m, x1, x2, x3); + x1 = _mm512_fnmsub_round_ps (x1, x2, x3, _MM_FROUND_TO_NEAREST_INT); + x1 = _mm512_mask_fnmsub_round_ps (x1, m, x2, x3, _MM_FROUND_TO_NEG_INF); + x3 = _mm512_mask3_fnmsub_round_ps (x1, x2, x3, m, _MM_FROUND_TO_POS_INF); + x1 = _mm512_maskz_fnmsub_round_ps (m, x1, x2, x3, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXps-2.c new file mode 100644 index 00000000000..379708b464a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXps-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (float *s1, float *s2, float *s3, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = -s1[i] * s2[i] - s3[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s1, s2, s3, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + float res_ref1[SIZE]; + float res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 56.78 * (i + 1) * sign; + s3.a[i] = 90.12 * (i + 2) * sign; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_fnmsub_ps) (s1.x, s2.x, s3.x); +#endif + res2.x = INTRINSIC (_mask_fnmsub_ps) (s1.x, mask, s2.x, s3.x); + res3.x = INTRINSIC (_mask3_fnmsub_ps) (s2.x, s3.x, s1.x, mask); + res4.x = INTRINSIC (_maskz_fnmsub_ps) (mask, s1.x, s2.x, s3.x); + + CALC (s1.a, s2.a, s3.a, res_ref1); + CALC (s2.a, s3.a, s1.a, res_ref2); + +#if AVX512F_LEN == 512 + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res1, res_ref1, 0.0001)) + abort (); +#endif + + MASK_MERGE () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res2, res_ref1, 0.0001)) + abort (); + + MASK_MERGE () (res_ref2, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res3, res_ref2, 0.0001)) + abort (); + + MASK_ZERO () (res_ref1, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, ) (res4, res_ref1, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetexppd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetexppd-1.c new file mode 100644 index 00000000000..3d899ea2b61 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetexppd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vgetexppd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6} } */ +/* { dg-final { scan-assembler-times "vgetexppd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2} } */ +/* { dg-final { scan-assembler-times "vgetexppd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2} } */ +/* { dg-final { scan-assembler-times "vgetexppd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 3} } */ +/* { dg-final { scan-assembler-times "vgetexppd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1} } */ +/* { dg-final { scan-assembler-times "vgetexppd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1} } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_getexp_pd (x); + x = _mm512_mask_getexp_pd (x, m, x); + x = _mm512_maskz_getexp_pd (m, x); + x = _mm512_getexp_round_pd (x, _MM_FROUND_NO_EXC); + x = _mm512_mask_getexp_round_pd (x, m, x, _MM_FROUND_NO_EXC); + x = _mm512_maskz_getexp_round_pd (m, x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetexppd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetexppd-2.c new file mode 100644 index 00000000000..ec9321aa894 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetexppd-2.c @@ -0,0 +1,58 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include "math.h" + +static void +CALC (double *s, double *r) +{ + int i = 0; + for (i = 0; i < SIZE; i++) + r[i] = floor (log (s[i]) / log (2)); +} + +void static +TEST (void) +{ + int j; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3, s; + double res_ref[SIZE]; + double res_ref_mask[SIZE]; + + MASK_TYPE mask = MASK_VALUE; + + for (j = 0; j < SIZE; j++) + { + s.a[j] = j * (j + 12.0231); + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_getexp_pd) (s.x); + res2.x = INTRINSIC (_mask_getexp_pd) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_getexp_pd) (mask, s.x); + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE(d) (res_ref, mask, SIZE); + + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO(d) (res_ref, mask, SIZE); + + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); + +} + diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-1.c new file mode 100644 index 00000000000..fb5674d702b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vgetexpps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6} } */ +/* { dg-final { scan-assembler-times "vgetexpps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2} } */ +/* { dg-final { scan-assembler-times "vgetexpps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2} } */ +/* { dg-final { scan-assembler-times "vgetexpps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 3} } */ +/* { dg-final { scan-assembler-times "vgetexpps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1} } */ +/* { dg-final { scan-assembler-times "vgetexpps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1} } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_getexp_ps (x); + x = _mm512_mask_getexp_ps (x, m, x); + x = _mm512_maskz_getexp_ps (m, x); + x = _mm512_getexp_round_ps (x, _MM_FROUND_NO_EXC); + x = _mm512_mask_getexp_round_ps (x, m, x, _MM_FROUND_NO_EXC); + x = _mm512_maskz_getexp_round_ps (m, x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-2.c new file mode 100644 index 00000000000..56f4eaa15fe --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpps-2.c @@ -0,0 +1,58 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "math.h" + +static void +CALC (float *s, float *r) +{ + int i = 0; + for (i = 0; i < SIZE; i++) + r[i] = floor (log (s[i]) / log (2)); +} + +void static +TEST (void) +{ + int j; + UNION_TYPE (AVX512F_LEN, ) res1,res2,res3,s; + float res_ref[SIZE]; + float res_ref_mask[SIZE]; + + MASK_TYPE mask = MASK_VALUE; + + for (j = 0; j < SIZE; j++) + { + s.a[j] = j * (j + 12.0231); + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_getexp_ps) (s.x); + res2.x = INTRINSIC (_mask_getexp_ps) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_getexp_ps) (mask, s.x); + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) + abort (); + + MASK_MERGE() (res_ref,mask,SIZE ); + + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref)) + abort (); + + MASK_ZERO() (res_ref,mask,SIZE ); + + if (UNION_CHECK (AVX512F_LEN, ) (res3, res_ref)) + abort (); + +} + diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-1.c new file mode 100644 index 00000000000..b19846d17e5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-1.c @@ -0,0 +1,33 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vgetmantpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vgetmantpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vgetmantpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vgetmantpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[\\n\]" 1 } } */ +/* { dg-final { scan-assembler-times "vgetmantpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vgetmantpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x, y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_getmant_pd (y, _MM_MANT_NORM_p75_1p5, _MM_MANT_SIGN_src); + x = + _mm512_mask_getmant_pd (x, m, y, _MM_MANT_NORM_p75_1p5, + _MM_MANT_SIGN_src); + x = + _mm512_maskz_getmant_pd (m, y, _MM_MANT_NORM_p75_1p5, + _MM_MANT_SIGN_src); + x = _mm512_getmant_round_pd (y, _MM_MANT_NORM_p75_1p5, _MM_MANT_SIGN_src, + _MM_FROUND_NO_EXC); + x = + _mm512_mask_getmant_round_pd (x, m, y, _MM_MANT_NORM_p75_1p5, + _MM_MANT_SIGN_src, _MM_FROUND_NO_EXC); + x = + _mm512_maskz_getmant_round_pd (m, y, _MM_MANT_NORM_p75_1p5, + _MM_MANT_SIGN_src, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-2.c new file mode 100644 index 00000000000..473466b1e53 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantpd-2.c @@ -0,0 +1,122 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include + +#ifndef GET_NORM_MANT +#define GET_NORM_MANT + +union fp_int_t +{ + long long int int_val; + double fp_val; +}; + +double +get_norm_mant (double source, int signctrl, int interv) +{ + long long src, sign, exp, fraction; + union fp_int_t bin_conv; + + bin_conv.fp_val = source; + src = bin_conv.int_val; + sign = (signctrl & 0x1) ? 0 : (src >> 63); + exp = (src & 0x7ff0000000000000) >> 52; + fraction = (src & 0xfffffffffffff); + + if (isnan (source)) + return signbit (source) ? -NAN : NAN; + if (source == 0.0 || source == -0.0 || isinf (source)) + return sign ? -1.0 : 1.0; + if (signbit (source) && (signctrl & 0x2)) + return -NAN; + if (!isnormal (source)) + { + src = (src & 0xfff7ffffffffffff); + exp = 0x3ff; + while (!(src & 0x8000000000000)) + { + src += fraction & 0x8000000000000; + fraction = fraction << 1; + exp--; + } + } + + switch (interv) + { + case 0: + exp = 0x3ff; + break; + case 1: + exp = ((exp - 0x3ff) & 0x1) ? 0x3fe : 0x3ff; + break; + case 2: + exp = 0x3fe; + break; + case 3: + exp = (fraction & 0x8000000000000) ? 0x3fe : 0x3ff; + break; + default: + abort (); + } + + bin_conv.int_val = (sign << 63) | (exp << 52) | fraction; + return bin_conv.fp_val; +} +#endif + +CALC (double *r, double *s, int interv, int signctrl) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = get_norm_mant (s[i], signctrl, interv); + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3, src; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + int interv = _MM_MANT_NORM_p5_1; + int signctrl = _MM_MANT_SIGN_src; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 34.67 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_getmant_pd) (src.x, interv, signctrl); + res2.x = + INTRINSIC (_mask_getmant_pd) (res2.x, mask, src.x, interv, + signctrl); + res3.x = + INTRINSIC (_maskz_getmant_pd) (mask, src.x, interv, signctrl); + + CALC (res_ref, src.a, interv, signctrl); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-1.c new file mode 100644 index 00000000000..a3ce09e97c0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-1.c @@ -0,0 +1,33 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vgetmantps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vgetmantps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vgetmantps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vgetmantps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[\\n\]" 1 } } */ +/* { dg-final { scan-assembler-times "vgetmantps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vgetmantps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x, y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_getmant_ps (y, _MM_MANT_NORM_p75_1p5, _MM_MANT_SIGN_src); + x = + _mm512_mask_getmant_ps (x, m, y, _MM_MANT_NORM_p75_1p5, + _MM_MANT_SIGN_src); + x = + _mm512_maskz_getmant_ps (m, y, _MM_MANT_NORM_p75_1p5, + _MM_MANT_SIGN_src); + x = _mm512_getmant_round_ps (y, _MM_MANT_NORM_p75_1p5, _MM_MANT_SIGN_src, + _MM_FROUND_NO_EXC); + x = + _mm512_mask_getmant_round_ps (x, m, y, _MM_MANT_NORM_p75_1p5, + _MM_MANT_SIGN_src, _MM_FROUND_NO_EXC); + x = + _mm512_maskz_getmant_round_ps (m, y, _MM_MANT_NORM_p75_1p5, + _MM_MANT_SIGN_src, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-2.c new file mode 100644 index 00000000000..b8ea24d891b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantps-2.c @@ -0,0 +1,123 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include + +#ifndef GET_NORM_MANT +#define GET_NORM_MANT + +union fp_int_t +{ + int int_val; + float fp_val; +}; + +float +get_norm_mant (float source, int signctrl, int interv) +{ + int src, sign, exp, fraction; + union fp_int_t bin_conv; + + bin_conv.fp_val = source; + src = bin_conv.int_val; + sign = (signctrl & 0x1) ? 0 : (src >> 31); + exp = (src & 0x7f800000) >> 23; + fraction = (src & 0x7fffff); + + if (isnan (source)) + return signbit (source) ? -NAN : NAN; + if (source == 0.0 || source == -0.0 || isinf (source)) + return sign ? -1.0 : 1.0; + if (signbit (source) && (signctrl & 0x2)) + return -NAN; + if (!isnormal (source)) + { + src = (src & 0xffbfffff); + exp = 0x7f; + while (!(src & 0x400000)) + { + src += fraction & 0x400000; + fraction = fraction << 1; + exp--; + } + } + + switch (interv) + { + case 0: + exp = 0x7f; + break; + case 1: + exp = ((exp - 0x7f) & 0x1) ? 0x7e : 0x7f; + break; + case 2: + exp = 0x7e; + break; + case 3: + exp = (fraction & 0x400000) ? 0x7e : 0x7f; + break; + default: + abort (); + } + + bin_conv.int_val = (sign << 31) | (exp << 23) | fraction; + + return bin_conv.fp_val; +} +#endif + +CALC (float *r, float *s, int interv, int signctrl) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = get_norm_mant (s[i], signctrl, interv); + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN,) res1, res2, res3, src; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int interv = _MM_MANT_NORM_p5_1; + int signctrl = _MM_MANT_SIGN_src; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 34.67 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_getmant_ps) (src.x, interv, signctrl); + res2.x = + INTRINSIC (_mask_getmant_ps) (res2.x, mask, src.x, interv, + signctrl); + res3.x = + INTRINSIC (_maskz_getmant_ps) (mask, src.x, interv, signctrl); + + CALC (res_ref, src.a, interv, signctrl); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-1.c new file mode 100644 index 00000000000..b2caa53246c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vinsertf32x4\[^\n\]*zmm" 3 } } */ +/* { dg-final { scan-assembler-times "vinsertf32x4\[^\n\]*\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vinsertf32x4\[^\n\]*\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512 x; +__m128 y; + +void extern +avx512f_test (void) +{ + x = _mm512_insertf32x4 (x, y, 1); + x = _mm512_maskz_insertf32x4 (6, x, y, 1); + x = _mm512_mask_insertf32x4 (x, 2, x, y, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-2.c new file mode 100644 index 00000000000..9231163c327 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vinsertf32x4-2.c @@ -0,0 +1,59 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "string.h" + +void static +CALC (UNION_TYPE (AVX512F_LEN,) s1, union128 s2, float *res_ref, int imm) +{ + memcpy (res_ref, s1.a, SIZE * sizeof (float)); + memcpy (res_ref + imm * 4, s2.a, 16); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN,) s1, res1, res2, res3; + union128 s2; + float res_ref[SIZE]; + int j; + + MASK_TYPE mask = 6 ^ (0xffd >> SIZE); + + for (j = 0; j < SIZE; j++) + { + s1.a[j] = j * j / 10.2; + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + } + + for (j = 0; j < 4; j++) + s2.a[j] = j * j * j / 2.03; + + res1.x = INTRINSIC (_insertf32x4) (s1.x, s2.x, 1); + res2.x = INTRINSIC (_mask_insertf32x4) (res2.x, mask, s1.x, s2.x, 1); + res3.x = INTRINSIC (_maskz_insertf32x4) (mask, s1.x, s2.x, 1); + + CALC (s1, s2, res_ref, 1); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vinsertf64x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vinsertf64x4-1.c new file mode 100644 index 00000000000..a4c74fd4863 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vinsertf64x4-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vinsertf64x4\[ \\t\]+\[^\n\]+" 3 } } */ +/* { dg-final { scan-assembler-times "vinsertf64x4\[ \\t\]+\[^\n\]+\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vinsertf64x4\[ \\t\]+\[^\n\]+\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512d x; +volatile __m256d y; + +void extern +avx512f_test (void) +{ + x = _mm512_insertf64x4 (x, y, 1); + x = _mm512_mask_insertf64x4 (x, 2, x, y, 1); + x = _mm512_maskz_insertf64x4 (2, x, y, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vinsertf64x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vinsertf64x4-2.c new file mode 100644 index 00000000000..17871b85493 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vinsertf64x4-2.c @@ -0,0 +1,65 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512f } */ +/* { dg-options "-O2 -mavx512f" } */ + +#define SIZE (512 / 64) +#include "avx512f-mask-type.h" +#include +#include "avx512f-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" + +void static +avx512f_test (void) +{ + union512d s1, res, res2, res3; + union256d s2; + double res_ref[8]; + MASK_TYPE mask = MASK_VALUE; + int j; + + for (j = 0; j < 8; j++) + { + s1.a[j] = j * j + 1.6; + res2.a[j] = DEFAULT_VALUE; + } + + for (j = 0; j < 4; j++) + s2.a[j] = j * j * j / 2.7; + + res.x = _mm512_insertf64x4 (s1.x, s2.x, 0); + res2.x = _mm512_mask_insertf64x4 (res2.x, mask, s1.x, s2.x, 0); + res3.x = _mm512_maskz_insertf64x4 (mask, s1.x, s2.x, 0); + + memcpy (res_ref, s1.a, 64); + memcpy (res_ref, s2.a, 32); + + if (check_union512d (res, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (check_union512d (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (check_union512d (res3, res_ref)) + abort (); + + res.x = _mm512_insertf64x4 (s1.x, s2.x, 1); + res2.x = _mm512_mask_insertf64x4 (res2.x, mask, s1.x, s2.x, 1); + res3.x = _mm512_maskz_insertf64x4 (mask, s1.x, s2.x, 1); + + memcpy (res_ref, s1.a, 64); + memcpy (res_ref + 4, s2.a, 32); + + if (check_union512d (res, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (check_union512d (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (check_union512d (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vinserti32x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vinserti32x4-1.c new file mode 100644 index 00000000000..44c083137a5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vinserti32x4-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vinserti32x4\[^\n\]*xmm\[^\n\]*zmm\[^\n\]*zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vinserti32x4\[^\n\]*\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vinserti32x4\[^\n\]*\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512i x,a; +volatile __m128i y; + +void extern +avx512f_test (void) +{ + x = _mm512_maskz_inserti32x4 (6, x, y, 1); + x = _mm512_mask_inserti32x4 (a, 6, x, y, 1); + x = _mm512_inserti32x4 (x, y, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vinserti32x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vinserti32x4-2.c new file mode 100644 index 00000000000..c0cce565b4b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vinserti32x4-2.c @@ -0,0 +1,59 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "string.h" + +void static +CALC (UNION_TYPE (AVX512F_LEN, i_d) s1, union128i_d s2, int *res_ref, int imm) +{ + memcpy (res_ref, s1.a, SIZE * sizeof (int)); + memcpy (res_ref + imm * 4, s2.a, 16); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, res1, res2, res3; + union128i_d s2; + int res_ref[SIZE]; + int j; + + MASK_TYPE mask = 6 ^ (0xffd >> SIZE); + + for (j = 0; j < SIZE; j++) + { + s1.a[j] = j * j; + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + } + + for (j = 0; j < 4; j++) + s2.a[j] = j * j * j; + + res1.x = INTRINSIC (_inserti32x4) (s1.x, s2.x, 1); + res2.x = INTRINSIC (_mask_inserti32x4) (res2.x, mask, s1.x, s2.x, 1); + res3.x = INTRINSIC (_maskz_inserti32x4) (mask, s1.x, s2.x, 1); + + CALC (s1, s2, res_ref, 1); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vinserti64x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vinserti64x4-1.c new file mode 100644 index 00000000000..f5b7eff096d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vinserti64x4-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vinserti64x4\[ \\t\]+\[^\n\]+\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vinserti64x4\[ \\t\]+\[^\n\]+\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vinserti64x4\[ \\t\]+\[^\n\]+\[^\n\]" 3 } } */ + +#include + +volatile __m512i x; +volatile __m256i y; + +void extern +avx512f_test (void) +{ + x = _mm512_inserti64x4 (x, y, 1); + x = _mm512_mask_inserti64x4 (x, 2, x, y, 1); + x = _mm512_maskz_inserti64x4 (2, x, y, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vinserti64x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vinserti64x4-2.c new file mode 100644 index 00000000000..58993ad5ed0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vinserti64x4-2.c @@ -0,0 +1,65 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx512f } */ +/* { dg-options "-O2 -mavx512f" } */ + +#define SIZE (512 / 64) +#include "avx512f-mask-type.h" +#include +#include "avx512f-check.h" +#include "avx512f-mask-type.h" +#include "avx512f-helper.h" + +void static +avx512f_test (void) +{ + union512i_q s1, res, res2, res3; + union256i_q s2; + long long int res_ref[8]; + MASK_TYPE mask = MASK_VALUE; + int j; + + for (j = 0; j < 8; j++) + { + s1.a[j] = j * j; + res2.a[j] = DEFAULT_VALUE; + } + + for (j = 0; j < 4; j++) + s2.a[j] = j * j * j; + + res.x = _mm512_inserti64x4 (s1.x, s2.x, 0); + res2.x = _mm512_mask_inserti64x4 (res2.x, mask, s1.x, s2.x, 0); + res3.x = _mm512_maskz_inserti64x4 (mask, s1.x, s2.x, 0); + + memcpy (res_ref, s1.a, 64); + memcpy (res_ref, s2.a, 32); + + if (check_union512i_q (res, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (check_union512i_q (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (check_union512i_q (res3, res_ref)) + abort (); + + res.x = _mm512_inserti64x4 (s1.x, s2.x, 1); + res2.x = _mm512_mask_inserti64x4 (res2.x, mask, s1.x, s2.x, 1); + res3.x = _mm512_maskz_inserti64x4 (mask, s1.x, s2.x, 1); + + memcpy (res_ref, s1.a, 64); + memcpy (res_ref + 4, s2.a, 32); + + if (check_union512i_q (res, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (check_union512i_q (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (check_union512i_q (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-1.c new file mode 100644 index 00000000000..085a7e5e0c6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vmaxpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vmaxpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vmaxpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vmaxpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vmaxpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmaxpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_max_pd (x, x); + x = _mm512_mask_max_pd (x, m, x, x); + x = _mm512_maskz_max_pd (m, x, x); + x = _mm512_max_round_pd (x, x, _MM_FROUND_NO_EXC); + x = _mm512_mask_max_round_pd (x, m, x, x, _MM_FROUND_NO_EXC); + x = _mm512_maskz_max_round_pd (m, x, x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-2.c new file mode 100644 index 00000000000..70f60a9688e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmaxpd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (double *r, double *s1, double *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] > s2[i] ? s1[i] : s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_max_pd) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_max_pd) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_max_pd) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmaxps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmaxps-1.c new file mode 100644 index 00000000000..564eeb516de --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmaxps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vmaxps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vmaxps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vmaxps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vmaxps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vmaxps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmaxps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_max_ps (x, x); + x = _mm512_mask_max_ps (x, m, x, x); + x = _mm512_maskz_max_ps (m, x, x); + x = _mm512_max_round_ps (x, x, _MM_FROUND_NO_EXC); + x = _mm512_mask_max_round_ps (x, m, x, x, _MM_FROUND_NO_EXC); + x = _mm512_maskz_max_round_ps (m, x, x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmaxps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmaxps-2.c new file mode 100644 index 00000000000..fc92eaa3aaa --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmaxps-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (float *r, float *s1, float *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] > s2[i] ? s1[i] : s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, ) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_max_ps) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_max_ps) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_max_ps) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vminpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vminpd-1.c new file mode 100644 index 00000000000..a4c993e6431 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vminpd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vminpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vminpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vminpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vminpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vminpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vminpd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_min_pd (x, x); + x = _mm512_mask_min_pd (x, m, x, x); + x = _mm512_maskz_min_pd (m, x, x); + x = _mm512_min_round_pd (x, x, _MM_FROUND_NO_EXC); + x = _mm512_mask_min_round_pd (x, m, x, x, _MM_FROUND_NO_EXC); + x = _mm512_maskz_min_round_pd (m, x, x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vminpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vminpd-2.c new file mode 100644 index 00000000000..cfb355539e3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vminpd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (double *r, double *s1, double *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] < s2[i] ? s1[i] : s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_min_pd) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_min_pd) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_min_pd) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vminps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vminps-1.c new file mode 100644 index 00000000000..3cd5904bcc5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vminps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vminps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vminps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vminps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vminps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vminps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vminps\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_min_ps (x, x); + x = _mm512_mask_min_ps (x, m, x, x); + x = _mm512_maskz_min_ps (m, x, x); + x = _mm512_min_round_ps (x, x, _MM_FROUND_NO_EXC); + x = _mm512_mask_min_round_ps (x, m, x, x, _MM_FROUND_NO_EXC); + x = _mm512_maskz_min_round_ps (m, x, x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vminps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vminps-2.c new file mode 100644 index 00000000000..f619b12fe58 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vminps-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (float *r, float *s1, float *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] < s2[i] ? s1[i] : s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, ) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_min_ps) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_min_ps) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_min_ps) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c new file mode 100644 index 00000000000..9cae38ff3fa --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +double *p; +volatile __m512d x1, x2; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_mask_mov_pd (x1, m, x2); + x1 = _mm512_maskz_mov_pd (m, x2); + + x1 = _mm512_load_pd (p); + x1 = _mm512_mask_load_pd (x1, m, p); + x1 = _mm512_maskz_load_pd (m, p); + + _mm512_store_pd (p, x1); + _mm512_mask_store_pd (p, m, x1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovapd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovapd-2.c new file mode 100644 index 00000000000..5e720ae8292 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovapd-2.c @@ -0,0 +1,71 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE ((AVX512F_LEN) / 64) +#include "avx512f-mask-type.h" +#define ALIGN ((AVX512F_LEN) / 8) + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s2, s3, res1, res3, res4, res5, res6; + MASK_TYPE mask = MASK_VALUE; + double s1[SIZE] __attribute__ ((aligned (ALIGN))); + double res2[SIZE] __attribute__ ((aligned (ALIGN))); + double res7[SIZE] __attribute__ ((aligned (ALIGN))); + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1[i] = 12.34 * (i + 2000) * sign; + s2.a[i] = 56.78 * (i - 30) * sign; + s3.a[i] = 90.12 * (i + 40) * sign; + res3.a[i] = DEFAULT_VALUE; + res5.a[i] = DEFAULT_VALUE; + res7[i] = DEFAULT_VALUE; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_load_pd) (s1); + INTRINSIC (_store_pd) (res2, s2.x); +#endif + res3.x = INTRINSIC (_mask_mov_pd) (res3.x, mask, s3.x); + res4.x = INTRINSIC (_maskz_mov_pd) (mask, s3.x); + res5.x = INTRINSIC (_mask_load_pd) (res5.x, mask, s1); + res6.x = INTRINSIC (_maskz_load_pd) (mask, s1); + INTRINSIC (_mask_store_pd) (res7, mask, s2.x); + +#if AVX512F_LEN == 512 + if (UNION_CHECK (AVX512F_LEN, d) (res1, s1)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, d) (s2, res2)) + abort (); +#endif + + MASK_MERGE (d) (s3.a, mask, SIZE); + if (checkVd (res3.a, s3.a, SIZE)) + abort (); + + MASK_ZERO (d) (s3.a, mask, SIZE); + if (checkVd (res4.a, s3.a, SIZE)) + abort (); + + MASK_MERGE (d) (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res5, s1)) + abort (); + + MASK_ZERO (d) (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res6, s1)) + abort (); + + MASK_MERGE (d) (s2.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (s2, res7)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c new file mode 100644 index 00000000000..217e29ccb38 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +float *p; +volatile __m512 x1, x2; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_mask_mov_ps (x1, m, x2); + x1 = _mm512_maskz_mov_ps (m, x2); + + x1 = _mm512_load_ps (p); + x1 = _mm512_mask_load_ps (x1, m, p); + x1 = _mm512_maskz_load_ps (m, p); + + _mm512_store_ps (p, x1); + _mm512_mask_store_ps (p, m, x1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovaps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovaps-2.c new file mode 100644 index 00000000000..d92ec968b63 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovaps-2.c @@ -0,0 +1,71 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE ((AVX512F_LEN) / 32) +#include "avx512f-mask-type.h" +#define ALIGN ((AVX512F_LEN) / 8) + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s2, s3, res1, res3, res4, res5, res6; + MASK_TYPE mask = MASK_VALUE; + float s1[SIZE] __attribute__ ((aligned (ALIGN))); + float res2[SIZE] __attribute__ ((aligned (ALIGN))); + float res7[SIZE] __attribute__ ((aligned (ALIGN))); + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1[i] = 12.34 * (i + 2000) * sign; + s2.a[i] = 56.78 * (i - 30) * sign; + s3.a[i] = 90.12 * (i + 40) * sign; + res3.a[i] = DEFAULT_VALUE; + res5.a[i] = DEFAULT_VALUE; + res7[i] = DEFAULT_VALUE; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_load_ps) (s1); + INTRINSIC (_store_ps) (res2, s2.x); +#endif + res3.x = INTRINSIC (_mask_mov_ps) (res3.x, mask, s3.x); + res4.x = INTRINSIC (_maskz_mov_ps) (mask, s3.x); + res5.x = INTRINSIC (_mask_load_ps) (res5.x, mask, s1); + res6.x = INTRINSIC (_maskz_load_ps) (mask, s1); + INTRINSIC (_mask_store_ps) (res7, mask, s2.x); + +#if AVX512F_LEN == 512 + if (UNION_CHECK (AVX512F_LEN, ) (res1, s1)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, ) (s2, res2)) + abort (); +#endif + + MASK_MERGE () (s3.a, mask, SIZE); + if (checkVf (res3.a, s3.a, SIZE)) + abort (); + + MASK_ZERO () (s3.a, mask, SIZE); + if (checkVf (res4.a, s3.a, SIZE)) + abort (); + + MASK_MERGE () (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res5, s1)) + abort (); + + MASK_ZERO () (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res6, s1)) + abort (); + + MASK_MERGE () (s2.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (s2, res7)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovddup-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovddup-1.c new file mode 100644 index 00000000000..ccaa078ef74 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovddup-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmovddup\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]|vunpcklpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vmovddup\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]|vunpcklpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovddup\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}|vunpcklpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x1, x2; +volatile __mmask8 m8; + +void extern +avx512f_test (void) +{ + x1 = _mm512_movedup_pd (x2); + x1 = _mm512_mask_movedup_pd (x1, m8, x2); + x1 = _mm512_maskz_movedup_pd (m8, x2); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovddup-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovddup-2.c new file mode 100644 index 00000000000..57619c1429b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovddup-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +void static +CALC (double *s, double *r) +{ + int i; + + for (i = 0; i < SIZE/2; i++) + { + r[2 * i] = s[2 * i]; + r[2 * i + 1] = s[2 * i]; + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = i * 123.2 + 32.6; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_movedup_pd) (s.x); + res2.x = INTRINSIC (_mask_movedup_pd) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_movedup_pd) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-1.c new file mode 100644 index 00000000000..1bfd2a591b8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-1.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmovdqa32\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqa32\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqa32\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqa32\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqa32\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +int *p; +volatile __m512i x1, x2; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_mask_mov_epi32 (x1, m, x2); + x1 = _mm512_maskz_mov_epi32 (m, x2); + + x1 = _mm512_load_si512 (p); + x1 = _mm512_load_epi32 (p); + x1 = _mm512_mask_load_epi32 (x1, m, p); + x1 = _mm512_maskz_load_epi32 (m, p); + + _mm512_store_si512 (p, x1); + _mm512_store_epi32 (p, x1); + _mm512_mask_store_epi32 (p, m, x1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-2.c new file mode 100644 index 00000000000..685b58b60b4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-2.c @@ -0,0 +1,80 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE ((AVX512F_LEN) / 32) +#include "avx512f-mask-type.h" +#define ALIGN ((AVX512F_LEN) / 8) + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s2, s3, res1, res2, res5, res6, res7, res8; + MASK_TYPE mask = MASK_VALUE; + int s1[SIZE] __attribute__ ((aligned (ALIGN))); + int res3[SIZE] __attribute__ ((aligned (ALIGN))); + int res4[SIZE] __attribute__ ((aligned (ALIGN))); + int res9[SIZE] __attribute__ ((aligned (ALIGN))); + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1[i] = 1234 * (i + 2000) * sign; + s2.a[i] = 5678 * (i - 30) * sign; + s3.a[i] = 9012 * (i + 40) * sign; + res5.a[i] = DEFAULT_VALUE; + res7.a[i] = DEFAULT_VALUE; + res9[i] = DEFAULT_VALUE; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_load_si512) (s1); + res2.x = INTRINSIC (_load_epi32) (s1); + INTRINSIC (_store_si512) (res3, s2.x); + INTRINSIC (_store_epi32) (res4, s2.x); +#endif + res5.x = INTRINSIC (_mask_mov_epi32) (res5.x, mask, s3.x); + res6.x = INTRINSIC (_maskz_mov_epi32) (mask, s3.x); + res7.x = INTRINSIC (_mask_load_epi32) (res7.x, mask, s1); + res8.x = INTRINSIC (_maskz_load_epi32) (mask, s1); + INTRINSIC (_mask_store_epi32) (res9, mask, s2.x); + +#if AVX512F_LEN == 512 + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, s1)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, s1)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, i_d) (s2, res3)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, i_d) (s2, res4)) + abort (); +#endif + + MASK_MERGE (i_d) (s3.a, mask, SIZE); + if (checkVi (res5.a, s3.a, SIZE)) + abort (); + + MASK_ZERO (i_d) (s3.a, mask, SIZE); + if (checkVi (res6.a, s3.a, SIZE)) + abort (); + + MASK_MERGE (i_d) (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res7, s1)) + abort (); + + MASK_ZERO (i_d) (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res8, s1)) + abort (); + + MASK_MERGE (i_d) (s2.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (s2, res9)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-1.c new file mode 100644 index 00000000000..81f958adb77 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-1.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +long long *p; +volatile __m512i x1, x2; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x1 = _mm512_mask_mov_epi64 (x1, m, x2); + x1 = _mm512_maskz_mov_epi64 (m, x2); + + x1 = _mm512_load_epi64 (p); + x1 = _mm512_mask_load_epi64 (x1, m, p); + x1 = _mm512_maskz_load_epi64 (m, p); + + _mm512_store_epi64 (p, x1); + _mm512_mask_store_epi64 (p, m, x1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-2.c new file mode 100644 index 00000000000..d5f51f2d13a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-2.c @@ -0,0 +1,71 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE ((AVX512F_LEN) / 64) +#include "avx512f-mask-type.h" +#define ALIGN ((AVX512F_LEN) / 8) + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s2, s3, res1, res3, res4, res5, res6; + MASK_TYPE mask = MASK_VALUE; + long long s1[SIZE] __attribute__ ((aligned (ALIGN))); + long long res2[SIZE] __attribute__ ((aligned (ALIGN))); + long long res7[SIZE] __attribute__ ((aligned (ALIGN))); + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1[i] = 1234 * (i + 2000) * sign; + s2.a[i] = 5678 * (i - 30) * sign; + s3.a[i] = 9012 * (i + 40) * sign; + res3.a[i] = DEFAULT_VALUE; + res5.a[i] = DEFAULT_VALUE; + res7[i] = DEFAULT_VALUE; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = INTRINSIC (_load_epi64) (s1); + INTRINSIC (_store_epi64) (res2, s2.x); +#endif + res3.x = INTRINSIC (_mask_mov_epi64) (res3.x, mask, s3.x); + res4.x = INTRINSIC (_maskz_mov_epi64) (mask, s3.x); + res5.x = INTRINSIC (_mask_load_epi64) (res5.x, mask, s1); + res6.x = INTRINSIC (_maskz_load_epi64) (mask, s1); + INTRINSIC (_mask_store_epi64) (res7, mask, s2.x); + +#if AVX512F_LEN == 512 + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, s1)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, i_q) (s2, res2)) + abort (); +#endif + + MASK_MERGE (i_q) (s3.a, mask, SIZE); + if (checkVl (res3.a, s3.a, SIZE)) + abort (); + + MASK_ZERO (i_q) (s3.a, mask, SIZE); + if (checkVl (res4.a, s3.a, SIZE)) + abort (); + + MASK_MERGE (i_q) (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res5, s1)) + abort (); + + MASK_ZERO (i_q) (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res6, s1)) + abort (); + + MASK_MERGE (i_q) (s2.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (s2, res7)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-1.c new file mode 100644 index 00000000000..b8af781834e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmovdqu32\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqu32\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqu32\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqu32\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqu32\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +int *p; +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_loadu_si512 (p); + x = _mm512_mask_loadu_epi32 (x, m, p); + x = _mm512_maskz_loadu_epi32 (m, p); + + _mm512_storeu_si512 (p, x); + _mm512_mask_storeu_epi32 (p, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-2.c new file mode 100644 index 00000000000..f1ae73c1d82 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-2.c @@ -0,0 +1,62 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE ((AVX512F_LEN) / 32) +#include "avx512f-mask-type.h" + +typedef struct +{ + char c; + int a[SIZE]; +} __attribute__ ((packed)) EVAL(unaligned_array, AVX512F_LEN,); + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s2, res1, res3, res4; + EVAL(unaligned_array, AVX512F_LEN,) s1, res2, res5; + MASK_TYPE mask = MASK_VALUE; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 12345 * (i + 2000) * sign; + s2.a[i] = 67890 * (i + 2000) * sign; + res3.a[i] = DEFAULT_VALUE; + res5.a[i] = DEFAULT_VALUE; + sign = -sign; + } + +#if AVX512F_LEN == 512 + res1.x = _mm512_loadu_si512 (s1.a); + _mm512_storeu_si512 (res2.a, s2.x); +#endif + res3.x = INTRINSIC (_mask_loadu_epi32) (res3.x, mask, s1.a); + res4.x = INTRINSIC (_maskz_loadu_epi32) (mask, s1.a); + INTRINSIC (_mask_storeu_epi32) (res5.a, mask, s2.x); + +#if AVX512F_LEN == 512 + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, s1.a)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, i_d) (s2, res2.a)) + abort (); +#endif + + MASK_MERGE (i_d) (s1.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, s1.a)) + abort (); + + MASK_ZERO (i_d) (s1.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res4, s1.a)) + abort (); + + MASK_MERGE (i_d) (s2.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (s2, res5.a)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu64-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu64-1.c new file mode 100644 index 00000000000..806d1f5867a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu64-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmovdqu64\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqu64\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovdqu64\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +long long *p; +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_loadu_epi64 (x, m, p); + x = _mm512_maskz_loadu_epi64 (m, p); + + _mm512_mask_storeu_epi64 (p, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu64-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu64-2.c new file mode 100644 index 00000000000..867a2517d54 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovdqu64-2.c @@ -0,0 +1,50 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE ((AVX512F_LEN) / 64) +#include "avx512f-mask-type.h" + +typedef struct +{ + char c; + long long a[SIZE]; +} __attribute__ ((packed)) EVAL(unaligned_array, AVX512F_LEN,); + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s2, res1, res2; + EVAL(unaligned_array, AVX512F_LEN,) s1, res3; + MASK_TYPE mask = MASK_VALUE; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 12345 * (i + 2000) * sign; + s2.a[i] = 67890 * (i + 2000) * sign; + res1.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_mask_loadu_epi64) (res1.x, mask, s1.a); + res2.x = INTRINSIC (_maskz_loadu_epi64) (mask, s1.a); + INTRINSIC (_mask_storeu_epi64) (res3.a, mask, s2.x); + + MASK_MERGE (i_q) (s1.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, s1.a)) + abort (); + + MASK_ZERO (i_q) (s1.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, s1.a)) + abort (); + + MASK_MERGE (i_q) (s2.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (s2, res3.a)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovntdq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovntdq-1.c new file mode 100644 index 00000000000..7a3ba47b1cb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovntdq-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "vmovntdq\[ \\t\]+\[^\n\]*%zmm\[0-9\]" } } */ + +#include + +__m512i *x; +volatile __m512i y; + +void extern +avx512f_test (void) +{ + _mm512_stream_si512 (x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovntdq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovntdq-2.c new file mode 100644 index 00000000000..7b200e37d15 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovntdq-2.c @@ -0,0 +1,17 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void static +avx512f_test (void) +{ + union512i_q s, res; + + s.x = _mm512_set_epi64 (39578, -429496, 7856, 0, 85632, -1234, 47563, -1); + _mm512_stream_si512 (&res.x, s.x); + + if (check_union512i_q (s, res.a)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovntpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovntpd-1.c new file mode 100644 index 00000000000..a02162124b6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovntpd-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "vmovntpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]" } } */ + +#include + +double *x; +volatile __m512d y; + +void extern +avx512f_test (void) +{ + _mm512_stream_pd (x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovntpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovntpd-2.c new file mode 100644 index 00000000000..96c26c21ef4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovntpd-2.c @@ -0,0 +1,19 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void static +avx512f_test (void) +{ + union512d s; + double res[8]; + + s.x = _mm512_set_pd (-39578.467285, 4294967295.1, -7856.342941, 0, + 85632.783567, 1234.9999, 47563.234215, -1.07); + _mm512_stream_pd (res, s.x); + + if (check_union512d (s, res)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovntps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovntps-1.c new file mode 100644 index 00000000000..933f01518aa --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovntps-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "vmovntps\[ \\t\]+\[^\n\]*%zmm\[0-9\]" } } */ + +#include + +float *x; +volatile __m512 y; + +void extern +avx512f_test (void) +{ + _mm512_stream_ps (x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovntps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovntps-2.c new file mode 100644 index 00000000000..9f4c7cb5ab2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovntps-2.c @@ -0,0 +1,22 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" + +void static +avx512f_test (void) +{ + union512 s; + float res[16]; + + s.x = _mm512_set_ps (-39578.467285, 4294967295.1, -7856.342941, 0, + 85632.783567, 1234.9999, 47563.234215, -1.07, + 3453.65743, -1234.9999, 67.234, -1, + 0.336624, 34534543, 4345.234234, -1.07234234); + + _mm512_stream_ps (res, s.x); + + if (check_union512 (s, res)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovshdup-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovshdup-1.c new file mode 100644 index 00000000000..b23df0a00ba --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovshdup-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmovshdup\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vmovshdup\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovshdup\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_movehdup_ps (x); + x = _mm512_mask_movehdup_ps (x, m, x); + x = _mm512_maskz_movehdup_ps (m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovshdup-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovshdup-2.c new file mode 100644 index 00000000000..1cd8a6b9e99 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovshdup-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +void static +CALC (float *s, float *r) +{ + int i; + + for (i = 1; i < SIZE; i += 2) + { + r[i - 1] = r[i] = s[i]; + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = i * 123.2 + 32.6; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_movehdup_ps) (s.x); + res2.x = INTRINSIC (_mask_movehdup_ps) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_movehdup_ps) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovsldup-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovsldup-1.c new file mode 100644 index 00000000000..f2fd4e07d2d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovsldup-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmovsldup\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vmovsldup\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovsldup\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_moveldup_ps (x); + x = _mm512_mask_moveldup_ps (x, m, x); + x = _mm512_maskz_moveldup_ps (m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovsldup-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovsldup-2.c new file mode 100644 index 00000000000..032fec82e31 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovsldup-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +void static +CALC (float *s, float *r) +{ + int i; + + for (i = 0; i < SIZE; i += 2) + { + r[i] = r[i + 1] = s[i]; + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = i * 123.2 + 32.6; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_moveldup_ps) (s.x); + res2.x = INTRINSIC (_mask_moveldup_ps) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_moveldup_ps) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovupd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovupd-1.c new file mode 100644 index 00000000000..f505819e3fc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovupd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmovupd\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovupd\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovupd\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovupd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovupd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +double *p; +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_loadu_pd (p); + x = _mm512_mask_loadu_pd (x, m, p); + x = _mm512_maskz_loadu_pd (m, p); + + _mm512_storeu_pd (p, x); + _mm512_mask_storeu_pd (p, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovupd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovupd-2.c new file mode 100644 index 00000000000..7e76e29b751 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovupd-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3, s2; + MASK_TYPE mask = MASK_VALUE; + double s1[SIZE]; + double res4[SIZE]; + double res5[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1[i] = 123.456 * (i + 2000) * sign; + s2.a[i] = 789.012 * (i + 3000) * sign; + res2.a[i] = DEFAULT_VALUE; + res5[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_loadu_pd) (s1); + res2.x = INTRINSIC (_mask_loadu_pd) (res2.x, mask, s1); + res3.x = INTRINSIC (_maskz_loadu_pd) (mask, s1); + INTRINSIC (_storeu_pd) (res4, s2.x); + INTRINSIC (_mask_storeu_pd) (res5, mask, s2.x); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, s1)) + abort (); + + MASK_MERGE (d) (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, s1)) + abort (); + + MASK_ZERO (d) (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, s1)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, d) (s2, res4)) + abort (); + + MASK_MERGE (d) (s2.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (s2, res5)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovups-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovups-1.c new file mode 100644 index 00000000000..93b76876ceb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovups-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmovups\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovups\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovups\[ \\t\]+\[^\n\]*\\)\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vmovups\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmovups\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +float *p; +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_loadu_ps (p); + x = _mm512_mask_loadu_ps (x, m, p); + x = _mm512_maskz_loadu_ps (m, p); + + _mm512_storeu_ps (p, x); + _mm512_mask_storeu_ps (p, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmovups-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmovups-2.c new file mode 100644 index 00000000000..7225bda54e2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmovups-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) res1, res2, res3, s2; + MASK_TYPE mask = MASK_VALUE; + float s1[SIZE]; + float res4[SIZE]; + float res5[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1[i] = 123.456 * (i + 2000) * sign; + s2.a[i] = 789.012 * (i + 3000) * sign; + res2.a[i] = DEFAULT_VALUE; + res5[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_loadu_ps) (s1); + res2.x = INTRINSIC (_mask_loadu_ps) (res2.x, mask, s1); + res3.x = INTRINSIC (_maskz_loadu_ps) (mask, s1); + INTRINSIC (_storeu_ps) (res4, s2.x); + INTRINSIC (_mask_storeu_ps) (res5, mask, s2.x); + + if (UNION_CHECK (AVX512F_LEN, ) (res1, s1)) + abort (); + + MASK_MERGE () (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, s1)) + abort (); + + MASK_ZERO () (s1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res3, s1)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, ) (s2, res4)) + abort (); + + MASK_MERGE () (s2.a, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (s2, res5)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmulpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmulpd-1.c new file mode 100644 index 00000000000..fd3e3ac6942 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmulpd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vmulpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vmulpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vmulpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vmulpd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmulpd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmulpd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mul_pd (x, x); + x = _mm512_mask_mul_pd (x, m, x, x); + x = _mm512_maskz_mul_pd (m, x, x); + x = _mm512_mul_round_pd (x, x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_mul_round_pd (x, m, x, x, _MM_FROUND_TO_NEG_INF); + x = _mm512_maskz_mul_round_pd (m, x, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmulpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmulpd-2.c new file mode 100644 index 00000000000..bfd2a51559b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmulpd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (double *r, double *s1, double *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] * s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_mul_pd) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_mul_pd) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_mul_pd) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmulps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmulps-1.c new file mode 100644 index 00000000000..e86f8972174 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmulps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vmulps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vmulps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vmulps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vmulps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmulps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vmulps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mul_ps (x, x); + x = _mm512_mask_mul_ps (x, m, x, x); + x = _mm512_maskz_mul_ps (m, x, x); + x = _mm512_mul_round_ps (x, x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_mul_round_ps (x, m, x, x, _MM_FROUND_TO_POS_INF); + x = _mm512_maskz_mul_round_ps (m, x, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmulps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vmulps-2.c new file mode 100644 index 00000000000..09bb29967af --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmulps-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (float *r, float *s1, float *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] * s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN,) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_mul_ps) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_mul_ps) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_mul_ps) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpabsd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpabsd-2.c new file mode 100644 index 00000000000..124e2e1a938 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpabsd-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *i1, int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + if (i1[i] < 0) + r[i] = -i1[i]; + else + r[i] = i1[i]; +} + +static void +TEST (void) +{ + int ck[SIZE]; + int i; + UNION_TYPE (AVX512F_LEN, i_d) s, d, dm, dz; + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = i * 7 + (i << 15) + 356; + d.a[i] = DEFAULT_VALUE; + dm.a[i] = DEFAULT_VALUE; + dz.a[i] = DEFAULT_VALUE; + } + + CALC (s.a, ck); + + d.x = INTRINSIC (_abs_epi32) (s.x); + dz.x = INTRINSIC (_maskz_abs_epi32) (mask, s.x); + dm.x = INTRINSIC (_mask_abs_epi32) (dm.x, mask, s.x); + + if (UNION_CHECK (AVX512F_LEN, i_d) (d, ck)) + abort (); + + MASK_MERGE (i_d) (ck, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (dm, ck)) + abort (); + + MASK_ZERO (i_d) (ck, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (dz, ck)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpabsd512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpabsd512-1.c new file mode 100644 index 00000000000..67b1def173a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpabsd512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpabsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpabsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpabsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; + +void extern +avx512f_test (void) +{ + x = _mm512_abs_epi32 (x); + x = _mm512_maskz_abs_epi32 (7, x); + x = _mm512_mask_abs_epi32 (x, 6, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpabsq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpabsq-2.c new file mode 100644 index 00000000000..ff906f6d41d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpabsq-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (long long *i1, long long *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + if (i1[i] < 0) + r[i] = -i1[i]; + else + r[i] = i1[i]; +} + +static void +TEST (void) +{ + long long ck[SIZE]; + int i; + UNION_TYPE (AVX512F_LEN, i_q) s, d, dm, dz; + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = i * 7 + (i << 15) + 356; + d.a[i] = DEFAULT_VALUE; + dm.a[i] = DEFAULT_VALUE; + dz.a[i] = DEFAULT_VALUE; + } + + CALC (s.a, ck); + + d.x = INTRINSIC (_abs_epi64) (s.x); + dz.x = INTRINSIC (_maskz_abs_epi64) (mask, s.x); + dm.x = INTRINSIC (_mask_abs_epi64) (dm.x, mask, s.x); + + if (UNION_CHECK (AVX512F_LEN, i_q) (d, ck)) + abort (); + + MASK_MERGE (i_q) (ck, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (dm, ck)) + abort (); + + MASK_ZERO (i_q) (ck, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (dz, ck)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpabsq512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpabsq512-1.c new file mode 100644 index 00000000000..fee48b1b740 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpabsq512-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpabsq\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpabsq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpabsq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; + +void extern +avx512f_test (void) +{ + x = _mm512_abs_epi64 (x); + x = _mm512_maskz_abs_epi64 (2, x); + x = _mm512_mask_abs_epi64 (x, 3, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpaddd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpaddd-1.c new file mode 100644 index 00000000000..f4bf7eb3f35 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpaddd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpaddd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpaddd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpaddd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_add_epi32 (x, x); + x = _mm512_mask_add_epi32 (x, m, x, x); + x = _mm512_maskz_add_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpaddd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpaddd-2.c new file mode 100644 index 00000000000..8aff11eb952 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpaddd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s1, int *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] + s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_add_epi32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_add_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_add_epi32) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpaddq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpaddq-1.c new file mode 100644 index 00000000000..6f8223e1140 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpaddq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpaddq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpaddq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpaddq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_add_epi64 (x, x); + x = _mm512_mask_add_epi64 (x, m, x, x); + x = _mm512_maskz_add_epi64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpaddq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpaddq-2.c new file mode 100644 index 00000000000..a9d31715229 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpaddq-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s1, long long *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] + s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_add_epi64) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_add_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_add_epi64) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpandd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpandd-1.c new file mode 100644 index 00000000000..fbf8a49a376 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpandd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpandd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vpandd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpandd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_and_si512 (x, x); + x = _mm512_and_epi32 (x, x); + x = _mm512_mask_and_epi32 (x, m, x, x); + x = _mm512_maskz_and_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpandd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpandd-2.c new file mode 100644 index 00000000000..b422c9d5dbd --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpandd-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *s1, int *s2, int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + r[i] = s1[i] & s2[i]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, s2, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * sign; + s2.a[i] = (i + 20) * sign; + sign = -sign; + res3.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_and_si512) (s1.x, s2.x); + res2.x = INTRINSIC (_and_epi32) (s1.x, s2.x); + res3.x = INTRINSIC (_mask_and_epi32) (res3.x, mask, s1.x, s2.x); + res4.x = INTRINSIC (_maskz_and_epi32) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res4, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpandnd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpandnd-1.c new file mode 100644 index 00000000000..8f48d601c30 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpandnd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpandnd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vpandnd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpandnd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_andnot_si512 (x, x); + x = _mm512_andnot_epi32 (x, x); + x = _mm512_mask_andnot_epi32 (x, m, x, x); + x = _mm512_maskz_andnot_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpandnd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpandnd-2.c new file mode 100644 index 00000000000..f1b12b6e6b0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpandnd-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *s1, int *s2, int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + r[i] = (~s1[i]) & s2[i]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, s2, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * sign; + s2.a[i] = (i + 20) * sign; + sign = -sign; + res3.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_andnot_si512) (s1.x, s2.x); + res2.x = INTRINSIC (_andnot_epi32) (s1.x, s2.x); + res3.x = INTRINSIC (_mask_andnot_epi32) (res3.x, mask, s1.x, s2.x); + res4.x = INTRINSIC (_maskz_andnot_epi32) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res4, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpandnq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpandnq-1.c new file mode 100644 index 00000000000..348fb159656 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpandnq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpandnq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpandnq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpandnq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_andnot_epi64 (x, x); + x = _mm512_mask_andnot_epi64 (x,m, x, x); + x = _mm512_maskz_andnot_epi64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpandnq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpandnq-2.c new file mode 100644 index 00000000000..d03bd0692f2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpandnq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (long long *s1, long long *s2, long long *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + r[i] = (~s1[i]) & s2[i]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s1, s2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * sign; + s2.a[i] = (i + 20) * sign; + sign = -sign; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_andnot_epi64) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_andnot_epi64) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_andnot_epi64) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpandq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpandq-1.c new file mode 100644 index 00000000000..343ff59f579 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpandq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpandq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpandq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpandq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_and_epi64 (x, x); + x = _mm512_mask_and_epi64 (x,m, x, x); + x = _mm512_maskz_and_epi64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpandq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpandq-2.c new file mode 100644 index 00000000000..86ab76ba890 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpandq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (long long *s1, long long *s2, long long *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + r[i] = s1[i] & s2[i]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s1, s2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * sign; + s2.a[i] = (i + 20) * sign; + sign = -sign; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_and_epi64) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_and_epi64) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_and_epi64) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpblendmd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpblendmd-1.c new file mode 100644 index 00000000000..3a0aa2429a8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpblendmd-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "(vpblendmd|vmovdqa32)\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}" } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_blend_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpblendmd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpblendmd-2.c new file mode 100644 index 00000000000..c2670fbf9cf --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpblendmd-2.c @@ -0,0 +1,43 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s1, int *s2, MASK_TYPE mask) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = (mask & (1LL << i)) ? s2[i] : s1[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, src1, src2; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 15 + 3467 * i * sign; + src2.a[i] = -2217 * i * sign; + sign = sign * -1; + } + + res1.x = INTRINSIC (_mask_blend_epi32) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a, mask); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-1.c new file mode 100644 index 00000000000..38581beaf6a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "(vpblendmq|vmovdqa64)\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}" } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_blend_epi64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-2.c new file mode 100644 index 00000000000..1fc8a5b5710 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-2.c @@ -0,0 +1,43 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s1, long long *s2, MASK_TYPE mask) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = (mask & (1LL << i)) ? s2[i] : s1[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, src1, src2; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 15 + 3467 * i * sign; + src2.a[i] = -2217 * i * sign; + sign = sign * -1; + } + + res1.x = INTRINSIC (_mask_blend_epi64) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a, mask); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-1.c new file mode 100644 index 00000000000..668db6b81a5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-1.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+%e\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+%e\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+%e\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m128i y; +volatile int z; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_broadcastd_epi32 (y); + x = _mm512_mask_broadcastd_epi32 (x, m, y); + x = _mm512_maskz_broadcastd_epi32 (m, y); + + x = _mm512_set1_epi32 (z); + x = _mm512_mask_set1_epi32 (x, m, z); + x = _mm512_maskz_set1_epi32 (m, z); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-2.c new file mode 100644 index 00000000000..67bd3ac2d38 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-2.c @@ -0,0 +1,72 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s[0]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3; + UNION_TYPE (128, i_d) src; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < 4; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_broadcastd_epi32) (src.x); + res2.x = INTRINSIC (_mask_broadcastd_epi32) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_broadcastd_epi32) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); + + res1.x = INTRINSIC (_set1_epi32) (src.a[0]); + res2.x = INTRINSIC (_mask_set1_epi32) (res2.x, mask, src.a[0]); + res3.x = INTRINSIC (_maskz_set1_epi32) (mask, src.a[0]); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-1.c new file mode 100644 index 00000000000..7c4698a34dd --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-1.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+%r\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 { target { ! { ia32 } } } } } */ +/* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+%r\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 { target { ! { ia32 } } } } } */ +/* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+%r\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 { target { ! { ia32 } } } } } */ + +#include + +volatile __m512i x; +volatile __m128i y; +volatile long long z; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_broadcastq_epi64 (y); + x = _mm512_mask_broadcastq_epi64 (x, m, y); + x = _mm512_maskz_broadcastq_epi64 (m, y); + + x = _mm512_set1_epi64 (z); + x = _mm512_mask_set1_epi64 (x, m, z); + x = _mm512_maskz_set1_epi64 (m, z); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-2.c new file mode 100644 index 00000000000..4518f6ef4fb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-2.c @@ -0,0 +1,72 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s[0]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3; + UNION_TYPE (128, i_q) src; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + sign = -1; + for (i = 0; i < 2; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_broadcastq_epi64) (src.x); + res2.x = INTRINSIC (_mask_broadcastq_epi64) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_broadcastq_epi64) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); + + res1.x = INTRINSIC (_set1_epi64) (src.a[0]); + res2.x = INTRINSIC (_mask_set1_epi64) (res2.x, mask, src.a[0]); + res3.x = INTRINSIC (_maskz_set1_epi64) (mask, src.a[0]); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c new file mode 100644 index 00000000000..7e835db1e5f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler "vpcmpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ +/* { dg-final { scan-assembler "vpcmpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + m = _mm512_cmp_epi32_mask (x, x, _MM_CMPINT_GE); + m = _mm512_mask_cmp_epi32_mask (m, x, x, _MM_CMPINT_NLE); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-2.c new file mode 100644 index 00000000000..600dfd2c0ca --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#include +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +#if AVX512F_LEN == 512 +#define CMP(imm, rel) \ + dst_ref = 0; \ + for (i = 0; i < 16; i++) \ + { \ + dst_ref = ((rel) << i) | dst_ref; \ + } \ + source1.x = _mm512_loadu_si512 (s1); \ + source2.x = _mm512_loadu_si512 (s2); \ + dst1 = _mm512_cmp_epi32_mask (source1.x, source2.x, imm);\ + dst2 = _mm512_mask_cmp_epi32_mask (mask, source1.x, source2.x, imm);\ + if (dst_ref != dst1) abort(); \ + if ((mask & dst_ref) != dst2) abort(); +#endif + +static void +TEST () +{ + UNION_TYPE (AVX512F_LEN, i_d) source1, source2; + MASK_TYPE dst1, dst2, dst_ref; + MASK_TYPE mask = MASK_VALUE; + int i; + int s1[16] = {2134, 6678, 453, 54646, + 231, 5674, 111, 23241, + 12314, 145, 671, 77575, + 23455, 166, 5321, 5673}; + int s2[16] = {41124, 6678, 8653, 856, + 231, 4646, 111, 124, + 2745, 4567, 3676, 123, + 714, 3589, 5683, 5673}; + + CMP(0x00, s1[i] == s2[i]); + CMP(0x01, s1[i] < s2[i]); + CMP(0x02, s1[i] <= s2[i]); + CMP(0x03, 0); + CMP(0x04, s1[i] != s2[i]); + CMP(0x05, s1[i] >= s2[i]); + CMP(0x06, s1[i] > s2[i]); + CMP(0x07, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-1.c new file mode 100644 index 00000000000..834fae79a43 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpcmpeqd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpcmpeqd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[0-9\]\{" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + m = _mm512_cmpeq_epi32_mask (x, x); + m = _mm512_mask_cmpeq_epi32_mask (3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-2.c new file mode 100644 index 00000000000..9a4c493aa6d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (MASK_TYPE *r, int *s1, int *s2) +{ + int i; + *r = 0; + MASK_TYPE one = 1; + + for (i = 0; i < SIZE; i++) + if (s1[i] == s2[i]) + *r = *r | (one << i); +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_d) src1, src2; + MASK_TYPE res_ref, res1, res2; + MASK_TYPE mask = MASK_VALUE; + res1 = 0; + res2 = 0; + + for (i = 0; i < SIZE / 2; i++) + { + src1.a[i * 2] = i; + src1.a[i * 2 + 1] = i * i; + src2.a[i * 2] = 2 * i; + src2.a[i * 2 + 1] = i * i; + } + + res1 = INTRINSIC (_cmpeq_epi32_mask) (src1.x, src2.x); + res2 = INTRINSIC (_mask_cmpeq_epi32_mask) (mask, src1.x, src2.x); + + CALC (&res_ref, src1.a, src2.a); + + if (res_ref != res1) + abort (); + + res_ref &= mask; + + if (res_ref != res2) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-1.c new file mode 100644 index 00000000000..8689fe3a0cd --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpcmpeqq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpcmpeqq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[0-9\]\{" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + m = _mm512_cmpeq_epi64_mask (x, x); + m = _mm512_mask_cmpeq_epi64_mask (3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-2.c new file mode 100644 index 00000000000..8c269eeb10c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (MASK_TYPE *r, long long *s1, long long *s2) +{ + int i; + *r = 0; + MASK_TYPE one = 1; + + for (i = 0; i < SIZE; i++) + if (s1[i] == s2[i]) + *r = *r | (one << i); +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_q) src1, src2; + MASK_TYPE res1, res2, res_ref; + MASK_TYPE mask = MASK_VALUE; + res1 = 0; + res2 = 0; + + for (i = 0; i < SIZE / 2; i++) + { + src1.a[i * 2] = i; + src1.a[i * 2 + 1] = i * i; + src2.a[i * 2] = 2 * i; + src2.a[i * 2 + 1] = i * i; + } + + res1 = INTRINSIC (_cmpeq_epi64_mask) (src1.x, src2.x); + res2 = INTRINSIC (_mask_cmpeq_epi64_mask) (mask, src1.x, src2.x); + + CALC (&res_ref, src1.a, src2.a); + + if (res1 != res_ref) + abort (); + + res_ref &= mask; + + if (res2 != res_ref) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-1.c new file mode 100644 index 00000000000..1be0f8d263b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpcmpgtd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpcmpgtd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[0-9\]\{" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + m = _mm512_cmpgt_epi32_mask (x, x); + m = _mm512_mask_cmpgt_epi32_mask (3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-2.c new file mode 100644 index 00000000000..6c824360519 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (MASK_TYPE *r, int *s1, int *s2) +{ + int i; + *r = 0; + MASK_TYPE one = 1; + + for (i = 0; i < SIZE; i++) + if (s1[i] > s2[i]) + *r = *r | (one << i); +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_d) src1, src2; + MASK_TYPE res_ref, res1, res2; + MASK_TYPE mask = MASK_VALUE; + res1 = 0; + res2 = 0; + + for (i = 0; i < SIZE / 2; i++) + { + src1.a[i * 2] = i; + src1.a[i * 2 + 1] = i * i; + src2.a[i * 2] = 2 * i; + src2.a[i * 2 + 1] = i * i; + } + + res1 = INTRINSIC (_cmpgt_epi32_mask) (src1.x, src2.x); + res2 = INTRINSIC (_mask_cmpgt_epi32_mask) (mask, src1.x, src2.x); + + CALC (&res_ref, src1.a, src2.a); + + if (res_ref != res1) + abort (); + + res_ref &= mask; + + if (res_ref != res2) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtq-1.c new file mode 100644 index 00000000000..b94be287ebc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtq-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpcmpgtq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpcmpgtq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[0-9\]\{" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + m = _mm512_cmpgt_epi64_mask (x, x); + m = _mm512_mask_cmpgt_epi64_mask (3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtq-2.c new file mode 100644 index 00000000000..c1eb5801b2b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (MASK_TYPE *r, long long *s1, long long *s2) +{ + int i; + *r = 0; + MASK_TYPE one = 1; + + for (i = 0; i < SIZE; i++) + if (s1[i] > s2[i]) + *r = *r | (one << i); +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_q) src1, src2; + MASK_TYPE res1, res2, res_ref; + MASK_TYPE mask = MASK_VALUE; + res1 = 0; + res2 = 0; + + for (i = 0; i < SIZE / 2; i++) + { + src1.a[i * 2] = i; + src1.a[i * 2 + 1] = i * i; + src2.a[i * 2] = 2 * i; + src2.a[i * 2 + 1] = i * i; + } + + res1 = INTRINSIC (_cmpgt_epi64_mask) (src1.x, src2.x); + res2 = INTRINSIC (_mask_cmpgt_epi64_mask) (mask, src1.x, src2.x); + + CALC (&res_ref, src1.a, src2.a); + + if (res1 != res_ref) + abort (); + + res_ref &= mask; + + if (res2 != res_ref) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-1.c new file mode 100644 index 00000000000..800140d0325 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler "vpcmpq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ +/* { dg-final { scan-assembler "vpcmpq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + m = _mm512_cmp_epi64_mask (x, x, _MM_CMPINT_NE); + m = _mm512_mask_cmp_epi64_mask (m, x, x, _MM_CMPINT_NLT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-2.c new file mode 100644 index 00000000000..2a9ceb6a9f0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-2.c @@ -0,0 +1,48 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#include +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +__mmask8 dst_ref; + +#define CMP(imm, rel) \ + dst_ref = 0; \ + for (i = 0; i < 8; i++) \ + { \ + dst_ref = ((rel) << i) | dst_ref; \ + } \ + source1.x = _mm512_loadu_si512 (s1); \ + source2.x = _mm512_loadu_si512 (s2); \ + dst1 = _mm512_cmp_epi64_mask (source1.x, source2.x, imm);\ + dst2 = _mm512_mask_cmp_epi64_mask (mask, source1.x, source2.x, imm);\ + if (dst_ref != dst1) abort(); \ + if ((mask & dst_ref) != dst2) abort(); + +static void +TEST () +{ + UNION_TYPE (AVX512F_LEN, i_d) source1, source2; + MASK_TYPE dst1, dst2, dst_ref; + MASK_TYPE mask = MASK_VALUE; + long long s1[8] = {2134, 6678, 453, 54646, + 231, 5674, 111, 23241}; + long long s2[8] = {41124, 6678, 8653, 856, + 231, 4646, 111, 124}; + int i; + + CMP(0x00, s1[i] == s2[i]); + CMP(0x01, s1[i] < s2[i]); + CMP(0x02, s1[i] <= s2[i]); + CMP(0x03, 0); + CMP(0x04, s1[i] != s2[i]); + CMP(0x05, s1[i] >= s2[i]); + CMP(0x06, s1[i] > s2[i]); + CMP(0x07, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c new file mode 100644 index 00000000000..110c0904768 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler "vpcmpud\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ +/* { dg-final { scan-assembler "vpcmpud\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + m = _mm512_cmp_epu32_mask (x, x, _MM_CMPINT_EQ); + m = _mm512_mask_cmp_epu32_mask (m, x, x, _MM_CMPINT_LT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-2.c new file mode 100644 index 00000000000..c0bb97839f2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#include +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +#if AVX512F_LEN == 512 +#define CMP(imm, rel) \ + dst_ref = 0; \ + for (i = 0; i < 16; i++) \ + { \ + dst_ref = ((rel) << i) | dst_ref; \ + } \ + source1.x = _mm512_loadu_si512 (s1); \ + source2.x = _mm512_loadu_si512 (s2); \ + dst1 = _mm512_cmp_epu32_mask (source1.x, source2.x, imm);\ + dst2 = _mm512_mask_cmp_epu32_mask (mask, source1.x, source2.x, imm);\ + if (dst_ref != dst1) abort(); \ + if ((mask & dst_ref) != dst2) abort(); +#endif + +static void +TEST () +{ + unsigned int s1[16] = {2134, 6678, 453, 54646, + 231, 5674, 111, 23241, + 12314, 145, 671, 77575, + 23455, 166, 5321, 5673}; + unsigned int s2[16] = {41124, 6678, 8653, 856, + 231, 4646, 111, 124, + 2745, 4567, 3676, 123, + 714, 3589, 5683, 5673}; + UNION_TYPE (AVX512F_LEN, i_d) source1, source2; + MASK_TYPE dst1, dst2, dst_ref; + MASK_TYPE mask = MASK_VALUE; + int i; + + CMP(0x00, s1[i] == s2[i]); + CMP(0x01, s1[i] < s2[i]); + CMP(0x02, s1[i] <= s2[i]); + CMP(0x03, 0); + CMP(0x04, s1[i] != s2[i]); + CMP(0x05, s1[i] >= s2[i]); + CMP(0x06, s1[i] > s2[i]); + CMP(0x07, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c new file mode 100644 index 00000000000..2f79f4dccbe --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler "vpcmpuq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\[^\{\]" } } */ +/* { dg-final { scan-assembler "vpcmpuq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n^k\]*%k\[1-7\]\{" } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + m = _mm512_cmp_epu64_mask (x, x, _MM_CMPINT_LE); + m = _mm512_mask_cmp_epu64_mask (m, x, x, _MM_CMPINT_UNUSED); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-2.c new file mode 100644 index 00000000000..3bd1b865623 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-2.c @@ -0,0 +1,48 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#include +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +#if AVX512F_LEN == 512 +#define CMP(imm, rel) \ + dst_ref = 0; \ + for (i = 0; i < 8; i++) \ + { \ + dst_ref = ((rel) << i) | dst_ref; \ + } \ + source1.x = _mm512_loadu_si512 (s1); \ + source2.x = _mm512_loadu_si512 (s2); \ + dst1 = _mm512_cmp_epu64_mask (source1.x, source2.x, imm);\ + dst2 = _mm512_mask_cmp_epu64_mask (mask, source1.x, source2.x, imm);\ + if (dst_ref != dst1) abort(); \ + if ((mask & dst_ref) != dst2) abort(); +#endif + +static void +TEST () +{ + UNION_TYPE (AVX512F_LEN, i_q) source1, source2; + MASK_TYPE dst1, dst2, dst_ref; + MASK_TYPE mask = MASK_VALUE; + int i; + unsigned long long s1[8] = {2134, 6678, 453, 54646, + 231, 5674, 111, 23241}; + unsigned long long s2[8] = {41124, 6678, 8653, 856, + 231, 4646, 111, 124}; + + CMP(0x00, s1[i] == s2[i]); + CMP(0x01, s1[i] < s2[i]); + CMP(0x02, s1[i] <= s2[i]); + CMP(0x03, 0); + CMP(0x04, s1[i] != s2[i]); + CMP(0x05, s1[i] >= s2[i]); + CMP(0x06, s1[i] > s2[i]); + CMP(0x07, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-1.c new file mode 100644 index 00000000000..162fa7aef07 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpcompressd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpcompressd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vpcompressd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +int *p; +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_compress_epi32 (x, m, x); + x = _mm512_maskz_compress_epi32 (m, x); + + _mm512_mask_compressstoreu_epi32 (p, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-2.c new file mode 100644 index 00000000000..2c1e3f586d8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcompressd-2.c @@ -0,0 +1,62 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#define MASK ((1 << SIZE) - 1) +#include + +static void +CALC (int *s, int *r, MASK_TYPE mask) +{ + int i, k; + + for (i = 0, k = 0; i < SIZE; i++) + { + if (mask & (1 << i)) + r[k++] = s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s, res1, res2; + int res3[SIZE]; + MASK_TYPE compressed_mask, mask = MASK_VALUE; + int res_ref[SIZE]; + int i, mask_bit_count, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 12345 * (i + 200) * sign; + res1.a[i] = DEFAULT_VALUE; + res3[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_mask_compress_epi32) (res1.x, mask, s.x); + res2.x = INTRINSIC (_maskz_compress_epi32) (mask, s.x); + INTRINSIC (_mask_compressstoreu_epi32) (res3, mask, s.x); + + mask_bit_count = __popcntd (mask & MASK); + compressed_mask = (1 << mask_bit_count) - 1; + CALC (s.a, res_ref, mask); + + MASK_MERGE (i_d) (res_ref, compressed_mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, compressed_mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, compressed_mask, SIZE); + if (checkVi (res3, res_ref, SIZE)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-1.c new file mode 100644 index 00000000000..3a07ee89bd8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpcompressq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpcompressq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vpcompressq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*\\)\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +long long *p; +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_compress_epi64 (x, m, x); + x = _mm512_maskz_compress_epi64 (m, x); + + _mm512_mask_compressstoreu_epi64 (p, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-2.c new file mode 100644 index 00000000000..0ea69f0ab77 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-2.c @@ -0,0 +1,62 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#define MASK ((1 << SIZE) - 1) +#include + +static void +CALC (long long *s, long long *r, MASK_TYPE mask) +{ + int i, k; + + for (i = 0, k = 0; i < SIZE; i++) + { + if (mask & (1 << i)) + r[k++] = s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s, res1, res2; + long long res3[SIZE]; + MASK_TYPE compressed_mask, mask = MASK_VALUE; + long long res_ref[SIZE]; + int i, mask_bit_count, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 12345 * (i + 200) * sign; + res1.a[i] = DEFAULT_VALUE; + res3[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_mask_compress_epi64) (res1.x, mask, s.x); + res2.x = INTRINSIC (_maskz_compress_epi64) (mask, s.x); + INTRINSIC (_mask_compressstoreu_epi64) (res3, mask, s.x); + + mask_bit_count = __popcntd (mask & MASK); + compressed_mask = (1 << mask_bit_count) - 1; + CALC (s.a, res_ref, mask); + + MASK_MERGE (i_q) (res_ref, compressed_mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, compressed_mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, compressed_mask, SIZE); + if (checkVl (res3, res_ref, SIZE)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermd-1.c new file mode 100644 index 00000000000..4b5f8d91a17 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vpermd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permutexvar_epi32 (x, x); + x = _mm512_maskz_permutexvar_epi32 (m, x, x); + x = _mm512_mask_permutexvar_epi32 (x, m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c new file mode 100644 index 00000000000..db5fd09e7d3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *src1, int *mask, int *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + dst[i] = src1[mask[i] & 15]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = (i + 10) * (i + 10) * sign; + src2.a[i] = (i + 30); + sign = -sign; + res3.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_permutexvar_epi32) (src1.x, src2.x); + res2.x = INTRINSIC (_maskz_permutexvar_epi32) (mask, src1.x, src2.x); + res3.x = INTRINSIC (_mask_permutexvar_epi32) (res3.x, mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-1.c new file mode 100644 index 00000000000..0436dfd709b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermi2d\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask2_permutex2var_epi32 (x, x, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c new file mode 100644 index 00000000000..9aa104bbf5d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "math.h" +#include "values.h" + +static void +CALC (int *dst, int *src1, int *ind, int *src2) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + unsigned long long offset = ind[i] & (SIZE - 1); + unsigned long long cond = ind[i] & SIZE; + + dst[i] = cond ? src2[offset] : src1[offset]; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_d) s1, s2, res, ind; + int res_ref[SIZE]; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { + ind.a[i] = DEFAULT_VALUE; + s1.a[i] = 34 * i + 1; + s2.a[i] = 34 * i; + + res.a[i] = DEFAULT_VALUE; + } + + CALC (res_ref, s1.a, ind.a, s2.a); + + res.x = + INTRINSIC (_mask2_permutex2var_epi32) (s1.x, ind.x, mask, s2.x); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-1.c new file mode 100644 index 00000000000..e2b74cc9910 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermi2pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512d x; +volatile __m512i y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask2_permutex2var_pd (x, y, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c new file mode 100644 index 00000000000..a2daca0bd55 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include "math.h" +#include "values.h" + +static void +CALC (double *dst, double *src1, long long *ind, double *src2) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + unsigned long long offset = ind[i] & (SIZE - 1); + unsigned long long cond = ind[i] & SIZE; + + dst[i] = cond ? src2[offset] : src1[offset]; + } +} + +void static +TEST (void) +{ + int i, k; + UNION_TYPE (AVX512F_LEN, d) s1, s2, res; + UNION_TYPE (AVX512F_LEN, i_q) ind; + double res_ref[SIZE]; + + union + { + double f; + long long i; + } ind_copy[SIZE]; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { + /* Some of the integer indexes may be interpreted as floating point + values in mask-merge mode, that's why we use IND_COPY. */ + ind.a[i] = ind_copy[i].i = 17 * (i << 1); + s1.a[i] = 42.5 * i + 1; + s2.a[i] = 22.5 * i; + + res.a[i] = DEFAULT_VALUE; + } + + CALC (res_ref, s1.a, ind.a, s2.a); + + res.x = INTRINSIC (_mask2_permutex2var_pd) (s1.x, ind.x, mask, s2.x); + + /* Standard MASK_MERGE cannot be used since VPERMI2PD in mask-merge mode + merges vectors of two different types (_m512d and __m512i). */ + for (k = 0; k < SIZE; k++) + res_ref[k] = (mask & (1LL << k)) ? res_ref[k] : ind_copy[k].f; + + if (UNION_CHECK (AVX512F_LEN, d) (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-1.c new file mode 100644 index 00000000000..fc103a90e18 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermi2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512 x; +volatile __m512i y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask2_permutex2var_ps (x, y, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c new file mode 100644 index 00000000000..56215cfca14 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "math.h" +#include "values.h" + +static void +CALC (float *dst, float *src1, int *ind, float *src2) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + unsigned long long offset = ind[i] & (SIZE - 1); + unsigned long long cond = ind[i] & SIZE; + + dst[i] = cond ? src2[offset] : src1[offset]; + } +} + +void static +TEST (void) +{ + int i, k; + UNION_TYPE (AVX512F_LEN,) s1, s2, res; + UNION_TYPE (AVX512F_LEN, i_d) ind; + float res_ref[SIZE]; + + union + { + float f; + int i; + } ind_copy[SIZE]; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { + /* Some of the integer indexes may be interpreted as floating point + values in mask-merge mode, that's why we use IND_COPY. */ + ind.a[i] = ind_copy[i].i = 17 * (i << 1); + s1.a[i] = 42.5 * i + 1; + s2.a[i] = 22.5 * i; + + res.a[i] = DEFAULT_VALUE; + } + + CALC (res_ref, s1.a, ind.a, s2.a); + + res.x = INTRINSIC (_mask2_permutex2var_ps) (s1.x, ind.x, mask, s2.x); + + /* Standard MASK_MERGE cannot be used since VPERMI2PS in mask-merge mode + merges vectors of two different types (_m512 and __m512i). */ + for (k = 0; k < SIZE; k++) + res_ref[k] = (mask & (1LL << k)) ? res_ref[k] : ind_copy[k].f; + + if (UNION_CHECK (AVX512F_LEN,) (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-1.c new file mode 100644 index 00000000000..7d780b2a3b2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermi2q\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask2_permutex2var_epi64 (x, x, m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c new file mode 100644 index 00000000000..9d7b9bec3f3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include "math.h" +#include "values.h" + +static void +CALC (long long *dst, long long *src1, long long *ind, long long *src2) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + unsigned long long offset = ind[i] & (SIZE - 1); + unsigned long long cond = ind[i] & SIZE; + + dst[i] = cond ? src2[offset] : src1[offset]; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_q) s1, s2, res, ind; + long long res_ref[SIZE]; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { + ind.a[i] = DEFAULT_VALUE; + s1.a[i] = 34 * i + 1; + s2.a[i] = 34 * i; + + res.a[i] = DEFAULT_VALUE; + } + + CALC (res_ref, s1.a, ind.a, s2.a); + + res.x = + INTRINSIC (_mask2_permutex2var_epi64) (s1.x, ind.x, mask, s2.x); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermilpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpd-1.c new file mode 100644 index 00000000000..061a6253591 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermilpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermilpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermilpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __m512i c; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permutevar_pd (x, c); + x = _mm512_mask_permutevar_pd (x, m, x, c); + x = _mm512_maskz_permutevar_pd (m, x, c); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermilpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpd-2.c new file mode 100644 index 00000000000..27d697bd846 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpd-2.c @@ -0,0 +1,60 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +#ifndef CTRL +#define CTRL 6 +#endif + +#undef mask_v +#define mask_v(pos) (((CTRL & (1ULL << (pos))) >> (pos)) << 1) + +static void +CALC (double *s1, long long *s2, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + r[i] = s1[(2 * (i / 2)) + ((s2[i] & 0x02) >> 1)]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1, res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) s2; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i + 10.; + s2.a[i] = mask_v (i); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_permutevar_pd) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_permutevar_pd) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_permutevar_pd) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermilpdi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpdi-1.c new file mode 100644 index 00000000000..8b5ffd023af --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpdi-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermilpd\[ \\t\]+\[^\n\]*13\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermilpd\[ \\t\]+\[^\n\]*13\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermilpd\[ \\t\]+\[^\n\]*13\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permute_pd (x, 13); + x = _mm512_mask_permute_pd (x, m, x, 13); + x = _mm512_maskz_permute_pd (m, x, 13); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermilpdi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpdi-2.c new file mode 100644 index 00000000000..9b5ecd4c6c5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpdi-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +#ifndef CTRL +#define CTRL 129 +#endif + +static void +CALC (double *s1, int s2, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = (s2 & (1 << i)) ? s1[1 + 2 * (i / 2)] : s1[2 * (i / 2)]; + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i + 10.; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_permute_pd) (s1.x, CTRL); + res2.x = INTRINSIC (_mask_permute_pd) (res2.x, mask, s1.x, CTRL); + res3.x = INTRINSIC (_maskz_permute_pd) (mask, s1.x, CTRL); + + CALC (s1.a, CTRL, res_ref); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermilps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermilps-1.c new file mode 100644 index 00000000000..b46182b247d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermilps-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermilps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermilps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermilps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __m512i c; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permutevar_ps (x, c); + x = _mm512_mask_permutevar_ps (x, m, x, c); + x = _mm512_maskz_permutevar_ps (m, x, c); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermilps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermilps-2.c new file mode 100644 index 00000000000..92c65538d10 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermilps-2.c @@ -0,0 +1,60 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +#ifndef CTRL +#define CTRL 233 +#endif + +#undef mask_v +#define mask_v(pos) ((CTRL & (0x3 << (pos))) >> (pos)) + +static void +CALC (float *s1, int *s2, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + r[i] = s1[(4 * (i / 4)) + (s2[i] & 0x03)]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN,) s1, res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_d) s2; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i + 10.; + s2.a[i] = mask_v (i); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_permutevar_ps) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_permutevar_ps) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_permutevar_ps) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermilpsi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpsi-1.c new file mode 100644 index 00000000000..f09213e03e7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpsi-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermilps\[ \\t\]+\[^\n\]*13\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermilps\[ \\t\]+\[^\n\]*13\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermilps\[ \\t\]+\[^\n\]*13\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permute_ps (x, 13); + x = _mm512_mask_permute_ps (x, m, x, 13); + x = _mm512_maskz_permute_ps (m, x, 13); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermilpsi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpsi-2.c new file mode 100644 index 00000000000..381a794b4ed --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermilpsi-2.c @@ -0,0 +1,82 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +#ifndef CTRL +#define CTRL 129 +#endif + +#ifndef SELECT4_DEFINED +#define SELECT4_DEFINED +static int +select4 (int i, unsigned ctrl) +{ + int res; + switch (i % 4) + { + case 0: + res = (CTRL & 0x03); + break; + case 1: + res = ((CTRL & 0x0c) >> 2); + break; + case 2: + res = ((CTRL & 0x30) >> 4); + break; + case 3: + res = ((CTRL & 0xc0) >> 6); + break; + } + return res; +} +#endif + +static void +CALC (float *s, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = s[(4 * (i / 4)) + select4 (i, CTRL)]; + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN,) s1, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i + 10.; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_permute_ps) (s1.x, CTRL); + res2.x = INTRINSIC (_mask_permute_ps) (res2.x, mask, s1.x, CTRL); + res3.x = INTRINSIC (_maskz_permute_ps) (mask, s1.x, CTRL); + + CALC (s1.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermpd-1.c new file mode 100644 index 00000000000..d2e8b9c971b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermpd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m512d y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + y = _mm512_permutexvar_pd (x, y); + y = _mm512_mask_permutexvar_pd (y, m, x, y); + y = _mm512_maskz_permutexvar_pd (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermpd-2.c new file mode 100644 index 00000000000..3d168beba58 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermpd-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (double *s1, long long *mask, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = s1[mask[i] & 7 % SIZE]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) src1, res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) src2; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * sign; + src2.a[i] = i + 20; + sign = -sign; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_permutexvar_pd) (src2.x, src1.x); + res2.x = INTRINSIC (_mask_permutexvar_pd) (res2.x, mask, src2.x, src1.x); + res3.x = INTRINSIC (_maskz_permutexvar_pd) (mask, src2.x, src1.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermpdi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermpdi-1.c new file mode 100644 index 00000000000..97fd92c840f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermpdi-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permutex_pd (x, 13); + x = _mm512_mask_permutex_pd (x, m, x, 13); + x = _mm512_maskz_permutex_pd (m, x, 13); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermpdi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermpdi-2.c new file mode 100644 index 00000000000..eb8e583812f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermpdi-2.c @@ -0,0 +1,58 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +#define N 0x7c + +static void +CALC (double *s1, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + int index = (N >> ((i % 4) * 2)) & 3; + int base = i / 4; + r[i] = s1[4 * base + index]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) src1, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * i * sign; + res2.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_permutex_pd) (src1.x, N); + res2.x = INTRINSIC (_mask_permutex_pd) (res2.x, mask, src1.x, N); + res3.x = INTRINSIC (_maskz_permutex_pd) (mask, src1.x, N); + + CALC (src1.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermps-1.c new file mode 100644 index 00000000000..7b7367afad9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermps-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m512 y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + y = _mm512_permutexvar_ps (x, y); + y = _mm512_mask_permutexvar_ps (y, m, x, y); + y = _mm512_maskz_permutexvar_ps (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c new file mode 100644 index 00000000000..618294868bc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (float *s1, int *mask, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = s1[mask[i] & 15 % SIZE]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) src1, res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_d) src2; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * sign; + src2.a[i] = i + 20; + sign = -sign; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_permutexvar_ps) (src2.x, src1.x); + res2.x = INTRINSIC (_mask_permutexvar_ps) (res2.x, mask, src2.x, src1.x); + res3.x = INTRINSIC (_maskz_permutexvar_ps) (mask, src2.x, src1.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-1.c new file mode 100644 index 00000000000..ef0271b612a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permutex_epi64 (x, 13); + x = _mm512_mask_permutex_epi64 (x, m, x, 13); + x = _mm512_maskz_permutex_epi64 (m, x, 13); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c new file mode 100644 index 00000000000..6b1d778c6fd --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c @@ -0,0 +1,59 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +#define IMM_MASK 0x7c + +static void +CALC (long long *src1, int mask, long long *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + int index = ((mask >> (2 * (i % 4))) & 3); + int base = i / 4; + dst[i] = src1[4 * base + index]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = (i + 10) * (i + 10) * sign; + sign = -sign; + res3.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_permutex_epi64) (src1.x, IMM_MASK); + res2.x = INTRINSIC (_maskz_permutex_epi64) (mask, src1.x, IMM_MASK); + res3.x = INTRINSIC (_mask_permutex_epi64) (res3.x, mask, src1.x, IMM_MASK); + + CALC (src1.a, IMM_MASK, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-1.c new file mode 100644 index 00000000000..62b28c33d57 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permutexvar_epi64 (x, x); + x = _mm512_maskz_permutexvar_epi64 (m, x, x); + x = _mm512_mask_permutexvar_epi64 (x, m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c new file mode 100644 index 00000000000..2733e175b56 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (long long *src1, long long *mask, long long *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + dst[i] = src1[mask[i] & 7]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = (i + 10) * (i + 10) * sign; + src2.a[i] = 2 * i + 10; + sign = -sign; + res3.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_permutexvar_epi64) (src1.x, src2.x); + res2.x = INTRINSIC (_maskz_permutexvar_epi64) (mask, src1.x, src2.x); + res3.x = INTRINSIC (_mask_permutexvar_epi64) (res3.x, mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-1.c new file mode 100644 index 00000000000..892b5710dad --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermt2d\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermt2d\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermt2d\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permutex2var_epi32 (x, x, x); + x = _mm512_mask_permutex2var_epi32 (x, m, x, x); + x = _mm512_maskz_permutex2var_epi32 (m, x, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c new file mode 100644 index 00000000000..ef8d1951b6d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "math.h" +#include "values.h" + +static void +CALC (int *dst, int *src1, int *ind, int *src2) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + unsigned long long offset = ind[i] & (SIZE - 1); + unsigned long long cond = ind[i] & SIZE; + + dst[i] = cond ? src2[offset] : src1[offset]; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_d) s1, s2, res1, res2, res3, ind; + int res_ref[SIZE]; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { + ind.a[i] = 17 * (i << 1); + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 34 * i; + + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + } + + CALC (res_ref, s1.a, ind.a, s2.a); + + res1.x = INTRINSIC (_permutex2var_epi32) (s1.x, ind.x, s2.x); + res2.x = + INTRINSIC (_mask_permutex2var_epi32) (s1.x, mask, ind.x, s2.x); + res3.x = + INTRINSIC (_maskz_permutex2var_epi32) (mask, s1.x, ind.x, s2.x); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-1.c new file mode 100644 index 00000000000..01595233f9b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermt2pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermt2pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermt2pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __m512i y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permutex2var_pd (x, y, x); + x = _mm512_mask_permutex2var_pd (x, m, y, x); + x = _mm512_maskz_permutex2var_pd (m, x, y, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c new file mode 100644 index 00000000000..511a47015f9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include "math.h" +#include "values.h" + +static void +CALC (double *dst, double *src1, long long *ind, double *src2) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + unsigned long long offset = ind[i] & (SIZE - 1); + unsigned long long cond = ind[i] & SIZE; + + dst[i] = cond ? src2[offset] : src1[offset]; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, d) s1, s2, res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) ind; + double res_ref[SIZE]; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { + ind.a[i] = 17 * (i << 1); + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 22.5 * i; + + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + } + + CALC (res_ref, s1.a, ind.a, s2.a); + + res1.x = INTRINSIC (_permutex2var_pd) (s1.x, ind.x, s2.x); + res2.x = INTRINSIC (_mask_permutex2var_pd) (s1.x, mask, ind.x, s2.x); + res3.x = + INTRINSIC (_maskz_permutex2var_pd) (mask, s1.x, ind.x, s2.x); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-1.c new file mode 100644 index 00000000000..f315055da84 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermt2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermt2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermt2ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __m512i y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permutex2var_ps (x, y, x); + x = _mm512_mask_permutex2var_ps (x, m, y, x); + x = _mm512_maskz_permutex2var_ps (m, x, y, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c new file mode 100644 index 00000000000..cd35d1237ae --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "math.h" +#include "values.h" + +static void +CALC (float *dst, float *src1, int *ind, float *src2) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + unsigned long long offset = ind[i] & (SIZE - 1); + unsigned long long cond = ind[i] & SIZE; + + dst[i] = cond ? src2[offset] : src1[offset]; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN,) s1, s2, res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_d) ind; + float res_ref[SIZE]; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { + ind.a[i] = 17 * (i << 1); + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 22.5 * i; + + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + } + + CALC (res_ref, s1.a, ind.a, s2.a); + + res1.x = INTRINSIC (_permutex2var_ps) (s1.x, ind.x, s2.x); + res2.x = INTRINSIC (_mask_permutex2var_ps) (s1.x, mask, ind.x, s2.x); + res3.x = + INTRINSIC (_maskz_permutex2var_ps) (mask, s1.x, ind.x, s2.x); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO ()(res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-1.c new file mode 100644 index 00000000000..65f4afb0406 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpermt2q\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpermt2q\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpermt2q\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_permutex2var_epi64 (x, x, x); + x = _mm512_mask_permutex2var_epi64 (x, m, x, x); + x = _mm512_maskz_permutex2var_epi64 (m, x, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c new file mode 100644 index 00000000000..5f449adec2e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include "math.h" +#include "values.h" + +static void +CALC (long long *dst, long long *src1, long long *ind, long long *src2) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + unsigned long long offset = ind[i] & (SIZE - 1); + unsigned long long cond = ind[i] & SIZE; + + dst[i] = cond ? src2[offset] : src1[offset]; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_q) s1, s2, res1, res2, res3, ind; + long long res_ref[SIZE]; + + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { + ind.a[i] = 17 * (i << 1); + s1.a[i] = DEFAULT_VALUE; + s2.a[i] = 34 * i; + + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + } + + CALC (res_ref, s1.a, ind.a, s2.a); + + res1.x = INTRINSIC (_permutex2var_epi64) (s1.x, ind.x, s2.x); + res2.x = + INTRINSIC (_mask_permutex2var_epi64) (s1.x, mask, ind.x, s2.x); + res3.x = + INTRINSIC (_maskz_permutex2var_epi64) (mask, s1.x, ind.x, s2.x); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-1.c new file mode 100644 index 00000000000..c70a2abc9ac --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpexpandd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vpexpandd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ + +#include + +int *p; +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_expand_epi32 (x, m, x); + x = _mm512_maskz_expand_epi32 (m, x); + + x = _mm512_mask_expandloadu_epi32 (x, m, p); + x = _mm512_maskz_expandloadu_epi32 (m, p); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-2.c new file mode 100644 index 00000000000..31b3b5a05ee --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpexpandd-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *s, int *r, MASK_TYPE mask) +{ + int i, k; + + for (i = 0, k = 0; i < SIZE; i++) + { + if (mask & (1 << i)) + r[i] = s[k++]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + int s2[SIZE]; + int res_ref1[SIZE]; + int res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 12345 * (i + 200) * sign; + s2[i] = 67890 * (i + 300) * sign; + res1.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_mask_expand_epi32) (res1.x, mask, s1.x); + res2.x = INTRINSIC (_maskz_expand_epi32) (mask, s1.x); + res3.x = INTRINSIC (_mask_expandloadu_epi32) (res3.x, mask, s2); + res4.x = INTRINSIC (_maskz_expandloadu_epi32) (mask, s2); + + CALC (s1.a, res_ref1, mask); + CALC (s2, res_ref2, mask); + + MASK_MERGE (i_d) (res_ref1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref1)) + abort (); + + MASK_ZERO (i_d) (res_ref1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref1)) + abort (); + + MASK_MERGE (i_d) (res_ref2, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref2)) + abort (); + + MASK_ZERO (i_d) (res_ref2, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res4, res_ref2)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-1.c new file mode 100644 index 00000000000..fc477f209a0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpexpandq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vpexpandq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ + +#include + +long long *p; +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mask_expand_epi64 (x, m, x); + x = _mm512_maskz_expand_epi64 (m, x); + + x = _mm512_mask_expandloadu_epi64 (x, m, p); + x = _mm512_maskz_expandloadu_epi64 (m, p); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-2.c new file mode 100644 index 00000000000..f72799c574e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpexpandq-2.c @@ -0,0 +1,66 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (long long *s, long long *r, MASK_TYPE mask) +{ + int i, k; + + for (i = 0, k = 0; i < SIZE; i++) + { + if (mask & (1 << i)) + r[i] = s[k++]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s1, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + long long s2[SIZE]; + long long res_ref1[SIZE]; + long long res_ref2[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 12345 * (i + 200) * sign; + s2[i] = 67890 * (i + 300) * sign; + res1.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_mask_expand_epi64) (res1.x, mask, s1.x); + res2.x = INTRINSIC (_maskz_expand_epi64) (mask, s1.x); + res3.x = INTRINSIC (_mask_expandloadu_epi64) (res3.x, mask, s2); + res4.x = INTRINSIC (_maskz_expandloadu_epi64) (mask, s2); + + CALC (s1.a, res_ref1, mask); + CALC (s2, res_ref2, mask); + + MASK_MERGE (i_q) (res_ref1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref1)) + abort (); + + MASK_ZERO (i_q) (res_ref1, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref1)) + abort (); + + MASK_MERGE (i_q) (res_ref2, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref2)) + abort (); + + MASK_ZERO (i_q) (res_ref2, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res4, res_ref2)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-1.c new file mode 100644 index 00000000000..2c88e92bd85 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmaxsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpmaxsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmaxsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_max_epi32 (x, x); + x = _mm512_mask_max_epi32 (x, m, x, x); + x = _mm512_maskz_max_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-2.c new file mode 100644 index 00000000000..78c5511a37a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsd-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + + +CALC (int *src1, int *src2, int *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + dst[i] = src1[i] > src2[i] ? src1[i] : src2[i]; +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) src1, src2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * sign; + src2.a[i] = (i + 2000) * sign; + sign = -sign; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_max_epi32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_max_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_max_epi32) (mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-1.c new file mode 100644 index 00000000000..e15fa2ab3d0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmaxsq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpmaxsq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmaxsq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_max_epi64 (x, x); + x = _mm512_mask_max_epi64 (x, m, x, x); + x = _mm512_maskz_max_epi64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-2.c new file mode 100644 index 00000000000..10bcd8230f6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxsq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + + +CALC (long long *src1, long long *src2, long long *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + dst[i] = src1[i] > src2[i] ? src1[i] : src2[i]; +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) src1, src2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * sign; + src2.a[i] = (i + 2000) * sign; + sign = -sign; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_max_epi64) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_max_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_max_epi64) (mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmaxud-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxud-1.c new file mode 100644 index 00000000000..321992ac102 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxud-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmaxud\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpmaxud\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmaxud\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_max_epu32 (x, x); + x = _mm512_mask_max_epu32 (x, m, x, x); + x = _mm512_maskz_max_epu32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmaxud-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxud-2.c new file mode 100644 index 00000000000..b014be8627f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxud-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + + +CALC (unsigned *src1, unsigned *src2, + unsigned *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + dst[i] = src1[i] > src2[i] ? src1[i] : src2[i]; +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_d) src1, src2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + unsigned res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i; + src2.a[i] = (i + 2000); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_max_epu32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_max_epu32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_max_epu32) (mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmaxuq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxuq-1.c new file mode 100644 index 00000000000..2cf8b4cc458 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxuq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmaxuq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpmaxuq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmaxuq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_max_epu64 (x, x); + x = _mm512_mask_max_epu64 (x, m, x, x); + x = _mm512_maskz_max_epu64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmaxuq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxuq-2.c new file mode 100644 index 00000000000..e2daacd3983 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmaxuq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + + +CALC (unsigned long long *src1, unsigned long long *src2, + unsigned long long *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + dst[i] = src1[i] > src2[i] ? src1[i] : src2[i]; +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_q) src1, src2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + unsigned long long res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i; + src2.a[i] = (i + 2000); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_max_epu64) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_max_epu64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_max_epu64) (mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpminsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpminsd-1.c new file mode 100644 index 00000000000..2beffc6e2b1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpminsd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpminsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpminsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpminsd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_min_epi32 (x, x); + x = _mm512_mask_min_epi32 (x, m, x, x); + x = _mm512_maskz_min_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpminsd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpminsd-2.c new file mode 100644 index 00000000000..1a6b82bfdd4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpminsd-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + + +CALC (int *src1, int *src2, int *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + dst[i] = src1[i] < src2[i] ? src1[i] : src2[i]; +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) src1, src2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * sign; + src2.a[i] = (i + 2000) * sign; + sign = -sign; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_min_epi32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_min_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_min_epi32) (mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpminsq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpminsq-1.c new file mode 100644 index 00000000000..8270307fb24 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpminsq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpminsq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpminsq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpminsq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_min_epi64 (x, x); + x = _mm512_mask_min_epi64 (x, m, x, x); + x = _mm512_maskz_min_epi64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpminsq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpminsq-2.c new file mode 100644 index 00000000000..f646489ad44 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpminsq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + + +CALC (long long *src1, long long *src2, long long *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + dst[i] = src1[i] < src2[i] ? src1[i] : src2[i]; +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) src1, src2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * sign; + src2.a[i] = (i + 2000) * sign; + sign = -sign; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_min_epi64) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_min_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_min_epi64) (mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpminud-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpminud-1.c new file mode 100644 index 00000000000..6cbb9d631f2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpminud-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpminud\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpminud\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpminud\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_min_epu32 (x, x); + x = _mm512_mask_min_epu32 (x, m, x, x); + x = _mm512_maskz_min_epu32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpminud-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpminud-2.c new file mode 100644 index 00000000000..17aac43a5ad --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpminud-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + + +CALC (unsigned *src1, unsigned *src2, + unsigned *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + dst[i] = src1[i] < src2[i] ? src1[i] : src2[i]; +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_d) src1, src2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + unsigned res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * i; + src2.a[i] = i + 20; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_min_epu32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_min_epu32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_min_epu32) (mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpminuq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpminuq-1.c new file mode 100644 index 00000000000..816c11bccaf --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpminuq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpminuq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpminuq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpminuq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_min_epu64 (x, x); + x = _mm512_mask_min_epu64 (x, m, x, x); + x = _mm512_maskz_min_epu64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpminuq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpminuq-2.c new file mode 100644 index 00000000000..4c27977ace8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpminuq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + + +CALC (unsigned long long *src1, unsigned long long *src2, + unsigned long long *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + dst[i] = src1[i] < src2[i] ? src1[i] : src2[i]; +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_q) src1, src2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + unsigned long long res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i; + src2.a[i] = (i + 2000); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_min_epu64) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_min_epu64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_min_epu64) (mask, src1.x, src2.x); + + CALC (src1.a, src2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-1.c new file mode 100644 index 00000000000..c634d888d68 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovdb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovdb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovdb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m128i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi32_epi8 (s); + res = _mm512_mask_cvtepi32_epi8 (res, m, s); + res = _mm512_maskz_cvtepi32_epi8 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-2.c new file mode 100644 index 00000000000..d153cfef26d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (char *r, int *s) +{ + int i; + for (i = 0; i < 16; i++) + { + r[i] = (i < SIZE) ? (char) s[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (128, i_b) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_d) src; + MASK_TYPE mask = MASK_VALUE; + char res_ref[16]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtepi32_epi8) (src.x); + res2.x = INTRINSIC (_mask_cvtepi32_epi8) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtepi32_epi8) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (128, i_b) (res1, res_ref)) + abort (); + + MASK_MERGE (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res2, res_ref)) + abort (); + + MASK_ZERO (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-1.c new file mode 100644 index 00000000000..bd66defe6c5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovdw\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovdw\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovdw\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m256i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi32_epi16 (s); + res = _mm512_mask_cvtepi32_epi16 (res, m, s); + res = _mm512_maskz_cvtepi32_epi16 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-2.c new file mode 100644 index 00000000000..79fb5d89a42 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#define SIZE_HALF (AVX512F_LEN_HALF / 16) + +CALC (short *r, int *s) +{ + int i; + for (i = 0; i < SIZE_HALF; i++) + { + r[i] = (i < SIZE) ? (short) s[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN_HALF, i_w) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_d) src; + MASK_TYPE mask = MASK_VALUE; + short res_ref[SIZE_HALF]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtepi32_epi16) (src.x); + res2.x = INTRINSIC (_mask_cvtepi32_epi16) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtepi32_epi16) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res1, res_ref)) + abort (); + + MASK_MERGE (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res2, res_ref)) + abort (); + + MASK_ZERO (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-1.c new file mode 100644 index 00000000000..7fc5980c3a6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovqb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovqb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovqb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m128i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi64_epi8 (s); + res = _mm512_mask_cvtepi64_epi8 (res, m, s); + res = _mm512_maskz_cvtepi64_epi8 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-2.c new file mode 100644 index 00000000000..ae4eae15469 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (char *r, long long *s) +{ + int i; + for (i = 0; i < 16; i++) + { + r[i] = (i < SIZE) ? (char) s[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (128, i_b) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) src; + MASK_TYPE mask = MASK_VALUE; + char res_ref[16]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtepi64_epi8) (src.x); + res2.x = INTRINSIC (_mask_cvtepi64_epi8) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtepi64_epi8) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (128, i_b) (res1, res_ref)) + abort (); + + MASK_MERGE (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res2, res_ref)) + abort (); + + MASK_ZERO (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-1.c new file mode 100644 index 00000000000..f0f80b10175 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovqd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovqd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovqd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m256i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi64_epi32 (s); + res = _mm512_mask_cvtepi64_epi32 (res, m, s); + res = _mm512_maskz_cvtepi64_epi32 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-2.c new file mode 100644 index 00000000000..19b5cb89ae6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#define SIZE_HALF (AVX512F_LEN_HALF / 32) + +CALC (int *r, long long *s) +{ + int i; + for (i = 0; i < SIZE_HALF; i++) + { + r[i] = (i < SIZE) ? (int) s[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN_HALF, i_d) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) src; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE_HALF]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtepi64_epi32) (src.x); + res2.x = INTRINSIC (_mask_cvtepi64_epi32) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtepi64_epi32) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-1.c new file mode 100644 index 00000000000..20011ee75a9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovqw\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovqw\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovqw\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m128i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi64_epi16 (s); + res = _mm512_mask_cvtepi64_epi16 (res, m, s); + res = _mm512_maskz_cvtepi64_epi16 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-2.c new file mode 100644 index 00000000000..3734adf0878 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (short *r, long long *s) +{ + int i; + for (i = 0; i < 8; i++) + { + r[i] = (i < SIZE) ? (short) s[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (128, i_w) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) src; + MASK_TYPE mask = MASK_VALUE; + short res_ref[8]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtepi64_epi16) (src.x); + res2.x = INTRINSIC (_mask_cvtepi64_epi16) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtepi64_epi16) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (128, i_w) (res1, res_ref)) + abort (); + + MASK_MERGE (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_w) (res2, res_ref)) + abort (); + + MASK_ZERO (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_w) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-1.c new file mode 100644 index 00000000000..c14dc04e004 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovsdb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsdb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsdb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m128i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtsepi32_epi8 (s); + res = _mm512_mask_cvtsepi32_epi8 (res, m, s); + res = _mm512_maskz_cvtsepi32_epi8 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-2.c new file mode 100644 index 00000000000..99ecd943361 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-2.c @@ -0,0 +1,61 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include + +CALC (char *r, int *s) +{ + int i; + for (i = 0; i < 16; i++) + { + if (s[i] < CHAR_MIN) + r[i] = CHAR_MIN; + else if (s[i] > CHAR_MAX) + r[i] = CHAR_MAX; + else + r[i] = s[i]; + r[i] = (i < SIZE) ? r[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (128, i_b) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_d) src; + MASK_TYPE mask = MASK_VALUE; + char res_ref[16]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtsepi32_epi8) (src.x); + res2.x = INTRINSIC (_mask_cvtsepi32_epi8) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtsepi32_epi8) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (128, i_b) (res1, res_ref)) + abort (); + + MASK_MERGE (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res2, res_ref)) + abort (); + + MASK_ZERO (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-1.c new file mode 100644 index 00000000000..4984626ae06 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovsdw\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsdw\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsdw\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m256i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtsepi32_epi16 (s); + res = _mm512_mask_cvtsepi32_epi16 (res, m, s); + res = _mm512_maskz_cvtsepi32_epi16 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-2.c new file mode 100644 index 00000000000..0e5cb4a2ad0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-2.c @@ -0,0 +1,62 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#define SIZE_HALF (AVX512F_LEN_HALF / 16) +#include + +CALC (short *r, int *s) +{ + int i; + for (i = 0; i < SIZE_HALF; i++) + { + if (s[i] < SHRT_MIN) + r[i] = SHRT_MIN; + else if (s[i] > SHRT_MAX) + r[i] = SHRT_MAX; + else + r[i] = s[i]; + r[i] = (i < SIZE) ? r[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN_HALF, i_w) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_d) src; + MASK_TYPE mask = MASK_VALUE; + short res_ref[SIZE_HALF]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtsepi32_epi16) (src.x); + res2.x = INTRINSIC (_mask_cvtsepi32_epi16) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtsepi32_epi16) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res1, res_ref)) + abort (); + + MASK_MERGE (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res2, res_ref)) + abort (); + + MASK_ZERO (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-1.c new file mode 100644 index 00000000000..bcd6992b902 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovsqb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsqb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsqb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m128i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtsepi64_epi8 (s); + res = _mm512_mask_cvtsepi64_epi8 (res, m, s); + res = _mm512_maskz_cvtsepi64_epi8 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-2.c new file mode 100644 index 00000000000..3f4d3aa1179 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-2.c @@ -0,0 +1,61 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include + +CALC (char *r, long long *s) +{ + int i; + for (i = 0; i < 16; i++) + { + if (s[i] < CHAR_MIN) + r[i] = CHAR_MIN; + else if (s[i] > CHAR_MAX) + r[i] = CHAR_MAX; + else + r[i] = s[i]; + r[i] = (i < SIZE) ? r[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (128, i_b) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) src; + MASK_TYPE mask = MASK_VALUE; + char res_ref[16]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtsepi64_epi8) (src.x); + res2.x = INTRINSIC (_mask_cvtsepi64_epi8) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtsepi64_epi8) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (128, i_b) (res1, res_ref)) + abort (); + + MASK_MERGE (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res2, res_ref)) + abort (); + + MASK_ZERO (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-1.c new file mode 100644 index 00000000000..acec81bb32d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovsqd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsqd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsqd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m256i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtsepi64_epi32 (s); + res = _mm512_mask_cvtsepi64_epi32 (res, m, s); + res = _mm512_maskz_cvtsepi64_epi32 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-2.c new file mode 100644 index 00000000000..2dbc4a276a9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-2.c @@ -0,0 +1,62 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#define SIZE_HALF (AVX512F_LEN_HALF / 32) +#include + +CALC (int *r, long long *s) +{ + int i; + for (i = 0; i < SIZE_HALF; i++) + { + if (s[i] < INT_MIN) + r[i] = INT_MIN; + else if (s[i] > INT_MAX) + r[i] = INT_MAX; + else + r[i] = s[i]; + r[i] = (i < SIZE) ? r[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN_HALF, i_d) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) src; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE_HALF]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtsepi64_epi32) (src.x); + res2.x = INTRINSIC (_mask_cvtsepi64_epi32) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtsepi64_epi32) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-1.c new file mode 100644 index 00000000000..2952aca0764 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovsqw\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsqw\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsqw\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m128i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtsepi64_epi16 (s); + res = _mm512_mask_cvtsepi64_epi16 (res, m, s); + res = _mm512_maskz_cvtsepi64_epi16 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-2.c new file mode 100644 index 00000000000..163bc16a220 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-2.c @@ -0,0 +1,61 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include + +CALC (short *r, long long *s) +{ + int i; + for (i = 0; i < 8; i++) + { + if (s[i] < SHRT_MIN) + r[i] = SHRT_MIN; + else if (s[i] > SHRT_MAX) + r[i] = SHRT_MAX; + else + r[i] = s[i]; + r[i] = (i < SIZE) ? r[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (128, i_w) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) src; + MASK_TYPE mask = MASK_VALUE; + short res_ref[8]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i * sign; + sign = sign * -1; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtsepi64_epi16) (src.x); + res2.x = INTRINSIC (_mask_cvtsepi64_epi16) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtsepi64_epi16) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (128, i_w) (res1, res_ref)) + abort (); + + MASK_MERGE (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_w) (res2, res_ref)) + abort (); + + MASK_ZERO (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_w) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbd-1.c new file mode 100644 index 00000000000..18a34ae0120 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovsxbd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsxbd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsxbd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m128i s; +volatile __m512i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi8_epi32 (s); + res = _mm512_mask_cvtepi8_epi32 (res, m, s); + res = _mm512_maskz_cvtepi8_epi32 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbd-2.c new file mode 100644 index 00000000000..3bfb6ab75f9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (char *s, int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = (int) s[i]; + } +} + +static void +TEST (void) +{ + union128i_b s; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 8 * i * sign; + res2.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_cvtepi8_epi32) (s.x); + res2.x = INTRINSIC (_mask_cvtepi8_epi32) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepi8_epi32) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbq-1.c new file mode 100644 index 00000000000..e902b6e764e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbq-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovsxbq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsxbq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsxbq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m128i s; +volatile __m512i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi8_epi64 (s); + res = _mm512_mask_cvtepi8_epi64 (res, m, s); + res = _mm512_maskz_cvtepi8_epi64 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbq-2.c new file mode 100644 index 00000000000..540d21819a6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxbq-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (char *s, long long int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = (long long int) s[i]; + } +} + +static void +TEST (void) +{ + union128i_b s; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long int res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 8 * i * sign; + res2.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_cvtepi8_epi64) (s.x); + res2.x = INTRINSIC (_mask_cvtepi8_epi64) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepi8_epi64) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxdq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxdq-1.c new file mode 100644 index 00000000000..265c9fe3237 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxdq-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovsxdq\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsxdq\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsxdq\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m256i s; +volatile __m512i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi32_epi64 (s); + res = _mm512_mask_cvtepi32_epi64 (res, m, s); + res = _mm512_maskz_cvtepi32_epi64 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxdq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxdq-2.c new file mode 100644 index 00000000000..f1e131e00ae --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxdq-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (int *s, long long int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = (long long int) s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN_HALF, i_d) s; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long int res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 2000 * i * sign; + res2.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_cvtepi32_epi64) (s.x); + res2.x = INTRINSIC (_mask_cvtepi32_epi64) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepi32_epi64) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwd-1.c new file mode 100644 index 00000000000..cdcba564eae --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovsxwd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsxwd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsxwd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m256i s; +volatile __m512i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi16_epi32 (s); + res = _mm512_mask_cvtepi16_epi32 (res, m, s); + res = _mm512_maskz_cvtepi16_epi32 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwd-2.c new file mode 100644 index 00000000000..04b43a6e83a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (short *s, int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = (int) s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN_HALF, i_w) s; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 2000 * i * sign; + res2.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_cvtepi16_epi32) (s.x); + res2.x = INTRINSIC (_mask_cvtepi16_epi32) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepi16_epi32) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwq-1.c new file mode 100644 index 00000000000..28d6b17ba2f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwq-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovsxwq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsxwq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovsxwq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m128i s; +volatile __m512i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepi16_epi64 (s); + res = _mm512_mask_cvtepi16_epi64 (res, m, s); + res = _mm512_maskz_cvtepi16_epi64 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwq-2.c new file mode 100644 index 00000000000..9e6832d86de --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovsxwq-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (short *s, long long int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = (long long int) s[i]; + } +} + +static void +TEST (void) +{ + union128i_w s; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long int res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 2000 * i * sign; + res2.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_cvtepi16_epi64) (s.x); + res2.x = INTRINSIC (_mask_cvtepi16_epi64) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepi16_epi64) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdb-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdb-1.c new file mode 100644 index 00000000000..90019f3f39d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdb-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovusdb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovusdb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovusdb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m128i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtusepi32_epi8 (s); + res = _mm512_mask_cvtusepi32_epi8 (res, m, s); + res = _mm512_maskz_cvtusepi32_epi8 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdb-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdb-2.c new file mode 100644 index 00000000000..b86b14efe80 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdb-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include + +CALC (unsigned char *r, unsigned int *s) +{ + int i; + for (i = 0; i < 16; i++) + { + r[i] = (s[i] > UCHAR_MAX) ? UCHAR_MAX : s[i]; + r[i] = (i < SIZE) ? r[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (128, i_b) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_d) src; + MASK_TYPE mask = MASK_VALUE; + unsigned char res_ref[16]; + + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtusepi32_epi8) (src.x); + res2.x = INTRINSIC (_mask_cvtusepi32_epi8) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtusepi32_epi8) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (128, i_b) (res1, res_ref)) + abort (); + + MASK_MERGE (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res2, res_ref)) + abort (); + + MASK_ZERO (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdw-1.c new file mode 100644 index 00000000000..0ee86c982c6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdw-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovusdw\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovusdw\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovusdw\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m256i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtusepi32_epi16 (s); + res = _mm512_mask_cvtusepi32_epi16 (res, m, s); + res = _mm512_maskz_cvtusepi32_epi16 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdw-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdw-2.c new file mode 100644 index 00000000000..7840545d38f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusdw-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#define SIZE_HALF (AVX512F_LEN_HALF / 16) +#include + +CALC (unsigned short *r, unsigned int *s) +{ + int i; + for (i = 0; i < SIZE_HALF; i++) + { + r[i] = (s[i] > USHRT_MAX) ? USHRT_MAX : s[i]; + r[i] = (i < SIZE) ? r[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN_HALF, i_w) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_d) src; + MASK_TYPE mask = MASK_VALUE; + unsigned short res_ref[SIZE_HALF]; + + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtusepi32_epi16) (src.x); + res2.x = INTRINSIC (_mask_cvtusepi32_epi16) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtusepi32_epi16) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res1, res_ref)) + abort (); + + MASK_MERGE (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res2, res_ref)) + abort (); + + MASK_ZERO (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_w) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqb-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqb-1.c new file mode 100644 index 00000000000..4da4076bcb0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqb-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovusqb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovusqb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovusqb\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m128i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtusepi64_epi8 (s); + res = _mm512_mask_cvtusepi64_epi8 (res, m, s); + res = _mm512_maskz_cvtusepi64_epi8 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqb-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqb-2.c new file mode 100644 index 00000000000..4d02eaf35dc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqb-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include + +CALC (unsigned char *r, unsigned long long *s) +{ + int i; + for (i = 0; i < 16; i++) + { + r[i] = (s[i] > UCHAR_MAX) ? UCHAR_MAX : s[i]; + r[i] = (i < SIZE) ? r[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (128, i_b) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) src; + MASK_TYPE mask = MASK_VALUE; + unsigned char res_ref[16]; + + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtusepi64_epi8) (src.x); + res2.x = INTRINSIC (_mask_cvtusepi64_epi8) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtusepi64_epi8) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (128, i_b) (res1, res_ref)) + abort (); + + MASK_MERGE (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res2, res_ref)) + abort (); + + MASK_ZERO (i_b) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_b) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqd-1.c new file mode 100644 index 00000000000..69520d91d91 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovusqd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovusqd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovusqd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m256i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtusepi64_epi32 (s); + res = _mm512_mask_cvtusepi64_epi32 (res, m, s); + res = _mm512_maskz_cvtusepi64_epi32 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqd-2.c new file mode 100644 index 00000000000..7b79d3e50c5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#define SIZE_HALF (AVX512F_LEN_HALF / 32) +#include + +CALC (unsigned int *r, unsigned long long *s) +{ + int i; + for (i = 0; i < SIZE_HALF; i++) + { + r[i] = (s[i] > UINT_MAX) ? UINT_MAX : s[i]; + r[i] = (i < SIZE) ? r[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN_HALF, i_d) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) src; + MASK_TYPE mask = MASK_VALUE; + unsigned int res_ref[SIZE_HALF]; + + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtusepi64_epi32) (src.x); + res2.x = INTRINSIC (_mask_cvtusepi64_epi32) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtusepi64_epi32) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqw-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqw-1.c new file mode 100644 index 00000000000..e6ca2283c4b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqw-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovusqw\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovusqw\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovusqw\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i s; +volatile __m128i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtusepi64_epi16 (s); + res = _mm512_mask_cvtusepi64_epi16 (res, m, s); + res = _mm512_maskz_cvtusepi64_epi16 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqw-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqw-2.c new file mode 100644 index 00000000000..34fcd474f8e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovusqw-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include + +CALC (unsigned short *r, unsigned long long *s) +{ + int i; + for (i = 0; i < 8; i++) + { + r[i] = (s[i] > USHRT_MAX) ? USHRT_MAX : s[i]; + r[i] = (i < SIZE) ? r[i] : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (128, i_w) res1, res2, res3; + UNION_TYPE (AVX512F_LEN, i_q) src; + MASK_TYPE mask = MASK_VALUE; + unsigned short res_ref[8]; + + for (i = 0; i < SIZE; i++) + { + src.a[i] = 1 + 34 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtusepi64_epi16) (src.x); + res2.x = INTRINSIC (_mask_cvtusepi64_epi16) (res2.x, mask, src.x); + res3.x = INTRINSIC (_maskz_cvtusepi64_epi16) (mask, src.x); + + CALC (res_ref, src.a); + + if (UNION_CHECK (128, i_w) (res1, res_ref)) + abort (); + + MASK_MERGE (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_w) (res2, res_ref)) + abort (); + + MASK_ZERO (i_w) (res_ref, mask, SIZE); + if (UNION_CHECK (128, i_w) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbd-1.c new file mode 100644 index 00000000000..6b4976dca71 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovzxbd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovzxbd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovzxbd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m128i s; +volatile __m512i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepu8_epi32 (s); + res = _mm512_mask_cvtepu8_epi32 (res, m, s); + res = _mm512_maskz_cvtepu8_epi32 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbd-2.c new file mode 100644 index 00000000000..eb2b9509f5e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbd-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (unsigned char *s, int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = s[i]; + } +} + +static void +TEST (void) +{ + union128i_b s; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 16 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtepu8_epi32) (s.x); + res2.x = INTRINSIC (_mask_cvtepu8_epi32) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepu8_epi32) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbq-1.c new file mode 100644 index 00000000000..758e06654f2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbq-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovzxbq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovzxbq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovzxbq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m128i s; +volatile __m512i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepu8_epi64 (s); + res = _mm512_mask_cvtepu8_epi64 (res, m, s); + res = _mm512_maskz_cvtepu8_epi64 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbq-2.c new file mode 100644 index 00000000000..e1629951ad4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxbq-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (unsigned char *s, long long int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = s[i]; + } +} + +static void +TEST (void) +{ + union128i_b s; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long int res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 16 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtepu8_epi64) (s.x); + res2.x = INTRINSIC (_mask_cvtepu8_epi64) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepu8_epi64) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxdq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxdq-1.c new file mode 100644 index 00000000000..1a8c37a13c8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxdq-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovzxdq\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovzxdq\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovzxdq\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m256i s; +volatile __m512i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepu32_epi64 (s); + res = _mm512_mask_cvtepu32_epi64 (res, m, s); + res = _mm512_maskz_cvtepu32_epi64 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxdq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxdq-2.c new file mode 100644 index 00000000000..69c352279d0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxdq-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (unsigned *s, long long int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN_HALF, i_d) s; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long int res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 2000 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtepu32_epi64) (s.x); + res2.x = INTRINSIC (_mask_cvtepu32_epi64) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepu32_epi64) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwd-1.c new file mode 100644 index 00000000000..6f955585428 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovzxwd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovzxwd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovzxwd\[ \\t\]+\[^\n\]*%ymm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m256i s; +volatile __m512i res; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepu16_epi32 (s); + res = _mm512_mask_cvtepu16_epi32 (res, m, s); + res = _mm512_maskz_cvtepu16_epi32 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwd-2.c new file mode 100644 index 00000000000..ea533143374 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwd-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (unsigned short *s, int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN_HALF, i_w) s; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 2000 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtepu16_epi32) (s.x); + res2.x = INTRINSIC (_mask_cvtepu16_epi32) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepu16_epi32) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwq-1.c new file mode 100644 index 00000000000..13f893e6300 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwq-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmovzxwq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovzxwq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmovzxwq\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m128i s; +volatile __m512i res; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + res = _mm512_cvtepu16_epi64 (s); + res = _mm512_mask_cvtepu16_epi64 (res, m, s); + res = _mm512_maskz_cvtepu16_epi64 (m, s); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwq-2.c new file mode 100644 index 00000000000..9e0fc7668cc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmovzxwq-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (unsigned short *s, long long int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = (long long int) s[i]; + } +} + +static void +TEST (void) +{ + union128i_w s; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long int res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 2000 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_cvtepu16_epi64) (s.x); + res2.x = INTRINSIC (_mask_cvtepu16_epi64) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_cvtepu16_epi64) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmuldq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmuldq-1.c new file mode 100644 index 00000000000..091de8c3933 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmuldq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmuldq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpmuldq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmuldq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}{z}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mul_epi32 (x, x); + x = _mm512_mask_mul_epi32 (x, m, x, x); + x = _mm512_maskz_mul_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmuldq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmuldq-2.c new file mode 100644 index 00000000000..83058dcf897 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmuldq-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SRC_SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#define DST_SIZE (AVX512F_LEN / 64) + +static void +CALC (int *s1, int *s2, long long int *r) +{ + int i; + + for (i = 0; i < DST_SIZE; i++) + r[i] = s1[i * 2] * s2[i * 2]; +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, s2; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[DST_SIZE]; + int i, sign = 1; + + for (i = 0; i < SRC_SIZE; i++) + { + s1.a[i] = i * 20; + s2.a[i] = i + 20; + } + + for (i = 0; i < DST_SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + CALC (s1.a, s2.a, res_ref); + + res1.x = INTRINSIC (_mul_epi32) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_mul_epi32) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_mul_epi32) (mask, s1.x, s2.x); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, DST_SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, DST_SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmulld-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmulld-1.c new file mode 100644 index 00000000000..d1d77d2e4a9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmulld-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmulld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpmulld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmulld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}{z}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 mx; + +void extern +avx512f_test (void) +{ + x = _mm512_mullo_epi32 (x, x); + x = _mm512_mask_mullo_epi32 (x, mx, x, x); + x = _mm512_maskz_mullo_epi32 (mx, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmulld-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmulld-2.c new file mode 100644 index 00000000000..a08120c436d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmulld-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + + +static void +CALC (int *src1, int *src2, int *dst) +{ + int i; + + for (i = 0; i < SIZE; i++) + dst[i] = src1[i] * src2[i]; +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) src1, src2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int dst_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i + 50; + src2.a[i] = i + 100; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_mullo_epi32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_mullo_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_mullo_epi32) (mask, src1.x, src2.x); + + CALC (src1.a, src2.a, dst_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, dst_ref)) + abort (); + + MASK_MERGE (i_d) (dst_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, dst_ref)) + abort (); + + MASK_ZERO (i_d) (dst_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, dst_ref)) + abort (); + +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmuludq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmuludq-1.c new file mode 100644 index 00000000000..b6fd4daf753 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmuludq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpmuludq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpmuludq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpmuludq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}{z}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_mul_epu32 (x, x); + x = _mm512_mask_mul_epu32 (x, m, x, x); + x = _mm512_maskz_mul_epu32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpmuludq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpmuludq-2.c new file mode 100644 index 00000000000..fc0416b6cf6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpmuludq-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SRC_SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#define DST_SIZE (AVX512F_LEN / 64) + +static void +CALC (unsigned int *s1, unsigned int *s2, unsigned long long *r) +{ + int i; + + for (i = 0; i < DST_SIZE; i++) + r[i] = s1[i * 2] * s2[i * 2]; +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, s2; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + unsigned long long res_ref[DST_SIZE]; + int i, sign = 1; + + for (i = 0; i < SRC_SIZE; i++) + { + s1.a[i] = i * 20; + s2.a[i] = i + 20; + } + for (i = 0; i < DST_SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + CALC (s1.a, s2.a, res_ref); + + res1.x = INTRINSIC (_mul_epu32) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_mul_epu32) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_mul_epu32) (mask, s1.x, s2.x); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, DST_SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, DST_SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpord-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpord-1.c new file mode 100644 index 00000000000..78650751cb8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpord-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpord\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vpord\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpord\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_or_si512 (x, x); + x = _mm512_or_epi32 (x, x); + x = _mm512_mask_or_epi32 (x, m, x, x); + x = _mm512_maskz_or_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpord-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpord-2.c new file mode 100644 index 00000000000..9493aa01fbc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpord-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *s1, int *s2, int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + r[i] = s1[i] | s2[i]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, s2, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * sign; + s2.a[i] = (i + 20) * sign; + sign = -sign; + res3.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_or_si512) (s1.x, s2.x); + res2.x = INTRINSIC (_or_epi32) (s1.x, s2.x); + res3.x = INTRINSIC (_mask_or_epi32) (res3.x, mask, s1.x, s2.x); + res4.x = INTRINSIC (_maskz_or_epi32) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res4, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vporq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vporq-1.c new file mode 100644 index 00000000000..c6f8bb576ef --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vporq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vporq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vporq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vporq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_or_epi64 (x, x); + x = _mm512_mask_or_epi64 (x, m, x, x); + x = _mm512_maskz_or_epi64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vporq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vporq-2.c new file mode 100644 index 00000000000..843ecbd37f3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vporq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (long long *s1, long long *s2, long long *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + r[i] = s1[i] | s2[i]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s1, s2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * sign; + s2.a[i] = (i + 20) * sign; + sign = -sign; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_or_epi64) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_or_epi64) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_or_epi64) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprold-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vprold-1.c new file mode 100644 index 00000000000..4a98e199251 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprold-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vprold\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vprold\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vprold\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_rol_epi32 (x, 12); + x = _mm512_mask_rol_epi32 (x, m, x, 12); + x = _mm512_maskz_rol_epi32 (m, x, 12); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprold-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vprold-2.c new file mode 100644 index 00000000000..e56115d19a7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprold-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +#define N 0x5 + +static void +CALC (int *s1, int count, int *r) +{ + unsigned int i; + + for (i = 0; i < SIZE; i++) + r[i] = (s1[i] << count) | (s1[i] >> sizeof (s1[i]) * 8 - count); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + unsigned int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 137 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_rol_epi32) (s1.x, N); + res2.x = INTRINSIC (_mask_rol_epi32) (res2.x, mask, s1.x, N); + res3.x = INTRINSIC (_maskz_rol_epi32) (mask, s1.x, N); + + CALC (s1.a, N, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprolq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vprolq-1.c new file mode 100644 index 00000000000..91b2462ac8a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprolq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vprolq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vprolq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vprolq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_rol_epi64 (x, 12); + x = _mm512_mask_rol_epi64 (x, m, x, 12); + x = _mm512_maskz_rol_epi64 (m, x, 12); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprolq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vprolq-2.c new file mode 100644 index 00000000000..116a6aa6bd7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprolq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +#define N 0x5 + +static void +CALC (long long *s1, int count, long long *r) +{ + unsigned int i; + + for (i = 0; i < SIZE; i++) + r[i] = (s1[i] << count) | (s1[i] >> sizeof (s1[i]) * 8 - count); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s1, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + unsigned int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 137 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_rol_epi64) (s1.x, N); + res2.x = INTRINSIC (_mask_rol_epi64) (res2.x, mask, s1.x, N); + res3.x = INTRINSIC (_maskz_rol_epi64) (mask, s1.x, N); + + CALC (s1.a, N, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprolvd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vprolvd-1.c new file mode 100644 index 00000000000..10331a61dc5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprolvd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vprolvd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vprolvd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vprolvd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_rolv_epi32 (x, x); + x = _mm512_mask_rolv_epi32 (x, m, x, x); + x = _mm512_maskz_rolv_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprolvd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vprolvd-2.c new file mode 100644 index 00000000000..e537ae8f95d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprolvd-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *s1, int *s2, int *r) +{ + unsigned int i; + + for (i = 0; i < SIZE; i++) + r[i] = (s1[i] << s2[i]) | (s1[i] >> sizeof (s1[i]) * 8 - s2[i]); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, s2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + unsigned int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 137 * i; + s2.a[i] = (i + 7); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_rolv_epi32) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_rolv_epi32) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_rolv_epi32) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprolvq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vprolvq-1.c new file mode 100644 index 00000000000..a182a620324 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprolvq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vprolvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vprolvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vprolvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_rolv_epi64 (x, x); + x = _mm512_mask_rolv_epi64 (x, m, x, x); + x = _mm512_maskz_rolv_epi64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprolvq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vprolvq-2.c new file mode 100644 index 00000000000..a1c748d50b6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprolvq-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (long long *s1, long long *s2, long long *r) +{ + unsigned int i; + + for (i = 0; i < SIZE; i++) + r[i] = (s1[i] << s2[i]) | (s1[i] >> sizeof (s1[i]) * 8 - s2[i]); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s1, s2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + unsigned int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 137 * i; + s2.a[i] = (i + 7); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_rolv_epi64) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_rolv_epi64) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_rolv_epi64) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprord-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vprord-1.c new file mode 100644 index 00000000000..c1cf8a5f0d2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprord-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vprord\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vprord\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vprord\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_ror_epi32 (x, 12); + x = _mm512_mask_ror_epi32 (x, m, x, 12); + x = _mm512_maskz_ror_epi32 (m, x, 12); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprord-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vprord-2.c new file mode 100644 index 00000000000..5223fe0a7d1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprord-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +#define N 0x5 + +static void +CALC (int *s1, int count, int *r) +{ + unsigned int i; + + for (i = 0; i < SIZE; i++) + r[i] = (s1[i] >> count) | (s1[i] << sizeof (s1[i]) * 8 - count); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + unsigned int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 137 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_ror_epi32) (s1.x, N); + res2.x = INTRINSIC (_mask_ror_epi32) (res2.x, mask, s1.x, N); + res3.x = INTRINSIC (_maskz_ror_epi32) (mask, s1.x, N); + + CALC (s1.a, N, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprorq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vprorq-1.c new file mode 100644 index 00000000000..66b9e0391c1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprorq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vprorq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vprorq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vprorq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_ror_epi64 (x, 12); + x = _mm512_mask_ror_epi64 (x, m, x, 12); + x = _mm512_maskz_ror_epi64 (m, x, 12); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprorq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vprorq-2.c new file mode 100644 index 00000000000..704b0a50a7e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprorq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +#define N 0x5 + +static void +CALC (long long *s1, int count, long long *r) +{ + unsigned int i; + + for (i = 0; i < SIZE; i++) + r[i] = (s1[i] >> count) | (s1[i] << sizeof (s1[i]) * 8 - count); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s1, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + unsigned int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 137 * i; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_ror_epi64) (s1.x, N); + res2.x = INTRINSIC (_mask_ror_epi64) (res2.x, mask, s1.x, N); + res3.x = INTRINSIC (_maskz_ror_epi64) (mask, s1.x, N); + + CALC (s1.a, N, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprorvd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vprorvd-1.c new file mode 100644 index 00000000000..59f0c95e278 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprorvd-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "vprorvd\[ \\t\]+\[^\n\]*%zmm\[0-9\]" } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_rorv_epi32 (x, x); + x = _mm512_mask_rorv_epi32 (x, m, x, x); + x = _mm512_maskz_rorv_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprorvd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vprorvd-2.c new file mode 100644 index 00000000000..eaf8df92e4b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprorvd-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *s1, int *s2, int *r) +{ + unsigned int i; + + for (i = 0; i < SIZE; i++) + r[i] = (s1[i] >> s2[i]) | (s1[i] << sizeof (s1[i]) * 8 - s2[i]); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, s2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + unsigned int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 137 * i; + s2.a[i] = (i + 7); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_rorv_epi32) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_rorv_epi32) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_rorv_epi32) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprorvq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vprorvq-1.c new file mode 100644 index 00000000000..31b59b18887 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprorvq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vprorvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vprorvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vprorvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_rorv_epi64 (x, x); + x = _mm512_mask_rorv_epi64 (x, m, x, x); + x = _mm512_maskz_rorv_epi64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vprorvq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vprorvq-2.c new file mode 100644 index 00000000000..035ce96772c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vprorvq-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (long long *s1, long long *s2, long long *r) +{ + unsigned int i; + + for (i = 0; i < SIZE; i++) + r[i] = (s1[i] >> s2[i]) | (s1[i] << sizeof (s1[i]) * 8 - s2[i]); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s1, s2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + unsigned int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 137 * i; + s2.a[i] = (i + 7); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_rorv_epi64) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_rorv_epi64) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_rorv_epi64) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpshufd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpshufd-1.c new file mode 100644 index 00000000000..9b7afc54e85 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpshufd-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpshufd\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpshufd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vpshufd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512i x; + +void extern +avx512f_test (void) +{ + x = _mm512_shuffle_epi32 (x, _MM_PERM_AADB); + x = _mm512_mask_shuffle_epi32 (x, 2, x, _MM_PERM_AADB); + x = _mm512_maskz_shuffle_epi32 (2, x, _MM_PERM_AADB); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpshufd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpshufd-2.c new file mode 100644 index 00000000000..a6379c372e8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpshufd-2.c @@ -0,0 +1,59 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *s1, unsigned char imm, int *r) +{ + int i, j, offset; + + for (j = 0; j < SIZE / 4; j++) + { + offset = j * 4; + for (i = 0; i < 4; i++) + r[i + offset] = + s1[((imm & (0x3 << (2 * i))) >> (2 * i)) + offset]; + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, res1, res2, res3; + int res_ref[SIZE]; + int i, j, sign = 1; + MASK_TYPE mask = MASK_VALUE; + + for (j = 0; j < SIZE; j++) + { + s1.a[j] = j * i * sign; + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_shuffle_epi32) (s1.x, 0xec); + res2.x = INTRINSIC (_mask_shuffle_epi32) (res2.x, mask, s1.x, 0xec); + res3.x = INTRINSIC (_maskz_shuffle_epi32) (mask, s1.x, 0xec); + + CALC (s1.a, 0xec, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpslld-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpslld-1.c new file mode 100644 index 00000000000..a2c3711df58 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpslld-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpslld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpslld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpslld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m128i y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sll_epi32 (x, y); + x = _mm512_mask_sll_epi32 (x, m, x, y); + x = _mm512_maskz_sll_epi32 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpslld-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpslld-2.c new file mode 100644 index 00000000000..541b106c4a6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpslld-2.c @@ -0,0 +1,62 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s1, int* s2) +{ + int i; + int count = s2[0]; + for (i = 0; i < SIZE; i++) + { + r[i] = count < 32 ? (s1[i] << count) : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1; + UNION_TYPE (128, i_d) src2; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + long long imm; + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + sign * 7 * i % 291; + sign = sign * -1; + } + + for (imm = 1; imm <= 33; imm++) + { + src2.a[0] = imm; + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_sll_epi32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_sll_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_sll_epi32) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpslldi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpslldi-1.c new file mode 100644 index 00000000000..c81ac920027 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpslldi-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpslld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpslld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpslld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +#define y 7 +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_slli_epi32 (x, y); + x = _mm512_mask_slli_epi32 (x, m, x, y); + x = _mm512_maskz_slli_epi32 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpslldi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpslldi-2.c new file mode 100644 index 00000000000..c3bfdd28a5d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpslldi-2.c @@ -0,0 +1,76 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s1, int count) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = count < 32 ? (s1[i] << count) : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + sign * 7 * i % 291; + sign = sign * -1; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_slli_epi32) (src1.x, 2); + res2.x = INTRINSIC (_mask_slli_epi32) (res2.x, mask, src1.x, 2); + res3.x = INTRINSIC (_maskz_slli_epi32) (mask, src1.x, 2); + + CALC (res_ref, src1.a, 2); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); + + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_slli_epi32) (src1.x, 33); + res2.x = INTRINSIC (_mask_slli_epi32) (res2.x, mask, src1.x, 33); + res3.x = INTRINSIC (_maskz_slli_epi32) (mask, src1.x, 33); + + CALC (res_ref, src1.a, 33); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsllq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsllq-1.c new file mode 100644 index 00000000000..491234e882b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsllq-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsllq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsllq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsllq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m128i y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sll_epi64 (x, y); + x = _mm512_mask_sll_epi64 (x, m, x, y); + x = _mm512_maskz_sll_epi64 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsllq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsllq-2.c new file mode 100644 index 00000000000..5addaa51798 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsllq-2.c @@ -0,0 +1,62 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s1, long long* s2) +{ + int i; + long long count = s2[0]; + for (i = 0; i < SIZE; i++) + { + r[i] = count < 64 ? (s1[i] << count) : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1; + UNION_TYPE (128, i_q) src2; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + long long imm; + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + sign * 7 * i % 291; + sign = sign * -1; + } + + for (imm = 1; imm <= 65; imm++) + { + src2.a[0] = imm; + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_sll_epi64) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_sll_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_sll_epi64) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsllqi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsllqi-1.c new file mode 100644 index 00000000000..7e077e41b83 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsllqi-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsllq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsllq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsllq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +#define y 7 +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_slli_epi64 (x, y); + x = _mm512_mask_slli_epi64 (x, m, x, y); + x = _mm512_maskz_slli_epi64 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsllqi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsllqi-2.c new file mode 100644 index 00000000000..e15b324d11a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsllqi-2.c @@ -0,0 +1,76 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s1, long long count) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = count < 64 ? (s1[i] << count) : 0; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + sign * 7 * i % 291; + sign = sign * -1; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_slli_epi64) (src1.x, 3); + res2.x = INTRINSIC (_mask_slli_epi64) (res2.x, mask, src1.x, 3); + res3.x = INTRINSIC (_maskz_slli_epi64) (mask, src1.x, 3); + + CALC (res_ref, src1.a, 3); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); + + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_slli_epi64) (src1.x, 65); + res2.x = INTRINSIC (_mask_slli_epi64) (res2.x, mask, src1.x, 65); + res3.x = INTRINSIC (_maskz_slli_epi64) (mask, src1.x, 65); + + CALC (res_ref, src1.a, 65); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsllvd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvd-1.c new file mode 100644 index 00000000000..0a966af3804 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsllvd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsllvd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsllvd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m512i y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sllv_epi32 (x, y); + x = _mm512_mask_sllv_epi32 (x, m, x, y); + x = _mm512_maskz_sllv_epi32 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsllvd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvd-2.c new file mode 100644 index 00000000000..82ff3a65253 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvd-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (unsigned int *r, unsigned int *s1, unsigned int *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s2[i] < 32 ? (s1[i] << s2[i]) : 0; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + unsigned int res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + 7 * i % 291; + src2.a[i] = 1 + 17 * i % 71; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_sllv_epi32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_sllv_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_sllv_epi32) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq-1.c new file mode 100644 index 00000000000..8faeef02afa --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsllvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsllvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsllvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m512i y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sllv_epi64 (x, y); + x = _mm512_mask_sllv_epi64 (x, m, x, y); + x = _mm512_maskz_sllv_epi64 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq-2.c new file mode 100644 index 00000000000..e2b48d7fdde --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (unsigned long long *r, unsigned long long *s1, + unsigned long long *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s2[i] < 64 ? (s1[i] << s2[i]) : 0; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + unsigned long long res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + 7 * i % 291; + src2.a[i] = 1 + 17 * i % 71; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_sllv_epi64) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_sllv_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_sllv_epi64) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq512-1.c new file mode 100644 index 00000000000..e93b8c52974 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq512-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "vpsllvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]" } } */ + +#include + +volatile __m512i x; + +void extern +avx512f_test (void) +{ + x = _mm512_sllv_epi64 (x, x); +} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq512-2.c new file mode 100644 index 00000000000..0c970dbb0fd --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsllvq512-2.c @@ -0,0 +1,47 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include +#include "avx512f-check.h" + +static void +compute_psllvq512 (long long int *s1, long long int *s2, long long int *r) +{ + int i; + long long int count; + + for (i = 0; i < 8; ++i) + { + count = s2[i]; + r[i] = s1[i] << count; + } +} + +void static +avx512f_test (void) +{ + union512i_q s1, s2, res; + long long int res_ref[8]; + int i, j, sign = 1; + int fail = 0; + + for (i = 0; i < 10; i++) + { + for (j = 0; j < 8; j++) + { + s1.a[j] = j * i * sign; + s2.a[j] = (j + i) >> 2; + sign = -sign; + } + + res.x = _mm512_sllv_epi64 (s1.x, s2.x); + + compute_psllvq512 (s1.a, s2.a, res_ref); + + fail += check_union512i_q (res, res_ref); + } + + if (fail != 0) + abort (); +} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrad-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrad-1.c new file mode 100644 index 00000000000..3d6c5fc13a9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrad-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsrad\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsrad\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsrad\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m128i y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sra_epi32 (x, y); + x = _mm512_mask_sra_epi32 (x, m, x, y); + x = _mm512_maskz_sra_epi32 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrad-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrad-2.c new file mode 100644 index 00000000000..c9393fc2a7c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrad-2.c @@ -0,0 +1,64 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s1, int *s2) +{ + int i; + int count = s2[0]; + for (i = 0; i < SIZE; i++) + { + r[i] = + count < 32 ? (s1[i] >> count) : (s1[i] > 0 ? 0 : 0xFFFFFFFF); + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1; + UNION_TYPE (128, i_d) src2; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + long long imm; + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + sign * 7 * i % 291; + sign = sign * -1; + } + + for (imm = 1; imm <= 33; imm++) + { + src2.a[0] = imm; + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_sra_epi32) (src1.x, src2.x); + res2.x = + INTRINSIC (_mask_sra_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_sra_epi32) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsradi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsradi-1.c new file mode 100644 index 00000000000..c7bf9385dc9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsradi-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsrad\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsrad\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsrad\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +#define y 7 +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_srai_epi32 (x, y); + x = _mm512_mask_srai_epi32 (x, m, x, y); + x = _mm512_maskz_srai_epi32 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsradi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsradi-2.c new file mode 100644 index 00000000000..3ba3ff1315b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsradi-2.c @@ -0,0 +1,78 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s1, int count) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = + count < 32 ? (s1[i] >> count) : (s1[i] > 0 ? 0 : 0xFFFFFFFF); + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + sign * 7 * i % 291; + sign = sign * -1; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srai_epi32) (src1.x, 3); + res2.x = + INTRINSIC (_mask_srai_epi32) (res2.x, mask, src1.x, 3); + res3.x = INTRINSIC (_maskz_srai_epi32) (mask, src1.x, 3); + + CALC (res_ref, src1.a, 3); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srai_epi32) (src1.x, 33); + res2.x = + INTRINSIC (_mask_srai_epi32) (res2.x, mask, src1.x, 33); + res3.x = INTRINSIC (_maskz_srai_epi32) (mask, src1.x, 33); + + CALC (res_ref, src1.a, 33); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsraq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsraq-1.c new file mode 100644 index 00000000000..1c7a43db439 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsraq-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsraq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsraq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsraq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m128i y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sra_epi64 (x, y); + x = _mm512_mask_sra_epi64 (x, m, x, y); + x = _mm512_maskz_sra_epi64 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsraq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsraq-2.c new file mode 100644 index 00000000000..c5ae9c67d19 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsraq-2.c @@ -0,0 +1,65 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s1, long long *s2) +{ + int i; + long long count = s2[0]; + for (i = 0; i < SIZE; i++) + { + r[i] = + count < 64 ? (s1[i] >> count) : (s1[i] > + 0 ? 0 : 0xFFFFFFFFFFFFFFFFLL); + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1; + UNION_TYPE (128, i_q) src2; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + long long imm; + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + sign * 7 * i % 291; + sign = sign * -1; + } + + for (imm = 1; imm <= 65; imm++) + { + src2.a[0] = imm; + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_sra_epi64) (src1.x, src2.x); + res2.x = + INTRINSIC (_mask_sra_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_sra_epi64) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsraqi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsraqi-1.c new file mode 100644 index 00000000000..6400ef4c7d0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsraqi-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsraq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsraq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsraq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +#define y 7 +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_srai_epi64 (x, y); + x = _mm512_mask_srai_epi64 (x, m, x, y); + x = _mm512_maskz_srai_epi64 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsraqi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsraqi-2.c new file mode 100644 index 00000000000..47c273297da --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsraqi-2.c @@ -0,0 +1,80 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s1, long long count) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = + count < 64 ? (s1[i] >> count) : (s1[i] > + 0 ? 0 : 0xFFFFFFFFFFFFFFFFLL); + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + sign * 7 * i % 291; + sign = sign * -1; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srai_epi64) (src1.x, 3); + res2.x = + INTRINSIC (_mask_srai_epi64) (res2.x, mask, src1.x, 3); + res3.x = INTRINSIC (_maskz_srai_epi64) (mask, src1.x, 3); + + CALC (res_ref, src1.a, 3); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); + + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srai_epi64) (src1.x, 65); + res2.x = + INTRINSIC (_mask_srai_epi64) (res2.x, mask, src1.x, 65); + res3.x = INTRINSIC (_maskz_srai_epi64) (mask, src1.x, 65); + + CALC (res_ref, src1.a, 65); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsravd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsravd-1.c new file mode 100644 index 00000000000..80414c10928 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsravd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsravd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsravd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsravd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x, y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_srav_epi32 (x, y); + x = _mm512_mask_srav_epi32 (x, m, x, y); + x = _mm512_maskz_srav_epi32 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsravd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsravd-2.c new file mode 100644 index 00000000000..0651c24cc00 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsravd-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s1, int *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = + s2[i] < 32 ? (s1[i] >> s2[i]) : (s1[i] > 0 ? 0 : 0xFFFFFFFF); + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + sign * 7 * i % 291; + src2.a[i] = 1 + 17 * i % 71; + sign = sign * -1; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srav_epi32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_srav_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_srav_epi32) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsravq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsravq-1.c new file mode 100644 index 00000000000..db6b8dd37af --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsravq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsravq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsravq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsravq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x, y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_srav_epi64 (x, y); + x = _mm512_mask_srav_epi64 (x, m, x, y); + x = _mm512_maskz_srav_epi64 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsravq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsravq-2.c new file mode 100644 index 00000000000..3b7063f57a2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsravq-2.c @@ -0,0 +1,58 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s1, long long *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = + s2[i] < 64 ? (s1[i] >> s2[i]) : (s1[i] > + 0 ? 0 : 0xFFFFFFFFFFFFFFFFLL); + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + sign * 7 * i % 291; + src2.a[i] = 1 + 17 * i % 71; + sign = sign * -1; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srav_epi64) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_srav_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_srav_epi64) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsravq512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsravq512-1.c new file mode 100644 index 00000000000..318769b1647 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsravq512-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "vpsravq\[ \\t\]+\[^\n\]*%zmm\[0-9\]" } } */ + +#include + +volatile __m512i x; + +void extern +avx512f_test (void) +{ + x = _mm512_srav_epi64 (x, x); +} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsravq512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsravq512-2.c new file mode 100644 index 00000000000..c2511e9f5ba --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsravq512-2.c @@ -0,0 +1,47 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include +#include "avx512f-check.h" + +static void +compute_psravq512 (long long int *s1, long long int *s2, long long int *r) +{ + int i; + long long int count; + + for (i = 0; i < 8; ++i) + { + count = s2[i]; + r[i] = s1[i] >> count; + } +} + +void static +avx512f_test (void) +{ + union512i_q s1, s2, res; + long long int res_ref[8]; + int i, j, sign = 1; + int fail = 0; + + for (i = 0; i < 10; i++) + { + for (j = 0; j < 8; j++) + { + s1.a[j] = j * i * sign; + s2.a[j] = (j + i) >> 2; + sign = -sign; + } + + res.x = _mm512_srav_epi64 (s1.x, s2.x); + + compute_psravq512 (s1.a, s2.a, res_ref); + + fail += check_union512i_q (res, res_ref); + } + + if (fail != 0) + abort (); +} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrld-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrld-1.c new file mode 100644 index 00000000000..7c9ea161080 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrld-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsrld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsrld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsrld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m128i y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_srl_epi32 (x, y); + x = _mm512_mask_srl_epi32 (x, m, x, y); + x = _mm512_maskz_srl_epi32 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrld-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrld-2.c new file mode 100644 index 00000000000..d4e7232012f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrld-2.c @@ -0,0 +1,60 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (unsigned int *r, unsigned int *s1, unsigned int* s2) +{ + int i; + unsigned int count = s2[0]; + for (i = 0; i < SIZE; i++) + { + r[i] = count < 32 ? (s1[i] >> count) : 0; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1; + UNION_TYPE (128, i_d) src2; + MASK_TYPE mask = MASK_VALUE; + unsigned int res_ref[SIZE]; + + unsigned long long imm; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + 7 * i % 291; + } + + for (imm = 1; imm <= 33; imm++) + { + src2.a[0] = imm; + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srl_epi32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_srl_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_srl_epi32) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrldi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrldi-1.c new file mode 100644 index 00000000000..c21566d1ef1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrldi-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsrld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsrld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsrld\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +#define y 7 +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_srli_epi32 (x, y); + x = _mm512_mask_srli_epi32 (x, m, x, y); + x = _mm512_maskz_srli_epi32 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrldi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrldi-2.c new file mode 100644 index 00000000000..e178445fb73 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrldi-2.c @@ -0,0 +1,76 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (unsigned int *r, unsigned int *s1, unsigned int count) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = count < 32 ? (s1[i] >> count) : 0; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1; + MASK_TYPE mask = MASK_VALUE; + unsigned int res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + 7 * i % 291; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srli_epi32) (src1.x, 3); + res2.x = + INTRINSIC (_mask_srli_epi32) (res2.x, mask, src1.x, 3); + res3.x = INTRINSIC (_maskz_srli_epi32) (mask, src1.x, 3); + + CALC (res_ref, src1.a, 3); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); + + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srli_epi32) (src1.x, 33); + res2.x = + INTRINSIC (_mask_srli_epi32) (res2.x, mask, src1.x, 33); + res3.x = INTRINSIC (_maskz_srli_epi32) (mask, src1.x, 33); + + CALC (res_ref, src1.a, 33); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrlq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlq-1.c new file mode 100644 index 00000000000..d3af6091f17 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlq-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsrlq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsrlq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsrlq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m128i y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_srl_epi64 (x, y); + x = _mm512_mask_srl_epi64 (x, m, x, y); + x = _mm512_maskz_srl_epi64 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrlq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlq-2.c new file mode 100644 index 00000000000..40305287350 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlq-2.c @@ -0,0 +1,60 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (unsigned long long *r, unsigned long long *s1, unsigned long long* s2) +{ + int i; + unsigned long long count = s2[0]; + for (i = 0; i < SIZE; i++) + { + r[i] = count < 64 ? (s1[i] >> count) : 0; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1; + UNION_TYPE (128, i_q) src2; + MASK_TYPE mask = MASK_VALUE; + unsigned long long res_ref[SIZE]; + + unsigned long long imm; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + 7 * i % 291; + } + + for (imm = 1; imm <= 65; imm++) + { + src2.a[0] = imm; + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srl_epi64) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_srl_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_srl_epi64) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrlqi-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlqi-1.c new file mode 100644 index 00000000000..b1f6d2766da --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlqi-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsrlq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsrlq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsrlq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +#define y 7 +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_srli_epi64 (x, y); + x = _mm512_mask_srli_epi64 (x, m, x, y); + x = _mm512_maskz_srli_epi64 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrlqi-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlqi-2.c new file mode 100644 index 00000000000..3fedac4c88f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlqi-2.c @@ -0,0 +1,77 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (unsigned long long *r, unsigned long long *s1, + unsigned long long count) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = count < 64 ? (s1[i] >> count) : 0; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1; + MASK_TYPE mask = MASK_VALUE; + unsigned long long res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + 7 * i % 291; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srli_epi64) (src1.x, 3); + res2.x = + INTRINSIC (_mask_srli_epi64) (res2.x, mask, src1.x, 3); + res3.x = INTRINSIC (_maskz_srli_epi64) (mask, src1.x, 3); + + CALC (res_ref, src1.a, 3); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); + + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srli_epi64) (src1.x, 65); + res2.x = + INTRINSIC (_mask_srli_epi64) (res2.x, mask, src1.x, 65); + res3.x = INTRINSIC (_maskz_srli_epi64) (mask, src1.x, 65); + + CALC (res_ref, src1.a, 65); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvd-1.c new file mode 100644 index 00000000000..c8fe74d734e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvd-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsrlvd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsrlvd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsrlvd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m512i y; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_srlv_epi32 (x, y); + x = _mm512_mask_srlv_epi32 (x, m, x, y); + x = _mm512_maskz_srlv_epi32 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvd-2.c new file mode 100644 index 00000000000..514d36a37dc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvd-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (unsigned int *r, unsigned int *s1, unsigned int *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s2[i] < 32 ? (s1[i] >> s2[i]) : 0; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + unsigned int res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + 7 * i % 291; + src2.a[i] = 1 + 17 * i % 71; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srlv_epi32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_srlv_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_srlv_epi32) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq-1.c new file mode 100644 index 00000000000..b316f68f59b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsrlvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsrlvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsrlvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __m512i y; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_srlv_epi64 (x, y); + x = _mm512_mask_srlv_epi64 (x, m, x, y); + x = _mm512_maskz_srlv_epi64 (m, x, y); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq-2.c new file mode 100644 index 00000000000..586b8c2f930 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (unsigned long long *r, unsigned long long *s1, + unsigned long long *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s2[i] < 64 ? (s1[i] >> s2[i]) : 0; + } +} + +void static +TEST (void) +{ + int i; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + unsigned long long res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 2 + 7 * i % 291; + src2.a[i] = 1 + 17 * i % 71; + } + + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_srlv_epi64) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_srlv_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_srlv_epi64) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq512-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq512-1.c new file mode 100644 index 00000000000..99b12d200b5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq512-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "vpsrlvq\[ \\t\]+\[^\n\]*%zmm\[0-9\]" } } */ + +#include + +volatile __m512i x; + +void extern +avx512f_test (void) +{ + x = _mm512_srlv_epi64 (x, x); +} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq512-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq512-2.c new file mode 100644 index 00000000000..d262a83527d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsrlvq512-2.c @@ -0,0 +1,47 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#include +#include "avx512f-check.h" + +static void +compute_psrlvq512 (long long int *s1, long long int *s2, long long int *r) +{ + int i; + long long int count; + + for (i = 0; i < 8; ++i) + { + count = s2[i]; + r[i] = ((unsigned long long) s1[i]) >> count; + } +} + +void static +avx512f_test (void) +{ + union512i_q s1, s2, res; + long long int res_ref[8]; + int i, j, sign = 1; + int fail = 0; + + for (i = 0; i < 10; i++) + { + for (j = 0; j < 8; j++) + { + s1.a[j] = j * i * sign; + s2.a[j] = (j + i) >> 2; + sign = -sign; + } + + res.x = _mm512_srlv_epi64 (s1.x, s2.x); + + compute_psrlvq512 (s1.a, s2.a, res_ref); + + fail += check_union512i_q (res, res_ref); + } + + if (fail != 0) + abort (); +} \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsubd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsubd-1.c new file mode 100644 index 00000000000..28c3584e13d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsubd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsubd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsubd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsubd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sub_epi32 (x, x); + x = _mm512_mask_sub_epi32 (x, m, x, x); + x = _mm512_maskz_sub_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsubd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsubd-2.c new file mode 100644 index 00000000000..acc26ce832c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsubd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s1, int *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] - s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_sub_epi32) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_sub_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_sub_epi32) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsubq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsubq-1.c new file mode 100644 index 00000000000..c51b291dae8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsubq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vpsubq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpsubq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpsubq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sub_epi64 (x, x); + x = _mm512_mask_sub_epi64 (x, m, x, x); + x = _mm512_maskz_sub_epi64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpsubq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpsubq-2.c new file mode 100644 index 00000000000..ba16ee18470 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpsubq-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s1, long long *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] - s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_sub_epi64) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_sub_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_sub_epi64) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpternlogd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpternlogd-1.c new file mode 100644 index 00000000000..e4708bf51b0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpternlogd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpternlogd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpternlogd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpternlogd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x, y, z; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_ternarylogic_epi32 (x, y, z, 0xF0); + x = _mm512_mask_ternarylogic_epi32 (x, m, y, z, 0xF0); + x = _mm512_maskz_ternarylogic_epi32 (m, x, y, z, 0xF0); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpternlogd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpternlogd-2.c new file mode 100644 index 00000000000..c9813ed2432 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpternlogd-2.c @@ -0,0 +1,71 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *src1, int *src2, int *src3, int imm, int *r) +{ + int i, j, index, res, mask, one_mask = 1; + int src1_bit, src2_bit, src3_bit, imm_bit; + + for (i = 0; i < SIZE; i++) + { + res = 0; + for (j = 0; j < 32; j++) + { + mask = one_mask << j; + src1_bit = ((src1[i] & mask) >> j) << 2; + src2_bit = ((src2[i] & mask) >> j) << 1; + src3_bit = ((src3[i] & mask) >> j); + index = src1_bit | src2_bit | src3_bit; + imm_bit = (imm & (one_mask << index)) >> index; + res = res | (imm_bit << j); + } + r[i] = res; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) src2, src3, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + int i, imm = 0x7D; + + for (i = 0; i < SIZE; i++) + { + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + src2.a[i] = 145132 * i + 123123; + src3.a[i] = 1223 * i + 895; + } + + CALC (res1.a, src2.a, src3.a, imm, res_ref); + + res1.x = INTRINSIC (_ternarylogic_epi32) (res1.x, src2.x, src3.x, + imm); + res2.x = INTRINSIC (_mask_ternarylogic_epi32) (res2.x, mask, src2.x, + src3.x, imm); + res3.x = INTRINSIC (_maskz_ternarylogic_epi32) (mask, res3.x, src2.x, + src3.x, imm); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpternlogq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpternlogq-1.c new file mode 100644 index 00000000000..7d074668d93 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpternlogq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpternlogq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpternlogq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpternlogq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x, y, z; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_ternarylogic_epi64 (x, y, z, 0xF0); + x = _mm512_mask_ternarylogic_epi64 (x, m, y, z, 0xF0); + x = _mm512_maskz_ternarylogic_epi64 (m, x, y, z, 0xF0); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpternlogq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpternlogq-2.c new file mode 100644 index 00000000000..a8065541ecc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpternlogq-2.c @@ -0,0 +1,73 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (long long *src1, long long *src2, long long *src3, + long long imm, long long *r) +{ + int i, j; + long long res, index, mask, one_mask = 1; + long long src1_bit, src2_bit, src3_bit, imm_bit; + + for (i = 0; i < SIZE; i++) + { + res = 0; + for (j = 0; j < 64; j++) + { + mask = one_mask << j; + src1_bit = ((src1[i] & mask) >> j) << 2; + src2_bit = ((src2[i] & mask) >> j) << 1; + src3_bit = ((src3[i] & mask) >> j); + index = src1_bit | src2_bit | src3_bit; + imm_bit = (imm & (one_mask << index)) >> index; + res = res | (imm_bit << j); + } + r[i] = res; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) src2, src3, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + int i, imm = 0x7D; + + for (i = 0; i < SIZE; i++) + { + res1.a[i] = DEFAULT_VALUE; + res2.a[i] = DEFAULT_VALUE; + res3.a[i] = DEFAULT_VALUE; + src2.a[i] = 145132 * i + 123123; + src3.a[i] = 1223 * i + 895; + } + + CALC (res1.a, src2.a, src3.a, imm, res_ref); + + res1.x = INTRINSIC (_ternarylogic_epi64) (res1.x, src2.x, src3.x, + imm); + res2.x = INTRINSIC (_mask_ternarylogic_epi64) (res2.x, mask, src2.x, + src3.x, imm); + res3.x = INTRINSIC (_maskz_ternarylogic_epi64) (mask, res3.x, src2.x, + src3.x, imm); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vptestmd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vptestmd-1.c new file mode 100644 index 00000000000..2242314ce08 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vptestmd-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vptestmd\[ \\t\]+\[^\n\]*%zmm\[0-7\]\[^\n^k\]*k\[1-7\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vptestmd\[ \\t\]+\[^\n\]*%zmm\[0-7\]\[^\n^k\]*k\[1-7\]\{" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m16; + +void extern +avx512f_test (void) +{ + m16 = _mm512_test_epi32_mask (x, x); + m16 = _mm512_mask_test_epi32_mask (3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vptestmd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vptestmd-2.c new file mode 100644 index 00000000000..5025fab3088 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vptestmd-2.c @@ -0,0 +1,50 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (MASK_TYPE *res, int *src1, int *src2) +{ + int i; + *res = 0; + MASK_TYPE one = 1; + + for (i = 0; i < SIZE; i++) + if (src1[i] & src2[i]) + *res = *res | one << i; +} + +static void +TEST (void) +{ + int i, sign = 1; + UNION_TYPE (AVX512F_LEN, i_d) src1, src2; + MASK_TYPE res_ref, res1, res2; + MASK_TYPE mask = MASK_VALUE; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * i * sign; + src2.a[i] = i + 20; + sign = -sign; + } + + res1 = INTRINSIC (_test_epi32_mask) (src1.x, src2.x); + res2 = INTRINSIC (_mask_test_epi32_mask) (mask, src1.x, src2.x); + + CALC (&res_ref, src1.a, src2.a); + + if (res1 != res_ref) + abort (); + + res_ref &= mask; + + if (res2 != res_ref) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vptestmq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vptestmq-1.c new file mode 100644 index 00000000000..9a92903a2bb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vptestmq-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vptestmq\[ \\t\]+\[^\n\]*%zmm\[0-7\]\[^\n^k\]*k\[1-7\]\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vptestmq\[ \\t\]+\[^\n\]*%zmm\[0-7\]\[^\n^k\]*k\[1-7\]\{" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m8; + +void extern +avx512f_test (void) +{ + m8 = _mm512_test_epi64_mask (x, x); + m8 = _mm512_mask_test_epi64_mask (3, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vptestmq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vptestmq-2.c new file mode 100644 index 00000000000..9ec9e48b3b1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vptestmq-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (MASK_TYPE *res, long long *src1, long long *src2) +{ + int i; + *res = 0; + MASK_TYPE one = 1; + + for (i = 0; i < SIZE; i++) + if (src1[i] & src2[i]) + *res = *res | one << i; +} + +static void +TEST (void) +{ + int i, sign = 1; + UNION_TYPE (AVX512F_LEN, i_q) src1, src2; + MASK_TYPE res_ref, res1, res2; + MASK_TYPE mask = MASK_VALUE; + res1 = 0; + res2 = 0; + + for (i = 0; i < SIZE; i++) + { + src1.a[i] = i * i * sign; + src2.a[i] = i + 20; + sign = -sign; + } + + res1 = INTRINSIC (_test_epi64_mask) (src1.x, src2.x); + res2 = INTRINSIC (_mask_test_epi64_mask) (mask, src1.x, src2.x); + + CALC (&res_ref, src1.a, src2.a); + + if (res1 != res_ref) + abort (); + + res_ref &= mask; + + if (res2 != res_ref) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhdq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhdq-1.c new file mode 100644 index 00000000000..800e1e0ef5d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhdq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpunpckhdq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpunpckhdq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpunpckhdq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x, y, z; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_unpackhi_epi32 (y, z); + x = _mm512_mask_unpackhi_epi32 (x, m, y, z); + x = _mm512_maskz_unpackhi_epi32 (m, y, z); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhdq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhdq-2.c new file mode 100644 index 00000000000..adb9b7a53aa --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhdq-2.c @@ -0,0 +1,59 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s1, int *s2) +{ + int i; + for (i = 0; i < SIZE / 4; i++) + { + r[4 * i] = s1[4 * i + 2]; + r[4 * i + 1] = s2[4 * i + 2]; + r[4 * i + 2] = s1[4 * i + 3]; + r[4 * i + 3] = s2[4 * i + 3]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 34 * i * sign; + src1.a[i] = 179 * i; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_unpackhi_epi32) (src1.x, src2.x); + res2.x = + INTRINSIC (_mask_unpackhi_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_unpackhi_epi32) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhqdq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhqdq-1.c new file mode 100644 index 00000000000..05b22297f8c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhqdq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpunpckhqdq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpunpckhqdq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpunpckhqdq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x, y, z; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_unpackhi_epi64 (y, z); + x = _mm512_mask_unpackhi_epi64 (x, m, y, z); + x = _mm512_maskz_unpackhi_epi64 (m, y, z); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhqdq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhqdq-2.c new file mode 100644 index 00000000000..b226274df16 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckhqdq-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s1, long long *s2) +{ + int i; + for (i = 0; i < SIZE / 2; i++) + { + r[2 * i] = s1[2 * i + 1]; + r[2 * i + 1] = s2[2 * i + 1]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 34 * i * sign; + src1.a[i] = 179 * i; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_unpackhi_epi64) (src1.x, src2.x); + res2.x = + INTRINSIC (_mask_unpackhi_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_unpackhi_epi64) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpunpckldq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckldq-1.c new file mode 100644 index 00000000000..29a2c8dc697 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckldq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpunpckldq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpunpckldq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpunpckldq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x, y, z; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_unpacklo_epi32 (y, z); + x = _mm512_mask_unpacklo_epi32 (x, m, y, z); + x = _mm512_maskz_unpacklo_epi32 (m, y, z); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpunpckldq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckldq-2.c new file mode 100644 index 00000000000..b715fde17ad --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpunpckldq-2.c @@ -0,0 +1,59 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (int *r, int *s1, int *s2) +{ + int i; + for (i = 0; i < SIZE / 4; i++) + { + r[4 * i] = s1[4 * i]; + r[4 * i + 1] = s2[4 * i]; + r[4 * i + 2] = s1[4 * i + 1]; + r[4 * i + 3] = s2[4 * i + 1]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 34 * i * sign; + src1.a[i] = 179 * i; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_unpacklo_epi32) (src1.x, src2.x); + res2.x = + INTRINSIC (_mask_unpacklo_epi32) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_unpacklo_epi32) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpunpcklqdq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpunpcklqdq-1.c new file mode 100644 index 00000000000..ac6f2976ade --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpunpcklqdq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpunpcklqdq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[\\n\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpunpcklqdq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpunpcklqdq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x, y, z; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_unpacklo_epi64 (y, z); + x = _mm512_mask_unpacklo_epi64 (x, m, y, z); + x = _mm512_maskz_unpacklo_epi64 (m, y, z); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpunpcklqdq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpunpcklqdq-2.c new file mode 100644 index 00000000000..2892f1c3210 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpunpcklqdq-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (long long *r, long long *s1, long long *s2) +{ + int i; + for (i = 0; i < SIZE / 2; i++) + { + r[2 * i] = s1[2 * i]; + r[2 * i + 1] = s2[2 * i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, i_q) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 34 * i * sign; + src1.a[i] = 179 * i; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_unpacklo_epi64) (src1.x, src2.x); + res2.x = + INTRINSIC (_mask_unpacklo_epi64) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_unpacklo_epi64) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpxord-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpxord-1.c new file mode 100644 index 00000000000..99e82bef459 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpxord-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpxord\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 4 } } */ +/* { dg-final { scan-assembler-times "vpxord\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpxord\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_xor_si512 (x, x); + x = _mm512_xor_epi32 (x, x); + x = _mm512_mask_xor_epi32 (x, m, x, x); + x = _mm512_maskz_xor_epi32 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpxord-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpxord-2.c new file mode 100644 index 00000000000..7a9666ce7c6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpxord-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (int *s1, int *s2, int *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + r[i] = s1[i] ^ s2[i]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1, s2, res1, res2, res3, res4; + MASK_TYPE mask = MASK_VALUE; + int res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * sign; + s2.a[i] = (i + 20) * sign; + sign = -sign; + res3.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_xor_si512) (s1.x, s2.x); + res2.x = INTRINSIC (_xor_epi32) (s1.x, s2.x); + res3.x = INTRINSIC (_mask_xor_epi32) (res3.x, mask, s1.x, s2.x); + res4.x = INTRINSIC (_maskz_xor_epi32) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) + abort (); + + if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (res4, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpxorq-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vpxorq-1.c new file mode 100644 index 00000000000..cd2853409e6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpxorq-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vpxorq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vpxorq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vpxorq\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512i x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_xor_epi64 (x, x); + x = _mm512_mask_xor_epi64 (x, m, x, x); + x = _mm512_maskz_xor_epi64 (m, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vpxorq-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vpxorq-2.c new file mode 100644 index 00000000000..288b0085ff6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vpxorq-2.c @@ -0,0 +1,53 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (long long *s1, long long *s2, long long *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + r[i] = s1[i] ^ s2[i]; +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) s1, s2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + long long res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * sign; + s2.a[i] = (i + 20) * sign; + sign = -sign; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_xor_epi64) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_xor_epi64) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_xor_epi64) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref)) + abort (); + + MASK_MERGE (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref)) + abort (); + + MASK_ZERO (i_q) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-1.c new file mode 100644 index 00000000000..7342420489d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrcp14pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vrcp14pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrcp14pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_rcp14_pd (x); + x = _mm512_mask_rcp14_pd (x, m, x); + x = _mm512_maskz_rcp14_pd (m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-2.c new file mode 100644 index 00000000000..4653d77309b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14pd-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (double *s, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = 1.0 / s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 123.456 * (i + 2000) * sign; + res2.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_rcp14_pd) (s.x); + res2.x = INTRINSIC (_mask_rcp14_pd) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_rcp14_pd) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res1, res_ref, 0.0001)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res2, res_ref, 0.0001)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res3, res_ref, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-1.c new file mode 100644 index 00000000000..ea6c68de7ba --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrcp14ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vrcp14ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrcp14ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_rcp14_ps (x); + x = _mm512_mask_rcp14_ps (x, m, x); + x = _mm512_maskz_rcp14_ps (m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-2.c new file mode 100644 index 00000000000..6e0e577914b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ps-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (float *s, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = 1.0 / s[i]; + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN,) s, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int i, sign = 1; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 123.456 * (i + 2000) * sign; + res2.a[i] = DEFAULT_VALUE; + sign = -sign; + } + + res1.x = INTRINSIC (_rcp14_ps) (s.x); + res2.x = INTRINSIC (_mask_rcp14_ps) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_rcp14_ps) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_ROUGH_CHECK (AVX512F_LEN,) (res1, res_ref, 0.0001)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN,) (res2, res_ref, 0.0001)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN,) (res3, res_ref, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c new file mode 100644 index 00000000000..3fb0e090ed7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c @@ -0,0 +1,35 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrndscalepd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 6} } */ +/* { dg-final { scan-assembler-times "vrndscalepd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 9} } */ +/* { dg-final { scan-assembler-times "vrndscalepd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 3} } */ +/* { dg-final { scan-assembler-times "vrndscalepd\[ \\t\]+\\S*,\[ \\t\]+\{sae\}\[^\n\]*%zmm\[0-9\]\[^\n\]*%zmm\[0-9\]\[^\{\]" 3} } */ +/* { dg-final { scan-assembler-times "vrndscalepd\[ \\t\]+\\S*,\[ \\t\]+\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 6} } */ + +#include + +volatile __m512d x; + +void extern +avx512f_test (void) +{ + x = _mm512_roundscale_pd (x, 0x42); + x = _mm512_ceil_pd (x); + x = _mm512_floor_pd (x); + x = _mm512_mask_roundscale_pd (x, 2, x, 0x42); + x = _mm512_mask_ceil_pd (x, 2, x); + x = _mm512_mask_floor_pd (x, 2, x); + x = _mm512_maskz_roundscale_pd (2, x, 0x42); + x = _mm512_maskz_ceil_pd (2, x); + x = _mm512_maskz_floor_pd (2, x); + + x = _mm512_roundscale_round_pd (x, 0x42, _MM_FROUND_NO_EXC); + x = _mm512_ceil_round_pd (x, _MM_FROUND_NO_EXC); + x = _mm512_floor_round_pd (x, _MM_FROUND_NO_EXC); + x = _mm512_mask_roundscale_round_pd (x, 2, x, 0x42, _MM_FROUND_NO_EXC); + x = _mm512_mask_ceil_round_pd (x, 2, x, _MM_FROUND_NO_EXC); + x = _mm512_mask_floor_round_pd (x, 2, x, _MM_FROUND_NO_EXC); + x = _mm512_maskz_roundscale_round_pd (2, x, 0x42, _MM_FROUND_NO_EXC); + x = _mm512_maskz_ceil_round_pd (2, x, _MM_FROUND_NO_EXC); + x = _mm512_maskz_floor_round_pd (2, x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-2.c new file mode 100644 index 00000000000..f655f59c677 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-2.c @@ -0,0 +1,96 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include "math.h" + +static void +CALC (double *s, double *r, int imm) +{ + int i = 0, rc, m; + rc = imm & 0xf; + m = imm >> 4; + for (i = 0; i < SIZE; i++) + switch (rc) + { + case _MM_FROUND_FLOOR: + r[i] = floor (s[i] * pow (2, m)) / pow (2, m); + break; + case _MM_FROUND_CEIL: + r[i] = ceil (s[i] * pow (2, m)) / pow (2, m); + break; + default: + abort (); + break; + } +} + +void static +TEST (void) +{ + int imm, i, j; + UNION_TYPE (AVX512F_LEN, d) res1,res2,res3,s; + double res_ref[SIZE]; + double res_ref_mask[SIZE]; + + MASK_TYPE mask = 6 ^ (0xff >> SIZE); + + imm = _MM_FROUND_FLOOR | (7 << 4); + + for (i = 0; i < 3; i++) + { + + for (j = 0; j < SIZE; j++) + { + s.a[j] = j * (j + 12.0231); + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + } + + switch (i) + { + case 0: + imm = _MM_FROUND_FLOOR | (7 << 4); + res1.x = INTRINSIC (_roundscale_pd) (s.x, imm); + res2.x = INTRINSIC (_mask_roundscale_pd) (res2.x, mask, s.x, imm); + res3.x = INTRINSIC (_maskz_roundscale_pd) (mask, s.x, imm); + break; + case 1: + imm = _MM_FROUND_FLOOR; + res1.x = INTRINSIC (_floor_pd) (s.x); + res2.x = INTRINSIC (_mask_floor_pd) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_floor_pd) (mask, s.x); + break; + case 2: + imm = _MM_FROUND_CEIL; + res1.x = INTRINSIC (_ceil_pd) (s.x); + res2.x = INTRINSIC (_mask_ceil_pd) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_ceil_pd) (mask, s.x); + break; + } + + CALC (s.a, res_ref, imm); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE(d) (res_ref,mask,SIZE ); + + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO(d) (res_ref,mask,SIZE ); + + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); + + } +} + diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c new file mode 100644 index 00000000000..7d5aeaac8ce --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c @@ -0,0 +1,35 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrndscaleps\[ \\t\]+\[^\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6} } */ +/* { dg-final { scan-assembler-times "vrndscaleps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 9} } */ +/* { dg-final { scan-assembler-times "vrndscaleps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 3} } */ +/* { dg-final { scan-assembler-times "vrndscaleps\[ \\t\]+\\S*,\[ \\t\]+\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3} } */ +/* { dg-final { scan-assembler-times "vrndscaleps\[ \\t\]+\\S*,\[ \\t\]+\{sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 6} } */ + +#include + +volatile __m512 x; + +void extern +avx512f_test (void) +{ + x = _mm512_roundscale_ps (x, 0x42); + x = _mm512_ceil_ps (x); + x = _mm512_floor_ps (x); + x = _mm512_mask_roundscale_ps (x, 2, x, 0x42); + x = _mm512_mask_ceil_ps (x, 2, x); + x = _mm512_mask_floor_ps (x, 2, x); + x = _mm512_maskz_roundscale_ps (2, x, 0x42); + x = _mm512_maskz_ceil_ps (2, x); + x = _mm512_maskz_floor_ps (2, x); + + x = _mm512_roundscale_round_ps (x, 0x42, _MM_FROUND_NO_EXC); + x = _mm512_ceil_round_ps (x, _MM_FROUND_NO_EXC); + x = _mm512_floor_round_ps (x, _MM_FROUND_NO_EXC); + x = _mm512_mask_roundscale_round_ps (x, 2, x, 0x42, _MM_FROUND_NO_EXC); + x = _mm512_mask_ceil_round_ps (x, 2, x, _MM_FROUND_NO_EXC); + x = _mm512_mask_floor_round_ps (x, 2, x, _MM_FROUND_NO_EXC); + x = _mm512_maskz_roundscale_round_ps (2, x, 0x42, _MM_FROUND_NO_EXC); + x = _mm512_maskz_ceil_round_ps (2, x, _MM_FROUND_NO_EXC); + x = _mm512_maskz_floor_round_ps (2, x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-2.c new file mode 100644 index 00000000000..19c51102231 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-2.c @@ -0,0 +1,94 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "math.h" + +static void +CALC (float *s, float *r, int imm) +{ + int i = 0, rc, m; + rc = imm & 0xf; + m = imm >> 4; + for (i = 0; i < SIZE; i++) + switch (rc) + { + case _MM_FROUND_FLOOR: + r[i] = floor (s[i] * pow (2, m)) / pow (2, m); + break; + case _MM_FROUND_CEIL: + r[i] = ceil (s[i] * pow (2, m)) / pow (2, m); + break; + default: + abort (); + break; + } +} + +void static +TEST (void) +{ + int imm, i, j; + UNION_TYPE (AVX512F_LEN,) res1, res2, res3, s; + float res_ref[SIZE]; + + MASK_TYPE mask = 6 ^ (0xffff >> SIZE); + + imm = _MM_FROUND_FLOOR | (7 << 4); + + for (i = 0; i < 3; i++) + { + + for (j = 0; j < SIZE; j++) + { + s.a[j] = j * (j + 12.0231); + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + } + + switch (i) + { + case 0: + imm = _MM_FROUND_FLOOR | (7 << 4); + res1.x = INTRINSIC (_roundscale_ps) (s.x, imm); + res2.x = INTRINSIC (_mask_roundscale_ps) (res2.x, mask, s.x, imm); + res3.x = INTRINSIC (_maskz_roundscale_ps) (mask, s.x, imm); + break; + case 1: + imm = _MM_FROUND_FLOOR; + res1.x = INTRINSIC (_floor_ps) (s.x); + res2.x = INTRINSIC (_mask_floor_ps) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_floor_ps) (mask, s.x); + break; + case 2: + imm = _MM_FROUND_CEIL; + res1.x = INTRINSIC (_ceil_ps) (s.x); + res2.x = INTRINSIC (_mask_ceil_ps) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_ceil_ps) (mask, s.x); + break; + } + + CALC (s.a, res_ref, imm); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE ()(res_ref, mask, SIZE); + + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO ()(res_ref, mask, SIZE); + + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); + + } +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14pd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14pd-1.c new file mode 100644 index 00000000000..e8818a6b630 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14pd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrsqrt14pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vrsqrt14pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrsqrt14pd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_rsqrt14_pd (x); + x = _mm512_mask_rsqrt14_pd (x, m, x); + x = _mm512_maskz_rsqrt14_pd (m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14pd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14pd-2.c new file mode 100644 index 00000000000..76e39cf805a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14pd-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#include +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (double *s, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = 1.0 / sqrt(s[i]); + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 123.456 * (i + 2000); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_rsqrt14_pd) (s.x); + res2.x = INTRINSIC (_mask_rsqrt14_pd) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_rsqrt14_pd) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res1, res_ref, 0.0001)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res2, res_ref, 0.0001)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN, d) (res3, res_ref, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-1.c new file mode 100644 index 00000000000..b766d85418b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrsqrt14ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 3 } } */ +/* { dg-final { scan-assembler-times "vrsqrt14ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vrsqrt14ps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_rsqrt14_ps (x); + x = _mm512_mask_rsqrt14_ps (x, m, x); + x = _mm512_maskz_rsqrt14_ps (m, x); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-2.c new file mode 100644 index 00000000000..4e6f77dd40a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ps-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#include +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (float *s, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = 1.0 / sqrt(s[i]); + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN,) s, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 123.456 * (i + 2000); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_rsqrt14_ps) (s.x); + res2.x = INTRINSIC (_mask_rsqrt14_ps) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_rsqrt14_ps) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_ROUGH_CHECK (AVX512F_LEN,) (res1, res_ref, 0.0001)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN,) (res2, res_ref, 0.0001)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_ROUGH_CHECK (AVX512F_LEN,) (res3, res_ref, 0.0001)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-1.c new file mode 100644 index 00000000000..6076e2c1b6b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vscalefpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vscalefpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vscalefpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vscalefpd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vscalefpd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vscalefpd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_scalef_pd (x, x); + x = _mm512_mask_scalef_pd (x, m, x, x); + x = _mm512_maskz_scalef_pd (m, x, x); + x = _mm512_scalef_round_pd (x, x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_scalef_round_pd (x, m, x, x, _MM_FROUND_TO_NEG_INF); + x = _mm512_maskz_scalef_round_pd (m, x, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-2.c new file mode 100644 index 00000000000..829f7418f4f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vscalefpd-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include + +CALC (double *r, double *s1, double *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = ldexp (s1[i], floor (s2[i])); + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_scalef_pd) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_scalef_pd) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_scalef_pd) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vscalefps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vscalefps-1.c new file mode 100644 index 00000000000..37385f56802 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vscalefps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vscalefps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vscalefps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vscalefps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vscalefps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vscalefps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vscalefps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_scalef_ps (x, x); + x = _mm512_mask_scalef_ps (x, m, x, x); + x = _mm512_maskz_scalef_ps (m, x, x); + x = _mm512_scalef_round_ps (x, x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_scalef_round_ps (x, m, x, x, _MM_FROUND_TO_POS_INF); + x = _mm512_maskz_scalef_round_ps (m, x, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vscalefps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vscalefps-2.c new file mode 100644 index 00000000000..59c32369f96 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vscalefps-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include + +CALC (float *r, float *s1, float *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = ldexp (s1[i], floor (s2[i])); + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, ) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_scalef_ps) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_scalef_ps) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_scalef_ps) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-1.c new file mode 100644 index 00000000000..712b3148297 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vshuff32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vshuff32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vshuff32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +__m512 x; + +void extern +avx512f_test (void) +{ + x = _mm512_shuffle_f32x4 (x, x, 56); + x = _mm512_mask_shuffle_f32x4 (x, 4, x, x, 56); + x = _mm512_maskz_shuffle_f32x4 (6, x, x, 56); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c new file mode 100644 index 00000000000..271c8624bd2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c @@ -0,0 +1,68 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "string.h" + +void +CALC (float *e, UNION_TYPE (AVX512F_LEN,) s1, UNION_TYPE (AVX512F_LEN,) s2, + int imm) +{ + int i, offset, selector; + float *source; + for (i = 0; i < SIZE / 4; i++) + { + +#if AVX512F_LEN == 512 + selector = (imm >> i * 2) & 0x3; +#else + selector = (imm >> i) & 0x1; +#endif + + offset = i * 4; + source = i * 4 * 32 < AVX512F_LEN / 2 ? s1.a : s2.a; + memcpy (e + offset, source + selector * 4, 16); + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN,) u1, u2, u3, s1, s2; + MASK_TYPE mask = MASK_VALUE; + float e[SIZE]; + int i; + int imm = 203; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 1.2 / (i + 0.378); + s1.a[i] = 91.02 / (i + 4.3578); + u1.a[i] = DEFAULT_VALUE; + u2.a[i] = DEFAULT_VALUE; + u3.a[i] = DEFAULT_VALUE; + } + + u1.x = INTRINSIC (_shuffle_f32x4) (s1.x, s2.x, imm); + u2.x = INTRINSIC (_mask_shuffle_f32x4) (u2.x, mask, s1.x, s2.x, imm); + u3.x = INTRINSIC (_maskz_shuffle_f32x4) (mask, s1.x, s2.x, imm); + + CALC (e, s1, s2, imm); + + if (UNION_CHECK (AVX512F_LEN,) (u1, e)) + abort (); + + MASK_MERGE ()(e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (u2, e)) + abort (); + + MASK_ZERO ()(e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (u3, e)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-1.c new file mode 100644 index 00000000000..c5ac373cc8a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vshuff64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vshuff64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vshuff64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +__m512d x; + +void extern +avx512f_test (void) +{ + x = _mm512_shuffle_f64x2 (x, x, 56); + x = _mm512_maskz_shuffle_f64x2 (3, x, x, 56); + x = _mm512_mask_shuffle_f64x2 (x, 3, x, x, 56); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c new file mode 100644 index 00000000000..4842942ac03 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c @@ -0,0 +1,68 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include "string.h" + +void +CALC (double *e, UNION_TYPE (AVX512F_LEN, d) s1, + UNION_TYPE (AVX512F_LEN, d) s2, int imm) +{ + int i, offset, selector; + double *source; + for (i = 0; i < SIZE / 2; i++) + { + +#if AVX512F_LEN == 512 + selector = (imm >> i * 2) & 0x3; +#else + selector = (imm >> i) & 0x1; +#endif + + offset = i * 2; + source = i * 2 * 64 < AVX512F_LEN / 2 ? s1.a : s2.a; + memcpy (e + offset, source + selector * 2, 16); + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) u1, u2, u3, s1, s2; + MASK_TYPE mask = MASK_VALUE; + double e[SIZE]; + int i; + int imm = 203; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 1.2 / (i + 0.378); + s1.a[i] = 91.02 / (i + 4.3578); + u1.a[i] = DEFAULT_VALUE; + u2.a[i] = DEFAULT_VALUE; + u3.a[i] = DEFAULT_VALUE; + } + + u1.x = INTRINSIC (_shuffle_f64x2) (s1.x, s2.x, imm); + u2.x = INTRINSIC (_mask_shuffle_f64x2) (u2.x, mask, s1.x, s2.x, imm); + u3.x = INTRINSIC (_maskz_shuffle_f64x2) (mask, s1.x, s2.x, imm); + + CALC (e, s1, s2, imm); + + if (UNION_CHECK (AVX512F_LEN, d) (u1, e)) + abort (); + + MASK_MERGE (d) (e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (u2, e)) + abort (); + + MASK_ZERO (d) (e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (u3, e)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-1.c new file mode 100644 index 00000000000..8e48fdf7ddc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vshufi32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vshufi32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vshufi32x4\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +__m512i x; + +void extern +avx512f_test (void) +{ + x = _mm512_shuffle_i32x4 (x, x, 56); + x = _mm512_mask_shuffle_i32x4 (x, 8, x, x, 56); + x = _mm512_maskz_shuffle_i32x4 (8, x, x, 56); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c new file mode 100644 index 00000000000..105c7156857 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c @@ -0,0 +1,68 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "string.h" + +void +CALC (int *e, UNION_TYPE (AVX512F_LEN, i_d) s1, + UNION_TYPE (AVX512F_LEN, i_d) s2, int imm) +{ + int i, offset, selector; + int *source; + for (i = 0; i < SIZE / 4; i++) + { + +#if AVX512F_LEN == 512 + selector = (imm >> i * 2) & 0x3; +#else + selector = (imm >> i) & 0x1; +#endif + + offset = i * 4; + source = i * 4 * 32 < AVX512F_LEN / 2 ? s1.a : s2.a; + memcpy (e + offset, source + selector * 4, 16); + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) u1, u2, u3, s1, s2; + MASK_TYPE mask = MASK_VALUE; + int e[SIZE]; + int i; + int imm = 203; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 1.2 / (i + 0.378); + s1.a[i] = 91.02 / (i + 4.3578); + u1.a[i] = DEFAULT_VALUE; + u2.a[i] = DEFAULT_VALUE; + u3.a[i] = DEFAULT_VALUE; + } + + u1.x = INTRINSIC (_shuffle_i32x4) (s1.x, s2.x, imm); + u2.x = INTRINSIC (_mask_shuffle_i32x4) (u2.x, mask, s1.x, s2.x, imm); + u3.x = INTRINSIC (_maskz_shuffle_i32x4) (mask, s1.x, s2.x, imm); + + CALC (e, s1, s2, imm); + + if (UNION_CHECK (AVX512F_LEN, i_d) (u1, e)) + abort (); + + MASK_MERGE (i_d) (e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (u2, e)) + abort (); + + MASK_ZERO (i_d) (e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_d) (u3, e)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-1.c new file mode 100644 index 00000000000..5bb5c8f63f9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vshufi64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vshufi64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vshufi64x2\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +__m512i x; + +void extern +avx512f_test (void) +{ + x = _mm512_shuffle_i64x2 (x, x, 56); + x = _mm512_mask_shuffle_i64x2 (x, 3, x, x, 56); + x = _mm512_maskz_shuffle_i64x2 (2, x, x, 56); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c new file mode 100644 index 00000000000..d79d8f6bcc6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c @@ -0,0 +1,68 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +#include "string.h" + +void +CALC (long long *e, UNION_TYPE (AVX512F_LEN, i_q) s1, + UNION_TYPE (AVX512F_LEN, i_q) s2, int imm) +{ + int i, offset, selector; + long long *source; + for (i = 0; i < SIZE / 2; i++) + { + +#if AVX512F_LEN == 512 + selector = (imm >> i * 2) & 0x3; +#else + selector = (imm >> i) & 0x1; +#endif + + offset = i * 2; + source = i * 2 * 64 < AVX512F_LEN / 2 ? s1.a : s2.a; + memcpy (e + offset, source + selector * 2, 16); + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_q) u1, u2, u3, s1, s2; + MASK_TYPE mask = MASK_VALUE; + long long e[SIZE]; + int i; + int imm = 203; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 1.2 / (i + 0.378); + s1.a[i] = 91.02 / (i + 4.3578); + u1.a[i] = DEFAULT_VALUE; + u2.a[i] = DEFAULT_VALUE; + u3.a[i] = DEFAULT_VALUE; + } + + u1.x = INTRINSIC (_shuffle_i64x2) (s1.x, s2.x, imm); + u2.x = INTRINSIC (_mask_shuffle_i64x2) (u2.x, mask, s1.x, s2.x, imm); + u3.x = INTRINSIC (_maskz_shuffle_i64x2) (mask, s1.x, s2.x, imm); + + CALC (e, s1, s2, imm); + + if (UNION_CHECK (AVX512F_LEN, i_q) (u1, e)) + abort (); + + MASK_MERGE (i_q) (e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (u2, e)) + abort (); + + MASK_ZERO (i_q) (e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, i_q) (u3, e)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshufpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vshufpd-1.c new file mode 100644 index 00000000000..420a6cfd7be --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshufpd-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vshufpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vshufpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vshufpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +__m512d x; + +void extern +avx512f_test (void) +{ + x = _mm512_shuffle_pd (x, x, 56); + x = _mm512_mask_shuffle_pd (x, 2, x, x, 56); + x = _mm512_maskz_shuffle_pd (2, x, x, 56); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshufpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vshufpd-2.c new file mode 100644 index 00000000000..d70228af17e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshufpd-2.c @@ -0,0 +1,61 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" +void static +CALC (double *e, UNION_TYPE (AVX512F_LEN, d) s1, + UNION_TYPE (AVX512F_LEN, d) s2, int imm) +{ + e[0] = (imm & (1 << 0)) ? s1.a[1] : s1.a[0]; + e[1] = (imm & (1 << 1)) ? s2.a[1] : s2.a[0]; +#if AVX512F_LEN > 128 + e[2] = (imm & (1 << 2)) ? s1.a[3] : s1.a[2]; + e[3] = (imm & (1 << 3)) ? s2.a[3] : s2.a[2]; +#if AVX512F_LEN > 256 + e[4] = (imm & (1 << 4)) ? s1.a[5] : s1.a[4]; + e[5] = (imm & (1 << 5)) ? s2.a[5] : s2.a[4]; + e[6] = (imm & (1 << 6)) ? s1.a[7] : s1.a[6]; + e[7] = (imm & (1 << 7)) ? s2.a[7] : s2.a[6]; +#endif +#endif +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) u1, u2, u3, s1, s2; + double e[SIZE]; + MASK_TYPE mask = MASK_VALUE; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 2134.3343 * i + 54846.4641; + s2.a[i] = 856.43576 * i + 1124.209; + u1.a[i] = DEFAULT_VALUE; + u2.a[i] = DEFAULT_VALUE; + u3.a[i] = DEFAULT_VALUE; + } + + u1.x = INTRINSIC (_shuffle_pd) (s1.x, s2.x, 120); + u2.x = INTRINSIC (_mask_shuffle_pd) (u2.x, mask, s1.x, s2.x, 120); + u3.x = INTRINSIC (_maskz_shuffle_pd) (mask, s1.x, s2.x, 120); + CALC (e, s1, s2, 120); + + if (UNION_CHECK (AVX512F_LEN, d) (u1, e)) + abort (); + + MASK_MERGE (d) (e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (u2, e)) + abort (); + + MASK_ZERO (d) (e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (u3, e)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshufps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vshufps-1.c new file mode 100644 index 00000000000..e3dbf0751f6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshufps-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vshufps\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vshufps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vshufps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +__m512 x; + +void extern +avx512f_test (void) +{ + x = _mm512_shuffle_ps (x, x, 56); + x = _mm512_mask_shuffle_ps (x, 2, x, x, 56); + x = _mm512_maskz_shuffle_ps (2, x, x, 56); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vshufps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vshufps-2.c new file mode 100644 index 00000000000..ed378d1c40b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vshufps-2.c @@ -0,0 +1,74 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +void +CALC (float *e, UNION_TYPE (AVX512F_LEN,) s1, UNION_TYPE (AVX512F_LEN,) s2, + int imm) +{ + e[0] = s1.a[(imm >> 0) & 0x3]; + e[1] = s1.a[(imm >> 2) & 0x3]; + e[2] = s2.a[(imm >> 4) & 0x3]; + e[3] = s2.a[(imm >> 6) & 0x3]; +#if AVX512F_LEN > 128 + e[4] = s1.a[4 + ((imm >> 0) & 0x3)]; + e[5] = s1.a[4 + ((imm >> 2) & 0x3)]; + e[6] = s2.a[4 + ((imm >> 4) & 0x3)]; + e[7] = s2.a[4 + ((imm >> 6) & 0x3)]; +#if AVX512F_LEN > 256 + e[8] = s1.a[8 + ((imm >> 0) & 0x3)]; + e[9] = s1.a[8 + ((imm >> 2) & 0x3)]; + e[10] = s2.a[8 + ((imm >> 4) & 0x3)]; + e[11] = s2.a[8 + ((imm >> 6) & 0x3)]; + e[12] = s1.a[12 + ((imm >> 0) & 0x3)]; + e[13] = s1.a[12 + ((imm >> 2) & 0x3)]; + e[14] = s2.a[12 + ((imm >> 4) & 0x3)]; + e[15] = s2.a[12 + ((imm >> 6) & 0x3)]; +#endif +#endif +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN,) u1, u2, u3, s1, s2; + float e[SIZE]; + int i, sign; + MASK_TYPE mask = MASK_VALUE; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 1.5 + 34.67 * i * sign; + s2.a[i] = -22.17 * i * sign; + u1.a[i] = DEFAULT_VALUE; + u2.a[i] = DEFAULT_VALUE; + u3.a[i] = DEFAULT_VALUE; + sign = sign * -1; + } + + + u1.x = INTRINSIC (_shuffle_ps) (s1.x, s2.x, 203); + u2.x = INTRINSIC (_mask_shuffle_ps) (u2.x, mask, s1.x, s2.x, 203); + u3.x = INTRINSIC (_maskz_shuffle_ps) (mask, s1.x, s2.x, 203); + + CALC (e, s1, s2, 203); + + if (UNION_CHECK (AVX512F_LEN,) (u1, e)) + abort (); + + MASK_MERGE ()(e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (u2, e)) + abort (); + + MASK_ZERO ()(e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (u3, e)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-1.c new file mode 100644 index 00000000000..8b5a3d4cbcf --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vsqrtpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vsqrtpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vsqrtpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vsqrtpd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vsqrtpd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vsqrtpd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sqrt_pd (x); + x = _mm512_mask_sqrt_pd (x, m, x); + x = _mm512_maskz_sqrt_pd (m, x); + x = _mm512_sqrt_round_pd (x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_sqrt_round_pd (x, m, x, _MM_FROUND_TO_NEG_INF); + x = _mm512_maskz_sqrt_round_pd (m, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-2.c new file mode 100644 index 00000000000..27b649157f1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtpd-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#include +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +static void +CALC (double *s, double *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = sqrt(s[i]); + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 123.456 * (i + 2000); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_sqrt_pd) (s.x); + res2.x = INTRINSIC (_mask_sqrt_pd) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_sqrt_pd) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_FP_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_FP_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_FP_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-1.c new file mode 100644 index 00000000000..f4fdf5590f9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vsqrtps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vsqrtps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vsqrtps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vsqrtps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vsqrtps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vsqrtps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sqrt_ps (x); + x = _mm512_mask_sqrt_ps (x, m, x); + x = _mm512_maskz_sqrt_ps (m, x); + x = _mm512_sqrt_round_ps (x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_sqrt_round_ps (x, m, x, _MM_FROUND_TO_POS_INF); + x = _mm512_maskz_sqrt_round_ps (m, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-2.c new file mode 100644 index 00000000000..4fc45e3953f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtps-2.c @@ -0,0 +1,54 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#include +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +static void +CALC (float *s, float *r) +{ + int i; + + for (i = 0; i < SIZE; i++) + { + r[i] = sqrt(s[i]); + } +} + +static void +TEST (void) +{ + UNION_TYPE (AVX512F_LEN,) s, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s.a[i] = 123.456 * (i + 2000); + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_sqrt_ps) (s.x); + res2.x = INTRINSIC (_mask_sqrt_ps) (res2.x, mask, s.x); + res3.x = INTRINSIC (_maskz_sqrt_ps) (mask, s.x); + + CALC (s.a, res_ref); + + if (UNION_FP_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_FP_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_FP_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsubpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vsubpd-1.c new file mode 100644 index 00000000000..47a78c34047 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsubpd-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vsubpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vsubpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vsubpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vsubpd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vsubpd\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vsubpd\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512d x; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sub_pd (x, x); + x = _mm512_mask_sub_pd (x, m, x, x); + x = _mm512_maskz_sub_pd (m, x, x); + x = _mm512_sub_round_pd (x, x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_sub_round_pd (x, m, x, x, _MM_FROUND_TO_NEG_INF); + x = _mm512_maskz_sub_round_pd (m, x, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsubpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vsubpd-2.c new file mode 100644 index 00000000000..a462631b2c3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsubpd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +CALC (double *r, double *s1, double *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] - s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN, d) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_sub_pd) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_sub_pd) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_sub_pd) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsubps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vsubps-1.c new file mode 100644 index 00000000000..6d2db1e67d4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsubps-1.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vsubps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 6 } } */ +/* { dg-final { scan-assembler-times "vsubps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vsubps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */ +/* { dg-final { scan-assembler-times "vsubps\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%zmm\[0-9\]" 1 } } */ +/* { dg-final { scan-assembler-times "vsubps\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ +/* { dg-final { scan-assembler-times "vsubps\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ + +#include + +volatile __m512 x; +volatile __mmask16 m; + +void extern +avx512f_test (void) +{ + x = _mm512_sub_ps (x, x); + x = _mm512_mask_sub_ps (x, m, x, x); + x = _mm512_maskz_sub_ps (m, x, x); + x = _mm512_sub_round_ps (x, x, _MM_FROUND_TO_NEAREST_INT); + x = _mm512_mask_sub_round_ps (x, m, x, x, _MM_FROUND_TO_POS_INF); + x = _mm512_maskz_sub_round_ps (m, x, x, _MM_FROUND_TO_ZERO); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsubps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vsubps-2.c new file mode 100644 index 00000000000..366b7e74436 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsubps-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +CALC (float *r, float *s1, float *s2) +{ + int i; + for (i = 0; i < SIZE; i++) + { + r[i] = s1[i] - s2[i]; + } +} + +void static +TEST (void) +{ + int i, sign; + UNION_TYPE (AVX512F_LEN,) res1, res2, res3, src1, src2; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + + sign = -1; + for (i = 0; i < SIZE; i++) + { + src1.a[i] = 1.5 + 34.67 * i * sign; + src2.a[i] = -22.17 * i * sign; + sign = sign * -1; + } + for (i = 0; i < SIZE; i++) + res2.a[i] = DEFAULT_VALUE; + + res1.x = INTRINSIC (_sub_ps) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_sub_ps) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_sub_ps) (mask, src1.x, src2.x); + + CALC (res_ref, src1.a, src2.a); + + if (UNION_CHECK (AVX512F_LEN,) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN,) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vucomisd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vucomisd-1.c new file mode 100644 index 00000000000..da0df762002 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vucomisd-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "vucomisd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm" } } */ + +#include + +volatile __m128d x; +volatile int res; + +void extern +avx512f_test (void) +{ + res = _mm_comi_round_sd (x, x, _CMP_NLE_UQ, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vucomiss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vucomiss-1.c new file mode 100644 index 00000000000..d4355de0c30 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vucomiss-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler "vucomiss\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm" } } */ + +#include + +volatile __m128 x; +volatile int res; + +void extern +avx512f_test (void) +{ + res = _mm_comi_round_ss (x, x, _CMP_EQ_OQ, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vunpckhpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vunpckhpd-1.c new file mode 100644 index 00000000000..2ce55e4469f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vunpckhpd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vunpckhpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vunpckhpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vunpckhpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512d x, y, z; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_unpackhi_pd (y, z); + x = _mm512_mask_unpackhi_pd (x, m, y, z); + x = _mm512_maskz_unpackhi_pd (m, y, z); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vunpckhpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vunpckhpd-2.c new file mode 100644 index 00000000000..60898bbf22c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vunpckhpd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +void static +CALC (double *s1, double *s2, double *r) +{ + int i; + + for (i = 0; i < SIZE / 2; i++) + { + r[2 * i] = s1[2 * i + 1]; + r[2 * i + 1] = s2[2 * i + 1]; + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1, s2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * 123.2 + 32.6; + s2.a[i] = i + 2.5; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_unpackhi_pd) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_unpackhi_pd) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_unpackhi_pd) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vunpckhps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vunpckhps-1.c new file mode 100644 index 00000000000..9567272c90a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vunpckhps-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vunpckhps\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vunpckhps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vunpckhps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512 x, y, z; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_unpackhi_ps (y, z); + x = _mm512_mask_unpackhi_ps (x, m, y, z); + x = _mm512_maskz_unpackhi_ps (m, y, z); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vunpckhps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vunpckhps-2.c new file mode 100644 index 00000000000..6047985bc70 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vunpckhps-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +void static +CALC (float *s1, float *s2, float *r) +{ + int i; + + for (i = 0; i < SIZE / 4; i++) + { + r[4 * i] = s1[4 * i + 2]; + r[4 * i + 1] = s2[4 * i + 2]; + r[4 * i + 2] = s1[4 * i + 3]; + r[4 * i + 3] = s2[4 * i + 3]; + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, ) s1, s2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + float res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * 123.2 + 32.6; + s2.a[i] = i + 2.5; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_unpackhi_ps) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_unpackhi_ps) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_unpackhi_ps) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, ) (res1, res_ref)) + abort (); + + MASK_MERGE () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res2, res_ref)) + abort (); + + MASK_ZERO () (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vunpcklpd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vunpcklpd-1.c new file mode 100644 index 00000000000..5a73037846d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vunpcklpd-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vunpcklpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vunpcklpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vunpcklpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512d x, y, z; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x = _mm512_unpacklo_pd (y, z); + x = _mm512_mask_unpacklo_pd (x, m, y, z); + x = _mm512_maskz_unpacklo_pd (m, y, z); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vunpcklpd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vunpcklpd-2.c new file mode 100644 index 00000000000..3317e4acff9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vunpcklpd-2.c @@ -0,0 +1,55 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 64) +#include "avx512f-mask-type.h" + +void static +CALC (double *s1, double *s2, double *r) +{ + int i; + + for (i = 0; i < SIZE / 2; i++) + { + r[2 * i] = s1[2 * i]; + r[2 * i + 1] = s2[2 * i]; + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, d) s1, s2, res1, res2, res3; + MASK_TYPE mask = MASK_VALUE; + double res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * 123.2 + 32.6; + s2.a[i] = i + 2.5; + res2.a[i] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_unpacklo_pd) (s1.x, s2.x); + res2.x = INTRINSIC (_mask_unpacklo_pd) (res2.x, mask, s1.x, s2.x); + res3.x = INTRINSIC (_maskz_unpacklo_pd) (mask, s1.x, s2.x); + + CALC (s1.a, s2.a, res_ref); + + if (UNION_CHECK (AVX512F_LEN, d) (res1, res_ref)) + abort (); + + MASK_MERGE (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res2, res_ref)) + abort (); + + MASK_ZERO (d) (res_ref, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, d) (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vunpcklps-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vunpcklps-1.c new file mode 100644 index 00000000000..a007a050b05 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vunpcklps-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vunpcklps\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 3 } } */ +/* { dg-final { scan-assembler-times "vunpcklps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 1 } } */ +/* { dg-final { scan-assembler-times "vunpcklps\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 1 } } */ + +#include + +volatile __m512 x, y, z; + +void extern +avx512f_test (void) +{ + x = _mm512_unpacklo_ps (y, z); + x = _mm512_mask_unpacklo_ps (x, 2, y, z); + x = _mm512_maskz_unpacklo_ps (2, y, z); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vunpcklps-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vunpcklps-2.c new file mode 100644 index 00000000000..538a9fa80ec --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vunpcklps-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" + +void static +CALC (float *e, float *s1, float *s2) +{ + int i; + for (i = 0; i < SIZE / 4; i++) + { + e[4 * i] = s1[4 * i]; + e[4 * i + 1] = s2[4 * i]; + e[4 * i + 2] = s1[4 * i + 1]; + e[4 * i + 3] = s2[4 * i + 1]; + } +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN,) s1, s2, u1, u2, u3; + MASK_TYPE mask = MASK_VALUE; + float e[SIZE]; + int i; + for (i = 0; i < SIZE; i++) + { + s1.a[i] = i * 123.2 + 32.6; + s2.a[i] = i + 2.5; + u1.a[i]= DEFAULT_VALUE; + u2.a[i]= DEFAULT_VALUE; + u3.a[i]= DEFAULT_VALUE; + } + + u1.x = INTRINSIC (_unpacklo_ps) (s1.x, s2.x); + u2.x = INTRINSIC (_mask_unpacklo_ps) (u2.x, mask, s1.x, s2.x); + u3.x = INTRINSIC (_maskz_unpacklo_ps) (mask, s1.x, s2.x); + + CALC (e, s1.a, s2.a); + + if (UNION_CHECK (AVX512F_LEN,) (u1, e)) + abort (); + + MASK_MERGE () (e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (u2, e)) + abort (); + + MASK_ZERO () (e, mask, SIZE); + if (UNION_CHECK (AVX512F_LEN, ) (u3, e)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f_cond_move.c b/gcc/testsuite/gcc.target/i386/avx512f_cond_move.c new file mode 100644 index 00000000000..c06ee263174 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f_cond_move.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -mavx512f" } */ +/* { dg-final { scan-assembler "(vpblendmd|vmovdqa32)" } } */ + +unsigned int x[128]; +unsigned int y[128]; + +void +foo () +{ + int i; + for (i = 0; i < 128; i++) + x[i] = y[i] > 3 ? 2 : 0; +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-1.c b/gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-1.c new file mode 100644 index 00000000000..34a43537841 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-1.c @@ -0,0 +1,9 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f -ffixed-xmm0 -ffixed-xmm1 -ffixed-xmm2 -ffixed-xmm3 -ffixed-xmm4 -ffixed-xmm5 -ffixed-xmm6 -ffixed-xmm7 -ffixed-xmm8 -ffixed-xmm9 -ffixed-xmm10 -ffixed-xmm11 -ffixed-xmm12 -ffixed-xmm13 -ffixed-xmm14 -ffixed-xmm15" } */ + +volatile float a,b,c,d; + +void foo() +{ + __asm__ __volatile__( "vcmpss $1,%1, %2,%3;" : "=x"(c) : "x"(a),"x"(b),"x"(d) );/* { dg-error "inconsistent operand constraints" } */ +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-2.c b/gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-2.c new file mode 100644 index 00000000000..a0a268559a6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f_evex_reg_asm-2.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mavx512f -ffixed-xmm0 -ffixed-xmm1 -ffixed-xmm2 -ffixed-xmm3 -ffixed-xmm4 -ffixed-xmm5 -ffixed-xmm6 -ffixed-xmm7 -ffixed-xmm8 -ffixed-xmm9 -ffixed-xmm10 -ffixed-xmm11 -ffixed-xmm12 -ffixed-xmm13 -ffixed-xmm14 -ffixed-xmm15" } */ +/* { dg-final { scan-assembler "vaddss\[ \\t\]+\[^\n\]*%xmm(1\[6-9\]|2\[0-9\]|3\[0-1\])\[^\{\]" } } */ + +volatile float a, b, c, d; + +void foo() +{ + __asm__ __volatile__( "vaddss %1, %2, %3;" : "=v"(c) : "v"(a),"v"(b),"v"(d) ); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dps-1.c new file mode 100644 index 00000000000..a688beceb90 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dps-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512pf -O2" } */ +/* { dg-final { scan-assembler-times "vgatherpf0dps\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */ + +#include + +volatile __m512i idx; +volatile __mmask16 m16; +int *base; + +void extern +avx512pf_test (void) +{ + _mm512_mask_prefetch_i32gather_ps (idx, m16, base, 8, 0); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qps-1.c new file mode 100644 index 00000000000..9501adf74e9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qps-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512pf -O2" } */ +/* { dg-final { scan-assembler-times "vgatherpf0qps\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */ + +#include + +volatile __m512i idx; +volatile __mmask8 m8; +int *base; + +void extern +avx512pf_test (void) +{ + _mm512_mask_prefetch_i64gather_ps (idx, m8, base, 8, 0); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dps-1.c new file mode 100644 index 00000000000..6557afd1466 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dps-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512pf -O2" } */ +/* { dg-final { scan-assembler-times "vgatherpf1dps\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */ + +#include + +volatile __m512i idx; +volatile __mmask16 m16; +int *base; + +void extern +avx512pf_test (void) +{ + _mm512_mask_prefetch_i32gather_ps (idx, m16, base, 8, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qps-1.c new file mode 100644 index 00000000000..b0bdfa77b0b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qps-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512pf -O2" } */ +/* { dg-final { scan-assembler-times "vgatherpf1qps\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */ + +#include + +volatile __m512i idx; +volatile __mmask8 m8; +int *base; + +void extern +avx512pf_test (void) +{ + _mm512_mask_prefetch_i64gather_ps (idx, m8, base, 8, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c new file mode 100644 index 00000000000..7ad7544a928 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512pf -O2" } */ +/* { dg-final { scan-assembler-times "vscatterpf0dps\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vscatterpf0dps\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */ + +#include + +volatile __m512i idx; +volatile __mmask16 m16; +int *base; + +void extern +avx512pf_test (void) +{ + _mm512_prefetch_i32scatter_ps (base, idx, 8, 0); + _mm512_mask_prefetch_i32scatter_ps (base, m16, idx, 8, 0); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c new file mode 100644 index 00000000000..5d143c5f65e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512pf -O2" } */ +/* { dg-final { scan-assembler-times "vscatterpf0qps\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vscatterpf0qps\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */ + +#include + +volatile __m512i idx; +volatile __mmask8 m8; +int *base; + +void extern +avx512pf_test (void) +{ + _mm512_prefetch_i64scatter_ps (base, idx, 8, 0); + _mm512_mask_prefetch_i64scatter_ps (base, m8, idx, 8, 0); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c new file mode 100644 index 00000000000..b97c38db5d5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512pf -O2" } */ +/* { dg-final { scan-assembler-times "vscatterpf1dps\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vscatterpf1dps\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */ + +#include + +volatile __m512i idx; +volatile __mmask16 m16; +int *base; + +void extern +avx512pf_test (void) +{ + _mm512_prefetch_i32scatter_ps (base, idx, 8, 1); + _mm512_mask_prefetch_i32scatter_ps (base, m16, idx, 8, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c new file mode 100644 index 00000000000..6d6be11e451 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512pf -O2" } */ +/* { dg-final { scan-assembler-times "vscatterpf1qps\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 2 } } */ +/* { dg-final { scan-assembler-times "vscatterpf1qps\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */ + +#include + +volatile __m512i idx; +volatile __mmask8 m8; +int *base; + +void extern +avx512pf_test (void) +{ + _mm512_prefetch_i64scatter_ps (base, idx, 8, 1); + _mm512_mask_prefetch_i64scatter_ps (base, m8, idx, 8, 1); +} diff --git a/gcc/testsuite/gcc.target/i386/i386.exp b/gcc/testsuite/gcc.target/i386/i386.exp index c7c26766bc2..5d702922983 100644 --- a/gcc/testsuite/gcc.target/i386/i386.exp +++ b/gcc/testsuite/gcc.target/i386/i386.exp @@ -253,6 +253,46 @@ proc check_effective_target_rtm { } { } "-mrtm" ] } +# Return 1 if avx512f instructions can be compiled. +proc check_effective_target_avx512f { } { + return [check_no_compiler_messages avx512f object { + typedef long long __v8di __attribute__ ((__vector_size__ (64))); + __v8di + mm512_and_epi64 (__v8di __X, __v8di __Y) + { + __v8di __W; + return __builtin_ia32_pandq512_mask (__X, __Y, __W, -1); + } + } "-mavx512f" ] +} + +# Return 1 if avx512cd instructions can be compiled. +proc check_effective_target_avx512cd { } { + return [check_no_compiler_messages avx512cd_trans object { + typedef long long __v8di __attribute__ ((__vector_size__ (64))); + __v8di + _mm512_conflict_epi64 (__v8di __W, __v8di __A) + { + return (__v8di) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, + (__v8di) __W, + -1); + } + } "-Wno-psabi -mavx512cd" ] +} + +# Return 1 if avx512er instructions can be compiled. +proc check_effective_target_avx512er { } { + return [check_no_compiler_messages avx512er_trans object { + typedef float __v16sf __attribute__ ((__vector_size__ (64))); + __v16sf + mm512_exp2a23_ps (__v16sf __X) + { + __v16sf __W; + return __builtin_ia32_exp2ps_mask (__X, __W, -1, 4); + } + } "-Wno-psabi -mavx512er" ] +} + # If the linker used understands -M , pass it to clear hardware # capabilities set by the Sun assembler. # Try mapfile syntax v2 first which is the only way to clear hwcap_2 flags. diff --git a/gcc/testsuite/gcc.target/i386/m128-check.h b/gcc/testsuite/gcc.target/i386/m128-check.h index 4e2deecb172..6336717280f 100644 --- a/gcc/testsuite/gcc.target/i386/m128-check.h +++ b/gcc/testsuite/gcc.target/i386/m128-check.h @@ -164,3 +164,26 @@ union ieee754_double } bits __attribute__((packed)); }; #endif + +#define CHECK_FP_EXP(UINON_TYPE, VALUE_TYPE, ESP, FMT) \ +static int \ +__attribute__((noinline, unused)) \ +check_fp_##UINON_TYPE (UINON_TYPE u, const VALUE_TYPE *v) \ +{ \ + int i; \ + int err = 0; \ + \ + for (i = 0; i < ARRAY_SIZE (u.a); i++) \ + if (u.a[i] > (v[i] + (ESP)) || u.a[i] < (v[i] - (ESP))) \ + { \ + err++; \ + PRINTF ("%i: " FMT " != " FMT "\n", \ + i, v[i], u.a[i]); \ + } \ + return err; \ +} + +CHECK_FP_EXP (union128, float, ESP_FLOAT, "%f") +#ifdef __SSE2__ +CHECK_FP_EXP (union128d, double, ESP_DOUBLE, "%f") +#endif diff --git a/gcc/testsuite/gcc.target/i386/m512-check.h b/gcc/testsuite/gcc.target/i386/m512-check.h new file mode 100644 index 00000000000..3209039d6d0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/m512-check.h @@ -0,0 +1,73 @@ +#include +#include "m256-check.h" + +typedef union +{ + __m512i x; + char a[64]; +} union512i_b; + +typedef union +{ + __m512i x; + short a[32]; +} union512i_w; + +typedef union +{ + __m512i x; + int a[16]; +} union512i_d; + +typedef union +{ + __m512i x; + long long a[8]; +} union512i_q; + +typedef union +{ + __m512 x; + float a[16]; +} union512; + +typedef union +{ + __m512d x; + double a[8]; +} union512d; + +CHECK_EXP (union512i_b, char, "%d") +CHECK_EXP (union512i_w, short, "%d") +CHECK_EXP (union512i_d, int, "0x%x") +CHECK_EXP (union512i_q, long long, "0x%llx") +CHECK_EXP (union512, float, "%f") +CHECK_EXP (union512d, double, "%f") + +CHECK_FP_EXP (union512, float, ESP_FLOAT, "%f") +CHECK_FP_EXP (union512d, double, ESP_DOUBLE, "%f") + +#define CHECK_ROUGH_EXP(UINON_TYPE, VALUE_TYPE, FMT) \ +static int \ +__attribute__((noinline, unused)) \ +check_rough_##UINON_TYPE (UINON_TYPE u, const VALUE_TYPE *v, \ + VALUE_TYPE eps) \ +{ \ + int i; \ + int err = 0; \ + \ + for (i = 0; i < ARRAY_SIZE (u.a); i++) \ + { \ + VALUE_TYPE rel_err = (u.a[i] - v[i]) / v[i]; \ + if (((rel_err < 0) ? -rel_err : rel_err) > eps) \ + { \ + err++; \ + PRINTF ("%i: " FMT " != " FMT "\n", \ + i, v[i], u.a[i]); \ + } \ + } \ + return err; \ +} + +CHECK_ROUGH_EXP (union512, float, "%f") +CHECK_ROUGH_EXP (union512d, double, "%f") diff --git a/gcc/testsuite/gcc.target/i386/sse-12.c b/gcc/testsuite/gcc.target/i386/sse-12.c index c1c5745ef0b..aa362428879 100644 --- a/gcc/testsuite/gcc.target/i386/sse-12.c +++ b/gcc/testsuite/gcc.target/i386/sse-12.c @@ -3,7 +3,7 @@ popcntintrin.h and mm_malloc.h are usable with -O -std=c89 -pedantic-errors. */ /* { dg-do compile } */ -/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt" } */ +/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f" } */ #include diff --git a/gcc/testsuite/gcc.target/i386/sse-13.c b/gcc/testsuite/gcc.target/i386/sse-13.c index 1d777d12e4f..73aa472f1f1 100644 --- a/gcc/testsuite/gcc.target/i386/sse-13.c +++ b/gcc/testsuite/gcc.target/i386/sse-13.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt" } */ +/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f" } */ #include @@ -55,6 +55,20 @@ #define __builtin_ia32_vcvtps2ph(A, I) __builtin_ia32_vcvtps2ph(A, 1) #define __builtin_ia32_vcvtps2ph256(A, I) __builtin_ia32_vcvtps2ph256(A, 1) +/* avx512pfintrin.h */ +#define __builtin_ia32_gatherpfdps(A, B, C, D, E) __builtin_ia32_gatherpfdps (A, B, C, 1, 1) +#define __builtin_ia32_gatherpfqps(A, B, C, D, E) __builtin_ia32_gatherpfqps (A, B, C, 1, 1) +#define __builtin_ia32_scatterpfdps(A, B, C, D, E) __builtin_ia32_scatterpfdps (A, B, C, 1, 1) +#define __builtin_ia32_scatterpfqps(A, B, C, D, E) __builtin_ia32_scatterpfqps (A, B, C, 1, 1) + +/* avx512erintrin.h */ +#define __builtin_ia32_exp2pd_mask(A, B, C, D) __builtin_ia32_exp2pd_mask (A, B, C, 1) +#define __builtin_ia32_exp2ps_mask(A, B, C, D) __builtin_ia32_exp2ps_mask (A, B, C, 1) +#define __builtin_ia32_rcp28pd_mask(A, B, C, D) __builtin_ia32_rcp28pd_mask (A, B, C, 1) +#define __builtin_ia32_rcp28ps_mask(A, B, C, D) __builtin_ia32_rcp28ps_mask (A, B, C, 1) +#define __builtin_ia32_rsqrt28pd_mask(A, B, C, D) __builtin_ia32_rsqrt28pd_mask (A, B, C, 1) +#define __builtin_ia32_rsqrt28ps_mask(A, B, C, D) __builtin_ia32_rsqrt28ps_mask (A, B, C, 1) + /* wmmintrin.h */ #define __builtin_ia32_aeskeygenassist128(X, C) __builtin_ia32_aeskeygenassist128(X, 1) #define __builtin_ia32_pclmulqdq128(X, Y, I) __builtin_ia32_pclmulqdq128(X, Y, 1) @@ -182,3 +196,186 @@ /* rtmintrin.h */ #define __builtin_ia32_xabort (N) __builtin_ia32_xabort (1) + +/* avx512fintrin.h */ +#define __builtin_ia32_addpd512_mask(A, B, C, D, E) __builtin_ia32_addpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_addps512_mask(A, B, C, D, E) __builtin_ia32_addps512_mask(A, B, C, D, 1) +#define __builtin_ia32_addsd_mask(A, B, C, D, E) __builtin_ia32_addsd_mask(A, B, C, D, 1) +#define __builtin_ia32_addss_mask(A, B, C, D, E) __builtin_ia32_addss_mask(A, B, C, D, 1) +#define __builtin_ia32_alignd512_mask(A, B, F, D, E) __builtin_ia32_alignd512_mask(A, B, 1, D, E) +#define __builtin_ia32_alignq512_mask(A, B, F, D, E) __builtin_ia32_alignq512_mask(A, B, 1, D, E) +#define __builtin_ia32_cmpd512_mask(A, B, E, D) __builtin_ia32_cmpd512_mask(A, B, 1, D) +#define __builtin_ia32_cmppd512_mask(A, B, F, D, E) __builtin_ia32_cmppd512_mask(A, B, 1, D, 5) +#define __builtin_ia32_cmpps512_mask(A, B, F, D, E) __builtin_ia32_cmpps512_mask(A, B, 1, D, 5) +#define __builtin_ia32_cmpq512_mask(A, B, E, D) __builtin_ia32_cmpq512_mask(A, B, 1, D) +#define __builtin_ia32_cmpsd_mask(A, B, F, D, E) __builtin_ia32_cmpsd_mask(A, B, 1, D, 5) +#define __builtin_ia32_cmpss_mask(A, B, F, D, E) __builtin_ia32_cmpss_mask(A, B, 1, D, 5) +#define __builtin_ia32_cvtdq2ps512_mask(A, B, C, D) __builtin_ia32_cvtdq2ps512_mask(A, B, C, 1) +#define __builtin_ia32_cvtpd2dq512_mask(A, B, C, D) __builtin_ia32_cvtpd2dq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtpd2ps512_mask(A, B, C, D) __builtin_ia32_cvtpd2ps512_mask(A, B, C, 1) +#define __builtin_ia32_cvtpd2udq512_mask(A, B, C, D) __builtin_ia32_cvtpd2udq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtps2dq512_mask(A, B, C, D) __builtin_ia32_cvtps2dq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtps2pd512_mask(A, B, C, D) __builtin_ia32_cvtps2pd512_mask(A, B, C, 5) +#define __builtin_ia32_cvtps2udq512_mask(A, B, C, D) __builtin_ia32_cvtps2udq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtsd2ss_mask(A, B, C, D, E) __builtin_ia32_cvtsd2ss_mask(A, B, C, D, 1) +#define __builtin_ia32_cvtsi2sd64(A, B, C) __builtin_ia32_cvtsi2sd64(A, B, 1) +#define __builtin_ia32_cvtsi2ss32(A, B, C) __builtin_ia32_cvtsi2ss32(A, B, 1) +#define __builtin_ia32_cvtsi2ss64(A, B, C) __builtin_ia32_cvtsi2ss64(A, B, 1) +#define __builtin_ia32_cvtss2sd_mask(A, B, C, D, E) __builtin_ia32_cvtss2sd_mask(A, B, C, D, 5) +#define __builtin_ia32_cvttpd2dq512_mask(A, B, C, D) __builtin_ia32_cvttpd2dq512_mask(A, B, C, 5) +#define __builtin_ia32_cvttpd2udq512_mask(A, B, C, D) __builtin_ia32_cvttpd2udq512_mask(A, B, C, 5) +#define __builtin_ia32_cvttps2dq512_mask(A, B, C, D) __builtin_ia32_cvttps2dq512_mask(A, B, C, 5) +#define __builtin_ia32_cvttps2udq512_mask(A, B, C, D) __builtin_ia32_cvttps2udq512_mask(A, B, C, 5) +#define __builtin_ia32_cvtudq2ps512_mask(A, B, C, D) __builtin_ia32_cvtudq2ps512_mask(A, B, C, 1) +#define __builtin_ia32_cvtusi2sd64(A, B, C) __builtin_ia32_cvtusi2sd64(A, B, 1) +#define __builtin_ia32_cvtusi2ss32(A, B, C) __builtin_ia32_cvtusi2ss32(A, B, 1) +#define __builtin_ia32_cvtusi2ss64(A, B, C) __builtin_ia32_cvtusi2ss64(A, B, 1) +#define __builtin_ia32_divpd512_mask(A, B, C, D, E) __builtin_ia32_divpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_divps512_mask(A, B, C, D, E) __builtin_ia32_divps512_mask(A, B, C, D, 1) +#define __builtin_ia32_divsd_mask(A, B, C, D, E) __builtin_ia32_divsd_mask(A, B, C, D, 1) +#define __builtin_ia32_divss_mask(A, B, C, D, E) __builtin_ia32_divss_mask(A, B, C, D, 1) +#define __builtin_ia32_extractf32x4_mask(A, E, C, D) __builtin_ia32_extractf32x4_mask(A, 1, C, D) +#define __builtin_ia32_extractf64x4_mask(A, E, C, D) __builtin_ia32_extractf64x4_mask(A, 1, C, D) +#define __builtin_ia32_extracti32x4_mask(A, E, C, D) __builtin_ia32_extracti32x4_mask(A, 1, C, D) +#define __builtin_ia32_extracti64x4_mask(A, E, C, D) __builtin_ia32_extracti64x4_mask(A, 1, C, D) +#define __builtin_ia32_fixupimmpd512_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmpd512_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmpd512_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmpd512_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmps512_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmps512_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmps512_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmps512_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmsd_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmsd_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmsd_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmsd_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmss_mask(A, B, C, I, E, F) __builtin_ia32_fixupimmss_mask(A, B, C, 1, E, 5) +#define __builtin_ia32_fixupimmss_maskz(A, B, C, I, E, F) __builtin_ia32_fixupimmss_maskz(A, B, C, 1, E, 5) +#define __builtin_ia32_gatherdiv8df(A, B, C, D, F) __builtin_ia32_gatherdiv8df(A, B, C, D, 1) +#define __builtin_ia32_gatherdiv8di(A, B, C, D, F) __builtin_ia32_gatherdiv8di(A, B, C, D, 1) +#define __builtin_ia32_gatherdiv16sf(A, B, C, D, F) __builtin_ia32_gatherdiv16sf(A, B, C, D, 1) +#define __builtin_ia32_gatherdiv16si(A, B, C, D, F) __builtin_ia32_gatherdiv16si(A, B, C, D, 1) +#define __builtin_ia32_gathersiv16sf(A, B, C, D, F) __builtin_ia32_gathersiv16sf(A, B, C, D, 1) +#define __builtin_ia32_gathersiv16si(A, B, C, D, F) __builtin_ia32_gathersiv16si(A, B, C, D, 1) +#define __builtin_ia32_gathersiv8df(A, B, C, D, F) __builtin_ia32_gathersiv8df(A, B, C, D, 1) +#define __builtin_ia32_gathersiv8di(A, B, C, D, F) __builtin_ia32_gathersiv8di(A, B, C, D, 1) +#define __builtin_ia32_getexppd512_mask(A, B, C, D) __builtin_ia32_getexppd512_mask(A, B, C, 5) +#define __builtin_ia32_getexpps512_mask(A, B, C, D) __builtin_ia32_getexpps512_mask(A, B, C, 5) +#define __builtin_ia32_getexpsd128_mask(A, B, C, D, E) __builtin_ia32_getexpsd128_mask(A, B, C, D, 5) +#define __builtin_ia32_getexpss128_mask(A, B, C, D, E) __builtin_ia32_getexpss128_mask(A, B, C, D, 5) +#define __builtin_ia32_getmantpd512_mask(A, F, C, D, E) __builtin_ia32_getmantpd512_mask(A, 1, C, D, 5) +#define __builtin_ia32_getmantps512_mask(A, F, C, D, E) __builtin_ia32_getmantps512_mask(A, 1, C, D, 5) +#define __builtin_ia32_getmantsd_mask(A, B, I, D, E, F) __builtin_ia32_getmantsd_mask(A, B, 1, D, E, 5) +#define __builtin_ia32_getmantss_mask(A, B, I, D, E, F) __builtin_ia32_getmantss_mask(A, B, 1, D, E, 5) +#define __builtin_ia32_insertf32x4_mask(A, B, F, D, E) __builtin_ia32_insertf32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_insertf64x4_mask(A, B, F, D, E) __builtin_ia32_insertf64x4_mask(A, B, 1, D, E) +#define __builtin_ia32_inserti32x4_mask(A, B, F, D, E) __builtin_ia32_inserti32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_inserti64x4_mask(A, B, F, D, E) __builtin_ia32_inserti64x4_mask(A, B, 1, D, E) +#define __builtin_ia32_maxpd512_mask(A, B, C, D, E) __builtin_ia32_maxpd512_mask(A, B, C, D, 5) +#define __builtin_ia32_maxps512_mask(A, B, C, D, E) __builtin_ia32_maxps512_mask(A, B, C, D, 5) +#define __builtin_ia32_maxsd_mask(A, B, C, D, E) __builtin_ia32_maxsd_mask(A, B, C, D, 5) +#define __builtin_ia32_maxss_mask(A, B, C, D, E) __builtin_ia32_maxss_mask(A, B, C, D, 5) +#define __builtin_ia32_minpd512_mask(A, B, C, D, E) __builtin_ia32_minpd512_mask(A, B, C, D, 5) +#define __builtin_ia32_minps512_mask(A, B, C, D, E) __builtin_ia32_minps512_mask(A, B, C, D, 5) +#define __builtin_ia32_minsd_mask(A, B, C, D, E) __builtin_ia32_minsd_mask(A, B, C, D, 5) +#define __builtin_ia32_minss_mask(A, B, C, D, E) __builtin_ia32_minss_mask(A, B, C, D, 5) +#define __builtin_ia32_mulpd512_mask(A, B, C, D, E) __builtin_ia32_mulpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_mulps512_mask(A, B, C, D, E) __builtin_ia32_mulps512_mask(A, B, C, D, 1) +#define __builtin_ia32_mulsd_mask(A, B, C, D, E) __builtin_ia32_mulsd_mask(A, B, C, D, 1) +#define __builtin_ia32_mulss_mask(A, B, C, D, E) __builtin_ia32_mulss_mask(A, B, C, D, 1) +#define __builtin_ia32_permdf512_mask(A, E, C, D) __builtin_ia32_permdf512_mask(A, 1, C, D) +#define __builtin_ia32_permdi512_mask(A, E, C, D) __builtin_ia32_permdi512_mask(A, 1, C, D) +#define __builtin_ia32_prold512_mask(A, E, C, D) __builtin_ia32_prold512_mask(A, 1, C, D) +#define __builtin_ia32_prolq512_mask(A, E, C, D) __builtin_ia32_prolq512_mask(A, 1, C, D) +#define __builtin_ia32_prord512_mask(A, E, C, D) __builtin_ia32_prord512_mask(A, 1, C, D) +#define __builtin_ia32_prorq512_mask(A, E, C, D) __builtin_ia32_prorq512_mask(A, 1, C, D) +#define __builtin_ia32_pshufd512_mask(A, E, C, D) __builtin_ia32_pshufd512_mask(A, 1, C, D) +#define __builtin_ia32_pslldi512_mask(A, E, C, D) __builtin_ia32_pslldi512_mask(A, 1, C, D) +#define __builtin_ia32_psllqi512_mask(A, E, C, D) __builtin_ia32_psllqi512_mask(A, 1, C, D) +#define __builtin_ia32_psradi512_mask(A, E, C, D) __builtin_ia32_psradi512_mask(A, 1, C, D) +#define __builtin_ia32_psraqi512_mask(A, E, C, D) __builtin_ia32_psraqi512_mask(A, 1, C, D) +#define __builtin_ia32_psrldi512_mask(A, E, C, D) __builtin_ia32_psrldi512_mask(A, 1, C, D) +#define __builtin_ia32_psrlqi512_mask(A, E, C, D) __builtin_ia32_psrlqi512_mask(A, 1, C, D) +#define __builtin_ia32_pternlogd512_mask(A, B, C, F, E) __builtin_ia32_pternlogd512_mask(A, B, C, 1, E) +#define __builtin_ia32_pternlogd512_maskz(A, B, C, F, E) __builtin_ia32_pternlogd512_maskz(A, B, C, 1, E) +#define __builtin_ia32_pternlogq512_mask(A, B, C, F, E) __builtin_ia32_pternlogq512_mask(A, B, C, 1, E) +#define __builtin_ia32_pternlogq512_maskz(A, B, C, F, E) __builtin_ia32_pternlogq512_maskz(A, B, C, 1, E) +#define __builtin_ia32_rndscalepd_mask(A, F, C, D, E) __builtin_ia32_rndscalepd_mask(A, 1, C, D, 5) +#define __builtin_ia32_rndscaleps_mask(A, F, C, D, E) __builtin_ia32_rndscaleps_mask(A, 1, C, D, 5) +#define __builtin_ia32_rndscalesd_mask(A, B, I, D, E, F) __builtin_ia32_rndscalesd_mask(A, B, 1, D, E, 5) +#define __builtin_ia32_rndscaless_mask(A, B, I, D, E, F) __builtin_ia32_rndscaless_mask(A, B, 1, D, E, 5) +#define __builtin_ia32_scalefpd512_mask(A, B, C, D, E) __builtin_ia32_scalefpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_scalefps512_mask(A, B, C, D, E) __builtin_ia32_scalefps512_mask(A, B, C, D, 1) +#define __builtin_ia32_scalefsd_mask(A, B, C, D, E) __builtin_ia32_scalefsd_mask(A, B, C, D, 1) +#define __builtin_ia32_scalefss_mask(A, B, C, D, E) __builtin_ia32_scalefss_mask(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv8df(A, B, C, D, F) __builtin_ia32_scatterdiv8df(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv8di(A, B, C, D, F) __builtin_ia32_scatterdiv8di(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv16sf(A, B, C, D, F) __builtin_ia32_scatterdiv16sf(A, B, C, D, 1) +#define __builtin_ia32_scatterdiv16si(A, B, C, D, F) __builtin_ia32_scatterdiv16si(A, B, C, D, 1) +#define __builtin_ia32_scattersiv16sf(A, B, C, D, F) __builtin_ia32_scattersiv16sf(A, B, C, D, 1) +#define __builtin_ia32_scattersiv16si(A, B, C, D, F) __builtin_ia32_scattersiv16si(A, B, C, D, 1) +#define __builtin_ia32_scattersiv8df(A, B, C, D, F) __builtin_ia32_scattersiv8df(A, B, C, D, 1) +#define __builtin_ia32_scattersiv8di(A, B, C, D, F) __builtin_ia32_scattersiv8di(A, B, C, D, 1) +#define __builtin_ia32_shuf_f32x4_mask(A, B, F, D, E) __builtin_ia32_shuf_f32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_shuf_f64x2_mask(A, B, F, D, E) __builtin_ia32_shuf_f64x2_mask(A, B, 1, D, E) +#define __builtin_ia32_shuf_i32x4_mask(A, B, F, D, E) __builtin_ia32_shuf_i32x4_mask(A, B, 1, D, E) +#define __builtin_ia32_shuf_i64x2_mask(A, B, F, D, E) __builtin_ia32_shuf_i64x2_mask(A, B, 1, D, E) +#define __builtin_ia32_shufpd512_mask(A, B, F, D, E) __builtin_ia32_shufpd512_mask(A, B, 1, D, E) +#define __builtin_ia32_shufps512_mask(A, B, F, D, E) __builtin_ia32_shufps512_mask(A, B, 1, D, E) +#define __builtin_ia32_sqrtpd512_mask(A, B, C, D) __builtin_ia32_sqrtpd512_mask(A, B, C, 1) +#define __builtin_ia32_sqrtps512_mask(A, B, C, D) __builtin_ia32_sqrtps512_mask(A, B, C, 1) +#define __builtin_ia32_sqrtsd_mask(A, B, C, D, E) __builtin_ia32_sqrtsd_mask(A, B, C, D, 1) +#define __builtin_ia32_sqrtss_mask(A, B, C, D, E) __builtin_ia32_sqrtss_mask(A, B, C, D, 1) +#define __builtin_ia32_subpd512_mask(A, B, C, D, E) __builtin_ia32_subpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_subps512_mask(A, B, C, D, E) __builtin_ia32_subps512_mask(A, B, C, D, 1) +#define __builtin_ia32_subsd_mask(A, B, C, D, E) __builtin_ia32_subsd_mask(A, B, C, D, 1) +#define __builtin_ia32_subss_mask(A, B, C, D, E) __builtin_ia32_subss_mask(A, B, C, D, 1) +#define __builtin_ia32_ucmpd512_mask(A, B, E, D) __builtin_ia32_ucmpd512_mask(A, B, 1, D) +#define __builtin_ia32_ucmpq512_mask(A, B, E, D) __builtin_ia32_ucmpq512_mask(A, B, 1, D) +#define __builtin_ia32_vcomisd(A, B, C, D) __builtin_ia32_vcomisd(A, B, 1, 5) +#define __builtin_ia32_vcomiss(A, B, C, D) __builtin_ia32_vcomiss(A, B, 1, 5) +#define __builtin_ia32_vcvtph2ps512_mask(A, B, C, D) __builtin_ia32_vcvtph2ps512_mask(A, B, C, 5) +#define __builtin_ia32_vcvtps2ph512_mask(A, E, C, D) __builtin_ia32_vcvtps2ph512_mask(A, 1, C, D) +#define __builtin_ia32_vcvtsd2si32(A, B) __builtin_ia32_vcvtsd2si32(A, 1) +#define __builtin_ia32_vcvtsd2si64(A, B) __builtin_ia32_vcvtsd2si64(A, 1) +#define __builtin_ia32_vcvtsd2usi32(A, B) __builtin_ia32_vcvtsd2usi32(A, 1) +#define __builtin_ia32_vcvtsd2usi64(A, B) __builtin_ia32_vcvtsd2usi64(A, 1) +#define __builtin_ia32_vcvtss2si32(A, B) __builtin_ia32_vcvtss2si32(A, 1) +#define __builtin_ia32_vcvtss2si64(A, B) __builtin_ia32_vcvtss2si64(A, 1) +#define __builtin_ia32_vcvtss2usi32(A, B) __builtin_ia32_vcvtss2usi32(A, 1) +#define __builtin_ia32_vcvtss2usi64(A, B) __builtin_ia32_vcvtss2usi64(A, 1) +#define __builtin_ia32_vcvttsd2si32(A, B) __builtin_ia32_vcvttsd2si32(A, 5) +#define __builtin_ia32_vcvttsd2si64(A, B) __builtin_ia32_vcvttsd2si64(A, 5) +#define __builtin_ia32_vcvttsd2usi32(A, B) __builtin_ia32_vcvttsd2usi32(A, 5) +#define __builtin_ia32_vcvttsd2usi64(A, B) __builtin_ia32_vcvttsd2usi64(A, 5) +#define __builtin_ia32_vcvttss2si32(A, B) __builtin_ia32_vcvttss2si32(A, 5) +#define __builtin_ia32_vcvttss2si64(A, B) __builtin_ia32_vcvttss2si64(A, 5) +#define __builtin_ia32_vcvttss2usi32(A, B) __builtin_ia32_vcvttss2usi32(A, 5) +#define __builtin_ia32_vcvttss2usi64(A, B) __builtin_ia32_vcvttss2usi64(A, 5) +#define __builtin_ia32_vfmaddpd512_mask(A, B, C, D, E) __builtin_ia32_vfmaddpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddpd512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddpd512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddps512_mask(A, B, C, D, E) __builtin_ia32_vfmaddps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddps512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddps512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddps512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsd3_mask(A, B, C, D, E) __builtin_ia32_vfmaddsd3_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsd3_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsd3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsd3_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsd3_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddss3_mask(A, B, C, D, E) __builtin_ia32_vfmaddss3_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddss3_mask3(A, B, C, D, E) __builtin_ia32_vfmaddss3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddss3_maskz(A, B, C, D, E) __builtin_ia32_vfmaddss3_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubpd512_mask(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubpd512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubps512_mask(A, B, C, D, E) __builtin_ia32_vfmaddsubps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubps512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsubps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsubps512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsubps512_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmsubaddpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubaddpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubaddps512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubaddps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubps512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubsd3_mask3(A, B, C, D, E) __builtin_ia32_vfmsubsd3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfmsubss3_mask3(A, B, C, D, E) __builtin_ia32_vfmsubss3_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfnmaddpd512_mask(A, B, C, D, E) __builtin_ia32_vfnmaddpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmaddps512_mask(A, B, C, D, E) __builtin_ia32_vfnmaddps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubpd512_mask(A, B, C, D, E) __builtin_ia32_vfnmsubpd512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfnmsubpd512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubps512_mask(A, B, C, D, E) __builtin_ia32_vfnmsubps512_mask(A, B, C, D, 1) +#define __builtin_ia32_vfnmsubps512_mask3(A, B, C, D, E) __builtin_ia32_vfnmsubps512_mask3(A, B, C, D, 1) +#define __builtin_ia32_vpermilpd512_mask(A, E, C, D) __builtin_ia32_vpermilpd512_mask(A, 1, C, D) +#define __builtin_ia32_vpermilps512_mask(A, E, C, D) __builtin_ia32_vpermilps512_mask(A, 1, C, D) diff --git a/gcc/testsuite/gcc.target/i386/sse-14.c b/gcc/testsuite/gcc.target/i386/sse-14.c index 331be0e1987..623b56b4655 100644 --- a/gcc/testsuite/gcc.target/i386/sse-14.c +++ b/gcc/testsuite/gcc.target/i386/sse-14.c @@ -1,6 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt" } */ - +/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512pf -mavx512cd" } */ #include /* Test that the intrinsics compile without optimization. All of them are @@ -31,6 +30,10 @@ type _CONCAT(_,func) (op1_type A, int const I, int const L) \ { return func (A, imm1, imm2); } +#define test_1y(func, type, op1_type, imm1, imm2, imm3) \ + type _CONCAT(_,func) (op1_type A, int const I, int const L, int const R)\ + { return func (A, imm1, imm2, imm3); } + #define test_2(func, type, op1_type, op2_type, imm) \ type _CONCAT(_,func) (op1_type A, op2_type B, int const I) \ { return func (A, B, imm); } @@ -39,16 +42,60 @@ type _CONCAT(_,func) (op1_type A, op2_type B, int const I, int const L) \ { return func (A, B, imm1, imm2); } +#define test_2y(func, type, op1_type, op2_type, imm1, imm2, imm3) \ + type _CONCAT(_,func) (op1_type A, op2_type B, int const I, int const L,\ + int const R) \ + { return func (A, B, imm1, imm2, imm3); } + +#define test_2vx(func, op1_type, op2_type, imm1, imm2) \ + _CONCAT(_,func) (op1_type A, op2_type B, int const I, int const L) \ + { func (A, B, imm1, imm2); } + #define test_3(func, type, op1_type, op2_type, op3_type, imm) \ type _CONCAT(_,func) (op1_type A, op2_type B, \ op3_type C, int const I) \ { return func (A, B, C, imm); } +#define test_3x(func, type, op1_type, op2_type, op3_type, imm1, imm2) \ + type _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, int const I, int const L) \ + { return func (A, B, C, imm1, imm2); } + +#define test_3y(func, type, op1_type, op2_type, op3_type, imm1, imm2, imm3) \ + type _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, int const I, int const L, int const R) \ + { return func (A, B, C, imm1, imm2, imm3); } + +#define test_3v(func, op1_type, op2_type, op3_type, imm) \ + _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, int const I) \ + { func (A, B, C, imm); } + +#define test_3vx(func, op1_type, op2_type, op3_type, imm1, imm2) \ + _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, int const I, int const L) \ + { func (A, B, C, imm1, imm2); } + #define test_4(func, type, op1_type, op2_type, op3_type, op4_type, imm) \ type _CONCAT(_,func) (op1_type A, op2_type B, \ op3_type C, op4_type D, int const I) \ { return func (A, B, C, D, imm); } +#define test_4x(func, type, op1_type, op2_type, op3_type, op4_type, imm1, imm2) \ + type _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, op4_type D, int const I, int const L) \ + { return func (A, B, C, D, imm1, imm2); } + +#define test_4y(func, type, op1_type, op2_type, op3_type, op4_type, imm1, imm2, imm3) \ + type _CONCAT(_,func) (op1_type A, op2_type B, op3_type C, \ + op4_type D, int const I, int const L, int const R) \ + { return func (A, B, C, D, imm1, imm2, imm3); } + +#define test_4v(func, op1_type, op2_type, op3_type, op4_type, imm) \ + _CONCAT(_,func) (op1_type A, op2_type B, \ + op3_type C, op4_type D, int const I) \ + { func (A, B, C, D, imm); } + /* Following intrinsics require immediate arguments. They are defined as macros for non-optimized compilations. */ @@ -100,6 +147,355 @@ test_1 (_cvtss_sh, unsigned short, float, 1) test_1 (_mm_cvtps_ph, __m128i, __m128, 1) test_1 (_mm256_cvtps_ph, __m128i, __m256, 1) test_0 (_xabort, void, 1) +test_1 (_mm512_cvt_roundepi32_ps, __m512, __m512i, 1) +test_1 (_mm512_cvt_roundepu32_ps, __m512, __m512i, 1) +test_1 (_mm512_cvt_roundpd_epi32, __m256i, __m512d, 1) +test_1 (_mm512_cvt_roundpd_epu32, __m256i, __m512d, 1) +test_1 (_mm512_cvt_roundpd_ps, __m256, __m512d, 1) +test_1 (_mm512_cvt_roundph_ps, __m512, __m256i, 5) +test_1 (_mm512_cvt_roundps_epi32, __m512i, __m512, 1) +test_1 (_mm512_cvt_roundps_epu32, __m512i, __m512, 1) +test_1 (_mm512_cvt_roundps_pd, __m512d, __m256, 5) +test_1 (_mm512_cvtps_ph, __m256i, __m512, 1) +test_1 (_mm512_cvtt_roundpd_epi32, __m256i, __m512d, 5) +test_1 (_mm512_cvtt_roundpd_epu32, __m256i, __m512d, 5) +test_1 (_mm512_cvtt_roundps_epi32, __m512i, __m512, 5) +test_1 (_mm512_cvtt_roundps_epu32, __m512i, __m512, 5) +test_1 (_mm512_extractf32x4_ps, __m128, __m512, 1) +test_1 (_mm512_extractf64x4_pd, __m256d, __m512d, 1) +test_1 (_mm512_extracti32x4_epi32, __m128i, __m512i, 1) +test_1 (_mm512_extracti64x4_epi64, __m256i, __m512i, 1) +test_1 (_mm512_getexp_round_pd, __m512d, __m512d, 5) +test_1 (_mm512_getexp_round_ps, __m512, __m512, 5) +test_1y (_mm512_getmant_round_pd, __m512d, __m512d, 1, 1, 5) +test_1y (_mm512_getmant_round_ps, __m512, __m512, 1, 1, 5) +test_1 (_mm512_permute_pd, __m512d, __m512d, 1) +test_1 (_mm512_permute_ps, __m512, __m512, 1) +test_1 (_mm512_permutex_epi64, __m512i, __m512i, 1) +test_1 (_mm512_permutex_pd, __m512d, __m512d, 1) +test_1 (_mm512_rol_epi32, __m512i, __m512i, 1) +test_1 (_mm512_rol_epi64, __m512i, __m512i, 1) +test_1 (_mm512_ror_epi32, __m512i, __m512i, 1) +test_1 (_mm512_ror_epi64, __m512i, __m512i, 1) +test_1 (_mm512_shuffle_epi32, __m512i, __m512i, 1) +test_1 (_mm512_slli_epi32, __m512i, __m512i, 1) +test_1 (_mm512_slli_epi64, __m512i, __m512i, 1) +test_1 (_mm512_sqrt_round_pd, __m512d, __m512d, 1) +test_1 (_mm512_sqrt_round_ps, __m512, __m512, 1) +test_1 (_mm512_srai_epi32, __m512i, __m512i, 1) +test_1 (_mm512_srai_epi64, __m512i, __m512i, 1) +test_1 (_mm512_srli_epi32, __m512i, __m512i, 1) +test_1 (_mm512_srli_epi64, __m512i, __m512i, 1) +test_1 (_mm_cvt_roundsd_i32, int, __m128d, 1) +test_1 (_mm_cvt_roundsd_u32, unsigned, __m128d, 1) +test_1 (_mm_cvt_roundss_i32, int, __m128, 1) +test_1 (_mm_cvt_roundss_u32, unsigned, __m128, 1) +test_1 (_mm_cvtt_roundsd_i32, int, __m128d, 5) +test_1 (_mm_cvtt_roundsd_u32, unsigned, __m128d, 5) +test_1 (_mm_cvtt_roundss_i32, int, __m128, 5) +test_1 (_mm_cvtt_roundss_u32, unsigned, __m128, 5) +test_1x (_mm512_getmant_pd, __m512d, __m512d, 1, 1) +test_1x (_mm512_getmant_ps, __m512, __m512, 1, 1) +test_1x (_mm512_roundscale_round_pd, __m512d, __m512d, 1, 5) +test_1x (_mm512_roundscale_round_ps, __m512, __m512, 1, 5) +test_2 (_mm512_add_round_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_add_round_ps, __m512, __m512, __m512, 1) +test_2 (_mm512_alignr_epi32, __m512i, __m512i, __m512i, 1) +test_2 (_mm512_alignr_epi64, __m512i, __m512i, __m512i, 1) +test_2 (_mm512_cmp_epi32_mask, __mmask16, __m512i, __m512i, 1) +test_2 (_mm512_cmp_epi64_mask, __mmask8, __m512i, __m512i, 1) +test_2 (_mm512_cmp_epu32_mask, __mmask16, __m512i, __m512i, 1) +test_2 (_mm512_cmp_epu64_mask, __mmask8, __m512i, __m512i, 1) +test_2 (_mm512_cmp_pd_mask, __mmask8, __m512d, __m512d, 1) +test_2 (_mm512_cmp_ps_mask, __mmask16, __m512, __m512, 1) +test_2 (_mm512_div_round_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_div_round_ps, __m512, __m512, __m512, 1) +test_2 (_mm512_i32gather_epi32, __m512i, __m512i, void const *, 1) +test_2 (_mm512_i32gather_epi64, __m512i, __m256i, void const *, 1) +test_2 (_mm512_i32gather_pd, __m512d, __m256i, void const *, 1) +test_2 (_mm512_i32gather_ps, __m512, __m512i, void const *, 1) +test_2 (_mm512_i64gather_epi32, __m256i, __m512i, void const *, 1) +test_2 (_mm512_i64gather_epi64, __m512i, __m512i, void const *, 1) +test_2 (_mm512_i64gather_pd, __m512d, __m512i, void const *, 1) +test_2 (_mm512_i64gather_ps, __m256, __m512i, void const *, 1) +test_2 (_mm512_insertf32x4, __m512, __m512, __m128, 1) +test_2 (_mm512_insertf64x4, __m512d, __m512d, __m256d, 1) +test_2 (_mm512_inserti32x4, __m512i, __m512i, __m128i, 1) +test_2 (_mm512_inserti64x4, __m512i, __m512i, __m256i, 1) +test_2 (_mm512_maskz_cvt_roundepi32_ps, __m512, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_cvt_roundepu32_ps, __m512, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_cvt_roundpd_epi32, __m256i, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_cvt_roundpd_epu32, __m256i, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_cvt_roundpd_ps, __m256, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_cvt_roundph_ps, __m512, __mmask16, __m256i, 5) +test_2 (_mm512_maskz_cvt_roundps_epi32, __m512i, __mmask16, __m512, 1) +test_2 (_mm512_maskz_cvt_roundps_epu32, __m512i, __mmask16, __m512, 1) +test_2 (_mm512_maskz_cvt_roundps_pd, __m512d, __mmask8, __m256, 5) +test_2 (_mm512_maskz_cvtps_ph, __m256i, __mmask16, __m512, 1) +test_2 (_mm512_maskz_cvtt_roundpd_epi32, __m256i, __mmask8, __m512d, 5) +test_2 (_mm512_maskz_cvtt_roundpd_epu32, __m256i, __mmask8, __m512d, 5) +test_2 (_mm512_maskz_cvtt_roundps_epi32, __m512i, __mmask16, __m512, 5) +test_2 (_mm512_maskz_cvtt_roundps_epu32, __m512i, __mmask16, __m512, 5) +test_2 (_mm512_maskz_extractf32x4_ps, __m128, __mmask8, __m512, 1) +test_2 (_mm512_maskz_extractf64x4_pd, __m256d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_extracti32x4_epi32, __m128i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_extracti64x4_epi64, __m256i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_getexp_round_pd, __m512d, __mmask8, __m512d, 5) +test_2 (_mm512_maskz_getexp_round_ps, __m512, __mmask16, __m512, 5) +test_2y (_mm512_maskz_getmant_round_pd, __m512d, __mmask8, __m512d, 1, 1, 5) +test_2y (_mm512_maskz_getmant_round_ps, __m512, __mmask16, __m512, 1, 1, 5) +test_2 (_mm512_maskz_permute_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_permute_ps, __m512, __mmask16, __m512, 1) +test_2 (_mm512_maskz_permutex_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_permutex_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_rol_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_rol_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_ror_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_ror_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_shuffle_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_slli_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_slli_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_sqrt_round_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_sqrt_round_ps, __m512, __mmask16, __m512, 1) +test_2 (_mm512_maskz_srai_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_srai_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_maskz_srli_epi32, __m512i, __mmask16, __m512i, 1) +test_2 (_mm512_maskz_srli_epi64, __m512i, __mmask8, __m512i, 1) +test_2 (_mm512_max_round_pd, __m512d, __m512d, __m512d, 5) +test_2 (_mm512_max_round_ps, __m512, __m512, __m512, 5) +test_2 (_mm512_min_round_pd, __m512d, __m512d, __m512d, 5) +test_2 (_mm512_min_round_ps, __m512, __m512, __m512, 5) +test_2 (_mm512_mul_round_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_mul_round_ps, __m512, __m512, __m512, 1) +test_2 (_mm512_scalef_round_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_scalef_round_ps, __m512, __m512, __m512, 1) +test_2 (_mm512_shuffle_f32x4, __m512, __m512, __m512, 1) +test_2 (_mm512_shuffle_f64x2, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_shuffle_i32x4, __m512i, __m512i, __m512i, 1) +test_2 (_mm512_shuffle_i64x2, __m512i, __m512i, __m512i, 1) +test_2 (_mm512_shuffle_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_shuffle_ps, __m512, __m512, __m512, 1) +test_2 (_mm512_sub_round_pd, __m512d, __m512d, __m512d, 1) +test_2 (_mm512_sub_round_ps, __m512, __m512, __m512, 1) +test_2 (_mm_cmp_sd_mask, __mmask8, __m128d, __m128d, 1) +test_2 (_mm_cmp_ss_mask, __mmask8, __m128, __m128, 1) +#ifdef __x86_64__ +#endif +#ifdef __x86_64__ +#endif +test_2x (_mm512_cmp_round_pd_mask, __mmask8, __m512d, __m512d, 1, 5) +test_2x (_mm512_cmp_round_ps_mask, __mmask16, __m512, __m512, 1, 5) +test_2x (_mm512_maskz_roundscale_round_pd, __m512d, __mmask8, __m512d, 1, 5) +test_2x (_mm512_maskz_roundscale_round_ps, __m512, __mmask16, __m512, 1, 5) +test_3 (_mm512_fmadd_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fmadd_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_fmaddsub_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fmaddsub_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_fmsub_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fmsub_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_fmsubadd_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fmsubadd_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_fnmadd_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fnmadd_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_fnmsub_round_pd, __m512d, __m512d, __m512d, __m512d, 1) +test_3 (_mm512_fnmsub_round_ps, __m512, __m512, __m512, __m512, 1) +test_3 (_mm512_mask_cmp_epi32_mask, __mmask16, __mmask16, __m512i, __m512i, 1) +test_3 (_mm512_mask_cmp_epi64_mask, __mmask8, __mmask8, __m512i, __m512i, 1) +test_3 (_mm512_mask_cmp_epu32_mask, __mmask16, __mmask16, __m512i, __m512i, 1) +test_3 (_mm512_mask_cmp_epu64_mask, __mmask8, __mmask8, __m512i, __m512i, 1) +test_3 (_mm512_mask_cmp_pd_mask, __mmask8, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_mask_cmp_ps_mask, __mmask16, __mmask16, __m512, __m512, 1) +test_3 (_mm512_mask_cvt_roundepi32_ps, __m512, __m512, __mmask16, __m512i, 1) +test_3 (_mm512_mask_cvt_roundepu32_ps, __m512, __m512, __mmask16, __m512i, 1) +test_3 (_mm512_mask_cvt_roundpd_epi32, __m256i, __m256i, __mmask8, __m512d, 1) +test_3 (_mm512_mask_cvt_roundpd_epu32, __m256i, __m256i, __mmask8, __m512d, 1) +test_3 (_mm512_mask_cvt_roundpd_ps, __m256, __m256, __mmask8, __m512d, 1) +test_3 (_mm512_mask_cvt_roundph_ps, __m512, __m512, __mmask16, __m256i, 5) +test_3 (_mm512_mask_cvt_roundps_epi32, __m512i, __m512i, __mmask16, __m512, 1) +test_3 (_mm512_mask_cvt_roundps_epu32, __m512i, __m512i, __mmask16, __m512, 1) +test_3 (_mm512_mask_cvt_roundps_pd, __m512d, __m512d, __mmask8, __m256, 5) +test_3 (_mm512_mask_cvtps_ph, __m256i, __m256i, __mmask16, __m512, 1) +test_3 (_mm512_mask_cvtt_roundpd_epi32, __m256i, __m256i, __mmask8, __m512d, 5) +test_3 (_mm512_mask_cvtt_roundpd_epu32, __m256i, __m256i, __mmask8, __m512d, 5) +test_3 (_mm512_mask_cvtt_roundps_epi32, __m512i, __m512i, __mmask16, __m512, 5) +test_3 (_mm512_mask_cvtt_roundps_epu32, __m512i, __m512i, __mmask16, __m512, 5) +test_3 (_mm512_mask_extractf32x4_ps, __m128, __m128, __mmask8, __m512, 1) +test_3 (_mm512_mask_extractf64x4_pd, __m256d, __m256d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_extracti32x4_epi32, __m128i, __m128i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_extracti64x4_epi64, __m256i, __m256i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_getexp_round_pd, __m512d, __m512d, __mmask8, __m512d, 5) +test_3 (_mm512_mask_getexp_round_ps, __m512, __m512, __mmask16, __m512, 5) +test_3y (_mm512_mask_getmant_round_pd, __m512d, __m512d, __mmask8, __m512d, 1, 1, 5) +test_3y (_mm512_mask_getmant_round_ps, __m512, __m512, __mmask16, __m512, 1, 1, 5) +test_3 (_mm512_mask_permute_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_permute_ps, __m512, __m512, __mmask16, __m512, 1) +test_3 (_mm512_mask_permutex_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_permutex_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_rol_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_rol_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_ror_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_ror_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_shuffle_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_slli_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_slli_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_sqrt_round_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_sqrt_round_ps, __m512, __m512, __mmask16, __m512, 1) +test_3 (_mm512_mask_srai_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_srai_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_mask_srli_epi32, __m512i, __m512i, __mmask16, __m512i, 1) +test_3 (_mm512_mask_srli_epi64, __m512i, __m512i, __mmask8, __m512i, 1) +test_3 (_mm512_maskz_add_round_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_add_round_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_alignr_epi32, __m512i, __mmask16, __m512i, __m512i, 1) +test_3 (_mm512_maskz_alignr_epi64, __m512i, __mmask8, __m512i, __m512i, 1) +test_3 (_mm512_maskz_div_round_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_div_round_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_insertf32x4, __m512, __mmask16, __m512, __m128, 1) +test_3 (_mm512_maskz_insertf64x4, __m512d, __mmask8, __m512d, __m256d, 1) +test_3 (_mm512_maskz_inserti32x4, __m512i, __mmask16, __m512i, __m128i, 1) +test_3 (_mm512_maskz_inserti64x4, __m512i, __mmask8, __m512i, __m256i, 1) +test_3 (_mm512_maskz_max_round_pd, __m512d, __mmask8, __m512d, __m512d, 5) +test_3 (_mm512_maskz_max_round_ps, __m512, __mmask16, __m512, __m512, 5) +test_3 (_mm512_maskz_min_round_pd, __m512d, __mmask8, __m512d, __m512d, 5) +test_3 (_mm512_maskz_min_round_ps, __m512, __mmask16, __m512, __m512, 5) +test_3 (_mm512_maskz_mul_round_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_mul_round_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_scalef_round_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_scalef_round_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_shuffle_f32x4, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_shuffle_f64x2, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_shuffle_i32x4, __m512i, __mmask16, __m512i, __m512i, 1) +test_3 (_mm512_maskz_shuffle_i64x2, __m512i, __mmask8, __m512i, __m512i, 1) +test_3 (_mm512_maskz_shuffle_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_shuffle_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_maskz_sub_round_pd, __m512d, __mmask8, __m512d, __m512d, 1) +test_3 (_mm512_maskz_sub_round_ps, __m512, __mmask16, __m512, __m512, 1) +test_3 (_mm512_ternarylogic_epi32, __m512i, __m512i, __m512i, __m512i, 1) +test_3 (_mm512_ternarylogic_epi64, __m512i, __m512i, __m512i, __m512i, 1) +test_3 (_mm_mask_cmp_sd_mask, __mmask8, __mmask8, __m128d, __m128d, 1) +test_3 (_mm_mask_cmp_ss_mask, __mmask8, __mmask8, __m128, __m128, 1) +test_3v (_mm512_i32scatter_epi32, void *, __m512i, __m512i, 1) +test_3v (_mm512_i32scatter_epi64, void *, __m256i, __m512i, 1) +test_3v (_mm512_i32scatter_pd, void *, __m256i, __m512d, 1) +test_3v (_mm512_i32scatter_ps, void *, __m512i, __m512, 1) +test_3v (_mm512_i64scatter_epi32, void *, __m512i, __m256i, 1) +test_3v (_mm512_i64scatter_epi64, void *, __m512i, __m512i, 1) +test_3v (_mm512_i64scatter_pd, void *, __m512i, __m512d, 1) +test_3v (_mm512_i64scatter_ps, void *, __m512i, __m256, 1) +test_3x (_mm512_mask_roundscale_round_pd, __m512d, __m512d, __mmask8, __m512d, 1, 5) +test_3x (_mm512_mask_roundscale_round_ps, __m512, __m512, __mmask16, __m512, 1, 5) +test_4 (_mm512_mask3_fmadd_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fmadd_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask3_fmaddsub_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fmaddsub_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask3_fmsub_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fmsub_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask3_fmsubadd_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fmsubadd_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask3_fnmadd_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fnmadd_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask3_fnmsub_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) +test_4 (_mm512_mask3_fnmsub_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) +test_4 (_mm512_mask_add_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_add_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_alignr_epi32, __m512i, __m512i, __mmask16, __m512i, __m512i, 1) +test_4 (_mm512_mask_alignr_epi64, __m512i, __m512i, __mmask8, __m512i, __m512i, 1) +test_4 (_mm512_mask_div_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_div_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fmadd_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fmadd_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fmaddsub_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fmaddsub_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fmsub_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fmsub_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fmsubadd_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fmsubadd_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fnmadd_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fnmadd_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_fnmsub_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_fnmsub_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_i32gather_epi32, __m512i, __m512i, __mmask16, __m512i, void const *, 1) +test_4 (_mm512_mask_i32gather_epi64, __m512i, __m512i, __mmask8, __m256i, void const *, 1) +test_4 (_mm512_mask_i32gather_pd, __m512d, __m512d, __mmask8, __m256i, void const *, 1) +test_4 (_mm512_mask_i32gather_ps, __m512, __m512, __mmask16, __m512i, void const *, 1) +test_4 (_mm512_mask_i64gather_epi32, __m256i, __m256i, __mmask8, __m512i, void const *, 1) +test_4 (_mm512_mask_i64gather_epi64, __m512i, __m512i, __mmask8, __m512i, void const *, 1) +test_4 (_mm512_mask_i64gather_pd, __m512d, __m512d, __mmask8, __m512i, void const *, 1) +test_4 (_mm512_mask_i64gather_ps, __m256, __m256, __mmask8, __m512i, void const *, 1) +test_4 (_mm512_mask_insertf32x4, __m512, __m512, __mmask16, __m512, __m128, 1) +test_4 (_mm512_mask_insertf64x4, __m512d, __m512d, __mmask8, __m512d, __m256d, 1) +test_4 (_mm512_mask_inserti32x4, __m512i, __m512i, __mmask16, __m512i, __m128i, 1) +test_4 (_mm512_mask_inserti64x4, __m512i, __m512i, __mmask8, __m512i, __m256i, 1) +test_4 (_mm512_mask_max_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 5) +test_4 (_mm512_mask_max_round_ps, __m512, __m512, __mmask16, __m512, __m512, 5) +test_4 (_mm512_mask_min_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 5) +test_4 (_mm512_mask_min_round_ps, __m512, __m512, __mmask16, __m512, __m512, 5) +test_4 (_mm512_mask_mul_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_mul_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_scalef_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_scalef_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_shuffle_f32x4, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_shuffle_f64x2, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_shuffle_i32x4, __m512i, __m512i, __mmask16, __m512i, __m512i, 1) +test_4 (_mm512_mask_shuffle_i64x2, __m512i, __m512i, __mmask8, __m512i, __m512i, 1) +test_4 (_mm512_mask_shuffle_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_shuffle_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_sub_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 1) +test_4 (_mm512_mask_sub_round_ps, __m512, __m512, __mmask16, __m512, __m512, 1) +test_4 (_mm512_mask_ternarylogic_epi32, __m512i, __m512i, __mmask16, __m512i, __m512i, 1) +test_4 (_mm512_mask_ternarylogic_epi64, __m512i, __m512i, __mmask8, __m512i, __m512i, 1) +test_4 (_mm512_maskz_fmadd_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fmadd_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_fmaddsub_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fmaddsub_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_fmsub_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fmsub_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_fmsubadd_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fmsubadd_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_fnmadd_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fnmadd_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_fnmsub_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512d, 1) +test_4 (_mm512_maskz_fnmsub_round_ps, __m512, __mmask16, __m512, __m512, __m512, 1) +test_4 (_mm512_maskz_ternarylogic_epi32, __m512i, __mmask16, __m512i, __m512i, __m512i, 1) +test_4 (_mm512_maskz_ternarylogic_epi64, __m512i, __mmask8, __m512i, __m512i, __m512i, 1) +test_4v (_mm512_mask_i32scatter_epi32, void *, __mmask16, __m512i, __m512i, 1) +test_4v (_mm512_mask_i32scatter_epi64, void *, __mmask8, __m256i, __m512i, 1) +test_4v (_mm512_mask_i32scatter_pd, void *, __mmask8, __m256i, __m512d, 1) +test_4v (_mm512_mask_i32scatter_ps, void *, __mmask16, __m512i, __m512, 1) +test_4v (_mm512_mask_i64scatter_epi32, void *, __mmask8, __m512i, __m256i, 1) +test_4v (_mm512_mask_i64scatter_epi64, void *, __mmask8, __m512i, __m512i, 1) +test_4v (_mm512_mask_i64scatter_pd, void *, __mmask8, __m512i, __m512d, 1) +test_4v (_mm512_mask_i64scatter_ps, void *, __mmask8, __m512i, __m256, 1) +test_4x (_mm512_mask_fixupimm_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512i, 1, 5) +test_4x (_mm512_mask_fixupimm_round_ps, __m512, __m512, __mmask16, __m512, __m512i, 1, 5) +test_4x (_mm512_maskz_fixupimm_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512i, 1, 5) +test_4x (_mm512_maskz_fixupimm_round_ps, __m512, __mmask16, __m512, __m512, __m512i, 1, 5) + +/* avx512pfintrin.h */ +test_3vx (_mm512_mask_prefetch_i32gather_ps, __m512i, __mmask16, void const *, 1, 1) +test_3vx (_mm512_mask_prefetch_i32scatter_ps, void const *, __mmask16, __m512i, 1, 1) +test_3vx (_mm512_mask_prefetch_i64gather_ps, __m512i, __mmask8, void const *, 1, 1) +test_3vx (_mm512_mask_prefetch_i64scatter_ps, void const *, __mmask8, __m512i, 1, 1) + +/* avx512erintrin.h */ +test_1 (_mm512_exp2a23_round_pd, __m512d, __m512d, 1) +test_1 (_mm512_exp2a23_round_ps, __m512, __m512, 1) +test_1 (_mm512_rcp28_round_pd, __m512d, __m512d, 1) +test_1 (_mm512_rcp28_round_ps, __m512, __m512, 1) +test_1 (_mm512_rsqrt28_round_pd, __m512d, __m512d, 1) +test_1 (_mm512_rsqrt28_round_ps, __m512, __m512, 1) +test_2 (_mm512_maskz_exp2a23_round_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_exp2a23_round_ps, __m512, __mmask16, __m512, 1) +test_2 (_mm512_maskz_rcp28_round_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_rcp28_round_ps, __m512, __mmask16, __m512, 1) +test_2 (_mm512_maskz_rsqrt28_round_pd, __m512d, __mmask8, __m512d, 1) +test_2 (_mm512_maskz_rsqrt28_round_ps, __m512, __mmask16, __m512, 1) +test_3 (_mm512_mask_exp2a23_round_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_exp2a23_round_ps, __m512, __m512, __mmask16, __m512, 1) +test_3 (_mm512_mask_rcp28_round_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_rcp28_round_ps, __m512, __m512, __mmask16, __m512, 1) +test_3 (_mm512_mask_rsqrt28_round_pd, __m512d, __m512d, __mmask8, __m512d, 1) +test_3 (_mm512_mask_rsqrt28_round_ps, __m512, __m512, __mmask16, __m512, 1) /* wmmintrin.h */ test_1 (_mm_aeskeygenassist_si128, __m128i, __m128i, 1) diff --git a/gcc/testsuite/gcc.target/i386/testimm-10.c b/gcc/testsuite/gcc.target/i386/testimm-10.c new file mode 100644 index 00000000000..0699787be8f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/testimm-10.c @@ -0,0 +1,183 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -mavx512f" } */ + +#include + +__m512i m512i; +__m512d m512d; +__m512 m512; +__m256i m256i; +__m256d m256d; +__m256 m256; +__m128i m128i; +__m128d m128d; +__m128 m128; +__mmask8 mmask8; +__mmask16 mmask16; + +void +test8bit (void) +{ + m512i = _mm512_permutex_epi64 (m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_permutex_epi64 (m512i, mmask8, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_permutex_epi64 (mmask8, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512i = _mm512_ternarylogic_epi64 (m512i, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_ternarylogic_epi64 (m512i, mmask8, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_ternarylogic_epi64 (mmask8, m512i, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_ternarylogic_epi32 (m512i, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_ternarylogic_epi32 (m512i, mmask16, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_ternarylogic_epi32 (mmask16, m512i, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512i = _mm512_shuffle_epi32 (m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_shuffle_epi32 (m512i, mmask16, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_shuffle_epi32 (mmask16, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512i = _mm512_shuffle_i64x2 (m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_shuffle_i64x2 (m512i, mmask8, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_shuffle_i64x2 (mmask8, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512i = _mm512_shuffle_i32x4 (m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_shuffle_i32x4 (m512i, mmask16, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_shuffle_i32x4 (mmask16, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512d = _mm512_shuffle_f64x2 (m512d, m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512d = _mm512_mask_shuffle_f64x2 (m512d, mmask8, m512d, m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512d = _mm512_maskz_shuffle_f64x2 (mmask8, m512d, m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512 = _mm512_shuffle_f32x4 (m512, m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512 = _mm512_mask_shuffle_f32x4 (m512, mmask16, m512, m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512 = _mm512_maskz_shuffle_f32x4 (mmask16, m512, m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512d = _mm512_permutex_pd (m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512d = _mm512_mask_permutex_pd (m512d, mmask8, m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512d = _mm512_maskz_permutex_pd (mmask8, m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512d = _mm512_permute_pd (m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512d = _mm512_mask_permute_pd (m512d, mmask8, m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512d = _mm512_maskz_permute_pd (mmask8, m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512 = _mm512_permute_ps (m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512 = _mm512_mask_permute_ps (m512, mmask16, m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512 = _mm512_maskz_permute_ps (mmask16, m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512d = _mm512_shuffle_pd (m512d, m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512d = _mm512_mask_shuffle_pd (m512d, mmask8, m512d, m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512d = _mm512_maskz_shuffle_pd (mmask8, m512d, m512d, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512 = _mm512_shuffle_ps (m512, m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512 = _mm512_mask_shuffle_ps (m512, mmask16, m512, m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512 = _mm512_maskz_shuffle_ps (mmask16, m512, m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512d = _mm512_fixupimm_pd (m512d, m512d, m512i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m512d = _mm512_mask_fixupimm_pd (m512d, mmask8, m512d, m512i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m512d = _mm512_maskz_fixupimm_pd (mmask8, m512d, m512d, m512i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + + m512 = _mm512_fixupimm_ps (m512, m512, m512i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m512 = _mm512_mask_fixupimm_ps (m512, mmask16, m512, m512i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m512 = _mm512_maskz_fixupimm_ps (mmask16, m512, m512, m512i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + + + + m512i = _mm512_rol_epi32 (m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_rol_epi32 (m512i, mmask16, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_rol_epi32 (mmask16, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512i = _mm512_ror_epi32 (m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_ror_epi32 (m512i, mmask16, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_ror_epi32 (mmask16, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512i = _mm512_rol_epi64 (m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_rol_epi64 (m512i, mmask8, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_rol_epi64 (mmask8, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512i = _mm512_ror_epi64 (m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_ror_epi64 (m512i, mmask8, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_ror_epi64 (mmask8, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m256i = _mm512_cvtps_ph (m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m256i = _mm512_mask_cvtps_ph (m256i, mmask16, m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m256i = _mm512_maskz_cvtps_ph (mmask16, m512, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + m512d = _mm512_roundscale_pd (m512d, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m512d = _mm512_mask_roundscale_pd (m512d, mmask8, m512d, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m512d = _mm512_maskz_roundscale_pd (mmask8, m512d, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + + m512 = _mm512_roundscale_ps (m512, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m512 = _mm512_mask_roundscale_ps (m512, mmask16, m512, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m512 = _mm512_maskz_roundscale_ps (mmask16, m512, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + + + m512i = _mm512_alignr_epi32 (m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_alignr_epi32 (m512i, mmask16, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_alignr_epi32 (mmask16, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_alignr_epi64 (m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_mask_alignr_epi64 (m512i, mmask8, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + m512i = _mm512_maskz_alignr_epi64 (mmask8, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ + + mmask8 = _mm512_cmp_epi64_mask (m512i, m512i, 256); /* { dg-error "the last argument must be a 3-bit immediate" } */ + mmask8 = _mm512_cmp_epi32_mask (m512i, m512i, 256); /* { dg-error "the last argument must be a 3-bit immediate" } */ + mmask8 = _mm512_cmp_epu64_mask (m512i, m512i, 256); /* { dg-error "the last argument must be a 3-bit immediate" } */ + mmask8 = _mm512_cmp_epu32_mask (m512i, m512i, 256); /* { dg-error "the last argument must be a 3-bit immediate" } */ + mmask8 = _mm512_cmp_pd_mask (m512d, m512d, 256); /* { dg-error "the immediate argument must be a 5-bit immediate" } */ + mmask8 = _mm512_cmp_ps_mask (m512, m512, 256); /* { dg-error "the immediate argument must be a 5-bit immediate" } */ + mmask8 = _mm512_mask_cmp_epi64_mask (2, m512i, m512i, 256); /* { dg-error "the last argument must be a 3-bit immediate" } */ + mmask8 = _mm512_mask_cmp_epi32_mask (2, m512i, m512i, 256); /* { dg-error "the last argument must be a 3-bit immediate" } */ + mmask8 = _mm512_mask_cmp_epu64_mask (2, m512i, m512i, 256); /* { dg-error "the last argument must be a 3-bit immediate" } */ + mmask8 = _mm512_mask_cmp_epu32_mask (2, m512i, m512i, 256); /* { dg-error "the last argument must be a 3-bit immediate" } */ + mmask8 = _mm512_mask_cmp_pd_mask (2, m512d, m512d, 256); /* { dg-error "the immediate argument must be a 5-bit immediate" } */ + mmask8 = _mm512_mask_cmp_ps_mask (2, m512, m512, 256); /* { dg-error "the immediate argument must be a 5-bit immediate" } */ + mmask8 = _mm_cmp_sd_mask (m128d, m128d, 256); /* { dg-error "the immediate argument must be a 5-bit immediate" } */ + mmask8 = _mm_cmp_ss_mask (m128, m128, 256); /* { dg-error "the immediate argument must be a 5-bit immediate" } */ + mmask8 = _mm_mask_cmp_sd_mask (1, m128d, m128d, 256); /* { dg-error "the immediate argument must be a 5-bit immediate" } */ + mmask8 = _mm_mask_cmp_ss_mask (1, m128, m128, 256); /* { dg-error "the immediate argument must be a 5-bit immediate" } */ + +} + +test1bit (void) { + m256d = _mm512_extractf64x4_pd (m512d, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ + m256d = _mm512_mask_extractf64x4_pd (m256d, mmask8, m512d, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ + m256d = _mm512_maskz_extractf64x4_pd (mmask8, m512d, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ + + m256i = _mm512_extracti64x4_epi64 (m512i, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ + m256i = _mm512_mask_extracti64x4_epi64 (m256i, mmask8, m512i, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ + m256i = _mm512_maskz_extracti64x4_epi64 (mmask8, m512i, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ + + m512d = _mm512_insertf64x4 (m512d, m256d, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ + m512d = _mm512_mask_insertf64x4 (m512d, mmask8, m512d, m256d, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ + m512d = _mm512_maskz_insertf64x4 (mmask8, m512d, m256d, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ + + m512i = _mm512_inserti64x4 (m512i, m256i, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ + m512i = _mm512_mask_inserti64x4 (m512i, mmask8, m512i, m256i, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ + m512i = _mm512_maskz_inserti64x4 (mmask8, m512i, m256i, 256); /* { dg-error "the last argument must be a 1-bit immediate" } */ +} + +test2bit (void) { + m128 = _mm512_extractf32x4_ps(m512, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ + m128 = _mm512_mask_extractf32x4_ps(m128, mmask8, m512, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ + m128 = _mm512_maskz_extractf32x4_ps(mmask8, m512, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ + + m128i = _mm512_extracti32x4_epi32 (m512i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ + m128i = _mm512_mask_extracti32x4_epi32 (m128i, mmask8, m512i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ + m128i = _mm512_maskz_extracti32x4_epi32 (mmask8, m512i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ + + m512 = _mm512_insertf32x4 (m512, m128, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ + m512 = _mm512_mask_insertf32x4 (m512, mmask16, m512, m128, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ + m512 = _mm512_maskz_insertf32x4 (mmask16, m512, m128, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ + + m512i = _mm512_inserti32x4 (m512i, m128i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ + m512i = _mm512_mask_inserti32x4 (m512i, mmask16, m512i, m128i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ + m512i = _mm512_maskz_inserti32x4 (mmask16, m512i, m128i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ +} + +test4bit (void) { + m512d = _mm512_getmant_pd (m512d, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */ + m512d = _mm512_mask_getmant_pd (m512d, mmask8, m512d, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */ + m512d = _mm512_maskz_getmant_pd (mmask8, m512d, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */ + + m512 = _mm512_getmant_ps (m512, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */ + m512 = _mm512_mask_getmant_ps (m512, mmask16, m512, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */ + m512 = _mm512_maskz_getmant_ps (mmask16, m512, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */ + + +} diff --git a/gcc/testsuite/gcc.target/i386/testround-1.c b/gcc/testsuite/gcc.target/i386/testround-1.c new file mode 100644 index 00000000000..2c8fe2beb10 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/testround-1.c @@ -0,0 +1,444 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -mavx512f" } */ + +#include + +int i; +unsigned int ui; +__m512i m512i; +__m512d m512d; +__m512 m512; +__m256i m256i; +__m256 m256; +__m128i m128i; +__m128d m128d; +__m128 m128; +__mmask8 mmask8; +__mmask16 mmask16; + +void +test_round (void) +{ + m512d = _mm512_sqrt_round_pd (m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_sqrt_round_pd (m512d, mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_sqrt_round_pd (mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_sqrt_round_ps (m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_sqrt_round_ps (m512, mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_sqrt_round_ps (mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_add_round_pd (m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_add_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_add_round_pd (mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_add_round_ps (m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_add_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_add_round_ps (mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_sub_round_pd (m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_sub_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_sub_round_pd (mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_sub_round_ps (m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_sub_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_sub_round_ps (mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_mul_round_pd (m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_mul_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_mul_round_pd (mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mul_round_ps (m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_mul_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_mul_round_ps (mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_div_round_pd (m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_div_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_div_round_pd (mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_div_round_ps (m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_div_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_div_round_ps (mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_scalef_round_pd(m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_scalef_round_pd(m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_scalef_round_pd(mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_scalef_round_ps(m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_scalef_round_ps(m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_scalef_round_ps(mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_fmadd_round_pd (m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fmadd_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fmadd_round_pd (m512d, m512d, m512d, mmask8, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fmadd_round_pd (mmask8, m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fmadd_round_ps (m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fmadd_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fmadd_round_ps (m512, m512, m512, mmask16, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fmadd_round_ps (mmask16, m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_fmsub_round_pd (m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fmsub_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fmsub_round_pd (m512d, m512d, m512d, mmask8, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fmsub_round_pd (mmask8, m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fmsub_round_ps (m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fmsub_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fmsub_round_ps (m512, m512, m512, mmask16, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fmsub_round_ps (mmask16, m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_fmaddsub_round_pd (m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fmaddsub_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fmaddsub_round_pd (m512d, m512d, m512d, mmask8, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fmaddsub_round_pd (mmask8, m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fmaddsub_round_ps (m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fmaddsub_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fmaddsub_round_ps (m512, m512, m512, mmask16, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fmaddsub_round_ps (mmask16, m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_fmsubadd_round_pd (m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fmsubadd_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fmsubadd_round_pd (m512d, m512d, m512d, mmask8, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fmsubadd_round_pd (mmask8, m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fmsubadd_round_ps (m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fmsubadd_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fmsubadd_round_ps (m512, m512, m512, mmask16, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fmsubadd_round_ps (mmask16, m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_fnmadd_round_pd (m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fnmadd_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fnmadd_round_pd (m512d, m512d, m512d, mmask8, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fnmadd_round_pd (mmask8, m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fnmadd_round_ps (m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fnmadd_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fnmadd_round_ps (m512, m512, m512, mmask16, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fnmadd_round_ps (mmask16, m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_fnmsub_round_pd (m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fnmsub_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fnmsub_round_pd (m512d, m512d, m512d, mmask8, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fnmsub_round_pd (mmask8, m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fnmsub_round_ps (m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fnmsub_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fnmsub_round_ps (m512, m512, m512, mmask16, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fnmsub_round_ps (mmask16, m512, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + + m256i = _mm512_cvt_roundpd_epi32 (m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_mask_cvt_roundpd_epi32 (m256i, mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_maskz_cvt_roundpd_epi32 (mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_cvt_roundpd_epu32 (m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_mask_cvt_roundpd_epu32 (m256i, mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_maskz_cvt_roundpd_epu32 (mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + + m512i = _mm512_cvt_roundps_epi32 (m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_mask_cvt_roundps_epi32 (m512i, mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_maskz_cvt_roundps_epi32 (mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_cvt_roundps_epu32 (m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_mask_cvt_roundps_epu32 (m512i, mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_maskz_cvt_roundps_epu32 (mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + + m128 = _mm_cvt_roundu32_ss (m128, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_cvt_roundi32_ss (m128, 4, 7); /* { dg-error "incorrect rounding operand" } */ + + m512 = _mm512_cvt_roundepi32_ps (m512i, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_cvt_roundepi32_ps (m512, mmask16, m512i, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_cvt_roundepi32_ps (mmask16, m512i, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_cvt_roundepu32_ps (m512i, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_cvt_roundepu32_ps (m512, mmask16, m512i, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_cvt_roundepu32_ps (mmask16, m512i, 7); /* { dg-error "incorrect rounding operand" } */ + + ui = _mm_cvt_roundss_u32 (m128, 7); /* { dg-error "incorrect rounding operand" } */ + i = _mm_cvt_roundss_i32 (m128, 7); /* { dg-error "incorrect rounding operand" } */ + + ui = _mm_cvt_roundsd_u32 (m128d, 7); /* { dg-error "incorrect rounding operand" } */ + i = _mm_cvt_roundsd_i32 (m128d, 7); /* { dg-error "incorrect rounding operand" } */ + + m256 = _mm512_cvt_roundpd_ps (m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256 = _mm512_mask_cvt_roundpd_ps (m256, mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256 = _mm512_maskz_cvt_roundpd_ps (mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_max_round_pd (m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_max_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_max_round_pd (mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_max_round_ps (m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_max_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_max_round_ps (mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_min_round_pd (m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_min_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_min_round_pd (mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_min_round_ps (m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_min_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_min_round_ps (mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + + m256i = _mm512_cvtt_roundpd_epi32 (m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_mask_cvtt_roundpd_epi32 (m256i, mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_maskz_cvtt_roundpd_epi32 (mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_cvtt_roundpd_epu32 (m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_mask_cvtt_roundpd_epu32 (m256i, mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_maskz_cvtt_roundpd_epu32 (mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + + m512i = _mm512_cvtt_roundps_epi32 (m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_mask_cvtt_roundps_epi32 (m512i, mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_maskz_cvtt_roundps_epi32 (mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_cvtt_roundps_epu32 (m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_mask_cvtt_roundps_epu32 (m512i, mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_maskz_cvtt_roundps_epu32 (mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_fixupimm_round_pd (m512d, m512d, m512i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fixupimm_round_pd (m512d, mmask8, m512d, m512i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fixupimm_round_pd (mmask8, m512d, m512d, m512i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fixupimm_round_ps (m512, m512, m512i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fixupimm_round_ps (m512, mmask16, m512, m512i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fixupimm_round_ps (mmask16, m512, m512, m512i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_fixupimm_round_sd (m128d, m128d, m128i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_mask_fixupimm_round_sd (m128d, mmask8, m128d, m128i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_maskz_fixupimm_round_sd (mmask8, m128d, m128d, m128i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_fixupimm_round_ss (m128, m128, m128i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_mask_fixupimm_round_ss (m128, mmask8, m128, m128i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_maskz_fixupimm_round_ss (mmask8, m128, m128, m128i, 4, 7); /* { dg-error "incorrect rounding operand" } */ + + ui = _mm_cvtt_roundss_u32 (m128, 7); /* { dg-error "incorrect rounding operand" } */ + i = _mm_cvtt_roundss_i32 (m128, 7); /* { dg-error "incorrect rounding operand" } */ + + ui = _mm_cvtt_roundsd_u32 (m128d, 7); /* { dg-error "incorrect rounding operand" } */ + i = _mm_cvtt_roundsd_i32 (m128d, 7); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_cvt_roundps_pd (m256, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_cvt_roundps_pd (m512d, mmask8, m256, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_cvt_roundps_pd (mmask8, m256, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_cvt_roundph_ps (m256i, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_cvt_roundph_ps (m512, mmask16, m256i, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_cvt_roundph_ps (mmask16, m256i, 7); /* { dg-error "incorrect rounding operand" } */ + + m512 = _mm512_getexp_round_ps (m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_getexp_round_ps (m512, mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_getexp_round_ps (mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_getexp_round_pd (m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_getexp_round_pd (m512d, mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_getexp_round_pd (mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_getmant_round_pd (m512d, 0, 0, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_getmant_round_pd (m512d, mmask8, m512d, 0, 0, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_getmant_round_pd (mmask8, m512d, 0, 0, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_getmant_round_ps (m512, 0, 0, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_getmant_round_ps (m512, mmask16, m512, 0, 0, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_getmant_round_ps (mmask16, m512, 0, 0, 7); /* { dg-error "incorrect rounding operand" } */ + + m512 = _mm512_roundscale_round_ps (m512, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_roundscale_round_ps (m512, mmask16, m512, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_roundscale_round_ps (mmask16, m512, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_roundscale_round_pd (m512d, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_roundscale_round_pd (m512d, mmask8, m512d, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_roundscale_round_pd (mmask8, m512d, 4, 7); /* { dg-error "incorrect rounding operand" } */ + + mmask8 = _mm512_cmp_round_pd_mask (m512d, m512d, 4, 7); /* { dg-error "incorrect rounding operand" } */ + mmask16 = _mm512_cmp_round_ps_mask (m512, m512, 4, 7); /* { dg-error "incorrect rounding operand" } */ + mmask8 = _mm512_mask_cmp_round_pd_mask (mmask8, m512d, m512d, 4, 7); /* { dg-error "incorrect rounding operand" } */ + mmask16 = _mm512_mask_cmp_round_ps_mask (mmask16, m512, m512, 4, 7); /* { dg-error "incorrect rounding operand" } */ + mmask8 = _mm_cmp_round_sd_mask (m128d, m128d, 4, 7); /* { dg-error "incorrect rounding operand" } */ + mmask8 = _mm_mask_cmp_round_sd_mask (mmask8, m128d, m128d, 4, 7); /* { dg-error "incorrect rounding operand" } */ + mmask16 = _mm_cmp_round_ss_mask (m128, m128, 4, 7); /* { dg-error "incorrect rounding operand" } */ + mmask16 = _mm_mask_cmp_round_ss_mask (mmask8, m128, m128, 4, 7); /* { dg-error "incorrect rounding operand" } */ + + i = _mm_comi_round_ss (m128, m128, 4, 7); /* { dg-error "incorrect rounding operand" } */ + i = _mm_comi_round_sd (m128d, m128d, 4, 7); /* { dg-error "incorrect rounding operand" } */ +} + +void +test_round_sae (void) +{ + m512d = _mm512_sqrt_round_pd (m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_sqrt_round_pd (m512d, mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_sqrt_round_pd (mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_sqrt_round_ps (m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_sqrt_round_ps (m512, mmask16, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_sqrt_round_ps (mmask16, m512, 5); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_add_round_pd (m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_add_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_add_round_pd (mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_add_round_ps (m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_add_round_ps (m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_add_round_ps (mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_sub_round_pd (m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_sub_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_sub_round_pd (mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_sub_round_ps (m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_sub_round_ps (m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_sub_round_ps (mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_mul_round_pd (m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_mul_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_mul_round_pd (mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mul_round_ps (m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_mul_round_ps (m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_mul_round_ps (mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_div_round_pd (m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_div_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_div_round_pd (mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_div_round_ps (m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_div_round_ps (m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_div_round_ps (mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_scalef_round_pd(m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_scalef_round_pd(m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_scalef_round_pd(mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_scalef_round_ps(m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_scalef_round_ps(m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_scalef_round_ps(mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_fmadd_round_pd (m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fmadd_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fmadd_round_pd (m512d, m512d, m512d, mmask8, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fmadd_round_pd (mmask8, m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fmadd_round_ps (m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fmadd_round_ps (m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fmadd_round_ps (m512, m512, m512, mmask16, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fmadd_round_ps (mmask16, m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_fmsub_round_pd (m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fmsub_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fmsub_round_pd (m512d, m512d, m512d, mmask8, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fmsub_round_pd (mmask8, m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fmsub_round_ps (m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fmsub_round_ps (m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fmsub_round_ps (m512, m512, m512, mmask16, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fmsub_round_ps (mmask16, m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_fmaddsub_round_pd (m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fmaddsub_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fmaddsub_round_pd (m512d, m512d, m512d, mmask8, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fmaddsub_round_pd (mmask8, m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fmaddsub_round_ps (m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fmaddsub_round_ps (m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fmaddsub_round_ps (m512, m512, m512, mmask16, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fmaddsub_round_ps (mmask16, m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_fmsubadd_round_pd (m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fmsubadd_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fmsubadd_round_pd (m512d, m512d, m512d, mmask8, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fmsubadd_round_pd (mmask8, m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fmsubadd_round_ps (m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fmsubadd_round_ps (m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fmsubadd_round_ps (m512, m512, m512, mmask16, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fmsubadd_round_ps (mmask16, m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_fnmadd_round_pd (m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fnmadd_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fnmadd_round_pd (m512d, m512d, m512d, mmask8, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fnmadd_round_pd (mmask8, m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fnmadd_round_ps (m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fnmadd_round_ps (m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fnmadd_round_ps (m512, m512, m512, mmask16, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fnmadd_round_ps (mmask16, m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_fnmsub_round_pd (m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fnmsub_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask3_fnmsub_round_pd (m512d, m512d, m512d, mmask8, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fnmsub_round_pd (mmask8, m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fnmsub_round_ps (m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fnmsub_round_ps (m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask3_fnmsub_round_ps (m512, m512, m512, mmask16, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fnmsub_round_ps (mmask16, m512, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + + m256i = _mm512_cvt_roundpd_epi32 (m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_mask_cvt_roundpd_epi32 (m256i, mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_maskz_cvt_roundpd_epi32 (mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_cvt_roundpd_epu32 (m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_mask_cvt_roundpd_epu32 (m256i, mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_maskz_cvt_roundpd_epu32 (mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + + m512i = _mm512_cvt_roundps_epi32 (m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_mask_cvt_roundps_epi32 (m512i, mmask16, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_maskz_cvt_roundps_epi32 (mmask16, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_cvt_roundps_epu32 (m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_mask_cvt_roundps_epu32 (m512i, mmask16, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_maskz_cvt_roundps_epu32 (mmask16, m512, 5); /* { dg-error "incorrect rounding operand" } */ + + m128 = _mm_cvt_roundu32_ss (m128, 4, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_cvt_roundi32_ss (m128, 4, 5); /* { dg-error "incorrect rounding operand" } */ + + m512 = _mm512_cvt_roundepi32_ps (m512i, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_cvt_roundepi32_ps (m512, mmask16, m512i, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_cvt_roundepi32_ps (mmask16, m512i, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_cvt_roundepu32_ps (m512i, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_cvt_roundepu32_ps (m512, mmask16, m512i, 5); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_cvt_roundepu32_ps (mmask16, m512i, 5); /* { dg-error "incorrect rounding operand" } */ + + ui = _mm_cvt_roundss_u32 (m128, 5); /* { dg-error "incorrect rounding operand" } */ + i = _mm_cvt_roundss_i32 (m128, 5); /* { dg-error "incorrect rounding operand" } */ + + ui = _mm_cvt_roundsd_u32 (m128d, 5); /* { dg-error "incorrect rounding operand" } */ + i = _mm_cvt_roundsd_i32 (m128d, 5); /* { dg-error "incorrect rounding operand" } */ + + m256 = _mm512_cvt_roundpd_ps (m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m256 = _mm512_mask_cvt_roundpd_ps (m256, mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m256 = _mm512_maskz_cvt_roundpd_ps (mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ +} + +void +test_sae_only (void) +{ + m512d = _mm512_max_round_pd (m512d, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_max_round_pd (m512d, mmask8, m512d, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_max_round_pd (mmask8, m512d, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_max_round_ps (m512, m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_max_round_ps (m512, mmask16, m512, m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_max_round_ps (mmask16, m512, m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_min_round_pd (m512d, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_min_round_pd (m512d, mmask8, m512d, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_min_round_pd (mmask8, m512d, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_min_round_ps (m512, m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_min_round_ps (m512, mmask16, m512, m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_min_round_ps (mmask16, m512, m512, 3); /* { dg-error "incorrect rounding operand" } */ + + m256i = _mm512_cvtt_roundpd_epi32 (m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_mask_cvtt_roundpd_epi32 (m256i, mmask8, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_maskz_cvtt_roundpd_epi32 (mmask8, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_cvtt_roundpd_epu32 (m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_mask_cvtt_roundpd_epu32 (m256i, mmask8, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m256i = _mm512_maskz_cvtt_roundpd_epu32 (mmask8, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + + m512i = _mm512_cvtt_roundps_epi32 (m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_mask_cvtt_roundps_epi32 (m512i, mmask16, m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_maskz_cvtt_roundps_epi32 (mmask16, m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_cvtt_roundps_epu32 (m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_mask_cvtt_roundps_epu32 (m512i, mmask16, m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512i = _mm512_maskz_cvtt_roundps_epu32 (mmask16, m512, 3); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_fixupimm_round_pd (m512d, m512d, m512i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_fixupimm_round_pd (m512d, mmask8, m512d, m512i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_fixupimm_round_pd (mmask8, m512d, m512d, m512i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_fixupimm_round_ps (m512, m512, m512i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_fixupimm_round_ps (m512, mmask16, m512, m512i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_fixupimm_round_ps (mmask16, m512, m512, m512i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_fixupimm_round_sd (m128d, m128d, m128i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_mask_fixupimm_round_sd (m128d, mmask8, m128d, m128i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_maskz_fixupimm_round_sd (mmask8, m128d, m128d, m128i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_fixupimm_round_ss (m128, m128, m128i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_mask_fixupimm_round_ss (m128, mmask8, m128, m128i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_maskz_fixupimm_round_ss (mmask8, m128, m128, m128i, 4, 3); /* { dg-error "incorrect rounding operand" } */ + + ui = _mm_cvtt_roundss_u32 (m128, 3); /* { dg-error "incorrect rounding operand" } */ + i = _mm_cvtt_roundss_i32 (m128, 3); /* { dg-error "incorrect rounding operand" } */ + + ui = _mm_cvtt_roundsd_u32 (m128d, 3); /* { dg-error "incorrect rounding operand" } */ + i = _mm_cvtt_roundsd_i32 (m128d, 3); /* { dg-error "incorrect rounding operand" } */ + + m512d = _mm512_cvt_roundps_pd (m256, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_cvt_roundps_pd (m512d, mmask8, m256, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_cvt_roundps_pd (mmask8, m256, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_cvt_roundph_ps (m256i, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_cvt_roundph_ps (m512, mmask16, m256i, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_cvt_roundph_ps (mmask16, m256i, 3); /* { dg-error "incorrect rounding operand" } */ + + m512 = _mm512_getexp_round_ps (m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_getexp_round_ps (m512, mmask16, m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_getexp_round_ps (mmask16, m512, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_getexp_round_pd (m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_getexp_round_pd (m512d, mmask8, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_getexp_round_pd (mmask8, m512d, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_getmant_round_pd (m512d, 0, 0, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_getmant_round_pd (m512d, mmask8, m512d, 0, 0, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_getmant_round_pd (mmask8, m512d, 0, 0, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_getmant_round_ps (m512, 0, 0, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_getmant_round_ps (m512, mmask16, m512, 0, 0, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_getmant_round_ps (mmask16, m512, 0, 0, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_roundscale_round_ps (m512, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_mask_roundscale_round_ps (m512, mmask16, m512, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_maskz_roundscale_round_ps (mmask16, m512, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_roundscale_round_pd (m512d, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_mask_roundscale_round_pd (m512d, mmask8, m512d, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_maskz_roundscale_round_pd (mmask8, m512d, 4, 3); /* { dg-error "incorrect rounding operand" } */ + + mmask8 = _mm512_cmp_round_pd_mask (m512d, m512d, 4, 3); /* { dg-error "incorrect rounding operand" } */ + mmask16 = _mm512_cmp_round_ps_mask (m512, m512, 4, 3); /* { dg-error "incorrect rounding operand" } */ + mmask8 = _mm512_mask_cmp_round_pd_mask (mmask8, m512d, m512d, 4, 3); /* { dg-error "incorrect rounding operand" } */ + mmask16 = _mm512_mask_cmp_round_ps_mask (mmask16, m512, m512, 4, 3); /* { dg-error "incorrect rounding operand" } */ + mmask8 = _mm_cmp_round_sd_mask (m128d, m128d, 4, 3); /* { dg-error "incorrect rounding operand" } */ + mmask8 = _mm_mask_cmp_round_sd_mask (mmask8, m128d, m128d, 4, 3); /* { dg-error "incorrect rounding operand" } */ + mmask16 = _mm_cmp_round_ss_mask (m128, m128, 4, 3); /* { dg-error "incorrect rounding operand" } */ + mmask16 = _mm_mask_cmp_round_ss_mask (mmask8, m128, m128, 4, 3); /* { dg-error "incorrect rounding operand" } */ + + i = _mm_comi_round_ss (m128, m128, 4, 3); /* { dg-error "incorrect rounding operand" } */ + i = _mm_comi_round_sd (m128d, m128d, 4, 3); /* { dg-error "incorrect rounding operand" } */ +} diff --git a/gcc/testsuite/gcc.target/i386/testround-2.c b/gcc/testsuite/gcc.target/i386/testround-2.c new file mode 100644 index 00000000000..7236bfb9b22 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/testround-2.c @@ -0,0 +1,57 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O0 -mavx512f" } */ + +#include + +long long l; +unsigned long long ul; +__m128d m128d; +__m128 m128; + +void +test_round_64 (void) +{ + m128d = _mm_cvt_roundu64_sd (m128d, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_cvt_roundi64_sd (m128d, 4, 7); /* { dg-error "incorrect rounding operand" } */ + + m128 = _mm_cvt_roundu64_ss (m128, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_cvt_roundi64_ss (m128, 4, 7); /* { dg-error "incorrect rounding operand" } */ + + ul = _mm_cvt_roundss_u64 (m128, 7); /* { dg-error "incorrect rounding operand" } */ + l = _mm_cvt_roundss_i64 (m128, 7); /* { dg-error "incorrect rounding operand" } */ + + ul = _mm_cvt_roundsd_u64 (m128d, 7); /* { dg-error "incorrect rounding operand" } */ + l = _mm_cvt_roundsd_i64 (m128d, 7); /* { dg-error "incorrect rounding operand" } */ + + ul = _mm_cvtt_roundss_u64 (m128, 7); /* { dg-error "incorrect rounding operand" } */ + l = _mm_cvtt_roundss_i64 (m128, 7); /* { dg-error "incorrect rounding operand" } */ + + ul = _mm_cvtt_roundsd_u64 (m128d, 7); /* { dg-error "incorrect rounding operand" } */ + l = _mm_cvtt_roundsd_i64 (m128d, 7); /* { dg-error "incorrect rounding operand" } */ +} + +void +test_round_sae_64 (void) +{ + m128d = _mm_cvt_roundu64_sd (m128d, 4, 5); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_cvt_roundi64_sd (m128d, 4, 5); /* { dg-error "incorrect rounding operand" } */ + + m128 = _mm_cvt_roundu64_ss (m128, 4, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_cvt_roundi64_ss (m128, 4, 5); /* { dg-error "incorrect rounding operand" } */ + + ul = _mm_cvt_roundss_u64 (m128, 5); /* { dg-error "incorrect rounding operand" } */ + l = _mm_cvt_roundss_i64 (m128, 5); /* { dg-error "incorrect rounding operand" } */ + + ul = _mm_cvt_roundsd_u64 (m128d, 5); /* { dg-error "incorrect rounding operand" } */ + l = _mm_cvt_roundsd_i64 (m128d, 5); /* { dg-error "incorrect rounding operand" } */ +} + +void +test_sae_only_64 (void) +{ + ul = _mm_cvtt_roundss_u64 (m128, 3); /* { dg-error "incorrect rounding operand" } */ + l = _mm_cvtt_roundss_i64 (m128, 3); /* { dg-error "incorrect rounding operand" } */ + + ul = _mm_cvtt_roundsd_u64 (m128d, 3); /* { dg-error "incorrect rounding operand" } */ + l = _mm_cvtt_roundsd_i64 (m128d, 3); /* { dg-error "incorrect rounding operand" } */ +} diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp new file mode 100644 index 00000000000..02143bef028 --- /dev/null +++ b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp @@ -0,0 +1,61 @@ +# Copyright (C) 2009-2013 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# The x86-64 AVX512F ABI testsuite needs one additional assembler file for most +# testcases. For simplicity we will just link it into each test. + +load_lib c-torture.exp +load_lib target-supports.exp +load_lib torture-options.exp + +if { (![istarget x86_64-*-*] && ![istarget i?86-*-*]) + || ![is-effective-target lp64] + || ![is-effective-target avx512f] } then { + return +} + + +# If the linker used understands -M , pass it to clear hardware +# capabilities set by the Sun assembler. +set flags "" +set clearcap_ldflags "-Wl,-M,$srcdir/gcc.target/i386/clearcap.map" + +if [check_no_compiler_messages mapfile executable { + int main (void) { return 0; } + } $clearcap_ldflags ] { + set flags $clearcap_ldflags +} + +torture-init +set-torture-options $C_TORTURE_OPTIONS +set additional_flags "-W -Wall -mavx512f $flags" + +foreach src [lsort [glob -nocomplain $srcdir/$subdir/test_*.c]] { + if {[runtest_file_p $runtests $src]} { + if { ([istarget *-*-darwin*]) } then { + # FIXME: Darwin isn't tested. + c-torture-execute [list $src \ + $srcdir/$subdir/asm-support-darwin.s] \ + $additional_flags + } else { + c-torture-execute [list $src \ + $srcdir/$subdir/asm-support.S] \ + $additional_flags + } + } +} + +torture-finish diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h new file mode 100644 index 00000000000..5e3b265ecea --- /dev/null +++ b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h @@ -0,0 +1,184 @@ +#ifndef INCLUDED_ARGS_H +#define INCLUDED_ARGS_H + +#include +#include + +/* Assertion macro. */ +#define assert(test) if (!(test)) abort() + +#ifdef __GNUC__ +#define ATTRIBUTE_UNUSED __attribute__((__unused__)) +#else +#define ATTRIBUTE_UNUSED +#endif + +/* This defines the calling sequences for integers and floats. */ +#define I0 rdi +#define I1 rsi +#define I2 rdx +#define I3 rcx +#define I4 r8 +#define I5 r9 +#define F0 zmm0 +#define F1 zmm1 +#define F2 zmm2 +#define F3 zmm3 +#define F4 zmm4 +#define F5 zmm5 +#define F6 zmm6 +#define F7 zmm7 + +typedef union { + float _float[16]; + double _double[8]; + long _long[8]; + int _int[16]; + unsigned long _ulong[8]; + __m64 _m64[8]; + __m128 _m128[4]; + __m256 _m256[2]; + __m512 _m512[1]; +} ZMM_T; + +typedef union { + float _float; + double _double; + long double _ldouble; + unsigned long _ulong[2]; +} X87_T; +extern void (*callthis)(void); +extern unsigned long rax,rbx,rcx,rdx,rsi,rdi,rsp,rbp,r8,r9,r10,r11,r12,r13,r14,r15; +ZMM_T zmm_regs[32]; +X87_T x87_regs[8]; +extern volatile unsigned long volatile_var; +extern void snapshot (void); +extern void snapshot_ret (void); +#define WRAP_CALL(N) \ + (callthis = (void (*)()) (N), (typeof (&N)) snapshot) +#define WRAP_RET(N) \ + (callthis = (void (*)()) (N), (typeof (&N)) snapshot_ret) + +/* Clear all integer registers. */ +#define clear_int_hardware_registers \ + asm __volatile__ ("xor %%rax, %%rax\n\t" \ + "xor %%rbx, %%rbx\n\t" \ + "xor %%rcx, %%rcx\n\t" \ + "xor %%rdx, %%rdx\n\t" \ + "xor %%rsi, %%rsi\n\t" \ + "xor %%rdi, %%rdi\n\t" \ + "xor %%r8, %%r8\n\t" \ + "xor %%r9, %%r9\n\t" \ + "xor %%r10, %%r10\n\t" \ + "xor %%r11, %%r11\n\t" \ + "xor %%r12, %%r12\n\t" \ + "xor %%r13, %%r13\n\t" \ + "xor %%r14, %%r14\n\t" \ + "xor %%r15, %%r15\n\t" \ + ::: "rax", "rbx", "rcx", "rdx", "rsi", "rdi", "r8", \ + "r9", "r10", "r11", "r12", "r13", "r14", "r15"); + +/* This is the list of registers available for passing arguments. Not all of + these are used or even really available. */ +struct IntegerRegisters +{ + unsigned long rax, rbx, rcx, rdx, rsi, rdi, r8, r9, r10, r11, r12, r13, r14, r15; +}; +struct FloatRegisters +{ + double mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7; + long double st0, st1, st2, st3, st4, st5, st6, st7; + ZMM_T zmm0, zmm1, zmm2, zmm3, zmm4, zmm5, zmm6, zmm7, zmm8, zmm9, + zmm10, zmm11, zmm12, zmm13, zmm14, zmm15, zmm16, zmm17, zmm18, + zmm19, zmm20, zmm21, zmm22, zmm23, zmm24, zmm25, zmm26, zmm27, + zmm28, zmm29, zmm30, zmm31; +}; + +/* Implemented in scalarargs.c */ +extern struct IntegerRegisters iregs; +extern struct FloatRegisters fregs; +extern unsigned int num_iregs, num_fregs; + +#define check_int_arguments do { \ + assert (num_iregs <= 0 || iregs.I0 == I0); \ + assert (num_iregs <= 1 || iregs.I1 == I1); \ + assert (num_iregs <= 2 || iregs.I2 == I2); \ + assert (num_iregs <= 3 || iregs.I3 == I3); \ + assert (num_iregs <= 4 || iregs.I4 == I4); \ + assert (num_iregs <= 5 || iregs.I5 == I5); \ + } while (0) + +#define check_char_arguments check_int_arguments +#define check_short_arguments check_int_arguments +#define check_long_arguments check_int_arguments + +/* Clear register struct. */ +#define clear_struct_registers \ + rax = rbx = rcx = rdx = rdi = rsi = rbp = rsp \ + = r8 = r9 = r10 = r11 = r12 = r13 = r14 = r15 = 0; \ + memset (&iregs, 0, sizeof (iregs)); \ + memset (&fregs, 0, sizeof (fregs)); \ + memset (zmm_regs, 0, sizeof (zmm_regs)); \ + memset (x87_regs, 0, sizeof (x87_regs)); + +/* Clear both hardware and register structs for integers. */ +#define clear_int_registers \ + clear_struct_registers \ + clear_int_hardware_registers + +/* TODO: Do the checking. */ +#define check_f_arguments(T) do { \ + assert (num_fregs <= 0 || fregs.zmm0._ ## T [0] == zmm_regs[0]._ ## T [0]); \ + assert (num_fregs <= 1 || fregs.zmm1._ ## T [0] == zmm_regs[1]._ ## T [0]); \ + assert (num_fregs <= 2 || fregs.zmm2._ ## T [0] == zmm_regs[2]._ ## T [0]); \ + assert (num_fregs <= 3 || fregs.zmm3._ ## T [0] == zmm_regs[3]._ ## T [0]); \ + assert (num_fregs <= 4 || fregs.zmm4._ ## T [0] == zmm_regs[4]._ ## T [0]); \ + assert (num_fregs <= 5 || fregs.zmm5._ ## T [0] == zmm_regs[5]._ ## T [0]); \ + assert (num_fregs <= 6 || fregs.zmm6._ ## T [0] == zmm_regs[6]._ ## T [0]); \ + assert (num_fregs <= 7 || fregs.zmm7._ ## T [0] == zmm_regs[7]._ ## T [0]); \ + } while (0) + +#define check_float_arguments check_f_arguments(float) +#define check_double_arguments check_f_arguments(double) + +#define check_vector_arguments(T,O) do { \ + assert (num_fregs <= 0 \ + || memcmp (((char *) &fregs.zmm0) + (O), \ + &zmm_regs[0], \ + sizeof (__ ## T) - (O)) == 0); \ + assert (num_fregs <= 1 \ + || memcmp (((char *) &fregs.zmm1) + (O), \ + &zmm_regs[1], \ + sizeof (__ ## T) - (O)) == 0); \ + assert (num_fregs <= 2 \ + || memcmp (((char *) &fregs.zmm2) + (O), \ + &zmm_regs[2], \ + sizeof (__ ## T) - (O)) == 0); \ + assert (num_fregs <= 3 \ + || memcmp (((char *) &fregs.zmm3) + (O), \ + &zmm_regs[3], \ + sizeof (__ ## T) - (O)) == 0); \ + assert (num_fregs <= 4 \ + || memcmp (((char *) &fregs.zmm4) + (O), \ + &zmm_regs[4], \ + sizeof (__ ## T) - (O)) == 0); \ + assert (num_fregs <= 5 \ + || memcmp (((char *) &fregs.zmm5) + (O), \ + &zmm_regs[5], \ + sizeof (__ ## T) - (O)) == 0); \ + assert (num_fregs <= 6 \ + || memcmp (((char *) &fregs.zmm6) + (O), \ + &zmm_regs[6], \ + sizeof (__ ## T) - (O)) == 0); \ + assert (num_fregs <= 7 \ + || memcmp (((char *) &fregs.zmm7) + (O), \ + &zmm_regs[7], \ + sizeof (__ ## T) - (O)) == 0); \ + } while (0) + +#define check_m64_arguments check_vector_arguments(m64, 0) +#define check_m128_arguments check_vector_arguments(m128, 0) +#define check_m256_arguments check_vector_arguments(m256, 0) +#define check_m512_arguments check_vector_arguments(m512, 0) + +#endif /* INCLUDED_ARGS_H */ diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S new file mode 100644 index 00000000000..e0309aeac12 --- /dev/null +++ b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S @@ -0,0 +1,98 @@ + .file "snapshot.S" + .text + .p2align 4,,15 +.globl snapshot + .type snapshot, @function +snapshot: +.LFB3: + movq %rax, rax(%rip) + movq %rbx, rbx(%rip) + movq %rcx, rcx(%rip) + movq %rdx, rdx(%rip) + movq %rdi, rdi(%rip) + movq %rsi, rsi(%rip) + movq %rbp, rbp(%rip) + movq %rsp, rsp(%rip) + movq %r8, r8(%rip) + movq %r9, r9(%rip) + movq %r10, r10(%rip) + movq %r11, r11(%rip) + movq %r12, r12(%rip) + movq %r13, r13(%rip) + movq %r14, r14(%rip) + movq %r15, r15(%rip) + vmovdqu32 %zmm0, zmm_regs+0(%rip) + vmovdqu32 %zmm1, zmm_regs+64(%rip) + vmovdqu32 %zmm2, zmm_regs+128(%rip) + vmovdqu32 %zmm3, zmm_regs+192(%rip) + vmovdqu32 %zmm4, zmm_regs+256(%rip) + vmovdqu32 %zmm5, zmm_regs+320(%rip) + vmovdqu32 %zmm6, zmm_regs+384(%rip) + vmovdqu32 %zmm7, zmm_regs+448(%rip) + vmovdqu32 %zmm8, zmm_regs+512(%rip) + vmovdqu32 %zmm9, zmm_regs+576(%rip) + vmovdqu32 %zmm10, zmm_regs+640(%rip) + vmovdqu32 %zmm11, zmm_regs+704(%rip) + vmovdqu32 %zmm12, zmm_regs+768(%rip) + vmovdqu32 %zmm13, zmm_regs+832(%rip) + vmovdqu32 %zmm14, zmm_regs+896(%rip) + vmovdqu32 %zmm15, zmm_regs+960(%rip) + vmovdqu32 %zmm16, zmm_regs+1024(%rip) + vmovdqu32 %zmm17, zmm_regs+1088(%rip) + vmovdqu32 %zmm18, zmm_regs+1152(%rip) + vmovdqu32 %zmm19, zmm_regs+1216(%rip) + vmovdqu32 %zmm20, zmm_regs+1280(%rip) + vmovdqu32 %zmm21, zmm_regs+1344(%rip) + vmovdqu32 %zmm22, zmm_regs+1408(%rip) + vmovdqu32 %zmm23, zmm_regs+1472(%rip) + vmovdqu32 %zmm24, zmm_regs+1536(%rip) + vmovdqu32 %zmm25, zmm_regs+1600(%rip) + vmovdqu32 %zmm26, zmm_regs+1664(%rip) + vmovdqu32 %zmm27, zmm_regs+1728(%rip) + vmovdqu32 %zmm28, zmm_regs+1792(%rip) + vmovdqu32 %zmm29, zmm_regs+1856(%rip) + vmovdqu32 %zmm30, zmm_regs+1920(%rip) + vmovdqu32 %zmm31, zmm_regs+1984(%rip) + jmp *callthis(%rip) +.LFE3: + .size snapshot, .-snapshot + + .p2align 4,,15 +.globl snapshot_ret + .type snapshot_ret, @function +snapshot_ret: + movq %rdi, rdi(%rip) + subq $8, %rsp + call *callthis(%rip) + addq $8, %rsp + movq %rax, rax(%rip) + movq %rdx, rdx(%rip) + vmovdqu32 %zmm0, zmm_regs+0(%rip) + vmovdqu32 %zmm1, zmm_regs+64(%rip) + fstpt x87_regs(%rip) + fstpt x87_regs+16(%rip) + fldt x87_regs+16(%rip) + fldt x87_regs(%rip) + ret + .size snapshot_ret, .-snapshot_ret + + .comm callthis,8,8 + .comm rax,8,8 + .comm rbx,8,8 + .comm rcx,8,8 + .comm rdx,8,8 + .comm rsi,8,8 + .comm rdi,8,8 + .comm rsp,8,8 + .comm rbp,8,8 + .comm r8,8,8 + .comm r9,8,8 + .comm r10,8,8 + .comm r11,8,8 + .comm r12,8,8 + .comm r13,8,8 + .comm r14,8,8 + .comm r15,8,8 + .comm zmm_regs,2048,64 + .comm x87_regs,128,32 + .comm volatile_var,8,8 diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/avx512f-check.h b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/avx512f-check.h new file mode 100644 index 00000000000..25ce544c4a3 --- /dev/null +++ b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/avx512f-check.h @@ -0,0 +1,41 @@ +#include +#include "cpuid.h" + +static void avx512f_test (void); + +int +main () +{ + unsigned int eax, ebx, ecx, edx; + + if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) + return 0; + +#define DEBUG + /* Run AVX test only if host has AVX support. */ + if ((ecx & bit_OSXSAVE) == bit_OSXSAVE) + { + if (__get_cpuid_max (0, NULL) < 7) + return 0; + + __cpuid_count (7, 0, eax, ebx, ecx, edx); + + if ((ebx & bit_AVX512F) == bit_AVX512F) + { + avx512f_test (); +#ifdef DEBUG + printf ("PASSED\n"); +#endif + } +#ifdef DEBUG + else + printf ("SKIPPED\n"); +#endif + } +#ifdef DEBUG + else + printf ("SKIPPED\n"); +#endif + + return 0; +} diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_m512_returning.c b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_m512_returning.c new file mode 100644 index 00000000000..ee126b5510c --- /dev/null +++ b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_m512_returning.c @@ -0,0 +1,32 @@ +#include +#include "avx512f-check.h" +#include "args.h" + +struct IntegerRegisters iregs; +struct FloatRegisters fregs; +unsigned int num_iregs, num_fregs; + +__m512 +fun_test_returning___m512 (void) +{ + volatile_var++; + return (__m512){73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +} + +__m512 test_512; + +static void +avx512f_test (void) +{ + unsigned failed = 0; + ZMM_T zmmt1, zmmt2; + + clear_struct_registers; + test_512 = (__m512){73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + zmmt1._m512[0] = test_512; + zmmt2._m512[0] = WRAP_RET (fun_test_returning___m512)(); + if (memcmp (&zmmt1, &zmmt2, sizeof (zmmt2)) != 0) + printf ("fail m512\n"), failed++; + if (failed) + abort (); +} diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_m512.c b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_m512.c new file mode 100644 index 00000000000..ead9c6797e1 --- /dev/null +++ b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_m512.c @@ -0,0 +1,168 @@ +#include +#include "avx512f-check.h" +#include "args.h" + +struct IntegerRegisters iregs; +struct FloatRegisters fregs; +unsigned int num_iregs, num_fregs; + +/* This struct holds values for argument checking. */ +struct +{ + ZMM_T i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23; +} values; + +char *pass; +int failed = 0; + +#undef assert +#define assert(c) do { \ + if (!(c)) {failed++; printf ("failed %s\n", pass); } \ +} while (0) + +#define compare(X1,X2,T) do { \ + assert (memcmp (&X1, &X2, sizeof (T)) == 0); \ +} while (0) + +fun_check_passing_m512_8_values (__m512 i0 ATTRIBUTE_UNUSED, __m512 i1 ATTRIBUTE_UNUSED, __m512 i2 ATTRIBUTE_UNUSED, __m512 i3 ATTRIBUTE_UNUSED, __m512 i4 ATTRIBUTE_UNUSED, __m512 i5 ATTRIBUTE_UNUSED, __m512 i6 ATTRIBUTE_UNUSED, __m512 i7 ATTRIBUTE_UNUSED) +{ + /* Check argument values. */ + compare (values.i0, i0, __m512); + compare (values.i1, i1, __m512); + compare (values.i2, i2, __m512); + compare (values.i3, i3, __m512); + compare (values.i4, i4, __m512); + compare (values.i5, i5, __m512); + compare (values.i6, i6, __m512); + compare (values.i7, i7, __m512); +} + +void +fun_check_passing_m512_8_regs (__m512 i0 ATTRIBUTE_UNUSED, __m512 i1 ATTRIBUTE_UNUSED, __m512 i2 ATTRIBUTE_UNUSED, __m512 i3 ATTRIBUTE_UNUSED, __m512 i4 ATTRIBUTE_UNUSED, __m512 i5 ATTRIBUTE_UNUSED, __m512 i6 ATTRIBUTE_UNUSED, __m512 i7 ATTRIBUTE_UNUSED) +{ + /* Check register contents. */ + check_m512_arguments; +} + +void +fun_check_passing_m512_20_values (__m512 i0 ATTRIBUTE_UNUSED, __m512 i1 ATTRIBUTE_UNUSED, __m512 i2 ATTRIBUTE_UNUSED, __m512 i3 ATTRIBUTE_UNUSED, __m512 i4 ATTRIBUTE_UNUSED, __m512 i5 ATTRIBUTE_UNUSED, __m512 i6 ATTRIBUTE_UNUSED, __m512 i7 ATTRIBUTE_UNUSED, __m512 i8 ATTRIBUTE_UNUSED, __m512 i9 ATTRIBUTE_UNUSED, __m512 i10 ATTRIBUTE_UNUSED, __m512 i11 ATTRIBUTE_UNUSED, __m512 i12 ATTRIBUTE_UNUSED, __m512 i13 ATTRIBUTE_UNUSED, __m512 i14 ATTRIBUTE_UNUSED, __m512 i15 ATTRIBUTE_UNUSED, __m512 i16 ATTRIBUTE_UNUSED, __m512 i17 ATTRIBUTE_UNUSED, __m512 i18 ATTRIBUTE_UNUSED, __m512 i19 ATTRIBUTE_UNUSED) +{ + /* Check argument values. */ + compare (values.i0, i0, __m512); + compare (values.i1, i1, __m512); + compare (values.i2, i2, __m512); + compare (values.i3, i3, __m512); + compare (values.i4, i4, __m512); + compare (values.i5, i5, __m512); + compare (values.i6, i6, __m512); + compare (values.i7, i7, __m512); + compare (values.i8, i8, __m512); + compare (values.i9, i9, __m512); + compare (values.i10, i10, __m512); + compare (values.i11, i11, __m512); + compare (values.i12, i12, __m512); + compare (values.i13, i13, __m512); + compare (values.i14, i14, __m512); + compare (values.i15, i15, __m512); + compare (values.i16, i16, __m512); + compare (values.i17, i17, __m512); + compare (values.i18, i18, __m512); + compare (values.i19, i19, __m512); +} + +void +fun_check_passing_m512_20_regs (__m512 i0 ATTRIBUTE_UNUSED, __m512 i1 ATTRIBUTE_UNUSED, __m512 i2 ATTRIBUTE_UNUSED, __m512 i3 ATTRIBUTE_UNUSED, __m512 i4 ATTRIBUTE_UNUSED, __m512 i5 ATTRIBUTE_UNUSED, __m512 i6 ATTRIBUTE_UNUSED, __m512 i7 ATTRIBUTE_UNUSED, __m512 i8 ATTRIBUTE_UNUSED, __m512 i9 ATTRIBUTE_UNUSED, __m512 i10 ATTRIBUTE_UNUSED, __m512 i11 ATTRIBUTE_UNUSED, __m512 i12 ATTRIBUTE_UNUSED, __m512 i13 ATTRIBUTE_UNUSED, __m512 i14 ATTRIBUTE_UNUSED, __m512 i15 ATTRIBUTE_UNUSED, __m512 i16 ATTRIBUTE_UNUSED, __m512 i17 ATTRIBUTE_UNUSED, __m512 i18 ATTRIBUTE_UNUSED, __m512 i19 ATTRIBUTE_UNUSED) +{ + /* Check register contents. */ + check_m512_arguments; +} + + +#define def_check_passing8(_i0, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _func1, _func2, TYPE) \ + values.i0.TYPE[0] = _i0; \ + values.i1.TYPE[0] = _i1; \ + values.i2.TYPE[0] = _i2; \ + values.i3.TYPE[0] = _i3; \ + values.i4.TYPE[0] = _i4; \ + values.i5.TYPE[0] = _i5; \ + values.i6.TYPE[0] = _i6; \ + values.i7.TYPE[0] = _i7; \ + WRAP_CALL(_func1) (_i0, _i1, _i2, _i3, _i4, _i5, _i6, _i7); \ + \ + clear_struct_registers; \ + fregs.F0.TYPE[0] = _i0; \ + fregs.F1.TYPE[0] = _i1; \ + fregs.F2.TYPE[0] = _i2; \ + fregs.F3.TYPE[0] = _i3; \ + fregs.F4.TYPE[0] = _i4; \ + fregs.F5.TYPE[0] = _i5; \ + fregs.F6.TYPE[0] = _i6; \ + fregs.F7.TYPE[0] = _i7; \ + num_fregs = 8; \ + WRAP_CALL(_func2) (_i0, _i1, _i2, _i3, _i4, _i5, _i6, _i7); + +#define def_check_passing20(_i0, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, _i9, _i10, _i11, _i12, _i13, _i14, _i15, _i16, _i17, _i18, _i19, _func1, _func2, TYPE) \ + values.i0.TYPE[0] = _i0; \ + values.i1.TYPE[0] = _i1; \ + values.i2.TYPE[0] = _i2; \ + values.i3.TYPE[0] = _i3; \ + values.i4.TYPE[0] = _i4; \ + values.i5.TYPE[0] = _i5; \ + values.i6.TYPE[0] = _i6; \ + values.i7.TYPE[0] = _i7; \ + values.i8.TYPE[0] = _i8; \ + values.i9.TYPE[0] = _i9; \ + values.i10.TYPE[0] = _i10; \ + values.i11.TYPE[0] = _i11; \ + values.i12.TYPE[0] = _i12; \ + values.i13.TYPE[0] = _i13; \ + values.i14.TYPE[0] = _i14; \ + values.i15.TYPE[0] = _i15; \ + values.i16.TYPE[0] = _i16; \ + values.i17.TYPE[0] = _i17; \ + values.i18.TYPE[0] = _i18; \ + values.i19.TYPE[0] = _i19; \ + WRAP_CALL(_func1) (_i0, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, _i9, _i10, _i11, _i12, _i13, _i14, _i15, _i16, _i17, _i18, _i19); \ + \ + clear_struct_registers; \ + fregs.F0.TYPE[0] = _i0; \ + fregs.F1.TYPE[0] = _i1; \ + fregs.F2.TYPE[0] = _i2; \ + fregs.F3.TYPE[0] = _i3; \ + fregs.F4.TYPE[0] = _i4; \ + fregs.F5.TYPE[0] = _i5; \ + fregs.F6.TYPE[0] = _i6; \ + fregs.F7.TYPE[0] = _i7; \ + num_fregs = 8; \ + WRAP_CALL(_func2) (_i0, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, _i9, _i10, _i11, _i12, _i13, _i14, _i15, _i16, _i17, _i18, _i19); + +void +test_m512_on_stack () +{ + __m512 x[8]; + int i; + for (i = 0; i < 8; i++) + x[i] = (__m512){32+i, 0, 0, 0, 0, 0, 0, 0}; + pass = "m512-8"; + def_check_passing8(x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], fun_check_passing_m512_8_values, fun_check_passing_m512_8_regs, _m512); +} + +void +test_too_many_m512 () +{ + __m512 x[20]; + int i; + for (i = 0; i < 20; i++) + x[i] = (__m512){32+i, 0, 0, 0, 0, 0, 0, 0}; + pass = "m512-20"; + def_check_passing20(x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17], x[18], x[19], fun_check_passing_m512_20_values, fun_check_passing_m512_20_regs, _m512); +} + +static void +avx512f_test (void) +{ + test_m512_on_stack (); + test_too_many_m512 (); + if (failed) + abort (); +} diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_structs.c b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_structs.c new file mode 100644 index 00000000000..a5e147734af --- /dev/null +++ b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_structs.c @@ -0,0 +1,73 @@ +#include "avx512f-check.h" +#include "args.h" + +struct IntegerRegisters iregs; +struct FloatRegisters fregs; +unsigned int num_iregs, num_fregs; + +struct m512_struct +{ + __m512 x; +}; + +struct m512_2_struct +{ + __m512 x1, x2; +}; + +/* Check that the struct is passed as the individual members in fregs. */ +void +check_struct_passing1 (struct m512_struct ms1 ATTRIBUTE_UNUSED, + struct m512_struct ms2 ATTRIBUTE_UNUSED, + struct m512_struct ms3 ATTRIBUTE_UNUSED, + struct m512_struct ms4 ATTRIBUTE_UNUSED, + struct m512_struct ms5 ATTRIBUTE_UNUSED, + struct m512_struct ms6 ATTRIBUTE_UNUSED, + struct m512_struct ms7 ATTRIBUTE_UNUSED, + struct m512_struct ms8 ATTRIBUTE_UNUSED) +{ + /* Check the passing on the stack by comparing the address of the + stack elements to the expected place on the stack. */ + assert ((unsigned long)&ms1.x == rsp+8); + assert ((unsigned long)&ms2.x == rsp+72); + assert ((unsigned long)&ms3.x == rsp+136); + assert ((unsigned long)&ms4.x == rsp+200); + assert ((unsigned long)&ms5.x == rsp+264); + assert ((unsigned long)&ms6.x == rsp+328); + assert ((unsigned long)&ms7.x == rsp+392); + assert ((unsigned long)&ms8.x == rsp+456); +} + +void +check_struct_passing2 (struct m512_2_struct ms ATTRIBUTE_UNUSED) +{ + /* Check the passing on the stack by comparing the address of the + stack elements to the expected place on the stack. */ + assert ((unsigned long)&ms.x1 == rsp+8); + assert ((unsigned long)&ms.x2 == rsp+72); +} + +static void +avx512f_test (void) +{ + struct m512_struct m512s [8]; + struct m512_2_struct m512_2s = { + { 48.394, 39.3, -397.9, 3484.9, -8.394, -93.3, 7.9, 84.94, + 48.3941, 39.31, -397.91, 3484.91, -8.3941, -93.31, 7.91, 84.941 }, + { -8.394, -3.3, -39.9, 34.9, 7.9, 84.94, -48.394, 39.3, + -8.3942, -3.32, -39.92, 34.92, 7.92, 84.942, -48.3942, 39.32 } + }; + int i; + + for (i = 0; i < 8; i++) + m512s[i].x = (__m512){32+i, 0, i, 0, -i, 0, i - 12, i + 8, + 32+i, 0, i, 0, -i, 0, i - 12, i + 8}; + + clear_struct_registers; + for (i = 0; i < 8; i++) + (&fregs.zmm0)[i]._m512[0] = m512s[i].x; + num_fregs = 8; + WRAP_CALL (check_struct_passing1)(m512s[0], m512s[1], m512s[2], m512s[3], + m512s[4], m512s[5], m512s[6], m512s[7]); + WRAP_CALL (check_struct_passing2)(m512_2s); +} diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_unions.c b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_unions.c new file mode 100644 index 00000000000..97122900c47 --- /dev/null +++ b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_unions.c @@ -0,0 +1,242 @@ +#include "avx512f-check.h" +#include "args.h" + +struct IntegerRegisters iregs; +struct FloatRegisters fregs; +unsigned int num_iregs, num_fregs; + +union un1 +{ + __m512 x; + float f; +}; + +union un2 +{ + __m512 x; + double d; +}; + +union un3 +{ + __m512 x; + __m128 v; +}; + +union un4 +{ + __m512 x; + long double ld; +}; + +union un5 +{ + __m512 x; + int i; +}; + +union un6 +{ + __m512 x; + __m256 v; +}; + + +void +check_union_passing1(union un1 u1 ATTRIBUTE_UNUSED, + union un1 u2 ATTRIBUTE_UNUSED, + union un1 u3 ATTRIBUTE_UNUSED, + union un1 u4 ATTRIBUTE_UNUSED, + union un1 u5 ATTRIBUTE_UNUSED, + union un1 u6 ATTRIBUTE_UNUSED, + union un1 u7 ATTRIBUTE_UNUSED, + union un1 u8 ATTRIBUTE_UNUSED) +{ + /* Check the passing on the stack by comparing the address of the + stack elements to the expected place on the stack. */ + assert ((unsigned long)&u1.x == rsp+8); + assert ((unsigned long)&u1.f == rsp+8); + assert ((unsigned long)&u2.x == rsp+72); + assert ((unsigned long)&u2.f == rsp+72); + assert ((unsigned long)&u3.x == rsp+136); + assert ((unsigned long)&u3.f == rsp+136); + assert ((unsigned long)&u4.x == rsp+200); + assert ((unsigned long)&u4.f == rsp+200); + assert ((unsigned long)&u5.x == rsp+264); + assert ((unsigned long)&u5.f == rsp+264); + assert ((unsigned long)&u6.x == rsp+328); + assert ((unsigned long)&u6.f == rsp+328); + assert ((unsigned long)&u7.x == rsp+392); + assert ((unsigned long)&u7.f == rsp+392); + assert ((unsigned long)&u8.x == rsp+456); + assert ((unsigned long)&u8.f == rsp+456); +} + +void +check_union_passing2(union un2 u1 ATTRIBUTE_UNUSED, + union un2 u2 ATTRIBUTE_UNUSED, + union un2 u3 ATTRIBUTE_UNUSED, + union un2 u4 ATTRIBUTE_UNUSED, + union un2 u5 ATTRIBUTE_UNUSED, + union un2 u6 ATTRIBUTE_UNUSED, + union un2 u7 ATTRIBUTE_UNUSED, + union un2 u8 ATTRIBUTE_UNUSED) +{ + /* Check the passing on the stack by comparing the address of the + stack elements to the expected place on the stack. */ + assert ((unsigned long)&u1.x == rsp+8); + assert ((unsigned long)&u1.d == rsp+8); + assert ((unsigned long)&u2.x == rsp+72); + assert ((unsigned long)&u2.d == rsp+72); + assert ((unsigned long)&u3.x == rsp+136); + assert ((unsigned long)&u3.d == rsp+136); + assert ((unsigned long)&u4.x == rsp+200); + assert ((unsigned long)&u4.d == rsp+200); + assert ((unsigned long)&u5.x == rsp+264); + assert ((unsigned long)&u5.d == rsp+264); + assert ((unsigned long)&u6.x == rsp+328); + assert ((unsigned long)&u6.d == rsp+328); + assert ((unsigned long)&u7.x == rsp+392); + assert ((unsigned long)&u7.d == rsp+392); + assert ((unsigned long)&u8.x == rsp+456); + assert ((unsigned long)&u8.d == rsp+456); +} + +void +check_union_passing3(union un3 u1 ATTRIBUTE_UNUSED, + union un3 u2 ATTRIBUTE_UNUSED, + union un3 u3 ATTRIBUTE_UNUSED, + union un3 u4 ATTRIBUTE_UNUSED, + union un3 u5 ATTRIBUTE_UNUSED, + union un3 u6 ATTRIBUTE_UNUSED, + union un3 u7 ATTRIBUTE_UNUSED, + union un3 u8 ATTRIBUTE_UNUSED) +{ + /* Check the passing on the stack by comparing the address of the + stack elements to the expected place on the stack. */ + assert ((unsigned long)&u1.x == rsp+8); + assert ((unsigned long)&u1.v == rsp+8); + assert ((unsigned long)&u2.x == rsp+72); + assert ((unsigned long)&u2.v == rsp+72); + assert ((unsigned long)&u3.x == rsp+136); + assert ((unsigned long)&u3.v == rsp+136); + assert ((unsigned long)&u4.x == rsp+200); + assert ((unsigned long)&u4.v == rsp+200); + assert ((unsigned long)&u5.x == rsp+264); + assert ((unsigned long)&u5.v == rsp+264); + assert ((unsigned long)&u6.x == rsp+328); + assert ((unsigned long)&u6.v == rsp+328); + assert ((unsigned long)&u7.x == rsp+392); + assert ((unsigned long)&u7.v == rsp+392); + assert ((unsigned long)&u8.x == rsp+456); + assert ((unsigned long)&u8.v == rsp+456); +} + +void +check_union_passing4(union un4 u ATTRIBUTE_UNUSED) +{ + /* Check the passing on the stack by comparing the address of the + stack elements to the expected place on the stack. */ + assert ((unsigned long)&u.x == rsp+8); + assert ((unsigned long)&u.ld == rsp+8); +} + +void +check_union_passing5(union un5 u ATTRIBUTE_UNUSED) +{ + /* Check the passing on the stack by comparing the address of the + stack elements to the expected place on the stack. */ + assert ((unsigned long)&u.x == rsp+8); + assert ((unsigned long)&u.i == rsp+8); +} + +void +check_union_passing6(union un6 u1 ATTRIBUTE_UNUSED, + union un6 u2 ATTRIBUTE_UNUSED, + union un6 u3 ATTRIBUTE_UNUSED, + union un6 u4 ATTRIBUTE_UNUSED, + union un6 u5 ATTRIBUTE_UNUSED, + union un6 u6 ATTRIBUTE_UNUSED, + union un6 u7 ATTRIBUTE_UNUSED, + union un6 u8 ATTRIBUTE_UNUSED) +{ + assert ((unsigned long)&u1.x == rsp+8); + assert ((unsigned long)&u1.v == rsp+8); + assert ((unsigned long)&u2.x == rsp+72); + assert ((unsigned long)&u2.v == rsp+72); + assert ((unsigned long)&u3.x == rsp+136); + assert ((unsigned long)&u3.v == rsp+136); + assert ((unsigned long)&u4.x == rsp+200); + assert ((unsigned long)&u4.v == rsp+200); + assert ((unsigned long)&u5.x == rsp+264); + assert ((unsigned long)&u5.v == rsp+264); + assert ((unsigned long)&u6.x == rsp+328); + assert ((unsigned long)&u6.v == rsp+328); + assert ((unsigned long)&u7.x == rsp+392); + assert ((unsigned long)&u7.v == rsp+392); + assert ((unsigned long)&u8.x == rsp+456); + assert ((unsigned long)&u8.v == rsp+456); +} + +#define check_union_passing1 WRAP_CALL(check_union_passing1) +#define check_union_passing2 WRAP_CALL(check_union_passing2) +#define check_union_passing3 WRAP_CALL(check_union_passing3) +#define check_union_passing4 WRAP_CALL(check_union_passing4) +#define check_union_passing5 WRAP_CALL(check_union_passing5) +#define check_union_passing6 WRAP_CALL(check_union_passing6) + +static void +avx512f_test (void) +{ + union un1 u1[8]; + union un2 u2[8]; + union un3 u3[8]; + union un4 u4; + union un5 u5; + union un6 u6[8]; + int i; + + for (i = 0; i < 8; i++) + u1[i].x = (__m512){32+i, 0, i, 0, -i, 0, i - 12, i + 8, + 32+i, 0, i, 0, -i, 0, i - 12, i + 8}; + + clear_struct_registers; + for (i = 0; i < 8; i++) + (&fregs.zmm0)[i]._m512[0] = u1[i].x; + num_fregs = 8; + check_union_passing1(u1[0], u1[1], u1[2], u1[3], + u1[4], u1[5], u1[6], u1[7]); + + clear_struct_registers; + for (i = 0; i < 8; i++) + { + u2[i].x = u1[i].x; + (&fregs.zmm0)[i]._m512[0] = u2[i].x; + } + num_fregs = 8; + check_union_passing2(u2[0], u2[1], u2[2], u2[3], + u2[4], u2[5], u2[6], u2[7]); + + clear_struct_registers; + for (i = 0; i < 8; i++) + { + u3[i].x = u1[i].x; + (&fregs.zmm0)[i]._m512[0] = u3[i].x; + } + num_fregs = 8; + check_union_passing3(u3[0], u3[1], u3[2], u3[3], + u3[4], u3[5], u3[6], u3[7]); + + check_union_passing4(u4); + check_union_passing5(u5); + + clear_struct_registers; + for (i = 0; i < 8; i++) + { + u6[i].x = u1[i].x; + (&fregs.zmm0)[i]._m512[0] = u6[i].x; + } + num_fregs = 8; + check_union_passing6(u6[0], u6[1], u6[2], u6[3], + u6[4], u6[5], u6[6], u6[7]); +} diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 3fe71d74147..9a5e024fd54 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -5170,6 +5170,19 @@ proc check_prefer_avx128 { } { } +# Return 1 if avx512f instructions can be compiled. + +proc check_effective_target_avx512f { } { + return [check_no_compiler_messages avx512f object { + typedef double __m512d __attribute__ ((__vector_size__ (64))); + + void _mm512_add (__m512d a) + { + __builtin_ia32_addpd512_mask (a, a, a, 1, 4); + } + } "-O2 -mavx512f" ] +} + # Return 1 if avx instructions can be compiled. proc check_effective_target_avx { } { -- cgit v1.2.1 From fc975a409013babbdcbb4c2e3e195ca927dc364d Mon Sep 17 00:00:00 2001 From: kyukhin Date: Tue, 31 Dec 2013 11:39:07 +0000 Subject: gcc/ * common/config/i386/i386-common.c (OPTION_MASK_ISA_SHA_SET): New. (OPTION_MASK_ISA_SHA_UNSET): Ditto. (ix86_handle_option): Handle OPT_msha. * config.gcc (extra_headers): Add shaintrin.h. * config/i386/cpuid.h (bit_SHA): New. * config/i386/driver-i386.c (host_detect_local_cpu): Detect SHA instructions. * config/i386/i386-c.c (ix86_target_macros_internal): Handle OPTION_MASK_ISA_SHA. * config/i386/i386.c (ix86_target_string): Add -msha. (ix86_option_override_internal): Add PTA_SHA. (ix86_valid_target_attribute_inner_p): Handle OPT_msha. (enum ix86_builtins): Add IX86_BUILTIN_SHA1MSG1, IX86_BUILTIN_SHA1MSG2, IX86_BUILTIN_SHA1NEXTE, IX86_BUILTIN_SHA1RNDS4, IX86_BUILTIN_SHA256MSG1, IX86_BUILTIN_SHA256MSG2, IX86_BUILTIN_SHA256RNDS2. (bdesc_args): Add BUILTINS defined above. (ix86_init_mmx_sse_builtins): Add __builtin_ia32_sha1msg1, __builtin_ia32_sha1msg2, __builtin_ia32_sha1nexte, __builtin_ia32_sha1rnds4, __builtin_ia32_sha256msg1, __builtin_ia32_sha256msg2, __builtin_ia32_sha256rnds2. (ix86_expand_args_builtin): Handle V4SI_FTYPE_V4SI_V4SI_V4SI, add warning for CODE_FOR_sha1rnds4. * config/i386/i386.h (TARGET_SHA): New. (TARGET_SHA_P): Ditto. * config/i386/i386.opt (-msha): Document it. * config/i386/immintrin.h: Add shaintrin.h. * config/i386/shaintrin.h: New. * config/i386/sse.md (unspec): Add UNSPEC_SHA1MSG1, UNSPEC_SHA1MSG2, UNSPEC_SHA1NEXTE, UNSPEC_SHA1RNDS4, UNSPEC_SHA256MSG1, UNSPEC_SHA256MSG2, UNSPEC_SHA256RNDS2. (sha1msg1): New. (sha1msg2): Ditto. (sha1nexte): Ditto. (sha1rnds4): Ditto. (sha256msg1): Ditto. (sha256msg2): Ditto. (sha256rnds2): Ditto. * doc/invoke.texi: Add -msha. testsuite/ * gcc.target/i386/avx-1.c: Add define for __builtin_ia32_sha1rnds4. * gcc.target/i386/i386.exp (check_effective_target_sha): New. * gcc.target/i386/sha-check.h: New file. * gcc.target/i386/sha1msg1-1.c: Ditto. * gcc.target/i386/sha1msg1-2.c: Ditto. * gcc.target/i386/sha1msg2-1.c: Ditto. * gcc.target/i386/sha1msg2-2.c: Ditto. * gcc.target/i386/sha1nexte-1: Ditto. * gcc.target/i386/sha1nexte-2: Ditto. * gcc.target/i386/sha1rnds4-1.c: Ditto. * gcc.target/i386/sha1rnds4-2.c: Ditto. * gcc.target/i386/sha256msg1-1.c: Ditto. * gcc.target/i386/sha256msg1-2.c: Ditto. * gcc.target/i386/sha256msg2-1.c: Ditto. * gcc.target/i386/sha256msg2-2.c: Ditto. * gcc.target/i386/sha256rnds2-1.c: Ditto. * gcc.target/i386/sha256rnds2-2.c: Ditto. * gcc.target/i386/sse-13.c: Add __builtin_ia32_sha1rnds4. * gcc.target/i386/sse-14.c: Add _mm_sha1rnds4_epu32. * gcc.target/i386/sse-22.c: Ditto. * gcc.target/i386/sse-23.c: Add __builtin_ia32_sha1rnds4. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206263 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 50 ++++++++++++++ gcc/common/config/i386/i386-common.c | 18 ++++- gcc/config.gcc | 6 +- gcc/config/i386/cpuid.h | 1 + gcc/config/i386/driver-i386.c | 6 +- gcc/config/i386/i386-c.c | 2 + gcc/config/i386/i386.c | 46 ++++++++++++- gcc/config/i386/i386.h | 2 + gcc/config/i386/i386.opt | 4 ++ gcc/config/i386/immintrin.h | 2 + gcc/config/i386/shaintrin.h | 99 +++++++++++++++++++++++++++ gcc/config/i386/sse.md | 90 ++++++++++++++++++++++++ gcc/doc/invoke.texi | 8 ++- gcc/testsuite/ChangeLog | 32 +++++++++ gcc/testsuite/g++.dg/other/i386-2.C | 2 +- gcc/testsuite/g++.dg/other/i386-3.C | 2 +- gcc/testsuite/gcc.target/i386/avx-1.c | 3 + gcc/testsuite/gcc.target/i386/i386.exp | 14 ++++ gcc/testsuite/gcc.target/i386/sha-check.h | 37 ++++++++++ gcc/testsuite/gcc.target/i386/sha1msg1-1.c | 13 ++++ gcc/testsuite/gcc.target/i386/sha1msg1-2.c | 42 ++++++++++++ gcc/testsuite/gcc.target/i386/sha1msg2-1.c | 13 ++++ gcc/testsuite/gcc.target/i386/sha1msg2-2.c | 44 ++++++++++++ gcc/testsuite/gcc.target/i386/sha1nexte-1.c | 13 ++++ gcc/testsuite/gcc.target/i386/sha1nexte-2.c | 36 ++++++++++ gcc/testsuite/gcc.target/i386/sha1rnds4-1.c | 13 ++++ gcc/testsuite/gcc.target/i386/sha1rnds4-2.c | 93 +++++++++++++++++++++++++ gcc/testsuite/gcc.target/i386/sha256msg1-1.c | 13 ++++ gcc/testsuite/gcc.target/i386/sha256msg1-2.c | 48 +++++++++++++ gcc/testsuite/gcc.target/i386/sha256msg2-1.c | 13 ++++ gcc/testsuite/gcc.target/i386/sha256msg2-2.c | 49 +++++++++++++ gcc/testsuite/gcc.target/i386/sha256rnds2-1.c | 13 ++++ gcc/testsuite/gcc.target/i386/sha256rnds2-2.c | 85 +++++++++++++++++++++++ gcc/testsuite/gcc.target/i386/sse-13.c | 3 + gcc/testsuite/gcc.target/i386/sse-14.c | 6 +- gcc/testsuite/gcc.target/i386/sse-22.c | 9 ++- gcc/testsuite/gcc.target/i386/sse-23.c | 5 +- 37 files changed, 918 insertions(+), 17 deletions(-) create mode 100644 gcc/config/i386/shaintrin.h create mode 100644 gcc/testsuite/gcc.target/i386/sha-check.h create mode 100644 gcc/testsuite/gcc.target/i386/sha1msg1-1.c create mode 100644 gcc/testsuite/gcc.target/i386/sha1msg1-2.c create mode 100644 gcc/testsuite/gcc.target/i386/sha1msg2-1.c create mode 100644 gcc/testsuite/gcc.target/i386/sha1msg2-2.c create mode 100644 gcc/testsuite/gcc.target/i386/sha1nexte-1.c create mode 100644 gcc/testsuite/gcc.target/i386/sha1nexte-2.c create mode 100644 gcc/testsuite/gcc.target/i386/sha1rnds4-1.c create mode 100644 gcc/testsuite/gcc.target/i386/sha1rnds4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/sha256msg1-1.c create mode 100644 gcc/testsuite/gcc.target/i386/sha256msg1-2.c create mode 100644 gcc/testsuite/gcc.target/i386/sha256msg2-1.c create mode 100644 gcc/testsuite/gcc.target/i386/sha256msg2-2.c create mode 100644 gcc/testsuite/gcc.target/i386/sha256rnds2-1.c create mode 100644 gcc/testsuite/gcc.target/i386/sha256rnds2-2.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be9476cae0d..7ce800182fb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,53 @@ +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_SHA_SET): New. + (OPTION_MASK_ISA_SHA_UNSET): Ditto. + (ix86_handle_option): Handle OPT_msha. + * config.gcc (extra_headers): Add shaintrin.h. + * config/i386/cpuid.h (bit_SHA): New. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect SHA + instructions. + * config/i386/i386-c.c (ix86_target_macros_internal): Handle + OPTION_MASK_ISA_SHA. + * config/i386/i386.c (ix86_target_string): Add -msha. + (ix86_option_override_internal): Add PTA_SHA. + (ix86_valid_target_attribute_inner_p): Handle OPT_msha. + (enum ix86_builtins): Add IX86_BUILTIN_SHA1MSG1, + IX86_BUILTIN_SHA1MSG2, IX86_BUILTIN_SHA1NEXTE, IX86_BUILTIN_SHA1RNDS4, + IX86_BUILTIN_SHA256MSG1, IX86_BUILTIN_SHA256MSG2, + IX86_BUILTIN_SHA256RNDS2. + (bdesc_args): Add BUILTINS defined above. + (ix86_init_mmx_sse_builtins): Add __builtin_ia32_sha1msg1, + __builtin_ia32_sha1msg2, __builtin_ia32_sha1nexte, + __builtin_ia32_sha1rnds4, __builtin_ia32_sha256msg1, + __builtin_ia32_sha256msg2, __builtin_ia32_sha256rnds2. + (ix86_expand_args_builtin): Handle V4SI_FTYPE_V4SI_V4SI_V4SI, add + warning for CODE_FOR_sha1rnds4. + * config/i386/i386.h (TARGET_SHA): New. + (TARGET_SHA_P): Ditto. + * config/i386/i386.opt (-msha): Document it. + * config/i386/immintrin.h: Add shaintrin.h. + * config/i386/shaintrin.h: New. + * config/i386/sse.md (unspec): Add UNSPEC_SHA1MSG1, UNSPEC_SHA1MSG2, + UNSPEC_SHA1NEXTE, UNSPEC_SHA1RNDS4, UNSPEC_SHA256MSG1, + UNSPEC_SHA256MSG2, UNSPEC_SHA256RNDS2. + (sha1msg1): New. + (sha1msg2): Ditto. + (sha1nexte): Ditto. + (sha1rnds4): Ditto. + (sha256msg1): Ditto. + (sha256msg2): Ditto. + (sha256rnds2): Ditto. + * doc/invoke.texi: Add -msha. + 2013-12-31 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/common/config/i386/i386-common.c b/gcc/common/config/i386/i386-common.c index e07479da28c..3d87a62f0f7 100644 --- a/gcc/common/config/i386/i386-common.c +++ b/gcc/common/config/i386/i386-common.c @@ -84,9 +84,11 @@ along with GCC; see the file COPYING3. If not see #define OPTION_MASK_ISA_LWP_SET \ OPTION_MASK_ISA_LWP -/* AES and PCLMUL need SSE2 because they use xmm registers */ +/* AES, SHA and PCLMUL need SSE2 because they use xmm registers. */ #define OPTION_MASK_ISA_AES_SET \ (OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2_SET) +#define OPTION_MASK_ISA_SHA_SET \ + (OPTION_MASK_ISA_SHA | OPTION_MASK_ISA_SSE2_SET) #define OPTION_MASK_ISA_PCLMUL_SET \ (OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2_SET) @@ -166,6 +168,7 @@ along with GCC; see the file COPYING3. If not see #define OPTION_MASK_ISA_LWP_UNSET OPTION_MASK_ISA_LWP #define OPTION_MASK_ISA_AES_UNSET OPTION_MASK_ISA_AES +#define OPTION_MASK_ISA_SHA_UNSET OPTION_MASK_ISA_SHA #define OPTION_MASK_ISA_PCLMUL_UNSET OPTION_MASK_ISA_PCLMUL #define OPTION_MASK_ISA_ABM_UNSET OPTION_MASK_ISA_ABM #define OPTION_MASK_ISA_BMI_UNSET OPTION_MASK_ISA_BMI @@ -611,6 +614,19 @@ ix86_handle_option (struct gcc_options *opts, } return true; + case OPT_msha: + if (value) + { + opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SHA_SET; + opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SHA_SET; + } + else + { + opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SHA_UNSET; + opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SHA_UNSET; + } + return true; + case OPT_mpclmul: if (value) { diff --git a/gcc/config.gcc b/gcc/config.gcc index 9ce29901f6e..db7f68411b7 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -375,7 +375,8 @@ i[34567]86-*-*) avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h - avx512cdintrin.h avx512erintrin.h avx512pfintrin.h" + avx512cdintrin.h avx512erintrin.h avx512pfintrin.h + shaintrin.h" ;; x86_64-*-*) cpu_type=i386 @@ -391,7 +392,8 @@ x86_64-*-*) avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h - avx512cdintrin.h avx512erintrin.h avx512pfintrin.h" + avx512cdintrin.h avx512erintrin.h avx512pfintrin.h + shaintrin.h" need_64bit_hwint=yes ;; ia64-*-*) diff --git a/gcc/config/i386/cpuid.h b/gcc/config/i386/cpuid.h index aa91e1ab8d8..de1a463d6b7 100644 --- a/gcc/config/i386/cpuid.h +++ b/gcc/config/i386/cpuid.h @@ -77,6 +77,7 @@ #define bit_AVX512PF (1 << 26) #define bit_AVX512ER (1 << 27) #define bit_AVX512CD (1 << 28) +#define bit_SHA (1 << 29) /* Extended State Enumeration Sub-leaf (%eax == 13, %ecx == 1) */ #define bit_XSAVEOPT (1 << 0) diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index e02d05d6620..985db959aca 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -409,7 +409,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) unsigned int has_rdseed = 0, has_prfchw = 0, has_adx = 0; unsigned int has_osxsave = 0, has_fxsr = 0, has_xsave = 0, has_xsaveopt = 0; unsigned int has_avx512er = 0, has_avx512pf = 0, has_avx512cd = 0; - unsigned int has_avx512f = 0; + unsigned int has_avx512f = 0, has_sha = 0; bool arch; @@ -485,6 +485,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) has_avx512er = ebx & bit_AVX512ER; has_avx512pf = ebx & bit_AVX512PF; has_avx512cd = ebx & bit_AVX512CD; + has_sha = ebx & bit_SHA; } if (max_level >= 13) @@ -850,6 +851,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) const char *sahf = has_lahf_lm ? " -msahf" : " -mno-sahf"; const char *movbe = has_movbe ? " -mmovbe" : " -mno-movbe"; const char *aes = has_aes ? " -maes" : " -mno-aes"; + const char *sha = has_sha ? " -msha" : " -mno-sha"; const char *pclmul = has_pclmul ? " -mpclmul" : " -mno-pclmul"; const char *popcnt = has_popcnt ? " -mpopcnt" : " -mno-popcnt"; const char *abm = has_abm ? " -mabm" : " -mno-abm"; @@ -882,7 +884,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) const char *avx512pf = has_avx512pf ? " -mavx512pf" : " -mno-avx512pf"; options = concat (options, mmx, mmx3dnow, sse, sse2, sse3, ssse3, - sse4a, cx16, sahf, movbe, aes, pclmul, + sse4a, cx16, sahf, movbe, aes, sha, pclmul, popcnt, abm, lwp, fma, fma4, xop, bmi, bmi2, tbm, avx, avx2, sse4_2, sse4_1, lzcnt, rtm, hle, rdrnd, f16c, fsgsbase, rdseed, prfchw, adx, diff --git a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c index 3710c6e176e..cc6af7ea3f7 100644 --- a/gcc/config/i386/i386-c.c +++ b/gcc/config/i386/i386-c.c @@ -327,6 +327,8 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, def_or_undef (parse_in, "__SSE4_2__"); if (isa_flag & OPTION_MASK_ISA_AES) def_or_undef (parse_in, "__AES__"); + if (isa_flag & OPTION_MASK_ISA_SHA) + def_or_undef (parse_in, "__SHA__"); if (isa_flag & OPTION_MASK_ISA_PCLMUL) def_or_undef (parse_in, "__PCLMUL__"); if (isa_flag & OPTION_MASK_ISA_AVX) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 95ebf52d2b5..4899fdb3886 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2534,6 +2534,7 @@ ix86_target_string (HOST_WIDE_INT isa, int flags, const char *arch, { "-mmovbe", OPTION_MASK_ISA_MOVBE }, { "-mcrc32", OPTION_MASK_ISA_CRC32 }, { "-maes", OPTION_MASK_ISA_AES }, + { "-msha", OPTION_MASK_ISA_SHA }, { "-mpclmul", OPTION_MASK_ISA_PCLMUL }, { "-mfsgsbase", OPTION_MASK_ISA_FSGSBASE }, { "-mrdrnd", OPTION_MASK_ISA_RDRND }, @@ -3029,6 +3030,7 @@ ix86_option_override_internal (bool main_args_p, #define PTA_AVX512ER (HOST_WIDE_INT_1 << 41) #define PTA_AVX512PF (HOST_WIDE_INT_1 << 42) #define PTA_AVX512CD (HOST_WIDE_INT_1 << 43) +#define PTA_SHA (HOST_WIDE_INT_1 << 45) #define PTA_CORE2 \ (PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_SSSE3 \ @@ -3526,8 +3528,11 @@ ix86_option_override_internal (bool main_args_p, && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_MOVBE)) opts->x_ix86_isa_flags |= OPTION_MASK_ISA_MOVBE; if (processor_alias_table[i].flags & PTA_AES - && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AES)) - opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AES; + && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_AES)) + ix86_isa_flags |= OPTION_MASK_ISA_AES; + if (processor_alias_table[i].flags & PTA_SHA + && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_SHA)) + ix86_isa_flags |= OPTION_MASK_ISA_SHA; if (processor_alias_table[i].flags & PTA_PCLMUL && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_PCLMUL)) opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PCLMUL; @@ -4416,6 +4421,7 @@ ix86_valid_target_attribute_inner_p (tree args, char *p_strings[], IX86_ATTR_ISA ("lzcnt", OPT_mlzcnt), IX86_ATTR_ISA ("tbm", OPT_mtbm), IX86_ATTR_ISA ("aes", OPT_maes), + IX86_ATTR_ISA ("sha", OPT_msha), IX86_ATTR_ISA ("avx", OPT_mavx), IX86_ATTR_ISA ("avx2", OPT_mavx2), IX86_ATTR_ISA ("avx512f", OPT_mavx512f), @@ -28288,6 +28294,15 @@ enum ix86_builtins IX86_BUILTIN_RSQRT28PD, IX86_BUILTIN_RSQRT28PS, + /* SHA builtins. */ + IX86_BUILTIN_SHA1MSG1, + IX86_BUILTIN_SHA1MSG2, + IX86_BUILTIN_SHA1NEXTE, + IX86_BUILTIN_SHA1RNDS4, + IX86_BUILTIN_SHA256MSG1, + IX86_BUILTIN_SHA256MSG2, + IX86_BUILTIN_SHA256RNDS2, + /* TFmode support builtins. */ IX86_BUILTIN_INFQ, IX86_BUILTIN_HUGE_VALQ, @@ -29934,6 +29949,15 @@ static const struct builtin_description bdesc_args[] = { OPTION_MASK_ISA_AVX512F, CODE_FOR_kunpckhi, "__builtin_ia32_kunpckhi", IX86_BUILTIN_KUNPCKBW, UNKNOWN, (int) HI_FTYPE_HI_HI }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_kxnorhi, "__builtin_ia32_kxnorhi", IX86_BUILTIN_KXNOR16, UNKNOWN, (int) HI_FTYPE_HI_HI }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_xorhi3, "__builtin_ia32_kxorhi", IX86_BUILTIN_KXOR16, UNKNOWN, (int) HI_FTYPE_HI_HI }, + + /* SHA */ + { OPTION_MASK_ISA_SSE2, CODE_FOR_sha1msg1, 0, IX86_BUILTIN_SHA1MSG1, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI }, + { OPTION_MASK_ISA_SSE2, CODE_FOR_sha1msg2, 0, IX86_BUILTIN_SHA1MSG2, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI }, + { OPTION_MASK_ISA_SSE2, CODE_FOR_sha1nexte, 0, IX86_BUILTIN_SHA1NEXTE, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI }, + { OPTION_MASK_ISA_SSE2, CODE_FOR_sha1rnds4, 0, IX86_BUILTIN_SHA1RNDS4, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT }, + { OPTION_MASK_ISA_SSE2, CODE_FOR_sha256msg1, 0, IX86_BUILTIN_SHA256MSG1, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI }, + { OPTION_MASK_ISA_SSE2, CODE_FOR_sha256msg2, 0, IX86_BUILTIN_SHA256MSG2, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI }, + { OPTION_MASK_ISA_SSE2, CODE_FOR_sha256rnds2, 0, IX86_BUILTIN_SHA256RNDS2, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI }, }; /* Builtins with rounding support. */ @@ -30762,6 +30786,22 @@ ix86_init_mmx_sse_builtins (void) VOID_FTYPE_QI_V8DI_PCINT_INT_INT, IX86_BUILTIN_SCATTERPFQPS); + /* SHA */ + def_builtin_const (OPTION_MASK_ISA_SHA, "__builtin_ia32_sha1msg1", + V4SI_FTYPE_V4SI_V4SI, IX86_BUILTIN_SHA1MSG1); + def_builtin_const (OPTION_MASK_ISA_SHA, "__builtin_ia32_sha1msg2", + V4SI_FTYPE_V4SI_V4SI, IX86_BUILTIN_SHA1MSG2); + def_builtin_const (OPTION_MASK_ISA_SHA, "__builtin_ia32_sha1nexte", + V4SI_FTYPE_V4SI_V4SI, IX86_BUILTIN_SHA1NEXTE); + def_builtin_const (OPTION_MASK_ISA_SHA, "__builtin_ia32_sha1rnds4", + V4SI_FTYPE_V4SI_V4SI_INT, IX86_BUILTIN_SHA1RNDS4); + def_builtin_const (OPTION_MASK_ISA_SHA, "__builtin_ia32_sha256msg1", + V4SI_FTYPE_V4SI_V4SI, IX86_BUILTIN_SHA256MSG1); + def_builtin_const (OPTION_MASK_ISA_SHA, "__builtin_ia32_sha256msg2", + V4SI_FTYPE_V4SI_V4SI, IX86_BUILTIN_SHA256MSG2); + def_builtin_const (OPTION_MASK_ISA_SHA, "__builtin_ia32_sha256rnds2", + V4SI_FTYPE_V4SI_V4SI_V4SI, IX86_BUILTIN_SHA256RNDS2); + /* RTM. */ def_builtin (OPTION_MASK_ISA_RTM, "__builtin_ia32_xabort", VOID_FTYPE_UNSIGNED, IX86_BUILTIN_XABORT); @@ -33491,6 +33531,7 @@ ix86_expand_args_builtin (const struct builtin_description *d, case V8SF_FTYPE_V8DF_V8SF_QI: case V8SI_FTYPE_V8DF_V8SI_QI: case V8SI_FTYPE_V8DI_V8SI_QI: + case V4SI_FTYPE_V4SI_V4SI_V4SI: nargs = 3; break; case V32QI_FTYPE_V32QI_V32QI_INT: @@ -33710,6 +33751,7 @@ ix86_expand_args_builtin (const struct builtin_description *d, error ("the last argument must be a 4-bit immediate"); return const0_rtx; + case CODE_FOR_sha1rnds4: case CODE_FOR_sse4_1_blendpd: case CODE_FOR_avx_vpermilv2df: case CODE_FOR_xop_vpermil2v2df3: diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 5976435a389..efb755194e6 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -102,6 +102,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #define TARGET_CRC32_P(x) TARGET_ISA_CRC32_P(x) #define TARGET_AES TARGET_ISA_AES #define TARGET_AES_P(x) TARGET_ISA_AES_P(x) +#define TARGET_SHA TARGET_ISA_SHA +#define TARGET_SHA_P(x) TARGET_ISA_SHA_P(x) #define TARGET_PCLMUL TARGET_ISA_PCLMUL #define TARGET_PCLMUL_P(x) TARGET_ISA_PCLMUL_P(x) #define TARGET_CMPXCHG16B TARGET_ISA_CX16 diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt index 1704c526746..e86a850e74d 100644 --- a/gcc/config/i386/i386.opt +++ b/gcc/config/i386/i386.opt @@ -725,6 +725,10 @@ maes Target Report Mask(ISA_AES) Var(ix86_isa_flags) Save Support AES built-in functions and code generation +msha +Target Report Mask(ISA_SHA) Var(ix86_isa_flags) Save +Support SHA1 and SHA256 built-in functions and code generation + mpclmul Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save Support PCLMUL built-in functions and code generation diff --git a/gcc/config/i386/immintrin.h b/gcc/config/i386/immintrin.h index fa75a30ba79..4fdf0000006 100644 --- a/gcc/config/i386/immintrin.h +++ b/gcc/config/i386/immintrin.h @@ -50,6 +50,8 @@ #include +#include + #include #include diff --git a/gcc/config/i386/shaintrin.h b/gcc/config/i386/shaintrin.h new file mode 100644 index 00000000000..58c5c5d1206 --- /dev/null +++ b/gcc/config/i386/shaintrin.h @@ -0,0 +1,99 @@ +/* Copyright (C) 2013 + Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GCC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + +#ifndef _IMMINTRIN_H_INCLUDED +#error "Never use directly; include instead." +#endif + +#ifndef _SHAINTRIN_H_INCLUDED +#define _SHAINTRIN_H_INCLUDED + +#ifndef __SHA__ +#pragma GCC push_options +#pragma GCC target("sha") +#define __DISABLE_SHA__ +#endif /* __SHA__ */ + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_sha1msg1_epu32 (__m128i __A, __m128i __B) +{ + return (__m128i) __builtin_ia32_sha1msg1 ((__v4si) __A, (__v4si) __B); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_sha1msg2_epu32 (__m128i __A, __m128i __B) +{ + return (__m128i) __builtin_ia32_sha1msg2 ((__v4si) __A, (__v4si) __B); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_sha1nexte_epu32 (__m128i __A, __m128i __B) +{ + return (__m128i) __builtin_ia32_sha1nexte ((__v4si) __A, (__v4si) __B); +} + +#ifdef __OPTIMIZE__ +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_sha1rnds4_epu32 (__m128i __A, __m128i __B, const int __I) +{ + return (__m128i) __builtin_ia32_sha1rnds4 ((__v4si) __A, (__v4si) __B, __I); +} +#else +#define _mm_sha1rnds4_epu32(A, B, I) \ + ((__m128i) __builtin_ia32_sha1rnds4 ((__v4si)(__m128i)A, \ + (__v4si)(__m128i)B, (int)I)) +#endif + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_sha256msg1_epu32 (__m128i __A, __m128i __B) +{ + return (__m128i) __builtin_ia32_sha256msg1 ((__v4si) __A, (__v4si) __B); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_sha256msg2_epu32 (__m128i __A, __m128i __B) +{ + return (__m128i) __builtin_ia32_sha256msg2 ((__v4si) __A, (__v4si) __B); +} + +extern __inline __m128i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_sha256rnds2_epu32 (__m128i __A, __m128i __B, __m128i __C) +{ + return (__m128i) __builtin_ia32_sha256rnds2 ((__v4si) __A, (__v4si) __B, + (__v4si) __C); +} + +#ifdef __DISABLE_SHA__ +#undef __DISABLE_SHA__ +#pragma GCC pop_options +#endif /* __DISABLE_SHA__ */ + +#endif /* _SHAINTRIN_H_INCLUDED */ diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index a3c0e0c2398..5005a478784 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -119,6 +119,15 @@ UNSPEC_EXP2 UNSPEC_RCP28 UNSPEC_RSQRT28 + + ;; For SHA support + UNSPEC_SHA1MSG1 + UNSPEC_SHA1MSG2 + UNSPEC_SHA1NEXTE + UNSPEC_SHA1RNDS4 + UNSPEC_SHA256MSG1 + UNSPEC_SHA256MSG2 + UNSPEC_SHA256RNDS2 ]) (define_c_enum "unspecv" [ @@ -15210,3 +15219,84 @@ [(set_attr "type" "sse") (set_attr "prefix" "evex") (set_attr "mode" "")]) + +(define_insn "sha1msg1" + [(set (match_operand:V4SI 0 "register_operand" "=x") + (unspec:V4SI + [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "nonimmediate_operand" "xm")] + UNSPEC_SHA1MSG1))] + "TARGET_SHA" + "sha1msg1\t{%2, %0|%0, %2}" + [(set_attr "type" "sselog1") + (set_attr "mode" "TI")]) + +(define_insn "sha1msg2" + [(set (match_operand:V4SI 0 "register_operand" "=x") + (unspec:V4SI + [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "nonimmediate_operand" "xm")] + UNSPEC_SHA1MSG2))] + "TARGET_SHA" + "sha1msg2\t{%2, %0|%0, %2}" + [(set_attr "type" "sselog1") + (set_attr "mode" "TI")]) + +(define_insn "sha1nexte" + [(set (match_operand:V4SI 0 "register_operand" "=x") + (unspec:V4SI + [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "nonimmediate_operand" "xm")] + UNSPEC_SHA1NEXTE))] + "TARGET_SHA" + "sha1nexte\t{%2, %0|%0, %2}" + [(set_attr "type" "sselog1") + (set_attr "mode" "TI")]) + +(define_insn "sha1rnds4" + [(set (match_operand:V4SI 0 "register_operand" "=x") + (unspec:V4SI + [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "nonimmediate_operand" "xm") + (match_operand:SI 3 "const_0_to_3_operand" "n")] + UNSPEC_SHA1RNDS4))] + "TARGET_SHA" + "sha1rnds4\t{%3, %2, %0|%0, %2, %3}" + [(set_attr "type" "sselog1") + (set_attr "length_immediate" "1") + (set_attr "mode" "TI")]) + +(define_insn "sha256msg1" + [(set (match_operand:V4SI 0 "register_operand" "=x") + (unspec:V4SI + [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "nonimmediate_operand" "xm")] + UNSPEC_SHA256MSG1))] + "TARGET_SHA" + "sha256msg1\t{%2, %0|%0, %2}" + [(set_attr "type" "sselog1") + (set_attr "mode" "TI")]) + +(define_insn "sha256msg2" + [(set (match_operand:V4SI 0 "register_operand" "=x") + (unspec:V4SI + [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "nonimmediate_operand" "xm")] + UNSPEC_SHA256MSG2))] + "TARGET_SHA" + "sha256msg2\t{%2, %0|%0, %2}" + [(set_attr "type" "sselog1") + (set_attr "mode" "TI")]) + +(define_insn "sha256rnds2" + [(set (match_operand:V4SI 0 "register_operand" "=x") + (unspec:V4SI + [(match_operand:V4SI 1 "register_operand" "0") + (match_operand:V4SI 2 "nonimmediate_operand" "xm") + (match_operand:V4SI 3 "register_operand" "Yz")] + UNSPEC_SHA256RNDS2))] + "TARGET_SHA" + "sha256rnds2\t{%3, %2, %0|%0, %2, %3}" + [(set_attr "type" "sselog1") + (set_attr "length_immediate" "1") + (set_attr "mode" "TI")]) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 0fd18248197..42c6ea45915 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -666,7 +666,7 @@ Objective-C and Objective-C++ Dialects}. -mrecip -mrecip=@var{opt} @gol -mvzeroupper -mprefer-avx128 @gol -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -msse4 -mavx @gol --mavx2 -mavx512f -mavx512pf -mavx512er -mavx512cd @gol +-mavx2 -mavx512f -mavx512pf -mavx512er -mavx512cd -msha @gol -maes -mpclmul -mfsgsbase -mrdrnd -mf16c -mfma @gol -msse4a -m3dnow -mpopcnt -mabm -mbmi -mtbm -mfma4 -mxop -mlzcnt @gol -mbmi2 -mfxsr -mxsave -mxsaveopt -mrtm -mlwp -mthreads @gol @@ -15192,6 +15192,8 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @itemx -mno-avx512er @itemx -mavx512cd @itemx -mno-avx512cd +@itemx -msha +@itemx -mno-sha @itemx -maes @itemx -mno-aes @itemx -mpclmul @@ -15240,8 +15242,8 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @opindex mno-3dnow These switches enable or disable the use of instructions in the MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, AVX, AVX2, AVX512F, AVX512PF, AVX512ER, AVX512CD, -AES, PCLMUL, FSGSBASE, RDRND, F16C, FMA, SSE4A, FMA4, XOP, LWP, ABM, BMI, BMI2, -FXSR, XSAVE, XSAVEOPT, LZCNT, RTM or 3DNow!@: +SHA, AES, PCLMUL, FSGSBASE, RDRND, F16C, FMA, SSE4A, FMA4, XOP, LWP, ABM, +BMI, BMI2, FXSR, XSAVE, XSAVEOPT, LZCNT, RTM, or 3DNow!@: extended instruction sets. These extensions are also available as built-in functions: see @ref{X86 Built-in Functions}, for details of the functions enabled and diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c76c3c2dc92..46d5c13e5f0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,35 @@ +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * gcc.target/i386/avx-1.c: Add define for __builtin_ia32_sha1rnds4. + * gcc.target/i386/i386.exp (check_effective_target_sha): New. + * gcc.target/i386/sha-check.h: New file. + * gcc.target/i386/sha1msg1-1.c: Ditto. + * gcc.target/i386/sha1msg1-2.c: Ditto. + * gcc.target/i386/sha1msg2-1.c: Ditto. + * gcc.target/i386/sha1msg2-2.c: Ditto. + * gcc.target/i386/sha1nexte-1: Ditto. + * gcc.target/i386/sha1nexte-2: Ditto. + * gcc.target/i386/sha1rnds4-1.c: Ditto. + * gcc.target/i386/sha1rnds4-2.c: Ditto. + * gcc.target/i386/sha256msg1-1.c: Ditto. + * gcc.target/i386/sha256msg1-2.c: Ditto. + * gcc.target/i386/sha256msg2-1.c: Ditto. + * gcc.target/i386/sha256msg2-2.c: Ditto. + * gcc.target/i386/sha256rnds2-1.c: Ditto. + * gcc.target/i386/sha256rnds2-2.c: Ditto. + * gcc.target/i386/sse-13.c: Add __builtin_ia32_sha1rnds4. + * gcc.target/i386/sse-14.c: Add _mm_sha1rnds4_epu32. + * gcc.target/i386/sse-22.c: Ditto. + * gcc.target/i386/sse-23.c: Add __builtin_ia32_sha1rnds4. + 2013-12-31 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/testsuite/g++.dg/other/i386-2.C b/gcc/testsuite/g++.dg/other/i386-2.C index 73729eb61d1..55e5f35c72e 100644 --- a/gcc/testsuite/g++.dg/other/i386-2.C +++ b/gcc/testsuite/g++.dg/other/i386-2.C @@ -1,5 +1,5 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ -/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd" } */ +/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -msha" } */ /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h, xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h, diff --git a/gcc/testsuite/g++.dg/other/i386-3.C b/gcc/testsuite/g++.dg/other/i386-3.C index f73d8d77381..4a4c755ccd7 100644 --- a/gcc/testsuite/g++.dg/other/i386-3.C +++ b/gcc/testsuite/g++.dg/other/i386-3.C @@ -1,5 +1,5 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ -/* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd" } */ +/* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -msha" } */ /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h, xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h, diff --git a/gcc/testsuite/gcc.target/i386/avx-1.c b/gcc/testsuite/gcc.target/i386/avx-1.c index 75b6f04e24b..0d38f30ed77 100644 --- a/gcc/testsuite/gcc.target/i386/avx-1.c +++ b/gcc/testsuite/gcc.target/i386/avx-1.c @@ -341,6 +341,9 @@ #define __builtin_ia32_scatterpfdps(A, B, C, D, E) __builtin_ia32_scatterpfdps(A, B, C, 1, 1) #define __builtin_ia32_scatterpfqps(A, B, C, D, E) __builtin_ia32_scatterpfqps(A, B, C, 1, 1) +/* shaintrin.h */ +#define __builtin_ia32_sha1rnds4(A, B, C) __builtin_ia32_sha1rnds4(A, B, 1) + #include #include #include diff --git a/gcc/testsuite/gcc.target/i386/i386.exp b/gcc/testsuite/gcc.target/i386/i386.exp index 5d702922983..a383940e715 100644 --- a/gcc/testsuite/gcc.target/i386/i386.exp +++ b/gcc/testsuite/gcc.target/i386/i386.exp @@ -293,6 +293,20 @@ proc check_effective_target_avx512er { } { } "-Wno-psabi -mavx512er" ] } +# Return 1 if sha instructions can be compiled. +proc check_effective_target_sha { } { + return [check_no_compiler_messages sha object { + typedef long long __m128i __attribute__ ((__vector_size__ (16))); + typedef int __v4si __attribute__ ((__vector_size__ (16))); + + __m128i _mm_sha1msg1_epu32 (__m128i __X, __m128i __Y) + { + return (__m128i) __builtin_ia32_sha1msg1 ((__v4si)__X, + (__v4si)__Y); + } + } "-O2 -msha" ] +} + # If the linker used understands -M , pass it to clear hardware # capabilities set by the Sun assembler. # Try mapfile syntax v2 first which is the only way to clear hwcap_2 flags. diff --git a/gcc/testsuite/gcc.target/i386/sha-check.h b/gcc/testsuite/gcc.target/i386/sha-check.h new file mode 100644 index 00000000000..e0a18076e15 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha-check.h @@ -0,0 +1,37 @@ +#include +#include "cpuid.h" + +static void sha_test (void); + +static void +__attribute__ ((noinline)) +do_test (void) +{ + sha_test (); +} + +int +main () +{ + unsigned int eax, ebx, ecx, edx; + + if (__get_cpuid_max (0, NULL) >= 7) + { + __cpuid_count (7, 0, eax, ebx, ecx, edx); + + /* Run SHA test only if host has SHA support. */ + if (ebx & bit_SHA) + { + do_test (); +#ifdef DEBUG + printf ("PASSED\n"); +#endif + return 0; + } + } + +#ifdef DEBUG + printf ("SKIPPED\n"); +#endif + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/sha1msg1-1.c b/gcc/testsuite/gcc.target/i386/sha1msg1-1.c new file mode 100644 index 00000000000..808f3617f8e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha1msg1-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-final { scan-assembler "sha1msg1\[ \\t\]+\[^\n\]*%xmm\[0-9\]" } } */ + +#include + +volatile __m128i x; + +void extern +sha_test (void) +{ + x = _mm_sha1msg1_epu32 (x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/sha1msg1-2.c b/gcc/testsuite/gcc.target/i386/sha1msg1-2.c new file mode 100644 index 00000000000..35a60571f86 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha1msg1-2.c @@ -0,0 +1,42 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-require-effective-target sha } */ + +#include "sha-check.h" +#include "m128-check.h" +#include + +static void +compute_sha1msg1 (int *s1, int *s2, int *r) +{ + int w0, w1, w2, w3, w4, w5; + + w0 = s1[3]; + w1 = s1[2]; + w2 = s1[1]; + w3 = s1[0]; + w4 = s2[3]; + w5 = s2[2]; + + r[0] = w5 ^ w3; + r[1] = w4 ^ w2; + r[2] = w3 ^ w1; + r[3] = w2 ^ w0; +} + +static void +sha_test (void) +{ + union128i_d s1, s2, res; + int res_ref[4]; + + s1.x = _mm_set_epi32 (111, 222, 333, 444); + s2.x = _mm_set_epi32 (555, 666, 0, 0); + + res.x = _mm_sha1msg1_epu32 (s1.x, s2.x); + + compute_sha1msg1 (s1.a, s2.a, res_ref); + + if (check_union128i_d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/sha1msg2-1.c b/gcc/testsuite/gcc.target/i386/sha1msg2-1.c new file mode 100644 index 00000000000..9c0ffc13f6d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha1msg2-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-final { scan-assembler "sha1msg2\[ \\t\]+\[^\n\]*%xmm\[0-9\]" } } */ + +#include + +volatile __m128i x; + +void extern +sha_test (void) +{ + x = _mm_sha1msg2_epu32 (x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/sha1msg2-2.c b/gcc/testsuite/gcc.target/i386/sha1msg2-2.c new file mode 100644 index 00000000000..21eaf8dd9fe --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha1msg2-2.c @@ -0,0 +1,44 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-require-effective-target sha } */ + +#include "sha-check.h" +#include "m128-check.h" +#include +#include + +static void +compute_sha1msg2 (int *s1, int *s2, int *r) +{ + int w13, w14, w15, w16, w17, w18, w19; + + w13 = s2[2]; + w14 = s2[1]; + w15 = s2[0]; + w16 = __rold (s1[3] ^ w13, 1); + w17 = __rold (s1[2] ^ w14, 1); + w18 = __rold (s1[1] ^ w15, 1); + w19 = __rold (s1[0] ^ w16, 1); + + r[0] = w19; + r[1] = w18; + r[2] = w17; + r[3] = w16; +} + +static void +sha_test (void) +{ + union128i_d s1, s2, res; + int res_ref[4]; + + s1.x = _mm_set_epi32 (111, 222, 333, 444); + s2.x = _mm_set_epi32 (555, 666, 777, 0); + + res.x = _mm_sha1msg2_epu32 (s1.x, s2.x); + + compute_sha1msg2 (s1.a, s2.a, res_ref); + + if (check_union128i_d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/sha1nexte-1.c b/gcc/testsuite/gcc.target/i386/sha1nexte-1.c new file mode 100644 index 00000000000..40edc780ffe --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha1nexte-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-final { scan-assembler "sha1nexte\[ \\t\]+\[^\n\]*%xmm\[0-9\]" } } */ + +#include + +volatile __m128i x; + +void extern +sha_test (void) +{ + x = _mm_sha1nexte_epu32 (x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/sha1nexte-2.c b/gcc/testsuite/gcc.target/i386/sha1nexte-2.c new file mode 100644 index 00000000000..f0dc6cbc6a4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha1nexte-2.c @@ -0,0 +1,36 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-require-effective-target sha } */ + +#include "sha-check.h" +#include "m128-check.h" +#include +#include + +static void +compute_sha1nexte (int *s1, int *s2, int *r) +{ + int tmp = __rold (s1[3], 30); + + r[0] = s2[0]; + r[1] = s2[1]; + r[2] = s2[2]; + r[3] = s2[3] + tmp; +} + +static void +sha_test (void) +{ + union128i_d s1, s2, res; + int res_ref[4]; + + s1.x = _mm_set_epi32 (111, 0, 0, 0); + s2.x = _mm_set_epi32 (222, 333, 444, 555); + + res.x = _mm_sha1nexte_epu32 (s1.x, s2.x); + + compute_sha1nexte (s1.a, s2.a, res_ref); + + if (check_union128i_d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/sha1rnds4-1.c b/gcc/testsuite/gcc.target/i386/sha1rnds4-1.c new file mode 100644 index 00000000000..c9da57df000 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha1rnds4-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-final { scan-assembler "sha1rnds4\[ \\t\]+\[^\n\]*%xmm\[0-9\]" } } */ + +#include + +volatile __m128i x; + +void extern +sha_test (void) +{ + x = _mm_sha1rnds4_epu32 (x, x, 3); +} diff --git a/gcc/testsuite/gcc.target/i386/sha1rnds4-2.c b/gcc/testsuite/gcc.target/i386/sha1rnds4-2.c new file mode 100644 index 00000000000..91210b1f0a5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha1rnds4-2.c @@ -0,0 +1,93 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-require-effective-target sha } */ + +#include "sha-check.h" +#include "m128-check.h" +#include +#include + +static int +f0 (int b, int c, int d) +{ + return (b & c) ^ (~b & d); +} + +static int +f1 (int b, int c, int d) +{ + return b ^ c ^ d; +} + +static int +f2 (int b, int c, int d) +{ + return (b & c) ^ (b & d) ^ (c & d); +} + +int (*f_arr[4])(int, int, int) = { f0, f1, f2, f1 }; +const int k_arr[4] = { 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6 }; + + +static void +compute_sha1rnds4 (int *src1, int *src2, int imm, int *res) +{ + int k = k_arr[imm]; + int (*f)(int, int, int) = f_arr[imm]; + + int w[4] = { src2[3], src2[2], src2[1], src2[0] }; + int a[5], b[5], c[5], d[5], e[5]; + + a[0] = src1[3]; + b[0] = src1[2]; + c[0] = src1[1]; + d[0] = src1[0]; + e[0] = 0; + + int i; + for (i = 0; i <= 3; i++) + { + a[i+1] = f(b[i], c[i], d[i]) + __rold (a[i], 5) + w[i] + e[i] + k; + b[i+1] = a[i]; + c[i+1] = __rold (b[i], 30); + d[i+1] = c[i]; + e[i+1] = d[i]; + } + + res[0] = d[4]; + res[1] = c[4]; + res[2] = b[4]; + res[3] = a[4]; +} + + +static void +sha_test (void) +{ + int imm; + union128i_d s1, s2, res; + int res_ref[4]; + + s1.x = _mm_set_epi32 (111, 222, 333, 444); + s2.x = _mm_set_epi32 (555, 666, 777, 888); + + res.x = _mm_sha1rnds4_epu32 (s1.x, s2.x, 0); + compute_sha1rnds4 (s1.a, s2.a, 0, res_ref); + if (check_union128i_d (res, res_ref)) + abort (); + + res.x = _mm_sha1rnds4_epu32 (s1.x, s2.x, 1); + compute_sha1rnds4 (s1.a, s2.a, 1, res_ref); + if (check_union128i_d (res, res_ref)) + abort (); + + res.x = _mm_sha1rnds4_epu32 (s1.x, s2.x, 2); + compute_sha1rnds4 (s1.a, s2.a, 2, res_ref); + if (check_union128i_d (res, res_ref)) + abort (); + + res.x = _mm_sha1rnds4_epu32 (s1.x, s2.x, 3); + compute_sha1rnds4 (s1.a, s2.a, 3, res_ref); + if (check_union128i_d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/sha256msg1-1.c b/gcc/testsuite/gcc.target/i386/sha256msg1-1.c new file mode 100644 index 00000000000..020874e4a4f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha256msg1-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-final { scan-assembler "sha256msg1\[ \\t\]+\[^\n\]*%xmm\[0-9\]" } } */ + +#include + +volatile __m128i x; + +void extern +sha_test (void) +{ + x = _mm_sha256msg1_epu32 (x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/sha256msg1-2.c b/gcc/testsuite/gcc.target/i386/sha256msg1-2.c new file mode 100644 index 00000000000..2b70920b029 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha256msg1-2.c @@ -0,0 +1,48 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-require-effective-target sha } */ + +#include "sha-check.h" +#include "m128-check.h" +#include +#include + +static int +s0 (int w) +{ + return __rord (w, 7) ^ __rord (w, 18) ^ (w >> 3); +} + +static void +compute_sha256msg1 (int *src1, int *src2, int *res) +{ + int w0, w1, w2, w3, w4; + + w0 = src1[0]; + w1 = src1[1]; + w2 = src1[2]; + w3 = src1[3]; + w4 = src2[0]; + + res[0] = w0 + s0 (w1); + res[1] = w1 + s0 (w2); + res[2] = w2 + s0 (w3); + res[3] = w3 + s0 (w4); +} + +static void +sha_test (void) +{ + union128i_d s1, s2, res; + int res_ref[4]; + + s1.x = _mm_set_epi32 (111, 222, 333, 444); + s2.x = _mm_set_epi32 (0, 0, 0, 555); + + res.x = _mm_sha256msg1_epu32 (s1.x, s2.x); + + compute_sha256msg1 (s1.a, s2.a, res_ref); + + if (check_union128i_d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/sha256msg2-1.c b/gcc/testsuite/gcc.target/i386/sha256msg2-1.c new file mode 100644 index 00000000000..88a9a03e4e8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha256msg2-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-final { scan-assembler "sha256msg2\[ \\t\]+\[^\n\]*%xmm\[0-9\]" } } */ + +#include + +volatile __m128i x; + +void extern +sha_test (void) +{ + x = _mm_sha256msg2_epu32 (x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/sha256msg2-2.c b/gcc/testsuite/gcc.target/i386/sha256msg2-2.c new file mode 100644 index 00000000000..ffb0c2582bc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha256msg2-2.c @@ -0,0 +1,49 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-require-effective-target sha } */ + +#include "sha-check.h" +#include "m128-check.h" +#include +#include + +static int +s1 (int w) +{ + return __rord (w, 17) ^ __rord (w, 19) ^ (w >> 10); +} + +static void +compute_sha256msg2 (int *src1, int *src2, int *res) +{ + int w14, w15, w16, w17, w18, w19; + + w14 = src2[2]; + w15 = src2[3]; + w16 = src1[0] + s1 (w14); + w17 = src1[1] + s1 (w15); + w18 = src1[2] + s1 (w16); + w19 = src1[3] + s1 (w17); + + res[0] = w16; + res[1] = w17; + res[2] = w18; + res[3] = w19; +} + +static void +sha_test (void) +{ + union128i_d s1, s2, res; + int res_ref[4]; + + s1.x = _mm_set_epi32 (111, 222, 333, 444); + s2.x = _mm_set_epi32 (555, 666, 0, 0); + + res.x = _mm_sha256msg2_epu32 (s1.x, s2.x); + + compute_sha256msg2 (s1.a, s2.a, res_ref); + + if (check_union128i_d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/sha256rnds2-1.c b/gcc/testsuite/gcc.target/i386/sha256rnds2-1.c new file mode 100644 index 00000000000..8bdf6642078 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha256rnds2-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-final { scan-assembler "sha256rnds2\[ \\t\]+\[^\n\]*%xmm0\[^\n\]*%xmm\[0-9\]" } } */ + +#include + +volatile __m128i x; + +void extern +sha_test (void) +{ + x = _mm_sha256rnds2_epu32 (x, x, x); +} diff --git a/gcc/testsuite/gcc.target/i386/sha256rnds2-2.c b/gcc/testsuite/gcc.target/i386/sha256rnds2-2.c new file mode 100644 index 00000000000..4e586749def --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sha256rnds2-2.c @@ -0,0 +1,85 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -msha" } */ +/* { dg-require-effective-target sha } */ + +#include "sha-check.h" +#include "m128-check.h" +#include +#include + +static int +ch (int e, int f, int g) +{ + return (e & f) ^ (~e & g); +} + +static int +maj (int a, int b, int c) +{ + return (a & b) ^ (a & c) ^ (b & c); +} + +static int +s0 (int a) +{ + return __rord (a, 2) ^ __rord (a, 13) ^ __rord (a, 22); +} + +static int +s1 (int e) +{ + return __rord (e, 6) ^ __rord (e, 11) ^ __rord (e, 25); +} + +static void +compute_sha256rnds2 (int *src0, int *src1, int *src2, int *res) +{ + int wk[2] = { src0[0], src0[1] }; + int a[3], b[3], c[3], d[3], e[3], f[3], g[3], h[3]; + + a[0] = src2[3]; + b[0] = src2[2]; + c[0] = src1[3]; + d[0] = src1[2]; + e[0] = src2[1]; + f[0] = src2[0]; + g[0] = src1[1]; + h[0] = src1[0]; + + int i; + for (i = 0; i <= 1; i++) + { + a[i+1] = ch (e[i], f[i], g[i]) + s1 (e[i]) + wk[i] + h[i] + + maj (a[i], b[i], c[i]) + s0 (a[i]); + b[i+1] = a[i]; + c[i+1] = b[i]; + d[i+1] = c[i]; + e[i+1] = ch (e[i], f[i], g[i]) + s1 (e[i]) + wk[i] + h[i] + d[i]; + f[i+1] = e[i]; + g[i+1] = f[i]; + h[i+1] = g[i]; + } + + res[0] = f[2]; + res[1] = e[2]; + res[2] = b[2]; + res[3] = a[2]; +} + +static void +sha_test (void) +{ + union128i_d s0, s1, s2, res; + int res_ref[4]; + + s0.x = _mm_set_epi32 (0, 0, 111, 222); + s1.x = _mm_set_epi32 (333, 444, 555, 666); + s2.x = _mm_set_epi32 (777, 888, 999, 123); + + res.x = _mm_sha256rnds2_epu32 (s1.x, s2.x, s0.x); + + compute_sha256rnds2 (s0.a, s1.a, s2.a, res_ref); + + if (check_union128i_d (res, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/sse-13.c b/gcc/testsuite/gcc.target/i386/sse-13.c index 73aa472f1f1..569eacf0450 100644 --- a/gcc/testsuite/gcc.target/i386/sse-13.c +++ b/gcc/testsuite/gcc.target/i386/sse-13.c @@ -379,3 +379,6 @@ #define __builtin_ia32_vfnmsubps512_mask3(A, B, C, D, E) __builtin_ia32_vfnmsubps512_mask3(A, B, C, D, 1) #define __builtin_ia32_vpermilpd512_mask(A, E, C, D) __builtin_ia32_vpermilpd512_mask(A, 1, C, D) #define __builtin_ia32_vpermilps512_mask(A, E, C, D) __builtin_ia32_vpermilps512_mask(A, 1, C, D) + +/* shaintrin.h */ +#define __builtin_ia32_sha1rnds4(A, B, C) __builtin_ia32_sha1rnds4(A, B, 1) diff --git a/gcc/testsuite/gcc.target/i386/sse-14.c b/gcc/testsuite/gcc.target/i386/sse-14.c index 623b56b4655..e8cb5337ef6 100644 --- a/gcc/testsuite/gcc.target/i386/sse-14.c +++ b/gcc/testsuite/gcc.target/i386/sse-14.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ -/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512pf -mavx512cd" } */ +/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512pf -mavx512cd -msha" } */ + #include /* Test that the intrinsics compile without optimization. All of them are @@ -497,6 +498,9 @@ test_3 (_mm512_mask_rcp28_round_ps, __m512, __m512, __mmask16, __m512, 1) test_3 (_mm512_mask_rsqrt28_round_pd, __m512d, __m512d, __mmask8, __m512d, 1) test_3 (_mm512_mask_rsqrt28_round_ps, __m512, __m512, __mmask16, __m512, 1) +/* shaintrin.h */ +test_2 (_mm_sha1rnds4_epu32, __m128i, __m128i, __m128i, 1) + /* wmmintrin.h */ test_1 (_mm_aeskeygenassist_si128, __m128i, __m128i, 1) test_2 (_mm_clmulepi64_si128, __m128i, __m128i, __m128i, 1) diff --git a/gcc/testsuite/gcc.target/i386/sse-22.c b/gcc/testsuite/gcc.target/i386/sse-22.c index 6f625ad11c9..05b4af0a875 100644 --- a/gcc/testsuite/gcc.target/i386/sse-22.c +++ b/gcc/testsuite/gcc.target/i386/sse-22.c @@ -99,7 +99,7 @@ #ifndef DIFFERENT_PRAGMAS -#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512pf,avx512er,avx512cd") +#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512pf,avx512er,avx512cd,sha") #endif /* Following intrinsics require immediate arguments. They @@ -212,9 +212,9 @@ test_4 (_mm_cmpestro, int, __m128i, int, __m128i, int, 1) test_4 (_mm_cmpestrs, int, __m128i, int, __m128i, int, 1) test_4 (_mm_cmpestrz, int, __m128i, int, __m128i, int, 1) -/* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F) */ +/* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F/SHA) */ #ifdef DIFFERENT_PRAGMAS -#pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,avx512f,avx512er,avx512cd,avx512pf") +#pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,avx512f,avx512er,avx512cd,avx512pf,sha") #endif #include test_1 (_cvtss_sh, unsigned short, float, 1) @@ -666,6 +666,9 @@ test_3 (_mm512_mask_rcp28_round_ps, __m512, __m512, __mmask16, __m512, 1) test_3 (_mm512_mask_rsqrt28_round_pd, __m512d, __m512d, __mmask8, __m512d, 1) test_3 (_mm512_mask_rsqrt28_round_ps, __m512, __m512, __mmask16, __m512, 1) +/* shaintrin.h */ +test_2 (_mm_sha1rnds4_epu32, __m128i, __m128i, __m128i, 1) + /* wmmintrin.h (AES/PCLMUL). */ #ifdef DIFFERENT_PRAGMAS #pragma GCC target ("aes,pclmul") diff --git a/gcc/testsuite/gcc.target/i386/sse-23.c b/gcc/testsuite/gcc.target/i386/sse-23.c index f993c07cdf1..012353826cb 100644 --- a/gcc/testsuite/gcc.target/i386/sse-23.c +++ b/gcc/testsuite/gcc.target/i386/sse-23.c @@ -356,7 +356,10 @@ #define __builtin_ia32_rsqrt28pd_mask(A, B, C, D) __builtin_ia32_rsqrt28pd_mask (A, B, C, 1) #define __builtin_ia32_rsqrt28ps_mask(A, B, C, D) __builtin_ia32_rsqrt28ps_mask (A, B, C, 1) -#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512er,avx512pf,avx512cd") +/* shaintrin.h */ +#define __builtin_ia32_sha1rnds4(A, B, C) __builtin_ia32_sha1rnds4(A, B, 1) + +#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512er,avx512pf,avx512cd,sha") #include #include #include -- cgit v1.2.1 From 68b0b56cb5c8fd4d4ea619c8b27fd0c8d4047919 Mon Sep 17 00:00:00 2001 From: jakub Date: Tue, 31 Dec 2013 11:57:39 +0000 Subject: PR tree-optimization/59622 * gimple-fold.c (gimple_fold_call): Don't replace OBJ_TYPE_REF call fndecl with 0 possible targets with BUILT_IN_UNREACHABLE, instead only for !inplace add a __builtin_unreachable () call before the call. * g++.dg/opt/pr59622.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206264 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/gimple-fold.c | 18 ++++++++++++------ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/opt/pr59622.C | 19 +++++++++++++++++++ 4 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/g++.dg/opt/pr59622.C (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7ce800182fb..73c47620dad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-12-31 Jakub Jelinek + + PR tree-optimization/59622 + * gimple-fold.c (gimple_fold_call): Don't replace OBJ_TYPE_REF + call fndecl with 0 possible targets with BUILT_IN_UNREACHABLE, + instead only for !inplace add a __builtin_unreachable () call + before the call. + 2013-12-31 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 3b6fc571c40..1d9d824a5a7 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -1184,13 +1184,19 @@ gimple_fold_call (gimple_stmt_iterator *gsi, bool inplace) = possible_polymorphic_call_targets (callee, &final); if (final && targets.length () <= 1) { - tree fndecl; if (targets.length () == 1) - fndecl = targets[0]->decl; - else - fndecl = builtin_decl_implicit (BUILT_IN_UNREACHABLE); - gimple_call_set_fndecl (stmt, fndecl); - changed = true; + { + gimple_call_set_fndecl (stmt, targets[0]->decl); + changed = true; + } + else if (!inplace) + { + tree fndecl = builtin_decl_implicit (BUILT_IN_UNREACHABLE); + gimple new_stmt = gimple_build_call (fndecl, 0); + gimple_set_location (new_stmt, gimple_location (stmt)); + gsi_insert_before (gsi, new_stmt, GSI_SAME_STMT); + return true; + } } } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 46d5c13e5f0..1ad8186f148 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-31 Jakub Jelinek + + PR tree-optimization/59622 + * g++.dg/opt/pr59622.C: New test. + 2013-12-31 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/testsuite/g++.dg/opt/pr59622.C b/gcc/testsuite/g++.dg/opt/pr59622.C new file mode 100644 index 00000000000..1d8e9986c51 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/pr59622.C @@ -0,0 +1,19 @@ +// PR tree-optimization/59622 +// { dg-do compile } +// { dg-options "-O2" } + +namespace +{ + struct A + { + virtual int foo (); + int bar () { return foo (); } + }; +} + +int +baz () +{ + A a; + return a.bar (); +} -- cgit v1.2.1 From 0b7cc9c601629ff70a732cc3b5867e50f1d421aa Mon Sep 17 00:00:00 2001 From: kyukhin Date: Tue, 31 Dec 2013 12:13:49 +0000 Subject: gcc/ * config/i386/avx512fintrin.h (_mm_add_round_sd): New. (_mm_add_round_sd): Ditto. (_mm_add_round_ss): Ditto. (_mm_sub_round_sd): Ditto. (_mm_sub_round_ss): Ditto. (_mm_rcp14_sd): Ditto. (_mm_rcp14_ss): Ditto. (_mm_sqrt_round_sd): Ditto. (_mm_sqrt_round_ss): Ditto. (_mm_mul_round_sd): Ditto. (_mm_mul_round_ss): Ditto. (_mm_div_round_sd): Ditto. (_mm_div_round_ss): Ditto. (_mm_scalef_round_sd): Ditto. (_mm_scalef_round_ss): Ditto. (_mm_scalef_round_sd): Ditto. (_mm_scalef_round_ss): Ditto. (_mm_cvt_roundsd_ss): Ditto. (_mm_cvt_roundsd_sd): Ditto. (_mm_getexp_round_ss): Ditto. (_mm_getexp_round_sd): Ditto. (_mm_getmant_round_sd): Ditto. (_mm_getmant_round_ss): Ditto. (_mm_roundscale_round_ss): Ditto. (_mm_roundscale_round_sd): Ditto. (_mm_max_round_sd): Ditto. (_mm_max_round_ss): Ditto. (_mm_min_round_sd): Ditto. (_mm_min_round_ss): Ditto. (_mm_fmadd_round_sd): Ditto. (_mm_fmadd_round_ss): Ditto. (_mm_fmsub_round_sd): Ditto. (_mm_fmsub_round_ss): Ditto. (_mm_fnmadd_round_sd): Ditto. (_mm_fnmadd_round_ss): Ditto. (_mm_fnmsub_round_sd): Ditto. (_mm_fnmsub_round_ss): Ditto. (_mm_scalef_sd): Ditto. (_mm_scalef_ss): Ditto. (_mm_getexp_ss): Ditto. (_mm_getexp_sd): Ditto. (_mm_getmant_sd): Ditto. (_mm_getmant_ss): Ditto. (_mm_roundscale_ss): Ditto. (_mm_roundscale_sd): Ditto. * config/i386/i386-builtin-types.def: New types to support new built-ins: , , <(V4SF, V4SF, V2DF, INT>, , . * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_ADDSD_ROUND, IX86_BUILTIN_ADDSS_ROUND, IX86_BUILTIN_CVTSD2SS_ROUND, IX86_BUILTIN_CVTSS2SD_ROUND, IX86_BUILTIN_DIVSD_ROUND, IX86_BUILTIN_GETEXPSD128, IX86_BUILTIN_DIVSS_ROUND, IX86_BUILTIN_GETEXPSS128, IX86_BUILTIN_GETMANTSD128, IX86_BUILTIN_GETMANTSS128, IX86_BUILTIN_MAXSD_ROUND, IX86_BUILTIN_MAXSS_ROUND, IX86_BUILTIN_MINSD_ROUND, IX86_BUILTIN_MINSS_ROUND, IX86_BUILTIN_MULSD_ROUND, IX86_BUILTIN_MULSS_ROUND, IX86_BUILTIN_RCP14SD, IX86_BUILTIN_RCP14SS, IX86_BUILTIN_RNDSCALESD, IX86_BUILTIN_RNDSCALESS, IX86_BUILTIN_RSQRT14SD, IX86_BUILTIN_RSQRT14SS, IX86_BUILTIN_SCALEFSD, IX86_BUILTIN_SCALEFSS, IX86_BUILTIN_SQRTSD_ROUND, IX86_BUILTIN_SQRTSS_ROUND, IX86_BUILTIN_SUBSD_ROUND, IX86_BUILTIN_SUBSS_ROUND, IX86_BUILTIN_VFMADDSD3_ROUND, IX86_BUILTIN_VFMADDSS3_ROUND, IX86_BUILTIN_VFMSUBSD3_MASK3, IX86_BUILTIN_VFMSUBSS3_MASK3. (builtin_description bdesc_args[]): Add __builtin_ia32_rcp14sd, __builtin_ia32_rcp14ss, __builtin_ia32_rsqrt14pd512_mask, __builtin_ia32_rsqrt14ps512_mask, __builtin_ia32_rsqrt14sd, __builtin_ia32_rsqrt14ss, __builtin_ia32_addsd_round, __builtin_ia32_addss_round, __builtin_ia32_cvtsd2ss_round, __builtin_ia32_cvtss2sd_round, __builtin_ia32_divsd_round, __builtin_ia32_divss_round, __builtin_ia32_getexpsd128_round, __builtin_ia32_getexpss128_round, __builtin_ia32_getmantsd_round, __builtin_ia32_getmantss_round, __builtin_ia32_maxsd_round, __builtin_ia32_maxss_round, __builtin_ia32_minsd_round, __builtin_ia32_minss_round, __builtin_ia32_mulsd_round, __builtin_ia32_mulss_round, __builtin_ia32_rndscalesd_round, __builtin_ia32_rndscaless_round, __builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round, __builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round, __builtin_ia32_subsd_round, __builtin_ia32_subss_round, __builtin_ia32_vfmaddsd3_round, __builtin_ia32_vfmaddss3_round. (ix86_expand_round_builtin): Expand new FTYPEs. * config/i386/sse.md (_vm3): Support EVEX's embedded rouding. (_vm3): Ditto. (_vmsqrt2): Ditto. (_vm3): Ditto. (sse2_cvtsd2ss): Ditto. (sse2_cvtss2sd): Ditto. (*avx512f_vmscalef): Ditto. (avx512f_sgetexp): Ditto. (*avx512f_rndscale): Ditto. (avx512f_getmant): Ditto. (*srcp14): Make visible. (*rsqrt14): Ditto. * config/i386/subst.md (mask_mode512bit_condition): Fix mode calculation. (sd_mask_mode512bit_condition): Ditto. (round_mode512bit_condition): Ditto. (round_modev4sf_condition): Ditto. (round_mask_scalar_operand3): Remove. (round_prefix): New. (round_saeonly_op3): Ditto. (round_saeonly_prefix): Ditto. testsuite/ * gcc.target/i386/avx-1.c: Update for AVX-512 scalar insns. * gcc.target/i386/avx512f-vaddsd-1.c: New. * gcc.target/i386/avx512f-vaddss-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto. * gcc.target/i386/avx512f-vdivsd-1.c: Ditto. * gcc.target/i386/avx512f-vdivss-1.c: Ditto. * gcc.target/i386/avx512f-vextractf32x4-2.c: Ditto. * gcc.target/i386/avx512f-vextracti32x4-2.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vgetexpsd-1.c: Ditto. * gcc.target/i386/avx512f-vgetexpsd-2.c: Ditto. * gcc.target/i386/avx512f-vgetexpss-1.c: Ditto. * gcc.target/i386/avx512f-vgetexpss-2.c: Ditto. * gcc.target/i386/avx512f-vgetmantsd-1.c: Ditto. * gcc.target/i386/avx512f-vgetmantsd-2.c: Ditto. * gcc.target/i386/avx512f-vgetmantss-1.c: Ditto. * gcc.target/i386/avx512f-vgetmantss-2.c: Ditto. * gcc.target/i386/avx512f-vmaxsd-1.c: Ditto. * gcc.target/i386/avx512f-vmaxss-1.c: Ditto. * gcc.target/i386/avx512f-vminsd-1.c: Ditto. * gcc.target/i386/avx512f-vminss-1.c: Ditto. * gcc.target/i386/avx512f-vmulsd-1.c: Ditto. * gcc.target/i386/avx512f-vmulss-1.c: Ditto. * gcc.target/i386/avx512f-vrcp14sd-1.c: Ditto. * gcc.target/i386/avx512f-vrcp14sd-2.c: Ditto. * gcc.target/i386/avx512f-vrcp14ss-1.c: Ditto. * gcc.target/i386/avx512f-vrcp14ss-2.c: Ditto. * gcc.target/i386/avx512f-vrndscalesd-1.c: Ditto. * gcc.target/i386/avx512f-vrndscalesd-2.c: Ditto. * gcc.target/i386/avx512f-vrndscaless-1.c: Ditto. * gcc.target/i386/avx512f-vrndscaless-2.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14sd-1.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14sd-2.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14ss-1.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14ss-2.c: Ditto. * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto. * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto. * gcc.target/i386/avx512f-vscalefss-1.c: Ditto. * gcc.target/i386/avx512f-vscalefss-2.c: Ditto. * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto. * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto. * gcc.target/i386/avx512f-vsubsd-1.c: Ditto. * gcc.target/i386/avx512f-vsubss-1.c: Ditto. * gcc.target/i386/sse-14.c: Update for AVX-512 scalar insns. * gcc.target/i386/sse-23.c: Ditto. * gcc.target/i386/testimm-10.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206265 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 117 +++++ gcc/config/i386/avx512fintrin.h | 543 +++++++++++++++++++++ gcc/config/i386/i386-builtin-types.def | 5 + gcc/config/i386/i386.c | 75 +++ gcc/config/i386/sse.md | 78 +-- gcc/config/i386/subst.md | 12 +- gcc/testsuite/ChangeLog | 65 +++ gcc/testsuite/gcc.target/i386/avx-1.c | 38 +- gcc/testsuite/gcc.target/i386/avx512f-vaddsd-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vaddss-1.c | 13 + .../gcc.target/i386/avx512f-vcvtsd2ss-1.c | 14 + .../gcc.target/i386/avx512f-vcvtss2sd-1.c | 14 + gcc/testsuite/gcc.target/i386/avx512f-vdivsd-1.c | 14 + gcc/testsuite/gcc.target/i386/avx512f-vdivss-1.c | 13 + .../gcc.target/i386/avx512f-vextractf32x4-2.c | 56 +++ .../gcc.target/i386/avx512f-vextracti32x4-2.c | 57 +++ .../gcc.target/i386/avx512f-vfmaddXXXsd-1.c | 13 + .../gcc.target/i386/avx512f-vfmaddXXXss-1.c | 13 + .../gcc.target/i386/avx512f-vfmsubXXXsd-1.c | 13 + .../gcc.target/i386/avx512f-vfmsubXXXss-1.c | 13 + .../gcc.target/i386/avx512f-vfnmaddXXXsd-1.c | 13 + .../gcc.target/i386/avx512f-vfnmaddXXXss-1.c | 13 + .../gcc.target/i386/avx512f-vfnmsubXXXsd-1.c | 13 + .../gcc.target/i386/avx512f-vfnmsubXXXss-1.c | 13 + .../gcc.target/i386/avx512f-vgetexpsd-1.c | 15 + .../gcc.target/i386/avx512f-vgetexpsd-2.c | 36 ++ .../gcc.target/i386/avx512f-vgetexpss-1.c | 15 + .../gcc.target/i386/avx512f-vgetexpss-2.c | 36 ++ .../gcc.target/i386/avx512f-vgetmantsd-1.c | 16 + .../gcc.target/i386/avx512f-vgetmantsd-2.c | 94 ++++ .../gcc.target/i386/avx512f-vgetmantss-1.c | 16 + .../gcc.target/i386/avx512f-vgetmantss-2.c | 99 ++++ gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vmaxss-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vminsd-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vminss-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vmulsd-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vmulss-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-2.c | 31 ++ gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-2.c | 33 ++ .../gcc.target/i386/avx512f-vrndscalesd-1.c | 15 + .../gcc.target/i386/avx512f-vrndscalesd-2.c | 50 ++ .../gcc.target/i386/avx512f-vrndscaless-1.c | 15 + .../gcc.target/i386/avx512f-vrndscaless-2.c | 52 ++ .../gcc.target/i386/avx512f-vrsqrt14sd-1.c | 14 + .../gcc.target/i386/avx512f-vrsqrt14sd-2.c | 32 ++ .../gcc.target/i386/avx512f-vrsqrt14ss-1.c | 13 + .../gcc.target/i386/avx512f-vrsqrt14ss-2.c | 34 ++ .../gcc.target/i386/avx512f-vscalefsd-1.c | 15 + .../gcc.target/i386/avx512f-vscalefsd-2.c | 37 ++ .../gcc.target/i386/avx512f-vscalefss-1.c | 15 + .../gcc.target/i386/avx512f-vscalefss-2.c | 39 ++ gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vsubsd-1.c | 13 + gcc/testsuite/gcc.target/i386/avx512f-vsubss-1.c | 13 + gcc/testsuite/gcc.target/i386/sse-14.c | 46 ++ gcc/testsuite/gcc.target/i386/sse-23.c | 34 +- gcc/testsuite/gcc.target/i386/testimm-10.c | 11 +- gcc/testsuite/gcc.target/i386/testround-1.c | 63 +++ 62 files changed, 2198 insertions(+), 65 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vaddsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vaddss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2ss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vcvtss2sd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vdivsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vdivss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmaxss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vminsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vminss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmulsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vmulss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrndscaless-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrndscaless-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vscalefss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vscalefss-2.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsubsd-1.c create mode 100644 gcc/testsuite/gcc.target/i386/avx512f-vsubss-1.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 73c47620dad..2ffd9593b54 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -6,6 +6,123 @@ instead only for !inplace add a __builtin_unreachable () call before the call. +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/avx512fintrin.h (_mm_add_round_sd): New. + (_mm_add_round_sd): Ditto. + (_mm_add_round_ss): Ditto. + (_mm_sub_round_sd): Ditto. + (_mm_sub_round_ss): Ditto. + (_mm_rcp14_sd): Ditto. + (_mm_rcp14_ss): Ditto. + (_mm_sqrt_round_sd): Ditto. + (_mm_sqrt_round_ss): Ditto. + (_mm_mul_round_sd): Ditto. + (_mm_mul_round_ss): Ditto. + (_mm_div_round_sd): Ditto. + (_mm_div_round_ss): Ditto. + (_mm_scalef_round_sd): Ditto. + (_mm_scalef_round_ss): Ditto. + (_mm_scalef_round_sd): Ditto. + (_mm_scalef_round_ss): Ditto. + (_mm_cvt_roundsd_ss): Ditto. + (_mm_cvt_roundsd_sd): Ditto. + (_mm_getexp_round_ss): Ditto. + (_mm_getexp_round_sd): Ditto. + (_mm_getmant_round_sd): Ditto. + (_mm_getmant_round_ss): Ditto. + (_mm_roundscale_round_ss): Ditto. + (_mm_roundscale_round_sd): Ditto. + (_mm_max_round_sd): Ditto. + (_mm_max_round_ss): Ditto. + (_mm_min_round_sd): Ditto. + (_mm_min_round_ss): Ditto. + (_mm_fmadd_round_sd): Ditto. + (_mm_fmadd_round_ss): Ditto. + (_mm_fmsub_round_sd): Ditto. + (_mm_fmsub_round_ss): Ditto. + (_mm_fnmadd_round_sd): Ditto. + (_mm_fnmadd_round_ss): Ditto. + (_mm_fnmsub_round_sd): Ditto. + (_mm_fnmsub_round_ss): Ditto. + (_mm_scalef_sd): Ditto. + (_mm_scalef_ss): Ditto. + (_mm_getexp_ss): Ditto. + (_mm_getexp_sd): Ditto. + (_mm_getmant_sd): Ditto. + (_mm_getmant_ss): Ditto. + (_mm_roundscale_ss): Ditto. + (_mm_roundscale_sd): Ditto. + * config/i386/i386-builtin-types.def: New types to support + new built-ins: , , + <(V4SF, V4SF, V2DF, INT>, , + . + * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_ADDSD_ROUND, + IX86_BUILTIN_ADDSS_ROUND, IX86_BUILTIN_CVTSD2SS_ROUND, + IX86_BUILTIN_CVTSS2SD_ROUND, IX86_BUILTIN_DIVSD_ROUND, + IX86_BUILTIN_GETEXPSD128, IX86_BUILTIN_DIVSS_ROUND, + IX86_BUILTIN_GETEXPSS128, IX86_BUILTIN_GETMANTSD128, + IX86_BUILTIN_GETMANTSS128, IX86_BUILTIN_MAXSD_ROUND, + IX86_BUILTIN_MAXSS_ROUND, IX86_BUILTIN_MINSD_ROUND, + IX86_BUILTIN_MINSS_ROUND, IX86_BUILTIN_MULSD_ROUND, + IX86_BUILTIN_MULSS_ROUND, IX86_BUILTIN_RCP14SD, + IX86_BUILTIN_RCP14SS, IX86_BUILTIN_RNDSCALESD, + IX86_BUILTIN_RNDSCALESS, IX86_BUILTIN_RSQRT14SD, + IX86_BUILTIN_RSQRT14SS, IX86_BUILTIN_SCALEFSD, + IX86_BUILTIN_SCALEFSS, IX86_BUILTIN_SQRTSD_ROUND, + IX86_BUILTIN_SQRTSS_ROUND, IX86_BUILTIN_SUBSD_ROUND, + IX86_BUILTIN_SUBSS_ROUND, IX86_BUILTIN_VFMADDSD3_ROUND, + IX86_BUILTIN_VFMADDSS3_ROUND, IX86_BUILTIN_VFMSUBSD3_MASK3, + IX86_BUILTIN_VFMSUBSS3_MASK3. + (builtin_description bdesc_args[]): Add + __builtin_ia32_rcp14sd, __builtin_ia32_rcp14ss, + __builtin_ia32_rsqrt14pd512_mask, __builtin_ia32_rsqrt14ps512_mask, + __builtin_ia32_rsqrt14sd, __builtin_ia32_rsqrt14ss, + __builtin_ia32_addsd_round, __builtin_ia32_addss_round, + __builtin_ia32_cvtsd2ss_round, __builtin_ia32_cvtss2sd_round, + __builtin_ia32_divsd_round, __builtin_ia32_divss_round, + __builtin_ia32_getexpsd128_round, __builtin_ia32_getexpss128_round, + __builtin_ia32_getmantsd_round, __builtin_ia32_getmantss_round, + __builtin_ia32_maxsd_round, __builtin_ia32_maxss_round, + __builtin_ia32_minsd_round, __builtin_ia32_minss_round, + __builtin_ia32_mulsd_round, __builtin_ia32_mulss_round, + __builtin_ia32_rndscalesd_round, __builtin_ia32_rndscaless_round, + __builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round, + __builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round, + __builtin_ia32_subsd_round, __builtin_ia32_subss_round, + __builtin_ia32_vfmaddsd3_round, __builtin_ia32_vfmaddss3_round. + (ix86_expand_round_builtin): Expand new FTYPEs. + * config/i386/sse.md (_vm3): Support + EVEX's embedded rouding. + (_vm3): Ditto. + (_vmsqrt2): Ditto. + (_vm3): Ditto. + (sse2_cvtsd2ss): Ditto. + (sse2_cvtss2sd): Ditto. + (*avx512f_vmscalef): Ditto. + (avx512f_sgetexp): Ditto. + (*avx512f_rndscale): Ditto. + (avx512f_getmant): Ditto. + (*srcp14): Make visible. + (*rsqrt14): Ditto. + * config/i386/subst.md (mask_mode512bit_condition): Fix + mode calculation. + (sd_mask_mode512bit_condition): Ditto. + (round_mode512bit_condition): Ditto. + (round_modev4sf_condition): Ditto. + (round_mask_scalar_operand3): Remove. + (round_prefix): New. + (round_saeonly_op3): Ditto. + (round_saeonly_prefix): Ditto. + 2013-12-31 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/config/i386/avx512fintrin.h b/gcc/config/i386/avx512fintrin.h index f717d4601fc..40e82134273 100644 --- a/gcc/config/i386/avx512fintrin.h +++ b/gcc/config/i386/avx512fintrin.h @@ -1278,6 +1278,57 @@ _mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B) (__mmask16) __U); } +#ifdef __OPTIMIZE__ +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_add_round_sd (__m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_addsd_round ((__v2df) __A, + (__v2df) __B, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_add_round_ss (__m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_addss_round ((__v4sf) __A, + (__v4sf) __B, + __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_sub_round_sd (__m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_subsd_round ((__v2df) __A, + (__v2df) __B, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_sub_round_ss (__m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_subss_round ((__v4sf) __A, + (__v4sf) __B, + __R); +} + +#else +#define _mm_add_round_sd(A, B, C) \ + (__m128d)__builtin_ia32_addsd_round(A, B, C) + +#define _mm_add_round_ss(A, B, C) \ + (__m128)__builtin_ia32_addss_round(A, B, C) + +#define _mm_sub_round_sd(A, B, C) \ + (__m128d)__builtin_ia32_subsd_round(A, B, C) + +#define _mm_sub_round_ss(A, B, C) \ + (__m128)__builtin_ia32_subss_round(A, B, C) +#endif + #ifdef __OPTIMIZE__ extern __inline __m512i __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) @@ -1424,6 +1475,22 @@ _mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A) (__mmask16) __U); } +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_rcp14_sd (__m128d __A, __m128d __B) +{ + return (__m128d) __builtin_ia32_rcp14sd ((__v2df) __A, + (__v2df) __B); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_rcp14_ss (__m128 __A, __m128 __B) +{ + return (__m128) __builtin_ia32_rcp14ss ((__v4sf) __A, + (__v4sf) __B); +} + extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_rsqrt14_pd (__m512d __A) @@ -1482,6 +1549,22 @@ _mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A) (__mmask16) __U); } +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_rsqrt14_sd (__m128d __A, __m128d __B) +{ + return (__m128d) __builtin_ia32_rsqrt14sd ((__v2df) __A, + (__v2df) __B); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_rsqrt14_ss (__m128 __A, __m128 __B) +{ + return (__m128) __builtin_ia32_rsqrt14ss ((__v4sf) __A, + (__v4sf) __B); +} + #ifdef __OPTIMIZE__ extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) @@ -1542,6 +1625,23 @@ _mm512_maskz_sqrt_round_ps (__mmask16 __U, __m512 __A, const int __R) (__mmask16) __U, __R); } +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_sqrt_round_sd (__m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_sqrtsd_round ((__v2df) __B, + (__v2df) __A, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_sqrt_round_ss (__m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_sqrtss_round ((__v4sf) __B, + (__v4sf) __A, + __R); +} #else #define _mm512_sqrt_round_pd(A, C) \ (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) @@ -1560,6 +1660,12 @@ _mm512_maskz_sqrt_round_ps (__mmask16 __U, __m512 __A, const int __R) #define _mm512_maskz_sqrt_round_ps(U, A, C) \ (__m512)__builtin_ia32_sqrtps512_mask(A, (__v16sf)_mm512_setzero_ps(), U, C) + +#define _mm_sqrt_round_sd(A, B, C) \ + (__m128d)__builtin_ia32_sqrtsd_round(A, B, C) + +#define _mm_sqrt_round_ss(A, B, C) \ + (__m128)__builtin_ia32_sqrtss_round(A, B, C) #endif extern __inline __m512i @@ -2159,6 +2265,42 @@ _mm512_maskz_div_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R) (__mmask16) __U, __R); } +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_mul_round_sd (__m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A, + (__v2df) __B, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_mul_round_ss (__m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_mulss_round ((__v4sf) __A, + (__v4sf) __B, + __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_div_round_sd (__m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_divsd_round ((__v2df) __A, + (__v2df) __B, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_div_round_ss (__m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_divss_round ((__v4sf) __A, + (__v4sf) __B, + __R); +} + #else #define _mm512_mul_round_pd(A, B, C) \ (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) @@ -2195,6 +2337,18 @@ _mm512_maskz_div_round_ps (__mmask16 __U, __m512 __A, __m512 __B, const int __R) #define _mm512_maskz_div_round_ps(U, A, B, C) \ (__m512)__builtin_ia32_divps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C) + +#define _mm_mul_round_sd(A, B, C) \ + (__m128d)__builtin_ia32_mulsd_round(A, B, C) + +#define _mm_mul_round_ss(A, B, C) \ + (__m128)__builtin_ia32_mulss_round(A, B, C) + +#define _mm_div_round_sd(A, B, C) \ + (__m128d)__builtin_ia32_divsd_round(A, B, C) + +#define _mm_div_round_ss(A, B, C) \ + (__m128)__builtin_ia32_divss_round(A, B, C) #endif #ifdef __OPTIMIZE__ @@ -2438,6 +2592,23 @@ _mm512_maskz_scalef_round_ps (__mmask16 __U, __m512 __A, __m512 __B, (__mmask16) __U, __R); } +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_scalef_round_sd (__m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_scalefsd_round ((__v2df) __A, + (__v2df) __B, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_scalef_round_ss (__m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_scalefss_round ((__v4sf) __A, + (__v4sf) __B, + __R); +} #else #define _mm512_scalef_round_pd(A, B, C) \ (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) @@ -2456,6 +2627,12 @@ _mm512_maskz_scalef_round_ps (__mmask16 __U, __m512 __A, __m512 __B, #define _mm512_maskz_scalef_round_ps(U, A, B, C) \ (__m512)__builtin_ia32_scalefps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C) + +#define _mm_scalef_round_sd(A, B, C) \ + (__m128d)__builtin_ia32_scalefsd_round(A, B, C) + +#define _mm_scalef_round_ss(A, B, C) \ + (__m128)__builtin_ia32_scalefss_round(A, B, C) #endif #ifdef __OPTIMIZE__ @@ -7578,6 +7755,23 @@ _mm512_maskz_cvt_roundpd_ps (__mmask8 __U, __m512d __A, const int __R) (__mmask8) __U, __R); } +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundsd_ss (__m128 __A, __m128d __B, const int __R) +{ + return (__m128) __builtin_ia32_cvtsd2ss_round ((__v4sf) __A, + (__v2df) __B, + __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_cvt_roundss_sd (__m128d __A, __m128 __B, const int __R) +{ + return (__m128d) __builtin_ia32_cvtss2sd_round ((__v2df) __A, + (__v4sf) __B, + __R); +} #else #define _mm512_cvt_roundpd_ps(A, B) \ (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_setzero_ps(), -1, B) @@ -7587,6 +7781,12 @@ _mm512_maskz_cvt_roundpd_ps (__mmask8 __U, __m512d __A, const int __R) #define _mm512_maskz_cvt_roundpd_ps(U, A, B) \ (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_setzero_ps(), U, B) + +#define _mm_cvt_roundsd_ss(A, B, C) \ + (__m128)__builtin_ia32_cvtsd2ss_round(A, B, C) + +#define _mm_cvt_roundss_sd(A, B, C) \ + (__m128d)__builtin_ia32_cvtss2sd_round(A, B, C) #endif extern __inline void @@ -7611,6 +7811,24 @@ _mm512_stream_pd (double *__P, __m512d __A) } #ifdef __OPTIMIZE__ +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_getexp_round_ss (__m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_getexpss128_round ((__v4sf) __A, + (__v4sf) __B, + __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_getexp_round_sd (__m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_getexpsd128_round ((__v2df) __A, + (__v2df) __B, + __R); +} + extern __inline __m512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_getexp_round_ps (__m512 __A, const int __R) @@ -7759,6 +7977,30 @@ _mm512_maskz_getmant_round_ps (__mmask16 __U, __m512 __A, __U, __R); } +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_getmant_round_sd (__m128d __A, __m128d __B, + _MM_MANTISSA_NORM_ENUM __C, + _MM_MANTISSA_SIGN_ENUM __D, const int __R) +{ + return (__m128d) __builtin_ia32_getmantsd_round ((__v2df) __A, + (__v2df) __B, + (__D << 2) | __C, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_getmant_round_ss (__m128 __A, __m128 __B, + _MM_MANTISSA_NORM_ENUM __C, + _MM_MANTISSA_SIGN_ENUM __D, const int __R) +{ + return (__m128) __builtin_ia32_getmantss_round ((__v4sf) __A, + (__v4sf) __B, + (__D << 2) | __C, + __R); +} + #else #define _mm512_getmant_round_pd(X, B, C, R) \ ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \ @@ -7800,6 +8042,24 @@ _mm512_maskz_getmant_round_ps (__mmask16 __U, __m512 __A, (__v16sf)(__m512)_mm512_setzero_ps(), \ (__mmask16)(U),\ (R))) +#define _mm_getmant_round_sd(X, Y, C, D, R) \ + ((__m128d)__builtin_ia32_getmantsd_round ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), \ + (int)(((D)<<2) | (C)), \ + (R))) + +#define _mm_getmant_round_ss(X, Y, C, D, R) \ + ((__m128)__builtin_ia32_getmantss_round ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), \ + (int)(((D)<<2) | (C)), \ + (R))) + +#define _mm_getexp_round_ss(A, B, R) \ + ((__m128)__builtin_ia32_getexpss128_round((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), R)) + +#define _mm_getexp_round_sd(A, B, R) \ + ((__m128d)__builtin_ia32_getexpsd128_round((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), R)) + #define _mm512_getexp_round_ps(A, R) \ ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, R)) @@ -7885,6 +8145,24 @@ _mm512_maskz_roundscale_round_pd (__mmask8 __A, __m512d __B, _mm512_setzero_pd (), (__mmask8) __A, __R); } + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_roundscale_round_ss (__m128 __A, __m128 __B, const int __imm, const int __R) +{ + return (__m128) __builtin_ia32_rndscaless_round ((__v4sf) __A, + (__v4sf) __B, __imm, __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_roundscale_round_sd (__m128d __A, __m128d __B, const int __imm, + const int __R) +{ + return (__m128d) __builtin_ia32_rndscalesd_round ((__v2df) __A, + (__v2df) __B, __imm, __R); +} + #else #define _mm512_roundscale_round_ps(A, B, R) \ ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\ @@ -7912,6 +8190,12 @@ _mm512_maskz_roundscale_round_pd (__mmask8 __A, __m512d __B, (int)(C), \ (__v8df)_mm512_setzero_pd(),\ (__mmask8)(A), R)) +#define _mm_roundscale_round_ss(A, B, C, R) \ + ((__m128) __builtin_ia32_rndscaless_round ((__v4sf)(__m128)(A), \ + (__v4sf)(__m128)(B), (int)(C), R)) +#define _mm_roundscale_round_sd(A, B, C, R) \ + ((__m128d) __builtin_ia32_rndscalesd_round ((__v2df)(__m128d)(A), \ + (__v2df)(__m128d)(B), (int)(C), R)) #endif extern __inline __m512 @@ -9825,6 +10109,57 @@ _mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B) (__mmask16) __U); } +#ifdef __OPTIMIZE__ +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_max_round_sd (__m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A, + (__v2df) __B, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_max_round_ss (__m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_maxss_round ((__v4sf) __A, + (__v4sf) __B, + __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_min_round_sd (__m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_minsd_round ((__v2df) __A, + (__v2df) __B, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_min_round_ss (__m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_minss_round ((__v4sf) __A, + (__v4sf) __B, + __R); +} + +#else +#define _mm_max_round_sd(A, B, C) \ + (__m128d)__builtin_ia32_addsd_round(A, B, C) + +#define _mm_max_round_ss(A, B, C) \ + (__m128)__builtin_ia32_addss_round(A, B, C) + +#define _mm_min_round_sd(A, B, C) \ + (__m128d)__builtin_ia32_subsd_round(A, B, C) + +#define _mm_min_round_ss(A, B, C) \ + (__m128)__builtin_ia32_subss_round(A, B, C) +#endif + extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_mask_blend_pd (__mmask8 __U, __m512d __A, __m512d __W) @@ -9861,6 +10196,112 @@ _mm512_mask_blend_epi32 (__mmask16 __U, __m512i __A, __m512i __W) (__mmask16) __U); } +#ifdef __OPTIMIZE__ +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fmadd_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W, + (__v2df) __A, + (__v2df) __B, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fmadd_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W, + (__v4sf) __A, + (__v4sf) __B, + __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fmsub_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W, + (__v2df) __A, + -(__v2df) __B, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fmsub_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W, + (__v4sf) __A, + -(__v4sf) __B, + __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fnmadd_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W, + -(__v2df) __A, + (__v2df) __B, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fnmadd_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W, + -(__v4sf) __A, + (__v4sf) __B, + __R); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fnmsub_round_sd (__m128d __W, __m128d __A, __m128d __B, const int __R) +{ + return (__m128d) __builtin_ia32_vfmaddsd3_round ((__v2df) __W, + -(__v2df) __A, + -(__v2df) __B, + __R); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_fnmsub_round_ss (__m128 __W, __m128 __A, __m128 __B, const int __R) +{ + return (__m128) __builtin_ia32_vfmaddss3_round ((__v4sf) __W, + -(__v4sf) __A, + -(__v4sf) __B, + __R); +} +#else +#define _mm_fmadd_round_sd(A, B, C, R) \ + (__m128d)__builtin_ia32_vfmaddsd3_round(A, B, C, R) + +#define _mm_fmadd_round_ss(A, B, C, R) \ + (__m128)__builtin_ia32_vfmaddss3_round(A, B, C, R) + +#define _mm_fmsub_round_sd(A, B, C, R) \ + (__m128d)__builtin_ia32_vfmaddsd3_round(A, B, -(C), R) + +#define _mm_fmsub_round_ss(A, B, C, R) \ + (__m128)__builtin_ia32_vfmaddss3_round(A, B, -(C), R) + +#define _mm_fnmadd_round_sd(A, B, C, R) \ + (__m128d)__builtin_ia32_vfmaddsd3_round(A, -(B), C, R) + +#define _mm_fnmadd_round_ss(A, B, C, R) \ + (__m128)__builtin_ia32_vfmaddss3_round(A, -(B), C, R) + +#define _mm_fnmsub_round_sd(A, B, C, R) \ + (__m128d)__builtin_ia32_vfmaddsd3_round(A, -(B), -(C), R) + +#define _mm_fnmsub_round_ss(A, B, C, R) \ + (__m128)__builtin_ia32_vfmaddss3_round(A, -(B), -(C), R) +#endif + #ifdef __OPTIMIZE__ extern __inline int __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) @@ -10436,6 +10877,24 @@ _mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B) _MM_FROUND_CUR_DIRECTION); } +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_scalef_sd (__m128d __A, __m128d __B) +{ + return (__m128d) __builtin_ia32_scalefsd_round ((__v2df) __A, + (__v2df) __B, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_scalef_ss (__m128 __A, __m128 __B) +{ + return (__m128) __builtin_ia32_scalefss_round ((__v4sf) __A, + (__v4sf) __B, + _MM_FROUND_CUR_DIRECTION); +} + extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_fmadd_pd (__m512d __A, __m512d __B, __m512d __C) @@ -11784,6 +12243,24 @@ _mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A) _MM_FROUND_CUR_DIRECTION); } +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_getexp_ss (__m128 __A, __m128 __B) +{ + return (__m128) __builtin_ia32_getexpss128_round ((__v4sf) __A, + (__v4sf) __B, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_getexp_sd (__m128d __A, __m128d __B) +{ + return (__m128d) __builtin_ia32_getexpsd128_round ((__v2df) __A, + (__v2df) __B, + _MM_FROUND_CUR_DIRECTION); +} + extern __inline __m512d __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_getmant_pd (__m512d __A, _MM_MANTISSA_NORM_ENUM __B, @@ -11856,6 +12333,28 @@ _mm512_maskz_getmant_ps (__mmask16 __U, __m512 __A, _MM_FROUND_CUR_DIRECTION); } +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_getmant_sd (__m128d __A, __m128d __B, _MM_MANTISSA_NORM_ENUM __C, + _MM_MANTISSA_SIGN_ENUM __D) +{ + return (__m128d) __builtin_ia32_getmantsd_round ((__v2df) __A, + (__v2df) __B, + (__D << 2) | __C, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_getmant_ss (__m128 __A, __m128 __B, _MM_MANTISSA_NORM_ENUM __C, + _MM_MANTISSA_SIGN_ENUM __D) +{ + return (__m128) __builtin_ia32_getmantss_round ((__v4sf) __A, + (__v4sf) __B, + (__D << 2) | __C, + _MM_FROUND_CUR_DIRECTION); +} + #else #define _mm512_getmant_pd(X, B, C) \ ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \ @@ -11897,6 +12396,26 @@ _mm512_maskz_getmant_ps (__mmask16 __U, __m512 __A, (__v16sf)(__m512)_mm512_setzero_ps(), \ (__mmask16)(U),\ _MM_FROUND_CUR_DIRECTION)) +#define _mm_getmant_sd(X, Y, C, D) \ + ((__m128d)__builtin_ia32_getmantsd_round ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), \ + (int)(((D)<<2) | (C)), \ + _MM_FROUND_CUR_DIRECTION)) + +#define _mm_getmant_ss(X, Y, C, D) \ + ((__m128)__builtin_ia32_getmantss_round ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), \ + (int)(((D)<<2) | (C)), \ + _MM_FROUND_CUR_DIRECTION)) + +#define _mm_getexp_ss(A, B) \ + ((__m128)__builtin_ia32_getexpss128_mask((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \ + _MM_FROUND_CUR_DIRECTION)) + +#define _mm_getexp_sd(A, B) \ + ((__m128d)__builtin_ia32_getexpsd128_mask((__v2df)(__m128d)(A), (__v2df)(__m128d)(B),\ + _MM_FROUND_CUR_DIRECTION)) + #define _mm512_getexp_ps(A) \ ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION)) @@ -11987,6 +12506,24 @@ _mm512_maskz_roundscale_pd (__mmask8 __A, __m512d __B, const int __imm) _MM_FROUND_CUR_DIRECTION); } +extern __inline __m128 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_roundscale_ss (__m128 __A, __m128 __B, const int __imm) +{ + return (__m128) __builtin_ia32_rndscaless_round ((__v4sf) __A, + (__v4sf) __B, __imm, + _MM_FROUND_CUR_DIRECTION); +} + +extern __inline __m128d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm_roundscale_sd (__m128d __A, __m128d __B, const int __imm) +{ + return (__m128d) __builtin_ia32_rndscalesd_round ((__v2df) __A, + (__v2df) __B, __imm, + _MM_FROUND_CUR_DIRECTION); +} + #else #define _mm512_roundscale_ps(A, B) \ ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\ @@ -12014,6 +12551,12 @@ _mm512_maskz_roundscale_pd (__mmask8 __A, __m512d __B, const int __imm) (int)(C), \ (__v8df)_mm512_setzero_pd(),\ (__mmask8)(A), _MM_FROUND_CUR_DIRECTION)) +#define _mm_roundscale_ss(A, B, C) \ + ((__m128) __builtin_ia32_rndscaless_round ((__v4sf)(__m128)(A), \ + (__v4sf)(__m128)(B), (int)(C), _MM_FROUND_CUR_DIRECTION)) +#define _mm_roundscale_sd(A, B, C) \ + ((__m128d) __builtin_ia32_rndscalesd_round ((__v2df)(__m128d)(A), \ + (__v2df)(__m128d)(B), (int)(C), _MM_FROUND_CUR_DIRECTION)) #endif #ifdef __OPTIMIZE__ diff --git a/gcc/config/i386/i386-builtin-types.def b/gcc/config/i386/i386-builtin-types.def index 86ad31ea478..d19ca84ae2f 100644 --- a/gcc/config/i386/i386-builtin-types.def +++ b/gcc/config/i386/i386-builtin-types.def @@ -516,6 +516,7 @@ DEF_FUNCTION_TYPE (V16QI, V16QI, V16QI, INT) DEF_FUNCTION_TYPE (V16QI, V16QI, V16QI, V16QI) DEF_FUNCTION_TYPE (V1DI, V1DI, V1DI, INT) DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, INT) +DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, INT, INT) DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DF) DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DI, INT) DEF_FUNCTION_TYPE (V2DI, V2DI, DI, INT) @@ -531,6 +532,9 @@ DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V4DI) DEF_FUNCTION_TYPE (V4HI, V4HI, HI, INT) DEF_FUNCTION_TYPE (V4SF, V4SF, FLOAT, INT) DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, INT) +DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, INT, INT) +DEF_FUNCTION_TYPE (V4SF, V4SF, V2DF, INT) +DEF_FUNCTION_TYPE (V2DF, V2DF, V4SF, INT) DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SF) DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SI, INT) DEF_FUNCTION_TYPE (V4SI, V4SI, SI, INT) @@ -678,6 +682,7 @@ DEF_FUNCTION_TYPE (V4SF, V4SF, V2DF, V4SF, QI, INT) DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DF, QI, INT) DEF_FUNCTION_TYPE (V2DF, V2DF, V4SF, V2DF, QI, INT) DEF_FUNCTION_TYPE (V2DF, V2DF, V2DF, V2DF, INT) +DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SF, INT) DEF_FUNCTION_TYPE (V16SF, V16SF, INT, V16SF, HI, INT) DEF_FUNCTION_TYPE (V8DF, V8DF, INT, V8DF, QI, INT) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 4899fdb3886..be0364d4aff 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -27931,6 +27931,8 @@ enum ix86_builtins /* AVX512F */ IX86_BUILTIN_ADDPD512, IX86_BUILTIN_ADDPS512, + IX86_BUILTIN_ADDSD_ROUND, + IX86_BUILTIN_ADDSS_ROUND, IX86_BUILTIN_ALIGND512, IX86_BUILTIN_ALIGNQ512, IX86_BUILTIN_BLENDMD512, @@ -27965,9 +27967,11 @@ enum ix86_builtins IX86_BUILTIN_CVTPS2PD512, IX86_BUILTIN_CVTPS2PH512, IX86_BUILTIN_CVTPS2UDQ512, + IX86_BUILTIN_CVTSD2SS_ROUND, IX86_BUILTIN_CVTSI2SD64, IX86_BUILTIN_CVTSI2SS32, IX86_BUILTIN_CVTSI2SS64, + IX86_BUILTIN_CVTSS2SD_ROUND, IX86_BUILTIN_CVTTPD2DQ512, IX86_BUILTIN_CVTTPD2UDQ512, IX86_BUILTIN_CVTTPS2DQ512, @@ -27980,6 +27984,8 @@ enum ix86_builtins IX86_BUILTIN_CVTUSI2SS64, IX86_BUILTIN_DIVPD512, IX86_BUILTIN_DIVPS512, + IX86_BUILTIN_DIVSD_ROUND, + IX86_BUILTIN_DIVSS_ROUND, IX86_BUILTIN_EXPANDPD512, IX86_BUILTIN_EXPANDPD512Z, IX86_BUILTIN_EXPANDPDLOAD512, @@ -28002,8 +28008,12 @@ enum ix86_builtins IX86_BUILTIN_FIXUPIMMSS128_MASKZ, IX86_BUILTIN_GETEXPPD512, IX86_BUILTIN_GETEXPPS512, + IX86_BUILTIN_GETEXPSD128, + IX86_BUILTIN_GETEXPSS128, IX86_BUILTIN_GETMANTPD512, IX86_BUILTIN_GETMANTPS512, + IX86_BUILTIN_GETMANTSD128, + IX86_BUILTIN_GETMANTSS128, IX86_BUILTIN_INSERTF32X4, IX86_BUILTIN_INSERTF64X4, IX86_BUILTIN_INSERTI32X4, @@ -28016,8 +28026,12 @@ enum ix86_builtins IX86_BUILTIN_LOADUPS512, IX86_BUILTIN_MAXPD512, IX86_BUILTIN_MAXPS512, + IX86_BUILTIN_MAXSD_ROUND, + IX86_BUILTIN_MAXSS_ROUND, IX86_BUILTIN_MINPD512, IX86_BUILTIN_MINPS512, + IX86_BUILTIN_MINSD_ROUND, + IX86_BUILTIN_MINSS_ROUND, IX86_BUILTIN_MOVAPD512, IX86_BUILTIN_MOVAPS512, IX86_BUILTIN_MOVDDUP512, @@ -28034,6 +28048,8 @@ enum ix86_builtins IX86_BUILTIN_MOVSLDUP512, IX86_BUILTIN_MULPD512, IX86_BUILTIN_MULPS512, + IX86_BUILTIN_MULSD_ROUND, + IX86_BUILTIN_MULSS_ROUND, IX86_BUILTIN_PABSD512, IX86_BUILTIN_PABSQ512, IX86_BUILTIN_PADDD512, @@ -28144,12 +28160,20 @@ enum ix86_builtins IX86_BUILTIN_PXORQ512, IX86_BUILTIN_RCP14PD512, IX86_BUILTIN_RCP14PS512, + IX86_BUILTIN_RCP14SD, + IX86_BUILTIN_RCP14SS, IX86_BUILTIN_RNDSCALEPD, IX86_BUILTIN_RNDSCALEPS, + IX86_BUILTIN_RNDSCALESD, + IX86_BUILTIN_RNDSCALESS, IX86_BUILTIN_RSQRT14PD512, IX86_BUILTIN_RSQRT14PS512, + IX86_BUILTIN_RSQRT14SD, + IX86_BUILTIN_RSQRT14SS, IX86_BUILTIN_SCALEFPD512, IX86_BUILTIN_SCALEFPS512, + IX86_BUILTIN_SCALEFSD, + IX86_BUILTIN_SCALEFSS, IX86_BUILTIN_SHUFPD512, IX86_BUILTIN_SHUFPS512, IX86_BUILTIN_SHUF_F32x4, @@ -28160,6 +28184,8 @@ enum ix86_builtins IX86_BUILTIN_SQRTPD512_MASK, IX86_BUILTIN_SQRTPS512_MASK, IX86_BUILTIN_SQRTPS_NR512, + IX86_BUILTIN_SQRTSD_ROUND, + IX86_BUILTIN_SQRTSS_ROUND, IX86_BUILTIN_STOREAPD512, IX86_BUILTIN_STOREAPS512, IX86_BUILTIN_STOREDQUDI512, @@ -28168,6 +28194,8 @@ enum ix86_builtins IX86_BUILTIN_STOREUPS512, IX86_BUILTIN_SUBPD512, IX86_BUILTIN_SUBPS512, + IX86_BUILTIN_SUBSD_ROUND, + IX86_BUILTIN_SUBSS_ROUND, IX86_BUILTIN_UCMPD512, IX86_BUILTIN_UCMPQ512, IX86_BUILTIN_UNPCKHPD512, @@ -28196,6 +28224,8 @@ enum ix86_builtins IX86_BUILTIN_VFMADDPS512_MASK, IX86_BUILTIN_VFMADDPS512_MASK3, IX86_BUILTIN_VFMADDPS512_MASKZ, + IX86_BUILTIN_VFMADDSD3_ROUND, + IX86_BUILTIN_VFMADDSS3_ROUND, IX86_BUILTIN_VFMADDSUBPD512_MASK, IX86_BUILTIN_VFMADDSUBPD512_MASK3, IX86_BUILTIN_VFMADDSUBPD512_MASKZ, @@ -28206,6 +28236,8 @@ enum ix86_builtins IX86_BUILTIN_VFMSUBADDPS512_MASK3, IX86_BUILTIN_VFMSUBPD512_MASK3, IX86_BUILTIN_VFMSUBPS512_MASK3, + IX86_BUILTIN_VFMSUBSD3_MASK3, + IX86_BUILTIN_VFMSUBSS3_MASK3, IX86_BUILTIN_VFNMADDPD512_MASK, IX86_BUILTIN_VFNMADDPS512_MASK, IX86_BUILTIN_VFNMSUBPD512_MASK, @@ -29885,8 +29917,12 @@ static const struct builtin_description bdesc_args[] = { OPTION_MASK_ISA_AVX512F, CODE_FOR_xorv8di3_mask, "__builtin_ia32_pxorq512_mask", IX86_BUILTIN_PXORQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_QI }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_rcp14v8df_mask, "__builtin_ia32_rcp14pd512_mask", IX86_BUILTIN_RCP14PD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_rcp14v16sf_mask, "__builtin_ia32_rcp14ps512_mask", IX86_BUILTIN_RCP14PS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_srcp14v2df, "__builtin_ia32_rcp14sd", IX86_BUILTIN_RCP14SD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_srcp14v4sf, "__builtin_ia32_rcp14ss", IX86_BUILTIN_RCP14SS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_rsqrt14v8df_mask, "__builtin_ia32_rsqrt14pd512_mask", IX86_BUILTIN_RSQRT14PD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_rsqrt14v16sf_mask, "__builtin_ia32_rsqrt14ps512_mask", IX86_BUILTIN_RSQRT14PS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_rsqrt14v2df, "__builtin_ia32_rsqrt14sd", IX86_BUILTIN_RSQRT14SD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_rsqrt14v4sf, "__builtin_ia32_rsqrt14ss", IX86_BUILTIN_RSQRT14SS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_shufpd512_mask, "__builtin_ia32_shufpd512_mask", IX86_BUILTIN_SHUFPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_INT_V8DF_QI }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_shufps512_mask, "__builtin_ia32_shufps512_mask", IX86_BUILTIN_SHUFPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_INT_V16SF_HI }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_shuf_f32x4_mask, "__builtin_ia32_shuf_f32x4_mask", IX86_BUILTIN_SHUF_F32x4, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_INT_V16SF_HI }, @@ -29966,6 +30002,8 @@ static const struct builtin_description bdesc_round_args[] = /* AVX512F */ { OPTION_MASK_ISA_AVX512F, CODE_FOR_addv8df3_mask_round, "__builtin_ia32_addpd512_mask", IX86_BUILTIN_ADDPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_addv16sf3_mask_round, "__builtin_ia32_addps512_mask", IX86_BUILTIN_ADDPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_vmaddv2df3_round, "__builtin_ia32_addsd_round", IX86_BUILTIN_ADDSD_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_vmaddv4sf3_round, "__builtin_ia32_addss_round", IX86_BUILTIN_ADDSS_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_cmpv8df3_mask_round, "__builtin_ia32_cmppd512_mask", IX86_BUILTIN_CMPPD512, UNKNOWN, (int) QI_FTYPE_V8DF_V8DF_INT_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_cmpv16sf3_mask_round, "__builtin_ia32_cmpps512_mask", IX86_BUILTIN_CMPPS512, UNKNOWN, (int) HI_FTYPE_V16SF_V16SF_INT_HI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vmcmpv2df3_mask_round, "__builtin_ia32_cmpsd_mask", IX86_BUILTIN_CMPSD_MASK, UNKNOWN, (int) QI_FTYPE_V2DF_V2DF_INT_QI_INT }, @@ -29980,9 +30018,11 @@ static const struct builtin_description bdesc_round_args[] = { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fix_notruncv16sfv16si_mask_round, "__builtin_ia32_cvtps2dq512_mask", IX86_BUILTIN_CVTPS2DQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_cvtps2pd512_mask_round, "__builtin_ia32_cvtps2pd512_mask", IX86_BUILTIN_CVTPS2PD512, UNKNOWN, (int) V8DF_FTYPE_V8SF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_ufix_notruncv16sfv16si_mask_round, "__builtin_ia32_cvtps2udq512_mask", IX86_BUILTIN_CVTPS2UDQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_cvtsd2ss_round, "__builtin_ia32_cvtsd2ss_round", IX86_BUILTIN_CVTSD2SS_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V2DF_INT }, { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_sse2_cvtsi2sdq_round, "__builtin_ia32_cvtsi2sd64", IX86_BUILTIN_CVTSI2SD64, UNKNOWN, (int) V2DF_FTYPE_V2DF_INT64_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_cvtsi2ss_round, "__builtin_ia32_cvtsi2ss32", IX86_BUILTIN_CVTSI2SS32, UNKNOWN, (int) V4SF_FTYPE_V4SF_INT_INT }, { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_sse_cvtsi2ssq_round, "__builtin_ia32_cvtsi2ss64", IX86_BUILTIN_CVTSI2SS64, UNKNOWN, (int) V4SF_FTYPE_V4SF_INT64_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_cvtss2sd_round, "__builtin_ia32_cvtss2sd_round", IX86_BUILTIN_CVTSS2SD_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V4SF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_fix_truncv8dfv8si2_mask_round, "__builtin_ia32_cvttpd2dq512_mask", IX86_BUILTIN_CVTTPD2DQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_ufix_truncv8dfv8si2_mask_round, "__builtin_ia32_cvttpd2udq512_mask", IX86_BUILTIN_CVTTPD2UDQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_fix_truncv16sfv16si2_mask_round, "__builtin_ia32_cvttps2dq512_mask", IX86_BUILTIN_CVTTPS2DQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT }, @@ -29993,6 +30033,8 @@ static const struct builtin_description bdesc_round_args[] = { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_cvtusi2ss64_round, "__builtin_ia32_cvtusi2ss64", IX86_BUILTIN_CVTUSI2SS64, UNKNOWN, (int) V4SF_FTYPE_V4SF_UINT64_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_divv8df3_mask_round, "__builtin_ia32_divpd512_mask", IX86_BUILTIN_DIVPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_divv16sf3_mask_round, "__builtin_ia32_divps512_mask", IX86_BUILTIN_DIVPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_vmdivv2df3_round, "__builtin_ia32_divsd_round", IX86_BUILTIN_DIVSD_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_vmdivv4sf3_round, "__builtin_ia32_divss_round", IX86_BUILTIN_DIVSS_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fixupimmv8df_mask_round, "__builtin_ia32_fixupimmpd512_mask", IX86_BUILTIN_FIXUPIMMPD512_MASK, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DI_INT_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fixupimmv8df_maskz_round, "__builtin_ia32_fixupimmpd512_maskz", IX86_BUILTIN_FIXUPIMMPD512_MASKZ, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DI_INT_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fixupimmv16sf_mask_round, "__builtin_ia32_fixupimmps512_mask", IX86_BUILTIN_FIXUPIMMPS512_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI_INT }, @@ -30003,22 +30045,40 @@ static const struct builtin_description bdesc_round_args[] = { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sfixupimmv4sf_maskz_round, "__builtin_ia32_fixupimmss_maskz", IX86_BUILTIN_FIXUPIMMSS128_MASKZ, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_getexpv8df_mask_round, "__builtin_ia32_getexppd512_mask", IX86_BUILTIN_GETEXPPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_getexpv16sf_mask_round, "__builtin_ia32_getexpps512_mask", IX86_BUILTIN_GETEXPPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sgetexpv2df_round, "__builtin_ia32_getexpsd128_round", IX86_BUILTIN_GETEXPSD128, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sgetexpv4sf_round, "__builtin_ia32_getexpss128_round", IX86_BUILTIN_GETEXPSS128, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_getmantv8df_mask_round, "__builtin_ia32_getmantpd512_mask", IX86_BUILTIN_GETMANTPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_INT_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_getmantv16sf_mask_round, "__builtin_ia32_getmantps512_mask", IX86_BUILTIN_GETMANTPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_INT_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_getmantv2df_round, "__builtin_ia32_getmantsd_round", IX86_BUILTIN_GETMANTSD128, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_getmantv4sf_round, "__builtin_ia32_getmantss_round", IX86_BUILTIN_GETMANTSS128, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_smaxv8df3_mask_round, "__builtin_ia32_maxpd512_mask", IX86_BUILTIN_MAXPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_smaxv16sf3_mask_round, "__builtin_ia32_maxps512_mask", IX86_BUILTIN_MAXPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_vmsmaxv2df3_round, "__builtin_ia32_maxsd_round", IX86_BUILTIN_MAXSD_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_vmsmaxv4sf3_round, "__builtin_ia32_maxss_round", IX86_BUILTIN_MAXSS_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_sminv8df3_mask_round, "__builtin_ia32_minpd512_mask", IX86_BUILTIN_MINPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_sminv16sf3_mask_round, "__builtin_ia32_minps512_mask", IX86_BUILTIN_MINPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_vmsminv2df3_round, "__builtin_ia32_minsd_round", IX86_BUILTIN_MINSD_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_vmsminv4sf3_round, "__builtin_ia32_minss_round", IX86_BUILTIN_MINSS_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_mulv8df3_mask_round, "__builtin_ia32_mulpd512_mask", IX86_BUILTIN_MULPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_mulv16sf3_mask_round, "__builtin_ia32_mulps512_mask", IX86_BUILTIN_MULPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_vmmulv2df3_round, "__builtin_ia32_mulsd_round", IX86_BUILTIN_MULSD_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_vmmulv4sf3_round, "__builtin_ia32_mulss_round", IX86_BUILTIN_MULSS_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rndscalev8df_mask_round, "__builtin_ia32_rndscalepd_mask", IX86_BUILTIN_RNDSCALEPD, UNKNOWN, (int) V8DF_FTYPE_V8DF_INT_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rndscalev16sf_mask_round, "__builtin_ia32_rndscaleps_mask", IX86_BUILTIN_RNDSCALEPS, UNKNOWN, (int) V16SF_FTYPE_V16SF_INT_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rndscalev2df_round, "__builtin_ia32_rndscalesd_round", IX86_BUILTIN_RNDSCALESD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_rndscalev4sf_round, "__builtin_ia32_rndscaless_round", IX86_BUILTIN_RNDSCALESS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_scalefv8df_mask_round, "__builtin_ia32_scalefpd512_mask", IX86_BUILTIN_SCALEFPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_scalefv16sf_mask_round, "__builtin_ia32_scalefps512_mask", IX86_BUILTIN_SCALEFPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vmscalefv2df_round, "__builtin_ia32_scalefsd_round", IX86_BUILTIN_SCALEFSD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vmscalefv4sf_round, "__builtin_ia32_scalefss_round", IX86_BUILTIN_SCALEFSS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sqrtv8df2_mask_round, "__builtin_ia32_sqrtpd512_mask", IX86_BUILTIN_SQRTPD512_MASK, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_sqrtv16sf2_mask_round, "__builtin_ia32_sqrtps512_mask", IX86_BUILTIN_SQRTPS512_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_vmsqrtv2df2_round, "__builtin_ia32_sqrtsd_round", IX86_BUILTIN_SQRTSD_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_vmsqrtv4sf2_round, "__builtin_ia32_sqrtss_round", IX86_BUILTIN_SQRTSS_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_subv8df3_mask_round, "__builtin_ia32_subpd512_mask", IX86_BUILTIN_SUBPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_subv16sf3_mask_round, "__builtin_ia32_subps512_mask", IX86_BUILTIN_SUBPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_vmsubv2df3_round, "__builtin_ia32_subsd_round", IX86_BUILTIN_SUBSD_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse_vmsubv4sf3_round, "__builtin_ia32_subss_round", IX86_BUILTIN_SUBSS_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_sse2_cvtsd2si_round, "__builtin_ia32_vcvtsd2si32", IX86_BUILTIN_VCVTSD2SI32, UNKNOWN, (int) INT_FTYPE_V2DF_INT }, { OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, CODE_FOR_sse2_cvtsd2siq_round, "__builtin_ia32_vcvtsd2si64", IX86_BUILTIN_VCVTSD2SI64, UNKNOWN, (int) INT64_FTYPE_V2DF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_vcvtsd2usi_round, "__builtin_ia32_vcvtsd2usi32", IX86_BUILTIN_VCVTSD2USI32, UNKNOWN, (int) UINT_FTYPE_V2DF_INT }, @@ -30041,6 +30101,8 @@ static const struct builtin_description bdesc_round_args[] = { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmadd_v16sf_mask_round, "__builtin_ia32_vfmaddps512_mask", IX86_BUILTIN_VFMADDPS512_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmadd_v16sf_mask3_round, "__builtin_ia32_vfmaddps512_mask3", IX86_BUILTIN_VFMADDPS512_MASK3, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmadd_v16sf_maskz_round, "__builtin_ia32_vfmaddps512_maskz", IX86_BUILTIN_VFMADDPS512_MASKZ, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_fmai_vmfmadd_v2df_round, "__builtin_ia32_vfmaddsd3_round", IX86_BUILTIN_VFMADDSD3_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_V2DF_INT }, + { OPTION_MASK_ISA_AVX512F, CODE_FOR_fmai_vmfmadd_v4sf_round, "__builtin_ia32_vfmaddss3_round", IX86_BUILTIN_VFMADDSS3_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SF_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmaddsub_v8df_mask_round, "__builtin_ia32_vfmaddsubpd512_mask", IX86_BUILTIN_VFMADDSUBPD512_MASK, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmaddsub_v8df_mask3_round, "__builtin_ia32_vfmaddsubpd512_mask3", IX86_BUILTIN_VFMADDSUBPD512_MASK3, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, { OPTION_MASK_ISA_AVX512F, CODE_FOR_avx512f_fmaddsub_v8df_maskz_round, "__builtin_ia32_vfmaddsubpd512_maskz", IX86_BUILTIN_VFMADDSUBPD512_MASKZ, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT }, @@ -34070,6 +34132,10 @@ ix86_expand_round_builtin (const struct builtin_description *d, case V4SF_FTYPE_V4SF_INT_INT: case V4SF_FTYPE_V4SF_INT64_INT: case V2DF_FTYPE_V2DF_INT64_INT: + case V4SF_FTYPE_V4SF_V4SF_INT: + case V2DF_FTYPE_V2DF_V2DF_INT: + case V4SF_FTYPE_V4SF_V2DF_INT: + case V2DF_FTYPE_V2DF_V4SF_INT: nargs = 3; break; case V8SF_FTYPE_V8DF_V8SF_QI_INT: @@ -34080,6 +34146,13 @@ ix86_expand_round_builtin (const struct builtin_description *d, case V16SI_FTYPE_V16SF_V16SI_HI_INT: case V8DF_FTYPE_V8SF_V8DF_QI_INT: case V16SF_FTYPE_V16HI_V16SF_HI_INT: + case V2DF_FTYPE_V2DF_V2DF_V2DF_INT: + case V4SF_FTYPE_V4SF_V4SF_V4SF_INT: + nargs = 4; + break; + case V4SF_FTYPE_V4SF_V4SF_INT_INT: + case V2DF_FTYPE_V2DF_V2DF_INT_INT: + nargs_constant = 2; nargs = 4; break; case INT_FTYPE_V4SF_V4SF_INT_INT: @@ -34143,6 +34216,8 @@ ix86_expand_round_builtin (const struct builtin_description *d, { case CODE_FOR_avx512f_getmantv8df_mask_round: case CODE_FOR_avx512f_getmantv16sf_mask_round: + case CODE_FOR_avx512f_getmantv2df_round: + case CODE_FOR_avx512f_getmantv4sf_round: error ("the immediate argument must be a 4-bit immediate"); return const0_rtx; case CODE_FOR_avx512f_cmpv8df3_mask_round: diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 5005a478784..d75edb70870 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -1307,21 +1307,21 @@ (set_attr "prefix" "") (set_attr "mode" "")]) -(define_insn "_vm3" +(define_insn "_vm3" [(set (match_operand:VF_128 0 "register_operand" "=x,v") (vec_merge:VF_128 (plusminus:VF_128 (match_operand:VF_128 1 "register_operand" "0,v") - (match_operand:VF_128 2 "nonimmediate_operand" "xm,vm")) + (match_operand:VF_128 2 "nonimmediate_operand" "xm,")) (match_dup 1) (const_int 1)))] "TARGET_SSE" "@ \t{%2, %0|%0, %2} - v\t{%2, %1, %0|%0, %1, %2}" + v\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,avx") (set_attr "type" "sseadd") - (set_attr "prefix" "orig,vex") + (set_attr "prefix" "") (set_attr "mode" "")]) (define_expand "mul3" @@ -1347,21 +1347,21 @@ (set_attr "btver2_decode" "direct,double") (set_attr "mode" "")]) -(define_insn "_vm3" +(define_insn "_vm3" [(set (match_operand:VF_128 0 "register_operand" "=x,v") (vec_merge:VF_128 (multdiv:VF_128 (match_operand:VF_128 1 "register_operand" "0,v") - (match_operand:VF_128 2 "nonimmediate_operand" "xm,vm")) + (match_operand:VF_128 2 "nonimmediate_operand" "xm,")) (match_dup 1) (const_int 1)))] "TARGET_SSE" "@ \t{%2, %0|%0, %2} - v\t{%2, %1, %0|%0, %1, %2}" + v\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,avx") (set_attr "type" "sse") - (set_attr "prefix" "orig,vex") + (set_attr "prefix" "") (set_attr "btver2_decode" "direct,double") (set_attr "mode" "")]) @@ -1447,7 +1447,7 @@ (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "*srcp14" +(define_insn "srcp14" [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (unspec:VF_128 @@ -1457,7 +1457,7 @@ (match_dup 1) (const_int 1)))] "TARGET_AVX512F" - "vrcp14\t{%2, %1, %0|%0, %1, %2}" + "vrcp14\t{%2, %1, %0|, %1, %2}" [(set_attr "type" "sse") (set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -1494,21 +1494,21 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "")]) -(define_insn "_vmsqrt2" +(define_insn "_vmsqrt2" [(set (match_operand:VF_128 0 "register_operand" "=x,v") (vec_merge:VF_128 (sqrt:VF_128 - (match_operand:VF_128 1 "nonimmediate_operand" "xm,vm")) + (match_operand:VF_128 1 "nonimmediate_operand" "xm,")) (match_operand:VF_128 2 "register_operand" "0,v") (const_int 1)))] "TARGET_SSE" "@ sqrt\t{%1, %0|%0, %1} - vsqrt\t{%1, %2, %0|%0, %2, %1}" + vsqrt\t{%1, %2, %0|%0, %2, %1}" [(set_attr "isa" "noavx,avx") (set_attr "type" "sse") (set_attr "atom_sse_attr" "sqrt") - (set_attr "prefix" "orig,vex") + (set_attr "prefix" "") (set_attr "btver2_sse_attr" "sqrt") (set_attr "mode" "")]) @@ -1543,7 +1543,7 @@ (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "*rsqrt14" +(define_insn "rsqrt14" [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (unspec:VF_128 @@ -1624,22 +1624,22 @@ (set_attr "prefix" "") (set_attr "mode" "")]) -(define_insn "_vm3" +(define_insn "_vm3" [(set (match_operand:VF_128 0 "register_operand" "=x,v") (vec_merge:VF_128 (smaxmin:VF_128 (match_operand:VF_128 1 "register_operand" "0,v") - (match_operand:VF_128 2 "nonimmediate_operand" "xm,vm")) + (match_operand:VF_128 2 "nonimmediate_operand" "xm,")) (match_dup 1) (const_int 1)))] "TARGET_SSE" "@ \t{%2, %0|%0, %2} - v\t{%2, %1, %0|%0, %1, %2}" + v\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,avx") (set_attr "type" "sse") (set_attr "btver2_sse_attr" "maxmin") - (set_attr "prefix" "orig,vex") + (set_attr "prefix" "") (set_attr "mode" "")]) ;; These versions of the min/max patterns implement exactly the operations @@ -4108,34 +4108,34 @@ (set_attr "prefix" "maybe_vex") (set_attr "mode" "TI")]) -(define_insn "sse2_cvtsd2ss" +(define_insn "sse2_cvtsd2ss" [(set (match_operand:V4SF 0 "register_operand" "=x,x,v") (vec_merge:V4SF (vec_duplicate:V4SF (float_truncate:V2SF - (match_operand:V2DF 2 "nonimmediate_operand" "x,m,vm"))) + (match_operand:V2DF 2 "nonimmediate_operand" "x,m,"))) (match_operand:V4SF 1 "register_operand" "0,0,v") (const_int 1)))] "TARGET_SSE2" "@ cvtsd2ss\t{%2, %0|%0, %2} cvtsd2ss\t{%2, %0|%0, %q2} - vcvtsd2ss\t{%2, %1, %0|%0, %1, %q2}" + vcvtsd2ss\t{%2, %1, %0|%0, %1, %q2}" [(set_attr "isa" "noavx,noavx,avx") (set_attr "type" "ssecvt") (set_attr "athlon_decode" "vector,double,*") (set_attr "amdfam10_decode" "vector,double,*") (set_attr "bdver1_decode" "direct,direct,*") (set_attr "btver2_decode" "double,double,double") - (set_attr "prefix" "orig,orig,vex") + (set_attr "prefix" "orig,orig,") (set_attr "mode" "SF")]) -(define_insn "sse2_cvtss2sd" +(define_insn "sse2_cvtss2sd" [(set (match_operand:V2DF 0 "register_operand" "=x,x,v") (vec_merge:V2DF (float_extend:V2DF (vec_select:V2SF - (match_operand:V4SF 2 "nonimmediate_operand" "x,m,vm") + (match_operand:V4SF 2 "nonimmediate_operand" "x,m,") (parallel [(const_int 0) (const_int 1)]))) (match_operand:V2DF 1 "register_operand" "0,0,v") (const_int 1)))] @@ -4143,14 +4143,14 @@ "@ cvtss2sd\t{%2, %0|%0, %2} cvtss2sd\t{%2, %0|%0, %k2} - vcvtss2sd\t{%2, %1, %0|%0, %1, %k2}" + vcvtss2sd\t{%2, %1, %0|%0, %1, %k2}" [(set_attr "isa" "noavx,noavx,avx") (set_attr "type" "ssecvt") (set_attr "amdfam10_decode" "vector,double,*") (set_attr "athlon_decode" "direct,direct,*") (set_attr "bdver1_decode" "direct,direct,*") (set_attr "btver2_decode" "double,double,double") - (set_attr "prefix" "orig,orig,vex") + (set_attr "prefix" "orig,orig,") (set_attr "mode" "DF")]) (define_insn "avx512f_cvtpd2ps512" @@ -6553,17 +6553,17 @@ operands[1] = adjust_address (operands[1], DFmode, INTVAL (operands[2]) * 8); }) -(define_insn "*avx512f_vmscalef" +(define_insn "avx512f_vmscalef" [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (unspec:VF_128 [(match_operand:VF_128 1 "register_operand" "v") - (match_operand:VF_128 2 "nonimmediate_operand" "vm")] + (match_operand:VF_128 2 "nonimmediate_operand" "")] UNSPEC_SCALEF) (match_dup 1) (const_int 1)))] "TARGET_AVX512F" - "%vscalef\t{%2, %1, %0|%0, %1, %2}" + "%vscalef\t{%2, %1, %0|%0, %1, %2}" [(set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -6633,17 +6633,17 @@ [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_sgetexp" +(define_insn "avx512f_sgetexp" [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (unspec:VF_128 [(match_operand:VF_128 1 "register_operand" "v") - (match_operand:VF_128 2 "nonimmediate_operand" "vm")] + (match_operand:VF_128 2 "nonimmediate_operand" "")] UNSPEC_GETEXP) (match_dup 1) (const_int 1)))] "TARGET_AVX512F" - "vgetexp\t{%2, %1, %0|%0, %1, %2}"; + "vgetexp\t{%2, %1, %0|%0, %1, %2}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -6798,18 +6798,18 @@ (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "*avx512f_rndscale" +(define_insn "avx512f_rndscale" [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (unspec:VF_128 [(match_operand:VF_128 1 "register_operand" "v") - (match_operand:VF_128 2 "nonimmediate_operand" "vm") + (match_operand:VF_128 2 "nonimmediate_operand" "") (match_operand:SI 3 "const_0_to_255_operand")] UNSPEC_ROUND) (match_dup 1) (const_int 1)))] "TARGET_AVX512F" - "vrndscale\t{%3, %2, %1, %0|%0, %1, %2, %3}" + "vrndscale\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "length_immediate" "1") (set_attr "prefix" "evex") (set_attr "mode" "")]) @@ -15184,18 +15184,18 @@ [(set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_insn "avx512f_getmant" +(define_insn "avx512f_getmant" [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (unspec:VF_128 [(match_operand:VF_128 1 "register_operand" "v") - (match_operand:VF_128 2 "nonimmediate_operand" "vm") + (match_operand:VF_128 2 "nonimmediate_operand" "") (match_operand:SI 3 "const_0_to_15_operand")] UNSPEC_GETMANT) (match_dup 1) (const_int 1)))] "TARGET_AVX512F" - "vgetmant\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + "vgetmant\t{%3, %2, %1, %0|%0, %1, %2, %3}"; [(set_attr "prefix" "evex") (set_attr "mode" "")]) diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md index 4a6d4778d9c..487b749255b 100644 --- a/gcc/config/i386/subst.md +++ b/gcc/config/i386/subst.md @@ -51,7 +51,7 @@ (define_subst_attr "mask_operand18" "mask" "" "%{%19%}%N18") (define_subst_attr "mask_operand19" "mask" "" "%{%20%}%N19") (define_subst_attr "mask_codefor" "mask" "*" "") -(define_subst_attr "mask_mode512bit_condition" "mask" "1" "(GET_MODE_SIZE (GET_MODE (operands[0])) == 64)") +(define_subst_attr "mask_mode512bit_condition" "mask" "1" "(GET_MODE_SIZE (mode) == 64)") (define_subst_attr "store_mask_constraint" "mask" "vm" "v") (define_subst_attr "store_mask_predicate" "mask" "nonimmediate_operand" "register_operand") (define_subst_attr "mask_prefix" "mask" "vex" "evex") @@ -85,7 +85,7 @@ (define_subst_attr "sd_mask_op4" "sd" "" "%{%5%}%N4") (define_subst_attr "sd_mask_op5" "sd" "" "%{%6%}%N5") (define_subst_attr "sd_mask_codefor" "sd" "*" "") -(define_subst_attr "sd_mask_mode512bit_condition" "sd" "1" "(GET_MODE_SIZE (GET_MODE (operands[0])) == 64)") +(define_subst_attr "sd_mask_mode512bit_condition" "sd" "1" "(GET_MODE_SIZE (mode) == 64)") (define_subst "sd" [(set (match_operand:SUBST_V 0) @@ -101,7 +101,6 @@ (define_subst_attr "round_name" "round" "" "_round") (define_subst_attr "round_mask_operand2" "mask" "%R2" "%R4") (define_subst_attr "round_mask_operand3" "mask" "%R3" "%R5") -(define_subst_attr "round_mask_scalar_operand3" "mask_scalar" "%R3" "%R5") (define_subst_attr "round_sd_mask_operand4" "sd" "%R4" "%R6") (define_subst_attr "round_op2" "round" "" "%R2") (define_subst_attr "round_op3" "round" "" "%R3") @@ -116,8 +115,9 @@ (define_subst_attr "round_constraint2" "round" "m" "v") (define_subst_attr "round_constraint3" "round" "rm" "r") (define_subst_attr "round_nimm_predicate" "round" "nonimmediate_operand" "register_operand") -(define_subst_attr "round_mode512bit_condition" "round" "1" "(GET_MODE (operands[0]) == V16SFmode || GET_MODE (operands[0]) == V8DFmode)") -(define_subst_attr "round_modev4sf_condition" "round" "1" "(GET_MODE (operands[0]) == V4SFmode)") +(define_subst_attr "round_prefix" "round" "vex" "evex") +(define_subst_attr "round_mode512bit_condition" "round" "1" "(mode == V16SFmode || mode == V8DFmode)") +(define_subst_attr "round_modev4sf_condition" "round" "1" "(mode == V4SFmode)") (define_subst_attr "round_codefor" "round" "*" "") (define_subst_attr "round_opnum" "round" "5" "6") @@ -138,9 +138,11 @@ (define_subst_attr "round_saeonly_mask_scalar_merge_operand4" "mask_scalar_merge" "%R4" "%R5") (define_subst_attr "round_saeonly_sd_mask_operand5" "sd" "%R5" "%R7") (define_subst_attr "round_saeonly_op2" "round_saeonly" "" "%R2") +(define_subst_attr "round_saeonly_op3" "round_saeonly" "" "%R3") (define_subst_attr "round_saeonly_op4" "round_saeonly" "" "%R4") (define_subst_attr "round_saeonly_op5" "round_saeonly" "" "%R5") (define_subst_attr "round_saeonly_op6" "round_saeonly" "" "%R6") +(define_subst_attr "round_saeonly_prefix" "round_saeonly" "vex" "evex") (define_subst_attr "round_saeonly_mask_op2" "round_saeonly" "" "") (define_subst_attr "round_saeonly_mask_op3" "round_saeonly" "" "") (define_subst_attr "round_saeonly_mask_scalar_op3" "round_saeonly" "" "") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1ad8186f148..74c81798075 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,71 @@ PR tree-optimization/59622 * g++.dg/opt/pr59622.C: New test. +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * gcc.target/i386/avx-1.c: Update for AVX-512 scalar insns. + * gcc.target/i386/avx512f-vaddsd-1.c: New. + * gcc.target/i386/avx512f-vaddss-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto. + * gcc.target/i386/avx512f-vdivsd-1.c: Ditto. + * gcc.target/i386/avx512f-vdivss-1.c: Ditto. + * gcc.target/i386/avx512f-vextractf32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vextracti32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpsd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpsd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetexpss-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpss-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantsd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantsd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantss-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantss-2.c: Ditto. + * gcc.target/i386/avx512f-vmaxsd-1.c: Ditto. + * gcc.target/i386/avx512f-vmaxss-1.c: Ditto. + * gcc.target/i386/avx512f-vminsd-1.c: Ditto. + * gcc.target/i386/avx512f-vminss-1.c: Ditto. + * gcc.target/i386/avx512f-vmulsd-1.c: Ditto. + * gcc.target/i386/avx512f-vmulss-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14sd-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14sd-2.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ss-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ss-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscalesd-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscalesd-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscaless-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscaless-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14sd-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14sd-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ss-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ss-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefss-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefss-2.c: Ditto. + * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto. + * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto. + * gcc.target/i386/avx512f-vsubsd-1.c: Ditto. + * gcc.target/i386/avx512f-vsubss-1.c: Ditto. + * gcc.target/i386/sse-14.c: Update for AVX-512 scalar insns. + * gcc.target/i386/sse-23.c: Ditto. + * gcc.target/i386/testimm-10.c: Ditto. + 2013-12-31 Alexander Ivchenko Maxim Kuznetsov Sergey Lega diff --git a/gcc/testsuite/gcc.target/i386/avx-1.c b/gcc/testsuite/gcc.target/i386/avx-1.c index 0d38f30ed77..72015925b28 100644 --- a/gcc/testsuite/gcc.target/i386/avx-1.c +++ b/gcc/testsuite/gcc.target/i386/avx-1.c @@ -169,6 +169,8 @@ /* avx512fintrin.h */ #define __builtin_ia32_addpd512_mask(A, B, C, D, E) __builtin_ia32_addpd512_mask(A, B, C, D, 1) #define __builtin_ia32_addps512_mask(A, B, C, D, E) __builtin_ia32_addps512_mask(A, B, C, D, 1) +#define __builtin_ia32_addsd_round(A, B, C) __builtin_ia32_addsd_round(A, B, 1) +#define __builtin_ia32_addss_round(A, B, C) __builtin_ia32_addss_round(A, B, 1) #define __builtin_ia32_alignd512_mask(A, B, F, D, E) __builtin_ia32_alignd512_mask(A, B, 1, D, E) #define __builtin_ia32_alignq512_mask(A, B, F, D, E) __builtin_ia32_alignq512_mask(A, B, 1, D, E) #define __builtin_ia32_cmpd512_mask(A, B, E, D) __builtin_ia32_cmpd512_mask(A, B, 1, D) @@ -184,11 +186,11 @@ #define __builtin_ia32_cvtps2dq512_mask(A, B, C, D) __builtin_ia32_cvtps2dq512_mask(A, B, C, 1) #define __builtin_ia32_cvtps2pd512_mask(A, B, C, D) __builtin_ia32_cvtps2pd512_mask(A, B, C, 5) #define __builtin_ia32_cvtps2udq512_mask(A, B, C, D) __builtin_ia32_cvtps2udq512_mask(A, B, C, 1) -#define __builtin_ia32_cvtsd2ss_mask(A, B, C, D, E) __builtin_ia32_cvtsd2ss_mask(A, B, C, D, 1) +#define __builtin_ia32_cvtsd2ss_round(A, B, C) __builtin_ia32_cvtsd2ss_round(A, B, 1) +#define __builtin_ia32_cvtss2sd_round(A, B, C) __builtin_ia32_cvtss2sd_round(A, B, 4) #define __builtin_ia32_cvtsi2sd64(A, B, C) __builtin_ia32_cvtsi2sd64(A, B, 1) #define __builtin_ia32_cvtsi2ss32(A, B, C) __builtin_ia32_cvtsi2ss32(A, B, 1) #define __builtin_ia32_cvtsi2ss64(A, B, C) __builtin_ia32_cvtsi2ss64(A, B, 1) -#define __builtin_ia32_cvtss2sd_mask(A, B, C, D, E) __builtin_ia32_cvtss2sd_mask(A, B, C, D, 5) #define __builtin_ia32_cvttpd2dq512_mask(A, B, C, D) __builtin_ia32_cvttpd2dq512_mask(A, B, C, 5) #define __builtin_ia32_cvttpd2udq512_mask(A, B, C, D) __builtin_ia32_cvttpd2udq512_mask(A, B, C, 5) #define __builtin_ia32_cvttps2dq512_mask(A, B, C, D) __builtin_ia32_cvttps2dq512_mask(A, B, C, 5) @@ -199,6 +201,8 @@ #define __builtin_ia32_cvtusi2ss64(A, B, C) __builtin_ia32_cvtusi2ss64(A, B, 1) #define __builtin_ia32_divpd512_mask(A, B, C, D, E) __builtin_ia32_divpd512_mask(A, B, C, D, 1) #define __builtin_ia32_divps512_mask(A, B, C, D, E) __builtin_ia32_divps512_mask(A, B, C, D, 1) +#define __builtin_ia32_divsd_round(A, B, C) __builtin_ia32_divsd_round(A, B, 1) +#define __builtin_ia32_divss_round(A, B, C) __builtin_ia32_divss_round(A, B, 1) #define __builtin_ia32_extractf32x4_mask(A, E, C, D) __builtin_ia32_extractf32x4_mask(A, 1, C, D) #define __builtin_ia32_extractf64x4_mask(A, E, C, D) __builtin_ia32_extractf64x4_mask(A, 1, C, D) #define __builtin_ia32_extracti32x4_mask(A, E, C, D) __builtin_ia32_extracti32x4_mask(A, 1, C, D) @@ -221,18 +225,28 @@ #define __builtin_ia32_gathersiv8di(A, B, C, D, F) __builtin_ia32_gathersiv8di(A, B, C, D, 1) #define __builtin_ia32_getexppd512_mask(A, B, C, D) __builtin_ia32_getexppd512_mask(A, B, C, 5) #define __builtin_ia32_getexpps512_mask(A, B, C, D) __builtin_ia32_getexpps512_mask(A, B, C, 5) +#define __builtin_ia32_getexpsd128_round(A, B, C) __builtin_ia32_getexpsd128_round(A, B, 4) +#define __builtin_ia32_getexpss128_round(A, B, C) __builtin_ia32_getexpss128_round(A, B, 4) #define __builtin_ia32_getmantpd512_mask(A, F, C, D, E) __builtin_ia32_getmantpd512_mask(A, 1, C, D, 5) #define __builtin_ia32_getmantps512_mask(A, F, C, D, E) __builtin_ia32_getmantps512_mask(A, 1, C, D, 5) +#define __builtin_ia32_getmantsd_round(A, B, C, D) __builtin_ia32_getmantsd_round(A, B, 1, 4) +#define __builtin_ia32_getmantss_round(A, B, C, D) __builtin_ia32_getmantss_round(A, B, 1, 4) #define __builtin_ia32_insertf32x4_mask(A, B, F, D, E) __builtin_ia32_insertf32x4_mask(A, B, 1, D, E) #define __builtin_ia32_insertf64x4_mask(A, B, F, D, E) __builtin_ia32_insertf64x4_mask(A, B, 1, D, E) #define __builtin_ia32_inserti32x4_mask(A, B, F, D, E) __builtin_ia32_inserti32x4_mask(A, B, 1, D, E) #define __builtin_ia32_inserti64x4_mask(A, B, F, D, E) __builtin_ia32_inserti64x4_mask(A, B, 1, D, E) #define __builtin_ia32_maxpd512_mask(A, B, C, D, E) __builtin_ia32_maxpd512_mask(A, B, C, D, 5) #define __builtin_ia32_maxps512_mask(A, B, C, D, E) __builtin_ia32_maxps512_mask(A, B, C, D, 5) +#define __builtin_ia32_maxsd_round(A, B, C) __builtin_ia32_maxsd_round(A, B, 4) +#define __builtin_ia32_maxss_round(A, B, C) __builtin_ia32_maxss_round(A, B, 4) #define __builtin_ia32_minpd512_mask(A, B, C, D, E) __builtin_ia32_minpd512_mask(A, B, C, D, 5) #define __builtin_ia32_minps512_mask(A, B, C, D, E) __builtin_ia32_minps512_mask(A, B, C, D, 5) +#define __builtin_ia32_minsd_round(A, B, C) __builtin_ia32_minsd_round(A, B, 4) +#define __builtin_ia32_minss_round(A, B, C) __builtin_ia32_minss_round(A, B, 4) #define __builtin_ia32_mulpd512_mask(A, B, C, D, E) __builtin_ia32_mulpd512_mask(A, B, C, D, 1) #define __builtin_ia32_mulps512_mask(A, B, C, D, E) __builtin_ia32_mulps512_mask(A, B, C, D, 1) +#define __builtin_ia32_mulsd_round(A, B, C) __builtin_ia32_mulsd_round(A, B, 1) +#define __builtin_ia32_mulss_round(A, B, C) __builtin_ia32_mulss_round(A, B, 1) #define __builtin_ia32_permdf512_mask(A, E, C, D) __builtin_ia32_permdf512_mask(A, 1, C, D) #define __builtin_ia32_permdi512_mask(A, E, C, D) __builtin_ia32_permdi512_mask(A, 1, C, D) #define __builtin_ia32_prold512_mask(A, E, C, D) __builtin_ia32_prold512_mask(A, 1, C, D) @@ -252,10 +266,12 @@ #define __builtin_ia32_pternlogq512_maskz(A, B, C, F, E) __builtin_ia32_pternlogq512_maskz(A, B, C, 1, E) #define __builtin_ia32_rndscalepd_mask(A, F, C, D, E) __builtin_ia32_rndscalepd_mask(A, 1, C, D, 5) #define __builtin_ia32_rndscaleps_mask(A, F, C, D, E) __builtin_ia32_rndscaleps_mask(A, 1, C, D, 5) -#define __builtin_ia32_rndscalesd_mask(A, B, I, D, E, F) __builtin_ia32_rndscalesd_mask(A, B, 1, D, E, 5) -#define __builtin_ia32_rndscaless_mask(A, B, I, D, E, F) __builtin_ia32_rndscaless_mask(A, B, 1, D, E, 5) +#define __builtin_ia32_rndscalesd_round(A, B, C, D) __builtin_ia32_rndscalesd_round(A, B, 1, 4) +#define __builtin_ia32_rndscaless_round(A, B, C, D) __builtin_ia32_rndscaless_round(A, B, 1, 4) #define __builtin_ia32_scalefpd512_mask(A, B, C, D, E) __builtin_ia32_scalefpd512_mask(A, B, C, D, 1) #define __builtin_ia32_scalefps512_mask(A, B, C, D, E) __builtin_ia32_scalefps512_mask(A, B, C, D, 1) +#define __builtin_ia32_scalefsd_round(A, B, C) __builtin_ia32_scalefsd_round(A, B, 1) +#define __builtin_ia32_scalefss_round(A, B, C) __builtin_ia32_scalefss_round(A, B, 1) #define __builtin_ia32_scatterdiv8df(A, B, C, D, F) __builtin_ia32_scatterdiv8df(A, B, C, D, 1) #define __builtin_ia32_scatterdiv8di(A, B, C, D, F) __builtin_ia32_scatterdiv8di(A, B, C, D, 1) #define __builtin_ia32_scatterdiv16sf(A, B, C, D, F) __builtin_ia32_scatterdiv16sf(A, B, C, D, 1) @@ -272,10 +288,12 @@ #define __builtin_ia32_shufps512_mask(A, B, F, D, E) __builtin_ia32_shufps512_mask(A, B, 1, D, E) #define __builtin_ia32_sqrtpd512_mask(A, B, C, D) __builtin_ia32_sqrtpd512_mask(A, B, C, 1) #define __builtin_ia32_sqrtps512_mask(A, B, C, D) __builtin_ia32_sqrtps512_mask(A, B, C, 1) -#define __builtin_ia32_sqrtsd_mask(A, B, C, D, E) __builtin_ia32_sqrtsd_mask(A, B, C, D, 1) -#define __builtin_ia32_sqrtss_mask(A, B, C, D, E) __builtin_ia32_sqrtss_mask(A, B, C, D, 1) +#define __builtin_ia32_sqrtss_round(A, B, C) __builtin_ia32_sqrtss_round(A, B, 1) +#define __builtin_ia32_sqrtsd_round(A, B, C) __builtin_ia32_sqrtsd_round(A, B, 1) #define __builtin_ia32_subpd512_mask(A, B, C, D, E) __builtin_ia32_subpd512_mask(A, B, C, D, 1) #define __builtin_ia32_subps512_mask(A, B, C, D, E) __builtin_ia32_subps512_mask(A, B, C, D, 1) +#define __builtin_ia32_subsd_round(A, B, C) __builtin_ia32_subsd_round(A, B, 1) +#define __builtin_ia32_subss_round(A, B, C) __builtin_ia32_subss_round(A, B, 1) #define __builtin_ia32_ucmpd512_mask(A, B, E, D) __builtin_ia32_ucmpd512_mask(A, B, 1, D) #define __builtin_ia32_ucmpq512_mask(A, B, E, D) __builtin_ia32_ucmpq512_mask(A, B, 1, D) #define __builtin_ia32_vcomisd(A, B, C, D) __builtin_ia32_vcomisd(A, B, 1, 5) @@ -304,12 +322,8 @@ #define __builtin_ia32_vfmaddps512_mask(A, B, C, D, E) __builtin_ia32_vfmaddps512_mask(A, B, C, D, 1) #define __builtin_ia32_vfmaddps512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddps512_mask3(A, B, C, D, 1) #define __builtin_ia32_vfmaddps512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddps512_maskz(A, B, C, D, 1) -#define __builtin_ia32_vfmaddsd3_mask(A, B, C, D, E) __builtin_ia32_vfmaddsd3_mask(A, B, C, D, 1) -#define __builtin_ia32_vfmaddsd3_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsd3_mask3(A, B, C, D, 1) -#define __builtin_ia32_vfmaddsd3_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsd3_maskz(A, B, C, D, 1) -#define __builtin_ia32_vfmaddss3_mask(A, B, C, D, E) __builtin_ia32_vfmaddss3_mask(A, B, C, D, 1) -#define __builtin_ia32_vfmaddss3_mask3(A, B, C, D, E) __builtin_ia32_vfmaddss3_mask3(A, B, C, D, 1) -#define __builtin_ia32_vfmaddss3_maskz(A, B, C, D, E) __builtin_ia32_vfmaddss3_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsd3_round(A, B, C, D) __builtin_ia32_vfmaddsd3_round(A, B, C, 1) +#define __builtin_ia32_vfmaddss3_round(A, B, C, D) __builtin_ia32_vfmaddss3_round(A, B, C, 1) #define __builtin_ia32_vfmaddsubpd512_mask(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_mask(A, B, C, D, 1) #define __builtin_ia32_vfmaddsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_mask3(A, B, C, D, 1) #define __builtin_ia32_vfmaddsubpd512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_maskz(A, B, C, D, 1) diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vaddsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vaddsd-1.c new file mode 100644 index 00000000000..f0bc5cecc5d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vaddsd-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vaddsd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_add_round_sd (x1, x2, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vaddss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vaddss-1.c new file mode 100644 index 00000000000..5a8491cfd20 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vaddss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vaddss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_add_round_ss (x1, x2, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2ss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2ss-1.c new file mode 100644 index 00000000000..8cb51c42a99 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2ss-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtsd2ss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128 s1, r; +volatile __m128d s2; + +void extern +avx512f_test (void) +{ + r = _mm_cvt_roundsd_ss (s1, s2, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2sd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2sd-1.c new file mode 100644 index 00000000000..5b6a43f5471 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2sd-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vcvtss2sd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128d s1, r; +volatile __m128 s2; + +void extern +avx512f_test (void) +{ + r = _mm_cvt_roundss_sd (s1, s2, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vdivsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vdivsd-1.c new file mode 100644 index 00000000000..95df56cc2f3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vdivsd-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vdivsd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x1, x2; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x1 = _mm_div_round_sd (x1, x2, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vdivss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vdivss-1.c new file mode 100644 index 00000000000..5c6eb947ad0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vdivss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vdivss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_div_round_ss (x1, x2, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-2.c new file mode 100644 index 00000000000..35377b4302a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-2.c @@ -0,0 +1,56 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "string.h" + +void +CALC (UNION_TYPE (AVX512F_LEN,) s1, float *res_ref, int mask) +{ + memset (res_ref, 0, 16); + memcpy (res_ref, s1.a + mask * 4, 16); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN,) s1; + union128 res1, res2, res3; + float res_ref[4]; + MASK_TYPE mask = MASK_VALUE; + int j; + + for (j = 0; j < SIZE; j++) + { + s1.a[j] = j * j / 4.56; + } + + for (j = 0; j < 4; j++) + { + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_extractf32x4_ps) (s1.x, 1); + res2.x = INTRINSIC (_mask_extractf32x4_ps) (res2.x, mask, s1.x, 1); + res3.x = INTRINSIC (_maskz_extractf32x4_ps) (mask, s1.x, 1); + CALC (s1, res_ref, 1); + + if (check_union128 (res1, res_ref)) + abort (); + + MASK_MERGE ()(res_ref, mask, 4); + if (check_union128 (res2, res_ref)) + abort (); + + MASK_ZERO ()(res_ref, mask, 4); + if (check_union128 (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-2.c new file mode 100644 index 00000000000..1ea77b03422 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-2.c @@ -0,0 +1,57 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +#define SIZE (AVX512F_LEN / 32) +#include "avx512f-mask-type.h" +#include "string.h" + +void +CALC (UNION_TYPE (AVX512F_LEN, i_d) s1, int *res_ref, int mask) +{ + memset (res_ref, 0, 16); + memcpy (res_ref, s1.a + mask * 4, 16); +} + +void static +TEST (void) +{ + UNION_TYPE (AVX512F_LEN, i_d) s1; + union128i_d res1, res2, res3; + int res_ref[4]; + MASK_TYPE mask = MASK_VALUE; + int j; + + for (j = 0; j < SIZE; j++) + { + s1.a[j] = j * j / 4.56; + } + + for (j = 0; j < 4; j++) + { + res1.a[j] = DEFAULT_VALUE; + res2.a[j] = DEFAULT_VALUE; + res3.a[j] = DEFAULT_VALUE; + } + + res1.x = INTRINSIC (_extracti32x4_epi32) (s1.x, 1); + res2.x = + INTRINSIC (_mask_extracti32x4_epi32) (res2.x, mask, s1.x, 1); + res3.x = INTRINSIC (_maskz_extracti32x4_epi32) (mask, s1.x, 1); + CALC (s1, res_ref, 1); + + if (check_union128i_d (res1, res_ref)) + abort (); + + MASK_MERGE (i_d) (res_ref, mask, 4); + if (check_union128i_d (res2, res_ref)) + abort (); + + MASK_ZERO (i_d) (res_ref, mask, 4); + if (check_union128i_d (res3, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXsd-1.c new file mode 100644 index 00000000000..ea8b17c58b0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXsd-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmadd...sd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128d a, b, c; + +void extern +avx512f_test (void) +{ + a = _mm_fmadd_round_sd (a, b, c, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXss-1.c new file mode 100644 index 00000000000..cd44fb47d5f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmadd...ss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128 a, b, c; + +void extern +avx512f_test (void) +{ + a = _mm_fmadd_round_ss (a, b, c, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXsd-1.c new file mode 100644 index 00000000000..2d78df6f8e6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXsd-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmsub...sd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128d a, b, c; + +void extern +avx512f_test (void) +{ + a = _mm_fmsub_round_sd (a, b, c, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-1.c new file mode 100644 index 00000000000..b7609f58ec4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfmsub...ss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128 a, b, c; + +void extern +avx512f_test (void) +{ + a = _mm_fmsub_round_ss (a, b, c, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXsd-1.c new file mode 100644 index 00000000000..e938236d402 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXsd-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfnmadd...sd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128d a, b, c; + +void extern +avx512f_test (void) +{ + a = _mm_fnmadd_round_sd (a, b, c, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-1.c new file mode 100644 index 00000000000..f5752e4b77d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfnmadd...ss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128 a, b, c; + +void extern +avx512f_test (void) +{ + a = _mm_fnmadd_round_ss (a, b, c, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXsd-1.c new file mode 100644 index 00000000000..931b5d4abc4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXsd-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfnmsub...sd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128d a, b, c; + +void extern +avx512f_test (void) +{ + a = _mm_fnmsub_round_sd (a, b, c, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXss-1.c new file mode 100644 index 00000000000..f097f1a9977 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vfnmsub...ss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128 a, b, c; + +void extern +avx512f_test (void) +{ + a = _mm_fnmsub_round_ss (a, b, c, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-1.c new file mode 100644 index 00000000000..952ed546095 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vgetexpsd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\, %xmm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vgetexpsd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\, %xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128d x; + +void extern +avx512f_test (void) +{ + x = _mm_getexp_sd (x, x); + x = _mm_getexp_round_sd (x, x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-2.c new file mode 100644 index 00000000000..c1e5e5f2202 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpsd-2.c @@ -0,0 +1,36 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#define SIZE (128 / 64) + +#include +#include "avx512f-check.h" +#include "avx512f-helper.h" + +static void +compute_vgetexpsd (double *s, double *r) +{ + r[0] = floor (log (s[0]) / log (2)); +} + +void static +avx512f_test (void) +{ + int i; + union128d res1, s1; + double res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 5.0 - i; + res_ref[i] = s1.a[i]; + } + + res1.x = _mm_getexp_sd (s1.x, s1.x); + + compute_vgetexpsd (s1.a, res_ref); + + if (check_fp_union128d (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-1.c new file mode 100644 index 00000000000..d946a4788dc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vgetexpss\[ \\t\]+\[^\n\]*%xmm\[0-9\]\, %xmm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vgetexpss\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\, %xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128 x; + +void extern +avx512f_test (void) +{ + x = _mm_getexp_ss (x, x); + x = _mm_getexp_round_ss (x, x, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c new file mode 100644 index 00000000000..39d77c7a026 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c @@ -0,0 +1,36 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#define SIZE (128 / 32) + +#include +#include "avx512f-check.h" +#include "avx512f-helper.h" + +static void +compute_vgetexpss (float *s, float *r) +{ + r[0] = floor (log (s[0]) / log (2)); +} + +void static +avx512f_test (void) +{ + int i; + union128 res1, s1; + float res_ref[SIZE]; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 5.0 - i; + res_ref[i] = s1.a[i]; + } + + res1.x = _mm_getexp_ss (s1.x, s1.x); + + compute_vgetexpss (s1.a, res_ref); + + if (check_fp_union128 (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-1.c new file mode 100644 index 00000000000..4b252a41619 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vgetmantsd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vgetmantsd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[\\n\]" 1 } } */ + +#include + +volatile __m128d x, y, z; + +void extern +avx512f_test (void) +{ + x = _mm_getmant_sd (y, z, _MM_MANT_NORM_p75_1p5, _MM_MANT_SIGN_src); + x = _mm_getmant_round_sd (y, z, _MM_MANT_NORM_p75_1p5, _MM_MANT_SIGN_src, + _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-2.c new file mode 100644 index 00000000000..50d98a45df4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantsd-2.c @@ -0,0 +1,94 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" +#include "avx512f-helper.h" +#include + +union fp_int_t +{ + long long int int_val; + double fp_val; +}; + +double +get_norm_mant (double source, int signctrl, int interv) +{ + long long src, sign, exp, fraction; + + union fp_int_t bin_conv; + + bin_conv.fp_val = source; + src = bin_conv.int_val; + sign = (signctrl & 0x1) ? 0 : (src >> 63); + exp = (src & 0x7ff0000000000000) >> 52; + fraction = (src & 0xfffffffffffff); + + if (isnan (source)) + return signbit (source) ? -NAN : NAN; + if (source == 0.0 || source == -0.0 || isinf (source)) + return sign ? -1.0 : 1.0; + if (signbit (source) && (signctrl & 0x2)) + return -NAN; + if (!isnormal (source)) + { + src = (src & 0xfff7ffffffffffff); + exp = 0x3ff; + while (!(src & 0x8000000000000)) + { + src += fraction & 0x8000000000000; + fraction = fraction << 1; + exp--; + } + } + + switch (interv) + { + case 0: + exp = 0x3ff; + break; + case 1: + exp = ((exp - 0x3ff) & 0x1) ? 0x3fe : 0x3ff; + break; + case 2: + exp = 0x3fe; + break; + case 3: + exp = (fraction & 0x8000000000000) ? 0x3fe : 0x3ff; + break; + default: + abort (); + } + + bin_conv.int_val = (sign << 63) | (exp << 52) | fraction; + return bin_conv.fp_val; +} + +static void +compute_vgetmantsd (double *r, double *s1, double *s2, int interv, + int signctrl) +{ + r[0] = get_norm_mant (s2[0], signctrl, interv); + r[1] = s1[1]; +} + +static void +avx512f_test (void) +{ + int i, sign; + union128d res1, src1, src2; + double res_ref[2]; + int interv = _MM_MANT_NORM_p5_1; + int signctrl = _MM_MANT_SIGN_src; + + src1.x = _mm_set_pd (-3.0, 111.111); + src2.x = _mm_set_pd (222.222, -2.0); + + res1.x = _mm_getmant_sd (src1.x, src2.x, interv, signctrl); + + compute_vgetmantsd (res_ref, src1.a, src2.a, interv, signctrl); + + if (check_union128d (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-1.c new file mode 100644 index 00000000000..30c837b6fab --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-final { scan-assembler-times "vgetmantss\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[\\n\]" 2 } } */ +/* { dg-final { scan-assembler-times "vgetmantss\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[\\n\]" 1 } } */ + +#include + +volatile __m128 x, y, z; + +void extern +avx512f_test (void) +{ + x = _mm_getmant_ss (y, z, _MM_MANT_NORM_p75_1p5, _MM_MANT_SIGN_src); + x = _mm_getmant_round_ss (y, z, _MM_MANT_NORM_p75_1p5, _MM_MANT_SIGN_src, + _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-2.c new file mode 100644 index 00000000000..291c0df77e7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetmantss-2.c @@ -0,0 +1,99 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" +#include "avx512f-helper.h" +#include + +union fp_int_t +{ + int int_val; + float fp_val; +}; + +float +get_norm_mant (float source, int signctrl, int interv) +{ + int src, sign, exp, fraction; + union fp_int_t bin_conv; + + bin_conv.fp_val = source; + src = bin_conv.int_val; + sign = (signctrl & 0x1) ? 0 : (src >> 31); + exp = (src & 0x7f800000) >> 23; + fraction = (src & 0x7fffff); + + if (isnan (source)) + return signbit (source) ? -NAN : NAN; + if (source == 0.0 || source == -0.0 || isinf (source)) + return sign ? -1.0 : 1.0; + if (signbit (source) && (signctrl & 0x2)) + return -NAN; + if (!isnormal (source)) + { + src = (src & 0xffbfffff); + exp = 0x7f; + while (!(src & 0x400000)) + { + src += fraction & 0x400000; + fraction = fraction << 1; + exp--; + } + } + + switch (interv) + { + case 0: + exp = 0x7f; + break; + case 1: + exp = ((exp - 0x7f) & 0x1) ? 0x7e : 0x7f; + break; + case 2: + exp = 0x7e; + break; + case 3: + exp = (fraction & 0x400000) ? 0x7e : 0x7f; + break; + default: + abort (); + } + + bin_conv.int_val = (sign << 31) | (exp << 23) | fraction; + + return bin_conv.fp_val; + +} + +static void +compute_vgetmantss (float *r, float *s1, float *s2, int interv, + int signctrl) +{ + int i; + r[0] = get_norm_mant (s2[0], signctrl, interv); + for (i = 1; i < 4; i++) + { + r[i] = s1[i]; + } +} + +static void +avx512f_test (void) +{ + int i, sign; + union128 res1, src1, src2; + float res_ref[4]; + int interv = _MM_MANT_NORM_p5_1; + int signctrl = _MM_MANT_SIGN_src; + + src1.x = _mm_set_ps (-24.043, 68.346, -43.35, 546.46); + src2.x = _mm_set_ps (222.222, 333.333, 444.444, -2.0); + + res1.x = _mm_getmant_ss (src1.x, src2.x, interv, signctrl); + + compute_vgetmantss (res_ref, src1.a, src2.a, interv, signctrl); + + if (check_union128 (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-1.c new file mode 100644 index 00000000000..8c247044234 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmaxsd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128d x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_max_round_sd (x1, x2, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmaxss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmaxss-1.c new file mode 100644 index 00000000000..027445db32d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmaxss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmaxss\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_max_round_ss (x1, x2, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vminsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vminsd-1.c new file mode 100644 index 00000000000..8f8488f8b11 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vminsd-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vminsd\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128d x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_min_round_sd (x1, x2, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vminss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vminss-1.c new file mode 100644 index 00000000000..0774b75771d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vminss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vminss\[ \\t\]+\[^\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128 x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_min_round_ss (x1, x2, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmulsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmulsd-1.c new file mode 100644 index 00000000000..c85832aaa41 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmulsd-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmulsd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_mul_round_sd (x1, x2, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vmulss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vmulss-1.c new file mode 100644 index 00000000000..cb4bf0a2d2e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vmulss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vmulss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_mul_round_ss (x1, x2, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-1.c new file mode 100644 index 00000000000..c0c8d038cc3 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrcp14sd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128d x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_rcp14_sd (x1, x2); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-2.c new file mode 100644 index 00000000000..9ff3541d85c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-2.c @@ -0,0 +1,31 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" +#include "avx512f-helper.h" + +static void +compute_vrcp14sd (double *s1, double *s2, double *r) +{ + r[0] = 1.0 / s2[0]; + r[1] = s1[1]; +} + +static void +avx512f_test (void) +{ + union128d s1, s2, res1, res2, res3; + double res_ref[2]; + + s1.x = _mm_set_pd (-3.0, 111.111); + s2.x = _mm_set_pd (222.222, -2.0); + res2.a[0] = DEFAULT_VALUE; + + res1.x = _mm_rcp14_sd (s1.x, s2.x); + + compute_vrcp14sd (s1.a, s2.a, res_ref); + + if (check_union128d (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-1.c new file mode 100644 index 00000000000..580dfd6a52d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrcp14ss\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128 x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_rcp14_ss (x1, x2); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-2.c new file mode 100644 index 00000000000..fe8989aeb50 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-2.c @@ -0,0 +1,33 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include "avx512f-check.h" +#include "avx512f-helper.h" + +static void +compute_vrcp14ss (float *s1, float *s2, float *r) +{ + r[0] = 1.0 / s2[0]; + r[1] = s1[1]; + r[2] = s1[2]; + r[3] = s1[3]; +} + +static void +avx512f_test (void) +{ + union128 s1, s2, res1, res2, res3; + float res_ref[4]; + + s1.x = _mm_set_ps (-24.043, 68.346, -43.35, 546.46); + s2.x = _mm_set_ps (222.222, 333.333, 444.444, -2.0); + res2.a[0] = DEFAULT_VALUE; + + res1.x = _mm_rcp14_ss (s1.x, s2.x); + + compute_vrcp14ss (s1.a, s2.a, res_ref); + + if (check_union128 (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-1.c new file mode 100644 index 00000000000..2f370a92722 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrndscalesd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vrndscalesd\[ \\t\]+\\S*,\[ \\t\]+\{sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128d x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_roundscale_sd (x1, x2, 0x42); + x1 = _mm_roundscale_round_sd (x1, x2, 0x42, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-2.c new file mode 100644 index 00000000000..5b4e8423cad --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-2.c @@ -0,0 +1,50 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#define SIZE (128 / 64) + +#include +#include "avx512f-check.h" +#include "avx512f-helper.h" + +static void +compute_rndscalesd (double *s1, double *s2, double *r, int imm) +{ + int rc, m; + rc = imm & 0xf; + m = imm >> 4; + + switch (rc) + { + case _MM_FROUND_FLOOR: + r[0] = floor (s2[0] * pow (2, m)) / pow (2, m); + break; + case _MM_FROUND_CEIL: + r[0] = ceil (s2[0] * pow (2, m)) / pow (2, m); + break; + default: + abort (); + break; + } + + r[1] = s1[1]; +} + +static void +avx512f_test (void) +{ + int imm = _MM_FROUND_FLOOR | (7 << 4); + union128d s1, s2, res1; + double res_ref[SIZE]; + + s1.x = _mm_set_pd (4.05084, -1.23162); + s2.x = _mm_set_pd (-3.53222, 7.33527); + + res1.x = _mm_roundscale_sd (s1.x, s2.x, imm); + + compute_rndscalesd (s1.a, s2.a, res_ref, imm); + + if (check_union128d (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrndscaless-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrndscaless-1.c new file mode 100644 index 00000000000..c9f5a753d28 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrndscaless-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrndscaless\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vrndscaless\[ \\t\]+\\S*,\[ \\t\]+\{sae\}\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128 x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_roundscale_ss (x1, x2, 0x42); + x1 = _mm_roundscale_round_ss (x1, x2, 0x42, _MM_FROUND_NO_EXC); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrndscaless-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrndscaless-2.c new file mode 100644 index 00000000000..7acfe4c2a46 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrndscaless-2.c @@ -0,0 +1,52 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#define SIZE (128 / 32) + +#include +#include "avx512f-check.h" +#include "avx512f-helper.h" + +static void +compute_rndscaless (float *s1, float *s2, float *r, int imm) +{ + int rc, m; + rc = imm & 0xf; + m = imm >> 4; + + switch (rc) + { + case _MM_FROUND_FLOOR: + r[0] = floorf (s2[0] * pow (2, m)) / pow (2, m); + break; + case _MM_FROUND_CEIL: + r[0] = ceilf (s2[0] * pow (2, m)) / pow (2, m); + break; + default: + abort (); + break; + } + + r[1] = s1[1]; + r[2] = s1[2]; + r[3] = s1[3]; +} + +static void +avx512f_test (void) +{ + int imm = _MM_FROUND_FLOOR | (7 << 4); + union128 s1, s2, res1; + float res_ref[SIZE]; + + s1.x = _mm_set_ps (4.05084, -1.23162, 2.00231, -6.22103); + s2.x = _mm_set_ps (-4.19319, -3.53222, 7.33527, 5.57655); + + res1.x = _mm_roundscale_ss (s1.x, s2.x, imm); + + compute_rndscaless (s1.a, s2.a, res_ref, imm); + + if (check_union128 (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-1.c new file mode 100644 index 00000000000..bd8b7a84f98 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrsqrt14sd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128d x1, x2; +volatile __mmask8 m; + +void extern +avx512f_test (void) +{ + x1 = _mm_rsqrt14_sd (x1, x2); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-2.c new file mode 100644 index 00000000000..ef4e407f7d1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14sd-2.c @@ -0,0 +1,32 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include +#include "avx512f-check.h" +#include "avx512f-helper.h" + +static void +compute_vrsqrt14sd (double *s1, double *s2, double *r) +{ + r[0] = 1.0 / sqrt (s2[0]); + r[1] = s1[1]; +} + +static void +avx512f_test (void) +{ + union128d s1, s2, res1, res2, res3; + double res_ref[2]; + + s1.x = _mm_set_pd (-3.0, 111.111); + s2.x = _mm_set_pd (222.222, 4.0); + res2.a[0] = DEFAULT_VALUE; + + res1.x = _mm_rsqrt14_sd (s1.x, s2.x); + + compute_vrsqrt14sd (s1.a, s2.a, res_ref); + + if (check_fp_union128d (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-1.c new file mode 100644 index 00000000000..d4d4eeadc13 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vrsqrt14ss\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 1 } } */ + +#include + +volatile __m128 x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_rsqrt14_ss (x1, x2); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-2.c new file mode 100644 index 00000000000..b01420f7af0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vrsqrt14ss-2.c @@ -0,0 +1,34 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include +#include "avx512f-check.h" +#include "avx512f-helper.h" + +static void +compute_vrsqrt14ss (float *s1, float *s2, float *r) +{ + r[0] = 1.0 / sqrt (s2[0]); + r[1] = s1[1]; + r[2] = s1[2]; + r[3] = s1[3]; +} + +static void +avx512f_test (void) +{ + union128 s1, s2, res1, res2, res3; + float res_ref[4]; + + s1.x = _mm_set_ps (-24.43, 68.346, -43.35, 546.46); + s2.x = _mm_set_ps (222.222, 333.333, 444.444, 4.0); + res2.a[0] = DEFAULT_VALUE; + + res1.x = _mm_rsqrt14_ss (s1.x, s2.x); + + compute_vrsqrt14ss (s1.a, s2.a, res_ref); + + if (check_fp_union128 (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-1.c new file mode 100644 index 00000000000..bbf238e7e52 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vscalefsd\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vscalefsd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x; + +void extern +avx512f_test (void) +{ + x = _mm_scalef_sd (x, x); + x = _mm_scalef_round_sd (x, x, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-2.c new file mode 100644 index 00000000000..131fc67c032 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vscalefsd-2.c @@ -0,0 +1,37 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include +#include "avx512f-check.h" +#include "avx512f-helper.h" + +#define SIZE (128 / 64) + +static void +compute_scalefsd (double *s1, double *s2, double *r) +{ + r[0] = s1[0] * pow (2, floor (s2[0])); + r[1] = s1[1]; +} + +void static +avx512f_test (void) +{ + union128d res1, s1, s2; + double res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 11.5 * (i + 1); + s2.a[i] = 10.5 * (i + 1); + } + + res1.x = _mm_scalef_sd (s1.x, s2.x); + + compute_scalefsd (s1.a, s2.a, res_ref); + + if (check_union128d (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vscalefss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vscalefss-1.c new file mode 100644 index 00000000000..d36b2ffe388 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vscalefss-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vscalefss\[ \\t\]+\[^\n\]*%xmm\[0-9\]\[^\{\]" 2 } } */ +/* { dg-final { scan-assembler-times "vscalefss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x; + +void extern +avx512f_test (void) +{ + x = _mm_scalef_ss (x, x); + x = _mm_scalef_round_ss (x, x, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vscalefss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vscalefss-2.c new file mode 100644 index 00000000000..3e8f6d19345 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vscalefss-2.c @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-require-effective-target avx512f } */ + +#include +#include "avx512f-check.h" +#include "avx512f-helper.h" + +#define SIZE (128 / 32) + +static void +compute_scalefss (float *s1, float *s2, float *r) +{ + r[0] = s1[0] * (float) pow (2, floor (s2[0])); + r[1] = s1[1]; + r[2] = s1[2]; + r[3] = s1[3]; +} + +static void +avx512f_test (void) +{ + union128 res1, s1, s2; + float res_ref[SIZE]; + int i; + + for (i = 0; i < SIZE; i++) + { + s1.a[i] = 11.5 * (i + 1); + s2.a[i] = 10.5 * (i + 1); + } + + res1.x = _mm_scalef_ss (s1.x, s2.x); + + compute_scalefss (s1.a, s2.a, res_ref); + + if (check_union128 (res1, res_ref)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-1.c new file mode 100644 index 00000000000..5814e3ce7f0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtsd-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vsqrtsd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_sqrt_round_sd (x1, x2, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-1.c new file mode 100644 index 00000000000..81e8a0ecde7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsqrtss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vsqrtss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_sqrt_round_ss (x1, x2, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsubsd-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vsubsd-1.c new file mode 100644 index 00000000000..511ceb40f0e --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsubsd-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vsubsd\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128d x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_sub_round_sd (x1, x2, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vsubss-1.c b/gcc/testsuite/gcc.target/i386/avx512f-vsubss-1.c new file mode 100644 index 00000000000..618662fcc93 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-vsubss-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -O2" } */ +/* { dg-final { scan-assembler-times "vsubss\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]" 1 } } */ + +#include + +volatile __m128 x1, x2; + +void extern +avx512f_test (void) +{ + x1 = _mm_sub_round_ss (x1, x2, _MM_FROUND_TO_NEAREST_INT); +} diff --git a/gcc/testsuite/gcc.target/i386/sse-14.c b/gcc/testsuite/gcc.target/i386/sse-14.c index e8cb5337ef6..c5d8876b471 100644 --- a/gcc/testsuite/gcc.target/i386/sse-14.c +++ b/gcc/testsuite/gcc.target/i386/sse-14.c @@ -199,6 +199,7 @@ test_1x (_mm512_getmant_pd, __m512d, __m512d, 1, 1) test_1x (_mm512_getmant_ps, __m512, __m512, 1, 1) test_1x (_mm512_roundscale_round_pd, __m512d, __m512d, 1, 5) test_1x (_mm512_roundscale_round_ps, __m512, __m512, 1, 5) +test_1x (_mm_cvt_roundi32_ss, __m128, __m128, 1, 1) test_2 (_mm512_add_round_pd, __m512d, __m512d, __m512d, 1) test_2 (_mm512_add_round_ps, __m512, __m512, __m512, 1) test_2 (_mm512_alignr_epi32, __m512i, __m512i, __m512i, 1) @@ -278,16 +279,45 @@ test_2 (_mm512_shuffle_pd, __m512d, __m512d, __m512d, 1) test_2 (_mm512_shuffle_ps, __m512, __m512, __m512, 1) test_2 (_mm512_sub_round_pd, __m512d, __m512d, __m512d, 1) test_2 (_mm512_sub_round_ps, __m512, __m512, __m512, 1) +test_2 (_mm_add_round_sd, __m128d, __m128d, __m128d, 1) +test_2 (_mm_add_round_ss, __m128, __m128, __m128, 1) test_2 (_mm_cmp_sd_mask, __mmask8, __m128d, __m128d, 1) test_2 (_mm_cmp_ss_mask, __mmask8, __m128, __m128, 1) #ifdef __x86_64__ +test_2 (_mm_cvt_roundi64_sd, __m128d, __m128d, long long, 1) +test_2 (_mm_cvt_roundi64_ss, __m128, __m128, long long, 1) #endif +test_2 (_mm_cvt_roundsd_ss, __m128, __m128, __m128d, 1) +test_2 (_mm_cvt_roundss_sd, __m128d, __m128d, __m128, 5) +test_2 (_mm_cvt_roundu32_ss, __m128, __m128, unsigned, 1) #ifdef __x86_64__ +test_2 (_mm_cvt_roundu64_sd, __m128d, __m128d, unsigned long long, 1) +test_2 (_mm_cvt_roundu64_ss, __m128, __m128, unsigned long long, 1) #endif +test_2 (_mm_div_round_sd, __m128d, __m128d, __m128d, 1) +test_2 (_mm_div_round_ss, __m128, __m128, __m128, 1) +test_2 (_mm_getexp_round_sd, __m128d, __m128d, __m128d, 5) +test_2 (_mm_getexp_round_ss, __m128, __m128, __m128, 5) +test_2y (_mm_getmant_round_sd, __m128d, __m128d, __m128d, 1, 1, 5) +test_2y (_mm_getmant_round_ss, __m128, __m128, __m128, 1, 1, 5) +test_2 (_mm_mul_round_sd, __m128d, __m128d, __m128d, 1) +test_2 (_mm_mul_round_ss, __m128, __m128, __m128, 1) +test_2 (_mm_scalef_round_sd, __m128d, __m128d, __m128d, 1) +test_2 (_mm_scalef_round_ss, __m128, __m128, __m128, 1) +test_2 (_mm_sqrt_round_sd, __m128d, __m128d, __m128d, 1) +test_2 (_mm_sqrt_round_ss, __m128, __m128, __m128, 1) +test_2 (_mm_sub_round_sd, __m128d, __m128d, __m128d, 1) +test_2 (_mm_sub_round_ss, __m128, __m128, __m128, 1) test_2x (_mm512_cmp_round_pd_mask, __mmask8, __m512d, __m512d, 1, 5) test_2x (_mm512_cmp_round_ps_mask, __mmask16, __m512, __m512, 1, 5) test_2x (_mm512_maskz_roundscale_round_pd, __m512d, __mmask8, __m512d, 1, 5) test_2x (_mm512_maskz_roundscale_round_ps, __m512, __mmask16, __m512, 1, 5) +test_2x (_mm_cmp_round_sd_mask, __mmask8, __m128d, __m128d, 1, 5) +test_2x (_mm_cmp_round_ss_mask, __mmask8, __m128, __m128, 1, 5) +test_2x (_mm_comi_round_sd, int, __m128d, __m128d, 1, 5) +test_2x (_mm_comi_round_ss, int, __m128, __m128, 1, 5) +test_2x (_mm_roundscale_round_sd, __m128d, __m128d, __m128d, 1, 5) +test_2x (_mm_roundscale_round_ss, __m128, __m128, __m128, 1, 5) test_3 (_mm512_fmadd_round_pd, __m512d, __m512d, __m512d, __m512d, 1) test_3 (_mm512_fmadd_round_ps, __m512, __m512, __m512, __m512, 1) test_3 (_mm512_fmaddsub_round_pd, __m512d, __m512d, __m512d, __m512d, 1) @@ -373,6 +403,14 @@ test_3 (_mm512_maskz_sub_round_pd, __m512d, __mmask8, __m512d, __m512d, 1) test_3 (_mm512_maskz_sub_round_ps, __m512, __mmask16, __m512, __m512, 1) test_3 (_mm512_ternarylogic_epi32, __m512i, __m512i, __m512i, __m512i, 1) test_3 (_mm512_ternarylogic_epi64, __m512i, __m512i, __m512i, __m512i, 1) +test_3 (_mm_fmadd_round_sd, __m128d, __m128d, __m128d, __m128d, 1) +test_3 (_mm_fmadd_round_ss, __m128, __m128, __m128, __m128, 1) +test_3 (_mm_fmsub_round_sd, __m128d, __m128d, __m128d, __m128d, 1) +test_3 (_mm_fmsub_round_ss, __m128, __m128, __m128, __m128, 1) +test_3 (_mm_fnmadd_round_sd, __m128d, __m128d, __m128d, __m128d, 1) +test_3 (_mm_fnmadd_round_ss, __m128, __m128, __m128, __m128, 1) +test_3 (_mm_fnmsub_round_sd, __m128d, __m128d, __m128d, __m128d, 1) +test_3 (_mm_fnmsub_round_ss, __m128, __m128, __m128, __m128, 1) test_3 (_mm_mask_cmp_sd_mask, __mmask8, __mmask8, __m128d, __m128d, 1) test_3 (_mm_mask_cmp_ss_mask, __mmask8, __mmask8, __m128, __m128, 1) test_3v (_mm512_i32scatter_epi32, void *, __m512i, __m512i, 1) @@ -385,6 +423,10 @@ test_3v (_mm512_i64scatter_pd, void *, __m512i, __m512d, 1) test_3v (_mm512_i64scatter_ps, void *, __m512i, __m256, 1) test_3x (_mm512_mask_roundscale_round_pd, __m512d, __m512d, __mmask8, __m512d, 1, 5) test_3x (_mm512_mask_roundscale_round_ps, __m512, __m512, __mmask16, __m512, 1, 5) +test_3x (_mm_fixupimm_round_sd, __m128d, __m128d, __m128d, __m128i, 1, 5) +test_3x (_mm_fixupimm_round_ss, __m128, __m128, __m128, __m128i, 1, 5) +test_3x (_mm_mask_cmp_round_sd_mask, __mmask8, __mmask8, __m128d, __m128d, 1, 5) +test_3x (_mm_mask_cmp_round_ss_mask, __mmask8, __mmask8, __m128, __m128, 1, 5) test_4 (_mm512_mask3_fmadd_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) test_4 (_mm512_mask3_fmadd_round_ps, __m512, __m512, __m512, __m512, __mmask16, 1) test_4 (_mm512_mask3_fmaddsub_round_pd, __m512d, __m512d, __m512d, __m512d, __mmask8, 1) @@ -471,6 +513,10 @@ test_4x (_mm512_mask_fixupimm_round_pd, __m512d, __m512d, __mmask8, __m512d, __m test_4x (_mm512_mask_fixupimm_round_ps, __m512, __m512, __mmask16, __m512, __m512i, 1, 5) test_4x (_mm512_maskz_fixupimm_round_pd, __m512d, __mmask8, __m512d, __m512d, __m512i, 1, 5) test_4x (_mm512_maskz_fixupimm_round_ps, __m512, __mmask16, __m512, __m512, __m512i, 1, 5) +test_4x (_mm_mask_fixupimm_round_sd, __m128d, __m128d, __mmask8, __m128d, __m128i, 1, 5) +test_4x (_mm_mask_fixupimm_round_ss, __m128, __m128, __mmask8, __m128, __m128i, 1, 5) +test_4x (_mm_maskz_fixupimm_round_sd, __m128d, __mmask8, __m128d, __m128d, __m128i, 1, 5) +test_4x (_mm_maskz_fixupimm_round_ss, __m128, __mmask8, __m128, __m128, __m128i, 1, 5) /* avx512pfintrin.h */ test_3vx (_mm512_mask_prefetch_i32gather_ps, __m512i, __mmask16, void const *, 1, 1) diff --git a/gcc/testsuite/gcc.target/i386/sse-23.c b/gcc/testsuite/gcc.target/i386/sse-23.c index 012353826cb..a6a7b392319 100644 --- a/gcc/testsuite/gcc.target/i386/sse-23.c +++ b/gcc/testsuite/gcc.target/i386/sse-23.c @@ -186,6 +186,8 @@ /* avx512fintrin.h */ #define __builtin_ia32_addpd512_mask(A, B, C, D, E) __builtin_ia32_addpd512_mask(A, B, C, D, 1) #define __builtin_ia32_addps512_mask(A, B, C, D, E) __builtin_ia32_addps512_mask(A, B, C, D, 1) +#define __builtin_ia32_addsd_round(A, B, C) __builtin_ia32_addsd_round(A, B, 1) +#define __builtin_ia32_addss_round(A, B, C) __builtin_ia32_addss_round(A, B, 1) #define __builtin_ia32_alignd512_mask(A, B, F, D, E) __builtin_ia32_alignd512_mask(A, B, 1, D, E) #define __builtin_ia32_alignq512_mask(A, B, F, D, E) __builtin_ia32_alignq512_mask(A, B, 1, D, E) #define __builtin_ia32_cmpd512_mask(A, B, E, D) __builtin_ia32_cmpd512_mask(A, B, 1, D) @@ -201,6 +203,8 @@ #define __builtin_ia32_cvtps2dq512_mask(A, B, C, D) __builtin_ia32_cvtps2dq512_mask(A, B, C, 1) #define __builtin_ia32_cvtps2pd512_mask(A, B, C, D) __builtin_ia32_cvtps2pd512_mask(A, B, C, 5) #define __builtin_ia32_cvtps2udq512_mask(A, B, C, D) __builtin_ia32_cvtps2udq512_mask(A, B, C, 1) +#define __builtin_ia32_cvtsd2ss_round(A, B, C) __builtin_ia32_cvtsd2ss_round(A, B, 1) +#define __builtin_ia32_cvtss2sd_round(A, B, C) __builtin_ia32_cvtss2sd_round(A, B, 4) #define __builtin_ia32_cvtsi2sd64(A, B, C) __builtin_ia32_cvtsi2sd64(A, B, 1) #define __builtin_ia32_cvtsi2ss32(A, B, C) __builtin_ia32_cvtsi2ss32(A, B, 1) #define __builtin_ia32_cvtsi2ss64(A, B, C) __builtin_ia32_cvtsi2ss64(A, B, 1) @@ -214,6 +218,8 @@ #define __builtin_ia32_cvtusi2ss64(A, B, C) __builtin_ia32_cvtusi2ss64(A, B, 1) #define __builtin_ia32_divpd512_mask(A, B, C, D, E) __builtin_ia32_divpd512_mask(A, B, C, D, 1) #define __builtin_ia32_divps512_mask(A, B, C, D, E) __builtin_ia32_divps512_mask(A, B, C, D, 1) +#define __builtin_ia32_divsd_round(A, B, C) __builtin_ia32_divsd_round(A, B, 1) +#define __builtin_ia32_divss_round(A, B, C) __builtin_ia32_divss_round(A, B, 1) #define __builtin_ia32_extractf32x4_mask(A, E, C, D) __builtin_ia32_extractf32x4_mask(A, 1, C, D) #define __builtin_ia32_extractf64x4_mask(A, E, C, D) __builtin_ia32_extractf64x4_mask(A, 1, C, D) #define __builtin_ia32_extracti32x4_mask(A, E, C, D) __builtin_ia32_extracti32x4_mask(A, 1, C, D) @@ -236,18 +242,28 @@ #define __builtin_ia32_gathersiv8di(A, B, C, D, F) __builtin_ia32_gathersiv8di(A, B, C, D, 1) #define __builtin_ia32_getexppd512_mask(A, B, C, D) __builtin_ia32_getexppd512_mask(A, B, C, 5) #define __builtin_ia32_getexpps512_mask(A, B, C, D) __builtin_ia32_getexpps512_mask(A, B, C, 5) +#define __builtin_ia32_getexpsd128_round(A, B, C) __builtin_ia32_getexpsd128_round(A, B, 4) +#define __builtin_ia32_getexpss128_round(A, B, C) __builtin_ia32_getexpss128_round(A, B, 4) #define __builtin_ia32_getmantpd512_mask(A, F, C, D, E) __builtin_ia32_getmantpd512_mask(A, 1, C, D, 5) #define __builtin_ia32_getmantps512_mask(A, F, C, D, E) __builtin_ia32_getmantps512_mask(A, 1, C, D, 5) +#define __builtin_ia32_getmantsd_round(A, B, C, D) __builtin_ia32_getmantsd_round(A, B, 1, 4) +#define __builtin_ia32_getmantss_round(A, B, C, D) __builtin_ia32_getmantss_round(A, B, 1, 4) #define __builtin_ia32_insertf32x4_mask(A, B, F, D, E) __builtin_ia32_insertf32x4_mask(A, B, 1, D, E) #define __builtin_ia32_insertf64x4_mask(A, B, F, D, E) __builtin_ia32_insertf64x4_mask(A, B, 1, D, E) #define __builtin_ia32_inserti32x4_mask(A, B, F, D, E) __builtin_ia32_inserti32x4_mask(A, B, 1, D, E) #define __builtin_ia32_inserti64x4_mask(A, B, F, D, E) __builtin_ia32_inserti64x4_mask(A, B, 1, D, E) #define __builtin_ia32_maxpd512_mask(A, B, C, D, E) __builtin_ia32_maxpd512_mask(A, B, C, D, 5) #define __builtin_ia32_maxps512_mask(A, B, C, D, E) __builtin_ia32_maxps512_mask(A, B, C, D, 5) +#define __builtin_ia32_maxsd_round(A, B, C) __builtin_ia32_maxsd_round(A, B, 4) +#define __builtin_ia32_maxss_round(A, B, C) __builtin_ia32_maxss_round(A, B, 4) #define __builtin_ia32_minpd512_mask(A, B, C, D, E) __builtin_ia32_minpd512_mask(A, B, C, D, 5) #define __builtin_ia32_minps512_mask(A, B, C, D, E) __builtin_ia32_minps512_mask(A, B, C, D, 5) +#define __builtin_ia32_minsd_round(A, B, C) __builtin_ia32_minsd_round(A, B, 4) +#define __builtin_ia32_minss_round(A, B, C) __builtin_ia32_minss_round(A, B, 4) #define __builtin_ia32_mulpd512_mask(A, B, C, D, E) __builtin_ia32_mulpd512_mask(A, B, C, D, 1) #define __builtin_ia32_mulps512_mask(A, B, C, D, E) __builtin_ia32_mulps512_mask(A, B, C, D, 1) +#define __builtin_ia32_mulsd_round(A, B, C) __builtin_ia32_mulsd_round(A, B, 1) +#define __builtin_ia32_mulss_round(A, B, C) __builtin_ia32_mulss_round(A, B, 1) #define __builtin_ia32_permdf512_mask(A, E, C, D) __builtin_ia32_permdf512_mask(A, 1, C, D) #define __builtin_ia32_permdi512_mask(A, E, C, D) __builtin_ia32_permdi512_mask(A, 1, C, D) #define __builtin_ia32_prold512_mask(A, E, C, D) __builtin_ia32_prold512_mask(A, 1, C, D) @@ -267,8 +283,12 @@ #define __builtin_ia32_pternlogq512_maskz(A, B, C, F, E) __builtin_ia32_pternlogq512_maskz(A, B, C, 1, E) #define __builtin_ia32_rndscalepd_mask(A, F, C, D, E) __builtin_ia32_rndscalepd_mask(A, 1, C, D, 5) #define __builtin_ia32_rndscaleps_mask(A, F, C, D, E) __builtin_ia32_rndscaleps_mask(A, 1, C, D, 5) +#define __builtin_ia32_rndscalesd_round(A, B, C, D) __builtin_ia32_rndscalesd_round(A, B, 1, 4) +#define __builtin_ia32_rndscaless_round(A, B, C, D) __builtin_ia32_rndscaless_round(A, B, 1, 4) #define __builtin_ia32_scalefpd512_mask(A, B, C, D, E) __builtin_ia32_scalefpd512_mask(A, B, C, D, 1) #define __builtin_ia32_scalefps512_mask(A, B, C, D, E) __builtin_ia32_scalefps512_mask(A, B, C, D, 1) +#define __builtin_ia32_scalefsd_round(A, B, C) __builtin_ia32_scalefsd_round(A, B, 1) +#define __builtin_ia32_scalefss_round(A, B, C) __builtin_ia32_scalefss_round(A, B, 1) #define __builtin_ia32_scatterdiv8df(A, B, C, D, F) __builtin_ia32_scatterdiv8df(A, B, C, D, 1) #define __builtin_ia32_scatterdiv8di(A, B, C, D, F) __builtin_ia32_scatterdiv8di(A, B, C, D, 1) #define __builtin_ia32_scatterdiv16sf(A, B, C, D, F) __builtin_ia32_scatterdiv16sf(A, B, C, D, 1) @@ -285,8 +305,12 @@ #define __builtin_ia32_shufps512_mask(A, B, F, D, E) __builtin_ia32_shufps512_mask(A, B, 1, D, E) #define __builtin_ia32_sqrtpd512_mask(A, B, C, D) __builtin_ia32_sqrtpd512_mask(A, B, C, 1) #define __builtin_ia32_sqrtps512_mask(A, B, C, D) __builtin_ia32_sqrtps512_mask(A, B, C, 1) +#define __builtin_ia32_sqrtss_round(A, B, C) __builtin_ia32_sqrtss_round(A, B, 1) +#define __builtin_ia32_sqrtsd_round(A, B, C) __builtin_ia32_sqrtsd_round(A, B, 1) #define __builtin_ia32_subpd512_mask(A, B, C, D, E) __builtin_ia32_subpd512_mask(A, B, C, D, 1) #define __builtin_ia32_subps512_mask(A, B, C, D, E) __builtin_ia32_subps512_mask(A, B, C, D, 1) +#define __builtin_ia32_subsd_round(A, B, C) __builtin_ia32_subsd_round(A, B, 1) +#define __builtin_ia32_subss_round(A, B, C) __builtin_ia32_subss_round(A, B, 1) #define __builtin_ia32_ucmpd512_mask(A, B, E, D) __builtin_ia32_ucmpd512_mask(A, B, 1, D) #define __builtin_ia32_ucmpq512_mask(A, B, E, D) __builtin_ia32_ucmpq512_mask(A, B, 1, D) #define __builtin_ia32_vcomisd(A, B, C, D) __builtin_ia32_vcomisd(A, B, 1, 5) @@ -315,12 +339,8 @@ #define __builtin_ia32_vfmaddps512_mask(A, B, C, D, E) __builtin_ia32_vfmaddps512_mask(A, B, C, D, 1) #define __builtin_ia32_vfmaddps512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddps512_mask3(A, B, C, D, 1) #define __builtin_ia32_vfmaddps512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddps512_maskz(A, B, C, D, 1) -#define __builtin_ia32_vfmaddsd3_mask(A, B, C, D, E) __builtin_ia32_vfmaddsd3_mask(A, B, C, D, 1) -#define __builtin_ia32_vfmaddsd3_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsd3_mask3(A, B, C, D, 1) -#define __builtin_ia32_vfmaddsd3_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsd3_maskz(A, B, C, D, 1) -#define __builtin_ia32_vfmaddss3_mask(A, B, C, D, E) __builtin_ia32_vfmaddss3_mask(A, B, C, D, 1) -#define __builtin_ia32_vfmaddss3_mask3(A, B, C, D, E) __builtin_ia32_vfmaddss3_mask3(A, B, C, D, 1) -#define __builtin_ia32_vfmaddss3_maskz(A, B, C, D, E) __builtin_ia32_vfmaddss3_maskz(A, B, C, D, 1) +#define __builtin_ia32_vfmaddsd3_round(A, B, C, D) __builtin_ia32_vfmaddsd3_round(A, B, C, 1) +#define __builtin_ia32_vfmaddss3_round(A, B, C, D) __builtin_ia32_vfmaddss3_round(A, B, C, 1) #define __builtin_ia32_vfmaddsubpd512_mask(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_mask(A, B, C, D, 1) #define __builtin_ia32_vfmaddsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_mask3(A, B, C, D, 1) #define __builtin_ia32_vfmaddsubpd512_maskz(A, B, C, D, E) __builtin_ia32_vfmaddsubpd512_maskz(A, B, C, D, 1) @@ -331,8 +351,6 @@ #define __builtin_ia32_vfmsubaddps512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubaddps512_mask3(A, B, C, D, 1) #define __builtin_ia32_vfmsubpd512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubpd512_mask3(A, B, C, D, 1) #define __builtin_ia32_vfmsubps512_mask3(A, B, C, D, E) __builtin_ia32_vfmsubps512_mask3(A, B, C, D, 1) -#define __builtin_ia32_vfmsubsd3_mask3(A, B, C, D, E) __builtin_ia32_vfmsubsd3_mask3(A, B, C, D, 1) -#define __builtin_ia32_vfmsubss3_mask3(A, B, C, D, E) __builtin_ia32_vfmsubss3_mask3(A, B, C, D, 1) #define __builtin_ia32_vfnmaddpd512_mask(A, B, C, D, E) __builtin_ia32_vfnmaddpd512_mask(A, B, C, D, 1) #define __builtin_ia32_vfnmaddps512_mask(A, B, C, D, E) __builtin_ia32_vfnmaddps512_mask(A, B, C, D, 1) #define __builtin_ia32_vfnmsubpd512_mask(A, B, C, D, E) __builtin_ia32_vfnmsubpd512_mask(A, B, C, D, 1) diff --git a/gcc/testsuite/gcc.target/i386/testimm-10.c b/gcc/testsuite/gcc.target/i386/testimm-10.c index 0699787be8f..d744e1c08ae 100644 --- a/gcc/testsuite/gcc.target/i386/testimm-10.c +++ b/gcc/testsuite/gcc.target/i386/testimm-10.c @@ -77,7 +77,13 @@ test8bit (void) m512 = _mm512_mask_fixupimm_ps (m512, mmask16, m512, m512i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ m512 = _mm512_maskz_fixupimm_ps (mmask16, m512, m512, m512i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m128d = _mm_fixupimm_sd (m128d, m128d, m128i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m128d = _mm_mask_fixupimm_sd (m128d, mmask8, m128d, m128i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m128d = _mm_maskz_fixupimm_sd (mmask8, m128d, m128d, m128i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m128 = _mm_fixupimm_ss (m128, m128, m128i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m128 = _mm_mask_fixupimm_ss (m128, mmask8, m128, m128i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m128 = _mm_maskz_fixupimm_ss (mmask8, m128, m128, m128i, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ m512i = _mm512_rol_epi32 (m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ m512i = _mm512_mask_rol_epi32 (m512i, mmask16, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ @@ -107,6 +113,8 @@ test8bit (void) m512 = _mm512_mask_roundscale_ps (m512, mmask16, m512, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ m512 = _mm512_maskz_roundscale_ps (mmask16, m512, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m128d = _mm_roundscale_sd (m128d, m128d, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ + m128 = _mm_roundscale_ss (m128, m128, 256); /* { dg-error "the immediate argument must be an 8-bit immediate" } */ m512i = _mm512_alignr_epi32 (m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ m512i = _mm512_mask_alignr_epi32 (m512i, mmask16, m512i, m512i, 256); /* { dg-error "the last argument must be an 8-bit immediate" } */ @@ -179,5 +187,6 @@ test4bit (void) { m512 = _mm512_mask_getmant_ps (m512, mmask16, m512, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */ m512 = _mm512_maskz_getmant_ps (mmask16, m512, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */ - + m128d = _mm_getmant_sd (m128d, m128d, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */ + m128 = _mm_getmant_ss (m128, m128, 1, 64); /* { dg-error "the immediate argument must be a 4-bit immediate" } */ } diff --git a/gcc/testsuite/gcc.target/i386/testround-1.c b/gcc/testsuite/gcc.target/i386/testround-1.c index 2c8fe2beb10..20c039ab0ba 100644 --- a/gcc/testsuite/gcc.target/i386/testround-1.c +++ b/gcc/testsuite/gcc.target/i386/testround-1.c @@ -19,12 +19,19 @@ __mmask16 mmask16; void test_round (void) { + m128d = _mm_add_round_sd (m128d, m128d, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_add_round_ss (m128, m128, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_sub_round_sd (m128d, m128d, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_sub_round_ss (m128, m128, 7); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_sqrt_round_pd (m512d, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_mask_sqrt_round_pd (m512d, mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_maskz_sqrt_round_pd (mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_sqrt_round_ps (m512, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_sqrt_round_ps (m512, mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_sqrt_round_ps (mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_sqrt_round_sd (m128d, m128d, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_sqrt_round_ss (m128, m128, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_add_round_pd (m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_mask_add_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ @@ -51,6 +58,10 @@ test_round (void) m512 = _mm512_div_round_ps (m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_div_round_ps (m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_div_round_ps (mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_mul_round_sd (m128d, m128d, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_mul_round_ss (m128, m128, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_div_round_sd (m128d, m128d, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_div_round_ss (m128, m128, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_scalef_round_pd(m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_mask_scalef_round_pd(m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ @@ -58,6 +69,8 @@ test_round (void) m512 = _mm512_scalef_round_ps(m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_scalef_round_ps(m512, mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_scalef_round_ps(mmask16, m512, m512, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_scalef_round_sd (m128d, m128d, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_scalef_round_ss (m128, m128, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_fmadd_round_pd (m512d, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_mask_fmadd_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ @@ -141,6 +154,16 @@ test_round (void) m256 = _mm512_cvt_roundpd_ps (m512d, 7); /* { dg-error "incorrect rounding operand" } */ m256 = _mm512_mask_cvt_roundpd_ps (m256, mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ m256 = _mm512_maskz_cvt_roundpd_ps (mmask8, m512d, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_cvt_roundsd_ss (m128, m128d, 7); /* { dg-error "incorrect rounding operand" } */ + + m128d = _mm_fmadd_round_sd (m128d, m128d, m128d, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_fmadd_round_ss (m128, m128, m128, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_fmsub_round_sd (m128d, m128d, m128d, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_fmsub_round_ss (m128, m128, m128, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_fnmadd_round_sd (m128d, m128d, m128d, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_fnmadd_round_ss (m128, m128, m128, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_fnmsub_round_sd (m128d, m128d, m128d, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_fnmsub_round_ss (m128, m128, m128, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_max_round_pd (m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_mask_max_round_pd (m512d, mmask8, m512d, m512d, 7); /* { dg-error "incorrect rounding operand" } */ @@ -195,6 +218,10 @@ test_round (void) m512 = _mm512_mask_cvt_roundph_ps (m512, mmask16, m256i, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_cvt_roundph_ps (mmask16, m256i, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_cvt_roundss_sd (m128d, m128, 7); /* { dg-error "incorrect rounding operand" } */ + + m128 = _mm_getexp_round_ss (m128, m128, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_getexp_round_sd (m128d, m128d, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_getexp_round_ps (m512, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_getexp_round_ps (m512, mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_getexp_round_ps (mmask16, m512, 7); /* { dg-error "incorrect rounding operand" } */ @@ -207,6 +234,8 @@ test_round (void) m512 = _mm512_getmant_round_ps (m512, 0, 0, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_getmant_round_ps (m512, mmask16, m512, 0, 0, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_getmant_round_ps (mmask16, m512, 0, 0, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_getmant_round_sd (m128d, m128d, 0, 0, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_getmant_round_ss (m128, m128, 0, 0, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_roundscale_round_ps (m512, 4, 7); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_roundscale_round_ps (m512, mmask16, m512, 4, 7); /* { dg-error "incorrect rounding operand" } */ @@ -214,6 +243,8 @@ test_round (void) m512d = _mm512_roundscale_round_pd (m512d, 4, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_mask_roundscale_round_pd (m512d, mmask8, m512d, 4, 7); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_maskz_roundscale_round_pd (mmask8, m512d, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_roundscale_round_ss (m128, m128, 4, 7); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_roundscale_round_sd (m128d, m128d, 4, 7); /* { dg-error "incorrect rounding operand" } */ mmask8 = _mm512_cmp_round_pd_mask (m512d, m512d, 4, 7); /* { dg-error "incorrect rounding operand" } */ mmask16 = _mm512_cmp_round_ps_mask (m512, m512, 4, 7); /* { dg-error "incorrect rounding operand" } */ @@ -231,12 +262,19 @@ test_round (void) void test_round_sae (void) { + m128d = _mm_add_round_sd (m128d, m128d, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_add_round_ss (m128, m128, 5); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_sub_round_sd (m128d, m128d, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_sub_round_ss (m128, m128, 5); /* { dg-error "incorrect rounding operand" } */ + m512d = _mm512_sqrt_round_pd (m512d, 5); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_mask_sqrt_round_pd (m512d, mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_maskz_sqrt_round_pd (mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_sqrt_round_ps (m512, 5); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_sqrt_round_ps (m512, mmask16, m512, 5); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_sqrt_round_ps (mmask16, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_sqrt_round_sd (m128d, m128d, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_sqrt_round_ss (m128, m128, 5); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_add_round_pd (m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_mask_add_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ @@ -263,6 +301,10 @@ test_round_sae (void) m512 = _mm512_div_round_ps (m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_div_round_ps (m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_div_round_ps (mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_mul_round_sd (m128d, m128d, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_mul_round_ss (m128, m128, 5); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_div_round_sd (m128d, m128d, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_div_round_ss (m128, m128, 5); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_scalef_round_pd(m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_mask_scalef_round_pd(m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ @@ -270,6 +312,8 @@ test_round_sae (void) m512 = _mm512_scalef_round_ps(m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_scalef_round_ps(m512, mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_scalef_round_ps(mmask16, m512, m512, 5); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_scalef_round_sd (m128d, m128d, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_scalef_round_ss (m128, m128, 5); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_fmadd_round_pd (m512d, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_mask_fmadd_round_pd (m512d, mmask8, m512d, m512d, 5); /* { dg-error "incorrect rounding operand" } */ @@ -353,6 +397,16 @@ test_round_sae (void) m256 = _mm512_cvt_roundpd_ps (m512d, 5); /* { dg-error "incorrect rounding operand" } */ m256 = _mm512_mask_cvt_roundpd_ps (m256, mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ m256 = _mm512_maskz_cvt_roundpd_ps (mmask8, m512d, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_cvt_roundsd_ss (m128, m128d, 5); /* { dg-error "incorrect rounding operand" } */ + + m128d = _mm_fmadd_round_sd (m128d, m128d, m128d, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_fmadd_round_ss (m128, m128, m128, 5); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_fmsub_round_sd (m128d, m128d, m128d, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_fmsub_round_ss (m128, m128, m128, 5); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_fnmadd_round_sd (m128d, m128d, m128d, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_fnmadd_round_ss (m128, m128, m128, 5); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_fnmsub_round_sd (m128d, m128d, m128d, 5); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_fnmsub_round_ss (m128, m128, m128, 5); /* { dg-error "incorrect rounding operand" } */ } void @@ -411,6 +465,10 @@ test_sae_only (void) m512 = _mm512_mask_cvt_roundph_ps (m512, mmask16, m256i, 3); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_cvt_roundph_ps (mmask16, m256i, 3); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_cvt_roundss_sd (m128d, m128, 3); /* { dg-error "incorrect rounding operand" } */ + + m128 = _mm_getexp_round_ss (m128, m128, 3); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_getexp_round_sd (m128d, m128d, 3); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_getexp_round_ps (m512, 3); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_getexp_round_ps (m512, mmask16, m512, 3); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_getexp_round_ps (mmask16, m512, 3); /* { dg-error "incorrect rounding operand" } */ @@ -423,12 +481,17 @@ test_sae_only (void) m512 = _mm512_getmant_round_ps (m512, 0, 0, 3); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_getmant_round_ps (m512, mmask16, m512, 0, 0, 3); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_getmant_round_ps (mmask16, m512, 0, 0, 3); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_getmant_round_sd (m128d, m128d, 0, 0, 3); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_getmant_round_ss (m128, m128, 0, 0, 3); /* { dg-error "incorrect rounding operand" } */ + m512 = _mm512_roundscale_round_ps (m512, 4, 3); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_mask_roundscale_round_ps (m512, mmask16, m512, 4, 3); /* { dg-error "incorrect rounding operand" } */ m512 = _mm512_maskz_roundscale_round_ps (mmask16, m512, 4, 3); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_roundscale_round_pd (m512d, 4, 3); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_mask_roundscale_round_pd (m512d, mmask8, m512d, 4, 3); /* { dg-error "incorrect rounding operand" } */ m512d = _mm512_maskz_roundscale_round_pd (mmask8, m512d, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m128 = _mm_roundscale_round_ss (m128, m128, 4, 3); /* { dg-error "incorrect rounding operand" } */ + m128d = _mm_roundscale_round_sd (m128d, m128d, 4, 3); /* { dg-error "incorrect rounding operand" } */ mmask8 = _mm512_cmp_round_pd_mask (m512d, m512d, 4, 3); /* { dg-error "incorrect rounding operand" } */ mmask16 = _mm512_cmp_round_ps_mask (m512, m512, 4, 3); /* { dg-error "incorrect rounding operand" } */ -- cgit v1.2.1 From d733203b93e172b13a834048793327ecebb350ef Mon Sep 17 00:00:00 2001 From: jakub Date: Tue, 31 Dec 2013 23:48:36 +0000 Subject: PR rtl-optimization/59647 * cse.c (cse_process_notes_1): Don't substitute negative VOIDmode new_rtx into UNSIGNED_FLOAT rtxes. * g++.dg/opt/pr59647.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206267 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 40492 +--------------------------------- gcc/ChangeLog-2013 | 40495 +++++++++++++++++++++++++++++++++++ gcc/cse.c | 12 + gcc/testsuite/ChangeLog | 12402 +---------- gcc/testsuite/ChangeLog-2013 | 12406 +++++++++++ gcc/testsuite/g++.dg/opt/pr59647.C | 32 + 6 files changed, 52952 insertions(+), 52887 deletions(-) create mode 100644 gcc/ChangeLog-2013 create mode 100644 gcc/testsuite/ChangeLog-2013 create mode 100644 gcc/testsuite/g++.dg/opt/pr59647.C (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2ffd9593b54..63748709842 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,40492 +1,8 @@ -2013-12-31 Jakub Jelinek +2014-01-01 Jakub Jelinek - PR tree-optimization/59622 - * gimple-fold.c (gimple_fold_call): Don't replace OBJ_TYPE_REF - call fndecl with 0 possible targets with BUILT_IN_UNREACHABLE, - instead only for !inplace add a __builtin_unreachable () call - before the call. - -2013-12-31 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/avx512fintrin.h (_mm_add_round_sd): New. - (_mm_add_round_sd): Ditto. - (_mm_add_round_ss): Ditto. - (_mm_sub_round_sd): Ditto. - (_mm_sub_round_ss): Ditto. - (_mm_rcp14_sd): Ditto. - (_mm_rcp14_ss): Ditto. - (_mm_sqrt_round_sd): Ditto. - (_mm_sqrt_round_ss): Ditto. - (_mm_mul_round_sd): Ditto. - (_mm_mul_round_ss): Ditto. - (_mm_div_round_sd): Ditto. - (_mm_div_round_ss): Ditto. - (_mm_scalef_round_sd): Ditto. - (_mm_scalef_round_ss): Ditto. - (_mm_scalef_round_sd): Ditto. - (_mm_scalef_round_ss): Ditto. - (_mm_cvt_roundsd_ss): Ditto. - (_mm_cvt_roundsd_sd): Ditto. - (_mm_getexp_round_ss): Ditto. - (_mm_getexp_round_sd): Ditto. - (_mm_getmant_round_sd): Ditto. - (_mm_getmant_round_ss): Ditto. - (_mm_roundscale_round_ss): Ditto. - (_mm_roundscale_round_sd): Ditto. - (_mm_max_round_sd): Ditto. - (_mm_max_round_ss): Ditto. - (_mm_min_round_sd): Ditto. - (_mm_min_round_ss): Ditto. - (_mm_fmadd_round_sd): Ditto. - (_mm_fmadd_round_ss): Ditto. - (_mm_fmsub_round_sd): Ditto. - (_mm_fmsub_round_ss): Ditto. - (_mm_fnmadd_round_sd): Ditto. - (_mm_fnmadd_round_ss): Ditto. - (_mm_fnmsub_round_sd): Ditto. - (_mm_fnmsub_round_ss): Ditto. - (_mm_scalef_sd): Ditto. - (_mm_scalef_ss): Ditto. - (_mm_getexp_ss): Ditto. - (_mm_getexp_sd): Ditto. - (_mm_getmant_sd): Ditto. - (_mm_getmant_ss): Ditto. - (_mm_roundscale_ss): Ditto. - (_mm_roundscale_sd): Ditto. - * config/i386/i386-builtin-types.def: New types to support - new built-ins: , , - <(V4SF, V4SF, V2DF, INT>, , - . - * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_ADDSD_ROUND, - IX86_BUILTIN_ADDSS_ROUND, IX86_BUILTIN_CVTSD2SS_ROUND, - IX86_BUILTIN_CVTSS2SD_ROUND, IX86_BUILTIN_DIVSD_ROUND, - IX86_BUILTIN_GETEXPSD128, IX86_BUILTIN_DIVSS_ROUND, - IX86_BUILTIN_GETEXPSS128, IX86_BUILTIN_GETMANTSD128, - IX86_BUILTIN_GETMANTSS128, IX86_BUILTIN_MAXSD_ROUND, - IX86_BUILTIN_MAXSS_ROUND, IX86_BUILTIN_MINSD_ROUND, - IX86_BUILTIN_MINSS_ROUND, IX86_BUILTIN_MULSD_ROUND, - IX86_BUILTIN_MULSS_ROUND, IX86_BUILTIN_RCP14SD, - IX86_BUILTIN_RCP14SS, IX86_BUILTIN_RNDSCALESD, - IX86_BUILTIN_RNDSCALESS, IX86_BUILTIN_RSQRT14SD, - IX86_BUILTIN_RSQRT14SS, IX86_BUILTIN_SCALEFSD, - IX86_BUILTIN_SCALEFSS, IX86_BUILTIN_SQRTSD_ROUND, - IX86_BUILTIN_SQRTSS_ROUND, IX86_BUILTIN_SUBSD_ROUND, - IX86_BUILTIN_SUBSS_ROUND, IX86_BUILTIN_VFMADDSD3_ROUND, - IX86_BUILTIN_VFMADDSS3_ROUND, IX86_BUILTIN_VFMSUBSD3_MASK3, - IX86_BUILTIN_VFMSUBSS3_MASK3. - (builtin_description bdesc_args[]): Add - __builtin_ia32_rcp14sd, __builtin_ia32_rcp14ss, - __builtin_ia32_rsqrt14pd512_mask, __builtin_ia32_rsqrt14ps512_mask, - __builtin_ia32_rsqrt14sd, __builtin_ia32_rsqrt14ss, - __builtin_ia32_addsd_round, __builtin_ia32_addss_round, - __builtin_ia32_cvtsd2ss_round, __builtin_ia32_cvtss2sd_round, - __builtin_ia32_divsd_round, __builtin_ia32_divss_round, - __builtin_ia32_getexpsd128_round, __builtin_ia32_getexpss128_round, - __builtin_ia32_getmantsd_round, __builtin_ia32_getmantss_round, - __builtin_ia32_maxsd_round, __builtin_ia32_maxss_round, - __builtin_ia32_minsd_round, __builtin_ia32_minss_round, - __builtin_ia32_mulsd_round, __builtin_ia32_mulss_round, - __builtin_ia32_rndscalesd_round, __builtin_ia32_rndscaless_round, - __builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round, - __builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round, - __builtin_ia32_subsd_round, __builtin_ia32_subss_round, - __builtin_ia32_vfmaddsd3_round, __builtin_ia32_vfmaddss3_round. - (ix86_expand_round_builtin): Expand new FTYPEs. - * config/i386/sse.md (_vm3): Support - EVEX's embedded rouding. - (_vm3): Ditto. - (_vmsqrt2): Ditto. - (_vm3): Ditto. - (sse2_cvtsd2ss): Ditto. - (sse2_cvtss2sd): Ditto. - (*avx512f_vmscalef): Ditto. - (avx512f_sgetexp): Ditto. - (*avx512f_rndscale): Ditto. - (avx512f_getmant): Ditto. - (*srcp14): Make visible. - (*rsqrt14): Ditto. - * config/i386/subst.md (mask_mode512bit_condition): Fix - mode calculation. - (sd_mask_mode512bit_condition): Ditto. - (round_mode512bit_condition): Ditto. - (round_modev4sf_condition): Ditto. - (round_mask_scalar_operand3): Remove. - (round_prefix): New. - (round_saeonly_op3): Ditto. - (round_saeonly_prefix): Ditto. - -2013-12-31 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_SHA_SET): New. - (OPTION_MASK_ISA_SHA_UNSET): Ditto. - (ix86_handle_option): Handle OPT_msha. - * config.gcc (extra_headers): Add shaintrin.h. - * config/i386/cpuid.h (bit_SHA): New. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect SHA - instructions. - * config/i386/i386-c.c (ix86_target_macros_internal): Handle - OPTION_MASK_ISA_SHA. - * config/i386/i386.c (ix86_target_string): Add -msha. - (ix86_option_override_internal): Add PTA_SHA. - (ix86_valid_target_attribute_inner_p): Handle OPT_msha. - (enum ix86_builtins): Add IX86_BUILTIN_SHA1MSG1, - IX86_BUILTIN_SHA1MSG2, IX86_BUILTIN_SHA1NEXTE, IX86_BUILTIN_SHA1RNDS4, - IX86_BUILTIN_SHA256MSG1, IX86_BUILTIN_SHA256MSG2, - IX86_BUILTIN_SHA256RNDS2. - (bdesc_args): Add BUILTINS defined above. - (ix86_init_mmx_sse_builtins): Add __builtin_ia32_sha1msg1, - __builtin_ia32_sha1msg2, __builtin_ia32_sha1nexte, - __builtin_ia32_sha1rnds4, __builtin_ia32_sha256msg1, - __builtin_ia32_sha256msg2, __builtin_ia32_sha256rnds2. - (ix86_expand_args_builtin): Handle V4SI_FTYPE_V4SI_V4SI_V4SI, add - warning for CODE_FOR_sha1rnds4. - * config/i386/i386.h (TARGET_SHA): New. - (TARGET_SHA_P): Ditto. - * config/i386/i386.opt (-msha): Document it. - * config/i386/immintrin.h: Add shaintrin.h. - * config/i386/shaintrin.h: New. - * config/i386/sse.md (unspec): Add UNSPEC_SHA1MSG1, UNSPEC_SHA1MSG2, - UNSPEC_SHA1NEXTE, UNSPEC_SHA1RNDS4, UNSPEC_SHA256MSG1, - UNSPEC_SHA256MSG2, UNSPEC_SHA256RNDS2. - (sha1msg1): New. - (sha1msg2): Ditto. - (sha1nexte): Ditto. - (sha1rnds4): Ditto. - (sha256msg1): Ditto. - (sha256msg2): Ditto. - (sha256rnds2): Ditto. - * doc/invoke.texi: Add -msha. - -2013-12-31 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config.gcc (extra_headers): Add avx512fintrin.h, avx512cdintrin.h, - avx512erintrin.h, avx512pfintrin.h. - * config/i386/avx512cdintrin.h: New file. - * config/i386/avx512erintrin.h: New file. - * config/i386/avx512fintrin.h: New file. - * config/i386/avx512pfintrin.h: New file. - * config/i386/i386-builtin-types.def: Add V16UHI, V32SF, V16SF, V8DF, - V8DI, V16SI, V64QI, PV8DF, PV8DI, PV16SI, PV16SF, PCV8DF, PCV16SF, - PCV8DI, PCV16SI, V16QI_FTYPE_V16SI, V8DF_FTYPE_V8SI, V8DF_FTYPE_V8DF, - V8HI_FTYPE_V8DI, V16SF_FTYPE_V16SF, V8SI_FTYPE_V8DI, V8SF_FTYPE_V8DF, - V8SF_FTYPE_V8DF_V8SF_QI, V16HI_FTYPE_V16SI, V16SF_FTYPE_FLOAT, - V16SI_FTYPE_INT, V8DF_FTYPE_DOUBLE, V8DI_FTYPE_INT64, - V16SF_FTYPE_V4SF, V8DF_FTYPE_V4DF, V8DI_FTYPE_V4DI, V16QI_FTYPE_V8DI, - UINT_FTYPE_V4SF, UINT64_FTYPE_V4SF, UINT_FTYPE_V2DF, - UINT64_FTYPE_V2DF, V16SI_FTYPE_V16SI, V16SI_FTYPE_V16SI_V16SI_HI, - V8DI_FTYPE_V8DI, V8DI_FTYPE_V8DI_V8DI_QI, V16SI_FTYPE_PV4SI, - V16SF_FTYPE_PV4SF, V8DI_FTYPE_PV4DI, V8DF_FTYPE_PV4DF, - V8UHI_FTYPE_V8UHI, V8USI_FTYPE_V8USI, V2DF_FTYPE_V2DF_UINT, - V2DF_FTYPE_V2DF_UINT64, V4DF_FTYPE_V8DF_INT, - V4DF_FTYPE_V8DF_INT_V4DF_QI, V8DF_FTYPE_V8DF_V8DI, - V4SF_FTYPE_V4SF_UINT, V4SF_FTYPE_V4SF_UINT64, - INT_FTYPE_V4SF_V4SF_INT_INT, INT_FTYPE_V2DF_V2DF_INT_INT, - V16SF_FTYPE_V16SF_INT, V4SF_FTYPE_V16SF_INT, - V4SF_FTYPE_V16SF_INT_V4SF_QI, V16SF_FTYPE_V16SF_V16SF, - V16SF_FTYPE_V16SF_V16SI, V8DF_FTYPE_V8DF_V4DF_INT_V8DF_QI, - V8DF_FTYPE_V8DF_V8DF_INT_V8DF_QI, V8DF_FTYPE_V8DF_INT_V8DF_QI, - V8DF_FTYPE_V8DF_V8DF_V8DI_INT_QI_INT, V8DF_FTYPE_V8DF_V8DF, - V16SF_FTYPE_V16SF_V16SF_INT, V16SF_FTYPE_V16SF_V16SF_INT_V16SF_HI, - V16SF_FTYPE_V16SF_INT_V16SF_HI, V16SI_FTYPE_V16SI_V4SI_INT_V16SI_HI, - V16SF_FTYPE_V16SF_V16SF_V16SI_INT, - V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI, - V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI_INT, - V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI, - V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI_INT, - V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI, - V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI_INT, V16SF_FTYPE_V16SF_V4SF_INT, - V16SF_FTYPE_V16SF_V4SF_INT_V16SF_HI, V16HI_FTYPE_V16SF_INT, - V16HI_FTYPE_V16SF_INT_V16HI_HI, V16HI_FTYPE_V16HI_V16HI_INT_V16HI_HI, - V16SI_FTYPE_V16SI_V4SI, V16SI_FTYPE_V16SI_V4SI_INT, - V4SI_FTYPE_V16SI_INT, V4SI_FTYPE_V16SI_INT_V4SI_QI, - V16SI_FTYPE_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_INT_V16SI_HI, - V16SI_FTYPE_V16SI_SI, V16SI_FTYPE_V16SI_INT, - V16SI_FTYPE_V16SI_V4SI_V16SI_HI, V16SI_FTYPE_V16SI_INT_V16SI_HI, - V8DI_FTYPE_V8DI_V8DI, V16SI_FTYPE_V8DF_V8DF, - V8DI_FTYPE_V8DI_V8DI_INT_V8DI_QI, V8DI_FTYPE_V8DI_V4DI_INT_V8DI_QI, - V8DI_FTYPE_V8DI_V2DI, V4DI_FTYPE_V8DI_INT, - V4DI_FTYPE_V8DI_INT_V4DI_QI, V8DI_FTYPE_V8DI_V2DI_V8DI_QI, - V8DI_FTYPE_V8DI_INT_V8DI_QI, VOID_FTYPE_PDOUBLE_V8DF, - VOID_FTYPE_PFLOAT_V16SF, VOID_FTYPE_PV8DI_V8DI, HI_FTYPE_HI, - HI_FTYPE_HI_HI, HI_FTYPE_HI_INT, QI_FTYPE_V8DI_V8DI, - QI_FTYPE_V8DI_V8DI_QI, HI_FTYPE_V16SI_V16SI, HI_FTYPE_V16SI_V16SI_HI, - QI_FTYPE_V8DI_V8DI_INT, QI_FTYPE_V8DI_V8DI_INT_QI, - HI_FTYPE_V16SI_V16SI_INT, HI_FTYPE_V16SI_V16SI_INT ,HI, - QI_FTYPE_V8DF_V8DF_INT, QI_FTYPE_V8DF_V8DF_INT_QI, - QI_FTYPE_V8DF_V8DF_INT_QI_INT, HI_FTYPE_V16SF_V16SF_INT, - HI_FTYPE_V16SF_V16SF_INT_HI, HI_FTYPE_V16SF_V16SF_INT_HI_INT, - QI_FTYPE_V2DF_V2DF_INT, QI_FTYPE_V2DF_V2DF_INT_QI, - QI_FTYPE_V2DF_V2DF_INT_QI_INT, QI_FTYPE_V4SF_V4SF_INT, - QI_FTYPE_V4SF_V4SF_INT_QI, QI_FTYPE_V4SF_V4SF_INT_QI_INT, - V16SI_FTYPE_HI, V8DI_FTYPE_QI, V8DF_FTYPE_V8DF_V8DF_V8DF, - V16SF_FTYPE_V16SF_V16SF_V16SF, V8DF_FTYPE_V8DF_V8DF_QI, - V8DF_FTYPE_V8SF_V8DF_QI, V8DF_FTYPE_V8SI_V8DF_QI, - V8DI_FTYPE_V8SI_V8DI_QI, V8DI_FTYPE_V8HI_V8DI_QI, - V8DI_FTYPE_V16QI_V8DI_QI, V8DI_FTYPE_V8DI_V8DI_V8DI_QI, - V8DF_FTYPE_V8DI_V8DF_V8DF, V8DF_FTYPE_V8DI_V8DF_V8DF_QI, - V8DF_FTYPE_V8DF_V8DI_V8DF_QI, V8DF_FTYPE_V8DF_V8DF_V8DF_QI, - V16SI_FTYPE_V16SI_V16SI_V16SI_HI, V2DF_FTYPE_V2DF_V2DF_V2DF_QI, - V2DF_FTYPE_V2DF_V4SF_V2DF_QI, V16SF_FTYPE_V16SF_V16SF_HI, - V16SF_FTYPE_V16SI_V16SF_HI, V16SF_FTYPE_V16SF_V16SF_V16SF_HI, - V16SF_FTYPE_V16SI_V16SF_V16SF, V16SF_FTYPE_V16SI_V16SF_V16SF_HI, - V16SF_FTYPE_V16SF_V16SI_V16SF_HI, V4SF_FTYPE_V4SF_V2DF_V4SF_QI, - V4SF_FTYPE_V4SF_V4SF_V4SF_QI, V16SF_FTYPE_V4SF_V16SF_HI, - V8DF_FTYPE_V4DF_V8DF_QI, V8DF_FTYPE_V2DF_V8DF_QI, - V16SI_FTYPE_V4SI_V16SI_HI, V16SI_FTYPE_SI_V16SI_HI, - V16SI_FTYPE_V16HI_V16SI_HI, V16SI_FTYPE_V16QI_V16SI_HI, - V8SI_FTYPE_V8DF_V8SI_QI, V8DI_FTYPE_V4DI_V8DI_QI, - V8DI_FTYPE_V2DI_V8DI_QI, V8DI_FTYPE_DI_V8DI_QI, - V16SF_FTYPE_PCV16SF_V16SF_HI, V8DF_FTYPE_PCV8DF_V8DF_QI, - V16SI_FTYPE_PCV16SI_V16SI_HI, V8DI_FTYPE_PCV8DI_V8DI_QI, - V2DF_FTYPE_PCDOUBLE_V2DF_QI, V4SF_FTYPE_PCFLOAT_V4SF_QI, - V16QI_FTYPE_V16SI_V16QI_HI, V16HI_FTYPE_V16SI_V16HI_HI, - V8SI_FTYPE_V8DI_V8SI_QI, V8HI_FTYPE_V8DI_V8HI_QI, - V16QI_FTYPE_V8DI_V16QI_QI, VOID_FTYPE_PV8DF_V8DF_QI, - VOID_FTYPE_PV16SF_V16SF_HI, VOID_FTYPE_PV8DI_V8DI_QI, - VOID_FTYPE_PV16SI_V16SI_HI, VOID_FTYPE_PDOUBLE_V2DF_QI, - VOID_FTYPE_PFLOAT_V4SF_QI, V16SI_FTYPE_V16SF_V16SI_HI, - V8DI_FTYPE_V8DI_V8DI_V8DI_INT_QI, - V16SI_FTYPE_V16SI_V16SI_V16SI_INT_HI, V8DI_FTYPE_V8DI_V8DI_V8DI, - V16SI_FTYPE_V16SI_V16SI_V16SI, V8DF_FTYPE_V8DF_V8DI_V8DF, - V16SF_FTYPE_V16SF_V16SI_V16SF, V4SF_FTYPE_V4SF_V4SF_INT_V4SF_QI, - V2DF_FTYPE_V2DF_V2DF_INT_V2DF_QI, V8DI_FTYPE_V16SI_V16SI_V8DI_QI, - UINT64_FTYPE_V2DF_INT, UINT64_FTYPE_V4SF_INT, UINT_FTYPE_V2DF_INT, - UINT_FTYPE_V4SF_INT, INT64_FTYPE_V2DF_INT, INT64_FTYPE_V4SF_INT, - INT_FTYPE_V2DF_INT, INT_FTYPE_V4SF_INT, V2DF_FTYPE_V2DF_UINT64_INT, - V4SF_FTYPE_V4SF_UINT64_INT, V4SF_FTYPE_V4SF_UINT_INT, - V2DF_FTYPE_V2DF_INT64_INT, V4SF_FTYPE_V4SF_INT64_INT, - V4SF_FTYPE_V4SF_INT_INT, V16SI_FTYPE_V16SF_V16SI_HI_INT, - V16SF_FTYPE_V16SI_V16SF_HI_INT, V16SF_FTYPE_V16SF_V16SF_HI_INT, - V16SF_FTYPE_V16HI_V16SF_HI_INT, V8SI_FTYPE_V8DF_V8SI_QI_INT, - V8SF_FTYPE_V8DF_V8SF_QI_INT, V8DF_FTYPE_V8DF_V8DF_QI_INT, - V8DF_FTYPE_V8SF_V8DF_QI_INT, V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT, - V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT, V4SF_FTYPE_V4SF_V4SF_V4SF_QI_INT, - V4SF_FTYPE_V4SF_V2DF_V4SF_QI_INT, V2DF_FTYPE_V2DF_V2DF_V2DF_QI_INT, - V2DF_FTYPE_V2DF_V4SF_V2DF_QI_INT, V2DF_FTYPE_V2DF_V2DF_V2DF_INT, - V16SF_FTYPE_V16SF_INT_V16SF_HI_INT, V8DF_FTYPE_V8DF_INT_V8DF_QI_INT, - V4SF_FTYPE_V4SF_V4SF_INT_V4SF_QI_INT, - V2DF_FTYPE_V2DF_V2DF_INT_V2DF_QI_INT, V8DI_FTYPE_V8DI_SI_V8DI_V8DI, - V16SF_FTYPE_V16SF_PCFLOAT_V16SI_HI_INT, - V16SF_FTYPE_V16SF_PCFLOAT_V8DI_HI_INT, - V8DF_FTYPE_V8DF_PCDOUBLE_V8SI_QI_INT, - V8DF_FTYPE_V8DF_PCDOUBLE_V16SI_QI_INT, - V8SF_FTYPE_V8SF_PCFLOAT_V8DI_QI_INT, - V8DF_FTYPE_V8DF_PCDOUBLE_V8DI_QI_INT, - V16SI_FTYPE_V16SI_PCINT_V16SI_HI_INT, - V16SI_FTYPE_V16SI_PCINT_V8DI_HI_INT, - V8DI_FTYPE_V8DI_PCINT64_V8SI_QI_INT, - V8DI_FTYPE_V8DI_PCINT64_V16SI_QI_INT, - V8SI_FTYPE_V8SI_PCINT_V8DI_QI_INT, - V8DI_FTYPE_V8DI_PCINT64_V8DI_QI_INT, - VOID_FTYPE_PFLOAT_HI_V16SI_V16SF_INT, - VOID_FTYPE_PDOUBLE_QI_V8SI_V8DF_INT, - VOID_FTYPE_PFLOAT_QI_V8DI_V8SF_INT, - VOID_FTYPE_PDOUBLE_QI_V8DI_V8DF_INT, - VOID_FTYPE_PINT_HI_V16SI_V16SI_INT, - VOID_FTYPE_PLONGLONG_QI_V8SI_V8DI_INT, - VOID_FTYPE_PINT_QI_V8DI_V8SI_INT, - VOID_FTYPE_PLONGLONG_QI_V8DI_V8DI_INT, - VOID_FTYPE_HI_V16SI_PCINT_INT_INT, VOID_FTYPE_QI_V8DI_PCINT_INT_INT. - (ALIAS): Add DEF_FUNCTION_TYPE_ALIAS (V16SI_FTYPE_V8DF_V8DF, ROUND). - * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_ADDPD512, - IX86_BUILTIN_ADDPS512, IX86_BUILTIN_ADDSD_MASK, - IX86_BUILTIN_ADDSS_MASK, IX86_BUILTIN_ALIGND512, - IX86_BUILTIN_ALIGNQ512, IX86_BUILTIN_BLENDMD512, - IX86_BUILTIN_BLENDMPD512, IX86_BUILTIN_BLENDMPS512, - IX86_BUILTIN_BLENDMQ512, IX86_BUILTIN_BROADCASTF32X4_512, - IX86_BUILTIN_BROADCASTF64X4_512, IX86_BUILTIN_BROADCASTI32X4_512, - IX86_BUILTIN_BROADCASTI64X4_512, IX86_BUILTIN_BROADCASTSD512, - IX86_BUILTIN_BROADCASTSS512, IX86_BUILTIN_CMPD512, - IX86_BUILTIN_CMPPD512, IX86_BUILTIN_CMPPS512, IX86_BUILTIN_CMPQ512, - IX86_BUILTIN_CMPSD_MASK, IX86_BUILTIN_CMPSS_MASK, IX86_BUILTIN_COMIDF, - IX86_BUILTIN_COMISF, IX86_BUILTIN_COMPRESSPD512, - IX86_BUILTIN_COMPRESSPDSTORE512, IX86_BUILTIN_COMPRESSPS512, - IX86_BUILTIN_COMPRESSPSSTORE512, IX86_BUILTIN_CVTDQ2PD512, - IX86_BUILTIN_CVTDQ2PS512, IX86_BUILTIN_CVTPD2DQ512, - IX86_BUILTIN_CVTPD2PS512, IX86_BUILTIN_CVTPD2UDQ512, - IX86_BUILTIN_CVTPH2PS512, IX86_BUILTIN_CVTPS2DQ512, - IX86_BUILTIN_CVTPS2PD512, IX86_BUILTIN_CVTPS2PH512, - IX86_BUILTIN_CVTPS2UDQ512, IX86_BUILTIN_CVTSD2SS_MASK, - IX86_BUILTIN_CVTSI2SD64, IX86_BUILTIN_CVTSI2SS32, - IX86_BUILTIN_CVTSI2SS64, IX86_BUILTIN_CVTSS2SD_MASK, - IX86_BUILTIN_CVTTPD2DQ512, IX86_BUILTIN_CVTTPD2UDQ512, - IX86_BUILTIN_CVTTPS2DQ512, IX86_BUILTIN_CVTTPS2UDQ512, - IX86_BUILTIN_CVTUDQ2PD512, IX86_BUILTIN_CVTUDQ2PS512, - IX86_BUILTIN_CVTUSI2SD32, IX86_BUILTIN_CVTUSI2SD64, - IX86_BUILTIN_CVTUSI2SS32, IX86_BUILTIN_CVTUSI2SS64, - IX86_BUILTIN_DIVPD512, IX86_BUILTIN_DIVPS512, IX86_BUILTIN_DIVSD_MASK, - IX86_BUILTIN_DIVSS_MASK, IX86_BUILTIN_EXPANDPD512, - IX86_BUILTIN_EXPANDPD512Z, IX86_BUILTIN_EXPANDPDLOAD512, - IX86_BUILTIN_EXPANDPDLOAD512Z, IX86_BUILTIN_EXPANDPS512, - IX86_BUILTIN_EXPANDPS512Z, IX86_BUILTIN_EXPANDPSLOAD512, - IX86_BUILTIN_EXPANDPSLOAD512Z, IX86_BUILTIN_EXTRACTF32X4, - IX86_BUILTIN_EXTRACTF64X4, IX86_BUILTIN_EXTRACTI32X4, - IX86_BUILTIN_EXTRACTI64X4, IX86_BUILTIN_FIXUPIMMPD512_MASK, - IX86_BUILTIN_FIXUPIMMPD512_MASKZ, IX86_BUILTIN_FIXUPIMMPS512_MASK, - IX86_BUILTIN_FIXUPIMMPS512_MASKZ, IX86_BUILTIN_FIXUPIMMSD128_MASK, - IX86_BUILTIN_FIXUPIMMSD128_MASKZ, IX86_BUILTIN_FIXUPIMMSS128_MASK, - IX86_BUILTIN_FIXUPIMMSS128_MASKZ, IX86_BUILTIN_GETEXPPD512, - IX86_BUILTIN_GETEXPPS512, IX86_BUILTIN_GETEXPSD128, - IX86_BUILTIN_GETEXPSS128, IX86_BUILTIN_GETMANTPD512, - IX86_BUILTIN_GETMANTPS512, IX86_BUILTIN_GETMANTSD128, - IX86_BUILTIN_GETMANTSS128, IX86_BUILTIN_INSERTF32X4, - IX86_BUILTIN_INSERTF64X4, IX86_BUILTIN_INSERTI32X4, - IX86_BUILTIN_INSERTI64X4, IX86_BUILTIN_LOADAPD512, - IX86_BUILTIN_LOADAPS512, IX86_BUILTIN_LOADDQUDI512, - IX86_BUILTIN_LOADDQUSI512, IX86_BUILTIN_LOADSD, IX86_BUILTIN_LOADSS, - IX86_BUILTIN_LOADUPD512, IX86_BUILTIN_LOADUPS512, - IX86_BUILTIN_MAXPD512, IX86_BUILTIN_MAXPS512, IX86_BUILTIN_MAXSD_MASK, - IX86_BUILTIN_MAXSS_MASK, IX86_BUILTIN_MINPD512, IX86_BUILTIN_MINPS512, - IX86_BUILTIN_MINSD_MASK, IX86_BUILTIN_MINSS_MASK, - IX86_BUILTIN_MOVAPD512, IX86_BUILTIN_MOVAPS512, - IX86_BUILTIN_MOVDDUP512, IX86_BUILTIN_MOVDQA32LOAD512, - IX86_BUILTIN_MOVDQA32STORE512, IX86_BUILTIN_MOVDQA32_512, - IX86_BUILTIN_MOVDQA64LOAD512, IX86_BUILTIN_MOVDQA64STORE512, - IX86_BUILTIN_MOVDQA64_512, IX86_BUILTIN_MOVESD, IX86_BUILTIN_MOVESS, - IX86_BUILTIN_MOVNTDQ512, IX86_BUILTIN_MOVNTPD512, - IX86_BUILTIN_MOVNTPS512, IX86_BUILTIN_MOVSHDUP512, - IX86_BUILTIN_MOVSLDUP512, IX86_BUILTIN_MULPD512, - IX86_BUILTIN_MULPS512, IX86_BUILTIN_MULSD_MASK, - IX86_BUILTIN_MULSS_MASK, IX86_BUILTIN_PABSD512, IX86_BUILTIN_PABSQ512, - IX86_BUILTIN_PADDD512, IX86_BUILTIN_PADDQ512, IX86_BUILTIN_PANDD512, - IX86_BUILTIN_PANDND512, IX86_BUILTIN_PANDNQ512, IX86_BUILTIN_PANDQ512, - IX86_BUILTIN_PBROADCASTD512, IX86_BUILTIN_PBROADCASTD512_GPR, - IX86_BUILTIN_PBROADCASTMB512, IX86_BUILTIN_PBROADCASTMW512, - IX86_BUILTIN_PBROADCASTQ512, IX86_BUILTIN_PBROADCASTQ512_GPR, - IX86_BUILTIN_PBROADCASTQ512_MEM, IX86_BUILTIN_PCMPEQD512_MASK, - IX86_BUILTIN_PCMPEQQ512_MASK, IX86_BUILTIN_PCMPGTD512_MASK, - IX86_BUILTIN_PCMPGTQ512_MASK, IX86_BUILTIN_PCOMPRESSD512, - IX86_BUILTIN_PCOMPRESSDSTORE512, IX86_BUILTIN_PCOMPRESSQ512, - IX86_BUILTIN_PCOMPRESSQSTORE512, IX86_BUILTIN_PEXPANDD512, - IX86_BUILTIN_PEXPANDD512Z, IX86_BUILTIN_PEXPANDDLOAD512, - IX86_BUILTIN_PEXPANDDLOAD512Z, IX86_BUILTIN_PEXPANDQ512, - IX86_BUILTIN_PEXPANDQ512Z, IX86_BUILTIN_PEXPANDQLOAD512, - IX86_BUILTIN_PEXPANDQLOAD512Z, IX86_BUILTIN_PMAXSD512, - IX86_BUILTIN_PMAXSQ512, IX86_BUILTIN_PMAXUD512, - IX86_BUILTIN_PMAXUQ512, IX86_BUILTIN_PMINSD512, - IX86_BUILTIN_PMINSQ512, IX86_BUILTIN_PMINUD512, - IX86_BUILTIN_PMINUQ512, IX86_BUILTIN_PMOVDB512, - IX86_BUILTIN_PMOVDW512, IX86_BUILTIN_PMOVQB512, - IX86_BUILTIN_PMOVQD512, IX86_BUILTIN_PMOVQW512, - IX86_BUILTIN_PMOVSDB512, IX86_BUILTIN_PMOVSDW512, - IX86_BUILTIN_PMOVSQB512, IX86_BUILTIN_PMOVSQD512, - IX86_BUILTIN_PMOVSQW512, IX86_BUILTIN_PMOVSXBD512, - IX86_BUILTIN_PMOVSXBQ512, IX86_BUILTIN_PMOVSXDQ512, - IX86_BUILTIN_PMOVSXWD512, IX86_BUILTIN_PMOVSXWQ512, - IX86_BUILTIN_PMOVUSDB512, IX86_BUILTIN_PMOVUSDW512, - IX86_BUILTIN_PMOVUSQB512, IX86_BUILTIN_PMOVUSQD512, - IX86_BUILTIN_PMOVUSQW512, IX86_BUILTIN_PMOVZXBD512, - IX86_BUILTIN_PMOVZXBQ512, IX86_BUILTIN_PMOVZXDQ512, - IX86_BUILTIN_PMOVZXWD512, IX86_BUILTIN_PMOVZXWQ512, - IX86_BUILTIN_PMULDQ512, IX86_BUILTIN_PMULLD512, - IX86_BUILTIN_PMULUDQ512, IX86_BUILTIN_PORD512, IX86_BUILTIN_PORQ512, - IX86_BUILTIN_PROLD512, IX86_BUILTIN_PROLQ512, IX86_BUILTIN_PROLVD512, - IX86_BUILTIN_PROLVQ512, IX86_BUILTIN_PRORD512, IX86_BUILTIN_PRORQ512, - IX86_BUILTIN_PRORVD512, IX86_BUILTIN_PRORVQ512, - IX86_BUILTIN_PSHUFD512, IX86_BUILTIN_PSLLD512, IX86_BUILTIN_PSLLDI512, - IX86_BUILTIN_PSLLQ512, IX86_BUILTIN_PSLLQI512, - IX86_BUILTIN_PSLLVV16SI, IX86_BUILTIN_PSLLVV8DI, - IX86_BUILTIN_PSRAD512, IX86_BUILTIN_PSRADI512, IX86_BUILTIN_PSRAQ512, - IX86_BUILTIN_PSRAQI512, IX86_BUILTIN_PSRAVV16SI, - IX86_BUILTIN_PSRAVV8DI, IX86_BUILTIN_PSRLD512, IX86_BUILTIN_PSRLDI512, - IX86_BUILTIN_PSRLQ512, IX86_BUILTIN_PSRLQI512, - IX86_BUILTIN_PSRLVV16SI, IX86_BUILTIN_PSRLVV8DI, - IX86_BUILTIN_PSUBD512, IX86_BUILTIN_PSUBQ512, IX86_BUILTIN_PTESTMD512, - IX86_BUILTIN_PTESTMQ512, IX86_BUILTIN_PTESTNMD512, - IX86_BUILTIN_PTESTNMQ512, IX86_BUILTIN_PUNPCKHDQ512, - IX86_BUILTIN_PUNPCKHQDQ512, IX86_BUILTIN_PUNPCKLDQ512, - IX86_BUILTIN_PUNPCKLQDQ512, IX86_BUILTIN_PXORD512, - IX86_BUILTIN_PXORQ512, IX86_BUILTIN_RCP14PD512, - IX86_BUILTIN_RCP14PS512, IX86_BUILTIN_RCP14SD, IX86_BUILTIN_RCP14SS, - IX86_BUILTIN_RNDSCALEPD, IX86_BUILTIN_RNDSCALEPS, - IX86_BUILTIN_RNDSCALESD, IX86_BUILTIN_RNDSCALESS, - IX86_BUILTIN_RSQRT14PD512, IX86_BUILTIN_RSQRT14PS512, - IX86_BUILTIN_RSQRT14SD, IX86_BUILTIN_RSQRT14SS, - IX86_BUILTIN_SCALEFPD512, IX86_BUILTIN_SCALEFPS512, - IX86_BUILTIN_SCALEFSD, IX86_BUILTIN_SCALEFSS, IX86_BUILTIN_SHUFPD512, - IX86_BUILTIN_SHUFPS512, IX86_BUILTIN_SHUF_F32x4, - IX86_BUILTIN_SHUF_F64x2, IX86_BUILTIN_SHUF_I32x4, - IX86_BUILTIN_SHUF_I64x2, - IX86_BUILTIN_SQRTPD512_MASK, IX86_BUILTIN_SQRTPS512_MASK, - IX86_BUILTIN_SQRTSD_MASK, - IX86_BUILTIN_SQRTSS_MASK, IX86_BUILTIN_STOREAPD512, - IX86_BUILTIN_STOREAPS512, IX86_BUILTIN_STOREDQUDI512, - IX86_BUILTIN_STOREDQUSI512, IX86_BUILTIN_STORESD, - IX86_BUILTIN_STORESS, IX86_BUILTIN_STOREUPD512, - IX86_BUILTIN_STOREUPS512, IX86_BUILTIN_SUBPD512, - IX86_BUILTIN_SUBPS512, IX86_BUILTIN_SUBSD_MASK, - IX86_BUILTIN_SUBSS_MASK, IX86_BUILTIN_UCMPD512, IX86_BUILTIN_UCMPQ512, - IX86_BUILTIN_UNPCKHPD512, IX86_BUILTIN_UNPCKHPS512, - IX86_BUILTIN_UNPCKLPD512, IX86_BUILTIN_UNPCKLPS512, - IX86_BUILTIN_VCVTSD2SI32, IX86_BUILTIN_VCVTSD2SI64, - IX86_BUILTIN_VCVTSD2USI32, IX86_BUILTIN_VCVTSD2USI64, - IX86_BUILTIN_VCVTSS2SI32, IX86_BUILTIN_VCVTSS2SI64, - IX86_BUILTIN_VCVTSS2USI32, IX86_BUILTIN_VCVTSS2USI64, - IX86_BUILTIN_VCVTTSD2SI32, IX86_BUILTIN_VCVTTSD2SI64, - IX86_BUILTIN_VCVTTSD2USI32, IX86_BUILTIN_VCVTTSD2USI64, - IX86_BUILTIN_VCVTTSS2SI32, IX86_BUILTIN_VCVTTSS2SI64, - IX86_BUILTIN_VCVTTSS2USI32, IX86_BUILTIN_VCVTTSS2USI64, - IX86_BUILTIN_VFMADDPD512_MASK, IX86_BUILTIN_VFMADDPD512_MASK3, - IX86_BUILTIN_VFMADDPD512_MASKZ, IX86_BUILTIN_VFMADDPS512_MASK, - IX86_BUILTIN_VFMADDPS512_MASK3, IX86_BUILTIN_VFMADDPS512_MASKZ, - IX86_BUILTIN_VFMADDSD3_MASK, IX86_BUILTIN_VFMADDSD3_MASK3, - IX86_BUILTIN_VFMADDSD3_MASKZ, IX86_BUILTIN_VFMADDSS3_MASK, - IX86_BUILTIN_VFMADDSS3_MASK3, IX86_BUILTIN_VFMADDSS3_MASKZ, - IX86_BUILTIN_VFMADDSUBPD512_MASK, IX86_BUILTIN_VFMADDSUBPD512_MASK3, - IX86_BUILTIN_VFMADDSUBPD512_MASKZ, IX86_BUILTIN_VFMADDSUBPS512_MASK, - IX86_BUILTIN_VFMADDSUBPS512_MASK3, IX86_BUILTIN_VFMADDSUBPS512_MASKZ, - IX86_BUILTIN_VFMSUBADDPD512_MASK3, IX86_BUILTIN_VFMSUBADDPS512_MASK3, - IX86_BUILTIN_VFMSUBPD512_MASK3, IX86_BUILTIN_VFMSUBPS512_MASK3, - IX86_BUILTIN_VFMSUBSD3_MASK3, IX86_BUILTIN_VFMSUBSS3_MASK3, - IX86_BUILTIN_VFNMADDPD512_MASK, IX86_BUILTIN_VFNMADDPS512_MASK, - IX86_BUILTIN_VFNMSUBPD512_MASK, IX86_BUILTIN_VFNMSUBPD512_MASK3, - IX86_BUILTIN_VFNMSUBPS512_MASK, IX86_BUILTIN_VFNMSUBPS512_MASK3, - IX86_BUILTIN_VPCLZCNTD512, IX86_BUILTIN_VPCLZCNTQ512, - IX86_BUILTIN_VPCONFLICTD512, IX86_BUILTIN_VPCONFLICTQ512, - IX86_BUILTIN_VPERMDF512, IX86_BUILTIN_VPERMDI512, - IX86_BUILTIN_VPERMI2VARD512, IX86_BUILTIN_VPERMI2VARPD512, - IX86_BUILTIN_VPERMI2VARPS512, IX86_BUILTIN_VPERMI2VARQ512, - IX86_BUILTIN_VPERMILPD512, IX86_BUILTIN_VPERMILPS512, - IX86_BUILTIN_VPERMILVARPD512, IX86_BUILTIN_VPERMILVARPS512, - IX86_BUILTIN_VPERMT2VARD512, IX86_BUILTIN_VPERMT2VARD512_MASKZ, - IX86_BUILTIN_VPERMT2VARPD512, IX86_BUILTIN_VPERMT2VARPD512_MASKZ, - IX86_BUILTIN_VPERMT2VARPS512, IX86_BUILTIN_VPERMT2VARPS512_MASKZ, - IX86_BUILTIN_VPERMT2VARQ512, IX86_BUILTIN_VPERMT2VARQ512_MASKZ, - IX86_BUILTIN_VPERMVARDF512, IX86_BUILTIN_VPERMVARDI512, - IX86_BUILTIN_VPERMVARSF512, IX86_BUILTIN_VPERMVARSI512, - IX86_BUILTIN_VTERNLOGD512_MASK, IX86_BUILTIN_VTERNLOGD512_MASKZ, - IX86_BUILTIN_VTERNLOGQ512_MASK, IX86_BUILTIN_VTERNLOGQ512_MASKZ, - IX86_BUILTIN_KAND16, IX86_BUILTIN_KANDN16, IX86_BUILTIN_KNOT16, - IX86_BUILTIN_KOR16, IX86_BUILTIN_KORTESTC16, IX86_BUILTIN_KORTESTZ16, - IX86_BUILTIN_KUNPCKBW, IX86_BUILTIN_KXNOR16, IX86_BUILTIN_KXOR16, - IX86_BUILTIN_GATHER3SIV8DI, - IX86_BUILTIN_SCATTERDIV16SF, IX86_BUILTIN_SCATTERDIV16SI, - IX86_BUILTIN_SCATTERDIV8DF, IX86_BUILTIN_SCATTERDIV8DI, - IX86_BUILTIN_SCATTERSIV16SF, IX86_BUILTIN_SCATTERSIV16SI, - IX86_BUILTIN_SCATTERSIV8DF, IX86_BUILTIN_SCATTERSIV8DI, - IX86_BUILTIN_GATHERPFDPS, IX86_BUILTIN_GATHERPFQPS, - IX86_BUILTIN_SCATTERPFDPS, IX86_BUILTIN_SCATTERPFQPS, - IX86_BUILTIN_EXP2PD_MASK, IX86_BUILTIN_EXP2PS_MASK, - IX86_BUILTIN_RCP28PD, IX86_BUILTIN_RCP28PS, - IX86_BUILTIN_RSQRT28PD, IX86_BUILTIN_RSQRT28PS. - (bdesc_special_args): Add __builtin_ia32_compressstoresf512_mask, - __builtin_ia32_compressstoresi512_mask, - __builtin_ia32_compressstoredf512_mask, - __builtin_ia32_compressstoredi512_mask, - __builtin_ia32_expandloadsf512_mask, - __builtin_ia32_expandloadsf512_maskz, - __builtin_ia32_expandloadsi512_mask, - __builtin_ia32_expandloadsi512_maskz, - __builtin_ia32_expandloaddf512_mask, - __builtin_ia32_expandloaddf512_maskz, - __builtin_ia32_expandloaddi512_mask, - __builtin_ia32_expandloaddi512_maskz, - __builtin_ia32_loaddqusi512_mask, __builtin_ia32_loaddqudi512_mask, - __builtin_ia32_loadsd_mask, __builtin_ia32_loadss_mask, - __builtin_ia32_loadupd512_mask, __builtin_ia32_loadups512_mask, - __builtin_ia32_loadaps512_mask, __builtin_ia32_movdqa32load512_mask, - __builtin_ia32_loadapd512_mask, __builtin_ia32_movdqa64load512_mask, - __builtin_ia32_movntps512, __builtin_ia32_movntpd512, - __builtin_ia32_movntdq512, __builtin_ia32_storedqusi512_mask, - __builtin_ia32_storedqudi512_mask, __builtin_ia32_storesd_mask, - __builtin_ia32_storess_mask, __builtin_ia32_storeupd512_mask, - __builtin_ia32_storeups512_mask, __builtin_ia32_storeaps512_mask, - __builtin_ia32_movdqa32store512_mask, __builtin_ia32_storeapd512_mask, - __builtin_ia32_movdqa64store512_mask, __builtin_ia32_alignd512_mask, - __builtin_ia32_alignq512_mask, __builtin_ia32_blendmd_512_mask, - __builtin_ia32_blendmpd_512_mask, __builtin_ia32_blendmps_512_mask, - __builtin_ia32_blendmq_512_mask, __builtin_ia32_broadcastf32x4_512, - __builtin_ia32_broadcastf64x4_512, __builtin_ia32_broadcasti32x4_512, - __builtin_ia32_broadcasti64x4_512, __builtin_ia32_broadcastsd512, - __builtin_ia32_broadcastss512, __builtin_ia32_cmpd512_mask, - __builtin_ia32_cmpq512_mask, __builtin_ia32_compressdf512_mask, - __builtin_ia32_compresssf512_mask, __builtin_ia32_cvtdq2pd512_mask, - __builtin_ia32_vcvtps2ph512_mask, __builtin_ia32_cvtudq2pd512_mask, - __builtin_ia32_cvtusi2sd32, __builtin_ia32_expanddf512_mask, - __builtin_ia32_expanddf512_maskz, __builtin_ia32_expandsf512_mask, - __builtin_ia32_expandsf512_maskz, __builtin_ia32_extractf32x4_mask, - __builtin_ia32_extractf64x4_mask, __builtin_ia32_extracti32x4_mask, - __builtin_ia32_extracti64x4_mask, __builtin_ia32_insertf32x4_mask, - __builtin_ia32_insertf64x4_mask, __builtin_ia32_inserti32x4_mask, - __builtin_ia32_inserti64x4_mask, __builtin_ia32_movapd512_mask, - __builtin_ia32_movaps512_mask, __builtin_ia32_movddup512_mask, - __builtin_ia32_movdqa32_512_mask, __builtin_ia32_movdqa64_512_mask, - __builtin_ia32_movesd_mask, __builtin_ia32_movess_mask, - __builtin_ia32_movshdup512_mask, __builtin_ia32_movsldup512_mask, - __builtin_ia32_pabsd512_mask, __builtin_ia32_pabsq512_mask, - __builtin_ia32_paddd512_mask, __builtin_ia32_paddq512_mask, - __builtin_ia32_pandd512_mask, __builtin_ia32_pandnd512_mask, - __builtin_ia32_pandnq512_mask, __builtin_ia32_pandq512_mask, - __builtin_ia32_pbroadcastd512, __builtin_ia32_pbroadcastd512_gpr_mask, - __builtin_ia32_broadcastmb512, __builtin_ia32_broadcastmw512, - __builtin_ia32_pbroadcastq512, __builtin_ia32_pbroadcastq512_gpr_mask, - __builtin_ia32_pbroadcastq512_mem_mask, - __builtin_ia32_pcmpeqd512_mask, __builtin_ia32_pcmpeqq512_mask, - __builtin_ia32_pcmpgtd512_mask, __builtin_ia32_pcmpgtq512_mask, - __builtin_ia32_compresssi512_mask, __builtin_ia32_compressdi512_mask, - __builtin_ia32_expandsi512_mask, __builtin_ia32_expandsi512_maskz, - __builtin_ia32_expanddi512_mask, __builtin_ia32_expanddi512_maskz, - __builtin_ia32_pmaxsd512_mask, __builtin_ia32_pmaxsq512_mask, - __builtin_ia32_pmaxud512_mask, __builtin_ia32_pmaxuq512_mask, - __builtin_ia32_pminsd512_mask, __builtin_ia32_pminsq512_mask, - __builtin_ia32_pminud512_mask, __builtin_ia32_pminuq512_mask, - __builtin_ia32_pmovdb512_mask, __builtin_ia32_pmovdw512_mask, - __builtin_ia32_pmovqb512_mask, __builtin_ia32_pmovqd512_mask, - __builtin_ia32_pmovqw512_mask, __builtin_ia32_pmovsdb512_mask, - __builtin_ia32_pmovsdw512_mask, __builtin_ia32_pmovsqb512_mask, - __builtin_ia32_pmovsqd512_mask, __builtin_ia32_pmovsqw512_mask, - __builtin_ia32_pmovsxbd512_mask, __builtin_ia32_pmovsxbq512_mask, - __builtin_ia32_pmovsxdq512_mask, __builtin_ia32_pmovsxwd512_mask, - __builtin_ia32_pmovsxwq512_mask, __builtin_ia32_pmovusdb512_mask, - __builtin_ia32_pmovusdw512_mask, __builtin_ia32_pmovusqb512_mask, - __builtin_ia32_pmovusqd512_mask, __builtin_ia32_pmovusqw512_mask, - __builtin_ia32_pmovzxbd512_mask, __builtin_ia32_pmovzxbq512_mask, - __builtin_ia32_pmovzxdq512_mask, __builtin_ia32_pmovzxwd512_mask, - __builtin_ia32_pmovzxwq512_mask, __builtin_ia32_pmuldq512_mask, - __builtin_ia32_pmulld512_mask, __builtin_ia32_pmuludq512_mask, - __builtin_ia32_pord512_mask, __builtin_ia32_porq512_mask, - __builtin_ia32_prold512_mask, __builtin_ia32_prolq512_mask, - __builtin_ia32_prolvd512_mask, __builtin_ia32_prolvq512_mask, - __builtin_ia32_prord512_mask, __builtin_ia32_prorq512_mask, - __builtin_ia32_prorvd512_mask, __builtin_ia32_prorvq512_mask, - __builtin_ia32_pshufd512_mask, __builtin_ia32_pslld512_mask, - __builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask, - __builtin_ia32_psllqi512_mask, __builtin_ia32_psllv16si_mask, - __builtin_ia32_psllv8di_mask, __builtin_ia32_psrad512_mask, - __builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask, - __builtin_ia32_psraqi512_mask, __builtin_ia32_psrav16si_mask, - __builtin_ia32_psrav8di_mask, __builtin_ia32_psrld512_mask, - __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask, - __builtin_ia32_psrlqi512_mask, __builtin_ia32_psrlv16si_mask, - __builtin_ia32_psrlv8di_mask, __builtin_ia32_psubd512_mask, - __builtin_ia32_psubq512_mask, __builtin_ia32_ptestmd512, - __builtin_ia32_ptestmq512, __builtin_ia32_ptestnmd512, - __builtin_ia32_ptestnmq512, __builtin_ia32_punpckhdq512_mask, - __builtin_ia32_punpckhqdq512_mask, __builtin_ia32_punpckldq512_mask, - __builtin_ia32_punpcklqdq512_mask, __builtin_ia32_pxord512_mask, - __builtin_ia32_pxorq512_mask, __builtin_ia32_rcp14pd512_mask, - __builtin_ia32_rcp14ps512_mask, __builtin_ia32_rcp14sd_mask, - __builtin_ia32_rcp14ss_mask, __builtin_ia32_rsqrt14pd512_mask, - __builtin_ia32_rsqrt14ps512_mask, __builtin_ia32_rsqrt14sd_mask, - __builtin_ia32_rsqrt14ss_mask, __builtin_ia32_shufpd512_mask, - __builtin_ia32_shufps512_mask, __builtin_ia32_shuf_f32x4_mask, - __builtin_ia32_shuf_f64x2_mask, __builtin_ia32_shuf_i32x4_mask, - __builtin_ia32_shuf_i64x2_mask, __builtin_ia32_ucmpd512_mask, - __builtin_ia32_ucmpq512_mask, __builtin_ia32_unpckhpd512_mask, - __builtin_ia32_unpckhps512_mask, __builtin_ia32_unpcklpd512_mask, - __builtin_ia32_unpcklps512_mask, __builtin_ia32_vplzcntd_512_mask, - __builtin_ia32_vplzcntq_512_mask, - __builtin_ia32_vpconflictsi_512_mask, - __builtin_ia32_vpconflictdi_512_mask, __builtin_ia32_permdf512_mask, - __builtin_ia32_permdi512_mask, __builtin_ia32_vpermi2vard512_mask, - __builtin_ia32_vpermi2varpd512_mask, - __builtin_ia32_vpermi2varps512_mask, - __builtin_ia32_vpermi2varq512_mask, __builtin_ia32_vpermilpd512_mask, - __builtin_ia32_vpermilps512_mask, __builtin_ia32_vpermilvarpd512_mask, - __builtin_ia32_vpermilvarps512_mask, - __builtin_ia32_vpermt2vard512_mask, - __builtin_ia32_vpermt2vard512_maskz, - __builtin_ia32_vpermt2varpd512_mask, - __builtin_ia32_vpermt2varpd512_maskz, - __builtin_ia32_vpermt2varps512_mask, - __builtin_ia32_vpermt2varps512_maskz, - __builtin_ia32_vpermt2varq512_mask, - __builtin_ia32_vpermt2varq512_maskz, __builtin_ia32_permvardf512_mask, - __builtin_ia32_permvardi512_mask, __builtin_ia32_permvarsf512_mask, - __builtin_ia32_permvarsi512_mask, __builtin_ia32_pternlogd512_mask, - __builtin_ia32_pternlogd512_maskz, __builtin_ia32_pternlogq512_mask, - __builtin_ia32_pternlogq512_maskz, __builtin_ia32_copysignps512, - __builtin_ia32_copysignpd512, __builtin_ia32_sqrtpd512, - __builtin_ia32_sqrtps512, __builtin_ia32_exp2ps, - __builtin_ia32_roundpd_az_vec_pack_sfix512, - __builtin_ia32_floorpd_vec_pack_sfix512, - __builtin_ia32_ceilpd_vec_pack_sfix512, __builtin_ia32_kandhi, - __builtin_ia32_kandnhi, __builtin_ia32_knothi, __builtin_ia32_korhi, - __builtin_ia32_kortestchi, __builtin_ia32_kortestzhi, - __builtin_ia32_kunpckhi, __builtin_ia32_kxnorhi, - __builtin_ia32_kxorhi, __builtin_ia32_addpd512_mask, - __builtin_ia32_addps512_mask, __builtin_ia32_addsd_mask, - __builtin_ia32_addss_mask, __builtin_ia32_cmppd512_mask, - __builtin_ia32_cmpps512_mask, __builtin_ia32_cmpsd_mask, - __builtin_ia32_cmpss_mask, __builtin_ia32_vcomisd, - __builtin_ia32_vcomiss, __builtin_ia32_cvtdq2ps512_mask, - __builtin_ia32_cvtpd2dq512_mask, __builtin_ia32_cvtpd2ps512_mask, - __builtin_ia32_cvtpd2udq512_mask, __builtin_ia32_vcvtph2ps512_mask, - __builtin_ia32_cvtps2dq512_mask, __builtin_ia32_cvtps2pd512_mask, - __builtin_ia32_cvtps2udq512_mask, __builtin_ia32_cvtsd2ss_mask, - __builtin_ia32_cvtsi2sd64, __builtin_ia32_cvtsi2ss32, - __builtin_ia32_cvtsi2ss64, __builtin_ia32_cvtss2sd_mask, - __builtin_ia32_cvttpd2dq512_mask, __builtin_ia32_cvttpd2udq512_mask, - __builtin_ia32_cvttps2dq512_mask, __builtin_ia32_cvttps2udq512_mask, - __builtin_ia32_cvtudq2ps512_mask, __builtin_ia32_cvtusi2sd64, - __builtin_ia32_cvtusi2ss32, __builtin_ia32_cvtusi2ss64, - __builtin_ia32_divpd512_mask, __builtin_ia32_divps512_mask, - __builtin_ia32_divsd_mask, __builtin_ia32_divss_mask, - __builtin_ia32_fixupimmpd512_mask, __builtin_ia32_fixupimmpd512_maskz, - __builtin_ia32_fixupimmps512_mask, __builtin_ia32_fixupimmps512_maskz, - __builtin_ia32_fixupimmsd_mask, __builtin_ia32_fixupimmsd_maskz, - __builtin_ia32_fixupimmss_mask, __builtin_ia32_fixupimmss_maskz, - __builtin_ia32_getexppd512_mask, __builtin_ia32_getexpps512_mask, - __builtin_ia32_getexpsd128_mask, __builtin_ia32_getexpss128_mask, - __builtin_ia32_getmantpd512_mask, __builtin_ia32_getmantps512_mask, - __builtin_ia32_getmantsd_mask, __builtin_ia32_getmantss_mask, - __builtin_ia32_maxpd512_mask, __builtin_ia32_maxps512_mask, - __builtin_ia32_maxsd_mask, __builtin_ia32_maxss_mask, - __builtin_ia32_minpd512_mask, __builtin_ia32_minps512_mask, - __builtin_ia32_minsd_mask, __builtin_ia32_minss_mask, - __builtin_ia32_mulpd512_mask, __builtin_ia32_mulps512_mask, - __builtin_ia32_mulsd_mask, __builtin_ia32_mulss_mask, - __builtin_ia32_rndscalepd_mask, __builtin_ia32_rndscaleps_mask, - __builtin_ia32_rndscalesd_mask, __builtin_ia32_rndscaless_mask, - __builtin_ia32_scalefpd512_mask, __builtin_ia32_scalefps512_mask, - __builtin_ia32_scalefsd_mask, __builtin_ia32_scalefss_mask, - __builtin_ia32_sqrtpd512_mask, __builtin_ia32_sqrtps512_mask, - __builtin_ia32_sqrtsd_mask, __builtin_ia32_sqrtss_mask, - __builtin_ia32_subpd512_mask, __builtin_ia32_subps512_mask, - __builtin_ia32_subsd_mask, __builtin_ia32_subss_mask, - __builtin_ia32_vcvtsd2si32, __builtin_ia32_vcvtsd2si64, - __builtin_ia32_vcvtsd2usi32, __builtin_ia32_vcvtsd2usi64, - __builtin_ia32_vcvtss2si32, __builtin_ia32_vcvtss2si64, - __builtin_ia32_vcvtss2usi32, __builtin_ia32_vcvtss2usi64, - __builtin_ia32_vcvttsd2si32, __builtin_ia32_vcvttsd2si64, - __builtin_ia32_vcvttsd2usi32, __builtin_ia32_vcvttsd2usi64, - __builtin_ia32_vcvttss2si32, __builtin_ia32_vcvttss2si64, - __builtin_ia32_vcvttss2usi32, __builtin_ia32_vcvttss2usi64, - __builtin_ia32_vfmaddpd512_mask, __builtin_ia32_vfmaddpd512_mask3, - __builtin_ia32_vfmaddpd512_maskz, __builtin_ia32_vfmaddps512_mask, - __builtin_ia32_vfmaddps512_mask3, __builtin_ia32_vfmaddps512_maskz, - __builtin_ia32_vfmaddsd3_mask, __builtin_ia32_vfmaddsd3_mask3, - __builtin_ia32_vfmaddsd3_maskz, __builtin_ia32_vfmaddss3_mask, - __builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz, - __builtin_ia32_vfmaddsubpd512_mask, - __builtin_ia32_vfmaddsubpd512_mask3, - __builtin_ia32_vfmaddsubpd512_maskz, - __builtin_ia32_vfmaddsubps512_mask, - __builtin_ia32_vfmaddsubps512_mask3, - __builtin_ia32_vfmaddsubps512_maskz, - __builtin_ia32_vfmsubaddpd512_mask3, - __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, - __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, - __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, - __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, - __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, - __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_exp2pd_mask, - __builtin_ia32_exp2ps_mask, __builtin_ia32_rcp28pd_mask, - __builtin_ia32_rcp28ps_mask, __builtin_ia32_rsqrt28pd_mask, - __builtin_ia32_rsqrt28ps_mask, __builtin_ia32_gathersiv16sf, - __builtin_ia32_gathersiv8df, __builtin_ia32_gatherdiv16sf, - __builtin_ia32_gatherdiv8df, __builtin_ia32_gathersiv16si, - __builtin_ia32_gathersiv8di, __builtin_ia32_gatherdiv16si, - __builtin_ia32_gatherdiv8di, __builtin_ia32_gatheraltsiv8df , - __builtin_ia32_gatheraltdiv8sf , __builtin_ia32_gatheraltsiv8di , - __builtin_ia32_gatheraltdiv8si , __builtin_ia32_scattersiv16sf, - __builtin_ia32_scattersiv8df, __builtin_ia32_scatterdiv16sf, - __builtin_ia32_scatterdiv8df, __builtin_ia32_scattersiv16si, - __builtin_ia32_scattersiv8di, __builtin_ia32_scatterdiv16si, - __builtin_ia32_scatterdiv8di, __builtin_ia32_gatherpfdps, - __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, - __builtin_ia32_scatterpfqps. - (ix86_init_mmx_sse_builtins): Handle builtins with AVX512 embeded - rounding, builtins for AVX512 gathers/scatters. - (ix86_expand_args_builtin): Handle new functions types, add warnings - for masked builtins. - (ix86_erase_embedded_rounding): Handle patterns with embedded rounding. - (ix86_expand_sse_comi_round): Ditto. - (ix86_expand_round_builtin): Ditto. - (ix86_expand_builtin): Handle AVX512's gathers/scatters and kortest{z}. - Call ix86_expand_round_builtin. - * config/i386/immintrin.h: Add avx512fintrin.h, avx512erintrin.h, - avx512pfintrin.h, avx512cdintrin.h. - -2013-12-31 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/i386.c (MAX_CLASSES): Increase number of classes. - (classify_argument): Extend for 512 bit vectors. - (construct_container): Ditto. - (function_arg_advance_32): Ditto. - (function_arg_advance_64): Ditto. - (function_arg_32): Ditto. - (function_arg_64): Ditto. - (function_value_32): Ditto. - (return_in_memory_32): Ditto. - (ix86_gimplify_va_arg): Ditto. - (standard_sse_constant_p): Ditto. - (standard_sse_constant_opcode): Ditto. - (ix86_expand_vector_convert_uns_vsivsf): Ditto. - (ix86_build_const_vector): Ditto. - (ix86_build_signbit_mask): Ditto. - (ix86_expand_sse_cmp): Extend for AVX512. - (ix86_expand_sse_movcc): Ditto. - (ix86_expand_int_vcond): Ditto. - (ix86_expand_vec_perm): Ditto. - (ix86_expand_sse_unpack): Ditto. - (ix86_constant_alignment): Ditto. - (ix86_builtin_vectorized_function): Ditto. - (ix86_vectorize_builtin_gather): Ditto. - (avx_vpermilp_parallel): Ditto. - (ix86_rtx_costs): Ditto. - (ix86_expand_vector_init_duplicate): Ditto. - (ix86_expand_vector_init_concat): Ditto. - (ix86_expand_vector_init_general): Ditto. - (ix86_expand_vector_extract): Ditto. - (emit_reduc_half): Ditto. - (ix86_vector_mode_supported_p): Ditto. - (ix86_emit_swdivsf): Ditto. - (ix86_emit_swsqrtsf): Ditto. - (expand_vec_perm_1): Ditto. - (ix86_vectorize_vec_perm_const_ok): Ditto. - (ix86_expand_mul_widen_evenodd): Ditto. - (ix86_expand_sse2_mulvxdi3): Ditto. - (ix86_preferred_simd_mode): Ditto. - (ix86_autovectorize_vector_sizes): Ditto. - (ix86_expand_vec_perm_vpermi2): New. - (ix86_vector_duplicate_value): Ditto. - (IX86_BUILTIN_SQRTPD512, IX86_BUILTIN_EXP2PS, IX86_BUILTIN_SQRTPS_NR512, - IX86_BUILTIN_GATHER3ALTDIV16SF, IX86_BUILTIN_GATHER3ALTDIV16SI, - IX86_BUILTIN_GATHER3ALTSIV8DF, IX86_BUILTIN_GATHER3ALTSIV8DI, - IX86_BUILTIN_GATHER3DIV16SF, IX86_BUILTIN_GATHER3DIV16SI, - IX86_BUILTIN_GATHER3DIV8DF, IX86_BUILTIN_GATHER3DIV8DI, - IX86_BUILTIN_GATHER3SIV16SF, IX86_BUILTIN_GATHER3SIV16SI, - IX86_BUILTIN_GATHER3SIV8DF, IX86_BUILTIN_CEILPD_VEC_PACK_SFIX512, - IX86_BUILTIN_CPYSGNPS512, IX86_BUILTIN_CPYSGNPD512, - IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX512, - IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX512): Ditto. - * config/i386/sse.md (*mov_internal): Disable SSE typeless - stores vectors > 128bit (AVX*). - (_storeu): Ditto. - (_storedqu): Extend for AVX-512, disable - SSE typeless stores vectors > 128bit (AVX*). - (fixuns_trunc2): Extend for AVX-512. - (vec_pack_ufix_trunc_): Ditto. - (vec_unpacku_float_hi_v16si): New. - * tree-vect-stmts.c (vectorizable_load): Support AVX512's gathers. - * tree-vectorizer.h (MAX_VECTORIZATION_FACTOR): Extend for 512 bit - vectors. - -2013-12-31 Chung-Lin Tang - Sandra Loosemore - Based on patches from Altera Corporation - - * config.gcc (nios2-*-*): Add nios2 config targets. - * configure.ac (TLS_SECTION_ASM_FLAG): Add nios2 case. - ("$cpu_type"): Add nios2 as new cpu type. - * configure: Regenerate. - * config/nios2/nios2.c: New file. - * config/nios2/nios2.h: New file. - * config/nios2/nios2-opts.h: New file. - * config/nios2/nios2-protos.h: New file. - * config/nios2/elf.h: New file. - * config/nios2/elf.opt: New file. - * config/nios2/linux.h: New file. - * config/nios2/nios2.opt: New file. - * config/nios2/nios2.md: New file. - * config/nios2/predicates.md: New file. - * config/nios2/constraints.md: New file. - * config/nios2/t-nios2: New file. - * common/config/nios2/nios2-common.c: New file. - * doc/invoke.texi (Nios II options): Document Nios II specific - options. - * doc/md.texi (Nios II family): Document Nios II specific - constraints. - * doc/extend.texi (Function Specific Option Pragmas): Document - Nios II supported target pragma functionality. - -2013-12-30 Jakub Jelinek - - PR tree-optimization/59591 - * tree-vect-stmts.c (vectorizable_mask_load_store): Fix up handling - of modifier = NARROW masked gathers. - (permute_vec_elements): Use gimple_get_lhs instead of - gimple_assign_lhs. - -2013-12-30 Nick Clifton - Peter Bigot - - PR target/59613 - * stor-layout.c (get_mode_bounds): Use GET_MODE_PRECISION instead - of GET_MODE_BITSIZE. - -2013-12-30 Nick Clifton - - * config/msp430/msp430.c (msp430_print_operand): Rename %B to %b - and %A to %Q. Add %A, %B, %C and %D as selectors for 16-bit parts - of a 64-bit operand. - * config/msp430/msp430.md: Replace uses of %B with %b and uses of - %A with %q. - -2013-12-30 Felix Yang - - * ira-costs.c (cost_classes_hasher::equal): Check equality of - memcmp and 0 if no difference exists for HV1 and HV2. - -2013-12-30 Jakub Jelinek - - PR target/59501 - * config/i386/i386.c (ix86_save_reg): Don't return true for drap_reg - if !crtl->stack_realign_needed. - (ix86_finalize_stack_realign_flags): If drap_reg isn't live on entry - and stack_realign_needed will be false, clear drap_reg and need_drap. - Optimize leaf functions that don't need stack frame even if - crtl->need_drap. - -2013-12-30 H.J. Lu - - PR target/59605 - * config/i386/i386.c (ix86_expand_set_or_movmem): Create - jump_around_label only if it doesn't exist. - -2013-12-28 Eric Botcazou - - * doc/invoke.texi (output file options): Document -fada-spec-parent. - -2013-12-27 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (avx512f_fixupimm_maskz): Extend to support - EVEX's RC. - (avx512f_sfixupimm_maskz): Ditto. - * config/i386/subst.md (round_saeonly_expand_name): New. - (round_saeonly_expand_nimm_predicate): Ditto. - (round_saeonly_expand_operand6): Ditto. - (round_saeonly_expand): Ditto. - -2013-12-27 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (avx512f_fmadd__maskz): Extend to support - EVEX's RC. - (avx512f_fmaddsub__maskz): Ditto. - * config/i386/subst.md (round_expand_name): New. - (round_expand_nimm_predicate): Ditto. - (round_expand_operand): Ditto. - (round_expand): Ditto. - -2013-12-27 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (3): Extend to support - EVEX's SAE mode. - (*3_finite): Ditto. - (*3): Ditto. - (avx512f_cmp3): Ditto. - (avx512f_vmcmp3): Ditto. - (avx512f_vmcmp3_mask): Ditto. - (_comi): Ditto. - (_ucomi): Ditto. - (sse_cvttss2si): Ditto. - (sse_cvttss2siq): Ditto. - (fix_truncv16sfv16si2): Ditto. - (avx512f_vcvttss2usi): Ditto. - (avx512f_vcvttss2usiq): Ditto. - (avx512f_vcvttsd2usi): Ditto. - (avx512f_vcvttsd2usiq): Ditto. - (sse2_cvttsd2si): Ditto. - (sse2_cvttsd2siq): Ditto. - (fix_truncv8dfv8si2): Ditto. - (_cvtps2pd): Ditto. - (avx512f_getexp): Ditto. - (avx512f_fixupimm): Ditto. - (avx512f_fixupimm_mask): Ditto. - (avx512f_sfixupimm): Ditto. - (avx512f_sfixupimm_mask): Ditto. - (avx512f_rndscale): Ditto. - (avx512f_vcvtph2ps512): Ditto. - (avx512f_getmant): Ditto. - * config/i386/subst.md (round_saeonly_name): New. - (round_saeonly_mask_operand2): Ditto. - (round_saeonly_mask_operand3): Ditto. - (round_saeonly_mask_scalar_operand3): Ditto. - (round_saeonly_mask_scalar_operand4): Ditto. - (round_saeonly_mask_scalar_merge_operand4): Ditto. - (round_saeonly_sd_mask_operand5): Ditto. - (round_saeonly_op2): Ditto. - (round_saeonly_op4): Ditto. - (round_saeonly_op5): Ditto. - (round_saeonly_op6): Ditto. - (round_saeonly_mask_op2): Ditto. - (round_saeonly_mask_op3): Ditto. - (round_saeonly_mask_scalar_op3): Ditto. - (round_saeonly_mask_scalar_op4): Ditto. - (round_saeonly_mask_scalar_merge_op4): Ditto. - (round_saeonly_sd_mask_op5): Ditto. - (round_saeonly_constraint): Ditto. - (round_saeonly_constraint2): Ditto. - (round_saeonly_nimm_predicate): Ditto. - (round_saeonly_mode512bit_condition): Ditto. - (round_saeonly): Ditto. - -2013-12-27 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/i386.c (ix86_print_operand): Print EVEX's RC modifiers. - * config/i386/i386.md (define_constants): Define EVEx's RC constants. - * gcc/config/i386/sse.md (3): Extend - to support EVEX's rounding control. - (*3): Ditto. - (mul3): Ditto. - (*mul3): Ditto. - (_div3): Ditto. - (_sqrt2): Ditto. - (fma_fmadd_): Ditto. - (avx512f_fmadd__mask): Ditto. - (avx512f_fmadd__mask3): Ditto. - (fma_fmsub_): Ditto. - (avx512f_fmsub__mask): Ditto. - (avx512f_fmsub__mask3): Ditto. - (fma_fnmadd_): Ditto. - (avx512f_fnmadd__mask): Ditto. - (avx512f_fnmadd__mask3): Ditto. - (fma_fnmsub_): Ditto. - (avx512f_fnmsub__mask): Ditto. - (avx512f_fnmsub__mask3): Ditto. - (fma_fmaddsub_): Ditto. - (avx512f_fmaddsub__mask): Ditto. - (avx512f_fmaddsub__mask3): Ditto. - (fma_fmsubadd_): Ditto. - (avx512f_fmsubadd__mask): Ditto. - (avx512f_fmsubadd__mask3): Ditto. - (fmai_vmfmadd_): Ditto. - (*fmai_fmadd_): Ditto. - (*fmai_fmsub_): Ditto. - (*fmai_fnmadd_): Ditto. - (*fmai_fnmsub_): Ditto. - (sse_cvtsi2ss): Ditto. - (sse_cvtsi2ssq): Ditto. - (sse_cvtss2si): Ditto. - (sse_cvtss2siq): Ditto. - (cvtusi232): Ditto. - (cvtusi264): Ditto. - (float2): Ditto. - (ufloatv16siv16sf2): Ditto. - (avx512f_fix_notruncv16sfv16si): Ditto. - (avx512f_ufix_notruncv16sfv16si): Ditto. - (sse2_cvtsi2sdq): Ditto. - (avx512f_vcvtss2usi): Ditto. - (avx512f_vcvtss2usiq): Ditto. - (avx512f_vcvtsd2usi): Ditto. - (avx512f_vcvtsd2usiq): Ditto. - (sse2_cvtsd2si): Ditto. - (sse2_cvtsd2siq): Ditto. - (avx512f_cvtpd2dq512): Ditto. - (avx512f_ufix_notruncv8dfv8si): Ditto. - (avx512f_cvtpd2ps512): Ditto. - (avx512f_scalef): Ditto. - (3): Ditto. - (*avx2_3): Ditto. - (avx512er_exp2avx512er_rcp28): Ditto. - (avx512er_rsqrt28): Ditto. - (avx512f_fmadd__maskz): New. - * config/i386/subst.md (SUBST_A): New. - (round_name): Ditto. - (round_mask_operand2): Ditto. - (round_mask_operand3): Ditto. - (round_mask_scalar_operand3): Ditto. - (round_sd_mask_operand4): Ditto. - (round_op2): Ditto. - (round_op3): Ditto. - (round_op4): Ditto. - (round_op5): Ditto. - (round_op6): Ditto. - (round_mask_op2): Ditto. - (round_mask_op3): Ditto. - (round_mask_scalar_op3): Ditto. - (round_sd_mask_op4): Ditto. - (round_constraint): Ditto. - (round_constraint2): Ditto. - (round_constraint3): Ditto. - (round_nimm_predicate): Ditto. - (round_mode512bit_condition): Ditto. - (round_modev4sf_condition): Ditto. - (round_codefor): Ditto. - (round_opnum): Ditto. - (round): Ditto. - -2013-12-26 H.J. Lu - - PR target/59588 - * config/i386/i386.c (ix86_option_override_internal): Don't - check generic tuning. Don't change i686 tuning. - -2013-12-26 H.J. Lu - - PR target/59601 - * config/i386/i386.c (get_builtin_code_for_version): Map - PROCESSOR_NEHALEM to "corei7". - -2013-12-26 Ganesh Gopalasubramanian - - * config/i386/i386.c (get_builtin_code_for_version): Rename AMD - CPU names M_AMD_BOBCAT to M_AMD_BTVER1 and M_AMD_JAGUAR - to M_AMD_BTVER2. - (processor_model): Likewise. - (arch_names_table): Likewise. - -2013-12-26 Uros Bizjak - - * config/i386/driver-i386.c (decode_caches_intel): Add missing entries. - -2013-12-25 H.J. Lu - - PR target/59587 - * config/i386/i386.c (struct ptt): Add a field for processor name. - (processor_target_table): Sync with processor_type. - Add processor names. - (cpu_names): Removed. - (ix86_option_override_internal): Default x_ix86_tune_string - to processor_target_table[TARGET_CPU_DEFAULT].name. - (ix86_function_specific_print): Assert arch and tune < PROCESSOR_max. - Use processor_target_table to print arch and tune names. - * config/i386/i386.h (TARGET_CPU_DEFAULT): Default to - PROCESSOR_GENERIC. - (target_cpu_default): Removed. - (processor_type): Reordered. - -2013-12-25 Allan Sandfeld Jensen - H.J. Lu - - PR target/59422 - * config/i386/i386.c (get_builtin_code_for_version): Handle - PROCESSOR_HASWELL, PROCESSOR_SILVERMONT, PROCESSOR_BTVER1, - PROCESSOR_BTVER2, PROCESSOR_BDVER3 and PROCESSOR_BDVER4. - Change priority of PROCESSOR_BDVER1 to P_PROC_XOP. - (fold_builtin_cpu): Add "ivybridge", "haswell", "bonnell", - "silvermont", "bobcat" and "jaguar" CPU names. Add "sse4a", - "fma4", "xop" and "fma" ISA names. - -2013-12-24 H.J. Lu - - * config/i386/i386.c (ix86_option_override_internal): Check - opts->x_ix86_arch_string instead of ix86_arch_string. - -2013-12-24 Renlin Li - - * config/arm/arm-protos.h (vfp_const_double_for_bits): Declare. - * config/arm/constraints.md (Dp): Define new constraint. - * config/arm/predicates.md (const_double_vcvt_power_of_two): Define - new predicate. - * config/arm/arm.c (arm_print_operand): Add print for new fucntion. - (vfp3_const_double_for_bits): New function. - * config/arm/vfp.md (combine_vcvtf2i): Define new instruction. - -2013-12-23 Hans-Peter Nilsson - - PR target/59203 - * config/cris/cris.c (cris_pic_symbol_type_of): Fix typo, - checking t1 twice instead of t1 and t2 respectively. - - PR middle-end/59584 - * config/cris/predicates.md (cris_nonsp_register_operand): - New define_predicate. - * config/cris/cris.md: Replace register_operand with - cris_nonsp_register_operand for destinations in all - define_splits where a register is set more than once. - -2013-12-23 Jason Merrill - - * gdbinit.in (input_line, input_filename): Define. - - * cgraph.h (struct cgraph_node): Add calls_comdat_local. - (symtab_comdat_local_p, symtab_in_same_comdat_p): New. - * cif-code.def: Add USES_COMDAT_LOCAL. - * symtab.c (verify_symtab_base): Make sure we don't refer to a - comdat-local symbol from outside its comdat. - * cgraph.c (verify_cgraph_node): Likewise. - * cgraphunit.c (mark_functions_to_output): Don't mark comdat-locals. - * ipa.c (symtab_remove_unreachable_nodes): Likewise. - (function_and_variable_visibility): Handle comdat-local fns. - * ipa-cp.c (determine_versionability): Don't clone comdat-locals. - * ipa-inline-analysis.c (compute_inline_parameters): Update - calls_comdat_local. - * ipa-inline-transform.c (inline_call): Likewise. - (save_inline_function_body): Don't clear DECL_COMDAT_GROUP. - * ipa-inline.c (can_inline_edge_p): Check calls_comdat_local. - * lto-cgraph.c (input_overwrite_node): Read calls_comdat_local. - (lto_output_node): Write it. - * symtab.c (symtab_dissolve_same_comdat_group_list): Clear - DECL_COMDAT_GROUP for comdat-locals. - -2013-12-23 H.J. Lu - - * config/i386/i386.c (processor_target_table): Move Bonnell and - Silvermont entries before generic. - -2013-12-23 Bingfeng Mei - - PR middle-end/59569 - * tree-vect-stmts.c (vectorizable_store): Skip permutation for - consant/external operand, and add a few missing \n. - -2013-12-23 H.J. Lu - Tocar Ilya - - * config/i386/core2.md: Replace corei7 with nehalem. - - * config/i386/driver-i386.c (host_detect_local_cpu): Use nehalem, - westmere, sandybridge, ivybridge, haswell, bonnell, silvermont - for cpu names. - - * config/i386/i386-c.c (ix86_target_macros_internal): Replace - PROCESSOR_COREI7, PROCESSOR_COREI7_AVX, PROCESSOR_ATOM, - PROCESSOR_SLM with PROCESSOR_NEHALEM, PROCESSOR_SANDYBRIDGE, - PROCESSOR_BONNELL, PROCESSOR_SILVERMONT. Define - __nehalem/__nehalem__, __sandybridge/__sandybridge__, - __haswell/__haswell__, __tune_nehalem__, __tune_sandybridge__, - __tune_haswell__, __bonnell/__bonnell__, - __silvermont/__silvermont__, __tune_bonnell__, - __tune_silvermont__. - - * config/i386/i386.c (m_COREI7): Renamed to ... - (m_NEHALEM): This. - (m_COREI7_AVX): Renamed to ... - (m_SANDYBRIDGE): This. - (m_ATOM): Renamed to ... - (m_BONNELL): This. - (m_SLM): Renamed to ... - (m_SILVERMONT): This. - (m_CORE_ALL): Updated. - (cpu_names): Add "nehalem", "westmere", "sandybridge", - "ivybridge", "haswell", "broadwell", "bonnell", "silvermont". - (PTA_CORE2): New. - (PTA_NEHALEM): Likewise. - (PTA_WESTMERE): Likewise. - (PTA_SANDYBRIDGE): Likewise. - (PTA_IVYBRIDGE): Likewise. - (PTA_HASWELL): Likewise. - (PTA_BROADWELL): Likewise. - (PTA_BONNELL): Likewise. - (PTA_SILVERMONT): Likewise. - (ix86_option_override_internal): Use new PTA_XXX. Add nehalem, - westmere, sandybridge, ivybridge, haswell, bonnell, silvermont. - (ix86_lea_outperforms): Updated. - (ix86_issue_rate): Likewise. - (ix86_adjust_cost): Likewise. - (ia32_multipass_dfa_lookahead): Likewise. - (do_reorder_for_imul): Likewise. - (swap_top_of_ready_list): Likewise. - (ix86_sched_reorder): Likewise. - (ix86_sched_init_global): Likewise. - (get_builtin_code_for_version): Likewise. - (processor_model): Replace M_INTEL_ATOM, M_INTEL_SLM with - M_INTEL_BONNELL, M_INTEL_SILVERMONT. - (arch_names_table): Updated. - - * config/i386/i386.h (TARGET_COREI7): Removed. - (TARGET_COREI7_AVX): Likewise. - (TARGET_ATOM): Likewise. - (TARGET_SLM): Likewise. - (TARGET_NEHALEM): New. - (TARGET_SANDYBRIDGE): Likewise. - (TARGET_BONNELL): Likewise. - (TARGET_SILVERMONT): Likewise. - (target_cpu_default): Add TARGET_CPU_DEFAULT_core_avx2, - TARGET_CPU_DEFAULT_nehalem, TARGET_CPU_DEFAULT_westmere, - TARGET_CPU_DEFAULT_sandybridge, TARGET_CPU_DEFAULT_ivybridge, - TARGET_CPU_DEFAULT_broadwell, TARGET_CPU_DEFAULT_bonnell, - TARGET_CPU_DEFAULT_silvermont. Move TARGET_CPU_DEFAULT_haswell - before TARGET_CPU_DEFAULT_broadwell. - (processor_type): Replace PROCESSOR_COREI7, PROCESSOR_COREI7_AVX, - PROCESSOR_ATOM, PROCESSOR_SLM with PROCESSOR_NEHALEM, - PROCESSOR_SANDYBRIDGE, PROCESSOR_BONNELL, PROCESSOR_SILVERMONT. - - * config/i386/i386.md (cpu): Replace corei7 with nehalem. - - * config/i386/x86-tune.def: Updated. - - * doc/invoke.texi: Replace corei7, corei7-avx, core-avx-i, - core-avx2, atom, slm with nehalem, sandybridge, ivybridge, - haswell, bonnel, silvermont. Add westmere. - -2013-12-23 Andrey Belevantsev - - PR rtl-optimization/57422 - * sel-sched.c (fill_vec_av_set): Assert that the fence insn - can always be scheduled in its current form. - -2013-12-23 Andrey Belevantsev - - PR rtl-optimization/57422 - * sel-sched.c (mark_unavailable_hard_regs): Fix typo when calling - add_to_hard_reg_set. - -2013-12-20 Sharad Singhai - - * Makefile.in: Add optinfo.texi. - * doc/invoke.texi: Fix typo. - * doc/optinfo.texi: New documentation for optimization info. - * doc/passes.texi: Add new node. - -2013-12-20 Trevor saunders - - * vec.h (stack_vec): Convert to a templaate specialization of - auto_vec. - * config/i386/i386.c, df-scan.c, function.c, genautomata.c, - gimplify.c, graphite-clast-to-gimple.c, graphite-dependences.c, - graphite-scop-detection.c, graphite-sese-to-poly.c, hw-doloop.c, - trans-mem.c, tree-call-cdce.c, tree-data-ref.c, tree-dfa.c, - tree-if-conv.c, tree-inline.c, tree-loop-distribution.c, - tree-parloops.c, tree-predcom.c, tree-ssa-alias.c, - tree-ssa-loop-ivcanon.c, tree-ssa-phiopt.c, tree-ssa-threadedge.c, - tree-ssa-uncprop.c, tree-vect-loop.c, tree-vect-patterns.c, - tree-vect-slp.c, tree-vect-stmts.c, var-tracking.c: Adjust. - -2013-12-20 Eric Botcazou - - * config/arm/arm.c (arm_expand_prologue): In a nested APCS frame with - arguments to push onto the stack and no varargs, save ip into the last - stack slot if r3 isn't available on entry. - -2013-12-20 Kyrylo Tkachov - - * config/arm/neon.ml (crypto_intrinsics): Add vceq_64 and vtst_p64. - * config/arm/arm_neon.h: Regenerate. - * config/arm/neon-docgen.ml: Add vceq_p64 and vtst_p64. - * doc/arm-neon-intrinsics.texi: Regenerate. - -2013-12-20 Vladimir Makarov - - * config/arm/arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Return - NO_REGS for LRA. - -2013-12-20 Kyrylo Tkachov - - * config/arm/arm_acle.h: Add underscores before variables. - -2013-12-20 Bingfeng Mei - - PR tree-optimization/59544 - * tree-vect-stmts.c (perm_mask_for_reverse): Move before - vectorizable_store. - (vectorizable_store): Handle negative step. - -2013-12-20 Tocar Ilya - - * config.gcc: Support march=broadwell. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect Broadwell. - * config/i386/i386.c (ix86_option_override_internal): Add broadwell. - * doc/invoke.texi: Document march=broadwell. - -2013-12-20 Jakub Jelinek - - * ubsan.c: Include tree-ssanames.h, asan.h and gimplify-me.h. - (ubsan_type_descriptor): Handle BOOLEAN_TYPE and ENUMERAL_TYPE - like INTEGER_TYPE. - (instrument_bool_enum_load): New function. - (ubsan_pass): Call it. - (gate_ubsan): Also enable for SANITIZE_BOOL or SANITIZE_ENUM. - * asan.c (create_cond_insert_point): No longer static. - * asan.h (create_cond_insert_point): Declare. - * sanitizer.def (BUILT_IN_UBSAN_HANDLE_LOAD_INVALID_VALUE): New - built-in. - * opts.c (common_handle_option): Handle -fsanitize=bool and - -fsanitize=enum. - * builtins.c (fold_builtin_memory_op): When sanitizing bool - and enum loads, don't use enum or bool types for memcpy folding. - * flag-types.h (SANITIZE_BOOL, SANITIZE_ENUM): New. - (SANITIZE_UNDEFINED): Or these in. - -2013-12-20 Chung-Ju Wu - - * config/nds32/nds32.h (NDS32_MODE_TYPE_ALIGN): New macro. - (NDS32_AVAILABLE_REGNUM_FOR_ARG): Use more accurate alignment checking - to determine available register number. - * config/nds32/nds32.c (nds32_needs_double_word_align): Use new - macro NDS32_MODE_TYPE_ALIGN. - (nds32_function_arg): Refine code layout. - -2013-12-19 Jeff Law - - * doc/invoke.texi: (dump-rtl-ree): Fix typo and clarify ree - handles both zero and sign extension. - -2013-12-19 Teresa Johnson - - PR gcov-profile/59542 - * bb-reorder.c (duplicate_computed_gotos): Invoke fixup_partitions - if we have made any changes. - -2013-12-19 Jakub Jelinek - - PR other/59545 - * genattrtab.c (struct attr_hash): Change hashcode type to unsigned. - (attr_hash_add_rtx, attr_hash_add_string): Change hashcode parameter - to unsigned. - (attr_rtx_1): Change hashcode variable to unsigned. - (attr_string): Likewise. Perform first multiplication in - unsigned type. - * ifcvt.c (noce_try_store_flag_constants): Avoid signed integer - overflows. - * double-int.c (neg_double): Likewise. - * stor-layout.c (set_min_and_max_values_for_integral_type): Likewise. - * combine.c (force_to_mode): Likewise. - * postreload.c (move2add_use_add2_insn, move2add_use_add3_insn, - reload_cse_move2add, move2add_note_store): Likewise. - * simplify-rtx.c (simplify_const_unary_operation, - simplify_const_binary_operation): Likewise. - * ipa-split.c (find_split_points): Initialize first.can_split - and first.non_ssa_vars. - * gengtype-state.c (read_state_files_list): Fix up check. - * genautomata.c (reserv_sets_hash_value): Use portable rotation idiom. - -2013-12-19 Kyrylo Tkachov - - * config/arm/neon-docgen.ml: Add crypto intrinsics documentation. - * doc/arm-neon-intrinsics.texi: Regenerate. - -2013-12-19 Kyrylo Tkachov - - * config/arm/neon-testgen.ml (effective_target): Handle "CRYPTO". - -2013-12-19 Kyrylo Tkachov - - * config/arm/arm.c (enum arm_builtins): Add crypto builtins. - (arm_init_neon_builtins): Handle crypto builtins. - (bdesc_2arg): Likewise. - (bdesc_1arg): Likewise. - (bdesc_3arg): New table. - (arm_expand_ternop_builtin): New function. - (arm_expand_unop_builtin): Handle sha1h explicitly. - (arm_expand_builtin): Handle ternary builtins. - * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): - Define __ARM_FEATURE_CRYPTO. - * config/arm/arm.md: Include crypto.md. - (is_neon_type): Add crypto types. - * config/arm/arm_neon_builtins.def: Add TImode reinterprets. - * config/arm/crypto.def: New. - * config/arm/crypto.md: Likewise. - * config/arm/iterators.md (CRYPTO_UNARY): New int iterator. - (CRYPTO_BINARY): Likewise. - (CRYPTO_TERNARY): Likewise. - (CRYPTO_SELECTING): Likewise. - (crypto_pattern): New int attribute. - (crypto_size_sfx): Likewise. - (crypto_mode): Likewise. - (crypto_type): Likewise. - * config/arm/neon-gen.ml: Handle poly64_t and poly128_t types. - Handle crypto intrinsics. - * config/arm/neon.ml: Add support for poly64 and polt128 types - and intrinsics. Define crypto intrinsics. - * config/arm/neon.md (neon_vreinterpretti): New pattern. - (neon_vreinterpretv16qi): Use VQXMOV mode iterator. - (neon_vreinterpretv8hi): Likewise. - (neon_vreinterpretv4si): Likewise. - (neon_vreinterpretv4sf): Likewise. - (neon_vreinterpretv2di): Likewise. - * config/arm/unspecs.md (UNSPEC_AESD, UNSPEC_AESE, UNSPEC_AESIMC) - (UNSPEC_AESMC, UNSPEC_SHA1C, UNSPEC_SHA1M, UNSPEC_SHA1P, UNSPEC_SHA1H) - (UNSPEC_SHA1SU0, UNSPEC_SHA1SU1, UNSPEC_SHA256H, UNSPEC_SHA256H2) - (UNSPEC_SHA256SU0, UNSPEC_SHA256SU1, VMULLP64): Define. - * config/arm/arm_neon.h: Regenerate. - -2013-12-19 H.J. Lu - - PR driver/59321 - * collect2.c (main): Check -fuse-ld=[bfd|gold] when - DEFAULT_LINKER is defined. - * common.opt (fuse-ld=bfd): Add Driver. - (fuse-ld=gold): Likewise. - * gcc.c (use_ld): New variable. - (driver_handle_option): Set use_ld for OPT_fuse_ld_bfd and - OPT_fuse_ld_gold. - (main): Check -fuse-ld=[bfd|gold] for -print-prog-name=ld. - -2013-12-19 Kyrylo Tkachov - - * Makefile.in (TEXI_GCC_FILES): Add arm-acle-intrinsics.texi. - * config.gcc (extra_headers): Add arm_acle.h. - * config/arm/arm.c (FL_CRC32): Define. - (arm_have_crc): Likewise. - (arm_option_override): Set arm_have_crc. - (arm_builtins): Add CRC32 builtins. - (bdesc_2arg): Likewise. - (arm_init_crc32_builtins): New function. - (arm_init_builtins): Initialise CRC32 builtins. - (arm_file_start): Handle architecture extensions. - * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define - __ARM_FEATURE_CRC32. Define __ARM_32BIT_STATE. - (TARGET_CRC32): Define. - * config/arm/arm-arches.def: Add armv8-a+crc. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm.md (type): Add crc. - (): New insn. - * config/arm/arm_acle.h: New file. - * config/arm/iterators.md (CRC): New int iterator. - (crc_variant, crc_mode): New int attributes. - * confg/arm/unspecs.md (UNSPEC_CRC32B, UNSPEC_CRC32H, UNSPEC_CRC32W, - UNSPEC_CRC32CB, UNSPEC_CRC32CH, UNSPEC_CRC32CW): New unspecs. - * doc/invoke.texi: Document -march=armv8-a+crc option. - * doc/extend.texi: Document ACLE intrinsics. - -2013-12-19 Charles Baylis - - PR target/59142 - * config/arm/arm-ldmstm.ml: Use low_register_operand for Thumb - patterns. - * config/arm/ldmstm.md: Regenerate. - -2013-12-19 Charles Baylis - - PR target/59142 - * config/arm/predicates.md (arm_hard_general_register_operand): - New predicate. - (arm_hard_register_operand): Remove. - * config/arm/arm-ldmstm.ml: Use arm_hard_general_register_operand - for all patterns. - * config/arm/ldmstm.md: Regenerate. - -2013-12-19 Charles Baylis - - PR target/59142 - * config/arm/predicates.md (vfp_hard_register_operand): New predicate. - * config/arm/arm.md (vfp_pop_multiple_with_writeback): Use - vfp_hard_register_operand. - -2013-12-19 Tejas Belagod - - * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins): - Define builtin types for poly64_t poly128_t. - (TYPES_BINOPP, aarch64_types_binopp_qualifiers): New. - * aarch64/aarch64-simd-builtins.def: Update builtins table. - * config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi, - aarch64_crypto_pmullv2di): New. - * config/aarch64/aarch64.c (aarch64_simd_mangle_map): Update table for - poly64x2_t mangler. - * config/aarch64/arm_neon.h (poly64x2_t, poly64_t, poly128_t): Define. - (vmull_p64, vmull_high_p64): New. - * config/aarch64/iterators.md (UNSPEC_PMULL<2>): New. - -2013-12-19 Tejas Belagod - - * config/aarch64/aarch64-simd-builtins.def: Update builtins table. - * config/aarch64/aarch64-simd.md - (aarch64_crypto_sha256hv4si, aarch64_crypto_sha256su0v4si, - aarch64_crypto_sha256su1v4si): New. - * config/aarch64/arm_neon.h (vsha256hq_u32, vsha256h2q_u32, - vsha256su0q_u32, vsha256su1q_u32): New. - * config/aarch64/iterators.md (UNSPEC_SHA256H<2>, UNSPEC_SHA256SU<01>): - New. - (CRYPTO_SHA256): New int iterator. - (sha256_op): New int attribute. - -2013-12-19 Tejas Belagod - - * config/aarch64/aarch64-simd-builtins.def: Update builtins table. - * config/aarch64/aarch64-builtins.c (aarch64_types_ternopu_qualifiers, - TYPES_TERNOPU): New. - * config/aarch64/aarch64-simd.md (aarch64_crypto_sha1hsi, - aarch64_crypto_sha1su1v4si, aarch64_crypto_sha1v4si, - aarch64_crypto_sha1su0v4si): New. - * config/aarch64/arm_neon.h (vsha1cq_u32, sha1mq_u32, vsha1pq_u32, - vsha1h_u32, vsha1su0q_u32, vsha1su1q_u32): New. - * config/aarch64/iterators.md (UNSPEC_SHA1, UNSPEC_SHA1SU<01>): - New. - (CRYPTO_SHA1): New int iterator. - (sha1_op): New int attribute. - -2013-12-19 Tejas Belagod - - * config/aarch64/aarch64-simd-builtins.def: Update builtins table. - * config/aarch64/aarch64-builtins.c (aarch64_types_binopu_qualifiers, - TYPES_BINOPU): New. - * config/aarch64/aarch64-simd.md (aarch64_crypto_aesv16qi, - aarch64_crypto_aesv16qi): New. - * config/aarch64/arm_neon.h (vaeseq_u8, vaesdq_u8, vaesmcq_u8, - vaesimcq_u8): New. - * config/aarch64/iterators.md (UNSPEC_AESE, UNSPEC_AESD, UNSPEC_AESMC, - UNSPEC_AESIMC): New. - (CRYPTO_AES, CRYPTO_AESMC): New int iterators. - (aes_op, aesmc_op): New int attributes. - -2013-12-19 Tejas Belagod - - * config/arm/types.md (neon_mul_d_long, crypto_aes, crypto_sha1_xor, - crypto_sha1_fast, crypto_sha1_slow, crypto_sha256_fast, - crypto_sha256_slow): New. - -2013-12-19 Tejas Belagod - - * config/aarch64/aarch64.h (TARGET_CRYPTO): New. - (__ARM_FEATURE_CRYPTO): Define if TARGET_CRYPTO is true. - -2013-12-19 Dominik Vogt - Andreas Krebbel - - * config/s390/s390.c (s390_hotpatch_trampoline_halfwords_default): New - constant. - (s390_hotpatch_trampoline_halfwords_max): New constant. - (s390_hotpatch_trampoline_halfwords): New static variable. - (get_hotpatch_attribute): New function. - (s390_handle_hotpatch_attribute): New function. - (s390_attribute_table): New target specific attribute table to - implement the hotpatch attribute. - (s390_option_override): Parse hotpatch options. - (s390_function_num_hotpatch_trampoline_halfwords): New function. - (s390_can_inline_p): Implement target hook to - suppress hotpatching for explicitly inlined functions. - (s390_asm_output_function_label): Generate hotpatch prologue. - (TARGET_ATTRIBUTE_TABLE): Define to implement target attribute table. - (TARGET_CAN_INLINE_P): Define to implement target hook. - * config/s390/s390.opt (mhotpatch): New options -mhotpatch, - -mhotpatch=. - * config/s390/s390-protos.h (s390_asm_output_function_label): Add - prototype. - * config/s390/s390.h (ASM_OUTPUT_FUNCTION_LABEL): Target specific - function label generation for hotpatching. - (FUNCTION_BOUNDARY): Align functions to eight bytes. - * doc/extend.texi: Document hotpatch attribute. - * doc/invoke.texi: Document -mhotpatch option. - -2013-12-19 Ganesh Gopalasubramanian - - * config/i386/i386.c: Include cfgloop.h. - (ix86_loop_memcount): New function. - (ix86_loop_unroll_adjust): New function. - (TARGET_LOOP_UNROLL_ADJUST): Define. - * config/i386/i386.h - (TARGET_ADJUST_UNROLL): Define. - * config/i386/x86-tune.def - (X86_TUNE_ADJUST_UNROLL): Define. - -2013-12-19 Marek Polacek - - * config/i386/i386.c (ix86_parse_stringop_strategy_string): Remove - variable alg. Use index variable i directly. - -2013-12-19 Eric Botcazou - - * print-tree.c (print_node) : Print no_force_blk_flag - for all types. - -2013-12-19 Monk Chiang - - * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): - Consider TARGET_CPU_DEFAULT settings. - -2013-12-18 James Greenhalgh - - * config/aarch64/aarch64-cores.def: Add support for - -mcpu=cortex-a57.cortex-a53. - * config/aarch64/aarch64-tune.md: Regenerate. - * doc/invoke.texi: Document -mcpu=cortex-a57.cortex-a53. - -2013-12-18 James Greenhalgh - - * config/aarch64/aarch64-cores.def: Add new column for SCHEDULER_IDENT. - * config/aarch64/aarch64-opts.h (AARCH64_CORE): Handle SCHEDULER_IDENT. - * config/aarch64/aarch64.c (AARCH64_CORE): Handle SCHEDULER_IDENT. - (aarch64_parse_cpu): mcpu implies a default value for mtune. - * config/aarch64/aarch64.h (AARCH64_CORE): Handle SCHEDULER_IDENT. - -2013-12-18 James Greenhalgh - - * common/config/aarch64/aarch64-common.c - (aarch64_rewrite_selected_cpu): New. - (aarch64_rewrite_mcpu): New. - * config/aarch64/aarch64-protos.h - (aarch64_rewrite_selected_cpu): New. - * config/aarch64/aarch64.h (BIG_LITTLE_SPEC): New. - (BIG_LITTLE_SPEC_FUNCTIONS): Likewise. - (ASM_CPU_SPEC): Likewise. - (EXTRA_SPEC_FUNCTIONS): Likewise. - (EXTRA_SPECS): Likewise. - (ASM_SPEC): Likewise. - * config/aarch64/aarch64.c (aarch64_start_file): Rewrite target - CPU name. - -2013-12-18 Balaji V. Iyer - - * omp-low.c (simd_clone_clauses_extract): Replaced the string - "cilk simd elemental" with "cilk simd function." - * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): - Removed a carriage-return from a warning string. - -2013-12-18 Aldy Hernandez - - * passes.c (execute_function_dump): Set graph_dump_initialized - appropriately. - (pass_init_dump_file): Similarly. - (execute_one_pass): Pass new argument to do_per_function. - * tree-pass.h (class opt_pass): New field graph_dump_initialized. - -2013-12-18 Aldy Hernandez - - * doc/tree-ssa.texi (SSA Operands): Remove reference to - SSA_OP_VMAYUSE. - Synchronize SSA_OP* definitions with source. - * ssa-iterators.h: Fix comment for FOR_EACH_IMM_USE_STMT. - Add not to SSA_OP* macro definitions. - -2013-12-18 Jakub Jelinek - - PR target/59539 - * config/i386/sse.md - (_loadu, - _loaddqu): New expanders, - prefix existing define_insn names with *. - -2013-12-18 Eric Botcazou - - * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Fix thinko. - -2013-12-18 James Greenhalgh - Kyrylo Tkachov - - * config/arm/t-aprofile: Add cortex-a15.cortex-a7, cortex-a12, - cortex-a57, cortex-a57.cortex-a53. - -2013-12-18 Eric Botcazou - - PR debug/59418 - * dwarf2cfi.c (dwarf2out_frame_debug_cfa_offset): Fix comment and tidy. - (dwarf2out_frame_debug_cfa_restore): Handle TARGET_DWARF_REGISTER_SPAN. - (dwarf2out_frame_debug_expr): Tidy. - -2013-12-18 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (*fma_fmadd_): Extend to support masking. - (*fma_fmsub_): Ditto. - (*fma_fnmadd_): Ditto. - (*fma_fnmsub_): Ditto. - (*fma_fmaddsub_): Ditto. - (*fma_fmsubadd_): Ditto. - (avx512f_vternlog): Ditto. - (avx512f_fixupimm): Ditto. - (avx512f_sfixupimm): Ditto. - (avx512f_vpermi2var3): Ditto. - (avx512f_vpermt2var3): Ditto. - (avx512f_fmaddsub__maskz): New. - (avx512f_vternlog_maskz): Ditto. - (avx512f_fixupimm_maskz): Ditto. - (avx512f_sfixupimm_maskz): Ditto. - (avx512f_vpermi2var3_maskz): Ditto. - (avx512f_vpermt2var3_maskz): Ditto. - (avx512f_expand_maskz): Ditto. - * config/i386/subst.md (sd_maskz_name): Ditto. - (sd_mask_op4): Ditto. - (sd_mask_op5): Ditto. - (sd_mask_codefor): Ditto. - (sd_mask_mode512bit_condition): Ditto. - (sd): Ditto. - -2013-12-18 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (avx512f_cmp3): Extend to support masking. - (avx512f_ucmp3): Ditto. - (avx512f_eq3): Ditto. - (avx512f_gt3): Ditto. - (avx512f_testm3): Ditto. - (avx512f_testnm3): Ditto. - * config/i386/subst.md (SUBST_S): New. - (mask_scalar_merge_name): Ditto. - (mask_scalar_merge_operand3): Ditto. - (mask_scalar_merge_operand4): Ditto. - (mask_scalar_merge): Ditto. - -2013-12-17 Jan Hubicka - - PR middle-end/35545 - * gimple-fold.c (fold_gimple_assign): Attempt to devirtualize - OBJ_TYPE_REF. - (gimple_fold_stmt_to_constant_1): Bypass OBJ_TYPE_REF wrappers. - -2013-12-17 Jan Hubicka - - PR middle-end/35545 - * tree-vrp.c (extract_range_from_unary_expr_1): Handle OBJ_TYPE_REF. - -2013-12-17 Teresa Johnson - - PR gcov-profile/59527 - * cfgrtl.c (fixup_reorder_chain): Handle a region-crossing - branch, which can't be eliminated. - -2013-12-18 Martin Liska - Jan Hubicka - - * cgraphunit.c (node_cmp): New function. - (expand_all_functions): Function ordering added. - * common.opt: New profile based function reordering flag introduced. - * lto-partition.c: Support for time profile added. - * lto.c: Likewise. - * predict.c (handle_missing_profiles): Time profile handled in - missing profiles. - -2013-12-17 Jakub Jelinek - - PR tree-optimization/59523 - * tree-vectorizer.c (fold_loop_vectorized_call): Call update_stmt - on updated stmts. - -2013-12-17 Aldy Hernandez - - * ipa-inline.c (gate_ipa_inline): Remove. - (const pass_data pass_data_ipa_inline): Unset has_gate. - (class pass_ipa_inline): Remove gate() method. - -2013-12-17 Jan Hubicka - - * ipa-devirt.c (get_polymorphic_call_info): Fix offset calculatoin - in contains_type_p query. - -2013-12-17 Thomas Schwinge - - * omp-low.c (tmp_ompfn_id_num): Remove leftover variable definition. - - * tree-pass.h (make_pass_expand_omp_ssa): Remove leftover function - declaration. - - * omp-low.c: Remove leftover comment. - - * omp-low.c (check_combined_parallel): Reflect reality in comment. - - * doc/cfg.texi (Control Flow): Refer to passes.def instead of passes.c. - * doc/passes.texi (Pass manager): Refer to passes.def. - - * doc/gccint.texi (Top): Fix inclusion order. - -2013-12-17 Kyrylo Tkachov - - * config/arm/arm-cores.def (cortex-a12): Use cortexa15 scheduling. - * config/arm/arm.c (arm_issue_rate): Handle cortexa12. - * config/arm/arm.md (generic_vfp): Remove cortexa12. - -2013-12-17 James Greenhalgh - - * config/arm/arm-cores.def (cortex-a57.cortex-a53): New. - * doc/invoke.texi: Document -mcpu=cortex-a57.cortex-a53. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Regenerate. - * config/arm/bpabi.h - (BE8_LINK_SPEC): Handle -mcpu=cortex-a57.cortex-a53. - -2013-12-17 James Greenhalgh - - * config/arm/arm-cores.def (cortex-a57): New. - * doc/invoke.texi: Document -mcpu=cortex-a57. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Regenerate. - * config/arm/bpabi.h (BE8_LINK_SPEC): Handle -mcpu=cortex-a57. - -2013-12-17 James Greenhalgh - - * config/arm/arm-cores.def (cortex-a15.cortex-a7): New. - * doc/invoke.texi: Document -mcpu=cortex-a15.cortex-a7. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Regenerate. - * config/arm/bpabi.h - (BE8_LINK_SPEC): Handle -mcpu=cortex-a5.cortex-a7. - -2013-12-17 James Greenhalgh - - * config/arm/arm-cores.def: Add new column for TUNE_IDENT. - * config/arm/genopt.sh: Improve layout. - * config/arm/arm-tune.md: Regenerate. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-opts.h (ARM_CORE): Modify macro for TUNE_IDENT. - * config/arm/arm.c (ARM_CORE): Modify macro for TUNE_IDENT. - (arm_option_override): When a CPU is chosen, that should also - form the tune target. - * config/arm/arm.h (ARM_CORE): Modify macro for TUNE_IDENT. - -2013-12-17 James Greenhalgh - - * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): New. - (arm_rewrite_mcpu): Likewise. - * config/arm/arm-protos.h (arm_rewrite_selected_cpu): New. - * config/arm/arm.h (BIG_LITTLE_SPEC): New. - (BIG_LITTLE_SPEC_FUNCTIONS): Likewise. - (EXTRA_SPEC_FUNCTIONS): Include BIG_LITTLE_SPEC_FUNCTIONS. - (ASM_CPU_SPEC): Include BIG_LITTLE_SPEC. - * config/arm/arm.c (arm_file_start): Rewrite arm_selecetd_cpu values. - -2013-12-17 Eric Botcazou - - * expmed.c (lowpart_bit_field_p): Fix comment. - (store_bit_field_using_insv): Fix formatting. - (store_bit_field): Likewise. - (store_fixed_bit_field): More declaration and remove return. - (store_fixed_bit_field_1): Fix formatting. - (extract_fixed_bit_field): Move declaration. - (extract_fixed_bit_field_1): Simplify. - -2013-12-17 Jan Hubicka - - * ipa-utils.h (possible_polymorphic_call_targets): Determine - context of the call. - * gimple-fold.c (gimple_fold_call): Use ipa-devirt to devirtualize. - -2013-12-17 Jakub Jelinek - - * expr.c (convert_modes): For SUBREG_PROMOTED_VAR_P use SUBREG_REG (x) - instead of x as last gen_lowpart argument. - -2013-12-16 Jakub Jelinek - - * predict.h (PROB_LIKELY): Fix the value. - * internal-fn.c (ubsan_expand_si_overflow_mul_check): Add support - for overflow checking for modes without 2xwider supported mode, - if the mode has 2xnarrower mode. - - * internal-fn.c: Include stringpool.h and tree-ssanames.h. - (ubsan_expand_si_overflow_addsub_check): In the generic expansion, - try to improve generated code if one of the arguments is constant - or get_range_info says that one of the argument is always - negative or always non-negative. - * tree-vrp.c (simplify_internal_call_using_ranges): New function. - (simplify_stmt_using_ranges): Call it. - -2013-12-16 Vladimir Makarov - - PR rtl-optimization/59466 - * emit-rtl.c (change_address_1): Don't validate address for LRA. - * recog.c (general_operand): Accept any memory for LRA. - * lra.c (lra_set_insn_recog_data): Add an assert. - -2013-12-16 Kyrylo Tkachov - - * config/arm/driver-arm.c (arm_cpu_table): Add cortex-a12 entry. - -2013-12-14 Jan Hubicka - Markus Trippelsdorf - - PR ipa/59265 - * ipa-profile.c (ipa_profile_generate_summary): Do not ICE when - call is already devirtualized. - -2013-12-16 Jakub Jelinek - - * Makefile.in (version.o): Restore dependencies on - $(REVISION), $(DATESTAMP), $(BASEVER) and $(DEVPHASE). - -2013-12-14 Jan Hubicka - - PR ipa/59473 - * ipa-devirt.c (get_class_context): Do not ICE when type is found - at wrong offset. - -2013-12-16 Jakub Jelinek - - PR libgomp/58756 - * omp-low.c (lower_rec_input_clauses) : For - reductions without placeholder if is_simd, but when not using - GOMP_SIMD* internal calls, also perform the reduction operation - on the outer var rather than simple assignment. - -2013-12-16 Jakub Jelinek - - PR middle-end/58956 - PR middle-end/59470 - * gimple-walk.h (walk_stmt_load_store_addr_fn): New typedef. - (walk_stmt_load_store_addr_ops, walk_stmt_load_store_ops): Use it - for callback params. - * gimple-walk.c (walk_stmt_load_store_ops): Likewise. - (walk_stmt_load_store_addr_ops): Likewise. Adjust all callback - calls to supply the gimple operand containing the base tree - as an extra argument. - * tree-ssa-ter.c: Include gimple-walk.h. - (find_ssaname, find_ssaname_in_store): New helper functions. - (find_replaceable_in_bb): For calls or GIMPLE_ASM, only set - same_root_var if USE is used somewhere in the stores of the stmt. - * ipa-prop.c (visit_ref_for_mod_analysis): Remove name of the stmt - argument and ATTRIBUTE_UNUSED, add another unnamed tree argument. - * ipa-pure-const.c (check_load, check_store, check_ipa_load, - check_ipa_store): Likewise. - * gimple.c (gimple_ior_addresses_taken_1, check_loadstore): Likewise. - * ipa-split.c (test_nonssa_use, mark_nonssa_use): Likewise. - (verify_non_ssa_vars, visit_bb): Adjust their callers. - * cfgexpand.c (add_scope_conflicts_1): Use - walk_stmt_load_store_addr_fn type for visit variable. - (visit_op, visit_conflict): Remove name of the stmt - argument and ATTRIBUTE_UNUSED, add another unnamed tree argument. - * tree-sra.c (asm_visit_addr): Likewise. Remove name of the data - argument and ATTRIBUTE_UNUSED. - * cgraphbuild.c (mark_address, mark_load, mark_store): Add another - unnamed tree argument. - * gimple-ssa-isolate-paths.c (check_loadstore): Likewise. Remove - ATTRIBUTE_UNUSED from stmt parameter. - -2013-12-16 Chung-Lin Tang - - * opts-common.c (integral_argument): Add support for - hexadecimal command option integer arguments. Update comments. - -2013-12-14 Jan Hubicka - - PR ipa/59265 - * ipa-prop.c (ipa_analyze_call_uses): Skip already - devirtualized calls. - -2013-12-14 Jan Hubicka - - PR middle-end/58477 - * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Skip clobbers. - -2013-12-14 Jan Hubicka - - PR middle-end/58477 - * cgraphclones.c (cgraph_clone_edge): Do not resolve speculative edges. - -2013-12-14 H.J. Lu - - PR target/59492 - * config/i386/i386.c (ix86_function_specific_restore): Don't - change -fPIC. - -2013-12-14 Eric Botcazou - - * var-tracking.c (add_stores): Fix oversight in latest commit. - -2013-12-14 Marek Polacek - - PR sanitizer/59503 - * internal-fn.c (ubsan_expand_si_overflow_addsub_check): Call - expand_binop with correct optab depending on code. - -2013-12-14 Tom de Vries - - * calls.c (expand_call): Fix REG_PARM_STACK_SPACE comparison. - -2013-12-13 DJ Delorie - - * config/rl78/rl78-expand.md (one_cmplqi2): Make constant signed. - - * config/msp430/msp430.md (movqi): replace general_operand with - msp_general_operand and nonimmediate_operand with - msp_nonimmediate_operand to allow volatile operands. - (movhi): Likewise. - (movpsi): Likewise. - (addpsi3): Likewise. - (addhi3): Likewise. - (addhi3_cy): Likewise. - (addchi4_cy): Likewise. - (xor3): Likewise. - (ome_cmpl2): Likewise. - (extendqihi2): Likewise. - (zero_extendqihi2): Likewise. - (zero_extendhipsi2): Likewise. - (truncpsihi2): Likewise. - (srai_1): Likewise. - -2013-12-13 Vladimir Makarov - - * ira.h (struct ira_reg_equiv): Rename to ira_reg_equiv_s. - * ira.c: Ditto. - * lra-int.h (lra_init_equiv): New prototype. - * lra-constraints.c (lra_init_equiv, update_equiv): New functions. - (loc_equivalence_callback): Use the 3rd arg. - (lra_constraints): Update equivalences. Pass curr_insn to - simplify_replace_fn_rtx. - * lra.c (lra): Call lra_init_equiv. - -2013-12-13 Kenneth Zadeck - - * genmodes.c (emit_max_int): Fixed missing parens. - -2013-12-13 Aldy Hernandez - - PR tree-optimization/59149 - * calls.c (flags_from_decl_or_type): Fail on non decl or type. - * trans-mem.c (diagnose_tm_1): Do not call flags_from_decl_or_type - if no type or decl. - -2013-12-13 Kenneth Zadeck - - * config/arc/arc.h (BITS_PER_UNIT): Removed. - * config/bfin/bfin.h (BITS_PER_UNIT): Removed. - * config/lm32/lm32.h (BITS_PER_UNIT): Removed. - * config/m32c/m32c.h (BITS_PER_UNIT): Removed. - * config/microblaze/microblaze.h (BITS_PER_UNIT): Removed. - * config/picochip/picochip.h (BITS_PER_UNIT): Removed. - * config/spu/spu.h (BITS_PER_UNIT): Removed. - * defaults.h (BITS_PER_UNIT): Removed. - * config/i386/i386-modes.def (MAX_BITSIZE_MODE_ANY_INT): New. - * doc/rtl (BITS_PER_UNIT): Moved from tm.texi. - (MAX_BITSIZE_MODE_ANY_INT): Updated. - * doc/tm.texi (BITS_PER_UNIT): Removed. - * doc/tm.texi.in (BITS_PER_UNIT): Removed. - * genmodes.c (bits_per_unit, max_bitsize_mode_any_int): New. - (create_modes): Added code to set bits_per_unit and - max_bitsize_mode_any_int. - (emit_max_int): Changed code generation. - * mkconfig.sh: Added insn-modes.h. - -2013-12-13 Jeff Law - - PR tree-optimization/45685 - * tree-ssa-phiopt.c (neg_replacement): New function. - (tree_ssa_phiopt_worker): Call it. - -2013-12-13 Yuri Rumyantsev - - * config/i386/i386.c (slm_cost): Fix imul cost for HI. - -2013-12-13 Bin Cheng - - PR tree-optimization/58296 - PR tree-optimization/41488 - * tree-scalar-evolution.c: Include necessary header files. - (simplify_peeled_chrec): New function. - (analyze_evolution_in_loop): New static variable. - Call simplify_peeled_chrec. - * tree-ssa-loop-ivopts.c (mark_bivs): Don't mark peeled IV as biv. - (add_old_iv_candidates): Don't add candidate for peeled IV. - * tree-affine.h (aff_combination_zero_p): New function. - -2013-12-13 Nick Clifton - - * config/msp430/msp430.c (is_wakeup_func): New function. Returns - true if the current function has the wakeup attribute. - (msp430_start_function): Note if the function has the wakeup - attribute. - (msp430_attribute_table): Add wakeup attribute. - (msp430_expand_epilogue): Add support for wakeup functions. - * config/msp430/msp430.md (disable_interrupts): Emit a NOP after - the DINT instruction. - * doc/extend.texi: Document the wakeup attribute. - -2013-12-13 Kai Tietz - - PR c++/57897 - * config/i386/i386.c (ix86_option_override_internal): Set for - x64 target flag_unwind_tables, if flag_asynchronous_unwind_tables - was explicit set. - -2013-12-12 Jeff Law - - * i386.md (simple LEA peephole2): Add missing mode to zero_extend - for zero-extended MULT simple LEA pattern. - -2013-12-12 Vladimir Makarov - - PR middle-end/59470 - * lra-coalesce.c (lra_coalesce): Invalidate inheritance pseudo - values if necessary. - -2013-12-12 Jakub Jelinek - - PR libgomp/59467 - * gimplify.c (omp_check_private): Add copyprivate argument, if it - is true, don't check omp_privatize_by_reference. - (gimplify_scan_omp_clauses): For OMP_CLAUSE_COPYPRIVATE verify - decl is private in outer context. Adjust omp_check_private caller. - -2013-12-11 Jeff Law - - PR rtl-optimization/59446 - * tree-ssa-threadupdate.c (mark_threaded_blocks): Properly - test for crossing a loop header. - -2013-12-11 Sriraman Tallam - - PR target/59390 - * config/i386/i386.c (get_builtin): New function. - (ix86_builtin_vectorized_function): Replace all instances of - ix86_builtins[...] with get_builtin(...). - (ix86_builtin_reciprocal): Ditto. - -2013-12-11 Balaji V. Iyer - - * langhooks.h (lang_hooks_for_decls): Remove lang_hooks_for_cilkplus. - (lang_hooks_for_cilkplus): Remove. - * langhooks.c (lhd_cilk_detect_spawn): Likewise. - (lhd_install_body_with_frame_cleanup): Likewise. - * langhooks-def.h (LANG_HOOKS_CILKPLUS_FRAME_CLEANUP): Likewise. - (LANG_HOOKS_CILKPLUS_DETECT_SPAWN_AND_UNWRAP): Likewise. - (LANG_HOOKS_CILKPLUS_CILKPLUS_GIMPLIFY_SPAWN): Likewise. - (LANG_HOOKS_CILKPLUS): Likewise. - (LANG_HOOKS_DECLS): Remove LANG_HOOKS_CILKPLUS. - * gimplify.c (gimplify_expr): Removed CILK_SPAWN_STMT case. - (gimplify_modify_expr): Removed handling of _Cilk_spawn in expr. - (gimplify_call_expr): Likewise. - -2013-12-11 Bernd Edlinger - - * expr.c (expand_assignment): Remove dependency on - flag_strict_volatile_bitfields. Always set the memory access mode. - (expand_expr_real_1): Likewise. - -2013-12-11 Bernd Edlinger - - PR middle-end/59134 - * expmed.c (store_bit_field): Use narrow_bit_field_mem and - store_fixed_bit_field_1 for -fstrict-volatile-bitfields. - (store_fixed_bit_field): Split up. Call store_fixed_bit_field_1 - to do the real work. - (store_fixed_bit_field_1): New function. - (store_split_bit_field): Limit the unit size to the memory mode size, - to prevent recursion. - -2013-12-11 Bernd Edlinger - Sandra Loosemore - - PR middle-end/23623 - PR middle-end/48784 - PR middle-end/56341 - PR middle-end/56997 - * expmed.c (strict_volatile_bitfield_p): Add bitregion_start - and bitregion_end parameters. Test for compliance with C++ - memory model. - (store_bit_field): Adjust call to strict_volatile_bitfield_p. - Add fallback logic for cases where -fstrict-volatile-bitfields - is supposed to apply, but cannot. - (extract_bit_field): Likewise. Use narrow_bit_field_mem and - extract_fixed_bit_field_1 to do the extraction. - (extract_fixed_bit_field): Revert to previous mode selection algorithm. - Call extract_fixed_bit_field_1 to do the real work. - (extract_fixed_bit_field_1): New function. - -2013-12-11 Sandra Loosemore - - PR middle-end/23623 - PR middle-end/48784 - PR middle-end/56341 - PR middle-end/56997 - * expmed.c (strict_volatile_bitfield_p): New function. - (store_bit_field_1): Don't special-case strict volatile - bitfields here. - (store_bit_field): Handle strict volatile bitfields here instead. - (store_fixed_bit_field): Don't special-case strict volatile - bitfields here. - (extract_bit_field_1): Don't special-case strict volatile - bitfields here. - (extract_bit_field): Handle strict volatile bitfields here instead. - (extract_fixed_bit_field): Don't special-case strict volatile - bitfields here. Simplify surrounding code to resemble that in - store_fixed_bit_field. - * doc/invoke.texi (Code Gen Options): Update - -fstrict-volatile-bitfields description. - -2013-12-11 Kugan Vivekanandarajah - - * configure.ac: Add check for aarch64 assembler -mabi support. - * configure: Regenerate. - * config.in: Regenerate. - * config/aarch64/aarch64-elf.h (ASM_MABI_SPEC): New define. - (ASM_SPEC): Update to substitute -mabi with ASM_MABI_SPEC. - * config/aarch64/aarch64.h (aarch64_override_options): Issue error - if assembler does not support -mabi and option ilp32 is selected. - * doc/install.texi: Added note that building gcc 4.9 and after - with pre 2.24 binutils will not support -mabi=ilp32. - -2013-12-11 Marek Polacek - - PR sanitizer/59399 - * expr.c (expand_expr_real_1): Remove assert dealing with - internal calls and turn that into a condition instead. - -2013-12-11 Yvan Roux - - * config/arm/arm.opt (mlra): Enable LRA by default. - -2013-12-11 Jakub Jelinek - - PR tree-optimization/59417 - * tree-ssa-copy.c (fini_copy_prop): If copy_of[i].value is defined - in a different bb rhan var, only duplicate points-to info and - not alignment info and don't duplicate range info. - * tree-ssa-loop-niter.c (determine_value_range): Instead of - assertion failure handle inconsistencies in range info by only - using var's range info and not PHI result range infos. - - PR tree-optimization/59386 - * tree-inline.c (remap_gimple_stmt): If not id->do_not_unshare, - unshare_expr (id->retval) before passing it to gimple_build_assign. - -2013-12-11 Bin Cheng - - Reverted: - 2013-12-10 Bin Cheng - PR tree-optimization/41488 - * tree-ssa-loop-ivopts.c (add_old_iv_candidates): Don't add cand - for PEELED_CHREC kind IV. - * tree-scalar-evolution.c: Include necessary header files. - (peeled_chrec_map, simplify_peeled_chrec): New. - (analyze_evolution_in_loop): New static variable. - Call simplify_peeled_chrec. - (scev_initialize): Initialize peeled_chrec_map. - (scev_reset, scev_finalize): Reset and release peeled_chrec_map. - -2013-12-10 H.J. Lu - - PR target/59458 - * config/i386/i386.md (*movsf_internal): Set mode to SI for - alternative 13. - -2013-12-10 Eric Botcazou - - PR rtl-optimization/58295 - * simplify-rtx.c (simplify_truncation): Restrict the distribution for - WORD_REGISTER_OPERATIONS targets. - -2013-12-10 Richard Sandiford - - * genrecog.c (validate_pattern): Treat all messages except missing - modes as errors. - * config/epiphany/epiphany.md: Remove constraints from - define_peephole2s. - * config/h8300/h8300.md: Remove constraints from define_splits. - * config/msp430/msp430.md: Likewise. - * config/mcore/mcore.md (movdi_i, movsf_i, movdf_k): Use - nonimmediate_operand rather than general_operand for operand 0. - * config/moxie/moxie.md (*movsi, *movqi, *movhi): Likewise. - * config/pdp11/predicates.md (float_operand, float_nonimm_operand): - Use match_operator rather than match_test to invoke general_operand. - * config/v850/v850.md (*movqi_internal, *movhi_internal) - (*movsi_internal_v850e, *movsi_internal, *movsf_internal): Likewise. - -2013-12-10 Richard Sandiford - - * config/tilegx/tilegx.md (insn_ld_add): Use - register_operand rather than pointer_operand. Add modes to the - operands. - (insn_ldna_add): Likewise. - (insn_ld_add): Likewise. - (insn_ldnt_add): Likewise. - (insn_ldnt_add): Likewise. - (insn_ld_add_L2): Likewise. - (insn_ldna_add_L2): Likewise. - (insn_ld_add_L2): Likewise. - (insn_ldnt_add_L2): Likewise. - (insn_ldnt_add_L2): Likewise. - (insn_ld_add_miss): Likewise. - (insn_ldna_add_miss): Likewise. - (insn_ld_add_miss): Likewise. - (insn_ldnt_add_miss): Likewise. - (insn_ldnt_add_miss): Likewise. - (insn_st_add): Likewise. - (insn_st_add): Likewise. - (*insn_st_add): Likewise. - (insn_stnt_add): Likewise. - (insn_stnt_add): Likewise. - (*insn_stnt_add): Likewise. - (vec_pack__v4hi): Use register_operand rather than - reg_or_0_operand for operand 0. - (insn_v2): Likewise. - (vec_pack_hipart_v4hi): Likewise. - (insn_v2packh): Likewise. - (vec_pack_ssat_v2si): Likewise. - (insn_v4packsc): Likewise. - -2013-12-10 H.J. Lu - - * basic-block.h (gcov_working_set_t): Put back typedef. - * gcov-io.h (gcov_bucket_type): Likewise. - (gcov_working_set_info, gcov_working_set_t): Likewise. - -2013-12-10 Oleg Endo - - * cgraph.h (cgraph_node_set_iterator, varpool_node_set_iterator): - Remove typedef. - (cgraph_inline_failed_enum, cgraph_inline_failed_t): Remove typedef and - rename to cgraph_inline_failed_t. - * tree-ssa-alias.h (ao_ref_s, ao_ref): Remove typedef and rename - to ao_ref. - * reload.h (reg_equivs_s, reg_equivs_t): Remove typedef and rename - to reg_equivs_t. - * conditions.h (CC_STATUS): Remove typedef. - * bitmap.h (bitmap_obstack): Remove typedef. - (bitmap_element_def, bitmap_element): Remove typedef and rename to - bitmap_element. - (bitmap_head_def, bitmap_head): Remove typedef and rename to - bitmap_head. - (bitmap_iterator): Remove typedef. - * target.h (cumulative_args_t, print_switch_type, - secondary_reload_info): Remove typedef. - * dwarf2out.h (dw_cfi_oprnd_struct, dw_cfi_oprnd): Remove - dw_cfi_oprnd_struct alias. - (dw_cfi_struct, dw_cfi_node): Remove typedef and rename to dw_cfi_node. - (dw_fde_struct, dw_fde_node): Remove typedef and rename to dw_fde_node. - (cfa_loc, dw_cfa_location): Remove typedef and rename to - dw_cfa_location. - (dw_vec_struct, dw_vec_const): Remove typedef and rename to - dw_vec_const. - (dw_val_struct, dw_val_node): Remove typedef and rename to dw_val_node. - (dw_loc_descr_struct, dw_loc_descr_node): Remove typedef and rename to - dw_loc_descr_node. - * params.h (param_info, compiler_param): Remove typedef. - * opts.h (cl_deferred_param): Remove typedef. - * sreal.h (sreal): Remove typedef. - * ddg.h (dep_type, dep_data_type): Remove typedef. - * graphite-clast-to-gimple.h (cloog_prog_clast, bb_pbb_def): Remove - typedef. - * lto-streamer.h (lto_decl_stream_e_t, lto_encoder_entry, - lto_symtab_encoder_iterator, res_pair): Remove typedef. - * tree-affine.h (affine_tree_combination, aff_tree): Remove typedef - and rename to aff_tree. - * sched-int.h (region): Remove typedef. - * diagnostic.h (diagnostic_info, - diagnostic_classification_change_t): Remove typedef. - * tree-ssa-loop.h (affine_iv_d): Remove typedef and rename to - affine_iv. - * sbitmap.h (sbitmap_iterator): Remove typedef. - * ssa-iterators.h (immediate_use_iterator_d, imm_use_iterator): - Remove typedef and rename to imm_use_iterator. - (ssa_operand_iterator_d, ssa_op_iter): Remove typedef and rename to - ssa_op_iter. - * ggc-internal.h (ggc_statistics): Remove typedef. - * cselib.h (cselib_val_struct, cselib_val): Remove typedef and - rename to cselib_val. - * tree-core.h (alias_pair): Remove typedef. - (constructor_elt_d, constructor_elt): Remove typedef and rename to - constructor_elt. - (ssa_use_operand_d, ssa_use_operand_t): Remove typedef and rename to - ssa_use_operand_t. - * graphite-sese-to-poly.h (base_alias_pair): Remove typedef. - * tree-data-ref.h (conflict_function): Remove typedef. - * tree-inline.h (copy_body_data): Remove typedef. - * ipa-inline.h (condition, size_time_entry, inline_param_summary_t, - edge_growth_cache_entry): Remove typedef. - * regrename.h (operand_rr_info, insn_rr_info): Remove typedef. - * gimple-iterator.h (gimple_stmt_iterator_d, gimple_stmt_iterator): - Remove typedef and rename to gimple_stmt_iterator. - * basic-block.h (ce_if_block, ce_if_block_t): Remove typedef and - rename to ce_if_block. - (edge_iterator): Remove typedef. - * ipa-prop.h (ipa_agg_jf_item, ipa_agg_jf_item_t): Remove typedef - and rename to ipa_agg_jf_item. - (ipa_agg_jump_function_t, ipa_param_descriptor_t, ipa_node_params_t, - ipa_parm_adjustment_t): Remove typedef. - (ipa_jump_func, ipa_jump_func_t): Remove typedef and rename to - ipa_jump_func. - (ipa_edge_args, ipa_edge_args_t): Remove typedef and rename to - ipa_edge_args. - * gcov-io.h (gcov_bucket_type): Remove typedef. - (gcov_working_set_info, gcov_working_set_t): Remove typedef and rename - to gcov_working_set_t. - * ira-int.h (minmax_set_iterator, ira_allocno_iterator, - ira_object_iterator, ira_allocno_object_iterator, ira_pref_iterator, - ira_copy_iterator, ira_object_conflict_iterator): Remove typedef. - * tree-iterator.h (tree_stmt_iterator): Remove typedef. - * rtl.h (addr_diff_vec_flags, mem_attrs, reg_attrs, - replace_label_data): Remove typedef. - (rtunion_def, rtunion): Remove typedef and rename to rtunion. - * hard-reg-set.h (hard_reg_set_iterator): Remove typedef. - * sel-sched-ir.h (_list_iterator, sel_global_bb_info_def, - sel_region_bb_info_def, succ_iterator): Remove typedef. - (deps_where_def, deps_where_t): Remove typedef and rename to - deps_where_t. - * coretypes.h: Adapt forward declarations. - * tree-scalar-evolution.h: Likewise. - * tree-ssa-address.h: Likewise. - * tree-ssa-operands.h: Likewise. - * function.h: Likewise. - * config/frv/frv-protos.h: Likewise. - * targhooks.h: Likewise. - * basic_block.h: Likewise. - * rtl.def: Adapt documentation. - * doc/tm.texi: Likewise. - * ipa-cp.c: Adapt uses. - * bitmap.c: Likewise. - * dwarf2out.c: Likewise. - * target.def: Likewise. - * ipa-inline-analysis.c: Likewise. - * dwarf2cfi.c: Likewise. - * tree-ssa-loop-ivopts.c: Likewise. - * lto-cgraph.c: Likewise. - * config/frv/frv.c: Likewise. - * ifcvt.c: Likewise. - * ipa-prop.c: Likewise. - -2013-12-10 Kai Tietz - - PR target/56807 - * config/i386/i386.c (ix86_expand_prologue): Address saved - registers stack-relative, not via frame-pointer. - -2013-12-10 Richard Biener - - PR middle-end/38474 - * tree-ssa-structalias.c (solution_set_expand): Expand into - a different possibly cached bitmap and return the result. - (set_union_with_increment): Pass in a shared expanded bitmap - and adjust. - (do_sd_constraint): Likewise. - (do_ds_constraint): Likewise. - (do_complex_constraint): Likewise. - (solve_graph): Manage the shared expanded bitmap. - -2013-12-10 Jakub Jelinek - - * tree-vectorizer.h (struct _loop_vec_info): Add scalar_loop field. - (LOOP_VINFO_SCALAR_LOOP): Define. - (slpeel_tree_duplicate_loop_to_edge_cfg): Add scalar_loop argument. - * config/i386/sse.md (maskload, maskstore): New expanders. - * tree-data-ref.c (get_references_in_stmt): Handle MASK_LOAD and - MASK_STORE. - * internal-fn.def (LOOP_VECTORIZED, MASK_LOAD, MASK_STORE): New - internal fns. - * tree-if-conv.c: Include expr.h, optabs.h, tree-ssa-loop-ivopts.h and - tree-ssa-address.h. - (release_bb_predicate): New function. - (free_bb_predicate): Use it. - (reset_bb_predicate): Likewise. Don't unallocate bb->aux - just to immediately allocate it again. - (add_to_predicate_list): Add loop argument. If basic blocks that - dominate loop->latch don't insert any predicate. - (add_to_dst_predicate_list): Adjust caller. - (if_convertible_phi_p): Add any_mask_load_store argument, if true, - handle it like flag_tree_loop_if_convert_stores. - (insert_gimplified_predicates): Likewise. - (ifcvt_can_use_mask_load_store): New function. - (if_convertible_gimple_assign_stmt_p): Add any_mask_load_store - argument, check if some conditional loads or stores can't be - converted into MASK_LOAD or MASK_STORE. - (if_convertible_stmt_p): Add any_mask_load_store argument, - pass it down to if_convertible_gimple_assign_stmt_p. - (predicate_bbs): Don't return bool, only check if the last stmt - of a basic block is GIMPLE_COND and handle that. Adjust - add_to_predicate_list caller. - (if_convertible_loop_p_1): Only call predicate_bbs if - flag_tree_loop_if_convert_stores and free_bb_predicate in that case - afterwards, check gimple_code of stmts here. Replace is_predicated - check with dominance check. Add any_mask_load_store argument, - pass it down to if_convertible_stmt_p and if_convertible_phi_p, - call if_convertible_phi_p only after all if_convertible_stmt_p calls. - (if_convertible_loop_p): Add any_mask_load_store argument, - pass it down to if_convertible_loop_p_1. - (predicate_mem_writes): Emit MASK_LOAD and/or MASK_STORE calls. - (combine_blocks): Add any_mask_load_store argument, pass - it down to insert_gimplified_predicates and call predicate_mem_writes - if it is set. Call predicate_bbs. - (version_loop_for_if_conversion): New function. - (tree_if_conversion): Adjust if_convertible_loop_p and combine_blocks - calls. Return todo flags instead of bool, call - version_loop_for_if_conversion if if-conversion should be just - for the vectorized loops and nothing else. - (main_tree_if_conversion): Adjust caller. Don't call - tree_if_conversion for dont_vectorize loops if if-conversion - isn't explicitly enabled. - * tree-vect-data-refs.c (vect_check_gather): Handle - MASK_LOAD/MASK_STORE. - (vect_analyze_data_refs, vect_supportable_dr_alignment): Likewise. - * gimple.h (gimple_expr_type): Handle MASK_STORE. - * internal-fn.c (expand_LOOP_VECTORIZED, expand_MASK_LOAD, - expand_MASK_STORE): New functions. - * tree-vectorizer.c: Include tree-cfg.h and gimple-fold.h. - (vect_loop_vectorized_call, fold_loop_vectorized_call): New functions. - (vectorize_loops): Don't try to vectorize loops with - loop->dont_vectorize set. Set LOOP_VINFO_SCALAR_LOOP for if-converted - loops, fold LOOP_VECTORIZED internal call depending on if loop - has been vectorized or not. - * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges): - New function. - (slpeel_tree_duplicate_loop_to_edge_cfg): Add scalar_loop argument. - If non-NULL, copy basic blocks from scalar_loop instead of loop, but - still to loop's entry or exit edge. - (slpeel_tree_peel_loop_to_edge): Add scalar_loop argument, pass it - down to slpeel_tree_duplicate_loop_to_edge_cfg. - (vect_do_peeling_for_loop_bound, vect_do_peeling_for_loop_alignment): - Adjust callers. - (vect_loop_versioning): If LOOP_VINFO_SCALAR_LOOP, perform loop - versioning from that loop instead of LOOP_VINFO_LOOP, move it to the - right place in the CFG afterwards. - * tree-vect-loop.c (vect_determine_vectorization_factor): Handle - MASK_STORE. - * cfgloop.h (struct loop): Add dont_vectorize field. - * tree-loop-distribution.c (copy_loop_before): Adjust - slpeel_tree_duplicate_loop_to_edge_cfg caller. - * optabs.def (maskload_optab, maskstore_optab): New optabs. - * passes.def: Add a note that pass_vectorize must immediately follow - pass_if_conversion. - * tree-predcom.c (split_data_refs_to_components): Give up if - DR_STMT is a call. - * tree-vect-stmts.c (vect_mark_relevant): Don't crash if lhs is NULL. - (exist_non_indexing_operands_for_use_p): Handle MASK_LOAD - and MASK_STORE. - (vectorizable_mask_load_store): New function. - (vectorizable_call): Call it for MASK_LOAD or MASK_STORE. - (vect_transform_stmt): Handle MASK_STORE. - * tree-ssa-phiopt.c (cond_if_else_store_replacement): Ignore - DR_STMT where lhs is NULL. - * optabs.h (can_vec_perm_p): Fix up comment typo. - (can_vec_mask_load_store_p): New prototype. - * optabs.c (can_vec_mask_load_store_p): New function. - -2013-12-10 Eric Botcazou - - * expr.c (expand_expr_real_1) : Always return 0 for - the extraction of a bit-field of null size. - -2013-12-10 Marek Polacek - - PR sanitizer/59437 - * vtable-verify.c (var_is_used_for_virtual_call_p): Check the - return value of gimple_call_fn. Use is_gimple_call/is_gimple_assign - instead of gimple_code. - -2013-12-10 Maxim Kuvyrkov - - * config.gcc (mips*-mti-linux*, mips64*-*-linux*): - Add android definitions. - (s390x-*-linux*): Use linux-protos.h. - -2013-12-10 Bin Cheng - - PR tree-optimization/41488 - * tree-ssa-loop-ivopts.c (add_old_iv_candidates): Don't add cand - for PEELED_CHREC kind IV. - * tree-scalar-evolution.c: Include necessary header files. - (peeled_chrec_map, simplify_peeled_chrec): New. - (analyze_evolution_in_loop): New static variable. - Call simplify_peeled_chrec. - (scev_initialize): Initialize peeled_chrec_map. - (scev_reset, scev_finalize): Reset and release peeled_chrec_map. - -2013-12-09 Andrew Pinski - - * config/aarch64/t-aarch64 (MULTILIB_OPTIONS): Fix definition so - that options are conflicting ones. - -2013-12-09 Eric Botcazou - - * optabs.c (gen_int_libfunc): Do not compare modes directly. - -2013-12-09 David Malcolm - - * basic-block.h (FOR_ALL_BB): Eliminate macro. - - * cfg.c (alloc_aux_for_blocks, clear_aux_for_blocks): Replace - uses of FOR_ALL_BB with FOR_ALL_BB_FN, making uses of cfun explicit. - - * cfganal.c (inverted_post_order_compute): Likewise. - * cfgcleanup.c (try_optimize_cfg): Likewise. - * cfgexpand.c (add_scope_conflicts): Likewise. - * cfghooks.c (dump_flow_info, account_profile_record): Likewise. - * cfgrtl.c (relink_block_chain): Likewise. - * dce.c (mark_artificial_uses): Likewise. - * df-core.c (df_set_blocks, df_compute_cfg_image, df_dump): Likewise. - * df-problems.c (df_lr_verify_solution_start, - df_lr_verify_solution_end, df_lr_verify_transfer_functions, - df_live_verify_solution_start, df_live_verify_solution_end, - df_live_set_all_dirty, df_live_verify_transfer_functions, - df_md_local_comput): Likewise. - * df-scan.c (df_scan_free_internal, df_scan_alloc) - df_reorganize_refs_by_insn, df_scan_verify): Likewise. - * dominance.c (compute_dom_fast_query, calculate_dominance_info, - free_dominance_info): Likewise. - * dse.c (dse_step1, dse_step3, dse_step4, dse_step6): Likewise. - * graph.c (draw_cfg_edges): Likewise. - * graphite-scop-detection.c (print_graphite_scop_statistics, - dot_all_scops_1): Likewise. - * graphite.c (print_global_statistics, - print_graphite_scop_statistics): Likewise. - * ira.c (do_reload): Likewise. - * loop-init.c (loop_optimizer_finalize): Likewise. - * lto-streamer-in.c (input_function): Likewise. - * lto-streamer-out.c (output_function): Likewise. - * mcf.c (adjust_cfg_counts): Likewise. - * predict.c (estimate_loops): Likewise. - * sched-rgn.c (haifa_find_rgns): Likewise. - * tree-cfg.c (split_critical_edges): Likewise. - * tree-dfa.c (renumber_gimple_stmt_uids): Likewise. - * tree-loop-distribution.c (tree_loop_distribution): Likewise. - * tree-ssa-pre.c (compute_antic, insert, init_pre): Likewise. - * tree-ssa-propagate.c (ssa_prop_init): Likewise. - * var-tracking.c (vt_initialize, vt_finalize): Likewise. - * vtable-verify.c (vtable_verify_main): Likewise. - * web.c (web_main): Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (FOR_EACH_BB_REVERSE): Eliminate macro. - - * cfghooks.c (verify_flow_info): Replace uses of FOR_EACH_BB_REVERSE - with FOR_EACH_BB_REVERSE_FN, making uses of cfun explicit. - * cfgrtl.c (print_rtl_with_bb, rtl_verify_edges, - rtl_verify_bb_insns, rtl_verify_bb_pointers, - rtl_verify_bb_insn_chain, rtl_verify_fallthru): Likewise. - * config/ia64/ia64.c (emit_predicate_relation_info): Likewise. - * config/sh/sh.c (sh_md_init_global): Likewise. - * config/sh/sh_optimize_sett_clrt.cc - (sh_optimize_sett_clrt::execute): Likewise. - * dce.c (reset_unmarked_insns_debug_uses, delete_unmarked_insns): - Likewise. - * dominance.c (calc_dfs_tree): Likewise. - * final.c (final): Likewise. - * function.c (thread_prologue_and_epilogue_insns): Likewise. - * gcse.c (compute_code_hoist_vbeinout): Likewise. - * ira.c (update_equiv_regs, build_insn_chain): Likewise. - * lcm.c (compute_antinout_edge): Likewise. - * mode-switching.c (optimize_mode_switching): Likewise. - * postreload.c (reload_combine): Likewise. - * recog.c (split_all_insns, peephole2_optimize): Likewise. - * tree-ssa-live.c (live_worklist): Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (FOR_EACH_BB): Eliminate macro. - - * asan.c (transform_statements, execute_sanopt): Eliminate - use of FOR_EACH_BB in favor of FOR_EACH_BB_FN, to make use of cfun - explicit. - * auto-inc-dec.c (rest_of_handle_auto_inc_dec): Likewise. - * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges, - set_edge_can_fallthru_flag, fix_up_fall_thru_edges, - fix_crossing_unconditional_branches, add_reg_crossing_jump_notes, - insert_section_boundary_note, rest_of_handle_reorder_blocks, - duplicate_computed_gotos): Likewise. - * cfg.c (clear_edges, compact_blocks, brief_dump_cfg): Likewise. - * cfganal.c (find_unreachable_blocks, add_noreturn_fake_exit_edges, - compute_dominance_frontiers_1, single_pred_before_succ_order): Likewise. - * cfgbuild.c (find_many_sub_basic_blocks): Likewise. - * cfgcleanup.c (try_optimize_cfg, delete_dead_jumptables): Likewise. - * cfgexpand.c (add_scope_conflicts, discover_nonconstant_array_refs): - Likewise. - * cfgloop.c (flow_loops_cfg_dump, get_loop_body, record_loop_exits, - verify_loop_structure): Likewise. - * cfgloopanal.c (mark_loop_exit_edges): Likewise. - * cfgrtl.c (compute_bb_for_insn, find_partition_fixes, - verify_hot_cold_block_grouping, purge_all_dead_edges, - fixup_abnormal_edges, record_effective_endpoints, - outof_cfg_layout_mode, fixup_reorder_chain, force_one_exit_fallthru, - break_superblocks): Likewise. - * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges, - cgraph_rebuild_references): Likewise. - * combine-stack-adj.c (combine_stack_adjustments): Likewise. - * combine.c (delete_noop_moves, create_log_links, - combine_instructions): Likewise. - * config/arm/arm.c (thumb1_reorg, thumb2_reorg): Likewise. - * config/bfin/bfin.c (bfin_gen_bundles, reorder_var_tracking_notes): - Likewise. - * config/c6x/c6x.c (c6x_gen_bundles, conditionalize_after_sched, - c6x_reorg): Likewise. - * config/epiphany/resolve-sw-modes.c (resolve_sw_modes): Likewise. - * config/frv/frv.c (frv_optimize_membar): Likewise. - * config/i386/i386.c (ix86_finalize_stack_realign_flags): Likewise. - * config/ia64/ia64.c (ia64_reorg): Likewise. - * config/mips/mips.c (mips_annotate_pic_calls): Likewise. - * config/picochip/picochip.c (reorder_var_tracking_notes): Likewise. - * config/rs6000/rs6000.c (rs6000_alloc_sdmode_stack_slot): Likewise. - * config/s390/s390.c (s390_regs_ever_clobbered): Likewise. - * config/sh/sh_treg_combine.cc (sh_treg_combine::execute): Likewise. - * config/spu/spu.c (spu_machine_dependent_reorg): Likewise. - * config/tilegx/tilegx.c (tilegx_gen_bundles, - reorder_var_tracking_notes): Likewise. - * config/tilepro/tilepro.c (tilepro_gen_bundles, - reorder_var_tracking_notes): Likewise. - * coverage.c (coverage_compute_cfg_checksum): Likewise. - * cprop.c (compute_hash_table_work, compute_cprop_data, - local_cprop_pass, find_implicit_sets): Likewise. - * cse.c (cse_condition_code_reg): Likewise. - * dce.c (prescan_insns_for_dce): Likewise. - * df-core.c (df_compact_blocks): Likewise. - * df-problems.c (df_word_lr_alloc): Likewise. - * df-scan.c (df_scan_start_dump, df_scan_blocks, df_insn_rescan_all, - df_update_entry_exit_and_calls): Likewise. - * dominance.c (calculate_dominance_info, verify_dominators, - debug_dominance_info): Likewise. - * dse.c (dse_step5_nospill): Likewise. - * except.c (finish_eh_generation): Likewise. - * final.c (compute_alignments): Likewise. - * function.c (thread_prologue_and_epilogue_insns, - rest_of_match_asm_constraints): Likewise. - * gcse.c (compute_hash_table_work, prune_expressions, - compute_pre_data, compute_code_hoist_vbeinout, hoist_code, - calculate_bb_reg_pressure, compute_ld_motion_mems): Likewise. - * gimple-iterator.c (gsi_commit_edge_inserts): Likewise. - * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behaviour, - find_explicit_erroneous_behaviour): Likewise. - * graphite-sese-to-poly.c (rewrite_reductions_out_of_ssa, - rewrite_cross_bb_scalar_deps_out_of_ssa): Likewise. - * haifa-sched.c (haifa_sched_init): Likewise. - * hw-doloop.c (discover_loops, set_bb_indices, reorder_loops): - Likewise. - * ifcvt.c (if_convert): Likewise. - * init-regs.c (initialize_uninitialized_regs): Likewise. - * ipa-prop.c (ipcp_transform_function): Likewise. - * ipa-pure-const.c (analyze_function): Likewise. - * ipa-split.c (find_split_points, execute_split_functions): Likewise. - * ira-build.c (form_loop_tree): Likewise. - * ira-costs.c (find_costs_and_classes): Likewise. - * ira-emit.c (emit_moves, add_ranges_and_copies, ira_emit): Likewise. - * ira.c (decrease_live_ranges_number, compute_regs_asm_clobbered, - mark_elimination, update_equiv_regs, find_moveable_pseudos, - split_live_ranges_for_shrink_wrap, allocate_initial_values): Likewise. - * jump.c (mark_all_labels): Likewise. - * lcm.c (compute_laterin, compute_insert_delete, compute_available, - compute_nearerout, compute_rev_insert_delete): Likewise. - * loop-init.c (fix_loop_structure): Likewise. - * loop-invariant.c (calculate_loop_reg_pressure): Likewise. - * lower-subreg.c (decompose_multiword_subregs, - decompose_multiword_subregs): Likewise. - * lra-assigns.c (assign_by_spills): Likewise. - * lra-coalesce.c (lra_coalesce): Likewise. - * lra-constraints.c (lra_inheritance, remove_inheritance_pseudos): - Likewise. - * lra-eliminations.c (lra_init_elimination): Likewise. - * lra-spills.c (assign_spill_hard_regs, spill_pseudos, - lra_final_code_change): Likewise. - * lra.c (remove_scratches, check_rtl, has_nonexceptional_receiver, - update_inc_notes): Likewise. - * mcf.c (adjust_cfg_counts): Likewise. - * mode-switching.c (optimize_mode_switching): Likewise. - * modulo-sched.c (rest_of_handle_sms): Likewise. - * omp-low.c (optimize_omp_library_calls, expand_omp_taskreg, - expand_omp_target): Likewise. - * postreload-gcse.c (alloc_mem, compute_hash_table): Likewise. - * postreload.c (reload_cse_regs_1): Likewise. - * predict.c (strip_predict_hints, tree_bb_level_predictions, - tree_estimate_probability, expensive_function_p, - estimate_bb_frequencies, compute_function_frequency): Likewise. - * profile.c (is_inconsistent, compute_branch_probabilities, - branch_prob): Likewise. - * ree.c (find_removable_extensions): Likewise. - * reg-stack.c (compensate_edges, convert_regs, reg_to_stack): Likewise. - * regcprop.c (copyprop_hardreg_forward): Likewise. - * reginfo.c (init_subregs_of_mode): Likewise. - * regrename.c (regrename_analyze): Likewise. - * regstat.c (regstat_compute_ri, regstat_compute_calls_crossed): - Likewise. - * reload1.c (has_nonexceptional_receiver, reload, - calculate_elim_costs_all_insns): Likewise. - * resource.c (init_resource_info, free_resource_info): Likewise. - * sched-ebb.c (schedule_ebbs): Likewise. - * sched-rgn.c (is_cfg_nonregular, find_single_block_region, - haifa_find_rgns, sched_rgn_local_init): Likewise. - * sel-sched-dump.c (sel_dump_cfg_2): Likewise. - * sel-sched-ir.c (init_lv_sets, free_lv_sets, - make_regions_from_the_rest): Likewise. - * sese.c (build_sese_loop_nests, sese_build_liveouts): Likewise. - * stack-ptr-mod.c (notice_stack_pointer_modification): Likewise. - * store-motion.c (compute_store_table, build_store_vectors, - one_store_motion_pass): Likewise. - * tracer.c (tail_duplicate): Likewise. - * trans-mem.c (compute_transaction_bits): Likewise. - * tree-call-cdce.c (tree_call_cdce): Likewise. - * tree-cfg.c (replace_loop_annotate, factor_computed_gotos, - fold_cond_expr_cond, make_edges, assign_discriminators, - make_abnormal_goto_edges, cleanup_dead_labels, group_case_labels, - dump_cfg_stats, gimple_verify_flow_info, print_loop, - execute_fixup_cfg): Likewise. - * tree-cfgcleanup.c (cleanup_tree_cfg_1, merge_phi_nodes): Likewise. - * tree-complex.c (init_dont_simulate_again, tree_lower_complex): - Likewise. - * tree-dfa.c (collect_dfa_stats, dump_enumerated_decls): Likewise. - * tree-eh.c (execute_lower_resx, execute_lower_eh_dispatch, - mark_reachable_handlers): Likewise. - * tree-emutls.c (lower_emutls_function_body): Likewise. - * tree-if-conv.c (main_tree_if_conversion): Likewise. - * tree-inline.c (optimize_inline_calls): Likewise. - * tree-into-ssa.c (rewrite_into_ssa, update_ssa): Likewise. - * tree-nrv.c (tree_nrv, execute_return_slot_opt): Likewise. - * tree-object-size.c (compute_object_sizes): Likewise. - * tree-outof-ssa.c (eliminate_useless_phis, rewrite_trees, - insert_backedge_copies, tree_profiling): Likewise. - * tree-scalar-evolution.c (scev_const_prop): Likewise. - * tree-sra.c (scan_function, sra_modify_function_body, - propagate_dereference_distances, ipa_sra_modify_function_body, - convert_callers): Likewise. - * tree-ssa-ccp.c (ccp_initialize, execute_fold_all_builtins): Likewise. - * tree-ssa-coalesce.c (build_ssa_conflict_graph): Likewise. - create_outofssa_var_map, coalesce_partitions): Likewise. - * tree-ssa-copy.c (init_copy_prop): Likewise. - * tree-ssa-copyrename.c (rename_ssa_copies): Likewise. - * tree-ssa-dce.c (find_obviously_necessary_stmts, - eliminate_unnecessary_stmts): Likewise. - * tree-ssa-dom.c (free_all_edge_infos, tree_ssa_dominator_optimize): - Likewise. - * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Likewise. - * tree-ssa-live.c (clear_unused_block_pointer, remove_unused_locals, - new_tree_live_info, calculate_live_on_exit, dump_live_info, - analyze_memory_references, fill_always_executed_in, - tree_ssa_lim_finalize): Likewise. - * tree-ssa-loop-manip.c (find_uses_to_rename, verify_loop_closed_ssa): - Likewise. - * tree-ssa-math-opts.c (execute_cse_reciprocals, execute_cse_sincos, - execute_optimize_bswap, execute_optimize_widening_mul): Likewise. - * tree-ssa-propagate.c (substitute_and_fold): Likewise. - * tree-ssa-structalias.c (compute_points_to_sets): Likewise. - * tree-ssa-tail-merge.c (find_same_succ, reset_cluster_vectors): - Likewise. - * tree-ssa-ter.c (find_replaceable_exprs): Likewise. - * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise. - * tree-ssa-uncprop.c (associate_equivalences_with_edges, - tree_ssa_uncprop): Likewise. - * tree-ssa-uninit.c (warn_uninitialized_vars, - execute_late_warn_uninitialized): Likewise. - * tree-ssa.c (verify_ssa, execute_update_addresses_taken): Likewise. - * tree-stdarg.c (check_all_va_list_escapes, execute_optimize_stdarg): - Likewise. - * tree-switch-conversion.c (do_switchconv): Likewise. - * tree-vect-generic.c (expand_vector_operations): Likewise. - * tree-vectorizer.c (adjust_simduid_builtins, note_simd_array_uses, - execute_vect_slp): Likewise. - * tree-vrp.c (check_all_array_refs, remove_range_assertions, - vrp_initialize, identify_jump_threads, instrument_memory_accesses): - Likewise. - * ubsan.c (ubsan_pass): Likewise. - * value-prof.c (verify_histograms, - gimple_value_profile_transformations, gimple_find_values_to_profile): - Likewise. - * var-tracking.c (vt_find_locations, dump_dataflow_sets, vt_emit_notes, - vt_initialize, delete_debug_insns, vt_finalize): Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (last_basic_block): Eliminate macro. - - * asan.c (transform_statements): Eliminate use of last_basic_block - in favor of last_basic_block_for_fn, in order to make use of cfun - explicit. - * bb-reorder.c (copy_bb, reorder_basic_blocks): Likewise. - * bt-load.c (compute_defs_uses_and_gen, compute_kill, compute_out, - link_btr_uses, build_btr_def_use_webs, migrate_btr_defs): Likewise. - * cfg.c (compact_blocks): Likewise. - * cfganal.c (mark_dfs_back_edges, - control_dependences::control_dependences, post_order_compute, - pre_and_rev_post_order_compute_fn, dfs_enumerate_from, compute_idf, - single_pred_before_succ_order): Likewise. - * cfgbuild.c (make_edges): Likewise. - * cfgexpand.c (add_scope_conflicts, gimple_expand_cfg): Likewise. - * cfghooks.c (verify_flow_info): Likewise. - * cfgloop.c (verify_loop_structure): Likewise. - * cfgloopanal.c (just_once_each_iteration_p, - mark_irreducible_loops): Likewise. - * cfgloopmanip.c (fix_bb_placements, remove_path, - update_dominators_in_loop): Likewise. - * cfgrtl.c (create_basic_block_structure, rtl_create_basic_block, - break_superblocks, rtl_flow_call_edges_add): Likewise. - * config/epiphany/resolve-sw-modes.c (resolve_sw_modes): Likewise. - * config/frv/frv.c (frv_optimize_membar): Likewise. - * config/mips/mips.c (r10k_insert_cache_barriers): Likewise. - * config/spu/spu.c (spu_machine_dependent_reorg): Likewise. - * cprop.c (compute_local_properties, find_implicit_sets, - bypass_conditional_jumps, one_cprop_pass): Likewise. - * cse.c (cse_main): Likewise. - * df-core.c (rest_of_handle_df_initialize, df_worklist_dataflow, - df_analyze, df_grow_bb_info, df_compact_blocks): Likewise. - * df-problems.c (df_lr_verify_solution_start, - df_live_verify_solution_start, df_md_local_compute): Likewise. - * dominance.c (init_dom_info, calc_dfs_tree_nonrec, calc_dfs_tree, - calc_idoms): Likewise. - * domwalk.c (dom_walker::walk): Likewise. - * dse.c (dse_step0, dse_step3): Likewise. - * function.c (epilogue_done): Likewise. - * gcse.c (alloc_gcse_mem, compute_local_properties, - prune_insertions_deletions, compute_pre_data, - pre_expr_reaches_here_p, one_pre_gcse_pass, - compute_code_hoist_vbeinout, should_hoist_expr_to_dom, hoist_code, - one_code_hoisting_pass): Likewise. - * graph.c (draw_cfg_nodes_no_loops): Likewise. - * graphite-sese-to-poly.c (build_scop_bbs): Likewise. - * haifa-sched.c (unlink_bb_notes): Likewise. - * ipa-split.c (execute_split_functions): Likewise. - * ira-build.c (create_loop_tree_nodes, remove_unnecessary_regions): - Likewise. - * ira-emit.c (ira_emit): Likewise. - * ira.c (find_moveable_pseudos, ira): Likewise. - * lcm.c (compute_antinout_edge, compute_laterin, - compute_insert_delete, pre_edge_lcm, compute_available, - compute_nearerout, compute_rev_insert_delete, - pre_edge_rev_lcm): Likewise. - * loop-unroll.c (opt_info_start_duplication, apply_opt_in_copies): - Likewise. - * lower-subreg.c (decompose_multiword_subregs): Likewise. - * lra-lives.c (lra_create_live_ranges): Likewise. - * lra.c (lra): Likewise. - * mode-switching.c (optimize_mode_switching): Likewise. - * recog.c (split_all_insns): Likewise. - * regcprop.c (copyprop_hardreg_forward): Likewise. - * regrename.c (regrename_analyze): Likewise. - * reload1.c (reload): Likewise. - * resource.c (init_resource_info): Likewise. - * sched-rgn.c (haifa_find_rgns, extend_rgns, compute_trg_info, - realloc_bb_state_array, schedule_region, extend_regions): Likewise. - * sel-sched-ir.c (sel_extend_global_bb_info, extend_region_bb_info, - recompute_rev_top_order, sel_init_pipelining, - make_regions_from_the_rest): Likewise. - * store-motion.c (remove_reachable_equiv_notes,build_store_vectors) - Likewise. - * tracer.c (tail_duplicate): Likewise. - * trans-mem.c (tm_region_init, get_bb_regions_instrumented): Likewise. - * tree-cfg.c (create_bb, cleanup_dead_labels, gimple_dump_cfg, - gimple_flow_call_edges_add): Likewise. - * tree-cfgcleanup.c (split_bbs_on_noreturn_calls, - cleanup_tree_cfg_1): Likewise. - * tree-complex.c (tree_lower_complex): Likewise. - * tree-inline.c (copy_cfg_body): Likewise. - * tree-into-ssa.c (mark_phi_for_rewrite, rewrite_into_ssa, - prepare_def_site_for, update_ssa): Likewise. - * tree-ssa-dce.c (tree_dce_init, perform_tree_ssa_dce): Likewise. - * tree-ssa-dom.c (record_edge_info): Likewise. - * tree-ssa-live.c (new_tree_live_info, live_worklist): Likewise. - * tree-ssa-loop-im.c (fill_always_executed_in_1): Likewise. - * tree-ssa-loop-manip.c (copy_phi_node_args - gimple_duplicate_loop_to_header_edge): Likewise. - * tree-ssa-pre.c (compute_antic): Likewise. - * tree-ssa-propagate.c (ssa_prop_init): Likewise. - * tree-ssa-reassoc.c (init_reassoc): Likewise. - * tree-ssa-sccvn.c (init_scc_vn): Likewise. - * tree-ssa-tail-merge.c (init_worklist): Likewise. - * tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise. - * tree-stdarg.c (reachable_at_most_once): Likewise. - * tree-vrp.c (find_assert_locations): Likewise. - * var-tracking.c (vt_find_locations): Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (profile_status): Eliminate macro. - - * cfgbuild.c (find_many_sub_basic_blocks): Eliminate use of - profile_status macro in favor of profile_status_for_fn, making - use of cfun explicit. - * cfghooks.c (account_profile_record): Likewise. - * cfgloopanal.c (single_likely_exit): - * cfgrtl.c (rtl_verify_edges, rtl_account_profile_record): Likewise. - * graphite.c (graphite_finalize): - * internal-fn.c (ubsan_expand_si_overflow_addsub_check, - ubsan_expand_si_overflow_neg_check, - ubsan_expand_si_overflow_mul_check): Likewise. - * ipa-split.c (consider_split, execute_split_functions): - * loop-unroll.c (decide_peel_simple): - * optabs.c (emit_cmp_and_jump_insn_1): - * predict.c (maybe_hot_edge_p, probably_never_executed, - predictable_edge_p, probability_reliable_p, gimple_predict_edge, - tree_estimate_probability_driver, estimate_bb_frequencies, - compute_function_frequency, rebuild_frequencies): Likewise. - * profile.c (compute_branch_probabilities): Likewise. - * tree-cfg.c (gimple_account_profile_record): Likewise. - * tree-inline.c (optimize_inline_calls): Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (label_to_block_map): Eliminate macro. - - * gimple.c (gimple_set_bb): Replace uses of label_to_block_map with - uses of label_to_block_map_for_fn, making uses of cfun be explicit. - * tree-cfg.c (delete_tree_cfg_annotations): Likewise. - (verify_gimple_label): Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (basic_block_info): Eliminate macro. - - * cfgrtl.c (rtl_create_basic_block): Replace uses of basic_block_info - with basic_block_info_for_fn, making uses of cfun be explicit. - * tree-cfg.c (build_gimple_cfg, create_bb): Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (BASIC_BLOCK): Eliminate macro. - - * alias.c (init_alias_analysis): Eliminate BASIC_BLOCK macro in - favor of uses of BASIC_BLOCK_FOR_FN, making uses of cfun explicit. - * bt-load.c (compute_defs_uses_and_gen, compute_out, link_btr_uses, - block_at_edge_of_live_range_p, migrate_btr_defs): Likewise. - * caller-save.c (insert_one_insn): Likewise. - * cfg.c (debug_bb, get_bb_original, get_bb_copy): Likewise. - * cfgexpand.c (add_scope_conflicts): Likewise. - * cfghooks.c (verify_flow_info): Likewise. - * cfgloop.c (flow_loops_find): Likewise. - * cfgrtl.c (rtl_flow_call_edges_add): Likewise. - * config/mips/mips.c (r10k_insert_cache_barriers): Likewise. - * config/s390/s390.c (s390_optimize_nonescaping_tx): Likewise. - * config/spu/spu.c (spu_machine_dependent_reorg): Likewise. - * cse.c (cse_main): Likewise. - * dce.c (fast_dce): Likewise. - * df-core.c (df_set_blocks, df_worklist_propagate_forward, - df_worklist_propagate_backward, df_worklist_dataflow_doublequeue, - df_bb_replace, df_dump_region): Likewise. - * df-problems.c (df_rd_bb_local_compute, df_lr_bb_local_compute, - df_live_bb_local_compute, df_chain_remove_problem) - df_chain_create_bb, df_word_lr_bb_local_compute, df_note_bb_compute, - df_md_bb_local_compute, df_md_local_compute, - df_md_transfer_function): Likewise. - * df-scan.c (df_scan_blocks, df_reorganize_refs_by_reg_by_insn, - df_reorganize_refs_by_insn, df_bb_refs_collect, - df_record_entry_block_defs, df_update_entry_block_defs, - df_record_exit_block_uses): Likewise. - * dominance.c (nearest_common_dominator_for_set): Likewise. - * gcse.c (hoist_code): Likewise. - * graph.c (draw_cfg_nodes_no_loops): Likewise. - * ipa-inline-analysis.c (param_change_prob, - estimate_function_body_sizes): Likewise. - * ipa-split.c (dominated_by_forbidden): Likewise. - * loop-unroll.c (apply_opt_in_copies): Likewise. - * lower-subreg.c (decompose_multiword_subregs): Likewise. - * lra-lives.c (lra_create_live_ranges): Likewise. - * predict.c (propagate_freq): Likewise. - * regrename.c (regrename_analyze): Likewise. - * regstat.c (regstat_bb_compute_ri, regstat_bb_compute_calls_crossed): - Likewise. - * resource.c (mark_target_live_regs): Likewise. - * sched-ebb.c (ebb_fix_recovery_cfg): Likewise. - * sched-int.h (EBB_FIRST_BB, EBB_LAST_BB): Likewise. - * sched-rgn.c (debug_region, dump_region_dot, too_large, - haifa_find_rgns, extend_rgns, compute_dom_prob_ps, update_live, - propagate_deps, sched_is_disabled_for_current_region_p): Likewise. - * sched-vis.c (debug_bb_n_slim): Likewise. - * sel-sched-ir.c (sel_finish_global_and_expr, verify_backedges, - purge_empty_blocks, sel_remove_loop_preheader): Likewise. - * sel-sched.c (remove_insns_that_need_bookkeeping) - (current_region_empty_p, sel_region_init, simplify_changed_insns): - Likewise. - * trans-mem.c (execute_tm_mark, execute_tm_edges, - tm_memopt_compute_antic, ipa_tm_scan_irr_function): Likewise. - * tree-cfg.c (make_edges, end_recording_case_labels, - label_to_block_fn, gimple_debug_bb, gimple_flow_call_edges_add, - remove_edge_and_dominated_blocks, remove_edge_and_dominated_blocks, - gimple_purge_all_dead_eh_edges, - gimple_purge_all_dead_abnormal_call_edges): Likewise. - * tree-cfgcleanup.c (fixup_noreturn_call, - split_bbs_on_noreturn_calls, cleanup_tree_cfg_1): Likewise. - * tree-inline.c (copy_cfg_body, fold_marked_statements): Likewise. - * tree-into-ssa.c (set_livein_block, prune_unused_phi_nodes, - insert_phi_nodes_for, insert_updated_phi_nodes_for): Likewise. - * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise. - * tree-ssa-live.c (live_worklist): Likewise. - * tree-ssa-loop-manip.c (compute_live_loop_exits, add_exit_phis_var, - find_uses_to_rename, copy_phi_node_args): Likewise. - * tree-ssa-pre.c (compute_antic): Likewise. - * tree-ssa-reassoc.c (update_range_test, optimize_range_tests): - Likewise. - * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise. - * tree-ssa-tail-merge.c (same_succ_hash, same_succ_def::equal, - same_succ_flush_bbs, update_worklist, set_cluster, - same_phi_alternatives, find_clusters_1, apply_clusters, - update_debug_stmts): Likewise. - * tree-ssa-threadupdate.c (mark_threaded_blocks, - thread_through_all_blocks): Likewise. - * tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise. - * tree-vrp.c (find_assert_locations): Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (SET_BASIC_BLOCK): Eliminate macro. - - * cfg.c (compact_blocks): Replace uses of SET_BASIC_BLOCK - with SET_BASIC_BLOCK_FOR_FN, making use of cfun explicit. - (expunge_block): Likewise. - * cfgrtl.c (create_basic_block_structure): Likewise. - * df-core.c (df_compact_blocks, df_bb_replace): Likewise. - * sel-sched.c (create_block_for_bookkeeping): Likewise. - * tree-cfg.c (create_bb): Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (profile_status_for_function): Rename to... - (profile_status_for_fn): ...this. - - * cfg.c (check_bb_profile): Update for renaming. - * cgraphbuild.c (compute_call_stmt_bb_frequency): Likewise. - * lto-streamer-in.c (input_cfg): Likewise. - * lto-streamer-out.c (output_cfg): Likewise. - * predict.c (maybe_hot_frequency_p, maybe_hot_count_p, - maybe_hot_bb_p, probably_never_executed) - (handle_missing_profiles): Likewise. - * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. - * tree-inline.c (copy_bb, initialize_cfun): Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (label_to_block_map_for_function): Rename to... - (label_to_block_map_for_fn): ...this. - - * lto-streamer-in.c (input_cfg): Update for renaming. - * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (last_basic_block_for_function): Rename to... - (last_basic_block_for_fn): ...this. - - * ipa-utils.c (ipa_merge_profiles): Update for renaming of - last_basic_block_for_function to last_basic_block_for_fn. - * lto-streamer-in.c (input_cfg): Likewise. - * lto-streamer-out.c (output_cfg): Likewise. - * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. - * tree-sra.c (propagate_dereference_distances, ipa_early_sra): - Likewise. - -2013-12-09 David Malcolm - - * basic-block.h (basic_block_info_for_function): Rename to... - (basic_block_info_for_fn): ...this. - (BASIC_BLOCK_FOR_FUNCTION): Rename to... - (BASIC_BLOCK_FOR_FN): ...this. - (SET_BASIC_BLOCK_FOR_FUNCTION): Rename to... - (SET_BASIC_BLOCK_FOR_FN): ...this. - - * gimple-streamer-in.c (input_phi, input_bb): Update for renaming - of BASIC_BLOCK_FOR_FUNCTION to BASIC_BLOCK_FOR_FN. - * ipa-utils.c (ipa_merge_profiles): Likewise. - * lto-streamer-in.c (make_new_block): Update for renaming of - SET_BASIC_BLOCK_FOR_FUNCTION to SET_BASIC_BLOCK_FOR_FN. - (input_cfg): Update for renamings. - * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. - (dump_function_to_file): Update for renaming of - basic_block_info_for_function to basic_block_info_for_fn. - -2013-12-09 Richard Biener - - PR middle-end/38474 - * tree-ssa-structalias.c (set_union_with_increment): Remove - unreachable code. - (do_complex_constraint): Call set_union_with_increment with - the solution delta, not the full solution. - (make_transitive_closure_constraints): Merge the two constraints. - -2013-12-09 Richard Earnshaw - - * arm.c (mem_ok_for_ldrd_strd): Rename first argument as MEM. Do - more address validation checks. - -2013-12-09 Marek Polacek - - PR sanitizer/59415 - * vtable-verify.c (verify_bb_vtables): Check the return value - of gimple_call_fn. Use is_gimple_call instead of gimple_code. - -2013-12-09 Kyrylo Tkachov - - * config/arm/arm.md (generic_sched): Add cortexa12. - (generic_vfp): Likewise. - * config/arm/arm.c (cortexa12_extra_costs): New cost table. - (arm_cortex_a12_tune): New tuning struct. - * config/arm/arm-cores.def: Add cortex-a12. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-tune.md: Likewise. - * config/arm/bpabi.h: Add cortex-a12. - * doc/invoke.texi: Document -mcpu=cortex-a12. - -2013-12-09 Francois-Xavier Coudert - - * doc/install.texi (Prerequisites): Explicitly mention C library - and its headers for multilib builds. - -2013-12-08 Oleg Endo - - PR target/52898 - PR target/51697 - * common/config/sh/sh-common.c (sh_option_optimization_table): Remove - OPT_mcbranchdi entry. - * config/sh/sh.opt (mcbranchdi, mcmpeqdi): Mark as undocumented and - emit a warning. - * config/sh/sh.c (sh_option_override): Initialize TARGET_CBRANCHDI4 - and TARGET_CMPEQDI_T variables. - * doc/invoke.texi (SH options): Undocument -mcbranchdi and -mcmpeqdi. - -2013-12-07 Maxim Kuvyrkov - - * config/linux.h: Fix typo in a comment. - -2013-12-07 Maxim Kuvyrkov - - * config.gcc (*linux*): Split libc selection from Android support. - Add libc selection to all *linux* targets. Add Android support to - architectures that support it. - (arm*-*-linux-*, i[34567]86-*-linux*, x86_64-*-linux*,) - (mips*-*-linux*): Add Android support. - -2013-12-07 Alexander Ivchenko - Maxim Kuvyrkov - - * config/bfin/uclinux.h, config/c6x/uclinux-elf.h, - * config/lm32/uclinux-elf.h, config/m68k/uclinux.h, - * config/moxie/uclinux.h (TARGET_LIBC_HAS_FUNCTION): Move definitions - to linux.h. - * config/linux-android.h (TARGET_HAS_IFUNC_P): Move definition - to linux.h. - * config/linux.h (TARGET_LIBC_HAS_FUNCTION, TARGET_HAS_IFUNC_P): - Define appropriately for Linux and uClinux targets. - -2013-12-07 Maxim Kuvyrkov - - * config/linux.c (linux_has_ifunc_p): Use correct test. - -2013-12-07 Maxim Kuvyrkov - - * config/linux.c (linux_android_has_ifunc_p): Rename to - linux_has_ifunc_p. - (linux_android_libc_has_function): Rename to linux_libc_has_function. - * config/linux-protos.h (linux_android_has_ifunc_p,) - (linux_android_libc_has_function): Update declarations. - * config/linux.h, config/linux-android.h, config/alpha/linux.h, - * config/rs6000/linux.h, config/rs6000/linux64.h: Update. - -2013-12-07 Maxim Kuvyrkov - - * linux-android.c: Rename to linux.c. - * t-linux-android: Rename to t-linux. Update references - to linux-android.c - * config.gcc: Update references to t-linux-android and linux-android.o. - -2013-12-07 Alan Modra - - * config/rs6000/rs6000.md (bswapdi2_32bit): Remove ?? from r->r - alternative. - -2013-12-07 Ralf Corsépius - - * config.gcc (microblaze*-*-rtems*): Add TARGET_BIG_ENDIAN_DEFAULT. - -2013-12-06 Vladimir Makarov - - * config/rs6000/rs600.md (*bswapdi2_64bit): Remove ?? from the - constraint. - -2013-12-06 Caroline Tice - - Submitting patch from Stephen Checkoway, s@cs.jhu.edu - * vtable-verify.c (verify_bb_vtables): Replace all uses of verified - vtable pointer with the results of the verification call, rather than - only the uses in the next statement. - -2013-12-06 Andrew Pinski - - PR target/59092 - * config/aarch64/aarch64.md (trap): New pattern. - -2013-12-06 Jakub Jelinek - - PR tree-optimization/59388 - * tree-ssa-reassoc.c (update_range_test): If op == range->exp, - gimplify tem after stmt rather than before it. - - * tree-data-ref.c (struct data_ref_loc_d): Replace pos field with ref. - (get_references_in_stmt): Don't record operand addresses, but - operands themselves. - (find_data_references_in_stmt, graphite_find_data_references_in_stmt): - Adjust for the pos -> ref change. - -2013-12-06 H.J. Lu - - * config.gcc: Change --with-cpu=ia to --with-cpu=intel. - - * config/i386/i386.c (cpu_names): Replace "ia" with "intel". - (processor_alias_table): Likewise. - (ix86_option_override_internal): Likewise. - * config/i386/i386.h (target_cpu_default): Replace - TARGET_CPU_DEFAULT_ia with TARGET_CPU_DEFAULT_intel. - - * doc/invoke.texi: Replace -mtune=ia with -mtune=intel. - -2013-12-06 Uros Bizjak - - PR target/59405 - * config/i386/i386.c (type_natural_mode): Properly handle - size 8 for !TARGET_64BIT. - -2013-12-06 Trevor Saunders - - * tree-ssa-pre.c (compute_antic_aux): Remove redundant call to - vec::release. - -2013-12-06 Ian Bolton - Mark Mitchell - - PR target/59091 - * config/arm/arm.md (trap): New pattern. - * config/arm/types.md: Added a type for trap. - -2013-12-06 Bernd Edlinger - - * expr.c (expand_assignment): Update bitregion_start and bitregion_end. - -2013-12-06 Eric Botcazou - - PR target/59316 - * config/sparc/sparc.h (SPARC_LOW_FE_EXCEPT_VALUES): Define. - * config/sparc/sol2.h (SPARC_LOW_FE_EXCEPT_VALUES): Redefine. - * config/sparc/sparc.c (TARGET_INIT_BUILTINS): Move around. - (TARGET_BUILTIN_DECL): Define. - (TARGET_ATOMIC_ASSIGN_EXPAND_FENV): Likewise. - (sparc32_initialize_trampoline): Adjust call to gen_flush. - (enum sparc_builtins): New enumeral type. - (sparc_builtins): New static array. - (sparc_builtins_icode): Likewise. - (def_builtin): Accept a separate icode and save the result. - (def_builtin_const): Likewise. - (sparc_fpu_init_builtins): New function. - (sparc_vis_init_builtins): Pass the builtin code. - (sparc_init_builtins): Call it if TARGET_FPU. - (sparc_builtin_decl): New function. - (sparc_expand_builtin): Deal with SPARC_BUILTIN_{LD,ST}FSR. - (sparc_handle_vis_mul8x16): Use the builtin code. - (sparc_fold_builtin): Likewise. Deal with SPARC_BUILTIN_{LD,ST}FSR - and SPARC_BUILTIN_PDISTN. - (compound_expr): New helper function. - (sparc_atomic_assign_expand_fenv): New function. - * config/sparc/sparc.md (unspecv): Reorder values, add UNSPECV_LDFSR - and UNSPECV_STFSR. - (flush, flushdi): Merge into single pattern. - (ldfsr): New instruction. - (stfsr): Likewise. - -2013-12-06 Oleg Endo - - * asan.c: Remove struct tags when referring to class varpool_node. - * cgraph.h: Likewise. - * cgraphbuild.c: Likewise. - * cgraphunit.c: Likewise. - * dbxout.c: Likewise. - * dwarf2out.c: Likewise. - * gimple-fold.c: Likewise. - * ipa-devirt.c: Likewise. - * ipa-ref-inline.h: Likewise. - * ipa-ref.h: Likewise. - * ipa-reference.c: Likewise. - * ipa-utils.c: Likewise. - * ipa.c: Likewise. - * lto-cgraph.c: Likewise. - * lto-streamer-out.c: Likewise. - * lto-streamer.h: Likewise. - * passes.c: Likewise. - * toplev.c: Likewise. - * tree-eh.c: Likewise. - * tree-emutls.c: Likewise. - * tree-pass.h: Likewise. - * tree-ssa-structalias.c: Likewise. - * tree-vectorizer.c: Likewise. - * tree.c: Likewise. - * varasm.c: Likewise. - * varpool.c: Likewise. - -2013-12-06 Oleg Endo - - * cgraphunit.c: Remove struct tags when referring to class - ipa_opt_pass_d or class opt_pass. - * function.h: Likewise. - * lto-cgraph.c: Likewise. - * pass_manager.h: Likewise. - * passes.c: Likewise. - * tree-pass.h: Likewise. - -2013-12-06 Richard Biener - - PR tree-optimization/59058 - * tree-vectorizer.h (struct _loop_vec_info): Add num_itersm1 member. - (LOOP_VINFO_NITERSM1): New macro. - * tree-vect-loop-manip.c (slpeel_tree_peel_loop_to_edge): Express - the vector loop entry test in terms of scalar latch executions. - (vect_do_peeling_for_alignment): Update LOOP_VINFO_NITERSM1. - * tree-vect-loop.c (vect_get_loop_niters): Also return the - number of latch executions. - (new_loop_vec_info): Initialize LOOP_VINFO_NITERSM1. - (vect_analyze_loop_form): Likewise. - (vect_generate_tmps_on_preheader): Compute the number of - vectorized iterations differently. - -2013-12-05 Jan-Benedict Glaw - - * config/score/score.c (score_force_temporary): Delete function. - (score_split_symbol): Ditto. - * config/score/score.h (ASM_OUTPUT_ADDR_DIFF_ELT): Add extra - parentheses to silence ambiguity warning and reindent. - -2013-12-05 Marek Polacek - - * doc/invoke.texi: Document -fsanitize=signed-integer-overflow. - -2013-12-05 H.J. Lu - - * config.gcc: Support --with-cpu=ia. - - * config/i386/i386.c (cpu_names): Add "ia". - (processor_alias_table): Likewise. - (ix86_option_override_internal): Disallow -march=ia. - * config/i386/i386.h (target_cpu_default): Add TARGET_CPU_DEFAULT_ia. - - * doc/invoke.texi: Document -mtune=ia. - -2013-12-05 Vladimir Makarov - - PR rtl-optimization/59317 - * lra-constraints.c (in_class_p): Don't ignore insn with constant - as a source. - -2013-12-05 Martin Jambor - - PR ipa/58253 - * ipa-prop.c (ipa_modify_formal_parameters): Create decls of - non-BLKmode in their naturally aligned type. - -2013-12-05 Marek Polacek - - PR sanitizer/59333 - PR sanitizer/59397 - * ubsan.c: Include rtl.h and expr.h. - (ubsan_encode_value): Add new parameter. If expanding, assign - a stack slot for DECL_RTL of the temporary and call expand_assignment. - Handle BOOLEAN_TYPE and ENUMERAL_TYPE. - (ubsan_build_overflow_builtin): Adjust ubsan_encode_value call. - * ubsan.h (ubsan_encode_value): Adjust declaration. - * internal-fn.c (ubsan_expand_si_overflow_addsub_check): Move - ubsan_build_overflow_builtin above expand_normal call. Surround - this call with push_temp_slots and pop_temp_slots. - (ubsan_expand_si_overflow_neg_check): Likewise. - (ubsan_expand_si_overflow_mul_check): Likewise. - -2013-12-05 Yufeng Zhang - - * gimple-ssa-strength-reduction.c (find_basis_for_candidate): Guard - the get_alternative_base call with flag_expensive_optimizations. - (alloc_cand_and_find_basis): Likewise. - -2013-12-05 Tejas Belagod - - * rtlanal.c (set_noop_p): Return nonzero in case of redundant - vec_select for overlapping register lanes. - -2013-12-05 Kirill Yukhin - - * config/i386/i386.c (ix86_expand_builtin): Generate - reg for readflags built-in when optimizing. - * config/i386/i386.md (*pushfl): Rename to ... - (pushfl2): This. Fix iterator. - (*popfl): Rename to ... - (*popfl1): This. Fix iterator. - -2013-12-05 Kirill Yukhin - - * config/i386/i386.c (IX86_BUILTIN_READ_FLAGS): New. - (IX86_BUILTIN_WRITE_FLAGS): Ditto. - (ix86_init_mmx_sse_builtins): Define - __builtin_ia32_writeeflags_u32, __builtin_ia32_writeeflags_u64, - __builtin_ia32_readeflags_u32, __builtin_ia32_readeflags_u64. - (ix86_expand_builtin): Expand them. - * config/i386/ia32intrin.h (__readeflags): New. - (__writeeflags): Ditto. - * config/i386/i386.md (*pushfl): Ditto. - (*popfl1): Ditto. - -2013-12-05 Richard Biener - - PR tree-optimization/59374 - * tree-vect-data-refs.c (vect_slp_analyze_data_ref_dependence): - Commonize known and unknown dependence case fixing the allowed - read-write dependence case and dropping code that should not matter. - -2013-12-05 Kirill Yukhin - - * config/ia64/ia64.md (prologue_allocate_stack): Block auto- - generation of predicated version. - (epilogue_deallocate_stack): Ditto. - (prologue_allocate_stack_pr): Add explicit predicated version. - (epilogue_deallocate_stack_pr): Ditto. - * config/ia64/ia64.c (ia64_single_set): Use explicit version. - -2013-12-05 Alan Modra - - * configure.ac (BUILD_CXXFLAGS) Don't use ALL_CXXFLAGS for - build != host. - : Clear GMPINC. Don't bother - saving CFLAGS. - -2013-12-04 Jakub Jelinek - Marek Polacek - - * opts.c (common_handle_option): Handle - -fsanitize=signed-integer-overflow. - * config/i386/i386.md (addv4, subv4, mulv4, - negv3, negv3_1): Define expands. - (*addv4, *subv4, *mulv4, *negv3): Define insns. - * sanitizer.def (BUILT_IN_UBSAN_HANDLE_ADD_OVERFLOW, - BUILT_IN_UBSAN_HANDLE_SUB_OVERFLOW, - BUILT_IN_UBSAN_HANDLE_MUL_OVERFLOW, - BUILT_IN_UBSAN_HANDLE_NEGATE_OVERFLOW): Define. - * ubsan.h (PROB_VERY_UNLIKELY, PROB_EVEN, PROB_VERY_LIKELY, - PROB_ALWAYS): Define. - (ubsan_build_overflow_builtin): Declare. - * gimple-fold.c (gimple_fold_stmt_to_constant_1): Add folding of - internal functions. - * ubsan.c (PROB_VERY_UNLIKELY): Don't define here. - (ubsan_build_overflow_builtin): New function. - (instrument_si_overflow): Likewise. - (ubsan_pass): Add signed integer overflow checking. - (gate_ubsan): Enable the pass also when SANITIZE_SI_OVERFLOW. - * flag-types.h (enum sanitize_code): Add SANITIZE_SI_OVERFLOW. - * internal-fn.c: Include ubsan.h and target.h. - (ubsan_expand_si_overflow_addsub_check): New function. - (ubsan_expand_si_overflow_neg_check): Likewise. - (ubsan_expand_si_overflow_mul_check): Likewise. - (expand_UBSAN_CHECK_ADD): Likewise. - (expand_UBSAN_CHECK_SUB): Likewise. - (expand_UBSAN_CHECK_MUL): Likewise. - * fold-const.c (fold_binary_loc): Don't fold A + (-B) -> A - B and - (-A) + B -> B - A when doing the signed integer overflow checking. - * internal-fn.def (UBSAN_CHECK_ADD, UBSAN_CHECK_SUB, UBSAN_CHECK_MUL): - Define. - * tree-vrp.c (extract_range_basic): Handle internal calls. - * optabs.def (addv4_optab, subv4_optab, mulv4_optab, negv4_optab): New - optabs. - * asan.c: Include predict.h. - (PROB_VERY_UNLIKELY, PROB_ALWAYS): Don't define here. - * predict.c: Move the PROB_* macros... - * predict.h (enum br_predictor): ...here. - (PROB_LIKELY, PROB_UNLIKELY): Define. - * trans-mem.c: Include predict.h. - (PROB_VERY_UNLIKELY, PROB_ALWAYS, PROB_VERY_LIKELY, - PROB_LIKELY, PROB_UNLIKELY): Don't define here. - -2013-12-04 Jeff Law - - * common.opt: Split up -fisolate-erroneous-paths into - -fisolate-erroneous-paths-dereference and - -fisolate-erroneous-paths-attribute. - * invoke.texi: Corresponding changes. - * gimple.c (infer_nonnull_range): Add and use new arguments to control - what kind of statements can be used to infer a non-null range. - * gimple.h (infer_nonnull_range): Update prototype. - * tree-vrp.c (infer_value_range): Corresponding changes. - * opts.c (default_options_table): Update due to option split. - * gimple-ssa-isolate-paths.c: Fix trailing whitespace. - (find_implicit_erroneous_behaviour): Pass additional arguments - to infer_nonnull_range. - (find_explicit_erroneous_behaviour): Similarly. - (gate_isolate_erroneous_paths): Check both of the new options. - -2013-12-04 Jeff Law - - * expr.c (expand_assignment): Update comments. - -2013-12-04 Tobias Burnus - - PR debug/37132 - * lto-streamer.h (LTO_tags): Add LTO_namelist_decl_ref. - * tree.def (NAMELIST_DECL): Add. - * tree.h (NAMELIST_DECL_ASSOCIATED_DECL): New macro. - * tree.c (initialize_tree_contains_struct): Add asserts for it. - * dwarf2out.c (gen_namelist_decl): New function. - (gen_decl_die, dwarf2out_decl): Call it. - (dwarf2out_imported_module_or_decl_1): Handle NAMELIST_DECL. - * lto-streamer-in.c (lto_input_tree_ref): Handle NAMELIST_DECL. - (lto_input_tree_ref, lto_input_tree_1): Update lto_tag_check_range - call. - * lto-streamer-out.c (lto_output_tree_ref): Handle NAMELIST_DECL. - -2013-12-03 Xinliang David Li - - * tree-ssa-structalias.c (constraint_set_union): Change return type - from void to bool. - (merge_node_constraints): Ditto. - (unify_nodes): Update changed set when constraints set changes. - -2013-12-04 H.J. Lu - - * configure.ac: Append gdbasan.in to .gdbinit if CFLAGS contains - -fsanitize=address. - * configure: Regenerated. - - * gdbasan.in: New file. - -2013-12-04 Jakub Jelinek - - PR rtl-optimization/58726 - * combine.c (force_to_mode): Fix comment typo. Don't destructively - modify x for ROTATE, ROTATERT and IF_THEN_ELSE. - -2013-12-04 Jakub Jelinek - Uros Bizjak - - PR target/59163 - * config/i386/i386.c (ix86_legitimate_combined_insn): If for - !TARGET_AVX there is misaligned MEM operand with vector mode - and get_attr_ssememalign is 0, return false. - (ix86_expand_special_args_builtin): Add get_pointer_alignment - computed alignment and for non-temporal loads/stores also - at least GET_MODE_ALIGNMENT as MEM_ALIGN. - * config/i386/sse.md - (_loadu, - _storeu, - _loaddqu, - _storedqu, _lddqu, - sse_vmrcpv4sf2, sse_vmrsqrtv4sf2, sse2_cvtdq2pd, sse_movhlps, - sse_movlhps, sse_storehps, sse_loadhps, sse_loadlps, - *vec_interleave_highv2df, *vec_interleave_lowv2df, - *vec_extractv2df_1_sse, sse2_movsd, sse4_1_v8qiv8hi2, - sse4_1_v4qiv4si2, sse4_1_v4hiv4si2, - sse4_1_v2qiv2di2, sse4_1_v2hiv2di2, - sse4_1_v2siv2di2, sse4_2_pcmpestr, *sse4_2_pcmpestr_unaligned, - sse4_2_pcmpestri, sse4_2_pcmpestrm, sse4_2_pcmpestr_cconly, - sse4_2_pcmpistr, *sse4_2_pcmpistr_unaligned, sse4_2_pcmpistri, - sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Add ssememalign attribute. - * config/i386/i386.md (ssememalign): New define_attr. - -2013-12-04 Jakub Jelinek - - PR tree-optimization/59355 - * ipa-devirt.c (gate_ipa_devirt): Return false if !flag_devirtualize. - * opts.c (common_handle_option): Fix comment spelling. - -2013-12-04 Yufeng Zhang - - * gimple-ssa-strength-reduction.c: Include tree-affine.h. - (name_expansions): New static variable. - (alt_base_map): Ditto. - (get_alternative_base): New function. - (find_basis_for_candidate): For CAND_REF, optionally call - find_basis_for_base_expr with the returned value from - get_alternative_base. - (record_potential_basis): Add new parameter 'base' of type 'tree'; - add an assertion of non-NULL base; use base to set node->base_expr. - (alloc_cand_and_find_basis): Update; call record_potential_basis - for CAND_REF with the returned value from get_alternative_base. - (replace_refs): Dump details on the replacing. - (execute_strength_reduction): Call pointer_map_create for - alt_base_map; call free_affine_expand_cache with &name_expansions. - -2013-12-03 Wei Mi - - PR rtl-optimization/59020 - * sched-deps.c (try_group_insn): Move it from haifa-sched.c to here. - (sched_analyze_insn): Call try_group_insn. - (sched_analyze): Cleanup SCHED_GROUP_P before start the analysis. - * haifa-sched.c (try_group_insn): Moved to sched-deps.c. - (group_insns_for_macro_fusion): Removed. - (sched_init): Remove calling group_insns_for_macro_fusion. - -2013-12-03 Peter Bergner - - * config/rs6000/htmintrin.h (_TEXASR_INSTRUCTION_FETCH_CONFLICT): Fix - typo in macro name. - (_TEXASRU_INSTRUCTION_FETCH_CONFLICT): Likewise. - -2013-12-03 Vladimir Makarov - - * config/aarch64/aarch64.c (aarch64_frame_pointer_required): Check - LR_REGNUM. - (aarch64_can_eliminate): Don't check elimination source when - frame_pointer_required is false. - -2013-12-03 Senthil Kumar Selvaraj - - * config/avr/avr.c (avr_option_override): Warn if asked to generate - position independent code. - * config/avr/avr.h: Modify LINK_SPEC to reject -shared. - -2013-12-03 H.J. Lu - - PR target/59363 - * config/i386/i386.c (emit_memset): Adjust destination address - after gen_strset. - (expand_setmem_epilogue): Likewise. - -2013-12-03 Marek Polacek - - PR middle-end/56344 - * calls.c (expand_call): Disallow passing huge arguments by value. - -2013-12-03 Jakub Jelinek - - PR tree-optimization/59362 - * tree-object-size.c (object_sizes): Change into array of - vec. - (compute_builtin_object_size): Check computed bitmap for - non-NULL instead of object_sizes. Call safe_grow on object_sizes - vector if new SSA_NAMEs appeared. - (init_object_sizes): Check computed bitmap for non-NULL. - Call safe_grow on object_sizes elements instead of initializing - it with XNEWVEC. - (fini_object_sizes): Call release on object_sizes elements, don't - set it to NULL. - - PR middle-end/59011 - * gimplify.c (nonlocal_vla_vars): New variable. - (gimplify_var_or_parm_decl): Put VAR_DECLs for VLAs into - nonlocal_vla_vars chain. - (gimplify_body): Call declare_vars on nonlocal_vla_vars chain - if outer_bind has DECL_INITIAL (current_function_decl) block. - - PR target/58864 - * dojump.c (save_pending_stack_adjust, restore_pending_stack_adjust): - New functions. - * expr.h (struct saved_pending_stack_adjust): New type. - (save_pending_stack_adjust, restore_pending_stack_adjust): New - prototypes. - * optabs.c (emit_conditional_move): Call save_pending_stack_adjust - and get_last_insn before do_pending_stack_adjust, call - restore_pending_stack_adjust after delete_insns_since. - * expr.c (expand_expr_real_2): Don't call do_pending_stack_adjust - before calling emit_conditional_move. - * expmed.c (expand_sdiv_pow2): Likewise. - * calls.c (expand_call): Use {save,restore}_pending_stack_adjust. - -2013-12-02 Jeff Law - - PR tree-optimization/59322 - * tree-ssa-threadedge.c (create_edge_and_update_destination_phis): - Remove code which copied jump threading paths. - -2013-12-02 Sriraman Tallam - - PR target/58944 - * config/i386/i386.opt (ix86_arch_string): Mark this variable - for saving in cl_target_option. - (ix86_tune_string): Ditto. - (ix86_cmodel): Ditto. - (ix86_abi): Ditto. - (ix86_asm_dialect): Ditto. - (ix86_branch_cost): Ditto. - (ix86_dump_tunes): Ditto. - (ix86_force_align_arg_pointer): Ditto. - (ix86_force_drap): Ditto. - (ix86_incoming_stack_boundary_arg): Ditto. - (ix86_pmode): Ditto. - (ix86_preferred_stack_boundary_arg): Ditto. - (ix86_recip_name): Ditto. - (ix86_regparm): Ditto. - (ix86_section_threshold): Ditto. - (ix86_sse2avx): Ditto. - (ix86_stack_protector_guard): Ditto. - (ix86_stringop_alg): Ditto. - (ix86_tls_dialect): Ditto. - (ix86_tune_ctrl_string): Ditto. - (ix86_tune_memcpy_strategy): Ditto. - (ix86_tune_memset_strategy): Ditto. - (ix86_tune_no_default): Ditto. - (ix86_veclibabi_type): Ditto. - * config/i386/i386.c (function_specific_save): Save the above - variables in gcc_options to cl_target_option. - (function_specific_restore): Do the reverse done in - function_specific_save. - (ix86_valid_target_attribute_tree): Change ix86_arch_string - and ix86_tune_string to use the opts structure. - (ix86_option_override_internal):Change - ix86_incoming_stack_boundary_arg to - opts->x_ix86_incoming_stack_boundary_arg - -2013-12-02 Joern Rennecke - - * config/epiphany/epiphany.h: Wrap rtl_opt_pass declarations - in #ifndef IN_LIBGCC2 / #endif. - -2013-12-02 Jakub Jelinek - - PR tree-optimization/59358 - * tree-vrp.c (union_ranges): To check for the partially overlapping - ranges or adjacent ranges, also compare *vr0max with vr1max. - -2013-12-02 Sterling Augustine   - - * dwarf2out.c (output_pubnames): Use comp_unit_die ()->die_offset - when there isn't a skeleton die. - -2013-12-02 Marek Polacek - - PR sanitizer/59353 - * doc/invoke.texi: Document -fsanitize=return. - -2013-12-02 Tobias Burnus - Manuel López-Ibáñez - - PR middle-end/59257 - * doc/invoke.texi: Add missing @opindex. - (-fsanitize=): Use @gcctabopt instead of @itemize. - -2013-12-02 Bernd Edlinger - - Fix C++0x memory model for unaligned fields in packed, aligned(4) - structures with -fno-strict-volatile-bitfields on STRICT_ALIGNMENT - targets like arm-none-eabi. - * expr.c (expand_assignment): Handle normal fields like bit regions. - -2013-12-02 Bernd Edlinger - - PR target/58115 - * function.c (invoke_set_current_function_hook): Call - targetm.set_current_function after setting this_fn_optabs. - -2013-12-02 Richard Biener - - PR tree-optimization/59139 - * tree-ssa-loop-niter.c (chain_of_csts_start): Properly match - code in get_val_for. - (get_val_for): Use gcc_checking_asserts. - -2013-12-02 Richard Biener - - PR middle-end/59199 - * tree-ssa-operands.c (opf_implicit): Remove. - (opf_address_taken): New flag. - (get_expr_operands): Remove early out, pass down opf_address_taken for - ADDR_EXPRs, add a use operand only for non-opf_address_taken bases. - (get_indirect_ref_operands): Rename to ... - (get_mem_ref_operands): ... this. - (get_asm_expr_operands): Rename to ... - (get_asm_stmt_operands): ... this. - -2013-12-02 Yuri Rumyantsev - - * ipa-inline.c (check_callers): Add missed pointer de-reference. - -2013-12-02 Eric Botcazou - - PR tree-optimization/59356 - * tree-dfa.h (get_addr_base_and_unit_offset_1) : Do the - offset computation using the precision of the index type. - -2013-12-02 Yvan Roux - - PR target/58785 - * config/arm/arm.c (arm_preferred_reload_class): Only return LO_REGS - when rclass is GENERAL_REGS. - -2013-12-02 Ganesh Gopalasubramanian - - * loop-unroll.c (decide_unroll_constant_iterations): Check macro - TARGET_LOOP_UNROLL_ADJUST while deciding unroll factor. - -2013-12-01 Eric Botcazou - - * config/i386/winnt.c (i386_pe_asm_named_section): Be prepared for an - identifier node. - -2013-12-01 Bernd Edlinger - - * expr.c (emit_group_store): Fix off-by-one BITFIELD_END argument. - -2013-11-30 Paulo Matos - Eric Botcazou - - * combine.c (reg_nonzero_bits_for_combine): Apply mask transformation - as applied to nonzero_sign_valid when last_set_mode has less precision - than mode. - -2013-11-30 Tobias Burnus - - PR sanitizer/59275 - * doc/invoke.texi (-fsanitize=address,leak): Mention the associated - environment variable and link to a list with flags. - (-fsanitize=thread): Ditto and update link. - -2013-11-29 Vladimir Makarov - - PR rtl-optimization/59340 - * lra.c (check_rtl): Use recog_memoized instead of insn_invalid_p. - - Revert - 2013-11-20 Robert Suchanek - - * lra.c (lra): Set lra_in_progress before check_rtl call. - * recog.c (insn_invalid_p): Add !lra_in_progress to prevent - adding clobber regs when LRA is running. - -2013-11-29 Kyrylo Tkachov - - PR target/59289 - * config/arm/arm.c (cortexa15_extra_costs): Adjust costs. - -2013-11-29 Richard Biener - - PR middle-end/59208 - * tree-ssa-operands.h (fini_ssa_operands, verify_ssa_operands, - free_stmt_operands, update_stmt_operands): Add struct function - argument. - * tree-ssa-operands.c: Remove uses of cfun, propagate struct - function argument from fini_ssa_operands, verify_ssa_operands, - free_stmt_operands and update_stmt_operands everywhere. - * tree-ssanames.h (release_ssa_name_fn): New. - (release_ssa_name): Inline wrapper around release_ssa_name_fn. - * tree-ssanames.c (release_ssa_name): Rename to ... - (release_ssa_name_fn): ... this and add struct function argument. - * gimple-ssa.h (update_stmt, update_stmt_if_modified): Adjust. - (update_stmt_fn): New function. - * tree-cfg.c (move_block_to_fn): Adjust. - * tree-if-conv.c (free_bb_predicate): Likewise. - * tree-ssa.c (verify_ssa): Likewise. - (delete_tree_ssa): Likewise. - * gimple-pretty-print.c (dump_gimple_mem_ops): Remove guard. - * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Call - update_stmt_fn instead of update_stmt. - -2013-11-29 Yvan Roux - - * config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Return NO_REGS - for LRA. - -2013-11-29 Yvan Roux - - * config/arm/arm.md (store_minmaxsi): Use only when - optimize_function_for_size_p. - -2013-11-29 Jakub Jelinek - Yury Gribov - - PR sanitizer/59063 - * config/gnu-user.h: Removed old code for setting up sanitizer libs. - * gcc.c: Using libsanitizer spec instead of explicit libs. - -2013-11-29 Ilya Enkovich - - Reverted: - 2013-11-20 Ilya Enkovich - * cgraph.h (varpool_node): Add need_bounds_init field. - * lto-cgraph.c (lto_output_varpool_node): Output - need_bounds_init value. - (input_varpool_node): Read need_bounds_init value. - * varpool.c (dump_varpool_node): Dump need_bounds_init field. - - Reverted: - 2013-11-20 Ilya Enkovich - * dbxout.c (dbxout_type): Ignore POINTER_BOUNDS_TYPE. - * dwarf2out.c (gen_subprogram_die): Ignore bound args. - (gen_type_die_with_usage): Skip pointer bounds. - (dwarf2out_global_decl): Likewise. - - Reverted: - 2013-11-18 Ilya Enkovich - * builtin-types.def (BT_FN_PTR_CONST_PTR_VAR): New. - * chkp-builtins.def (BUILT_IN_CHKP_BIND_BOUNDS): New. - * cfgexpand.c (expand_call_stmt): Expand BUILT_IN_CHKP_BIND_BOUNDS. - * gimple.c (gimple_call_get_nobnd_arg_index): Remove. - * gimple.h (gf_mask): Add GF_CALL_WITH_BOUNDS. - (gimple_call_with_bounds_p): New. - (gimple_call_set_with_bounds): New. - (gimple_call_num_nobnd_args): Remove. - (gimple_call_nobnd_arg): Remove. - * tree.h (CALL_WITH_BOUNDS_P): New. - * rtl.h (CALL_EXPR_WITH_BOUNDS_P): New. - - Reverted: - 2013-11-08 Ilya Enkovich - * common.opt (fcheck-pointer-bounds): Move to ... - * c-family/c.opt: ... here. - * langhooks-def.h (LANG_HOOKS_CHKP_SUPPORTED): Remove. - (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CHKP_SUPPORTED. - * langhooks.h (lang_hooks): Remove chkp_supported field. - * toplev.c (process_options): Remove chkp_supported check. - - Reverted: - 2013-10-30 Ilya Enkovich - * tree-core.h (tree_index): Add TI_POINTER_BOUNDS_TYPE. - * tree.h (POINTER_BOUNDS_P): New. - (BOUNDED_TYPE_P): New. - (BOUNDED_P): New. - (pointer_bounds_type_node): New. - * tree.c (build_common_tree_nodes): Initialize - pointer_bounds_type_node. - * gimple.h (gimple_call_get_nobnd_arg_index): New. - (gimple_call_num_nobnd_args): New. - (gimple_call_nobnd_arg): New. - (gimple_return_retbnd): New. - (gimple_return_set_retbnd): New - * gimple.c (gimple_build_return): Increase number of ops - for return statement. - (gimple_call_get_nobnd_arg_index): New. - * gimple-pretty-print.c (dump_gimple_return): Print second op. - - Reverted: - 2013-10-30 Ilya Enkovich - * ipa.c (cgraph_build_static_cdtor_1): Support contructors - with "chkp ctor" and "bnd_legacy" attributes. - * gimplify.c (gimplify_init_constructor): Avoid infinite - loop during gimplification of bounds initializer. - - Reverted: - 2013-10-30 Ilya Enkovich - * c-family/c-common.c (handle_bnd_variable_size_attribute): New. - (handle_bnd_legacy): New. - (c_common_attribute_table): Add bnd_variable_size and bnd_legacy. - * doc/extend.texi: Document bnd_variable_size and bnd_legacy - attributes. - - Reverted: - 2013-10-29 Ilya Enkovich - * builtin-types.def (BT_FN_VOID_CONST_PTR): New. - (BT_FN_PTR_CONST_PTR): New. - (BT_FN_CONST_PTR_CONST_PTR): New. - (BT_FN_PTR_CONST_PTR_SIZE): New. - (BT_FN_PTR_CONST_PTR_CONST_PTR): New. - (BT_FN_VOID_PTRPTR_CONST_PTR): New. - (BT_FN_VOID_CONST_PTR_SIZE): New. - (BT_FN_PTR_CONST_PTR_CONST_PTR_SIZE): New. - * chkp-builtins.def: New. - * builtins.def: include chkp-builtins.def. - (DEF_CHKP_BUILTIN): New. - * builtins.c (expand_builtin): Support BUILT_IN_CHKP_INIT_PTR_BOUNDS, - BUILT_IN_CHKP_NULL_PTR_BOUNDS, BUILT_IN_CHKP_COPY_PTR_BOUNDS, - BUILT_IN_CHKP_CHECK_PTR_LBOUNDS, BUILT_IN_CHKP_CHECK_PTR_UBOUNDS, - BUILT_IN_CHKP_CHECK_PTR_BOUNDS, BUILT_IN_CHKP_SET_PTR_BOUNDS, - BUILT_IN_CHKP_NARROW_PTR_BOUNDS, BUILT_IN_CHKP_STORE_PTR_BOUNDS, - BUILT_IN_CHKP_GET_PTR_LBOUND, BUILT_IN_CHKP_GET_PTR_UBOUND, - BUILT_IN_CHKP_BNDMK, BUILT_IN_CHKP_BNDSTX, BUILT_IN_CHKP_BNDCL, - BUILT_IN_CHKP_BNDCU, BUILT_IN_CHKP_BNDLDX, BUILT_IN_CHKP_BNDRET, - BUILT_IN_CHKP_INTERSECT, BUILT_IN_CHKP_ARG_BND, BUILT_IN_CHKP_NARROW, - BUILT_IN_CHKP_EXTRACT_LOWER, BUILT_IN_CHKP_EXTRACT_UPPER. - * common.opt (fcheck-pointer-bounds): New. - * toplev.c (process_options): Check Pointer Bounds Checker is - supported. - * doc/extend.texi: Document Pointer Bounds Checker built-in functions. - - Reverted: - 2013-10-30 Ilya Enkovich - * target.def (builtin_chkp_function): New. - (chkp_bound_type): New. - (chkp_bound_mode): New. - (fn_abi_va_list_bounds_size): New. - (load_bounds_for_arg): New. - (store_bounds_for_arg): New. - * targhooks.h (default_load_bounds_for_arg): New. - (default_store_bounds_for_arg): New. - (default_fn_abi_va_list_bounds_size): New. - (default_chkp_bound_type): New. - (default_chkp_bound_mode): New. - (default_builtin_chkp_function): New. - * targhooks.c (default_load_bounds_for_arg): New. - (default_store_bounds_for_arg): New. - (default_fn_abi_va_list_bounds_size): New. - (default_chkp_bound_type): New. - (default_chkp_bound_mode); New. - (default_builtin_chkp_function): New. - * doc/tm.texi.in (TARGET_FN_ABI_VA_LIST_BOUNDS_SIZE): New. - (TARGET_LOAD_BOUNDS_FOR_ARG): New. - (TARGET_STORE_BOUNDS_FOR_ARG): New. - (TARGET_BUILTIN_CHKP_FUNCTION): New. - (TARGET_CHKP_BOUND_TYPE): New. - (TARGET_CHKP_BOUND_MODE): New. - * doc/tm.texi: Regenerated. - * langhooks.h (lang_hooks): Add chkp_supported field. - * langhooks-def.h (LANG_HOOKS_CHKP_SUPPORTED): New. - (LANG_HOOKS_INITIALIZER); Add LANG_HOOKS_CHKP_SUPPORTED. - - Reverted: - 2013-10-24 Ilya Enkovich - * config/i386/constraints.md (B): New. - (Ti): New. - (Tb): New. - * config/i386/i386-c.c (ix86_target_macros_internal): Add __MPX__. - * config/i386/i386-modes.def (BND32): New. - (BND64): New. - * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): New. - * config/i386/i386.c (isa_opts): Add mmpx. - (regclass_map): Add bound registers. - (dbx_register_map): Likewise. - (dbx64_register_map): Likewise. - (svr4_dbx_register_map): Likewise. - (PTA_MPX): New. - (ix86_option_override_internal): Support MPX ISA. - (ix86_conditional_register_usage): Support bound registers. - (print_reg): Likewise. - (ix86_code_end): Add MPX bnd prefix. - (output_set_got): Likewise. - (ix86_output_call_insn): Likewise. - (ix86_print_operand): Add '!' (MPX bnd) print prefix support. - (ix86_print_operand_punct_valid_p): Likewise. - (ix86_print_operand_address): Support UNSPEC_BNDMK_ADDR and - UNSPEC_BNDMK_ADDR. - (ix86_class_likely_spilled_p): Add bound regs support. - (ix86_hard_regno_mode_ok): Likewise. - (x86_order_regs_for_local_alloc): Likewise. - (ix86_bnd_prefixed_insn_p): New. - * config/i386/i386.h (FIRST_PSEUDO_REGISTER): Fix to new value. - (FIXED_REGISTERS): Add bound registers. - (CALL_USED_REGISTERS): Likewise. - (REG_ALLOC_ORDER): Likewise. - (HARD_REGNO_NREGS): Likewise. - (TARGET_MPX): New. - (VALID_BND_REG_MODE): New. - (FIRST_BND_REG): New. - (LAST_BND_REG): New. - (reg_class): Add BND_REGS. - (REG_CLASS_NAMES): Likewise. - (REG_CLASS_CONTENTS): Likewise. - (BND_REGNO_P): New. - (ANY_BND_REG_P): New. - (BNDmode): New. - (HI_REGISTER_NAMES): Add bound registers. - * config/i386/i386.md (UNSPEC_BNDMK): New. - (UNSPEC_BNDMK_ADDR): New. - (UNSPEC_BNDSTX): New. - (UNSPEC_BNDLDX): New. - (UNSPEC_BNDLDX_ADDR): New. - (UNSPEC_BNDCL): New. - (UNSPEC_BNDCU): New. - (UNSPEC_BNDCN): New. - (UNSPEC_MPX_FENCE): New. - (BND0_REG): New. - (BND1_REG): New. - (type): Add mpxmov, mpxmk, mpxchk, mpxld, mpxst. - (length_immediate): Likewise. - (prefix_0f): Likewise. - (memory): Likewise. - (prefix_rep): Check for bnd prefix. - (length_nobnd): New. - (length): Use length_nobnd if specified. - (BND): New. - (bnd_ptr): New. - (BNDCHECK): New. - (bndcheck): New. - (*jcc_1): Add bnd prefix and rename length attr to length_nobnd. - (*jcc_2): Likewise. - (jump): Likewise. - (simple_return_internal): Likewise. - (simple_return_pop_internal): Likewise. - (*indirect_jump): Add MPX bnd prefix. - (*tablejump_1): Likewise. - (simple_return_internal_long): Likewise. - (simple_return_indirect_internal): Likewise. - (_mk): New. - (*_mk): New. - (mov): New. - (*mov_internal_mpx): New. - (_): New. - (*_): New. - (_ldx): New. - (*_ldx): New. - (_stx): New. - (*_stx): New. - * config/i386/predicates.md (lea_address_operand): Rename to... - (address_no_seg_operand): ... this. - (address_mpx_no_base_operand): New. - (address_mpx_no_index_operand): New. - (bnd_mem_operator): New. - * config/i386/i386.opt (mmpx): New. - * doc/invoke.texi: Add documentation for the flags -mmpx, -mno-mpx. - * doc/rtl.texi Add documentation for BND32mode and BND64mode. - - Reverted: - 2013-10-24 Ilya Enkovich - * mode-classes.def (MODE_POINTER_BOUNDS): New. - * tree.def (POINTER_BOUNDS_TYPE): New. - * genmodes.c (complete_mode): Support MODE_POINTER_BOUNDS. - (POINTER_BOUNDS_MODE): New. - (make_pointer_bounds_mode): New. - * machmode.h (POINTER_BOUNDS_MODE_P): New. - * stor-layout.c (int_mode_for_mode): Support MODE_POINTER_BOUNDS. - (layout_type): Support POINTER_BOUNDS_TYPE. - * tree-pretty-print.c (dump_generic_node): Support POINTER_BOUNDS_TYPE. - * tree.c (build_int_cst_wide): Support POINTER_BOUNDS_TYPE. - (type_contains_placeholder_1): Likewise. - * tree.h (POINTER_BOUNDS_TYPE_P): New. - * varasm.c (output_constant): Support POINTER_BOUNDS_TYPE. - * doc/rtl.texi (MODE_POINTER_BOUNDS): New. - -2013-11-29 Richard Biener - - PR middle-end/59338 - * tree-cfg.c (verify_expr): Restrict bounds verification of - BIT_FIELD_REF arguments to non-aggregate typed base objects. - -2013-11-29 Richard Biener - - PR tree-optimization/59334 - * tree-ssa-dce.c (eliminate_unnecessary_stmts): Fix bug - in previous commit. - -2013-11-29 Jakub Jelinek - Richard Biener - - PR lto/59326 - * omp-low.c (simd_clone_create): Return NULL if for definition - !cgraph_function_with_gimple_body_p (old_node). Call cgraph_get_body - before calling cgraph_function_versioning. - (expand_simd_clones): Look for "omp declare simd" attribute first. - Don't check targetm.simd_clone.compute_vecsize_and_simdlen here. - Punt if node->global.inlined_to. - (pass_omp_simd_clone::gate): Also enable if in_lto_p && !flag_wpa. - Disable pass if targetm.simd_clone.compute_vecsize_and_simdlen is NULL. - * lto-streamer-out.c (hash_tree): Handle OMP_CLAUSE. - -2013-11-29 Jakub Jelinek - - PR lto/59326 - * tree-core.h (enum omp_clause_schedule_kind): Add - OMP_CLAUSE_SCHEDULE_LAST. - (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_LAST. - (enum omp_clause_depend_kind): Add OMP_CLAUSE_DEPEND_LAST. - (enum omp_clause_map_kind): Add OMP_CLAUSE_MAP_LAST. - (enum omp_clause_proc_bind_kind): Add OMP_CLAUSE_PROC_BIND_LAST. - * lto-streamer-out.c (lto_is_streamable): Allow streaming OMP_CLAUSE. - (DFS_write_tree_body): Handle OMP_CLAUSE. - * tree-streamer-out.c (pack_ts_omp_clause_value_fields): New function. - (streamer_pack_tree_bitfields): Call it for OMP_CLAUSE. - (write_ts_omp_clause_tree_pointers): New function. - (streamer_write_tree_body): Call it for OMP_CLAUSE. - (streamer_write_tree_header): For OMP_CLAUSE stream OMP_CLAUSE_CODE. - * tree-streamer-in.c (unpack_ts_omp_clause_value_fields): New function. - (unpack_value_fields): Call it for OMP_CLAUSE. - (streamer_alloc_tree): Handle OMP_CLAUSE. - (lto_input_ts_omp_clause_tree_pointers): New function. - (streamer_read_tree_body): Call it for OMP_CLAUSE. - -2013-11-29 Joseph Myers - - * doc/implement-c.texi: Document C11 implementation-defined - behavior. Refer to -ffp-contract=fast for contraction behavior. - * doc/invoke.texi (-std=c99, std=c11): Update description of - completeness. - (-std=gnu99): Don't mention as future default. - (-std=gnu11): Mention as intended future default. - * doc/standards.texi: Update descriptions of C99 and C11 support. - Limit statement about C99 facilities for freestanding - implementations to some platforms only. - -2013-11-28 Jakub Jelinek - - PR middle-end/59327 - * cfgexpand.c (expand_used_vars): Avoid warning on 32-bit HWI hosts. - -2013-11-28 Vladimir Makarov - - PR target/57293 - * ira.h (ira_setup_eliminable_regset): Remove parameter. - * ira.c (ira_setup_eliminable_regset): Ditto. Add - SUPPORTS_STACK_ALIGNMENT for crtl->stack_realign_needed. - Don't call lra_init_elimination. - (ira): Call ira_setup_eliminable_regset without arguments. - * loop-invariant.c (calculate_loop_reg_pressure): Remove argument - from ira_setup_eliminable_regset call. - * gcse.c (calculate_bb_reg_pressure): Ditto. - * haifa-sched.c (sched_init): Ditto. - * lra.h (lra_init_elimination): Remove the prototype. - * lra-int.h (lra_insn_recog_data): New member sp_offset. Move - used_insn_alternative upper. - (lra_eliminate_regs_1): Add one more parameter. - (lra-eliminate): Ditto. - * lra.c (lra_invalidate_insn_data): Set sp_offset. - (setup_sp_offset): New. - (lra_process_new_insns): Call setup_sp_offset. - (lra): Add argument to lra_eliminate calls. - * lra-constraints.c (get_equiv_substitution): Rename to get_equiv. - (get_equiv_with_elimination): New. - (process_addr_reg): Call get_equiv_with_elimination instead of - get_equiv_substitution. - (equiv_address_substitution): Ditto. - (loc_equivalence_change_p): Ditto. - (loc_equivalence_callback, lra_constraints): Ditto. - (curr_insn_transform): Ditto. Print the sp offset - (process_alt_operands): Prevent stack pointer reloads. - (lra_constraints): Remove one argument from lra_eliminate call. - Move it up. Mark used hard regs bfore it. Use - get_equiv_with_elimination instead of get_equiv_substitution. - * lra-eliminations.c (lra_eliminate_regs_1): Add parameter and - assert for param values combination. Use sp offset. Add argument - to lra_eliminate_regs_1 calls. - (lra_eliminate_regs): Add argument to lra_eliminate_regs_1 call. - (curr_sp_change): New static var. - (mark_not_eliminable): Add parameter. Update curr_sp_change. - Don't prevent elimination to sp if we can calculate its change. - Pass the argument to mark_not_eliminable calls. - (eliminate_regs_in_insn): Add a parameter. Use sp offset. Add - argument to lra_eliminate_regs_1 call. - (update_reg_eliminate): Move calculation of hard regs for spill - lower. Switch off lra_in_progress temporarily to generate regs - involved into elimination. - (lra_init_elimination): Rename to init_elimination. Make it - static. Set up insn sp offset, check the offsets at the end of BBs. - (process_insn_for_elimination): Add parameter. Pass its value to - eliminate_regs_in_insn. - (lra_eliminate): : Add parameter. Pass its value to - process_insn_for_elimination. Add assert for param values - combination. Call init_elimination. Don't update offsets in - equivalence substitutions. - * lra-spills.c (assign_mem_slot): Don't call lra_eliminate_regs_1 - for created stack slot. - (remove_pseudos): Call lra_eliminate_regs_1 before changing memory - onto stack slot. - -2013-11-28 Kyrylo Tkachov - - * config/arm/iterators.md (vrint_conds): New int attribute. - * config/arm/vfp.md (2): Set conds attribute. - (smax3): Likewise. - (smin3): Likewise. - -2013-11-28 Richard Sandiford - - * tree-core.h (tree_base): Document use of static_flag for SSA_NAME. - * tree.h (SSA_NAME_ANTI_RANGE_P, SSA_NAME_RANGE_TYPE): New macros. - * tree-ssanames.h (set_range_info): Add range_type argument. - (duplicate_ssa_name_range_info): Likewise. - * tree-ssanames.c (set_range_info): Take the range type as argument - and store it in SSA_NAME_ANTI_RANGE_P. - (duplicate_ssa_name_range_info): Likewise. - (get_range_info): Use SSA_NAME_ANTI_RANGE_P. - (set_nonzero_bits): Update call to set_range_info. - (duplicate_ssa_name_fn): Update call to duplicate_ssa_name_range_info. - * tree-ssa-copy.c (fini_copy_prop): Likewise. - * tree-vrp.c (remove_range_assertions): Update call to set_range_info. - (vrp_finalize): Likewise, passing anti-ranges directly. - -2013-11-28 Richard Biener - - PR tree-optimization/59330 - * tree-ssa-dce.c (eliminate_unnecessary_stmts): Simplify - and fix delayed marking of free calls not necessary. - -2013-11-28 Andrew MacLeod - - * tree-ssa-propagate.c (valid_gimple_call_p): Pass TREE_TYPE to - is_gimple_reg_type. - * ipa-prop.c (determine_known_aggregate_parts): Likewise. - -2013-11-28 Terry Guo - - * config/arm/arm.c (v7m_extra_costs): New table. - (arm_v7m_tune): Use it. - -2013-11-28 Rainer Orth - - * config/sol2.h (TIME_LIBRARY): Define. - -2013-11-28 Richard Biener - - PR lto/59323 - * lto-streamer-out.c (tree_is_indexable): TYPE_DECLs and - CONST_DECLs in function context are not indexable. - -2013-11-28 Chung-Ju Wu - - * config/nds32/nds32.c (nds32_rtx_costs): Adjust MULT cost if it is - not optimized for size. - -2013-11-28 Jakub Jelinek - - * cfgexpand.c (struct stack_vars_data): Add asan_base and asan_alignb - fields. - (expand_stack_vars): For -fsanitize=address, use (and set initially) - data->asan_base as base for vars and update asan_alignb. - (expand_used_vars): Initialize data.asan_base and data.asan_alignb. - Pass them to asan_emit_stack_protection. - * asan.c (asan_detect_stack_use_after_return): New variable. - (asan_emit_stack_protection): Add pbase and alignb arguments. - Implement use after return sanitization. - * asan.h (asan_emit_stack_protection): Adjust prototype. - (ASAN_STACK_MAGIC_USE_AFTER_RET, ASAN_STACK_RETIRED_MAGIC): Define. - -2013-11-28 Sergey Ostanevich - - * common.opt: Introduced a new option -fsimd-cost-model. - * doc/invoke.texi: Introduced a new openmp-simd warning and - a new -fsimd-cost-model option. - * tree-vectorizer.h (unlimited_cost_model): Interface updated - to rely on the particular loop info. - * tree-vect-data-refs.c (vect_peeling_hash_insert): Ditto. - (vect_peeling_hash_choose_best_peeling): Ditto. - (vect_enhance_data_refs_alignment): Ditto. - * tree-vect-slp.c (vect_slp_analyze_bb_1): Ditto. - * tree-vect-loop.c (vect_estimate_min_profitable_iters): Ditto - plus added openmp-simd warining. - -2013-11-27 H.J. Lu - - PR rtl-optimization/59311 - * dwarf2cfi.c (dwf_regno): Assert reg isn't pseudo register. - * lra-spills.c (spill_pseudos): Handle REG_XXX notes. - -2013-11-27 Eric Botcazou - - * var-tracking.c (track_expr_p): Do not track declarations for parts - of tracked parameters. - (add_stores): Do not track values for tracked parameters passed in - multiple locations. - (vt_get_decl_and_offset): Handle PARALLEL. - (vt_add_function_parameter): Handle parameters with incoming PARALLEL. - -2013-11-27 Jeff Law - - * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not - clobber the loop structure thread_block was unsuccessful. If - thread_block was unsuccessful, cleanup appropriately. - -2013-11-27 Chen Liqin - - * config/score/score.h (REG_CLASS_FROM_LETTER): Delete. - (score_char_to_class): Likewise. - -2013-11-27 Kenneth Zadeck - - * fold-const.c (int_const_binop_1): Make INT_MIN % -1 return 0 with - the overflow bit set. - -2013-11-27 Richard Biener - - PR middle-end/58723 - * cgraphbuild.c (build_cgraph_edges): Do not build edges - for internal calls. - (rebuild_cgraph_edges): Likewise. - * ipa-inline-analysis.c (estimate_function_body_sizes): - Skip internal calls. - * tree-inline.c (estimate_num_insns): Estimate size of internal - calls as 0. - (gimple_expand_calls_inline): Do not try inline-expanding - internal calls. - * lto-streamer-in.c (input_cfg): Stream loop safelen, - force_vect and simduid. - (input_struct_function_base): Stream has_force_vect_loops - and has_simduid_loops. - (input_function): Adjust. - * lto-streamer-out.c (output_cfg): Stream loop safelen, - force_vect and simduid. - (output_struct_function_base): Stream has_force_vect_loops - and has_simduid_loops. - -2013-11-27 Kai Tietz - - * config/i386/winnt.c (i386_pe_section_type_flags): Use const - pointer cast. - -2013-11-27 Kugan Vivekanandarajah - - * doc/tm.texi.in (TARGET_HAS_NO_HW_DIVIDE): Define. - * doc/tm.texi (TARGET_HAS_NO_HW_DIVIDE): Regenerate. - -2013-11-27 Marek Polacek - - PR sanitizer/59306 - * ubsan.c (instrument_null): Use gimple_store_p/gimple_assign_load_p - instead of walk_gimple_op. - (ubsan_pass): Adjust. Call instrument_null only if SANITIZE_NULL. - -2013-11-27 Aldy Hernandez - Jakub Jelinek - - * cgraph.h (enum cgraph_simd_clone_arg_type): New. - (struct cgraph_simd_clone_arg, struct cgraph_simd_clone): New. - (struct cgraph_node): Add simdclone and simd_clones fields. - * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen, - ix86_simd_clone_adjust, ix86_simd_clone_usable): New functions. - (TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN, - TARGET_SIMD_CLONE_ADJUST, TARGET_SIMD_CLONE_USABLE): Define. - * doc/tm.texi.in (TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN, - TARGET_SIMD_CLONE_ADJUST, TARGET_SIMD_CLONE_USABLE): Add. - * doc/tm.texi: Regenerated. - * ggc.h (ggc_alloc_cleared_simd_clone_stat): New function. - * ipa-cp.c (determine_versionability): Fail if "omp declare simd" - attribute is present. - * omp-low.c: Include pretty-print.h, ipa-prop.h and tree-eh.h. - (simd_clone_vector_of_formal_parm_types): New function. - (simd_clone_struct_alloc, simd_clone_struct_copy, - simd_clone_vector_of_formal_parm_types, simd_clone_clauses_extract, - simd_clone_compute_base_data_type, simd_clone_mangle, - simd_clone_create, simd_clone_adjust_return_type, - create_tmp_simd_array, simd_clone_adjust_argument_types, - simd_clone_init_simd_arrays): New functions. - (struct modify_stmt_info): New type. - (ipa_simd_modify_stmt_ops, ipa_simd_modify_function_body, - simd_clone_adjust, expand_simd_clones, ipa_omp_simd_clone): New - functions. - (pass_data_omp_simd_clone): New variable. - (pass_omp_simd_clone): New class. - (make_pass_omp_simd_clone): New function. - * passes.def (pass_omp_simd_clone): New. - * target.def (TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN, - TARGET_SIMD_CLONE_ADJUST, TARGET_SIMD_CLONE_USABLE): New target hooks. - * target.h (struct cgraph_node, struct cgraph_simd_node): Declare. - * tree-core.h (OMP_CLAUSE_LINEAR_VARIABLE_STRIDE): Document. - * tree.h (OMP_CLAUSE_LINEAR_VARIABLE_STRIDE): Define. - * tree-pass.h (make_pass_omp_simd_clone): New prototype. - * tree-vect-data-refs.c: Include cgraph.h. - (vect_analyze_data_refs): Inline by hand find_data_references_in_loop - and find_data_references_in_bb, if find_data_references_in_stmt - fails, still allow calls to #pragma omp declare simd functions - in #pragma omp simd loops unless they contain data references among - the call arguments or in lhs. - * tree-vect-loop.c (vect_determine_vectorization_factor): Handle - calls with no lhs. - (vect_transform_loop): Allow NULL STMT_VINFO_VECTYPE for calls - without lhs. - * tree-vectorizer.h (enum stmt_vec_info_type): Add - call_simd_clone_vec_info_type. - (struct _stmt_vec_info): Add simd_clone_fndecl field. - (STMT_VINFO_SIMD_CLONE_FNDECL): Define. - * tree-vect-stmts.c: Include tree-ssa-loop.h, - tree-scalar-evolution.h and cgraph.h. - (vectorizable_call): Handle calls without lhs. Assert - !stmt_can_throw_internal instead of failing for it. Don't update - EH stuff. - (struct simd_call_arg_info): New. - (vectorizable_simd_clone_call): New function. - (vect_transform_stmt): Call it. - (vect_analyze_stmt): Likewise. Allow NULL STMT_VINFO_VECTYPE for - calls without lhs. - * ipa-prop.c (ipa_add_new_function): Only call ipa_analyze_node - if cgraph_function_with_gimple_body_p is true. - -2013-11-27 Tom de Vries - Marc Glisse - - PR middle-end/59037 - * fold-const.c (fold_indirect_ref_1): Don't create out-of-bounds - BIT_FIELD_REF. - * gimple-fold.c (gimple_fold_indirect_ref): Same. - * tree-cfg.c (verify_expr): Give error if BIT_FIELD_REF is - out-of-bounds. - -2013-11-27 Eric Botcazou - - PR middle-end/59138 - * expr.c (emit_group_store): Don't write past the end of the structure. - (store_bit_field): Fix formatting. - -2013-11-27 Richard Biener - - PR tree-optimization/59288 - * tree-vect-loop.c (get_initial_def_for_induction): Do not - re-analyze the PHI but use STMT_VINFO_LOOP_PHI_EVOLUTION_PART. - -2013-11-27 Marek Polacek - - * ubsan.c (ubsan_type_descriptor): If varpool_get_node returns NULL - for a decl, recreate that decl. Save into the hash table VAR_DECLs - rather than ADDR_EXPRs. - -2013-11-27 Alexander Ivchenko - - * config/ia64/hpux.h (TARGET_LIBC_HAS_FUNCTION): Fix typo. - -2013-11-26 David Malcolm - - * gengtype.c (struct seen_tag): New. - (already_seen_tag): New. - (mark_tag_as_seen): New. - (walk_subclasses): Support having multiple subclasses using the - same tag by tracking which tags have already been seen, and using - this to avoid adding duplicate cases to the "switch" statement. - The call to already_seen_tag introduces an O(N^2) when running - gengtype on N, the number of tags, due to the repeated linear - search, but currently max(N) is relatively small (the number of - GSS codes, which is 26). - (walk_type): Pass in a seen_tag for use by the walk_subclasses - recursion. - - * gimple.def (GIMPLE_OMP_ATOMIC_STORE, GIMPLE_OMP_RETURN): Rename - underlying GSS values for these codes (from GSS_OMP_ATOMIC_STORE to - GSS_OMP_ATOMIC_STORE_LAYOUT) to make clear that although - GIMPLE_OMP_RETURN happens to share the data layout of - GIMPLE_OMP_ATOMIC_STORE, they are not otherwise related. - (GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TARGET): Likewise, rename - underlying GSS value from GSS_OMP_PARALLEL to - GSS_OMP_PARALLEL_LAYOUT to make clear that these gimple codes are - not directly related; they merely share in-memory layout. - (GIMPLE_OMP_SINGLE, GIMPLE_OMP_TEAMS): Likewise, rename GSS values - for these two codes from GSS_OMP_SINGLE to GSS_OMP_SINGLE_LAYOUT. - - * gsstruct.def (GSS_OMP_PARALLEL, gimple_statement_omp_parallel): - Rename to... - (GSS_OMP_PARALLEL_LAYOUT, gimple_statement_omp_parallel_layout): - ...these. - (GSS_OMP_SINGLE, gimple_statement_omp_single): Rename to... - (GSS_OMP_SINGLE_LAYOUT, gimple_statement_omp_single_layout): ...these. - (GSS_OMP_ATOMIC_STORE, gimple_statement_omp_atomic_store): Rename to... - (GSS_OMP_ATOMIC_STORE_LAYOUT, gimple_statement_omp_atomic_store): - ...these. - - * gimple.h (gimple_statement_resx): New subclass of - gimple_statement_eh_ctrl, with the invariant that - stmt->code == GIMPLE_RESX. - (gimple_statement_eh_dispatch): New subclass of - gimple_statement_eh_ctrl, with the invariant that - stmt->code == GIMPLE_EH_DISPATH. - - (gimple_statement_omp_parallel): The existing class expressed - a layout (GSS_OMP_PARALLEL), but the codes with that layout - are not all related, so it makes more sense for this class to - express a *code* (GIMPLE_OMP_PARALLEL). GSS_OMP_PARALLEL has - been renamed to GSS_OMP_PARALLEL_LAYOUT to express this, so - rename the existing gimple_statement_omp_parallel class to... - (gimple_statement_omp_parallel_layout): ...this, expressing - a statement of structure layout GSS_OMP_PARALLEL_LAYOUT. - (gimple_statement_omp_taskreg): New subclass of - gimple_statement_omp_parallel_layout, expressing the invariant - that the code is one of GIMPLE_OMP_PARALLEL or GIMPLE_OMP_TASK, - as used by the various gimple_omp_taskreg_ accessors. - (gimple_statement_omp_parallel): Reintroduce this class, this time - as a subclass of gimple_statement_omp_taskreg to express the - invariant stmt->code == GIMPLE_OMP_PARALLEL. - (gimple_statement_omp_target) New class, subclassing - gimple_statement_omp_parallel_layout, to express the invariant - stmt->code == GIMPLE_OMP_TARGET. - (gimple_statement_omp_task): Update to inherit from - gimple_statement_omp_taskreg rather than - gimple_statement_omp_parallel. - - (gimple_statement_omp_single): Rename to... - (gimple_statement_omp_single_layout): ...this, expressing the - invariant that the layout is GSS_OMP_SINGLE_LAYOUT. - (gimple_statement_omp_single): ...and reintroduce this name as - a subclass of gimple_statement_omp_single_layout, expressing - the invariant that code == GIMPLE_OMP_SINGLE. - (gimple_statement_omp_teams): New class, subclassing - gimple_statement_omp_single_layout, for the code GIMPLE_OMP_TEAMS. - - (gimple_statement_omp_atomic_store): Rename to... - (gimple_statement_omp_atomic_store_layout): ...this, expressing - the invariant that the layout is GSS_OMP_ATOMIC_STORE_LAYOUT. - (gimple_statement_omp_atomic_store): ...and reintroduce this - name as a subclass of gimple_statement_omp_atomic_store_layout - with code == GIMPLE_OMP_ATOMIC_STORE. - (gimple_statement_omp_return): New class, subclassing - gimple_statement_omp_atomic_store_layout for the code - GIMPLE_OMP_RETURN. - - (is_a_helper ::test): Delete. - (is_a_helper ::test): New. - (is_a_helper ::test): New. - (is_a_helper ::test): Only - check for GIMPLE_OMP_ATOMIC_STORE, not for GIMPLE_OMP_RETURN. - (is_a_helper ::test): New. - (is_a_helper ::test): New. - (is_a_helper ::test): Only check - for GIMPLE_OMP_PARALLEL, not for GIMPLE_OMP_TASK or - GIMPLE_OMP_TARGET. - (is_a_helper ::test): New. - (is_a_helper ::test): Only check - for GIMPLE_OMP_SINGLE, not for GIMPLE_OMP_TEAMS. - (is_a_helper ::test): New. - - (is_a_helper ::test): Delete. - (is_a_helper ::test): New. - (is_a_helper ::test): New. - (is_a_helper ::test): Only - check for GIMPLE_OMP_ATOMIC_STORE, not for GIMPLE_OMP_RETURN. - (is_a_helper ::test): New. - (is_a_helper ::test): New. - (is_a_helper ::test): Only - check for GIMPLE_OMP_PARALLEL, not for GIMPLE_OMP_TASK or - GIMPLE_OMP_TARGET. - (is_a_helper ::test): New. - (is_a_helper ::test): Only - check for GIMPLE_OMP_SINGLE, not for GIMPLE_OMP_TEAMS. - (is_a_helper ::test): New. - - (gimple_omp_return_set_lhs, gimple_omp_return_lhs, - gimple_omp_return_lhs_ptr): Replace bogus downcasts to - gimple_statement_omp_atomic_store with downcasts to - gimple_statement_omp_return, thus requiring that the code be - GIMPLE_OMP_RETURN. - (gimple_resx_region, gimple_resx_set_region): Replace bogus - downcasts to gimple_statement_eh_ctrl with downcasts to - gimple_statement_resx, thus requiring that the code be GIMPLE_RESX. - (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): - Replace bogus downcasts to const gimple_statement_eh_ctrl with - downcasts to gimple_statement_eh_dispatch, thus requiring that - the code be GIMPLE_EH_DISPATCH. - (gimple_omp_taskreg_clauses, gimple_omp_taskreg_clauses_ptr) - gimple_omp_taskreg_set_clauses, gimple_omp_taskreg_child_fn, - gimple_omp_taskreg_child_fn_ptr, gimple_omp_taskreg_set_child_fn, - gimple_omp_taskreg_data_arg, gimple_omp_taskreg_data_arg_ptr, - gimple_omp_taskreg_set_data_arg): Replace bogus downcasts to - gimple_statement_omp_parallel with downcasts to - gimple_statement_omp_taskreg, thus requiring that the code be - either GIMPLE_OMP_PARALLEL or GIMPLE_OMP_TASK. - (gimple_omp_target_clauses, gimple_omp_target_clauses_ptr - gimple_omp_target_set_clauses, gimple_omp_target_child_fn - gimple_omp_target_child_fn_ptr, gimple_omp_target_set_child_fn - gimple_omp_target_data_arg, gimple_omp_target_data_arg_ptr - gimple_omp_target_set_data_arg): Replace bogus downcasts to - gimple_statement_omp_parallel with downcasts to - gimple_statement_omp_target, thus requiring that the code be - GIMPLE_OMP_TARGET. - (gimple_omp_teams_clauses, gimple_omp_teams_clauses_ptr - gimple_omp_teams_set_clauses): Replace bogus downcasts to - gimple_statement_omp_single with downcasts to - gimple_statement_omp_teams, thus requiring that the code be - GIMPLE_OMP_TEAMS. - - * gimple.c (gimple_build_resx): Fix bogus as_a<> to use - gimple_statement_resx. - (gimple_build_eh_dispatch): Fix bogus as_a<> to use - gimple_statement_eh_dispatch. - -2013-11-26 Jakub Jelinek - - PR tree-optimization/59014 - * tree-vrp.c (register_edge_assert_for_1): Don't look - through conversions from non-integral types or through - narrowing conversions. - - PR target/59229 - * config/i386/i386.c (device_alg): Fix up formatting. - (ix86_expand_set_or_movmem): Handle max_size < epilogue_size_needed - similarly to count && count < epilogue_size_needed. Fix up - comment typo. - * builtins.c (determine_block_size): Fix comment typo. - - PR sanitizer/59258 - * ubsan.c (ubsan_source_location): Don't add any location - to ADDR_EXPR in the ctor. Revert 2013-11-22 change. - (ubsan_create_data): Strip block info from LOC. - - PR middle-end/59273 - * tree-vect-generic.c (optimize_vector_constructor): Don't optimize - if there isn't optab handler for the corresponding vector PLUS_EXPR. - - PR rtl-optimization/59166 - * ira.c (find_moveable_pseudos): Use DF_REF_REAL_LOC instead of - DF_REF_LOC in validate_change call. - (split_live_ranges_for_shrink_wrap): Likewise. - - PR middle-end/59150 - * omp-low.c (lower_rec_input_clause): For reduction with placeholder - of references to constant size types in simd loops, defer emitting - initializer for the new_var, emit it later on only if not using - SIMD arrays for it. - - PR middle-end/59152 - * omp-low.c (expand_omp_for_static_chunk): Don't set loop->latch - for the inner loop if collapse_bb is non-NULL. - (expand_omp_simd): Use cont_bb rather than e->dest as latch. - -2013-11-26 Yufeng Zhang - - * config/arm/arm.c (arm_legitimize_address): Check xop1 is not - a constant immediate before force_reg. - -2013-11-26 Richard Biener - - PR tree-optimization/59245 - * tree-vrp.c (set_value_range): Assert that we don't have - overflowed constants (but our infinities). - (set_value_range_to_value): Drop all overflow flags. - (vrp_visit_phi_node): Likewise. - (vrp_visit_assignment_or_call): Use set_value_range_to_value - to set a constant range. - -2013-11-26 Kyrylo Tkachov - - PR target/59290 - * config/arm/arm.md (*zextendsidi_negsi): New pattern. - * config/arm/arm.c (arm_new_rtx_costs): Initialise cost correctly - for zero_extend case. - -2013-11-26 H.J. Lu - - PR bootstrap/55552 - * configure.ac (install_gold_as_default): New. Set to yes for - --disable-ld or --enable-gold=default. - (gcc_cv_ld_gold_srcdir): New. - (gcc_cv_ld): Also check in-tree gold if install_gold_as_default is yes. - (ORIGINAL_LD_BFD_FOR_TARGET): New AC_SUBST. - (ORIGINAL_LD_GOLD_FOR_TARGET): Likewise. - * configure: Regenerated. - - * exec-tool.in (ORIGINAL_LD_BFD_FOR_TARGET): New variable. - (ORIGINAL_LD_GOLD_FOR_TARGET): Likewise. - (original) [collect-ld && -fuse-ld=bfd]: Set to - $ORIGINAL_LD_BFD_FOR_TARGET. - (original) [collect-ld && -fuse-ld=gold]: Set to - $ORIGINAL_LD_GOLD_FOR_TARGET. - (dir) [collect-ld && ../gold/ld-new]: Set to gold. - (fast_install) [collect-ld && ../gold/ld-new]: Set to yes. - -2013-11-26 Terry Guo - - * config/arm/arm.c (require_pic_register): Handle high pic base - register for thumb-1. - (arm_load_pic_register): Also initialize high pic base register. - * doc/invoke.texi: Update documentation for option -mpic-register. - -2013-11-26 Oleg Endo - - PR target/58314 - PR target/50751 - * config/sh/sh.c (max_mov_insn_displacement, disp_addr_displacement): - Prefix function names with 'sh_'. Make them non-static. - * config/sh/sh-protos.h (sh_disp_addr_displacement, - sh_max_mov_insn_displacement): Add declarations. - * config/sh/constraints.md (Q): Reject QImode. - (Sdd): Use match_code "mem". - (Snd): Fix erroneous matching of non-memory operands. - * config/sh/predicates.md (short_displacement_mem_operand): New - predicate. - (general_movsrc_operand): Disallow PC relative QImode loads. - * config/sh/sh.md (*mov_reg_reg): Remove it. - (*movqi, *movhi): Merge both insns into... - (*mov): ... this new insn. Replace generic 'm' constraints with - 'Snd' and 'Sdd' constraints. Calculate insn length dynamically based - on the operand types. - -2013-11-26 Joern Rennecke - - * config/epiphany/epiphany.c (epiphany_expand_prologue): - Remove unused variable save_config. - (epiphany_compute_frame_size): Avoid signed/unsigned comparison in - assert. - -2013-11-26 James Greenhalgh - - * config/aarch64/arm_neon.h (vtbx1_8): Emulate behaviour - using other intrinsics. - (vtbx3_8): Likewise. - -2013-11-26 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_types_bsl_p_qualifiers): New. - (aarch64_types_bsl_s_qualifiers): Likewise. - (aarch64_types_bsl_u_qualifiers): Likewise. - (TYPES_BSL_P): Likewise. - (TYPES_BSL_S): Likewise. - (TYPES_BSL_U): Likewise. - (BUILTIN_VALLDIF): Likewise. - (BUILTIN_VDQQH): Likewise. - * config/aarch64/aarch64-simd-builtins.def (simd_bsl): New. - * config/aarch64/aarch64-simd.md - (aarch64_simd_bsl_internal): Handle more modes. - (aarch64_simd_bsl): Likewise. - * config/aarch64/arm_neon.h - (vbsl_<8,16,32,64): Implement using builtins. - * config/aarch64/iterators.md (VALLDIF): New. - (Vbtype): Handle more modes. - -2013-11-26 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_type_qualifiers): Add qualifier_poly. - (aarch64_build_scalar_type): Also build Poly types. - (aarch64_build_vector_type): Likewise. - (aarch64_build_type): Likewise. - (aarch64_build_signed_type): New. - (aarch64_build_unsigned_type): Likewise. - (aarch64_build_poly_type): Likewise. - (aarch64_init_simd_builtins): Also handle Poly types. - -2013-11-26 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (VAR1): Use new naming scheme for aarch64_builtins. - (aarch64_builtin_vectorized_function): Use new aarch64_builtins names. - -2013-11-26 Richard Biener - - PR tree-optimization/59287 - * tree-ssa-structalias.c (get_constraint_for_component_ref): - Remove no longer necessary special-casing of union accesses. - -2013-11-26 Richard Biener - - * pretty-print.c (output_buffer::~output_buffer): Really - free the obstacks. - -2013-11-25 Jeff Law - - * tree-ssa-threadupdate.c (thread_through_all_blocks): Selectively - invalidate loop information. - -2013-11-25 Oleg Endo - - * config/sh/sh.md (doloop_end_split): Add missing SI mode. - -2013-11-25 Oleg Endo - - PR target/53976 - PR target/59243 - * config/sh/sh_optimize_sett_clrt.cc (struct ccreg_value): Update - comments. - (sh_optimize_sett_clrt::find_last_ccreg_values): Check stack of - previously visited basic blocks before recursing instead of only one - basic block. - -2013-11-25 Kyrylo Tkachov - - * config/aarch64/aarch64.c (cortexa53_tuning): New struct. - * config/aarch64/aarch64-cores.def (cortex-a53): - Use cortexa53 tuning struct. - -2013-11-25 Andrew Macleod - - PR bootstrap/59260 - * fold-const.c: Include hash-table.h. - -2013-11-25 Marek Polacek - - PR sanitizer/59258 - * ubsan.c (ubsan_create_data): Increase the size of the fields array. - -2013-11-25 Richard Biener - - * tree-dfa.c: Remove unused convert.h include. - -2013-11-25 Terry Guo - - * doc/invoke.texi (-mslow-flash-data): Document new option. - * config/arm/arm.opt (mslow-flash-data): New option. - * config/arm/arm-protos.h (arm_max_const_double_inline_cost): - Declare it. - * config/arm/arm.h (TARGET_USE_MOVT): Always true when literal pools - are disabled. - (arm_disable_literal_pool): Declare it. - * config/arm/arm.c (arm_disable_literal_pool): New variable. - (arm_option_override): Handle new option. - (thumb2_legitimate_address_p): Don't allow symbol references when - literal pools are disabled. - (arm_max_const_double_inline_cost): New function. - * config/arm/arm.md (types.md): Include it before ... - (use_literal_pool): New attribute. - (enabled): Use new attribute. - (split pattern): Replace symbol+offset with MOVW/MOVT. - -2013-11-24 Steven Bosscher - - PR bootstrap/59279 - Revert previous commit. - -2013-11-24 Steven Bosscher - - * jump.c (reset_insn_reg_label_operand_notes): New function, - split out from ... - (init_label_info): ... here. Reset LABEL_NUSES in cfglayout mode. - * cfgcleanup.c (delete_dead_jump_tables_between): New function, - split out from ... - (delete_dead_jumptables): ... here. Handle cfglayout mode. - (cleanup_cfg): Delete dead jump tables in cfglayout mode if an - expensive CFG cleanup is called for. - * cfgrtl.c (fixup_reorder_chain): Remove BARRIERs from fallthru paths. - (cfg_layout_finalize): Delete dead jump tables before re-building - the insns chain. - * ira.c (ira): Rebuild jump labels *after* deleting unreachable - basic blocks, not before. - * loop-init.c (rtl_loop_done): Call for an expensive CFG cleanup. - - * modulo-sched.c (sms_schedule): Do not look for BARRIERs in the - insns chain of a scheduling extended basic block, they cannot appear - there in cfglayout mode. - -2013-11-24 Tobias Burnus - - * doc/invoke.texi (-fsanitize=leak): Add link to the wiki page. - -2013-11-24 Bill Schmidt - - * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Correct - for little endian. - -2013-11-24 H.J. Lu - - * graphite-sese-to-poly.c: Don't include extra "expr.h". - -2013-11-23 Eric Botcazou - - * cilk-common.c (expand_builtin_cilk_detach): Dereference worker. - -2013-11-23 David Edelson - Andrew Dixie - - PR target/33704 - * config/rs6000/aix.h (COLLECT_SHARED_INIT_FUNC): Define. - (COLLECT_SHARED_FINI_FUNC): Define. - - * collect2.c (aix_shared_initname): Declare. - (aix_shared_fininame): Declare. - (symkind): Add SYM_AIXI and SYM_AIXD. - (scanfilter_masks): Add SCAN_AIXI and SCAN_AIXD. - (struct names special): Add GLOBAL__AIXI_ and GLOBAL__AIXD_. - (aixlazy_flag): Parse. - (extract_init_priority): SYM_AIXI and SYM_AIXD have highest priority. - (scan_prog_file, COFF): Handle SYM_AIXI and SYM_AIXD. - -2013-11-23 David Edelsohn - - * config/rs6000/rs6000.c (IN_NAMED_SECTION): New macro. - (rs6000_xcoff_select_section): Place decls with stricter alignment - into named sections. - (rs6000_xcoff_unique_section): Allow unique sections for - uninitialized data with strict alignment. - -2013-11-23 Jakub Jelinek - - PR tree-optimization/59154 - * tree-ssa-reassoc.c (maybe_optimize_range_tests): When changing - rhs1 of a cast and new_op is invariant, fold_convert it. - * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Only call - simplify_conversion_from_bitmask if rhs1 is a SSA_NAME. - -2013-11-23 Uros Bizjak - - PR target/56788 - * config/i386/i386.c (bdesc_multi_arg) : - Declare as MULTI_ARG_1_SF instruction. - : Decleare as MULTI_ARG_1_DF instruction. - * config/i386/sse.md (*xop_vmfrcz2): Rename - from *xop_vmfrcz_. - * config/i386/xopintrin.h (_mm_frcz_ss): Use __builtin_ia32_movss - to merge scalar result with __A. - (_mm_frcz_sd): Use __builtin_ia32_movsd to merge scalar - result with __A. - -2013-11-23 Eric Botcazou - - * gimplify.h (recalculate_side_effects): Delete. - * gimplify.c (recalculate_side_effects): Make static and add comment. - -2013-11-23 Richard Sandiford - - * config/sh/sh.md: Use nonimmediate_operand rather than general_operand - for the destination of a define_peephole2. Likewise register_operand - rather than arith_reg_operand. Remove constraints from - define_peephole2s. - -2013-11-23 Richard Sandiford - - * config/mn10300/mn10300-protos.h (mn10300_store_multiple_operation): - Delete. - (mn10300_store_multiple_operation_p): Declare. - * config/mn10300/mn10300.c (mn10300_store_multiple_operation): - Rename to... - (mn10300_store_multiple_operation_p): ...this and remove mode - argument. - * config/mn10300/predicates.md (mn10300_store_multiple_operation): - Define. - -2013-11-23 Richard Sandiford - - * config/bfin/bfin-protos.h (push_multiple_operation): Delete. - (pop_multiple_operation): Delete. - (analyze_push_multiple_operation): Declare. - (analyze_pop_multiple_operation): Declare. - * config/bfin/bfin.c (push_multiple_operation): Rename to... - (analyze_push_multiple_operation): ...this and remove mode argument. - (pop_multiple_operation): Rename to... - (analyze_pop_multiple_operation): ...this and remove mode argument. - * config/bfin/predicates.md (push_multiple_operation): Define. - (pop_multiple_operation): Likewise. - -2013-11-23 Alan Modra - - * config/rs6000/vsx.md (fusion peepholes): Disable when !TARGET_VSX. - -2013-11-22 Jakub Jelinek - - PR sanitizer/59061 - * common.opt (static-liblsan): Add. - * config/gnu-user.h (STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): - Define. - * flag-types.h (enum sanitize_code): Add SANITIZE_LEAK. Renumber - SANITIZE_SHIFT, SANITIZE_DIVIDE, SANITIZE_UNREACHABLE, SANITIZE_VLA, - SANITIZE_RETURN. - * opts.c (common_handle_option): Handle -fsanitize=leak. - * gcc.c (ADD_STATIC_LIBLSAN_LIBS, LIBLSAN_SPEC): Define. - (LIBUBSAN_SPEC): Don't test LIBUBSAN_EARLY_SPEC. - (LIBUBSAN_EARLY_SPEC): Remove. - (SANITIZER_EARLY_SPEC): Don't do anything for libubsan. - (SANITIZER_SPEC): Add -fsanitize=leak handling. - (sanitize_spec_function): Handle %sanitize(leak). - * doc/invoke.texi (-static-liblsan, -fsanitize=leak): Document. - -2013-11-22 Aldy Hernandez - Jakub Jelinek - - * ipa.c (symtab_remove_unreachable_nodes): Fix up comment typos. - * ipa-prop.c (get_vector_of_formal_parm_types): Renamed to ... - (ipa_get_vector_of_formal_parm_types): ... this. No longer static. - (ipa_modify_formal_parameters): Adjust caller. Remove - synth_parm_prefix argument. Use operator enum instead of bit fields. - Add assert for properly handling vector of references. Handle - creating brand new parameters. - (ipa_modify_call_arguments): Use operator enum instead of bit - fields. - (ipa_combine_adjustments): Same. Assert that IPA_PARM_OP_NEW is not - used. - (ipa_modify_expr, get_ssa_base_param, ipa_get_adjustment_candidate): - New functions. - (ipa_dump_param_adjustments): Rename reduction to new_decl. - Use operator enum instead of bit fields. - * ipa-prop.h (enum ipa_parm_op): New. - (struct ipa_parm_adjustment): New field op. Rename reduction - to new_decl, new_arg_prefix to arg_prefix and remove remove_param - and copy_param. - (ipa_modify_formal_parameters): Remove last argument. - (ipa_get_vector_of_formal_parm_types, ipa_modify_expr, - ipa_get_adjustment_candidate): New prototypes. - * tree-sra.c (turn_representatives_into_adjustments): Use operator - enum. Set arg_prefix. - (get_adjustment_for_base): Use operator enum. - (sra_ipa_modify_expr): Rename to ipa_modify_expr and move to - ipa-prop.c. - (sra_ipa_modify_assign): Rename sra_ipa_modify_expr to ipa_modify_expr. - (ipa_sra_modify_function_body): Same. No longer static. - (sra_ipa_reset_debug_stmts): Use operator enum. - (modify_function): Do not pass prefix argument. - -2013-11-22 Jakub Jelinek - - * ubsan.c (ubsan_source_location): Don't crash on unknown locations. - (ubsan_pass): Ignore clobber stmts. - - * sanitizer.def (BUILT_IN_UBSAN_HANDLE_MISSING_RETURN): New built-in. - * opts.c (common_handle_option): Add -fsanitize=return. - * flag-types.h (enum sanitize_code): Add SANITIZE_RETURN and - or it into SANITIZE_UNDEFINED. - - * sanitizer.def (BUILT_IN_ASAN_BEFORE_DYNAMIC_INIT, - BUILT_IN_ASAN_AFTER_DYNAMIC_INIT): New. - * asan.c (instrument_derefs): Handle also VAR_DECL loads/stores. - Don't instrument accesses to VAR_DECLs which are known to fit - into their bounds and the vars are known to have shadow bytes - indicating allowed access. - (asan_dynamic_init_call): New function. - (asan_add_global): If vnode->dynamically_initialized, - set __has_dynamic_init to 1 instead of 0. - (initialize_sanitizer_builtins): Add BT_FN_VOID_CONST_PTR var. - * asan.h (asan_dynamic_init_call): New prototype. - * cgraph.h (varpool_node): Add dynamically_initialized bitfield. - -2013-11-22 Martin Jambor - - PR rtl-optimization/10474 - * ira.c (interesting_dest_for_shprep_1): New function. - (interesting_dest_for_shprep): Use interesting_dest_for_shprep_1, - also check parallels. - -2013-11-22 Jeff Law - - * tree-ssa-threadedge.c (record_temporary_equivalence): Handle - NULL for RHS, which we used to invalidate equivalences. - (record_temporary_equivalences_from_phis): New bitmap arguments - and a boolean indicating if we have passed a backedge. If we - have passed a backedge, then set the appropriate bit in the - bitmaps for the SRC & DEST of PHIs creating equivalences. - (invalidate_equivalences, dummy_simplify): New functions. - (cond_arg_set_in_b): Remove. - (record_temporary_equivalences_from_stmts_at_dest): New bitmap - arguments and a boolean indicating if we have passed a backedge. - If we have passed a backedge, then perform invalidations as needed. - (thread_around_empty_blocks): If we have seen a backedge, then - use the dummy simplify routine. - (thread_through_normal_block): Likewise. Pass bitmaps and - backedge status to children. Do not pessimize so much when - traversing backedges in the CFG. - (thread_across_edge): Manage the SRC_MAP/DST_MAP bitmaps. - If we have seen a backedge, then use the dummy simplify routine. - Do not pessimize so much when traversing backedges. - -2013-11-22 Hans-Peter Nilsson - - * config/cris/cris.c (cris_atomic_align_for_mode): New function. - (TARGET_ATOMIC_ALIGN_FOR_MODE): Define. - -2013-11-22 Yuri Rumyantsev - - * config/i386/i386.c (processor_alias_table): Enable PTA_AES, - PTA_PCLMUL and PTA_RDRND for Silvermont. - * config/i386/driver-i386.c (host_detect_local_cpu): Set up cpu - for Silvermont. - - * doc/invoke.texi: Mention AES, PCLMUL and RDRND for Silvermont. - -2013-11-22 Andrew MacLeod - - * hooks.h (hook_uint_mode_0): Add Prototype. - * hooks.c (hook_uint_mode_0): New default function. - * target.def (atomic_align_for_mode): New target hook. - * tree.c (build_atomic_base): Add alignment override parameter. - (build_common_tree_nodes): Use atomic alignment override. - * doc/tm.texi.in (TARGET_ATOMIC_ALIGN_FOR_MODE): Define. - * doc/tm.texi (TARGET_ATOMIC_ALIGN_FOR_MODE): Add description. - -2013-11-22 Andrew MacLeod - - * gimple.h: Remove all includes. - (recalculate_side_effects): Move prototype to gimplify.h. - * Makefile.in (PLUGIN_HEADERS): Add flattened gimple.h includes. - * gengtype.c (open_base_files): Add gimple.h include list. - * gimplify.h (recalculate_side_effects): Relocate prototype here. - * gimple.c: Adjust include list. - (recalculate_side_effects): Move to gimplify.c. - * gimplify.c: Adjust include list. - (recalculate_side_effects): Relocate from gimple.c. - * alias.c: Add required include files removed from gimple.h. - * asan.c: Likewise. - * builtins.c: Likewise. - * calls.c: Likewise. - * cfgexpand.c: Likewise. - * cfgloop.c: Likewise. - * cfgloopmanip.c: Likewise. - * cgraphbuild.c: Likewise. - * cgraph.c: Likewise. - * cgraphclones.c: Likewise. - * cgraphunit.c: Likewise. - * cilk-common.c: Likewise. - * data-streamer.c: Likewise. - * data-streamer-in.c: Likewise. - * data-streamer-out.c: Likewise. - * dse.c: Likewise. - * dwarf2out.c: Likewise. - * emit-rtl.c: Likewise. - * except.c: Likewise. - * expr.c: Likewise. - * fold-const.c: Likewise. - * function.c: Likewise. - * gimple-builder.c: Likewise. - * gimple-expr.c: Likewise. - * gimple-fold.c: Likewise. - * gimple-iterator.c: Likewise. - * gimple-low.c: Likewise. - * gimple-pretty-print.c: Likewise. - * gimple-ssa-isolate-paths.c: Likewise. - * gimple-ssa-strength-reduction.c: Likewise. - * gimple-streamer-in.c: Likewise. - * gimple-streamer-out.c: Likewise. - * gimple-walk.c: Likewise. - * gimplify-me.c: Likewise. - * graphite-blocking.c: Likewise. - * graphite.c: Likewise. - * graphite-clast-to-gimple.c: Likewise. - * graphite-dependences.c: Likewise. - * graphite-interchange.c: Likewise. - * graphite-optimize-isl.c: Likewise. - * graphite-poly.c: Likewise. - * graphite-scop-detection.c: Likewise. - * graphite-sese-to-poly.c: Likewise. - * internal-fn.c: Likewise. - * ipa.c: Likewise. - * ipa-cp.c: Likewise. - * ipa-devirt.c: Likewise. - * ipa-inline-analysis.c: Likewise. - * ipa-inline.c: Likewise. - * ipa-profile.c: Likewise. - * ipa-prop.c: Likewise. - * ipa-pure-const.c: Likewise. - * ipa-reference.c: Likewise. - * ipa-split.c: Likewise. - * ipa-utils.c: Likewise. - * langhooks.c: Likewise. - * lto-cgraph.c: Likewise. - * lto-compress.c: Likewise. - * lto-opts.c: Likewise. - * lto-section-in.c: Likewise. - * lto-section-out.c: Likewise. - * lto-streamer.c: Likewise. - * lto-streamer-in.c: Likewise. - * lto-streamer-out.c: Likewise. - * omp-low.c: Likewise. - * opts-global.c: Likewise. - * passes.c: Likewise. - * predict.c: Likewise. - * profile.c: Likewise. - * sese.c: Likewise. - * stmt.c: Likewise. - * stor-layout.c: Likewise. - * symtab.c: Likewise. - * targhooks.c: Likewise. - * toplev.c: Likewise. - * tracer.c: Likewise. - * trans-mem.c: Likewise. - * tree-affine.c: Likewise. - * tree.c: Likewise. - * tree-call-cdce.c: Likewise. - * tree-cfg.c: Likewise. - * tree-cfgcleanup.c: Likewise. - * tree-chrec.c: Likewise. - * tree-complex.c: Likewise. - * tree-data-ref.c: Likewise. - * tree-dfa.c: Likewise. - * tree-eh.c: Likewise. - * tree-emutls.c: Likewise. - * tree-if-conv.c: Likewise. - * tree-inline.c: Likewise. - * tree-into-ssa.c: Likewise. - * tree-loop-distribution.c: Likewise. - * tree-nested.c: Likewise. - * tree-nrv.c: Likewise. - * tree-object-size.c: Likewise. - * tree-outof-ssa.c: Likewise. - * tree-parloops.c: Likewise. - * tree-phinodes.c: Likewise. - * tree-predcom.c: Likewise. - * tree-pretty-print.c: Likewise. - * tree-profile.c: Likewise. - * tree-scalar-evolution.c: Likewise. - * tree-sra.c: Likewise. - * tree-ssa-address.c: Likewise. - * tree-ssa-alias.c: Likewise. - * tree-ssa.c: Likewise. - * tree-ssa-ccp.c: Likewise. - * tree-ssa-coalesce.c: Likewise. - * tree-ssa-copy.c: Likewise. - * tree-ssa-copyrename.c: Likewise. - * tree-ssa-dce.c: Likewise. - * tree-ssa-dom.c: Likewise. - * tree-ssa-dse.c: Likewise. - * tree-ssa-forwprop.c: Likewise. - * tree-ssa-ifcombine.c: Likewise. - * tree-ssa-live.c: Likewise. - * tree-ssa-loop.c: Likewise. - * tree-ssa-loop-ch.c: Likewise. - * tree-ssa-loop-im.c: Likewise. - * tree-ssa-loop-ivcanon.c: Likewise. - * tree-ssa-loop-ivopts.c: Likewise. - * tree-ssa-loop-manip.c: Likewise. - * tree-ssa-loop-niter.c: Likewise. - * tree-ssa-loop-prefetch.c: Likewise. - * tree-ssa-loop-unswitch.c: Likewise. - * tree-ssa-math-opts.c: Likewise. - * tree-ssanames.c: Likewise. - * tree-ssa-operands.c: Likewise. - * tree-ssa-phiopt.c: Likewise. - * tree-ssa-phiprop.c: Likewise. - * tree-ssa-pre.c: Likewise. - * tree-ssa-propagate.c: Likewise. - * tree-ssa-reassoc.c: Likewise. - * tree-ssa-sccvn.c: Likewise. - * tree-ssa-sink.c: Likewise. - * tree-ssa-strlen.c: Likewise. - * tree-ssa-structalias.c: Likewise. - * tree-ssa-tail-merge.c: Likewise. - * tree-ssa-ter.c: Likewise. - * tree-ssa-threadedge.c: Likewise. - * tree-ssa-threadupdate.c: Likewise. - * tree-ssa-uncprop.c: Likewise. - * tree-ssa-uninit.c: Likewise. - * tree-stdarg.c: Likewise. - * tree-streamer.c: Likewise. - * tree-streamer-in.c: Likewise. - * tree-streamer-out.c: Likewise. - * tree-switch-conversion.c: Likewise. - * tree-tailcall.c: Likewise. - * tree-vect-data-refs.c: Likewise. - * tree-vect-generic.c: Likewise. - * tree-vect-loop.c: Likewise. - * tree-vect-loop-manip.c: Likewise. - * tree-vectorizer.c: Likewise. - * tree-vect-patterns.c: Likewise. - * tree-vect-slp.c: Likewise. - * tree-vect-stmts.c: Likewise. - * tree-vrp.c: Likewise. - * tsan.c: Likewise. - * ubsan.c: Likewise. - * value-prof.c: Likewise. - * varpool.c: Likewise. - * var-tracking.c: Likewise. - * vtable-verify.c: Likewise. - * config/darwin.c: Likewise. - * config/aarch64/aarch64-builtins.c: Likewise. - * config/aarch64/aarch64.c: Likewise. - * config/alpha/alpha.c: Likewise. - * config/i386/i386.c: Likewise. - * config/i386/winnt.c: Likewise. - * config/ia64/ia64.c: Likewise. - * config/m32c/m32c.c: Likewise. - * config/mep/mep.c: Likewise. - * config/mips/mips.c: Likewise. - * config/rs6000/rs6000.c: Likewise. - * config/s390/s390.c: Likewise. - * config/sh/sh.c: Likewise. - * config/sparc/sparc.c: Likewise. - * config/spu/spu.c: Likewise. - * config/stormy16/stormy16.c: Likewise. - * config/tilegx/tilegx.c: Likewise. - * config/tilepro/tilepro.c: Likewise. - * config/xtensa/xtensa.c: Likewise. - -2013-11-22 Richard Earnshaw - - PR target/59216 - * arm.md (negdi_extendsidi): Fix invalid split. - -2013-11-22 Alex Velenko - - * config/aarch64/arm_neon.h (vmov_n_f32): Implemented in C. - (vmov_n_f64): Likewise. - (vmov_n_p8): Likewise. - (vmov_n_p16): Likewise. - (vmov_n_s8): Likewise. - (vmov_n_s16): Likewise. - (vmov_n_s32): Likewise. - (vmov_n_s64): Likewise. - (vmov_n_u8): Likewise. - (vmov_n_u16): Likewise. - (vmov_n_u32): Likewise. - (vmov_n_u64): Likewise. - (vmovq_n_f32): Likewise. - (vmovq_n_f64): Likewise. - (vmovq_n_p8): Likewise. - (vmovq_n_p16): Likewise. - (vmovq_n_s8): Likewise. - (vmovq_n_s16): Likewise. - (vmovq_n_s32): Likewise. - (vmovq_n_s64): Likewise. - (vmovq_n_u8): Likewise. - (vmovq_n_u16): Likewise. - (vmovq_n_u32): Likewise. - (vmovq_n_u64): Likewise. - -2013-11-22 Tejas Belagod - - * config/aarch64/aarch64-simd.md (vec_pack_trunc_, - vec_pack_trunc_v2df, vec_pack_trunc_df): Swap for big-endian. - (reduc_plus_): Factorize V2DI into this. - (reduc_plus_): Change this to reduc_splus_ for floats - and also change to float UNSPEC. - (reduc_maxmin_uns>_): Remove V2DI. - * config/aarch64/arm_neon.h (vaddv_<8,16,32,64>, - vmaxv_<8,16,32,64>, vminv_<8,16,32,64>): Fix up scalar - result access for big-endian. - (__LANE0): New macro used to fix up lane access of 'across-lanes' - intrinsics for big-endian. - * config/aarch64/iterators.md (VDQV): Add V2DI. - (VDQV_S): New. - (vp): New mode attribute. - -2013-11-22 Tejas Belagod - - * config/aarch64/aarch64-simd.md (vec_pack_trunc_, - vec_pack_trunc_v2df, vec_pack_trunc_df): Swap source ops for - big-endian. - -2013-11-22 Tejas Belagod - - * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set): Adjust - for big-endian element order. - (aarch64_simd_vec_setv2di): Likewise. - (*aarch64_get_lane_extend, - *aarch64_get_lane_zero_extendsi, aarch64_get_lane): Likewise. - (vec_extract): Expand using aarch64_get_lane. - * config/aarch64/aarch64.h (ENDIAN_LANE_N): New. - -2013-11-22 Tejas Belagod - - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Fix loads - and stores to be ABI compliant. - -2013-11-22 David Malcolm - - * input.h (input_line): Remove. - (input_filename): Likewise. - (in_system_header): Likewise. - * tree.h (EXPR_LOC_OR_HERE): Remove. - * config/bfin/bfin.c (output_file_start): Remove use of - input_filename macro. - * builtins.c (c_strlen): Remove use of EXPR_LOC_OR_HERE macro. - * gimplify.c (internal_get_tmp_var): Likewise. - EXPR_LOC_OR_HERE macro. - (shortcut_cond_expr): Likewise. - * tree-diagnostic.c (diagnostic_report_current_function): Remove - use of input_filename macro. - * tree.c (get_file_function_name): Likewise. - -2013-11-22 Kenneth Zadeck - - * store-layout.c (place-field): Fix hwi test and accessor mismatch. - -2013-11-22 Jakub Jelinek - - * expr.c (store_constructor): Allow CONSTRUCTOR with VECTOR_TYPE - (same sized) elements even if the type of the CONSTRUCTOR has - vector mode and target is a REG. - -2013-11-22 Richard Biener - - Revert - 2013-11-21 Richard Biener - - * tree-ssa-loop-ch.c (copy_loop_headers): Decrement - nb_iterations_upper_bound by one. - -2013-11-22 H.J. Lu - - * config/i386/i386.c (processor_alias_table): Enable PTA_POPCNT - for Silvermont. - - * doc/invoke.texi: Mention POPCNT for corei7, corei7-avx, - core-avx-i, core-avx2 and slm. - -2013-11-22 Eric Botcazou - - * print-rtl.c (print_rtx) : Output a space if no MEM_EXPR. - -2013-11-22 Richard Sandiford - - * config/m32c/cond.md (stzx_16): Use register_operand for operand 0. - (stzx_24_): Likewise mra_operand. - -2013-11-22 Jeff Law - - * tree-ssa-threadupdate.c: Include tree-cfg.h and tree-pass.h - (thread_block_1): Do not cancel jump threads which go from - inside a loop, through the header, then back inside the loop. - (bb_ends_with_multiway_branch): New function. - (thread_through_all_blocks): Handle threading cases which start - in a loop through the loop header to a point in the loop. - - * tree-ssa-threadedge.c (thread_across_edge): Mark the start of the - jump thread path properly. - -2013-11-22 Trevor Saunders - - * vec.h (auto_vec): New class. - * cfganal.c, cfgloop.c, cgraphunit.c, config/i386/i386.c, dwarf2out.c, - function.c, genautomata.c, gimple.c, haifa-sched.c, ipa-inline.c, - ira-build.c, loop-unroll.c, omp-low.c, ree.c, trans-mem.c, - tree-call-cdce.c, tree-eh.c, tree-if-conv.c, tree-into-ssa.c, - tree-loop-distribution.c, tree-predcom.c, tree-sra.c, - tree-sssa-forwprop.c, tree-ssa-loop-manip.c, tree-ssa-pre.c, - tree-ssa-reassoc.c, tree-ssa-sccvn.c, tree-ssa-structalias.c, - tree-vect-loop.c, tree-vect-stmts.c: Use auto_vec and stack_vec as - appropriate instead of vec for local variables. - -2013-11-21 Teresa Johnson - - PR target/59233 - * cfgcleanup.c (outgoing_edges_match): Walk up past note instructions - not understood by old_insns_match_p. - -2013-11-21 Bill Schmidt - - * config/rs6000/vector.md (vec_pack_trunc_v2df): Revert previous - little endian change. - (vec_pack_sfix_trunc_v2df): Likewise. - (vec_pack_ufix_trunc_v2df): Likewise. - * config/rs6000/rs6000.c (rs6000_expand_interleave): Correct - double checking of endianness. - -2013-11-22 Jakub Jelinek - - * tree-vect-generic.c (optimize_vector_constructor): New function. - (expand_vector_operations_1): Call it. - -2013-11-21 Uros Bizjak - - * config/i386/i386.c (ix86_expand_special_args_builtin): Use - ix86_zero_extend_to_Pmode where appropriate. - (ix86_expand_builtin): Ditto. - -2013-11-21 Cary Coutant - - * dwarf2out.c (want_pubnames): Don't do pubnames for -g1. - (add_linkage_name): Don't add linkage name for -g1. - (decls_for_scope): Process subblocks for -g1. - (dwarf2out_source_line): Output line tables for -g1. - (dwarf2out_finish): Likewise. - * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune - unused scopes for -g1. - * opts.c (common_handle_option): Handle -g same as -g2. - * doc/invoke.texi: Update description for -g1. - -2013-11-21 Peter Bergner - - * doc/extend.texi: Document htm builtins. - -2013-11-21 Jeff Law - - PR tree-optimization/59221 - * tree-ssa-threadedge.c (thread_across_edge): Properly manage - temporary equivalences when threading through joiner blocks. - -2013-11-21 Joseph Myers - - PR rtl-optimization/55950 - * real.c (real_sqrt): Remove function. - * real.h (real_sqrt): Remove prototype. - * simplify-rtx.c (simplify_const_unary_operation): Do not fold - SQRT using real_sqrt. - -2013-11-21 Richard Biener - - PR tree-optimization/59058 - * tree-scalar-evolution.h (number_of_exit_cond_executions): Remove. - * tree-scalar-evolution.c (number_of_exit_cond_executions): Likewise. - * tree-vectorizer.h (LOOP_PEELING_FOR_ALIGNMENT): Rename to ... - (LOOP_VINFO_PEELING_FOR_ALIGNMENT): ... this. - (NITERS_KNOWN_P): Fold into ... - (LOOP_VINFO_NITERS_KNOWN_P): ... this. - (LOOP_VINFO_PEELING_FOR_NITER): Add. - * tree-vect-loop-manip.c (vect_gen_niters_for_prolog_loop): - Use LOOP_VINFO_PEELING_FOR_ALIGNMENT. - (vect_do_peeling_for_alignment): Re-use precomputed niter - instead of re-emitting it. - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): - Use LOOP_VINFO_PEELING_FOR_ALIGNMENT. - * tree-vect-loop.c (vect_get_loop_niters): Use - number_of_latch_executions. - (new_loop_vec_info): Initialize LOOP_VINFO_PEELING_FOR_NITER. - (vect_analyze_loop_form): Simplify. - (vect_analyze_loop_operations): Move epilogue peeling code ... - (vect_analyze_loop_2): ... here and adjust it to compute - LOOP_VINFO_PEELING_FOR_NITER. - (vect_estimate_min_profitable_iters): Use - LOOP_VINFO_PEELING_FOR_ALIGNMENT. - (vect_build_loop_niters): Emit on the preheader. - (vect_generate_tmps_on_preheader): Likewise. - (vect_transform_loop): Use LOOP_VINFO_PEELING_FOR_NITER instead - of recomputing it. Adjust. - -2013-11-21 Richard Biener - - * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE, - LOC_LINE): Remove wrappers and fix all users. - (struct _loop_vec_info): Remove loop_line_number member. - (LOOP_VINFO_LOC): Remove. - * tree-parloops.c, tree-vect-loop-manip.c, tree-vect-slp.c, - tree-vectorizer.c: Fix users of LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE - and LOC_LINE. - -2013-11-21 Richard Biener - - * tree-ssa-forwprop.c (simplify_vce): New function. - (ssa_forward_propagate_and_combine): Call it. - -2013-11-21 Richard Biener - - * tree-vect-loop-manip.c (vect_build_loop_niters, - vect_generate_tmps_on_preheader): Move ... - * tree-vect-loop.c (vect_build_loop_niters, - vect_generate_tmps_on_preheader): ... here and simplify. - (vect_transform_loop): Call them here and pass down results - to consumers. - * tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): - Get niter variables from caller. - (vect_do_peeling_for_alignment): Likewise. - * tree-vectorizer.h (vect_generate_tmps_on_preheader): Remove. - (vect_do_peeling_for_loop_bound, vect_do_peeling_for_alignment): - Adjust prototypes. - -2013-11-21 Richard Biener - - * tree-ssa-loop-ch.c (copy_loop_headers): Decrement - nb_iterations_upper_bound by one. - -2013-11-21 Richard Biener - - PR tree-optimization/59058 - * tree-loop-distribution.c (struct partition_s): Add plus_one member. - (build_size_arg_loc): Apply niter adjustment here. - (generate_memset_builtin): Adjust. - (generate_memcpy_builtin): Likewise. - (classify_partition): Do not use number_of_exit_cond_executions - but record whether niter needs to be adjusted. - -2013-11-21 Eric Botcazou - - * tree-ssa-tail-merge.c (stmt_local_def): Return false if the statement - could throw. - -2013-11-21 Oleg Endo - - PR target/53976 - * config/sh/sh_optimize_sett_clrt.cc: New SH specific RTL pass. - * config/sh/sh.c (register_sh_passes): Add sh_optimize_sett_clrt pass. - * config/sh/sh/t-sh (sh_optimize_sett_clrt pass.o): New entry. - * config.gcc (sh[123456789lbe]*-*-* | sh-*-*): Add - sh_optimize_sett_clrt pass.o to extra_objs. - -2013-11-20 David Malcolm - - * cfg.c (dump_edge_info): Remove redundant comment. - * cfgcleanup.c (outgoing_edges_match): Reword reference to - EXIT_BLOCK_PTR in comment. - (try_optimize_cfg): Likewise. - * cfgrtl.c (last_bb_in_partition): Likewise. - * cgraph.c (cgraph_node_cannot_return): Likewise. - * function.c (thread_prologue_and_epilogue_insns): Likewise. - * graphite-scop-detection.c (scopdet_basic_block_info): Likewise. - * ipa-split.c (consider_split): Likewise. - * profile.c (find_spanning_tree): Likewise. - * sched-int.h (common_sched_info_def.add_block): Likewise. - * dominance.c (calc_dfs_tree_nonrec): Reword references in - comments to now removed ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR macros. - * tree-cfgcleanup.c (cleanup_control_flow_bb): Reword references - in comments to now removed ENTRY_BLOCK_PTR macro. - (tree_forwarder_block_p): Reword reference in comment to - EXIT_BLOCK_PTR. - * tree-inline.c (copy_cfg_body): Reword references in comments to - now removed ENTRY_BLOCK_PTR macro. - * tree-ssa-propagate.c (ssa_prop_init): Likewise. - * tree-scalar-evolution.h ( block_before_loop): Likewise. Add - a comma to the comment to clarify the meaning. - -2013-11-20 Andrew MacLeod - - * gimplify.h (gimplify_hasher:typed_free_remove, struct gimplify_ctx): - Move to gimplify.c. - (free_gimplify_stack): Add prototype. - * gimplify.c (gimplify_hasher:typed_free_remove): Relocate here. - (struct gimplify_ctx): Relocate here. - (gimplify_ctxp): Make static. - (ctx_pool, ctx_alloc, ctx_free, free_gimplify_stack): New. Manage a - list of struct gimplify_ctx. - (push_gimplify_context): Add default parameters and allocate a struct - from the pool. - (pop_gimplify_context): Free a struct back to the pool. - (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task, - gimplify_omp_workshare, gimplify_transaction, gimplify_body): Don't - use a local 'struct gimplify_ctx'. - * cgraphunit.c (expand_all_functions): call free_gimplify_stack. - * gimplify-me.c (force_gimple_operand_1, gimple_regimplify_operands): - Likewise. - * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master, - lower_omp_ordered, lower_omp_critical, lower_omp_for, - create_task_copyfn, lower_omp_taskreg, lower_omp_target, - lower_omp_teams, execute_lower_omp): Likewise. - * gimple-fold.c (gimplify_and_update_call_from_tree): Likewise. - * tree-inline.c (optimize_inline_calls): Likewise. - -2013-11-20 Bill Schmidt - - * config/rs6000/vsx.md (vsx_set_): Adjust for little endian. - (vsx_extract_): Likewise. - (*vsx_extract__one_le): New LE variant on - *vsx_extract__zero. - (vsx_extract_v4sf): Adjust for little endian. - -2013-11-20 Vladimir Makarov - - PR rtl-optimization/59133 - * lra.c (expand_reg_data): Add new argument. Set up ALL_REGS for - new pseudos. - (lra_create_new_reg_with_unique_value): Pass new argument value. - (lra_emit_add, lra_emit_move): Ditto. - * lra-constraints.c (in_class_p): Add check for move for a new insn. - (change_class): Rename to lra_change_class. Move to lra-int.h. - (get_reload_reg, narrow_reload_pseudo_class): Adjust calls of - change_class. - (process_addr_reg, process_addr): Ditto. - (curr_insn_transform): Ditto. Add check on old pseudo for - optional reload. - * lra-int.h (lra_get_regno_hard_regno): Move below. - (lra_change_class): Renamed change_class from lra.c. - -2013-11-20 David Malcolm - - * gdbhooks.py (VecPrinter.children): Don't attempt to iterate - the children of a NULL pointer. - -2013-11-20 Robert Suchanek - - * lra.c (lra): Set lra_in_progress before check_rtl call. - * recog.c (insn_invalid_p): Add !lra_in_progress to prevent - adding clobber regs when LRA is running. - -2013-11-20 Maciej W. Rozycki - - * config/mips/mips.h (ISA_HAS_FP4): Remove TARGET_FLOAT64 - restriction for ISA_MIPS32R2. - (ISA_HAS_LXC1_SXC1): New macro. - (ISA_HAS_FP_MADD4_MSUB4): Remove ISA_MIPS32R2 special-casing. - (ISA_HAS_NMADD4_NMSUB4): Likewise. - (ISA_HAS_FP_RECIP_RSQRT): Likewise. - (ISA_HAS_PREFETCHX): Redefine in terms of ISA_HAS_FP4. - * config/mips/mips.md (*_): Use - ISA_HAS_LXC1_SXC1 rather than ISA_HAS_FP4. - (*_): Likewise. - -2013-11-20 Maciej W. Rozycki - - * config/mips/mips.h (ISA_HAS_FP_RECIP_RSQRT): New macro. - * config/mips/mips.c (mips_rtx_costs)
: Check for - ISA_HAS_FP_RECIP_RSQRT rather than ISA_HAS_FP4. - * config/mips/mips.md (recip_condition): Remove mode attribute. - (div3): Use ISA_HAS_FP_RECIP_RSQRT rather than - . - (*recip3, *rsqrta, *rsqrtb): Likewise. - -2013-11-20 Eric Botcazou - - PR target/59207 - * config/sparc/sparc.c (sparc_fold_builtin) : - Make sure neg2_ovf is set before being used. - -2013-11-20 Basile Starynkevitch - - * plugin.def: Add comment about register_callback and - invoke_plugin_callbacks_full. - - * plugin.c (register_callback, invoke_plugin_callbacks_full): - Handle PLUGIN_INCLUDE_FILE event. - -2013-11-20 Ulrich Weigand - - * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Do not - allow subregs of TDmode in FPRs of smaller size in little-endian. - (rs6000_split_multireg_move): When splitting an access to TDmode - in FPRs, do not use simplify_gen_subreg. - -2013-11-20 Joseph Myers - - PR middle-end/21718 - * real.c: Remove comment about decimal string conversion and - rounding errors. - (real_from_string): Use MPFR to convert nonzero decimal constant - to REAL_VALUE_TYPE. - -2013-11-20 Eric Botcazou - - * config/arm/arm.c (arm_dwarf_register_span): Take into account the - endianness of the D registers for the legacy encodings. - -2013-11-20 Richard Earnshaw - - PR rtl-optimization/54300 - * regcprop.c (copyprop_hardreg_forward_1): Ensure any unused - outputs in a single-set are killed from the value chains. - -2013-11-20 Ilya Enkovich - - * cgraph.h (varpool_node): Add need_bounds_init field. - * lto-cgraph.c (lto_output_varpool_node): Output - need_bounds_init value. - (input_varpool_node): Read need_bounds_init value. - * varpool.c (dump_varpool_node): Dump need_bounds_init field. - -2013-11-20 Jan Hubicka - - * opts.c (finish_options): Imply -ffat-lto-objects with - -fno-use-linker-plugin. - * common.opt (fuse-linker-plugin): Add var. - -2013-11-20 Ilya Enkovich - - * dbxout.c (dbxout_type): Ignore POINTER_BOUNDS_TYPE. - * dwarf2out.c (gen_subprogram_die): Ignore bound args. - (gen_type_die_with_usage): Skip pointer bounds. - (dwarf2out_global_decl): Likewise. - -2013-11-20 James Greenhalgh - - * config/aarch64/aarch64.md: Remove "mode" and "mode2" attributes - from all insns. - -2013-11-20 Yuri Rumyantsev - - PR target/57756 - * config/i386/i386.c (ix86_option_override_internal): Add missed - argument prefix for 'ix86_fpmath'. - * config/i386/ssemath.h: Add missed definition of - TARGET_FPMATH_DEFAULT_P macros. - -2013-11-20 Kenneth Zadeck - Mike Stump - Richard Sandiford - - * alias.c (ao_ref_from_mem): Use tree_to_shwi and tree_to_uhwi - instead of TREE_INT_CST_LOW, in cases where there is a protecting - tree_fits_shwi_p or tree_fits_uhwi_p. - * builtins.c (fold_builtin_powi): Likewise. - * config/epiphany/epiphany.c (epiphany_special_round_type_align): - Likewise. - * dbxout.c (dbxout_symbol): Likewise. - * expr.c (expand_expr_real_1): Likewise. - * fold-const.c (fold_single_bit_test, fold_plusminus_mult_expr) - (fold_binary_loc): Likewise. - * gimple-fold.c (fold_const_aggregate_ref_1): Likewise. - * gimple-ssa-strength-reduction.c (stmt_cost): Likewise. - * omp-low.c (lower_omp_for_lastprivate): Likewise. - * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise. - * stor-layout.c (compute_record_mode): Likewise. - * tree-cfg.c (verify_expr): Likewise. - * tree-dfa.c (get_ref_base_and_extent): Likewise. - * tree-pretty-print.c (dump_array_domain): Likewise. - * tree-sra.c (build_user_friendly_ref_for_offset): Likewise. - * tree-ssa-ccp.c (fold_builtin_alloca_with_align): Likewise. - * tree-ssa-loop-ivopts.c (get_loop_invariant_expr_id): Likewise. - * tree-ssa-math-opts.c (execute_cse_sincos): Likewise. - * tree-ssa-phiopt.c (hoist_adjacent_loads): Likewise. - * tree-ssa-reassoc.c (acceptable_pow_call): Likewise. - * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise. - (ao_ref_init_from_vn_reference, vn_reference_fold_indirect): Likewise. - (vn_reference_lookup_3, simplify_binary_expression): Likewise. - * tree-ssa-structalias.c (bitpos_of_field): Likewise. - (get_constraint_for_1, push_fields_onto_fieldstack): Likewise. - (create_variable_info_for_1): Likewise. - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise. - (vect_verify_datarefs_alignment): Likewise. - (vect_analyze_data_ref_accesses): Likewise. - (vect_prune_runtime_alias_test_list): Likewise. - * tree-vectorizer.h (NITERS_KNOWN_P): Likewise. - -2013-11-20 Richard Sandiford - - * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Avoid signed - overflow. Use tree_to_shwi. - -2013-11-20 Richard Sandiford - - * fold-const.c (fold_binary_loc): Use unsigned rather than signed - HOST_WIDE_INTs when folding (x >> c) << c. - -2013-11-20 Andreas Krebbel - Dominik Vogt - - * config/s390/s390.c (s390_canonicalize_comparison): Don't fold - int comparisons with an out of range condition code. - (s390_optimize_nonescaping_tx): Skip empty BBs. - Generate the new tbegin RTX when removing the FPR clobbers (with - two SETs). - (s390_expand_tbegin): Fix the retry loop counter. Copy CC to the - result before doing the retry calculations. - (s390_init_builtins): Make tbegin "returns_twice" and tabort - "noreturn". - * config/s390/s390.md (UNSPECV_TBEGIN_TDB): New constant used for - the TDB setting part of an tbegin. - ("tbegin_1", "tbegin_nofloat_1"): Add a set for the TDB. - ("tx_assist"): Set unused argument to an immediate zero instead of - loading zero into a GPR and pass it as argument. - * config/s390/htmxlintrin.h (__TM_simple_begin, __TM_begin): - Remove inline and related attributes. - (__TM_nesting_depth, __TM_is_user_abort, __TM_is_named_user_abort) - (__TM_is_illegal, __TM_is_footprint_exceeded) - (__TM_is_nested_too_deep, __TM_is_conflict): Fix format value check. - -2013-11-20 Richard Biener - - PR lto/59035 - * lto-opts.c (lto_write_options): Write defaults only if - they were not explicitely specified. Also write - -ffp-contract default. - * lto-wrapper.c (merge_and_complain): Merge -ffp-contract - conservatively. - (run_gcc): Pass through -ffp-contract. - -2013-11-20 Jan-Benedict Glaw - - * config/mips/mips.c (r10k_simplify_address): Eliminate macro usage. - -2013-11-20 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_simd_itype): Remove. - (aarch64_simd_builtin_datum): Remove itype, add qualifiers pointer. - (VAR1): Use qualifiers. - (aarch64_build_scalar_type): New. - (aarch64_build_vector_type): Likewise. - (aarch64_build_type): Likewise. - (aarch64_init_simd_builtins): Refactor, remove special cases, - consolidate main loop. - (aarch64_simd_expand_args): Likewise. - -2013-11-19 Joshua J Cogliati - - PR c/53001 - * doc/invoke.texi: Adding documentation about -Wfloat-conversion. - -2013-11-19 Miro Kropacek - - * config/m68k/m68k.c (m68k_option_overrides): Fix typo. - -2013-11-19 David Malcolm - - * gdbhooks.py (VecPrinter): New class, for prettyprinting pointers - to "vec<>" instances. - (build_pretty_printer): Register the vec<>* prettyprinter. - -2013-11-19 David Malcolm - - * gdbhooks.py (GdbSubprinter.__init__): Drop str_type_ field. - (GdbSubprinter.handles_type): New. - (GdbSubprinterTypeList): New subclass of GdbSubprinter. - (GdbSubprinterRegex): New subclass of GdbSubprinter. - (GdbPrettyPrinters.add_printer): Remove in favor of... - (GdbPrettyPrinters.add_printer_for_types): ...this new method and... - (GdbPrettyPrinters.add_printer_for_regex): ...this other new method. - (GdbPrettyPrinters.__call__): Update search for subprinter - to use handles_type method. - (build_pretty_printer): Update registration of subprinters to - use the new API above, supporting multiple spelling of each type, - and allowing for future regex-based subprinters. - -2013-11-19 Bill Schmidt - - * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Adjust - V16QI vector splat case for little endian. - -2013-11-19 Jeff Law - - * tree-ssa-threadedge.c (thread_across_edge): After threading - through a joiner, allow threading a normal block requiring duplication. - - * tree-ssa-threadupdate.c (thread_block_1): Improve code to detect - jump threading requests that would muck up the loop structures. - - * tree-ssa-threadupdate.c: Fix trailing whitespace. - * tree-ssa-threadupdate.h: Likewise. - -2013-11-19 Mike Stump - - * gdbinit.in: Add pmz to print out mpz values. - -2013-11-20 Jan Hubicka - - * common.opt (ffat-lto-objects): Disable by default. - * doc/invoke.texi (fat-lto-objects): Update documentation. - * opts.c: Enable fat-lto-objects on lto plugin disable setups. - -2013-11-19 Martin Jambor - - PR rtl-optimization/59099 - * ira.c (find_moveable_pseudos): Put back various analyses from ira() - here. - (ira): Move init_reg_equiv and call to - split_live_ranges_for_shrink_wrap up, remove analyses around call - to find_moveable_pseudos. - -2013-11-20 Alan Modra - - * config/rs6000/sysv4.h (CC1_ENDIAN_LITTLE_SPEC): Define as empty. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Default - to strict alignment on older processors when little-endian. - * config/rs6000/linux64.h (PROCESSOR_DEFAULT64): Default to power8 - for ELFv2. - -2013-11-19 Teresa Johnson - - * common/config/i386/i386-common.c: Enable - -freorder-blocks-and-partition at -O2 and up for x86. - * doc/invoke.texi: Update -freorder-blocks-and-partition default. - * opts.c (finish_options): Only warn if - -freorder-blocks-and-partition was set on command line. - -2013-11-19 Sriraman Tallam - - * final.c (final_scan_insn): Emit a label for the split - cold function part. Label name is formed by suffixing - the original function name with "cold". - -2013-11-19 David Malcolm - - * basic-block.h (ENTRY_BLOCK_PTR_FOR_FUNCTION): Rename macro to... - (EXIT_BLOCK_PTR_FOR_FUNCTION): ...this. - (ENTRY_BLOCK_PTR_FOR_FN): Renamed macro to... - (EXIT_BLOCK_PTR_FOR_FN): ...this. - (ENTRY_BLOCK_PTR): Eliminate macro as work towards making uses of - cfun be explicit. - (EXIT_BLOCK_PTR): Likewise. - (FOR_ALL_BB): Rework for now to eliminate use of "ENTRY_BLOCK_PTR". - (FOR_ALL_BB_FN): Update for renaming of - "ENTRY_BLOCK_PTR_FOR_FUNCTION" to "ENTRY_BLOCK_PTR_FOR_FN". - - * cfg.c (init_flow): Likewise. - (check_bb_profile): Likewise. - * cfganal.c (pre_and_rev_post_order_compute_fn): Likewise. - * cfgcleanup.c (walk_to_nondebug_insn): Likewise. - * cfghooks.c (account_profile_record): Likewise. - * cfgloop.c (init_loops_structure): Likewise. - * cgraphbuild.c (record_eh_tables): Likewise. - (compute_call_stmt_bb_frequency): Likewise. - * ipa-inline-analysis.c (compute_bb_predicates): Likewise. - * lto-streamer-in.c (input_cfg): Likewise. - * predict.c (maybe_hot_frequency_p): Likewise. - * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. - * tree-inline.c (initialize_cfun): Likewise. - (copy_cfg_body): Likewise. - (copy_body): Likewise. - (tree_function_versioning): Likewise. - - * bb-reorder.c (add_labels_and_missing_jumps): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (duplicate_computed_gotos): Remove usage of EXIT_BLOCK_PTR macro. - (find_rarely_executed_basic_blocks_and_crossing_edges): Remove uses of - macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (connect_traces): Likewise. - (rest_of_handle_reorder_blocks): Remove usage of EXIT_BLOCK_PTR macro. - (bb_to_key): Remove usage of ENTRY_BLOCK_PTR macro. - (fix_crossing_conditional_branches): Remove usage of EXIT_BLOCK_PTR - macro. - (find_traces_1_round): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (fix_up_fall_thru_edges): Remove usage of EXIT_BLOCK_PTR macro. - (find_traces): Remove usage of ENTRY_BLOCK_PTR macro. - (fix_up_crossing_landing_pad): Remove usage of EXIT_BLOCK_PTR macro. - (rotate_loop): Likewise. - * bt-load.c (migrate_btr_def): Remove usage of ENTRY_BLOCK_PTR macro. - * cfg.c (clear_aux_for_edges): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (alloc_aux_for_edges): Likewise. - (clear_bb_flags): Remove usage of ENTRY_BLOCK_PTR macro. - (cached_make_edge): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (compact_blocks): Likewise. - (clear_edges): Likewise. - * cfganal.c (single_pred_before_succ_order): Remove usage of - ENTRY_BLOCK_PTR macro. - (bitmap_union_of_succs): Remove usage of EXIT_BLOCK_PTR macro. - (bitmap_union_of_preds): Remove usage of ENTRY_BLOCK_PTR macro. - (bitmap_intersection_of_succs): Remove usage of EXIT_BLOCK_PTR macro. - (bitmap_intersection_of_preds): Remove usage of ENTRY_BLOCK_PTR macro. - (inverted_post_order_compute): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (compute_dominance_frontiers_1): Remove usage of ENTRY_BLOCK_PTR macro. - (post_order_compute): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (connect_infinite_loops_to_exit): Remove usage of EXIT_BLOCK_PTR macro. - (remove_fake_edges): Remove usage of ENTRY_BLOCK_PTR macro. - (add_noreturn_fake_exit_edges): Remove usage of EXIT_BLOCK_PTR macro. - (find_pdom): Remove uses of macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (remove_fake_exit_edges): Remove usage of EXIT_BLOCK_PTR macro. - (verify_edge_list): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (print_edge_list): Likewise. - (create_edge_list): Likewise. - (find_unreachable_blocks): Remove usage of ENTRY_BLOCK_PTR macro. - (mark_dfs_back_edges): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - * cfgbuild.c (find_bb_boundaries): Remove usage of ENTRY_BLOCK_PTR - macro. - (find_many_sub_basic_blocks): Remove usage of EXIT_BLOCK_PTR macro. - (make_edges): Remove uses of macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - * cfgcleanup.c (delete_unreachable_blocks): Likewise. - (try_optimize_cfg): Likewise. - (try_head_merge_bb): Remove usage of EXIT_BLOCK_PTR macro. - (try_crossjump_to_edge): Remove usage of ENTRY_BLOCK_PTR macro. - (try_crossjump_bb): Remove usage of EXIT_BLOCK_PTR macro. - (merge_blocks_move): Remove usage of ENTRY_BLOCK_PTR macro. - (outgoing_edges_match): Remove usage of EXIT_BLOCK_PTR macro. - (try_forward_edges): Likewise. - (try_simplify_condjump): Likewise. - * cfgexpand.c (gimple_expand_cfg): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (construct_exit_block): Remove usage of EXIT_BLOCK_PTR macro. - (construct_init_block): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (expand_gimple_basic_block): Remove usage of EXIT_BLOCK_PTR macro. - (expand_gimple_tailcall): Likewise. - * cfghooks.c (can_duplicate_block_p): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (tidy_fallthru_edges): Likewise. - (verify_flow_info): Likewise. - * cfgloop.c (flow_bb_inside_loop_p): Likewise. - (num_loop_branches): Remove usage of EXIT_BLOCK_PTR macro. - (disambiguate_multiple_latches): Remove usage of ENTRY_BLOCK_PTR macro. - (get_loop_exit_edges): Remove usage of EXIT_BLOCK_PTR macro. - (bb_loop_header_p): Remove usage of ENTRY_BLOCK_PTR macro. - (get_loop_body_in_bfs_order): Remove usage of EXIT_BLOCK_PTR macro. - (get_loop_body_in_dom_order): Likewise. - (get_loop_body): Likewise. - * cfgloopanal.c (mark_irreducible_loops): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - * cfgloopmanip.c (create_preheader): Remove usage of ENTRY_BLOCK_PTR - macro. - (remove_path): Remove usage of EXIT_BLOCK_PTR macro. - (fix_bb_placement): Likewise. - * cfgrtl.c (rtl_block_empty_p): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (rtl_can_remove_branch_p): Remove usage of EXIT_BLOCK_PTR macro. - (cfg_layout_split_edge): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (rtl_flow_call_edges_add): Remove usage of EXIT_BLOCK_PTR macro. - (cfg_layout_can_merge_blocks_p): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (cfg_layout_redirect_edge_and_branch): Remove usage of ENTRY_BLOCK_PTR - macro. - (fixup_fallthru_exit_predecessor): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (fixup_reorder_chain): Likewise. - (relink_block_chain): Likewise. - (cfg_layout_delete_block): Remove usage of EXIT_BLOCK_PTR macro. - (rtl_verify_bb_layout): Remove usage of ENTRY_BLOCK_PTR macro. - (cfg_layout_duplicate_bb): Remove usage of EXIT_BLOCK_PTR macro. - (force_one_exit_fallthru): Likewise. - (rtl_verify_fallthru): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (rtl_verify_edges): Likewise. - (commit_edge_insertions): Likewise. - (commit_one_edge_insertion): Likewise. - (rtl_split_edge): Likewise. - (force_nonfallthru_and_redirect): Likewise. - (outof_cfg_layout_mode): Remove usage of EXIT_BLOCK_PTR macro. - (skip_insns_after_block): Likewise. - (fixup_partition_crossing): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (purge_dead_edges): Remove usage of EXIT_BLOCK_PTR macro. - (rtl_can_merge_blocks): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (contains_no_active_insn_p): Likewise. - (emit_insn_at_entry): Remove usage of ENTRY_BLOCK_PTR macro. - (entry_of_function): Likewise. - (last_bb_in_partition): Remove usage of EXIT_BLOCK_PTR macro. - (fixup_new_cold_bb): Likewise. - (patch_jump_insn): Likewise. - (try_redirect_by_replacing_jump): Likewise. - (block_label): Likewise. - (could_fall_through): Likewise. - (can_fallthru): Likewise. - * cgraphbuild.c (cgraph_rebuild_references): Remove usage of - ENTRY_BLOCK_PTR macro. - (rebuild_cgraph_edges): Likewise. - * cgraphunit.c (init_lowered_empty_function): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (expand_thunk): Remove usage of EXIT_BLOCK_PTR macro. - * combine.c (get_last_value): Remove usage of ENTRY_BLOCK_PTR macro. - (distribute_links): Remove usage of EXIT_BLOCK_PTR macro. - (get_last_value_validate): Remove usage of ENTRY_BLOCK_PTR macro. - (try_combine): Remove usage of EXIT_BLOCK_PTR macro. - (reg_num_sign_bit_copies_for_combine): Remove usage of ENTRY_BLOCK_PTR - macro. - (reg_nonzero_bits_for_combine): Likewise. - (set_nonzero_bits_and_sign_copies): Likewise. - (combine_instructions): Likewise. - * cprop.c (one_cprop_pass): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (bypass_conditional_jumps): Likewise. - (bypass_block): Remove usage of EXIT_BLOCK_PTR macro. - (find_implicit_sets): Likewise. - (cprop_jump): Likewise. - * cse.c (cse_cc_succs): Likewise. - (cse_find_path): Likewise. - * df-problems.c (df_lr_confluence_0): Likewise. - * df-scan.c (df_entry_block_defs_collect): Remove usage of - ENTRY_BLOCK_PTR macro. - (df_exit_block_uses_collect): Remove usage of EXIT_BLOCK_PTR macro. - * dominance.c (iterate_fix_dominators): Remove usage of - ENTRY_BLOCK_PTR macro. - (calc_idoms): Remove uses of macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (determine_dominators_for_sons): Remove usage of ENTRY_BLOCK_PTR macro. - (calc_dfs_tree): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (prune_bbs_to_update_dominators): Remove usage of ENTRY_BLOCK_PTR - macro. - (calc_dfs_tree_nonrec): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - * domwalk.c (cmp_bb_postorder): Likewise. - * dse.c (dse_step1): Remove usage of EXIT_BLOCK_PTR macro. - * except.c (finish_eh_generation): Remove usage of ENTRY_BLOCK_PTR - macro. - (sjlj_emit_function_enter): Likewise. - * final.c (compute_alignments): Likewise. - * function.c (thread_prologue_and_epilogue_insns): Remove uses of - macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (reposition_prologue_and_epilogue_notes): Remove usage of - EXIT_BLOCK_PTR macro. - (convert_jumps_to_returns): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (regno_clobbered_at_setjmp): Remove usage of ENTRY_BLOCK_PTR macro. - (next_block_for_reg): Remove usage of EXIT_BLOCK_PTR macro. - * gcse.c (hoist_code): Remove usage of ENTRY_BLOCK_PTR macro. - (update_bb_reg_pressure): Remove usage of EXIT_BLOCK_PTR macro. - (compute_code_hoist_vbeinout): Likewise. - (should_hoist_expr_to_dom): Remove usage of ENTRY_BLOCK_PTR macro. - (pre_expr_reaches_here_p_work): Likewise. - * gimple-iterator.c (gsi_commit_edge_inserts): Likewise. - (gimple_find_edge_insert_loc): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - * gimple-ssa-strength-reduction.c (slsr_process_phi): Remove usage of - ENTRY_BLOCK_PTR macro. - * graph.c (draw_cfg_nodes_for_loop): Remove usage of EXIT_BLOCK_PTR - macro. - * graphite-clast-to-gimple.c (translate_clast_user): Remove usage of - ENTRY_BLOCK_PTR macro. - * graphite-scop-detection.c (build_scops): Likewise. - (create_sese_edges): Remove usage of EXIT_BLOCK_PTR macro. - (scopdet_basic_block_info): Remove usage of ENTRY_BLOCK_PTR macro. - * haifa-sched.c (restore_bb_notes): Remove usage of EXIT_BLOCK_PTR - macro. - (unlink_bb_notes): Likewise. - (create_check_block_twin): Likewise. - (init_before_recovery): Likewise. - (sched_extend_bb): Likewise. - (priority): Likewise. - * hw-doloop.c (reorder_loops): Likewise. - (discover_loop): Likewise. - * ifcvt.c (dead_or_predicable): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (find_if_case_1): Remove usage of EXIT_BLOCK_PTR macro. - (block_has_only_trap): Likewise. - (cond_exec_find_if_block): Likewise. - (merge_if_block): Likewise. - * ipa-inline-analysis.c (param_change_prob): Remove usage of - ENTRY_BLOCK_PTR macro. - (record_modified): Likewise. - * ipa-pure-const.c (execute_warn_function_noreturn): Remove usage of - EXIT_BLOCK_PTR macro. - (local_pure_const): Likewise. - * ipa-split.c (split_function): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (find_split_points): Likewise. - (consider_split): Likewise. - (find_return_bb): Remove usage of EXIT_BLOCK_PTR macro. - (verify_non_ssa_vars): Remove usage of ENTRY_BLOCK_PTR macro. - * ira-build.c (ira_loop_tree_body_rev_postorder): Likewise. - * ira-color.c (print_loop_title): Remove usage of EXIT_BLOCK_PTR macro. - * ira-emit.c (entered_from_non_parent_p): Remove usage of - ENTRY_BLOCK_PTR macro. - (ira_emit): Remove usage of EXIT_BLOCK_PTR macro. - * ira-int.h (ira_assert): Remove usage of ENTRY_BLOCK_PTR macro. - * ira.c (split_live_ranges_for_shrink_wrap): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - * lcm.c (compute_rev_insert_delete): Remove usage of ENTRY_BLOCK_PTR - macro. - (compute_nearerout): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (compute_farthest): Likewise. - (compute_available): Likewise. - (compute_insert_delete): Remove usage of EXIT_BLOCK_PTR macro. - (compute_laterin): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (compute_earliest): Likewise. - (compute_antinout_edge): Likewise. - * loop-iv.c (simplify_using_initial_values): Remove usage of - ENTRY_BLOCK_PTR macro. - * loop-unswitch.c (unswitch_loop): Remove usage of EXIT_BLOCK_PTR - macro. - * lra-assigns.c (find_hard_regno_for): Remove usage of ENTRY_BLOCK_PTR - macro. - * lra-constraints.c (lra_inheritance): Remove usage of EXIT_BLOCK_PTR - macro. - * lra-lives.c (lra_create_live_ranges): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - * lra.c (has_nonexceptional_receiver): Remove usage of EXIT_BLOCK_PTR - macro. - * lto-streamer-in.c (input_function): Remove usage of ENTRY_BLOCK_PTR - macro. - * lto-streamer-out.c (output_cfg): Likewise. - * mcf.c (adjust_cfg_counts): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (create_fixup_graph): Remove usage of ENTRY_BLOCK_PTR macro. - * mode-switching.c (optimize_mode_switching): Likewise. - (create_pre_exit): Remove usage of EXIT_BLOCK_PTR macro. - * modulo-sched.c (rest_of_handle_sms): Likewise. - (canon_loop): Likewise. - * omp-low.c (build_omp_regions): Remove usage of ENTRY_BLOCK_PTR macro. - * postreload-gcse.c (eliminate_partially_redundant_loads): Remove uses - of macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - * predict.c (rebuild_frequencies): Remove usage of ENTRY_BLOCK_PTR - macro. - (propagate_freq): Remove usage of EXIT_BLOCK_PTR macro. - (estimate_bb_frequencies): Remove usage of ENTRY_BLOCK_PTR macro. - (tree_estimate_probability_bb): Remove usage of EXIT_BLOCK_PTR macro. - (expensive_function_p): Remove usage of ENTRY_BLOCK_PTR macro. - (tree_bb_level_predictions): Remove usage of EXIT_BLOCK_PTR macro. - (counts_to_freqs): Remove usage of ENTRY_BLOCK_PTR macro. - (apply_return_prediction): Remove usage of EXIT_BLOCK_PTR macro. - (estimate_loops): Remove usage of ENTRY_BLOCK_PTR macro. - (gimple_predict_edge): Likewise. - (probably_never_executed): Likewise. - * profile.c (find_spanning_tree): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (branch_prob): Likewise. - (compute_branch_probabilities): Likewise. - (compute_frequency_overlap): Remove usage of ENTRY_BLOCK_PTR macro. - (is_inconsistent): Remove usage of EXIT_BLOCK_PTR macro. - (read_profile_edge_counts): Remove usage of ENTRY_BLOCK_PTR macro. - (set_bb_counts): Likewise. - (correct_negative_edge_counts): Likewise. - (get_exec_counts): Likewise. - (instrument_values): Likewise. - (instrument_edges): Likewise. - * reg-stack.c (convert_regs): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (compensate_edges): Remove usage of ENTRY_BLOCK_PTR macro. - (convert_regs_exit): Remove usage of EXIT_BLOCK_PTR macro. - (convert_regs_entry): Remove usage of ENTRY_BLOCK_PTR macro. - (reg_to_stack): Likewise. - * regs.h (REG_N_SETS): Likewise. - * reload.c (find_dummy_reload): Likewise. - (combine_reloads): Likewise. - (push_reload): Likewise. - * reload1.c (has_nonexceptional_receiver): Remove usage of - EXIT_BLOCK_PTR macro. - * resource.c (mark_target_live_regs): Remove usage of ENTRY_BLOCK_PTR - macro. - (find_basic_block): Likewise. - * sched-ebb.c (ebb_add_block): Remove usage of EXIT_BLOCK_PTR macro. - (schedule_ebbs): Likewise. - * sched-int.h (sel_sched_p): Likewise. - * sched-rgn.c (compute_dom_prob_ps): Remove usage of ENTRY_BLOCK_PTR - macro. - (rgn_add_block): Remove usage of EXIT_BLOCK_PTR macro. - (haifa_find_rgns): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (propagate_deps): Remove usage of EXIT_BLOCK_PTR macro. - (extend_rgns): Likewise. - (find_single_block_region): Likewise. - * sel-sched-ir.c (sel_remove_loop_preheader): Remove usage of - ENTRY_BLOCK_PTR macro. - (setup_nop_and_exit_insns): Remove usage of EXIT_BLOCK_PTR macro. - (sel_create_recovery_block): Likewise. - (bb_ends_ebb_p): Likewise. - (sel_bb_end): Likewise. - (sel_bb_head): Likewise. - (free_lv_sets): Likewise. - (init_lv_sets): Likewise. - (tidy_control_flow): Likewise. - (maybe_tidy_empty_bb): Likewise. - * sel-sched-ir.h (_succ_iter_cond): Likewise. - (_succ_iter_start): Likewise. - (sel_bb_empty_or_nop_p): Likewise. - (get_loop_exit_edges_unique_dests): Likewise. - (inner_loop_header_p): Likewise. - * sel-sched.c (create_block_for_bookkeeping): Likewise. - (find_block_for_bookkeeping): Likewise. - * store-motion.c (remove_reachable_equiv_notes): Likewise. - (insert_store): Likewise. - * trans-mem.c (ipa_tm_transform_clone): Remove usage of - ENTRY_BLOCK_PTR macro. - (tm_memopt_compute_available): Remove usage of EXIT_BLOCK_PTR macro. - (ipa_tm_scan_irr_function): Remove usage of ENTRY_BLOCK_PTR macro. - (gate_tm_init): Likewise. - (tm_region_init): Likewise. - * tree-cfg.c (execute_fixup_cfg): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (execute_warn_function_return): Remove usage of EXIT_BLOCK_PTR macro. - (split_critical_edges): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (print_loops): Remove usage of ENTRY_BLOCK_PTR macro. - (move_sese_region_to_fn): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (gimple_redirect_edge_and_branch): Remove usage of ENTRY_BLOCK_PTR - macro. - (gimple_verify_flow_info): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (remove_edge_and_dominated_blocks): Remove usage of EXIT_BLOCK_PTR - macro. - (make_edges): Remove uses of macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (gimple_flow_call_edges_add): Remove usage of EXIT_BLOCK_PTR macro. - (make_blocks): Remove usage of ENTRY_BLOCK_PTR macro. - (build_gimple_cfg): Likewise. - (gimple_duplicate_bb): Remove usage of EXIT_BLOCK_PTR macro. - (gimple_can_merge_blocks_p): Likewise. - * tree-cfgcleanup.c (tree_forwarder_block_p): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - * tree-complex.c (update_parameter_components): Remove usage of - ENTRY_BLOCK_PTR macro. - * tree-if-conv.c (get_loop_body_in_if_conv_order): Remove usage of - EXIT_BLOCK_PTR macro. - * tree-inline.c (tree_function_versioning): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (delete_unreachable_blocks_update_callgraph): Likewise. - (initialize_cfun): Likewise. - (copy_cfg_body): Remove usage of ENTRY_BLOCK_PTR macro. - (copy_edges_for_bb): Remove usage of EXIT_BLOCK_PTR macro. - (remap_ssa_name): Remove usage of ENTRY_BLOCK_PTR macro. - * tree-into-ssa.c (update_ssa): Likewise. - (maybe_register_def): Remove usage of EXIT_BLOCK_PTR macro. - (insert_updated_phi_nodes_for): Remove usage of ENTRY_BLOCK_PTR macro. - (rewrite_into_ssa): Likewise. - (rewrite_debug_stmt_uses): Likewise. - * tree-outof-ssa.c (expand_phi_nodes): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - * tree-profile.c (gimple_gen_ic_func_profiler): Remove usage of - ENTRY_BLOCK_PTR macro. - * tree-scalar-evolution.h (block_before_loop): Likewise. - * tree-sra.c (sra_ipa_reset_debug_stmts): Likewise. - (dump_dereferences_table): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (analyze_caller_dereference_legality): Remove usage of ENTRY_BLOCK_PTR - macro. - (propagate_dereference_distances): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (initialize_parameter_reductions): Remove usage of ENTRY_BLOCK_PTR - macro. - * tree-ssa-ccp.c (gsi_prev_dom_bb_nondebug): Likewise. - (optimize_stack_restore): Remove usage of EXIT_BLOCK_PTR macro. - * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise. - * tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (remove_dead_stmt): Remove usage of EXIT_BLOCK_PTR macro. - (propagate_necessity): Remove usage of ENTRY_BLOCK_PTR macro. - (mark_control_dependent_edges_necessary): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - * tree-ssa-dom.c (eliminate_degenerate_phis): Remove usage of - ENTRY_BLOCK_PTR macro. - (tree_ssa_dominator_optimize): Remove usage of EXIT_BLOCK_PTR macro. - * tree-ssa-live.c (verify_live_on_entry): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (calculate_live_on_exit): Likewise. - (set_var_live_on_entry): Remove usage of ENTRY_BLOCK_PTR macro. - (loe_visit_block): Likewise. - * tree-ssa-live.h (live_on_exit): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (live_on_entry): Likewise. - * tree-ssa-loop-ivopts.c (find_interesting_uses): Remove usage of - EXIT_BLOCK_PTR macro. - * tree-ssa-loop-manip.c (compute_live_loop_exits): Remove usage of - ENTRY_BLOCK_PTR macro. - * tree-ssa-loop-niter.c (simplify_using_initial_conditions): Likewise. - (bound_difference): Likewise. - * tree-ssa-loop-prefetch.c (may_use_storent_in_loop_p): Remove usage - of EXIT_BLOCK_PTR macro. - * tree-ssa-loop-unswitch.c (simplify_using_entry_checks): Remove usage - of ENTRY_BLOCK_PTR macro. - * tree-ssa-math-opts.c (register_division_in): Likewise. - * tree-ssa-phiprop.c (tree_ssa_phiprop): Likewise. - * tree-ssa-pre.c (compute_avail): Likewise. - (compute_antic): Remove usage of EXIT_BLOCK_PTR macro. - (insert): Remove usage of ENTRY_BLOCK_PTR macro. - * tree-ssa-propagate.c (ssa_prop_init): Likewise. - (simulate_block): Remove usage of EXIT_BLOCK_PTR macro. - (cfg_blocks_add): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - (add_control_edge): Remove usage of EXIT_BLOCK_PTR macro. - * tree-ssa-reassoc.c (do_reassoc): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (build_and_add_sum): Remove usage of ENTRY_BLOCK_PTR macro. - * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise. - (execute_sink_code): Remove usage of EXIT_BLOCK_PTR macro. - * tree-ssa-uninit.c (find_dom): Remove usage of ENTRY_BLOCK_PTR macro. - (compute_control_dep_chain): Remove usage of EXIT_BLOCK_PTR macro. - (find_pdom): Likewise. - (warn_uninitialized_vars): Remove usage of ENTRY_BLOCK_PTR macro. - * tree-stdarg.c (reachable_at_most_once): Likewise. - * tree-tailcall.c (tree_optimize_tail_calls_1): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (eliminate_tail_call): Likewise. - * tsan.c (instrument_func_entry): Remove usage of ENTRY_BLOCK_PTR - macro. - (instrument_func_exit): Remove usage of EXIT_BLOCK_PTR macro. - * var-tracking.c (vt_initialize): Remove uses of macros: - ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. - (vt_add_function_parameter): Remove usage of ENTRY_BLOCK_PTR macro. - (vt_find_locations): Remove usage of EXIT_BLOCK_PTR macro. - (vt_stack_adjustments): Remove uses of macros: ENTRY_BLOCK_PTR, - EXIT_BLOCK_PTR. - * varasm.c (assemble_start_function): Remove usage of ENTRY_BLOCK_PTR - macro. - * config/bfin/bfin.c (hwloop_optimize): Likewise. - * config/nds32/nds32.c (nds32_fp_as_gp_check_available): Remove usage - of EXIT_BLOCK_PTR macro. - * config/arm/arm.c (require_pic_register): Remove usage of - ENTRY_BLOCK_PTR macro. - (arm_r3_live_at_start_p): Likewise. - (any_sibcall_could_use_r3): Remove usage of EXIT_BLOCK_PTR macro. - * config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise. - * config/frv/frv.c (frv_optimize_membar_global): Likewise. - * config/alpha/alpha.c (alpha_gp_save_rtx): Remove usage of - ENTRY_BLOCK_PTR macro. - * config/i386/i386.c (ix86_count_insn): Likewise. - (ix86_seh_fixup_eh_fallthru): Remove usage of EXIT_BLOCK_PTR macro. - (ix86_pad_short_function): Likewise. - (ix86_compute_frame_layout): Remove usage of ENTRY_BLOCK_PTR macro. - (ix86_pad_returns): Remove usage of EXIT_BLOCK_PTR macro. - (ix86_eax_live_at_start_p): Remove usage of ENTRY_BLOCK_PTR macro. - (add_condition_to_bb): Remove usage of EXIT_BLOCK_PTR macro. - (ix86_expand_epilogue): Likewise. - * config/ia64/ia64.c (ia64_asm_unwind_emit): Likewise. - (ia64_expand_prologue): Likewise. - -2013-11-19 Catherine Moore - - * doc/invoke.texi (mfix-rm7000, mno-fix-rm7000): Document. - * config/mips/mips.opt (mfix-rm7000): New option. - * config/mips/mips.h (ASM_SPEC): Handle mfix-rm7000. - * config/mips/mips.c (mips_reorg_process_insns): Disable - noreorder for TARGET_FIX_RM7000. - -2013-11-19 Oleg Endo - - * config/sh/sh-c.c: Fix typo in include of file attribs.h. - -2013-11-19 Kyrylo Tkachov - - * config/arm/arm.c (arm_new_rtx_costs): - Handle narrow mode add-shifts properly. - * config/arm/arm-common.c (arm_rtx_shift_left_p): Remove static. - * config/arm/arm-common-protos.h (arm_rtx_shift_left_p): - Declare extern. - -2013-11-19 James Greenhalgh - - * config/arm/arm.md (zero_extenddi2): Add type attribute. - -2013-11-19 Ulrich Weigand - - * config/rs6000/vector.md ("mov"): Do not call - rs6000_emit_le_vsx_move to move into or out of GPRs. - * config/rs6000/rs6000.c (rs6000_emit_le_vsx_move): Assert - source and destination are not GPR hard regs. - -2013-11-19 David Malcolm - - * basic-block.h (n_edges_for_function): Rename macro to... - (n_edges_for_fn): ...this. - (n_edges): Eliminate macro as work towards making uses of - cfun be explicit. - - * cfg.c (init_flow): Update for renaming of "n_edges_for_function" - to "n_edges_for_fn". - - * cfg.c (unchecked_make_edge): Remove usage of n_edges macro. - (clear_edges): Likewise. - (free_edge): Likewise. - * cfghooks.c (dump_flow_info): Likewise. - * cprop.c (is_too_expensive): Likewise. - * df-core.c (df_worklist_dataflow_doublequeue): Likewise. - * gcse.c (is_too_expensive): Likewise. - (prune_insertions_deletions): Likewise. - * mcf.c (create_fixup_graph): Likewise. - * sched-rgn.c (haifa_find_rgns): Likewise. - * tree-cfg.c (gimple_dump_cfg): Likewise. - * var-tracking.c (variable_tracking_main_1): Likewise. - -2013-11-19 Marcus Shawcroft - - * config/aarch64/aarch64.c (aarch64_save_or_restore_fprs): Fix over - length lines. - -2013-11-19 Marcus Shawcroft - - * config/aarch64/aarch64.md - (aarch64_movdi_low, *add__si_uxtw): Adjust whitespace. - -2013-11-19 Marcus Shawcroft - - * config/aarch64/aarch64.h (PROFILE_HOOK): Fix whitespace. - -2013-11-19 Joseph Myers - - * varasm.c (align_variable): Give error instead of warning for - unsupported alignment. - (assemble_noswitch_variable): Likewise. - -2013-11-19 Basile Starynkevitch - - * plugin.def (PLUGIN_INCLUDE_FILE): New event, invoked in - cb_file_change. - -2013-11-19 Peter Bergner - - * loop-doloop.c (doloop_optimize_loops): Remove unused - loop iterator argument from FOR_EACH_LOOP. - -2013-11-19 David Malcolm - - Convert gimple types from a union to C++ inheritance. - * Makefile.in (GIMPLE_H): Add dep on is-a.h. - * coretypes.h (union gimple_statement_d): Remove declaration. - (gimple): Convert from being a "union gimple_statement_d *" - to a "struct gimple_statement_base *". - (const_gimple): Likewise (with "const"). - * ggc.h (ggc_alloc_cleared_gimple_statement_d_stat): Replace with... - (ggc_alloc_cleared_gimple_statement_stat): ...this. - * gimple-pretty-print.c (debug): Change parameter from a - "gimple_statement_d &" to a "gimple_statement_base &". - (debug): Change parameter from a "gimple_statement_d *" to - a "gimple_statement_base *". - * gimple-pretty-print.h (debug): Update declarations as above. - * gimple.c (gimple_alloc_stat): Update for renaming of - ggc_alloc_cleared_gimple_statement_d_stat to - ggc_alloc_cleared_gimple_statement_stat. - * gimple.h: Include "is-a.h" for use by is_a_helper - specializations in followup autogenerated patch. - (struct gimple statement_base): Make this type usable as a base - class by adding "desc", "tag" and "variable_size" to GTY, thus - using opting-in to gengtype's support for simple inheritance. - (gimple_statement_with_ops_base): Convert to a subclass of - gimple_statement_base, dropping initial "gsbase" field. Note that - this type is abstract, with no GSS_ value, and thus no GTY tag value. - (gimple_statement_with_ops): Convert to a subclass of - gimple_statement_with_ops_base, dropping initial "opbase" field. - Add tag value to GTY marking. Update marking of op field to - reflect how num_ops field is accessed via inheritance. - (gimple_statement_with_memory_ops_base): Convert to a subclass of - gimple_statement_with_ops_base, dropping initial "opbase" field. - Add tag value to GTY marking. - (gimple_statement_with_memory_ops): Convert to a subclass of - public gimple_statement_with_memory_ops_base, dropping initial - "membase" field. Add tag value to GTY marking. Update marking - of op field to reflect how num_ops field is accessed via inheritance. - (gimple_statement_call): Analogous changes that also update the - marking of the "u" union. - (gimple_statement_omp): Convert to a subclass of - gimple_statement_base, dropping initial "gsbase" field, adding - tag value to GTY marking. - (gimple_statement_bind): Likewise. - (gimple_statement_catch): Likewise. - (gimple_statement_eh_filter): Likewise. - (gimple_statement_eh_else): Likewise. - (gimple_statement_eh_mnt): Likewise. - (gimple_statement_phi): Likewise. - (gimple_statement_eh_ctrl): Likewise. - (gimple_statement_try): Likewise. - (gimple_statement_wce): Likewise. - (gimple_statement_asm): Convert to a subclass of - gimple_statement_with_memory_ops_base, dropping initial - "membase" field, adding tag value to GTY marking, and updating - marking of op field. - (gimple_statement_omp_critical): Convert to a subclass of - gimple_statement_omp, dropping initial "omp" field, adding tag - value to GTY marking. - (gimple_statement_omp_for): Likewise. - (gimple_statement_omp_parallel): Likewise. - (gimple_statement_omp_task): Convert to a subclass of - gimple_statement_omp_parallel, dropping initial "par" field, - adding tag value to GTY marking. - (gimple_statement_omp_sections): Convert to a subclass of - gimple_statement_omp, dropping initial "omp" field, adding - tag value to GTY marking. - (gimple_statement_omp_continue): Convert to a subclass of - gimple_statement_base, dropping initial "gsbase" field, adding - tag value to GTY marking. - (gimple_statement_omp_single): Convert to a subclass of - gimple_statement_omp, dropping initial "omp" field, adding - tag value to GTY marking. - (gimple_statement_omp_atomic_load): Convert to a subclass of - gimple_statement_base, dropping initial "gsbase" field, adding - tag value to GTY marking. - (gimple_statement_omp_atomic_store): Convert to a subclass of - gimple_statement_base, dropping initial "gsbase" field, adding - tag value to GTY marking. - (gimple_statement_transaction): Convert to a subclass of - gimple_statement_with_memory_ops_base, dropping initial "gsbase" - field, adding tag value to GTY marking. - (union gimple_statement_d): Remove. - * system.h (CONST_CAST_GIMPLE): Update to use - "struct gimple_statement_base *" rather than - "union gimple_statement_d *". - * tree-ssa-ccp.c (gimple_htab): Convert underlying type from - gimple_statement_d to gimple_statement_base. - - * gimple.h (gimple_use_ops): Port from union to usage of dyn_cast. - (gimple_set_use_ops): Port from union to usage of as_a. - (gimple_set_vuse): Likewise. - (gimple_set_vdef): Likewise. - (gimple_call_internal_fn): Port from union to a static_cast, - given that the type has already been asserted. - (gimple_omp_body_ptr): Port from unchecked union usage to - a static_cast. - (gimple_omp_set_body): Likewise. - - * gimple-iterator.c (update_bb_for_stmts): Update for conversion of - gimple types to a true class hierarchy. - (update_call_edge_frequencies): Likewise. - (gsi_insert_seq_nodes_before): Likewise. - (gsi_insert_seq_nodes_after): Likewise. - (gsi_split_seq_after): Likewise. - (gsi_set_stmt): Likewise. - (gsi_split_seq_before): Likewise. - (gsi_remove): Likewise. - * gimple-iterator.h (gsi_one_before_end_p): Likewise. - (gsi_next): Likewise. - (gsi_prev): Likewise. - * gimple-pretty-print.c (dump_gimple_debug): Likewise. - * gimple-ssa.h (gimple_vuse_op): Likewise. - (gimple_vdef_op): Likewise. - * gimple-streamer-in.c (input_gimple_stmt): Likewise. - * gimple-streamer-out.c (output_gimple_stmt): Likewise. - * gimple.c (gimple_set_code): Likewise. - (gimple_alloc_stat): Likewise. - (gimple_set_subcode): Likewise. - (gimple_build_call_internal_1): Likewise. - (gimple_check_failed): Likewise. - (gimple_call_flags): Likewise. - (gimple_set_bb): Likewise. - * gimple.h (is_a_helper (gimple)): New. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (gimple)): Likewise. - (is_a_helper (const_gimple)): Likewise. - (is_a_helper (const_gimple)): Likewise. - (is_a_helper (const_gimple)): Likewise. - (is_a_helper (const_gimple)): Likewise. - (is_a_helper (const_gimple)): - Likewise. - (is_a_helper (const_gimple)): - Likewise. - (is_a_helper (const_gimple)): - Likewise. - (is_a_helper - (const_gimple)): Likewise. - (is_a_helper (const_gimple)): - Likewise. - (is_a_helper (const_gimple)): - Likewise. - (is_a_helper (const_gimple)): - Likewise. - (is_a_helper (const_gimple)): - Likewise. - (is_a_helper (const_gimple)): - Likewise. - (is_a_helper (const_gimple)): - Likewise. - (is_a_helper (const_gimple)): - Likewise. - (is_a_helper (const_gimple)): Likewise. - (is_a_helper (const_gimple)): - Likewise. - (gimple_seq_last): Update for conversion of gimple types to a true - class hierarchy. - (gimple_seq_set_last): Likewise. - (gimple_code): Likewise. - (gimple_bb): Likewise. - (gimple_block): Likewise. - (gimple_set_block): Likewise. - (gimple_location): Likewise. - (gimple_location_ptr): Likewise. - (gimple_set_location): Likewise. - (gimple_no_warning_p): Likewise. - (gimple_set_no_warning): Likewise. - (gimple_set_visited): Likewise. - (gimple_visited_p): Likewise. - (gimple_set_plf): Likewise. - (gimple_plf): Likewise. - (gimple_set_uid): Likewise. - (gimple_uid): Likewise. - (gimple_init_singleton): Likewise. - (gimple_modified_p): Likewise. - (gimple_set_modified): Likewise. - (gimple_expr_code): Likewise. - (gimple_has_volatile_ops): Likewise. - (gimple_set_has_volatile_ops): Likewise. - (gimple_omp_subcode): Likewise. - (gimple_omp_set_subcode): Likewise. - (gimple_omp_return_set_nowait): Likewise. - (gimple_omp_section_set_last): Likewise. - (gimple_omp_parallel_set_combined_p): Likewise. - (gimple_omp_atomic_set_need_value): Likewise. - (gimple_omp_atomic_set_seq_cst): Likewise. - (gimple_num_ops): Likewise. - (gimple_set_num_ops): Likewise. - (gimple_assign_nontemporal_move_p): Likewise. - (gimple_assign_set_nontemporal_move): Likewise. - (gimple_assign_rhs_code): Likewise. - (gimple_assign_set_rhs_code): Likewise. - (gimple_call_internal_p): Likewise. - (gimple_call_with_bounds_p): Likewise. - (gimple_call_set_with_bounds): Likewise. - (gimple_call_set_tail): Likewise. - (gimple_call_tail_p): Likewise. - (gimple_call_set_return_slot_opt): Likewise. - (gimple_call_return_slot_opt_p): Likewise. - (gimple_call_set_from_thunk): Likewise. - (gimple_call_from_thunk_p): Likewise. - (gimple_call_set_va_arg_pack): Likewise. - (gimple_call_va_arg_pack_p): Likewise. - (gimple_call_set_nothrow): Likewise. - (gimple_call_set_alloca_for_var): Likewise. - (gimple_call_alloca_for_var_p): Likewise. - (gimple_call_copy_flags): Likewise. - (gimple_cond_code): Likewise. - (gimple_cond_set_code): Likewise. - (gimple_cond_make_false): Likewise. - (gimple_cond_make_true): Likewise. - (gimple_asm_volatile_p): Likewise. - (gimple_asm_set_volatile): Likewise. - (gimple_asm_set_input): Likewise. - (gimple_asm_input_p): Likewise. - (gimple_try_kind): Likewise. - (gimple_try_set_kind): Likewise. - (gimple_try_catch_is_cleanup): Likewise. - (gimple_try_set_catch_is_cleanup): Likewise. - (gimple_wce_cleanup_eh_only): Likewise. - (gimple_wce_set_cleanup_eh_only): Likewise. - (gimple_debug_bind_p): Likewise. - (gimple_debug_source_bind_p): Likewise. - (gimple_omp_for_set_kind): Likewise. - (gimple_omp_for_set_combined_p): Likewise. - (gimple_omp_for_set_combined_into_p): Likewise. - (gimple_omp_target_set_kind): Likewise. - (gimple_transaction_subcode): Likewise. - (gimple_transaction_set_subcode): Likewise. - (gimple_predict_predictor): Likewise. - (gimple_predict_set_predictor): Likewise. - (gimple_predict_outcome): Likewise. - (gimple_predict_set_outcome): Likewise. - (gimple_transaction_set_label): Likewise. - (gimple_transaction_set_body): Likewise. - (gimple_transaction_label_ptr): Likewise. - (gimple_transaction_label): Likewise. - (gimple_transaction_body_ptr): Likewise. - (gimple_omp_continue_set_control_use): Likewise. - (gimple_omp_continue_control_use_ptr): Likewise. - (gimple_omp_continue_control_use): Likewise. - (gimple_omp_continue_set_control_def): Likewise. - (gimple_omp_continue_control_def_ptr): Likewise. - (gimple_omp_continue_control_def): Likewise. - (gimple_omp_atomic_load_rhs_ptr): Likewise. - (gimple_omp_atomic_load_rhs): Likewise. - (gimple_omp_atomic_load_set_rhs): Likewise. - (gimple_omp_atomic_load_lhs_ptr): Likewise. - (gimple_omp_atomic_load_lhs): Likewise. - (gimple_omp_atomic_load_set_lhs): Likewise. - (gimple_omp_atomic_store_val_ptr): Likewise. - (gimple_omp_atomic_store_val): Likewise. - (gimple_omp_atomic_store_set_val): Likewise. - (gimple_omp_for_cond): Likewise. - (gimple_omp_for_set_cond): Likewise. - (gimple_omp_sections_set_control): Likewise. - (gimple_omp_sections_control_ptr): Likewise. - (gimple_omp_sections_control): Likewise. - (gimple_omp_sections_set_clauses): Likewise. - (gimple_omp_sections_clauses_ptr): Likewise. - (gimple_omp_sections_clauses): Likewise. - (gimple_omp_teams_set_clauses): Likewise. - (gimple_omp_teams_clauses_ptr): Likewise. - (gimple_omp_teams_clauses): Likewise. - (gimple_omp_target_set_data_arg): Likewise. - (gimple_omp_target_data_arg_ptr): Likewise. - (gimple_omp_target_data_arg): Likewise. - (gimple_omp_target_set_child_fn): Likewise. - (gimple_omp_target_child_fn_ptr): Likewise. - (gimple_omp_target_child_fn): Likewise. - (gimple_omp_target_set_clauses): Likewise. - (gimple_omp_target_clauses_ptr): Likewise. - (gimple_omp_target_clauses): Likewise. - (gimple_omp_single_set_clauses): Likewise. - (gimple_omp_single_clauses_ptr): Likewise. - (gimple_omp_single_clauses): Likewise. - (gimple_omp_task_set_arg_align): Likewise. - (gimple_omp_task_arg_align_ptr): Likewise. - (gimple_omp_task_arg_align): Likewise. - (gimple_omp_task_set_arg_size): Likewise. - (gimple_omp_task_arg_size_ptr): Likewise. - (gimple_omp_task_arg_size): Likewise. - (gimple_omp_task_set_copy_fn): Likewise. - (gimple_omp_task_copy_fn_ptr): Likewise. - (gimple_omp_task_copy_fn): Likewise. - (gimple_omp_task_set_data_arg): Likewise. - (gimple_omp_task_data_arg_ptr): Likewise. - (gimple_omp_task_data_arg): Likewise. - (gimple_omp_task_set_child_fn): Likewise. - (gimple_omp_task_child_fn_ptr): Likewise. - (gimple_omp_task_child_fn): Likewise. - (gimple_omp_task_set_clauses): Likewise. - (gimple_omp_task_clauses_ptr): Likewise. - (gimple_omp_task_clauses): Likewise. - (gimple_omp_parallel_set_data_arg): Likewise. - (gimple_omp_parallel_data_arg_ptr): Likewise. - (gimple_omp_parallel_data_arg): Likewise. - (gimple_omp_parallel_set_child_fn): Likewise. - (gimple_omp_parallel_child_fn_ptr): Likewise. - (gimple_omp_parallel_child_fn): Likewise. - (gimple_omp_parallel_set_clauses): Likewise. - (gimple_omp_parallel_clauses_ptr): Likewise. - (gimple_omp_parallel_clauses): Likewise. - (gimple_omp_for_set_pre_body): Likewise. - (gimple_omp_for_pre_body_ptr): Likewise. - (gimple_omp_for_set_incr): Likewise. - (gimple_omp_for_incr_ptr): Likewise. - (gimple_omp_for_incr): Likewise. - (gimple_omp_for_set_final): Likewise. - (gimple_omp_for_final_ptr): Likewise. - (gimple_omp_for_final): Likewise. - (gimple_omp_for_set_initial): Likewise. - (gimple_omp_for_initial_ptr): Likewise. - (gimple_omp_for_initial): Likewise. - (gimple_omp_for_set_index): Likewise. - (gimple_omp_for_index_ptr): Likewise. - (gimple_omp_for_index): Likewise. - (gimple_omp_for_collapse): Likewise. - (gimple_omp_for_set_clauses): Likewise. - (gimple_omp_for_clauses_ptr): Likewise. - (gimple_omp_for_clauses): Likewise. - (gimple_omp_critical_set_name): Likewise. - (gimple_omp_critical_name_ptr): Likewise. - (gimple_omp_critical_name): Likewise. - (gimple_eh_dispatch_set_region): Likewise. - (gimple_eh_dispatch_region): Likewise. - (gimple_resx_set_region): Likewise. - (gimple_resx_region): Likewise. - (gimple_phi_set_arg): Likewise. - (gimple_phi_arg): Likewise. - (gimple_phi_set_result): Likewise. - (gimple_phi_result_ptr): Likewise. - (gimple_phi_result): Likewise. - (gimple_phi_num_args): Likewise. - (gimple_phi_capacity): Likewise. - (gimple_wce_set_cleanup): Likewise. - (gimple_wce_cleanup_ptr): Likewise. - (gimple_try_set_cleanup): Likewise. - (gimple_try_set_eval): Likewise. - (gimple_try_cleanup_ptr): Likewise. - (gimple_try_eval_ptr): Likewise. - (gimple_eh_else_set_e_body): Likewise. - (gimple_eh_else_set_n_body): Likewise. - (gimple_eh_else_e_body_ptr): Likewise. - (gimple_eh_else_n_body_ptr): Likewise. - (gimple_eh_must_not_throw_set_fndecl): Likewise. - (gimple_eh_must_not_throw_fndecl): Likewise. - (gimple_eh_filter_set_failure): Likewise. - (gimple_eh_filter_set_types): Likewise. - (gimple_eh_filter_failure_ptr): Likewise. - (gimple_eh_filter_types_ptr): Likewise. - (gimple_eh_filter_types): Likewise. - (gimple_catch_set_handler): Likewise. - (gimple_catch_set_types): Likewise. - (gimple_catch_handler_ptr): Likewise. - (gimple_catch_types_ptr): Likewise. - (gimple_catch_types): Likewise. - (gimple_asm_string): Likewise. - (gimple_asm_set_label_op): Likewise. - (gimple_asm_label_op): Likewise. - (gimple_asm_set_clobber_op): Likewise. - (gimple_asm_clobber_op): Likewise. - (gimple_asm_set_output_op): Likewise. - (gimple_asm_output_op_ptr): Likewise. - (gimple_asm_output_op): Likewise. - (gimple_asm_set_input_op): Likewise. - (gimple_asm_input_op_ptr): Likewise. - (gimple_asm_input_op): Likewise. - (gimple_asm_nlabels): Likewise. - (gimple_asm_nclobbers): Likewise. - (gimple_asm_noutputs): Likewise. - (gimple_asm_ninputs): Likewise. - (gimple_bind_set_block): Likewise. - (gimple_bind_block): Likewise. - (gimple_bind_add_seq): Likewise. - (gimple_bind_add_stmt): Likewise. - (gimple_bind_set_body): Likewise. - (gimple_bind_body_ptr): Likewise. - (gimple_bind_append_vars): Likewise. - (gimple_bind_set_vars): Likewise. - (gimple_bind_vars): Likewise. - (gimple_call_clobber_set): Likewise. - (gimple_call_use_set): Likewise. - (gimple_call_set_internal_fn): Likewise. - (gimple_call_set_fntype): Likewise. - (gimple_call_fntype): Likewise. - (gimple_omp_return_lhs_ptr): Likewise. - (gimple_omp_return_lhs): Likewise. - (gimple_omp_return_set_lhs): Likewise. - (gimple_omp_taskreg_set_data_arg): Likewise. - (gimple_omp_taskreg_data_arg_ptr): Likewise. - (gimple_omp_taskreg_data_arg): Likewise. - (gimple_omp_taskreg_set_child_fn): Likewise. - (gimple_omp_taskreg_child_fn_ptr): Likewise. - (gimple_omp_taskreg_child_fn): Likewise. - (gimple_omp_taskreg_set_clauses): Likewise. - (gimple_omp_taskreg_clauses_ptr): Likewise. - (gimple_omp_taskreg_clauses): Likewise. - (gimple_vuse): Likewise. - (gimple_vdef): Likewise. - (gimple_vuse_ptr): Likewise. - (gimple_vdef_ptr): Likewise. - * tree-inline.c (copy_debug_stmt): Likewise. - * tree-phinodes.c (make_phi_node): Likewise. - - * gimple.h (is_a_helper ::test): New. - (is_a_helper ::test): New. - (is_a_helper ::test): New. - (is_a_helper ::test): New. - - * gimple-streamer-in.c (input_gimple_stmt): Port from union - access to use of as_a. - * gimple.c (gimple_build_asm_1): Likewise. - (gimple_build_try): Likewise. Also, return a specific subclass - rather than just gimple. - (gimple_build_resx): Port from union access to use of as_a. - (gimple_build_eh_dispatch): Likewise. - (gimple_build_omp_for): Likewise. Also, convert allocation of iter - now that gengtype no longer provides a typed allocator function. - (gimple_copy): Likewise. - * gimple.h (gimple_build_try): Return a specific subclass rather - than just gimple. - * gimplify.c (gimplify_cleanup_point_expr): Replace union access - with subclass access by making use of new return type of - gimple_build_try. - * tree-phinodes.c: (allocate_phi_node): Return a - "gimple_statement_phi *" rather than just a gimple. - (resize_phi_node): Likewise. - (make_phi_node): Replace union access with subclass access by - making use of new return type of allocate_phi_node. - (reserve_phi_args_for_new_edge): Replace union access with as_a. - (remove_phi_arg_num): Accept a "gimple_statement_phi *" rather - than just a gimple. - (remove_phi_args): Update for change to remove_phi_arg_num. - - * gdbhooks.py (GimplePrinter.to_string): Update lookup of - code field to reflect inheritance, rather than embedding of - the base gimple type. - -2013-11-19 Richard Biener - - * cfgloop.h (struct loop_iterator): C++-ify, add constructor - and destructor and make fel_next a member function. - (fel_next): Transform into ... - (loop_iterator::next): ... this. - (fel_init): Transform into ... - (loop_iterator::loop_iterator): ... this. - (loop_iterator::~loop_iterator): New. - (FOR_EACH_LOOP): Remove loop-iterator argument. - (FOR_EACH_LOOP_BREAK): Remove no longer necessary macro. - * cfgloop.c, cfgloopmanip.c, config/mn10300/mn10300.c, - graphite-clast-to-gimple.c, graphite-scop-detection.c, - graphite-sese-to-poly.c, ipa-inline-analysis.c, ipa-pure-const.c, - loop-init.c, loop-invariant.c, loop-unroll.c, loop-unswitch.c, - modulo-sched.c, predict.c, sel-sched-ir.c, tree-cfg.c, tree-data-ref.c, - tree-if-conv.c, tree-loop-distribution.c, tree-parloops.c, - tree-predcom.c, tree-scalar-evolution.c, tree-ssa-dce.c, - tree-ssa-loop-ch.c, tree-ssa-loop-im.c, tree-ssa-loop-ivcanon.c, - tree-ssa-loop-ivopts.c, tree-ssa-loop-manip.c, tree-ssa-loop-niter.c, - tree-ssa-loop-prefetch.c, tree-ssa-loop-unswitch.c, - tree-ssa-threadupdate.c, tree-vectorizer.c, tree-vrp.c: Adjust - uses of FOR_EACH_LOOP and remove loop_iterator variables. Replace - FOR_EACH_LOOP_BREAK with break. - -2013-11-19 Richard Biener - - PR tree-optimization/59164 - * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): - Uncomment assert. - * tree-vect-loop.c (vect_analyze_loop_operations): Adjust check - whether we can create an epilogue loop to reflect thecases where - we create one. - -2013-11-19 Andrew MacLeod - - * graphite-sese-to-poly.c: Include expr.h. - -2013-11-19 Richard Biener - - PR middle-end/58956 - * tree-ssa-ter.c (find_replaceable_in_bb): Avoid forwarding - loads into stmts that may clobber it. - -2013-11-19 Bernd Schmidt - - * cgraphunit.c (symtab_terminator): New variable. - (queued_nodes): Renamed from first. Use symtab_terminator as - initializer. - (analyze_functions): Adjust accordingly. - (cgraph_process_new_functions): Return void. - * cgraph.h (cgraph_process_new_functions): Adjust declaration. - -2013-11-19 Marek Polacek - - * opts.c (common_handle_option): Add -fsanitize=null option. - Turn off -fdelete-null-pointer-checks option when doing the - NULL pointer checking. - * sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH): Add. - * tree-pass.h (make_pass_ubsan): Declare. - (make_pass_sanopt): Declare. - * timevar.def (TV_TREE_UBSAN): New timevar. - * passes.def: Add pass_sanopt and pass_ubsan. - * ubsan.h (ubsan_null_ckind): New enum. - (ubsan_mismatch_data): New struct. - (ubsan_expand_null_ifn): Declare. - (ubsan_create_data): Adjust declaration. - (ubsan_type_descriptor): Likewise. - * asan.c: Include "ubsan.h". - (pass_data_sanopt): New pass. - (execute_sanopt): New function. - (gate_sanopt): Likewise. - (make_pass_sanopt): Likewise. - (class pass_sanopt): New class. - * ubsan.c: Include tree-pass.h, gimple-ssa.h, gimple-walk.h, - gimple-iterator.h and cfgloop.h. - (PROB_VERY_UNLIKELY): Define. - (tree_type_map_hash): New function. - (ubsan_type_descriptor): Add new parameter. - Improve type name generation. - (ubsan_create_data): Add new parameter. Add pointer data into - ubsan structure. - (ubsan_expand_null_ifn): New function. - (instrument_member_call): Likewise. - (instrument_mem_ref): Likewise. - (instrument_null): Likewise. - (ubsan_pass): Likewise. - (gate_ubsan): Likewise. - (make_pass_ubsan): Likewise. - (ubsan_instrument_unreachable): Adjust ubsan_create_data call. - (class pass_ubsan): New class. - (pass_data_ubsan): New pass. - * flag-types.h (enum sanitize_code): Add SANITIZE_NULL. - * internal-fn.c (expand_UBSAN_NULL): New function. - * cgraphunit.c (varpool_finalize_decl): Call varpool_assemble_decl - even when !flag_toplevel_reorder. - * internal-fn.def (UBSAN_NULL): New. - -2013-11-19 Jan Hubicka - - * cgraph.c (cgraph_create_indirect_edge): Use - get_polymorphic_call_info. - * cgraph.h (cgraph_indirect_call_info): Add outer_type, - maybe_in_construction and maybe_derived_type. - * ipa-utils.h (ipa_polymorphic_call_context): New structure. - (ipa_dummy_polymorphic_call_context): New global var. - (possible_polymorphic_call_targets): Add context paramter. - (dump_possible_polymorphic_call_targets): Likewise; update wrappers. - (possible_polymorphic_call_target_p): Likewise. - (get_polymorphic_call_info): New function. - * ipa-devirt.c (ipa_dummy_polymorphic_call_context): New function. - (add_type_duplicate): Remove forgotten debug output. - (method_class_type): Add sanity check. - (maybe_record_node): Add FINALP parameter. - (record_binfo): Add OUTER_TYPE and OFFSET; walk the inner - by info by get_binfo_at_offset. - (possible_polymorphic_call_targets_1): Add OUTER_TYPE/OFFSET - parameters; pass them to record-binfo. - (polymorphic_call_target_d): Add context and FINAL. - (polymorphic_call_target_hasher::hash): Hash context. - (polymorphic_call_target_hasher::equal): Compare context. - (free_polymorphic_call_targets_hash): - (get_class_context): New function. - (contains_type_p): New function. - (get_polymorphic_call_info): New function. - (walk_bases): New function. - (possible_polymorphic_call_targets): Add context parameter; honnor it. - (dump_possible_polymorphic_call_targets): Dump context. - (possible_polymorphic_call_target_p): Add context. - (update_type_inheritance_graph): Update comment.s - (ipa_set_jf_known_type): Assert that compoentn type is known. - (ipa_note_param_call): Do not tamper with offsets. - (ipa_analyze_indirect_call_uses): When offset is being changed; clear - outer type. - (update_indirect_edges_after_inlining): Likewise. - (ipa_write_indirect_edge_info): Stream new fields. - (ipa_read_indirect_edge_info): Stream in new fields. - -2013-11-19 Jan Hubicka - - * tree-pretty-print.c (dump_generic_node): Print class type of - OBJ_TYPE_REF. - -2013-11-19 Joey Ye - - * config/arm/arm.opt (-marm-pic-data-is-text-relative): New option. - * doc/invoke.texi (-marm-pic-data-is-text-relative): Documentation - for new option. - * config/arm/arm.c (arm_option_override): By default disable - -marm-pic-data-is-text-relative. - (legitimize_pic_address): Use arm_pic_data_is_text_relative. - (arm_assemble_integer): Likewise. - * config/arm/arm.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE): - New macro to initialize -marm-pic-data-is-text-relative. - -2013-11-19 Bin Cheng - - * tree-ssa-loop-ivopts.c (enum ainc_type): New. - (address_cost_data): New field. - (get_address_cost): Compute auto-increment rtx cost in ainc_costs. - Use ainc_costs for auto-increment rtx patterns. Cleanup TWS. - -2013-11-19 James Greenhalgh - - * config/aarch64/aarch64.md: Remove v8type from all insns. - -2013-11-19 Richard Biener - - PR tree-optimization/57517 - * tree-predcom.c (combinable_refs_p): Verify the combination - is always executed when the refs are. - -2013-11-19 Jeff Law - - * tree-ssa-threadupdate.c: Include ssa-iterators.h - (copy_phi_arg_into_existing_phi): New function. - (any_remaining_duplicated_blocks): Likewise. - (ssa_fix_duplicate_block_edges): Handle multiple duplicated - blocks on a jump threading path. - - * tree-ssa-threadupdate.c (thread_through_loop_header): Do not - thread through a joiner which has the latch edge. - -2013-11-19 Jan Hubicka - - * md.texi (setmem): Document new parameter. - * optabs.c (maybe_gen_insn): Support 9 operands. - * builtins.c (determine_block_size): Add probable_max_size; - support anti-ranges. - (expand_builtin_memcpy. expand_builtin_memset_args): Pass around - probable_max_size. - * expr.c (emit_block_move_via_movmem, emit_block_move_hints, - emit_block_move, clear_storage_hints, set_storage_via_setmem): - Likewise. - * expr.h (emit_block_move_hints, clear_storage_hints, - set_storage_via_setmem): Update prototype. - * i386.md (setmem, movmem patterns): Add 9th operand. - * i386-protos.h (ix86_expand_set_or_movmem): Update prototype. - * i386.c (ix86_expand_set_or_movmem): Take probable_max_size_exp - argument; pass it to decide_alg. - -2013-11-19 David Malcolm - - * basic-block.h (n_basic_blocks_for_function): Rename macro to... - (n_basic_blocks_for_fn): ...this. - - (n_basic_blocks): Eliminate macro as work towards making uses of - cfun be explicit. - - * cfgloop.c (init_loops_structure): Update for renaming of - "n_basic_blocks_for_function" to "n_basic_blocks_for_fn". - * graph.c (draw_cfg_nodes_no_loops): Likewise. - * ipa-utils.c (ipa_merge_profiles): Likewise. - * lto-streamer-in.c (make_new_block): Likewise. - * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. - (dump_function_to_file): Likewise. - - * alias.c (init_alias_analysis): Replace usage of "n_basic_blocks" - macro with "n_basic_blocks_for_fn (cfun)". - * bb-reorder.c (partition_hot_cold_basic_blocks): Likewise. - (duplicate_computed_gotos): Likewise. - (reorder_basic_blocks): Likewise. - * bt-load.c (augment_live_range): Likewise. - * cfg.c (expunge_block): Likewise. - (compact_blocks): Likewise. - * cfganal.c (single_pred_before_succ_order): Likewise. - (compute_idf): Likewise. - (flow_dfs_compute_reverse_init): Likewise. - (pre_and_rev_post_order_compute): Likewise. - (pre_and_rev_post_order_compute_fn): Likewise. - (inverted_post_order_compute): Likewise. - (post_order_compute): Likewise. - (print_edge_list): Likewise. - (find_unreachable_blocks): Likewise. - (mark_dfs_back_edges): Likewise. - * cfgcleanup.c (try_optimize_cfg): Likewise. - (try_forward_edges): Likewise. - * cfghooks.c (dump_flow_info): Likewise. - * cfgloop.c (verify_loop_structure): Likewise. - (get_loop_body): Likewise. - (flow_loops_find): Likewise. - * cfgloopmanip.c (add_loop): Likewise. - (remove_path): Likewise. - (find_path): Likewise. - * cfgrtl.c (rtl_flow_call_edges_add): Likewise. - (rtl_verify_bb_layout): Likewise. - (entry_of_function): Likewise. - (rtl_create_basic_block): Likewise. - * coverage.c (coverage_compute_cfg_checksum): Likewise. - * cprop.c (one_cprop_pass): Likewise. - (is_too_expensive): Likewise. - * df-core.c (df_compute_cfg_image): Likewise. - (df_compact_blocks): Likewise. - (df_worklist_dataflow_doublequeue): Likewise. - * dominance.c (calculate_dominance_info): Likewise. - (calc_dfs_tree): Likewise. - (calc_dfs_tree_nonrec): Likewise. - (init_dom_info): Likewise. - * domwalk.c (cmp_bb_postorder): Likewise. - * function.c (thread_prologue_and_epilogue_insns): Likewise. - (generate_setjmp_warnings): Likewise. - * fwprop.c (build_single_def_use_links): Likewise. - * gcse.c (is_too_expensive): Likewise. - (one_code_hoisting_pass): Likewise. - (one_pre_gcse_pass): Likewise. - * graphite.c (graphite_initialize): Likewise. - * haifa-sched.c (haifa_sched_init): Likewise. - * ipa-inline-analysis.c (estimate_function_body_sizes): Likewise. - * ira.c (split_live_ranges_for_shrink_wrap): Likewise. - * ira-build.c (ira_build): Likewise. - * lcm.c (compute_nearerout): Likewise. - (compute_available): Likewise. - (compute_laterin): Likewise. - (compute_antinout_edge): Likewise. - * lra-lives.c (lra_create_live_ranges): Likewise. - * lra.c (has_nonexceptional_receiver): Likewise. - * mcf.c (create_fixup_graph): Likewise. - * profile.c (branch_prob): Likewise. - * reg-stack.c (convert_regs_2): Likewise. - * regrename.c (regrename_analyze): Likewise. - * reload1.c (has_nonexceptional_receiver): Likewise. - * reorg.c (dbr_schedule): Likewise. - * sched-deps.c (sched_deps_init): Likewise. - * sched-ebb.c (schedule_ebbs): Likewise. - * sched-rgn.c (extend_regions): Likewise. - (schedule_insns): Likewise. - (sched_rgn_init): Likewise. - (extend_rgns): Likewise. - (haifa_find_rgns): Likewise. - * sel-sched-ir.c (recompute_rev_top_order): Likewise. - (sel_recompute_toporder): Likewise. - * sel-sched.c (run_selective_scheduling): Likewise. - * store-motion.c (one_store_motion_pass): Likewise. - (remove_reachable_equiv_notes): Likewise. - * tracer.c (tracer): Likewise. - (tail_duplicate): Likewise. - * tree-cfg.c (gimple_flow_call_edges_add): Likewise. - (dump_cfg_stats): Likewise. - (gimple_dump_cfg): Likewise. - (create_bb): Likewise. - (build_gimple_cfg): Likewise. - * tree-cfgcleanup.c (merge_phi_nodes): Likewise. - * tree-inline.c (optimize_inline_calls): Likewise. - (fold_marked_statements): Likewise. - * tree-ssa-ifcombine.c (tree_ssa_ifcombine): Likewise. - * tree-ssa-loop-ch.c (copy_loop_headers): Likewise. - * tree-ssa-loop-im.c (analyze_memory_references): Likewise. - * tree-ssa-loop-manip.c (compute_live_loop_exits): Likewise. - * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise. - * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Likewise. - * tree-ssa-pre.c (do_pre): Likewise. - (init_pre): Likewise. - (compute_avail): Likewise. - * tree-ssa-reassoc.c (init_reassoc): Likewise. - * tree-ssa-sccvn.c (init_scc_vn): Likewise. - * tree-ssa-tail-merge.c (alloc_cluster_vectors): Likewise. - (init_worklist): Likewise. - * tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise. - * var-tracking.c (variable_tracking_main_1): Likewise. - (vt_find_locations): Likewise. - (vt_stack_adjustments): Likewise. - * config/s390/s390.c (s390_optimize_nonescaping_tx): Likewise. - * config/spu/spu.c (spu_machine_dependent_reorg): Likewise. - -2013-11-18 Jan Hubicka - - * profile.c (compute_branch_probabilities): Do not sanity check - run_max. - -2013-11-18 Kenneth Zadeck - - * tree.c (int_fits_type_p): Change GET_MODE_BITSIZE to - GET_MODE_PRECISION. - * fold-const.c (fold_single_bit_test_into_sign_test) - (fold_binary_loc): Change GET_MODE_BITSIZE to GET_MODE_PRECISION. - -2013-11-18 Teresa Johnson - - * cfgrtl.c (cfg_layout_initialize): Assert if we try to go into - cfglayout after bb reordering. - * passes.def: Move compgotos before bb reordering since it goes into - cfglayout. - -2013-11-18 Bernd Schmidt - - * cgraphunit.c (ipa_passes): Don't execute all_lto_gen_passes. - * lto-streamer-out.c (lto_output, produce_asm_for_decls): No longer - static. - (pass_data_ipa_lto_gimple_out, pass_ipa_lto_gimple_out, - make_pass_ipa_lto_gimple_out, pass_data_ipa_lto_finish_out, - pass_ipa_lto_finish_out, make_pass_ipa_lto_finish_out): Remove. - * lto-streamer.h (lto_output, produce_asm_for_decls): Declare. - * pass-manager.h (GCC_PASS_LISTS, class pass_manager): - Remove all_lto_gen_passes. - * passes.c (pass_manager::dump_passes): Remove its use. - (pass_manager::register_pass): Likewise. - (ipa_read_summaries, ipa_read_optimization_summaries): Likewise. - (pass_manager::pass_manager): Don't initialize or use it. - (write_lto): New static function. - (ipa_write_summaries_1, ipa_write_optimization_summaries): Use it - instead of using all_lto_gen_passes. - * passes.def (all_lto_gen_passes, pass_ipa_lto_gimple_out, - pass_ipa_lto_finish_out): Delete. - * tree-pass.h (make_pass_ipa_lto_gimple_out, - make_pass_ipa_lto_finish_out): Don't declare. - -2013-11-18 Jeff Law - - * tree-ssa-threadupdate.c (redirection_data): Record two - duplicated blocks instead of just one. - (local_info): Explain why we don't create a template for the - second duplicated block in a thread path. - (create_block_for_threading): Accept argument indicating array - index into redirection_data to store its result. - (lookup_redirection_data): Initialize both duplicate blocks. - (ssa_create_duplicates): If a jump threading path needs multiple - blocks duplicated, then duplicate them. - (ssa_fix_duplicate_block_edges): Corresponding changes. - (ssa_fixup_template_block, thread_single_edge): Likewise. - -2013-11-18 Marek Polacek - - * doc/invoke.texi: Extend -fsanitize=undefined documentation. - -2013-11-18 Andrew Pinski - Steve Ellcey - - PR target/56552 - * config/mips/mips.md (*mov_on_): Remove - type restriction from equality_operator on conditonal move. - (*mov_on_): Ditto. - (*mov_on__ne): New. - -2013-11-18 Jeff Law - - * tree-ssa-threadupdate.c: Fix file block comment. - Fix minor indention issue. - -2013-11-18 Uros Bizjak - - * config/i386/i386.c (ix86_decompose_address): Use REG_P instead of - ix86_address_subreg_operand. Move subreg checks to - ix86_validate_address_register. Move address override check to - ix86_legitimate_address_p. - (ix86_validate_address_register): New function. - (ix86_legitimate_address_p): Call ix86_validate_address_register - to validate base and index registers. Add address override check - from ix86_decompose_address. - (ix86_decompose_address): Remove. - -2013-11-18 Richard Biener - - PR tree-optimization/59125 - PR tree-optimization/54570 - * tree-ssa-sccvn.c (copy_reference_ops_from_ref): When inlining - is not complete do not treat component-references with offset zero - but different fields as equal. - * tree-object-size.c: Include tree-phinodes.h and ssa-iterators.h. - (compute_object_sizes): Apply TLC. Propagate the constant - results into all uses and fold their stmts. - * passes.def (pass_all_optimizations): Move pass_object_sizes - after the first pass_forwprop and before pass_fre. - -2013-11-18 Richard Sandiford - - * tree.h (tree_to_uhwi): Return an unsigned HOST_WIDE_INT. - * tree.c (tree_to_uhwi): Return an unsigned HOST_WIDE_INT. - (tree_ctz): Remove cast to unsigned type. - * builtins.c (fold_builtin_memory_op): Likewise. - * dwarf2out.c (descr_info_loc): Likewise. - * godump.c (go_output_typedef): Likewise. - * omp-low.c (expand_omp_simd): Likewise. - * stor-layout.c (excess_unit_span): Likewise. - * tree-object-size.c (addr_object_size): Likewise. - * tree-sra.c (analyze_all_variable_accesses): Likewise. - * tree-ssa-forwprop.c (simplify_builtin_call): Likewise. - (simplify_rotate): Likewise. - * tree-ssa-strlen.c (adjust_last_stmt, handle_builtin_memcpy) - (handle_pointer_plus): Likewise. - * tree-switch-conversion.c (check_range): Likewise. - * tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise. - * tsan.c (instrument_builtin_call): Likewise. - * cfgexpand.c (defer_stack_allocation): Add cast to HOST_WIDE_INT. - * trans-mem.c (tm_log_add): Likewise. - * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise. - * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise. - * config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise. - * config/mips/mips.c (r10k_safe_mem_expr_p): Make offset unsigned. - -2013-11-18 Richard Sandiford - - * tree.h (host_integerp, tree_low_cst): Delete. - * tree.c (host_integerp, tree_low_cst): Delete. - -2013-11-18 Richard Sandiford - - * expr.h: Update comments to refer to tree_to_[su]hwi rather - than tree_low_cst. - * fold-const.c (fold_binary_loc): Likewise. - * expr.c (store_constructor): Use tree_to_uhwi rather than - tree_low_cst. - * ipa-utils.h (possible_polymorphic_call_target_p): Likewise. - * stmt.c (emit_case_dispatch_table): Likewise. - * tree-switch-conversion.c (emit_case_bit_tests): Likewise. - -2013-11-18 Richard Sandiford - - * alias.c, asan.c, builtins.c, cfgexpand.c, cgraph.c, - config/aarch64/aarch64.c, config/alpha/predicates.md, - config/arm/arm.c, config/darwin.c, config/epiphany/epiphany.c, - config/i386/i386.c, config/iq2000/iq2000.c, config/m32c/m32c-pragma.c, - config/mep/mep-pragma.c, config/mips/mips.c, - config/picochip/picochip.c, config/rs6000/rs6000.c, cppbuiltin.c, - dbxout.c, dwarf2out.c, emit-rtl.c, except.c, expr.c, fold-const.c, - function.c, gimple-fold.c, godump.c, ipa-cp.c, ipa-prop.c, omp-low.c, - predict.c, sdbout.c, stor-layout.c, trans-mem.c, tree-object-size.c, - tree-sra.c, tree-ssa-ccp.c, tree-ssa-forwprop.c, - tree-ssa-loop-ivcanon.c, tree-ssa-loop-ivopts.c, tree-ssa-loop-niter.c, - tree-ssa-loop-prefetch.c, tree-ssa-strlen.c, tree-stdarg.c, - tree-switch-conversion.c, tree-vect-generic.c, tree-vect-loop.c, - tree-vect-patterns.c, tree-vrp.c, tree.c, tsan.c, ubsan.c, varasm.c: - Replace tree_low_cst (..., 1) with tree_to_uhwi throughout. - -2013-11-18 Richard Sandiford - - * builtins.c, cilk-common.c, config/aarch64/aarch64.c, - config/alpha/alpha.c, config/arm/arm.c, config/c6x/predicates.md, - config/i386/i386.c, config/ia64/predicates.md, config/s390/s390.c, - coverage.c, dbxout.c, dwarf2out.c, except.c, explow.c, expr.c, expr.h, - fold-const.c, gimple-fold.c, godump.c, ipa-prop.c, omp-low.c, - predict.c, rtlanal.c, sdbout.c, stmt.c, stor-layout.c, targhooks.c, - tree-cfg.c, tree-data-ref.c, tree-inline.c, tree-ssa-forwprop.c, - tree-ssa-loop-prefetch.c, tree-ssa-phiopt.c, tree-ssa-sccvn.c, - tree-ssa-strlen.c, tree-stdarg.c, tree-vect-data-refs.c, - tree-vect-patterns.c, tree.c, tree.h, var-tracking.c, varasm.c: - Replace tree_low_cst (..., 0) with tree_to_shwi throughout. - -2013-11-18 Richard Sandiford - - * tree.h (tree_to_shwi, tree_to_uhwi): Declare, with inline expansions. - * tree.c (tree_to_shwi, tree_to_uhwi): New functions. - -2013-11-18 Richard Sandiford - - * expr.h: Update comments to refer to tree_fits_[su]hwi_p rather - than host_integerp. - -2013-11-18 Richard Sandiford - - * builtins.c, config/alpha/alpha.c, config/iq2000/iq2000.c, - config/mips/mips.c, dbxout.c, dwarf2out.c, expr.c, fold-const.c, - gimple-fold.c, godump.c, omp-low.c, predict.c, sdbout.c, stor-layout.c, - tree-dfa.c, tree-sra.c, tree-ssa-forwprop.c, tree-ssa-loop-prefetch.c, - tree-ssa-phiopt.c, tree-ssa-sccvn.c, tree-ssa-strlen.c, - tree-ssa-structalias.c, tree-vect-data-refs.c, tree-vect-patterns.c, - tree.c, varasm.c, alias.c, cfgexpand.c, config/aarch64/aarch64.c, - config/arm/arm.c, config/epiphany/epiphany.c, config/i386/i386.c, - config/m32c/m32c-pragma.c, config/mep/mep-pragma.c, - config/rs6000/rs6000.c, config/sparc/sparc.c, emit-rtl.c, function.c, - gimplify.c, ipa-prop.c, stmt.c, trans-mem.c, tree-cfg.c, - tree-object-size.c, tree-ssa-ccp.c, tree-ssa-loop-ivcanon.c, - tree-stdarg.c, tree-switch-conversion.c, tree-vect-generic.c, - tree-vrp.c, tsan.c, ubsan.c: Replace host_integerp (..., 1) with - tree_fits_uhwi_p throughout. - -2013-11-18 Richard Sandiford - - * builtins.c, config/alpha/alpha.c, config/c6x/predicates.md, - config/ia64/predicates.md, config/iq2000/iq2000.c, config/mips/mips.c, - config/s390/s390.c, dbxout.c, dwarf2out.c, except.c, explow.c, expr.c, - expr.h, fold-const.c, gimple-fold.c, gimple-ssa-strength-reduction.c, - gimple.c, godump.c, graphite-scop-detection.c, graphite-sese-to-poly.c, - omp-low.c, predict.c, rtlanal.c, sdbout.c, simplify-rtx.c, - stor-layout.c, tree-data-ref.c, tree-dfa.c, tree-pretty-print.c, - tree-sra.c, tree-ssa-alias.c, tree-ssa-forwprop.c, - tree-ssa-loop-ivopts.c, tree-ssa-loop-prefetch.c, tree-ssa-math-opts.c, - tree-ssa-phiopt.c, tree-ssa-reassoc.c, tree-ssa-sccvn.c, - tree-ssa-strlen.c, tree-ssa-structalias.c, tree-vect-data-refs.c, - tree-vect-patterns.c, tree-vectorizer.h, tree.c, var-tracking.c, - varasm.c: Replace host_integerp (..., 0) with tree_fits_shwi_p - throughout. - -2013-11-18 Richard Sandiford - - * tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Declare. - * tree.c (tree_fits_shwi_p, tree_fits_uhwi_p): Define. - -2013-11-18 Kirill Yukhin - - * config/ia64/ia64.c (ia64_split_tmode_move): Mark load with `dead' - flag if it kills its address, not its post-increment. - -2013-11-18 Ilya Enkovich - - * builtin-types.def (BT_FN_PTR_CONST_PTR_VAR): New. - * chkp-builtins.def (BUILT_IN_CHKP_BIND_BOUNDS): New. - * cfgexpand.c (expand_call_stmt): Expand BUILT_IN_CHKP_BIND_BOUNDS. - * gimple.c (gimple_call_get_nobnd_arg_index): Remove. - * gimple.h (gf_mask): Add GF_CALL_WITH_BOUNDS. - (gimple_call_with_bounds_p): New. - (gimple_call_set_with_bounds): New. - (gimple_call_num_nobnd_args): Remove. - (gimple_call_nobnd_arg): Remove. - * tree.h (CALL_WITH_BOUNDS_P): New. - * rtl.h (CALL_EXPR_WITH_BOUNDS_P): New. - -2013-11-18 Trevor Saunders - - * cgraph.h (symtab_node_asm_name): Rename to symtab_node::asm_name. - (symtab_node_name): Rename to symtab_node::name. - (cgraph_node_asm_name): Remove. - (varpool_node_asm_name): Remove. - * cgraph.c cgraphclones.c cgraphunit.c ipa-cp.c ipa-devirt.c - ipa-inline-analysis.c ipa-inline-transform.c ipa-inline.c - ipa-profile.c ipa-prop.c ipa-pure-const.c ipa-ref.c ipa-reference.c - ipa-utils.c ipa.c symtab.c tree-inline.c tree-sra.c - tree-ssa-structalias.c value-prof.c varpool.c Adjust. - -2013-11-18 Kyrylo Tkachov - - * config/arm/aarch-cost-tables.h (cortexa53_extra_costs): New table. - * config/arm/arm.c (arm_cortex_a53_tune): New. - * config/arm/arm-cores.def (cortex-a53): Use cortex_a53 tuning struct. - -2013-11-12 Ganesh Gopalasubramanian - - * config.gcc (i[34567]86-*-linux* | ...): Add bdver4. - (case ${target}): Add bdver4. - * config/i386/bdver3.md: Add bdver4. - * config/i386/driver-i386.c: (host_detect_local_cpu): Let - -march=native recognize bdver4 processors. - * config/i386/i386-c.c (ix86_target_macros_internal): Add - bdver4 def_and_undef - * config/i386/i386.c (struct processor_costs bdver4_cost): New. - (m_BDVER4): New definition. - (m_AMD_MULTIPLE): Includes m_BDVER4. - (processor_target_table): Add bdver4 entry. - (static const char *const cpu_names): Add bdver4 entry. - (software_prefetching_beneficial_p): Add bdver3. - (ix86_option_override_internal): Add bdver4 instruction sets. - (ix86_issue_rate): Add bdver4. - (ix86_adjust_cost): Add bdver4. - (ia32_multipass_dfa_lookahead): Add bdver4. - (enum processor_model): Add M_AMDFAM15H_BDVER4. - (struct _arch_names_table): Add M_AMDFAM15H_BDVER4. - (has_dispatch): Add bdver4. - * config/i386/i386.h (TARGET_BDVER4): New definition. - (enum target_cpu_default): Add TARGET_CPU_DEFAULT_bdver4. - (enum processor_type): Add PROCESSOR_BDVER4. - * config/i386/i386.md (define_attr "cpu"): Add bdver4. - * config/i386/i386.opt (flag_dispatch_scheduler): Add bdver4. - * doc/extend.texi: Add details about bdver4. - * doc/invoke.texi: Add details about bdver4. Add - fma4 and fsgsbase for bdver3. Add fma4 for bdver2. - -2013-11-17 Ulrich Weigand - - * config/rs6000/rs6000.c (rs6000_emit_move): Use low word of - sdmode_stack_slot also in little-endian mode. - -2013-11-17 Jan Hubicka - - * doc/md.texi (setmem, movstr): Update documentation. - * builtins.c (determine_block_size): New function. - (expand_builtin_memcpy): Use it and pass it to emit_block_move_hints. - (expand_builtin_memset_args): Use it and pass it to - set_storage_via_setmem. - * expr.c (emit_block_move_via_movmem): Add min_size/max_size - parameters; update call to expander. - (emit_block_move_hints): Add min_size/max_size parameters. - (clear_storage_hints): Likewise. - (set_storage_via_setmem): Likewise. - (clear_storage): Update. - * expr.h (emit_block_move_hints, clear_storage_hints, - set_storage_via_setmem): Update prototypes. - * i386.c (ix86_expand_set_or_movmem): Add bounds; export. - (ix86_expand_movmem, ix86_expand_setmem): Remove. - (ix86_expand_movmem, ix86_expand_setmem): Remove. - * i386.md (movmem, setmem): Pass parameters. - -2013-11-17 Uros Bizjak - - PR target/59153 - * config/i386/i386.c (ix86_address_subreg_operand): Do not - reject non-integer subregs. - (ix86_decompose_address): Do not reject invalid CONST_INT RTXes. - Move check for invalid x32 constant addresses ... - (ix86_legitimate_address_p): ... here. - -2011-11-17 Bill Schmidt - - * config/rs6000/rs6000.c (rs6000_frame_related): Add split_reg - parameter and use it in REG_FRAME_RELATED_EXPR note. - (emit_frame_save): Call rs6000_frame_related with extra NULL_RTX - parameter. - (rs6000_emit_prologue): Likewise, but for little endian VSX - stores, pass the source register of the store instead. - -2013-11-17 Andrew MacLeod - - * gimple.h: Reorder prototypes to match .c declaration order, and - remove protyotypes for functions not in gimple.c. - (LABEL): Move to tree-into-ssa.c. - * gimple.c: Remove unused prototypes. - (get_base_address): Move to tree.c. - * tree.c (get_base_address): Relocate from gimple.c. - * builtins.h (validate_gimple_arglist): Add prototype. - * trans-mem.h (compute_transaction_bits, is_tm_ending): Add prototype. - * cfgexpand.h: New File. - (gimple_assign_rhs_to_tree, estimated_stack_frame_size): Add protoype. - * tree.h (build_addr): Move to tree-nested.h. - * tree-nested.h: New File. - (build_addr, lower_nested_functions, insert_field_into_struct): Add - prototypes. - * tree-inline.h (estimated_stack_frame_size): Remove prototype. - * ipa-inline-analysis.c: Include cfgexpand.h. - * cgraphunit.c: Include tree-nested.h. - * omp-low.c: Likewise. - * tree-parloops.c: Likewise. - * gimple-low.h: Likewise. - * tree-profile.h: Likewise. - * expr.c: Include cfgexpand.h. - * tree-affine.c: Likewise. - * tree-ssa.c: Likewise. - * tree-ssa-loop-im.c: Include trans-mem.h. - * tree-ssa-tail-merge.c: Likewise. - * value-prof.c: Include builtins.h and tree-nested.h. - * tree-into-ssa.c (LABEL): Define here. - -2013-11-16 Joern Rennecke - - * config/arc/arc.c (arc_predicate_delay_insns): New function. - (pass_data_arc_predicate_delay_insns): New pass_data instance. - (pass_arc_predicate_delay_insns): New subclass of rtl_opt_class. - (make_pass_arc_predicate_delay_insns): New function. - (arc_init): Register pass_arc_predicate_delay_insns if - flag_delayed_branch is active. - -2013-11-16 Joern Rennecke - - * config/arc/constraints.md (Rcq): Simplify register number test. - -2013-11-15 Aldy Hernandez - - * gimple.h (enum gf_mask): Change the ordering of GF_OMP_* bits. - -2013-11-15 Kaz Kojima - - * config/sh/sh.c (barrier_align): Return 0 when barrier_or_label - is null. - -2013-11-15 Aldy Hernandez - - * Makefile.in (C_COMMON_OBJS): Depend on c-cilkplus.o. - * gimple-pretty-print.c (dump_omp_for): Add case for - GF_OMP_FOR_KIND_CILKSIMD. - * gimple.h (enum gf_mask): Restructure entries to add - GF_OMP_FOR_KIND_CILKSIMD. - * gimplify.c (is_gimple_stmt): Add case for CILK_SIMD. - (gimplify_omp_for): Handle CILK_SIMD. - (gimplify_expr): Add ccase for CILK_SIMD. - * omp-low.c (extract_omp_for_data): Handle CILK_SIMD. - (build_outer_var_ref): Same. - (check_omp_nesting_restrictions): Same. - (lower_rec_input_clauses): Same. - (lower_lastprivate_clauses): Same. - (expand_omp_for): Same. - (execute_expand_omp): Check flag_enable_cilkplus. - (execute_lower_omp): Same. - (diagnose_sb_0): Handle CILK_SIMD. - (diagnose_omp_structured_block_errors): Check flag_enable_cilkplus. - (setjmp_or_longjmp_p): New. - (scan_omp_1_stmt): Error on setjmp/longjmp in a simd construct. - * tree-pretty-print.c (dump_generic_node): Add case for CILK_SIMD. - * tree.def: Add tree code for CILK_SIMD. - -2013-11-15 Bill Schmidt - - * config/rs6000/altivec.md (UNSPEC_VPERM_X, UNSPEC_VPERM_UNS_X): - Remove. - (altivec_vperm_): Revert earlier little endian change. - (*altivec_vperm__internal): Remove. - (altivec_vperm__uns): Revert earlier little endian change. - (*altivec_vperm__uns_internal): Remove. - * config/rs6000/vector.md (vec_realign_load_): Revise commentary. - -2013-11-15 Jeff Law - - * basic-block.h (has_abnormal_or_eh_outgoing_edge): Renamed from - has_abnormal_or_outgoing_edge. Check for EH edges as well. - * gimple-ssa-isolate-paths.c - (find_implicit_erroneous_behaviour): Corresponding changes. - Do not check stmt_ends_bb_p or GIMPLE_RETURN anymore. - (find_explicit_erroneous_behaviour): Likewise. - -2013-11-15 Jeff Law - - * ifcvt.c (find_cond_trap): Properly handle case where - trap_bb == else_bb. - -2013-11-15 Andreas Schwab - - * configure: Regenerate. - -2013-11-15 James Greenhalgh - - * config/aarch64/aarch64-simd.md: Remove simd_type from all patterns. - * config/aarch64/aarch64.md: Likewise, correct "type" attribute - where it is incorrect or missing. - -2013-11-15 Richard Sandiford - - * dwarf2out.c (gen_enumeration_type_die): Remove unnecessary - host_integerp test. - * tree-vect-patterns.c (vect_recog_divmod_pattern): Likewise. - Use TREE_INT_CST_LOW rather than tree_low_cst when reading the - constant. - * fold-const.c (fold_binary_loc): Replace a host_integerp/tree_low_cst - pair with a TREE_CODE test and TREE_INT_CST_LOW. - * tree-vect-generic.c (expand_vector_divmod): Likewise. - -2013-11-15 Richard Biener - - PR tree-optimization/50262 - * tree-ssa-alias.h (struct pt_solution): Split - vars_contains_global into vars_contains_nonlocal, - vars_contains_escaped and vars_contains_escaped_heap. - * tree-ssa-structalias.c (label_visit): Expand comment. - (handle_lhs_call): Adjust comment. - (set_uids_in_ptset): Set the new flags appropriately. - (pt_solution_set): Adjust. - (pt_solution_set_var): Likewise. - (pt_solution_ior_into): Likewise. - (pt_solution_includes_global): Likewise. - (pt_solutions_intersect_1): Optimize escaped handling. - (compute_points_to_sets): Remove heap variable globalization. - (ipa_escaped_pt): Adjust initializer. - (pass_data_ipa_pta): Do not run TODO_update_ssa. - * gimple-pretty-print.c (pp_points_to_solution): Print split flags. - * tree-ssa-alias.c (dump_points_to_solution): Likewise. - -2013-11-15 Richard Biener - - * tree-loop-distribution.c (tree_loop_distribution): Make sure - to distribute all stores. - -2013-11-15 Ulrich Weigand - - * doc/invoke.texi (-mabi=elfv1, -mabi=elfv2): Document. - -2013-11-15 Joseph Myers - - * acinclude.m4 (GCC_GLIBC_VERSION_GTE_IFELSE): New configure macro. - * configure.ac: Determine target_header_dir earlier. - (--with-glibc-version): New configure option. - Use GCC_GLIBC_VERSION_GTE_IFELSE in enable_gnu_unique_object, - gcc_cv_libc_provides_ssp and gcc_cv_target_ldbl128 tests. - * configure: Regenerate. - * doc/install.texi (--enable-gnu-unique-object): Don't refer to - native toolchains for default. - (--with-glibc-version): Document. - -2013-11-15 Eric Botcazou - - * fold-const.c (fold_binary_loc) : Reuse local variable. - -2013-11-15 Uros Bizjak - - * lto-streamer-in.c (input function): Call cgraph_create_node if - cgraph_get_node failed. - -2013-11-14 Olivier Hainque - - * cfgexpand.c (defer_stack_allocation): When optimization is enabled, - defer allocation of DECL_IGNORED_P variables at toplevel unless really - small. Factorize size threshold computation from the existing one. - (expand_used_vars): Refine comment. - -2013-11-14 Cong Hou - - * tree-vectorizer.h (struct dr_with_seg_len): Remove the base - address field as it can be obtained from dr. Rename the struct. - * tree-vect-data-refs.c (comp_dr_with_seg_len_pair): Consider - steps of data references during sort. - (vect_prune_runtime_alias_test_list): Adjust with the change to - struct dr_with_seg_len. - * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): - Adjust with the change to struct dr_with_seg_len. - -2013-11-14 Jeff Law - - PR middle-end/59127 - * basic-block.h (has_abnormal_outgoing_edge_p): Moved here from... - * tree-inline.c (has_abnormal_outgoing_edge_p): Remove. - * gimple-ssa-isolate-paths.c: Include tree-cfg.h. - (find_implicit_erroneous_behaviour): If a block has abnormal outgoing - edges, then ignore it. If the statement exhibiting erroneous - behaviour ends basic blocks, with the exception of GIMPLE_RETURNs, - then we can not optimize. - (find_explicit_erroneous_behaviour): Likewise. - -2013-11-14 Andrew MacLeod - - * gimplify-me.h: New file. Add prototypes. - * gimplify.h: Don't include gimple.h. - (struct gimplify_hasher, struct gimplify_ctx, is_gimple_sizepos): - Relocate from gimple.h. - * gimple.h (struct gimplify_hasher, struct gimplify_ctx, - is_gimple_sizepos): Move to gimplify.h. - (gimplify_hasher::hash, gimplify_hasher::equal): Move to gimplify.c. - (enum gsi_iterator_update): Move to gimple-iterator.h. - * gimple-iterator.h (enum gsi_iterator_update): Relocate from gimple.h. - * gimplify-me.c: New File. - (force_gimple_operand_1, force_gimple_operand, - force_gimple_operand_gsi_1, force_gimple_operand_gsi, - gimple_regimplify_operands): Relocate from gimplify.c. - * gimplify.c (force_gimple_operand_1, force_gimple_operand, - force_gimple_operand_gsi_1, force_gimple_operand_gsi, - gimple_regimplify_operands): Move to gimplify-me.c. - (gimplify_hasher::hash, gimplify_hasher::equal): Relocate - from gimple.h. - * Makefile.in (OBJS): Add gimplify-me.o - * asan.c: Include only gimplify.h, gimplify-me.h, and/or gimple.h as - required. - * cfgloopmanip.c: Likewise. - * cgraphunit.c: Likewise. - * cilk-common.c: Likewise. - * fold-const.c: Likewise. - * function.c: Likewise. - * gimple-expr.c: Likewise. - * gimple-fold.c: Likewise. - * gimple-ssa-strength-reduction.c: Likewise. - * gimple.c: Likewise. - * graphite-clast-to-gimple.c: Likewise. - * graphite-sese-to-poly.c: Likewise. - * ipa-prop.c: Likewise. - * ipa-split.c: Likewise. - * ipa.c: Likewise. - * langhooks.c: Likewise. - * omp-low.c: Likewise. - * sese.c: Likewise. - * stor-layout.c: Likewise. - * targhooks.c: Likewise. - * trans-mem.c: Likewise. - * tree-affine.c: Likewise. - * tree-cfg.c: Likewise. - * tree-cfgcleanup.c: Likewise. - * tree-complex.c: Likewise. - * tree-if-conv.c: Likewise. - * tree-inline.c: Likewise. - * tree-loop-distribution.c: Likewise. - * tree-nested.c: Likewise. - * tree-parloops.c: Likewise. - * tree-predcom.c: Likewise. - * tree-profile.c: Likewise. - * tree-scalar-evolution.c: Likewise. - * tree-sra.c: Likewise. - * tree-ssa-address.c: Likewise. - * tree-ssa-ccp.c: Likewise. - * tree-ssa-dce.c: Likewise. - * tree-ssa-forwprop.c: Likewise. - * tree-ssa-ifcombine.c: Likewise. - * tree-ssa-loop-im.c: Likewise. - * tree-ssa-loop-ivopts.c: Likewise. - * tree-ssa-loop-manip.c: Likewise. - * tree-ssa-loop-niter.c: Likewise. - * tree-ssa-loop-prefetch.c: Likewise. - * tree-ssa-loop-unswitch.c: Likewise. - * tree-ssa-math-opts.c: Likewise. - * tree-ssa-phiopt.c: Likewise. - * tree-ssa-phiprop.c: Likewise. - * tree-ssa-pre.c: Likewise. - * tree-ssa-propagate.c: Likewise. - * tree-ssa-reassoc.c: Likewise. - * tree-ssa-sccvn.c: Likewise. - * tree-ssa-strlen.c: Likewise. - * tree-ssa.c: Likewise. - * tree-switch-conversion.c: Likewise. - * tree-tailcall.c: Likewise. - * tree-vect-data-refs.c: Likewise. - * tree-vect-generic.c: Likewise. - * tree-vect-loop-manip.c: Likewise. - * tree-vect-loop.c: Likewise. - * tree-vect-patterns.c: Likewise. - * tree-vect-stmts.c: Likewise. - * tree.c: Likewise. - * tsan.c: Likewise. - * value-prof.c: Likewise. - * config/aarch64/aarch64.c: Likewise. - * config/alpha/alpha.c: Likewise. - * config/darwin.c: Likewise. - * config/i386/i386.c: Likewise. - * config/ia64/ia64.c: Likewise. - * config/mep/mep.c: Likewise. - * config/mips/mips.c: Likewise. - * config/rs6000/rs6000.c: Likewise. - * config/s390/s390.c: Likewise. - * config/sh/sh.c: Likewise. - * config/sparc/sparc.c: Likewise. - * config/spu/spu.c: Likewise. - * config/stormy16/stormy16.c: Likewise. - * config/tilegx/tilegx.c: Likewise. - * config/tilepro/tilepro.c: Likewise. - * config/xtensa/xtensa.c: Likewise. - -2013-11-14 Diego Novillo - - * Makefile.in (PLUGIN_HEADERS): Add stringpool.h. - -2013-11-14 Diego Novillo - - * tree.h: Include fold-const.h. - (aggregate_value_p): Moved to function.h. - (alloca_call_p): Moved to calls.h. - (allocate_struct_function): Moved to function.h. - (apply_tm_attr): Moved to attribs.h. - (array_at_struct_end_p): Moved to expr.h. - (array_ref_element_size): Moved to tree-dfa.h. - (array_ref_low_bound): Moved to tree-dfa.h. - (array_ref_up_bound): Moved to tree.h. - (assemble_alias): Moved to cgraph.h. - (bit_from_pos): Moved to stor-layout.h. - (build_addr): Moved to tree-nested.h. - (build_duplicate_type): Moved to tree-inline.h. - (build_fold_addr_expr): Moved to fold-const.h. - (build_fold_addr_expr_with_type): Moved to fold-const.h. - (build_fold_addr_expr_with_type_loc): Moved to fold-const.h. - (build_fold_indirect_ref): Moved to fold-const.h. - (build_fold_indirect_ref_loc): Moved to fold-const.h. - (build_personality_function): Moved to tree.h. - (build_range_check): Moved to fold-const.h. - (build_simple_mem_ref): Moved to fold-const.h. - (build_simple_mem_ref_loc): Moved to fold-const.h. - (build_tm_abort_call): Moved to trans-mem.h. - (byte_from_pos): Moved to stor-layout.h. - (call_expr_flags): Moved to calls.h. - (can_move_by_pieces): Moved to expr.h. - (categorize_ctor_elements): Moved to expr.h. - (change_decl_assembler_name): Moved to gcc-symtab.h. - (combine_comparisons): Moved to fold-const.h. - (complete_ctor_at_level_p): Moved to tree.h. - (component_ref_field_offset): Moved to tree-dfa.h. - (compute_builtin_object_size): Moved to tree-object-size.h. - (compute_record_mode): Moved to stor-layout.h. - (constant_boolean_node): Moved to fold-const.h. - (constructor_static_from_elts_p): Moved to varasm.h. - (cxx11_attribute_p): Moved to attribs.h. - (debug_body): Moved to print-tree.h. - (debug_find_tree): Moved to tree-inline.h. - (debug_fold_checksum): Moved to fold-const.h. - (debug_head): Moved to print-tree.h. - (debug_head): Moved to print-tree.h. - (debug_raw): Moved to print-tree.h. - (debug_tree): Moved to print-tree.h. - (debug_vec_tree): Moved to print-tree.h. - (debug_verbose): Moved to print-tree.h. - (debug_verbose): Moved to print-tree.h. - (decl_attributes): Moved to attribs.h. - (decl_binds_to_current_def_p): Moved to varasm.h. - (decl_default_tls_model): Moved to varasm.h. - (decl_replaceable_p): Moved to varasm.h. - (div_if_zero_remainder): Moved to fold-const.h. - (double_int mem_ref_offset): Moved to fold-const.h. - (dump_addr): Moved to print-tree.h. - (element_precision): Moved to machmode.h. - (expand_dummy_function_end): Moved to function.h. - (expand_function_end): Moved to function.h. - (expand_function_start): Moved to function.h. - (expand_label): Moved to stmt.h. - (expr_first): Moved to tree-iterator.h. - (expr_last): Moved to tree-iterator.h. - (finalize_size_functions): Moved to stor-layout.h. - (finish_builtin_struct): Moved to stor-layout.h. - (finish_record_layout): Moved to stor-layout.h. - (fixup_signed_type): Moved to stor-layout.h. - (fixup_unsigned_type): Moved to stor-layout.h. - (flags_from_decl_or_type): Moved to calls.h. - (fold): Moved to fold-const.h. - (fold_abs_const): Moved to fold-const.h. - (fold_binary): Moved to fold-const.h. - (fold_binary_loc): Moved to fold-const.h. - (fold_binary_to_constant): Moved to fold-const.h. - (fold_build1): Moved to fold-const.h. - (fold_build1_initializer_loc): Moved to fold-const.h. - (fold_build1_loc): Moved to fold-const.h. - (fold_build1_stat_loc): Moved to fold-const.h. - (fold_build2): Moved to fold-const.h. - (fold_build2_initializer_loc): Moved to fold-const.h. - (fold_build2_loc): Moved to fold-const.h. - (fold_build2_stat_loc): Moved to fold-const.h. - (fold_build3): Moved to fold-const.h. - (fold_build3_loc): Moved to fold-const.h. - (fold_build3_stat_loc): Moved to fold-const.h. - (fold_build_call_array): Moved to fold-const.h. - (fold_build_call_array_initializer): Moved to fold-const.h. - (fold_build_call_array_initializer_loc): Moved to fold-const.h. - (fold_build_call_array_loc): Moved to fold-const.h. - (fold_build_cleanup_point_expr): Moved to fold-const.h. - (fold_convert): Moved to fold-const.h. - (fold_convert_loc): Moved to fold-const.h. - (fold_convertible_p): Moved to fold-const.h. - (fold_defer_overflow_warnings): Moved to fold-const.h. - (fold_deferring_overflow_warnings_p): Moved to fold-const.h. - (fold_fma): Moved to fold-const.h. - (fold_ignored_result): Moved to fold-const.h. - (fold_indirect_ref): Moved to fold-const.h. - (fold_indirect_ref_1): Moved to fold-const.h. - (fold_indirect_ref_loc): Moved to fold-const.h. - (fold_read_from_constant_string): Moved to fold-const.h. - (fold_real_zero_addition_p): Moved to fold-const.h. - (fold_single_bit_test): Moved to fold-const.h. - (fold_strip_sign_ops): Moved to fold-const.h. - (fold_ternary): Moved to fold-const.h. - (fold_ternary_loc): Moved to fold-const.h. - (fold_unary): Moved to tree-data-ref.h. - (fold_unary_ignore_overflow): Moved to fold-const.h. - (fold_unary_ignore_overflow_loc): Moved to fold-const.h. - (fold_unary_loc): Moved to fold-const.h. - (fold_unary_to_constant): Moved to fold-const.h. - (fold_undefer_and_ignore_overflow_warnings): Moved to fold-const.h. - (fold_undefer_overflow_warnings): Moved to fold-const.h. - (folding_initializer): Moved to fold-const.h. - (free_temp_slots): Moved to function.h. - (generate_setjmp_warnings): Moved to function.h. - (get_attribute_name): Moved to attribs.h. - (get_identifier): Moved to stringpool.h. - (get_identifier_with_length): Moved to stringpool.h. - (get_inner_reference): Moved to tree.h. - (gimple_alloca_call_p): Moved to calls.h. - (gimplify_parameters): Moved to function.h. - (highest_pow2_factor): Moved to expr.h. - (indent_to): Moved to print-tree.h. - (init_attributes): Moved to attribs.h. - (init_dummy_function_start): Moved to function.h. - (init_function_start): Moved to function.h. - (init_inline_once): Moved to tree-inline.h. - (init_object_sizes): Moved to tree-object-size.h. - (init_temp_slots): Moved to function.h. - (init_tree_optimization_optabs): Moved to optabs.h. - (initialize_sizetypes): Moved to stor-layout.h. - (initializer_constant_valid_for_bitfield_p): Moved to varasm.h. - (initializer_constant_valid_p): Moved to varasm.h. - (int_const_binop): Moved to fold-const.h. - (internal_reference_types): Moved to stor-layout.h. - (invert_tree_comparison): Moved to fold-const.h. - (invert_truthvalue): Moved to fold-const.h. - (invert_truthvalue_loc): Moved to fold-const.h. - (is_tm_ending_fndecl): Moved to trans-mem.h. - (is_tm_may_cancel_outer): Moved to trans-mem.h. - (is_tm_pure): Moved to trans-mem.h. - (is_tm_safe): Moved to trans-mem.h. - (layout_decl): Moved to stor-layout.h. - (layout_type): Moved to stor-layout.h. - (lookup_attribute_spec): Moved to attribs.h. - (make_accum_type): Moved to stor-layout.h. - (make_decl_one_only): Moved to varasm.h. - (make_decl_rtl): Moved to tree.h. - (make_decl_rtl_for_debug): Moved to varasm.h. - (make_fract_type): Moved to stor-layout.h. - (make_or_reuse_sat_signed_accum_type): Moved to stor-layout.h. - (make_or_reuse_sat_signed_fract_type): Moved to stor-layout.h. - (make_or_reuse_sat_unsigned_accum_type): Moved to stor-layout.h. - (make_or_reuse_sat_unsigned_fract_type): Moved to stor-layout.h. - (make_or_reuse_signed_accum_type): Moved to stor-layout.h. - (make_or_reuse_signed_fract_type): Moved to stor-layout.h. - (make_or_reuse_unsigned_accum_type): Moved to stor-layout.h. - (make_or_reuse_unsigned_fract_type): Moved to stor-layout.h. - (make_range): Moved to fold-const.h. - (make_range_step): Moved to fold-const.h. - (make_sat_signed_accum_type): Moved to stor-layout.h. - (make_sat_signed_fract_type): Moved to stor-layout.h. - (make_sat_unsigned_accum_type): Moved to stor-layout.h. - (make_sat_unsigned_fract_type): Moved to stor-layout.h. - (make_signed_accum_type): Moved to stor-layout.h. - (make_signed_fract_type): Moved to stor-layout.h. - (make_signed_type): Moved to stor-layout.h. - (make_unsigned_accum_type): Moved to stor-layout.h. - (make_unsigned_fract_type): Moved to stor-layout.h. - (make_unsigned_type): Moved to stor-layout.h. - (mark_decl_referenced): Moved to varasm.h. - (mark_referenced): Moved to varasm.h. - (may_negate_without_overflow_p): Moved to fold-const.h. - (maybe_get_identifier): Moved to stringpool.h. - (merge_ranges): Moved to fold-const.h. - (merge_weak): Moved to varasm.h. - (mode_for_size_tree): Moved to stor-layout.h. - (multiple_of_p): Moved to fold-const.h. - (must_pass_in_stack_var_size): Moved to calls.h. - (must_pass_in_stack_var_size_or_pad): Moved to calls.h. - (native_encode_expr): Moved to fold-const.h. - (native_interpret_expr): Moved to fold-const.h. - (non_lvalue): Moved to fold-const.h. - (non_lvalue_loc): Moved to fold-const.h. - (normalize_offset): Moved to stor-layout.h. - (normalize_rli): Moved to stor-layout.h. - (notice_global_symbol): Moved to varasm.h. - (omit_one_operand): Moved to fold-const.h. - (omit_one_operand_loc): Moved to fold-const.h. - (omit_two_operands): Moved to fold-const.h. - (omit_two_operands_loc): Moved to fold-const.h. - (operand_equal_p): Moved to tree-data-ref.h. - (parse_input_constraint): Moved to stmt.h. - (parse_output_constraint): Moved to stmt.h. - (place_field): Moved to stor-layout.h. - (pop_function_context): Moved to function.h. - (pop_temp_slots): Moved to function.h. - (pos_from_bit): Moved to stor-layout.h. - (preserve_temp_slots): Moved to function.h. - (print_node): Moved to print-tree.h. - (print_node_brief): Moved to print-tree.h. - (print_rtl): Moved to rtl.h. - (process_pending_assemble_externals): Moved to varasm.h. - (ptr_difference_const): Moved to fold-const.h. - (push_function_context): Moved to function.h. - (push_struct_function): Moved to function.h. - (push_temp_slots): Moved to function.h. - (record_tm_replacement): Moved to trans-mem.h. - (relayout_decl): Moved to stor-layout.h. - (resolve_asm_operand_names): Moved to stmt.h. - (resolve_unique_section): Moved to varasm.h. - (rli_size_so_far): Moved to stor-layout.h. - (rli_size_unit_so_far): Moved to stor-layout.h. - (round_down): Moved to fold-const.h. - (round_down_loc): Moved to fold-const.h. - (round_up): Moved to fold-const.h. - (round_up_loc): Moved to fold-const.h. - (set_decl_incoming_rtl): Moved to emit-rtl.h. - (set_decl_rtl): Moved to tree.h. - (set_min_and_max_values_for_integral_type): Moved to stor-layout.h. - (set_user_assembler_name): Moved to varasm.h. - (setjmp_call_p): Moved to calls.h. - (size_binop): Moved to fold-const.h. - (size_binop_loc): Moved to fold-const.h. - (size_diffop): Moved to fold-const.h. - (size_diffop_loc): Moved to fold-const.h. - (size_int_kind): Moved to fold-const.h. - (stack_protect_epilogue): Moved to function.h. - (start_record_layout): Moved to stor-layout.h. - (supports_one_only): Moved to varasm.h. - (swap_tree_comparison): Moved to fold-const.h. - (tm_malloc_replacement): Moved to trans-mem.h. - (tree build_fold_addr_expr_loc): Moved to fold-const.h. - (tree build_invariant_address): Moved to fold-const.h. - (tree_binary_nonnegative_warnv_p): Moved to fold-const.h. - (tree_binary_nonzero_warnv_p): Moved to fold-const.h. - (tree_call_nonnegative_warnv_p): Moved to fold-const.h. - (tree_expr_nonnegative_p): Moved to fold-const.h. - (tree_expr_nonnegative_warnv_p): Moved to fold-const.h. - (tree_output_constant_def): Moved to varasm.h. - (tree_overlaps_hard_reg_set): Moved to stmt.h. - (tree_single_nonnegative_warnv_p): Moved to fold-const.h. - (tree_single_nonzero_warnv_p): Moved to fold-const.h. - (tree_swap_operands_p): Moved to fold-const.h. - (tree_unary_nonnegative_warnv_p): Moved to fold-const.h. - (tree_unary_nonzero_warnv_p): Moved to fold-const.h. - (update_alignment_for_field): Moved to stor-layout.h. - (use_register_for_decl): Moved to function.h. - (variable_size): Moved to rtl.h. - (vector_type_mode): Moved to stor-layout.h. - * cgraph.h: Corresponding changes. - * emit-rtl.h: Corresponding changes. - * expr.h: Corresponding changes. - * function.h: Corresponding changes. - * optabs.h: Corresponding changes. - * trans-mem.h: Corresponding changes. - Protect against multiple inclusion. - * tree-inline.h: Corresponding changes. - * tree-iterator.h: Corresponding changes. - * tree-dfa.h: Include expr.h. - * tree-ssanames.h: Include stringpool.h. - * attribs.h: New file. - * calls.h: New file. - * fold-const.h: New file. - * gcc-symtab.h: New file. - * print-rtl.h: New file. - * print-tree.h: New file. - * stmt.h: New file. - * stor-layout.h: New file. - * strinpool.h: New file. - * tree-nested.h: New file - * tree-object-size.h: New file. - * varasm.h: New file. - -2013-11-14 Diego Novillo - - * alias.c: Include varasm.h. - Include expr.h. - * asan.c: Include calls.h. - Include stor-layout.h. - Include varasm.h. - * attribs.c: Include stringpool.h. - Include attribs.h. - Include stor-layout.h. - * builtins.c: Include stringpool.h. - Include stor-layout.h. - Include calls.h. - Include varasm.h. - Include tree-object-size.h. - * calls.c: Include stor-layout.h. - Include varasm.h. - Include stringpool.h. - Include attribs.h. - * cfgexpand.c: Include stringpool.h. - Include varasm.h. - Include stor-layout.h. - Include stmt.h. - Include print-tree.h. - * cgraph.c: Include varasm.h. - Include calls.h. - Include print-tree.h. - * cgraphclones.c: Include stringpool.h. - Include function.h. - Include emit-rtl.h. - Move inclusion of rtl.h earlier in the file. - * cgraphunit.c: Include varasm.h. - Include stor-layout.h. - Include stringpool.h. - * cilk-common.c: Include stringpool.h. - Include stor-layout.h. - * combine.c: Include stor-layout.h. - * config/aarch64/aarch64-builtins.c: Include stor-layout.h. - Include stringpool.h. - Include calls.h. - * config/aarch64/aarch64.c: Include stringpool.h. - Include stor-layout.h. - Include calls.h. - Include varasm.h. - * config/alpha/alpha.c: Include stor-layout.h. - Include calls.h. - Include varasm.h. - * config/arc/arc.c: Include varasm.h. - Include stor-layout.h. - Include stringpool.h. - Include calls.h. - * config/arm/arm.c: Include stringpool.h. - Include stor-layout.h. - Include calls.h. - Include varasm.h. - * config/avr/avr-c.c: Include stor-layout.h. - * config/avr/avr-log.c: Include print-tree.h. - * config/avr/avr.c: Include print-tree.h. - Include calls.h. - Include stor-layout.h. - Include stringpool.h. - * config/bfin/bfin.c: Include varasm.h. - Include calls.h. - * config/c6x/c6x.c: Include stor-layout.h. - Include varasm.h. - Include calls.h. - Include stringpool.h. - * config/cr16/cr16.c: Include stor-layout.h. - Include calls.h. - * config/cris/cris.c: Include varasm.h. - Include stor-layout.h. - Include calls.h. - Include stmt.h. - * config/darwin.c: Include stringpool.h. - Include varasm.h. - Include stor-layout.h. - * config/epiphany/epiphany.c: Include stor-layout.h. - Include varasm.h. - Include calls.h. - Include stringpool.h. - * config/fr30/fr30.c: Include stor-layout.h. - Include varasm.h. - * config/frv/frv.c: Include varasm.h. - Include stor-layout.h. - Include stringpool.h. - * config/h8300/h8300.c: Include stor-layout.h. - Include varasm.h. - Include calls.h. - Include stringpool.h. - * config/i386/i386.c: Include stringpool.h. - Include attribs.h. - Include calls.h. - Include stor-layout.h. - Include varasm.h. - * config/i386/winnt-cxx.c: Include stringpool.h. - Include attribs.h. - * config/i386/winnt.c: Include stringpool.h. - Include varasm.h. - * config/ia64/ia64-c.c: Include stringpool.h. - * config/ia64/ia64.c: Include stringpool.h. - Include stor-layout.h. - Include calls.h. - Include varasm.h. - * config/iq2000/iq2000.c: Include stor-layout.h. - Include calls.h. - Include varasm.h. - * config/lm32/lm32.c: Include calls.h. - * config/m32c/m32c.c: Include stor-layout.h. - Include varasm.h. - Include calls.h. - * config/m32r/m32r.c: Include stor-layout.h. - Include varasm.h. - Include stringpool.h. - Include calls.h. - * config/m68k/m68k.c: Include calls.h. - Include stor-layout.h. - Include varasm.h. - * config/mcore/mcore.c: Include stor-layout.h. - Include varasm.h. - Include stringpool.h. - Include calls.h. - * config/mep/mep.c: Include varasm.h. - Include calls.h. - Include stringpool.h. - Include stor-layout.h. - * config/microblaze/microblaze.c: Include varasm.h. - Include stor-layout.h. - Include calls.h. - * config/mips/mips.c: Include varasm.h. - Include stringpool.h. - Include stor-layout.h. - Include calls.h. - * config/mmix/mmix.c: Include varasm.h. - Include stor-layout.h. - Include calls.h. - * config/mn10300/mn10300.c: Include stor-layout.h. - Include varasm.h. - Include calls.h. - * config/moxie/moxie.c: Include stor-layout.h. - Include varasm.h. - Include calls.h. - * config/msp430/msp430.c: Include stor-layout.h. - Include calls.h. - * config/nds32/nds32.c: Include stor-layout.h. - Include varasm.h. - Include calls.h. - * config/pa/pa.c: Include stor-layout.h. - Include stringpool.h. - Include varasm.h. - Include calls.h. - * config/pdp11/pdp11.c: Include stor-layout.h. - Include varasm.h. - Include calls.h. - * config/picochip/picochip.c: Include calls.h. - Include stor-layout.h. - Include stringpool.h. - Include varasm.h. - * config/rl78/rl78.c: Include varasm.h. - Include stor-layout.h. - Include calls.h. - * config/rs6000/rs6000-c.c: Include stor-layout.h. - Include stringpool.h. - * config/rs6000/rs6000.c: Include stringpool.h. - Include stor-layout.h. - Include calls.h. - Include print-tree.h. - Include varasm.h. - * config/rx/rx.c: Include varasm.h. - Include stor-layout.h. - Include calls.h. - * config/s390/s390.c: Include print-tree.h. - Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - Include calls.h. - * config/score/score.c: Include stringpool.h. - Include calls.h. - Include varasm.h. - Include stor-layout.h. - * config/sh/sh-c.c: Include stringpool.h. - Include attribs.h.h. - * config/sh/sh.c: Include stringpool.h. - Include stor-layout.h. - Include calls.h. - Include varasm.h. - * config/sol2-c.c: Include stringpool.h. - Include attribs.h. - * config/sol2-cxx.c: Include stringpool.h. - * config/sol2.c: Include stringpool.h. - Include varasm.h. - * config/sparc/sparc.c: Include stringpool.h. - Include stor-layout.h. - Include calls.h. - Include varasm.h. - * config/spu/spu-c.c: Include stringpool.h. - * config/spu/spu.c: Include stringpool.h. - Include stor-layout.h. - Include calls.h. - Include varasm.h. - * config/stormy16/stormy16.c: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - Include calls.h. - * config/tilegx/tilegx.c: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - Include calls.h. - * config/tilepro/tilepro.c: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - Include calls.h. - * config/v850/v850-c.c: Include stringpool.h. - Include attribs.h. - * config/v850/v850.c: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - Include calls.h. - * config/vax/vax.c: Include calls.h. - Include varasm.h. - * config/vms/vms.c: Include stringpool.h. - * config/vxworks.c: Include stringpool.h. - * config/xtensa/xtensa.c: Include stringpool.h. - Include stor-layout.h. - Include calls.h. - Include varasm.h. - * convert.c: Include stor-layout.h. - * coverage.c: Include stringpool.h. - Include stor-layout.h. - * dbxout.c: Include varasm.h. - Include stor-layout.h. - * dojump.c: Include stor-layout.h. - * dse.c: Include stor-layout.h. - * dwarf2asm.c: Include stringpool.h. - Include varasm.h. - * dwarf2cfi.c: Include stor-layout.h. - * dwarf2out.c: Include rtl.h. - Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - Include function.h. - Include emit-rtl.h. - Move inclusion of rtl.h earlier in the file. - * emit-rtl.c: Include varasm.h. - * except.c: Include stringpool.h. - Include stor-layout.h. - * explow.c: Include stor-layout.h. - * expmed.c: Include stor-layout.h. - * expr.c: Include stringpool.h. - Include stor-layout.h. - Include attribs.h. - Include varasm.h. - * final.c: Include varasm.h. - * fold-const.c: Include stor-layout.h. - Include calls.h. - Include tree-iterator.h. - * function.c: Include stor-layout.h. - Include varasm.h. - Include stringpool.h. - * genattrtab.c (write_header): Emit includes for varasm.h, - stor-layout.h and calls.h. - * genautomata.c (main): Likewise. - * genemit.c: Likewise. - * genopinit.c: Likewise. - * genoutput.c (output_prologue): Likewise. - * genpeep.c: Likewise. - * genpreds.c (write_insn_preds_c): Likewise. - * gengtype.c (open_base_files): Add stringpool.h. - * gimple-expr.c: Include stringpool.h. - Include stor-layout.h. - * gimple-fold.c: Include stringpool.h. - Include expr.h. - Include stmt.h. - Include stor-layout.h. - * gimple-low.c: Include tree-nested.h. - Include calls.h. - * gimple-pretty-print.c: Include stringpool.h. - * gimple-ssa-strength-reduction.c: Include stor-layout.h. - Include expr.h. - * gimple-walk.c: Include stmt.h. - * gimple.c: Include calls.h. - Include stmt.h. - Include stor-layout.h. - * gimplify.c: Include stringpool.h. - Include calls.h. - Include varasm.h. - Include stor-layout.h. - Include stmt.h. - Include print-tree.h. - Include expr.h. - * gimplify-me.c: Include stmt.h - Include stor-layout.h - * internal-fn.c: Include stor-layout.h. - * ipa-devirt.c: Include print-tree.h. - Include calls.h. - * ipa-inline-analysis.c: Include stor-layout.h. - Include stringpool.h. - Include print-tree.h. - * ipa-inline.c: Include trans-mem.h. - Include calls.h. - * ipa-prop.c: Include expr.h. - Include stor-layout.h. - Include print-tree.h. - * ipa-pure-const.c: Include print-tree.h. - Include calls.h. - * ipa-reference.c: Include calls.h. - * ipa-split.c: Include stringpool.h. - Include expr.h. - Include calls.h. - * ipa.c: Include calls.h. - Include stringpool.h. - * langhooks.c: Include stringpool.h. - Include attribs.h. - * lto-cgraph.c: Include stringpool.h. - * lto-streamer-in.c: Include stringpool.h. - * lto-streamer-out.c: Include stor-layout.h. - Include stringpool.h. - * omp-low.c: Include stringpool.h. - Include stor-layout.h. - Include expr.h. - * optabs.c: Include stor-layout.h. - Include stringpool.h. - Include varasm.h. - * passes.c: Include varasm.h. - * predict.c: Include calls.h. - * print-rtl.c: Include print-tree.h. - * print-tree.c: Include varasm.h. - Include print-rtl.h. - Include stor-layout.h. - * realmpfr.c: Include stor-layout.h. - * reg-stack.c: Include varasm.h. - * sdbout.c: Include varasm.h. - Include stor-layout.h. - * simplify-rtx.c: Include varasm.h. - * stmt.c: Include varasm.h. - Include stor-layout.h. - * stor-layout.c: Include stor-layout.h. - Include stringpool.h. - Include varasm.h. - Include print-tree.h. - * symtab.c: Include rtl.h. - Include print-tree.h. - Include varasm.h. - Include function.h. - Include emit-rtl.h. - * targhooks.c: Include stor-layout.h. - Include varasm.h. - * toplev.c: Include varasm.h. - Include tree-inline.h. - * trans-mem.c: Include calls.h. - Include function.h. - Include rtl.h. - Include emit-rtl.h. - * tree-affine.c: Include expr.h. - * tree-browser.c: Include print-tree.h. - * tree-call-cdce.c: Include stor-layout.h. - * tree-cfg.c: Include trans-mem.h. - Include stor-layout.h. - Include print-tree.h. - * tree-complex.c: Include stor-layout.h. - * tree-data-ref.c: Include expr.h. - * tree-dfa.c: Include stor-layout.h. - * tree-eh.c: Include expr.h. - Include calls.h. - * tree-emutls.c: Include stor-layout.h. - Include varasm.h. - * tree-if-conv.c: Include stor-layout.h. - * tree-inline.c: Include stor-layout.h. - Include calls.h. - * tree-loop-distribution.c: Include stor-layout.h. - * tree-nested.c: Include stringpool.h. - Include stor-layout.h. - * tree-object-size.c: Include tree-object-size.h. - * tree-outof-ssa.c: Include stor-layout.h. - * tree-parloops.c: Include stor-layout.h. - Include tree-nested.h. - * tree-pretty-print.c: Include stor-layout.h. - Include expr.h. - * tree-profile.c: Include varasm.h. - Include tree-nested.h. - * tree-scalar-evolution.c: Include expr.h. - * tree-sra.c: Include stor-layout.h. - * tree-ssa-address.c: Include stor-layout.h. - * tree-ssa-ccp.c: Include stor-layout.h. - * tree-ssa-dce.c: Include calls.h. - * tree-ssa-dom.c: Include stor-layout.h. - * tree-ssa-forwprop.c: Include stor-layout.h. - * tree-ssa-ifcombine.c: Include stor-layout.h. - * tree-ssa-loop-ivopts.c: Include stor-layout.h. - * tree-ssa-loop-niter.c: Include calls.h. - Include expr.h. - * tree-ssa-loop-prefetch.c: Include stor-layout.h. - * tree-ssa-math-opts.c: Include stor-layout.h. - * tree-ssa-operands.c: Include stmt.h. - Include print-tree.h. - * tree-ssa-phiopt.c: Include stor-layout.h. - * tree-ssa-reassoc.c: Include stor-layout.h. - * tree-ssa-sccvn.c: Include stor-layout.h. - * tree-ssa-sink.c: Include stor-layout.h. - * tree-ssa-strlen.c: Include stor-layout.h. - * tree-ssa-structalias.c: Include stor-layout.h. - Include stmt.h. - * tree-ssa-tail-merge.c: Include stor-layout.h. - Include trans-mem.h. - * tree-ssa-uncprop.c: Include stor-layout.h. - * tree-ssa.c: Include stor-layout.h. - * tree-ssanames.c: Include stor-layout.h. - * tree-streamer-in.c: Include stringpool.h. - * tree-streamer-out.c: Include stor-layout.h. - * tree-switch-conversion.c: Include varasm.h. - Include stor-layout.h. - * tree-tailcall.c: Include stor-layout.h. - * tree-vect-data-refs.c: Include stor-layout.h. - * tree-vect-generic.c: Include stor-layout.h. - * tree-vect-loop.c: Include stor-layout.h. - * tree-vect-patterns.c: Include stor-layout.h. - * tree-vect-slp.c: Include stor-layout.h. - * tree-vect-stmts.c: Include stor-layout.h. - * tree-vectorizer.c: Include stor-layout.h. - * tree-vrp.c: Include stor-layout.h. - Include calls.h. - * tree.c: Include stor-layout.h. - Include calls.h. - Include attribs.h. - Include varasm.h. - * tsan.c: Include expr.h. - * ubsan.c: Include stor-layout.h. - Include stringpool.h. - * value-prof.c: Include tree-nested.h. - Include calls.h. - * var-tracking.c: Include varasm.h. - Include stor-layout.h. - * varasm.c: Include stor-layout.h. - Include stringpool.h. - Include gcc-symtab.h. - Include varasm.h. - * varpool.c: Include varasm.h. - * vmsdbgout.c: Include varasm.h. - * xcoffout.c: Include varasm.h. - -2013-11-14 Joern Rennecke - - * config/arc/arc.md (doloop_begin_i): Remove extra alignment; - use (.&-4) idiom. - -2013-11-14 Ulrich Weigand - - * config/rs6000/sysv4le.h (LINUX64_DEFAULT_ABI_ELFv2): Define. - -2013-11-14 Ulrich Weigand - Alan Modra - - * config/rs6000/rs6000.h (RS6000_SAVE_AREA): Handle ABI_ELFv2. - (RS6000_SAVE_TOC): Remove. - (RS6000_TOC_SAVE_SLOT): New macro. - * config/rs6000/rs6000.c (rs6000_parm_offset): New function. - (rs6000_parm_start): Use it. - (rs6000_function_arg_advance_1): Likewise. - (rs6000_emit_prologue): Use RS6000_TOC_SAVE_SLOT. - (rs6000_emit_epilogue): Likewise. - (rs6000_call_aix): Likewise. - (rs6000_output_function_prologue): Do not save/restore r11 - around calling _mcount for ABI_ELFv2. - -2013-11-14 Ulrich Weigand - Alan Modra - - * config/rs6000/rs6000-protos.h (rs6000_reg_parm_stack_space): - Add prototype. - * config/rs6000/rs6000.h (RS6000_REG_SAVE): Remove. - (REG_PARM_STACK_SPACE): Call rs6000_reg_parm_stack_space. - * config/rs6000/rs6000.c (rs6000_parm_needs_stack): New function. - (rs6000_function_parms_need_stack): Likewise. - (rs6000_reg_parm_stack_space): Likewise. - (rs6000_function_arg): Do not replace BLKmode by Pmode when - returning a register argument. - -2013-11-14 Ulrich Weigand - Michael Gschwind - - * config/rs6000/rs6000.h (FP_ARG_MAX_RETURN): New macro. - (ALTIVEC_ARG_MAX_RETURN): Likewise. - (FUNCTION_VALUE_REGNO_P): Use them. - * config/rs6000/rs6000.c (TARGET_RETURN_IN_MSB): Define. - (rs6000_return_in_msb): New function. - (rs6000_return_in_memory): Handle ELFv2 homogeneous aggregates. - Handle aggregates of up to 16 bytes for ELFv2. - (rs6000_function_value): Handle ELFv2 homogeneous aggregates. - -2013-11-14 Ulrich Weigand - Michael Gschwind - - * config/rs6000/rs6000.h (AGGR_ARG_NUM_REG): Define. - * config/rs6000/rs6000.c (rs6000_aggregate_candidate): New function. - (rs6000_discover_homogeneous_aggregate): Likewise. - (rs6000_function_arg_boundary): Handle homogeneous aggregates. - (rs6000_function_arg_advance_1): Likewise. - (rs6000_function_arg): Likewise. - (rs6000_arg_partial_bytes): Likewise. - (rs6000_psave_function_arg): Handle BLKmode arguments. - -2013-11-14 Ulrich Weigand - Michael Gschwind - - * config/rs6000/rs6000.h (AGGR_ARG_NUM_REG): Define. - * config/rs6000/rs6000.c (rs6000_aggregate_candidate): New function. - (rs6000_discover_homogeneous_aggregate): Likewise. - (rs6000_function_arg_boundary): Handle homogeneous aggregates. - (rs6000_function_arg_advance_1): Likewise. - (rs6000_function_arg): Likewise. - (rs6000_arg_partial_bytes): Likewise. - (rs6000_psave_function_arg): Handle BLKmode arguments. - -2013-11-14 Ulrich Weigand - - * config/rs6000/rs6000.c (machine_function): New member - r2_setup_needed. - (rs6000_emit_prologue): Set r2_setup_needed if necessary. - (rs6000_output_mi_thunk): Set r2_setup_needed. - (rs6000_output_function_prologue): Output global entry point - prologue and local entry point marker if needed for ABI_ELFv2. - Output -mprofile-kernel code here. - (output_function_profiler): Do not output -mprofile-kernel - code here; moved to rs6000_output_function_prologue. - (rs6000_file_start): Output ".abiversion 2" for ABI_ELFv2. - - (rs6000_emit_move): Do not handle dot symbols for ABI_ELFv2. - (rs6000_output_function_entry): Likewise. - (rs6000_assemble_integer): Likewise. - (rs6000_elf_encode_section_info): Likewise. - (rs6000_elf_declare_function_name): Do not create dot symbols - or .opd section for ABI_ELFv2. - - (rs6000_trampoline_size): Update for ABI_ELFv2 trampolines. - (rs6000_trampoline_init): Likewise. - (rs6000_elf_file_end): Call file_end_indicate_exec_stack for ABI_ELFv2. - - (rs6000_call_aix): Handle ELFv2 indirect calls. Do not check - for function descriptors in ABI_ELFv2. - - * config/rs6000/rs6000.md ("*call_indirect_aix"): Support - on ABI_AIX only, not ABI_ELFv2. - ("*call_value_indirect_aix"): Likewise. - ("*call_indirect_elfv2"): New pattern. - ("*call_value_indirect_elfv2"): Likewise. - - * config/rs6000/predicates.md ("symbol_ref_operand"): Do not - check for function descriptors in ABI_ELFv2. - ("current_file_function_operand"): Likewise. - - * config/rs6000/ppc-asm.h [__powerpc64__ && _CALL_ELF == 2]: - (toc): Undefine. - (FUNC_NAME): Define ELFv2 variant. - (JUMP_TARGET): Likewise. - (FUNC_START): Likewise. - (HIDDEN_FUNC): Likewise. - (FUNC_END): Likeiwse. - -2013-11-14 Ulrich Weigand - - * config.gcc [powerpc*-*-* | rs6000-*-*]: Support --with-abi=elfv1 - and --with-abi=elfv2. - * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Add "abi". - * config/rs6000/rs6000.opt (mabi=elfv1): New option. - (mabi=elfv2): Likewise. - * config/rs6000/rs6000-opts.h (enum rs6000_abi): Add ABI_ELFv2. - * config/rs6000/linux64.h (DEFAULT_ABI): Do not hard-code to AIX_ABI - if !RS6000_BI_ARCH. - (ELFv2_ABI_CHECK): New macro. - (SUBSUBTARGET_OVERRIDE_OPTIONS): Use it to decide whether to set - rs6000_current_abi to ABI_AIX or ABI_ELFv2. - (GLIBC_DYNAMIC_LINKER64): Support ELFv2 ld.so version. - * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine - _CALL_ELF and __STRUCT_PARM_ALIGN__ if appropriate. - - * config/rs6000/rs6000.c (rs6000_debug_reg_global): Handle ABI_ELFv2. - (debug_stack_info): Likewise. - (rs6000_file_start): Treat ABI_ELFv2 the same as ABI_AIX. - (rs6000_legitimize_tls_address): Likewise. - (rs6000_conditional_register_usage): Likewise. - (rs6000_emit_move): Likewise. - (init_cumulative_args): Likewise. - (rs6000_function_arg_advance_1): Likewise. - (rs6000_function_arg): Likewise. - (rs6000_arg_partial_bytes): Likewise. - (rs6000_output_function_entry): Likewise. - (rs6000_assemble_integer): Likewise. - (rs6000_savres_strategy): Likewise. - (rs6000_stack_info): Likewise. - (rs6000_function_ok_for_sibcall): Likewise. - (rs6000_emit_load_toc_table): Likewise. - (rs6000_savres_routine_name): Likewise. - (ptr_regno_for_savres): Likewise. - (rs6000_emit_prologue): Likewise. - (rs6000_emit_epilogue): Likewise. - (rs6000_output_function_epilogue): Likewise. - (output_profile_hook): Likewise. - (output_function_profiler): Likewise. - (rs6000_trampoline_size): Likewise. - (rs6000_trampoline_init): Likewise. - (rs6000_elf_output_toc_section_asm_op): Likewise. - (rs6000_elf_encode_section_info): Likewise. - (rs6000_elf_reloc_rw_mask): Likewise. - (rs6000_elf_declare_function_name): Likewise. - (rs6000_function_arg_boundary): Treat ABI_ELFv2 the same as ABI_AIX, - except that rs6000_compat_align_parm is always assumed false. - (rs6000_gimplify_va_arg): Likewise. - (rs6000_call_aix): Update comment. - (rs6000_sibcall_aix): Likewise. - * config/rs6000/rs6000.md ("tls_gd_aix"): - Treat ABI_ELFv2 the same as ABI_AIX. - ("*tls_gd_call_aix"): Likewise. - ("tls_ld_aix"): Likewise. - ("*tls_ld_call_aix"): Likewise. - ("load_toc_aix_si"): Likewise. - ("load_toc_aix_di"): Likewise. - ("call"): Likewise. - ("call_value"): Likewise. - ("*call_local_aix"): Likewise. - ("*call_value_local_aix"): Likewise. - ("*call_nonlocal_aix"): Likewise. - ("*call_value_nonlocal_aix"): Likewise. - ("*call_indirect_aix"): Likewise. - ("*call_value_indirect_aix"): Likewise. - ("sibcall"): Likewise. - ("sibcall_value"): Likewise. - ("*sibcall_aix"): Likewise. - ("*sibcall_value_aix"): Likewise. - * config/rs6000/predicates.md ("symbol_ref_operand"): Likewise. - ("current_file_function_operand"): Likewise. - -2013-11-14 Ulrich Weigand - - * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Simplify logic - by making use of the fact that for vector / floating point arguments - passed both in VRs/FPRs and in the fixed parameter area, the partial - bytes mechanism is in fact not used. - -2013-11-14 Ulrich Weigand - - * config/rs6000/rs6000.c (rs6000_psave_function_arg): New function. - (rs6000_finish_function_arg): Likewise. - (rs6000_function_arg): Use rs6000_psave_function_arg and - rs6000_finish_function_arg to handle both vector and floating - point arguments that are also passed in GPRs / the stack. - -2013-11-14 Ulrich Weigand - - * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Remove TYPE argument. - (USE_ALTIVEC_FOR_ARG_P): Likewise. - (rs6000_darwin64_record_arg_advance_recurse): Update uses. - (rs6000_function_arg_advance_1):Likewise. - (rs6000_darwin64_record_arg_recurse): Likewise. - (rs6000_function_arg): Likewise. - (rs6000_arg_partial_bytes): Likewise. - -2013-11-14 Ulrich Weigand - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Replace - "DEFAULT_ABI != ABI_AIX" test by testing for ABI_V4 or ABI_DARWIN. - (rs6000_savres_strategy): Likewise. - (rs6000_return_addr): Likewise. - (rs6000_emit_load_toc_table): Replace "DEFAULT_ABI != ABI_AIX" by - testing for ABI_V4 (since ABI_DARWIN is impossible here). - (rs6000_emit_prologue): Likewise. - (legitimate_lo_sum_address_p): Simplify DEFAULT_ABI test. - (rs6000_elf_declare_function_name): Remove duplicated test. - * config/rs6000/rs6000.md ("load_toc_v4_PIC_1"): Explicitly test - for ABI_V4 (instead of "DEFAULT_ABI != ABI_AIX" test). - ("load_toc_v4_PIC_1_normal"): Likewise. - ("load_toc_v4_PIC_1_476"): Likewise. - ("load_toc_v4_PIC_1b"): Likewise. - ("load_toc_v4_PIC_1b_normal"): Likewise. - ("load_toc_v4_PIC_1b_476"): Likewise. - ("load_toc_v4_PIC_2"): Likewise. - ("load_toc_v4_PIC_3b"): Likewise. - ("load_toc_v4_PIC_3c"): Likewise. - * config/rs6000/rs6000.h (RS6000_REG_SAVE): Simplify DEFAULT_ABI test. - (RS6000_SAVE_AREA): Likewise. - (FP_ARG_MAX_REG): Likewise. - (RETURN_ADDRESS_OFFSET): Likewise. - * config/rs6000/sysv.h (TARGET_TOC): Test for ABI_V4 instead - of ABI_AIX. - (SUBTARGET_OVERRIDE_OPTIONS): Likewise. - (MINIMAL_TOC_SECTION_ASM_OP): Likewise. - -2013-11-14 Ulrich Weigand - - * config/rs6000/rs6000.c (rs6000_call_indirect_aix): Rename to ... - (rs6000_call_aix): ... this. Handle both direct and indirect calls. - Create call insn directly instead of via various gen_... routines. - Mention special registers used by the call in CALL_INSN_FUNCTION_USAGE. - (rs6000_sibcall_aix): New function. - * config/rs6000/rs6000.md (TOC_SAVE_OFFSET_32BIT): Remove. - (TOC_SAVE_OFFSET_64BIT): Likewise. - (AIX_FUNC_DESC_TOC_32BIT): Likewise. - (AIX_FUNC_DESC_TOC_64BIT): Likewise. - (AIX_FUNC_DESC_SC_32BIT): Likewise. - (AIX_FUNC_DESC_SC_64BIT): Likewise. - ("call" expander): Call rs6000_call_aix. - ("call_value" expander): Likewise. - ("call_indirect_aix"): Replace this pattern ... - ("call_indirect_aix_nor11"): ... and this pattern ... - ("*call_indirect_aix"): ... by this insn pattern. - ("call_value_indirect_aix"): Replace this pattern ... - ("call_value_indirect_aix_nor11"): ... and this pattern ... - ("*call_value_indirect_aix"): ... by this insn pattern. - ("*call_nonlocal_aix32", "*call_nonlocal_aix64"): Replace by ... - ("*call_nonlocal_aix"): ... this pattern. - ("*call_value_nonlocal_aix32", "*call_value_nonlocal_aix64"): Replace - ("*call_value_nonlocal_aix"): ... by this pattern. - ("*call_local_aix"): New insn pattern. - ("*call_value_local_aix"): Likewise. - ("sibcall" expander): Call rs6000_sibcall_aix. - ("sibcall_value" expander): Likewise. Move earlier in file. - ("*sibcall_nonlocal_aix"): Replace by ... - ("*sibcall_aix"): ... this pattern. - ("*sibcall_value_nonlocal_aix"): Replace by ... - ("*sibcall_value_aix"): ... this pattern. - * config/rs6000/rs6000-protos.h (rs6000_call_indirect_aix): Remove. - (rs6000_call_aix): Add prototype. - (rs6000_sibcall_aix): Likewise. - -2013-11-14 Jakub Jelinek - - PR sanitizer/59122 - * asan.c (asan_emit_stack_protection): Ensure -fsection-anchors - isn't confused by the artificial decl. - -2013-11-14 Ulrich Weigand - - * config/rs6000/rs6000.c (rs6000_emit_prologue): Do not place a - RTX_FRAME_RELATED_P marker on the UNSPEC_MOVESI_FROM_CR insn. - Instead, add USEs of all modified call-saved CR fields to the - insn storing the result to the stack slot, and provide an - appropriate REG_FRAME_RELATED_EXPR for that insn. - * config/rs6000/rs6000.md ("*crsave"): New insn pattern. - * config/rs6000/predicates.md ("crsave_operation"): New predicate. - -2013-11-14 Ulrich Weigand - Alan Modra - - * function.c (assign_parms): Use all.reg_parm_stack_space instead - of re-evaluating REG_PARM_STACK_SPACE target macro. - (locate_and_pad_parm): New parameter REG_PARM_STACK_SPACE. Use it - instead of evaluating target macro REG_PARM_STACK_SPACE every time. - (assign_parm_find_entry_rtl): Update call. - * calls.c (initialize_argument_information): Update call. - (emit_library_call_value_1): Likewise. - * expr.h (locate_and_pad_parm): Update prototype. - -2013-11-14 Ulrich Weigand - - * calls.c (store_unaligned_arguments_into_pseudos): Skip PARALLEL - arguments. - -2013-11-14 DJ Delorie - - * config/rx/rx.c (rx_mode_dependent_address_p): Allow offsets up - to 16 bits. - -2013-11-14 Jeff Law - - * tree-ssa-threadedge.c (thread_through_normal_block): Only push the - EDGE_START_JUMP_THREAD marker if the jump threading path is empty. - -2013-11-14 James Greenhalgh - - * doc/invoke.texi: Update documentation for AArch64's -mcpu - and -mtune options. - -2013-11-14 James Greenhalgh - - * config/aarch64/aarch64-cores.def (example-1): Remove. - (example-2): Likewise. - * config/aarch64/aarch64-tune.md: Regenerate. - * config/aarch64/aarch64.md: Do not include "large.md" or "small.md". - (generic_sched): Remove "large", "small". - * config/aarch64/large.md: Delete. - * config/aarch64/small.md: Delete. - -2013-11-14 James Greenhalgh - - * config/aarch64/aarch64-cores.def (cortex-a57): Tune for cortexa15. - * config/aarch64/aarch64-tune.md: Regenerate. - * config/aarch64/aarch64.md: Include cortex-a15 pipeline model. - (generic_sched): "no" if we are tuning for cortexa15. - * config/arm/cortex-a15.md: Include cortex-a15-neon.md by - relative path. - -2013-11-14 James Greenhalgh - - * config/aarch64/aarch64-arches.def (armv8-a): Tune for cortex-a53. - * config/aarch64/aarch64.md: Do not include aarch64-generic.md. - * config/aarch64/aarch64.c (aarch64_tune): Initialize to cortexa53. - (all_cores): Use cortexa53 when tuning for "generic". - (aarch64_override_options): Fix comment. - * config/aarch64/aarch64.h (TARGET_CPU_DEFAULT): Set to cortexa53. - * config/aarch64/aarch64-generic.md: Delete. - -2013-11-14 James Greenhalgh - - * config/aarch64/aarch64.c (all_architectures): Remove "generic". - -2013-11-14 Kyrylo Tkachov - - * config/aarch64/aarch64.c: Include aarch-cost-tables.h. - (generic_rtx_cost_table): Remove. - (aarch64_rtx_costs): Use fields from cpu_cost_table. - * config/aarch64/aarch64-protos.h (tune_params): Use cpu_cost_table for - insn_extra_cost. - (cpu_rtx_cost_table): Remove. - -2013-11-14 Julian Brown - Joey Ye - - * config/arm/arm.c (arm_cortex_m_branch_cost): New. - (arm_v7m_tune): New. - (arm_slowmul_tune, arm_fastmul_tune, arm_strongarm_tune, arm_9e_tune, - arm_v6t2_tune, arm_cortex_tune, arm_cortex_a15_tune, - arm_cortex_a5_tune, arm_v6m_tune): Add comments for Sched adj cost. - * config/arm/arm-cores.def (cortex-m4, cortex-m3): Use arm_v7m_tune. - -2013-11-14 Kirill Yukhin - - PR target/57491 - * config/ia64/ia64.c (ia64_split_tmode_move): Relax `dead' - flag setting. - -2013-11-14 Jakub Jelinek - Uros Bizjak - - PR target/59101 - * config/i386/i386.md (*anddi_2): Only allow CCZmode if - operands[2] satisfies_constraint_Z that might have bit 31 set. - -2013-11-13 Jeff Law - - PR tree-optimization/59102 - * gimple-ssa-isolate-paths.c - (insert_trap_and_remove_trailing_statments): Ensure STMT is a - gimple assignment before looking at gimple_assign_lhs. - -2013-11-13 Vladimir Makarov - - * ira.c: Add comment about threads at the top of file. - -2013-11-13 Vladimir Makarov - - * ira-color.c (coalesce_allocnos): Don't allocate and free - sorted_copies. - -2013-11-14 Tom de Vries - - * tree-ssa-tail-merge.c (gimple_equal_p): Add test for structural - equality for GIMPLE_ASSIGN. - -2013-11-14 Tom de Vries - - * tree-ssa-tail-merge.c (gimple_operand_equal_value_p): Factor new - function out of ... - (gimple_equal_p): ... here. - -2013-11-14 Tom de Vries - - * trans-mem.c (is_tm_ending): New function. - * gimple.h (is_tm_ending): Declare. - * tree-ssa-tail-merge.c (gimple_equal_p): Remove test on - BUILT_IN_TM_COMMIT. - (find_duplicate): Use is_tm_ending instead of is_tm_ending_fndecl. - -2013-11-14 Tom de Vries - - * tree-ssa-tail-merge.c (gimple_equal_p): Remove equal variable. - -2013-11-13 Andrew MacLeod - - * gimple-walk.h: New File. Relocate prototypes from gimple.h. - (struct walk_stmt_info): Relocate here from gimple.h. - * gimple-iterator.h: New File. Relocate prototypes from gimple.h. - (struct gimple_stmt_iterator_d): Relocate here from gimple.h. - (gsi_start_1, gsi_none, gsi_start_bb, gsi_last_1, gsi_last_bb, - gsi_end_p, gsi_one_before_end_p, gsi_next, gsi_prev, gsi_stmt, - gsi_after_labels, gsi_next_nondebug, gsi_prev_nondebug, - gsi_start_nondebug_bb, gsi_start_nondebug_after_labels_bb, - gsi_last_nondebug_bb, gsi_bb, gsi_seq): Relocate here from gimple.h. - * gimple.h (struct gimple_stmt_iterator_d): Move to gimple-iterator.h. - (gsi_start_1, gsi_none, gsi_start_bb, gsi_last_1, gsi_last_bb, - gsi_end_p, gsi_one_before_end_p, gsi_next, gsi_prev, gsi_stmt, - gsi_after_labels, gsi_next_nondebug, gsi_prev_nondebug, - gsi_start_nondebug_bb, gsi_start_nondebug_after_labels_bb, - gsi_last_nondebug_bb, gsi_bb, gsi_seq): Move to gimple-iterator.h. - (struct walk_stmt_info): Move to gimple-walk.h. - (gimple_seq_set_location): Move to gimple.c - * gimple-walk.c: New File. - (walk_gimple_seq_mod, walk_gimple_seq, walk_gimple_asm, walk_gimple_op, - walk_gimple_stmt, get_base_loadstore, walk_stmt_load_store_addr_ops, - walk_stmt_load_store_ops): Relocate here from gimple.c. - * gimple-iterator.c: Include gimple-iterator.h. - * gimple.c (walk_gimple_seq_mod, walk_gimple_seq, walk_gimple_asm, - walk_gimple_op, walk_gimple_stmt, get_base_loadstore, - walk_stmt_load_store_addr_ops, walk_stmt_load_store_ops): Move to - gimple-walk.c. - (gimple_seq_set_location): Relocate from gimple.h. - * tree-phinodes.h (set_phi_nodes): Move to tree-phinodes.c. - * tree-phinodes.c (set_phi_nodes): Relocate from tree-phinodes.h. - * gengtype.c (open_base_files): Add gimple-iterator.h to include list. - * Makefile.in (OBJS): Add gimple-walk.o - * asan.c: Update Include list as required for gimple-iterator.h and - gimple-walk.h. - * cfgexpand.c: Likewise. - * cfgloop.c: Likewise. - * cfgloopmanip.c: Likewise. - * cgraph.c: Likewise. - * cgraphbuild.c: Likewise. - * cgraphunit.c: Likewise. - * gimple-fold.c: Likewise. - * gimple-low.c: Likewise. - * gimple-pretty-print.c: Likewise. - * gimple-ssa-isolate-paths.c: Likewise. - * gimple-ssa-strength-reduction.c: Likewise. - * gimple-streamer-in.c: Likewise. - * gimple-streamer-out.c: Likewise. - * gimplify.c: Likewise. - * graphite-blocking.c: Likewise. - * graphite-clast-to-gimple.c: Likewise. - * graphite-dependences.c: Likewise. - * graphite-interchange.c: Likewise. - * graphite-optimize-isl.c: Likewise. - * graphite-poly.c: Likewise. - * graphite-scop-detection.c: Likewise. - * graphite-sese-to-poly.c: Likewise. - * graphite.c: Likewise. - * ipa-inline-analysis.c: Likewise. - * ipa-profile.c: Likewise. - * ipa-prop.c: Likewise. - * ipa-pure-const.c: Likewise. - * ipa-split.c: Likewise. - * lto-streamer-in.c: Likewise. - * lto-streamer-out.c: Likewise. - * omp-low.c: Likewise. - * predict.c: Likewise. - * profile.c: Likewise. - * sese.c: Likewise. - * tracer.c: Likewise. - * trans-mem.c: Likewise. - * tree-call-cdce.c: Likewise. - * tree-cfg.c: Likewise. - * tree-cfgcleanup.c: Likewise. - * tree-complex.c: Likewise. - * tree-data-ref.c: Likewise. - * tree-dfa.c: Likewise. - * tree-eh.c: Likewise. - * tree-emutls.c: Likewise. - * tree-if-conv.c: Likewise. - * tree-inline.c: Likewise. - * tree-into-ssa.c: Likewise. - * tree-loop-distribution.c: Likewise. - * tree-nested.c: Likewise. - * tree-nrv.c: Likewise. - * tree-object-size.c: Likewise. - * tree-outof-ssa.c: Likewise. - * tree-parloops.c: Likewise. - * tree-predcom.c: Likewise. - * tree-profile.c: Likewise. - * tree-scalar-evolution.c: Likewise. - * tree-sra.c: Likewise. - * tree-ssa-ccp.c: Likewise. - * tree-ssa-coalesce.c: Likewise. - * tree-ssa-copy.c: Likewise. - * tree-ssa-copyrename.c: Likewise. - * tree-ssa-dce.c: Likewise. - * tree-ssa-dom.c: Likewise. - * tree-ssa-dse.c: Likewise. - * tree-ssa-forwprop.c: Likewise. - * tree-ssa-ifcombine.c: Likewise. - * tree-ssa-live.c: Likewise. - * tree-ssa-loop-ch.c: Likewise. - * tree-ssa-loop-im.c: Likewise. - * tree-ssa-loop-ivcanon.c: Likewise. - * tree-ssa-loop-ivopts.c: Likewise. - * tree-ssa-loop-manip.c: Likewise. - * tree-ssa-loop-niter.c: Likewise. - * tree-ssa-loop-prefetch.c: Likewise. - * tree-ssa-loop.c: Likewise. - * tree-ssa-math-opts.c: Likewise. - * tree-ssa-phiopt.c: Likewise. - * tree-ssa-phiprop.c: Likewise. - * tree-ssa-pre.c: Likewise. - * tree-ssa-propagate.c: Likewise. - * tree-ssa-reassoc.c: Likewise. - * tree-ssa-sink.c: Likewise. - * tree-ssa-strlen.c: Likewise. - * tree-ssa-structalias.c: Likewise. - * tree-ssa-tail-merge.c: Likewise. - * tree-ssa-ter.c: Likewise. - * tree-ssa-threadedge.c: Likewise. - * tree-ssa-threadupdate.c: Likewise. - * tree-ssa-uncprop.c: Likewise. - * tree-ssa-uninit.c: Likewise. - * tree-ssa.c: Likewise. - * tree-stdarg.c: Likewise. - * tree-switch-conversion.c: Likewise. - * tree-tailcall.c: Likewise. - * tree-vect-data-refs.c: Likewise. - * tree-vect-generic.c: Likewise. - * tree-vect-loop-manip.c: Likewise. - * tree-vect-loop.c: Likewise. - * tree-vect-patterns.c: Likewise. - * tree-vect-slp.c: Likewise. - * tree-vect-stmts.c: Likewise. - * tree-vectorizer.c: Likewise. - * tree-vrp.c: Likewise. - * tree.c: Likewise. - * tsan.c: Likewise. - * value-prof.c: Likewise. - * vtable-verify.c: Likewise. - -2013-11-13 Steven Bosscher - - * gimple-ssa-isolate-paths.c (pass_isolate_erroneous_paths): Comment - fix. - -2013-11-13 Jeff Law - - * PR middle-end/59119 - * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behaviour): New - function, extracted from gimple_ssa_isolate_erroneous_paths. - (find_explicit_erroneous_behaviour): Similarly. - (insert_trap_and_remove_trailing_statements): Remove statements - in reverse order. - -2013-11-13 Steven Bosscher - - * cfgrtl.c (can_fallthru): Reorder code to move tablejump check up. - Make that check explicit. BB_HEAD cannot be NULL, remove check for it. - * haifa-sched.c (ready_remove_first_dispatch): Check INSN_P before - looking at INSN_CODE. - * reload1.c (delete_dead_insn) Do not expect JUMP_TABLE_DATA to be an - active_insn_p object, respect basic block boundaries. - * reorg.c (follow_jumps): Use invariant that JUMP_TABLE_DATA always - follows immediately after the jump table data label. - * config/nds32/nds32.c (nds32_output_casesi_pc_relative): Likewise. - * config/sh/sh.c (barrier_align): Likewise. Rearrange code such - that JUMP_TABLE_DATA is not expected to be an active_insn_p object. - -2013-11-13 Teresa Johnson - - PR ipa/58862 - * predict.c (drop_profile): Error is currently too strict. - (handle_missing_profiles): Pass call_count to drop_profile. - -2013-11-13 Teresa Johnson - - PR ipa/58862 - * ipa-inline.c (edge_badness): Fix overflow. - -2013-11-13 Vladimir Makarov - - PR rtl-optimization/59036 - * ira-color.c (struct allocno_color_data): Add new members - first_thread_allocno, next_thread_allocno, thread_freq. - (sorted_copies): New static var. - (allocnos_conflict_by_live_ranges_p, copy_freq_compare_func): Move up. - (allocno_thread_conflict_p, merge_threads) - (form_threads_from_copies, form_threads_from_bucket) - (form_threads_from_colorable_allocno, init_allocno_threads): New - functions. - (bucket_allocno_compare_func): Add comparison by thread frequency - and threads. - (add_allocno_to_ordered_bucket): Rename to - add_allocno_to_ordered_colorable_bucket. Remove parameter. - (push_only_colorable): Call form_threads_from_bucket. - (color_pass): Call init_allocno_threads. Use - consideration_allocno_bitmap instead of coloring_allocno_bitmap - for nuillify allocno color data. - (ira_initiate_assign, ira_finish_assign): Allocate/free sorted_copies. - (coalesce_allocnos): Use static sorted copies. - -2013-11-13 Jakub Jelinek - - * passes.c (execute_todo): Don't call do_per_function if - flags are zero. - (execute_one_ipa_transform_pass, execute_one_pass): Don't call - execute_function_dump if dump_file is NULL. - -2013-11-13 Martin Jambor - - * cgraph.c (cgraph_get_create_node): Do what - cgraph_get_create_real_symbol_node used to do. - (cgraph_get_create_real_symbol_node): Removed. Changed all users to - call cgraph_get_create_node. - * cgraph.h (cgraph_get_create_real_symbol_node): Removed. - * lto-streamer-in.c (input_function): Call cgraph_get_node instead of - cgraph_get_create_node. Assert we get a node. - -2013-11-13 Tejas Belagod - - * config/aarch64/aarch64-simd.md (vec_extract): New. - -2013-11-13 Tejas Belagod - - * config/aarch64/aarch64-simd.md (vec_set): Add w -> w option to - the constraint. - -2013-11-13 Eric Botcazou - - * cfgexpand.c (expand_used_vars): Allocate space for partitions based - on PARM_DECLs or RESULT_DECLs only if they are ignored for debug info - or if optimization is enabled. - * tree-ssa-coalesce.c (coalesce_ssa_name): If optimization is disabled, - require that all the names based on a PARM_DECL or a RESULT_DECL that - isn't ignored for debug info be coalesced. - -2013-11-13 Jan-Benedict Glaw - - * config/c6x/c6x.c: Include "gimple-expr.h". - -2013-11-13 Richard Biener - - * gimple-streamer-out.c (output_gimple_stmt): Also wrap - decls in ADDR_EXPR operands inside a MEM_REF and optimize that. - * gimple-streamer-in.c (input_gimple_stmt): Remove now dead code - dealing with type mismatches inside component reference chains. - -2013-11-13 Marc Glisse - - PR tree-optimization/59077 - * ipa-pure-const.c (better_state): Update *state. - -2013-11-13 Christophe Lyon - - * config/aarch64/aarch64.h (FRAME_GROWS_DOWNWARD): Define to 1. - * config/aarch64/aarch64.c (aarch64_initial_elimination_offset): - Update offset calculations. - -2013-11-13 Eric Botcazou - - PR ada/35998 - * dwarf2out.c (add_byte_size_attribute): Also use int_size_in_bytes - for fields. Do not add the attribute if the size is negative. - -2013-11-13 Kyrylo Tkachov - - * config/arm/arm.c: Include aarch-cost-tables.h. - (generic_extra_costs): Move from here... - * config/arm/aarch-cost-tables.h: ... To here. New file. - -2013-11-13 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/i386.c (ix86_print_operand): Support z-masking. - * config/i386/predicate.md (const_0_to_4_operand): New. - (const_0_to_5_operand): Ditto. - * config/i386/sse.md (UNSPEC_COMPRESS): New. - (UNSPEC_COMPRESS_STORE): Ditto. - (UNSPEC_EXPAND): Ditto. - (UNSPEC_EMBEDDED_ROUNDING): Ditto. - (define_mode_attr ssescalarsize): Ditto. - (avx512f_load_mask): Ditto. - (avx512f_store_mask): Ditto. - (avx512f_storedqu_mask): Ditto. - (avx512f_vmcmp3_mask): Ditto. - (avx512f_fmadd__mask): Ditto. - (avx512f_fmadd__mask3): Ditto. - (avx512f_fmsub__mask): Ditto. - (avx512f_fmsub__mask3): Ditto. - (avx512f_fnmadd__mask): Ditto. - (avx512f_fnmadd__mask3): Ditto. - (avx512f_fnmsub__mask): Ditto. - (avx512f_fnmsub__mask3): Ditto. - (avx512f_fmaddsub__mask): Ditto. - (avx512f_fmaddsub__mask3): Ditto. - (avx512f_fmsubadd__mask): Ditto. - (avx512f_fmsubadd__mask3): Ditto. - (vec_unpacku_float_lo_v16si): Ditto. - (avx512f_vextract32x4_mask): Ditto. - (avx512f_vextract32x4_1_maskm): Ditto. - (avx512f_vextract64x4_mask): Ditto. - (vec_extract_lo__maskm): Ditto. - (vec_extract_hi__maskm): Ditto. - (avx512f_vternlog_mask): Ditto. - (avx512f_shufps512_mask): Ditto. - (avx512f_fixupimm_mask): Ditto. - (avx512f_shufpd512_mask): Ditto. - (avx512f_2_mask): Ditto. - (avx512f_v8div16qi2_mask/trunc): Ditto. - (*avx512f_v8div16qi2_store_mask): Ditto. - (ashr3): Ditto. - (avx512f_vinsert32x4_mask): Ditto. - (avx512f_vinsert64x4_mask): Ditto. - (avx512f_shuf_64x2_mask): Ditto. - (avx512f_shuf_32x4_mask): Ditto. - (avx512f_pshufdv3_mask): Ditto. - (avx512f_perm_mask): Ditto. - (avx512f_vpermi2var3_mask): Ditto. - (avx512f_vpermt2var3_mask): Ditto. - (avx512f_compress_mask): Ditto. - (avx512f_compressstore_mask): Ditto. - (avx512f_expand_mask): Ditto. - (_loadu): Extend - to support masking. - (avx512f_storeu512_mask): Ditto. - (3): Ditto. - (*3): Ditto. - (mul3): Ditto. - (*mul3): Ditto. - (_div3): Ditto. - (rcp14): Ditto. - (_sqrt2): Ditto. - (rsqrt14): Ditto. - (3/smaxmin): Ditto. - (*3_finite/smaxmin): Ditto. - (*3/smaxmin): Ditto. - (float2): Ditto. - (ufloatv16siv16sf2): Ditto. - (avx512f_fix_notruncv16sfv16si): Ditto. - (avx512f_ufix_notruncv16sfv16si): Ditto. - (fix_truncv16sfv16si2): Ditto. - (float2): Ditto. - (ufloatv8siv8df): Ditto. - (avx512f_cvtpd2dq512): Ditto. - (avx512f_ufix_notruncv8dfv8si): Ditto. - (fix_truncv8dfv8si2): Ditto. - (avx512f_cvtpd2ps512): Ditto. - (_cvtps2pd): Ditto. - (avx512f_unpckhps512): Ditto. - (avx512f_unpcklps512): Ditto. - (avx512f_movshdup512): Ditto. - (avx512f_movsldup512): Ditto. - (avx512f_vextract32x4_1): Ditto. - (vec_extract_lo_): Ditto. - (vec_extract_hi_): Ditto. - (avx512f_unpckhpd512): Ditto. - (avx512f_movddup512): Ditto. - (avx512f_unpcklpd512): Ditto. - (*avx512f_unpcklpd512): Ditto. - (*avx512f_vmscalef): Ditto. - (avx512f_scalef): Ditto. - (avx512f_getexp): Ditto. - (avx512f_align): Ditto. - (avx512f_rndscale): Ditto. - (avx512f_shufps512_1): Ditto. - (avx512f_shufpd512_1): Ditto. - (3): Ditto. - (*3): Ditto. - (vec_widen_umult_even_v16si): Ditto. - (*vec_widen_umult_even_v16si): Ditto. - (vec_widen_smult_even_v16si): Ditto. - (*vec_widen_smult_even_v16si): Ditto. - (mul3): Ditto. - (*_mul3): Ditto. - (3): Ditto. - (avx512f_v/rotate): Ditto. - (avx512f_): Ditto. - (3/maxmin): Ditto. - (*avx2_3/maxmin): Ditto. - (_andnot3): Ditto. - (*andnot3): Ditto. - (3/any_logic): Ditto. - (avx512f_interleave_highv16si): Ditto. - (avx512f_interleave_lowv16si): Ditto. - (avx512f_vinsert32x4_1): Ditto. - (vec_set_lo_): Ditto. - (vec_set_hi_): Ditto. - (avx512f_shuf_64x2_1): Ditto. - (avx512f_shuf_32x4_1): Ditto. - (avx512f_pshufd_1): Ditto. - (abs2): Ditto. - (avx512f_v16qiv16si2): Ditto. - (avx512f_v16hiv16si2/any_extend): Ditto. - (avx512f_v8qiv8di2/any_extend): Ditto. - (avx512f_v8hiv8di2/any_extend): Ditto. - (avx512f_v8siv8di2/any_extend): Ditto. - (avx512er_exp2): Ditto. - (avx512er_rcp28): Ditto. - (avx512er_rsqrt28): Ditto. - (_permvar): Ditto. - (_perm_1): Ditto. - (avx512f_vec_dup): Ditto. - (avx512f_broadcast/V16FI): Ditto. - (avx512f_broadcast/V8FI): Ditto. - (avx512f_vec_dup_gpr): Ditto. - (avx512f_vec_dup_mem): Ditto. - (_vpermil/VF2): Ditto. - (_vpermil/VF1): Ditto. - (*_vpermilp): Ditto. - (_vpermilvar3): Ditto. - (_ashrv): Ditto. - (_v): Ditto. - (avx512f_vcvtph2ps512): Ditto. - (avx512f_vcvtps2ph512): Ditto. - (avx512f_getmant): Ditto. - (clz2): Ditto. - (conflict): Ditto. - (*srcp14): Remove visibility. - (*rsqrt14): Ditto. - (*fma_fmsub_): Ditto. - (*fma_fnmadd_): Ditto. - (*avx512f_rndscale): Ditto. - * config/i386/subst.md: New file. - -2013-11-13 Joseph Myers - - * doc/extend.texi (Statement Exprs, Typeof): Discuss __auto_type. - * ginclude/stdatomic.h (kill_dependency, atomic_store_explicit) - (atomic_load_explicit, atomic_exchange_explicit) - (atomic_compare_exchange_strong_explicit) - (atomic_compare_exchange_weak_explicit): Use __auto_type to - declare variable initialized with PTR argument. - -2013-11-12 Jeff Law - - * tree-ssa-threadedge.c (thread_around_empty_blocks): New argument - backedge_seen_p. Set, use and pass it to children appropriately. - (thread_through_normal_block): Similarly. - (thread_across_edge): Similarly. - - * gimple-ssa-isolate-paths.c (check_loadstore): Mark discovered - memory references as volatile. - (insert_trap_and_remove_trailing_statements): Fix comment. - -2013-11-12 Vladimir Makarov - - PR other/58712 - * ira-costs.c (record_operand_costs): Check operands number for - the single set. - -2013-11-12 Michael Meissner - - PR target/59054 - * config/rs6000/rs6000.md (movdi_internal32): Eliminate - constraints that would allow DImode into the traditional Altivec - registers, but cause undesirable code generation when loading 0 as - a constant. - (movdi_internal64): Likewise. - (cmp_fpr): Do not use %x for CR register output. - (extendsfdf2_fpr): Fix constraints when -mallow-upper-df and - -mallow-upper-sf debug switches are used. - -2013-11-12 Andrew MacLeod - - * gimple-expr.h (create_tmp_var_name, create_tmp_var_raw, - create_tmp_var, create_tmp_reg, mark_addressable, is_gimple_reg_rhs): - Relocate prototypes from gimple.h. - * gimplify.h: New File. Relocate some prototypes from gimple.h here. - (gimple_predicate, enum fallback, enum gimplify_status): Relocate - from gimple.h. - * gimple.h: Move some prototypes to gimplify.h. - (gimple_predicate, enum fallback, enum gimplify_status): Move to - gimplify.h. - (gimple_do_not_emit_location_p, gimple_set_do_not_emit_location): - Relocate from gimpify.c. - * gimple-expr.c (remove_suffix, tmp_var_id_num, create_tmp_var_name, - create_tmp_var_raw, create_tmp_var, create_tmp_reg, mark_addressable, - is_gimple_reg_rhs) Relocate from gimplify.c. - * gimplify.c (mark_addressable): Move to gimple-expr.c. - (gimple_seq_add_stmt_without_update): Move to gimple.c. - (remove_suffix, tmp_var_id_num, create_tmp_var_name, - create_tmp_var_raw, create_tmp_var, create_tmp_reg, - is_gimple_reg_rhs): Move to gimple-expr.c. - (should_carry_location_p): Move to gimple.c. - (gimple_do_not_emit_location_p, gimple_set_do_not_emit_location): Move - to gimple.h. - (annotate_one_with_location, annotate_all_with_location_after, - annotate_all_with_location): Move to gimple.c. - (compare_case_labels, sort_case_labels, - preprocess_case_label_vec_for_gimple): Move to gimple.c. - (rhs_predicate_for): Make static. - (gimplify_assign): Relocate from gimple.c. - * gimple.c (gimplify_assign): Move to gimplify.c. - (gimple_seq_add_stmt_without_update, should_carry_location_p, - annotate_one_with_location, annotate_all_with_location_after, - annotate_all_with_location, compare_case_labels, sort_case_labels, - preprocess_case_label_vec_for_gimple): Relocate from gimplify.c. - * tree.h (unshare_expr, unshare_expr_without_location, - mark_addressable): Move prototypes to gimplify.h. - * Makefile.in (GTFILES): gimple-expr.c now has the GTY tag for - tmp_var_id_num - * asan.c: Include gimplify.h rather than gimple.h. - * cfgloopmanip.c: Likewise. - * cgraphunit.c: Likewise. - * cilk-common.c: Likewise. - * dwarf2out.c: Dont include gimple.h. - * fold-const.c: Include gimplify.h rather than gimple.h. - * function.c: Likewise. - * gimple-fold.c: Likewise. - * gimple-ssa-strength-reduction.c: Likewise. - * graphite-clast-to-gimple.c: Likewise. - * graphite-sese-to-poly.c: Likewise. - * ipa-prop.c: Likewise. - * ipa-split.c: Likewise. - * ipa.c: Likewise. - * langhooks.c: Dont include gimple.h. - * loop-init.c: Include gimplify.h rather than gimple.h. - * omp-low.c: Likewise. - * sese.c: Likewise. - * stor-layout.c: Likewise. - * targhooks.c: Likewise. - * trans-mem.c: Likewise. - * tree-affine.c: Likewise. - * tree-cfg.c: Likewise. - * tree-cfgcleanup.c: Likewise. - * tree-complex.c: Likewise. - * tree-if-conv.c: Likewise. - * tree-inline.c: Likewise. - * tree-iterator.c: Likewise. - * tree-loop-distribution.c: Likewise. - * tree-nested.c: Likewise. - * tree-parloops.c: Likewise. - * tree-predcom.c: Likewise. - * tree-profile.c: Likewise. - * tree-scalar-evolution.c: Likewise. - * tree-sra.c: Likewise. - * tree-ssa-address.c: Likewise. - * tree-ssa-ccp.c: Likewise. - * tree-ssa-dce.c: Likewise. - * tree-ssa-forwprop.c: Likewise. - * tree-ssa-ifcombine.c: Likewise. - * tree-ssa-loop-im.c: Likewise. - * tree-ssa-loop-ivopts.c: Likewise. - * tree-ssa-loop-manip.c: Likewise. - * tree-ssa-loop-niter.c: Likewise. - * tree-ssa-loop-prefetch.c: Likewise. - * tree-ssa-loop-unswitch.c: Likewise. - * tree-ssa-math-opts.c: Likewise. - * tree-ssa-phiopt.c: Likewise. - * tree-ssa-phiprop.c: Likewise. - * tree-ssa-pre.c: Likewise. - * tree-ssa-propagate.c: Likewise. - * tree-ssa-reassoc.c: Likewise. - * tree-ssa-sccvn.c: Likewise. - * tree-ssa-strlen.c: Likewise. - * tree-ssa.c: Likewise. - * tree-switch-conversio: Likewise.n.c - * tree-tailcall.c: Likewise. - * tree-vect-data-refs.c: Likewise. - * tree-vect-generic.c: Likewise. - * tree-vect-loop-manip.c: Likewise. - * tree-vect-loop.c: Likewise. - * tree-vect-patterns.c: Likewise. - * tree-vect-stmts.c: Likewise. - * tsan.c: Likewise. - * value-prof.c: Likewise. - * config/aarch64/aarch64.c: Include gimplify.h instead of gimple.h. - * config/alpha/alpha.c: Likewise. - * config/darwin.c: Likewise. - * config/i386/i386.c: Likewise. - * config/ia64/ia64.c: Likewise. - * config/mep/mep.c: Likewise. - * config/mips/mips.c: Likewise. - * config/rs6000/rs6000.c: Likewise. - * config/s390/s390.c: Likewise. - * config/sh/sh.c: Likewise. - * config/sparc/sparc.c: Likewise. - * config/spu/spu.c: Likewise. - * config/stormy16/stormy16.c: Likewise. - * config/tilegx/tilegx.c: Likewise. - * config/tilepro/tilepro.c: Likewise. - * config/xtensa/xtensa.c: Likewise. - -2013-11-12 Adam Butcher - - * tree.c (grow_tree_vec_stat): New function ... - * tree.h (grow_tree_vec_stat) (grow_tree_vec): ... and its declaration - and macro front-end. - -2013-11-12 Marek Polacek - - * final.c (update_alignments): Initialize label to NULL_RTX. - -2013-11-12 Jeff Law - - * gimple-ssa-isolate-paths.c (check_loadstore): New function. - (insert_trap_and_remove_trailing_statements): New argument OP which - is the NULL pointer. Emit the trap after the load/store through - the NULL pointer. Simplify the RHS of a store through a NULL pointer - when trivial to do so. - (isolate_path): Corresponding changes. - (gimple_ssa_isolate_erroneous_path): Likewise. - -2013-11-12 Teresa Johnson - Jan Hubicka - - * predict.c (drop_profile): New function. - (handle_missing_profiles): Ditto. - (counts_to_freqs): Don't overwrite estimated frequencies - when function has no profile counts. - * predict.h (handle_missing_profiles): Declare. - * tree-inline.c (freqs_to_counts): New function. - (copy_cfg_body): Invoke freqs_to_counts as needed. - * tree-profile.c (tree_profiling): Invoke handle_missing_profiles. - -2013-11-12 H.J. Lu - - PR target/59088 - * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL): - Set for m_HASWELL. - (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Set for m_HASWELL. - -2013-11-12 H.J. Lu - - PR target/59084 - * config/i386/i386.c (ix86_option_override_internal): Check - X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL and - X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL for - MASK_AVX256_SPLIT_UNALIGNED_LOAD and - MASK_AVX256_SPLIT_UNALIGNED_STORE. - - * config/i386/x86-tune.def (X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL): - Clear m_COREI7_AVX and update comments. - (X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL): Likewise. - -2013-11-12 Martin Jambor - - PR rtl-optimization/10474 - * ira.c (interesting_dest_for_shprep): New function. - (split_live_ranges_for_shrink_wrap): Likewise. - (find_moveable_pseudos): Move calculation of dominance info, - df_analysios and the final anlyses to... - (ira): ...here, call split_live_ranges_for_shrink_wrap. - -2013-11-12 Bin Cheng - - * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Refactor the code. - Handle type conversion. - -2013-11-11 Martin Liska - Jan Hubicka - - * cgraph.c (dump_cgraph_node): Profile dump added. - * cgraph.h (struct cgraph_node): New time profile variable added. - * cgraphclones.c (cgraph_clone_node): Time profile is cloned. - * gcov-io.h (gcov_type): New profiler type introduced. - * ipa-profile.c (lto_output_node): Streaming for time profile added. - (input_node): Time profiler is read from LTO stream. - * predict.c (maybe_hot_count_p): Hot prediction changed. - * profile.c (instrument_values): New case for time profiler added. - (compute_value_histograms): Read of time profile. - * tree-pretty-print.c (dump_function_header): Time profiler is dumped. - * tree-profile.c (init_ic_make_global_vars): Time profiler - function added. - (gimple_init_edge_profiler): TP function instrumentation. - (gimple_gen_time_profiler): New. - * value-prof.c (gimple_add_histogram_value): Support for time profiler - added. - (dump_histogram_value): TP type added to dumps. - (visit_hist): More sensitive check that takes TP into account. - (gimple_find_values_to_profile): TP instrumentation. - * value-prof.h (hist_type): New histogram type added. - (struct histogram_value_t): Pointer to struct function added. - * libgcc/Makefile.in: New GCOV merge function for TP added. - * libgcov.c: function_counter variable introduced. - (_gcov_merge_time_profile): New. - (_gcov_time_profiler): New. - -2013-11-11 Marc Glisse - Jeff Law - - * tree-ssa-alias.c (stmt_kills_ref_p_1): Use - ao_ref_init_from_ptr_and_size for builtins. - -2013-11-11 Uros Bizjak - H.J. Lu - - PR target/58853 - * config/i386/x86-tune.def - (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Rename from - TARGET_MISALIGNED_MOVE_STRING_PROLOGUES. - * config/i386/i386.h - (TARGET_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Rename from - TARGET_MISALIGNED_MOVE_STRING_PROLOGUES_EPILOGUES. Update for renamed - X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES. - * config/i386/i386.c (ix86_expand_set_or_movmem): Use - TARGET_MISALIGNED_MOVE_STRING_PRO_EPILOGUES to calculate - misaligned_prologue_used. Check that - desired_aling <= epilogue_size_needed. - -2013-11-11 Cong Hou - - PR tree-optimization/59050 - * tree-vect-data-refs.c (comp_dr_addr_with_seg_len_pair): Bug fix. - -2013-11-11 Joern Rennecke - - PR middle-end/59049 - * expmed.c (emit_store_flag): Fail for const-const comparison. - -2013-11-11 Tristan Gingold - Eric Botcazou - - * tree.h (CONSTRUCTOR_NO_CLEARING): Define. - * tree-core.h (CONSTRUCTOR_NO_CLEARING): Document it. - * tree.def (CONSTRUCTOR): Likewise. - * doc/generic.texi (CONSTRUCTOR): Likewise. Update description. - * gimplify.c (gimplify_init_constructor): Do not clear the object when - the constructor is incomplete and CONSTRUCTOR_NO_CLEARING is set. - -2013-11-11 Basile Starynkevitch - - * toplev.c (toplev_main): Move PLUGIN_FINISH invocation before - diagnostic_finish. - -2013-11-11 Kyrylo Tkachov - - * config/arm/arm.c (arm_new_rtx_costs): Return after handling - comparisons. - -2013-11-11 Joern Rennecke - - * config/arc/arc.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define. - -2013-11-08 Jeff Law - - * tree-ssa-threadupdate.c (mark_threaded_blocks): Truncate jump - threading paths first, then perform PHI node checks if applicable. - -2013-11-10 Karlson2k - Kai Tietz - - PR plugin/52872 - * configure.ac: Adding for exported symbols check - and for rdynamic-check executable-extension. - * configure: Regenerated. - -2013-11-10 Uros Bizjak - - * mode-switching.c (optimize_mode_switching): Mark block as - nontransparent, if last_mode at block exit is different from no_mode. - -2013-11-09 Jan-Benedict Glaw - - * function.c (NAME__MAIN): Move to... - * cfgexpand.c (NAME__MAIN): ...here. - -2013-11-09 Richard Sandiford - - * target.def (can_use_doloop_p): New hook. - * doc/tm.texi.in (TARGET_CAN_USE_DOLOOP_P): Add. - * doc/tm.texi: Regenerate. - * doc/md.texi (doloop_begin, doloop_end): Update documentation. - * hooks.h (hook_bool_dint_dint_uint_true): Declare. - * hooks.c (hook_bool_dint_dint_uint_true): New function. - * targhooks.h (can_use_doloop_if_innermost): Declare. - * targhooks.c (can_use_doloop_if_innermost): New function. - * target.h: Include double-int.h. - * loop-doloop.c (doloop_optimize): Call targetm.can_use_doloop_p. - Remove iteration count, maximum iteration count, loop depth and - enter-at-top inputs from doloop_begin and doloop_end. - * config/arc/arc.md (doloop_begin, doloop_end): Update for new - interface. - * config/arc/arc.c (arc_can_use_doloop_p): New function. - (TARGET_CAN_USE_DOLOOP_P): Define. - * config/arm/thumb2.md (doloop_end): Update for new interface. - * config/arm/arm.c (TARGET_CAN_USE_DOLOOP_P): Define. - * config/bfin/bfin.md (doloop_end): Update for new interface. - * config/bfin/bfin.c (bfin_can_use_doloop_p): New function. - (TARGET_CAN_USE_DOLOOP_P): Define. - * config/c6x/c6x.md (doloop_end): Update for new interface. - * config/ia64/ia64.md (doloop_end): Update for new interface. - * config/ia64/ia64.c (TARGET_CAN_USE_DOLOOP_P): Define. - * config/mep/mep.md (doloop_begin, doloop_end): Update for new - interface. - * config/mep/mep.c (mep_emit_doloop): Likewise. - (TARGET_CAN_USE_DOLOOP_P): Define. - * config/rs6000/rs6000.md (doloop_end): Update for new interface. - * config/rs6000/rs6000.c (TARGET_CAN_USE_DOLOOP_P): Define. - * config/s390/s390.md (doloop_end): Update for new interface. - * config/sh/sh.md (doloop_end): Likewise. - * config/spu/spu.md (doloop_end): Likewise. - * config/spu/spu.c (TARGET_CAN_USE_DOLOOP_P): Define. - * config/tilegx/tilegx.md (doloop_end): Update for new interface. - * config/tilegx/tilegx.c (TARGET_CAN_USE_DOLOOP_P): Define. - * config/tilepro/tilepro.md (doloop_end): Update for new interface. - * config/tilepro/tilepro.c (TARGET_CAN_USE_DOLOOP_P): Define. - * config/v850/v850.md (doloop_begin, doloop_end): Update for new - interface. - * config/v850/v850.c (TARGET_CAN_USE_DOLOOP_P): Define. - -2013-11-08 H.J. Lu - - PR other/59055 - * doc/extend.texi: Move Cilk Plus Builtins node before Other - Builtins node. - -2013-11-08 Andrew MacLeod - Joseph Myers - - * ginclude/stdatomic.h: New file. - * Makefile.in (USER_H): Add stdatomic.h. - -2013-11-08 Kyrylo Tkachov - - * config/arm/arm.c (arm_new_rtx_costs): Break after handling - comparisons. - -2013-11-08 Jeff Law - - * tree-ssa-threadupdate.h (delete_thread_path): Declare. - * tree-ssa-threadupdate.c (delete_thread_path): New function. - (ssa_redirect_edges, thread_block_1): Use it. - (thread_through_loop_header, mark_threaded_blocks): Likewise. - (thread_through_all_blocks, register_jump_thread): Likewise. - * tree-ssa-threadedge.c (thread_across_edge): Likewise. - -2013-11-08 James Greenhalgh - - * config/arm/aarch-common.c - (search_term): New typedef. - (shift_rtx_costs): New array. - (arm_rtx_shift_left_p): New. - (arm_find_sub_rtx_with_search_term): Likewise. - (arm_find_sub_rtx_with_code): Likewise. - (arm_early_load_addr_dep): Add sanity checking. - (arm_no_early_alu_shift_dep): Likewise. - (arm_no_early_alu_shift_value_dep): Likewise. - (arm_no_early_mul_dep): Likewise. - (arm_no_early_store_addr_dep): Likewise. - -2013-11-08 Richard Biener - - PR tree-optimization/59047 - * tree-predcom.c (ref_at_iteration): Handle bitfield accesses properly. - -2013-11-08 Ilya Enkovich - - * common.opt (fcheck-pointer-bounds): Move to ... - * c-family/c.opt: ... here. - * langhooks-def.h (LANG_HOOKS_CHKP_SUPPORTED): Remove. - (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CHKP_SUPPORTED. - * langhooks.h (lang_hooks): Remove chkp_supported field. - * toplev.c (process_options): Remove chkp_supported check. - -2013-11-08 Richard Biener - - PR tree-optimization/59038 - PR tree-optimization/58955 - * tree-loop-distribution.c (pg_add_dependence_edges): Revert - previous change. Handle known dependences correctly. - -2013-11-08 Tom de Vries - - * config/rs6000/t-xilinx: Remove duplicate contents. - -2013-11-07 Andrew MacLeod - Joseph Myers - - * tree-core.h (enum cv_qualifier): Add TYPE_QUAL_ATOMIC. - (enum tree_index): Add TI_ATOMICQI_TYPE, TI_ATOMICHI_TYPE, - TI_ATOMICSI_TYPE, TI_ATOMICDI_TYPE and TI_ATOMICTI_TYPE. - (struct tree_base): Add atomic_flag field. - * tree.h (TYPE_ATOMIC): New accessor macro. - (TYPE_QUALS, TYPE_QUALS_NO_ADDR_SPACE): Add TYPE_QUAL_ATOMIC. - (TYPE_QUALS_NO_ADDR_SPACE_NO_ATOMIC): New macro. - (atomicQI_type_node, atomicHI_type_node, atomicSI_type_node) - (atomicDI_type_node, atomicTI_type_node): New macros for type nodes. - * tree.c (set_type_quals): Set TYPE_ATOMIC. - (find_atomic_core_type): New function. - (build_qualified_type): Adjust alignment for qualified types. - (build_atomic_base): New function - (build_common_tree_nodes): Build atomicQI_type_node, - atomicHI_type_node, atomicSI_type_node, atomicDI_type_node and - atomicTI_type_node. - * print-tree.c (print_node): Print atomic qualifier. - * tree-pretty-print.c (dump_generic_node): Print atomic type attribute. - * target.def (atomic_assign_expand_fenv): New hook. - * doc/tm.texi.in (TARGET_ATOMIC_ASSIGN_EXPAND_FENV): New @hook. - * doc/tm.texi: Regenerate. - * targhooks.c (default_atomic_assign_expand_fenv): New function. - * targhooks.h (default_atomic_assign_expand_fenv): Declare. - * sync-builtins.def (__atomic_feraiseexcept): New built-in function. - * config/i386/i386-builtin-types.def (VOID_FTYPE_PUSHORT): New - function type. - * config/i386/i386.c (enum ix86_builtins): Add - IX86_BUILTIN_FNSTENV, IX86_BUILTIN_FLDENV, IX86_BUILTIN_FNSTSW and - IX86_BUILTIN_FNCLEX. - (bdesc_special_args): Add __builtin_ia32_fnstenv, - __builtin_ia32_fldenv, __builtin_ia32_fnstsw and __builtin_ia32_fnclex. - (ix86_expand_builtin): Handle the new built-in functions. - (ix86_atomic_assign_expand_fenv): New function. - (TARGET_ATOMIC_ASSIGN_EXPAND_FENV): New macro. - * config/i386/i386.md (UNSPECV_FNSTENV, UNSPECV_FLDENV) - (UNSPECV_FNSTSW, UNSPECV_FNCLEX): New unspecs. - (fnstenv, fldenv, fnstsw, fnclex): New insns. - -2013-11-07 Steve Ellcey - - * config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add fp64 directory. - * config/mips/t-mti-linux (MULTILIB_OPTIONS): Add -mfp64 flag. - (MULTILIB_DIRNAMES): Add fp64 directory. - (MULTILIB_EXCEPTIONS): Add new exclusions. - -2013-11-07 Aldy Hernandez - - * gimplify.c (gimple_regimplify_operands): Do not set - SSA_NAME_DEF_STMT. - * graphite-sese-to-poly.c (remove_simple_copy_phi): Same. - (rewrite_close_phi_out_of_ssa): Same. - (rewrite_phi_out_of_ssa): Same. - (rewrite_degenerate_phi): Same. - (handle_scalar_deps_crossing_scop_limits): Same. - * tree-if-conv.c (predicate_scalar_phi): Same. - * tree-parloops.c (create_loads_for_reductions): Same. - (create_final_loads_for_reduction): Same. - (create_loads_and_stores_for_name): Same. - (transform_to_exit_first_loop): Same. - (create_parallel_loop): Same. - * tree-ssa-loop-im.c - (move_computations_dom_walker::before_dom_children): Same. - * tree-ssa-loop-manip.c (rewrite_phi_with_iv): Same. - * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): Same. - * tree-ssa-propagate.c (substitute_and_fold): Same. - * tree-vect-loop.c (vect_finalize_reduction): Same. - * tree-vect-stmts.c (vectorizable_call): Same. - -2013-11-07 Mike Stump - - * config/pdp11/pdp11.c: Include dbxout.h. - * config/picochip/picochip.c: Likewise. - -2013-11-07 Cong Hou - - PR tree-optimization/56764 - * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): - Combine alias checks if it is possible to amortize the runtime - overhead. Return the number of alias checks after merging. - * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): - Use the function vect_create_cond_for_alias_checks () to check - the number of alias checks. - -2013-11-07 Jeff Law - - * varpool.c (ctor_for_folding): Fix typo in comment. - -2013-11-07 Joern Rennecke - - * config/arc/arc.c (arc_ifcvt): Use commutativity, e.g.: - reg_a := reg_b + reg_a ==> reg_a := reg_a + reg_b - -2013-11-07 Jeff Law - - * doc/invoke.texi (-fisolate-erroneous-paths): Document. - - * gimple-ssa-isolate-paths.c (gate_isolate_erroneous_paths): - No longer check if we have __builtin_trap, assume it's available. - -2013-11-07 Diego Novillo - - * attribs.c (lookup_scoped_attribute_spec): Make static. - (get_attribute_namespace): Likewise. - * builtins.c (more_const_call_expr_args_p): Move from tree.h. - (validate_arglist): Move earlier in the file. Make static. - (expand_stack_restore): Move from stmt.c - (expand_stack_save): Move from stmt.c - (rewrite_call_expr_array): Move earlier in the file. - (rewrite_call_expr_valist): Likewise. - * cfgexpand.c: Include hard-reg-set.h before tree.h - Include recog.h. - Include output.h. - (expand_asm_loc): Move from stmt.c. - (n_occurrences): Move from stmt.c. - (check_operand_nalternatives): Move from stmt.c. - (tree_conflicts_with_clobbers_p): Move from stmt.c. - (expand_asm_operands): Move from stmt.c - (expand_asm_stmt): Move from stmt.c - (expand_computed_goto): Move from stmt.c - (expand_goto): Move from stmt.c - (expand_null_return_1): Move from stmt.c - (expand_null_return): Move from stmt.c - (expand_value_return): Move from stmt.c - (expand_return): Move from stmt.c - (expand_main_function): Move from function.c - (stack_protect_prologue): Move from function.c - * cgraphclones.c (build_function_type_skip_args): Move from tree.c. - (build_function_decl_skip_args): Move from tree.c. - * explow.c (tree_expr_size): Move from tree.c. - * expr.c (addr_expr_of_non_mem_decl_p): Remove. - (fields_length): Move from tree.c. - * fold-const.c (size_low_cst): Move from tree.c. - (tree_expr_nonzero_warnv_p): Make static. Move earlier in the file. - (tree_expr_nonzero_p): Make static. Move earlier in the file. - (fold_build3_initializer_loc): Remove. - (tree_invalid_nonnegative_warnv_p): Make static. - * function.c (expand_main_function): Move to cfgexpand.c. - (stack_protect_prologue): Move to cfgexpand.c. - (set_insn_locations): Move earlier in the file. - * gimple-fold.c: Include langhooks.h. - (truth_type_for): Move from tree.c. - * print-tree.c (print_vec_tree): Remove. - * stmt.c (expand_computed_goto): Move to cfgexpand.c. - (expand_goto): Move to cfgexpand.c. - (n_occurrences): Move to cfgexpand.c. - (expand_asm_loc): Move to cfgexpand.c - (tree_conflicts_with_clobbers_p): Move to cfgexpand.c. - (expand_asm_operands): Move to cfgexpand.c. - (expand_asm_stmt): Move to cfgexpand.c. - (check_operand_nalternatives): Move to cfgexpand.c - (expand_null_return): Move to cfgexpand.c. - (expand_value_return): Move to cfgexpand.c. - (expand_null_return_1): Move to cfgexpand.c. - (expand_return): Move to cfgexpand.c. - (expand_stack_save): Move to builtins.c. - (expand_stack_restore): Move to builtins.c - * symtab.c: Include output.h. - (decl_assembler_name_hash): Move from tree.c. - (decl_assembler_name_equal): Move from tree.c. - * trans-mem.c (is_tm_safe_or_pure): Move from tree.h. - * tree-eh.c (in_array_bounds_p): Move from tree.c. - (range_in_array_bounds_p): Move from tree.c. - * tree-object-size.c (fini_object_sizes): Make static. - * tree-ssa-dom.c (iterative_hash_exprs_commutative): Move from tree.h. - * tree-vrp.c (ssa_name_nonnegative_p): Remove. - * tree.c (decl_assembler_name_equal): Move to symtab.c. - (tree_expr_size): Move to explow.c. - (decl_assembler_name_hash): Move to symtab.c. - (real_twop): Remove. - (tree_expr_size): Move to explow.c. - (stabilize_reference_1): Move earlier in the file. Make static. - (omp_remove_redundant_declare_simd_attrs): Remove. - (simple_cst_list_equal): Move earlier in the file. Make static. - (size_low_cst): Move to fold-const.c. - (build_type_no_quals): Remove. - (build_function_type_skip_args): Move to cgraphclones.c. - (build_function_decl_skip_args): Move to cgraphclones.c. - (in_array_bounds_p): Move to tree-eh.c. - (range_in_array_bounds_p): Move to tree-eh.c. - (truth_type_for): Move to gimple-fold.c. - (list_equal_p): Remove. - * tree.h (decl_assembler_name_equal): Remove. - (decl_assembler_name_hash): Remove. - (truth_type_for): Remove. - (build_type_no_quals): Remove. - (build_function_decl_skip_args): Remove. - (in_array_bounds_p): Remove. - (range_in_array_bounds_p): Remove. - (size_low_cst): Remove. - (omp_remove_redundant_declare_simd_attrs): Remove. - (tree_expr_size): Remove. - (fields_length): Remove. - (stabilize_reference_1): Remove. - (expand_goto): Remove. - (expand_stack_save): Remove. - (expand_stack_restore): Remove. - (expand_return): Remove. - (fold_build3_initializer_loc): Remove. - (tree_expr_nonzero_p): Remove. - (tree_invalid_nonnegative_warnv_p): Remove. - (tree_expr_nonzero_warnv_p): Remove. - (fold_builtin_snprintf_chk): Remove. - (validate_arglist): Remove. - (iterative_hash_exprs_commutative): Move to tree-ssa-dom.c. - (simple_cst_list_equal): Remove. - (real_twop): Remove. - (expand_main_function): Remove. - (stack_protect_prologue): Remove. - (print_vec_tree): Remove. - (lookup_scoped_attribute_spec): Remove. - (get_attribute_namespace): Remove. - (expand_computed_goto): Remove. - (expand_asm_stmt): Remove. - (list_equal_p): Remove. - (ssa_name_nonnegative_p): Remove. - (fini_object_sizes): Remove. - (addr_expr_of_non_mem_decl_p): Remove. - (is_tm_safe_or_pure): Move to trans-mem.c. - (more_const_call_expr_args_p): Remove. - (save_vtable_map_decl): Remove. - -2013-11-07 Thomas Schwinge - - * doc/sourcebuild.texi (Top Level) : GNU ld can use - linker plugins, too. - - * config/arc/arc.h (LINK_COMMAND_SPEC): For -ftree-parallelize-loops=*, - link to libgomp and its dependencies. - * config/ia64/hpux.h (LIB_SPEC): Likewise. - * config/pa/pa-hpux11.h (LIB_SPEC): Likewise. - * config/pa/pa64-hpux.h (LIB_SPEC): Likewise. - * gcc.c (GOMP_SELF_SPECS): Update comment about libgomp's dependencies. - -2013-11-07 Jakub Jelinek - - * tree-ssa-loop-niter.c: Include tree-ssanames.h. - (determine_value_range): Add loop argument. Use get_range_info to - improve range. - (bound_difference): Adjust caller. - -2013-11-07 Richard Biener - Jakub Jelinek - - * tree-vrp.c (find_assert_locations): Pre-seed live bitmaps for loop - latches from header PHI arguments from the latch edge. - -2013-11-07 Paolo Carlini - - PR c++/58176 - * varasm.c (output_constant): Handle NULLPTR_TYPE. - -2013-11-07 H.J. Lu - - * config/i386/i386.c (ix86_expand_set_or_movmem): Don't set - misaligned_prologue_used when it has been set. - -2013-11-07 Yury Gribov - Jakub Jelinek - - PR sanitizer/59029 - * asan.c (get_mem_refs_of_builtin_call): Allow - integer literals as addresses in instrumented builtins. - -2013-11-07 Kyrylo Tkachov - - * config/aarch64/aarch64.c (aarch64_legitimize_reload_address): - Explain why plus_constant is not used. - -2013-11-07 Richard Biener - - * tree-ssa-ccp.c (canonicalize_float_value): Rename to ... - (canonicalize_value): ... this. Also handle stripping of - TREE_OVERFLOW. - (get_value, set_lattice_value, get_value_for_expr): Adjust. - * gimple-fold.c (canonicalize_constructor_val): Strip TREE_OVERFLOW. - * tree-ssa-threadedge.c (set_ssa_name_value): Likewise. - -2013-11-07 Richard Biener - - * tree-dfa.c (get_ref_base_and_extent): Fix casting. - -2013-11-07 H.J. Lu - - PR target/59034 - * config/i386/i386.md (push peepholer/splitter): Use Pmode - with stack_pointer_rtx. - -2013-11-07 Bin Cheng - - * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Check equality - using operand_equal_p. - -2013-11-07 Bin Cheng - - * tree-ssa-loop-ivopts.c (alloc_iv): Lower address expressions. - * tree-affine.c (get_inner_reference_aff): Return base. - * tree-affine.h (get_inner_reference_aff): Change prototype. - -2013-11-06 Tobias Burnus - - * doc/invoke.texi (Wdate-time): Fix typo. - -2013-11-06 Oleg Endo - - * config/sh/sh.md (addsf3, divsf3, divsf3_i, rsqrtsf2, cmpgtdf_t, - cmpeqdf_t, *ieee_ccmpeqdf_t, negdf2, sqrtdf2, absdf2): Use - fp_arith_reg_operand instead of arith_reg_operand. - -2013-11-06 Oleg Endo - - * config/sh/sh.md (adddi3): Remove empty constraints. - Remove can_create_pseudo_p and arith_reg_operand check. - (adddi3_compact, subdi3_compact, *negdi2): Remove constraints. - Split before reload. - -2013-11-06 Jeff Law - Tom Tromey - - * gdbinit.in: Disable strict type checking. - -2013-11-06 Vladimir Makarov - - * tree-pass.h (make_pass_live_range_shrinkage): New external. - * timevar.def (TV_LIVE_RANGE_SHRINKAGE): New. - * sched-rgn.c (gate_handle_live_range_shrinkage): New. - (rest_of_handle_live_range_shrinkage): Ditto - (class pass_live_range_shrinkage): Ditto. - (pass_data_live_range_shrinkage): Ditto. - (make_pass_live_range_shrinkage): Ditto. - * sched-int.h (initialize_live_range_shrinkage): New prototype. - (finish_live_range_shrinkage): Ditto. - * sched-deps.c (create_insn_reg_set): Make void return value. - * passes.def: Add pass_live_range_shrinkage. - * ira.c (update_equiv_regs): Don't move if flag_live_range_shrinkage. - * haifa-sched.c (live_range_shrinkage_p): New. - (initialize_live_range_shrinkage, finish_live_range_shrinkage): - New functions. - (rank_for_schedule): Add code for pressure relief through live - range shrinkage. - (schedule_insn): Print more debug info. - (sched_init): Setup SCHED_PRESSURE_WEIGHTED for pressure relief - through live range shrinkage. - * doc/invoke.texi (-flive-range-shrinkage): New. - * common.opt (flive-range-shrinkage): New. - -2013-11-06 Uros Bizjak - - PR target/59021 - * config/i386/i386.c (ix86_avx_u128_mode_needed): Require - AVX_U128_DIRTY mode for call_insn RTXes that use AVX256 registers. - (ix86_avx_u128_mode_needed): Return AVX_U128_DIRTY mode for call_insn - RTXes that return in AVX256 register. - -2013-11-06 Richard Biener - - PR tree-optimization/58653 - * tree-predcom.c (ref_at_iteration): Rewrite to generate a MEM_REF. - (prepare_initializers_chain): Adjust. - -2013-11-06 Andrew MacLeod - - * gimple.h (block_in_transaction): Move to basic-block.h and rename. - (gimple_in_transaction): Use bb_in_transaction. - * basic-block.h (bb_in_transaction): Relocate here and rename. - * tree-ssa-loop-im.c (execute_sm): Use bb_in_transaction. - -2013-11-06 Richard Biener - - * tree.c (drop_tree_overflow): New function. - * tree.h (drop_tree_overflow): Declare. - * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW. - * tree-vrp.c (range_int_cst_singleton_p): Use - is_overflow_infinity instead of testing TREE_OVERFLOW. - (extract_range_from_assert): Likewise. - (zero_nonzero_bits_from_vr): Likewise. - (extract_range_basic): Likewise. - (register_new_assert_for): Use drop_tree_overflow. - (vrp_visit_phi_node): Likewise. - -2013-11-06 Eric Botcazou - - * config/i386/i386.c (ix86_expand_prologue): Optimize stack - checking for leaf functions without dynamic stack allocation. - * config/ia64/ia64.c (ia64_emit_probe_stack_range): Adjust. - (ia64_expand_prologue): Likewise. - * config/mips/mips.c (mips_expand_prologue): Likewise. - * config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise. - * config/sparc/sparc.c (sparc_expand_prologue): Likewise. - (sparc_flat_expand_prologue): Likewise. - -2013-11-06 James Greenhalgh - - * config/aarch64/arm_neon.h (__ST2_LANE_FUNC): Better model data size. - (__ST3_LANE_FUNC): Likewise. - (__ST4_LANE_FUNC): Likewise. - -2013-11-06 Nick Clifton - - * config/msp430/msp430.h (TARGET_CPU_CPP_BUILTINS): Define the - name returned by msp430_mcu_name. - (LIB_SPEC): If a -T option has not been specified then set a - default, mcu-specific, linker script. - * config/msp430/t-msp430 (MULTILIB_MATCHES): Add more mcu names. - * config/msp430/msp430.c (msp430x_names): Likewise. - Alpha sort the names for ease of comparison. - (msp430_mcu_name): New function: Returns a string suitable for - use as a C preprocessor symbol based upon the name of the MCU - being targeted. - (msp430_option_override): Accept msp430x and msp430xv2 as generic - mcu names. - * config/msp430/msp430-protos.h (msp430_mcu_name): Prototype. - - * gcc.c (do_spec_1): Do not insert a space after a %* substitution - unless it is the last part of a spec substring. - * doc/invoke.texi (Spec Files): Document space insertion - behaviour of %*. - -2013-11-06 Christian Bruel - - * config/sh/sh-mem.cc (sh_expand_cmpnstr, sh_expand_cmpstr): - Factorize probabilities, Use adjust_address instead of - adjust_automodify_address when possible. Enable for optimize. - (sh_expand_strlen): New function. - * config/sh/sh-protos.h (sh_expand_strlen): Declare. - * config/sh/sh.md (strlensi): New pattern. - (UNSPEC_BUILTIN_STRLEN): Define. - -2013-11-06 Jakub Jelinek - - PR middle-end/58970 - * expr.c (get_bit_range): Handle *offset == NULL_TREE. - (expand_assignment): If *bitpos is negative, set *offset - and adjust *bitpos, so that it is not negative. - -2013-11-06 Ganesh Gopalasubramanian - - * config/i386/bdver3.md : Added two additional decoder units - to support issue rate of 4 and remodeled vector unit. - * config/i386/i386.c (ix86_issue_rate): Issue rate for BD - architectures is set to 4. - * config/i386/i386.c (ia32_multipass_dfa_lookahead): DFA - lookahead is set to 4 for BD architectures. - -2013-11-05 Bill Schmidt - - * config/rs6000/rs6000.c (rs6000_option_override_internal): - Remove restriction against use of VSX instructions when generating - code for little endian mode. - -2013-11-05 Bill Schmidt - - * config/rs6000/altivec.md (mulv4si3): Ensure we generate vmulouh - for both big and little endian. - (mulv8hi3): Swap input operands for merge high and merge low - instructions for little endian. - -2013-11-05 Bill Schmidt - - * config/rs6000/altivec.md (vec_widen_umult_even_v16qi): Change - define_insn to define_expand that uses even patterns for big - endian and odd patterns for little endian. - (vec_widen_smult_even_v16qi): Likewise. - (vec_widen_umult_even_v8hi): Likewise. - (vec_widen_smult_even_v8hi): Likewise. - (vec_widen_umult_odd_v16qi): Likewise. - (vec_widen_smult_odd_v16qi): Likewise. - (vec_widen_umult_odd_v8hi): Likewise. - (vec_widen_smult_odd_v8hi): Likewise. - (altivec_vmuleub): New define_insn. - (altivec_vmuloub): Likewise. - (altivec_vmulesb): Likewise. - (altivec_vmulosb): Likewise. - (altivec_vmuleuh): Likewise. - (altivec_vmulouh): Likewise. - (altivec_vmulesh): Likewise. - (altivec_vmulosh): Likewise. - -2013-11-05 Mike Stump - - * Makefile.in (mostlyclean): Remove c-family objects. - -2013-11-05 Ian Lance Taylor - - * config/i386/sync.md (atomic_compare_and_swap_doubleword): - If possible, add .cfi directives to record change to bx. - * config/i386/i386.c (ix86_emit_cfi): New function. - * config/i386/i386-protos.h (ix86_emit_cfi): Declare. - -2013-11-05 Steven Bosscher - - * rtlanal.c (tablejump_p): Expect a JUMP_TABLE_DATA to always follow - immediately after a label for a tablejump pattern. - - * config/arm/arm.c (is_jump_table): Remove. - (create_fix_barrier): Use tablejump_p instead. - (arm_reorg): Likewise. - (thumb1_output_casesi): Expect JUMP_TABLE_DATA to always be NEXT_INSN. - (thumb2_output_casesi): Likewise. - * config/aarch64/aarch64.c (aarch64_output_casesi): Likewise. - * config/sh/sh.md (casesi_worker_1, casesi_worker_2, - casesi_shift_media, casesi_load_media): Likewise. - * config/iq2000/iq2000.md: Likewise (in anonymous define_insn). - * config/microblaze/microblaze.md: Likewise. - -2013-11-05 Tobias Burnus - - * doc/invoke.texi (-Wdate-time): Document. - -2013-11-05 Richard Sandiford - - * double-int.c (lshift_double, rshift_double): Remove - SHIFT_COUNT_TRUNCATED handling. - -2013-11-05 Jeff Law - - * Makefile.in (OBJS): Add gimple-ssa-isolate-paths.o - * common.opt (-fisolate-erroneous-paths): Add option and documentation. - * gimple-ssa-isolate-paths.c: New file. - * gimple.c (check_loadstore): New function. - (infer_nonnull_range): Moved into gimple.c from tree-vrp.c - Verify OP is in the argument list and the argument corresponding - to OP is a pointer type. Use operand_equal_p rather than - pointer equality when testing if OP is on the nonnull list. - Use check_loadstore rather than count_ptr_derefs. Handle - GIMPLE_RETURN statements. - * tree-vrp.c (infer_nonnull_range): Remove. - * gimple.h (infer_nonnull_range): Declare. - * opts.c (default_options_table): Add OPT_fisolate_erroneous_paths. - * passes.def: Add pass_isolate_erroneous_paths. - * timevar.def (TV_ISOLATE_ERRONEOUS_PATHS): New timevar. - * tree-pass.h (make_pass_isolate_erroneous_paths): Declare. - * tree-ssa.c (struct count_ptr_d): Remove. - (count_ptr_derefs, count_uses_and_derefs): Remove. - * tree-ssa.h (count_uses_and_derefs): Remove. - -2013-11-05 Jakub Jelinek - - PR rtl-optimization/58997 - * loop-iv.c (iv_subreg): For IV_UNKNOWN_EXTEND, expect - get_iv_value to be in iv->mode rather than iv->extend_mode. - (iv_extend): Likewise. Otherwise, if iv->extend != extend, - use lowpart_subreg on get_iv_value before calling simplify_gen_unary. - * loop-unswitch.c (may_unswitch_on): Make sure op[i] is in the right - mode. - -2013-11-05 Andrew MacLeod - - * gimple.h: Move some prototypes to gimple-expr.h and add to include - list. - (extract_ops_from_tree, gimple_call_addr_fndecl, is_gimple_reg_type): - Move to gimple-expr.h. - * gimple-expr.h: New file. Relocate some prototypes from gimple.h. - (types_compatible_p, is_gimple_reg_type, is_gimple_variable, - is_gimple_id, virtual_operand_p, is_gimple_addressable, - is_gimple_constant, extract_ops_from_tree, gimple_call_addr_fndecl): - Relocate here. - * gimple.c (extract_ops_from_tree_1, gimple_cond_get_ops_from_tree, - gimple_set_body, gimple_body, gimple_has_body_p, is_gimple_lvalue, - is_gimple_condexpr, is_gimple_addressable, is_gimple_constant, - is_gimple_address, is_gimple_invariant_address, - is_gimple_ip_invariant_address, is_gimple_min_invariant, - is_gimple_ip_invariant, is_gimple_variable, is_gimple_id, - virtual_operand_p, is_gimple_reg, is_gimple_val, is_gimple_asm_val, - is_gimple_min_lval, is_gimple_call_addr, is_gimple_mem_ref_addr, - gimple_decl_printable_name, useless_type_conversion_p, - types_compatible_p, gimple_can_coalesce_p, copy_var_decl): Move to - gimple-expr.[ch]. - * gimple-expr.c: New File. - (useless_type_conversion_p, gimple_set_body, gimple_body, - gimple_has_body_p, gimple_decl_printable_name, copy_var_decl, - gimple_can_coalesce_p, extract_ops_from_tree_1, - gimple_cond_get_ops_from_tree, is_gimple_lvalue, is_gimple_condexpr, - is_gimple_address, is_gimple_invariant_address, - is_gimple_ip_invariant_address, is_gimple_min_invariant, - is_gimple_ip_invariant, is_gimple_reg, is_gimple_val, - is_gimple_asm_val, is_gimple_min_lval, is_gimple_call_addr, - is_gimple_mem_ref_addr): Relocate here. - * Makefile.in (OBJS): Add gimple-expr.o. - -2013-11-05 David Malcolm - - * gengtype-parse.c (struct_field_seq): Support empty structs. - -2013-11-05 Uros Bizjak - - * config/i386/t-rtems (MULTILIB_MATCHES): Fix option typos. - -2013-11-05 Uros Bizjak - - * config/i386/i386-c.c (ix86_target_macros): Define _SOFT_FLOAT - for !TARGET_80387. - * config/i386/rtemself.h (TARGET_OS_CPP_BUILTINS): Do not define - _SOFT_FLOAT here. - (LONG_DOUBLE_TYPE_SIZE): New define. - (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Ditto. - -2013-11-05 Paolo Carlini - - PR c++/58724 - * doc/extend.texi [visibility ("visibility_type")]: Add example - about visibility attribute on namespace declaration. - -2013-11-05 Richard Biener - - PR ipa/58492 - * passes.def (all_passes): Start with pass_fixup_cfg again. - -2013-11-05 Richard Biener - - PR tree-optimization/58955 - * tree-loop-distribution.c (pg_add_dependence_edges): Fix - edge direction. - -2013-11-05 Bill Schmidt - - * config/rs6000/vector.md (vec_pack_sfix_trunc_v2df): Adjust for - little endian. - (vec_pack_ufix_trunc_v2df): Likewise. - -2013-11-05 H.J. Lu - - PR middle-end/58981 - * doc/md.texi (@code{movmem@var{m}}): Specify Pmode as mode of - pattern, instead of word_mode. - - * expr.c (emit_block_move_via_movmem): Don't use mode wider than - Pmode for size. - (set_storage_via_setmem): Likewise. - -2013-11-05 Andrew MacLeod - - * tree-outof-ssa.c (queue_phi_copy_p): Combine phi_ssa_name_p from - gimple.h and the rest of the condition in eliminate_build. - (eliminate_build): Call new routine. - * gimple.h (phi_ssa_name_p): Delete. - -2013-11-05 Trevor Saunders - - * vec.c (vec_prefix::calculate_allocation): Don't try to handle the - case of no prefix and reserving zero slots, because when that's the - case we'll never get here. - * vec.h (va_heap::reserve): Don't try and handle - vec_prefix::calculate_allocation returning zero because that should - never happen. - -2013-11-05 Richard Biener - - PR middle-end/58941 - * tree-dfa.c (get_ref_base_and_extent): Merge common code - in MEM_REF and TARGET_MEM_REF handling. Make sure to - process trailing array detection before diving into the - view-converted object (and possibly apply some extra offset). - -2013-11-05 Joseph Myers - - * config/i386/i386.c (ix86_float_exceptions_rounding_supported_p): - New function. - (TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P): Define. - -2013-11-05 Marc Glisse - - PR tree-optimization/58958 - * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Use - get_addr_base_and_unit_offset instead of get_ref_base_and_extent. - -2013-11-05 Marc Glisse - - * tree-ssa-alias.h (ranges_overlap_p): Handle negative offsets. - * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Likewise. - -2013-11-05 Jakub Jelinek - - PR tree-optimization/58984 - * ipa-prop.c (ipa_load_from_parm_agg_1): Add SIZE_P argument, - set *SIZE_P if non-NULL on success. - (ipa_load_from_parm_agg, ipa_analyze_indirect_call_uses): Adjust - callers. - (ipcp_transform_function): Likewise. Punt if size of access - is different from TYPE_SIZE on v->value's type. - -2013-11-05 Tobias Burnus - - * doc/invoke.texi (-fopenmp-simd): Document new option. - * gimplify.c (gimplify_body): Accept -fopenmp-simd. - * omp-low.c (execute_expand_omp, execute_lower_omp): Ditto. - * tree.c (attribute_value_equal): Ditto. - -2013-11-04 Wei Mi - - * sched-rgn.c (add_branch_dependences): Keep insns in - a SCHED_GROUP at the end of BB to remain their location. - -2013-11-04 Wei Mi - - * config/i386/i386.c (memory_address_length): Extract a part - of code to rip_relative_addr_p. - (rip_relative_addr_p): New Function. - (ix86_macro_fusion_p): Ditto. - (ix86_macro_fusion_pair_p): Ditto. - * config/i386/i386.h: Add new tune features about macro-fusion. - * config/i386/x86-tune.def (DEF_TUNE): Ditto. - * doc/tm.texi: Generated. - * doc/tm.texi.in: Ditto. - * haifa-sched.c (try_group_insn): New Function. - (group_insns_for_macro_fusion): Ditto. - (sched_init): Call group_insns_for_macro_fusion. - * target.def: Add two hooks: macro_fusion_p and - macro_fusion_pair_p. - -2013-11-04 Kostya Serebryany - - Update to match the changed asan API. - * asan.c (asan_function_start): New function. - (asan_emit_stack_protection): Update the string stored in the - stack red zone to match new API. Store the PC of the current - function in the red zone. - (asan_global_struct): Update the __asan_global definition to match - the new API. - (asan_add_global): Ditto. - * asan.h (asan_function_start): New prototype. - * final.c (final_start_function): Call asan_function_start. - * sanitizer.def (BUILT_IN_ASAN_INIT): Rename __asan_init_v1 - to __asan_init_v3. - -2013-11-04 Wei Mi - - * config/i386/i386-c.c (ix86_target_macros_internal): Separate - PROCESSOR_COREI7_AVX out from PROCESSOR_COREI7. - * config/i386/i386.c (ix86_option_override_internal): Ditto. - (ix86_issue_rate): Ditto. - (ix86_adjust_cost): Ditto. - (ia32_multipass_dfa_lookahead): Ditto. - (ix86_sched_init_global): Ditto. - (get_builtin_code_for_version): Ditto. - * config/i386/i386.h (enum target_cpu_default): Ditto. - (enum processor_type): Ditto. - * config/i386/x86-tune.def (DEF_TUNE): Ditto. - -2013-11-04 Vladimir Makarov - - PR rtl-optimization/58967 - * config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Remove - !lra_in_progress for mode sizes bigger word. - -2013-11-04 Bill Schmidt - - * config/rs6000/altivec.md (vec_widen_umult_hi_v16qi): Swap - arguments to merge instruction for little endian. - (vec_widen_umult_lo_v16qi): Likewise. - (vec_widen_smult_hi_v16qi): Likewise. - (vec_widen_smult_lo_v16qi): Likewise. - (vec_widen_umult_hi_v8hi): Likewise. - (vec_widen_umult_lo_v8hi): Likewise. - (vec_widen_smult_hi_v8hi): Likewise. - (vec_widen_smult_lo_v8hi): Likewise. - -2013-11-04 Ian Lance Taylor - - * builtins.def (ATTR_NOTHROWCALL_LEAF_LIST): Define. - * sync-builtins.def: Use ATTR_NOTHROWCALL_LEAF_LIST for all sync - builtins that take pointers. - * lto-opts.c (lto_write_options): Write -fnon-call-exceptions if set. - * lto-wrapper.c (merge_and_complain): Collect OPT_fnon_call_exceptions. - (run_gcc): Pass -fnon-call-exceptions. - -2013-11-04 Jakub Jelinek - - * optabs.c (expand_vec_perm): Revert one incorrect line from - 2013-10-31 change. - - PR tree-optimization/58978 - * tree-vrp.c (all_imm_uses_in_stmt_or_feed_cond): Don't modify - use_stmt by single_imm_use directly. Only call single_imm_use - on SSA_NAMEs. - -2013-11-04 Vladimir Makarov - - PR rtl-optimization/58968 - * lra-spills.c (return_regno_p): New function. - (lra_final_code_change): Use it. - -2013-11-04 Joseph Myers - - * doc/cpp.texi (__GCC_IEC_559, __GCC_IEC_559_COMPLEX): Document macros. - * target.def (float_exceptions_rounding_supported_p): New hook. - * targhooks.c (default_float_exceptions_rounding_supported_p): New - function. - * targhooks.h (default_float_exceptions_rounding_supported_p): Declare. - * doc/tm.texi.in (TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P): - New @hook. - * doc/tm.texi: Regenerate. - * config.gcc (powerpc*-*-linux*): Set extra_objs. - * config/rs6000/rs6000-linux.c: New file. - * config/rs6000/rs6000-protos.h - (rs6000_linux_float_exceptions_rounding_supported_p): Declare. - * config/rs6000/linux.h - (TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P): New macro. - * config/rs6000/linux64.h - (TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P): Likewise. - * config/rs6000/t-linux (rs6000-linux.o): New rule. - * config/rs6000/t-linux64 (rs6000-linux.o): Likewise. - -2013-11-04 Bill Schmidt - - * config/rs6000/vsx.md (*vsx_le_perm_store_ for VSX_D): - Replace the define_insn_and_split with a define_insn and two - define_splits, with the split after reload re-permuting the source - register to its original value. - (*vsx_le_perm_store_ for VSX_W): Likewise. - (*vsx_le_perm_store_v8hi): Likewise. - (*vsx_le_perm_store_v16qi): Likewise. - -2013-11-04 Bill Schmidt - - * config/rs6000/vector.md (vec_pack_trunc_v2df): Adjust for - little endian. - -2013-11-04 Jakub Jelinek - - PR tree-optimization/58946 - * tree-ssa-reassoc.c (maybe_optimize_range_tests): Update all - bbs with bbinfo[idx].op != NULL before all blocks with - bbinfo[idx].op == NULL. - -2013-11-04 Richard Sandiford - - * config/avr/avr-log.c (avr_double_int_pop_digit): Delete. - (avr_dump_double_int_hex): Likewise. - (avr_log_vadump): Remove %D and %X handling. - * config/avr/avr.c (avr_double_int_push_digit): Delete. - (avr_map_op_t): Change map from double_int to unsigned int. - (avr_map_op): Update accordingly. - (avr_map, avr_map_metric, avr_has_nibble_0xf, avr_map_decompose) - (avr_move_bits, avr_out_insert_bits, avr_fold_builtin): Operate on - unsigned ints rather than double_ints. - -2013-11-03 Marek Polacek - - Implement -fsanitize=vla-bound. - * opts.c (common_handle_option): Handle vla-bound. - * sanitizer.def (BUILT_IN_UBSAN_HANDLE_VLA_BOUND_NOT_POSITIVE): Define. - * flag-types.h (enum sanitize_code): Add SANITIZE_VLA. - * asan.c (initialize_sanitizer_builtins): Build BT_FN_VOID_PTR_PTR. - -2013-11-02 Bill Schmidt - - * config/rs6000/rs6000.c (rs6000_expand_vector_set): Adjust for - little endian. - -2013-11-02 Uros Bizjak - - * config/i386/constraints.md (Ts, Tv): New address constrains. - * config/i386/i386.md (*lea, *_): Use Ts - constraint for address_no_seg_operand. - * config/i386/sse.md (*avx512pf_gatherpf_mask) - (*avx512pf_gatherpf, *avx512pf_scatterpf_mask) - (*avx512pf_scatterpf, *avx2_gathersi) - (*avx2_gathersi_2, *avx2_gatherdi, *avx2_gatherdi_2) - (*avx2_gatherdi_3, *avx2_gatherdi_4) - (*avx512f_gathersi, *avx512f_gathersi_2) - (*avx512f_gatherdi, *avx512f_gatherdi_2) - (*avx512f_scattersi *avx512f_scatterdi): Use Tv - constraint for vsib_address_operand. - -2013-11-02 Steven Bosscher - - * gcse.c (pre_delete): Remove references to regmove from comments. - * recog.c: (validate_replace_rtx_1): Likewise. - * config/rl78/rl78.c: Likewise. - * config/v850/v850.h: Likewise, and remove unused ENABLE_REGMOVE_PASS. - * common/config/m32r/m32r-common.c: Don't manipulate OPT_fregmove. - * common/config/mmix/mmix-common.c: Likewise. - -2013-11-01 Trevor Saunders - - * function.c (reorder_blocks): Convert block_stack to a stack_vec. - * gimplify.c (gimplify_compound_lval): Likewise. - * graphite-clast-to-gimple.c (gloog): Likewise. - * graphite-dependences.c (loop_is_parallel_p): Likewise. - * graphite-scop-detection.c (scopdet_basic_block_info): Likewise. - (limit_scop); Likewise. - (build_scops): Likewise. - (dot_scop): Likewise. - * graphite-sese-to-poly.c (sese_dom_walker): Likewise. - (build_scop_drs): Likewise. - (insert_stmts): Likewise. - (insert_out_of_ssa_copy): Likewise. - (remove_phi): Likewise. - (rewrite_commutative_reductions_out_of_ssa_close_phi): Likewise. - * hw-doloop.c (discover_loop): Likewise. - * tree-call-cdce.c (shrink_wrap_one_built_in_call): Likewise. - * tree-dfa.c (dump_enumerated_decls): Likewise. - * tree-if-conv.c (if_convertable_loop_p): Likewise. - * tree-inline.c (tree_function_versioning): Likewise. - * tree-loop-distribution.c (build_rdg): Likewise. - (rdg_flag_vertex_and_dependent): Likewise. - (distribute_loop): Likewise. - * tree-parloops.c (loop_parallel_p): Likewise. - (eliminate_local_variables): Likewise. - (separate_decls_in_region): Likewise. - * tree-predcom.c (tree_predictive_commoning_loop): Likewise. - * tree-ssa-phiopt.c (cond_if_else_store_replacement): Likewise. - * tree-ssa-uncprop.c (uncprop_dom_walker): Likewise. - * tree-vect-loop.c (vect_analyze_scaler_cycles_1): Likewise. - * tree-vect-patterns.c (vect_pattern_recog): Likewise. - * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise. - (vectorizable_condition): Likewise. - -2013-11-01 Uros Bizjak - - * configure.ac (HAVE_AS_IX86_INTERUNIT_MOVQ): Always define as 0/1. - * configure: Regenerate. - * config/i386/i386.md (*movdi_internal): Change - HAVE_AS_IX86_INTERUNIT_MOVQ to runtime check. - (*movdf_internal): Ditto. - * config/i386/mmx.md (*mov_internal): Ditto. - * config/i386/sse.md (vec_concatv2di): Output interunit movq - for HAVE_AS_IX86_INTERUNIT_MOVQ targets. - -2013-10-31 Robert Suchanek - - * lra-spills.c (assign_spill_hard_regs): Remove statement terminator - after comment. - -2013-10-31 David Malcolm - - Automated part of renaming of symtab_node_base to symtab_node. - - Patch autogenerated by rename_symtab.py from - https://github.com/davidmalcolm/gcc-refactoring-scripts - revision 58bb219cc090b2f4516a9297d868c245495ee622 - with ChangeLog entry fixed up by hand. - - * cgraph.c (x_cgraph_nodes_queue): Rename symtab_node_base to - symtab_node. - (cgraph_node_for_asm): Likewise. - * cgraph.h (symtab_node_base): Likewise. - (cgraph_node): Likewise. - (varpool_node): Likewise. - (is_a_helper ::test): Likewise. - (is_a_helper ::test): Likewise. - (symtab_nodes): Likewise. - (symtab_register_node): Likewise. - (symtab_unregister_node): Likewise. - (symtab_remove_node): Likewise. - (symtab_get_node): Likewise. - (symtab_node_for_asm): Likewise. - (symtab_node_asm_name): Likewise. - (symtab_node_name): Likewise. - (symtab_insert_node_to_hashtable): Likewise. - (symtab_add_to_same_comdat_group): Likewise. - (symtab_dissolve_same_comdat_group_list): Likewise. - (dump_symtab_node): Likewise. - (debug_symtab_node): Likewise. - (dump_symtab_base): Likewise. - (verify_symtab_node): Likewise. - (verify_symtab_base): Likewise. - (symtab_used_from_object_file_p): Likewise. - (symtab_alias_ultimate_target): Likewise. - (symtab_resolve_alias): Likewise. - (fixup_same_cpp_alias_visibility): Likewise. - (symtab_for_node_and_aliases): Likewise. - (symtab_nonoverwritable_alias): Likewise. - (availability symtab_node_availability): Likewise. - (symtab_semantically_equivalent_p): Likewise. - (fixup_same_cpp_alias_visibility): Likewise. - (symtab_prevail_in_asm_name_hash): Likewise. - (cgraph): Likewise. - (varpool): Likewise. - (varpool_first_variable): Likewise. - (varpool_next_variable): Likewise. - (varpool_first_static_initializer): Likewise. - (varpool_next_static_initializer): Likewise. - (varpool_first_defined_variable): Likewise. - (varpool_next_defined_variable): Likewise. - (cgraph_first_defined_function): Likewise. - (cgraph_next_defined_function): Likewise. - (cgraph_first_function): Likewise. - (cgraph_next_function): Likewise. - (cgraph_first_function_with_gimple_body): Likewise. - (cgraph_next_function_with_gimple_body): Likewise. - (symtab_alias_target): Likewise. - (symtab_real_symbol_p): Likewise. - (symtab_can_be_discarded): Likewise. - * cgraphbuild.c (mark_address): Likewise. - (mark_load): Likewise. - (mark_store): Likewise. - * cgraphunit.c (decide_is_symbol_needed): Likewise. - (first): Likewise. - (enqueue_node): Likewise. - (referred_to_p): Likewise. - (cgraph_process_same_body_aliases): Likewise. - (analyze_functions): Likewise. - (handle_alias_pairs): Likewise. - (output_weakrefs): Likewise. - (compile): Likewise. - * gimple-fold.c (can_refer_decl_in_current_unit_p): Likewise. - * ipa-inline-analysis.c (inline_write_summary): Likewise. - * ipa-prop.c (remove_described_reference): Likewise. - (try_decrement_rdesc_refcount): Likewise. - (ipa_edge_duplication_hook): Likewise. - * ipa-ref.c (ipa_record_reference): Likewise. - (ipa_maybe_record_reference): Likewise. - (ipa_clone_ref): Likewise. - (ipa_clone_references): Likewise. - (ipa_clone_referring): Likewise. - (ipa_find_reference): Likewise. - (ipa_remove_stmt_references): Likewise. - (ipa_clear_stmts_in_references): Likewise. - * ipa-ref.h (symtab_node_base): Likewise. - (ipa_ref): Likewise. - (ipa_record_reference): Likewise. - (ipa_maybe_record_reference): Likewise. - (ipa_clone_references): Likewise. - (ipa_clone_referring): Likewise. - (ipa_clone_ref): Likewise. - (ipa_find_reference): Likewise. - (ipa_remove_stmt_references): Likewise. - (ipa_clear_stmts_in_references): Likewise. - * ipa-reference.c (ipa_reference_write_optimization_summary): - Likewise. - * ipa.c (enqueue_node): Likewise. - (process_references): Likewise. - (walk_polymorphic_call_targets): Likewise. - (symtab_remove_unreachable_nodes): Likewise. - (address_taken_from_non_vtable_p): Likewise. - (comdat_can_be_unshared_p_1): Likewise. - (comdat_can_be_unshared_p): Likewise. - (can_replace_by_local_alias): Likewise. - (function_and_variable_visibility): Likewise. - * is-a.h: Likewise (within example in comment). - * lto-cgraph.c (input_cgraph_opt_summary): Likewise. - (lto_symtab_encoder_encode): Likewise. - (lto_symtab_encoder_delete_node): Likewise. - (lto_symtab_encoder_in_partition_p): Likewise. - (lto_set_symtab_encoder_in_partition): Likewise. - (output_refs): Likewise. - (compute_ltrans_boundary): Likewise. - (output_symtab): Likewise. - (input_node): Likewise. - (input_ref): Likewise. - (input_edge): Likewise. - (input_cgraph_1): Likewise. - (input_refs): Likewise. - (output_cgraph_opt_summary): Likewise. - (input_node_opt_summary): Likewise. - (input_cgraph_opt_section): Likewise. - * lto-section-in.c (lto_free_function_in_decl_state_for_node): - Likewise. - * lto-streamer-out.c (lto_output): Likewise. - (output_symbol_p): Likewise. - (produce_symtab): Likewise. - * lto-streamer.h (lto_encoder_entry): Likewise. - (lto_free_function_in_decl_state_for_node): Likewise. - (lto_symtab_encoder_encode): Likewise. - (lto_symtab_encoder_delete_node): Likewise. - (lto_symtab_encoder_in_partition_p): Likewise. - (lto_set_symtab_encoder_in_partition): Likewise. - (lto_symtab_encoder_lookup): Likewise. - (lsei_node): Likewise. - (lto_symtab_encoder_deref): Likewise. - * symtab.c (symtab_hash): Likewise. - (assembler_name_hash): Likewise. - (symtab_nodes): Likewise. - (hash_node): Likewise. - (eq_node): Likewise. - (hash_node_by_assembler_name): Likewise. - (eq_assembler_name): Likewise. - (insert_to_assembler_name_hash): Likewise. - (unlink_from_assembler_name_hash): Likewise. - (symtab_prevail_in_asm_name_hash): Likewise. - (symtab_register_node): Likewise. - (symtab_insert_node_to_hashtable): Likewise. - (symtab_unregister_node): Likewise. - (symtab_get_node): Likewise. - (symtab_remove_node): Likewise. - (symtab_initialize_asm_name_hash): Likewise. - (symtab_node_for_asm): Likewise. - (symtab_add_to_same_comdat_group): Likewise. - (symtab_dissolve_same_comdat_group_list): Likewise. - (symtab_node_asm_name): Likewise. - (symtab_node_name): Likewise. - (dump_symtab_base): Likewise. - (dump_symtab_node): Likewise. - (dump_symtab): Likewise. - (debug_symtab_node): Likewise. - (verify_symtab_base): Likewise. - (verify_symtab_node): Likewise. - (verify_symtab): Likewise. - (symtab_used_from_object_file_p): Likewise. - (symtab_node_availability): Likewise. - (symtab_alias_ultimate_target): Likewise. - (fixup_same_cpp_alias_visibility): Likewise. - (symtab_resolve_alias): Likewise. - (symtab_for_node_and_aliases): Likewise. - (symtab_for_node_and_aliases): Likewise. - (symtab_nonoverwritable_alias_1): Likewise. - (symtab_nonoverwritable_alias): Likewise. - (symtab_semantically_equivalent_p): Likewise. - * value-prof.c (init_node_map): Likewise. - * varasm.c (find_decl): Likewise. - * varpool.c (varpool_node_for_asm): Likewise. - (varpool_remove_unreferenced_decls): Likewise. - -2013-10-31 David Malcolm - - Manual part of renaming of symtab_node_base to symtab_node. - - * ipa-ref.h (symtab_node): Remove typedef to pointer type, as it - clashes with the preferred name for the base class. - (const_symtab_node): Remove redundant typedef. - -2013-10-31 Jakub Jelinek - - * optabs.c (expand_vec_perm): Avoid vector mode punning - SUBREGs in SET_DEST. - * expmed.c (store_bit_field_1): Likewise. - * config/i386/sse.md (movdi_to_sse, vec_pack_sfix_trunc_v2df, - vec_pack_sfix_v2df, vec_shl_, vec_shr_, - vec_interleave_high, vec_interleave_low): Likewise. - * config/i386/i386.c (ix86_expand_vector_move_misalign, - ix86_expand_sse_movcc, ix86_expand_int_vcond, ix86_expand_vec_perm, - ix86_expand_sse_unpack, ix86_expand_args_builtin, - ix86_expand_vector_init_duplicate, ix86_expand_vector_set, - emit_reduc_half, expand_vec_perm_blend, expand_vec_perm_pshufb, - expand_vec_perm_interleave2, expand_vec_perm_pshufb2, - expand_vec_perm_vpshufb2_vpermq, - expand_vec_perm_vpshufb2_vpermq_even_odd, expand_vec_perm_even_odd_1, - expand_vec_perm_broadcast_1, expand_vec_perm_vpshufb4_vpermq2, - ix86_expand_sse2_mulv4si3, ix86_expand_pinsr): Likewise. - (expand_vec_perm_palignr): Likewise. Modify a copy of *d rather - than *d itself. - -2013-10-31 Uros Bizjak - - * config/i386/i386.c (ix86_expand_sse2_abs): Rename function arguments. - Use gcc_unreachable for unhandled modes. Do not check results of - expand_simple_binop. If not expanded to target, move the result. - -2013-10-31 Chung-Ju Wu - Shiva Chen - - * config.gcc (nds32*-*-*): Add nds32 target. - * config/nds32/nds32.c: New file. - * config/nds32/nds32.h: New file. - * config/nds32/nds32.md: New file. - * config/nds32/constants.md: New file. - * config/nds32/constraints.md: New file. - * config/nds32/iterators.md: New file. - * config/nds32/nds32-doubleword.md: New file. - * config/nds32/nds32-intrinsic.md: New file. - * config/nds32/nds32_intrinsic.h: New file. - * config/nds32/nds32-modes.def: New file. - * config/nds32/nds32-multiple.md: New file. - * config/nds32/nds32.opt: New file. - * config/nds32/nds32-opts.h: New file. - * config/nds32/nds32-protos.h: New file. - * config/nds32/nds32-peephole2.md: New file. - * config/nds32/pipelines.md: New file. - * config/nds32/predicates.md: New file. - * config/nds32/t-mlibs: New file. - * common/config/nds32: New directory and files. - - * doc/invoke.texi (NDS32 options): Document nds32 specific options. - * doc/md.texi (NDS32 family): Document nds32 specific constraints. - * doc/install.texi (Cross-Compiler-Specific Options): Document - --with-nds32-lib for nds32 target. - * doc/extend.texi (Function Attributes, Target Builtins): Document - nds32 specific attributes. - -2013-10-31 Vladimir Makarov - - * lra-constraints (process_alt_operands): Use the result - elimination register for operand when matching constraints. - -2013-10-31 Jakub Jelinek - - * tree-vrp.c (maybe_set_nonzero_bits): New function. - (remove_range_assertions): Call it. - - * tree.c (tree_ctz): New function. - * tree.h (tree_ctz): New prototype. - * tree-ssanames.h (get_range_info, get_nonzero_bits): Change - first argument from tree to const_tree. - * tree-ssanames.c (get_range_info, get_nonzero_bits): Likewise. - * tree-vectorizer.h (vect_generate_tmps_on_preheader): New prototype. - * tree-vect-loop-manip.c (vect_generate_tmps_on_preheader): No longer - static. - * expr.c (highest_pow2_factor): Reimplemented using tree_ctz. - * tree-vect-loop.c (vect_analyze_loop_operations, - vect_transform_loop): Don't force scalar loop for bound just because - number of iterations is unknown, only do it if it is not known to be - a multiple of vectorization_factor. - * builtins.c (get_object_alignment_2): Use tree_ctz on offset. - - * gimple-pretty-print.c (dump_ssaname_info): Print newline also - in case of VR_VARYING. Print get_nonzero_bits if not all ones. - * tree-ssanames.h (struct range_info_def): Add nonzero_bits field. - (set_nonzero_bits, get_nonzero_bits): New prototypes. - * tree-ssa-ccp.c (get_default_value): Use get_range_info to see if - a default def isn't partially constant. - (ccp_finalize): If after IPA, set_range_info if integral SSA_NAME - is known to be partially zero. - (evaluate_stmt): If we'd return otherwise VARYING, use get_range_info - to see if a default def isn't partially constant. - * tree-ssanames.c (set_range_info): Initialize nonzero_bits upon - creation of a range, if VR_RANGE, try to improve nonzero_bits from - the range. - (set_nonzero_bits, get_nonzero_bits): New functions. - - * tree-cfg.c (assert_unreachable_fallthru_edge_p): New function. - * tree-cfg.h (assert_unreachable_fallthru_edge_p): New prototype. - * tree-vrp.c (all_imm_uses_in_stmt_or_feed_cond): New function. - (remove_range_assertions): If ASSERT_EXPR_VAR has no other immediate - uses but in the condition and ASSERT_EXPR and the other successor of - the predecessor bb is __builtin_unreachable (), set_range_info of the - ASSERT_EXPR_VAR to the range info of the ASSERT_EXPR's lhs. - -2013-10-31 Martin Jambor - - PR rtl-optimization/58934 - Revert: - 2013-10-30 Martin Jambor - PR rtl-optimization/10474 - * ira.c (find_moveable_pseudos): Do not calculate dominance info - nor df analysis. - (interesting_dest_for_shprep): New function. - (split_live_ranges_for_shrink_wrap): Likewise. - (ira): Calculate dominance info and df analysis. Call - split_live_ranges_for_shrink_wrap. - -2013-10-31 Richard Sandiford - Yury Gribov - - PR sanitizer/58543 - * asan.c (asan_clear_shadow): Allocate a new vreg for temporary - shadow pointer to avoid clobbering the main one. - -2013-10-31 Zhenqiang Chen - - * lower-subreg.c (resolve_simple_move): Copy REG_INC note. - -2013-10-30 Vladimir Makarov - - PR bootstrap/58933 - * ira-color.c (update_costs_from_copies): Add new parameter. Use - it for calling update_costs_from_allocno. - (assign_hard_reg): Call restore_costs_from_copies only for - !retry_p. Pass new argument to update_costs_from_copies. - (color_pass): Pass new argument to update_costs_from_copies. - (ira_mark_allocation_change): Ditto. - -2013-10-30 Sharad Singhai - - PR middle-end/58134 - * opts.c (common_handle_option): Remove deprecated option - -ftree-vectorizer-verbose. - * doc/invoke.texi (Debugging Options): Ditto. - * opts-global.c (handle_common_deferred_options): Ditto. - (dump_remap_tree_vectorizer_verbose): Delete. - * common.opt: Set -ftree-vectorizer-verbose as an ignored option. - -2013-10-30 DJ Delorie - - * config/rx/rx.c (ADD_RX_BUILTIN0): New macro, used for builtins - that take no arguments. - -2013-10-30 Joern Rennecke - - PR other/58545 - * reload1.c (update_eliminables_and_spill): New function, broken - out of reload. - (reload): Use it. Check for frame size change after frame size - alignment, and call update_eliminables_and_spill first if continue-ing. - -2013-10-30 Cong Hou - - PR target/58762 - * config/i386/i386-protos.h (ix86_expand_sse2_abs): New function. - * config/i386/i386.c (ix86_expand_sse2_abs): New function. - * config/i386/sse.md: Add SSE2 support to abs (8/16/32-bit-int). - -2013-10-18 Mikael Pettersson - - PR rtl-optimization/58369 - * reload1.c (compute_reload_subreg_offset): New function. - (choose_reload_regs): Use it to pass endian-correct - offset to subreg_regno_offset. - -2013-10-30 Tobias Burnus - - PR other/33426 - * tree-cfg.c (replace_loop_annotate): Replace warning by - warning_at. - -2013-10-30 Jason Merrill - - * configure.ac (loose_warn): Add -Wno-format if - --disable-build-format-warnings. - -2013-10-30 David Malcolm - - * cgraphunit.c (analyze_functions): Split symtab_node declarations - onto multiple lines to make things easier for rename_symtab.py. - - * symtab.c (symtab_dissolve_same_comdat_group_list): Likewise. - (symtab_semantically_equivalent_p): Likewise. - -2013-10-30 Vladimir Makarov - - PR target/58784 - * lra.c (check_rtl): Remove address check before LRA work. - -2013-10-30 Marc Glisse - - * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Look for a - POINTER_PLUS_EXPR in the defining statement. - -2013-10-30 Vladimir Makarov - - * regmove.c: Remove. - * tree-pass.h (make_pass_regmove): Remove. - * timevar.def (TV_REGMOVE): Remove. - * passes.def (pass_regmove): Remove. - * opts.c (default_options_table): Remove entry for regmove. - * doc/passes.texi: Remove regmove pass description. - * doc/invoke.texi (-foptimize-register-move, -fregmove): Remove - options. - (-fdump-rtl-regmove): Ditto. - * common.opt (foptimize-register-move, fregmove): Ignore. - * Makefile.in (OBJS): Remove regmove.o. - * regmove.c: Remove. - * ira-int.h (struct ira_allocno_pref, ira_pref_t): New structure - and type. - (struct ira_allocno) New member allocno_prefs. - (ALLOCNO_PREFS): New macro. - (ira_prefs, ira_prefs_num): New external vars. - (ira_setup_alts, ira_get_dup_out_num, ira_debug_pref): New prototypes. - (ira_debug_prefs, ira_debug_allocno_prefs, ira_create_pref): Ditto. - (ira_add_allocno_pref, ira_remove_pref, ira_remove_allocno_prefs): - Ditto. - (ira_add_allocno_copy_to_list): Remove prototype. - (ira_swap_allocno_copy_ends_if_necessary): Ditto. - (ira_pref_iterator): New type. - (ira_pref_iter_init, ira_pref_iter_cond): New functions. - (FOR_EACH_PREF): New macro. - * ira.c (commutative_constraint_p): Move from ira-conflicts.c. - (ira_get_dup_out_num): Ditto. Rename from get_dup_num. Modify the - code. - (ira_setup_alts): New function. - (decrease_live_ranges_number): New function. - (ira): Call the above function. - * ira-build.c (ira_prefs, ira_prefs_num): New global vars. - (ira_create_allocno): Initialize allocno prefs. - (pref_pool, pref_vec): New static vars. - (initiate_prefs, find_allocno_pref, ira_create_pref): New - functions. - (add_allocno_pref_to_list, ira_add_allocno_pref, print_pref): Ditto. - (ira_debug_pref, print_prefs, ira_debug_prefs): Ditto. - (print_allocno_prefs, ira_debug_allocno_prefs, finish_pref): Ditto. - (ira_remove_pref, ira_remove_allocno_prefs, finish_prefs): Ditto. - (ira_add_allocno_copy_to_list): Make static. Rename to - add_allocno_copy_to_list. - (ira_swap_allocno_copy_ends_if_necessary): Make static. Rename to - swap_allocno_copy_ends_if_necessary. - (remove_unnecessary_allocnos, remove_low_level_allocnos): Call - ira_remove_allocno_prefs. - (ira_flattening): Ditto. - (ira_build): Call initiate_prefs, print_prefs. - (ira_destroy): Call finish_prefs. - * ira-color.c (struct update_cost_record): New. - (struct allocno_color_data): Add new member update_cost_records. - (update_cost_record_pool): New static var. - (init_update_cost_records, get_update_cost_record): New functions. - (free_update_cost_record_list, finish_update_cost_records): Ditto. - (struct update_cost_queue_elem): Add member from. - (initiate_cost_update): Call init_update_cost_records. - (finish_cost_update): Call finish_update_cost_records. - (queue_update_cost, get_next_update_cost): Add new param from. - (Update_allocno_cost, update_costs_from_allocno): New functions. - (update_costs_from_prefs): Ditto. - (update_copy_costs): Rename to update_costs_from_copies. - (restore_costs_from_copies): New function. - (update_conflict_hard_regno_costs): Don't go back. - (assign_hard_reg): Call restore_costs_from_copies. Add printing - more debug info. - (pop_allocnos): Add priniting more debug info. - (color_allocnos): Remove prefs for conflicting hard regs. - Call update_costs_from_prefs. - * ira-conflicts.c (commutative_constraint_p): Move to ira.c - (get_dup_num): Rename, modify, and move to ira.c - (process_regs_for_copy): Add prefs. - (add_insn_allocno_copies): Put src as first arg of - process_regs_for_copy. Remove dead code. Call ira_setup_alts. - * ira-costs.c (record_reg_classes): Modify and move code into - record_operands_costs. - (find_costs_and_classes): Create prefs for the hard reg of small - reg class. - (process_bb_node_for_hard_reg_moves): Add prefs. - -2013-10-30 Richard Biener - - PR middle-end/57100 - * basic-block.h (pre_and_rev_post_order_compute_fn): New function. - * cfganal.c (pre_and_rev_post_order_compute_fn): New function - as worker for ... - (pre_and_rev_post_order_compute): ... which now wraps it. - * graph.c (draw_cfg_nodes_no_loops): Use - pre_and_rev_post_order_compute_fn to avoid ICEing and dependence - on cfun. - -2013-10-30 Christian Bruel - - * config/sh/sh-mem.cc (sh_expand_cmpnstr): New function. - (sh_expand_cmpstr): Handle known align and schedule improvements. - * config/sh/sh-protos.h (sh_expand_cmpstrn): Declare. - * config/sh/sh.md (cmpstrnsi): New pattern. - -2013-10-30 Martin Jambor - - PR rtl-optimization/10474 - * ira.c (find_moveable_pseudos): Do not calculate dominance info - nor df analysis. - (interesting_dest_for_shprep): New function. - (split_live_ranges_for_shrink_wrap): Likewise. - (ira): Calculate dominance info and df analysis. Call - split_live_ranges_for_shrink_wrap. - -2013-10-30 Ramana Radhakrishnan - - PR target/58854 - * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Emit blockage. - -2013-10-30 Ilya Enkovich - - * tree-core.h (tree_index): Add TI_POINTER_BOUNDS_TYPE. - * tree.h (POINTER_BOUNDS_P): New. - (BOUNDED_TYPE_P): New. - (BOUNDED_P): New. - (pointer_bounds_type_node): New. - * tree.c (build_common_tree_nodes): Initialize - pointer_bounds_type_node. - * gimple.h (gimple_call_get_nobnd_arg_index): New. - (gimple_call_num_nobnd_args): New. - (gimple_call_nobnd_arg): New. - (gimple_return_retbnd): New. - (gimple_return_set_retbnd): New - * gimple.c (gimple_build_return): Increase number of ops - for return statement. - (gimple_call_get_nobnd_arg_index): New. - * gimple-pretty-print.c (dump_gimple_return): Print second op. - -2013-10-30 Ilya Enkovich - - * ipa.c (cgraph_build_static_cdtor_1): Support contructors - with "chkp ctor" and "bnd_legacy" attributes. - * gimplify.c (gimplify_init_constructor): Avoid infinite - loop during gimplification of bounds initializer. - -2013-10-30 Ilya Enkovich - - * c-family/c-common.c (handle_bnd_variable_size_attribute): New. - (handle_bnd_legacy): New. - (c_common_attribute_table): Add bnd_variable_size and bnd_legacy. - * doc/extend.texi: Document bnd_variable_size and bnd_legacy - attributes. - -2013-10-29 Ilya Enkovich - - * builtin-types.def (BT_FN_VOID_CONST_PTR): New. - (BT_FN_PTR_CONST_PTR): New. - (BT_FN_CONST_PTR_CONST_PTR): New. - (BT_FN_PTR_CONST_PTR_SIZE): New. - (BT_FN_PTR_CONST_PTR_CONST_PTR): New. - (BT_FN_VOID_PTRPTR_CONST_PTR): New. - (BT_FN_VOID_CONST_PTR_SIZE): New. - (BT_FN_PTR_CONST_PTR_CONST_PTR_SIZE): New. - * chkp-builtins.def: New. - * builtins.def: include chkp-builtins.def. - (DEF_CHKP_BUILTIN): New. - * builtins.c (expand_builtin): Support BUILT_IN_CHKP_INIT_PTR_BOUNDS, - BUILT_IN_CHKP_NULL_PTR_BOUNDS, BUILT_IN_CHKP_COPY_PTR_BOUNDS, - BUILT_IN_CHKP_CHECK_PTR_LBOUNDS, BUILT_IN_CHKP_CHECK_PTR_UBOUNDS, - BUILT_IN_CHKP_CHECK_PTR_BOUNDS, BUILT_IN_CHKP_SET_PTR_BOUNDS, - BUILT_IN_CHKP_NARROW_PTR_BOUNDS, BUILT_IN_CHKP_STORE_PTR_BOUNDS, - BUILT_IN_CHKP_GET_PTR_LBOUND, BUILT_IN_CHKP_GET_PTR_UBOUND, - BUILT_IN_CHKP_BNDMK, BUILT_IN_CHKP_BNDSTX, BUILT_IN_CHKP_BNDCL, - BUILT_IN_CHKP_BNDCU, BUILT_IN_CHKP_BNDLDX, BUILT_IN_CHKP_BNDRET, - BUILT_IN_CHKP_INTERSECT, BUILT_IN_CHKP_ARG_BND, BUILT_IN_CHKP_NARROW, - BUILT_IN_CHKP_EXTRACT_LOWER, BUILT_IN_CHKP_EXTRACT_UPPER. - * common.opt (fcheck-pointer-bounds): New. - * toplev.c (process_options): Check Pointer Bounds Checker is - supported. - * doc/extend.texi: Document Pointer Bounds Checker built-in functions. - -2013-10-30 Ilya Enkovich - - * target.def (builtin_chkp_function): New. - (chkp_bound_type): New. - (chkp_bound_mode): New. - (fn_abi_va_list_bounds_size): New. - (load_bounds_for_arg): New. - (store_bounds_for_arg): New. - * targhooks.h (default_load_bounds_for_arg): New. - (default_store_bounds_for_arg): New. - (default_fn_abi_va_list_bounds_size): New. - (default_chkp_bound_type): New. - (default_chkp_bound_mode): New. - (default_builtin_chkp_function): New. - * targhooks.c (default_load_bounds_for_arg): New. - (default_store_bounds_for_arg): New. - (default_fn_abi_va_list_bounds_size): New. - (default_chkp_bound_type): New. - (default_chkp_bound_mode); New. - (default_builtin_chkp_function): New. - * doc/tm.texi.in (TARGET_FN_ABI_VA_LIST_BOUNDS_SIZE): New. - (TARGET_LOAD_BOUNDS_FOR_ARG): New. - (TARGET_STORE_BOUNDS_FOR_ARG): New. - (TARGET_BUILTIN_CHKP_FUNCTION): New. - (TARGET_CHKP_BOUND_TYPE): New. - (TARGET_CHKP_BOUND_MODE): New. - * doc/tm.texi: Regenerated. - * langhooks.h (lang_hooks): Add chkp_supported field. - * langhooks-def.h (LANG_HOOKS_CHKP_SUPPORTED): New. - (LANG_HOOKS_INITIALIZER); Add LANG_HOOKS_CHKP_SUPPORTED. - -2013-10-29 Andrew Pinski - - * tree-ssa-ifcombine.c: Include rtl.h and tm_p.h. - (ifcombine_ifandif): Handle cases where maybe_fold_and_comparisons - fails, combining the branches anyways. - (tree_ssa_ifcombine): Inverse the order of the basic block walk, - increases the number of combinings. - * gimple.h (gsi_start_nondebug_after_labels_bb): New function. - -2013-10-29 Mike Stump - - * machmode.def (PARTIAL_INT_MODE): Add precision and name. - * genmodes.c (PARTIAL_INT_MODE): Add precision and name. - (make_vector_mode): Increase namebuf to 16. - (emit_insn_modes_h): When processing BImode, don't - also match partial int modes. - (emit_class_narrowest_mode): Likewise. - - * config/bfin/bfin-modes.def: Add precision to PDI. - * config/m32c/m32c-modes.def: Add precision to PSI. - * config/msp430/msp430-modes.def: Add precision to PSI. - * config/rs6000/rs6000-modes.def: Add precision to PTI. - * config/sh/sh-modes.def: Add precision to PSI and PDI. - -2013-10-29 Oleg Endo - - PR target/54236 - * config/sh/sh.md (*addc): Rename existing variations to ... - (*addc_r_r_1, *addc_2r_1, *addc_r_1): ... these. - (*addc_r_lsb, *addc_r_r_lsb, *addc_r_lsb_r, *addc_2r_lsb, *addc_r_msb, - *addc_r_r_msb, *addc_2r_msb): New insn_and_split patterns. - * config/sh/sh.c (addsubcosts): Handle some addc special cases. - -2013-10-29 Teresa Johnson - - PR ipa/58862 - * tree-ssa-tail-merge.c (replace_block_by): Tolerate profile - insanities when updating probabilities. - -2013-10-29 David Malcolm - - * gdbhooks.py (CGraphNodePrinter.to_string): Update gdb - prettyprinter for cgraph_node to reflect the conversion of the - symtable types to a C++ class hierarchy: it now *is* a - symtab_node_base, rather than having one (named "symbol"). - -2013-10-29 Balaji V. Iyer - - * builtins.c (is_builtin_name): Added a check for __cilkrts_detach and - __cilkrts_pop_frame. If matched, then return true for built-in - function name. - (expand_builtin): Added BUILT_IN_CILK_DETACH and - BUILT_IN_CILK_POP_FRAME case. - * langhooks-def.h (lhd_install_body_with_frame_cleanup): New prototype. - (lhs_cilk_detect_spawn): Likewise. - (LANG_HOOKS_DECLS): Added LANG_HOOKS_CILKPLUS. - (LANG_HOOKS_CILKPLUS_DETECT_SPAWN_AND_UNWRAP): New #define. - (LANG_HOOKS_CILKPLUS_FRAME_CLEANUP): Likewise. - (LANG_HOOKS_CILKPLUS_GIMPLIFY_SPAWN): Likewise. - (LANG_HOOKS_CILKPLUS): Likewise. - * tree.h (CILK_SPAWN_FN): Likewise. - * builtin.def (DEF_CILK_BUILTIN_STUB): Likewise. - * Makefile.in (C_COMMON_OBJS): Added c-family/cilk.o. - (OBJS): Added cilk-common.o. - (BUILTINS_DEF): Added cilk-builtins.def. - * langhooks.c (lhd_install_body_with_frame_cleanup): New function. - (lhd_cilk_detect_spawn): Likewise. - * langhooks.h (lang_hooks_for_cilkplus): New struct. - (struct lang_hooks): Added new field called "cilkplus." - * cilk-common.c: New file. - * cilk.h: Likewise. - * cilk-builtins.def: Likewise. - * cppbuiltin.c (define_builtin_macros_for_compilation_flags): Added - "__cilk" macro and set it to 200. - * function.h (struct function::cilk_frame_decl): New field. - (struct function::is_cilk_function): Likewise. - (struct function::calls_cilk_spawn): Likewise. - * gimplify.c (gimplify_call_expr): Added a check if the function call - being gimplified is a spawn detach point. If so, then add pop_frame - and detach function calls. - (gimplify_expr): Added a CILK_SPAWN_STMT and CILK_SYNC_STMT case - for gimplifying _Cilk_spawn and _Cilk_sync statements. - (gimplify_return_expr): Added a check for _Cilk_spawn usage in - function. If so, added a _Cilk_sync and gimplified it. - (gimplify_modify_expr): Added a check for _Cilk_spawn in MODIFY and - INIT_EXPRs. If so, then call gimplify_cilk_spawn. - * ipa-inline-analysis (initialize_inline_failed): Prevent inlining of - spawner function. - (can_inline_edge_p): Prevent inling of spawnee function. - * ira.c (ira_setup_eliminable_regset): Force usage of frame pointer - for functions that use Cilk keywords. - * tree-inline.h (struct copy_body_data::remap_var_for_cilk): New field. - * tree-pretty-print.c (dump_generic_node): Added CILK_SPAWN_STMT and - CILK_SYNC_STMT cases. - * tree.def (DEFTREECODE): Added CILK_SPAWN_STMT and CILK_SYNC_STMT - trees. - * generic.texi (CILK_SPAWN_STMT): Added documentation for _Cilk_spawn. - (CILK_SYNC_STMT): Added documentation for _Cilk_sync. - * passes.texi (Cilk Keywords): New section that describes the compiler - code changes for handling Cilk Keywords. - -2013-10-29 David Malcolm - - Patch autogenerated by refactor_symtab.py from - https://github.com/davidmalcolm/gcc-refactoring-scripts - revision 58bb219cc090b2f4516a9297d868c245495ee622 - - * asan.c (asan_finish_file): Update for conversion of symtab types to - a true class hierarchy. - * cfgexpand.c (estimated_stack_frame_size): Likewise. - * cgraph.c (cgraph_get_body): Likewise. - (cgraph_get_create_real_symbol_node): Likewise. - (verify_cgraph_node): Likewise. - (verify_edge_corresponds_to_fndecl): Likewise. - (verify_edge_count_and_frequency): Likewise. - (cgraph_will_be_removed_from_program_if_no_direct_calls): Likewise. - (cgraph_can_remove_if_no_direct_calls_p): Likewise. - (cgraph_can_remove_if_no_direct_calls_and_refs_p): Likewise. - (cgraph_node_cannot_return): Likewise. - (cgraph_set_pure_flag_1): Likewise. - (cgraph_set_const_flag_1): Likewise. - (cgraph_set_nothrow_flag_1): Likewise. - (cgraph_make_node_local_1): Likewise. - (cgraph_for_node_and_aliases): Likewise. - (cgraph_for_node_thunks_and_aliases): Likewise. - (cgraph_node_can_be_local_p): Likewise. - (cgraph_node_cannot_be_local_p_1): Likewise. - (cgraph_function_body_availability): Likewise. - (dump_cgraph_node): Likewise. - (cgraph_rtl_info): Likewise. - (cgraph_mark_address_taken_node): Likewise. - (cgraph_remove_node): Likewise. - (cgraph_release_function_body): Likewise. - (cgraph_update_edges_for_call_stmt_node): Likewise. - (cgraph_redirect_edge_call_stmt_to_callee): Likewise. - (cgraph_make_edge_direct): Likewise. - (cgraph_resolve_speculation): Likewise. - (cgraph_speculative_call_info): Likewise. - (cgraph_turn_edge_to_speculative): Likewise. - (cgraph_create_edge_1): Likewise. - (cgraph_set_call_stmt): Likewise. - (cgraph_node_for_asm): Likewise. - (cgraph_add_thunk): Likewise. - (cgraph_same_body_alias): Likewise. - (cgraph_create_function_alias): Likewise. - (cgraph_create_node): Likewise. - (cgraph_create_empty_node): Likewise. - (record_function_versions): Likewise. - (used_from_object_file_p): Likewise. - * cgraph.h (symtab_can_be_discarded): Likewise. - (symtab_real_symbol_p): Likewise. - (cgraph_mark_force_output_node): Likewise. - (cgraph_edge_recursive_p): Likewise. - (symtab_alias_target): Likewise. - (varpool_all_refs_explicit_p): Likewise. - (varpool_can_remove_if_no_refs): Likewise. - (cgraph_only_called_directly_or_aliased_p): Likewise. - (cgraph_next_function_with_gimple_body): Likewise. - (cgraph_first_function_with_gimple_body): Likewise. - (cgraph_function_with_gimple_body_p): Likewise. - (cgraph_next_function): Likewise. - (cgraph_first_function): Likewise. - (cgraph_next_defined_function): Likewise. - (cgraph_first_defined_function): Likewise. - (varpool_next_defined_variable): Likewise. - (varpool_first_defined_variable): Likewise. - (varpool_next_static_initializer): Likewise. - (varpool_first_static_initializer): Likewise. - (varpool_next_variable): Likewise. - (varpool_first_variable): Likewise. - (varpool_node_name): Likewise. - (varpool): Likewise. - (cgraph): Likewise. - (is_a_helper ::test): Likewise. - (is_a_helper ::test): Likewise. - (varpool_variable_node): Likewise. - (cgraph_function_or_thunk_node): Likewise. - (varpool_alias_target): Likewise. - (cgraph_alias_target): Likewise. - (cgraph_node_name): Likewise. - (varpool_node_asm_name): Likewise. - (cgraph_node_asm_name): Likewise. - * cgraphbuild.c (remove_cgraph_callee_edges): Likewise. - (cgraph_rebuild_references): Likewise. - (rebuild_cgraph_edges): Likewise. - (record_eh_tables): Likewise. - (build_cgraph_edges): Likewise. - (mark_store): Likewise. - (mark_load): Likewise. - (mark_address): Likewise. - (record_type_list): Likewise. - (record_reference): Likewise. - * cgraphclones.c (cgraph_materialize_all_clones): Likewise. - (cgraph_materialize_clone): Likewise. - (cgraph_function_versioning): Likewise. - (cgraph_copy_node_for_versioning): Likewise. - (update_call_expr): Likewise. - (cgraph_find_replacement_node): Likewise. - (cgraph_create_virtual_clone): Likewise. - (cgraph_clone_node): Likewise. - * cgraphunit.c (compile): Likewise. - (output_weakrefs): Likewise. - (output_in_order): Likewise. - (expand_function): Likewise. - (assemble_thunks_and_aliases): Likewise. - (expand_thunk): Likewise. - (mark_functions_to_output): Likewise. - (handle_alias_pairs): Likewise. - (analyze_functions): Likewise. - (walk_polymorphic_call_targets): Likewise. - (varpool_finalize_decl): Likewise. - (process_function_and_variable_attributes): Likewise. - (cgraph_process_same_body_aliases): Likewise. - (analyze_function): Likewise. - (cgraph_add_new_function): Likewise. - (cgraph_finalize_function): Likewise. - (referred_to_p): Likewise. - (cgraph_reset_node): Likewise. - (cgraph_process_new_functions): Likewise. - (enqueue_node): Likewise. - (decide_is_symbol_needed): Likewise. - * coverage.c (coverage_compute_profile_id): Likewise. - * dbxout.c (dbxout_expand_expr): Likewise. - * dwarf2out.c (premark_types_used_by_global_vars_helper): Likewise. - (reference_to_unused): Likewise. - * gimple-fold.c (can_refer_decl_in_current_unit_p): Likewise. - * gimplify.c (unvisit_body): Likewise. - (unshare_body): Likewise. - * ipa-cp.c (ipcp_generate_summary): Likewise. - (ipcp_decision_stage): Likewise. - (identify_dead_nodes): Likewise. - (decide_whether_version_node): Likewise. - (decide_about_value): Likewise. - (perhaps_add_new_callers): Likewise. - (create_specialized_node): Likewise. - (update_profiling_info): Likewise. - (ipcp_propagate_stage): Likewise. - (estimate_local_effects): Likewise. - (good_cloning_opportunity_p): Likewise. - (devirtualization_time_bonus): Likewise. - (propagate_constants_accross_call): Likewise. - (initialize_node_lattices): Likewise. - (ipcp_cloning_candidate_p): Likewise. - (determine_versionability): Likewise. - (print_all_lattices): Likewise. - (print_lattice): Likewise. - (ipcp_discover_new_direct_edges): Likewise. - * ipa-devirt.c (ipa_devirt): Likewise. - (likely_target_p): Likewise. - (update_type_inheritance_graph): Likewise. - (possible_polymorphic_call_target_p): Likewise. - (dump_possible_polymorphic_call_targets): Likewise. - (devirt_variable_node_removal_hook): Likewise. - (record_binfo): Likewise. - (maybe_record_node): Likewise. - (build_type_inheritance_graph): Likewise. - * ipa-inline-analysis.c (inline_write_summary): Likewise. - (inline_generate_summary): Likewise. - (inline_analyze_function): Likewise. - (do_estimate_growth): Likewise. - (simple_edge_hints): Likewise. - (estimate_node_size_and_time): Likewise. - (estimate_edge_devirt_benefit): Likewise. - (compute_inline_parameters): Likewise. - (estimate_function_body_sizes): Likewise. - (compute_bb_predicates): Likewise. - (initialize_inline_failed): Likewise. - (dump_inline_summary): Likewise. - (dump_inline_edge_summary): Likewise. - * ipa-inline-transform.c (inline_transform): Likewise. - (preserve_function_body_p): Likewise. - (save_inline_function_body): Likewise. - (inline_call): Likewise. - (clone_inlined_nodes): Likewise. - (can_remove_node_now_p): Likewise. - (can_remove_node_now_p_1): Likewise. - * ipa-inline.c (early_inliner): Likewise. - (early_inline_small_functions): Likewise. - (inline_always_inline_functions): Likewise. - (ipa_inline): Likewise. - (flatten_function): Likewise. - (inline_small_functions): Likewise. - (speculation_useful_p): Likewise. - (recursive_inlining): Likewise. - (update_caller_keys): Likewise. - (reset_edge_caches): Likewise. - (update_edge_key): Likewise. - (edge_badness): Likewise. - (relative_time_benefit): Likewise. - (want_inline_self_recursive_call_p): Likewise. - (want_inline_small_function_p): Likewise. - (want_early_inline_function_p): Likewise. - (num_calls): Likewise. - (can_early_inline_edge_p): Likewise. - (can_inline_edge_p): Likewise. - (report_inline_failed_reason): Likewise. - * ipa-profile.c (ipa_profile): Likewise. - (ipa_propagate_frequency): Likewise. - (ipa_propagate_frequency_1): Likewise. - (ipa_profile_generate_summary): Likewise. - * ipa-prop.c (ipcp_transform_function): Likewise. - (read_replacements_section): Likewise. - (ipa_prop_read_section): Likewise. - (ipa_modify_call_arguments): Likewise. - (ipa_print_node_params): Likewise. - (propagate_controlled_uses): Likewise. - (update_indirect_edges_after_inlining): Likewise. - (remove_described_reference): Likewise. - (ipa_make_edge_direct_to_target): Likewise. - (ipa_analyze_node): Likewise. - (ipa_analyze_params_uses): Likewise. - (ipa_compute_jump_functions): Likewise. - (ipa_get_callee_param_type): Likewise. - (ipa_print_node_jump_functions): Likewise. - (ipa_initialize_node_params): Likewise. - (ipa_populate_param_decls): Likewise. - (ipa_func_spec_opts_forbid_analysis_p): Likewise. - (write_agg_replacement_chain): Likewise. - (ipa_write_node_info): Likewise. - (ipa_edge_duplication_hook): Likewise. - (try_decrement_rdesc_refcount): Likewise. - * ipa-pure-const.c (propagate_nothrow): Likewise. - (propagate_pure_const): Likewise. - (pure_const_read_summary): Likewise. - (pure_const_write_summary): Likewise. - (analyze_function): Likewise. - * ipa-ref-inline.h (ipa_ref_referred_ref_list): Likewise. - (ipa_ref_referring_ref_list): Likewise. - * ipa-ref.c (ipa_clear_stmts_in_references): Likewise. - (ipa_remove_stmt_references): Likewise. - (ipa_find_reference): Likewise. - (ipa_dump_referring): Likewise. - (ipa_dump_references): Likewise. - (ipa_record_reference): Likewise. - * ipa-reference.c (ipa_reference_read_optimization_summary): Likewise. - (ipa_reference_write_optimization_summary): Likewise. - (write_node_summary_p): Likewise. - (propagate): Likewise. - (read_write_all_from_decl): Likewise. - (generate_summary): Likewise. - (analyze_function): Likewise. - (propagate_bits): Likewise. - (ipa_reference_get_not_written_global): Likewise. - (ipa_reference_get_not_read_global): Likewise. - * ipa-split.c (execute_split_functions): Likewise. - (split_function): Likewise. - * ipa-utils.c (ipa_merge_profiles): Likewise. - (dump_cgraph_node_set): Likewise. - (ipa_reverse_postorder): Likewise. - (ipa_edge_within_scc): Likewise. - (ipa_get_nodes_in_cycle): Likewise. - (ipa_free_postorder_info): Likewise. - (ipa_reduced_postorder): Likewise. - (searchc): Likewise. - (recursive_call_p): Likewise. - * ipa.c (ipa_cdtor_merge): Likewise. - (record_cdtor_fn): Likewise. - (function_and_variable_visibility): Likewise. - (varpool_externally_visible_p): Likewise. - (cgraph_externally_visible_p): Likewise. - (comdat_can_be_unshared_p): Likewise. - (comdat_can_be_unshared_p_1): Likewise. - (address_taken_from_non_vtable_p): Likewise. - (ipa_discover_readonly_nonaddressable_vars): Likewise. - (symtab_remove_unreachable_nodes): Likewise. - (walk_polymorphic_call_targets): Likewise. - (process_references): Likewise. - (enqueue_node): Likewise. - (has_addr_references_p): Likewise. - (cgraph_non_local_node_p_1): Likewise. - * is-a.h (varpool_analyze_node): Likewise. - * lto-cgraph.c (input_symtab): Likewise. - (merge_profile_summaries): Likewise. - (input_cgraph_1): Likewise. - (input_edge): Likewise. - (input_varpool_node): Likewise. - (input_node): Likewise. - (input_overwrite_node): Likewise. - (compute_ltrans_boundary): Likewise. - (output_refs): Likewise. - (lto_output_varpool_node): Likewise. - (lto_output_node): Likewise. - (reachable_from_other_partition_p): Likewise. - (referenced_from_other_partition_p): Likewise. - (lto_output_edge): Likewise. - (output_node_opt_summary): Likewise. - (add_node_to): Likewise. - (reachable_from_this_partition_p): Likewise. - (lto_set_symtab_encoder_in_partition): Likewise. - (lto_symtab_encoder_in_partition_p): Likewise. - (lto_set_symtab_encoder_encode_initializer): Likewise. - (lto_symtab_encoder_encode_initializer_p): Likewise. - (lto_set_symtab_encoder_encode_body): Likewise. - (lto_symtab_encoder_encode_body_p): Likewise. - * lto-section-in.c (lto_free_function_in_decl_state_for_node): - Likewise. - * lto-streamer-in.c (lto_read_body): Likewise. - (fixup_call_stmt_edges): Likewise. - (fixup_call_stmt_edges_1): Likewise. - * lto-streamer-out.c (produce_symtab): Likewise. - (output_symbol_p): Likewise. - (write_symbol): Likewise. - (lto_output): Likewise. - (copy_function): Likewise. - (output_function): Likewise. - * passes.c (function_called_by_processed_nodes_p): Likewise. - (ipa_write_optimization_summaries): Likewise. - (ipa_write_summaries): Likewise. - (do_per_function_toporder): Likewise. - (do_per_function): Likewise. - (dump_passes): Likewise. - * symtab.c (symtab_semantically_equivalent_p): Likewise. - (symtab_nonoverwritable_alias): Likewise. - (symtab_nonoverwritable_alias_1): Likewise. - (symtab_for_node_and_aliases): Likewise. - (symtab_resolve_alias): Likewise. - (fixup_same_cpp_alias_visibility): Likewise. - (symtab_alias_ultimate_target): Likewise. - (symtab_used_from_object_file_p): Likewise. - (verify_symtab_base): Likewise. - (dump_symtab_base): Likewise. - (symtab_node_name): Likewise. - (symtab_node_asm_name): Likewise. - (symtab_dissolve_same_comdat_group_list): Likewise. - (symtab_add_to_same_comdat_group): Likewise. - (symtab_unregister_node): Likewise. - (symtab_insert_node_to_hashtable): Likewise. - (symtab_register_node): Likewise. - (unlink_from_assembler_name_hash): Likewise. - (insert_to_assembler_name_hash): Likewise. - (eq_assembler_name): Likewise. - (hash_node_by_assembler_name): Likewise. - (eq_node): Likewise. - (hash_node): Likewise. - * toplev.c (wrapup_global_declaration_2): Likewise. - * trans-mem.c (ipa_tm_execute): Likewise. - (ipa_tm_transform_clone): Likewise. - (ipa_tm_transform_transaction): Likewise. - (ipa_tm_transform_calls_redirect): Likewise. - (ipa_tm_insert_gettmclone_call): Likewise. - (ipa_tm_insert_irr_call): Likewise. - (ipa_tm_create_version): Likewise. - (ipa_tm_create_version_alias): Likewise. - (ipa_tm_mark_forced_by_abi_node): Likewise. - (ipa_tm_mark_force_output_node): Likewise. - (ipa_tm_diagnose_tm_safe): Likewise. - (ipa_tm_mayenterirr_function): Likewise. - (ipa_tm_scan_irr_function): Likewise. - (ipa_tm_note_irrevocable): Likewise. - (ipa_tm_scan_calls_clone): Likewise. - (get_cg_data): Likewise. - * tree-eh.c (tree_could_trap_p): Likewise. - * tree-emutls.c (ipa_lower_emutls): Likewise. - (create_emultls_var): Likewise. - (lower_emutls_function_body): Likewise. - (gen_emutls_addr): Likewise. - (emutls_decl): Likewise. - (new_emutls_decl): Likewise. - * tree-inline.c (tree_function_versioning): Likewise. - (optimize_inline_calls): Likewise. - (expand_call_inline): Likewise. - (estimate_num_insns): Likewise. - (copy_bb): Likewise. - (delete_unreachable_blocks_update_callgraph): Likewise. - * tree-nested.c (gimplify_all_functions): Likewise. - (create_nesting_tree): Likewise. - (check_for_nested_with_variably_modified): Likewise. - * tree-pretty-print.c (dump_function_header): Likewise. - * tree-profile.c (tree_profiling): Likewise. - * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise. - (modify_function): Likewise. - (convert_callers): Likewise. - (convert_callers_for_node): Likewise. - * tree-ssa-structalias.c (ipa_pta_execute): Likewise. - (associate_varinfo_to_alias): Likewise. - (create_variable_info_for): Likewise. - (get_constraint_for_ssa_var): Likewise. - * tree-vectorizer.c (increase_alignment): Likewise. - * tree.c (find_decls_types_in_var): Likewise. - (find_decls_types_in_node): Likewise. - (free_lang_data_in_decl): Likewise. - * value-prof.c (gimple_ic_transform): Likewise. - (gimple_ic): Likewise. - (check_ic_target): Likewise. - (init_node_map): Likewise. - * varasm.c (decl_binds_to_current_def_p): Likewise. - (default_binds_local_p_1): Likewise. - (dump_tm_clone_pairs): Likewise. - (assemble_alias): Likewise. - (find_decl): Likewise. - (mark_decl_referenced): Likewise. - * varpool.c (varpool_for_node_and_aliases): Likewise. - (varpool_extra_name_alias): Likewise. - (varpool_create_variable_alias): Likewise. - (add_new_static_var): Likewise. - (varpool_finalize_named_section_flags): Likewise. - (varpool_remove_unreferenced_decls): Likewise. - (enqueue_node): Likewise. - (varpool_assemble_decl): Likewise. - (assemble_aliases): Likewise. - (varpool_analyze_node): Likewise. - (cgraph_variable_initializer_availability): Likewise. - (varpool_add_new_variable): Likewise. - (ctor_for_folding): Likewise. - (dump_varpool_node): Likewise. - (varpool_remove_initializer): Likewise. - (varpool_remove_node): Likewise. - (varpool_node_for_decl): Likewise. - (varpool_create_empty_node): Likewise. - * config/i386/i386.c (ix86_generate_version_dispatcher_body): Likewise. - (ix86_get_function_versions_dispatcher): Likewise. - -2013-10-29 David Malcolm - - * cgraph.h (symtab_node_base): Convert to a class; - add GTY((desc ("%h.type"), tag ("SYMTAB_SYMBOL"))), and take - chain_next/prev from symtab_node_def. - (cgraph_node): Inherit from symtab_node; add GTY option - tag ("SYMTAB_FUNCTION"). - (varpool_node): Inherit from symtab_node; add GTY option - tag ("SYMTAB_VARIABLE"). - (symtab_node_def): Remove. - (is_a_helper ::test (symtab_node_def *)): Convert to... - (is_a_helper ::test (symtab_node_base *)): ...this. - (is_a_helper ::test (symtab_node_def *)): Convert to... - (is_a_helper ::test (symtab_node_base *)): ...this. - - * ipa-ref.h (symtab_node_def): Drop. - (symtab_node): Change underlying type from symtab_node_def to - symtab_node_base. - (const_symtab_node): Likwise. - - * is-a.h: Update examples in comment. - - * symtab.c (symtab_hash): Change symtab_node_def to symtab_node_base. - (assembler_name_hash): Likewise. - -2013-10-29 Martin Liska - - * doc/tree-ssa.texi (gimple_phi_result): Document. - (gimple_phi_num_args, gimple_phi_arg): Likewise. - (gimple_phi_arg_edge, gimple_phi_arg_def): Likewise. - (PHI_RESULT, PHI_NUM_ARGS): Remove. - (PHI_ARG_ELT, PHI_ARG_EDGE, PHI_ARG_DEF): Likewise. - -2013-10-29 Andrew MacLeod - - * expr.h: Revert change and include tree-core.h. - * rtl.h: Revert change and don't include tree-core.h. - -2013-10-29 Andrew MacLeod - - * config/darwin.c: Include gimple.h. - * config/i386/winnt.c: Likewise. - -2013-10-29 Marc Glisse - - PR tree-optimization/19831 - * tree-ssa-alias.c (stmt_kills_ref_p_1): Handle BUILT_IN_FREE. - -2013-10-29 Andrew MacLeod - - * tree-outof-ssa.h: Remove include files. - * tree-outof-ssa.c: Add required include files from tree-outof-ssa.h. - * expr.c: Likewise. - * tree-ssa-coalesce.c: Likewise. - * cfgexpand.c: Likewise. - * tree-ssa-ter.c: Likewise. - * ipa-prop.h: Remove gimple.h and tree-core.h from include list. - * lto-streamer.h: Likewise. - * cgraphbuild.c: Add gimple.h to include list. - * data-streamer-in.c: Likewise. - * ipa-cp.c: Likewise. - * tree-streamer.c: Likewise. - * lto-compress.c: Likewise. - * ipa-reference.c: Likewise. - * data-streamer-out.c: Likewise. - * lto-cgraph.c: Likewise. - * cgraphclones.c: Likewise. - * ipa-utils.c: Likewise. - * data-streamer.c: Likewise. - * ipa-split.c: Likewise. - * lto-section-in.c: Likewise. - * tree-streamer-out.c: Likewise. - * ipa-prop.c: Likewise. - * tree-streamer-in.c: Likewise. - * symtab.c: Likewise. - * opts-global.c: Likewise. - * lto-opts.c: Likewise. - * lto-section-out.c: Likewise. - * lto-streamer.c: Likewise. - * rtl.h: Add tree-core.h to include list. - * expr.h: Remove tree-core.h from include list. - * gimple.h: Likewise. - * ipa-utils.h: Likewise. - * streamer-hooks.h: Likewise. - * streamer-hooks.c: Include input.h. - -2013-10-29 Kyrylo Tkachov - - * config/arm/arm.c (cortexa7_extra_costs): New table. - (arm_cortex_a7_tune): New. - * config/arm/arm-cores.def: Use cortex_a7 tuning for cortex-a7. - -2013-10-29 Eric Botcazou - - * expr.c (expand_expr_real_1) : Eliminate small redundancy. - -2013-10-29 David Malcolm - - * doc/gty.texi ("Inheritance and GTY"): Make it clear that - to use autogenerated markers for a class-hierarchy, every class - must have a GTY marker. - * gengtype.h (struct type): Add linked list of subclasses to - the "s" member of the union. - (add_subclass): New decl. - * gengtype-state.c (read_state_struct_type): Set up subclass - linked list. - * gengtype.c (get_ultimate_base_class): New. - (add_subclass): New. - (new_structure): Set up subclass linked list. - (set_gc_used_type): Propagate usage information to subclasses. - (output_mangled_typename): Use get_ultimate_base_class. - (walk_subclasses): Use the subclass linked list, avoiding an - O(N^2) when writing out all types. - (walk_type): Issue an error if the base class is missing a tag, - rather than generating bogus C code. Add a gcc_unreachable - default case, in case people omit tags from concrete subclasses, - or get the values wrong. - (write_func_for_structure): Issue an error for subclasses for - which the base doesn't have a "desc", since otherwise the - autogenerated routines for the base would silently fail to visit - any subclass fields. - (write_root): Use get_ultimate_base_class, tweaking constness of - tp to match that function's signature. - -2013-10-29 David Malcolm - - * doc/gty.texi (GTY Options): Add note about inheritance to - description of desc and tag. - (Inheritance and GTY): New. - -2013-10-29 David Malcolm - - * gengtype-parse.c (opts_have): Drop "static" so that - we can use this from gengtype.c. - * gengtype.c (set_gc_used_type): Mark any base class as used; - update field traversal to visit inherited fields. - (output_mangled_typename): Convert references to classes within - an inheritance hierarchy to reference the ultimate base class, - since only it will have gt_ functions. - (get_string_option): New. - (walk_subclasses): New. - (walk_type): Treat GTY structs that have a "desc" as being the - root of an inheritance hierarchy. Generate a switch on it - within the marking function which walks all subclasses, adding - cases for them via walk_subclasses. For subclasses, visit all - fields of the type (including inherited ones). - (write_func_for_structure): Don't write fns for subclasses, only - for the ultimate base class within an inheritance hierarchy. - Subclasses-marking will be handled by the base class marking functions. - (write_types): Likewise. - (write_local_func_for_structure): Likewise. - (USED_BY_TYPED_GC_P): Emit allocators for subclasses that have - a "tag" option (and are thus concrete subclasses). - (write_root): Use the marker function for the ultimate base class. - * gengtype.h (FOR_ALL_INHERITED_FIELDS): New. - (opts_have): Add declaration. - -2013-10-28 Vladimir Makarov - - * lra-spills.c (lra_final_code_change): Remove useless move insns - originated from moves of pseudos. - -2013-10-28 Jeff Law - - * lower-subreg.c (resolve_simple_move): Fix comment typo. - -2013-10-28 Trevor Saunders - - * df-scan.c (df_collection_rec): Adjust. - (copy_defs): New constant. - (copy_uses): Likewise. - (copy_eq_uses): Likewise. - (copy_mw): Likewise. - (copy_all): Likewise. - (df_insn_rescan): Adjust. - (df_notes_rescan): Likewise. - (df_swap_refs): Likewise. - (df_sort_and_compress_refs): Likewise. - (df_sort_and_compress_mws): Likewise. - (df_install_refs): Likewise. - (df_install_mws): Likewise. - (df_refs_add_to_chains): Add flags parameter controlling which vectors - are coppied. - (df_bb_refs_record): Adjust. - (df_record_entry_block_defs): Likewise. - (df_record_exit_block_defs): Likewise. - (df_refs_verify): Likewise. - (df_mws_verify): Likewise. - (df_insn_refs_verify): Likewise. - (df_bb_verify): Likewise. - * ipa-pure-const.c (finish_state): Remove. - (propagate): Adjust. - * tree-data-ref.c tree-ssa-alias.c tree-ssa-loop-ivcanon.c - tree-ssa-threadedge.c tree-vect-loop-manip.c tree-vect-slp.c - var-tracking.c: Adjust. - * vec.c (stack_vecs): Remove. - (register_stack_vec): Likewise. - (stack_vec_register_index): Likewise. - (unregister_stack_vec): Likewise. - * vec.h (struct va_stack): Remove. - (struct vec): Specialize as - struct vec instead since va_heap is the only - allocation strategy compatable with the vl_ptr layout. - (struct vec): Remove because it now gets an empty - specialization anyway. - (class stack_vec): New class. - (vec_stack_alloc): Remove. - (vec::using_auto_storage): New method. - -2013-10-28 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/i386.md (prefetch): Allow TARGET_AVX512PF. - (*prefetch_avx512pf_): New. - * config/i386/sse.md (avx512f_vmcmp3): Ditto. - (avx512f_maskcmp3): Ditto. - (vashrv16si3): Ditto. - -2013-10-28 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/i386.md (any_truncate): New. - (trunsuffix): Ditto. - * config/i386/predicates.md (const_8_to_9_operand): New. - (const_10_to_11_operand): Ditto. - (const_12_to_13_operand): Ditto. - (const_14_to_15_operand): Ditto. - (const_16_to_19_operand): Ditto. - (const_20_to_23_operand): Ditto. - (const_24_to_27_operand): Ditto. - (const_28_to_31_operand): Ditto. - * config/i386/sse.md (unspec): Add UNSPEC_UNSIGNED_FIX_NOTRUNC. - (cvtusi232): New. - (cvtusi264): Ditto. - (ufloatv16siv16sf2): Ditto. - (avx512f_fix_notruncv16sfv16si): Ditto. - (avx512f_ufix_notruncv16sfv16si): Ditto. - (avx512f_vcvtss2usi): Ditto. - (avx512f_vcvtss2usiq): Ditto. - (avx512f_vcvttss2usi): Ditto. - (avx512f_vcvttss2usiq): Ditto. - (avx512f_vcvtsd2usi): Ditto. - (avx512f_vcvtsd2usiq): Ditto. - (avx512f_vcvttsd2usi): Ditto. - (avx512f_vcvttsd2usiq): Ditto. - (ufloatv8siv8df): Ditto. - (avx512f_cvtdq2pd512_2): Ditto. - (avx512f_cvtpd2dq512): Ditto. - (avx512f_ufix_notruncv8dfv8si): Ditto. - (avx512f_cvtpd2ps512): Ditto. - (vec_unpacks_lo_v16sf): Ditto. - (vec_unpacks_hi_v16sf): Ditto. - (vec_unpacks_float_hi_v16si): Ditto. - (vec_unpacks_float_lo_v16si): Ditto. - (avx512f_unpckhps512): Ditto. - (avx512f_unpcklps512): Ditto. - (avx512f_movshdup512): Ditto. - (avx512f_movsldup512): Ditto. - (vec_extract_lo_v32hi): Ditto. - (vec_extract_hi_v32hi): Ditto. - (vec_extract_lo_v64qi): Ditto. - (vec_extract_hi_v64qi): Ditto. - (avx512f_unpckhpd512): Ditto. - (avx512f_movddup512): Ditto. - (avx512f_unpcklpd512): Ditto. - (*avx512f_unpcklpd512): Ditto. - (avx512f_shufps512_1): Ditto. - (avx512f_shufpd512_1): Ditto. - (avx512f_interleave_highv8di): Ditto. - (avx512f_interleave_lowv8di): Ditto. - (PMOV_DST_MODE): Ditto. - (pmov_src_mode): Ditto. - (pmov_src_lower): Ditto. - (pmov_suff): Ditto. - (*avx512f_2): Ditto. - (*avx512f_v8div16qi2): Ditto. - (*avx512f_v8div16qi2_store): Ditto. - (vec_widen_umult_even_v16si): Ditto. - (*vec_widen_umult_even_v16si): Ditto. - (vec_widen_smult_even_v16si): Ditto. - (*vec_widen_smult_even_v16si): Ditto. - (avx512f_interleave_highv16si): Ditto. - (avx512f_interleave_lowv16si): Ditto. - (avx512f_v16qiv16si2): Ditto. - (avx512f_v16hiv16si2): Ditto. - (avx512f_v8qiv8di2): Ditto. - (avx512f_v8hiv8di2): Ditto. - (avx512f_v8siv8di2): Ditto. - (avx512cd_maskb_vec_dupv8di): Ditto. - (avx512cd_maskw_vec_dupv16si): Ditto. - (avx512f_vcvtph2ps512): Ditto. - (avx512f_vcvtps2ph512): Ditto. - (VEC_EXTRACT_MODE): Extened with wider modes. - (VEC_PERM_AVX2): Ditto. - (VEC_PERM_CONST): Ditto. - -2013-10-28 Joern Rennecke - - * config/arc/arc.c (arc_ccfsm_post_advance): - Add comment about TYPE_RETURN. - -2013-10-28 Bin Cheng - - * tree-ssa-loop-ivopts.c (strip_offset_1): Change parameter type. - Count DECL_FIELD_BIT_OFFSET for COMPONENT_REF. - (strip_offset): Convert offset to unsigned number. - -2013-10-27 Tom de Vries - - * cfgexpand.c (gimple_expand_cfg): Remove test for parm_birth_insn. - Don't commit insertions after NOTE_INSN_FUNCTION_BEG. - -2013-10-27 Oleg Endo - - * config/sh/sh.c (MSW, LSW): Move and rename macros to... - * config/sh/sh.h (SH_REG_MSW_OFFSET, SH_REG_LSW_OFFSET): ... here. - (TARGET_BIG_ENDIAN): New macro. - * config/sh/sh.md: Use it instead of !TARGET_LITTLE_ENDIAN. - Use SH_REG_MSW_OFFSET and SH_REG_LSW_OFFSET. - * config/sh/sh.c: Likewise. - * config/sh/sh.h: Likewise. - -2013-10-27 Hans-Peter Nilsson - - * config/cris/cris.c (cris_emit_trap_for_misalignment): Replace the - removed PRED_MUDFLAP with PRED_NORETURN. Correct file-path in comment. - -2013-10-26 Oleg Endo - - * config/sh/sh.md (movmemsi): Remove empty constraints and predicates. - Fix formatting. - (cmpstr_t, cmpstrsi): Fix formatting. - -2013-10-26 Oleg Endo - - PR target/52483 - * config/sh/predicates.md (general_movdst_operand): Allow reg+reg - addressing, do not use general_operand for memory operands. - -2013-10-26 Vladimir Makarov - - Revert: - 2013-10-25 Vladimir Makarov - * lra-spills.c (lra_final_code_change): Remove useless move insns. - -2013-10-26 Jeff Law - - * predict.c (PRED_MUDFLAP): Remove. - * targhooks.c (build_va_arg_indirect_ref): Remove mudflap support. - - * Makefile.in (C_COMMON_OBJS): Remove tree-mudflap. - (OBJS): Remove tree-nomudflap.o - (GTFILES): Remove tree-mudflap.c - * builtins.c (expand_builtin_alloc): Remove mudflap support. - * gcc.c (MFWRAP_SPEC, MFLIB_SPEC): Likewise. - (mfwrap_spec, mflib_spec): Likewise. - (cpp_unique_options, cc1_options, static_specs): Likewise. - * gimplify (gimplify_vla_decl, build_va_arg_indirect_ref): Likewise. - * passes.def: Likewise. - * toplev.c (compile_file, process_options): Likewise. - * tree-inline.c (copy_tree_r): Likewise. - * tree-pass.,h (make_pass_mudflap_1, make_pass_mudflap_2): Likewise. - * varasm.c (make_decl_rtl, make_decl_rtl_for_debug): Likewise. - (build_constant_desc, output_constant_def_contents): Likewise. - (categorize_decl_for_section): Likewise. - * tree-mudflap.c: Removed. - * tree-mudflap.h: Removed. - * tree-nomudflap.c: Removed. - * bfin/uclinux.h (MFWRAP_SPEC): Remove. - * moxie/uclinux.h (MFWRAP_SPEC): Likewise. - * rs6000/aix.h (MFWRAP_SPEC, MFLIB_SPEC): Likewise. - * config/sol2.h (MFLIB_SPEC): Likewise. - * doc/install.texi: Remove mudflap references. - * doc/passes.texi: Similarly. - * doc/sourcebuild.texi: Similarly. - * doc/invoke.texi: Remove mudlfap related options. - -2013-10-25 Vladimir Makarov - - PR rtl-optimization/58759 - * lra-constraints.c (lra_constraints): Remove wrong condition to - remove insn setting up an equivalent pseudo. - -2013-10-25 Vladimir Makarov - - * config/rs6000/rs6000-protos.h - (rs6000_secondary_memory_needed_mode): New prototype. - * config/rs6000/rs6000.c: Include ira.h. - (TARGET_LRA_P): Redefine. - (rs6000_legitimate_offset_address_p): Call - legitimate_constant_pool_address_p in strict mode for LRA. - (rs6000_legitimate_address_p): Ditto. - (legitimate_lo_sum_address_p): Add code for LRA. Use lra_in_progress. - (rs6000_emit_move): Add LRA version of code to generate load/store - of SDmode values. - (rs6000_secondary_memory_needed_mode): New. - (rs6000_alloc_sdmode_stack_slot): Do nothing for LRA. - (rs6000_secondary_reload_class): Return NO_REGS for LRA for - constants, memory, and FP registers. - (rs6000_lra_p): New. - * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): New macro. - * config/rs6000/rs6000.opt (mlra): New option. - * lra-spills.c (lra_final_code_change): Remove useless move insns. - -2013-10-25 Yufeng Zhang - - * tree-ssa-math-opts.c (convert_plusminus_to_widen): Call - has_single_use () and not do the conversion if has_single_use () - returns false for the multiplication result. - -2013-10-25 David Malcolm - - * tree.h (EXCEPTIONAL_CLASS_P): Rename parameter from "CODE" - to "NODE", since this works on a "tree", not an - "enum tree_code". - (CONSTANT_CLASS_P): Likewise. - (TYPE_P): Likewise. - (DECL_P): Likewise. - (INDIRECT_REF_P): Likewise. - (REFERENCE_CLASS_P): Likewise. - (COMPARISON_CLASS_P): Likewise. - (UNARY_CLASS_P): Likewise. - (BINARY_CLASS_P): Likewise. - (STATEMENT_CLASS_P): Likewise. - (VL_EXP_CLASS_P): Likewise. - (EXPRESSION_CLASS_P): Likewise. - (IS_TYPE_OR_DECL_P): Likewise. - -2013-10-25 Marc Glisse - - * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Look for an - ADDR_EXPR in the defining statement. - -2013-10-25 Richard Biener - - PR tree-optimization/58626 - * tree-loop-distribution.c (enum rdg_dep_type): Remove - anti_dd, output_dd and input_dd. - (struct rdg_edge): Remove level and relation members. - (RDGE_LEVEL, RDGE_RELATION): Remove. - (dot_rdg_1): Adjust. - (create_rdg_edge_for_ddr): Remove. - (create_rdg_edges_for_scalar): Adjust. - (create_edge_for_control_dependence): Likewise. - (create_rdg_edges): Split into ... - (create_rdg_flow_edges): ... this - (create_rdg_cd_edges): ... and this. - (free_rdg): Adjust. - (build_rdg): Likewise, do not compute data dependences or - add edges for them. - (pg_add_dependence_edges): New function. - (pgcmp): Likewise. - (distribute_loop): First apply all non-dependence based - partition mergings. Then compute dependences between partitions - and merge and order partitions according to them. - -2013-10-25 Eric Botcazou - - PR rtl-optimization/58831 - * alias.c (init_alias_analysis): At the beginning of each iteration, - set the reg_seen[N] bit if static_reg_base_value[N] is non-null. - -2013-10-25 Eric Botcazou - - * recog.c (search_ofs): New static variable moved from... - (peep2_find_free_register): ...here. - (peephole2_optimize): Initialize it. - -2013-10-25 Tobias Burnus - - * doc/invoke.texi (fopenmp): Change supported OpenMP version to 4.0. - -2013-10-25 Uros Bizjak - - * config/i386/i386.h (TARGET_MPX): New define. - (TARGET_MPX_P): Ditto. - -2013-10-24 Ilya Enkovich - - * config/i386/constraints.md (B): New. - (Ti): New. - (Tb): New. - * config/i386/i386-c.c (ix86_target_macros_internal): Add __MPX__. - * config/i386/i386-modes.def (BND32): New. - (BND64): New. - * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): New. - * config/i386/i386.c (isa_opts): Add mmpx. - (regclass_map): Add bound registers. - (dbx_register_map): Likewise. - (dbx64_register_map): Likewise. - (svr4_dbx_register_map): Likewise. - (PTA_MPX): New. - (ix86_option_override_internal): Support MPX ISA. - (ix86_conditional_register_usage): Support bound registers. - (print_reg): Likewise. - (ix86_code_end): Add MPX bnd prefix. - (output_set_got): Likewise. - (ix86_output_call_insn): Likewise. - (ix86_print_operand): Add '!' (MPX bnd) print prefix support. - (ix86_print_operand_punct_valid_p): Likewise. - (ix86_print_operand_address): Support UNSPEC_BNDMK_ADDR and - UNSPEC_BNDMK_ADDR. - (ix86_class_likely_spilled_p): Add bound regs support. - (ix86_hard_regno_mode_ok): Likewise. - (x86_order_regs_for_local_alloc): Likewise. - (ix86_bnd_prefixed_insn_p): New. - * config/i386/i386.h (FIRST_PSEUDO_REGISTER): Fix to new value. - (FIXED_REGISTERS): Add bound registers. - (CALL_USED_REGISTERS): Likewise. - (REG_ALLOC_ORDER): Likewise. - (HARD_REGNO_NREGS): Likewise. - (TARGET_MPX): New. - (VALID_BND_REG_MODE): New. - (FIRST_BND_REG): New. - (LAST_BND_REG): New. - (reg_class): Add BND_REGS. - (REG_CLASS_NAMES): Likewise. - (REG_CLASS_CONTENTS): Likewise. - (BND_REGNO_P): New. - (ANY_BND_REG_P): New. - (BNDmode): New. - (HI_REGISTER_NAMES): Add bound registers. - * config/i386/i386.md (UNSPEC_BNDMK): New. - (UNSPEC_BNDMK_ADDR): New. - (UNSPEC_BNDSTX): New. - (UNSPEC_BNDLDX): New. - (UNSPEC_BNDLDX_ADDR): New. - (UNSPEC_BNDCL): New. - (UNSPEC_BNDCU): New. - (UNSPEC_BNDCN): New. - (UNSPEC_MPX_FENCE): New. - (BND0_REG): New. - (BND1_REG): New. - (type): Add mpxmov, mpxmk, mpxchk, mpxld, mpxst. - (length_immediate): Likewise. - (prefix_0f): Likewise. - (memory): Likewise. - (prefix_rep): Check for bnd prefix. - (length_nobnd): New. - (length): Use length_nobnd if specified. - (BND): New. - (bnd_ptr): New. - (BNDCHECK): New. - (bndcheck): New. - (*jcc_1): Add bnd prefix and rename length attr to length_nobnd. - (*jcc_2): Likewise. - (jump): Likewise. - (simple_return_internal): Likewise. - (simple_return_pop_internal): Likewise. - (*indirect_jump): Add MPX bnd prefix. - (*tablejump_1): Likewise. - (simple_return_internal_long): Likewise. - (simple_return_indirect_internal): Likewise. - (_mk): New. - (*_mk): New. - (mov): New. - (*mov_internal_mpx): New. - (_): New. - (*_): New. - (_ldx): New. - (*_ldx): New. - (_stx): New. - (*_stx): New. - * config/i386/predicates.md (lea_address_operand): Rename to... - (address_no_seg_operand): ... this. - (address_mpx_no_base_operand): New. - (address_mpx_no_index_operand): New. - (bnd_mem_operator): New. - * config/i386/i386.opt (mmpx): New. - * doc/invoke.texi: Add documentation for the flags -mmpx, -mno-mpx. - * doc/rtl.texi Add documentation for BND32mode and BND64mode. - -2013-10-24 Ilya Enkovich - - * mode-classes.def (MODE_POINTER_BOUNDS): New. - * tree.def (POINTER_BOUNDS_TYPE): New. - * genmodes.c (complete_mode): Support MODE_POINTER_BOUNDS. - (POINTER_BOUNDS_MODE): New. - (make_pointer_bounds_mode): New. - * machmode.h (POINTER_BOUNDS_MODE_P): New. - * stor-layout.c (int_mode_for_mode): Support MODE_POINTER_BOUNDS. - (layout_type): Support POINTER_BOUNDS_TYPE. - * tree-pretty-print.c (dump_generic_node): Support POINTER_BOUNDS_TYPE. - * tree.c (build_int_cst_wide): Support POINTER_BOUNDS_TYPE. - (type_contains_placeholder_1): Likewise. - * tree.h (POINTER_BOUNDS_TYPE_P): New. - * varasm.c (output_constant): Support POINTER_BOUNDS_TYPE. - * doc/rtl.texi (MODE_POINTER_BOUNDS): New. - -2013-10-24 Igor Shevlyakov - - * expr.c (expand_expr_real_1): Use mode of memory reference rather than - mode of address computation when calling memory_address_addr_space. - -2013-08-24 Richard Henderson - - PR rtl/58542 - * optabs.c (maybe_emit_atomic_exchange): Use create_input_operand - instead of create_convert_operand_to. - (maybe_emit_sync_lock_test_and_set): Likewise. - (expand_atomic_compare_and_swap): Likewise. - (maybe_emit_compare_and_swap_exchange_loop): Don't convert_modes. - -2013-08-24 Sriraman Tallam - - * cgraph.c (cgraph_fnver_htab): Move GTY((...)) to be before htab_t. - Change param_is to use the struct and not the pointer to the struct. - -2013-10-24 Andrew MacLeod - - * builtins.c (dummy_object, gimplify_va_arg_expr): Move to gimplify.c. - * gimplify.c (build_va_arg_indirect_ref, std_gimplify_va_arg_expr): - Move to targhooks.c. - (dummy_object, gimplify_va_arg_expr): Relocate from builtins.c. - * targhooks.c (build_va_arg_indirect_ref, std_gimplify_va_arg_expr): - Relocate from gimplify.c. - * targhooks.h: Add 2 prototypes. - * tree.h: Delete 2 prototypes. - -2013-10-24 Igor Shevlyakov - - * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p ): Check both - [reg+mult*reg] and [mult*reg] to determine if multiplier is allowed. - -2013-10-24 Cong Hou - - * convert.c (convert_to_real): Guard those unsafe math function - convertions with flag_unsafe_math_optimizations. Handle sqrt() - specially. - -2013-10-24 Markus Trippelsdorf - - PR ipa/58712 - * cgraph.c (cgraph_create_edge_1): Add indirect_unknown_callee - as argument. - (cgraph_create_edge): Use the new argument. - (cgraph_create_indirect_edge): Likewise. - -2013-10-24 Joern Rennecke - - * config/arc/arc.c (arc_ccfsm_post_advance): Also handle - TYPE_UNCOND_BRANCH. - (arc_ifcvt) : Check that arc_ccfsm_post_advance - changes statep->state. - -2013-10-24 Tobias Burnus - - PR other/33426 - * tree-cfg.c (replace_loop_annotate): New function. - (execute_build_cfg): Call it. - * gimplify.c (gimple_boolify, gimplify_expr): Handle ANNOTATE_EXPR. - * internal-fn.c (expand_ANNOTATE): New function. - * internal-fn.def (ANNOTATE): Define as new internal function. - * tree-core.h (tree_node_kind): Add annot_expr_ivdep_kind. - * tree-pretty-print.c (dump_generic_node): Handle ANNOTATE_EXPR. - * tree.def (ANNOTATE_EXPR): New DEFTREECODE. - * doc/extend.texi (Pragmas): Document #pragma ivdep. - * doc/generic.texi (Expressions): Document ANNOTATE_EXPR. - -2013-10-17 Ian Bolton - Marcus Shawcroft - - * config/aarch64/aarch64.c (aarch64_preferred_reload_class): - Special case reload SP+C into none GENERAL_REGS. - -2013-10-24 Michael Matz - - * gengtype.c (is_file_equal): Check that files will be same length. - -2013-10-25 Christian Bruel - - * config.gcc (sh-*): Add sh-mem.o to extra_obj. - * config/sh/t-sh (sh-mem.o): New rule. - * config/sh/sh-mem.cc (expand_block_move): Moved here. - (sh_expand_cmpstr): New function. - * config/sh/sh.c (force_into, expand_block_move): Move to sh-mem.c. - * config/sh/sh-protos.h (sh_expand_cmpstr): Declare. - * config/sh/sh.md (cmpstrsi, cmpstr_t): New patterns. - (rotlhi3_8): Rename. - -2013-10-24 Jan-Benedict Glaw - - * configure.ac (ZW_PROG_COMPILER_DEPENDENCIES): Use CXX instead of CC. - * Makefile.in (CXXDEPMODE): Assign and change users. - (CCDEPMODE): Delete. - * configure: Regenerate. - -2013-10-23 David Malcolm - - * gengtype-parse.c (require_without_advance): New. - (type): For GTY-marked types that are not GTY((user)), parse any - base classes, requiring them to be single-inheritance, and not - be templates. For non-GTY-marked types and GTY((user)), - continue to skip over any C++ inheritance specification. - * gengtype-state.c (state_writer::write_state_struct_type): - Write base class of type (if any). - (read_state_struct_type): Read base class of type (if any). - * gengtype.c (new_structure): Add a "base_class" parameter. - (create_optional_field_): Update for new parameter to new_structure. - (adjust_field_rtx_def): Likewise. - (adjust_field_tree_exp): Likewise. - * gengtype.h (struct type): Add "base_class" field to the s - union field. - (new_structure): Add "base" parameter. - -2013-10-23 Sriraman Tallam - - PR target/57756 - * config/i386/i386.c (ix86_option_override_internal): - Change TARGET_SSE2 to TARGET_SSE2_P (opts->...) - (ix86_valid_target_attribute_tree): - Change TARGET_64BIT to TARGET_64BIT_P (opts->...) - Change TARGET_SSE to TARGET_SSE_P (opts->...) - -2013-10-23 Andrew MacLeod - - * tree-ssa-loop.h: Remove include files. - * gengtype.c (open_base_files): Adjust include list for gtype-desc.c. - * cfgloopmanip.c: Move required includes from tree-ssa-loop.h. - * graphite-clast-to-gimple.c: Likewise. - * graphite-scop-detection.c: Likewise. - * graphite-sese-to-poly.c: Likewise. - * ipa-inline-analysis.c: Likewise. - * ipa-pure-const.c: Likewise. - * loop-init.c: Likewise. - * passes.c: Likewise. - * predict.c: Likewise. - * tree-cfg.c: Likewise. - * tree-cfgcleanup.c: Likewise. - * tree-chrec.c: Likewise. - * tree-data-ref.c: Likewise. - * tree-loop-distribution.c: Likewise. - * tree-parloops.c: Likewise. - * tree-predcom.c: Likewise. - * tree-scalar-evolution.c: Likewise. - * tree-ssa-address.c: Likewise. - * tree-ssa.c: Likewise. - * tree-ssa-dce.c: Likewise. - * tree-ssa-loop.c: Likewise. - * tree-ssa-loop-im.c: Likewise. - * tree-ssa-loop-ivcanon.c: Likewise. - * tree-ssa-loop-ivopts.c: Likewise. - * tree-ssa-loop-manip.c: Likewise. - * tree-ssa-loop-niter.c: Likewise. - * tree-ssa-loop-prefetch.c: Likewise. - * tree-ssa-loop-unswitch.c: Likewise. - * tree-ssa-reassoc.c: Likewise. - * tree-vect-data-refs.c: Likewise. - * tree-vect-loop.c: Likewise. - * tree-vect-loop-manip.c: Likewise. - * tree-vectorizer.c: Likewise. - * tree-vect-stmts.c: Likewise. - * tree-vrp.c: Likewise. - -2013-10-23 Bill Schmidt - - * config/rs6000/altivec.md (mulv8hi3): Adjust for little endian. - -2013-10-23 Jakub Jelinek - - PR tree-optimization/58775 - PR tree-optimization/58791 - * tree-ssa-reassoc.c (reassoc_stmt_dominates_stmt_p): New function. - (insert_stmt_after): Rewritten, don't move the stmt, but really - insert it. - (get_stmt_uid_with_default): Remove. - (build_and_add_sum): Use insert_stmt_after and - reassoc_stmt_dominates_stmt_p. Fix up uid if bb contains only labels. - (update_range_test): Set uid on stmts added by - force_gimple_operand_gsi. Don't immediately modify statements - in inter-bb optimization, just update oe->op values. - (optimize_range_tests): Return bool whether any changed have been made. - (update_ops): New function. - (struct inter_bb_range_test_entry): New type. - (maybe_optimize_range_tests): Perform statement changes here. - (not_dominated_by, appears_later_in_bb, get_def_stmt, - ensure_ops_are_available): Remove. - (find_insert_point): Rewritten. - (rewrite_expr_tree): Remove MOVED argument, add CHANGED argument, - return LHS of the (new resp. old) stmt. Don't call - ensure_ops_are_available, don't reuse SSA_NAMEs, recurse first - instead of last, move new stmt at the right place. - (linearize_expr, repropagate_negates): Don't reuse SSA_NAMEs. - (negate_value): Likewise. Set uids. - (break_up_subtract_bb): Initialize uids. - (reassociate_bb): Adjust rewrite_expr_tree caller. - (do_reassoc): Don't call renumber_gimple_stmt_uids. - -2013-10-23 David Edelsohn - - PR target/58838 - * config/rs6000/rs6000.md (mulsi3_internal1 and splitter): Add - TARGET_32BIT final condition. - (mulsi3_internal2 and splitter): Same. - -2013-10-23 Jeff Law - - * tree-ssa-threadedge.c (thread_across_edge): Do not allow threading - through joiner blocks with abnormal outgoing edges. - - * tree-ssa-threadupdate.c (thread_block_1): Renamed from thread_block. - Add parameter JOINERS, to allow/disallow threading through joiner - blocks. - (thread_block): New. Call thread_block_1. - (mark_threaded_blocks): Remove code to filter out certain cases - of threading through joiner blocks. - (thread_through_all_blocks): Document how we can have a dangling - edge AUX field and clear it. - -2013-10-23 Ian Lance Taylor - - * doc/invoke.texi (Option Summary): Remove -fno-default-inline. - (C++ Dialect Options): Likewise. - (Optimize Options): Likewise. - -2013-10-23 Tom de Vries - - PR tree-optimization/58805 - * tree-ssa-tail-merge.c (stmt_local_def): Add gimple_vdef check. - -2013-10-23 Jakub Jelinek - - * tree-vect-patterns.c (vect_recog_divmod_pattern): Optimize - sequence based on get_range_info returned range. - -2013-10-23 Andrew MacLeod - - * tree-ssa.h: Remove all #include's - * gengtype.c (open_base_files): Adjust include list for gtype-desc.c. - * alias.c: Move required includes from tree-ssa.h. - * asan.c: Likewise. - * builtins.c: Likewise. - * calls.c: Likewise. - * cfgexpand.c: Likewise. - * cfghooks.c: Likewise. - * cfgloop.c: Likewise. - * cfgloopmanip.c: Likewise. - * cgraph.c: Likewise. - * cgraphbuild.c: Likewise. - * cgraphclones.c: Likewise. - * cgraphunit.c: Likewise. - * dse.c: Likewise. - * except.c: Likewise. - * expr.c: Likewise. - * final.c: Likewise. - * fold-const.c: Likewise. - * ggc-page.c: Likewise. - * gimple-builder.c: Likewise. - * gimple-fold.c: Likewise. - * gimple-iterator.c: Likewise. - * gimple-low.c: Likewise. - * gimple-pretty-print.c: Likewise. - * gimple-ssa-strength-reduction.c: Likewise. - * gimple-streamer-in.c: Likewise. - * gimple-streamer-out.c: Likewise. - * gimplify.c: Likewise. - * graphite-blocking.c: Likewise. - * graphite-clast-to-gimple.c: Likewise. - * graphite-dependences.c: Likewise. - * graphite-interchange.c: Likewise. - * graphite-optimize-isl.c: Likewise. - * graphite-poly.c: Likewise. - * graphite-scop-detection.c: Likewise. - * graphite-sese-to-poly.c: Likewise. - * graphite.c: Likewise. - * ipa-cp.c: Likewise. - * ipa-inline-analysis.c: Likewise. - * ipa-inline-transform.c: Likewise. - * ipa-inline.c: Likewise. - * ipa-prop.c: Likewise. - * ipa-pure-const.c: Likewise. - * ipa-reference.c: Likewise. - * ipa-split.c: Likewise. - * ipa-utils.c: Likewise. - * loop-init.c: Likewise. - * lto-cgraph.c: Likewise. - * lto-section-in.c: Likewise. - * lto-section-out.c: Likewise. - * lto-streamer-in.c: Likewise. - * lto-streamer-out.c: Likewise. - * lto-streamer.c: Likewise. - * omp-low.c: Likewise. - * passes.c: Likewise. - * predict.c: Likewise. - * print-tree.c: Likewise. - * profile.c: Likewise. - * sese.c: Likewise. - * targhooks.c: Likewise. - * tracer.c: Likewise. - * trans-mem.c: Likewise. - * tree-call-cdce.c: Likewise. - * tree-cfg.c: Likewise. - * tree-cfgcleanup.c: Likewise. - * tree-chrec.c: Likewise. - * tree-complex.c: Likewise. - * tree-data-ref.c: Likewise. - * tree-dfa.c: Likewise. - * tree-eh.c: Likewise. - * tree-emutls.c: Likewise. - * tree-if-conv.c: Likewise. - * tree-inline.c: Likewise. - * tree-into-ssa.c: Likewise. - * tree-loop-distribution.c: Likewise. - * tree-mudflap.c: Likewise. - * tree-nested.c: Likewise. - * tree-nrv.c: Likewise. - * tree-object-size.c: Likewise. - * tree-outof-ssa.c: Likewise. - * tree-parloops.c: Likewise. - * tree-phinodes.c: Likewise. - * tree-predcom.c: Likewise. - * tree-pretty-print.c: Likewise. - * tree-profile.c: Likewise. - * tree-scalar-evolution.c: Likewise. - * tree-sra.c: Likewise. - * tree-ssa-address.c: Likewise. - * tree-ssa-alias.c: Likewise. - * tree-ssa-ccp.c: Likewise. - * tree-ssa-coalesce.c: Likewise. - * tree-ssa-copy.c: Likewise. - * tree-ssa-copyrename.c: Likewise. - * tree-ssa-dce.c: Likewise. - * tree-ssa-dom.c: Likewise. - * tree-ssa-dse.c: Likewise. - * tree-ssa-forwprop.c: Likewise. - * tree-ssa-ifcombine.c: Likewise. - * tree-ssa-live.c: Likewise. - * tree-ssa-loop-ch.c: Likewise. - * tree-ssa-loop-im.c: Likewise. - * tree-ssa-loop-ivcanon.c: Likewise. - * tree-ssa-loop-ivopts.c: Likewise. - * tree-ssa-loop-manip.c: Likewise. - * tree-ssa-loop-niter.c: Likewise. - * tree-ssa-loop-prefetch.c: Likewise. - * tree-ssa-loop-unswitch.c: Likewise. - * tree-ssa-loop.c: Likewise. - * tree-ssa-math-opts.c: Likewise. - * tree-ssa-operands.c: Likewise. - * tree-ssa-phiopt.c: Likewise. - * tree-ssa-phiprop.c: Likewise. - * tree-ssa-pre.c: Likewise. - * tree-ssa-propagate.c: Likewise. - * tree-ssa-reassoc.c: Likewise. - * tree-ssa-sccvn.c: Likewise. - * tree-ssa-sink.c: Likewise. - * tree-ssa-strlen.c: Likewise. - * tree-ssa-structalias.c: Likewise. - * tree-ssa-tail-merge.c: Likewise. - * tree-ssa-ter.c: Likewise. - * tree-ssa-threadedge.c: Likewise. - * tree-ssa-threadupdate.c: Likewise. - * tree-ssa-uncprop.c: Likewise. - * tree-ssa-uninit.c: Likewise. - * tree-ssa.c: Likewise. - * tree-ssanames.c: Likewise. - * tree-stdarg.c: Likewise. - * tree-streamer-in.c: Likewise. - * tree-switch-conversion.c: Likewise. - * tree-tailcall.c: Likewise. - * tree-vect-data-refs.c: Likewise. - * tree-vect-generic.c: Likewise. - * tree-vect-loop-manip.c: Likewise. - * tree-vect-loop.c: Likewise. - * tree-vect-patterns.c: Likewise. - * tree-vect-slp.c: Likewise. - * tree-vect-stmts.c: Likewise. - * tree-vectorizer.c: Likewise. - * tree-vrp.c: Likewise. - * tree.c: Likewise. - * tsan.c: Likewise. - * value-prof.c: Likewise. - * var-tracking.c: Likewise. - * varpool.c: Likewise. - * vtable-verify.c: Likewise. - -2013-10-23 Jan-Benedict Glaw - - * config/tilegx/tilegx.c: Include "tree.h". - -2013-10-23 Jakub Jelinek - - * gimple-pretty-print.c (dump_ssaname_info): Always print "# " before - the info, not after it. - (gump_gimple_phi): Add COMMENT argument, if true, print "# " after - dump_ssaname_info call. - (pp_gimple_stmt_1): Adjust caller. - (dump_phi_nodes): Likewise. Don't print "# " here. - -2013-10-22 Jan Hubicka - - * i386.h (TARGET_MISALIGNED_MOVE_STRING_PROLOGUES_EPILOGUES): New - tuning flag. - * x86-tune.def (TARGET_MISALIGNED_MOVE_STRING_PROLOGUES): Define it. - * i386.c (expand_small_movmem_or_setmem): New function. - (expand_set_or_movmem_prologue_epilogue_by_misaligned_moves): New - function. - (alg_usable_p): Add support for value ranges; cleanup. - (ix86_expand_set_or_movmem): Add support for misaligned moves. - -2013-10-22 Sterling Augustine - - * doc/invoke.texi: Document -ggnu-pubnames. - * common.opt: Add new option -ggnu-pubnames and modify -gpubnames - logic. - * dwarf2out.c: Include gdb/gdb-index.h. - (DEBUG_PUBNAMES_SECTION, DEBUG_PUBTYPES_SECTION): Handle - debug_generate_pub_sections. - (is_java, output_pubtables, output_pubname): New functions. - (include_pubname_in_output): Handle debug_generate_pub_sections at - level 2. - (size_of_pubnames): Use new local space_for_flags based on - debug_generate_pub_sections. - (output_pubnames): Unify pubnames and pubtypes output logic. - Genericize comments. Call output_pubname. - (dwarf2out_finish): Move logic to output_pubnames and call it. - -2013-10-22 Uros Bizjak - - PR target/58779 - * config/i386/i386.c (put_condition_code) : - Remove CCCmode handling. - : Return 'c' suffix for CCCmode. - : Return 'nc' suffix for CCCmode. - (ix86_cc_mode) : Do not generate overflow checks. - * config/i386/i386.md (*sub3_cconly_overflow): Remove. - (*sub3_cc_overflow): Ditto. - (*subsi3_zext_cc_overflow): Ditto. - -2013-10-22 Steve Ellcey - - * config/mips/mips.c (mips_rtx_costs): Fix cost estimate for nor - (AND (NOT OP1) (NOT OP2)). - -2013-10-22 Bill Schmidt - - * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Reverse - meaning of merge-high and merge-low masks for little endian; avoid - use of vector-pack masks for little endian for mismatched modes. - -2013-10-22 Jan-Benedict Glaw - - * config/tilepro/tilepro.c: Include "tree.h". - -2013-10-22 Andreas Schwab - - * config/m68k/m68k.c (notice_update_cc): Handle register conflict - with PRE_DEC. - -2013-10-22 Paolo Carlini - - * doc/contrib.texi ([Fran@,{c}ois Dumont], [Tim Shen], - [Ed Smith-Rowland]): New entries. - ([Stephen M. Webb]): Update. - -2013-10-22 Andrew MacLeod - - * tree-ssa-ter.h: Remove duplicate copy of file contents. - -2013-10-21 Marek Polacek - - PR middle-end/58809 - * fold-const.c (fold_range_test): Return 0 if the type is not - an integral type. - -2013-10-21 Richard Sandiford - - * system.h: Move hwint.h include further down. - * hwint.h (sext_hwi, zext_hwi): Define unconditionally. Add - gcc_checking_asserts. - * hwint.c (sext_hwi, zext_hwi): Delete ENABLE_CHECKING versions. - -2013-10-21 Bernd Edlinger - - Fix volatile issues in optimize_bit_field_compare. - * fold-const.c (optimize_bit_field_compare): Bail out if - lvolatilep or rvolatilep. - -2013-10-21 Bernd Edlinger - - Fix DECL_BIT_FIELD depencency on flag_strict_volatile_bitfields - and get_inner_reference returning different pmode for non-volatile - bit-field members dependent on flag_strict_volatile_bitfields. - * stor-layout.c (layout_decl): Remove special handling of - flag_strict_volatile_bitfields. - * expr.c (get_inner_reference): Don't use DECL_BIT_FIELD - if flag_strict_volatile_bitfields > 0 and TREE_THIS_VOLATILE. - -2013-10-21 Paulo Matos - - * ipa-inline.c (edge_badness): Cap edge->count at max_count for badness - calculations. - -2013-10-21 Jeff Law - - * tree-ssa-threadedge.c (thread_through_normal_block): New - argument VISITED. Remove VISISTED as a local variable. When we - have a threadable jump, verify the destination of the jump has not - been visised. - (thread_across_edge): Allocate VISITED bitmap once at function - scope and use it throughout. Make sure to set appropriate bits in - VISITED for E (start of jump thread path). - * tree-ssa-threadupdate.c (mark_threaded_blocks): Reject threading - through a joiner if any edge on the path has a recorded jump thread. - -2013-10-21 Ian Lance Taylor - - * doc/invoke.texi (Optimize Options): For -fno-toplevel-reorder, - don't imply that attributes can solve all problems. - (Directory Options): Fix typo. - -2013-10-21 Kyrylo Tkachov - - * config/arm/arm.c (cortexa9_extra_costs): Update mult costs for - extend and extend_add. - -2013-10-21 Richard Biener - - PR tree-optimization/58794 - * fold-const.c (operand_equal_p): Compare FIELD_DECL operand - of COMPONENT_REFs with OEP_CONSTANT_ADDRESS_OF left in place. - -2013-10-21 Richard Biener - - PR middle-end/58742 - * fold-const.c (fold_binary_loc): Fold ((T) (X /[ex] C)) * C - to (T) X for sign-changing conversions (or no conversion). - -2013-10-20 Uros Bizjak - - * config/i386/i386.md (kxnor): Add FLAGS_REG clobber. - -2013-10-20 Jan Hubicka - - * config/i386/i386-tune.def: Add comment; organize into categories - -2013-10-21 Michael Zolotukhin - - * config/i386/i386.c (expand_set_or_movmem_via_loop): Add issetmem - argument. Update function comment. - (expand_set_or_movmem_via_rep): New function combining - expand_movmem_via_rep_mov and expand_setmem_via_rep_stos. - (expand_movmem_via_rep_mov): Remove. - expand_setmem_via_rep_stos): Remove. - (expand_movmem_epilogue): Update calls correspondingly. - (expand_setmem_epilogue_via_loop): Likewise. - (emit_memset): New. - (expand_setmem_epilogue): Add VEC_VALUE argument, refactor. - (expand_set_or_movmem_prologue): New function combining - expand_movmem_prologue and expand_setmem_prologue. - (expand_movmem_prologue): Remove. - (expand_setmem_prologue): Remove. - (expand_set_or_movmem_constant_prologue): New function combining - expand_constant_movmem_prologue and expand_constant_setmem_prologue. - (expand_constant_movmem_prologue): Remove. - (expand_constant_setmem_prologue): Remove. - (promote_duplicated_reg): Allow vector-const0 value. - (ix86_expand_set_or_movmem): New function combining ix86_expand_movmem - and ix86_expand_setmem. - (ix86_expand_movmem): Call ix86_expand_set_or_movmem. - (ix86_expand_setmem): Call ix86_expand_set_or_movmem. - -2013-10-21 Diego Novillo - - * asan.c: Include tree.h - * bb-reorder.c: Likewise. - * cfgcleanup.c: Likewise. - * cfgloopmanip.c: Likewise. - * data-streamer-in.c: Likewise. - * data-streamer-out.c: Likewise. - * data-streamer.c: Likewise. - * dwarf2cfi.c: Likewise. - * graphite-blocking.c: Likewise. - * graphite-clast-to-gimple.c: Likewise. - * graphite-dependences.c: Likewise. - * graphite-interchange.c: Likewise. - * graphite-optimize-isl.c: Likewise. - * graphite-poly.c: Likewise. - * graphite-scop-detection.c: Likewise. - * graphite-sese-to-poly.c: Likewise. - * graphite.c: Likewise. - * ipa-devirt.c: Likewise. - * ipa-profile.c: Likewise. - * ipa.c: Likewise. - * ira.c: Likewise. - * loop-init.c: Likewise. - * loop-unroll.c: Likewise. - * lower-subreg.c: Likewise. - * lto/lto-object.c: Likewise. - * recog.c: Likewise. - * reginfo.c: Likewise. - * tree-loop-distribution.c: Likewise. - * tree-parloops.c: Likewise. - * tree-ssa-strlen.c: Likewise. - * tree-streamer.c: Likewise. - * value-prof.c: Likewise. - * target-globals.c: Likewise. - * expr.h: Include tree-core.h instead of tree.h. - * gimple.h: Likewise. - * ipa-prop.h: Likewise. - * ipa-utils.h: Likewise. - * lto-streamer.h: Likewise. - * streamer-hooks.h: Likewise. - * ipa-reference.h: Include cgraph.h instead of tree.h. - * cgraph.h: Include basic-block.h instead of tree.h. - * tree-streamer.h: Do not include tree.h. - * genattrtab.c (write_header): Generate inclusion of tree.h. - * genautomata.c (main): Likewise. - * genemit.c: Likewise. - * genopinit.c: Likewise. - * genoutput.c (output_prologue): Likewise. - * genpeep.c: Likewise. - -2013-10-20 Bill Schmidt - - * config/rs6000/altivec.md (vec_unpacku_hi_v16qi): Adjust for - little endian. - (vec_unpacku_hi_v8hi): Likewise. - (vec_unpacku_lo_v16qi): Likewise. - (vec_unpacku_lo_v8hi): Likewise. - -2013-10-20 Jan Hubicka - - * config/i386/x86-tune.def (X86_TUNE_SLOW_IMUL_IMM32_MEM, - X86_TUNE_SLOW_IMUL_IMM8): Keep enabled only for K8 and AMDFAM10. - (X86_TUNE_USE_VECTOR_FP_CONVERTS): Disable for generic. - -2013-10-20 Richard Sandiford - - * config/mips/mips.h (ISA_HAS_WSBH): Define. - * config/mips/mips.md (UNSPEC_WSBH, UNSPEC_DSBH, UNSPEC_DSHD): New - constants. - (bswaphi2, bswapsi2, bswapdi2, wsbh, dsbh, dshd): New patterns. - -2013-10-19 John David Anglin - - PR target/58603 - * system.h: Undef m_slot. - -2013-10-19 Bill Schmidt - - * config/rs6000/rs6000.c (vspltis_constant): Make sure we check - all elements for both endian flavors. - -2013-10-19 Uros Bizjak - - PR target/58792 - * config/i386/i386.c (ix86_function_value_regno): Add DX_REG, - ST1_REG and XMM1_REG for 32bit and 64bit targets. Also add DI_REG - and SI_REG for 64bit SYSV ABI targets. - -2013-10-19 Uros Bizjak - - * mode-switching.c (create_pre_exit): Rename maybe_builtin_apply - to multi_reg_return. Clarify that we are skipping USEs of multiple - return registers. Use bool type where appropriate. - -2013-10-18 Jan Hubicka - - * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Disable accumulation - for cold functions. - * x86-tune.def (X86_TUNE_USE_LEAVE): Update comment. - (X86_TUNE_PUSH_MEMORY): Likewise. - (X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL, - X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL): New. - (X86_TUNE_ACCUMULATE_OUTGOING_ARGS, X86_TUNE_ALWAYS_FANCY_MATH_387): - New. - * i386.c (x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387, - x86_avx256_split_unaligned_load, x86_avx256_split_unaligned_store): - Remove. - (ix86_option_override_internal): Update to use tune features instead - of variables. - -2013-10-18 Cong Hou - - PR tree-optimization/58508 - * tree-vect-loop-manip.c (vect_loop_versioning): Hoist loop invariant - statement that contains data refs with zero-step. - -2013-10-18 Andrew MacLeod - - * tree-ssa.h: Don't include gimple-low.h, tree-ssa-address.h, - sbitmap.h, tree-ssa-threadedge.h, tree-ssa-dom.h and tree-cfgcleanup.h. - * gimple-low.c (gimple_check_call_arg, - gimple_check_call_matching_types): Move to cgraph.c. - * gimple-low.h: Remove prototype. - * cgraph.c: (gimple_check_call_arg, gimple_check_call_matching_types): - Relocate from gimple-low.c. - * cgraph.h: Add prototype. Don't include basic-block.h. - * gimplify.c: Add gimple-low to include list. - * omp-low.c: Add gimple-low and tree-cfgcleanup.h to include list. - * tree-eh.c: Add gimple-low to include list. - * tree-nested.c: Likewise. - * cfgexpand.c: Add tree-ssa-address.h to include list. - * expr.c: Likewise. - * gimple-fold.c: Likewise. - * gimple-ssa-strength-reduction.c: Likewise. - * trans-mem.c: Likewise. - * tree-mudflap.c: Likewise. - * tree-ssa-loop-ivopts.c: Likewise. - * tree-ssa-dom.c: Include tree-ssa-threadedge.h and tree-ssa-dom.h. - (degenerate_phi_result): Move to tree-phinodes.c. - * tree-ssa-loop-ch.c: Include tree-ssa-threadedge.h. - * tree-ssa-threadedge.c: Likewise. - * tree-vrp.c: Likewise. - * tree-phinodes.c (degenerate_phi_result): Relocate here. - * tree-ssa-dom.h (degenerate_phi_result): Remove Prototype. - * tree-phinodes.h (degenerate_phi_result): Add prototype. - * tree-ssa-copy.c: Include tree-ssa-dom.h. - * tree-ssa-forwprop.c: Likewise. - * tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing, - pass_data_cleanup_cfg_post_optimizing, - make_pass_cleanup_cfg_post_optimizing): Relocate from tree-optimize.c. - * tree-optimize.c: Delete File. - * graphite.c: Include tree-cfgcleanup.h. - * passes.c: Likewise. - * tree-cfg.c: Likewise. - * tree-profile.c: Likewise. - * tree-ssa-dse.c: Likewise. - * tree-ssa-loop-ivcanon.c: Likewise. - * tree-switch-conversion.c: Don't include tree-ssa-operands.h. - * tree-outof-ssa.c: Include sbitmap.h. - * tree-ssa-live.c: Likewise. - * tree-ssa-propagate.c: Likewise. - * tree-ssa-structalias.c: Likewise. - * tree-stdarg.c: Likewise. - * Makefile.in (OBJS): Delete tree-optimize.o. - * basic-block.h (gcov_type, gcov_type_unsigned): Move to coretypes.h. - * coretypes.h (gcov_type, gcov_type_unsigned): Relocate here. - * varasm.c: Include basic-block.h. - * cfgloop.h: Include function.h instead of basic-block.h - (bb_loop_depth): Move to cfgloop.c. - * cfgloop.c (bb_loop_depth): Relocate from cfgloop.h. - -2013-10-18 Teresa Johnson - - * predict.c (probably_never_executed): Compare frequency-based - count to number of training runs. - * params.def (UNLIKELY_BB_COUNT_FRACTION): New parameter. - -2013-10-18 Kyrylo Tkachov - - * config/arm/arm.c (cortexa9_extra_costs): New table. - (arm_cortex_a9_tune): Use cortexa9_extra_costs. - -2013-10-18 Jeff Law - - * tree-ssa-threadupdate.c: Do not include "tm.h" or "tm_p.h". - - * tree-ssa-threadupdate.c: Include "dbgcnt.h". - (register_jump_thread): Add "registered_jump_thread" debug - counter support. - * dbgcnt.def (registered_jump_thread): New debug counter. - -2013-10-18 Andrew MacLeod - - * config/rs6000/rs6000.c: Include cgraph.h. - -2013-10-18 Teresa Johnson - - * tree-ssa-tail-merge.c (replace_block_by): Update edge - weights during merging. - -2013-10-18 Andrew MacLeod - - * tree-cfg.h: Rename from tree-flow.h. Remove #includes. - * tree-ssa.h: Relocate required #includes from tree-cfg.h. - * tree-ssa-operands.h: Remove prototype. - * tree-ssa-operands.c (virtual_operand_p): Move to gimple.c. - * gimple.c (virtual_operand_p): Relocate from gimple.c. - * gimple.h: Add prototype. - * gimple-ssa.h: Include tree-ssa-operands.h. - * tree-dump.c: Add tree-cfg.h to include list. - * tree-ssa-alias.c: Add ipa-reference.h to include list. - * config/alpha/alpha.c: Include gimple-ssa.h instead of tree-flow.h. - * config/i386/i386.c: Don't include tree-flow.h. - * config/rs6000/rs6000.c: Likewise. - -2013-10-18 Jan-Benedict Glaw - - * config/frv/frv.c (frv_init_cumulative_args): Fix wrong cast. - -2013-10-18 Richard Biener - - * stor-layout.c (layout_type): Do not change TYPE_PRECISION - or TYPE_UNSIGNED of integral types. - (set_min_and_max_values_for_integral_type): Leave TYPE_MIN/MAX_VALUE - NULL_TREE for zero-precision integral types. - -2013-10-18 James Greenhalgh - - * config/aarch64/arm_neon.h - (vcvt_n_<32,64>_<32,64>): Correct argument types. - -2013-10-17 Sriraman Tallam - - PR target/57756 - * opth-gen.awk: Define target_flags_explicit. - -2013-10-17 Michael Meissner - - * config/rs6000/rs6000.c (enum rs6000_reload_reg_type): Add new - fields to the reg_addr array that describes the valid addressing - mode for any register, general purpose registers, floating point - registers, and Altivec registers. - (FIRST_RELOAD_REG_CLASS): Likewise. - (LAST_RELOAD_REG_CLASS): Likewise. - (struct reload_reg_map_type): Likewise. - (reload_reg_map_type): Likewise. - (RELOAD_REG_VALID): Likewise. - (RELOAD_REG_MULTIPLE): Likewise. - (RELOAD_REG_INDEXED): Likewise. - (RELOAD_REG_OFFSET): Likewise. - (RELOAD_REG_PRE_INCDEC): Likewise. - (RELOAD_REG_PRE_MODIFY): Likewise. - (reg_addr): Likewise. - (mode_supports_pre_incdec_p): New helper functions to say whether - a given mode supports PRE_INC, PRE_DEC, and PRE_MODIFY. - (mode_supports_pre_modify_p): Likewise. - (rs6000_debug_vector_unit): Rearrange the -mdebug=reg output to - print the valid address mode bits for each mode. - (rs6000_debug_print_mode): Likewise. - (rs6000_debug_reg_global): Likewise. - (rs6000_setup_reg_addr_masks): New function to set up the address - mask bits for each type. - (rs6000_init_hard_regno_mode_ok): Use memset to clear arrays. - Call rs6000_setup_reg_addr_masks to set up the address mask bits. - (rs6000_legitimate_address_p): Use mode_supports_pre_incdec_p and - mode_supports_pre_modify_p to determine if PRE_INC, PRE_DEC, and - PRE_MODIFY are supported. - (rs6000_output_move_128bit): Change to use {src,dest}_vmx_p for altivec - registers, instead of {src,dest}_av_p. - (rs6000_print_options_internal): Tweak the debug output slightly. - -2013-10-17 Uros Bizjak - - * config/i386/sse.md (*vec_widen_smult_even_v8si): Remove - isa attribute. - -2013-10-17 Andrew MacLeod - - * tree-flow.h (struct omp_region): Move to omp-low.c. - Remove omp_ prototypes and variables. - * gimple.h (omp_reduction_init): Move prototype to omp-low.h. - (copy_var_decl): Relocate prototype from tree-flow.h. - * gimple.c (copy_var_decl): Relocate from omp-low.c. - * tree.h: Move prototype to omp-low.h. - * omp-low.h: New File. Relocate prototypes here. - * omp-low.c (struct omp_region): Make local here. - (root_omp_region): Make static. - (copy_var_decl) Move to gimple.c. - (new_omp_region): Make static. - (make_gimple_omp_edges): New. Refactored from tree-cfg.c make_edges. - * tree-cfg.c: Include omp-low.h. - (make_edges): Factor out OMP specific bits to make_gimple_omp_edges. - * gimplify.c: Include omp-low.h. - * tree-parloops.c: Likewise. - -2013-10-17 Uros Bizjak - - * config/i386/i386.c (ix86_fixup_binary_operands): When both source - operands are in memory, prefer to force non-matched operand 1 to - the register. - -2013-10-17 Michael Meissner - - PR target/58673 - * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Only - restrict TImode addresses to single indirect registers if both - -mquad-memory and -mvsx-timode are used. - (rs6000_output_move_128bit): Use quad_load_store_p to determine if - we should emit load/store quad. Remove using %y for quad memory - addresses. - - * config/rs6000/rs6000.md (mov_ppc64, TI/PTImode): Add - constraints to allow load/store quad on machines where TImode is - not allowed in VSX registers. Use 'n' instead of 'F' constraint - for TImode to load integer constants. - -2013-10-17 Kyrylo Tkachov - - * config/aarch64/aarch64.c (aarch64_print_operand): Handle 'c'. - -2013-10-17 Marcus Shawcroft - - * config/aarch64/aarch64.c (aarch64_preferred_reload_class): Adjust - handling of STACK_REG. - -2013-10-17 Richard Biener - - PR tree-optimization/58143 - * tree-ssa-loop-im.c (arith_code_with_undefined_signed_overflow): - New function. - (rewrite_to_defined_overflow): Likewise. - (move_computations_dom_walker::before_dom): Rewrite stmts - with undefined signed overflow that are not always executed - into unsigned arithmetic. - -2013-10-16 Michael Meissner - - PR target/57756 - * config/rs6000/rs6000.opt (rs6000_isa_flags_explicit): Move the - explicit isa flag to be an options variable, instead of using - global_options_set. Remove define from rs6000.h. - * config/rs6000/rs6000.h (rs6000_isa_flags_explicit): Likewise. - - * config/rs6000/rs6000.c (rs6000_option_override_internal): - Initialize rs6000_isa_flags_explicit. - (rs6000_function_specific_save): Add gcc_options* parameter, so - that the powerpc builds after the 2013-10-15 changes. - (rs6000_function_specific_restore): Likewise. - -2013-10-16 DJ Delorie - - * config/rl78/rl78.c (rl78_alloc_address_registers_macax): Verify - op is a REG before checking REGNO. - (rl78_alloc_physical_registers): Verify pattern is a SET before - checking SET_SRC. - -2013-10-16 Bill Schmidt - - * config/rs6000/vector.md (vec_unpacks_hi_v4sf): Correct for - endianness. - (vec_unpacks_lo_v4sf): Likewise. - (vec_unpacks_float_hi_v4si): Likewise. - (vec_unpacks_float_lo_v4si): Likewise. - (vec_unpacku_float_hi_v4si): Likewise. - (vec_unpacku_float_lo_v4si): Likewise. - -2013-10-16 Bill Schmidt - - * config/rs6000/vsx.md (vsx_concat_): Adjust output for LE. - (vsx_concat_v2sf): Likewise. - -2013-10-16 James Greenhalgh - - * config/aarch64/aarch64.md - (*mov_aarch64): Fix output template for DUP (element) Scalar. - -2013-10-16 Andrew MacLeod - - PR tree-optimization/58697 - * cfgloop.c (get_estimated_loop_iterations_int): Rename from - estimated_loop_iterations_int. - (max_stmt_executions_int): Call get_max_loop_iterations_int. - (get_max_loop_iterations_int): New. HWINT version of - get_max_loop_iterations. - * cfgloop.h: Add prototypes. - * loop-iv.c (find_simple_exit): call get_estimated_loop_iterations_int. - * loop-unroll.c (decide_peel_once_rolling): Call - get_estimated_loop_iterations_int. - * tree-ssa-loop-niter.c (estimated_loop_iterations_int): Add back. - * tree-ssa-loop-niter.h: Tweak prototypes. - -2013-10-16 David Malcolm - - * gengtype-parse.c (struct_field_seq): Ignore access-control - keywords ("public:" etc). - -2013-10-16 Marcus Shawcroft - - * config/aarch64/aarch64.c (aarch64_regno_regclass): Classify - FRAME_POINTER_REGNUM and ARG_POINTER_REGNUM as POINTER_REGS. - -2013-10-16 Yvan Roux - - * config/arm/arm.opt (mlra): New option. - * config/arm/arm.c (arm_lra_p): New function. - (TARGET_LRA_P): Define. - -2013-10-16 Paulo Matos - - * tree-core.h (tree_code_name): Remove. - * tree.h (get_tree_code_name): New prototype. - * tree.c (tree_code_name): Make static. - (get_tree_code_name): New function. - (dump_tree_statistics, tree_check_failed, tree_not_check_failed, - tree_class_check_failed, tree_range_check_failed, - tree_not_class_check_failed, omp_clause_check_failed, - tree_contains_struct_check_failed, tree_operand_check_failed): Use new - wrapper get_tree_code_name instead of calling tree_code_name directly. - * tree-vrp.c (dump_asserts_for): Likewise. - * tree-dump.c (dequeue_and_dump): Likewise. - * tree-pretty-print.c (do_niy, dump_generic_node): Likewise. - * tree-pretty-print.h (pp_unsupported_tree): Likewise. - * lto-streamer-out.c (lto_write_tree, DFS_write_tree): Likewise. - * tree-ssa-dom.c (print_expr_hash_elt): Likewise. - * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs, - dump_ternary_rhs, dump_gimple_assign, dump_gimple_cond, - dump_gimple_omp_for): Likewise. - * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise. - * tree-ssa-pre.c (print_pre_expr): Likewise. - * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise. - * print-tree.c (print_node_brief, print_node): Likewise. - * gimple.c (gimple_check_failed): Likewise. - * lto-streamer.c (lto_tag_name, print_lto_report): Likewise. - * config/frv/frv.c (frv_init_cumulative_args): Likewise. - * config/mep/mep.c (mep_validate_vliw): Likewise. - * config/iq2000/iq2000.c (init_cumulative_args): Likewise. - * config/rs6000/rs6000.c (init_cumulative_args): Likewise. - -2013-10-16 Ganesh Gopalasubramanian - - * config/i386/i386.c (ix86_option_override_internal): Enable FMA4 - for AMD bdver3. - -2013-10-16 Hans-Peter Nilsson - - * config/cris/t-elfmulti (MULTILIB_OPTIONS, MULTILIB_DIRNAMES) - (MULTILIB_MATCHES): Add multilib for -march=v8. - -2013-10-15 Sriraman Tallam - - PR target/57756 - * optc-save-gen.awk: Add extra parameter to the save and restore - target calls. - * opth-gen.awk: Generate new TARGET_* macros to accept a parameter. - * tree.c (build_optimization_node): New parameter. Add extra parameter - to call to cl_optimization_save. - (build_target_option_node): New parameter. Add extra parameter - to call to cl_target_option_save. - * tree.h (build_optimization_node): New parameter. - (build_target_option_node): New parameter. - * c-family/c-common.c (handle_optimize_attribute): Fix calls to - build_optimization_node and build_target_option_node. - * c-family/c-pragma.c (handle_pragma_optimize): Ditto. - (handle_pragma_push_options): Ditto. - * toplev.c (process_options): Ditto. - * opts.c (init_options_struct): Check for opts_set non-null. - * target.def (target_option.save): New parameter. - (target_option.restore): New parameter. - * tm.texi: Generate. - * config/i386/i386-c.c (ix86_target_macros_internal): Ditto. - (ix86_pragma_target_parse): Ditto. - * config/i386/i386-protos.h (ix86_valid_target_attribute_tree): New - parameters. - * config/rs6000/rs6000.c (rs6000_option_override_internal): Fix calls - to build_optimization_node and build_target_option_node. - (rs6000_valid_attribute_p): Ditto. - (rs6000_pragma_target_parse): Ditto. - * config/i386/i386.opt (x_ix86_target_flags_explicit): New TargetSave - data. - * config/i386/i386.h: - TARGET_64BIT_P: New Macro - TARGET_MMX_P: New Macro. - TARGET_3DNOW_P: New Macro. - TARGET_3DNOW_A_P: New Macro. - TARGET_SSE_P: New Macro. - TARGET_SSE2_P: New Macro. - TARGET_SSE3_P: New Macro. - TARGET_SSSE3_P: New Macro. - TARGET_SSE4_1_P: New Macro. - TARGET_SSE4_2_P: New Macro. - TARGET_AVX_P: New Macro. - TARGET_AVX2_P: New Macro. - TARGET_AVX512F_P: New Macro. - TARGET_AVX512PF_P: New Macro. - TARGET_AVX512ER_P: New Macro. - TARGET_AVX512CD_P: New Macro. - TARGET_FMA_P: New Macro. - TARGET_SSE4A_P: New Macro. - TARGET_FMA4_P: New Macro. - TARGET_XOP_P: New Macro. - TARGET_LWP_P: New Macro. - TARGET_ABM_P: New Macro. - TARGET_BMI_P: New Macro. - TARGET_BMI2_P: New Macro. - TARGET_LZCNT_P: New Macro. - TARGET_TBM_P: New Macro. - TARGET_POPCNT_P: New Macro. - TARGET_SAHF_P: New Macro. - TARGET_MOVBE_P: New Macro. - TARGET_CRC32_P: New Macro. - TARGET_AES_P: New Macro. - TARGET_PCLMUL_P: New Macro. - TARGET_CMPXCHG16B_P: New Macro. - TARGET_FSGSBASE_P: New Macro. - TARGET_RDRND_P: New Macro. - TARGET_F16C_P: New Macro. - TARGET_RTM_P: New Macro. - TARGET_HLE_P: New Macro. - TARGET_RDSEED_P: New Macro. - TARGET_PRFCHW_P: New Macro. - TARGET_ADX_P: New Macro. - TARGET_FXSR_P: New Macro. - TARGET_XSAVE_P: New Macro. - TARGET_XSAVEOPT_P: New Macro. - TARGET_LP64_P: New Macro. - TARGET_X32_P: New Macro. - TARGET_FPMATH_DEFAULT_P: New Macro. - TARGET_FLOAT_RETURNS_IN_80387_P: New Macro. - * config/i386/i386.c (ix86_option_override_internal): New parameters. - opts and opts_set. - Change ix86_tune_string to access opts->x_ix86_tune_string. - Change ix86_isa_flags to access opts->x_ix86_isa_flags. - Change ix86_arch_string to access opts->x_ix86_arch_string. - Change ix86_stringop_alg to access opts->x_ix86_stringop_alg. - Change ix86_pmode to access opts->x_ix86_pmode. - Change ix86_abi to access opts->x_ix86_abi. - Change ix86_cmodel to access opts->x_ix86_cmodel. - Change ix86_asm_dialect to access opts->x_ix86_asm_dialect. - Change ix86_isa_flags_explicit to access - opts->x_ix86_isa_flags_explicit. - Change ix86_dump_tunes to access opts->x_ix86_dump_tunes. - Change ix86_regparm to access opts->x_ix86_regparm. - Change ix86_branch_cost to access opts->x_ix86_branch_cost. - Change ix86_preferred_stack_boundary_arg to access - opts->x_ix86_preferred_stack_boundary_arg. - Change ix86_force_align_arg_pointer to access - opts->x_ix86_force_align_arg_pointer. - Change ix86_incoming_stack_boundar_arg to access - opts->x_ix86_incoming_stack_boundar_arg. - Change ix86_fpmath to access opts->x_ix86_fpmath. - Change ix86_veclibabi_type to access opts->x_ix86_veclibabi_type. - Change ix86_recip_name to access opts->x_ix86_recip_name. - Change ix86_stack_protector_guard to access - opts->x_ix86_stack_protector_guard. - Change ix86_tune_memcpy_strategy to access - opts->x_ix86_tune_memcpy_strategy. - Change ix86_tune_memset_strategy to access - opts->x_ix86_tune_memset_strategy. - Change global_options to access opts. - Change global_options_set to access opts_set. - Change TARGET_64BIT to TARGET_64BIT_P (opts->...). - Change TARGET_MMX to TARGET_MMX_P (opts->...). - Change TARGET_3DNOW to TARGET_3DNOW_P (opts->...). - Change TARGET_3DNOW_A to TARGET_3DNOW_A_P (opts->...). - Change TARGET_SSE to TARGET_SSE_P (opts->...). - Change TARGET_SSE2 to TARGET_SSE2_P (opts->...). - Change TARGET_SSE3 to TARGET_SSE3_P (opts->...). - Change TARGET_SSSE3 to TARGET_SSSE3_P (opts->...). - Change TARGET_SSE4_1 to TARGET_SSE4_1_P (opts->...). - Change TARGET_SSE4_2 to TARGET_SSE4_2_P (opts->...). - Change TARGET_AVX to TARGET_AVX_P (opts->...). - Change TARGET_AVX2 to TARGET_AVX2_P (opts->...). - Change TARGET_AVX512F to TARGET_AVX512F_P (opts->...). - Change TARGET_AVX512PF to TARGET_AVX512PF_P (opts->...). - Change TARGET_AVX512ER to TARGET_AVX512ER_P (opts->...). - Change TARGET_AVX512CD to TARGET_AVX512CD_P (opts->...). - Change TARGET_FMA to TARGET_FMA_P (opts->...). - Change TARGET_SSE4A to TARGET_SSE4A_P (opts->...). - Change TARGET_FMA4 to TARGET_FMA4_P (opts->...). - Change TARGET_XOP to TARGET_XOP_P (opts->...). - Change TARGET_LWP to TARGET_LWP_P (opts->...). - Change TARGET_ABM to TARGET_ABM_P (opts->...). - Change TARGET_BMI to TARGET_BMI_P (opts->...). - Change TARGET_BMI2 to TARGET_BMI2_P (opts->...). - Change TARGET_LZCNT to TARGET_LZCNT_P (opts->...). - Change TARGET_TBM to TARGET_TBM_P (opts->...). - Change TARGET_POPCNT to TARGET_POPCNT_P (opts->...). - Change TARGET_SAHF to TARGET_SAHF_P (opts->...). - Change TARGET_MOVBE to TARGET_MOVBE_P (opts->...). - Change TARGET_CRC32 to TARGET_CRC32_P (opts->...). - Change TARGET_AES to TARGET_AES_P (opts->...). - Change TARGET_PCLMUL to TARGET_PCLMUL_P (opts->...). - Change TARGET_CMPXCHG16B to TARGET_CMPXCHG16B_P (opts->...). - Change TARGET_FSGSBASE to TARGET_FSGSBASE_P (opts->...). - Change TARGET_RDRND to TARGET_RDRND_P (opts->...). - Change TARGET_F16C to TARGET_F16C_P (opts->...). - Change TARGET_RTM to TARGET_RTM_P (opts->...). - Change TARGET_HLE to TARGET_HLE_P (opts->...). - Change TARGET_RDSEED to TARGET_RDSEED_P (opts->...). - Change TARGET_PRFCHW to TARGET_PRFCHW_P (opts->...). - Change TARGET_ADX to TARGET_ADX_P (opts->...). - Change TARGET_FXSR to TARGET_FXSR_P (opts->...). - Change TARGET_XSAVE to TARGET_XSAVE_P (opts->...). - Change TARGET_XSAVEOPT to TARGET_XSAVEOPT_P (opts->...). - Change TARGET_LP64 to TARGET_LP64_P (opts->...). - Change TARGET_X32 to TARGET_X32_P (opts->...). - Change TARGET_FPMATH_DEFAULT to TARGET_FPMATH_DEFAULT_P (opts->...). - Change TARGET_FLOAT_RETURNS_IN_80387 to - TARGET_FLOAT_RETURNS_IN_80387_P (opts->...). - (ix86_function_specific_save): New parameter. Use opts-> fields - to replace global fields. - (ix86_function_specific_restore): Ditto. - (ix86_valid_target_attribute_inner_p): New parameters. - Fix recursive call. - Fix call to ix86_handle_option and set_option. - (ix86_valid_target_attribute_tree): New parameters. - Change global_options to access opts. - Change global_options_set to access opts_set. - Fix call to ix86_valid_target_attribute_inner_p. - Change ix86_tune_string to access opts->x_ix86_tune_string. - Change ix86_arch_string to access opts->x_ix86_arch_string. - Change ix86_fpmath to access opts->x_ix86_fpmath - Fix call to ix86_option_override_internal. - Fix call to ix86_add_new_builtins. - Fix calls to build_optimization_node and build_target_option_node. - (ix86_valid_target_attribute_p): Remove access to global_options. - Use new gcc_options structure func_options. - Fix call to ix86_valid_target_attribute_tree. - Fix call to build_optimization_node. - (get_builtin_code_for_version): Fix call to - ix86_valid_target_attribute_tree. - -2013-10-15 David Malcolm - - * Makefile.in (PICFLAG): New. - (enable_host_shared): New. - (INTERNAL_CFLAGS): Use PICFLAG. - (LIBIBERTY): Use pic build of libiberty.a if configured with - --enable-host-shared. - * configure.ac: Add --enable-host-shared, setting up new - PICFLAG variable. - * configure: Regenerate. - * doc/install.texi (--enable-shared): Add note contrasting it with ... - (--enable-host-shared): New option. - -2013-10-15 Richard Biener - - * tree-tailcall.c (find_tail_calls): Don't use tail-call recursion - for built-in functions. - -2013-10-15 Zhenqiang Chen - - * tree-ssa-reassoc.c: Include rtl.h and tm_p.h. - (optimize_range_tests_1): New function, - extracted from optimize_range_tests. - (optimize_range_tests_xor): Similarly. - (optimize_range_tests_diff): New function. - (optimize_range_tests): Use optimize_range_tests_1. - -2013-10-15 Cong Hou - - * tree-vect-loop.c (vect_is_simple_reduction_1): Relax the - requirement of the reduction pattern so that one operand of the - reduction operation can come from outside of the loop. - -2013-10-15 James Greenhalgh - - * config/arm/neon-schedgen.ml: Remove. - * config/arm/cortex-a9-neon.md: Remove comment regarding - neon-schedgen.ml. - -2013-10-15 James Greenhalgh - - * config/arm/types: Remove old neon types. - -2013-10-15 James Greenhalgh - - * config/arm/cortex-a7.md - (cortex_a7_neon_type): New. - (cortex_a7_neon_mul): Update for new types. - (cortex_a7_neon_mla): Likewise. - (cortex_a7_neon): Likewise. - -2013-10-15 James Greenhalgh - - * config/arm/cortex-a15-neon.md - (cortex_a15_neon_type): New, - - (cortex_a15_neon_int_1): Remove. - (cortex_a15_neon_int_2): Likewise. - (cortex_a15_neon_int_3): Likewise. - (cortex_a15_neon_int_4): Likewise. - (cortex_a15_neon_int_5): Likewise. - (cortex_a15_neon_vqneg_vqabs): Likewise. - (cortex_a15_neon_vmov): Likewise. - (cortex_a15_neon_vaba): Likewise. - (cortex_a15_neon_vaba_qqq): Likewise. - (cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a15_neon_mul_qqq_8_16_32_ddd_32): Likewise. - (cortex_a15_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar): - Likewise. - (cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a15_neon_mla_qqq_8_16): Likewise. - (cortex_a15_neon_mla_ddd_32_qqd_16_ddd_32_scalar): Likewise. - (cortex_a15_neon_mla_qqq_32_qqd_32_scalar): Likewise. - (cortex_a15_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. - (cortex_a15_neon_mul_qqd_32_scalar): Likewise. - (cortex_a15_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. - (cortex_a15_neon_shift_1): Likewise. - (cortex_a15_neon_shift_2): Likewise. - (cortex_a15_neon_shift_3): Likewise. - (cortex_a15_neon_vshl_ddd): Likewise. - (cortex_a15_neon_vqshl_vrshl_vqrshl_qqq): Likewise. - (cortex_a15_neon_vsra_vrsra): Likewise. - (cortex_a15_neon_fp_vmla_ddd_scalar): Likewise. - (cortex_a15_neon_fp_vmla_qqq_scalar): Likewise. - (cortex_a15_neon_bp_3cycle): Likewise. - (cortex_a15_neon_ldm_2): Likewise. - (cortex_a15_neon_stm_2): Likewise. - (cortex_a15_neon_mcr): Likewise. - (cortex_a15_neon_mrc): Likewise. - (cortex_a15_neon_fp_vadd_ddd_vabs_dd): Likewise. - (cortex_a15_neon_fp_vadd_qqq_vabs_qq): Likewise. - (cortex_a15_neon_fp_vmul_ddd): Likewise. - (cortex_a15_neon_fp_vmul_qqd): Likewise. - (cortex_a15_neon_fp_vmla_ddd): Likewise. - (cortex_a15_neon_fp_vmla_qqq): Likewise. - (cortex_a15_neon_fp_vmla_ddd_scalar): Likewise. - (cortex_a15_neon_fp_vmla_qqq_scalar): Likewise. - (cortex_a15_neon_fp_vrecps_vrsqrts_ddd): Likewise. - (cortex_a15_neon_fp_vrecps_vrsqrts_qqq): Likewise. - (cortex_a15_neon_bp_simple): Likewise. - (cortex_a15_neon_bp_2cycle): Likewise. - (cortex_a15_neon_bp_3cycle): Likewise. - (cortex_a15_neon_vld1_1_2_regs): Likewise. - (cortex_a15_neon_vld1_3_4_regs): Likewise. - (cortex_a15_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. - (cortex_a15_neon_vld2_4_regs): Likewise. - (cortex_a15_neon_vld3_vld4): Likewise. - (cortex_a15_neon_vst1_1_2_regs_vst2_2_regs): Likewise. - (cortex_a15_neon_vst1_3_4_regs): Likewise. - (cortex_a15_neon_vst2_4_regs_vst3_vst4): Rename to... - (cortex_a15_neon_vst2_4_regs_vst3): ...This, update for new attributes. - (cortex_a15_neon_vst3_vst4): Rename to... - (cortex_a15_neon_vst4): This, update for new attributes. - (cortex_a15_neon_vld1_vld2_lane): Update for new attributes. - (cortex_a15_neon_vld3_vld4_lane): Likewise. - (cortex_a15_neon_vst1_vst2_lane): Likewise. - (cortex_a15_neon_vst3_vst4_lane): Likewise. - (cortex_a15_neon_vld3_vld4_all_lanes): Likewise. - (cortex_a15_neon_ldm_2): Likewise. - (cortex_a15_neon_stm_2): Likewise. - (cortex_a15_neon_mcr): Likewise. - (cortex_a15_neon_mcr_2_mcrr): Likewise. - (cortex_a15_neon_mrc): Likewise. - (cortex_a15_neon_mrrc): Likewise. - - (cortex_a15_neon_abd): New. - (cortex_a15_neon_abd_q): Likewise. - (cortex_a15_neon_aba): Likewise. - (cortex_a15_neon_aba_q): Likewise. - (cortex_a15_neon_acc): Likewise. - (cortex_a15_neon_acc_q): Likewise. - (cortex_a15_neon_arith_basic): Likewise. - (cortex_a15_neon_arith_complex): Likewise. - (cortex_a15_neon_multiply): Likewise. - (cortex_a15_neon_multiply_q): Likewise. - (cortex_a15_neon_mla): Likewise. - (cortex_a15_neon_mla_q): Likewise. - (cortex_a15_neon_sat_mla_long): Likewise. - (cortex_a15_neon_shift_acc): Likewise. - (cortex_a15_neon_shift_imm_basic): Likewise. - (cortex_a15_neon_shift_imm_complex): Likewise. - (cortex_a15_neon_shift_reg_basic): Likewise. - (cortex_a15_neon_shift_reg_basic_q): Likewise. - (cortex_a15_neon_shift_reg_complex): Likewise. - (cortex_a15_neon_shift_reg_complex_q): Likewise. - (cortex_a15_neon_fp_negabs): Likewise - (cortex_a15_neon_fp_arith): Likewise - (cortex_a15_neon_fp_arith_q): Likewise - (cortex_a15_neon_fp_cvt_int): Likewise - (cortex_a15_neon_fp_cvt_int_q): Likewise - (cortex_a15_neon_fp_cvt_16): Likewise - (cortex_a15_neon_fp_mul): Likewise - (cortex_a15_neon_fp_mul_q): Likewise - (cortex_a15_neon_fp_mla): Likewise - (cortex_a15_neon_fp_mla_q): Likewise - (cortex_a15_neon_fp_recps_rsqrte): Likewise. - (cortex_a15_neon_fp_recps_rsqrte_q): Likewise. - (cortex_a15_neon_bitops): Likewise. - (cortex_a15_neon_bitops_q): Likewise. - (cortex_a15_neon_from_gp): Likewise. - (cortex_a15_neon_from_gp_q): Likewise. - (cortex_a15_neon_tbl3_tbl4): Likewise. - (cortex_a15_neon_zip_q): Likewise. - (cortex_a15_neon_to_gp): Likewise. - (cortex_a15_neon_load_a): Likewise. - (cortex_a15_neon_load_b): Likewise. - (cortex_a15_neon_load_c): Likewise. - (cortex_a15_neon_load_d): Likewise. - (cortex_a15_neon_load_e): Likewise. - (cortex_a15_neon_load_f): Likewise. - (cortex_a15_neon_store_a): Likewise. - (cortex_a15_neon_store_b): Likewise. - (cortex_a15_neon_store_c): Likewise. - (cortex_a15_neon_store_d): Likewise. - (cortex_a15_neon_store_e): Likewise. - (cortex_a15_neon_store_f): Likewise. - (cortex_a15_neon_store_g): Likewise. - (cortex_a15_neon_store_h): Likewise. - (cortex_a15_vfp_to_from_gp): Likewise. - -2013-10-15 James Greenhalgh - - * config/arm/cortex-a9-neon.md (cortex_a9_neon_type): New. - - (cortex_a9_neon_vshl_ddd): Remove. - (cortex_a9_neon_vst3_vst4): Likewise. - (cortex_a9_neon_vld3_vld4_all_lanes): Likewise. - - (cortex_a9_neon_bit_ops_q): New. - - (cortex_a9_neon_int_1): Use cortex_a8_neon_type. - (cortex_a9_neon_int_2): Likewise. - (cortex_a9_neon_int_3): Likewise. - (cortex_a9_neon_int_4): Likewise. - (cortex_a9_neon_int_5): Likewise. - (cortex_a9_neon_vqneg_vqabs): Likewise. - (cortex_a9_neon_vmov): Likewise. - (cortex_a9_neon_vaba): Likewise. - (cortex_a9_neon_vaba_qqq): Likewise. - (cortex_a9_neon_shift_1): Likewise. - (cortex_a9_neon_shift_2): Likewise. - (cortex_a9_neon_shift_3): Likewise. - (cortex_a9_neon_vqshl_vrshl_vqrshl_qqq): Likewise. - (cortex_a9_neon_vsra_vrsra): Likewise. - (cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a9_neon_mul_qqq_8_16_32_ddd_32): Likewise. - (cortex_a9_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar): - Likewise. - (cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a9_neon_mla_qqq_8_16): Likewise. - (cortex_a9_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long): - Likewise. - (cortex_a9_neon_mla_qqq_32_qqd_32_scalar): Likewise. - (cortex_a9_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. - (cortex_a9_neon_mul_qqd_32_scalar): Likewise. - (cortex_a9_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. - (cortex_a9_neon_fp_vadd_ddd_vabs_dd): Likewise. - (cortex_a9_neon_fp_vadd_qqq_vabs_qq): Likewise. - (cortex_a9_neon_fp_vsum): Likewise. - (cortex_a9_neon_fp_vmul_ddd): Likewise. - (cortex_a9_neon_fp_vmul_qqd): Likewise. - (cortex_a9_neon_fp_vmla_ddd): Likewise. - (cortex_a9_neon_fp_vmla_qqq): Likewise. - (cortex_a9_neon_fp_vmla_ddd_scalar): Likewise. - (cortex_a9_neon_fp_vmla_qqq_scalar): Likewise. - (cortex_a9_neon_fp_vrecps_vrsqrts_ddd): Likewise. - (cortex_a9_neon_fp_vrecps_vrsqrts_qqq): Likewise. - (cortex_a9_neon_bp_simple): Likewise. - (cortex_a9_neon_bp_2cycle): Likewise. - (cortex_a9_neon_bp_3cycle): Likewise. - (cortex_a9_neon_ldr): Likewise. - (cortex_a9_neon_str): Likewise. - (cortex_a9_neon_vld1_1_2_regs): Likewise. - (cortex_a9_neon_vld1_3_4_regs): Likewise. - (cortex_a9_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. - (cortex_a9_neon_vld2_4_regs): Likewise. - (cortex_a9_neon_vld3_vld4): Likewise. - (cortex_a9_neon_vld1_vld2_lane): Likewise. - (cortex_a9_neon_vld3_vld4_lane): Likewise. - (cortex_a9_neon_vld3_vld4_all_lanes): Likewise. - (cortex_a9_neon_vst1_1_2_regs_vst2_2_regs): Likewise. - (cortex_a9_neon_vst1_3_4_regs): Likewise. - (cortex_a9_neon_vst2_4_regs_vst3_vst4): Likewise. - (cortex_a9_neon_vst1_vst2_lane): Likewise. - (cortex_a9_neon_vst3_vst4_lane): Likewise. - (cortex_a9_neon_mcr): Likewise. - (cortex_a9_neon_mcr_2_mcrr): Likewise. - (cortex_a9_neon_mrc): Likewise. - (cortex_a9_neon_mrrc): Likewise. - -2013-10-15 James Greenhalgh - - * config/arm/cortex-a8-neon.md (cortex_a8_neon_type): New. - - (cortex_a8_neon_vshl_ddd): Remove. - (cortex_a8_neon_vst3_vst4): Likewise. - (cortex_a8_neon_vld3_vld4_all_lanes): Likewise. - - (cortex_a8_neon_bit_ops_q): New. - - (cortex_a8_neon_int_1): Use cortex_a8_neon_type. - (cortex_a8_neon_int_2): Likewise.. - (cortex_a8_neon_int_3): Likewise. - (cortex_a8_neon_int_5): Likewise. - (cortex_a8_neon_vqneg_vqabs): Likewise. - (cortex_a8_neon_int_4): Likewise. - (cortex_a8_neon_vaba): Likewise. - (cortex_a8_neon_vaba_qqq): Likewise. - (cortex_a8_neon_shift_1): Likewise. - (cortex_a8_neon_shift_2): Likewise. - (cortex_a8_neon_shift_3): Likewise. - (cortex_a8_neon_vqshl_vrshl_vqrshl_qqq): Likewise. - (cortex_a8_neon_vsra_vrsra): Likewise. - (cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a8_neon_mul_qqq_8_16_32_ddd_32): Likewise. - (cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar): - Likewise. - (cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a8_neon_mla_qqq_8_16): Likewise. - (cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long): - Likewise. - (cortex_a8_neon_mla_qqq_32_qqd_32_scalar): Likewise. - (cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. - (cortex_a8_neon_mul_qqd_32_scalar): Likewise. - (cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. - (cortex_a8_neon_fp_vadd_ddd_vabs_dd): Likewise. - (cortex_a8_neon_fp_vadd_qqq_vabs_qq): Likewise. - (cortex_a8_neon_fp_vsum): Likewise. - (cortex_a8_neon_fp_vmul_ddd): Likewise. - (cortex_a8_neon_fp_vmul_qqd): Likewise. - (cortex_a8_neon_fp_vmla_ddd): Likewise. - (cortex_a8_neon_fp_vmla_qqq): Likewise. - (cortex_a8_neon_fp_vmla_ddd_scalar): Likewise. - (cortex_a8_neon_fp_vmla_qqq_scalar): Likewise. - (cortex_a8_neon_fp_vrecps_vrsqrts_ddd): Likewise. - (cortex_a8_neon_fp_vrecps_vrsqrts_qqq): Likewise. - (cortex_a8_neon_bp_simple): Likewise. - (cortex_a8_neon_bp_2cycle): Likewise. - (cortex_a8_neon_bp_3cycle): Likewise. - (cortex_a8_neon_ldr): Likewise. - (cortex_a8_neon_str): Likewise. - (cortex_a8_neon_vld1_1_2_regs): Likewise. - (cortex_a8_neon_vld1_3_4_regs): Likewise. - (cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. - (cortex_a8_neon_vld2_4_regs): Likewise. - (cortex_a8_neon_vld3_vld4): Likewise. - (cortex_a8_neon_vld1_vld2_lane): Likewise. - (cortex_a8_neon_vld3_vld4_lane): Likewise. - (cortex_a8_neon_vst1_1_2_regs_vst2_2_regs): Likewise. - (cortex_a8_neon_vst1_3_4_regs): Likewise. - (cortex_a8_neon_vst2_4_regs_vst3_vst4): Likewise. - (cortex_a8_neon_vst1_vst2_lane): Likewise. - (cortex_a8_neon_vst3_vst4_lane): Likewise. - (cortex_a8_neon_mcr): Likewise. - (cortex_a8_neon_mcr_2_mcrr): Likewise. - (cortex_a8_neon_mrc): Likewise. - (cortex_a8_neon_mrrc): Likewise. - -2013-10-15 James Greenhalgh - - * config/aarch64/iterators.md (Vetype): Add SF and DF modes. - (fp): New. - * config/aarch64/aarch64-simd.md (neon_type): Remove. - (aarch64_simd_dup): Add "type" attribute. - (aarch64_dup_lane): Likewise. - (aarch64_dup_lane_): Likewise. - (*aarch64_simd_mov): Likewise. - (aarch64_simd_mov_from_low): Likewise. - (aarch64_simd_mov_from_high): Likewise. - (orn3): Likewise. - (bic3): Likewise. - (add3): Likewise. - (sub3): Likewise. - (mul3): Likewise. - (*aarch64_mul3_elt): Likewise. - (*aarch64_mul3_elt_): Likewise. - (*aarch64_mul3_elt_to_128df): Likewise. - (*aarch64_mul3_elt_to_64v2df): Likewise. - (neg2): Likewise. - (abs2): Likewise. - (abd_3): Likewise. - (aba_3): Likewise. - (fabd_3): Likewise. - (*fabd_scalar3): Likewise. - (and3): Likewise. - (ior3): Likewise. - (xor3): Likewise. - (one_cmpl2): Likewise. - (aarch64_simd_vec_set): Likewise. - (aarch64_simd_lshr): Likewise. - (aarch64_simd_ashr): Likewise. - (aarch64_simd_imm_shl): Likewise. - (aarch64_simd_reg_sshl_unsigned): Likewise. - (aarch64_simd_reg_shl_signed): Likewise. - (aarch64_simd_vec_setv2di): Likewise. - (aarch64_simd_vec_set): Likewise. - (aarch64_mla): Likewise. - (*aarch64_mla_elt): Likewise. - (*aarch64_mla_elt_): Likewise. - (aarch64_mls): Likewise. - (*aarch64_mls_elt): Likewise. - (*aarch64_mls_elt_): Likewise. - (3): Likewise. - (move_lo_quad_): Likewise. - (aarch64_simd_move_hi_quad_): Likewise. - (aarch64_simd_vec_pack_trunc_): Likewise. - (vec_pack_trunc_): Likewise. - (aarch64_simd_vec_unpack_lo_): Likewise. - (aarch64_simd_vec_unpack_hi_): Likewise. - (*aarch64_mlal_lo): Likewise. - (*aarch64_mlal_hi): Likewise. - (*aarch64_mlsl_lo): Likewise. - (*aarch64_mlsl_hi): Likewise. - (*aarch64_mlal): Likewise. - (*aarch64_mlsl): Likewise. - (aarch64_simd_vec_mult_lo_): Likewise. - (aarch64_simd_vec_mult_hi_): Likewise. - (add3): Likewise. - (sub3): Likewise. - (mul3): Likewise. - (div3): Likewise. - (neg2): Likewise. - (abs2): Likewise. - (fma4): Likewise. - (*aarch64_fma4_elt): Likewise. - (*aarch64_fma4_elt_): Likewise. - (*aarch64_fma4_elt_to_128df): Likewise. - (*aarch64_fma4_elt_to_64v2df): Likewise. - (fnma4): Likewise. - (*aarch64_fnma4_elt): Likewise. - (*aarch64_fnma4_elt_ - (*aarch64_fnma4_elt_to_128df): Likewise. - (*aarch64_fnma4_elt_to_64v2df): Likewise. - (2): Likewise. - (l2): Likewise. - (2): Likewise. - (vec_unpacks_lo_v4sf): Likewise. - (aarch64_float_extend_lo_v2df): Likewise. - (vec_unpacks_hi_v4sf): Likewise. - (aarch64_float_truncate_lo_v2sf): Likewise. - (aarch64_float_truncate_hi_v4sf): Likewise. - (aarch64_vmls): Likewise. - (3): Likewise. - (3): Likewise. - (reduc_plus_): Likewise. - (reduc_plus_v2di): Likewise. - (reduc_plus_v2si): Likewise. - (reduc_plus_): Likewise. - (aarch64_addpv4sf): Likewise. - (clz2): Likewise. - (reduc__): Likewise. - (reduc__v2di): Likewise. - (reduc__v2si): Likewise. - (reduc__): Likewise. - (reduc__v4sf): Likewise. - (aarch64_simd_bsl_internal): Likewise. - (*aarch64_get_lane_extend): Likewise. - (*aarch64_get_lane_zero_extendsi): Likewise. - (aarch64_get_lane): Likewise. - (*aarch64_combinez): Likewise. - (aarch64_combine): Likewise. - (aarch64_simd_combine): Likewise. - (aarch64_l_hi_internal): Likewise. - (aarch64_l_lo_internal): Likewise. - (aarch64_l): Likewise. - (aarch64_w): Likewise. - (aarch64_w2_internal): Likewise. - (aarch64_h): Likewise. - (aarch64_hn): Likewise. - (aarch64_hn2): Likewise. - (aarch64_pmul): Likewise. - (aarch64_): Likewise. - (aarch64_qadd): Likewise. - (aarch64_sqmovun): Likewise. - (aarch64_qmovn): Likewise. - (aarch64_s): Likewise. - (aarch64_sqdmulh): Likewise. - (aarch64_sqdmulh_lane): Likewise. - (aarch64_sqdmulh_laneq): Likewise. - (aarch64_sqdmulh_lane): Likewise. - (aarch64_sqdmll): Likewise. - (aarch64_sqdmll_lane_internal): Likewise. - (aarch64_sqdmll_lane_internal): Likewise. - (aarch64_sqdmll_n): Likewise. - (aarch64_sqdmll2_internal): Likewise. - (aarch64_sqdmll2_lane_internal): Likewise. - (aarch64_sqdmll2_n_internal): Likewise. - (aarch64_sqdmull): Likewise. - (aarch64_sqdmull_lane_internal): Likewise. - (aarch64_sqdmull_n): Likewise. - (aarch64_sqdmull2_internal): Likewise. - (aarch64_sqdmull2_lane_internal): Likewise. - (aarch64_sqdmull2_n_internal): Likewise. - (aarch64_shl): Likewise. - (aarch64_qshl - (aarch64_shll_n): Likewise. - (aarch64_shll2_n): Likewise. - (aarch64_shr_n): Likewise. - (aarch64_sra_n): Likewise. - (aarch64_si_n): Likewise. - (aarch64_qshl_n): Likewise. - (aarch64_qshrn_n): Likewise. - (aarch64_cm): Likewise. - (aarch64_cmdi): Likewise. - (aarch64_cm): Likewise. - (aarch64_cmdi): Likewise. - (aarch64_cmtst): Likewise. - (aarch64_cmtstdi): Likewise. - (aarch64_cm): Likewise. - (*aarch64_fac): Likewise. - (aarch64_addp): Likewise. - (aarch64_addpdi): Likewise. - (sqrt2): Likewise. - (vec_load_lanesoi): Likewise. - (vec_store_lanesoi): Likewise. - (vec_load_lanesci): Likewise. - (vec_store_lanesci): Likewise. - (vec_load_lanesxi): Likewise. - (vec_store_lanesxi): Likewise. - (*aarch64_mov): Likewise. - (aarch64_ld2_dreg): Likewise. - (aarch64_ld2_dreg): Likewise. - (aarch64_ld3_dreg): Likewise. - (aarch64_ld3_dreg): Likewise. - (aarch64_ld4_dreg): Likewise. - (aarch64_ld4_dreg): Likewise. - (aarch64_tbl1): Likewise. - (aarch64_tbl2v16qi): Likewise. - (aarch64_combinev16qi): Likewise. - (aarch64_): Likewise. - (aarch64_st2_dreg): Likewise. - (aarch64_st2_dreg): Likewise. - (aarch64_st3_dreg): Likewise. - (aarch64_st3_dreg): Likewise. - (aarch64_st4_dreg): Likewise. - (aarch64_st4_dreg): Likewise. - (*aarch64_simd_ld1r): Likewise. - (aarch64_frecpe): Likewise. - (aarch64_frecp): Likewise. - (aarch64_frecps): Likewise. - -2013-10-15 James Greenhalgh - - * config/arm/iterators.md (V_elem_ch): New. - (q): Likewise. - (VQH_type): Likewise. - * config/arm/arm.md (is_neon_type): New. - (conds): Use is_neon_type. - (anddi3_insn): Update type attribute. - (xordi3_insn): Likewise. - (one_cmpldi2): Likewise. - * config/arm/vfp.md (movhf_vfp_neon): Update type attribute. - * config/arm/neon.md (neon_mov): Update type attribute. - (*movmisalign_neon_store): Likewise. - (*movmisalign_neon_load): Likewise. - (vec_set_internal): Likewise. - (vec_set_internal): Likewise. - (vec_setv2di_internal): Likewise. - (vec_extract): Likewise. - (vec_extract): Likewise. - (vec_extractv2di): Likewise. - (*add3_neon): Likewise. - (adddi3_neon): Likewise. - (*sub3_neon): Likewise. - (subdi3_neon): Likewise. - (fma4): Likewise. - (fma4_intrinsic): Likewise. - (*fmsub4): Likewise. - (fmsub4_intrinsic): Likewise. - (neon_vrint): Likewise. - (ior3): Likewise. - (and3): Likewise. - (orn3_neon): Likewise. - (orndi3_neon): Likewise. - (bic3_neon): Likewise. - (bicdi3_neon): Likewise. - (xor3): Likewise. - (one_cmpl2): Likewise. - (abs2): Likewise. - (neg2): Likewise. - (negdi2_neon): Likewise. - (*umin3_neon): Likewise. - (*umax3_neon): Likewise. - (*smin3_neon): Likewise. - (*smax3_neon): Likewise. - (vashl3): Likewise. - (vashr3_imm): Likewise. - (vlshr3_imm): Likewise. - (ashl3_signed): Likewise. - (ashl3_unsigned): Likewise. - (neon_load_count): Likewise. - (ashldi3_neon_noclobber): Likewise. - (ashldi3_neon): Likewise. - (signed_shift_di3_neon): Likewise. - (unsigned_shift_di3_neon): Likewise. - (ashrdi3_neon_imm_noclobber): Likewise. - (lshrdi3_neon_imm_noclobber): Likewise. - (di3_neon): Likewise. - (widen_ssum3): Likewise. - (widen_usum3): Likewise. - (quad_halves_v4si): Likewise. - (quad_halves_v4sf): Likewise. - (quad_halves_v8hi): Likewise. - (quad_halves_v16qi): Likewise. - (reduc_splus_v2di): Likewise. - (neon_vpadd_internal): Likewise. - (neon_vpsmin): Likewise. - (neon_vpsmax): Likewise. - (neon_vpumin): Likewise. - (neon_vpumax): Likewise. - (*ss_add_neon): Likewise. - (*us_add_neon): Likewise. - (*ss_sub_neon): Likewise. - (*us_sub_neon): Likewise. - (neon_vadd_unspec): Likewise. - (neon_vaddl): Likewise. - (neon_vaddw): Likewise. - (neon_vhadd): Likewise. - (neon_vqadd): Likewise. - (neon_vaddhn): Likewise. - (neon_vmul): Likewise. - (neon_vfms): Likewise. - (neon_vmlal): Likewise. - (neon_vmls): Likewise. - (neon_vmlsl): Likewise. - (neon_vqdmulh): Likewise. - (neon_vqdmlal): Likewise. - (neon_vqdmlsl): Likewise. - (neon_vmull): Likewise. - (neon_vqdmull): Likewise. - (neon_vsub_unspec): Likewise. - (neon_vsubl): Likewise. - (neon_vsubw): Likewise. - (neon_vqsub): Likewise. - (neon_vhsub): Likewise. - (neon_vsubhn): Likewise. - (neon_vceq): Likewise. - (neon_vcge): Likewise. - (neon_vcgeu): Likewise. - (neon_vcgt): Likewise. - (neon_vcgtu): Likewise. - (neon_vcle): Likewise. - (neon_vclt): Likewise. - (neon_vcage): Likewise. - (neon_vcagt): Likewise. - (neon_vtst): Likewise. - (neon_vabd): Likewise. - (neon_vabdl): Likewise. - (neon_vaba): Likewise. - (neon_vabal): Likewise. - (neon_vmax): Likewise. - (neon_vmin): Likewise. - (neon_vpaddl): Likewise. - (neon_vpadal): Likewise. - (neon_vpmax): Likewise. - (neon_vpmin): Likewise. - (neon_vrecps): Likewise. - (neon_vrsqrts): Likewise. - (neon_vqabs): Likewise. - (neon_vqneg): Likewise. - (neon_vcls): Likewise. - (clz2): Likewise. - (popcount2): Likewise. - (neon_vrecpe): Likewise. - (neon_vrsqrte): Likewise. - (neon_vget_lane_sext_internal): Likewise. - (neon_vget_lane_zext_internal): Likewise. - (neon_vdup_n): Likewise. - (neon_vdup_n): Likewise. - (neon_vdup_nv2di): Likewise. - (neon_vdup_lane_interal): Likewise. - (*neon_vswp): Likewise. - (neon_vcombine): Likewise. - (float2): Likewise. - (floatuns2): Likewise. - (fix_trunc2): Likewise. - (fixuns_trunc2 - (neon_vcvt): Likewise. - (neon_vcvt): Likewise. - (neon_vcvtv4sfv4hf): Likewise. - (neon_vcvtv4hfv4sf): Likewise. - (neon_vcvt_n): Likewise. - (neon_vcvt_n): Likewise. - (neon_vmovn): Likewise. - (neon_vqmovn): Likewise. - (neon_vqmovun): Likewise. - (neon_vmovl): Likewise. - (neon_vmul_lane): Likewise. - (neon_vmul_lane): Likewise. - (neon_vmull_lane): Likewise. - (neon_vqdmull_lane): Likewise. - (neon_vqdmulh_lane): Likewise. - (neon_vqdmulh_lane): Likewise. - (neon_vmla_lane): Likewise. - (neon_vmla_lane): Likewise. - (neon_vmlal_lane): Likewise. - (neon_vqdmlal_lane): Likewise. - (neon_vmls_lane): Likewise. - (neon_vmls_lane): Likewise. - (neon_vmlsl_lane): Likewise. - (neon_vqdmlsl_lane): Likewise. - (neon_vext): Likewise. - (neon_vrev64): Likewise. - (neon_vrev32): Likewise. - (neon_vrev16): Likewise. - (neon_vbsl_internal): Likewise. - (neon_vshl): Likewise. - (neon_vqshl): Likewise. - (neon_vshr_n): Likewise. - (neon_vshrn_n): Likewise. - (neon_vqshrn_n): Likewise. - (neon_vqshrun_n): Likewise. - (neon_vshl_n): Likewise. - (neon_vqshl_n): Likewise. - (neon_vqshlu_n): Likewise. - (neon_vshll_n): Likewise. - (neon_vsra_n): Likewise. - (neon_vsri_n): Likewise. - (neon_vsli_n): Likewise. - (neon_vtbl1v8qi): Likewise. - (neon_vtbl2v8qi): Likewise. - (neon_vtbl3v8qi): Likewise. - (neon_vtbl4v8qi): Likewise. - (neon_vtbl1v16qi): Likewise. - (neon_vtbl2v16qi): Likewise. - (neon_vcombinev16qi): Likewise. - (neon_vtbx1v8qi): Likewise. - (neon_vtbx2v8qi): Likewise. - (neon_vtbx3v8qi): Likewise. - (neon_vtbx4v8qi): Likewise. - (*neon_vtrn_insn): Likewise. - (*neon_vzip_insn): Likewise. - (*neon_vuzp_insn): Likewise. - (neon_vld1): Likewise. - (neon_vld1_lane): Likewise. - (neon_vld1_lane): Likewise. - (neon_vld1_dup): Likewise. - (neon_vld1_dup): Likewise. - (neon_vld1_dupv2di): Likewise. - (neon_vst1): Likewise. - (neon_vst1_lane): Likewise. - (neon_vst1_lane): Likewise. - (neon_vld2): Likewise. - (neon_vld2): Likewise. - (neon_vld2_lane): Likewise. - (neon_vld2_lane): Likewise. - (neon_vld2_dup): Likewise. - (neon_vst2): Likewise. - (neon_vst2): Likewise. - (neon_vst2_lane): Likewise. - (neon_vst2_lane): Likewise. - (neon_vld3): Likewise. - (neon_vld3qa): Likewise. - (neon_vld3qb): Likewise. - (neon_vld3_lane): Likewise. - (neon_vld3_lane): Likewise. - (neon_vld3_dup): Likewise. - (neon_vst3): Likewise. - (neon_vst3qa): Likewise. - (neon_vst3qb): Likewise. - (neon_vst3_lane): Likewise. - (neon_vst3_lane): Likewise. - (neon_vld4): Likewise. - (neon_vld4qa): Likewise. - (neon_vld4qb): Likewise. - (neon_vld4_lane): Likewise. - (neon_vld4_lane): Likewise. - (neon_vld4_dup): Likewise. - (neon_vst4): Likewise. - (neon_vst4qa): Likewise. - (neon_vst4qb): Likewise. - (neon_vst4_lane): Likewise. - (neon_vst4_lane): Likewise. - (neon_vec_unpack_lo_): Likewise. - (neon_vec_unpack_hi_): Likewise. - (neon_vec_mult_lo_): Likewise. - (neon_vec_mult_hi_): Likewise. - (neon_vec_shiftl_): Likewise. - (neon_unpack_): Likewise. - (neon_vec_mult_): Likewise. - (vec_pack_trunc_): Likewise. - (neon_vec_pack_trunc_): Likewise. - (neon_vabd_2): Likewise. - (neon_vabd_3): Likewise. - -2013-10-15 James Greenhalgh - - * config/aarch64/aarch64.md (movtf_aarch64): Update type attribute. - (load_pair): Update type attribute. - (store_pair): Update type attribute. - * config/aarch64/iterators.md (q): New. - -2013-10-15 James Greenhalgh - - * config/arm/types.md: Add new types for Neon insns. - -2013-10-15 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (unspec): Add UNSPEC_RCP14, UNSPEC_RSQRT14, - UNSPEC_FIXUPIMM, UNSPEC_SCALEF, UNSPEC_GETEXP, UNSPEC_GETMANT, - UNSPEC_EXP2, UNSPEC_RCP28, UNSPEC_RSQRT28. - (rcp14): New. - (srcp14): Ditto. - (rsqrt14): Ditto. - (rsqrt14): Ditto. - (avx512f_vmscalef): Ditto. - (avx512f_scalef): Ditto. - (avx512f_getexp): Ditto. - (avx512f_sgetexp): Ditto. - (avx512f_fixupimm): Ditto. - (avx512f_sfixupimm): Ditto. - (avx512f_rndscale): Ditto. - (*avx512er_exp2): Ditto. - (*avx512er_rcp28): Ditto. - (avx512er_rsqrt28): Ditto. - (avx512f_getmant): Ditto. - (avx512f_getmant): Ditto. - (avx512f_rndscale): Fix formatting. - -2013-10-15 Martin Jambor - - * ipa-utils.h (ipa_edge_within_scc): Declare. - * ipa-cp.c (edge_within_scc): Moved... - * ipa-utils.c (ipa_edge_within_scc): ...here. Updated all callers. - -2013-10-15 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/predicates.md (const_8_to_15_operand): New. - (const_16_to_31_operand): Ditto. - * config/i386/sse.md (V8FI): New. - (V16FI): Ditto. - (reduc_splus_v8df): Ditto. - (reduc_splus_v16sf): Ditto. - (avx512f_vextract32x4_1): Ditto. - (vec_extract_hi_): Ditto. - (avx512f_vinsert32x4_1): Ditto. - (vec_set_lo_): Ditto. - (vec_set_hi_): Ditto. - (avx512f_shuf_64x2_1): Ditto. - (avx512f_shuf_32x4_1): Ditto. - (avx512f_pshufd_1): Ditto. - (avx512f_broadcast): Ditto. - (avx512f_broadcast): Ditto. - (define_split): Split vec_extract_lo into move. - (ssequartermode): Ditto. - (ssedoublemode): Extened with wider modes. - (vec_extract_lo_): Ditto. - -2013-10-15 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/predicates.md (register_or_constm1_operand): New. - * config/i386/sse.md (unspec): Add UNSPEC_UNSIGNED_PCMP, UNSPEC_TESTM, - UNSPEC_TESTNM, UNSPEC_VTERNLOG, UNSPEC_ALIGN, UNSPEC_CONFLICT, - UNSPEC_MASKED_EQ, UNSPEC_MASKED_GT, UNSPEC_GATHER_PREFETCH, - UNSPEC_SCATTER_PREFETCH - (VI48_512): New. - (avx512f_ucmp3): Ditto. - (avx512f_vternlog): Ditto. - (avx512f_align): Ditto. - (3): Ditto. - (avx512f_v): Ditto. - (avx512f_): Ditto. - (avx512f_eq3): Ditto. - (avx512f_eq3_1): Ditto. - (avx512f_gt3): Ditto. - (avx512f_testm3): Ditto. - (avx512f_testnm3): Ditto. - (avx512pf_gatherpf): Ditto. - (*avx512pf_gatherpf_mask): Ditto. - (*avx512pf_gatherpf): Ditto. - (avx512pf_scatterpf): Ditto. - (*avx512pf_scatterpf_mask): Ditto. - (*avx512pf_scatterpf): Ditto. - (avx512f_vec_dup_gpr): Ditto. - (clz2): Ditto. - (conflict): Ditto. - (REDUC_SMINMAX_MODE): Extened with wider modes. - (reduc__): Ditto. - (vlshr3): Ditto. - (vashl3): Ditto. - -2013-10-15 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (unspec): Added UNSPEC_VPERMI2, UNSPEC_VPERMT2, - UNSPEC_SCATTER. - (VI48F_512): New. - (avx512fmaskmode): Ditto. - (bcstscalarsuff): Ditto. - (avx512f_blendm): Ditto. - (cmp_imm_predicate): Ditto. - (avx512f_cmp3): Ditto. - (avx512f_vec_dup): Ditto. - (avx512f_vec_dup_mem): Ditto. - (avx512f_vpermi2var3): Ditto. - (avx512f_vpermt2var3): Ditto. - (vec_init): Ditto. - (avx512f_gathersi): Ditto. - (*avx512f_gathersi): Ditto. - (*avx512f_gathersi_2): Ditto. - (avx512f_gatherdi): Ditto. - (*avx512f_gatherdi): Ditto. - (*avx512f_gatherdi_2): Ditto. - (avx512f_scattersi): Ditto. - (*avx512f_scattersi): Ditto. - (avx512f_scatterdi): Ditto. - (*avx512f_scatterdi): Ditto. - (sseintprefix): Extened with wider modes. - (VEC_GATHER_IDXSI): Ditto. - (VEC_GATHER_IDXDI): Ditto. - (VEC_GATHER_SRCDI): Ditto. - -2013-10-15 Matthew Gretton-Dann - Ramana Radhakrishnan - - * config/arm/t-aprofile: New file. - * config.gcc: Handle --with-multilib-list option. - -2013-10-15 Bernd Schmidt - - * reload1.c (reloads_unique_chain_p): Ensure that r1 is - the input for r2. - -2013-10-15 Richard Biener - - * tree-loop-distribution.c (build_empty_rdg): Inline into - single user. - (rdg_flag_vertex): Inline into single user. - (rdg_flag_vertex_and_dependent): Likewise. - (build_rdg_partition_for_vertex): Remove processed bitmap. - (rdg_build_partitions): Simplify. - -2013-10-15 Richard Biener - - * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): - Restructure forwarding through conversions and copies to - avoid performing copy-propagation the wrong way. Adjust - recursion invocations. - (forward_propagate_addr_expr): Add argument stating if we - are recursing from a single-use. - (ssa_forward_propagate_and_combine): Adjust. - -2013-10-14 David Malcolm - - * dumpfile.h (gcc::dump_manager): New class, to hold state - relating to dumpfile management. - (get_dump_file_name): Remove in favor of method of dump_manager. - (dump_initialized_p): Likewise. - (dump_start): Likewise. - (dump_finish): Likewise. - (dump_switch_p): Likewise. - (dump_register): Likewise. - (get_dump_file_info): Likewise. - * context.c (gcc::context::context): Construct the dump_manager - instance. - * context.h (gcc::context::get_dumps): New. - (gcc::context::m_dumps): New. - * coverage.c (coverage_init): Port to dump_manager API. - * dumpfile.c (extra_dump_files): Convert to field of gcc::dump_manager. - (extra_dump_files_in_use): Likewise. - (extra_dump_files_alloced): Likewise. - (gcc::dump_manager::dump_manager): New. - (dump_register): Convert to... - (gcc::dump_manager::dump_register): ...method, replacing - function-static next_dump with m_next_dump field. - (get_dump_file_info): Convert to... - (gcc::dump_manager::get_dump_file_info): ...method. - (get_dump_file_name): Convert to... - (gcc::dump_manager::get_dump_file_name): ...method. - (dump_start): Convert to... - (gcc::dump_manager::dump_start): ...method. - (dump_finish): Convert to... - (gcc::dump_manager::dump_finish): ...method. - (dump_begin): Replace body with... - (gcc::dump_manager::dump_begin): ...new method. - (dump_phase_enabled_p): Convert to... - (gcc::dump_manager::dump_phase_enabled_p): ...method. - (dump_phase_enabled_p): Convert to... - (gcc::dump_manager::dump_phase_enabled_p): ...method. - (dump_initialized_p): Convert to... - (gcc::dump_manager::dump_initialized_p): ...method. - (dump_flag_name): Replace body with... - (gcc::dump_manager::dump_flag_name): ...new method. - (dump_enable_all): Convert to... - (gcc::dump_manager::dump_enable_all): ...new method. - (opt_info_enable_passes): Convert to... - (gcc::dump_manager::opt_info_enable_passes): ...new method. - (dump_switch_p_1): Convert to... - (gcc::dump_manager::dump_switch_p_1): ...new method. - (dump_switch_p): Convert to... - (gcc::dump_manager::dump_switch_p): ...new method. - (opt_info_switch_p): Port to dump_manager API. - (enable_rtl_dump_file): Likewise. - * opts-global.c (handle_common_deferred_options): Port to new - dump_manager API. - * passes.c (pass_manager::finish_optimization_passes): Likewise. - (pass_manager::register_one_dump_file): Likewise. - (pass_manager::register_pass): Likewise. - (pass_init_dump_file): Likewise. - (pass_fini_dump_file): Likewise. - * statistics.c (statistics_early_init): Likewise. - -2013-10-14 Richard Biener - - * gimple.c (gimple_canonical_types, canonical_type_hash_cache, - iterative_hash_canonical_type, gimple_canonical_type_hash, - gimple_canonical_types_compatible_p, gimple_canonical_type_eq, - gimple_register_canonical_type, print_gimple_types_stats, - free_gimple_type_tables): Move to lto/lto.c - (gt-gimple.h): Do not include. - * gimple.h (gimple_register_canonical_type, - print_gimple_types_stats, free_gimple_type_tables): Remove. - * Makefile.in (GTFILES): Remove gimple.c. - -2013-10-14 Travis Snoozy - - PR target/58716 - * config/msp430/msp430.c (msp430_option_override): Correct thinko - scanning for msp430x targets. - -2013-10-14 Eric Botcazou - - PR bootstrap/58509 - * config/sparc/sparc-protos.h (widen_mem_for_ldd_peep): Declare. - (registers_ok_for_ldd_peep): Move around. - * config/sparc/sparc.c (widen_mem_for_ldd_peep): New. - * config/sparc/sparc.md (widening peepholes): Use it. - -2013-10-14 Richard Biener - - PR middle-end/58712 - PR middle-end/55358 - * gimple.c (iterative_hash_canonical_type): Make sure to - record the hash into the correct hashtable slot. - -2013-10-13 Eric Botcazou - - PR rtl-optimization/58662 - * combine.c (try_combine): Take into account death nodes on I2 when - splitting a PARALLEL of two independent SETs. Fix dump message. - -2013-10-12 Oleg Endo - - PR target/51244 - * config/sh/sh_treg_combine.cc: New SH specific RTL pass. - * config.gcc (sh[123456789lbe]*-*-* | sh-*-*): Add sh_treg_combine.o to - extra_objs. - * config/sh/t-sh (sh_treg_combine.o): New entry. - * config/sh/sh.c (sh_fixed_condition_code_regs): New function that - implements the target hook TARGET_FIXED_CONDITION_CODE_REGS. - (register_sh_passes): New function. Register sh_treg_combine pass. - (sh_option_override): Invoke it. - (sh_canonicalize_comparison): Handle op0_preserve_value. - * sh.md (*cbranch_t"): Do not try to optimize missed test and branch - opportunities. Canonicalize branch condition. - (nott): Allow only if pseudos can be created for non-SH2A. - -2013-10-12 H.J. Lu - - PR target/58690 - * config/i386/i386.c (ix86_copy_addr_to_reg): New function. - (ix86_expand_movmem): Replace copy_addr_to_reg with - ix86_copy_addr_to_reg. - (ix86_expand_setmem): Likewise. - -2013-10-12 Alexander Monakov - - * config/i386/i386.c (ix86_expand_sse_compare_and_jump): Use mode - provided by ix86_fp_compare_mode instead of CCFPUmode. - -2013-10-12 James Greenhalgh - - * config/aarch64/arm_neon.h - (vtbx<1,3>_8): Fix register constriants. - -2013-10-11 Jeff Law - - PR tree-optimization/58640 - * tree-ssa-threadupdate.c (mark_threaded_blocks): Truncate jump - threading paths that cross over two loop entry points. - -2013-10-11 Bill Schmidt - - * config/rs6000/vsx.md (*vsx_le_perm_load_v2di): Generalize to - handle vector float as well. - (*vsx_le_perm_load_v4si): Likewise. - (*vsx_le_perm_store_v2di): Likewise. - (*vsx_le_perm_store_v4si): Likewise. - -2013-10-11 Bill Schmidt - - * config/rs6000/vector.md (vec_realign_load): Generate vperm - directly to circumvent subtract from splat{31} workaround. - * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_le): New - prototype. - * config/rs6000/rs6000.c (altivec_expand_vec_perm_le): New. - * config/rs6000/altivec.md (define_c_enum "unspec"): Add - UNSPEC_VPERM_X and UNSPEC_VPERM_UNS_X. - (altivec_vperm_): Convert to define_insn_and_split to - separate big and little endian logic. - (*altivec_vperm__internal): New define_insn. - (altivec_vperm__uns): Convert to define_insn_and_split to - separate big and little endian logic. - (*altivec_vperm__uns_internal): New define_insn. - (vec_permv16qi): Add little endian logic. - -2013-10-11 Marc Glisse - - * doc/extend.texi (returns_nonnull): Remove arguments. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (VI48F_256_512): New. - (avx2_permvar): Change to ... - (_permvar): This. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/i386.c (bdesc_args): Change corresponding pattern for - __builtin_ia32_cvtps2dq, __builtin_ia32_cvtps2dq256. - * config/i386/sse.md (VI4_AVX): New. - (sf2simodelower): Ditto. - (sse2_cvtps2dq): Change to ... - (_fix_notrunc): This. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (V_512): New. - (VI_512): Ditto. - (vcond): Ditto. - (vcond): Ditto. - (vcondu): Ditto. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/i386.c (ix86_rtx_costs): Enable fma for TARGET_AVX512F. - * config/i386/sse.md (FMAMODEM): Changed modes and conditions. - (FMAMODE): Ditto. - (fma4): Removed condition. - (fms4): Ditto. - (fnma4): Ditto. - (fnms4): Ditto. - (fma4i_fmadd_): Ditto. - (*fma_fmadd_): Ditto. - (*fma_fmsub_): Ditto. - (*fma_fnmadd_): Ditto. - (*fma_fnmsub_): Ditto. - (fmaddsub_): Allow for TARGET_AVX512F. - (*fma_fmaddsub_): Ditto. - (*fma_fmsubadd_): Ditto. - (*fmai_fmadd_): Ditto. - (*fmai_fmsub_): Ditto. - (*fmai_fnmadd_): Ditto. - (*fmai_fnmsub_): Ditto. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (VI248_AVX2_8_AVX512F): New. - (VI124_256): Changed to ... - (VI124_256_48_512): This. - (ssepackmode): Extended with wider modes. - (3): Changed iterator. - (*avx2_3): Ditto. - (vec_pack_trunc_): Ditto. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (VI124_AVX2_48_AVX512F): New. - (VI8F_256_512): Ditto. - (abs2): Changed iterator. - (avx2_perm): Changed to ... - (_perm): This. - (avx2_perm_1): Changed to ... - (_perm_1): This. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (VI48_AVX512F): New. - (VI48_AVX2): Changed to ... - (VI48_AVX2_48_AVX512F): This. - (avx2_ashrv): Changed to ... - (_ashrv): This. - (avx2_v): Changed to ... - (_v): This. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (VI4_AVX512F): New. - (VI8_AVX2_AVX512F): Ditto. - (mul3): Extended with wider modes. - (*_mul3): Ditto. - (mul3): Ditto. - (vec_widen_mult_odd_): Ditto. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (VI2_AVX512F): New. - (VI124_AVX512F): Ditto. - (sseunpackmode): Extended with wider modes. - (sseunpackfltmode): Ditto. - (vec_unpacks_float_hi_): Ditto. - (vec_unpacks_float_lo_): Ditto. - (vec_unpacku_float_hi_): Ditto. - (vec_unpacku_float_lo_): Ditto. - (vec_unpacks_lo_): Ditto. - (vec_unpacks_hi_): Ditto. - (vec_unpacku_lo_): Ditto. - (vec_unpacku_hi_): Ditto. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/i386.md (multdiv): New. - (multdiv_mnemonic): Ditto. - * config/i386/sse.md (_vmmul3): Changed to... - (_vm3): This. - (_vmdiv3): Removed. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (V): Extended with wider modes. - (VF2): Ditto. - (ssehalfvecmode): Ditto. - (i128): Ditto. - (ssepackfltmode): Ditto. - (avx_vec_concat): Ditto. - (V_256_512): New iterator. - (VF2_512_256): Ditto. - (si2dfmode): New attribute. - (si2dfmodelower): Ditto. - (sf2dfmode): Ditto. - (concat_tg_mode): Ditto. - (floatv4siv4df2): Changed to ... - (float2): This. - (avx_cvtps2pd256): Changed to ... - (_cvtps2pd): This. - (vec_pack_trunc_v4df): Changed to ... - (vec_pack_trunc_): This. - (avx_vpermil): Changed to ... - (_vpermil): This. - (fix_truncv8dfv8si2): New. - (vec_pack_sfix_trunc_v8df): Ditto. - (avx512f_rndscale): Ditto. - (avx512f_roundpd512): Ditto. - (vec_pack_ufix_trunc_): Updated iterator. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/i386.md (any_fix): New iterator. - (fixsuffix): New attribute. - * config/i386/sse.md (VF1): Extened with wider modes. - (VI): Ditto. - (VI_AVX2): Ditto. - (VI8): Ditto. - (sseintvecmodelower): Ditto. - (ssescalarmode): Ditto. - (ssescalarnum): Ditto. - (VF1_128_256): New. - (ssexmmmode): Ditto. - (fix_truncv16sfv16si2): Ditto. - (_rcp2): Change iterator. - (rsqrt2): Ditto. - (_rsqrt2): Ditto. - (avx2_vec_dup): Ditto. - (_round_sfix): Ditto. - (round2_sfix): Ditto. - (avx2_pbroadcast): Ditto. - (*andnot3): Handle XI mode. - (*3): Ditto. - (AVXTOSSEMODE): Removed. - (avx_vpermil): Changed to ... - (_vpermil): This. - -2013-10-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/sse.md (_movnt): Update constraint to "v". - (_comi): Ditto. - (_ucomi): Ditto. - (sse_cvtss2siq_2): Ditto. - (sse2_cvtsd2si): Ditto. - (sse2_cvtsd2siq): Ditto. - (sse2_cvttsd2si): Ditto. - (sse2_cvttsd2siq): Ditto. - (3): Ditto. - (sse2_cvtsi2sdq): Update constraint and prefix. - (sse_cvtsi2ss): Update prefix. - (sse_cvtsi2ssq): Ditto. - -2013-10-11 Jakub Jelinek - - * tree-vrp.c (infer_nonnull_range): Use is_gimple_call, - ignore internal calls. - -2013-10-11 Richard Biener - - * tree-pretty-print.c (dump_generic_node): Allow to dump both (D) - and (ab) for SSA_NAMEs. Mark INTEGER_CSTs with (OVF) if - TREE_OVERFLOW is set. - -2013-10-11 Thomas Schwinge - - * tree.h (OMP_CLAUSE_CODE): Remove duplicate definition. - - * gimple.c: GIMPLE statements have subcodes, not sub-codes. - * gimple.h: Likewise. - - * doc/generic.texi (OpenMP): OMP_CLAUSE_* are subcodes, not sub-codes. - - * doc/generic.texi (Adding new DECL node types): Explain *_CHECK - macros. - - * doc/gimple.texi (is_gimple_omp): Move into the correct section. - - * acinclude.m4 (gcc_GAS_FLAGS): Add more gcc_cv_as_flags overrides. - * configure: Regenerate. - -2013-10-11 Jakub Jelinek - - * tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE__LOOPTEMP_ - and new OpenMP 4.0 clauses, handle UDR OMP_CLAUSE_REDUCTION, - formatting fixes, use pp_colon instead of pp_character (..., ':'), - similarly pp_right_paren. - (dump_generic_node): Handle OMP_DISTRIBUTE, OMP_TEAMS, - OMP_TARGET_DATA, OMP_TARGET, OMP_TARGET_UPDATE, OMP_TASKGROUP, - allow OMP_FOR_INIT to be NULL, handle OMP_ATOMIC_SEQ_CST. - * tree.c (omp_clause_num_ops, omp_clause_code_name): Add OpenMP 4.0 - clauses. - (omp_declare_simd_clauses_equal, - omp_remove_redundant_declare_simd_attrs): New functions. - (attribute_value_equal): Use omp_declare_simd_clauses_equal. - (walk_tree_1): Handle new OpenMP 4.0 clauses. - * tree.h (OMP_LOOP_CHECK): Define. - (OMP_FOR_BODY, OMP_FOR_CLAUSES, OMP_FOR_INIT, OMP_FOR_COND, - OMP_FOR_INCR, OMP_FOR_PRE_BODY): Use it. - (OMP_TASKGROUP_BODY, OMP_TEAMS_BODY, OMP_TEAMS_CLAUSES, - OMP_TARGET_DATA_BODY, OMP_TARGET_DATA_CLAUSES, OMP_TARGET_BODY, - OMP_TARGET_CLAUSES, OMP_TARGET_UPDATE_CLAUSES, OMP_CLAUSE_SIZE, - OMP_ATOMIC_SEQ_CST, OMP_CLAUSE_DEPEND_KIND, OMP_CLAUSE_MAP_KIND, - OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION, OMP_CLAUSE_PROC_BIND_KIND, - OMP_CLAUSE_REDUCTION_OMP_ORIG_REF, OMP_CLAUSE_ALIGNED_ALIGNMENT, - OMP_CLAUSE_NUM_TEAMS_EXPR, OMP_CLAUSE_THREAD_LIMIT_EXPR, - OMP_CLAUSE_DEVICE_ID, OMP_CLAUSE_DIST_SCHEDULE_CHUNK_EXPR, - OMP_CLAUSE_SIMDLEN_EXPR): Define. - (OMP_CLAUSE_DECL): Change range up to OMP_CLAUSE__LOOPTEMP_. - (omp_remove_redundant_declare_simd_attrs): New prototype. - * gimple.def (GIMPLE_OMP_TASKGROUP, GIMPLE_OMP_TARGET, - GIMPLE_OMP_TEAMS): New codes. - (GIMPLE_OMP_RETURN): Use GSS_OMP_ATOMIC_STORE instead of GSS_BASE. - * omp-low.c (struct omp_context): Add cancel_label and cancellable - fields. - (target_nesting_level): New variable. - (extract_omp_for_data): Handle GF_OMP_FOR_KIND_DISTRIBUTE and - OMP_CLAUSE_DIST_SCHEDULE. Don't fallback to library implementation - for collapse > 1 static schedule unless ordered. - (get_ws_args_for): Add par_stmt argument. Handle combined loops. - (determine_parallel_type): Adjust get_ws_args_for caller. - (install_var_field): Handle mask & 4 for double indirection. - (scan_sharing_clauses): Ignore shared clause on teams construct. - Handle OMP_CLAUSE__LOOPTEMP_ and new OpenMP 4.0 clauses. - (create_omp_child_function): If inside target or declare target - constructs, set "omp declare target" attribute on the child function. - (find_combined_for): New function. - (scan_omp_parallel): Handle combined loops. - (scan_omp_target, scan_omp_teams): New functions. - (check_omp_nesting_restrictions): Check new OpenMP 4.0 nesting - restrictions and set ctx->cancellable for cancellable constructs. - (scan_omp_1_stmt): Call check_omp_nesting_restrictions also on - selected builtin calls. Handle GIMPLE_OMP_TASKGROUP, - GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS. - (build_omp_barrier): Add lhs argument, return gimple rather than tree. - (omp_clause_aligned_alignment): New function. - (lower_rec_simd_input_clauses): Only call SET_DECL_VALUE_EXPR on decls. - (lower_rec_input_clauses): Add FD argument. Ignore shared clauses - on teams constructs. Handle user defined reductions and new - OpenMP 4.0 clauses. - (lower_reduction_clauses): Don't set placeholder to address of ref - if it has already the right type. - (lower_send_clauses): Handle OMP_CLAUSE__LOOPTEMP_. - (expand_parallel_call): Use the new non-_start suffixed builtins, - handle OMP_CLAUSE_PROC_BIND, don't call the outlined function - and GOMP_parallel_end after the call. - (expand_task_call): Handle OMP_CLAUSE_DEPEND. - (expand_omp_for_init_counts): Handle combined loops. - (expand_omp_for_init_vars): Add inner_stmt argument, handle combined - loops. - (expand_omp_for_generic): Likewise. Use GOMP_loop_end_cancel at the - end of cancellable loops. - (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): - Likewise. Handle collapse > 1 loops. - (expand_omp_simd): Handle combined loops. - (expand_omp_for): Add inner_stmt argument, adjust callers of - expand_omp_for* functions, use expand_omp_for_static*chunk even - for collapse > 1 unless ordered. - (expand_omp_sections): Use GOMP_sections_end_cancel at the end - of cancellable sections. - (expand_omp_single): Remove need_barrier variable, just rely on - gimple_omp_return_nowait_p. Adjust build_omp_barrier caller. - (expand_omp_synch): Allow GIMPLE_OMP_TASKGROUP and GIMPLE_OMP_TEAMS. - (expand_omp_atomic_load, expand_omp_atomic_store, - expand_omp_atomic_fetch_op): Handle gimple_omp_atomic_seq_cst_p. - (expand_omp_target): New function. - (expand_omp): Handle combined loops. Handle GIMPLE_OMP_TASKGROUP, - GIMPLE_OMP_TEAMS, GIMPLE_OMP_TARGET. - (build_omp_regions_1): Immediately close region for - GF_OMP_TARGET_KIND_UPDATE. - (maybe_add_implicit_barrier_cancel): New function. - (lower_omp_sections): Adjust lower_rec_input_clauses caller. Handle - cancellation. - (lower_omp_single): Likewise. Add clobber after the barrier. - (lower_omp_taskgroup): New function. - (lower_omp_for): Handle combined loops. Adjust - lower_rec_input_clauses caller. Handle cancellation. - (lower_depend_clauses): New function. - (lower_omp_taskreg): Lower depend clauses. Adjust - lower_rec_input_clauses caller. Add clobber after the call. Handle - cancellation. - (lower_omp_target, lower_omp_teams): New functions. - (lower_omp_1): Handle cancellation. Handle GIMPLE_OMP_TASKGROUP, - GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GOMP_barrier, GOMP_cancel - and GOMP_cancellation_point calls. - (lower_omp): Fold stmts inside of target region. - (diagnose_sb_1, diagnose_sb_2): Handle GIMPLE_OMP_TASKGROUP, - GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS. - * builtin-types.def (DEF_FUNCTION_TYPE_8): Document. - (BT_FN_VOID_OMPFN_PTR_UINT, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG, - BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove. - (BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT, - BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL, BT_FN_VOID_UINT_UINT, - BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR, - BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR, - BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New. - * tree-ssa-alias.c (ref_maybe_used_by_call_p_1, - call_may_clobber_ref_p_1): Handle BUILT_IN_GOMP_BARRIER_CANCEL, - BUILT_IN_GOMP_TASKGROUP_END, BUILT_IN_GOMP_LOOP_END_CANCEL, - BUILT_IN_GOMP_SECTIONS_END_CANCEL. Don't handle - BUILT_IN_GOMP_PARALLEL_END. - * gimple-low.c (lower_stmt): Handle GIMPLE_OMP_TASKGROUP, - GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS. - * gimple-pretty-print.c (dump_gimple_omp_for): Handle - GF_OMP_FOR_KIND_DISTRIBUTE. - (dump_gimple_omp_target, dump_gimple_omp_teams): New functions. - (dump_gimple_omp_block): Handle GIMPLE_OMP_TASKGROUP. - (dump_gimple_omp_return): Print lhs if it has any. - (dump_gimple_omp_atomic_load, dump_gimple_omp_atomic_store): Handle - gimple_omp_atomic_seq_cst_p. - (pp_gimple_stmt_1): Handle GIMPLE_OMP_TASKGROUP, GIMPLE_OMP_TARGET - and GIMPLE_OMP_TEAMS. - * langhooks.c (lhd_omp_mappable_type): New function. - * tree-vectorizer.c (struct simd_array_to_simduid): Fix up comment. - * langhooks.h (struct lang_hooks_for_types): Add omp_mappable_type - hook. - * gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP, - GOVD_ALIGNED and GOVD_MAP_TO_ONLY. - (enum omp_region_type): Add ORT_TEAMS, ORT_TARGET_DATA and ORT_TARGET. - (struct gimplify_omp_ctx): Add combined_loop field. - (gimplify_call_expr, gimplify_modify_expr): Don't call fold_stmt - on stmts inside of target region. - (is_gimple_stmt): Return true for OMP_DISTRIBUTE and OMP_TASKGROUP. - (omp_firstprivatize_variable): Handle GOVD_MAP, GOVD_ALIGNED, - ORT_TARGET and ORT_TARGET_DATA. - (omp_add_variable): Avoid checks on readding var for GOVD_ALIGNED. - Handle GOVD_MAP. - (omp_notice_threadprivate_variable): Complain about threadprivate - variables in target region. - (omp_notice_variable): Complain about vars with non-mappable type - in target region. Handle ORT_TEAMS, ORT_TARGET and ORT_TARGET_DATA. - (omp_check_private): Ignore ORT_TARGET* regions. - (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses_1, - gimplify_adjust_omp_clauses): Handle new OpenMP 4.0 clauses. - (find_combined_omp_for): New function. - (gimplify_omp_for): Handle gimplification of combined loops. - (gimplify_omp_workshare): Gimplify also OMP_TARGET, OMP_TARGET_DATA, - OMP_TEAMS. - (gimplify_omp_target_update): New function. - (gimplify_omp_atomic): Handle OMP_ATOMIC_SEQ_CST. - (gimplify_expr): Handle OMP_DISTRIBUTE, OMP_TARGET, OMP_TARGET_DATA, - OMP_TARGET_UPDATE, OMP_TEAMS, OMP_TASKGROUP. - (gimplify_body): If fndecl has "omp declare target" attribute, add - implicit ORT_TARGET context around it. - * tree.def (OMP_DISTRIBUTE, OMP_TEAMS, OMP_TARGET_DATA, OMP_TARGET, - OMP_TASKGROUP, OMP_TARGET_UPDATE): New tree codes. - * tree-nested.c (convert_nonlocal_reference_stmt, - convert_local_reference_stmt, convert_gimple_call): Handle - GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP. - * omp-builtins.def (BUILT_IN_GOMP_TASK): Use - BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR - instead of BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT. - (BUILT_IN_GOMP_TARGET, BUILT_IN_GOMP_TARGET_DATA, - BUILT_IN_GOMP_TARGET_END_DATA, BUILT_IN_GOMP_TARGET_UPDATE, - BUILT_IN_GOMP_TEAMS, BUILT_IN_BARRIER_CANCEL, - BUILT_IN_GOMP_LOOP_END_CANCEL, - BUILT_IN_GOMP_SECTIONS_END_CANCEL, BUILT_IN_OMP_GET_TEAM_NUM, - BUILT_IN_OMP_GET_NUM_TEAMS, BUILT_IN_GOMP_TASKGROUP_START, - BUILT_IN_GOMP_TASKGROUP_END, BUILT_IN_GOMP_PARALLEL_LOOP_STATIC, - BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC, - BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED, - BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME, BUILT_IN_GOMP_PARALLEL, - BUILT_IN_GOMP_PARALLEL_SECTIONS, BUILT_IN_GOMP_CANCEL, - BUILT_IN_GOMP_CANCELLATION_POINT): New built-ins. - (BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START, - BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START, - BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START, - BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START, - BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END, - BUILT_IN_GOMP_PARALLEL_SECTIONS_START): Remove. - * tree-inline.c (remap_gimple_stmt, estimate_num_insns): - Handle GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP. - * gimple.c (gimple_build_omp_taskgroup, gimple_build_omp_target, - gimple_build_omp_teams): New functions. - (walk_gimple_op): Handle GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and - GIMPLE_OMP_TASKGROUP. Walk optional lhs on GIMPLE_OMP_RETURN. - (walk_gimple_stmt, gimple_copy): Handle GIMPLE_OMP_TARGET, - GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP. - * gimple.h (enum gf_mask): GF_OMP_FOR_KIND_DISTRIBUTE, - GF_OMP_FOR_COMBINED, GF_OMP_FOR_COMBINED_INTO, - GF_OMP_TARGET_KIND_MASK, GF_OMP_TARGET_KIND_REGION, - GF_OMP_TARGET_KIND_DATA, GF_OMP_TARGET_KIND_UPDATE, - GF_OMP_ATOMIC_SEQ_CST): New. - (gimple_build_omp_taskgroup, gimple_build_omp_target, - gimple_build_omp_teams): New prototypes. - (gimple_has_substatements): Handle GIMPLE_OMP_TARGET, - GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP. - (gimple_omp_subcode): Use GIMPLE_OMP_TEAMS instead of - GIMPLE_OMP_SINGLE as end of range. - (gimple_omp_return_set_lhs, gimple_omp_return_lhs, - gimple_omp_return_lhs_ptr, gimple_omp_atomic_seq_cst_p, - gimple_omp_atomic_set_seq_cst, gimple_omp_for_combined_p, - gimple_omp_for_set_combined_p, gimple_omp_for_combined_into_p, - gimple_omp_for_set_combined_into_p, gimple_omp_target_clauses, - gimple_omp_target_clauses_ptr, gimple_omp_target_set_clauses, - gimple_omp_target_kind, gimple_omp_target_set_kind, - gimple_omp_target_child_fn, gimple_omp_target_child_fn_ptr, - gimple_omp_target_set_child_fn, gimple_omp_target_data_arg, - gimple_omp_target_data_arg_ptr, gimple_omp_target_set_data_arg, - gimple_omp_teams_clauses, gimple_omp_teams_clauses_ptr, - gimple_omp_teams_set_clauses): New inlines. - (CASE_GIMPLE_OMP): Add GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS - and GIMPLE_OMP_TASKGROUP. - * tree-core.h (enum omp_clause_code): Add new OpenMP 4.0 clause codes. - (enum omp_clause_depend_kind, enum omp_clause_map_kind, - enum omp_clause_proc_bind_kind): New. - (union omp_clause_subcode): Add depend_kind, map_kind and - proc_bind_kind fields. - * tree-cfg.c (make_edges): Handle GIMPLE_OMP_TARGET, - GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP. - * langhooks-def.h (lhd_omp_mappable_type): New prototype. - (LANG_HOOKS_OMP_MAPPABLE_TYPE): Define. - (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it. - -2013-10-10 Teresa Johnson - - * predict.c (tree_estimate_probability): Add new parameter - for estimate_bb_frequencies. - (estimate_bb_frequencies): Add new parameter to force estimation. - (rebuild_frequencies): When max frequency in function is small, - recompute counts from frequencies. - * predict.h (estimate_bb_frequencies): New parameter. - -2013-10-10 David Malcolm - - * ipa-inline.c (ipa_inline): Fix leak of "order" when - optimizations are disabled. - -2013-10-10 David Malcolm - - * coverage.c (coverage_finish): Fix leak of da_file_name. - -2013-10-10 Jan Hubicka - - * config/i386/x86-tune.def: Enable X86_TUNE_SSE_TYPELESS_STORES - for generic, enable X86_TUNE_SSE_LOAD0_BY_PXOR for Bulldozer, - Bobcat and generic. - -2013-10-10 Jakub Jelinek - - PR middle-end/58670 - * stmt.c (expand_asm_operands): Add FALLTHRU_BB argument, - if any labels are in FALLTHRU_BB, use a special label emitted - immediately after the asm goto insn rather than label_rtx - of the LABEL_DECL. - (expand_asm_stmt): Adjust caller. - * cfgrtl.c (commit_one_edge_insertion): Force splitting of - edge if the last insn in predecessor is a jump with single successor, - but it isn't simplejump_p. - -2013-10-10 Richard Biener - - PR tree-optimization/58656 - * tree-ssa-pre.c (phi_translate): Do not cache failed translations. - -2013-10-10 Andrew MacLeod - - * gimplify.c: Include expr.h and tm_p.h for targets with special - va-arg padding requirements. - -2013-10-10 Andrew MacLeod - - * tree-flow.h: Move some prototypes to gimple.h. - (gimple_fold_indirect_ref): Move prototype to gimple-fold.h. - * gimple.h: Relocate some prototypes from tree-flow.h - * builtins.c (std_gimplify_va_arg_expr, build_va_arg_indirect_ref): - Move to gimplify.c. - * gimplify.c (gimple_fold_indirect_ref): Move to gimple-fold.c. - (build_va_arg_indirect_ref): Relocate and make static. - (std_gimplify_va_arg_expr): Relocate here. - * gimple-fold.c (gimple_fold_indirect_ref): Relocate here. - * gimple-fold.h (gimple_fold_indirect_ref): Add prototype. - -2013-10-10 Andreas Krebbel - - * doc/md.texi: Document the mnemonic attribute. - -2013-10-10 Andreas Krebbel - - PR target/57377 - * gensupport.c (gen_mnemonic_attr): Handle (set (attr x) y) and - (set_attr_alternative x ...) when searching for user defined - mnemonic attribute. - -2013-10-10 Andrew MacLeod - - * config/alpha/alpha.c: Add gimple-ssa.h to include list. - -2013-10-09 Easwaran Raman - - * params.def (PARAM_MIN_SIZE_FOR_STACK_SHARING): New param... - * cfgexpand.c (defer_stack_allocation): ...use here - * doc/invoke.texi: Add documentation for min-size-for-stack-sharing. - -2013-10-09 Zhenqiang Chen - - * tree-ssa-phiopts.c (rhs_is_fed_for_value_replacement): New function. - (operand_equal_for_value_replacement): New function, extracted from - value_replacement and enhanced to catch more cases. - (value_replacement): Use operand_equal_for_value_replacement. - -2013-10-09 Andrew MacLeod - - * loop-doloop.c (doloop_modify, doloop_optimize): Use - get_max_loop_iterations. - -2013-10-09 Kyrylo Tkachov - - * config/arm/aarch-common.c (arm_early_load_addr_dep): - Place comment above function. - -2013-10-09 Andrew MacLeod - - * tree-flow.h: Remove all remaining prototypes, enums and structs that - are not related to tree-cfg.c. - * tree-ssa-address.h: New file. Relocate prototypes. - * tree-ssa-address.c: (struct mem_address): Relocate from tree-flow.h. - (addr_for_mem_ref): New. Combine call to get_address_description and - return addr_for_mem_ref. - * expr.c (expand_expr_real_1): Use new addr_for_mem_ref routine. - * tree-ssa-live.h: Adjust prototypes. - * passes.c: Include tree-ssa-live.h. - * gimple-pretty-print.h (gimple_dump_bb): Add prototype. - * graphite.c (graphite_transform_loops): Make static. - (graphite_transforms, gate_graphite_transforms, pass_data_graphite, - make_pass_graphite, pass_data_graphite_transforms, - make_pass_graphite_transforms): Relocate here from tree-ssa-loop.c. - * ipa-pure-const.c (warn_function_noreturn): Make static. - (execute_warn_function_noreturn, gate_warn_function_noreturn, - class pass_warn_function_noreturn, make_pass_warn_function_noreturn): - Relocate from tree-cfg.c - * tree-cfg.c (tree_node_can_be_shared, gimple_empty_block_p): Make - static. - (execute_warn_function_noreturn, gate_warn_function_noreturn, - class pass_warn_function_noreturn, make_pass_warn_function_noreturn): - Move to ipa-pure-const.c. - (execute_fixup_cfg, class pass_fixup_cfg, make_pass_fixup_cfg): - Relocate from tree-optimize.c. - * tree-optimize.c (execute_fixup_cfg, class pass_fixup_cfg, - make_pass_fixup_cfg): Move to tree-cfg.c. - * tree-chrec.h: (enum ev_direction): Relocate here from tree-flow.h. - Relocate some prototypes. - * tree-data-ref.h (tree_check_data_deps) Add prototype. - * tree-dump.c (dump_function_to_file): Remove prototype. - Add tree-flow.h to the include file. - * tree-dump.h: Remove prototype. - * tree-parloops.h: New File. Add prototypes. - * tree-parloops.c (gate_tree_parallelize_loops, tree_parallelize_loops, - pass_data_parallelize_loops, make_pass_parallelize_loops): Relocate - from tree-ssa-loop.c. - * tree-predcom.c (run_tree_predictive_commoning, - gate_tree_predictive_commoning, pass_data_predcom, make_pass_predcom): - Relocate here from tree-ssa-loop.c. - * tree-ssa-dom.c (tree_ssa_dominator_optimize) Don't call - ssa_name_values.release (). - * tree-ssa-threadedge.h: New File. Relocate prototypes here. - (ssa_name_values): Relocate from tree-flow.h. - * tree-ssa.h: Include tree-ssa-threadedge.h and tree-ssa-address.h. - * tree-ssa-loop.c (run_tree_predictive_commoning, - gate_tree_predictive_commoning, pass_data_predcom, make_pass_predcom, - graphite_transforms, gate_graphite_transforms, pass_data_graphite, - make_pass_graphite, pass_data_graphite_transforms, - make_pass_graphite_transforms, gate_tree_parallelize_loops, - tree_parallelize_loops, pass_data_parallelize_loops, - make_pass_parallelize_loops): Move to other files. - * tree-vectorizer.h (lpeel_tree_duplicate_loop_to_edge_cfg): Prototype - moved here. - * tree.h: Remove prototypes from tree-address.c. - -2013-10-09 Andrew MacLeod - - * tree-flow.h (tm_restart_node, gimple_df): Move to gimple-ssa.h. - (struct int_tree_map): Move to tree-hasher.h - (SCALE, LABEL, PERCENT): Move to gimple.h - * tree-flow-inline.h: Delete. Move functions to other files. - (unmodifiable_var_p, ref_contains_array_ref): Unused, so delete. - * gimple-ssa.h (tm_restart_node, gimple_df): Relocate from tree-flow.h. - (gimple_in_ssa_p, gimple_vop): Relocate from tree-flow-inline.h - * gimple.h (imple_stmt_max_uid, set_gimple_stmt_max_uid, - inc_gimple_stmt_max_uid, get_lineno): Relocate from tree-flow-inline.h. - (SCALE, LABEL, PERCENT): Relocate from tree-flow.h - * tree-hasher.h: Don't include tree-flow.h. - (struct int_tree_map): Relocate from tree-flow.h. - * tree-sra.c (contains_view_convert_expr_p): Relocate from - tree-flow-inline.h and make static. - * tree-ssa-alias.h (ranges_overlap_p): Relocate from - tree-flow-inline.h. - * tree-ssa-operands.c (gimple_ssa_operands): Relocate from - tree-flow-inline.h and make static. - * tree.h (is_global_var, may_be_aliased): Relocate from - tree-flow-inline.h. - * Makefile.in (GTFILES): Remove tree-flow.h and add gimple-ssa.h. - * value-prof.c: No longer include tree-flow-inline.h. - * tree-switch-conversion.c: No longer include tree-flow-inline.h. - -2013-10-09 Andrew MacLeod - - * tree-flow.h: Move some protoypes. Include new tree-ssa-loop.h. - (struct affine_iv, struct tree_niter_desc): Move to tree-ssa-loop.h. - (enum move_pos): Move to tree-ssa-loop-im.h - * cfgloop.h: Move some prototypes. - (gcov_type_to_double_int): relocate from tree-ssa-loop.niter.c. - * tree-flow-inline.h (loop_containing_stmt): Move to tree-ssa-loop.h. - * tree-ssa-loop.h: New File. Include other tree-ssa-loop-*.h files. - (struct affine_iv, struct tree_niter_desc): Relocate from tree-flow.h. - (loop_containing_stmt): Relocate from tree-flow-inline.h. - * tree-ssa-loop-ch.c: (do_while_loop_p): Make static. - * tree-ssa-loop-im.c (for_each_index): Move to tree-ssa-loop.c. - (enum move_pos): Relocate here. - (lsm_tmp_name_add, gen_lsm_tmp_name, get_lsm_tmp_name): Move to - tree-ssa-loop.c. - (execute_sm_if_changed_flag_set): Change get_lsm_tmp_name call. - (tree_ssa_loop_im, gate_tree_ssa_loop_im, pass_data_lim, - make_pass_lim): Relocate here from tree-ssa-loop.c. - * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Move to - tree-ssa-loop.c. - (loop_edge_to_cancel, unloop_loops): Make static. - (tree_ssa_loop_ivcanon, gate_tree_ssa_loop_ivcanon, pass_data_iv_canon, - make_pass_iv_canon): Relocate from tree-ssa-loop.c. - (tree_complete_unroll, gate_tree_complete_unroll, - pass_data_complete_unroll, make_pass_complete_unroll): Relocate here. - (tree_complete_unroll_inner, gate_tree_complete_unroll_inner, - pass_data_complete_unrolli, make_pass_complete_unrolli): Relocate here. - * tree-ssa-loop-ivopts.c: Remove local prototypes. - (stmt_invariant_in_loop_p): Remove unused function. - * tree-ssa-loop-ivopts.h: New file. Add prototypes. - * tree-ssa-loop-manip.h: New file. Add prototypes. - * tree-ssa-loop-niter.c (record_niter_bound): Move to cfgloop.c. - (gcov_type_to_double_int): Move to cfgloop.h. - (double_int_cmp, bound_index, - estimate_numbers_of_iterations_loop): Make static. - (estimated_loop_iterations): Factor out get_estimated_loop_iterations. - (max_loop_iterations): Factor out get_max_loop_iterations. - (estimated_loop_iterations_int, max_stmt_executions_int): Move to - cfgloop.c. - * tree-ssa-loop-niter.h: New file. Add prototypes. - * tree-ssa-loop-prefetch.c (tree_ssa_loop_prefetch, - gate_tree_ssa_loop_prefetch, pass_data_loop_prefetch, - make_pass_loop_prefetch): Relocate from tree-ssa-loop.c. - * tree-ssa-loop-unswitch.c (tree_ssa_loop_unswitch, - gate_tree_ssa_loop_unswitch, pass_data_tree_unswitch, - make_pass_tree_unswitch): Relocate from tree-ssa-loop.c. - * tree-ssa-loop.c (tree_ssa_loop_im, gate_tree_ssa_loop_im, - pass_data_lim, make_pass_lim): Move to tree-ssa-loop-im.c. - (tree_ssa_loop_unswitch, gate_tree_ssa_loop_unswitch, - pass_data_tree_unswitch, make_pass_tree_unswitch): Move. - (tree_ssa_loop_ivcanon, gate_tree_ssa_loop_ivcanon, pass_data_iv_canon, - make_pass_iv_canon, tree_complete_unroll, gate_tree_complete_unroll, - pass_data_complete_unroll, make_pass_complete_unroll, - tree_complete_unroll_inner, gate_tree_complete_unroll_inner, - pass_data_complete_unrolli, make_pass_complete_unrolli): Move to - tree-ssa-loop-ivcanon.c. - (tree_ssa_loop_prefetch, gate_tree_ssa_loop_prefetch, - pass_data_loop_prefetch, make_pass_loop_prefetch): Move to - tree-ssa-loop-prefetch.c. - (for_each_index, lsm_tmp_name_add, gen_lsm_tmp_name): Relocate from - tree-ssa-loop-im.c. - (get_lsm_tmp_name): Relocate and add suffix parameter. - (tree_num_loop_insns): Relocate from tree-ssa-ivcanon.c. - * tree-scalar-evolution.h (simple_iv): Don't use affive_iv typedef. - * cfgloop.c (record_niter_bound, estimated_loop_iterations_int, - max_stmt_executions_int): Move from tree-ssa-loop-niter.c. - (get_estimated_loop_iterations): Factor out accessor from - estimated_loop_iterations in tree-ssa-loop-niter.c. - (get_max_loop_iterations): Factor out accessor from - _max_loop_iterations in tree-ssa-niter.c. - * loop-unroll.c (decide_unroll_constant_iterations, - decide_unroll_runtime_iterations, decide_peel_simple, - decide_unroll_stupid): Use new get_* accessors. - -2013-10-09 Marc Glisse - - PR tree-optimization/20318 - * doc/extend.texi (returns_nonnull): New function attribute. - * fold-const.c (tree_expr_nonzero_warnv_p): Look for returns_nonnull - attribute. - * tree-vrp.c (gimple_stmt_nonzero_warnv_p): Likewise. - (stmt_interesting_for_vrp): Accept all GIMPLE_CALL. - -2013-10-09 Eric Botcazou - - PR middle-end/58570 - * tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): Return - false if both components are bitfields. - -2013-10-09 Alex Velenko - - * config/aarch64/arm_neon.h (vclz_s8, vclz_s16, vclz_s32) - (vclzq_s8, vclzq_s16, vclzq_s32, vclz_u8, vclz_u16, vclz_u32) - (vclzq_u8, vclzq_u16, vclzq_u32): Replace ASM with C. - * config/aarch64/aarch64.h - (CLZ_DEFINED_VALUE_AT_ZERO): Macro fixed for clz. - * config/aarch64/aarch64-simd-builtins.def - (VAR1 (UNOP, clz, 0, v4si)): Replaced with iterator. - -2013-10-09 Alex Velenko - - * config/aarch64/arm_neon.h (vadd_f64, vsub_f64): Implementation added. - -2013-10-09 Alex Velenko - - * config/aarch64/arm_neon.h (vdiv_f64): Added. - -2013-10-09 Alex Velenko - - * config/aarch64/arm_neon.h (vneg_f32): Asm replaced with C. - (vneg_f64): New intrinsic. - (vneg_s8): Asm replaced with C. - (vneg_s16): Likewise. - (vneg_s32): Likewise. - (vneg_s64): New intrinsic. - (vnegq_f32): Asm replaced with C. - (vnegq_f64): Likewise. - (vnegq_s8): Likewise. - (vnegq_s16): Likewise. - (vnegq_s32): Likewise. - (vnegq_s64): Likewise. - -2013-10-09 Renlin Li - - * config/arm/arm.c (arm_output_mi_thunk): Use plus_constant. - -2013-10-09 Andreas Krebbel - - * config/s390/s390.c (s390_register_info_stdarg_fpr): Remove - packed stack special handling. - (s390_frame_info, s390_emit_prologue, s390_emit_epilogue): Switch - back to fixed stack slots for FPRs saved due to stdarg. - -2013-10-09 Andreas Krebbel - - * config/s390/s390.c (s390_frame_info): Restructure function. - -2013-10-09 Andreas Krebbel - - * config/s390/s390.c (struct s390_frame_layout): New field - gpr_save_slots. - (cfun_save_arg_fprs_p, cfun_gpr_save_slot): New macros. - (s390_reg_clobbered_rtx, s390_regs_ever_clobbered): Change type of - regs_ever_clobbered to char*. - (s390_regs_ever_clobbered): Check crtl->saves_all_registers instead - of cfun->has_nonlocal_label. Ignore frame related restore INSNs. - (s390_register_info): Enable FPR save slots. Move/Copy some - functionality into ... - (s390_register_info_gprtofpr, s390_register_info_stdarg_fpr) - (s390_register_info_stdarg_gpr, s390_optimize_register_info): New - function. - (s390_frame_info): Do gpr slot allocation here now. stdarg does - not imply a stack frame. - (s390_init_frame_layout): Remove variable clobbered_regs. - (s390_update_register_info): Remove function. - (s390_hard_regno_rename_ok): Call-saved regs without a save slot - cannot be used for register renaming. - (s390_hard_regno_scratch_ok): New function. - (TARGET_HARD_REGNO_SCRATCH_OK): Define target hook. - (s390_initial_elimination_offset): Change offset calculation of - the return address pointer. - (save_gprs): Deal with only r6 being saved from the call-saved regs. - (restore_gprs): Set frame related flag. - (s390_save_gprs_to_fprs, s390_restore_gprs_from_fprs): New functions. - (s390_emit_prologue): Call s390_register_info instead of - s390_update_frame_layout. Call s390_save_gprs_to_fprs. - (s390_emit_epilogue): Call s390_restore_gprs_from_fprs. - (s390_optimize_prologue): Call s390_optimize_register_info. - Try to remove also FPR slot save/restore INSNs. Remove frame - related flags from restore INSNs. - -2013-10-08 DJ Delorie - - * config/rl78/rl78-expand.md (movqi): use operands[] not operandN. - (movhi): Likewise. - - * config/rl78/rl78.c (rl78_print_operand_1): Change %c to %C to - avoid conflict with the MI use of %c. - * config/rl78/rl78-real.md: change %c to %C throughout. - * config/rl78/rl78-virt.md: Likewise. - -2013-10-08 Jan Hubicka - - * config/i386/i386.c (ix86_option_override_internal): Switch - to SSE math for -ffast-math when target ISA supports SSE2. - -2013-10-08 Andrew MacLeod - - * tree-flow.h: Remove some prototypes. - * tree.h: Remove some protypes, add a couple. - * tree.c (using_eh_for_cleanups_flag, using_eh_for_cleanups, - using_eh_for_cleanups_p): Add interface routines for front ends. - * tree-eh.h: New file. Add protoptyes. - * tree-eh.c (using_eh_for_cleanups_p, using_eh_for_cleanups): Delete. - (add_stmt_to_eh_lp_fn): Make static. - (lower_try_finally): Use new using_eh_for_cleanups_p. - * emit-rtl.c: Include tree-eh.h. - * gimple.h: Include tree-eh.h. - -2013-10-08 Marc Glisse - - PR tree-optimization/58480 - * tree-vrp.c (infer_nonnull_range): New function. - (infer_value_range): Call infer_nonnull_range. - -2013-10-08 Dehao Chen - - PR tree-optimization/58619 - * tree-inline.c (copy_phis_for_bb): Combine location data - only if non-null. - -2013-10-08 Zhenqiang Chen - - PR target/58423 - * config/arm/arm.c (arm_emit_ldrd_pop): Attach - RTX_FRAME_RELATED_P on INSN. - -2013-10-07 Bill Schmidt - - * config/rs6000/rs6000.c (altivec_expand_vec_perm_const_le): New. - (altivec_expand_vec_perm_const): Call it. - -2013-10-07 Bill Schmidt - - * config/rs6000/vector.md (mov): Emit permuted move - sequences for LE VSX loads and stores at expand time. - * config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_move): New - prototype. - * config/rs6000/rs6000.c (rs6000_const_vec): New. - (rs6000_gen_le_vsx_permute): New. - (rs6000_gen_le_vsx_load): New. - (rs6000_gen_le_vsx_store): New. - (rs6000_gen_le_vsx_move): New. - * config/rs6000/vsx.md (*vsx_le_perm_load_v2di): New. - (*vsx_le_perm_load_v4si): New. - (*vsx_le_perm_load_v8hi): New. - (*vsx_le_perm_load_v16qi): New. - (*vsx_le_perm_store_v2di): New. - (*vsx_le_perm_store_v4si): New. - (*vsx_le_perm_store_v8hi): New. - (*vsx_le_perm_store_v16qi): New. - (*vsx_xxpermdi2_le_): New. - (*vsx_xxpermdi4_le_): New. - (*vsx_xxpermdi8_le_V8HI): New. - (*vsx_xxpermdi16_le_V16QI): New. - (*vsx_lxvd2x2_le_): New. - (*vsx_lxvd2x4_le_): New. - (*vsx_lxvd2x8_le_V8HI): New. - (*vsx_lxvd2x16_le_V16QI): New. - (*vsx_stxvd2x2_le_): New. - (*vsx_stxvd2x4_le_): New. - (*vsx_stxvd2x8_le_V8HI): New. - (*vsx_stxvd2x16_le_V16QI): New. - -2013-10-07 Renlin Li - - * config/arm/arm-cores.def (cortex-a53): Use cortex tuning. - -2013-10-07 Andreas Krebbel - - * config/s390/s390.c (s390_register_info): Make the call-saved FPR - loop to work also for 31bit ABI. - Save the stack pointer for frame_size > 0. - -2013-10-07 Andreas Krebbel - - * config/s390/s390.md ("tbegin", "tbegin_nofloat", "tbegin_retry") - ("tbegin_retry_nofloat", "tend", "tabort", "tx_assist"): Remove - constraint letters from expanders. - ("tbegin_retry", "tbegin_retry_nofloat"): Change predicate of the - retry count to general_operand. - ("tabort"): Give operand 0 a mode. - ("tabort_1"): Add mode and constraint letter for operand 0. - * doc/extend.texi: Fix protoype of __builtin_non_tx_store. - -2013-10-04 Jeff Law - - * tree-ssa-threadedge.c: Fix some trailing whitespace problems. - - * tree-ssa-threadedge.c (thread_through_normal_block): Broken - out of ... - (thread_across_edge): Here. Call it. - -2013-10-04 Cary Coutant - - * dwarf2out.c (dw_sra_loc_expr): Release addr_table entries when - discarding a location list expression (or a piece of one). - -2013-10-03 Jan Hubicka - - * config/i386/i386.c (ix86_issue_rate): Pentium4, Nocona has issue - rate of 2. Core2, Corei7 and Haswell has issue rate of 4. - (ix86_adjust_cost): Remove Atom case; fix core2/corei7/Haswell case. - -2013-10-03 Jan Hubicka - - * config/i386/i386.c (ix86_option_override_internal): Do not enable - accumulate-outgoing-args when producing unwind info. - -2013-10-03 Wei Mi - - * lra-constraints.c (insert_move_for_subreg): New function - extracted from simplify_operand_subreg. - (simplify_operand_subreg): Add reload for paradoxical subreg. - -2013-10-03 Rong Xu - - * ipa-inline-analysis.c (find_foldable_builtin_expect): Find - the candidate of builtin_expect such that we should fix the - size/time estimation. - (estimate_function_body_sizes): Do the acutally size/time fix-up - for builtin_expect. - -2013-10-03 Rong Xu - - * predict.c (tree_predict_by_opcode): Get the probability - for builtin_expect from param builtin_expect_probability. - * params.def (BUILTIN_EXPECT_PROBABILITY): New parameter. - * predict.def (PRED_BUILTIN_EXPECT_RELAXED): Fix comments. - * doc/invoke.texi: Add documentation for builtin-expect-probability. - -2013-10-03 Marc Glisse - - PR c++/19476 - * common.opt (fcheck-new): Moved from c.opt. Make it 'Common'. - * calls.c (alloca_call_p): Use get_callee_fndecl. - * fold-const.c (tree_expr_nonzero_warnv_p): Handle operator new. - * tree-vrp.c (gimple_stmt_nonzero_warnv_p, stmt_interesting_for_vrp): - Likewise. - (vrp_visit_stmt): Remove duplicated code. - -2013-10-03 Michael Meissner - - * config/rs6000/rs6000-builtin.def (XSRDPIM): Use floatdf2, - ceildf2, btruncdf2, instead of vsx_* name. - - * config/rs6000/vsx.md (vsx_add3): Change arithmetic - iterators to only do V2DF and V4SF here. Move the DF code to - rs6000.md where it is combined with SF mode. Replace with - just 'v' since only vector operations are handled with these insns - after moving the DF support to rs6000.md. - (vsx_sub3): Likewise. - (vsx_mul3): Likewise. - (vsx_div3): Likewise. - (vsx_fre2): Likewise. - (vsx_neg2): Likewise. - (vsx_abs2): Likewise. - (vsx_nabs2): Likewise. - (vsx_smax3): Likewise. - (vsx_smin3): Likewise. - (vsx_sqrt2): Likewise. - (vsx_rsqrte2): Likewise. - (vsx_fms4): Likewise. - (vsx_nfma4): Likewise. - (vsx_copysign3): Likewise. - (vsx_btrunc2): Likewise. - (vsx_floor2): Likewise. - (vsx_ceil2): Likewise. - (vsx_smaxsf3): Delete scalar ops that were moved to rs6000.md. - (vsx_sminsf3): Likewise. - (vsx_fmadf4): Likewise. - (vsx_fmsdf4): Likewise. - (vsx_nfmadf4): Likewise. - (vsx_nfmsdf4): Likewise. - (vsx_cmpdf_internal1): Likewise. - - * config/rs6000/rs6000.h (TARGET_SF_SPE): Define macros to make it - simpler to select whether a target has SPE or traditional floating - point support in iterators. - (TARGET_DF_SPE): Likewise. - (TARGET_SF_FPR): Likewise. - (TARGET_DF_FPR): Likewise. - (TARGET_SF_INSN): Macros to say whether floating point support - exists for a given operation for expanders. - (TARGET_DF_INSN): Likewise. - - * config/rs6000/rs6000.c (Ftrad): New mode attributes to allow - combining of SF/DF mode operations, using both traditional and VSX - registers. - (Fvsx): Likewise. - (Ff): Likewise. - (Fv): Likewise. - (Fs): Likewise. - (Ffre): Likewise. - (FFRE): Likewise. - (abs2): Combine SF/DF modes using traditional floating point - instructions. Add support for using the upper DF registers with - VSX support, and SF registers with power8-vector support. Update - expanders for operations supported by both the SPE and traditional - floating point units. - (abs2_fpr): Likewise. - (nabs2): Likewise. - (nabs2_fpr): Likewise. - (neg2): Likewise. - (neg2_fpr): Likewise. - (add3): Likewise. - (add3_fpr): Likewise. - (sub3): Likewise. - (sub3_fpr): Likewise. - (mul3): Likewise. - (mul3_fpr): Likewise. - (div3): Likewise. - (div3_fpr): Likewise. - (sqrt3): Likewise. - (sqrt3_fpr): Likewise. - (fre): Likewise. - (rsqrt2): Likewise. - (cmp_fpr): Likewise. - (smax3): Likewise. - (smin3): Likewise. - (smax3_vsx): Likewise. - (smin3_vsx): Likewise. - (negsf2): Delete SF operations that are merged with DF. - (abssf2): Likewise. - (addsf3): Likewise. - (subsf3): Likewise. - (mulsf3): Likewise. - (divsf3): Likewise. - (fres): Likewise. - (fmasf4_fpr): Likewise. - (fmssf4_fpr): Likewise. - (nfmasf4_fpr): Likewise. - (nfmssf4_fpr): Likewise. - (sqrtsf2): Likewise. - (rsqrtsf_internal1): Likewise. - (smaxsf3): Likewise. - (sminsf3): Likewise. - (cmpsf_internal1): Likewise. - (copysign3_fcpsgn): Add VSX/power8-vector support. - (negdf2): Delete DF operations that are merged with SF. - (absdf2): Likewise. - (nabsdf2): Likewise. - (adddf3): Likewise. - (subdf3): Likewise. - (muldf3): Likewise. - (divdf3): Likewise. - (fred): Likewise. - (rsqrtdf_internal1): Likewise. - (fmadf4_fpr): Likewise. - (fmsdf4_fpr): Likewise. - (nfmadf4_fpr): Likewise. - (nfmsdf4_fpr): Likewise. - (sqrtdf2): Likewise. - (smaxdf3): Likewise. - (smindf3): Likewise. - (cmpdf_internal1): Likewise. - (lrintdi2): Use TARGET__FPR macro. - (btrunc2): Delete separate expander, and combine with the - insn and add VSX instruction support. Use TARGET__FPR. - (btrunc2_fpr): Likewise. - (ceil2): Likewise. - (ceil2_fpr): Likewise. - (floor2): Likewise. - (floor2_fpr): Likewise. - (fma4_fpr): Combine SF and DF fused multiply/add support. - Add support for using the upper registers with VSX and - power8-vector. Move insns to be closer to the define_expands. On - VSX systems, prefer the traditional form of FMA over the VSX - version, since the traditional form allows the target not to - overlap with the inputs. - (fms4_fpr): Likewise. - (nfma4_fpr): Likewise. - (nfms4_fpr): Likewise. - -2013-10-03 Kyrylo Tkachov - Richard Earnshaw - - * config/arm/aarch-common-protos.h (struct alu_cost_table): New. - (struct mult_cost_table): Likewise. - (struct mem_cost_table): Likewise. - (struct fp_cost_table): Likewise. - (struct vector_cost_table): Likewise. - (cpu_cost_table): Likewise. - * config/arm/arm.opt (mold-rts-costs): New option. - (mnew-generic-costs): Likewise. - * config/arm/arm.c (generic_extra_costs): New table. - (cortexa15_extra_costs): Likewise. - (arm_slowmul_tune): Use NULL as new costs. - (arm_fastmul_tune): Likewise. - (arm_strongarm_tune): Likewise. - (arm_xscale_tune): Likewise. - (arm_9e_tune): Likewise. - (arm_v6t2_tune): Likewise. - (arm_cortex_a5_tune): Likewise. - (arm_cortex_a9_tune): Likewise. - (arm_v6m_tune): Likewise. - (arm_fa726te_tune): Likewise. - (arm_cortex_a15_tune): Use cortex15_extra_costs. - (arm_cortex_tune): Use generict_extra_costs. - (shifter_op_p): New function. - (arm_unspec_cost): Likewise. - (LIBCALL_COST): Define. - (arm_new_rtx_costs): New function. - (arm_rtx_costs): Use arm_new_rtx_costs when core-specific - table is available. Use old costs otherwise unless mnew-generic-costs - is specified. - * config/arm/arm-protos.h (tune_params): Add insn_extra_cost field. - (cpu_cost_table): Declare. - -2013-10-03 Marcus Shawcroft - - PR target/58460 - * config/aarch64/aarch64.md (*adds_mul_imm_) - (*subs_mul_imm_) - (*add__, *add__si_uxtw,*add_mul_imm_) - (*sub__) - (*sub__si_uxtw,*sub_mul_imm_, *sub_mul_imm_si_uxtw): - Remove k constraint. - -2013-10-03 Ian Bolton - - * config/aarch64/aarch64.c (aarch64_secondary_reload): Remove legacy - code. - * config/aarch64/aarch64.md (reload_sp_immediate): Likewise. - -2013-10-02 Teresa Johnson - - * predict.c (probably_never_executed): New function. - (probably_never_executed_bb_p): Invoke probably_never_executed. - (probably_never_executed_edge_p): Ditto. - * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges): - Treat profile insanities conservatively. - -2013-10-02 John David Anglin - - * config.gcc (hppa*64*-*-linux*): Don't add pa/t-linux to tmake_file. - -2013-10-02 Vladimir Makarov - - * lra-constraints.c (process_alt_operand): Calculate scratch_p and - use it. Use smaller increase for scratch. Don't increase reject - for early clobber scratch. - * lra-eliminations.c (eliminate_regs_in_insn): Remove all insns - setting eliminated regs except setting fp from hfp. - (lra_eliminate): Check lra_insn_recog_data on NULL. - -2013-10-02 Michael Meissner - - PR target/58587 - * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Turn off - setting -mvsx-timode by default until the underlying problem is fixed. - (RS6000_CPU, power7 defaults): Likewise. - -2013-10-02 Uros Bizjak - - * config/x-linux (host-linux.o): Remove header dependencies. - Use $(COMPILE) and $(POSTCOMPILE). - * config/t-linux-android (linux-android.o): Ditto. - -2013-10-02 Uros Bizjak - - * Makefile.in (expmed.o-warn): Remove. - -2013-10-02 Andrew MacLeod - - * graphite-scop-detection.c: Include tree-ssa-propagate,h. - * graphite-sese-to-poly.c: Include tree-ssa-propagate.h. - -2013-10-02 Teresa Johnson - - * dojump.c (do_jump_1): Divide probability between - both conditions of a TRUTH_ANDIF_EXPR/TRUTH_ORIF_EXPR. - -2013-10-02 Tom Tromey - - * Makefile.in (DRIVER_DEFINES): Use $(if), not $(and). - -2013-10-02 Andrew MacLeod - - * tree-flow.h: Remove some prototypes. - * tree-ssa-dce.c (mark_virtual_operand_for_renaming, - mark_virtual_phi_result_for_renaming): Move to tree-into-ssa.c. - * tree-into-ssa.c (mark_virtual_operand_for_renaming, - mark_virtual_phi_result_for_renaming): Relocate here. - * tree-into-ssa.h: Add prototypes. - * tree-ssa-phiopt.c: (tree_ssa_phiopt_worker) Use - single_pred_before_succ_order. - (blocks_in_phiopt_order): Rename and move to cfganal.c. - (nonfreeing_call_p) Move to gimple.c. - * cfganal.c (single_pred_before_succ_order): Move and renamed from - tree-ssa-phiopt.c. - * basic-block.h (single_pred_before_succ_order): Add prototype. - * gimple.c (nonfreeing_call_p): Relocate here. - * gimple.h: Add prototype. - * tree-ssa-ifcombine.c: Include tree-ssa-phiopt.h. - * tree-ssa-dom.h: New file. Relocate prototypes here. - * tree-ssa.h: Include tree-ssa-dom.h. - -2013-10-02 Uros Bizjak - - * config/i386/x-i386 (driver-i386.o): Remove header dependencies. - Use $(COMPILE) and $(POSTCOMPILE). - - * config/alpha/x-alpha (driver-alpha.o): Ditto. - -2013-10-02 Andrew MacLeod - - * tree-flow.h: Remove some prototypes. - * gimple-fold.h: Add prototypes from gimple.h and tree-flow.h. - * tree-ssa-propagate.h: Relocate prototypes from tree-flow.h. - * tree-ssa-copy.c (may_propagate*, propagate_value, replace_exp, - propagate_tree_value*): Move from here to... - * tree-ssa-propagate.c (may_propagate*, propagate_value, replace_exp, - propagate_tree_value*): Relocate here. - * tree-ssa-propagate.h: Relocate prototypes from tree-flow.h. - * gimple.h: Include gimple-fold.h, move prototypes into gimple-fold.h. - * gimple-fold.c: Remove gimple-fold.h from include list. - * tree-vrp.c: Remove gimple-fold.h from include list. - * tree-ssa-sccvn.c: Remove gimple-fold.h from include list. - * tree-ssa-ccp.c: Remove gimple-fold.h from include list. - * tree-scalar-evolution.c: Add tree-ssa-propagate.h to include list. - * tree-ssa-pre.c: Add tree-ssa-propagate.h to include list. - * sese.c: Add tree-ssa-propagate.h to include list. - -2013-10-02 Richard Biener - - * tree-loop-distribution.c: Include tree-vectorizer.h for - find_loop_location. - (enum partition_kind): Remove PKIND_REDUCTION. - (struct partition_s): Remove has_writes member, add reduction_p member. - (partition_alloc): Adjust. - (partition_builtin_p): Likewise. - (partition_has_writes): Remove. - (partition_reduction_p): New function. - (partition_merge_into): Likewise. - (generate_code_for_partition): Commonize builtin partition - handling tail. - (rdg_cannot_recompute_vertex_p): Remove. - (already_processed_vertex_p): Likewise. - (rdg_flag_vertex): Do not set has_writes. - (classify_partition): Adjust. - (rdg_build_partitions): Do not set has_writes, treat all - partitions as useful. - (distribute_loop): Record number of library calls generated. Adjust. - (tree_loop_distribution): Report number of loops and library - calls generated as opt-info. - -2013-10-02 Andrew MacLeod - - * tree-flow.h: Include new .h files. Move prototypes. - * tree-cfgcleanup.h: New file. Add prototypes from tree-flow.h. - * tree-dfa.h: New File. Add prototypes from tree-flow.h. - (get_addr_base_and_unit_offset_1) Move from tree-flow-inline.h. - * tree-pretty-print.h: Add prototypes from tree-flow.h. - * tree-into-ssa.h: New File. Add prototypes from tree-flow.h. - ({debug|dump}*): Move debugging prototypes out of tree-into-ssa.c. - * tree-into-ssa.c ({debug|dump}*): Move prototypes to header file. - * tree.h (get_ref_base_and_extent): Move prototype out. - * tree-flow-inline.h (get_addr_base_and_unit_offset_1): Move to - tree-dfa.h. - * gimple-low.h: New File. Add prototypes from tree-flow.h. - * gimple-low.c (try_catch_may_fallthru, block_may_fallthru): Move to... - * tree.c (try_catch_may_fallthru, block_may_fallthru): Here. - * tree-scalar-evolution.c: Include tree.h. - * sese.c: Include tree.h. - * dumpfile.c: Move gimple-pretty-print.h include after tree.h. - * dwarf2out.c: Include tree-dfa.h. - * tree-chrec.c: Include tree.h. - * tree-data-ref.c: Include tree.h. - -2013-10-02 Yufeng Zhang - - * gimple-ssa-strength-reduction.c (backtrace_base_for_ref): - Fix whitespace. - -2013-10-02 Rainer Orth - - * config/t-sol2 (sol2-c.o): Remove header dependencies. - Use $(COMPILE) and $(POSTCOMPILE). - (sol2-cxx.o): Likewise. - (sol2-stubs.o): Likewise. - (sol2.o): Likewise. - * config/x-solaris (host-solaris.o): Likewise. - - * config/sparc/t-sparc (sparc.o): Remove. - (sparc-c.o): Remove header dependencies. - Use $(COMPILE) and $(POSTCOMPILE). - * config/sparc/x-sparc: Likewise. - -2013-10-02 Joern Rennecke - - * config/arc/arc-opts.h: Add 2013 to Copyright years. - * config/arc/arc700.md: Likewise. - * config/arc/arc-modes.def: Likewise. - * config/arc/arc-simd.h: Likewise. - * config/arc/t-arc-uClibc: Likewise. - * config/arc/t-arc-newlib: Likewise. - -2013-10-02 Renlin Li - - * config/aarch64/aarch64.c (aarch64_expand_prologue): Use - plus_constant. - (aarch64_expand_epilogue): Likewise. - -2013-10-02 Bill Schmidt - Yufeng Zhang - - * gimple-ssa-strength-reduction.c (legal_cast_p_1): Forward - declaration. - (backtrace_base_for_ref): Call get_unwidened with 'base_in' if - 'base_in' represent a conversion and legal_cast_p_1 holds; set - 'base_in' with the returned value from get_unwidened. - -2013-10-02 Kyrylo Tkachov - - * config/arm/arm.c (arm_legitimize_reload_address): Explain why - plus_constant is not used. - -2013-10-01 Wei Mi - - * config/i386/x86-tune.def (DEF_TUNE): Remove m_CORE_ALL. - * config/i386/i386.md: Add define_peephole2 to - break partial reg stall for cvtss2sd/cvtsd2ss. - -2013-10-01 Joern Rennecke - - * config/arc/arc.c (pass_arc_ifcvt::clone): - Update for ctxt_ -> m_ctxt change. - -2013-10-01 Jeff Law - - * tree-ssa-threadupdate.c (struct redirection_data): Delete - outgoing_edge and intermediate_edge fields. Instead store the path. - (redirection_data::hash): Hash on the last edge's destination index. - (redirection_data::equal): Check the entire thread path. - (lookup_redirectio_data): Corresponding changes. - (create_edge_and_update_destination_phis): Likewise. - (thread_single_edge): Likewise. - -2013-10-01 Joern Rennecke - Diego Novillo - - * config/arc/simdext.md (UNSPEC_ARC_SIMD_VLD32WH): Delete. - (UNSPEC_ARC_SIMD_VLD32WL): Likewise. - (vld32wh_insn, vld32wl_insn): Delete commented-out old - versions of these patterns. - - * doc/extend.texi (long_call/medium_call/short_call): Typo fix. - (__builtin_arc_aligned): Likewise. - - * config/arc/arc.md: Expand adc_0 comment stating the intended - purpose and why it isn't ready. - Replace commented out call_value_via_label_mixed with a - plain comment about bl_s. - - * config/arc/arc.c (stdio.h): Don't include directly. - (arc_expand_epilogue): Remove [0]: Remove fp_restored_p. - Remove if (1) condition. - (arc_encode_section_info): Fix comment. - -2013-10-01 Joern Rennecke - - * config/arc/arc.c (arc_conditional_register_usage): - Use ARC_FIRST_SIMD_VR_REG / ARC_LAST_SIMD_VR_REG. - Also set reg_alloc_order for DMA config regs. - -2013-10-01 Joern Rennecke - Jeremy Bennett - - * doc/install.texi (--with-cpu): Mention ARC. - (arc-*-elf32): New paragraph. - (arc-linux-uclibc): Likewise. - * doc/md.texi (Machine Constraints): Add ARC part. - * doc/invoke.texi: (menu): Add ARC Options. - (Machine Dependent Options) : Add synopsis. - (node ARC Options): Add. - * doc/extend.texi (long_call / short_call attribute): Add ARC. - (ARC Built-in Functions): New section defining - generic ARC built-in functions. - (ARC SIMD Built-in Functions): New section defining SIMD specific - built-in functions. - (Declaring Attributes of Functions): Extended - description of short_call and long_call attributes for ARC and - added index entries. - -2013-10-01 Saurabh Verma - Ramana Radhakrishnan - Joern Rennecke - Muhammad Khurram Riaz - Brendan Kehoe - Michael Eager - Simon Cook - Jeremy Bennett - - * config/arc, common/config/arc: New directories. - -2013-10-01 Joern Rennecke - Brendan Kehoe - Simon Cook - - * config.gcc (arc*-*-elf*, arc*-*-linux-uclibc*): New configurations. - -2013-10-01 Andrew MacLeod - - * tree-ssa-live.h (coalesce_ssa_name): Move Prototype to... - * tree-ssa-coalesce.h: New. Move prototype to here. - * tree-outof-ssa.h: Include tree-ssa-coalesce.h. - * tree-ssa-coalesce.c: Include tree-outof-ssa.h. - (gimple_can_coalesce_p): Move to... - * gimple.c (gimple_can_coalesce_p): Here. - -2013-10-01 Andrew MacLeod - - * tree-into-ssa.c (enum need_phi_state): Relocate from tree-flow.h. - (dump_decl_set): Move to gimple.c. - * gimple.h: Don't include tree-ssa-operands.h. - (dump_decl_set): Add prototype. - (gimple_vuse_op, gimple_vdef_op, update_stmt, update_stmt_if_modified): - Move to gimple-ssa.h. - (phi_ssa_name_p, phi_nodes, phi_nodes_ptr, gimple_phi_arg_def, - gimple_phi_arg_def_ptr, gimple_phi_arg_edge, gimple_phi_arg_location, - gimple_phi_arg_location_from_edge, gimple_phi_arg_set_location, - gimple_phi_arg_has_location): Relocate from tree-flow-inline.h - * gimple.c (walk_stmt_load_store_ops): Use gimple_phi_arg_def rather - than PHI_ARG_DEF. - (dump_decl_set): Relocate here. - * gimple-ssa.h: New file. - (gimple_vuse_op, gimple_vdef_op, update_stmt, update_stmt_if_modified): - Relocate from gimple.h. - * tree-cfg.c (has_zero_uses_1, single_imm_use_1): Move to... - * tree-ssa-operands.c (swap_ssa_operands): Rename from - swap_tree_operands and remove non-ssa path. - (has_zero_uses_1, single_imm_use_1): Relocate from tree-cfg.c. - * tree-ssa-reassoc.c (linearize_expr_tree, repropagate_negates): Use - swap_ssa_operands. - * tree-vect-loop.c (destroy_loop_vec_info, vect_is_slp_reduction, - vect_is_simple_reduction_1): Use swap_ssa_operands. - * tree-flow.h: Move various prototypes to tree-phinodes.h. - (enum need_phi_state): Move to tree-into-ssa.c. - (struct immediate_use_iterator_d, FOR_EACH_IMM_*, - BREAK_FROM_IMM_USE_STMT): Move to ssa-iterators.h. - (swap_tree_operands): Rename and move prototype to tree-ssa-operands.h. - * tree-flow-inline.h (delink_imm_use, link_imm_use_to_list, - link_imm_use, set_ssa_use_from_ptr, link_imm_use_stmt, relink_imm_use, - relink_imm_use_stmt, end_readonly_imm_use_p, first_readonly_imm_use, - next_readonly_imm_use, has_zero_uses, has_single_use, single_imm_use, - num_imm_uses): Move to ssa-iterators.h. - (get_use_from_ptr, get_def_from_ptr): Move to tree-ssa-operands.h - (gimple_phi_arg_imm_use_ptr, phi_arg_index_from_use): Move to - tree-phinodes.h. - (op_iter_done, op_iter_next_def, op_iter_next_tree, - clear_and_done_ssa_iter, op_iter_init, op_iter_init_use, - op_iter_init_def, op_iter_init_tree, single_ssa_tree_operand, - single_ssa_use_operand, single_ssa_def_operand, zero_ssa_operands, - num_ssa_operands, delink_stmt_imm_use, single_phi_def, - op_iter_init_phiuse, op_iter_init_phidef, end_imm_use_stmt_p, - end_imm_use_stmt_traverse, move_use_after_head, link_use_stmts_after, - first_imm_use_stmt, next_imm_use_stmt, first_imm_use_on_stmt, - end_imm_use_on_stmt_p, next_imm_use_on_stmt): Move to ssa-iterators.h. - (gimple_phi_arg_def, gimple_phi_arg_def_ptr, gimple_phi_arg_edge, - gimple_phi_arg_location, gimple_phi_arg_location_from_edge, - gimple_phi_arg_set_location, gimple_phi_arg_has_location, phi_nodes, - phi_nodes_ptr, phi_ssa_name_p): Move to gimple.h. - (set_phi_nodes): Move to tree-phinodes.h. - * tree-ssa-operands.h (enum ssa_op_iter_type, - struct ssa_operand_iterator_d, SSA_OP*, FOR_EACH_SSA*, SINGLE_SSA*, - ZERO_SSA_OPERANDS, NUM_SSA_OPERANDS): Move to ssa-iterators.h. - (dump_decl_set): Remove prototype. - (get_use_from_ptr, get_def_from_ptr): Relocate from tree-flow.h. - * tree-phinodes.h: New file. Move some prototypes from tree-flow.h. - (set_phi_nodes): Relocate from tree-flow-inline.h. - (gimple_phi_arg_imm_use_ptr, phi_arg_index_from_use): Relocate from - tree-flow-inline.h - * tree-ssa.h: Add tree-phinodes.h, gimple-ssa.h, ssa-iterators.h to - include list. Temporarily add gimple.h to include list. - * ssa-iterators.h: New file. - (struct immediate_use_iterator_d, FOR_EACH_IMM_*, - BREAK_FROM_IMM_USE_STMT): Relocate from tree-flow.h. - (enum ssa_op_iter_type, struct ssa_operand_iterator_d, SSA_OP*, - FOR_EACH_SSA*, SINGLE_SSA*, ZERO_SSA_OPERANDS, NUM_SSA_OPERANDS): - Relocate from tree-ssa-operands.h. - (delink_imm_use, link_imm_use_to_list, link_imm_use, - set_ssa_use_from_ptr, link_imm_use_stmt, relink_imm_use, - relink_imm_use_stmt, end_readonly_imm_use_p, first_readonly_imm_use, - next_readonly_imm_use, has_zero_uses, has_single_use, single_imm_use, - num_imm_uses, get_use_from_ptr, get_def_from_ptr, - phi_arg_index_from_use, op_iter_done, op_iter_next_def, - op_iter_next_tree, clear_and_done_ssa_iter, op_iter_init, - op_iter_init_use, op_iter_init_def, op_iter_init_tree, - single_ssa_tree_operand, single_ssa_use_operand, single_ssa_def_operand, - zero_ssa_operands, num_ssa_operands, delink_stmt_imm_use, - single_phi_def, op_iter_init_phiuse, op_iter_init_phidef, - end_imm_use_stmt_p, end_imm_use_stmt_traverse, move_use_after_head, - link_use_stmts_after, first_imm_use_stmt, next_imm_use_stmt, - first_imm_use_on_stmt, end_imm_use_on_stmt_p, next_imm_use_on_stmt): - Relocate from tree-flow-inline.h. - * tree-outof-ssa.h: Change _SSAEXPAND_H macro to GCC_TREE_OUTOF_SSA_H. - -2013-10-01 Vidya Praveen - - * aarch64-simd.md - (aarch64_l2_internal): Rename to ... - (aarch64_l_hi_internal): ... this; - Insert '\t' to output template. - (aarch64_l_lo_internal): New. - (aarch64_saddl2, aarch64_uaddl2): Modify to call - gen_aarch64_l_hi_internal() instead. - (aarch64_ssubl2, aarch64_usubl2): Ditto. - -2013-10-01 Uros Bizjak - - * doc/install.texi (Host/target specific installation notes for GCC): - Put @anchor before @heading. - * doc/gcc.texi (titlepage): Use @uref and http:// prefix for website. - Use @email for email addresses. - -2013-10-01 Jeff Law - - * tree-ssa-threadedge.c (thread_across_edge): Make path a pointer to - a vec. Only delete the path if we create one without successfully - registering a jump thread. - * tree-ssa-threadupdate.h (register_jump_thread): Pass in path vector - as a pointer. - * tree-ssa-threadupdate.c (threaded_edges): Remove. No longer used - (paths): New vector of jump threading paths. - (THREAD_TARGET, THREAD_TARGET2): Remove accessor macros. - (THREAD_PATH): New accessor macro for the entire thread path. - (lookup_redirection_data): Get intermediate and final outgoing edge - from the thread path. - (create_edge_and_update_destination_phis): Copy the threading path. - (ssa_fix_duplicate_block_edges): Get edges and block types from the - jump threading path. - (ssa_redirect_edges): Get edges and block types from the jump threading - path. Free the path vector. - (thread_block): Get edges from the jump threading path. Look at the - entire path to see if we thread to a loop exit. If we cancel a jump - thread request, then free the path vector. - (thread_single_edge): Get edges and block types from the jump threading - path. Free the path vector. - (thread_through_loop_header): Get edges and block types from the jump - threading path. Free the path vector. - (mark_threaded_blocks): Iterate over the vector of paths and store - the path on the appropriate edge. Get edges and block types from the - jump threading path. - (mark_threaded_blocks): Get edges and block types from the jump - threading path. Free the path vector. - (thread_through_all_blocks): Use the vector of paths rather than - a vector of 3-edge sets. - (register_jump_thread): Accept pointer to a path vector rather - than the path vector itself. Store the path vector for later use. - Simplify. - -2013-10-01 Jakub Jelinek - Andreas Krebbel - - PR target/58574 - * config/s390/s390.c (s390_split_branches): Modify check for table - jump insns. - (s390_chunkify_start): Rearrange table jump insn check in order to - deal with compare and branch insns correctly. - -2013-10-01 Kugan Vivekanandarajah - - PR target/58578 - Revert - 2013-04-05 Greta Yorsh - * config/arm/arm.md (arm_ashldi3_1bit): define_insn into - define_insn_and_split. - (arm_ashrdi3_1bit,arm_lshrdi3_1bit): Likewise. - (shiftsi3_compare): New pattern. - (rrx): New pattern. - * config/arm/unspecs.md (UNSPEC_RRX): New. - -2013-10-01 Alan Modra - - * stmt.c (expand_asm_operands): Revert part of 2013-09-24 special - casing inout operands. - -2013-10-01 Richard Biener - - PR tree-optimization/58553 - * tree-loop-distribution.c (struct partition_s): Add niter member. - (classify_partition): Populate niter member for the partition - and properly identify whether the relevant store happens before - or after the loop exit. - (generate_memset_builtin): Use niter member from the partition. - (generate_memcpy_builtin): Likewise. - -2013-09-30 Richard Sandiford - - * vec.h (vec_prefix, vec): Prefix member names with "m_". - * vec.c (vec_prefix::calculate_allocation): Update accordingly. - -2013-09-30 Richard Sandiford - - * basic-block.h (edge_list): Prefix member names with "m_". - * context.h (context): Likewise. - * domwalk.h (dom_walker): Likewise. - * gengtype-state.c (s_expr_writer, state_writer): Likewise. - * graphite-sese-to-poly.c (sese_dom_walker): Likewise. - * hash-table.h (hash_table): Likewise. - * machmode.h (bit_field_mode_iterator): Likewise. - * pass_manager.h (pass_list): Likewise. - * tree-into-ssa.c (mark_def_dom_walker): Likewise. - * tree-pass.h (pass_data): Likewise. - * tree-ssa-dom.c (dom_opt_dom_walker): Likewise. - * tree-ssa-phiopt.c (nontrapping_dom_walker): Likewise, - * tree-ssa-uncprop.c (uncprop_dom_walker): Likewise. - * asan.c (pass_data_asan): Update accordingly. - * cfganal.c (control_dependences::find_control_dependence): Likewise. - (control_dependences::control_dependences): Likewise. - (control_dependences::~control_dependences): Likewise. - (control_dependences::~control_dependences): Likewise. - (control_dependences::get_edges_dependent_on): Likewise. - * cgraphbuild.c (pass_data_rebuild_cgraph_edges::clone): Likewise. - (pass_data_remove_cgraph_callee_edges::clone): Likewise. - * context.c (gcc::context::context): Likewise. - * cprop.c (pass_rtl_cprop::clone): Likewise. - * domwalk.c (dom_walker::walk): Likewise. - * ipa-inline-analysis.c (pass_inline_parameters::clone): Likewise. - * ipa-pure-const.c (pass_local_pure_const::clone): Likewise. - * mode-switching.c (pass_mode_switching::clone): Likewise. - * passes.c (opt_pass::opt_pass): Likewise. - (pass_manager::pass_manager): Likewise. - * predict.c (pass_strip_predict_hints::clone): Likewise. - * recog.c (pass_data pass_data_peephole2::clone): Likewise. - (pass_split_all_insns::clone): Likewise. - * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator): - Likewise. - (bit_field_mode_iterator::next_mode): Likewise. - (bit_field_mode_iterator::prefer_smaller_modes): Likewise. - * tree-cfg.c (pass_split_crit_edges::clone): Likewise. - * tree-cfgcleanup.c (pass_merge_phi::clone): Likewise. - * tree-complex.c (pass_lower_complex::clone): Likewise. - * tree-eh.c (pass_cleanup_eh::clone): Likewise. - * tree-object-size.c (pass_object_sizes::clone): Likewise. - * tree-optimize.c (pass_fixup_cfg::clone): Likewise. - * tree-ssa-ccp.c (pass_data_ccp::clone): Likewise. - (pass_fold_builtins::clone): Likewise. - * tree-ssa-copy.c (pass_data_copy_prop::clone): Likewise. - * tree-ssa-copyrename.c (pass_rename_ssa_copies::clone): Likewise. - * tree-ssa-dce.c (pass_dce::clone, pass_dce_loop::clone): Likewise. - (pass_cd_dce::clone): Likewise. - * tree-ssa-dom.c (pass_dominator::clone): Likewise. - (pass_phi_only_cprop::clone): Likewise. - * tree-ssa-dse.c (pass_dse::clone): Likewise. - * tree-ssa-forwprop.c (pass_forwprop::clone): Likewise. - * tree-ssa-loop.c (pass_lim::clone): Likewise. - * tree-ssa-phiopt.c (pass_phiopt::clone): Likewise. - * tree-ssa-pre.c (pass_fre::clone): Likewise. - * tree-ssa-reassoc.c (pass_reassoc::clone): Likewise. - * tree-ssa-uninit.c (pass_late_warn_uninitialized::clone): Likewise. - * tree-tailcall.c (pass_tail_recursion::clone): Likewise. - * tree-vect-generic.c (pass_lower_vector_ssa::clone): Likewise. - * tree-vrp.c (pass_vrp::clone): Likewise. - * tsan.c (pass_tsan::clone): Likewise. - -2013-09-30 Jakub Jelinek - - PR middle-end/58564 - * fold-const.c (tree_unary_nonnegative_warnv_p): Use - INTEGRAL_TYPE_P (t) instead of TREE_CODE (t) == INTEGER_TYPE. - - PR middle-end/58564 - * fold-const.c (fold_ternary_loc): For A < 0 : : 0 - optimization, punt if sign_bit_p looked through any zero extension. - -2013-09-30 Teresa Johnson - - * tree-ssa-threadupdate.c (ssa_fix_duplicate_block_edges): - Update redirected out edge count in joiner case. - (ssa_redirect_edges): Common the joiner and non-joiner cases - so that joiner case gets profile updates. - -2013-09-30 Richard Biener - - PR tree-optimization/58554 - * tree-loop-distribution.c (classify_partition): Require - unconditionally executed stores for memcpy and memset recognition. - (tree_loop_distribution): Calculate dominance info. - -2013-09-30 Venkataramanan Kumar - - * config/aarch64/aarch64.h (MCOUNT_NAME): Define. - (NO_PROFILE_COUNTERS): Likewise. - (PROFILE_HOOK): Likewise. - (FUNCTION_PROFILER): Likewise. - * config/aarch64/aarch64.c (aarch64_function_profiler): Remove. - -2013-09-30 Iain Sandoe - - * config/rs6000/darwin.md (load_macho_picbase_si): Wrap machopic - calls and defines in TARGET_MACHO conditional. - (load_macho_picbase_di): Likewise. - (reload_macho_picbase): Likewise. - (reload_macho_picbase_si): Likewise. - (reload_macho_picbase_di): Likewise. - (nonlocal_goto_receiver): Likewise. - -2013-09-30 Nick Clifton - - * config/msp430/msp430.c (msp430x_names): New array. Lists MCUs - that use the MSP430X ISA. - (msp430_option_override): Scan -mmcu command line option for any - MCU name that supports the MSP430X ISA. - * config/msp430/t-msp430 (MULTILIB_MATCHES): Add matches for known - -mmcu options which enable the MSP430X ISA. - -2013-09-30 Richard Biener - - PR middle-end/58532 - * tree-cfg.c (make_abnormal_goto_edges): Skip debug statements - before looking for setjmp-like calls. - -2013-09-29 Iain Sandoe - - PR target/10901 - * config/darwin-protos.h (machopic_get_function_picbase): New. - * config/darwin.c (machopic_get_function_picbase): New. - * config/rs6000/darwin.md (load_macho_picbase_si): Update picbase - label for a new func. (load_macho_picbase_di): Likewise. - (reload_macho_picbase): New expand. - (reload_macho_picbase_si): New insn. - (reload_macho_picbase_di): New insn. - (nonlocal_goto_receiver): New define and split. - * config/rs6000/rs6000.md (unspec enum): Add UNSPEC_RELD_MPIC. - (unspecv enum): Add UNSPECV_NLGR. - -2013-09-29 Iain Sandoe - - * config/rs6000/rs6000.c (rs6000_init_dwarf_reg_sizes_extra): Ensure - that altivec registers are correctly sized on Darwin. - -2013-09-29 Iain Sandoe - - * config/t-darwin (darwin.o, darwin-c.o, darwin-f.o, - darwin-driver.o): Use COMPILE and POSTCOMPILE. - * config/x-darwin (host-darwin.o): Likewise. - * config/i386/x-darwin (host-i386-darwin.o): Likewise. - * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise. - * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise. - -2013-09-29 Uros Bizjak - - * doc/invoke.texi: Fix usage of @tie{} command. - -2013-09-29 Eric Botcazou - - * config/sparc/sync.md: Add peephole for consecutive memory barriers. - -2013-09-28 Jan Hubicka - - * config/i386/x86-tune.def: Add documentation for each of the options; - add whitespace. - -2013-09-28 Jan Hubicka - - * x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL): Enable for - generic. - (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Likewise. - (X86_TUNE_FOUR_JUMP_LIMIT): Drop for generic and buldozer. - (X86_TUNE_PAD_RETURNS): Drop for buldozer chips. - (X86_TUNE_AVOID_VECTOR_DECODE): Drop for generic. - (X86_TUNE_REASSOC_FP_TO_PARALLEL): Enable for generic. - -2013-09-28 Richard Sandiford - - * alloc-pool.c, asan.c, auto-inc-dec.c, basic-block.h, bb-reorder.c, - bitmap.c, bitmap.h, bt-load.c, builtins.c, calls.c, cfgcleanup.c, - cfgexpand.c, cfghooks.c, cfgloop.c, cfgloopmanip.c, cfgrtl.c, cgraph.c, - cgraph.h, cgraphbuild.c, cgraphclones.c, cgraphunit.c, collect2.c, - combine-stack-adj.c, combine.c, compare-elim.c, context.c, context.h, - cprop.c, cse.c, cselib.c, dbxout.c, dce.c, defaults.h, df-core.c, - df-problems.c, df-scan.c, df.h, diagnostic.c, double-int.c, dse.c, - dumpfile.c, dwarf2asm.c, dwarf2cfi.c, dwarf2out.c, emit-rtl.c, - errors.c, except.c, expmed.c, expr.c, file-find.c, final.c, - fixed-value.c, fold-const.c, function.c, fwprop.c, gcc-ar.c, gcc.c, - gcov-io.c, gcov-io.h, gcov.c, gcse.c, genattr-common.c, genattr.c, - genattrtab.c, genautomata.c, genconfig.c, genemit.c, genextract.c, - genflags.c, gengenrtl.c, gengtype-state.c, gengtype.c, genmodes.c, - genopinit.c, genoutput.c, genpeep.c, genpreds.c, genrecog.c, - gensupport.c, ggc-common.c, ggc-page.c, gimple-fold.c, gimple-low.c, - gimple-pretty-print.c, gimple-ssa-strength-reduction.c, gimple.c, - gimple.h, godump.c, graphite-clast-to-gimple.c, - graphite-optimize-isl.c, graphite-poly.h, graphite-sese-to-poly.c, - graphite.c, haifa-sched.c, hash-table.c, hash-table.h, hwint.c, - hwint.h, ifcvt.c, incpath.c, init-regs.c, input.h, intl.c, intl.h, - ipa-cp.c, ipa-devirt.c, ipa-inline-analysis.c, ipa-inline.c, - ipa-profile.c, ipa-pure-const.c, ipa-reference.c, ipa-split.c, - ipa-utils.c, ipa.c, ira-build.c, ira.c, jump.c, loop-doloop.c, - loop-init.c, loop-invariant.c, loop-iv.c, lower-subreg.c, lto-cgraph.c, - lto-streamer-in.c, lto-streamer-out.c, lto-wrapper.c, mcf.c, - mode-switching.c, modulo-sched.c, omp-low.c, optabs.c, opts.c, - pass_manager.h, passes.c, plugin.c, postreload-gcse.c, postreload.c, - predict.c, prefix.c, pretty-print.c, print-rtl.c, print-tree.c, - profile.c, read-md.c, real.c, real.h, recog.c, ree.c, reg-stack.c, - regcprop.c, reginfo.c, regmove.c, regrename.c, regs.h, regstat.c, - reload1.c, reorg.c, rtl.c, rtl.h, rtlanal.c, sbitmap.c, sched-rgn.c, - sdbout.c, sel-sched-ir.c, sel-sched.c, sparseset.c, stack-ptr-mod.c, - statistics.c, stmt.c, stor-layout.c, store-motion.c, streamer-hooks.h, - system.h, target-hooks-macros.h, targhooks.c, targhooks.h, toplev.c, - tracer.c, trans-mem.c, tree-browser.c, tree-call-cdce.c, tree-cfg.c, - tree-cfgcleanup.c, tree-complex.c, tree-data-ref.c, tree-data-ref.h, - tree-eh.c, tree-emutls.c, tree-flow.h, tree-if-conv.c, tree-into-ssa.c, - tree-iterator.c, tree-loop-distribution.c, tree-mudflap.c, - tree-nested.c, tree-nomudflap.c, tree-nrv.c, tree-object-size.c, - tree-optimize.c, tree-pass.h, tree-pretty-print.c, tree-profile.c, - tree-scalar-evolution.c, tree-sra.c, tree-ssa-ccp.c, - tree-ssa-coalesce.c, tree-ssa-copy.c, tree-ssa-copyrename.c, - tree-ssa-dce.c, tree-ssa-dom.c, tree-ssa-dse.c, tree-ssa-forwprop.c, - tree-ssa-ifcombine.c, tree-ssa-live.c, tree-ssa-loop-ch.c, - tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c, tree-ssa-loop-prefetch.c, - tree-ssa-loop.c, tree-ssa-math-opts.c, tree-ssa-operands.c, - tree-ssa-phiopt.c, tree-ssa-phiprop.c, tree-ssa-pre.c, - tree-ssa-reassoc.c, tree-ssa-sink.c, tree-ssa-strlen.c, - tree-ssa-structalias.c, tree-ssa-threadedge.c, tree-ssa-threadupdate.c, - tree-ssa-uncprop.c, tree-ssa-uninit.c, tree-ssa.c, tree-ssanames.c, - tree-stdarg.c, tree-switch-conversion.c, tree-tailcall.c, - tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop-manip.c, - tree-vect-stmts.c, tree-vectorizer.c, tree-vectorizer.h, tree-vrp.c, - tree.c, tree.h, tsan.c, tsystem.h, value-prof.c, var-tracking.c, - varasm.c, vec.h, vmsdbgout.c, vtable-verify.c, web.c: Add missing - whitespace before "(". - -2013-09-28 Sandra Loosemore - - * expr.h (extract_bit_field): Remove packedp parameter. - * expmed.c (extract_fixed_bit_field): Remove packedp parameter - from forward declaration. - (store_split_bit_field): Remove packedp arg from calls to - extract_fixed_bit_field. - (extract_bit_field_1): Remove packedp parameter and packedp - argument from recursive calls and calls to extract_fixed_bit_field. - (extract_bit_field): Remove packedp parameter and corresponding - arg to extract_bit_field_1. - (extract_fixed_bit_field): Remove packedp parameter. Remove code - to issue warnings. - (extract_split_bit_field): Remove packedp arg from call to - extract_fixed_bit_field. - * expr.c (emit_group_load_1): Adjust calls to extract_bit_field. - (copy_blkmode_from_reg): Likewise. - (copy_blkmode_to_reg): Likewise. - (read_complex_part): Likewise. - (store_field): Likewise. - (expand_expr_real_1): Likewise. - * calls.c (store_unaligned_arguments_into_pseudos): Adjust call - to extract_bit_field. - * config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Adjust - call to extract_bit_field. - * config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Adjust - call to extract_bit_field. - * doc/invoke.texi (Code Gen Options): Remove mention of warnings - and special packedp behavior from -fstrict-volatile-bitfields - documentation. - -2013-09-27 Jan-Benedict Glaw - - * lra-eliminations.c (init_elim_table): Guard value_p. - -2013-09-27 Michael Meissner - - * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Allow - DFmode, DImode, and SFmode in the upper VSX registers based on the - -mupper-regs-{df,sf} flags. Fix wu constraint to be ALTIVEC_REGS - if -mpower8-vector. Combine -mvsx-timode handling with the rest - of the VSX register handling. - - * config/rs6000/rs6000.md (f32_lv): Use %x0 for VSX regsters. - (f32_sv): Likewise. - (zero_extendsidi2_lfiwzx): Add support for loading into the - Altivec registers with -mpower8-vector. Use wu/wv constraints to - only do VSX memory options on Altivec registers. - (extendsidi2_lfiwax): Likewise. - (extendsfdf2_fpr): Likewise. - (mov_hardfloat, SF/SD modes): Likewise. - (mov_hardfloat32, DF/DD modes): Likewise. - (mov_hardfloat64, DF/DD modes): Likewise. - (movdi_internal64): Likewise. - -2013-09-27 Xinliang David Li - - * opts.c (finish_options): Adjust parameters - according to vect cost model. - (common_handle_option): Set dynamic vect cost - model for FDO. - targhooks.c (default_add_stmt_cost): Compute stmt cost - unconditionally. - * tree-vect-loop.c (vect_estimate_min_profitable_iters): - Use helper function. - * tree-vectorizer.h (unlimited_cost_model): New function. - * tree-vect-slp.c (vect_slp_analyze_bb_1): Use helper function. - * tree-vect-data-refs.c (vect_peeling_hash_insert): Use helper - function. - (vect_enhance_data_refs_alignment): Ditto. - * flag-types.h: New enum. - * common/config/i386/i386-common.c (ix86_option_init_struct): - No need to initialize vect_cost_model flag. - * config/i386/i386.c (ix86_add_stmt_cost): Compute stmt cost - unconditionally. - -2013-09-27 Diego Novillo - - * gimple.h (enum ssa_mode): Remove. - -2013-09-27 Paulo Matos - - * cfgloop.h (number_of_loops): Fix typo in check for null. - -2013-09-27 Jakub Jelinek - - PR middle-end/58551 - * tree-cfg.c (move_sese_region_to_fn): Also move loops that - are children of outermost saved_cfun's loop, and set it up to - be moved to dest_cfun's outermost loop. Fix up num_nodes adjustments - if loop != loop0 and SESE region contains bbs that belong to loop0. - -2013-09-27 Richard Sandiford - - * rtlanal.c (must_be_base_p, must_be_index_p): Delete. - (binary_scale_code_p, get_base_term, get_index_term): New functions. - (set_address_segment, set_address_base, set_address_index) - (set_address_disp): Accept the argument unconditionally. - (baseness): Remove must_be_base_p and must_be_index_p checks. - (decompose_normal_address): Classify as much as possible in the - main loop. - -2013-09-27 Richard Sandiford - - * cse.c (count_reg_usage): Handle INT_LIST. - * lra-eliminations.c (lra_eliminate_regs_1): Likewise. - * reginfo.c (reg_scan_mark_refs): Likewise. - * reload1.c (eliminate_regs_1): Likewise. - -2013-09-27 Iain Sandoe - - PR middle-end/58547 - * rtlanal.c (lsb_bitfield_op_p): Make both parts of the comparison - signed. - -2013-09-27 Richard Biener - - PR tree-optimization/58459 - * tree-ssa-forwprop.c (forward_propagate_addr_expr): Remove - restriction not propagating into loops. - -2013-09-26 Florian Weimer - - * tree-ssa.h (walk_use_def_chains_fn, walk_use_def_chains): Delete. - * tree-ssa.c (walk_use_def_chains_1, walk_use_def_chains): Delete. - * doc/tree-ssa.texi (Walking use-def chains): Delete. - -2013-09-26 Richard Biener - - * tree-into-ssa.c (rewrite_into_ssa): Make more SSA names to anonymous. - -2013-09-26 Richard Biener - - * alias.h (component_uses_parent_alias_set): Rename to ... - (component_uses_parent_alias_set_from): ... this. - * alias.c (component_uses_parent_alias_set): Rename to ... - (component_uses_parent_alias_set_from): ... this and return - the desired parent. - (reference_alias_ptr_type_1): Use the result from - component_uses_parent_alias_set_from instead of stripping - components one at a time. - * emit-rtl.c (set_mem_attributes_minus_bitpos): Adjust. - -2013-09-26 Andrew MacLeod - - * tree-ssa-live.h (find_replaceable_exprs, dump_replaceable_exprs): - Move prototypes to... - * tree-ssa-ter.h: New File. Move prototypes here. - * tree-flow.h (stmt_is_replaceable_p): Remove prototype. - * tree-outof-ssa.h: New. Rename ssaexpand.h, include tree-ssa-ter.h. - * tree-outof-ssa.c (ssa_is_replaceable_p): New. Refactor common bits - from is_replaceable_p. - * tree-ssa-ter.c (is_replaceable_p, stmt_is_replaceable_p): Delete. - (ter_is_replaceable_p): New. Use new refactored ssa_is_replaceable_p. - (process_replaceable): Use ter_is_replaceable_p. - (find_replaceable_in_bb): Use ter_is_replaceable_p. - * expr.c (stmt_is_replaceable_p): Relocate from tree-ssa-ter.c. Use - newly refactored ssa_is_replaceable_p. - * cfgexpand.c: Include tree-outof-ssa.h. - * ssaexpand.h: Delete. - -2013-09-26 Andrew MacLeod - - * gimple.c (gimple_replace_lhs): Move to tree-ssa.c and rename. - (struct count_ptr_d, count_ptr_derefs, count_uses_and_derefs): Move to - tree-ssa.c - (create_gimple_tmp): Delete. - (get_expr_type, build_assign, build_type_cast): Move to... - * gimple-builder.c: New File. - (get_expr_type): Relocate from gimple.c. - (build_assign, build_type_cast): Change to only create ssanames. - * gimple.h: Move prototypes to... - * gimple-builder.h: New File. Here. - * tree-ssa.h: And here. - * tree-ssa.c (struct count_ptr_d, count_ptr_derefs, - count_uses_and_derefs): Relocate from gimple.c. - (gimple_replace_ssa_lhs): Renamed gimple_replace_ssa from gimple.c - * tree-ssa-reassoc.c (repropagate_negates): Use gimple_replace_ssa_lhs. - * tree-ssa-math-opts (execute_cse_reciprocals): Use - gimple_replace_ssa_lhs. - * asan.c: Include gimple-builder.h. - * Makefile.in: Add gimple-builder.o. - -2013-09-26 Richard Biener - - * tree-ssa-live.c (var_map_base_init): Handle SSA names with - DECL_IGNORED_P base VAR_DECLs like anonymous SSA names. - (loe_visit_block): Use gcc_checking_assert. - * tree-ssa-coalesce.c (create_outofssa_var_map): Use - gimple_assign_ssa_name_copy_p. - (gimple_can_coalesce_p): Adjust according to the var_map_base_init - change. - -2013-09-26 David Edelsohn - - * config/rs6000/t-rs6000 (rs6000.o): Remove. - (rs6000-c.o): Use COMPILE and POSTCOMPILE. - -2013-09-26 Richard Biener - - PR tree-optimization/58539 - * tree-vect-loop.c (vect_create_epilog_for_reduction): Honor - the fact that debug statements are not taking part in loop-closed - SSA construction. - -2013-09-26 Nick Clifton - - * config/msp430/msp430.c (msp430_expand_epilogue): Fix compile - time warning message. - (msp430_print_operand_raw): Delete unused letter parameter. - (TARGET_PRINT_OPERAND_ADDRESS): Define. - (msp430_print_operand_address): New function. - (msp430_print_operand): Move address printing code from here to - new function. - * config/msp430/msp430.md (movsipsi2): Add comment in generated - assembler. - (zero_extendpsisi2): Likewise. - (extendpsisi2): New pattern. - (andneghi3): New pattern. - -2013-09-26 Yvan Roux - - * config/aarch64/aarch64.opt (mlra): New option. - * config/aarch64/aarch64.c (aarch64_lra_p): New function. - (TARGET_LRA_P): Define. - -2013-09-26 Eric Botcazou - - * expr.c (expand_assignment): Remove obsolete comment. - -2013-09-25 Jeff Law - - * tree-flow.h (thread_through_all_blocks): Prototype moved into - tree-ssa-threadupdate.h. - (register_jump_thread): Similarly. - * tree-ssa-threadupdate.h: New header file. - * tree-ssa-dom.c: Include tree-ssa-threadupdate.h. - * tree-vrp.c: Likewise. - * tree-ssa-threadedge.c: Include tree-ssa-threadupdate.h. - (thread_around_empty_blocks): Change type of path vector argument to - an edge,type pair from just an edge. Initialize both elements when - appending to a jump threading path. Tweak references to elements - appropriately. - (thread_across_edge): Similarly. Release memory for the elements - as needed. - * tree-ssa-threadupdate.c: Include tree-ssa-threadupdate.h. - (dump_jump_thread_path): New function broken out from - register_jump_thread. - (register_jump_thread): Use dump_jump_thread_path. Change type of - path vector entries. Search the path for NULL edges and dump - the path if one is found. Tweak the conversion of path to 3-edge - form to use the block copy type information embedded in the path. - -2013-09-25 Yvan Roux - - * lra.c (update_inc_notes): Remove all REG_DEAD and REG_UNUSED notes. - -2013-09-25 Yvan Roux - Vladimir Makarov - - * rtlanal.c (lsb_bitfield_op_p): New predicate for bitfield operations - from the least significant bit. - (strip_address_mutations): Add bitfield operations handling. - (must_be_index_p): Add shifting and rotate operations handling. - (set_address_base): Use must_be_base_p predicate. - (set_address_index): Use must_be_index_p predicate. - -2013-09-25 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/i386.c (ix86_avx256_split_vector_move_misalign): - Use new names. - (ix86_expand_vector_move_misalign): Support new unaligned load and - stores and use new names. - (CODE_FOR_sse2_storedqu): Rename to ... - (CODE_FOR_sse2_storedquv16qi): ... this. - (CODE_FOR_sse2_loaddqu): Rename to ... - (CODE_FOR_sse2_loaddquv16qi): ... this. - (CODE_FOR_avx_loaddqu256): Rename to ... - (CODE_FOR_avx_loaddquv32qi): ... this. - (CODE_FOR_avx_storedqu256): Rename to ... - (CODE_FOR_avx_storedquv32qi): ... this. - * config/i386/i386.md (fpint_logic): New. - * config/i386/sse.md (VMOVE): Extend for AVX512. - (VF): Ditto. - (VF_128_256): New. - (VF_512): Ditto. - (VI_UNALIGNED_LOADSTORE): Ditto. - (sse2_avx_avx512f): Ditto. - (sse2_avx2): Extend for AVX512. - (sse4_1_avx2): Ditto. - (avx2_avx512f): New. - (sse): Extend for AVX512. - (sse2): Ditto. - (sse4_1): Ditto. - (avxsizesuffix): Ditto. - (sseintvecmode): Ditto. - (ssePSmode): Ditto. - (_loadu): Ditto. - (_storeu): Ditto. - (_loaddqu): Extend for AVX512 and rename to ... - (_loaddqu): ... this. - (_storedqu): Extend for AVX512 and rename to ... - (_storedqu_movnt): Replace constraint "x" with "v". - (STORENT_MODE): Extend for AVX512. - (*absneg2): Replace constraint "x" with "v". - (*mul3): Ditto. - (*ieee_smin3): Ditto. - (*ieee_smax3): Ditto. - (avx_cmp3): Replace VF with VF_128_256. - (*_maskcmp3_comm): Ditto. - (_maskcmp3): Ditto. - (_andnot3): Extend for AVX512. - (3, anylogic): Replace VF with VF_128_256. - (3, fpint_logic): New. - (*3): Extend for AVX512. - (avx512flogicsuff): New. - (avx512f_): Ditto. - (_movmsk): Replace VF with - VF_128_256. - (_blend): Ditto. - (_blendv): Ditto. - (_dp): Ditto. - (avx_vtest): Ditto. - (_round): Ditto. - (xop_vpermil23): Ditto. - (*avx_vpermilp): Extend for AVX512 and rename to ... - (*_vpermilp): ... this. - (avx_vpermilvar3): Extend for AVX512 and rename to ... - (_vpermilvar3): ... this. - -2013-09-25 Tom Tromey - - * Makefile.in (PARTITION_H, LTO_SYMTAB_H, COMMON_TARGET_DEF_H) - (RTL_ERROR_H, TRANS_MEM_H, COVERAGE_H, DEMANGLE_H, ALIAS_H) - (SCHED_INT_H, SEL_SCHED_IR_H, SEL_SCHED_DUMP_H, VALTRACK_H, DDG_H) - (GGC_INTERNAL_H, DECNUM_H, BACKTRACE_H, MKDEPS_H, TREE_HASHER_H) - (TREE_SSA_LIVE_H, SSAEXPAND_H, DWARF2OUT_H, SCEV_H, OMEGA_H) - (TREE_DATA_REF_H, IRA_INT_H, LRA_INT_H, DBGCNT_H, DATA_STREAMER_H) - (GIMPLE_STREAMER_H, TREE_STREAMER_H, STREAMER_HOOKS_H) - (TREE_VECTORIZER_H, IPA_INLINE_H, GSTAB_H, LIBFUNCS_H) - (GRAPHITE_HTAB_H): Remove. - -2013-09-25 Tom Tromey - - * config/mcore/t-mcore (CROSS_FLOAT_H): Remove. - -2013-09-25 Tom Tromey - - * config/t-glibc (glibc-c.o): Use COMPILE and POSTCOMPILE. - -2013-09-25 Tom Tromey - - * config/i386/t-i386 (i386.o): Remove. - (i386-c.o): Use COMPILE and POSTCOMPILE. - -2013-09-25 Tom Tromey - - * Makefile.in ($(out_object_file)): Use COMPILE and POSTCOMPILE. - -2013-09-25 Tom Tromey - - * Makefile.in (graph.o, sbitmap.o, sparseset.o, gcc-ar.o) - (gcc-ranlib.o, gcc-nm.o, collect2.o, collect2-aix.o, tlink.o) - (lto-wrapper.o, default-c.o, attribs.o, incpath.o, prefix.o) - (gcc.o, options.o, options-save.o, version.o, gtype-desc.o) - (trans-mem.o, ggc-common.o, ggc-page.o, ggc-none.o, stringpool.o) - (convert.o, double-int.o, lto-compress.o, data-streamer-in.o) - (data-streamer-out.o, data-streamer.o, gimple-streamer-in.o) - (gimple-streamer-out.o, tree-streamer.o, tree-streamer-in.o) - (tree-streamer-out.o, streamer-hooks.o, lto-cgraph.o) - (lto-streamer-in.o, lto-streamer-out.o, lto-section-in.o) - (lto-section-out.o, lto-opts.o, lto-streamer.o, langhooks.o) - (test-dump.o, tree.o, tree-dump.o, tree-inline.o, print-tree.o) - (stor-layout.o, asan.o, tsan.o, ubsan.o, tree-ssa-tail-merge.o) - (tree-ssa-structalias.o, tree-ssa-uninit.o, tree-ssa.o) - (tree-into-ssa.o, tree-ssa-ter.o, tree-ssa-coalesce.o) - (tree-outof-ssa.o, tree-ssa-dse.o, tree-ssa-forwprop.o) - (tree-ssa-phiprop.o, tree-ssa-ifcombine.o, tree-ssa-phiopt.o) - (tree-nrv.o, tree-ssa-copy.o, tree-ssa-propagate.o) - (tree-ssa-dom.o, tree-ssa-uncprop.o, tree-ssa-threadedge.o) - (tree-ssa-threadupdate.o, tree-ssanames.o, tree-phinodes.o) - (domwalk.o, tree-ssa-live.o, tree-ssa-copyrename.o) - (tree-ssa-pre.o, tree-ssa-sccvn.o) - (gimple-ssa-strength-reduction.o, tree-vrp.o, tree-cfg.o) - (tree-cfgcleanup.o, tree-tailcall.o, tree-ssa-sink.o) - (tree-nested.o, tree-if-conv.o, tree-iterator.o, tree-dfa.o) - (tree-ssa-operands.o, tree-eh.o, tree-ssa-loop.o) - (tree-ssa-loop-unswitch.o, tree-ssa-address.o) - (tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o) - (tree-ssa-loop-ch.o, tree-ssa-loop-prefetch.o, tree-predcom.o) - (tree-ssa-loop-ivopts.o, tree-affine.o, tree-ssa-loop-manip.o) - (tree-ssa-loop-im.o, tree-ssa-math-opts.o, tree-ssa-alias.o) - (tree-ssa-reassoc.o, tree-optimize.o, gimplify.o) - (gimple-iterator.o, gimple-fold.o, gimple-low.o, omp-low.o) - (tree-browser.o, omega.o, tree-chrec.o, tree-scalar-evolution.o) - (tree-data-ref.o, sese.o, graphite.o, graphite-blocking.o) - (graphite-clast-to-gimple.o, graphite-dependences.o) - (graphite-interchange.o, graphite-poly.o) - (graphite-scop-detection.o, graphite-sese-to-poly.o) - (graphite-optimize-isl.o, tree-vect-loop.o) - (tree-vect-loop-manip.o, tree-vect-patterns.o, tree-vect-slp.o) - (tree-vect-stmts.o, tree-vect-data-refs.o, tree-vectorizer.o) - (vtable-verify.o, tree-loop-distribution.o, tree-parloops.o) - (tree-stdarg.o, tree-object-size.o, internal-fn.o, gimple.o) - (gimple-pretty-print.o, tree-mudflap.o, tree-nomudflap.o) - (tree-pretty-print.o, tree-diagnostic.o, fold-const.o) - (diagnostic.o, diagnostic-color.o, opts.o, opts-global.o) - (opts-common.o, targhooks.o, common/common-targhooks.o, input.o) - (toplev.o, hwint.o, passes.o, plugin.o, main.o, host-default.o) - (rtl-error.o, rtl.o, print-rtl.o, rtlanal.o, varasm.o, function.o) - (statistics.o, stmt.o, except.o, expr.o, dojump.o, builtins.o) - (calls.o, expmed.o, explow.o, optabs.o, dbxout.o, debug.o) - (sdbout.o, dwarf2out.o, dwarf2cfi.o, dwarf2asm.o, vmsdbgout.o) - (xcoffout.o, godump.o, emit-rtl.o, real.o, realmpfr.o, dfp.o) - (fixed-value.o, jump.o, simplify-rtx.o, symtab.o, cgraph.o) - (cgraphunit.o, cgraphclones.o, cgraphbuild.o, varpool.o, ipa.o) - (ipa-profile.o, ipa-devirt.o, ipa-prop.o, ipa-ref.o, ipa-cp.o) - (ipa-split.o, ipa-inline.o, ipa-inline-analysis.o) - (ipa-inline-transform.o, ipa-utils.o, ipa-reference.o) - (ipa-pure-const.o, coverage.o, cselib.o, cse.o, dce.o, dumpfile.o) - (dse.o, fwprop.o, web.o, ree.o, cprop.o, gcse.o, store-motion.o) - (resource.o, lcm.o, mode-switching.o, tree-ssa-dce.o) - (tree-call-cdce.o, tree-ssa-ccp.o, tree-ssa-strlen.o, tree-sra.o) - (tree-switch-conversion.o, tree-complex.o, tree-emutls.o) - (tree-vect-generic.o, df-core.o, df-problems.o, df-scan.o) - (regstat.o, valtrack.o, var-tracking.o, profile.o, mcf.o) - (tree-profile.o, value-prof.o, loop-doloop.o, alloc-pool.o) - (auto-inc-dec.o, cfg.o, cfghooks.o, cfgexpand.o, cfgrtl.o) - (cfganal.o, cfgbuild.o, cfgcleanup.o, cfgloop.o, cfgloopanal.o) - (graphds.o, loop-iv.o, loop-invariant.o, cfgloopmanip.o) - (loop-init.o, loop-unswitch.o, loop-unroll.o, dominance.o) - (et-forest.o, combine.o, reginfo.o, bitmap.o, vec.o, hash-table.o) - (reload.o, reload1.o, rtlhooks.o, postreload.o, postreload-gcse.o) - (caller-save.o, bt-load.o, reorg.o, alias.o, stack-ptr-mod.o) - (init-regs.o, ira-build.o, ira-costs.o, ira-conflicts.o) - (ira-color.o, ira-emit.o, ira-lives.o, ira.o, lra.o) - (lra-assigns.o, lra-coalesce.o, lra-constraints.o) - (lra-eliminations.o, lra-lives.o, lra-spills.o, regmove.o) - (combine-stack-adj.o, compare-elim.o, ddg.o, modulo-sched.o) - (haifa-sched.o, sched-deps.o, sched-rgn.o, sched-ebb.o) - (sched-vis.o, sel-sched.o, sel-sched-dump.o, sel-sched-ir.o) - (final.o, recog.o, reg-stack.o, sreal.o, predict.o, lists.o) - (bb-reorder.o, tracer.o, timevar.o, regcprop.o, regrename.o) - (ifcvt.o, params.o, pointer-set.o, hooks.o, pretty-print.o) - (errors.o, dbgcnt.o, lower-subreg.o, target-globals.o) - (hw-doloop.o, file-find.o, context.o, $(common_out_object_file)) - (insn-attrtab.o, insn-automata.o, insn-dfatab.o, insn-emit.o) - (insn-enums.o, insn-extract.o, insn-latencytab.o, insn-modes.o) - (insn-opinit.o, insn-output.o, insn-peep.o, insn-preds.o) - (insn-recog.o, intl.o, cppbuiltin.o, cppdefault.o, gcov.o) - (gcov-dump.o): Remove. - (default-c.o): Use COMPILE and POSTCOMPILE. - (CFLAGS-gcc.o): New variable. - ($(common_out_object_file)): Use COMPILE and POSTCOMPILE. - -2013-09-25 Tom Tromey - - * Makefile.in (c-family/cppspec.o, c-family/c-common.o) - (c-family/c-cppbuiltin.o, c-family/c-dump.o, c-family/c-format.o) - (c-family/c-gimplify.o, c-family/c-lex.o, c-family/c-omp.o) - (c-family/c-opts.o, c-family/c-pch.o, c-family/c-ppoutput.o) - (c-family/c-pragma.o, c-family/c-pretty-print.o) - (c-family/c-semantics.o, c-family/c-ada-spec.o) - (c-family/array-notation-common.o, c-family/stub-objc.o) - (c-family/c-ubsan.o): Remove. - -2013-09-25 Tom Tromey - - * Makefile.in (C_TREE_H): Reference c/c-tree.h. - -2013-09-25 Tom Tromey - - * Makefile.in (DRIVER_DEFINES): Use $(and), not shell code, - to add -DENABLE_SHARED_LIBGCC. - (gcc.o): Don't use subshell. - -2013-09-25 Tom Tromey - - * Makefile.in (OUTPUT_OPTION): Define as "-o $@". - * configure.ac: Don't invoke AM_PROG_CC_C_O. - (NO_MINUS_C_MINUS_O, OUTPUT_OPTION): Don't subst. - * configure, config.in: Rebuild. - -2013-09-25 Tom Tromey - - * Makefile.in (CCDEPMODE, DEPDIR, depcomp, COMPILE.base) - (COMPILE, POSTCOMPILE): New variables. - (.cc.o .c.o): Use COMPILE, POSTCOMPILE. - (DEPFILES): New variable. - Include ".Po" files. - * configure.ac: Add checks for dependency checking. - * configure, aclocal.m4: Regenerate. - -2013-09-25 Tom Tromey - - * Makefile.in (ALL_HOST_BACKEND_OBJS): Add lto-wrapper.o. - ($(ALL_HOST_OBJS)): Move order-only dependency to end of file. - -2013-09-25 Tom Tromey - - * Makefile.in (generated_files): Add options.h, - target-hooks-def.h, insn-opinit.h, - common/common-target-hooks-def.h, pass-instances.def, - c-family/c-target-hooks-def.h. - -2013-09-25 Jeff Law - - * tree-ssa-threadedge.c (thread_across_edge): Use foo.last () rather - than foo[foo.length () - 1] to access last member in a vec. - * tree-ssa-threadupdate.c (register_jump_thread): Similarly. - -2013-09-25 Richard Biener - - PR middle-end/58521 - * tree.c (iterative_hash_expr): Remove MEM_REF special handling. - -2013-09-25 Jan Hubicka - - * cgraph.c (cgraph_resolve_speculation): Use semantical equivalency - test. - -2013-09-25 Marek Polacek - - PR sanitizer/58420 - * ubsan.c (ubsan_type_descriptor): Handle IDENTIFIER_NODEs - when determining the type name. - -2013-09-24 Oleg Endo - - * config/sh/sh.md: Fix formatting. - -2013-09-24 Xinliang David Li - - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Check - max peel iterations parameter. - * param.def: New parameter. - * doc/invoke.texi: Document New parameter. - -2013-09-24 Christophe Lyon - - * gimple-pretty-print.c: Various whitespace tweaks. - * tree-core.h: Likewise. - * tree-pretty-print.c: Likewise. - * tree-ssa-alias.c: Likewise. - * tree-ssa-copy.c: Likewise. - * tree-ssanames.c: Likewise. - * tree-ssanames.h: Likewise. - * tree-vrp.c: Likewise. - -2013-09-24 Alan Modra - - PR middle-end/57134 - PR middle-end/57586 - * stmt.c (expand_asm_operands): Call expand_expr with EXPAND_MEMORY - for output operands that disallow regs. Don't use EXPAND_WRITE on - inout operands. - -2013-09-24 Richard Biener - - PR middle-end/58513 - * tree.c (reference_alias_ptr_type): Move ... - * alias.c (reference_alias_ptr_type): ... here and implement - in terms of the new reference_alias_ptr_type_1. - (ref_all_alias_ptr_type_p): New helper. - (get_deref_alias_set_1): Drop flag_strict_aliasing here, - use ref_all_alias_ptr_type_p. - (get_deref_alias_set): Add flag_strict_aliasing check here. - (reference_alias_ptr_type_1): New function, split out from ... - (get_alias_set): ... here. - (alias_ptr_types_compatible_p): New function. - * alias.h (reference_alias_ptr_type): Declare. - (alias_ptr_types_compatible_p): Likewise. - * tree.h (reference_alias_ptr_type): Remove. - * fold-const.c (operand_equal_p): Use alias_ptr_types_compatible_p - to compare MEM_REF alias types. - -2013-09-24 Richard Biener - - * tree-vrp.c (vrp_finalize): Check for SSA name presence. - -2013-09-23 Michael Meissner - - * config/rs6000/rs6000.c (rs6000_vector_reload): Delete, combine - reload helper function arrays into a single array reg_addr. - (reload_fpr_gpr): Likewise. - (reload_gpr_vsx): Likewise. - (reload_vsx_gpr): Likewise. - (struct rs6000_reg_addr): Likewise. - (reg_addr): Likewise. - (rs6000_debug_reg_global): Change rs6000_vector_reload, - reload_fpr_gpr, reload_gpr_vsx, reload_vsx_gpr uses to reg_addr. - (rs6000_init_hard_regno_mode_ok): Likewise. - (rs6000_secondary_reload_direct_move): Likewise. - (rs6000_secondary_reload): Likewise. - - * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Add new - constraints: wu, ww, and wy. Repurpose wv constraint added during - power8 changes. Put wg constraint in alphabetical order. - - * config/rs6000/rs6000.opt (-mvsx-scalar-float): New debug switch - for future work to add ISA 2.07 VSX single precision support. - (-mvsx-scalar-double): Change default from -1 to 1, update - documentation comment. - (-mvsx-scalar-memory): Rename debug switch to -mupper-regs-df. - (-mupper-regs-df): New debug switch to control whether DF values - can go in the traditional Altivec registers. - (-mupper-regs-sf): New debug switch to control whether SF values - can go in the traditional Altivec registers. - - * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print wu, ww, - and wy constraints. - (rs6000_init_hard_regno_mode_ok): Use ssize_t instead of int for - loop variables. Rename -mvsx-scalar-memory to -mupper-regs-df. - Add new constraints, wu/ww/wy. Repurpose wv constraint. - (rs6000_debug_legitimate_address_p): Print if we are running - before, during, or after reload. - (rs6000_secondary_reload): Add a comment. - (rs6000_opt_masks): Add -mupper-regs-df, -mupper-regs-sf. - - * config/rs6000/constraints.md (wa constraint): Sort w - constraints. Update documentation string. - (wd constraint): Likewise. - (wf constraint): Likewise. - (wg constraint): Likewise. - (wn constraint): Likewise. - (ws constraint): Likewise. - (wt constraint): Likewise. - (wx constraint): Likewise. - (wz constraint): Likewise. - (wu constraint): New constraint for ISA 2.07 SFmode scalar - instructions. - (ww constraint): Likewise. - (wy constraint): Likewise. - (wv constraint): Repurpose ISA 2.07 constraint that we did not use - in the previous submissions. - * doc/md.texi (PowerPC and IBM RS6000): Likewise. - -2013-09-23 Richard Sandiford - - * doc/rtl.texi (REG_NOTES): Say that int_list can also be used. - (REG_BR_PROB): Say that the probability is stored in an int_list. - * reg-notes.def: Update commentary to mention INT_LIST. - * rtl.def (EXPR_LIST, INSN_LIST): Capitalize comments. - (INT_LIST): New rtx. - * rtl.h (add_int_reg_note, add_shallow_copy_of_reg_note): Declare. - * rtlanal.c (int_reg_note_p): New function. - (alloc_reg_note): Assert that the note does not have an int argument. - (add_int_reg_note, add_shallow_copy_of_reg_note): New functions. - * combine.c (distribute_notes): Use add_shallow_copy_of_rtx. - * cse.c (cse_process_notes_1): Expect REG_EQUAL to be an EXPR_LIST - rather than an INSN_LIST. Handle INT_LIST. - * ifcvt.c (cond_exec_process_insns): Take the probability as an int - rather than an rtx. Use gen_rtx_INT_LIST to create a REG_BR_PROB note. - (cond_exec_process_if_block): Use XINT to extract REG_BR_PROB values. - Manipulate them as ints rather than rtxes. - * reg-stack.c (subst_asm_stack_regs): Only handle EXPR_LIST notes. - * regmove.c (copy_src_to_dest): Likewise. - * sched-vis.c (print_insn_with_notes): Handle INT_LIST. - - * config/i386/winnt.c (i386_pe_seh_unwind_emit): Sink pat assignment - into the cases that need it. - * config/arm/arm.c (arm_unwind_emit): Likewise. - - * asan.c (asan_clear_shadow): Use add_int_reg_note for REG_BR_PROB. - * emit-rtl.c (try_split, emit_copy_of_insn_after): Likewise. - * loop-doloop.c (add_test, doloop_modify): Likewise. - * loop-unswitch.c (compare_and_jump_seq): Likewise. - * optabs.c (emit_cmp_and_jump_insn_1): Likewise. - * predict.c (combine_predictions_for_insn): Likewise. - * print-rtl.c (print_rtx): Handle INT_LIST. - * config/aarch64/aarch64.c (aarch64_emit_unlikely_jump): Likewise. - * config/alpha/alpha.c (emit_unlikely_jump): Likewise. - * config/arm/arm.c (emit_unlikely_jump): Likewise. - * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise. - (ix86_split_fp_branch, predict_jump): Likewise. - * config/rs6000/rs6000.c (emit_unlikely_jump): Likewise. - * config/sh/sh.c (expand_cbranchsi4): Likewise. - * config/spu/spu.c (ea_load_store_inline): Likewise. - - * cfgbuild.c (compute_outgoing_frequencies): Use XINT to access the - value of a REG_BR_PROB note. - * cfgrtl.c (force_nonfallthru_and_redirect): Likewise. - (update_br_prob_note, rtl_verify_edges, purge_dead_edges): Likewise. - * emit-rtl.c (try_split): Likewise. - * predict.c (br_prob_note_reliable_p): Likewise. - (invert_br_probabilities, combine_predictions_for_insn): Likewise. - * reorg.c (mostly_true_jump): Likewise. - * config/bfin/bfin.c (cbranch_predicted_taken_p): Likewise. - * config/frv/frv.c (frv_print_operand_jump_hint): Likewise. - * config/i386/i386.c (ix86_print_operand): Likewise. - * config/ia64/ia64.c (ia64_print_operand): Likewise. - * config/mmix/mmix.c (mmix_print_operand): Likewise. - * config/rs6000/rs6000.c (output_cbranch): Likewise. - * config/s390/s390.c (s390_expand_tbegin): Likewise. - * config/sh/sh.c (sh_print_operand, sh_adjust_cost): Likewise. - * config/sparc/sparc.c (output_cbranch): Likewise. - * config/spu/spu.c (get_branch_target): Likewise. - * config/tilegx/tilegx.c (cbranch_predicted_p): Likewise. - * config/tilepro/tilepro.c (cbranch_predicted_p): Likewise. - -2013-09-23 Jan Hubicka - - * ipa-cp.c (ipa_get_indirect_edge_target_1): Add sanity check - for ipa-devirt. - * ipa-utils.h (possible_polymorphic_call_target_p): New function. - * ipa-devirt.c (possible_polymorphic_call_target_p): Be tolerant - of external calls - * gimple-fold.c: Include ipa-utils.h and gimple-pretty-print.h - (gimple_fold_call): Dump inconsistent devirtualizations; add - sanity check for type based devirtualizations. - * ipa-prop.c: Include ipa-utils.h - (ipa_intraprocedural_devirtualization): Add sanity check. - (try_make_edge_direct_virtual_call): Likewise. - -2013-09-23 Eric Botcazou - - * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Recurse on copy - assignment statements. - -2013-09-23 Kugan Vivekanandarajah - - * gimple-pretty-print.c (dump_ssaname_info): New function. - (dump_gimple_phi): Call it. - (pp_gimple_stmt_1): Likewise. - * tree-core.h (tree_ssa_name): New union ssa_name_info_type field. - (range_info_def): Declare. - * tree-pretty-print.c (pp_double_int): New function. - (dump_generic_node): Call it. - * tree-pretty-print.h (pp_double_int): Declare. - * tree-ssa-alias.c (dump_alias_info): Check pointer type. - * tree-ssanames.h (range_info_def): New structure. - (value_range_type): Move definition here. - (set_range_info, value_range_type, duplicate_ssa_name_range_info): - Declare. - * tree-ssanames.c (make_ssa_name_fn): Check pointer type at - initialization. - (set_range_info): New function. - (get_range_info): Likewise. - (duplicate_ssa_name_range_info): Likewise. - (duplicate_ssa_name_fn): Check pointer type and call - duplicate_ssa_name_range_info. - * tree-ssa-copy.c (fini_copy_prop): Likewise. - * tree-vrp.c (value_range_type): Remove definition, now in - tree-ssanames.h. - (vrp_finalize): Call set_range_info to update value range of SSA_NAMEs. - * tree.h (SSA_NAME_PTR_INFO): Macro changed to access via union. - (SSA_NAME_RANGE_INFO): New macro. - -2013-09-23 Richard Biener - - PR tree-optimization/58464 - * tree-ssa-pre.c (phi_trans_lookup): Remove. - (phi_trans_add): Change to add conditionally on being not present. - (phi_translate_1): Remove recursion detection here. - (phi_translate): Pre-seed the cache with NULL to catch - recursion here in a more generic way. - (bitmap_find_leader): Adjust comment. - (get_representative_for): Dump value-numbers. - (create_expression_by_pieces): Likewise. - (insert_into_preds_of_block): Likewise. - -2013-09-23 Christian Bruel - - PR target/58475 - * config/sh/sh.md (movsf_ie): Allow fpul_operand. - * config/sh/predicate.md (arith_reg_operand): Disallow FPUL_REG. - -2013-09-23 James Greenhalgh - - Revert r202780: - 2013-09-20 Renlin Li - - * config/aarch64/aarch64.c (aarch64_expand_prologue): Use - plus_constant. - (aarch64_expand_epilogue): Likewise. - (aarch64_legitimize_reload_address): Likewise. - -2013-09-22 Eric Botcazou - - * gimplify.c (gimplify_asm_expr): Reset the TREE_CHAIN of clobbers to - NULL_TREE before pushing them onto the vector. Likewise for labels. - -2013-09-21 Eric Botcazou - - * config/ia64/predicates.md (ia64_cbranch_operator): Accept unordered - comparison operators when -fno-trapping-math is in effect. - * config/ia64/ia64.c (ia64_expand_compare): Add support for unordered - comparison operators in TFmode and assert that unsupported operators - cannot reach here. - (ia64_print_operand): Likewise. - -2013-09-21 Jan Hubicka - - * x86-tune.def (partial_reg_stall): Disable for CoreI7 and newer. - (sse_typeless_stores): Enable for core - (sse_load0_by_pxor): Likewise. - (four_jump_limit): Disable for core. - (pad_returns): Likewise. - (avoid_vector_decode): Likewise. - (fuse_cmp_and_branch): Enable for cores. - * i386.c (x86_accumulate_outgoing_args): Disable for cores. - -2013-09-20 John David Anglin - - PR middle-end/56791 - * config/pa/pa.c (pa_option_override): Disable auto increment and - decrement instructions until reload is completed. - - * config/pa/pa-linux.h (TARGET_OS_CPP_BUILTINS): Define - __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2, - and __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. - -2013-09-20 DJ Delorie - Nick Clifton - - * config/rl78/rl78.c: Various whitespace and comment tweaks. - (need_to_save): Save bank 0 on interrupts. - (characterize_address): Strip far address wrappers. - (rl78_as_legitimate_address): Likewise. - (transcode_memory_rtx): Likewise. - (rl78_peep_movhi_p): Disable this peephole after devirt. - (rl78_propogate_register_origins): Forget all origins when a - CLOBBER is seen. - * config/rl78/rl78-virt.md: Various whitespace tweaks. - * config/rl78/rl78-real.md: Various whitespace tweaks. Additional - peephole2's. - * config/rl78/rl78.md (sel_rb): Disable for G10 just in case. - * config/rl78/rl78-expand.md (movqi): Check for subregs of consts. - * config/rl78/rl78.h (LINK_SPEC): Pass -gc-sections unless - relocating. - * config/rl78/constraints.md: Various whitespace and paren tweaks. - -2013-09-20 John David Anglin - - * config/pa/pa.md: In "scc" insn patterns, change output template to - handle const0_rtx in reg_or_0_operand operands. - -2013-09-20 Martin Husemann - - PR target/56875 - * config/vax/vax.c (vax_output_int_move): Use D format specifier. - * config/vax/vax.md (ashldi3, ): Ditto. - -2013-09-20 Richard Biener - - PR middle-end/58484 - * tree-scalar-evolution.c (struct scev_info_str): Shrink by - remembering SSA name version and block index. - (new_scev_info_str): Adjust. - (hash_scev_info): Likewise. Also hash the block index. - (eq_scev_info): Adjust. - (find_var_scev_info): Likewise. - (struct instantiate_cache_entry): Remove. - (struct instantiate_cache_type): Use a htab to map name, block - to chrec. - (instantiate_cache_type::~instantiate_cache_type): Adjust. - (get_instantiated_value_entry): Likewise. - (hash_idx_scev_info, eq_idx_scev_info): New functions. - (instantiate_scev_name): Adjust. - -2013-09-20 Jeff Law - - * tree-ssa-dom.c (record_temporary_equivalences): Add comment. - -2013-09-20 Yufeng Zhang - - * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): - Call aarch64_simd_expand_args to update op[argc]. - -2013-09-20 Basile Starynkevitch - - * plugin.c (parse_plugin_arg_opt): Accept equal sign inside - plugin argument. - -2013-09-20 Basile Starynkevitch - - * gengtype.c (file_rules): Added rule for *.cc files. - (get_output_file_with_visibility): Give fatal message when no - rules found. - -2013-09-20 Renlin Li - - * config/aarch64/aarch64.c (aarch64_expand_prologue): Use plus_constant. - (aarch64_expand_epilogue): Likewise. - (aarch64_legitimize_reload_address): Likewise. - -2013-09-20 Bernd Edlinger - - PR middle-end/57748 - * expr.c (expand_assignment): Remove misalignp code path. - -2013-09-20 Marek Polacek - - PR sanitizer/58413 - * ubsan.c (get_ubsan_type_info_for_type): Use TYPE_SIZE instead of - TYPE_PRECISION. Add asserts. - -2013-09-20 Richard Biener - - PR tree-optimization/58453 - * tree-loop-distribution.c (distribute_loop): Apply the cost - model for -ftree-loop-distribute-patterns, too. - -2013-09-20 Richard Biener - - PR middle-end/58473 - * tree-chrec.h (build_polynomial_chrec): Use gcc_checking_assert, - make type comparison less strict. - -2013-09-20 Alan Modra - - * configure: Regenerate. - * aclocal.m4: Regenerate. - -2013-09-20 Marek Polacek - - PR other/58467 - * doc/extend.texi: Document that attribute used is meant to be used - on variables with static storage duration. - -2013-09-19 Jakub Jelinek - - PR tree-optimization/58472 - * tree-vect-stmts.c (vectorizable_store, vectorizable_load): For - simd_lane_access set inv_p = false. - * omp-low.c (lower_rec_input_clauses): Set TREE_NO_WARNING on - the simduid magic VAR_DECL. - -2013-09-19 Jan Hubicka - - * i386.c (generic_memcpy, generic_memset): Fix 32bit template. - -2013-09-17 Jeff Law - - * tree-ssa-dom.c (record_temporary_equivalences): New function - split out of dom_opt_dom_walker::after_dom_children. - (dom_opt_dom_walker::thread_across_edge): Move common code - in here from dom_opt_dom_walker::after_dom_children. - (dom_opt_dom_walker::after_dom_children): Corresponding simplifictions. - -2013-09-19 Jan Hubicka - - * i386.h (TARGET_GENERIC32, TARGET_GENERIC64): Remove. - (TARGET_GENERIC): Use PROCESOR_GENERIC - (enum processor_type): Unify generic32 and 64. - * i386.md (cpu): Likewise. - * x86-tune.def (use_leave): Enable for generic32. - (avoid_vector_decode, slow_imul_imm32_mem, slow_imul_imm8): Likewise. - * athlon.md: Change generic64 to generic in all occurences. - * i386-c.c (ix86_target_macros_internal): Unify generic64 and 32. - (ix86_target_macros_internal): Likewise. - * driver-i386.c (host_detect_local_cpu): Likewise. - * i386.c (generic64_memcpy, generic64_memset, generic64_cost): Rename - to .. - (generic_memcpy, generic_memset, generic_cost): This one. - (generic32_memcpy, generic32_memset, generic32_cost): Remove. - (m_GENERIC32, m_GENERIC64): Remove. - (m_GENERIC): Turn into one flag. - (processor_target): Unify generic tunnings. - (ix86_option_override_internal): Replace generic32/64 by generic. - (ix86_issue_rate): Likewise. - (ix86_adjust_cost): Likewise. - -2013-09-19 Jan Hubicka - - * cgraph.c (cgraph_create_edge_1): Avoid uninitialized read - of speculative flag. - -2013-09-19 Jakub Jelinek - - * omp-low.c (expand_omp_sections): Always pass len - 1 to - GOMP_sections_start, even if !exit_reachable. - -2013-09-18 Vladimir Makarov - - * lra-constraints.c (need_for_all_save_p): Use macro - HARD_REGNO_CALL_PART_CLOBBERED. - * lra-lives.c (check_pseudos_live_through_calls): Use the macro to - set up pseudo conflict hard regs. - -2013-09-18 Michael Meissner - - PR target/58452 - * config/rs6000/paired.md (movmisalignv2sf): Fix to allow memory - operands. - -2013-09-18 Vladimir Makarov - - PR rtl-optimization/58438 - * lra.c (lra): Clear lra_optional_reload_pseudos in upper loop. - * lra-constraints.c (undo_optional_reloads): Keep optional reloads - from previous subpasses. - -2013-09-18 Richard Earnshaw - - * arm.c (arm_get_frame_offsets): Validate architecture supports - LDRD/STRD before accepting the tuning preference. - (arm_expand_prologue): Likewise. - (arm_expand_epilogue): Likewise. - -2013-09-18 Richard Biener - - PR tree-optimization/58417 - * tree-chrec.c (chrec_fold_plus_1): Assert that we do not - have chrecs with symbols defined in the loop as operands. - (chrec_fold_multiply): Likewise. - * tree-scalar-evolution.c (interpret_rhs_expr): Instantiate - parameters before folding binary operations. - (struct instantiate_cache_entry_hasher): Remove. - (struct instantiate_cache_type): Use a pointer-map. - (instantiate_cache_type::instantiate_cache_type): New function. - (instantiate_cache_type::get): Likewise. - (instantiate_cache_type::set): Likewise. - (instantiate_cache_type::~instantiate_cache_type): Adjust. - (get_instantiated_value_entry): Likewise. - (global_cache): New global. - (instantiate_scev_r, instantiate_scev_poly, instantiate_scev_binary, - instantiate_array_ref, instantiate_scev_convert, instantiate_scev_3, - instantiate_scev_2, instantiate_scev_1): Do not pass along cache. - (instantiate_scev_name): Adjust. - (instantiate_scev): Construct global instead of local cache. - (resolve_mixers): Likewise. - -2013-09-18 Daniel Morris - Paolo Carlini - - PR c++/58458 - * doc/implement-cxx.texi: Fix references to the C++ standards. - -2013-09-18 Jakub Jelinek - - * omp-low.c (copy_var_decl): Copy DECL_ATTRIBUTES. - * tree-vect-data-refs.c (vect_analyze_data_refs): For - simd_lane_access drs, update also DR_ALIGNED_TO. - -2013-09-18 Marek Polacek - - PR sanitizer/58411 - * doc/extend.texi: Document no_sanitize_undefined attribute. - * builtins.c (fold_builtin_0): Don't sanitize function if it has the - no_sanitize_undefined attribute. - -2013-09-18 Nick Clifton - - * config/msp430/msp430.h (ASM_SPEC): Pass -md on to the assembler. - (ASM_DECLARE_FUNCTION_NAME): Define. - -2013-09-17 Trevor Saunders - - * compare-elim.c (find_comparison_dom_walker): New class - (find_comparisons_in_bb): Rename to - find_comparison_dom_walker::before_dom_children - (find_comparisons): Adjust - * domwalk.c (walk_dominator_tree): Rename to dom_walker::walk, and - adjust. - (init_walk_dominator_tree, fini_walk_dominator_tree): Remove - * domwalk.h (dom_walk_data): Convert it To a class dom_walker. - (init_walk_dominator_tree): Remove declaration. - (fini_walk_dominator_tree): Remove declaration. - * fwprop.c (single_def_use_dom_walker): New class - (single_def_use_enter_block): Convert to - single_def_use_dom_walker::before_dom_children. - (single_def_use_leave_block): Convert to - single_def_use_dom_walker::after_dom_children. - (build_single_def_use_links): Adjust. - * gimple-ssa-strength-reduction.c (find_candidates_dom_walker): New - class. - (find_candidates_in_block): Convert to - find_candidates_dom_walker::before_dom_children. - (execute_strength_reduction): Adjust. - * graphite-sese-to-poly.c (struct bsc, build_sese_conditions): Remove. - (sese_dom_walker): New class. - (sese_dom_walker::sese_dom_walker): New constructor. - (sese_dom_walker::~sese_dom_walker): New destructor. - (build_sese_conditions_before): Convert to - sese_dom_walker::before_dom_children. - (build_sese_conditions_after): Convert to - sese_dom_walker::after_dom_children. - (build_poly_scop): Adjust - * tree-into-ssa.c (rewrite_dom_walker): New class - (rewrite_enter_block): Convert to - rewrite_dom_walker::before_dom_children. - (rewrite_leave_block): Convert to - rewrite_dom_walker::after_dom_children. - (rewrite_update_dom_walker): New class. - (rewrite_update_enter_block): Convert to - rewrite_update_dom_walker::before_dom_children. - (rewrite_update_leave_block): Convert to - rewrite_update_dom_walker::after_dom_children. - (rewrite_blocks, rewrite_into_ssa): Adjust. - (mark_def_dom_walker): New class. - (mark_def_dom_walker::mark_def_dom_walker): New constructor. - (mark_def_dom_walker::~mark_def_dom_walker): New destructor. - (mark_def_sites_blocks): Convert to - mark_def_dom_walker::before_dom_children. - (mark_def_site_blocks): Remove. - * tree-ssa-dom.c (dom_opt_dom_walker): New class. - (tree_ssa_dominator_optimize): Adjust. - (dom_thread_across_edge): Convert to method - dom_opt_dom_walker::thread_across_edge. - (dom_opt_enter_block): Convert to member function - dom_opt_dom_walker::before_dom_children. - (dom_opt_leave_block): Convert to member function - dom_opt_dom_walker::after_dom_children. - * tree-ssa-dse.c (dse_dom_walker): New class. - (dse_enter_block): Convert to member function - dse_dom_walker::before_dom_children. - (tree_ssa_dse): Adjust. - * tree-ssa-loop-im.c (invariantness_dom_walker): New class. - (determine_invariantness_stmt): Convert to method - invariantness_dom_walker::before_dom_children. - (determine_invariantness): Remove - (move_computations_dom_walker): New class. - (move_computations_stmt): Convert to method - move_computations_dom_walker::before_dom_children. - (move_computations, tree_ssa_lim): Adjust. - * tree-ssa-phiopt.c (nontrapping_dom_walker): New class. - (nt_init_block): Convert to method - notrappping_dom_walker::before_dom_children. - (nt_fini_block): Convert to method - method nontrapping_dom_walker::after_dom_children. - (get_non_trapping): Adjust. - * tree-ssa-pre.c (eliminate_dom_walker): New class. - (eliminate_bb): Convert to method - eliminate_dom_walker::before_dom_children. - (eliminate_leave_block): Convert to method - eliminate_dom_walker::after_dom_children. - (eliminate): Adjust. - * tree-ssa-strlen.c (strlen_dom_walker): New class. - (strlen_enter_block): Convert to method - strlen_dom_walker::before_dom_children. - (strlen_leave_block): Convert to method - method strlen_dom_walker::after_dom_children. - (tree_ssa_strlen): Adjust. - * tree-ssa-uncprop.c (uncprop_dom_walker): New class. - (tree_ssa_uncprop): Adjust. - (uncprop_leave_block): Convert to method - uncprop_dom_walker::after_dom_children. - (uncprop_leave_block): Convert to method - uncprop_dom_walker::before_dom_children. - -2013-09-18 Bin Cheng - - * config/arm/arm.c (thumb1_reorg): Search for flag setting insn before - branch in same basic block. Check both src and dest of the move insn. - -2013-09-17 Nick Clifton - - * config/rl78/rl78-real.md (bf): New pattern. - (bt): New pattern. - * config/rl78/rl78.c (rl78_print_operand_1): Handle %B. - (rl78_print_operand): Do not put a # before a %B. - * config/rl78/rl78.opt: Tweak doc strings. - -2013-09-17 DJ Delorie - - * config/rl78/constraints.md (Wcv): Allow up to $r31. - * config/rl78/rl78.c (rl78_asm_file_start: Likewise. - (rl78_option_override): Likewise, if -mallregs. - (is_virtual_register): Likewise. - * config/rl78/rl78.h (reg_class): Extend VREGS to $r31. - (REGNO_OK_FOR_BASE_P): Likewise. - * config/rl78/rl78.opt (-mallregs): New. - -2013-09-17 Nick Clifton - - * config/rl78/rl78.c (need_to_save): Change return type to bool. - For interrupt functions: save all call clobbered registers if the - interrupt handler is not a leaf function. - (rl78_expand_prologue): Always recompute the frame information. - For interrupt functions: only select bank 0 if one of the bank 0 - registers is going to be psuhed. - -2013-09-17 DJ Delorie - - * config/rl78/constraints.md: For each W* constraint, rename to C* - and create a W* constraint that checks for an optional ES: prefix - pattern also. - * config/rl78/rl78.md (UNS_ES_ADDR): New. - (es_addr): New. Used to wrap far addresses. - * config/rl78/rl78-protos.h (rl78_es_addr): New. - (rl78_es_base): New. - * config/rl78/rl78.c (rl78_as_legitimate_address): Accept "unspec" - wrapped far addresses. - (rl78_print_operand_1): Unwrap far addresses before processing. - (rl78_lo16): Wrap far addresses in unspecs. - (rl78_es_addr): New. - (rl78_es_base): New. - (insn_ok_now): Check for not-yet-wrapped far addresses. - (transcode_memory_rtx): Properly re-wrap far addresses. - -2013-09-17 Sebastian Huber - - * config/sparc/t-rtems: Add leon3 multilibs. - -2013-09-17 Cong Hou - - * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Fix a bug - when checking the dot production pattern. The type of rhs operand - of multiply is now checked correctly. - -2013-09-17 Jeff Law - - * tree-ssa-dom.c (cprop_into_successor_phis): Also propagate - edge implied equivalences into successor phis. - * tree-ssa-threadupdate.c (phi_args_equal_on_edges): Moved into - here from tree-ssa-threadedge.c. - (mark_threaded_blocks): When threading through a joiner, if both - successors of the joiner's clone reach the same block, verify the - PHI arguments are equal. If not, cancel the jump threading request. - * tree-ssa-threadedge.c (phi_args_equal_on_edges): Moved into - tree-ssa-threadupdate.c - (thread_across_edge): Don't check PHI argument equality when - threading through joiner block here. - -2013-09-17 Andrew MacLeod - - * tree-flow.h (ssa_undefined_value_p): Remove prototype. - * tree-ssa.c (ssa_undefined_value_p): Move pass independent parts here. - (warn_uninit, warn_uninitialized_vars, - execute_early_warn_uninitialized, make_pass_early_warn_uninitialized): - Move to tree-ssa-uninit.c. - * tree-ssa-uninit.c (ssa_undefined_value_p): Move to tree-ssa.c. - (has_undefined_value_p): New. Pass dependant parts of - ssa_undefined_value_p. - (uninit_undefined_value_p): Use has_undefined_value_p. - (warn_uninit, warn_uninitialized_vars, - execute_early_warn_uninitialized, make_pass_early_warn_uninitialized): - Move from tree-ssa.c. - * tree-ssa.h: Adjust prototypes. - -2013-09-17 Jan Hubicka - - PR middle-end/58332 - * cif-code.def (FUNCTION_NOT_OPTIMIZED): New CIF code. - * ipa-inline.c (can_inline_edge_p): Do not downgrade - FUNCTION_NOT_OPTIMIZED. - * ipa-inline-analysis.c (compute_inline_parameters): Function - not optimized is not inlinable unless it is alwaysinline. - (inline_analyze_function): Force calls in not optimized - function not inlinable. - -2013-09-17 Jan Hubicka - - PR middle-end/58329 - * ipa-devirt.c (ipa_devirt): Be ready for symtab_nonoverwritable_alias - to return NULL. - * ipa.c (function_and_variable_visibility): Likewise. - * ipa-profile.c (ipa_profile): Likewise. - -2013-09-17 Bernd Edlinger - - PR ipa/58398 - * cgraph.c (cgraph_function_body_availability): Check for ifunc - attribute, and don't inline the resolver in this case. - -2013-09-17 Teresa Johnson - - * coverage.c (get_coverage_counts): Add missing newline. - -2013-09-17 Kyrylo Tkachov - - PR tree-optimization/58088 - * fold-const.c (mask_with_trailing_zeros): New function. - (fold_binary_loc): Make sure we don't recurse infinitely - when the X in (X & C1) | C2 is a tree of the form (Y * K1) & K2. - Use mask_with_trailing_zeros where appropriate. - -2013-09-17 Yuri Rumyantsev - - * config/i386/i386.c (distance_agu_use_in_bb) : Proper initialization - of 'prev' var to get better distance estimation. - -2013-09-17 Eric Botcazou - - * tree-inline.h (struct copy_body_data): Add transform_parameter. - * tree-inline.c (is_parameter_of): New predicate. - (remap_gimple_op_r): Do not propagate TREE_THIS_NOTRAP on MEM_REF if - a parameter has been remapped. - (copy_tree_body_r): Likewise on INDIRECT_REF and MEM_REF. - (optimize_inline_calls): Initialize transform_parameter. - (copy_gimple_seq_and_replace_locals): Likewise. - (tree_function_versioning): Likewise. - (maybe_inline_call_in_expr): Likewise. - -2013-09-17 Nick Clifton - - * config/msp430/msp430-protos.h: Add prototypes for new functions. - * config/msp430/msp430.c (msp430_preserve_reg_p): Add support for - interrupt handlers. - (is_attr_func): New function. - (msp430_is_interrupt_func): New function. - (is_naked_func): New function. - (is_reentrant_func): New function. - (is_critical_func): New function. - (msp430_start_function): Add annotations for function attributes. - (msp430_attr): New function. - (msp430_attribute_table): New. - (msp430_function_section): New function. - (TARGET_ASM_FUNCTION_SECTION): Define. - (msp430_builtin): New enum. - (msp430_init_builtins): New function. - (msp430_builtin_devl): New function. - (msp430_expand_builtin): New function. - (TARGET_INIT_BUILTINS): Define. - (TARGET_EXPAND_BUILTINS): Define. - (TARGET_BUILTIN_DECL): Define. - (msp430_expand_prologue): Add support for naked, interrupt, - critical and reentrant functions. - (msp430_expand_epilogue): Likewise. - (msp430_print_operand): Handle 'O' character. - * config/msp430/msp430.h (TARGET_CPU_CPP_BUILTINS): Define - NO_TRAMPOLINES. - * config/msp430/msp430.md (unspec): Add UNS_DINT, UNS_EINT, - UNS_PUSH_INTR, UNS_POP_INTR, UNS_BIC_SR, UNS_BIS_SR. - (pushm): Use a 'n' rather than an 'i' constraint. - (msp_return): Add generation of the interrupt return instruction. - (disable_interrupts): New pattern. - (enable_interrupts): New pattern. - (push_intr_state): New pattern. - (pop_intr_state): New pattern. - (bic_SR): New pattern. - (bis_SR): New pattern. - * doc/extend.texi: Document MSP430 function attributes and builtin - functions. - -2013-09-17 Richard Biener - - PR tree-optimization/58432 - * tree-loop-distribution.c (tree_loop_distribution): Also - scan PHIs for outside loop uses and seed a partition from them. - -2013-09-17 Bin Cheng - - * gimple-ssa-strength-reduction.c (backtrace_base_for_ref): New. - (restructure_reference): Call backtrace_base_for_ref. - -2013-09-17 Alan Modra - - PR target/57589 - * config/rs6000/driver-rs6000.c (elf_platform): Revert 2013-06-11 - patch. - -2013-09-16 DJ Delorie - - * config/rl78/rl78.c (rl78_asm_file_start): Specify alternate - vregs location for RL78/G10. - (rl78_expand_prologue): Avoid SEL on G10. - (rl78_expand_epilogue): Likewise. - (rl78_peep_movhi_p): Can't move a constant to memory in HImode. - * config/rl78/rl78.h (TARGET_CPU_CPP_BUILTINS): Define - __RL78_G10__ when appropriate. - (ASM_SPEC): Pass -mg10 along to the assembler. - * config/rl78/rl78.md (sel_rb): Disable for G10. - * config/rl78/rl78.opt: Add -mg10 option. - * config/rl78/t-rl78: Add -mg10 multilib. - -2013-09-16 Xinliang David Li - - * tree-if-conv.c (main_tree_if_conversion): Check new flag. - * omp-low.c (omp_max_vf): Ditto. - (expand_omp_simd): Ditto. - * tree-vectorizer.c (vectorize_loops): Ditto. - (gate_vect_slp): Ditto. - (gate_increase_alignment): Ditto. - * tree-ssa-pre.c (inhibit_phi_insertion): Ditto. - * tree-ssa-loop.c (gate_tree_vectorize): Ditto. - (gate_tree_vectorize): Name change. - (tree_vectorize): Ditto. - (pass_vectorize::gate): Call new function. - (pass_vectorize::execute): Ditto. - * opts.c: O3 default setting change. - (finish_options): Check new flag. - * doc/invoke.texi: Document new flags. - * common.opt: New flags. - -2013-09-16 Andreas Schwab - - * doc/tm.texi.in (Cond Exec Macros): Remove node. - (Condition Code): Don't reference it. - * doc/tm.texi: Regenerate. - -2013-09-16 Vladimir Makarov - - PR middle-end/58418 - * lra-constraints.c (undo_optional_reloads): Consider all optional - reload even if it did not get a hard reg. - -2013-09-16 Teresa Johnson - - * dumpfile.c (dump_loc): Remove newline emission. - * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Add newline - emission to dump_printf_loc calls where missing. - (vect_mark_for_runtime_alias_test): Ditto. - (vect_analyze_data_ref_dependence): Ditto. - (vect_analyze_data_ref_dependences): Ditto. - (vect_slp_analyze_data_ref_dependence): Ditto. - (vect_slp_analyze_data_ref_dependences): Ditto. - (vect_compute_data_ref_alignment): Ditto. - (vect_update_misalignment_for_peel): Ditto. - (vect_verify_datarefs_alignment): Ditto. - (vector_alignment_reachable_p): Ditto. - (vect_get_data_access_cost): Ditto. - (vect_enhance_data_refs_alignment): Ditto. - (vect_find_same_alignment_drs): Ditto. - (vect_analyze_data_refs_alignment): Ditto. - (vect_analyze_group_access): Ditto. - (vect_analyze_data_ref_access): Ditto. - (vect_analyze_data_ref_accesses): Ditto. - (vect_prune_runtime_alias_test_list): Ditto. - (vect_analyze_data_refs): Ditto. - (vect_create_addr_base_for_vector_ref): Ditto. - (vect_create_data_ref_ptr): Ditto. - (vect_grouped_store_supported): Ditto. - (vect_grouped_load_supported): Ditto. - * value-prof.c (check_counter): Ditto. - (check_ic_target): Ditto. - * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Ditto. - (vect_recog_widen_mult_pattern): Ditto. - (vect_recog_widen_sum_pattern): Ditto. - (vect_recog_over_widening_pattern): Ditto. - (vect_recog_widen_shift_pattern): Ditto. - (vect_recog_rotate_pattern): Ditto. - (vect_recog_vector_vector_shift_pattern): Ditto. - (vect_recog_divmod_pattern): Ditto. - (vect_recog_mixed_size_cond_pattern): Ditto. - (vect_recog_bool_pattern): Ditto. - (vect_pattern_recog_1): Ditto. - (vect_pattern_recog): Ditto. - * tree-vect-loop.c (vect_determine_vectorization_factor): Ditto. - (vect_is_simple_iv_evolution): Ditto. - (vect_analyze_scalar_cycles_1): Ditto. - (vect_get_loop_niters): Ditto. - (vect_analyze_loop_1): Ditto. - (vect_analyze_loop_form): Ditto. - (vect_analyze_loop_operations): Ditto. - (vect_analyze_loop_2): Ditto. - (vect_analyze_loop): Ditto. - (report_vect_op): Ditto. - (vect_is_slp_reduction): Ditto. - (vect_is_simple_reduction_1): Ditto. - (vect_get_known_peeling_cost): Ditto. - (vect_estimate_min_profitable_iters): Ditto. - (vect_model_reduction_cost): Ditto. - (vect_model_induction_cost): Ditto. - (get_initial_def_for_induction): Ditto. - (vect_create_epilog_for_reduction): Ditto. - (vectorizable_reduction): Ditto. - (vectorizable_induction): Ditto. - (vectorizable_live_operation): Ditto. - (vect_loop_kill_debug_uses): Ditto. - (vect_transform_loop): Ditto. - * tree-vect-stmts.c (vect_mark_relevant): Ditto. - (vect_stmt_relevant_p): Ditto. - (process_use): Ditto. - (vect_mark_stmts_to_be_vectorized): Ditto. - (vect_model_simple_cost): Ditto. - (vect_model_promotion_demotion_cost): Ditto. - (vect_model_store_cost): Ditto. - (vect_get_store_cost): Ditto. - (vect_model_load_cost): Ditto. - (vect_get_load_cost): Ditto. - (vect_init_vector_1): Ditto. - (vect_get_vec_def_for_operand): Ditto. - (vect_finish_stmt_generation): Ditto. - (vectorizable_call): Ditto. - (vectorizable_conversion): Ditto. - (vectorizable_assignment): Ditto. - (vectorizable_shift): Ditto. - (vectorizable_operation): Ditto. - (vectorizable_store): Ditto. - (vectorizable_load): Ditto. - (vectorizable_condition): Ditto. - (vect_analyze_stmt): Ditto. - (vect_transform_stmt): Ditto. - (vect_is_simple_use): Ditto. - * tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Ditto. - (vect_can_advance_ivs_p): Ditto. - (vect_update_ivs_after_vectorizer): Ditto. - (vect_do_peeling_for_loop_bound): Ditto. - (vect_gen_niters_for_prolog_loop): Ditto. - (vect_update_inits_of_drs): Ditto. - (vect_create_cond_for_alias_checks): Ditto. - * tree-vect-slp.c (vect_get_and_check_slp_defs): Ditto. - (vect_build_slp_tree_1): Ditto. - (vect_supported_load_permutation_p): Ditto. - (vect_analyze_slp_instance): Ditto. - (vect_analyze_slp): Ditto. - (vect_make_slp_decision): Ditto. - (vect_detect_hybrid_slp): Ditto. - (vect_bb_vectorization_profitable_p): Ditto. - (vect_slp_analyze_bb_1): Ditto. - (vect_update_slp_costs_according_to_vf): Ditto. - (vect_get_mask_element): Ditto. - (vect_transform_slp_perm_load): Ditto. - (vect_schedule_slp_instance): Ditto. - (vect_schedule_slp): Ditto. - (vect_slp_transform_bb): Ditto. - * profile.c (read_profile_edge_counts): Ditto. - (compute_branch_probabilities): Ditto. - * coverage.c (get_coverage_counts): Ditto. - -2013-09-16 Diego Novillo - - * tree-core.h: Add missing comment lines from refactoring of tree.h. - -2013-09-16 Jan Hubicka - - * gimple-fold.c (can_refer_decl_in_current_unit_p): Do not accept - abstract functions; for static functions check the presence of body. - -2013-09-16 James Greenhalgh - - * config/aarch64/aarch64-simd-builtins.def (fma): New. - * config/aarch64/aarch64-simd.md - (aarch64_mla_elt): New. - (aarch64_mla_elt_): Likewise. - (aarch64_mls_elt): Likewise. - (aarch64_mls_elt_): Likewise. - (aarch64_fma4_elt): Likewise. - (aarch64_fma4_elt_): Likewise. - (aarch64_fma4_elt_to_128v2df): Likewise. - (aarch64_fma4_elt_to_64df): Likewise. - (fnma4): Likewise. - (aarch64_fnma4_elt): Likewise. - (aarch64_fnma4_elt_): Likewise. - (aarch64_fnma4_elt_to_128v2df): Likewise. - (aarch64_fnma4_elt_to_64df): Likewise. - * config/aarch64/iterators.md (VDQSF): New. - * config/aarch64/arm_neon.h - (vfm_lane_f<32, 64>): Convert to C implementation. - (vml_lane_<16, 32, 64>): Likewise. - -2013-09-16 James Greenhalgh - - * config/aarch64/aarch64-simd.md (aarch64_mul3_elt): New. - (aarch64_mul3_elt_): Likewise. - (aarch64_mul3_elt_to_128df): Likewise. - (aarch64_mul3_elt_to_64v2df): Likewise. - * config/aarch64/iterators.md (VEL): Also handle DFmode. - (VMUL): New. - (VMUL_CHANGE_NLANES) Likewise. - (h_con): Likewise. - (f): Likewise. - * config/aarch64/arm_neon.h - (vmul_lane_<16,32,64>): Convert to C implementation. - -2013-09-16 James Greenhalgh - - * config/aarch64/arm_neon.h - (vcvtx_high_f32_f64): Fix parameters. - -2013-09-16 Jan-Benedict Glaw - Uros Bizjak - - * config/alpha.c: Include tree-ssanames.h. - -2013-09-16 Richard Biener - - * tree-loop-distribution.c (enum rdg_dep_type): Add control_dd. - (dot_rdg_1): Handle control_dd. - (create_edge_for_control_dependence): New function. - (create_rdg_edges): Add control dependences if asked for. - (build_rdg): Likewise. - (generate_loops_for_partition): If there are not necessary - control stmts remove all their dependencies. - (collect_condition_stmts, rdg_flag_loop_exits): Remove. - (distribute_loop): Pass on control dependences. - (tree_loop_distribution): Compute control dependences and remove - restriction on number of loop nodes. - -2013-09-16 Jakub Jelinek - - * ipa-prop.c (ipa_compute_jump_functions_for_edge): Return early - for internal calls. - -2013-09-16 Richard Sandiford - - * cse.c (try_const_anchors): Punt on CC modes. - -2013-09-15 Jan-Benedict Glaw - - * config/vax/constraints.md (T): Add missing CONSTANT_P check. - -2013-09-14 John David Anglin - - PR target/58382 - * config/pa/pa.c (pa_expand_prologue): Change mode in gen_rtx_POST_INC - calls to word_mode. - -2013-09-14 Iain Sandoe - - PR target/48094 - * config/darwin.c (darwin_objc2_section): Note if ObjC Metadata is - seen. - (darwin_objc1_section): Likewise. - (darwin_file_end): Emit Image Info section when required. - -2013-09-14 Jan Hubicka - - * tree-into-ssa.c (gate_into_ssa): New. - (pass_data_build_ssa): Use it. - * cgraph.h (expand_thunk): Update prototype. - * cgraphunit.c (analyze_function): Expand thunks early. - (expand_thunk): Fix DECL_CONTEXT of reust_decl; - build proper cgraph; set in_ssa_p; clear bogus TREE_ASM_WRITTEN; - set lowered flag; do not add new function. - (assemble_thunks_and_aliases): Update. - * tree-ssa.c (gate_init_datastructures): New gate. - (pass_data_init_datastructures): Use it. - -2013-09-14 Iain Sandoe - - PR target/58269 - * config/i386/i386.c (ix86_function_arg_regno_p): Make Darwin use the - xmm register set described in the psABI. - -2013-09-13 Evgeny Gavrin - - * dwarf2out.c (should_emit_struct_debug): Add check - for type_decl variable is not NULL. - -2013-09-13 Jacek Caban - - * config.gcc: Use new winnt-c.c target hooks - * config/t-winnt: New file - * config/winnt-c.c: New file - * doc/tm.texi.in: Document new hook - * doc/tm.texi: Regenerated - -2013-09-13 Jan Hubicka - - PR middle-end/58094 - * ipa-inline.c (check_callers): New function. - (check_caller_edge): Remove. - (want_inline_function_to_all_callers_p): Also permit alises that are - called dirrectly. - (inline_to_all_callers): Terminate the walk when devirtualization - introduce new calls. - -2013-09-13 Jan Hubicka - - * ipa-inline-analysis.c (struct growth_data): Add node. - (do_estimate_growth_1): Fix detection of recursion. - -2013-09-13 Jakub Jelinek - - PR tree-optimization/58392 - * tree-cfg.c (move_sese_region_to_fn): Rename loop variable - to avoid shadowing of outer loop variable. If - saved_cfun->has_simduid_loops or saved_cfun->has_force_vect_loops, - replace_by_duplicate_decl simduid of loops that have it set and - set dest_cfun->has_simduid_loops and/or - dest_cfun->has_force_vect_loops. - * omp-low.c (build_outer_var_ref): Call maybe_lookup_decl_in_outer_ctx - instead of maybe_lookup_decl. - * tree-inline.c (copy_loops): Change blocks_to_copy argument to id. - Use id->blocks_to_copy instead of blocks_to_copy. Adjust recursive - call. Copy over force_vect and copy and remap simduid. Set - cfun->has_simduid_loops and/or cfun->has_force_vect_loops. - (copy_cfg_body): Remove blocks_to_copy argument. Use - id->blocks_to_copy instead of blocks_to_copy. Adjust copy_loops - caller. Don't set cfun->has_simduid_loops and/or - cfun->has_force_vect_loops here. - (copy_body): Remove blocks_to_copy argument. Adjust copy_cfg_body - caller. - (expand_call_inline, tree_function_versioning): Adjust copy_body - callers. - -2013-09-13 Martin Jambor - - PR bootstrap/58388 - * ipa-prop.c (try_make_edge_direct_simple_call): Be less strict in - the assert if the edge was a speculative one. - -2013-09-13 Richard Biener - - * tree-data-ref.h (known_dependences_p): Move here ... - * tree-loop-distribution.c (known_dependences_p): ... from here. - (dump_rdg_component, debug_rdg_component): Remove. - (dump_rdg): Adjust. - (generate_loops_for_partition): Use gimple_uid instead of - relying on matching stmt visit order. - (rdg_build_partitions): Take starting stmt vector. - (ldist_gen): Merge into ... - (distribute_loop): ... this function. Do not compute starting - vertices vector. - * tree-cfg.c (gimple_duplicate_bb): Copy UID for PHIs. - -2013-09-13 Kyrylo Tkachov - - * config/arm/arm.md (arm_cmpsi_insn): Split rI alternative. - Set type attribute correctly. Set predicable_short_it attribute. - (cmpsi_shiftsi): Remove %? from output template. - -2013-09-13 Richard Biener - - * tree-loop-distribution.c (struct rdg_component, - rdg_defs_used_in_other_loops_p, free_rdg_components, - rdg_build_components): Remove. - (stmts_from_loop): Do not record virtual PHIs. - (generate_loops_for_partition): Skip virtual PHIs. - (build_rdg_partition_for_component): Rename to ... - (build_rdg_partition_for_vertex): ... this and adjust. - (rdg_build_partitions): Take a vector of starting vertices - instead of components. Remove unnecessary leftover handling. - (ldist_gen): Do not build components or record other stores. - (distribute_loop): Do not distribute loops containing stmts - with side-effects. - -2013-09-13 Christian Bruel - - PR target/58314 - * config/sh/sh.md (mov_reg_reg): Allow memory reloads. - -2013-09-13 Kai Tietz - - * config.gcc: Separate cases for mingw and cygwin targets, - and add 64-bit cygwin target case. - - * config/i386/winnt-cxx.c (i386_pe_type_dllexport_p): Don't - dll-export inline-functions. - * config/i386/winnt.c (i386_pe_determine_dllexport_p): Likewise. - -2013-09-13 Jeff Law - - PR middle-end/58387 - Revert: - 2013-09-06 Jeff Law - - * tree-ssa-dom.c (cprop_into_successor_phis): Also propagate - edge implied equivalences into successor phis. - -2013-09-12 DJ Delorie - - * config/rl78/rl78-virt.md: Change from | to \; for asm line - separators. - -2013-09-12 Brooks Moses - - PR driver/42955 - * Makefile.in: Do not install driver binaries in $(target)/bin. - -2013-09-12 DJ Delorie - - * config/rl78/rl78.opt (mrelax): New. - * config/rl78/rl78.h (ASM_SPEC): New, pass on -mrelax to gas. - * config/rl78/rl78.h (LINK_SPEC): New, pass on -mrelax to ld. - - * config/rl78/rl78.c (rl78_expand_prologue): Use AX to copy - between SP and FP. - (rl78_expand_epilogue): Likewise. - -2013-09-12 Vladimir Makarov - - PR middle-end/58335 - * lra-eliminations.c (remove_reg_equal_offset_note): New. - (eliminate_regs_in_insn): Rewrite frame pointer to hard frame - pointer elimination with using remove_reg_equal_offset_note. - -2013-09-12 DJ Delorie - - * config/msp430/: New port. - * config.gcc (msp430): Added. - * doc/invoke.texi: Document MSP430 options. - * doc/install.texi: Document msp430-elf - * doc/md.texi: Document msp430-elf - * doc/contrib.texi: Document msp430-elf - - * cfgexpand.c (expand_debug_expr): Avoid sign-extending SImode to - PSImode. - -2013-09-12 Martin Jambor - - PR ipa/58389 - * ipa-prop.c (remove_described_reference): Give up if the edge in the - reference descriptor is NULL. - (ipa_edge_removal_hook): If owning a reference descriptor, set its - edge to NULL. - -2013-09-12 Andrew MacLeod - - * tree-flow.h (FREE_SSANAMES): Move to tree-ssanames.c - (SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS, ptr_info_def, - num_ssa_names, ssa_name): Move to tree-ssanames.h + prototypes. - * tree-flow-inline.h (make_ssa_name, copy_ssa_name, duplicate_ssa_name, - make_temp_ssa_name): move to tree-ssanames.h - * tree-ssa-alias.h: Move prototype. - * tree-ssa.h: Include tree-ssanames.h. - * tree-ssanames.c (FREE_SSANAMES): Move to here. - * tree-ssanames.h: New. Move items from tree-flow*.h - * Makefile.in (tree-ssanames.h): Add to tree-ssanames.o and GTFILES. - -2013-09-12 Richard Biener - - PR tree-optimization/58404 - * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also - propagate non-invariant addresses into dereferences wrapped - in component references. - -2013-09-12 Richard Biener - - PR tree-optimization/58402 - * passes.def: Move pass_late_warn_uninitialized later. - -2013-09-12 Andrew MacLeod - - * tree-ssa.h: New. Move content from tree-flow.h and - tree-flow-inline.h. - * tree-flow.h (_edge_var_map, edge_var_map_vector): Move to tree-ssa.h. - Move prototypes belonging to tree-ssa.c. - * tree-flow-inline.h (redirect_edge_var_map_def, - redirect_edge_var_map_result, redirect_edge_var_map_location): Move to - tree-ssa.h. - * gimple.h: Adjust prototypes. - * tree-ssa.c (useless_type_conversion_p, types_compatible_p): Move - to... - * gimple.c (useless_type_conversion_p, types_compatible_p): Here. - * tree.h: Move prototype to tree-ssa.h. - * gengtype.c (open_base_files): Replace tree-flow.h with tree-ssa.h. - * Makefile.in: (TREE_SSA_H, TREE_FLOW_H): Adjust dependencies. - * alias.c, asan.c, builtins.c, calls.c, cfgexpand.c, cfghooks.c, - cfgloop.c, cfgloopmanip.c, cgraph.c, cgraphbuild.c, cgraphclones.c, - cgraphunit.c, dse.c, except.c, expr.c, final.c, fold-const.c, - ggc-page.c, gimple-fold.c, gimple-iterator.c, gimple-low.c, - gimple-pretty-print.c, gimple-ssa-strength-reduction.c, - gimple-streamer-in.c, gimple-streamer-out.c, gimple.c, gimplify.c, - graphite-blocking.c, graphite-clast-to-gimple.c, - graphite-dependences.c, graphite-interchange.c, - graphite-optimize-isl.c, graphite-poly.c, graphite-scop-detection.c, - graphite-sese-to-poly.c, graphite.c, ipa-cp.c, ipa-inline-analysis.c, - ipa-inline-transform.c, ipa-inline.c, ipa-prop.c, ipa-pure-const.c, - ipa-reference.c, ipa-split.c, ipa-utils.c, - loop-init.c, lto-cgraph.c, lto-section-in.c, lto-section-out.c, - lto-streamer-in.c, lto-streamer-out.c, lto-streamer.c, omp-low.c, - passes.c, predict.c, print-tree.c, profile.c, sese.c, targhooks.c, - tracer.c, trans-mem.c, tree-call-cdce.c, tree-cfg.c, tree-cfgcleanup.c, - tree-chrec.c, tree-complex.c, tree-data-ref.c, tree-dfa.c, tree-eh.c, - tree-emutls.c, tree-if-conv.c, tree-inline.c, tree-into-ssa.c, - tree-loop-distribution.c, tree-mudflap.c, tree-nested.c, tree-nrv.c, - tree-object-size.c, tree-optimize.c, tree-outof-ssa.c, tree-parloops.c, - tree-phinodes.c, tree-predcom.c, tree-pretty-print.c, tree-profile.c, - tree-scalar-evolution.c, tree-sra.c, tree-ssa*.c, tree-stdarg.c, - tree-streamer-in.c, tree-switch-conversion.c, tree-tailcall.c, - tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop-manip.c, - tree-vect-loop.c, tree-vect-patterns.c, tree-vect-slp.c, - tree-vect-stmts.c, tree-vectorizer.c, tree-vrp.c, tsan.c, - value-prof.c, var-tracking.c, - varpool.c, vtable-verify.c: Replace tree-flow.h with tree-ssa.h - -2013-09-12 Richard Biener - - PR tree-optimization/58396 - * tree-loop-distribution.c (create_rdg_edges): Free unused DDRs. - (build_rdg): Take a loop-nest parameter, fix memleaks. - (distribute_loop): Compute loop-nest here and pass it to build_rdg. - -2013-09-12 Yuri Rumyantsev - - * config/i386/x86-tune.def: Turn on X86_TUNE_AVOID_MEM_OPND_FOR_CMOVE - for SLM. - -2013-09-12 Cameron McInally - - * doc/extend.texi: Fix errors in x86 FMA builtin naming. - The FMA instruction names should have a 'v' prefix. - -2013-09-12 Richard Biener - - * tree-loop-distribution.c (dot_rdg_1): Make graph prettier. - (dot_rdg): Use popen instead of system in optional code. - (remaining_stmts, upstream_mem_writes): Remove global bitmaps. - (already_processed_vertex_p): Adjust. - (has_anti_or_output_dependence, predecessor_has_mem_write, - mark_nodes_having_upstream_mem_writes, has_upstream_mem_writes, - rdg_flag_uses): Remove. - (rdg_flag_vertex): Simplify. - (rdg_flag_vertex_and_dependent): Rely on a correct RDG and - remove recursion. - (build_rdg_partition_for_component): Process the first vertex - of a component only. - (ldist_gen): Do not compute remaining_stmts or upstream_mem_writes. - -2013-09-12 Alan Modra - - * config/rs6000/rs6000.c (toc_relative_expr_p): Use add_cint_operand. - -2013-09-11 DJ Delorie - Nick Clifton - - * config/rl78/predicates.md (rl78_cmp_operator_signed): New. - (rl78_stack_based_mem): New. - * config/rl78/constraints.md (Iv08): New. - (Iv16): New. - (Iv24): New. - (Is09): New. - (Is17): New. - (Is25): New. - (ISsi): New. - (IShi): New. - (ISqi): New. - * config/rl78/rl78-expand.md (movqi): Reject more SUBREG operands. - (movhi): Likewise. - (movsi): Change from expand to insn-and-split. - (ashrsi3): Clobber AX. - (lshrsi3): New. - (ashlsi3): New. - (cbranchsi4): New. - * config/rl78/rl78.md (CC_REG): Fix. - (addsi3): Allow memory and immediate operands. - (addsi3_internal): Split into... - (addsi3_internal_virt): ...new, and ... - (addsi3_internal_real): ...new. - (subsi): New. - (subsi3_internal_virt): New. - (subsi3_internal_real): New. - (mulsi3): Add memory operand. - (mulsi3_rl78): Likewise. - (mulsi3_g13): Likewise. - * config/rl78/rl78-real.md (cbranchqi4_real_signed): New. - (cbranchqi4_real): Add more constraint options. - (cbranchhi4_real): Expand pattern. - (cbranchhi4_real_signed): New. - (cbranchhi4_real_inverted): New. - (cbranchsi4_real_lt): New. - (cbranchsi4_real_ge): New. - (cbranchsi4_real_signed): New. - (cbranchsi4_real): New. - (peephole2): New. - * config/rl78/rl78-virt.md (ashrsi3_virt): Add custom cases for - constant shifts. - (lshrsi3_virt): Likewise. - (ashlsi3_virt): Likewise. - (cbranchqi4_virt_signed): New. - (cbranchhi4_virt_signed): New. - (cbranchsi4_virt): New. - * config/rl78/rl78.c: Whitespace fixes throughout. - (move_elim_pass): New. - (pass_data_rl78_move_elim): New. - (pass_rl78_move_elim): New. - (make_pass_rl78_move_elim): New. - (rl78_devirt_info): Run devirt earlier. - (rl78_move_elim_info): New. - (rl78_asm_file_start): Register it. - (rl78_split_movsi): New. - (rl78_as_legitimate_address): Allow virtual base registers when - appropriate. - (rl78_addr_space_convert): Remove spurious debug stuff. - (rl78_print_operand_1): Add z,s,S,r,E modifiers. - (rl78_print_operand): More cases for not printing '#'. - (rl78_expand_compare): Remove most of the logic. - (content_memory): New. - (clear_content_memory): New. - (get_content_index): New. - (get_content_name): New. - (display_content_memory): New. - (update_content): New. - (record_content): New. - (already_contains): New. - (insn_ok_now): Re-recog insns with virtual registers. - (add_postponed_content_update): New. - (process_postponed_content_update): New. - (gen_and_emit_move): New. - (transcode_memory_rtx): Record new location content. - Use gen_and_emit_move. - (force_into_acc): New. - (move_to_acc): Use gen_and_emit_move. - (move_from_acc): Likewise. - (move_acc_to_reg): Likewise. - (move_to_x): Likewise. - (move_to_hl): Likewise. - (move_to_de): Likewise. - (rl78_alloc_physical_registers_op1): Record location content. - (has_constraint): New. - (rl78_alloc_physical_registers_op2): Record location content. - Optimize use of HL. - (rl78_alloc_physical_registers_ro1): Likewise. - (rl78_alloc_physical_registers_cmp): Likewise. - (rl78_alloc_physical_registers_umul): Likewise. - (rl78_alloc_address_registers_macax): New. - (rl78_alloc_physical_registers): Initialize and set location - content memory as needed. - (rl78_reorg): Make sure split2 is called. - (rl78_rtx_costs): New. - -2013-09-11 Richard Sandiford - - * simplify-rtx.c (simplify_unary_operation_1): Use simplify_gen_binary - for (not (neg ...)) and (neg (not ...)) cases. - -2013-09-11 Richard Biener - - PR middle-end/58377 - * passes.def: Split critical edges before late uninit warning passes. - * tree-cfg.c (pass_split_crit_edges): Implement clone method. - -2013-09-11 Jakub Jelinek - - PR tree-optimization/58385 - * fold-const.c (build_range_check): If both low and high are NULL, - use omit_one_operand_loc to preserve exp side-effects. - -2013-09-11 Kyrylo Tkachov - - * config/arm/arm.md (arm_shiftsi3): New alternative l/l/M. - -2013-09-11 Richard Biener - - * tree-data-ref.c (dump_rdg_vertex, debug_rdg_vertex, - dump_rdg_component, debug_rdg_component, dump_rdg, debug_rdg, - dot_rdg_1, dot_rdg, rdg_vertex_for_stmt, create_rdg_edge_for_ddr, - create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices, - stmts_from_loop, known_dependences_p, build_empty_rdg, - build_rdg, free_rdg, rdg_defs_used_in_other_loops_p): Move ... - * tree-loop-distribution.c: ... here. - * tree-data-ref.h (struct rdg_vertex, RDGV_STMT, RDGV_DATAREFS, - RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT, RDG_DATAREFS, - RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT, enum rdg_dep_type, - struct rdg_edge, RDGE_TYPE, RDGE_LEVEL, RDGE_RELATION): Move ... - * tree-loop-distribution.c: ... here. - * tree-loop-distribution.c: Include gimple-pretty-print.h. - (struct partition_s): Add loops member. - (partition_alloc, partition_free, rdg_flag_uses, rdg_flag_vertex, - rdg_flag_vertex_and_dependent, rdg_flag_loop_exits, - build_rdg_partition_for_component, rdg_build_partitions): Adjust. - -2013-09-11 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * config/i386/constraints.md (k): New. - (Yk): Ditto. - * config/i386/i386.c (const regclass_map): Add new mask registers. - (dbx_register_map): Ditto. - (dbx64_register_map): Ditto. - (svr4_dbx_register_map): Ditto. - (ix86_conditional_register_usage): Squash mask registers if AVX512F is - disabled. - (ix86_preferred_reload_class): Disable constants for mask registers. - (ix86_secondary_reload): Do spill of mask register using 32-bit insn. - (ix86_hard_regno_mode_ok): Support new mask registers. - (x86_order_regs_for_local_alloc): Ditto. - * config/i386/i386.h (FIRST_PSEUDO_REGISTER): Update. - (FIXED_REGISTERS): Add new mask registers. - (CALL_USED_REGISTERS): Ditto. - (REG_ALLOC_ORDER): Ditto. - (VALID_MASK_REG_MODE): New. - (FIRST_MASK_REG): Ditto. - (LAST_MASK_REG): Ditto. - (reg_class): Add MASK_EVEX_REGS, MASK_REGS. - (MAYBE_MASK_CLASS_P): New. - (REG_CLASS_NAMES): Add MASK_EVEX_REGS, MASK_REGS. - (REG_CLASS_CONTENTS): Ditto. - (MASK_REGNO_P): New. - (ANY_MASK_REG_P): Ditto. - (HI_REGISTER_NAMES): Add new mask registers. - * config/i386/i386.md (MASK0_REG, MASK1_REG, MASK2_REG, MASK3_REG, - MASK4_REG, MASK5_REG, MASK6_REG, MASK7_REG): Constants for new - mask registers. - (attribute "type"): Add mskmov, msklog. - (attribute "length_immediate"): Support them. - (attribute "memory"): Ditto. - (attribute "prefix_0f"): Ditto. - (*movhi_internal): Support new mask registers. - (*movqi_internal): Ditto. - (define_split): Split out clobber pattern is a logic - insn on mask registers. - (*k): New. - (*andhi_1): Extend to support mask regs. - (*andqi_1): Extend to support mask regs. - (kandn): New. - (define_split): Split and-not to and and not if operands - are not mask regs. - (*_1): Separate HI mode to new pattern... - (*hi_1): This. - (*qi_1): Extend to support mask regs. - (kxnor): New. - (kortestzhi): Ditto. - (kortestchi): Ditto. - (kunpckhi): Ditto. - (*one_cmpl2_1): Remove HImode and handle it... - (*one_cmplhi2_1): ...Here, now with mask registers support. - (*one_cmplqi2_1): Support new mask registers. - (HI/QImode arithmetics splitter): Don't split if mask registers - are used. - (HI/QImode not splitter): Ditto. - * config/i386/predicated.md (mask_reg_operand): New. - (general_reg_operand): Ditto. - -2013-09-11 Alexander Ivchenko - - * doc/invoke.texi: Document fxsr, xsave and xsaveopt options. - * doc/extend.texi: Document fxsr, xsave and xsaveopt builtins. - -2013-09-10 Jeff Law - - PR tree-optimization/58380 - * tree-ssa-threadupdate.c (thread_block): Recognize another case - of threading through a buried loop header. - - * tree-ssa-threadedge.c (thread_around_empty_blocks): Correct - return value for single successor case. - -2013-09-10 Jan Hubicka - - * ipa-devirt.c (ipa_devirt): Enable with LTO. - -2013-09-10 Richard Earnshaw - - PR target/58361 - * arm/vfp.md (combine_vcvt_f32_): Fix pattern to - support conditional execution. - (combine_vcvt_f64_): Likewise. - -2013-09-10 Vladimir Makarov - - * lra.c (lra): Clear lra_optional_reload_pseudos before every - constraint pass. - * lra-constraints.c (curr_insn_transform): Switch on optional reloads. - Check destination too to check move insn. - (undo_optional_reloads): Add check that the original peudo did not - changed its allocation and the optional reload was inherited on last - inheritance pass. Break loop after deciding to keep optional reload. - (lra_undo_inheritance): Add check that inherited pseudo still in - memory. - -2013-09-10 James Greenhalgh - - * config/aarch64/aarch64.md (generic_sched): New. - * config/aarch64/aarch64-generic.md (load): Make conditional - on generic_sched attribute. - (nonload): Likewise. - -2013-09-10 Jan Hubicka - - * lto-cgraph.c: Include ipa-utils.h. - (compute_ltrans_boundary): Also add possible targets into the boundary. - -2013-09-10 Jan Hubicka - - * gimple-fold.c (gimple_get_virt_method_for_binfo): Pass real - VAR_DECL of vtable rather than full expression. - -2013-09-10 Jan Hubicka - Paolo Carlini - - * cgraphunit.c (analyze_functions): Save input_location, set it - to UNKNOWN_LOCATION and restore it at the end. - -2013-09-10 Martin Jambor - - * ipa-cp.c (propagate_constants_topo): Do not ignore SCC - represented by a thunk. - -2013-09-10 Jeff Law - - PR tree-optimization/58343 - * tree-ssa-threadupdate.c (thread_block): Identify and disable - jump threading requests through loop headers buried in the middle - of a jump threading path. - - * tree-ssa-threadedge.c (thread_around_empty_blocks): Fix thinko - in return value/type. - -2013-09-10 Jakub Jelinek - - PR rtl-optimization/58365 - * cfgcleanup.c (merge_memattrs): Also clear MEM_READONLY_P - resp. MEM_NOTRAP_P if they differ, or set MEM_VOLATILE_P if - it differs. - -2013-09-10 Richard Biener - - * tree-data-ref.h (build_rdg): Drop all parameters but loop. - * tree-data-ref.c (create_rdg_vertices): Collect all data - references, signal failure to the caller, use data-ref API. - (build_rdg): Compute data references only once. Maintain lifetime - of data references and data dependences from within RDG. - (free_rdg): Free dependence relations. - * tree-loop-distribution.c (rdg_flag_uses): Drop weird code - inventing extra dependences. - (distribute_loop): Update for RDG API changes. - -2013-09-10 Kai Tietz - - * doc/invoke.texi (fms-extensions): Document changed - behavior for ms-abi targets. - * config/i386/i386.c (ix86_option_override_internal): - Set default value of option -fms-extension for ms-abi targets. - -2013-09-10 Michael Zolotukhin - - * config/i386/i386.c (ix86_expand_movmem): Fix epilogue generation. - -2013-09-10 Alan Modra - - PR target/58330 - * config/rs6000/rs6000.md (bswapdi2_64bit): Disable for volatile mems. - -2013-09-10 Alan Modra - - * config/rs6000/predicates.md (add_cint_operand): New. - (reg_or_add_cint_operand, small_toc_ref): Use add_cint_operand. - * config/rs6000/rs6000.md (largetoc_high_plus): Restrict offset - using add_cint_operand. - (largetoc_high_plus_aix): Likewise. - -2013-09-09 Jakub Jelinek - - PR tree-optimization/58364 - * tree-ssa-reassoc.c (init_range_entry): For BIT_NOT_EXPR on - BOOLEAN_TYPE, only invert in_p and continue with arg0 if - the current range can't be an unconditional true or false. - -2013-09-09 James Greenhalgh - - * config/aarch64/arm_neon.h (vrsqrte_f64): Fix parameter type. - -2013-09-09 Uros Bizjak - - * ipa-prop.c (ipa_modify_call_arguments): Initialize deref_align. - -2013-09-09 Paolo Carlini - - PR c++/43452 - * doc/invoke.texi (-Wdelete-incomplete): Document it. - -2013-09-09 Ian Bolton - - * config/aarch64/aarch64.c (aarch64_preferred_reload_class): Return - NO_REGS for immediate that can't be moved directly into FP_REGS. - -2013-09-09 Kyrylo Tkachov - - * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for - comparison with negated operand. - * config/aarch64/aarch64.md (compare_neg): Match canonical - RTL form. - -2013-09-09 Richard Biener - - PR middle-end/58326 - * cfgloopmanip.c (fix_bb_placements): When fixing the placement - of a subloop record all its block as affecting loop-closed SSA form. - -2013-09-09 Richard Sandiford - - * expmed.c (lshift_value): Take an unsigned HOST_WIDE_INT instead - of an rtx/bitpos pair. - (store_fixed_bit_field): Update accordingly. - -2013-09-09 Richard Sandiford - - * asan.c (asan_emit_stack_protection): Use gen_int_mode instead of - GEN_INT. - * builtins.c (expand_errno_check): Likewise. - * dwarf2cfi.c (init_return_column_size): Likewise. - * except.c (sjlj_mark_call_sites): Likewise. - * expr.c (move_by_pieces_1, store_by_pieces_2): Likewise. - * lra-constraints.c (emit_inc): Likewise. - * ree.c (combine_set_extension): Likewise. - * regmove.c (fixup_match_2): Likewise. - * reload1.c (inc_for_reload): Likewise. - -2013-09-09 Richard Sandiford - - * combine.c (simplify_set, expand_field_assignment, extract_left_shift) - (force_to_mode, simplify_shift_const_1, simplify_comparison): - Use gen_int_mode with the mode of the associated simplify_* call. - * explow.c (probe_stack_range, anti_adjust_stack_and_probe): Likewise. - * expmed.c (expand_shift_1): Likewise. - * function.c (instantiate_virtual_regs_in_insn): Likewise. - * loop-iv.c (iv_number_of_iterations): Likewise. - * loop-unroll.c (unroll_loop_runtime_iterations): Likewise. - * simplify-rtx.c (simplify_binary_operation_1): Likewise. - -2013-09-09 Richard Sandiford - - * asan.c (asan_clear_shadow): Use gen_int_mode with the mode - of the associated expand_* call. - (asan_emit_stack_protection): Likewise. - * builtins.c (round_trampoline_addr): Likewise. - * explow.c (allocate_dynamic_stack_space, probe_stack_range): Likewise. - * expmed.c (expand_smod_pow2, expand_sdiv_pow2, expand_divmod) - (emit_store_flag): Likewise. - * expr.c (emit_move_resolve_push, push_block, emit_single_push_insn_1) - (emit_push_insn, optimize_bitfield_assignment_op, expand_expr_real_1): - Likewise. - * function.c (instantiate_virtual_regs_in_insn): Likewise. - * ifcvt.c (noce_try_store_flag_constants): Likewise. - * loop-unroll.c (unroll_loop_runtime_iterations): Likewise. - * modulo-sched.c (generate_prolog_epilog): Likewise. - * optabs.c (expand_binop, widen_leading, expand_doubleword_clz) - (expand_ctz, expand_ffs, expand_unop): Likewise. - -2013-09-09 Richard Sandiford - - * alias.c (addr_side_effect_eval): Use gen_int_mode with the mode - of the associated gen_rtx_* call. - * caller-save.c (init_caller_save): Likewise. - * combine.c (find_split_point, make_extraction): Likewise. - (make_compound_operation): Likewise. - * dwarf2out.c (mem_loc_descriptor): Likewise. - * explow.c (plus_constant, probe_stack_range): Likewise. - * expmed.c (expand_mult_const): Likewise. - * expr.c (emit_single_push_insn_1, do_tablejump): Likewise. - * reload1.c (init_reload): Likewise. - * valtrack.c (cleanup_auto_inc_dec): Likewise. - * var-tracking.c (adjust_mems): Likewise. - * modulo-sched.c (sms_schedule): Likewise, but use gen_rtx_GT - rather than gen_rtx_fmt_ee. - -2013-09-09 Jan Hubicka - - PR middle-end/58294 - * value-prof.c (gimple_ic): Copy also abnormal edges. - -2013-09-09 Richard Sandiford - - * asan.c (asan_shadow_cst): Use gen_int_mode. - -2013-09-08 Jan Hubicka - - * ipa-profile.c: Add toplevel comment. - (ipa_propagate_frequency_1): Be more conservative when profile is read. - (contains_hot_call_p): New function. - (ipa_propagate_frequency): Set frequencies based on counts when - profile is read. - * predict.c (compute_function_frequency): Use PROFILE_READ gueard for - profile; do not tamper with profile after inlining if it is read. - -2013-09-08 Jan Hubicka - - * ipa-prop.c (try_make_edge_direct_simple_call): Do not special case - speculative edges. - -2013-09-08 Jan Hubicka - - * ipa.c (walk_polymorphic_call_targets): Fix redirection before IPA - summary generation. - -2013-09-08 Jeff Law - - PR bootstrap/58340 - * tree-ssa-threadedge.c (thread_across_edge): Fix initialization - of 'found'. - -2013-09-08 Andi Kleen - - * tree-inline.c (estimate_num_insns): Limit asm cost to 1000. - -2013-09-08 Jan Hubicka - - * ipa.c (walk_polymorphic_call_targets): Fix inliner summary update. - -2013-09-08 Richard Sandiford - - * ira.c (update_equiv_regs): Only call set_paradoxical_subreg - for non-debug insns. - * lra.c (new_insn_reg): Take the containing insn as a parameter. - Only modify lra_reg_info[].biggest_mode if it's non-debug insn. - (collect_non_operand_hard_regs, add_regs_to_insn_regno_info): Update - accordingly. - -2013-09-08 Jan Hubicka - - * cgraphunit.c (walk_polymorphic_call_targets): Permit 0 possible - targets and devirtualize to BUILT_IN_UNREACHABLE. - * timevar.def (TV_IPA_UNREACHABLE): New timevar. - * ipa.c (walk_polymorphic_call_targets): New function. - (symtab_remove_unreachable_nodes): Use it; do not keep all virtual - functions; use the new timevar. - * ipa-devirt.c (maybe_record_node): Do not insert static nodes that - was removed from the program. - (record_binfo): If BINFO corresponds to an anonymous namespace, we may - not consider it in the walk when its vtable is dead. - (possible_polymorphic_call_targets_1): Pass anonymous flag to - record_binfo. - (devirt_variable_node_removal_hook): New function. - (possible_polymorphic_call_targets): Also register - devirt_variable_node_removal_hook. - (ipa_devirt): Do not do non-speculative devirtualization. - (gate_ipa_devirt): One execute if devirtualizing speculatively. - -2013-09-08 Jan Hubicka - - * cgraph.h (varpool_node_hook, varpool_node_hook_list, - varpool_add_node_removal_hook, varpool_add_variable_insertion_hook, - varpool_remove_variable_insertion_hook): Declare. - * varpool.c (varpool_node_hook_list): New structure. - (first_varpool_node_removal_hook, - first_varpool_variable_insertion_hook): New variables. - (varpool_add_node_removal_hook, varpool_remove_node_removal_hook, - varpool_call_node_removal_hooks, varpool_add_variable_insertion_hook, - varpool_remove_variable_insertion_hook, - varpool_call_variable_insertion_hooks): New functions. - (varpool_remove_node): Use it. - -2013-09-08 Paolo Carlini - - PR c++/54941 - * diagnostic.c (diagnostic_build_prefix): When s.file is - "" don't output line and column numbers. - -2013-09-06 Jan Hubicka - - * cgraphunit.c (expand_thunk): Get body before touching arguments. - * lto-streamer-out.c: Stream thunks, too. - * lto-streamer-in.c (input_function): Pop cfun here - (lto_read_body): Instead of here. - -2013-09-06 Caroline Tice - - * doc/install.texi: Add documentation for the --enable-vtable-verify - and the --disable-libvtv configure options. - -2013-09-06 Jeff Law - - * tree-ssa-dom.c (cprop_into_successor_phis): Also propagate - edge implied equivalences into successor phis. - -2013-09-06 Joern Rennecke - - * resource.c (mark_referenced_resources): Handle COND_EXEC. - -2013-09-06 Claudiu Zissulescu - - * resource.c (mark_target_live_regs): Compute resources taking - into account if a call is predicated or not. - -2013-09-06 Eric Botcazou - - * toplev.c (output_stack_usage): Be prepared for suffixes created by - the compiler in the function names. - -2013-09-06 Jan Hubicka - - PR middle-end/58094 - * ipa-inline.c (has_caller_p): New function. - (want_inline_function_to_all_callers_p): Use it. - (sum_callers, inline_to_all_callers): Break out from ... - (ipa_inline): ... here. - -2013-09-06 Jan Hubicka - - * config/i386/i386.c (ix86_hard_regno_mode_ok): AVX modes are valid - only when AVX is enabled. - -2013-09-06 James Greenhalgh - - * config/aarch64/aarch64.md - (*movtf_aarch64): Use neon_dm_2 as type where v8type - is fpsimd_2. - (load_pair): Likewise. - (store_pair): Likewise. - -2013-09-06 James Greenhalgh - - * config/arm/types.md (type): Add "mrs" type. - * config/aarch64/aarch64.md - (aarch64_load_tp_hard): Make type "mrs". - * config/arm/arm.md - (load_tp_hard): Make type "mrs". - * config/arm/cortex-a15.md: Update with new attributes. - * config/arm/cortex-a5.md: Update with new attributes. - * config/arm/cortex-a53.md: Update with new attributes. - * config/arm/cortex-a7.md: Update with new attributes. - * config/arm/cortex-a8.md: Update with new attributes. - * config/arm/cortex-a9.md: Update with new attributes. - * config/arm/cortex-m4.md: Update with new attributes. - * config/arm/cortex-r4.md: Update with new attributes. - * config/arm/fa526.md: Update with new attributes. - * config/arm/fa606te.md: Update with new attributes. - * config/arm/fa626te.md: Update with new attributes. - * config/arm/fa726te.md: Update with new attributes. - -2013-09-06 James Greenhalgh - - * config/aarch64/aarch64.md - (*movti_aarch64): Use "multiple" for type where v8type is "move2". - (*movtf_aarch64): Likewise. - * config/arm/arm.md - (thumb1_movdi_insn): Use "multiple" for type where more than one - instruction is used for a move. - (*arm32_movhf): Likewise. - (*thumb_movdf_insn): Likewise. - -2013-09-06 James Greenhalgh - - * config/arm/types.md (type): Rename fcpys to fmov. - * config/arm/vfp.md - (*arm_movsi_vfp): Rename type fcpys as fmov. - (*thumb2_movsi_vfp): Likewise - (*movhf_vfp_neon): Likewise - (*movhf_vfp): Likewise - (*movsf_vfp): Likewise - (*thumb2_movsf_vfp): Likewise - (*movsfcc_vfp): Likewise - (*thumb2_movsfcc_vfp): Likewise - * config/aarch64/aarch64-simd.md - (move_lo_quad_): Replace type mov_reg with fmovs. - * config/aarch64/aarch64.md - (*movsi_aarch64): Replace type mov_reg with fmovs. - (*movdi_aarch64): Likewise - (*movsf_aarch64): Likewise - (*movdf_aarch64): Likewise - * config/arm/arm.c - (cortexa7_older_only): Rename TYPE_FCPYS to TYPE_FMOV. - * config/arm/iwmmxt.md - (*iwmmxt_movsi_insn): Rename type fcpys as fmov. - * config/arm/arm1020e.md: Update with new attributes. - * config/arm/cortex-a15-neon.md: Update with new attributes. - * config/arm/cortex-a5.md: Update with new attributes. - * config/arm/cortex-a53.md: Update with new attributes. - * config/arm/cortex-a7.md: Update with new attributes. - * config/arm/cortex-a8-neon.md: Update with new attributes. - * config/arm/cortex-a9.md: Update with new attributes. - * config/arm/cortex-m4-fpu.md: Update with new attributes. - * config/arm/cortex-r4f.md: Update with new attributes. - * config/arm/marvell-pj4.md: Update with new attributes. - * config/arm/vfp11.md: Update with new attributes. - -2013-09-06 James Greenhalgh - - * config/aarch64/aarch64.md - (*madd): Fix type attribute. - (*maddsi_uxtw): Likewise. - (*msub): Likewise. - (*msubsi_uxtw): Likewise. - (maddsidi4): Likewise. - (msubsidi4): Likewise. - -2013-09-06 James Greenhalgh - - * config/arm/types.md: Split fdiv as fsqrt, fdiv. - * config/arm/arm.md (core_cycles): Remove fdiv. - * config/arm/vfp.md: - (*sqrtsf2_vfp): Update for attribute changes. - (*sqrtdf2_vfp): Likewise. - * config/aarch64/aarch64.md: - (sqrt2): Update for attribute changes. - * config/arm/arm1020e.md: Update with new attributes. - * config/arm/cortex-a15-neon.md: Update with new attributes. - * config/arm/cortex-a5.md: Update with new attributes. - * config/arm/cortex-a53.md: Update with new attributes. - * config/arm/cortex-a7.md: Update with new attributes. - * config/arm/cortex-a8-neon.md: Update with new attributes. - * config/arm/cortex-a9.md: Update with new attributes. - * config/arm/cortex-m4-fpu.md: Update with new attributes. - * config/arm/cortex-r4f.md: Update with new attributes. - * config/arm/marvell-pj4.md: Update with new attributes. - * config/arm/vfp11.md: Update with new attributes. - -2013-09-06 James Greenhalgh - - * config/arm/types.md - (type): Split f_cvt as f_cvt, f_cvtf2i, f_cvti2f. - * config/aarch64/aarch64.md - (l2): Update with - new attributes. - (fix_trunc2): Likewise. - (fixuns_trunc2): Likewise. - (float2): Likewise. - * config/arm/vfp.md - (*truncsisf2_vfp): Update with new attributes. - (*truncsidf2_vfp): Likewise. - (fixuns_truncsfsi2): Likewise. - (fixuns_truncdfsi2): Likewise. - (*floatsisf2_vfp): Likewise. - (*floatsidf2_vfp): Likewise. - (floatunssisf2): Likewise. - (floatunssidf2): Likewise. - (*combine_vcvt_f32_): Likewise. - (*combine_vcvt_f64_): Likewise. - * config/arm/arm1020e.md: Update with new attributes. - * config/arm/cortex-a15-neon.md: Update with new attributes. - * config/arm/cortex-a5.md: Update with new attributes. - * config/arm/cortex-a53.md: Update with new attributes. - * config/arm/cortex-a7.md: Update with new attributes. - * config/arm/cortex-a8-neon.md: Update with new attributes. - * config/arm/cortex-a9.md: Update with new attributes. - * config/arm/cortex-m4-fpu.md: Update with new attributes. - * config/arm/cortex-r4f.md: Update with new attributes. - * config/arm/marvell-pj4.md: Update with new attributes. - * config/arm/vfp11.md: Update with new attributes. - -2013-09-06 James Greenhalgh - - * config/aarch64/arm_neon.h - (vqtbl<1,2,3,4>_s8): Fix control vector parameter type. - (vqtbx<1,2,3,4>_s8): Likewise. - -2013-09-06 James Greenhalgh - - * config/arm/types.md: Add "no_insn", "multiple" and "untyped" types. - * config/arm/arm-fixed.md: Add type attribute to all insn patterns. - (add3): Add type attribute. - (add3): Likewise. - (usadd3): Likewise. - (ssadd3): Likewise. - (sub3): Likewise. - (sub3): Likewise. - (ussub3): Likewise. - (sssub3): Likewise. - (ssmulsa3): Likewise. - (usmulusa3): Likewise. - (arm_usatsihi): Likewise. - * config/arm/vfp.md - (*movdi_vfp): Add types for all instructions. - (*movdi_vfp_cortexa8): Likewise. - (*movhf_vfp_neon): Likewise. - (*movhf_vfp): Likewise. - (*movdf_vfp): Likewise. - (*thumb2_movdf_vfp): Likewise. - (*thumb2_movdfcc_vfp): Likewise. - * config/arm/arm.md: Add type attribute to all insn patterns. - (*thumb1_adddi3): Add type attribute. - (*arm_adddi3): Likewise. - (*adddi_sesidi_di): Likewise. - (*adddi_zesidi_di): Likewise. - (*thumb1_addsi3): Likewise. - (addsi3_compare0): Likewise. - (*addsi3_compare0_scratch): Likewise. - (*compare_negsi_si): Likewise. - (cmpsi2_addneg): Likewise. - (*addsi3_carryin_): Likewise. - (*addsi3_carryin_alt2_): Likewise. - (*addsi3_carryin_clobercc_): Likewise. - (*subsi3_carryin): Likewise. - (*subsi3_carryin_const): Likewise. - (*subsi3_carryin_compare): Likewise. - (*subsi3_carryin_compare_const): Likewise. - (*arm_subdi3): Likewise. - (*thumb_subdi3): Likewise. - (*subdi_di_zesidi): Likewise. - (*subdi_di_sesidi): Likewise. - (*subdi_zesidi_di): Likewise. - (*subdi_sesidi_di): Likewise. - (*subdi_zesidi_ze): Likewise. - (thumb1_subsi3_insn): Likewise. - (*arm_subsi3_insn): Likewise. - (*anddi3_insn): Likewise. - (*anddi_zesidi_di): Likewise. - (*anddi_sesdi_di): Likewise. - (*ne_zeroextracts): Likewise. - (*ne_zeroextracts): Likewise. - (*ite_ne_zeroextr): Likewise. - (*ite_ne_zeroextr): Likewise. - (*anddi_notdi_di): Likewise. - (*anddi_notzesidi): Likewise. - (*anddi_notsesidi): Likewise. - (andsi_notsi_si): Likewise. - (thumb1_bicsi3): Likewise. - (*iordi3_insn): Likewise. - (*iordi_zesidi_di): Likewise. - (*iordi_sesidi_di): Likewise. - (*thumb1_iorsi3_insn): Likewise. - (*xordi3_insn): Likewise. - (*xordi_zesidi_di): Likewise. - (*xordi_sesidi_di): Likewise. - (*arm_xorsi3): Likewise. - (*andsi_iorsi3_no): Likewise. - (*smax_0): Likewise. - (*smax_m1): Likewise. - (*arm_smax_insn): Likewise. - (*smin_0): Likewise. - (*arm_smin_insn): Likewise. - (*arm_umaxsi3): Likewise. - (*arm_uminsi3): Likewise. - (*minmax_arithsi): Likewise. - (*minmax_arithsi_): Likewise. - (*satsi_): Likewise. - (arm_ashldi3_1bit): Likewise. - (arm_ashrdi3_1bit): Likewise. - (arm_lshrdi3_1bit): Likewise. - (*arm_negdi2): Likewise. - (*thumb1_negdi2): Likewise. - (*arm_negsi2): Likewise. - (*thumb1_negsi2): Likewise. - (*negdi_extendsid): Likewise. - (*negdi_zero_extend): Likewise. - (*arm_abssi2): Likewise. - (*thumb1_abssi2): Likewise. - (*arm_neg_abssi2): Likewise. - (*thumb1_neg_abss): Likewise. - (one_cmpldi2): Likewise. - (extenddi2): Likewise. - (*compareqi_eq0): Likewise. - (*arm_extendhisi2addsi): Likewise. - (*arm_movdi): Likewise. - (*thumb1_movdi_insn): Likewise. - (*arm_movt): Likewise. - (*thumb1_movsi_insn): Likewise. - (pic_add_dot_plus_four): Likewise. - (pic_add_dot_plus_eight): Likewise. - (tls_load_dot_plus_eight): Likewise. - (*thumb1_movhi_insn): Likewise. - (*thumb1_movsf_insn): Likewise. - (*movdf_soft_insn): Likewise. - (*thumb_movdf_insn): Likewise. - (cbranchsi4_insn): Likewise. - (cbranchsi4_scratch): Likewise. - (*negated_cbranchsi4): Likewise. - (*tbit_cbranch): Likewise. - (*tlobits_cbranch): Likewise. - (*tstsi3_cbranch): Likewise. - (*cbranchne_decr1): Likewise. - (*addsi3_cbranch): Likewise. - (*addsi3_cbranch_scratch): Likewise. - (*arm_cmpdi_insn): Likewise. - (*arm_cmpdi_unsig): Likewise. - (*arm_cmpdi_zero): Likewise. - (*thumb_cmpdi_zero): Likewise. - (*deleted_compare): Likewise. - (*mov_scc): Likewise. - (*mov_negscc): Likewise. - (*mov_notscc): Likewise. - (*cstoresi_eq0_thumb1_insn): Likewise. - (cstoresi_nltu_thumb1): Likewise. - (cstoresi_ltu_thu): Likewise. - (thumb1_addsi3_addgeu): Likewise. - (*arm_jump): Likewise. - (*thumb_jump): Likewise. - (*check_arch2): Likewise. - (arm_casesi_internal): Likewise. - (thumb1_casesi_dispatch): Likewise. - (*arm_indirect_jump): Likewise. - (*thumb1_indirect_jump): Likewise. - (nop): Likewise. - (*and_scc): Likewise. - (*ior_scc): Likewise. - (*compare_scc): Likewise. - (*cond_move): Likewise. - (*cond_arith): Likewise. - (*cond_sub): Likewise. - (*cmp_ite0): Likewise. - (*cmp_ite1): Likewise. - (*cmp_and): Likewise. - (*cmp_ior): Likewise. - (*ior_scc_scc): Likewise. - (*ior_scc_scc_cmp): Likewise. - (*and_scc_scc): Likewise. - (*and_scc_scc_cmp): Likewise. - (*and_scc_scc_nod): Likewise. - (*negscc): Likewise. - (movcond_addsi): Likewise. - (movcond): Likewise. - (*ifcompare_plus_move): Likewise. - (*if_plus_move): Likewise. - (*ifcompare_move_plus): Likewise. - (*if_move_plus): Likewise. - (*ifcompare_arith_arith): Likewise. - (*if_arith_arith): Likewise. - (*ifcompare_arith_move): Likewise. - (*if_arith_move): Likewise. - (*ifcompare_move_arith): Likewise. - (*if_move_arith): Likewise. - (*ifcompare_move_not): Likewise. - (*if_move_not): Likewise. - (*ifcompare_not_move): Likewise. - (*if_not_move): Likewise. - (*ifcompare_shift_move): Likewise. - (*if_shift_move): Likewise. - (*ifcompare_move_shift): Likewise. - (*if_move_shift): Likewise. - (*ifcompare_shift_shift): Likewise. - (*ifcompare_not_arith): Likewise. - (*ifcompare_arith_not): Likewise. - (*if_arith_not): Likewise. - (*ifcompare_neg_move): Likewise. - (*if_neg_move): Likewise. - (*ifcompare_move_neg): Likewise. - (*if_move_neg): Likewise. - (prologue_thumb1_interwork): Likewise. - (*cond_move_not): Likewise. - (*sign_extract_onebit): Likewise. - (*not_signextract_onebit): Likewise. - (stack_tie): Likewise. - (align_4): Likewise. - (align_8): Likewise. - (consttable_end): Likewise. - (consttable_1): Likewise. - (consttable_2): Likewise. - (consttable_4): Likewise. - (consttable_8): Likewise. - (consttable_16): Likewise. - (*thumb1_tablejump): Likewise. - (prefetch): Likewise. - (force_register_use): Likewise. - (thumb_eh_return): Likewise. - (load_tp_hard): Likewise. - (load_tp_soft): Likewise. - (tlscall): Likewise. - (*arm_movtas_ze): Likewise. - (*arm_rev): Likewise. - (*arm_revsh): Likewise. - (*arm_rev16): Likewise. - * config/arm/thumb2.md - (*thumb2_smaxsi3): Likewise. - (*thumb2_sminsi3): Likewise. - (*thumb32_umaxsi3): Likewise. - (*thumb2_uminsi3): Likewise. - (*thumb2_negdi2): Likewise. - (*thumb2_abssi2): Likewise. - (*thumb2_neg_abss): Likewise. - (*thumb2_movsi_insn): Likewise. - (tls_load_dot_plus_four): Likewise. - (*thumb2_movhi_insn): Likewise. - (*thumb2_mov_scc): Likewise. - (*thumb2_mov_negs): Likewise. - (*thumb2_mov_negs): Likewise. - (*thumb2_mov_nots): Likewise. - (*thumb2_mov_nots): Likewise. - (*thumb2_movsicc_): Likewise. - (*thumb2_movsfcc_soft_insn): Likewise. - (*thumb2_indirect_jump): Likewise. - (*thumb2_and_scc): Likewise. - (*thumb2_ior_scc): Likewise. - (*thumb2_ior_scc_strict_it): Likewise. - (*thumb2_cond_move): Likewise. - (*thumb2_cond_arith): Likewise. - (*thumb2_cond_ari): Likewise. - (*thumb2_cond_sub): Likewise. - (*thumb2_negscc): Likewise. - (*thumb2_movcond): Likewise. - (thumb2_casesi_internal): Likewise. - (thumb2_casesi_internal_pic): Likewise. - (*thumb2_alusi3_short): Likewise. - (*thumb2_mov_shortim): Likewise. - (*thumb2_addsi_short): Likewise. - (*thumb2_subsi_short): Likewise. - (thumb2_addsi3_compare0): Likewise. - (*thumb2_cbz): Likewise. - (*thumb2_cbnz): Likewise. - (*thumb2_one_cmplsi2_short): Likewise. - (*thumb2_negsi2_short): Likewise. - (*orsi_notsi_si): Likewise. - * config/arm/arm1020e.md: Update with new attributes. - * config/arm/arm1026ejs.md: Update with new attributes. - * config/arm/arm1136jfs.md: Update with new attributes. - * config/arm/arm926ejs.md: Update with new attributes. - * config/arm/cortex-a15.md: Update with new attributes. - * config/arm/cortex-a5.md: Update with new attributes. - * config/arm/cortex-a53.md: Update with new attributes. - * config/arm/cortex-a7.md: Update with new attributes. - * config/arm/cortex-a8.md: Update with new attributes. - * config/arm/cortex-a9.md: Update with new attributes. - * config/arm/cortex-m4.md: Update with new attributes. - * config/arm/cortex-r4.md: Update with new attributes. - * config/arm/fa526.md: Update with new attributes. - * config/arm/fa606te.md: Update with new attributes. - * config/arm/fa626te.md: Update with new attributes. - * config/arm/fa726te.md: Update with new attributes. - -2013-09-06 James Greenhalgh - - * config/aarch64/aarch64-simd.md - (aarch64_sqdmll_n_internal): Use - iterator to ensure correct register choice. - (aarch64_sqdmll2_n_internal): Likewise. - (aarch64_sqdmull_n): Likewise. - (aarch64_sqdmull2_n_internal): Likewise. - * config/aarch64/arm_neon.h - (vml_lane_16): Use 'x' constraint for element vector. - (vml_n_16): Likewise. - (vmll_high_lane_16): Likewise. - (vmll_high_n_16): Likewise. - (vmll_lane_16): Likewise. - (vmll_n_16): Likewise. - (vmul_lane_16): Likewise. - (vmul_n_16): Likewise. - (vmull_lane_16): Likewise. - (vmull_n_16): Likewise. - (vmull_high_lane_16): Likewise. - (vmull_high_n_16): Likewise. - (vqrdmulh_n_s16): Likewise. - -2013-09-06 Tejas Belagod - - * config/aarch64/arm_neon.h: Fix all vdup intrinsics to - have the correct lane parameter. - -2013-09-06 Richard Biener - - * cfganal.c (control_dependences::~control_dependences): - Properly free all of the vector. - -2013-09-06 Kirill Yukhin - - PR target/58269 - * config/i386/i386.c (ix86_conditional_register_usage): - Proper initialize extended SSE registers. - -2013-09-06 Jan Hubicka - - PR tree-optimization/58311 - * ipa-devirt.c (gate_ipa_devirt): Only execute when optimizing. - -2013-09-06 Jan Hubicka - - * Makefile.in (tree-sra.o): Update dependencies. - * tree-sra.c: Include ipa-utils.h - (scan_function): Use recursive_call_p. - (has_caller_p): New function. - (cgraph_for_node_and_aliases): Count also callers of aliases. - -2013-09-06 Jan Hubicka - - PR middle-end/58094 - * cgraph.h (symtab_semantically_equivalent_p): Declare. - * tree-tailcall.c: Include ipa-utils.h. - (find_tail_calls): Use it. - * ipa-pure-const.c (check_call): Likewise. - * ipa-utils.c (recursive_call_p): New function. - * ipa-utils.h (recursive_call_p): Dclare. - * symtab.c (symtab_nonoverwritable_alias): Fix formatting. - (symtab_semantically_equivalent_p): New function. - * Makefile.in (tree-tailcall.o): Update dependencies. - -2013-09-06 Eric Botcazou - - * ipa-split.c (split_function): Set DECL_NO_INLINE_WARNING_P on the - non-inlinable part. - -2013-09-06 Richard Biener - - * lto-streamer.h (lto_global_var_decls): Remove. - * Makefile.in (OBJS): Remove lto-symtab.o. - (lto-symtab.o): Remove. - (GTFILES): Remove lto-symtab.c - * lto-symtab.c: Move to lto/ - -2013-09-06 Andreas Krebbel - - * config/s390/s390.md (UNSPEC_FPINT_FLOOR, UNSPEC_FPINT_BTRUNC) - (UNSPEC_FPINT_ROUND, UNSPEC_FPINT_CEIL, UNSPEC_FPINT_NEARBYINT) - (UNSPEC_FPINT_RINT): New constant definitions. - (FPINT, fpint_name, fpint_roundingmode): New integer iterator - definition with 2 attributes. - ("2", "rint2") - ("2", "rint2"): New pattern - definitions. - -2013-09-06 Andreas Krebbel - - * config/s390/s390.md: Add "bcr_flush" value to mnemonic attribute. - ("mem_thread_fence_1"): Use bcr 14,0 for z196 and later. - Set the mnemonic attribute to "bcr_flush". Set the "z196prop" - attribute to "z196_alone". - * config/s390/2827.md: Add "bcr_flush" to "ooo_groupalone" and - "zEC12_simple". - -2013-09-06 Richard Biener - - * basic-block.h (class control_dependences): New. - * tree-ssa-dce.c (control_dependence_map): Remove. - (cd): New global. - (EXECUTE_IF_CONTROL_DEPENDENT): Remove. - (set_control_dependence_map_bit, clear_control_dependence_bitmap, - find_pdom, find_control_dependence, find_all_control_dependences): - Move to cfganal.c. - (mark_control_dependent_edges_necessary, - find_obviously_necessary_stmts, propagate_necessity, tree_dce_init, - tree_dce_done, perform_tree_ssa_dce): Adjust. - * cfganal.c (set_control_dependence_map_bit, - clear_control_dependence_bitmap, find_pdom, find_control_dependence, - find_all_control_dependences): Move from tree-ssa-dce.c and - implement as methods of control_dependences class. - (control_dependences::control_dependences): New. - (control_dependences::~control_dependences): Likewise. - (control_dependences::get_edges_dependent_on): Likewise. - (control_dependences::get_edge): Likewise. - -2013-09-04 Jan Hubicka - - * tree.c (types_same_for_odr): Drop overactive check. - * ipa-devirt.c (hash_type_name): Likewise. - -2013-09-04 Jan Hubicka - - * cgraphunit.c (walk_polymorphic_call_targets): Break out from ... - (analyze_functions): ... here. - -2013-09-04 Jan Hubicka - - PR middle-end/58201 - * cgraphunit.c (analyze_functions): Clear AUX fields - after processing; initialize assembler name has. - -2013-09-05 Jeff Law - - * tree-ssa-threadedge.c (thread_around_empty_blocks): Renamed - from thread_around_empty_block. Record threading path into PATH. - Recurse if threading through the initial block is successful. - (thread_across_edge): Corresponding changes to slightly simplify. - -2013-09-05 James Greenhalgh - - * config/aarch64/aarch64.md - (type): Remove frecpe, frecps, frecpx. - (aarch64_frecp): Move to aarch64-simd.md, - fix to be a TARGET_SIMD instruction. - (aarch64_frecps): Remove. - * config/aarch64/aarch64-simd.md - (aarch64_frecp): New, moved from aarch64.md - (aarch64_frecps): Handle all float/vector of float modes. - -2013-09-05 James Greenhalgh - Sofiane Naci - - * config/arm/types.md (define_attr "type"): Expand "arlo_imm" - into "adr", "alu_imm", "alus_imm", "logic_imm", "logics_imm". - Expand "arlo_reg" into "adc_reg", "adc_imm", "adcs_reg", "adcs_imm", - "alu_ext", "alu_reg", "alus_ext", "alus_reg", "bfm", "csel", - "logic_reg", "logics_reg", "rev". Expand "arlo_shift" into - "alu_shift_imm", "alus_shift_imm", "logic_shift_imm", - "logics_shift_imm". Expand "arlo_shift_reg" into "alu_shift_reg", - "alus_shift_reg", "logic_shift_reg", "logics_shift_reg". Expand "clz" - into "clz, "rbit". Rename "shift" to "shift_imm". - * config/arm/arm.md (define_attr "core_cycles"): Update for attribute - changes. Update for attribute changes all occurrences of arlo_* and - shift* types. - * config/arm/arm-fixed.md: Update for attribute changes - all occurrences of arlo_* types. - * config/arm/thumb2.md: Update for attribute changes all occurrences - of arlo_* types. - * config/arm/arm.c (xscale_sched_adjust_cost): (rtx insn, rtx - (cortexa7_older_only): Likewise. - (cortexa7_younger): Likewise. - * config/arm/arm1020e.md (1020alu_op): Update for attribute changes. - (1020alu_shift_op): Likewise. - (1020alu_shift_reg_op): Likewise. - * config/arm/arm1026ejs.md (alu_op): Update for attribute changes. - (alu_shift_op): Likewise. - (alu_shift_reg_op): Likewise. - * config/arm/arm1136jfs.md (11_alu_op): Update for attribute changes. - (11_alu_shift_op): Likewise. - (11_alu_shift_reg_op): Likewise. - * config/arm/arm926ejs.md (9_alu_op): Update for attribute changes. - (9_alu_shift_reg_op): Likewise. - * config/arm/cortex-a15.md (cortex_a15_alu): Update for - attribute changes. - (cortex_a15_alu_shift): Likewise. - (cortex_a15_alu_shift_reg): Likewise. - * config/arm/cortex-a5.md (cortex_a5_alu): Update for - attribute changes. - (cortex_a5_alu_shift): Likewise. - * config/arm/cortex-a53.md (cortex_a53_alu): Update for - attribute changes. - (cortex_a53_alu_shift): Likewise. - * config/arm/cortex-a7.md (cortex_a7_alu_imm): Update for - attribute changes. - (cortex_a7_alu_reg): Likewise. - (cortex_a7_alu_shift): Likewise. - * config/arm/cortex-a8.md (cortex_a8_alu): Update for - attribute changes. - (cortex_a8_alu_shift): Likewise. - (cortex_a8_alu_shift_reg): Likewise. - * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute changes. - (cortex_a9_dp_shift): Likewise. - * config/arm/cortex-m4.md (cortex_m4_alu): Update for - attribute changes. - * config/arm/cortex-r4.md - (cortex_r4_alu): Update for attribute changes. - (cortex_r4_mov): Likewise. - (cortex_r4_alu_shift_reg): Likewise. - * config/arm/fa526.md (526_alu_op): Update for attribute changes. - (526_alu_shift_op): Likewise. - * config/arm/fa606te.md (606te_alu_op): Update for attribute changes. - * config/arm/fa626te.md (626te_alu_op): Update for attribute changes. - (626te_alu_shift_op): Likewise. - * config/arm/fa726te.md (726te_alu_op): Update for attribute changes. - (726te_alu_shift_op): Likewise. - (726te_alu_shift_reg_op): Likewise. - * config/arm/fmp626.md (mp626_alu_op): Update for attribute changes. - (mp626_alu_shift_op): Likewise. - * config/arm/marvell-pj4.md (pj4_alu): Update for attribute changes. - (pj4_alu_conds): Likewise. - (pj4_shift): Likewise. - (pj4_shift_conds): Likewise. - (pj4_alu_shift): Likewise. - (pj4_alu_shift_conds): Likewise. - * config/aarch64/aarch64.md: Update for attribute change - all occurrences of arlo_* and shift* types. - -2013-09-05 Mike Stump - - * tree.h: Move documentation for tree_function_decl to tree-core.h - with the declaration. - -2013-09-05 Peter Bergner - - PR target/58139 - * reginfo.c (choose_hard_reg_mode): Scan through all mode classes - looking for widest mode. - -2013-09-05 Eric Botcazou - - * config.gcc (*-*-vxworks*): Do not override an existing extra_objs. - -2013-09-05 Richard Biener - - PR tree-optimization/58137 - * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): - Do not create vectors of pointers. - * tree-vect-loop.c (get_initial_def_for_induction): Use proper - types for the components of the vector initializer. - * tree-cfg.c (verify_gimple_assign_binary): Remove special-casing - allowing pointer vectors with PLUS_EXPR/MINUS_EXPR. - -2013-09-05 Martin Jambor - - * ipa-prop.c (remove_described_reference): Accept missing references, - return false if that hppens, otherwise return true. - (cgraph_node_for_jfunc): New function. - (try_decrement_rdesc_refcount): Likewise. - (try_make_edge_direct_simple_call): Use them. - (ipa_edge_removal_hook): Remove references from rdescs. - (ipa_edge_duplication_hook): Clone rdescs and their references - when the new edge has the same caller as the old one. - * cgraph.c (cgraph_resolve_speculation): Remove speculative - reference before removing any edges. - -2013-09-05 Richard Earnshaw - - * arm.c (thumb2_emit_strd_push): Rewrite to use pre-decrement on - initial store. - * thumb2.md (thumb2_storewb_parisi): New pattern. - -2013-09-05 Yufeng Zhang - - * config/aarch64/aarch64-option-extensions.def: Add - AARCH64_OPT_EXTENSION of 'crc'. - * config/aarch64/aarch64.h (AARCH64_FL_CRC): New define. - (AARCH64_ISA_CRC): Ditto. - * doc/invoke.texi (-march and -mcpu feature modifiers): Add - description of the CRC extension. - -2013-09-05 Alexander Ivchenko - - * config/rs6000/linux64.h: Define OPTION_BIONIC and OPTION_UCLIBC. - * config/rs6000/linux.h: Ditto. - * alpha/linux.h: Ditto. - * config/bfin/uclinux.h: Define TARGET_LIBC_HAS_FUNCTION as - no_c99_libc_has_function. - * config/c6x/uclinux-elf.h: Ditto. - * config/lm32/uclinux-elf.h: Ditto. - * config/m68k/uclinux.h: Ditto. - * config/moxie/uclinux.h: Ditto. - * config.gcc (bfin*-linux-uclibc*): Add t-linux-android to tmake_file. - (crisv32-*-linux*, cris-*-linux*): Ditto. - * config/bfin/bfin.c: Include "tm_p.h". - -2013-09-05 Richard Biener - - * tree-vect-loop.c (vect_analyze_loop_operations): Properly - check for a definition without a basic-block. - -2013-09-05 James Greenhalgh - Sofiane Naci - - * config/aarch64/aarch64.md - (*movti_aarch64): Rename r_2_f and f_2_r. - (*movsf_aarch64): Likewise. - (*movdf_aarch64): Likewise. - (*movtf_aarch64): Likewise. - (aarch64_movdi_low): Likewise. - (aarch64_movdi_high): Likewise. - (aarch64_movhigh_di): Likewise. - (aarch64_movlow_di): Likewise. - (aarch64_movtilow_tilow): Likewise. - * config/arm/arm.md (attribute "neon_type"): Delete. Move attribute - values to config/arm/types.md - (attribute "conds"): Update for attribute change. - (anddi3_insn): Likewise. - (iordi3_insn): Likewise. - (xordi3_insn): Likewise. - (one_cmpldi2): Likewise. - * config/arm/types.md (type): Add Neon types. - * config/arm/neon.md (neon_mov): Remove "neon_type" attribute, - use "type" attribute. - (movmisalign_neon_store): Likewise. - (movmisalign_neon_load): Likewise. - (vec_set_internal): Likewise. - (vec_setv2di_internal): Likewise. - (vec_extract): Likewise. - (vec_extractv2di): Likewise. - (add3_neon): Likewise. - (adddi3_neon): Likewise. - (sub3_neon): Likewise. - (subdi3_neon): Likewise. - (mul3_neon): Likewise. - (mul3add_neon): Likewise. - (mul3negadd_neon): Likewise. - (fma4)): Likewise. - (fma4_intrinsic): Likewise. - (fmsub4)): Likewise. - (fmsub4_intrinsic): Likewise. - (neon_vrint): Likewise. - (ior3): Likewise. - (and3): Likewise. - (anddi3_neon): Likewise. - (orn3_neon): Likewise. - (orndi3_neon): Likewise. - (bic3_neon): Likewise. - (bicdi3_neon): Likewise. - (xor3): Likewise. - (one_cmpl2): Likewise. - (abs2): Likewise. - (neg2): Likewise. - (umin3_neon): Likewise. - (umax3_neon): Likewise. - (smin3_neon): Likewise. - (smax3_neon): Likewise. - (vashl3): Likewise. - (vashr3_imm): Likewise. - (vlshr3_imm): Likewise. - (ashl3_signed): Likewise. - (ashl3_unsigned): Likewise. - (neon_load_count): Likewise. - (ashldi3_neon_noclobber): Likewise. - (signed_shift_di3_neon): Likewise. - (unsigned_shift_di3_neon): Likewise. - (ashrdi3_neon_imm_noclobber): Likewise. - (lshrdi3_neon_imm_noclobber): Likewise. - (widen_ssum3): Likewise. - (widen_usum3): Likewise. - (quad_halves_v4si): Likewise. - (quad_halves_v4sf): Likewise. - (quad_halves_v8hi): Likewise. - (quad_halves_v16qi): Likewise. - (reduc_splus_v2di): Likewise. - (neon_vpadd_internal): Likewise. - (neon_vpsmin): Likewise. - (neon_vpsmax): Likewise. - (neon_vpumin): Likewise. - (neon_vpumax): Likewise. - (ss_add_neon): Likewise. - (us_add_neon): Likewise. - (ss_sub_neon): Likewise. - (us_sub_neon): Likewise. - (neon_vadd_unspec): Likewise. - (neon_vaddl): Likewise. - (neon_vaddw): Likewise. - (neon_vhadd): Likewise. - (neon_vqadd): Likewise. - (neon_vaddhn): Likewise. - (neon_vmul): Likewise. - (neon_vmla): Likewise. - (neon_vmlal): Likewise. - (neon_vmls): Likewise. - (neon_vmlsl): Likewise. - (neon_vqdmulh): Likewise. - (neon_vqdmlal): Likewise. - (neon_vqdmlsl): Likewise. - (neon_vmull): Likewise. - (neon_vqdmull): Likewise. - (neon_vsub_unspec): Likewise. - (neon_vsubl): Likewise. - (neon_vsubw): Likewise. - (neon_vqsub): Likewise. - (neon_vhsub): Likewise. - (neon_vsubhn): Likewise. - (neon_vceq): Likewise. - (neon_vcge): Likewise. - (neon_vcgeu): Likewise. - (neon_vcgt): Likewise. - (neon_vcgtu): Likewise. - (neon_vcle): Likewise. - (neon_vclt): Likewise. - (neon_vcage): Likewise. - (neon_vcagt): Likewise. - (neon_vtst): Likewise. - (neon_vabd): Likewise. - (neon_vabdl): Likewise. - (neon_vaba): Likewise. - (neon_vabal): Likewise. - (neon_vmax): Likewise. - (neon_vmin): Likewise. - (neon_vpaddl): Likewise. - (neon_vpadal): Likewise. - (neon_vpmax): Likewise. - (neon_vpmin): Likewise. - (neon_vrecps): Likewise. - (neon_vrsqrts): Likewise. - (neon_vqabs): Likewise. - (neon_vqneg): Likewise. - (neon_vcls): Likewise. - (clz2): Likewise. - (popcount2): Likewise. - (neon_vrecpe): Likewise. - (neon_vrsqrte): Likewise. - (neon_vget_lane_sext_internal): Likewise. - (neon_vget_lane_zext_internal): Likewise. - (neon_vdup_n): Likewise. - (neon_vdup_nv2di): Likewise. - (neon_vdpu_lane_internal): Likewise. - (neon_vswp): Likewise. - (float2): Likewise. - (floatuns2): Likewise. - (fix_trunc)2): Likewise - (fixuns_trunc): Likewise. - (neon_vcvtv4sfv4hf): Likewise. - (neon_vcvtv4hfv4sf): Likewise. - (neon_vcvt_n): Likewise. - (neon_vmovn): Likewise. - (neon_vqmovn): Likewise. - (neon_vqmovun): Likewise. - (neon_vmovl): Likewise. - (neon_vmul_lane): Likewise. - (neon_vmull_lane): Likewise. - (neon_vqdmull_lane): Likewise. - (neon_vqdmulh_lane): Likewise. - (neon_vmla_lane): Likewise. - (neon_vmlal_lane): Likewise. - (neon_vqdmlal_lane): Likewise. - (neon_vmls_lane): Likewise. - (neon_vmlsl_lane): Likewise. - (neon_vqdmlsl_lane): Likewise. - (neon_vext): Likewise. - (neon_vrev64): Likewise. - (neon_vrev32): Likewise. - (neon_vrev16): Likewise. - (neon_vbsl_internal): Likewise. - (neon_vshl): Likewise. - (neon_vqshl): Likewise. - (neon_vshr_n): Likewise. - (neon_vshrn_n): Likewise. - (neon_vqshrn_n): Likewise. - (neon_vqshrun_n): Likewise. - (neon_vshl_n): Likewise. - (neon_vqshl_n): Likewise. - (neon_vqshlu_n): Likewise. - (neon_vshll_n): Likewise. - (neon_vsra_n): Likewise. - (neon_vsri_n): Likewise. - (neon_vsli_n): Likewise. - (neon_vtbl1v8qi): Likewise. - (neon_vtbl2v8qi): Likewise. - (neon_vtbl3v8qi): Likewise. - (neon_vtbl4v8qi): Likewise. - (neon_vtbx1v8qi): Likewise. - (neon_vtbx2v8qi): Likewise. - (neon_vtbx3v8qi): Likewise. - (neon_vtbx4v8qi): Likewise. - (neon_vtrn_internal): Likewise. - (neon_vzip_internal): Likewise. - (neon_vuzp_internal): Likewise. - (neon_vld1): Likewise. - (neon_vld1_lane): Likewise. - (neon_vld1_dup): Likewise. - (neon_vld1_dupv2di): Likewise. - (neon_vst1): Likewise. - (neon_vst1_lane): Likewise. - (neon_vld2): Likewise. - (neon_vld2_lane): Likewise. - (neon_vld2_dup): Likewise. - (neon_vst2): Likewise. - (neon_vst2_lane): Likewise. - (neon_vld3): Likewise. - (neon_vld3qa): Likewise. - (neon_vld3qb): Likewise. - (neon_vld3_lane): Likewise. - (neon_vld3_dup): Likewise. - (neon_vst3): Likewise. - (neon_vst3qa): Likewise. - (neon_vst3qb): Likewise. - (neon_vst3_lane): Likewise. - (neon_vld4): Likewise. - (neon_vld4qa): Likewise. - (neon_vld4qb): Likewise. - (neon_vld4_lane): Likewise. - (neon_vld4_dup): Likewise. - (neon_vst4): Likewise. - (neon_vst4qa): Likewise. - (neon_vst4qb): Likewise. - (neon_vst4_lane): Likewise. - (neon_vec_unpack_lo_): Likewise. - (neon_vec_unpack_hi_): Likewise. - (neon_vec_mult_lo_): Likewise. - (neon_vec_mult_hi_): Likewise. - (neon_vec_shiftl_): Likewise. - (neon_unpack_): Likewise. - (neon_vec_mult_): Likewise. - (vec_pack_trunc_): Likewise. - (neon_vec_pack_trunk_): Likewise. - (neon_vabd_2): Likewise. - (neon_vabd_3): Likewise. - * config/arm/vfp.md (arm_movsi_vfp): Update for attribute changes. - (thumb2_movsi_vfp): Likewise. - (movdi_vfp): Likewise. - (movdi_vfp_cortexa8): Likewise. - (movhf_vfp_neon): Likewise. - (movhf_vfp): Likewiwse. - (movsf_vfp): Likewiwse. - (thumb2_movsf_vfp): Likewiwse. - (movdf_vfp): Likewise. - (thumb2_movdf_vfp): Likewise. - (movsfcc_vfp): Likewise. - (thumb2_movsfcc_vfp): Likewise. - (movdfcc_vfp): Likewise. - (thumb2_movdfcc_vfp): Likewise. - * config/arm/arm.c (cortexa7_older_only): Update for attribute change. - * config/arm/arm1020e.md (v10_c2v): Update for attribute change. - (v10_v2c): Likewise. - * config/arm/cortex-a15-neon.md (cortex_a15_neon_int_1): Update for - attribute change. - (cortex_a15_neon_int_2): Likewise. - (cortex_a15_neon_int_3): Likewise. - (cortex_a15_neon_int_4): Likewise. - (cortex_a15_neon_int_5): Likewise. - (cortex_a15_neon_vqneg_vqabs): Likewise. - (cortex_a15_neon_vmov): Likewise. - (cortex_a15_neon_vaba): Likewise. - (cortex_a15_neon_vaba_qqq): Likewise. - (cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a15_neon_mul_qqq_8_16_32_ddd_32): Likewise. - (cortex_a15_neon_mul_qdd_64_32_long_qqd_16_ddd_32_\ - scalar_64_32_long_scalar): Likewise. - (cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a15_neon_mla_qqq_8_16): Likewise. - (cortex_a15_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\ - lotype_qdd_64_32_long): Likewise. - (cortex_a15_neon_mla_qqq_32_qqd_32_scalar): Likewise. - (cortex_a15_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. - (cortex_a15_neon_mul_qqd_32_scalar): Likewise. - (cortex_a15_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. - (cortex_a15_neon_shift_1): Likewise. - (cortex_a15_neon_shift_2): Likewise. - (cortex_a15_neon_shift_3): Likewise. - (cortex_a15_neon_vshl_ddd): Likewise. - (cortex_a15_neon_vqshl_vrshl_vqrshl_qqq): Likewise. - (cortex_a15_neon_vsra_vrsra): Likewise. - (cortex_a15_neon_fp_vadd_ddd_vabs_dd): Likewise. - (cortex_a15_neon_fp_vadd_qqq_vabs_qq): Likewise. - (cortex_a15_neon_fp_vmul_ddd): Likewise. - (cortex_a15_neon_fp_vmul_qqd): Likewise. - (cortex_a15_neon_fp_vmla_ddd): Likewise. - (cortex_a15_neon_fp_vmla_qqq): Likewise. - (cortex_a15_neon_fp_vmla_ddd_scalar): Likewise. - (cortex_a15_neon_fp_vmla_qqq_scalar): Likewise. - (cortex_a15_neon_fp_vrecps_vrsqrts_ddd): Likewise. - (cortex_a15_neon_fp_vrecps_vrsqrts_qqq): Likewise. - (cortex_a15_neon_bp_simple): Likewise. - (cortex_a15_neon_bp_2cycle): Likewise. - (cortex_a15_neon_bp_3cycle): Likewise. - (cortex_a15_neon_vld1_1_2_regs): Likewise. - (cortex_a15_neon_vld1_3_4_regs): Likewise. - (cortex_a15_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. - (cortex_a15_neon_vld2_4_regs): Likewise. - (cortex_a15_neon_vld3_vld4): Likewise. - (cortex_a15_neon_vst1_1_2_regs_vst2_2_regs): Likewise. - (cortex_a15_neon_vst1_3_4_regs): Likewise. - (cortex_a15_neon_vst2_4_regs_vst3_vst4): Likewise. - (cortex_a15_neon_vst3_vst4): Likewise. - (cortex_a15_neon_vld1_vld2_lane): Likewise. - (cortex_a15_neon_vld3_vld4_lane" 10 - (cortex_a15_neon_vst1_vst2_lane): Likewise. - (cortex_a15_neon_vst3_vst4_lane): Likewise. - (cortex_a15_neon_vld3_vld4_all_lanes): Likewise. - (cortex_a15_neon_ldm_2): Likewise.0 - (cortex_a15_neon_stm_2): Likewise. - (cortex_a15_neon_mcr): Likewise. - (cortex_a15_neon_mcr_2_mcrr): Likewise. - (cortex_a15_neon_mrc): Likewise. - (cortex_a15_neon_mrrc): Likewise. - * config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute - change. - (cortex_a15_alu_shift): Likewise. - (cortex_a15_alu_shift_reg): Likewise. - (cortex_a15_mult32): Likewise. - (cortex_a15_mult64): Likewise. - (cortex_a15_block): Likewise. - (cortex_a15_branch): Likewise. - (cortex_a15_load1): Likewise. - (cortex_a15_load3): Likewise. - (cortex_a15_store1): Likewise. - (cortex_a15_store3): Likewise. - (cortex_a15_call): Likewise. - * config/arm/cortex-a5.md (cortex_a5_r2f): Update for attribute change. - (cortex_a5_f2r): Likewise. - * config/arm/cortex-a53.md (cortex_a53_r2f): Update for attribute - change. - (cortex_a53_f2r): Likewise. - * config/arm/cortex-a7.md - (cortex_a7_branch): Update for attribute change. - (cortex_a7_call): Likewise. - (cortex_a7_alu_imm): Likewise. - (cortex_a7_alu_reg): Likewise. - (cortex_a7_alu_shift): Likewise. - (cortex_a7_mul): Likewise. - (cortex_a7_load1): Likewise. - (cortex_a7_store1): Likewise. - (cortex_a7_load2): Likewise. - (cortex_a7_store2): Likewise. - (cortex_a7_load3): Likewise. - (cortex_a7_store3): Likewise. - (cortex_a7_load4): Likewise. - (cortex_a7_store4): Likewise. - (cortex_a7_fpalu): Likewise. - (cortex_a7_fconst): Likewise. - (cortex_a7_fpmuls): Likewise. - (cortex_a7_neon_mul): Likewise. - (cortex_a7_fpmacs): Likewise. - (cortex_a7_neon_mla: Likewise. - (cortex_a7_fpmuld: Likewise. - (cortex_a7_fpmacd: Likewise. - (cortex_a7_fpfmad: Likewise. - (cortex_a7_fdivs: Likewise. - (cortex_a7_fdivd: Likewise. - (cortex_a7_r2f: Likewise. - (cortex_a7_f2r: Likewise. - (cortex_a7_f_flags: Likewise. - (cortex_a7_f_loads: Likewise. - (cortex_a7_f_loadd: Likewise. - (cortex_a7_f_stores: Likewise. - (cortex_a7_f_stored: Likewise. - (cortex_a7_neon): Likewise. - * config/arm/cortex-a8-neon.md - (cortex_a8_neon_mrc): Update for attribute change. - (cortex_a8_neon_mrrc): Likewise. - (cortex_a8_neon_int_1): Likewise. - (cortex_a8_neon_int_2): Likewise. - (cortex_a8_neon_int_3): Likewise. - (cortex_a8_neon_int_4): Likewise. - (cortex_a8_neon_int_5): Likewise. - (cortex_a8_neon_vqneg_vqabs): Likewise. - (cortex_a8_neon_vmov): Likewise. - (cortex_a8_neon_vaba): Likewise. - (cortex_a8_neon_vaba_qqq): Likewise. - (cortex_a8_neon_vsma): Likewise. - (cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a8_neon_mul_qqq_8_16_32_ddd_32): Likewise. - (cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_\ - long_scalar): Likewise. - (cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a8_neon_mla_qqq_8_16): Likewise. - (cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\ - long_scalar_qdd_64_32_long): Likewise. - (cortex_a8_neon_mla_qqq_32_qqd_32_scalar): Likewise. - (cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. - (cortex_a8_neon_mul_qqd_32_scalar): Likewise. - (cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. - (cortex_a8_neon_shift_1): Likewise. - (cortex_a8_neon_shift_2): Likewise. - (cortex_a8_neon_shift_3): Likewise. - (cortex_a8_neon_vshl_ddd): Likewise. - (cortex_a8_neon_vqshl_vrshl_vqrshl_qqq): Likewise. - (cortex_a8_neon_vsra_vrsra): Likewise. - (cortex_a8_neon_fp_vadd_ddd_vabs_dd): Likewise. - (cortex_a8_neon_fp_vadd_qqq_vabs_qq): Likewise. - (cortex_a8_neon_fp_vsum): Likewise. - (cortex_a8_neon_fp_vmul_ddd): Likewise. - (cortex_a8_neon_fp_vmul_qqd): Likewise. - (cortex_a8_neon_fp_vmla_ddd): Likewise. - (cortex_a8_neon_fp_vmla_qqq): Likewise. - (cortex_a8_neon_fp_vmla_ddd_scalar): Likewise. - (cortex_a8_neon_fp_vmla_qqq_scalar): Likewise. - (cortex_a8_neon_fp_vrecps_vrsqrts_ddd): Likewise. - (cortex_a8_neon_fp_vrecps_vrsqrts_qqq): Likewise. - (cortex_a8_neon_bp_simple): Likewise. - (cortex_a8_neon_bp_2cycle): Likewise. - (cortex_a8_neon_bp_3cycle): Likewise. - (cortex_a8_neon_ldr): Likewise. - (cortex_a8_neon_str): Likewise. - (cortex_a8_neon_vld1_1_2_regs): Likewise. - (cortex_a8_neon_vld1_3_4_regs): Likewise. - (cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. - (cortex_a8_neon_vld2_4_regs): Likewise. - (cortex_a8_neon_vld3_vld4): Likewise. - (cortex_a8_neon_vst1_1_2_regs_vst2_2_regs): Likewise. - (cortex_a8_neon_vst1_3_4_regs): Likewise. - (cortex_a8_neon_vst2_4_regs_vst3_vst4): Likewise. - (cortex_a8_neon_vst3_vst4): Likewise. - (cortex_a8_neon_vld1_vld2_lane): Likewise. - (cortex_a8_neon_vld3_vld4_lane): Likewise. - (cortex_a8_neon_vst1_vst2_lane): Likewise. - (cortex_a8_neon_vst3_vst4_lane): Likewise. - (cortex_a8_neon_vld3_vld4_all_lanes): Likewise. - (cortex_a8_neon_mcr): Likewise. - (cortex_a8_neon_mcr_2_mcrr): Likewise. - * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute change. - * config/arm/cortex-a9-neon.md (ca9_neon_mrc): Update for attribute - change. - (ca9_neon_mrrc): Likewise. - (cortex_a9_neon_int_1): Likewise. - (cortex_a9_neon_int_2): Likewise. - (cortex_a9_neon_int_3): Likewise. - (cortex_a9_neon_int_4): Likewise. - (cortex_a9_neon_int_5): Likewise. - (cortex_a9_neon_vqneg_vqabs): Likewise. - (cortex_a9_neon_vmov): Likewise. - (cortex_a9_neon_vaba): Likewise. - (cortex_a9_neon_vaba_qqq): Likewise. - (cortex_a9_neon_vsma): Likewise. - (cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a9_neon_mul_qqq_8_16_32_ddd_32): Likewise. - (cortex_a9_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_\ - long_scalar): Likewise. - (cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. - (cortex_a9_neon_mla_qqq_8_16): Likewise. - (cortex_a9_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\ - long_scalar_qdd_64_32_long): Likewise. - (cortex_a9_neon_mla_qqq_32_qqd_32_scalar): Likewise. - (cortex_a9_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. - (cortex_a9_neon_mul_qqd_32_scalar): Likewise. - (cortex_a9_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. - (cortex_a9_neon_shift_1): Likewise. - (cortex_a9_neon_shift_2): Likewise. - (cortex_a9_neon_shift_3): Likewise. - (cortex_a9_neon_vshl_ddd): Likewise. - (cortex_a9_neon_vqshl_vrshl_vqrshl_qqq): Likewise. - (cortex_a9_neon_vsra_vrsra): Likewise. - (cortex_a9_neon_fp_vadd_ddd_vabs_dd): Likewise. - (cortex_a9_neon_fp_vadd_qqq_vabs_qq): Likewise. - (cortex_a9_neon_fp_vsum): Likewise. - (cortex_a9_neon_fp_vmul_ddd): Likewise. - (cortex_a9_neon_fp_vmul_qqd): Likewise. - (cortex_a9_neon_fp_vmla_ddd): Likewise. - (cortex_a9_neon_fp_vmla_qqq): Likewise. - (cortex_a9_neon_fp_vmla_ddd_scalar): Likewise. - (cortex_a9_neon_fp_vmla_qqq_scalar): Likewise. - (cortex_a9_neon_fp_vrecps_vrsqrts_ddd): Likewise. - (cortex_a9_neon_fp_vrecps_vrsqrts_qqq): Likewise. - (cortex_a9_neon_bp_simple): Likewise. - (cortex_a9_neon_bp_2cycle): Likewise. - (cortex_a9_neon_bp_3cycle): Likewise. - (cortex_a9_neon_ldr): Likewise. - (cortex_a9_neon_str): Likewise. - (cortex_a9_neon_vld1_1_2_regs): Likewise. - (cortex_a9_neon_vld1_3_4_regs): Likewise. - (cortex_a9_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. - (cortex_a9_neon_vld2_4_regs): Likewise. - (cortex_a9_neon_vld3_vld4): Likewise. - (cortex_a9_neon_vst1_1_2_regs_vst2_2_regs): Likewise. - (cortex_a9_neon_vst1_3_4_regs): Likewise. - (cortex_a9_neon_vst2_4_regs_vst3_vst4): Likewise. - (cortex_a9_neon_vst3_vst4): Likewise. - (cortex_a9_neon_vld1_vld2_lane): Likewise. - (cortex_a9_neon_vld3_vld4_lane): Likewise. - (cortex_a9_neon_vst1_vst2_lane): Likewise. - (cortex_a9_neon_vst3_vst4_lane): Likewise. - (cortex_a9_neon_vld3_vld4_all_lanes): Likewise. - (cortex_a9_neon_mcr): Likewise. - (cortex_a9_neon_mcr_2_mcrr): Likewise. - * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute change. - (cortex_a9_fps): Likewise. - * config/arm/cortex-m4-fpu.md (cortex_m4_vmov_2): Update for attribute - change. - (cortex_m4_fmuls): Likewise. - * config/arm/cortex-r4f.md (cortex_r4_mcr): Update for attribute - change. - (cortex_r4_mrc): Likewise. - * config/arm/iterators.md: Update comment referring to neon_type. - * config/arm/iwmmxt.md (iwmmxt_arm_movdi): Update for attribute change. - (iwmmxt_movsi_insn): Likewise. - * config/arm/marvell-pj4.md (pj4_vfp_to_core): Update for - attribute change. - (pj4_core_to_vfp): Likewise. - * config/arm/neon-schedgen.ml (emit_insn_reservations): Update for - attribute change. - * config/arm/vfp11.md (vfp_fload): Update for attribute change. - (vfp_fstore): Likewise. - * doc/md.texi: Change references to neon_type to refer to type. - -2013-09-04 Dodji Seketeli - - * tree.h (DECL_BUILT_IN): Fix typo in comment. - -2013-09-04 David Edelsohn - - * config/rs6000/rs6000.h (ASM_OUTPUT_DEF_FROM_DECLS): Only emit - lglobl if not weak. - -2013-09-04 Easwaran Raman - - PR middle-end/57370 - * tree-ssa-reassoc.c (get_stmt_uid_with_default): New function, - (build_and_add_sum): Use it. - (appears_later_in_bb): Simplify code. - -2013-09-04 Teresa Johnson - - * dumpfile.c (dump_finish): Don't close stderr/stdout. - -2013-09-04 James Greenhalgh - - * config/aarch64/arm_neon.h (vaddvq_64): Fix return types. - -2013-09-04 Jan Hubicka - - * Makefile.in (ipa-devirt.o): Add dependency on diagnostic.h - * ipa-devirt.c: Include diganostic.h - (odr_type_d): Add types and types_set. - (hash_type_name): Work for types with vtables during LTO. - (odr_hasher::remove): Fix comment; destroy types_set. - (add_type_duplicate): New function, - (get_odr_type): Use it. - (dump_type_inheritance_graph): Dump type duplicates. - * ipa.c (symtab_remove_unreachable_nodes): Build type inheritance - graph. - * tree.c (types_same_for_odr): Give exact answers on types with - virtual tables. - -2013-09-04 Dodji Seketeli - - * tree.h (DECL_BUILT_IN, DECL_IS_BUILTIN): Add more comments - explaining their differences. - -2013-09-04 Sandeep Kumar Singh - - * config/rx/rx.h: Add option -mcpu for target variants RX100 and RX200. - -2013-09-03 Jeff Law - - * tree-ssa-threadedge.c (thread_across_edge): Record entire path - when not threading through a joiner block. Pass joiner/no joiner - state to register_jump_thread. - * tree-ssa-threadupdate.c (register_jump_thread): Get joiner/no joiner - state from argument rather than implying on path length. - Dump the entire jump thread path into debugging dump. - * tree-flow.h (register_jump_thread): Update prototype. - -2013-08-29 Xinliang David Li - - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): - Remove a trivial gcc_assert. - -2013-08-29 Xinliang David Li - - * tree-vect-slp.c (destroy_bb_vec_info): Data ref cleanup. - * tree-vect-loop.c (destroy_bb_vec_info): Ditto. - * tree-vect-data-refs.c (vect_compute_data_ref_alignment): - Delay base decl alignment adjustment. - * tree-vectorizer.c (vect_destroy_datarefs): New function. - * tree-vectorizer.h: New data structure. - (set_dr_misalignment): New function. - (dr_misalignment): Ditto. - * tree-vect-stmts.c (vectorizable_store): Ensure alignment. - (vectorizable_load): Ditto. - (ensure_base_align): New function. - (vectorize_loops): Add dbg_cnt support. - (execute_vect_slp): Ditto. - * dbgcnt.def: New debug counter. - * Makefile: New dependency. - -2013-09-03 Meador Inge - - Revert: - - 2013-08-30 Meador Inge - - * tree-vrp.c (check_array_ref): Bail out on zero-length arrays. - -2013-09-03 David Edelsohn - - * config/rs6000/rs6000.h (ASM_OUTPUT_DEF_FROM_DECLS): Emit lglobl for - function descriptor. - -2013-09-03 Richard Biener - - * tree-affine.c (add_elt_to_tree): Fix association issue, - avoid useless converts and make sure to always return a - properly typed result. - -2013-09-03 Richard Biener - - PR middle-end/57656 - * fold-const.c (negate_expr_p): Fix division case. - (negate_expr): Likewise. - -2013-09-03 Richard Biener - - PR lto/58285 - * tree-streamer-out.c: Include tm.h. - * Makefile.in (tree-streamer-out.o): Depend on $(TM_H). - -2013-09-03 Jan Hubicka - - * tree-profile.c (tree_profiling): Cleanup CFG when done. - -2013-09-03 Alan Modra - - * config.gcc (powerpc*-*-linux*): Add support for little-endian - multilibs to big-endian target and vice versa. - * config/rs6000/t-linux64: Use := assignment on all vars. - (MULTILIB_EXTRA_OPTS): Remove fPIC. - (MULTILIB_OSDIRNAMES): Specify using mapping from multilib_options. - * config/rs6000/t-linux64le: New file. - * config/rs6000/t-linux64bele: New file. - * config/rs6000/t-linux64lebe: New file. - -2013-09-02 Jan Hubicka - - * ipa-inline-transform.c (inline_transform): Do not - optimize_inline_calls when not optimizing. - -2013-09-02 Jan Hubicka - - * lto-symtab.c (lto_symtab_merge_symbols): Add comments; merge - duplicated nodes for assembler names. - * symtab.c (symtab_unregister_node): Do not attempt to unlink - hard registers from assembler name hash. - -2013-09-02 Jan Hubicka - - * ipa-split.c (execute_split_functions): Split externally visible - functions called once. - -2013-09-02 Martin Jambor - - PR ipa/58106 - * ipa-prop.c (ipa_edge_duplication_hook): Always put new rdesc to the - linked list. When finding the correct duplicate, also consider also - the caller in additon to its inlined_to node. - -2013-09-02 James Greenhalgh - - * config/aarch64/aarch64-simd-builtins.def - (dup_lane_scalar): Remove. - * config/aarch64/aarch64-simd.md - (aarch64_simd_dup): Add 'w->w' alternative. - (aarch64_dup_lane): Allow for VALL. - (aarch64_dup_lane_scalar): Remove. - (aarch64_dup_lane_): New. - (aarch64_get_lane_signed): Add w->w altenative. - (aarch64_get_lane_unsigned): Likewise. - (aarch64_get_lane): Likewise. - * config/aarch64/aarch64.c (aarch64_evpc_dup): New. - (aarch64_expand_vec_perm_const_1): Use aarch64_evpc_dup. - * config/aarch64/iterators.md (VSWAP_WIDTH): New. - (VCON): Change container of V2SF. - (vswap_width_name): Likewise. - * config/aarch64/arm_neon.h - (__aarch64_vdup_lane_any): New. - (__aarch64_vdup_lane_<8,16,32,64>): Likewise. - (vdup_n_<8,16,32,64>): Convert to C implementation. - (vdup_lane_<8,16,32,64>): Likewise. - -2013-09-02 Eric Botcazou - - PR middle-end/56382 - * expr.c (emit_move_complex): Do not move complex FP values as parts if - the source or the destination is a single hard register. - -2013-09-02 Richard Biener - - PR middle-end/57511 - * tree-scalar-evolution.c (instantiate_scev_name): Allow - non-linear SCEVs. - -2013-09-02 Richard Biener - - * tree-affine.c (add_elt_to_tree): Avoid converting all pointer - arithmetic to sizetype. - -2013-09-02 Bin Cheng - - * tree-ssa-loop-ivopts.c (set_autoinc_for_original_candidates): - Find auto-increment use both before and after candidate. - -2013-09-02 Marek Polacek - - * Makefile.in (ubsan.o): Add $(TM_P_H) dependency. - -2013-09-01 Jan Hubicka - - * Makefile.in: Add ipa-profile.o - (ipa.o, ipa-devrit.o, ipa-inline-analysis.o): Adjust dependencies. - * cgraph.c (struct cgraph_propagate_frequency_data, - cgraph_propagate_frequency_1, cgraph_propagate_frequency): Move to - ipa-profile.c; replace cgraph_ by ipa_ prefix. - * cgraph.h (cgraph_propagate_frequency): Remove. - * ipa-inline-analysis.c: Include ipa-utils.h; - drop duplicated cfgloop.h. - (inline_update_callee_summaries): Update. - * ipa-profile.c: New file. - * ipa-utils.h (ipa_propagate_frequency): Declare. - * ipa.c: Do not include pointer-set.h, hash-table.h, lto-streamer.h, - data-streamer.h, value-prof.h. - (symtab_remove_unreachable_nodes): Update profile. - (struct histogram_entry, histogram, histogram_pool, histogram_hash, - account_time_size, cmp_counts, dump_histogram, - ipa_profile_generate_summary, ipa_profile_write_summary, - ipa_profile_read_summary, ipa_profile, gate_ipa_profile, - pass_data_ipa_profile, pass_ipa_profile, make_pass_ipa_profile): - Move to ipa-profile.c. - -2013-09-01 John David Anglin - - * config/pa/pa.md: Allow "const 0" operand 1 in "scc" insns. - -2013-09-01 Jan Hubicka - - * common.opt (fdevirtualize-speculatively): New function. - * invoke.texi (fdevirtualize-speculatively): Document. - * ipa-devirt.c: Include ipa-inline.h - (likely_target_p): New function. - (ipa_devirt): New function. - (gate_ipa_devirt): New function. - (pass_data_ipa_devirt): New static var. - (pass_ipa_devirt): Likewise. - (make_pass_ipa_devirt): New function. - * opts.c (default_options): Add OPT_fdevirtualize_speculatively. - (common_handle_option): Disable devirtualization when - value range profiling is available. - * passes.def (pass_ipa_devirt): Add. - * timever.def (TV_IPA_DEVIRT): New timevar. - * tree-pass.h (make_pass_ipa_devirt): - -2013-09-01 Iain Sandoe - - * config/darwin.h (LINK_COMMAND_SPEC_A): Revise sanitizer specs to - include sanitize(undefined). - -2013-08-31 Diego Novillo - - * Makefile.in (TREE_CORE_H): Define. - (TREE_H): Use. - (GTFILES): Add tree-core.h. - * builtins.c (built_in_class_names): Use BUILT_IN_LAST to - size the array. - * tree-core.h: New file. - Move all data structures, enum, typedefs, global - declarations and constants from ... - * tree.h: ... here. - -2013-08-31 Jan Hubicka - - * bulitins.c (expand_builtin): Do not early exit for gcov - instrumented functions. - -2013-08-31 Marek Polacek - - * ubsan.c: Include tm_p.h. - -2013-08-31 Jan Hubicka - - * gimple-streamer-in.c (input_gimple_stmt): Silence parameter unused - warning. - - * cgraph.c (cgraph_get_body): Update call of lto_input_function_body. - * gimple-streamer-in.c (input_gimple_stmt): Move sanity check to ... - * tree-cfg.c (verify_gimple_label): ... here. - * ipa-utils.c: Include lto-streamer.h, ipa-inline.h - (ipa_merge_profiles): New function. - * lto-streamer-in.c (lto_read_body): Take node instead of fn_decl. - (lto_input_function_body): Likewise. - * ipa-utils.h (ipa_merge_profiles): Declare. - * lto-streamer.h (lto_input_function_body): Update prototype. - (emit_label_in_global_context_p): Remove. - * lto-symtab.c: Include ipa-utils.h - (lto_cgraph_replace_node): Use ipa_merge_profiles. - -2013-08-31 Jan Hubicka - - * cgraph.c (cgraph_speculative_call_info): Fix ref lookup - -2013-08-31 Jan Hubicka - - * basic-block.h (apply_scale): Make scale parmeter gcov_type. - -2013-08-31 Uros Bizjak - - * config/alpha/alpha.c (alpha_emit_conditional_move): Update - "cmp" RTX before signed_comparison_operator check to account - for "code" changes. - -2013-08-30 Jan Hubicka - - * ipa-prop.c (ipa_set_jf_known_type): Check that we add only records. - (detect_type_change_1): Rename to ... - (detect_type_change): ... this one; early return on non-polymorphic - types. - (detect_type_change_ssa): Add comp_type parameter; update - use of detect_type_change. - (compute_complex_assign_jump_func): Add param_type parameter; - update use of detect_type_change_ssa. - (compute_complex_ancestor_jump_func): Likewise. - (ipa_get_callee_param_type): New function. - (ipa_compute_jump_functions_for_edge): Compute parameter type; - update calls to the jump function computation functions. - -2013-08-30 Teresa Johnson - Steven Bosscher - - * cfgrtl.c (fixup_new_cold_bb): New routine. - (commit_edge_insertions): Invoke fixup_partitions. - (find_partition_fixes): New routine. - (fixup_partitions): Ditto. - (verify_hot_cold_block_grouping): Update comments. - (rtl_verify_edges): Invoke find_partition_fixes. - (rtl_verify_bb_pointers): Update comments. - (rtl_verify_bb_layout): Ditto. - * basic-block.h (probably_never_executed_edge_p): Declare. - (fixup_partitions): Ditto. - * cfgcleanup.c (try_optimize_cfg): Invoke fixup_partitions. - * bb-reorder.c (sanitize_hot_paths): New function. - (find_rarely_executed_basic_blocks_and_crossing_edges): Invoke - sanitize_hot_paths. - * predict.c (probably_never_executed_edge_p): New routine. - * cfg.c (check_bb_profile): Add partition insanity warnings. - -2013-08-30 Meador Inge - - * tree-vrp.c (check_array_ref): Bail out on zero-length arrays. - -2013-08-30 Marek Polacek - - * Makefile.in (ubsan.o): Add. - (c-family/c-ubsan.o): Add. - (builtins.o): Add ubsan.h dependency. - * ubsan.h: New file. - * ubsan.c: New file. - * common.opt: Add -fsanitize=undefined option. - (flag_sanitize): Add variable. - (fsanitize=): Add option. Add Driver. - (fsanitize=thread): Remove option. - (fsanitize=address): Likewise. - (static-libubsan): New option. - * doc/invoke.texi: Document the new flag and -static-libubsan. - * sanitizer.def (DEF_SANITIZER_BUILTIN): Define. - (BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE): Define. - * builtin-attrs.def (ATTR_COLD): Define. - (ATTR_COLD_NOTHROW_LEAF_LIST): Define. - * builtins.def (BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW, - BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS): Define. - * flag-types.h (sanitize_code): New enum. - * opts.c (common_handle_option): Parse command line arguments - of -fsanitize=. Add -fsanitize=unreachable option. - * varasm.c (get_variable_section): Adjust. - (assemble_noswitch_variable): Likewise. - (assemble_variable): Likewise. - (output_constant_def_contents): Likewise. - (categorize_decl_for_section): Likewise. - (place_block_symbol): Likewise. - (output_object_block): Likewise. - * builtins.def: Likewise. - * toplev.c (compile_file): Likewise. - (process_options): Likewise. - * cppbuiltin.c: Likewise. - * tsan.c (tsan_pass): Likewise. - (tsan_gate): Likewise. - (tsan_gate_O0): Likewise. - * cfgexpand.c (partition_stack_vars): Likewise. - (expand_stack_vars): Likewise. - (defer_stack_allocation): Likewise. - (expand_used_vars): Likewise. - * cfgcleanup.c (old_insns_match_p): Likewise. - * asan.c (asan_finish_file): Likewise. - (asan_instrument): Likewise. - (gate_asan): Likewise. - (initialize_sanitizer_builtins): Build BT_FN_VOID_PTR_PTR_PTR. - (ATTR_COLD_NOTHROW_LEAF_LIST): Define. - (asan_global_struct): Use pointer_sized_int_node instead - calling build_nonstandard_integer_type. - (initialize_sanitizer_builtins): Likewise. - (asan_finish_file): Likewise. - * gcc.c: Document %{%:function(args):X}. - (static_spec_functions): Add sanitize. - (handle_spec_function): Add retval_nonnull argument and if non-NULL, - store funcval != NULL there. - (do_spec_1): Adjust handle_spec_function caller. - (handle_braces): Allow %:function(args) as condition. - (sanitize_spec_function): New function. - (ADD_STATIC_LIBUBSAN_LIBS): Define. - (LIBUBSAN_SPEC): Likewise. - (LIBUBSAN_EARLY_SPEC): Likewise. - (SANITIZER_SPEC): Handle libubsan. - (SANITIZER_EARLY_SPEC): Likewise. - * config/darwin.h (LINK_COMMAND_SPEC_A): Use %:sanitize(address) - instead of fsanitize=address. - * config/arm/linux-eabi.h (ASAN_CC1_SPEC): Use %:sanitize(address) - instead of fsanitize=address*. - * builtins.c: Include ubsan.h. - (fold_builtin_0): Instrument __builtin_unreachable. - * config/rs6000/rs6000.h (FRAME_GROWS_DOWNWARD): Use flag_sanitize - instead of flag_asan. - * tree.h (enum tree_index): Add TI_POINTER_SIZED_TYPE. - (pointer_sized_int_node): Define. - * tree.c (build_common_tree_nodes): Initialize pointer_sized_int_node. - -2013-08-30 Mike Stump - - * doc/install.texi (Prerequisites): Note regression in Tcl 8.6 - with RE patterns. - -2013-08-29 Jan Hubicka - - * cgraph.c (cgraph_function_body_availability): Handle weakref - correctly. - * passes.def: Remove pass_fixup_cfg. - * ipa-inline.c (ipa_inline): When not optimizing, do not inline; - track when we need to remove functions. - (gate_ipa_inline): Execute inlining always; add comment why. - (pass_data_ipa_inline): Remove TODO_remove_functions. - * ipa-inline-analysis.c (inline_generate_summary): When not optimizing - do not produce summaries. - * symtab.c (change_decl_assembler_name): Handle renaming of weakrefs. - (symtab_nonoverwritable_alias): Assert we are not called on weakref. - * varpool.c (cgraph_variable_initializer_availability): Fix weakrefs, - constant pool and vtable. - -2013-08-30 Tejas Belagod - - * config/aarch64/arm_neon.h (__AARCH64_UINT64_C, __AARCH64_INT64_C): - New arm_neon.h's internal macros to specify 64-bit constants. - Avoid using stdint.h's macros. - -2013-08-30 Joern Rennecke - - * recog.c (verify_changes): Verify that changes[i].old is non-zero - before applying REG_P. - -2013-08-30 Jakub Jelinek - - PR tree-optimization/58277 - * tree-ssa-strlen.c (strlen_enter_block): If do_invalidate gave up - after seeing too many stmts with vdef in between dombb and current - bb, invalidate everything. - -2013-08-30 Richard Biener - - * fold-const.c (fold_single_bit_test): Fix overflow test. - -2013-08-30 Eric Botcazou - - * function.c (assign_parm_setup_reg): For a parameter passed by pointer - and which can live in a register, always retrieve the value on entry. - * var-tracking.c (add_stores): Treat the copy on entry for a parameter - passed by invisible reference specially. - (emit_notes_in_bb) : Emit notes before the instruction. - (vt_add_function_parameter): Correctly deal with a parameter passed by - invisible reference. - -2013-08-30 Jan Hubicka - - * tree.c (set_call_expr_flags): Fix handling of TM_PURE. - -2013-08-30 Richard Biener - - PR tree-optimization/58228 - * tree-vect-data-refs.c (vect_analyze_data_ref_access): Do not - allow invariant loads in nested loop vectorization. - -2013-08-30 Richard Biener - - PR tree-optimization/58223 - * tree-loop-distribution.c (has_anti_dependence): Rename to ... - (has_anti_or_output_dependence): ... this and adjust to also - look for output dependences. - (mark_nodes_having_upstream_mem_writes): Adjust. - (rdg_flag_uses): Likewise. - -2013-08-30 Richard Biener - - PR tree-optimization/58010 - * tree-vect-loop.c (vect_create_epilog_for_reduction): Remove - assert that we have a loop-closed PHI. - -2013-08-29 Jan Hubicka - - * lto-symtab.c (lto_cgraph_replace_node): Free decl_in_state. - * cgraph.c (cgraph_release_function_body): Free decl_in_state. - * lto-section-in.c (lto_free_function_in_decl_state): New function. - (lto_free_function_in_decl_state_for_node): New function. - -2013-08-29 Xinliang David Li - - * loop-unroll.c (report_unroll_peel): Minor message change. - * tree-vect-loop-manip.c (vect_do_peeling_for_alignment): - Emit alignment peeling message with default -fopt-info. - (vect_loop_versioning): Emit loop version info message. - * tree-vectorizer.c (vectorize_loops): Minor message change. - (execute_vect_slp): Ditto. - -2013-08-29 Eric Botcazou - - * cgraphclones.c (cgraph_create_virtual_clone): Compute the DECL_NAME - of the clone from the DECL_NAME of the original function. - -2013-08-29 Oleg Endo - - * passes.c (register_pass): Add overload. - * tree-pass.h (register_pass): Forward declare it. Add comment. - -2013-08-29 Jan Hubicka - - * lto-streamer-out.c (hash_tree): Stream DECL_FINAL_P, - DECL_CXX_CONSTRUCTOR_P, DECL_CXX_DESTRUCTOR_P and TYPE_FINAL_P. - * lto-streamer-in.c (unpack_ts_decl_with_vis_value_fields): Stream - DECL_FINAL_P, DECL_CXX_CONSTRUCTOR_P and DECL_CXX_DESTRUCTOR_P. - (unpack_ts_type_common_value_fields): Stream TYPE_FINAL_P. - * tree-streamer-out.c (pack_ts_decl_with_vis_value_fields): - Add DECL_FINAL_P, DECL_CXX_CONSTRUCTOR_P and DECL_CXX_DESTRUCTOR_P. - (pack_ts_type_common_value_fields): Add TYPE_FINAL_P. - -2013-08-29 Teresa Johnson - - * dumpfile.c (dump_loc): Output column number. - * dumpfile.h (OPTGROUP_OTHER): Add and enable under OPTGROUP_ALL. - * doc/invoke.texi: Document optall -fopt-info flag. - * profile.c (read_profile_edge_counts): Use new dump framework. - (compute_branch_probabilities): Ditto. - * passes.c (pass_manager::register_one_dump_file): Use OPTGROUP_OTHER - when pass not in any opt group. - * pass_manager.h (pass_manager::get_pass_profile): New method. - * value-prof.c (check_counter): Use new dump framework. - (check_ic_target): Ditto. - * coverage.c (get_coverage_counts): Ditto. - (coverage_init): Setup new dump framework. - -2013-08-29 Richard Biener - - PR tree-optimization/58246 - * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Properly - handle the dominance check inside a basic-block. - -2013-08-29 Richard Biener - - PR middle-end/57287 - * tree-ssa-copy.c (may_propagate_copy): Allow propagating - of default defs that appear in abnormal PHI nodes. - -2013-08-29 Richard Biener - - PR tree-optimization/57685 - * tree-vrp.c (register_edge_assert_for_1): Recurse only for - single-use operands to avoid exponential complexity. - -2013-08-28 Dehao Chen - - * ipa-inline.c (edge_badness): Fix integer underflow. - -2013-08-28 Uros Bizjak - - * gtm-builtins.def (_ITM_free): Declare leaf. - -2013-08-28 Jakub Jelinek - - PR target/58067 - * config/i386/i386.md (*tls_global_dynamic_64_largepic): New insn. - (*tls_local_dynamic_base_64_largepic): Likewise. - (tls_global_dynamic_64_, tls_local_dynamic_base_64_): - Remove predicate from call operand. - * config/i386/i386.c (ix86_tls_get_addr): For -mcmodel=large -fpic - return sum of pic_offset_table_rtx and UNSPEC_PLTOFF of the symbol. - -2013-08-28 Jeff Law - - * tree-ssa-threadedge.c (thread_around_empty_block): Remove - checks for the number of predecessors and successors allowed. - * tree-ssa-threadupdate.c (mark_threaded_blocks): Ignore requests - which require copying a joiner block if there is a request which - is a subpath that requires no joiner block copying. - -2013-08-28 Jan Hubicka - - * lto-streamer-out.c (DFS_write_tree_body): Drop - BINFO_INHERITANCE_CHAIN, BINFO_SUBVTT_INDEX and BINFO_VPTR_INDEX. - (hash_tree): Do not hash DECL_DEFER_OUTPUT, BINFO_INHERITANCE_CHAIN, - BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, DECL_IN_TEXT_SECTION. - * tree-streamer-in.c (unpack_ts_decl_common_value_fields): - Do not read DECL_ERROR_ISSUED. - (unpack_ts_decl_with_vis_value_fields): Do not read - DECL_DEFER_OUTPUT. - (lto_input_ts_binfo_tree_pointers): Do not read - BINFO_INHERITANCE_CHAIN, BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX - * tree-streamer-out.c (pack_ts_decl_common_value_fields): Do not - write DECL_ERROR_ISSUED.. - (pack_ts_decl_with_vis_value_fields): Do not write - DECL_DEFER_OUTPUT. - (write_ts_binfo_tree_pointers): Do not read BINFO_INHERITANCE_CHAIN, - BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX. - * print-tree.c (print_node): Do not print DECL_ERROR_ISSUED. - * tree.h (tree_decl_common): Update comment. - (DECL_ERROR_ISSUED): Remove. - -2013-08-28 Jakub Jelinek - - PR middle-end/58257 - * omp-low.c (copy_var_decl): Copy over TREE_NO_WARNING flag. - -2013-08-28 Jan Hubicka - - * builtins.def (free): Declare leaf. - -2013-08-27 David Malcolm - - * gdbhooks.py: New. - * configure.ac (gdbinit.in): Add import of gcc/gdbhooks.py. - * configure: Regenerate. - -2013-08-27 Martin Jambor - - * ipa-prop.h (ipa_pass_through_data): New field type_preserved. - (ipa_ancestor_jf_data): Likewise. - (ipa_get_jf_pass_through_agg_preserved): Fix comment typo. - (ipa_get_jf_pass_through_type_preserved): New function. - (ipa_get_jf_ancestor_agg_preserved): Fix comment typo. - (ipa_get_jf_ancestor_type_preserved): New function. - * ipa-cp.c (ipa_get_jf_pass_through_result): Honor type_preserved flag. - (ipa_get_jf_ancestor_result): Likewise. - (propagate_vals_accross_pass_through): Use - ipa_get_jf_pass_through_result to do all the value mappings. - * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Dump the - type_preserved flag. - (ipa_set_jf_cst_copy): New function. - (ipa_set_jf_simple_pass_through): Set the type_preserved flag. - (ipa_set_jf_arith_pass_through): Likewise. - (ipa_set_ancestor_jf): Likewise. - (compute_complex_assign_jump_func): Set type_preserved instead of - punting. - (ipa_compute_jump_functions_for_edge): Likewise. - (combine_known_type_and_ancestor_jfs): Honor type_preserved. - (update_jump_functions_after_inlining): Update type_preserved. - Explicitely create jump functions when combining one with pass_through. - (ipa_write_jump_function): Stream the type_preserved flags. - (ipa_read_jump_function): Likewise. - -2013-08-27 Jakub Jelinek - Aldy Hernandez - - * Makefile.in (omp-low.o): Depend on $(TARGET_H). - * cfgloop.h (struct loop): Add safelen, force_vect, simduid. - * function.h (struct function): Add has_force_vect_loops and - has_simduid_loops. - * gimple-pretty-print.c (dump_gimple_omp_for): Handle GF_OMP_FOR_KIND*. - * gimple.c (gimple_build_omp_critical): Add KIND argument and - handle it. - * gimple.def: Update CLAUSES comments. - * gimple.h (enum gf_mask): Add GF_OMP_FOR_KIND_{FOR,SIMD}. - (gimple_build_omp_for): Add argument to prototype. - (gimple_omp_for_kind): New. - (gimple_omp_for_set_kind): New. - * gimplify.c (enum gimplify_omp_var_data): Add GOVD_LINEAR to - GOVD_DATA_SHARE_CLASS. - (enum omp_region_type): Add ORT_SIMD. - (gimple_add_tmp_var): Handle ORT_SIMD. - (gimplify_var_or_parm_decl): Same. - (is_gimple_stmt): Same. - (omp_firstprivatize_variable): Same. - (omp_add_variable): Only use splay_tree_insert if lookup failed. - (omp_notice_variable): Handle ORT_SIMD. - (omp_is_private): Add SIMD argument and handle it as well as ORT_SIMD. - (omp_check_private): Handle ORT_SIMD. - (gimplify_scan_omp_clauses): Handle OMP_CLAUSE_LINEAR and - OMP_CLAUSE_SAFELEN. - (gimplify_adjust_omp_clauses_1): Handle GOVD_LINEAR. - Handle OMP_CLAUSE_LASTPRIVATE. - (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_LINEAR and - OMP_CLAUSE_SAFELEN. - (gimplify_omp_for): Handle OMP_SIMD and OMP_CLAUSE_LINEAR. - (gimplify_expr): Handle OMP_SIMD. - * internal-fn.c (expand_GOMP_SIMD_LANE): New. - (expand_GOMP_SIMD_VF): New. - (expand_GOMP_SIMD_LAST_LANE): New. - * internal-fn.def (GOMP_SIMD_LANE): New. - (GOMP_SIMD_VF): New. - (GOMP_SIMD_LAST_LANE): New. - * omp-low.c: Include target.h. - (extract_omp_for_data): Handle OMP_SIMD, OMP_CLAUSE_LINEAR, - OMP_CLAUSE_SAFELEN. - (check_omp_nesting_restrictions): Same. - (omp_max_vf): New. - (lower_rec_simd_input_clauses): New. - (lower_rec_input_clauses): Handle OMP_SIMD, GF_OMP_FOR_KIND_SIMD, - OMP_CLAUSE_LINEAR. - (lower_lastprivate_clauses): Handle OMP_CLAUSE_LINEAR, - GF_OMP_FOR_KIND_SIMD, OMP_SIMD. - (expand_omp_build_assign): New. - (expand_omp_for_init_counts): New. - (expand_omp_for_init_vars): New. - (extract_omp_for_update_vars): New. - (expand_omp_for_generic): Use expand_omp_for_{init,update}_vars - and rewrite accordingly. - (expand_omp_simd): New. - (expand_omp_for): Use expand_omp_simd. - (lower_omp_for_lastprivate): Unshare vinit when appropriate. - (lower_omp_for): Do not lower the body. - * tree-data-ref (get_references_in_stmt): Allow IFN_GOMP_SIMD_LANE - in their own loops. - * tree-flow.h (find_omp_clause): Remove prototype. - * tree-if-conv.c (main_tree_if_conversion): Run if doing if conversion, - forcing vectorization of the loop, or if flag_tree_vectorize. - (gate_tree_if_conversion): Similarly. - * tree-inline.c (remap_gimple_stmt): Pass for kind argument to - gimple_build_omp_for. - (copy_cfg_body): set has_force_vect_loops and has_simduid_loops. - * tree-parloops (create_parallel_loop): Pass kind argument to - gimple_build_omp_for. - * tree-pretty-print.c (dump_omp_clause): Add cases for - OMP_CLAUSE_UNIFORM, OMP_CLAUSE_LINEAR, OMP_CLAUSE_SAFELEN, - OMP_CLAUSE__SIMDUID_. - (dump_generic_node): Handle OMP_SIMD. - * tree-ssa-ccp.c (likely_value): Handle IFN_GOMP_SIMD*. - * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Do not - unroll OMP_SIMD loops here. - * tree-ssa-loop.c (gate_tree_vectorize): Run if has_force_vect_loops. - * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Handle - loop->safelen. - (vect_analyze_data_refs): Handle simd loops. - * tree-vect-loop.c (vectorizable_live_operation): Handle - IFN_GOMP_SIMD*. - * tree-vect-stmts.c (vectorizable_call): Handle IFN_GOMP_SIMD_LANE. - (vectorizable_store): Handle STMT_VINFO_SIMD_LANE_ACCESS_P. - (vectorizable_load): Same. - * tree-vectorizer.c: Include hash-table.h and tree-ssa-propagate.h. - (struct simduid_to_vf): New. - (simduid_to_vf::hash): New. - (simduid_to-vf::equal): New. - (struct simd_array_to_simduid): New. - (simd_array_to_simduid::hash): New. - (simd_array_to_simduid::equal): New. - (adjust_simduid_builtins): New. - (struct note_simd_array_uses_struct): New. - (note_simd_array_uses_cb): New. - (note_simd_array_uses): New. - (vectorize_loops): Handle simd hints and adjust simd builtins - accordingly. - * tree-vectorizer.h (struct _stmt_vec_info): Add - simd_lane_access_p field. - (STMT_VINFO_SIMD_LANE_ACCESS_P): New macro. - * tree.c (omp_clause_num_ops): Add entries for OMP_CLAUSE_LINEAR, - OMP_CLAUSE_SAFELEN, OMP_CLAUSE__SIMDUID_, OMP_CLAUSE_UNIFORM. - (omp_clause_code_name): Same. - (walk_tree_1): Handle OMP_CLAUSE_UNIFORM, OMP_CLAUSE_SAFELEN, - OMP_CLAUSE__SIMDUID_, OMP_CLAUSE_LINEAR. - * tree.def (OMP_SIMD): New entry. - * tree.h (enum omp_clause_code): Add entries for OMP_CLAUSE_LINEAR, - OMP_CLAUSE_UNIFORM, OMP_CLAUSE_SAFELEN, OMP_CLAUSE__SIMDUID_. - (OMP_CLAUSE_DECL): Adjust range for new clauses. - (OMP_CLAUSE_LINEAR_NO_COPYIN): New. - (OMP_CLAUSE_LINEAR_NO_COPYOUT): New. - (OMP_CLAUSE_LINEAR_STEP): New. - (OMP_CLAUSE_SAFELEN_EXPR): New. - (OMP_CLAUSE__SIMDUID__DECL): New. - (find_omp_clause): New prototype. - -2013-08-27 H.J. Lu - - * config/i386/driver-i386.c (host_detect_local_cpu): Update - Haswell processor detection. - -2013-08-27 Christian Widmer - - PR target/57927 - * config/i386/driver-i386.c (host_detect_local_cpu): Add detection - of Ivy Bridge and Haswell processors. Assume core-avx2 for unknown - AVX2 capable processors. - -2013-08-27 Tejas Belagod - - * config/aarch64/arm_neon.h: Replace all inline asm implementations - of vget_low_* with implementations in terms of other intrinsics. - -2013-08-27 Marc Glisse - - PR middle-end/57219 - * doc/extend.texi (__builtin_isinf_sign): Restrict the return - values to -1, 0 and 1. - -2013-08-27 Vidya Praveen - - * config/aarch64/aarch64.md (unspec): Add UNSPEC_SISD_SSHL, - UNSPEC_SISD_USHL, UNSPEC_USHL_2S, UNSPEC_SSHL_2S, UNSPEC_SISD_NEG. - (3_insn): Remove. - (aarch64_ashl_sisd_or_int_3): New Pattern. - (aarch64_lshr_sisd_or_int_3): Likewise. - (aarch64_ashr_sisd_or_int_3): Likewise. - (define_split for aarch64_lshr_sisd_or_int_di3): Likewise. - (define_split for aarch64_lshr_sisd_or_int_si3): Likewise. - (define_split for aarch64_ashr_sisd_or_int_di3): Likewise. - (define_split for aarch64_ashr_sisd_or_int_si3): Likewise. - (aarch64_sisd_ushl, aarch64_sisd_sshl): Likewise. - (aarch64_ushl_2s, aarch64_sshl_2s, aarch64_sisd_neg_qi): Likewise. - (ror3_insn): Likewise. - * config/aarch64/predicates.md (aarch64_simd_register): New. - -2013-08-27 Richard Biener - - PR tree-optimization/57521 - * tree-if-conv.c (if_convertible_bb_p): Verify that at least - one edge is non-critical. - (find_phi_replacement_condition): Make sure to use a non-critical - edge. Cleanup and remove old bug workarounds. - (bb_postdominates_preds): Remove. - (if_convertible_loop_p_1): Do not compute post-dominators. - (combine_blocks): Do not free post-dominators. - (main_tree_if_conversion): Likewise. - (pass_data_if_conversion): Add TODO_verify_ssa. - -2013-08-27 DJ Delorie - - * config/i386/djgpp.h (ASM_DECLARE_FUNCTION_NAME): New. - -2013-08-27 Yufeng Zhang - - * function.c (assign_parm_find_data_types): Set passed_mode and - nominal_mode to the TYPE_MODE of nominal_type for the built - pointer type in case of the struct-pass-by-reference. - -2013-08-26 Joern Rennecke - - * config/avr/avr-stdint.h (INT16_TYPE): Change default to "int". - (UINT16_TYPE): Change default to "unsigned int". - - * config/avr/avr.opt (mfract-convert-truncate): New option. - * config/avr/avr.c (avr_out_fract): Unless TARGET_FRACT_CONV_TRUNC - is set, round negative fractional integers according to n1169 - when converting to integer types. - -2013-08-26 Jan Hubicka - - * cgraph.c (cgraph_propagate_frequency): Do not assume that virtual - methods can not be called indirectly when their address is not taken. - -2013-08-26 Jan Hubicka - - * gimple-fold.c (gimple_get_virt_method_for_binfo): Use - ctor_for_folding. - -2013-08-26 Jan Hubicka - - * ipa.c (comdat_can_be_unshared_p_1): C++ constructors and destructors - can be unshared. - -2013-08-26 Joern Rennecke - - * reload.c (find_valid_class): Allow classes that do not include - FIRST_PSEUDO_REGISTER - 1. - -2013-08-26 Jan Hubicka - - * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Fix formatting; - fix edge count/frequency when speculation failed; fix type check - for the direct call. - -2013-08-26 Jan Hubicka - - * ipa-prop.c (ipa_print_node_params): Do not ICE during WPA. - -2013-08-26 Jan Hubicka - - * ipa-inline-transform.c (inline_transform): Be ready for basic block - to be changed by edge redirection. - -2013-08-26 Jan Hubicka - - * cgraph.c (cgraph_speculative_call_info): Fix parameter order and - formating; add sanity check. - (cgraph_resolve_speculation): Add FIXME about scaling profiles. - (cgraph_redirect_edge_call_stmt_to_callee): Fix ICE in debug dump. - * ipa-inline.c (heap_edge_removal_hook): Reset node growth cache. - (resolve_noninline_speculation): Update callee keys, too. - -2013-08-26 Jan Hubicka - - * tree.h (tree_decl_with_vis): Add cxx_constructor, cxx_destructor. - (DECL_CXX_CONSTRUCTOR_P, DECL_CXX_DESTRUCTOR_P): New macros. - -2013-08-26 Joern Rennecke - - * config/i386/i386.c (x86_64_elf_select_section): Put ATTRIBUTE_UNUSED - into proper place. - -2013-08-26 Uros Bizjak - - * config/i386/i386.c (ix86_debug_options): Remove prototype. - (x86_64_elf_select_section): Ditto. - (ix86_handle_tm_regparm_attribute): Remove ATTRIBUTE_UNUSED on used - arguments. - (ix86_pass_by_reference): Ditto. - (output_set_got): Ditto. - (ix86_unary_operator_ok): Ditto. - (ix86_expand_builtin): Ditto. - -2013-08-23 Jan Hubicka - - * cgraph.c (cgraph_turn_edge_to_speculative): Fix debug output. - -2013-08-23 Jan Hubicka - - * tree.h (TYPE_FINAL_P, DECL_FINAL_P): New macros. - (tree_decl_with_vis): Add FINAL field. - -2013-08-23 Jeff Law - - * tree-ssa-pre.c (do_regular_insertion): Include the expression in - the debugging dump when the expression is fully redundant. - -2013-08-23 Gabriel Dos Reis - - * diagnostic.c (diagnostic_set_caret_max_width): Use pp_buffer. - * gimple-pretty-print.c (gimple_dump_bb_buff): Likewise. - * pretty-print.c (pp_formatted_text_data): Likewise. - (pp_write_text_to_stream): Likewise. - (pp_write_text_as_dot_label_to_stream): Likewise. - (pp_append_r): Likewise. - (pp_format): Likewise. - (pp_flush): Likewise. - (pp_clear_output_area): Likewise. - (pp_append_text): Likewise. - (pp_formatted_text): Likewise. - (pp_remaining_character_count_for_line): Likewise. - (pp_newline): Likewise. - (pp_character): Likewise. - (output_buffer::~output_buffer): Define. - (pretty_printer::~pretty_printer): Destruct output buffer. - * pretty-print.h (output_buffer::~output_buffer): Declare. - (pretty_printer::~pretty_printer): Declare virtual. - -2013-08-24 Marc Glisse - - PR other/57324 - * hwint.h (HOST_WIDE_INT_UC, HOST_WIDE_INT_1U, HOST_WIDE_INT_M1, - HOST_WIDE_INT_M1U): New macros. - * fold-const.c (sign_bit_p, build_range_check, fold_unary_loc, - fold_binary_loc, fold_ternary_loc): Use the new macros. Use an - unsigned -1 for lshift. - * cse.c (cse_insn): Likewise. - * double-int.c (rshift_double, lshift_double): Likewise. - * builtins.c (fold_builtin_bitop): Likewise. - * combine.c (force_to_mode): Likewise. - * tree.c (integer_pow2p, tree_log2, tree_floor_log2): Likewise. - * simplify-rtx.c (simplify_const_unary_operation, - simplify_const_binary_operation): Likewise. - * tree-stdarg.c (va_list_counter_bump, va_list_ptr_read, - check_va_list_escapes): Likewise. - * rtlanal.c (nonzero_bits1): Likewise. - * expmed.c (expand_smod_pow2): Likewise. - * tree-ssa-structalias.c (UNKNOWN_OFFSET): Use HOST_WIDE_INT_MIN. - -2013-08-23 Jan Hubicka - - * cgraph.c (cgraph_turn_edge_to_speculative): Mark target node - as having address taken. - -2013-08-23 Jan Hubicka - - * ipa-utils.h (method_class_type): Declare. - * ipa-devirt.c (method_class_type): Export. - - * cgraphunit.c (analyze_functions): Do basic devirtualization; - do not walk base classes of anonymous types. - -2013-08-23 Kaz Kojima - - PR rtl-optimization/58220 - PR regression/58221 - * final.c (reemit_insn_block_notes): Use NEXT_INSN to - handle SEQUENCE insns properly. - -2013-08-23 Gabriel Dos Reis - - * pretty-print.h (pp_newline_and_flush): Declare. Remove macro - definition. - (pp_newline_and_indent): Likewise. - (pp_separate_with): Likewise. - * pretty-print.c (pp_newline_and_flush): Define. - (pp_newline_and_indent): Likewise. - (pp_separate_with): Likewise. - -2013-08-23 Jakub Jelinek - - PR target/58218 - * config/i386/x86-64.h (TARGET_SECTION_TYPE_FLAGS): Define. - * config/i386/i386.c (x86_64_elf_section_type_flags): New function. - -2013-08-23 Kirill Yukhin - - * config/i386/predicates.md (ext_sse_reg_operand): New. - * config/i386/i386.md (*movti_internal): Use - predicate to determine if EVEX is needed. - (*movsi_internal): Ditto. - (*movdf_internal): Ditto. - (*movsf_internal): Ditto. - * config/i386/mmx.md (*mov_internal): Ditto. - -2013-08-23 Jakub Jelinek - - PR tree-optimization/58209 - * tree-tailcall.c (process_assignment): Handle POINTER_PLUS_EXPR. - (find_tail_calls): Give up for pointer result types if m is non-NULL. - (adjust_return_value_with_ops): For PLUS_EXPR and pointer result type - emit POINTER_PLUS_EXPR. - (create_tailcall_accumulator): For pointer result type accumulate in - sizetype type. - -2013-08-22 Paolo Carlini - - * configure.ac: Add backslashes missing from the last change. - * configure: Regenerate. - -2013-08-22 Jan Hubicka - - * ipa.c (function_and_variable_visibility): First remember function - was global and then make it local. - -2013-08-22 Julian Brown - - * configure.ac: Add aarch64 to list of arches which use "nop" in - debug_line test. - * configure: Regenerate. - -2013-08-22 Andreas Krebbel - - * config/s390/linux.h (TARGET_LIBC_HAS_FUNCTION): Define as - gnu_libc_has_function. - * config/s390/tpf.h: Likewise. - -2013-08-22 Jan Hubicka - - * timevar.c (validate_phases): Add cast. - -2013-08-22 Jan Hubicka - - * timevar.c (validate_phases): Use size_t for memory. - * timevar.h (struct timevar_time_def): Use size_t for ggc_mem. - -2013-08-22 Gabriel Dos Reis - - * pretty-print.h (output_buffer::output_buffer): Declare. - (pretty_printer::pretty_printer): Likewise. - (pp_construct): Remove. - * pretty-print.c (output_buffer::output_buffer): Define. - (pretty_printer::pretty_printer): Rename from pp_construct. Simplify. - * gimple-pretty-print.c (print_gimple_stmt): Do not call pp_construct. - (print_gimple_expr): Likewise. - (print_gimple_seq): Likewise. - (gimple_dump_bb): Likewise. - * sched-vis.c (dump_value_slim): Likewise. - (dump_insn_slim): Likewise. - (dump_rtl_slim): Likewise. - (str_pattern_slim): Likewise. - * tree-mudflap.c (mf_varname_tree): Likewise. - * graph.c (print_graph_cfg): Likewise. - (start_graph_dump): Likewise. - * tree-pretty-print.c (maybe_init_pretty_print): Likewise. Use - placement-new. - * diagnostic.c (diagnostic_initialize): Simplify early diagnostic - pretty printer initialization. - * coretypes.h (diagnostic_context): Remove superflous type alias - declaration. - (pretty_printer): Likewise. Declare directly as a class. - (pretty_print_info): Remove declaration as class. - * asan.c (asan_emit_stack_protection): Remove call to pp_construct - and pp_clear_output_area. - (asan_add_global): Likewise. - -2013-08-22 Jan Hubicka - - * cgraphunit.c (analyze_functions) Use update_type_inheritance_graph. - * ipa-utils.h (update_type_inheritance_graph): Declare. - (possible_polymorphic_call_target_p): Declare. - (possible_polymorphic_call_target_p): New. - * ipa-devirt.c: Update toplevel comments. - (cached_polymorphic_call_targets): Move up. - (odr_type_d): Move ID down. - (polymorphic_type_binfo_p): Update comment. - (odr_hasher::remove): Likewise; - (get_odr_type): Set anonymous_namespace. - (dump_odr_type): Dump it. - (dump_type_inheritance_graph): Do not ICE when there are no ODR types. - (maybe_record_node): Record node in cached_polymorphic_call_targets. - (record_binfo): Add comment. - (free_polymorphic_call_targets_hash): Do not ICE when cache is not - built. - (devirt_node_removal_hook): Do not iCE when cache is freed. - (possible_polymorphic_call_target_p): New predicate. - (update_type_inheritance_graph): New function. - -2013-08-22 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_SET): New. - (OPTION_MASK_ISA_AVX512CD_SET): Ditto. - (OPTION_MASK_ISA_AVX512PF_SET): Ditto. - (OPTION_MASK_ISA_AVX512ER_SET): Ditto. - (OPTION_MASK_ISA_AVX2_UNSET): Update. - (OPTION_MASK_ISA_AVX512F_UNSET): New. - (OPTION_MASK_ISA_AVX512CD_UNSET): Ditto. - (OPTION_MASK_ISA_AVX512PF_UNSET): Ditto. - (OPTION_MASK_ISA_AVX512ER_UNSET): Ditto. - (ix86_handle_option): Handle OPT_mavx512f, OPT_mavx512cd, - OPT_mavx512pf, OPT_mavx512er cases. - * config/i386/constraints.md (v): New constraint. - (Yi, Yj): Replace SSE_REGS with ALL_SSE_REGS. - * config/i386/cpuid.h (bit_AVX512F, bit_AVX512PF, bit_AVX512ER) - (bit_AVX512CD): New. - * config/i386/driver-i386.c (host_detect_local_cpu): Detect - AVX512F, AVX512ER, AVX512PF, AVX512CD features. - * config/i386/i386-c.c (ix86_target_macros_internal): - Conditionally define __AVX512F__, __AVX512ER__, __AVX512CD__, - __AVX512PF__. - * config/i386/i386-modes.def (VECTOR_MODES (INT, 128)) - (VECTOR_MODES (FLOAT, 128), INT_MODE (XI, 64)): New modes. - * config/i386/i386.c (regclass_map, dbx_register_map) - (dbx64_register_map, svr4_dbx_register_map): Add new SSE registers. - (gate_insert_vzeroupper): Disable vzeroupper for TARGET_AVX512F. - (ix86_target_string): Define -mavx512f, -mavx512er, -mavx512cd, - -mavx512pf options. - (ix86_option_override_internal): Define PTA_AVX512F, PTA_AVX512ER, - PTA_AVX512PF, PTA_AVX512CD. Handle -mavx512f, -mavx512er, -mavx512cd, - -mavx512pf options. Fix formatting. - (ix86_conditional_register_usage): Squash EXT_REX_SSE_REGs for 32-bit - targets. Squash EVEX_SSE_REGS if AVX512F is disabled. - (ix86_valid_target_attribute_inner_p): Handle -mavx512f, -mavx512er, - -mavx512cd, -mavx512pf options. - (standard_sse_constant_opcode): Add vpternlogd for 512-bit modes. - (print_reg, ix86_print_operand): Handle 'g' to output 512-bit operands. - (ix86_preferred_output_reload_class): Replace SSE_REGS with - ALL_SSE_REGS. - (ix86_hard_regno_mode_ok): Support 512-bit registers. - (ix86_set_reg_reg_cost): Ditto. - (x86_order_regs_for_local_alloc): Ditto. - (MAX_VECT_LEN): Extend to 64-byte. - (ix86_spill_class): Replace SSE_REGS with ALL_SSE_REGS. - * config/i386/i386.h (TARGET_AVX512F, TARGET_AVX512PF) - (TARGET_AVX512ER, TARGET_AVX512CD): New. - (BIGGEST_ALIGNMENT): Extend to 512-bits. - (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS): Add new registers. - (CALL_USED_REGISTERS, REG_ALLOC_ORDER): Likewise. - (VALID_AVX512F_SCALAR_MODE, VALID_AVX512F_REG_MODE): New. - (SSE_REG_MODE_P): Support new modes. - (FIRST_MMX_REG, FIRST_REX_INT_REG, FIRST_REX_SSE_REG): Add comments. - (FIRST_EXT_REX_SSE_REG, LAST_EXT_REX_SSE_REG): New. - (reg_class, REG_CLASS_NAMES): Add EVEX_SSE_REGS, ALL_SSE_REGS. - (SSE_CLASS_P, MAYBE_SSE_CLASS_P): Replace SSE_REGS with ALL_SSE_REGS. - (REG_CLASS_CONTENTS): Add new registers. - (SSE_REGNO_P, SSE_REGNO, HARD_REGNO_RENAME_OK): Support new registers. - (EXT_REX_SSE_REGNO_P): New. - (HI_REGISTER_NAMES): Add new registers. - * config/i386/i386.md: Define constants for new registers. - (mode): Add new 512-bit modes. - (prefix): Support evex prefix. - (isa): Support avx512f, noavx512f, fma_avx512f. - (ssemodesuffix): Add new 512-bit modes. - (movxi): New. - (*movxi_internal_avx512f): Ditto. - (*movdi_internal): Replace constraint "x" with the new constraint "v". - Support MODE_XI. - (*movsi_internal): Likewise. - (*movdf_internal): Likewise. - (*movsf_internal): Likewise. - (*fop__comm_sse): Replace constraint "x" with new constraint "v". - (3): Likewise. - * config/i386/i386.opt (mavx512f, mavx512pf, mavx512er, mavx512cd): - New. - * config/i386/mmx.md (*mov_internal): Replace constraint "x" - with the new constraint "v". - * config/i386/sse.md (*mov_internal): Support new registers and - modes. - (_loadu): Replace constraint "x" - with the new constraint "v". - (_loaddqu): Likewise. - (_storedqu): Likewise. - (*3): Likewise. - (_vm3): Likewise. - (*mul3): Likewise. - (_vmmul3): Likewise. - (_div3): Likewise. - (_vmdiv3): Likewise. - (_sqrt2): Likewise. - (_vmsqrt2): Likewise. - (*3_finite): Likewise. - (*3) : Likewise. - (_vm3): Likewise. - (*3) : Likewise. - (*fma_fmadd_): Likewise. - (*fma_fmsub_): Likewise. - (*fma_fnmadd_): Likewise. - (*fma_fnmsub_): Likewise. - (*fma_fmaddsub_): Likewise. - (*fma_fmsubadd_): Likewise. - (*fmai_fmadd_): Likewise. - (*fmai_fmsub_): Likewise. - (*fmai_fnmadd_): Likewise. - (*fmai_fnmsub_): Likewise. - (sse_cvtsi2ss): Likewise. - (sse_cvtsi2ssq): Likewise. - (sse_cvtss2si): Likewise. - (sse_cvtss2si_2): Likewise. - (sse_cvtss2siq): Likewise. - (sse_cvtss2siq_2): Likewise. - (sse_cvttss2si): Likewise. - (sse_cvtss2siq_2): Likewise. - (float2): Likewise. - (sse2_cvtsd2si_2): Likewise. - (sse2_cvtsd2siq_2): Likewise. - (*3): Likewise. - (*_3): Likewise. - (*_mul3): Likewise. - (ashr3): Likewise. - (3): Likewise. - (avx2_3): Likewise. - (*avx2_3): Likewise. - (*andnot3): Likewise. - (*3) : Likewise. - (abs2): Likewise. - (avx2_permvar): Likewise. - (avx2_perm_1): Likewise. - (*avx_vpermilp): Likewise. - (avx_vpermilvar3): Likewise. - (avx2_ashrv): Likewise. - (avx2_v): Likewise. - * doc/invoke.texi: Document -mavx512f, -mavx512pf, -mavx512er, - -mavx512cd. - * doc/rtl.texi: Document XImode. - -2013-08-21 Jeff Law - - * tree-flow.h (register_jump_thread): Pass vector of edges - instead of each important edge. - * tree-ssa-threadedge.c (thread_across_edge): Build the jump - thread path into a vector and pass that to register_jump_thread. - * tree-ssa-threadupdate.c (register_jump_thread): Conver the - passed in edge vector to the current 3-edge form. - - Revert: - 2013-08-20 Alexey Makhalov - - * dce.c (fini_dce): Call df_analyze again just in case - delete_unmarked_insns removed anything. - -2013-08-21 Joern Rennecke - - * reload.h (struct reg_equivs): Rename to .. - (struct reg_equivs_s): .. this. - -2013-08-20 Martin Liska - - * ipa.c (ipa_profile_read_summary): Fix buffer overflow. - -2013-08-21 Rainer Orth - - * config/sol2-10.h (TARGET_LIBC_HAS_FUNCTION): Don't nest comment. - -2013-08-21 Jeff Law - - * tree-vrp.c (simplify_stmt_for_jump_threading): Try to - simplify assignments too. If the RHS collapses to a singleton - range, then return the value for the range. - -2013-08-21 Kirill Yukhin - - * config/i386/sse.md (V16): Rename to... - (VMOVE): this. - (mov): Update iterator name. - (*mov_internal): Ditto. - (push1): Ditto. - (movmisalign): Ditto. - -2013-08-20 Jan Hubicka - - PR bootstrap/58186 - * cgraph.c (cgraph_add_edge_to_call_site_hash): Overwrite hash - entry for direct edges. - (cgraph_turn_edge_to_speculative): Fix setting of can_throw_external. - -2013-08-20 David Malcolm - - Revert my last two changes, r201865 and r201864: - - Revert r201865: - 2013-08-20 David Malcolm - - Make opt_pass and gcc::pass_manager be GC-managed, so that pass - instances can own GC refs. - - * Makefile.in (GTFILES): Add pass_manager.h and tree-pass.h. - * context.c (gcc::context::gt_ggc_mx): Traverse passes_. - (gcc::context::gt_pch_nx): Likewise. - (gcc::context::gt_pch_nx): Likewise. - * ggc.h (gt_ggc_mx ): New. - (gt_pch_nx_with_op ): New. - (gt_pch_nx ): New. - * passes.c (opt_pass::gt_ggc_mx): New. - (opt_pass::gt_pch_nx): New. - (opt_pass::gt_pch_nx_with_op): New. - (pass_manager::gt_ggc_mx): New. - (pass_manager::gt_pch_nx): New. - (pass_manager::gt_pch_nx_with_op): New. - (pass_manager::operator new): Use - ggc_internal_cleared_alloc_stat rather than xcalloc. - * pass_manager.h (class pass_manager): Add GTY((user)) marking. - (pass_manager::gt_ggc_mx): New. - (pass_manager::gt_pch_nx): New. - (pass_manager::gt_pch_nx_with_op): New. - * tree-pass.h (class opt_pass): Add GTY((user)) marking. - (opt_pass::operator new): New. - (opt_pass::gt_ggc_mx): New. - (opt_pass::gt_pch_nx): New. - (opt_pass::gt_pch_nx_with_op): New. - - Revert r201864: - 2013-08-20 David Malcolm - - * Makefile.in (GTFILES): Add context.h. - * context.c (gcc::context::operator new): New. - (gcc::context::gt_ggc_mx): New. - (gcc::context::gt_pch_nx): New. - (gcc::context::gt_pch_nx): New. - * context.h (gcc::context): Add GTY((user)) marking. - (gcc::context::operator new): New. - (gcc::context::gt_ggc_mx): New. - (gcc::context::gt_pch_nx): New. - (gcc::context::gt_pch_nx): New. - (g): Add GTY marking. - (gt_ggc_mx (gcc::context *)): New. - (gt_pch_nx (gcc::context *)): New. - (gt_pch_nx (gcc::context *ctxt, gt_pointer_operator op, - void *cookie)): New. - * gengtype.c (open_base_files) : Add context.h. - -2013-08-20 Alexey Makhalov - - * dce.c (fini_dce): Call df_analyze again just in case - delete_unmarked_insns removed anything. - -2013-08-20 Teresa Johnson - - PR rtl-optimizations/57451 - * final.c (reemit_insn_block_notes): Prevent lexical blocks - from crossing split section boundaries. - -2013-08-20 Matthew Gretton-Dann - - * config/arm/linux-elf.h (MULTILIB_DEFAULTS): Remove definition. - * config/arm/t-linux-eabi (MULTILIB_OPTIONS): Document association - with MULTLIB_DEFAULTS. - -2013-08-20 Nick Clifton - - * target.def (narrow_volatile_bitfield): Note that the default - value is false, not !TARGET_STRICT_ALIGN. - * doc/tm.texi: Regenerate. - -2013-08-20 Pavel Chupin - - Fix LIB_SPEC for systems without libpthread. - - * config/gnu-user.h: Introduce GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC. - * config/arm/linux-eabi.h: Use GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC - for Android. - * config/i386/linux-common.h: Likewise. - * config/mips/linux-common.h: Likewise. - -2013-08-20 Zhouyi Zhou - - * tree-ssa-ccp.c (get_default_value): Remove redundant condition - checks. - -2013-08-20 David Malcolm - - Make opt_pass and gcc::pass_manager be GC-managed, so that pass - instances can own GC refs. - - * Makefile.in (GTFILES): Add pass_manager.h and tree-pass.h. - * context.c (gcc::context::gt_ggc_mx): Traverse passes_. - (gcc::context::gt_pch_nx): Likewise. - (gcc::context::gt_pch_nx): Likewise. - * ggc.h (gt_ggc_mx ): New. - (gt_pch_nx_with_op ): New. - (gt_pch_nx ): New. - * passes.c (opt_pass::gt_ggc_mx): New. - (opt_pass::gt_pch_nx): New. - (opt_pass::gt_pch_nx_with_op): New. - (pass_manager::gt_ggc_mx): New. - (pass_manager::gt_pch_nx): New. - (pass_manager::gt_pch_nx_with_op): New. - (pass_manager::operator new): Use - ggc_internal_cleared_alloc_stat rather than xcalloc. - * pass_manager.h (class pass_manager): Add GTY((user)) marking. - (pass_manager::gt_ggc_mx): New. - (pass_manager::gt_pch_nx): New. - (pass_manager::gt_pch_nx_with_op): New. - * tree-pass.h (class opt_pass): Add GTY((user)) marking. - (opt_pass::operator new): New. - (opt_pass::gt_ggc_mx): New. - (opt_pass::gt_pch_nx): New. - (opt_pass::gt_pch_nx_with_op): New. - -2013-08-20 David Malcolm - - * Makefile.in (GTFILES): Add context.h. - * context.c (gcc::context::operator new): New. - (gcc::context::gt_ggc_mx): New. - (gcc::context::gt_pch_nx): New. - (gcc::context::gt_pch_nx): New. - * context.h (gcc::context): Add GTY((user)) marking. - (gcc::context::operator new): New. - (gcc::context::gt_ggc_mx): New. - (gcc::context::gt_pch_nx): New. - (gcc::context::gt_pch_nx): New. - (g): Add GTY marking. - (gt_ggc_mx (gcc::context *)): New. - (gt_pch_nx (gcc::context *)): New. - (gt_pch_nx (gcc::context *ctxt, gt_pointer_operator op, - void *cookie)): New. - * gengtype.c (open_base_files) : Add context.h. - -2013-08-20 Alan Modra - - PR target/57865 - * config/rs6000/rs6000.c (rs6000_emit_prologue): Correct ool_adjust. - (rs6000_emit_epilogue): Likewise. - -2013-08-19 Dehao Chen - - * value-prof.c (gimple_ic): Fix the bug of adding EH edge. - -2013-08-19 Peter Bergner - Jakub Jelinek - - * builtins.def (BUILT_IN_FABSD32): New DFP ABS builtin. - (BUILT_IN_FABSD64): Likewise. - (BUILT_IN_FABSD128): Likewise. - * builtins.c (expand_builtin): Add support for new DFP ABS builtins. - (fold_builtin_1): Likewise. - * config/rs6000/dfp.md (*negtd2_fpr): Handle non-overlapping - destination and source operands. - (*abstd2_fpr): Likewise. - (*nabstd2_fpr): Likewise. - -2013-08-19 Richard Sandiford - - * config/mips/mips.c (mips_adjust_insn_length): Add checks for - JUMP_P and INSN_P. - -2013-08-19 Aldy Hernandez - - * doc/invoke.texi (-fcilkplus): Clarify that implementation is - incomplete. - -2013-08-19 Alexander Ivchenko - - * target.def (TARGET_LIBC_HAS_FUNCTION): New target hook. - * builtins.c (default_libc_has_function): New. - (gnu_libc_has_function): Ditto. - (no_c99_libc_has_function): Ditto. - (expand_builtin_cexpi): Using new target hook TARGET_LIBC_HAS_FUNCTION - instead of TARGET_HAS_SINCOS and TARGET_C99_FUNCTIONS. - (fold_builtin_sincos): Likewise. - (fold_builtin_cexp): Likewise. - * builtins.def (DEF_C94_BUILTIN): Likewise. - (DEF_C99_BUILTIN): Likewise. - (DEF_C99_C90RES_BUILTIN): Likewise. - (DEF_C99_COMPL_BUILTIN): New define. Change all complex c99 builtin - definitions to using this define. - * config/darwin-protos.h (darwin_libc_has_function): New. - * config/darwin.c (darwin_libc_has_function): Ditto. - * config/alpha/linux.h: Remove TARGET_C99_FUNCTIONS and - TARGET_HAS_SINCOS. Redefine TARGET_LIBC_HAS_FUNCTION. - * config/darwin.h: Ditto. - * config/elfos.h: Ditto. - * config/freebsd.h: Ditto. - * config/i386/cygming.h: Ditto. - * config/i386/djgpp.h: Ditto. - * config/i386/i386-interix.h: Ditto. - * config/microblaze/microblaze.h: Ditto. - * config/mmix/mmix.h: Ditto. - * config/gnu-user.h: Ditto. - * config/ia64/hpux.h: Ditto. - * config/pa/pa-hpux.h: Ditto. - * config/pdp11/pdp11.h: Ditto. - * config/picochip/picochip.h: Ditto. - * config/linux.h: Ditto. - * config/netbsd.h: Ditto. - * config/openbsd.h: Ditto. - * config/rs6000/aix43.h: Ditto. - * config/rs6000/aix51.h: Ditto. - * config/rs6000/aix52.h: Ditto. - * config/rs6000/aix53.h: Ditto. - * config/rs6000/aix61.h: Ditto. - * config/rs6000/darwin.h: Ditto. - * config/rs6000/linux.h: Ditto. - * config/rs6000/linux64.h: Ditto. - * config/s390/tpf.h: Ditto. - * config/sol2-10.h: Ditto. - * config/sol2.h: Ditto. - * config/vms/vms.h: Ditto. - * config/vxworks.h: Ditto. - * config/linux-android.c (linux_android_libc_has_function): - New linux-specific implementation of TARGET_LIBC_HAS_FUNCTION. - * config/linux-protos.h (linux_android_libc_has_function): - New declaration. - * config/i386/i386.c (ix86_libc_has_function): New. - * config/i386/i386-protos.h - (ix86_libc_has_function): New declaration. - * config/i386/i386.md - ("isinfxf2"): Change condition for TARGET_LIBC_HAS_FUNCTION. - ("isinf2): Likewise. - * convert.c (convert_to_integer): Using new target hook - TARGET_LIBC_HAS_FUNCTION istead of TARGET_HAS_SINCOS and - TARGET_C99_FUNCTIONS. - * fortran/f95-lang.c (gfc_init_builtin_functions): Ditto. - * tree-ssa-math-opts.c (execute_cse_sincos): Ditto. - * coretypes.h (function_class): New enum for different - classes of functions. - * defaults.h: Remove TARGET_C99_FUNCTIONS and TARGET_HAS_SINCOS. - * doc/tm.texi.in (TARGET_C99_FUNCTIONS): Remove documentation. - (TARGET_HAS_SINCOS): Likewise. - (TARGET_LIBC_HAS_FUNCTION): New. - * doc/tm.texi: Regenerated. - * targhooks.h (default_libc_has_function): New declaration. - (no_c99_libc_has_function): Ditto. - (gnu_libc_has_function): Ditto. - * system.h: Add the poisoning of TARGET_C99_FUNCTIONS - and TARGET_HAS_SINCOS. - -2013-08-18 Jan Hubicka - - * Makeifle-in (ipa-devirt.o): New. - (GTFILES): Add ipa-utils.h and ipa-devirt.c - * cgraphunit.c (decide_is_symbol_needed): Do not care about virtuals. - (analyze_functions): Look into possible targets of polymorphic call. - * dumpfile.c (dump_files): Add type-inheritance dump. - * dumpfile.h (TDI_inheritance): New. - * ipa-devirt.c: New file. - * ipa-utils.h (odr_type_d): Forward declare. - (odr_type): New type. - (build_type_inheritance_graph): Declare. - (possible_polymorphic_call_targets): Declare and introduce inline - variant when only edge is pased. - (dump_possible_polymorphic_call_targets): Likewise. - * timevar.def (TV_IPA_INHERITANCE, TV_IPA_VIRTUAL_CALL): New. - * tree.c (type_in_anonymous_namespace_p): Break out from ... - (types_same_for_odr): ... here. - * tree.h (type_in_anonymous_namespace_p): Declare. - -2013-08-18 Jakub Jelinek - - PR tree-optimization/58006 - * tree-parloops.c (take_address_of): Don't ICE if get_name - returns NULL. - (eliminate_local_variables_stmt): Remove clobber stmts. - -2013-08-18 Eric Botcazou - - * cgraphunit.c (handle_alias_pairs): Reset the alias flag after the - error message is issued for an alias to undefined symbol. - -2013-08-18 Jan Hubicka - - * cgraph.c (cgraph_create_indirect_edge): Discover - polymorphic calls and record basic info into indirect_info. - * gimple-fold.c (gimple_fold_call): When doing BINFO based - devirtualization, ignore objc function calls. - * ipa-cp.c (initialize_node_lattices): Be ready for polymorphic - call with no parm index info. - * ipa-prop.c (ipa_analyze_call_uses): Likewise. - * tree.c (virtual_method_call_p): New function. - * tree.h (virtual_method_call_p): Declare. - -2013-08-16 Jan Hubicka - - PR middle-end/58179 - * tree.c (obj_type_ref_class): Do not ICE on non-method calls. - -2013-08-16 David Edelsohn - - * config/rs6000/rs6000.md (rs6000_get_timebase_ppc32): Add length - attribute. - -2013-08-16 David Malcolm - - * gengtype.c (type_for_name): Add special-case support for - locating types within the "gcc::" namespace. - (open_base_files): Emit a "using namespace gcc" directive. - -2013-08-16 Michael Meissner - - PR target/58160 - * config/rs6000/predicates.md (fusion_gpr_mem_load): Allow the - memory rtx to contain ZERO_EXTEND and SIGN_EXTEND. - - * config/rs6000/rs6000-protos.h (fusion_gpr_load_p): Pass operands - array instead of each individual operand as a separate argument. - (emit_fusion_gpr_load): Likewise. - (expand_fusion_gpr_load): Add new function declaration. - - * config/rs6000/rs6000.c (fusion_gpr_load_p): Change the calling - signature to have the operands passed as an array, instead of as - separate arguments. Allow ZERO_EXTEND to be in the memory - address, and also SIGN_EXTEND if -mpower8-fusion-sign. Do not - depend on the register live/dead flags when peepholes are run. - (expand_fusion_gpr_load): New function to be called from the - peephole2 pass, to change the register that addis sets to be the - target register. - (emit_fusion_gpr_load): Change the calling signature to have the - operands passed as an array, instead of as separate arguments. - Allow ZERO_EXTEND to be in the memory address, and also - SIGN_EXTEND if -mpower8-fusion-sign. - - * config/rs6000/rs6000.md (UNSPEC_FUSION_GPR): Delete unused - unspec enumeration. - (power8 fusion peephole/peephole2): Rework the fusion peepholes to - adjust the register addis loads up in the peephole2 pass. Do not - depend on the register live/dead state when the peephole pass is done. - -2013-08-16 David Malcolm - - * gengtype.c (create_user_defined_type): Ensure that the kind - is set to TYPE_USER_STRUCT, fixing a bug seen when an incomplete - declaration is seen before the GTY((user)) marking. - -2013-08-16 Bernd Edlinger - - PR target/58105 - * config/i386/i386.c (make_resolver_func): Set DECL_UNINLINABLE. - -2013-08-16 Jan Hubicka - - * gimple-fold.c (gimple_extract_devirt_binfo_from_cst): Add new - arugment expected_type. - (gimple_fold_call): Use it. - * gimple.h (gimple_extract_devirt_binfo_from_cst): Update prototype. - * ipa-cp.c (ipa_get_indirect_edge_target_1): Update. - * ipa-prop.c (ipa_analyze_virtual_call_uses): Use obj_type_ref_class. - (try_make_edge_direct_virtual_call): Likewise. - * tree.c (obj_type_ref_class): New. - * tree.h (obj_type_ref_class): Use it. - -2013-08-16 Gabriel Dos Reis - - * sched-vis.c (rtl_slim_pp_initialized): Remove. - (rtl_slim_pp): Likewise. - (init_rtl_slim_pretty_print): Likewise. - (dump_value_slim): Don't call it. Use local pretty printer. - (dump_insn_slim): Likewise. - (dump_rtl_slim): Likewise. - (str_pattern_slim): Likewise. - * tree-mudflap.c (mf_varname_tree): Use local pretty printer. - Simplify. - -2013-08-16 Jakub Jelinek - - PR tree-optimization/58164 - * gimple.c (walk_stmt_load_store_addr_ops): For visit_addr - walk gimple_goto_dest of GIMPLE_GOTO. - - PR tree-optimization/58165 - * tree-call-cdce.c (shrink_wrap_one_built_in_call): If - bi_call must be the last stmt in a bb, don't split_block, instead - use fallthru edge from it and give up if there is none. - Release conds vector when returning early. - -2013-08-14 Xinliang David Li - - * config/i386/i386.c (ix86_option_override_internal): - Remove unused variable and field. - -2013-08-14 Bill Schmidt - - PR target/57949 - * doc/invoke.texi: Add documentation of mcompat-align-parm option. - * config/rs6000/rs6000.opt: Add mcompat-align-parm option. - * config/rs6000/rs6000.c (rs6000_function_arg_boundary): For AIX - and Linux, correct BLKmode alignment when 128-bit alignment is - required and compatibility flag is not set. - (rs6000_gimplify_va_arg): For AIX and Linux, honor specified alignment - for zero-size arguments when compatibility flag is not set. - -2013-08-14 Jakub Jelinek - - PR tree-optimization/58145 - * tree-sra.c (build_ref_for_offset): If prev_base has - TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS, propagate it to MEM_REF. - -2013-08-14 Xinliang David Li - - * config/i386/i386.c (ix86_option_override_internal): - Fix uninitialized variable error. - -2013-08-14 Xinliang David Li - - * config/i386/i386.opt: Define two new options. - * config/i386/x86-tune.def: Add arch selector field in macros. - * config/i386/i386.h: Adjust macro definition. - * config/i386/i386.c (ix86_option_override_internal): - Refactor the code. - (parse_mtune_ctrl_str): New function. - (set_ix86_tune_features): New function. - (ix86_function_specific_restore): Call the new helper function. - -2013-08-14 Andrey Belevantsev - - PR rtl-optimization/57662 - * sel-sched.c (code_motion_process_successors): When the current insn - is removed after the recursive traversal, break from the loop. - Add comments and debug printouts. - -2013-08-14 Jakub Jelinek - Alexandre Oliva - - PR target/58067 - * config/i386/i386.c (ix86_delegitimize_address): For CM_MEDIUM_PIC - and CM_LARGE_PIC ix86_cmodel fall thru into the -m32 code, handle - there also UNSPEC_PLTOFF. - -2013-08-14 Marek Polacek - - * ipa-inline-analysis.c (add_clause): Avoid shifting integer - NUM_CONDITIONS bit positions. - -2013-08-13 Cary Coutant - - * dwarf2out.c (CHECKSUM_BLOCK): New macro. - (attr_checksum): Hash vector contents instead of pointer. - (attr_checksum_ordered): Likewise. - -2013-08-13 Uros Bizjak - - * config/i386/sse.md (*sse2_maskmovdqu): Emit addr32 prefix - when Pmode != word_mode. Add length_address attribute. - (sse3_monitor_): Merge from sse3_monitor and - sse3_monitor64_ insn patterns. Emit addr32 prefix when - Pmode != word_mode. Update insn length attribute. - * config/i386/i386.c (ix86_option_override_internal): Update - ix86_gen_monitor selection for merged sse3_monitor insn. - -2013-08-13 Julian Brown - - * config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Don't - perform invalid legitimization on greater-than-word-size modes for - TARGET_E500_DOUBLE. - -2013-08-13 Vladimir Makarov - - * ira.c (setup_class_translate_array): Use aclass instead of cl - for classes not fully covered by allocno classes. - -2013-08-13 Jakub Jelinek - - PR tree-optimization/57661 - * tree-inline.h (struct copy_body_data): Add blocks_to_copy field. - * tree-inline.c (tree_function_versioning): Initialize it. - (remap_gimple_stmt): Return GIMPLE_NOP for MEM_REF lhs clobber stmts - if id->blocks_to_copy and MEM_REF's SSA_NAME is defined in a block - that is not being copied. - - PR sanitizer/56417 - * asan.c (instrument_strlen_call): Fix typo in comment. - Use char * type even for the lhs of POINTER_PLUS_EXPR. - -2013-08-13 Steve Ellcey - - * config/mips/mips.md (prefetch): Use lw instead of ld on - loongson in 32bit mode. - -2013-08-13 Nick Clifton - - * config.gcc: (avr-linux): Allow for tmake_file not being empty. - -2013-08-13 Jan Hubicka - - * cgraph.c (cgraph_turn_edge_to_speculative): Return newly - introduced edge; fix typo in sanity check. - (cgraph_resolve_speculation): Export; improve diagnostic. - (cgraph_redirect_edge_call_stmt_to_callee): Better diagnostic; cancel - speculation at type mismatch. - * cgraph.h (cgraph_turn_edge_to_speculative): Update. - (cgraph_resolve_speculation): Declare. - (symtab_can_be_discarded): New function. - * value-prof.c (gimple_ic_transform): Remove actual transform code. - * ipa-inline-transform.c (speculation_removed): New global var. - (clone_inlined_nodes): See if speculation can be removed. - (inline_call): If speculations was removed, we growths may not match. - * ipa-inline.c (can_inline_edge_p): Add DISREGARD_LIMITS parameter. - (speculation_useful_p): New function. - (resolve_noninline_speculation): New function. - (inline_small_functions): Resolve useless speculations. - * ipa-inline.h (speculation_useful_p): Declare - * ipa.c (can_replace_by_local_alias): Simplify. - (ipa_profile): Produce speculative calls in non-lto, too; - add simple cost model; produce local aliases. - -2013-08-13 David Malcolm - - * config/i386/t-i386 (i386.o): Rename stray PIPELINE_H to - PASS_MANAGER_H. - -2013-08-12 Paolo Carlini - - * config/i386/i386.c (ix86_function_versions): Use error + inform. - -2013-08-12 Uros Bizjak - - * config/i386/i386.md (floatunssi2 expand): Use MODEF mode - iterator instead of X87MODEF. - -2013-08-12 Perez Read - - PR target/58132 - * config/i386/i386.md (*movabs_1): Add PTR before - operand 0 for intel asm alternative. - (*movabs_2): Ditto for operand 1. - -2013-08-12 James Greenhalgh - - * config/aarch64/arm_none.h - (vdup_lane_<8,16,32,64>): Fix macro call. - -2013-08-12 Nick Clifton - - * config.gcc (m32r-linux): Allow for tmake_file not being empty. - -2013-08-12 Yuri Rumyantsev - - * config/i386/i386.md (floatunssi2 expand): Add new - expand for QI/HImode operand to produce more effictive code for - unsigned char(short) --> float(double) conversion. - -2013-08-12 Alexander Monakov - - * doc/invoke.texi: Mention that -ftls-model does not force the final - model. - -2013-08-12 Marek Polacek - Marc Glisse - - PR tree-optimization/57980 - * tree-tailcall.c (process_assignment): Call build_minus_one_cst - when creating -1 constant. - -2013-08-10 Jan Hubicka - - Workaround binutils PR14342. - * tree-profile.c (init_ic_make_global_vars): Add LTO path. - (gimple_init_edge_profiler): Likewise. - (gimple_gen_ic_func_profiler): Likewise. - -2013-08-09 Jan Hubicka - - * cgraph.c (cgraph_create_edge_1): Clear speculative flag. - -2013-08-09 Xinliang David Li - - * config/i386/stringop.def: New file. - * config/i386/stringop.opt: New file. - * config/i386/i386-opts.h: Include stringopt.def. - * config/i386/i386.opt: Include stringopt.opt. - * config/i386/i386.c (ix86_option_override_internal): - Override default size based stringop inline strategies with options. - * config/i386/i386.c (ix86_parse_stringop_strategy_string): - New function. - -2013-08-09 Jan Hubicka - - * ipa-ref.c (ipa_clear_stmts_in_references): Clear lto_stmt_uid, too. - -2013-08-09 Jan Hubicka - - * cgraph.c (cgraph_resolve_speculation): Cut frequency to - CGRAPH_FREQ_MAX. - (dump_cgraph_node): Dump profile-id. - * cgraph.h (cgraph_indirect_call_info): Add common_target_id - and common_target_probability. - * lto-cgraph.c (lto_output_edge): Stream common targets. - (lto_output_node): Stream profile ids. - (input_node): Stream profile ids. - (input_edge): Stream common targets. - * lto-streamer-in.c (fixup_call_stmt_edges_1): Fix formatting. - * ipa.c: Include value-prof.h - (ipa_profile_generate_summary): Turn indirect call statement histograms - into common targets. - (ipa_profile): Turn common targets into speculative edges. - -2013-08-09 Jan Hubicka - - * cgraph.h (cgraph_node): Add profile_id. - * value-prof.c (cgraph_node_map): Turn into pointer_map. - (init_node_map): Rewrite to handle hashes increas of incremental IDs. - (del_node_map): Update. - (find_func_by_funcdef_no): Replace by ... - (find_func_by_profile_id): ... this one. - (gimple_ic_transform): Do not remove useful histograms when - speculation is not done; dump info when indirect call removal - can happen at LTO. - * value-prof.h (find_func_by_profile_id, gimple_ic): Declare. - * gcov-io.h (__gcov_indirect_call_profiler): Replace by ... - (__gcov_indirect_call_profiler_v2): .. this one. - * profile.h (init_node_map): Update. - * coverage.c (coverage_compute_profile_id): New function. - * coverage.h (coverage_compute_profile_id): Declare. - * tree-profile.c (init_ic_make_global_vars): Make - __gcov_indirect_call_callee and __gcov_indirect_call_counters global. - (gimple_init_edge_profiler): Update prototype of - __gcov_indirect_call_profiler. - (gimple_gen_ic_func_profiler): Simplify. - (tree_profiling): Use init_node_map - -2013-08-09 Jan Hubicka - - * cgraphbuild.c (cgraph_rebuild_references): Rebuild only - non-speculative refs. - * cgraph.c (cgraph_update_edge_in_call_site_hash): New function. - (cgraph_add_edge_to_call_site_hash): Deal with speculative calls. - (cgraph_set_call_stmt): Likewise. - (cgraph_create_edge_1): Fix release checking compilatoin; - clear lto_stmt_uid. - (cgraph_free_edge): Free indirect info. - (cgraph_turn_edge_to_speculative): New function. - (cgraph_speculative_call_info): New function. - (cgraph_make_edge_direct): Return direct edge; handle speculation. - (cgraph_redirect_edge_call_stmt_to_callee): Expand speculative edges. - (dump_cgraph_node): Dump speculation. - (verify_edge_count_and_frequency): Accept speculative edges. - (verify_edge_corresponds_to_fndecl): Handle partitioned cgraph. - (verify_cgraph_node): Handle speculation. - * cgraph.h (cgraph_edge): Add SPECULATIVE flag. - (cgraph_set_call_stmt): Update prototype. - (cgraph_make_edge_direct): Update prototype. - (cgraph_speculative_call_info): Declare. - * ipa-cp.c (ipcp_discover_new_direct_edges): Be ready for edge - to change; update call of ipa_find_references. - * ipa-ref.c (ipa_record_reference): Fix return value; clear - lto_stmt_uid and speculative flags. - (ipa_dump_references): Dump speculation. - (ipa_clone_references): Clone speculative flag. - (ipa_clone_referring): Likewise. - (ipa_clone_ref): New function. - (ipa_find_reference): Look into lto_stmt_uids - (ipa_clear_stmts_in_references): Do not clear speculative calls. - * ipa-ref.h (ipa_ref): Add lto_stmt_uid and speculative flags. - (ipa_find_reference): Update declaration. - (ipa_clone_ref): Declare. - * lto-cgraph.c (lto_output_edge): Make lto_stmt_uids start from 0; - stream speculative flag. - (lto_output_ref): Stream statements uids and speculation. - (input_ref): Likewise. - (input_edge): Stream speuclation. - * cgraphclones.c (cgraph_clone_edge): Clone speculation. - (cgraph_set_call_stmt_including_clones): Handle speculation. - * ipa-inline.c (heap_edge_removal_hook): New function. - (inline_small_functions): Register it. - * lto-streamer-in.c (fixup_call_stmt_edges_1): Bounds checking; - also initialize refs. - * ipa-prop.c (ipa_make_edge_direct_to_target): Be ready for - edge to change. - (try_make_edge_direct_simple_call): Likewise. - (try_make_edge_direct_simple_call): Likewise. - (update_indirect_edges_after_inlining): Likewise. - (remove_described_reference): Look proper lto_stmt_uid. - (propagate_controlled_uses): Likewise. - (propagate_controlled_uses): Liekwise. - * tree-inline.c (copy_bb): Copy speculative edges. - (redirect_all_calls): New function. - (copy_cfg_body): Do redirection after loop info is updated. - (delete_unreachable_blocks_update_callgraph): Updadte speculation. - -2013-08-09 Jan Hubicka - - * lto-streamer-out.c (output_function): Renumber PHIs. - * lto-streamer-in.c (input_function): Likewise. - -2013-08-09 James Greenhalgh - - * config/aarch64/aarch64-simd-builtins.def (get_lane_signed): Remove. - (get_lane_unsigned): Likewise. - (dup_lane_scalar): Likewise. - (get_lane): enable for VALL. - * config/aarch64/aarch64-simd.md - (aarch64_dup_lane_scalar): Remove. - (aarch64_get_lane_signed): Likewise. - (aarch64_get_lane_unsigned): Likewise. - (aarch64_get_lane_extend): New. - (aarch64_get_lane_zero_extendsi): Likewise. - (aarch64_get_lane): Enable for all vector modes. - (aarch64_get_lanedi): Remove misleading constraints. - * config/aarch64/arm_neon.h - (__aarch64_vget_lane_any): Define. - (__aarch64_vget_lane_<8,16,32,64>): Likewise. - (vget_lane_<8,16,32,64>): Use __aarch64_vget_lane macros. - (vdup_lane_<8,16,32,64>): Likewise. - * config/aarch64/iterators.md (VDQQH): New. - (VDQQHS): Likewise. - (vwcore): Likewise. - -2013-08-09 Eric Botcazou - - * configure.ac: Add GAS check for LEON instructions on SPARC. - * configure: Regenerate. - * config.in: Likewise. - * config.gcc (with_cpu): Remove sparc-leon*-* and deal with LEON in the - sparc*-*-* block. - * config/sparc/sparc.opt (LEON, LEON3): New masks. - * config/sparc/sparc.h (ASM_CPU32_DEFAULT_SPEC): Set to AS_LEON_FLAG - for LEON or LEON3. - (ASM_CPU_SPEC): Pass AS_LEON_FLAG if -mcpu=leon or -mcpu=leon3. - (AS_LEON_FLAG): New macro. - * config/sparc/sparc.c (sparc_option_override): Set MASK_LEON for leon - and MASK_LEON3 for leon3 and unset them if HAVE_AS_LEON is not defined. - Deal with LEON and LEON3 for the memory model. - * config/sparc/sync.md (atomic_compare_and_swap): Enable if LEON3 - (atomic_compare_and_swap_1): Likewise. - (*atomic_compare_and_swap_1): Likewise. - -2013-08-09 Zhenqiang Chen - - * config/arm/neon.md (vcond): Fix floating-point vector - comparisons against 0. - -2013-08-08 Vladimir Makarov - - * lra-constraints.c (emit_spill_move): Remove assert. - (process_alt_operands): Add more debugging - output. Increase reject for spilling into memory. Decrease - reject for reloading scratch. - (split_reg): Use HARD_REGNO_CALLER_SAVE_MODE. - -2013-08-08 Steve Ellcey - - * config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add nan2008. - * config/mips/t-mti-elf (MULTILIB_OPTIONS): Make mips16 and - micromips incompatible. Add nan2008. - (MULTILIB_DIRNAMES): Add nan2008. - (MULTILIB_EXCEPTIONS): Remove mips16/micromips entry. - * config/mips/t-mti-linux (MULTILIB_OPTIONS): Make mips16 - and micromips incompatible. Add nan2008. - (MULTILIB_DIRNAMES): Add nan2008. - (MULTILIB_EXCEPTIONS): Remove mips16/micromips entry. - -2013-08-08 Richard Sandiford - - PR rtl-optimization/58079 - * combine.c (combine_simplify_rtx): Avoid using SUBST if - simplify_comparison has widened a comparison with an integer. - -2013-08-08 Kyrylo Tkachov - - * config/arm/neon.md (movmisalign): Disable when we - don't allow unaligned accesses. - (*movmisalign_neon_store): Likewise. - (*movmisalign_neon_load): Likewise. - (*movmisalign_neon_store): Likewise. - (*movmisalign_neon_load): Likewise. - -2013-08-08 Jan Hubicka - - * cgraphbuild.c (build_cgraph_edges): Do not walk into debugs. - (make_pass_rebuild_cgraph_edges): Also clear references. - * cgraph.c (verify_cgraph_node): Add basic ipa-ref verifier. - * ipa-inline-transform.c (inline_transform): Remove all references - after inlining. - * cgraphunit.c (expand_function): Remove all references after - expansion. - * ipa-ref.c (ipa_ref_has_aliases_p): Fix formatting. - (ipa_find_reference): Rewrite to iterator. - (remove_stmt_references): Likewise. - (ipa_clear_stmts_in_references): New function. - * ipa-ref.h (ipa_clear_stmts_in_references): Declare. - * cgraphclones.c (cgraph_materialize_all_clones): Remove or - clear references. - * ipa-split.c (split_function): Remove references in split function. - -2013-08-08 Richard Earnshaw - - PR target/57431 - * config/arm/arm/neon.md (neon_vld1_dupdi): New expand pattern. - (neon_vld1_dup VD iterator): Iterate over VD not VDX. - -2013-08-08 Richard Earnshaw - - PR target/56979 - * config/arm/arm.c (aapcs_vfp_allocate): Decompose the argument if the - suggested mode for the assignment isn't compatible with the - registers required. - -2013-08-08 Bernd Edlinger - - PR target/58065 - * config/arm/arm.h (MALLOC_ABI_ALIGNMENT): Define. - -2013-08-07 Xinliang David Li - - * config/i386/i386.opt: New option -mtune-ctrl=. - * config/i386/x86-tune.def: New file. - * config/i386/i386.h: include x86-tune.def. - * config/i386/i386.c (ix86_option_override_internal): - Parsing -mtune-ctrl= option and set tune features. - -2013-08-07 Oleg Endo - - PR other/12081 - * config/rs6000/rs6000.c (gen_2arg_fn_t): Remove typedef. - (rs6000_emit_swdiv, rs6000_emit_swrsqrt): Don't cast result of GEN_FCN - to gen_2arg_fn_t. - -2013-08-07 Eric Botcazou - - * rtl.h (update_alignments): Declare. - * final.c (grow_label_align): New function extracted from... - (shorten_branches): ...here. Call it. - (update_alignments): New function. - * reorg.c (sibling_labels): New variable. - (get_label_before): Add SIBLING parameter. If it is non-zero, push - the new label along with it onto the sibling_labels vector. - (fill_simple_delay_slots): Adjust call to get_label_before. - (fill_slots_from_thread): Likewise. - (relax_delay_slots): Likewise. - (make_return_insns): Likewise. - (dbr_schedule): Invoke update_alignment on the sibling_labels vector. - -2013-08-07 Eric Botcazou - - * diagnostic.c (diagnostic_classify_diagnostic): Accept zero index and - document its semantics. - (diagnostic_report_diagnostic): Adjust accordingly. - -2013-08-07 David Malcolm - - * config/sparc/sparc.c (insert_pass_work_around_errata): Move into... - (sparc_option_override): ...and port to new C++ pass API. - * config/sparc/t-sparc (sparc.o): Add dep on CONTEXT_H - -2013-08-07 Peter Bergner - - * config/rs6000/rs6000.c (htm_expand_builtin) : Remove. - -2013-08-06 Caroline Tice - - * gcc.c (VTABLE_VERIFICATION_SPEC): New definition. - (LINK_COMMAND_SPEC): Add VTABLE_VERIFICATION_SPEC. - * tree-pass.h: Add pass_vtable_verify. - * varasm.c (assemble_variable): Add code to properly set the comdat - section and name for the .vtable_map_vars section. - (assemble_vtyv_preinit_initializer): New function. - (default_sectin_type_flags): Make sure .vtable_map_vars section has - LINK_ONCE flag. - * output.h: Add function decl for assemble_vtv_preinit_initializer. - * vtable-verify.c: New file. - * vtable-verify.h: New file. - * flag-types.h (enum vtv_priority): Defintions for flag_vtable_verify - initialiation levels. - * timevar.def (TV_VTABLE_VERIFICATION): New definition. - * passes.def: Insert pass_vtable_verify. - * aclocal.m4: Reorder includes. - * doc/invoke.texi: Document the -fvtable-verify=, -fvtv-debug, and - -fvtv-counts options. - * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add vtv_start*.o, - as appropriate, if -fvtable-verify=... is used. - (GNU_USER_TARGET_ENDFILE_SPEC): Add vtv_end*.o as appropriate, if - -fvtable-verify=... is used. - * Makefile.in (OBJS): Add vtable-verify.o to list. - (vtable-verify.o): Add new build rule. - (GTFILES): Add vtable-verify.c to list. - * common.opt (fvtable-verify=): New flag. - (vtv_priority): Values for fvtable-verify= flag. - (fvtv-counts): New flag. - (fvtv-debug): New flag. - * tree.h (save_vtable_map_decl): New extern function decl. - -2013-08-07 David Malcolm - - * config/rl78/rl78.c (rl78_devirt_pass): Convert from a struct to... - (pass_rl78_devirt): ...new subclass of rtl_opt_pass along with... - (pass_data_rl78_devirt): ...new pass_data instance and... - (make_pass_rl78_devirt): ...new function. - (rl78_asm_file_start): Port pass registration to new C++ API. - -2013-08-07 David Malcolm - - * coretypes.h (rtl_opt_pass): Add. - (gcc::context): Add. - * config/epiphany/epiphany.c (pass_mode_switch_use): New. - (epiphany_init): Port to new C++ pass API. - (epiphany_optimize_mode_switching): Likewise. - * pass_manager.h (pass_manager::get_pass_split_all_insns): New. - (pass_manager::get_pass_mode_switching): New. - (pass_manager::get_pass_peephole2): New. - * mode-switching.c (pass_mode_switching): Add clone method. - * recog.c (pass_peephole2): Add clone method. - (pass_split_all_insns): Add clone method. - -2013-08-06 David Malcolm - - * config/mips/mips.c (insert_pass_mips_machine_reorg2): Move into... - (mips_option_override): ...here, porting to new C++ API for passes. - -2013-08-06 Jan Hubicka - - * cgraph.c (cgraph_get_body): New function based on lto.c - implementation. - * cgraph.h (cgraph_get_body): Declare. - * cgraphclones.c (cgraph_create_virtual_clone): Commonize WPA and - LTO paths. - * cgraphunit.c (expand_function): Get body prior expanding. - * ipa.c (function_and_variable_visibility): Use gimple_has_body_p test. - * lto-cgraph.c (lto_output_node): Do not stream bodies we don't - really need. - * passes.c (do_per_function_toporder): Get body. - * tree-inline.c (expand_call_inline): Get body prior inlining it. - * tree-ssa-structalias.c (ipa_pta_execute): Get body; skip clones. - -2013-08-06 Martin Jambor - - PR fortran/57987 - * cgraphunit.c (cgraph_finalize_function): Assert that nested function - is not re-finalized. Rename second parameter to no_collect. - -2013-08-06 Martin Jambor - - PR middle-end/58041 - * gimple-ssa-strength-reduction.c (replace_ref): Make sure built - MEM_REF has proper alignment information. - -2013-08-05 Oleg Endo - - PR other/12081 - * recog.h (rtx (*insn_gen_fn) (rtx, ...)): Replace typedef with new - class insn_gen_fn. - * expr.c (move_by_pieces_1, store_by_pieces_2): Replace argument - rtx (*) (rtx, ...) with insn_gen_fn. - * genoutput.c (output_insn_data): Cast gen_? function pointers to - insn_gen_fn::stored_funcptr. Add initializer braces. - -2013-08-05 David Malcolm - - Rewrite how instances of passes are cloned to remove assumptions - about their sizes (thus allowing pass subclasses to have - additional data fields, albeit non-GC-managed ones at this point). - - * passes.c (make_pass_instance): Now that passes have clone - methods, rewrite this function to eliminate XNEW and memcpy - calls that used hardcoded sizes. Since this function no longer - creates pass instances, rename it to... - (add_pass_instance): ...this. Document the old way that passes were - numbered and flagged, and rework this function to continue using it. - (next_pass_1): Add an initial_pass argument for use by - add_pass_instance. - (position_pass): When adding multiple instances of a pass, use - the pass's clone method, rather than relying on the XNEW/memcpy - within the former make_pass_instance (now add_pass_instance). - (pass_manager::pass_manager): When invoking next_pass_1, also supply - the initial instance of the current pass within the pass manager. - -2013-08-05 David Malcolm - - This is the automated part of the conversion of passes from C - structs to C++ classes. - - Patch autogenerated by refactor_passes.py from - https://github.com/davidmalcolm/gcc-refactoring-scripts - revision 03fe39476a4c4ea450b49e087cfa817b5f92021e - - * asan.c (pass_asan): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_asan): ...new pass_data instance and... - (make_pass_asan): ...new function. - (pass_asan_O0): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_asan_O0): ...new pass_data instance and... - (make_pass_asan_O0): ...new function. - * auto-inc-dec.c (pass_inc_dec): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_inc_dec): ...new pass_data instance and... - (make_pass_inc_dec): ...new function. - * bb-reorder.c (pass_reorder_blocks): Convert from a global struct to - a subclass of rtl_opt_pass along with... - (pass_data_reorder_blocks): ...new pass_data instance and... - (make_pass_reorder_blocks): ...new function. - (pass_duplicate_computed_gotos): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_duplicate_computed_gotos): ...new pass_data instance and... - (make_pass_duplicate_computed_gotos): ...new function. - (pass_partition_blocks): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_partition_blocks): ...new pass_data instance and... - (make_pass_partition_blocks): ...new function. - * bt-load.c (pass_branch_target_load_optimize1): Convert from a global - struct to a subclass of rtl_opt_pass along with... - (pass_data_branch_target_load_optimize1): ...new pass_data instance - and... - (make_pass_branch_target_load_optimize1): ...new function. - (pass_branch_target_load_optimize2): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_branch_target_load_optimize2): ...new pass_data instance - and... - (make_pass_branch_target_load_optimize2): ...new function. - * cfgcleanup.c (pass_jump): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_jump): ...new pass_data instance and... - (make_pass_jump): ...new function. - (pass_jump2): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_jump2): ...new pass_data instance and... - (make_pass_jump2): ...new function. - * cfgexpand.c (pass_expand): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_expand): ...new pass_data instance and... - (make_pass_expand): ...new function. - * cfgrtl.c (pass_free_cfg): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_free_cfg): ...new pass_data instance and... - (make_pass_free_cfg): ...new function. - (pass_into_cfg_layout_mode): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_into_cfg_layout_mode): ...new pass_data instance and... - (make_pass_into_cfg_layout_mode): ...new function. - (pass_outof_cfg_layout_mode): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_outof_cfg_layout_mode): ...new pass_data instance and... - (make_pass_outof_cfg_layout_mode): ...new function. - * cgraphbuild.c (pass_build_cgraph_edges): Convert from a global - struct to a subclass of gimple_opt_pass along with... - (pass_data_build_cgraph_edges): ...new pass_data instance and... - (make_pass_build_cgraph_edges): ...new function. - (pass_rebuild_cgraph_edges): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_rebuild_cgraph_edges): ...new pass_data instance and... - (make_pass_rebuild_cgraph_edges): ...new function. - (pass_remove_cgraph_callee_edges): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_remove_cgraph_callee_edges): ...new pass_data instance - and... - (make_pass_remove_cgraph_callee_edges): ...new function. - * combine-stack-adj.c (pass_stack_adjustments): Convert from a global - struct to a subclass of rtl_opt_pass along with... - (pass_data_stack_adjustments): ...new pass_data instance and... - (make_pass_stack_adjustments): ...new function. - * combine.c (pass_combine): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_combine): ...new pass_data instance and... - (make_pass_combine): ...new function. - * compare-elim.c (pass_compare_elim_after_reload): Convert from a - global struct to a subclass of rtl_opt_pass along with... - (pass_data_compare_elim_after_reload): ...new pass_data instance - and... - (make_pass_compare_elim_after_reload): ...new function. - * cprop.c (pass_rtl_cprop): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_rtl_cprop): ...new pass_data instance and... - (make_pass_rtl_cprop): ...new function. - * cse.c (pass_cse): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_cse): ...new pass_data instance and... - (make_pass_cse): ...new function. - (pass_cse2): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_cse2): ...new pass_data instance and... - (make_pass_cse2): ...new function. - (pass_cse_after_global_opts): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_cse_after_global_opts): ...new pass_data instance and... - (make_pass_cse_after_global_opts): ...new function. - * dce.c (pass_ud_rtl_dce): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_ud_rtl_dce): ...new pass_data instance and... - (make_pass_ud_rtl_dce): ...new function. - (pass_fast_rtl_dce): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_fast_rtl_dce): ...new pass_data instance and... - (make_pass_fast_rtl_dce): ...new function. - * df-core.c (pass_df_initialize_opt): Convert from a global struct to - a subclass of rtl_opt_pass along with... - (pass_data_df_initialize_opt): ...new pass_data instance and... - (make_pass_df_initialize_opt): ...new function. - (pass_df_initialize_no_opt): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_df_initialize_no_opt): ...new pass_data instance and... - (make_pass_df_initialize_no_opt): ...new function. - (pass_df_finish): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_df_finish): ...new pass_data instance and... - (make_pass_df_finish): ...new function. - * dse.c (pass_rtl_dse1): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_rtl_dse1): ...new pass_data instance and... - (make_pass_rtl_dse1): ...new function. - (pass_rtl_dse2): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_rtl_dse2): ...new pass_data instance and... - (make_pass_rtl_dse2): ...new function. - * dwarf2cfi.c (pass_dwarf2_frame): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_dwarf2_frame): ...new pass_data instance and... - (make_pass_dwarf2_frame): ...new function. - * except.c (pass_set_nothrow_function_flags): Convert from a global - struct to a subclass of rtl_opt_pass along with... - (pass_data_set_nothrow_function_flags): ...new pass_data instance - and... - (make_pass_set_nothrow_function_flags): ...new function. - (pass_convert_to_eh_region_ranges): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_convert_to_eh_region_ranges): ...new pass_data instance - and... - (make_pass_convert_to_eh_region_ranges): ...new function. - * final.c (pass_compute_alignments): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_compute_alignments): ...new pass_data instance and... - (make_pass_compute_alignments): ...new function. - (pass_final): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_final): ...new pass_data instance and... - (make_pass_final): ...new function. - (pass_shorten_branches): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_shorten_branches): ...new pass_data instance and... - (make_pass_shorten_branches): ...new function. - (pass_clean_state): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_clean_state): ...new pass_data instance and... - (make_pass_clean_state): ...new function. - * function.c (pass_instantiate_virtual_regs): Convert from a global - struct to a subclass of rtl_opt_pass along with... - (pass_data_instantiate_virtual_regs): ...new pass_data instance and... - (make_pass_instantiate_virtual_regs): ...new function. - (pass_leaf_regs): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_leaf_regs): ...new pass_data instance and... - (make_pass_leaf_regs): ...new function. - (pass_thread_prologue_and_epilogue): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_thread_prologue_and_epilogue): ...new pass_data instance - and... - (make_pass_thread_prologue_and_epilogue): ...new function. - (pass_match_asm_constraints): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_match_asm_constraints): ...new pass_data instance and... - (make_pass_match_asm_constraints): ...new function. - * fwprop.c (pass_rtl_fwprop): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_rtl_fwprop): ...new pass_data instance and... - (make_pass_rtl_fwprop): ...new function. - (pass_rtl_fwprop_addr): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_rtl_fwprop_addr): ...new pass_data instance and... - (make_pass_rtl_fwprop_addr): ...new function. - * gcse.c (pass_rtl_pre): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_rtl_pre): ...new pass_data instance and... - (make_pass_rtl_pre): ...new function. - (pass_rtl_hoist): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_rtl_hoist): ...new pass_data instance and... - (make_pass_rtl_hoist): ...new function. - * gimple-low.c (pass_lower_cf): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_lower_cf): ...new pass_data instance and... - (make_pass_lower_cf): ...new function. - * gimple-ssa-strength-reduction.c (pass_strength_reduction): Convert - from a global struct to a subclass of gimple_opt_pass along with... - (pass_data_strength_reduction): ...new pass_data instance and... - (make_pass_strength_reduction): ...new function. - * ifcvt.c (pass_rtl_ifcvt): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_rtl_ifcvt): ...new pass_data instance and... - (make_pass_rtl_ifcvt): ...new function. - (pass_if_after_combine): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_if_after_combine): ...new pass_data instance and... - (make_pass_if_after_combine): ...new function. - (pass_if_after_reload): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_if_after_reload): ...new pass_data instance and... - (make_pass_if_after_reload): ...new function. - * init-regs.c (pass_initialize_regs): Convert from a global struct to - a subclass of rtl_opt_pass along with... - (pass_data_initialize_regs): ...new pass_data instance and... - (make_pass_initialize_regs): ...new function. - * ipa-cp.c (pass_ipa_cp): Convert from a global struct to a subclass - of ipa_opt_pass_d along with... - (pass_data_ipa_cp): ...new pass_data instance and... - (make_pass_ipa_cp): ...new function. - * ipa-inline-analysis.c (pass_inline_parameters): Convert from a - global struct to a subclass of gimple_opt_pass along with... - (pass_data_inline_parameters): ...new pass_data instance and... - (make_pass_inline_parameters): ...new function. - * ipa-inline.c (pass_early_inline): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_early_inline): ...new pass_data instance and... - (make_pass_early_inline): ...new function. - (pass_ipa_inline): Convert from a global struct to a subclass of - ipa_opt_pass_d along with... - (pass_data_ipa_inline): ...new pass_data instance and... - (make_pass_ipa_inline): ...new function. - * ipa-pure-const.c (pass_local_pure_const): Convert from a global - struct to a subclass of gimple_opt_pass along with... - (pass_data_local_pure_const): ...new pass_data instance and... - (make_pass_local_pure_const): ...new function. - (pass_ipa_pure_const): Convert from a global struct to a subclass of - ipa_opt_pass_d along with... - (pass_data_ipa_pure_const): ...new pass_data instance and... - (make_pass_ipa_pure_const): ...new function. - * ipa-reference.c (pass_ipa_reference): Convert from a global struct - to a subclass of ipa_opt_pass_d along with... - (pass_data_ipa_reference): ...new pass_data instance and... - (make_pass_ipa_reference): ...new function. - * ipa-split.c (pass_split_functions): Convert from a global struct to - a subclass of gimple_opt_pass along with... - (pass_data_split_functions): ...new pass_data instance and... - (make_pass_split_functions): ...new function. - (pass_feedback_split_functions): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_feedback_split_functions): ...new pass_data instance and... - (make_pass_feedback_split_functions): ...new function. - * ipa.c (pass_ipa_function_and_variable_visibility): Convert from a - global struct to a subclass of simple_ipa_opt_pass along with... - (pass_data_ipa_function_and_variable_visibility): ...new pass_data - instance and... - (make_pass_ipa_function_and_variable_visibility): ...new function. - (pass_ipa_free_inline_summary): Convert from a global struct to a - subclass of simple_ipa_opt_pass along with... - (pass_data_ipa_free_inline_summary): ...new pass_data instance and... - (make_pass_ipa_free_inline_summary): ...new function. - (pass_ipa_whole_program_visibility): Convert from a global struct to a - subclass of ipa_opt_pass_d along with... - (pass_data_ipa_whole_program_visibility): ...new pass_data instance - and... - (make_pass_ipa_whole_program_visibility): ...new function. - (pass_ipa_profile): Convert from a global struct to a subclass of - ipa_opt_pass_d along with... - (pass_data_ipa_profile): ...new pass_data instance and... - (make_pass_ipa_profile): ...new function. - (pass_ipa_cdtor_merge): Convert from a global struct to a subclass of - ipa_opt_pass_d along with... - (pass_data_ipa_cdtor_merge): ...new pass_data instance and... - (make_pass_ipa_cdtor_merge): ...new function. - * ira.c (pass_ira): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_ira): ...new pass_data instance and... - (make_pass_ira): ...new function. - (pass_reload): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_reload): ...new pass_data instance and... - (make_pass_reload): ...new function. - * jump.c (pass_cleanup_barriers): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_cleanup_barriers): ...new pass_data instance and... - (make_pass_cleanup_barriers): ...new function. - * loop-init.c (pass_loop2): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_loop2): ...new pass_data instance and... - (make_pass_loop2): ...new function. - (pass_rtl_loop_init): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_rtl_loop_init): ...new pass_data instance and... - (make_pass_rtl_loop_init): ...new function. - (pass_rtl_loop_done): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_rtl_loop_done): ...new pass_data instance and... - (make_pass_rtl_loop_done): ...new function. - (pass_rtl_move_loop_invariants): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_rtl_move_loop_invariants): ...new pass_data instance and... - (make_pass_rtl_move_loop_invariants): ...new function. - (pass_rtl_unswitch): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_rtl_unswitch): ...new pass_data instance and... - (make_pass_rtl_unswitch): ...new function. - (pass_rtl_unroll_and_peel_loops): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_rtl_unroll_and_peel_loops): ...new pass_data instance - and... - (make_pass_rtl_unroll_and_peel_loops): ...new function. - (pass_rtl_doloop): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_rtl_doloop): ...new pass_data instance and... - (make_pass_rtl_doloop): ...new function. - * lower-subreg.c (pass_lower_subreg): Convert from a global struct to - a subclass of rtl_opt_pass along with... - (pass_data_lower_subreg): ...new pass_data instance and... - (make_pass_lower_subreg): ...new function. - (pass_lower_subreg2): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_lower_subreg2): ...new pass_data instance and... - (make_pass_lower_subreg2): ...new function. - * lto-streamer-out.c (pass_ipa_lto_gimple_out): Convert from a global - struct to a subclass of ipa_opt_pass_d along with... - (pass_data_ipa_lto_gimple_out): ...new pass_data instance and... - (make_pass_ipa_lto_gimple_out): ...new function. - (pass_ipa_lto_finish_out): Convert from a global struct to a subclass - of ipa_opt_pass_d along with... - (pass_data_ipa_lto_finish_out): ...new pass_data instance and... - (make_pass_ipa_lto_finish_out): ...new function. - * mode-switching.c (pass_mode_switching): Convert from a global struct - to a subclass of rtl_opt_pass along with... - (pass_data_mode_switching): ...new pass_data instance and... - (make_pass_mode_switching): ...new function. - * modulo-sched.c (pass_sms): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_sms): ...new pass_data instance and... - (make_pass_sms): ...new function. - * omp-low.c (pass_expand_omp): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_expand_omp): ...new pass_data instance and... - (make_pass_expand_omp): ...new function. - (pass_lower_omp): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_lower_omp): ...new pass_data instance and... - (make_pass_lower_omp): ...new function. - (pass_diagnose_omp_blocks): Convert from a global struct to a subclass - of gimple_opt_pass along with... - (pass_data_diagnose_omp_blocks): ...new pass_data instance and... - (make_pass_diagnose_omp_blocks): ...new function. - * passes.c (pass_early_local_passes): Convert from a global struct to - a subclass of simple_ipa_opt_pass along with... - (pass_data_early_local_passes): ...new pass_data instance and... - (make_pass_early_local_passes): ...new function. - (pass_all_early_optimizations): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_all_early_optimizations): ...new pass_data instance and... - (make_pass_all_early_optimizations): ...new function. - (pass_all_optimizations): Convert from a global struct to a subclass - of gimple_opt_pass along with... - (pass_data_all_optimizations): ...new pass_data instance and... - (make_pass_all_optimizations): ...new function. - (pass_all_optimizations_g): Convert from a global struct to a subclass - of gimple_opt_pass along with... - (pass_data_all_optimizations_g): ...new pass_data instance and... - (make_pass_all_optimizations_g): ...new function. - (pass_rest_of_compilation): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_rest_of_compilation): ...new pass_data instance and... - (make_pass_rest_of_compilation): ...new function. - (pass_postreload): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_postreload): ...new pass_data instance and... - (make_pass_postreload): ...new function. - * postreload-gcse.c (pass_gcse2): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_gcse2): ...new pass_data instance and... - (make_pass_gcse2): ...new function. - * postreload.c (pass_postreload_cse): Convert from a global struct to - a subclass of rtl_opt_pass along with... - (pass_data_postreload_cse): ...new pass_data instance and... - (make_pass_postreload_cse): ...new function. - * predict.c (pass_profile): Convert from a global struct to a subclass - of gimple_opt_pass along with... - (pass_data_profile): ...new pass_data instance and... - (make_pass_profile): ...new function. - (pass_strip_predict_hints): Convert from a global struct to a subclass - of gimple_opt_pass along with... - (pass_data_strip_predict_hints): ...new pass_data instance and... - (make_pass_strip_predict_hints): ...new function. - * recog.c (pass_peephole2): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_peephole2): ...new pass_data instance and... - (make_pass_peephole2): ...new function. - (pass_split_all_insns): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_split_all_insns): ...new pass_data instance and... - (make_pass_split_all_insns): ...new function. - (pass_split_after_reload): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_split_after_reload): ...new pass_data instance and... - (make_pass_split_after_reload): ...new function. - (pass_split_before_regstack): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_split_before_regstack): ...new pass_data instance and... - (make_pass_split_before_regstack): ...new function. - (pass_split_before_sched2): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_split_before_sched2): ...new pass_data instance and... - (make_pass_split_before_sched2): ...new function. - (pass_split_for_shorten_branches): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_split_for_shorten_branches): ...new pass_data instance - and... - (make_pass_split_for_shorten_branches): ...new function. - * ree.c (pass_ree): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_ree): ...new pass_data instance and... - (make_pass_ree): ...new function. - * reg-stack.c (pass_stack_regs): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_stack_regs): ...new pass_data instance and... - (make_pass_stack_regs): ...new function. - (pass_stack_regs_run): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_stack_regs_run): ...new pass_data instance and... - (make_pass_stack_regs_run): ...new function. - * regcprop.c (pass_cprop_hardreg): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_cprop_hardreg): ...new pass_data instance and... - (make_pass_cprop_hardreg): ...new function. - * reginfo.c (pass_reginfo_init): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_reginfo_init): ...new pass_data instance and... - (make_pass_reginfo_init): ...new function. - * regmove.c (pass_regmove): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_regmove): ...new pass_data instance and... - (make_pass_regmove): ...new function. - * regrename.c (pass_regrename): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_regrename): ...new pass_data instance and... - (make_pass_regrename): ...new function. - * reorg.c (pass_delay_slots): Convert from a global struct to a - subclass of rtl_opt_pass along with... - (pass_data_delay_slots): ...new pass_data instance and... - (make_pass_delay_slots): ...new function. - (pass_machine_reorg): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_machine_reorg): ...new pass_data instance and... - (make_pass_machine_reorg): ...new function. - * sched-rgn.c (pass_sched): Convert from a global struct to a subclass - of rtl_opt_pass along with... - (pass_data_sched): ...new pass_data instance and... - (make_pass_sched): ...new function. - (pass_sched2): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_sched2): ...new pass_data instance and... - (make_pass_sched2): ...new function. - * stack-ptr-mod.c (pass_stack_ptr_mod): Convert from a global struct - to a subclass of rtl_opt_pass along with... - (pass_data_stack_ptr_mod): ...new pass_data instance and... - (make_pass_stack_ptr_mod): ...new function. - * store-motion.c (pass_rtl_store_motion): Convert from a global struct - to a subclass of rtl_opt_pass along with... - (pass_data_rtl_store_motion): ...new pass_data instance and... - (make_pass_rtl_store_motion): ...new function. - * tracer.c (pass_tracer): Convert from a global struct to a subclass - of gimple_opt_pass along with... - (pass_data_tracer): ...new pass_data instance and... - (make_pass_tracer): ...new function. - * trans-mem.c (pass_diagnose_tm_blocks): Convert from a global struct - to a subclass of gimple_opt_pass along with... - (pass_data_diagnose_tm_blocks): ...new pass_data instance and... - (make_pass_diagnose_tm_blocks): ...new function. - (pass_lower_tm): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_lower_tm): ...new pass_data instance and... - (make_pass_lower_tm): ...new function. - (pass_tm_init): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_tm_init): ...new pass_data instance and... - (make_pass_tm_init): ...new function. - (pass_tm_mark): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_tm_mark): ...new pass_data instance and... - (make_pass_tm_mark): ...new function. - (pass_tm_edges): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_tm_edges): ...new pass_data instance and... - (make_pass_tm_edges): ...new function. - (pass_tm_memopt): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_tm_memopt): ...new pass_data instance and... - (make_pass_tm_memopt): ...new function. - (pass_ipa_tm): Convert from a global struct to a subclass of - simple_ipa_opt_pass along with... - (pass_data_ipa_tm): ...new pass_data instance and... - (make_pass_ipa_tm): ...new function. - * tree-call-cdce.c (pass_call_cdce): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_call_cdce): ...new pass_data instance and... - (make_pass_call_cdce): ...new function. - * tree-cfg.c (pass_build_cfg): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_build_cfg): ...new pass_data instance and... - (make_pass_build_cfg): ...new function. - (pass_split_crit_edges): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_split_crit_edges): ...new pass_data instance and... - (make_pass_split_crit_edges): ...new function. - (pass_warn_function_return): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_warn_function_return): ...new pass_data instance and... - (make_pass_warn_function_return): ...new function. - (pass_warn_function_noreturn): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_warn_function_noreturn): ...new pass_data instance and... - (make_pass_warn_function_noreturn): ...new function. - (pass_warn_unused_result): Convert from a global struct to a subclass - of gimple_opt_pass along with... - (pass_data_warn_unused_result): ...new pass_data instance and... - (make_pass_warn_unused_result): ...new function. - * tree-cfgcleanup.c (pass_merge_phi): Convert from a global struct to - a subclass of gimple_opt_pass along with... - (pass_data_merge_phi): ...new pass_data instance and... - (make_pass_merge_phi): ...new function. - * tree-complex.c (pass_lower_complex): Convert from a global struct to - a subclass of gimple_opt_pass along with... - (pass_data_lower_complex): ...new pass_data instance and... - (make_pass_lower_complex): ...new function. - (pass_lower_complex_O0): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_lower_complex_O0): ...new pass_data instance and... - (make_pass_lower_complex_O0): ...new function. - * tree-eh.c (pass_lower_eh): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_lower_eh): ...new pass_data instance and... - (make_pass_lower_eh): ...new function. - (pass_refactor_eh): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_refactor_eh): ...new pass_data instance and... - (make_pass_refactor_eh): ...new function. - (pass_lower_resx): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_lower_resx): ...new pass_data instance and... - (make_pass_lower_resx): ...new function. - (pass_lower_eh_dispatch): Convert from a global struct to a subclass - of gimple_opt_pass along with... - (pass_data_lower_eh_dispatch): ...new pass_data instance and... - (make_pass_lower_eh_dispatch): ...new function. - (pass_cleanup_eh): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_cleanup_eh): ...new pass_data instance and... - (make_pass_cleanup_eh): ...new function. - * tree-emutls.c (pass_ipa_lower_emutls): Convert from a global struct - to a subclass of simple_ipa_opt_pass along with... - (pass_data_ipa_lower_emutls): ...new pass_data instance and... - (make_pass_ipa_lower_emutls): ...new function. - * tree-if-conv.c (pass_if_conversion): Convert from a global struct to - a subclass of gimple_opt_pass along with... - (pass_data_if_conversion): ...new pass_data instance and... - (make_pass_if_conversion): ...new function. - * tree-into-ssa.c (pass_build_ssa): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_build_ssa): ...new pass_data instance and... - (make_pass_build_ssa): ...new function. - * tree-loop-distribution.c (pass_loop_distribution): Convert from a - global struct to a subclass of gimple_opt_pass along with... - (pass_data_loop_distribution): ...new pass_data instance and... - (make_pass_loop_distribution): ...new function. - * tree-mudflap.c (pass_mudflap_1): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_mudflap_1): ...new pass_data instance and... - (make_pass_mudflap_1): ...new function. - (pass_mudflap_2): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_mudflap_2): ...new pass_data instance and... - (make_pass_mudflap_2): ...new function. - * tree-nomudflap.c (pass_mudflap_1): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_mudflap_1): ...new pass_data instance and... - (make_pass_mudflap_1): ...new function. - (pass_mudflap_2): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_mudflap_2): ...new pass_data instance and... - (make_pass_mudflap_2): ...new function. - * tree-nrv.c (pass_nrv): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_nrv): ...new pass_data instance and... - (make_pass_nrv): ...new function. - (pass_return_slot): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_return_slot): ...new pass_data instance and... - (make_pass_return_slot): ...new function. - * tree-object-size.c (pass_object_sizes): Convert from a global struct - to a subclass of gimple_opt_pass along with... - (pass_data_object_sizes): ...new pass_data instance and... - (make_pass_object_sizes): ...new function. - * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Convert from a - global struct to a subclass of gimple_opt_pass along with... - (pass_data_cleanup_cfg_post_optimizing): ...new pass_data instance - and... - (make_pass_cleanup_cfg_post_optimizing): ...new function. - (pass_fixup_cfg): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_fixup_cfg): ...new pass_data instance and... - (make_pass_fixup_cfg): ...new function. - * tree-pass.h (pass_mudflap_1): Replace declaration with that of... - (make_pass_mudflap_1): ...new function. - (pass_mudflap_2): Replace declaration with that of... - (make_pass_mudflap_2): ...new function. - (pass_asan): Replace declaration with that of... - (make_pass_asan): ...new function. - (pass_asan_O0): Replace declaration with that of... - (make_pass_asan_O0): ...new function. - (pass_tsan): Replace declaration with that of... - (make_pass_tsan): ...new function. - (pass_tsan_O0): Replace declaration with that of... - (make_pass_tsan_O0): ...new function. - (pass_lower_cf): Replace declaration with that of... - (make_pass_lower_cf): ...new function. - (pass_refactor_eh): Replace declaration with that of... - (make_pass_refactor_eh): ...new function. - (pass_lower_eh): Replace declaration with that of... - (make_pass_lower_eh): ...new function. - (pass_lower_eh_dispatch): Replace declaration with that of... - (make_pass_lower_eh_dispatch): ...new function. - (pass_lower_resx): Replace declaration with that of... - (make_pass_lower_resx): ...new function. - (pass_build_cfg): Replace declaration with that of... - (make_pass_build_cfg): ...new function. - (pass_early_tree_profile): Replace declaration with that of... - (make_pass_early_tree_profile): ...new function. - (pass_cleanup_eh): Replace declaration with that of... - (make_pass_cleanup_eh): ...new function. - (pass_sra): Replace declaration with that of... - (make_pass_sra): ...new function. - (pass_sra_early): Replace declaration with that of... - (make_pass_sra_early): ...new function. - (pass_early_ipa_sra): Replace declaration with that of... - (make_pass_early_ipa_sra): ...new function. - (pass_tail_recursion): Replace declaration with that of... - (make_pass_tail_recursion): ...new function. - (pass_tail_calls): Replace declaration with that of... - (make_pass_tail_calls): ...new function. - (pass_tree_loop): Replace declaration with that of... - (make_pass_tree_loop): ...new function. - (pass_tree_loop_init): Replace declaration with that of... - (make_pass_tree_loop_init): ...new function. - (pass_lim): Replace declaration with that of... - (make_pass_lim): ...new function. - (pass_tree_unswitch): Replace declaration with that of... - (make_pass_tree_unswitch): ...new function. - (pass_predcom): Replace declaration with that of... - (make_pass_predcom): ...new function. - (pass_iv_canon): Replace declaration with that of... - (make_pass_iv_canon): ...new function. - (pass_scev_cprop): Replace declaration with that of... - (make_pass_scev_cprop): ...new function. - (pass_empty_loop): Replace declaration with that of... - (make_pass_empty_loop): ...new function. - (pass_record_bounds): Replace declaration with that of... - (make_pass_record_bounds): ...new function. - (pass_graphite): Replace declaration with that of... - (make_pass_graphite): ...new function. - (pass_graphite_transforms): Replace declaration with that of... - (make_pass_graphite_transforms): ...new function. - (pass_if_conversion): Replace declaration with that of... - (make_pass_if_conversion): ...new function. - (pass_loop_distribution): Replace declaration with that of... - (make_pass_loop_distribution): ...new function. - (pass_vectorize): Replace declaration with that of... - (make_pass_vectorize): ...new function. - (pass_slp_vectorize): Replace declaration with that of... - (make_pass_slp_vectorize): ...new function. - (pass_complete_unroll): Replace declaration with that of... - (make_pass_complete_unroll): ...new function. - (pass_complete_unrolli): Replace declaration with that of... - (make_pass_complete_unrolli): ...new function. - (pass_parallelize_loops): Replace declaration with that of... - (make_pass_parallelize_loops): ...new function. - (pass_loop_prefetch): Replace declaration with that of... - (make_pass_loop_prefetch): ...new function. - (pass_iv_optimize): Replace declaration with that of... - (make_pass_iv_optimize): ...new function. - (pass_tree_loop_done): Replace declaration with that of... - (make_pass_tree_loop_done): ...new function. - (pass_ch): Replace declaration with that of... - (make_pass_ch): ...new function. - (pass_ccp): Replace declaration with that of... - (make_pass_ccp): ...new function. - (pass_phi_only_cprop): Replace declaration with that of... - (make_pass_phi_only_cprop): ...new function. - (pass_build_ssa): Replace declaration with that of... - (make_pass_build_ssa): ...new function. - (pass_build_alias): Replace declaration with that of... - (make_pass_build_alias): ...new function. - (pass_build_ealias): Replace declaration with that of... - (make_pass_build_ealias): ...new function. - (pass_dominator): Replace declaration with that of... - (make_pass_dominator): ...new function. - (pass_dce): Replace declaration with that of... - (make_pass_dce): ...new function. - (pass_dce_loop): Replace declaration with that of... - (make_pass_dce_loop): ...new function. - (pass_cd_dce): Replace declaration with that of... - (make_pass_cd_dce): ...new function. - (pass_call_cdce): Replace declaration with that of... - (make_pass_call_cdce): ...new function. - (pass_merge_phi): Replace declaration with that of... - (make_pass_merge_phi): ...new function. - (pass_split_crit_edges): Replace declaration with that of... - (make_pass_split_crit_edges): ...new function. - (pass_pre): Replace declaration with that of... - (make_pass_pre): ...new function. - (pass_profile): Replace declaration with that of... - (make_pass_profile): ...new function. - (pass_strip_predict_hints): Replace declaration with that of... - (make_pass_strip_predict_hints): ...new function. - (pass_lower_complex_O0): Replace declaration with that of... - (make_pass_lower_complex_O0): ...new function. - (pass_lower_complex): Replace declaration with that of... - (make_pass_lower_complex): ...new function. - (pass_lower_vector): Replace declaration with that of... - (make_pass_lower_vector): ...new function. - (pass_lower_vector_ssa): Replace declaration with that of... - (make_pass_lower_vector_ssa): ...new function. - (pass_lower_omp): Replace declaration with that of... - (make_pass_lower_omp): ...new function. - (pass_diagnose_omp_blocks): Replace declaration with that of... - (make_pass_diagnose_omp_blocks): ...new function. - (pass_expand_omp): Replace declaration with that of... - (make_pass_expand_omp): ...new function. - (pass_expand_omp_ssa): Replace declaration with that of... - (make_pass_expand_omp_ssa): ...new function. - (pass_object_sizes): Replace declaration with that of... - (make_pass_object_sizes): ...new function. - (pass_strlen): Replace declaration with that of... - (make_pass_strlen): ...new function. - (pass_fold_builtins): Replace declaration with that of... - (make_pass_fold_builtins): ...new function. - (pass_stdarg): Replace declaration with that of... - (make_pass_stdarg): ...new function. - (pass_early_warn_uninitialized): Replace declaration with that of... - (make_pass_early_warn_uninitialized): ...new function. - (pass_late_warn_uninitialized): Replace declaration with that of... - (make_pass_late_warn_uninitialized): ...new function. - (pass_cse_reciprocals): Replace declaration with that of... - (make_pass_cse_reciprocals): ...new function. - (pass_cse_sincos): Replace declaration with that of... - (make_pass_cse_sincos): ...new function. - (pass_optimize_bswap): Replace declaration with that of... - (make_pass_optimize_bswap): ...new function. - (pass_optimize_widening_mul): Replace declaration with that of... - (make_pass_optimize_widening_mul): ...new function. - (pass_warn_function_return): Replace declaration with that of... - (make_pass_warn_function_return): ...new function. - (pass_warn_function_noreturn): Replace declaration with that of... - (make_pass_warn_function_noreturn): ...new function. - (pass_cselim): Replace declaration with that of... - (make_pass_cselim): ...new function. - (pass_phiopt): Replace declaration with that of... - (make_pass_phiopt): ...new function. - (pass_forwprop): Replace declaration with that of... - (make_pass_forwprop): ...new function. - (pass_phiprop): Replace declaration with that of... - (make_pass_phiprop): ...new function. - (pass_tree_ifcombine): Replace declaration with that of... - (make_pass_tree_ifcombine): ...new function. - (pass_dse): Replace declaration with that of... - (make_pass_dse): ...new function. - (pass_nrv): Replace declaration with that of... - (make_pass_nrv): ...new function. - (pass_rename_ssa_copies): Replace declaration with that of... - (make_pass_rename_ssa_copies): ...new function. - (pass_sink_code): Replace declaration with that of... - (make_pass_sink_code): ...new function. - (pass_fre): Replace declaration with that of... - (make_pass_fre): ...new function. - (pass_check_data_deps): Replace declaration with that of... - (make_pass_check_data_deps): ...new function. - (pass_copy_prop): Replace declaration with that of... - (make_pass_copy_prop): ...new function. - (pass_vrp): Replace declaration with that of... - (make_pass_vrp): ...new function. - (pass_uncprop): Replace declaration with that of... - (make_pass_uncprop): ...new function. - (pass_return_slot): Replace declaration with that of... - (make_pass_return_slot): ...new function. - (pass_reassoc): Replace declaration with that of... - (make_pass_reassoc): ...new function. - (pass_rebuild_cgraph_edges): Replace declaration with that of... - (make_pass_rebuild_cgraph_edges): ...new function. - (pass_remove_cgraph_callee_edges): Replace declaration with that of... - (make_pass_remove_cgraph_callee_edges): ...new function. - (pass_build_cgraph_edges): Replace declaration with that of... - (make_pass_build_cgraph_edges): ...new function. - (pass_local_pure_const): Replace declaration with that of... - (make_pass_local_pure_const): ...new function. - (pass_tracer): Replace declaration with that of... - (make_pass_tracer): ...new function. - (pass_warn_unused_result): Replace declaration with that of... - (make_pass_warn_unused_result): ...new function. - (pass_diagnose_tm_blocks): Replace declaration with that of... - (make_pass_diagnose_tm_blocks): ...new function. - (pass_lower_tm): Replace declaration with that of... - (make_pass_lower_tm): ...new function. - (pass_tm_init): Replace declaration with that of... - (make_pass_tm_init): ...new function. - (pass_tm_mark): Replace declaration with that of... - (make_pass_tm_mark): ...new function. - (pass_tm_memopt): Replace declaration with that of... - (make_pass_tm_memopt): ...new function. - (pass_tm_edges): Replace declaration with that of... - (make_pass_tm_edges): ...new function. - (pass_split_functions): Replace declaration with that of... - (make_pass_split_functions): ...new function. - (pass_feedback_split_functions): Replace declaration with that of... - (make_pass_feedback_split_functions): ...new function. - (pass_strength_reduction): Replace declaration with that of... - (make_pass_strength_reduction): ...new function. - (pass_ipa_lower_emutls): Replace declaration with that of... - (make_pass_ipa_lower_emutls): ...new function. - (pass_ipa_function_and_variable_visibility): Replace declaration with - that of... - (make_pass_ipa_function_and_variable_visibility): ...new function. - (pass_ipa_tree_profile): Replace declaration with that of... - (make_pass_ipa_tree_profile): ...new function. - (pass_early_local_passes): Replace declaration with that of... - (make_pass_early_local_passes): ...new function. - (pass_ipa_whole_program_visibility): Replace declaration with that - of... - (make_pass_ipa_whole_program_visibility): ...new function. - (pass_ipa_lto_gimple_out): Replace declaration with that of... - (make_pass_ipa_lto_gimple_out): ...new function. - (pass_ipa_increase_alignment): Replace declaration with that of... - (make_pass_ipa_increase_alignment): ...new function. - (pass_ipa_inline): Replace declaration with that of... - (make_pass_ipa_inline): ...new function. - (pass_ipa_free_lang_data): Replace declaration with that of... - (make_pass_ipa_free_lang_data): ...new function. - (pass_ipa_free_inline_summary): Replace declaration with that of... - (make_pass_ipa_free_inline_summary): ...new function. - (pass_ipa_cp): Replace declaration with that of... - (make_pass_ipa_cp): ...new function. - (pass_ipa_reference): Replace declaration with that of... - (make_pass_ipa_reference): ...new function. - (pass_ipa_pure_const): Replace declaration with that of... - (make_pass_ipa_pure_const): ...new function. - (pass_ipa_pta): Replace declaration with that of... - (make_pass_ipa_pta): ...new function. - (pass_ipa_lto_finish_out): Replace declaration with that of... - (make_pass_ipa_lto_finish_out): ...new function. - (pass_ipa_tm): Replace declaration with that of... - (make_pass_ipa_tm): ...new function. - (pass_ipa_profile): Replace declaration with that of... - (make_pass_ipa_profile): ...new function. - (pass_ipa_cdtor_merge): Replace declaration with that of... - (make_pass_ipa_cdtor_merge): ...new function. - (pass_cleanup_cfg_post_optimizing): Replace declaration with that - of... - (make_pass_cleanup_cfg_post_optimizing): ...new function. - (pass_init_datastructures): Replace declaration with that of... - (make_pass_init_datastructures): ...new function. - (pass_fixup_cfg): Replace declaration with that of... - (make_pass_fixup_cfg): ...new function. - (pass_expand): Replace declaration with that of... - (make_pass_expand): ...new function. - (pass_instantiate_virtual_regs): Replace declaration with that of... - (make_pass_instantiate_virtual_regs): ...new function. - (pass_rtl_fwprop): Replace declaration with that of... - (make_pass_rtl_fwprop): ...new function. - (pass_rtl_fwprop_addr): Replace declaration with that of... - (make_pass_rtl_fwprop_addr): ...new function. - (pass_jump): Replace declaration with that of... - (make_pass_jump): ...new function. - (pass_jump2): Replace declaration with that of... - (make_pass_jump2): ...new function. - (pass_lower_subreg): Replace declaration with that of... - (make_pass_lower_subreg): ...new function. - (pass_cse): Replace declaration with that of... - (make_pass_cse): ...new function. - (pass_fast_rtl_dce): Replace declaration with that of... - (make_pass_fast_rtl_dce): ...new function. - (pass_ud_rtl_dce): Replace declaration with that of... - (make_pass_ud_rtl_dce): ...new function. - (pass_rtl_dce): Replace declaration with that of... - (make_pass_rtl_dce): ...new function. - (pass_rtl_dse1): Replace declaration with that of... - (make_pass_rtl_dse1): ...new function. - (pass_rtl_dse2): Replace declaration with that of... - (make_pass_rtl_dse2): ...new function. - (pass_rtl_dse3): Replace declaration with that of... - (make_pass_rtl_dse3): ...new function. - (pass_rtl_cprop): Replace declaration with that of... - (make_pass_rtl_cprop): ...new function. - (pass_rtl_pre): Replace declaration with that of... - (make_pass_rtl_pre): ...new function. - (pass_rtl_hoist): Replace declaration with that of... - (make_pass_rtl_hoist): ...new function. - (pass_rtl_store_motion): Replace declaration with that of... - (make_pass_rtl_store_motion): ...new function. - (pass_cse_after_global_opts): Replace declaration with that of... - (make_pass_cse_after_global_opts): ...new function. - (pass_rtl_ifcvt): Replace declaration with that of... - (make_pass_rtl_ifcvt): ...new function. - (pass_into_cfg_layout_mode): Replace declaration with that of... - (make_pass_into_cfg_layout_mode): ...new function. - (pass_outof_cfg_layout_mode): Replace declaration with that of... - (make_pass_outof_cfg_layout_mode): ...new function. - (pass_loop2): Replace declaration with that of... - (make_pass_loop2): ...new function. - (pass_rtl_loop_init): Replace declaration with that of... - (make_pass_rtl_loop_init): ...new function. - (pass_rtl_move_loop_invariants): Replace declaration with that of... - (make_pass_rtl_move_loop_invariants): ...new function. - (pass_rtl_unswitch): Replace declaration with that of... - (make_pass_rtl_unswitch): ...new function. - (pass_rtl_unroll_and_peel_loops): Replace declaration with that of... - (make_pass_rtl_unroll_and_peel_loops): ...new function. - (pass_rtl_doloop): Replace declaration with that of... - (make_pass_rtl_doloop): ...new function. - (pass_rtl_loop_done): Replace declaration with that of... - (make_pass_rtl_loop_done): ...new function. - (pass_web): Replace declaration with that of... - (make_pass_web): ...new function. - (pass_cse2): Replace declaration with that of... - (make_pass_cse2): ...new function. - (pass_df_initialize_opt): Replace declaration with that of... - (make_pass_df_initialize_opt): ...new function. - (pass_df_initialize_no_opt): Replace declaration with that of... - (make_pass_df_initialize_no_opt): ...new function. - (pass_reginfo_init): Replace declaration with that of... - (make_pass_reginfo_init): ...new function. - (pass_inc_dec): Replace declaration with that of... - (make_pass_inc_dec): ...new function. - (pass_stack_ptr_mod): Replace declaration with that of... - (make_pass_stack_ptr_mod): ...new function. - (pass_initialize_regs): Replace declaration with that of... - (make_pass_initialize_regs): ...new function. - (pass_combine): Replace declaration with that of... - (make_pass_combine): ...new function. - (pass_if_after_combine): Replace declaration with that of... - (make_pass_if_after_combine): ...new function. - (pass_ree): Replace declaration with that of... - (make_pass_ree): ...new function. - (pass_partition_blocks): Replace declaration with that of... - (make_pass_partition_blocks): ...new function. - (pass_match_asm_constraints): Replace declaration with that of... - (make_pass_match_asm_constraints): ...new function. - (pass_regmove): Replace declaration with that of... - (make_pass_regmove): ...new function. - (pass_split_all_insns): Replace declaration with that of... - (make_pass_split_all_insns): ...new function. - (pass_fast_rtl_byte_dce): Replace declaration with that of... - (make_pass_fast_rtl_byte_dce): ...new function. - (pass_lower_subreg2): Replace declaration with that of... - (make_pass_lower_subreg2): ...new function. - (pass_mode_switching): Replace declaration with that of... - (make_pass_mode_switching): ...new function. - (pass_sms): Replace declaration with that of... - (make_pass_sms): ...new function. - (pass_sched): Replace declaration with that of... - (make_pass_sched): ...new function. - (pass_ira): Replace declaration with that of... - (make_pass_ira): ...new function. - (pass_reload): Replace declaration with that of... - (make_pass_reload): ...new function. - (pass_clean_state): Replace declaration with that of... - (make_pass_clean_state): ...new function. - (pass_branch_prob): Replace declaration with that of... - (make_pass_branch_prob): ...new function. - (pass_value_profile_transformations): Replace declaration with that - of... - (make_pass_value_profile_transformations): ...new function. - (pass_postreload_cse): Replace declaration with that of... - (make_pass_postreload_cse): ...new function. - (pass_gcse2): Replace declaration with that of... - (make_pass_gcse2): ...new function. - (pass_split_after_reload): Replace declaration with that of... - (make_pass_split_after_reload): ...new function. - (pass_branch_target_load_optimize1): Replace declaration with that - of... - (make_pass_branch_target_load_optimize1): ...new function. - (pass_thread_prologue_and_epilogue): Replace declaration with that - of... - (make_pass_thread_prologue_and_epilogue): ...new function. - (pass_stack_adjustments): Replace declaration with that of... - (make_pass_stack_adjustments): ...new function. - (pass_peephole2): Replace declaration with that of... - (make_pass_peephole2): ...new function. - (pass_if_after_reload): Replace declaration with that of... - (make_pass_if_after_reload): ...new function. - (pass_regrename): Replace declaration with that of... - (make_pass_regrename): ...new function. - (pass_cprop_hardreg): Replace declaration with that of... - (make_pass_cprop_hardreg): ...new function. - (pass_reorder_blocks): Replace declaration with that of... - (make_pass_reorder_blocks): ...new function. - (pass_branch_target_load_optimize2): Replace declaration with that - of... - (make_pass_branch_target_load_optimize2): ...new function. - (pass_leaf_regs): Replace declaration with that of... - (make_pass_leaf_regs): ...new function. - (pass_split_before_sched2): Replace declaration with that of... - (make_pass_split_before_sched2): ...new function. - (pass_compare_elim_after_reload): Replace declaration with that of... - (make_pass_compare_elim_after_reload): ...new function. - (pass_sched2): Replace declaration with that of... - (make_pass_sched2): ...new function. - (pass_stack_regs): Replace declaration with that of... - (make_pass_stack_regs): ...new function. - (pass_stack_regs_run): Replace declaration with that of... - (make_pass_stack_regs_run): ...new function. - (pass_df_finish): Replace declaration with that of... - (make_pass_df_finish): ...new function. - (pass_compute_alignments): Replace declaration with that of... - (make_pass_compute_alignments): ...new function. - (pass_duplicate_computed_gotos): Replace declaration with that of... - (make_pass_duplicate_computed_gotos): ...new function. - (pass_variable_tracking): Replace declaration with that of... - (make_pass_variable_tracking): ...new function. - (pass_free_cfg): Replace declaration with that of... - (make_pass_free_cfg): ...new function. - (pass_machine_reorg): Replace declaration with that of... - (make_pass_machine_reorg): ...new function. - (pass_cleanup_barriers): Replace declaration with that of... - (make_pass_cleanup_barriers): ...new function. - (pass_delay_slots): Replace declaration with that of... - (make_pass_delay_slots): ...new function. - (pass_split_for_shorten_branches): Replace declaration with that of... - (make_pass_split_for_shorten_branches): ...new function. - (pass_split_before_regstack): Replace declaration with that of... - (make_pass_split_before_regstack): ...new function. - (pass_convert_to_eh_region_ranges): Replace declaration with that - of... - (make_pass_convert_to_eh_region_ranges): ...new function. - (pass_shorten_branches): Replace declaration with that of... - (make_pass_shorten_branches): ...new function. - (pass_set_nothrow_function_flags): Replace declaration with that of... - (make_pass_set_nothrow_function_flags): ...new function. - (pass_dwarf2_frame): Replace declaration with that of... - (make_pass_dwarf2_frame): ...new function. - (pass_final): Replace declaration with that of... - (make_pass_final): ...new function. - (pass_rtl_seqabstr): Replace declaration with that of... - (make_pass_rtl_seqabstr): ...new function. - (pass_release_ssa_names): Replace declaration with that of... - (make_pass_release_ssa_names): ...new function. - (pass_early_inline): Replace declaration with that of... - (make_pass_early_inline): ...new function. - (pass_inline_parameters): Replace declaration with that of... - (make_pass_inline_parameters): ...new function. - (pass_update_address_taken): Replace declaration with that of... - (make_pass_update_address_taken): ...new function. - (pass_convert_switch): Replace declaration with that of... - (make_pass_convert_switch): ...new function. - * tree-profile.c (pass_ipa_tree_profile): Convert from a global struct - to a subclass of simple_ipa_opt_pass along with... - (pass_data_ipa_tree_profile): ...new pass_data instance and... - (make_pass_ipa_tree_profile): ...new function. - * tree-sra.c (pass_sra_early): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_sra_early): ...new pass_data instance and... - (make_pass_sra_early): ...new function. - (pass_sra): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_sra): ...new pass_data instance and... - (make_pass_sra): ...new function. - (pass_early_ipa_sra): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_early_ipa_sra): ...new pass_data instance and... - (make_pass_early_ipa_sra): ...new function. - * tree-ssa-ccp.c (pass_ccp): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_ccp): ...new pass_data instance and... - (make_pass_ccp): ...new function. - (pass_fold_builtins): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_fold_builtins): ...new pass_data instance and... - (make_pass_fold_builtins): ...new function. - * tree-ssa-copy.c (pass_copy_prop): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_copy_prop): ...new pass_data instance and... - (make_pass_copy_prop): ...new function. - * tree-ssa-copyrename.c (pass_rename_ssa_copies): Convert from a - global struct to a subclass of gimple_opt_pass along with... - (pass_data_rename_ssa_copies): ...new pass_data instance and... - (make_pass_rename_ssa_copies): ...new function. - * tree-ssa-dce.c (pass_dce): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_dce): ...new pass_data instance and... - (make_pass_dce): ...new function. - (pass_dce_loop): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_dce_loop): ...new pass_data instance and... - (make_pass_dce_loop): ...new function. - (pass_cd_dce): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_cd_dce): ...new pass_data instance and... - (make_pass_cd_dce): ...new function. - * tree-ssa-dom.c (pass_dominator): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_dominator): ...new pass_data instance and... - (make_pass_dominator): ...new function. - (pass_phi_only_cprop): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_phi_only_cprop): ...new pass_data instance and... - (make_pass_phi_only_cprop): ...new function. - * tree-ssa-dse.c (pass_dse): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_dse): ...new pass_data instance and... - (make_pass_dse): ...new function. - * tree-ssa-forwprop.c (pass_forwprop): Convert from a global struct to - a subclass of gimple_opt_pass along with... - (pass_data_forwprop): ...new pass_data instance and... - (make_pass_forwprop): ...new function. - * tree-ssa-ifcombine.c (pass_tree_ifcombine): Convert from a global - struct to a subclass of gimple_opt_pass along with... - (pass_data_tree_ifcombine): ...new pass_data instance and... - (make_pass_tree_ifcombine): ...new function. - * tree-ssa-loop-ch.c (pass_ch): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_ch): ...new pass_data instance and... - (make_pass_ch): ...new function. - * tree-ssa-loop.c (pass_tree_loop): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_tree_loop): ...new pass_data instance and... - (make_pass_tree_loop): ...new function. - (pass_tree_loop_init): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_tree_loop_init): ...new pass_data instance and... - (make_pass_tree_loop_init): ...new function. - (pass_lim): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_lim): ...new pass_data instance and... - (make_pass_lim): ...new function. - (pass_tree_unswitch): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_tree_unswitch): ...new pass_data instance and... - (make_pass_tree_unswitch): ...new function. - (pass_predcom): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_predcom): ...new pass_data instance and... - (make_pass_predcom): ...new function. - (pass_vectorize): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_vectorize): ...new pass_data instance and... - (make_pass_vectorize): ...new function. - (pass_graphite): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_graphite): ...new pass_data instance and... - (make_pass_graphite): ...new function. - (pass_graphite_transforms): Convert from a global struct to a subclass - of gimple_opt_pass along with... - (pass_data_graphite_transforms): ...new pass_data instance and... - (make_pass_graphite_transforms): ...new function. - (pass_check_data_deps): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_check_data_deps): ...new pass_data instance and... - (make_pass_check_data_deps): ...new function. - (pass_iv_canon): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_iv_canon): ...new pass_data instance and... - (make_pass_iv_canon): ...new function. - (pass_scev_cprop): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_scev_cprop): ...new pass_data instance and... - (make_pass_scev_cprop): ...new function. - (pass_record_bounds): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_record_bounds): ...new pass_data instance and... - (make_pass_record_bounds): ...new function. - (pass_complete_unroll): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_complete_unroll): ...new pass_data instance and... - (make_pass_complete_unroll): ...new function. - (pass_complete_unrolli): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_complete_unrolli): ...new pass_data instance and... - (make_pass_complete_unrolli): ...new function. - (pass_parallelize_loops): Convert from a global struct to a subclass - of gimple_opt_pass along with... - (pass_data_parallelize_loops): ...new pass_data instance and... - (make_pass_parallelize_loops): ...new function. - (pass_loop_prefetch): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_loop_prefetch): ...new pass_data instance and... - (make_pass_loop_prefetch): ...new function. - (pass_iv_optimize): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_iv_optimize): ...new pass_data instance and... - (make_pass_iv_optimize): ...new function. - (pass_tree_loop_done): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_tree_loop_done): ...new pass_data instance and... - (make_pass_tree_loop_done): ...new function. - * tree-ssa-math-opts.c (pass_cse_reciprocals): Convert from a global - struct to a subclass of gimple_opt_pass along with... - (pass_data_cse_reciprocals): ...new pass_data instance and... - (make_pass_cse_reciprocals): ...new function. - (pass_cse_sincos): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_cse_sincos): ...new pass_data instance and... - (make_pass_cse_sincos): ...new function. - (pass_optimize_bswap): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_optimize_bswap): ...new pass_data instance and... - (make_pass_optimize_bswap): ...new function. - (pass_optimize_widening_mul): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_optimize_widening_mul): ...new pass_data instance and... - (make_pass_optimize_widening_mul): ...new function. - * tree-ssa-phiopt.c (pass_phiopt): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_phiopt): ...new pass_data instance and... - (make_pass_phiopt): ...new function. - (pass_cselim): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_cselim): ...new pass_data instance and... - (make_pass_cselim): ...new function. - * tree-ssa-phiprop.c (pass_phiprop): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_phiprop): ...new pass_data instance and... - (make_pass_phiprop): ...new function. - * tree-ssa-pre.c (pass_pre): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_pre): ...new pass_data instance and... - (make_pass_pre): ...new function. - (pass_fre): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_fre): ...new pass_data instance and... - (make_pass_fre): ...new function. - * tree-ssa-reassoc.c (pass_reassoc): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_reassoc): ...new pass_data instance and... - (make_pass_reassoc): ...new function. - * tree-ssa-sink.c (pass_sink_code): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_sink_code): ...new pass_data instance and... - (make_pass_sink_code): ...new function. - * tree-ssa-strlen.c (pass_strlen): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_strlen): ...new pass_data instance and... - (make_pass_strlen): ...new function. - * tree-ssa-structalias.c (pass_build_alias): Convert from a global - struct to a subclass of gimple_opt_pass along with... - (pass_data_build_alias): ...new pass_data instance and... - (make_pass_build_alias): ...new function. - (pass_build_ealias): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_build_ealias): ...new pass_data instance and... - (make_pass_build_ealias): ...new function. - (pass_ipa_pta): Convert from a global struct to a subclass of - simple_ipa_opt_pass along with... - (pass_data_ipa_pta): ...new pass_data instance and... - (make_pass_ipa_pta): ...new function. - * tree-ssa-uncprop.c (pass_uncprop): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_uncprop): ...new pass_data instance and... - (make_pass_uncprop): ...new function. - * tree-ssa-uninit.c (pass_late_warn_uninitialized): Convert from a - global struct to a subclass of gimple_opt_pass along with... - (pass_data_late_warn_uninitialized): ...new pass_data instance and... - (make_pass_late_warn_uninitialized): ...new function. - * tree-ssa.c (pass_init_datastructures): Convert from a global struct - to a subclass of gimple_opt_pass along with... - (pass_data_init_datastructures): ...new pass_data instance and... - (make_pass_init_datastructures): ...new function. - (pass_early_warn_uninitialized): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_early_warn_uninitialized): ...new pass_data instance and... - (make_pass_early_warn_uninitialized): ...new function. - (pass_update_address_taken): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_update_address_taken): ...new pass_data instance and... - (make_pass_update_address_taken): ...new function. - * tree-ssanames.c (pass_release_ssa_names): Convert from a global - struct to a subclass of gimple_opt_pass along with... - (pass_data_release_ssa_names): ...new pass_data instance and... - (make_pass_release_ssa_names): ...new function. - * tree-stdarg.c (pass_stdarg): Convert from a global struct to a - subclass of gimple_opt_pass along with... - (pass_data_stdarg): ...new pass_data instance and... - (make_pass_stdarg): ...new function. - * tree-switch-conversion.c (pass_convert_switch): Convert from a - global struct to a subclass of gimple_opt_pass along with... - (pass_data_convert_switch): ...new pass_data instance and... - (make_pass_convert_switch): ...new function. - * tree-tailcall.c (pass_tail_recursion): Convert from a global struct - to a subclass of gimple_opt_pass along with... - (pass_data_tail_recursion): ...new pass_data instance and... - (make_pass_tail_recursion): ...new function. - (pass_tail_calls): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_tail_calls): ...new pass_data instance and... - (make_pass_tail_calls): ...new function. - * tree-vect-generic.c (pass_lower_vector): Convert from a global - struct to a subclass of gimple_opt_pass along with... - (pass_data_lower_vector): ...new pass_data instance and... - (make_pass_lower_vector): ...new function. - (pass_lower_vector_ssa): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_lower_vector_ssa): ...new pass_data instance and... - (make_pass_lower_vector_ssa): ...new function. - * tree-vectorizer.c (pass_slp_vectorize): Convert from a global struct - to a subclass of gimple_opt_pass along with... - (pass_data_slp_vectorize): ...new pass_data instance and... - (make_pass_slp_vectorize): ...new function. - (pass_ipa_increase_alignment): Convert from a global struct to a - subclass of simple_ipa_opt_pass along with... - (pass_data_ipa_increase_alignment): ...new pass_data instance and... - (make_pass_ipa_increase_alignment): ...new function. - * tree-vrp.c (pass_vrp): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_vrp): ...new pass_data instance and... - (make_pass_vrp): ...new function. - * tree.c (pass_ipa_free_lang_data): Convert from a global struct to a - subclass of simple_ipa_opt_pass along with... - (pass_data_ipa_free_lang_data): ...new pass_data instance and... - (make_pass_ipa_free_lang_data): ...new function. - * tsan.c (pass_tsan): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_tsan): ...new pass_data instance and... - (make_pass_tsan): ...new function. - (pass_tsan_O0): Convert from a global struct to a subclass of - gimple_opt_pass along with... - (pass_data_tsan_O0): ...new pass_data instance and... - (make_pass_tsan_O0): ...new function. - * var-tracking.c (pass_variable_tracking): Convert from a global - struct to a subclass of rtl_opt_pass along with... - (pass_data_variable_tracking): ...new pass_data instance and... - (make_pass_variable_tracking): ...new function. - * web.c (pass_web): Convert from a global struct to a subclass of - rtl_opt_pass along with... - (pass_data_web): ...new pass_data instance and... - (make_pass_web): ...new function. - * config/epiphany/epiphany.h (pass_mode_switch_use): Replace - declaration with that of... - (make_pass_mode_switch_use): ...new function. - (pass_resolve_sw_modes): Replace declaration with that of... - (make_pass_resolve_sw_modes): ...new function. - * config/epiphany/mode-switch-use.c (pass_mode_switch_use): Convert - from a global struct to a subclass of rtl_opt_pass along with... - (pass_data_mode_switch_use): ...new pass_data instance and... - (make_pass_mode_switch_use): ...new function. - * config/epiphany/resolve-sw-modes.c (pass_resolve_sw_modes): Convert - from a global struct to a subclass of rtl_opt_pass along with... - (pass_data_resolve_sw_modes): ...new pass_data instance and... - (make_pass_resolve_sw_modes): ...new function. - * config/i386/i386.c (pass_insert_vzeroupper): Convert from a global - struct to a subclass of rtl_opt_pass along with... - (pass_data_insert_vzeroupper): ...new pass_data instance and... - (make_pass_insert_vzeroupper): ...new function. - * config/sparc/sparc.c (pass_work_around_errata): Convert from a - global struct to a subclass of rtl_opt_pass along with... - (pass_data_work_around_errata): ...new pass_data instance and... - (make_pass_work_around_errata): ...new function. - * config/mips/mips.c (pass_mips_machine_reorg2): Convert from a global - struct to a subclass of rtl_opt_pass along with... - (pass_data_mips_machine_reorg2): ...new pass_data instance and... - (make_pass_mips_machine_reorg2): ...new function. - -2013-08-05 David Malcolm - - * passes.c (pass_manager::operator new): New. - -2013-08-05 David Malcolm - - Handwritten part of conversion of passes to C++ classes. - - * Makefile.in (PASS_MANAGER_H): Add dep on pass-instances.def. - (toplev.o): Add dep on PASS_MANAGER_H. - * cgraphunit.c (cgraph_process_new_functions): Rework invocation - of early local pases to reflect this moving from a global to a - member of gcc::pass_manager. - (cgraph_add_new_function): Likewise. - * lto-cgraph.c (lto_output_node): Update for conversion of - struct ipa_opt_pass_d to a C++ subclass of opt_pass. - * passes.c (opt_pass::clone): New. - (opt_pass::gate): New. - (opt_pass::execute): New. - (opt_pass::opt_pass): New. - (pass_manager::execute_early_local_passes): New. - (pass_manager::execute_pass_mode_switching): new. - (finish_optimization_passes): Convert to... - (pass_manager::finish_optimization_passes): ...this. - (finish_optimization_passes): Update for conversion of passes to - C++ classes. - (register_dump_files_1): Use has_gate since we cannot portably - check a vtable entry against NULL. - (dump_one_pass): Likewise. - (ipa_write_summaries_2): Likewise. - (ipa_write_optimization_summaries_1): Likewise. - (ipa_read_summaries_1): Likewise. - (ipa_read_optimization_summaries_1): Likewise. - (execute_ipa_stmt_fixups): Likewise. - (pass_manager::pass_manager): Rewrite pass-creation, invoking - pass-creation functions rather than wiring up globals, and - storing the results in fields of pass_manager generated using - pass-instances.def. - (pass_manager::dump_profile_report): Update for conversion of - passes to C++ classes. - (pass_manager::execute_ipa_summary_passes): Likewise. - (execute_one_ipa_transform_pass): Likewise. - (execute_one_pass): Use has_gate and has_execute since we cannot - portably check a vtable entry against NULL. - * pass_manager.h (pass_manager::finish_optimization_passes): New. - (pass_manager): Use pass-instances.def to add fields for the - various pass instances. - * toplev.c (finalize): Update for move of - finish_optimization_passes to a method of gcc::pass_manager. - * toplev.h (finish_optimization_passes): Move to method of class - pass_manager. - * tree-pass.h (struct pass_data): New. - (opt_pass): Convert to C++ class, make it a subclass of pass_data. - (opt_pass::gate): Convert to virtual function. - (opt_pass::~opt_pass): New. - (opt_pass::clone): New. - (opt_pass::execute): Convert to virtual function. - (opt_pass::opt_pass): New. - (opt_pass::ctxt_): new. - (gimple_opt_pass): Convert to subclass of opt_pass. - (gimple_opt_pass::gimple_opt_pass): New. - (rtl_opt_pass): Convert to subclass of opt_pass. - (rtl_opt_pass::rtl_opt_pass): New. - (ipa_opt_pass_d): Convert to subclass of opt_pass. - (ipa_opt_pass_d::ipa_opt_pass_d): New. - (simple_ipa_opt_pass): Convert to subclass of opt_pass. - (simple_ipa_opt_pass::simple_ipa_opt_pass): New. - * config/i386/i386.c (rest_of_handle_insert_vzeroupper): Rework - invocation of pass_mode_switching to reflect this moving from a - global to a member of gcc::pass_manager. - (ix86_option_override): Rework how pass_insert_vzeroupper is - added to the pass_manager to reflect autogenerated changes. - * config/i386/t-i386 (i386.o) Add deps on CONTEXT_H and PASS_MANAGER_H. - -2013-08-05 Richard Earnshaw - - PR rtl-optimization/57708 - * recog.c (peep2_find_free_register): Validate all regs in a - multi-reg mode. - -2013-08-05 Jan Hubicka - - PR lto/57602 - * cgraph.c (verify_cgraph_node): Accept local flags from other - partitions. - * ipa.c (symtab_remove_unreachable_nodes): Do not clear local flag. - (function_and_variable_visibility): Likewise. - * trans-mem.c (ipa_tm_create_version): TM versions are not local. - -2013-08-05 Gabriel Dos Reis - - * graph.c (init_graph_slim_pretty_print): Remove. - (print_graph_cfg): Do not call it. Use local pretty printer. - (start_graph_dump): Likewise. - -2013-08-05 Gabriel Dos Reis - - * gimple-pretty-print.c (buffer): Remove. - (initialized): Likewise. - (maybe_init_pretty_print): Likewise. - (print_gimple_stmt): Do not call it. Use non-static local - pretty_printer variable. - (print_gimple_expr): Likewise. - (print_gimple_seq): Likewise. - (gimple_dump_bb): Likewise. - -2013-08-05 Gabriel Dos Reis - - * asan.c (asan_pp): Remove. - (asan_pp_initialized): Likewise. - (asan_pp_initialize): Likewise. - (asan_pp_string): Take a pretty_printer parameter. Adjust callers. - (asan_emit_stack_protection): Tidy. Use local pretty printer. - (asan_add_global): Likewise. - -2013-08-04 Gabriel Dos Reis - - * pretty-print.h (pp_base): Remove. Adjust dependent macros. - * diagnostic.h (diagnostic_flush_buffer): Adjust. - * pretty-print.c (pp_formatted_text_data): Likewise. - (pp_indent): Rename from pp_base_indent. - (pp_format): Rename from pp_base_format. - (pp_output_formatted_text): Rename from pp_base_output_formatted_text. - (pp_format_verbatim): Rename from pp_base_format_verbatim. - (pp_flush): Rename from pp_base_flush. - (pp_set_line_maximum_length): Rename from - pp_base_set_line_maximum_length. - (pp_clear_output_area): Rename from pp_base_clear_output_area. - (pp_set_prefix): Rename from pp_base_set_prefix. - (pp_destroy_prefix): Rename from pp_base_destroy_prefix. - (pp_emit_prefix): Rename from pp_base_emit_prefix. - (pp_append_text): Rename from pp_base_append_text. - (pp_formatted_text): Rename from pp_base_formatted_text. - (pp_last_position_in_text): Rename from pp_base_last_position_in_text. - (pp_remaining_character_count_for_line): Rename from - pp_base_remaining_character_count_for_line. - (pp_newline): Rename from pp_base_newline. - (pp_character): Rename from pp_base_character. - (pp_string): Rename from pp_base_string. - (pp_maybe_space): Rename from pp_base_maybe_space. - * asan.c (asan_pp_string): Adjust. - (asan_emit_stack_protection): Likewise. - (asan_add_global): Likewise. - * sched-vis.c (str_pattern_slim): Adjust pretty printer function call. - * tree-mudflap.c (mf_varname_tree): Likewise. - * tree-pretty-print.c (pp_tree_identifier): Rename from - pp_base_tree_identifier. - * tree-pretty-print.h (pp_tree_identifier): Remove macro definition. - Declare as function. - -2013-08-03 Gabriel Dos Reis - - * pretty-print.h (pp_bar_bar): New. - (pp_ampersand_ampersand): Likewise. - (pp_less_equal): Likewise. - (pp_greater_equal): Likewise. - * gimple-pretty-print.c (dump_ternary_rhs): Use specialized pretty - printer functions instead of pp_string or operators and punctuators. - (dump_gimple_call): Likewise. - (dump_gimple_omp_for): Likewise. - (dump_gimple_transaction): Likewise. - (dump_gimple_phi): Likewise. - (pp_gimple_stmt_1): Likewise. - * sched-vis.c (print_insn): Likewise. - * tree-mudflap.c (mf_varname_tree): Likewise. - * tree-pretty-print.c (dump_block_node): Likewise. - (dump_generic_node): Likewise. - -2013-08-02 Jan Hubicka - - * lto-cgraph.c (compute_ltrans_boundary): Add abstract origins into - boundaries. - * lto-streamer-out.c (tree_is_indexable): Results decls and - parm decls are not indexable. - (DFS_write_tree_body): Do not follow args and results. - (hash_tree): Likewise. - (output_functions): Rearrange so struct function is needed - only when real body is output; be able to also ouptut abstract - functions; output DECL_ARGUMENTS and DECL_RESULT. - (lto_output): When not in WPA, ale store abstract functions. - (write_symbol): Do not care about RESULT_DECL. - (output_symbol_p): Handle correctly sbtract decls. - * lto-streamer-in.c (input_function): Rearrange so struct - function can be NULL at entry; allow streaming of - functions w/o body; store DECL_ARGUMENTS and DECL_RESULT. - * ipa.c (symtab_remove_unreachable_nodes): Silence confused - sanity check during LTO. - * tree-streamer-out.c (write_ts_decl_non_common_tree_pointers): Skip - RESULT_DECl and DECL_ARGUMENTS. - * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers): - Likewise. - -2013-08-03 Gabriel Dos Reis - - * pretty-print.h (pp_underscore): New. - (pp_comma): Tidy. - * gimple-pretty-print.c (dump_unary_rhs): Use specialized pretty - printer functions instead of pp_character. - (dump_binary_rhs): Likewise. - (dump_ternary_rhs): Likewise. - (dump_gimple_call_args): Likewise. - (pp_points_to_solution): Likewise. - (dump_gimple_call): Likewise. - (dump_gimple_switch): Likewise. - (dump_gimple_cond): Likewise. - (dump_gimple_bind): Likewise. - (dump_gimple_try): Likewise. - (dump_gimple_omp_for): Likewise. - (dump_gimple_omp_continue): Likewise. - (dump_gimple_omp_single): Likewise. - (dump_gimple_omp_sections): Likewise. - (dump_gimple_omp_block): Likewise. - (dump_gimple_omp_critical): Likewise. - (dump_gimple_transaction): Likewise. - (dump_gimple_asm): Likewise. - (dump_gimple_phi): Likewise. - (dump_gimple_omp_parallel): Likewise. - (dump_gimple_omp_task): Likewise. - (dump_gimple_omp_atomic_load): Likewise. - (dump_gimple_omp_atomic_store): Likewise. - (dump_gimple_mem_ops): Likewise. - (pp_gimple_stmt_1): Likewise. - (pp_cfg_jump): Likewise. - (dump_implicit_edges): Likewise. - (gimple_dump_bb_for_graph): Likewise. - * graph.c (draw_cfg_node): Likewise. - * langhooks.c (lhd_print_error_function): Likewise. - * sched-vis.c (print_exp): Likewise. - (print_value): Likewise. - (print_pattern): Likewise. - (print_insn): Likewise. - (rtl_dump_bb_for_graph): Likewise. - * tree-pretty-print.c (dump_function_declaration): Likewise. - (dump_array_domain): Likewise. - (dump_omp_clause): Likewise. - (dump_location): Likewise. - (dump_generic_node): Likewise. - (print_struct_decl): Likewise. - * diagnostic.c (diagnostic_show_locus): Use pp_space. - -2013-08-03 Bill Schmidt - - * gimple-ssa-strength-reduction.c (replace_mult_candidate): Update - candidate table when replacing a candidate statement. - (replace_rhs_if_not_dup): Likewise. - (replace_one_candidate): Likewise. - -2013-08-02 Jan Hubicka - Martin Liska - - * cgraphunit.c (add_new_function): Fix logic when adding from - late IPA pass. - (assemble_thunk): Rename to ... - (expand_thunk); .. this one; export; get it working with - general functions; make produced gimple valid. - * cgraph.h (expand_thunk): Declare. - -2013-08-02 Jan Hubicka - - * ipa-cp.c (gather_context_independent_values): Use - ipa_get_param_move_cost. - (get_replacement_map): Remove PARAM; move parameter folding - into tree-inline.c - (create_specialized_node): Update. - * ipa-prop.c (ipa_populate_param_decls): Do not look for origins; - assert that we have gimple body; update move_cost. - (count_formal_params): Assert that we have gimple body. - (ipa_dump_param): New function. - (ipa_alloc_node_params): Break out from ... - (ipa_initialize_node_params): ... here. - (ipa_get_vector_of_formal_parms): ICE when used in WPA. - (ipa_write_node_info): Stream move costs. - (ipa_read_node_info): Read move costs. - (ipa_update_after_lto_read): Do not recompute node params. - * ipa-prop.h (ipa_param_descriptor): Add move_cost. - (ipa_get_param): Check we are not in WPA. - (ipa_get_param_move_cost): New. - * tree-inline.c (tree_function_versioning): Fold replacement as needed. - * ipa-inline-analysis.c (inline_node_duplication_hook): Expect only - parm numbers to be present. - -2013-08-02 Vladimir Makarov - - PR rtl-optimization/58048 - * lra-constraints.c (process_alt_operands): Don't check asm - operand on register. - -2013-08-02 Eric Botcazou - - * config/sparc/sparc.c (sparc_emit_membar_for_model) : Add - the implied StoreLoad barrier for atomic operations if before. - -2013-08-02 Jan Hubicka - Martin Liska - - * cgraph.c (cgraph_function_body_availability): Do not check - cgraph flags. - * cgraph.h (symtab_for_node_and_aliases, symtab_nonoverwritable_alias, - symtab_node_availability): Declare. - * ipa.c (can_replace_by_local_alias): New. - (function_and_variable_visibility): Use it. - * symtab.c (symtab_for_node_and_aliases, - symtab_nonoverwritable_alias_1, symtab_nonoverwritable_alias): New. - -2013-08-02 Vladimir Makarov - - PR rtl-optimization/57963 - * lra-constraints.c (reverse_equiv_p, contains_reloaded_insn_p): New. - (lra_constraints): Use them. - -2013-08-02 Sofiane Naci - - * config/arm/types.md (define_attr "type"): Add "load_acq" - and "store_rel". - * config/arm/cortex-a53.md (cortex_a53_load1): Update for attribute - changes. - (cortex_a53_store1): Likewise. - -2013-08-01 Jan Hubicka - - * ipa.c (symtab_remove_unreachable_nodes): Nodes in other - partitions are not needed. - -2013-08-01 Uros Bizjak - - * config/i386/i386.h (MAYBE_NON_Q_CLASS_P): New. - * config/i386/i386.c (ix86_secondary_reload): Use INTEGER_CLASS_P and - MAYBE_NON_Q_CLASS_P where appropriate. - -2013-08-01 Jan Hubicka - - * cgraph.h (release_function_body): Declare. - * tree.c (free_lang_data_in_decl): Free, parameters and return values - of unused delcarations. - -2013-08-01 Kyrylo Tkachov - - * config/arm/arm.md (minmax_arithsi_non_canon): Emit canonical - RTL form when subtracting a constant. - -2013-08-01 Kyrylo Tkachov - - * config/arm/arm.md (peepholes for eq (reg1) (reg2/imm)): - Generate canonical plus rtx with negated immediate instead of minus - where appropriate. - * config/arm/arm.c (thumb2_reorg): Handle ADCS , case. - -2013-08-01 Jan Hubicka - - * cgraph.c (cgraph_release_function_body): Use used_as_abstract_origin. - (cgraph_release_function_body): Likewise. - (cgraph_can_remove_if_no_direct_calls_p): Likewise. - * cgraph.h (cgrpah_node): Rename abstract_and_needed - to used_as_abstract_origin. - * tree-inline-transfrom.c (can_remove_node_now_p_1): Do not remove - symbols used as abstract origins. - * cgraphunit.c (analyze_functions): Update. - * ipa.c (symtab_remove_unreachable_nodes): Recompute - used_as_abstract_origin. - * tree-inline.c (tree_function_versioning): Update - used_as_abstract_origin; be ready for DECL_RESULT and - DECL_ARGUMENTS to be NULL. - - * lto-symtab.c (lto_symtab_merge_symbols): Merge duplicated nodes - for abstract functions. - * cgraph.h (symtab_real_symbol_p): Abstract declarations are not - real symbols. - -2013-08-01 Jan Hubicka - - * profile.c (compute_value_histograms): Fix thinko. - -2013-08-01 Sofiane Naci - - * config.gcc (aarch64*-*-*): Add aarch-common.o to extra_objs. Add - aarch-common-protos.h to extra_headers. - (aarch64*-*-*): Add arm/aarch-common-protos.h to tm_p_file. - * config/aarch64/aarch64.md: Include "../arm/cortex-a53.md". - * config/aarch64/t-aarch64 (aarch-common.o): Define. - -2013-08-01 Sofiane Naci - - * config/aarch64/aarch64.md (define_attr "type"): Delete. - Include "../arm/types.md". Define "type" attribute for all patterns. - * config/aarch64/aarch64-simd.md (move_lo_quad_): Update for - attribute changes. - -2013-07-31 Michael Meissner - - * config/rs6000/predicates.md (fusion_gpr_addis): New predicates - to support power8 load fusion. - (fusion_gpr_mem_load): Likewise. - - * config/rs6000/rs6000-modes.def (PTImode): Update a comment. - - * config/rs6000/rs6000-protos.h (fusion_gpr_load_p): New - declarations for power8 load fusion. - (emit_fusion_gpr_load): Likewise. - - * config/rs6000/rs6000.c (rs6000_option_override_internal): If - tuning for power8, turn on fusion mode by default. Turn on sign - extending fusion mode if normal fusion mode is on, and we are at - -O2 or -O3. - (fusion_gpr_load_p): New function, return true if we can fuse an - addis instruction with a dependent load to a GPR. - (emit_fusion_gpr_load): Emit the instructions for power8 load - fusion to GPRs. - - * config/rs6000/vsx.md (VSX_M2): New iterator for fusion peepholes. - (VSX load fusion peepholes): New peepholes to fuse together an - addi instruction with a VSX load instruction. - - * config/rs6000/rs6000.md (GPR load fusion peepholes): New - peepholes to fuse an addis instruction with a load to a GPR base - register. If we are supporting sign extending fusions, convert - sign extending loads to zero extending loads and add an explicit - sign extension. - -2013-07-31 Sofiane Naci - - * config.gcc (arm*-*-*): Add aarch-common.o to extra_objs. Add - aarch-common-protos.h to extra_headers. - (arm*-*-*): Add arm/aarch-common-protos.h to tm_p_file. - * config/arm/arm.c (arm_early_load_addr_dep): Move from here to ... - (arm_early_store_addr_dep): Likewise. - (arm_no_early_alu_shift_dep): Likewise. - (arm_no_early_alu_shift_value_dep): Likewise. - (arm_no_early_mul_dep): Likewise. - (arm_no_early_store_addr_dep): Likewise. - (arm_mac_accumulator_is_mul_result): Likewise. - (arm_mac_accumulator_is_result): Likewise. - * config/arm/aarch-common.c: ... here. New file. - * config/arm/arm-protos.h (arm_early_load_addr_dep): Move from - here to ... - (arm_early_store_addr_dep): Likewise. - (arm_no_early_alu_shift_dep): Likewise. - (arm_no_early_alu_shift_value_dep): Likewise. - (arm_no_early_mul_dep): Likewise. - (arm_no_early_store_addr_dep): Likewise. - (arm_mac_accumulator_is_mul_result): Likewise. - (arm_mac_accumulator_is_result): Likewise. - * config/arm/aarch-common-protos.h: ... here. New file. - * config/arm/t-arm (aarch-common.o): Define. - -2013-07-31 Sofiane Naci - - * config/arm/arm.md: Include new file "types.md". - (define_attr "type"): Move from here to ... - (define_attr "mul32"): Likewise. - (define_attr "mul64"): Likewise. - * config/arm/types.md: ... here. New file. - -2013-07-31 Sebastian Huber - - * config.gcc (*-*-rtems*): Use __cxa_atexit by default. - * config/rs6000/rtems.h (TARGET_LIBGCC_SDATA_SECTION): Define. - -2013-07-31 Jan-Benedict Glaw - - * gen-pass-instances.awk: Fix offset of substr(). - -2013-07-31 David Malcolm - - * Makefile.in (pass-instances.def): New. - (passes.o): Replace dependency on passes.def with one on - pass-instances.def - - * gen-pass-instances.awk: New. - - * passes.c (pass_manager::pass_manager): Use pass-instances.def - rather than passes.def, updating local definition of NEXT_PASS - macro to add an extra NUM parameter (currently unused). - -2013-07-30 David Malcolm - - * Makefile.in (PASS_MANAGER_H): New. - (lto-cgraph.o): Depend on CONTEXT_H and PASS_MANAGER_H. - (passes.o): Likewise. - (statistics.o): Likewise. - (cgraphunit.o): Likewise. - (context.o): Depend on PASS_MANAGER_H. - - * pass_manager.h: New. - - * cgraphunit.c (cgraph_add_new_function): Update for moves - of globals to fields of pass_manager. - (analyze_function): Likewise. - (expand_function): Likewise. - (ipa_passes): Likewise. - (compile): Likewise. - - * context.c (context::context): New. - * context.h (context::context): New. - (context::get_passes): New. - (context::passes_): New. - - * lto-cgraph.c (input_node): Update for moves of globals to - fields of pass_manager. - - * passes.c (all_passes): Remove, in favor of a field of the - same name within the new class pass_manager. - (all_small_ipa_passes): Likewise. - (all_lowering_passes): Likewise. - (all_regular_ipa_passes): Likewise. - (all_late_ipa_passes): Likewise. - (all_lto_gen_passes): Likewise. - (passes_by_id): Likewise. - (passes_by_id_size): Likewise. - (gcc_pass_lists): Remove, in favor of "pass_lists" field within - the new class pass_manager. - (set_pass_for_id): Convert to... - (pass_manager::set_pass_for_id): ...method. - (get_pass_for_id): Convert to... - (pass_manager::get_pass_for_id): ...method. - (register_one_dump_file): Move body of implementation into... - (pass_manager::register_one_dump_file): ...here. - (register_dump_files_1): Convert to... - (pass_manager::register_dump_files_1): ...method. - (register_dump_files): Convert to... - (pass_manager::register_dump_files): ...method. - (create_pass_tab): Update for moves of globals to fields of - pass_manager. - (dump_passes): Move body of implementation into... - (pass_manager::dump_passes): ...here. - (register_pass): Move body of implementation into... - (pass_manager::register_pass): ...here. - (init_optimization_passes): Convert into... - (pass_manager::pass_manager): ...constructor for new - pass_manager class, and initialize the pass_lists array. - (check_profile_consistency): Update for moves of globals to - fields of pass_manager. - (dump_profile_report): Move body of implementation into... - (pass_manager::dump_profile_report): ...here. - (ipa_write_summaries_1): Update for moves of pass lists from - being globals to fields of pass_manager. - (ipa_write_optimization_summaries): Likewise. - (ipa_read_summaries): Likewise. - (ipa_read_optimization_summaries): Likewise. - (execute_all_ipa_stmt_fixups): Likewise. - - * statistics.c (statistics_fini): Update for moves of globals to - fields of pass_manager. - - * toplev.c (general_init): Replace call to - init_optimization_passes with construction of the pass_manager - instance. - - * tree-pass.h (all_passes): Remove, in favor of a field of the - same name within the new class pass_manager. - (all_small_ipa_passes): Likewise. - (all_lowering_passes): Likewise. - (all_regular_ipa_passes): Likewise. - (all_lto_gen_passes): Likewise. - (all_late_ipa_passes): Likewise. - (passes_by_id): Likewise. - (passes_by_id_size): Likewise. - (gcc_pass_lists): Remove, in favor of "pass_lists" field within - the new class pass_manager. - (get_pass_for_id): Remove. - -2013-07-30 Richard Earnshaw - - * config.gcc (arm): Require 64-bit host-wide-int for all ARM target - configs. - -2013-07-30 Richard Earnshaw - - * arm.md (mulhi3): New expand pattern. - -2013-07-30 Jan Hubicka - Martin Liska - - * profile.c (compute_value_histograms): Do not ICE when - there is mismatch only on some counters. - -2013-07-30 Zhenqiang Chen - - PR rtl-optimization/57637 - * function.c (move_insn_for_shrink_wrap): Also check the - GEN set of the LIVE problem for the liveness analysis - if it exists, otherwise give up. - -2013-07-29 Bill Schmidt - - PR tree-optimization/57993 - * gimple-ssa-strength-reduction.c (replace_mult_candidate): Record - replaced statement in the candidate table. - (phi_add_costs): Return infinite cost when the hidden basis does - not dominate all phis on which the candidate is dependent. - (replace_one_candidate): Record replaced statement in the - candidate table. - -2013-07-29 Joern Rennecke - - * config/epiphany/epiphany.md (*isub_i+2): New peephole. - (ashlv2si3): New expander. - (*ashlv2si3_i): New define_insn_and_split. - * predicates.md (float_operation): Allow patterns with three - basic sub-patterns. - - PR rtl-optimization/58021 - * mode-switching.c (create_pre_exit): Always split off preceding - insns if we are not at the basic block head. - -2013-07-29 Maciej W. Rozycki - - * config/mips/linux.h (GLIBC_DYNAMIC_LINKER): Handle `-mnan=2008'. - (UCLIBC_DYNAMIC_LINKER): New macro. - * config/mips/linux64.h (GLIBC_DYNAMIC_LINKER32): Handle - `-mnan=2008'. - (GLIBC_DYNAMIC_LINKER64, GLIBC_DYNAMIC_LINKERN32): Likewise. - (UCLIBC_DYNAMIC_LINKER32): Undefine macro first. Handle - `-mnan=2008'. - (UCLIBC_DYNAMIC_LINKER64): Redefine macro. - (UCLIBC_DYNAMIC_LINKERN32): Likewise. - * config/mips/mips-modes.def: Remove RESET_FLOAT_FORMAT calls - for SF and DF modes. Use ieee_quad_format for TF mode. - * config/mips/mips-opts.h (mips_ieee_754_setting): New enum. - * config/mips/mips.c (mips_file_start): Output a `.nan' directive. - (mips_option_override): Handle `-mnan=legacy'. - * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Handle - `-mabs=2008' and `-mnan=2008'. - (OPTION_DEFAULT_SPECS): Add "nan" default. - (ASM_SPEC): Handle `-mnan='. - [!HAVE_AS_NAN] (HAVE_AS_NAN): New macro. - * config/mips/mips.md (abs2): Handle `-mabs=2008', update - comment accordingly. - (neg2): Likewise. - * config/mips/mips.opt (mabs, mnan): New options. - * doc/install.texi (Configuration): Document `--with-nan=' option. - * doc/invoke.texi (Option Summary): List MIPS `-mabs=' and - `-mnan=' options. - (MIPS Options): Document them. - * config.gcc : Handle `--with-nan='. - * configure.ac : Check for GAS `-mnan=2008' support. - * configure: Regenerate. - * config.in: Regenerate. - -2013-07-29 Uros Bizjak - - * config/i386/i386.md (float post-reload splitters): Do not check - for subregs of SSE registers. - -2013-07-29 Uros Bizjak - H.J. Lu - - PR target/57954 - PR target/57988 - * config/i386/i386.md (post-reload splitter - to avoid partial SSE reg dependency stalls): New pattern. - -2013-07-29 Dominik Vogt - - * config/s390/s390.md ("movcc"): Swap load and store instructions. - -2013-07-27 Joern Rennecke - - * config/epiphany/epiphany.c (epiphany_compute_frame_size): - Also reserve space for saving UNKNOWN_REGNUM for leaf functions. - -2013-07-26 Cary Coutant - - * dwarf2out.c (die_checksum_ordered): Don't include template - instantiations in signature. - (is_template_parameter): New function. - (is_template_instantiation): New function. - (generate_skeleton_bottom_up): Don't include template instantiations - in type unit DIE. - (generate_skeleton): Likewise. - (break_out_comdat_types): Move recursive call to break out nested - types earlier. - (prune_unused_types_mark_generic_parms_dies): Call - is_template_parameter. - -2013-07-26 Ian Bolton - - * config/aarch64/aarch64.md (neg2): Offer alternative that - uses vector registers. - * config/aarch64/iterators.md: Add attributes rtn and vas. - -2013-07-26 Kyrylo Tkachov - Richard Earnshaw - - * combine.c (simplify_comparison): Re-canonicalize operands - where appropriate. - * config/arm/arm.md (movcond_addsi): New splitter. - -2013-07-25 Sterling Augustine - - * dwarf2out.c (size_of_pubnames): Move code to... - (include_pubname_in_output): ...here. New. - (want_pubnames): Rearrange. - (output_pubnames): Call include_pubname_in_output. Move assertion. - -2013-07-25 Cameron McInally - - * doc/extend.texi: Fix return types for __builtin_ia32_cmp*s builtins. - -2013-07-25 Cameron McInally - - PR target/38836 - * doc/extend.texi: Remove obsolete builtins. Fix - typo for __builtin_ia32_loadss and __builtin_ia32_cmpnltss. - -2013-07-25 Jan Hubicka - - * cgraph.c (release_function_body): Break out from ... - (cgraph_release_function_body): ... this one; also release DECL_RESULT - and DECL_ARGUMENTS. - * ipa-cp.c (get_replacement_map): Add parm_num argument; do not set - old_tree in the map. - (create_specialized_node): Update. - * lto-cgraph.c (output_node_opt_summary): Do not translate old_tree - into index. - * cgraphclones.c (cgraph_create_virtual_clone): Do not copy - DECL_ARGUMENTS, DECL_INITIAL and DECL_RESULT. - * ipa-prop.c (ipa_populate_param_decls): Look for origin of clones. - * tree-inline.c (initialize_cfun): Initialize DECL_ARGUMENTS and - DECL_RESULT. - -2013-07-25 Kyrylo Tkachov - - * config/arm/arm.md (arm_addsi3, addsi3_carryin_, - addsi3_carryin_alt2_): Correct output template. - -2013-07-25 Kyrylo Tkachov - - * config/arm/arm-fixed.md (ssmulsa3, usmulusa3): - Adjust for arm_restrict_it. - Remove trailing whitespace. - -2013-07-25  Mark Kettenis   - - * config/pa/pa.c (pa_trampoline_init): Emit __enable_execute_stack - libcall if HAVE_ENABLE_EXECUTE_STACK is defined. - - * config.gcc (hppa-*-openbsd*): Don't set tmake_file. - -2013-07-25 Vladimir Makarov - - PR rtl-optimization/57960 - * lra-constraints.c (process_alt_operands): Use the right mode - when checking strict_low. - -2013-07-25 Jan Hubicka - - * lto-symtab.c (lto_cgraph_replace_node): Release function body. - * cgraph.c (cgraph_remove_node): Do not release function body - when in cgraph streaming. - * ipa.c (process_references, symtab_remove_unreachable_nodes): Objects - in other partitions are not considered reachable; fix handling of - clones. - -2013-07-25 Ramana Radhakrishnan - - * config/arm/arm.md (*sibcall_insn): Remove unnecessary space. - -2013-07-25 Ramana Radhakrishnan - - PR target/19599 - PR target/57731 - PR target/57837 - * config/arm/arm.md ("*sibcall_insn): Replace use of - Ss with US. Adjust output for v5 and v4t. - (*sibcall_value_insn): Likewise and loosen predicate on operand0. - - * config/arm/constraints.md ("Ss"): Rename to US. - -2013-07-25 Terry Guo - - * config/arm/arm.c (thumb1_size_rtx_costs): Assign proper cost for - shift_add/shift_sub0/shift_sub1 RTXs. - -2013-07-24 Bill Schmidt - Anton Blanchard - - * config/rs6000/altivec.md (altivec_vpkpx): Handle little endian. - (altivec_vpksss): Likewise. - (altivec_vpksus): Likewise. - (altivec_vpkuus): Likewise. - (altivec_vpkuum): Likewise. - -2013-07-24 David Malcolm - - Introduce context class. - - * Makefile.in (CONTEXT_H): New. - (OBJS): Add context.o. - (toplev.o): Add CONTEXT_H to dependencies. - (context.o): New. - - * toplev.c (general_init): Create the singleton gcc::context instance. - - * context.c: New. - - * context.h: New. - -2013-07-24 Joern Rennecke - - PR rtl-optimization/57968 - * mode-switching.c (create_pre_exit): Allow instructions that - don't set a return register to need a non-exit mode. - -2013-07-24 Bill Schmidt - Anton Blanchard - - * config/rs6000/vector.md (vec_realign_load_): Reorder input - operands to vperm for little endian. - * config/rs6000/rs6000.c (rs6000_expand_builtin): Use lvsr instead - of lvsl to create the control mask for a vperm for little endian. - -2013-07-23 Bill Schmidt - Anton Blanchard - - * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Reverse - two operands for little-endian. - -2013-07-23 Steve Ellcey - - * config/mips/mips.c (mips_case_values_threshold): New. - (TARGET_CASE_VALUES_THRESHOLD): Define. - -2013-07-23 Bill Schmidt - Anton Blanchard - - * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Correct - selection of field for vector splat in little endian mode. - -2013-07-23 Michael Meissner - - * config/rs6000/vector.md (xor3): Move 128-bit boolean - expanders to rs6000.md. - (ior3): Likewise. - (and3): Likewise. - (one_cmpl2): Likewise. - (nor3): Likewise. - (andc3): Likewise. - (eqv3): Likewise. - (nand3): Likewise. - (orc3): Likewise. - - * config/rs6000/rs6000-protos.h (rs6000_split_logical): New - declaration. - - * config/rs6000/rs6000.c (rs6000_split_logical_inner): Add support - to split multi-word logical operations. - (rs6000_split_logical_di): Likewise. - (rs6000_split_logical): Likewise. - - * config/rs6000/vsx.md (VSX_L2): Delete, no longer used. - (vsx_and3_32bit): Move 128-bit logical insns to rs6000.md, - and allow TImode operations in 32-bit. - (vsx_and3_64bit): Likewise. - (vsx_ior3_32bit): Likewise. - (vsx_ior3_64bit): Likewise. - (vsx_xor3_32bit): Likewise. - (vsx_xor3_64bit): Likewise. - (vsx_one_cmpl2_32bit): Likewise. - (vsx_one_cmpl2_64bit): Likewise. - (vsx_nor3_32bit): Likewise. - (vsx_nor3_64bit): Likewise. - (vsx_andc3_32bit): Likewise. - (vsx_andc3_64bit): Likewise. - (vsx_eqv3_32bit): Likewise. - (vsx_eqv3_64bit): Likewise. - (vsx_nand3_32bit): Likewise. - (vsx_nand3_64bit): Likewise. - (vsx_orc3_32bit): Likewise. - (vsx_orc3_64bit): Likewise. - - * config/rs6000/rs6000.h (VLOGICAL_REGNO_P): Always allow vector - logical types in GPRs. - - * config/rs6000/altivec.md (altivec_and3): Move 128-bit - logical insns to rs6000.md, and allow TImode operations in - 32-bit. - (altivec_ior3): Likewise. - (altivec_xor3): Likewise. - (altivec_one_cmpl2): Likewise. - (altivec_nor3): Likewise. - (altivec_andc3): Likewise. - - * config/rs6000/rs6000.md (BOOL_128): New mode iterators and mode - attributes for moving the 128-bit logical operations into - rs6000.md. - (BOOL_REGS_OUTPUT): Likewise. - (BOOL_REGS_OP1): Likewise. - (BOOL_REGS_OP2): Likewise. - (BOOL_REGS_UNARY): Likewise. - (BOOL_REGS_AND_CR0): Likewise. - (one_cmpl2): Add support for DI logical operations on - 32-bit, splitting the operations to 32-bit. - (anddi3): Likewise. - (iordi3): Likewise. - (xordi3): Likewise. - (and3, 128-bit types): Rewrite 2013-06-06 logical operator - changes to combine the 32/64-bit code, allow logical operations on - TI mode in 32-bit, and to use similar match_operator patterns like - scalar mode uses. Combine the Altivec and VSX code for logical - operations, and move it here. - (ior3, 128-bit types): Likewise. - (xor3, 128-bit types): Likewise. - (one_cmpl3, 128-bit types): Likewise. - (nor3, 128-bit types): Likewise. - (andc3, 128-bit types): Likewise. - (eqv3, 128-bit types): Likewise. - (nand3, 128-bit types): Likewise. - (orc3, 128-bit types): Likewise. - (and3_internal): Likewise. - (bool3_internal): Likewise. - (boolc3_internal1): Likewise. - (boolc3_internal2): Likewise. - (boolcc3_internal1): Likewise. - (boolcc3_internal2): Likewise. - (eqv3_internal1): Likewise. - (eqv3_internal2): Likewise. - (one_cmpl13_internal): Likewise. - -2013-07-23 David Holsgrove - - * config/microblaze/microblaze.c (microblaze_expand_prologue): - Rename flag_stack_usage to flag_stack_usage_info. - -2013-07-23 David Holsgrove - - * config/microblaze/sync.md: New file. - * config/microblaze/microblaze.md: Include sync.md - * config/microblaze/microblaze.c: Add print_operand 'y'. - * config/microblaze/constraints.md: Add memory_contraint - 'Q' which is a single register. - -2013-07-23 Eric Botcazou - - * doc/invoke.texi (SPARC Options): Document new leon3 processor value. - -2013-07-22 Po-Chun Chang - - * reload.c (find_reloads): Exit loop once we find this operand - cannot be reloaded somehow for this alternative. - - * reload.c (find_reloads): Exit loop once we find a hard register. - - * rtlanal.c (computed_jump_p): Exit loop once we find label - reference is used. - - * i386.c (ix86_pad_returns): Exit loop after setting replace. - - * cfgloopmanip.c (remove_path): Exit loop after setting - irred_invalidated. - - * gensupport.c (subst_dup): Avoid loop if code is not - MATCH_DUP nor MATCH_OP_DUP. - -2013-07-23 Nicklas Bo Jensen - - * doc/md.texi (Machine-Specific Peephole Optimizers): Fix a typo. - -2013-07-23 Yufeng Zhang - - * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Also return - true for SP_REGNUM if mode == ptr_mode. - * config/aarch64/aarch64.h (ADDITIONAL_REGISTER_NAMES): Add "wsp" - with value R0_REGNUM + 31. - -2013-07-23 Yufeng Zhang - - * config/aarch64/aarch64.c (aarch64_pad_arg_upward): In big-endian, - pad pointer-typed argument downward. - -2013-07-23 Yufeng Zhang - - * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define _ILP32 - and __ILP32__ when the ILP32 model is in use. - -2013-07-23 Yufeng Zhang - - * config/aarch64/aarch64.c (POINTER_BYTES): New define. - (aarch64_load_symref_appropriately): In the case of - SYMBOL_SMALL_ABSOLUTE, use the mode of 'dest' instead of Pmode - to generate new rtx; likewise to the case of SYMBOL_SMALL_GOT. - (aarch64_expand_mov_immediate): In the case of SYMBOL_FORCE_TO_MEM, - change to pass 'ptr_mode' to force_const_mem and zero-extend 'mem' - if 'mode' doesn't equal to 'ptr_mode'. - (aarch64_output_mi_thunk): Add an assertion on the alignment of - 'vcall_offset'; change to call aarch64_emit_move differently depending - on whether 'Pmode' equals to 'ptr_mode' or not; use 'POINTER_BYTES' - to calculate the upper bound of 'vcall_offset'. - (aarch64_cannot_force_const_mem): Change to also return true if - mode != ptr_mode. - (aarch64_legitimize_reload_address): In the case of large - displacements, add new local variable 'xmode' and an assertion - based on it; change to use 'xmode' to generate the new rtx and - reload. - (aarch64_asm_trampoline_template): Change to generate the template - differently depending on TARGET_ILP32 or not; change to use - 'POINTER_BYTES' in the argument passed to assemble_aligned_integer. - (aarch64_trampoline_size): Removed. - (aarch64_trampoline_init): Add new local constant 'tramp_code_sz' - and replace immediate literals with it. Change to use 'ptr_mode' - instead of 'DImode' and call convert_memory_address if the mode - of 'fnaddr' doesn't equal to 'ptr_mode'. - (aarch64_elf_asm_constructor): Change to use assemble_aligned_integer - to output symbol. - (aarch64_elf_asm_destructor): Likewise. - * config/aarch64/aarch64.h (TRAMPOLINE_SIZE): Change to be dependent - on TARGET_ILP32 instead of aarch64_trampoline_size. - * config/aarch64/aarch64.md (movsi_aarch64): Add new alternatives - of 'mov' between WSP and W registers as well as 'adr' and 'adrp'. - (loadwb_pair_): Rename to ... - (loadwb_pair_): ... this. Replace PTR with P. - (storewb_pair_): Likewise; rename to ... - (storewb_pair_): ... this. - (add_losym): Change to 'define_expand' and call gen_add_losym_ - depending on the value of 'mode'. - (add_losym_): New. - (ldr_got_small_): New, based on ldr_got_small. - (ldr_got_small): Remove. - (ldr_got_small_sidi): New. - * config/aarch64/iterators.md (P): New. - (PTR): Change to 'ptr_mode' in the condition. - -2013-07-23 Yufeng Zhang - - * config.gcc (aarch64*-*-*): Support --with-abi. - (aarch64*-*-elf): Support --with-multilib-list. - (aarch64*-*-linux*): Likewise. - (supported_defaults): Add abi to aarch64*-*-*. - * configure.ac: Mention AArch64 for --with-multilib-list. - * configure: Re-generated. - * config/aarch64/biarchilp32.h: New file. - * config/aarch64/biarchlp64.h: New file. - * config/aarch64/aarch64-elf.h (ENDIAN_SPEC): New define. - (ABI_SPEC): Ditto. - (MULTILIB_DEFAULTS): Ditto. - (DRIVER_SELF_SPECS): Ditto. - (ASM_SPEC): Update to also substitute -mabi. - * config/aarch64/aarch64-elf-raw.h (LINK_SPEC): Add linker script - file whose name depends on -mabi= and -mbig-endian. - * config/aarch64/aarch64.h (LONG_TYPE_SIZE): Change to depend on - TARGET_ILP32. - (POINTER_SIZE): New define. - (POINTERS_EXTEND_UNSIGNED): Ditto. - (enum aarch64_abi_type): New enumeration tag. - (AARCH64_ABI_LP64, AARCH64_ABI_ILP32): New enumerators. - (AARCH64_ABI_DEFAULT): Define to AARCH64_ABI_LP64 if undefined. - (TARGET_ILP32): New define. - * config/aarch64/aarch64.opt (mabi): New. - (aarch64_abi): New. - (ilp32, lp64): New values for -mabi. - * config/aarch64/t-aarch64 (comma): New define. - (MULTILIB_OPTIONS): Ditto. - (MULTILIB_DIRNAMES): Ditto. - * config/aarch64/t-aarch64-linux (MULTIARCH_DIRNAME): New define. - * doc/invoke.texi: Document -mabi for AArch64. - -2013-07-23 Georg-Johann Lay - - * config/avr/avr.md: Explain asm print modifier 'r' for REG. - -2013-07-22 Bill Schmidt - Anton Blanchard - - * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix - endianness when selecting field to splat. - -2013-07-22 Eric Christopher - - * dwarf2out.c (die_odr_checksum): New function to use - CHECKSUM_ macros and ULEB128 for DIE tag. - (generate_type_signature): Use. - -2013-07-22 Eric Botcazou - - * config.gcc (sparc*-*-*): Accept leon3 processor. - (sparc-leon*-*): Merge with sparc*-*-* and add leon3 support. - * doc/invoke.texi (SPARC Options): Adjust -mfix-ut699 entry. - * config/sparc/sparc-opts.h (enum processor_type): Add PROCESSOR_LEON3. - * config/sparc/sparc.opt (enum processor_type): Add leon3. - (mfix-ut699): Adjust comment. - * config/sparc/sparc.h (TARGET_CPU_leon3): New define. - (CPP_CPU32_DEFAULT_SPEC): Add leon3 support. - (CPP_CPU_SPEC): Likewise. - (ASM_CPU_SPEC): Likewise. - * config/sparc/sparc.c (leon3_cost): New constant. - (sparc_option_override): Add leon3 support. - (mem_ref): New function. - (sparc_gate_work_around_errata): Return true if -mfix-ut699 is enabled. - (sparc_do_work_around_errata): Look into the instruction in the delay - slot and adjust accordingly. Add fix for the data cache nullify issues - of the UT699. Change insertion position for the NOP. - * config/sparc/leon.md (leon_fpalu, leon_fpmds, write_buf): Delete. - (leon3_load): New reservation. - (leon_store): Bump latency to 2. - (grfpu): New automaton. - (grfpu_alu): New unit. - (grfpu_ds): Likewise. - (leon_fp_alu): Adjust. - (leon_fp_mult): Delete. - (leon_fp_div): Split into leon_fp_divs and leon_fp_divd. - (leon_fp_sqrt): Split into leon_fp_sqrts and leon_fp_sqrtd. - * config/sparc/sparc.md (cpu): Add leon3. - * config/sparc/sync.md (atomic_exchangesi): Disable if -mfix-ut699. - (swapsi): Likewise. - (atomic_test_and_set): Likewise. - (ldstub): Likewise. - -2013-07-22 Jürgen Urban - - * config.gcc (mips*-*-*): Add --with-fpu support. Make single the - default for R5900 targets. - * config/mips/mips.h (OPTION_DEFAULT_SPECS): Handle --with-fpu. - (ISA_HAS_LDC1_SDC1): Set to false for TARGET_MIPS5900. - * config/mips/mips.c (mips_option_override): Report an error for - -march=r5900 -mhard-float -mdouble-float. Use spu_single_format - for -march=r5900 -mhard-float. - -2013-07-22 Po-Chun Chang - - * df-problems.c (can_move_insns_across): Exit loop once we - find a non-fixed, non-global register. - - * ipa-pure-const.c (propagate_nothrow): Exit loop after - setting can_throw. - - * omega.c (omega_eliminate_red): Break after setting red_found. - (omega_problem_has_red_equations): Similarly after setting found. - (omega_query_variable): Similarly after setting coupled. - -2013-07-22 Marek Polacek - - * gimplify.c: Don't include gimple.h twice. - -2013-07-22 Kyrylo Tkachov - - * config/arm/constraints.md (Pd): Allow TARGET_THUMB - instead of TARGET_THUMB1. - (Pz): New constraint. - * config/arm/arm.md (arm_addsi3): Add alternatives for 16-bit - encodings. - (compare_negsi_si): Likewise. - (compare_addsi2_op0): Likewise. - (compare_addsi2_op1): Likewise. - (addsi3_carryin_): Likewise. - (addsi3_carryin_alt2_): Likewise. - (addsi3_carryin_shift_): Disable cond_exec variant - for arm_restrict_it. - (subsi3_carryin): Likewise. - (arm_subsi3_insn): Add alternatives for 16-bit encoding. - (minmax_arithsi): Disable for arm_restrict_it. - (minmax_arithsi_non_canon): Adjust for arm_restrict_it. - (satsi_): Disable cond_exec variant for arm_restrict_it. - (satsi__shift): Likewise. - (arm_shiftsi3): Add alternative for 16-bit encoding. - (arm32_movhf): Disable for arm_restrict_it. - (arm_cmpdi_unsigned): Add alternatives for 16-bit encoding. - (arm_movtas_ze): Disable cond_exec variant for arm_restrict_it. - -2013-07-22 Sofiane Naci - - * config/arm/arm.md (attribute "insn"): Delete. - (attribute "type"): Add "mov_imm", "mov_reg", "mov_shift", - "mov_shift_reg", "mvn_imm", "mvn_reg", "mvn_shift" and "mvn_shift_reg". - (not_shiftsi): Update for attribute change. - (not_shiftsi_compare0): Likewise. - (not_shiftsi_compare0_scratch): Likewise. - (arm_one_cmplsi2): Likewise. - (thumb1_one_cmplsi2): Likewise. - (notsi_compare0): Likewise. - (notsi_compare0_scratch): Likewise. - (thumb1_movdi_insn): Likewise. - (arm_movsi_insn): Likewise. - (movhi_insn_arch4): Likewise. - (movhi_bytes): Likewise. - (arm_movqi_insn): Likewise. - (thumb1_movqi_insn): Likewise. - (arm32_movhf): Likewise. - (thumb1_movhf): Likewise. - (arm_movsf_soft_insn): Likewise. - (thumb1_movsf_insn): Likewise. - (thumb_movdf_insn): Likewise. - (movsicc_insn): Likewise. - (movsfcc_soft_insn): Likewise. - (and_scc): Likewise. - (cond_move): Likewise. - (if_move_not): Likewise. - (if_not_move): Likewise. - (if_shift_move): Likewise. - (if_move_shift): Likewise. - (if_shift_shift): Likewise. - (if_not_arith): Likewise. - (if_arith_not): Likewise. - (cond_move_not): Likewise. - * config/arm/neon.md (neon_mov): Update for attribute change. - (neon_mov): Likewise. - * config/arm/vfp.md (arm_movsi_vfp): Update for attribute change. - (thumb2_movsi_vfp): Likewise. - (movsf_vfp): Likewise. - (thumb2_movsf_vfp): Likewise. - * config/arm/arm.c (xscale_sched_adjust_cost): Update for attribute - change. - (cortexa7_older_only): Likewise. - (cortexa7_younger): Likewise. - * config/arm/arm1020e.md (1020alu_op): Update for attribute change. - (1020alu_shift_op): Likewise. - (1020alu_shift_reg_op): Likewise. - * config/arm/arm1026ejs.md (alu_op): Update for attribute change. - (alu_shift_op): Likewise. - (alu_shift_reg_op): Likewise. - * config/arm/arm1136jfs.md (11_alu_op): Update for attribute change. - (11_alu_shift_op): Likewise. - (11_alu_shift_reg_op): Likewise. - * config/arm/arm926ejs.md (9_alu_op): Update for attribute change. - (9_alu_shift_reg_op): Likewise. - * config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute - change. - (cortex_a15_alu_shift): Likewise. - (cortex_a15_alu_shift_reg): Likewise. - * config/arm/cortex-a5.md (cortex_a5_alu): Update for attribute change. - (cortex_a5_alu_shift): Likewise. - * config/arm/cortex-a53.md (cortex_a53_alu): Update for attribute - change. - (cortex_a53_alu_shift): Likewise. - * config/arm/cortex-a7.md (cortex_a7_alu_imm): Update for attribute - change. - (cortex_a7_alu_reg): Likewise. - (cortex_a7_alu_shift): Likewise. - * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute change. - (cortex_a8_alu_shift): Likewise. - (cortex_a8_alu_shift_reg): Likewise. - (cortex_a8_mov): Likewise. - * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute change. - (cortex_a9_dp_shift): Likewise. - * config/arm/cortex-m4.md (cortex_m4_alu): Update for attribute change. - * config/arm/cortex-r4.md (cortex_r4_alu): Update for attribute change. - (cortex_r4_mov): Likewise. - (cortex_r4_alu_shift): Likewise. - (cortex_r4_alu_shift_reg): Likewise. - * config/arm/fa526.md (526_alu_op): Update for attribute change. - (526_alu_shift_op): Likewise. - * config/arm/fa606te.md (606te_alu_op): Update for attribute change. - * config/arm/fa626te.md (626te_alu_op): Update for attribute change. - (626te_alu_shift_op): Likewise. - * config/arm/fa726te.md (726te_shift_op): Update for attribute change. - (726te_alu_op): Likewise. - (726te_alu_shift_op): Likewise. - (726te_alu_shift_reg_op): Likewise. - * config/arm/fmp626.md (mp626_alu_op): Update for attribute change. - (mp626_alu_shift_op): Likewise. - * config/arm/marvell-pj4.md (pj4_alu_e1): Update for attribute change. - (pj4_alu_e1_conds): Likewise. - (pj4_alu): Likewise. - (pj4_alu_conds): Likewise. - (pj4_shift): Likewise. - (pj4_shift_conds): Likewise. - (pj4_alu_shift): Likewise. - (pj4_alu_shift_conds): Likewise. - -2013-07-22 Kyrylo Tkachov - - * config/arm/predicates.md (shiftable_operator_strict_it): - New predicate. - * config/arm/thumb2.md (thumb_andsi_not_shiftsi_si): - Disable cond_exec version for arm_restrict_it. - (thumb2_smaxsi3): Convert to generate cond_exec. - (thumb2_sminsi3): Likewise. - (thumb32_umaxsi3): Likewise. - (thumb2_uminsi3): Likewise. - (thumb2_abssi2): Adjust constraints for arm_restrict_it. - (thumb2_neg_abssi2): Likewise. - (thumb2_mov_scc): Add alternative for 16-bit encoding. - (thumb2_movsicc_insn): Adjust alternatives. - (thumb2_mov_negscc): Disable for arm_restrict_it. - (thumb2_mov_negscc_strict_it): New pattern. - (thumb2_mov_notscc_strict_it): New pattern. - (thumb2_mov_notscc): Disable for arm_restrict_it. - (thumb2_ior_scc): Likewise. - (thumb2_ior_scc_strict_it): New pattern. - (thumb2_cond_move): Adjust for arm_restrict_it. - (thumb2_cond_arith): Disable for arm_restrict_it. - (thumb2_cond_arith_strict_it): New pattern. - (thumb2_cond_sub): Adjust for arm_restrict_it. - (thumb2_movcond): Likewise. - (thumb2_extendqisi_v6): Disable cond_exec variant for arm_restrict_it. - (thumb2_zero_extendhisi2_v6): Likewise. - (thumb2_zero_extendqisi2_v6): Likewise. - (orsi_notsi_si): Likewise. - (orsi_not_shiftsi_si): Likewise. - -2013-07-22 Georg-Johann Lay - - * config/avr/avr.c (avr_out_xload): No SBIS around LPM so that - instruction sequence is 1 byte shorter. - -2013-07-22 Uros Bizjak - - * config/i386/i386.md (nonlocal_goto_receiver): Delete insn if - it is not needed after split. - -2013-07-20 Iain Sandoe - - PR target/51784 - * config/i386/i386.c (output_set_got) [TARGET_MACHO]: Adjust to emit a - second label for nonlocal goto receivers. Don't output pic base labels - unless we're producing PIC; mark that action unreachable(). - (ix86_save_reg): If the function contains a nonlocal label, save the - PIC base reg. - * config/darwin-protos.h (machopic_should_output_picbase_label): New. - * config/darwin.c (emitted_pic_label_num): New GTY. - (update_pic_label_number_if_needed): New. - (machopic_output_function_base_name): Adjust for nonlocal receiver - case. - (machopic_should_output_picbase_label): New. - * config/i386/i386.md (enum unspecv): UNSPECV_NLGR: New. - (nonlocal_goto_receiver): New insn and split. - -2013-07-20 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_fold_builtin): Fold abs in all modes. - * config/aarch64/aarch64-simd-builtins.def - (abs): Enable for all modes. - * config/aarch64/arm_neon.h - (vabs_s<8,16,32,64): Rewrite using builtins. - (vabs_f64): Add missing intrinsic. - -2013-07-19 Ian Bolton - - * config/aarch64/arm_neon.h (vabs_s64): New function - -2013-07-19 Georg-Johann Lay - - PR target/57516 - * config/avr/avr-fixed.md (round3_const): Turn expander to insn. - * config/avr/avr.md (adjust_len): Add `round'. - * config/avr/avr-protos.h (avr_out_round): New prototype. - (avr_out_plus): Add `out_label' argument. - * config/avr/avr.c (avr_out_plus_1): Add `out_label' argument. - (avr_out_plus): Pass down `out_label' to avr_out_plus_1. - Handle the case where `insn' is just a pattern. - (avr_out_bitop): Handle the case where `insn' is just a pattern. - (avr_out_round): New function. - (avr_adjust_insn_length): Handle ADJUST_LEN_ROUND. - -2013-07-18 David Holsgrove - - * config/microblaze/microblaze.c (microblaze_expand_prologue): - Add check for flag_stack_usage to handle -fstack-usage support - -2013-07-18 Pat Haugen - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Adjust flag - interaction for new Power8 flags and VSX. - -2013-07-18 Sriraman Tallam - - PR middle-end/57698 - * tree-inline.c (expand_call_inline): Emit errors during - early_inlining only if optimization is not turned on. - -2013-07-18 David Malcolm - - * passes.def: New. - - * passes.c (init_optimization_passes): Move the construction of - the pass hierarchy into a new passes.def file. - - * Makefile.in (passes.o): Add dependency on passes.def. - -2013-07-18 David Malcolm - - * passes.c (init_optimization_passes): Introduce macros for - constructing the tree of passes (INSERT_PASSES_AFTER, - PUSH_INSERT_PASSES_WITHIN, POP_INSERT_PASSES, - TERMINATE_PASS_LIST). - -2013-07-18 Vladimir Makarov - Wei Mi - - PR rtl-optimization/57878 - * lra-assigns.c (assign_by_spills): Move non_reload_pseudos to the - top. - (reload_pseudo_compare_func): Check nregs first for reload - pseudos. - -2013-07-18 David Malcolm - - * tree-pass.h (pass_ipa_lto_wpa_fixup): Remove redundant decl. - -2013-07-18 Po-Chun Chang - - * read-rtl.c (validate_const_int): Once an invalid character is - seen, quit the loop. - - * gengtype.c (write_roots): Similarly once we find the "deletable" - or "if_marked" option. - -2013-07-18 Sofiane Naci - - * config/arm/arm.md (attribute "insn"): Delete values "mrs", "msr", - "xtab" and "sat". Move value "clz" from here to ... - (attriubte "type"): ... here. - (satsi_): Delete "insn" attribute. - (satsi__shift): Likewise. - (arm_zero_extendqisi2addsi): Likewise. - (arm_extendqisi2addsi): Likewise. - (clzsi2): Update for attribute changes. - (rbitsi2): Likewise. - * config/arm/arm-fixed.md (arm_ssatsihi_shift): Delete "insn" - attribute. - (arm_usatsihi): Likewise. - * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute change. - -2013-07-18 Sofiane Naci - - * config/arm/arm.md (attribute "type"): Rename "simple_alu_imm" to - "arlo_imm". Rename "alu_reg" to "arlo_reg". Rename "simple_alu_shift" - to "extend". Split "alu_shift" into "shift" and "arlo_shift". Split - "alu_shift_reg" into "shift_reg" and "arlo_shift_reg". List types - in alphabetical order. - (attribute "core_cycles"): Update for attribute changes. - (arm_addsi3): Likewise. - (addsi3_compare0): Likewise. - (addsi3_compare0_scratch): Likewise. - (addsi3_compare_op1): Likewise. - (addsi3_compare_op2): Likewise. - (compare_addsi2_op0): Likewise. - (compare_addsi2_op1): Likewise. - (addsi3_carryin_shift_): Likewise. - (subsi3_carryin_shift): Likewise. - (rsbsi3_carryin_shift): Likewise. - (arm_subsi3_insn): Likewise. - (subsi3_compare0): Likewise. - (subsi3_compare): Likewise. - (arm_andsi3_insn): Likewise. - (thumb1_andsi3_insn): Likewise. - (andsi3_compare0): Likewise. - (andsi3_compare0_scratch): Likewise. - (zeroextractsi_compare0_scratch - (andsi_not_shiftsi_si): Likewise. - (iorsi3_insn): Likewise. - (iorsi3_compare0): Likewise. - (iorsi3_compare0_scratch): Likewise. - (arm_xorsi3): Likewise. - (thumb1_xorsi3_insn): Likewise. - (xorsi3_compare0): Likewise. - (xorsi3_compare0_scratch): Likewise. - (satsi__shift): Likewise. - (rrx): Likewise. - (arm_shiftsi3): Likewise. - (shiftsi3_compare0): Likewise. - (not_shiftsi): Likewise. - (not_shiftsi_compare0): Likewise. - (not_shiftsi_compare0_scratch): Likewise. - (arm_one_cmplsi2): Likewise. - (thumb_one_complsi2): Likewise. - (notsi_compare0): Likewise. - (notsi_compare0_scratch): Likewise. - (thumb1_zero_extendhisi2): Likewise. - (arm_zero_extendhisi2): Likewise. - (arm_zero_extendhisi2_v6): Likewise. - (arm_zero_extendhisi2addsi): Likewise. - (thumb1_zero_extendqisi2): Likewise. - (thumb1_zero_extendqisi2_v6): Likewise. - (arm_zero_extendqisi2): Likewise. - (arm_zero_extendqisi2_v6): Likewise. - (arm_zero_extendqisi2addsi): Likewise. - (thumb1_extendhisi2): Likewise. - (arm_extendhisi2): Likewise. - (arm_extendhisi2_v6): Likewise. - (arm_extendqisi): Likewise. - (arm_extendqisi_v6): Likewise. - (arm_extendqisi2addsi): Likewise. - (thumb1_extendqisi2): Likewise. - (thumb1_movdi_insn): Likewise. - (arm_movsi_insn): Likewise. - (movsi_compare0): Likewise. - (movhi_insn_arch4): Likewise. - (movhi_bytes): Likewise. - (arm_movqi_insn): Likewise. - (thumb1_movqi_insn): Likewise. - (arm32_movhf): Likewise. - (thumb1_movhf): Likewise. - (arm_movsf_soft_insn): Likewise. - (thumb1_movsf_insn): Likewise. - (movdf_soft_insn): Likewise. - (thumb_movdf_insn): Likewise. - (arm_cmpsi_insn): Likewise. - (cmpsi_shiftsi): Likewise. - (cmpsi_shiftsi_swp): Likewise. - (arm_cmpsi_negshiftsi_si): Likewise. - (movsicc_insn): Likewise. - (movsfcc_soft_insn): Likewise. - (arith_shiftsi): Likewise. - (arith_shiftsi_compare0 - (arith_shiftsi_compare0_scratch - (sub_shiftsi): Likewise. - (sub_shiftsi_compare0 - (sub_shiftsi_compare0_scratch - (and_scc): Likewise. - (cond_move): Likewise. - (if_plus_move): Likewise. - (if_move_plus): Likewise. - (if_move_not): Likewise. - (if_not_move): Likewise. - (if_shift_move): Likewise. - (if_move_shift): Likewise. - (if_shift_shift): Likewise. - (if_not_arith): Likewise. - (if_arith_not): Likewise. - (cond_move_not): Likewise. - (thumb1_ashlsi3): Set type attribute. - (thumb1_ashrsi3): Likewise. - (thumb1_lshrsi3): Likewise. - (thumb1_rotrsi3): Likewise. - (shiftsi3_compare0_scratch): Likewise. - * config/arm/neon.md (neon_mov): Update for attribute changes. - (neon_mov): Likewise. - * config/arm/thumb2.md (thumb_andsi_not_shiftsi_si): Update for - attribute changes. - (thumb2_movsi_insn): Likewise. - (thumb2_cmpsi_neg_shiftsi): Likewise. - (thumb2_extendqisi_v6): Likewise. - (thumb2_zero_extendhisi2_v6): Likewise. - (thumb2_zero_extendqisi2_v6): Likewise. - (thumb2_shiftsi3_short): Likewise. - (thumb2_addsi3_compare0_scratch): Likewise. - (orsi_not_shiftsi_si): Likewise. - * config/arm/vfp.md (arm_movsi_vfp): Update for attribute changes. - * config/arm/arm-fixed.md (arm_ssatsihi_shift): Update for attribute - changes. - * config/arm/arm1020e.md (1020alu_op): Update for attribute changes. - (1020alu_shift_op): Likewise. - (1020alu_shift_reg_op): Likewise. - * config/arm/arm1026ejs.md (alu_op): Update for attribute changes. - (alu_shift_op): Likewise. - (alu_shift_reg_op): Likewise. - * config/arm/arm1136jfs.md (11_alu_op): Update for attribute changes. - (11_alu_shift_op): Likewise. - (11_alu_shift_reg_op): Likewise. - * config/arm/arm926ejs.md (9_alu_op): Update for attribute changes. - (9_alu_shift_reg_op): Likewise. - * config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute - changes. - (cortex_a15_alu_shift): Likewise. - (cortex_a15_alu_shift_reg): Likewise. - * config/arm/cortex-a5.md (cortex_a5_alu): Update for attribute - changes. - (cortex_a5_alu_shift): Likewise. - * config/arm/cortex-a53.md (cortex_a53_alu) : Update for attribute - changes. - (cortex_a53_alu_shift): Likewise. - * config/arm/cortex-a7.md (cortex_a7_alu_imm): Update for attribute - changes. - (cortex_a7_alu_reg): Likewise. - (cortex_a7_alu_shift): Likewise. - * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute - changes. - (cortex_a8_alu_shift): Likewise. - (cortex_a8_alu_shift_reg): Likewise. - (cortex_a8_mov): Likewise. - * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute changes. - (cortex_a9_dp_shift): Likewise. - * config/arm/cortex-m4.md (cortex_m4_alu): Update for attribute - changes. - * config/arm/cortex-r4.md (cortex_r4_alu): Update for attribute - changes. - (cortex_r4_mov): Likewise. - (cortex_r4_alu_shift): Likewise. - (cortex_r4_alu_shift_reg): Likewise. - * config/arm/fa526.md (526_alu_op): Update for attribute changes. - (526_alu_shift_op): Likewise. - * config/arm/fa606te.md (606te_alu_op): Update for attribute changes. - * config/arm/fa626te.md (626te_alu_op): Update for attribute changes. - (626te_alu_shift_op): Likewise. - * config/arm/fa726te.md (726te_shift_op): Update for attribute changes. - (726te_alu_op): Likewise. - (726te_alu_shift_op): Likewise. - (726te_alu_shift_reg_op): Likewise. - * config/arm/fmp626.md (mp626_alu_op): Update for attribute changes. - (mp626_alu_shift_op): Likewise. - * config/arm/marvell-pj4.md (pj4_alu_e1): Update for attribute changes. - (pj4_alu_e1_conds): Likewise. - (pj4_alu): Likewise. - (pj4_alu_conds): Likewise. - (pj4_shift): Likewise. - (pj4_shift_conds): Likewise. - (pj4_alu_shift): Likewise. - (pj4_alu_shift_conds): Likewise. - * config/arm/arm.c (xscale_sched_adjust_cost): Update for attribute - changes. - (cortexa7_older_only): Likewise. - (cortexa7_younger): Likewise. - -2013-07-18 David Malcolm - - * ipa-pure-const.c (generate_summary): Rename to... - (pure_const_generate_summary): ... this. - -2013-07-17 Iain Sandoe - - * config/rs6000/darwin.h (REGISTER_NAMES): Add HTM registers. - -2013-07-17 Yvan Roux - - PR target/57909 - * config/arm/arm.c (gen_movmem_ldrd_strd): Fix unaligned load/store - usage in HI mode. - -2013-07-17 Andreas Krebbel - - * config/s390/s390.c: (s390_expand_builtin): Allow -mhtm to be - enabled without -march=zEC12. - * config/s390/s390.h (TARGET_HTM): Do not require EC12 machine - flags to be set. - -2013-07-16 Maciej W. Rozycki - - * config/mips/mips.h (ISA_HAS_FP4): Correct formatting. - (ISA_HAS_FP_MADD4_MSUB4): Also enable for ISA_MIPS32R2. - (ISA_HAS_NMADD4_NMSUB4): Remove the MODE argument; rewrite in - terms of ISA_HAS_FP4, and also enable for ISA_MIPS32R2. - (ISA_HAS_NMADD3_NMSUB3): Remove the MODE argument. - * config/mips/mips.c (mips_rtx_costs) : Check for - ISA_HAS_FP_MADD4_MSUB4 || ISA_HAS_FP_MADD3_MSUB3 rather than - ISA_HAS_FP4. - : Update according to changes to ISA_HAS_NMADD4_NMSUB4 - and ISA_HAS_NMADD3_NMSUB3. - * config/mips/mips.md (nmadd4, nmadd3): Likewise. - (nmadd4_fastmath, nmadd3_fastmath): Likewise. - (nmsub4, nmsub3): Likewise. - (nmsub4_fastmath, nmsub3_fastmath): Likewise. - -2013-07-16 Maciej W. Rozycki - - * config/mips/mips.h (ISA_HAS_NMADD4_NMSUB4): Remove - TARGET_MIPS5400 checking. - -2013-07-16 Jakub Jelinek - Peter Bergner - - * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTERS): Mention HTM - registers in the comment. - (DWARF_FRAME_REGISTERS): Subtract also the 3 HTM registers. - (DWARF_REG_TO_UNWIND_COLUMN): Use DWARF_FRAME_REGISTERS - rather than FIRST_PSEUDO_REGISTERS. - -2013-07-16 Peter Bergner - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not - enable extra ISA flags with TARGET_HTM. - -2013-07-16 Maciej W. Rozycki - - * config/mips/mips.h (ISA_HAS_MULS, ISA_HAS_MSAC, ISA_HAS_MACC): - Fix comment typos. - -2013-07-15 Cong Hou - - * tree-vect-data-refs.c (dr_group_sort_cmp): Do not use hash function - in compare function for sorting. - -2013-07-15 Peter Bergner - - * config.gcc (powerpc*-*-*): Install htmintrin.h and htmxlintrin.h. - * config/rs6000/t-rs6000 (MD_INCLUDES): Add htm.md. - * config/rs6000/rs6000.opt: Add -mhtm option. - * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add OPTION_MASK_HTM. - (ISA_2_7_MASKS_SERVER): Add OPTION_MASK_HTM. - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define - __HTM__ if the HTM instructions are available. - * config/rs6000/predicates.md (u3bit_cint_operand, u10bit_cint_operand, - htm_spr_reg_operand): New define_predicates. - * config/rs6000/rs6000.md (define_attr "type"): Add htm. - (TFHAR_REGNO, TFIAR_REGNO, TEXASR_REGNO): New define_constants. - Include htm.md. - * config/rs6000/rs6000-builtin.def (BU_HTM_0, BU_HTM_1, BU_HTM_2, - BU_HTM_3, BU_HTM_SPR0, BU_HTM_SPR1): Add support macros for defining - HTM builtin functions. - * config/rs6000/rs6000.c (RS6000_BUILTIN_H): New macro. - (rs6000_reg_names, alt_reg_names): Add HTM SPR register names. - (rs6000_init_hard_regno_mode_ok): Add support for HTM instructions. - (rs6000_builtin_mask_calculate): Likewise. - (rs6000_option_override_internal): Likewise. - (bdesc_htm): Add new HTM builtin support. - (htm_spr_num): New function. - (htm_spr_regno): Likewise. - (rs6000_htm_spr_icode): Likewise. - (htm_expand_builtin): Likewise. - (htm_init_builtins): Likewise. - (rs6000_expand_builtin): Add support for HTM builtin functions. - (rs6000_init_builtins): Likewise. - (rs6000_invalid_builtin, rs6000_opt_mask): Add support for -mhtm - option. - * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mhtm. - (TARGET_HTM, MASK_HTM): Define macros. - (FIRST_PSEUDO_REGISTER): Adjust for new HTM SPR registers. - (FIXED_REGISTERS): Likewise. - (CALL_USED_REGISTERS): Likewise. - (CALL_REALLY_USED_REGISTERS): Likewise. - (REG_ALLOC_ORDER): Likewise. - (enum reg_class): Likewise. - (REG_CLASS_NAMES): Likewise. - (REG_CLASS_CONTENTS): Likewise. - (REGISTER_NAMES): Likewise. - (ADDITIONAL_REGISTER_NAMES): Likewise. - (RS6000_BTC_SPR, RS6000_BTC_VOID, RS6000_BTC_32BIT, RS6000_BTC_64BIT, - RS6000_BTC_MISC_MASK, RS6000_BTM_HTM): New macros. - (RS6000_BTM_COMMON): Add RS6000_BTM_HTM. - * config/rs6000/htm.md: New file. - * config/rs6000/htmintrin.h: New file. - * config/rs6000/htmxlintrin.h: New file. - -2013-07-15 Marcus Shawcroft - - * config/aarch64/aarch64-protos.h (aarch64_symbol_type): - Define SYMBOL_TINY_GOT, update comment. - * config/aarch64/aarch64.c - (aarch64_load_symref_appropriately): Handle SYMBOL_TINY_GOT. - (aarch64_expand_mov_immediate): Likewise. - (aarch64_print_operand): Likewise. - (aarch64_classify_symbol): Likewise. - * config/aarch64/aarch64.md (UNSPEC_GOTTINYPIC): Define. - (ldr_got_tiny): Define. - -2013-07-13 Tobias Grosser - - PR tree-optimization/54094 - * graphite-clast-to-gimple.c (translate_clast_for_loop): Derive the - scheduling dimension for the parallelism check from the polyhedral - information in the AST. - * graphite-dependences.c (carries_deps): Do not assume the schedule is - in 2D + 1 form. - -2013-07-13 Jason Merrill - - * print-tree.c (debug_vec_tree): Use debug_raw. - (debug_raw (vec &)): New. - (debug_raw (vec *)): New. - * tree.h: Declare them. - -2013-07-13 Bin Cheng - - * ifcvt.c (ifcvt_after_combine): New static variable. - (cheap_bb_rtx_cost_p): Set scale to REG_BR_PROB_BASE when optimizing - for size. - (if_convert): New parameter after_combine. Set ifcvt_after_combine. - (rest_of_handle_if_conversion, rest_of_handle_if_after_combine, - rest_of_handle_if_after_reload): Pass new argument for if_convert. - -2013-07-12 Maciej W. Rozycki - - * config/mips/mips.c (mips_expand_call): Remove empty statement. - -2013-07-12 Michael Matz - - PR middle-end/55771 - * convert.c (convert_to_real): Reject non-float inner types. - -2013-07-12 Tejas Belagod - - * config/aarch64/aarch64-protos.h - (aarch64_simd_immediate_valid_for_move): Remove. - * config/aarch64/aarch64.c (simd_immediate_info): New member. - (aarch64_simd_valid_immediate): Recognize idioms for shifting ones - cases. - (aarch64_output_simd_mov_immediate): Print the correct shift specifier. - -2013-07-11 Steve Ellcey - - * config/mips/mips.c (mips_conditional_register_usage): Do not - use t[0-7] registers in MIPS16 mode when optimizing for size. - -2013-07-11 Sriraman Tallam - - * config/i386/i386.c (dispatch_function_versions): Fix array - indexing of function_version_info to match actual_versions. - -2013-07-11 Teresa Johnson - - * vec.h (struct va_gc): Move release out-of-line. - (va_gc::release): Call ggc_free on released vec. - -2013-07-11 Ulrich Weigand - - * config/rs6000/rs6000.md (""*tls_gd_low"): - Require GOT register as additional operand in UNSPEC. - ("*tls_ld_low"): Likewise. - ("*tls_got_dtprel_low"): Likewise. - ("*tls_got_tprel_low"): Likewise. - ("*tls_gd"): Update splitter. - ("*tls_ld"): Likewise. - ("tls_got_dtprel_"): Likewise. - ("tls_got_tprel_"): Likewise. - -2013-07-11 Georg-Johann Lay - - PR target/57631 - * config/avr/avr.c (avr_set_current_function): Sanity-check signal - name seen by assembler/linker rather if available. - -2013-07-11 Andreas Schwab - - * config/aarch64/aarch64-linux.h (CPP_SPEC): Define. - -2013-07-10 Vladimir Makarov - - * lra-constraints.c (curr_insn_transform): Switch off optional reloads. - -2013-07-10 Joseph Myers - - * doc/tm.texi.in: Move hook documentation to .... - * target.def: ... here. - - * doc/tm.texi.in (TARGET_CANONICALIZE_COMPARISON): Remove stray - text on @hook line. - * doc/tm.texi: Regenerate. - -2013-07-10 Paolo Carlini - - PR c++/57869 - * doc/invoke.texi: Document -Wconditionally-supported. - -2013-07-10 Georg-Johann Lay - - PR target/57844 - * config/avr/avr.c (avr_prologue_setup_frame): Trunk -size to mode - of my_fp. - -2013-07-10 Georg-Johann Lay - - PR target/57506 - * config/avr/avr-mcus.def (atmega16hva, atmega16hva2, atmega16hvb) - (atmega16m1, atmega16u4, atmega32a, atmega32c1, atmega32hvb) - (atmega32m1, atmega32u4, atmega32u6, atmega64c1, atmega64m1): - Remove duplicate devices. - * config/avr/gen-avr-mmcu-texi.c (print_mcus): Fail on duplicate MCUs. - * config/avr/t-multilib: Regenerate. - * config/avr/avr-tables.opt: Regenerate. - * doc/avr-mmcu.texi: Regenerate. - -2013-07-10 Georg-Johann Lay - - PR target/56987 - * config/avr/avr.opt (Waddr-space-convert): Fix typo. - -2013-07-10 Graham Stott - - * config/mips/mips.c (mips_rtx_costs): Very slightly increase - the cost of MULT when optimizing for size. - -2013-07-10 Jan-Benedict Glaw - - * config/cr16/cr16-protos.h: Don't include target.h. - -2013-07-09 Joseph Myers - - * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Only - adjust register size for TDmode and TFmode for VSX registers. - -2013-07-08 Kai Tietz - - PR target/56892 - * config/i386/i386.c (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Define as - hook_bool_const_tree_true. - -2013-07-08 Andreas Krebbel - - * config/s390/s390.c: Replace F*_REGNUM with FPR*_REGNUM. - * config/s390/s390.h: Remove F*_REGNUM macro definitions. - * config/s390/s390.md: Define FPR*_REGNUM constants. - Fix FPR2_REGNUM constant (18 -> 17). - ("*trunc2") - ("*trunc2") - ("trunc2") - ("trunc2") - ("*extend2") - ("*extend2") - ("extend2") - ("extend2"): Replace FPR2_REGNUM with - FPR4_REGNUM. - -2013-07-08 Graham Stott - - * Makefile.in: (c-family-warn): Define to $(STRICT_WARN) - -2013-07-08 Andreas Krebbel - - * config/s390/s390.c: Rename cfun_set_fpr_bit to cfun_set_fpr_save - and cfun_fpr_bit_p to cfun_fpr_save_p. - (s390_frame_area, s390_register_info, s390_frame_info) - (s390_emit_prologue, s390_emit_epilogue) - (s390_conditional_register_usage): Use the *_REGNUM macros for FPR - register numbers. - * config/s390/s390.h: Define *_REGNUM macros for floating point - register numbers. - -2013-07-08 Eric Botcazou - - * Makefile.in (tree-ssa-reassoc.o): Add dependency on $(PARAMS_H). - -2013-07-08 Po-Chun Chang - - PR rtl-optimization/57786 - * combine.c (distribute_notes) : Change all_used to bool - and break out of the loop when it is set to false. - -2013-07-08 Jakub Jelinek - - PR target/57819 - * simplify-rtx.c (simplify_unary_operation_1) : - Simplify (zero_extend:SI (subreg:QI (and:SI (reg:SI) - (const_int 63)) 0)). - * combine.c (make_extraction): Create ZERO_EXTEND or SIGN_EXTEND - using simplify_gen_unary instead of gen_rtx_*_EXTEND. - * config/i386/i386.md (*jcc_bt_1): New define_insn_and_split. - - PR rtl-optimization/57829 - * simplify-rtx.c (simplify_binary_operation_1) : Ensure that - mask bits outside of mode are just sign-extension from mode to HWI. - -2013-07-08 Michael Zolotukhin - - * config/i386/i386-opts.h (enum stringop_alg): Add vector_loop. - * config/i386/i386.c (expand_set_or_movmem_via_loop): Use - adjust_address instead of change_address to keep info about alignment. - (emit_strmov): Remove. - (emit_memmov): New function. - (expand_movmem_epilogue): Refactor to properly handle bigger sizes. - (expand_movmem_epilogue): Likewise and return updated rtx for - destination. - (expand_constant_movmem_prologue): Likewise and return updated rtx for - destination and source. - (decide_alignment): Refactor, handle vector_loop. - (ix86_expand_movmem): Likewise. - (ix86_expand_setmem): Likewise. - * config/i386/i386.opt (Enum): Add vector_loop to option stringop_alg. - -2013-07-07 Uros Bizjak - - * config/i386/driver-i386.c (host_detect_local_cpu): Do not check - signature_TM2_ebx, it interferes with signature_INTEL_ebx. - -2013-07-06 Uros Bizjak - - * config/i386/sse.md (sse_movlhps): Change alternative 3 - of operand 2 to "m". - -2013-07-06 Uros Bizjak - - PR target/57807 - * config/i386/sse.md (iptr): New mode attribute. - (sse2_movq128): Add pointer size overrides for Intel asm dialect. - (_vm3): Ditto. - (_vmmul3): Ditto. - (_vmdiv3): Ditto. - (sse_vmrcpv4sf2): Ditto. - (_vmsqrt2): Ditto. - (sse_vmrsqrtv4sf2): Ditto. - (_vm3): Ditto. - (avx_vmcmp3): Ditto. - (_vmmaskcmp3): Ditto. - (_comi): Ditto. - (_ucomi): Ditto. - (*xop_vmfrcz_): Ditto. - (*fmai_fmadd_): Ditto. - (*fmai_fmsub_): Ditto. - (*fmai_fnmadd_): Ditto. - (*fmai_fnmsub_): Ditto. - (*fma4i_vmfmadd_): Ditto. - (*fma4i_vmfmsub_): Ditto. - (*fma4i_vmfnmadd_): Ditto. - (*fma4i_vmfnmsub_): Ditto. - (*xop_vmfrcz_): Ditto. - (sse_cvtps2pi): Ditto. - (sse_cvttps2pi): Ditto. - (sse_cvtss2si): Ditto. - (sse_cvtss2si_2): Ditto. - (sse_cvtss2siq_2): Ditto. - (sse_cvttss2si): Ditto. - (sse_cvttss2siq): Ditto. - (sse_cvtsd2si): Ditto. - (sse_cvtsd2si_2): Ditto. - (sse_cvtsd2siq_2): Ditto. - (sse_cvttsd2si): Ditto. - (sse_cvttsd2siq): Ditto. - (sse_cvtsd2ss): Ditto. - (sse_cvtss2sd): Ditto. - (avx2_pbroadcast): Ditto. - (avx2_pbroadcast_1): Ditto. - (*avx_vperm_broadcast_v4sf): Ditto. - - (sse_movhlps): Ditto for movlp[sd]/movhp[sd] alternatives. - (sse_movlhps): Ditto. - (sse_storehps): Ditto. - (sse_loadhps): Ditto. - (sse_storelps): Ditto. - (sse_loadlps): Ditto. - (*vec_concatv4sf): Ditto. - (*vec_interleave_highv2df): Ditto. - (*vec_interleave_lowv2df): Ditto. - (*vec_extractv2df_1_sse): Ditto. - (*vec_extractv2df_0_sse): Ditto. - (sse2_storelpd): Ditto. - (sse2_loadlpd): Ditto. - (sse2_movsd): Ditto. - (*vec_concatv4si): Ditto. - (vec_concatv2di): Ditto. - - * config/i386/mmx.md (mmx_punpcklbw): Add pointer size overrides - for Intel asm dialect. - (mmx_punpcklwd): Ditto. - (mmx_punpckldq): Ditto. - - * config/i386/i386.c (ix86_print_operand) ['H']: Output 'qword ptr' - for intel assembler dialect. - -2013-07-06 Jakub Jelinek - - PR target/29776 - * fold-const.c (tree_call_nonnegative_warnv_p): Return true - for BUILT_IN_C{LZ,LRSB}*. - * tree.h (CASE_INT_FN): Add FN##IMAX case. - * tree-vrp.c (extract_range_basic): Handle - BUILT_IN_{FFS,PARITY,POPCOUNT,C{LZ,TZ,LRSB}}*. For - BUILT_IN_CONSTANT_P if argument isn't (D) of PARM_DECL, - fall thru to code calling set_value*. - * builtins.c (expand_builtin): Remove *IMAX cases. - (fold_builtin_bitop): For BUILT_IN_CLRSB* return NULL_TREE - if width is bigger than 2*HWI. - -2013-07-05 Vladimir Makarov - - PR rtl-optimization/55342 - * lra-int.h (lra_subreg_reload_pseudos): New. - * lra.c: Add undoing optional reloads to the block diagram. - (lra_subreg_reload_pseudos): New. - (lra_optional_reload_pseudos): Change comments. - (lra): Init and clear lra_subreg_reload_pseudos. Clear - lra_optional_reload_pseudos after undo transformations. - * lra-assigns.c (pseudo_prefix_title): New. - (lra_setup_reg_renumber): Use it. - (spill_for): Ditto. Check subreg reload pseudos too. - (assign_by_spills): Consider subreg reload pseudos too. - * lra-constraints.c (simplify_operand_subreg): Use - lra_subreg_reload_pseudos instead of lra_optional_reload_pseudos. - (curr_insn_transform): Recognize and do optional reloads. - (undo_optional_reloads): New. - (lra_undo_inheritance): Call undo_optional_reloads. - -2013-07-05 Thomas Quinot - - * tree-complex.c (expand_complex_operations_1): Fix typo. - -2013-07-04 Tejas Belagod - - * config/aarch64/aarch64-protos.h (cpu_vector_cost): New. - (tune_params): New member 'const vec_costs'. - * config/aarch64/aarch64.c (generic_vector_cost): New. - (generic_tunings): New member 'generic_vector_cost'. - (aarch64_builtin_vectorization_cost): New. - (aarch64_add_stmt_cost): New. - (TARGET_VECTORIZE_ADD_STMT_COST): New. - (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New. - -2013-07-03 Jakub Jelinek - - PR target/57777 - * config/i386/predicates.md (vsib_address_operand): Disallow - SYMBOL_REF or LABEL_REF in parts.disp if TARGET_64BIT && flag_pic. - -2013-07-03 Hans-Peter Nilsson - - PR middle-end/55030 - * stmt.c (expand_nl_goto_receiver): Remove almost-copy of - expand_builtin_setjmp_receiver. - (expand_label): Adjust, call expand_builtin_setjmp_receiver - with NULL for the label parameter. - * builtins.c (expand_builtin_setjmp_receiver): Don't clobber - the frame-pointer. Adjust comments. - [HAVE_builtin_setjmp_receiver]: Emit builtin_setjmp_receiver - only if LABEL is non-NULL. - -2013-07-03 Yufeng Zhang - - * config/aarch64/aarch64.h (enum arm_abi_type): Remove. - (ARM_ABI_AAPCS64): Ditto. - (arm_abi): Ditto. - (ARM_DEFAULT_ABI): Ditto. - -2013-07-03 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_simd_expand_builtin): Handle AARCH64_SIMD_STORE1. - * config/aarch64/aarch64-simd-builtins.def (ld1): New. - (st1): Likewise. - * config/aarch64/aarch64-simd.md - (aarch64_ld1): New. - (aarch64_st1): Likewise. - * config/aarch64/arm_neon.h - (vld1_<8, 16, 32, 64>): Convert to RTL builtins. - -2013-07-02 Sriraman Tallam - - * config/i386/i386.c (gate_insert_vzeroupper): Check if - target ISA is AVX. - (ix86_option_override_internal):Turn on all -mavx target flags by - default as they are dependent on AVX anyway. - -2013-07-02 Cary Coutant - - * dwarf2out.c (loc_checksum): Call hash_loc_operands for a - deterministic hash. - (loc_checksum_ordered): Likewise. - (hash_loc_operands): Remove inline keyword. - -2013-07-02 Jakub Jelinek - - PR tree-optimization/57741 - * tree-vect-loop.c (vect_is_simple_iv_evolution): Disallow - non-INTEGRAL_TYPE_P non-SCALAR_FLOAT_TYPE_P SSA_NAME step_exprs, - or SCALAR_FLOAT_TYPE_P SSA_NAMEs if !flag_associative_math. - Allow REAL_CST step_exprs if flag_associative_math. - (get_initial_def_for_induction): Handle SCALAR_FLOAT_TYPE_P step_expr. - -2013-07-02 Ian Bolton - - * config/aarch64/aarch64-simd.md (absdi2): Support abs for DI mode. - -2013-07-02 Ian Bolton - - * config/aarch64/aarch64.md (*extr_insv_reg): New pattern. - -2013-07-02 Kyrylo Tkachov - - * config/arm/arm.md (arm_andsi3_insn): Add alternatives for 16-bit - encoding. - (iorsi3_insn): Likewise. - (arm_xorsi3): Likewise. - -2013-07-01 Sofiane Naci - - * arm.md (attribute "wtype"): Delete. Move attribute values from here - to ... - (attribute "type"): ... here, and prefix with "wmmx_". - (attribute "core_cycles"): Update for attribute changes. - * iwmmxt.md (tbcstv8qi): Update for attribute changes. - (tbcstv4hi): Likewise. - (tbcstv2si): Likewise. - (iwmmxt_iordi3): Likewise. - (iwmmxt_xordi3): Likewise. - (iwmmxt_anddi3): Likewise. - (iwmmxt_nanddi3): Likewise. - (iwmmxt_arm_movdi): Likewise. - (iwmmxt_movsi_insn): Likewise. - (mov_internal): Likewise. - (and3_iwmmxt): Likewise. - (ior3_iwmmxt): Likewise. - (xor3_iwmmxt): Likewise. - (add3_iwmmxt): Likewise. - (ssaddv8qi3): Likewise. - (ssaddv4hi3): Likewise. - (ssaddv2si3): Likewise. - (usaddv8qi3): Likewise. - (usaddv4hi3): Likewise. - (usaddv2si3): Likewise. - (sub3_iwmmxt): Likewise. - (sssubv8qi3): Likewise. - (sssubv4hi3): Likewise. - (sssubv2si3): Likewise. - (ussubv8qi3): Likewise. - (ussubv4hi3): Likewise. - (ussubv2si3): Likewise. - (mulv4hi3_iwmmxt): Likewise. - (smulv4hi3_highpart): Likewise. - (umulv4hi3_highpart): Likewise. - (iwmmxt_wmacs): Likewise. - (iwmmxt_wmacsz): Likewise. - (iwmmxt_wmacu): Likewise. - (iwmmxt_wmacuz): Likewise. - (iwmmxt_clrdi): Likewise. - (iwmmxt_clrv8qi): Likewise. - (iwmmxt_clr4hi): Likewise. - (iwmmxt_clr2si): Likewise. - (iwmmxt_uavgrndv8qi3): Likewise. - (iwmmxt_uavgrndv4hi3): Likewise. - (iwmmxt_uavgv8qi3): Likewise. - (iwmmxt_uavgv4hi3): Likewise. - (iwmmxt_tinsrb): Likewise. - (iwmmxt_tinsrh): Likewise. - (iwmmxt_tinsrw): Likewise. - (iwmmxt_textrmub): Likewise. - (iwmmxt_textrmsb): Likewise. - (iwmmxt_textrmuh): Likewise. - (iwmmxt_textrmsh): Likewise. - (iwmmxt_textrmw): Likewise. - (iwmxxt_wshufh): Likewise. - (eqv8qi3): Likewise. - (eqv4hi3): Likewise. - (eqv2si3): Likewise. - (gtuv8qi3): Likewise. - (gtuv4hi3): Likewise. - (gtuv2si3): Likewise. - (gtv8qi3): Likewise. - (gtv4hi3): Likewise. - (gtv2si3): Likewise. - (smax3_iwmmxt): Likewise. - (umax3_iwmmxt): Likewise. - (smin3_iwmmxt): Likewise. - (umin3_iwmmxt): Likewise. - (iwmmxt_wpackhss): Likewise. - (iwmmxt_wpackwss): Likewise. - (iwmmxt_wpackdss): Likewise. - (iwmmxt_wpackhus): Likewise. - (iwmmxt_wpackwus): Likewise. - (iwmmxt_wpackdus): Likewise. - (iwmmxt_wunpckihb): Likewise. - (iwmmxt_wunpckihh): Likewise. - (iwmmxt_wunpckihw): Likewise. - (iwmmxt_wunpckilb): Likewise. - (iwmmxt_wunpckilh): Likewise. - (iwmmxt_wunpckilw): Likewise. - (iwmmxt_wunpckehub): Likewise. - (iwmmxt_wunpckehuh): Likewise. - (iwmmxt_wunpckehuw): Likewise. - (iwmmxt_wunpckehsb): Likewise. - (iwmmxt_wunpckehsh): Likewise. - (iwmmxt_wunpckehsw): Likewise. - (iwmmxt_wunpckelub): Likewise. - (iwmmxt_wunpckeluh): Likewise. - (iwmmxt_wunpckeluw): Likewise. - (iwmmxt_wunpckelsb): Likewise. - (iwmmxt_wunpckelsh): Likewise. - (iwmmxt_wunpckelsw): Likewise. - (ror3): Likewise. - (ashr3_iwmmxt): Likewise. - (lshr3_iwmmxt): Likewise. - (ashl3_iwmmxt): Likewise. - (ror3_di): Likewise. - (ashr3_di): Likewise. - (lshr3_di): Likewise. - (ashl3_di): Likewise. - (iwmmxt_wmadds): Likewise. - (iwmmxt_wmaddu): Likewise. - (iwmmxt_tmia): Likewise. - (iwmmxt_tmiaph): Likewise. - (iwmmxt_tmiabb): Likewise. - (iwmmxt_tmiatb): Likewise. - (iwmmxt_tmiabt): Likewise. - (iwmmxt_tmiatt): Likewise. - (iwmmxt_tmovmskb): Likewise. - (iwmmxt_tmovmskh): Likewise. - (iwmmxt_tmovmskw): Likewise. - (iwmmxt_waccb): Likewise. - (iwmmxt_wacch): Likewise. - (iwmmxt_waccw): Likewise. - (iwmmxt_waligni): Likewise. - (iwmmxt_walignr): Likewise. - (iwmmxt_walignr0): Likewise. - (iwmmxt_walignr1): Likewise. - (iwmmxt_walignr2): Likewise. - (iwmmxt_walignr3): Likewise. - (iwmmxt_wsadb): Likewise. - (iwmmxt_wsadh): Likewise. - (iwmmxt_wsadbz): Likewise. - (iwmmxt_wsadhz): Likewise. - * iwmmxt2.md (iwmmxt_wabs3): Update for attribute changes. - (iwmmxt_wabsdiffb): Likewise. - (iwmmxt_wabsdiffh): Likewise. - (iwmmxt_wabsdiffw): Likewise. - (iwmmxt_waddsubhx): Likewise - (iwmmxt_wsubaddhx): Likewise. - (addc3): Likewise. - (iwmmxt_avg4): Likewise. - (iwmmxt_avg4r): Likewise. - (iwmmxt_wmaddsx): Likewise. - (iwmmxt_wmaddux): Likewise. - (iwmmxt_wmaddsn): Likewise. - (iwmmxt_wmaddun): Likewise. - (iwmmxt_wmulwsm): Likewise. - (iwmmxt_wmulwum): Likewise. - (iwmmxt_wmulsmr): Likewise. - (iwmmxt_wmulumr): Likewise. - (iwmmxt_wmulwsmr): Likewise. - (iwmmxt_wmulwumr): Likewise. - (iwmmxt_wmulwl): Likewise. - (iwmmxt_wqmulm): Likewise. - (iwmmxt_wqmulwm): Likewise. - (iwmmxt_wqmulmr): Likewise. - (iwmmxt_wqmulwmr): Likewise. - (iwmmxt_waddbhusm): Likewise. - (iwmmxt_waddbhusl): Likewise. - (iwmmxt_wqmiabb): Likewise. - (iwmmxt_wqmiabt): Likewise. - (iwmmxt_wqmiatb): Likewise. - (iwmmxt_wqmiatt): Likewise. - (iwmmxt_wqmiabbn): Likewise. - (iwmmxt_wqmiabtn): Likewise. - (iwmmxt_wqmiatbn): Likewise. - (iwmmxt_wqmiattn): Likewise. - (iwmmxt_wmiabb): Likewise. - (iwmmxt_wmiabt): Likewise. - (iwmmxt_wmiatb): Likewise. - (iwmmxt_wmiatt): Likewise. - (iwmmxt_wmiabbn): Likewise. - (iwmmxt_wmiabtn): Likewise. - (iwmmxt_wmiatbn): Likewise. - (iwmmxt_wmiattn): Likewise. - (iwmmxt_wmiawbb): Likewise. - (iwmmxt_wmiawbt): Likewise. - (iwmmxt_wmiawtb): Likewise. - (iwmmxt_wmiawtt): Likewise. - (iwmmxt_wmiawbbn): Likewise. - (iwmmxt_wmiawbtn): Likewise. - (iwmmxt_wmiawtbn): Likewise. - (iwmmxt_wmiawttn): Likewise. - (iwmmxt_wmerge): Likewise. - (iwmmxt_tandc3): Likewise. - (iwmmxt_torc3): Likewise. - (iwmmxt_torvsc3): Likewise. - (iwmmxt_textrc3): Likewise. - * marvell-f-iwmmxt.md (wmmxt_shift): Update for attribute changes. - (wmmxt_pack): Likewise. - (wmmxt_mult_c1): Likewise. - (wmmxt_mult_c2): Likewise. - (wmmxt_alu_c1): Likewise. - (wmmxt_alu_c2): Likewise. - (wmmxt_alu_c3): Likewise. - (wmmxt_transfer_c1): Likewise. - (wmmxt_transfer_c2): Likewise. - (wmmxt_transfer_c3): Likewise. - (marvell_f_iwmmxt_wstr): Likewise. - (marvell_f_iwmmxt_wldr): Likewise. - -2013-06-29 Yufeng Zhang - - * config/aarch64/aarch64.c: Remove junk from the beginning of the file. - -2013-06-28 Vladimir Makarov - - Revert: - 2013-06-28 Vladimir Makarov - * lra-constraints.c (need_for_split_p): Check call used hard regs - living through calls. - - * lra-constraints.c (inherit_in_ebb): Reset live_hard_regs for - call used regs for call insn. - -2013-06-28 Jakub Jelinek - - PR target/57736 - * config/i386/i386.c (ix86_expand_builtin): If target == NULL and - mode is VOIDmode, don't create a VOIDmode pseudo to copy result into. - -2013-06-28 Balaji V. Iyer - - * builtins.def: Fixed the function type of CILKPLUS_BUILTIN. - -2013-06-28 Vladimir Makarov - - * lra-constraints.c (need_for_split_p): Check call used hard regs - living through calls. - -2013-06-28 Michael Meissner - - PR target/57744 - * config/rs6000/rs6000.h (MODES_TIEABLE_P): Do not allow PTImode - to tie with any other modes. Eliminate Altivec vector mode tests, - since these are a subset of ALTIVEC or VSX vector modes. Simplify - code, to return 0 if testing MODE2 for a condition, if we've - already tested MODE1 for the same condition. - -2013-06-28 Marcus Shawcroft - - * config/aarch64/aarch64.c (aarch64_cannot_force_const_mem): Adjust - layout. - -2013-06-28 Marcus Shawcroft - - * config/aarch64/aarch64-protos.h (aarch64_symbol_type): - Update comment w.r.t SYMBOL_TINY_ABSOLUTE. - -2013-06-28 Marcus Shawcroft - - * config/aarch64/aarch64-protos.h (aarch64_classify_symbol_expression): - Define. - (aarch64_symbolic_constant_p): Remove. - * config/aarch64/aarch64.c (aarch64_classify_symbol_expression): Remove - static. Fix line length and white space. - (aarch64_symbolic_constant_p): Remove. - * config/aarch64/predicates.md (aarch64_valid_symref): - Use aarch64_classify_symbol_expression. - -2013-06-28 Kyrylo Tkachov - - * config/arm/constraints.md (Ts): New constraint. - * config/arm/arm.md (arm_movqi_insn): Add alternatives for - 16-bit encodings. - (compare_scc): Use "Ts" constraint for operand 0. - (ior_scc_scc): Likewise. - (and_scc_scc): Likewise. - (and_scc_scc_nodom): Likewise. - (ior_scc_scc_cmp): Likewise for operand 7. - (and_scc_scc_cmp): Likewise. - * config/arm/thumb2.md (thumb2_movsi_insn): - Add alternatives for 16-bit encodings. - (thumb2_movhi_insn): Likewise. - (thumb2_movsicc_insn): Likewise. - (thumb2_and_scc): Take 'and' outside cond_exec. Use "Ts" constraint. - (thumb2_negscc): Use "Ts" constraint. - Move mvn instruction outside cond_exec block. - * config/arm/vfp.md (thumb2_movsi_vfp): Add alternatives - for 16-bit encodings. - -2013-06-28 Kyrylo Tkachov - - * config/arm/arm.md (arm_mulsi3_v6): Add alternative for 16-bit - encoding. - (mulsi3addsi_v6): Disable predicable variant for arm_restrict_it. - (mulsi3subsi): Likewise. - (mulsidi3adddi): Likewise. - (mulsidi3_v6): Likewise. - (umulsidi3_v6): Likewise. - (umulsidi3adddi_v6): Likewise. - (smulsi3_highpart_v6): Likewise. - (umulsi3_highpart_v6): Likewise. - (mulhisi3tb): Likewise. - (mulhisi3bt): Likewise. - (mulhisi3tt): Likewise. - (maddhisi4): Likewise. - (maddhisi4tb): Likewise. - (maddhisi4tt): Likewise. - (maddhidi4): Likewise. - (maddhidi4tb): Likewise. - (maddhidi4tt): Likewise. - (zeroextractsi_compare0_scratch): Likewise. - (insv_zero): Likewise. - (insv_t2): Likewise. - (anddi_notzesidi_di): Likewise. - (anddi_notsesidi_di): Likewise. - (andsi_notsi_si): Likewise. - (iordi_zesidi_di): Likewise. - (xordi_zesidi_di): Likewise. - (andsi_iorsi3_notsi): Likewise. - (smax_0): Likewise. - (smax_m1): Likewise. - (smin_0): Likewise. - (not_shiftsi): Likewise. - (unaligned_loadsi): Likewise. - (unaligned_loadhis): Likewise. - (unaligned_loadhiu): Likewise. - (unaligned_storesi): Likewise. - (unaligned_storehi): Likewise. - (extv_reg): Likewise. - (extzv_t2): Likewise. - (divsi3): Likewise. - (udivsi3): Likewise. - (arm_zero_extendhisi2addsi): Likewise. - (arm_zero_extendqisi2addsi): Likewise. - (compareqi_eq0): Likewise. - (arm_extendhisi2_v6): Likewise. - (arm_extendqisi2addsi): Likewise. - (arm_movt): Likewise. - (thumb2_ldrd): Likewise. - (thumb2_ldrd_base): Likewise. - (thumb2_ldrd_base_neg): Likewise. - (thumb2_strd): Likewise. - (thumb2_strd_base): Likewise. - (thumb2_strd_base_neg): Likewise. - (arm_negsi2): Add alternative for 16-bit encoding. - (arm_one_cmplsi2): Likewise. - -2013-06-28 Kyrylo Tkachov - - * config/arm/predicates.md (arm_cond_move_operator): New predicate. - * config/arm/arm.md (movsfcc): Use arm_cond_move_operator predicate. - (movdfcc): Likewise. - * config/arm/vfp.md (*thumb2_movsf_vfp): - Disable predication for arm_restrict_it. - (*thumb2_movsfcc_vfp): Disable for arm_restrict_it. - (*thumb2_movdfcc_vfp): Likewise. - (*abssf2_vfp, *absdf2_vfp, *negsf2_vfp, *negdf2_vfp,*addsf3_vfp, - *adddf3_vfp, *subsf3_vfp, *subdf3_vfpc, *divsf3_vfp,*divdf3_vfp, - *mulsf3_vfp, *muldf3_vfp, *mulsf3negsf_vfp, *muldf3negdf_vfp, - *mulsf3addsf_vfp, *muldf3adddf_vfp, *mulsf3subsf_vfp, - *muldf3subdf_vfp, *mulsf3negsfaddsf_vfp, *fmuldf3negdfadddf_vfp, - *mulsf3negsfsubsf_vfp, *muldf3negdfsubdf_vfp, *fma4, - *fmsub4, *fnmsub4, *fnmadd4, - *extendsfdf2_vfp, *truncdfsf2_vfp, *extendhfsf2, *truncsfhf2, - *truncsisf2_vfp, *truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2, - *floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2, floatunssidf2, - *sqrtsf2_vfp, *sqrtdf2_vfp, *cmpsf_vfp, *cmpsf_trap_vfp, *cmpdf_vfp, - *cmpdf_trap_vfp, 2): - Disable predication for arm_restrict_it. - -2013-06-28 Kirill Yukhin - - * config/i386/bmiintrin.h (_bextr_u32): New. - (_bextr_u64): Ditto. - -2013-06-27 Richard Sandiford - - * config.gcc (mips*-mti-elf*, mips*-sde-elf*, mips64r5900-*-elf*) - (mips64r5900el-*-elf*): Include mips/n32-elf.h. - * config/mips/sde.h (LOCAL_LABEL_PREFIX, NO_DOLLAR_IN_LABEL) - (LONG_DOUBLE_TYPE_SIZE, LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Move to... - * config/mips/n32-elf.h: ...this new file. - -2013-06-27 Marc Glisse - - PR target/57224 - * config/i386/i386.c (enum ix86_builtins, bdesc_args): Remove - IX86_BUILTIN_CMPNGTSS and IX86_BUILTIN_CMPNGESS. - -2013-06-27 Catherine Moore - - * config/mips/mips-tables.opt: Regenerate. - * config/mips/mips-cpus.def: Add m14ke and m14kec. - * config/mips/mips.h (BASE_DRIVER_SELF_SPECS): m14ke* implies -mdspr2. - * doc/invoke.texi: Add -m14kc. - -2013-06-27 Jakub Jelinek - - PR target/57623 - * config/i386/i386.md (bmi_bextr_): Swap predicates and - constraints of operand 1 and 2. - - PR target/57623 - * config/i386/i386.md (bmi2_bzhi_3): Swap AND arguments - to match RTL canonicalization. Swap predicates and - constraints of operand 1 and 2. - -2013-06-27 Vladimir Makarov - - * lra-constraints.c (inherit_in_ebb): Process static hard regs too. - Process OP_INOUT regs for splitting too. - -2013-06-27 Jakub Jelinek - - * tree-vect-stmts.c (vectorizable_store): Move ptr_incr var - decl before the loop, initialize to NULL. - (vectorizable_load): Initialize ptr_incr to NULL. - -2013-06-27 Martin Jambor - - PR lto/57208 - * ipa-ref.h (ipa_maybe_record_reference): Declare. - * ipa-ref.c (ipa_maybe_record_reference): New function. - * cgraphclones.c (cgraph_create_virtual_clone): Use it. - * ipa-cp.c (create_specialized_node): Record potential references from - aggvals. - * Makefile.in (ipa-ref.o): Add IPA_REF_H to dependencies. - -2013-06-27 Yufeng Zhang - - * config/aarch64/aarch64.c (aarch64_force_temporary): Add an extra - parameter 'mode' of type 'enum machine_mode mode'; change to pass - 'mode' to force_reg. - (aarch64_add_offset): Update calls to aarch64_force_temporary. - (aarch64_expand_mov_immediate): Likewise. - -2013-06-27 Yufeng Zhang - - * config/aarch64/aarch64.c (aarch64_add_offset): Change to pass - 'mode' to aarch64_plus_immediate and gen_rtx_PLUS. - -2013-06-27 Andreas Krebbel - - * config/s390/s390.c: Rename UNSPEC_CCU_TO_INT to - UNSPEC_STRCMPCC_TO_INT and UNSPEC_CCZ_TO_INT to UNSPEC_CC_TO_INT. - (struct machine_function): Add tbegin_p. - (s390_canonicalize_comparison): Fold CC mode compares to - conditional jump if possible. - (s390_emit_jump): Return the emitted jump. - (s390_branch_condition_mask, s390_branch_condition_mnemonic): - Handle CCRAWmode compares. - (s390_option_override): Default to -mhtm if available. - (s390_reg_clobbered_rtx): Handle floating point regs as well. - (s390_regs_ever_clobbered): Use s390_regs_ever_clobbered also for - FPRs instead of df_regs_ever_live_p. - (s390_optimize_nonescaping_tx): New function. - (s390_init_frame_layout): Extend clobbered_regs array to cover - FPRs as well. - (s390_emit_prologue): Call s390_optimize_nonescaping_tx. - (s390_expand_tbegin): New function. - (enum s390_builtin): New enum definition. - (code_for_builtin): New array definition. - (s390_init_builtins): New function. - (s390_expand_builtin): New function. - (TARGET_INIT_BUILTINS): Define. - (TARGET_EXPAND_BUILTIN): Define. - * common/config/s390/s390-common.c (processor_flags_table): Add PF_TX. - * config/s390/predicates.md (s390_comparison): Handle CCRAWmode. - (s390_alc_comparison): Likewise. - * config/s390/s390-modes.def: Add CCRAWmode. - * config/s390/s390.h (processor_flags): Add PF_TX. - (TARGET_CPU_HTM): Define macro. - (TARGET_HTM): Define macro. - (TARGET_CPU_CPP_BUILTINS): Define __HTM__ for htm. - * config/s390/s390.md: Rename UNSPEC_CCU_TO_INT to - UNSPEC_STRCMPCC_TO_INT and UNSPEC_CCZ_TO_INT to UNSPEC_CC_TO_INT. - (UNSPECV_TBEGIN, UNSPECV_TBEGINC, UNSPECV_TEND, UNSPECV_TABORT) - (UNSPECV_ETND, UNSPECV_NTSTG, UNSPECV_PPA): New unspecv enum values. - (TBEGIN_MASK, TBEGINC_MASK): New constants. - ("*cc_to_int"): Move up. - ("*movcc", "*cjump_64", "*cjump_31"): Accept integer - constants other than 0. - ("*ccraw_to_int"): New insn and splitter definition. - ("tbegin", "tbegin_nofloat", "tbegin_retry") - ("tbegin_retry_nofloat", "tbeginc", "tend", "tabort") - ("tx_assist"): New expander. - ("tbegin_1", "tbegin_nofloat_1", "*tbeginc_1", "*tend_1") - ("*tabort_1", "etnd", "ntstg", "*ppa"): New insn definition. - * config/s390/s390.opt: Add -mhtm option. - * config/s390/s390-protos.h (s390_emit_jump): Add return type. - * config/s390/htmxlintrin.h: New file. - * config/s390/htmintrin.h: New file. - * config/s390/s390intrin.h: New file. - * doc/extend.texi: Document htm builtins. - * config.gcc: Add the new header files to extra_headers. - -2013-06-26 Thomas Schwinge - - * config/i386/gnu.h [TARGET_LIBC_PROVIDES_SSP] - (TARGET_CAN_SPLIT_STACK, TARGET_THREAD_SPLIT_STACK_OFFSET): Undefine. - -2013-06-26 Michael Meissner - Pat Haugen - Peter Bergner - - * config/rs6000/power8.md: New. - * config/rs6000/rs6000-cpus.def (RS6000_CPU table): Adjust processor - setting for power8 entry. - * config/rs6000/t-rs6000 (MD_INCLUDES): Add power8.md. - * config/rs6000/rs6000.c (is_microcoded_insn, is_cracked_insn): Adjust - test for Power4/Power5 only. - (insn_must_be_first_in_group, insn_must_be_last_in_group): Add Power8 - support. - (force_new_group): Adjust comment. - * config/rs6000/rs6000.md: Include power8.md. - -2013-06-26 Greta Yorsh - - * config/arm/arm.h (MAX_CONDITIONAL_EXECUTE): Define macro. - * config/arm/arm-protos.h (arm_max_conditional_execute): New - declaration. - (tune_params): Update comment. - * config/arm/arm.c (arm_cortex_a15_tune): Set max_cond_insns to 2. - (arm_max_conditional_execute): New function. - (thumb2_final_prescan_insn): Use max_insn_skipped and - MAX_INSN_PER_IT_BLOCK to compute maximum instructions in a block. - -2013-06-25 Jakub Jelinek - - PR tree-optimization/57705 - * tree-vect-loop.c (vect_is_simple_iv_evolution): Allow - SSA_NAME step, provided that it is not defined inside the loop. - (vect_analyze_scalar_cycles_1): Disallow SSA_NAME step in nested loop. - (get_initial_def_for_induction): Handle SSA_NAME IV step. - -2013-06-25 Martin Jambor - - PR middle-end/57670 - * cgraph.h (cgraph_indirect_call_info): New flag member_ptr. - * ipa-prop.c (ipa_print_node_jump_functions): Mark member pointer - calls in the dump. - (ipa_note_param_call): Initialize member_ptr flag. - (ipa_analyze_indirect_call_uses): Set member_ptr flag. - (ipa_make_edge_direct_to_target): Bail out if member_ptr is set. - (ipa_write_indirect_edge_info): Stream member_ptr flag. - (ipa_read_indirect_edge_info): Likewise. - -2013-06-25 Richard Biener - - PR middle-end/56977 - * passes.c (init_optimization_passes): Move pass_fold_builtins - and pass_dce earlier with -Og. - -2013-06-25 Eric Botcazou - - * expr.c (expand_expr_real_1) : Fix formatting glitches. - : Remove trailing TAB. - * varasm.c (output_constructor_bitfield): Fix formatting glitch and - remove blank line. - -2013-06-24 Martin Jambor - - PR tree-optimization/57358 - * ipa-prop.c (ipa_func_spec_opts_forbid_analysis_p): New function. - (ipa_compute_jump_functions_for_edge): Bail out if it returns true. - (ipa_analyze_params_uses): Generate pessimistic info when true. - -2013-06-24 Martin Jambor - - PR tree-optimization/57539 - * cgraphclones.c (cgraph_clone_node): Add parameter new_inlined_to, set - global.inlined_to of the new node to it. All callers changed. - * ipa-inline-transform.c (clone_inlined_nodes): New variable - inlining_into, pass it to cgraph_clone_node. - * ipa-prop.c (ipa_propagate_indirect_call_infos): Do not call - ipa_free_edge_args_substructures. - (ipa_edge_duplication_hook): Only add edges from inlined nodes to - rdesc linked list. Do not assert rdesc edges have inlined caller. - Assert we have found an rdesc in the rdesc list. - -2013-06-24 Richard Biener - - * pointer-set.h (struct pointer_set_t): Move here from pointer-set.c. - (pointer_set_lookup): Declare. - (class pointer_map): New template class implementing a - generic pointer to T map. - (pointer_map::pointer_map, pointer_map::~pointer_map, - pointer_map::contains, pointer_map::insert, - pointer_map::traverse): New functions. - * pointer-set.c (struct pointer_set_t): Moved to pointer-set.h. - (pointer_set_lookup): New function. - (pointer_set_contains): Use pointer_set_lookup. - (pointer_set_insert): Likewise. - (insert_aux): Remove. - (struct pointer_map_t): Embed a pointer_set_t. - (pointer_map_create): Adjust. - (pointer_map_destroy): Likewise. - (pointer_map_contains): Likewise. - (pointer_map_insert): Likewise. - (pointer_map_traverse): Likewise. - * tree-streamer.h (struct streamer_tree_cache_d): Use a - pointer_map instead of a pointer_map_t. - * tree-streamer.c (streamer_tree_cache_insert_1): Adjust. - (streamer_tree_cache_lookup): Likewise. - (streamer_tree_cache_create): Likewise. - (streamer_tree_cache_delete): Likewise. - * lto-streamer.h (struct lto_tree_ref_encoder): Use a - pointer_map instead of a pointer_map_t. - (lto_init_tree_ref_encoder): Adjust. - (lto_destroy_tree_ref_encoder): Likewise. - * lto-section-out.c (lto_output_decl_index): Likewise. - (lto_record_function_out_decl_state): Likewise. - * dominance.c (iterate_fix_dominators): Use pointer_map. - -2013-06-24 Richard Biener - - PR tree-optimization/57488 - * tree-ssa-pre.c (insert): Clear NEW sets before each iteration. - -2013-06-24 Alan Modra - - * config/rs6000/rs6000.c (vspltis_constant): Correct for little-endian. - (gen_easy_altivec_constant): Likewise. - * config/rs6000/predicates.md (easy_vector_constant_add_self, - easy_vector_constant_msb): Likewise. - -2013-06-23 Jakub Jelinek - - PR target/57688 - * common/config/i386/i386-common.c (ix86_handle_option): For OPT_mlzcnt - add missing return true. - -2013-06-23 Oleg Endo - - PR target/52483 - * config/sh/predicates.md (general_extend_operand): Invoke - general_movsrc_operand for memory operands. - (general_movsrc_operand): Allow reg+reg addressing, do not use - general_operand for memory operands. - -2013-06-23 Sriraman Tallam - - * config/i386/i386.c (ix86_pragma_target_parse): Restore target - when current target options does not apply. - * config/i386/i386-protos.h (ix86_reset_previous_fndecl): New function. - * config/i386/i386.c (ix86_reset_previous_fndecl): Ditto. - * config/i386/bmiintrin.h: Pass appropriate target - attributes to header. - * config/i386/mmintrin.h: Ditto. - * config/i386/nmmintrin.h: Ditto. - * config/i386/avx2intrin.h: Ditto. - * config/i386/fxsrintrin.h: Ditto. - * config/i386/tbmintrin.h: Ditto. - * config/i386/xsaveintrin.h: Ditto. - * config/i386/f16cintrin.h: Ditto. - * config/i386/xtestintrin.h: Ditto. - * config/i386/xsaveoptintrin.h: Ditto. - * config/i386/bmi2intrin.h: Ditto. - * config/i386/lzcntintrin.h: Ditto. - * config/i386/smmintrin.h: Ditto. - * config/i386/wmmintrin.h: Ditto. - * config/i386/x86intrin.h: Remove all header include guards. - * config/i386/prfchwintrin.h: Ditto. - * config/i386/pmmintrin.h: Ditto. - * config/i386/tmmintrin.h: Ditto. - * config/i386/xmmintrin.h: Ditto. - * config/i386/popcntintrin.h: Ditto. - * config/i386/rdseedintrin.h: Ditto. - * config/i386/ammintrin.h: Ditto. - * config/i386/emmintrin.h: Ditto. - * config/i386/immintrin.h: Remove all header include guards. - * config/i386/fma4intrin.h: Ditto. - * config/i386/lwpintrin.h: Ditto. - * config/i386/xopintrin.h: Ditto. - * config/i386/ia32intrin.h: Ditto. - * config/i386/avxintrin.h: Ditto. - * config/i386/rtmintrin.h: Ditto. - * config/i386/fmaintrin.h: Ditto. - * config/i386/mm3dnow.h: Ditto. - -2013-06-22 Sriraman Tallam - - * common/config/i386/i386-common.c: Handle LZCNT. - -2013-06-22 Andi Kleen - - * doc/extend.texi: Use __atomic_store_n instead of - __atomic_store in HLE example. - -2013-06-22 Oleg Endo - - * config/sh/sh.c: Remove workaround. - -2013-06-21 Andi Kleen - - * doc/extend.texi: Dont use __atomic_clear in HLE example. Fix typo. - -2013-06-21 Andi Kleen - - * doc/extend.texi: Document that __atomic_clear and - __atomic_test_and_set should only be used with bool. - -2013-06-20 Jan Hubicka - - * gimple-fold.c (gimple_extract_devirt_binfo_from_cst): Use - types_same_for_odr. - * tree.c (decls_same_for_odr): New function. - (same_for_edr): New function. - (types_same_for_odr): New function. - (get_binfo_at_offset): Use it. - * tree.h (types_same_for_odr): Declare. - -2013-06-20 Oleg Endo - Jason Merrill - - * system.h: Include as well as . - -2013-06-20 Uros Bizjak - - PR target/57655 - * config/i386/i386.c (construct_container): Report error if - long double is used with disabled x87 float returns. - -2013-06-20 Jan Hubicka - - * lto-cgraph.c (input_symtab): Do not set cgraph state. - -2013-06-20 Joern Rennecke - - PR rtl-optimization/57425 - PR rtl-optimization/57569 - * alias.c (write_dependence_p): Remove parameters mem_mode and - canon_mem_addr. Add parameters x_mode, x_addr and x_canonicalized. - Changed all callers. - (canon_anti_dependence): Get comments and semantics in sync. - Add parameter mem_canonicalized. Changed all callers. - * rtl.h (canon_anti_dependence): Update prototype. - -2013-06-20 Richard Biener - - * data-streamer-in.c (streamer_read_uhwi): Optimize single - byte case, inline streamer_read_uchar and defer section - overrun check. - -2013-06-20 Richard Biener - - PR tree-optimization/57584 - * tree-ssa-loop-niter.c (expand_simple_operations): Avoid including - SSA names into the expanded expression that take part in - abnormal coalescing. - -2013-06-19 Sharad Singhai - - * gcov.c (print_usage): Handle new option. - (process_args): Ditto. - (get_gcov_intermediate_filename): New function. - (output_intermediate_file): New function. - (output_gcov_file): New function - (generate_results): Handle new option. - (release_function): Relase demangled name. - (read_graph_file): Handle demangled name. - (output_lines): Ditto. - * doc/gcov.texi: Document gcov intermediate format. - -2013-06-19 Vladimir Makarov - - PR bootstrap/57604 - * lra.c (emit_add3_insn, emit_add2_insn): New functions. - (lra_emit_add): Use the functions. Add comment about Y as an - address segment. - -2013-06-19 David Edelsohn - - PR driver/57652 - * collect2.c (collect_atexit): New. - (collect_exit): Delete. - (main): Register collect_atexit with atexit. - (collect_wait): Change collect_exit to exit. - (do_wait): Same. - * collect2.h (collect_exit): Delete. - * tlink.c (do_tlink): Rename exit to ret. Change collect_exit to exit. - -2013-06-19 Wei Mi - - PR rtl-optimization/57518 - * ira.c (set_paradoxical_subreg): Set pdx_subregs[regno] - if regno is used in paradoxical subreg. - (update_equiv_regs): Check pdx_subregs[regno] before - set a reg to be equivalent with a mem. - -2013-06-19 Matthias Klose - - PR driver/57651 - * file-find.h (find_a_file): Add a mode parameter. - * file-find.c (find_a_file): Likewise. - * gcc-ar.c (main): Call find_a_file with R_OK for the plugin, - with X_OK for the executables. - * collect2.c (main): Call find_a_file with X_OK. - -2013-06-19 Steve Ellcey - - PR target/56942 - * config/mips/mips.md (casesi_internal_mips16_): - Use NEXT_INSN instead of next_real_insn. - -2013-06-19 Jan Hubicka - - * cgraph.h (const_value_known_p): Replace by ... - (ctor_for_folding): .. this one. - * cgraphunit.c (process_function_and_variable_attributes): Use it. - * lto-cgraph.c (compute_ltrans_boundary): Use ctor_for_folding. - * expr.c (expand_expr_real_1): Likewise. - (string_constant): Likewise. - * tree-ssa-loop-ivcanon.c (constant_after_peeling): Likewise. - * ipa.c (process_references): Likewise. - (symtab_remove_unreachable_nodes): Likewise. - * ipa-inline-analysis.c (param_change_prob): Likewise. - * gimple-fold.c (canonicalize_constructor_val): Likewise. - (get_base_constructor): Likwise. - * varpool.c (varpool_remove_node): Likewise. - (varpool_remove_initializer): LIkewise. - (dump_varpool_node): LIkwise. - (const_value_known_p): Rewrite to ... - (ctor_for_folding): ... this one. - -2013-06-19 Jakub Jelinek - - PR driver/57651 - * gcc-ar.c (main): If not CROSS_DIRECTORY_STRUCTURE, look for - PERSONALITY in $PATH derived prefixes. - -2013-06-19 Jeff Law - - * tree-ssa-forwprop.c (simplify_bitwise_binary_boolean): Fix typo - in comment. - - * tree-ssa-forwprop.c (simplify_bitwise_binary_boolean): New function. - (simplify_bitwise_binary): Use it to simpify certain binary ops on - booleans. - -2013-06-19 Sofiane Naci - - * config/arm/vfp.md: Move VFP instruction classification documentation - to ... - * config/arm/arm.md: ... here. Update instruction classification - documentation. - -2013-06-19 Richard Earnshaw - - arm.md (split for eq(reg, 0)): Add variants for ARMv5 and Thumb2. - (peepholes for eq(reg, not-0)): Ensure condition register is dead after - pattern. Use more efficient sequences on ARMv5 and Thumb2. - -2013-06-19 Steven Bosscher - - PR target/57609 - * config/s390/s390.c (s390_chunkify_start): Replace next_real_insn - with NEXT_INSN. Use tablejump_p to check for jump table data - insns. - -2013-06-19 Paolo Carlini - - PR c++/56544 - * doc/cpp.texi [Standard Predefined Macros, __cplusplus]: Document - that now in C++ the value is correct per the C++ standards. - -2013-06-19 Richard Biener - - * expr.c (expand_expr_real_1): Use SCOPE_FILE_SCOPE_P to check - for global context. - -2013-06-19 Andreas Krebbel - - Revert: - 2013-06-18 Andreas Krebbel - - PR target/57609 - * config/s390/s390.c (s390_chunkify_start): Replace next_real_insn - with next_active_insn. - -2013-06-18 Sriraman Tallam - - * ipa-inline.c (inline_always_inline_functions): Pretend always_inline - functions are inlined during failures to flag an error. - * tree-inline.c (expand_call_inline): Allow the error to be flagged - in early inline pass. - -2013-06-18 H.J. Lu - - * config/i386/i386.c (initial_ix86_tune_features): Fix a typo - in comments. - -2013-06-18 Julian Brown - - * config/arm/arm.c (neon_vector_mem_operand): Add strict argument. - Permit virtual register pre-reload if !strict. - (coproc_secondary_reload_class): Adjust for neon_vector_mem_operand - change. - * config/arm/arm-protos.h (neon_vector_mem_operand): Adjust - prototype. - * config/arm/neon.md (movmisalign): Use - neon_perm_struct_or_reg_operand instead of - neon_struct_or_register_operand. - (*movmisalign_neon_load, *movmisalign_neon_store): Use - neon_permissive_struct_operand instead of neon_struct_operand. - * config/arm/constraints.md (Un, Um, Us): Adjust calls to - neon_vector_mem_operand. - * config/arm/predicates.md (neon_struct_operand): Adjust call to - neon_vector_mem_operand. - (neon_permissive_struct_operand): New. - (neon_struct_or_register_operand): Rename to... - (neon_perm_struct_or_reg_operand): This. Adjust call to - neon_vector_mem_operand. - -2013-06-18 Richard Biener - - * Makefile.in (LTO_STREAMER_H): Add pointer-set.h dependency. - * lto-streamer.h: Include pointer-set.h. - (struct lto_decl_slot): Remove. - (struct lto_tree_ref_encoder): Make tree_hash_table a pointer-map. - Remove next_index entry. - (lto_hash_decl_slot_node, lto_eq_decl_slot_node, - lto_hash_type_slot_node, lto_eq_type_slot_node): Remove. - (lto_init_tree_ref_encoder): Adjust. - (lto_destroy_tree_ref_encoder): Likewise. - * lto-section-out.c (lto_hash_decl_slot_node, lto_eq_decl_slot_node, - lto_hash_type_slot_node, lto_eq_type_slot_node): Remove. - (lto_output_decl_index): Adjust. - (lto_new_out_decl_state): Likewise. - (lto_record_function_out_decl_state): Likewise. - * lto-streamer-out.c (copy_function): Likewise. - -2013-06-18 Richard Biener - - * Makefile.in (cgraphunit.o): Add $(CFGLOOP_H) dependency. - * cgraphunit.c: Include cfgloop.h. - (init_lowered_empty_function): Initialize the loop tree. - (assemble_thunk): Insert new BBs into loops. - -2013-06-18 Richard Biener - - * tree-streamer.h (streamer_tree_cache_create): Adjust prototype. - * tree-streamer.c (streamer_tree_cache_create): Make maintaining - the map from cache entry to cache index optional. - (streamer_tree_cache_replace_tree): Adjust accordingly. - (streamer_tree_cache_append): Likewise. - (streamer_tree_cache_delete): Likewise. - * lto-streamer-in.c (lto_data_in_create): Do not maintain the - streamer cache map from cache entry to cache index. - * lto-streamer-out.c (create_output_block): Adjust. - -2013-06-18 Sofiane Naci - - * config/arm/arm.md (attribute "insn"): Move multiplication and - division attributes to... - (attribute "type"): ... here. Remove mult. - (attribute "mul32"): New attribute. - (attribute "mul64"): Add umaal. - (*arm_mulsi3): Update attributes. - (*arm_mulsi3_v6): Likewise. - (*thumb_mulsi3): Likewise. - (*thumb_mulsi3_v6): Likewise. - (*mulsi3_compare0): Likewise. - (*mulsi3_compare0_v6): Likewise. - (*mulsi_compare0_scratch): Likewise. - (*mulsi_compare0_scratch_v6): Likewise. - (*mulsi3addsi): Likewise. - (*mulsi3addsi_v6): Likewise. - (*mulsi3addsi_compare0): Likewise. - (*mulsi3addsi_compare0_v6): Likewise. - (*mulsi3addsi_compare0_scratch): Likewise. - (*mulsi3addsi_compare0_scratch_v6): Likewise. - (*mulsi3subsi): Likewise. - (*mulsidi3adddi): Likewise. - (*mulsi3addsi_v6): Likewise. - (*mulsidi3adddi_v6): Likewise. - (*mulsidi3_nov6): Likewise. - (*mulsidi3_v6): Likewise. - (*umulsidi3_nov6): Likewise. - (*umulsidi3_v6): Likewise. - (*umulsidi3adddi): Likewise. - (*umulsidi3adddi_v6): Likewise. - (*smulsi3_highpart_nov6): Likewise. - (*smulsi3_highpart_v6): Likewise. - (*umulsi3_highpart_nov6): Likewise. - (*umulsi3_highpart_v6): Likewise. - (mulhisi3): Likewise. - (*mulhisi3tb): Likewise. - (*mulhisi3bt): Likewise. - (*mulhisi3tt): Likewise. - (maddhisi4): Likewise. - (*maddhisi4tb): Likewise. - (*maddhisi4tt): Likewise. - (maddhidi4): Likewise. - (*maddhidi4tb): Likewise. - (*maddhidi4tt): Likewise. - (divsi3): Likewise. - (udivsi3): Likewise. - * config/arm/thumb2.md (thumb2_mulsi_short): Update attributes. - (thumb2_mulsi_short_compare0): Likewise. - (thumb2_mulsi_short_compare0_scratch): Likewise. - * config/arm/arm1020e.md (1020mult1): Update attribute change. - (1020mult2): Likewise. - (1020mult3): Likewise. - (1020mult4): Likewise. - (1020mult5): Likewise. - (1020mult6): Likewise. - * config/arm/cortex-a15.md (cortex_a15_mult32): Update attribute - change. - (cortex_a15_mult64): Likewise. - (cortex_a15_sdiv): Likewise. - (cortex_a15_udiv): Likewise. - * config/arm/arm1026ejs.md (mult1): Update attribute change. - (mult2): Likewise. - (mult3): Likewise. - (mult4): Likewise. - (mult5): Likewise. - (mult6): Likewise. - * config/arm/marvell-pj4.md (pj4_ir_mul): Update attribute change. - (pj4_ir_div): Likewise. - * config/arm/arm1136jfs.md (11_mult1): Update attribute change. - (11_mult2): Likewise. - (11_mult3): Likewise. - (11_mult4): Likewise. - (11_mult5): Likewise. - (11_mult6): Likewise. - (11_mult7): Likewise. - * config/arm/cortex-a8.md (cortex_a8_mul): Update attribute change. - (cortex_a8_mla): Likewise. - (cortex_a8_mull): Likewise. - (cortex_a8_smulwy): Likewise. - (cortex_a8_smlald): Likewise. - * config/arm/cortex-m4.md (cortex_m4_alu): Update attribute change. - * config/arm/cortex-r4.md (cortex_r4_mul_4): Update attribute change. - (cortex_r4_mul_3): Likewise. - (cortex_r4_mla_4): Likewise. - (cortex_r4_mla_3): Likewise. - (cortex_r4_smlald): Likewise. - (cortex_r4_mull): Likewise. - (cortex_r4_sdiv): Likewise. - (cortex_r4_udiv): Likewise. - * config/arm/cortex-a7.md (cortex_a7_mul): Update attribute change. - (cortex_a7_idiv): Likewise. - * config/arm/arm926ejs.md (9_mult1): Update attribute change. - (9_mult2): Likewise. - (9_mult3): Likewise. - (9_mult4): Likewise. - (9_mult5): Likewise. - (9_mult6): Likewise. - * config/arm/cortex-a53.md (cortex_a53_mul): Update attribute change. - (cortex_a53_sdiv): Likewise. - (cortex_a53_udiv): Likewise. - * config/arm/fa726te.md (726te_mult_op): Update attribute change. - * config/arm/fmp626.md (mp626_mult1): Update attribute change. - (mp626_mult2): Likewise. - (mp626_mult3): Likewise. - (mp626_mult4): Likewise. - * config/arm/fa526.md (526_mult1): Update attribute change. - (526_mult2): Likewise. - * config/arm/arm-generic.md (mult): Update attribute change. - (mult_ldsched_strongarm): Likewise. - (mult_ldsched): Likewise. - (multi_cycle): Likewise. - * config/arm/cortex-a5.md (cortex_a5_mul): Update attribute change. - * config/arm/fa606te.md (606te_mult1): Update attribute change. - (606te_mult2): Likewise. - (606te_mult3): Likewise. - (606te_mult4): Likewise. - * config/arm/cortex-a9.md (cortex_a9_mult16): Update attribute change. - (cortex_a9_mac16): Likewise. - (cortex_a9_multiply): Likewise. - (cortex_a9_mac): Likewise. - (cortex_a9_multiply_long): Likewise. - * config/arm/fa626te.md (626te_mult1): Update attribute change. - (626te_mult2): Likewise. - (626te_mult3): Likewise. - (626te_mult4): Likewise. - -2013-06-18 Richard Biener - - PR lto/57334 - * lto-symtab.c (lto_symtab_merge_decls): Process nodes properly. - -2013-06-18 Andreas Krebbel - - PR target/57609 - * config/s390/s390.c (s390_chunkify_start): Replace next_real_insn - with next_active_insn. - -2013-06-18 Alan Modra - - * config/rs6000/rs6000.h (enum data_align): New. - (LOCAL_ALIGNMENT, DATA_ALIGNMENT): Use rs6000_data_alignment. - (DATA_ABI_ALIGNMENT): Define. - (CONSTANT_ALIGNMENT): Correct comment. - * config/rs6000/rs6000-protos.h (rs6000_data_alignment): Declare. - * config/rs6000/rs6000.c (rs6000_data_alignment): New function. - -2013-06-17 David Malcolm - - * ggc-page.c (ggc_pch_write_object) : Remove erroneous - ATTRIBUTE_UNUSED marking. - -2013-06-17 Sofiane Naci - - * config/aarch64/aarch64-simd.md (aarch64_dup_lane): Add r<-w - alternative and update. - (aarch64_dup_lanedi): Delete. - * config/aarch64/arm_neon.h (vdup_lane_*): Update. - * config/aarch64/aarch64-simd-builtins.def: Update. - -2013-06-17 Richard Biener - - * lto-streamer.h (enum LTO_tags): Add LTO_tree_scc. - (lto_input_scc): Declare. - (lto_input_tree_1): Likewise. - (struct lto_stats_d): Add num_tree_bodies_output and - num_pickle_refs_output. - * lto-streamer-in.c (lto_read_body): Use streamer_tree_cache_get_tree. - (lto_read_tree_1): Split out from ... - (lto_read_tree): ... this. - (lto_input_scc): New function. - (lto_input_tree_1): Split out from ... - (lto_input_tree): ... this. Handle LTO_tree_scc. - (lto_data_in_create): Create the streamer cache without hashes. - * lto-streamer-out.c (create_output_block): Create the streamer - cache with hashes when not doing WPA. - (lto_write_tree_1): Split out from ... - (lto_write_tree): ... this. - (get_symbol_initial_value): New function. - (lto_output_tree_1): Split out from ... - (lto_output_tree): ... this. Write trees as series of SCCs - using a DFS walk via DFS_write_tree. - (struct sccs, struct scc_entry): New types. - (next_dfs_num, sccstack, sccstate, sccstate_obstack): New globals. - (DFS_write_tree_body): New function. - (DFS_write_tree): Likewise. - (hash_tree): Likewise. - (scc_entry_compare): Likewise. - (hash_scc): Likewise. - (tree_is_indexable): DEBUG_EXPR_DECLs are local entities. - * tree-streamer-in.c (lto_input_ts_list_tree_pointers): Stream - TREE_CHAIN as regular reference. - (streamer_read_integer_cst): Remove. - (streamer_get_pickled_tree): Adjust. - * tree-streamer-out.c (streamer_write_chain): Disable streaming - of DECL_EXTERNALs in BLOCK_VARS for now. - (write_ts_list_tree_pointers): Stream TREE_CHAIN as regular - reference. - * tree-streamer.c (streamer_tree_cache_add_to_node_array): - Add hash value argument and record that if hashes are recorded - in the cache. - (streamer_tree_cache_insert_1): Adjust. - (streamer_tree_cache_insert): Likewise. - (streamer_tree_cache_insert_at): Rename to ... - (streamer_tree_cache_replace_tree): ... this and adjust. - (streamer_tree_cache_append): Adjust. - (record_common_node): Likewise. - (streamer_tree_cache_create): Add argument whether to - record hash values together with trees. - (streamer_tree_cache_delete): Adjust. - * tree-streamer.h (struct streamer_tree_cache_d): Add - vector of hashes. - (streamer_read_integer_cst): Remove. - (streamer_tree_cache_insert): Adjust. - (streamer_tree_cache_append): Likewise. - (streamer_tree_cache_insert_at): Rename to ... - (streamer_tree_cache_replace_tree): ... this and adjust. - (streamer_tree_cache_create): Add argument whether to record hashes. - (streamer_tree_cache_get): Rename to ... - (streamer_tree_cache_get_tree): ... this. - (streamer_tree_cache_get_hash): New function. - * tree.c (cache_integer_cst): New function. - * tree.h (cache_integer_cst): Declare. - (ANON_AGGRNAME_FORMAT, ANON_AGGRNAME_P): Move here from cp/cp-tree.h. - * lto-symtab.c (lto_varpool_replace_node): Only release - DECL_INITIAL of non-prevailing decls. - * varpool.c (varpool_remove_initializer): Do not release - DECL_INITIAL when we are still in CGRAPH_LTO_STREAMING. - -2013-06-16 Jürgen Urban - - * config/mips/mips.h (ISA_HAS_MUL3): Include TARGET_MIPS5900. - (ISA_HAS_MULT, ISA_HAS_DMULT, ISA_HAS_DIV, ISA_HAS_DDIV): New macros. - * config/mips/mips.md (mul3, mul3_internal) - (mul3_r4000): Require ISA_HAS_MULT. - (mul3_mul3): Handle TARGET_MIPS5900. - (mulsidi3_64bit_dmul): Remove redundant TARGET_64BIT test. - (muldi3_highpart, muldi3_highpart_internal, mulditi3) - (mulditi3_internal, mulditi3_r4000): Require ISA_HAS_DMULT - instead of TARGET_64BIT. - (divmod4, udivmod4, divmod4_hilo_): - Require ISA_HAS_DIV. - -2013-06-16 Richard Sandiford - - * config.gcc (mips*-mti-linux*, mips64*-*-linux*, mipsisa64*-*-linux*) - (mips*-*-linux*): Move default with_llsc setting to where other - defaults are set. - (mips*-*-vxworks*): Move with_arch default from with_cpu block to - with_arch block. - (mips64r5900-*-*, mips64r5900el-*-*, mipsr5900-*-*, mipsr5900el-*-*): - Likewise. Remove default with_tune setting. Move default float - setting to its own block. Handle with_llsc in the same block as above. - -2013-06-16 Joern Rennecke - - PR rtl-optimization/57425 - PR rtl-optimization/57569 - * alias.c (write_dependence_p): Add new parameters mem_mode, - canon_mem_addr and mem_canonicalized. Change type of writep to bool. - Changed all callers. - (canon_anti_dependence): New function. - * cse.c (check_dependence): Use canon_anti_dependence. - * cselib.c (cselib_invalidate_mem): Likewise. - * rtl.h (canon_anti_dependence): Declare. - -2013-06-16 Jürgen Urban - - * config/mips/mips.h (ISA_HAS_LL_SC): Exclude TARGET_MIPS5900. - * config/mips/mips.c (mips_start_ll_sc_sync_block): Output - ".set mips3" for 64-bit targets. - -2013-06-15 Dehao Chen - - * tree-flow.h (gimple_check_call_matching_types): Add new argument. - * gimple-low.c (gimple_check_call_matching_types): Likewise. - (gimple_check_call_args): Likewise. - * value-prof.c (check_ic_target): Likewise. - * ipa-inline.c (early_inliner): Likewise. - * ipa-prop.c (update_indirect_edges_after_inlining): Likewise. - * cgraph.c (cgraph_create_edge_1): Likewise. - (cgraph_make_edge_direct): Likewise. - -2013-06-14 Michael Meissner - - PR target/57615 - * config/rs6000/rs6000.md (mov_ppc64): Call - rs6000_output_move_128bit to handle emitting quad memory - operations. Set attribute length to 8 bytes. - -2013-06-14 Vidya Praveen - - * config/aarch64/aarch64-simd.md (aarch64_mlal_lo): - New pattern. - (aarch64_mlal_hi, aarch64_mlsl_lo): Likewise. - (aarch64_mlsl_hi, aarch64_mlal): Likewise. - (aarch64_mlsl): Likewise. - -2013-06-14 Mike Stump - - * Makefile.in (TARGET_H): Add insn-codes.h. - -2013-06-14 Alan Modra - - PR middle-end/57134 - PR middle-end/57586 - * expr.c (expand_expr_real_1 ): Pass - EXPAND_MEMORY and EXPAND_WRITE to recursive call. Don't use - bitfield expansion when EXPAND_MEMORY. - (expand_expr_real_1 ): Pass modifier likewise. - -2013-06-13 Michael Meissner - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Move - test for clearing quad memory on 32-bit later. - -2013-06-13 Marc Glisse - - * fold-const.c (negate_expr_p): Handle VECTOR_CST. - (fold_negate_expr): Likewise. - (fold_real_zero_addition_p): Handle vectors. - (fold_binary_loc) : Likewise. - -2013-06-14 Alan Modra - - * varasm.c (force_const_mem): Revert 2013-06-07 change. - -2013-06-13 Jan Hubicka - - * ipa.c (cgraph_externally_visible_p, varpool_externally_visible_p): - Local comdats are not externally visible. - * symtab.c (dump_symtab_base): Dump externally visible. - (verify_symtab_base): Verify back links in the symtab hash. - -2013-06-13 Bin Cheng - - * fold-const.c (operand_equal_p): Consider NOP_EXPR and - CONVERT_EXPR as equal nodes. - -2013-06-13 Bin Cheng - - * rtlanal.c (noop_move_p): Check the code to be executed for COND_EXEC. - -2013-06-13 Marc Glisse - - * tree-ssa-forwprop.c (simplify_bitwise_binary, associate_plusminus): - Generalize to complex and vector. - * tree.c (build_all_ones_cst): New function. - * tree.h (build_all_ones_cst): Declare it. - -2013-06-13 Alan Modra - - * config/rs6000/rs6000.h (LONG_DOUBLE_LARGE_FIRST): Define. - * config/rs6000/rs6000.md (signbittf2): New insn. - (extenddftf2_internal): Use LONG_DOUBLE_LARGE_FIRST. - (abstf2_internal, cmptf_internal2): Likewise. - * config/rs6000/spe.md (spe_abstf2_cmp, spe_abstf2_tst): Likewise. - -2013-06-12 Michael Meissner - Pat Haugen - Peter Bergner - - * config/rs6000/rs6000.c (emit_load_locked): Add support for - power8 byte, half-word, and quad-word atomic instructions. - (emit_store_conditional): Likewise. - (rs6000_expand_atomic_compare_and_swap): Likewise. - (rs6000_expand_atomic_op): Likewise. - - * config/rs6000/sync.md (larx): Add new modes for power8. - (stcx): Likewise. - (AINT): New mode iterator to include TImode as well as normal - integer modes on power8. - (fetchop_pred): Use int_reg_operand instead of gpc_reg_operand so - that VSX registers are not considered. Use AINT mode iterator - instead of INT1 to allow inclusion of quad word atomic operations - on power8. - (load_locked): Likewise. - (store_conditional): Likewise. - (atomic_compare_and_swap): Likewise. - (atomic_exchange): Likewise. - (atomic_nand): Likewise. - (atomic_fetch_): Likewise. - (atomic_nand_fetch): Likewise. - (mem_thread_fence): Use gen_loadsync_ instead of enumerating - each type. - (ATOMIC): On power8, add QImode, HImode modes. - (load_locked_si): Varients of load_locked for QI/HI - modes that promote to SImode. - (load_lockedti): Convert TImode arguments to PTImode, so that we - get a guaranteed even/odd register pair. - (load_lockedpti): Likewise. - (store_conditionalti): Likewise. - (store_conditionalpti): Likewise. - - * config/rs6000/rs6000.md (QHI): New mode iterator for power8 - atomic load/store instructions. - (HSI): Likewise. - -2013-06-12 Richard Sandiford - - * config/mips/mips.md (extended_mips16): Include GOT and constant-pool - loads. - (insn_count): New attribute, with most cases extracted from... - (length): ...here. Redefine most cases in terms of insn_count. - (single_insn): Delete. - (can_delay): Use insn_count to check for single instructions. - (*mul3_r4300, mul3_r4000, *mul_acc_si, *mul_acc_si_r3900) - (*msac_using_macc, *mul_sub_si, mulsidi3_32bit_r4000) - (mulsidi3_64bit_r4000, muldi3_highpart_internal) - (mulsi3_highpart_split, muldi3_highpart_internal) - (mulditi3_r4000, *div3, *recip3, divmod4) - (udivmod4, sqrt2, *rsqrta, *rsqrtb) - (fix_truncdfsi2_macro, fix_truncsfsi2_macro, *lea_high64) - (*lea64, cprestore_, clear_hazard_, ) - (casesi_internal_mips16_, *tls_get_tp__split) - (tls_get_tp_mips16, *tls_get_tp_mips16_call_): Use "insn_count" - rather than "length". - (tls_get_tp_): Likewise. Remove redundant "no_delay" attribute. - * config/mips/mips-ps-3d.md (mips_c_cond_4s, mips_cabs_cond_4s): - Use "insn_count" rather than "length". - * config/mips/mips-dsp.md - (mips_lx_ext_) - (mips_lx_, *mips_lwx__ext): Remove - length attributes. - -2013-06-12 Marc Glisse - - PR tree-optimization/57361 - * tree-ssa-dse.c (dse_possible_dead_store_p): Handle self-assignment. - -2013-06-12 Sofiane Naci - - * config/aarch64/aarch64-simd.md (aarch64_combine): Convert - to split. - (aarch64_simd_combine): New instruction expansion. - * config/aarch64/aarch64-protos.h (aarch64_split_simd_combine): New - function prototype. - * config/aarch64/aarch64.c (aarch64_split_combine): New function. - * config/aarch64/iterators.md (Vdbl): Add entry for DF. - -2013-06-12 Jan Hubicka - - * cgraph.c (verify_edge_corresponds_to_fndecl): Be lax about - decl has when in streaming stage. - * lto-symtab.c (lto_symtab_merge_symbols): Likewise. - * cgraph.h (cgraph_state): Add CGRAPH_LTO_STREAMING. - -2013-06-12 Roland Stigge - - PR target/57578 - * config/rs6000/t-linux (MULTIARCH_DIRNAME): Fix SPE version detection. - -2013-06-12 Jakub Jelinek - - PR tree-optimization/57537 - * tree-vect-patterns.c (vect_recog_widen_mult_pattern): If - vect_handle_widen_op_by_const, convert oprnd1 to half_type1. - -2013-06-12 Richard Biener - - * data-streamer.h (streamer_write_char_stream): CSE - obs->current_pointer. - * data-streamer-out.c (streamer_write_uhwi_stream): Inline - streamer_write_char_stream manually and optimize the resulting loop. - (streamer_write_hwi_stream): Likewise. - -2013-06-12 Jan Hubicka - - * lto-symtab.c (lto_symtab_merge_symbols): Populate symtab hashtable. - * cgraph.h (varpool_create_empty_node): Declare. - * lto-cgraph.c (input_node, input_varpool_node): Forcingly create - duplicated nodes. - * symtab.c (symtab_unregister_node): Be lax about missin entries - in node hash. - (symtab_get_node): Update comment. - * varpool.c (varpool_create_empty_node): Break out from ... - (varpool_node_for_decl): ... here. - * lto-streamer.h (lto_file_decl_data): Add RESOLUTION_MAP. - -2013-06-12 Eric Botcazou - - * expr.c (expand_expr_real_1) : Use straight-line flow. - : Use 'type' instead of TREE_TYPE (exp) and tidy up the first - part. Use straight-line flow at the end. - : Remove superfluous else. - : Use 'type' instead of TREE_TYPE (exp). - -2013-06-12 Jakub Jelinek - - PR target/56564 - * varasm.c (decl_binds_to_current_def_p): Call binds_local_p - target hook even for !TREE_PUBLIC decls. If no resolution info - is available, return false for common and external decls. - -2013-06-12 Kaushik Phatak - - * config/rl78/constraints.md (U): New constraint. - * config/rl78/rl78.md (*mulqi3_rl78,*mulhi3_rl78,*mulhi3_g13): Add - valloc attribute. - -2013-06-11 Michael Meissner - - PR target/57589 - * config/rs6000/driver-rs6000.c (elf_platform): Make buffer static - to allow returning address to AT_PLATFORM name. - -2013-06-11 Jan Hubicka - - * cgraph.c (cgraph_create_function_alias): Set weakref flag. - * cgraph.h (symtab_node_base): Add weakref flag. - * cgraphunit.c (cgraph_reset_node): Clear weakref flag. - (handle_alias_pairs): Set weakref flag, do not set DECL_EXTERNAL. - (output_weakrefs): Use weakref flag. - * fold-const.c (simple_operand_p): Handle WEAK. - * gimple-fold.c (can_refer_decl_in_current_unit_p): Drop weakref. - * ipa.c (varpool_externally_visible_p): Drop weakref. - (function_and_variable_visibility): Update comment; fix weakref - sanity checks; do not clear DECL_WEAK on them. - * lto-cgraph.c (lto_output_node): update. - (lto_output_varpool_node): Update. - (input_overwrite_node): Update. - (input_node): Update. - (input_varpool_node): Update. - * lto-symtab.c (lto_symtab_symbol_p): Do not special case weakrefs. - (lto_symtab_merge_symbols): Add sanity check. - (lto_symtab_prevailing_decl): Do not special case weakrefs. - * passes.c (rest_of_decl_compilation): Set static flag, too. - * symtab.c (dump_symtab_base): Dump weakref. - (verify_symtab_base): Sanity check weakrefs. - (symtab_make_decl_local): Remove duplicated code. - (symtab_alias_ultimate_target): Simplify. - * varpool.c (varpool_create_variable_alias): Set weakref flag. - -2013-06-11 Tom de Vries - - * genautomata.c (gen_regexp_sequence): Handle els_num == -1. Handle - sequence_vect == NULL. - -2013-06-11 DJ Delorie - - * config/rl78/rl78.c (TARGET_UNWIND_WORD_MODE): Define. - (rl78_unwind_word_mode): New. - -2013-06-11 David Malcolm - - * final.c (debug_prefix_maps): Make static. - -2013-06-11 David Malcolm - - * function.c (initial_trampoline): Remove stray copy. - -2013-06-11 Sofiane Naci - - * config/aarch64/aarch64-simd.md (move_lo_quad_): Update. - -2013-06-11 Martin Jambor - - * ipa-cp.c (ipa_get_indirect_edge_target_1): Check that param_index is - within bounds at the beginning of the function. - -2013-06-11 Alan Modra - - * varasm.c (get_section): Don't die on !DECL_P decl. Tidy error - reporting. - (get_named_section): Don't NULL !DECL_P decl. - -2013-06-11 Igor Zamyatin - - * doc/invoke.texi (core-avx2): Document. - (slm): Likewise. - (atom): Updated with MOVBE. - -2013-06-11 Richard Biener - - * collect2.c (main): Do not redirect ld stdout/stderr when debugging. - -2013-06-11 Anton Blanchard - - * config/rs6000/rs6000.c (rs6000_adjust_atomic_subword): Calculate - correct shift value in little-endian mode. - -2013-06-11 Jakub Jelinek - - PR target/56564 - * varasm.c (get_variable_align): Move #endif to the right place. - -2013-06-10 Cary Coutant - - * dwarf2out.c (hash_external_ref): Use die_symbol or signature - for hash so that hash table traversal order is deterministic. - -2013-06-10 Michael Meissner - Pat Haugen - Peter Bergner - - * config/rs6000/vector.md (GPR move splitter): Do not split moves - of vectors in GPRS if they are direct moves or quad word load or - store moves. - - * config/rs6000/rs6000-protos.h (rs6000_output_move_128bit): Add - declaration. - (direct_move_p): Likewise. - (quad_load_store_p): Likewise. - - * config/rs6000/rs6000.c (enum rs6000_reg_type): Simplify register - classes into bins based on the physical register type. - (reg_class_to_reg_type): Likewise. - (IS_STD_REG_TYPE): Likewise. - (IS_FP_VECT_REG_TYPE): Likewise. - (reload_fpr_gpr): Arrays to determine what insn to use if we can - use direct move instructions. - (reload_gpr_vsx): Likewise. - (reload_vsx_gpr): Likewise. - (rs6000_init_hard_regno_mode_ok): Precalculate the register type - information that is a simplification of register classes. Also - precalculate direct move reload helpers. - (direct_move_p): New function to return true if the operation can - be done as a direct move instruciton. - (quad_load_store_p): New function to return true if the operation - is a quad memory operation. - (rs6000_legitimize_address): If quad memory, only allow register - indirect for TImode addresses. - (rs6000_legitimate_address_p): Likewise. - (enum reload_reg_type): Delete, replace with rs6000_reg_type. - (rs6000_reload_register_type): Likewise. - (register_to_reg_type): Return register type. - (rs6000_secondary_reload_simple_move): New helper function for - secondary reload and secondary memory needed to identify anything - that is a simple move, and does not need reloading. - (rs6000_secondary_reload_direct_move): New helper function for - secondary reload to identify cases that can be done with several - instructions via the direct move instructions. - (rs6000_secondary_reload_move): New helper function for secondary - reload to identify moves between register types that can be done. - (rs6000_secondary_reload): Add support for quad memory operations - and for direct move. - (rs6000_secondary_memory_needed): Likewise. - (rs6000_debug_secondary_memory_needed): Change argument names. - (rs6000_output_move_128bit): New function to return the move to - use for 128-bit moves, including knowing about the various - limitations of quad memory operations. - - * config/rs6000/vsx.md (vsx_mov): Add support for quad - memory operations. call rs6000_output_move_128bit for the actual - instruciton(s) to generate. - (vsx_movti_64bit): Likewise. - - * config/rs6000/rs6000.md (UNSPEC_P8V_FMRGOW): New unspec values. - (UNSPEC_P8V_MTVSRWZ): Likewise. - (UNSPEC_P8V_RELOAD_FROM_GPR): Likewise. - (UNSPEC_P8V_MTVSRD): Likewise. - (UNSPEC_P8V_XXPERMDI): Likewise. - (UNSPEC_P8V_RELOAD_FROM_VSX): Likewise. - (UNSPEC_FUSION_GPR): Likewise. - (FMOVE128_GPR): New iterator for direct move. - (f32_lv): New mode attribute for load/store of SFmode/SDmode values. - (f32_sv): Likewise. - (f32_dm): Likewise. - (zero_extenddi2_internal1): Add support for power8 32-bit - loads and direct move instructions. - (zero_extendsidi2_lfiwzx): Likewise. - (extendsidi2_lfiwax): Likewise. - (extendsidi2_nocell): Likewise. - (floatsi2_lfiwax): Likewise. - (lfiwax): Likewise. - (floatunssi2_lfiwzx): Likewise. - (lfiwzx): Likewise. - (fix_trunc_stfiwx): Likewise. - (fixuns_trunc_stfiwx): Likewise. - (mov_hardfloat, 32-bit floating point): Likewise. - (mov_hardfloat64, 64-bit floating point): Likewise. - (parity2_cmpb): Set length/type attr. - (unnamed shift right patterns, mov_internal2): Change type attr - for 'mr.' to fast_compare. - (bpermd_): Change type attr to popcnt. - (p8_fmrgow_): New insns for power8 direct move support. - (p8_mtvsrwz_1): Likewise. - (p8_mtvsrwz_2): Likewise. - (reload_fpr_from_gpr): Likewise. - (p8_mtvsrd_1): Likewise. - (p8_mtvsrd_2): Likewise. - (p8_xxpermdi_): Likewise. - (reload_vsx_from_gpr): Likewise. - (reload_vsx_from_gprsf): Likewise. - (p8_mfvsrd_3_): LIkewise. - (reload_gpr_from_vsx): Likewise. - (reload_gpr_from_vsxsf): Likewise. - (p8_mfvsrd_4_disf): Likewise. - (multi-word GPR splits): Do not split direct moves or quad memory - operations. - -2013-06-10 David Malcolm - - * tree-into-ssa.c (interesting_blocks): Make static. - -2013-06-10 Jakub Jelinek - - PR target/56564 - * varasm.c (align_variable): Don't use DATA_ALIGNMENT or - CONSTANT_ALIGNMENT if !decl_binds_to_current_def_p (decl). - Use DATA_ABI_ALIGNMENT for that case instead if defined. - (get_variable_align): New function. - (get_variable_section, emit_bss, emit_common, - assemble_variable_contents, place_block_symbol): Use - get_variable_align instead of DECL_ALIGN. - (assemble_noswitch_variable): Add align argument, use it - instead of DECL_ALIGN. - (assemble_variable): Adjust caller. Use get_variable_align - instead of DECL_ALIGN. - * config/i386/i386.h (DATA_ALIGNMENT): Adjust x86_data_alignment - caller. - (DATA_ABI_ALIGNMENT): Define. - * config/i386/i386-protos.h (x86_data_alignment): Adjust prototype. - * config/i386/i386.c (x86_data_alignment): Add opt argument. If - opt is false, only return the psABI mandated alignment increase. - * config/c6x/c6x.h (DATA_ALIGNMENT): Renamed to... - (DATA_ABI_ALIGNMENT): ... this. - * config/mmix/mmix.h (DATA_ALIGNMENT): Renamed to... - (DATA_ABI_ALIGNMENT): ... this. - * config/mmix/mmix.c (mmix_data_alignment): Adjust function comment. - * config/s390/s390.h (DATA_ALIGNMENT): Renamed to... - (DATA_ABI_ALIGNMENT): ... this. - * doc/tm.texi.in (DATA_ABI_ALIGNMENT): Document. - * doc/tm.texi: Regenerated. - -2013-06-10 Uros Bizjak - - * config/alpha/alpha.c (alpha_emit_xfloating_compare): Also use - cmp_code to construct REG_EQUAL note. - -2013-06-09 Jakub Jelinek - - PR target/57568 - * config/i386/i386.md (TARGET_READ_MODIFY_WRITE peepholes): Ensure - that operands[2] doesn't overlap with operands[0]. - -2013-06-09 David Edelsohn - Jan Hubicka - - * config/rs6000/rs6000.c (print_operand, 'z'): Remove historical - hack to mark symbols as used. - -2013-06-08 Vladimir Makarov - - PR rtl-optimization/57559 - * lra-constraints.c (process_alt_operands): Don't discourage - memory with known offset for offsetable memory constraint. - * lra.c (lra_emit_add): Exchange y and z for 2-op add insn. - -2013-06-08 Eric Botcazou - - * varasm.c (struct oc_local_state): Reorder fields. - (output_constructor_bitfield): Replace OUTER parameter with BIT_OFFSET - and adjust accordingly. - (output_constructor): Reorder initialization code and adjust call to - output_constructor_bitfield. - -2013-06-07 Jan Hubicka - - * symtab.c (symtab_resolve_alias): Do not remove alias attribute. - -2013-06-07 David Malcolm - - * tree-object-size.c (unknown): Make const. - -2013-06-07 Andreas Krebbel - - * config/s390/s390.md (cpu_facility): Add cpu_zarch. - ("*movmem_short", "*clrmem_short", "*cmpmem_short): Use cpu_zarch - for last alternative in the cpu_facility attribute. - -2013-06-07 Kyrylo Tkachov - - PR target/56315 - * config/arm/arm.md (*xordi3_insn): Change to insn_and_split. - (xordi3): Change operand 2 constraint to arm_xordi_operand. - * config/arm/arm.c (const_ok_for_dimode_op): Handle XOR. - * config/arm/constraints.md (Dg): New constraint. - * config/arm/neon.md (xordi3_neon): Remove. - (neon_veor): Generate xordi3 instead of xordi3_neon. - * config/arm/predicates.md (arm_xordi_operand): New predicate. - -2013-06-07 Kyrylo Tkachov - - * config/arm/arm.md (anddi3_insn): Remove duplicate alternatives. - Clean up alternatives. - -2013-06-07 Alan Modra - - * config/rs6000/rs6000.c (setup_incoming_varargs): Round up - va_list_gpr_size. - -2013-06-07 Alan Modra - - * varasm.c (force_const_mem): Assert mode is not VOID or BLK. - -2013-06-07 Kyrylo Tkachov - - * config/arm/constraints.md (Df): New constraint. - * config/arm/arm.md (iordi3_insn): Use Df constraint instead of De. - Correct length attribute for last two alternatives. - -2013-06-07 Alan Modra - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't - override user -mfp-in-toc. - (offsettable_ok_by_alignment): Consider just the current access - rather than the whole object, unless BLKmode. Handle - CONSTANT_POOL_ADDRESS_P constants that lack a decl too. - (use_toc_relative_ref): Allow CONSTANT_POOL_ADDRESS_P constants - for -mcmodel=medium. - * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Don't - override user -mfp-in-toc or -msum-in-toc. Default to - -mno-fp-in-toc for -mcmodel=medium. - -2013-06-06 DJ Delorie - - * config/rl78/rl78.c (rl78_valid_pointer_mode): New, implements - TARGET_VALID_POINTER_MODE. - -2013-06-06 Michael Meissner - Pat Haugen - Peter Bergner - - * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions): - Document new power8 builtins. - - * config/rs6000/vector.md (and3): Add a clobber/scratch of a - condition code register, to allow 128-bit logical operations to be - done in the VSX or GPR registers. - (nor3): Use the canonical form for nor. - (eqv3): Add expanders for power8 xxleqv, xxlnand, xxlorc, - vclz*, and vpopcnt* vector instructions. - (nand3): Likewise. - (orc3): Likewise. - (clz2): LIkewise. - (popcount2): Likewise. - - * config/rs6000/predicates.md (int_reg_operand): Rework tests so - that only the GPRs are recognized. - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - support for new power8 builtins. - - * config/rs6000/rs6000-builtin.def (xscvspdpn): Add new power8 - builtin functions. - (xscvdpspn): Likewise. - (vclz): Likewise. - (vclzb): Likewise. - (vclzh): Likewise. - (vclzw): Likewise. - (vclzd): Likewise. - (vpopcnt): Likewise. - (vpopcntb): Likewise. - (vpopcnth): Likewise. - (vpopcntw): Likewise. - (vpopcntd): Likewise. - (vgbbd): Likewise. - (vmrgew): Likewise. - (vmrgow): Likewise. - (eqv): Likewise. - (eqv_v16qi3): Likewise. - (eqv_v8hi3): Likewise. - (eqv_v4si3): Likewise. - (eqv_v2di3): Likewise. - (eqv_v4sf3): Likewise. - (eqv_v2df3): Likewise. - (nand): Likewise. - (nand_v16qi3): Likewise. - (nand_v8hi3): Likewise. - (nand_v4si3): Likewise. - (nand_v2di3): Likewise. - (nand_v4sf3): Likewise. - (nand_v2df3): Likewise. - (orc): Likewise. - (orc_v16qi3): Likewise. - (orc_v8hi3): Likewise. - (orc_v4si3): Likewise. - (orc_v2di3): Likewise. - (orc_v4sf3): Likewise. - (orc_v2df3): Likewise. - - * config/rs6000/rs6000.c (rs6000_option_override_internal): Only - allow power8 quad mode in 64-bit. - (rs6000_builtin_vectorized_function): Add support to vectorize - ISA 2.07 count leading zeros, population count builtins. - (rs6000_expand_vector_init): On ISA 2.07 use xscvdpspn to form - V4SF vectors instead of xscvdpsp to avoid IEEE related traps. - (builtin_function_type): Add vgbbd builtin function which takes an - unsigned argument. - (altivec_expand_vec_perm_const): Add support for new power8 merge - instructions. - - * config/rs6000/vsx.md (VSX_L2): New iterator for 128-bit types, - that does not include TImdoe for use with 32-bit. - (UNSPEC_VSX_CVSPDPN): Support for power8 xscvdpspn and xscvspdpn - instructions. - (UNSPEC_VSX_CVDPSPN): Likewise. - (vsx_xscvdpspn): Likewise. - (vsx_xscvspdpn): Likewise. - (vsx_xscvdpspn_scalar): Likewise. - (vsx_xscvspdpn_directmove): Likewise. - (vsx_and3): Split logical operations into 32-bit and - 64-bit. Add support to do logical operations on TImode as well as - VSX vector types. Allow logical operations to be done in either - VSX registers or in general purpose registers in 64-bit mode. Add - splitters if GPRs were used. For AND, add clobber of CCmode to - allow use of ANDI on GPRs. Rewrite nor to use the canonical RTL - encoding. - (vsx_and3_32bit): Likewise. - (vsx_and3_64bit): Likewise. - (vsx_ior3): Likewise. - (vsx_ior3_32bit): Likewise. - (vsx_ior3_64bit): Likewise. - (vsx_xor3): Likewise. - (vsx_xor3_32bit): Likewise. - (vsx_xor3_64bit): Likewise. - (vsx_one_cmpl2): Likewise. - (vsx_one_cmpl2_32bit): Likewise. - (vsx_one_cmpl2_64bit): Likewise. - (vsx_nor3): Likewise. - (vsx_nor3_32bit): Likewise. - (vsx_nor3_64bit): Likewise. - (vsx_andc3): Likewise. - (vsx_andc3_32bit): Likewise. - (vsx_andc3_64bit): Likewise. - (vsx_eqv3_32bit): Add support for power8 xxleqv, xxlnand, - and xxlorc instructions. - (vsx_eqv3_64bit): Likewise. - (vsx_nand3_32bit): Likewise. - (vsx_nand3_64bit): Likewise. - (vsx_orc3_32bit): Likewise. - (vsx_orc3_64bit): Likewise. - - * config/rs6000/rs6000.h (VLOGICAL_REGNO_P): Update comment. - - * config/rs6000/altivec.md (UNSPEC_VGBBD): Add power8 vgbbd - instruction. - (p8_vmrgew): Add power8 vmrgew and vmrgow instructions. - (p8_vmrgow): Likewise. - (altivec_and3): Add clobber of CCmode to allow AND using - GPRs to be split under VSX. - (p8v_clz2): Add power8 count leading zero support. - (p8v_popcount2): Add power8 population count support. - (p8v_vgbbd): Add power8 gather bits by bytes by doubleword - support. - - * config/rs6000/rs6000.md (eqv3): Add support for powerp eqv - instruction. - - * config/rs6000/altivec.h (vec_eqv): Add defines to export power8 - builtin functions. - (vec_nand): Likewise. - (vec_vclz): Likewise. - (vec_vclzb): Likewise. - (vec_vclzd): Likewise. - (vec_vclzh): Likewise. - (vec_vclzw): Likewise. - (vec_vgbbd): Likewise. - (vec_vmrgew): Likewise. - (vec_vmrgow): Likewise. - (vec_vpopcnt): Likewise. - (vec_vpopcntb): Likewise. - (vec_vpopcntd): Likewise. - (vec_vpopcnth): Likewise. - (vec_vpopcntw): Likewise. - -2013-06-06 Vladimir Makarov - - PR rtl-optimization/57468 - * config/i386/i386.c (inline_secondary_memory_needed): Ignore - spilled pseudos. - -2013-06-06 Vladimir Makarov - - PR rtl-optimization/57459 - * lra-constraints.c (update_ebb_live_info): Fix typo for operand - type when setting live regs. - -2013-06-06 Vladimir Makarov - - * config/s390/s390.opt (mlra): New option. - * config/s390/s390.c (s390_decompose_address): Check displacement - for all registers for LRA. - (s390_secondary_reload): Don't used secondary reloads for LRA. - (s390_lra_p): New function. - (TARGET_LRA_P): Define. - * config/s390/s390.md (*movmem_short, *clrmem_short): Change value - of attribute cpu_facility to zarch for the last alternative. - (*cmpmem_short): Ditto. - -2013-06-06 Eric Botcazou - - * config/arm/arm.c (arm_r3_live_at_start_p): New predicate. - (arm_compute_static_chain_stack_bytes): Use it. Tidy up. - (arm_expand_prologue): Likewise. - -2013-06-06 Teresa Johnson - - PR c++/53743 - * ifcvt.c (find_if_case_1): Replace BB_COPY_PARTITION with assert - as this is now done by redirect_edge_and_branch_force. - * function.c (thread_prologue_and_epilogue_insns): Insert new bb after - barriers, and fix interaction with splitting. - * emit-rtl.c (try_split): Copy REG_CROSSING_JUMP notes. - * cfgcleanup.c (try_forward_edges): Fix early return value to properly - reflect changes made in the routine. - * bb-reorder.c (emit_barrier_after_bb): Move to cfgrtl.c. - (fix_up_fall_thru_edges): Remove incorrect check for bb layout order - since this is called in cfglayout mode, and replace partition fixup - with assert as that is now done by force_nonfallthru_and_redirect. - (add_reg_crossing_jump_notes): Handle the fact that some jumps may - already be marked with region crossing note. - (insert_section_boundary_note): Make non-static, gate on flag - has_bb_partition, rewrite to also check for multiple partitions. - (rest_of_handle_reorder_blocks): Remove call to - insert_section_boundary_note, now done later during free_cfg. - (duplicate_computed_gotos): Don't duplicate partition crossing edge. - * bb-reorder.h (insert_section_boundary_note): Declare. - * Makefile.in (cfgrtl.o): Depend on bb-reorder.h - * cfgrtl.c (rest_of_pass_free_cfg): If partitions exist - invoke insert_section_boundary_note. - (try_redirect_by_replacing_jump): Remove unnecessary - check for region crossing note. - (fixup_partition_crossing): New function. - (rtl_redirect_edge_and_branch): Fixup partition boundaries. - (emit_barrier_after_bb): Move here from bb-reorder.c, handle insertion - in non-cfglayout mode. - (force_nonfallthru_and_redirect): Fixup partition boundaries, - remove old code that tried to do this. Emit barrier correctly - when we are in cfglayout mode. - (last_bb_in_partition): New function. - (rtl_split_edge): Correctly fixup partition boundaries. - (commit_one_edge_insertion): Remove old code that tried to - fixup region crossing edge since this is now handled in - split_block, and set up insertion point correctly since - block may now end in a jump. - (verify_hot_cold_block_grouping): Guard against checking when not in - linearized RTL mode. - (rtl_verify_edges): Add checks for incorrect/missing REG_CROSSING_JUMP - notes. - (rtl_verify_flow_info_1): Move verify_hot_cold_block_grouping to - rtl_verify_flow_info, so not called in cfglayout mode. - (rtl_verify_flow_info): Move verify_hot_cold_block_grouping here. - (fixup_reorder_chain): Remove old code that attempted to fixup region - crossing note as this is now handled in force_nonfallthru_and_redirect. - (duplicate_insn_chain): Don't duplicate switch section notes. - (rtl_can_remove_branch_p): Remove unnecessary check for region crossing - note. - * basic-block.h (emit_barrier_after_bb): Declare. - -2013-06-06 Kyrylo Tkachov - - * config/arm/arm-fixed.md (add3,usadd3,ssadd3, - sub3, ussub3, sssub3, arm_ssatsihi_shift, - arm_usatsihi): Adjust alternatives for arm_restrict_it. - -2013-06-06 Kyrylo Tkachov - - * config/arm/arm-ldmstm.ml: Set "predicable_short_it" to "no" - where appropriate. - * config/arm/ldmstm.md: Regenerate. - -2013-06-06 Kyrylo Tkachov - - * config/arm/sync.md (atomic_loaddi_1): - Disable predication for arm_restrict_it. - (arm_load_exclusive): Likewise. - (arm_load_exclusivesi): Likewise. - (arm_load_exclusivedi): Likewise. - (arm_load_acquire_exclusive): Likewise. - (arm_load_acquire_exclusivesi): Likewise. - (arm_load_acquire_exclusivedi): Likewise. - (arm_store_exclusive): Likewise. - (arm_store_exclusive): Likewise. - (arm_store_release_exclusivedi): Likewise. - (arm_store_release_exclusive): Likewise. - -2013-06-06 Richard Biener - - * lto-streamer.h (enum LTO_tags): Move LTO_tree_pickle_reference - after LTO_null. - (lto_tag_is_tree_code_p): Adjust. - (lto_tag_is_gimple_code_p): Likewise. - (lto_gimple_code_to_tag): Likewise. - (lto_tag_to_gimple_code): Likewise. - (lto_tree_code_to_tag): Likewise. - (lto_tag_to_tree_code): Likewise. - * data-streamer.h (streamer_write_hwi_in_range): Use - uhwi streaming to stream the normalized range. - (streamer_read_hwi_in_range): Likewise. - -2013-06-05 Kyrylo Tkachov - - * config/arm/arm.md (enabled_for_depr_it): New attribute. - (predicable_short_it): Likewise. - (predicated): Likewise. - (enabled): Handle above. - (define_cond_exec): Set predicated attribute to yes. - -2013-06-05 Mike Stump - - * gdbinit.in (__FUNCTION__): Add. - -2013-06-05 Uros Bizjak - - * config/alpha/alpha.c (alpha_emit_conditional_move): Swap all - GE, GT, GEU and GTU compares, modulo DImode compares with zero. - -2013-06-05 Jan Hubicka - - * varasm.c (mark_decl_referenced): Revert the removal until targets - are fixed. - -2013-06-05 David Edelsohn - - * config/rs6000/rs6000.c (print_operand, 'z'): Use DECL_PRESERVE_P - instead of mark_decl_referenced. - -2013-06-05 Jan Hubicka - - * cgraph.c (cgraph_remove_node): Clear forced_by_abi. - (cgraph_node_cannot_be_local_p_1): Honnor symbol.forced_by_abi - and symtab_used_from_object_file_p. - (cgraph_make_node_local_1): Clear forced_by_abi. - (cgraph_can_remove_if_no_direct_calls_and): Use forced_by_abi - * cgraph.h (symtab_node_base): Add forced_by_abi. - (decide_is_variable_needed): Remove. - (varpool_can_remove_if_no_refs): Honnor symbol.forced_by_abi. - * cgraphunit.c (cgraph_decide_is_function_needed): Rename to .. - (decide_is_symbol_needed): ... this one; handle symbols in general; - always analyze virtuals; honnor forced_by_abi. - (cgraph_finalize_function): Update. - (varpool_finalize_decl): Update. - (symbol_defined_and_needed): Remove. - (analyze_functions): Update. - * lto-cgraph.c (lto_output_node, lto_output_varpool_node, - output_refs, input_overwrite_node): Handle forced_by_abi. - * ipa.c (cgraph_address_taken_from_non_vtable_p): Rename to ... - (address_taken_from_non_vtable_p): ... this one. - (comdat_can_be_unshared_p_1): New function. - (cgraph_comdat_can_be_unshared_p): Rename to ... - (comdat_can_be_unshared_p): ... this one; handle symbols in general. - (varpool_externally_visible_p): Use comdat_can_be_unshared_p. - (function_and_variable_visibility): Clear forced_by_abi as needed. - * trans-mem.c (ipa_tm_mark_forced_by_abi_node): New functoin. - (ipa_tm_create_version_alias, ipa_tm_create_version): Update. - * symtab.c (dump_symtab_base): Dump forced_by_abi. - * varpool.c (decide_is_variable_needed): Remove. - -2013-06-05 Kyrylo Tkachov - - * config/arm/arm.c (MAX_INSN_PER_IT_BLOCK): New macro. - (arm_option_override): Override arm_restrict_it where appropriate. - (thumb2_final_prescan_insn): Use MAX_INSN_PER_IT_BLOCK. - * config/arm/arm.opt (mrestrict-it): New command-line option. - * doc/invoke.texi: Document -mrestrict-it. - -2013-06-05 David Malcolm - - * tsan.c (tsan_atomic_table): Make const. - -2013-06-05 Richard Biener - - * tree-streamer.c (streamer_tree_cache_insert_1): Update the - index associated with the tree we are supposed to replace. - * tree-streamer-out.c (pack_ts_base_value_fields): Output - TREE_ASM_WRITTEN as zero for everything but SSA names. - -2013-06-05 David Malcolm - - * tree-ssa-structalias.c (call_stmt_vars): Make static. - -2013-06-04 Jan Hubicka - - * lto-cgraph.c (get_alias_symbol): Remove weakref sanity check. - (input_node, input_varpool_node): Handle correctly external same - body aliases. - * ipa.c (symtab_remove_unreachable_nodes): Do not remove external - nodes at ltrans stage. - -2013-06-04 Jan Hubicka - - * ipa-inline.c (update_caller_keys): Fix availability test. - (update_callee_keys): Likewise. - * symtab.c (symtab_alias_ultimate_target): Make availaiblity logic - to follow ELF standard. - -2013-06-04 Jürgen Urban - - * config.gcc (mipsr5900-*-elf*, mipsr5900el-*-elf*, mips64r5900-*-elf*) - (mips64r5900el-*-elf*): New configurations. - * config/mips/mips-cpus.def (r5900): New processor. - * config/mips/mips-tables.opt: Regenerate. - * config/mips/mips.c (mips_rtx_cost_data): Add an R5900 entry. - (mips_issue_rate): Handle PROCESSOR_R5900. - (mips_reorg_process_insns): Force reorder mode for the R5900. - * config/mips/mips.h (TARGET_MIPS5900): Define. - (ISA_HAS_CONDMOVE, ISA_HAS_PREFETCH, ISA_HAS_HILO_INTERLOCKS): Include - TARGET_MIPS5900. - (ISA_HAS_LOAD_DELAY, ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY): Exclude - TARGET_MIPS5900. - * config/mips/mips.md (processor): Add r5900. - (MOVECC): Disallow CCmode conditions for TARGET_MIPS5900. - -2013-06-04 Ian Bolton - - * config/aarch64/aarch64.md (*mov_aarch64): Call - into function to generate MOVI instruction. - * config/aarch64/aarch64.c (aarch64_simd_container_mode): New function. - (aarch64_preferred_simd_mode): Turn into wrapper. - (aarch64_output_scalar_simd_mov_immediate): New function. - * config/aarch64/aarch64-protos.h: Add prototype for above. - -2013-06-04 Ian Bolton - - * config/aarch64/aarch64.c (simd_immediate_info): Remove - element_char member. - (sizetochar): Return signed char. - (aarch64_simd_valid_immediate): Remove elchar and other - unnecessary variables. - (aarch64_output_simd_mov_immediate): Take rtx instead of &rtx. - Calculate element_char as required. - * config/aarch64/aarch64-protos.h: Update and move prototype - for aarch64_output_simd_mov_immediate. - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): - Update arguments. - -2013-06-04 Ian Bolton - - * config/aarch64/aarch64.c (simd_immediate_info): Struct to hold - information completed by aarch64_simd_valid_immediate. - (aarch64_legitimate_constant_p): Update arguments. - (aarch64_simd_valid_immediate): Work with struct rather than many - pointers. - (aarch64_simd_scalar_immediate_valid_for_move): Update arguments. - (aarch64_simd_make_constant): Update arguments. - (aarch64_output_simd_mov_immediate): Work with struct rather than - many pointers. Output immediate directly rather than as operand. - * config/aarch64/aarch64-protos.h (aarch64_simd_valid_immediate): - Update prototype. - * config/aarch64/constraints.md (Dn): Update arguments. - -2013-06-04 Ian Bolton - - * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): No - longer static. - (aarch64_simd_immediate_valid_for_move): Remove. - (aarch64_simd_scalar_immediate_valid_for_move): Update call. - (aarch64_simd_make_constant): Update call. - (aarch64_output_simd_mov_immediate): Update call. - * config/aarch64/aarch64-protos.h (aarch64_simd_valid_immediate): - Add prototype. - * config/aarch64/constraints.md (Dn): Update call. - -2013-06-04 Ian Bolton - - * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Change - return type to bool for prototype. - (aarch64_legitimate_constant_p): Check for true instead of not -1. - (aarch64_simd_valid_immediate): Fix up each return to return a bool. - (aarch64_simd_immediate_valid_for_move): Update retval for bool. - -2013-06-04 Catherine Moore - - * config/mips/mips.opt (meva): New. - * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_eva. - (ASM_SPEC): Handle -meva. - * doc/invoke.texi (meva): Document. - -2013-06-04 Alan Modra - - * config/rs6000/rs6000.c (output_toc): Correct little-endian float - constant output. - -2013-06-04 Kyrylo Tkachov - - * rtl.def: Add extra fourth optional field to define_cond_exec. - * gensupport.c (process_one_cond_exec): Process attributes from - define_cond_exec. - * doc/md.texi: Document fourth field in define_cond_exec. - -2013-06-04 Eric Botcazou - - * expmed.c (extract_bit_field_1): In the larger-than-a-word case, factor - out the processing order as in store_bit_field_1. - -2013-06-04 Jan Hubicka - - PR middle-end/57500 - * cgraphunit.c (cgraph_process_same_body_aliases): Create - non-VAR_DECL node if it does not exist yet. - -2013-06-03 Richard Sandiford - - * config.gcc (mipsisa64sr71k-*-elf*, mipsisa64sb1-*-elf*) - (mipsisa64sb1el-*-elf*, mips64-*-elf*, mips64el-*-elf*) - (mips64orion-*-elf*, mips64orionel-*-elf*): Remove - target_cpu_default setting. - -2013-06-03 Teresa Johnson - - * dumpfile.c (opt_info_switch_p): Change -fopt-info - default to -fopt-info=optimized instead of all. - * doc/invoke.texi: Ditto. - * tree-vectorizer.c (vectorize_loops): Emit loop vectorization - success under MSG_OPTIMIZED_LOCATIONS, and use dump_printf_loc. - (execute_vect_slp): Emit BB vectorization success under - MSG_OPTIMIZED_LOCATIONS. - * tree-vect-slp.c (vect_slp_transform_bb): Change - MSG_OPTIMIZED_LOCATIONS to MSG_NOTE. - * tree-vect-loop.c (vect_transform_loop): Ditto. - -2013-06-03 Jason Merrill - - PR c++/57415 - * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): - Use TARGET_EXPR for C++. - -2013-06-03 Jakub Jelinek - - PR rtl-optimization/57268 - * sched-deps.c (sched_analyze_2): Don't flush_pending_lists - if DEBUG_INSN_P (insn). - - Reapply - 2013-05-31 Dinar Temirbulatov - - PR rtl-optimization/57268 - * sched-deps.c (sched_analyze_2): Flush dependence lists if - the sum of the read and write lists exceeds MAX_PENDING_LIST_LENGTH. - -2013-06-03 Yuri Rumyantsev - - * config/i386/i386.c (ix86_lea_outperforms): Fix formatting. - (ix86_avoid_lea_for_addr): Likewise. - (exact_dependency_1): Likewise. - (ix86_adjust_cost): Likewise. - (swap_top_of_ready_list): Fix formatting and !reload_completed check - removed. - (do_reorder_for_imul): Fix typo, formatting and - !reload_completed check removed. - (ix86_sched_reorder): Fix typo and formatting. - (fold_builtin_cpu): Move M_INTEL_SLM at the end of processor types - list. - -2013-06-03 Sofiane Naci - - * config/aarch64/aarch64.md (*movdi_aarch64): Define "simd" attribute. - -2013-06-03 Eric Botcazou - - * varasm.c (output_constant) : Minor formatting tweak. - : Likewise. - : Likewise. - -2013-06-01 Janus Weil - Mikael Morin - - * configure.ac: Add AC_HEADER_TIOCGWINSZ macro. - * config.in: Regenerated. - * configure: Regenerated. - -2013-06-01 Jan Hubicka - - PR middle-end/57366 - * cgraphunit.c (compile): When weakref is not supported, - set up transparent aliases before final output pass. - * varasm.c (assemble_alias): Do not try to do it here. - -2013-06-01 Jan Hubicka - - PR middle-end/57467 - * passes.c (for_per_function): Skip unanalyzed functions. - -2013-06-01 Jan Hubicka - - * lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Rename to ... - (lto_symtab_merge_symbols_1): ... this one. - (lto_symtab_merge_cgraph_nodes): Rename to ... - (lto_symtab_merge_symbols): ... this one; simplify. - * cgraph.c (same_body_aliases_done): Rename to ... - (cpp_implicit_aliases_done): ... this one. - (cgraph_create_function_alias): Update. - (cgraph_same_body_alias): Update. - (dump_cgraph_node): Remove alias dumping; simplify thunk dumping. - (verify_edge_corresponds_to_fndecl): Simplify. - * cgraph.h (symtab_node_base): Add cpp_implicit_alias, alias_target. - (cgraph_node): Remove same_body_alias. - (varpool_node): Remove alias_of and extra_name_alias. - (same_body_aliases_done): Rename to .. - (cpp_implicit_aliases_done): ... this one. - (symtab_alias_ultimate_target): Add default parameter. - (symtab_resolve_alias): New function. - (fixup_same_cpp_alias_visibility): Declare. - (cgraph_function_node): Add default parameter. - (cgraph_node_asm_name): Likewise. - (cgraph_function_or_thunk_node): Add default parameter; do - not ICE when it is NULL. - (varpool_variable_node): Likewise. - * tree-emutls.c (create_emultls_var): Update. - (ipa_lower_emutls): Update. - * cgraphunit.c (cgraph_decide_is_function_needed): Update. - (cgraph_reset_node): Reset alias info. - (cgraph_finalize_function): Update. - (fixup_same_cpp_alias_visibility): Move to symtab.c. - (analyze_function): Simplify. - (cgraph_process_same_body_aliases): Simplify. - (analyze_functions): Fixup same body aliases. - (handle_alias_pairs): Simplify. - (assemble_thunk): Update. - (assemble_thunks_and_aliases): Update. - (output_weakrefs): Rewrite. - * lto-cgraph.c (lto_output_node): Rewrite alias handling. - (lto_output_varpool_node): Likewise. - (compute_ltrans_boundary): Remve assert. - (get_alias_symbol): New functoin. - (input_node): Rewrite alias handling. - (input_varpool_node): Likewise. - * ipa-pure-const.c (propagate_pure_const): Fix formating. - * ipa.c (process_references): Handle weakrefs correctly. - (symtab_remove_unreachable_nodes): Likewise. - * trans-mem.c (get_cg_data): Update. - (ipa_tm_create_version_alias): Update. - (ipa_tm_execute): Update. - * symtab.c (dump_symtab_base): Dump aliases. - (verify_symtab_base): Verify aliases. - (symtab_node_availability): New function. - (symtab_alias_ultimate_target): Simplify. - (fixup_same_cpp_alias_visibility): Move here from cgraphunit.c; - handle all the fixup cases. - (symtab_resolve_alias): New function. - * passes.c (ipa_write_summaries): Handle weakrefs. - * varpool.c (varpool_analyze_node): Simplify. - (assemble_aliases): Update. - (varpool_create_variable_alias): Simplify. - (varpool_extra_name_alias): Simplify. - * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Rename to... - (lto_symtab_merge_symbols): ... this one. - -2013-06-01 Dinar Temirbulatov - - Revert - PR rtl-optimization/57268 - * sched-deps.c (sched_analyze_2): Flush dependence lists if - the sum of the read and write lists exceeds MAX_PENDING_LIST_LENGTH. - -2013-06-01 Tobias Burnus - - Partially reverted: - 2013-05-31 Tobias Burnus - - PR middle-end/57073 - * tree-ssa-math-opts.c (execute_cse_sincos): Move check - further up. - -2013-05-31 Dinar Temirbulatov - - PR rtl-optimization/57268 - * sched-deps.c (sched_analyze_2): Flush dependence lists if - the sum of the read and write lists exceeds MAX_PENDING_LIST_LENGTH. - -2013-05-31 Eric Botcazou - - * config/rs6000/predicates.md (rs6000_cbranch_operator): Accept some - unordered comparison operators when -fno-trapping-math is in effect - on the e500. - * config/rs6000/rs6000.c (rs6000_generate_compare): Remove dead code - and implement unordered comparison operators properly on the e500. - -2013-05-31 Eric Botcazou - - * simplify-rtx.c (simplify_byte_swapping_operation): Use proper macro - for constant scalar integers. - (simplify_relational_operation_1): Likewise. - -2013-05-31 Segher Boessenkool - - * config/rs6000/rs6000-opts.h (enum processor_type): Reorder. - * config/rs6000/rs6000.md (cpu): Reorder. Split long line. - Fix comment. - -2013-05-31 Yuri Rumyantsev - Igor Zamyatin - - Silvermont (SLM) architecture performance tuning. - * config/i386/i386.h (enum ix86_tune_indices): Add - X86_TUNE_SPLIT_MEM_OPND_FOR_FP_CONVERTS. - (TARGET_SPLIT_MEM_OPND_FOR_FP_CONVERTS): New define. - - * config/i386/i386.c (initial_ix86_tune_features) - : Initialize. - (ix86_lea_outperforms): Handle Silvermont tuning. - (ix86_avoid_lea_for_add): Add new argument to ix86_lea_outperforms - call. - (ix86_use_lea_for_mov): Likewise. - (ix86_avoid_lea_for_addr): Likewise. - (ix86_lea_for_add_ok): Likewise. - (exact_dependency_1): New function. - (exact_store_load_dependency): Likewise. - (ix86_adjust_cost): Handle Silvermont tuning. - (do_reoder_for_imul): Likewise. - (swap_top_of_ready_list): New function. - (ix86_sched_reorder): Changed to handle Silvermont tuning. - - * config/i386/i386.md (peepholes that split memory operand in fp - converts): New. - -2013-05-31 Marcus Shawcroft - - * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): - Remove un-necessary braces. - -2013-05-31 Marcus Shawcroft - - * config/aarch64/aarch64.c (aarch64_classify_symbol): - Use SYMBOL_TINY_ABSOLUTE for AARCH64_CMODEL_TINY_PIC. - -2013-05-31 Tobias Burnus - - PR middle-end/57073 - * tree-ssa-math-opts.c (execute_cse_sincos): Move check further up. - -2013-05-31 Kyrylo Tkachov - - PR target/56315 - * config/arm/arm.c (const_ok_for_dimode_op): Handle IOR. - * config/arm/arm.md (*iordi3_insn): Change to insn_and_split. - * config/arm/neon.md (iordi3_neon): Remove. - (neon_vorr): Generate iordi3 instead of iordi3_neon. - * config/arm/predicates.md (imm_for_neon_logic_operand): - Move to earlier in the file. - (neon_logic_op2): Likewise. - (arm_iordi_operand_neon): New predicate. - -2013-05-31 Richard Biener - - PR tree-optimization/57478 - PR tree-optimization/57453 - * tree-vect-slp.c (vect_bb_slp_scalar_cost): Uses in PHI nodes - are life as well. - -2013-05-31 Kaushik Phatak - - * config/rl78/rl78.md (mulqi3,mulhi3): New define_expands. - (*mulqi3_rl78,*mulhi3_rl78,*mulhi3_g13): New define_insns. - -2013-05-30 Tobias Burnus - Thomas Koenig - - PR middle-end/57073 - * tree-ssa-math-opts.c (execute_cse_sincos): Optimize - powi (-1.0, k) to (k & 1) ? -1.0 : 1.0. - -2013-05-30 Steven Bosscher - - * rtlanal.c (tablejump_p): Expect table and label to be adjacent. - -2013-05-30 Vladimir Makarov - - * target.def (register_usage_leveling_p): New hook. - * targhooks.c (default_register_usage_leveling_p): New. - * targhooks.h (default_register_usage_leveling_p): New prototype. - * lra-assigns.c (register_usage_leveling_p): Use the hook. - * doc/tm.texi.in (TARGET_REGISTER_USAGE_LEVELING_P): New hook. - * doc/tm.texi: Update. - * config/i386/i386.c (TARGET_REGISTER_USAGE_LEVELING_P): Define. - -2013-05-30 Ian Bolton - - * config/aarch64/aarch64.md (insv): New define_expand. - (*insv_reg): New define_insn. - -2013-05-30 Joern Rennecke - - PR rtl-optimization/57439 - * postreload.c (move2add_valid_value_p): Check that we have - a zero subreg_regno_offset when accessing the register in - the requested mode. - -2013-05-30 Yuri Rumyantsev - Igor Zamyatin - - Silvermont (SLM) architecture pipeline model, tuning and - insn selection. - * config.gcc: Add slm config options and target. - - * config/i386/slm.md: New. - - * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe. - - * config/i386/i386-c.c (ix86_target_macros_internal): New case - PROCESSOR_SLM. - (ix86_target_macros_internal): Likewise. - - * config/i386/i386.c (slm_cost): New cost. - (m_SLM): New macro flag. - (initial_ix86_tune_features): Set m_SLM. - (x86_accumulate_outgoing_args): Likewise. - (x86_arch_always_fancy_math_387): Likewise. - (processor_target_table): Add slm cost. - (cpu_names): Add slm cpu name. - (x86_option_override_internal): Set SLM ISA. - (ix86_issue_rate): New case PROCESSOR_SLM. - (ia32_multipass_dfa_lookahead): Likewise. - (fold_builtin_cpu): Add slm. - - * config/i386/i386.h (TARGET_SLM): New target macro. - (target_cpu_default): Add TARGET_CPU_DEFAULT_slm. - (processor_type): Add PROCESSOR_SLM. - - * config/i386/i386.md (cpu): Add new value "slm". - (slm.md): Include slm.md. - -2013-05-30 Bernd Schmidt - Zhenqiang Chen - - * config/arm/arm-protos.h: Add and update function protos. - * config/arm/arm.c (use_simple_return_p): New added. - (thumb2_expand_return): Check simple_return flag. - * config/arm/arm.md: Add simple_return and conditional simple_return. - * config/arm/iterators.md: Add iterator for return and simple_return. - -2013-05-30 Zhenqiang Chen - - * config/arm/arm.c (arm_add_cfa_adjust_cfa_note): New added. - (arm_emit_multi_reg_pop): Add REG_CFA_ADJUST_CFA notes. - (arm_emit_vfp_multi_reg_pop): Likewise. - (thumb2_emit_ldrd_pop): Likewise. - (arm_expand_epilogue): Add misc REG_CFA notes. - (arm_unwind_emit): Skip REG_CFA_ADJUST_CFA and REG_CFA_RESTORE. - -2013-05-29 Lawrence Crowl - - * config/arm/t-arm: Update for below. - - * config/arm/arm.c (arm_libcall_uses_aapcs_base::libcall_htab): - Change type to hash_table. Update dependent calls and types. - - * config/i386/t-cygming: Update for below. - - * config/i386/t-interix: Update for below. - - * config/i386/winnt.c (i386_pe_section_type_flags::htab): - Change type to hash_table. Update dependent calls and types. - (i386_find_on_wrapper_list::wrappers): Likewise. - - * config/ia64/t-ia64: Update for below. - - * config/ia64/ia64.c (bundle_state_table): - Change type to hash_table. Update dependent calls and types. - - * config/mips/mips.c (mips_reorg_process_insns::htab): - Change type to hash_table. Update dependent calls and types. - - * config/sol2.c (solaris_comdat_htab): - Change type to hash_table. Update dependent calls and types. - - * config/t-sol2: Update for above. - -2013-05-29 Teresa Johnson - - * passes.c (dump_passes): Use FOR_EACH_FUNCTION since - functions are not yet marked as defined. - -2013-05-29 Michael Meissner - Pat Haugen - Peter Bergner - - * config/rs6000/vector.md (VEC_I): Add support for new power8 V2DI - instructions. - (VEC_A): Likewise. - (VEC_C): Likewise. - (vrotl3): Likewise. - (vashl3): Likewise. - (vlshr3): Likewise. - (vashr3): Likewise. - - * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add - support for power8 V2DI builtins. - - * config/rs6000/rs6000-builtin.def (abs_v2di): Add support for - power8 V2DI builtins. - (vupkhsw): Likewise. - (vupklsw): Likewise. - (vaddudm): Likewise. - (vminsd): Likewise. - (vmaxsd): Likewise. - (vminud): Likewise. - (vmaxud): Likewise. - (vpkudum): Likewise. - (vpksdss): Likewise. - (vpkudus): Likewise. - (vpksdus): Likewise. - (vrld): Likewise. - (vsld): Likewise. - (vsrd): Likewise. - (vsrad): Likewise. - (vsubudm): Likewise. - (vcmpequd): Likewise. - (vcmpgtsd): Likewise. - (vcmpgtud): Likewise. - (vcmpequd_p): Likewise. - (vcmpgtsd_p): Likewise. - (vcmpgtud_p): Likewise. - (vupkhsw): Likewise. - (vupklsw): Likewise. - (vaddudm): Likewise. - (vmaxsd): Likewise. - (vmaxud): Likewise. - (vminsd): Likewise. - (vminud): Likewise. - (vpksdss): Likewise. - (vpksdus): Likewise. - (vpkudum): Likewise. - (vpkudus): Likewise. - (vrld): Likewise. - (vsld): Likewise. - (vsrad): Likewise. - (vsrd): Likewise. - (vsubudm): Likewise. - - * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add - support for power8 V2DI instructions. - - * config/rs6000/altivec.md (UNSPEC_VPKUHUM): Add support for - power8 V2DI instructions. Combine pack and unpack insns to use an - iterator for each mode. Check whether a particular mode supports - Altivec instructions instead of just checking TARGET_ALTIVEC. - (UNSPEC_VPKUWUM): Likewise. - (UNSPEC_VPKSHSS): Likewise. - (UNSPEC_VPKSWSS): Likewise. - (UNSPEC_VPKUHUS): Likewise. - (UNSPEC_VPKSHUS): Likewise. - (UNSPEC_VPKUWUS): Likewise. - (UNSPEC_VPKSWUS): Likewise. - (UNSPEC_VPACK_SIGN_SIGN_SAT): Likewise. - (UNSPEC_VPACK_SIGN_UNS_SAT): Likewise. - (UNSPEC_VPACK_UNS_UNS_SAT): Likewise. - (UNSPEC_VPACK_UNS_UNS_MOD): Likewise. - (UNSPEC_VUPKHSB): Likewise. - (UNSPEC_VUNPACK_HI_SIGN): Likewise. - (UNSPEC_VUNPACK_LO_SIGN): Likewise. - (UNSPEC_VUPKHSH): Likewise. - (UNSPEC_VUPKLSB): Likewise. - (UNSPEC_VUPKLSH): Likewise. - (VI2): Likewise. - (VI_char): Likewise. - (VI_scalar): Likewise. - (VI_unit): Likewise. - (VP): Likewise. - (VP_small): Likewise. - (VP_small_lc): Likewise. - (VU_char): Likewise. - (add3): Likewise. - (altivec_vaddcuw): Likewise. - (altivec_vaddus): Likewise. - (altivec_vaddss): Likewise. - (sub3): Likewise. - (altivec_vsubcuw): Likewise. - (altivec_vsubus): Likewise. - (altivec_vsubss): Likewise. - (altivec_vavgs): Likewise. - (altivec_vcmpbfp): Likewise. - (altivec_eq): Likewise. - (altivec_gt): Likewise. - (altivec_gtu): Likewise. - (umax3): Likewise. - (smax3): Likewise. - (umin3): Likewise. - (smin3): Likewise. - (altivec_vpkuhum): Likewise. - (altivec_vpkuwum): Likewise. - (altivec_vpkshss): Likewise. - (altivec_vpkswss): Likewise. - (altivec_vpkuhus): Likewise. - (altivec_vpkshus): Likewise. - (altivec_vpkuwus): Likewise. - (altivec_vpkswus): Likewise. - (altivec_vpksss): Likewise. - (altivec_vpksus): Likewise. - (altivec_vpkuus): Likewise. - (altivec_vpkuum): Likewise. - (altivec_vrl): Likewise. - (altivec_vsl): Likewise. - (altivec_vsr): Likewise. - (altivec_vsra): Likewise. - (altivec_vsldoi_): Likewise. - (altivec_vupkhsb): Likewise. - (altivec_vupkhs): Likewise. - (altivec_vupkls): Likewise. - (altivec_vupkhsh): Likewise. - (altivec_vupklsb): Likewise. - (altivec_vupklsh): Likewise. - (altivec_vcmpequ_p): Likewise. - (altivec_vcmpgts_p): Likewise. - (altivec_vcmpgtu_p): Likewise. - (abs2): Likewise. - (vec_unpacks_hi_v16qi): Likewise. - (vec_unpacks_hi_v8hi): Likewise. - (vec_unpacks_lo_v16qi): Likewise. - (vec_unpacks_hi_): Likewise. - (vec_unpacks_lo_v8hi): Likewise. - (vec_unpacks_lo_): Likewise. - (vec_pack_trunc_v8h): Likewise. - (vec_pack_trunc_v4si): Likewise. - (vec_pack_trunc_): Likewise. - - * config/rs6000/altivec.h (vec_vaddudm): Add defines for power8 - V2DI builtins. - (vec_vmaxsd): Likewise. - (vec_vmaxud): Likewise. - (vec_vminsd): Likewise. - (vec_vminud): Likewise. - (vec_vpksdss): Likewise. - (vec_vpksdus): Likewise. - (vec_vpkudum): Likewise. - (vec_vpkudus): Likewise. - (vec_vrld): Likewise. - (vec_vsld): Likewise. - (vec_vsrad): Likewise. - (vec_vsrd): Likewise. - (vec_vsubudm): Likewise. - (vec_vupkhsw): Likewise. - (vec_vupklsw): Likewise. - -2013-05-29 Jan Hubicka - - * cgraph.h (symtab_node_base): Add definition, alias and analyzed - flags; reorder rest of fields in more consistent way. - (varpool_node): Remove analyzed, finalized and alias. - (cgraph_ndoe): Likewise. - (symtab_alias_ultimate_target): New function. - (cgraph_function_node): Move offline. - (cgraph_reset_node): Declare. - (cgraph_comdat_can_be_unshared_p): Remove. - (varpool_remove_initializer): Declare. - (varpool_first_defined_variable, varpool_next_defined_variable - cgraph_first_defined_function, cgraph_next_defined_function): Update. - (cgraph_function_with_gimple_body_p): Update. - (varpool_all_refs_explicit_p): Update. - (symtab_alias_target): New function. - (cgraph_alias_aliased_node, varpool_alias_aliased_node): Rename to ... - (cgraph_alias_target, varpool_alias_target): .. this one; simplify. - (cgraph_function_or_thunk_node): Simplify using - symtab_alias_ultimate_target. - (varpool_variable_node): Likewise. - * cgraph.c (cgraph_create_function_alias): Update. - (cgraph_add_thunk): Update. - (cgraph_remove_node): Update. - (dump_cgraph_node): Do not dump removed flags. - (cgraph_function_body_availability): Update. - (cgraph_propagate_frequency): Update. - (verify_cgraph_node): Check sanity of local flag. - (cgraph_function_node): Move here from cgraph.h; revamp for - cgraph_function_or_thunk_node. - * lto-symtab.c (lto_varpool_replace_node): Update. - (lto_symtab_resolve_can_prevail_p): Update. - (lto_symtab_merge_cgraph_nodes): Update. - * ipa-cp.c (determine_versionability, initialize_node_lattices, - propagate_constants_accross_call, devirtualization_time_bonus, - ipcp_propagate_stage): Update. - * tree-emutls.c (create_emultls_var, ipa_lower_emutls): Update. - * ipa-inline-transform.c (clone_inlined_nodes, - preserve_function_body_p): Update. - * ipa-reference.c (propagate): Update. - (write_node_summary_p): Update. - * toplev.c (wrapup_global_declaration_2): Update. - * cgraphunit.c (cgraph_analyze_function): Rename to ... - (analyze_function) ... this one. - (cgraph_process_new_functions): Update. - (cgraph_reset_node): Export. - (cgraph_finalize_function): Update. - (cgraph_add_new_function): Update. - (process_function_and_variable_attributes): Update. - (varpool_finalize_decl): Update. - (symbol_finalized): Remove. - (symbol_finalized_and_needed): Rename to ... - (symbol_defined_and_needed): ... update. - (cgraph_analyze_functions): Update. - (handle_alias_pairs): Update. - (mark_functions_to_output): Update. - (assemble_thunk): Update. - (output_in_order): Update. - (output_weakrefs): Update. - (finalize_compilation_unit): Update. - * lto-cgraph.c (reachable_from_other_partition_p, lto_output_node, - lto_output_varpool_node, compute_ltrans_boundary, input_overwrite_node, - input_node, input_varpool_node): Update. - * dbxout.c (dbxout_expand_expr): Update. - * cgraphclones.c (cgraph_clone_node): Update. - (cgraph_copy_node_for_versioning): Update. - (cgraph_materialize_clone): Update. - (cgraph_materialize_all_clones): Update. - * ipa-pure-const.c (analyze_function, pure_const_write_summary, - propagate_pure_const, propagate_nothrow): Update. - * lto-streamer-out.c (lto_output, write_symbol): Update. - * ipa-utils.c (ipa_reverse_postorder): Update. - * ipa-inline.c (can_inline_edge_p): Update. - (update_caller_keys, ipa_inline): Update. - * dwarf2out.c (reference_to_unused, - premark_types_used_by_global_vars_helper): Update. - * tree-eh.c (tree_could_trap_p): Update. - * ipa-split.c (consider_split, execute_split_functions): Update. - * ipa.c (cgraph_non_local_node_p_1, cgraph_local_node_p, - has_addr_references_p): Update; move ahead in file for better - readability. - (process_references): Simplify. - (symtab_remove_unreachable_nodes): Update; cleanup way function/var - bodies are removed. - (cgraph_comdat_can_be_unshared_p): Make static. - (cgraph_externally_visible_p): Update. - (varpool_externally_visible_p): Update. - (function_and_variable_visibility): Update. - * trans-mem.c (get_cg_data, ipa_tm_mayenterirr_function, - ipa_tm_mark_force_output_node): Update. - * ipa-inline-analysis.c (dump_inline_summary, initialize_inline_failed, - estimate_edge_devirt_benefit, inline_generate_summary, - inline_write_summary): Update. - * gimple-fold.c (can_refer_decl_in_current_unit_p): Update. - * ipa-prop.c (ipa_compute_jump_functions): Update. - (ipa_print_node_params, ipa_prop_read_section, - ipa_update_after_lto_read, read_replacements_section): Update. - * varasm.c (mark_decl_referenced): Update. - (assemble_alias, dump_tm_clone_pairs): Update. - * tree-inline.c (copy_bb): Update. - (estimate_num_insns, optimize_inline_calls, tree_function_versioning): - Update. - * symtab.c (dump_symtab_base): Print new flags. - (verify_symtab_base): Verify new flags. - (symtab_alias_ultimate_target): New function. - * tree-ssa-structalias.c (get_constraint_for_ssa_var, - create_variable_info_for, associate_varinfo_to_alias, ipa_pta_execute): - Update. - * passes.c (ipa_write_summaries, ipa_write_optimization_summaries): - Update. - * i386.c (ix86_get_function_versions_dispatcher, - ix86_generate_version_dispatcher_body): Update. - (fold_builtin_cpu): Use varpool_add_new_variable. - * varpool.c (varpool_remove_initializer): Break out from ... - (varpool_remove_node): ... this one. - (dump_varpool_node, varpool_node_for_asm, - cgraph_variable_initializer_availability, varpool_analyze_node, - varpool_assemble_decl, varpool_remove_unreferenced_decls, - varpool_finalize_named_section_flags, varpool_create_variable_alias): - Update. - -2013-05-29 Jan Hubicka - - * passes.c (init_optimization_passes): Move OMP expansion into lowering. - -2013-05-29 Easwaran Raman - - PR tree-optimization/57442 - * tree-ssa-reassoc.c (appears_later_in_bb): Return correct value - when control exits the main loop. - -2013-05-29 Sandeep Kumar Singh - - * rx/rx.h (TARGET_CPU_CPP_BUILTINS): Add macros for RX100, RX200, - and RX600. - * rx/rx.opt: Add macro for rx100 with string rx100 and value RX100. - * rx/rx-opts.h (rx_cpu_types): Add new cpu type rx100. - * rx/t-rx: Add rx100 under multi library matches option for nofpu - option. - -2013-05-29 Bill Schmidt - - PR tree-optimization/57441 - * gimple-ssa-strength-reduction.c (analyze_candidates_and_replace): - Don't limit size of incr_vec to number of candidates. - -2013-05-29 Steve Ellcey - - * config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add micromips - and mips16 directories. - * config/mips/t-mti-linux (MULTILIB_OPTIONS): Add micromips and mips16. - (MULTILIB_DIRNAMES): Ditto. - (MULTILIB_EXCEPTIONS): Add new exceptions. - * config/mips/t-mti-elf (MULTILIB_OPTIONS): Add micromips. - (MULTILIB_DIRNAMES): Ditto. - (MULTILIB_EXCEPTIONS): Add new exceptions. - -2012-05-29 Chris Schlumberger-Socha - Marcus Shawcroft - - * config/aarch64/aarch64-protos.h (aarch64_symbol_type): Define - SYMBOL_TINY_ABSOLUTE. - * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Handle - SYMBOL_TINY_ABSOLUTE. - (aarch64_expand_mov_immediate): Likewise. - (aarch64_classify_symbol): Likewise. - (aarch64_mov_operand_p): Remove ATTRIBUTE_UNUSED. - Permit SYMBOL_TINY_ABSOLUTE. - * config/aarch64/predicates.md (aarch64_mov_operand): Permit CONST. - -2013-05-29 Chris Schlumberger-Socha - Marcus Shawcroft - - * config/aarch64/aarch64.c (aarch64_classify_symbol): Remove comment. - Refactor if/switch. Replace gcc_assert with if. - -2013-05-29 Ganesh Gopalasubramanian - - * config/i386/i386.c (initial_ix86_tune_features): Enable - FP Reassociation for AMD bdver1 and bdver2. - -2013-05-29 Martin Jambor - - * tree-cfg.c (verify_expr): Verify that BIT_FIELD_REF, REALPART_EXPR - and IMAGPART_EXPR do not occur within other handled_components. - -2013-05-29 Richard Biener - - * tree-vect-slp.c (vect_bb_slp_scalar_cost): Guard vinfo - access on whether the use is in the BB we currently try to - vectorize. - (vect_bb_vectorization_profitable_p): Pass the BB we currently - vectorize to vect_bb_slp_scalar_cost. - -2013-05-29 Richard Biener - - * tree-vect-slp.c (vect_bb_slp_scalar_cost): New function - computing scalar cost offsetted by stmts that are kept live - by scalar uses. - (vect_bb_vectorization_profitable_p): Use vect_bb_slp_scalar_cost - for computation of scalar cost. - -2013-05-28 Steve Ellcey - - * config/mips/mips-cpus.def (mips32r2): Change processor type. - -2013-05-28 Balaji V. Iyer - - * doc/extend.texi (C Extensions): Added documentation about Cilk Plus - array notation built-in reduction functions. - * doc/passes.texi (Passes): Added documentation about changes done - for Cilk Plus. - * doc/invoke.texi (C Dialect Options): Added documentation about - the -fcilkplus flag. - * Makefile.in (C_COMMON_OBJS): Added c-family/array-notation-common.o. - (BUILTINS_DEF): Depend on cilkplus.def. - * builtins.def: Include cilkplus.def. Define DEF_CILKPLUS_BUILTIN. - * builtin-types.def: Define BT_FN_INT_PTR_PTR_PTR. - * cilkplus.def: New file. - -2013-05-28 Joern Rennecke - - PR rtl-optimization/57439 - * postreload.c (move2add_use_add2_insn): Use gen_lowpart_common. - -2013-05-28 Easwaran Raman - - PR tree-optimization/57337 - * tree-ssa-reassoc.c (appears_later_in_bb): New function. - (find_insert_point): Correctly identify the insertion point - when two statements with the same UID is compared. - -2013-05-28 Richard Biener - - PR tree-optimization/56787 - * tree-vect-data-refs.c (vect_analyze_data_refs): Drop clobbers - from the list of data references. - * tree-vect-loop.c (vect_determine_vectorization_factor): Skip - clobbers. - (vect_analyze_loop_operations): Likewise. - (vect_transform_loop): Remove clobbers. - -2013-05-28 Martin Jambor - - * tree-cfg.c (verify_expr): Verify that BIT_FIELD_REFs, IMAGPART_EXPRs - and REALPART_EXPRs have scalar type. - -2013-05-28 Richard Biener - - PR tree-optimization/57411 - * tree-ssa-copy.c (may_propagate_copy): Cannot propagate - virtual operands. - * tree-ssa-dom.c (eliminate_const_or_copy): Special-case - virtual operand propagation. - -2013-05-28 Eric Botcazou - - * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): Use %g0 as - destination register for bmasksi_vis. - (vector_init_bshuffle): Likewise. - * config/sparc/sparc.md (vec_perm_constv8qi): Likewise. - -2013-05-28 Eric Botcazou - - * doc/invoke.texi (SPARC Options): Document -mfix-ut699. - * builtins.c (expand_builtin_mathfn) : Try to widen the - mode if the instruction isn't available in the original mode. - * config/sparc/sparc.opt (mfix-ut699): New option. - * config/sparc/sparc.md (muldf3_extend): Disable if -mfix-ut699. - (divdf3): Turn into expander. - (divdf3_nofix): New insn. - (divdf3_fix): Likewise. - (divsf3): Disable if -mfix-ut699. - (sqrtdf2): Turn into expander. - (sqrtdf2_nofix): New insn. - (sqrtdf2_fix): Likewise. - (sqrtsf2): Disable if -mfix-ut699. - -2013-05-27 Richard Biener - - PR middle-end/57412 - * omp-low.c (expand_omp_atomic_pipeline): Use the correct latch - block for the new loop. - -2013-05-27 Richard Biener - - PR tree-optimization/57343 - * tree-ssa-loop-niter.c (number_of_iterations_ne_max): Do not - use multiple_of_p if not TYPE_OVERFLOW_UNDEFINED. - (number_of_iterations_cond): Do not build the folded tree. - -2013-05-27 Richard Biener - - Revert - PR middle-end/57381 - * fold-const.c (operand_equal_p): Compare FIELD_DECLs with - OEP_CONSTANT_ADDRESS_OF retained. - - PR tree-optimization/57417 - * tree-ssa-sccvn.c (vn_reference_fold_indirect): Fix test - for unchanged base. - (set_ssa_val_to): Compare addresses using - get_addr_base_and_unit_offset. - -2013-05-27 Joern Rennecke - - PR rtl-optimization/56833 - * postreload.c (move2add_record_mode): New function. - (move2add_record_sym_value, move2add_valid_value_p): Likewise. - (move2add_use_add2_insn): Use move2add_record_sym_value. - (move2add_use_add3_insn): Likewise. - (reload_cse_move2add): Use move2add_valid_value_p and - move2add_record_mode. Invalidate call-clobbered and REG_INC - affected regs by setting reg_mode to VOIDmode. - (move2add_note_store): Don't pretend the inside of a SUBREG is - the actual destination. Invalidate single/leading registers by - setting reg_mode to VOIDmode. - Use move2add_record_sym_value, move2add_valid_value_p and - move2add_record_mode. - -2013-05-27 Richard Biener - - PR tree-optimization/57396 - * tree-affine.c (double_int_constant_multiple_p): Properly - return false for val == 0 and div != 0. - -2013-05-25 Richard Sandiford - - * config/mips/mips.h: Use #elif in preprocessor conditions. - -2013-05-25 Richard Sandiford - - PR target/53916 - * config/mips/constraints.md (kl): New constraint. - * config/mips/mips.md (divmod4, udivmod4): Delete. - (divmod4_internal): Rename to divmod4. Use "kl" as the - constraint for operand 0. Split after CSE for MIPS16. Emit a move - from LO for MIPS16. - (udivmod4_internal): Likewise udivmod4. - -2013-05-25 Richard Sandiford - - PR target/55777 - * config/mips/mips.c (mips_can_inline_p): New function. - (TARGET_CAN_INLINE_P): Define. - -2013-05-25 Steven Bosscher - - * sched-int.h (ds_t, dw_t): Make unsigned int. - Fix documentation that describes how all the ds_t bits are used. - Reserve the last bit for delayed-branch scheduling. - (BITS_PER_DEP_STATUS): Move to ds_t typedef. - (BITS_PER_DEP_WEAK): Fix definition and documentation. - (gen_dep_weak_1): Remove prototype. - * sched-deps.c (get_dep_weak_1): Make static. - * target.def (speculate_insn, needs_block_p, gen_spec_check, - get_insn_spec_ds, get_insn_checked_ds): Adjust hook prototypes. - * doc/tm.texi: Regenerate. - * config/ia64/ia64.c (ia64_needs_block_p): Update prototype. - -2013-05-24 Steven Bosscher - - PR debug/56950 - * haifa-sched.c (sched_extend_bb): Ignore DEBUG_INSNs. - -2013-05-24 Nathan Sidwell - Sandra Loosemore - - * config.gcc (powerpc-*): Allow native for with-cpu. - -2013-05-24 Jeff Law - - PR tree-optimization/57124 - * tree-vrp.c (simplify_cond_using_ranges): Only simplify a - conversion feeding a condition if the range has an overflow - if -fstrict-overflow. Add warnings for when we do make the - transformation. - -2013-05-24 Dehao Chen - - * tree-cfg.c (locus_discrim_map): Fix the typo. - (locus_discrim_hasher): Likewise. - (locus_discrim_hasher::hash): Likewise. - (locus_discrim_hasher::equal): Likewise. - -2013-05-24 Martin Jambor - - PR tree-optimization/57294 - * cgraph.h (ipa_record_stmt_references): Declare. - * cgraphbuild.c (ipa_record_stmt_references): New function. - (build_cgraph_edges): Use ipa_record_stmt_references. - (rebuild_cgraph_edges): Likewise. - (cgraph_rebuild_references): Likewise. - * ipa-prop.c (ipa_modify_call_arguments): Discard references - associated with the old statement and build references from the - newly built statements. - * ipa-ref.c (ipa_remove_stmt_references): New function. - * ipa-ref.h (ipa_remove_stmt_references): Declare. - -2013-05-24 Vladimir Makarov - - * lra-constraints.c (emit_spill_move): Use smaller mode for - mem-mem moves. - (check_and_process_move): Consider mem-reg moves for secondary - too. - (curr_insn_transform): Don't lose insns emitted before for - secondary memory moves. - (inherit_in_ebb): Mark defined reg. Add usage only if it is not a - reg set up in the current insn. - -2013-05-24 Dehao Chen - - * tree-cfg.c (locus_descrim_hasher::hash): Change discriminator - hash function. - (locus_descrim_hasher::equal): Likewise. - (build_gimple_cfg): New discriminator assignment algorithm. - (make_edges): Likewise. - (next_discriminator_for_locus): Likewise. - (same_line_p): Likewise. - (assign_discriminators): Likewise. - (make_cond_expr_edges): Likewise. - (make_gimple_switch_edges): Likewise. - (make_goto_expr_edges): Likewise. - (make_gimple_asm_edges): Likewise. - -2013-05-24 Ian Bolton - - * config/aarch64/aarch64.c (aarch64_print_operand): Change the - X format specifier to only display bottom 16 bits. - * config/aarch64/aarch64.md (insv_imm): Allow any size of - immediate to match for operand 2, since it will be masked. - -2013-05-24 Richard Biener - - PR tree-optimization/57287 - * tree-ssa-uninit.c (compute_uninit_opnds_pos): Disregard - all SSA names that occur in abnormal PHIs. - -2013-05-24 Alexander Ivchenko - - PR tree-ssa/57385 - * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Check - that index is not negative. - -2013-05-24 Eric Botcazou - - PR rtl-optimization/55177 - * simplify-rtx.c (simplify_unary_operation_1) : Deal with BSWAP. - (simplify_byte_swapping_operation): New. - (simplify_binary_operation_1): Call it for AND, IOR and XOR. - (simplify_relational_operation_1): Deal with BSWAP. - -2013-05-23 Richard Henderson - - PR target/56742 - * config/i386/i386.c (ix86_seh_fixup_eh_fallthru): New. - (ix86_reorg): Call it. - -2013-05-23 Uros Bizjak - - PR target/57379 - * config/alpha/alpha.md (unspec): Add UNSPEC_XFLT_COMPARE. - * config/alpha/alpha.c (alpha_emit_xfloating_compare): Construct - REG_EQUAL note as UNSPEC_XFLT_COMPARE unspec. - -2013-05-23 Christian Bruel - - PR debug/57351 - * config/arm/arm.c (arm_dwarf_register_span): Do not use dbx number. - -2013-05-23 Chris Schlumberger-Socha - Marcus Shawcroft - - * config/aarch64/aarch64.md (*movdi_aarch64): Replace Usa with S. - * config/aarch64/constraints.md (Usa): Remove. - * doc/md.texi (AArch64 Usa): Remove. - -2013-05-23 Chris Schlumberger-Socha - Marcus Shawcroft - - * config/aarch64/aarch64-protos.h (aarch64_mov_operand_p): Define. - * config/aarch64/aarch64.c (aarch64_mov_operand_p): Define. - * config/aarch64/predicates.md (aarch64_const_address): Remove. - (aarch64_mov_operand): Use aarch64_mov_operand_p. - -2013-05-23 Vidya Praveen - - * config/aarch64/aarch64-simd.md (clzv4si2): Support for CLZ - instruction (AdvSIMD). - * config/aarch64/aarch64-builtins.c - (aarch64_builtin_vectorized_function): Handler for BUILT_IN_CLZ. - * config/aarch64/aarch-simd-builtins.def: Entry for CLZ. - -2013-05-23 Martin Jambor - - PR middle-end/57347 - * tree.h (contains_bitfld_component_ref_p): Declare. - * tree-sra.c (contains_bitfld_comp_ref_p): Move... - * tree.c (contains_bitfld_component_ref_p): ...here. Adjust its - caller. - * ipa-prop.c (determine_known_aggregate_parts): Check that LHS does - not access a bit-field. Assert all final offsets are byte-aligned. - -2013-05-23 Richard Biener - - PR tree-optimization/57380 - * tree-ssa-phiprop.c (propagate_with_phi): Do not require at - least one invariant or re-used load. - * passes.c (init_optimization_passes): Move pass_phiprop before - pass_forwprop. - -2013-05-23 James Greenhalgh - - * config/aarch64/aarch64-simd.md - (aarch64_cmdi): Add clobber of CC_REGNUM to unsplit pattern. - -2013-05-23 Richard Biener - - PR middle-end/57381 - * fold-const.c (operand_equal_p): Compare FIELD_DECLs with - OEP_CONSTANT_ADDRESS_OF retained. - -2013-05-23 Jakub Jelinek - - PR middle-end/57344 - * expmed.c (store_split_bit_field): If op0 is a REG or SUBREG of a REG, - don't lower unit. Handle unit not being always BITS_PER_WORD. - -2013-05-23 Richard Biener - - PR rtl-optimization/57341 - * ira.c (validate_equiv_mem_from_store): Use anti_dependence - instead of true_dependence. - -2013-05-22 David Malcolm - - * bb-reorder.c (branch_threshold): Make const. - (exec_threshold): Ditto. - -2013-05-22 Michael Meissner - Pat Haugen - Peter Bergner - - * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions): Add - documentation for the power8 crypto builtins. - - * config/rs6000/t-rs6000 (MD_INCLUDES): Add crypto.md. - - * config/rs6000/rs6000-builtin.def (BU_P8V_AV_1): Add support - macros for defining power8 builtin functions. - (BU_P8V_AV_2): Likewise. - (BU_P8V_AV_P): Likewise. - (BU_P8V_VSX_1): Likewise. - (BU_P8V_OVERLOAD_1): Likewise. - (BU_P8V_OVERLOAD_2): Likewise. - (BU_CRYPTO_1): Likewise. - (BU_CRYPTO_2): Likewise. - (BU_CRYPTO_3): Likewise. - (BU_CRYPTO_OVERLOAD_1): Likewise. - (BU_CRYPTO_OVERLOAD_2): Likewise. - (XSCVSPDP): Fix typo, point to the correct instruction. - (VCIPHER): Add power8 crypto builtins. - (VCIPHERLAST): Likewise. - (VNCIPHER): Likewise. - (VNCIPHERLAST): Likewise. - (VPMSUMB): Likewise. - (VPMSUMH): Likewise. - (VPMSUMW): Likewise. - (VPERMXOR_V2DI): Likewise. - (VPERMXOR_V4SI: Likewise. - (VPERMXOR_V8HI: Likewise. - (VPERMXOR_V16QI: Likewise. - (VSHASIGMAW): Likewise. - (VSHASIGMAD): Likewise. - (VPMSUM): Likewise. - (VPERMXOR): Likewise. - (VSHASIGMA): Likewise. - - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define - __CRYPTO__ if the crypto instructions are available. - (altivec_overloaded_builtins): Add support for overloaded power8 - builtins. - - * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add - support for power8 crypto builtins. - (builtin_function_type): Likewise. - (altivec_init_builtins): Add support for builtins that take vector - long long (V2DI) arguments. - - * config/rs6000/crypto.md: New file, define power8 crypto - instructions. - -2013-05-22 Michael Meissner - Pat Haugen - Peter Bergner - - * doc/invoke.texi (Option Summary): Add power8 options. - (RS/6000 and PowerPC Options): Likewise. - - * doc/md.texi (PowerPC and IBM RS6000 constraints): Update to use - constraints.md instead of rs6000.h. Reorder w* constraints. Add - wm, wn, wr documentation. - - * config/rs6000/constraints.md (wm): New constraint for VSX - registers if direct move instructions are enabled. - (wn): New constraint for no registers. - (wq): New constraint for quad word even GPR registers. - (wr): New constraint if 64-bit instructions are enabled. - (wv): New constraint if power8 vector instructions are enabled. - (wQ): New constraint for quad word memory locations. - - * config/rs6000/predicates.md (const_0_to_15_operand): New - constraint for 0..15 for crypto instructions. - (gpc_reg_operand): If VSX allow registers in VSX registers as well - as GPR and floating point registers. - (int_reg_operand): New predicate to match only GPR registers. - (base_reg_operand): New predicate to match base registers. - (quad_int_reg_operand): New predicate to match even GPR registers - for quad memory operations. - (vsx_reg_or_cint_operand): New predicate to allow vector logical - operations in both GPR and VSX registers. - (quad_memory_operand): New predicate for quad memory operations. - (reg_or_indexed_operand): New predicate for direct move support. - - * config/rs6000/rs6000-cpus.def (ISA_2_5_MASKS_EMBEDDED): - Inherit from ISA_2_4_MASKS, not ISA_2_2_MASKS. - (ISA_2_7_MASKS_SERVER): New mask for ISA 2.07 (i.e. power8). - (POWERPC_MASKS): Add power8 options. - (power8 cpu): Use ISA_2_7_MASKS_SERVER instead of specifying the - various options. - - * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): - Define _ARCH_PWR8 and __POWER8_VECTOR__ for power8. - - * config/rs6000/rs6000.opt (-mvsx-timode): Add documentation. - (-mpower8-fusion): New power8 options. - (-mpower8-fusion-sign): Likewise. - (-mpower8-vector): Likewise. - (-mcrypto): Likewise. - (-mdirect-move): Likewise. - (-mquad-memory): Likewise. - - * config/rs6000/rs6000.c (power8_cost): Initial definition for power8. - (rs6000_hard_regno_mode_ok): Make PTImode only match even GPR - registers. - (rs6000_debug_reg_print): Print the base register class if -mdebug=reg. - (rs6000_debug_vector_unit): Add p8_vector. - (rs6000_debug_reg_global): If -mdebug=reg, print power8 constraint - definitions. Also print fusion state. - (rs6000_init_hard_regno_mode_ok): Set up power8 constraints. - (rs6000_builtin_mask_calculate): Add power8 builtin support. - (rs6000_option_override_internal): Add support for power8. - (rs6000_common_init_builtins): Add debugging for skipped builtins - if -mdebug=builtin. - (rs6000_adjust_cost): Add power8 support. - (rs6000_issue_rate): Likewise. - (insn_must_be_first_in_group): Likewise. - (insn_must_be_last_in_group): Likewise. - (force_new_group): Likewise. - (rs6000_register_move_cost): Likewise. - (rs6000_opt_masks): Likewise. - - * config/rs6000/rs6000.h (ASM_CPU_POWER8_SPEC): If we don't have a - power8 capable assembler, default to power7 options. - (TARGET_DIRECT_MOVE): Likewise. - (TARGET_CRYPTO): Likewise. - (TARGET_P8_VECTOR): Likewise. - (VECTOR_UNIT_P8_VECTOR_P): Define power8 vector support. - (VECTOR_UNIT_VSX_OR_P8_VECTOR_P): Likewise. - (VECTOR_MEM_P8_VECTOR_P): Likewise. - (VECTOR_MEM_VSX_OR_P8_VECTOR_P): Likewise. - (VECTOR_MEM_ALTIVEC_OR_VSX_P): Likewise. - (TARGET_XSCVDPSPN): Likewise. - (TARGET_XSCVSPDPN): Likewsie. - (TARGET_SYNC_HI_QI): Likewise. - (TARGET_SYNC_TI): Likewise. - (MASK_CRYPTO): Likewise. - (MASK_DIRECT_MOVE): Likewise. - (MASK_P8_FUSION): Likewise. - (MASK_P8_VECTOR): Likewise. - (REG_ALLOC_ORDER): Move fr13 to be lower in priority so that the TFmode - temporary used by some of the direct move instructions to get two FP - temporary registers does not force creation of a stack frame. - (VLOGICAL_REGNO_P): Allow vector logical operations in GPRs. - (MODES_TIEABLE_P): Move the VSX tests above the Altivec tests so - that any VSX registers are tieable, even if they are also an - Altivec vector mode. - (r6000_reg_class_enum): Add wm, wr, wv constraints. - (RS6000_BTM_P8_VECTOR): Power8 builtin support. - (RS6000_BTM_CRYPTO): Likewise. - (RS6000_BTM_COMMON): Likewise. - - * config/rs6000/rs6000.md (cpu attribute): Add power8. - * config/rs6000/rs6000-opts.h (PROCESSOR_POWER8): Likewise. - (enum rs6000_vector): Add power8 vector support. - -2013-05-22 Ramana Radhakrishnan - - PR target/19599 - PR target/57340 - * config/arm/arm.c (any_sibcall_uses_r3): Rename to .. - (any_sibcall_could_use_r3): this and handle indirect calls. - (arm_get_frame_offsets): Rename use of any_sibcall_uses_r3. - -2013-05-22 Bill Schmidt - - * config/rs6000/rs6000.h (MALLOC_ABI_ALIGNMENT): New #define. - -2013-05-22 Richard Biener - - PR middle-end/57349 - * profile.c (branch_prob): Do not split blocks that are - abnormally receiving from ECF_RETURNS_TWICE functions. - -2013-05-22 Richard Sandiford - - * recog.c (offsettable_address_addr_space_p): Fix calculation of - address mode. Move pointer mode initialization to the same place. - -2013-05-22 Michael Zolotukhin - - * read-rtl.c (copy_rtx_for_iterators): Continue applying iterators - while it has any effect. - -2013-05-21 Easwaran Raman - - PR tree-optimization/57322 - * tree-ssa-reassoc.c (build_and_add_sum): If a BB is empty, set the - UID of the statement added to the BB to be 1. - -2013-05-21 Jakub Jelinek - - PR tree-optimization/57331 - * tree-vrp.c (simplify_cond_using_ranges): Don't optimize comparison - of conversion from pointer type to integral type with integer. - -2013-05-21 Martin Jambor - - PR lto/57289 - * ipa-prop.c (ipa_read_node_info): Process param_used and - controlled_uses in the same order as when writing. - -2013-05-21 Magnus Granberg - - PR plugins/56754 - * Makefile.in (PLUGIN_HEADERS): Add $(TARGET_H). - -2013-05-21 Richard Biener - - PR tree-optimization/57318 - * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Do not - estimate stmts with side-effects as likely eliminated. - -2013-05-21 Richard Biener - - PR tree-optimization/57330 - * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Properly - preserve the call stmts fntype. - -2013-05-21 Richard Biener - - PR tree-optimization/57303 - * tree-ssa-sink.c (statement_sink_location): Improve killing - stmt detection and properly handle self-assignments. - -2013-05-21 Christian Bruel - - * dwarf2out.c (multiple_reg_loc_descriptor): Use dbx_reg_number for - spanning registers. LEAF_REG_REMAP is supported only for contiguous - registers. Set register size out of the PARALLEL loop. - -2013-05-20 Oleg Endo - - PR target/56547 - * config/sh/sh.md (fmasf4): Remove empty constraints strings. - (*fmasf4, *fmasf4_media): New insns. - -2013-05-19 Richard Sandiford - - * config/mips/mips.h (BASE_INSN_LENGTH, NOP_INSN_LENGTH): New macros. - * config/mips/mips.c (mips_symbol_insns, mips_address_insns) - (mips_const_insns, mips_split_const_insns, mips_load_store_insns) - (mips_idiv_insns): Update the comments to say that the returned - instruction counts are in units of BASE_INSN_LENGTH. - (mips_adjust_insn_length): Multiply the mips_load_label_num_insns - by BASE_INSN_LENGTH rather than 4. Add the jump separately, - using 2 rather than 4 as the length of indirect MIPS16 and - microMIPS jumps. Use NOP_INSN_LENGTH rather than 4 as the - length of a NOP. Don't divide MIPS16 lengths by 2. - (mips16_split_long_branches): Assume a branch is long if the - length is greater than 4 rather than 8. - * config/mips/mips.md (length): Give MIPS16 lengths directly, - rather than multiplying them by 2. Multiply instruction counts - by BASE_INSN_LENGTH rather than 4. - (*jump_mips16, tls_get_tp_mips16_) - (*tls_get_tp_mips16_call_): Divide lengths by 2. - -2013-05-19 Richard Sandiford - - * config/mips/mips.md (extended_mips16): Remove branch case. - (length): Remove duplicated extended_mips16 test. - -2013-05-19 Richard Sandiford - - * config/mips/t-sde: Don't build 64-bit microMIPS multilibs. - -2013-05-18 Richard Sandiford - - * recog.h (Recog_data): Rename to... - (recog_data_d): ...this. - (recog_data): Update accordingly. - * recog.c (recog_data): Likewise. - * reload.c (save_recog_data): Likewise. - * config/picochip/picochip.c (picochip_saved_recog_data): Likewise. - (picochip_save_recog_data, picochip_restore_recog_data): Likewise. - -2013-05-17 Julian Brown - - * gcse.c (compute_ld_motion_mems): If a non-simple MEM is - found in a REG_EQUAL note, invalidate it. - -2013-05-17 Easwaran Raman - - * tree-ssa-reassoc.c (find_insert_point): New function. - (insert_stmt_after): Likewise. - (get_def_stmt): Likewise. - (ensure_ops_are_available): Likewise. - (not_dominated_by): Likewise. - (rewrite_expr_tree): Do not move statements beyond what is - necessary. Remove call to swap_ops_for_binary_stmt... - (reassociate_bb): ... and move it here. - (build_and_add_sum): Assign UIDs for new statements. - (linearize_expr): Likewise. - (do_reassoc): Renumber gimple statement UIDs. - -2013-05-17 Jan Hubicka - - * lto-symtab.c (lto_symtab_merge_cgraph_nodes): Resolve cross module - weakrefs. - * cgraph.c (dump_cgraph_node): Do not ice on unresolved alias. - * cgraphunit.c (handle_alias_pairs): Store target of unresolved - weakrefs. - (output_weakrefs): Update. - -2013-05-17 Po-Chun Chang - Martin Jambor - - PR middle-end/57276 - * ipa-cp.c (cgraph_edge_brings_all_agg_vals_for_node): Break when a - value that corresponds to the given aggval is found in values vector. - -2013-05-17 Uros Bizjak - - * config/i386/driver-i386.c (host_detect_local_cpu): Pass mmx, 3dnow, - sse, sse2, sse3, ssse3 and sse4a flags to options. - -2013-05-17 David Malcolm - - * gengtype-state.c: (s_expr_writer): New class, to handle - prettifying of output layout of s-expressions. - (state_writer): New class, to write out gtype.state. - (state_written_type_count): Move this variable into member data of - state_writer. - (s_expr_writer::s_expr_writer): New code: constructor for new class - (state_writer::state_writer(): ditto - (s_expr_writer::write_new_line): New function - (s_expr_writer::write_any_indent): ditto - (s_expr_writer::begin_s_expr): ditto - (s_expr_writer::end_s_expr): ditto - (write_state_fileloc): convert to method of state_writer... - (state_writer:: write_state_fileloc): ...and use methods of - s_expr_writer to write indentation into the gtype.state output file - to visually represent the hierarchical structure of the list - structures - (write_state_fields): ditto, renaming to... - (state_writer::write_state_fields) - (write_state_a_string): ditto, renaming to... - (state_writer::write_state_a_string) - (write_state_string_option): ditto, renaming to... - (state_writer::write_state_string_option) - (write_state_type_option): ditto, renaming to... - (state_writer::write_state_type_option) - (write_state_nested_option): ditto, renaming to... - (state_writer::write_state_nested_option) - (write_state_option): ditto, renaming to... - (state_writer::write_state_option) - (write_state_options): ditto, renaming to... - (state_writer::write_state_options) - (write_state_lang_bitmap): ditto, renaming to... - (state_writer::write_state_lang_bitmap) - (write_state_version): ditto, renaming to... - (state_writer::write_state_version) - (write_state_scalar_type): ditto, renaming to... - (state_writer::write_state_scalar_type) - (write_state_string_type): ditto, renaming to... - (state_writer::write_state_string_type) - (write_state_undefined_type): ditto, renaming to... - (state_writer::write_state_undefined_type) - (write_state_struct_union_type): ditto, renaming to... - (state_writer::write_state_struct_union_type) - (write_state_struct_type): ditto, renaming to... - (state_writer::write_state_struct_type) - (write_state_user_struct_type): ditto, renaming to... - (state_writer::write_state_user_struct_type) - (write_state_lang_struct_type): ditto, renaming to... - (state_writer::write_state_lang_struct_type) - (write_state_param_struct_type): ditto, renaming to... - (state_writer::write_state_param_struct_type) - (write_state_pointer_type): ditto, renaming to... - (state_writer::write_state_pointer_type) - (write_state_array_type): ditto, renaming to... - (state_writer::write_state_array_type) - (write_state_gc_used): ditto, renaming to... - (state_writer::write_state_gc_used) - (write_state_common_type_content): ditto, renaming to... - (state_writer::write_state_common_type_content) - (write_state_type): ditto, renaming to... - (state_writer::write_state_type) - (write_state_pair_list): ditto, renaming to... - (state_writer::write_state_pair_list) - (write_state_pair): ditto, renaming to... - (state_writer::write_state_pair) - (write_state_typedefs): ditto, renaming to... - (state_writer::write_state_typedefs) - (write_state_structures): ditto, renaming to... - (state_writer::write_state_structures) - (write_state_param_structs): ditto, renaming to... - (state_writer::write_state_param_structs) - (write_state_variables): ditto, renaming to... - (state_writer::write_state_variables) - (write_state_srcdir): ditto, renaming to... - (state_writer::write_state_srcdir) - (write_state_files_list): ditto, renaming to... - (state_writer::write_state_files_list) - (write_state_languages): ditto, renaming to... - (state_writer::write_state_languages) - (write_state): create a state_writer instance and use it when - writing out the state file - -2013-05-17 Mike Stump - - PR rtl-optimization/57304 - * web.c (union_match_dups): Ensure that DF_REF_LOC exists before - accessing DF_REF_REAL_LOC. - -2013-05-17 Jakub Jelinek - - PR rtl-optimization/57281 - PR rtl-optimization/57300 - * config/i386/i386.md (extendsidi2_1 dead reg splitter): Remove. - (extendsidi2_1 peephole2s): Add instead 2 new peephole2s, that undo - what the other splitter did if the registers are dead. - -2013-05-17 Richard Biener - - * tree-ssa-alias.c (stmt_kills_ref_p_1): Properly compare - MEM_REF offsets. - -2013-05-17 Jakub Jelinek - - * gcc.c (SANITIZER_SPEC): Reject -fsanitize=address -fsanitize=thread - linking. - -2013-05-17 Marek Polacek - - * tree-ssa-strlen.c (handle_char_store): Don't invalidate cached - length when doing non-zero store of storing '\0' to '\0'. - -2013-05-17 Jakub Jelinek - - * tree-vect-patterns.c (vect_recog_rotate_pattern): For - vect_external_def oprnd1 with loop_vinfo, try to emit - optional cast, negation and and stmts on the loop preheader - edge instead of into the pattern def seq. - - PR tree-optimization/57051 - * fold-const.c (const_binop) : Fix BYTES_BIG_ENDIAN handling. - -2013-05-16 Nick Clifton - - * config/rl78/rl78.c (rl78_attribute_table): Add naked. - (rl78_is_naked_func): New function. - (rl78_expand_prologue): Skip prologue generation for naked functions. - (rl78_expand_epilogue): Skip epilogue generation for naked functions. - * doc/extend.texi (naked): Add RL78 to the list of processors - that supports this attribute. - -2013-05-16 Jeff Law - - * Makefile.in (tree-switch-conversion.o): Depend on $(OPTABS_H). - -2013-05-16 Uros Bizjak - - * config/i386/driver-i386.c (host_detect_local_cpu): Determine - cache parameters using detect_caches_amd also for CYRIX, - NSC and TM2 signatures. - -2013-05-16 Uros Bizjak - Dzianis Kahanovich - - PR target/45359 - PR target/46396 - * config/i386/driver-i386.c (host_detect_local_cpu): Detect - VIA/Centaur processors and determine their cache parameters - using detect_caches_amd. - -2013-05-16 Teresa Johnson - - * cfgrtl.c (verify_hot_cold_block_grouping): Return err. - (rtl_verify_edges): New function. - (rtl_verify_bb_insns): Ditto. - (rtl_verify_bb_pointers): Ditto. - (rtl_verify_bb_insn_chain): Ditto. - (rtl_verify_fallthru): Ditto. - (rtl_verify_bb_layout): Ditto. - (rtl_verify_flow_info_1): Outline checks into new functions. - (rtl_verify_flow_info): Ditto. - -2013-05-16 Steve Ellcey - - * cfghooks.c (copy_bbs): Add update_dominance argument. - * cfghooks.h (copy_bbs): Update prototype. - * tree-cfg.c (gimple_duplicate_sese_region): - Add update_dominance argument. - * tree-flow.h (gimple_duplicate_sese_region): Update prototype. - * tree-ssa-loop-ch.c (copy_loop_headers): Update - gimple_duplicate_sese_region call. - * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): - Update copy_bbs call. - * cfgloopmanip.c (duplicate_loop_to_header_edge): Ditto. - * trans-mem.c (ipa_uninstrument_transaction): Ditto. - -2013-05-16 Jakub Jelinek - - * tree-vectorizer.h (NUM_PATTERNS): Increment. - * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add - vect_recog_rotate_pattern. - (vect_recog_rotate_pattern): New function. - -2013-05-16 Jason Merrill - - * Makefile.in (LLINKER): New variable. - (mostlyclean): Remove link mutex. - * configure.ac: Handle --enable-link-mutex. - * lock-and-run.sh: New script. - -2013-05-16 Ramana Radhakrishnan - - PR target/19599 - * config/arm/arm.c (arm_function_ok_for_sibcall): Add check - for NULL decl. - -2013-05-16 Rainer Orth - - * reorg.c (link_cc0_insns): Wrap in #ifdef HAVE_cc0. - -2013-05-16 Greta Yorsh - - * config/arm/arm-protos.h (gen_movmem_ldrd_strd): New declaration. - * config/arm/arm.c (next_consecutive_mem): New function. - (gen_movmem_ldrd_strd): Likewise. - * config/arm/arm.md (movmemqi): Update condition and code. - (unaligned_loaddi, unaligned_storedi): New patterns. - -2013-05-16 Rainer Orth - - * config.gcc: Obsolete *-*-solaris2.9*. - * doc/install.texi (Specific, *-*-solaris2*): Document it. - -2013-05-16 Richard Biener - - * passes.c (init_optimization_passes): Move pass_parallelize_loops - earlier, after GRAPHITE transforms and IV canonicalization. - -2013-05-16 Jakub Jelinek - - * omp-low.c (extract_omp_for_data): For collapsed loops, - if at least one of the loops is known at compile time to - iterate zero times, set count to 0. - (expand_omp_regimplify_p): New function. - (expand_omp_for_generic): For collapsed loops, if at least - one of the loops isn't known to iterate at least once, - add runtime check with setting count to 0. - (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): - For unsigned types if it isn't known at compile time that - the loop will iterate at least once, add runtime check to bypass - the whole loop if initial condition isn't true. - -2013-05-16 Nathan Sidwell - - * varasm.c (default_use_anchors_for_symbol_p): Use decl_replaceable_p. - -2013-05-16 Marc Glisse - - PR middle-end/57286 - * fold-const.c (fold_ternary_loc) : Disable some - transformations to avoid an infinite loop. - -2013-05-16 Marek Polacek - - * tree-scalar-evolution.c (scev_const_prop): Add more dumps. - -2013-05-15 Leif Ekblad - - * config/i386/i386.c (ix86_decompose_address): Use - DEFAULT_TLS_SEG_REG to access TLS segment register. - * config/i386/i386.h (DEFAULT_TLS_SEG_REG): New define. - * config/i386/rdos.h (DEFAULT_TLS_SEG_REG): Ditto. - (TARGET_TLS_DIRECT_SEG_REFS_DEFAULT): Ditto. - -2013-05-15 Richard Sandiford - - PR target/57260 - * config/mips/mips.c (mips_function_ok_for_sibcall): Don't allow - sibling calls to functions that would normally be lazily bound, - unless $gp is call-clobbered. - -2013-05-15 Uros Bizjak - - * config/i386/i386.c (ix86_option_override_internal): Update - processor_alias_table for missing PTA_PRFCHW and PTA_FXSR flags. Add - PTA_POPCNT to corei7 entry. Do not enable SSE prefetch on - non-SSE 3dNow! targets. Enable TARGET_PRFCHW for TARGET_3DNOW targets. - * config/i386/i386.md (prefetch): Enable for TARGET_PRFCHW instead - of TARGET_3DNOW. - (*prefetch_3dnow): Enable for TARGET_PRFCHW only. - -2013-05-15 Andreas Schwab - - * config/m68k/m68k.md (*rotlhi3_lowpart, *rotlqi3_lowpart): Name - for rotlhi3+1 and rotlqi3+1, resp. Fix reference to non-existing - third operand. - -2013-05-15 Teresa Johnson - - * loop-unroll.c (report_unroll_peel): Check decision before - emitting unroll/peel message. - -2013-05-15 Teresa Johnson - - * function.h (has_bb_partition): New rtl_data flag. - (bb_reorder_complete): Ditto. - * cfgcleanup.c (try_crossjump_to_edge): Check for has_bb_partition - instead of flag_reorder_blocks_and_partition. - * cfgrtl.c (verify_hot_cold_block_grouping): Moved from bb-reorder.c, - with some enhancements. - (rtl_verify_flow_info_1): Call verify_hot_cold_block_grouping. - * bb-reorder.c (connect_traces): Check for has_bb_partition - instead of flag_reorder_blocks_and_partition. - (verify_hot_cold_block_grouping): Moved to cfgrtl.c. - (reorder_basic_blocks): Set bb_reorder_complete flag, remove call to - verify_hot_cold_block_grouping. - (partition_hot_cold_basic_blocks): Set has_bb_partition. - -2013-05-15 Ramana Radhakrishnan - - PR target/19599 - * config/arm/predicates.md (call_insn_operand): New predicate. - * config/arm/constraints.md ("Cs", "Ss"): New constraints. - * config/arm/arm.md (*call_insn, *call_value_insn): Match only - if insn is not a tail call. - (*sibcall_insn, *sibcall_value_insn): Adjust for tailcalling through - registers. - * config/arm/arm.h (enum reg_class): New caller save register class. - (REG_CLASS_NAMES): Likewise. - (REG_CLASS_CONTENTS): Likewise. - * config/arm/arm.c (arm_function_ok_for_sibcall): Allow tailcalling - without decls. - -2013-05-15 Richard Biener - - * tree-vect-loop.c (vect_transform_loop): Use MSG_NOTE instead - of MSG_OPTIMIZED_LOCATIONS. - * tree-vect-slp.c (vect_make_slp_decision): Likewise. - (vect_slp_transform_bb): Indicate location in MSG_OPTIMIZED_LOCATIONS - message. - * tree-vectorizer.c (vectorize_loops): Use MSG_NOTE instead - of MSG_OPTIMIZED_LOCATIONS. - (execute_vect_slp): Likewise. - * tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): Likewise. - (vect_create_cond_for_alias_checks): Likewise. - * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise. - (vect_recog_widen_mult_pattern): Likewise. - (vect_recog_widen_sum_pattern): Likewise. - (vect_recog_over_widening_pattern): Likewise. - (vect_recog_widen_shift_pattern): Likewise. - (vect_recog_vector_vector_shift_pattern): Likewise. - (vect_recog_divmod_pattern): Likewise. - (vect_recog_mixed_size_cond_pattern): Likewise. - (vect_recog_bool_pattern): Likewise. - (vect_pattern_recog_1): Likewise. - -2013-05-15 Martin Jambor - - * ipa-prop.c (ipa_make_edge_direct_to_target): Redirect calls to - non-functions to builtin_unreachable. - * ipa-inline-transform.c (inline_call): Do not assert estimates were - correct when new direct edges were discovered. - -2013-05-15 Martin Jambor - - * ipa-prop.c (ipa_print_node_jump_functions): Print symbol order in - header, print symbol order instead of node uid, print more information - about indirect edge targets. - (ipa_make_edge_direct_to_target): Print symbol order instead of node - uids. - (ipa_make_edge_direct_to_target): Likewise. - (remove_described_reference): Likewise. - (propagate_controlled_uses): Likewise. - (ipa_print_node_params): Also print symbol order. - (ipcp_transform_function): Print symbol order instead of node uids. - * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Likewise. - (cgraph_get_create_real_symbol_node): Likewise. - * ipa-cp.c (print_lattice): Likewise. - (print_all_lattices): Likewise. - (determine_versionability): Likewise. - (initialize_node_lattices): Likewise. - (estimate_local_effects): Likewise. - (update_profiling_info): Likewise. - (create_specialized_node): Likewise. - (perhaps_add_new_callers): Likewise. - (decide_about_value): Likewise. - (decide_whether_version_node): Likewise. - (identify_dead_nodes): Likewise. - * ipa-inline-analysis.c (dump_inline_edge_summary): Likewise. - (dump_inline_summary): Likewise. - (estimate_node_size_and_time): Likewise. - (inline_analyze_function): Likewise. - * ipa-inline.c (report_inline_failed_reason): Likewise. - (want_early_inline_function_p): Likewise. - (edge_badness): Likewise. - (update_edge_key): Likewise. - (inline_small_functions): Likewise. Add dumping of order to two other - dumps. - * ipa-pure-const.c (pure_const_read_summary): Print symbol order - instead of node uids. - (propagate_pure_const): Likewise. - (propagate_pure_const): Likewise. - * ipa-utils.c (dump_cgraph_node_set): Likewise. - * lto-cgraph.c (input_node): Explicitly specify we dump uid. - * lto-symtab.c (lto_cgraph_replace_node): Print symbol order instead - of node uids. - * tree-pretty-print.c (dump_function_header): Likewise. - * tree-sra.c (convert_callers_for_node): Dump in traditional format. - Print symbol order instead of node uids. - -2013-05-15 Andreas Krebbel - - * config/s390/s390.c (s390_register_move_cost): Don't impose the - FPR<->GPR move cost penalty if ldgr/lgdr can be used. - -2013-05-15 Richard Biener - - PR tree-optimization/57275 - * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Fix - return value for fail to do runtime alias checks for gather loads. - -2013-05-15 Jan Hubicka - - PR lto/57038 - PR lto/47375 - * lto-symtab.c (lto_symtab_symbol_p): Add external symbol; - weakrefs are not external. - (lto_symtab_merge_decls): Fix thinko when dealing with - non-lto_symtab decls. - (lto_symtab_merge_cgraph_nodes): Use lto_symtab_symbol_p. - (lto_symtab_prevailing_decl): Get int sync with lto_symtab_symbol_p. - * varpool.c (dump_varpool_node): Dump more flags. - -2013-05-15 Ganesh Gopalasubramanian - - * config/i386/i386.c (processor_alias_table): Add instruction - FSGSBASE for AMD bdver3 architecture. - -2013-05-14 Jakub Jelinek - - * tree.c (warn_deprecated_use): Print file:line using locus color. - * diagnostic.c (diagnostic_report_current_module): Print file:line - and file:line:column using locus color. - -2013-05-14 Mike Stump - - * gdbinit.in: Add __null. - -2013-05-14 Mike Stump - - * recog.h: Rename struct recog_data to Recog_data. - * recog.c: Likewise. - * reload.c (can_reload_into): Likewise. - * config/picochip/picochip.c: Likewise. - -2013-05-14 Mike Stump - - * web.c (union_match_dups): Also check DF_REF_REAL_LOC. - -2013-05-14 Steven Bosscher - - * resource.h (struct resources): Remove unch_memory member. - (CLEAR_RESOURCE): Don't clear unch_memory. - * resource.c (mark_referenced_resources): Don't set it. - (mark_set_resources): Likewise. - (mark_target_live_regs): Don't clear it. - (init_resource_info): Likewise. - * reorg.c (resource_conflicts_p): Don't compare it. - (redundant_insn): Don't set it. - - * rtl.h (next_label, skip_consecutive_labels, link_cc0_insns): - Remove prototypes. - * emit-rtl.c (next_label): Remove unused function. - (skip_consecutive_labels, link_cc0_insns): Move to ... - * reorg.c (skip_consecutive_labels, link_cc0_insns): ... here, the - only place where these functions are used, and make them static. - -2013-05-14 Marc Glisse - - * fold-const.c (fold_negate_expr): Handle vectors. - (fold_truth_not_expr): Make it static. - (fold_invert_truthvalue): New static function. - (invert_truthvalue_loc): Handle vectors. Do not call - fold_truth_not_expr directly. - (fold_unary_loc) : Handle comparisons. - : Do not cast to boolean. - (fold_comparison): Handle vector constants. - (fold_binary_loc) : Remove redundant code. - (fold_ternary_loc) : Adapt more COND_EXPR optimizations. - * tree.h (fold_truth_not_expr): Remove declaration. - -2013-05-14 James Greenhalgh - - * config/aarch64/aarch64-simd.md - (aarch64_vcond_internal): Rename to... - (aarch64_vcond_internal): ...This, for integer modes. - (aarch64_vcond_internal): ...This for - float modes. Clarify all iterator modes. - (vcond): Use new name for vcond expanders. - (vcond): Likewise. - (vcondu: Likewise. - * config/aarch64/iterators.md (VDQF_COND): New. - -2013-05-14 Marc Glisse - - PR bootstrap/57266 - * fold-const.c (fold_binary_loc) : Use an unsigned - variable for the shift amount. Check that we shift by non-negative - amounts. - -2013-05-14 Chung-Lin Tang - - PR target/42017 - * config/arm/arm.h (EPILOGUE_USES): Only return true - for LR_REGNUM after epilogue_completed. - -2013-05-14 Joern Rennecke - - * config/avr/avr.c (avr_encode_section_info): Bail out if the type - is error_mark_node. - -2013-05-14 Rainer Orth - - PR target/57261 - * configure.ac (gcc_cv_ld_as_needed): Disable before Solaris 11 - and Solaris 11+/x86 with gld. - * configure: Regenerate. - -2013-05-14 Jakub Jelinek - - * expmed.c (expand_shift_1): Canonicalize rotates by - constant bitsize / 2 to bitsize - 1. - * simplify-rtx.c (simplify_binary_operation_1) : Likewise. - - Revert: - 2013-05-10 Jakub Jelinek - - * config/i386/i386.md (rotateinv): New code attr. - (*3_1, *si3_1_zext, - *qi3_1_slp): Emit rorl %eax instead of - roll $31, %eax, etc. - -2013-05-14 Richard Biener - - PR middle-end/57235 - * tree-eh.c (sink_clobbers): Give up for successors with - multiple predecessors and no virtual uses. - -2013-05-14 Eric Botcazou - - * config/sparc/sp64-elf.h (CPP_SUBTARGET_SPEC): Delete. - * config/sparc/openbsd64.h (CPP_SUBTARGET_SPEC): Likewise. - -2013-05-14 Jakub Jelinek - - PR middle-end/57251 - * expr.c (expand_expr_real_2) : Handle - the case when both op0 and op1 have VOIDmode. - -2013-05-14 Kaushik Phatak - - * config/rl78/rl78.md(mulsi3_g13): Add additional 'nop' required - in multiply-accumulate mode. - -2013-05-13 Guozhi Wei - - * dwarf2asm.c (dw2_output_indirect_constant_1): Mark new decl STATIC. - -2013-05-13 Kai Tietz - - PR target/56975 - * config/i386/cygming.h (TARGET_PECOFF): Define as true. - * config/i386/i386.h (TARGET_PECOFF): Define by default as false. - (PIC_OFFSET_TABLE_REGNUM): Use TARGET_PECOFF. - * config/i386/i386.c (ix86_option_override_internal): Likewise. - (ix86_expand_prologue): Likewise. - (ix86_expand_split_stack_prologue): Likewise. - (legitimate_pic_address_disp_p): Likewise. - (legitimize_pic_address): Likewise. - (legitimize_tls_address): Likewise. - (legitimize_pe_coff_symbol): Likewise. - (output_pic_addr_const): Likewise. - (construct_plt_address): Likewise. - (ix86_expand_call): Likewise. - (x86_output_mi_thunk): Likewise. - (x86_function_profiler): Likewise. - -2013-05-13 Sofiane Naci - - * config/aarch64/aarch64-simd.md (aarch64_simd_mov): Group - similar switch cases. - (aarch64_simd_mov): Rename to aarch64_split_simd_mov. Update. - (aarch64_simd_mov_to_low): Delete. - (aarch64_simd_mov_to_high): Delete. - (move_lo_quad_): Add w<-r alternative. - (aarch64_simd_move_hi_quad_): Likewise. - (aarch64_simd_mov_from_*): Update type attribute. - * config/aarch64/aarch64.c (aarch64_split_simd_move): Refacror switch - statement. - -2013-05-13 Jan Hubicka - - * mode-switching.c (optimize_mode_switching): Set correct RTL profile. - * config/i386/i386.c (ix86_compute_frame_layout, - ix86_expand_epilogue, emit_i387_cw_initialization, - ix86_expand_vector_move_misalign, ix86_fp_comparison_strategy, - ix86_local_alignment): Fix use of size/speed predicates. - -2013-05-13 Jakub Jelinek - - PR tree-optimization/45216 - PR tree-optimization/57157 - * tree-ssa-forwprop.c (simplify_rotate): Only recognize - the (-Y) & (B - 1) variant if OP is |. - * expmed.c (expand_shift_1): For rotations by const0_rtx just - return shifted. Use (-op1) & (prec - 1) as other_amount - instead of prec - op1. - -2013-05-13 Martin Jambor - - PR middle-end/42371 - * ipa-prop.h (IPA_UNDESCRIBED_USE): New macro. - (ipa_constant_data): New type. - (ipa_jump_func): Use ipa_constant_data to hold information about - constant jump functions. - (ipa_get_jf_constant): Adjust to jump function type changes. - (ipa_get_jf_constant_rdesc): New function. - (ipa_param_descriptor): New field controlled_uses. - (ipa_get_controlled_uses): New function. - (ipa_set_controlled_uses): Likewise. - * ipa-ref.h (ipa_find_reference): Declare. - * ipa-prop.c (ipa_cst_ref_desc): New type. - (ipa_print_node_jump_functions_for_edge): Adjust for jump function type - changes. - (ipa_set_jf_constant): Likewise. Also create reference descriptions. - New parameter cs. Adjust all callers. - (ipa_analyze_params_uses): Detect uncontrolled and controlled uses. - (remove_described_reference): New function. - (jfunc_rdesc_usable): Likewise. - (try_make_edge_direct_simple_call): Decrement controlled use count, - attempt to remove reference if it hits zero. - (combine_controlled_uses_counters): New function. - (propagate_controlled_uses): Likewise. - (ipa_propagate_indirect_call_infos): Call propagate_controlled_uses. - (ipa_edge_duplication_hook): Duplicate reference descriptions. - (ipa_print_node_params): Print described use counter. - (ipa_write_jump_function): Adjust to jump function type changes. - (ipa_read_jump_function): New parameter CS, pass it to - ipa_set_jf_constant. Adjust caller. - (ipa_write_node_info): Stream controlled use count - (ipa_read_node_info): Likewise. - * cgraph.c (cgraph_mark_address_taken_node): Bail out instead of - asserting. - * ipa-cp.c (ipcp_discover_new_direct_edges): Decrement controlled use - count. Remove cloning-added reference if it reaches zero. - * ipa-ref.c (ipa_find_reference): New function. - -2013-05-13 Ganesh Gopalasubramanian - - * config/i386/i386.c (processor_target_table): Modified default - alignment values for AMD BD and BT architectures. - -2013-05-13 Marc Glisse - - * tree-vect-generic.c (uniform_vector_p): Move ... - * tree.c (uniform_vector_p): ... here. - * tree.h (uniform_vector_p): Declare it. - * fold-const.c (fold_binary_loc) : Turn the second argument - into a scalar. - -2013-05-13 Jakub Jelinek - - PR tree-optimization/57230 - * tree-ssa-strlen.c (handle_char_store): Record length for - array store from STRING_CST. - - PR tree-optimization/57230 - * tree-ssa-strlen.c (handle_char_store): Add missing integer_zerop - check. - -2013-05-12 Joern Rennecke - - * config/epiphany/epiphany.c (epiphany_init): Check size of - NUM_MODES_FOR_MODE_SWITCHING. - (epiphany_expand_prologue): - Remove CONFIG_REGNUM initial value handling code. - (epiphany_optimize_mode_switching): Handle EPIPHANY_MSW_ENTITY_CONFIG. - (epiphany_mode_needed, epiphany_mode_entry_exit): Likewise. - (emit_set_fp_mode, epiphany_mode_after): Likewise. - (epiphany_mode_needed) : - Don't return 1 for FP_MODE_NONE. - * config/epiphany/epiphany.h (NUM_MODES_FOR_MODE_SWITCHING): - Add value for EPIPHANY_MSW_ENTITY_CONFIG. - (EPIPHANY_MSW_ENTITY_CONFIG, EPIPHANY_MSW_ENTITY_NUM): Define. - * config/epiphany/epiphany.md (save_config): New pattern. - -2013-05-12 Uros Bizjak - - * config/i386/i386.md (*zero_extendsidi2): Add *x->?r alternative. - -2013-05-10 Uros Bizjak - - * config/i386/i386.md (memory): Handle sseishft1. - * config/i386/sse.md (*vec_extractv4si): Remove memory attribute. - (*vec_extractv2di_1): Ditto. - -2013-05-10 Vladimir Makarov - - * lra-assigns.c (find_hard_regno_for): Add 1 to the cost of call - saved registers. - -2013-05-10 Sebastian Huber - - * config/arm/t-rtems-eabi: Remove mthumb/march=armv7 multilib. - Add mthumb/march=armv7-a multilib. - Add mthumb/march=armv7-r multilib. - Add mthumb/march=armv7-a/mfpu=neon/mfloat-abi=hard multilib. - -2013-05-10 Ralf Corsépius - - * config/v850/t-rtems: Add more multilibs. - -2013-05-10 Richard Biener - - PR tree-optimization/57214 - * tree-ssa-loop-ivcanon.c (propagate_constants_for_unrolling): Do - not propagate from SSA names that occur in abnormal PHI nodes. - -2013-05-10 Marc Glisse - - * stor-layout.c (element_precision): New function. - * machmode.h (element_precision): Declare it. - * tree.c (build_minus_one_cst): New function. - (element_precision): Likewise. - * tree.h (build_minus_one_cst): Declare new function. - (element_precision): Likewise. - * fold-const.c (operand_equal_p): Use element_precision. - (fold_binary_loc): Handle vector types. - * convert.c (convert_to_integer): Use element_precision. - * gimple.c (iterative_hash_canonical_type): Handle complex and vectors - separately. - -2013-05-10 Richard Sandiford - - * config/mips/mips-protos.h (m16_uimm3_b, m16_simm4_1, m16_nsimm4_1) - (m16_simm5_1, m16_nsimm5_1, m16_uimm5_4, m16_nuimm5_4, m16_simm8_1) - (m16_nsimm8_1, m16_uimm8_1, m16_nuimm8_1, m16_uimm8_m1_1, m16_uimm8_4) - (m16_nuimm8_4, m16_simm8_8, m16_nsimm8_8): Delete. - * config/mips/mips.c (m16_check_op, m16_uimm3_b, m16_simm4_1) - (m16_nsimm4_1, m16_simm5_1, m16_nsimm5_1, m16_uimm5_4, m16_nuimm5_4) - (m16_simm8_1, m16_nsimm8_1, m16_uimm8_1, m16_nuimm8_1, m16_uimm8_m1_1) - (m16_uimm8_4, m16_nuimm8_4, m16_simm8_8, m16_nsimm8_8): Delete. - * config/mips/constraints.md (Udb8, Usb5, Usb8, Usd8, Uub8, Uuw5) - (Uuw8): New constraints. - (Usb4): Move into alphabetical order. - * config/mips/predicates.md (db8_operand, sb5_operand, sb8_operand) - (sd8_operand, ub8_operand, uw8_operand): New predicates. - * config/mips/mips.md (*xor3, *xor3_mips16): Name - previously unnamed patterns. - (*add3_mips16, *xor3_mips16, *si3_mips16) - (*ashldi3_mips16, *ashrdi3_mips16, *lshrdi3_mips16) - (*slt__mips16) - (*sle__mips16): Use constraints instead - of set_attr_alternative/if_then_else. Use extended_mips16 instead - of specific lengths. - -2013-05-10 Jakub Jelinek - - * config/i386/i386.md (rotateinv): New code attr. - (*3_1, *si3_1_zext, - *qi3_1_slp): Emit rorl %eax instead of - roll $31, %eax, etc. - - PR tree-optimization/45216 - PR tree-optimization/57157 - * tree-ssa-forwprop.c (simplify_rotate): New function. - (ssa_forward_propagate_and_combine): Call it. - -2013-05-10 Richard Biener - - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Do not - disable peeling when we version for aliasing. - (vector_alignment_reachable_p): Honor explicit user alignment. - (vect_supportable_dr_alignment): Likewise. - * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Use - STMT_VINFO_LOOP_PHI_EVOLUTION_PART instead of recomputing it. - * tree-vect-loop.c (vect_transform_loop): First apply versioning, - then peeling to arrange for the cost-model check to come first. - -2013-05-10 Alan Modra - - * configure.ac (HAVE_AS_TLS): Swap powerpc64 and powerpc cases. - (HAVE_LD_LARGE_TOC): Don't mention AIX in help text. - * configure: Regenerate. - -2013-05-10 Alan Modra - - PR target/55033 - * varasm.c (default_elf_select_section): Move !DECL_P check.. - (get_named_section): ..to here before calling get_section_name. - Adjust assertion. - (default_section_type_flags): Add DECL_P check. - * config/i386/winnt.c (i386_pe_section_type_flags): Likewise. - * config/rs6000/rs6000.c (rs6000_xcoff_section_type_flags): Likewise. - -2013-05-09 Joern Rennecke - - * config/epiphany/epiphany.c (epiphany_expand_prologue): - When using gen_stack_adjust_str with a register offset, add a - REG_FRAME_RELATED_EXPR note. - -2013-05-09 Uros Bizjak - - * config/i386/sse.md (*vec_extractv4si_0_zext): New pattern. - (*vec_extractv4si_zext_mem): Ditto. - (*vec_extractv2di): Add 0->x and x->x alternatives. - * config/i386/mmx.md (*vec_extractv2si_zext_mem): New pattern. - * config/i386/i386.md (*zero_extendsidi2): Add *Yj->?r alternative. - -2013-05-09 Jason Merrill - - N3639 C++1y VLA support - * gimplify.c (gimplify_vla_decl): Don't touch an existing - DECL_VALUE_EXPR. - - * tree.c (build_constructor_va): New. - * tree.h: Declare it. - -2013-05-09 Martin Jambor - - PR lto/57084 - * gimple-fold.c (canonicalize_constructor_val): Call - cgraph_get_create_real_symbol_node instead of cgraph_get_create_node. - -2013-05-09 Jan Hubicka - Richard Biener - - PR lto/54095 - * symtab.c (symtab_make_decl_local): Do not add private names. - -2013-05-09 Jan Hubicka - - PR lto/54095 - * symtab.c (insert_to_assembler_name_hash): Handle clones. - (unlink_from_assembler_name_hash): Likewise. - (symtab_prevail_in_asm_name_hash, symtab_register_node, - symtab_unregister_node, symtab_initialize_asm_name_hash, - change_decl_assembler_name): Update. - -2013-05-09 Sofiane Naci - - * config/aarch64/aarch64.md: New movtf split. - (*movtf_aarch64): Update. - (aarch64_movdi_tilow): Handle TF modes and rename to - aarch64_movdi_low. - (aarch64_movdi_tihigh): Handle TF modes and rename to - aarch64_movdi_high - (aarch64_movtihigh_di): Handle TF modes and rename to - aarch64_movhigh_di - (aarch64_movtilow_di): Handle TF modes and rename to - aarch64_movlow_di - (aarch64_movtilow_tilow): Remove spurious whitespace. - * config/aarch64/aarch64.c (aarch64_split_128bit_move): Handle TFmode - splits. - (aarch64_print_operand): Update. - -2013-05-09 Alan Modra - - * configure.ac (HAVE_AS_TLS): Enable tests for powerpcle and - powerpc64le. - * configure: Regenerate. - -2013-05-08 Uros Bizjak - - * config/i386/mmx.md (*vec_extract* splitters): Simplify post-reload - splitter preparation statements. - * config/i386/sse.md (*vec_extract* splitters): Ditto. - (*avx_vperm_broadcast_): Use adjust_address instead of - adjust_address_nv. - -2013-05-08 Bill Schmidt - - * gimple-ssa-strength-reduction.c (count_candidates): Change - return value to int. - (analyze_candidates_and_replace): Change type of length to int. - -2013-05-08 Uros Bizjak - - * config/i386/sse.md (PEXTR_MODE, PEXTR_MODEx): Remove. - (*vec_extract): Use VI12_128 mode iterator. - (*vec_extract_mem): Ditto. - (*vec_extract*_mem splitters): Merge splitters using VI_128 mode - attribute. - -2013-05-08 Diego Novillo - - PR bootstrap/54659 - - Revert: - 2012-08-17 Diego Novillo - - PR bootstrap/54281 - * configure.ac: Add libintl.h to AC_CHECK_HEADERS list. - * config.in: Regenerate. - * configure: Regenerate. - * intl.h: Always include libintl.h if HAVE_LIBINTL_H is set. - -2013-05-08 Jan Hubicka - - PR lto/54095 - * cgraph.c (cgraph_make_node_local_1): Se unique_name. - * cgraph.h (symtab_node_base): Add unique_name. - * lto-cgraph.c (lto_output_node, lto_output_varpool_node, - input_overwrite_node, input_varpool_node): Stream unique_name. - * cgraphclones.c (cgraph_create_virtual_clone, - cgraph_function_versioning): Set unique_name. - * ipa.c (function_and_variable_visibility): Set unique_name. - -2013-05-08 Bill Schmidt - - * gimple-ssa-strength-reduction.c (find_phi_def): Revert former "fix." - (alloc_cand_and_find_basis): Restrict conditional candidate - processing to CAND_MULTs. - -2013-05-08 Jan Hubicka - - PR lto/54095 - lto-symtab.c (lto_symtab_symbol_p): New function. - (lto_symtab_resolve_can_prevail_p, lto_symtab_resolve_symbols, - lto_symtab_resolve_symbols, lto_symtab_merge_decls_2, - lto_symtab_merge_decls_1, lto_symtab_merge_cgraph_nodes_1): - Skip static symbols. - -2013-05-08 Paolo Carlini - - PR tree-optimization/57200 - * tree-ssa-loop-niter.c (do_warn_aggressive_loop_optimizations): - Only call inform if the preceding warning_at returns true. - -2013-05-07 Han Shen - - * cfgexpand.c (record_or_union_type_has_array_p): New function. - (expand_used_vars): Add logic handling '-fstack-protector-strong'. - * common.opt (fstack-protector-strong): New option. - * doc/cpp.texi (__SSP_STRONG__): New builtin "__SSP_STRONG__". - * doc/invoke.texi (Optimization Options): Document - "-fstack-protector-strong". - * gcc.c (LINK_SSP_SPEC): Add 'fstack-protector-strong'. - -2013-05-06 Steven Bosscher - - * config/mips/mips.c (mips_machine_reorg2): Return 0. - -2013-05-07 Vladimir Makarov - - * ira.c (update_equiv_regs): Add insn having equiv memory even if - it is not lhs of the insn. - (setup_reg_equiv): Remove insn having equiv memory which it is not - lhs of the insn. - * lra-constraints.c (process_address): Try to improve generation - code for address base + disp. - (lra_constraints): Make correct the code for checking insn setting - up backward equivalence. Remove insn only if it is in the init - insn list. - * lra-eliminations.c (update_reg_eliminate): Change return value. - (lra_eliminate): Use the result. - -2013-05-07 Uros Bizjak - - * config/i386/sse.md (ssescalarnummask): New mode attribute. - (PEXTR_MODE, PEXTR_MODEx): New mode iterators. - (*vec_extract): Merge from *sse4_1_pextrb_memory and - *sse4_1_pextrw_memory using PEXTR_MODE mode iterator. Handle - register target operands. - (*vec_extractv8hi_sse2): New pattern. - (*vec_extractv16qi_zext): Rename from *sse4_1_pextrb_. - (*vec_extractv8hi_zext): Rename from *sse2_pextrw_. - (*vec_extract_mem): New insn and split pattern. - -2013-05-07 Christophe Lyon - - * config/arm/arm.c (arm_asan_shadow_offset): New function. - (TARGET_ASAN_SHADOW_OFFSET): Define. - * config/arm/linux-eabi.h (ASAN_CC1_SPEC): Define. - (LINUX_OR_ANDROID_CC): Add ASAN_CC1_SPEC. - -2013-05-07 Bill Schmidt - - * gimple-ssa-strength-reduction.c (MAX_INCR_VEC_LEN): New constant. - (incr_vec_index): Return -1 if increment not found. - (create_add_on_incoming_edge): Assert if increment not found. - (record_increment): Limit number of increments recorded. - (all_phi_incrs_profitable): Return false if an increment not found. - (replace_profitable_candidates): Don't process increments that were - not recorded. - (analyze_candidates_and_replace): Limit size of incr_vec. - -2013-05-07 Richard Biener - - * calls.c (special_function_p): setjmp-like functions are leaf. - * builtins.def (BUILT_IN_SETJMP): setjmp is leaf. - * tree-inline.c (update_ssa_across_abnormal_edges): Remove assert. - -2013-05-07 Sofiane Naci - - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): call splitter. - (aarch64_simd_mov): New expander. - (aarch64_simd_mov_to_low): New instruction pattern. - (aarch64_simd_mov_to_high): Likewise. - (aarch64_simd_mov_from_low): Likewise. - (aarch64_simd_mov_from_high): Likewise. - (aarch64_dup_lane): Update. - (aarch64_dup_lanedi): New instruction pattern. - * config/aarch64/aarch64-protos.h (aarch64_split_simd_move): New prototype. - * config/aarch64/aarch64.c (aarch64_split_simd_move): New function. - -2013-05-07 Bill Schmidt - - * gimple-ssa-strength-reduction.c (lazy_create_slsr_reg): Remove. - (replace_mult_candidate): Remove unnecessary argument; remove - unnecessary parameter from call to introduce_cast_before_cand. - (replace_unconditional_candidate): Remove unnecessary parameter - from call to replace_mult_candidate. - (replace_conditional_candidate): Likewise. - (insert_initializers): Use make_temp_ssa_name. - (introduce_cast_before_cand): Remove unnecessary argument; use - make_temp_ssa_name. - (replace_one_candidate): Remove unnecessary argument; remove - unnecessary parameter from calls to introduce_cast_before_cand. - (replace_profitable_candidates): Remove unnecessary parameters - from calls to replace_one_candidate. - -2013-05-07 Bill Schmidt - - * gimple-ssa-strength-reduction.c (find_phi_def): Don't record a - phi def as possibly hiding a basis for a CAND_ADD whose operands - have been commuted in the analysis. - (alloc_cand_and_find_basis): Add parms to call to find_phi_def. - -2013-05-07 Naveen H.S - - * config/aarch64/aarch64.md - (cmp_swp__shft_): Restrict the - shift value between 0-4. - -2013-05-07 Richard Biener - - * double-int.h (rshift): New overload. - * double-int.c (rshift): New function. - * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Optimize. - (create_reference_ops_from_ref): Remove. - (vn_reference_insert): Use shared ops for constructing the - reference and copy it. - -2013-05-07 Richard Biener - - PR middle-end/57190 - * tree-eh.c (sink_clobbers): Properly propagate - SSA_NAME_OCCURS_IN_ABNORMAL_PHI. - -2013-05-07 Jakub Jelinek - - PR tree-optimization/57149 - * tree-ssa-uninit.c (uninit_undefined_value_p): New inline. - (can_skip_redundant_opnd, compute_uninit_opnds_pos, - collect_phi_def_edges, execute_late_warn_uninitialized): Use - uninit_undefined_value_p instead of ssa_undefined_value_p. - - PR debug/57184 - * expr.c (expand_expr_addr_expr_1): Handle COMPOUND_LITERAL_EXPR - for modifier == EXPAND_INITIALIZER. - -2013-05-07 Anton Blanchard - - * configure.ac (HAVE_LD_LARGE_TOC): Use correct linker emulation - for powerpc64 little endian. - * configure: Regenerate. - -2013-05-06 Graham Stott - - * expmed.c (init_expmed_rtl): Remove unused fields reg_fld, plus_fld, - mult_fld, sdiv_fld1, udiv_fld1, sdiv_32_fld1, smod_32_fld1, - wide_mult_fld1, wide_lshr_fld1, shift_fld1, shift_mult_fld1, - shift_add_fld1, shift_sub0_fld1, shift_sub1_fld1. - -2013-05-06 Graham Stott - - * gensupport.c (add_predicate_code): Also exclude SCRATCH from rtx - codes which allow non-lvalues. - -2013-05-06 Marc Glisse - - * tree.c (integer_all_onesp) : Test that both - components are all 1s. - (integer_minus_onep): New function. - * tree.h (integer_minus_onep): Declare it. - * fold-const.c (fold_binary_loc) : Test - integer_minus_onep instead of integer_all_onesp. - -2013-05-06 Oleg Endo - - PR target/52933 - * config/sh/sh.md (*cmp_div0s_0, *cmp_div0s_1, *movsicc_div0s): Add - variations of these patterns. - -2013-05-06 Uros Bizjak - - * config/i386/i386.md (isa): Add x64_sse4 member. - (enabled): Handle x64_sse4. - (*movdi_internal): Add *x->?r alternative to emit pextrq $0,%xmm,%reg - instruction for 64bit SSE4_1 targets. Update insn attributes. - (*movsi_internal): Add *x->?r alternative to emit pextrd $0,%xmm,%reg - instruction for SSE4_1 targets. Update insn attributes. - * config/i386/sse.md (*vec_extract_0): Merge - with *sse4_1_pextrd and *sse4_1_pextrq having const_0 selector. - (*vec_extractv2di_1): Merge with *sse4_1_pextrq having - const_1 selector. - (*vec_extractv4si): Rename from *sse4_1_pextrd. - (*vec_extractv4si_zext): Rename from *sse4_1_pextrd_zext. - (*vec_extract_0 splitters): Merge splitters together. - -2013-05-06 Oleg Endo - - PR target/57108 - * config/sh/sh.md (tstsi_t_zero_extract_eq): Use QIHISIDI mode iterator. - -2013-05-06 Maxim Kuznetsov - - * final.c (do_assembler_dialects): Don't handle curly braces and - vertical bar escaped by % as dialect delimiters. - (output_asm_insn): Print curly braces and vertical bar if escaped - by % and ASSEMBLER_DIALECT defined. - * doc/tm.texi.in (ASSEMBLER_DIALECT): Document new standard escapes. - * doc/tm.texi: Regenerated. - -2013-05-06 Steven Bosscher - - * config/mips/mips.c: Include tree-pass.h. - (mips_reorg): Split in pre- and post-dbr_schedule parts. - (mips_machine_reorg2): Move mips_reorg post-dbr_schedule parts here. - (pass_mips_machine_reorg2): New machine specific pass. - (insert_pass_mips_machine_reorg2): New pass plugin definition. - (mips_option_override): Register the new pass. - * rtl.h (cleanup_barriers): Remove prototype. - (dbr_schedule): Likewise. - * jump.c (cleanup_barriers): Make static. - * reorg.c (dbr_schedule): Likewise. - -2013-05-06 Richard Biener - - PR tree-optimization/57185 - * tree-parloops.c (add_field_for_reduction): Handle anonymous - SSA names properly. - -2013-05-06 Uros Bizjak - - PR target/57106 - * config/i386/i386.c (add_parameter_dependencies): Add dependence - between "first_arg" and "insn", not "last" and "insn". - -2013-05-06 Bill Schmidt - - * gimple-ssa-strength-reduction.c (slsr_process_phi): Re-enable. - (find_candidates_in_block): Re-enable slsr_process_phi. - (create_phi_basis): Fix double counting of candidate adjustment. - -2013-05-06 Richard Biener - - PR middle-end/57147 - * tree-cfg.c (gimple_purge_dead_abnormal_call_edges): If - the edge is also fallthru, preserve it and just clear the - abnormal flag. - * tree-cfgcleanup.c (remove_fallthru_edge): If the edge is - also complex, preserve that and just clear the fallthru flag. - * tree-inline.c (update_ssa_across_abnormal_edges): Also - update virtual operands. - -2013-05-06 Alan Modra - - * config/rs6000/linux.h (DEFAULT_ASM_ENDIAN): Define. - (LINK_OS_LINUX_EMUL): Use ENDIAN_SELECT. - * config/rs6000/linux64.h (DEFAULT_ASM_ENDIAN): Define. - * config/rs6000/sysv4le.h (DEFAULT_ASM_ENDIAN): Define. - (LINK_TARGET_SPEC): Use ENDIAN_SELECT. - * config/rs6000/sysv4.h (DEFAULT_ASM_ENDIAN): Define as -mbig. - -2013-05-06 Alan Modra - - * config/rs6000/sysv4.h (ENDIAN_SELECT): Define, extracted from - (ASM_SPEC): ..here. Emit DEFAULT_ASM_ENDIAN too. - (DEFAULT_ASM_ENDIAN): Define. - (CC1_SPEC, LINK_TARGET_SPEC): Use ENDIAN_SELECT. - * config/rs6000/linux64.h (ASM_SPEC32): Remove endian options. - Update -K PIC clause from sysv4.h. - (ASM_SPEC_COMMON): Use ENDIAN_SELECT. - (LINK_OS_LINUX_EMUL32, LINK_OS_LINUX_EMUL64): Likewise. - -2013-05-06 Alan Modra - - * config/rs6000/rs6000.md (bswapdi 2nd splitter): Don't swap words - twice for little-endian. - (ashrdi3_no_power, ashrdi3): Support little-endian. - -2013-05-06 Oleg Endo - - PR target/55303 - * config/sh/sh.c (sh_rtx_costs): Handle SMIN and SMAX cases. - * config/sh/sh.md (*clips, uminsi3, *clipu, clipu_one): New insns and - related expanders. - * config/sh/iterators.md (SMIN_SMAX): New code iterator. - * config/sh/predicates.md (arith_reg_or_0_or_1_operand, - clips_min_const_int, clips_max_const_int, clipu_max_const_int): - New predicates. - -2013-05-05 Steven Bosscher - John David Anglin - - * config.gcc (hppa*-*-*): Remove MASK_BIG_SWITCH from CPU default. - * config/pa/pa.opt: Make mbig-switch a no-op. - * config/pa/pa.h (TARGET_DEFAULT): Remove MASK_BIG_SWITCH. - (CASE_VECTOR_MODE): Always return SImode. - (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Remove code - for the !TARGET_BIG_SWITCH case. - * config/pa/pa-linux.h: Likewise. - * config/pa/pa-openbsd.h: Likewise. - * config/pa/pa-hpux.h: Define TARGET_DEFAULT to 0. - * config/pa/pa.md (short_jump): Remove define_insn. - (casesi): Remove code for the !TARGET_BIG_SWITCH case. - (casesi0): Remove define_insn. - (type): Remove btable_branch. - (pa_combine_type): Likewise. - (in_nullified_branch_delay): Likewise. - (in_call_delay): Likewise. - (define_delay): Likewise. - (define_insn_reservation "Z3"): Likewise. - (define_insn_reservation "Z4"): Likewise. - * config/pa/pa.c (pa_reorg): Remove code for !TARGET_BIG_SWITCH. - (pa_adjust_insn_length): Remove adjustment for btable branches. - * doc/invoke.texi (HPPA Options): Delete documentation for mbig-switch - and mno-big-switch - -2013-05-05 Uros Bizjak - - * config/i386/sse.md (*vec_extract_0): Merge - from sse2_stored and *sse2_storeq_rex64 using SWI48 mode iterator. - Add m->r,x alternatives. - (*vec_extract_0 splitters): Merge V2DI and V4SI - splitters using SWI48x mode iterator. - (*vec_extract_v2di_0_sse): Rename from *sse2_storeq. Disable for - TARGET_64BIT. Add m->x alternative. - (*vec_extractv4si_mem): Rename from *vec_ext_v4si_mem. - Add o->x alternative. Enable for TARGET_SSE. - (sse_storeq): Remove expander. - (*vec_extractv2di_1): Enable for TARGET_SSE. Split alternatives - with memory input operand. - (*vec_extractv2di_1 splitter): New. - (*vec_extractv4sf_mem): Rename from *vec_extract_v4sf_mem. - * config/i386/i386.md (ssevecmodelower): New mode attribute. - -2013-05-04 Segher Boessenkool - - * config/rs6000/rs6000.c (INT_P): Reformat. Delete obsolete comment. - (INT_LOWPART): Delete. - (extract_MB): Adjust. - (extract_ME): Adjust. - (print_operand): Adjust. - -2013-05-04 Segher Boessenkool - - * config/rs6000/predicates.md (reg_or_add_cint_operand, - reg_or_sub_cint_operand): Delete "HOST_BITS_PER_WIDE_INT == 32" case. - (reg_or_logical_cint_operand, easy_fp_constant, - logical_const_operand): Delete "CONST_DOUBLE" case. - * config/rs6000/rs6000.c (num_insns_constant_wide): Delete - "HOST_BITS_PER_WIDE_INT == 64" test. - (num_insns_constant): Ditto. Delete CONST_DOUBLE DImode/VOIDmode case. - (build_mask64_2_operands): Delete "HOST_BITS_PER_WIDE_INT >= 64" test. - (rs6000_emit_set_const): Delete CONST_DOUBLE case. - (rs6000_emit_set_long_const): Delete "HOST_BITS_PER_WIDE_INT >= 64" - test. - (includes_rldic_lshift_p, includes_rldicr_lshift_p): Delete - CONST_DOUBLE DImode/VOIDmode case. - (INT_P, INT_LOWPART): Delete CONST_DOUBLE case. - (print_operand): Delete "HOST_BITS_PER_WIDE_INT == 32" case. Delete - CONST_DOUBLE VOIDmode case. - (output_toc): Delete "HOST_BITS_PER_WIDE_INT == 32" case. - (rs6000_rtx_costs): Delete CONST_DOUBLE DImode/VOIDmode case. - * config/rs6000/rs6000.md (iordi3, xordi3, splitter for these): - Delete CONST_DOUBLE case. - (splitters for mov FMOVE64 const_double): Delete - "HOST_BITS_PER_WIDE_INT == 32" case. Delete - "HOST_BITS_PER_WIDE_INT >= 64" test. - (splitter for mov DI const_int): Delete "HOST_BITS_PER_WIDE_INT == 32" - case. - (mov DI const_double): Delete. - -2013-05-04 Jakub Jelinek - - * combine.c (combine_simplify_rtx) : If nonzero_bits - on op shows all bits zero in mode of a lowpart subreg, return zero. - -2013-05-03 Michael Meissner - - PR target/57150 - * config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Use DFmode - to save TFmode registers and DImode to save TImode registers for - caller save operations. - (HARD_REGNO_CALL_PART_CLOBBERED): TFmode and TDmode do not need to - mark being partially clobbered since they only use the first - double word. - - * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): TFmode - and TDmode only use the upper 64-bits of each VSX register. - -2013-05-03 Bill Schmidt - - * gimple-ssa-strength-reduction.c (slsr_process_phi): Disable. - (find_candidates_in_block): Disable slsr_process_phi. - -2013-05-03 Guozhi Wei - - * coverage.c (coverage_obj_init): Move the construction of gcov - constructor to ... - (build_init_ctor): ... here. - -2013-05-03 Bill Schmidt - - * gimple-ssa-strength-reduction.c (cand_kind): Add CAND_PHI. - (slsr_cand_d): Redefine def_phi. - (stride_status, phi_adjust_status, count_phis_status): New enums. - (find_phi_def): New. - (find_basis_for_base_expr): New. - (find_basis_for_candidate): Handle hidden bases. - (alloc_cand_and_find_basis): Handle phi candidates. - (slsr_process_phi): New. - (create_mul_ssa_cand): Exclude phi base candidates; use integer_onep. - (create_mul_imm_cand): Likewise. - (create_add_ssa_cand): Exclude phi base candidates. - (create_add_imm_cand): Likewise. - (slsr_process_cast): Likewise. - (slsr_process_copy): Likewise. - (find_candidates_in_block): Handle phi candidates. - (dump_candidate): Likewise. - (unconditional_cands): Delete. - (unconditional_cands_with_known_stride_p): Delete. - (phi_dependent_cand_p): New. - (cand_increment): Handle phi-dependent candidates. - (replace_dependent): Delete. - (replace_mult_candidate): New. - (replace_unconditional_candidate): New. - (incr_vec_index): Move to avoid forward reference. - (create_add_on_incoming_edge): New. - (create_phi_basis): New. - (replace_dependents): Delete. - (replace_conditional_candidate): New. - (phi_add_costs): New. - (replace_uncond_cands_and_profitable_phis): New. - (record_increment): Handle phi adjustments. - (record_phi_increments): New. - (record_increments): Handle phi adjustments. - (phi_incr_cost): New. - (lowest_cost_path): Handle phis. - (total_savings): Likewise. - (analyze_increments): Likewise. - (ncd_with_phi): New. - (ncd_of_cand_and_phis): New. - (nearest_common_dominator_for_cands): Handle phi increments. - (all_phi_incrs_profitable): New. - (replace_profitable_candidates): Handle phi-dependent candidates. - (analyze_candidates_and_replace): Likewise. - -2013-05-03 Teresa Johnson - - PR bootstrap/57154 - * sched-rgn.c (compute_dom_prob_ps): Ensure accumulated probabilities - do not exceed REG_BR_PROB_BASE. - -2013-05-03 Jeff Law - - PR tree-optimization/57144 - * tree-vrp.c (simplify_cond_using_ranges): Verify the constant - operand of the condition will bit into the new type when eliminating - a cast feeding a condition. - -2013-05-03 Jakub Jelinek - - PR rtl-optimization/57130 - * combine.c (make_compound_operation) : Pass SET instead - of COMPARE as in_code to the recursive call if needed. - -2013-05-03 Uros Bizjak - - * config/i386/i386.md (isa): Add x64_sse4_noavx and x64_avx members. - (enabled): Handle new members. - * config/i386/sse.md (*vec_concatv2si): Merge from - *vec_concatv2si_sse2 and vec_concatv2si_sse. - (vec_concatv2di): Merge with *vec_concatv2di_rex64. - -2013-05-03 Joern Rennecke - - PR tree-optimization/57027 - * tree-ssa-math-opts.c (convert_mult_to_fma): When checking - for fnms opportunity, check we got the prerequisite kind - of tree / gimple before using accessor functions. - -2013-05-03 Richard Biener - - * double-int.h (lshift): New overload without precision - and arith argument. - (operator *=, operator +=, operator -=): Move ... - * double-int.c (operator *=, operator +=, operator -=): ... here - and implement more efficiently. - (mul_double_with_sign): Remove. - (lshift_double): Adjust to take unsinged shift argument, push - dispatching code to callers. - (mul_double_wide_with_sign): Add early out for callers that - are not interested in high parts or overflow. - (lshift): New function. - (lshift, rshift, alshift, arshift, llshift, lrshift): Add - dispatch code here. - (lrotate, rrotate): Use logical shifts. - * expr.c (get_inner_reference): Use lshift. - * fixed-value.c (do_fixed_divide): Likewise. - * tree-dfa.c (get_ref_base_and_extent): Likewise. - * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise. - (indirect_refs_may_alias_p): Likewise. - (stmt_kills_ref_p_1): Likewise. - -2013-05-03 Vidya Praveen - - * config/aarch64/aarch64-simd.md (simd_fabd): Correct the description. - -2013-05-03 Vidya Praveen - - * config/aarch64/aarch64-simd.md (*fabd_scalar3): Support - scalar form of FABD instruction. - -2013-05-02 Vladimir Makarov - - * lra-constraints.c (process_alt_operands): Add checking alt - number to choose the best alternative. - -2013-05-02 Richard Biener - - * tree-eh.c (cleanup_empty_eh_merge_phis): Remove rename_virts - bitmap and its handling. - (pass_cleanup_eh): Set todo_flags_finish to TODO_verify_ssa. - -2013-05-02 Richard Biener - - PR middle-end/57140 - * tree-inline.c (copy_loops): Properly handle removed loops. - (copy_cfg_body): Mark destination loops for fixup if source - loops needed fixup. - -2013-05-02 Greta Yorsh - - PR target/56732 - * config/arm/arm.c (arm_expand_epilogue): Check really_return before - generating simple_return for naked functions. - -2013-05-02 Martin Jambor - - PR middle-end/56988 - * ipa-prop.h (ipa_agg_replacement_value): New flag by_ref. - * ipa-cp.c (ipa_get_indirect_edge_target_1): Also check that by_ref - flags match. - (find_aggregate_values_for_callers_subset): Fill in the by_ref flag of - ipa_agg_replacement_value structures. - (known_aggs_to_agg_replacement_list): Likewise. - * ipa-prop.c (write_agg_replacement_chain): Stream by_ref flag. - (read_agg_replacement_chain): Likewise. - (ipcp_transform_function): Also check that by_ref flags match. - -2013-05-02 Richard Biener - - * graphds.h (struct graph): Add obstack member. - * graphds.c (new_graph): Initialize obstack and allocate - vertices from it. - (add_edge): Allocate edge from the obstack. - (free_graph): Free the obstack instead of all edges and vertices. - -2013-05-02 Teresa Johnson - - * loop-unswitch.c (unswitch_loop): Use helper routines with rounding - divides. - * cfg.c (update_bb_profile_for_threading): Ditto. - * tree-inline.c (copy_bb): Ditto. - (copy_edges_for_bb): Ditto. - (initialize_cfun): Ditto. - (copy_cfg_body): Ditto. - (expand_call_inline): Ditto. - * ipa-inline-analysis.c (estimate_edge_size_and_time): Ditto. - (estimate_node_size_and_time): Ditto. - (inline_merge_summary): Ditto. - * cgraphclones.c (cgraph_clone_edge): Ditto. - (cgraph_clone_node): Ditto. - * sched-rgn.c (compute_dom_prob_ps): Ditto. - (compute_trg_info): Ditto. - -2013-05-02 Ian Bolton - - * config/aarch64/aarch64.md (movsi_aarch64): Only allow to/from - S reg when fp attribute set. - (movdi_aarch64): Only allow to/from D reg when fp attribute set. - -2013-05-02 Ian Bolton - - * config/aarch64/aarch64.md (*and_one_cmpl3_compare0): - New pattern. - (*and_one_cmplsi3_compare0_uxtw): Likewise. - (*and_one_cmpl_3_compare0): Likewise. - (*and_one_cmpl_si3_compare0_uxtw): Likewise. - -2013-05-02 Richard Biener - - * tree-scalar-evolution.c (scev_info_hasher): Remove. - (struct instantiate_cache_entry): New type. - (struct instantiate_cache_entry_hasher): New hashtable descriptor. - (struct instantiate_cache_type): New type. - (set_instantiated_value, get_instantiated_value): Remove. - (get_instantiated_value_entry): New function. - (instantiate_scev_name): Use the new cache and adjust. - (instantiate_scev_poly): Adjust. - (instantiate_scev_binary): Likewise. - (instantiate_array_ref): Likewise. - (instantiate_scev_convert): Likewise. - (instantiate_scev_not): Likewise. - (instantiate_scev_3): Likewise. - (instantiate_scev_2): Likewise. - (instantiate_scev_r): Likewise. - (instantiate_scev): Likewise. - (resolve_mixers): Likewise. - -2013-05-01 Vladimir Makarov - - PR target/57091 - * lra-constraints.c (best_small_class_operands_num): Remove. - (process_alt_operands): Remove small_class_operands_num. Take - small classes operands into losers and only if the operand is not - matched. Modify debugging output. - (curr_insn_transform): Remove best_small_class_operands_num. - Print insn name. - -2013-05-01 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_gimple_fold_builtin.c): Fold more modes for reduc_splus_. - * config/aarch64/aarch64-simd-builtins.def - (reduc_splus_): Add new modes. - (reduc_uplus_): New. - * config/aarch64/aarch64-simd.md (aarch64_addvv4sf): Remove. - (reduc_uplus_v4sf): Likewise. - (reduc_splus_v4sf): Likewise. - (aarch64_addv): Likewise. - (reduc_uplus_): Likewise. - (reduc_splus_): Likewise. - (aarch64_addvv2di): Likewise. - (reduc_uplus_v2di): Likewise. - (reduc_splus_v2di): Likewise. - (aarch64_addvv2si): Likewise. - (reduc_uplus_v2si): Likewise. - (reduc_splus_v2si): Likewise. - (reduc_plus_): New. - (reduc_plus_v2di): Likewise. - (reduc_plus_v2si): Likewise. - (reduc_plus_v4sf): Likewise. - (aarch64_addpv4sf): Likewise. - * config/aarch64/arm_neon.h - (vaddv_<8, 16, 32, 64): Rewrite using builtins. - * config/aarch64/iterators.md (unspec): Remove UNSPEC_ADDV, - add UNSPEC_SADDV, UNSPEC_UADDV. - (SUADDV): New. - (sur): Add UNSPEC_SADDV, UNSPEC_UADDV. - -2013-05-01 James Greenhalgh - - * config/aarch64/arm_neon.h - (v_<8, 16, 32, 64>): Rewrite using builtins. - -2013-05-01 James Greenhalgh - - * config/aarch64/aarch64-builtins - (aarch64_gimple_fold_builtin): Fold reduc__ builtins. - -2013-05-01 James Greenhalgh - - * config/aarch64/aarch64-simd-builtins.def - (reduc_smax_): New. - (reduc_smin_): Likewise. - (reduc_umax_): Likewise. - (reduc_umin_): Likewise. - (reduc_smax_nan_): Likewise. - (reduc_smin_nan_): Likewise. - (fmax): Remove. - (fmin): Likewise. - (smax): Update for V2SF, V4SF and V2DF modes. - (smin): Likewise. - (smax_nan): New. - (smin_nan): Likewise. - * config/aarch64/aarch64-simd.md (3): Rename to... - (3): ...This, refactor. - (s3): New. - (3): Likewise. - (reduc__): Refactor. - (reduc__v4sf): Likewise. - (reduc__v2si): Likewise. - (aarch64_: Remove. - * config/aarch64/arm_neon.h (vmax_f<32,64>): Rewrite to use - new builtin names. - (vmin_f<32,64>): Likewise. - * config/iterators.md (unspec): Add UNSPEC_FMAXNMV, UNSPEC_FMINNMV. - (FMAXMIN): New. - (su): Add mappings for smax, smin, umax, umin. - (maxmin): New. - (FMAXMINV): Add UNSPEC_FMAXNMV, UNSPEC_FMINNMV. - (FMAXMIN): Rename as... - (FMAXMIN_UNS): ...This. - (maxminv): Remove. - (fmaxminv): Likewise. - (fmaxmin): Likewise. - (maxmin_uns): New. - (maxmin_uns_op): Likewise. - -2013-05-01 James Greenhalgh - - * config/aarch64/arm_neon.h - (vac_f<32, 64>): Rename to... - (vca_f<32, 64>): ...this, reimpliment in C. - (vca_f<32, 64>): Reimpliment in C. - -2013-05-01 James Greenhalgh - - * config/aarch64/aarch64-simd.md (*aarch64_fac): New. - * config/aarch64/iterators.md (FAC_COMPARISONS): New. - -2013-05-01 James Greenhalgh - - * config/aarch64/aarch64-simd.md - (vcond_internal): Handle special cases for constant masks. - (vcond): Allow nonmemory_operands for outcome vectors. - (vcondu): Likewise. - (vcond): New. - -2013-05-01 James Greenhalgh - - * config/aarch64/aarch64-builtins.c (BUILTIN_VALLDI): Define. - (aarch64_fold_builtin): Add folding for cm. - * config/aarch64/aarch64-simd-builtins.def - (cmeq): Update to BUILTIN_VALLDI. - (cmgt): Likewise. - (cmge): Likewise. - (cmle): Likewise. - (cmlt): Likewise. - * config/aarch64/arm_neon.h - (vc_<8,16,32,64>): Remap - to builtins or C as appropriate. - -2013-05-01 James Greenhalgh - - * config/aarch64/aarch64-simd-builtins.def (cmhs): Rename to... - (cmgeu): ...This. - (cmhi): Rename to... - (cmgtu): ...This. - * config/aarch64/aarch64-simd.md - (simd_mode): Add SF. - (aarch64_vcond_internal): Use new names for unsigned comparison insns. - (aarch64_cm): Rewrite to not use UNSPECs. - * config/aarch64/aarch64.md (*cstore_neg): Rename to... - (cstore_neg): ...This. - * config/aarch64/iterators.md - (VALLF): new. - (unspec): Remove UNSPEC_CM. - (COMPARISONS): New. - (UCOMPARISONS): Likewise. - (optab): Add missing comparisons. - (n_optab): New. - (cmp_1): Likewise. - (cmp_2): Likewise. - (CMP): Likewise. - (cmp): Remove. - (VCMP_S): Likewise. - (VCMP_U): Likewise. - (V_cmp_result): Add DF, SF modes. - (v_cmp_result): Likewise. - (v): Likewise. - (vmtype): Likewise. - * config/aarch64/predicates.md (aarch64_reg_or_fp_zero): New. - -2013-05-01 Greta Yorsh - - * config/arm/thumb2.md (thumb2_smaxsi3,thumb2_sminsi3): Convert - define_insn to define_insn_and_split. - (thumb32_umaxsi3,thumb2_uminsi3): Likewise. - (thumb2_negdi2,thumb2_abssi2,thumb2_neg_abssi2): Likewise. - (thumb2_mov_scc,thumb2_mov_negscc,thumb2_mov_notscc): Likewise. - (thumb2_movsicc_insn,thumb2_and_scc,thumb2_ior_scc): Likewise. - (thumb2_negscc): Likewise. - -2013-04-30 Greta Yorsh - - * config/arm/thumb2.md (thumb2_incscc, thumb2_decscc): Delete. - -2013-04-30 Greta Yorsh - - * config/arm/thumb2.md: Remove trailing whitespaces. - -2013-04-30 Richard Sandiford - - * explow.c (plus_constant): Pass "mode" to immed_double_int_const. - Use gen_int_mode rather than GEN_INT. - -2013-04-30 H.J. Lu - - * value-prof.c (stream_in_histogram_value): Remove the strayed - debug_gimple_stmt. - -2013-04-30 Richard Biener - - PR middle-end/57122 - * cfghooks.c (split_edge): Properly check for the loop latch edge. - -2013-04-30 Richard Biener - - PR middle-end/57107 - * tree-eh.c (sink_clobbers): Preserve virtual SSA form. - -2013-04-30 Andrey Belevantsev - - PR rtl-optimization/56957 - PR rtl-optimization/57105 - * sel-sched.c (move_op_orig_expr_found): Remove insn_emitted - variable. Use just INSN_UID for determining whether an insn - should be only disconnected from the insn stream. - * sel-sched-ir.h (EXPR_WAS_CHANGED): Remove. - -2013-04-30 Jakub Jelinek - - PR tree-optimization/57104 - * tsan.c (instrument_expr): Don't instrument accesses to - DECL_HARD_REGISTER VAR_DECLs. - -2013-04-30 Richard Biener - - * function.h (loops_for_fn): New inline function. - (set_loops_for_fn): Likewise. - * cfgloop.h (place_new_loop): Add struct function parameter. - (get_loop): Likewise. - (get_loops): Likewise. - (number_of_loops): Likewise. - (fel_next): Adjust. - (fel_init): Likewise. - * cfg.c (get_loop_copy): Adjust. - * cfgloop.c (flow_loops_dump): Likewise. - (record_loop_exits): Likewise. - (verify_loop_structure): Likewise. - * cfgloopanal.c (mark_irreducible_loops): Likewise. - (estimate_reg_pressure_cost): Likewise. - (mark_loop_exit_edges): Likewise. - * cfgloopmanip.c (place_new_loop): Likewise. - (add_loop): Likewise. - (duplicate_loop): Likewise. - * graph.c (draw_cfg_nodes): Likewise. - * graphite-clast-to-gimple.c (translate_clast_user): Likewise. - * graphite-sese-to-poly.c (build_scop_scattering): Likewise. - (extract_affine_chrec): Likewise. - (build_scop_iteration_domain): Likewise. - * graphite.c (graphite_initialize): Likewise. - * ira-build.c (create_loop_tree_nodes): Likewise. - (more_one_region_p): Likewise. - (rebuild_regno_allocno_maps): Likewise. - (mark_loops_for_removal): Likewise. - (mark_all_loops_for_removal): Likewise. - (remove_unnecessary_regions): Likewise. - (ira_build): Likewise. - * ira-emit.c (setup_entered_from_non_parent_p): Likewise. - * loop-init.c (fix_loop_structure): Likewise. - (gate_rtl_move_loop_invariants): Likewise. - (gate_rtl_unswitch): Likewise. - (gate_rtl_unroll_and_peel_loops): Likewise. - (rtl_doloop): Likewise. - * lto-streamer-in.c (input_cfg): Likewise. - * lto-streamer-out.c (output_cfg): Likewise. - * modulo-sched.c (sms_schedule): Likewise. - * predict.c (tree_estimate_probability): Likewise. - (tree_estimate_probability_driver): Likewise. - (estimate_loops): Likewise. - * tree-cfg.c (fixup_loop_arrays_after_move): Likewise. - (move_sese_region_to_fn): Likewise. - (debug_loop_num): Likewise. - * tree-chrec.c (chrec_evaluate): Likewise. - (hide_evolution_in_other_loops_than_loop): Likewise. - (chrec_component_in_loop_num): Likewise. - (reset_evolution_in_loop): Likewise. - (evolution_function_is_invariant_rec_p): Likewise. - * tree-if-conv.c (main_tree_if_conversion): Likewise. - * tree-inline.c (copy_loops): Likewise. - (copy_cfg_body): Likewise. - (tree_function_versioning): Likewise. - * tree-loop-distribution.c (rdg_flag_loop_exits): Likewise. - * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop): - Likewise. - (add_to_evolution_1): Likewise. - (scev_const_prop): Likewise. - * tree-scalar-evolution.h (get_chrec_loop): Likewise. - * tree-ssa-loop-ch.c (copy_loop_headers): Likewise. - * tree-ssa-loop-im.c (analyze_memory_references): Likewise. - (tree_ssa_lim_initialize): Likewise. - * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa): Likewise. - (verify_loop_closed_ssa): Likewise. - * tree-ssa-loop.c (tree_ssa_loop_init): Likewise. - (tree_ssa_loop_im): Likewise. - (tree_ssa_loop_unswitch): Likewise. - (tree_vectorize): Likewise. - (check_data_deps): Likewise. - (tree_ssa_loop_ivcanon): Likewise. - (tree_ssa_loop_bounds): Likewise. - (tree_complete_unroll): Likewise. - (tree_complete_unroll_inner): Likewise. - (tree_parallelize_loops): Likewise. - (tree_ssa_loop_prefetch): Likewise. - (tree_ssa_loop_ivopts): Likewise. - * tree-ssa.c (execute_update_addresses_taken): Liekwise. - * tree-vectorizer.c (vectorize_loops): Likewise. - -2013-04-29 Mike Frysinger - - * config/arm/bpabi.h (EABI_LINK_SPEC): Define. - (BPABI_LINK_SPEC): Use new EABI_LINK_SPEC. - * config/arm/linux-eabi.h (LINK_SPEC): Replace BE8_LINK_SPEC - with EABI_LINK_SPEC. - -2013-04-29 Uros Bizjak - - PR target/44578 - * config/i386/i386.md (*zero_extendsidi2): Add "!" to m->?*y - alternative. - -2013-04-29 Vladimir Makarov - - PR target/57097 - * lra-constraints.c (process_alt_operands): Discourage a bit more - using memory for pseudos. Print cost dump for alternatives. - Modify cost values for conflicts with early clobbers. - (curr_insn_transform): Spill pseudos reassigned to NO_REGS. - -2013-04-29 Uros Bizjak - - PR target/57098 - * config/i386/i386.c (ix86_expand_vec_perm): Validize constant memory. - -2013-04-29 Ian Bolton - - * config/aarch64/aarch64.md (movsi_aarch64): Support LDR/STR - from/to S register. - (movdi_aarch64): Support LDR/STR from/to D register. - -2013-04-29 Ian Bolton - - * common/config/aarch64/aarch64-common.c: Enable REE pass at O2 - or higher by default. - -2013-04-29 Richard Biener - - PR middle-end/57075 - * tree-inline.c (copy_edges_for_bb): Still split the bbs, - even if not adding abnormal edges for calls that can make - abnormal gotos. - -2013-04-29 Richard Biener - - PR middle-end/57103 - * tree-cfg.c (move_stmt_op): Fix condition under which to update - TREE_BLOCK. - (move_stmt_r): Remove redundant checking. - -2013-04-29 Teresa Johnson - - PR bootstrap/57077 - * basic-block.h (apply_scale): New function. - (apply_probability): Use apply_scale. - * gimple-streamer-in.c (input_bb): Ditto. - * lto-streamer-in.c (input_cfg): Ditto. - * lto-cgraph.c (merge_profile_summaries): Ditto. - * tree-optimize.c (execute_fixup_cfg): Ditto. - * tree-inline.c (copy_bb): Update comment to use apply_scale. - (copy_edges_for_bb): Ditto. - (copy_cfg_body): Ditto. - -2013-04-29 Tom de Vries - - * tree-ssa-tail-merge.c (find_same_succ_bb): Skip loop latch bbs. - (replace_block_by): Don't set LOOPS_NEED_FIXUP. - (tail_merge_optimize): Handle current_loops == NULL. - -2013-04-26 Jeff Law - - * tree-vrp.c (range_fits_type_p): Move to earlier point in file. - (simplify_cond_using_ranges): Generalize code to simplify - COND_EXPRs where one argument is a constant and the other - is an SSA_NAME created by an integral type conversion. - -2013-04-29 Kyrylo Tkachov - - * config/arm/arm.md (store_minmaxsi): Use only when - optimize_insn_for_size_p. - -2013-04-29 Christian Bruel - - PR target/57108 - * sh.md (tstsi_t_zero_extract_eq): Set mode for operand 0. - -2013-04-29 Richard Biener - - PR middle-end/57089 - * omp-low.c (expand_omp_taskreg): If the parent function had a broken - loop tree make sure to schedule a fixup for the child as well. - (expand_omp_for_generic): Properly add loops. - (expand_omp_for_static_nochunk): Likewise. - (expand_omp_for_static_chunk): Likewise. - (expand_omp_for): For the degenerate case fixup loops. - (expand_omp_sections): Fix default bb placement in loops. - (expand_omp_atomic_pipeline): Properly add loops. - -2013-04-29 Kyrylo Tkachov - - * predict.c: Fix typo in comment above #define PROB_VERY_UNLIKELY. - -2013-04-29 Tom de Vries - - * tree-ssa-tail-merge.c: Update header comment. - -2013-04-29 James Greenhalgh - - * config/aarch64/arm_neon.h - (vcvt_f<32,64>_s<32,64>): Rewrite in C. - (vcvt_f<32,64>_s<32,64>): Rewrite using builtins. - (vcvt__f<32,64>_f<32,64>): Likewise. - (vcvt_<32,64>_f<32,64>): Likewise. - (vcvta_<32,64>_f<32,64>): Likewise. - (vcvtm_<32,64>_f<32,64>): Likewise. - (vcvtn_<32,64>_f<32,64>): Likewise. - (vcvtp_<32,64>_f<32,64>): Likewise. - -2013-04-29 James Greenhalgh - - * config/aarch64/aarch64-simd.md - (2): New, maps to fix, fixuns. - (2): New, maps to - fix_trunc, fixuns_trunc. - (ftrunc2): New. - * config/aarch64/iterators.md (optab): Add fix, fixuns. - (fix_trunc_optab): New. - -2013-04-29 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_builtin_vectorized_function): Vectorize over ifloorf, - iceilf, lround, iroundf. - -2013-04-29 Uros Bizjak - - PR target/54349 - * config/i386/i386.h (enum ix86_tune_indices) - : - New, split from X86_TUNE_INTER_UNIT_MOVES. - : Remove. - (TARGET_INTER_UNIT_MOVES_TO_VEC): New define. - (TARGET_INTER_UNIT_MOVES_FROM_VEC): Ditto. - (TARGET_INTER_UNIT_MOVES): Remove. - * config/i386/i386.c (initial_ix86_tune_features): Update. - Disable X86_TUNE_INTER_UNIT_MOVES_FROM_VEC for m_ATHLON_K8 only. - (ix86_expand_convert_uns_didf_sse): Use - TARGET_INTER_UNIT_MOVES_TO_VEC instead of TARGET_INTER_UNIT_MOVES. - (ix86_expand_vector_init_one_nonzero): Ditto. - (ix86_expand_vector_init_interleave): Ditto. - (inline_secondary_memory_needed): Return true for moves from SSE class - registers for !TARGET_INTER_UNIT_MOVES_FROM_VEC targets and for moves - to SSE class registers for !TARGET_INTER_UNIT_MOVES_TO_VEC targets. - * config/i386/constraints.md (Yi, Ym): Depend on - TARGET_INTER_UNIT_MOVES_TO_VEC. - (Yj, Yn): New constraints. - * config/i386/i386.md (*movdi_internal): Change constraints of - operand 1 from Yi to Yj and from Ym to Yn. - (*movsi_internal): Ditto. - (*movdf_internal): Ditto. - (*movsf_internal): Ditto. - (*float2_1): Use - TARGET_INTER_UNIT_MOVES_TO_VEC instead of TARGET_INTER_UNIT_MOVES. - (*float2_1 splitters): Ditto. - (floatdi2_i387_with_xmm): Ditto. - (floatdi2_i387_with_xmm splitters): Ditto. - * config/i386/sse.md (movdi_to_sse): Ditto. - (sse2_stored): Change constraint of operand 1 from Yi to Yj. - Use TARGET_INTER_UNIT_MOVES_FROM_VEC instead of - TARGET_INTER_UNIT_MOVES. - (sse_storeq_rex64): Change constraint of operand 1 from Yi to Yj. - (sse_storeq_rex64 splitter): Use TARGET_INTER_UNIT_MOVES_FROM_VEC - instead of TARGET_INTER_UNIT_MOVES. - * config/i386/mmx.md (*mov_internal): Change constraint of - operand 1 from Yi to Yj and from Ym to Yn. - -2013-04-29 James Greenhalgh - - * config/aarch64/aarch64-simd-builtins.def (vec_unpacks_hi_): New. - (float_truncate_hi_): Likewise. - (float_extend_lo_): Likewise. - (float_truncate_lo_): Likewise. - * config/aarch64/aarch64-simd.md (vec_unpacks_lo_v4sf): New. - (aarch64_float_extend_lo_v2df): Likewise. - (vec_unpacks_hi_v4sf): Likewise. - (aarch64_float_truncate_lo_v2sf): Likewise. - (aarch64_float_truncate_hi_v4sf): Likewise. - (vec_pack_trunc_v2df): Likewise. - (vec_pack_trunc_df): Likewise. - -2013-04-29 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_fold_builtin): Fold float conversions. - * config/aarch64/aarch64-simd-builtins.def - (floatv2si, floatv4si, floatv2di): New. - (floatunsv2si, floatunsv4si, floatunsv2di): Likewise. - * config/aarch64/aarch64-simd.md - (2): New, expands to float and floatuns. - * config/aarch64/iterators.md (FLOATUORS): New. - (optab): Add float, floatuns. - (su_optab): Likewise. - -2013-04-29 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_builtin_vectorized_function): Use new names for - fcvt builtins. - * config/aarch64/aarch64-simd-builtins.def (fcvtzs): Split as... - (lbtruncv2sf, lbtruncv4sf, lbtruncv2df): ...This. - (fcvtzu): Split as... - (lbtruncuv2sf, lbtruncuv4sf, lbtruncuv2df): ...This. - (fcvtas): Split as... - (lroundv2sf, lroundv4sf, lroundv2df, lroundsf, lrounddf): ...This. - (fcvtau): Split as... - (lrounduv2sf, lrounduv4sf, lrounduv2df, lroundusf, lroundudf): ...This. - (fcvtps): Split as... - (lceilv2sf, lceilv4sf, lceilv2df): ...This. - (fcvtpu): Split as... - (lceiluv2sf, lceiluv4sf, lceiluv2df, lceilusf, lceiludf): ...This. - (fcvtms): Split as... - (lfloorv2sf, lfloorv4sf, lfloorv2df): ...This. - (fcvtmu): Split as... - (lflooruv2sf, lflooruv4sf, lflooruv2df, lfloorusf, lfloorudf): ...This. - (lfrintnv2sf, lfrintnv4sf, lfrintnv2df, lfrintnsf, lfrintndf): New. - (lfrintnuv2sf, lfrintnuv4sf, lfrintnuv2df): Likewise. - (lfrintnusf, lfrintnudf): Likewise. - * config/aarch64/aarch64-simd.md - (l2): Convert to - define_insn. - (aarch64_fcvt): Remove. - * config/aarch64/iterators.md (FCVT): Include UNSPEC_FRINTN. - (fcvt_pattern): Likewise. - -2013-04-29 James Greenhalgh - - * config/aarch64/aarch64-simd.md - (l2): Rename to... - (l2): ... This. - -2013-04-29 James Greenhalgh - - * config/aarch64/arm_neon.h (vrndq_f<32, 64>): Rename to... - (vrndq_f<32, 64>): ...This, implement using builtin. - (vrnd_f32): Implement using builtins. - (vrnd_f<32, 64>): New. - -2013-04-29 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_builtin_vectorized_function): Fold to standard pattern names. - * config/aarch64/aarch64-simd-builtins.def (frintn): New. - (frintz): Rename to... - (btrunc): ...this. - (frintp): Rename to... - (ceil): ...this. - (frintm): Rename to... - (floor): ...this. - (frinti): Rename to... - (nearbyint): ...this. - (frintx): Rename to... - (rint): ...this. - (frinta): Rename to... - (round): ...this. - * config/aarch64/aarch64-simd.md - (aarch64_frint): Delete. - (2): Convert to insn. - * config/aarch64/aarch64.md (unspec): Add UNSPEC_FRINTN. - * config/aarch64/iterators.md (FRINT): Add UNSPEC_FRINTN. - (frint_pattern): Likewise. - (frint_suffix): Likewise. - -2013-04-29 Richard Biener - - PR tree-optimization/57081 - * loop-init.c: Include tree-flow.h. - (loop_optimizer_finalize): Free number of iteration estimates. - * Makefile.in (loop-init.o): Add $(TREE_FLOW_H) dependency. - -2013-04-29 Jakub Jelinek - - PR tree-optimization/57083 - * tree-vrp.c (extract_range_from_binary_expr_1): For LSHIFT_EXPR with - non-singleton shift count range, zero extend low_bound for uns case. - - * config/i386/predicates.md (general_vector_operand): New predicate. - * config/i386/i386.c (const_vector_equal_evenodd_p): New function. - (ix86_expand_mul_widen_evenodd): Force op1 resp. op2 into register - if they aren't nonimmediate operands. If their original values - satisfy const_vector_equal_evenodd_p, don't shift them. - * config/i386/sse.md (mul3): Use general_vector_operand - predicates. For the SSE4.1 case force operands[{1,2}] into registers - if not nonimmediate_operand. - (vec_widen_smult_even_v4si): Use nonimmediate_operand predicates - instead of register_operand. - (vec_widen_mult_odd_): Use general_vector_operand predicates. - -2013-04-28 Eric Botcazou - - * stor-layout.c (finalize_size_functions): Allocate a structure and - reset cfun before dumping the functions. - -2013-04-27 Jakub Jelinek - - * config/i386/i386.c (ix86_expand_call): Make cregs_size unsigned. - - PR target/56866 - * config/i386/i386.c (ix86_expand_mul_widen_evenodd): Don't - use xop_pmacsdqh if uns_p. - * config/i386/sse.md (xop_rotr3): Fix up computation of - the immediate rotate count. - -2013-04-26 Vladimir Makarov - - * rtl.h (struct rtx_def): Add comment for field jump. - (LRA_SUBREG_P): New macro. - * recog.c (register_operand): Check LRA_SUBREG_P. - * lra.c (lra): Add note at the end of RTL code. Align non-empty - stack frame. - * lra-spills.c (lra_spill): Align stack after spilling pseudos. - (lra_final_code_change): Skip subreg change for operators. - * lra-eliminations.c (eliminate_regs_in_insn): Make return earlier - if there are no operand changes. - * lra-constraints.c (curr_insn_set): New. - (match_reload): Set LRA_SUBREG_P. - (emit_spill_move): Ditto. - (check_and_process_move): Use curr_insn_set. Process only single - set insns. Don't initialize sec_mem_p and change_p. - (simplify_operand_subreg): Use LRA_SUBREG_P. - (reg_in_class_p): New function. - (process_alt_operands): Use it. Use #if HAVE_ATTR_enabled instead - of #ifdef. Add code to remove cycling. - (process_address): Check EXTRA_CONSTRAINT_STR. Process even if - non-null disp. Reload inner instead of disp when base and index - are null. Try to put lo_sum into register. - (EBB_PROBABILITY_CUTOFF): Redefine probability in percents. - (check_and_process_move): Move code for move cost check to - simple_move_p. Remove equiv_substitution. - (simple_move_p): New function. - (curr_insn_transform): Initialize sec_mem_p and change_p. Set up - curr_insn_set. Call check_and_process_move only for single set - insns. Use the new function. Move call of check_and_process_move - after operand equiv substitution and address process. - -2013-04-26 Jakub Jelinek - - PR go/57045 - * tree-ssa-uninit.c (compute_uninit_opnds_pos): In functions - with nonlocal goto receivers or returns twice calls, ignore - unininitialized values from abnormal edges to nl goto receiver - or returns twice call. - -2013-04-26 Jakub Jelinek - - PR tree-optimization/57051 - * fold-const.c (const_binop): Handle VEC_LSHIFT_EXPR - and VEC_RSHIFT_EXPR if shift count is a multiple of element - bitsize. - -2013-04-26 Richard Biener - - * omp-low.c (finalize_task_copyfn): Do not drop PROP_loops. - (expand_omp_taskreg): Likewise. Mark loops for fixup. - * tree-cfg.c (move_block_to_fn): Remap loop fathers. - (fixup_loop_arrays_after_move): New function. - (move_sese_region_to_fn): Properly outline the loop tree parts - of the SESE region. - -2013-04-26 Uros Bizjak - - * config/i386/i386.md (type, unit): Fix long lines. - -2013-04-26 Richard Biener - - * Makefile.in (lto-streamer-in.o): Add $(CFGLOOP_H) dependency. - (lto-streamer-out.o): Likewise. - * cfgloop.c (init_loops_structure): Export, add struct function - argument and adjust. - (flow_loops_find): Adjust. - * cfgloop.h (enum loop_estimation): Add EST_LAST. - (init_loops_structure): Declare. - * lto-streamer-in.c: Include cfgloop.h. - (input_cfg): Input the loop tree. - * lto-streamer-out.c: Include cfgloop.h. - (output_cfg): Output the loop tree. - (output_struct_function_base): Do not drop PROP_loops. - -2013-03-26 Richard Biener - - * tree-cfg.c (execute_build_cfg): Build the loop tree. - (pass_build_cfg): Provide PROP_loops. - (move_sese_region_to_fn): Remove loops that are outlined into fn - for now. - * tree-inline.c: Include cfgloop.h. - (initialize_cfun): Do not drop PROP_loops. - (copy_loops): New function. - (copy_cfg_body): Copy loop structure. - (tree_function_versioning): Initialize destination loop tree. - * tree-ssa-loop.c (pass_tree_loop_init): Do not provide PROP_loops. - (pass_parallelize_loops): Do IL verification. - * loop-init.c (loop_optimizer_init): Fixup loops if required. - * tree-optimize.c (execute_fixup_cfg): If we need to cleanup - the CFG make sure we fixup loops as well. - * tree-ssa-tail-merge.c: Include cfgloop.h. - (replace_block_by): When merging loop latches mark loops for fixup. - * lto-streamer-out.c (output_struct_function_base): Drop - PROP_loops for now. - * tree-ssa-phiopt.c: Include tree-scalar-evolution.h. - (tree_ssa_cs_elim): Initialize the loop optimizer and SCEV. - * ipa-split.c: Include cfgloop.h. - (split_function): Add the new return block to the loop tree root. - * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Return - whether we have removed the forwarder block. - (merge_phi_nodes): If we removed a forwarder mark loops for fixup. - * cfgloop.h (place_new_loop): Declare. - * cfgloopmanip.c (place_new_loop): Export. - * Makefile.in (asan.o): Add $(CFGLOOP_H) dependency. - (tree-switch-conversion.o): Likewise. - (tree-complex.o): Likewise. - (tree-inline.o): Likewise. - (tree-ssa-tailmerge.o): Likewise. - (ipa-split.o): Likewise. - (tree-ssa-phiopt.o): Add $(SCEV_H) dependency. - (tree-ssa-copy.o): Likewise. - * tree-switch-conversion.c: Include cfgloop.h - (process_switch): If we emit a bit-test cascade, schedule loops - for fixup. - * tree-complex.c: Include cfgloop.h. - (expand_complex_div_wide): Properly add new basic-blocks to loops. - * asan.c: Include cfgloop.h. - (create_cond_insert_point): Properly add new basic-blocks to - loops, schedule loop fixup. - * cfgloop.c (verify_loop_structure): Check that looks are not - marked for fixup. - * omp-low.c (expand_parallel_call): Properly add new basic-blocks - to loops. - (expand_omp_for_generic): Likewise. - (expand_omp_sections): Likewise. - (expand_omp_atomic_pipeline): Schedule loops for fixup. - * tree-ssa-copy.c: Include tree-scalar-evolution.h. - (fini_copy_prop): Disable DCE in substitute_and_fold if SCEV - is initialized, not when loops are present. - * tree-parloops.c (parallelize_loops): Remove checking here. - * passes.c (init_optimization_passes): Schedule a copy-propagation - pass before complete unrolling of inner loops. - -2013-04-26 Jakub Jelinek - - * Makefile.in (toplev.o): Depend on diagnostic-color.h. - * diagnostic-color.c (should_colorize): Remove _WIN32 version. - (colorize_init): Add argument to _WIN32 version. - * toplev.c: Include diagnostic-color.h. - (process_options): Default to -fdiagnostics-color=auto if - GCC_COLORS env var is in the environment. - * common.opt (fdiagnostics-color=): Add Var and Init. - * doc/invoke.texi (-fdiagnostics-color=): Document that if GCC_COLORS - env var is in the environment, the default is auto rather than never. - - * diagnostic.h (file_name_as_prefix): Add context argument. - * diagnostic.c (file_name_as_prefix): Likewise. Colorize - the string as locus. - * langhooks.c (lhd_print_error_function): Adjust caller. - -2013-04-25 Lawrence Crowl - - * var-tracking.c (shared_hash_def::htab): - Change type to hash_table. Update dependent calls and types. - -2013-04-25 Lawrence Crowl - - * Makefile.in: Update as needed below. - - * alloc-pool.c (static hash_table alloc_pool_hash): - Move declaration to after the type's method definitons. - - * attribs.c (htab_t scoped_attributes::attribute_hash): - Change type to hash_table. Update dependent calls and types. - - * bitmap.c (htab_t bitmap_desc_hash): - Change type to hash_table. Update dependent calls and types. - - * cselib.c (htab_t cselib_hash_table): - Change type to hash_table. Update dependent calls and types. - - * data-streamer.h (struct string_slot): Move to lto-streamer.h. - (hash_string_slot_node): Move implementation into lto-streamer.h - struct string_slot_hasher. - (eq_string_slot_node): Likewise. - - * data-streamer-out.c: Update output_block::string_hash_table - dependent calls and types. - - * dwarf2cfi.c (htab_t trace_index): - Change type to hash_table. Update dependent calls and types. - - * dwarf2out.c (htab_t break_out_includes::cu_hash_table): - Change type to hash_table. Update dependent calls and types. - (htab_t copy_decls_for_unworthy_types::decl_table): Likewise. - (htab_t optimize_external_refs::map): Likewise. - (htab_t output_comp_unit::extern_map): Likewise. - (htab_t output_comdat_type_unit::extern_map): Likewise. - (htab_t output_macinfo::macinfo_htab): Likewise. - (htab_t optimize_location_lists::htab): Likewise. - (htab_t dwarf2out_finish::comdat_type_table): Likewise. - - * except.c (htab_t ehspec_hash_type): - Change type to hash_table. Update dependent calls and types. - (assign_filter_values::ttypes): Likewise. - (assign_filter_values::ehspec): Likewise. - (sjlj_assign_call_site_values::ar_hash): Likewise. - (convert_to_eh_region_ranges::ar_hash): Likewise. - - * gcse.c (htab_t pre_ldst_table): - Change type to hash_table. Update dependent calls and types. - - * ggc-common.c (htab_t saving_htab): - Change type to hash_table. Update dependent calls and types. - (htab_t loc_hash): Likewise. - (htab_t ptr_hash): Likewise. - (call_count): Rename ggc_call_count. - (call_alloc): Rename ggc_call_alloc. - (loc_descriptor): Rename make_loc_descriptor. - (add_statistics): Rename ggc_add_statistics. - - * ggc-common.c (saving_htab): - Change type to hash_table. Update dependent calls and types. - - * gimple.h (struct gimplify_ctx): Move to gimplify-ctx.h. - (push_gimplify_context): Likewise. - (pop_gimplify_context): Likewise. - (struct gimple_temp_hash_elt): Added. - (struct gimplify_hasher): Likewise. - (struct gimplify_ctx.temp_htab): - Change type to hash_table. Update dependent calls and types. - - * gimple-fold.c: Include gimplify-ctx.h. - - * gimple-ssa-strength-reduction.c (htab_t base_cand_map): - Change type to hash_table. Update dependent calls and types. - (base_cand_dump_callback): Rename to ssa_base_cand_dump_callback to - avoid potential global name collision. - - * gimplify.c: Include gimplify-ctx.h. - (struct gimple_temp_hash_elt): Move to gimplify-ctx.h. - (htab_t gimplify_ctx::temp_htab): - Update dependent calls and types for new type hash_table. - (gimple_tree_hash): Move into gimplify_hasher in gimplify-ctx.h. - (gimple_tree_eq): Move into gimplify_hasher in gimplify-ctx.h. - - * gimplify-ctx.h: New. - (struct gimple_temp_hash_elt): Move from gimplify.c. - (class gimplify_hasher): New. - (struct gimplify_ctx): Move from gimple.h. - (htab_t gimplify_ctx::temp_htab): - Change type to hash_table. Update dependent calls and types. - - * graphite-clast-to-gimple.c: Include graphite-htab.h. - (htab_t ivs_params::newivs_index): - Change type to hash_table. Update dependent calls and types. - (htab_t ivs_params::params_index): Likewise. - (htab_t print_generated_program::params_index): Likewise. - (htab_t gloog::newivs_index): Likewise. - (htab_t gloog::params_index): Likewise. - - * graphite.c: Include graphite-htab.h. - 4htab_t graphite_transform_loops::bb_pbb_mapping): - Change type to hash_table. Update dependent calls and types. - - * graphite-clast-to-gimple.h: (extern gloog) Move to graphite-htab.h. - (bb_pbb_map_hash): Fold into bb_pbb_htab_type in graphite-htab.h. - (eq_bb_pbb_map): Fold into bb_pbb_htab_type in graphite-htab.h. - - * graphite-dependences.c: Include graphite-htab.h. - (loop_is_parallel_p): Change hash table type of parameter. - - * graphite-htab.h: New. - (typedef hash_table bb_pbb_htab_type): New. - (extern find_pbb_via_hash): Move from graphite-poly.h. - (extern loop_is_parallel_p): Move from graphite-poly.h. - (extern get_loop_body_pbbs): Move from graphite-poly.h. - - * graphite-poly.h (extern find_pbb_via_hash): Move to graphite-htab.h. - (extern loop_is_parallel_p): Move to graphite-htab.h. - (extern get_loop_body_pbbs): Move to graphite-htab.h. - - * haifa-sched.c (htab_t delay_htab): - Change type to hash_table. Update dependent calls and types. - (htab_t delay_htab_i2): Likewise. - - * ira-color.c (htab_t allocno_hard_regs_htab): - Change type to hash_table. Update dependent calls and types. - - * ira-costs.c (htab_t cost_classes_htab): - Change type to hash_table. Update dependent calls and types. - - * loop-invariant.c (htab_t merge_identical_invariants::eq): - Change type to hash_table. Update dependent calls and types. - - * loop-iv.c (htab_t bivs): - Change type to hash_table. Update dependent calls and types. - - * loop-unroll.c (htab_t opt_info::insns_to_split): - Change type to hash_table. Update dependent calls and types. - (htab_t opt_info::insns_with_var_to_expand): Likewise. - - * lto-streamer.h (struct string_slot): Move from data-streamer.h - (struct string_slot_hasher): New. - (htab_t output_block::string_hash_table): - Change type to hash_table. Update dependent calls and types. - - * lto-streamer-in.c (freeing_string_slot_hasher): New. - (htab_t file_name_hash_table): - Change type to hash_table. Update dependent calls and types. - - * lto-streamer-out.c: Update output_block::string_hash_table dependent - calls and types. - - * lto-streamer.c (htab_t tree_htab): - Change type to hash_table. Update dependent calls and types. - - * omp-low.c: Include gimplify-ctx.h. - - * passes.c (htab_t name_to_pass_map): - Change type to hash_table. Update dependent calls and types. - (pass_traverse): Rename to passes_pass_traverse. - - * plugin.c (htab_t event_tab): - Change type to hash_table. Update dependent calls and types. - - * postreload-gcse.c (htab_t expr_table): - Change type to hash_table. Update dependent calls and types. - (dump_hash_table_entry): Rename dump_expr_hash_table_entry. - - * sese.c (debug_rename_map_1): Make extern. - (htab_t copy_bb_and_scalar_dependences::rename_map): - Change type to hash_table. Update dependent calls and types. - - * sese.h (extern debug_rename_map): Move to .c file. - - * store-motion.c (htab_t store_motion_mems_table): - Change type to hash_table. Update dependent calls and types. - - * trans-mem.c (htab_t tm_new_mem_hash): - Change type to hash_table. Update dependent calls and types. - - * tree-browser.c (htab_t TB_up_ht): - Change type to hash_table. Update dependent calls and types. - - * tree-cfg.c (htab_t discriminator_per_locus): - Change type to hash_table. Update dependent calls and types. - - * tree-complex.c: Include tree-hasher.h - (htab_t complex_variable_components): - Change type to hash_table. Update dependent calls and types. - - * tree-eh.c (htab_t finally_tree): - Change type to hash_table. Update dependent calls and types. - - * tree-flow.h (extern int_tree_map_hash): Moved into tree-hasher - struct int_tree_hasher. - (extern int_tree_map_eq): Likewise. - (uid_decl_map_hash): Removed. - (extern decl_tree_map_eq): Likewise. - - * tree-hasher.h: New. - (struct int_tree_hasher): New. - (typedef int_tree_htab_type): New. - - * tree-inline.c: Include gimplify-ctx.h. - - * tree-mudflap.c: Include gimplify-ctx.h. - - * tree-parloops.c: Include tree-hasher.h. - (htab_t eliminate_local_variables_stmt::decl_address): - Change type to hash_table. Update dependent calls and types. - (htab_t separate_decls_in_region::decl_copies): Likewise. - - * tree-scalar-evolution.c (htab_t resolve_mixers::cache): - Change type to hash_table. Update dependent calls and types. - - * tree-sra.c (candidates): - Change type to hash_table. Update dependent calls and types. - - * tree-ssa.c (int_tree_map_eq): Moved into struct int_tree_hasher - in tree-flow.h. - (int_tree_map_hash): Likewise. - - * tree-ssa-dom.c (htab_t avail_exprs): - Change type to hash_table. Update dependent calls and types. - - * tree-ssa-live.c (var_map_base_init::tree_to_index): - Change type to hash_table. Update dependent calls and types. - - * tree-ssa-loop-ivopts.c (struct ivopts_data.inv_expr_tab): - Change type to hash_table. Update dependent calls and types. - - * tree-ssa-phiopt.c (seen_ssa_names): - Change type to hash_table. Update dependent calls and types. - - * tree-ssa-strlen.c (decl_to_stridxlist_htab): - Change type to hash_table. Update dependent calls and types. - - * tree-ssa-uncprop.c (equiv): - Change type to hash_table. Update dependent calls and types. - -2013-04-25 Jakub Jelinek - - PR rtl-optimization/57003 - * regcprop.c (copyprop_hardreg_forward_1): If ksvd.ignore_set_reg, - call note_stores with kill_clobbered_value callback again after - killing regs_invalidated_by_call. - -2013-04-25 James Greenhalgh - - * config/aarch64/aarch64-simd.md - (aarch64_simd_bsl_internal): Rewrite RTL to not use UNSPEC_BSL. - (aarch64_simd_bsl): Likewise. - * config/aarch64/iterators.md (unspec): Remove UNSPEC_BSL. - -2013-04-25 Marek Polacek - - PR tree-optimization/57066 - * builtins.c (fold_builtin_logb): Return +Inf for -Inf. - -2013-04-25 James Greenhalgh - - * config/aarch64/aarch64-simd.md (neg2): Use VDQ iterator. - -2013-04-25 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_fold_builtin): New. - * config/aarch64/aarch64-protos.h (aarch64_fold_builtin): New. - * config/aarch64/aarch64.c (TARGET_FOLD_BUILTIN): Define. - * config/aarch64/aarch64-simd-builtins.def (abs): New. - * config/aarch64/arm_neon.h - (vabs_): Implement using __builtin_aarch64_fabs. - -2013-04-25 James Greenhalgh - Tejas Belagod - - * config/aarch64/aarch64-builtins.c - (aarch64_gimple_fold_builtin): New. - * config/aarch64/aarch64-protos.h (aarch64_gimple_fold_builtin): New. - * config/aarch64/aarch64-simd-builtins.def (addv): New. - * config/aarch64/aarch64-simd.md (addpv4sf): New. - (addvv4sf): Update. - * config/aarch64/aarch64.c (TARGET_GIMPLE_FOLD_BUILTIN): Define. - -2013-04-25 Naveen H.S - - * config/aarch64/aarch64.md - (*cmp_swp__shft_): New pattern. - -2013-04-25 Naveen H.S - - * config/aarch64/aarch64.md (*ngc): New pattern. - (*ngcsi_uxtw): New pattern. - -2013-04-25 Kyrylo Tkachov - Julian Brown - - * config/arm/arm.c (neon_builtin_type_mode): Add T_V4HF. - (TB_DREG): Add T_V4HF. - (v4hf_UP): New macro. - (neon_itype): Add NEON_FLOAT_WIDEN, NEON_FLOAT_NARROW. - (arm_init_neon_builtins): Handle NEON_FLOAT_WIDEN, NEON_FLOAT_NARROW. - Handle initialisation of V4HF. Adjust initialisation of reinterpret - built-ins. - (arm_expand_neon_builtin): Handle NEON_FLOAT_WIDEN, NEON_FLOAT_NARROW. - (arm_vector_mode_supported_p): Handle V4HF. - (arm_mangle_map): Handle V4HFmode. - * config/arm/arm.h (VALID_NEON_DREG_MODE): Add V4HF. - * config/arm/arm_neon_builtins.def: Add entries for - vcvtv4hfv4sf, vcvtv4sfv4hf. - * config/arm/neon.md (neon_vcvtv4sfv4hf): New pattern. - (neon_vcvtv4hfv4sf): Likewise. - * config/arm/neon-gen.ml: Handle half-precision floating point - features. - * config/arm/neon-testgen.ml: Handle Requires_FP_bit feature. - * config/arm/arm_neon.h: Regenerate. - * config/arm/neon.ml (type elts): Add F16. - (type vectype): Add T_float16x4, T_floatHF. - (type vecmode): Add V4HF. - (type features): Add Requires_FP_bit feature. - (elt_width): Handle F16. - (elt_class): Likewise. - (elt_of_class_width): Likewise. - (mode_of_elt): Refactor. - (type_for_elt): Handle F16, fix error messages. - (vectype_size): Handle T_float16x4. - (vcvt_sh): New function. - (ops): Add entries for vcvt_f16_f32, vcvt_f32_f16. - (string_of_vectype): Handle T_floatHF, T_float16, T_float16x4. - (string_of_mode): Handle V4HF. - * doc/arm-neon-intrinsics.texi: Regenerate. - -2013-04-25 James Greenhalgh - - * config/aarch64/aarch64.c (aarch64_print_operand): Fix asm_fprintf - format specifier in 'X' case. - -2013-04-25 Alan Modra - - PR target/57052 - * config/rs6000/rs6000.md (rotlsi3_internal7): Rename to - rotlsi3_internal7le and condition on !BYTES_BIG_ENDIAN. - (rotlsi3_internal8be): New BYTES_BIG_ENDIAN insn. - Repeat for many other rotate/shift and mask patterns using subregs. - Name lshiftrt insns. - (ashrdisi3_noppc64): Rename to ashrdisi3_noppc64be and condition - on WORDS_BIG_ENDIAN. - -2013-04-25 Alan Modra - - * config.gcc: Support little-endian powerpc-linux targets. - * config/rs6000/linux.h (LINK_OS_LINUX_EMUL): Define. - (LINK_OS_LINUX_SPEC): Define. - * config/rs6000/linuxspe.h (TARGET_DEFAULT): - Preserve MASK_LITTLE_ENDIAN. - * config/rs6000/default64.h (TARGET_DEFAULT): Likewise. - * config/rs6000/linuxaltivec.h (TARGET_DEFAULT): Likewise. - * config/rs6000/linux64.h (OPTION_LITTLE_ENDIAN): Don't zero. - (LINK_OS_LINUX_EMUL32, LINK_OS_LINUX_EMUL64): Define. - (LINK_OS_LINUX_SPEC32, LINK_OS_LINUX_SPEC64): Use above. - * config/rs6000/rs6000.c (output_toc): Don't use .tc for TARGET_ELF. - Correct fp word order for little-endian. Don't shift toc entries - smaller than a word for little-endian. - * config/rs6000/rs6000.md (bswaphi2, bswapsi2 split): Comment. - (bswapdi2 splits): Correct low-part subreg for little-endian. - Remove wrong BYTES_BIG_ENDIAN tests, and rename vars to remove - low/high where such is correct only for be. - * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Allow - little-endian for -mcall-aixdesc. - -2013-04-25 Alan Modra - - * config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Use - replace_equiv_address_nv. - -2013-04-25 Alan Modra - - * config/rs6000/rs6000.c (rs6000_emit_set_long_const): Tidy. - -2013-04-24 Vladimir Makarov - - Revert: - 2013-04-24 Vladimir Makarov - * rtl.h (struct rtx_def): ... - -2013-04-24 Vladimir Makarov - - PR rtl-optimizations/57046 - * lra-constraints (split_reg): Set up lra_risky_transformations_p - for multi-reg splits. - -2013-04-24 H.J. Lu - - * config/i386/x86-64.h (ASM_SPEC): Support -mx32. - -2013-04-24 Sterling Augustine - - * dwarf2out.c (skeleton_debug_str_hash, add_skeleton_AT_string) - (comp_dir_string, debug_str_dwo_section): New. - (DEBUG_STR_DWO_SECTION): Rename to ... - (DEBUG_DWO_STR_SECTION): ... this. - (DEBUG_NORM_STR_SECTION): Delete. - (DEBUG_STR_SECTION, DEBUG_STR_SECTION_FLAGS): Edit definitions. - (DEBUG_STR_DWO_SECTION_FLAGS): New. - (find_AT_string): Move most logic to ... - (find_AT_string_in_table): ... here. New. - (add_top_level_skeleton_die_attrs): Call comp_dir_string and - add_skeleton_AT_string. Delete logic. - (output_skeleton_debug_sections): Remove call to - add_top_level_skeleton_die_attrs. - (add_comp_dir_attribute): Move logic to comp_dir_string. - (dwarf2out_init): Initialize debug_str_dwo_section. - (output_indirect_string): Call find_string_form. - (output_indirect_strings): Rewrite. - (prune_unused_types): Empty skeleton_debug_str_hash. - Call get_skeleton_type_unit and add_top_level_skeleton_die_attrs. - (dwarf2out_finish): Call output_indirect_strings. - -2013-04-24 Paolo Carlini - - * doc/cpp.texi: Remove __GXX_EXPERIMENTAL_CXX1Y__. - -2013-04-24 Vladimir Makarov - - * rtl.h (struct rtx_def): Add comment for field jump. - (LRA_SUBREG_P): New macro. - * recog.c (register_operand): Check LRA_SUBREG_P. - * lra.c (lra): Add note at the end of RTL code. Align non-empty - stack frame. - * lra-spills.c (lra_spill): Align stack after spilling pseudos. - (lra_final_code_change): Skip subreg change for operators. - * lra-eliminations.c (eliminate_regs_in_insn): Make return earlier - if there are no operand changes. - * lra-constraints.c (curr_insn_set): New. - (match_reload): Set LRA_SUBREG_P. - (emit_spill_move): Ditto. - (check_and_process_move): Use curr_insn_set. Process only single - set insns. Don't initialize sec_mem_p and change_p. - (simplify_operand_subreg): Use LRA_SUBREG_P. - (reg_in_class_p): New function. - (process_alt_operands): Use it. Use #if HAVE_ATTR_enabled instead - of #ifdef. Add code to remove cycling. - (process_address): Check EXTRA_CONSTRAINT_STR. Process even if - non-null disp. Reload inner instead of disp when base and index - are null. Try to put lo_sum into register. - (EBB_PROBABILITY_CUTOFF): Redefine probability in percents. - (check_and_process_move): Move code for move cost check to - simple_move_p. Remove equiv_substitution. - (simple_move_p): New function. - (curr_insn_transform): Initialize sec_mem_p and change_p. Set up - curr_insn_set. Call check_and_process_move only for single set - insns. Use the new function. Move call of check_and_process_move - after operand equiv substitution and address process. - -2013-04-24 James Greenhalgh - - * config/aarch64/arm_neon.h (vld1_lane*): Fix constraints. - (vld1_dup_<8, 16, 32, 64>): Likewise. - (vld1_<8, 16, 32, 64>): Likewise. - -2013-04-24 Paolo Carlini - - * doc/cpp.texi: Document __GXX_EXPERIMENTAL_CXX1Y__. - -2013-04-24 Marek Polacek - - * tree-scalar-evolution.h (analyze_scalar_evolution): Remove. - * tree-scalar-evolution.c (get_exit_conditions_rec): Likewise. - (select_loops_exit_conditions): Likewise. - (number_of_iterations_for_all_loops): Likewise. - (analyze_scalar_evolution_for_all_loop_phi_nodes): Likewise. - (scev_analysis): Likewise. - -2013-04-02 Catherine Moore - Chao-ying Fu - - * config/mips/micromips.md (jraddiusp): New pattern. - * config/mips/mips.c (mips_expand_epilogue): Use the JRADDIUSP - instruction if possible. - -2013-04-24 Alan Modra - - * config/rs6000/driver-rs6000.c (elf_dcachebsize): Fix comment pasto. - -2013-04-24 Julian Brown - Chung-Lin Tang - - * dwarf2out.c (gen_enumeration_type_die): Fix HOST_BITS_PER_WIDE_INT - dependency behavior in enumeration type DIE generation. Add TODO note - to comments about future DW_FORM_sdata/udata re-work of related code. - -2013-04-23 Lawrence Crowl - - * Makefile.in: Update as needed below. - - * hash-table.h (class hash_table): - Correct many methods with parameter types compare_type to the correct - value_type. (Correct code was unlikely to notice the change.) - (hash_table::elements_with_deleted) New. - (class hashtable::iterator): New. - (hashtable::begin()): New. - (hashtable::end()): New. - (FOR_EACH_HASH_TABLE_ELEMENT): New. - - * statistics.c (statistics_hashes): - Change type to hash_table. Update dependent calls and types. - - * tree-into-ssa.c (var_infos): - Change type to hash_table. Update dependent calls and types. - - * tree-ssa-coalesce.c (struct coalesce_list_d.list): - Change type to hash_table. Update dependent calls and types. - - * tree-ssa-loop-im.c (struct mem_ref.refs): - Change type to hash_table. Update dependent calls and types. - - * tree-ssa-reassoc.c (undistribute_ops_list::ctable): - Change type to hash_table. Update dependent calls and types. - - * tree-ssa-sccvn.c (vn_tables_s::nary): - Change type to hash_table. Update dependent calls and types. - (vn_tables_s::phis): Likewise. - (vn_tables_s::references): Likewise. - - * tree-ssa-sccvn.h (vn_nary_op_eq): Update parameter and return types. - (vn_reference_eq): Update parameter and return types. - - * tree-ssa-structalias.c (pointer_equiv_class_table): - Change type to hash_table. Update dependent calls and types. - (location_equiv_class_table): Likewise. - - * tree-vect-data-refs.c: Consequential changes for making - peeling a hash_table. - - * tree-vect-loop.c (new_loop_vec_info): Dependent hash_table update. - (destroy_loop_vec_info): Dependent hash_table update. - - * tree-vectorizer.h (peeling_htab): - Change type to hash_table. Update dependent calls and types. - -2013-04-23 Shiva Chen - - * lra-assigns.c (find_hard_regno_for): Use lra_reg_val_equal_p - to check the register content is equal or not. - * lra-constraints.c (match_reload): Use lra_assign_reg_val - to assign register content record. - * lra-eliminations.c (update_reg_eliminate): Use - lra_update_reg_val_offset to update register content offset. - * lra-int.h (struct lra_reg): Add offset member. - (lra_reg_val_equal_p): New static inline function. - (lra_update_reg_val_offset): New static inline function. - (lra_assign_reg_val): New static inline function. - * lra.c (lra_create_new_reg): Use lra_assign_reg_val - to assign register content record. - (initialize_lra_reg_info_element): Initial offset to zero. - -2013-04-23 Catherine Moore - - * config/mips/mips.md (*movhi_internal, *movqi_internal): New - operands. Record compression. - -2013-04-23 Xinliang David Li - - * cfghhooks.c (dump_bb_for_graph): Support 'slim' graph dump. - -2013-04-23 Richard Biener - - PR middle-end/57036 - * tree-inline.c (copy_edges_for_bb): Add can_make_abnormal_goto - parameter, only add abnormal goto edges from the copied body - if the call could perform abnormal gotos. - (copy_cfg_body): Adjust. - -2013-04-23 Sofiane Naci - - * config/aarch64/aarch64.md (*mov_aarch64): Add simd attribute. - -2013-04-23 Andreas Schwab - - * coretypes.h (gimple_stmt_iterator): Add struct to make - compatible with C. - -2013-04-23 Richard Biener - - PR tree-optimization/57026 - * tree-vrp.c (simplify_conversion_using_ranges): Do not propagate - from SSA names occuring in abnormal PHI nodes. - -2013-04-22 Andi Kleen - - * lto/lto.c (print_lto_report_1): Fix LTO report names. - -2013-04-22 Andi Kleen - - * lto/lto.c (print_lto_report_1): Declare early. - (read_cgraph_and_symbols): Call print_lto_report_1 early. - -2013-04-22 Andi Kleen - - * common.opt (-flto-report-wpa): Add. - * doc/invoke.texi (-flto-report-wpa): Add. - * lto/lto.c (do_whole_program_analysis): Check for lto-report-wpa. - (lto_main): dito. - -2013-04-22 Xinliang David Li - - * graph.c (draw_cfg_node_succ_edges): Add branch probility as label. - * cfghhooks.c (dump_bb_for_graph): Dump profile count and frquency. - * Makefile.in: New dependency - - David Daney - - * configure.ac (gcc_cv_as_micromips_support): Use the - --fatal-warnings option. - * configure: Regenerate. - -2013-04-22 Marek Polacek - - PR sanitizer/56990 - * tsan.c (instrument_expr): Don't instrument expression - in case its size is zero. - -2013-04-22 Uros Bizjak - - PR target/57032 - Revert: - 2013-03-17 Uros Bizjak - - * config/alpha/alpha.c (TARGET_LRA_P): New define. - -2013-04-22 James Greenhalgh - - * coretypes.h (gimple_stmt_iterator_d): Forward declare. - (gimple_stmt_iterator): New typedef. - * gimple.h (gimple_stmt_iterator): Rename to... - (gimple_stmt_iterator_d): ... This. - * doc/tm.texi.in (TARGET_FOLD_BUILTIN): Detail restriction that - trees be valid for GIMPLE and GENERIC. - (TARGET_GIMPLE_FOLD_BUILTIN): New. - * gimple-fold.c (gimple_fold_call): Call target hook - gimple_fold_builtin. - * hooks.c (hook_bool_gsiptr_false): New. - * hooks.h (hook_bool_gsiptr_false): New. - * target.def (fold_stmt): New. - * doc/tm.texi: Regenerate. - -2013-04-22 Vladimir Makarov - - PR target/57018 - * lra-eliminations.c (mark_not_eliminable): Prevent elimination of - a set sp if no stack realignment. - -2013-04-22 Nick Clifton - - * config.gcc (tilegx-linux): Extend extra_objs rather than - overwriting it. - (tilepro-linux): Likewise. - -2013-04-22 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (CF): Remove. - (CF0, CF1, CF2, CF3, CF4, CF10): New. - (VAR<1-12>): Add MAP parameter. - (BUILTIN_*): Likewise. - * config/aarch64/aarch64-simd-builtins.def: Set MAP parameter. - * config/aarch64/aarch64-simd.md (aarch64_sshl_n): Remove. - (aarch64_ushl_n): Likewise. - (aarch64_sshr_n): Likewise. - (aarch64_ushr_n): Likewise. - (aarch64_): Likewise. - (aarch64_sqrt): Likewise. - * config/aarch64/arm_neon.h (vshl_n_*): Use new builtin names. - (vshr_n_*): Likewise. - -2013-04-22 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_simd_builtin_type_mode): Handle SF types. - (sf_UP): Define. - (BUILTIN_GPF): Define. - (aarch64_init_simd_builtins): Handle SF types. - * config/aarch64/aarch64-simd-builtins.def (frecpe): Add support. - (frecps): Likewise. - (frecpx): Likewise. - * config/aarch64/aarch64-simd.md - (simd_types): Update simd_frcp to simd_frecp. - (aarch64_frecpe): New. - (aarch64_frecps): Likewise. - * config/aarch64/aarch64.md (unspec): Add UNSPEC_FRECP. - (v8type): Add frecp. - (aarch64_frecp): New. - (aarch64_frecps): Likewise. - * config/aarch64/iterators.md (FRECP): New. - (frecp_suffix): Likewise. - * config/aarch64/arm_neon.h - (vrecp_<32, 64>): Convert to using builtins. - -2013-04-22 Christian Bruel - - PR target/56995 - * config/sh/sh.h (enum reg_class): Remove DF_HI_REGS. - (REG_CLASS_NAMES): Idem. - (REG_CLASS_CONTENTS): Idem. - (REGCLASS_HAS_FP_REG): Idem. - * config/sh/sh.c (sh_cannot_change_mode_class): Idem. - (sh_conditional_register_usage): Idem. - -2013-04-21 Jeff Law - - * tree-ssa-forwprop.c (simplify_conversion_from_bitmask): New function. - (ssa_forward_propagate_and_combine): Use it. - -2013-04-19 Vladimir Makarov - - * lra.c: Update the flow chart diagram. - -2013-04-19 Vladimir Makarov - - PR rtl-optimization/56847 - * lra-constraints.c (process_alt_operands): Discourage alternative - with non-matche doffsettable memory constraint fro memory with - known offset. - -2013-04-19 Richard Biener - - PR tree-optimization/56982 - * builtins.def (BUILT_IN_LONGJMP): longjmp is not a leaf - function. - * gimplify.c (gimplify_call_expr): Notice special calls. - (gimplify_modify_expr): Likewise. - * tree-cfg.c (make_abnormal_goto_edges): Handle setjmp-like - abnormal control flow receivers. - (call_can_make_abnormal_goto): Handle cfun->calls_setjmp - in the same way as cfun->has_nonlocal_labels. - (gimple_purge_dead_abnormal_call_edges): Likewise. - (stmt_starts_bb_p): Make setjmp-like abnormal control flow - receivers start a basic-block. - -2013-04-19 Richard Biener - - * tree-vectorizer.h (struct _slp_instance): Move load_permutation - member ... - (struct _slp_tree): ... here. Make it a vector of unsigned ints. - (SLP_INSTANCE_LOAD_PERMUTATION): Remove. - (SLP_TREE_LOAD_PERMUTATION): Add. - (vect_transform_slp_perm_load): Adjust prototype. - * tree-vect-slp.c (vect_free_slp_tree): Adjust. - (vect_free_slp_instance): Likewise. - (vect_create_new_slp_node): Likewise. - (vect_supported_slp_permutation_p): Remove. - (vect_slp_rearrange_stmts): Adjust. - (vect_supported_load_permutation_p): Likewise. Inline - vect_supported_slp_permutation_p here. - (vect_analyze_slp_instance): Compute load permutations per - slp node instead of per instance. - (vect_get_slp_defs): Adjust. - (vect_transform_slp_perm_load): Likewise. - (vect_schedule_slp_instance): Remove redundant code. - (vect_schedule_slp): Remove hack for PR56270, add it ... - * tree-vect-stmts.c (vectorizable_load): ... here, do not - CSE loads for SLP. Adjust. - -2013-04-19 Greta Yorsh - - * config/arm/arm.c (load_multiple_sequence, ldm_stm_operation_p): Fix - spelling in two comments. - -2013-04-19 Greta Yorsh - - PR target/56797 - * config/arm/arm.c (load_multiple_sequence): Require SP - as base register for loads if SP is in the register list. - -2013-04-19 Martin Jambor - - PR tree-optimization/56718 - * ipa-cp.c (ipa_value_from_known_type_jfunc): Moved... - * ipa-prop.c (ipa_binfo_from_known_type_jfunc): ...here, renamed - and made public. Adjusted all callers. - (ipa_intraprocedural_devirtualization): New function. - * ipa-prop.h (ipa_binfo_from_known_type_jfunc): Declare. - (ipa_intraprocedural_devirtualization): Likewise. - * Makefile.in (tree-ssa-pre.o): Add ipa-prop.h to dependencies. - -2013-04-19 Richard Biener - - PR tree-optimization/57000 - * tree-ssa-reassoc.c (pass_reassoc): Add TODO_update_ssa_only_virtuals. - -2013-04-19 Terry Guo - - * config/arm/cortex-m4-fpu.md (cortex_m4_v): Delete cpu unit. - Replace with ... - (cortex_m4_v_a, cortex_m4_v_b): ... new cpu units. - (cortex_m4_v, cortex_m4_exa_va, cortex_m4_exb_vb): New reservations. - (cortex_m4_fmacs): Use new reservations. - (cortex_m4_f_load, cortex_m4_f_store): Likewise. - -2013-04-18 Vladimir Makarov - - PR rtl-optimization/56999 - * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and - related code. - (lra_coalesce): Remove split_origin_bitmap and related code. - * lra.c (lra): Coalesce after undoing inheritance. Recreate live - ranges if necessary. - -2013-04-18 Uros Bizjak - - * config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): - New array. - (ix86_expand_call): Remove clobbered_registers array and use - x86_64_ms_sysv_extra_clobbered_registers instead. - * config/i386/i386.h (x86_64_ms_sysv_extra_clobbered_registers): - Declare here. - * config/i386/predicates.md (call_rex64_ms_sysv_operation): New - predicate. - * config/i386/i386.md (*call_rex64_ms_sysv): Use - call_rex64_ms_sysv_operation predicate. Remove explicit clobbers. - (*call_value_rex64_ms_sysv): Ditto. - -2013-04-18 Cary Coutant - - * dwarf2out.c (output_pubnames): Check die_perennial_p of - parent instead of die_mark. - -2013-04-18 Diego Novillo - - * gimple.c (create_gimple_tmp): New. - (get_expr_type): New. - (build_assign): New. - (build_type_cast): New. - * gimple.h (enum ssa_mode): Define. - (gimple_seq_set_location): New. - * asan.c (build_check_stmt): Change some gimple_build_* calls - to use build_assign and build_type_cast. - -2013-04-18 Richard Biener - - * tree-vect-data-refs.c (vect_analyze_group_access): Properly - handle negative step. Remove redundant checks. - (vect_create_data_ref_ptr): Avoid ICEs with non-constant steps. - * tree-vect-stmts.c (vectorizable_load): Instead of asserting - for negative step and grouped loads fail to vectorize. - -2013-04-18 Steven Bosscher - - * emit-rtl.c (reset_insn_used_flags): New function. - (reset_all_used_flags): Use it. - (verify_insn_sharing): New function. - (verify_rtl_sharing): Fix verification for SEQUENCEs. - -2013-04-18 Jakub Jelinek - - PR tree-optimization/56984 - * tree-vrp.c (register_edge_assert_for_2): For (x >> M) < N - and (x >> M) >= N don't register any assertion if N << M is the - minimum value. - -2013-04-18 Steven Bosscher - - * lower-subreg.c (resolve_simple_move): If called self-recursive, - do not delete_insn insns that have not yet been emitted, only - unlink them with remove_insn. - * df-scan.c (df_insn_delete): Revert r197492. - -2013-04-17 Steven Bosscher - - * emit-rtl.c (link_insn_into_chain): Handle chaining of SEQUENCEs. - * reorg.c (emit_delay_sequence): Simplify with emit-rtl API. - -2013-04-17 Greta Yorsh - - * config/arm/arm.md (movsicc_insn): Convert define_insn into - define_insn_and_split. - (and_scc,ior_scc,negscc): Likewise. - (cmpsi2_addneg, subsi3_compare): Convert to named patterns. - -2013-04-17 Greta Yorsh - - * config/arm/arm.c (use_return_insn): Return 0 for targets that - can benefit from using a sequence of LDRD instructions in epilogue - instead of a single LDM instruction. - -2013-04-17 Manuel López-Ibáñez - - PR 45688 - * doc/extend.texi: Fix typo. - -2013-04-17 Richard Biener - - * tree-vect-slp.c (vect_build_slp_tree_1): Split out from ... - (vect_build_slp_tree): ... here. - (vect_build_slp_tree_1): Compute which stmts of the SLP group - match. Remove special-casing of mismatched complex loads. - (vect_build_slp_tree): Based on the result from vect_build_slp_tree_1 - re-try the match with swapped commutative operands. - (vect_supported_load_permutation_p): Remove special-casing of - mismatched complex loads. - (vect_analyze_slp_instance): Adjust. - -2013-04-17 Richard Biener - - PR rtl-optimization/56921 - * cfgloop.h (struct loop): Add simple_loop_desc member. - (struct niter_desc): Mark with GTY(()). - (simple_loop_desc): Do not use aux field but simple_loop_desc. - * loop-iv.c (get_simple_loop_desc): Likewise. - (free_simple_loop_desc): Likewise. - - Revert - 2013-04-16 Richard Biener - - PR rtl-optimization/56921 - * loop-init.c (pass_rtl_move_loop_invariants): Add - TODO_do_not_ggc_collect to todo_flags_finish. - (pass_rtl_unswitch): Same. - (pass_rtl_unroll_and_peel_loops): Same. - (pass_rtl_doloop): Same. - -2013-04-17 Eric Botcazou - - * tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): New. - (decl_refs_may_alias_p): Add REF1 and REF2 parameters. - Use nonoverlapping_component_refs_of_decl_p to disambiguate component - references. - (refs_may_alias_p_1): Adjust call to decl_refs_may_alias_p. - * tree-streamer.c (record_common_node): Adjust reference in comment. - -2013-04-17 Terry Guo - - * config/arm/cortex-m4.md: Add a new bypass. - -2013-04-16 Naveen H.S - - * config/aarch64/aarch64.md (*adds__multp2): - New pattern. - (*subs__multp2): New pattern. - (*adds__): New pattern. - (*subs__): New pattern. - -2013-04-16 Naveen H.S - - * config/aarch64/aarch64.md (*adds_mul_imm_): New pattern. - (*subs_mul_imm_): New pattern. - -2013-04-16 David Edelsohn - - PR target/56948 - * config/rs6000/vsx.md (vsx_mov): Add j->r alternative. - (vsx_movti_64bit): Change j->wa to O->wa. Add n->r alternative. - (vsx_movti_32bit): Change j->wa to O->wa. - -2013-04-16 Richard Biener - - PR rtl-optimization/56921 - * loop-init.c (pass_rtl_move_loop_invariants): Add - TODO_do_not_ggc_collect to todo_flags_finish. - (pass_rtl_unswitch): Same. - (pass_rtl_unroll_and_peel_loops): Same. - (pass_rtl_doloop): Same. - -2013-04-16 Greta Yorsh - - * config/arm/arm.c (emit_multi_reg_push): New declaration - for an existing function. - (arm_emit_strd_push): New function. - (arm_expand_prologue): Used here. - (arm_emit_ldrd_pop): New function. - (arm_expand_epilogue): Used here. - (arm_get_frame_offsets): Update condition. - (arm_emit_multi_reg_pop): Add a special case for load of a single - register with writeback. - -2013-04-16 Uros Bizjak - - * doc/invoke.texi (i386 Option): Reword -mstack-protector-guard - description. - -2013-04-16 Richard Biener - - PR tree-optimization/56756 - * tree-ssa-loop-im.c (struct first_mem_ref_loc_1): New functor. - (first_mem_ref_loc): New. - (execute_sm): Place the load temporarily before a previous - access instead of in the latch edge to ensure its SSA dependencies - are defined at points dominating the load. - -2013-04-16 Steven Bosscher - - * cfgrtl.c (cfg_layout_merge_blocks): Revert r184005, implement - correct fix by moving header and footer insn to the footer of - the merged basic block. Clear BB_END of the merged-away block. - - PR middle-end/43631 - * emit-rtl.c (make_note_raw): New function. - (link_insn_into_chain): New static inline function. - (add_insn): Use it. - (add_insn_before, add_insn_after): Factor insn chain linking code... - (add_insn_before_nobb, add_insn_after_nobb): ...here, new functions - using link_insn_into_chain. - (note_outside_basic_block_p): New helper function for emit_note_after - and emit_note_before. - (emit_note_after): Use nobb variant of add_insn_after if the note - should not be contained in a basic block. - (emit_note_before): Use nobb variant of add_insn_before if the note - should not be contained in a basic block. - (emit_note_copy): Use make_note_raw. - (emit_note): Likewise. - * bb-reorder.c (insert_section_boundary_note): Remove hack to set - BLOCK_FOR_INSN to NULL manually for NOTE_INSN_SWITCH_TEXT_SECTIONS. - * jump.c (cleanup_barriers): Use reorder_insns_nobb to avoid making - the moved barrier the tail of the basic block it follows. - * var-tracking.c (pass_variable_tracking): Add TODO_verify_flow. - -2013-04-15 Jakub Jelinek - - PR tree-optimization/56962 - * gimple-ssa-strength-reduction.c (record_increment): Only set - initializer if gimple_assign_rhs_code is {,POINTER_}PLUS_EXPR and - either rhs1 or rhs2 is equal to c->base_expr. - -2013-04-15 Richard Biener - - PR tree-optimization/56933 - * tree-vectorizer.h (struct _stmt_vec_info): Remove read_write_dep - member. - (GROUP_READ_WRITE_DEPENDENCE): Remove. - (STMT_VINFO_GROUP_READ_WRITE_DEPENDENCE): Likewise. - * tree-vect-data-refs.c (vect_analyze_group_access): Move - dependence check ... - vect_analyze_data_ref_dependence (vect_analyze_data_ref_dependence): - ... here. - * tree-vect-stmts.c (new_stmt_vec_info): Do not initialize - GROUP_READ_WRITE_DEPENDENCE. - -2013-04-15 Andreas Krebbel - - * emit-rtl.c (reset_all_used_flags): New function. - (verify_rtl_sharing): Call reset_all_used_flags before and after - performing the checks. - -2013-04-15 Kyrylo Tkachov - - * config/arm/arm.c (const_ok_for_dimode_op): Handle AND case. - * config/arm/arm.md (*anddi3_insn): Change to insn_and_split. - * config/arm/constraints.md (De): New constraint. - * config/arm/neon.md (anddi3_neon): Delete. - (neon_vand): Expand to standard anddi3 pattern. - * config/arm/predicates.md (imm_for_neon_inv_logic_operand): - Move earlier in the file. - (neon_inv_logic_op2): Likewise. - (arm_anddi_operand_neon): New predicate. - -2013-04-15 Rainer Orth - - * configure.ac (gcc_cv_ld_as_needed): Set - gcc_cv_ld_as_needed_option, gcc_cv_no_as_needed_option. - Use -z ignore, -z record on *-*-solaris2*. - (HAVE_LD_AS_NEEDED): Update comment. - (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Define. - * configure: Regenerate. - * config.in: Regenerate. - * gcc.c (init_gcc_specs) [USE_LD_AS_NEEDED]: Use - LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION. - * config/sol2.h [HAVE_LD_AS_NEEDED] (USE_LD_AS_NEEDED): Define. - * doc/tm.texi.in (USE_LD_AS_NEEDED): Allow for --as-needed - equivalents. Fix markup. - * doc/tm.texi: Regenerate. - -2013-04-15 Andrew Hsieh - - * config/i386/i386.opt: New option mstack-protector-guard=. - * config/i386/i386-opts.h: Add enum stack_protector_guard. - * config/i386/i386.h: Define TARGET_SSP_GLOBAL_GUARD and - TARGET_SSP_TLS_GUARD. - * config/i386/i386.c (ix86_option_override_internal): Set - ix86_stack_protector_guard. - * config/i386/i386.md (stack_protect_set): Enable for - TARGET_SSP_TLS_GUARD only. - (stack_protect_set_): Ditto. - (stack_protect_test): Ditto. - (stack_protect_test_): Ditto. - * doc/invoke.texi (i386 Option): Document. - -2013-04-15 Eric Botcazou - - PR target/56890 - * config/sparc/sparc.c (enum sparc_mode_class): Add H_MODE value. - (S_MODES): Set H_MODE bit. - (SF_MODES): Set only S_MODE and SF_MODE bits. - (DF_MODES): Set SF_MODES and only D_MODE and DF_MODE bits. - (sparc_init_modes) : Set H_MODE bit for sub-word modes. - : Do not set SF_MODE for sub-word modes. - : Likewise. - -2013-04-15 Joey Ye - - * config/arm/arm.c (thumb_far_jump_used_p): Fix typo in comments. - -2013-04-15 Joey Ye - - * config/arm/arm.c (thumb1_final_prescan_insn): Assert lr save - for real far jump. - (thumb_far_jump_used_p): Count instruction size and set - far_jump_used. - -2013-04-14 Eric Botcazou - - * reorg.c (fill_simple_delay_slots): Reindent block of code. - * resource.c (mark_target_live_regs): Reformat conditional block. - -2013-04-13 Steven Bosscher - - * sched-deps.c (deps_analyze_insn): Do not check for EH_REGION insn - notes, they are emitted only just before final. - * sched-int.h: Include insn-attr.h before checking INSN_SCHEDULING. - -2013-04-13 Steven Bosscher - - * emit-rtl.c (remove_insn): Do not call df_insn_delete here. - * cfgrtl.c (delete_insn): Call it here instead. - * lra-spills.c (lra_final_code_change): Use delete_insn. - * haifa-sched.c (sched_remove_insn): Likewise. - * sel-sched-ir.c (return_nop_to_pool): Clear INSN_DELETED_P for nops - returning to the nop pool. - (sel_remove_insn): Simplify the only_disconnect case via remove_insn, - use delete_insn for definitive removal. Clear BLOCK_FOR_INSN. - -2013-04-12 Steven Bosscher - - * doc/tm.texi.in (LOOP_ALIGN): Remove loop note references. - * doc/tm.texi: Regenerated. - -2013-04-12 Uros Bizjak - - * config/i386/i386.c (ix86_hard_regno_mode_ok): Use ANY_QI_REGNO_P in - QImode checks. - -2013-04-12 Steven Bosscher - - * df-core.c (df_find_def): Compare register numbers. - (df_find_use): Likewise. - -2013-04-12 Vladimir Makarov - - PR target/56903 - * config/i386/i386.c (ix86_hard_regno_mode_ok): Add - lra_in_progress for return. - -2013-04-12 Greta Yorsh - - * config/arm/arm.md (mov_scc,mov_negscc,mov_notscc): Convert - define_insn into define_insn_and_split and emit movsicc patterns. - -2013-04-12 Greta Yorsh - - * config/arm/arm.c (gen_operands_ldrd_strd): Initialize "base". - -2013-04-12 Richard Biener - - * tree-pass.h (TODO_do_not_ggc_collect): New. - * passes.c (execute_one_ipa_transform_pass): Honor - TODO_do_not_ggc_collect. - (execute_one_pass): Likewise. - - Revert - 2013-04-10 Richard Biener - - * passes.c (init_optimization_passes): Remove reload pass. - * ira.c (do_reload): Merge into ... - (ira): ... this. - (rest_of_handle_reload): Remove. - (pass_reload): Likewise. - * config/i386/i386.c (ix86_option_override): Refer to ira instead - of reload for vzeroupper pass placement. - -2013-04-12 Jakub Jelinek - - PR tree-optimization/56918 - PR tree-optimization/56920 - * fold-const.c (int_const_binop_1): Use op1.mul_with_sign (op2, ...) - instead of op1 - op2. Pass 2 * TYPE_PRECISION (type) as second - argument to rshift method. For 2 * HOST_BITS_PER_WIDE_INT precision - use wide_mul_with_sign method. - -2013-04-12 Richard Biener - - * gimple.c (is_gimple_constant): Vector CONSTRUCTORs should - not be considered a gimple constant. - -2013-04-12 Marc Glisse - - * fold-const.c (const_binop): Handle vector shifts by a scalar. - (fold_binary_loc): Call const_binop also for mixed vector-scalar - operations. - -2013-04-12 Manuel López-Ibáñez - Jakub Jelinek - - * opts.c: Include diagnostic-color.h. - (common_handle_option): Handle OPT_fdiagnostics_color_. - * Makefile.in (OBJS-libcommon): Add diagnostic-color.o. - (diagnostic.o, opts.o, pretty-print.o): Depend on diagnostic-color.h. - (diagnostic-color.o): New. - * common.opt (fdiagnostics-color, fdiagnostics-color=): New options. - (diagnostic_color_rule): New enum. - * dwarf2out.c (gen_producer_string): Don't print -fdiagnostics-color*. - * langhooks.c (lhd_print_error_function): Add %r "locus" and %R around - the location string. - * diagnostic.def: Add 3rd argument to DEFINE_DIAGNOSTIC_KIND macros, - either NULL, or color kind. - * diagnostic-color.c: New file. - * diagnostic-color.h: New file. - * diagnostic-core.h (DEFINE_DIAGNOSTIC_KIND): Adjust macro for 3 - arguments. - * doc/invoke.texi (-fdiagnostics-color): Document. - * pretty-print.h (pp_show_color): Define. - (struct pretty_print_info): Add show_color field. - * diagnostic.c: Include diagnostic-color.h. - (diagnostic_build_prefix): Adjust for 3 argument DEFINE_DIAGNOSTIC_KIND - macros. Colorize error:, warning: etc. strings and also the location - string. - (diagnostic_show_locus): Colorize the caret line. - * pretty-print.c: Include diagnostic-color.h. - (pp_base_format): Handle %r and %R format specifiers. Colorize strings - inside of %< %> quotes or quoted through q format modifier. - -2013-04-12 Andreas Krebbel - - * ifcvt.c (end_ifcvt_sequence): Mark a and b for unsharing as well. - -2013-04-11 Naveen H.S - - * config/aarch64/aarch64.c (aarch64_select_cc_mode): Allow NEG - code in CC_NZ mode. - * config/aarch64/aarch64.md (*neg_3_compare0): New - pattern. - -2013-04-11 Marek Polacek - - PR tree-optimization/48184 - * params.def (PARAM_ALIGN_THRESHOLD): Increase the minimum value to 1. - -2013-04-11 Eric Botcazou - - * stor-layout.c (skip_simple_constant_arithmetic): Move to... - * tree.c (skip_simple_constant_arithmetic): ...here and make public. - (skip_simple_arithmetic): Tidy up. - * tree.h (skip_simple_constant_arithmetic): Declare. - -2013-04-11 Naveen H.S - - * config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Define. - -2013-04-11 Richard Biener - - * tree-vect-loop.c (get_initial_def_for_induction): Properly - generate vector constants. - -2013-04-11 Richard Biener - - PR tree-optimization/56878 - * tree-flow.h (outermost_invariant_loop_for_expr): Declare. - * tree-ssa-loop-ivopts.c (outermost_invariant_loop_for_expr): - New function. - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): - Prefer to align the DR with the most invariant base address. - -2013-04-11 Senthil Kumar Selvaraj - - * opts.c (common_handle_option): Fix formatting and add FALLTHRU - comment. - -2013-04-11 James Greenhalgh - - * config/aarch64/aarch64-simd.md (aarch64_vcond_internal): Fix - floating-point vector comparisons against 0. - -2013-04-11 Jakub Jelinek - - PR tree-optimization/56899 - * fold-const.c (extract_muldiv_1): Apply distributive law - only if TYPE_OVERFLOW_WRAPS (ctype). - -2013-04-11 Bin Cheng - - PR target/56124 - * ira-costs.c (scan_one_insn): Check whether the source rtx of - loading has side effect. - -2013-04-10 Steven Bosscher - - * config/sparc/sparc.c: Include tree-pass.h. - (TARGET_MACHINE_DEPENDENT_REORG): Do not redefine. - (sparc_reorg): Rename to sparc_do_work_around_errata. Move to - head of file. Change return type. Split off gate function. - (sparc_gate_work_around_errata): New function. - (pass_work_around_errata): New pass definition. - (insert_pass_work_around_errata) New pass insert definition to - insert pass_work_around_errata just after delayed-branch scheduling. - (sparc_option_override): Insert the pass. - * config/sparc/t-sparc (sparc.o): Add TREE_PASS_H dependence. - -2013-04-10 David S. Miller - - * config/sparc/sparc.h (ASM_CPU_SPEC): Pass -Av8 if -mcpu=supersparc - or -mcpu=hypersparc. - - * target.def (cstore_mode): New hook. - * target.h: Include insn-codes.h - * targhooks.c: Likewise. - (default_cstore_mode): New function. - * targhooks.h: Declare it. - * doc/tm.texi.in: New hook slot for TARGET_CSTORE_MODE. - * doc/tm.texi: Rebuild. - * expmed.c (emit_cstore): Obtain cstore boolean result mode using - target hook, rather than inspecting the insn_data. - * config/sparc/sparc.c (sparc_cstore_mode): New function. - (TARGET_CSTORE_MODE): Redefine. - (emit_scc_insn): When TARGET_ARCH64, emit new 64-bit boolean - result patterns. - * config/sparc/predicates.md (cstore_result_operand): New special - predicate. - * config/sparc/sparc.md (cstoresi4, cstoredi4, cstore4): - Use it for operand 0. - (*seqsi_special): Rewrite using 'P' mode iterator on operand 0. - (*snesi_special): Likewise. - (*snesi_zero): Likewise. - (*seqsi_zero): Likewise. - (*sltu_insn): Likewise. - (*sgeu_insn): Likewise. - (*seqdi_special): Make operand 0 and comparison operation be of - DImode. - (*snedi_special): Likewise. - (*snedi_special_vis3): Likewise. - (*neg_snesi_zero): Rename to *neg_snesisi_zero. - (*neg_snesi_sign_extend): Rename to *neg_snesidi_zero. - (*snesi_zero_extend): Delete, covered by 'P' mode iterator. - (*neg_seqsi_zero): Rename to *neg_seqsisi_zero. - (*neg_seqsi_sign_extend): Rename to *neg_seqsidi_zero. - (*seqsi_zero_extend): Delete, covered by 'P' mode iterator. - (*sltu_extend_sp64): Likewise. - (*neg_sltu_insn): Rename to *neg_sltusi_insn. - (*neg_sltu_extend_sp64): Rename to *neg_sltudi_insn. - (*sgeu_extend_sp64): Delete, covered by 'P' mode iterator. - (*neg_sgeu_insn): Rename to *neg_sgeusi_insn. - (*neg_sgeu_extend_sp64): Rename to *neg_sgeudi_insn. - -2013-04-10 Yufeng Zhang - - * config/aarch64/aarch64.c (aarch64_print_extension): New function. - (aarch64_start_file): Use the new function. - -2013-04-10 Senthil Kumar Selvaraj - Jason Merrill - - * common.opt: Add -gdwarf. - * opts.c (common_handle_option): Handle it. - * gcc.c (ASM_DEBUG_SPEC): Don't expect "-2" for DWARF. - -2013-04-10 Richard Biener - - * passes.c (execute_todo): Do not call ggc_collect conditional here. - (execute_one_ipa_transform_pass): But unconditionally here. - (execute_one_pass): And here. - (init_optimization_passes): Remove reload pass. - * tree-pass.h (TODO_ggc_collect): Remove. - (pass_reload): Likewise. - * ira.c (do_reload): Merge into ... - (ira): ... this. - (rest_of_handle_reload): Remove. - (pass_reload): Likewise. - * config/i386/i386.c (ix86_option_override): Refer to ira instead - of reload for vzeroupper pass placement. - * : Remove TODO_ggc_collect from todo_flags_start - and todo_flags_finish of all passes. - -2013-04-10 Richard Biener - - * tree-vectorizer.h (struct _slp_oprnd_info): Remove - first_const_oprnd field, rename first_def_type to first_op_type. - * tree-vect-slp.c (vect_create_oprnd_info): Adjust. - (vect_get_and_check_slp_defs): Always use the type of the - operand. Allow mixed vect_external_def, vect_constant_def types. - (vect_get_constant_vectors): Handle mixed vect_external_def, - vect_constant_def types. - -2013-04-10 Joern Rennecke - - PR tree-optimization/55524 - * tree-ssa-math-opts.c - (convert_mult_to_fma): Don't use an fms construct - when we don't have an fms operation, but fnma, and it looks - likely that we'll be able to use the latter. - -2013-04-10 Zhouyi Zhou - - * cif-code.def (OVERWRITABLE): Correct the comment for overwritable - function. - * ipa-inline.c (can_inline_edge_p): Let dump mechanism report the - inline fail caused by overwritable functions. - -2013-04-10 Chung-Ju Wu - - * combine.c (simplify_compare_const): Use GET_MODE_MASK to filter out - unnecessary bits in the constant power of two case. - -2013-04-10 Richard Biener - - * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove - broken code swapping operands. - (vect_build_slp_tree): Do not compute load permutations here. - (vect_analyze_slp_instance): Compute load permutations here, - after building the SLP tree. - -2013-04-09 Christian Bruel - - * config/sh/sh.md (barrier_align): Use next/prev_active_insn instead - of next/prev_real_insn. - -2013-04-09 Jan Hubicka - - * ipa.c (cgraph_externally_visible_p, varpool_externally_visible_p): - Drop aliased parameter. - (function_and_variable_visibility): Do not handle alias pairs. - * cgraph.c (varpool_externally_visible_p): Update prototype. - * varpool.c (varpool_add_new_variable): Update. - -2013-04-09 Kyrylo Tkachov - - * config/arm/arm.md (minmax_arithsi_non_canon): New pattern. - -2013-04-09 Steven Bosscher - - * sched-vis.c (print_pattern): Print SEQUENCE of insns as insns. - - * config/sparc/sparc.md: Use define_c_enum for "unspec" and "unspecv". - -2013-04-09 Marek Polacek - - PR tree-optimization/48762 - * params.def (PARAM_MAX_CSE_INSNS): Increase the minimum value to 1. - -2013-04-09 Richard Biener - - * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove code - dealing with cost. - (vect_build_slp_tree): Likewise. - (vect_analyze_slp_cost_1, vect_analyze_slp_cost): New functions - calculating the cost of a SLP instance. - (vect_analyze_slp_instance): Use it from here, after building - the SLP tree. - -2013-04-09 Jakub Jelinek - - PR middle-end/56883 - * omp-low.c (expand_omp_for_generic, expand_omp_for_static_nochunk, - expand_omp_for_static_chunk): Use simple_p = true in - force_gimple_operand_gsi calls when assigning to addressable decls. - -2013-04-09 Jeff Law - - * tree-vrp.c (simplify_cond_using_ranges): Simplify test of boolean - when the boolean was created by converting a wider object which - had a boolean range. - -2013-04-09 Richard Biener - - * tree-vectorizer.h (slp_void_p): Remove. - (slp_tree): Typedef before _slp_tree declaration. - (struct _slp_tree): Use a vector of slp_tree as children. - (vect_get_place_in_interleaving_chain): Remove. - * tree-vect-data-refs.c (vect_get_place_in_interleaving_chain): - Move ... - * tree-vect-slp.c (vect_get_place_in_interleaving_chain): ... here - and make static. - (vect_free_slp_tree, vect_print_slp_tree, vect_mark_slp_stmts, - vect_mark_slp_stmts_relevant, vect_slp_rearrange_stmts, - vect_detect_hybrid_slp_stmts, vect_slp_analyze_node_operations, - vect_schedule_slp_instance, vect_remove_slp_scalar_calls): - Use slp_node instead of slp_void_p and adjust. - -2013-04-09 Richard Biener - - * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa): Avoid - work that is not necessary. - -2013-04-09 Jakub Jelinek - - PR tree-optimization/56854 - * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't - forward into clobber stmts if it would change MEM_REF lhs into - non-MEM_REF. - -2013-04-09 Maxim Kuvyrkov - - * tree.c (type_hash_lookup, type_hash_add): Make static. - * tree.h (type_hash_lookup, type_hash_add): Remove global declarations. - -2013-04-09 Richard Biener - - * tree.h (unsave_expr_now): Remove. - * tree-inline.c (mark_local_for_remap_r): Remove. - (unsave_expr_1): Likewise. - (unsave_r): Likewise. - (unsave_expr_now): Likewise. - * tree-ssa-copy.c (replace_exp_1): Use unshare_expr. - (propagate_tree_value): Likewise. - -2013-04-08 Steven Bosscher - - * doc/rtl.texi (sequence): Rewrite documentation to match the - current use of SEQUENCE rtl objects. - * rtl.def (SEQUENCE): Likewise. - - * doc/rtl.texi (NOTE_INSN_EH_REGION_BEG, NOTE_INSN_EH_REGION_END): - Update documentation. - (NOTE_INSN_LOOP_BEG, NOTE_INSN_LOOP_END, NOTE_INSN_LOOP_CONT, - NOTE_INSN_LOOP_VTOP): Remove documentation for non-existing notes. - - * reg-notes.def (REG_EH_CONTEXT): Remove unused note. - -2013-04-08 Teresa Johnson - - * basic-block.h (GCOV_COMPUTE_SCALE): Define. - * ipa-inline-analysis.c (param_change_prob): Use helper rounding divide - methods. - (estimate_edge_size_and_time): Add comment to suggest using rounding - methods. - (estimate_node_size_and_time): Ditto. - (remap_edge_change_prob): Use helper rounding divide methods. - * value-prof.c (gimple_divmod_fixed_value_transform): Ditto. - (gimple_mod_pow2_value_transform): Ditto. - (gimple_mod_subtract_transform): Ditto. - (gimple_ic_transform): Ditto. - (gimple_stringops_transform): Ditto. - * stmt.c (conditional_probability): Ditto. - (emit_case_dispatch_table): Ditto. - * lto-cgraph.c (merge_profile_summaries): Ditto. - * tree-optimize.c (execute_fixup_cfg): Ditto. - * cfgcleanup.c (try_forward_edges): Ditto. - * cfgloopmanip.c (scale_loop_profile): Ditto. - (loopify): Ditto. - (duplicate_loop_to_header_edge): Ditto. - (lv_adjust_loop_entry_edge): Ditto. - * tree-vect-loop.c (vect_transform_loop): Ditto. - * profile.c (compute_branch_probabilities): Ditto. - * cfgbuild.c (compute_outgoing_frequencies): Ditto. - * lto-streamer-in.c (input_cfg): Ditto. - * gimple-streamer-in.c (input_bb): Ditto. - * ipa-cp.c (update_profiling_info): Ditto. - (update_specialized_profile): Ditto. - * tree-vect-loop-manip.c (slpeel_tree_peel_loop_to_edge): Ditto. - * cfg.c (update_bb_profile_for_threading): Add comment to suggest using - rounding methods. - * sched-rgn.c (compute_dom_prob_ps): Ditto. - (compute_trg_info): Ditto. - * cfgrtl.c (force_nonfallthru_and_redirect): Ditto. - (purge_dead_edges): Ditto. - * loop-unswitch.c (unswitch_loop): Ditto. - * cgraphclones.c (cgraph_clone_edge): Ditto. - (cgraph_clone_node): Ditto. - * tree-inline.c (copy_bb): Ditto. - (copy_edges_for_bb): Ditto. - (initialize_cfun): Ditto. - (copy_cfg_body): Ditto. - (expand_call_inline): Ditto. - -2013-04-08 Kai Tietz - - * config/i386/cygwin.h (EXTRA_OS_CPP_BUILTINS): Replaced - TARGET_CYGWIN64 by TARGET_64BIT. - -2013-04-08 Joern Rennecke - - * config/epiphany/epiphany.md (GPR_1): New constant. - (define_expand "movcc): FAIL if gen_compare_reg returned 0. - * config/epiphany/epiphany.c (gen_compare_reg): - For flag_finite_math_only, avoid swapping operands when r0 and/or r1 - is already in place. - Use GPR_0 / GPR_1 instead of 0/1 for r0/r1 register numbers. - Don't require being called during rtl expansion; If y operlaps r0, - return 0. - (epiphany_compute_frame_size, epiphany_expand_prologue): Use GPR_1. - (epiphany_expand_epilogue): Likewise. - - * config/epiphany/epiphany.c (epiphany_select_cc_mode): - Don't use CC_FPmode for ORDERED / UNORDERED. - * config/epiphany/epiphany.md (cmpsf_ord): Make pattern unconditional. - - * config/epiphany/constraints.md (CnL): New constraint. - * config/epiphany/epiphany.md (addsi3_i): Add r/r/CnL alternative. - * config/epiphany/predicates.md (add_operand): Allow 1024. - - * config/epiphany/epiphany.md (logical_op): New code iterator. - (op_mnc): New code attribute. - (_f, mov_f, cstoresi4): New patterns. - (mov_f+1, mov_f+2): New peephole2 patterns. - - * config/epiphany/epiphany.md (mov_f+2): New peephole2 pattern. - (cstoresi4): Also allow re-use of zero result when doing a NE - comparison to a non-zero operand. - Use (clobber (scratch)) for first insn if the gpr output is not needed. - - * config/epiphany/epiphany.md (v2si3): - Use gen_addsi3_i / gen_subsi3_i. - -2013-04-08 Jakub Jelinek - - PR c++/34949 - PR c++/50243 - * tree-eh.c (optimize_clobbers): Only remove clobbers if bb doesn't - contain anything but clobbers, at most one __builtin_stack_restore, - optionally debug stmts and final resx, and if it has at least one - incoming EH edge. Don't check for SSA_NAME on LHS of a clobber. - (sink_clobbers): Don't check for SSA_NAME on LHS of a clobber. - Instead of moving clobbers with MEM_REF LHS with SSA_NAME address - which isn't defaut definition, remove them. - (unsplit_eh, cleanup_empty_eh): Use single_{pred,succ}_{p,edge} - instead of EDGE_COUNT comparisons or EDGE_{PRED,SUCC}. - * tree-ssa-ccp.c (execute_fold_all_builtins): Remove clobbers - with MEM_REF LHS with SSA_NAME address. - -2013-04-08 Jeff Law - - * gimple.c (canonicalize_cond_expr_cond): Rewrite x ^ y into x != y. - -2013-04-08 Richard Biener - - * gimple-pretty-print.c (debug_gimple_stmt): Do not print - extra newline. - * tree-vect-loop.c (vect_determine_vectorization_factor): Dump - determined vector type. - (vect_analyze_data_refs): Likewise. - (vect_get_new_vect_var): Adjust. - (vect_create_destination_var): Preserve SSA name versions. - * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Do - not dump anything here. - -2013-04-08 Joern Rennecke - - * config/epiphany/epiphany.h (struct GTY (()) machine_function): - Add member lr_slot_known. - * config/epiphany/epiphany.md (reload_insi_ra): Compute lr_slot_offs - if necessary. - * config/epiphany/epiphany.c (epiphany_compute_frame_size): - Remove code that sets lr_slot_offset according to what a previous - version of epiphany_emit_save_restore used to do. - (epiphany_emit_save_restore): When doing an lr save or restore, - set/verify lr_slot_known and lr_slot_offset. - -2013-04-08 Xinyu Qi - - PR target/54338 - * config/arm/arm.h (REG_CLASS_CONTENTS): Include IWMMXT_GR_REGS - in ALL_REGS. - -2013-04-08 Richard Biener - - * alias.c (find_base_term): Fix thinko in previous change. - -2013-04-08 Jakub Jelinek - - * tree-loop-distribution.c (const_with_all_bytes_same): New function. - (generate_memset_builtin): Only handle integer_all_onesp as -1 val if - TYPE_PRECISION is equal to mode bitsize. Use const_with_all_bytes_same - if possible to compute val. - (classify_partition): Verify CONSTRUCTOR doesn't have any elts. - For QImode integers don't require anything about precision. Use - const_with_all_bytes_same to find out if the constant doesn't have - repeated bytes in it. - -2013-04-08 Andreas Krebbel - - * config/s390/s390.c (s390_expand_insv): Only accept insertions - within mode size. - -2013-04-08 Marek Polacek - - PR rtl-optimization/48182 - * params.def (PARAM_MIN_CROSSJUMP_INSNS): Increase the minimum - value to 1. - -2013-04-06 John David Anglin - - PR target/55487 - * config/pa/pa.c (legitimize_pic_address): Before incrementing label - nuses, make sure we have a label. - -2013-04-05 Bill Schmidt - - PR target/56843 - * config/rs6000/rs6000.c (rs6000_emit_swdiv_high_precision): Remove. - (rs6000_emit_swdiv_low_precision): Remove. - (rs6000_emit_swdiv): Rewrite to handle between one and four - iterations of Newton-Raphson generally; modify required number of - iterations for some cases. - * config/rs6000/rs6000.h (RS6000_RECIP_HIGH_PRECISION_P): Remove. - -2013-04-05 Steven Bosscher - - * bb-reorder.c (fix_crossing_unconditional_branches): Remove a - set-but-unused variable. - - * cgraph.c (cgraph_release_function_body): Clear cfun->cfg to make - basic blocks of released function bodies garbage-collectable. - - * ree.c (find_and_remove_re): Do not call df_finish_pass here. - (struct rtl_opt_pass): Add TODO_df_finish. - - * rtl.def (DEFINE_SUBST, DEFINE_SUBST_ATTR): Add documentation. - -2013-04-05 Greta Yorsh - - * config/arm/constraints.md (q): New constraint. - * config/arm/ldrdstrd.md: New file. - * config/arm/arm.md (ldrdstrd.md) New include. - (arm_movdi): Use "q" instead of "r" constraint - for double-word memory access. - (movdf_soft_insn): Likewise. - * config/arm/vfp.md (movdi_vfp): Likewise. - * config/arm/t-arm (MD_INCLUDES): Add ldrdstrd.md. - * config/arm/arm-protos.h (gen_operands_ldrd_strd): New declaration. - * config/arm/arm.c (gen_operands_ldrd_strd): New function. - (mem_ok_for_ldrd_strd): Likewise. - (output_move_double): Update assertion. - -2013-04-05 Greta Yorsh - - * config/arm/arm.md: Comment on splitting Thumb1 patterns. - -2013-04-05 Greta Yorsh - - * config/arm/arm.md (arm_smax_insn): Convert define_insn into - define_insn_and_split. - (arm_smin_insn,arm_umaxsi3,arm_uminsi3): Likewise. - -2013-04-05 Greta Yorsh - - * config/arm/arm.md (arm_ashldi3_1bit): Convert define_insn into - define_insn_and_split. - (arm_ashrdi3_1bit,arm_lshrdi3_1bit): Likewise. - (shiftsi3_compare): New pattern. - (rrx): New pattern. - * config/arm/unspecs.md (UNSPEC_RRX): New. - -2013-04-05 Greta Yorsh - - * config/arm/arm.md (negdi_extendsidi): New pattern. - (negdi_zero_extendsidi): Likewise. - -2013-04-05 Greta Yorsh - - * config/arm/arm.md (andsi_iorsi3_notsi): Convert define_insn into - define_insn_and_split. - (arm_negdi2,arm_abssi2,arm_neg_abssi2): Likewise. - (arm_cmpdi_insn,arm_cmpdi_unsigned): Likewise. - -2013-04-05 Greta Yorsh - - * config/arm/arm.md (arm_subdi3): Convert define_insn into - define_insn_and_split. - (subdi_di_zesidi,subdi_di_sesidi): Likewise. - (subdi_zesidi_di,subdi_sesidi_di,subdi_zesidi_zesidi): Likewise. - -2013-04-05 Greta Yorsh - - * config/arm/arm.md (subsi3_carryin): New pattern. - (subsi3_carryin_const): Likewise. - (subsi3_carryin_compare,subsi3_carryin_compare_const): Likewise. - (subsi3_carryin_shift,rsbsi3_carryin_shift): Likewise. - -2013-04-05 Greta Yorsh - - * config/arm/arm.md (incscc,arm_incscc,decscc,arm_decscc): Delete. - -2013-04-05 Greta Yorsh - - * config/arm/arm.md (addsi3_carryin_): Set attribute predicable. - (addsi3_carryin_alt2_,addsi3_carryin_shift_): Likewise. - -2013-04-05 Kyrylo Tkachov - - * config/arm/arm.c (arm_expand_builtin): Change fcode - type to unsigned int. - -2013-04-05 Ramana Radhakrishnan - - * doc/invoke.texi (ARM Options): Document cortex-a53 support. - -2013-04-04 Ian Lance Taylor - - * doc/standards.texi (Standards): The Go frontend supports the Go 1 - language standard. - -2013-04-04 Steven Bosscher - - PR middle-end/56729 - * df-scan.c (df_insn_delete): Disable failing assert. - -2013-04-04 Kyrylo Tkachov - - * config/arm/arm-protos.h (arm_builtin_vectorized_function): - New function prototype. - * config/arm/arm.c (TARGET_VECTORIZE_BUILTINS): Define. - (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Likewise. - (arm_builtin_vectorized_function): New function. - -2013-04-04 Kyrylo Tkachov - - * config/arm/arm_neon_builtins.def: New file. - * config/arm/arm.c (neon_builtin_data): Move contents to - arm_neon_builtins.def. - (enum arm_builtins): Include neon builtin definitions. - (ARM_BUILTIN_NEON_BASE): Move from enum to macro. - * config/arm/t-arm (arm.o): Add dependency on arm_neon_builtins.def. - -2013-04-04 Marek Polacek - - PR tree-optimization/48186 - * predict.c (maybe_hot_frequency_p): Return false if - HOT_BB_FREQUENCY_FRACTION is 0. - (cgraph_maybe_hot_edge_p): Likewise. - -2013-04-04 Richard Biener - - PR tree-optimization/56826 - * tree-vect-slp.c (vect_build_slp_tree): Compute ncopies - more accurately. - -2013-04-04 Richard Biener - - PR tree-optimization/56213 - * tree-vect-data-refs.c (vect_check_strided_load): Remove. - (vect_analyze_data_refs): Allow all non-nested loads as strided loads. - -2013-04-04 Richard Biener - - PR tree-optimization/56837 - * tree-loop-distribution.c (classify_partition): For non-zero - values require that the value has the same precision as its - mode to be useful as memset value. - -2013-04-03 Nick Clifton - - * config/v850/v850e3v5.md (fmasf4): Use fmaf.s on E3V5 architectures. - (fmssf4): Use fmsf.s on E3V5 architectures. - (fnmasf4): Use fnmaf.s on E3V5 architectures. - (fnmssf4): Use fnmsf.s on E3V5 architectures. - -2013-04-03 Jeff Law - - * Makefile.in (lra-constraints.o): Depend on $(OPTABS_H). - (lra-eliminations.o): Likewise. - -2013-04-03 Teresa Johnson - - * gcov-io.c (compute_working_sets): Moved most of body of old - compute_working_sets here from profile.c. - * gcov-io.h (NUM_GCOV_WORKING_SETS): Moved here from profile.c. - (gcov_working_set_t): Moved typedef here from basic-block.h - (compute_working_set): Declare. - * profile.c (NUM_GCOV_WORKING_SETS): Moved to gcov-io.h. - (get_working_sets): Renamed from compute_working_set, - replace most of body with call to new compute_working_sets. - (get_exec_counts): Replace call to compute_working_sets - to get_working_sets. - * profile.h (get_working_sets): Renamed from compute_working_set. - * lto-cgraph.c (input_symtab): Replace call to compute_working_sets - to get_working_sets. - * basic-block.h (gcov_working_set_t): Moved to gcov-io.h. - * gcov-dump.c (dump_working_sets): New function. - -2013-04-03 Kenneth Zadeck - - * hwint.c (sext_hwi, zext_hwi): New functions. - * hwint.h (HOST_BITS_PER_HALF_WIDE_INT, HOST_HALF_WIDE_INT, - HOST_HALF_WIDE_INT_PRINT, HOST_HALF_WIDE_INT_PRINT_C, - HOST_HALF_WIDE_INT_PRINT_DEC, HOST_HALF_WIDE_INT_PRINT_DEC_C, - HOST_HALF_WIDE_INT_PRINT_UNSIGNED, HOST_HALF_WIDE_INT_PRINT_HEX, - HOST_HALF_WIDE_INT_PRINT_HEX_PURE): New symbols. - (sext_hwi, zext_hwi): New functions. - -2013-04-03 Jeff Law - - PR tree-optimization/56799 - * tree-ssa-dom.c (record_equivalences_from_incoming_edge): Bring - back test for widening conversion erroneously dropped in prior change. - -2013-04-03 Kyrylo Tkachov - - PR target/56809 - * config/aarch64/aarch64.c (is_jump_table): Use next_active_insn - instead of next_real_insn. - -2013-04-03 Marek Polacek - - PR sanitizer/55702 - * tsan.c (instrument_func_exit): Allow BUILT_IN_RETURN functions. - -2013-04-03 Kyrylo Tkachov - - PR target/56809 - * config/arm/arm.c (is_jump_table): Use next_active_insn instead of - next_real_insn. - (thumb1_output_casesi): Likewise. - (thumb2_output_casesi): Likewise. - -2013-04-03 Richard Biener - - PR tree-optimization/56817 - * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): - Split out ... - (tree_unroll_loops_completely_1): ... new function to manually - walk the loop tree, properly defering outer loops of unrolled - loops to later iterations. - -2013-04-03 Marc Glisse - - * tree-vect-stmts.c (vectorizable_store): Accept BIT_FIELD_REF. - (vectorizable_load): Likewise. - * tree-vect-slp.c (vect_build_slp_tree): Likewise. - * tree-vect-data-refs.c (vect_create_data_ref_ptr): Handle VECTOR_TYPE. - -2013-04-03 Marc Glisse - - * tree-flow-inline.h (get_addr_base_and_unit_offset_1): Handle - BIT_FIELD_REF. - -2013-04-03 Ulrich Weigand - - * config/spu/spu.c (emit_nop_for_insn): Handle JUMP_TABLE_DATA. - -2013-04-03 Bin Cheng - - * rtl.h (AUTO_INC_DEC): Fix typo of HAVE_POST_MODIFY_DISP. - -2013-04-03 Marc Glisse - - PR tree-optimization/56790 - * fold-const.c (fold_ternary_loc) : Add constant - folding. - -2013-04-03 Marc Glisse - - * simplify-rtx.c (simplify_binary_operation_1) : - Handle VEC_MERGE. - (simplify_ternary_operation) : Use unsigned HOST_WIDE_INT - for masks. Test for side effects. Handle nested VEC_MERGE. Handle - equal arguments. - -2013-04-03 Jakub Jelinek - - PR c/19449 - * tree.h (force_folding_builtin_constant_p): New decl. - * builtins.c (force_folding_builtin_constant_p): New variable. - (fold_builtin_constant_p): Fold immediately also if - force_folding_builtin_constant_p. - -2013-04-03 Richard Biener - - PR tree-optimization/56812 - * tree-vect-data-refs.c (vect_slp_analyze_data_ref_dependence): - DRs of the same interleaving chain are independent. - -2013-04-02 Jason Merrill - - * gdbinit.in (pbb): Use debug fn. - -2013-04-02 Lawrence Crowl - - * sese.h (struct ivtype_map_elt_s): Remove unused. - (extern debug_ivtype_map): Remove unused. - (extern eq_ivtype_map_elts): Remove unused. - * sese.c (debug_ivtype_map): Removed unused. - (debug_ivtype_map_1): Removed unused. - (debug_ivtype_elt): Remove unused. - (eq_ivtype_map_elts): Remove unused. - -2013-04-02 Kai Tietz - - PR target/52790 - * config/i386/cygming.h (SUB_TARGET_RECORD_STUB): New sub-target macro. - * config/i386/i386-protos.h (i386_pe_record_stub): Add new prototype. - * config/i386/i386.c (legitimize_pe_coff_extern_decl): New static - function. - (legitimize_pe_coff_symbol): Likewise. - (is_imported_p): New helper-function. - (ix86_option_override_internal): Make MEDIUM_PIC the default code-model - for Windows x64 targets. - (ix86_expand_prologue): Optimize for pe-coff targets. - (ix86_expand_split_stack_prologue): Adjust for pe-coff targets. - (legitimate_pic_address_disp_p): Adjust for x64 pe-coff to support - medium/large code-model. - (legitimize_pic_address): Likewise. - (legitimize_tls_address): Likewise. - (ix86_expand_call): Likewise. - (x86_output_mi_thunk): Likewise. - (get_dllimport_decl): Add new beimport argument. - (construct_plt_address): Don't assert for x64 pe-coff targets. - * config/i386/i386.h (PIC_OFFSET_TABLE_REGNUM): Adjust for x64 pe-coff - targets. - (SYMBOL_FLAG_STUBVAR): New macro. - (SYMBOL_REF_STUBVAR_P): Likewise. - * config/i386/winnt.c (stub_list): New structure. - (stub_head): New local variable. - (i386_pe_record_stub): New function. - (i386_pe_file_end): Emit refptr-stubs. - -2013-04-02 Jakub Jelinek - - PR rtl-optimization/56745 - * ifcvt.c (cond_exec_find_if_block): Don't try to optimize - if then_bb has no successors and else_bb is EXIT_BLOCK_PTR. - - PR c++/34949 - * tree-ssa-alias.c (stmt_kills_ref_p_1): If base != ref->base - and both of them are MEM_REFs, just compare first argument for - equality and attempt to deal even with differing offsets. - - PR c++/34949 - * tree-cfg.c (verify_gimple_assign_single): Allow lhs - of gimple_clobber_p to be MEM_REF. - * gimplify.c (gimplify_modify_expr): Gimplify *to_p of - an assignment from TREE_CLOBBER_P. Allow it to be MEM_REF - after gimplification. - * asan.c (get_mem_ref_of_assignment): Don't instrument - gimple_clobber_p stmts. - * tree-ssa-dse.c (dse_optimize_stmt): Allow DSE of - gimple_clobber_p stmt if they have MEM_REF lhs and - are dead because of another gimple_clobber_p stmt. - * tree-ssa-live.c (clear_unused_block_pointer): Treat - gimple_clobber_p stmts like debug stmts. - (remove_unused_locals): Remove clobbers with MEM_REF lhs - that refer to unused VAR_DECLs or uninitialized values. - * tree-sra.c (sra_ipa_reset_debug_stmts): Also remove - gimple_clobber_p stmts if they refer to removed parameters. - (get_repl_default_def_ssa_name, sra_ipa_modify_expr): Fix up - formatting. - -2013-04-02 Uros Bizjak - - * config/i386/i386.md (*testqi_ext_3): Merge with *testqi_ext_3_rex64 - using SWI48 mode attribute. - -2013-04-02 Wei Mi - - * config/i386/i386.c (ix86_rtx_costs): Set proper rtx cost for - ashl3_mask, *3_mask and - *3_mask in i386.md. - -2013-04-02 Alexander Ivchenko - - * config.gcc (arm*-*-linux-*): Remove duplicate t-linux-android. - -2013-04-02 Richard Biener - - PR tree-optimization/56778 - * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): - Runtime alias tests are not supported for gather loads. - * tree-vect-loop-manip.c (vect_loop_versioning): Insert - stmts referenced from SSA operands before updating SSA form. - -2013-04-02 Ian Caulfield - Ramana Radhakrishnan - - * config/arm/arm-arches.def (armv8-a): Default to cortex-a53. - * config/arm/t-arm (MD_INCLUDES): Depend on cortex-a53.md. - * config/arm/cortex-a53.md: New file. - * config/arm/bpabi.h (BE8_LINK_SPEC): Handle cortex-a53. - * config/arm/arm.md (generic_sched, generic_vfp): Handle cortex-a53. - * config/arm/arm.c (arm_issue_rate): Likewise. - * config/arm/arm-tune.md: Regenerate - * config/arm/arm-tables.opt: Regenerate. - * config/arm/arm-cores.def: Add cortex-a53. - -2013-04-02 Zhenqiang Chen - - * config/arm/uclinux-elf.h: Add %L to LINK_GCC_C_SEQUENCE_SPEC for - non-static link. - -2013-04-02 Sofiane Naci - - * config/aarch64/aarch64.md (*mov_aarch64): Add variants for - scalar load/store operations using B/H registers. - (*zero_extend2_aarch64): Likewise. - -2013-04-02 Sofiane Naci - - * config/aarch64/aarch64.md (*mov_aarch64): Add alternatives for - scalar move. - * config/aarch64/aarch64.c - (aarch64_simd_scalar_immediate_valid_for_move): New. - * config/aarch64/aarch64-protos.h - (aarch64_simd_scalar_immediate_valid_for_move): New. - * config/aarch64/constraints.md (Dh, Dq): New. - * config/aarch64/iterators.md (hq): New. - -2013-04-02 Eric Botcazou - - * reorg.c (get_branch_condition): Deal with conditional returns. - (fill_simple_delay_slots): Remove dead code dealing with jumps. - -2013-04-01 Wei Mi - - * config/i386/i386.md (*ashl3_mask): Rewrite as define_insn. - Truncate operand 2 using %b asm operand modifier. - (*3_mask): Ditto. - (*3_mask): Ditto. - -2013-04-01 Steven Bosscher - - PR middle-end/56798 - * cfgbuild.c (inside_basic_block_p): Restore check broken at r197234. - -2013-03-31 Kaz Kojima - - * config/sh/sh.md (casesi_worker_1): Use next_active_insn instead - of next_real_insn. - (casesi_worker_2, casesi_shift_media, casesi_load_media): Likewise. - -2013-03-30 Lawrence Crowl - - * dse.c (clear_alias_sets): Remove never set. - (disqualified_clear_alias_sets): Remove never set. - (clear_alias_mode_pool): Remove never set. - (dse_step0): Remove condition that is never true. - (canon_address): Remove condition that is never true. - (dse_step7): Remove condition that is never true. - (rest_of_handle_dse): Remove condition that is never true. - (rest_of_handle_dse::did_global): Remove never read from above. - (dse_step2_spill): Remove never called from above. - (dse_step5_spill): Remove never called from above. - -2013-03-30 Steven Bosscher - - * doc/md.texi (Standard Names) : Update documentation for - JUMP_TABLE_DATA changes. - * doc/tm.texi.in (Dispatch Tables) : Likewise. - * doc/rtl.texi (Flags) : Likewise. - (Insns) : New entry. - * doc/tm.texi: Regenerate. - - * cfgrtl.c (fixup_reorder_chain): Do not emit barriers to BB_FOOTER. - - * postreload-gcse.c (bb_has_well_behaved_predecessors): Correct test - for table jump at the end of a basic block using tablejump_p. - * targhooks.c (default_invalid_within_doloop): Likewise. - * config/rs6000/rs6000.c (TARGET_INVALID_WITHIN_DOLOOP): Remove - target hook implementation that is identical to the default hook. - (rs6000_invalid_within_doloop): Remove. - - * bb-reorder.c (fix_crossing_unconditional_branches): Remove set but - unused variable from tablejump_p call. - - * rtl.def (JUMP_TABLE_DATA): New RTX_INSN object. - * rtl.h (RTX_PREV, RTX_NEXT): Adjust for new JUMP_TABLE_DATA. - (INSN_DELETED_P): Likewise. - (emit_jump_table_data): New prototype. - * gengtype.c (adjust_field_rtx_def): Handle JUMP_TABLE_DATA fields - after 4th as unused. - * print-rtl.c (print_rtl): Handle JUMP_TABLE_DATA. - * sched-vis.c (print_insn): Likewise. - * emit-rtl.c (active_insn_p): Consider JUMP_TABLE_DATA an active - insn for compatibility with back ends that use next_active_insn to - identify jump table data. - (set_insn_deleted): Remove no longer useful JUMP_TABLE_DATA_P check. - (remove_insn): Likewise. - (emit_insn): Do not accept JUMP_TABLE_DATA objects in insn chains - to be emitted. - (emit_debug_insn, emit_jump_insn, emit_call_insn, emit_label): Idem. - (emit_jump_table_data): New function. - - * cfgbuild.c (inside_basic_block_p): A JUMP_INSN is always inside a - basic block, a JUMP_TABLE_DATA never is. - (control_flow_insn_p): JUMP_TABLE_DATA is not a control flow insn. - * cfgrtl.c (duplicate_insn_chain): Split handling of JUMP_TABLE_DATA - off from code handling real insns. - * final.c (get_attr_length_1): Simplify for JUMP_INSNs. - * function.c (instantiate_virtual_regs): Remove JUMP_TABLE_DATA_P - test, now redundant because JUMP_TABLE_DATA is not an INSN_P insn. - * gcse.c (insert_insn_end_basic_block): Likewise, JUMP_TABLE_DATA_P - is not a NONDEBUG_INSN_P. - * ira-costs.c (scan_one_insn): Likewise. - * jump.c (mark_all_labels): Likewise. - (mark_jump_label_1): Likewise. - * lra-eliminations.c (eliminate_regs_in_insn): Likewise. - * lra.c (get_insn_freq): Expect all insns reaching here to be in - a basic block. - (check_rtl): Remove JUMP_TABLE_DATA_P test, not a NONDEBUG_INSN_P insn. - * predict.c (expensive_function_p): Use FOR_BB_INSNS. - * reload1.c (calculate_needs_all_insns): Call set_label_offsets for - JUMP_TABLE_DATA_P insns. - (calculate_elim_costs_all_insns): Likewise. - (set_label_offsets): Recurse on the PATTERN of JUMP_TABLE_DATA insns. - (elimination_costs_in_insn): Remove redundant JUMP_TABLE_DATA_P test. - (delete_output_reload): Code style fixups. - * reorg.c (dbr_schedule): Move JUMP_TABLE_DATA_P up to avoid setting - insn flags on this non-insn. - * sched-rgn.c (add_branch_dependences): Treat JUMP_TABLE_DATA insns - as scheduling barriers, for pre-change compatibility. - * stmt.c (emit_case_dispatch_table): Emit jump table data not as - JUMP_INSN objects but instead as JUMP_TABLE_DATA objects. - - * config/alpha/alpha.c (alpha_does_function_need_gp): Remove - redundant JUMP_TABLE_DATA_P test. - * config/arm/arm.c (thumb_far_jump_used_p): Likewise. - * config/frv/frv.c (frv_function_contains_far_jump): Likewise. - (frv_for_each_packet): Likewise. - * config/i386/i386.c (min_insn_size): Likewise. - (ix86_avoid_jump_mispredicts): Likewise. - * config/m32r/m32r.c (m32r_is_insn): Likewise. - * config/mep/mep.c (mep_reorg_erepeat): Likewise. - * config/mips/mips.c (USEFUL_INSN_P): Likewise. - (mips16_insn_length): Robustify. - (mips_has_long_branch_p): Remove redundant JUMP_TABLE_DATA_P test. - (mips16_split_long_branches): Likewise. - * config/pa/pa.c (pa_combine_instructions): Likewise. - * config/rs6000/rs6000.c (get_next_active_insn): Treat - JUMP_TABLE_DATA objects as active insns, like in active_insn_p. - * config/s390/s390.c (s390_chunkify_start): Treat JUMP_TABLE_DATA - as contributing to pool range lengths. - * config/sh/sh.c (find_barrier): Restore check for ADDR_DIFF_VEC. - Remove redundant JUMP_TABLE_DATA_P test. - (sh_loop_align): Likewise. - (split_branches): Likewise. - (sh_insn_length_adjustment): Likewise. - * config/spu/spu.c (get_branch_target): Likewise. - -2013-03-29 Jan Hubicka - - * lto-cgraph.c (output_profile_summary, input_profile_summary): Use - gcov streaming; stream hot bb threshold to ltrans. - * predict.c (get_hot_bb_threshold): Break out from .... - (maybe_hot_count_p): ... here. - (set_hot_bb_threshold): New function. - * lto-section-in.c (lto_section_name): Add profile. - * profile.h (get_hot_bb_threshold, set_hot_bb_threshold): Declare. - * ipa.c: Include hash-table.h, tree-inline.h, profile.h, lto-streamer.h - and data-streamer.h - (histogram_entry): New structure. - (histogram, histogram_pool): New global vars. - (histogram_hash): New structure. - (histogram_hash::hash): New method. - (histogram_hash::equal): Likewise. - (account_time_size): New function. - (cmp_counts): New function. - (dump_histogram): New function. - (ipa_profile_generate_summary): New function. - (ipa_profile_write_summary): New function. - (ipa_profile_read_summary): New function. - (ipa_profile): Decide on threshold. - (pass_ipa_profile): Add ipa_profile_write_summary and - ipa_profile_read_summary. - * Makefile.in (ipa.o): Update dependencies. - * lto-streamer.h (LTO_section_ipa_profile): New section. - -2013-03-29 Gabriel Dos Reis - - * tree.h (VAR_P): New. - -2013-03-29 Paolo Carlini - - PR lto/56777 - * doc/invoke.texi ([-fwhole-program]): Fix typo. - -2013-03-29 Steven Bosscher - - * cfgbuild.c (inside_basic_block_p): Use JUMP_TABLE_DATA_P in lieu - of tests for JUMP_P and a ADDR_DIFF_VEC or ADDR_VEC pattern. - (control_flow_insn_p): Likewise. - * cfgrtl.c (duplicate_insn_chain): Likewise. - * final.c (get_attr_length_1): Likewise. - (shorten_branches): Likewise. - (final_scan_insn): Likewise. - * function.c (instantiate_virtual_regs): Likewise. - * gcse.c (insert_insn_end_basic_block): Likewise. - * ira-costs.c (scan_one_insn): Likewise. - * lra-eliminations.c (eliminate_regs_in_insn): Likewise. - * lra.c (check_rtl): Likewise. - * reload1.c (elimination_costs_in_insn): Likewise. - * reorg.c (follow_jumps): Likewise. - - * config/arm/arm.c (is_jump_table): Use JUMP_TABLE_DATA_P in lieu - of tests for JUMP_P and a ADDR_DIFF_VEC or ADDR_VEC pattern. - (thumb_far_jump_used_p): Likewise. - * config/bfin/bfin.c (workaround_rts_anomaly): Likewise. - (workaround_speculation): Likewise. - (add_sched_insns_for_speculation): Likewise. - * config/c6x/c6x.c (reorg_emit_nops): Likewise. - * config/frv/frv.c (frv_function_contains_far_jump): Likewise. - (frv_for_each_packet): Likewise. - * config/i386/i386.c (ix86_avoid_jump_mispredicts): Likewise. - * config/ia64/ia64.c (emit_all_insn_group_barriers): Likewise. - (final_emit_insn_group_barriers): Likewise. - * config/m32r/m32r.c (m32r_is_insn): Likewise. - * config/mips/mips.c (USEFUL_INSN_P): Likewise. - (mips16_insn_length): Likewise. - * config/pa/pa.c (pa_reorg): Likewise. - (pa_combine_instructions): Likewise. - * config/rs6000/rs6000.c (rs6000_invalid_within_doloop): Likewise. - * config/sh/sh.c (fixup_addr_diff_vecs): Likewise. - (sh_reorg): Likewise. - (split_branches): Likewise. - * config/spu/spu.c (get_branch_target): Likewise. - - * config/s390/s390.c (s390_chunkify_start): Simplify logic using - JUMP_TABLE_DATA_P. - -2013-03-29 Kirill Yukhin - - * config/i386/avx2intrin.h (_mm256_broadcastsi128_si256): - Fix declaration name. - -2013-03-28 Lawrence Crowl - - * graphds.h (struct graph.indicies): Remove unused. - * graphite-poly.h (struct graph.original_pddrs): Remove unused. - (SCOP_ORIGINAL_PDDRS): Remove unused. - * sese.h (extern insert_loop_close_phis): Removed unused. - (extern insert_guard_phis): Removed unused. - (extern ivtype_map_elt_info): Removed unused. - (new_ivtype_map_elt): Removed unused. - * sese.c (ivtype_map_elt_info): Removed unused. - -2013-03-28 Lawrence Crowl - - * Makefile.in: Add several missing include dependences. - (DUMPFILE_H): New. - (test-dump.o): New. This object is not added to any executable, - but is present for ad-hoc testing. - * bitmap.c - (debug (const bitmap_head_def &)): New. - (debug (const bitmap_head_def *)): New. - * bitmap.h - (extern debug (const bitmap_head_def &)): New. - (extern debug (const bitmap_head_def *)): New. - * cfg.c - (debug (edge_def &)): New. - (debug (edge_def *)): New. - * cfghooks.c - (debug (basic_block_def &)): New. - (debug (basic_block_def *)): New. - * dumpfile.h - (dump_node (const_tree, int, FILE *)): Correct source file. - * dwarf2out.c - (debug (die_struct &)): New. - (debug (die_struct *)): New. - * dwarf2out.h - (extern debug (die_struct &)): New. - (extern debug (die_struct *)): New. - * gimple-pretty-print.c - (debug (gimple_statement_d &)): New. - (debug (gimple_statement_d *)): New. - * gimple-pretty-print.h - (extern debug (gimple_statement_d &)): New. - (extern debug (gimple_statement_d *)): New. - * ira-build.c - (debug (ira_allocno_copy &)): New. - (debug (ira_allocno_copy *)): New. - (debug (ira_allocno &)): New. - (debug (ira_allocno *)): New. - * ira-int.h - (extern debug (ira_allocno_copy &)): New. - (extern debug (ira_allocno_copy *)): New. - (extern debug (ira_allocno &)): New. - (extern debug (ira_allocno *)): New. - * ira-lives.c - (debug (live_range &)): New. - (debug (live_range *)): New. - * lra-int.h - (debug (lra_live_range &)): New. - (debug (lra_live_range *)): New. - * lra-lives.c - (debug (lra_live_range &)): New. - (debug (lra_live_range *)): New. - * omega.c - (debug (omega_pb_d &)): New. - (debug (omega_pb_d *)): New. - * omega.h - (extern debug (omega_pb_d &)): New. - (extern debug (omega_pb_d *)): New. - * print-rtl.c - (debug (const rtx_def &)): New. - (debug (const rtx_def *)): New. - * print-tree.c - (debug_tree (tree): Move within file. - (debug_raw (const tree_node &)): New. - (debug_raw (const tree_node *)): New. - (dump_tree_via_hooks (const tree_node *, int)): New. - (debug (const tree_node &)): New. - (debug (const tree_node *)): New. - (debug_verbose (const tree_node &)): New. - (debug_verbose (const tree_node *)): New. - (debug_head (const tree_node &)): New. - (debug_head (const tree_node *)): New. - (debug_body (const tree_node &)): New. - (debug_body (const tree_node *)): New. - (debug_vec_tree (tree): Move and reimplement in terms of dump. - (debug (vec &)): New. - (debug (vec *)): New. - * rtl.h - (extern debug (const rtx_def &)): New. - (extern debug (const rtx_def *)): New. - * sbitmap.c - (debug_raw (simple_bitmap_def &)): New. - (debug_raw (simple_bitmap_def *)): New. - (debug (simple_bitmap_def &)): New. - (debug (simple_bitmap_def *)): New. - * sbitmap.h - (extern debug (simple_bitmap_def &)): New. - (extern debug (simple_bitmap_def *)): New. - (extern debug_raw (simple_bitmap_def &)): New. - (extern debug_raw (simple_bitmap_def *)): New. - * sel-sched-dump.c - (debug (vinsn_def &)): New. - (debug (vinsn_def *)): New. - (debug_verbose (vinsn_def &)): New. - (debug_verbose (vinsn_def *)): New. - (debug (expr_def &)): New. - (debug (expr_def *)): New. - (debug_verbose (expr_def &)): New. - (debug_verbose (expr_def *)): New. - (debug (vec &)): New. - (debug (vec *)): New. - * sel-sched-dump.h - (extern debug (vinsn_def &)): New. - (extern debug (vinsn_def *)): New. - (extern debug_verbose (vinsn_def &)): New. - (extern debug_verbose (vinsn_def *)): New. - (extern debug (expr_def &)): New. - (extern debug (expr_def *)): New. - (extern debug_verbose (expr_def &)): New. - (extern debug_verbose (expr_def *)): New. - (extern debug (vec &)): New. - (extern debug (vec *)): New. - * sel-sched-ir.h - (_list_iter_cond_expr): Make inline instead of static. - * sreal.c - (debug (sreal &)): New. - (debug (sreal *)): New. - * sreal.h - (extern debug (sreal &)): New. - (extern debug (sreal *)): New. - * tree.h - (extern debug_raw (const tree_node &)): New. - (extern debug_raw (const tree_node *)): New. - (extern debug (const tree_node &)): New. - (extern debug (const tree_node *)): New. - (extern debug_verbose (const tree_node &)): New. - (extern debug_verbose (const tree_node *)): New. - (extern debug_head (const tree_node &)): New. - (extern debug_head (const tree_node *)): New. - (extern debug_body (const tree_node &)): New. - (extern debug_body (const tree_node *)): New. - (extern debug (vec &)): New. - (extern debug (vec *)): New. - * tree-cfg.c - (debug (struct loop &)): New. - (debug (struct loop *)): New. - (debug_verbose (struct loop &)): New. - (debug_verbose (struct loop *)): New. - * tree-dump.c: Add header dependence. - * tree-flow.h - (extern debug (struct loop &)): New. - (extern debug (struct loop *)): New. - (extern debug_verbose (struct loop &)): New. - (extern debug_verbose (struct loop *)): New. - * tree-data-ref.c - (debug (data_reference &)): New. - (debug (data_reference *)): New. - (debug (vec &)): New. - (debug (vec *)): New. - (debug (vec &)): New. - (debug (vec *)): New. - * tree-data-ref.h - (extern debug (data_reference &)): New. - (extern debug (data_reference *)): New. - (extern debug (vec &)): New. - (extern debug (vec *)): New. - (extern debug (vec &)): New. - (extern debug (vec *)): New. - * tree-ssa-alias.c - (debug (pt_solution &)): New. - (debug (pt_solution *)): New. - * tree-ssa-alias.h - (extern debug (pt_solution &)): New. - (extern debug (pt_solution *)): New. - * tree-ssa-alias.c - (debug (_var_map &)): New. - (debug (_var_map *)): New. - (debug (tree_live_info_d &)): New. - (debug (tree_live_info_d *)): New. - * tree-ssa-alias.h - (extern debug (_var_map &)): New. - (extern debug (_var_map *)): New. - (extern debug (tree_live_info_d &)): New. - (extern debug (tree_live_info_d *)): New. - -2013-03-28 Jan Hubicka - - * lto-cgraph.c (merge_profile_summaries): Fix overflows. - -2013-03-28 Ian Bolton - - * config/aarch64/aarch64.md (aarch64_can_eliminate): Keep frame - record only when desired or required. - -2013-03-28 Uros Bizjak - - * config/i386/i386.md (*vec_extract2vdi_1): Merge with - *vec_extractv2di_1_rex64. Use x64 isa attribute. - -2013-03-28 Naveen H.S - - * config/aarch64/aarch64.md (*and3_compare0): New pattern. - (*andsi3_compare0_uxtw): New pattern. - (*and_3_compare0): New pattern. - (*and_si3_compare0_uxtw): New pattern. - -2013-03-28 Jan Hubicka - - * data-streamer-in.c (streamer_read_gcov_count): New function. - * gimple-streamer-out.c: Include value-prof.h. - (output_gimple_stmt): Output histogram. - (output_bb): Use streamer_write_gcov_count. - * value-prof.c: Include data-streamer.h - (dump_histogram_value): Add HIST_TYPE_MAX. - (stream_out_histogram_value): New function. - (stream_in_histogram_value): New function. - * value-prof.h (enum hist_type): Add HIST_TYPE_MAX. - (stream_out_histogram_value, stream_in_histogram_value): Declare. - * data-streamer-out.c (streamer_write_gcov_count): New function. - (streamer_write_gcov_count_stream): New function. - * lto-cgraph.c (lto_output_edge): Update counter streaming. - (lto_output_node): Likewise. - (input_node, input_edge): Likewise. - * lto-streamer-out.c (output_cfg): Update streaming. - * lto-streamer-in.c (input_cfg): Likewise. - * data-streamer.h (streamer_write_gcov_count, - streamer_write_gcov_count_stream, streamer_read_gcov_count): Declare. - * gimple-streamer-in.c: Include value-prof.h - (input_gimple_stmt): Input histograms. - (input_bb): Update profile streaming. - -2013-03-28 Kenneth Zadeck - - * genmodes.c (emit_max_int): New function. - (emit_insn_modes_h): Added call to emit_max_function. - * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_INT, MAX_BITSIZE_MODE_ANY_MODE): - Added doc. - * machmode.def: Fixed comment. - -2013-03-28 Kenneth Zadeck - - * combine.c (try_combine): Removed useless assert. - * cselib.c (rtx_equal_for_cselib_1): Removed unnecessary parens. - -2013-03-28 Marek Polacek - Richard Biener - - PR tree-optimization/56695 - * tree-vect-stmts.c (vectorizable_condition): Unconditionally - build signed result of a vector comparison. - * tree-cfg.c (verify_gimple_comparison): Check that a result - of a vector comparison has signed type. - -2013-03-28 Richard Biener - - PR tree-optimization/37021 - * tree-vect-slp.c (vect_build_slp_tree): When not unrolling - do not restrict gaps between groups. - * tree-vect-stmts.c (vectorizable_load): Properly account for - a gap between groups. - -2013-03-28 Eric Botcazou - - * toplev.c (process_options): Do not disable -fomit-frame-pointer on a - general basis if unwind info is requested and ACCUMULATE_OUTGOING_ARGS - is not enabled. - -2013-03-27 Gerald Pfeifer - - * doc/invoke.texi (AVR Options): Tweak link for AVR-LibC user manual. - * doc/extend.texi (Named Address Spaces): Ditto. - (Variable Attributes): Ditto. - -2013-03-27 Kai Tietz - - * config.build: Add support for cygwin x64 target. - * config.gcc: Likewise. - * config.host: Likewise. - * configure.ac: Likewise - * configure: Regenerated. - -2013-03-27 Kai Tietz - - * config/i386/cygwin-stdint.h: Add support for cygwin x64 target. - * config/i386/t-cygwin-w64: New file. - * config/i386/cygwin-w64.h: New file. - * config/i386/cygwin.h (EXTRA_OS_CPP_BUILTINS): Extend - and add support for x64-cygwin target. - (CPP_SPEC): Likewise. - (CXX_WRAP_SPEC_LIST): Undefine before define. - (LIBGCJ_SONAME): Use 15 as version. - -2013-03-27 Richard Biener - - PR tree-optimization/56716 - * tree-ssa-structalias.c (perform_var_substitution): Adjust - dumping for ref nodes. - -2013-03-27 Martin Jambor - - PR tree-optimization/55334 - * ipa-cp.c (initialize_node_lattices): Allow IPA-CP through and to - restricted pointers to arrays. - -2013-03-27 Gabriel Dos Reis - - * Makefile.in (.SUFFIXES): Add .cc. - (.c.o): Apply same recipe for implicit rule .cc.o. - -2013-03-27 Richard Biener - - PR tree-optimization/37021 - * tree-vect-data-refs.c (vect_check_strided_load): Allow - REALPART/IMAGPART_EXPRs around the supported refs. - * tree-ssa-structalias.c (find_func_aliases): Assume that - floating-point values are not used to transfer pointers. - -2013-03-27 Alexander Ivchenko - - * target.def (TARGET_HAS_IFUNC_P): New target hook. - * doc/tm.texi.in (TARGET_HAS_IFUNC_P): New. - * doc/tm.texi: Regenerate. - * targhooks.h (default_has_ifunc_p): New. - * targhooks.c (default_has_ifunc_p): Ditto. - * config/linux-protos.h: New file. - * config/linux-android.h (TARGET_HAS_IFUNC_P): Using version of this - hook for linux which disables support of indirect functions in android. - * config/linux-android.c: New file. - * config/t-linux-android.c: Ditto. - * config.gcc: Added new object file linux-android.o. - * config/i386/i386.c (ix86_get_function_versions_dispatcher): - Using TARGET_HAS_IFUNC hook instead of HAVE_GNU_INDIRECT_FUNCTION. - * varasm.c (do_assemble_alias): Likewise. - * configure.ac: Define HAVE_GNU_INDIRECT_FUNCTION as zero if the target - doesn't support indirect functions. - * configure: Regenerate. - -2013-03-27 Bin Cheng - - PR target/56102 - * config/arm/arm.c (thumb1_rtx_costs, thumb1_size_rtx_costs): Fix - rtx costs for SET/ASHIFT/ASHIFTRT/LSHIFTRT/ROTATERT patterns with - mult-word mode. - -2013-03-27 Andreas Krebbel - - * config/s390/s390.h (TARGET_FLT_EVAL_METHOD): Define. - -2013-03-27 Terry Guo - - * config/arm/arm-cores.def: Added core cortex-r7. - * config/arm/arm-tune.md: Regenerated. - * config/arm/arm-tables.opt: Regenerated. - * doc/invoke.texi: Added entry for core cortex-r7. - -2013-03-27 Walter Lee - - * config/tilegx/tilegx.c (tilegx_expand_prologue): Avoid - double-decrement of next_scratch_regno. - -2013-03-27 Walter Lee - - * config/tilegx/tilegx.md (insn_v1mulu): Fix predicates on - input operands. - (insn_v1mulus): Ditto. - (insn_v2muls): Ditto. - -2013-03-27 Walter Lee - - * config/tilegx/tilegx.h (ASM_OUTPUT_ADDR_VEC_ELT): Delete extra tab. - (ASM_OUTPUT_ADDR_DIFF_ELT): Ditto. - -2013-03-27 Walter Lee - - * config/tilegx/tilegx.md (*sibcall_insn): Fix type atribute for jr. - (*sibcall_value): Ditto. - -2013-03-27 Walter Lee - - * config/tilegx/tilegx.md (insn_mnz_): Replaced by ... - (insn_mnz_v8qi): ... this ... - (insn_mnz_v4hi): ... and this. Replace (const_int 0) with the - vector equivalent. - (insn_vmnz): Replaced by ... - (insn_v1mnz): ... this ... - (insn_v2mnz): ... and this. Replace (const_int 0) with the vector - equivalent. - (insn_mz_): Replaced by ... - (insn_mz_v8qi): ... this ... - (insn_mz_v4hi): ... and this. Replace (const_int 0) with the - vector equivalent. - (insn_vmz): Replaced by ... - (insn_v1mz): ... this ... - (insn_v2mz): ... and this. Replace (const_int 0) with the vector - equivalent. - -2013-03-26 Eric Botcazou - - * doc/invoke.texi (SPARC options): Remove -mlittle-endian. - -2013-03-26 Roland McGrath - - * config/arm/arm.c (arm_print_operand: case 'w'): Use fputs rather - than fprintf with a non-constant, non-format string. - -2013-03-26 Uros Bizjak - - * config/i386/i386.md (*cmpqi_ext_1): Merge with *cmpqi_ext_1_rex64 - using nox64 isa attribute. Use nonimmediate_x86nomem_operand as - operand 0 predicate. - (*cmpqi_ext_3): Merge with *cmpqi_ext_3_rex64 using nox64 isa - attribute. Use general_x64nomem_operand as operand 1 predicate. - (*movqi_extv_1): Merge with *movqi_extv_1_rex64 using nox64 isa - attribute. Use nonimmediate_x64nomem_operand as operand 0 predicate. - (*movqi_extzv_2): Merge with *movqi_extzv_2_rex64 using nox64 isa - attribute. Use nonimmediate_x64nomem_operand as operand 0 predicate. - (mov_insv_1): Remove expander. Merge insn with - movsi_insv_1 using SWI48 mode iterator and nox64 isa attribute. - Use general_x64nomem_operand as operand 1 predicate. - (addqi_ext_1): Merge with *addqi_ext_1_rex64 using nox64 isa attribute. - (*testqi_ext_1): Merge with *testqi_ext_1_rex64 using nox64 isa - attribute. Use nonimmediate_x64nomem_operand as operand 1 predicate. - (*andqi_ext_1): Merge with *andqi_ext_1_rex64 using nox64 isa - attribute. Use nonimmediate_x64nomem_operand as operand 2 predicate. - (*qi_ext_1): Merge with *qi_ext_1_rex64 using nox64 isa - attribute. Use nonimmediate_x64nomem_operand as operand 1 predicate. - (*xorqi_cc_ext_1): Merge with *xorqi_cc_ext_1_rex64 using nox64 - isa attribute. Use general_x64nomem_operand as operand 2 predicate. - * config/i386/predicates.md (nonimmediate_x64nomem_operand): New. - (general_x64nomem_operand): Ditto. - -2013-03-26 Sebastian Huber - - * config/rtems.opt: Add -pthread option. - -2013-03-26 Richard Biener - - * alias.c (find_base_term): Avoid redundant and not used recursion. - (base_alias_check): Get the initial base term from the caller. - (true_dependence_1): Compute and pass base terms to base_alias_check. - (write_dependence_p): Likewise. - (may_alias_p): Likewise. - -2013-03-26 Sofiane Naci - - * config/aarch64/aarch64.c (aarch64_classify_address): Support - PC-relative load in SI modes and above only. - -2013-03-26 Xinyu Qi - - * config/arm/arm.h (FIRST_IWMMXT_GR_REGNUM): Add comment. - * config/arm/iwmmxt.md (WCGR0): Update. - (WCGR1, WCGR2, WCGR3): Likewise. - -2013-03-26 Uros Bizjak - - * config/i386/i386.md (*movdfcc_1): Merge with *movdfcc_1_rex64. - Use x64 and nox64 isa attributes. - -2013-03-26 Richard Biener - - * emit-rtl.c (set_mem_attributes_minus_bitpos): Remove - alignment computations and rely on get_object_alignment_1 - for the !TYPE_P case. - Commonize DECL/COMPONENT_REF handling in the ARRAY_REF path. - -2013-03-26 Walter Lee - - * config/tilegx/tilegx.h (PROFILE_BEFORE_PROLOGUE): Define. - * config/tilegx/tilepro.h (PROFILE_BEFORE_PROLOGUE): Define. - -2013-03-25 Jeff Law - - * tree-ssa-dom.c (record_equivalences_from_incoming_edge): Add missing - check for INTEGRAL_TYPE_P that was missing due to checking in - wrong version of prior patch. - -2013-03-25 Walter Lee - - * config/tilegx/tilegx-builtins.h (enum tilegx_builtin): Add - TILEGX_INSN_SHUFFLEBYTES1. - * config/tilegx/tilegx.c (tilegx_builtin_info): Add entry for - shufflebytes1. - (tilegx_builtins): Ditto. - * config/tilegx/tilegx.md (insn_shufflebytes1): New pattern. - -2013-03-25 Walter Lee - - * config/tilegx/tilegx.md (floatsisf2): New pattern. - (floatunssisf2): New pattern. - (floatsidf2): New pattern. - (floatunssidf2): New pattern. - -2013-03-25 Walter Lee - - * config/tilegx/tilegx.c (expand_set_cint64_one_inst): Inline - tests for constraint J, K, N, P. - -2013-03-25 Walter Lee - - * config/tilegx/tilegx.c (tilegx_asm_preferred_eh_data_format): - Use indirect/pcrel encoding. - * config/tilepro/tilepro.c (tilepro_asm_preferred_eh_data_format): - Ditto. - -2013-03-25 Steve Ellcey - - * config/mips/mmips-cpus.def (74kc, 74kf2_1, 74kf, 74kf, 74kf1_1, - 74kfx, 74kx, 74kf3_2): Add PTF_AVOID_IMADD. - * config/mips/mips.c (mips_option_override): Set IMADD default. - * config/mips/mips.h (PTF_AVOID_IMADD): New. - (ISA_HAS_MADD_MSUB): Remove MIPS16 check. - (GENERATE_MADD_MSUB): Remove TUNE_74K check, add MIPS16 check. - * config/mips/mips.md (mimadd): New flag for integer madd/msub. - * doc/invoke.texi (-mimadd/-mno-imadd): New. - -2013-03-25 Jeff Law - - * tree-ssa-dom.c (record_equivalences_from_incoming_edge): Rework - slightly to avoid creating and folding useless trees. Simplify - slightly by restricting to INTEGER_CSTs and using int_fits_type_p. - -2013-03-25 Uros Bizjak - - * config/i386/i386.md (*zero_extendsidi2): Merge with - *zero_extendsidi2_rex64. Use x64 and nox64 isa attributes. - * config/i386/predicates.md (x86_64_zext_operand): Rename from - x86_64_zext_general_operand. Use nonimmediate_operand on 32bit - targets. Clarify comment. - -2013-03-25 Martin Jambor - - * ipa-prop.c (ipa_write_jump_function): Stream simple and aritmetic - pass-through jump functions differently. - (ipa_read_jump_function): Likewise. Also use setter functions to set - up jump functions. - -2013-03-25 Martin Jambor - - * ipa-cp.c (ipa_get_indirect_edge_target): Renamed to - ipa_get_indirect_edge_target_1, added parameter agg_reps and ability to - process it. - (ipa_get_indirect_edge_target): New function. - (devirtualization_time_bonus): New parameter known_aggs, pass it to - ipa_get_indirect_edge_target. Update all callers. - (ipcp_discover_new_direct_edges): New parameter aggvals. Pass it to - ipa_get_indirect_edge_target_1 instead of calling - ipa_get_indirect_edge_target. - (create_specialized_node): Pass aggvlas to - ipcp_discover_new_direct_edges. - -2013-03-25 Kyrylo Tkachov - - * config/arm/arm.md (f_sels, f_seld): New types. - (*cmov): New pattern. - * config/arm/predicates.md (arm_vsel_comparison_operator): New - predicate. - -2013-03-25 Kai Tietz - - * config/i386/xm-mingw32.h (__USE_MINGW_ANSI_STDIO): Enable - POSIX-printf for mingw-hosted builds. - -2013-03-25 Richard Biener - - PR middle-end/56694 - * tree-eh.c (lower_eh_must_not_throw): Strip BLOCKs from the - must-not-throw stmt location. - -2013-03-25 Kyrylo Tkachov - - * config/arm/arm.c (arm_emit_load_exclusive): Add acq parameter. - Emit load-acquire versions when acq is true. - (arm_emit_store_exclusive): Add rel parameter. - Emit store-release versions when rel is true. - (arm_split_compare_and_swap): Use acquire-release instructions - instead. - of barriers when appropriate. - (arm_split_atomic_op): Likewise. - * config/arm/arm.h (TARGET_HAVE_LDACQ): New macro. - * config/arm/unspecs.md (VUNSPEC_LAX): New unspec. - (VUNSPEC_SLX): Likewise. - (VUNSPEC_LDA): Likewise. - (VUNSPEC_STL): Likewise. - * config/arm/sync.md (atomic_load): New pattern. - (atomic_store): Likewise. - (arm_load_acquire_exclusive): Likewise. - (arm_load_acquire_exclusivesi): Likewise. - (arm_load_acquire_exclusivedi): Likewise. - (arm_store_release_exclusive): Likewise. - -2013-03-25 Catherine Moore - - * config/mips/constraints.md (u, Udb7 Uead, Uean, Uesp, Uib3, - Uuw6, Usb4, ZS, ZT, ZU, ZV, ZW): New constraints. - * config/mip/predicates.md (lwsp_swsp_operand, - lw16_sw16_operand, lhu16_sh16_operand, lbu16_operand, - sb16_operand, db4_operand, db7_operand, ib3_operand, - sb4_operand, ub4_operand, uh4_operand, uw4_operand, - uw5_operand, uw6_operand, addiur2_operand, addiusp_operand, - andi16_operand): New predicates. - * config/mips/mips.md (compression): New attribute. - (enabled): New attribute. - (length): Consider compression in computing length. - (shift_compression): New code attribute. - (*add3): New operands. Record compression. - (sub3): Likewise. - (one_cmpl2): Likewise. - (*and3): Likewise. - (*ior3): Likewise. - (unnamed pattern for xor): Likewise. - (*zero_extend2): Likewise. - (*3): Likewise. - (*mov_internal: Likewise. - * config/mips/mips-protos.h (mips_signed_immediate_p): New. - (mips_unsigned_immediate_p): New. - (umips_lwsp_swsp_address_p): New. - (m16_based_address_p): New. - * config/mips/mips-protos.h (mips_signed_immediate_p): New prototype. - (mips_unsigned_immediate_p): New prototype. - (lwsp_swsp_address_p): New prototype. - (m16_based_address_p): New prototype. - * config/mips/mips.c (mips_unsigned_immediate_p): New function. - (mips_signed_immediate_p): New function. - (m16_based_address_p): New function. - (lwsp_swsp_address_p): New function. - (mips_print_operand_punctuation): Recognize short delay slot insns - for microMIPS.add3" - -2013-03-25 Kyrylo Tkachov - - PR target/56720 - * config/arm/iterators.md (v_cmp_result): New mode attribute. - * config/arm/neon.md (vcond): Handle unordered cases. - -2013-03-25 Richard Biener - - PR tree-optimization/56689 - * tree-vrp.c (execute_vrp): Mark loops for fixup if we removed - any edge. - -2013-03-25 Richard Biener - - * tree-ssa-loop-im.c (struct mem_ref): Use bitmap_head instead - of bitmap. - (memory_references): Likewise. - (outermost_indep_loop, mem_ref_alloc, mark_ref_stored, - gather_mem_refs_stmt, record_dep_loop, ref_indep_loop_p_1, - ref_indep_loop_p_2, find_refs_for_sm): Adjust. - (gather_mem_refs_in_loops): Fold into ... - (analyze_memory_references): ... this. Move initialization - to tree_ssa_lim_initialize. - (fill_always_executed_in): Rename to ... - (fill_always_executed_in_1): ... this. - (fill_always_executed_in): Move contains_call computation to - this new function from ... - (tree_ssa_lim_initialize): ... here. - (tree_ssa_lim): Call fill_always_executed_in. - -2013-03-25 Eric Botcazou - - * postreload.c (reload_combine): Fix code detecting returns. - -2013-03-25 Eric Botcazou - - * function.c (emit_use_return_register_into_block): On cc0 targets, - do not emit the sequence between cc0 setter and user. - -2013-03-25 Kai Tietz - - * config/i386/predicates.md (local_symbolic_operand): Interpret - dll-imported symbols as none-local. - -2013-03-25 Richard Biener - - * tree-ssa-loop-im.c (struct depend): Remove. - (struct lim_aux_data): Make depends a vec of gimples. - (free_lim_aux_data): Adjust. - (add_dependency): Likewise. - (set_level): Likewise. - -2013-03-25 Richard Biener - - PR middle-end/56434 - * calls.c (expand_call): Use MALLOC_ABI_ALIGNMENT to annotate - the pointer returned by calls with ECF_MALLOC set. - -2013-03-24 Uros Bizjak - - * config/i386/mmx.md (mov): Add ?!Ym,r and r,?!Ym alternatives. - -2013-03-24 Uros Bizjak - - * config/i386/mmx.md (mov): Merge with movv2sf expander - using MMXMODE mode iterator. - (*move_internal): Merge with *movv2sf_internal and - *movv2sf_internal_rex64 using MMXMODE mode iterator. - -2013-03-23 Steven Bosscher - - * gcse.c (oprs_unchanged_p): Respect flag_gcse_lm. - (record_last_mem_set_info): Likewise. - - * df-core.c (rest_of_handle_df_initialize): Use XCNEWVEC instead - of XNEWVEC followed by memset. - (df_worklist_dataflow): Use XNEWVEC instead of xmalloc with a cast. - -2013-03-23 Steven Bosscher - - * config/avr/avr.c, config/bfin/bfin.c, config/c6x/c6x.c, - config/epiphany/epiphany.c, config/frv/frv.c, config/ia64/ia64.c, - config/iq2000/iq2000.c, config/mcore/mcore.c, config/mep/mep.c, - config/mmix/mmix.c, config/pa/pa.c, config/rs6000/rs6000.c, - config/s390/s390.c, config/sparc/sparc.c, config/spu/spu.c, - config/stormy16/stormy16.c, config/v850/v850.c, config/xtensa/xtensa.c, - dwarf2out.c, hw-doloop.c, resource.c, rtl.h : Where applicable, use - the predicates NOTE_P, NONJUMP_INSN_P, JUMP_P, CALL_P, LABEL_P, and - BARRIER_P instead of GET_CODE. - -2013-03-23 Eric Botcazou - - * config/sparc/sparc.c (sparc_emit_probe_stack_range): Fix small - inaccuracy in the probing code. - - * config/sparc/sparc.md (ctrapsi4): Add predicate for operand #3. - (ctrapdi4): Likewise. - -2013-03-23 Eric Botcazou - - * calls.c (expand_call): Add missing guard to code handling return - of non-BLKmode structures in MSB. - * function.c (expand_function_end): Likewise. - -2013-03-23 Eric Botcazou - - * combine.c (try_combine): Adjust comment. Do not add the set of - insn #0 if the destination indirectly is set or dies in insn #2. - Tidy up code to distribute a new note. - -2013-03-22 Uros Bizjak - - * config/i386/i386.md (*movdi_internal): Set prefix_rex attribute - also for alternatives 16 and 17. - -2013-03-22 Uros Bizjak - - * config/i386/sse.md (*mov_internal): Merge with - *mov_internal_rex64. Use x64 and nox64 isa attributes. - Emit insn template depending on type attribute. Use - HAVE_AS_IX86_INTERUNIT_MOVQ to handle broken assemblers that require - movd instead of movq mnemonic for interunit moves. Rewrite mode - attribute calculation. Remove unit attribute calculation. - Set prefix attribute to maybe_vex for sselog1 and ssemov types. - Set prefix_data16 attribute for DImode ssemov types. - Use Ym instead of y for SSE-MMX conversion alternatives. - Reorder operand constraints. - -2013-03-22 Steven Bosscher - - * df.h (df_insn_delete): Adjust prototype. - * emit-rtl.c (remove_insn): Pass a basic block to df_insn_delete - and let it decide whether mark the basic block dirty. - (set_insn_deleted): Only pass INSN_P insns to df_insn_delete. - * df-scan.c (df_insn_info_delete): New helper function, split - off from df_insn_delete. - (df_scan_free_bb_info): Use it. - (df_insn_rescan, df_insn_rescan_all, df_process_deferred_rescans): - Likewise. - (df_insn_delete): Likewise. Take insn rtx as argument. Verify - that the insn is actually an insn and it has a non-NULL basic block. - Do not mark basic block dirty if only deleting a DEBUG_INSN. - -2013-03-22 Richard Biener - - * tree-ssa-loop-im.c (struct mem_ref): Remove indep_ref and - dep_ref members. - (mem_ref_alloc): Do not allocate them. - (refs_independent_p): Do not query or maintain a cache. - -2013-03-22 Richard Biener - - * tree-ssa-loop-im.c (memory_references): Drop all_refs_in_loop. - (gather_mem_refs_in_loops): Do not compute it. - (analyze_memory_references): Do not allocate it. - (tree_ssa_lim_finalize): Do not free it. - (for_all_locs_in_loop): Do not query all_refs_in_loop. - -2013-03-22 Richard Biener - - * is-a.h (as_a): Use gcc_checking_assert. - -2013-03-22 Ian Bolton - - * config/aarch64/aarch64.c (aarch64_print_operand): New - format specifier for printing a constant in hex. - * config/aarch64/aarch64.md (insv_imm): Use the X - format specifier for printing second operand. - -2013-03-22 Richard Biener - - * tree-ssa-loop-im.c (memory_references): Add refs_stored_in_loop - bitmaps. - (gather_mem_refs_in_loops): Perform store accumulation here. - (create_vop_ref_mapping_loop): Remove. - (create_vop_ref_mapping): Likewise. - (analyze_memory_references): Initialize refs_stored_in_loop. - (LOOP_DEP_BIT): New define to map to bits in (in)dep_loop bitmaps. - (record_indep_loop): Remove. - (record_dep_loop): New function. - (ref_indep_loop_p_1): Adjust to only walk over references - in the loop, not its subloops. - (ref_indep_loop_p): Rename to ... - (ref_indep_loop_p_2): ... this and recurse over the loop tree, - maintaining a more fine-grained cache. - (ref_indep_loop_p): Wrap ref_indep_loop_p_2. - (tree_ssa_lim_finalize): Free refs_stored_in_loop. - -2013-03-22 Richard Biener - - * tree-ssa-loop-im.c (struct mem_ref_locs): Remove. - (struct mem_ref): Make accesses_in_loop a vec of a vec of - aggregate mem_ref_loc. - (free_mem_ref_locs): Inline into ... - (memref_free): ... this and adjust. - (mem_ref_alloc): Adjust. - (mem_ref_locs_alloc): Remove. - (record_mem_ref_loc): Adjust. - (get_all_locs_in_loop): Rewrite into ... - (for_all_locs_in_loop): ... this iterator. - (rewrite_mem_ref_loc): New functor. - (rewrite_mem_refs): Use for_all_locs_in_loop. - (sm_set_flag_if_changed): New functor. - (execute_sm_if_changed_flag_set): Use for_all_locs_in_loop. - (ref_always_accessed): New functor. - (ref_always_accessed_p): Use for_all_locs_in_loop. - -2013-03-21 Marc Glisse - - * tree-pass.h (PROP_gimple_lvec): New. - * passes.c (dump_properties): Handle PROP_gimple_lvec. - (init_optimization_passes): Move pass_lower_vector. - * tree-vect-generic.c (gate_expand_vector_operations_ssa): Test - PROP_gimple_lvec. - (pass_lower_vector): Provide PROP_gimple_lvec. - (pass_lower_vector_ssa): Likewise. - * cfgexpand.c (pass_expand): Require PROP_gimple_lvec. - -2013-03-21 Mark Wielaard - - * dwarf2out.c (size_of_aranges): Skip DECL_IGNORED_P functions. - -2013-03-21 Uros Bizjak - - * config/i386/i386.md (*movdi_internal): Disparage slightly - all MMX moves to/from memory. Use Yi instead of x for SSE-MMX - conversion alternatives. - -2013-03-21 Jakub Jelinek - - PR middle-end/48087 - * diagnostic.def (DK_WERROR): New kind. - * diagnostic.h (werrorcount): Define. - * diagnostic.c (diagnostic_report_diagnostic): For DK_WARNING - promoted to DK_ERROR, increment DK_WERROR counter instead of - DK_ERROR counter. - * toplev.c (toplev_main): Call print_ignored_options even if - just werrorcount is non-zero. Exit with FATAL_EXIT_CODE - even if just werrorcount is non-zero. - - PR debug/55608 - * dwarf2out.c (tree_add_const_value_attribute): Call ggc_free (array) - on failure. - (resolve_one_addr): Fail if referenced STRING_CST hasn't been written. - (string_cst_pool_decl): New function. - (optimize_one_addr_into_implicit_ptr): New function. - (resolve_addr_in_expr): Optimize DWARF location expression - DW_OP_addr DW_OP_stack_value where DW_OP_addr refers to some variable - which doesn't live in memory, but has DW_AT_location or - DW_AT_const_value, or refers to a string literal, into - DW_OP_GNU_implicit_pointer. - (optimize_location_into_implicit_ptr): New function. - (resolve_addr): If removing DW_AT_location of a variable because - it was DW_OP_addr of address of the variable, but the variable doesn't - live in memory, try to emit const value attribute for the initializer. - -2013-03-21 Marc Glisse - - * tree.h (VECTOR_TYPE_P): New macro. - (VECTOR_INTEGER_TYPE_P, VECTOR_FLOAT_TYPE_P, FLOAT_TYPE_P, - TYPE_MODE): Use it. - * fold-const.c (fold_cond_expr_with_comparison): Use build_zero_cst. - VEC_COND_EXPR cannot be lvalues. - (fold_ternary_loc) : Merge with the COND_EXPR case. - -2013-03-21 Marc Glisse - - * simplify-rtx.c (simplify_binary_operation_1) : - Restrict the transformation to equal modes. - -2013-03-21 Richard Biener - - PR tree-optimization/39326 - * tree-ssa-loop-im.c (UNANALYZABLE_MEM_ID): New define. - (MEM_ANALYZABLE): Adjust. - (record_mem_ref_loc): Move bitmap ops ... - (gather_mem_refs_stmt): ... here. Use the shared mem-ref for - unanalyzable refs, do not record locations for it. - (analyze_memory_references): Allocate ref zero as shared - unanalyzable ref. - (refs_independent_p): Do not test for unanalyzed mems here. - (ref_indep_loop_p_1): Special-case disambiguation against - the unanalyzed ref. - (ref_indep_loop_p): Assert we are not queried for the unanalyzed mem. - -2013-03-21 Christophe Lyon - - * config/arm/arm-protos.h (tune_params): Add - prefer_neon_for_64bits field. - * config/arm/arm.c (prefer_neon_for_64bits): New variable. - (arm_slowmul_tune): Default prefer_neon_for_64bits to false. - (arm_fastmul_tune, arm_strongarm_tune, arm_xscale_tune): Ditto. - (arm_9e_tune, arm_v6t2_tune, arm_cortex_tune): Ditto. - (arm_cortex_a15_tune, arm_cortex_a5_tune): Ditto. - (arm_cortex_a9_tune, arm_v6m_tune, arm_fa726te_tune): Ditto. - (arm_option_override): Handle -mneon-for-64bits new option. - * config/arm/arm.h (TARGET_PREFER_NEON_64BITS): New macro. - (prefer_neon_for_64bits): Declare new variable. - * config/arm/arm.md (arch): Rename neon_onlya8 and neon_nota8 to - avoid_neon_for_64bits and neon_for_64bits. Remove onlya8 and nota8. - (arch_enabled): Handle new arch types. Remove support for onlya8 - and nota8. - (one_cmpldi2): Use new arch names. - (zero_extenddi2, extenddi2): Ditto. - * config/arm/arm.opt (mneon-for-64bits): Add option. - * config/arm/neon.md (adddi3_neon, subdi3_neon, iordi3_neon) - (anddi3_neon, xordi3_neon, ashldi3_neon, di3_neon): Use - neon_for_64bits instead of nota8 and avoid_neon_for_64bits instead - of onlya8. - * doc/invoke.texi (-mneon-for-64bits): Document. - -2013-03-21 Richard Biener - - PR tree-optimization/39326 - * tree-ssa-loop-im.c (bb_loop_postorder): New global static. - (sort_bbs_in_loop_postorder_cmp): New function. - (gather_mem_refs_in_loops): Assign mem-ref IDs in loop postorder. - -2013-03-21 Richard Biener - - * tree-vect-data-refs.c (vect_update_interleaving_chain): Remove. - (vect_insert_into_interleaving_chain): Likewise. - (vect_drs_dependent_in_basic_block): Inline ... - (vect_slp_analyze_data_ref_dependence): ... here. New function, - split out from ... - (vect_analyze_data_ref_dependence): ... here. Simplify. - (vect_check_interleaving): Simplify. - (vect_analyze_data_ref_dependences): Likewise. Split out ... - (vect_slp_analyze_data_ref_dependences): ... this new function. - (dr_group_sort_cmp): New function. - (vect_analyze_data_ref_accesses): Compute data-reference groups - here instead of in vect_analyze_data_ref_dependence. Use - a more efficient algorithm. - * tree-vect-slp.c (vect_slp_analyze_bb_1): Use - vect_slp_analyze_data_ref_dependences. Call - vect_analyze_data_ref_accesses earlier. - * tree-vect-loop.c (vect_analyze_loop_2): Likewise. - * tree-vectorizer.h (vect_analyze_data_ref_dependences): Adjust. - (vect_slp_analyze_data_ref_dependences): New prototype. - -2013-03-21 Richard Biener - - * tree-ssa-loop-im.c (can_sm_ref_p): Do not test whether - ref is stored in the loop. - (find_refs_for_sm): Walk only over all stores. - (store_motion_loop): Allocate from lim_bitmap_obstack. - (store_motion): Likewise. - -2013-03-21 Richard Biener - - * tree-vect-loop-manip.c (slpeel_tree_peel_loop_to_edge): - Update virtual SSA form. - -2013-03-21 Rainer Orth - - * configure.ac (gcc_cv_ld_eh_frame_ciev3): New test. - * configure: Regenerate. - * config.in: Regenerate. - * config/sol2.c (solaris_override_options): Only enforce DWARF 2 - if !HAVE_LD_EH_FRAME_CIEV3. - -2013-03-21 Richard Biener - - * tree-cfg.c (verify_expr_no_block): New function. - (verify_expr_location_1): Verify that neither DECL_DEBUG_EXPR - nor DECL_VALUE_EXPR have locations with associated blocks. - * tree-ssa-live.c (clear_unused_block_pointer_1): Remove. - (clear_unused_block_pointer): Remove code dealing with - blocks in DECL_DEBUG_EXPR locations. - -2013-03-21 Richard Biener - - * tree.h (DECL_DEBUG_EXPR_IS_FROM): Rename to ... - (DECL_HAS_DEBUG_EXPR_P): ... this. Guard properly. - * tree.c (copy_node_stat): Do not copy DECL_HAS_DEBUG_EXPR_P. - * dwarf2out.c (add_var_loc_to_decl): Use DECL_HAS_DEBUG_EXPR_P - instead of DECL_DEBUG_EXPR_IS_FROM. - * gimplify.c (gimplify_modify_expr): Likewise. - * tree-cfg.c (verify_expr_location_1): Likewise. - * tree-complex.c (create_one_component_var): Likewise. - * tree-sra.c (create_access_replacement): Likewise. - * tree-ssa-live.c (clear_unused_block_pointer_1): Likewise. - (clear_unused_block_pointer): Likewise. - * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Likewise. - * tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise. - * var-tracking.c (var_debug_decl): Likewise. - (track_expr_p): Likewise. - * tree-inline.c (add_local_variables): Likewise. Set - DECL_HAS_DEBUG_EXPR_P after copying it. - * tree-diagnostic.c (default_tree_printer): Use DECL_HAS_DEBUG_EXPR_P - instead of DECL_DEBUG_EXPR_IS_FROM. Guard properly. - -2013-03-21 Uros Bizjak - - PR bootstrap/56656 - * configure.ac (HAVE_AS_IX86_INTERUNIT_MOVQ): New test. - * configure: Regenerate. - * config.in: Regenerate. - * config/i386/i386.md (*movdf_internal): Use - HAVE_AS_IX86_INTERUNIT_MOVQ to handle broken assemblers that require - movd instead of movq mnemonic for interunit moves. - (*movdi_internal): Ditto. - -2013-03-21 Naveen H.S - - * config/aarch64/aarch64-simd.md (simd_fabd): New Attribute. - (abd_3): New pattern. - (aba_3): New pattern. - (fabd_3): New pattern. - -2013-03-21 Naveen H.S - - * config/aarch64/aarch64-elf.h (REGISTER_PREFIX): Remove. - * config/aarch64/aarch64.c (aarch64_print_operand): Remove all - occurrence of REGISTER_PREFIX as its empty string. - -2013-03-20 Jeff Law - - * tree-ssa-dom.c (record_equivalences_from_incoming_edge): Record - addititional equivalences for equality comparisons between an SSA_NAME - and a constant where the SSA_NAME was set from a widening conversion. - -2013-03-20 Walter Lee - - * config/tilegx/sync.md (atomic_test_and_set): New pattern. - -2013-03-20 Uros Bizjak - - * config/i386/i386.md (*movoi_internal_avx): Emit insn template - depending on type attribute. - (*movti_internal): Ditto. - (*movtf_internal): Ditto. - (*movxf_internal): Ditto. - (*movdf_internal): Ditto. - (*movsf_internal): Ditto. - -2013-03-20 Uros Bizjak - - * config/i386/i386.md (*movti_internal): Set prefix attribute to - maybe_vex for sselog1 and ssemov types. - (*movdi_internal): Reorder operand constraints. - (*movsi_internal): Ditto. Set prefix attribute to - maybe_vex for sselog1 and ssemov types. - (*movtf_internal): Set prefix attribute to maybe_vex - for sselog1 and ssemov types. - (*movdf_internal): Ditto. Set prefix_data16 attribute for - DImode ssemov types. Reorder operand constraints. - (*movsf_internal): Set type of alternatives 3,4 to imov. Set prefix - attribute to maybe_vex for sselog1 and ssemov types. Set prefix_data16 - attribute for SImode ssemov types. Reorder operand constraints. - -2013-03-20 Martin Jambor - - * params.def (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS): New parameter. - * ipa-cp.c (hint_time_bonus): Add abonus for known array indices. - -2013-03-20 Pat Haugen - - * config/rs6000/predicates.md (indexed_address, update_address_mem - update_indexed_address_mem): New predicates. - * config/rs6000/vsx.md (vsx_extract__zero): Set correct "type" - attribute for load/store instructions. - * config/rs6000/dfp.md (movsd_store): Likewise. - (movsd_load): Likewise. - * config/rs6000/rs6000.md (zero_extenddi2_internal1): Likewise. - (unnamed HI->DI extend define_insn): Likewise. - (unnamed SI->DI extend define_insn): Likewise. - (unnamed QI->SI extend define_insn): Likewise. - (unnamed QI->HI extend define_insn): Likewise. - (unnamed HI->SI extend define_insn): Likewise. - (unnamed HI->SI extend define_insn): Likewise. - (extendsfdf2_fpr): Likewise. - (movsi_internal1): Likewise. - (movsi_internal1_single): Likewise. - (movhi_internal): Likewise. - (movqi_internal): Likewise. - (movcc_internal1): Correct mnemonic for stw insn. Set correct "type" - attribute for load/store instructions. - (mov_hardfloat): Set correct "type" attribute for load/store - instructions. - (mov_softfloat): Likewise. - (mov_hardfloat32): Likewise. - (mov_hardfloat64): Likewise. - (mov_softfloat64): Likewise. - (movdi_internal32): Likewise. - (movdi_internal64): Likewise. - (probe_stack_): Likewise. - -2013-03-20 Michael Meissner - - * config/rs6000/vector.md (VEC_R): Add 32-bit integer, binary - floating point, and decimal floating point to reload iterator. - - * config/rs6000/constraints.md (wl constraint): New constraints to - return FLOAT_REGS if certain options are used to reduce the number - of separate patterns that exist in the file. - (wx constraint): Likewise. - (wz constraint): Likewise. - - * config/rs6000/rs6000.c (rs6000_debug_reg_global): If - -mdebug=reg, print wg, wl, wx, and wz constraints. - (rs6000_init_hard_regno_mode_ok): Initialize new constraints. - Initialize the reload functions for 64-bit binary/decimal floating - point types. - (reg_offset_addressing_ok_p): If we are on a power7 or later, use - LFIWZX and STFIWX to load/store 32-bit decimal types, and don't - create the buffer on the stack to overcome not having a 32-bit - load and store. - (rs6000_emit_move): Likewise. - (rs6000_secondary_memory_needed_rtx): Likewise. - (rs6000_alloc_sdmode_stack_slot): Likewise. - (rs6000_preferred_reload_class): On VSX, we can create SFmode 0.0f - via xxlxor, just like DFmode 0.0. - - * config/rs6000/rs6000.h (TARGET_NO_SDMODE_STACK): New macro, - define as 1 if we are running on a power7 or newer. - (enum r6000_reg_class_enum): Add new constraints. - - * config/rs6000/dfp.md (movsd): Delete, combine with binary - floating point moves in rs6000.md. Combine power6x (mfpgpr) moves - with other moves by using conditional constraits (wg). Use LFIWZX - and STFIWX for loading SDmode on power7. Use xxlxor to create 0.0f. - (movsd splitter): Likewise. - (movsd_hardfloat): Likewise. - (movsd_softfloat): Likewise. - - * config/rs6000/rs6000.md (FMOVE32): New iterators to combine - binary and decimal floating point moves. - (fmove_ok): New attributes to combine binary and decimal floating - point moves, and to combine power6x (mfpgpr) moves along normal - floating moves. - (real_value_to_target): Likewise. - (f32_lr): Likewise. - (f32_lm): Likewise. - (f32_li): Likewise. - (f32_sr): Likewise. - (f32_sm): Likewise. - (f32_si): Likewise. - (movsf): Combine binary and decimal floating point moves. Combine - power6x (mfpgpr) moves with other moves by using conditional - constraits (wg). Use LFIWZX and STFIWX for loading SDmode on power7. - (mov for SFmode/SDmode); Likewise. - (SFmode/SDmode splitters): Likewise. - (movsf_hardfloat): Likewise. - (mov_hardfloat for SFmode/SDmode): Likewise. - (movsf_softfloat): Likewise. - (mov_softfloat for SFmode/SDmode): Likewise. - - * doc/md.texi (PowerPC and IBM RS6000 constraints): Document wl, - wx and wz constraints. - - * config/rs6000/constraints.md (wg constraint): New constraint to - return FLOAT_REGS if -mmfpgpr (power6x) was used. - - * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Add wg - constraint. - - * config/rs6000/rs6000.c (rs6000_debug_reg_global): If - -mdebug=reg, print wg, wl, wx, and wz constraints. - (rs6000_init_hard_regno_mode_ok): Initialize new constraints. - Initialize the reload functions for 64-bit binary/decimal floating - point types. - (reg_offset_addressing_ok_p): If we are on a power7 or later, use - LFIWZX and STFIWX to load/store 32-bit decimal types, and don't - create the buffer on the stack to overcome not having a 32-bit - load and store. - (rs6000_emit_move): Likewise. - (rs6000_secondary_memory_needed_rtx): Likewise. - (rs6000_alloc_sdmode_stack_slot): Likewise. - (rs6000_preferred_reload_class): On VSX, we can create SFmode 0.0f - via xxlxor, just like DFmode 0.0. - - * config/rs6000/dfp.md (movdd): Delete, combine with binary - floating point moves in rs6000.md. Combine power6x (mfpgpr) moves - with other moves by using conditional constraits (wg). Use LFIWZX - and STFIWX for loading SDmode on power7. - (movdd splitters): Likewise. - (movdd_hardfloat32): Likewise. - (movdd_softfloat32): Likewise. - (movdd_hardfloat64_mfpgpr): Likewise. - (movdd_hardfloat64): Likewise. - (movdd_softfloat64): Likewise. - - * config/rs6000/rs6000.md (FMOVE64): New iterators to combine - 64-bit binary and decimal floating point moves. - (FMOVE64X): Likewise. - (movdf): Combine 64-bit binary and decimal floating point moves. - Combine power6x (mfpgpr) moves with other moves by using - conditional constraits (wg). - (mov for DFmode/DDmode): Likewise. - (DFmode/DDmode splitters): Likewise. - (movdf_hardfloat32): Likewise. - (mov_hardfloat32 for DFmode/DDmode): Likewise. - (movdf_softfloat32): Likewise. - (movdf_hardfloat64_mfpgpr): Likewise. - (movdf_hardfloat64): Likewise. - (mov_hardfloat64 for DFmode/DDmode): Likewise. - (movdf_softfloat64): Likewise. - (mov_softfloat64 for DFmode/DDmode): Likewise. - (reload__load): Move to later in the file so they aren't in - the middle of the floating point move insns. - (reload__store): Likewise. - - * doc/md.texi (PowerPC and IBM RS6000 constraints): Document wg - constraint. - - * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print out wg - constraint if -mdebug=reg. - (rs6000_initi_hard_regno_mode_ok): Enable wg constraint if -mfpgpr. - Enable using dd reload support if needed. - - * config/rs6000/dfp.md (movtd): Delete, combine with 128-bit - binary and decimal floating point moves in rs6000.md. - (movtd_internal): Likewise. - - * config/rs6000/rs6000.md (FMOVE128): Combine 128-bit binary and - decimal floating point moves. - (movtf): Likewise. - (movtf_internal): Likewise. - (mov_internal, TDmode/TFmode): Likewise. - (movtf_softfloat): Likewise. - (mov_softfloat, TDmode/TFmode): Likewise. - - * config/rs6000/rs6000.md (movdi_mfpgpr): Delete, combine with - movdi_internal64, using wg constraint for move direct operations. - (movdi_internal64): Likewise. - - * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print - MODES_TIEABLE_P for selected modes. Print the numerical value of - the various virtual registers. Use GPR/FPR first/last values, - instead of hard coding the register numbers. Print which modes - have reload functions registered. - (rs6000_option_override_internal): If -mdebug=reg, trace the options - settings before/after setting cpu, target and subtarget settings. - (rs6000_secondary_reload_trace): Improve the RTL dump for -mdebug=addr - and for secondary reload failures in rs6000_secondary_reload_inner. - (rs6000_secondary_reload_fail): Likewise. - (rs6000_secondary_reload_inner): Likewise. - - * config/rs6000/rs6000.md (FIRST_GPR_REGNO): Add convenience - macros for first/last GPR and FPR registers. - (LAST_GPR_REGNO): Likewise. - (FIRST_FPR_REGNO): Likewise. - (LAST_FPR_REGNO): Likewise. - - * config/rs6000/vector.md (mul3): Use the combined macro - VECTOR_UNIT_ALTIVEC_OR_VSX_P instead of separate calls to - VECTOR_UNIT_ALTIVEC_P and VECTOR_UNIT_VSX_P. - (vcond): Likewise. - (vcondu): Likewise. - (vector_gtu): Likewise. - (vector_gte): Likewise. - (xor3): Don't allow logical operations on TImode in 32-bit - to prevent the compiler from converting DImode operations to TImode. - (ior3): Likewise. - (and3): Likewise. - (one_cmpl2): Likewise. - (nor3): Likewise. - (andc3): Likewise. - - * config/rs6000/constraints.md (wt constraint): New constraint - that returns VSX_REGS if TImode is allowed in VSX registers. - - * config/rs6000/predicates.md (easy_fp_constant): 0.0f is an easy - constant under VSX. - - * config/rs6000/rs6000-modes.def (PTImode): Define, PTImode is - similar to TImode, but it is restricted to being in the GPRs. - - * config/rs6000/rs6000.opt (-mvsx-timode): New switch to allow - TImode to occupy a single VSX register. - - * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Default to - -mvsx-timode for power7/power8. - (power7 cpu): Likewise. - (power8 cpu): Likewise. - - * config/rs6000/rs6000.c (rs6000_hard_regno_nregs_internal): Make - sure that TFmode/TDmode take up two registers if they are ever - allowed in the upper VSX registers. - (rs6000_hard_regno_mode_ok): If -mvsx-timode, allow TImode in VSX - registers. - (rs6000_init_hard_regno_mode_ok): Likewise. - (rs6000_debug_reg_global): Add debugging for PTImode and wt - constraint. Print if LRA is turned on. - (rs6000_option_override_internal): Give an error if -mvsx-timode - and VSX is not enabled. - (invalid_e500_subreg): Handle PTImode, restricting it to GPRs. If - -mvsx-timode, restrict TImode to reg+reg addressing, and PTImode - to reg+offset addressing. Use PTImode when checking offset - addresses for validity. - (reg_offset_addressing_ok_p): Likewise. - (rs6000_legitimate_offset_address_p): Likewise. - (rs6000_legitimize_address): Likewise. - (rs6000_legitimize_reload_address): Likewise. - (rs6000_legitimate_address_p): Likewise. - (rs6000_eliminate_indexed_memrefs): Likewise. - (rs6000_emit_move): Likewise. - (rs6000_secondary_reload): Likewise. - (rs6000_secondary_reload_inner): Handle PTImode. Allow 64-bit - reloads to fpr registers to continue to use reg+offset addressing, - but 64-bit reloads to altivec registers need reg+reg addressing. - Drop test for PRE_MODIFY, since VSX loads/stores no longer support - it. Treat LO_SUM like a PLUS operation. - (rs6000_secondary_reload_class): If type is 64-bit, prefer to use - FLOAT_REGS instead of VSX_RGS to allow use of reg+offset addressing. - (rs6000_cannot_change_mode_class): Do not allow TImode in VSX - registers to share a register with a smaller sized type, since VSX - puts scalars in the upper 64-bits. - (print_operand): Add support for PTImode. - (rs6000_register_move_cost): Use VECTOR_MEM_VSX_P instead of - VECTOR_UNIT_VSX_P to catch types that can be loaded in VSX - registers, but don't have arithmetic support. - (rs6000_memory_move_cost): Add test for VSX. - (rs6000_opt_masks): Add -mvsx-timode. - - * config/rs6000/vsx.md (VSm): Change to use 64-bit aligned moves - for TImode. - (VSs): Likewise. - (VSr): Use wt constraint for TImode. - (VSv): Drop TImode support. - (vsx_movti): Delete, replace with versions for 32-bit and 64-bit. - (vsx_movti_64bit): Likewise. - (vsx_movti_32bit): Likewise. - (vec_store_): Use VSX iterator instead of vector iterator. - (vsx_and3): Delete use of '?' constraint on inputs, just put - one '?' on the appropriate output constraint. Do not allow TImode - logical operations on 32-bit systems. - (vsx_ior3): Likewise. - (vsx_xor3): Likewise. - (vsx_one_cmpl2): Likewise. - (vsx_nor3): Likewise. - (vsx_andc3): Likewise. - (vsx_concat_): Likewise. - (vsx_xxpermdi_): Fix thinko for non V2DF/V2DI modes. - - * config/rs6000/rs6000.h (MASK_VSX_TIMODE): Map from - OPTION_MASK_VSX_TIMODE. - (enum rs6000_reg_class_enum): Add RS6000_CONSTRAINT_wt. - (STACK_SAVEAREA_MODE): Use PTImode instead of TImode. - - * config/rs6000/rs6000.md (INT mode attribute): Add PTImode. - (TI2 iterator): New iterator for TImode, PTImode. - (wd mode attribute): Add values for vector types. - (movti_string): Replace TI move operations with operations for TImode - and PTImode. Add support for TImode being allowed in VSX registers. - (mov_string, TImode/PTImode): Likewise. - (movti_ppc64): Likewise. - (mov_ppc64, TImode/PTImode): Likewise. - (TI mode splitters): Likewise. - - * doc/md.texi (PowerPC and IBM RS6000 constraints): Document wt - constraint. - -2013-03-20 Marc Glisse - - PR tree-optimization/56355 - * fold-const.c (tree_binary_nonnegative_warnv_p) : - Also handle integers with undefined overflow. - -2013-03-20 Catherine Moore - Maciej W. Rozycki - Tom de Vries - Nathan Sidwell - Iain Sandoe - Nathan Froyd - Chao-ying Fu - - * doc/extend.texi: (micromips, nomicromips, nocompression): - Document new function attributes. - * doc/invoke.texi (minterlink-compressed, mmicromips, - m14k, m14ke, m14kec): Document new options. - (minterlink-mips16): Update documentation. - * doc/md.texi (ZC, ZD): Document new constraints. - * configure.ac (gcc_cv_as_micromips): Check if linker - supports the .set micromips directive. - * configure: Regenerate. - * config.in: Regenerate. - * config/mips/mips-tables.opt: Regenerate. - * config/mips/micromips.md: New file. - * constraints.md (ZC, ZD): New constraints. - * config/mips/predicates.md (movep_src_register): New predicate. - (movep_src_operand): New predicate. - (non_volatile_mem_operand): New predicate. - * config/mips/mips.md (multimem): New type. - (length): Differentiate between 17-bit and 18-bit branch offsets. - (MOVEP1, MOVEP2): New mode iterator. - (mov_l): Use ZC constraint. - (mov_r): Likewise. - (mov_l): Likewise. - (mov_r): Likewise. - (*branch_equality_inverted): Add microMIPS support. - (*branch_equality): Likewise. - (*jump_absolute): Likewise. - (indirect_jump_): Likewise. - (tablejump_): Likewise. - (_internal): Likewise. - (sibcall_internal): Likewise. - (sibcall_value_internal): Likewise. - (prefetch): Use constraint ZD. - * config/mips/mips.opt (minterlink-compressed): New option. - (minterlink-mips16): Now an alias for minterlink-compressed. - (mmicromips): New option. - * config/mips/sync.md (sync_compare_and_swap): Use ZR constraint. - (compare_and_swap_12): Likewise. - (sync_add): Likewise. - (sync__12): Likewise. - (sync_old__12): Likewise. - (sync_new__12): Likewise. - (sync_nand_12): Likewise. - (sync_old_nand_12): Likewise. - (sync_new_nand_12): Likewise. - (sync_sub): Likewise. - (sync_old_add): Likewise. - (sync_old_sub): Likewise. - (sync_new_add): Likewise. - (sync_new_sub): Likewise. - (sync_): Likewise. - (sync_old_): Likewise. - (sync_new_): Likewise. - (sync_nand): Likewise. - (sync_old_nand): Likewise. - (sync_new_nand): Likewise. - (sync_lock_test_and_set): Likewise. - (test_and_set_12): Likewise. - (atomic_compare_and_swap): Likewise. - (atomic_exchange_llsc): Likewise. - (atomic_fetch_add_llsc): Likewise. - * config/mips/mips-cpus.def (m14kc, m14k): New processors. - * config/mips/mips-protos.h (umips_output_save_restore): New prototype. - (umips_save_restore_pattern_p): Likewise. - (umips_load_store_pair_p): Likewise. - (umips_output_load_store_pair): Likewise. - (umips_movep_target_p): Likewise. - (umips_12bit_offset_address_p): Likewise. - * config/mips/mips.c (MIPS_MAX_FIRST_STEP): Update for microMIPS. - (mips_base_mips16): Rename this... - (mips_base_compression_flags): ...to this. Update all uses. - (mips_attribute_table): Add micromips, nomicromips and nocompression. - (mips_mips16_decl_p): Delete. - (mips_nomips16_decl_p): Delete. - (mips_get_compress_on_flags): New function. - (mips_get_compress_off_flags): New function. - (mips_get_compress_mode): New function. - (mips_get_compress_on_name): New function. - (mips_get_compress_off_name): New function. - (mips_insert_attributes): Support multiple compression types. - (mips_merge_decl_attributes): Likewise. - (umips_12bit_offset_address_p): New function. - (mips_start_function_definition): Emit .set micromips directive. - (mips_call_may_need_jalx_p): New function. - (mips_function_ok_for_sibcall): Add microMIPS support. - (mips_print_operand_punctuation): Support short delay slots and - compact jumps. - (umips_swm_mask, umips_swm_encoding): New. - (umips_build_save_restore): New function. - (mips_for_each_saved_gpr_and_fpr): Add microMIPS support. - (was_mips16_p): Remove. - (old_compression_mode): New. - (mips_set_compression_mode): New function. - (mips_set_current_function): Add microMIPS support. - (mips_option_override): Likewise. - (umips_save_restore_pattern_p): New function. - (umips_output_save_restore): New function. - (umips_load_store_pair_p_1): New function. - (umips_load_store_pair_p): New function. - (umips_output_load_store_pair_1): New function. - (umips_output_load_store_pair): New function. - (umips_movep_target_p) New function. - (mips_prepare_pch_save): Add microMIPS support. - * config/mips/mips.h (TARGET_COMPRESSION): New. - (TARGET_CPU_CPP_BUILTINS): Update macro - to use new compression flags and to support microMIPS. - (MIPS_ISA_LEVEL_SPEC): Add m14k processors. - (MIPS_ARCH_FLOAT_SPEC): Likewise. - (ISA_HAS_LWXS): Include TARGET_MICROMIPS. - (ISA_HAS_LOAD_DELAY): Exclude TARGET_MICROMIPS. - (ASM_SPEC): Support mmicromips and mno-micromips. - (M16STORE_REG_P): New macro. - (MIPS_CALL): Support TARGET_MICROMIPS. - (MICROMIPS_J): New macro. - (mips_base_mips16): Rename this... - (mips_base_compression_flags): ...to this. - (UMIPS_12BIT_OFFSET_P): New macro. - * config/mips/t-sde: (MULTILIB_OPTIONS): Add microMIPS. - (MULTILIB_DIRNAMES): Likewise. -2013-03-20 Richard Biener - - PR tree-optimization/56661 - * tree-ssa-sccvn.c (visit_use): Only value-number calls if - the result does not have to be distinct. - -2013-03-20 Richard Biener - - * tree-inline.c (copy_tree_body_r): Sync MEM_REF code with - remap_gimple_op_r. - -2013-03-20 Bill Schmidt - Steven Bosscher - - PR rtl-optimization/56605 - * loop-iv.c (implies_p): Handle equal RTXs and subregs. - -2013-03-20 Uros Bizjak - - PR bootstrap/56656 - * config/i386/i386.md (*movdi_internal): Handle broken assemblers - that require movd instead of movq. - -2013-03-20 Richard Biener - - * tree-ssa-structalias.c (struct variable_info): Add pointer - to the first field of an aggregate with sub-vars. Make - this and the pointer to the next subfield its ID. - (vi_next): New function. - (nothing_id, anything_id, readonly_id, escaped_id, nonlocal_id, - storedanything_id, integer_id): Increment by one. - (new_var_info, get_call_vi, lookup_call_clobber_vi, - get_call_clobber_vi): Adjust. - (solution_set_expand): Simplify and speedup. - (solution_set_add): Inline into ... - (set_union_with_increment): ... this. Adjust accordingly. - (do_sd_constraint): Likewise. - (do_ds_constraint): Likewise. - (do_complex_constraint): Simplify. - (build_pred_graph): Adjust. - (solve_graph): Likewise. Simplify and speedup. - (get_constraint_for_ssa_var, get_constraint_for_ptr_offset, - get_constraint_for_component_ref, get_constraint_for_1, - first_vi_for_offset, first_or_preceding_vi_for_offset, - create_function_info_for, create_variable_info_for_1, - create_variable_info_for, intra_create_variable_infos): Adjust. - (init_base_vars): Push NULL for ID zero. - (compute_points_to_sets): Adjust. - -2013-03-20 Richard Biener - - * cfgloop.c (verify_loop_structure): Streamline and avoid - ICEing on corrupt loop tree. - * graph.c (draw_cfg_nodes_for_loop): Avoid ICEing on corrupt - loop tree. - -2013-03-20 Richard Biener - - * tree-vect-loop-manip.c (slpeel_can_duplicate_loop_p): Do not - check whether an SSA update is needed. - -2013-03-20 Richard Sandiford - - * config/mips/constraints.md (T): Rename to... - (Yf): ...this. - (U): Rename to... - (Yd): ...this. - * config/mips/mips.md (*movdi_64bit, *movdi_64bit_mips16) - (*mov_internal, *mov_mips16): Update accordingly. - -2013-03-19 Ian Bolton - - * config/aarch64/aarch64.md (*sub3_carryin): New pattern. - (*subsi3_carryin_uxtw): Likewise. - -2013-03-19 Ian Bolton - - * config/aarch64/aarch64.md (*ror3_insn): New pattern. - (*rorsi3_insn_uxtw): Likewise. - -2013-03-19 Ian Bolton - - * config/aarch64/aarch64.md (*extr5_insn): New pattern. - (*extrsi5_insn_uxtw): Likewise. - -2013-03-19 Richard Biener - - PR tree-optimization/56273 - * passes.c (init_optimization_passes): Move second VRP after DOM. - -2013-03-19 Uros Bizjak - - * config/i386/i386.md (*movti_internal): Merge from - *movti_internal_rex64 and *movti_internal_sse. Use x64 isa attribute. - (*movdi_internal): Merge with *movdi_internal_rex64. Use x64 and - nox64 isa attributes. - -2013-03-18 Richard Biener - - * tree-ssa-structalias.c (find): Use gcc_checking_assert. - (unite): Likewise. - (merge_node_constraints): Likewise. - (build_succ_graph): Likewise. - (valid_graph_edge): Inline into single caller. - (unify_nodes): Likewise. Use bitmap_set_bit return value - and cache varinfo. - (scc_visit): Fix formatting and variable use. - (do_sd_constraint): Use gcc_checking_assert. - (do_ds_constraint): Likewise. - (do_complex_constraint): Likewise. - (condense_visit): Likewise. Cleanup. - (dump_pred_graph): New function. - (perform_var_substitution): Dump the pred-graph before - variable substitution. - (find_equivalent_node): Use gcc_checking_assert. - (rewrite_constraints): Guard checking loop with ENABLE_CHECKING. - -2013-03-18 Richard Biener - - * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): - Remove cond_expr_stmt_list argument and do not gimplify the - built expression. - (vect_loop_versioning): Adjust. - * tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref): - Cleanup to use less temporaries. - (vect_create_data_ref_ptr): Cleanup. - -2013-03-18 Jakub Jelinek - - PR tree-optimization/56635 - * fold-const.c (operand_equal_p): For MEM_REF and TARGET_MEM_REF, - require types_compatible_p types. - -2013-03-18 Nick Clifton - - * config/stormy16/stormy16.c (xstormy16_expand_prologue): Remove - spurious backslash. - - * config/mn10300/mn10300.c (mn10300_get_live_callee_saved_regs): - Add missing line to comment describing function. - -2013-03-18 Richard Biener - - PR tree-optimization/56210 - * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): - Handle string / character search functions. - * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise. - -2013-03-18 Richard Biener - - PR middle-end/56483 - * cfgexpand.c (expand_gimple_cond): Inline gimple_cond_single_var_p - and implement properly. - * gimple.h (gimple_cond_single_var_p): Remove. - -2013-03-18 Richard Biener - - * tree-data-ref.h (find_data_references_in_loop): Declare. - * tree-data-ref.c (get_references_in_stmt): Use a stack - vector pre-allocated in the callers. - (find_data_references_in_stmt): Adjust. - (graphite_find_data_references_in_stmt): Likewise. - (create_rdg_vertices): Likewise. - (find_data_references_in_loop): Export. - * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): - Compute dependences here... - (vect_analyze_data_refs): ...not here. When we encounter - a non-vectorizable data reference in basic-block vectorization - truncate the data reference vector. Do not bother to - fixup data-dependence information for gather loads. - * tree-vect-slp.c (vect_slp_analyze_bb_1): Check the number - of data references, as reported. - -2013-03-18 Richard Biener - - PR tree-optimization/3713 - * tree-ssa-sccvn.c (visit_copy): Simplify. Always propagate - has_constants and expr. - (stmt_has_constants): Properly valueize SSA names when deciding - whether the stmt has constants. - -2013-03-18 Richard Biener - - * tree-ssa-loop-manip.c (find_uses_to_rename): Do not scan the - whole function when there is nothing to do. - * tree-ssa-loop.c (pass_vectorize): Remove TODO_update_ssa. - * tree-vectorizer.c (vectorize_loops): Update virtual and - loop-closed SSA once. - * tree-vect-loop.c (vect_transform_loop): Do not update SSA here. - -2013-03-18 Richard Biener - - PR middle-end/56113 - * domwalk.c (bb_postorder): New global static. - (cmp_bb_postorder): New function. - (walk_dominator_tree): Replace scheme imposing an order for - visiting dominator sons by one sorting them at the time they - are pushed on the stack. - -2013-03-18 Richard Biener - - PR tree-optimization/39326 - * tree-ssa-loop-im.c (refs_independent_p): Exploit symmetry. - (struct mem_ref): Replace mem member with ao_ref typed member. - (MEM_ANALYZABLE): Adjust. - (memref_eq): Likewise. - (mem_ref_alloc): Likewise. - (gather_mem_refs_stmt): Likewise. - (mem_refs_may_alias_p): Use the ao_ref to query the alias oracle. - (execute_sm_if_changed_flag_set): Adjust. - (execute_sm): Likewise. - (ref_always_accessed_p): Likewise. - (refs_independent_p): Likewise. - (can_sm_ref_p): Likewise. - -2013-03-18 Jakub Jelinek - - PR c/56566 - * tree.c (tree_int_cst_min_precision): For integer_zerop (value) - return 1 even for !unsignedp. - -2013-03-17 Uros Bizjak - - * config/i386/i386.md (isa): Add x64 and nox64. - (enabled): Define x64 for TARGET_64BIT and nox64 for !TARGET_64BIT. - (*pushtf): Enable *roF alternative for x64 isa only. - (*pushxf): Merge with *pushxf_nointeger. Use Yx*r constraint. Set - mode attribute of integer alternatives to DImode for TARGET_64BIT. - (*pushdf): Merge with *pushdf_rex64. Use x64 and nox64 isa attributes. - (*movtf_internal): Merge from *movtf_internal_rex64 and - *movtf_internal_sse. Use x64 and nox64 isa attributes. - (*movxf_internal): Merge with *movxf_internal_rex64. Use x64 and - nox64 isa attributes. - (*movdf_internal): Merge with *movdf_internal_rex64. Use x64 and - nox64 isa attributes. - * config/i386/constraints.md (Yd): Do not set for TARGET_64BIT. - -2013-03-17 Uros Bizjak - - * config/alpha/alpha.c (TARGET_LRA_P): New define. - -2013-03-17 Jakub Jelinek - - PR target/56640 - * config/arm/arm.h (REG_CLASS_NAMES): Add "SFP_REG" and "AFP_REG" - class names. Remove trailing comma after "ALL_REGS". - -2013-03-16 Jan Hubicka - - * cgraph.h (cgraph_get_create_real_symbol_node): Declare. - * cgraph.c (cgraph_get_create_real_symbol_node): New function. - * cgrpahbuild.c: Use cgraph_get_create_real_symbol_node instead - of cgraph_get_create_node. - * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise. - -2013-03-16 Jason Merrill - - PR debug/49090 - * dwarf2out.c (gen_generic_params_dies): Indicate default arguments - with DW_AT_default_value. - -2013-03-16 Jakub Jelinek - - * BASE-VER: Set to 4.9.0. - -2013-03-14 Andi Kleen - - PR target/56619 - * doc/extend.texi: Document __ATOMIC_HLE_ACQUIRE, - __ATOMIC_HLE_RELEASE. Document __builtin_ia32 TSX intrincs. - Document _x* TSX intrinsics. - -2013-03-14 Edgar E. Iglesias - David Holsgrove - - * configure.ac: Add MicroBlaze TLS support detection. - * configure: Regenerate. - * config/microblaze/microblaze-protos.h - (microblaze_cannot_force_const_mem, microblaze_tls_referenced_p, - symbol_mentioned_p, label_mentioned_p): Add prototypes. - * config/microblaze/microblaze.c (microblaze_address_type): Add - ADDRESS_TLS and tls_reloc address types. - (microblaze_address_info): Add tls_reloc. - (TARGET_HAVE_TLS): Define. - (get_tls_get_addr, microblaze_tls_symbol_p, microblaze_tls_operand_p_1, - microblaze_tls_referenced_p, microblaze_cannot_force_const_mem, - symbol_mentioned_p, label_mentioned_p, tls_mentioned_p, - load_tls_operand, microblaze_call_tls_get_addr, - microblaze_legitimize_tls_address): New functions. - (microblaze_classify_unspec): Handle UNSPEC_TLS. - (get_base_reg): Use microblaze_tls_symbol_p. - (microblaze_classify_address): Handle TLS. - (microblaze_legitimate_pic_operand): Use symbol_mentioned_p, - label_mentioned_p and microblaze_tls_referenced_p. - (microblaze_legitimize_address): Handle TLS. - (microblaze_address_insns): Handle ADDRESS_TLS. - (pic_address_needs_scratch): Handle TLS. - (print_operand_address): Handle TLS. - (microblaze_expand_prologue): Check TLS_NEEDS_GOT. - (microblaze_expand_move): Handle TLS. - (microblaze_legitimate_constant_p): Check - microblaze_cannot_force_const_mem and microblaze_tls_symbol_p. - (TARGET_CANNOT_FORCE_CONST_MEM): Define. - * config/microblaze/microblaze.h (TLS_NEEDS_GOT): Define - (PIC_OFFSET_TABLE_REGNUM): Set. - * config/microblaze/linux.h (TLS_NEEDS_GOT): Define. - * config/microblaze/microblaze.md (UNSPEC_TLS): Define. - (addsi3, movsi_internal2, movdf_internal): Update constraints - * config/microblaze/predicates.md (arith_plus_operand): Define - (move_operand): Redefine as move_src_operand, - check microblaze_tls_referenced_p. - -2013-03-14 Ian Bolton - - * config/aarch64/aarch64.md: (*and3nr_compare0): Use CC_NZ. - (*and_3nr_compare0): Likewise. - -2013-03-14 Ian Bolton - - * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return correct - CC mode for AND. - -2013-03-14 Jakub Jelinek - - PR tree-optimization/53265 - * common.opt (Waggressive-loop-optimizations): New option. - * tree-ssa-loop-niter.c: Include tree-pass.h. - (do_warn_aggressive_loop_optimizations): New function. - (record_estimate): Call it. Don't add !is_exit bounds to loop->bounds - if number_of_latch_executions returned constant. - (estimate_numbers_of_iterations_loop): Call number_of_latch_executions - early. If number_of_latch_executions returned constant, set - nb_iterations_upper_bound back to it. - * cfgloop.h (struct loop): Add warned_aggressive_loop_optimizations - field. - * Makefile.in (tree-ssa-loop-niter.o): Depend on $(TREE_PASS_H). - * doc/invoke.texi (-Wno-aggressive-loop-optimizations): Document. - - * config/aarch64/t-aarch64-linux (MULTARCH_DIRNAME): Remove. - (MULTILIB_OSDIRNAMES): Set. - * genmultilib: If defaultosdirname doesn't start with :: , set - defaultosdirname2 instead, clear it and emit two . multilib_raw - entries instead of just one. - -2013-03-14 Kaz Kojima - - * config/sh/linux.h (TARGET_DEFAULT): Remove MASK_USERMODE. - (SUBTARGET_OVERRIDE_OPTIONS): Set TARGET_USERMODE as default. - * config/sh/netbsd-elf.h (TARGET_DEFAULT): Remove MASK_USERMODE. - (SUBTARGET_OVERRIDE_OPTIONS): New. - -2013-03-13 Oleg Endo - - PR target/49880 - * config/sh/sh.opt (FPU_SINGLE_ONLY): New mask. - (musermode): Convert to Var(TARGET_USERMODE). - * config/sh/sh.h (SELECT_SH2A_SINGLE_ONLY, SELECT_SH4_SINGLE_ONLY, - MASK_ARCH): Add MASK_FPU_SINGLE_ONLY. - * config/sh/sh.c (sh_option_override): Use - TARGET_FPU_DOUBLE || TARGET_FPU_SINGLE_ONLY for call-fp case. - * config/sh/sh.md (udivsi3_i1, divsi3_i1): Remove ! TARGET_SH4 - condition. - (udivsi3_i4, divsi3_i4): Use TARGET_FPU_DOUBLE condition instead of - TARGET_SH4. - (udivsi3_i4_single, divsi3_i4_single): Use - TARGET_FPU_SINGLE_ONLY || TARGET_FPU_DOUBLE instead of TARGET_HARD_SH4. - -2013-03-13 Dave Korn - - * config/i386/cygwin.h (SHARED_LIBGCC_SPEC): Make shared libgcc the - default setting. - -2013-03-13 Richard Biener - - PR tree-optimization/56608 - * tree-vect-slp.c (vect_schedule_slp): Do not remove scalar - calls when vectorizing basic-blocks. - -2013-03-13 Jakub Jelinek - - PR plugins/45078 - * config.gcc: On arm, mips, sh and sparc add vxworks-dummy.h to - tm_file. - -2013-03-12 Jakub Jelinek - - * doc/invoke.texi (-Waddr-space-convert): Move into the table earlier. - -2013-03-11 Jan Hubicka - - PR lto/56557 - * lto-streamer-out.c (output_symbol_p): Skip references from - constructors of external variables. - -2013-03-11 Jan Hubicka - - PR middle-end/56571 - * valtrack.c (cleanup_auto_inc_dec): Unshare clobbers originating - from pseudos. - * emit-rtl.c (verify_rtx_sharing): Likewise. - (copy_insn_1): Likewise. - * rtl.c (copy_rtx): Likewise. - -2013-03-11 Georg-Johann Lay - - PR target/56591 - * config/avr/avr.c (avr_print_operand): Add space after '%c' in - output_operand_lossage message. - -2013-03-11 Richard Earnshaw - - PR target/56470 - * arm.c (shift_op): Validate RTL pattern on the fly. - (arm_print_operand, case 'S'): Don't use shift_operator to validate - the RTL. - -2013-03-10 John David Anglin - - PR target/56347 - * config/pa/pa.md (call_value): Check for calls to powf and direct to - new call patterns that clobber %fr12. - (call_val_powf, call_val_powf_pic, call_val_powf_64bit): New insn, - split and postreload patterns. - * config/pa/pa.c (pa_conditional_register_usage): Revert marking - registers %fr12 and %fr12R as call used. - -2013-03-09 Steven Bosscher - - * dse.c (delete_dead_store_insn): Respect TDF_DETAILS. - (canon_address, record_store, replace_read, check_mem_read_rtx, - scan_insn, dse_step1, dse_step2_init, dse_step2_spill, - dse_step4, dse_step5_nospill, dse_step5_spill, dse_step6, - rest_of_handle_dse): Likewise. - -2013-03-09 Richard Sandiford - - PR middle-end/56524 - * tree.h (tree_optimization_option): Rename target_optabs to optabs. - Add base_optabs. - (TREE_OPTIMIZATION_OPTABS): Update after previous field change. - (TREE_OPTIMIZATION_BASE_OPTABS): New macro. - (save_optabs_if_changed): Replace with... - (init_tree_optimization_optabs): ...this. - * optabs.c (save_optabs_if_changed): Rename to... - (init_tree_optimization_optabs): ...this. Take the optimization node - as argument. Do nothing if the base optabs are already correct. - Reuse the existing TREE_OPTIMIZATION_OPTABS memory if we need - to recompute optabs. - * function.h (function): Remove optabs field. - * function.c (invoke_set_current_function_hook): Call - init_tree_optimization_optabs. Use the result to initialize - this_fn_optabs. - -2013-02-27 Aldy Hernandez - - * trans-mem.c (expand_transaction): Do not set PR_INSTRUMENTEDCODE - if GTMA_HAS_NO_INSTRUMENTATION. - (generate_tm_state): Keep GTMA_HAS_NO_INSTRUMENTATION bit. - (ipa_tm_transform_transaction): Set GTMA_HAS_NO_INSTRUMENTATION. - * gimple.h (GTMA_HAS_NO_INSTRUMENTATION): Define. - * gimple-pretty-print.c (dump_gimple_transaction): Handle - GTMA_HAS_NO_INSTRUMENTATION. - -2013-03-08 Jakub Jelinek - - * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Don't link against - libasan_preinit.o. - -2013-03-08 Marek Polacek - Jakub Jelinek - - PR tree-optimization/56478 - * predict.c (is_comparison_with_loop_invariant_p): Change the - type of loop_step to tree. - (predict_loops): Adjust. - (predict_iv_comparison): Perform the computations on double_ints. - -2013-03-08 Richard Biener - - PR tree-optimization/56570 - * tree-cfg.c (verify_expr_location_1): Verify locations for - DECL_DEBUG_EXPR. - * tree-sra.c (create_access_replacement): Strip locations - from DECL_DEBUG_EXPRs. - -2013-03-08 Richard Biener - - * tree-inline.c (expand_call_inline): Do not associate - a BLOCK with the location in BLOCK_SOURCE_LOCATION. - * tree-cfg.c (verify_location): Verify BLOCK_SOURCE_LOCATION. - -2013-03-08 Richard Biener - - * tree-ssa-ter.c (is_replaceable_p): Do not TER across location - or block changes with -Og. Fix for location / block encoding - changes and PHI arguments with locations. - -2013-03-07 Steven Bosscher - - * bitmap.c (struct bitmap_descriptor_d): Use unsigned HOST_WIDEST_INT - for all counters. - (struct output_info): Likewise. - (register_overhead): Remove bad gcc_assert. - (bitmap_find_bit): If there is only a single bitmap element, do not - count a miss as a search. - (print_statistics): Update for counter type changes. - (dump_bitmap_statistics): Likewise. Print headers such that they - are properly lined up with the printed counters. - -2013-03-07 Jakub Jelinek - - PR tree-optimization/56559 - * tree-ssa-reassoc.c (zero_one_operation): When looking at rhs2, - check that it has only a single use. - -2013-03-07 Richard Biener - - * doc/invoke.texi (fwhole-program): Discourage use in combination - with -flto. - -2013-03-06 Jakub Jelinek - - * config/arm/t-arm (TM_H, OPTIONS_H_EXTRA): Add arm-cores.def. - - PR tree-optimization/56539 - * tree-tailcall.c (adjust_return_value_with_ops): Use GSI_SAME_STMT - instead of GSI_CONTINUE_LINKING as last argument to - force_gimple_operand_gsi. Adjust function comment. - - * config/aarch64/t-aarch64 (TM_H, OPTIONS_H_EXTRA): Add - aarch64-cores.def. - - PR middle-end/56548 - * expr.c (expand_cond_expr_using_cmove): When expanding cmove in - promoted mode, convert the result back to the original mode. - -2013-03-06 Richard Biener - - PR middle-end/56294 - * tree-into-ssa.c (insert_phi_nodes_for): Add dumping. - (insert_updated_phi_nodes_compare_uids): New function. - (update_ssa): Sort symbols_to_rename after UID before - traversing it to insert PHI nodes. - -2013-03-06 Richard Biener - - PR middle-end/50494 - * tree-vect-data-refs.c (vect_can_force_dr_alignment_p): - Do not adjust alignment of DECL_IN_CONSTANT_POOL decls. - - Revert - 2013-02-13 Richard Biener - - PR lto/50494 - * varasm.c (output_constant_def_1): Get the decl representing - the constant as argument. - (output_constant_def): Wrap output_constant_def_1. - (make_decl_rtl): Use output_constant_def_1 with the decl - representing the constant. - (build_constant_desc): Optionally re-use a decl already - representing the constant. - (tree_output_constant_def): Adjust. - -2013-03-06 Joey Ye - - PR lto/50293 - * gcc.c (convert_white_space): New function. - (main): Handles white space in function name. - -2013-03-06 Oleg Endo - - PR target/56529 - * config/sh/sh.c (sh_option_override): Check for TARGET_DYNSHIFT - instead of TARGET_SH2 for call-table case. Do not set sh_div_strategy - to SH_DIV_CALL_TABLE for TARGET_SH2. - * config.gcc (sh_multilibs): Add m2 and m2a to sh*-*-linux* multilib - list. - * doc/invoke.texi (SH options): Document mdiv= call-div1, call-fp, - call-table options. - -2013-03-05 Sterling Augustine - Cary Coutant - - PR debug/55364 - * dwarf2out.c (resolve_addr): Don't call - remove_loc_list_addr_table_entries a second time for the same - expression. - -2013-03-05 Jakub Jelinek - - PR debug/56510 - * cfgexpand.c (expand_debug_parm_decl): Call copy_rtx on incoming. - (avoid_complex_debug_insns): New function. - (expand_debug_locations): Call it. - - PR rtl-optimization/56484 - * ifcvt.c (noce_process_if_block): If else_bb is NULL, avoid extending - lifetimes of hard registers on small register class machines. - -2013-03-05 David Holsgrove - - * config/microblaze/microblaze-protos.h: Rename - microblaze_is_interrupt_handler to microblaze_is_interrupt_variant. - * config/microblaze/microblaze.c (microblaze_attribute_table): Add - fast_interrupt. - (microblaze_fast_interrupt_function_p): New function. - (microblaze_is_interrupt_handler): Rename to - microblaze_is_interrupt_variant and add fast_interrupt check. - (microblaze_must_save_register): Use microblaze_is_interrupt_variant. - (save_restore_insns): Likewise. - (compute_frame_size): Likewise. - (microblaze_function_prologue): Add FAST_INTERRUPT_NAME. - (microblaze_globalize_label): Likewise. - * config/microblaze/microblaze.h: Define FAST_INTERRUPT_NAME. - * config/microblaze/microblaze.md: Use wrapper - microblaze_is_interrupt_variant. - -2013-03-05 Kai Tietz - - * sdbout.c (sdbout_one_type): Switch to current function's section - supporting cold/hot. - -2013-03-05 David Holsgrove - - * doc/invoke.texi (MicroBlaze): Add -mbig-endian, -mlittle-endian, - -mxl-reorder. - -2013-03-05 Jakub Jelinek - - PR middle-end/56461 - * ggc-common.c (gt_pch_save): For ENABLE_VALGRIND_CHECKING, - if VALGRIND_GET_VBITS is defined, temporarily make object - memory all defined, and restore previous valgrind addressability - and definability afterwards. Free this_object at the end. - - PR middle-end/56461 - * lra.c (lra): Call lra_clear_live_ranges if live_p, - right before calling lra_create_live_ranges, also call it - when clearing live_p. Only call lra_clear_live_ranges - at the end if live_p. - - PR middle-end/56461 - * sched-deps.c (delete_dep_node): Free DEP_REPLACE. - -2013-03-05 Richard Biener - - PR tree-optimization/56521 - * tree-ssa-sccvn.c (set_value_id_for_result): Always initialize - value-id. - -2013-03-05 Steven Bosscher - - PR c++/55135 - * except.h (remove_unreachable_eh_regions): New prototype. - * except.c (remove_eh_handler_splicer): New function, split out - of remove_eh_handler. - (remove_eh_handler): Use remove_eh_handler_splicer. Add comment - warning about running it on many EH regions one at a time. - (remove_unreachable_eh_regions_worker): New function, walk the - EH tree in depth-first order and remove non-marked regions. - (remove_unreachable_eh_regions): New function. - * tree-eh.c (mark_reachable_handlers): New function, split out - from remove_unreachable_handlers. - (remove_unreachable_handlers): Use mark_reachable_handlers and - remove_unreachable_eh_regions. - (remove_unreachable_handlers_no_lp): Use mark_reachable_handlers - and remove_unreachable_eh_regions. - -2013-03-05 Richard Biener - - PR middle-end/56525 - * loop-init.c (fix_loop_structure): Remove loops in two stages, - not freeing them until the end. - -2013-03-05 Andreas Krebbel - - * config/s390/s390.h: Define DWARF2_ASM_LINE_DEBUG_INFO. - -2013-03-05 Richard Biener - - PR tree-optimization/56270 - * tree-vect-slp.c (vect_schedule_slp): Clear vectorized stmts - of loads after scheduling an SLP instance. - -2013-03-05 Jakub Jelinek - - * Makefile.in (dg_target_exps): Add aarch64.exp, epiphany.exp and - tic6x.exp. - (check_gcc_parallelize): Run guality.exp as a separate job from - vect.exp with unsorted.exp and $(dg_target_exps) separately from - struct-layout-1.exp with stackalign.exp. - - * alias.c (init_alias_analysis): Clear reg_known_equiv_p bitmap. - - PR middle-end/56461 - * tree-vect-slp.c (vect_supported_load_permutation_p): Free - load_index sbitmap even if some bit in it isn't set. - - PR middle-end/56461 - * tree-ssa-loop-niter.c (bb_queue): Remove typedef. - (discover_iteration_bound_by_body_walk): Change queues to - vec > and queue to vec. Fix up - spelling in comment. Call safe_push on queues[bound_index] directly. - Release queues[queue_index] in every iteration unconditionally. - Release bounds vector. - - PR middle-end/56461 - * tree-vect-stmts.c (free_stmt_vec_info_vec): Call - free_stmt_vec_info on any left-over stmt_vec_info in the vector. - * tree-vect-loop.c (vect_create_epilog_for_reduction): Release - inner_phis vector. - -2013-03-05 Richard Biener - - PR lto/56515 - * tree-inline.c (remap_blocks_to_null): New function. - (expand_call_inline): When expanding a call stmt without - an associated block inline remap all callee blocks to NULL. - -2013-03-05 Jakub Jelinek - - PR rtl-optimization/56494 - * simplify-rtx.c (simplify_truncation): If C is narrower than A, - optimize (truncate:A (subreg:B (truncate:C X) 0)) into - (subreg:A (truncate:C X) 0) instead of (truncate:A X). - - PR middle-end/56461 - * sel-sched-ir.c (free_sched_pools): Release - succs_info_pool.stack[succs_info_pool.max_top] vectors too - if succs_info_pool.max_top isn't -1. - - PR bootstrap/56509 - * opts.c (opts_obstack, opts_concat): Moved to... - * opts-common.c (opts_obstack, opts_concat): ... here. - -2013-03-04 Jakub Jelinek - - PR middle-end/56461 - * diagnostic.c (diagnostic_append_note): Save and restore old prefix. - -2013-03-04 Martin Jambor - - * tree-dfa.c (get_or_create_ssa_default_def): Use parameter fn in - all appropriate places. - -2013-01-04 Eric Botcazou - - PR tree-optimization/56424 - * ipa-split.c (split_function): Do not set the RSO flag if result is - not by reference and its type is a register type. - -2013-03-04 David Holsgrove - - * config/microblaze/microblaze.c (microblaze_valid_pic_const): New - (microblaze_legitimate_pic_operand): Likewise - * config/microblaze/microblaze.h (LEGITIMATE_PIC_OPERAND_P): calls - new function microblaze_legitimate_pic_operand - * config/microblaze/microblaze-protos.h - (microblaze_legitimate_pic_operand): Declare. - -2013-03-04 Edgar E. Iglesias - - * config/microblaze/predicates.md (call_insn_simple_operand): - New predicate for supported rtx code types. - * config/microblaze/microblaze.md (call_internal1): Use - call_insn_simple_operand predicate. - -2013-03-04 Jakub Jelinek - - PR middle-end/56461 - * tree-loop-distribution.c (ldist_gen): Call partition_free after each - partitions.ordered_remove. - - PR middle-end/56461 - * tree-vect-stmts.c (vectorizable_conversion): Don't call - vec_oprnds0.create (1) for modifier == NONE. - - PR middle-end/56461 - * tree-vect-stmts.c (vectorizable_shift): Don't call create methods - on vec_oprnds0 or vec_oprnds1 before loop, only call it on - vec_oprnds1 right before pushing anything to it for - scalar_shift_arg. - - PR middle-end/56461 - * tree-vect-loop.c (destroy_loop_vec_info): For !clean_stmts, just - set nbbs to 0 instead of having separate code path. - (vect_analyze_loop_form): Call destroy_loop_vec_info with true - instead of false as last argument if returning NULL. - -2013-03-03 Sandra Loosemore - - * target.def (TARGET_OPTION_VALID_ATTRIBUTE_P): Update comments; - the attribute is now called "target" instead of "option". - (TARGET_OPTION_PRAGMA_PARSE): Likewise, for the pragma. - * doc/tm.texi.in (Target Attributes): Likewise document the correct - attribute/pragma name for TARGET_OPTION_VALID_P and - TARGET_OPTION_PRAGMA_PARSE. Also copy-edit and correct markup. - * doc/tm.texi: Regenerated. - -2013-03-02 David Holsgrove - - * config/microblaze/microblaze.c: - Check mcpu, pcmp requirement and set TARGET_REORDER to 0 if not met. - * config/microblaze/microblaze.h: Add -mxl-reorder to - DRIVER_SELF_SPECS. - * config/microblaze/microblaze.md: New bswapsi2 and bswaphi2. - instructions emitted if TARGET_REORDER. - * config/microblaze/microblaze.opt: New option -mxl-reorder set to 1 - or 0 for -m/-mno case, but initialises as 2 to detect default use case - separately. - -2013-03-01 Xinliang David Li - - * tree-ssa-uninit.c (compute_control_dep_chain): Limit post-dom - walk length. - -2013-03-01 Jakub Jelinek - - PR middle-end/56461 - * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Release path - vector even when returning true. Fix up function comment formatting. - - PR middle-end/56461 - * ira-build.c (ira_loop_nodes_count): New variable. - (create_loop_tree_nodes): Initialize it. - (finish_loop_tree_nodes): Use it instead of looking at current_loops. - - PR middle-end/56461 - * tree-vect-data-refs.c (vect_permute_store_chain): Avoid using copy - method on dr_chain and result_chain. - * tree-vect-stmts.c (vectorizable_store): Only call - result_chain.create if j == 0. - - PR middle-end/56461 - * tree-vect-stmts.c (vect_create_vectorized_promotion_stmts): Call - vec_oprnds0->release (); rather than vec_oprnds0->truncate (0) - before overwriting it. - -2013-03-01 Tobias Burnus - - * doc/extended.texi (C Extensions): Change order in @menu - to match @node. - (Other MIPS Built-in Functions): Move last MIPS entry before - "picoChip Built-in Functions". - (SH Built-in Functions): Move after RX Built-in Functions. - * doc/gcc.texi (Introduction): Change order in @menu - to match @node. - * doc/md.texi (Constraints): Ditto. - * gty.texi (Type Information): Ditto. - (User-provided marking routines for template types): Make - subsection. - * doc/invoke.texi (AArch64 Options): Move before - "Adapteva Epiphany Options". - -2013-02-28 Konstantin Serebryany - Jakub Jelinek - - PR sanitizer/56454 - * asan.c (gate_asan): Lookup no_sanitize_address instead of - no_address_safety_analysis attribute. - * doc/extend.texi (no_address_safety_attribute): Rename to - no_sanitize_address attribute, mention no_address_safety_analysis - attribute as deprecated alias. - -2013-02-28 Jakub Jelinek - - PR middle-end/56461 - * tree-vectorizer.h (vect_get_slp_defs): Change 3rd argument - type to vec > *. - * tree-vect-slp.c (vect_get_slp_defs): Likewise. Change vec_defs - to be vec instead of vec *, set vec_defs - to vNULL and call vec_defs.create (number_of_vects), adjust other - uses of vec_defs. - * tree-vect-stmts.c (vect_get_vec_defs, vectorizable_call, - vectorizable_condition): Adjust vect_get_slp_defs callers. - -2013-02-28 James Greenhalgh - - * config/aarch64/aarch64.c - (aarch64_float_const_representable): Remove unused variable. - -2013-02-28 James Greenhalgh - - * config/aarch64/aarch64.c (aarch64_mangle_type): Make static. - -2013-02-28 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_init_simd_builtins): Make static. - -2013-02-28 James Greenhalgh - - * config/aarch64/aarch64.c - (aarch64_simd_make_constant): Make static. - -2013-02-28 Martin Jambor - - * tree-sra.c (load_assign_lhs_subreplacements): Do not put replacements - with no initialization to the RHS of debug statements. - -2013-02-28 Martin Jambor - - PR tree-optimization/56294 - * tree-sra.c (analyze_access_subtree): Create replacement declarations. - Adjust dumping. - (get_access_replacement): Do not call create_access_replacement. - Assert a replacement exists. - (get_repl_default_def_ssa_name): Create the replacement declaration - itself. - -2013-02-28 Ramana Radhakrishnan - - * config/arm/arm.c (arm_output_mi_thunk): Call final_start_function and - final_end_function. - -2013-02-28 Marek Polacek - - PR rtl-optimization/56466 - * loop-unroll.c (unroll_and_peel_loops): Call fix_loop_structure - if we're changing a loop. - (peel_loops_completely): Likewise. - -2013-02-28 Paolo Carlini - - PR c++/55813 - * doc/invoke.texi ([-Wctor-dtor-privacy]): Complete. - -2013-02-28 Georg-Johann Lay - - PR target/56445 - * config/avr/avr.c (avr_init_builtins): Use 'n' instead of empty - macro parameters with: FX_FTYPE_FX, FX_FTYPE_FX_INT, INT_FTYPE_FX, - INTX_FTYPE_FX, FX_FTYPE_INTX. - * config/avr/builtins.def: Adjust respective DEF_BUILTIN. - -2013-02-28 Georg-Johann Lay - - * avr/avr-mcus.def (ata5272, ata5505, attiny1634, ata6285) - (ata6286, atmega8a, atmega48pa, ata5790, ata5790n, ata5795) - (atmega164pa, atmega165pa, atmega168pa, atmega16hva, atmega16hvb) - (atmega16hvbrevb, atmega16m1, atmega16u4, atmega26hvg, atmega32a) - (atmega32a, atmega3250pa, atmega3290pa, atmega32c1, atmega32m1) - (atmega32u4, atmega32u6, atmega64a, atmega6490a, atmega6490p) - (atmega64c1, atmega64m1, atmega64rfa2, atmega64rfr2, atmega32hvb) - (atmega32hvbrevb, atmega16hva2, atmega48hvf, at90pwm161) - (atmega128a, atmega1284, atmxt112sl, atmxt224, atmxt224e) - (atmxt336s, atxmega16a4u, atxmega16c4, atxmega32a4u, atxmega32c4) - (atxmega32e5, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3) - (atxmega64c3, atxmega64d4, atxmega128a3u, atxmega128b1) - (atxmega128b3, atxmega128c3, atxmega128d4, atmxt540s, atmxt540sreva) - (atxmega192a3u, atxmega192c3, atxmega256a3u, atxmega256c3) - (atxmega384c3, atxmega384d3, atxmega128a4u): New AVR_MCU. - (avrxmega6): Increase max flash segments from 5 to 6. - * config/avr/t-multilib: Regenerate. - * config/avr/avr-tables.opt: Regenerate. - * doc/avr-mmcu.texi: Regenerate. - -2013-02-28 Georg-Johann Lay - - * config/avr/avr.h (device_to_arch): Rename to device_to_ld. - (avr_device_to_arch): Rename to avr_device_to_ld. - (avr_device_to_as): New prototype. - (EXTRA_SPEC_FUNCTIONS): Add device_to_as. - (ASM_SPEC): Use device_to_as to get -mmcu= and -mno-skip-bug=. - * config/avr/driver-avr.c (avr_device_to_as): New. - (avr_device_to_arch): Rename to avr_device_to_ld. - -2013-02-27 Jakub Jelinek - - PR middle-end/56461 - * tree-vect-data-refs.c (vect_permute_load_chain): Avoid using copy - method on dr_chain and result_chain. - - PR middle-end/56461 - * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Call - pointer_set_destroy on not_executed_last_iteration. - - PR middle-end/56461 - * tree-vect-loop.c (vectorizable_reduction): Release vect_defs vector. - - PR middle-end/56461 - * ipa-pure-const.c (propagate): Use FOR_EACH_FUNCTION instead of - FOR_EACH_DEFINED_FUNCTION when freeing state. - - PR middle-end/56461 - * df-scan.c (df_insn_delete): Use df_scan_free_mws_vec before - pool_free. - (df_insn_rescan_debug_internal): Use df_scan_free_mws_vec before - overwriting it. - - PR middle-end/56461 - * ipa-cp.c (decide_whether_version_node): Call vec_free on - known_aggs[i].items and release known_aggs vector. - - PR middle-end/56461 - * ipa-reference.c (propagate): Free node_info even for alias nodes. - -2013-02-27 Edgar E. Iglesias - - * config/microblaze/microblaze.c (microblaze_emit_compare): - Use xor for EQ/NE comparisions. - * config/microblaze/microblaze.md (cstoresf4): Add constraints - (cbranchsf4): Adjust operator to comparison_operator. - -2013-02-27 Jakub Jelinek - - PR middle-end/56461 - * tree-flow.h (edge_var_map_vector): Change into va_heap, vl_embed - vector. - * tree-ssa.c (redirect_edge_var_map_add): Use vec_safe_reserve and - vec_safe_push, always update *slot. - (redirect_edge_var_map_clear): Use vec_free. - (redirect_edge_var_map_dup): Use vec_safe_copy and vec_safe_reserve. - (free_var_map_entry): Use vec_free. - * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Use - FOR_EACH_VEC_SAFE_ELT instead of FOR_EACH_VEC_ELT. - -2013-02-27 Andrey Belevantsev - - PR middle-end/45472 - * sel-sched-ir.c (merge_expr): Also change vinsn of merged expr - when the may_trap_p bit of the exprs being merged differs. - Reorder tests for speculativeness in the logical and operator. - -2013-02-27 Jakub Jelinek - - * incpath.c (add_standard_paths): Use reconcat instead of concat - where appropriate and avoid leaking memory. - - * opts.h: Include obstack.h. - (opts_concat): New prototype. - (opts_obstack): New declaration. - * opts.c (opts_concat): New function. - (opts_obstack): New variable. - (init_options_struct): Call gcc_init_obstack on opts_obstack. - (finish_options): Use opts_concat instead of concat - and XOBNEWVEC instead of XNEWVEC. - * opts-common.c (generate_canonical_option, decode_cmdline_option, - generate_option): Likewise. - * Makefile.in (OPTS_H): Depend on $(OBSTACK_H). - * lto-wrapper.c (main): Call gcc_init_obstack on opts_obstack. - - PR target/56455 - * stmt.c (expand_switch_as_decision_tree_p): If flag_pic - and ASM_OUTPUT_ADDR_DIFF_ELT isn't defined, return true. - -2013-02-26 Jakub Jelinek - - PR middle-end/56461 - * lra-spills.c (lra_spill): Free spill_hard_reg at the end. - -2013-02-26 Joern Rennecke - - * config/arm/arm.c (const_ok_for_dimode_op): Back out last change. - (arm_block_move_unaligned_straight): Likewise. - (arm_adjust_block_mem): Likewise. - -2013-02-26 Joern Rennecke - - PR target/48901 - * config/lm32/lm32.c (gen_int_relational): Remove unused variables - temp, cond and label. - * config/lm32/lm32.md (ashlsi3): Remove unused variable one. - - PR target/52500 - * config/c6x/c6x.c (dbx_register_map): Change to unsigned. - * config/c6x/c6x.h (dbx_register_map): Update declaration. - - PR target/52501 - * config/cr16/cr16-protos.h: Move end of RTX_CODE guard below end - of prologue/epilogue functions. - - PR target/52550 - * config/tilegx/tilegx.c (tilegx_expand_prologue): - Remove unused variable cfa_offset. - * config/tilepro/tilepro.c (tilepro_expand_prologue): Likewise. - - PR target/54639 - * config/mn10300/mn10300.c (mn10300_expand_epilogue): Avoid offset - type promotion to unsigned. - - PR target/54640 - * config/arm/arm.c (const_ok_for_dimode_op): Make code consistent - for HOST_WIDE_INT of 32 bit / same size as int. - (arm_block_move_unaligned_straight): Likewise. - (arm_adjust_block_mem): Likewise. - - PR target/54662 - * config/mep/t-mep (mep-pragma.o): Use ALL_COMPILERFLAGS instead of - ALL_CFLAGS. - -2013-02-26 Marek Polacek - - PR tree-optimization/56426 - * tree-ssa-loop.c (tree_ssa_loop_init): Always call scev_initialize. - -2013-02-26 Richard Biener - - PR target/56444 - * config/mn10300/mn10300.c (mn10300_scan_for_setlb_lcc): Remove - unused variable loops. - -2013-02-26 Jakub Jelinek - - PR tree-optimization/56448 - * fold-const.c (operand_equal_p) : Don't look at - TREE_SIDE_EFFECTS if flags contain OEP_CONSTANT_ADDRESS_OF. - Clear OEP_CONSTANT_ADDRESS_OF from flags before recursing on second or - later operands of the references, or even first operand for - INDIRECT_REF, TARGET_MEM_REF or MEM_REF. - - PR tree-optimization/56443 - * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): For - overaligned types, pass TYPE_UNSIGNED (scalar_type) as second argument - to type_for_mode langhook. - -2013-02-25 Matt Turner - - * doc/invoke.texi: Document r4700. - -2013-02-25 Richard Biener - - PR tree-optimization/56175 - * tree-ssa-forwprop.c (hoist_conversion_for_bitop_p): New predicate, - split out from ... - (simplify_bitwise_binary): ... here. Also guard the conversion - of (type) X op CST to (type) (X op ((type-x) CST)) with it. - -2013-02-25 Catherine Moore - - Revert: - 2013-02-24 Catherine Moore - Maciej W. Rozycki - Tom de Vries - Nathan Sidwell - Iain Sandoe - Nathan Froyd - Chao-ying Fu - - * doc/extend.texi: (micromips, nomicromips, nocompression): - Document new function attributes. - * doc/invoke.texi (minterlink-compressed, mmicromips, - m14k, m14ke, m14kec): Document new options. - (minterlink-mips16): Update documentation. - * doc/md.texi (ZC, ZD): Document new constraints. - * configure.ac (gcc_cv_as_micromips): Check if linker - supports the .set micromips directive. - * configure: Regenerate. - * config.in: Regenerate. - * config/mips/mips-tables.opt: Regenerate. - * config/mips/micromips.md: New file. - * constraints.md (ZC, AD): New constraints. - * config/mips/predicates.md (movep_src_register): New predicate. - (movep_src_operand): New predicate. - (non_volatile_mem_operand): New predicate. - * config/mips/mips.md (multimem): New type. - (length): Differentiate between 17-bit and 18-bit branch offsets. - (MOVEP1, MOVEP2): New mode iterator. - (mov_l): Use ZC constraint. - (mov_r): Likewise. - (mov_l): Likewise. - (mov_r): Likewise. - (*branch_equality_inverted): Add microMIPS support. - (*branch_equality): Likewise. - (*jump_absolute): Likewise. - (indirect_jump_): Likewise. - (tablejump_): Likewise. - (_internal): Likewise. - (sibcall_internal): Likewise. - (sibcall_value_internal): Likewise. - (prefetch): Use constraint ZD. - * config/mips/mips.opt (minterlink-compressed): New option. - (minterlink-mips16): Now an alias for minterlink-compressed. - (mmicromips): New option. - * config/mips/sync.md (sync_compare_and_swap): Use ZR constraint. - (compare_and_swap_12): Likewise. - (sync_add): Likewise. - (sync__12): Likewise. - (sync_old__12): Likewise. - (sync_new__12): Likewise. - (sync_nand_12): Likewise. - (sync_old_nand_12): Likewise. - (sync_new_nand_12): Likewise. - (sync_sub): Likewise. - (sync_old_add): Likewise. - (sync_old_sub): Likewise. - (sync_new_add): Likewise. - (sync_new_sub): Likewise. - (sync_): Likewise. - (sync_old_): Likewise. - (sync_new_): Likewise. - (sync_nand): Likewise. - (sync_old_nand): Likewise. - (sync_new_nand): Likewise. - (sync_lock_test_and_set): Likewise. - (test_and_set_12): Likewise. - (atomic_compare_and_swap): Likewise. - (atomic_exchange_llsc): Likewise. - (atomic_fetch_add_llsc): Likewise. - * config/mips/mips-cpus.def (m14kc, m14k): New processors. - * config/mips/mips-protos.h (umips_output_save_restore): New prototype. - (umips_save_restore_pattern_p): Likewise. - (umips_load_store_pair_p): Likewise. - (umips_output_load_store_pair): Likewise. - (umips_movep_target_p): Likewise. - (umips_12bit_offset_address_p): Likewise. - * config/mips/mips.c (MIPS_MAX_FIRST_STEP): Update for microMIPS. - (mips_base_mips16): Rename this... - (mips_base_compression_flags): ...to this. Update all uses. - (mips_attribute_table): Add micromips, nomicromips and nocompression. - (mips_mips16_decl_p): Delete. - (mips_nomips16_decl_p): Delete. - (mips_get_compress_on_flags): New function. - (mips_get_compress_off_flags): New function. - (mips_get_compress_mode): New function. - (mips_get_compress_on_name): New function. - (mips_get_compress_off_name): New function. - (mips_insert_attributes): Support multiple compression types. - (mips_merge_decl_attributes): Likewise. - (umips_12bit_offset_address_p): New function. - (mips_start_function_definition): Emit .set micromips directive. - (mips_call_may_need_jalx_p): New function. - (mips_function_ok_for_sibcall): Add microMIPS support. - (mips_print_operand_punctuation): Support short delay slots and - compact jumps. - (umips_swm_mask, umips_swm_encoding): New. - (umips_build_save_restore): New function. - (mips_for_each_saved_gpr_and_fpr): Add microMIPS support. - (was_mips16_p): Remove. - (old_compression_mode): New. - (mips_set_compression_mode): New function. - (mips_set_current_function): Add microMIPS support. - (mips_option_override): Likewise. - (umips_save_restore_pattern_p): New function. - (umips_output_save_restore): New function. - (umips_load_store_pair_p_1): New function. - (umips_load_store_pair_p): New function. - (umips_output_load_store_pair_1): New function. - (umips_output_load_store_pair): New function. - (umips_movep_target_p) New function. - (mips_prepare_pch_save): Add microMIPS support. - * config/mips/mips.h (TARGET_COMPRESSION): New. - (TARGET_CPU_CPP_BUILTINS): Update macro - to use new compression flags and to support microMIPS. - (MIPS_ISA_LEVEL_SPEC): Add m14k processors. - (MIPS_ARCH_FLOAT_SPEC): Likewise. - (ISA_HAS_LWXS): Include TARGET_MICROMIPS. - (ISA_HAS_LOAD_DELAY): Exclude TARGET_MICROMIPS. - (ASM_SPEC): Support mmicromips and mno-micromips. - (M16STORE_REG_P): New macro. - (MIPS_CALL): Support TARGET_MICROMIPS. - (MICROMIPS_J): New macro. - (mips_base_mips16): Rename this... - (mips_base_compression_flags): ...to this. - (UMIPS_12BIT_OFFSET_P): New macro. - * config/mips/t-sde: (MULTILIB_OPTIONS): Add microMIPS. - (MULTILIB_DIRNAMES): Likewise. - -2013-02-25 Tom de Vries - - PR rtl-optimization/56131 - * insn-notes.def (INSN_NOTE_BASIC_BLOCK): Update comment. - * cfgrtl.c (delete_insn): Don't reorder NOTE_INSN_DELETED_LABEL and - NOTE_INSN_BASIC_BLOCK if BLOCK_FOR_INSN == NULL. - -2013-02-25 Tobias Burnus - - * doc/invoke.texi (-fsanitize=): Move from optimization - to debugging options. - -2013-02-25 Andrey Belevantsev - - * sched-deps.c (sched_analyze_insn): Fix typo in comment. - -2013-02-25 Andrey Belevantsev - Alexander Monakov - - PR middle-end/56077 - * sched-deps.c (sched_analyze_insn): When reg_pending_barrier, - flush pending lists also on non-jumps. Adjust comment. - -2013-02-24 Catherine Moore - Maciej W. Rozycki - Tom de Vries - Nathan Sidwell - Iain Sandoe - Nathan Froyd - Chao-ying Fu - - * doc/extend.texi: (micromips, nomicromips, nocompression): - Document new function attributes. - * doc/invoke.texi (minterlink-compressed, mmicromips, - m14k, m14ke, m14kec): Document new options. - (minterlink-mips16): Update documentation. - * doc/md.texi (ZC, ZD): Document new constraints. - * configure.ac (gcc_cv_as_micromips): Check if linker - supports the .set micromips directive. - * configure: Regenerate. - * config.in: Regenerate. - * config/mips/mips-tables.opt: Regenerate. - * config/mips/micromips.md: New file. - * constraints.md (ZC, AD): New constraints. - * config/mips/predicates.md (movep_src_register): New predicate. - (movep_src_operand): New predicate. - (non_volatile_mem_operand): New predicate. - * config/mips/mips.md (multimem): New type. - (length): Differentiate between 17-bit and 18-bit branch offsets. - (MOVEP1, MOVEP2): New mode iterator. - (mov_l): Use ZC constraint. - (mov_r): Likewise. - (mov_l): Likewise. - (mov_r): Likewise. - (*branch_equality_inverted): Add microMIPS support. - (*branch_equality): Likewise. - (*jump_absolute): Likewise. - (indirect_jump_): Likewise. - (tablejump_): Likewise. - (_internal): Likewise. - (sibcall_internal): Likewise. - (sibcall_value_internal): Likewise. - (prefetch): Use constraint ZD. - * config/mips/mips.opt (minterlink-compressed): New option. - (minterlink-mips16): Now an alias for minterlink-compressed. - (mmicromips): New option. - * config/mips/sync.md (sync_compare_and_swap): Use ZR constraint. - (compare_and_swap_12): Likewise. - (sync_add): Likewise. - (sync__12): Likewise. - (sync_old__12): Likewise. - (sync_new__12): Likewise. - (sync_nand_12): Likewise. - (sync_old_nand_12): Likewise. - (sync_new_nand_12): Likewise. - (sync_sub): Likewise. - (sync_old_add): Likewise. - (sync_old_sub): Likewise. - (sync_new_add): Likewise. - (sync_new_sub): Likewise. - (sync_): Likewise. - (sync_old_): Likewise. - (sync_new_): Likewise. - (sync_nand): Likewise. - (sync_old_nand): Likewise. - (sync_new_nand): Likewise. - (sync_lock_test_and_set): Likewise. - (test_and_set_12): Likewise. - (atomic_compare_and_swap): Likewise. - (atomic_exchange_llsc): Likewise. - (atomic_fetch_add_llsc): Likewise. - * config/mips/mips-cpus.def (m14kc, m14k): New processors. - * config/mips/mips-protos.h (umips_output_save_restore): New prototype. - (umips_save_restore_pattern_p): Likewise. - (umips_load_store_pair_p): Likewise. - (umips_output_load_store_pair): Likewise. - (umips_movep_target_p): Likewise. - (umips_12bit_offset_address_p): Likewise. - * config/mips/mips.c (MIPS_MAX_FIRST_STEP): Update for microMIPS. - (mips_base_mips16): Rename this... - (mips_base_compression_flags): ...to this. Update all uses. - (mips_attribute_table): Add micromips, nomicromips and nocompression. - (mips_mips16_decl_p): Delete. - (mips_nomips16_decl_p): Delete. - (mips_get_compress_on_flags): New function. - (mips_get_compress_off_flags): New function. - (mips_get_compress_mode): New function. - (mips_get_compress_on_name): New function. - (mips_get_compress_off_name): New function. - (mips_insert_attributes): Support multiple compression types. - (mips_merge_decl_attributes): Likewise. - (umips_12bit_offset_address_p): New function. - (mips_start_function_definition): Emit .set micromips directive. - (mips_call_may_need_jalx_p): New function. - (mips_function_ok_for_sibcall): Add microMIPS support. - (mips_print_operand_punctuation): Support short delay slots and - compact jumps. - (umips_swm_mask, umips_swm_encoding): New. - (umips_build_save_restore): New function. - (mips_for_each_saved_gpr_and_fpr): Add microMIPS support. - (was_mips16_p): Remove. - (old_compression_mode): New. - (mips_set_compression_mode): New function. - (mips_set_current_function): Add microMIPS support. - (mips_option_override): Likewise. - (umips_save_restore_pattern_p): New function. - (umips_output_save_restore): New function. - (umips_load_store_pair_p_1): New function. - (umips_load_store_pair_p): New function. - (umips_output_load_store_pair_1): New function. - (umips_output_load_store_pair): New function. - (umips_movep_target_p) New function. - (mips_prepare_pch_save): Add microMIPS support. - * config/mips/mips.h (TARGET_COMPRESSION): New. - (TARGET_CPU_CPP_BUILTINS): Update macro - to use new compression flags and to support microMIPS. - (MIPS_ISA_LEVEL_SPEC): Add m14k processors. - (MIPS_ARCH_FLOAT_SPEC): Likewise. - (ISA_HAS_LWXS): Include TARGET_MICROMIPS. - (ISA_HAS_LOAD_DELAY): Exclude TARGET_MICROMIPS. - (ASM_SPEC): Support mmicromips and mno-micromips. - (M16STORE_REG_P): New macro. - (MIPS_CALL): Support TARGET_MICROMIPS. - (MICROMIPS_J): New macro. - (mips_base_mips16): Rename this... - (mips_base_compression_flags): ...to this. - (UMIPS_12BIT_OFFSET_P): New macro. - * config/mips/t-sde: (MULTILIB_OPTIONS): Add microMIPS. - (MULTILIB_DIRNAMES): Likewise. - -2013-02-24 Jakub Jelinek - - PR target/52555 - * target-globals.c (save_target_globals): For init_reg_sets and - target_reinit remporarily set this_fn_optabs to this_target_optabs. - -2013-02-22 James Greenhalgh - - * config/aarch64/aarch64-simd-builtins.def: Add copyright header. - * config/aarch64/t-aarch64 - (aarch64-builtins.o): Depend on aarch64-simd-builtins.def. - -2013-02-22 Vladimir Makarov - - PR inline-asm/56148 - * lra-constraints.c (process_alt_operands): Reload operand - conflicting with earlier clobber only if no more other conflicting - operands. - -2013-02-22 Jakub Jelinek - - PR sanitizer/56393 - * config/gnu-user.h (LIBASAN_EARLY_SPEC): Link in libasan_preinit.o - if not linking a shared library. - -2013-02-22 Seth LaForge - - * config.gcc (arm*-*-eabi*): Treat arm*eb as big-endian. - -2013-02-22 Greta Yorsh - - * config/arm/arm.md (split for extendsidi): Update condition. - (zero_extenddi2,extenddi2): Add an alternative. - * config/arm/iterators.md (qhs_extenddi_cstr): Likewise. - (qhs_zextenddi_cstr): Likewise. - -2013-02-21 Jakub Jelinek - - PR middle-end/56420 - * expmed.c (EXACT_POWER_OF_2_OR_ZERO_P): Do subtraction in uhwi, to - avoid signed wrapping. - (expand_mult): Handle properly multiplication by - ((dword_type) -1) << (BITS_PER_WORD - 1). Improve multiplication by - ((dword_type) 1) << (BITS_PER_WORD - 1). Avoid undefined behavior - in the compiler if coeff is HOST_WIDE_INT_MIN. - (expand_divmod): Don't make ext_op1 static, change it's type to - uhwi. Avoid undefined behavior in -INTVAL (op1). - - PR rtl-optimization/50339 - * lower-subreg.h (struct lower_subreg_choices): Add splitting_ashiftrt - field. - * lower-subreg.c (compute_splitting_shift): Handle ASHIFTRT. - (compute_costs): Call compute_splitting_shift also for ASHIFTRT - into splitting_ashiftrt field. - (find_decomposable_shift_zext, resolve_shift_zext): Handle also - ASHIFTRT. - (dump_choices): Fix up printing LSHIFTRT choices, print ASHIFTRT - choices. - -2013-02-20 Aldy Hernandez - - PR middle-end/56108 - * trans-mem.c (execute_tm_mark): Do not expand transactions that - are sure to go irrevocable. - -2013-02-21 Hans-Peter Nilsson - - * doc/rtl.texi (vec_concat, vec_duplicate): Mention that - scalars are valid operands. - -2013-02-21 Martin Jambor - - PR tree-optimization/56310 - * ipa-cp.c (agg_replacements_to_vector): New parameter index, copy - only matching indices and non-negative final offsets. - (intersect_aggregates_with_edge): Pass src_idx to - agg_replacements_to_vector. Pass src_idx insstead of index to - intersect_with_agg_replacements. - -2013-02-21 Martin Jambor - - * ipa-cp.c (good_cloning_opportunity_p): Dump the real threshold - instead of hard-wired defaults. - -2013-02-21 Maciej W. Rozycki - - * doc/invoke.texi (MIPS Options): Update documentation of the - floating-point multiply-accumulate instruction restrictions. - -2013-02-21 Kostya Serebryany - - * config/i386/i386.c (ix86_asan_shadow_offset): Use 0x7fff8000 as - asan_shadow_offset on x86_64 linux. - -2013-02-21 Richard Biener - - PR tree-optimization/56415 - Revert - 2013-02-11 Richard Biener - - PR tree-optimization/56273 - * tree-vrp.c (simplify_cond_using_ranges): Disable for the - first VRP run. - -2013-02-21 Jakub Jelinek - - PR bootstrap/56258 - * doc/invoke.texi (-fdump-rtl-pro_and_epilogue): Use @item - instead of @itemx. - - PR inline-asm/56405 - * expr.c (expand_expr_real_1) : Don't - use movmisalign or extract_bit_field for EXPAND_MEMORY modifier. - -2013-02-20 Jan Hubicka - - PR tree-optimization/56265 - * ipa-prop.c (ipa_make_edge_direct_to_target): Fixup callgraph - when target is referenced for first time. - -2013-02-20 Richard Biener - - * tree-call-cdce.c (tree_call_cdce): Do not remove unused locals. - * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Likewise. - * tree-ssa-dce.c (perform_tree_ssa_dce): Likewise. - * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Do - not return anything. - (rename_ssa_copies): Do not remove unused locals. - * tree-ssa-ccp.c (do_ssa_ccp): Likewise. - * tree-ssanames.c (pass_release_ssa_names): Remove unused locals first. - * passes.c (execute_function_todo): Do not schedule unused locals - removal if cleanup_tree_cfg did something. - * tree-ssa-live.c (remove_unused_locals): Dump statistics - about the number of removed locals. - -2013-02-20 Richard Biener - - PR tree-optimization/56398 - * tree-vect-loop-manip.c (adjust_debug_stmts): Skip SSA default defs. - -2013-02-20 Martin Jambor - - PR tree-optimization/55334 - * ipa-cp.c (initialize_node_lattices): Disable IPA-CP through and to - restricted pointers to arrays. - -2013-02-20 Richard Biener - Jakub Jelinek - - PR tree-optimization/56396 - * tree-ssa-ccp.c (n_const_val): New static variable. - (get_value): Return NULL for SSA names we don't have a lattice - entry for. - (ccp_initialize): Initialize n_const_val. - * tree-ssa-copy.c (n_copy_of): New static variable. - (init_copy_prop): Initialize n_copy_of. - (get_value): Return NULL_TREE for SSA names we don't have a - lattice entry for. - -2013-02-20 Martin Jambor - - * ipa-cp.c (initialize_node_lattices): Fix dumping condition. - -2013-02-20 Richard Biener - - * genpreds.c (write_lookup_constraint): Do not compare first - letter of the constraint again. - -2013-02-20 Richard Biener - - * tree-ssa-loop-ivopts.c (alloc_use_cost_map): Use bitmap_count_bits - and ceil_log2. - (get_use_iv_cost): Terminate hashtable walk when coming across - an empty entry. - -2013-02-20 Igor Zamyatin - - * config/i386/i386.c (initial_ix86_tune_features): Turn on fp - reassociation for avx2 targets. - -2012-02-19 Edgar E. Iglesias - - * config/microblaze/microblaze.c: microblaze_has_clz = 0 - Add version check for v8.10.a to enable microblaze_has_clz - * config/microblaze/microblaze.h: Add TARGET_HAS_CLZ as combined - version and TARGET_PATTERN_COMPARE check - * config/microblaze/microblaze.md: New clzsi2 instruction - -2012-02-19 Edgar E. Iglesias - - * config/microblaze/microblaze.md (call_value_intern): Check symbol is - function before branching. - -2012-02-19 Andrey Belevantsev - - * sel-sched-dump.c (dump_insn_rtx_flags): Explicitly set - DUMP_INSN_RTX_UID. - (dump_insn_rtx_1): Pass PATTERN (insn) to str_pattern_slim. - -2012-02-19 Andrey Belevantsev - - PR middle-end/55889 - * sel-sched.c: Include ira.h. - (implicit_clobber_conflict_p): New function. - (moveup_expr): Use it. - * Makefile.in (sel-sched.o): Depend on ira.h. - -2013-02-19 Richard Biener - - PR tree-optimization/56384 - * tree-ssa-sccvn.h (struct vn_phi_s): Add type member. - (vn_hash_type): Split out from ... - (vn_hash_constant_with_type): ... here. - * tree-ssa-sccvn.c (vn_phi_compute_hash): Use vn_hash_type. - (vn_phi_eq): Compare types from vn_phi_s structure. - (vn_phi_lookup): Populate vn_phi_s type. - (vn_phi_insert): Likewise. - -2013-02-19 Jakub Jelinek - - PR tree-optimization/56350 - * tree-vect-loop.c (vectorizable_reduction): If orig_stmt, return false - if haven't found reduction or nested cycle operand, rather than - asserting we must find it. - - PR tree-optimization/56381 - * tree-ssa-pre.c (create_expression_by_pieces): Fix up last argument - to fold_build3. - -2013-02-18 Aldy Hernandez - Jakub Jelinek - - PR target/52555 - * genopinit.c (raw_optab_handler): Use this_fn_optabs. - (swap_optab_enable): Same. - (init_all_optabs): Use argument instead of global. - * tree.h (struct tree_optimization_option): New field target_optabs. - * expr.h (init_all_optabs): Add argument to prototype. - (TREE_OPTIMIZATION_OPTABS): New. - (save_optabs_if_changed): Protoize. - * optabs.h: Declare this_fn_optabs. - * optabs.c (save_optabs_if_changed): New. - Declare this_fn_optabs. - (init_optabs): Add argument to init_all_optabs() call. - * function.c (invoke_set_current_function_hook): Handle per - function optabs. - * function.h (struct function): New field optabs. - * config/mips/mips.c (mips_set_mips16_mode): Handle when - optimization_current_node has changed. - * target-globals.h (save_target_globals_default_opts): Protoize. - * target-globals.c (save_target_globals_default_opts): New. - -2013-02-18 John David Anglin - - PR target/56347 - * config/pa/pa.c (pa_conditional_register_usage): On HP-UX, mark - registers %fr12 and %fr12R as call used. - - PR target/56214 - * config/pa/predicates.md (base14_operand): Except for BLKmode, QImode - and HImode, require all displacements to be an integer multiple of - their mode size. - * config/pa/pa.c (pa_legitimate_address_p): For REG+BASE addresses, - only allow QImode and HImode when reload is in progress and strict is - true. Likewise for symbolic addresses. Use base14_operand to check - displacements in REG+BASE addresses. - -2013-02-18 Richard Biener - - PR tree-optimization/56366 - * tree-vect-loop.c (get_initial_def_for_induction): Properly - handle sign-conversion of outer-loop initial induction value. - -2013-02-18 Richard Biener - - PR middle-end/56349 - * cfghooks.c (merge_blocks): If we merge a latch into another - block adjust references to it. - * cfgloop.c (flow_loops_find): Reset latch before recomputing it. - (verify_loop_structure): Verify that a recorded latch is in fact - a latch. - -2013-02-18 Richard Biener - - PR tree-optimization/56321 - * tree-ssa-reassoc.c (propagate_op_to_single_use): Properly - order SSA name release and virtual operand unlinking. - -2013-02-17 Edgar E. Iglesias - - * config/microblaze/microblaze.md (save_stack_block): Define. - (restore_stack_block): Likewise. - -2013-02-16 Edgar E. Iglesias - - * config/microblaze/linux.h (TARGET_SUPPORTS_PIC): Define as 1. - * config/microblaze/microblaze.h (TARGET_SUPPORTS_PIC): Define as 1. - * config/microblaze/microblaze.c (microblaze_option_override): - Bail out early for PIC modes when target does not support PIC. - -2013-02-16 Edgar E. Iglesias - - * config/microblaze/microblaze.c (microblaze_asm_trampoline_template): - Replace with a microblaze version. - (microblaze_trampoline_init): Adapt for microblaze. - * config/microblaze/microblaze.h (TRAMPOLINE_SIZE): Adapt for - microblaze. - -2013-02-16 Jakub Jelinek - Dodji Seketeli - - PR asan/56330 - * asan.c (get_mem_refs_of_builtin_call): White space and style cleanup. - (instrument_mem_region_access): Do not forget to always put - instrumentation of the of 'base' and 'base + len' in a "if (len != - 0) statement, even for cases where either 'base' or 'base + len' - are not instrumented -- because they have been previously - instrumented. Simplify the logic by putting all the statements - instrument 'base + len' inside a sequence, and then insert that - sequence right before the current insertion point. Then, to - instrument 'base + len', just get an iterator on that statement. - And do not forget to update the pointer to iterator the function - received as argument. - -2013-02-15 Vladimir Makarov - - PR rtl-optimization/56348 - * lra-assigns.c (reload_pseudo_compare_func): Prefer bigger pseudos. - -2013-02-15 Steven Bosscher - - * graph.c (start_graph_dump): Print dumpfile base as digraph label. - (clean_graph_dump_file): Pass base to start_graph_dump. - -2013-02-14 Richard Henderson - - PR target/55941 - * lower-subreg.c (simple_move): Check dest mode instead of src mode. - -2013-02-14 Steven Bosscher - - * collect2-aix.h: Define F_LOADONLY. - -2013-02-14 Richard Biener - - PR lto/50494 - * varasm.c (output_constant_def_1): Get the decl representing - the constant as argument. - (output_constant_def): Wrap output_constant_def_1. - (make_decl_rtl): Use output_constant_def_1 with the decl - representing the constant. - (build_constant_desc): Optionally re-use a decl already - representing the constant. - (tree_output_constant_def): Adjust. - -2013-02-14 Dodji Seketeli - - Fix an asan crash - * asan.c (instrument_builtin_call): Really put the length of the - second source argument into src1_len. - -2013-02-13 Jakub Jelinek - - * asan.c (create_cond_insert_point): Add create_then_fallthru_edge - argument. If it is false, don't create edge from then_bb to - fallthru_bb. - (insert_if_then_before_iter): Pass true to it. - (build_check_stmt): Pass false to it. - (transform_statements): Flush hash table only on extended basic - block boundaries, rather than at the beginning of every bb. - Don't flush hash table on nonfreeing_call_p calls. - * tree-flow.h (nonfreeing_call_p): New prototype. - * tree-ssa-phiopt.c (nonfreeing_call_p): No longer static. - -2013-02-13 David S. Miller - - * expmed.c (expand_shift_1): Only strip scalar integer subregs. - -2013-02-13 Vladimir Makarov - - PR target/56184 - * ira.c (max_regno_before_ira): Move from ... - (ira): ... here. - (fix_reg_equiv_init): Use max_regno_before_ira instead of - vec_safe_length. - -2013-02-13 Jakub Jelinek - - * config/i386/i386.c (ix86_asan_shadow_offset): Revert last change. - -2013-02-13 Richard Biener - - PR lto/56295 - * gimple-streamer-out.c (output_gimple_stmt): Undo wrapping - globals in MEM_REFs. - -2013-02-13 Richard Biener - - * loop-init.c (loop_optimizer_init): Clear loop state when - re-initializing preserved loops. - * loop-unswitch.c (unswitch_single_loop): Return whether - we unswitched the loop. Do not verify loop state here. - (unswitch_loops): When we unswitched a loop discover new loops. - -2013-02-13 Kostya Serebryany - - * config/i386/i386.c: Use 0x7fff8000 as asan_shadow_offset - on x86_64 linux. - * sanitizer.def: Rename __asan_init to __asan_init_v1. - -2013-02-12 Dodji Seketeli - - Avoid instrumenting duplicated memory access in the same basic block - * Makefile.in (asan.o): Add new dependency on hash-table.h - * asan.c (struct asan_mem_ref, struct mem_ref_hasher): New types. - (asan_mem_ref_init, asan_mem_ref_get_end, get_mem_ref_hash_table) - (has_stmt_been_instrumented_p, empty_mem_ref_hash_table) - (free_mem_ref_resources, has_mem_ref_been_instrumented) - (has_stmt_been_instrumented_p, update_mem_ref_hash_table) - (get_mem_ref_of_assignment): New functions. - (get_mem_refs_of_builtin_call): Extract from - instrument_builtin_call and tweak a little bit to make it fit with - the new signature. - (instrument_builtin_call): Use the new - get_mem_refs_of_builtin_call. Use gimple_call_builtin_p instead - of is_gimple_builtin_call. - (instrument_derefs, instrument_mem_region_access): Insert the - instrumented memory reference into the hash table. - (maybe_instrument_assignment): Renamed instrument_assignment into - this, and change it to advance the iterator when instrumentation - actually happened and return true in that case. This makes it - homogeneous with maybe_instrument_assignment, and thus give a - chance to callers to be more 'regular'. - (transform_statements): Clear the memory reference hash table - whenever we enter a new BB, when we cross a function call, or when - we are done transforming statements. Use - maybe_instrument_assignment instead of instrumentation. No more - need to special case maybe_instrument_assignment and advance the - iterator after calling it; it's now handled just like - maybe_instrument_call. Update comment. - -2013-02-13 Richard Biener - - * config/mn10300/mn10300.c (mn10300_scan_for_setlb_lcc): - Fix loop discovery code. - -2013-02-12 Vladimir Makarov - - PR inline-asm/56148 - * lra-constraints.c (process_alt_operands): Match early clobber - operand with itself. Check conflicts with earlyclobber only if - the operand is not reloaded. Prefer to reload conflicting operand - if earlyclobber and matching operands are the same. - -2013-02-12 Richard Biener - - PR lto/56297 - * lto-streamer-out.c (write_symbol): Do not output symbols - for hard register variables. - -2013-02-12 Georg-Johann Lay - - PR target/54222 - * config/avr/avr-dimode.md (umulsidi3, mulsidi3): New expanders. - (umulsidi3_insn, mulsidi3_insn): New insns. - -2013-02-12 Christophe Lyon - - * config/arm/arm-protos.h (struct cpu_vec_costs): New struct type. - (struct tune_params): Add vec_costs field. - * config/arm/arm.c (arm_builtin_vectorization_cost) - (arm_add_stmt_cost): New functions. - (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST) - (TARGET_VECTORIZE_ADD_STMT_COST): Define. - (arm_default_vec_cost): New struct of type cpu_vec_costs. - (arm_slowmul_tune, arm_fastmul_tune, arm_strongarm_tune) - (arm_xscale_tune, arm_9e_tune, arm_v6t2_tune, arm_cortex_tune) - (arm_cortex_a15_tune, arm_cortex_a5_tune, arm_cortex_a9_tune) - (arm_v6m_tune, arm_fa726te_tune): Define new vec_costs field. - -2013-02-12 Richard Biener - - PR lto/56295 - * gimple-streamer-in.c (input_gimple_stmt): Strip MEM_REFs off - decls again if possible. - -2013-02-12 Richard Biener - - PR middle-end/56288 - * tree-ssa.c (verify_ssa_name): Fix check, move - SSA_NAME_IN_FREE_LIST check up. - -2013-02-12 Jakub Jelinek - Steven Bosscher - - PR rtl-optimization/56151 - * optabs.c (add_equal_note): Don't return 0 if target is a MEM, - equal to op0 or op1, and last_insn pattern is CODE operation - with MEM dest and one of the operands matches that MEM. - -2013-02-11 Sriraman Tallam - - * doc/extend.texi: Document Function Multiversioning and "default" - parameter string to target attribute. - * config/i386/i386.c (get_builtin_code_for_version): Return 0 if - target attribute parameter is "default". - (ix86_compare_version_priority): Remove checks for target attribute. - (ix86_mangle_function_version_assembler_name): Change error to sorry. - Remove check for target attribute equal to NULL. Add assert. - (ix86_generate_version_dispatcher_body): Change error to sorry. - -2013-02-11 Iain Sandoe - Jack Howarth - Patrick Marlier - - PR libitm/55693 - * config/darwin.h: Replace ENDFILE_SPEC with TM_DESTRUCTOR and - define ENDFILE_SPEC as TM_DESTRUCTOR. - * config/i386/darwin.h (ENDFILE_SPEC): Use TM_DESTRUCTOR. - -2013-02-11 Alexander Potapenko - Jack Howarth - Jakub Jelinek - - PR sanitizer/55617 - * config/darwin.c (cdtor_record): Rename ctor_record. - (sort_cdtor_records): Rename sort_ctor_records. - (finalize_dtors): New routine to sort destructors by - priority before use in assemble_integer. - (machopic_asm_out_destructor): Use finalize_dtors if needed. - -2013-02-11 Uros Bizjak - - PR rtl-optimization/56275 - * simplify-rtx.c (avoid_constant_pool_reference): Check that - offset is non-negative and less than cmode size before - calling simplify_subreg. - -2013-02-11 Richard Biener - - PR tree-optimization/56264 - * cfgloop.h (fix_loop_structure): Adjust prototype. - * loop-init.c (fix_loop_structure): Return the number of - newly discovered loops. - * tree-cfgcleanup.c (repair_loop_structures): When new loops - are discovered, do a full loop-closed SSA rewrite. - -2013-02-11 Richard Biener - - PR tree-optimization/56273 - * tree-vrp.c (simplify_cond_using_ranges): Disable for the - first VRP run. - (check_array_ref): Fix missing newline in dumps. - (search_for_addr_array): Likewise. - -2013-02-09 David Edelsohn - - * config/rs6000/aix61.h (OS_MISSING_ALTIVEC): Undefine. - -2013-02-09 Jakub Jelinek - - PR target/56256 - * config/rs6000/rs6000.h (ASSEMBLER_DIALECT): Define. - -2013-02-08 Vladimir Makarov - - PR rtl-optimization/56246 - * lra-constraints.c (simplify_operand_subreg): Try to reuse - reload pseudo. - * lra.c (lra): Clear lra_optional_reload_pseudos only when all - constraints are satisfied. - -2013-02-08 Jeff Law - - PR debug/53948 - * emit-rtl.c (reg_is_parm_p): New function. - * regs.h (reg_is_parm_p): New prototype. - * ira-conflicts.c (ira_build_conflicts): Allow parameters in - callee-clobbered registers. - -2013-02-08 Michael Meissner - - PR target/56043 - * config/rs6000/rs6000.c (rs6000_builtin_vectorized_libmass): - If there is no implicit builtin declaration, just return NULL. - -2013-02-08 Uros Bizjak - - * config/i386/sse.md (FMAMODEM): New mode iterator. - (fma4, fms4, fnma4, fnms4): Use FMAMODEM - mode iterator. Do not use TARGET_SSE_MATH in insn constraint. - -2013-02-08 Uros Bizjak - - * config/i386/gnu-user.h (TARGET_CAN_SPLIT_STACK): Define only - when HAVE_GAS_CFI_PERSONALITY_DIRECTIVE is set. - * config/i386/gnu-user64.h (TARGET_CAN_SPLIT_STACK): Ditto. - -2013-02-08 Edgar E. Iglesias - - * config.gcc (microblaze*-linux*): Add TARGET_BIG_ENDIAN_DEFAULT. - (microblaze*-*-elf): Likewise. - * config/microblaze/linux.h: Add -mbig-endian / -mlittle-endian to - LINK_SPEC. - * config/microblaze/microblaze-c.c: Add builtin defines for - _LITTLE_ENDIAN and _BIG_ENDIAN. - * config/microblaze/microblaze.h: Add TARGET_ENDIAN_DEFAULT and - add to TARGET_DEFAULT flags. - Expand ASM_SPEC and LINK_SPEC. - Update BYTES_BIG_ENDIAN and WORDS_BIG_ENDIAN. - * config/microblaze/microblaze.md: Update extendsidi2 and - movdi_internal instructions to use low-order / high-order reg - print_operands. - * config/microblaze/microblaze.opt: Add mbig-endian and mlittle-endian - options and inversemask / mask of LITTLE_ENDIAN. - * config/microblaze/t-microblaze: Expand multilib options to - include mlittle-endian (le) and update exceptions patterns. - -2013-02-08 Jakub Jelinek - - PR rtl-optimization/56195 - * lra-constraints.c (get_reload_reg): Don't reuse regs - if they have smaller mode than requested, if they have - wider mode than requested, try to return a SUBREG. - - PR tree-optimization/56250 - * fold-const.c (extract_muldiv_1) : Don't optimize - if type is unsigned and code isn't MULT_EXPR. - -2013-02-08 Georg-Johann Lay - - PR tree-optimization/56064 - * fixed-value.c (fixed_from_double_int): Sign/zero extend payload - bits according to mode. - * fixed-value.h (fixed_from_double_int) - (const_fixed_from_double_int): Adjust comments. - -2013-02-08 Richard Biener - - PR lto/56231 - * lto-streamer.h (struct data_in): Remove current_file, current_line - and current_col members. - * lto-streamer-out.c (lto_output_location): Stream changed bits - en-block for efficiency. - * lto-streamer-in.c (clear_line_info): Remove. - (lto_input_location): Cache current file, line and column - globally via local statics. Read changed bits en-block. - (input_function): Do not call clear_line_info. - (lto_read_body): Likewise. - (lto_input_toplevel_asms): Likewise. - -2013-02-08 Michael Matz - - PR tree-optimization/52448 - * tree-ssa-phiopt.c (struct name_to_bb): Add phase member. - (nt_call_phase): New static. - (add_or_mark_expr): Only mark accesses with newer phase than any - call seen. - (nonfreeing_call_p): New. - (nt_init_block): Update nt_call_phase, mark blocks as visited. - (nt_fini_block): Keep blocks marked as visited. - (get_non_trapping): Initialize nt_call_phase, and reset aux pointer. - -2013-02-08 Richard Biener - - * ira.c (ira): Free broken dominator information. - -2013-02-08 Uros Bizjak - - * config/i386/i386.c (ix86_spill_class): Use INTEGER_CLASS_P macro. - -2013-02-08 Marek Polacek - - * cfgloop.c (verify_loop_structure): Add more checking of headers. - -2013-02-08 Richard Biener - - PR middle-end/56181 - * cfgloop.h (flow_loops_find): Adjust. - (bb_loop_header_p): Declare. - * cfgloop.c (bb_loop_header_p): New function split out from ... - (flow_loops_find): ... here. Adjust function signature, - support incremental loop structure update. - (verify_loop_structure): Cleanup. Verify a loop is a loop. - * cfgloopmanip.c (fix_loop_structure): Move ... - * loop-init.c (fix_loop_structure): ... here. - (apply_loop_flags): Split out from ... - (loop_optimizer_init): ... here. - (fix_loop_structure): Use apply_loop_flags. Use flow_loops_find - in incremental mode, only remove dead loops here. - -2013-02-08 Georg-Johann Lay - - PR target/54222 - * config/avr/avr.md (unspec) : Add. - * config/avr/avr-fixed.md (ALL4QA, ALL124QA): New mode iterators. - (round3, round3_const): New expanders for fixed-mode. - (*round3.libgcc): New insns for fixed-modes. - * config/avr/builtins.def (ABSxx): Use a non-NULL LIBNAME. - (ROUNDxx, COUNTLSxx, BITSxx, xxBITS): New DEF_BUILTINs. - (ROUNDFX, COUNTLSFX, ABSFX): New DEF_BUILTINs. - * config/avr/stdfix.h (absFX, bitsFX, FXbits): Remove inline - implementations. Define to __builtin_avr_absFX, - __builtin_avr_bitsFX, __builtin_avr_FXbits, respectively. - (roundFX, countlsFX): Define to __builtin_avr_roundFX, - __builtin_avr_countlsFX, respectively. - * config/avr/avr-c.c (target.h): Include it. - (enum avr_builtin_id): New enum. - (avr_resolve_overloaded_builtin): New static function. - (avr_register_target_pragmas): Use it to set - targetm.resolve_overloaded_builtin. - * config/avr/avr.c (avr_init_builtins): Supply myriads of local - tree nodes used by DEF_BUILTIN. - (avr_expand_builtin) : Sanity-check them. - (avr_fold_builtin) : Fold to VIEW_COVERT_EXPR. - : Same. - -2013-02-08 Richard Biener - - * cfgloop.c (verify_loop_structure): Properly handle - a loop exiting to another loop header. - * ira-int.h (ira_loops): Remove. - * ira.c (ira_loops): Remove. - (ira): Use loop_optimizer_init and loop_optimizer_finalize. - (do_reload): Use loop_optimizer_finalize. - * ira-build.c (create_loop_tree_nodes): Use get_loops and - number_of_loops to access the loop tree. - (more_one_region_p): Likewise. - (finish_loop_tree_nodes): Likewise. - (rebuild_regno_allocno_maps): Likewise. - (mark_loops_for_removal): Likewise. - (mark_all_loops_for_removal): Likewise. - (remove_unnecessary_regions): Likewise. - (ira_build): Likewise. - * ira-emit.c (setup_entered_from_non_parent_p): Likewise. - -2013-02-08 Richard Biener - - * Makefile.in (tree-tailcall.o): Add $(CFGLOOP_H) dependency. - * ipa-pure-const.c (analyze_function): Avoid calling - mark_irreducible_loops twice. - * tree-tailcall.c (tree_optimize_tail_calls_1): Mark loops for fixup. - -2013-02-07 David S. Miller - - * dwarf2out.c (based_loc_descr): Perform leaf register remapping - on 'reg'. - * var-tracking.c (vt_add_function_parameter): Test the presence of - HAVE_window_save properly and do not remap argument registers when - we have a leaf function. - -2013-02-07 Uros Bizjak - - PR bootstrap/56227 - * ggc-page.c (ggc_print_statistics): Use HOST_LONG_LONG_FORMAT - instead of "ll". - * config/i386/i386.c (ix86_print_operand): Ditto. - -2013-02-07 Vladimir Makarov - - * lra-constraints.c (process_alt_operands): Fix recently added comment. - -2013-02-07 Vladimir Makarov - - PR rtl-optimization/56225 - * lra-constraints.c (process_alt_operands): Check that reload hard - reg can hold value for strict_low_part. - -2013-02-07 Jakub Jelinek - - PR debug/56154 - * dwarf2out.c (dwarf2_debug_hooks): Set end_function hook to - dwarf2out_end_function. - (in_first_function_p, maybe_at_text_label_p, - first_loclabel_num_not_at_text_label): New variables. - (dwarf2out_var_location): In the first function find out - lowest loclabel_num N where .LVLN is known not to be equal to .Ltext0. - (find_empty_loc_ranges_at_text_label, dwarf2out_end_function): New - functions. - -2013-02-07 Eric Botcazou - - PR rtl-optimization/56178 - * cse.c (cse_insn): Do not create a REG_EQUAL note if the source is a - SUBREG of a register. Tidy up related block of code. - * fwprop.c (forward_propagate_and_simplify): Do not create a REG_EQUAL - note if the source is a register or a SUBREG of a register. - -2013-02-07 Jakub Jelinek - - PR target/56228 - * config/rs6000/rs6000.md (ptrm): New mode attr. - (call_indirect_aix, call_indirect_aix_nor11, - call_value_indirect_aix, - call_value_indirect_aix_nor11): Use instead of - m in constraints. - -2013-02-07 Michael Haubenwallner - - * collect2.c (main): Set aix64_flag for -G and -bsvr4 too, disable - if -bnortl. Convert to strcmp and strncmp. - -2013-02-07 Alan Modra - - PR target/54009 - * config/rs6000/rs6000.c (mem_operand_gpr): Check that LO_SUM - addresses won't wrap when offsetting. - (rs6000_secondary_reload): Provide secondary reloads needed for - wrapping LO_SUM addresses. - -2013-02-06 Thomas Schwinge - - * config/gnu.h (GNU_USER_TARGET_OS_CPP_BUILTINS): Never define - MACH, just __MACH__. - -2013-02-06 Richard Biener - - * tracer.c (tracer): Mark loops with LOOPS_NEED_FIXUP - instead of calling fix_loop_structure. - -2013-02-06 Jakub Jelinek - - PR middle-end/56217 - * omp-low.c (use_pointer_for_field): Return false if - lower_send_shared_vars doesn't generate any copy-out code. - -2013-02-06 Tom de Vries - - PR rtl-optimization/56131 - * cfgrtl.c (delete_insn): Use NOTE_BASIC_BLOCK instead of BLOCK_FOR_INSN - to get the bb of a NOTE_INSN_BASIC_BLOCK. Handle the case that the bb - of the label is NULL. Add comment. - -2013-02-05 Jakub Jelinek - - * tree.h (struct tree_decl_with_vis): Remove thread_local field. - - PR sanitizer/55374 - * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Define. - (STATIC_LIBTSAN_LIBS): Likewise. - * gcc.c (ADD_STATIC_LIBTSAN_LIBS, LIBTSAN_EARLY_SPEC): Define. - (LIBTSAN_SPEC): Add ADD_STATIC_LIBTSAN_LIBS, if LIBTSAN_EARLY_SPEC - is defined, don't add anything else beyond that. - (SANITIZER_EARLY_SPEC, SANITIZER_SPEC): Define. - (LINK_COMMAND_SPEC): Use them. - - PR tree-optimization/56205 - * tree-stdarg.c (check_all_va_list_escapes): Return true if - there are any PHI nodes that set non-va_list_escape_vars SSA_NAME - and some va_list_escape_vars SSA_NAME appears in some PHI argument. - -2013-02-05 Richard Biener - - PR tree-optimization/53342 - PR tree-optimization/53185 - * tree-vectorizer.h (vect_check_strided_load): Remove. - * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Do - not disallow peeling for vectorized strided loads. - (vect_check_strided_load): Make static and simplify. - (vect_analyze_data_refs): Adjust. - * tree-vect-stmts.c (vectorizable_load): Handle peeled loops - correctly when vectorizing strided loads. - -2013-02-05 Richard Biener - - * doc/install.texi: Refer to ISL, not PPL. - -2013-02-05 Jan Hubicka - - PR tree-optimization/55789 - * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): Drop to 1. - -2013-02-05 Jan Hubicka - - PR tree-optimization/55789 - * cgraphclones.c (cgraph_remove_node_and_inline_clones): Remove - the dead call anyway. - -2013-02-05 Eric Botcazou - - PR sanitizer/55374 - * config/gnu-user.h (LIBASAN_EARLY_SPEC): Add missing guard. - -2013-02-04 Alexander Potapenko - Jack Howarth - Jakub Jelinek - - PR sanitizer/55617 - * config/darwin.c (sort_ctor_records): Stabilized qsort - on constructor priority by using original position. - (finalize_ctors): New routine to sort constructors by - priority before use in assemble_integer. - (machopic_asm_out_constructor): Use finalize_ctors if needed. - -2013-02-04 Jakub Jelinek - - PR libstdc++/54314 - * config/i386/winnt.c (i386_pe_assemble_visibility): Don't warn - about visibility on artificial decls. - * config/sol2.c (solaris_assemble_visibility): Likewise. - -2013-02-04 Kai Tietz - - PR target/56186 - * config/i386/i386.c (function_value_ms_64): Add additional valtype - argument and improve checking of return-argument types for 16-byte - modes. - (ix86_function_value_1): Add additional valtype argument on call - of function_value_64. - (return_in_memory_ms_64): Sync 16-byte sized mode handling with - handling infunction_value_64 function. - -2013-02-04 Matthew Gretton-Dann - - * reload.c (subst_reloads): Fix DEBUG_RELOAD build issue. - -2013-02-04 Richard Biener - - PR tree-optimization/56188 - * tree-ssa-structalias.c (label_visit): Consider case with - initially non-empty points-to set. - (perform_var_substitution): Dump node mapping and clean up. - -2013-02-04 Richard Guenther - - PR lto/56168 - * lto-symtab.c (lto_symtab_merge_decls_1): Make non-builtin - node prevail as last resort. - (lto_symtab_merge_decls): Remove guard on LTRANS here. - (lto_symtab_prevailing_decl): Builtins are their own prevailing decl. - -2013-02-04 Richard Biener - - PR tree-optimization/56113 - * tree-ssa-structalias.c (equiv_class_lookup, equiv_class_add): - Merge into ... - (equiv_class_lookup_or_add): ... this. - (label_visit): Adjust and fix error in previous patch. - (perform_var_substitution): Adjust. - -2013-02-03 Oleg Endo - - * config/sh/divtab.c: Fix formatting and comments throughout the file. - * config/sh/sh4-300.md: Likewise. - * config/sh/sh4a.md: Likewise. - * config/sh/constraints.md: Likewise. - * config/sh/sh.md: Likewise. - * config/sh/netbsd-elf.h: Likewise. - * config/sh/predicates.md: Likewise. - * config/sh/sh-protos.h: Likewise. - * config/sh/ushmedia.h: Likewise. - * config/sh/linux.h: Likewise. - * config/sh/sh.c: Likewise. - * config/sh/superh.h: Likewise. - * config/sh/elf.h: Likewise. - * config/sh/sh4.md: Likewise. - * config/sh/sh.h: Likewise. - -2013-02-03 John David Anglin - - * config/pa/constraints.md: Adjust unused letters. Change "T" - constraint to match_test floating_point_store_memory_operand(). - * config/pa/predicates.md (reg_plus_base_memory_operand): New. - (base14_operand): New. - (floating_point_store_memory_operand): New. - (integer_store_memory_operand): Revise to use base14_operand and - reg_plus_base_memory_operand. - (move_dest_operand): Allow symbolic_memory_operands. - (symbolic_memory_operand): Check for LO_SOM. - (symbolic_operand): Change default case to break. - * config/pa/pa.md: Remove unamed DFmode and SFmode patterns to force - CONST_DOUBLE values to be reloaded by putting them into memory when - the destination is a floating point register. - (movdf): Remove code to handle CONST_DOUBLE. - (movsf): Likewise. - (reload_indf_r1): New. - (reload_insf_r1): New. - Consistently use "Q" and "T" constraints with integer and floating - point move instructions, respectively. - (movdi): Remove FAIL. - Change predicate for source operand unamed DImode move from - general_operand to move_src_operand. - (umulsidi3): Change predicate for destination operand to - register_operand. - Likewise for similar unamed patterns. - * config/pa/pa-protos.h (pa_legitimize_reload_address): Declare. - * config/pa/pa.c (pa_symbolic_expression_p): Remove extra parenthesis. - (hppa_legitimize_address): Simplify mask calculation. - (pa_emit_move_sequence): Revised handling of secondary reloads from - REG+D addresses for floating point loads and stores. Directly handle - loading CONST0_RTX (mode) to a floating point register. - (pa_secondary_reload): Handle reloading DF and SFmode constant values - to floating point registers. Don't restrict secondary reloads to - floating point registers to integer modes. Revise some comments and - cleanup some code. - (TARGET_LEGITIMATE_ADDRESS_P): Define. - (pa_legitimate_address_p): New. - (pa_legitimize_reload_address): New. - * config/pa/pa.h (STRICT_REG_OK_FOR_INDEX_P): New. - (STRICT_REG_OK_FOR_BASE_P): New. - (GO_IF_LEGITIMATE_ADDRESS): Delete. Update some related comments. - (LEGITIMIZE_RELOAD_ADDRESS): Revise to use pa_legitimize_reload_address. - -2013-02-03 David Edelsohn - Andrew Dixie - - * collect2.c (GCC_CHECK_HDR): Do not scan objects with F_LOADONLY - flag set. - -2013-02-03 Richard Sandiford - - * expmed.c (extract_bit_field_1): Pass the full width of the - structure to get_best_reg_extraction_insn. - -2013-02-01 David Edelsohn - - PR target/54601 - * configure.ac (use_cxa_atexit): Add AIX. - * configure: Regenerate. - - * config/rs6000/aix61.h (STARTFILE_SPEC): Add crtcxa.o. - -2013-02-01 Jakub Jelinek - - PR debug/54793 - * final.c (need_profile_function): New variable. - (final_start_function): Drop ATTRIBUTE_UNUSED from first argument. - If first of NOTE_INSN_BASIC_BLOCK or NOTE_INSN_FUNCTION_BEG - is only preceeded by NOTE_INSN_VAR_LOCATION or NOTE_INSN_DELETED - notes, targetm.asm_out.function_prologue doesn't emit anything, - HAVE_prologue and profiler should be emitted before prologue, - set need_profile_function instead of emitting it. - (final_scan_insn): If need_profile_function, emit - profile_function on the first NOTE_INSN_BASIC_BLOCK or - NOTE_INSN_FUNCTION_BEG note. - -2013-02-01 Richard Henderson - - * config/rs6000/rs6000.md (smulditi3): New. - (umulditi3): New. - - * config/alpha/alpha.md (umulditi3): New. - -2013-02-01 David Edelsohn - - * config/rs6000/xcoff.h (ASM_OUTPUT_ALIGNED_COMMON): Use floor_log2. - (ASM_OUTPUT_ALIGNED_LOCAL): New. - -2013-02-01 Richard Biener - - PR tree-optimization/56113 - * tree-ssa-structalias.c (label_visit): Reduce work for - single-predecessor nodes. - -2013-02-01 Eric Botcazou - - * fold-const.c (make_range_step) : Bail out if the - range isn't testing for zero. - -2013-01-31 Steven Bosscher - - PR middle-end/56113 - * fwprop.c (fwprop_init): Set up loops without CFG modifications. - -2013-01-31 Hiroyuki Ono - Nick Clifton - - * config/v850/constraints.md (Q): Define as a memory constraint. - * config/v850/predicates.md (label_ref_operand): New predicate. - (e3v5_shift_operand): New predicate. - (ior_operator): New predicate. - * config/v850/t-v850: Add e3v5 multilib. - * config/v850/v850-protos.h (v850_adjust_insn_length): Prototype. - (v850_gen_movdi): Prototype. - * config/v850/v850.c: Add support for e3v5 architecture. - Rename all uses of TARGET_V850E || TARGET_V850E2_ALL to - TARGET_V850E_UP. - (construct_save_jarl): Add e3v5 long JARL support. - (v850_adjust_insn_length): New function. Adjust length of call - insns when using e3v5 instructions. - (v850_gen_movdi): New function: Generate instructions to move a - DImode value. - * config/v850/v850.h (TARGET_CPU_v850e3v5): Define. - (CPP_SPEC): Define __v850e3v5__ as appropriate. - (TARGET_USE_FPU): Enable for e3v5. - (CONST_OK_FOR_W): New macro. - (ADJUST_INSN_LENGTH): Define. - * config/v850/v850.md (UNSPEC_LOOP): Define. - (attr cpu): Add v850e3v5. - Rename all uses of TARGET_V850E2 to TARGET_V850E2V3_UP. - (movdi): New pattern. - (movdi_internal): New pattern. - (cbranchsf4): Conditionalize on TARGET_USE_FPU. - (cbranchdf4): Conditionalize on TARGET_USE_FPU. - (cstoresf4): Likewise. - (cstoredf4): Likewise. - (insv): New pattern. - (rotlso3_a): New pattern. - (rotlsi3_b): New pattern - (rotlsi3_v850e3v5): New pattern. - (doloop_begin): New pattern. - (fix_loop_counter): New pattern. - (doloop_end): New pattern. - (branch_normal): Add e3v5 long branch support. - (branch_invert): Likewise. - (branch_z_normal): Likewise. - (branch_z_invert): Likewise. - (branch_nz_normal): Likewise. - (branch_nz_invert): Likewise. - (call_internal_short): Add e3v5 register-indirect JARL support. - (call_internal_long): Likewise. - (call_value_internal_short): Likewise. - (call_value_internal_long): Likewise. - * config/v850/v850.opt (mv850e3v5, mv850e2v4): New options. - (mloop): New option. - * config.gcc: Add support for configuring v840e3v5 target. - * doc/invoke.texi: Document new v850 specific command line options. - -2013-01-31 Paul Koning - - PR debug/55059 - PR debug/54508 - * dwarf2out.c (prune_unused_types_mark): Mark all of parent's - children if parent is a class. - (prune_unused_types_prune): Don't add DW_AT_declaration. - -2013-01-31 Richard Biener - - PR tree-optimization/56157 - * tree-vect-slp.c (vect_get_slp_defs): More thoroughly try to - match up operand with SLP child. - -2013-01-31 Jason Merrill - - PR debug/54410 - * dwarf2out.c (gen_struct_or_union_type_die): Always schedule template - parameters the first time. - (gen_scheduled_generic_parms_dies): Check completeness here. - -2013-01-31 Richard Biener - - PR middle-end/53073 - * common.opt (faggressive-loop-optimizations): New flag, - enabled by default. - * doc/invoke.texi (faggressive-loop-optimizations): Document. - * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Guard - infer_loop_bounds_from_undefined by it. - -2013-01-31 Richard Biener - - PR tree-optimization/56150 - * tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Do not - visit virtual operands. - (find_uses_to_rename_bb): Likewise. - -2013-01-31 Richard Biener - - PR tree-optimization/56150 - * tree-ssa-tail-merge.c (gimple_equal_p): Properly handle - mixed store non-store stmts. - -2013-01-30 Jakub Jelinek - - PR sanitizer/55374 - * gcc.c (LIBASAN_SPEC): Define just to ADD_STATIC_LIBASAN_LIBS if - LIBASAN_EARLY_SPEC is defined. - (LIBASAN_EARLY_SPEC): Define to empty string if not already defined. - (LINK_COMMAND_SPEC): Add LIBASAN_EARLY_SPEC for -fsanitize=address, - before %o. - * config/gnu-user.h (LIBASAN_EARLY_SPEC): Define. - - PR c++/55742 - * config/i386/i386.c (ix86_valid_target_attribute_inner_p): Diagnose - invalid args instead of ICEing on it. - (ix86_valid_target_attribute_tree): Return error_mark_node if - ix86_valid_target_attribute_inner_p failed. - (ix86_valid_target_attribute_p): Return false only if - ix86_valid_target_attribute_tree returned error_mark_node. Allow - target("default") attribute. - (sorted_attr_string): Change argument from const char * to tree, - merge in all target attribute arguments rather than just one. - Formatting fix. Use XNEWVEC instead of xmalloc and XDELETEVEC - instead of free. Avoid using strcat. - (ix86_mangle_function_version_assembler_name): Mangle - target("default") as if no target attribute is present. Adjust - sorted_attr_string caller. Avoid leaking memory. Use XNEWVEC - instead of xmalloc and XDELETEVEC instead of free. - (ix86_function_versions): Don't return true if one of the decls - doesn't have target attribute. If they don't and one of the decls - is DECL_FUNCTION_VERSIONED, report an error. Adjust - sorted_attr_string caller. Use XDELETEVEC instead of free. - (ix86_supports_function_versions): Remove. - (make_name): Fix up formatting. - (make_dispatcher_decl): Remove resolver_name and its initialization. - Avoid leaking memory. - (is_function_default_version): Return true if there is - target("default") attribute rather than no target attribute at all. - (make_resolver_func): Avoid leaking memory. - (ix86_generate_version_dispatcher_body): Likewise. - (TARGET_OPTION_SUPPORTS_FUNCTION_VERSIONS): Remove. - * target.def (supports_function_versions): Remove. - * doc/tm.texi.in (SUPPORTS_FUNCTION_VERSIONS): Remove. - * doc/tm.texi: Regenerated. - -2013-01-30 Vladimir Makarov - - PR rtl-optimization/56144 - * lra-constraints.c (get_reload_reg): Don't reuse reload pseudo - for values with side effects. - -2013-01-30 Richard Biener - - * sparseset.h (sparseset_bit_p): Use gcc_checking_assert. - (sparseset_pop): Likewise. - * cfganal.c (compute_idf): Likewise. Increase work-stack size - to be able to use quick_push in the worker loop. - -2013-01-30 Marek Polacek - - * cfgcleanup.c (cleanup_cfg): Don't mark affected BBs. - -2013-01-30 Richard Biener - - PR lto/56147 - * lto-symtab.c (lto_symtab_merge_decls_1): Guard DECL_BUILT_IN check. - -2013-01-30 Georg-Johann Lay - - PR tree-optimization/56064 - * fixed-value.c (fixed_from_double_int): New function. - * fixed-value.h (fixed_from_double_int): New prototype. - (const_fixed_from_double_int): New static inline function. - * fold-const.c (native_interpret_fixed): New static function. - (native_interpret_expr) : Use it. - (can_native_interpret_type_p) : Return true. - (native_encode_fixed): New static function. - (native_encode_expr) : Use it. - (native_interpret_int): Move double_int worker code to... - * double-int.c (double_int::from_buffer): ...this new static method. - * double-int.h (double_int::from_buffer): Prototype it. - -2013-01-30 Richard Biener - - * tree-ssa-structalias.c (final_solutions, final_solutions_obstack): - New pointer-map and obstack. - (init_alias_vars): Allocate pointer-map and obstack. - (delete_points_to_sets): Free them. - (find_what_var_points_to): Cache result. - (find_what_p_points_to): Adjust for changed interface of - find_what_var_points_to. - (compute_points_to_sets): Likewise. - (ipa_pta_execute): Likewise. - -2013-01-30 Rainer Orth - - * configure.ac (HAVE_AS_SPARC_NOBITS): New test. - * configure: Regenerate. - * config.in: Regenerate. - * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section): Emit - #nobits/#progbits if supported. - -2013-01-29 Oleg Endo - - PR target/56121 - * config/sh/sh.md (bclr_m2a, bset_m2a, bst_m2a, bld_m2a, bldsign_m2a, - bld_reg, *bld_regqi, band_m2a, bandreg_m2a, bor_m2a, borreg_m2a, - bxor_m2a, bxorreg_m2a): Add satisfies_constraint_K03 condition. - -2013-01-29 Greta Yorsh - - * config/arm/cortex-a7.md (cortex_a7_neon, cortex_a7_all): Remove. - (cortex_a7_idiv): Use cortex_a7_both instead of cortex_a7_all. - -2013-01-29 Greta Yorsh - - * config/arm/arm.c (cortexa7_younger): Return true for TYPE_CALL. - * config/arm/cortex-a7.md (cortex_a7_call): Update required units. - -2013-01-29 Greta Yorsh - - * config/arm/arm-protos.h (arm_mac_accumulator_is_result): New - declaration. - * config/arm/arm.c (arm_mac_accumulator_is_result): New function. - * config/arm/cortex-a7.md: New bypasses using - arm_mac_accumulator_is_result. - -2013-01-29 Greta Yorsh - - * config/arm/cortex-a7.md (cortex_a7_neon_mul): New reservation. - (cortex_a7_neon_mla): Likewise. - (cortex_a7_fpfmad): New reservation. - (cortex_a7_fpmacs): Use ffmas and update required units. - (cortex_a7_fpmuld): Update required units and latency. - (cortex_a7_fpmacd): Likewise. - (cortex_a7_fdivs, cortex_a7_fdivd): Likewise. - (cortex_a7_neon). Likewise. - (bypass) Update participating units. - -2013-01-29 Greta Yorsh - - * config/arm/arm.md (type): Add ffmas and ffmad to "type" attribute. - * config/arm/vfp.md (fma,fmsub,fnmsub,fnmadd): Change type - from fmac to ffma. - * config/arm/vfp11.md (vfp_farith): Use ffmas. - (vfp_fmul): Use ffmad. - * config/arm/cortex-r4f.md (cortex_r4_fmacs): Use ffmas. - (cortex_r4_fmacd): Use ffmad. - * config/arm/cortex-m4-fpu.md (cortex_m4_fmacs): Use ffmas. - * config/arm/cortex-a9.md (cortex_a9_fmacs): Use ffmas. - (cortex_a9_fmacd): Use ffmad. - * config/arm/cortex-a8-neon.md (cortex_a8_vfp_macs): Use ffmas. - (cortex_a8_vfp_macd): Use ffmad. - * config/arm/cortex-a5.md (cortex_a5_fpmacs): Use ffmas. - (cortex_a5_fpmacd): Use ffmad. - * config/arm/cortex-a15-neon.md (cortex_a15_vfp_macs) Use ffmas. - (cortex_a15_vfp_macd): Use ffmad. - * config/arm/arm1020e.md (v10_fmul): Use ffmas and ffmad. - -2013-01-29 Jason Merrill - - PR libstdc++/54314 - * varasm.c (default_assemble_visibility): Don't warn about - visibility on artificial decls. - -2013-01-29 Richard Biener - - PR tree-optimization/56113 - * tree-ssa-structalias.c (equiv_class_lookup): Also return - the bitmap leader. - (label_visit): Free duplicate bitmaps and record the leader instead. - (perform_var_substitution): Adjust. - -2013-01-29 Richard Biener - - PR tree-optimization/55270 - * tree-ssa-dom.c (eliminate_degenerate_phis): If we changed - the CFG, schedule loops for fixup. - -2013-01-29 Nick Clifton - - * config/rl78/rl78.c (rl78_regno_mode_code_ok_for_base_p): Allow - SP_REG. - -2013-01-28 Leif Ekblad - - * config.gcc (i[34567]86-*-rdos*, x86_64-*-rdos*): New targets. - * config/i386/i386.h (TARGET_RDOS): New macro. - (DEFAULT_LARGE_SECTION_THRESHOLD): New macro. - * config/i386/i386.c (ix86_option_override_internal): For 64bit - TARGET_RDOS, set ix86_cmodel to CM_MEDIUM_PIC and flag_pic to 1. - * config/i386/i386.opt (mlarge-data-threshold): Initialize to - DEFAULT_LARGE_SECTION_THRESHOLD. - * config/i386/i386.md (R14_REG, R15_REG): New constants. - * config/i386/rdos.h: New file. - * config/i386/rdos64.h: New file. - -2013-01-28 Bernd Schmidt - - PR other/54814 - * reload.c (find_valid_class_1): Use in_hard_reg_set_p instead of - TEST_HARD_REG_BIT. - -2013-01-28 Jakub Jelinek - - PR rtl-optimization/56117 - * sched-deps.c (sched_analyze_2) : For use_cselib - call cselib_lookup_from_insn on the MEM before calling - add_insn_mem_dependence. - -2013-01-28 Richard Biener - - * tree-inline.c (remap_gimple_stmt): Do not assing a BLOCK - to a stmt that didn't have one. - (copy_phis_for_bb): Likewise for PHI arguments. - (copy_debug_stmt): Likewise for debug stmts. - -2013-01-28 Richard Biener - - PR tree-optimization/56034 - * tree-loop-distribution.c (enum partition_kind): Add PKIND_REDUCTION. - (partition_builtin_p): Adjust. - (generate_code_for_partition): Handle PKIND_REDUCTION. Assert - it is the last partition. - (rdg_flag_uses): Check SSA_NAME_IS_DEFAULT_DEF before looking - up the vertex for the definition. - (classify_partition): Classify whether a partition is a - PKIND_REDUCTION, thus has uses outside of the loop. - (ldist_gen): Inherit PKIND_REDUCTION when merging partitions. - Merge all PKIND_REDUCTION partitions into the last partition. - (tree_loop_distribution): Seed partitions from reductions as well. - -2013-01-28 Jakub Jelinek - - PR tree-optimization/56125 - * tree-ssa-math-opts.c (gimple_expand_builtin_pow): Don't optimize - pow(x,c) into sqrt(x) * powi(x, n/2) or - 1.0 / (sqrt(x) * powi(x, abs(n/2))) if c is an integer or when - optimizing for size. - Don't optimize pow(x,c) into powi(x, n/3) * powi(cbrt(x), n%3) or - 1.0 / (powi(x, abs(n)/3) * powi(cbrt(x), abs(n)%3)) if 2c is an - integer. - - PR tree-optimization/56094 - * gimplify.c (force_gimple_operand_1): Temporarily set input_location - to UNKNOWN_LOCATION while gimplifying expr. - -2013-01-27 Uros Bizjak - - PR target/56114 - * config/i386/i386.md (*movabs_1): Add square brackets around - operand 0 in movabs insn template for -masm=intel asm alternative. - (*movabs_2): Ditto for operand 1. - -2013-01-26 David Holsgrove - - PR target/54663 - * config.gcc (microblaze*-linux*): Add tmake_file to allow building - of microblaze-c.o - -2013-01-26 Edgar E. Iglesias - - * config.gcc (microblaze*-*-*): Rename microblaze*-*-elf, update - tm_file. - -2013-01-25 Naveen H.S - - * config/aarch64/aarch64.c (TARGET_FIXED_CONDITION_CODE_REGS): - Undef to avoid warning. - -2013-01-25 Michael Haubenwallner - - * configure.ac (gcc_cv_ld_static_dynamic): Define for AIX native ld. - * configure: Regenerate. - -2013-01-25 Jakub Jelinek - - PR tree-optimization/56098 - * tree-ssa-phiopt.c (nt_init_block): Don't call add_or_mark_expr - for stmts with volatile ops. - (cond_store_replacement): Don't optimize if assign has volatile ops. - (cond_if_else_store_replacement_1): Don't optimize if either - then_assign or else_assign have volatile ops. - (hoist_adjacent_loads): Don't optimize if either def1 or def2 have - volatile ops. - -2013-01-25 Georg-Johann Lay - - * doc/invoke.texi (AVR Built-in Macros): Document __XMEGA__. - -2013-01-25 Georg-Johann Lay - - * doc/extend.texi (Example of asm with clobbered asm reg): Fix - missing ':' in asm example. - -2013-01-25 Tejas Belagod - - * config/aarch64/aarch64-simd-builtins.def: Separate sqdmulh_lane - entries into lane and laneq entries. - * config/aarch64/aarch64-simd.md (aarch64_sqdmulh_lane): - Remove AdvSIMD scalar modes. - (aarch64_sqdmulh_laneq): New. - (aarch64_sqdmulh_lane): New RTL pattern for Scalar AdvSIMD - modes. - * config/aarch64/arm_neon.h: Fix all the vqdmulh_lane* intrinsics' - builtin implementations to relfect changes in RTL in aarch64-simd.md. - * config/aarch64/iterators.md (VCOND): New. - (VCONQ): New. - -2013-01-25 Georg-Johann Lay - - PR target/54222 - * config/avr/builtins.def (DEF_BUILTIN): Add LIBNAME argument. - Add NULL LIBNAME argument to existing definitions. - (ABSHR, ABSR, ABSLR, ABSLLR, ABSHK, ABSK, ABSLK, ABSLLK): New. - * config/avr/avr-c.c (DEF_BUILTIN): Add LIBNAME argument. - * config/avr/avr.c (DEF_BUILTIN): Same. - (avr_init_builtins): Pass down LIBNAME to add_builtin_function. - (avr_expand_builtin): Expand to a vanilla call if a libgcc - implementation is available (DECL_ASSEMBLER_NAME is set). - (avr_fold_absfx): New static function. - (avr_fold_builtin): Use it to handle: AVR_BUILTIN_ABSHR, - AVR_BUILTIN_ABSR, AVR_BUILTIN_ABSLR, AVR_BUILTIN_ABSLLR, - AVR_BUILTIN_ABSHK, AVR_BUILTIN_ABSK, AVR_BUILTIN_ABSLK, - AVR_BUILTIN_ABSLLK. - * config/avr/stdfix.h (abshr, absr, abslr, absllr) - (abshk, absk, abslk, absllk): Provide as static inline functions. - -2013-01-25 Marek Polacek - - PR tree-optimization/56035 - * cfgloopmanip.c (fix_loop_structure): Remove redundant condition. - -2012-01-24 Uros Bizjak - - * config/i386/i386.md (*movti_internal_rex64): Add (o,e) alternative. - (*movtf_internal_rex64): Add (!o,C) alternative - (*movxf_internal_rex64): Ditto. - (*movdf_internal_rex64): Add (?r,C) and (?m,C) alternatives. - -2013-01-24 Shenghou Ma - - * doc/invoke.texi: fix typo. - * doc/objc.texi: fix typo. - -2013-01-24 Richard Sandiford - - * config/mips/mips.md (*and3_mips16): Use the "W" constraint - for the first two alternatives. - -2013-01-24 Diego Novillo - - * Makefile.in (GGC): Remove. Replace all instances with ggc-page.o. - (ggc-zone.o): Remove. - * configure.ac: Remove option --with-gc. - * configure: Re-generate. - * doc/install.texi: Remove documentation for --with-gc. - * gengtype.c (write_enum_defn): Remove. Update all users. - (write_Types_process_field): Remove generation of gt_e_* argument. - (output_type_enum): Remove. Update all users. - (write_enum_defn): Remove. Update all users. - (enum alloc_zone): Remove. Update all users. - (write_splay_tree_allocator_def): Remove generation of gt_e_* argument. - * ggc-common.c (ggc_splay_alloc): Remove first argument. - Update all callers. - (struct ptr_data): Remove field TYPE. Update all users. - (gt_pch_note_object): Remove argument TYPE. Update all users. - * ggc-internal.h (ggc_pch_alloc_object): Remove last argument. - Update all users. - * ggc-none.c (ggc_alloc_typed_stat): Remove. - (struct alloc_zone): Remove. - (ggc_internal_alloc_zone_stat): Remove. - (ggc_internal_cleared_alloc_zone_stat): Remove. - * ggc-page.c (ggc_alloc_typed_stat): Remove. - (ggc_pch_count_object): Remove last argument. Update all users. - (ggc_pch_alloc_object): Remove last argument. Update all users. - (struct alloc_zone): Remove. - * ggc-zone.c: Remove. - * ggc.h (gt_pch_note_object): Remove last argument. Update all users. - (struct alloc_zone): Remove. - (ggc_alloc_typed_stat): Remove. - (ggc_alloc_typed): Remove. - (ggc_splay_alloc): Remove first argument. - (rtl_zone): Remove. Update all users. - (tree_zone): Remove. Update all users. - (tree_id_zone): Remove. Update all users. - (ggc_internal_zone_alloc_stat): Remove. Update all users. - (ggc_internal_zone_cleared_alloc_stat): Remove. Update all users. - (ggc_internal_zone_vec_alloc_stat): Remove. Update all users. - * tree-ssanames.c: Remove references to zone allocator in comments. - -2013-01-24 Georg-Johann Lay - - * config/avr/avr.c (avr_out_fract): Make register numbers that - might be outside of source operand signed. - -2013-01-24 Uros Bizjak - - * config/i386/constraints.md (Yf): New constraint. - * config/i386/i386.md (*movdf_internal_rex64): Use Yf*f instead - of f constraint to conditionaly disable x87 register preferences. - (*movdf_internal): Ditto. - (*movsf_internal): Ditto. - -2013-01-24 Steven Bosscher - - PR inline-asm/55934 - * lra-assigns.c (assign_by_spills): Throw away the pattern of asms - that have operands with impossible constraints. - Add a FIXME for a speed-up opportunity. - * lra-constraints.c (process_alt_operands): Verify that a class - selected from constraints on asms is valid for the operand mode. - (curr_insn_transform): Remove incorrect comment. - -2013-01-23 David Edelsohn - - * config/rs6000/rs6000.c (rs6000_delegitimize_address): Check that - TOC operand is a valid symbol ref in the constant pool. - -2013-01-23 Edgar E. Iglesias - - * config/microblaze/linux.h: Add TARGET_OS_CPP_BUILTINS - -2013-01-23 Georg-Johann Lay - - PR target/54222 - * config/avr/stdfix.h: New file. - * t-avr (stdfix-gcc.h): New rule to build it. - (EXTRA_HEADERS): Set it to install stdfix.h, stdfix-gcc.h. - -2013-01-23 Kostya Serebryany - - * config/darwin.h: remove dependency on - CoreFoundation (asan on Mac OS). - -2013-01-23 Jakub Jelinek - - PR target/49069 - * config/arm/arm.md (cbranchdi4, cstoredi4): Use s_register_operand - instead of cmpdi_operand for first comparison operand. - Don't assert that comparison operands aren't both constants. - -2013-01-22 Jonathan Wakely - - * doc/install.texi (Downloading the Source): Update references to - downloading separate components. - -2013-01-22 Jonathan Wakely - - * doc/extend.texi (__int128): Improve grammar. - -2013-01-22 Uros Bizjak - - PR target/56028 - * config/i386/i386.md (*movti_internal_rex64): Change (o,riF) - alternative to (o,r). - (*movdi_internal_rex64): Remove (!o,n) alternative. - (DImode immediate->memory splitter): Remove. - (DImode immediate->memory peephole2): Remove. - (movtf): Enable for TARGET_64BIT || TARGET_SSE. - (*movtf_internal_rex64): Rename from *movtf_internal. Change (!o,F*r) - alternative to (!o,*r). - (*movtf_internal_sse): New pattern. - (*movxf_internal_rex64): New pattern. - (*movxf_internal): Disable for TARGET_64BIT. - (*movdf_internal_rex64): Remove (!o,F) alternative. - -2013-01-22 Jakub Jelinek - - PR middle-end/56074 - * dumpfile.c (dump_loc): Only print loc if LOCATION_LOCUS (loc) - isn't UNKNOWN_LOCATION nor BUILTINS_LOCATION. - * tree-vect-loop-manip.c (find_loop_location): Also ignore - stmt locations where LOCATION_LOCUS of the stmt location is - UNKNOWN_LOCATION or BUILTINS_LOCATION. - - PR target/55686 - * config/i386/i386.md (UNSPEC_STOS): New. - (strset_singleop, *strsetdi_rex_1, *strsetsi_1, *strsethi_1, - *strsetqi_1): Add UNSPEC_STOS. - -2013-01-22 Paolo Carlini - - PR c++/56067 - * doc/invoke.texi: Remove left over -Wsynth example. - -2013-01-21 Jakub Jelinek - - PR tree-optimization/56051 - * fold-const.c (fold_binary_loc): Don't fold - X < (cast) (1 << Y) into (X >> Y) != 0 if cast is either - a narrowing conversion, or widening conversion from signed - to unsigned. - -2013-01-21 Uros Bizjak - - PR rtl-optimization/56023 - * haifa-sched.c (fix_inter_tick): Do not update ticks of instructions, - dependent on debug instruction. - -2013-01-21 Martin Jambor - - PR middle-end/56022 - * function.c (allocate_struct_function): Call - invoke_set_current_function_hook earlier. - -2013-01-21 Jakub Jelinek - - * reload1.c (init_reload): Only initialize reload_obstack - during the first call. - -2013-01-21 Marek Polacek - - * cfgloop.c (verify_loop_structure): Fix up grammar. - -2013-01-21 Yi-Hsiu Hsu - - * config/arm/marvell-pj4.md (pj4_shift_conds, pj4_alu_shift, - pj4_alu_shift_conds, pj4_shift): Handle simple_alu_shift. - -2013-01-21 Ramana Radhakrishnan - - PR target/56058 - * config/arm/marvell-pj4.md: Update copyright year. - Fix up use of alu to alu_reg and simple_alu_imm. - -2013-01-21 Uros Bizjak - - * config/i386/i386.md (enabled): Do not disable fma4 for TARGET_FMA. - -2013-01-20 Vladimir Makarov - - PR target/55433 - * lra-constraints.c (curr_insn_transform): Don't reuse original - insn for secondary memory move when memory mode should be different. - -2013-01-20 John David Anglin - - * config/pa/pa.md (atomic_loaddi, atomic_loaddi_1, atomic_storedi, - atomic_storedi_1): New patterns. - -2013-01-20 Venkataramanan Kumar - - btver2 pipeline descriptions. - * config/i386/i386.c: Enable CPU_BTVER2 to use btver2 pipeline - descriptions. - * config/i386/i386.md (btver2_decode): New type attributes. - * config/i386/sse.md (btver2_decode, btver2_sse_attr): New - type attributes. - * config/i386/btver2.md: New file describing btver2 pipelines. - -2013-01-19 Andrew Pinski - - PR tree-optimization/52631 - * tree-ssa-sccvn (visit_use): Before looking up the original - statement, try looking up the simplified expression. - -2013-01-19 Anthony Green - - * config/moxie/moxie.c (moxie_expand_prologue): Set - current_function_static_stack_size. - -2013-01-18 Jakub Jelinek - - PR tree-optimization/56029 - * tree-phinodes.c (reserve_phi_args_for_new_edge): Set - gimple_phi_arg_location for the new arg to UNKNOWN_LOCATION. - -2013-01-18 Sharad Singhai - - PR tree-optimization/55995 - * dumpfile.c (dump_loc): Print location only if available. - * tree-vectorizer.c (increase_alignment): Intialize vect_location. - -2013-01-18 Vladimir Makarov - - PR target/55433 - * lra-constraints.c (curr_insn_transform): Reuse original insn for - secondary memory move. - (inherit_reload_reg): Use rclass instead of cl for - check_secondary_memory_needed_p. - -2013-01-18 Jakub Jelinek - - PR middle-end/56015 - * expr.c (expand_expr_real_2) : Handle - the case where writing real complex part of target modifies op1. - -2013-01-18 James Greenhalgh - - * config/aarch64/aarch64-simd.md - (aarch64_vcond_internal): Handle unordered cases. - * config/aarch64/iterators.md (v_cmp_result): New. - -2013-01-18 Yi-Hsiu Hsu - Ramana Radhakrishnan - - * config/arm/marvell-pj4.md: New file. - * config/arm/arm.c (arm_issue_rate): Add marvell_pj4. - * config/arm/arm.md (generic_sched): Add marvell_pj4. - (generic_vfp): Likewise. - * config/arm/arm-cores.def: Add marvell-pj4. - * config/arm/arm-tune.md: Regenerate. - * config/arm/arm-tables.opt: Regenerate. - * config/arm/bpabi.h (BE8_LINK_SPEC): Add marvell_pj4. - * doc/invoke.texi: Document marvell-pj4. - -2013-01-18 Tejas Belagod - - * config/aarch64/arm_neon.h: Map scalar types to standard types. - -2013-01-18 Alexandre Oliva - - PR debug/54114 - PR debug/54402 - PR debug/49888 - * var-tracking.c (negative_power_of_two_p): New. - (global_get_addr_cache, local_get_addr_cache): New. - (get_addr_from_global_cache, get_addr_from_local_cache): New. - (vt_canonicalize_addr): Rewrite using the above. Adjust the - heading comment. - (vt_stack_offset_p): Remove. - (vt_canon_true_dep): Always canonicalize loc's address. - (clobber_overlapping_mems): Make sure we have a MEM. - (local_get_addr_clear_given_value): New. - (val_reset): Clear local cached entries. - (compute_bb_dataflow): Create and release the local cache. - Disable duplicate MEMs clobbering. - (emit_notes_in_bb): Clobber MEMs likewise. - (vt_emit_notes): Create and release the local cache. - (vt_initialize, vt_finalize): Create and release the global - cache, respectively. - * alias.c (rtx_equal_for_memref_p): Compare operands of ENTRY_VALUEs. - -2013-01-18 Alexandre Oliva - - PR libmudflap/53359 - * tree-mudflap.c (mudflap_finish_file): Skip deferred decls - not found in the symtab. - -2013-01-18 Alexandre Oliva - - PR debug/56006 - PR rtl-optimization/55547 - PR rtl-optimization/53827 - PR debug/53671 - PR debug/49888 - * alias.c (offset_overlap_p): New, factored out of... - (memrefs_conflict_p): ... this. Use absolute sizes. Retain - the conservative special case for symbolic constants. Don't - adjust zero sizes on alignment. - -2013-01-18 Bernd Schmidt - - PR rtl-optimization/52573 - * regrename.c (build_def_use): Ignore REG_DEAD notes if there is a - REG_UNUSED for the same register. - -2013-01-17 Richard Biener - Marek Polacek - - PR rtl-optimization/55833 - * loop-unswitch.c (unswitch_loops): Move loop verification... - (unswitch_single_loop): ...here. Call mark_irreducible_loops. - * cfgloopmanip.c (fix_loop_placement): Add IRRED_INVALIDATED parameter. - Set it to true when we're removing a loop from hierarchy tree in - an irreducible region. - (fix_bb_placements): Adjust caller. - (fix_loop_placements): Likewise. - -2013-01-17 Georg-Johann Lay - - * config/avr/builtins.def (DEF_BUILTIN): Factor out - "__builtin_avr_" from NAME, turn NAME to an uppercase identifier. - Factor out 'CODE_FOR_' from ICODE, use 'nothing' instead of '-1'. - Remove ID. Adjust comments. - * config/avr/avr-c.c (avr_builtin_name): Remove. - (avr_cpu_cpp_builtins): Use DEF_BUILTIN instead of for-loop. - * config/avr/avr.c (avr_tolower): New static function. - (DEF_BUILTIN): Remove parameter ID. Prefix ICODE by 'CODE_FOR_'. - Stringify NAME, prefix it with "__builtin_avr_" and lowercase it. - (avr_expand_builtin): Assert insn_code != CODE_FOR_nothing for - default expansion. - -2013-01-17 Jan Hubicka - - PR tree-optimization/55273 - * loop-iv.c (iv_number_of_iterations): Consider zero iteration case. - -2013-01-17 Uros Bizjak - - PR target/55981 - * config/i386/sync.md (atomic_store): Always generate SWImode - store through atomic_store_1. - (atomic_store_1): Macroize insn using SWI mode iterator. - -2013-01-17 Martin Jambor - - PR tree-optimizations/55264 - * ipa-inline-transform.c (can_remove_node_now_p_1): Never return true - for virtual methods. - * ipa.c (symtab_remove_unreachable_nodes): Never return true for - virtual methods before inlining is over. - * cgraph.h (cgraph_only_called_directly_or_aliased_p): Return false for - virtual functions. - * cgraphclones.c (cgraph_create_virtual_clone): Mark clones as - non-virtual. - -2013-01-16 Vladimir Makarov - - PR rtl-optimization/56005 - * sched-deps.c (sched_analyze_2): Check deps->readonly for adding - pending reads for prefetch. - -2013-01-16 Ian Bolton - - * config/aarch64/aarch64.md - (*cstoresi_neg_uxtw): New pattern. - (*cmovsi_insn_uxtw): New pattern. - (*si3_uxtw): New pattern. - (*_si3_uxtw): New pattern. - (*si3_insn_uxtw): New pattern. - (*bswapsi2_uxtw): New pattern. - -2013-01-16 Richard Biener - - * tree-inline.c (tree_function_versioning): Remove set but - never used variable. - -2013-01-16 Richard Biener - - PR tree-optimization/55964 - * tree-flow.h (rename_variables_in_loop): Remove. - (rename_variables_in_bb): Likewise. - * tree-loop-distribution.c (update_phis_for_loop_copy): Remove. - (copy_loop_before): Adjust and delete update-ssa status. - * tree-vect-loop-manip.c (rename_variables_in_bb): Make static. - (rename_variables_in_bb): Likewise. Properly walk over predecessors. - (rename_variables_in_loop): Remove. - (slpeel_update_phis_for_duplicate_loop): Likewise. - (slpeel_tree_duplicate_loop_to_edge_cfg): Handle nested loops, - use available cfg machinery instead of duplicating it. - Update PHI nodes and perform poor-mans SSA update here. - (slpeel_tree_peel_loop_to_edge): Adjust. - -2013-01-16 Richard Biener - - PR tree-optimization/54767 - PR tree-optimization/53465 - * tree-vrp.c (vrp_meet_1): Revert original fix for PR53465. - (vrp_visit_phi_node): For PHI arguments coming via backedges - drop all symbolical range information. - (execute_vrp): Compute backedges. - -2013-01-16 Richard Biener - - * doc/install.texi: Update CLooG and ISL requirements to - 0.18.0 and 0.11.1. - -2013-01-16 Christian Bruel - - PR target/55301 - * config/sh/sh.c (sh_expand_prologue): Postpone new_stack mem symbol. - (broken_move): Handle UNSPECV_SP_SWITCH_B. - * config/sh/sh.md (sp_switch_1): Use set (reg:SI SP_REG). - -2013-01-16 DJ Delorie - - * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New. - (UNSPECV_SP_SWITCH_E): New. - (sp_switch_1): Change to an unspec. - (sp_switch_2): Change to an unspec. Don't use post-inc when we - replace $r15. - -2013-01-16 Uros Bizjak - - * emit-rtl.c (need_atomic_barrier_p): Mask memory model argument - with MEMMODEL_MASK before comparing with MEMMODEL_* memory types. - * optabs.c (maybe_emit_sync_lock_test_and_set): Ditto. - (expand_mem_thread_fence): Ditto. - (expand_mem_signal_fence): Ditto. - (expand_atomic_load): Ditto. - (expand_atomic_store): Ditto. - -2013-01-16 Alexandre Oliva - - PR rtl-optimization/55547 - PR rtl-optimization/53827 - PR debug/53671 - PR debug/49888 - * alias.c (memrefs_conflict_p): Set sizes to negative after - AND adjustments. - -2013-01-15 Jakub Jelinek - - PR target/55940 - * function.c (thread_prologue_and_epilogue_insns): Always - add crtl->drap_reg to set_up_by_prologue.set, even if - stack_realign_drap is false. - -2013-01-15 Jan-Benedict Glaw - - * config/vax/vax.md (add3, sub3, mul3, div3, - and3, *and_const_int, ior3, xor3, ashrsi3, - *call): Fix indention. - -2013-01-15 Tom de Vries - - PR target/55876 - * optabs.c (widen_operand): Use gen_lowpart instead of gen_rtx_SUBREG. - Update comment. - -2013-01-15 Vladimir Makarov - - PR rtl-optimization/55153 - * sched-deps.c (sched_analyze_2): Add pending reads for prefetch. - -2013-01-15 Martin Jambor - - PR tree-optimization/55920 - * tree-sra.c (analyze_access_subtree): Do not mark non-removable - accesses as grp_to_be_debug_replaced. - -2013-01-15 Jakub Jelinek - - PR tree-optimization/55920 - * tree-sra.c (sra_modify_assign): If for lacc->grp_to_be_debug_replaced - there is non-useless type conversion needed from debug rhs to lhs, - use build_debug_ref_for_model and/or VIEW_CONVERT_EXPR. - -2013-01-15 Joseph Myers - Mikael Pettersson - - PR target/43961 - * config/arm/arm.h (ADDR_VEC_ALIGN): Align SImode jump tables for - Thumb. - (ASM_OUTPUT_CASE_LABEL): Remove. - (ASM_OUTPUT_BEFORE_CASE_LABEL): Define to empty. - * final.c (shorten_branches): Update alignment of labels before - jump tables if CASE_VECTOR_SHORTEN_MODE. - -2013-01-15 Richard Biener - - PR bootstrap/55961 - * system.h: Do not include gmp.h for building host tools. - -2013-01-15 Richard Biener - - PR middle-end/55882 - * emit-rtl.c (set_mem_attributes_minus_bitpos): Correctly - account for bitpos when computing alignment. - -2013-01-15 Vladimir Yakovlev - - * config/i386/i386-c.c (ix86_target_macros_internal): New case. - (ix86_target_macros_internal): Likewise. - - * config/i386/i386.c (m_CORE2I7): Removed. - (m_CORE_HASWELL): New macro. - (m_CORE_ALL): Likewise. - (initial_ix86_tune_features): m_CORE2I7 is replaced by m_CORE_ALL. - (initial_ix86_arch_features): Likewise. - (processor_target_table): Initializations for Core avx2. - (cpu_names): New names "core-avx2". - (ix86_option_override_internal): Changed PROCESSOR_COREI7 by - PROCESSOR_CORE_HASWELL. - (ix86_issue_rate): New case. - (ia32_multipass_dfa_lookahead): Likewise. - (ix86_sched_init_global): Likewise. - - * config/i386/i386.h (TARGET_HASWELL): New macro. - (target_cpu_default): New TARGET_CPU_DEFAULT_haswell. - (processor_type): New PROCESSOR_HASWELL. - -2013-01-15 Jakub Jelinek - - PR tree-optimization/55955 - * tree-vect-loop.c (vectorizable_reduction): Give up early on - *SHIFT_EXPR and *ROTATE_EXPR codes. - - PR tree-optimization/48766 - * opts.c (common_handle_option): For -fwrapv disable -ftrapv, for - -ftrapv disable -fwrapv. - -2013-01-14 Georg-Johann Lay - - PR target/55974 - * config/avr/avr-c.c (avr_cpu_cpp_builtins): Define __FLASH - etc. to 1 and not to __flash. - Use LL suffix for __INT24_MAX__ with -mint8. - Use ULL suffix for __UINT24_MAX__ with -mint8. - -2013-01-14 Georg-Johann Lay - - * config/avr/avr-arch.h - (struct base_arch_s): Use typedef avr_arch_t instead. - (struct arch_info_s): Use typedef avr_arch_info_t instead. - (struct mcu_type_s): Use typedef avr_mcu_t instead. - * config/avr/avr.c: Same. - * config/avr/avr-devices.c: Same. - * config/avr/driver-avr.c: Same. - * config/avr/gen-avr-mmcu-texi.c: Same. - * config/avr/avr-mcus.def: Adjust comment. - -2013-01-14 Tejas Belagod - - * config/aarch64/aarch64-simd.md (*aarch64_simd_ld1r): New. - * config/aarch64/iterators.md (VALLDI): New. - -2013-01-14 Uros Bizjak - Andi Kleen - - PR target/55948 - * config/i386/sync.md (atomic_store_1): New pattern. - (atomic_store): Call atomic_store_1 for IX86_HLE_RELEASE - memmodel flag. - -2013-01-14 Georg-Johann Lay - - * config/avr/avr-stdint.h: Remove trailing blanks. - * config/avr/avr-log.h: Same. - * config/avr/avr-arch.h: Same. - * config/avr/avr-devices.c: Same. - * config/avr/avr-dimode.md: Same. - * config/avr/predicates.md: Same. - * config/avr/avr-c.c: Same. And fix typo. - - * config/avr/avr-protos.h: Same. And: - (function_arg_regno_p): Rename to avr_function_arg_regno_p. - (init_cumulative_args): Rename to avr_init_cumulative_args. - (expand_prologue): Rename to avr_expand_prologue. - (expand_epilogue): Rename to avr_expand_epilogue. - (adjust_insn_length): Rename to avr_adjust_insn_length. - (notice_update_cc): Rename to avr_notice_update_cc. - (final_prescan_insn): Rename to avr_final_prescan_insn. - * config/avr/avr.c: Same. - * config/avr/avr.h: Same. - * config/avr/avr.md: Remove trailing blanks. - (prologue): Use avr_expand_prologue. - (epilogue, sibcall_epilogue): Use avr_expand_epilogue. - -2013-01-14 Richard Biener - - * tree-cfg.c (verify_expr_location, verify_expr_location_1, - verify_location, collect_subblocks): New functions. - (verify_gimple_in_cfg): Verify that locations only reference - BLOCKs in the functions BLOCK tree. - -2013-01-14 Richard Biener - - * tree-cfgcleanup.c (remove_forwarder_block): Unshare propagated - PHI argument. - * graphite-sese-to-poly.c (insert_out_of_ssa_copy): Properly - unshare reference. - (insert_out_of_ssa_copy_on_edge): Likewise. - (rewrite_close_phi_out_of_ssa): Likewise. - * tree-ssa.c (insert_debug_temp_for_var_def): Properly unshare - debug expressions. - * tree-ssa-pre.c (insert_into_preds_of_block): Properly unshare - propagated constants. - * tree-cfg.c (tree_node_can_be_shared): Handled component-refs - can not be shared. - -2013-01-14 Georg-Johann Lay - - * config/avr/avr-modes.def: Add GPL copyright notice. - -2013-01-13 Uros Bizjak - - * config/i386/sync.md (mem_thread_fence): Mask operands[0] with - MEMMODEL_MASK to determine memory model. - (atomic_store): Ditto from operands[2]. - * config/i386/i386.c (ix86_memmodel_check): Declare "strong" as bool. - -2013-01-13 Jakub Jelinek - - PR fortran/55935 - * gimple-fold.c (get_symbol_constant_value): Call unshare_expr. - (fold_gimple_assign): Don't call unshare_expr here. - (fold_ctor_reference): Call unshare_expr. - -2013-01-13 Terry Guo - - * Makefile.in (s-mlib): New argument MULTILIB_REUSE. - * doc/fragments.texi: Document MULTILIB_REUSE. - * gcc.c (multilib_reuse): New internal spec. - (set_multilib_dir): Also search multilib from multilib_reuse. - * genmultilib (tmpmultilib3): Refactor code. - (tmpmultilib4): Ditto. - (multilib_reuse): New multilib argument. - -2013-01-13 Richard Sandiford - - * Makefile.in: Update copyright. - -2013-01-12 Tom de Vries - - PR middle-end/55890 - * calls.c (expand_call): Check if arg_nr is valid. - -2013-01-11 Michael Meissner - - * doc/extend.texi (X86 Built-in Functions): Add whitespace in - __builtin_ia32_paddb256 and __builtin_ia32_pavgb256 - documentation. Add missing '__' in front of - __builtin_ia32_packssdw256. - -2013-01-11 Andreas Krebbel - - PR target/55719 - * config/s390/s390.c (s390_preferred_reload_class): Do not return - NO_REGS for larl operands. - (s390_reload_larl_operand): Use s390_load_address instead of - emit_move_insn. - -2013-01-11 Richard Biener - - * tree-cfg.c (verify_node_sharing_1): Split out from ... - (verify_node_sharing): ... here. - (verify_gimple_in_cfg): Use verify_node_sharing_1 for walk_tree. - -2013-01-11 Eric Botcazou - - * configure.ac (Tree checking): Set TREECHECKING to yes if enabled. - Substitute TREECHECKING. - * configure: Regenerate. - * Makefile.in (TREECHECKING): New. - -2013-01-11 Richard Guenther - - PR tree-optimization/44061 - * tree-vrp.c (extract_range_basic): Compute zero as - value-range for __builtin_constant_p of function parameters. - -2013-01-10 Richard Sandiford - - Update copyright years. - -2013-01-10 Vladimir Makarov - - PR rtl-optimization/55672 - * lra-eliminations.c (mark_not_eliminable): Permit addition with - const to be eliminable. - -2013-01-10 David Edelsohn - - * configure.ac (HAVE_AS_TLS): Add check for powerpc-ibm-aix. - * configure: Regenerate. - -2013-01-10 Richard Biener - - * builtins.c (expand_builtin_init_trampoline): Use set_mem_attributes. - -2013-01-10 Richard Biener - - PR bootstrap/55792 - * tree-into-ssa.c (rewrite_add_phi_arguments): Do not set - locations for virtual PHI arguments. - (rewrite_update_phi_arguments): Likewise. - -2013-01-10 Joel Sherrill - - * config/v850/rtems.h (ASM_SPEC): Pass -m8byte-align and -mgcc-abi - on to assembler. - -2013-01-10 Jakub Jelinek - - PR tree-optimization/55921 - * tree-complex.c (expand_complex_asm): New function. - (expand_complex_operations_1): Call it for GIMPLE_ASM. - -2013-01-10 Andreas Krebbel - - PR target/55718 - * config/s390/s390.c (s390_symref_operand_p) - (s390_loadrelative_operand_p): Merge the two functions. - (s390_check_qrst_address, print_operand_address): Add parameters - to s390_loadrelative_operand_p invokation. - (s390_check_symref_alignment): Use s390_loadrelative_operand_p. - (s390_reload_larl_operand, s390_secondary_reload): Use - s390_loadrelative_operand_p instead of s390_symref_operand_p. - (legitimize_pic_address): Handle @GOTENT and @PLT + addend. - -2013-01-09 Mike Stump - - * dse.c (record_store): Remove unnecessary assert. - -2013-01-09 Jan Hubicka - - PR tree-optimization/55569 - * cfgloopmanip.c (scale_loop_profile): Make ITERATION_BOUND gcov_type. - * cfgloop.h (scale_loop_profile): Likewise. - -2013-01-09 Jan Hubicka - - PR lto/45375 - * ipa-inline.c (ipa_inline): Remove extern inlines and virtual - functions. - * cgraphclones.c (cgraph_clone_node): Cpoy also LTO file data. - -2013-01-09 Richard Sandiford - - PR middle-end/55114 - * expr.h (maybe_emit_group_store): Declare. - * expr.c (maybe_emit_group_store): New function. - * builtins.c (expand_builtin_int_roundingfn): Call it. - (expand_builtin_int_roundingfn_2): Likewise. - -2013-01-09 Vladimir Makarov - - PR rtl-optimization/55829 - * lra-constraints.c (match_reload): Add code for absent output. - (curr_insn_transform): Add code for reloads of matched inputs - without output. - -2013-01-09 Uros Bizjak - - * config/i386/sse.md (*vec_interleave_highv2df): Change mode - attribute of movddup insn to DF. - (*vec_interleave_lowv2df): Ditto. - (vec_dupv2df): Ditto. - -2013-01-09 Jan Hubicka - - PR tree-optimiation/55875 - * tree-ssa-loop-niter.c (number_of_iterations_cond): Add - EVERY_ITERATION parameter. - (number_of_iterations_exit): Check if exit is executed every iteration. - (idx_infer_loop_bounds): Similarly here. - (n_of_executions_at_most): Simplify - to only test for cases where statement is dominated by the - particular bound; handle correctly the "postdominance" test. - (scev_probably_wraps_p): Use max loop iterations info - as a global bound first. - -2013-01-09 Nguyen Duy Dat - Nick Clifton - - * config/v850/v850.md (cbranchsf4): New pattern. - (cstoresf4): New pattern. - (cbranchdf4): New pattern. - (cstoredf4): New pattern. - (movsicc): Disallow floating point comparisons. - (cmpsf_le_insn): Fix order of operators. - (cmpsf_lt_insn): Likewise. - (cmpsf_eq_insn): Likewise. - (cmpdf_le_insn): Likewise. - (cmpdf_lt_insn): Likewise. - (cmpdf_eq_insn): Likewise. - (cmpsf_ge_insn): Use LE comparison. - (cmpdf_ge_insn): Likewise. - (cmpsf_gt_insn): Use LT comparison. - (cmpdf_gt_insn): Likewise. - (cmpsf_ne_insn): Delete pattern. - (cmpdf_ne_insn): Delete pattern. - * config/v850/v850.c (v850_gen_float_compare): Use - gen_cmpdf_eq_insn for NE comparison. - (v850_float_z_comparison_operator) - (v850_float_nz_comparison_operator): Move from here ... - * config/v850/predicates.md: ... to here. Move GT and GE - comparisons into v850_float_z_comparison_operator. - * config/v850/v850-protos.h (v850_float_z_comparison_operator): - Delete prototype. - (v850_float_nz_comparison_operator): Likewise. - -2013-01-09 John David Anglin - - * config/pa/pa.c (pa_emit_move_sequence): Replace calls to gen_insv - with calls to gen_insvsi/gen_insvdi. - -2013-01-09 Venkataramanan Kumar - - * config/i386/i386.c (initial_ix86_tune_features): Set up - X86_TUNE_AVX128_OPTIMAL for m_BTVER2. - -2013-01-09 Steven Bosscher - Jakub Jelinek - - PR tree-optimization/48189 - * predict.c (predict_loops): If max is 0, don't call compare_tree_int. - If nitercst is 0, don't predict the exit edge. - -2013-01-08 Naveen H.S - - * config/aarch64/aarch64.c (aarch64_print_operand): Replace %r - in asm_fprintf with reg_names. - (aarch64_print_operand_address): Likewise. - (aarch64_return_addr): Likewise. - * config/aarch64/aarch64.h (ASM_FPRINTF_EXTENSIONS): Remove. - -2013-01-08 John David Anglin - - * config/pa/pa.h (VAL_U6_BITS_P): Define. - (INT_U6_BITS): Likewise. - * config/pa/predicates.md (uint6_operand): New predicate. - (shift5_operand, shift6_operand): Likewise. - * config/pa/pa.md (lshrsi3, rotrsi3): Use shift5_operand instead of - arith32_operand. - (lshrdi3): Use shift6_operand. - (shrpsi4, shrpdi4): New insn patterns. - (extzv): Delete expander. - (extzvsi, extzvdi): New expanders. Use uint5_operand and uint6_operand - predicates in unamed zero extract patterns. Tighten common constraint. - (extv): Delete expander. - (extvsi, extvdi): New expanders. Use uint5_operand and uint6_operand - predicates in unamed sign extract patterns. Tighten common constraint. - (insv): Delete expander. - (insvsi, insvdi): New expanders. Use uint5_operand and uint6_operand - predicates in unamed insert patterns. Tighten common constraint. - Change uint32_operand predicate to uint6_operand predicate in unamed - DImode pattern to insert constant values of type 1...1xxxx. - -2013-01-04 Jan Hubicka - - PR tree-optimization/55823 - * ipa-prop.c (update_indirect_edges_after_inlining): Fix ordering - issue. - -2013-01-08 Jakub Jelinek - Uros Bizjak - - PR rtl-optimization/55845 - * df-problems.c (can_move_insns_across): Stop scanning at - volatile_insn_p source instruction or give up if - across_from .. across_to range contains any volatile_insn_p - instructions. - -2013-01-08 Tejas Belagod - - * config/aarch64/aarch64-simd.md (vec_init): New. - * config/aarch64/aarch64-protos.h (aarch64_expand_vector_init): - Declare. - * config/aarch64/aarch64.c (aarch64_simd_dup_constant, - aarch64_simd_make_constant, aarch64_expand_vector_init): New. - -2013-01-08 Jakub Jelinek - - PR fortran/55341 - * asan.c (asan_clear_shadow): New function. - (asan_emit_stack_protection): Use it. - -2013-01-08 Tejas Belagod - - * config/aarch64/aarch64-simd.md (aarch64_simd_vec_mult_lo_, - aarch64_simd_vec_mult_hi_): Separate instruction and operand - with tab instead of space. - -2013-01-08 Nick Clifton - - * config/rl78/rl78.c (rl78_expand_prologue): Always select - register bank 0 at the start of an interrupt handler. - * config/rl78/rl78.md (mulsi3_g13): Correct values for MDBL and - MDBH registers. - -2013-01-08 James Greenhalgh - - * config/aarch64/aarch64-simd.md - (aarch64_simd_bsl_internal): Add floating-point modes. - (aarch64_simd_bsl): Likewise. - (aarch64_vcond_internal): Likewise. - (vcond): Likewise. - (aarch64_cm): Fix constraints, add new modes. - * config/aarch64/iterators.md (V_cmp_result): Add V2DF. - -2013-01-08 James Greenhalgh - - * config/aarch64/aarch64-builtins.c - (aarch64_builtin_vectorized_function): Handle sqrt, sqrtf. - -2013-01-08 Martin Jambor - - PR debug/55579 - * tree-sra.c (analyze_access_subtree): Return true also after - potentially creating a debug-only replacement. - -2013-01-08 Jakub Jelinek - - PR middle-end/55890 - * tree-ssa-ccp.c (evaluate_stmt): Use gimple_call_builtin_p. - - PR tree-optimization/54120 - * tree-vrp.c (range_fits_type_p): Don't allow - src_precision < precision from signed vr to unsigned_p - if vr->min or vr->max is negative. - (simplify_float_conversion_using_ranges): Test can_float_p - against CODE_FOR_nothing. - -2013-01-08 Jakub Jelinek - Richard Biener - - PR middle-end/55851 - * fold-const.c (int_binop_types_match_p): Allow all INTEGRAL_TYPE_P - types instead of just INTEGER_TYPE types. - -2013-01-07 Mark Kettenis - - * config/i386/openbsdelf.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, - TF_SIZE): Define. - -2013-01-07 Steve Ellcey - - PR target/42661 - * config/mips/mips.opt: Change mad to mmad to match documentation. - -2013-01-07 Georg-Johann Lay - - PR target/55897 - * doc/extend.texi (AVR Named Address Spaces): __memx goes into - .progmemx.data now. - -2013-01-07 Georg-Johann Lay - - PR target/55897 - * config/avr/avr.h (ADDR_SPACE_COUNT): New enum. - (avr_addrspace_t): Add .section_name field. - * config/avr/avr.c (progmem_section): Use ADDR_SPACE_COUNT as - array size. - (avr_addrspace): Same. Initialize .section_name. Remove last - NULL entry. Put __memx into .progmemx.data. - (progmem_section_prefix): Remove. - (avr_asm_init_sections): No need to initialize progmem_section. - (avr_asm_named_section): Use avr_addrspace[].section_name to get - section name prefix. - (avr_asm_select_section): Ditto. And use get_unnamed_section to - retrieve the progmem section. - * avr-c.c (avr_cpu_cpp_builtins): Use ADDR_SPACE_COUNT as loop - boundary to run over avr_addrspace[]. - (avr_register_target_pragmas): Ditto. - -2013-01-06 Jakub Jelinek - - * varasm.c (output_constant_def_contents): For asan_protect_global - protected strings, adjust DECL_ALIGN if needed, before testing for - anchored symbols. - (place_block_symbol): Adjust size for asan protected STRING_CSTs if - TREE_CONSTANT_POOL_ADDRESS_P. Increase alignment for asan protected - normal decls. - (output_object_block): For asan protected decls, emit asan padding - after their contents. - * asan.c (asan_protect_global): Don't check TREE_ASM_WRITTEN here. - (asan_finish_file): Test it here instead. - -2013-01-07 Nick Clifton - Matthias Klose - Doug Kwan - H.J. Lu - - PR driver/55470 - * collect2.c (main): Support -fuse-ld=bfd and -fuse-ld=gold. - - * common.opt: Add fuse-ld=bfd and fuse-ld=gold. - - * gcc.c (LINK_COMMAND_SPEC): Pass -fuse-ld=* to collect2. - - * opts.c (comman_handle_option): Ignore -fuse-ld=bfd and -fuse-ld=gold. - - * doc/invoke.texi: Document -fuse-ld=bfd and -fuse-ld=gold. - -2013-01-07 Georg-Johann Lay - - PR target/54461 - * doc/install.texi (Cross-Compiler-Specific Options): Document - --with-avrlibc. - -2013-01-07 Tejas Belagod - - * config/aarch64/arm_neon.h (vmovn_high_is16, vmovn_high_s32, - vmovn_high_s64, vmovn_high_u16, vmovn_high_u32, vmovn_high_u64, - vqmovn_high_s16, vqmovn_high_s32, vqmovn_high_s64, vqmovn_high_u16, - vqmovn_high_u32, vqmovn_high_u64, vqmovun_high_s16, vqmovun_high_s32, - vqmovun_high_s64): Fix source operand number and update copyright. - -2013-01-07 Richard Biener - - PR middle-end/55890 - * gimple.h (gimple_call_builtin_p): New overload. - * gimple.c (validate_call): New function. - (gimple_call_builtin_p): Likewise. - * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): - Use gimple_call_builtin_p. - (find_func_clobbers): Likewise. - * tree-ssa-strlen.c (adjust_last_stmt): Likewise. - (strlen_optimize_stmt): Likewise. - -2013-01-07 James Greenhalgh - - * config/aarch64/arm_neon.h (vld1_dup_*): Make argument const. - (vld1q_dup_*): Likewise. - (vld1_*): Likewise. - (vld1q_*): Likewise. - (vld1_lane_*): Likewise. - (vld1q_lane_*): Likewise. - -2013-01-07 Richard Biener - - * lto-streamer.h (LTO_minor_version): Bump to 2. - -2013-01-07 James Greenhalgh - - * config/aarch64/aarch64-protos.h - (aarch64_const_double_zero_rtx_p): Rename to... - (aarch64_float_const_zero_rtx_p): ...this. - (aarch64_float_const_representable_p): New. - (aarch64_output_simd_mov_immediate): Likewise. - * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Refactor - move immediate case. - * config/aarch64/aarch64.c - (aarch64_const_double_zero_rtx_p): Rename to... - (aarch64_float_const_zero_rtx_p): ...this. - (aarch64_print_operand): Allow printing of new constants. - (aarch64_valid_floating_const): New. - (aarch64_legitimate_constant_p): Check for valid floating-point - constants. - (aarch64_simd_valid_immediate): Likewise. - (aarch64_vect_float_const_representable_p): New. - (aarch64_float_const_representable_p): Likewise. - (aarch64_simd_imm_zero_p): Also allow for floating-point 0.0. - (aarch64_output_simd_mov_immediate): New. - * config/aarch64/aarch64.md (*movsf_aarch64): Add new alternative. - (*movdf_aarch64): Likewise. - * config/aarch64/constraints.md (Ufc): New. - (Y): call aarch64_float_const_zero_rtx. - * config/aarch64/predicates.md (aarch64_fp_compare_operand): New. - -2013-01-07 Richard Biener - - PR tree-optimization/55888 - PR tree-optimization/55862 - * tree-ssa-pre.c (phi_translate_1): Revert previous change. - (valid_in_sets): Check if a NAME has a leader in AVAIL_OUT, - not if it is contained therein. - -2013-01-07 Georg-Johann Lay - - * config/avr/t-avr: Typo. - -2013-01-07 Georg-Johann Lay - - PR55243 - * config/avr/t-avr: Don't automatically rebuild - $(srcdir)/config/avr/t-multilib - $(srcdir)/config/avr/avr-tables.opt - $(srcdir)/doc/avr-mmcu.texi - (avr-mcus): New phony target to build them on request. - (s-avr-mlib, s-avr-mmcu-texi): Remove. - * avr/avr-mcus.def: Adjust comments. - -2013-01-07 Uros Bizjak - - * config/i386/i386.c (DEFAULT_PCC_STRUCT_RETURN): Remove. - -2013-01-06 Richard Sandiford - - * file-find.c, file-find.h, realmpfr.c: Add FSF as copyright holder. - -2013-01-06 Richard Sandiford - - * config/tilepro/gen-mul-tables.cc: Put copyright on one line. - -2013-01-05 David Edelsohn - - * config/rs6000/aix53.h (LIB_SPEC): Add -lpthreads when compiling - to generate profiling. - * config/rs6000/aix64.h (LIB_SPEC): Same. - -2013-01-04 Andrew Pinski - - * config/aarch64/aarch64.c (aarch64_fixed_condition_code_regs): - New function. - (TARGET_FIXED_CONDITION_CODE_REGS): Define. - -2013-01-04 Uros Bizjak - - * config/i386/i386.c (ix86_legitimize_address): Call convert_to_mode - unconditionally. - (ix86_expand_move): Ditto. - (ix86_zero_extend_to_Pmode): Ditto. - (ix86_expand_call): Ditto. - (ix86_expand_special_args_builtin): Ditto. - (ix86_expand_builtin): Ditto. - -2013-01-04 Richard Biener - - PR tree-optimization/55862 - * tree-ssa-pre.c (phi_translate_1): Valueize SSA names after - translating them through PHI nodes. - -2013-01-04 Martin Jambor - - PR tree-optimization/55755 - * tree-sra.c (sra_modify_assign): Do not check that an access has no - children when trying to avoid producing a VIEW_CONVERT_EXPR. - -2013-01-04 Marek Polacek - - PR middle-end/55859 - * opts.c (default_options_optimization): Clarify error message. - -2013-01-04 Richard Biener - - PR middle-end/55863 - * fold-const.c (split_tree): Undo -X - 1 to ~X folding for - reassociation. - -2013-01-03 John David Anglin - - PR target/53789 - * config/pa/pa.md (movsi): Revert previous change. - * config/pa/pa.c (pa_legitimate_constant_p): Reject all TLS symbol - references. - -2013-01-03 Richard Henderson - - * config/i386/i386.c (ix86_expand_move): Always assign to op1 - after eliminating TLS symbols. - -2013-01-03 Marc Glisse - - PR bootstrap/50167 - * graphite-interchange.c (pdr_stride_in_loop): Use gmp_fprintf. - * graphite-poly.c (debug_gmp_value): Likewise. - -2013-01-03 Uros Bizjak - - PR target/55712 - * config/i386/i386-c.c (ix86_target_macros_internal): Depending on - selected code model, define __code_mode_small__, __code_model_medium__, - __code_model_large__, __code_model_32__ or __code_model_kernel__. - * config/i386/cpuid.h (__cpuid, __cpuid_count) [__i386__]: Prefix - xchg temporary register with %k. Declare temporary register as - early clobbered. - [__x86_64__]: For medium and large code models, preserve %rbx register. - -2013-01-03 Richard Biener - - * tree-data-ref.c (dump_conflict_function): Use less vertical spacing. - (dump_subscript): Adjust. - (finalize_ddr_dependent): Do not dump redundant info. - (analyze_siv_subscript): Adjust. - (subscript_dependence_tester): Likewise. - (compute_affine_dependence): Likewise. - -2013-01-03 Richard Biener - - Revert - 2013-01-03 Richard Biener - - PR tree-optimization/55857 - * tree-vect-stmts.c (vectorizable_load): Do not setup - re-alignment for invariant loads. - - 2013-01-02 Richard Biener - - * tree-vect-stmts.c (vectorizable_load): When vectorizing an - invariant load do not generate a vector load from the scalar location. - -2013-01-03 Richard Biener - - * tree-vect-loop.c (vect_analyze_loop_form): Clarify reason - for not vectorizing. - * tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref): Do - not build INDIRECT_REFs, call get_name once only. - (vect_create_data_ref_ptr): Likewise. Dump base object kind - based on DR_BASE_OBJECT, not DR_BASE_ADDRESS. - -2013-01-03 Richard Biener - - PR tree-optimization/55857 - * tree-vect-stmts.c (vectorizable_load): Do not setup - re-alignment for invariant loads. - -2013-01-03 Richard Biener - - PR lto/55848 - * lto-symtab.c (lto_symtab_merge_decls_1): As last resort, always - prefer a built-in decl. - -2013-01-03 Jakub Jelinek - - * gcc.c (process_command): Update copyright notice dates. - * gcov.c (print_version): Likewise. - * gcov-dump.c (print_version): Likewise. - - PR rtl-optimization/55838 - * loop-iv.c (iv_number_of_iterations): Call lowpart_subreg on - iv0.step, iv1.step and step. - -2013-01-03 Jakub Jelinek - Marc Glisse - - PR tree-optimization/55832 - * fold-const.c (fold_binary_loc): For ABS_EXPR >= 0 and - ABS_EXPR < 0 folding use constant_boolean_node instead of - integer_{one,zero}_node. - -2013-01-03 Jakub Jelinek - - PR debug/54402 - * params.def (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE): New param. - * var-tracking.c (reverse_op): Don't add reverse ops to - VALUEs that have already - PARAM_VALUE (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE) or longer locs list. - -2013-01-02 Gerald Pfeifer - - * doc/contrib.texi: Note years as release manager for Mark Mitchell. - -2013-01-02 Teresa Johnson - - * dumpfile.c (dump_loc): Print filename with location. - * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Use - new location_t parameter to emit complete unroll message with - new dump framework. - (canonicalize_loop_induction_variables): Compute loops location - and pass to try_unroll_loop_completely. - * loop-unroll.c (report_unroll_peel): New function. - (peel_loops_completely): Use new dump format with location - for main dumpfile message, and invoke report_unroll_peel on success. - (decide_unrolling_and_peeling): Ditto. - (decide_peel_once_rolling): Remove old dumpfile message subsumed - by report_unroll_peel. - (decide_peel_completely): Ditto. - (decide_unroll_constant_iterations): Ditto. - (decide_unroll_runtime_iterations): Ditto. - (decide_peel_simple): Ditto. - (decide_unroll_stupid): Ditto. - * cfgloop.c (get_loop_location): New function. - * cfgloop.h (get_loop_location): Declare. - -2013-01-02 Sriraman Tallam - - * config/i386/i386.c (fold_builtin_cpu): Remove unnecessary checks for - NULL. - -2013-01-02 John David Anglin - - PR middle-end/55198 - * expr.c (expand_expr_real_1): Don't use bitfield extraction for non - BLKmode objects when EXPAND_MEMORY is specified. - -2013-01-02 Sriraman Tallam - - * config/i386/i386.c (ix86_get_function_versions_dispatcher): Fix bug - in loop predicate. - (fold_builtin_cpu): Do not share cpu model decls across statements. - -2013-01-02 Jason Merrill - - PR c++/55804 - * tree.c (build_array_type_1): Revert earlier change. - -2013-01-02 Yufeng Zhang - - * config/aarch64/aarch64-cores.def: Add entries for "cortex-a53" and - "cortex-a57". - * config/aarch64/aarch64-tune.md: Re-generate. - -2013-01-02 Richard Biener - - * tree-vect-stmts.c (vectorizable_load): When vectorizing an - invariant load do not generate a vector load from the scalar location. - -2013-01-02 Richard Biener - - PR bootstrap/55784 - * configure.ac: Add $GMPINC to CFLAGS/CXXFLAGS. - * configure: Regenerate. - -2013-01-02 Richard Sandiford - - * builtins.c (expand_builtin_mathfn, expand_builtin_mathfn_2) - (expand_builtin_mathfn_ternary, expand_builtin_mathfn_3) - (expand_builtin_int_roundingfn_2): Keep the original target around - for the fallback case. - -2013-01-02 Richard Sandiford - - * tree-vrp.c (range_fits_type_p): Require the MSB of the double_int - to be clear for sign changes. - -2013-01-01 Jan Hubicka - - * ipa-inline-analysis.c: Fix formatting. - -2013-01-01 Jakub Jelinek - - PR tree-optimization/55831 - * tree-vect-loop.c (get_initial_def_for_induction): Use - gsi_after_labels instead of gsi_start_bb. + PR rtl-optimization/59647 + * cse.c (cse_process_notes_1): Don't substitute negative VOIDmode + new_rtx into UNSIGNED_FLOAT rtxes. Copyright (C) 2013 Free Software Foundation, Inc. diff --git a/gcc/ChangeLog-2013 b/gcc/ChangeLog-2013 new file mode 100644 index 00000000000..2ffd9593b54 --- /dev/null +++ b/gcc/ChangeLog-2013 @@ -0,0 +1,40495 @@ +2013-12-31 Jakub Jelinek + + PR tree-optimization/59622 + * gimple-fold.c (gimple_fold_call): Don't replace OBJ_TYPE_REF + call fndecl with 0 possible targets with BUILT_IN_UNREACHABLE, + instead only for !inplace add a __builtin_unreachable () call + before the call. + +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/avx512fintrin.h (_mm_add_round_sd): New. + (_mm_add_round_sd): Ditto. + (_mm_add_round_ss): Ditto. + (_mm_sub_round_sd): Ditto. + (_mm_sub_round_ss): Ditto. + (_mm_rcp14_sd): Ditto. + (_mm_rcp14_ss): Ditto. + (_mm_sqrt_round_sd): Ditto. + (_mm_sqrt_round_ss): Ditto. + (_mm_mul_round_sd): Ditto. + (_mm_mul_round_ss): Ditto. + (_mm_div_round_sd): Ditto. + (_mm_div_round_ss): Ditto. + (_mm_scalef_round_sd): Ditto. + (_mm_scalef_round_ss): Ditto. + (_mm_scalef_round_sd): Ditto. + (_mm_scalef_round_ss): Ditto. + (_mm_cvt_roundsd_ss): Ditto. + (_mm_cvt_roundsd_sd): Ditto. + (_mm_getexp_round_ss): Ditto. + (_mm_getexp_round_sd): Ditto. + (_mm_getmant_round_sd): Ditto. + (_mm_getmant_round_ss): Ditto. + (_mm_roundscale_round_ss): Ditto. + (_mm_roundscale_round_sd): Ditto. + (_mm_max_round_sd): Ditto. + (_mm_max_round_ss): Ditto. + (_mm_min_round_sd): Ditto. + (_mm_min_round_ss): Ditto. + (_mm_fmadd_round_sd): Ditto. + (_mm_fmadd_round_ss): Ditto. + (_mm_fmsub_round_sd): Ditto. + (_mm_fmsub_round_ss): Ditto. + (_mm_fnmadd_round_sd): Ditto. + (_mm_fnmadd_round_ss): Ditto. + (_mm_fnmsub_round_sd): Ditto. + (_mm_fnmsub_round_ss): Ditto. + (_mm_scalef_sd): Ditto. + (_mm_scalef_ss): Ditto. + (_mm_getexp_ss): Ditto. + (_mm_getexp_sd): Ditto. + (_mm_getmant_sd): Ditto. + (_mm_getmant_ss): Ditto. + (_mm_roundscale_ss): Ditto. + (_mm_roundscale_sd): Ditto. + * config/i386/i386-builtin-types.def: New types to support + new built-ins: , , + <(V4SF, V4SF, V2DF, INT>, , + . + * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_ADDSD_ROUND, + IX86_BUILTIN_ADDSS_ROUND, IX86_BUILTIN_CVTSD2SS_ROUND, + IX86_BUILTIN_CVTSS2SD_ROUND, IX86_BUILTIN_DIVSD_ROUND, + IX86_BUILTIN_GETEXPSD128, IX86_BUILTIN_DIVSS_ROUND, + IX86_BUILTIN_GETEXPSS128, IX86_BUILTIN_GETMANTSD128, + IX86_BUILTIN_GETMANTSS128, IX86_BUILTIN_MAXSD_ROUND, + IX86_BUILTIN_MAXSS_ROUND, IX86_BUILTIN_MINSD_ROUND, + IX86_BUILTIN_MINSS_ROUND, IX86_BUILTIN_MULSD_ROUND, + IX86_BUILTIN_MULSS_ROUND, IX86_BUILTIN_RCP14SD, + IX86_BUILTIN_RCP14SS, IX86_BUILTIN_RNDSCALESD, + IX86_BUILTIN_RNDSCALESS, IX86_BUILTIN_RSQRT14SD, + IX86_BUILTIN_RSQRT14SS, IX86_BUILTIN_SCALEFSD, + IX86_BUILTIN_SCALEFSS, IX86_BUILTIN_SQRTSD_ROUND, + IX86_BUILTIN_SQRTSS_ROUND, IX86_BUILTIN_SUBSD_ROUND, + IX86_BUILTIN_SUBSS_ROUND, IX86_BUILTIN_VFMADDSD3_ROUND, + IX86_BUILTIN_VFMADDSS3_ROUND, IX86_BUILTIN_VFMSUBSD3_MASK3, + IX86_BUILTIN_VFMSUBSS3_MASK3. + (builtin_description bdesc_args[]): Add + __builtin_ia32_rcp14sd, __builtin_ia32_rcp14ss, + __builtin_ia32_rsqrt14pd512_mask, __builtin_ia32_rsqrt14ps512_mask, + __builtin_ia32_rsqrt14sd, __builtin_ia32_rsqrt14ss, + __builtin_ia32_addsd_round, __builtin_ia32_addss_round, + __builtin_ia32_cvtsd2ss_round, __builtin_ia32_cvtss2sd_round, + __builtin_ia32_divsd_round, __builtin_ia32_divss_round, + __builtin_ia32_getexpsd128_round, __builtin_ia32_getexpss128_round, + __builtin_ia32_getmantsd_round, __builtin_ia32_getmantss_round, + __builtin_ia32_maxsd_round, __builtin_ia32_maxss_round, + __builtin_ia32_minsd_round, __builtin_ia32_minss_round, + __builtin_ia32_mulsd_round, __builtin_ia32_mulss_round, + __builtin_ia32_rndscalesd_round, __builtin_ia32_rndscaless_round, + __builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round, + __builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round, + __builtin_ia32_subsd_round, __builtin_ia32_subss_round, + __builtin_ia32_vfmaddsd3_round, __builtin_ia32_vfmaddss3_round. + (ix86_expand_round_builtin): Expand new FTYPEs. + * config/i386/sse.md (_vm3): Support + EVEX's embedded rouding. + (_vm3): Ditto. + (_vmsqrt2): Ditto. + (_vm3): Ditto. + (sse2_cvtsd2ss): Ditto. + (sse2_cvtss2sd): Ditto. + (*avx512f_vmscalef): Ditto. + (avx512f_sgetexp): Ditto. + (*avx512f_rndscale): Ditto. + (avx512f_getmant): Ditto. + (*srcp14): Make visible. + (*rsqrt14): Ditto. + * config/i386/subst.md (mask_mode512bit_condition): Fix + mode calculation. + (sd_mask_mode512bit_condition): Ditto. + (round_mode512bit_condition): Ditto. + (round_modev4sf_condition): Ditto. + (round_mask_scalar_operand3): Remove. + (round_prefix): New. + (round_saeonly_op3): Ditto. + (round_saeonly_prefix): Ditto. + +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_SHA_SET): New. + (OPTION_MASK_ISA_SHA_UNSET): Ditto. + (ix86_handle_option): Handle OPT_msha. + * config.gcc (extra_headers): Add shaintrin.h. + * config/i386/cpuid.h (bit_SHA): New. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect SHA + instructions. + * config/i386/i386-c.c (ix86_target_macros_internal): Handle + OPTION_MASK_ISA_SHA. + * config/i386/i386.c (ix86_target_string): Add -msha. + (ix86_option_override_internal): Add PTA_SHA. + (ix86_valid_target_attribute_inner_p): Handle OPT_msha. + (enum ix86_builtins): Add IX86_BUILTIN_SHA1MSG1, + IX86_BUILTIN_SHA1MSG2, IX86_BUILTIN_SHA1NEXTE, IX86_BUILTIN_SHA1RNDS4, + IX86_BUILTIN_SHA256MSG1, IX86_BUILTIN_SHA256MSG2, + IX86_BUILTIN_SHA256RNDS2. + (bdesc_args): Add BUILTINS defined above. + (ix86_init_mmx_sse_builtins): Add __builtin_ia32_sha1msg1, + __builtin_ia32_sha1msg2, __builtin_ia32_sha1nexte, + __builtin_ia32_sha1rnds4, __builtin_ia32_sha256msg1, + __builtin_ia32_sha256msg2, __builtin_ia32_sha256rnds2. + (ix86_expand_args_builtin): Handle V4SI_FTYPE_V4SI_V4SI_V4SI, add + warning for CODE_FOR_sha1rnds4. + * config/i386/i386.h (TARGET_SHA): New. + (TARGET_SHA_P): Ditto. + * config/i386/i386.opt (-msha): Document it. + * config/i386/immintrin.h: Add shaintrin.h. + * config/i386/shaintrin.h: New. + * config/i386/sse.md (unspec): Add UNSPEC_SHA1MSG1, UNSPEC_SHA1MSG2, + UNSPEC_SHA1NEXTE, UNSPEC_SHA1RNDS4, UNSPEC_SHA256MSG1, + UNSPEC_SHA256MSG2, UNSPEC_SHA256RNDS2. + (sha1msg1): New. + (sha1msg2): Ditto. + (sha1nexte): Ditto. + (sha1rnds4): Ditto. + (sha256msg1): Ditto. + (sha256msg2): Ditto. + (sha256rnds2): Ditto. + * doc/invoke.texi: Add -msha. + +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config.gcc (extra_headers): Add avx512fintrin.h, avx512cdintrin.h, + avx512erintrin.h, avx512pfintrin.h. + * config/i386/avx512cdintrin.h: New file. + * config/i386/avx512erintrin.h: New file. + * config/i386/avx512fintrin.h: New file. + * config/i386/avx512pfintrin.h: New file. + * config/i386/i386-builtin-types.def: Add V16UHI, V32SF, V16SF, V8DF, + V8DI, V16SI, V64QI, PV8DF, PV8DI, PV16SI, PV16SF, PCV8DF, PCV16SF, + PCV8DI, PCV16SI, V16QI_FTYPE_V16SI, V8DF_FTYPE_V8SI, V8DF_FTYPE_V8DF, + V8HI_FTYPE_V8DI, V16SF_FTYPE_V16SF, V8SI_FTYPE_V8DI, V8SF_FTYPE_V8DF, + V8SF_FTYPE_V8DF_V8SF_QI, V16HI_FTYPE_V16SI, V16SF_FTYPE_FLOAT, + V16SI_FTYPE_INT, V8DF_FTYPE_DOUBLE, V8DI_FTYPE_INT64, + V16SF_FTYPE_V4SF, V8DF_FTYPE_V4DF, V8DI_FTYPE_V4DI, V16QI_FTYPE_V8DI, + UINT_FTYPE_V4SF, UINT64_FTYPE_V4SF, UINT_FTYPE_V2DF, + UINT64_FTYPE_V2DF, V16SI_FTYPE_V16SI, V16SI_FTYPE_V16SI_V16SI_HI, + V8DI_FTYPE_V8DI, V8DI_FTYPE_V8DI_V8DI_QI, V16SI_FTYPE_PV4SI, + V16SF_FTYPE_PV4SF, V8DI_FTYPE_PV4DI, V8DF_FTYPE_PV4DF, + V8UHI_FTYPE_V8UHI, V8USI_FTYPE_V8USI, V2DF_FTYPE_V2DF_UINT, + V2DF_FTYPE_V2DF_UINT64, V4DF_FTYPE_V8DF_INT, + V4DF_FTYPE_V8DF_INT_V4DF_QI, V8DF_FTYPE_V8DF_V8DI, + V4SF_FTYPE_V4SF_UINT, V4SF_FTYPE_V4SF_UINT64, + INT_FTYPE_V4SF_V4SF_INT_INT, INT_FTYPE_V2DF_V2DF_INT_INT, + V16SF_FTYPE_V16SF_INT, V4SF_FTYPE_V16SF_INT, + V4SF_FTYPE_V16SF_INT_V4SF_QI, V16SF_FTYPE_V16SF_V16SF, + V16SF_FTYPE_V16SF_V16SI, V8DF_FTYPE_V8DF_V4DF_INT_V8DF_QI, + V8DF_FTYPE_V8DF_V8DF_INT_V8DF_QI, V8DF_FTYPE_V8DF_INT_V8DF_QI, + V8DF_FTYPE_V8DF_V8DF_V8DI_INT_QI_INT, V8DF_FTYPE_V8DF_V8DF, + V16SF_FTYPE_V16SF_V16SF_INT, V16SF_FTYPE_V16SF_V16SF_INT_V16SF_HI, + V16SF_FTYPE_V16SF_INT_V16SF_HI, V16SI_FTYPE_V16SI_V4SI_INT_V16SI_HI, + V16SF_FTYPE_V16SF_V16SF_V16SI_INT, + V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI, + V16SF_FTYPE_V16SF_V16SF_V16SI_INT_HI_INT, + V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI, + V4SF_FTYPE_V4SF_V4SF_V4SI_INT_QI_INT, + V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI, + V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI_INT, V16SF_FTYPE_V16SF_V4SF_INT, + V16SF_FTYPE_V16SF_V4SF_INT_V16SF_HI, V16HI_FTYPE_V16SF_INT, + V16HI_FTYPE_V16SF_INT_V16HI_HI, V16HI_FTYPE_V16HI_V16HI_INT_V16HI_HI, + V16SI_FTYPE_V16SI_V4SI, V16SI_FTYPE_V16SI_V4SI_INT, + V4SI_FTYPE_V16SI_INT, V4SI_FTYPE_V16SI_INT_V4SI_QI, + V16SI_FTYPE_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_INT_V16SI_HI, + V16SI_FTYPE_V16SI_SI, V16SI_FTYPE_V16SI_INT, + V16SI_FTYPE_V16SI_V4SI_V16SI_HI, V16SI_FTYPE_V16SI_INT_V16SI_HI, + V8DI_FTYPE_V8DI_V8DI, V16SI_FTYPE_V8DF_V8DF, + V8DI_FTYPE_V8DI_V8DI_INT_V8DI_QI, V8DI_FTYPE_V8DI_V4DI_INT_V8DI_QI, + V8DI_FTYPE_V8DI_V2DI, V4DI_FTYPE_V8DI_INT, + V4DI_FTYPE_V8DI_INT_V4DI_QI, V8DI_FTYPE_V8DI_V2DI_V8DI_QI, + V8DI_FTYPE_V8DI_INT_V8DI_QI, VOID_FTYPE_PDOUBLE_V8DF, + VOID_FTYPE_PFLOAT_V16SF, VOID_FTYPE_PV8DI_V8DI, HI_FTYPE_HI, + HI_FTYPE_HI_HI, HI_FTYPE_HI_INT, QI_FTYPE_V8DI_V8DI, + QI_FTYPE_V8DI_V8DI_QI, HI_FTYPE_V16SI_V16SI, HI_FTYPE_V16SI_V16SI_HI, + QI_FTYPE_V8DI_V8DI_INT, QI_FTYPE_V8DI_V8DI_INT_QI, + HI_FTYPE_V16SI_V16SI_INT, HI_FTYPE_V16SI_V16SI_INT ,HI, + QI_FTYPE_V8DF_V8DF_INT, QI_FTYPE_V8DF_V8DF_INT_QI, + QI_FTYPE_V8DF_V8DF_INT_QI_INT, HI_FTYPE_V16SF_V16SF_INT, + HI_FTYPE_V16SF_V16SF_INT_HI, HI_FTYPE_V16SF_V16SF_INT_HI_INT, + QI_FTYPE_V2DF_V2DF_INT, QI_FTYPE_V2DF_V2DF_INT_QI, + QI_FTYPE_V2DF_V2DF_INT_QI_INT, QI_FTYPE_V4SF_V4SF_INT, + QI_FTYPE_V4SF_V4SF_INT_QI, QI_FTYPE_V4SF_V4SF_INT_QI_INT, + V16SI_FTYPE_HI, V8DI_FTYPE_QI, V8DF_FTYPE_V8DF_V8DF_V8DF, + V16SF_FTYPE_V16SF_V16SF_V16SF, V8DF_FTYPE_V8DF_V8DF_QI, + V8DF_FTYPE_V8SF_V8DF_QI, V8DF_FTYPE_V8SI_V8DF_QI, + V8DI_FTYPE_V8SI_V8DI_QI, V8DI_FTYPE_V8HI_V8DI_QI, + V8DI_FTYPE_V16QI_V8DI_QI, V8DI_FTYPE_V8DI_V8DI_V8DI_QI, + V8DF_FTYPE_V8DI_V8DF_V8DF, V8DF_FTYPE_V8DI_V8DF_V8DF_QI, + V8DF_FTYPE_V8DF_V8DI_V8DF_QI, V8DF_FTYPE_V8DF_V8DF_V8DF_QI, + V16SI_FTYPE_V16SI_V16SI_V16SI_HI, V2DF_FTYPE_V2DF_V2DF_V2DF_QI, + V2DF_FTYPE_V2DF_V4SF_V2DF_QI, V16SF_FTYPE_V16SF_V16SF_HI, + V16SF_FTYPE_V16SI_V16SF_HI, V16SF_FTYPE_V16SF_V16SF_V16SF_HI, + V16SF_FTYPE_V16SI_V16SF_V16SF, V16SF_FTYPE_V16SI_V16SF_V16SF_HI, + V16SF_FTYPE_V16SF_V16SI_V16SF_HI, V4SF_FTYPE_V4SF_V2DF_V4SF_QI, + V4SF_FTYPE_V4SF_V4SF_V4SF_QI, V16SF_FTYPE_V4SF_V16SF_HI, + V8DF_FTYPE_V4DF_V8DF_QI, V8DF_FTYPE_V2DF_V8DF_QI, + V16SI_FTYPE_V4SI_V16SI_HI, V16SI_FTYPE_SI_V16SI_HI, + V16SI_FTYPE_V16HI_V16SI_HI, V16SI_FTYPE_V16QI_V16SI_HI, + V8SI_FTYPE_V8DF_V8SI_QI, V8DI_FTYPE_V4DI_V8DI_QI, + V8DI_FTYPE_V2DI_V8DI_QI, V8DI_FTYPE_DI_V8DI_QI, + V16SF_FTYPE_PCV16SF_V16SF_HI, V8DF_FTYPE_PCV8DF_V8DF_QI, + V16SI_FTYPE_PCV16SI_V16SI_HI, V8DI_FTYPE_PCV8DI_V8DI_QI, + V2DF_FTYPE_PCDOUBLE_V2DF_QI, V4SF_FTYPE_PCFLOAT_V4SF_QI, + V16QI_FTYPE_V16SI_V16QI_HI, V16HI_FTYPE_V16SI_V16HI_HI, + V8SI_FTYPE_V8DI_V8SI_QI, V8HI_FTYPE_V8DI_V8HI_QI, + V16QI_FTYPE_V8DI_V16QI_QI, VOID_FTYPE_PV8DF_V8DF_QI, + VOID_FTYPE_PV16SF_V16SF_HI, VOID_FTYPE_PV8DI_V8DI_QI, + VOID_FTYPE_PV16SI_V16SI_HI, VOID_FTYPE_PDOUBLE_V2DF_QI, + VOID_FTYPE_PFLOAT_V4SF_QI, V16SI_FTYPE_V16SF_V16SI_HI, + V8DI_FTYPE_V8DI_V8DI_V8DI_INT_QI, + V16SI_FTYPE_V16SI_V16SI_V16SI_INT_HI, V8DI_FTYPE_V8DI_V8DI_V8DI, + V16SI_FTYPE_V16SI_V16SI_V16SI, V8DF_FTYPE_V8DF_V8DI_V8DF, + V16SF_FTYPE_V16SF_V16SI_V16SF, V4SF_FTYPE_V4SF_V4SF_INT_V4SF_QI, + V2DF_FTYPE_V2DF_V2DF_INT_V2DF_QI, V8DI_FTYPE_V16SI_V16SI_V8DI_QI, + UINT64_FTYPE_V2DF_INT, UINT64_FTYPE_V4SF_INT, UINT_FTYPE_V2DF_INT, + UINT_FTYPE_V4SF_INT, INT64_FTYPE_V2DF_INT, INT64_FTYPE_V4SF_INT, + INT_FTYPE_V2DF_INT, INT_FTYPE_V4SF_INT, V2DF_FTYPE_V2DF_UINT64_INT, + V4SF_FTYPE_V4SF_UINT64_INT, V4SF_FTYPE_V4SF_UINT_INT, + V2DF_FTYPE_V2DF_INT64_INT, V4SF_FTYPE_V4SF_INT64_INT, + V4SF_FTYPE_V4SF_INT_INT, V16SI_FTYPE_V16SF_V16SI_HI_INT, + V16SF_FTYPE_V16SI_V16SF_HI_INT, V16SF_FTYPE_V16SF_V16SF_HI_INT, + V16SF_FTYPE_V16HI_V16SF_HI_INT, V8SI_FTYPE_V8DF_V8SI_QI_INT, + V8SF_FTYPE_V8DF_V8SF_QI_INT, V8DF_FTYPE_V8DF_V8DF_QI_INT, + V8DF_FTYPE_V8SF_V8DF_QI_INT, V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT, + V8DF_FTYPE_V8DF_V8DF_V8DF_QI_INT, V4SF_FTYPE_V4SF_V4SF_V4SF_QI_INT, + V4SF_FTYPE_V4SF_V2DF_V4SF_QI_INT, V2DF_FTYPE_V2DF_V2DF_V2DF_QI_INT, + V2DF_FTYPE_V2DF_V4SF_V2DF_QI_INT, V2DF_FTYPE_V2DF_V2DF_V2DF_INT, + V16SF_FTYPE_V16SF_INT_V16SF_HI_INT, V8DF_FTYPE_V8DF_INT_V8DF_QI_INT, + V4SF_FTYPE_V4SF_V4SF_INT_V4SF_QI_INT, + V2DF_FTYPE_V2DF_V2DF_INT_V2DF_QI_INT, V8DI_FTYPE_V8DI_SI_V8DI_V8DI, + V16SF_FTYPE_V16SF_PCFLOAT_V16SI_HI_INT, + V16SF_FTYPE_V16SF_PCFLOAT_V8DI_HI_INT, + V8DF_FTYPE_V8DF_PCDOUBLE_V8SI_QI_INT, + V8DF_FTYPE_V8DF_PCDOUBLE_V16SI_QI_INT, + V8SF_FTYPE_V8SF_PCFLOAT_V8DI_QI_INT, + V8DF_FTYPE_V8DF_PCDOUBLE_V8DI_QI_INT, + V16SI_FTYPE_V16SI_PCINT_V16SI_HI_INT, + V16SI_FTYPE_V16SI_PCINT_V8DI_HI_INT, + V8DI_FTYPE_V8DI_PCINT64_V8SI_QI_INT, + V8DI_FTYPE_V8DI_PCINT64_V16SI_QI_INT, + V8SI_FTYPE_V8SI_PCINT_V8DI_QI_INT, + V8DI_FTYPE_V8DI_PCINT64_V8DI_QI_INT, + VOID_FTYPE_PFLOAT_HI_V16SI_V16SF_INT, + VOID_FTYPE_PDOUBLE_QI_V8SI_V8DF_INT, + VOID_FTYPE_PFLOAT_QI_V8DI_V8SF_INT, + VOID_FTYPE_PDOUBLE_QI_V8DI_V8DF_INT, + VOID_FTYPE_PINT_HI_V16SI_V16SI_INT, + VOID_FTYPE_PLONGLONG_QI_V8SI_V8DI_INT, + VOID_FTYPE_PINT_QI_V8DI_V8SI_INT, + VOID_FTYPE_PLONGLONG_QI_V8DI_V8DI_INT, + VOID_FTYPE_HI_V16SI_PCINT_INT_INT, VOID_FTYPE_QI_V8DI_PCINT_INT_INT. + (ALIAS): Add DEF_FUNCTION_TYPE_ALIAS (V16SI_FTYPE_V8DF_V8DF, ROUND). + * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_ADDPD512, + IX86_BUILTIN_ADDPS512, IX86_BUILTIN_ADDSD_MASK, + IX86_BUILTIN_ADDSS_MASK, IX86_BUILTIN_ALIGND512, + IX86_BUILTIN_ALIGNQ512, IX86_BUILTIN_BLENDMD512, + IX86_BUILTIN_BLENDMPD512, IX86_BUILTIN_BLENDMPS512, + IX86_BUILTIN_BLENDMQ512, IX86_BUILTIN_BROADCASTF32X4_512, + IX86_BUILTIN_BROADCASTF64X4_512, IX86_BUILTIN_BROADCASTI32X4_512, + IX86_BUILTIN_BROADCASTI64X4_512, IX86_BUILTIN_BROADCASTSD512, + IX86_BUILTIN_BROADCASTSS512, IX86_BUILTIN_CMPD512, + IX86_BUILTIN_CMPPD512, IX86_BUILTIN_CMPPS512, IX86_BUILTIN_CMPQ512, + IX86_BUILTIN_CMPSD_MASK, IX86_BUILTIN_CMPSS_MASK, IX86_BUILTIN_COMIDF, + IX86_BUILTIN_COMISF, IX86_BUILTIN_COMPRESSPD512, + IX86_BUILTIN_COMPRESSPDSTORE512, IX86_BUILTIN_COMPRESSPS512, + IX86_BUILTIN_COMPRESSPSSTORE512, IX86_BUILTIN_CVTDQ2PD512, + IX86_BUILTIN_CVTDQ2PS512, IX86_BUILTIN_CVTPD2DQ512, + IX86_BUILTIN_CVTPD2PS512, IX86_BUILTIN_CVTPD2UDQ512, + IX86_BUILTIN_CVTPH2PS512, IX86_BUILTIN_CVTPS2DQ512, + IX86_BUILTIN_CVTPS2PD512, IX86_BUILTIN_CVTPS2PH512, + IX86_BUILTIN_CVTPS2UDQ512, IX86_BUILTIN_CVTSD2SS_MASK, + IX86_BUILTIN_CVTSI2SD64, IX86_BUILTIN_CVTSI2SS32, + IX86_BUILTIN_CVTSI2SS64, IX86_BUILTIN_CVTSS2SD_MASK, + IX86_BUILTIN_CVTTPD2DQ512, IX86_BUILTIN_CVTTPD2UDQ512, + IX86_BUILTIN_CVTTPS2DQ512, IX86_BUILTIN_CVTTPS2UDQ512, + IX86_BUILTIN_CVTUDQ2PD512, IX86_BUILTIN_CVTUDQ2PS512, + IX86_BUILTIN_CVTUSI2SD32, IX86_BUILTIN_CVTUSI2SD64, + IX86_BUILTIN_CVTUSI2SS32, IX86_BUILTIN_CVTUSI2SS64, + IX86_BUILTIN_DIVPD512, IX86_BUILTIN_DIVPS512, IX86_BUILTIN_DIVSD_MASK, + IX86_BUILTIN_DIVSS_MASK, IX86_BUILTIN_EXPANDPD512, + IX86_BUILTIN_EXPANDPD512Z, IX86_BUILTIN_EXPANDPDLOAD512, + IX86_BUILTIN_EXPANDPDLOAD512Z, IX86_BUILTIN_EXPANDPS512, + IX86_BUILTIN_EXPANDPS512Z, IX86_BUILTIN_EXPANDPSLOAD512, + IX86_BUILTIN_EXPANDPSLOAD512Z, IX86_BUILTIN_EXTRACTF32X4, + IX86_BUILTIN_EXTRACTF64X4, IX86_BUILTIN_EXTRACTI32X4, + IX86_BUILTIN_EXTRACTI64X4, IX86_BUILTIN_FIXUPIMMPD512_MASK, + IX86_BUILTIN_FIXUPIMMPD512_MASKZ, IX86_BUILTIN_FIXUPIMMPS512_MASK, + IX86_BUILTIN_FIXUPIMMPS512_MASKZ, IX86_BUILTIN_FIXUPIMMSD128_MASK, + IX86_BUILTIN_FIXUPIMMSD128_MASKZ, IX86_BUILTIN_FIXUPIMMSS128_MASK, + IX86_BUILTIN_FIXUPIMMSS128_MASKZ, IX86_BUILTIN_GETEXPPD512, + IX86_BUILTIN_GETEXPPS512, IX86_BUILTIN_GETEXPSD128, + IX86_BUILTIN_GETEXPSS128, IX86_BUILTIN_GETMANTPD512, + IX86_BUILTIN_GETMANTPS512, IX86_BUILTIN_GETMANTSD128, + IX86_BUILTIN_GETMANTSS128, IX86_BUILTIN_INSERTF32X4, + IX86_BUILTIN_INSERTF64X4, IX86_BUILTIN_INSERTI32X4, + IX86_BUILTIN_INSERTI64X4, IX86_BUILTIN_LOADAPD512, + IX86_BUILTIN_LOADAPS512, IX86_BUILTIN_LOADDQUDI512, + IX86_BUILTIN_LOADDQUSI512, IX86_BUILTIN_LOADSD, IX86_BUILTIN_LOADSS, + IX86_BUILTIN_LOADUPD512, IX86_BUILTIN_LOADUPS512, + IX86_BUILTIN_MAXPD512, IX86_BUILTIN_MAXPS512, IX86_BUILTIN_MAXSD_MASK, + IX86_BUILTIN_MAXSS_MASK, IX86_BUILTIN_MINPD512, IX86_BUILTIN_MINPS512, + IX86_BUILTIN_MINSD_MASK, IX86_BUILTIN_MINSS_MASK, + IX86_BUILTIN_MOVAPD512, IX86_BUILTIN_MOVAPS512, + IX86_BUILTIN_MOVDDUP512, IX86_BUILTIN_MOVDQA32LOAD512, + IX86_BUILTIN_MOVDQA32STORE512, IX86_BUILTIN_MOVDQA32_512, + IX86_BUILTIN_MOVDQA64LOAD512, IX86_BUILTIN_MOVDQA64STORE512, + IX86_BUILTIN_MOVDQA64_512, IX86_BUILTIN_MOVESD, IX86_BUILTIN_MOVESS, + IX86_BUILTIN_MOVNTDQ512, IX86_BUILTIN_MOVNTPD512, + IX86_BUILTIN_MOVNTPS512, IX86_BUILTIN_MOVSHDUP512, + IX86_BUILTIN_MOVSLDUP512, IX86_BUILTIN_MULPD512, + IX86_BUILTIN_MULPS512, IX86_BUILTIN_MULSD_MASK, + IX86_BUILTIN_MULSS_MASK, IX86_BUILTIN_PABSD512, IX86_BUILTIN_PABSQ512, + IX86_BUILTIN_PADDD512, IX86_BUILTIN_PADDQ512, IX86_BUILTIN_PANDD512, + IX86_BUILTIN_PANDND512, IX86_BUILTIN_PANDNQ512, IX86_BUILTIN_PANDQ512, + IX86_BUILTIN_PBROADCASTD512, IX86_BUILTIN_PBROADCASTD512_GPR, + IX86_BUILTIN_PBROADCASTMB512, IX86_BUILTIN_PBROADCASTMW512, + IX86_BUILTIN_PBROADCASTQ512, IX86_BUILTIN_PBROADCASTQ512_GPR, + IX86_BUILTIN_PBROADCASTQ512_MEM, IX86_BUILTIN_PCMPEQD512_MASK, + IX86_BUILTIN_PCMPEQQ512_MASK, IX86_BUILTIN_PCMPGTD512_MASK, + IX86_BUILTIN_PCMPGTQ512_MASK, IX86_BUILTIN_PCOMPRESSD512, + IX86_BUILTIN_PCOMPRESSDSTORE512, IX86_BUILTIN_PCOMPRESSQ512, + IX86_BUILTIN_PCOMPRESSQSTORE512, IX86_BUILTIN_PEXPANDD512, + IX86_BUILTIN_PEXPANDD512Z, IX86_BUILTIN_PEXPANDDLOAD512, + IX86_BUILTIN_PEXPANDDLOAD512Z, IX86_BUILTIN_PEXPANDQ512, + IX86_BUILTIN_PEXPANDQ512Z, IX86_BUILTIN_PEXPANDQLOAD512, + IX86_BUILTIN_PEXPANDQLOAD512Z, IX86_BUILTIN_PMAXSD512, + IX86_BUILTIN_PMAXSQ512, IX86_BUILTIN_PMAXUD512, + IX86_BUILTIN_PMAXUQ512, IX86_BUILTIN_PMINSD512, + IX86_BUILTIN_PMINSQ512, IX86_BUILTIN_PMINUD512, + IX86_BUILTIN_PMINUQ512, IX86_BUILTIN_PMOVDB512, + IX86_BUILTIN_PMOVDW512, IX86_BUILTIN_PMOVQB512, + IX86_BUILTIN_PMOVQD512, IX86_BUILTIN_PMOVQW512, + IX86_BUILTIN_PMOVSDB512, IX86_BUILTIN_PMOVSDW512, + IX86_BUILTIN_PMOVSQB512, IX86_BUILTIN_PMOVSQD512, + IX86_BUILTIN_PMOVSQW512, IX86_BUILTIN_PMOVSXBD512, + IX86_BUILTIN_PMOVSXBQ512, IX86_BUILTIN_PMOVSXDQ512, + IX86_BUILTIN_PMOVSXWD512, IX86_BUILTIN_PMOVSXWQ512, + IX86_BUILTIN_PMOVUSDB512, IX86_BUILTIN_PMOVUSDW512, + IX86_BUILTIN_PMOVUSQB512, IX86_BUILTIN_PMOVUSQD512, + IX86_BUILTIN_PMOVUSQW512, IX86_BUILTIN_PMOVZXBD512, + IX86_BUILTIN_PMOVZXBQ512, IX86_BUILTIN_PMOVZXDQ512, + IX86_BUILTIN_PMOVZXWD512, IX86_BUILTIN_PMOVZXWQ512, + IX86_BUILTIN_PMULDQ512, IX86_BUILTIN_PMULLD512, + IX86_BUILTIN_PMULUDQ512, IX86_BUILTIN_PORD512, IX86_BUILTIN_PORQ512, + IX86_BUILTIN_PROLD512, IX86_BUILTIN_PROLQ512, IX86_BUILTIN_PROLVD512, + IX86_BUILTIN_PROLVQ512, IX86_BUILTIN_PRORD512, IX86_BUILTIN_PRORQ512, + IX86_BUILTIN_PRORVD512, IX86_BUILTIN_PRORVQ512, + IX86_BUILTIN_PSHUFD512, IX86_BUILTIN_PSLLD512, IX86_BUILTIN_PSLLDI512, + IX86_BUILTIN_PSLLQ512, IX86_BUILTIN_PSLLQI512, + IX86_BUILTIN_PSLLVV16SI, IX86_BUILTIN_PSLLVV8DI, + IX86_BUILTIN_PSRAD512, IX86_BUILTIN_PSRADI512, IX86_BUILTIN_PSRAQ512, + IX86_BUILTIN_PSRAQI512, IX86_BUILTIN_PSRAVV16SI, + IX86_BUILTIN_PSRAVV8DI, IX86_BUILTIN_PSRLD512, IX86_BUILTIN_PSRLDI512, + IX86_BUILTIN_PSRLQ512, IX86_BUILTIN_PSRLQI512, + IX86_BUILTIN_PSRLVV16SI, IX86_BUILTIN_PSRLVV8DI, + IX86_BUILTIN_PSUBD512, IX86_BUILTIN_PSUBQ512, IX86_BUILTIN_PTESTMD512, + IX86_BUILTIN_PTESTMQ512, IX86_BUILTIN_PTESTNMD512, + IX86_BUILTIN_PTESTNMQ512, IX86_BUILTIN_PUNPCKHDQ512, + IX86_BUILTIN_PUNPCKHQDQ512, IX86_BUILTIN_PUNPCKLDQ512, + IX86_BUILTIN_PUNPCKLQDQ512, IX86_BUILTIN_PXORD512, + IX86_BUILTIN_PXORQ512, IX86_BUILTIN_RCP14PD512, + IX86_BUILTIN_RCP14PS512, IX86_BUILTIN_RCP14SD, IX86_BUILTIN_RCP14SS, + IX86_BUILTIN_RNDSCALEPD, IX86_BUILTIN_RNDSCALEPS, + IX86_BUILTIN_RNDSCALESD, IX86_BUILTIN_RNDSCALESS, + IX86_BUILTIN_RSQRT14PD512, IX86_BUILTIN_RSQRT14PS512, + IX86_BUILTIN_RSQRT14SD, IX86_BUILTIN_RSQRT14SS, + IX86_BUILTIN_SCALEFPD512, IX86_BUILTIN_SCALEFPS512, + IX86_BUILTIN_SCALEFSD, IX86_BUILTIN_SCALEFSS, IX86_BUILTIN_SHUFPD512, + IX86_BUILTIN_SHUFPS512, IX86_BUILTIN_SHUF_F32x4, + IX86_BUILTIN_SHUF_F64x2, IX86_BUILTIN_SHUF_I32x4, + IX86_BUILTIN_SHUF_I64x2, + IX86_BUILTIN_SQRTPD512_MASK, IX86_BUILTIN_SQRTPS512_MASK, + IX86_BUILTIN_SQRTSD_MASK, + IX86_BUILTIN_SQRTSS_MASK, IX86_BUILTIN_STOREAPD512, + IX86_BUILTIN_STOREAPS512, IX86_BUILTIN_STOREDQUDI512, + IX86_BUILTIN_STOREDQUSI512, IX86_BUILTIN_STORESD, + IX86_BUILTIN_STORESS, IX86_BUILTIN_STOREUPD512, + IX86_BUILTIN_STOREUPS512, IX86_BUILTIN_SUBPD512, + IX86_BUILTIN_SUBPS512, IX86_BUILTIN_SUBSD_MASK, + IX86_BUILTIN_SUBSS_MASK, IX86_BUILTIN_UCMPD512, IX86_BUILTIN_UCMPQ512, + IX86_BUILTIN_UNPCKHPD512, IX86_BUILTIN_UNPCKHPS512, + IX86_BUILTIN_UNPCKLPD512, IX86_BUILTIN_UNPCKLPS512, + IX86_BUILTIN_VCVTSD2SI32, IX86_BUILTIN_VCVTSD2SI64, + IX86_BUILTIN_VCVTSD2USI32, IX86_BUILTIN_VCVTSD2USI64, + IX86_BUILTIN_VCVTSS2SI32, IX86_BUILTIN_VCVTSS2SI64, + IX86_BUILTIN_VCVTSS2USI32, IX86_BUILTIN_VCVTSS2USI64, + IX86_BUILTIN_VCVTTSD2SI32, IX86_BUILTIN_VCVTTSD2SI64, + IX86_BUILTIN_VCVTTSD2USI32, IX86_BUILTIN_VCVTTSD2USI64, + IX86_BUILTIN_VCVTTSS2SI32, IX86_BUILTIN_VCVTTSS2SI64, + IX86_BUILTIN_VCVTTSS2USI32, IX86_BUILTIN_VCVTTSS2USI64, + IX86_BUILTIN_VFMADDPD512_MASK, IX86_BUILTIN_VFMADDPD512_MASK3, + IX86_BUILTIN_VFMADDPD512_MASKZ, IX86_BUILTIN_VFMADDPS512_MASK, + IX86_BUILTIN_VFMADDPS512_MASK3, IX86_BUILTIN_VFMADDPS512_MASKZ, + IX86_BUILTIN_VFMADDSD3_MASK, IX86_BUILTIN_VFMADDSD3_MASK3, + IX86_BUILTIN_VFMADDSD3_MASKZ, IX86_BUILTIN_VFMADDSS3_MASK, + IX86_BUILTIN_VFMADDSS3_MASK3, IX86_BUILTIN_VFMADDSS3_MASKZ, + IX86_BUILTIN_VFMADDSUBPD512_MASK, IX86_BUILTIN_VFMADDSUBPD512_MASK3, + IX86_BUILTIN_VFMADDSUBPD512_MASKZ, IX86_BUILTIN_VFMADDSUBPS512_MASK, + IX86_BUILTIN_VFMADDSUBPS512_MASK3, IX86_BUILTIN_VFMADDSUBPS512_MASKZ, + IX86_BUILTIN_VFMSUBADDPD512_MASK3, IX86_BUILTIN_VFMSUBADDPS512_MASK3, + IX86_BUILTIN_VFMSUBPD512_MASK3, IX86_BUILTIN_VFMSUBPS512_MASK3, + IX86_BUILTIN_VFMSUBSD3_MASK3, IX86_BUILTIN_VFMSUBSS3_MASK3, + IX86_BUILTIN_VFNMADDPD512_MASK, IX86_BUILTIN_VFNMADDPS512_MASK, + IX86_BUILTIN_VFNMSUBPD512_MASK, IX86_BUILTIN_VFNMSUBPD512_MASK3, + IX86_BUILTIN_VFNMSUBPS512_MASK, IX86_BUILTIN_VFNMSUBPS512_MASK3, + IX86_BUILTIN_VPCLZCNTD512, IX86_BUILTIN_VPCLZCNTQ512, + IX86_BUILTIN_VPCONFLICTD512, IX86_BUILTIN_VPCONFLICTQ512, + IX86_BUILTIN_VPERMDF512, IX86_BUILTIN_VPERMDI512, + IX86_BUILTIN_VPERMI2VARD512, IX86_BUILTIN_VPERMI2VARPD512, + IX86_BUILTIN_VPERMI2VARPS512, IX86_BUILTIN_VPERMI2VARQ512, + IX86_BUILTIN_VPERMILPD512, IX86_BUILTIN_VPERMILPS512, + IX86_BUILTIN_VPERMILVARPD512, IX86_BUILTIN_VPERMILVARPS512, + IX86_BUILTIN_VPERMT2VARD512, IX86_BUILTIN_VPERMT2VARD512_MASKZ, + IX86_BUILTIN_VPERMT2VARPD512, IX86_BUILTIN_VPERMT2VARPD512_MASKZ, + IX86_BUILTIN_VPERMT2VARPS512, IX86_BUILTIN_VPERMT2VARPS512_MASKZ, + IX86_BUILTIN_VPERMT2VARQ512, IX86_BUILTIN_VPERMT2VARQ512_MASKZ, + IX86_BUILTIN_VPERMVARDF512, IX86_BUILTIN_VPERMVARDI512, + IX86_BUILTIN_VPERMVARSF512, IX86_BUILTIN_VPERMVARSI512, + IX86_BUILTIN_VTERNLOGD512_MASK, IX86_BUILTIN_VTERNLOGD512_MASKZ, + IX86_BUILTIN_VTERNLOGQ512_MASK, IX86_BUILTIN_VTERNLOGQ512_MASKZ, + IX86_BUILTIN_KAND16, IX86_BUILTIN_KANDN16, IX86_BUILTIN_KNOT16, + IX86_BUILTIN_KOR16, IX86_BUILTIN_KORTESTC16, IX86_BUILTIN_KORTESTZ16, + IX86_BUILTIN_KUNPCKBW, IX86_BUILTIN_KXNOR16, IX86_BUILTIN_KXOR16, + IX86_BUILTIN_GATHER3SIV8DI, + IX86_BUILTIN_SCATTERDIV16SF, IX86_BUILTIN_SCATTERDIV16SI, + IX86_BUILTIN_SCATTERDIV8DF, IX86_BUILTIN_SCATTERDIV8DI, + IX86_BUILTIN_SCATTERSIV16SF, IX86_BUILTIN_SCATTERSIV16SI, + IX86_BUILTIN_SCATTERSIV8DF, IX86_BUILTIN_SCATTERSIV8DI, + IX86_BUILTIN_GATHERPFDPS, IX86_BUILTIN_GATHERPFQPS, + IX86_BUILTIN_SCATTERPFDPS, IX86_BUILTIN_SCATTERPFQPS, + IX86_BUILTIN_EXP2PD_MASK, IX86_BUILTIN_EXP2PS_MASK, + IX86_BUILTIN_RCP28PD, IX86_BUILTIN_RCP28PS, + IX86_BUILTIN_RSQRT28PD, IX86_BUILTIN_RSQRT28PS. + (bdesc_special_args): Add __builtin_ia32_compressstoresf512_mask, + __builtin_ia32_compressstoresi512_mask, + __builtin_ia32_compressstoredf512_mask, + __builtin_ia32_compressstoredi512_mask, + __builtin_ia32_expandloadsf512_mask, + __builtin_ia32_expandloadsf512_maskz, + __builtin_ia32_expandloadsi512_mask, + __builtin_ia32_expandloadsi512_maskz, + __builtin_ia32_expandloaddf512_mask, + __builtin_ia32_expandloaddf512_maskz, + __builtin_ia32_expandloaddi512_mask, + __builtin_ia32_expandloaddi512_maskz, + __builtin_ia32_loaddqusi512_mask, __builtin_ia32_loaddqudi512_mask, + __builtin_ia32_loadsd_mask, __builtin_ia32_loadss_mask, + __builtin_ia32_loadupd512_mask, __builtin_ia32_loadups512_mask, + __builtin_ia32_loadaps512_mask, __builtin_ia32_movdqa32load512_mask, + __builtin_ia32_loadapd512_mask, __builtin_ia32_movdqa64load512_mask, + __builtin_ia32_movntps512, __builtin_ia32_movntpd512, + __builtin_ia32_movntdq512, __builtin_ia32_storedqusi512_mask, + __builtin_ia32_storedqudi512_mask, __builtin_ia32_storesd_mask, + __builtin_ia32_storess_mask, __builtin_ia32_storeupd512_mask, + __builtin_ia32_storeups512_mask, __builtin_ia32_storeaps512_mask, + __builtin_ia32_movdqa32store512_mask, __builtin_ia32_storeapd512_mask, + __builtin_ia32_movdqa64store512_mask, __builtin_ia32_alignd512_mask, + __builtin_ia32_alignq512_mask, __builtin_ia32_blendmd_512_mask, + __builtin_ia32_blendmpd_512_mask, __builtin_ia32_blendmps_512_mask, + __builtin_ia32_blendmq_512_mask, __builtin_ia32_broadcastf32x4_512, + __builtin_ia32_broadcastf64x4_512, __builtin_ia32_broadcasti32x4_512, + __builtin_ia32_broadcasti64x4_512, __builtin_ia32_broadcastsd512, + __builtin_ia32_broadcastss512, __builtin_ia32_cmpd512_mask, + __builtin_ia32_cmpq512_mask, __builtin_ia32_compressdf512_mask, + __builtin_ia32_compresssf512_mask, __builtin_ia32_cvtdq2pd512_mask, + __builtin_ia32_vcvtps2ph512_mask, __builtin_ia32_cvtudq2pd512_mask, + __builtin_ia32_cvtusi2sd32, __builtin_ia32_expanddf512_mask, + __builtin_ia32_expanddf512_maskz, __builtin_ia32_expandsf512_mask, + __builtin_ia32_expandsf512_maskz, __builtin_ia32_extractf32x4_mask, + __builtin_ia32_extractf64x4_mask, __builtin_ia32_extracti32x4_mask, + __builtin_ia32_extracti64x4_mask, __builtin_ia32_insertf32x4_mask, + __builtin_ia32_insertf64x4_mask, __builtin_ia32_inserti32x4_mask, + __builtin_ia32_inserti64x4_mask, __builtin_ia32_movapd512_mask, + __builtin_ia32_movaps512_mask, __builtin_ia32_movddup512_mask, + __builtin_ia32_movdqa32_512_mask, __builtin_ia32_movdqa64_512_mask, + __builtin_ia32_movesd_mask, __builtin_ia32_movess_mask, + __builtin_ia32_movshdup512_mask, __builtin_ia32_movsldup512_mask, + __builtin_ia32_pabsd512_mask, __builtin_ia32_pabsq512_mask, + __builtin_ia32_paddd512_mask, __builtin_ia32_paddq512_mask, + __builtin_ia32_pandd512_mask, __builtin_ia32_pandnd512_mask, + __builtin_ia32_pandnq512_mask, __builtin_ia32_pandq512_mask, + __builtin_ia32_pbroadcastd512, __builtin_ia32_pbroadcastd512_gpr_mask, + __builtin_ia32_broadcastmb512, __builtin_ia32_broadcastmw512, + __builtin_ia32_pbroadcastq512, __builtin_ia32_pbroadcastq512_gpr_mask, + __builtin_ia32_pbroadcastq512_mem_mask, + __builtin_ia32_pcmpeqd512_mask, __builtin_ia32_pcmpeqq512_mask, + __builtin_ia32_pcmpgtd512_mask, __builtin_ia32_pcmpgtq512_mask, + __builtin_ia32_compresssi512_mask, __builtin_ia32_compressdi512_mask, + __builtin_ia32_expandsi512_mask, __builtin_ia32_expandsi512_maskz, + __builtin_ia32_expanddi512_mask, __builtin_ia32_expanddi512_maskz, + __builtin_ia32_pmaxsd512_mask, __builtin_ia32_pmaxsq512_mask, + __builtin_ia32_pmaxud512_mask, __builtin_ia32_pmaxuq512_mask, + __builtin_ia32_pminsd512_mask, __builtin_ia32_pminsq512_mask, + __builtin_ia32_pminud512_mask, __builtin_ia32_pminuq512_mask, + __builtin_ia32_pmovdb512_mask, __builtin_ia32_pmovdw512_mask, + __builtin_ia32_pmovqb512_mask, __builtin_ia32_pmovqd512_mask, + __builtin_ia32_pmovqw512_mask, __builtin_ia32_pmovsdb512_mask, + __builtin_ia32_pmovsdw512_mask, __builtin_ia32_pmovsqb512_mask, + __builtin_ia32_pmovsqd512_mask, __builtin_ia32_pmovsqw512_mask, + __builtin_ia32_pmovsxbd512_mask, __builtin_ia32_pmovsxbq512_mask, + __builtin_ia32_pmovsxdq512_mask, __builtin_ia32_pmovsxwd512_mask, + __builtin_ia32_pmovsxwq512_mask, __builtin_ia32_pmovusdb512_mask, + __builtin_ia32_pmovusdw512_mask, __builtin_ia32_pmovusqb512_mask, + __builtin_ia32_pmovusqd512_mask, __builtin_ia32_pmovusqw512_mask, + __builtin_ia32_pmovzxbd512_mask, __builtin_ia32_pmovzxbq512_mask, + __builtin_ia32_pmovzxdq512_mask, __builtin_ia32_pmovzxwd512_mask, + __builtin_ia32_pmovzxwq512_mask, __builtin_ia32_pmuldq512_mask, + __builtin_ia32_pmulld512_mask, __builtin_ia32_pmuludq512_mask, + __builtin_ia32_pord512_mask, __builtin_ia32_porq512_mask, + __builtin_ia32_prold512_mask, __builtin_ia32_prolq512_mask, + __builtin_ia32_prolvd512_mask, __builtin_ia32_prolvq512_mask, + __builtin_ia32_prord512_mask, __builtin_ia32_prorq512_mask, + __builtin_ia32_prorvd512_mask, __builtin_ia32_prorvq512_mask, + __builtin_ia32_pshufd512_mask, __builtin_ia32_pslld512_mask, + __builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask, + __builtin_ia32_psllqi512_mask, __builtin_ia32_psllv16si_mask, + __builtin_ia32_psllv8di_mask, __builtin_ia32_psrad512_mask, + __builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask, + __builtin_ia32_psraqi512_mask, __builtin_ia32_psrav16si_mask, + __builtin_ia32_psrav8di_mask, __builtin_ia32_psrld512_mask, + __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask, + __builtin_ia32_psrlqi512_mask, __builtin_ia32_psrlv16si_mask, + __builtin_ia32_psrlv8di_mask, __builtin_ia32_psubd512_mask, + __builtin_ia32_psubq512_mask, __builtin_ia32_ptestmd512, + __builtin_ia32_ptestmq512, __builtin_ia32_ptestnmd512, + __builtin_ia32_ptestnmq512, __builtin_ia32_punpckhdq512_mask, + __builtin_ia32_punpckhqdq512_mask, __builtin_ia32_punpckldq512_mask, + __builtin_ia32_punpcklqdq512_mask, __builtin_ia32_pxord512_mask, + __builtin_ia32_pxorq512_mask, __builtin_ia32_rcp14pd512_mask, + __builtin_ia32_rcp14ps512_mask, __builtin_ia32_rcp14sd_mask, + __builtin_ia32_rcp14ss_mask, __builtin_ia32_rsqrt14pd512_mask, + __builtin_ia32_rsqrt14ps512_mask, __builtin_ia32_rsqrt14sd_mask, + __builtin_ia32_rsqrt14ss_mask, __builtin_ia32_shufpd512_mask, + __builtin_ia32_shufps512_mask, __builtin_ia32_shuf_f32x4_mask, + __builtin_ia32_shuf_f64x2_mask, __builtin_ia32_shuf_i32x4_mask, + __builtin_ia32_shuf_i64x2_mask, __builtin_ia32_ucmpd512_mask, + __builtin_ia32_ucmpq512_mask, __builtin_ia32_unpckhpd512_mask, + __builtin_ia32_unpckhps512_mask, __builtin_ia32_unpcklpd512_mask, + __builtin_ia32_unpcklps512_mask, __builtin_ia32_vplzcntd_512_mask, + __builtin_ia32_vplzcntq_512_mask, + __builtin_ia32_vpconflictsi_512_mask, + __builtin_ia32_vpconflictdi_512_mask, __builtin_ia32_permdf512_mask, + __builtin_ia32_permdi512_mask, __builtin_ia32_vpermi2vard512_mask, + __builtin_ia32_vpermi2varpd512_mask, + __builtin_ia32_vpermi2varps512_mask, + __builtin_ia32_vpermi2varq512_mask, __builtin_ia32_vpermilpd512_mask, + __builtin_ia32_vpermilps512_mask, __builtin_ia32_vpermilvarpd512_mask, + __builtin_ia32_vpermilvarps512_mask, + __builtin_ia32_vpermt2vard512_mask, + __builtin_ia32_vpermt2vard512_maskz, + __builtin_ia32_vpermt2varpd512_mask, + __builtin_ia32_vpermt2varpd512_maskz, + __builtin_ia32_vpermt2varps512_mask, + __builtin_ia32_vpermt2varps512_maskz, + __builtin_ia32_vpermt2varq512_mask, + __builtin_ia32_vpermt2varq512_maskz, __builtin_ia32_permvardf512_mask, + __builtin_ia32_permvardi512_mask, __builtin_ia32_permvarsf512_mask, + __builtin_ia32_permvarsi512_mask, __builtin_ia32_pternlogd512_mask, + __builtin_ia32_pternlogd512_maskz, __builtin_ia32_pternlogq512_mask, + __builtin_ia32_pternlogq512_maskz, __builtin_ia32_copysignps512, + __builtin_ia32_copysignpd512, __builtin_ia32_sqrtpd512, + __builtin_ia32_sqrtps512, __builtin_ia32_exp2ps, + __builtin_ia32_roundpd_az_vec_pack_sfix512, + __builtin_ia32_floorpd_vec_pack_sfix512, + __builtin_ia32_ceilpd_vec_pack_sfix512, __builtin_ia32_kandhi, + __builtin_ia32_kandnhi, __builtin_ia32_knothi, __builtin_ia32_korhi, + __builtin_ia32_kortestchi, __builtin_ia32_kortestzhi, + __builtin_ia32_kunpckhi, __builtin_ia32_kxnorhi, + __builtin_ia32_kxorhi, __builtin_ia32_addpd512_mask, + __builtin_ia32_addps512_mask, __builtin_ia32_addsd_mask, + __builtin_ia32_addss_mask, __builtin_ia32_cmppd512_mask, + __builtin_ia32_cmpps512_mask, __builtin_ia32_cmpsd_mask, + __builtin_ia32_cmpss_mask, __builtin_ia32_vcomisd, + __builtin_ia32_vcomiss, __builtin_ia32_cvtdq2ps512_mask, + __builtin_ia32_cvtpd2dq512_mask, __builtin_ia32_cvtpd2ps512_mask, + __builtin_ia32_cvtpd2udq512_mask, __builtin_ia32_vcvtph2ps512_mask, + __builtin_ia32_cvtps2dq512_mask, __builtin_ia32_cvtps2pd512_mask, + __builtin_ia32_cvtps2udq512_mask, __builtin_ia32_cvtsd2ss_mask, + __builtin_ia32_cvtsi2sd64, __builtin_ia32_cvtsi2ss32, + __builtin_ia32_cvtsi2ss64, __builtin_ia32_cvtss2sd_mask, + __builtin_ia32_cvttpd2dq512_mask, __builtin_ia32_cvttpd2udq512_mask, + __builtin_ia32_cvttps2dq512_mask, __builtin_ia32_cvttps2udq512_mask, + __builtin_ia32_cvtudq2ps512_mask, __builtin_ia32_cvtusi2sd64, + __builtin_ia32_cvtusi2ss32, __builtin_ia32_cvtusi2ss64, + __builtin_ia32_divpd512_mask, __builtin_ia32_divps512_mask, + __builtin_ia32_divsd_mask, __builtin_ia32_divss_mask, + __builtin_ia32_fixupimmpd512_mask, __builtin_ia32_fixupimmpd512_maskz, + __builtin_ia32_fixupimmps512_mask, __builtin_ia32_fixupimmps512_maskz, + __builtin_ia32_fixupimmsd_mask, __builtin_ia32_fixupimmsd_maskz, + __builtin_ia32_fixupimmss_mask, __builtin_ia32_fixupimmss_maskz, + __builtin_ia32_getexppd512_mask, __builtin_ia32_getexpps512_mask, + __builtin_ia32_getexpsd128_mask, __builtin_ia32_getexpss128_mask, + __builtin_ia32_getmantpd512_mask, __builtin_ia32_getmantps512_mask, + __builtin_ia32_getmantsd_mask, __builtin_ia32_getmantss_mask, + __builtin_ia32_maxpd512_mask, __builtin_ia32_maxps512_mask, + __builtin_ia32_maxsd_mask, __builtin_ia32_maxss_mask, + __builtin_ia32_minpd512_mask, __builtin_ia32_minps512_mask, + __builtin_ia32_minsd_mask, __builtin_ia32_minss_mask, + __builtin_ia32_mulpd512_mask, __builtin_ia32_mulps512_mask, + __builtin_ia32_mulsd_mask, __builtin_ia32_mulss_mask, + __builtin_ia32_rndscalepd_mask, __builtin_ia32_rndscaleps_mask, + __builtin_ia32_rndscalesd_mask, __builtin_ia32_rndscaless_mask, + __builtin_ia32_scalefpd512_mask, __builtin_ia32_scalefps512_mask, + __builtin_ia32_scalefsd_mask, __builtin_ia32_scalefss_mask, + __builtin_ia32_sqrtpd512_mask, __builtin_ia32_sqrtps512_mask, + __builtin_ia32_sqrtsd_mask, __builtin_ia32_sqrtss_mask, + __builtin_ia32_subpd512_mask, __builtin_ia32_subps512_mask, + __builtin_ia32_subsd_mask, __builtin_ia32_subss_mask, + __builtin_ia32_vcvtsd2si32, __builtin_ia32_vcvtsd2si64, + __builtin_ia32_vcvtsd2usi32, __builtin_ia32_vcvtsd2usi64, + __builtin_ia32_vcvtss2si32, __builtin_ia32_vcvtss2si64, + __builtin_ia32_vcvtss2usi32, __builtin_ia32_vcvtss2usi64, + __builtin_ia32_vcvttsd2si32, __builtin_ia32_vcvttsd2si64, + __builtin_ia32_vcvttsd2usi32, __builtin_ia32_vcvttsd2usi64, + __builtin_ia32_vcvttss2si32, __builtin_ia32_vcvttss2si64, + __builtin_ia32_vcvttss2usi32, __builtin_ia32_vcvttss2usi64, + __builtin_ia32_vfmaddpd512_mask, __builtin_ia32_vfmaddpd512_mask3, + __builtin_ia32_vfmaddpd512_maskz, __builtin_ia32_vfmaddps512_mask, + __builtin_ia32_vfmaddps512_mask3, __builtin_ia32_vfmaddps512_maskz, + __builtin_ia32_vfmaddsd3_mask, __builtin_ia32_vfmaddsd3_mask3, + __builtin_ia32_vfmaddsd3_maskz, __builtin_ia32_vfmaddss3_mask, + __builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz, + __builtin_ia32_vfmaddsubpd512_mask, + __builtin_ia32_vfmaddsubpd512_mask3, + __builtin_ia32_vfmaddsubpd512_maskz, + __builtin_ia32_vfmaddsubps512_mask, + __builtin_ia32_vfmaddsubps512_mask3, + __builtin_ia32_vfmaddsubps512_maskz, + __builtin_ia32_vfmsubaddpd512_mask3, + __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, + __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, + __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, + __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, + __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, + __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_exp2pd_mask, + __builtin_ia32_exp2ps_mask, __builtin_ia32_rcp28pd_mask, + __builtin_ia32_rcp28ps_mask, __builtin_ia32_rsqrt28pd_mask, + __builtin_ia32_rsqrt28ps_mask, __builtin_ia32_gathersiv16sf, + __builtin_ia32_gathersiv8df, __builtin_ia32_gatherdiv16sf, + __builtin_ia32_gatherdiv8df, __builtin_ia32_gathersiv16si, + __builtin_ia32_gathersiv8di, __builtin_ia32_gatherdiv16si, + __builtin_ia32_gatherdiv8di, __builtin_ia32_gatheraltsiv8df , + __builtin_ia32_gatheraltdiv8sf , __builtin_ia32_gatheraltsiv8di , + __builtin_ia32_gatheraltdiv8si , __builtin_ia32_scattersiv16sf, + __builtin_ia32_scattersiv8df, __builtin_ia32_scatterdiv16sf, + __builtin_ia32_scatterdiv8df, __builtin_ia32_scattersiv16si, + __builtin_ia32_scattersiv8di, __builtin_ia32_scatterdiv16si, + __builtin_ia32_scatterdiv8di, __builtin_ia32_gatherpfdps, + __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, + __builtin_ia32_scatterpfqps. + (ix86_init_mmx_sse_builtins): Handle builtins with AVX512 embeded + rounding, builtins for AVX512 gathers/scatters. + (ix86_expand_args_builtin): Handle new functions types, add warnings + for masked builtins. + (ix86_erase_embedded_rounding): Handle patterns with embedded rounding. + (ix86_expand_sse_comi_round): Ditto. + (ix86_expand_round_builtin): Ditto. + (ix86_expand_builtin): Handle AVX512's gathers/scatters and kortest{z}. + Call ix86_expand_round_builtin. + * config/i386/immintrin.h: Add avx512fintrin.h, avx512erintrin.h, + avx512pfintrin.h, avx512cdintrin.h. + +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.c (MAX_CLASSES): Increase number of classes. + (classify_argument): Extend for 512 bit vectors. + (construct_container): Ditto. + (function_arg_advance_32): Ditto. + (function_arg_advance_64): Ditto. + (function_arg_32): Ditto. + (function_arg_64): Ditto. + (function_value_32): Ditto. + (return_in_memory_32): Ditto. + (ix86_gimplify_va_arg): Ditto. + (standard_sse_constant_p): Ditto. + (standard_sse_constant_opcode): Ditto. + (ix86_expand_vector_convert_uns_vsivsf): Ditto. + (ix86_build_const_vector): Ditto. + (ix86_build_signbit_mask): Ditto. + (ix86_expand_sse_cmp): Extend for AVX512. + (ix86_expand_sse_movcc): Ditto. + (ix86_expand_int_vcond): Ditto. + (ix86_expand_vec_perm): Ditto. + (ix86_expand_sse_unpack): Ditto. + (ix86_constant_alignment): Ditto. + (ix86_builtin_vectorized_function): Ditto. + (ix86_vectorize_builtin_gather): Ditto. + (avx_vpermilp_parallel): Ditto. + (ix86_rtx_costs): Ditto. + (ix86_expand_vector_init_duplicate): Ditto. + (ix86_expand_vector_init_concat): Ditto. + (ix86_expand_vector_init_general): Ditto. + (ix86_expand_vector_extract): Ditto. + (emit_reduc_half): Ditto. + (ix86_vector_mode_supported_p): Ditto. + (ix86_emit_swdivsf): Ditto. + (ix86_emit_swsqrtsf): Ditto. + (expand_vec_perm_1): Ditto. + (ix86_vectorize_vec_perm_const_ok): Ditto. + (ix86_expand_mul_widen_evenodd): Ditto. + (ix86_expand_sse2_mulvxdi3): Ditto. + (ix86_preferred_simd_mode): Ditto. + (ix86_autovectorize_vector_sizes): Ditto. + (ix86_expand_vec_perm_vpermi2): New. + (ix86_vector_duplicate_value): Ditto. + (IX86_BUILTIN_SQRTPD512, IX86_BUILTIN_EXP2PS, IX86_BUILTIN_SQRTPS_NR512, + IX86_BUILTIN_GATHER3ALTDIV16SF, IX86_BUILTIN_GATHER3ALTDIV16SI, + IX86_BUILTIN_GATHER3ALTSIV8DF, IX86_BUILTIN_GATHER3ALTSIV8DI, + IX86_BUILTIN_GATHER3DIV16SF, IX86_BUILTIN_GATHER3DIV16SI, + IX86_BUILTIN_GATHER3DIV8DF, IX86_BUILTIN_GATHER3DIV8DI, + IX86_BUILTIN_GATHER3SIV16SF, IX86_BUILTIN_GATHER3SIV16SI, + IX86_BUILTIN_GATHER3SIV8DF, IX86_BUILTIN_CEILPD_VEC_PACK_SFIX512, + IX86_BUILTIN_CPYSGNPS512, IX86_BUILTIN_CPYSGNPD512, + IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX512, + IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX512): Ditto. + * config/i386/sse.md (*mov_internal): Disable SSE typeless + stores vectors > 128bit (AVX*). + (_storeu): Ditto. + (_storedqu): Extend for AVX-512, disable + SSE typeless stores vectors > 128bit (AVX*). + (fixuns_trunc2): Extend for AVX-512. + (vec_pack_ufix_trunc_): Ditto. + (vec_unpacku_float_hi_v16si): New. + * tree-vect-stmts.c (vectorizable_load): Support AVX512's gathers. + * tree-vectorizer.h (MAX_VECTORIZATION_FACTOR): Extend for 512 bit + vectors. + +2013-12-31 Chung-Lin Tang + Sandra Loosemore + Based on patches from Altera Corporation + + * config.gcc (nios2-*-*): Add nios2 config targets. + * configure.ac (TLS_SECTION_ASM_FLAG): Add nios2 case. + ("$cpu_type"): Add nios2 as new cpu type. + * configure: Regenerate. + * config/nios2/nios2.c: New file. + * config/nios2/nios2.h: New file. + * config/nios2/nios2-opts.h: New file. + * config/nios2/nios2-protos.h: New file. + * config/nios2/elf.h: New file. + * config/nios2/elf.opt: New file. + * config/nios2/linux.h: New file. + * config/nios2/nios2.opt: New file. + * config/nios2/nios2.md: New file. + * config/nios2/predicates.md: New file. + * config/nios2/constraints.md: New file. + * config/nios2/t-nios2: New file. + * common/config/nios2/nios2-common.c: New file. + * doc/invoke.texi (Nios II options): Document Nios II specific + options. + * doc/md.texi (Nios II family): Document Nios II specific + constraints. + * doc/extend.texi (Function Specific Option Pragmas): Document + Nios II supported target pragma functionality. + +2013-12-30 Jakub Jelinek + + PR tree-optimization/59591 + * tree-vect-stmts.c (vectorizable_mask_load_store): Fix up handling + of modifier = NARROW masked gathers. + (permute_vec_elements): Use gimple_get_lhs instead of + gimple_assign_lhs. + +2013-12-30 Nick Clifton + Peter Bigot + + PR target/59613 + * stor-layout.c (get_mode_bounds): Use GET_MODE_PRECISION instead + of GET_MODE_BITSIZE. + +2013-12-30 Nick Clifton + + * config/msp430/msp430.c (msp430_print_operand): Rename %B to %b + and %A to %Q. Add %A, %B, %C and %D as selectors for 16-bit parts + of a 64-bit operand. + * config/msp430/msp430.md: Replace uses of %B with %b and uses of + %A with %q. + +2013-12-30 Felix Yang + + * ira-costs.c (cost_classes_hasher::equal): Check equality of + memcmp and 0 if no difference exists for HV1 and HV2. + +2013-12-30 Jakub Jelinek + + PR target/59501 + * config/i386/i386.c (ix86_save_reg): Don't return true for drap_reg + if !crtl->stack_realign_needed. + (ix86_finalize_stack_realign_flags): If drap_reg isn't live on entry + and stack_realign_needed will be false, clear drap_reg and need_drap. + Optimize leaf functions that don't need stack frame even if + crtl->need_drap. + +2013-12-30 H.J. Lu + + PR target/59605 + * config/i386/i386.c (ix86_expand_set_or_movmem): Create + jump_around_label only if it doesn't exist. + +2013-12-28 Eric Botcazou + + * doc/invoke.texi (output file options): Document -fada-spec-parent. + +2013-12-27 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (avx512f_fixupimm_maskz): Extend to support + EVEX's RC. + (avx512f_sfixupimm_maskz): Ditto. + * config/i386/subst.md (round_saeonly_expand_name): New. + (round_saeonly_expand_nimm_predicate): Ditto. + (round_saeonly_expand_operand6): Ditto. + (round_saeonly_expand): Ditto. + +2013-12-27 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (avx512f_fmadd__maskz): Extend to support + EVEX's RC. + (avx512f_fmaddsub__maskz): Ditto. + * config/i386/subst.md (round_expand_name): New. + (round_expand_nimm_predicate): Ditto. + (round_expand_operand): Ditto. + (round_expand): Ditto. + +2013-12-27 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (3): Extend to support + EVEX's SAE mode. + (*3_finite): Ditto. + (*3): Ditto. + (avx512f_cmp3): Ditto. + (avx512f_vmcmp3): Ditto. + (avx512f_vmcmp3_mask): Ditto. + (_comi): Ditto. + (_ucomi): Ditto. + (sse_cvttss2si): Ditto. + (sse_cvttss2siq): Ditto. + (fix_truncv16sfv16si2): Ditto. + (avx512f_vcvttss2usi): Ditto. + (avx512f_vcvttss2usiq): Ditto. + (avx512f_vcvttsd2usi): Ditto. + (avx512f_vcvttsd2usiq): Ditto. + (sse2_cvttsd2si): Ditto. + (sse2_cvttsd2siq): Ditto. + (fix_truncv8dfv8si2): Ditto. + (_cvtps2pd): Ditto. + (avx512f_getexp): Ditto. + (avx512f_fixupimm): Ditto. + (avx512f_fixupimm_mask): Ditto. + (avx512f_sfixupimm): Ditto. + (avx512f_sfixupimm_mask): Ditto. + (avx512f_rndscale): Ditto. + (avx512f_vcvtph2ps512): Ditto. + (avx512f_getmant): Ditto. + * config/i386/subst.md (round_saeonly_name): New. + (round_saeonly_mask_operand2): Ditto. + (round_saeonly_mask_operand3): Ditto. + (round_saeonly_mask_scalar_operand3): Ditto. + (round_saeonly_mask_scalar_operand4): Ditto. + (round_saeonly_mask_scalar_merge_operand4): Ditto. + (round_saeonly_sd_mask_operand5): Ditto. + (round_saeonly_op2): Ditto. + (round_saeonly_op4): Ditto. + (round_saeonly_op5): Ditto. + (round_saeonly_op6): Ditto. + (round_saeonly_mask_op2): Ditto. + (round_saeonly_mask_op3): Ditto. + (round_saeonly_mask_scalar_op3): Ditto. + (round_saeonly_mask_scalar_op4): Ditto. + (round_saeonly_mask_scalar_merge_op4): Ditto. + (round_saeonly_sd_mask_op5): Ditto. + (round_saeonly_constraint): Ditto. + (round_saeonly_constraint2): Ditto. + (round_saeonly_nimm_predicate): Ditto. + (round_saeonly_mode512bit_condition): Ditto. + (round_saeonly): Ditto. + +2013-12-27 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.c (ix86_print_operand): Print EVEX's RC modifiers. + * config/i386/i386.md (define_constants): Define EVEx's RC constants. + * gcc/config/i386/sse.md (3): Extend + to support EVEX's rounding control. + (*3): Ditto. + (mul3): Ditto. + (*mul3): Ditto. + (_div3): Ditto. + (_sqrt2): Ditto. + (fma_fmadd_): Ditto. + (avx512f_fmadd__mask): Ditto. + (avx512f_fmadd__mask3): Ditto. + (fma_fmsub_): Ditto. + (avx512f_fmsub__mask): Ditto. + (avx512f_fmsub__mask3): Ditto. + (fma_fnmadd_): Ditto. + (avx512f_fnmadd__mask): Ditto. + (avx512f_fnmadd__mask3): Ditto. + (fma_fnmsub_): Ditto. + (avx512f_fnmsub__mask): Ditto. + (avx512f_fnmsub__mask3): Ditto. + (fma_fmaddsub_): Ditto. + (avx512f_fmaddsub__mask): Ditto. + (avx512f_fmaddsub__mask3): Ditto. + (fma_fmsubadd_): Ditto. + (avx512f_fmsubadd__mask): Ditto. + (avx512f_fmsubadd__mask3): Ditto. + (fmai_vmfmadd_): Ditto. + (*fmai_fmadd_): Ditto. + (*fmai_fmsub_): Ditto. + (*fmai_fnmadd_): Ditto. + (*fmai_fnmsub_): Ditto. + (sse_cvtsi2ss): Ditto. + (sse_cvtsi2ssq): Ditto. + (sse_cvtss2si): Ditto. + (sse_cvtss2siq): Ditto. + (cvtusi232): Ditto. + (cvtusi264): Ditto. + (float2): Ditto. + (ufloatv16siv16sf2): Ditto. + (avx512f_fix_notruncv16sfv16si): Ditto. + (avx512f_ufix_notruncv16sfv16si): Ditto. + (sse2_cvtsi2sdq): Ditto. + (avx512f_vcvtss2usi): Ditto. + (avx512f_vcvtss2usiq): Ditto. + (avx512f_vcvtsd2usi): Ditto. + (avx512f_vcvtsd2usiq): Ditto. + (sse2_cvtsd2si): Ditto. + (sse2_cvtsd2siq): Ditto. + (avx512f_cvtpd2dq512): Ditto. + (avx512f_ufix_notruncv8dfv8si): Ditto. + (avx512f_cvtpd2ps512): Ditto. + (avx512f_scalef): Ditto. + (3): Ditto. + (*avx2_3): Ditto. + (avx512er_exp2avx512er_rcp28): Ditto. + (avx512er_rsqrt28): Ditto. + (avx512f_fmadd__maskz): New. + * config/i386/subst.md (SUBST_A): New. + (round_name): Ditto. + (round_mask_operand2): Ditto. + (round_mask_operand3): Ditto. + (round_mask_scalar_operand3): Ditto. + (round_sd_mask_operand4): Ditto. + (round_op2): Ditto. + (round_op3): Ditto. + (round_op4): Ditto. + (round_op5): Ditto. + (round_op6): Ditto. + (round_mask_op2): Ditto. + (round_mask_op3): Ditto. + (round_mask_scalar_op3): Ditto. + (round_sd_mask_op4): Ditto. + (round_constraint): Ditto. + (round_constraint2): Ditto. + (round_constraint3): Ditto. + (round_nimm_predicate): Ditto. + (round_mode512bit_condition): Ditto. + (round_modev4sf_condition): Ditto. + (round_codefor): Ditto. + (round_opnum): Ditto. + (round): Ditto. + +2013-12-26 H.J. Lu + + PR target/59588 + * config/i386/i386.c (ix86_option_override_internal): Don't + check generic tuning. Don't change i686 tuning. + +2013-12-26 H.J. Lu + + PR target/59601 + * config/i386/i386.c (get_builtin_code_for_version): Map + PROCESSOR_NEHALEM to "corei7". + +2013-12-26 Ganesh Gopalasubramanian + + * config/i386/i386.c (get_builtin_code_for_version): Rename AMD + CPU names M_AMD_BOBCAT to M_AMD_BTVER1 and M_AMD_JAGUAR + to M_AMD_BTVER2. + (processor_model): Likewise. + (arch_names_table): Likewise. + +2013-12-26 Uros Bizjak + + * config/i386/driver-i386.c (decode_caches_intel): Add missing entries. + +2013-12-25 H.J. Lu + + PR target/59587 + * config/i386/i386.c (struct ptt): Add a field for processor name. + (processor_target_table): Sync with processor_type. + Add processor names. + (cpu_names): Removed. + (ix86_option_override_internal): Default x_ix86_tune_string + to processor_target_table[TARGET_CPU_DEFAULT].name. + (ix86_function_specific_print): Assert arch and tune < PROCESSOR_max. + Use processor_target_table to print arch and tune names. + * config/i386/i386.h (TARGET_CPU_DEFAULT): Default to + PROCESSOR_GENERIC. + (target_cpu_default): Removed. + (processor_type): Reordered. + +2013-12-25 Allan Sandfeld Jensen + H.J. Lu + + PR target/59422 + * config/i386/i386.c (get_builtin_code_for_version): Handle + PROCESSOR_HASWELL, PROCESSOR_SILVERMONT, PROCESSOR_BTVER1, + PROCESSOR_BTVER2, PROCESSOR_BDVER3 and PROCESSOR_BDVER4. + Change priority of PROCESSOR_BDVER1 to P_PROC_XOP. + (fold_builtin_cpu): Add "ivybridge", "haswell", "bonnell", + "silvermont", "bobcat" and "jaguar" CPU names. Add "sse4a", + "fma4", "xop" and "fma" ISA names. + +2013-12-24 H.J. Lu + + * config/i386/i386.c (ix86_option_override_internal): Check + opts->x_ix86_arch_string instead of ix86_arch_string. + +2013-12-24 Renlin Li + + * config/arm/arm-protos.h (vfp_const_double_for_bits): Declare. + * config/arm/constraints.md (Dp): Define new constraint. + * config/arm/predicates.md (const_double_vcvt_power_of_two): Define + new predicate. + * config/arm/arm.c (arm_print_operand): Add print for new fucntion. + (vfp3_const_double_for_bits): New function. + * config/arm/vfp.md (combine_vcvtf2i): Define new instruction. + +2013-12-23 Hans-Peter Nilsson + + PR target/59203 + * config/cris/cris.c (cris_pic_symbol_type_of): Fix typo, + checking t1 twice instead of t1 and t2 respectively. + + PR middle-end/59584 + * config/cris/predicates.md (cris_nonsp_register_operand): + New define_predicate. + * config/cris/cris.md: Replace register_operand with + cris_nonsp_register_operand for destinations in all + define_splits where a register is set more than once. + +2013-12-23 Jason Merrill + + * gdbinit.in (input_line, input_filename): Define. + + * cgraph.h (struct cgraph_node): Add calls_comdat_local. + (symtab_comdat_local_p, symtab_in_same_comdat_p): New. + * cif-code.def: Add USES_COMDAT_LOCAL. + * symtab.c (verify_symtab_base): Make sure we don't refer to a + comdat-local symbol from outside its comdat. + * cgraph.c (verify_cgraph_node): Likewise. + * cgraphunit.c (mark_functions_to_output): Don't mark comdat-locals. + * ipa.c (symtab_remove_unreachable_nodes): Likewise. + (function_and_variable_visibility): Handle comdat-local fns. + * ipa-cp.c (determine_versionability): Don't clone comdat-locals. + * ipa-inline-analysis.c (compute_inline_parameters): Update + calls_comdat_local. + * ipa-inline-transform.c (inline_call): Likewise. + (save_inline_function_body): Don't clear DECL_COMDAT_GROUP. + * ipa-inline.c (can_inline_edge_p): Check calls_comdat_local. + * lto-cgraph.c (input_overwrite_node): Read calls_comdat_local. + (lto_output_node): Write it. + * symtab.c (symtab_dissolve_same_comdat_group_list): Clear + DECL_COMDAT_GROUP for comdat-locals. + +2013-12-23 H.J. Lu + + * config/i386/i386.c (processor_target_table): Move Bonnell and + Silvermont entries before generic. + +2013-12-23 Bingfeng Mei + + PR middle-end/59569 + * tree-vect-stmts.c (vectorizable_store): Skip permutation for + consant/external operand, and add a few missing \n. + +2013-12-23 H.J. Lu + Tocar Ilya + + * config/i386/core2.md: Replace corei7 with nehalem. + + * config/i386/driver-i386.c (host_detect_local_cpu): Use nehalem, + westmere, sandybridge, ivybridge, haswell, bonnell, silvermont + for cpu names. + + * config/i386/i386-c.c (ix86_target_macros_internal): Replace + PROCESSOR_COREI7, PROCESSOR_COREI7_AVX, PROCESSOR_ATOM, + PROCESSOR_SLM with PROCESSOR_NEHALEM, PROCESSOR_SANDYBRIDGE, + PROCESSOR_BONNELL, PROCESSOR_SILVERMONT. Define + __nehalem/__nehalem__, __sandybridge/__sandybridge__, + __haswell/__haswell__, __tune_nehalem__, __tune_sandybridge__, + __tune_haswell__, __bonnell/__bonnell__, + __silvermont/__silvermont__, __tune_bonnell__, + __tune_silvermont__. + + * config/i386/i386.c (m_COREI7): Renamed to ... + (m_NEHALEM): This. + (m_COREI7_AVX): Renamed to ... + (m_SANDYBRIDGE): This. + (m_ATOM): Renamed to ... + (m_BONNELL): This. + (m_SLM): Renamed to ... + (m_SILVERMONT): This. + (m_CORE_ALL): Updated. + (cpu_names): Add "nehalem", "westmere", "sandybridge", + "ivybridge", "haswell", "broadwell", "bonnell", "silvermont". + (PTA_CORE2): New. + (PTA_NEHALEM): Likewise. + (PTA_WESTMERE): Likewise. + (PTA_SANDYBRIDGE): Likewise. + (PTA_IVYBRIDGE): Likewise. + (PTA_HASWELL): Likewise. + (PTA_BROADWELL): Likewise. + (PTA_BONNELL): Likewise. + (PTA_SILVERMONT): Likewise. + (ix86_option_override_internal): Use new PTA_XXX. Add nehalem, + westmere, sandybridge, ivybridge, haswell, bonnell, silvermont. + (ix86_lea_outperforms): Updated. + (ix86_issue_rate): Likewise. + (ix86_adjust_cost): Likewise. + (ia32_multipass_dfa_lookahead): Likewise. + (do_reorder_for_imul): Likewise. + (swap_top_of_ready_list): Likewise. + (ix86_sched_reorder): Likewise. + (ix86_sched_init_global): Likewise. + (get_builtin_code_for_version): Likewise. + (processor_model): Replace M_INTEL_ATOM, M_INTEL_SLM with + M_INTEL_BONNELL, M_INTEL_SILVERMONT. + (arch_names_table): Updated. + + * config/i386/i386.h (TARGET_COREI7): Removed. + (TARGET_COREI7_AVX): Likewise. + (TARGET_ATOM): Likewise. + (TARGET_SLM): Likewise. + (TARGET_NEHALEM): New. + (TARGET_SANDYBRIDGE): Likewise. + (TARGET_BONNELL): Likewise. + (TARGET_SILVERMONT): Likewise. + (target_cpu_default): Add TARGET_CPU_DEFAULT_core_avx2, + TARGET_CPU_DEFAULT_nehalem, TARGET_CPU_DEFAULT_westmere, + TARGET_CPU_DEFAULT_sandybridge, TARGET_CPU_DEFAULT_ivybridge, + TARGET_CPU_DEFAULT_broadwell, TARGET_CPU_DEFAULT_bonnell, + TARGET_CPU_DEFAULT_silvermont. Move TARGET_CPU_DEFAULT_haswell + before TARGET_CPU_DEFAULT_broadwell. + (processor_type): Replace PROCESSOR_COREI7, PROCESSOR_COREI7_AVX, + PROCESSOR_ATOM, PROCESSOR_SLM with PROCESSOR_NEHALEM, + PROCESSOR_SANDYBRIDGE, PROCESSOR_BONNELL, PROCESSOR_SILVERMONT. + + * config/i386/i386.md (cpu): Replace corei7 with nehalem. + + * config/i386/x86-tune.def: Updated. + + * doc/invoke.texi: Replace corei7, corei7-avx, core-avx-i, + core-avx2, atom, slm with nehalem, sandybridge, ivybridge, + haswell, bonnel, silvermont. Add westmere. + +2013-12-23 Andrey Belevantsev + + PR rtl-optimization/57422 + * sel-sched.c (fill_vec_av_set): Assert that the fence insn + can always be scheduled in its current form. + +2013-12-23 Andrey Belevantsev + + PR rtl-optimization/57422 + * sel-sched.c (mark_unavailable_hard_regs): Fix typo when calling + add_to_hard_reg_set. + +2013-12-20 Sharad Singhai + + * Makefile.in: Add optinfo.texi. + * doc/invoke.texi: Fix typo. + * doc/optinfo.texi: New documentation for optimization info. + * doc/passes.texi: Add new node. + +2013-12-20 Trevor saunders + + * vec.h (stack_vec): Convert to a templaate specialization of + auto_vec. + * config/i386/i386.c, df-scan.c, function.c, genautomata.c, + gimplify.c, graphite-clast-to-gimple.c, graphite-dependences.c, + graphite-scop-detection.c, graphite-sese-to-poly.c, hw-doloop.c, + trans-mem.c, tree-call-cdce.c, tree-data-ref.c, tree-dfa.c, + tree-if-conv.c, tree-inline.c, tree-loop-distribution.c, + tree-parloops.c, tree-predcom.c, tree-ssa-alias.c, + tree-ssa-loop-ivcanon.c, tree-ssa-phiopt.c, tree-ssa-threadedge.c, + tree-ssa-uncprop.c, tree-vect-loop.c, tree-vect-patterns.c, + tree-vect-slp.c, tree-vect-stmts.c, var-tracking.c: Adjust. + +2013-12-20 Eric Botcazou + + * config/arm/arm.c (arm_expand_prologue): In a nested APCS frame with + arguments to push onto the stack and no varargs, save ip into the last + stack slot if r3 isn't available on entry. + +2013-12-20 Kyrylo Tkachov + + * config/arm/neon.ml (crypto_intrinsics): Add vceq_64 and vtst_p64. + * config/arm/arm_neon.h: Regenerate. + * config/arm/neon-docgen.ml: Add vceq_p64 and vtst_p64. + * doc/arm-neon-intrinsics.texi: Regenerate. + +2013-12-20 Vladimir Makarov + + * config/arm/arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Return + NO_REGS for LRA. + +2013-12-20 Kyrylo Tkachov + + * config/arm/arm_acle.h: Add underscores before variables. + +2013-12-20 Bingfeng Mei + + PR tree-optimization/59544 + * tree-vect-stmts.c (perm_mask_for_reverse): Move before + vectorizable_store. + (vectorizable_store): Handle negative step. + +2013-12-20 Tocar Ilya + + * config.gcc: Support march=broadwell. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect Broadwell. + * config/i386/i386.c (ix86_option_override_internal): Add broadwell. + * doc/invoke.texi: Document march=broadwell. + +2013-12-20 Jakub Jelinek + + * ubsan.c: Include tree-ssanames.h, asan.h and gimplify-me.h. + (ubsan_type_descriptor): Handle BOOLEAN_TYPE and ENUMERAL_TYPE + like INTEGER_TYPE. + (instrument_bool_enum_load): New function. + (ubsan_pass): Call it. + (gate_ubsan): Also enable for SANITIZE_BOOL or SANITIZE_ENUM. + * asan.c (create_cond_insert_point): No longer static. + * asan.h (create_cond_insert_point): Declare. + * sanitizer.def (BUILT_IN_UBSAN_HANDLE_LOAD_INVALID_VALUE): New + built-in. + * opts.c (common_handle_option): Handle -fsanitize=bool and + -fsanitize=enum. + * builtins.c (fold_builtin_memory_op): When sanitizing bool + and enum loads, don't use enum or bool types for memcpy folding. + * flag-types.h (SANITIZE_BOOL, SANITIZE_ENUM): New. + (SANITIZE_UNDEFINED): Or these in. + +2013-12-20 Chung-Ju Wu + + * config/nds32/nds32.h (NDS32_MODE_TYPE_ALIGN): New macro. + (NDS32_AVAILABLE_REGNUM_FOR_ARG): Use more accurate alignment checking + to determine available register number. + * config/nds32/nds32.c (nds32_needs_double_word_align): Use new + macro NDS32_MODE_TYPE_ALIGN. + (nds32_function_arg): Refine code layout. + +2013-12-19 Jeff Law + + * doc/invoke.texi: (dump-rtl-ree): Fix typo and clarify ree + handles both zero and sign extension. + +2013-12-19 Teresa Johnson + + PR gcov-profile/59542 + * bb-reorder.c (duplicate_computed_gotos): Invoke fixup_partitions + if we have made any changes. + +2013-12-19 Jakub Jelinek + + PR other/59545 + * genattrtab.c (struct attr_hash): Change hashcode type to unsigned. + (attr_hash_add_rtx, attr_hash_add_string): Change hashcode parameter + to unsigned. + (attr_rtx_1): Change hashcode variable to unsigned. + (attr_string): Likewise. Perform first multiplication in + unsigned type. + * ifcvt.c (noce_try_store_flag_constants): Avoid signed integer + overflows. + * double-int.c (neg_double): Likewise. + * stor-layout.c (set_min_and_max_values_for_integral_type): Likewise. + * combine.c (force_to_mode): Likewise. + * postreload.c (move2add_use_add2_insn, move2add_use_add3_insn, + reload_cse_move2add, move2add_note_store): Likewise. + * simplify-rtx.c (simplify_const_unary_operation, + simplify_const_binary_operation): Likewise. + * ipa-split.c (find_split_points): Initialize first.can_split + and first.non_ssa_vars. + * gengtype-state.c (read_state_files_list): Fix up check. + * genautomata.c (reserv_sets_hash_value): Use portable rotation idiom. + +2013-12-19 Kyrylo Tkachov + + * config/arm/neon-docgen.ml: Add crypto intrinsics documentation. + * doc/arm-neon-intrinsics.texi: Regenerate. + +2013-12-19 Kyrylo Tkachov + + * config/arm/neon-testgen.ml (effective_target): Handle "CRYPTO". + +2013-12-19 Kyrylo Tkachov + + * config/arm/arm.c (enum arm_builtins): Add crypto builtins. + (arm_init_neon_builtins): Handle crypto builtins. + (bdesc_2arg): Likewise. + (bdesc_1arg): Likewise. + (bdesc_3arg): New table. + (arm_expand_ternop_builtin): New function. + (arm_expand_unop_builtin): Handle sha1h explicitly. + (arm_expand_builtin): Handle ternary builtins. + * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): + Define __ARM_FEATURE_CRYPTO. + * config/arm/arm.md: Include crypto.md. + (is_neon_type): Add crypto types. + * config/arm/arm_neon_builtins.def: Add TImode reinterprets. + * config/arm/crypto.def: New. + * config/arm/crypto.md: Likewise. + * config/arm/iterators.md (CRYPTO_UNARY): New int iterator. + (CRYPTO_BINARY): Likewise. + (CRYPTO_TERNARY): Likewise. + (CRYPTO_SELECTING): Likewise. + (crypto_pattern): New int attribute. + (crypto_size_sfx): Likewise. + (crypto_mode): Likewise. + (crypto_type): Likewise. + * config/arm/neon-gen.ml: Handle poly64_t and poly128_t types. + Handle crypto intrinsics. + * config/arm/neon.ml: Add support for poly64 and polt128 types + and intrinsics. Define crypto intrinsics. + * config/arm/neon.md (neon_vreinterpretti): New pattern. + (neon_vreinterpretv16qi): Use VQXMOV mode iterator. + (neon_vreinterpretv8hi): Likewise. + (neon_vreinterpretv4si): Likewise. + (neon_vreinterpretv4sf): Likewise. + (neon_vreinterpretv2di): Likewise. + * config/arm/unspecs.md (UNSPEC_AESD, UNSPEC_AESE, UNSPEC_AESIMC) + (UNSPEC_AESMC, UNSPEC_SHA1C, UNSPEC_SHA1M, UNSPEC_SHA1P, UNSPEC_SHA1H) + (UNSPEC_SHA1SU0, UNSPEC_SHA1SU1, UNSPEC_SHA256H, UNSPEC_SHA256H2) + (UNSPEC_SHA256SU0, UNSPEC_SHA256SU1, VMULLP64): Define. + * config/arm/arm_neon.h: Regenerate. + +2013-12-19 H.J. Lu + + PR driver/59321 + * collect2.c (main): Check -fuse-ld=[bfd|gold] when + DEFAULT_LINKER is defined. + * common.opt (fuse-ld=bfd): Add Driver. + (fuse-ld=gold): Likewise. + * gcc.c (use_ld): New variable. + (driver_handle_option): Set use_ld for OPT_fuse_ld_bfd and + OPT_fuse_ld_gold. + (main): Check -fuse-ld=[bfd|gold] for -print-prog-name=ld. + +2013-12-19 Kyrylo Tkachov + + * Makefile.in (TEXI_GCC_FILES): Add arm-acle-intrinsics.texi. + * config.gcc (extra_headers): Add arm_acle.h. + * config/arm/arm.c (FL_CRC32): Define. + (arm_have_crc): Likewise. + (arm_option_override): Set arm_have_crc. + (arm_builtins): Add CRC32 builtins. + (bdesc_2arg): Likewise. + (arm_init_crc32_builtins): New function. + (arm_init_builtins): Initialise CRC32 builtins. + (arm_file_start): Handle architecture extensions. + * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define + __ARM_FEATURE_CRC32. Define __ARM_32BIT_STATE. + (TARGET_CRC32): Define. + * config/arm/arm-arches.def: Add armv8-a+crc. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm.md (type): Add crc. + (): New insn. + * config/arm/arm_acle.h: New file. + * config/arm/iterators.md (CRC): New int iterator. + (crc_variant, crc_mode): New int attributes. + * confg/arm/unspecs.md (UNSPEC_CRC32B, UNSPEC_CRC32H, UNSPEC_CRC32W, + UNSPEC_CRC32CB, UNSPEC_CRC32CH, UNSPEC_CRC32CW): New unspecs. + * doc/invoke.texi: Document -march=armv8-a+crc option. + * doc/extend.texi: Document ACLE intrinsics. + +2013-12-19 Charles Baylis + + PR target/59142 + * config/arm/arm-ldmstm.ml: Use low_register_operand for Thumb + patterns. + * config/arm/ldmstm.md: Regenerate. + +2013-12-19 Charles Baylis + + PR target/59142 + * config/arm/predicates.md (arm_hard_general_register_operand): + New predicate. + (arm_hard_register_operand): Remove. + * config/arm/arm-ldmstm.ml: Use arm_hard_general_register_operand + for all patterns. + * config/arm/ldmstm.md: Regenerate. + +2013-12-19 Charles Baylis + + PR target/59142 + * config/arm/predicates.md (vfp_hard_register_operand): New predicate. + * config/arm/arm.md (vfp_pop_multiple_with_writeback): Use + vfp_hard_register_operand. + +2013-12-19 Tejas Belagod + + * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins): + Define builtin types for poly64_t poly128_t. + (TYPES_BINOPP, aarch64_types_binopp_qualifiers): New. + * aarch64/aarch64-simd-builtins.def: Update builtins table. + * config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi, + aarch64_crypto_pmullv2di): New. + * config/aarch64/aarch64.c (aarch64_simd_mangle_map): Update table for + poly64x2_t mangler. + * config/aarch64/arm_neon.h (poly64x2_t, poly64_t, poly128_t): Define. + (vmull_p64, vmull_high_p64): New. + * config/aarch64/iterators.md (UNSPEC_PMULL<2>): New. + +2013-12-19 Tejas Belagod + + * config/aarch64/aarch64-simd-builtins.def: Update builtins table. + * config/aarch64/aarch64-simd.md + (aarch64_crypto_sha256hv4si, aarch64_crypto_sha256su0v4si, + aarch64_crypto_sha256su1v4si): New. + * config/aarch64/arm_neon.h (vsha256hq_u32, vsha256h2q_u32, + vsha256su0q_u32, vsha256su1q_u32): New. + * config/aarch64/iterators.md (UNSPEC_SHA256H<2>, UNSPEC_SHA256SU<01>): + New. + (CRYPTO_SHA256): New int iterator. + (sha256_op): New int attribute. + +2013-12-19 Tejas Belagod + + * config/aarch64/aarch64-simd-builtins.def: Update builtins table. + * config/aarch64/aarch64-builtins.c (aarch64_types_ternopu_qualifiers, + TYPES_TERNOPU): New. + * config/aarch64/aarch64-simd.md (aarch64_crypto_sha1hsi, + aarch64_crypto_sha1su1v4si, aarch64_crypto_sha1v4si, + aarch64_crypto_sha1su0v4si): New. + * config/aarch64/arm_neon.h (vsha1cq_u32, sha1mq_u32, vsha1pq_u32, + vsha1h_u32, vsha1su0q_u32, vsha1su1q_u32): New. + * config/aarch64/iterators.md (UNSPEC_SHA1, UNSPEC_SHA1SU<01>): + New. + (CRYPTO_SHA1): New int iterator. + (sha1_op): New int attribute. + +2013-12-19 Tejas Belagod + + * config/aarch64/aarch64-simd-builtins.def: Update builtins table. + * config/aarch64/aarch64-builtins.c (aarch64_types_binopu_qualifiers, + TYPES_BINOPU): New. + * config/aarch64/aarch64-simd.md (aarch64_crypto_aesv16qi, + aarch64_crypto_aesv16qi): New. + * config/aarch64/arm_neon.h (vaeseq_u8, vaesdq_u8, vaesmcq_u8, + vaesimcq_u8): New. + * config/aarch64/iterators.md (UNSPEC_AESE, UNSPEC_AESD, UNSPEC_AESMC, + UNSPEC_AESIMC): New. + (CRYPTO_AES, CRYPTO_AESMC): New int iterators. + (aes_op, aesmc_op): New int attributes. + +2013-12-19 Tejas Belagod + + * config/arm/types.md (neon_mul_d_long, crypto_aes, crypto_sha1_xor, + crypto_sha1_fast, crypto_sha1_slow, crypto_sha256_fast, + crypto_sha256_slow): New. + +2013-12-19 Tejas Belagod + + * config/aarch64/aarch64.h (TARGET_CRYPTO): New. + (__ARM_FEATURE_CRYPTO): Define if TARGET_CRYPTO is true. + +2013-12-19 Dominik Vogt + Andreas Krebbel + + * config/s390/s390.c (s390_hotpatch_trampoline_halfwords_default): New + constant. + (s390_hotpatch_trampoline_halfwords_max): New constant. + (s390_hotpatch_trampoline_halfwords): New static variable. + (get_hotpatch_attribute): New function. + (s390_handle_hotpatch_attribute): New function. + (s390_attribute_table): New target specific attribute table to + implement the hotpatch attribute. + (s390_option_override): Parse hotpatch options. + (s390_function_num_hotpatch_trampoline_halfwords): New function. + (s390_can_inline_p): Implement target hook to + suppress hotpatching for explicitly inlined functions. + (s390_asm_output_function_label): Generate hotpatch prologue. + (TARGET_ATTRIBUTE_TABLE): Define to implement target attribute table. + (TARGET_CAN_INLINE_P): Define to implement target hook. + * config/s390/s390.opt (mhotpatch): New options -mhotpatch, + -mhotpatch=. + * config/s390/s390-protos.h (s390_asm_output_function_label): Add + prototype. + * config/s390/s390.h (ASM_OUTPUT_FUNCTION_LABEL): Target specific + function label generation for hotpatching. + (FUNCTION_BOUNDARY): Align functions to eight bytes. + * doc/extend.texi: Document hotpatch attribute. + * doc/invoke.texi: Document -mhotpatch option. + +2013-12-19 Ganesh Gopalasubramanian + + * config/i386/i386.c: Include cfgloop.h. + (ix86_loop_memcount): New function. + (ix86_loop_unroll_adjust): New function. + (TARGET_LOOP_UNROLL_ADJUST): Define. + * config/i386/i386.h + (TARGET_ADJUST_UNROLL): Define. + * config/i386/x86-tune.def + (X86_TUNE_ADJUST_UNROLL): Define. + +2013-12-19 Marek Polacek + + * config/i386/i386.c (ix86_parse_stringop_strategy_string): Remove + variable alg. Use index variable i directly. + +2013-12-19 Eric Botcazou + + * print-tree.c (print_node) : Print no_force_blk_flag + for all types. + +2013-12-19 Monk Chiang + + * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): + Consider TARGET_CPU_DEFAULT settings. + +2013-12-18 James Greenhalgh + + * config/aarch64/aarch64-cores.def: Add support for + -mcpu=cortex-a57.cortex-a53. + * config/aarch64/aarch64-tune.md: Regenerate. + * doc/invoke.texi: Document -mcpu=cortex-a57.cortex-a53. + +2013-12-18 James Greenhalgh + + * config/aarch64/aarch64-cores.def: Add new column for SCHEDULER_IDENT. + * config/aarch64/aarch64-opts.h (AARCH64_CORE): Handle SCHEDULER_IDENT. + * config/aarch64/aarch64.c (AARCH64_CORE): Handle SCHEDULER_IDENT. + (aarch64_parse_cpu): mcpu implies a default value for mtune. + * config/aarch64/aarch64.h (AARCH64_CORE): Handle SCHEDULER_IDENT. + +2013-12-18 James Greenhalgh + + * common/config/aarch64/aarch64-common.c + (aarch64_rewrite_selected_cpu): New. + (aarch64_rewrite_mcpu): New. + * config/aarch64/aarch64-protos.h + (aarch64_rewrite_selected_cpu): New. + * config/aarch64/aarch64.h (BIG_LITTLE_SPEC): New. + (BIG_LITTLE_SPEC_FUNCTIONS): Likewise. + (ASM_CPU_SPEC): Likewise. + (EXTRA_SPEC_FUNCTIONS): Likewise. + (EXTRA_SPECS): Likewise. + (ASM_SPEC): Likewise. + * config/aarch64/aarch64.c (aarch64_start_file): Rewrite target + CPU name. + +2013-12-18 Balaji V. Iyer + + * omp-low.c (simd_clone_clauses_extract): Replaced the string + "cilk simd elemental" with "cilk simd function." + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + Removed a carriage-return from a warning string. + +2013-12-18 Aldy Hernandez + + * passes.c (execute_function_dump): Set graph_dump_initialized + appropriately. + (pass_init_dump_file): Similarly. + (execute_one_pass): Pass new argument to do_per_function. + * tree-pass.h (class opt_pass): New field graph_dump_initialized. + +2013-12-18 Aldy Hernandez + + * doc/tree-ssa.texi (SSA Operands): Remove reference to + SSA_OP_VMAYUSE. + Synchronize SSA_OP* definitions with source. + * ssa-iterators.h: Fix comment for FOR_EACH_IMM_USE_STMT. + Add not to SSA_OP* macro definitions. + +2013-12-18 Jakub Jelinek + + PR target/59539 + * config/i386/sse.md + (_loadu, + _loaddqu): New expanders, + prefix existing define_insn names with *. + +2013-12-18 Eric Botcazou + + * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Fix thinko. + +2013-12-18 James Greenhalgh + Kyrylo Tkachov + + * config/arm/t-aprofile: Add cortex-a15.cortex-a7, cortex-a12, + cortex-a57, cortex-a57.cortex-a53. + +2013-12-18 Eric Botcazou + + PR debug/59418 + * dwarf2cfi.c (dwarf2out_frame_debug_cfa_offset): Fix comment and tidy. + (dwarf2out_frame_debug_cfa_restore): Handle TARGET_DWARF_REGISTER_SPAN. + (dwarf2out_frame_debug_expr): Tidy. + +2013-12-18 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (*fma_fmadd_): Extend to support masking. + (*fma_fmsub_): Ditto. + (*fma_fnmadd_): Ditto. + (*fma_fnmsub_): Ditto. + (*fma_fmaddsub_): Ditto. + (*fma_fmsubadd_): Ditto. + (avx512f_vternlog): Ditto. + (avx512f_fixupimm): Ditto. + (avx512f_sfixupimm): Ditto. + (avx512f_vpermi2var3): Ditto. + (avx512f_vpermt2var3): Ditto. + (avx512f_fmaddsub__maskz): New. + (avx512f_vternlog_maskz): Ditto. + (avx512f_fixupimm_maskz): Ditto. + (avx512f_sfixupimm_maskz): Ditto. + (avx512f_vpermi2var3_maskz): Ditto. + (avx512f_vpermt2var3_maskz): Ditto. + (avx512f_expand_maskz): Ditto. + * config/i386/subst.md (sd_maskz_name): Ditto. + (sd_mask_op4): Ditto. + (sd_mask_op5): Ditto. + (sd_mask_codefor): Ditto. + (sd_mask_mode512bit_condition): Ditto. + (sd): Ditto. + +2013-12-18 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (avx512f_cmp3): Extend to support masking. + (avx512f_ucmp3): Ditto. + (avx512f_eq3): Ditto. + (avx512f_gt3): Ditto. + (avx512f_testm3): Ditto. + (avx512f_testnm3): Ditto. + * config/i386/subst.md (SUBST_S): New. + (mask_scalar_merge_name): Ditto. + (mask_scalar_merge_operand3): Ditto. + (mask_scalar_merge_operand4): Ditto. + (mask_scalar_merge): Ditto. + +2013-12-17 Jan Hubicka + + PR middle-end/35545 + * gimple-fold.c (fold_gimple_assign): Attempt to devirtualize + OBJ_TYPE_REF. + (gimple_fold_stmt_to_constant_1): Bypass OBJ_TYPE_REF wrappers. + +2013-12-17 Jan Hubicka + + PR middle-end/35545 + * tree-vrp.c (extract_range_from_unary_expr_1): Handle OBJ_TYPE_REF. + +2013-12-17 Teresa Johnson + + PR gcov-profile/59527 + * cfgrtl.c (fixup_reorder_chain): Handle a region-crossing + branch, which can't be eliminated. + +2013-12-18 Martin Liska + Jan Hubicka + + * cgraphunit.c (node_cmp): New function. + (expand_all_functions): Function ordering added. + * common.opt: New profile based function reordering flag introduced. + * lto-partition.c: Support for time profile added. + * lto.c: Likewise. + * predict.c (handle_missing_profiles): Time profile handled in + missing profiles. + +2013-12-17 Jakub Jelinek + + PR tree-optimization/59523 + * tree-vectorizer.c (fold_loop_vectorized_call): Call update_stmt + on updated stmts. + +2013-12-17 Aldy Hernandez + + * ipa-inline.c (gate_ipa_inline): Remove. + (const pass_data pass_data_ipa_inline): Unset has_gate. + (class pass_ipa_inline): Remove gate() method. + +2013-12-17 Jan Hubicka + + * ipa-devirt.c (get_polymorphic_call_info): Fix offset calculatoin + in contains_type_p query. + +2013-12-17 Thomas Schwinge + + * omp-low.c (tmp_ompfn_id_num): Remove leftover variable definition. + + * tree-pass.h (make_pass_expand_omp_ssa): Remove leftover function + declaration. + + * omp-low.c: Remove leftover comment. + + * omp-low.c (check_combined_parallel): Reflect reality in comment. + + * doc/cfg.texi (Control Flow): Refer to passes.def instead of passes.c. + * doc/passes.texi (Pass manager): Refer to passes.def. + + * doc/gccint.texi (Top): Fix inclusion order. + +2013-12-17 Kyrylo Tkachov + + * config/arm/arm-cores.def (cortex-a12): Use cortexa15 scheduling. + * config/arm/arm.c (arm_issue_rate): Handle cortexa12. + * config/arm/arm.md (generic_vfp): Remove cortexa12. + +2013-12-17 James Greenhalgh + + * config/arm/arm-cores.def (cortex-a57.cortex-a53): New. + * doc/invoke.texi: Document -mcpu=cortex-a57.cortex-a53. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * config/arm/bpabi.h + (BE8_LINK_SPEC): Handle -mcpu=cortex-a57.cortex-a53. + +2013-12-17 James Greenhalgh + + * config/arm/arm-cores.def (cortex-a57): New. + * doc/invoke.texi: Document -mcpu=cortex-a57. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * config/arm/bpabi.h (BE8_LINK_SPEC): Handle -mcpu=cortex-a57. + +2013-12-17 James Greenhalgh + + * config/arm/arm-cores.def (cortex-a15.cortex-a7): New. + * doc/invoke.texi: Document -mcpu=cortex-a15.cortex-a7. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Regenerate. + * config/arm/bpabi.h + (BE8_LINK_SPEC): Handle -mcpu=cortex-a5.cortex-a7. + +2013-12-17 James Greenhalgh + + * config/arm/arm-cores.def: Add new column for TUNE_IDENT. + * config/arm/genopt.sh: Improve layout. + * config/arm/arm-tune.md: Regenerate. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-opts.h (ARM_CORE): Modify macro for TUNE_IDENT. + * config/arm/arm.c (ARM_CORE): Modify macro for TUNE_IDENT. + (arm_option_override): When a CPU is chosen, that should also + form the tune target. + * config/arm/arm.h (ARM_CORE): Modify macro for TUNE_IDENT. + +2013-12-17 James Greenhalgh + + * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): New. + (arm_rewrite_mcpu): Likewise. + * config/arm/arm-protos.h (arm_rewrite_selected_cpu): New. + * config/arm/arm.h (BIG_LITTLE_SPEC): New. + (BIG_LITTLE_SPEC_FUNCTIONS): Likewise. + (EXTRA_SPEC_FUNCTIONS): Include BIG_LITTLE_SPEC_FUNCTIONS. + (ASM_CPU_SPEC): Include BIG_LITTLE_SPEC. + * config/arm/arm.c (arm_file_start): Rewrite arm_selecetd_cpu values. + +2013-12-17 Eric Botcazou + + * expmed.c (lowpart_bit_field_p): Fix comment. + (store_bit_field_using_insv): Fix formatting. + (store_bit_field): Likewise. + (store_fixed_bit_field): More declaration and remove return. + (store_fixed_bit_field_1): Fix formatting. + (extract_fixed_bit_field): Move declaration. + (extract_fixed_bit_field_1): Simplify. + +2013-12-17 Jan Hubicka + + * ipa-utils.h (possible_polymorphic_call_targets): Determine + context of the call. + * gimple-fold.c (gimple_fold_call): Use ipa-devirt to devirtualize. + +2013-12-17 Jakub Jelinek + + * expr.c (convert_modes): For SUBREG_PROMOTED_VAR_P use SUBREG_REG (x) + instead of x as last gen_lowpart argument. + +2013-12-16 Jakub Jelinek + + * predict.h (PROB_LIKELY): Fix the value. + * internal-fn.c (ubsan_expand_si_overflow_mul_check): Add support + for overflow checking for modes without 2xwider supported mode, + if the mode has 2xnarrower mode. + + * internal-fn.c: Include stringpool.h and tree-ssanames.h. + (ubsan_expand_si_overflow_addsub_check): In the generic expansion, + try to improve generated code if one of the arguments is constant + or get_range_info says that one of the argument is always + negative or always non-negative. + * tree-vrp.c (simplify_internal_call_using_ranges): New function. + (simplify_stmt_using_ranges): Call it. + +2013-12-16 Vladimir Makarov + + PR rtl-optimization/59466 + * emit-rtl.c (change_address_1): Don't validate address for LRA. + * recog.c (general_operand): Accept any memory for LRA. + * lra.c (lra_set_insn_recog_data): Add an assert. + +2013-12-16 Kyrylo Tkachov + + * config/arm/driver-arm.c (arm_cpu_table): Add cortex-a12 entry. + +2013-12-14 Jan Hubicka + Markus Trippelsdorf + + PR ipa/59265 + * ipa-profile.c (ipa_profile_generate_summary): Do not ICE when + call is already devirtualized. + +2013-12-16 Jakub Jelinek + + * Makefile.in (version.o): Restore dependencies on + $(REVISION), $(DATESTAMP), $(BASEVER) and $(DEVPHASE). + +2013-12-14 Jan Hubicka + + PR ipa/59473 + * ipa-devirt.c (get_class_context): Do not ICE when type is found + at wrong offset. + +2013-12-16 Jakub Jelinek + + PR libgomp/58756 + * omp-low.c (lower_rec_input_clauses) : For + reductions without placeholder if is_simd, but when not using + GOMP_SIMD* internal calls, also perform the reduction operation + on the outer var rather than simple assignment. + +2013-12-16 Jakub Jelinek + + PR middle-end/58956 + PR middle-end/59470 + * gimple-walk.h (walk_stmt_load_store_addr_fn): New typedef. + (walk_stmt_load_store_addr_ops, walk_stmt_load_store_ops): Use it + for callback params. + * gimple-walk.c (walk_stmt_load_store_ops): Likewise. + (walk_stmt_load_store_addr_ops): Likewise. Adjust all callback + calls to supply the gimple operand containing the base tree + as an extra argument. + * tree-ssa-ter.c: Include gimple-walk.h. + (find_ssaname, find_ssaname_in_store): New helper functions. + (find_replaceable_in_bb): For calls or GIMPLE_ASM, only set + same_root_var if USE is used somewhere in the stores of the stmt. + * ipa-prop.c (visit_ref_for_mod_analysis): Remove name of the stmt + argument and ATTRIBUTE_UNUSED, add another unnamed tree argument. + * ipa-pure-const.c (check_load, check_store, check_ipa_load, + check_ipa_store): Likewise. + * gimple.c (gimple_ior_addresses_taken_1, check_loadstore): Likewise. + * ipa-split.c (test_nonssa_use, mark_nonssa_use): Likewise. + (verify_non_ssa_vars, visit_bb): Adjust their callers. + * cfgexpand.c (add_scope_conflicts_1): Use + walk_stmt_load_store_addr_fn type for visit variable. + (visit_op, visit_conflict): Remove name of the stmt + argument and ATTRIBUTE_UNUSED, add another unnamed tree argument. + * tree-sra.c (asm_visit_addr): Likewise. Remove name of the data + argument and ATTRIBUTE_UNUSED. + * cgraphbuild.c (mark_address, mark_load, mark_store): Add another + unnamed tree argument. + * gimple-ssa-isolate-paths.c (check_loadstore): Likewise. Remove + ATTRIBUTE_UNUSED from stmt parameter. + +2013-12-16 Chung-Lin Tang + + * opts-common.c (integral_argument): Add support for + hexadecimal command option integer arguments. Update comments. + +2013-12-14 Jan Hubicka + + PR ipa/59265 + * ipa-prop.c (ipa_analyze_call_uses): Skip already + devirtualized calls. + +2013-12-14 Jan Hubicka + + PR middle-end/58477 + * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Skip clobbers. + +2013-12-14 Jan Hubicka + + PR middle-end/58477 + * cgraphclones.c (cgraph_clone_edge): Do not resolve speculative edges. + +2013-12-14 H.J. Lu + + PR target/59492 + * config/i386/i386.c (ix86_function_specific_restore): Don't + change -fPIC. + +2013-12-14 Eric Botcazou + + * var-tracking.c (add_stores): Fix oversight in latest commit. + +2013-12-14 Marek Polacek + + PR sanitizer/59503 + * internal-fn.c (ubsan_expand_si_overflow_addsub_check): Call + expand_binop with correct optab depending on code. + +2013-12-14 Tom de Vries + + * calls.c (expand_call): Fix REG_PARM_STACK_SPACE comparison. + +2013-12-13 DJ Delorie + + * config/rl78/rl78-expand.md (one_cmplqi2): Make constant signed. + + * config/msp430/msp430.md (movqi): replace general_operand with + msp_general_operand and nonimmediate_operand with + msp_nonimmediate_operand to allow volatile operands. + (movhi): Likewise. + (movpsi): Likewise. + (addpsi3): Likewise. + (addhi3): Likewise. + (addhi3_cy): Likewise. + (addchi4_cy): Likewise. + (xor3): Likewise. + (ome_cmpl2): Likewise. + (extendqihi2): Likewise. + (zero_extendqihi2): Likewise. + (zero_extendhipsi2): Likewise. + (truncpsihi2): Likewise. + (srai_1): Likewise. + +2013-12-13 Vladimir Makarov + + * ira.h (struct ira_reg_equiv): Rename to ira_reg_equiv_s. + * ira.c: Ditto. + * lra-int.h (lra_init_equiv): New prototype. + * lra-constraints.c (lra_init_equiv, update_equiv): New functions. + (loc_equivalence_callback): Use the 3rd arg. + (lra_constraints): Update equivalences. Pass curr_insn to + simplify_replace_fn_rtx. + * lra.c (lra): Call lra_init_equiv. + +2013-12-13 Kenneth Zadeck + + * genmodes.c (emit_max_int): Fixed missing parens. + +2013-12-13 Aldy Hernandez + + PR tree-optimization/59149 + * calls.c (flags_from_decl_or_type): Fail on non decl or type. + * trans-mem.c (diagnose_tm_1): Do not call flags_from_decl_or_type + if no type or decl. + +2013-12-13 Kenneth Zadeck + + * config/arc/arc.h (BITS_PER_UNIT): Removed. + * config/bfin/bfin.h (BITS_PER_UNIT): Removed. + * config/lm32/lm32.h (BITS_PER_UNIT): Removed. + * config/m32c/m32c.h (BITS_PER_UNIT): Removed. + * config/microblaze/microblaze.h (BITS_PER_UNIT): Removed. + * config/picochip/picochip.h (BITS_PER_UNIT): Removed. + * config/spu/spu.h (BITS_PER_UNIT): Removed. + * defaults.h (BITS_PER_UNIT): Removed. + * config/i386/i386-modes.def (MAX_BITSIZE_MODE_ANY_INT): New. + * doc/rtl (BITS_PER_UNIT): Moved from tm.texi. + (MAX_BITSIZE_MODE_ANY_INT): Updated. + * doc/tm.texi (BITS_PER_UNIT): Removed. + * doc/tm.texi.in (BITS_PER_UNIT): Removed. + * genmodes.c (bits_per_unit, max_bitsize_mode_any_int): New. + (create_modes): Added code to set bits_per_unit and + max_bitsize_mode_any_int. + (emit_max_int): Changed code generation. + * mkconfig.sh: Added insn-modes.h. + +2013-12-13 Jeff Law + + PR tree-optimization/45685 + * tree-ssa-phiopt.c (neg_replacement): New function. + (tree_ssa_phiopt_worker): Call it. + +2013-12-13 Yuri Rumyantsev + + * config/i386/i386.c (slm_cost): Fix imul cost for HI. + +2013-12-13 Bin Cheng + + PR tree-optimization/58296 + PR tree-optimization/41488 + * tree-scalar-evolution.c: Include necessary header files. + (simplify_peeled_chrec): New function. + (analyze_evolution_in_loop): New static variable. + Call simplify_peeled_chrec. + * tree-ssa-loop-ivopts.c (mark_bivs): Don't mark peeled IV as biv. + (add_old_iv_candidates): Don't add candidate for peeled IV. + * tree-affine.h (aff_combination_zero_p): New function. + +2013-12-13 Nick Clifton + + * config/msp430/msp430.c (is_wakeup_func): New function. Returns + true if the current function has the wakeup attribute. + (msp430_start_function): Note if the function has the wakeup + attribute. + (msp430_attribute_table): Add wakeup attribute. + (msp430_expand_epilogue): Add support for wakeup functions. + * config/msp430/msp430.md (disable_interrupts): Emit a NOP after + the DINT instruction. + * doc/extend.texi: Document the wakeup attribute. + +2013-12-13 Kai Tietz + + PR c++/57897 + * config/i386/i386.c (ix86_option_override_internal): Set for + x64 target flag_unwind_tables, if flag_asynchronous_unwind_tables + was explicit set. + +2013-12-12 Jeff Law + + * i386.md (simple LEA peephole2): Add missing mode to zero_extend + for zero-extended MULT simple LEA pattern. + +2013-12-12 Vladimir Makarov + + PR middle-end/59470 + * lra-coalesce.c (lra_coalesce): Invalidate inheritance pseudo + values if necessary. + +2013-12-12 Jakub Jelinek + + PR libgomp/59467 + * gimplify.c (omp_check_private): Add copyprivate argument, if it + is true, don't check omp_privatize_by_reference. + (gimplify_scan_omp_clauses): For OMP_CLAUSE_COPYPRIVATE verify + decl is private in outer context. Adjust omp_check_private caller. + +2013-12-11 Jeff Law + + PR rtl-optimization/59446 + * tree-ssa-threadupdate.c (mark_threaded_blocks): Properly + test for crossing a loop header. + +2013-12-11 Sriraman Tallam + + PR target/59390 + * config/i386/i386.c (get_builtin): New function. + (ix86_builtin_vectorized_function): Replace all instances of + ix86_builtins[...] with get_builtin(...). + (ix86_builtin_reciprocal): Ditto. + +2013-12-11 Balaji V. Iyer + + * langhooks.h (lang_hooks_for_decls): Remove lang_hooks_for_cilkplus. + (lang_hooks_for_cilkplus): Remove. + * langhooks.c (lhd_cilk_detect_spawn): Likewise. + (lhd_install_body_with_frame_cleanup): Likewise. + * langhooks-def.h (LANG_HOOKS_CILKPLUS_FRAME_CLEANUP): Likewise. + (LANG_HOOKS_CILKPLUS_DETECT_SPAWN_AND_UNWRAP): Likewise. + (LANG_HOOKS_CILKPLUS_CILKPLUS_GIMPLIFY_SPAWN): Likewise. + (LANG_HOOKS_CILKPLUS): Likewise. + (LANG_HOOKS_DECLS): Remove LANG_HOOKS_CILKPLUS. + * gimplify.c (gimplify_expr): Removed CILK_SPAWN_STMT case. + (gimplify_modify_expr): Removed handling of _Cilk_spawn in expr. + (gimplify_call_expr): Likewise. + +2013-12-11 Bernd Edlinger + + * expr.c (expand_assignment): Remove dependency on + flag_strict_volatile_bitfields. Always set the memory access mode. + (expand_expr_real_1): Likewise. + +2013-12-11 Bernd Edlinger + + PR middle-end/59134 + * expmed.c (store_bit_field): Use narrow_bit_field_mem and + store_fixed_bit_field_1 for -fstrict-volatile-bitfields. + (store_fixed_bit_field): Split up. Call store_fixed_bit_field_1 + to do the real work. + (store_fixed_bit_field_1): New function. + (store_split_bit_field): Limit the unit size to the memory mode size, + to prevent recursion. + +2013-12-11 Bernd Edlinger + Sandra Loosemore + + PR middle-end/23623 + PR middle-end/48784 + PR middle-end/56341 + PR middle-end/56997 + * expmed.c (strict_volatile_bitfield_p): Add bitregion_start + and bitregion_end parameters. Test for compliance with C++ + memory model. + (store_bit_field): Adjust call to strict_volatile_bitfield_p. + Add fallback logic for cases where -fstrict-volatile-bitfields + is supposed to apply, but cannot. + (extract_bit_field): Likewise. Use narrow_bit_field_mem and + extract_fixed_bit_field_1 to do the extraction. + (extract_fixed_bit_field): Revert to previous mode selection algorithm. + Call extract_fixed_bit_field_1 to do the real work. + (extract_fixed_bit_field_1): New function. + +2013-12-11 Sandra Loosemore + + PR middle-end/23623 + PR middle-end/48784 + PR middle-end/56341 + PR middle-end/56997 + * expmed.c (strict_volatile_bitfield_p): New function. + (store_bit_field_1): Don't special-case strict volatile + bitfields here. + (store_bit_field): Handle strict volatile bitfields here instead. + (store_fixed_bit_field): Don't special-case strict volatile + bitfields here. + (extract_bit_field_1): Don't special-case strict volatile + bitfields here. + (extract_bit_field): Handle strict volatile bitfields here instead. + (extract_fixed_bit_field): Don't special-case strict volatile + bitfields here. Simplify surrounding code to resemble that in + store_fixed_bit_field. + * doc/invoke.texi (Code Gen Options): Update + -fstrict-volatile-bitfields description. + +2013-12-11 Kugan Vivekanandarajah + + * configure.ac: Add check for aarch64 assembler -mabi support. + * configure: Regenerate. + * config.in: Regenerate. + * config/aarch64/aarch64-elf.h (ASM_MABI_SPEC): New define. + (ASM_SPEC): Update to substitute -mabi with ASM_MABI_SPEC. + * config/aarch64/aarch64.h (aarch64_override_options): Issue error + if assembler does not support -mabi and option ilp32 is selected. + * doc/install.texi: Added note that building gcc 4.9 and after + with pre 2.24 binutils will not support -mabi=ilp32. + +2013-12-11 Marek Polacek + + PR sanitizer/59399 + * expr.c (expand_expr_real_1): Remove assert dealing with + internal calls and turn that into a condition instead. + +2013-12-11 Yvan Roux + + * config/arm/arm.opt (mlra): Enable LRA by default. + +2013-12-11 Jakub Jelinek + + PR tree-optimization/59417 + * tree-ssa-copy.c (fini_copy_prop): If copy_of[i].value is defined + in a different bb rhan var, only duplicate points-to info and + not alignment info and don't duplicate range info. + * tree-ssa-loop-niter.c (determine_value_range): Instead of + assertion failure handle inconsistencies in range info by only + using var's range info and not PHI result range infos. + + PR tree-optimization/59386 + * tree-inline.c (remap_gimple_stmt): If not id->do_not_unshare, + unshare_expr (id->retval) before passing it to gimple_build_assign. + +2013-12-11 Bin Cheng + + Reverted: + 2013-12-10 Bin Cheng + PR tree-optimization/41488 + * tree-ssa-loop-ivopts.c (add_old_iv_candidates): Don't add cand + for PEELED_CHREC kind IV. + * tree-scalar-evolution.c: Include necessary header files. + (peeled_chrec_map, simplify_peeled_chrec): New. + (analyze_evolution_in_loop): New static variable. + Call simplify_peeled_chrec. + (scev_initialize): Initialize peeled_chrec_map. + (scev_reset, scev_finalize): Reset and release peeled_chrec_map. + +2013-12-10 H.J. Lu + + PR target/59458 + * config/i386/i386.md (*movsf_internal): Set mode to SI for + alternative 13. + +2013-12-10 Eric Botcazou + + PR rtl-optimization/58295 + * simplify-rtx.c (simplify_truncation): Restrict the distribution for + WORD_REGISTER_OPERATIONS targets. + +2013-12-10 Richard Sandiford + + * genrecog.c (validate_pattern): Treat all messages except missing + modes as errors. + * config/epiphany/epiphany.md: Remove constraints from + define_peephole2s. + * config/h8300/h8300.md: Remove constraints from define_splits. + * config/msp430/msp430.md: Likewise. + * config/mcore/mcore.md (movdi_i, movsf_i, movdf_k): Use + nonimmediate_operand rather than general_operand for operand 0. + * config/moxie/moxie.md (*movsi, *movqi, *movhi): Likewise. + * config/pdp11/predicates.md (float_operand, float_nonimm_operand): + Use match_operator rather than match_test to invoke general_operand. + * config/v850/v850.md (*movqi_internal, *movhi_internal) + (*movsi_internal_v850e, *movsi_internal, *movsf_internal): Likewise. + +2013-12-10 Richard Sandiford + + * config/tilegx/tilegx.md (insn_ld_add): Use + register_operand rather than pointer_operand. Add modes to the + operands. + (insn_ldna_add): Likewise. + (insn_ld_add): Likewise. + (insn_ldnt_add): Likewise. + (insn_ldnt_add): Likewise. + (insn_ld_add_L2): Likewise. + (insn_ldna_add_L2): Likewise. + (insn_ld_add_L2): Likewise. + (insn_ldnt_add_L2): Likewise. + (insn_ldnt_add_L2): Likewise. + (insn_ld_add_miss): Likewise. + (insn_ldna_add_miss): Likewise. + (insn_ld_add_miss): Likewise. + (insn_ldnt_add_miss): Likewise. + (insn_ldnt_add_miss): Likewise. + (insn_st_add): Likewise. + (insn_st_add): Likewise. + (*insn_st_add): Likewise. + (insn_stnt_add): Likewise. + (insn_stnt_add): Likewise. + (*insn_stnt_add): Likewise. + (vec_pack__v4hi): Use register_operand rather than + reg_or_0_operand for operand 0. + (insn_v2): Likewise. + (vec_pack_hipart_v4hi): Likewise. + (insn_v2packh): Likewise. + (vec_pack_ssat_v2si): Likewise. + (insn_v4packsc): Likewise. + +2013-12-10 H.J. Lu + + * basic-block.h (gcov_working_set_t): Put back typedef. + * gcov-io.h (gcov_bucket_type): Likewise. + (gcov_working_set_info, gcov_working_set_t): Likewise. + +2013-12-10 Oleg Endo + + * cgraph.h (cgraph_node_set_iterator, varpool_node_set_iterator): + Remove typedef. + (cgraph_inline_failed_enum, cgraph_inline_failed_t): Remove typedef and + rename to cgraph_inline_failed_t. + * tree-ssa-alias.h (ao_ref_s, ao_ref): Remove typedef and rename + to ao_ref. + * reload.h (reg_equivs_s, reg_equivs_t): Remove typedef and rename + to reg_equivs_t. + * conditions.h (CC_STATUS): Remove typedef. + * bitmap.h (bitmap_obstack): Remove typedef. + (bitmap_element_def, bitmap_element): Remove typedef and rename to + bitmap_element. + (bitmap_head_def, bitmap_head): Remove typedef and rename to + bitmap_head. + (bitmap_iterator): Remove typedef. + * target.h (cumulative_args_t, print_switch_type, + secondary_reload_info): Remove typedef. + * dwarf2out.h (dw_cfi_oprnd_struct, dw_cfi_oprnd): Remove + dw_cfi_oprnd_struct alias. + (dw_cfi_struct, dw_cfi_node): Remove typedef and rename to dw_cfi_node. + (dw_fde_struct, dw_fde_node): Remove typedef and rename to dw_fde_node. + (cfa_loc, dw_cfa_location): Remove typedef and rename to + dw_cfa_location. + (dw_vec_struct, dw_vec_const): Remove typedef and rename to + dw_vec_const. + (dw_val_struct, dw_val_node): Remove typedef and rename to dw_val_node. + (dw_loc_descr_struct, dw_loc_descr_node): Remove typedef and rename to + dw_loc_descr_node. + * params.h (param_info, compiler_param): Remove typedef. + * opts.h (cl_deferred_param): Remove typedef. + * sreal.h (sreal): Remove typedef. + * ddg.h (dep_type, dep_data_type): Remove typedef. + * graphite-clast-to-gimple.h (cloog_prog_clast, bb_pbb_def): Remove + typedef. + * lto-streamer.h (lto_decl_stream_e_t, lto_encoder_entry, + lto_symtab_encoder_iterator, res_pair): Remove typedef. + * tree-affine.h (affine_tree_combination, aff_tree): Remove typedef + and rename to aff_tree. + * sched-int.h (region): Remove typedef. + * diagnostic.h (diagnostic_info, + diagnostic_classification_change_t): Remove typedef. + * tree-ssa-loop.h (affine_iv_d): Remove typedef and rename to + affine_iv. + * sbitmap.h (sbitmap_iterator): Remove typedef. + * ssa-iterators.h (immediate_use_iterator_d, imm_use_iterator): + Remove typedef and rename to imm_use_iterator. + (ssa_operand_iterator_d, ssa_op_iter): Remove typedef and rename to + ssa_op_iter. + * ggc-internal.h (ggc_statistics): Remove typedef. + * cselib.h (cselib_val_struct, cselib_val): Remove typedef and + rename to cselib_val. + * tree-core.h (alias_pair): Remove typedef. + (constructor_elt_d, constructor_elt): Remove typedef and rename to + constructor_elt. + (ssa_use_operand_d, ssa_use_operand_t): Remove typedef and rename to + ssa_use_operand_t. + * graphite-sese-to-poly.h (base_alias_pair): Remove typedef. + * tree-data-ref.h (conflict_function): Remove typedef. + * tree-inline.h (copy_body_data): Remove typedef. + * ipa-inline.h (condition, size_time_entry, inline_param_summary_t, + edge_growth_cache_entry): Remove typedef. + * regrename.h (operand_rr_info, insn_rr_info): Remove typedef. + * gimple-iterator.h (gimple_stmt_iterator_d, gimple_stmt_iterator): + Remove typedef and rename to gimple_stmt_iterator. + * basic-block.h (ce_if_block, ce_if_block_t): Remove typedef and + rename to ce_if_block. + (edge_iterator): Remove typedef. + * ipa-prop.h (ipa_agg_jf_item, ipa_agg_jf_item_t): Remove typedef + and rename to ipa_agg_jf_item. + (ipa_agg_jump_function_t, ipa_param_descriptor_t, ipa_node_params_t, + ipa_parm_adjustment_t): Remove typedef. + (ipa_jump_func, ipa_jump_func_t): Remove typedef and rename to + ipa_jump_func. + (ipa_edge_args, ipa_edge_args_t): Remove typedef and rename to + ipa_edge_args. + * gcov-io.h (gcov_bucket_type): Remove typedef. + (gcov_working_set_info, gcov_working_set_t): Remove typedef and rename + to gcov_working_set_t. + * ira-int.h (minmax_set_iterator, ira_allocno_iterator, + ira_object_iterator, ira_allocno_object_iterator, ira_pref_iterator, + ira_copy_iterator, ira_object_conflict_iterator): Remove typedef. + * tree-iterator.h (tree_stmt_iterator): Remove typedef. + * rtl.h (addr_diff_vec_flags, mem_attrs, reg_attrs, + replace_label_data): Remove typedef. + (rtunion_def, rtunion): Remove typedef and rename to rtunion. + * hard-reg-set.h (hard_reg_set_iterator): Remove typedef. + * sel-sched-ir.h (_list_iterator, sel_global_bb_info_def, + sel_region_bb_info_def, succ_iterator): Remove typedef. + (deps_where_def, deps_where_t): Remove typedef and rename to + deps_where_t. + * coretypes.h: Adapt forward declarations. + * tree-scalar-evolution.h: Likewise. + * tree-ssa-address.h: Likewise. + * tree-ssa-operands.h: Likewise. + * function.h: Likewise. + * config/frv/frv-protos.h: Likewise. + * targhooks.h: Likewise. + * basic_block.h: Likewise. + * rtl.def: Adapt documentation. + * doc/tm.texi: Likewise. + * ipa-cp.c: Adapt uses. + * bitmap.c: Likewise. + * dwarf2out.c: Likewise. + * target.def: Likewise. + * ipa-inline-analysis.c: Likewise. + * dwarf2cfi.c: Likewise. + * tree-ssa-loop-ivopts.c: Likewise. + * lto-cgraph.c: Likewise. + * config/frv/frv.c: Likewise. + * ifcvt.c: Likewise. + * ipa-prop.c: Likewise. + +2013-12-10 Kai Tietz + + PR target/56807 + * config/i386/i386.c (ix86_expand_prologue): Address saved + registers stack-relative, not via frame-pointer. + +2013-12-10 Richard Biener + + PR middle-end/38474 + * tree-ssa-structalias.c (solution_set_expand): Expand into + a different possibly cached bitmap and return the result. + (set_union_with_increment): Pass in a shared expanded bitmap + and adjust. + (do_sd_constraint): Likewise. + (do_ds_constraint): Likewise. + (do_complex_constraint): Likewise. + (solve_graph): Manage the shared expanded bitmap. + +2013-12-10 Jakub Jelinek + + * tree-vectorizer.h (struct _loop_vec_info): Add scalar_loop field. + (LOOP_VINFO_SCALAR_LOOP): Define. + (slpeel_tree_duplicate_loop_to_edge_cfg): Add scalar_loop argument. + * config/i386/sse.md (maskload, maskstore): New expanders. + * tree-data-ref.c (get_references_in_stmt): Handle MASK_LOAD and + MASK_STORE. + * internal-fn.def (LOOP_VECTORIZED, MASK_LOAD, MASK_STORE): New + internal fns. + * tree-if-conv.c: Include expr.h, optabs.h, tree-ssa-loop-ivopts.h and + tree-ssa-address.h. + (release_bb_predicate): New function. + (free_bb_predicate): Use it. + (reset_bb_predicate): Likewise. Don't unallocate bb->aux + just to immediately allocate it again. + (add_to_predicate_list): Add loop argument. If basic blocks that + dominate loop->latch don't insert any predicate. + (add_to_dst_predicate_list): Adjust caller. + (if_convertible_phi_p): Add any_mask_load_store argument, if true, + handle it like flag_tree_loop_if_convert_stores. + (insert_gimplified_predicates): Likewise. + (ifcvt_can_use_mask_load_store): New function. + (if_convertible_gimple_assign_stmt_p): Add any_mask_load_store + argument, check if some conditional loads or stores can't be + converted into MASK_LOAD or MASK_STORE. + (if_convertible_stmt_p): Add any_mask_load_store argument, + pass it down to if_convertible_gimple_assign_stmt_p. + (predicate_bbs): Don't return bool, only check if the last stmt + of a basic block is GIMPLE_COND and handle that. Adjust + add_to_predicate_list caller. + (if_convertible_loop_p_1): Only call predicate_bbs if + flag_tree_loop_if_convert_stores and free_bb_predicate in that case + afterwards, check gimple_code of stmts here. Replace is_predicated + check with dominance check. Add any_mask_load_store argument, + pass it down to if_convertible_stmt_p and if_convertible_phi_p, + call if_convertible_phi_p only after all if_convertible_stmt_p calls. + (if_convertible_loop_p): Add any_mask_load_store argument, + pass it down to if_convertible_loop_p_1. + (predicate_mem_writes): Emit MASK_LOAD and/or MASK_STORE calls. + (combine_blocks): Add any_mask_load_store argument, pass + it down to insert_gimplified_predicates and call predicate_mem_writes + if it is set. Call predicate_bbs. + (version_loop_for_if_conversion): New function. + (tree_if_conversion): Adjust if_convertible_loop_p and combine_blocks + calls. Return todo flags instead of bool, call + version_loop_for_if_conversion if if-conversion should be just + for the vectorized loops and nothing else. + (main_tree_if_conversion): Adjust caller. Don't call + tree_if_conversion for dont_vectorize loops if if-conversion + isn't explicitly enabled. + * tree-vect-data-refs.c (vect_check_gather): Handle + MASK_LOAD/MASK_STORE. + (vect_analyze_data_refs, vect_supportable_dr_alignment): Likewise. + * gimple.h (gimple_expr_type): Handle MASK_STORE. + * internal-fn.c (expand_LOOP_VECTORIZED, expand_MASK_LOAD, + expand_MASK_STORE): New functions. + * tree-vectorizer.c: Include tree-cfg.h and gimple-fold.h. + (vect_loop_vectorized_call, fold_loop_vectorized_call): New functions. + (vectorize_loops): Don't try to vectorize loops with + loop->dont_vectorize set. Set LOOP_VINFO_SCALAR_LOOP for if-converted + loops, fold LOOP_VECTORIZED internal call depending on if loop + has been vectorized or not. + * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges): + New function. + (slpeel_tree_duplicate_loop_to_edge_cfg): Add scalar_loop argument. + If non-NULL, copy basic blocks from scalar_loop instead of loop, but + still to loop's entry or exit edge. + (slpeel_tree_peel_loop_to_edge): Add scalar_loop argument, pass it + down to slpeel_tree_duplicate_loop_to_edge_cfg. + (vect_do_peeling_for_loop_bound, vect_do_peeling_for_loop_alignment): + Adjust callers. + (vect_loop_versioning): If LOOP_VINFO_SCALAR_LOOP, perform loop + versioning from that loop instead of LOOP_VINFO_LOOP, move it to the + right place in the CFG afterwards. + * tree-vect-loop.c (vect_determine_vectorization_factor): Handle + MASK_STORE. + * cfgloop.h (struct loop): Add dont_vectorize field. + * tree-loop-distribution.c (copy_loop_before): Adjust + slpeel_tree_duplicate_loop_to_edge_cfg caller. + * optabs.def (maskload_optab, maskstore_optab): New optabs. + * passes.def: Add a note that pass_vectorize must immediately follow + pass_if_conversion. + * tree-predcom.c (split_data_refs_to_components): Give up if + DR_STMT is a call. + * tree-vect-stmts.c (vect_mark_relevant): Don't crash if lhs is NULL. + (exist_non_indexing_operands_for_use_p): Handle MASK_LOAD + and MASK_STORE. + (vectorizable_mask_load_store): New function. + (vectorizable_call): Call it for MASK_LOAD or MASK_STORE. + (vect_transform_stmt): Handle MASK_STORE. + * tree-ssa-phiopt.c (cond_if_else_store_replacement): Ignore + DR_STMT where lhs is NULL. + * optabs.h (can_vec_perm_p): Fix up comment typo. + (can_vec_mask_load_store_p): New prototype. + * optabs.c (can_vec_mask_load_store_p): New function. + +2013-12-10 Eric Botcazou + + * expr.c (expand_expr_real_1) : Always return 0 for + the extraction of a bit-field of null size. + +2013-12-10 Marek Polacek + + PR sanitizer/59437 + * vtable-verify.c (var_is_used_for_virtual_call_p): Check the + return value of gimple_call_fn. Use is_gimple_call/is_gimple_assign + instead of gimple_code. + +2013-12-10 Maxim Kuvyrkov + + * config.gcc (mips*-mti-linux*, mips64*-*-linux*): + Add android definitions. + (s390x-*-linux*): Use linux-protos.h. + +2013-12-10 Bin Cheng + + PR tree-optimization/41488 + * tree-ssa-loop-ivopts.c (add_old_iv_candidates): Don't add cand + for PEELED_CHREC kind IV. + * tree-scalar-evolution.c: Include necessary header files. + (peeled_chrec_map, simplify_peeled_chrec): New. + (analyze_evolution_in_loop): New static variable. + Call simplify_peeled_chrec. + (scev_initialize): Initialize peeled_chrec_map. + (scev_reset, scev_finalize): Reset and release peeled_chrec_map. + +2013-12-09 Andrew Pinski + + * config/aarch64/t-aarch64 (MULTILIB_OPTIONS): Fix definition so + that options are conflicting ones. + +2013-12-09 Eric Botcazou + + * optabs.c (gen_int_libfunc): Do not compare modes directly. + +2013-12-09 David Malcolm + + * basic-block.h (FOR_ALL_BB): Eliminate macro. + + * cfg.c (alloc_aux_for_blocks, clear_aux_for_blocks): Replace + uses of FOR_ALL_BB with FOR_ALL_BB_FN, making uses of cfun explicit. + + * cfganal.c (inverted_post_order_compute): Likewise. + * cfgcleanup.c (try_optimize_cfg): Likewise. + * cfgexpand.c (add_scope_conflicts): Likewise. + * cfghooks.c (dump_flow_info, account_profile_record): Likewise. + * cfgrtl.c (relink_block_chain): Likewise. + * dce.c (mark_artificial_uses): Likewise. + * df-core.c (df_set_blocks, df_compute_cfg_image, df_dump): Likewise. + * df-problems.c (df_lr_verify_solution_start, + df_lr_verify_solution_end, df_lr_verify_transfer_functions, + df_live_verify_solution_start, df_live_verify_solution_end, + df_live_set_all_dirty, df_live_verify_transfer_functions, + df_md_local_comput): Likewise. + * df-scan.c (df_scan_free_internal, df_scan_alloc) + df_reorganize_refs_by_insn, df_scan_verify): Likewise. + * dominance.c (compute_dom_fast_query, calculate_dominance_info, + free_dominance_info): Likewise. + * dse.c (dse_step1, dse_step3, dse_step4, dse_step6): Likewise. + * graph.c (draw_cfg_edges): Likewise. + * graphite-scop-detection.c (print_graphite_scop_statistics, + dot_all_scops_1): Likewise. + * graphite.c (print_global_statistics, + print_graphite_scop_statistics): Likewise. + * ira.c (do_reload): Likewise. + * loop-init.c (loop_optimizer_finalize): Likewise. + * lto-streamer-in.c (input_function): Likewise. + * lto-streamer-out.c (output_function): Likewise. + * mcf.c (adjust_cfg_counts): Likewise. + * predict.c (estimate_loops): Likewise. + * sched-rgn.c (haifa_find_rgns): Likewise. + * tree-cfg.c (split_critical_edges): Likewise. + * tree-dfa.c (renumber_gimple_stmt_uids): Likewise. + * tree-loop-distribution.c (tree_loop_distribution): Likewise. + * tree-ssa-pre.c (compute_antic, insert, init_pre): Likewise. + * tree-ssa-propagate.c (ssa_prop_init): Likewise. + * var-tracking.c (vt_initialize, vt_finalize): Likewise. + * vtable-verify.c (vtable_verify_main): Likewise. + * web.c (web_main): Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (FOR_EACH_BB_REVERSE): Eliminate macro. + + * cfghooks.c (verify_flow_info): Replace uses of FOR_EACH_BB_REVERSE + with FOR_EACH_BB_REVERSE_FN, making uses of cfun explicit. + * cfgrtl.c (print_rtl_with_bb, rtl_verify_edges, + rtl_verify_bb_insns, rtl_verify_bb_pointers, + rtl_verify_bb_insn_chain, rtl_verify_fallthru): Likewise. + * config/ia64/ia64.c (emit_predicate_relation_info): Likewise. + * config/sh/sh.c (sh_md_init_global): Likewise. + * config/sh/sh_optimize_sett_clrt.cc + (sh_optimize_sett_clrt::execute): Likewise. + * dce.c (reset_unmarked_insns_debug_uses, delete_unmarked_insns): + Likewise. + * dominance.c (calc_dfs_tree): Likewise. + * final.c (final): Likewise. + * function.c (thread_prologue_and_epilogue_insns): Likewise. + * gcse.c (compute_code_hoist_vbeinout): Likewise. + * ira.c (update_equiv_regs, build_insn_chain): Likewise. + * lcm.c (compute_antinout_edge): Likewise. + * mode-switching.c (optimize_mode_switching): Likewise. + * postreload.c (reload_combine): Likewise. + * recog.c (split_all_insns, peephole2_optimize): Likewise. + * tree-ssa-live.c (live_worklist): Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (FOR_EACH_BB): Eliminate macro. + + * asan.c (transform_statements, execute_sanopt): Eliminate + use of FOR_EACH_BB in favor of FOR_EACH_BB_FN, to make use of cfun + explicit. + * auto-inc-dec.c (rest_of_handle_auto_inc_dec): Likewise. + * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges, + set_edge_can_fallthru_flag, fix_up_fall_thru_edges, + fix_crossing_unconditional_branches, add_reg_crossing_jump_notes, + insert_section_boundary_note, rest_of_handle_reorder_blocks, + duplicate_computed_gotos): Likewise. + * cfg.c (clear_edges, compact_blocks, brief_dump_cfg): Likewise. + * cfganal.c (find_unreachable_blocks, add_noreturn_fake_exit_edges, + compute_dominance_frontiers_1, single_pred_before_succ_order): Likewise. + * cfgbuild.c (find_many_sub_basic_blocks): Likewise. + * cfgcleanup.c (try_optimize_cfg, delete_dead_jumptables): Likewise. + * cfgexpand.c (add_scope_conflicts, discover_nonconstant_array_refs): + Likewise. + * cfgloop.c (flow_loops_cfg_dump, get_loop_body, record_loop_exits, + verify_loop_structure): Likewise. + * cfgloopanal.c (mark_loop_exit_edges): Likewise. + * cfgrtl.c (compute_bb_for_insn, find_partition_fixes, + verify_hot_cold_block_grouping, purge_all_dead_edges, + fixup_abnormal_edges, record_effective_endpoints, + outof_cfg_layout_mode, fixup_reorder_chain, force_one_exit_fallthru, + break_superblocks): Likewise. + * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges, + cgraph_rebuild_references): Likewise. + * combine-stack-adj.c (combine_stack_adjustments): Likewise. + * combine.c (delete_noop_moves, create_log_links, + combine_instructions): Likewise. + * config/arm/arm.c (thumb1_reorg, thumb2_reorg): Likewise. + * config/bfin/bfin.c (bfin_gen_bundles, reorder_var_tracking_notes): + Likewise. + * config/c6x/c6x.c (c6x_gen_bundles, conditionalize_after_sched, + c6x_reorg): Likewise. + * config/epiphany/resolve-sw-modes.c (resolve_sw_modes): Likewise. + * config/frv/frv.c (frv_optimize_membar): Likewise. + * config/i386/i386.c (ix86_finalize_stack_realign_flags): Likewise. + * config/ia64/ia64.c (ia64_reorg): Likewise. + * config/mips/mips.c (mips_annotate_pic_calls): Likewise. + * config/picochip/picochip.c (reorder_var_tracking_notes): Likewise. + * config/rs6000/rs6000.c (rs6000_alloc_sdmode_stack_slot): Likewise. + * config/s390/s390.c (s390_regs_ever_clobbered): Likewise. + * config/sh/sh_treg_combine.cc (sh_treg_combine::execute): Likewise. + * config/spu/spu.c (spu_machine_dependent_reorg): Likewise. + * config/tilegx/tilegx.c (tilegx_gen_bundles, + reorder_var_tracking_notes): Likewise. + * config/tilepro/tilepro.c (tilepro_gen_bundles, + reorder_var_tracking_notes): Likewise. + * coverage.c (coverage_compute_cfg_checksum): Likewise. + * cprop.c (compute_hash_table_work, compute_cprop_data, + local_cprop_pass, find_implicit_sets): Likewise. + * cse.c (cse_condition_code_reg): Likewise. + * dce.c (prescan_insns_for_dce): Likewise. + * df-core.c (df_compact_blocks): Likewise. + * df-problems.c (df_word_lr_alloc): Likewise. + * df-scan.c (df_scan_start_dump, df_scan_blocks, df_insn_rescan_all, + df_update_entry_exit_and_calls): Likewise. + * dominance.c (calculate_dominance_info, verify_dominators, + debug_dominance_info): Likewise. + * dse.c (dse_step5_nospill): Likewise. + * except.c (finish_eh_generation): Likewise. + * final.c (compute_alignments): Likewise. + * function.c (thread_prologue_and_epilogue_insns, + rest_of_match_asm_constraints): Likewise. + * gcse.c (compute_hash_table_work, prune_expressions, + compute_pre_data, compute_code_hoist_vbeinout, hoist_code, + calculate_bb_reg_pressure, compute_ld_motion_mems): Likewise. + * gimple-iterator.c (gsi_commit_edge_inserts): Likewise. + * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behaviour, + find_explicit_erroneous_behaviour): Likewise. + * graphite-sese-to-poly.c (rewrite_reductions_out_of_ssa, + rewrite_cross_bb_scalar_deps_out_of_ssa): Likewise. + * haifa-sched.c (haifa_sched_init): Likewise. + * hw-doloop.c (discover_loops, set_bb_indices, reorder_loops): + Likewise. + * ifcvt.c (if_convert): Likewise. + * init-regs.c (initialize_uninitialized_regs): Likewise. + * ipa-prop.c (ipcp_transform_function): Likewise. + * ipa-pure-const.c (analyze_function): Likewise. + * ipa-split.c (find_split_points, execute_split_functions): Likewise. + * ira-build.c (form_loop_tree): Likewise. + * ira-costs.c (find_costs_and_classes): Likewise. + * ira-emit.c (emit_moves, add_ranges_and_copies, ira_emit): Likewise. + * ira.c (decrease_live_ranges_number, compute_regs_asm_clobbered, + mark_elimination, update_equiv_regs, find_moveable_pseudos, + split_live_ranges_for_shrink_wrap, allocate_initial_values): Likewise. + * jump.c (mark_all_labels): Likewise. + * lcm.c (compute_laterin, compute_insert_delete, compute_available, + compute_nearerout, compute_rev_insert_delete): Likewise. + * loop-init.c (fix_loop_structure): Likewise. + * loop-invariant.c (calculate_loop_reg_pressure): Likewise. + * lower-subreg.c (decompose_multiword_subregs, + decompose_multiword_subregs): Likewise. + * lra-assigns.c (assign_by_spills): Likewise. + * lra-coalesce.c (lra_coalesce): Likewise. + * lra-constraints.c (lra_inheritance, remove_inheritance_pseudos): + Likewise. + * lra-eliminations.c (lra_init_elimination): Likewise. + * lra-spills.c (assign_spill_hard_regs, spill_pseudos, + lra_final_code_change): Likewise. + * lra.c (remove_scratches, check_rtl, has_nonexceptional_receiver, + update_inc_notes): Likewise. + * mcf.c (adjust_cfg_counts): Likewise. + * mode-switching.c (optimize_mode_switching): Likewise. + * modulo-sched.c (rest_of_handle_sms): Likewise. + * omp-low.c (optimize_omp_library_calls, expand_omp_taskreg, + expand_omp_target): Likewise. + * postreload-gcse.c (alloc_mem, compute_hash_table): Likewise. + * postreload.c (reload_cse_regs_1): Likewise. + * predict.c (strip_predict_hints, tree_bb_level_predictions, + tree_estimate_probability, expensive_function_p, + estimate_bb_frequencies, compute_function_frequency): Likewise. + * profile.c (is_inconsistent, compute_branch_probabilities, + branch_prob): Likewise. + * ree.c (find_removable_extensions): Likewise. + * reg-stack.c (compensate_edges, convert_regs, reg_to_stack): Likewise. + * regcprop.c (copyprop_hardreg_forward): Likewise. + * reginfo.c (init_subregs_of_mode): Likewise. + * regrename.c (regrename_analyze): Likewise. + * regstat.c (regstat_compute_ri, regstat_compute_calls_crossed): + Likewise. + * reload1.c (has_nonexceptional_receiver, reload, + calculate_elim_costs_all_insns): Likewise. + * resource.c (init_resource_info, free_resource_info): Likewise. + * sched-ebb.c (schedule_ebbs): Likewise. + * sched-rgn.c (is_cfg_nonregular, find_single_block_region, + haifa_find_rgns, sched_rgn_local_init): Likewise. + * sel-sched-dump.c (sel_dump_cfg_2): Likewise. + * sel-sched-ir.c (init_lv_sets, free_lv_sets, + make_regions_from_the_rest): Likewise. + * sese.c (build_sese_loop_nests, sese_build_liveouts): Likewise. + * stack-ptr-mod.c (notice_stack_pointer_modification): Likewise. + * store-motion.c (compute_store_table, build_store_vectors, + one_store_motion_pass): Likewise. + * tracer.c (tail_duplicate): Likewise. + * trans-mem.c (compute_transaction_bits): Likewise. + * tree-call-cdce.c (tree_call_cdce): Likewise. + * tree-cfg.c (replace_loop_annotate, factor_computed_gotos, + fold_cond_expr_cond, make_edges, assign_discriminators, + make_abnormal_goto_edges, cleanup_dead_labels, group_case_labels, + dump_cfg_stats, gimple_verify_flow_info, print_loop, + execute_fixup_cfg): Likewise. + * tree-cfgcleanup.c (cleanup_tree_cfg_1, merge_phi_nodes): Likewise. + * tree-complex.c (init_dont_simulate_again, tree_lower_complex): + Likewise. + * tree-dfa.c (collect_dfa_stats, dump_enumerated_decls): Likewise. + * tree-eh.c (execute_lower_resx, execute_lower_eh_dispatch, + mark_reachable_handlers): Likewise. + * tree-emutls.c (lower_emutls_function_body): Likewise. + * tree-if-conv.c (main_tree_if_conversion): Likewise. + * tree-inline.c (optimize_inline_calls): Likewise. + * tree-into-ssa.c (rewrite_into_ssa, update_ssa): Likewise. + * tree-nrv.c (tree_nrv, execute_return_slot_opt): Likewise. + * tree-object-size.c (compute_object_sizes): Likewise. + * tree-outof-ssa.c (eliminate_useless_phis, rewrite_trees, + insert_backedge_copies, tree_profiling): Likewise. + * tree-scalar-evolution.c (scev_const_prop): Likewise. + * tree-sra.c (scan_function, sra_modify_function_body, + propagate_dereference_distances, ipa_sra_modify_function_body, + convert_callers): Likewise. + * tree-ssa-ccp.c (ccp_initialize, execute_fold_all_builtins): Likewise. + * tree-ssa-coalesce.c (build_ssa_conflict_graph): Likewise. + create_outofssa_var_map, coalesce_partitions): Likewise. + * tree-ssa-copy.c (init_copy_prop): Likewise. + * tree-ssa-copyrename.c (rename_ssa_copies): Likewise. + * tree-ssa-dce.c (find_obviously_necessary_stmts, + eliminate_unnecessary_stmts): Likewise. + * tree-ssa-dom.c (free_all_edge_infos, tree_ssa_dominator_optimize): + Likewise. + * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Likewise. + * tree-ssa-live.c (clear_unused_block_pointer, remove_unused_locals, + new_tree_live_info, calculate_live_on_exit, dump_live_info, + analyze_memory_references, fill_always_executed_in, + tree_ssa_lim_finalize): Likewise. + * tree-ssa-loop-manip.c (find_uses_to_rename, verify_loop_closed_ssa): + Likewise. + * tree-ssa-math-opts.c (execute_cse_reciprocals, execute_cse_sincos, + execute_optimize_bswap, execute_optimize_widening_mul): Likewise. + * tree-ssa-propagate.c (substitute_and_fold): Likewise. + * tree-ssa-structalias.c (compute_points_to_sets): Likewise. + * tree-ssa-tail-merge.c (find_same_succ, reset_cluster_vectors): + Likewise. + * tree-ssa-ter.c (find_replaceable_exprs): Likewise. + * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise. + * tree-ssa-uncprop.c (associate_equivalences_with_edges, + tree_ssa_uncprop): Likewise. + * tree-ssa-uninit.c (warn_uninitialized_vars, + execute_late_warn_uninitialized): Likewise. + * tree-ssa.c (verify_ssa, execute_update_addresses_taken): Likewise. + * tree-stdarg.c (check_all_va_list_escapes, execute_optimize_stdarg): + Likewise. + * tree-switch-conversion.c (do_switchconv): Likewise. + * tree-vect-generic.c (expand_vector_operations): Likewise. + * tree-vectorizer.c (adjust_simduid_builtins, note_simd_array_uses, + execute_vect_slp): Likewise. + * tree-vrp.c (check_all_array_refs, remove_range_assertions, + vrp_initialize, identify_jump_threads, instrument_memory_accesses): + Likewise. + * ubsan.c (ubsan_pass): Likewise. + * value-prof.c (verify_histograms, + gimple_value_profile_transformations, gimple_find_values_to_profile): + Likewise. + * var-tracking.c (vt_find_locations, dump_dataflow_sets, vt_emit_notes, + vt_initialize, delete_debug_insns, vt_finalize): Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (last_basic_block): Eliminate macro. + + * asan.c (transform_statements): Eliminate use of last_basic_block + in favor of last_basic_block_for_fn, in order to make use of cfun + explicit. + * bb-reorder.c (copy_bb, reorder_basic_blocks): Likewise. + * bt-load.c (compute_defs_uses_and_gen, compute_kill, compute_out, + link_btr_uses, build_btr_def_use_webs, migrate_btr_defs): Likewise. + * cfg.c (compact_blocks): Likewise. + * cfganal.c (mark_dfs_back_edges, + control_dependences::control_dependences, post_order_compute, + pre_and_rev_post_order_compute_fn, dfs_enumerate_from, compute_idf, + single_pred_before_succ_order): Likewise. + * cfgbuild.c (make_edges): Likewise. + * cfgexpand.c (add_scope_conflicts, gimple_expand_cfg): Likewise. + * cfghooks.c (verify_flow_info): Likewise. + * cfgloop.c (verify_loop_structure): Likewise. + * cfgloopanal.c (just_once_each_iteration_p, + mark_irreducible_loops): Likewise. + * cfgloopmanip.c (fix_bb_placements, remove_path, + update_dominators_in_loop): Likewise. + * cfgrtl.c (create_basic_block_structure, rtl_create_basic_block, + break_superblocks, rtl_flow_call_edges_add): Likewise. + * config/epiphany/resolve-sw-modes.c (resolve_sw_modes): Likewise. + * config/frv/frv.c (frv_optimize_membar): Likewise. + * config/mips/mips.c (r10k_insert_cache_barriers): Likewise. + * config/spu/spu.c (spu_machine_dependent_reorg): Likewise. + * cprop.c (compute_local_properties, find_implicit_sets, + bypass_conditional_jumps, one_cprop_pass): Likewise. + * cse.c (cse_main): Likewise. + * df-core.c (rest_of_handle_df_initialize, df_worklist_dataflow, + df_analyze, df_grow_bb_info, df_compact_blocks): Likewise. + * df-problems.c (df_lr_verify_solution_start, + df_live_verify_solution_start, df_md_local_compute): Likewise. + * dominance.c (init_dom_info, calc_dfs_tree_nonrec, calc_dfs_tree, + calc_idoms): Likewise. + * domwalk.c (dom_walker::walk): Likewise. + * dse.c (dse_step0, dse_step3): Likewise. + * function.c (epilogue_done): Likewise. + * gcse.c (alloc_gcse_mem, compute_local_properties, + prune_insertions_deletions, compute_pre_data, + pre_expr_reaches_here_p, one_pre_gcse_pass, + compute_code_hoist_vbeinout, should_hoist_expr_to_dom, hoist_code, + one_code_hoisting_pass): Likewise. + * graph.c (draw_cfg_nodes_no_loops): Likewise. + * graphite-sese-to-poly.c (build_scop_bbs): Likewise. + * haifa-sched.c (unlink_bb_notes): Likewise. + * ipa-split.c (execute_split_functions): Likewise. + * ira-build.c (create_loop_tree_nodes, remove_unnecessary_regions): + Likewise. + * ira-emit.c (ira_emit): Likewise. + * ira.c (find_moveable_pseudos, ira): Likewise. + * lcm.c (compute_antinout_edge, compute_laterin, + compute_insert_delete, pre_edge_lcm, compute_available, + compute_nearerout, compute_rev_insert_delete, + pre_edge_rev_lcm): Likewise. + * loop-unroll.c (opt_info_start_duplication, apply_opt_in_copies): + Likewise. + * lower-subreg.c (decompose_multiword_subregs): Likewise. + * lra-lives.c (lra_create_live_ranges): Likewise. + * lra.c (lra): Likewise. + * mode-switching.c (optimize_mode_switching): Likewise. + * recog.c (split_all_insns): Likewise. + * regcprop.c (copyprop_hardreg_forward): Likewise. + * regrename.c (regrename_analyze): Likewise. + * reload1.c (reload): Likewise. + * resource.c (init_resource_info): Likewise. + * sched-rgn.c (haifa_find_rgns, extend_rgns, compute_trg_info, + realloc_bb_state_array, schedule_region, extend_regions): Likewise. + * sel-sched-ir.c (sel_extend_global_bb_info, extend_region_bb_info, + recompute_rev_top_order, sel_init_pipelining, + make_regions_from_the_rest): Likewise. + * store-motion.c (remove_reachable_equiv_notes,build_store_vectors) + Likewise. + * tracer.c (tail_duplicate): Likewise. + * trans-mem.c (tm_region_init, get_bb_regions_instrumented): Likewise. + * tree-cfg.c (create_bb, cleanup_dead_labels, gimple_dump_cfg, + gimple_flow_call_edges_add): Likewise. + * tree-cfgcleanup.c (split_bbs_on_noreturn_calls, + cleanup_tree_cfg_1): Likewise. + * tree-complex.c (tree_lower_complex): Likewise. + * tree-inline.c (copy_cfg_body): Likewise. + * tree-into-ssa.c (mark_phi_for_rewrite, rewrite_into_ssa, + prepare_def_site_for, update_ssa): Likewise. + * tree-ssa-dce.c (tree_dce_init, perform_tree_ssa_dce): Likewise. + * tree-ssa-dom.c (record_edge_info): Likewise. + * tree-ssa-live.c (new_tree_live_info, live_worklist): Likewise. + * tree-ssa-loop-im.c (fill_always_executed_in_1): Likewise. + * tree-ssa-loop-manip.c (copy_phi_node_args + gimple_duplicate_loop_to_header_edge): Likewise. + * tree-ssa-pre.c (compute_antic): Likewise. + * tree-ssa-propagate.c (ssa_prop_init): Likewise. + * tree-ssa-reassoc.c (init_reassoc): Likewise. + * tree-ssa-sccvn.c (init_scc_vn): Likewise. + * tree-ssa-tail-merge.c (init_worklist): Likewise. + * tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise. + * tree-stdarg.c (reachable_at_most_once): Likewise. + * tree-vrp.c (find_assert_locations): Likewise. + * var-tracking.c (vt_find_locations): Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (profile_status): Eliminate macro. + + * cfgbuild.c (find_many_sub_basic_blocks): Eliminate use of + profile_status macro in favor of profile_status_for_fn, making + use of cfun explicit. + * cfghooks.c (account_profile_record): Likewise. + * cfgloopanal.c (single_likely_exit): + * cfgrtl.c (rtl_verify_edges, rtl_account_profile_record): Likewise. + * graphite.c (graphite_finalize): + * internal-fn.c (ubsan_expand_si_overflow_addsub_check, + ubsan_expand_si_overflow_neg_check, + ubsan_expand_si_overflow_mul_check): Likewise. + * ipa-split.c (consider_split, execute_split_functions): + * loop-unroll.c (decide_peel_simple): + * optabs.c (emit_cmp_and_jump_insn_1): + * predict.c (maybe_hot_edge_p, probably_never_executed, + predictable_edge_p, probability_reliable_p, gimple_predict_edge, + tree_estimate_probability_driver, estimate_bb_frequencies, + compute_function_frequency, rebuild_frequencies): Likewise. + * profile.c (compute_branch_probabilities): Likewise. + * tree-cfg.c (gimple_account_profile_record): Likewise. + * tree-inline.c (optimize_inline_calls): Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (label_to_block_map): Eliminate macro. + + * gimple.c (gimple_set_bb): Replace uses of label_to_block_map with + uses of label_to_block_map_for_fn, making uses of cfun be explicit. + * tree-cfg.c (delete_tree_cfg_annotations): Likewise. + (verify_gimple_label): Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (basic_block_info): Eliminate macro. + + * cfgrtl.c (rtl_create_basic_block): Replace uses of basic_block_info + with basic_block_info_for_fn, making uses of cfun be explicit. + * tree-cfg.c (build_gimple_cfg, create_bb): Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (BASIC_BLOCK): Eliminate macro. + + * alias.c (init_alias_analysis): Eliminate BASIC_BLOCK macro in + favor of uses of BASIC_BLOCK_FOR_FN, making uses of cfun explicit. + * bt-load.c (compute_defs_uses_and_gen, compute_out, link_btr_uses, + block_at_edge_of_live_range_p, migrate_btr_defs): Likewise. + * caller-save.c (insert_one_insn): Likewise. + * cfg.c (debug_bb, get_bb_original, get_bb_copy): Likewise. + * cfgexpand.c (add_scope_conflicts): Likewise. + * cfghooks.c (verify_flow_info): Likewise. + * cfgloop.c (flow_loops_find): Likewise. + * cfgrtl.c (rtl_flow_call_edges_add): Likewise. + * config/mips/mips.c (r10k_insert_cache_barriers): Likewise. + * config/s390/s390.c (s390_optimize_nonescaping_tx): Likewise. + * config/spu/spu.c (spu_machine_dependent_reorg): Likewise. + * cse.c (cse_main): Likewise. + * dce.c (fast_dce): Likewise. + * df-core.c (df_set_blocks, df_worklist_propagate_forward, + df_worklist_propagate_backward, df_worklist_dataflow_doublequeue, + df_bb_replace, df_dump_region): Likewise. + * df-problems.c (df_rd_bb_local_compute, df_lr_bb_local_compute, + df_live_bb_local_compute, df_chain_remove_problem) + df_chain_create_bb, df_word_lr_bb_local_compute, df_note_bb_compute, + df_md_bb_local_compute, df_md_local_compute, + df_md_transfer_function): Likewise. + * df-scan.c (df_scan_blocks, df_reorganize_refs_by_reg_by_insn, + df_reorganize_refs_by_insn, df_bb_refs_collect, + df_record_entry_block_defs, df_update_entry_block_defs, + df_record_exit_block_uses): Likewise. + * dominance.c (nearest_common_dominator_for_set): Likewise. + * gcse.c (hoist_code): Likewise. + * graph.c (draw_cfg_nodes_no_loops): Likewise. + * ipa-inline-analysis.c (param_change_prob, + estimate_function_body_sizes): Likewise. + * ipa-split.c (dominated_by_forbidden): Likewise. + * loop-unroll.c (apply_opt_in_copies): Likewise. + * lower-subreg.c (decompose_multiword_subregs): Likewise. + * lra-lives.c (lra_create_live_ranges): Likewise. + * predict.c (propagate_freq): Likewise. + * regrename.c (regrename_analyze): Likewise. + * regstat.c (regstat_bb_compute_ri, regstat_bb_compute_calls_crossed): + Likewise. + * resource.c (mark_target_live_regs): Likewise. + * sched-ebb.c (ebb_fix_recovery_cfg): Likewise. + * sched-int.h (EBB_FIRST_BB, EBB_LAST_BB): Likewise. + * sched-rgn.c (debug_region, dump_region_dot, too_large, + haifa_find_rgns, extend_rgns, compute_dom_prob_ps, update_live, + propagate_deps, sched_is_disabled_for_current_region_p): Likewise. + * sched-vis.c (debug_bb_n_slim): Likewise. + * sel-sched-ir.c (sel_finish_global_and_expr, verify_backedges, + purge_empty_blocks, sel_remove_loop_preheader): Likewise. + * sel-sched.c (remove_insns_that_need_bookkeeping) + (current_region_empty_p, sel_region_init, simplify_changed_insns): + Likewise. + * trans-mem.c (execute_tm_mark, execute_tm_edges, + tm_memopt_compute_antic, ipa_tm_scan_irr_function): Likewise. + * tree-cfg.c (make_edges, end_recording_case_labels, + label_to_block_fn, gimple_debug_bb, gimple_flow_call_edges_add, + remove_edge_and_dominated_blocks, remove_edge_and_dominated_blocks, + gimple_purge_all_dead_eh_edges, + gimple_purge_all_dead_abnormal_call_edges): Likewise. + * tree-cfgcleanup.c (fixup_noreturn_call, + split_bbs_on_noreturn_calls, cleanup_tree_cfg_1): Likewise. + * tree-inline.c (copy_cfg_body, fold_marked_statements): Likewise. + * tree-into-ssa.c (set_livein_block, prune_unused_phi_nodes, + insert_phi_nodes_for, insert_updated_phi_nodes_for): Likewise. + * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise. + * tree-ssa-live.c (live_worklist): Likewise. + * tree-ssa-loop-manip.c (compute_live_loop_exits, add_exit_phis_var, + find_uses_to_rename, copy_phi_node_args): Likewise. + * tree-ssa-pre.c (compute_antic): Likewise. + * tree-ssa-reassoc.c (update_range_test, optimize_range_tests): + Likewise. + * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise. + * tree-ssa-tail-merge.c (same_succ_hash, same_succ_def::equal, + same_succ_flush_bbs, update_worklist, set_cluster, + same_phi_alternatives, find_clusters_1, apply_clusters, + update_debug_stmts): Likewise. + * tree-ssa-threadupdate.c (mark_threaded_blocks, + thread_through_all_blocks): Likewise. + * tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise. + * tree-vrp.c (find_assert_locations): Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (SET_BASIC_BLOCK): Eliminate macro. + + * cfg.c (compact_blocks): Replace uses of SET_BASIC_BLOCK + with SET_BASIC_BLOCK_FOR_FN, making use of cfun explicit. + (expunge_block): Likewise. + * cfgrtl.c (create_basic_block_structure): Likewise. + * df-core.c (df_compact_blocks, df_bb_replace): Likewise. + * sel-sched.c (create_block_for_bookkeeping): Likewise. + * tree-cfg.c (create_bb): Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (profile_status_for_function): Rename to... + (profile_status_for_fn): ...this. + + * cfg.c (check_bb_profile): Update for renaming. + * cgraphbuild.c (compute_call_stmt_bb_frequency): Likewise. + * lto-streamer-in.c (input_cfg): Likewise. + * lto-streamer-out.c (output_cfg): Likewise. + * predict.c (maybe_hot_frequency_p, maybe_hot_count_p, + maybe_hot_bb_p, probably_never_executed) + (handle_missing_profiles): Likewise. + * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. + * tree-inline.c (copy_bb, initialize_cfun): Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (label_to_block_map_for_function): Rename to... + (label_to_block_map_for_fn): ...this. + + * lto-streamer-in.c (input_cfg): Update for renaming. + * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (last_basic_block_for_function): Rename to... + (last_basic_block_for_fn): ...this. + + * ipa-utils.c (ipa_merge_profiles): Update for renaming of + last_basic_block_for_function to last_basic_block_for_fn. + * lto-streamer-in.c (input_cfg): Likewise. + * lto-streamer-out.c (output_cfg): Likewise. + * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. + * tree-sra.c (propagate_dereference_distances, ipa_early_sra): + Likewise. + +2013-12-09 David Malcolm + + * basic-block.h (basic_block_info_for_function): Rename to... + (basic_block_info_for_fn): ...this. + (BASIC_BLOCK_FOR_FUNCTION): Rename to... + (BASIC_BLOCK_FOR_FN): ...this. + (SET_BASIC_BLOCK_FOR_FUNCTION): Rename to... + (SET_BASIC_BLOCK_FOR_FN): ...this. + + * gimple-streamer-in.c (input_phi, input_bb): Update for renaming + of BASIC_BLOCK_FOR_FUNCTION to BASIC_BLOCK_FOR_FN. + * ipa-utils.c (ipa_merge_profiles): Likewise. + * lto-streamer-in.c (make_new_block): Update for renaming of + SET_BASIC_BLOCK_FOR_FUNCTION to SET_BASIC_BLOCK_FOR_FN. + (input_cfg): Update for renamings. + * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. + (dump_function_to_file): Update for renaming of + basic_block_info_for_function to basic_block_info_for_fn. + +2013-12-09 Richard Biener + + PR middle-end/38474 + * tree-ssa-structalias.c (set_union_with_increment): Remove + unreachable code. + (do_complex_constraint): Call set_union_with_increment with + the solution delta, not the full solution. + (make_transitive_closure_constraints): Merge the two constraints. + +2013-12-09 Richard Earnshaw + + * arm.c (mem_ok_for_ldrd_strd): Rename first argument as MEM. Do + more address validation checks. + +2013-12-09 Marek Polacek + + PR sanitizer/59415 + * vtable-verify.c (verify_bb_vtables): Check the return value + of gimple_call_fn. Use is_gimple_call instead of gimple_code. + +2013-12-09 Kyrylo Tkachov + + * config/arm/arm.md (generic_sched): Add cortexa12. + (generic_vfp): Likewise. + * config/arm/arm.c (cortexa12_extra_costs): New cost table. + (arm_cortex_a12_tune): New tuning struct. + * config/arm/arm-cores.def: Add cortex-a12. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-tune.md: Likewise. + * config/arm/bpabi.h: Add cortex-a12. + * doc/invoke.texi: Document -mcpu=cortex-a12. + +2013-12-09 Francois-Xavier Coudert + + * doc/install.texi (Prerequisites): Explicitly mention C library + and its headers for multilib builds. + +2013-12-08 Oleg Endo + + PR target/52898 + PR target/51697 + * common/config/sh/sh-common.c (sh_option_optimization_table): Remove + OPT_mcbranchdi entry. + * config/sh/sh.opt (mcbranchdi, mcmpeqdi): Mark as undocumented and + emit a warning. + * config/sh/sh.c (sh_option_override): Initialize TARGET_CBRANCHDI4 + and TARGET_CMPEQDI_T variables. + * doc/invoke.texi (SH options): Undocument -mcbranchdi and -mcmpeqdi. + +2013-12-07 Maxim Kuvyrkov + + * config/linux.h: Fix typo in a comment. + +2013-12-07 Maxim Kuvyrkov + + * config.gcc (*linux*): Split libc selection from Android support. + Add libc selection to all *linux* targets. Add Android support to + architectures that support it. + (arm*-*-linux-*, i[34567]86-*-linux*, x86_64-*-linux*,) + (mips*-*-linux*): Add Android support. + +2013-12-07 Alexander Ivchenko + Maxim Kuvyrkov + + * config/bfin/uclinux.h, config/c6x/uclinux-elf.h, + * config/lm32/uclinux-elf.h, config/m68k/uclinux.h, + * config/moxie/uclinux.h (TARGET_LIBC_HAS_FUNCTION): Move definitions + to linux.h. + * config/linux-android.h (TARGET_HAS_IFUNC_P): Move definition + to linux.h. + * config/linux.h (TARGET_LIBC_HAS_FUNCTION, TARGET_HAS_IFUNC_P): + Define appropriately for Linux and uClinux targets. + +2013-12-07 Maxim Kuvyrkov + + * config/linux.c (linux_has_ifunc_p): Use correct test. + +2013-12-07 Maxim Kuvyrkov + + * config/linux.c (linux_android_has_ifunc_p): Rename to + linux_has_ifunc_p. + (linux_android_libc_has_function): Rename to linux_libc_has_function. + * config/linux-protos.h (linux_android_has_ifunc_p,) + (linux_android_libc_has_function): Update declarations. + * config/linux.h, config/linux-android.h, config/alpha/linux.h, + * config/rs6000/linux.h, config/rs6000/linux64.h: Update. + +2013-12-07 Maxim Kuvyrkov + + * linux-android.c: Rename to linux.c. + * t-linux-android: Rename to t-linux. Update references + to linux-android.c + * config.gcc: Update references to t-linux-android and linux-android.o. + +2013-12-07 Alan Modra + + * config/rs6000/rs6000.md (bswapdi2_32bit): Remove ?? from r->r + alternative. + +2013-12-07 Ralf Corsépius + + * config.gcc (microblaze*-*-rtems*): Add TARGET_BIG_ENDIAN_DEFAULT. + +2013-12-06 Vladimir Makarov + + * config/rs6000/rs600.md (*bswapdi2_64bit): Remove ?? from the + constraint. + +2013-12-06 Caroline Tice + + Submitting patch from Stephen Checkoway, s@cs.jhu.edu + * vtable-verify.c (verify_bb_vtables): Replace all uses of verified + vtable pointer with the results of the verification call, rather than + only the uses in the next statement. + +2013-12-06 Andrew Pinski + + PR target/59092 + * config/aarch64/aarch64.md (trap): New pattern. + +2013-12-06 Jakub Jelinek + + PR tree-optimization/59388 + * tree-ssa-reassoc.c (update_range_test): If op == range->exp, + gimplify tem after stmt rather than before it. + + * tree-data-ref.c (struct data_ref_loc_d): Replace pos field with ref. + (get_references_in_stmt): Don't record operand addresses, but + operands themselves. + (find_data_references_in_stmt, graphite_find_data_references_in_stmt): + Adjust for the pos -> ref change. + +2013-12-06 H.J. Lu + + * config.gcc: Change --with-cpu=ia to --with-cpu=intel. + + * config/i386/i386.c (cpu_names): Replace "ia" with "intel". + (processor_alias_table): Likewise. + (ix86_option_override_internal): Likewise. + * config/i386/i386.h (target_cpu_default): Replace + TARGET_CPU_DEFAULT_ia with TARGET_CPU_DEFAULT_intel. + + * doc/invoke.texi: Replace -mtune=ia with -mtune=intel. + +2013-12-06 Uros Bizjak + + PR target/59405 + * config/i386/i386.c (type_natural_mode): Properly handle + size 8 for !TARGET_64BIT. + +2013-12-06 Trevor Saunders + + * tree-ssa-pre.c (compute_antic_aux): Remove redundant call to + vec::release. + +2013-12-06 Ian Bolton + Mark Mitchell + + PR target/59091 + * config/arm/arm.md (trap): New pattern. + * config/arm/types.md: Added a type for trap. + +2013-12-06 Bernd Edlinger + + * expr.c (expand_assignment): Update bitregion_start and bitregion_end. + +2013-12-06 Eric Botcazou + + PR target/59316 + * config/sparc/sparc.h (SPARC_LOW_FE_EXCEPT_VALUES): Define. + * config/sparc/sol2.h (SPARC_LOW_FE_EXCEPT_VALUES): Redefine. + * config/sparc/sparc.c (TARGET_INIT_BUILTINS): Move around. + (TARGET_BUILTIN_DECL): Define. + (TARGET_ATOMIC_ASSIGN_EXPAND_FENV): Likewise. + (sparc32_initialize_trampoline): Adjust call to gen_flush. + (enum sparc_builtins): New enumeral type. + (sparc_builtins): New static array. + (sparc_builtins_icode): Likewise. + (def_builtin): Accept a separate icode and save the result. + (def_builtin_const): Likewise. + (sparc_fpu_init_builtins): New function. + (sparc_vis_init_builtins): Pass the builtin code. + (sparc_init_builtins): Call it if TARGET_FPU. + (sparc_builtin_decl): New function. + (sparc_expand_builtin): Deal with SPARC_BUILTIN_{LD,ST}FSR. + (sparc_handle_vis_mul8x16): Use the builtin code. + (sparc_fold_builtin): Likewise. Deal with SPARC_BUILTIN_{LD,ST}FSR + and SPARC_BUILTIN_PDISTN. + (compound_expr): New helper function. + (sparc_atomic_assign_expand_fenv): New function. + * config/sparc/sparc.md (unspecv): Reorder values, add UNSPECV_LDFSR + and UNSPECV_STFSR. + (flush, flushdi): Merge into single pattern. + (ldfsr): New instruction. + (stfsr): Likewise. + +2013-12-06 Oleg Endo + + * asan.c: Remove struct tags when referring to class varpool_node. + * cgraph.h: Likewise. + * cgraphbuild.c: Likewise. + * cgraphunit.c: Likewise. + * dbxout.c: Likewise. + * dwarf2out.c: Likewise. + * gimple-fold.c: Likewise. + * ipa-devirt.c: Likewise. + * ipa-ref-inline.h: Likewise. + * ipa-ref.h: Likewise. + * ipa-reference.c: Likewise. + * ipa-utils.c: Likewise. + * ipa.c: Likewise. + * lto-cgraph.c: Likewise. + * lto-streamer-out.c: Likewise. + * lto-streamer.h: Likewise. + * passes.c: Likewise. + * toplev.c: Likewise. + * tree-eh.c: Likewise. + * tree-emutls.c: Likewise. + * tree-pass.h: Likewise. + * tree-ssa-structalias.c: Likewise. + * tree-vectorizer.c: Likewise. + * tree.c: Likewise. + * varasm.c: Likewise. + * varpool.c: Likewise. + +2013-12-06 Oleg Endo + + * cgraphunit.c: Remove struct tags when referring to class + ipa_opt_pass_d or class opt_pass. + * function.h: Likewise. + * lto-cgraph.c: Likewise. + * pass_manager.h: Likewise. + * passes.c: Likewise. + * tree-pass.h: Likewise. + +2013-12-06 Richard Biener + + PR tree-optimization/59058 + * tree-vectorizer.h (struct _loop_vec_info): Add num_itersm1 member. + (LOOP_VINFO_NITERSM1): New macro. + * tree-vect-loop-manip.c (slpeel_tree_peel_loop_to_edge): Express + the vector loop entry test in terms of scalar latch executions. + (vect_do_peeling_for_alignment): Update LOOP_VINFO_NITERSM1. + * tree-vect-loop.c (vect_get_loop_niters): Also return the + number of latch executions. + (new_loop_vec_info): Initialize LOOP_VINFO_NITERSM1. + (vect_analyze_loop_form): Likewise. + (vect_generate_tmps_on_preheader): Compute the number of + vectorized iterations differently. + +2013-12-05 Jan-Benedict Glaw + + * config/score/score.c (score_force_temporary): Delete function. + (score_split_symbol): Ditto. + * config/score/score.h (ASM_OUTPUT_ADDR_DIFF_ELT): Add extra + parentheses to silence ambiguity warning and reindent. + +2013-12-05 Marek Polacek + + * doc/invoke.texi: Document -fsanitize=signed-integer-overflow. + +2013-12-05 H.J. Lu + + * config.gcc: Support --with-cpu=ia. + + * config/i386/i386.c (cpu_names): Add "ia". + (processor_alias_table): Likewise. + (ix86_option_override_internal): Disallow -march=ia. + * config/i386/i386.h (target_cpu_default): Add TARGET_CPU_DEFAULT_ia. + + * doc/invoke.texi: Document -mtune=ia. + +2013-12-05 Vladimir Makarov + + PR rtl-optimization/59317 + * lra-constraints.c (in_class_p): Don't ignore insn with constant + as a source. + +2013-12-05 Martin Jambor + + PR ipa/58253 + * ipa-prop.c (ipa_modify_formal_parameters): Create decls of + non-BLKmode in their naturally aligned type. + +2013-12-05 Marek Polacek + + PR sanitizer/59333 + PR sanitizer/59397 + * ubsan.c: Include rtl.h and expr.h. + (ubsan_encode_value): Add new parameter. If expanding, assign + a stack slot for DECL_RTL of the temporary and call expand_assignment. + Handle BOOLEAN_TYPE and ENUMERAL_TYPE. + (ubsan_build_overflow_builtin): Adjust ubsan_encode_value call. + * ubsan.h (ubsan_encode_value): Adjust declaration. + * internal-fn.c (ubsan_expand_si_overflow_addsub_check): Move + ubsan_build_overflow_builtin above expand_normal call. Surround + this call with push_temp_slots and pop_temp_slots. + (ubsan_expand_si_overflow_neg_check): Likewise. + (ubsan_expand_si_overflow_mul_check): Likewise. + +2013-12-05 Yufeng Zhang + + * gimple-ssa-strength-reduction.c (find_basis_for_candidate): Guard + the get_alternative_base call with flag_expensive_optimizations. + (alloc_cand_and_find_basis): Likewise. + +2013-12-05 Tejas Belagod + + * rtlanal.c (set_noop_p): Return nonzero in case of redundant + vec_select for overlapping register lanes. + +2013-12-05 Kirill Yukhin + + * config/i386/i386.c (ix86_expand_builtin): Generate + reg for readflags built-in when optimizing. + * config/i386/i386.md (*pushfl): Rename to ... + (pushfl2): This. Fix iterator. + (*popfl): Rename to ... + (*popfl1): This. Fix iterator. + +2013-12-05 Kirill Yukhin + + * config/i386/i386.c (IX86_BUILTIN_READ_FLAGS): New. + (IX86_BUILTIN_WRITE_FLAGS): Ditto. + (ix86_init_mmx_sse_builtins): Define + __builtin_ia32_writeeflags_u32, __builtin_ia32_writeeflags_u64, + __builtin_ia32_readeflags_u32, __builtin_ia32_readeflags_u64. + (ix86_expand_builtin): Expand them. + * config/i386/ia32intrin.h (__readeflags): New. + (__writeeflags): Ditto. + * config/i386/i386.md (*pushfl): Ditto. + (*popfl1): Ditto. + +2013-12-05 Richard Biener + + PR tree-optimization/59374 + * tree-vect-data-refs.c (vect_slp_analyze_data_ref_dependence): + Commonize known and unknown dependence case fixing the allowed + read-write dependence case and dropping code that should not matter. + +2013-12-05 Kirill Yukhin + + * config/ia64/ia64.md (prologue_allocate_stack): Block auto- + generation of predicated version. + (epilogue_deallocate_stack): Ditto. + (prologue_allocate_stack_pr): Add explicit predicated version. + (epilogue_deallocate_stack_pr): Ditto. + * config/ia64/ia64.c (ia64_single_set): Use explicit version. + +2013-12-05 Alan Modra + + * configure.ac (BUILD_CXXFLAGS) Don't use ALL_CXXFLAGS for + build != host. + : Clear GMPINC. Don't bother + saving CFLAGS. + +2013-12-04 Jakub Jelinek + Marek Polacek + + * opts.c (common_handle_option): Handle + -fsanitize=signed-integer-overflow. + * config/i386/i386.md (addv4, subv4, mulv4, + negv3, negv3_1): Define expands. + (*addv4, *subv4, *mulv4, *negv3): Define insns. + * sanitizer.def (BUILT_IN_UBSAN_HANDLE_ADD_OVERFLOW, + BUILT_IN_UBSAN_HANDLE_SUB_OVERFLOW, + BUILT_IN_UBSAN_HANDLE_MUL_OVERFLOW, + BUILT_IN_UBSAN_HANDLE_NEGATE_OVERFLOW): Define. + * ubsan.h (PROB_VERY_UNLIKELY, PROB_EVEN, PROB_VERY_LIKELY, + PROB_ALWAYS): Define. + (ubsan_build_overflow_builtin): Declare. + * gimple-fold.c (gimple_fold_stmt_to_constant_1): Add folding of + internal functions. + * ubsan.c (PROB_VERY_UNLIKELY): Don't define here. + (ubsan_build_overflow_builtin): New function. + (instrument_si_overflow): Likewise. + (ubsan_pass): Add signed integer overflow checking. + (gate_ubsan): Enable the pass also when SANITIZE_SI_OVERFLOW. + * flag-types.h (enum sanitize_code): Add SANITIZE_SI_OVERFLOW. + * internal-fn.c: Include ubsan.h and target.h. + (ubsan_expand_si_overflow_addsub_check): New function. + (ubsan_expand_si_overflow_neg_check): Likewise. + (ubsan_expand_si_overflow_mul_check): Likewise. + (expand_UBSAN_CHECK_ADD): Likewise. + (expand_UBSAN_CHECK_SUB): Likewise. + (expand_UBSAN_CHECK_MUL): Likewise. + * fold-const.c (fold_binary_loc): Don't fold A + (-B) -> A - B and + (-A) + B -> B - A when doing the signed integer overflow checking. + * internal-fn.def (UBSAN_CHECK_ADD, UBSAN_CHECK_SUB, UBSAN_CHECK_MUL): + Define. + * tree-vrp.c (extract_range_basic): Handle internal calls. + * optabs.def (addv4_optab, subv4_optab, mulv4_optab, negv4_optab): New + optabs. + * asan.c: Include predict.h. + (PROB_VERY_UNLIKELY, PROB_ALWAYS): Don't define here. + * predict.c: Move the PROB_* macros... + * predict.h (enum br_predictor): ...here. + (PROB_LIKELY, PROB_UNLIKELY): Define. + * trans-mem.c: Include predict.h. + (PROB_VERY_UNLIKELY, PROB_ALWAYS, PROB_VERY_LIKELY, + PROB_LIKELY, PROB_UNLIKELY): Don't define here. + +2013-12-04 Jeff Law + + * common.opt: Split up -fisolate-erroneous-paths into + -fisolate-erroneous-paths-dereference and + -fisolate-erroneous-paths-attribute. + * invoke.texi: Corresponding changes. + * gimple.c (infer_nonnull_range): Add and use new arguments to control + what kind of statements can be used to infer a non-null range. + * gimple.h (infer_nonnull_range): Update prototype. + * tree-vrp.c (infer_value_range): Corresponding changes. + * opts.c (default_options_table): Update due to option split. + * gimple-ssa-isolate-paths.c: Fix trailing whitespace. + (find_implicit_erroneous_behaviour): Pass additional arguments + to infer_nonnull_range. + (find_explicit_erroneous_behaviour): Similarly. + (gate_isolate_erroneous_paths): Check both of the new options. + +2013-12-04 Jeff Law + + * expr.c (expand_assignment): Update comments. + +2013-12-04 Tobias Burnus + + PR debug/37132 + * lto-streamer.h (LTO_tags): Add LTO_namelist_decl_ref. + * tree.def (NAMELIST_DECL): Add. + * tree.h (NAMELIST_DECL_ASSOCIATED_DECL): New macro. + * tree.c (initialize_tree_contains_struct): Add asserts for it. + * dwarf2out.c (gen_namelist_decl): New function. + (gen_decl_die, dwarf2out_decl): Call it. + (dwarf2out_imported_module_or_decl_1): Handle NAMELIST_DECL. + * lto-streamer-in.c (lto_input_tree_ref): Handle NAMELIST_DECL. + (lto_input_tree_ref, lto_input_tree_1): Update lto_tag_check_range + call. + * lto-streamer-out.c (lto_output_tree_ref): Handle NAMELIST_DECL. + +2013-12-03 Xinliang David Li + + * tree-ssa-structalias.c (constraint_set_union): Change return type + from void to bool. + (merge_node_constraints): Ditto. + (unify_nodes): Update changed set when constraints set changes. + +2013-12-04 H.J. Lu + + * configure.ac: Append gdbasan.in to .gdbinit if CFLAGS contains + -fsanitize=address. + * configure: Regenerated. + + * gdbasan.in: New file. + +2013-12-04 Jakub Jelinek + + PR rtl-optimization/58726 + * combine.c (force_to_mode): Fix comment typo. Don't destructively + modify x for ROTATE, ROTATERT and IF_THEN_ELSE. + +2013-12-04 Jakub Jelinek + Uros Bizjak + + PR target/59163 + * config/i386/i386.c (ix86_legitimate_combined_insn): If for + !TARGET_AVX there is misaligned MEM operand with vector mode + and get_attr_ssememalign is 0, return false. + (ix86_expand_special_args_builtin): Add get_pointer_alignment + computed alignment and for non-temporal loads/stores also + at least GET_MODE_ALIGNMENT as MEM_ALIGN. + * config/i386/sse.md + (_loadu, + _storeu, + _loaddqu, + _storedqu, _lddqu, + sse_vmrcpv4sf2, sse_vmrsqrtv4sf2, sse2_cvtdq2pd, sse_movhlps, + sse_movlhps, sse_storehps, sse_loadhps, sse_loadlps, + *vec_interleave_highv2df, *vec_interleave_lowv2df, + *vec_extractv2df_1_sse, sse2_movsd, sse4_1_v8qiv8hi2, + sse4_1_v4qiv4si2, sse4_1_v4hiv4si2, + sse4_1_v2qiv2di2, sse4_1_v2hiv2di2, + sse4_1_v2siv2di2, sse4_2_pcmpestr, *sse4_2_pcmpestr_unaligned, + sse4_2_pcmpestri, sse4_2_pcmpestrm, sse4_2_pcmpestr_cconly, + sse4_2_pcmpistr, *sse4_2_pcmpistr_unaligned, sse4_2_pcmpistri, + sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Add ssememalign attribute. + * config/i386/i386.md (ssememalign): New define_attr. + +2013-12-04 Jakub Jelinek + + PR tree-optimization/59355 + * ipa-devirt.c (gate_ipa_devirt): Return false if !flag_devirtualize. + * opts.c (common_handle_option): Fix comment spelling. + +2013-12-04 Yufeng Zhang + + * gimple-ssa-strength-reduction.c: Include tree-affine.h. + (name_expansions): New static variable. + (alt_base_map): Ditto. + (get_alternative_base): New function. + (find_basis_for_candidate): For CAND_REF, optionally call + find_basis_for_base_expr with the returned value from + get_alternative_base. + (record_potential_basis): Add new parameter 'base' of type 'tree'; + add an assertion of non-NULL base; use base to set node->base_expr. + (alloc_cand_and_find_basis): Update; call record_potential_basis + for CAND_REF with the returned value from get_alternative_base. + (replace_refs): Dump details on the replacing. + (execute_strength_reduction): Call pointer_map_create for + alt_base_map; call free_affine_expand_cache with &name_expansions. + +2013-12-03 Wei Mi + + PR rtl-optimization/59020 + * sched-deps.c (try_group_insn): Move it from haifa-sched.c to here. + (sched_analyze_insn): Call try_group_insn. + (sched_analyze): Cleanup SCHED_GROUP_P before start the analysis. + * haifa-sched.c (try_group_insn): Moved to sched-deps.c. + (group_insns_for_macro_fusion): Removed. + (sched_init): Remove calling group_insns_for_macro_fusion. + +2013-12-03 Peter Bergner + + * config/rs6000/htmintrin.h (_TEXASR_INSTRUCTION_FETCH_CONFLICT): Fix + typo in macro name. + (_TEXASRU_INSTRUCTION_FETCH_CONFLICT): Likewise. + +2013-12-03 Vladimir Makarov + + * config/aarch64/aarch64.c (aarch64_frame_pointer_required): Check + LR_REGNUM. + (aarch64_can_eliminate): Don't check elimination source when + frame_pointer_required is false. + +2013-12-03 Senthil Kumar Selvaraj + + * config/avr/avr.c (avr_option_override): Warn if asked to generate + position independent code. + * config/avr/avr.h: Modify LINK_SPEC to reject -shared. + +2013-12-03 H.J. Lu + + PR target/59363 + * config/i386/i386.c (emit_memset): Adjust destination address + after gen_strset. + (expand_setmem_epilogue): Likewise. + +2013-12-03 Marek Polacek + + PR middle-end/56344 + * calls.c (expand_call): Disallow passing huge arguments by value. + +2013-12-03 Jakub Jelinek + + PR tree-optimization/59362 + * tree-object-size.c (object_sizes): Change into array of + vec. + (compute_builtin_object_size): Check computed bitmap for + non-NULL instead of object_sizes. Call safe_grow on object_sizes + vector if new SSA_NAMEs appeared. + (init_object_sizes): Check computed bitmap for non-NULL. + Call safe_grow on object_sizes elements instead of initializing + it with XNEWVEC. + (fini_object_sizes): Call release on object_sizes elements, don't + set it to NULL. + + PR middle-end/59011 + * gimplify.c (nonlocal_vla_vars): New variable. + (gimplify_var_or_parm_decl): Put VAR_DECLs for VLAs into + nonlocal_vla_vars chain. + (gimplify_body): Call declare_vars on nonlocal_vla_vars chain + if outer_bind has DECL_INITIAL (current_function_decl) block. + + PR target/58864 + * dojump.c (save_pending_stack_adjust, restore_pending_stack_adjust): + New functions. + * expr.h (struct saved_pending_stack_adjust): New type. + (save_pending_stack_adjust, restore_pending_stack_adjust): New + prototypes. + * optabs.c (emit_conditional_move): Call save_pending_stack_adjust + and get_last_insn before do_pending_stack_adjust, call + restore_pending_stack_adjust after delete_insns_since. + * expr.c (expand_expr_real_2): Don't call do_pending_stack_adjust + before calling emit_conditional_move. + * expmed.c (expand_sdiv_pow2): Likewise. + * calls.c (expand_call): Use {save,restore}_pending_stack_adjust. + +2013-12-02 Jeff Law + + PR tree-optimization/59322 + * tree-ssa-threadedge.c (create_edge_and_update_destination_phis): + Remove code which copied jump threading paths. + +2013-12-02 Sriraman Tallam + + PR target/58944 + * config/i386/i386.opt (ix86_arch_string): Mark this variable + for saving in cl_target_option. + (ix86_tune_string): Ditto. + (ix86_cmodel): Ditto. + (ix86_abi): Ditto. + (ix86_asm_dialect): Ditto. + (ix86_branch_cost): Ditto. + (ix86_dump_tunes): Ditto. + (ix86_force_align_arg_pointer): Ditto. + (ix86_force_drap): Ditto. + (ix86_incoming_stack_boundary_arg): Ditto. + (ix86_pmode): Ditto. + (ix86_preferred_stack_boundary_arg): Ditto. + (ix86_recip_name): Ditto. + (ix86_regparm): Ditto. + (ix86_section_threshold): Ditto. + (ix86_sse2avx): Ditto. + (ix86_stack_protector_guard): Ditto. + (ix86_stringop_alg): Ditto. + (ix86_tls_dialect): Ditto. + (ix86_tune_ctrl_string): Ditto. + (ix86_tune_memcpy_strategy): Ditto. + (ix86_tune_memset_strategy): Ditto. + (ix86_tune_no_default): Ditto. + (ix86_veclibabi_type): Ditto. + * config/i386/i386.c (function_specific_save): Save the above + variables in gcc_options to cl_target_option. + (function_specific_restore): Do the reverse done in + function_specific_save. + (ix86_valid_target_attribute_tree): Change ix86_arch_string + and ix86_tune_string to use the opts structure. + (ix86_option_override_internal):Change + ix86_incoming_stack_boundary_arg to + opts->x_ix86_incoming_stack_boundary_arg + +2013-12-02 Joern Rennecke + + * config/epiphany/epiphany.h: Wrap rtl_opt_pass declarations + in #ifndef IN_LIBGCC2 / #endif. + +2013-12-02 Jakub Jelinek + + PR tree-optimization/59358 + * tree-vrp.c (union_ranges): To check for the partially overlapping + ranges or adjacent ranges, also compare *vr0max with vr1max. + +2013-12-02 Sterling Augustine   + + * dwarf2out.c (output_pubnames): Use comp_unit_die ()->die_offset + when there isn't a skeleton die. + +2013-12-02 Marek Polacek + + PR sanitizer/59353 + * doc/invoke.texi: Document -fsanitize=return. + +2013-12-02 Tobias Burnus + Manuel López-Ibáñez + + PR middle-end/59257 + * doc/invoke.texi: Add missing @opindex. + (-fsanitize=): Use @gcctabopt instead of @itemize. + +2013-12-02 Bernd Edlinger + + Fix C++0x memory model for unaligned fields in packed, aligned(4) + structures with -fno-strict-volatile-bitfields on STRICT_ALIGNMENT + targets like arm-none-eabi. + * expr.c (expand_assignment): Handle normal fields like bit regions. + +2013-12-02 Bernd Edlinger + + PR target/58115 + * function.c (invoke_set_current_function_hook): Call + targetm.set_current_function after setting this_fn_optabs. + +2013-12-02 Richard Biener + + PR tree-optimization/59139 + * tree-ssa-loop-niter.c (chain_of_csts_start): Properly match + code in get_val_for. + (get_val_for): Use gcc_checking_asserts. + +2013-12-02 Richard Biener + + PR middle-end/59199 + * tree-ssa-operands.c (opf_implicit): Remove. + (opf_address_taken): New flag. + (get_expr_operands): Remove early out, pass down opf_address_taken for + ADDR_EXPRs, add a use operand only for non-opf_address_taken bases. + (get_indirect_ref_operands): Rename to ... + (get_mem_ref_operands): ... this. + (get_asm_expr_operands): Rename to ... + (get_asm_stmt_operands): ... this. + +2013-12-02 Yuri Rumyantsev + + * ipa-inline.c (check_callers): Add missed pointer de-reference. + +2013-12-02 Eric Botcazou + + PR tree-optimization/59356 + * tree-dfa.h (get_addr_base_and_unit_offset_1) : Do the + offset computation using the precision of the index type. + +2013-12-02 Yvan Roux + + PR target/58785 + * config/arm/arm.c (arm_preferred_reload_class): Only return LO_REGS + when rclass is GENERAL_REGS. + +2013-12-02 Ganesh Gopalasubramanian + + * loop-unroll.c (decide_unroll_constant_iterations): Check macro + TARGET_LOOP_UNROLL_ADJUST while deciding unroll factor. + +2013-12-01 Eric Botcazou + + * config/i386/winnt.c (i386_pe_asm_named_section): Be prepared for an + identifier node. + +2013-12-01 Bernd Edlinger + + * expr.c (emit_group_store): Fix off-by-one BITFIELD_END argument. + +2013-11-30 Paulo Matos + Eric Botcazou + + * combine.c (reg_nonzero_bits_for_combine): Apply mask transformation + as applied to nonzero_sign_valid when last_set_mode has less precision + than mode. + +2013-11-30 Tobias Burnus + + PR sanitizer/59275 + * doc/invoke.texi (-fsanitize=address,leak): Mention the associated + environment variable and link to a list with flags. + (-fsanitize=thread): Ditto and update link. + +2013-11-29 Vladimir Makarov + + PR rtl-optimization/59340 + * lra.c (check_rtl): Use recog_memoized instead of insn_invalid_p. + + Revert + 2013-11-20 Robert Suchanek + + * lra.c (lra): Set lra_in_progress before check_rtl call. + * recog.c (insn_invalid_p): Add !lra_in_progress to prevent + adding clobber regs when LRA is running. + +2013-11-29 Kyrylo Tkachov + + PR target/59289 + * config/arm/arm.c (cortexa15_extra_costs): Adjust costs. + +2013-11-29 Richard Biener + + PR middle-end/59208 + * tree-ssa-operands.h (fini_ssa_operands, verify_ssa_operands, + free_stmt_operands, update_stmt_operands): Add struct function + argument. + * tree-ssa-operands.c: Remove uses of cfun, propagate struct + function argument from fini_ssa_operands, verify_ssa_operands, + free_stmt_operands and update_stmt_operands everywhere. + * tree-ssanames.h (release_ssa_name_fn): New. + (release_ssa_name): Inline wrapper around release_ssa_name_fn. + * tree-ssanames.c (release_ssa_name): Rename to ... + (release_ssa_name_fn): ... this and add struct function argument. + * gimple-ssa.h (update_stmt, update_stmt_if_modified): Adjust. + (update_stmt_fn): New function. + * tree-cfg.c (move_block_to_fn): Adjust. + * tree-if-conv.c (free_bb_predicate): Likewise. + * tree-ssa.c (verify_ssa): Likewise. + (delete_tree_ssa): Likewise. + * gimple-pretty-print.c (dump_gimple_mem_ops): Remove guard. + * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Call + update_stmt_fn instead of update_stmt. + +2013-11-29 Yvan Roux + + * config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Return NO_REGS + for LRA. + +2013-11-29 Yvan Roux + + * config/arm/arm.md (store_minmaxsi): Use only when + optimize_function_for_size_p. + +2013-11-29 Jakub Jelinek + Yury Gribov + + PR sanitizer/59063 + * config/gnu-user.h: Removed old code for setting up sanitizer libs. + * gcc.c: Using libsanitizer spec instead of explicit libs. + +2013-11-29 Ilya Enkovich + + Reverted: + 2013-11-20 Ilya Enkovich + * cgraph.h (varpool_node): Add need_bounds_init field. + * lto-cgraph.c (lto_output_varpool_node): Output + need_bounds_init value. + (input_varpool_node): Read need_bounds_init value. + * varpool.c (dump_varpool_node): Dump need_bounds_init field. + + Reverted: + 2013-11-20 Ilya Enkovich + * dbxout.c (dbxout_type): Ignore POINTER_BOUNDS_TYPE. + * dwarf2out.c (gen_subprogram_die): Ignore bound args. + (gen_type_die_with_usage): Skip pointer bounds. + (dwarf2out_global_decl): Likewise. + + Reverted: + 2013-11-18 Ilya Enkovich + * builtin-types.def (BT_FN_PTR_CONST_PTR_VAR): New. + * chkp-builtins.def (BUILT_IN_CHKP_BIND_BOUNDS): New. + * cfgexpand.c (expand_call_stmt): Expand BUILT_IN_CHKP_BIND_BOUNDS. + * gimple.c (gimple_call_get_nobnd_arg_index): Remove. + * gimple.h (gf_mask): Add GF_CALL_WITH_BOUNDS. + (gimple_call_with_bounds_p): New. + (gimple_call_set_with_bounds): New. + (gimple_call_num_nobnd_args): Remove. + (gimple_call_nobnd_arg): Remove. + * tree.h (CALL_WITH_BOUNDS_P): New. + * rtl.h (CALL_EXPR_WITH_BOUNDS_P): New. + + Reverted: + 2013-11-08 Ilya Enkovich + * common.opt (fcheck-pointer-bounds): Move to ... + * c-family/c.opt: ... here. + * langhooks-def.h (LANG_HOOKS_CHKP_SUPPORTED): Remove. + (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CHKP_SUPPORTED. + * langhooks.h (lang_hooks): Remove chkp_supported field. + * toplev.c (process_options): Remove chkp_supported check. + + Reverted: + 2013-10-30 Ilya Enkovich + * tree-core.h (tree_index): Add TI_POINTER_BOUNDS_TYPE. + * tree.h (POINTER_BOUNDS_P): New. + (BOUNDED_TYPE_P): New. + (BOUNDED_P): New. + (pointer_bounds_type_node): New. + * tree.c (build_common_tree_nodes): Initialize + pointer_bounds_type_node. + * gimple.h (gimple_call_get_nobnd_arg_index): New. + (gimple_call_num_nobnd_args): New. + (gimple_call_nobnd_arg): New. + (gimple_return_retbnd): New. + (gimple_return_set_retbnd): New + * gimple.c (gimple_build_return): Increase number of ops + for return statement. + (gimple_call_get_nobnd_arg_index): New. + * gimple-pretty-print.c (dump_gimple_return): Print second op. + + Reverted: + 2013-10-30 Ilya Enkovich + * ipa.c (cgraph_build_static_cdtor_1): Support contructors + with "chkp ctor" and "bnd_legacy" attributes. + * gimplify.c (gimplify_init_constructor): Avoid infinite + loop during gimplification of bounds initializer. + + Reverted: + 2013-10-30 Ilya Enkovich + * c-family/c-common.c (handle_bnd_variable_size_attribute): New. + (handle_bnd_legacy): New. + (c_common_attribute_table): Add bnd_variable_size and bnd_legacy. + * doc/extend.texi: Document bnd_variable_size and bnd_legacy + attributes. + + Reverted: + 2013-10-29 Ilya Enkovich + * builtin-types.def (BT_FN_VOID_CONST_PTR): New. + (BT_FN_PTR_CONST_PTR): New. + (BT_FN_CONST_PTR_CONST_PTR): New. + (BT_FN_PTR_CONST_PTR_SIZE): New. + (BT_FN_PTR_CONST_PTR_CONST_PTR): New. + (BT_FN_VOID_PTRPTR_CONST_PTR): New. + (BT_FN_VOID_CONST_PTR_SIZE): New. + (BT_FN_PTR_CONST_PTR_CONST_PTR_SIZE): New. + * chkp-builtins.def: New. + * builtins.def: include chkp-builtins.def. + (DEF_CHKP_BUILTIN): New. + * builtins.c (expand_builtin): Support BUILT_IN_CHKP_INIT_PTR_BOUNDS, + BUILT_IN_CHKP_NULL_PTR_BOUNDS, BUILT_IN_CHKP_COPY_PTR_BOUNDS, + BUILT_IN_CHKP_CHECK_PTR_LBOUNDS, BUILT_IN_CHKP_CHECK_PTR_UBOUNDS, + BUILT_IN_CHKP_CHECK_PTR_BOUNDS, BUILT_IN_CHKP_SET_PTR_BOUNDS, + BUILT_IN_CHKP_NARROW_PTR_BOUNDS, BUILT_IN_CHKP_STORE_PTR_BOUNDS, + BUILT_IN_CHKP_GET_PTR_LBOUND, BUILT_IN_CHKP_GET_PTR_UBOUND, + BUILT_IN_CHKP_BNDMK, BUILT_IN_CHKP_BNDSTX, BUILT_IN_CHKP_BNDCL, + BUILT_IN_CHKP_BNDCU, BUILT_IN_CHKP_BNDLDX, BUILT_IN_CHKP_BNDRET, + BUILT_IN_CHKP_INTERSECT, BUILT_IN_CHKP_ARG_BND, BUILT_IN_CHKP_NARROW, + BUILT_IN_CHKP_EXTRACT_LOWER, BUILT_IN_CHKP_EXTRACT_UPPER. + * common.opt (fcheck-pointer-bounds): New. + * toplev.c (process_options): Check Pointer Bounds Checker is + supported. + * doc/extend.texi: Document Pointer Bounds Checker built-in functions. + + Reverted: + 2013-10-30 Ilya Enkovich + * target.def (builtin_chkp_function): New. + (chkp_bound_type): New. + (chkp_bound_mode): New. + (fn_abi_va_list_bounds_size): New. + (load_bounds_for_arg): New. + (store_bounds_for_arg): New. + * targhooks.h (default_load_bounds_for_arg): New. + (default_store_bounds_for_arg): New. + (default_fn_abi_va_list_bounds_size): New. + (default_chkp_bound_type): New. + (default_chkp_bound_mode): New. + (default_builtin_chkp_function): New. + * targhooks.c (default_load_bounds_for_arg): New. + (default_store_bounds_for_arg): New. + (default_fn_abi_va_list_bounds_size): New. + (default_chkp_bound_type): New. + (default_chkp_bound_mode); New. + (default_builtin_chkp_function): New. + * doc/tm.texi.in (TARGET_FN_ABI_VA_LIST_BOUNDS_SIZE): New. + (TARGET_LOAD_BOUNDS_FOR_ARG): New. + (TARGET_STORE_BOUNDS_FOR_ARG): New. + (TARGET_BUILTIN_CHKP_FUNCTION): New. + (TARGET_CHKP_BOUND_TYPE): New. + (TARGET_CHKP_BOUND_MODE): New. + * doc/tm.texi: Regenerated. + * langhooks.h (lang_hooks): Add chkp_supported field. + * langhooks-def.h (LANG_HOOKS_CHKP_SUPPORTED): New. + (LANG_HOOKS_INITIALIZER); Add LANG_HOOKS_CHKP_SUPPORTED. + + Reverted: + 2013-10-24 Ilya Enkovich + * config/i386/constraints.md (B): New. + (Ti): New. + (Tb): New. + * config/i386/i386-c.c (ix86_target_macros_internal): Add __MPX__. + * config/i386/i386-modes.def (BND32): New. + (BND64): New. + * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): New. + * config/i386/i386.c (isa_opts): Add mmpx. + (regclass_map): Add bound registers. + (dbx_register_map): Likewise. + (dbx64_register_map): Likewise. + (svr4_dbx_register_map): Likewise. + (PTA_MPX): New. + (ix86_option_override_internal): Support MPX ISA. + (ix86_conditional_register_usage): Support bound registers. + (print_reg): Likewise. + (ix86_code_end): Add MPX bnd prefix. + (output_set_got): Likewise. + (ix86_output_call_insn): Likewise. + (ix86_print_operand): Add '!' (MPX bnd) print prefix support. + (ix86_print_operand_punct_valid_p): Likewise. + (ix86_print_operand_address): Support UNSPEC_BNDMK_ADDR and + UNSPEC_BNDMK_ADDR. + (ix86_class_likely_spilled_p): Add bound regs support. + (ix86_hard_regno_mode_ok): Likewise. + (x86_order_regs_for_local_alloc): Likewise. + (ix86_bnd_prefixed_insn_p): New. + * config/i386/i386.h (FIRST_PSEUDO_REGISTER): Fix to new value. + (FIXED_REGISTERS): Add bound registers. + (CALL_USED_REGISTERS): Likewise. + (REG_ALLOC_ORDER): Likewise. + (HARD_REGNO_NREGS): Likewise. + (TARGET_MPX): New. + (VALID_BND_REG_MODE): New. + (FIRST_BND_REG): New. + (LAST_BND_REG): New. + (reg_class): Add BND_REGS. + (REG_CLASS_NAMES): Likewise. + (REG_CLASS_CONTENTS): Likewise. + (BND_REGNO_P): New. + (ANY_BND_REG_P): New. + (BNDmode): New. + (HI_REGISTER_NAMES): Add bound registers. + * config/i386/i386.md (UNSPEC_BNDMK): New. + (UNSPEC_BNDMK_ADDR): New. + (UNSPEC_BNDSTX): New. + (UNSPEC_BNDLDX): New. + (UNSPEC_BNDLDX_ADDR): New. + (UNSPEC_BNDCL): New. + (UNSPEC_BNDCU): New. + (UNSPEC_BNDCN): New. + (UNSPEC_MPX_FENCE): New. + (BND0_REG): New. + (BND1_REG): New. + (type): Add mpxmov, mpxmk, mpxchk, mpxld, mpxst. + (length_immediate): Likewise. + (prefix_0f): Likewise. + (memory): Likewise. + (prefix_rep): Check for bnd prefix. + (length_nobnd): New. + (length): Use length_nobnd if specified. + (BND): New. + (bnd_ptr): New. + (BNDCHECK): New. + (bndcheck): New. + (*jcc_1): Add bnd prefix and rename length attr to length_nobnd. + (*jcc_2): Likewise. + (jump): Likewise. + (simple_return_internal): Likewise. + (simple_return_pop_internal): Likewise. + (*indirect_jump): Add MPX bnd prefix. + (*tablejump_1): Likewise. + (simple_return_internal_long): Likewise. + (simple_return_indirect_internal): Likewise. + (_mk): New. + (*_mk): New. + (mov): New. + (*mov_internal_mpx): New. + (_): New. + (*_): New. + (_ldx): New. + (*_ldx): New. + (_stx): New. + (*_stx): New. + * config/i386/predicates.md (lea_address_operand): Rename to... + (address_no_seg_operand): ... this. + (address_mpx_no_base_operand): New. + (address_mpx_no_index_operand): New. + (bnd_mem_operator): New. + * config/i386/i386.opt (mmpx): New. + * doc/invoke.texi: Add documentation for the flags -mmpx, -mno-mpx. + * doc/rtl.texi Add documentation for BND32mode and BND64mode. + + Reverted: + 2013-10-24 Ilya Enkovich + * mode-classes.def (MODE_POINTER_BOUNDS): New. + * tree.def (POINTER_BOUNDS_TYPE): New. + * genmodes.c (complete_mode): Support MODE_POINTER_BOUNDS. + (POINTER_BOUNDS_MODE): New. + (make_pointer_bounds_mode): New. + * machmode.h (POINTER_BOUNDS_MODE_P): New. + * stor-layout.c (int_mode_for_mode): Support MODE_POINTER_BOUNDS. + (layout_type): Support POINTER_BOUNDS_TYPE. + * tree-pretty-print.c (dump_generic_node): Support POINTER_BOUNDS_TYPE. + * tree.c (build_int_cst_wide): Support POINTER_BOUNDS_TYPE. + (type_contains_placeholder_1): Likewise. + * tree.h (POINTER_BOUNDS_TYPE_P): New. + * varasm.c (output_constant): Support POINTER_BOUNDS_TYPE. + * doc/rtl.texi (MODE_POINTER_BOUNDS): New. + +2013-11-29 Richard Biener + + PR middle-end/59338 + * tree-cfg.c (verify_expr): Restrict bounds verification of + BIT_FIELD_REF arguments to non-aggregate typed base objects. + +2013-11-29 Richard Biener + + PR tree-optimization/59334 + * tree-ssa-dce.c (eliminate_unnecessary_stmts): Fix bug + in previous commit. + +2013-11-29 Jakub Jelinek + Richard Biener + + PR lto/59326 + * omp-low.c (simd_clone_create): Return NULL if for definition + !cgraph_function_with_gimple_body_p (old_node). Call cgraph_get_body + before calling cgraph_function_versioning. + (expand_simd_clones): Look for "omp declare simd" attribute first. + Don't check targetm.simd_clone.compute_vecsize_and_simdlen here. + Punt if node->global.inlined_to. + (pass_omp_simd_clone::gate): Also enable if in_lto_p && !flag_wpa. + Disable pass if targetm.simd_clone.compute_vecsize_and_simdlen is NULL. + * lto-streamer-out.c (hash_tree): Handle OMP_CLAUSE. + +2013-11-29 Jakub Jelinek + + PR lto/59326 + * tree-core.h (enum omp_clause_schedule_kind): Add + OMP_CLAUSE_SCHEDULE_LAST. + (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_LAST. + (enum omp_clause_depend_kind): Add OMP_CLAUSE_DEPEND_LAST. + (enum omp_clause_map_kind): Add OMP_CLAUSE_MAP_LAST. + (enum omp_clause_proc_bind_kind): Add OMP_CLAUSE_PROC_BIND_LAST. + * lto-streamer-out.c (lto_is_streamable): Allow streaming OMP_CLAUSE. + (DFS_write_tree_body): Handle OMP_CLAUSE. + * tree-streamer-out.c (pack_ts_omp_clause_value_fields): New function. + (streamer_pack_tree_bitfields): Call it for OMP_CLAUSE. + (write_ts_omp_clause_tree_pointers): New function. + (streamer_write_tree_body): Call it for OMP_CLAUSE. + (streamer_write_tree_header): For OMP_CLAUSE stream OMP_CLAUSE_CODE. + * tree-streamer-in.c (unpack_ts_omp_clause_value_fields): New function. + (unpack_value_fields): Call it for OMP_CLAUSE. + (streamer_alloc_tree): Handle OMP_CLAUSE. + (lto_input_ts_omp_clause_tree_pointers): New function. + (streamer_read_tree_body): Call it for OMP_CLAUSE. + +2013-11-29 Joseph Myers + + * doc/implement-c.texi: Document C11 implementation-defined + behavior. Refer to -ffp-contract=fast for contraction behavior. + * doc/invoke.texi (-std=c99, std=c11): Update description of + completeness. + (-std=gnu99): Don't mention as future default. + (-std=gnu11): Mention as intended future default. + * doc/standards.texi: Update descriptions of C99 and C11 support. + Limit statement about C99 facilities for freestanding + implementations to some platforms only. + +2013-11-28 Jakub Jelinek + + PR middle-end/59327 + * cfgexpand.c (expand_used_vars): Avoid warning on 32-bit HWI hosts. + +2013-11-28 Vladimir Makarov + + PR target/57293 + * ira.h (ira_setup_eliminable_regset): Remove parameter. + * ira.c (ira_setup_eliminable_regset): Ditto. Add + SUPPORTS_STACK_ALIGNMENT for crtl->stack_realign_needed. + Don't call lra_init_elimination. + (ira): Call ira_setup_eliminable_regset without arguments. + * loop-invariant.c (calculate_loop_reg_pressure): Remove argument + from ira_setup_eliminable_regset call. + * gcse.c (calculate_bb_reg_pressure): Ditto. + * haifa-sched.c (sched_init): Ditto. + * lra.h (lra_init_elimination): Remove the prototype. + * lra-int.h (lra_insn_recog_data): New member sp_offset. Move + used_insn_alternative upper. + (lra_eliminate_regs_1): Add one more parameter. + (lra-eliminate): Ditto. + * lra.c (lra_invalidate_insn_data): Set sp_offset. + (setup_sp_offset): New. + (lra_process_new_insns): Call setup_sp_offset. + (lra): Add argument to lra_eliminate calls. + * lra-constraints.c (get_equiv_substitution): Rename to get_equiv. + (get_equiv_with_elimination): New. + (process_addr_reg): Call get_equiv_with_elimination instead of + get_equiv_substitution. + (equiv_address_substitution): Ditto. + (loc_equivalence_change_p): Ditto. + (loc_equivalence_callback, lra_constraints): Ditto. + (curr_insn_transform): Ditto. Print the sp offset + (process_alt_operands): Prevent stack pointer reloads. + (lra_constraints): Remove one argument from lra_eliminate call. + Move it up. Mark used hard regs bfore it. Use + get_equiv_with_elimination instead of get_equiv_substitution. + * lra-eliminations.c (lra_eliminate_regs_1): Add parameter and + assert for param values combination. Use sp offset. Add argument + to lra_eliminate_regs_1 calls. + (lra_eliminate_regs): Add argument to lra_eliminate_regs_1 call. + (curr_sp_change): New static var. + (mark_not_eliminable): Add parameter. Update curr_sp_change. + Don't prevent elimination to sp if we can calculate its change. + Pass the argument to mark_not_eliminable calls. + (eliminate_regs_in_insn): Add a parameter. Use sp offset. Add + argument to lra_eliminate_regs_1 call. + (update_reg_eliminate): Move calculation of hard regs for spill + lower. Switch off lra_in_progress temporarily to generate regs + involved into elimination. + (lra_init_elimination): Rename to init_elimination. Make it + static. Set up insn sp offset, check the offsets at the end of BBs. + (process_insn_for_elimination): Add parameter. Pass its value to + eliminate_regs_in_insn. + (lra_eliminate): : Add parameter. Pass its value to + process_insn_for_elimination. Add assert for param values + combination. Call init_elimination. Don't update offsets in + equivalence substitutions. + * lra-spills.c (assign_mem_slot): Don't call lra_eliminate_regs_1 + for created stack slot. + (remove_pseudos): Call lra_eliminate_regs_1 before changing memory + onto stack slot. + +2013-11-28 Kyrylo Tkachov + + * config/arm/iterators.md (vrint_conds): New int attribute. + * config/arm/vfp.md (2): Set conds attribute. + (smax3): Likewise. + (smin3): Likewise. + +2013-11-28 Richard Sandiford + + * tree-core.h (tree_base): Document use of static_flag for SSA_NAME. + * tree.h (SSA_NAME_ANTI_RANGE_P, SSA_NAME_RANGE_TYPE): New macros. + * tree-ssanames.h (set_range_info): Add range_type argument. + (duplicate_ssa_name_range_info): Likewise. + * tree-ssanames.c (set_range_info): Take the range type as argument + and store it in SSA_NAME_ANTI_RANGE_P. + (duplicate_ssa_name_range_info): Likewise. + (get_range_info): Use SSA_NAME_ANTI_RANGE_P. + (set_nonzero_bits): Update call to set_range_info. + (duplicate_ssa_name_fn): Update call to duplicate_ssa_name_range_info. + * tree-ssa-copy.c (fini_copy_prop): Likewise. + * tree-vrp.c (remove_range_assertions): Update call to set_range_info. + (vrp_finalize): Likewise, passing anti-ranges directly. + +2013-11-28 Richard Biener + + PR tree-optimization/59330 + * tree-ssa-dce.c (eliminate_unnecessary_stmts): Simplify + and fix delayed marking of free calls not necessary. + +2013-11-28 Andrew MacLeod + + * tree-ssa-propagate.c (valid_gimple_call_p): Pass TREE_TYPE to + is_gimple_reg_type. + * ipa-prop.c (determine_known_aggregate_parts): Likewise. + +2013-11-28 Terry Guo + + * config/arm/arm.c (v7m_extra_costs): New table. + (arm_v7m_tune): Use it. + +2013-11-28 Rainer Orth + + * config/sol2.h (TIME_LIBRARY): Define. + +2013-11-28 Richard Biener + + PR lto/59323 + * lto-streamer-out.c (tree_is_indexable): TYPE_DECLs and + CONST_DECLs in function context are not indexable. + +2013-11-28 Chung-Ju Wu + + * config/nds32/nds32.c (nds32_rtx_costs): Adjust MULT cost if it is + not optimized for size. + +2013-11-28 Jakub Jelinek + + * cfgexpand.c (struct stack_vars_data): Add asan_base and asan_alignb + fields. + (expand_stack_vars): For -fsanitize=address, use (and set initially) + data->asan_base as base for vars and update asan_alignb. + (expand_used_vars): Initialize data.asan_base and data.asan_alignb. + Pass them to asan_emit_stack_protection. + * asan.c (asan_detect_stack_use_after_return): New variable. + (asan_emit_stack_protection): Add pbase and alignb arguments. + Implement use after return sanitization. + * asan.h (asan_emit_stack_protection): Adjust prototype. + (ASAN_STACK_MAGIC_USE_AFTER_RET, ASAN_STACK_RETIRED_MAGIC): Define. + +2013-11-28 Sergey Ostanevich + + * common.opt: Introduced a new option -fsimd-cost-model. + * doc/invoke.texi: Introduced a new openmp-simd warning and + a new -fsimd-cost-model option. + * tree-vectorizer.h (unlimited_cost_model): Interface updated + to rely on the particular loop info. + * tree-vect-data-refs.c (vect_peeling_hash_insert): Ditto. + (vect_peeling_hash_choose_best_peeling): Ditto. + (vect_enhance_data_refs_alignment): Ditto. + * tree-vect-slp.c (vect_slp_analyze_bb_1): Ditto. + * tree-vect-loop.c (vect_estimate_min_profitable_iters): Ditto + plus added openmp-simd warining. + +2013-11-27 H.J. Lu + + PR rtl-optimization/59311 + * dwarf2cfi.c (dwf_regno): Assert reg isn't pseudo register. + * lra-spills.c (spill_pseudos): Handle REG_XXX notes. + +2013-11-27 Eric Botcazou + + * var-tracking.c (track_expr_p): Do not track declarations for parts + of tracked parameters. + (add_stores): Do not track values for tracked parameters passed in + multiple locations. + (vt_get_decl_and_offset): Handle PARALLEL. + (vt_add_function_parameter): Handle parameters with incoming PARALLEL. + +2013-11-27 Jeff Law + + * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not + clobber the loop structure thread_block was unsuccessful. If + thread_block was unsuccessful, cleanup appropriately. + +2013-11-27 Chen Liqin + + * config/score/score.h (REG_CLASS_FROM_LETTER): Delete. + (score_char_to_class): Likewise. + +2013-11-27 Kenneth Zadeck + + * fold-const.c (int_const_binop_1): Make INT_MIN % -1 return 0 with + the overflow bit set. + +2013-11-27 Richard Biener + + PR middle-end/58723 + * cgraphbuild.c (build_cgraph_edges): Do not build edges + for internal calls. + (rebuild_cgraph_edges): Likewise. + * ipa-inline-analysis.c (estimate_function_body_sizes): + Skip internal calls. + * tree-inline.c (estimate_num_insns): Estimate size of internal + calls as 0. + (gimple_expand_calls_inline): Do not try inline-expanding + internal calls. + * lto-streamer-in.c (input_cfg): Stream loop safelen, + force_vect and simduid. + (input_struct_function_base): Stream has_force_vect_loops + and has_simduid_loops. + (input_function): Adjust. + * lto-streamer-out.c (output_cfg): Stream loop safelen, + force_vect and simduid. + (output_struct_function_base): Stream has_force_vect_loops + and has_simduid_loops. + +2013-11-27 Kai Tietz + + * config/i386/winnt.c (i386_pe_section_type_flags): Use const + pointer cast. + +2013-11-27 Kugan Vivekanandarajah + + * doc/tm.texi.in (TARGET_HAS_NO_HW_DIVIDE): Define. + * doc/tm.texi (TARGET_HAS_NO_HW_DIVIDE): Regenerate. + +2013-11-27 Marek Polacek + + PR sanitizer/59306 + * ubsan.c (instrument_null): Use gimple_store_p/gimple_assign_load_p + instead of walk_gimple_op. + (ubsan_pass): Adjust. Call instrument_null only if SANITIZE_NULL. + +2013-11-27 Aldy Hernandez + Jakub Jelinek + + * cgraph.h (enum cgraph_simd_clone_arg_type): New. + (struct cgraph_simd_clone_arg, struct cgraph_simd_clone): New. + (struct cgraph_node): Add simdclone and simd_clones fields. + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen, + ix86_simd_clone_adjust, ix86_simd_clone_usable): New functions. + (TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN, + TARGET_SIMD_CLONE_ADJUST, TARGET_SIMD_CLONE_USABLE): Define. + * doc/tm.texi.in (TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN, + TARGET_SIMD_CLONE_ADJUST, TARGET_SIMD_CLONE_USABLE): Add. + * doc/tm.texi: Regenerated. + * ggc.h (ggc_alloc_cleared_simd_clone_stat): New function. + * ipa-cp.c (determine_versionability): Fail if "omp declare simd" + attribute is present. + * omp-low.c: Include pretty-print.h, ipa-prop.h and tree-eh.h. + (simd_clone_vector_of_formal_parm_types): New function. + (simd_clone_struct_alloc, simd_clone_struct_copy, + simd_clone_vector_of_formal_parm_types, simd_clone_clauses_extract, + simd_clone_compute_base_data_type, simd_clone_mangle, + simd_clone_create, simd_clone_adjust_return_type, + create_tmp_simd_array, simd_clone_adjust_argument_types, + simd_clone_init_simd_arrays): New functions. + (struct modify_stmt_info): New type. + (ipa_simd_modify_stmt_ops, ipa_simd_modify_function_body, + simd_clone_adjust, expand_simd_clones, ipa_omp_simd_clone): New + functions. + (pass_data_omp_simd_clone): New variable. + (pass_omp_simd_clone): New class. + (make_pass_omp_simd_clone): New function. + * passes.def (pass_omp_simd_clone): New. + * target.def (TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN, + TARGET_SIMD_CLONE_ADJUST, TARGET_SIMD_CLONE_USABLE): New target hooks. + * target.h (struct cgraph_node, struct cgraph_simd_node): Declare. + * tree-core.h (OMP_CLAUSE_LINEAR_VARIABLE_STRIDE): Document. + * tree.h (OMP_CLAUSE_LINEAR_VARIABLE_STRIDE): Define. + * tree-pass.h (make_pass_omp_simd_clone): New prototype. + * tree-vect-data-refs.c: Include cgraph.h. + (vect_analyze_data_refs): Inline by hand find_data_references_in_loop + and find_data_references_in_bb, if find_data_references_in_stmt + fails, still allow calls to #pragma omp declare simd functions + in #pragma omp simd loops unless they contain data references among + the call arguments or in lhs. + * tree-vect-loop.c (vect_determine_vectorization_factor): Handle + calls with no lhs. + (vect_transform_loop): Allow NULL STMT_VINFO_VECTYPE for calls + without lhs. + * tree-vectorizer.h (enum stmt_vec_info_type): Add + call_simd_clone_vec_info_type. + (struct _stmt_vec_info): Add simd_clone_fndecl field. + (STMT_VINFO_SIMD_CLONE_FNDECL): Define. + * tree-vect-stmts.c: Include tree-ssa-loop.h, + tree-scalar-evolution.h and cgraph.h. + (vectorizable_call): Handle calls without lhs. Assert + !stmt_can_throw_internal instead of failing for it. Don't update + EH stuff. + (struct simd_call_arg_info): New. + (vectorizable_simd_clone_call): New function. + (vect_transform_stmt): Call it. + (vect_analyze_stmt): Likewise. Allow NULL STMT_VINFO_VECTYPE for + calls without lhs. + * ipa-prop.c (ipa_add_new_function): Only call ipa_analyze_node + if cgraph_function_with_gimple_body_p is true. + +2013-11-27 Tom de Vries + Marc Glisse + + PR middle-end/59037 + * fold-const.c (fold_indirect_ref_1): Don't create out-of-bounds + BIT_FIELD_REF. + * gimple-fold.c (gimple_fold_indirect_ref): Same. + * tree-cfg.c (verify_expr): Give error if BIT_FIELD_REF is + out-of-bounds. + +2013-11-27 Eric Botcazou + + PR middle-end/59138 + * expr.c (emit_group_store): Don't write past the end of the structure. + (store_bit_field): Fix formatting. + +2013-11-27 Richard Biener + + PR tree-optimization/59288 + * tree-vect-loop.c (get_initial_def_for_induction): Do not + re-analyze the PHI but use STMT_VINFO_LOOP_PHI_EVOLUTION_PART. + +2013-11-27 Marek Polacek + + * ubsan.c (ubsan_type_descriptor): If varpool_get_node returns NULL + for a decl, recreate that decl. Save into the hash table VAR_DECLs + rather than ADDR_EXPRs. + +2013-11-27 Alexander Ivchenko + + * config/ia64/hpux.h (TARGET_LIBC_HAS_FUNCTION): Fix typo. + +2013-11-26 David Malcolm + + * gengtype.c (struct seen_tag): New. + (already_seen_tag): New. + (mark_tag_as_seen): New. + (walk_subclasses): Support having multiple subclasses using the + same tag by tracking which tags have already been seen, and using + this to avoid adding duplicate cases to the "switch" statement. + The call to already_seen_tag introduces an O(N^2) when running + gengtype on N, the number of tags, due to the repeated linear + search, but currently max(N) is relatively small (the number of + GSS codes, which is 26). + (walk_type): Pass in a seen_tag for use by the walk_subclasses + recursion. + + * gimple.def (GIMPLE_OMP_ATOMIC_STORE, GIMPLE_OMP_RETURN): Rename + underlying GSS values for these codes (from GSS_OMP_ATOMIC_STORE to + GSS_OMP_ATOMIC_STORE_LAYOUT) to make clear that although + GIMPLE_OMP_RETURN happens to share the data layout of + GIMPLE_OMP_ATOMIC_STORE, they are not otherwise related. + (GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TARGET): Likewise, rename + underlying GSS value from GSS_OMP_PARALLEL to + GSS_OMP_PARALLEL_LAYOUT to make clear that these gimple codes are + not directly related; they merely share in-memory layout. + (GIMPLE_OMP_SINGLE, GIMPLE_OMP_TEAMS): Likewise, rename GSS values + for these two codes from GSS_OMP_SINGLE to GSS_OMP_SINGLE_LAYOUT. + + * gsstruct.def (GSS_OMP_PARALLEL, gimple_statement_omp_parallel): + Rename to... + (GSS_OMP_PARALLEL_LAYOUT, gimple_statement_omp_parallel_layout): + ...these. + (GSS_OMP_SINGLE, gimple_statement_omp_single): Rename to... + (GSS_OMP_SINGLE_LAYOUT, gimple_statement_omp_single_layout): ...these. + (GSS_OMP_ATOMIC_STORE, gimple_statement_omp_atomic_store): Rename to... + (GSS_OMP_ATOMIC_STORE_LAYOUT, gimple_statement_omp_atomic_store): + ...these. + + * gimple.h (gimple_statement_resx): New subclass of + gimple_statement_eh_ctrl, with the invariant that + stmt->code == GIMPLE_RESX. + (gimple_statement_eh_dispatch): New subclass of + gimple_statement_eh_ctrl, with the invariant that + stmt->code == GIMPLE_EH_DISPATH. + + (gimple_statement_omp_parallel): The existing class expressed + a layout (GSS_OMP_PARALLEL), but the codes with that layout + are not all related, so it makes more sense for this class to + express a *code* (GIMPLE_OMP_PARALLEL). GSS_OMP_PARALLEL has + been renamed to GSS_OMP_PARALLEL_LAYOUT to express this, so + rename the existing gimple_statement_omp_parallel class to... + (gimple_statement_omp_parallel_layout): ...this, expressing + a statement of structure layout GSS_OMP_PARALLEL_LAYOUT. + (gimple_statement_omp_taskreg): New subclass of + gimple_statement_omp_parallel_layout, expressing the invariant + that the code is one of GIMPLE_OMP_PARALLEL or GIMPLE_OMP_TASK, + as used by the various gimple_omp_taskreg_ accessors. + (gimple_statement_omp_parallel): Reintroduce this class, this time + as a subclass of gimple_statement_omp_taskreg to express the + invariant stmt->code == GIMPLE_OMP_PARALLEL. + (gimple_statement_omp_target) New class, subclassing + gimple_statement_omp_parallel_layout, to express the invariant + stmt->code == GIMPLE_OMP_TARGET. + (gimple_statement_omp_task): Update to inherit from + gimple_statement_omp_taskreg rather than + gimple_statement_omp_parallel. + + (gimple_statement_omp_single): Rename to... + (gimple_statement_omp_single_layout): ...this, expressing the + invariant that the layout is GSS_OMP_SINGLE_LAYOUT. + (gimple_statement_omp_single): ...and reintroduce this name as + a subclass of gimple_statement_omp_single_layout, expressing + the invariant that code == GIMPLE_OMP_SINGLE. + (gimple_statement_omp_teams): New class, subclassing + gimple_statement_omp_single_layout, for the code GIMPLE_OMP_TEAMS. + + (gimple_statement_omp_atomic_store): Rename to... + (gimple_statement_omp_atomic_store_layout): ...this, expressing + the invariant that the layout is GSS_OMP_ATOMIC_STORE_LAYOUT. + (gimple_statement_omp_atomic_store): ...and reintroduce this + name as a subclass of gimple_statement_omp_atomic_store_layout + with code == GIMPLE_OMP_ATOMIC_STORE. + (gimple_statement_omp_return): New class, subclassing + gimple_statement_omp_atomic_store_layout for the code + GIMPLE_OMP_RETURN. + + (is_a_helper ::test): Delete. + (is_a_helper ::test): New. + (is_a_helper ::test): New. + (is_a_helper ::test): Only + check for GIMPLE_OMP_ATOMIC_STORE, not for GIMPLE_OMP_RETURN. + (is_a_helper ::test): New. + (is_a_helper ::test): New. + (is_a_helper ::test): Only check + for GIMPLE_OMP_PARALLEL, not for GIMPLE_OMP_TASK or + GIMPLE_OMP_TARGET. + (is_a_helper ::test): New. + (is_a_helper ::test): Only check + for GIMPLE_OMP_SINGLE, not for GIMPLE_OMP_TEAMS. + (is_a_helper ::test): New. + + (is_a_helper ::test): Delete. + (is_a_helper ::test): New. + (is_a_helper ::test): New. + (is_a_helper ::test): Only + check for GIMPLE_OMP_ATOMIC_STORE, not for GIMPLE_OMP_RETURN. + (is_a_helper ::test): New. + (is_a_helper ::test): New. + (is_a_helper ::test): Only + check for GIMPLE_OMP_PARALLEL, not for GIMPLE_OMP_TASK or + GIMPLE_OMP_TARGET. + (is_a_helper ::test): New. + (is_a_helper ::test): Only + check for GIMPLE_OMP_SINGLE, not for GIMPLE_OMP_TEAMS. + (is_a_helper ::test): New. + + (gimple_omp_return_set_lhs, gimple_omp_return_lhs, + gimple_omp_return_lhs_ptr): Replace bogus downcasts to + gimple_statement_omp_atomic_store with downcasts to + gimple_statement_omp_return, thus requiring that the code be + GIMPLE_OMP_RETURN. + (gimple_resx_region, gimple_resx_set_region): Replace bogus + downcasts to gimple_statement_eh_ctrl with downcasts to + gimple_statement_resx, thus requiring that the code be GIMPLE_RESX. + (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): + Replace bogus downcasts to const gimple_statement_eh_ctrl with + downcasts to gimple_statement_eh_dispatch, thus requiring that + the code be GIMPLE_EH_DISPATCH. + (gimple_omp_taskreg_clauses, gimple_omp_taskreg_clauses_ptr) + gimple_omp_taskreg_set_clauses, gimple_omp_taskreg_child_fn, + gimple_omp_taskreg_child_fn_ptr, gimple_omp_taskreg_set_child_fn, + gimple_omp_taskreg_data_arg, gimple_omp_taskreg_data_arg_ptr, + gimple_omp_taskreg_set_data_arg): Replace bogus downcasts to + gimple_statement_omp_parallel with downcasts to + gimple_statement_omp_taskreg, thus requiring that the code be + either GIMPLE_OMP_PARALLEL or GIMPLE_OMP_TASK. + (gimple_omp_target_clauses, gimple_omp_target_clauses_ptr + gimple_omp_target_set_clauses, gimple_omp_target_child_fn + gimple_omp_target_child_fn_ptr, gimple_omp_target_set_child_fn + gimple_omp_target_data_arg, gimple_omp_target_data_arg_ptr + gimple_omp_target_set_data_arg): Replace bogus downcasts to + gimple_statement_omp_parallel with downcasts to + gimple_statement_omp_target, thus requiring that the code be + GIMPLE_OMP_TARGET. + (gimple_omp_teams_clauses, gimple_omp_teams_clauses_ptr + gimple_omp_teams_set_clauses): Replace bogus downcasts to + gimple_statement_omp_single with downcasts to + gimple_statement_omp_teams, thus requiring that the code be + GIMPLE_OMP_TEAMS. + + * gimple.c (gimple_build_resx): Fix bogus as_a<> to use + gimple_statement_resx. + (gimple_build_eh_dispatch): Fix bogus as_a<> to use + gimple_statement_eh_dispatch. + +2013-11-26 Jakub Jelinek + + PR tree-optimization/59014 + * tree-vrp.c (register_edge_assert_for_1): Don't look + through conversions from non-integral types or through + narrowing conversions. + + PR target/59229 + * config/i386/i386.c (device_alg): Fix up formatting. + (ix86_expand_set_or_movmem): Handle max_size < epilogue_size_needed + similarly to count && count < epilogue_size_needed. Fix up + comment typo. + * builtins.c (determine_block_size): Fix comment typo. + + PR sanitizer/59258 + * ubsan.c (ubsan_source_location): Don't add any location + to ADDR_EXPR in the ctor. Revert 2013-11-22 change. + (ubsan_create_data): Strip block info from LOC. + + PR middle-end/59273 + * tree-vect-generic.c (optimize_vector_constructor): Don't optimize + if there isn't optab handler for the corresponding vector PLUS_EXPR. + + PR rtl-optimization/59166 + * ira.c (find_moveable_pseudos): Use DF_REF_REAL_LOC instead of + DF_REF_LOC in validate_change call. + (split_live_ranges_for_shrink_wrap): Likewise. + + PR middle-end/59150 + * omp-low.c (lower_rec_input_clause): For reduction with placeholder + of references to constant size types in simd loops, defer emitting + initializer for the new_var, emit it later on only if not using + SIMD arrays for it. + + PR middle-end/59152 + * omp-low.c (expand_omp_for_static_chunk): Don't set loop->latch + for the inner loop if collapse_bb is non-NULL. + (expand_omp_simd): Use cont_bb rather than e->dest as latch. + +2013-11-26 Yufeng Zhang + + * config/arm/arm.c (arm_legitimize_address): Check xop1 is not + a constant immediate before force_reg. + +2013-11-26 Richard Biener + + PR tree-optimization/59245 + * tree-vrp.c (set_value_range): Assert that we don't have + overflowed constants (but our infinities). + (set_value_range_to_value): Drop all overflow flags. + (vrp_visit_phi_node): Likewise. + (vrp_visit_assignment_or_call): Use set_value_range_to_value + to set a constant range. + +2013-11-26 Kyrylo Tkachov + + PR target/59290 + * config/arm/arm.md (*zextendsidi_negsi): New pattern. + * config/arm/arm.c (arm_new_rtx_costs): Initialise cost correctly + for zero_extend case. + +2013-11-26 H.J. Lu + + PR bootstrap/55552 + * configure.ac (install_gold_as_default): New. Set to yes for + --disable-ld or --enable-gold=default. + (gcc_cv_ld_gold_srcdir): New. + (gcc_cv_ld): Also check in-tree gold if install_gold_as_default is yes. + (ORIGINAL_LD_BFD_FOR_TARGET): New AC_SUBST. + (ORIGINAL_LD_GOLD_FOR_TARGET): Likewise. + * configure: Regenerated. + + * exec-tool.in (ORIGINAL_LD_BFD_FOR_TARGET): New variable. + (ORIGINAL_LD_GOLD_FOR_TARGET): Likewise. + (original) [collect-ld && -fuse-ld=bfd]: Set to + $ORIGINAL_LD_BFD_FOR_TARGET. + (original) [collect-ld && -fuse-ld=gold]: Set to + $ORIGINAL_LD_GOLD_FOR_TARGET. + (dir) [collect-ld && ../gold/ld-new]: Set to gold. + (fast_install) [collect-ld && ../gold/ld-new]: Set to yes. + +2013-11-26 Terry Guo + + * config/arm/arm.c (require_pic_register): Handle high pic base + register for thumb-1. + (arm_load_pic_register): Also initialize high pic base register. + * doc/invoke.texi: Update documentation for option -mpic-register. + +2013-11-26 Oleg Endo + + PR target/58314 + PR target/50751 + * config/sh/sh.c (max_mov_insn_displacement, disp_addr_displacement): + Prefix function names with 'sh_'. Make them non-static. + * config/sh/sh-protos.h (sh_disp_addr_displacement, + sh_max_mov_insn_displacement): Add declarations. + * config/sh/constraints.md (Q): Reject QImode. + (Sdd): Use match_code "mem". + (Snd): Fix erroneous matching of non-memory operands. + * config/sh/predicates.md (short_displacement_mem_operand): New + predicate. + (general_movsrc_operand): Disallow PC relative QImode loads. + * config/sh/sh.md (*mov_reg_reg): Remove it. + (*movqi, *movhi): Merge both insns into... + (*mov): ... this new insn. Replace generic 'm' constraints with + 'Snd' and 'Sdd' constraints. Calculate insn length dynamically based + on the operand types. + +2013-11-26 Joern Rennecke + + * config/epiphany/epiphany.c (epiphany_expand_prologue): + Remove unused variable save_config. + (epiphany_compute_frame_size): Avoid signed/unsigned comparison in + assert. + +2013-11-26 James Greenhalgh + + * config/aarch64/arm_neon.h (vtbx1_8): Emulate behaviour + using other intrinsics. + (vtbx3_8): Likewise. + +2013-11-26 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_types_bsl_p_qualifiers): New. + (aarch64_types_bsl_s_qualifiers): Likewise. + (aarch64_types_bsl_u_qualifiers): Likewise. + (TYPES_BSL_P): Likewise. + (TYPES_BSL_S): Likewise. + (TYPES_BSL_U): Likewise. + (BUILTIN_VALLDIF): Likewise. + (BUILTIN_VDQQH): Likewise. + * config/aarch64/aarch64-simd-builtins.def (simd_bsl): New. + * config/aarch64/aarch64-simd.md + (aarch64_simd_bsl_internal): Handle more modes. + (aarch64_simd_bsl): Likewise. + * config/aarch64/arm_neon.h + (vbsl_<8,16,32,64): Implement using builtins. + * config/aarch64/iterators.md (VALLDIF): New. + (Vbtype): Handle more modes. + +2013-11-26 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_type_qualifiers): Add qualifier_poly. + (aarch64_build_scalar_type): Also build Poly types. + (aarch64_build_vector_type): Likewise. + (aarch64_build_type): Likewise. + (aarch64_build_signed_type): New. + (aarch64_build_unsigned_type): Likewise. + (aarch64_build_poly_type): Likewise. + (aarch64_init_simd_builtins): Also handle Poly types. + +2013-11-26 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (VAR1): Use new naming scheme for aarch64_builtins. + (aarch64_builtin_vectorized_function): Use new aarch64_builtins names. + +2013-11-26 Richard Biener + + PR tree-optimization/59287 + * tree-ssa-structalias.c (get_constraint_for_component_ref): + Remove no longer necessary special-casing of union accesses. + +2013-11-26 Richard Biener + + * pretty-print.c (output_buffer::~output_buffer): Really + free the obstacks. + +2013-11-25 Jeff Law + + * tree-ssa-threadupdate.c (thread_through_all_blocks): Selectively + invalidate loop information. + +2013-11-25 Oleg Endo + + * config/sh/sh.md (doloop_end_split): Add missing SI mode. + +2013-11-25 Oleg Endo + + PR target/53976 + PR target/59243 + * config/sh/sh_optimize_sett_clrt.cc (struct ccreg_value): Update + comments. + (sh_optimize_sett_clrt::find_last_ccreg_values): Check stack of + previously visited basic blocks before recursing instead of only one + basic block. + +2013-11-25 Kyrylo Tkachov + + * config/aarch64/aarch64.c (cortexa53_tuning): New struct. + * config/aarch64/aarch64-cores.def (cortex-a53): + Use cortexa53 tuning struct. + +2013-11-25 Andrew Macleod + + PR bootstrap/59260 + * fold-const.c: Include hash-table.h. + +2013-11-25 Marek Polacek + + PR sanitizer/59258 + * ubsan.c (ubsan_create_data): Increase the size of the fields array. + +2013-11-25 Richard Biener + + * tree-dfa.c: Remove unused convert.h include. + +2013-11-25 Terry Guo + + * doc/invoke.texi (-mslow-flash-data): Document new option. + * config/arm/arm.opt (mslow-flash-data): New option. + * config/arm/arm-protos.h (arm_max_const_double_inline_cost): + Declare it. + * config/arm/arm.h (TARGET_USE_MOVT): Always true when literal pools + are disabled. + (arm_disable_literal_pool): Declare it. + * config/arm/arm.c (arm_disable_literal_pool): New variable. + (arm_option_override): Handle new option. + (thumb2_legitimate_address_p): Don't allow symbol references when + literal pools are disabled. + (arm_max_const_double_inline_cost): New function. + * config/arm/arm.md (types.md): Include it before ... + (use_literal_pool): New attribute. + (enabled): Use new attribute. + (split pattern): Replace symbol+offset with MOVW/MOVT. + +2013-11-24 Steven Bosscher + + PR bootstrap/59279 + Revert previous commit. + +2013-11-24 Steven Bosscher + + * jump.c (reset_insn_reg_label_operand_notes): New function, + split out from ... + (init_label_info): ... here. Reset LABEL_NUSES in cfglayout mode. + * cfgcleanup.c (delete_dead_jump_tables_between): New function, + split out from ... + (delete_dead_jumptables): ... here. Handle cfglayout mode. + (cleanup_cfg): Delete dead jump tables in cfglayout mode if an + expensive CFG cleanup is called for. + * cfgrtl.c (fixup_reorder_chain): Remove BARRIERs from fallthru paths. + (cfg_layout_finalize): Delete dead jump tables before re-building + the insns chain. + * ira.c (ira): Rebuild jump labels *after* deleting unreachable + basic blocks, not before. + * loop-init.c (rtl_loop_done): Call for an expensive CFG cleanup. + + * modulo-sched.c (sms_schedule): Do not look for BARRIERs in the + insns chain of a scheduling extended basic block, they cannot appear + there in cfglayout mode. + +2013-11-24 Tobias Burnus + + * doc/invoke.texi (-fsanitize=leak): Add link to the wiki page. + +2013-11-24 Bill Schmidt + + * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Correct + for little endian. + +2013-11-24 H.J. Lu + + * graphite-sese-to-poly.c: Don't include extra "expr.h". + +2013-11-23 Eric Botcazou + + * cilk-common.c (expand_builtin_cilk_detach): Dereference worker. + +2013-11-23 David Edelson + Andrew Dixie + + PR target/33704 + * config/rs6000/aix.h (COLLECT_SHARED_INIT_FUNC): Define. + (COLLECT_SHARED_FINI_FUNC): Define. + + * collect2.c (aix_shared_initname): Declare. + (aix_shared_fininame): Declare. + (symkind): Add SYM_AIXI and SYM_AIXD. + (scanfilter_masks): Add SCAN_AIXI and SCAN_AIXD. + (struct names special): Add GLOBAL__AIXI_ and GLOBAL__AIXD_. + (aixlazy_flag): Parse. + (extract_init_priority): SYM_AIXI and SYM_AIXD have highest priority. + (scan_prog_file, COFF): Handle SYM_AIXI and SYM_AIXD. + +2013-11-23 David Edelsohn + + * config/rs6000/rs6000.c (IN_NAMED_SECTION): New macro. + (rs6000_xcoff_select_section): Place decls with stricter alignment + into named sections. + (rs6000_xcoff_unique_section): Allow unique sections for + uninitialized data with strict alignment. + +2013-11-23 Jakub Jelinek + + PR tree-optimization/59154 + * tree-ssa-reassoc.c (maybe_optimize_range_tests): When changing + rhs1 of a cast and new_op is invariant, fold_convert it. + * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Only call + simplify_conversion_from_bitmask if rhs1 is a SSA_NAME. + +2013-11-23 Uros Bizjak + + PR target/56788 + * config/i386/i386.c (bdesc_multi_arg) : + Declare as MULTI_ARG_1_SF instruction. + : Decleare as MULTI_ARG_1_DF instruction. + * config/i386/sse.md (*xop_vmfrcz2): Rename + from *xop_vmfrcz_. + * config/i386/xopintrin.h (_mm_frcz_ss): Use __builtin_ia32_movss + to merge scalar result with __A. + (_mm_frcz_sd): Use __builtin_ia32_movsd to merge scalar + result with __A. + +2013-11-23 Eric Botcazou + + * gimplify.h (recalculate_side_effects): Delete. + * gimplify.c (recalculate_side_effects): Make static and add comment. + +2013-11-23 Richard Sandiford + + * config/sh/sh.md: Use nonimmediate_operand rather than general_operand + for the destination of a define_peephole2. Likewise register_operand + rather than arith_reg_operand. Remove constraints from + define_peephole2s. + +2013-11-23 Richard Sandiford + + * config/mn10300/mn10300-protos.h (mn10300_store_multiple_operation): + Delete. + (mn10300_store_multiple_operation_p): Declare. + * config/mn10300/mn10300.c (mn10300_store_multiple_operation): + Rename to... + (mn10300_store_multiple_operation_p): ...this and remove mode + argument. + * config/mn10300/predicates.md (mn10300_store_multiple_operation): + Define. + +2013-11-23 Richard Sandiford + + * config/bfin/bfin-protos.h (push_multiple_operation): Delete. + (pop_multiple_operation): Delete. + (analyze_push_multiple_operation): Declare. + (analyze_pop_multiple_operation): Declare. + * config/bfin/bfin.c (push_multiple_operation): Rename to... + (analyze_push_multiple_operation): ...this and remove mode argument. + (pop_multiple_operation): Rename to... + (analyze_pop_multiple_operation): ...this and remove mode argument. + * config/bfin/predicates.md (push_multiple_operation): Define. + (pop_multiple_operation): Likewise. + +2013-11-23 Alan Modra + + * config/rs6000/vsx.md (fusion peepholes): Disable when !TARGET_VSX. + +2013-11-22 Jakub Jelinek + + PR sanitizer/59061 + * common.opt (static-liblsan): Add. + * config/gnu-user.h (STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): + Define. + * flag-types.h (enum sanitize_code): Add SANITIZE_LEAK. Renumber + SANITIZE_SHIFT, SANITIZE_DIVIDE, SANITIZE_UNREACHABLE, SANITIZE_VLA, + SANITIZE_RETURN. + * opts.c (common_handle_option): Handle -fsanitize=leak. + * gcc.c (ADD_STATIC_LIBLSAN_LIBS, LIBLSAN_SPEC): Define. + (LIBUBSAN_SPEC): Don't test LIBUBSAN_EARLY_SPEC. + (LIBUBSAN_EARLY_SPEC): Remove. + (SANITIZER_EARLY_SPEC): Don't do anything for libubsan. + (SANITIZER_SPEC): Add -fsanitize=leak handling. + (sanitize_spec_function): Handle %sanitize(leak). + * doc/invoke.texi (-static-liblsan, -fsanitize=leak): Document. + +2013-11-22 Aldy Hernandez + Jakub Jelinek + + * ipa.c (symtab_remove_unreachable_nodes): Fix up comment typos. + * ipa-prop.c (get_vector_of_formal_parm_types): Renamed to ... + (ipa_get_vector_of_formal_parm_types): ... this. No longer static. + (ipa_modify_formal_parameters): Adjust caller. Remove + synth_parm_prefix argument. Use operator enum instead of bit fields. + Add assert for properly handling vector of references. Handle + creating brand new parameters. + (ipa_modify_call_arguments): Use operator enum instead of bit + fields. + (ipa_combine_adjustments): Same. Assert that IPA_PARM_OP_NEW is not + used. + (ipa_modify_expr, get_ssa_base_param, ipa_get_adjustment_candidate): + New functions. + (ipa_dump_param_adjustments): Rename reduction to new_decl. + Use operator enum instead of bit fields. + * ipa-prop.h (enum ipa_parm_op): New. + (struct ipa_parm_adjustment): New field op. Rename reduction + to new_decl, new_arg_prefix to arg_prefix and remove remove_param + and copy_param. + (ipa_modify_formal_parameters): Remove last argument. + (ipa_get_vector_of_formal_parm_types, ipa_modify_expr, + ipa_get_adjustment_candidate): New prototypes. + * tree-sra.c (turn_representatives_into_adjustments): Use operator + enum. Set arg_prefix. + (get_adjustment_for_base): Use operator enum. + (sra_ipa_modify_expr): Rename to ipa_modify_expr and move to + ipa-prop.c. + (sra_ipa_modify_assign): Rename sra_ipa_modify_expr to ipa_modify_expr. + (ipa_sra_modify_function_body): Same. No longer static. + (sra_ipa_reset_debug_stmts): Use operator enum. + (modify_function): Do not pass prefix argument. + +2013-11-22 Jakub Jelinek + + * ubsan.c (ubsan_source_location): Don't crash on unknown locations. + (ubsan_pass): Ignore clobber stmts. + + * sanitizer.def (BUILT_IN_UBSAN_HANDLE_MISSING_RETURN): New built-in. + * opts.c (common_handle_option): Add -fsanitize=return. + * flag-types.h (enum sanitize_code): Add SANITIZE_RETURN and + or it into SANITIZE_UNDEFINED. + + * sanitizer.def (BUILT_IN_ASAN_BEFORE_DYNAMIC_INIT, + BUILT_IN_ASAN_AFTER_DYNAMIC_INIT): New. + * asan.c (instrument_derefs): Handle also VAR_DECL loads/stores. + Don't instrument accesses to VAR_DECLs which are known to fit + into their bounds and the vars are known to have shadow bytes + indicating allowed access. + (asan_dynamic_init_call): New function. + (asan_add_global): If vnode->dynamically_initialized, + set __has_dynamic_init to 1 instead of 0. + (initialize_sanitizer_builtins): Add BT_FN_VOID_CONST_PTR var. + * asan.h (asan_dynamic_init_call): New prototype. + * cgraph.h (varpool_node): Add dynamically_initialized bitfield. + +2013-11-22 Martin Jambor + + PR rtl-optimization/10474 + * ira.c (interesting_dest_for_shprep_1): New function. + (interesting_dest_for_shprep): Use interesting_dest_for_shprep_1, + also check parallels. + +2013-11-22 Jeff Law + + * tree-ssa-threadedge.c (record_temporary_equivalence): Handle + NULL for RHS, which we used to invalidate equivalences. + (record_temporary_equivalences_from_phis): New bitmap arguments + and a boolean indicating if we have passed a backedge. If we + have passed a backedge, then set the appropriate bit in the + bitmaps for the SRC & DEST of PHIs creating equivalences. + (invalidate_equivalences, dummy_simplify): New functions. + (cond_arg_set_in_b): Remove. + (record_temporary_equivalences_from_stmts_at_dest): New bitmap + arguments and a boolean indicating if we have passed a backedge. + If we have passed a backedge, then perform invalidations as needed. + (thread_around_empty_blocks): If we have seen a backedge, then + use the dummy simplify routine. + (thread_through_normal_block): Likewise. Pass bitmaps and + backedge status to children. Do not pessimize so much when + traversing backedges in the CFG. + (thread_across_edge): Manage the SRC_MAP/DST_MAP bitmaps. + If we have seen a backedge, then use the dummy simplify routine. + Do not pessimize so much when traversing backedges. + +2013-11-22 Hans-Peter Nilsson + + * config/cris/cris.c (cris_atomic_align_for_mode): New function. + (TARGET_ATOMIC_ALIGN_FOR_MODE): Define. + +2013-11-22 Yuri Rumyantsev + + * config/i386/i386.c (processor_alias_table): Enable PTA_AES, + PTA_PCLMUL and PTA_RDRND for Silvermont. + * config/i386/driver-i386.c (host_detect_local_cpu): Set up cpu + for Silvermont. + + * doc/invoke.texi: Mention AES, PCLMUL and RDRND for Silvermont. + +2013-11-22 Andrew MacLeod + + * hooks.h (hook_uint_mode_0): Add Prototype. + * hooks.c (hook_uint_mode_0): New default function. + * target.def (atomic_align_for_mode): New target hook. + * tree.c (build_atomic_base): Add alignment override parameter. + (build_common_tree_nodes): Use atomic alignment override. + * doc/tm.texi.in (TARGET_ATOMIC_ALIGN_FOR_MODE): Define. + * doc/tm.texi (TARGET_ATOMIC_ALIGN_FOR_MODE): Add description. + +2013-11-22 Andrew MacLeod + + * gimple.h: Remove all includes. + (recalculate_side_effects): Move prototype to gimplify.h. + * Makefile.in (PLUGIN_HEADERS): Add flattened gimple.h includes. + * gengtype.c (open_base_files): Add gimple.h include list. + * gimplify.h (recalculate_side_effects): Relocate prototype here. + * gimple.c: Adjust include list. + (recalculate_side_effects): Move to gimplify.c. + * gimplify.c: Adjust include list. + (recalculate_side_effects): Relocate from gimple.c. + * alias.c: Add required include files removed from gimple.h. + * asan.c: Likewise. + * builtins.c: Likewise. + * calls.c: Likewise. + * cfgexpand.c: Likewise. + * cfgloop.c: Likewise. + * cfgloopmanip.c: Likewise. + * cgraphbuild.c: Likewise. + * cgraph.c: Likewise. + * cgraphclones.c: Likewise. + * cgraphunit.c: Likewise. + * cilk-common.c: Likewise. + * data-streamer.c: Likewise. + * data-streamer-in.c: Likewise. + * data-streamer-out.c: Likewise. + * dse.c: Likewise. + * dwarf2out.c: Likewise. + * emit-rtl.c: Likewise. + * except.c: Likewise. + * expr.c: Likewise. + * fold-const.c: Likewise. + * function.c: Likewise. + * gimple-builder.c: Likewise. + * gimple-expr.c: Likewise. + * gimple-fold.c: Likewise. + * gimple-iterator.c: Likewise. + * gimple-low.c: Likewise. + * gimple-pretty-print.c: Likewise. + * gimple-ssa-isolate-paths.c: Likewise. + * gimple-ssa-strength-reduction.c: Likewise. + * gimple-streamer-in.c: Likewise. + * gimple-streamer-out.c: Likewise. + * gimple-walk.c: Likewise. + * gimplify-me.c: Likewise. + * graphite-blocking.c: Likewise. + * graphite.c: Likewise. + * graphite-clast-to-gimple.c: Likewise. + * graphite-dependences.c: Likewise. + * graphite-interchange.c: Likewise. + * graphite-optimize-isl.c: Likewise. + * graphite-poly.c: Likewise. + * graphite-scop-detection.c: Likewise. + * graphite-sese-to-poly.c: Likewise. + * internal-fn.c: Likewise. + * ipa.c: Likewise. + * ipa-cp.c: Likewise. + * ipa-devirt.c: Likewise. + * ipa-inline-analysis.c: Likewise. + * ipa-inline.c: Likewise. + * ipa-profile.c: Likewise. + * ipa-prop.c: Likewise. + * ipa-pure-const.c: Likewise. + * ipa-reference.c: Likewise. + * ipa-split.c: Likewise. + * ipa-utils.c: Likewise. + * langhooks.c: Likewise. + * lto-cgraph.c: Likewise. + * lto-compress.c: Likewise. + * lto-opts.c: Likewise. + * lto-section-in.c: Likewise. + * lto-section-out.c: Likewise. + * lto-streamer.c: Likewise. + * lto-streamer-in.c: Likewise. + * lto-streamer-out.c: Likewise. + * omp-low.c: Likewise. + * opts-global.c: Likewise. + * passes.c: Likewise. + * predict.c: Likewise. + * profile.c: Likewise. + * sese.c: Likewise. + * stmt.c: Likewise. + * stor-layout.c: Likewise. + * symtab.c: Likewise. + * targhooks.c: Likewise. + * toplev.c: Likewise. + * tracer.c: Likewise. + * trans-mem.c: Likewise. + * tree-affine.c: Likewise. + * tree.c: Likewise. + * tree-call-cdce.c: Likewise. + * tree-cfg.c: Likewise. + * tree-cfgcleanup.c: Likewise. + * tree-chrec.c: Likewise. + * tree-complex.c: Likewise. + * tree-data-ref.c: Likewise. + * tree-dfa.c: Likewise. + * tree-eh.c: Likewise. + * tree-emutls.c: Likewise. + * tree-if-conv.c: Likewise. + * tree-inline.c: Likewise. + * tree-into-ssa.c: Likewise. + * tree-loop-distribution.c: Likewise. + * tree-nested.c: Likewise. + * tree-nrv.c: Likewise. + * tree-object-size.c: Likewise. + * tree-outof-ssa.c: Likewise. + * tree-parloops.c: Likewise. + * tree-phinodes.c: Likewise. + * tree-predcom.c: Likewise. + * tree-pretty-print.c: Likewise. + * tree-profile.c: Likewise. + * tree-scalar-evolution.c: Likewise. + * tree-sra.c: Likewise. + * tree-ssa-address.c: Likewise. + * tree-ssa-alias.c: Likewise. + * tree-ssa.c: Likewise. + * tree-ssa-ccp.c: Likewise. + * tree-ssa-coalesce.c: Likewise. + * tree-ssa-copy.c: Likewise. + * tree-ssa-copyrename.c: Likewise. + * tree-ssa-dce.c: Likewise. + * tree-ssa-dom.c: Likewise. + * tree-ssa-dse.c: Likewise. + * tree-ssa-forwprop.c: Likewise. + * tree-ssa-ifcombine.c: Likewise. + * tree-ssa-live.c: Likewise. + * tree-ssa-loop.c: Likewise. + * tree-ssa-loop-ch.c: Likewise. + * tree-ssa-loop-im.c: Likewise. + * tree-ssa-loop-ivcanon.c: Likewise. + * tree-ssa-loop-ivopts.c: Likewise. + * tree-ssa-loop-manip.c: Likewise. + * tree-ssa-loop-niter.c: Likewise. + * tree-ssa-loop-prefetch.c: Likewise. + * tree-ssa-loop-unswitch.c: Likewise. + * tree-ssa-math-opts.c: Likewise. + * tree-ssanames.c: Likewise. + * tree-ssa-operands.c: Likewise. + * tree-ssa-phiopt.c: Likewise. + * tree-ssa-phiprop.c: Likewise. + * tree-ssa-pre.c: Likewise. + * tree-ssa-propagate.c: Likewise. + * tree-ssa-reassoc.c: Likewise. + * tree-ssa-sccvn.c: Likewise. + * tree-ssa-sink.c: Likewise. + * tree-ssa-strlen.c: Likewise. + * tree-ssa-structalias.c: Likewise. + * tree-ssa-tail-merge.c: Likewise. + * tree-ssa-ter.c: Likewise. + * tree-ssa-threadedge.c: Likewise. + * tree-ssa-threadupdate.c: Likewise. + * tree-ssa-uncprop.c: Likewise. + * tree-ssa-uninit.c: Likewise. + * tree-stdarg.c: Likewise. + * tree-streamer.c: Likewise. + * tree-streamer-in.c: Likewise. + * tree-streamer-out.c: Likewise. + * tree-switch-conversion.c: Likewise. + * tree-tailcall.c: Likewise. + * tree-vect-data-refs.c: Likewise. + * tree-vect-generic.c: Likewise. + * tree-vect-loop.c: Likewise. + * tree-vect-loop-manip.c: Likewise. + * tree-vectorizer.c: Likewise. + * tree-vect-patterns.c: Likewise. + * tree-vect-slp.c: Likewise. + * tree-vect-stmts.c: Likewise. + * tree-vrp.c: Likewise. + * tsan.c: Likewise. + * ubsan.c: Likewise. + * value-prof.c: Likewise. + * varpool.c: Likewise. + * var-tracking.c: Likewise. + * vtable-verify.c: Likewise. + * config/darwin.c: Likewise. + * config/aarch64/aarch64-builtins.c: Likewise. + * config/aarch64/aarch64.c: Likewise. + * config/alpha/alpha.c: Likewise. + * config/i386/i386.c: Likewise. + * config/i386/winnt.c: Likewise. + * config/ia64/ia64.c: Likewise. + * config/m32c/m32c.c: Likewise. + * config/mep/mep.c: Likewise. + * config/mips/mips.c: Likewise. + * config/rs6000/rs6000.c: Likewise. + * config/s390/s390.c: Likewise. + * config/sh/sh.c: Likewise. + * config/sparc/sparc.c: Likewise. + * config/spu/spu.c: Likewise. + * config/stormy16/stormy16.c: Likewise. + * config/tilegx/tilegx.c: Likewise. + * config/tilepro/tilepro.c: Likewise. + * config/xtensa/xtensa.c: Likewise. + +2013-11-22 Richard Earnshaw + + PR target/59216 + * arm.md (negdi_extendsidi): Fix invalid split. + +2013-11-22 Alex Velenko + + * config/aarch64/arm_neon.h (vmov_n_f32): Implemented in C. + (vmov_n_f64): Likewise. + (vmov_n_p8): Likewise. + (vmov_n_p16): Likewise. + (vmov_n_s8): Likewise. + (vmov_n_s16): Likewise. + (vmov_n_s32): Likewise. + (vmov_n_s64): Likewise. + (vmov_n_u8): Likewise. + (vmov_n_u16): Likewise. + (vmov_n_u32): Likewise. + (vmov_n_u64): Likewise. + (vmovq_n_f32): Likewise. + (vmovq_n_f64): Likewise. + (vmovq_n_p8): Likewise. + (vmovq_n_p16): Likewise. + (vmovq_n_s8): Likewise. + (vmovq_n_s16): Likewise. + (vmovq_n_s32): Likewise. + (vmovq_n_s64): Likewise. + (vmovq_n_u8): Likewise. + (vmovq_n_u16): Likewise. + (vmovq_n_u32): Likewise. + (vmovq_n_u64): Likewise. + +2013-11-22 Tejas Belagod + + * config/aarch64/aarch64-simd.md (vec_pack_trunc_, + vec_pack_trunc_v2df, vec_pack_trunc_df): Swap for big-endian. + (reduc_plus_): Factorize V2DI into this. + (reduc_plus_): Change this to reduc_splus_ for floats + and also change to float UNSPEC. + (reduc_maxmin_uns>_): Remove V2DI. + * config/aarch64/arm_neon.h (vaddv_<8,16,32,64>, + vmaxv_<8,16,32,64>, vminv_<8,16,32,64>): Fix up scalar + result access for big-endian. + (__LANE0): New macro used to fix up lane access of 'across-lanes' + intrinsics for big-endian. + * config/aarch64/iterators.md (VDQV): Add V2DI. + (VDQV_S): New. + (vp): New mode attribute. + +2013-11-22 Tejas Belagod + + * config/aarch64/aarch64-simd.md (vec_pack_trunc_, + vec_pack_trunc_v2df, vec_pack_trunc_df): Swap source ops for + big-endian. + +2013-11-22 Tejas Belagod + + * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set): Adjust + for big-endian element order. + (aarch64_simd_vec_setv2di): Likewise. + (*aarch64_get_lane_extend, + *aarch64_get_lane_zero_extendsi, aarch64_get_lane): Likewise. + (vec_extract): Expand using aarch64_get_lane. + * config/aarch64/aarch64.h (ENDIAN_LANE_N): New. + +2013-11-22 Tejas Belagod + + * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Fix loads + and stores to be ABI compliant. + +2013-11-22 David Malcolm + + * input.h (input_line): Remove. + (input_filename): Likewise. + (in_system_header): Likewise. + * tree.h (EXPR_LOC_OR_HERE): Remove. + * config/bfin/bfin.c (output_file_start): Remove use of + input_filename macro. + * builtins.c (c_strlen): Remove use of EXPR_LOC_OR_HERE macro. + * gimplify.c (internal_get_tmp_var): Likewise. + EXPR_LOC_OR_HERE macro. + (shortcut_cond_expr): Likewise. + * tree-diagnostic.c (diagnostic_report_current_function): Remove + use of input_filename macro. + * tree.c (get_file_function_name): Likewise. + +2013-11-22 Kenneth Zadeck + + * store-layout.c (place-field): Fix hwi test and accessor mismatch. + +2013-11-22 Jakub Jelinek + + * expr.c (store_constructor): Allow CONSTRUCTOR with VECTOR_TYPE + (same sized) elements even if the type of the CONSTRUCTOR has + vector mode and target is a REG. + +2013-11-22 Richard Biener + + Revert + 2013-11-21 Richard Biener + + * tree-ssa-loop-ch.c (copy_loop_headers): Decrement + nb_iterations_upper_bound by one. + +2013-11-22 H.J. Lu + + * config/i386/i386.c (processor_alias_table): Enable PTA_POPCNT + for Silvermont. + + * doc/invoke.texi: Mention POPCNT for corei7, corei7-avx, + core-avx-i, core-avx2 and slm. + +2013-11-22 Eric Botcazou + + * print-rtl.c (print_rtx) : Output a space if no MEM_EXPR. + +2013-11-22 Richard Sandiford + + * config/m32c/cond.md (stzx_16): Use register_operand for operand 0. + (stzx_24_): Likewise mra_operand. + +2013-11-22 Jeff Law + + * tree-ssa-threadupdate.c: Include tree-cfg.h and tree-pass.h + (thread_block_1): Do not cancel jump threads which go from + inside a loop, through the header, then back inside the loop. + (bb_ends_with_multiway_branch): New function. + (thread_through_all_blocks): Handle threading cases which start + in a loop through the loop header to a point in the loop. + + * tree-ssa-threadedge.c (thread_across_edge): Mark the start of the + jump thread path properly. + +2013-11-22 Trevor Saunders + + * vec.h (auto_vec): New class. + * cfganal.c, cfgloop.c, cgraphunit.c, config/i386/i386.c, dwarf2out.c, + function.c, genautomata.c, gimple.c, haifa-sched.c, ipa-inline.c, + ira-build.c, loop-unroll.c, omp-low.c, ree.c, trans-mem.c, + tree-call-cdce.c, tree-eh.c, tree-if-conv.c, tree-into-ssa.c, + tree-loop-distribution.c, tree-predcom.c, tree-sra.c, + tree-sssa-forwprop.c, tree-ssa-loop-manip.c, tree-ssa-pre.c, + tree-ssa-reassoc.c, tree-ssa-sccvn.c, tree-ssa-structalias.c, + tree-vect-loop.c, tree-vect-stmts.c: Use auto_vec and stack_vec as + appropriate instead of vec for local variables. + +2013-11-21 Teresa Johnson + + PR target/59233 + * cfgcleanup.c (outgoing_edges_match): Walk up past note instructions + not understood by old_insns_match_p. + +2013-11-21 Bill Schmidt + + * config/rs6000/vector.md (vec_pack_trunc_v2df): Revert previous + little endian change. + (vec_pack_sfix_trunc_v2df): Likewise. + (vec_pack_ufix_trunc_v2df): Likewise. + * config/rs6000/rs6000.c (rs6000_expand_interleave): Correct + double checking of endianness. + +2013-11-22 Jakub Jelinek + + * tree-vect-generic.c (optimize_vector_constructor): New function. + (expand_vector_operations_1): Call it. + +2013-11-21 Uros Bizjak + + * config/i386/i386.c (ix86_expand_special_args_builtin): Use + ix86_zero_extend_to_Pmode where appropriate. + (ix86_expand_builtin): Ditto. + +2013-11-21 Cary Coutant + + * dwarf2out.c (want_pubnames): Don't do pubnames for -g1. + (add_linkage_name): Don't add linkage name for -g1. + (decls_for_scope): Process subblocks for -g1. + (dwarf2out_source_line): Output line tables for -g1. + (dwarf2out_finish): Likewise. + * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune + unused scopes for -g1. + * opts.c (common_handle_option): Handle -g same as -g2. + * doc/invoke.texi: Update description for -g1. + +2013-11-21 Peter Bergner + + * doc/extend.texi: Document htm builtins. + +2013-11-21 Jeff Law + + PR tree-optimization/59221 + * tree-ssa-threadedge.c (thread_across_edge): Properly manage + temporary equivalences when threading through joiner blocks. + +2013-11-21 Joseph Myers + + PR rtl-optimization/55950 + * real.c (real_sqrt): Remove function. + * real.h (real_sqrt): Remove prototype. + * simplify-rtx.c (simplify_const_unary_operation): Do not fold + SQRT using real_sqrt. + +2013-11-21 Richard Biener + + PR tree-optimization/59058 + * tree-scalar-evolution.h (number_of_exit_cond_executions): Remove. + * tree-scalar-evolution.c (number_of_exit_cond_executions): Likewise. + * tree-vectorizer.h (LOOP_PEELING_FOR_ALIGNMENT): Rename to ... + (LOOP_VINFO_PEELING_FOR_ALIGNMENT): ... this. + (NITERS_KNOWN_P): Fold into ... + (LOOP_VINFO_NITERS_KNOWN_P): ... this. + (LOOP_VINFO_PEELING_FOR_NITER): Add. + * tree-vect-loop-manip.c (vect_gen_niters_for_prolog_loop): + Use LOOP_VINFO_PEELING_FOR_ALIGNMENT. + (vect_do_peeling_for_alignment): Re-use precomputed niter + instead of re-emitting it. + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): + Use LOOP_VINFO_PEELING_FOR_ALIGNMENT. + * tree-vect-loop.c (vect_get_loop_niters): Use + number_of_latch_executions. + (new_loop_vec_info): Initialize LOOP_VINFO_PEELING_FOR_NITER. + (vect_analyze_loop_form): Simplify. + (vect_analyze_loop_operations): Move epilogue peeling code ... + (vect_analyze_loop_2): ... here and adjust it to compute + LOOP_VINFO_PEELING_FOR_NITER. + (vect_estimate_min_profitable_iters): Use + LOOP_VINFO_PEELING_FOR_ALIGNMENT. + (vect_build_loop_niters): Emit on the preheader. + (vect_generate_tmps_on_preheader): Likewise. + (vect_transform_loop): Use LOOP_VINFO_PEELING_FOR_NITER instead + of recomputing it. Adjust. + +2013-11-21 Richard Biener + + * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE, + LOC_LINE): Remove wrappers and fix all users. + (struct _loop_vec_info): Remove loop_line_number member. + (LOOP_VINFO_LOC): Remove. + * tree-parloops.c, tree-vect-loop-manip.c, tree-vect-slp.c, + tree-vectorizer.c: Fix users of LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE + and LOC_LINE. + +2013-11-21 Richard Biener + + * tree-ssa-forwprop.c (simplify_vce): New function. + (ssa_forward_propagate_and_combine): Call it. + +2013-11-21 Richard Biener + + * tree-vect-loop-manip.c (vect_build_loop_niters, + vect_generate_tmps_on_preheader): Move ... + * tree-vect-loop.c (vect_build_loop_niters, + vect_generate_tmps_on_preheader): ... here and simplify. + (vect_transform_loop): Call them here and pass down results + to consumers. + * tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): + Get niter variables from caller. + (vect_do_peeling_for_alignment): Likewise. + * tree-vectorizer.h (vect_generate_tmps_on_preheader): Remove. + (vect_do_peeling_for_loop_bound, vect_do_peeling_for_alignment): + Adjust prototypes. + +2013-11-21 Richard Biener + + * tree-ssa-loop-ch.c (copy_loop_headers): Decrement + nb_iterations_upper_bound by one. + +2013-11-21 Richard Biener + + PR tree-optimization/59058 + * tree-loop-distribution.c (struct partition_s): Add plus_one member. + (build_size_arg_loc): Apply niter adjustment here. + (generate_memset_builtin): Adjust. + (generate_memcpy_builtin): Likewise. + (classify_partition): Do not use number_of_exit_cond_executions + but record whether niter needs to be adjusted. + +2013-11-21 Eric Botcazou + + * tree-ssa-tail-merge.c (stmt_local_def): Return false if the statement + could throw. + +2013-11-21 Oleg Endo + + PR target/53976 + * config/sh/sh_optimize_sett_clrt.cc: New SH specific RTL pass. + * config/sh/sh.c (register_sh_passes): Add sh_optimize_sett_clrt pass. + * config/sh/sh/t-sh (sh_optimize_sett_clrt pass.o): New entry. + * config.gcc (sh[123456789lbe]*-*-* | sh-*-*): Add + sh_optimize_sett_clrt pass.o to extra_objs. + +2013-11-20 David Malcolm + + * cfg.c (dump_edge_info): Remove redundant comment. + * cfgcleanup.c (outgoing_edges_match): Reword reference to + EXIT_BLOCK_PTR in comment. + (try_optimize_cfg): Likewise. + * cfgrtl.c (last_bb_in_partition): Likewise. + * cgraph.c (cgraph_node_cannot_return): Likewise. + * function.c (thread_prologue_and_epilogue_insns): Likewise. + * graphite-scop-detection.c (scopdet_basic_block_info): Likewise. + * ipa-split.c (consider_split): Likewise. + * profile.c (find_spanning_tree): Likewise. + * sched-int.h (common_sched_info_def.add_block): Likewise. + * dominance.c (calc_dfs_tree_nonrec): Reword references in + comments to now removed ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR macros. + * tree-cfgcleanup.c (cleanup_control_flow_bb): Reword references + in comments to now removed ENTRY_BLOCK_PTR macro. + (tree_forwarder_block_p): Reword reference in comment to + EXIT_BLOCK_PTR. + * tree-inline.c (copy_cfg_body): Reword references in comments to + now removed ENTRY_BLOCK_PTR macro. + * tree-ssa-propagate.c (ssa_prop_init): Likewise. + * tree-scalar-evolution.h ( block_before_loop): Likewise. Add + a comma to the comment to clarify the meaning. + +2013-11-20 Andrew MacLeod + + * gimplify.h (gimplify_hasher:typed_free_remove, struct gimplify_ctx): + Move to gimplify.c. + (free_gimplify_stack): Add prototype. + * gimplify.c (gimplify_hasher:typed_free_remove): Relocate here. + (struct gimplify_ctx): Relocate here. + (gimplify_ctxp): Make static. + (ctx_pool, ctx_alloc, ctx_free, free_gimplify_stack): New. Manage a + list of struct gimplify_ctx. + (push_gimplify_context): Add default parameters and allocate a struct + from the pool. + (pop_gimplify_context): Free a struct back to the pool. + (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task, + gimplify_omp_workshare, gimplify_transaction, gimplify_body): Don't + use a local 'struct gimplify_ctx'. + * cgraphunit.c (expand_all_functions): call free_gimplify_stack. + * gimplify-me.c (force_gimple_operand_1, gimple_regimplify_operands): + Likewise. + * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master, + lower_omp_ordered, lower_omp_critical, lower_omp_for, + create_task_copyfn, lower_omp_taskreg, lower_omp_target, + lower_omp_teams, execute_lower_omp): Likewise. + * gimple-fold.c (gimplify_and_update_call_from_tree): Likewise. + * tree-inline.c (optimize_inline_calls): Likewise. + +2013-11-20 Bill Schmidt + + * config/rs6000/vsx.md (vsx_set_): Adjust for little endian. + (vsx_extract_): Likewise. + (*vsx_extract__one_le): New LE variant on + *vsx_extract__zero. + (vsx_extract_v4sf): Adjust for little endian. + +2013-11-20 Vladimir Makarov + + PR rtl-optimization/59133 + * lra.c (expand_reg_data): Add new argument. Set up ALL_REGS for + new pseudos. + (lra_create_new_reg_with_unique_value): Pass new argument value. + (lra_emit_add, lra_emit_move): Ditto. + * lra-constraints.c (in_class_p): Add check for move for a new insn. + (change_class): Rename to lra_change_class. Move to lra-int.h. + (get_reload_reg, narrow_reload_pseudo_class): Adjust calls of + change_class. + (process_addr_reg, process_addr): Ditto. + (curr_insn_transform): Ditto. Add check on old pseudo for + optional reload. + * lra-int.h (lra_get_regno_hard_regno): Move below. + (lra_change_class): Renamed change_class from lra.c. + +2013-11-20 David Malcolm + + * gdbhooks.py (VecPrinter.children): Don't attempt to iterate + the children of a NULL pointer. + +2013-11-20 Robert Suchanek + + * lra.c (lra): Set lra_in_progress before check_rtl call. + * recog.c (insn_invalid_p): Add !lra_in_progress to prevent + adding clobber regs when LRA is running. + +2013-11-20 Maciej W. Rozycki + + * config/mips/mips.h (ISA_HAS_FP4): Remove TARGET_FLOAT64 + restriction for ISA_MIPS32R2. + (ISA_HAS_LXC1_SXC1): New macro. + (ISA_HAS_FP_MADD4_MSUB4): Remove ISA_MIPS32R2 special-casing. + (ISA_HAS_NMADD4_NMSUB4): Likewise. + (ISA_HAS_FP_RECIP_RSQRT): Likewise. + (ISA_HAS_PREFETCHX): Redefine in terms of ISA_HAS_FP4. + * config/mips/mips.md (*_): Use + ISA_HAS_LXC1_SXC1 rather than ISA_HAS_FP4. + (*_): Likewise. + +2013-11-20 Maciej W. Rozycki + + * config/mips/mips.h (ISA_HAS_FP_RECIP_RSQRT): New macro. + * config/mips/mips.c (mips_rtx_costs)
: Check for + ISA_HAS_FP_RECIP_RSQRT rather than ISA_HAS_FP4. + * config/mips/mips.md (recip_condition): Remove mode attribute. + (div3): Use ISA_HAS_FP_RECIP_RSQRT rather than + . + (*recip3, *rsqrta, *rsqrtb): Likewise. + +2013-11-20 Eric Botcazou + + PR target/59207 + * config/sparc/sparc.c (sparc_fold_builtin) : + Make sure neg2_ovf is set before being used. + +2013-11-20 Basile Starynkevitch + + * plugin.def: Add comment about register_callback and + invoke_plugin_callbacks_full. + + * plugin.c (register_callback, invoke_plugin_callbacks_full): + Handle PLUGIN_INCLUDE_FILE event. + +2013-11-20 Ulrich Weigand + + * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Do not + allow subregs of TDmode in FPRs of smaller size in little-endian. + (rs6000_split_multireg_move): When splitting an access to TDmode + in FPRs, do not use simplify_gen_subreg. + +2013-11-20 Joseph Myers + + PR middle-end/21718 + * real.c: Remove comment about decimal string conversion and + rounding errors. + (real_from_string): Use MPFR to convert nonzero decimal constant + to REAL_VALUE_TYPE. + +2013-11-20 Eric Botcazou + + * config/arm/arm.c (arm_dwarf_register_span): Take into account the + endianness of the D registers for the legacy encodings. + +2013-11-20 Richard Earnshaw + + PR rtl-optimization/54300 + * regcprop.c (copyprop_hardreg_forward_1): Ensure any unused + outputs in a single-set are killed from the value chains. + +2013-11-20 Ilya Enkovich + + * cgraph.h (varpool_node): Add need_bounds_init field. + * lto-cgraph.c (lto_output_varpool_node): Output + need_bounds_init value. + (input_varpool_node): Read need_bounds_init value. + * varpool.c (dump_varpool_node): Dump need_bounds_init field. + +2013-11-20 Jan Hubicka + + * opts.c (finish_options): Imply -ffat-lto-objects with + -fno-use-linker-plugin. + * common.opt (fuse-linker-plugin): Add var. + +2013-11-20 Ilya Enkovich + + * dbxout.c (dbxout_type): Ignore POINTER_BOUNDS_TYPE. + * dwarf2out.c (gen_subprogram_die): Ignore bound args. + (gen_type_die_with_usage): Skip pointer bounds. + (dwarf2out_global_decl): Likewise. + +2013-11-20 James Greenhalgh + + * config/aarch64/aarch64.md: Remove "mode" and "mode2" attributes + from all insns. + +2013-11-20 Yuri Rumyantsev + + PR target/57756 + * config/i386/i386.c (ix86_option_override_internal): Add missed + argument prefix for 'ix86_fpmath'. + * config/i386/ssemath.h: Add missed definition of + TARGET_FPMATH_DEFAULT_P macros. + +2013-11-20 Kenneth Zadeck + Mike Stump + Richard Sandiford + + * alias.c (ao_ref_from_mem): Use tree_to_shwi and tree_to_uhwi + instead of TREE_INT_CST_LOW, in cases where there is a protecting + tree_fits_shwi_p or tree_fits_uhwi_p. + * builtins.c (fold_builtin_powi): Likewise. + * config/epiphany/epiphany.c (epiphany_special_round_type_align): + Likewise. + * dbxout.c (dbxout_symbol): Likewise. + * expr.c (expand_expr_real_1): Likewise. + * fold-const.c (fold_single_bit_test, fold_plusminus_mult_expr) + (fold_binary_loc): Likewise. + * gimple-fold.c (fold_const_aggregate_ref_1): Likewise. + * gimple-ssa-strength-reduction.c (stmt_cost): Likewise. + * omp-low.c (lower_omp_for_lastprivate): Likewise. + * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise. + * stor-layout.c (compute_record_mode): Likewise. + * tree-cfg.c (verify_expr): Likewise. + * tree-dfa.c (get_ref_base_and_extent): Likewise. + * tree-pretty-print.c (dump_array_domain): Likewise. + * tree-sra.c (build_user_friendly_ref_for_offset): Likewise. + * tree-ssa-ccp.c (fold_builtin_alloca_with_align): Likewise. + * tree-ssa-loop-ivopts.c (get_loop_invariant_expr_id): Likewise. + * tree-ssa-math-opts.c (execute_cse_sincos): Likewise. + * tree-ssa-phiopt.c (hoist_adjacent_loads): Likewise. + * tree-ssa-reassoc.c (acceptable_pow_call): Likewise. + * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise. + (ao_ref_init_from_vn_reference, vn_reference_fold_indirect): Likewise. + (vn_reference_lookup_3, simplify_binary_expression): Likewise. + * tree-ssa-structalias.c (bitpos_of_field): Likewise. + (get_constraint_for_1, push_fields_onto_fieldstack): Likewise. + (create_variable_info_for_1): Likewise. + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise. + (vect_verify_datarefs_alignment): Likewise. + (vect_analyze_data_ref_accesses): Likewise. + (vect_prune_runtime_alias_test_list): Likewise. + * tree-vectorizer.h (NITERS_KNOWN_P): Likewise. + +2013-11-20 Richard Sandiford + + * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Avoid signed + overflow. Use tree_to_shwi. + +2013-11-20 Richard Sandiford + + * fold-const.c (fold_binary_loc): Use unsigned rather than signed + HOST_WIDE_INTs when folding (x >> c) << c. + +2013-11-20 Andreas Krebbel + Dominik Vogt + + * config/s390/s390.c (s390_canonicalize_comparison): Don't fold + int comparisons with an out of range condition code. + (s390_optimize_nonescaping_tx): Skip empty BBs. + Generate the new tbegin RTX when removing the FPR clobbers (with + two SETs). + (s390_expand_tbegin): Fix the retry loop counter. Copy CC to the + result before doing the retry calculations. + (s390_init_builtins): Make tbegin "returns_twice" and tabort + "noreturn". + * config/s390/s390.md (UNSPECV_TBEGIN_TDB): New constant used for + the TDB setting part of an tbegin. + ("tbegin_1", "tbegin_nofloat_1"): Add a set for the TDB. + ("tx_assist"): Set unused argument to an immediate zero instead of + loading zero into a GPR and pass it as argument. + * config/s390/htmxlintrin.h (__TM_simple_begin, __TM_begin): + Remove inline and related attributes. + (__TM_nesting_depth, __TM_is_user_abort, __TM_is_named_user_abort) + (__TM_is_illegal, __TM_is_footprint_exceeded) + (__TM_is_nested_too_deep, __TM_is_conflict): Fix format value check. + +2013-11-20 Richard Biener + + PR lto/59035 + * lto-opts.c (lto_write_options): Write defaults only if + they were not explicitely specified. Also write + -ffp-contract default. + * lto-wrapper.c (merge_and_complain): Merge -ffp-contract + conservatively. + (run_gcc): Pass through -ffp-contract. + +2013-11-20 Jan-Benedict Glaw + + * config/mips/mips.c (r10k_simplify_address): Eliminate macro usage. + +2013-11-20 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_simd_itype): Remove. + (aarch64_simd_builtin_datum): Remove itype, add qualifiers pointer. + (VAR1): Use qualifiers. + (aarch64_build_scalar_type): New. + (aarch64_build_vector_type): Likewise. + (aarch64_build_type): Likewise. + (aarch64_init_simd_builtins): Refactor, remove special cases, + consolidate main loop. + (aarch64_simd_expand_args): Likewise. + +2013-11-19 Joshua J Cogliati + + PR c/53001 + * doc/invoke.texi: Adding documentation about -Wfloat-conversion. + +2013-11-19 Miro Kropacek + + * config/m68k/m68k.c (m68k_option_overrides): Fix typo. + +2013-11-19 David Malcolm + + * gdbhooks.py (VecPrinter): New class, for prettyprinting pointers + to "vec<>" instances. + (build_pretty_printer): Register the vec<>* prettyprinter. + +2013-11-19 David Malcolm + + * gdbhooks.py (GdbSubprinter.__init__): Drop str_type_ field. + (GdbSubprinter.handles_type): New. + (GdbSubprinterTypeList): New subclass of GdbSubprinter. + (GdbSubprinterRegex): New subclass of GdbSubprinter. + (GdbPrettyPrinters.add_printer): Remove in favor of... + (GdbPrettyPrinters.add_printer_for_types): ...this new method and... + (GdbPrettyPrinters.add_printer_for_regex): ...this other new method. + (GdbPrettyPrinters.__call__): Update search for subprinter + to use handles_type method. + (build_pretty_printer): Update registration of subprinters to + use the new API above, supporting multiple spelling of each type, + and allowing for future regex-based subprinters. + +2013-11-19 Bill Schmidt + + * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Adjust + V16QI vector splat case for little endian. + +2013-11-19 Jeff Law + + * tree-ssa-threadedge.c (thread_across_edge): After threading + through a joiner, allow threading a normal block requiring duplication. + + * tree-ssa-threadupdate.c (thread_block_1): Improve code to detect + jump threading requests that would muck up the loop structures. + + * tree-ssa-threadupdate.c: Fix trailing whitespace. + * tree-ssa-threadupdate.h: Likewise. + +2013-11-19 Mike Stump + + * gdbinit.in: Add pmz to print out mpz values. + +2013-11-20 Jan Hubicka + + * common.opt (ffat-lto-objects): Disable by default. + * doc/invoke.texi (fat-lto-objects): Update documentation. + * opts.c: Enable fat-lto-objects on lto plugin disable setups. + +2013-11-19 Martin Jambor + + PR rtl-optimization/59099 + * ira.c (find_moveable_pseudos): Put back various analyses from ira() + here. + (ira): Move init_reg_equiv and call to + split_live_ranges_for_shrink_wrap up, remove analyses around call + to find_moveable_pseudos. + +2013-11-20 Alan Modra + + * config/rs6000/sysv4.h (CC1_ENDIAN_LITTLE_SPEC): Define as empty. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Default + to strict alignment on older processors when little-endian. + * config/rs6000/linux64.h (PROCESSOR_DEFAULT64): Default to power8 + for ELFv2. + +2013-11-19 Teresa Johnson + + * common/config/i386/i386-common.c: Enable + -freorder-blocks-and-partition at -O2 and up for x86. + * doc/invoke.texi: Update -freorder-blocks-and-partition default. + * opts.c (finish_options): Only warn if + -freorder-blocks-and-partition was set on command line. + +2013-11-19 Sriraman Tallam + + * final.c (final_scan_insn): Emit a label for the split + cold function part. Label name is formed by suffixing + the original function name with "cold". + +2013-11-19 David Malcolm + + * basic-block.h (ENTRY_BLOCK_PTR_FOR_FUNCTION): Rename macro to... + (EXIT_BLOCK_PTR_FOR_FUNCTION): ...this. + (ENTRY_BLOCK_PTR_FOR_FN): Renamed macro to... + (EXIT_BLOCK_PTR_FOR_FN): ...this. + (ENTRY_BLOCK_PTR): Eliminate macro as work towards making uses of + cfun be explicit. + (EXIT_BLOCK_PTR): Likewise. + (FOR_ALL_BB): Rework for now to eliminate use of "ENTRY_BLOCK_PTR". + (FOR_ALL_BB_FN): Update for renaming of + "ENTRY_BLOCK_PTR_FOR_FUNCTION" to "ENTRY_BLOCK_PTR_FOR_FN". + + * cfg.c (init_flow): Likewise. + (check_bb_profile): Likewise. + * cfganal.c (pre_and_rev_post_order_compute_fn): Likewise. + * cfgcleanup.c (walk_to_nondebug_insn): Likewise. + * cfghooks.c (account_profile_record): Likewise. + * cfgloop.c (init_loops_structure): Likewise. + * cgraphbuild.c (record_eh_tables): Likewise. + (compute_call_stmt_bb_frequency): Likewise. + * ipa-inline-analysis.c (compute_bb_predicates): Likewise. + * lto-streamer-in.c (input_cfg): Likewise. + * predict.c (maybe_hot_frequency_p): Likewise. + * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. + * tree-inline.c (initialize_cfun): Likewise. + (copy_cfg_body): Likewise. + (copy_body): Likewise. + (tree_function_versioning): Likewise. + + * bb-reorder.c (add_labels_and_missing_jumps): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (duplicate_computed_gotos): Remove usage of EXIT_BLOCK_PTR macro. + (find_rarely_executed_basic_blocks_and_crossing_edges): Remove uses of + macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (connect_traces): Likewise. + (rest_of_handle_reorder_blocks): Remove usage of EXIT_BLOCK_PTR macro. + (bb_to_key): Remove usage of ENTRY_BLOCK_PTR macro. + (fix_crossing_conditional_branches): Remove usage of EXIT_BLOCK_PTR + macro. + (find_traces_1_round): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (fix_up_fall_thru_edges): Remove usage of EXIT_BLOCK_PTR macro. + (find_traces): Remove usage of ENTRY_BLOCK_PTR macro. + (fix_up_crossing_landing_pad): Remove usage of EXIT_BLOCK_PTR macro. + (rotate_loop): Likewise. + * bt-load.c (migrate_btr_def): Remove usage of ENTRY_BLOCK_PTR macro. + * cfg.c (clear_aux_for_edges): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (alloc_aux_for_edges): Likewise. + (clear_bb_flags): Remove usage of ENTRY_BLOCK_PTR macro. + (cached_make_edge): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (compact_blocks): Likewise. + (clear_edges): Likewise. + * cfganal.c (single_pred_before_succ_order): Remove usage of + ENTRY_BLOCK_PTR macro. + (bitmap_union_of_succs): Remove usage of EXIT_BLOCK_PTR macro. + (bitmap_union_of_preds): Remove usage of ENTRY_BLOCK_PTR macro. + (bitmap_intersection_of_succs): Remove usage of EXIT_BLOCK_PTR macro. + (bitmap_intersection_of_preds): Remove usage of ENTRY_BLOCK_PTR macro. + (inverted_post_order_compute): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (compute_dominance_frontiers_1): Remove usage of ENTRY_BLOCK_PTR macro. + (post_order_compute): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (connect_infinite_loops_to_exit): Remove usage of EXIT_BLOCK_PTR macro. + (remove_fake_edges): Remove usage of ENTRY_BLOCK_PTR macro. + (add_noreturn_fake_exit_edges): Remove usage of EXIT_BLOCK_PTR macro. + (find_pdom): Remove uses of macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (remove_fake_exit_edges): Remove usage of EXIT_BLOCK_PTR macro. + (verify_edge_list): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (print_edge_list): Likewise. + (create_edge_list): Likewise. + (find_unreachable_blocks): Remove usage of ENTRY_BLOCK_PTR macro. + (mark_dfs_back_edges): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + * cfgbuild.c (find_bb_boundaries): Remove usage of ENTRY_BLOCK_PTR + macro. + (find_many_sub_basic_blocks): Remove usage of EXIT_BLOCK_PTR macro. + (make_edges): Remove uses of macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + * cfgcleanup.c (delete_unreachable_blocks): Likewise. + (try_optimize_cfg): Likewise. + (try_head_merge_bb): Remove usage of EXIT_BLOCK_PTR macro. + (try_crossjump_to_edge): Remove usage of ENTRY_BLOCK_PTR macro. + (try_crossjump_bb): Remove usage of EXIT_BLOCK_PTR macro. + (merge_blocks_move): Remove usage of ENTRY_BLOCK_PTR macro. + (outgoing_edges_match): Remove usage of EXIT_BLOCK_PTR macro. + (try_forward_edges): Likewise. + (try_simplify_condjump): Likewise. + * cfgexpand.c (gimple_expand_cfg): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (construct_exit_block): Remove usage of EXIT_BLOCK_PTR macro. + (construct_init_block): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (expand_gimple_basic_block): Remove usage of EXIT_BLOCK_PTR macro. + (expand_gimple_tailcall): Likewise. + * cfghooks.c (can_duplicate_block_p): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (tidy_fallthru_edges): Likewise. + (verify_flow_info): Likewise. + * cfgloop.c (flow_bb_inside_loop_p): Likewise. + (num_loop_branches): Remove usage of EXIT_BLOCK_PTR macro. + (disambiguate_multiple_latches): Remove usage of ENTRY_BLOCK_PTR macro. + (get_loop_exit_edges): Remove usage of EXIT_BLOCK_PTR macro. + (bb_loop_header_p): Remove usage of ENTRY_BLOCK_PTR macro. + (get_loop_body_in_bfs_order): Remove usage of EXIT_BLOCK_PTR macro. + (get_loop_body_in_dom_order): Likewise. + (get_loop_body): Likewise. + * cfgloopanal.c (mark_irreducible_loops): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + * cfgloopmanip.c (create_preheader): Remove usage of ENTRY_BLOCK_PTR + macro. + (remove_path): Remove usage of EXIT_BLOCK_PTR macro. + (fix_bb_placement): Likewise. + * cfgrtl.c (rtl_block_empty_p): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (rtl_can_remove_branch_p): Remove usage of EXIT_BLOCK_PTR macro. + (cfg_layout_split_edge): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (rtl_flow_call_edges_add): Remove usage of EXIT_BLOCK_PTR macro. + (cfg_layout_can_merge_blocks_p): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (cfg_layout_redirect_edge_and_branch): Remove usage of ENTRY_BLOCK_PTR + macro. + (fixup_fallthru_exit_predecessor): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (fixup_reorder_chain): Likewise. + (relink_block_chain): Likewise. + (cfg_layout_delete_block): Remove usage of EXIT_BLOCK_PTR macro. + (rtl_verify_bb_layout): Remove usage of ENTRY_BLOCK_PTR macro. + (cfg_layout_duplicate_bb): Remove usage of EXIT_BLOCK_PTR macro. + (force_one_exit_fallthru): Likewise. + (rtl_verify_fallthru): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (rtl_verify_edges): Likewise. + (commit_edge_insertions): Likewise. + (commit_one_edge_insertion): Likewise. + (rtl_split_edge): Likewise. + (force_nonfallthru_and_redirect): Likewise. + (outof_cfg_layout_mode): Remove usage of EXIT_BLOCK_PTR macro. + (skip_insns_after_block): Likewise. + (fixup_partition_crossing): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (purge_dead_edges): Remove usage of EXIT_BLOCK_PTR macro. + (rtl_can_merge_blocks): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (contains_no_active_insn_p): Likewise. + (emit_insn_at_entry): Remove usage of ENTRY_BLOCK_PTR macro. + (entry_of_function): Likewise. + (last_bb_in_partition): Remove usage of EXIT_BLOCK_PTR macro. + (fixup_new_cold_bb): Likewise. + (patch_jump_insn): Likewise. + (try_redirect_by_replacing_jump): Likewise. + (block_label): Likewise. + (could_fall_through): Likewise. + (can_fallthru): Likewise. + * cgraphbuild.c (cgraph_rebuild_references): Remove usage of + ENTRY_BLOCK_PTR macro. + (rebuild_cgraph_edges): Likewise. + * cgraphunit.c (init_lowered_empty_function): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (expand_thunk): Remove usage of EXIT_BLOCK_PTR macro. + * combine.c (get_last_value): Remove usage of ENTRY_BLOCK_PTR macro. + (distribute_links): Remove usage of EXIT_BLOCK_PTR macro. + (get_last_value_validate): Remove usage of ENTRY_BLOCK_PTR macro. + (try_combine): Remove usage of EXIT_BLOCK_PTR macro. + (reg_num_sign_bit_copies_for_combine): Remove usage of ENTRY_BLOCK_PTR + macro. + (reg_nonzero_bits_for_combine): Likewise. + (set_nonzero_bits_and_sign_copies): Likewise. + (combine_instructions): Likewise. + * cprop.c (one_cprop_pass): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (bypass_conditional_jumps): Likewise. + (bypass_block): Remove usage of EXIT_BLOCK_PTR macro. + (find_implicit_sets): Likewise. + (cprop_jump): Likewise. + * cse.c (cse_cc_succs): Likewise. + (cse_find_path): Likewise. + * df-problems.c (df_lr_confluence_0): Likewise. + * df-scan.c (df_entry_block_defs_collect): Remove usage of + ENTRY_BLOCK_PTR macro. + (df_exit_block_uses_collect): Remove usage of EXIT_BLOCK_PTR macro. + * dominance.c (iterate_fix_dominators): Remove usage of + ENTRY_BLOCK_PTR macro. + (calc_idoms): Remove uses of macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (determine_dominators_for_sons): Remove usage of ENTRY_BLOCK_PTR macro. + (calc_dfs_tree): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (prune_bbs_to_update_dominators): Remove usage of ENTRY_BLOCK_PTR + macro. + (calc_dfs_tree_nonrec): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + * domwalk.c (cmp_bb_postorder): Likewise. + * dse.c (dse_step1): Remove usage of EXIT_BLOCK_PTR macro. + * except.c (finish_eh_generation): Remove usage of ENTRY_BLOCK_PTR + macro. + (sjlj_emit_function_enter): Likewise. + * final.c (compute_alignments): Likewise. + * function.c (thread_prologue_and_epilogue_insns): Remove uses of + macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (reposition_prologue_and_epilogue_notes): Remove usage of + EXIT_BLOCK_PTR macro. + (convert_jumps_to_returns): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (regno_clobbered_at_setjmp): Remove usage of ENTRY_BLOCK_PTR macro. + (next_block_for_reg): Remove usage of EXIT_BLOCK_PTR macro. + * gcse.c (hoist_code): Remove usage of ENTRY_BLOCK_PTR macro. + (update_bb_reg_pressure): Remove usage of EXIT_BLOCK_PTR macro. + (compute_code_hoist_vbeinout): Likewise. + (should_hoist_expr_to_dom): Remove usage of ENTRY_BLOCK_PTR macro. + (pre_expr_reaches_here_p_work): Likewise. + * gimple-iterator.c (gsi_commit_edge_inserts): Likewise. + (gimple_find_edge_insert_loc): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + * gimple-ssa-strength-reduction.c (slsr_process_phi): Remove usage of + ENTRY_BLOCK_PTR macro. + * graph.c (draw_cfg_nodes_for_loop): Remove usage of EXIT_BLOCK_PTR + macro. + * graphite-clast-to-gimple.c (translate_clast_user): Remove usage of + ENTRY_BLOCK_PTR macro. + * graphite-scop-detection.c (build_scops): Likewise. + (create_sese_edges): Remove usage of EXIT_BLOCK_PTR macro. + (scopdet_basic_block_info): Remove usage of ENTRY_BLOCK_PTR macro. + * haifa-sched.c (restore_bb_notes): Remove usage of EXIT_BLOCK_PTR + macro. + (unlink_bb_notes): Likewise. + (create_check_block_twin): Likewise. + (init_before_recovery): Likewise. + (sched_extend_bb): Likewise. + (priority): Likewise. + * hw-doloop.c (reorder_loops): Likewise. + (discover_loop): Likewise. + * ifcvt.c (dead_or_predicable): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (find_if_case_1): Remove usage of EXIT_BLOCK_PTR macro. + (block_has_only_trap): Likewise. + (cond_exec_find_if_block): Likewise. + (merge_if_block): Likewise. + * ipa-inline-analysis.c (param_change_prob): Remove usage of + ENTRY_BLOCK_PTR macro. + (record_modified): Likewise. + * ipa-pure-const.c (execute_warn_function_noreturn): Remove usage of + EXIT_BLOCK_PTR macro. + (local_pure_const): Likewise. + * ipa-split.c (split_function): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (find_split_points): Likewise. + (consider_split): Likewise. + (find_return_bb): Remove usage of EXIT_BLOCK_PTR macro. + (verify_non_ssa_vars): Remove usage of ENTRY_BLOCK_PTR macro. + * ira-build.c (ira_loop_tree_body_rev_postorder): Likewise. + * ira-color.c (print_loop_title): Remove usage of EXIT_BLOCK_PTR macro. + * ira-emit.c (entered_from_non_parent_p): Remove usage of + ENTRY_BLOCK_PTR macro. + (ira_emit): Remove usage of EXIT_BLOCK_PTR macro. + * ira-int.h (ira_assert): Remove usage of ENTRY_BLOCK_PTR macro. + * ira.c (split_live_ranges_for_shrink_wrap): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + * lcm.c (compute_rev_insert_delete): Remove usage of ENTRY_BLOCK_PTR + macro. + (compute_nearerout): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (compute_farthest): Likewise. + (compute_available): Likewise. + (compute_insert_delete): Remove usage of EXIT_BLOCK_PTR macro. + (compute_laterin): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (compute_earliest): Likewise. + (compute_antinout_edge): Likewise. + * loop-iv.c (simplify_using_initial_values): Remove usage of + ENTRY_BLOCK_PTR macro. + * loop-unswitch.c (unswitch_loop): Remove usage of EXIT_BLOCK_PTR + macro. + * lra-assigns.c (find_hard_regno_for): Remove usage of ENTRY_BLOCK_PTR + macro. + * lra-constraints.c (lra_inheritance): Remove usage of EXIT_BLOCK_PTR + macro. + * lra-lives.c (lra_create_live_ranges): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + * lra.c (has_nonexceptional_receiver): Remove usage of EXIT_BLOCK_PTR + macro. + * lto-streamer-in.c (input_function): Remove usage of ENTRY_BLOCK_PTR + macro. + * lto-streamer-out.c (output_cfg): Likewise. + * mcf.c (adjust_cfg_counts): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (create_fixup_graph): Remove usage of ENTRY_BLOCK_PTR macro. + * mode-switching.c (optimize_mode_switching): Likewise. + (create_pre_exit): Remove usage of EXIT_BLOCK_PTR macro. + * modulo-sched.c (rest_of_handle_sms): Likewise. + (canon_loop): Likewise. + * omp-low.c (build_omp_regions): Remove usage of ENTRY_BLOCK_PTR macro. + * postreload-gcse.c (eliminate_partially_redundant_loads): Remove uses + of macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + * predict.c (rebuild_frequencies): Remove usage of ENTRY_BLOCK_PTR + macro. + (propagate_freq): Remove usage of EXIT_BLOCK_PTR macro. + (estimate_bb_frequencies): Remove usage of ENTRY_BLOCK_PTR macro. + (tree_estimate_probability_bb): Remove usage of EXIT_BLOCK_PTR macro. + (expensive_function_p): Remove usage of ENTRY_BLOCK_PTR macro. + (tree_bb_level_predictions): Remove usage of EXIT_BLOCK_PTR macro. + (counts_to_freqs): Remove usage of ENTRY_BLOCK_PTR macro. + (apply_return_prediction): Remove usage of EXIT_BLOCK_PTR macro. + (estimate_loops): Remove usage of ENTRY_BLOCK_PTR macro. + (gimple_predict_edge): Likewise. + (probably_never_executed): Likewise. + * profile.c (find_spanning_tree): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (branch_prob): Likewise. + (compute_branch_probabilities): Likewise. + (compute_frequency_overlap): Remove usage of ENTRY_BLOCK_PTR macro. + (is_inconsistent): Remove usage of EXIT_BLOCK_PTR macro. + (read_profile_edge_counts): Remove usage of ENTRY_BLOCK_PTR macro. + (set_bb_counts): Likewise. + (correct_negative_edge_counts): Likewise. + (get_exec_counts): Likewise. + (instrument_values): Likewise. + (instrument_edges): Likewise. + * reg-stack.c (convert_regs): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (compensate_edges): Remove usage of ENTRY_BLOCK_PTR macro. + (convert_regs_exit): Remove usage of EXIT_BLOCK_PTR macro. + (convert_regs_entry): Remove usage of ENTRY_BLOCK_PTR macro. + (reg_to_stack): Likewise. + * regs.h (REG_N_SETS): Likewise. + * reload.c (find_dummy_reload): Likewise. + (combine_reloads): Likewise. + (push_reload): Likewise. + * reload1.c (has_nonexceptional_receiver): Remove usage of + EXIT_BLOCK_PTR macro. + * resource.c (mark_target_live_regs): Remove usage of ENTRY_BLOCK_PTR + macro. + (find_basic_block): Likewise. + * sched-ebb.c (ebb_add_block): Remove usage of EXIT_BLOCK_PTR macro. + (schedule_ebbs): Likewise. + * sched-int.h (sel_sched_p): Likewise. + * sched-rgn.c (compute_dom_prob_ps): Remove usage of ENTRY_BLOCK_PTR + macro. + (rgn_add_block): Remove usage of EXIT_BLOCK_PTR macro. + (haifa_find_rgns): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (propagate_deps): Remove usage of EXIT_BLOCK_PTR macro. + (extend_rgns): Likewise. + (find_single_block_region): Likewise. + * sel-sched-ir.c (sel_remove_loop_preheader): Remove usage of + ENTRY_BLOCK_PTR macro. + (setup_nop_and_exit_insns): Remove usage of EXIT_BLOCK_PTR macro. + (sel_create_recovery_block): Likewise. + (bb_ends_ebb_p): Likewise. + (sel_bb_end): Likewise. + (sel_bb_head): Likewise. + (free_lv_sets): Likewise. + (init_lv_sets): Likewise. + (tidy_control_flow): Likewise. + (maybe_tidy_empty_bb): Likewise. + * sel-sched-ir.h (_succ_iter_cond): Likewise. + (_succ_iter_start): Likewise. + (sel_bb_empty_or_nop_p): Likewise. + (get_loop_exit_edges_unique_dests): Likewise. + (inner_loop_header_p): Likewise. + * sel-sched.c (create_block_for_bookkeeping): Likewise. + (find_block_for_bookkeeping): Likewise. + * store-motion.c (remove_reachable_equiv_notes): Likewise. + (insert_store): Likewise. + * trans-mem.c (ipa_tm_transform_clone): Remove usage of + ENTRY_BLOCK_PTR macro. + (tm_memopt_compute_available): Remove usage of EXIT_BLOCK_PTR macro. + (ipa_tm_scan_irr_function): Remove usage of ENTRY_BLOCK_PTR macro. + (gate_tm_init): Likewise. + (tm_region_init): Likewise. + * tree-cfg.c (execute_fixup_cfg): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (execute_warn_function_return): Remove usage of EXIT_BLOCK_PTR macro. + (split_critical_edges): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (print_loops): Remove usage of ENTRY_BLOCK_PTR macro. + (move_sese_region_to_fn): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (gimple_redirect_edge_and_branch): Remove usage of ENTRY_BLOCK_PTR + macro. + (gimple_verify_flow_info): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (remove_edge_and_dominated_blocks): Remove usage of EXIT_BLOCK_PTR + macro. + (make_edges): Remove uses of macros: ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (gimple_flow_call_edges_add): Remove usage of EXIT_BLOCK_PTR macro. + (make_blocks): Remove usage of ENTRY_BLOCK_PTR macro. + (build_gimple_cfg): Likewise. + (gimple_duplicate_bb): Remove usage of EXIT_BLOCK_PTR macro. + (gimple_can_merge_blocks_p): Likewise. + * tree-cfgcleanup.c (tree_forwarder_block_p): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + * tree-complex.c (update_parameter_components): Remove usage of + ENTRY_BLOCK_PTR macro. + * tree-if-conv.c (get_loop_body_in_if_conv_order): Remove usage of + EXIT_BLOCK_PTR macro. + * tree-inline.c (tree_function_versioning): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (delete_unreachable_blocks_update_callgraph): Likewise. + (initialize_cfun): Likewise. + (copy_cfg_body): Remove usage of ENTRY_BLOCK_PTR macro. + (copy_edges_for_bb): Remove usage of EXIT_BLOCK_PTR macro. + (remap_ssa_name): Remove usage of ENTRY_BLOCK_PTR macro. + * tree-into-ssa.c (update_ssa): Likewise. + (maybe_register_def): Remove usage of EXIT_BLOCK_PTR macro. + (insert_updated_phi_nodes_for): Remove usage of ENTRY_BLOCK_PTR macro. + (rewrite_into_ssa): Likewise. + (rewrite_debug_stmt_uses): Likewise. + * tree-outof-ssa.c (expand_phi_nodes): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + * tree-profile.c (gimple_gen_ic_func_profiler): Remove usage of + ENTRY_BLOCK_PTR macro. + * tree-scalar-evolution.h (block_before_loop): Likewise. + * tree-sra.c (sra_ipa_reset_debug_stmts): Likewise. + (dump_dereferences_table): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (analyze_caller_dereference_legality): Remove usage of ENTRY_BLOCK_PTR + macro. + (propagate_dereference_distances): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (initialize_parameter_reductions): Remove usage of ENTRY_BLOCK_PTR + macro. + * tree-ssa-ccp.c (gsi_prev_dom_bb_nondebug): Likewise. + (optimize_stack_restore): Remove usage of EXIT_BLOCK_PTR macro. + * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise. + * tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (remove_dead_stmt): Remove usage of EXIT_BLOCK_PTR macro. + (propagate_necessity): Remove usage of ENTRY_BLOCK_PTR macro. + (mark_control_dependent_edges_necessary): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + * tree-ssa-dom.c (eliminate_degenerate_phis): Remove usage of + ENTRY_BLOCK_PTR macro. + (tree_ssa_dominator_optimize): Remove usage of EXIT_BLOCK_PTR macro. + * tree-ssa-live.c (verify_live_on_entry): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (calculate_live_on_exit): Likewise. + (set_var_live_on_entry): Remove usage of ENTRY_BLOCK_PTR macro. + (loe_visit_block): Likewise. + * tree-ssa-live.h (live_on_exit): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (live_on_entry): Likewise. + * tree-ssa-loop-ivopts.c (find_interesting_uses): Remove usage of + EXIT_BLOCK_PTR macro. + * tree-ssa-loop-manip.c (compute_live_loop_exits): Remove usage of + ENTRY_BLOCK_PTR macro. + * tree-ssa-loop-niter.c (simplify_using_initial_conditions): Likewise. + (bound_difference): Likewise. + * tree-ssa-loop-prefetch.c (may_use_storent_in_loop_p): Remove usage + of EXIT_BLOCK_PTR macro. + * tree-ssa-loop-unswitch.c (simplify_using_entry_checks): Remove usage + of ENTRY_BLOCK_PTR macro. + * tree-ssa-math-opts.c (register_division_in): Likewise. + * tree-ssa-phiprop.c (tree_ssa_phiprop): Likewise. + * tree-ssa-pre.c (compute_avail): Likewise. + (compute_antic): Remove usage of EXIT_BLOCK_PTR macro. + (insert): Remove usage of ENTRY_BLOCK_PTR macro. + * tree-ssa-propagate.c (ssa_prop_init): Likewise. + (simulate_block): Remove usage of EXIT_BLOCK_PTR macro. + (cfg_blocks_add): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + (add_control_edge): Remove usage of EXIT_BLOCK_PTR macro. + * tree-ssa-reassoc.c (do_reassoc): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (build_and_add_sum): Remove usage of ENTRY_BLOCK_PTR macro. + * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise. + (execute_sink_code): Remove usage of EXIT_BLOCK_PTR macro. + * tree-ssa-uninit.c (find_dom): Remove usage of ENTRY_BLOCK_PTR macro. + (compute_control_dep_chain): Remove usage of EXIT_BLOCK_PTR macro. + (find_pdom): Likewise. + (warn_uninitialized_vars): Remove usage of ENTRY_BLOCK_PTR macro. + * tree-stdarg.c (reachable_at_most_once): Likewise. + * tree-tailcall.c (tree_optimize_tail_calls_1): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (eliminate_tail_call): Likewise. + * tsan.c (instrument_func_entry): Remove usage of ENTRY_BLOCK_PTR + macro. + (instrument_func_exit): Remove usage of EXIT_BLOCK_PTR macro. + * var-tracking.c (vt_initialize): Remove uses of macros: + ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR. + (vt_add_function_parameter): Remove usage of ENTRY_BLOCK_PTR macro. + (vt_find_locations): Remove usage of EXIT_BLOCK_PTR macro. + (vt_stack_adjustments): Remove uses of macros: ENTRY_BLOCK_PTR, + EXIT_BLOCK_PTR. + * varasm.c (assemble_start_function): Remove usage of ENTRY_BLOCK_PTR + macro. + * config/bfin/bfin.c (hwloop_optimize): Likewise. + * config/nds32/nds32.c (nds32_fp_as_gp_check_available): Remove usage + of EXIT_BLOCK_PTR macro. + * config/arm/arm.c (require_pic_register): Remove usage of + ENTRY_BLOCK_PTR macro. + (arm_r3_live_at_start_p): Likewise. + (any_sibcall_could_use_r3): Remove usage of EXIT_BLOCK_PTR macro. + * config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise. + * config/frv/frv.c (frv_optimize_membar_global): Likewise. + * config/alpha/alpha.c (alpha_gp_save_rtx): Remove usage of + ENTRY_BLOCK_PTR macro. + * config/i386/i386.c (ix86_count_insn): Likewise. + (ix86_seh_fixup_eh_fallthru): Remove usage of EXIT_BLOCK_PTR macro. + (ix86_pad_short_function): Likewise. + (ix86_compute_frame_layout): Remove usage of ENTRY_BLOCK_PTR macro. + (ix86_pad_returns): Remove usage of EXIT_BLOCK_PTR macro. + (ix86_eax_live_at_start_p): Remove usage of ENTRY_BLOCK_PTR macro. + (add_condition_to_bb): Remove usage of EXIT_BLOCK_PTR macro. + (ix86_expand_epilogue): Likewise. + * config/ia64/ia64.c (ia64_asm_unwind_emit): Likewise. + (ia64_expand_prologue): Likewise. + +2013-11-19 Catherine Moore + + * doc/invoke.texi (mfix-rm7000, mno-fix-rm7000): Document. + * config/mips/mips.opt (mfix-rm7000): New option. + * config/mips/mips.h (ASM_SPEC): Handle mfix-rm7000. + * config/mips/mips.c (mips_reorg_process_insns): Disable + noreorder for TARGET_FIX_RM7000. + +2013-11-19 Oleg Endo + + * config/sh/sh-c.c: Fix typo in include of file attribs.h. + +2013-11-19 Kyrylo Tkachov + + * config/arm/arm.c (arm_new_rtx_costs): + Handle narrow mode add-shifts properly. + * config/arm/arm-common.c (arm_rtx_shift_left_p): Remove static. + * config/arm/arm-common-protos.h (arm_rtx_shift_left_p): + Declare extern. + +2013-11-19 James Greenhalgh + + * config/arm/arm.md (zero_extenddi2): Add type attribute. + +2013-11-19 Ulrich Weigand + + * config/rs6000/vector.md ("mov"): Do not call + rs6000_emit_le_vsx_move to move into or out of GPRs. + * config/rs6000/rs6000.c (rs6000_emit_le_vsx_move): Assert + source and destination are not GPR hard regs. + +2013-11-19 David Malcolm + + * basic-block.h (n_edges_for_function): Rename macro to... + (n_edges_for_fn): ...this. + (n_edges): Eliminate macro as work towards making uses of + cfun be explicit. + + * cfg.c (init_flow): Update for renaming of "n_edges_for_function" + to "n_edges_for_fn". + + * cfg.c (unchecked_make_edge): Remove usage of n_edges macro. + (clear_edges): Likewise. + (free_edge): Likewise. + * cfghooks.c (dump_flow_info): Likewise. + * cprop.c (is_too_expensive): Likewise. + * df-core.c (df_worklist_dataflow_doublequeue): Likewise. + * gcse.c (is_too_expensive): Likewise. + (prune_insertions_deletions): Likewise. + * mcf.c (create_fixup_graph): Likewise. + * sched-rgn.c (haifa_find_rgns): Likewise. + * tree-cfg.c (gimple_dump_cfg): Likewise. + * var-tracking.c (variable_tracking_main_1): Likewise. + +2013-11-19 Marcus Shawcroft + + * config/aarch64/aarch64.c (aarch64_save_or_restore_fprs): Fix over + length lines. + +2013-11-19 Marcus Shawcroft + + * config/aarch64/aarch64.md + (aarch64_movdi_low, *add__si_uxtw): Adjust whitespace. + +2013-11-19 Marcus Shawcroft + + * config/aarch64/aarch64.h (PROFILE_HOOK): Fix whitespace. + +2013-11-19 Joseph Myers + + * varasm.c (align_variable): Give error instead of warning for + unsupported alignment. + (assemble_noswitch_variable): Likewise. + +2013-11-19 Basile Starynkevitch + + * plugin.def (PLUGIN_INCLUDE_FILE): New event, invoked in + cb_file_change. + +2013-11-19 Peter Bergner + + * loop-doloop.c (doloop_optimize_loops): Remove unused + loop iterator argument from FOR_EACH_LOOP. + +2013-11-19 David Malcolm + + Convert gimple types from a union to C++ inheritance. + * Makefile.in (GIMPLE_H): Add dep on is-a.h. + * coretypes.h (union gimple_statement_d): Remove declaration. + (gimple): Convert from being a "union gimple_statement_d *" + to a "struct gimple_statement_base *". + (const_gimple): Likewise (with "const"). + * ggc.h (ggc_alloc_cleared_gimple_statement_d_stat): Replace with... + (ggc_alloc_cleared_gimple_statement_stat): ...this. + * gimple-pretty-print.c (debug): Change parameter from a + "gimple_statement_d &" to a "gimple_statement_base &". + (debug): Change parameter from a "gimple_statement_d *" to + a "gimple_statement_base *". + * gimple-pretty-print.h (debug): Update declarations as above. + * gimple.c (gimple_alloc_stat): Update for renaming of + ggc_alloc_cleared_gimple_statement_d_stat to + ggc_alloc_cleared_gimple_statement_stat. + * gimple.h: Include "is-a.h" for use by is_a_helper + specializations in followup autogenerated patch. + (struct gimple statement_base): Make this type usable as a base + class by adding "desc", "tag" and "variable_size" to GTY, thus + using opting-in to gengtype's support for simple inheritance. + (gimple_statement_with_ops_base): Convert to a subclass of + gimple_statement_base, dropping initial "gsbase" field. Note that + this type is abstract, with no GSS_ value, and thus no GTY tag value. + (gimple_statement_with_ops): Convert to a subclass of + gimple_statement_with_ops_base, dropping initial "opbase" field. + Add tag value to GTY marking. Update marking of op field to + reflect how num_ops field is accessed via inheritance. + (gimple_statement_with_memory_ops_base): Convert to a subclass of + gimple_statement_with_ops_base, dropping initial "opbase" field. + Add tag value to GTY marking. + (gimple_statement_with_memory_ops): Convert to a subclass of + public gimple_statement_with_memory_ops_base, dropping initial + "membase" field. Add tag value to GTY marking. Update marking + of op field to reflect how num_ops field is accessed via inheritance. + (gimple_statement_call): Analogous changes that also update the + marking of the "u" union. + (gimple_statement_omp): Convert to a subclass of + gimple_statement_base, dropping initial "gsbase" field, adding + tag value to GTY marking. + (gimple_statement_bind): Likewise. + (gimple_statement_catch): Likewise. + (gimple_statement_eh_filter): Likewise. + (gimple_statement_eh_else): Likewise. + (gimple_statement_eh_mnt): Likewise. + (gimple_statement_phi): Likewise. + (gimple_statement_eh_ctrl): Likewise. + (gimple_statement_try): Likewise. + (gimple_statement_wce): Likewise. + (gimple_statement_asm): Convert to a subclass of + gimple_statement_with_memory_ops_base, dropping initial + "membase" field, adding tag value to GTY marking, and updating + marking of op field. + (gimple_statement_omp_critical): Convert to a subclass of + gimple_statement_omp, dropping initial "omp" field, adding tag + value to GTY marking. + (gimple_statement_omp_for): Likewise. + (gimple_statement_omp_parallel): Likewise. + (gimple_statement_omp_task): Convert to a subclass of + gimple_statement_omp_parallel, dropping initial "par" field, + adding tag value to GTY marking. + (gimple_statement_omp_sections): Convert to a subclass of + gimple_statement_omp, dropping initial "omp" field, adding + tag value to GTY marking. + (gimple_statement_omp_continue): Convert to a subclass of + gimple_statement_base, dropping initial "gsbase" field, adding + tag value to GTY marking. + (gimple_statement_omp_single): Convert to a subclass of + gimple_statement_omp, dropping initial "omp" field, adding + tag value to GTY marking. + (gimple_statement_omp_atomic_load): Convert to a subclass of + gimple_statement_base, dropping initial "gsbase" field, adding + tag value to GTY marking. + (gimple_statement_omp_atomic_store): Convert to a subclass of + gimple_statement_base, dropping initial "gsbase" field, adding + tag value to GTY marking. + (gimple_statement_transaction): Convert to a subclass of + gimple_statement_with_memory_ops_base, dropping initial "gsbase" + field, adding tag value to GTY marking. + (union gimple_statement_d): Remove. + * system.h (CONST_CAST_GIMPLE): Update to use + "struct gimple_statement_base *" rather than + "union gimple_statement_d *". + * tree-ssa-ccp.c (gimple_htab): Convert underlying type from + gimple_statement_d to gimple_statement_base. + + * gimple.h (gimple_use_ops): Port from union to usage of dyn_cast. + (gimple_set_use_ops): Port from union to usage of as_a. + (gimple_set_vuse): Likewise. + (gimple_set_vdef): Likewise. + (gimple_call_internal_fn): Port from union to a static_cast, + given that the type has already been asserted. + (gimple_omp_body_ptr): Port from unchecked union usage to + a static_cast. + (gimple_omp_set_body): Likewise. + + * gimple-iterator.c (update_bb_for_stmts): Update for conversion of + gimple types to a true class hierarchy. + (update_call_edge_frequencies): Likewise. + (gsi_insert_seq_nodes_before): Likewise. + (gsi_insert_seq_nodes_after): Likewise. + (gsi_split_seq_after): Likewise. + (gsi_set_stmt): Likewise. + (gsi_split_seq_before): Likewise. + (gsi_remove): Likewise. + * gimple-iterator.h (gsi_one_before_end_p): Likewise. + (gsi_next): Likewise. + (gsi_prev): Likewise. + * gimple-pretty-print.c (dump_gimple_debug): Likewise. + * gimple-ssa.h (gimple_vuse_op): Likewise. + (gimple_vdef_op): Likewise. + * gimple-streamer-in.c (input_gimple_stmt): Likewise. + * gimple-streamer-out.c (output_gimple_stmt): Likewise. + * gimple.c (gimple_set_code): Likewise. + (gimple_alloc_stat): Likewise. + (gimple_set_subcode): Likewise. + (gimple_build_call_internal_1): Likewise. + (gimple_check_failed): Likewise. + (gimple_call_flags): Likewise. + (gimple_set_bb): Likewise. + * gimple.h (is_a_helper (gimple)): New. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (gimple)): Likewise. + (is_a_helper (const_gimple)): Likewise. + (is_a_helper (const_gimple)): Likewise. + (is_a_helper (const_gimple)): Likewise. + (is_a_helper (const_gimple)): Likewise. + (is_a_helper (const_gimple)): + Likewise. + (is_a_helper (const_gimple)): + Likewise. + (is_a_helper (const_gimple)): + Likewise. + (is_a_helper + (const_gimple)): Likewise. + (is_a_helper (const_gimple)): + Likewise. + (is_a_helper (const_gimple)): + Likewise. + (is_a_helper (const_gimple)): + Likewise. + (is_a_helper (const_gimple)): + Likewise. + (is_a_helper (const_gimple)): + Likewise. + (is_a_helper (const_gimple)): + Likewise. + (is_a_helper (const_gimple)): + Likewise. + (is_a_helper (const_gimple)): Likewise. + (is_a_helper (const_gimple)): + Likewise. + (gimple_seq_last): Update for conversion of gimple types to a true + class hierarchy. + (gimple_seq_set_last): Likewise. + (gimple_code): Likewise. + (gimple_bb): Likewise. + (gimple_block): Likewise. + (gimple_set_block): Likewise. + (gimple_location): Likewise. + (gimple_location_ptr): Likewise. + (gimple_set_location): Likewise. + (gimple_no_warning_p): Likewise. + (gimple_set_no_warning): Likewise. + (gimple_set_visited): Likewise. + (gimple_visited_p): Likewise. + (gimple_set_plf): Likewise. + (gimple_plf): Likewise. + (gimple_set_uid): Likewise. + (gimple_uid): Likewise. + (gimple_init_singleton): Likewise. + (gimple_modified_p): Likewise. + (gimple_set_modified): Likewise. + (gimple_expr_code): Likewise. + (gimple_has_volatile_ops): Likewise. + (gimple_set_has_volatile_ops): Likewise. + (gimple_omp_subcode): Likewise. + (gimple_omp_set_subcode): Likewise. + (gimple_omp_return_set_nowait): Likewise. + (gimple_omp_section_set_last): Likewise. + (gimple_omp_parallel_set_combined_p): Likewise. + (gimple_omp_atomic_set_need_value): Likewise. + (gimple_omp_atomic_set_seq_cst): Likewise. + (gimple_num_ops): Likewise. + (gimple_set_num_ops): Likewise. + (gimple_assign_nontemporal_move_p): Likewise. + (gimple_assign_set_nontemporal_move): Likewise. + (gimple_assign_rhs_code): Likewise. + (gimple_assign_set_rhs_code): Likewise. + (gimple_call_internal_p): Likewise. + (gimple_call_with_bounds_p): Likewise. + (gimple_call_set_with_bounds): Likewise. + (gimple_call_set_tail): Likewise. + (gimple_call_tail_p): Likewise. + (gimple_call_set_return_slot_opt): Likewise. + (gimple_call_return_slot_opt_p): Likewise. + (gimple_call_set_from_thunk): Likewise. + (gimple_call_from_thunk_p): Likewise. + (gimple_call_set_va_arg_pack): Likewise. + (gimple_call_va_arg_pack_p): Likewise. + (gimple_call_set_nothrow): Likewise. + (gimple_call_set_alloca_for_var): Likewise. + (gimple_call_alloca_for_var_p): Likewise. + (gimple_call_copy_flags): Likewise. + (gimple_cond_code): Likewise. + (gimple_cond_set_code): Likewise. + (gimple_cond_make_false): Likewise. + (gimple_cond_make_true): Likewise. + (gimple_asm_volatile_p): Likewise. + (gimple_asm_set_volatile): Likewise. + (gimple_asm_set_input): Likewise. + (gimple_asm_input_p): Likewise. + (gimple_try_kind): Likewise. + (gimple_try_set_kind): Likewise. + (gimple_try_catch_is_cleanup): Likewise. + (gimple_try_set_catch_is_cleanup): Likewise. + (gimple_wce_cleanup_eh_only): Likewise. + (gimple_wce_set_cleanup_eh_only): Likewise. + (gimple_debug_bind_p): Likewise. + (gimple_debug_source_bind_p): Likewise. + (gimple_omp_for_set_kind): Likewise. + (gimple_omp_for_set_combined_p): Likewise. + (gimple_omp_for_set_combined_into_p): Likewise. + (gimple_omp_target_set_kind): Likewise. + (gimple_transaction_subcode): Likewise. + (gimple_transaction_set_subcode): Likewise. + (gimple_predict_predictor): Likewise. + (gimple_predict_set_predictor): Likewise. + (gimple_predict_outcome): Likewise. + (gimple_predict_set_outcome): Likewise. + (gimple_transaction_set_label): Likewise. + (gimple_transaction_set_body): Likewise. + (gimple_transaction_label_ptr): Likewise. + (gimple_transaction_label): Likewise. + (gimple_transaction_body_ptr): Likewise. + (gimple_omp_continue_set_control_use): Likewise. + (gimple_omp_continue_control_use_ptr): Likewise. + (gimple_omp_continue_control_use): Likewise. + (gimple_omp_continue_set_control_def): Likewise. + (gimple_omp_continue_control_def_ptr): Likewise. + (gimple_omp_continue_control_def): Likewise. + (gimple_omp_atomic_load_rhs_ptr): Likewise. + (gimple_omp_atomic_load_rhs): Likewise. + (gimple_omp_atomic_load_set_rhs): Likewise. + (gimple_omp_atomic_load_lhs_ptr): Likewise. + (gimple_omp_atomic_load_lhs): Likewise. + (gimple_omp_atomic_load_set_lhs): Likewise. + (gimple_omp_atomic_store_val_ptr): Likewise. + (gimple_omp_atomic_store_val): Likewise. + (gimple_omp_atomic_store_set_val): Likewise. + (gimple_omp_for_cond): Likewise. + (gimple_omp_for_set_cond): Likewise. + (gimple_omp_sections_set_control): Likewise. + (gimple_omp_sections_control_ptr): Likewise. + (gimple_omp_sections_control): Likewise. + (gimple_omp_sections_set_clauses): Likewise. + (gimple_omp_sections_clauses_ptr): Likewise. + (gimple_omp_sections_clauses): Likewise. + (gimple_omp_teams_set_clauses): Likewise. + (gimple_omp_teams_clauses_ptr): Likewise. + (gimple_omp_teams_clauses): Likewise. + (gimple_omp_target_set_data_arg): Likewise. + (gimple_omp_target_data_arg_ptr): Likewise. + (gimple_omp_target_data_arg): Likewise. + (gimple_omp_target_set_child_fn): Likewise. + (gimple_omp_target_child_fn_ptr): Likewise. + (gimple_omp_target_child_fn): Likewise. + (gimple_omp_target_set_clauses): Likewise. + (gimple_omp_target_clauses_ptr): Likewise. + (gimple_omp_target_clauses): Likewise. + (gimple_omp_single_set_clauses): Likewise. + (gimple_omp_single_clauses_ptr): Likewise. + (gimple_omp_single_clauses): Likewise. + (gimple_omp_task_set_arg_align): Likewise. + (gimple_omp_task_arg_align_ptr): Likewise. + (gimple_omp_task_arg_align): Likewise. + (gimple_omp_task_set_arg_size): Likewise. + (gimple_omp_task_arg_size_ptr): Likewise. + (gimple_omp_task_arg_size): Likewise. + (gimple_omp_task_set_copy_fn): Likewise. + (gimple_omp_task_copy_fn_ptr): Likewise. + (gimple_omp_task_copy_fn): Likewise. + (gimple_omp_task_set_data_arg): Likewise. + (gimple_omp_task_data_arg_ptr): Likewise. + (gimple_omp_task_data_arg): Likewise. + (gimple_omp_task_set_child_fn): Likewise. + (gimple_omp_task_child_fn_ptr): Likewise. + (gimple_omp_task_child_fn): Likewise. + (gimple_omp_task_set_clauses): Likewise. + (gimple_omp_task_clauses_ptr): Likewise. + (gimple_omp_task_clauses): Likewise. + (gimple_omp_parallel_set_data_arg): Likewise. + (gimple_omp_parallel_data_arg_ptr): Likewise. + (gimple_omp_parallel_data_arg): Likewise. + (gimple_omp_parallel_set_child_fn): Likewise. + (gimple_omp_parallel_child_fn_ptr): Likewise. + (gimple_omp_parallel_child_fn): Likewise. + (gimple_omp_parallel_set_clauses): Likewise. + (gimple_omp_parallel_clauses_ptr): Likewise. + (gimple_omp_parallel_clauses): Likewise. + (gimple_omp_for_set_pre_body): Likewise. + (gimple_omp_for_pre_body_ptr): Likewise. + (gimple_omp_for_set_incr): Likewise. + (gimple_omp_for_incr_ptr): Likewise. + (gimple_omp_for_incr): Likewise. + (gimple_omp_for_set_final): Likewise. + (gimple_omp_for_final_ptr): Likewise. + (gimple_omp_for_final): Likewise. + (gimple_omp_for_set_initial): Likewise. + (gimple_omp_for_initial_ptr): Likewise. + (gimple_omp_for_initial): Likewise. + (gimple_omp_for_set_index): Likewise. + (gimple_omp_for_index_ptr): Likewise. + (gimple_omp_for_index): Likewise. + (gimple_omp_for_collapse): Likewise. + (gimple_omp_for_set_clauses): Likewise. + (gimple_omp_for_clauses_ptr): Likewise. + (gimple_omp_for_clauses): Likewise. + (gimple_omp_critical_set_name): Likewise. + (gimple_omp_critical_name_ptr): Likewise. + (gimple_omp_critical_name): Likewise. + (gimple_eh_dispatch_set_region): Likewise. + (gimple_eh_dispatch_region): Likewise. + (gimple_resx_set_region): Likewise. + (gimple_resx_region): Likewise. + (gimple_phi_set_arg): Likewise. + (gimple_phi_arg): Likewise. + (gimple_phi_set_result): Likewise. + (gimple_phi_result_ptr): Likewise. + (gimple_phi_result): Likewise. + (gimple_phi_num_args): Likewise. + (gimple_phi_capacity): Likewise. + (gimple_wce_set_cleanup): Likewise. + (gimple_wce_cleanup_ptr): Likewise. + (gimple_try_set_cleanup): Likewise. + (gimple_try_set_eval): Likewise. + (gimple_try_cleanup_ptr): Likewise. + (gimple_try_eval_ptr): Likewise. + (gimple_eh_else_set_e_body): Likewise. + (gimple_eh_else_set_n_body): Likewise. + (gimple_eh_else_e_body_ptr): Likewise. + (gimple_eh_else_n_body_ptr): Likewise. + (gimple_eh_must_not_throw_set_fndecl): Likewise. + (gimple_eh_must_not_throw_fndecl): Likewise. + (gimple_eh_filter_set_failure): Likewise. + (gimple_eh_filter_set_types): Likewise. + (gimple_eh_filter_failure_ptr): Likewise. + (gimple_eh_filter_types_ptr): Likewise. + (gimple_eh_filter_types): Likewise. + (gimple_catch_set_handler): Likewise. + (gimple_catch_set_types): Likewise. + (gimple_catch_handler_ptr): Likewise. + (gimple_catch_types_ptr): Likewise. + (gimple_catch_types): Likewise. + (gimple_asm_string): Likewise. + (gimple_asm_set_label_op): Likewise. + (gimple_asm_label_op): Likewise. + (gimple_asm_set_clobber_op): Likewise. + (gimple_asm_clobber_op): Likewise. + (gimple_asm_set_output_op): Likewise. + (gimple_asm_output_op_ptr): Likewise. + (gimple_asm_output_op): Likewise. + (gimple_asm_set_input_op): Likewise. + (gimple_asm_input_op_ptr): Likewise. + (gimple_asm_input_op): Likewise. + (gimple_asm_nlabels): Likewise. + (gimple_asm_nclobbers): Likewise. + (gimple_asm_noutputs): Likewise. + (gimple_asm_ninputs): Likewise. + (gimple_bind_set_block): Likewise. + (gimple_bind_block): Likewise. + (gimple_bind_add_seq): Likewise. + (gimple_bind_add_stmt): Likewise. + (gimple_bind_set_body): Likewise. + (gimple_bind_body_ptr): Likewise. + (gimple_bind_append_vars): Likewise. + (gimple_bind_set_vars): Likewise. + (gimple_bind_vars): Likewise. + (gimple_call_clobber_set): Likewise. + (gimple_call_use_set): Likewise. + (gimple_call_set_internal_fn): Likewise. + (gimple_call_set_fntype): Likewise. + (gimple_call_fntype): Likewise. + (gimple_omp_return_lhs_ptr): Likewise. + (gimple_omp_return_lhs): Likewise. + (gimple_omp_return_set_lhs): Likewise. + (gimple_omp_taskreg_set_data_arg): Likewise. + (gimple_omp_taskreg_data_arg_ptr): Likewise. + (gimple_omp_taskreg_data_arg): Likewise. + (gimple_omp_taskreg_set_child_fn): Likewise. + (gimple_omp_taskreg_child_fn_ptr): Likewise. + (gimple_omp_taskreg_child_fn): Likewise. + (gimple_omp_taskreg_set_clauses): Likewise. + (gimple_omp_taskreg_clauses_ptr): Likewise. + (gimple_omp_taskreg_clauses): Likewise. + (gimple_vuse): Likewise. + (gimple_vdef): Likewise. + (gimple_vuse_ptr): Likewise. + (gimple_vdef_ptr): Likewise. + * tree-inline.c (copy_debug_stmt): Likewise. + * tree-phinodes.c (make_phi_node): Likewise. + + * gimple.h (is_a_helper ::test): New. + (is_a_helper ::test): New. + (is_a_helper ::test): New. + (is_a_helper ::test): New. + + * gimple-streamer-in.c (input_gimple_stmt): Port from union + access to use of as_a. + * gimple.c (gimple_build_asm_1): Likewise. + (gimple_build_try): Likewise. Also, return a specific subclass + rather than just gimple. + (gimple_build_resx): Port from union access to use of as_a. + (gimple_build_eh_dispatch): Likewise. + (gimple_build_omp_for): Likewise. Also, convert allocation of iter + now that gengtype no longer provides a typed allocator function. + (gimple_copy): Likewise. + * gimple.h (gimple_build_try): Return a specific subclass rather + than just gimple. + * gimplify.c (gimplify_cleanup_point_expr): Replace union access + with subclass access by making use of new return type of + gimple_build_try. + * tree-phinodes.c: (allocate_phi_node): Return a + "gimple_statement_phi *" rather than just a gimple. + (resize_phi_node): Likewise. + (make_phi_node): Replace union access with subclass access by + making use of new return type of allocate_phi_node. + (reserve_phi_args_for_new_edge): Replace union access with as_a. + (remove_phi_arg_num): Accept a "gimple_statement_phi *" rather + than just a gimple. + (remove_phi_args): Update for change to remove_phi_arg_num. + + * gdbhooks.py (GimplePrinter.to_string): Update lookup of + code field to reflect inheritance, rather than embedding of + the base gimple type. + +2013-11-19 Richard Biener + + * cfgloop.h (struct loop_iterator): C++-ify, add constructor + and destructor and make fel_next a member function. + (fel_next): Transform into ... + (loop_iterator::next): ... this. + (fel_init): Transform into ... + (loop_iterator::loop_iterator): ... this. + (loop_iterator::~loop_iterator): New. + (FOR_EACH_LOOP): Remove loop-iterator argument. + (FOR_EACH_LOOP_BREAK): Remove no longer necessary macro. + * cfgloop.c, cfgloopmanip.c, config/mn10300/mn10300.c, + graphite-clast-to-gimple.c, graphite-scop-detection.c, + graphite-sese-to-poly.c, ipa-inline-analysis.c, ipa-pure-const.c, + loop-init.c, loop-invariant.c, loop-unroll.c, loop-unswitch.c, + modulo-sched.c, predict.c, sel-sched-ir.c, tree-cfg.c, tree-data-ref.c, + tree-if-conv.c, tree-loop-distribution.c, tree-parloops.c, + tree-predcom.c, tree-scalar-evolution.c, tree-ssa-dce.c, + tree-ssa-loop-ch.c, tree-ssa-loop-im.c, tree-ssa-loop-ivcanon.c, + tree-ssa-loop-ivopts.c, tree-ssa-loop-manip.c, tree-ssa-loop-niter.c, + tree-ssa-loop-prefetch.c, tree-ssa-loop-unswitch.c, + tree-ssa-threadupdate.c, tree-vectorizer.c, tree-vrp.c: Adjust + uses of FOR_EACH_LOOP and remove loop_iterator variables. Replace + FOR_EACH_LOOP_BREAK with break. + +2013-11-19 Richard Biener + + PR tree-optimization/59164 + * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): + Uncomment assert. + * tree-vect-loop.c (vect_analyze_loop_operations): Adjust check + whether we can create an epilogue loop to reflect thecases where + we create one. + +2013-11-19 Andrew MacLeod + + * graphite-sese-to-poly.c: Include expr.h. + +2013-11-19 Richard Biener + + PR middle-end/58956 + * tree-ssa-ter.c (find_replaceable_in_bb): Avoid forwarding + loads into stmts that may clobber it. + +2013-11-19 Bernd Schmidt + + * cgraphunit.c (symtab_terminator): New variable. + (queued_nodes): Renamed from first. Use symtab_terminator as + initializer. + (analyze_functions): Adjust accordingly. + (cgraph_process_new_functions): Return void. + * cgraph.h (cgraph_process_new_functions): Adjust declaration. + +2013-11-19 Marek Polacek + + * opts.c (common_handle_option): Add -fsanitize=null option. + Turn off -fdelete-null-pointer-checks option when doing the + NULL pointer checking. + * sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH): Add. + * tree-pass.h (make_pass_ubsan): Declare. + (make_pass_sanopt): Declare. + * timevar.def (TV_TREE_UBSAN): New timevar. + * passes.def: Add pass_sanopt and pass_ubsan. + * ubsan.h (ubsan_null_ckind): New enum. + (ubsan_mismatch_data): New struct. + (ubsan_expand_null_ifn): Declare. + (ubsan_create_data): Adjust declaration. + (ubsan_type_descriptor): Likewise. + * asan.c: Include "ubsan.h". + (pass_data_sanopt): New pass. + (execute_sanopt): New function. + (gate_sanopt): Likewise. + (make_pass_sanopt): Likewise. + (class pass_sanopt): New class. + * ubsan.c: Include tree-pass.h, gimple-ssa.h, gimple-walk.h, + gimple-iterator.h and cfgloop.h. + (PROB_VERY_UNLIKELY): Define. + (tree_type_map_hash): New function. + (ubsan_type_descriptor): Add new parameter. + Improve type name generation. + (ubsan_create_data): Add new parameter. Add pointer data into + ubsan structure. + (ubsan_expand_null_ifn): New function. + (instrument_member_call): Likewise. + (instrument_mem_ref): Likewise. + (instrument_null): Likewise. + (ubsan_pass): Likewise. + (gate_ubsan): Likewise. + (make_pass_ubsan): Likewise. + (ubsan_instrument_unreachable): Adjust ubsan_create_data call. + (class pass_ubsan): New class. + (pass_data_ubsan): New pass. + * flag-types.h (enum sanitize_code): Add SANITIZE_NULL. + * internal-fn.c (expand_UBSAN_NULL): New function. + * cgraphunit.c (varpool_finalize_decl): Call varpool_assemble_decl + even when !flag_toplevel_reorder. + * internal-fn.def (UBSAN_NULL): New. + +2013-11-19 Jan Hubicka + + * cgraph.c (cgraph_create_indirect_edge): Use + get_polymorphic_call_info. + * cgraph.h (cgraph_indirect_call_info): Add outer_type, + maybe_in_construction and maybe_derived_type. + * ipa-utils.h (ipa_polymorphic_call_context): New structure. + (ipa_dummy_polymorphic_call_context): New global var. + (possible_polymorphic_call_targets): Add context paramter. + (dump_possible_polymorphic_call_targets): Likewise; update wrappers. + (possible_polymorphic_call_target_p): Likewise. + (get_polymorphic_call_info): New function. + * ipa-devirt.c (ipa_dummy_polymorphic_call_context): New function. + (add_type_duplicate): Remove forgotten debug output. + (method_class_type): Add sanity check. + (maybe_record_node): Add FINALP parameter. + (record_binfo): Add OUTER_TYPE and OFFSET; walk the inner + by info by get_binfo_at_offset. + (possible_polymorphic_call_targets_1): Add OUTER_TYPE/OFFSET + parameters; pass them to record-binfo. + (polymorphic_call_target_d): Add context and FINAL. + (polymorphic_call_target_hasher::hash): Hash context. + (polymorphic_call_target_hasher::equal): Compare context. + (free_polymorphic_call_targets_hash): + (get_class_context): New function. + (contains_type_p): New function. + (get_polymorphic_call_info): New function. + (walk_bases): New function. + (possible_polymorphic_call_targets): Add context parameter; honnor it. + (dump_possible_polymorphic_call_targets): Dump context. + (possible_polymorphic_call_target_p): Add context. + (update_type_inheritance_graph): Update comment.s + (ipa_set_jf_known_type): Assert that compoentn type is known. + (ipa_note_param_call): Do not tamper with offsets. + (ipa_analyze_indirect_call_uses): When offset is being changed; clear + outer type. + (update_indirect_edges_after_inlining): Likewise. + (ipa_write_indirect_edge_info): Stream new fields. + (ipa_read_indirect_edge_info): Stream in new fields. + +2013-11-19 Jan Hubicka + + * tree-pretty-print.c (dump_generic_node): Print class type of + OBJ_TYPE_REF. + +2013-11-19 Joey Ye + + * config/arm/arm.opt (-marm-pic-data-is-text-relative): New option. + * doc/invoke.texi (-marm-pic-data-is-text-relative): Documentation + for new option. + * config/arm/arm.c (arm_option_override): By default disable + -marm-pic-data-is-text-relative. + (legitimize_pic_address): Use arm_pic_data_is_text_relative. + (arm_assemble_integer): Likewise. + * config/arm/arm.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE): + New macro to initialize -marm-pic-data-is-text-relative. + +2013-11-19 Bin Cheng + + * tree-ssa-loop-ivopts.c (enum ainc_type): New. + (address_cost_data): New field. + (get_address_cost): Compute auto-increment rtx cost in ainc_costs. + Use ainc_costs for auto-increment rtx patterns. Cleanup TWS. + +2013-11-19 James Greenhalgh + + * config/aarch64/aarch64.md: Remove v8type from all insns. + +2013-11-19 Richard Biener + + PR tree-optimization/57517 + * tree-predcom.c (combinable_refs_p): Verify the combination + is always executed when the refs are. + +2013-11-19 Jeff Law + + * tree-ssa-threadupdate.c: Include ssa-iterators.h + (copy_phi_arg_into_existing_phi): New function. + (any_remaining_duplicated_blocks): Likewise. + (ssa_fix_duplicate_block_edges): Handle multiple duplicated + blocks on a jump threading path. + + * tree-ssa-threadupdate.c (thread_through_loop_header): Do not + thread through a joiner which has the latch edge. + +2013-11-19 Jan Hubicka + + * md.texi (setmem): Document new parameter. + * optabs.c (maybe_gen_insn): Support 9 operands. + * builtins.c (determine_block_size): Add probable_max_size; + support anti-ranges. + (expand_builtin_memcpy. expand_builtin_memset_args): Pass around + probable_max_size. + * expr.c (emit_block_move_via_movmem, emit_block_move_hints, + emit_block_move, clear_storage_hints, set_storage_via_setmem): + Likewise. + * expr.h (emit_block_move_hints, clear_storage_hints, + set_storage_via_setmem): Update prototype. + * i386.md (setmem, movmem patterns): Add 9th operand. + * i386-protos.h (ix86_expand_set_or_movmem): Update prototype. + * i386.c (ix86_expand_set_or_movmem): Take probable_max_size_exp + argument; pass it to decide_alg. + +2013-11-19 David Malcolm + + * basic-block.h (n_basic_blocks_for_function): Rename macro to... + (n_basic_blocks_for_fn): ...this. + + (n_basic_blocks): Eliminate macro as work towards making uses of + cfun be explicit. + + * cfgloop.c (init_loops_structure): Update for renaming of + "n_basic_blocks_for_function" to "n_basic_blocks_for_fn". + * graph.c (draw_cfg_nodes_no_loops): Likewise. + * ipa-utils.c (ipa_merge_profiles): Likewise. + * lto-streamer-in.c (make_new_block): Likewise. + * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise. + (dump_function_to_file): Likewise. + + * alias.c (init_alias_analysis): Replace usage of "n_basic_blocks" + macro with "n_basic_blocks_for_fn (cfun)". + * bb-reorder.c (partition_hot_cold_basic_blocks): Likewise. + (duplicate_computed_gotos): Likewise. + (reorder_basic_blocks): Likewise. + * bt-load.c (augment_live_range): Likewise. + * cfg.c (expunge_block): Likewise. + (compact_blocks): Likewise. + * cfganal.c (single_pred_before_succ_order): Likewise. + (compute_idf): Likewise. + (flow_dfs_compute_reverse_init): Likewise. + (pre_and_rev_post_order_compute): Likewise. + (pre_and_rev_post_order_compute_fn): Likewise. + (inverted_post_order_compute): Likewise. + (post_order_compute): Likewise. + (print_edge_list): Likewise. + (find_unreachable_blocks): Likewise. + (mark_dfs_back_edges): Likewise. + * cfgcleanup.c (try_optimize_cfg): Likewise. + (try_forward_edges): Likewise. + * cfghooks.c (dump_flow_info): Likewise. + * cfgloop.c (verify_loop_structure): Likewise. + (get_loop_body): Likewise. + (flow_loops_find): Likewise. + * cfgloopmanip.c (add_loop): Likewise. + (remove_path): Likewise. + (find_path): Likewise. + * cfgrtl.c (rtl_flow_call_edges_add): Likewise. + (rtl_verify_bb_layout): Likewise. + (entry_of_function): Likewise. + (rtl_create_basic_block): Likewise. + * coverage.c (coverage_compute_cfg_checksum): Likewise. + * cprop.c (one_cprop_pass): Likewise. + (is_too_expensive): Likewise. + * df-core.c (df_compute_cfg_image): Likewise. + (df_compact_blocks): Likewise. + (df_worklist_dataflow_doublequeue): Likewise. + * dominance.c (calculate_dominance_info): Likewise. + (calc_dfs_tree): Likewise. + (calc_dfs_tree_nonrec): Likewise. + (init_dom_info): Likewise. + * domwalk.c (cmp_bb_postorder): Likewise. + * function.c (thread_prologue_and_epilogue_insns): Likewise. + (generate_setjmp_warnings): Likewise. + * fwprop.c (build_single_def_use_links): Likewise. + * gcse.c (is_too_expensive): Likewise. + (one_code_hoisting_pass): Likewise. + (one_pre_gcse_pass): Likewise. + * graphite.c (graphite_initialize): Likewise. + * haifa-sched.c (haifa_sched_init): Likewise. + * ipa-inline-analysis.c (estimate_function_body_sizes): Likewise. + * ira.c (split_live_ranges_for_shrink_wrap): Likewise. + * ira-build.c (ira_build): Likewise. + * lcm.c (compute_nearerout): Likewise. + (compute_available): Likewise. + (compute_laterin): Likewise. + (compute_antinout_edge): Likewise. + * lra-lives.c (lra_create_live_ranges): Likewise. + * lra.c (has_nonexceptional_receiver): Likewise. + * mcf.c (create_fixup_graph): Likewise. + * profile.c (branch_prob): Likewise. + * reg-stack.c (convert_regs_2): Likewise. + * regrename.c (regrename_analyze): Likewise. + * reload1.c (has_nonexceptional_receiver): Likewise. + * reorg.c (dbr_schedule): Likewise. + * sched-deps.c (sched_deps_init): Likewise. + * sched-ebb.c (schedule_ebbs): Likewise. + * sched-rgn.c (extend_regions): Likewise. + (schedule_insns): Likewise. + (sched_rgn_init): Likewise. + (extend_rgns): Likewise. + (haifa_find_rgns): Likewise. + * sel-sched-ir.c (recompute_rev_top_order): Likewise. + (sel_recompute_toporder): Likewise. + * sel-sched.c (run_selective_scheduling): Likewise. + * store-motion.c (one_store_motion_pass): Likewise. + (remove_reachable_equiv_notes): Likewise. + * tracer.c (tracer): Likewise. + (tail_duplicate): Likewise. + * tree-cfg.c (gimple_flow_call_edges_add): Likewise. + (dump_cfg_stats): Likewise. + (gimple_dump_cfg): Likewise. + (create_bb): Likewise. + (build_gimple_cfg): Likewise. + * tree-cfgcleanup.c (merge_phi_nodes): Likewise. + * tree-inline.c (optimize_inline_calls): Likewise. + (fold_marked_statements): Likewise. + * tree-ssa-ifcombine.c (tree_ssa_ifcombine): Likewise. + * tree-ssa-loop-ch.c (copy_loop_headers): Likewise. + * tree-ssa-loop-im.c (analyze_memory_references): Likewise. + * tree-ssa-loop-manip.c (compute_live_loop_exits): Likewise. + * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise. + * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Likewise. + * tree-ssa-pre.c (do_pre): Likewise. + (init_pre): Likewise. + (compute_avail): Likewise. + * tree-ssa-reassoc.c (init_reassoc): Likewise. + * tree-ssa-sccvn.c (init_scc_vn): Likewise. + * tree-ssa-tail-merge.c (alloc_cluster_vectors): Likewise. + (init_worklist): Likewise. + * tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise. + * var-tracking.c (variable_tracking_main_1): Likewise. + (vt_find_locations): Likewise. + (vt_stack_adjustments): Likewise. + * config/s390/s390.c (s390_optimize_nonescaping_tx): Likewise. + * config/spu/spu.c (spu_machine_dependent_reorg): Likewise. + +2013-11-18 Jan Hubicka + + * profile.c (compute_branch_probabilities): Do not sanity check + run_max. + +2013-11-18 Kenneth Zadeck + + * tree.c (int_fits_type_p): Change GET_MODE_BITSIZE to + GET_MODE_PRECISION. + * fold-const.c (fold_single_bit_test_into_sign_test) + (fold_binary_loc): Change GET_MODE_BITSIZE to GET_MODE_PRECISION. + +2013-11-18 Teresa Johnson + + * cfgrtl.c (cfg_layout_initialize): Assert if we try to go into + cfglayout after bb reordering. + * passes.def: Move compgotos before bb reordering since it goes into + cfglayout. + +2013-11-18 Bernd Schmidt + + * cgraphunit.c (ipa_passes): Don't execute all_lto_gen_passes. + * lto-streamer-out.c (lto_output, produce_asm_for_decls): No longer + static. + (pass_data_ipa_lto_gimple_out, pass_ipa_lto_gimple_out, + make_pass_ipa_lto_gimple_out, pass_data_ipa_lto_finish_out, + pass_ipa_lto_finish_out, make_pass_ipa_lto_finish_out): Remove. + * lto-streamer.h (lto_output, produce_asm_for_decls): Declare. + * pass-manager.h (GCC_PASS_LISTS, class pass_manager): + Remove all_lto_gen_passes. + * passes.c (pass_manager::dump_passes): Remove its use. + (pass_manager::register_pass): Likewise. + (ipa_read_summaries, ipa_read_optimization_summaries): Likewise. + (pass_manager::pass_manager): Don't initialize or use it. + (write_lto): New static function. + (ipa_write_summaries_1, ipa_write_optimization_summaries): Use it + instead of using all_lto_gen_passes. + * passes.def (all_lto_gen_passes, pass_ipa_lto_gimple_out, + pass_ipa_lto_finish_out): Delete. + * tree-pass.h (make_pass_ipa_lto_gimple_out, + make_pass_ipa_lto_finish_out): Don't declare. + +2013-11-18 Jeff Law + + * tree-ssa-threadupdate.c (redirection_data): Record two + duplicated blocks instead of just one. + (local_info): Explain why we don't create a template for the + second duplicated block in a thread path. + (create_block_for_threading): Accept argument indicating array + index into redirection_data to store its result. + (lookup_redirection_data): Initialize both duplicate blocks. + (ssa_create_duplicates): If a jump threading path needs multiple + blocks duplicated, then duplicate them. + (ssa_fix_duplicate_block_edges): Corresponding changes. + (ssa_fixup_template_block, thread_single_edge): Likewise. + +2013-11-18 Marek Polacek + + * doc/invoke.texi: Extend -fsanitize=undefined documentation. + +2013-11-18 Andrew Pinski + Steve Ellcey + + PR target/56552 + * config/mips/mips.md (*mov_on_): Remove + type restriction from equality_operator on conditonal move. + (*mov_on_): Ditto. + (*mov_on__ne): New. + +2013-11-18 Jeff Law + + * tree-ssa-threadupdate.c: Fix file block comment. + Fix minor indention issue. + +2013-11-18 Uros Bizjak + + * config/i386/i386.c (ix86_decompose_address): Use REG_P instead of + ix86_address_subreg_operand. Move subreg checks to + ix86_validate_address_register. Move address override check to + ix86_legitimate_address_p. + (ix86_validate_address_register): New function. + (ix86_legitimate_address_p): Call ix86_validate_address_register + to validate base and index registers. Add address override check + from ix86_decompose_address. + (ix86_decompose_address): Remove. + +2013-11-18 Richard Biener + + PR tree-optimization/59125 + PR tree-optimization/54570 + * tree-ssa-sccvn.c (copy_reference_ops_from_ref): When inlining + is not complete do not treat component-references with offset zero + but different fields as equal. + * tree-object-size.c: Include tree-phinodes.h and ssa-iterators.h. + (compute_object_sizes): Apply TLC. Propagate the constant + results into all uses and fold their stmts. + * passes.def (pass_all_optimizations): Move pass_object_sizes + after the first pass_forwprop and before pass_fre. + +2013-11-18 Richard Sandiford + + * tree.h (tree_to_uhwi): Return an unsigned HOST_WIDE_INT. + * tree.c (tree_to_uhwi): Return an unsigned HOST_WIDE_INT. + (tree_ctz): Remove cast to unsigned type. + * builtins.c (fold_builtin_memory_op): Likewise. + * dwarf2out.c (descr_info_loc): Likewise. + * godump.c (go_output_typedef): Likewise. + * omp-low.c (expand_omp_simd): Likewise. + * stor-layout.c (excess_unit_span): Likewise. + * tree-object-size.c (addr_object_size): Likewise. + * tree-sra.c (analyze_all_variable_accesses): Likewise. + * tree-ssa-forwprop.c (simplify_builtin_call): Likewise. + (simplify_rotate): Likewise. + * tree-ssa-strlen.c (adjust_last_stmt, handle_builtin_memcpy) + (handle_pointer_plus): Likewise. + * tree-switch-conversion.c (check_range): Likewise. + * tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise. + * tsan.c (instrument_builtin_call): Likewise. + * cfgexpand.c (defer_stack_allocation): Add cast to HOST_WIDE_INT. + * trans-mem.c (tm_log_add): Likewise. + * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise. + * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise. + * config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise. + * config/mips/mips.c (r10k_safe_mem_expr_p): Make offset unsigned. + +2013-11-18 Richard Sandiford + + * tree.h (host_integerp, tree_low_cst): Delete. + * tree.c (host_integerp, tree_low_cst): Delete. + +2013-11-18 Richard Sandiford + + * expr.h: Update comments to refer to tree_to_[su]hwi rather + than tree_low_cst. + * fold-const.c (fold_binary_loc): Likewise. + * expr.c (store_constructor): Use tree_to_uhwi rather than + tree_low_cst. + * ipa-utils.h (possible_polymorphic_call_target_p): Likewise. + * stmt.c (emit_case_dispatch_table): Likewise. + * tree-switch-conversion.c (emit_case_bit_tests): Likewise. + +2013-11-18 Richard Sandiford + + * alias.c, asan.c, builtins.c, cfgexpand.c, cgraph.c, + config/aarch64/aarch64.c, config/alpha/predicates.md, + config/arm/arm.c, config/darwin.c, config/epiphany/epiphany.c, + config/i386/i386.c, config/iq2000/iq2000.c, config/m32c/m32c-pragma.c, + config/mep/mep-pragma.c, config/mips/mips.c, + config/picochip/picochip.c, config/rs6000/rs6000.c, cppbuiltin.c, + dbxout.c, dwarf2out.c, emit-rtl.c, except.c, expr.c, fold-const.c, + function.c, gimple-fold.c, godump.c, ipa-cp.c, ipa-prop.c, omp-low.c, + predict.c, sdbout.c, stor-layout.c, trans-mem.c, tree-object-size.c, + tree-sra.c, tree-ssa-ccp.c, tree-ssa-forwprop.c, + tree-ssa-loop-ivcanon.c, tree-ssa-loop-ivopts.c, tree-ssa-loop-niter.c, + tree-ssa-loop-prefetch.c, tree-ssa-strlen.c, tree-stdarg.c, + tree-switch-conversion.c, tree-vect-generic.c, tree-vect-loop.c, + tree-vect-patterns.c, tree-vrp.c, tree.c, tsan.c, ubsan.c, varasm.c: + Replace tree_low_cst (..., 1) with tree_to_uhwi throughout. + +2013-11-18 Richard Sandiford + + * builtins.c, cilk-common.c, config/aarch64/aarch64.c, + config/alpha/alpha.c, config/arm/arm.c, config/c6x/predicates.md, + config/i386/i386.c, config/ia64/predicates.md, config/s390/s390.c, + coverage.c, dbxout.c, dwarf2out.c, except.c, explow.c, expr.c, expr.h, + fold-const.c, gimple-fold.c, godump.c, ipa-prop.c, omp-low.c, + predict.c, rtlanal.c, sdbout.c, stmt.c, stor-layout.c, targhooks.c, + tree-cfg.c, tree-data-ref.c, tree-inline.c, tree-ssa-forwprop.c, + tree-ssa-loop-prefetch.c, tree-ssa-phiopt.c, tree-ssa-sccvn.c, + tree-ssa-strlen.c, tree-stdarg.c, tree-vect-data-refs.c, + tree-vect-patterns.c, tree.c, tree.h, var-tracking.c, varasm.c: + Replace tree_low_cst (..., 0) with tree_to_shwi throughout. + +2013-11-18 Richard Sandiford + + * tree.h (tree_to_shwi, tree_to_uhwi): Declare, with inline expansions. + * tree.c (tree_to_shwi, tree_to_uhwi): New functions. + +2013-11-18 Richard Sandiford + + * expr.h: Update comments to refer to tree_fits_[su]hwi_p rather + than host_integerp. + +2013-11-18 Richard Sandiford + + * builtins.c, config/alpha/alpha.c, config/iq2000/iq2000.c, + config/mips/mips.c, dbxout.c, dwarf2out.c, expr.c, fold-const.c, + gimple-fold.c, godump.c, omp-low.c, predict.c, sdbout.c, stor-layout.c, + tree-dfa.c, tree-sra.c, tree-ssa-forwprop.c, tree-ssa-loop-prefetch.c, + tree-ssa-phiopt.c, tree-ssa-sccvn.c, tree-ssa-strlen.c, + tree-ssa-structalias.c, tree-vect-data-refs.c, tree-vect-patterns.c, + tree.c, varasm.c, alias.c, cfgexpand.c, config/aarch64/aarch64.c, + config/arm/arm.c, config/epiphany/epiphany.c, config/i386/i386.c, + config/m32c/m32c-pragma.c, config/mep/mep-pragma.c, + config/rs6000/rs6000.c, config/sparc/sparc.c, emit-rtl.c, function.c, + gimplify.c, ipa-prop.c, stmt.c, trans-mem.c, tree-cfg.c, + tree-object-size.c, tree-ssa-ccp.c, tree-ssa-loop-ivcanon.c, + tree-stdarg.c, tree-switch-conversion.c, tree-vect-generic.c, + tree-vrp.c, tsan.c, ubsan.c: Replace host_integerp (..., 1) with + tree_fits_uhwi_p throughout. + +2013-11-18 Richard Sandiford + + * builtins.c, config/alpha/alpha.c, config/c6x/predicates.md, + config/ia64/predicates.md, config/iq2000/iq2000.c, config/mips/mips.c, + config/s390/s390.c, dbxout.c, dwarf2out.c, except.c, explow.c, expr.c, + expr.h, fold-const.c, gimple-fold.c, gimple-ssa-strength-reduction.c, + gimple.c, godump.c, graphite-scop-detection.c, graphite-sese-to-poly.c, + omp-low.c, predict.c, rtlanal.c, sdbout.c, simplify-rtx.c, + stor-layout.c, tree-data-ref.c, tree-dfa.c, tree-pretty-print.c, + tree-sra.c, tree-ssa-alias.c, tree-ssa-forwprop.c, + tree-ssa-loop-ivopts.c, tree-ssa-loop-prefetch.c, tree-ssa-math-opts.c, + tree-ssa-phiopt.c, tree-ssa-reassoc.c, tree-ssa-sccvn.c, + tree-ssa-strlen.c, tree-ssa-structalias.c, tree-vect-data-refs.c, + tree-vect-patterns.c, tree-vectorizer.h, tree.c, var-tracking.c, + varasm.c: Replace host_integerp (..., 0) with tree_fits_shwi_p + throughout. + +2013-11-18 Richard Sandiford + + * tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Declare. + * tree.c (tree_fits_shwi_p, tree_fits_uhwi_p): Define. + +2013-11-18 Kirill Yukhin + + * config/ia64/ia64.c (ia64_split_tmode_move): Mark load with `dead' + flag if it kills its address, not its post-increment. + +2013-11-18 Ilya Enkovich + + * builtin-types.def (BT_FN_PTR_CONST_PTR_VAR): New. + * chkp-builtins.def (BUILT_IN_CHKP_BIND_BOUNDS): New. + * cfgexpand.c (expand_call_stmt): Expand BUILT_IN_CHKP_BIND_BOUNDS. + * gimple.c (gimple_call_get_nobnd_arg_index): Remove. + * gimple.h (gf_mask): Add GF_CALL_WITH_BOUNDS. + (gimple_call_with_bounds_p): New. + (gimple_call_set_with_bounds): New. + (gimple_call_num_nobnd_args): Remove. + (gimple_call_nobnd_arg): Remove. + * tree.h (CALL_WITH_BOUNDS_P): New. + * rtl.h (CALL_EXPR_WITH_BOUNDS_P): New. + +2013-11-18 Trevor Saunders + + * cgraph.h (symtab_node_asm_name): Rename to symtab_node::asm_name. + (symtab_node_name): Rename to symtab_node::name. + (cgraph_node_asm_name): Remove. + (varpool_node_asm_name): Remove. + * cgraph.c cgraphclones.c cgraphunit.c ipa-cp.c ipa-devirt.c + ipa-inline-analysis.c ipa-inline-transform.c ipa-inline.c + ipa-profile.c ipa-prop.c ipa-pure-const.c ipa-ref.c ipa-reference.c + ipa-utils.c ipa.c symtab.c tree-inline.c tree-sra.c + tree-ssa-structalias.c value-prof.c varpool.c Adjust. + +2013-11-18 Kyrylo Tkachov + + * config/arm/aarch-cost-tables.h (cortexa53_extra_costs): New table. + * config/arm/arm.c (arm_cortex_a53_tune): New. + * config/arm/arm-cores.def (cortex-a53): Use cortex_a53 tuning struct. + +2013-11-12 Ganesh Gopalasubramanian + + * config.gcc (i[34567]86-*-linux* | ...): Add bdver4. + (case ${target}): Add bdver4. + * config/i386/bdver3.md: Add bdver4. + * config/i386/driver-i386.c: (host_detect_local_cpu): Let + -march=native recognize bdver4 processors. + * config/i386/i386-c.c (ix86_target_macros_internal): Add + bdver4 def_and_undef + * config/i386/i386.c (struct processor_costs bdver4_cost): New. + (m_BDVER4): New definition. + (m_AMD_MULTIPLE): Includes m_BDVER4. + (processor_target_table): Add bdver4 entry. + (static const char *const cpu_names): Add bdver4 entry. + (software_prefetching_beneficial_p): Add bdver3. + (ix86_option_override_internal): Add bdver4 instruction sets. + (ix86_issue_rate): Add bdver4. + (ix86_adjust_cost): Add bdver4. + (ia32_multipass_dfa_lookahead): Add bdver4. + (enum processor_model): Add M_AMDFAM15H_BDVER4. + (struct _arch_names_table): Add M_AMDFAM15H_BDVER4. + (has_dispatch): Add bdver4. + * config/i386/i386.h (TARGET_BDVER4): New definition. + (enum target_cpu_default): Add TARGET_CPU_DEFAULT_bdver4. + (enum processor_type): Add PROCESSOR_BDVER4. + * config/i386/i386.md (define_attr "cpu"): Add bdver4. + * config/i386/i386.opt (flag_dispatch_scheduler): Add bdver4. + * doc/extend.texi: Add details about bdver4. + * doc/invoke.texi: Add details about bdver4. Add + fma4 and fsgsbase for bdver3. Add fma4 for bdver2. + +2013-11-17 Ulrich Weigand + + * config/rs6000/rs6000.c (rs6000_emit_move): Use low word of + sdmode_stack_slot also in little-endian mode. + +2013-11-17 Jan Hubicka + + * doc/md.texi (setmem, movstr): Update documentation. + * builtins.c (determine_block_size): New function. + (expand_builtin_memcpy): Use it and pass it to emit_block_move_hints. + (expand_builtin_memset_args): Use it and pass it to + set_storage_via_setmem. + * expr.c (emit_block_move_via_movmem): Add min_size/max_size + parameters; update call to expander. + (emit_block_move_hints): Add min_size/max_size parameters. + (clear_storage_hints): Likewise. + (set_storage_via_setmem): Likewise. + (clear_storage): Update. + * expr.h (emit_block_move_hints, clear_storage_hints, + set_storage_via_setmem): Update prototypes. + * i386.c (ix86_expand_set_or_movmem): Add bounds; export. + (ix86_expand_movmem, ix86_expand_setmem): Remove. + (ix86_expand_movmem, ix86_expand_setmem): Remove. + * i386.md (movmem, setmem): Pass parameters. + +2013-11-17 Uros Bizjak + + PR target/59153 + * config/i386/i386.c (ix86_address_subreg_operand): Do not + reject non-integer subregs. + (ix86_decompose_address): Do not reject invalid CONST_INT RTXes. + Move check for invalid x32 constant addresses ... + (ix86_legitimate_address_p): ... here. + +2011-11-17 Bill Schmidt + + * config/rs6000/rs6000.c (rs6000_frame_related): Add split_reg + parameter and use it in REG_FRAME_RELATED_EXPR note. + (emit_frame_save): Call rs6000_frame_related with extra NULL_RTX + parameter. + (rs6000_emit_prologue): Likewise, but for little endian VSX + stores, pass the source register of the store instead. + +2013-11-17 Andrew MacLeod + + * gimple.h: Reorder prototypes to match .c declaration order, and + remove protyotypes for functions not in gimple.c. + (LABEL): Move to tree-into-ssa.c. + * gimple.c: Remove unused prototypes. + (get_base_address): Move to tree.c. + * tree.c (get_base_address): Relocate from gimple.c. + * builtins.h (validate_gimple_arglist): Add prototype. + * trans-mem.h (compute_transaction_bits, is_tm_ending): Add prototype. + * cfgexpand.h: New File. + (gimple_assign_rhs_to_tree, estimated_stack_frame_size): Add protoype. + * tree.h (build_addr): Move to tree-nested.h. + * tree-nested.h: New File. + (build_addr, lower_nested_functions, insert_field_into_struct): Add + prototypes. + * tree-inline.h (estimated_stack_frame_size): Remove prototype. + * ipa-inline-analysis.c: Include cfgexpand.h. + * cgraphunit.c: Include tree-nested.h. + * omp-low.c: Likewise. + * tree-parloops.c: Likewise. + * gimple-low.h: Likewise. + * tree-profile.h: Likewise. + * expr.c: Include cfgexpand.h. + * tree-affine.c: Likewise. + * tree-ssa.c: Likewise. + * tree-ssa-loop-im.c: Include trans-mem.h. + * tree-ssa-tail-merge.c: Likewise. + * value-prof.c: Include builtins.h and tree-nested.h. + * tree-into-ssa.c (LABEL): Define here. + +2013-11-16 Joern Rennecke + + * config/arc/arc.c (arc_predicate_delay_insns): New function. + (pass_data_arc_predicate_delay_insns): New pass_data instance. + (pass_arc_predicate_delay_insns): New subclass of rtl_opt_class. + (make_pass_arc_predicate_delay_insns): New function. + (arc_init): Register pass_arc_predicate_delay_insns if + flag_delayed_branch is active. + +2013-11-16 Joern Rennecke + + * config/arc/constraints.md (Rcq): Simplify register number test. + +2013-11-15 Aldy Hernandez + + * gimple.h (enum gf_mask): Change the ordering of GF_OMP_* bits. + +2013-11-15 Kaz Kojima + + * config/sh/sh.c (barrier_align): Return 0 when barrier_or_label + is null. + +2013-11-15 Aldy Hernandez + + * Makefile.in (C_COMMON_OBJS): Depend on c-cilkplus.o. + * gimple-pretty-print.c (dump_omp_for): Add case for + GF_OMP_FOR_KIND_CILKSIMD. + * gimple.h (enum gf_mask): Restructure entries to add + GF_OMP_FOR_KIND_CILKSIMD. + * gimplify.c (is_gimple_stmt): Add case for CILK_SIMD. + (gimplify_omp_for): Handle CILK_SIMD. + (gimplify_expr): Add ccase for CILK_SIMD. + * omp-low.c (extract_omp_for_data): Handle CILK_SIMD. + (build_outer_var_ref): Same. + (check_omp_nesting_restrictions): Same. + (lower_rec_input_clauses): Same. + (lower_lastprivate_clauses): Same. + (expand_omp_for): Same. + (execute_expand_omp): Check flag_enable_cilkplus. + (execute_lower_omp): Same. + (diagnose_sb_0): Handle CILK_SIMD. + (diagnose_omp_structured_block_errors): Check flag_enable_cilkplus. + (setjmp_or_longjmp_p): New. + (scan_omp_1_stmt): Error on setjmp/longjmp in a simd construct. + * tree-pretty-print.c (dump_generic_node): Add case for CILK_SIMD. + * tree.def: Add tree code for CILK_SIMD. + +2013-11-15 Bill Schmidt + + * config/rs6000/altivec.md (UNSPEC_VPERM_X, UNSPEC_VPERM_UNS_X): + Remove. + (altivec_vperm_): Revert earlier little endian change. + (*altivec_vperm__internal): Remove. + (altivec_vperm__uns): Revert earlier little endian change. + (*altivec_vperm__uns_internal): Remove. + * config/rs6000/vector.md (vec_realign_load_): Revise commentary. + +2013-11-15 Jeff Law + + * basic-block.h (has_abnormal_or_eh_outgoing_edge): Renamed from + has_abnormal_or_outgoing_edge. Check for EH edges as well. + * gimple-ssa-isolate-paths.c + (find_implicit_erroneous_behaviour): Corresponding changes. + Do not check stmt_ends_bb_p or GIMPLE_RETURN anymore. + (find_explicit_erroneous_behaviour): Likewise. + +2013-11-15 Jeff Law + + * ifcvt.c (find_cond_trap): Properly handle case where + trap_bb == else_bb. + +2013-11-15 Andreas Schwab + + * configure: Regenerate. + +2013-11-15 James Greenhalgh + + * config/aarch64/aarch64-simd.md: Remove simd_type from all patterns. + * config/aarch64/aarch64.md: Likewise, correct "type" attribute + where it is incorrect or missing. + +2013-11-15 Richard Sandiford + + * dwarf2out.c (gen_enumeration_type_die): Remove unnecessary + host_integerp test. + * tree-vect-patterns.c (vect_recog_divmod_pattern): Likewise. + Use TREE_INT_CST_LOW rather than tree_low_cst when reading the + constant. + * fold-const.c (fold_binary_loc): Replace a host_integerp/tree_low_cst + pair with a TREE_CODE test and TREE_INT_CST_LOW. + * tree-vect-generic.c (expand_vector_divmod): Likewise. + +2013-11-15 Richard Biener + + PR tree-optimization/50262 + * tree-ssa-alias.h (struct pt_solution): Split + vars_contains_global into vars_contains_nonlocal, + vars_contains_escaped and vars_contains_escaped_heap. + * tree-ssa-structalias.c (label_visit): Expand comment. + (handle_lhs_call): Adjust comment. + (set_uids_in_ptset): Set the new flags appropriately. + (pt_solution_set): Adjust. + (pt_solution_set_var): Likewise. + (pt_solution_ior_into): Likewise. + (pt_solution_includes_global): Likewise. + (pt_solutions_intersect_1): Optimize escaped handling. + (compute_points_to_sets): Remove heap variable globalization. + (ipa_escaped_pt): Adjust initializer. + (pass_data_ipa_pta): Do not run TODO_update_ssa. + * gimple-pretty-print.c (pp_points_to_solution): Print split flags. + * tree-ssa-alias.c (dump_points_to_solution): Likewise. + +2013-11-15 Richard Biener + + * tree-loop-distribution.c (tree_loop_distribution): Make sure + to distribute all stores. + +2013-11-15 Ulrich Weigand + + * doc/invoke.texi (-mabi=elfv1, -mabi=elfv2): Document. + +2013-11-15 Joseph Myers + + * acinclude.m4 (GCC_GLIBC_VERSION_GTE_IFELSE): New configure macro. + * configure.ac: Determine target_header_dir earlier. + (--with-glibc-version): New configure option. + Use GCC_GLIBC_VERSION_GTE_IFELSE in enable_gnu_unique_object, + gcc_cv_libc_provides_ssp and gcc_cv_target_ldbl128 tests. + * configure: Regenerate. + * doc/install.texi (--enable-gnu-unique-object): Don't refer to + native toolchains for default. + (--with-glibc-version): Document. + +2013-11-15 Eric Botcazou + + * fold-const.c (fold_binary_loc) : Reuse local variable. + +2013-11-15 Uros Bizjak + + * lto-streamer-in.c (input function): Call cgraph_create_node if + cgraph_get_node failed. + +2013-11-14 Olivier Hainque + + * cfgexpand.c (defer_stack_allocation): When optimization is enabled, + defer allocation of DECL_IGNORED_P variables at toplevel unless really + small. Factorize size threshold computation from the existing one. + (expand_used_vars): Refine comment. + +2013-11-14 Cong Hou + + * tree-vectorizer.h (struct dr_with_seg_len): Remove the base + address field as it can be obtained from dr. Rename the struct. + * tree-vect-data-refs.c (comp_dr_with_seg_len_pair): Consider + steps of data references during sort. + (vect_prune_runtime_alias_test_list): Adjust with the change to + struct dr_with_seg_len. + * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): + Adjust with the change to struct dr_with_seg_len. + +2013-11-14 Jeff Law + + PR middle-end/59127 + * basic-block.h (has_abnormal_outgoing_edge_p): Moved here from... + * tree-inline.c (has_abnormal_outgoing_edge_p): Remove. + * gimple-ssa-isolate-paths.c: Include tree-cfg.h. + (find_implicit_erroneous_behaviour): If a block has abnormal outgoing + edges, then ignore it. If the statement exhibiting erroneous + behaviour ends basic blocks, with the exception of GIMPLE_RETURNs, + then we can not optimize. + (find_explicit_erroneous_behaviour): Likewise. + +2013-11-14 Andrew MacLeod + + * gimplify-me.h: New file. Add prototypes. + * gimplify.h: Don't include gimple.h. + (struct gimplify_hasher, struct gimplify_ctx, is_gimple_sizepos): + Relocate from gimple.h. + * gimple.h (struct gimplify_hasher, struct gimplify_ctx, + is_gimple_sizepos): Move to gimplify.h. + (gimplify_hasher::hash, gimplify_hasher::equal): Move to gimplify.c. + (enum gsi_iterator_update): Move to gimple-iterator.h. + * gimple-iterator.h (enum gsi_iterator_update): Relocate from gimple.h. + * gimplify-me.c: New File. + (force_gimple_operand_1, force_gimple_operand, + force_gimple_operand_gsi_1, force_gimple_operand_gsi, + gimple_regimplify_operands): Relocate from gimplify.c. + * gimplify.c (force_gimple_operand_1, force_gimple_operand, + force_gimple_operand_gsi_1, force_gimple_operand_gsi, + gimple_regimplify_operands): Move to gimplify-me.c. + (gimplify_hasher::hash, gimplify_hasher::equal): Relocate + from gimple.h. + * Makefile.in (OBJS): Add gimplify-me.o + * asan.c: Include only gimplify.h, gimplify-me.h, and/or gimple.h as + required. + * cfgloopmanip.c: Likewise. + * cgraphunit.c: Likewise. + * cilk-common.c: Likewise. + * fold-const.c: Likewise. + * function.c: Likewise. + * gimple-expr.c: Likewise. + * gimple-fold.c: Likewise. + * gimple-ssa-strength-reduction.c: Likewise. + * gimple.c: Likewise. + * graphite-clast-to-gimple.c: Likewise. + * graphite-sese-to-poly.c: Likewise. + * ipa-prop.c: Likewise. + * ipa-split.c: Likewise. + * ipa.c: Likewise. + * langhooks.c: Likewise. + * omp-low.c: Likewise. + * sese.c: Likewise. + * stor-layout.c: Likewise. + * targhooks.c: Likewise. + * trans-mem.c: Likewise. + * tree-affine.c: Likewise. + * tree-cfg.c: Likewise. + * tree-cfgcleanup.c: Likewise. + * tree-complex.c: Likewise. + * tree-if-conv.c: Likewise. + * tree-inline.c: Likewise. + * tree-loop-distribution.c: Likewise. + * tree-nested.c: Likewise. + * tree-parloops.c: Likewise. + * tree-predcom.c: Likewise. + * tree-profile.c: Likewise. + * tree-scalar-evolution.c: Likewise. + * tree-sra.c: Likewise. + * tree-ssa-address.c: Likewise. + * tree-ssa-ccp.c: Likewise. + * tree-ssa-dce.c: Likewise. + * tree-ssa-forwprop.c: Likewise. + * tree-ssa-ifcombine.c: Likewise. + * tree-ssa-loop-im.c: Likewise. + * tree-ssa-loop-ivopts.c: Likewise. + * tree-ssa-loop-manip.c: Likewise. + * tree-ssa-loop-niter.c: Likewise. + * tree-ssa-loop-prefetch.c: Likewise. + * tree-ssa-loop-unswitch.c: Likewise. + * tree-ssa-math-opts.c: Likewise. + * tree-ssa-phiopt.c: Likewise. + * tree-ssa-phiprop.c: Likewise. + * tree-ssa-pre.c: Likewise. + * tree-ssa-propagate.c: Likewise. + * tree-ssa-reassoc.c: Likewise. + * tree-ssa-sccvn.c: Likewise. + * tree-ssa-strlen.c: Likewise. + * tree-ssa.c: Likewise. + * tree-switch-conversion.c: Likewise. + * tree-tailcall.c: Likewise. + * tree-vect-data-refs.c: Likewise. + * tree-vect-generic.c: Likewise. + * tree-vect-loop-manip.c: Likewise. + * tree-vect-loop.c: Likewise. + * tree-vect-patterns.c: Likewise. + * tree-vect-stmts.c: Likewise. + * tree.c: Likewise. + * tsan.c: Likewise. + * value-prof.c: Likewise. + * config/aarch64/aarch64.c: Likewise. + * config/alpha/alpha.c: Likewise. + * config/darwin.c: Likewise. + * config/i386/i386.c: Likewise. + * config/ia64/ia64.c: Likewise. + * config/mep/mep.c: Likewise. + * config/mips/mips.c: Likewise. + * config/rs6000/rs6000.c: Likewise. + * config/s390/s390.c: Likewise. + * config/sh/sh.c: Likewise. + * config/sparc/sparc.c: Likewise. + * config/spu/spu.c: Likewise. + * config/stormy16/stormy16.c: Likewise. + * config/tilegx/tilegx.c: Likewise. + * config/tilepro/tilepro.c: Likewise. + * config/xtensa/xtensa.c: Likewise. + +2013-11-14 Diego Novillo + + * Makefile.in (PLUGIN_HEADERS): Add stringpool.h. + +2013-11-14 Diego Novillo + + * tree.h: Include fold-const.h. + (aggregate_value_p): Moved to function.h. + (alloca_call_p): Moved to calls.h. + (allocate_struct_function): Moved to function.h. + (apply_tm_attr): Moved to attribs.h. + (array_at_struct_end_p): Moved to expr.h. + (array_ref_element_size): Moved to tree-dfa.h. + (array_ref_low_bound): Moved to tree-dfa.h. + (array_ref_up_bound): Moved to tree.h. + (assemble_alias): Moved to cgraph.h. + (bit_from_pos): Moved to stor-layout.h. + (build_addr): Moved to tree-nested.h. + (build_duplicate_type): Moved to tree-inline.h. + (build_fold_addr_expr): Moved to fold-const.h. + (build_fold_addr_expr_with_type): Moved to fold-const.h. + (build_fold_addr_expr_with_type_loc): Moved to fold-const.h. + (build_fold_indirect_ref): Moved to fold-const.h. + (build_fold_indirect_ref_loc): Moved to fold-const.h. + (build_personality_function): Moved to tree.h. + (build_range_check): Moved to fold-const.h. + (build_simple_mem_ref): Moved to fold-const.h. + (build_simple_mem_ref_loc): Moved to fold-const.h. + (build_tm_abort_call): Moved to trans-mem.h. + (byte_from_pos): Moved to stor-layout.h. + (call_expr_flags): Moved to calls.h. + (can_move_by_pieces): Moved to expr.h. + (categorize_ctor_elements): Moved to expr.h. + (change_decl_assembler_name): Moved to gcc-symtab.h. + (combine_comparisons): Moved to fold-const.h. + (complete_ctor_at_level_p): Moved to tree.h. + (component_ref_field_offset): Moved to tree-dfa.h. + (compute_builtin_object_size): Moved to tree-object-size.h. + (compute_record_mode): Moved to stor-layout.h. + (constant_boolean_node): Moved to fold-const.h. + (constructor_static_from_elts_p): Moved to varasm.h. + (cxx11_attribute_p): Moved to attribs.h. + (debug_body): Moved to print-tree.h. + (debug_find_tree): Moved to tree-inline.h. + (debug_fold_checksum): Moved to fold-const.h. + (debug_head): Moved to print-tree.h. + (debug_head): Moved to print-tree.h. + (debug_raw): Moved to print-tree.h. + (debug_tree): Moved to print-tree.h. + (debug_vec_tree): Moved to print-tree.h. + (debug_verbose): Moved to print-tree.h. + (debug_verbose): Moved to print-tree.h. + (decl_attributes): Moved to attribs.h. + (decl_binds_to_current_def_p): Moved to varasm.h. + (decl_default_tls_model): Moved to varasm.h. + (decl_replaceable_p): Moved to varasm.h. + (div_if_zero_remainder): Moved to fold-const.h. + (double_int mem_ref_offset): Moved to fold-const.h. + (dump_addr): Moved to print-tree.h. + (element_precision): Moved to machmode.h. + (expand_dummy_function_end): Moved to function.h. + (expand_function_end): Moved to function.h. + (expand_function_start): Moved to function.h. + (expand_label): Moved to stmt.h. + (expr_first): Moved to tree-iterator.h. + (expr_last): Moved to tree-iterator.h. + (finalize_size_functions): Moved to stor-layout.h. + (finish_builtin_struct): Moved to stor-layout.h. + (finish_record_layout): Moved to stor-layout.h. + (fixup_signed_type): Moved to stor-layout.h. + (fixup_unsigned_type): Moved to stor-layout.h. + (flags_from_decl_or_type): Moved to calls.h. + (fold): Moved to fold-const.h. + (fold_abs_const): Moved to fold-const.h. + (fold_binary): Moved to fold-const.h. + (fold_binary_loc): Moved to fold-const.h. + (fold_binary_to_constant): Moved to fold-const.h. + (fold_build1): Moved to fold-const.h. + (fold_build1_initializer_loc): Moved to fold-const.h. + (fold_build1_loc): Moved to fold-const.h. + (fold_build1_stat_loc): Moved to fold-const.h. + (fold_build2): Moved to fold-const.h. + (fold_build2_initializer_loc): Moved to fold-const.h. + (fold_build2_loc): Moved to fold-const.h. + (fold_build2_stat_loc): Moved to fold-const.h. + (fold_build3): Moved to fold-const.h. + (fold_build3_loc): Moved to fold-const.h. + (fold_build3_stat_loc): Moved to fold-const.h. + (fold_build_call_array): Moved to fold-const.h. + (fold_build_call_array_initializer): Moved to fold-const.h. + (fold_build_call_array_initializer_loc): Moved to fold-const.h. + (fold_build_call_array_loc): Moved to fold-const.h. + (fold_build_cleanup_point_expr): Moved to fold-const.h. + (fold_convert): Moved to fold-const.h. + (fold_convert_loc): Moved to fold-const.h. + (fold_convertible_p): Moved to fold-const.h. + (fold_defer_overflow_warnings): Moved to fold-const.h. + (fold_deferring_overflow_warnings_p): Moved to fold-const.h. + (fold_fma): Moved to fold-const.h. + (fold_ignored_result): Moved to fold-const.h. + (fold_indirect_ref): Moved to fold-const.h. + (fold_indirect_ref_1): Moved to fold-const.h. + (fold_indirect_ref_loc): Moved to fold-const.h. + (fold_read_from_constant_string): Moved to fold-const.h. + (fold_real_zero_addition_p): Moved to fold-const.h. + (fold_single_bit_test): Moved to fold-const.h. + (fold_strip_sign_ops): Moved to fold-const.h. + (fold_ternary): Moved to fold-const.h. + (fold_ternary_loc): Moved to fold-const.h. + (fold_unary): Moved to tree-data-ref.h. + (fold_unary_ignore_overflow): Moved to fold-const.h. + (fold_unary_ignore_overflow_loc): Moved to fold-const.h. + (fold_unary_loc): Moved to fold-const.h. + (fold_unary_to_constant): Moved to fold-const.h. + (fold_undefer_and_ignore_overflow_warnings): Moved to fold-const.h. + (fold_undefer_overflow_warnings): Moved to fold-const.h. + (folding_initializer): Moved to fold-const.h. + (free_temp_slots): Moved to function.h. + (generate_setjmp_warnings): Moved to function.h. + (get_attribute_name): Moved to attribs.h. + (get_identifier): Moved to stringpool.h. + (get_identifier_with_length): Moved to stringpool.h. + (get_inner_reference): Moved to tree.h. + (gimple_alloca_call_p): Moved to calls.h. + (gimplify_parameters): Moved to function.h. + (highest_pow2_factor): Moved to expr.h. + (indent_to): Moved to print-tree.h. + (init_attributes): Moved to attribs.h. + (init_dummy_function_start): Moved to function.h. + (init_function_start): Moved to function.h. + (init_inline_once): Moved to tree-inline.h. + (init_object_sizes): Moved to tree-object-size.h. + (init_temp_slots): Moved to function.h. + (init_tree_optimization_optabs): Moved to optabs.h. + (initialize_sizetypes): Moved to stor-layout.h. + (initializer_constant_valid_for_bitfield_p): Moved to varasm.h. + (initializer_constant_valid_p): Moved to varasm.h. + (int_const_binop): Moved to fold-const.h. + (internal_reference_types): Moved to stor-layout.h. + (invert_tree_comparison): Moved to fold-const.h. + (invert_truthvalue): Moved to fold-const.h. + (invert_truthvalue_loc): Moved to fold-const.h. + (is_tm_ending_fndecl): Moved to trans-mem.h. + (is_tm_may_cancel_outer): Moved to trans-mem.h. + (is_tm_pure): Moved to trans-mem.h. + (is_tm_safe): Moved to trans-mem.h. + (layout_decl): Moved to stor-layout.h. + (layout_type): Moved to stor-layout.h. + (lookup_attribute_spec): Moved to attribs.h. + (make_accum_type): Moved to stor-layout.h. + (make_decl_one_only): Moved to varasm.h. + (make_decl_rtl): Moved to tree.h. + (make_decl_rtl_for_debug): Moved to varasm.h. + (make_fract_type): Moved to stor-layout.h. + (make_or_reuse_sat_signed_accum_type): Moved to stor-layout.h. + (make_or_reuse_sat_signed_fract_type): Moved to stor-layout.h. + (make_or_reuse_sat_unsigned_accum_type): Moved to stor-layout.h. + (make_or_reuse_sat_unsigned_fract_type): Moved to stor-layout.h. + (make_or_reuse_signed_accum_type): Moved to stor-layout.h. + (make_or_reuse_signed_fract_type): Moved to stor-layout.h. + (make_or_reuse_unsigned_accum_type): Moved to stor-layout.h. + (make_or_reuse_unsigned_fract_type): Moved to stor-layout.h. + (make_range): Moved to fold-const.h. + (make_range_step): Moved to fold-const.h. + (make_sat_signed_accum_type): Moved to stor-layout.h. + (make_sat_signed_fract_type): Moved to stor-layout.h. + (make_sat_unsigned_accum_type): Moved to stor-layout.h. + (make_sat_unsigned_fract_type): Moved to stor-layout.h. + (make_signed_accum_type): Moved to stor-layout.h. + (make_signed_fract_type): Moved to stor-layout.h. + (make_signed_type): Moved to stor-layout.h. + (make_unsigned_accum_type): Moved to stor-layout.h. + (make_unsigned_fract_type): Moved to stor-layout.h. + (make_unsigned_type): Moved to stor-layout.h. + (mark_decl_referenced): Moved to varasm.h. + (mark_referenced): Moved to varasm.h. + (may_negate_without_overflow_p): Moved to fold-const.h. + (maybe_get_identifier): Moved to stringpool.h. + (merge_ranges): Moved to fold-const.h. + (merge_weak): Moved to varasm.h. + (mode_for_size_tree): Moved to stor-layout.h. + (multiple_of_p): Moved to fold-const.h. + (must_pass_in_stack_var_size): Moved to calls.h. + (must_pass_in_stack_var_size_or_pad): Moved to calls.h. + (native_encode_expr): Moved to fold-const.h. + (native_interpret_expr): Moved to fold-const.h. + (non_lvalue): Moved to fold-const.h. + (non_lvalue_loc): Moved to fold-const.h. + (normalize_offset): Moved to stor-layout.h. + (normalize_rli): Moved to stor-layout.h. + (notice_global_symbol): Moved to varasm.h. + (omit_one_operand): Moved to fold-const.h. + (omit_one_operand_loc): Moved to fold-const.h. + (omit_two_operands): Moved to fold-const.h. + (omit_two_operands_loc): Moved to fold-const.h. + (operand_equal_p): Moved to tree-data-ref.h. + (parse_input_constraint): Moved to stmt.h. + (parse_output_constraint): Moved to stmt.h. + (place_field): Moved to stor-layout.h. + (pop_function_context): Moved to function.h. + (pop_temp_slots): Moved to function.h. + (pos_from_bit): Moved to stor-layout.h. + (preserve_temp_slots): Moved to function.h. + (print_node): Moved to print-tree.h. + (print_node_brief): Moved to print-tree.h. + (print_rtl): Moved to rtl.h. + (process_pending_assemble_externals): Moved to varasm.h. + (ptr_difference_const): Moved to fold-const.h. + (push_function_context): Moved to function.h. + (push_struct_function): Moved to function.h. + (push_temp_slots): Moved to function.h. + (record_tm_replacement): Moved to trans-mem.h. + (relayout_decl): Moved to stor-layout.h. + (resolve_asm_operand_names): Moved to stmt.h. + (resolve_unique_section): Moved to varasm.h. + (rli_size_so_far): Moved to stor-layout.h. + (rli_size_unit_so_far): Moved to stor-layout.h. + (round_down): Moved to fold-const.h. + (round_down_loc): Moved to fold-const.h. + (round_up): Moved to fold-const.h. + (round_up_loc): Moved to fold-const.h. + (set_decl_incoming_rtl): Moved to emit-rtl.h. + (set_decl_rtl): Moved to tree.h. + (set_min_and_max_values_for_integral_type): Moved to stor-layout.h. + (set_user_assembler_name): Moved to varasm.h. + (setjmp_call_p): Moved to calls.h. + (size_binop): Moved to fold-const.h. + (size_binop_loc): Moved to fold-const.h. + (size_diffop): Moved to fold-const.h. + (size_diffop_loc): Moved to fold-const.h. + (size_int_kind): Moved to fold-const.h. + (stack_protect_epilogue): Moved to function.h. + (start_record_layout): Moved to stor-layout.h. + (supports_one_only): Moved to varasm.h. + (swap_tree_comparison): Moved to fold-const.h. + (tm_malloc_replacement): Moved to trans-mem.h. + (tree build_fold_addr_expr_loc): Moved to fold-const.h. + (tree build_invariant_address): Moved to fold-const.h. + (tree_binary_nonnegative_warnv_p): Moved to fold-const.h. + (tree_binary_nonzero_warnv_p): Moved to fold-const.h. + (tree_call_nonnegative_warnv_p): Moved to fold-const.h. + (tree_expr_nonnegative_p): Moved to fold-const.h. + (tree_expr_nonnegative_warnv_p): Moved to fold-const.h. + (tree_output_constant_def): Moved to varasm.h. + (tree_overlaps_hard_reg_set): Moved to stmt.h. + (tree_single_nonnegative_warnv_p): Moved to fold-const.h. + (tree_single_nonzero_warnv_p): Moved to fold-const.h. + (tree_swap_operands_p): Moved to fold-const.h. + (tree_unary_nonnegative_warnv_p): Moved to fold-const.h. + (tree_unary_nonzero_warnv_p): Moved to fold-const.h. + (update_alignment_for_field): Moved to stor-layout.h. + (use_register_for_decl): Moved to function.h. + (variable_size): Moved to rtl.h. + (vector_type_mode): Moved to stor-layout.h. + * cgraph.h: Corresponding changes. + * emit-rtl.h: Corresponding changes. + * expr.h: Corresponding changes. + * function.h: Corresponding changes. + * optabs.h: Corresponding changes. + * trans-mem.h: Corresponding changes. + Protect against multiple inclusion. + * tree-inline.h: Corresponding changes. + * tree-iterator.h: Corresponding changes. + * tree-dfa.h: Include expr.h. + * tree-ssanames.h: Include stringpool.h. + * attribs.h: New file. + * calls.h: New file. + * fold-const.h: New file. + * gcc-symtab.h: New file. + * print-rtl.h: New file. + * print-tree.h: New file. + * stmt.h: New file. + * stor-layout.h: New file. + * strinpool.h: New file. + * tree-nested.h: New file + * tree-object-size.h: New file. + * varasm.h: New file. + +2013-11-14 Diego Novillo + + * alias.c: Include varasm.h. + Include expr.h. + * asan.c: Include calls.h. + Include stor-layout.h. + Include varasm.h. + * attribs.c: Include stringpool.h. + Include attribs.h. + Include stor-layout.h. + * builtins.c: Include stringpool.h. + Include stor-layout.h. + Include calls.h. + Include varasm.h. + Include tree-object-size.h. + * calls.c: Include stor-layout.h. + Include varasm.h. + Include stringpool.h. + Include attribs.h. + * cfgexpand.c: Include stringpool.h. + Include varasm.h. + Include stor-layout.h. + Include stmt.h. + Include print-tree.h. + * cgraph.c: Include varasm.h. + Include calls.h. + Include print-tree.h. + * cgraphclones.c: Include stringpool.h. + Include function.h. + Include emit-rtl.h. + Move inclusion of rtl.h earlier in the file. + * cgraphunit.c: Include varasm.h. + Include stor-layout.h. + Include stringpool.h. + * cilk-common.c: Include stringpool.h. + Include stor-layout.h. + * combine.c: Include stor-layout.h. + * config/aarch64/aarch64-builtins.c: Include stor-layout.h. + Include stringpool.h. + Include calls.h. + * config/aarch64/aarch64.c: Include stringpool.h. + Include stor-layout.h. + Include calls.h. + Include varasm.h. + * config/alpha/alpha.c: Include stor-layout.h. + Include calls.h. + Include varasm.h. + * config/arc/arc.c: Include varasm.h. + Include stor-layout.h. + Include stringpool.h. + Include calls.h. + * config/arm/arm.c: Include stringpool.h. + Include stor-layout.h. + Include calls.h. + Include varasm.h. + * config/avr/avr-c.c: Include stor-layout.h. + * config/avr/avr-log.c: Include print-tree.h. + * config/avr/avr.c: Include print-tree.h. + Include calls.h. + Include stor-layout.h. + Include stringpool.h. + * config/bfin/bfin.c: Include varasm.h. + Include calls.h. + * config/c6x/c6x.c: Include stor-layout.h. + Include varasm.h. + Include calls.h. + Include stringpool.h. + * config/cr16/cr16.c: Include stor-layout.h. + Include calls.h. + * config/cris/cris.c: Include varasm.h. + Include stor-layout.h. + Include calls.h. + Include stmt.h. + * config/darwin.c: Include stringpool.h. + Include varasm.h. + Include stor-layout.h. + * config/epiphany/epiphany.c: Include stor-layout.h. + Include varasm.h. + Include calls.h. + Include stringpool.h. + * config/fr30/fr30.c: Include stor-layout.h. + Include varasm.h. + * config/frv/frv.c: Include varasm.h. + Include stor-layout.h. + Include stringpool.h. + * config/h8300/h8300.c: Include stor-layout.h. + Include varasm.h. + Include calls.h. + Include stringpool.h. + * config/i386/i386.c: Include stringpool.h. + Include attribs.h. + Include calls.h. + Include stor-layout.h. + Include varasm.h. + * config/i386/winnt-cxx.c: Include stringpool.h. + Include attribs.h. + * config/i386/winnt.c: Include stringpool.h. + Include varasm.h. + * config/ia64/ia64-c.c: Include stringpool.h. + * config/ia64/ia64.c: Include stringpool.h. + Include stor-layout.h. + Include calls.h. + Include varasm.h. + * config/iq2000/iq2000.c: Include stor-layout.h. + Include calls.h. + Include varasm.h. + * config/lm32/lm32.c: Include calls.h. + * config/m32c/m32c.c: Include stor-layout.h. + Include varasm.h. + Include calls.h. + * config/m32r/m32r.c: Include stor-layout.h. + Include varasm.h. + Include stringpool.h. + Include calls.h. + * config/m68k/m68k.c: Include calls.h. + Include stor-layout.h. + Include varasm.h. + * config/mcore/mcore.c: Include stor-layout.h. + Include varasm.h. + Include stringpool.h. + Include calls.h. + * config/mep/mep.c: Include varasm.h. + Include calls.h. + Include stringpool.h. + Include stor-layout.h. + * config/microblaze/microblaze.c: Include varasm.h. + Include stor-layout.h. + Include calls.h. + * config/mips/mips.c: Include varasm.h. + Include stringpool.h. + Include stor-layout.h. + Include calls.h. + * config/mmix/mmix.c: Include varasm.h. + Include stor-layout.h. + Include calls.h. + * config/mn10300/mn10300.c: Include stor-layout.h. + Include varasm.h. + Include calls.h. + * config/moxie/moxie.c: Include stor-layout.h. + Include varasm.h. + Include calls.h. + * config/msp430/msp430.c: Include stor-layout.h. + Include calls.h. + * config/nds32/nds32.c: Include stor-layout.h. + Include varasm.h. + Include calls.h. + * config/pa/pa.c: Include stor-layout.h. + Include stringpool.h. + Include varasm.h. + Include calls.h. + * config/pdp11/pdp11.c: Include stor-layout.h. + Include varasm.h. + Include calls.h. + * config/picochip/picochip.c: Include calls.h. + Include stor-layout.h. + Include stringpool.h. + Include varasm.h. + * config/rl78/rl78.c: Include varasm.h. + Include stor-layout.h. + Include calls.h. + * config/rs6000/rs6000-c.c: Include stor-layout.h. + Include stringpool.h. + * config/rs6000/rs6000.c: Include stringpool.h. + Include stor-layout.h. + Include calls.h. + Include print-tree.h. + Include varasm.h. + * config/rx/rx.c: Include varasm.h. + Include stor-layout.h. + Include calls.h. + * config/s390/s390.c: Include print-tree.h. + Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + Include calls.h. + * config/score/score.c: Include stringpool.h. + Include calls.h. + Include varasm.h. + Include stor-layout.h. + * config/sh/sh-c.c: Include stringpool.h. + Include attribs.h.h. + * config/sh/sh.c: Include stringpool.h. + Include stor-layout.h. + Include calls.h. + Include varasm.h. + * config/sol2-c.c: Include stringpool.h. + Include attribs.h. + * config/sol2-cxx.c: Include stringpool.h. + * config/sol2.c: Include stringpool.h. + Include varasm.h. + * config/sparc/sparc.c: Include stringpool.h. + Include stor-layout.h. + Include calls.h. + Include varasm.h. + * config/spu/spu-c.c: Include stringpool.h. + * config/spu/spu.c: Include stringpool.h. + Include stor-layout.h. + Include calls.h. + Include varasm.h. + * config/stormy16/stormy16.c: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + Include calls.h. + * config/tilegx/tilegx.c: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + Include calls.h. + * config/tilepro/tilepro.c: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + Include calls.h. + * config/v850/v850-c.c: Include stringpool.h. + Include attribs.h. + * config/v850/v850.c: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + Include calls.h. + * config/vax/vax.c: Include calls.h. + Include varasm.h. + * config/vms/vms.c: Include stringpool.h. + * config/vxworks.c: Include stringpool.h. + * config/xtensa/xtensa.c: Include stringpool.h. + Include stor-layout.h. + Include calls.h. + Include varasm.h. + * convert.c: Include stor-layout.h. + * coverage.c: Include stringpool.h. + Include stor-layout.h. + * dbxout.c: Include varasm.h. + Include stor-layout.h. + * dojump.c: Include stor-layout.h. + * dse.c: Include stor-layout.h. + * dwarf2asm.c: Include stringpool.h. + Include varasm.h. + * dwarf2cfi.c: Include stor-layout.h. + * dwarf2out.c: Include rtl.h. + Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + Include function.h. + Include emit-rtl.h. + Move inclusion of rtl.h earlier in the file. + * emit-rtl.c: Include varasm.h. + * except.c: Include stringpool.h. + Include stor-layout.h. + * explow.c: Include stor-layout.h. + * expmed.c: Include stor-layout.h. + * expr.c: Include stringpool.h. + Include stor-layout.h. + Include attribs.h. + Include varasm.h. + * final.c: Include varasm.h. + * fold-const.c: Include stor-layout.h. + Include calls.h. + Include tree-iterator.h. + * function.c: Include stor-layout.h. + Include varasm.h. + Include stringpool.h. + * genattrtab.c (write_header): Emit includes for varasm.h, + stor-layout.h and calls.h. + * genautomata.c (main): Likewise. + * genemit.c: Likewise. + * genopinit.c: Likewise. + * genoutput.c (output_prologue): Likewise. + * genpeep.c: Likewise. + * genpreds.c (write_insn_preds_c): Likewise. + * gengtype.c (open_base_files): Add stringpool.h. + * gimple-expr.c: Include stringpool.h. + Include stor-layout.h. + * gimple-fold.c: Include stringpool.h. + Include expr.h. + Include stmt.h. + Include stor-layout.h. + * gimple-low.c: Include tree-nested.h. + Include calls.h. + * gimple-pretty-print.c: Include stringpool.h. + * gimple-ssa-strength-reduction.c: Include stor-layout.h. + Include expr.h. + * gimple-walk.c: Include stmt.h. + * gimple.c: Include calls.h. + Include stmt.h. + Include stor-layout.h. + * gimplify.c: Include stringpool.h. + Include calls.h. + Include varasm.h. + Include stor-layout.h. + Include stmt.h. + Include print-tree.h. + Include expr.h. + * gimplify-me.c: Include stmt.h + Include stor-layout.h + * internal-fn.c: Include stor-layout.h. + * ipa-devirt.c: Include print-tree.h. + Include calls.h. + * ipa-inline-analysis.c: Include stor-layout.h. + Include stringpool.h. + Include print-tree.h. + * ipa-inline.c: Include trans-mem.h. + Include calls.h. + * ipa-prop.c: Include expr.h. + Include stor-layout.h. + Include print-tree.h. + * ipa-pure-const.c: Include print-tree.h. + Include calls.h. + * ipa-reference.c: Include calls.h. + * ipa-split.c: Include stringpool.h. + Include expr.h. + Include calls.h. + * ipa.c: Include calls.h. + Include stringpool.h. + * langhooks.c: Include stringpool.h. + Include attribs.h. + * lto-cgraph.c: Include stringpool.h. + * lto-streamer-in.c: Include stringpool.h. + * lto-streamer-out.c: Include stor-layout.h. + Include stringpool.h. + * omp-low.c: Include stringpool.h. + Include stor-layout.h. + Include expr.h. + * optabs.c: Include stor-layout.h. + Include stringpool.h. + Include varasm.h. + * passes.c: Include varasm.h. + * predict.c: Include calls.h. + * print-rtl.c: Include print-tree.h. + * print-tree.c: Include varasm.h. + Include print-rtl.h. + Include stor-layout.h. + * realmpfr.c: Include stor-layout.h. + * reg-stack.c: Include varasm.h. + * sdbout.c: Include varasm.h. + Include stor-layout.h. + * simplify-rtx.c: Include varasm.h. + * stmt.c: Include varasm.h. + Include stor-layout.h. + * stor-layout.c: Include stor-layout.h. + Include stringpool.h. + Include varasm.h. + Include print-tree.h. + * symtab.c: Include rtl.h. + Include print-tree.h. + Include varasm.h. + Include function.h. + Include emit-rtl.h. + * targhooks.c: Include stor-layout.h. + Include varasm.h. + * toplev.c: Include varasm.h. + Include tree-inline.h. + * trans-mem.c: Include calls.h. + Include function.h. + Include rtl.h. + Include emit-rtl.h. + * tree-affine.c: Include expr.h. + * tree-browser.c: Include print-tree.h. + * tree-call-cdce.c: Include stor-layout.h. + * tree-cfg.c: Include trans-mem.h. + Include stor-layout.h. + Include print-tree.h. + * tree-complex.c: Include stor-layout.h. + * tree-data-ref.c: Include expr.h. + * tree-dfa.c: Include stor-layout.h. + * tree-eh.c: Include expr.h. + Include calls.h. + * tree-emutls.c: Include stor-layout.h. + Include varasm.h. + * tree-if-conv.c: Include stor-layout.h. + * tree-inline.c: Include stor-layout.h. + Include calls.h. + * tree-loop-distribution.c: Include stor-layout.h. + * tree-nested.c: Include stringpool.h. + Include stor-layout.h. + * tree-object-size.c: Include tree-object-size.h. + * tree-outof-ssa.c: Include stor-layout.h. + * tree-parloops.c: Include stor-layout.h. + Include tree-nested.h. + * tree-pretty-print.c: Include stor-layout.h. + Include expr.h. + * tree-profile.c: Include varasm.h. + Include tree-nested.h. + * tree-scalar-evolution.c: Include expr.h. + * tree-sra.c: Include stor-layout.h. + * tree-ssa-address.c: Include stor-layout.h. + * tree-ssa-ccp.c: Include stor-layout.h. + * tree-ssa-dce.c: Include calls.h. + * tree-ssa-dom.c: Include stor-layout.h. + * tree-ssa-forwprop.c: Include stor-layout.h. + * tree-ssa-ifcombine.c: Include stor-layout.h. + * tree-ssa-loop-ivopts.c: Include stor-layout.h. + * tree-ssa-loop-niter.c: Include calls.h. + Include expr.h. + * tree-ssa-loop-prefetch.c: Include stor-layout.h. + * tree-ssa-math-opts.c: Include stor-layout.h. + * tree-ssa-operands.c: Include stmt.h. + Include print-tree.h. + * tree-ssa-phiopt.c: Include stor-layout.h. + * tree-ssa-reassoc.c: Include stor-layout.h. + * tree-ssa-sccvn.c: Include stor-layout.h. + * tree-ssa-sink.c: Include stor-layout.h. + * tree-ssa-strlen.c: Include stor-layout.h. + * tree-ssa-structalias.c: Include stor-layout.h. + Include stmt.h. + * tree-ssa-tail-merge.c: Include stor-layout.h. + Include trans-mem.h. + * tree-ssa-uncprop.c: Include stor-layout.h. + * tree-ssa.c: Include stor-layout.h. + * tree-ssanames.c: Include stor-layout.h. + * tree-streamer-in.c: Include stringpool.h. + * tree-streamer-out.c: Include stor-layout.h. + * tree-switch-conversion.c: Include varasm.h. + Include stor-layout.h. + * tree-tailcall.c: Include stor-layout.h. + * tree-vect-data-refs.c: Include stor-layout.h. + * tree-vect-generic.c: Include stor-layout.h. + * tree-vect-loop.c: Include stor-layout.h. + * tree-vect-patterns.c: Include stor-layout.h. + * tree-vect-slp.c: Include stor-layout.h. + * tree-vect-stmts.c: Include stor-layout.h. + * tree-vectorizer.c: Include stor-layout.h. + * tree-vrp.c: Include stor-layout.h. + Include calls.h. + * tree.c: Include stor-layout.h. + Include calls.h. + Include attribs.h. + Include varasm.h. + * tsan.c: Include expr.h. + * ubsan.c: Include stor-layout.h. + Include stringpool.h. + * value-prof.c: Include tree-nested.h. + Include calls.h. + * var-tracking.c: Include varasm.h. + Include stor-layout.h. + * varasm.c: Include stor-layout.h. + Include stringpool.h. + Include gcc-symtab.h. + Include varasm.h. + * varpool.c: Include varasm.h. + * vmsdbgout.c: Include varasm.h. + * xcoffout.c: Include varasm.h. + +2013-11-14 Joern Rennecke + + * config/arc/arc.md (doloop_begin_i): Remove extra alignment; + use (.&-4) idiom. + +2013-11-14 Ulrich Weigand + + * config/rs6000/sysv4le.h (LINUX64_DEFAULT_ABI_ELFv2): Define. + +2013-11-14 Ulrich Weigand + Alan Modra + + * config/rs6000/rs6000.h (RS6000_SAVE_AREA): Handle ABI_ELFv2. + (RS6000_SAVE_TOC): Remove. + (RS6000_TOC_SAVE_SLOT): New macro. + * config/rs6000/rs6000.c (rs6000_parm_offset): New function. + (rs6000_parm_start): Use it. + (rs6000_function_arg_advance_1): Likewise. + (rs6000_emit_prologue): Use RS6000_TOC_SAVE_SLOT. + (rs6000_emit_epilogue): Likewise. + (rs6000_call_aix): Likewise. + (rs6000_output_function_prologue): Do not save/restore r11 + around calling _mcount for ABI_ELFv2. + +2013-11-14 Ulrich Weigand + Alan Modra + + * config/rs6000/rs6000-protos.h (rs6000_reg_parm_stack_space): + Add prototype. + * config/rs6000/rs6000.h (RS6000_REG_SAVE): Remove. + (REG_PARM_STACK_SPACE): Call rs6000_reg_parm_stack_space. + * config/rs6000/rs6000.c (rs6000_parm_needs_stack): New function. + (rs6000_function_parms_need_stack): Likewise. + (rs6000_reg_parm_stack_space): Likewise. + (rs6000_function_arg): Do not replace BLKmode by Pmode when + returning a register argument. + +2013-11-14 Ulrich Weigand + Michael Gschwind + + * config/rs6000/rs6000.h (FP_ARG_MAX_RETURN): New macro. + (ALTIVEC_ARG_MAX_RETURN): Likewise. + (FUNCTION_VALUE_REGNO_P): Use them. + * config/rs6000/rs6000.c (TARGET_RETURN_IN_MSB): Define. + (rs6000_return_in_msb): New function. + (rs6000_return_in_memory): Handle ELFv2 homogeneous aggregates. + Handle aggregates of up to 16 bytes for ELFv2. + (rs6000_function_value): Handle ELFv2 homogeneous aggregates. + +2013-11-14 Ulrich Weigand + Michael Gschwind + + * config/rs6000/rs6000.h (AGGR_ARG_NUM_REG): Define. + * config/rs6000/rs6000.c (rs6000_aggregate_candidate): New function. + (rs6000_discover_homogeneous_aggregate): Likewise. + (rs6000_function_arg_boundary): Handle homogeneous aggregates. + (rs6000_function_arg_advance_1): Likewise. + (rs6000_function_arg): Likewise. + (rs6000_arg_partial_bytes): Likewise. + (rs6000_psave_function_arg): Handle BLKmode arguments. + +2013-11-14 Ulrich Weigand + Michael Gschwind + + * config/rs6000/rs6000.h (AGGR_ARG_NUM_REG): Define. + * config/rs6000/rs6000.c (rs6000_aggregate_candidate): New function. + (rs6000_discover_homogeneous_aggregate): Likewise. + (rs6000_function_arg_boundary): Handle homogeneous aggregates. + (rs6000_function_arg_advance_1): Likewise. + (rs6000_function_arg): Likewise. + (rs6000_arg_partial_bytes): Likewise. + (rs6000_psave_function_arg): Handle BLKmode arguments. + +2013-11-14 Ulrich Weigand + + * config/rs6000/rs6000.c (machine_function): New member + r2_setup_needed. + (rs6000_emit_prologue): Set r2_setup_needed if necessary. + (rs6000_output_mi_thunk): Set r2_setup_needed. + (rs6000_output_function_prologue): Output global entry point + prologue and local entry point marker if needed for ABI_ELFv2. + Output -mprofile-kernel code here. + (output_function_profiler): Do not output -mprofile-kernel + code here; moved to rs6000_output_function_prologue. + (rs6000_file_start): Output ".abiversion 2" for ABI_ELFv2. + + (rs6000_emit_move): Do not handle dot symbols for ABI_ELFv2. + (rs6000_output_function_entry): Likewise. + (rs6000_assemble_integer): Likewise. + (rs6000_elf_encode_section_info): Likewise. + (rs6000_elf_declare_function_name): Do not create dot symbols + or .opd section for ABI_ELFv2. + + (rs6000_trampoline_size): Update for ABI_ELFv2 trampolines. + (rs6000_trampoline_init): Likewise. + (rs6000_elf_file_end): Call file_end_indicate_exec_stack for ABI_ELFv2. + + (rs6000_call_aix): Handle ELFv2 indirect calls. Do not check + for function descriptors in ABI_ELFv2. + + * config/rs6000/rs6000.md ("*call_indirect_aix"): Support + on ABI_AIX only, not ABI_ELFv2. + ("*call_value_indirect_aix"): Likewise. + ("*call_indirect_elfv2"): New pattern. + ("*call_value_indirect_elfv2"): Likewise. + + * config/rs6000/predicates.md ("symbol_ref_operand"): Do not + check for function descriptors in ABI_ELFv2. + ("current_file_function_operand"): Likewise. + + * config/rs6000/ppc-asm.h [__powerpc64__ && _CALL_ELF == 2]: + (toc): Undefine. + (FUNC_NAME): Define ELFv2 variant. + (JUMP_TARGET): Likewise. + (FUNC_START): Likewise. + (HIDDEN_FUNC): Likewise. + (FUNC_END): Likeiwse. + +2013-11-14 Ulrich Weigand + + * config.gcc [powerpc*-*-* | rs6000-*-*]: Support --with-abi=elfv1 + and --with-abi=elfv2. + * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Add "abi". + * config/rs6000/rs6000.opt (mabi=elfv1): New option. + (mabi=elfv2): Likewise. + * config/rs6000/rs6000-opts.h (enum rs6000_abi): Add ABI_ELFv2. + * config/rs6000/linux64.h (DEFAULT_ABI): Do not hard-code to AIX_ABI + if !RS6000_BI_ARCH. + (ELFv2_ABI_CHECK): New macro. + (SUBSUBTARGET_OVERRIDE_OPTIONS): Use it to decide whether to set + rs6000_current_abi to ABI_AIX or ABI_ELFv2. + (GLIBC_DYNAMIC_LINKER64): Support ELFv2 ld.so version. + * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine + _CALL_ELF and __STRUCT_PARM_ALIGN__ if appropriate. + + * config/rs6000/rs6000.c (rs6000_debug_reg_global): Handle ABI_ELFv2. + (debug_stack_info): Likewise. + (rs6000_file_start): Treat ABI_ELFv2 the same as ABI_AIX. + (rs6000_legitimize_tls_address): Likewise. + (rs6000_conditional_register_usage): Likewise. + (rs6000_emit_move): Likewise. + (init_cumulative_args): Likewise. + (rs6000_function_arg_advance_1): Likewise. + (rs6000_function_arg): Likewise. + (rs6000_arg_partial_bytes): Likewise. + (rs6000_output_function_entry): Likewise. + (rs6000_assemble_integer): Likewise. + (rs6000_savres_strategy): Likewise. + (rs6000_stack_info): Likewise. + (rs6000_function_ok_for_sibcall): Likewise. + (rs6000_emit_load_toc_table): Likewise. + (rs6000_savres_routine_name): Likewise. + (ptr_regno_for_savres): Likewise. + (rs6000_emit_prologue): Likewise. + (rs6000_emit_epilogue): Likewise. + (rs6000_output_function_epilogue): Likewise. + (output_profile_hook): Likewise. + (output_function_profiler): Likewise. + (rs6000_trampoline_size): Likewise. + (rs6000_trampoline_init): Likewise. + (rs6000_elf_output_toc_section_asm_op): Likewise. + (rs6000_elf_encode_section_info): Likewise. + (rs6000_elf_reloc_rw_mask): Likewise. + (rs6000_elf_declare_function_name): Likewise. + (rs6000_function_arg_boundary): Treat ABI_ELFv2 the same as ABI_AIX, + except that rs6000_compat_align_parm is always assumed false. + (rs6000_gimplify_va_arg): Likewise. + (rs6000_call_aix): Update comment. + (rs6000_sibcall_aix): Likewise. + * config/rs6000/rs6000.md ("tls_gd_aix"): + Treat ABI_ELFv2 the same as ABI_AIX. + ("*tls_gd_call_aix"): Likewise. + ("tls_ld_aix"): Likewise. + ("*tls_ld_call_aix"): Likewise. + ("load_toc_aix_si"): Likewise. + ("load_toc_aix_di"): Likewise. + ("call"): Likewise. + ("call_value"): Likewise. + ("*call_local_aix"): Likewise. + ("*call_value_local_aix"): Likewise. + ("*call_nonlocal_aix"): Likewise. + ("*call_value_nonlocal_aix"): Likewise. + ("*call_indirect_aix"): Likewise. + ("*call_value_indirect_aix"): Likewise. + ("sibcall"): Likewise. + ("sibcall_value"): Likewise. + ("*sibcall_aix"): Likewise. + ("*sibcall_value_aix"): Likewise. + * config/rs6000/predicates.md ("symbol_ref_operand"): Likewise. + ("current_file_function_operand"): Likewise. + +2013-11-14 Ulrich Weigand + + * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Simplify logic + by making use of the fact that for vector / floating point arguments + passed both in VRs/FPRs and in the fixed parameter area, the partial + bytes mechanism is in fact not used. + +2013-11-14 Ulrich Weigand + + * config/rs6000/rs6000.c (rs6000_psave_function_arg): New function. + (rs6000_finish_function_arg): Likewise. + (rs6000_function_arg): Use rs6000_psave_function_arg and + rs6000_finish_function_arg to handle both vector and floating + point arguments that are also passed in GPRs / the stack. + +2013-11-14 Ulrich Weigand + + * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Remove TYPE argument. + (USE_ALTIVEC_FOR_ARG_P): Likewise. + (rs6000_darwin64_record_arg_advance_recurse): Update uses. + (rs6000_function_arg_advance_1):Likewise. + (rs6000_darwin64_record_arg_recurse): Likewise. + (rs6000_function_arg): Likewise. + (rs6000_arg_partial_bytes): Likewise. + +2013-11-14 Ulrich Weigand + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Replace + "DEFAULT_ABI != ABI_AIX" test by testing for ABI_V4 or ABI_DARWIN. + (rs6000_savres_strategy): Likewise. + (rs6000_return_addr): Likewise. + (rs6000_emit_load_toc_table): Replace "DEFAULT_ABI != ABI_AIX" by + testing for ABI_V4 (since ABI_DARWIN is impossible here). + (rs6000_emit_prologue): Likewise. + (legitimate_lo_sum_address_p): Simplify DEFAULT_ABI test. + (rs6000_elf_declare_function_name): Remove duplicated test. + * config/rs6000/rs6000.md ("load_toc_v4_PIC_1"): Explicitly test + for ABI_V4 (instead of "DEFAULT_ABI != ABI_AIX" test). + ("load_toc_v4_PIC_1_normal"): Likewise. + ("load_toc_v4_PIC_1_476"): Likewise. + ("load_toc_v4_PIC_1b"): Likewise. + ("load_toc_v4_PIC_1b_normal"): Likewise. + ("load_toc_v4_PIC_1b_476"): Likewise. + ("load_toc_v4_PIC_2"): Likewise. + ("load_toc_v4_PIC_3b"): Likewise. + ("load_toc_v4_PIC_3c"): Likewise. + * config/rs6000/rs6000.h (RS6000_REG_SAVE): Simplify DEFAULT_ABI test. + (RS6000_SAVE_AREA): Likewise. + (FP_ARG_MAX_REG): Likewise. + (RETURN_ADDRESS_OFFSET): Likewise. + * config/rs6000/sysv.h (TARGET_TOC): Test for ABI_V4 instead + of ABI_AIX. + (SUBTARGET_OVERRIDE_OPTIONS): Likewise. + (MINIMAL_TOC_SECTION_ASM_OP): Likewise. + +2013-11-14 Ulrich Weigand + + * config/rs6000/rs6000.c (rs6000_call_indirect_aix): Rename to ... + (rs6000_call_aix): ... this. Handle both direct and indirect calls. + Create call insn directly instead of via various gen_... routines. + Mention special registers used by the call in CALL_INSN_FUNCTION_USAGE. + (rs6000_sibcall_aix): New function. + * config/rs6000/rs6000.md (TOC_SAVE_OFFSET_32BIT): Remove. + (TOC_SAVE_OFFSET_64BIT): Likewise. + (AIX_FUNC_DESC_TOC_32BIT): Likewise. + (AIX_FUNC_DESC_TOC_64BIT): Likewise. + (AIX_FUNC_DESC_SC_32BIT): Likewise. + (AIX_FUNC_DESC_SC_64BIT): Likewise. + ("call" expander): Call rs6000_call_aix. + ("call_value" expander): Likewise. + ("call_indirect_aix"): Replace this pattern ... + ("call_indirect_aix_nor11"): ... and this pattern ... + ("*call_indirect_aix"): ... by this insn pattern. + ("call_value_indirect_aix"): Replace this pattern ... + ("call_value_indirect_aix_nor11"): ... and this pattern ... + ("*call_value_indirect_aix"): ... by this insn pattern. + ("*call_nonlocal_aix32", "*call_nonlocal_aix64"): Replace by ... + ("*call_nonlocal_aix"): ... this pattern. + ("*call_value_nonlocal_aix32", "*call_value_nonlocal_aix64"): Replace + ("*call_value_nonlocal_aix"): ... by this pattern. + ("*call_local_aix"): New insn pattern. + ("*call_value_local_aix"): Likewise. + ("sibcall" expander): Call rs6000_sibcall_aix. + ("sibcall_value" expander): Likewise. Move earlier in file. + ("*sibcall_nonlocal_aix"): Replace by ... + ("*sibcall_aix"): ... this pattern. + ("*sibcall_value_nonlocal_aix"): Replace by ... + ("*sibcall_value_aix"): ... this pattern. + * config/rs6000/rs6000-protos.h (rs6000_call_indirect_aix): Remove. + (rs6000_call_aix): Add prototype. + (rs6000_sibcall_aix): Likewise. + +2013-11-14 Jakub Jelinek + + PR sanitizer/59122 + * asan.c (asan_emit_stack_protection): Ensure -fsection-anchors + isn't confused by the artificial decl. + +2013-11-14 Ulrich Weigand + + * config/rs6000/rs6000.c (rs6000_emit_prologue): Do not place a + RTX_FRAME_RELATED_P marker on the UNSPEC_MOVESI_FROM_CR insn. + Instead, add USEs of all modified call-saved CR fields to the + insn storing the result to the stack slot, and provide an + appropriate REG_FRAME_RELATED_EXPR for that insn. + * config/rs6000/rs6000.md ("*crsave"): New insn pattern. + * config/rs6000/predicates.md ("crsave_operation"): New predicate. + +2013-11-14 Ulrich Weigand + Alan Modra + + * function.c (assign_parms): Use all.reg_parm_stack_space instead + of re-evaluating REG_PARM_STACK_SPACE target macro. + (locate_and_pad_parm): New parameter REG_PARM_STACK_SPACE. Use it + instead of evaluating target macro REG_PARM_STACK_SPACE every time. + (assign_parm_find_entry_rtl): Update call. + * calls.c (initialize_argument_information): Update call. + (emit_library_call_value_1): Likewise. + * expr.h (locate_and_pad_parm): Update prototype. + +2013-11-14 Ulrich Weigand + + * calls.c (store_unaligned_arguments_into_pseudos): Skip PARALLEL + arguments. + +2013-11-14 DJ Delorie + + * config/rx/rx.c (rx_mode_dependent_address_p): Allow offsets up + to 16 bits. + +2013-11-14 Jeff Law + + * tree-ssa-threadedge.c (thread_through_normal_block): Only push the + EDGE_START_JUMP_THREAD marker if the jump threading path is empty. + +2013-11-14 James Greenhalgh + + * doc/invoke.texi: Update documentation for AArch64's -mcpu + and -mtune options. + +2013-11-14 James Greenhalgh + + * config/aarch64/aarch64-cores.def (example-1): Remove. + (example-2): Likewise. + * config/aarch64/aarch64-tune.md: Regenerate. + * config/aarch64/aarch64.md: Do not include "large.md" or "small.md". + (generic_sched): Remove "large", "small". + * config/aarch64/large.md: Delete. + * config/aarch64/small.md: Delete. + +2013-11-14 James Greenhalgh + + * config/aarch64/aarch64-cores.def (cortex-a57): Tune for cortexa15. + * config/aarch64/aarch64-tune.md: Regenerate. + * config/aarch64/aarch64.md: Include cortex-a15 pipeline model. + (generic_sched): "no" if we are tuning for cortexa15. + * config/arm/cortex-a15.md: Include cortex-a15-neon.md by + relative path. + +2013-11-14 James Greenhalgh + + * config/aarch64/aarch64-arches.def (armv8-a): Tune for cortex-a53. + * config/aarch64/aarch64.md: Do not include aarch64-generic.md. + * config/aarch64/aarch64.c (aarch64_tune): Initialize to cortexa53. + (all_cores): Use cortexa53 when tuning for "generic". + (aarch64_override_options): Fix comment. + * config/aarch64/aarch64.h (TARGET_CPU_DEFAULT): Set to cortexa53. + * config/aarch64/aarch64-generic.md: Delete. + +2013-11-14 James Greenhalgh + + * config/aarch64/aarch64.c (all_architectures): Remove "generic". + +2013-11-14 Kyrylo Tkachov + + * config/aarch64/aarch64.c: Include aarch-cost-tables.h. + (generic_rtx_cost_table): Remove. + (aarch64_rtx_costs): Use fields from cpu_cost_table. + * config/aarch64/aarch64-protos.h (tune_params): Use cpu_cost_table for + insn_extra_cost. + (cpu_rtx_cost_table): Remove. + +2013-11-14 Julian Brown + Joey Ye + + * config/arm/arm.c (arm_cortex_m_branch_cost): New. + (arm_v7m_tune): New. + (arm_slowmul_tune, arm_fastmul_tune, arm_strongarm_tune, arm_9e_tune, + arm_v6t2_tune, arm_cortex_tune, arm_cortex_a15_tune, + arm_cortex_a5_tune, arm_v6m_tune): Add comments for Sched adj cost. + * config/arm/arm-cores.def (cortex-m4, cortex-m3): Use arm_v7m_tune. + +2013-11-14 Kirill Yukhin + + PR target/57491 + * config/ia64/ia64.c (ia64_split_tmode_move): Relax `dead' + flag setting. + +2013-11-14 Jakub Jelinek + Uros Bizjak + + PR target/59101 + * config/i386/i386.md (*anddi_2): Only allow CCZmode if + operands[2] satisfies_constraint_Z that might have bit 31 set. + +2013-11-13 Jeff Law + + PR tree-optimization/59102 + * gimple-ssa-isolate-paths.c + (insert_trap_and_remove_trailing_statments): Ensure STMT is a + gimple assignment before looking at gimple_assign_lhs. + +2013-11-13 Vladimir Makarov + + * ira.c: Add comment about threads at the top of file. + +2013-11-13 Vladimir Makarov + + * ira-color.c (coalesce_allocnos): Don't allocate and free + sorted_copies. + +2013-11-14 Tom de Vries + + * tree-ssa-tail-merge.c (gimple_equal_p): Add test for structural + equality for GIMPLE_ASSIGN. + +2013-11-14 Tom de Vries + + * tree-ssa-tail-merge.c (gimple_operand_equal_value_p): Factor new + function out of ... + (gimple_equal_p): ... here. + +2013-11-14 Tom de Vries + + * trans-mem.c (is_tm_ending): New function. + * gimple.h (is_tm_ending): Declare. + * tree-ssa-tail-merge.c (gimple_equal_p): Remove test on + BUILT_IN_TM_COMMIT. + (find_duplicate): Use is_tm_ending instead of is_tm_ending_fndecl. + +2013-11-14 Tom de Vries + + * tree-ssa-tail-merge.c (gimple_equal_p): Remove equal variable. + +2013-11-13 Andrew MacLeod + + * gimple-walk.h: New File. Relocate prototypes from gimple.h. + (struct walk_stmt_info): Relocate here from gimple.h. + * gimple-iterator.h: New File. Relocate prototypes from gimple.h. + (struct gimple_stmt_iterator_d): Relocate here from gimple.h. + (gsi_start_1, gsi_none, gsi_start_bb, gsi_last_1, gsi_last_bb, + gsi_end_p, gsi_one_before_end_p, gsi_next, gsi_prev, gsi_stmt, + gsi_after_labels, gsi_next_nondebug, gsi_prev_nondebug, + gsi_start_nondebug_bb, gsi_start_nondebug_after_labels_bb, + gsi_last_nondebug_bb, gsi_bb, gsi_seq): Relocate here from gimple.h. + * gimple.h (struct gimple_stmt_iterator_d): Move to gimple-iterator.h. + (gsi_start_1, gsi_none, gsi_start_bb, gsi_last_1, gsi_last_bb, + gsi_end_p, gsi_one_before_end_p, gsi_next, gsi_prev, gsi_stmt, + gsi_after_labels, gsi_next_nondebug, gsi_prev_nondebug, + gsi_start_nondebug_bb, gsi_start_nondebug_after_labels_bb, + gsi_last_nondebug_bb, gsi_bb, gsi_seq): Move to gimple-iterator.h. + (struct walk_stmt_info): Move to gimple-walk.h. + (gimple_seq_set_location): Move to gimple.c + * gimple-walk.c: New File. + (walk_gimple_seq_mod, walk_gimple_seq, walk_gimple_asm, walk_gimple_op, + walk_gimple_stmt, get_base_loadstore, walk_stmt_load_store_addr_ops, + walk_stmt_load_store_ops): Relocate here from gimple.c. + * gimple-iterator.c: Include gimple-iterator.h. + * gimple.c (walk_gimple_seq_mod, walk_gimple_seq, walk_gimple_asm, + walk_gimple_op, walk_gimple_stmt, get_base_loadstore, + walk_stmt_load_store_addr_ops, walk_stmt_load_store_ops): Move to + gimple-walk.c. + (gimple_seq_set_location): Relocate from gimple.h. + * tree-phinodes.h (set_phi_nodes): Move to tree-phinodes.c. + * tree-phinodes.c (set_phi_nodes): Relocate from tree-phinodes.h. + * gengtype.c (open_base_files): Add gimple-iterator.h to include list. + * Makefile.in (OBJS): Add gimple-walk.o + * asan.c: Update Include list as required for gimple-iterator.h and + gimple-walk.h. + * cfgexpand.c: Likewise. + * cfgloop.c: Likewise. + * cfgloopmanip.c: Likewise. + * cgraph.c: Likewise. + * cgraphbuild.c: Likewise. + * cgraphunit.c: Likewise. + * gimple-fold.c: Likewise. + * gimple-low.c: Likewise. + * gimple-pretty-print.c: Likewise. + * gimple-ssa-isolate-paths.c: Likewise. + * gimple-ssa-strength-reduction.c: Likewise. + * gimple-streamer-in.c: Likewise. + * gimple-streamer-out.c: Likewise. + * gimplify.c: Likewise. + * graphite-blocking.c: Likewise. + * graphite-clast-to-gimple.c: Likewise. + * graphite-dependences.c: Likewise. + * graphite-interchange.c: Likewise. + * graphite-optimize-isl.c: Likewise. + * graphite-poly.c: Likewise. + * graphite-scop-detection.c: Likewise. + * graphite-sese-to-poly.c: Likewise. + * graphite.c: Likewise. + * ipa-inline-analysis.c: Likewise. + * ipa-profile.c: Likewise. + * ipa-prop.c: Likewise. + * ipa-pure-const.c: Likewise. + * ipa-split.c: Likewise. + * lto-streamer-in.c: Likewise. + * lto-streamer-out.c: Likewise. + * omp-low.c: Likewise. + * predict.c: Likewise. + * profile.c: Likewise. + * sese.c: Likewise. + * tracer.c: Likewise. + * trans-mem.c: Likewise. + * tree-call-cdce.c: Likewise. + * tree-cfg.c: Likewise. + * tree-cfgcleanup.c: Likewise. + * tree-complex.c: Likewise. + * tree-data-ref.c: Likewise. + * tree-dfa.c: Likewise. + * tree-eh.c: Likewise. + * tree-emutls.c: Likewise. + * tree-if-conv.c: Likewise. + * tree-inline.c: Likewise. + * tree-into-ssa.c: Likewise. + * tree-loop-distribution.c: Likewise. + * tree-nested.c: Likewise. + * tree-nrv.c: Likewise. + * tree-object-size.c: Likewise. + * tree-outof-ssa.c: Likewise. + * tree-parloops.c: Likewise. + * tree-predcom.c: Likewise. + * tree-profile.c: Likewise. + * tree-scalar-evolution.c: Likewise. + * tree-sra.c: Likewise. + * tree-ssa-ccp.c: Likewise. + * tree-ssa-coalesce.c: Likewise. + * tree-ssa-copy.c: Likewise. + * tree-ssa-copyrename.c: Likewise. + * tree-ssa-dce.c: Likewise. + * tree-ssa-dom.c: Likewise. + * tree-ssa-dse.c: Likewise. + * tree-ssa-forwprop.c: Likewise. + * tree-ssa-ifcombine.c: Likewise. + * tree-ssa-live.c: Likewise. + * tree-ssa-loop-ch.c: Likewise. + * tree-ssa-loop-im.c: Likewise. + * tree-ssa-loop-ivcanon.c: Likewise. + * tree-ssa-loop-ivopts.c: Likewise. + * tree-ssa-loop-manip.c: Likewise. + * tree-ssa-loop-niter.c: Likewise. + * tree-ssa-loop-prefetch.c: Likewise. + * tree-ssa-loop.c: Likewise. + * tree-ssa-math-opts.c: Likewise. + * tree-ssa-phiopt.c: Likewise. + * tree-ssa-phiprop.c: Likewise. + * tree-ssa-pre.c: Likewise. + * tree-ssa-propagate.c: Likewise. + * tree-ssa-reassoc.c: Likewise. + * tree-ssa-sink.c: Likewise. + * tree-ssa-strlen.c: Likewise. + * tree-ssa-structalias.c: Likewise. + * tree-ssa-tail-merge.c: Likewise. + * tree-ssa-ter.c: Likewise. + * tree-ssa-threadedge.c: Likewise. + * tree-ssa-threadupdate.c: Likewise. + * tree-ssa-uncprop.c: Likewise. + * tree-ssa-uninit.c: Likewise. + * tree-ssa.c: Likewise. + * tree-stdarg.c: Likewise. + * tree-switch-conversion.c: Likewise. + * tree-tailcall.c: Likewise. + * tree-vect-data-refs.c: Likewise. + * tree-vect-generic.c: Likewise. + * tree-vect-loop-manip.c: Likewise. + * tree-vect-loop.c: Likewise. + * tree-vect-patterns.c: Likewise. + * tree-vect-slp.c: Likewise. + * tree-vect-stmts.c: Likewise. + * tree-vectorizer.c: Likewise. + * tree-vrp.c: Likewise. + * tree.c: Likewise. + * tsan.c: Likewise. + * value-prof.c: Likewise. + * vtable-verify.c: Likewise. + +2013-11-13 Steven Bosscher + + * gimple-ssa-isolate-paths.c (pass_isolate_erroneous_paths): Comment + fix. + +2013-11-13 Jeff Law + + * PR middle-end/59119 + * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behaviour): New + function, extracted from gimple_ssa_isolate_erroneous_paths. + (find_explicit_erroneous_behaviour): Similarly. + (insert_trap_and_remove_trailing_statements): Remove statements + in reverse order. + +2013-11-13 Steven Bosscher + + * cfgrtl.c (can_fallthru): Reorder code to move tablejump check up. + Make that check explicit. BB_HEAD cannot be NULL, remove check for it. + * haifa-sched.c (ready_remove_first_dispatch): Check INSN_P before + looking at INSN_CODE. + * reload1.c (delete_dead_insn) Do not expect JUMP_TABLE_DATA to be an + active_insn_p object, respect basic block boundaries. + * reorg.c (follow_jumps): Use invariant that JUMP_TABLE_DATA always + follows immediately after the jump table data label. + * config/nds32/nds32.c (nds32_output_casesi_pc_relative): Likewise. + * config/sh/sh.c (barrier_align): Likewise. Rearrange code such + that JUMP_TABLE_DATA is not expected to be an active_insn_p object. + +2013-11-13 Teresa Johnson + + PR ipa/58862 + * predict.c (drop_profile): Error is currently too strict. + (handle_missing_profiles): Pass call_count to drop_profile. + +2013-11-13 Teresa Johnson + + PR ipa/58862 + * ipa-inline.c (edge_badness): Fix overflow. + +2013-11-13 Vladimir Makarov + + PR rtl-optimization/59036 + * ira-color.c (struct allocno_color_data): Add new members + first_thread_allocno, next_thread_allocno, thread_freq. + (sorted_copies): New static var. + (allocnos_conflict_by_live_ranges_p, copy_freq_compare_func): Move up. + (allocno_thread_conflict_p, merge_threads) + (form_threads_from_copies, form_threads_from_bucket) + (form_threads_from_colorable_allocno, init_allocno_threads): New + functions. + (bucket_allocno_compare_func): Add comparison by thread frequency + and threads. + (add_allocno_to_ordered_bucket): Rename to + add_allocno_to_ordered_colorable_bucket. Remove parameter. + (push_only_colorable): Call form_threads_from_bucket. + (color_pass): Call init_allocno_threads. Use + consideration_allocno_bitmap instead of coloring_allocno_bitmap + for nuillify allocno color data. + (ira_initiate_assign, ira_finish_assign): Allocate/free sorted_copies. + (coalesce_allocnos): Use static sorted copies. + +2013-11-13 Jakub Jelinek + + * passes.c (execute_todo): Don't call do_per_function if + flags are zero. + (execute_one_ipa_transform_pass, execute_one_pass): Don't call + execute_function_dump if dump_file is NULL. + +2013-11-13 Martin Jambor + + * cgraph.c (cgraph_get_create_node): Do what + cgraph_get_create_real_symbol_node used to do. + (cgraph_get_create_real_symbol_node): Removed. Changed all users to + call cgraph_get_create_node. + * cgraph.h (cgraph_get_create_real_symbol_node): Removed. + * lto-streamer-in.c (input_function): Call cgraph_get_node instead of + cgraph_get_create_node. Assert we get a node. + +2013-11-13 Tejas Belagod + + * config/aarch64/aarch64-simd.md (vec_extract): New. + +2013-11-13 Tejas Belagod + + * config/aarch64/aarch64-simd.md (vec_set): Add w -> w option to + the constraint. + +2013-11-13 Eric Botcazou + + * cfgexpand.c (expand_used_vars): Allocate space for partitions based + on PARM_DECLs or RESULT_DECLs only if they are ignored for debug info + or if optimization is enabled. + * tree-ssa-coalesce.c (coalesce_ssa_name): If optimization is disabled, + require that all the names based on a PARM_DECL or a RESULT_DECL that + isn't ignored for debug info be coalesced. + +2013-11-13 Jan-Benedict Glaw + + * config/c6x/c6x.c: Include "gimple-expr.h". + +2013-11-13 Richard Biener + + * gimple-streamer-out.c (output_gimple_stmt): Also wrap + decls in ADDR_EXPR operands inside a MEM_REF and optimize that. + * gimple-streamer-in.c (input_gimple_stmt): Remove now dead code + dealing with type mismatches inside component reference chains. + +2013-11-13 Marc Glisse + + PR tree-optimization/59077 + * ipa-pure-const.c (better_state): Update *state. + +2013-11-13 Christophe Lyon + + * config/aarch64/aarch64.h (FRAME_GROWS_DOWNWARD): Define to 1. + * config/aarch64/aarch64.c (aarch64_initial_elimination_offset): + Update offset calculations. + +2013-11-13 Eric Botcazou + + PR ada/35998 + * dwarf2out.c (add_byte_size_attribute): Also use int_size_in_bytes + for fields. Do not add the attribute if the size is negative. + +2013-11-13 Kyrylo Tkachov + + * config/arm/arm.c: Include aarch-cost-tables.h. + (generic_extra_costs): Move from here... + * config/arm/aarch-cost-tables.h: ... To here. New file. + +2013-11-13 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.c (ix86_print_operand): Support z-masking. + * config/i386/predicate.md (const_0_to_4_operand): New. + (const_0_to_5_operand): Ditto. + * config/i386/sse.md (UNSPEC_COMPRESS): New. + (UNSPEC_COMPRESS_STORE): Ditto. + (UNSPEC_EXPAND): Ditto. + (UNSPEC_EMBEDDED_ROUNDING): Ditto. + (define_mode_attr ssescalarsize): Ditto. + (avx512f_load_mask): Ditto. + (avx512f_store_mask): Ditto. + (avx512f_storedqu_mask): Ditto. + (avx512f_vmcmp3_mask): Ditto. + (avx512f_fmadd__mask): Ditto. + (avx512f_fmadd__mask3): Ditto. + (avx512f_fmsub__mask): Ditto. + (avx512f_fmsub__mask3): Ditto. + (avx512f_fnmadd__mask): Ditto. + (avx512f_fnmadd__mask3): Ditto. + (avx512f_fnmsub__mask): Ditto. + (avx512f_fnmsub__mask3): Ditto. + (avx512f_fmaddsub__mask): Ditto. + (avx512f_fmaddsub__mask3): Ditto. + (avx512f_fmsubadd__mask): Ditto. + (avx512f_fmsubadd__mask3): Ditto. + (vec_unpacku_float_lo_v16si): Ditto. + (avx512f_vextract32x4_mask): Ditto. + (avx512f_vextract32x4_1_maskm): Ditto. + (avx512f_vextract64x4_mask): Ditto. + (vec_extract_lo__maskm): Ditto. + (vec_extract_hi__maskm): Ditto. + (avx512f_vternlog_mask): Ditto. + (avx512f_shufps512_mask): Ditto. + (avx512f_fixupimm_mask): Ditto. + (avx512f_shufpd512_mask): Ditto. + (avx512f_2_mask): Ditto. + (avx512f_v8div16qi2_mask/trunc): Ditto. + (*avx512f_v8div16qi2_store_mask): Ditto. + (ashr3): Ditto. + (avx512f_vinsert32x4_mask): Ditto. + (avx512f_vinsert64x4_mask): Ditto. + (avx512f_shuf_64x2_mask): Ditto. + (avx512f_shuf_32x4_mask): Ditto. + (avx512f_pshufdv3_mask): Ditto. + (avx512f_perm_mask): Ditto. + (avx512f_vpermi2var3_mask): Ditto. + (avx512f_vpermt2var3_mask): Ditto. + (avx512f_compress_mask): Ditto. + (avx512f_compressstore_mask): Ditto. + (avx512f_expand_mask): Ditto. + (_loadu): Extend + to support masking. + (avx512f_storeu512_mask): Ditto. + (3): Ditto. + (*3): Ditto. + (mul3): Ditto. + (*mul3): Ditto. + (_div3): Ditto. + (rcp14): Ditto. + (_sqrt2): Ditto. + (rsqrt14): Ditto. + (3/smaxmin): Ditto. + (*3_finite/smaxmin): Ditto. + (*3/smaxmin): Ditto. + (float2): Ditto. + (ufloatv16siv16sf2): Ditto. + (avx512f_fix_notruncv16sfv16si): Ditto. + (avx512f_ufix_notruncv16sfv16si): Ditto. + (fix_truncv16sfv16si2): Ditto. + (float2): Ditto. + (ufloatv8siv8df): Ditto. + (avx512f_cvtpd2dq512): Ditto. + (avx512f_ufix_notruncv8dfv8si): Ditto. + (fix_truncv8dfv8si2): Ditto. + (avx512f_cvtpd2ps512): Ditto. + (_cvtps2pd): Ditto. + (avx512f_unpckhps512): Ditto. + (avx512f_unpcklps512): Ditto. + (avx512f_movshdup512): Ditto. + (avx512f_movsldup512): Ditto. + (avx512f_vextract32x4_1): Ditto. + (vec_extract_lo_): Ditto. + (vec_extract_hi_): Ditto. + (avx512f_unpckhpd512): Ditto. + (avx512f_movddup512): Ditto. + (avx512f_unpcklpd512): Ditto. + (*avx512f_unpcklpd512): Ditto. + (*avx512f_vmscalef): Ditto. + (avx512f_scalef): Ditto. + (avx512f_getexp): Ditto. + (avx512f_align): Ditto. + (avx512f_rndscale): Ditto. + (avx512f_shufps512_1): Ditto. + (avx512f_shufpd512_1): Ditto. + (3): Ditto. + (*3): Ditto. + (vec_widen_umult_even_v16si): Ditto. + (*vec_widen_umult_even_v16si): Ditto. + (vec_widen_smult_even_v16si): Ditto. + (*vec_widen_smult_even_v16si): Ditto. + (mul3): Ditto. + (*_mul3): Ditto. + (3): Ditto. + (avx512f_v/rotate): Ditto. + (avx512f_): Ditto. + (3/maxmin): Ditto. + (*avx2_3/maxmin): Ditto. + (_andnot3): Ditto. + (*andnot3): Ditto. + (3/any_logic): Ditto. + (avx512f_interleave_highv16si): Ditto. + (avx512f_interleave_lowv16si): Ditto. + (avx512f_vinsert32x4_1): Ditto. + (vec_set_lo_): Ditto. + (vec_set_hi_): Ditto. + (avx512f_shuf_64x2_1): Ditto. + (avx512f_shuf_32x4_1): Ditto. + (avx512f_pshufd_1): Ditto. + (abs2): Ditto. + (avx512f_v16qiv16si2): Ditto. + (avx512f_v16hiv16si2/any_extend): Ditto. + (avx512f_v8qiv8di2/any_extend): Ditto. + (avx512f_v8hiv8di2/any_extend): Ditto. + (avx512f_v8siv8di2/any_extend): Ditto. + (avx512er_exp2): Ditto. + (avx512er_rcp28): Ditto. + (avx512er_rsqrt28): Ditto. + (_permvar): Ditto. + (_perm_1): Ditto. + (avx512f_vec_dup): Ditto. + (avx512f_broadcast/V16FI): Ditto. + (avx512f_broadcast/V8FI): Ditto. + (avx512f_vec_dup_gpr): Ditto. + (avx512f_vec_dup_mem): Ditto. + (_vpermil/VF2): Ditto. + (_vpermil/VF1): Ditto. + (*_vpermilp): Ditto. + (_vpermilvar3): Ditto. + (_ashrv): Ditto. + (_v): Ditto. + (avx512f_vcvtph2ps512): Ditto. + (avx512f_vcvtps2ph512): Ditto. + (avx512f_getmant): Ditto. + (clz2): Ditto. + (conflict): Ditto. + (*srcp14): Remove visibility. + (*rsqrt14): Ditto. + (*fma_fmsub_): Ditto. + (*fma_fnmadd_): Ditto. + (*avx512f_rndscale): Ditto. + * config/i386/subst.md: New file. + +2013-11-13 Joseph Myers + + * doc/extend.texi (Statement Exprs, Typeof): Discuss __auto_type. + * ginclude/stdatomic.h (kill_dependency, atomic_store_explicit) + (atomic_load_explicit, atomic_exchange_explicit) + (atomic_compare_exchange_strong_explicit) + (atomic_compare_exchange_weak_explicit): Use __auto_type to + declare variable initialized with PTR argument. + +2013-11-12 Jeff Law + + * tree-ssa-threadedge.c (thread_around_empty_blocks): New argument + backedge_seen_p. Set, use and pass it to children appropriately. + (thread_through_normal_block): Similarly. + (thread_across_edge): Similarly. + + * gimple-ssa-isolate-paths.c (check_loadstore): Mark discovered + memory references as volatile. + (insert_trap_and_remove_trailing_statements): Fix comment. + +2013-11-12 Vladimir Makarov + + PR other/58712 + * ira-costs.c (record_operand_costs): Check operands number for + the single set. + +2013-11-12 Michael Meissner + + PR target/59054 + * config/rs6000/rs6000.md (movdi_internal32): Eliminate + constraints that would allow DImode into the traditional Altivec + registers, but cause undesirable code generation when loading 0 as + a constant. + (movdi_internal64): Likewise. + (cmp_fpr): Do not use %x for CR register output. + (extendsfdf2_fpr): Fix constraints when -mallow-upper-df and + -mallow-upper-sf debug switches are used. + +2013-11-12 Andrew MacLeod + + * gimple-expr.h (create_tmp_var_name, create_tmp_var_raw, + create_tmp_var, create_tmp_reg, mark_addressable, is_gimple_reg_rhs): + Relocate prototypes from gimple.h. + * gimplify.h: New File. Relocate some prototypes from gimple.h here. + (gimple_predicate, enum fallback, enum gimplify_status): Relocate + from gimple.h. + * gimple.h: Move some prototypes to gimplify.h. + (gimple_predicate, enum fallback, enum gimplify_status): Move to + gimplify.h. + (gimple_do_not_emit_location_p, gimple_set_do_not_emit_location): + Relocate from gimpify.c. + * gimple-expr.c (remove_suffix, tmp_var_id_num, create_tmp_var_name, + create_tmp_var_raw, create_tmp_var, create_tmp_reg, mark_addressable, + is_gimple_reg_rhs) Relocate from gimplify.c. + * gimplify.c (mark_addressable): Move to gimple-expr.c. + (gimple_seq_add_stmt_without_update): Move to gimple.c. + (remove_suffix, tmp_var_id_num, create_tmp_var_name, + create_tmp_var_raw, create_tmp_var, create_tmp_reg, + is_gimple_reg_rhs): Move to gimple-expr.c. + (should_carry_location_p): Move to gimple.c. + (gimple_do_not_emit_location_p, gimple_set_do_not_emit_location): Move + to gimple.h. + (annotate_one_with_location, annotate_all_with_location_after, + annotate_all_with_location): Move to gimple.c. + (compare_case_labels, sort_case_labels, + preprocess_case_label_vec_for_gimple): Move to gimple.c. + (rhs_predicate_for): Make static. + (gimplify_assign): Relocate from gimple.c. + * gimple.c (gimplify_assign): Move to gimplify.c. + (gimple_seq_add_stmt_without_update, should_carry_location_p, + annotate_one_with_location, annotate_all_with_location_after, + annotate_all_with_location, compare_case_labels, sort_case_labels, + preprocess_case_label_vec_for_gimple): Relocate from gimplify.c. + * tree.h (unshare_expr, unshare_expr_without_location, + mark_addressable): Move prototypes to gimplify.h. + * Makefile.in (GTFILES): gimple-expr.c now has the GTY tag for + tmp_var_id_num + * asan.c: Include gimplify.h rather than gimple.h. + * cfgloopmanip.c: Likewise. + * cgraphunit.c: Likewise. + * cilk-common.c: Likewise. + * dwarf2out.c: Dont include gimple.h. + * fold-const.c: Include gimplify.h rather than gimple.h. + * function.c: Likewise. + * gimple-fold.c: Likewise. + * gimple-ssa-strength-reduction.c: Likewise. + * graphite-clast-to-gimple.c: Likewise. + * graphite-sese-to-poly.c: Likewise. + * ipa-prop.c: Likewise. + * ipa-split.c: Likewise. + * ipa.c: Likewise. + * langhooks.c: Dont include gimple.h. + * loop-init.c: Include gimplify.h rather than gimple.h. + * omp-low.c: Likewise. + * sese.c: Likewise. + * stor-layout.c: Likewise. + * targhooks.c: Likewise. + * trans-mem.c: Likewise. + * tree-affine.c: Likewise. + * tree-cfg.c: Likewise. + * tree-cfgcleanup.c: Likewise. + * tree-complex.c: Likewise. + * tree-if-conv.c: Likewise. + * tree-inline.c: Likewise. + * tree-iterator.c: Likewise. + * tree-loop-distribution.c: Likewise. + * tree-nested.c: Likewise. + * tree-parloops.c: Likewise. + * tree-predcom.c: Likewise. + * tree-profile.c: Likewise. + * tree-scalar-evolution.c: Likewise. + * tree-sra.c: Likewise. + * tree-ssa-address.c: Likewise. + * tree-ssa-ccp.c: Likewise. + * tree-ssa-dce.c: Likewise. + * tree-ssa-forwprop.c: Likewise. + * tree-ssa-ifcombine.c: Likewise. + * tree-ssa-loop-im.c: Likewise. + * tree-ssa-loop-ivopts.c: Likewise. + * tree-ssa-loop-manip.c: Likewise. + * tree-ssa-loop-niter.c: Likewise. + * tree-ssa-loop-prefetch.c: Likewise. + * tree-ssa-loop-unswitch.c: Likewise. + * tree-ssa-math-opts.c: Likewise. + * tree-ssa-phiopt.c: Likewise. + * tree-ssa-phiprop.c: Likewise. + * tree-ssa-pre.c: Likewise. + * tree-ssa-propagate.c: Likewise. + * tree-ssa-reassoc.c: Likewise. + * tree-ssa-sccvn.c: Likewise. + * tree-ssa-strlen.c: Likewise. + * tree-ssa.c: Likewise. + * tree-switch-conversio: Likewise.n.c + * tree-tailcall.c: Likewise. + * tree-vect-data-refs.c: Likewise. + * tree-vect-generic.c: Likewise. + * tree-vect-loop-manip.c: Likewise. + * tree-vect-loop.c: Likewise. + * tree-vect-patterns.c: Likewise. + * tree-vect-stmts.c: Likewise. + * tsan.c: Likewise. + * value-prof.c: Likewise. + * config/aarch64/aarch64.c: Include gimplify.h instead of gimple.h. + * config/alpha/alpha.c: Likewise. + * config/darwin.c: Likewise. + * config/i386/i386.c: Likewise. + * config/ia64/ia64.c: Likewise. + * config/mep/mep.c: Likewise. + * config/mips/mips.c: Likewise. + * config/rs6000/rs6000.c: Likewise. + * config/s390/s390.c: Likewise. + * config/sh/sh.c: Likewise. + * config/sparc/sparc.c: Likewise. + * config/spu/spu.c: Likewise. + * config/stormy16/stormy16.c: Likewise. + * config/tilegx/tilegx.c: Likewise. + * config/tilepro/tilepro.c: Likewise. + * config/xtensa/xtensa.c: Likewise. + +2013-11-12 Adam Butcher + + * tree.c (grow_tree_vec_stat): New function ... + * tree.h (grow_tree_vec_stat) (grow_tree_vec): ... and its declaration + and macro front-end. + +2013-11-12 Marek Polacek + + * final.c (update_alignments): Initialize label to NULL_RTX. + +2013-11-12 Jeff Law + + * gimple-ssa-isolate-paths.c (check_loadstore): New function. + (insert_trap_and_remove_trailing_statements): New argument OP which + is the NULL pointer. Emit the trap after the load/store through + the NULL pointer. Simplify the RHS of a store through a NULL pointer + when trivial to do so. + (isolate_path): Corresponding changes. + (gimple_ssa_isolate_erroneous_path): Likewise. + +2013-11-12 Teresa Johnson + Jan Hubicka + + * predict.c (drop_profile): New function. + (handle_missing_profiles): Ditto. + (counts_to_freqs): Don't overwrite estimated frequencies + when function has no profile counts. + * predict.h (handle_missing_profiles): Declare. + * tree-inline.c (freqs_to_counts): New function. + (copy_cfg_body): Invoke freqs_to_counts as needed. + * tree-profile.c (tree_profiling): Invoke handle_missing_profiles. + +2013-11-12 H.J. Lu + + PR target/59088 + * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL): + Set for m_HASWELL. + (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Set for m_HASWELL. + +2013-11-12 H.J. Lu + + PR target/59084 + * config/i386/i386.c (ix86_option_override_internal): Check + X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL and + X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL for + MASK_AVX256_SPLIT_UNALIGNED_LOAD and + MASK_AVX256_SPLIT_UNALIGNED_STORE. + + * config/i386/x86-tune.def (X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL): + Clear m_COREI7_AVX and update comments. + (X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL): Likewise. + +2013-11-12 Martin Jambor + + PR rtl-optimization/10474 + * ira.c (interesting_dest_for_shprep): New function. + (split_live_ranges_for_shrink_wrap): Likewise. + (find_moveable_pseudos): Move calculation of dominance info, + df_analysios and the final anlyses to... + (ira): ...here, call split_live_ranges_for_shrink_wrap. + +2013-11-12 Bin Cheng + + * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Refactor the code. + Handle type conversion. + +2013-11-11 Martin Liska + Jan Hubicka + + * cgraph.c (dump_cgraph_node): Profile dump added. + * cgraph.h (struct cgraph_node): New time profile variable added. + * cgraphclones.c (cgraph_clone_node): Time profile is cloned. + * gcov-io.h (gcov_type): New profiler type introduced. + * ipa-profile.c (lto_output_node): Streaming for time profile added. + (input_node): Time profiler is read from LTO stream. + * predict.c (maybe_hot_count_p): Hot prediction changed. + * profile.c (instrument_values): New case for time profiler added. + (compute_value_histograms): Read of time profile. + * tree-pretty-print.c (dump_function_header): Time profiler is dumped. + * tree-profile.c (init_ic_make_global_vars): Time profiler + function added. + (gimple_init_edge_profiler): TP function instrumentation. + (gimple_gen_time_profiler): New. + * value-prof.c (gimple_add_histogram_value): Support for time profiler + added. + (dump_histogram_value): TP type added to dumps. + (visit_hist): More sensitive check that takes TP into account. + (gimple_find_values_to_profile): TP instrumentation. + * value-prof.h (hist_type): New histogram type added. + (struct histogram_value_t): Pointer to struct function added. + * libgcc/Makefile.in: New GCOV merge function for TP added. + * libgcov.c: function_counter variable introduced. + (_gcov_merge_time_profile): New. + (_gcov_time_profiler): New. + +2013-11-11 Marc Glisse + Jeff Law + + * tree-ssa-alias.c (stmt_kills_ref_p_1): Use + ao_ref_init_from_ptr_and_size for builtins. + +2013-11-11 Uros Bizjak + H.J. Lu + + PR target/58853 + * config/i386/x86-tune.def + (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Rename from + TARGET_MISALIGNED_MOVE_STRING_PROLOGUES. + * config/i386/i386.h + (TARGET_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Rename from + TARGET_MISALIGNED_MOVE_STRING_PROLOGUES_EPILOGUES. Update for renamed + X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES. + * config/i386/i386.c (ix86_expand_set_or_movmem): Use + TARGET_MISALIGNED_MOVE_STRING_PRO_EPILOGUES to calculate + misaligned_prologue_used. Check that + desired_aling <= epilogue_size_needed. + +2013-11-11 Cong Hou + + PR tree-optimization/59050 + * tree-vect-data-refs.c (comp_dr_addr_with_seg_len_pair): Bug fix. + +2013-11-11 Joern Rennecke + + PR middle-end/59049 + * expmed.c (emit_store_flag): Fail for const-const comparison. + +2013-11-11 Tristan Gingold + Eric Botcazou + + * tree.h (CONSTRUCTOR_NO_CLEARING): Define. + * tree-core.h (CONSTRUCTOR_NO_CLEARING): Document it. + * tree.def (CONSTRUCTOR): Likewise. + * doc/generic.texi (CONSTRUCTOR): Likewise. Update description. + * gimplify.c (gimplify_init_constructor): Do not clear the object when + the constructor is incomplete and CONSTRUCTOR_NO_CLEARING is set. + +2013-11-11 Basile Starynkevitch + + * toplev.c (toplev_main): Move PLUGIN_FINISH invocation before + diagnostic_finish. + +2013-11-11 Kyrylo Tkachov + + * config/arm/arm.c (arm_new_rtx_costs): Return after handling + comparisons. + +2013-11-11 Joern Rennecke + + * config/arc/arc.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define. + +2013-11-08 Jeff Law + + * tree-ssa-threadupdate.c (mark_threaded_blocks): Truncate jump + threading paths first, then perform PHI node checks if applicable. + +2013-11-10 Karlson2k + Kai Tietz + + PR plugin/52872 + * configure.ac: Adding for exported symbols check + and for rdynamic-check executable-extension. + * configure: Regenerated. + +2013-11-10 Uros Bizjak + + * mode-switching.c (optimize_mode_switching): Mark block as + nontransparent, if last_mode at block exit is different from no_mode. + +2013-11-09 Jan-Benedict Glaw + + * function.c (NAME__MAIN): Move to... + * cfgexpand.c (NAME__MAIN): ...here. + +2013-11-09 Richard Sandiford + + * target.def (can_use_doloop_p): New hook. + * doc/tm.texi.in (TARGET_CAN_USE_DOLOOP_P): Add. + * doc/tm.texi: Regenerate. + * doc/md.texi (doloop_begin, doloop_end): Update documentation. + * hooks.h (hook_bool_dint_dint_uint_true): Declare. + * hooks.c (hook_bool_dint_dint_uint_true): New function. + * targhooks.h (can_use_doloop_if_innermost): Declare. + * targhooks.c (can_use_doloop_if_innermost): New function. + * target.h: Include double-int.h. + * loop-doloop.c (doloop_optimize): Call targetm.can_use_doloop_p. + Remove iteration count, maximum iteration count, loop depth and + enter-at-top inputs from doloop_begin and doloop_end. + * config/arc/arc.md (doloop_begin, doloop_end): Update for new + interface. + * config/arc/arc.c (arc_can_use_doloop_p): New function. + (TARGET_CAN_USE_DOLOOP_P): Define. + * config/arm/thumb2.md (doloop_end): Update for new interface. + * config/arm/arm.c (TARGET_CAN_USE_DOLOOP_P): Define. + * config/bfin/bfin.md (doloop_end): Update for new interface. + * config/bfin/bfin.c (bfin_can_use_doloop_p): New function. + (TARGET_CAN_USE_DOLOOP_P): Define. + * config/c6x/c6x.md (doloop_end): Update for new interface. + * config/ia64/ia64.md (doloop_end): Update for new interface. + * config/ia64/ia64.c (TARGET_CAN_USE_DOLOOP_P): Define. + * config/mep/mep.md (doloop_begin, doloop_end): Update for new + interface. + * config/mep/mep.c (mep_emit_doloop): Likewise. + (TARGET_CAN_USE_DOLOOP_P): Define. + * config/rs6000/rs6000.md (doloop_end): Update for new interface. + * config/rs6000/rs6000.c (TARGET_CAN_USE_DOLOOP_P): Define. + * config/s390/s390.md (doloop_end): Update for new interface. + * config/sh/sh.md (doloop_end): Likewise. + * config/spu/spu.md (doloop_end): Likewise. + * config/spu/spu.c (TARGET_CAN_USE_DOLOOP_P): Define. + * config/tilegx/tilegx.md (doloop_end): Update for new interface. + * config/tilegx/tilegx.c (TARGET_CAN_USE_DOLOOP_P): Define. + * config/tilepro/tilepro.md (doloop_end): Update for new interface. + * config/tilepro/tilepro.c (TARGET_CAN_USE_DOLOOP_P): Define. + * config/v850/v850.md (doloop_begin, doloop_end): Update for new + interface. + * config/v850/v850.c (TARGET_CAN_USE_DOLOOP_P): Define. + +2013-11-08 H.J. Lu + + PR other/59055 + * doc/extend.texi: Move Cilk Plus Builtins node before Other + Builtins node. + +2013-11-08 Andrew MacLeod + Joseph Myers + + * ginclude/stdatomic.h: New file. + * Makefile.in (USER_H): Add stdatomic.h. + +2013-11-08 Kyrylo Tkachov + + * config/arm/arm.c (arm_new_rtx_costs): Break after handling + comparisons. + +2013-11-08 Jeff Law + + * tree-ssa-threadupdate.h (delete_thread_path): Declare. + * tree-ssa-threadupdate.c (delete_thread_path): New function. + (ssa_redirect_edges, thread_block_1): Use it. + (thread_through_loop_header, mark_threaded_blocks): Likewise. + (thread_through_all_blocks, register_jump_thread): Likewise. + * tree-ssa-threadedge.c (thread_across_edge): Likewise. + +2013-11-08 James Greenhalgh + + * config/arm/aarch-common.c + (search_term): New typedef. + (shift_rtx_costs): New array. + (arm_rtx_shift_left_p): New. + (arm_find_sub_rtx_with_search_term): Likewise. + (arm_find_sub_rtx_with_code): Likewise. + (arm_early_load_addr_dep): Add sanity checking. + (arm_no_early_alu_shift_dep): Likewise. + (arm_no_early_alu_shift_value_dep): Likewise. + (arm_no_early_mul_dep): Likewise. + (arm_no_early_store_addr_dep): Likewise. + +2013-11-08 Richard Biener + + PR tree-optimization/59047 + * tree-predcom.c (ref_at_iteration): Handle bitfield accesses properly. + +2013-11-08 Ilya Enkovich + + * common.opt (fcheck-pointer-bounds): Move to ... + * c-family/c.opt: ... here. + * langhooks-def.h (LANG_HOOKS_CHKP_SUPPORTED): Remove. + (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CHKP_SUPPORTED. + * langhooks.h (lang_hooks): Remove chkp_supported field. + * toplev.c (process_options): Remove chkp_supported check. + +2013-11-08 Richard Biener + + PR tree-optimization/59038 + PR tree-optimization/58955 + * tree-loop-distribution.c (pg_add_dependence_edges): Revert + previous change. Handle known dependences correctly. + +2013-11-08 Tom de Vries + + * config/rs6000/t-xilinx: Remove duplicate contents. + +2013-11-07 Andrew MacLeod + Joseph Myers + + * tree-core.h (enum cv_qualifier): Add TYPE_QUAL_ATOMIC. + (enum tree_index): Add TI_ATOMICQI_TYPE, TI_ATOMICHI_TYPE, + TI_ATOMICSI_TYPE, TI_ATOMICDI_TYPE and TI_ATOMICTI_TYPE. + (struct tree_base): Add atomic_flag field. + * tree.h (TYPE_ATOMIC): New accessor macro. + (TYPE_QUALS, TYPE_QUALS_NO_ADDR_SPACE): Add TYPE_QUAL_ATOMIC. + (TYPE_QUALS_NO_ADDR_SPACE_NO_ATOMIC): New macro. + (atomicQI_type_node, atomicHI_type_node, atomicSI_type_node) + (atomicDI_type_node, atomicTI_type_node): New macros for type nodes. + * tree.c (set_type_quals): Set TYPE_ATOMIC. + (find_atomic_core_type): New function. + (build_qualified_type): Adjust alignment for qualified types. + (build_atomic_base): New function + (build_common_tree_nodes): Build atomicQI_type_node, + atomicHI_type_node, atomicSI_type_node, atomicDI_type_node and + atomicTI_type_node. + * print-tree.c (print_node): Print atomic qualifier. + * tree-pretty-print.c (dump_generic_node): Print atomic type attribute. + * target.def (atomic_assign_expand_fenv): New hook. + * doc/tm.texi.in (TARGET_ATOMIC_ASSIGN_EXPAND_FENV): New @hook. + * doc/tm.texi: Regenerate. + * targhooks.c (default_atomic_assign_expand_fenv): New function. + * targhooks.h (default_atomic_assign_expand_fenv): Declare. + * sync-builtins.def (__atomic_feraiseexcept): New built-in function. + * config/i386/i386-builtin-types.def (VOID_FTYPE_PUSHORT): New + function type. + * config/i386/i386.c (enum ix86_builtins): Add + IX86_BUILTIN_FNSTENV, IX86_BUILTIN_FLDENV, IX86_BUILTIN_FNSTSW and + IX86_BUILTIN_FNCLEX. + (bdesc_special_args): Add __builtin_ia32_fnstenv, + __builtin_ia32_fldenv, __builtin_ia32_fnstsw and __builtin_ia32_fnclex. + (ix86_expand_builtin): Handle the new built-in functions. + (ix86_atomic_assign_expand_fenv): New function. + (TARGET_ATOMIC_ASSIGN_EXPAND_FENV): New macro. + * config/i386/i386.md (UNSPECV_FNSTENV, UNSPECV_FLDENV) + (UNSPECV_FNSTSW, UNSPECV_FNCLEX): New unspecs. + (fnstenv, fldenv, fnstsw, fnclex): New insns. + +2013-11-07 Steve Ellcey + + * config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add fp64 directory. + * config/mips/t-mti-linux (MULTILIB_OPTIONS): Add -mfp64 flag. + (MULTILIB_DIRNAMES): Add fp64 directory. + (MULTILIB_EXCEPTIONS): Add new exclusions. + +2013-11-07 Aldy Hernandez + + * gimplify.c (gimple_regimplify_operands): Do not set + SSA_NAME_DEF_STMT. + * graphite-sese-to-poly.c (remove_simple_copy_phi): Same. + (rewrite_close_phi_out_of_ssa): Same. + (rewrite_phi_out_of_ssa): Same. + (rewrite_degenerate_phi): Same. + (handle_scalar_deps_crossing_scop_limits): Same. + * tree-if-conv.c (predicate_scalar_phi): Same. + * tree-parloops.c (create_loads_for_reductions): Same. + (create_final_loads_for_reduction): Same. + (create_loads_and_stores_for_name): Same. + (transform_to_exit_first_loop): Same. + (create_parallel_loop): Same. + * tree-ssa-loop-im.c + (move_computations_dom_walker::before_dom_children): Same. + * tree-ssa-loop-manip.c (rewrite_phi_with_iv): Same. + * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): Same. + * tree-ssa-propagate.c (substitute_and_fold): Same. + * tree-vect-loop.c (vect_finalize_reduction): Same. + * tree-vect-stmts.c (vectorizable_call): Same. + +2013-11-07 Mike Stump + + * config/pdp11/pdp11.c: Include dbxout.h. + * config/picochip/picochip.c: Likewise. + +2013-11-07 Cong Hou + + PR tree-optimization/56764 + * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): + Combine alias checks if it is possible to amortize the runtime + overhead. Return the number of alias checks after merging. + * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): + Use the function vect_create_cond_for_alias_checks () to check + the number of alias checks. + +2013-11-07 Jeff Law + + * varpool.c (ctor_for_folding): Fix typo in comment. + +2013-11-07 Joern Rennecke + + * config/arc/arc.c (arc_ifcvt): Use commutativity, e.g.: + reg_a := reg_b + reg_a ==> reg_a := reg_a + reg_b + +2013-11-07 Jeff Law + + * doc/invoke.texi (-fisolate-erroneous-paths): Document. + + * gimple-ssa-isolate-paths.c (gate_isolate_erroneous_paths): + No longer check if we have __builtin_trap, assume it's available. + +2013-11-07 Diego Novillo + + * attribs.c (lookup_scoped_attribute_spec): Make static. + (get_attribute_namespace): Likewise. + * builtins.c (more_const_call_expr_args_p): Move from tree.h. + (validate_arglist): Move earlier in the file. Make static. + (expand_stack_restore): Move from stmt.c + (expand_stack_save): Move from stmt.c + (rewrite_call_expr_array): Move earlier in the file. + (rewrite_call_expr_valist): Likewise. + * cfgexpand.c: Include hard-reg-set.h before tree.h + Include recog.h. + Include output.h. + (expand_asm_loc): Move from stmt.c. + (n_occurrences): Move from stmt.c. + (check_operand_nalternatives): Move from stmt.c. + (tree_conflicts_with_clobbers_p): Move from stmt.c. + (expand_asm_operands): Move from stmt.c + (expand_asm_stmt): Move from stmt.c + (expand_computed_goto): Move from stmt.c + (expand_goto): Move from stmt.c + (expand_null_return_1): Move from stmt.c + (expand_null_return): Move from stmt.c + (expand_value_return): Move from stmt.c + (expand_return): Move from stmt.c + (expand_main_function): Move from function.c + (stack_protect_prologue): Move from function.c + * cgraphclones.c (build_function_type_skip_args): Move from tree.c. + (build_function_decl_skip_args): Move from tree.c. + * explow.c (tree_expr_size): Move from tree.c. + * expr.c (addr_expr_of_non_mem_decl_p): Remove. + (fields_length): Move from tree.c. + * fold-const.c (size_low_cst): Move from tree.c. + (tree_expr_nonzero_warnv_p): Make static. Move earlier in the file. + (tree_expr_nonzero_p): Make static. Move earlier in the file. + (fold_build3_initializer_loc): Remove. + (tree_invalid_nonnegative_warnv_p): Make static. + * function.c (expand_main_function): Move to cfgexpand.c. + (stack_protect_prologue): Move to cfgexpand.c. + (set_insn_locations): Move earlier in the file. + * gimple-fold.c: Include langhooks.h. + (truth_type_for): Move from tree.c. + * print-tree.c (print_vec_tree): Remove. + * stmt.c (expand_computed_goto): Move to cfgexpand.c. + (expand_goto): Move to cfgexpand.c. + (n_occurrences): Move to cfgexpand.c. + (expand_asm_loc): Move to cfgexpand.c + (tree_conflicts_with_clobbers_p): Move to cfgexpand.c. + (expand_asm_operands): Move to cfgexpand.c. + (expand_asm_stmt): Move to cfgexpand.c. + (check_operand_nalternatives): Move to cfgexpand.c + (expand_null_return): Move to cfgexpand.c. + (expand_value_return): Move to cfgexpand.c. + (expand_null_return_1): Move to cfgexpand.c. + (expand_return): Move to cfgexpand.c. + (expand_stack_save): Move to builtins.c. + (expand_stack_restore): Move to builtins.c + * symtab.c: Include output.h. + (decl_assembler_name_hash): Move from tree.c. + (decl_assembler_name_equal): Move from tree.c. + * trans-mem.c (is_tm_safe_or_pure): Move from tree.h. + * tree-eh.c (in_array_bounds_p): Move from tree.c. + (range_in_array_bounds_p): Move from tree.c. + * tree-object-size.c (fini_object_sizes): Make static. + * tree-ssa-dom.c (iterative_hash_exprs_commutative): Move from tree.h. + * tree-vrp.c (ssa_name_nonnegative_p): Remove. + * tree.c (decl_assembler_name_equal): Move to symtab.c. + (tree_expr_size): Move to explow.c. + (decl_assembler_name_hash): Move to symtab.c. + (real_twop): Remove. + (tree_expr_size): Move to explow.c. + (stabilize_reference_1): Move earlier in the file. Make static. + (omp_remove_redundant_declare_simd_attrs): Remove. + (simple_cst_list_equal): Move earlier in the file. Make static. + (size_low_cst): Move to fold-const.c. + (build_type_no_quals): Remove. + (build_function_type_skip_args): Move to cgraphclones.c. + (build_function_decl_skip_args): Move to cgraphclones.c. + (in_array_bounds_p): Move to tree-eh.c. + (range_in_array_bounds_p): Move to tree-eh.c. + (truth_type_for): Move to gimple-fold.c. + (list_equal_p): Remove. + * tree.h (decl_assembler_name_equal): Remove. + (decl_assembler_name_hash): Remove. + (truth_type_for): Remove. + (build_type_no_quals): Remove. + (build_function_decl_skip_args): Remove. + (in_array_bounds_p): Remove. + (range_in_array_bounds_p): Remove. + (size_low_cst): Remove. + (omp_remove_redundant_declare_simd_attrs): Remove. + (tree_expr_size): Remove. + (fields_length): Remove. + (stabilize_reference_1): Remove. + (expand_goto): Remove. + (expand_stack_save): Remove. + (expand_stack_restore): Remove. + (expand_return): Remove. + (fold_build3_initializer_loc): Remove. + (tree_expr_nonzero_p): Remove. + (tree_invalid_nonnegative_warnv_p): Remove. + (tree_expr_nonzero_warnv_p): Remove. + (fold_builtin_snprintf_chk): Remove. + (validate_arglist): Remove. + (iterative_hash_exprs_commutative): Move to tree-ssa-dom.c. + (simple_cst_list_equal): Remove. + (real_twop): Remove. + (expand_main_function): Remove. + (stack_protect_prologue): Remove. + (print_vec_tree): Remove. + (lookup_scoped_attribute_spec): Remove. + (get_attribute_namespace): Remove. + (expand_computed_goto): Remove. + (expand_asm_stmt): Remove. + (list_equal_p): Remove. + (ssa_name_nonnegative_p): Remove. + (fini_object_sizes): Remove. + (addr_expr_of_non_mem_decl_p): Remove. + (is_tm_safe_or_pure): Move to trans-mem.c. + (more_const_call_expr_args_p): Remove. + (save_vtable_map_decl): Remove. + +2013-11-07 Thomas Schwinge + + * doc/sourcebuild.texi (Top Level) : GNU ld can use + linker plugins, too. + + * config/arc/arc.h (LINK_COMMAND_SPEC): For -ftree-parallelize-loops=*, + link to libgomp and its dependencies. + * config/ia64/hpux.h (LIB_SPEC): Likewise. + * config/pa/pa-hpux11.h (LIB_SPEC): Likewise. + * config/pa/pa64-hpux.h (LIB_SPEC): Likewise. + * gcc.c (GOMP_SELF_SPECS): Update comment about libgomp's dependencies. + +2013-11-07 Jakub Jelinek + + * tree-ssa-loop-niter.c: Include tree-ssanames.h. + (determine_value_range): Add loop argument. Use get_range_info to + improve range. + (bound_difference): Adjust caller. + +2013-11-07 Richard Biener + Jakub Jelinek + + * tree-vrp.c (find_assert_locations): Pre-seed live bitmaps for loop + latches from header PHI arguments from the latch edge. + +2013-11-07 Paolo Carlini + + PR c++/58176 + * varasm.c (output_constant): Handle NULLPTR_TYPE. + +2013-11-07 H.J. Lu + + * config/i386/i386.c (ix86_expand_set_or_movmem): Don't set + misaligned_prologue_used when it has been set. + +2013-11-07 Yury Gribov + Jakub Jelinek + + PR sanitizer/59029 + * asan.c (get_mem_refs_of_builtin_call): Allow + integer literals as addresses in instrumented builtins. + +2013-11-07 Kyrylo Tkachov + + * config/aarch64/aarch64.c (aarch64_legitimize_reload_address): + Explain why plus_constant is not used. + +2013-11-07 Richard Biener + + * tree-ssa-ccp.c (canonicalize_float_value): Rename to ... + (canonicalize_value): ... this. Also handle stripping of + TREE_OVERFLOW. + (get_value, set_lattice_value, get_value_for_expr): Adjust. + * gimple-fold.c (canonicalize_constructor_val): Strip TREE_OVERFLOW. + * tree-ssa-threadedge.c (set_ssa_name_value): Likewise. + +2013-11-07 Richard Biener + + * tree-dfa.c (get_ref_base_and_extent): Fix casting. + +2013-11-07 H.J. Lu + + PR target/59034 + * config/i386/i386.md (push peepholer/splitter): Use Pmode + with stack_pointer_rtx. + +2013-11-07 Bin Cheng + + * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Check equality + using operand_equal_p. + +2013-11-07 Bin Cheng + + * tree-ssa-loop-ivopts.c (alloc_iv): Lower address expressions. + * tree-affine.c (get_inner_reference_aff): Return base. + * tree-affine.h (get_inner_reference_aff): Change prototype. + +2013-11-06 Tobias Burnus + + * doc/invoke.texi (Wdate-time): Fix typo. + +2013-11-06 Oleg Endo + + * config/sh/sh.md (addsf3, divsf3, divsf3_i, rsqrtsf2, cmpgtdf_t, + cmpeqdf_t, *ieee_ccmpeqdf_t, negdf2, sqrtdf2, absdf2): Use + fp_arith_reg_operand instead of arith_reg_operand. + +2013-11-06 Oleg Endo + + * config/sh/sh.md (adddi3): Remove empty constraints. + Remove can_create_pseudo_p and arith_reg_operand check. + (adddi3_compact, subdi3_compact, *negdi2): Remove constraints. + Split before reload. + +2013-11-06 Jeff Law + Tom Tromey + + * gdbinit.in: Disable strict type checking. + +2013-11-06 Vladimir Makarov + + * tree-pass.h (make_pass_live_range_shrinkage): New external. + * timevar.def (TV_LIVE_RANGE_SHRINKAGE): New. + * sched-rgn.c (gate_handle_live_range_shrinkage): New. + (rest_of_handle_live_range_shrinkage): Ditto + (class pass_live_range_shrinkage): Ditto. + (pass_data_live_range_shrinkage): Ditto. + (make_pass_live_range_shrinkage): Ditto. + * sched-int.h (initialize_live_range_shrinkage): New prototype. + (finish_live_range_shrinkage): Ditto. + * sched-deps.c (create_insn_reg_set): Make void return value. + * passes.def: Add pass_live_range_shrinkage. + * ira.c (update_equiv_regs): Don't move if flag_live_range_shrinkage. + * haifa-sched.c (live_range_shrinkage_p): New. + (initialize_live_range_shrinkage, finish_live_range_shrinkage): + New functions. + (rank_for_schedule): Add code for pressure relief through live + range shrinkage. + (schedule_insn): Print more debug info. + (sched_init): Setup SCHED_PRESSURE_WEIGHTED for pressure relief + through live range shrinkage. + * doc/invoke.texi (-flive-range-shrinkage): New. + * common.opt (flive-range-shrinkage): New. + +2013-11-06 Uros Bizjak + + PR target/59021 + * config/i386/i386.c (ix86_avx_u128_mode_needed): Require + AVX_U128_DIRTY mode for call_insn RTXes that use AVX256 registers. + (ix86_avx_u128_mode_needed): Return AVX_U128_DIRTY mode for call_insn + RTXes that return in AVX256 register. + +2013-11-06 Richard Biener + + PR tree-optimization/58653 + * tree-predcom.c (ref_at_iteration): Rewrite to generate a MEM_REF. + (prepare_initializers_chain): Adjust. + +2013-11-06 Andrew MacLeod + + * gimple.h (block_in_transaction): Move to basic-block.h and rename. + (gimple_in_transaction): Use bb_in_transaction. + * basic-block.h (bb_in_transaction): Relocate here and rename. + * tree-ssa-loop-im.c (execute_sm): Use bb_in_transaction. + +2013-11-06 Richard Biener + + * tree.c (drop_tree_overflow): New function. + * tree.h (drop_tree_overflow): Declare. + * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW. + * tree-vrp.c (range_int_cst_singleton_p): Use + is_overflow_infinity instead of testing TREE_OVERFLOW. + (extract_range_from_assert): Likewise. + (zero_nonzero_bits_from_vr): Likewise. + (extract_range_basic): Likewise. + (register_new_assert_for): Use drop_tree_overflow. + (vrp_visit_phi_node): Likewise. + +2013-11-06 Eric Botcazou + + * config/i386/i386.c (ix86_expand_prologue): Optimize stack + checking for leaf functions without dynamic stack allocation. + * config/ia64/ia64.c (ia64_emit_probe_stack_range): Adjust. + (ia64_expand_prologue): Likewise. + * config/mips/mips.c (mips_expand_prologue): Likewise. + * config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise. + * config/sparc/sparc.c (sparc_expand_prologue): Likewise. + (sparc_flat_expand_prologue): Likewise. + +2013-11-06 James Greenhalgh + + * config/aarch64/arm_neon.h (__ST2_LANE_FUNC): Better model data size. + (__ST3_LANE_FUNC): Likewise. + (__ST4_LANE_FUNC): Likewise. + +2013-11-06 Nick Clifton + + * config/msp430/msp430.h (TARGET_CPU_CPP_BUILTINS): Define the + name returned by msp430_mcu_name. + (LIB_SPEC): If a -T option has not been specified then set a + default, mcu-specific, linker script. + * config/msp430/t-msp430 (MULTILIB_MATCHES): Add more mcu names. + * config/msp430/msp430.c (msp430x_names): Likewise. + Alpha sort the names for ease of comparison. + (msp430_mcu_name): New function: Returns a string suitable for + use as a C preprocessor symbol based upon the name of the MCU + being targeted. + (msp430_option_override): Accept msp430x and msp430xv2 as generic + mcu names. + * config/msp430/msp430-protos.h (msp430_mcu_name): Prototype. + + * gcc.c (do_spec_1): Do not insert a space after a %* substitution + unless it is the last part of a spec substring. + * doc/invoke.texi (Spec Files): Document space insertion + behaviour of %*. + +2013-11-06 Christian Bruel + + * config/sh/sh-mem.cc (sh_expand_cmpnstr, sh_expand_cmpstr): + Factorize probabilities, Use adjust_address instead of + adjust_automodify_address when possible. Enable for optimize. + (sh_expand_strlen): New function. + * config/sh/sh-protos.h (sh_expand_strlen): Declare. + * config/sh/sh.md (strlensi): New pattern. + (UNSPEC_BUILTIN_STRLEN): Define. + +2013-11-06 Jakub Jelinek + + PR middle-end/58970 + * expr.c (get_bit_range): Handle *offset == NULL_TREE. + (expand_assignment): If *bitpos is negative, set *offset + and adjust *bitpos, so that it is not negative. + +2013-11-06 Ganesh Gopalasubramanian + + * config/i386/bdver3.md : Added two additional decoder units + to support issue rate of 4 and remodeled vector unit. + * config/i386/i386.c (ix86_issue_rate): Issue rate for BD + architectures is set to 4. + * config/i386/i386.c (ia32_multipass_dfa_lookahead): DFA + lookahead is set to 4 for BD architectures. + +2013-11-05 Bill Schmidt + + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Remove restriction against use of VSX instructions when generating + code for little endian mode. + +2013-11-05 Bill Schmidt + + * config/rs6000/altivec.md (mulv4si3): Ensure we generate vmulouh + for both big and little endian. + (mulv8hi3): Swap input operands for merge high and merge low + instructions for little endian. + +2013-11-05 Bill Schmidt + + * config/rs6000/altivec.md (vec_widen_umult_even_v16qi): Change + define_insn to define_expand that uses even patterns for big + endian and odd patterns for little endian. + (vec_widen_smult_even_v16qi): Likewise. + (vec_widen_umult_even_v8hi): Likewise. + (vec_widen_smult_even_v8hi): Likewise. + (vec_widen_umult_odd_v16qi): Likewise. + (vec_widen_smult_odd_v16qi): Likewise. + (vec_widen_umult_odd_v8hi): Likewise. + (vec_widen_smult_odd_v8hi): Likewise. + (altivec_vmuleub): New define_insn. + (altivec_vmuloub): Likewise. + (altivec_vmulesb): Likewise. + (altivec_vmulosb): Likewise. + (altivec_vmuleuh): Likewise. + (altivec_vmulouh): Likewise. + (altivec_vmulesh): Likewise. + (altivec_vmulosh): Likewise. + +2013-11-05 Mike Stump + + * Makefile.in (mostlyclean): Remove c-family objects. + +2013-11-05 Ian Lance Taylor + + * config/i386/sync.md (atomic_compare_and_swap_doubleword): + If possible, add .cfi directives to record change to bx. + * config/i386/i386.c (ix86_emit_cfi): New function. + * config/i386/i386-protos.h (ix86_emit_cfi): Declare. + +2013-11-05 Steven Bosscher + + * rtlanal.c (tablejump_p): Expect a JUMP_TABLE_DATA to always follow + immediately after a label for a tablejump pattern. + + * config/arm/arm.c (is_jump_table): Remove. + (create_fix_barrier): Use tablejump_p instead. + (arm_reorg): Likewise. + (thumb1_output_casesi): Expect JUMP_TABLE_DATA to always be NEXT_INSN. + (thumb2_output_casesi): Likewise. + * config/aarch64/aarch64.c (aarch64_output_casesi): Likewise. + * config/sh/sh.md (casesi_worker_1, casesi_worker_2, + casesi_shift_media, casesi_load_media): Likewise. + * config/iq2000/iq2000.md: Likewise (in anonymous define_insn). + * config/microblaze/microblaze.md: Likewise. + +2013-11-05 Tobias Burnus + + * doc/invoke.texi (-Wdate-time): Document. + +2013-11-05 Richard Sandiford + + * double-int.c (lshift_double, rshift_double): Remove + SHIFT_COUNT_TRUNCATED handling. + +2013-11-05 Jeff Law + + * Makefile.in (OBJS): Add gimple-ssa-isolate-paths.o + * common.opt (-fisolate-erroneous-paths): Add option and documentation. + * gimple-ssa-isolate-paths.c: New file. + * gimple.c (check_loadstore): New function. + (infer_nonnull_range): Moved into gimple.c from tree-vrp.c + Verify OP is in the argument list and the argument corresponding + to OP is a pointer type. Use operand_equal_p rather than + pointer equality when testing if OP is on the nonnull list. + Use check_loadstore rather than count_ptr_derefs. Handle + GIMPLE_RETURN statements. + * tree-vrp.c (infer_nonnull_range): Remove. + * gimple.h (infer_nonnull_range): Declare. + * opts.c (default_options_table): Add OPT_fisolate_erroneous_paths. + * passes.def: Add pass_isolate_erroneous_paths. + * timevar.def (TV_ISOLATE_ERRONEOUS_PATHS): New timevar. + * tree-pass.h (make_pass_isolate_erroneous_paths): Declare. + * tree-ssa.c (struct count_ptr_d): Remove. + (count_ptr_derefs, count_uses_and_derefs): Remove. + * tree-ssa.h (count_uses_and_derefs): Remove. + +2013-11-05 Jakub Jelinek + + PR rtl-optimization/58997 + * loop-iv.c (iv_subreg): For IV_UNKNOWN_EXTEND, expect + get_iv_value to be in iv->mode rather than iv->extend_mode. + (iv_extend): Likewise. Otherwise, if iv->extend != extend, + use lowpart_subreg on get_iv_value before calling simplify_gen_unary. + * loop-unswitch.c (may_unswitch_on): Make sure op[i] is in the right + mode. + +2013-11-05 Andrew MacLeod + + * gimple.h: Move some prototypes to gimple-expr.h and add to include + list. + (extract_ops_from_tree, gimple_call_addr_fndecl, is_gimple_reg_type): + Move to gimple-expr.h. + * gimple-expr.h: New file. Relocate some prototypes from gimple.h. + (types_compatible_p, is_gimple_reg_type, is_gimple_variable, + is_gimple_id, virtual_operand_p, is_gimple_addressable, + is_gimple_constant, extract_ops_from_tree, gimple_call_addr_fndecl): + Relocate here. + * gimple.c (extract_ops_from_tree_1, gimple_cond_get_ops_from_tree, + gimple_set_body, gimple_body, gimple_has_body_p, is_gimple_lvalue, + is_gimple_condexpr, is_gimple_addressable, is_gimple_constant, + is_gimple_address, is_gimple_invariant_address, + is_gimple_ip_invariant_address, is_gimple_min_invariant, + is_gimple_ip_invariant, is_gimple_variable, is_gimple_id, + virtual_operand_p, is_gimple_reg, is_gimple_val, is_gimple_asm_val, + is_gimple_min_lval, is_gimple_call_addr, is_gimple_mem_ref_addr, + gimple_decl_printable_name, useless_type_conversion_p, + types_compatible_p, gimple_can_coalesce_p, copy_var_decl): Move to + gimple-expr.[ch]. + * gimple-expr.c: New File. + (useless_type_conversion_p, gimple_set_body, gimple_body, + gimple_has_body_p, gimple_decl_printable_name, copy_var_decl, + gimple_can_coalesce_p, extract_ops_from_tree_1, + gimple_cond_get_ops_from_tree, is_gimple_lvalue, is_gimple_condexpr, + is_gimple_address, is_gimple_invariant_address, + is_gimple_ip_invariant_address, is_gimple_min_invariant, + is_gimple_ip_invariant, is_gimple_reg, is_gimple_val, + is_gimple_asm_val, is_gimple_min_lval, is_gimple_call_addr, + is_gimple_mem_ref_addr): Relocate here. + * Makefile.in (OBJS): Add gimple-expr.o. + +2013-11-05 David Malcolm + + * gengtype-parse.c (struct_field_seq): Support empty structs. + +2013-11-05 Uros Bizjak + + * config/i386/t-rtems (MULTILIB_MATCHES): Fix option typos. + +2013-11-05 Uros Bizjak + + * config/i386/i386-c.c (ix86_target_macros): Define _SOFT_FLOAT + for !TARGET_80387. + * config/i386/rtemself.h (TARGET_OS_CPP_BUILTINS): Do not define + _SOFT_FLOAT here. + (LONG_DOUBLE_TYPE_SIZE): New define. + (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Ditto. + +2013-11-05 Paolo Carlini + + PR c++/58724 + * doc/extend.texi [visibility ("visibility_type")]: Add example + about visibility attribute on namespace declaration. + +2013-11-05 Richard Biener + + PR ipa/58492 + * passes.def (all_passes): Start with pass_fixup_cfg again. + +2013-11-05 Richard Biener + + PR tree-optimization/58955 + * tree-loop-distribution.c (pg_add_dependence_edges): Fix + edge direction. + +2013-11-05 Bill Schmidt + + * config/rs6000/vector.md (vec_pack_sfix_trunc_v2df): Adjust for + little endian. + (vec_pack_ufix_trunc_v2df): Likewise. + +2013-11-05 H.J. Lu + + PR middle-end/58981 + * doc/md.texi (@code{movmem@var{m}}): Specify Pmode as mode of + pattern, instead of word_mode. + + * expr.c (emit_block_move_via_movmem): Don't use mode wider than + Pmode for size. + (set_storage_via_setmem): Likewise. + +2013-11-05 Andrew MacLeod + + * tree-outof-ssa.c (queue_phi_copy_p): Combine phi_ssa_name_p from + gimple.h and the rest of the condition in eliminate_build. + (eliminate_build): Call new routine. + * gimple.h (phi_ssa_name_p): Delete. + +2013-11-05 Trevor Saunders + + * vec.c (vec_prefix::calculate_allocation): Don't try to handle the + case of no prefix and reserving zero slots, because when that's the + case we'll never get here. + * vec.h (va_heap::reserve): Don't try and handle + vec_prefix::calculate_allocation returning zero because that should + never happen. + +2013-11-05 Richard Biener + + PR middle-end/58941 + * tree-dfa.c (get_ref_base_and_extent): Merge common code + in MEM_REF and TARGET_MEM_REF handling. Make sure to + process trailing array detection before diving into the + view-converted object (and possibly apply some extra offset). + +2013-11-05 Joseph Myers + + * config/i386/i386.c (ix86_float_exceptions_rounding_supported_p): + New function. + (TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P): Define. + +2013-11-05 Marc Glisse + + PR tree-optimization/58958 + * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Use + get_addr_base_and_unit_offset instead of get_ref_base_and_extent. + +2013-11-05 Marc Glisse + + * tree-ssa-alias.h (ranges_overlap_p): Handle negative offsets. + * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Likewise. + +2013-11-05 Jakub Jelinek + + PR tree-optimization/58984 + * ipa-prop.c (ipa_load_from_parm_agg_1): Add SIZE_P argument, + set *SIZE_P if non-NULL on success. + (ipa_load_from_parm_agg, ipa_analyze_indirect_call_uses): Adjust + callers. + (ipcp_transform_function): Likewise. Punt if size of access + is different from TYPE_SIZE on v->value's type. + +2013-11-05 Tobias Burnus + + * doc/invoke.texi (-fopenmp-simd): Document new option. + * gimplify.c (gimplify_body): Accept -fopenmp-simd. + * omp-low.c (execute_expand_omp, execute_lower_omp): Ditto. + * tree.c (attribute_value_equal): Ditto. + +2013-11-04 Wei Mi + + * sched-rgn.c (add_branch_dependences): Keep insns in + a SCHED_GROUP at the end of BB to remain their location. + +2013-11-04 Wei Mi + + * config/i386/i386.c (memory_address_length): Extract a part + of code to rip_relative_addr_p. + (rip_relative_addr_p): New Function. + (ix86_macro_fusion_p): Ditto. + (ix86_macro_fusion_pair_p): Ditto. + * config/i386/i386.h: Add new tune features about macro-fusion. + * config/i386/x86-tune.def (DEF_TUNE): Ditto. + * doc/tm.texi: Generated. + * doc/tm.texi.in: Ditto. + * haifa-sched.c (try_group_insn): New Function. + (group_insns_for_macro_fusion): Ditto. + (sched_init): Call group_insns_for_macro_fusion. + * target.def: Add two hooks: macro_fusion_p and + macro_fusion_pair_p. + +2013-11-04 Kostya Serebryany + + Update to match the changed asan API. + * asan.c (asan_function_start): New function. + (asan_emit_stack_protection): Update the string stored in the + stack red zone to match new API. Store the PC of the current + function in the red zone. + (asan_global_struct): Update the __asan_global definition to match + the new API. + (asan_add_global): Ditto. + * asan.h (asan_function_start): New prototype. + * final.c (final_start_function): Call asan_function_start. + * sanitizer.def (BUILT_IN_ASAN_INIT): Rename __asan_init_v1 + to __asan_init_v3. + +2013-11-04 Wei Mi + + * config/i386/i386-c.c (ix86_target_macros_internal): Separate + PROCESSOR_COREI7_AVX out from PROCESSOR_COREI7. + * config/i386/i386.c (ix86_option_override_internal): Ditto. + (ix86_issue_rate): Ditto. + (ix86_adjust_cost): Ditto. + (ia32_multipass_dfa_lookahead): Ditto. + (ix86_sched_init_global): Ditto. + (get_builtin_code_for_version): Ditto. + * config/i386/i386.h (enum target_cpu_default): Ditto. + (enum processor_type): Ditto. + * config/i386/x86-tune.def (DEF_TUNE): Ditto. + +2013-11-04 Vladimir Makarov + + PR rtl-optimization/58967 + * config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Remove + !lra_in_progress for mode sizes bigger word. + +2013-11-04 Bill Schmidt + + * config/rs6000/altivec.md (vec_widen_umult_hi_v16qi): Swap + arguments to merge instruction for little endian. + (vec_widen_umult_lo_v16qi): Likewise. + (vec_widen_smult_hi_v16qi): Likewise. + (vec_widen_smult_lo_v16qi): Likewise. + (vec_widen_umult_hi_v8hi): Likewise. + (vec_widen_umult_lo_v8hi): Likewise. + (vec_widen_smult_hi_v8hi): Likewise. + (vec_widen_smult_lo_v8hi): Likewise. + +2013-11-04 Ian Lance Taylor + + * builtins.def (ATTR_NOTHROWCALL_LEAF_LIST): Define. + * sync-builtins.def: Use ATTR_NOTHROWCALL_LEAF_LIST for all sync + builtins that take pointers. + * lto-opts.c (lto_write_options): Write -fnon-call-exceptions if set. + * lto-wrapper.c (merge_and_complain): Collect OPT_fnon_call_exceptions. + (run_gcc): Pass -fnon-call-exceptions. + +2013-11-04 Jakub Jelinek + + * optabs.c (expand_vec_perm): Revert one incorrect line from + 2013-10-31 change. + + PR tree-optimization/58978 + * tree-vrp.c (all_imm_uses_in_stmt_or_feed_cond): Don't modify + use_stmt by single_imm_use directly. Only call single_imm_use + on SSA_NAMEs. + +2013-11-04 Vladimir Makarov + + PR rtl-optimization/58968 + * lra-spills.c (return_regno_p): New function. + (lra_final_code_change): Use it. + +2013-11-04 Joseph Myers + + * doc/cpp.texi (__GCC_IEC_559, __GCC_IEC_559_COMPLEX): Document macros. + * target.def (float_exceptions_rounding_supported_p): New hook. + * targhooks.c (default_float_exceptions_rounding_supported_p): New + function. + * targhooks.h (default_float_exceptions_rounding_supported_p): Declare. + * doc/tm.texi.in (TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P): + New @hook. + * doc/tm.texi: Regenerate. + * config.gcc (powerpc*-*-linux*): Set extra_objs. + * config/rs6000/rs6000-linux.c: New file. + * config/rs6000/rs6000-protos.h + (rs6000_linux_float_exceptions_rounding_supported_p): Declare. + * config/rs6000/linux.h + (TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P): New macro. + * config/rs6000/linux64.h + (TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P): Likewise. + * config/rs6000/t-linux (rs6000-linux.o): New rule. + * config/rs6000/t-linux64 (rs6000-linux.o): Likewise. + +2013-11-04 Bill Schmidt + + * config/rs6000/vsx.md (*vsx_le_perm_store_ for VSX_D): + Replace the define_insn_and_split with a define_insn and two + define_splits, with the split after reload re-permuting the source + register to its original value. + (*vsx_le_perm_store_ for VSX_W): Likewise. + (*vsx_le_perm_store_v8hi): Likewise. + (*vsx_le_perm_store_v16qi): Likewise. + +2013-11-04 Bill Schmidt + + * config/rs6000/vector.md (vec_pack_trunc_v2df): Adjust for + little endian. + +2013-11-04 Jakub Jelinek + + PR tree-optimization/58946 + * tree-ssa-reassoc.c (maybe_optimize_range_tests): Update all + bbs with bbinfo[idx].op != NULL before all blocks with + bbinfo[idx].op == NULL. + +2013-11-04 Richard Sandiford + + * config/avr/avr-log.c (avr_double_int_pop_digit): Delete. + (avr_dump_double_int_hex): Likewise. + (avr_log_vadump): Remove %D and %X handling. + * config/avr/avr.c (avr_double_int_push_digit): Delete. + (avr_map_op_t): Change map from double_int to unsigned int. + (avr_map_op): Update accordingly. + (avr_map, avr_map_metric, avr_has_nibble_0xf, avr_map_decompose) + (avr_move_bits, avr_out_insert_bits, avr_fold_builtin): Operate on + unsigned ints rather than double_ints. + +2013-11-03 Marek Polacek + + Implement -fsanitize=vla-bound. + * opts.c (common_handle_option): Handle vla-bound. + * sanitizer.def (BUILT_IN_UBSAN_HANDLE_VLA_BOUND_NOT_POSITIVE): Define. + * flag-types.h (enum sanitize_code): Add SANITIZE_VLA. + * asan.c (initialize_sanitizer_builtins): Build BT_FN_VOID_PTR_PTR. + +2013-11-02 Bill Schmidt + + * config/rs6000/rs6000.c (rs6000_expand_vector_set): Adjust for + little endian. + +2013-11-02 Uros Bizjak + + * config/i386/constraints.md (Ts, Tv): New address constrains. + * config/i386/i386.md (*lea, *_): Use Ts + constraint for address_no_seg_operand. + * config/i386/sse.md (*avx512pf_gatherpf_mask) + (*avx512pf_gatherpf, *avx512pf_scatterpf_mask) + (*avx512pf_scatterpf, *avx2_gathersi) + (*avx2_gathersi_2, *avx2_gatherdi, *avx2_gatherdi_2) + (*avx2_gatherdi_3, *avx2_gatherdi_4) + (*avx512f_gathersi, *avx512f_gathersi_2) + (*avx512f_gatherdi, *avx512f_gatherdi_2) + (*avx512f_scattersi *avx512f_scatterdi): Use Tv + constraint for vsib_address_operand. + +2013-11-02 Steven Bosscher + + * gcse.c (pre_delete): Remove references to regmove from comments. + * recog.c: (validate_replace_rtx_1): Likewise. + * config/rl78/rl78.c: Likewise. + * config/v850/v850.h: Likewise, and remove unused ENABLE_REGMOVE_PASS. + * common/config/m32r/m32r-common.c: Don't manipulate OPT_fregmove. + * common/config/mmix/mmix-common.c: Likewise. + +2013-11-01 Trevor Saunders + + * function.c (reorder_blocks): Convert block_stack to a stack_vec. + * gimplify.c (gimplify_compound_lval): Likewise. + * graphite-clast-to-gimple.c (gloog): Likewise. + * graphite-dependences.c (loop_is_parallel_p): Likewise. + * graphite-scop-detection.c (scopdet_basic_block_info): Likewise. + (limit_scop); Likewise. + (build_scops): Likewise. + (dot_scop): Likewise. + * graphite-sese-to-poly.c (sese_dom_walker): Likewise. + (build_scop_drs): Likewise. + (insert_stmts): Likewise. + (insert_out_of_ssa_copy): Likewise. + (remove_phi): Likewise. + (rewrite_commutative_reductions_out_of_ssa_close_phi): Likewise. + * hw-doloop.c (discover_loop): Likewise. + * tree-call-cdce.c (shrink_wrap_one_built_in_call): Likewise. + * tree-dfa.c (dump_enumerated_decls): Likewise. + * tree-if-conv.c (if_convertable_loop_p): Likewise. + * tree-inline.c (tree_function_versioning): Likewise. + * tree-loop-distribution.c (build_rdg): Likewise. + (rdg_flag_vertex_and_dependent): Likewise. + (distribute_loop): Likewise. + * tree-parloops.c (loop_parallel_p): Likewise. + (eliminate_local_variables): Likewise. + (separate_decls_in_region): Likewise. + * tree-predcom.c (tree_predictive_commoning_loop): Likewise. + * tree-ssa-phiopt.c (cond_if_else_store_replacement): Likewise. + * tree-ssa-uncprop.c (uncprop_dom_walker): Likewise. + * tree-vect-loop.c (vect_analyze_scaler_cycles_1): Likewise. + * tree-vect-patterns.c (vect_pattern_recog): Likewise. + * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise. + (vectorizable_condition): Likewise. + +2013-11-01 Uros Bizjak + + * configure.ac (HAVE_AS_IX86_INTERUNIT_MOVQ): Always define as 0/1. + * configure: Regenerate. + * config/i386/i386.md (*movdi_internal): Change + HAVE_AS_IX86_INTERUNIT_MOVQ to runtime check. + (*movdf_internal): Ditto. + * config/i386/mmx.md (*mov_internal): Ditto. + * config/i386/sse.md (vec_concatv2di): Output interunit movq + for HAVE_AS_IX86_INTERUNIT_MOVQ targets. + +2013-10-31 Robert Suchanek + + * lra-spills.c (assign_spill_hard_regs): Remove statement terminator + after comment. + +2013-10-31 David Malcolm + + Automated part of renaming of symtab_node_base to symtab_node. + + Patch autogenerated by rename_symtab.py from + https://github.com/davidmalcolm/gcc-refactoring-scripts + revision 58bb219cc090b2f4516a9297d868c245495ee622 + with ChangeLog entry fixed up by hand. + + * cgraph.c (x_cgraph_nodes_queue): Rename symtab_node_base to + symtab_node. + (cgraph_node_for_asm): Likewise. + * cgraph.h (symtab_node_base): Likewise. + (cgraph_node): Likewise. + (varpool_node): Likewise. + (is_a_helper ::test): Likewise. + (is_a_helper ::test): Likewise. + (symtab_nodes): Likewise. + (symtab_register_node): Likewise. + (symtab_unregister_node): Likewise. + (symtab_remove_node): Likewise. + (symtab_get_node): Likewise. + (symtab_node_for_asm): Likewise. + (symtab_node_asm_name): Likewise. + (symtab_node_name): Likewise. + (symtab_insert_node_to_hashtable): Likewise. + (symtab_add_to_same_comdat_group): Likewise. + (symtab_dissolve_same_comdat_group_list): Likewise. + (dump_symtab_node): Likewise. + (debug_symtab_node): Likewise. + (dump_symtab_base): Likewise. + (verify_symtab_node): Likewise. + (verify_symtab_base): Likewise. + (symtab_used_from_object_file_p): Likewise. + (symtab_alias_ultimate_target): Likewise. + (symtab_resolve_alias): Likewise. + (fixup_same_cpp_alias_visibility): Likewise. + (symtab_for_node_and_aliases): Likewise. + (symtab_nonoverwritable_alias): Likewise. + (availability symtab_node_availability): Likewise. + (symtab_semantically_equivalent_p): Likewise. + (fixup_same_cpp_alias_visibility): Likewise. + (symtab_prevail_in_asm_name_hash): Likewise. + (cgraph): Likewise. + (varpool): Likewise. + (varpool_first_variable): Likewise. + (varpool_next_variable): Likewise. + (varpool_first_static_initializer): Likewise. + (varpool_next_static_initializer): Likewise. + (varpool_first_defined_variable): Likewise. + (varpool_next_defined_variable): Likewise. + (cgraph_first_defined_function): Likewise. + (cgraph_next_defined_function): Likewise. + (cgraph_first_function): Likewise. + (cgraph_next_function): Likewise. + (cgraph_first_function_with_gimple_body): Likewise. + (cgraph_next_function_with_gimple_body): Likewise. + (symtab_alias_target): Likewise. + (symtab_real_symbol_p): Likewise. + (symtab_can_be_discarded): Likewise. + * cgraphbuild.c (mark_address): Likewise. + (mark_load): Likewise. + (mark_store): Likewise. + * cgraphunit.c (decide_is_symbol_needed): Likewise. + (first): Likewise. + (enqueue_node): Likewise. + (referred_to_p): Likewise. + (cgraph_process_same_body_aliases): Likewise. + (analyze_functions): Likewise. + (handle_alias_pairs): Likewise. + (output_weakrefs): Likewise. + (compile): Likewise. + * gimple-fold.c (can_refer_decl_in_current_unit_p): Likewise. + * ipa-inline-analysis.c (inline_write_summary): Likewise. + * ipa-prop.c (remove_described_reference): Likewise. + (try_decrement_rdesc_refcount): Likewise. + (ipa_edge_duplication_hook): Likewise. + * ipa-ref.c (ipa_record_reference): Likewise. + (ipa_maybe_record_reference): Likewise. + (ipa_clone_ref): Likewise. + (ipa_clone_references): Likewise. + (ipa_clone_referring): Likewise. + (ipa_find_reference): Likewise. + (ipa_remove_stmt_references): Likewise. + (ipa_clear_stmts_in_references): Likewise. + * ipa-ref.h (symtab_node_base): Likewise. + (ipa_ref): Likewise. + (ipa_record_reference): Likewise. + (ipa_maybe_record_reference): Likewise. + (ipa_clone_references): Likewise. + (ipa_clone_referring): Likewise. + (ipa_clone_ref): Likewise. + (ipa_find_reference): Likewise. + (ipa_remove_stmt_references): Likewise. + (ipa_clear_stmts_in_references): Likewise. + * ipa-reference.c (ipa_reference_write_optimization_summary): + Likewise. + * ipa.c (enqueue_node): Likewise. + (process_references): Likewise. + (walk_polymorphic_call_targets): Likewise. + (symtab_remove_unreachable_nodes): Likewise. + (address_taken_from_non_vtable_p): Likewise. + (comdat_can_be_unshared_p_1): Likewise. + (comdat_can_be_unshared_p): Likewise. + (can_replace_by_local_alias): Likewise. + (function_and_variable_visibility): Likewise. + * is-a.h: Likewise (within example in comment). + * lto-cgraph.c (input_cgraph_opt_summary): Likewise. + (lto_symtab_encoder_encode): Likewise. + (lto_symtab_encoder_delete_node): Likewise. + (lto_symtab_encoder_in_partition_p): Likewise. + (lto_set_symtab_encoder_in_partition): Likewise. + (output_refs): Likewise. + (compute_ltrans_boundary): Likewise. + (output_symtab): Likewise. + (input_node): Likewise. + (input_ref): Likewise. + (input_edge): Likewise. + (input_cgraph_1): Likewise. + (input_refs): Likewise. + (output_cgraph_opt_summary): Likewise. + (input_node_opt_summary): Likewise. + (input_cgraph_opt_section): Likewise. + * lto-section-in.c (lto_free_function_in_decl_state_for_node): + Likewise. + * lto-streamer-out.c (lto_output): Likewise. + (output_symbol_p): Likewise. + (produce_symtab): Likewise. + * lto-streamer.h (lto_encoder_entry): Likewise. + (lto_free_function_in_decl_state_for_node): Likewise. + (lto_symtab_encoder_encode): Likewise. + (lto_symtab_encoder_delete_node): Likewise. + (lto_symtab_encoder_in_partition_p): Likewise. + (lto_set_symtab_encoder_in_partition): Likewise. + (lto_symtab_encoder_lookup): Likewise. + (lsei_node): Likewise. + (lto_symtab_encoder_deref): Likewise. + * symtab.c (symtab_hash): Likewise. + (assembler_name_hash): Likewise. + (symtab_nodes): Likewise. + (hash_node): Likewise. + (eq_node): Likewise. + (hash_node_by_assembler_name): Likewise. + (eq_assembler_name): Likewise. + (insert_to_assembler_name_hash): Likewise. + (unlink_from_assembler_name_hash): Likewise. + (symtab_prevail_in_asm_name_hash): Likewise. + (symtab_register_node): Likewise. + (symtab_insert_node_to_hashtable): Likewise. + (symtab_unregister_node): Likewise. + (symtab_get_node): Likewise. + (symtab_remove_node): Likewise. + (symtab_initialize_asm_name_hash): Likewise. + (symtab_node_for_asm): Likewise. + (symtab_add_to_same_comdat_group): Likewise. + (symtab_dissolve_same_comdat_group_list): Likewise. + (symtab_node_asm_name): Likewise. + (symtab_node_name): Likewise. + (dump_symtab_base): Likewise. + (dump_symtab_node): Likewise. + (dump_symtab): Likewise. + (debug_symtab_node): Likewise. + (verify_symtab_base): Likewise. + (verify_symtab_node): Likewise. + (verify_symtab): Likewise. + (symtab_used_from_object_file_p): Likewise. + (symtab_node_availability): Likewise. + (symtab_alias_ultimate_target): Likewise. + (fixup_same_cpp_alias_visibility): Likewise. + (symtab_resolve_alias): Likewise. + (symtab_for_node_and_aliases): Likewise. + (symtab_for_node_and_aliases): Likewise. + (symtab_nonoverwritable_alias_1): Likewise. + (symtab_nonoverwritable_alias): Likewise. + (symtab_semantically_equivalent_p): Likewise. + * value-prof.c (init_node_map): Likewise. + * varasm.c (find_decl): Likewise. + * varpool.c (varpool_node_for_asm): Likewise. + (varpool_remove_unreferenced_decls): Likewise. + +2013-10-31 David Malcolm + + Manual part of renaming of symtab_node_base to symtab_node. + + * ipa-ref.h (symtab_node): Remove typedef to pointer type, as it + clashes with the preferred name for the base class. + (const_symtab_node): Remove redundant typedef. + +2013-10-31 Jakub Jelinek + + * optabs.c (expand_vec_perm): Avoid vector mode punning + SUBREGs in SET_DEST. + * expmed.c (store_bit_field_1): Likewise. + * config/i386/sse.md (movdi_to_sse, vec_pack_sfix_trunc_v2df, + vec_pack_sfix_v2df, vec_shl_, vec_shr_, + vec_interleave_high, vec_interleave_low): Likewise. + * config/i386/i386.c (ix86_expand_vector_move_misalign, + ix86_expand_sse_movcc, ix86_expand_int_vcond, ix86_expand_vec_perm, + ix86_expand_sse_unpack, ix86_expand_args_builtin, + ix86_expand_vector_init_duplicate, ix86_expand_vector_set, + emit_reduc_half, expand_vec_perm_blend, expand_vec_perm_pshufb, + expand_vec_perm_interleave2, expand_vec_perm_pshufb2, + expand_vec_perm_vpshufb2_vpermq, + expand_vec_perm_vpshufb2_vpermq_even_odd, expand_vec_perm_even_odd_1, + expand_vec_perm_broadcast_1, expand_vec_perm_vpshufb4_vpermq2, + ix86_expand_sse2_mulv4si3, ix86_expand_pinsr): Likewise. + (expand_vec_perm_palignr): Likewise. Modify a copy of *d rather + than *d itself. + +2013-10-31 Uros Bizjak + + * config/i386/i386.c (ix86_expand_sse2_abs): Rename function arguments. + Use gcc_unreachable for unhandled modes. Do not check results of + expand_simple_binop. If not expanded to target, move the result. + +2013-10-31 Chung-Ju Wu + Shiva Chen + + * config.gcc (nds32*-*-*): Add nds32 target. + * config/nds32/nds32.c: New file. + * config/nds32/nds32.h: New file. + * config/nds32/nds32.md: New file. + * config/nds32/constants.md: New file. + * config/nds32/constraints.md: New file. + * config/nds32/iterators.md: New file. + * config/nds32/nds32-doubleword.md: New file. + * config/nds32/nds32-intrinsic.md: New file. + * config/nds32/nds32_intrinsic.h: New file. + * config/nds32/nds32-modes.def: New file. + * config/nds32/nds32-multiple.md: New file. + * config/nds32/nds32.opt: New file. + * config/nds32/nds32-opts.h: New file. + * config/nds32/nds32-protos.h: New file. + * config/nds32/nds32-peephole2.md: New file. + * config/nds32/pipelines.md: New file. + * config/nds32/predicates.md: New file. + * config/nds32/t-mlibs: New file. + * common/config/nds32: New directory and files. + + * doc/invoke.texi (NDS32 options): Document nds32 specific options. + * doc/md.texi (NDS32 family): Document nds32 specific constraints. + * doc/install.texi (Cross-Compiler-Specific Options): Document + --with-nds32-lib for nds32 target. + * doc/extend.texi (Function Attributes, Target Builtins): Document + nds32 specific attributes. + +2013-10-31 Vladimir Makarov + + * lra-constraints (process_alt_operands): Use the result + elimination register for operand when matching constraints. + +2013-10-31 Jakub Jelinek + + * tree-vrp.c (maybe_set_nonzero_bits): New function. + (remove_range_assertions): Call it. + + * tree.c (tree_ctz): New function. + * tree.h (tree_ctz): New prototype. + * tree-ssanames.h (get_range_info, get_nonzero_bits): Change + first argument from tree to const_tree. + * tree-ssanames.c (get_range_info, get_nonzero_bits): Likewise. + * tree-vectorizer.h (vect_generate_tmps_on_preheader): New prototype. + * tree-vect-loop-manip.c (vect_generate_tmps_on_preheader): No longer + static. + * expr.c (highest_pow2_factor): Reimplemented using tree_ctz. + * tree-vect-loop.c (vect_analyze_loop_operations, + vect_transform_loop): Don't force scalar loop for bound just because + number of iterations is unknown, only do it if it is not known to be + a multiple of vectorization_factor. + * builtins.c (get_object_alignment_2): Use tree_ctz on offset. + + * gimple-pretty-print.c (dump_ssaname_info): Print newline also + in case of VR_VARYING. Print get_nonzero_bits if not all ones. + * tree-ssanames.h (struct range_info_def): Add nonzero_bits field. + (set_nonzero_bits, get_nonzero_bits): New prototypes. + * tree-ssa-ccp.c (get_default_value): Use get_range_info to see if + a default def isn't partially constant. + (ccp_finalize): If after IPA, set_range_info if integral SSA_NAME + is known to be partially zero. + (evaluate_stmt): If we'd return otherwise VARYING, use get_range_info + to see if a default def isn't partially constant. + * tree-ssanames.c (set_range_info): Initialize nonzero_bits upon + creation of a range, if VR_RANGE, try to improve nonzero_bits from + the range. + (set_nonzero_bits, get_nonzero_bits): New functions. + + * tree-cfg.c (assert_unreachable_fallthru_edge_p): New function. + * tree-cfg.h (assert_unreachable_fallthru_edge_p): New prototype. + * tree-vrp.c (all_imm_uses_in_stmt_or_feed_cond): New function. + (remove_range_assertions): If ASSERT_EXPR_VAR has no other immediate + uses but in the condition and ASSERT_EXPR and the other successor of + the predecessor bb is __builtin_unreachable (), set_range_info of the + ASSERT_EXPR_VAR to the range info of the ASSERT_EXPR's lhs. + +2013-10-31 Martin Jambor + + PR rtl-optimization/58934 + Revert: + 2013-10-30 Martin Jambor + PR rtl-optimization/10474 + * ira.c (find_moveable_pseudos): Do not calculate dominance info + nor df analysis. + (interesting_dest_for_shprep): New function. + (split_live_ranges_for_shrink_wrap): Likewise. + (ira): Calculate dominance info and df analysis. Call + split_live_ranges_for_shrink_wrap. + +2013-10-31 Richard Sandiford + Yury Gribov + + PR sanitizer/58543 + * asan.c (asan_clear_shadow): Allocate a new vreg for temporary + shadow pointer to avoid clobbering the main one. + +2013-10-31 Zhenqiang Chen + + * lower-subreg.c (resolve_simple_move): Copy REG_INC note. + +2013-10-30 Vladimir Makarov + + PR bootstrap/58933 + * ira-color.c (update_costs_from_copies): Add new parameter. Use + it for calling update_costs_from_allocno. + (assign_hard_reg): Call restore_costs_from_copies only for + !retry_p. Pass new argument to update_costs_from_copies. + (color_pass): Pass new argument to update_costs_from_copies. + (ira_mark_allocation_change): Ditto. + +2013-10-30 Sharad Singhai + + PR middle-end/58134 + * opts.c (common_handle_option): Remove deprecated option + -ftree-vectorizer-verbose. + * doc/invoke.texi (Debugging Options): Ditto. + * opts-global.c (handle_common_deferred_options): Ditto. + (dump_remap_tree_vectorizer_verbose): Delete. + * common.opt: Set -ftree-vectorizer-verbose as an ignored option. + +2013-10-30 DJ Delorie + + * config/rx/rx.c (ADD_RX_BUILTIN0): New macro, used for builtins + that take no arguments. + +2013-10-30 Joern Rennecke + + PR other/58545 + * reload1.c (update_eliminables_and_spill): New function, broken + out of reload. + (reload): Use it. Check for frame size change after frame size + alignment, and call update_eliminables_and_spill first if continue-ing. + +2013-10-30 Cong Hou + + PR target/58762 + * config/i386/i386-protos.h (ix86_expand_sse2_abs): New function. + * config/i386/i386.c (ix86_expand_sse2_abs): New function. + * config/i386/sse.md: Add SSE2 support to abs (8/16/32-bit-int). + +2013-10-18 Mikael Pettersson + + PR rtl-optimization/58369 + * reload1.c (compute_reload_subreg_offset): New function. + (choose_reload_regs): Use it to pass endian-correct + offset to subreg_regno_offset. + +2013-10-30 Tobias Burnus + + PR other/33426 + * tree-cfg.c (replace_loop_annotate): Replace warning by + warning_at. + +2013-10-30 Jason Merrill + + * configure.ac (loose_warn): Add -Wno-format if + --disable-build-format-warnings. + +2013-10-30 David Malcolm + + * cgraphunit.c (analyze_functions): Split symtab_node declarations + onto multiple lines to make things easier for rename_symtab.py. + + * symtab.c (symtab_dissolve_same_comdat_group_list): Likewise. + (symtab_semantically_equivalent_p): Likewise. + +2013-10-30 Vladimir Makarov + + PR target/58784 + * lra.c (check_rtl): Remove address check before LRA work. + +2013-10-30 Marc Glisse + + * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Look for a + POINTER_PLUS_EXPR in the defining statement. + +2013-10-30 Vladimir Makarov + + * regmove.c: Remove. + * tree-pass.h (make_pass_regmove): Remove. + * timevar.def (TV_REGMOVE): Remove. + * passes.def (pass_regmove): Remove. + * opts.c (default_options_table): Remove entry for regmove. + * doc/passes.texi: Remove regmove pass description. + * doc/invoke.texi (-foptimize-register-move, -fregmove): Remove + options. + (-fdump-rtl-regmove): Ditto. + * common.opt (foptimize-register-move, fregmove): Ignore. + * Makefile.in (OBJS): Remove regmove.o. + * regmove.c: Remove. + * ira-int.h (struct ira_allocno_pref, ira_pref_t): New structure + and type. + (struct ira_allocno) New member allocno_prefs. + (ALLOCNO_PREFS): New macro. + (ira_prefs, ira_prefs_num): New external vars. + (ira_setup_alts, ira_get_dup_out_num, ira_debug_pref): New prototypes. + (ira_debug_prefs, ira_debug_allocno_prefs, ira_create_pref): Ditto. + (ira_add_allocno_pref, ira_remove_pref, ira_remove_allocno_prefs): + Ditto. + (ira_add_allocno_copy_to_list): Remove prototype. + (ira_swap_allocno_copy_ends_if_necessary): Ditto. + (ira_pref_iterator): New type. + (ira_pref_iter_init, ira_pref_iter_cond): New functions. + (FOR_EACH_PREF): New macro. + * ira.c (commutative_constraint_p): Move from ira-conflicts.c. + (ira_get_dup_out_num): Ditto. Rename from get_dup_num. Modify the + code. + (ira_setup_alts): New function. + (decrease_live_ranges_number): New function. + (ira): Call the above function. + * ira-build.c (ira_prefs, ira_prefs_num): New global vars. + (ira_create_allocno): Initialize allocno prefs. + (pref_pool, pref_vec): New static vars. + (initiate_prefs, find_allocno_pref, ira_create_pref): New + functions. + (add_allocno_pref_to_list, ira_add_allocno_pref, print_pref): Ditto. + (ira_debug_pref, print_prefs, ira_debug_prefs): Ditto. + (print_allocno_prefs, ira_debug_allocno_prefs, finish_pref): Ditto. + (ira_remove_pref, ira_remove_allocno_prefs, finish_prefs): Ditto. + (ira_add_allocno_copy_to_list): Make static. Rename to + add_allocno_copy_to_list. + (ira_swap_allocno_copy_ends_if_necessary): Make static. Rename to + swap_allocno_copy_ends_if_necessary. + (remove_unnecessary_allocnos, remove_low_level_allocnos): Call + ira_remove_allocno_prefs. + (ira_flattening): Ditto. + (ira_build): Call initiate_prefs, print_prefs. + (ira_destroy): Call finish_prefs. + * ira-color.c (struct update_cost_record): New. + (struct allocno_color_data): Add new member update_cost_records. + (update_cost_record_pool): New static var. + (init_update_cost_records, get_update_cost_record): New functions. + (free_update_cost_record_list, finish_update_cost_records): Ditto. + (struct update_cost_queue_elem): Add member from. + (initiate_cost_update): Call init_update_cost_records. + (finish_cost_update): Call finish_update_cost_records. + (queue_update_cost, get_next_update_cost): Add new param from. + (Update_allocno_cost, update_costs_from_allocno): New functions. + (update_costs_from_prefs): Ditto. + (update_copy_costs): Rename to update_costs_from_copies. + (restore_costs_from_copies): New function. + (update_conflict_hard_regno_costs): Don't go back. + (assign_hard_reg): Call restore_costs_from_copies. Add printing + more debug info. + (pop_allocnos): Add priniting more debug info. + (color_allocnos): Remove prefs for conflicting hard regs. + Call update_costs_from_prefs. + * ira-conflicts.c (commutative_constraint_p): Move to ira.c + (get_dup_num): Rename, modify, and move to ira.c + (process_regs_for_copy): Add prefs. + (add_insn_allocno_copies): Put src as first arg of + process_regs_for_copy. Remove dead code. Call ira_setup_alts. + * ira-costs.c (record_reg_classes): Modify and move code into + record_operands_costs. + (find_costs_and_classes): Create prefs for the hard reg of small + reg class. + (process_bb_node_for_hard_reg_moves): Add prefs. + +2013-10-30 Richard Biener + + PR middle-end/57100 + * basic-block.h (pre_and_rev_post_order_compute_fn): New function. + * cfganal.c (pre_and_rev_post_order_compute_fn): New function + as worker for ... + (pre_and_rev_post_order_compute): ... which now wraps it. + * graph.c (draw_cfg_nodes_no_loops): Use + pre_and_rev_post_order_compute_fn to avoid ICEing and dependence + on cfun. + +2013-10-30 Christian Bruel + + * config/sh/sh-mem.cc (sh_expand_cmpnstr): New function. + (sh_expand_cmpstr): Handle known align and schedule improvements. + * config/sh/sh-protos.h (sh_expand_cmpstrn): Declare. + * config/sh/sh.md (cmpstrnsi): New pattern. + +2013-10-30 Martin Jambor + + PR rtl-optimization/10474 + * ira.c (find_moveable_pseudos): Do not calculate dominance info + nor df analysis. + (interesting_dest_for_shprep): New function. + (split_live_ranges_for_shrink_wrap): Likewise. + (ira): Calculate dominance info and df analysis. Call + split_live_ranges_for_shrink_wrap. + +2013-10-30 Ramana Radhakrishnan + + PR target/58854 + * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Emit blockage. + +2013-10-30 Ilya Enkovich + + * tree-core.h (tree_index): Add TI_POINTER_BOUNDS_TYPE. + * tree.h (POINTER_BOUNDS_P): New. + (BOUNDED_TYPE_P): New. + (BOUNDED_P): New. + (pointer_bounds_type_node): New. + * tree.c (build_common_tree_nodes): Initialize + pointer_bounds_type_node. + * gimple.h (gimple_call_get_nobnd_arg_index): New. + (gimple_call_num_nobnd_args): New. + (gimple_call_nobnd_arg): New. + (gimple_return_retbnd): New. + (gimple_return_set_retbnd): New + * gimple.c (gimple_build_return): Increase number of ops + for return statement. + (gimple_call_get_nobnd_arg_index): New. + * gimple-pretty-print.c (dump_gimple_return): Print second op. + +2013-10-30 Ilya Enkovich + + * ipa.c (cgraph_build_static_cdtor_1): Support contructors + with "chkp ctor" and "bnd_legacy" attributes. + * gimplify.c (gimplify_init_constructor): Avoid infinite + loop during gimplification of bounds initializer. + +2013-10-30 Ilya Enkovich + + * c-family/c-common.c (handle_bnd_variable_size_attribute): New. + (handle_bnd_legacy): New. + (c_common_attribute_table): Add bnd_variable_size and bnd_legacy. + * doc/extend.texi: Document bnd_variable_size and bnd_legacy + attributes. + +2013-10-29 Ilya Enkovich + + * builtin-types.def (BT_FN_VOID_CONST_PTR): New. + (BT_FN_PTR_CONST_PTR): New. + (BT_FN_CONST_PTR_CONST_PTR): New. + (BT_FN_PTR_CONST_PTR_SIZE): New. + (BT_FN_PTR_CONST_PTR_CONST_PTR): New. + (BT_FN_VOID_PTRPTR_CONST_PTR): New. + (BT_FN_VOID_CONST_PTR_SIZE): New. + (BT_FN_PTR_CONST_PTR_CONST_PTR_SIZE): New. + * chkp-builtins.def: New. + * builtins.def: include chkp-builtins.def. + (DEF_CHKP_BUILTIN): New. + * builtins.c (expand_builtin): Support BUILT_IN_CHKP_INIT_PTR_BOUNDS, + BUILT_IN_CHKP_NULL_PTR_BOUNDS, BUILT_IN_CHKP_COPY_PTR_BOUNDS, + BUILT_IN_CHKP_CHECK_PTR_LBOUNDS, BUILT_IN_CHKP_CHECK_PTR_UBOUNDS, + BUILT_IN_CHKP_CHECK_PTR_BOUNDS, BUILT_IN_CHKP_SET_PTR_BOUNDS, + BUILT_IN_CHKP_NARROW_PTR_BOUNDS, BUILT_IN_CHKP_STORE_PTR_BOUNDS, + BUILT_IN_CHKP_GET_PTR_LBOUND, BUILT_IN_CHKP_GET_PTR_UBOUND, + BUILT_IN_CHKP_BNDMK, BUILT_IN_CHKP_BNDSTX, BUILT_IN_CHKP_BNDCL, + BUILT_IN_CHKP_BNDCU, BUILT_IN_CHKP_BNDLDX, BUILT_IN_CHKP_BNDRET, + BUILT_IN_CHKP_INTERSECT, BUILT_IN_CHKP_ARG_BND, BUILT_IN_CHKP_NARROW, + BUILT_IN_CHKP_EXTRACT_LOWER, BUILT_IN_CHKP_EXTRACT_UPPER. + * common.opt (fcheck-pointer-bounds): New. + * toplev.c (process_options): Check Pointer Bounds Checker is + supported. + * doc/extend.texi: Document Pointer Bounds Checker built-in functions. + +2013-10-30 Ilya Enkovich + + * target.def (builtin_chkp_function): New. + (chkp_bound_type): New. + (chkp_bound_mode): New. + (fn_abi_va_list_bounds_size): New. + (load_bounds_for_arg): New. + (store_bounds_for_arg): New. + * targhooks.h (default_load_bounds_for_arg): New. + (default_store_bounds_for_arg): New. + (default_fn_abi_va_list_bounds_size): New. + (default_chkp_bound_type): New. + (default_chkp_bound_mode): New. + (default_builtin_chkp_function): New. + * targhooks.c (default_load_bounds_for_arg): New. + (default_store_bounds_for_arg): New. + (default_fn_abi_va_list_bounds_size): New. + (default_chkp_bound_type): New. + (default_chkp_bound_mode); New. + (default_builtin_chkp_function): New. + * doc/tm.texi.in (TARGET_FN_ABI_VA_LIST_BOUNDS_SIZE): New. + (TARGET_LOAD_BOUNDS_FOR_ARG): New. + (TARGET_STORE_BOUNDS_FOR_ARG): New. + (TARGET_BUILTIN_CHKP_FUNCTION): New. + (TARGET_CHKP_BOUND_TYPE): New. + (TARGET_CHKP_BOUND_MODE): New. + * doc/tm.texi: Regenerated. + * langhooks.h (lang_hooks): Add chkp_supported field. + * langhooks-def.h (LANG_HOOKS_CHKP_SUPPORTED): New. + (LANG_HOOKS_INITIALIZER); Add LANG_HOOKS_CHKP_SUPPORTED. + +2013-10-29 Andrew Pinski + + * tree-ssa-ifcombine.c: Include rtl.h and tm_p.h. + (ifcombine_ifandif): Handle cases where maybe_fold_and_comparisons + fails, combining the branches anyways. + (tree_ssa_ifcombine): Inverse the order of the basic block walk, + increases the number of combinings. + * gimple.h (gsi_start_nondebug_after_labels_bb): New function. + +2013-10-29 Mike Stump + + * machmode.def (PARTIAL_INT_MODE): Add precision and name. + * genmodes.c (PARTIAL_INT_MODE): Add precision and name. + (make_vector_mode): Increase namebuf to 16. + (emit_insn_modes_h): When processing BImode, don't + also match partial int modes. + (emit_class_narrowest_mode): Likewise. + + * config/bfin/bfin-modes.def: Add precision to PDI. + * config/m32c/m32c-modes.def: Add precision to PSI. + * config/msp430/msp430-modes.def: Add precision to PSI. + * config/rs6000/rs6000-modes.def: Add precision to PTI. + * config/sh/sh-modes.def: Add precision to PSI and PDI. + +2013-10-29 Oleg Endo + + PR target/54236 + * config/sh/sh.md (*addc): Rename existing variations to ... + (*addc_r_r_1, *addc_2r_1, *addc_r_1): ... these. + (*addc_r_lsb, *addc_r_r_lsb, *addc_r_lsb_r, *addc_2r_lsb, *addc_r_msb, + *addc_r_r_msb, *addc_2r_msb): New insn_and_split patterns. + * config/sh/sh.c (addsubcosts): Handle some addc special cases. + +2013-10-29 Teresa Johnson + + PR ipa/58862 + * tree-ssa-tail-merge.c (replace_block_by): Tolerate profile + insanities when updating probabilities. + +2013-10-29 David Malcolm + + * gdbhooks.py (CGraphNodePrinter.to_string): Update gdb + prettyprinter for cgraph_node to reflect the conversion of the + symtable types to a C++ class hierarchy: it now *is* a + symtab_node_base, rather than having one (named "symbol"). + +2013-10-29 Balaji V. Iyer + + * builtins.c (is_builtin_name): Added a check for __cilkrts_detach and + __cilkrts_pop_frame. If matched, then return true for built-in + function name. + (expand_builtin): Added BUILT_IN_CILK_DETACH and + BUILT_IN_CILK_POP_FRAME case. + * langhooks-def.h (lhd_install_body_with_frame_cleanup): New prototype. + (lhs_cilk_detect_spawn): Likewise. + (LANG_HOOKS_DECLS): Added LANG_HOOKS_CILKPLUS. + (LANG_HOOKS_CILKPLUS_DETECT_SPAWN_AND_UNWRAP): New #define. + (LANG_HOOKS_CILKPLUS_FRAME_CLEANUP): Likewise. + (LANG_HOOKS_CILKPLUS_GIMPLIFY_SPAWN): Likewise. + (LANG_HOOKS_CILKPLUS): Likewise. + * tree.h (CILK_SPAWN_FN): Likewise. + * builtin.def (DEF_CILK_BUILTIN_STUB): Likewise. + * Makefile.in (C_COMMON_OBJS): Added c-family/cilk.o. + (OBJS): Added cilk-common.o. + (BUILTINS_DEF): Added cilk-builtins.def. + * langhooks.c (lhd_install_body_with_frame_cleanup): New function. + (lhd_cilk_detect_spawn): Likewise. + * langhooks.h (lang_hooks_for_cilkplus): New struct. + (struct lang_hooks): Added new field called "cilkplus." + * cilk-common.c: New file. + * cilk.h: Likewise. + * cilk-builtins.def: Likewise. + * cppbuiltin.c (define_builtin_macros_for_compilation_flags): Added + "__cilk" macro and set it to 200. + * function.h (struct function::cilk_frame_decl): New field. + (struct function::is_cilk_function): Likewise. + (struct function::calls_cilk_spawn): Likewise. + * gimplify.c (gimplify_call_expr): Added a check if the function call + being gimplified is a spawn detach point. If so, then add pop_frame + and detach function calls. + (gimplify_expr): Added a CILK_SPAWN_STMT and CILK_SYNC_STMT case + for gimplifying _Cilk_spawn and _Cilk_sync statements. + (gimplify_return_expr): Added a check for _Cilk_spawn usage in + function. If so, added a _Cilk_sync and gimplified it. + (gimplify_modify_expr): Added a check for _Cilk_spawn in MODIFY and + INIT_EXPRs. If so, then call gimplify_cilk_spawn. + * ipa-inline-analysis (initialize_inline_failed): Prevent inlining of + spawner function. + (can_inline_edge_p): Prevent inling of spawnee function. + * ira.c (ira_setup_eliminable_regset): Force usage of frame pointer + for functions that use Cilk keywords. + * tree-inline.h (struct copy_body_data::remap_var_for_cilk): New field. + * tree-pretty-print.c (dump_generic_node): Added CILK_SPAWN_STMT and + CILK_SYNC_STMT cases. + * tree.def (DEFTREECODE): Added CILK_SPAWN_STMT and CILK_SYNC_STMT + trees. + * generic.texi (CILK_SPAWN_STMT): Added documentation for _Cilk_spawn. + (CILK_SYNC_STMT): Added documentation for _Cilk_sync. + * passes.texi (Cilk Keywords): New section that describes the compiler + code changes for handling Cilk Keywords. + +2013-10-29 David Malcolm + + Patch autogenerated by refactor_symtab.py from + https://github.com/davidmalcolm/gcc-refactoring-scripts + revision 58bb219cc090b2f4516a9297d868c245495ee622 + + * asan.c (asan_finish_file): Update for conversion of symtab types to + a true class hierarchy. + * cfgexpand.c (estimated_stack_frame_size): Likewise. + * cgraph.c (cgraph_get_body): Likewise. + (cgraph_get_create_real_symbol_node): Likewise. + (verify_cgraph_node): Likewise. + (verify_edge_corresponds_to_fndecl): Likewise. + (verify_edge_count_and_frequency): Likewise. + (cgraph_will_be_removed_from_program_if_no_direct_calls): Likewise. + (cgraph_can_remove_if_no_direct_calls_p): Likewise. + (cgraph_can_remove_if_no_direct_calls_and_refs_p): Likewise. + (cgraph_node_cannot_return): Likewise. + (cgraph_set_pure_flag_1): Likewise. + (cgraph_set_const_flag_1): Likewise. + (cgraph_set_nothrow_flag_1): Likewise. + (cgraph_make_node_local_1): Likewise. + (cgraph_for_node_and_aliases): Likewise. + (cgraph_for_node_thunks_and_aliases): Likewise. + (cgraph_node_can_be_local_p): Likewise. + (cgraph_node_cannot_be_local_p_1): Likewise. + (cgraph_function_body_availability): Likewise. + (dump_cgraph_node): Likewise. + (cgraph_rtl_info): Likewise. + (cgraph_mark_address_taken_node): Likewise. + (cgraph_remove_node): Likewise. + (cgraph_release_function_body): Likewise. + (cgraph_update_edges_for_call_stmt_node): Likewise. + (cgraph_redirect_edge_call_stmt_to_callee): Likewise. + (cgraph_make_edge_direct): Likewise. + (cgraph_resolve_speculation): Likewise. + (cgraph_speculative_call_info): Likewise. + (cgraph_turn_edge_to_speculative): Likewise. + (cgraph_create_edge_1): Likewise. + (cgraph_set_call_stmt): Likewise. + (cgraph_node_for_asm): Likewise. + (cgraph_add_thunk): Likewise. + (cgraph_same_body_alias): Likewise. + (cgraph_create_function_alias): Likewise. + (cgraph_create_node): Likewise. + (cgraph_create_empty_node): Likewise. + (record_function_versions): Likewise. + (used_from_object_file_p): Likewise. + * cgraph.h (symtab_can_be_discarded): Likewise. + (symtab_real_symbol_p): Likewise. + (cgraph_mark_force_output_node): Likewise. + (cgraph_edge_recursive_p): Likewise. + (symtab_alias_target): Likewise. + (varpool_all_refs_explicit_p): Likewise. + (varpool_can_remove_if_no_refs): Likewise. + (cgraph_only_called_directly_or_aliased_p): Likewise. + (cgraph_next_function_with_gimple_body): Likewise. + (cgraph_first_function_with_gimple_body): Likewise. + (cgraph_function_with_gimple_body_p): Likewise. + (cgraph_next_function): Likewise. + (cgraph_first_function): Likewise. + (cgraph_next_defined_function): Likewise. + (cgraph_first_defined_function): Likewise. + (varpool_next_defined_variable): Likewise. + (varpool_first_defined_variable): Likewise. + (varpool_next_static_initializer): Likewise. + (varpool_first_static_initializer): Likewise. + (varpool_next_variable): Likewise. + (varpool_first_variable): Likewise. + (varpool_node_name): Likewise. + (varpool): Likewise. + (cgraph): Likewise. + (is_a_helper ::test): Likewise. + (is_a_helper ::test): Likewise. + (varpool_variable_node): Likewise. + (cgraph_function_or_thunk_node): Likewise. + (varpool_alias_target): Likewise. + (cgraph_alias_target): Likewise. + (cgraph_node_name): Likewise. + (varpool_node_asm_name): Likewise. + (cgraph_node_asm_name): Likewise. + * cgraphbuild.c (remove_cgraph_callee_edges): Likewise. + (cgraph_rebuild_references): Likewise. + (rebuild_cgraph_edges): Likewise. + (record_eh_tables): Likewise. + (build_cgraph_edges): Likewise. + (mark_store): Likewise. + (mark_load): Likewise. + (mark_address): Likewise. + (record_type_list): Likewise. + (record_reference): Likewise. + * cgraphclones.c (cgraph_materialize_all_clones): Likewise. + (cgraph_materialize_clone): Likewise. + (cgraph_function_versioning): Likewise. + (cgraph_copy_node_for_versioning): Likewise. + (update_call_expr): Likewise. + (cgraph_find_replacement_node): Likewise. + (cgraph_create_virtual_clone): Likewise. + (cgraph_clone_node): Likewise. + * cgraphunit.c (compile): Likewise. + (output_weakrefs): Likewise. + (output_in_order): Likewise. + (expand_function): Likewise. + (assemble_thunks_and_aliases): Likewise. + (expand_thunk): Likewise. + (mark_functions_to_output): Likewise. + (handle_alias_pairs): Likewise. + (analyze_functions): Likewise. + (walk_polymorphic_call_targets): Likewise. + (varpool_finalize_decl): Likewise. + (process_function_and_variable_attributes): Likewise. + (cgraph_process_same_body_aliases): Likewise. + (analyze_function): Likewise. + (cgraph_add_new_function): Likewise. + (cgraph_finalize_function): Likewise. + (referred_to_p): Likewise. + (cgraph_reset_node): Likewise. + (cgraph_process_new_functions): Likewise. + (enqueue_node): Likewise. + (decide_is_symbol_needed): Likewise. + * coverage.c (coverage_compute_profile_id): Likewise. + * dbxout.c (dbxout_expand_expr): Likewise. + * dwarf2out.c (premark_types_used_by_global_vars_helper): Likewise. + (reference_to_unused): Likewise. + * gimple-fold.c (can_refer_decl_in_current_unit_p): Likewise. + * gimplify.c (unvisit_body): Likewise. + (unshare_body): Likewise. + * ipa-cp.c (ipcp_generate_summary): Likewise. + (ipcp_decision_stage): Likewise. + (identify_dead_nodes): Likewise. + (decide_whether_version_node): Likewise. + (decide_about_value): Likewise. + (perhaps_add_new_callers): Likewise. + (create_specialized_node): Likewise. + (update_profiling_info): Likewise. + (ipcp_propagate_stage): Likewise. + (estimate_local_effects): Likewise. + (good_cloning_opportunity_p): Likewise. + (devirtualization_time_bonus): Likewise. + (propagate_constants_accross_call): Likewise. + (initialize_node_lattices): Likewise. + (ipcp_cloning_candidate_p): Likewise. + (determine_versionability): Likewise. + (print_all_lattices): Likewise. + (print_lattice): Likewise. + (ipcp_discover_new_direct_edges): Likewise. + * ipa-devirt.c (ipa_devirt): Likewise. + (likely_target_p): Likewise. + (update_type_inheritance_graph): Likewise. + (possible_polymorphic_call_target_p): Likewise. + (dump_possible_polymorphic_call_targets): Likewise. + (devirt_variable_node_removal_hook): Likewise. + (record_binfo): Likewise. + (maybe_record_node): Likewise. + (build_type_inheritance_graph): Likewise. + * ipa-inline-analysis.c (inline_write_summary): Likewise. + (inline_generate_summary): Likewise. + (inline_analyze_function): Likewise. + (do_estimate_growth): Likewise. + (simple_edge_hints): Likewise. + (estimate_node_size_and_time): Likewise. + (estimate_edge_devirt_benefit): Likewise. + (compute_inline_parameters): Likewise. + (estimate_function_body_sizes): Likewise. + (compute_bb_predicates): Likewise. + (initialize_inline_failed): Likewise. + (dump_inline_summary): Likewise. + (dump_inline_edge_summary): Likewise. + * ipa-inline-transform.c (inline_transform): Likewise. + (preserve_function_body_p): Likewise. + (save_inline_function_body): Likewise. + (inline_call): Likewise. + (clone_inlined_nodes): Likewise. + (can_remove_node_now_p): Likewise. + (can_remove_node_now_p_1): Likewise. + * ipa-inline.c (early_inliner): Likewise. + (early_inline_small_functions): Likewise. + (inline_always_inline_functions): Likewise. + (ipa_inline): Likewise. + (flatten_function): Likewise. + (inline_small_functions): Likewise. + (speculation_useful_p): Likewise. + (recursive_inlining): Likewise. + (update_caller_keys): Likewise. + (reset_edge_caches): Likewise. + (update_edge_key): Likewise. + (edge_badness): Likewise. + (relative_time_benefit): Likewise. + (want_inline_self_recursive_call_p): Likewise. + (want_inline_small_function_p): Likewise. + (want_early_inline_function_p): Likewise. + (num_calls): Likewise. + (can_early_inline_edge_p): Likewise. + (can_inline_edge_p): Likewise. + (report_inline_failed_reason): Likewise. + * ipa-profile.c (ipa_profile): Likewise. + (ipa_propagate_frequency): Likewise. + (ipa_propagate_frequency_1): Likewise. + (ipa_profile_generate_summary): Likewise. + * ipa-prop.c (ipcp_transform_function): Likewise. + (read_replacements_section): Likewise. + (ipa_prop_read_section): Likewise. + (ipa_modify_call_arguments): Likewise. + (ipa_print_node_params): Likewise. + (propagate_controlled_uses): Likewise. + (update_indirect_edges_after_inlining): Likewise. + (remove_described_reference): Likewise. + (ipa_make_edge_direct_to_target): Likewise. + (ipa_analyze_node): Likewise. + (ipa_analyze_params_uses): Likewise. + (ipa_compute_jump_functions): Likewise. + (ipa_get_callee_param_type): Likewise. + (ipa_print_node_jump_functions): Likewise. + (ipa_initialize_node_params): Likewise. + (ipa_populate_param_decls): Likewise. + (ipa_func_spec_opts_forbid_analysis_p): Likewise. + (write_agg_replacement_chain): Likewise. + (ipa_write_node_info): Likewise. + (ipa_edge_duplication_hook): Likewise. + (try_decrement_rdesc_refcount): Likewise. + * ipa-pure-const.c (propagate_nothrow): Likewise. + (propagate_pure_const): Likewise. + (pure_const_read_summary): Likewise. + (pure_const_write_summary): Likewise. + (analyze_function): Likewise. + * ipa-ref-inline.h (ipa_ref_referred_ref_list): Likewise. + (ipa_ref_referring_ref_list): Likewise. + * ipa-ref.c (ipa_clear_stmts_in_references): Likewise. + (ipa_remove_stmt_references): Likewise. + (ipa_find_reference): Likewise. + (ipa_dump_referring): Likewise. + (ipa_dump_references): Likewise. + (ipa_record_reference): Likewise. + * ipa-reference.c (ipa_reference_read_optimization_summary): Likewise. + (ipa_reference_write_optimization_summary): Likewise. + (write_node_summary_p): Likewise. + (propagate): Likewise. + (read_write_all_from_decl): Likewise. + (generate_summary): Likewise. + (analyze_function): Likewise. + (propagate_bits): Likewise. + (ipa_reference_get_not_written_global): Likewise. + (ipa_reference_get_not_read_global): Likewise. + * ipa-split.c (execute_split_functions): Likewise. + (split_function): Likewise. + * ipa-utils.c (ipa_merge_profiles): Likewise. + (dump_cgraph_node_set): Likewise. + (ipa_reverse_postorder): Likewise. + (ipa_edge_within_scc): Likewise. + (ipa_get_nodes_in_cycle): Likewise. + (ipa_free_postorder_info): Likewise. + (ipa_reduced_postorder): Likewise. + (searchc): Likewise. + (recursive_call_p): Likewise. + * ipa.c (ipa_cdtor_merge): Likewise. + (record_cdtor_fn): Likewise. + (function_and_variable_visibility): Likewise. + (varpool_externally_visible_p): Likewise. + (cgraph_externally_visible_p): Likewise. + (comdat_can_be_unshared_p): Likewise. + (comdat_can_be_unshared_p_1): Likewise. + (address_taken_from_non_vtable_p): Likewise. + (ipa_discover_readonly_nonaddressable_vars): Likewise. + (symtab_remove_unreachable_nodes): Likewise. + (walk_polymorphic_call_targets): Likewise. + (process_references): Likewise. + (enqueue_node): Likewise. + (has_addr_references_p): Likewise. + (cgraph_non_local_node_p_1): Likewise. + * is-a.h (varpool_analyze_node): Likewise. + * lto-cgraph.c (input_symtab): Likewise. + (merge_profile_summaries): Likewise. + (input_cgraph_1): Likewise. + (input_edge): Likewise. + (input_varpool_node): Likewise. + (input_node): Likewise. + (input_overwrite_node): Likewise. + (compute_ltrans_boundary): Likewise. + (output_refs): Likewise. + (lto_output_varpool_node): Likewise. + (lto_output_node): Likewise. + (reachable_from_other_partition_p): Likewise. + (referenced_from_other_partition_p): Likewise. + (lto_output_edge): Likewise. + (output_node_opt_summary): Likewise. + (add_node_to): Likewise. + (reachable_from_this_partition_p): Likewise. + (lto_set_symtab_encoder_in_partition): Likewise. + (lto_symtab_encoder_in_partition_p): Likewise. + (lto_set_symtab_encoder_encode_initializer): Likewise. + (lto_symtab_encoder_encode_initializer_p): Likewise. + (lto_set_symtab_encoder_encode_body): Likewise. + (lto_symtab_encoder_encode_body_p): Likewise. + * lto-section-in.c (lto_free_function_in_decl_state_for_node): + Likewise. + * lto-streamer-in.c (lto_read_body): Likewise. + (fixup_call_stmt_edges): Likewise. + (fixup_call_stmt_edges_1): Likewise. + * lto-streamer-out.c (produce_symtab): Likewise. + (output_symbol_p): Likewise. + (write_symbol): Likewise. + (lto_output): Likewise. + (copy_function): Likewise. + (output_function): Likewise. + * passes.c (function_called_by_processed_nodes_p): Likewise. + (ipa_write_optimization_summaries): Likewise. + (ipa_write_summaries): Likewise. + (do_per_function_toporder): Likewise. + (do_per_function): Likewise. + (dump_passes): Likewise. + * symtab.c (symtab_semantically_equivalent_p): Likewise. + (symtab_nonoverwritable_alias): Likewise. + (symtab_nonoverwritable_alias_1): Likewise. + (symtab_for_node_and_aliases): Likewise. + (symtab_resolve_alias): Likewise. + (fixup_same_cpp_alias_visibility): Likewise. + (symtab_alias_ultimate_target): Likewise. + (symtab_used_from_object_file_p): Likewise. + (verify_symtab_base): Likewise. + (dump_symtab_base): Likewise. + (symtab_node_name): Likewise. + (symtab_node_asm_name): Likewise. + (symtab_dissolve_same_comdat_group_list): Likewise. + (symtab_add_to_same_comdat_group): Likewise. + (symtab_unregister_node): Likewise. + (symtab_insert_node_to_hashtable): Likewise. + (symtab_register_node): Likewise. + (unlink_from_assembler_name_hash): Likewise. + (insert_to_assembler_name_hash): Likewise. + (eq_assembler_name): Likewise. + (hash_node_by_assembler_name): Likewise. + (eq_node): Likewise. + (hash_node): Likewise. + * toplev.c (wrapup_global_declaration_2): Likewise. + * trans-mem.c (ipa_tm_execute): Likewise. + (ipa_tm_transform_clone): Likewise. + (ipa_tm_transform_transaction): Likewise. + (ipa_tm_transform_calls_redirect): Likewise. + (ipa_tm_insert_gettmclone_call): Likewise. + (ipa_tm_insert_irr_call): Likewise. + (ipa_tm_create_version): Likewise. + (ipa_tm_create_version_alias): Likewise. + (ipa_tm_mark_forced_by_abi_node): Likewise. + (ipa_tm_mark_force_output_node): Likewise. + (ipa_tm_diagnose_tm_safe): Likewise. + (ipa_tm_mayenterirr_function): Likewise. + (ipa_tm_scan_irr_function): Likewise. + (ipa_tm_note_irrevocable): Likewise. + (ipa_tm_scan_calls_clone): Likewise. + (get_cg_data): Likewise. + * tree-eh.c (tree_could_trap_p): Likewise. + * tree-emutls.c (ipa_lower_emutls): Likewise. + (create_emultls_var): Likewise. + (lower_emutls_function_body): Likewise. + (gen_emutls_addr): Likewise. + (emutls_decl): Likewise. + (new_emutls_decl): Likewise. + * tree-inline.c (tree_function_versioning): Likewise. + (optimize_inline_calls): Likewise. + (expand_call_inline): Likewise. + (estimate_num_insns): Likewise. + (copy_bb): Likewise. + (delete_unreachable_blocks_update_callgraph): Likewise. + * tree-nested.c (gimplify_all_functions): Likewise. + (create_nesting_tree): Likewise. + (check_for_nested_with_variably_modified): Likewise. + * tree-pretty-print.c (dump_function_header): Likewise. + * tree-profile.c (tree_profiling): Likewise. + * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise. + (modify_function): Likewise. + (convert_callers): Likewise. + (convert_callers_for_node): Likewise. + * tree-ssa-structalias.c (ipa_pta_execute): Likewise. + (associate_varinfo_to_alias): Likewise. + (create_variable_info_for): Likewise. + (get_constraint_for_ssa_var): Likewise. + * tree-vectorizer.c (increase_alignment): Likewise. + * tree.c (find_decls_types_in_var): Likewise. + (find_decls_types_in_node): Likewise. + (free_lang_data_in_decl): Likewise. + * value-prof.c (gimple_ic_transform): Likewise. + (gimple_ic): Likewise. + (check_ic_target): Likewise. + (init_node_map): Likewise. + * varasm.c (decl_binds_to_current_def_p): Likewise. + (default_binds_local_p_1): Likewise. + (dump_tm_clone_pairs): Likewise. + (assemble_alias): Likewise. + (find_decl): Likewise. + (mark_decl_referenced): Likewise. + * varpool.c (varpool_for_node_and_aliases): Likewise. + (varpool_extra_name_alias): Likewise. + (varpool_create_variable_alias): Likewise. + (add_new_static_var): Likewise. + (varpool_finalize_named_section_flags): Likewise. + (varpool_remove_unreferenced_decls): Likewise. + (enqueue_node): Likewise. + (varpool_assemble_decl): Likewise. + (assemble_aliases): Likewise. + (varpool_analyze_node): Likewise. + (cgraph_variable_initializer_availability): Likewise. + (varpool_add_new_variable): Likewise. + (ctor_for_folding): Likewise. + (dump_varpool_node): Likewise. + (varpool_remove_initializer): Likewise. + (varpool_remove_node): Likewise. + (varpool_node_for_decl): Likewise. + (varpool_create_empty_node): Likewise. + * config/i386/i386.c (ix86_generate_version_dispatcher_body): Likewise. + (ix86_get_function_versions_dispatcher): Likewise. + +2013-10-29 David Malcolm + + * cgraph.h (symtab_node_base): Convert to a class; + add GTY((desc ("%h.type"), tag ("SYMTAB_SYMBOL"))), and take + chain_next/prev from symtab_node_def. + (cgraph_node): Inherit from symtab_node; add GTY option + tag ("SYMTAB_FUNCTION"). + (varpool_node): Inherit from symtab_node; add GTY option + tag ("SYMTAB_VARIABLE"). + (symtab_node_def): Remove. + (is_a_helper ::test (symtab_node_def *)): Convert to... + (is_a_helper ::test (symtab_node_base *)): ...this. + (is_a_helper ::test (symtab_node_def *)): Convert to... + (is_a_helper ::test (symtab_node_base *)): ...this. + + * ipa-ref.h (symtab_node_def): Drop. + (symtab_node): Change underlying type from symtab_node_def to + symtab_node_base. + (const_symtab_node): Likwise. + + * is-a.h: Update examples in comment. + + * symtab.c (symtab_hash): Change symtab_node_def to symtab_node_base. + (assembler_name_hash): Likewise. + +2013-10-29 Martin Liska + + * doc/tree-ssa.texi (gimple_phi_result): Document. + (gimple_phi_num_args, gimple_phi_arg): Likewise. + (gimple_phi_arg_edge, gimple_phi_arg_def): Likewise. + (PHI_RESULT, PHI_NUM_ARGS): Remove. + (PHI_ARG_ELT, PHI_ARG_EDGE, PHI_ARG_DEF): Likewise. + +2013-10-29 Andrew MacLeod + + * expr.h: Revert change and include tree-core.h. + * rtl.h: Revert change and don't include tree-core.h. + +2013-10-29 Andrew MacLeod + + * config/darwin.c: Include gimple.h. + * config/i386/winnt.c: Likewise. + +2013-10-29 Marc Glisse + + PR tree-optimization/19831 + * tree-ssa-alias.c (stmt_kills_ref_p_1): Handle BUILT_IN_FREE. + +2013-10-29 Andrew MacLeod + + * tree-outof-ssa.h: Remove include files. + * tree-outof-ssa.c: Add required include files from tree-outof-ssa.h. + * expr.c: Likewise. + * tree-ssa-coalesce.c: Likewise. + * cfgexpand.c: Likewise. + * tree-ssa-ter.c: Likewise. + * ipa-prop.h: Remove gimple.h and tree-core.h from include list. + * lto-streamer.h: Likewise. + * cgraphbuild.c: Add gimple.h to include list. + * data-streamer-in.c: Likewise. + * ipa-cp.c: Likewise. + * tree-streamer.c: Likewise. + * lto-compress.c: Likewise. + * ipa-reference.c: Likewise. + * data-streamer-out.c: Likewise. + * lto-cgraph.c: Likewise. + * cgraphclones.c: Likewise. + * ipa-utils.c: Likewise. + * data-streamer.c: Likewise. + * ipa-split.c: Likewise. + * lto-section-in.c: Likewise. + * tree-streamer-out.c: Likewise. + * ipa-prop.c: Likewise. + * tree-streamer-in.c: Likewise. + * symtab.c: Likewise. + * opts-global.c: Likewise. + * lto-opts.c: Likewise. + * lto-section-out.c: Likewise. + * lto-streamer.c: Likewise. + * rtl.h: Add tree-core.h to include list. + * expr.h: Remove tree-core.h from include list. + * gimple.h: Likewise. + * ipa-utils.h: Likewise. + * streamer-hooks.h: Likewise. + * streamer-hooks.c: Include input.h. + +2013-10-29 Kyrylo Tkachov + + * config/arm/arm.c (cortexa7_extra_costs): New table. + (arm_cortex_a7_tune): New. + * config/arm/arm-cores.def: Use cortex_a7 tuning for cortex-a7. + +2013-10-29 Eric Botcazou + + * expr.c (expand_expr_real_1) : Eliminate small redundancy. + +2013-10-29 David Malcolm + + * doc/gty.texi ("Inheritance and GTY"): Make it clear that + to use autogenerated markers for a class-hierarchy, every class + must have a GTY marker. + * gengtype.h (struct type): Add linked list of subclasses to + the "s" member of the union. + (add_subclass): New decl. + * gengtype-state.c (read_state_struct_type): Set up subclass + linked list. + * gengtype.c (get_ultimate_base_class): New. + (add_subclass): New. + (new_structure): Set up subclass linked list. + (set_gc_used_type): Propagate usage information to subclasses. + (output_mangled_typename): Use get_ultimate_base_class. + (walk_subclasses): Use the subclass linked list, avoiding an + O(N^2) when writing out all types. + (walk_type): Issue an error if the base class is missing a tag, + rather than generating bogus C code. Add a gcc_unreachable + default case, in case people omit tags from concrete subclasses, + or get the values wrong. + (write_func_for_structure): Issue an error for subclasses for + which the base doesn't have a "desc", since otherwise the + autogenerated routines for the base would silently fail to visit + any subclass fields. + (write_root): Use get_ultimate_base_class, tweaking constness of + tp to match that function's signature. + +2013-10-29 David Malcolm + + * doc/gty.texi (GTY Options): Add note about inheritance to + description of desc and tag. + (Inheritance and GTY): New. + +2013-10-29 David Malcolm + + * gengtype-parse.c (opts_have): Drop "static" so that + we can use this from gengtype.c. + * gengtype.c (set_gc_used_type): Mark any base class as used; + update field traversal to visit inherited fields. + (output_mangled_typename): Convert references to classes within + an inheritance hierarchy to reference the ultimate base class, + since only it will have gt_ functions. + (get_string_option): New. + (walk_subclasses): New. + (walk_type): Treat GTY structs that have a "desc" as being the + root of an inheritance hierarchy. Generate a switch on it + within the marking function which walks all subclasses, adding + cases for them via walk_subclasses. For subclasses, visit all + fields of the type (including inherited ones). + (write_func_for_structure): Don't write fns for subclasses, only + for the ultimate base class within an inheritance hierarchy. + Subclasses-marking will be handled by the base class marking functions. + (write_types): Likewise. + (write_local_func_for_structure): Likewise. + (USED_BY_TYPED_GC_P): Emit allocators for subclasses that have + a "tag" option (and are thus concrete subclasses). + (write_root): Use the marker function for the ultimate base class. + * gengtype.h (FOR_ALL_INHERITED_FIELDS): New. + (opts_have): Add declaration. + +2013-10-28 Vladimir Makarov + + * lra-spills.c (lra_final_code_change): Remove useless move insns + originated from moves of pseudos. + +2013-10-28 Jeff Law + + * lower-subreg.c (resolve_simple_move): Fix comment typo. + +2013-10-28 Trevor Saunders + + * df-scan.c (df_collection_rec): Adjust. + (copy_defs): New constant. + (copy_uses): Likewise. + (copy_eq_uses): Likewise. + (copy_mw): Likewise. + (copy_all): Likewise. + (df_insn_rescan): Adjust. + (df_notes_rescan): Likewise. + (df_swap_refs): Likewise. + (df_sort_and_compress_refs): Likewise. + (df_sort_and_compress_mws): Likewise. + (df_install_refs): Likewise. + (df_install_mws): Likewise. + (df_refs_add_to_chains): Add flags parameter controlling which vectors + are coppied. + (df_bb_refs_record): Adjust. + (df_record_entry_block_defs): Likewise. + (df_record_exit_block_defs): Likewise. + (df_refs_verify): Likewise. + (df_mws_verify): Likewise. + (df_insn_refs_verify): Likewise. + (df_bb_verify): Likewise. + * ipa-pure-const.c (finish_state): Remove. + (propagate): Adjust. + * tree-data-ref.c tree-ssa-alias.c tree-ssa-loop-ivcanon.c + tree-ssa-threadedge.c tree-vect-loop-manip.c tree-vect-slp.c + var-tracking.c: Adjust. + * vec.c (stack_vecs): Remove. + (register_stack_vec): Likewise. + (stack_vec_register_index): Likewise. + (unregister_stack_vec): Likewise. + * vec.h (struct va_stack): Remove. + (struct vec): Specialize as + struct vec instead since va_heap is the only + allocation strategy compatable with the vl_ptr layout. + (struct vec): Remove because it now gets an empty + specialization anyway. + (class stack_vec): New class. + (vec_stack_alloc): Remove. + (vec::using_auto_storage): New method. + +2013-10-28 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.md (prefetch): Allow TARGET_AVX512PF. + (*prefetch_avx512pf_): New. + * config/i386/sse.md (avx512f_vmcmp3): Ditto. + (avx512f_maskcmp3): Ditto. + (vashrv16si3): Ditto. + +2013-10-28 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.md (any_truncate): New. + (trunsuffix): Ditto. + * config/i386/predicates.md (const_8_to_9_operand): New. + (const_10_to_11_operand): Ditto. + (const_12_to_13_operand): Ditto. + (const_14_to_15_operand): Ditto. + (const_16_to_19_operand): Ditto. + (const_20_to_23_operand): Ditto. + (const_24_to_27_operand): Ditto. + (const_28_to_31_operand): Ditto. + * config/i386/sse.md (unspec): Add UNSPEC_UNSIGNED_FIX_NOTRUNC. + (cvtusi232): New. + (cvtusi264): Ditto. + (ufloatv16siv16sf2): Ditto. + (avx512f_fix_notruncv16sfv16si): Ditto. + (avx512f_ufix_notruncv16sfv16si): Ditto. + (avx512f_vcvtss2usi): Ditto. + (avx512f_vcvtss2usiq): Ditto. + (avx512f_vcvttss2usi): Ditto. + (avx512f_vcvttss2usiq): Ditto. + (avx512f_vcvtsd2usi): Ditto. + (avx512f_vcvtsd2usiq): Ditto. + (avx512f_vcvttsd2usi): Ditto. + (avx512f_vcvttsd2usiq): Ditto. + (ufloatv8siv8df): Ditto. + (avx512f_cvtdq2pd512_2): Ditto. + (avx512f_cvtpd2dq512): Ditto. + (avx512f_ufix_notruncv8dfv8si): Ditto. + (avx512f_cvtpd2ps512): Ditto. + (vec_unpacks_lo_v16sf): Ditto. + (vec_unpacks_hi_v16sf): Ditto. + (vec_unpacks_float_hi_v16si): Ditto. + (vec_unpacks_float_lo_v16si): Ditto. + (avx512f_unpckhps512): Ditto. + (avx512f_unpcklps512): Ditto. + (avx512f_movshdup512): Ditto. + (avx512f_movsldup512): Ditto. + (vec_extract_lo_v32hi): Ditto. + (vec_extract_hi_v32hi): Ditto. + (vec_extract_lo_v64qi): Ditto. + (vec_extract_hi_v64qi): Ditto. + (avx512f_unpckhpd512): Ditto. + (avx512f_movddup512): Ditto. + (avx512f_unpcklpd512): Ditto. + (*avx512f_unpcklpd512): Ditto. + (avx512f_shufps512_1): Ditto. + (avx512f_shufpd512_1): Ditto. + (avx512f_interleave_highv8di): Ditto. + (avx512f_interleave_lowv8di): Ditto. + (PMOV_DST_MODE): Ditto. + (pmov_src_mode): Ditto. + (pmov_src_lower): Ditto. + (pmov_suff): Ditto. + (*avx512f_2): Ditto. + (*avx512f_v8div16qi2): Ditto. + (*avx512f_v8div16qi2_store): Ditto. + (vec_widen_umult_even_v16si): Ditto. + (*vec_widen_umult_even_v16si): Ditto. + (vec_widen_smult_even_v16si): Ditto. + (*vec_widen_smult_even_v16si): Ditto. + (avx512f_interleave_highv16si): Ditto. + (avx512f_interleave_lowv16si): Ditto. + (avx512f_v16qiv16si2): Ditto. + (avx512f_v16hiv16si2): Ditto. + (avx512f_v8qiv8di2): Ditto. + (avx512f_v8hiv8di2): Ditto. + (avx512f_v8siv8di2): Ditto. + (avx512cd_maskb_vec_dupv8di): Ditto. + (avx512cd_maskw_vec_dupv16si): Ditto. + (avx512f_vcvtph2ps512): Ditto. + (avx512f_vcvtps2ph512): Ditto. + (VEC_EXTRACT_MODE): Extened with wider modes. + (VEC_PERM_AVX2): Ditto. + (VEC_PERM_CONST): Ditto. + +2013-10-28 Joern Rennecke + + * config/arc/arc.c (arc_ccfsm_post_advance): + Add comment about TYPE_RETURN. + +2013-10-28 Bin Cheng + + * tree-ssa-loop-ivopts.c (strip_offset_1): Change parameter type. + Count DECL_FIELD_BIT_OFFSET for COMPONENT_REF. + (strip_offset): Convert offset to unsigned number. + +2013-10-27 Tom de Vries + + * cfgexpand.c (gimple_expand_cfg): Remove test for parm_birth_insn. + Don't commit insertions after NOTE_INSN_FUNCTION_BEG. + +2013-10-27 Oleg Endo + + * config/sh/sh.c (MSW, LSW): Move and rename macros to... + * config/sh/sh.h (SH_REG_MSW_OFFSET, SH_REG_LSW_OFFSET): ... here. + (TARGET_BIG_ENDIAN): New macro. + * config/sh/sh.md: Use it instead of !TARGET_LITTLE_ENDIAN. + Use SH_REG_MSW_OFFSET and SH_REG_LSW_OFFSET. + * config/sh/sh.c: Likewise. + * config/sh/sh.h: Likewise. + +2013-10-27 Hans-Peter Nilsson + + * config/cris/cris.c (cris_emit_trap_for_misalignment): Replace the + removed PRED_MUDFLAP with PRED_NORETURN. Correct file-path in comment. + +2013-10-26 Oleg Endo + + * config/sh/sh.md (movmemsi): Remove empty constraints and predicates. + Fix formatting. + (cmpstr_t, cmpstrsi): Fix formatting. + +2013-10-26 Oleg Endo + + PR target/52483 + * config/sh/predicates.md (general_movdst_operand): Allow reg+reg + addressing, do not use general_operand for memory operands. + +2013-10-26 Vladimir Makarov + + Revert: + 2013-10-25 Vladimir Makarov + * lra-spills.c (lra_final_code_change): Remove useless move insns. + +2013-10-26 Jeff Law + + * predict.c (PRED_MUDFLAP): Remove. + * targhooks.c (build_va_arg_indirect_ref): Remove mudflap support. + + * Makefile.in (C_COMMON_OBJS): Remove tree-mudflap. + (OBJS): Remove tree-nomudflap.o + (GTFILES): Remove tree-mudflap.c + * builtins.c (expand_builtin_alloc): Remove mudflap support. + * gcc.c (MFWRAP_SPEC, MFLIB_SPEC): Likewise. + (mfwrap_spec, mflib_spec): Likewise. + (cpp_unique_options, cc1_options, static_specs): Likewise. + * gimplify (gimplify_vla_decl, build_va_arg_indirect_ref): Likewise. + * passes.def: Likewise. + * toplev.c (compile_file, process_options): Likewise. + * tree-inline.c (copy_tree_r): Likewise. + * tree-pass.,h (make_pass_mudflap_1, make_pass_mudflap_2): Likewise. + * varasm.c (make_decl_rtl, make_decl_rtl_for_debug): Likewise. + (build_constant_desc, output_constant_def_contents): Likewise. + (categorize_decl_for_section): Likewise. + * tree-mudflap.c: Removed. + * tree-mudflap.h: Removed. + * tree-nomudflap.c: Removed. + * bfin/uclinux.h (MFWRAP_SPEC): Remove. + * moxie/uclinux.h (MFWRAP_SPEC): Likewise. + * rs6000/aix.h (MFWRAP_SPEC, MFLIB_SPEC): Likewise. + * config/sol2.h (MFLIB_SPEC): Likewise. + * doc/install.texi: Remove mudflap references. + * doc/passes.texi: Similarly. + * doc/sourcebuild.texi: Similarly. + * doc/invoke.texi: Remove mudlfap related options. + +2013-10-25 Vladimir Makarov + + PR rtl-optimization/58759 + * lra-constraints.c (lra_constraints): Remove wrong condition to + remove insn setting up an equivalent pseudo. + +2013-10-25 Vladimir Makarov + + * config/rs6000/rs6000-protos.h + (rs6000_secondary_memory_needed_mode): New prototype. + * config/rs6000/rs6000.c: Include ira.h. + (TARGET_LRA_P): Redefine. + (rs6000_legitimate_offset_address_p): Call + legitimate_constant_pool_address_p in strict mode for LRA. + (rs6000_legitimate_address_p): Ditto. + (legitimate_lo_sum_address_p): Add code for LRA. Use lra_in_progress. + (rs6000_emit_move): Add LRA version of code to generate load/store + of SDmode values. + (rs6000_secondary_memory_needed_mode): New. + (rs6000_alloc_sdmode_stack_slot): Do nothing for LRA. + (rs6000_secondary_reload_class): Return NO_REGS for LRA for + constants, memory, and FP registers. + (rs6000_lra_p): New. + * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): New macro. + * config/rs6000/rs6000.opt (mlra): New option. + * lra-spills.c (lra_final_code_change): Remove useless move insns. + +2013-10-25 Yufeng Zhang + + * tree-ssa-math-opts.c (convert_plusminus_to_widen): Call + has_single_use () and not do the conversion if has_single_use () + returns false for the multiplication result. + +2013-10-25 David Malcolm + + * tree.h (EXCEPTIONAL_CLASS_P): Rename parameter from "CODE" + to "NODE", since this works on a "tree", not an + "enum tree_code". + (CONSTANT_CLASS_P): Likewise. + (TYPE_P): Likewise. + (DECL_P): Likewise. + (INDIRECT_REF_P): Likewise. + (REFERENCE_CLASS_P): Likewise. + (COMPARISON_CLASS_P): Likewise. + (UNARY_CLASS_P): Likewise. + (BINARY_CLASS_P): Likewise. + (STATEMENT_CLASS_P): Likewise. + (VL_EXP_CLASS_P): Likewise. + (EXPRESSION_CLASS_P): Likewise. + (IS_TYPE_OR_DECL_P): Likewise. + +2013-10-25 Marc Glisse + + * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Look for an + ADDR_EXPR in the defining statement. + +2013-10-25 Richard Biener + + PR tree-optimization/58626 + * tree-loop-distribution.c (enum rdg_dep_type): Remove + anti_dd, output_dd and input_dd. + (struct rdg_edge): Remove level and relation members. + (RDGE_LEVEL, RDGE_RELATION): Remove. + (dot_rdg_1): Adjust. + (create_rdg_edge_for_ddr): Remove. + (create_rdg_edges_for_scalar): Adjust. + (create_edge_for_control_dependence): Likewise. + (create_rdg_edges): Split into ... + (create_rdg_flow_edges): ... this + (create_rdg_cd_edges): ... and this. + (free_rdg): Adjust. + (build_rdg): Likewise, do not compute data dependences or + add edges for them. + (pg_add_dependence_edges): New function. + (pgcmp): Likewise. + (distribute_loop): First apply all non-dependence based + partition mergings. Then compute dependences between partitions + and merge and order partitions according to them. + +2013-10-25 Eric Botcazou + + PR rtl-optimization/58831 + * alias.c (init_alias_analysis): At the beginning of each iteration, + set the reg_seen[N] bit if static_reg_base_value[N] is non-null. + +2013-10-25 Eric Botcazou + + * recog.c (search_ofs): New static variable moved from... + (peep2_find_free_register): ...here. + (peephole2_optimize): Initialize it. + +2013-10-25 Tobias Burnus + + * doc/invoke.texi (fopenmp): Change supported OpenMP version to 4.0. + +2013-10-25 Uros Bizjak + + * config/i386/i386.h (TARGET_MPX): New define. + (TARGET_MPX_P): Ditto. + +2013-10-24 Ilya Enkovich + + * config/i386/constraints.md (B): New. + (Ti): New. + (Tb): New. + * config/i386/i386-c.c (ix86_target_macros_internal): Add __MPX__. + * config/i386/i386-modes.def (BND32): New. + (BND64): New. + * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): New. + * config/i386/i386.c (isa_opts): Add mmpx. + (regclass_map): Add bound registers. + (dbx_register_map): Likewise. + (dbx64_register_map): Likewise. + (svr4_dbx_register_map): Likewise. + (PTA_MPX): New. + (ix86_option_override_internal): Support MPX ISA. + (ix86_conditional_register_usage): Support bound registers. + (print_reg): Likewise. + (ix86_code_end): Add MPX bnd prefix. + (output_set_got): Likewise. + (ix86_output_call_insn): Likewise. + (ix86_print_operand): Add '!' (MPX bnd) print prefix support. + (ix86_print_operand_punct_valid_p): Likewise. + (ix86_print_operand_address): Support UNSPEC_BNDMK_ADDR and + UNSPEC_BNDMK_ADDR. + (ix86_class_likely_spilled_p): Add bound regs support. + (ix86_hard_regno_mode_ok): Likewise. + (x86_order_regs_for_local_alloc): Likewise. + (ix86_bnd_prefixed_insn_p): New. + * config/i386/i386.h (FIRST_PSEUDO_REGISTER): Fix to new value. + (FIXED_REGISTERS): Add bound registers. + (CALL_USED_REGISTERS): Likewise. + (REG_ALLOC_ORDER): Likewise. + (HARD_REGNO_NREGS): Likewise. + (TARGET_MPX): New. + (VALID_BND_REG_MODE): New. + (FIRST_BND_REG): New. + (LAST_BND_REG): New. + (reg_class): Add BND_REGS. + (REG_CLASS_NAMES): Likewise. + (REG_CLASS_CONTENTS): Likewise. + (BND_REGNO_P): New. + (ANY_BND_REG_P): New. + (BNDmode): New. + (HI_REGISTER_NAMES): Add bound registers. + * config/i386/i386.md (UNSPEC_BNDMK): New. + (UNSPEC_BNDMK_ADDR): New. + (UNSPEC_BNDSTX): New. + (UNSPEC_BNDLDX): New. + (UNSPEC_BNDLDX_ADDR): New. + (UNSPEC_BNDCL): New. + (UNSPEC_BNDCU): New. + (UNSPEC_BNDCN): New. + (UNSPEC_MPX_FENCE): New. + (BND0_REG): New. + (BND1_REG): New. + (type): Add mpxmov, mpxmk, mpxchk, mpxld, mpxst. + (length_immediate): Likewise. + (prefix_0f): Likewise. + (memory): Likewise. + (prefix_rep): Check for bnd prefix. + (length_nobnd): New. + (length): Use length_nobnd if specified. + (BND): New. + (bnd_ptr): New. + (BNDCHECK): New. + (bndcheck): New. + (*jcc_1): Add bnd prefix and rename length attr to length_nobnd. + (*jcc_2): Likewise. + (jump): Likewise. + (simple_return_internal): Likewise. + (simple_return_pop_internal): Likewise. + (*indirect_jump): Add MPX bnd prefix. + (*tablejump_1): Likewise. + (simple_return_internal_long): Likewise. + (simple_return_indirect_internal): Likewise. + (_mk): New. + (*_mk): New. + (mov): New. + (*mov_internal_mpx): New. + (_): New. + (*_): New. + (_ldx): New. + (*_ldx): New. + (_stx): New. + (*_stx): New. + * config/i386/predicates.md (lea_address_operand): Rename to... + (address_no_seg_operand): ... this. + (address_mpx_no_base_operand): New. + (address_mpx_no_index_operand): New. + (bnd_mem_operator): New. + * config/i386/i386.opt (mmpx): New. + * doc/invoke.texi: Add documentation for the flags -mmpx, -mno-mpx. + * doc/rtl.texi Add documentation for BND32mode and BND64mode. + +2013-10-24 Ilya Enkovich + + * mode-classes.def (MODE_POINTER_BOUNDS): New. + * tree.def (POINTER_BOUNDS_TYPE): New. + * genmodes.c (complete_mode): Support MODE_POINTER_BOUNDS. + (POINTER_BOUNDS_MODE): New. + (make_pointer_bounds_mode): New. + * machmode.h (POINTER_BOUNDS_MODE_P): New. + * stor-layout.c (int_mode_for_mode): Support MODE_POINTER_BOUNDS. + (layout_type): Support POINTER_BOUNDS_TYPE. + * tree-pretty-print.c (dump_generic_node): Support POINTER_BOUNDS_TYPE. + * tree.c (build_int_cst_wide): Support POINTER_BOUNDS_TYPE. + (type_contains_placeholder_1): Likewise. + * tree.h (POINTER_BOUNDS_TYPE_P): New. + * varasm.c (output_constant): Support POINTER_BOUNDS_TYPE. + * doc/rtl.texi (MODE_POINTER_BOUNDS): New. + +2013-10-24 Igor Shevlyakov + + * expr.c (expand_expr_real_1): Use mode of memory reference rather than + mode of address computation when calling memory_address_addr_space. + +2013-08-24 Richard Henderson + + PR rtl/58542 + * optabs.c (maybe_emit_atomic_exchange): Use create_input_operand + instead of create_convert_operand_to. + (maybe_emit_sync_lock_test_and_set): Likewise. + (expand_atomic_compare_and_swap): Likewise. + (maybe_emit_compare_and_swap_exchange_loop): Don't convert_modes. + +2013-08-24 Sriraman Tallam + + * cgraph.c (cgraph_fnver_htab): Move GTY((...)) to be before htab_t. + Change param_is to use the struct and not the pointer to the struct. + +2013-10-24 Andrew MacLeod + + * builtins.c (dummy_object, gimplify_va_arg_expr): Move to gimplify.c. + * gimplify.c (build_va_arg_indirect_ref, std_gimplify_va_arg_expr): + Move to targhooks.c. + (dummy_object, gimplify_va_arg_expr): Relocate from builtins.c. + * targhooks.c (build_va_arg_indirect_ref, std_gimplify_va_arg_expr): + Relocate from gimplify.c. + * targhooks.h: Add 2 prototypes. + * tree.h: Delete 2 prototypes. + +2013-10-24 Igor Shevlyakov + + * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p ): Check both + [reg+mult*reg] and [mult*reg] to determine if multiplier is allowed. + +2013-10-24 Cong Hou + + * convert.c (convert_to_real): Guard those unsafe math function + convertions with flag_unsafe_math_optimizations. Handle sqrt() + specially. + +2013-10-24 Markus Trippelsdorf + + PR ipa/58712 + * cgraph.c (cgraph_create_edge_1): Add indirect_unknown_callee + as argument. + (cgraph_create_edge): Use the new argument. + (cgraph_create_indirect_edge): Likewise. + +2013-10-24 Joern Rennecke + + * config/arc/arc.c (arc_ccfsm_post_advance): Also handle + TYPE_UNCOND_BRANCH. + (arc_ifcvt) : Check that arc_ccfsm_post_advance + changes statep->state. + +2013-10-24 Tobias Burnus + + PR other/33426 + * tree-cfg.c (replace_loop_annotate): New function. + (execute_build_cfg): Call it. + * gimplify.c (gimple_boolify, gimplify_expr): Handle ANNOTATE_EXPR. + * internal-fn.c (expand_ANNOTATE): New function. + * internal-fn.def (ANNOTATE): Define as new internal function. + * tree-core.h (tree_node_kind): Add annot_expr_ivdep_kind. + * tree-pretty-print.c (dump_generic_node): Handle ANNOTATE_EXPR. + * tree.def (ANNOTATE_EXPR): New DEFTREECODE. + * doc/extend.texi (Pragmas): Document #pragma ivdep. + * doc/generic.texi (Expressions): Document ANNOTATE_EXPR. + +2013-10-17 Ian Bolton + Marcus Shawcroft + + * config/aarch64/aarch64.c (aarch64_preferred_reload_class): + Special case reload SP+C into none GENERAL_REGS. + +2013-10-24 Michael Matz + + * gengtype.c (is_file_equal): Check that files will be same length. + +2013-10-25 Christian Bruel + + * config.gcc (sh-*): Add sh-mem.o to extra_obj. + * config/sh/t-sh (sh-mem.o): New rule. + * config/sh/sh-mem.cc (expand_block_move): Moved here. + (sh_expand_cmpstr): New function. + * config/sh/sh.c (force_into, expand_block_move): Move to sh-mem.c. + * config/sh/sh-protos.h (sh_expand_cmpstr): Declare. + * config/sh/sh.md (cmpstrsi, cmpstr_t): New patterns. + (rotlhi3_8): Rename. + +2013-10-24 Jan-Benedict Glaw + + * configure.ac (ZW_PROG_COMPILER_DEPENDENCIES): Use CXX instead of CC. + * Makefile.in (CXXDEPMODE): Assign and change users. + (CCDEPMODE): Delete. + * configure: Regenerate. + +2013-10-23 David Malcolm + + * gengtype-parse.c (require_without_advance): New. + (type): For GTY-marked types that are not GTY((user)), parse any + base classes, requiring them to be single-inheritance, and not + be templates. For non-GTY-marked types and GTY((user)), + continue to skip over any C++ inheritance specification. + * gengtype-state.c (state_writer::write_state_struct_type): + Write base class of type (if any). + (read_state_struct_type): Read base class of type (if any). + * gengtype.c (new_structure): Add a "base_class" parameter. + (create_optional_field_): Update for new parameter to new_structure. + (adjust_field_rtx_def): Likewise. + (adjust_field_tree_exp): Likewise. + * gengtype.h (struct type): Add "base_class" field to the s + union field. + (new_structure): Add "base" parameter. + +2013-10-23 Sriraman Tallam + + PR target/57756 + * config/i386/i386.c (ix86_option_override_internal): + Change TARGET_SSE2 to TARGET_SSE2_P (opts->...) + (ix86_valid_target_attribute_tree): + Change TARGET_64BIT to TARGET_64BIT_P (opts->...) + Change TARGET_SSE to TARGET_SSE_P (opts->...) + +2013-10-23 Andrew MacLeod + + * tree-ssa-loop.h: Remove include files. + * gengtype.c (open_base_files): Adjust include list for gtype-desc.c. + * cfgloopmanip.c: Move required includes from tree-ssa-loop.h. + * graphite-clast-to-gimple.c: Likewise. + * graphite-scop-detection.c: Likewise. + * graphite-sese-to-poly.c: Likewise. + * ipa-inline-analysis.c: Likewise. + * ipa-pure-const.c: Likewise. + * loop-init.c: Likewise. + * passes.c: Likewise. + * predict.c: Likewise. + * tree-cfg.c: Likewise. + * tree-cfgcleanup.c: Likewise. + * tree-chrec.c: Likewise. + * tree-data-ref.c: Likewise. + * tree-loop-distribution.c: Likewise. + * tree-parloops.c: Likewise. + * tree-predcom.c: Likewise. + * tree-scalar-evolution.c: Likewise. + * tree-ssa-address.c: Likewise. + * tree-ssa.c: Likewise. + * tree-ssa-dce.c: Likewise. + * tree-ssa-loop.c: Likewise. + * tree-ssa-loop-im.c: Likewise. + * tree-ssa-loop-ivcanon.c: Likewise. + * tree-ssa-loop-ivopts.c: Likewise. + * tree-ssa-loop-manip.c: Likewise. + * tree-ssa-loop-niter.c: Likewise. + * tree-ssa-loop-prefetch.c: Likewise. + * tree-ssa-loop-unswitch.c: Likewise. + * tree-ssa-reassoc.c: Likewise. + * tree-vect-data-refs.c: Likewise. + * tree-vect-loop.c: Likewise. + * tree-vect-loop-manip.c: Likewise. + * tree-vectorizer.c: Likewise. + * tree-vect-stmts.c: Likewise. + * tree-vrp.c: Likewise. + +2013-10-23 Bill Schmidt + + * config/rs6000/altivec.md (mulv8hi3): Adjust for little endian. + +2013-10-23 Jakub Jelinek + + PR tree-optimization/58775 + PR tree-optimization/58791 + * tree-ssa-reassoc.c (reassoc_stmt_dominates_stmt_p): New function. + (insert_stmt_after): Rewritten, don't move the stmt, but really + insert it. + (get_stmt_uid_with_default): Remove. + (build_and_add_sum): Use insert_stmt_after and + reassoc_stmt_dominates_stmt_p. Fix up uid if bb contains only labels. + (update_range_test): Set uid on stmts added by + force_gimple_operand_gsi. Don't immediately modify statements + in inter-bb optimization, just update oe->op values. + (optimize_range_tests): Return bool whether any changed have been made. + (update_ops): New function. + (struct inter_bb_range_test_entry): New type. + (maybe_optimize_range_tests): Perform statement changes here. + (not_dominated_by, appears_later_in_bb, get_def_stmt, + ensure_ops_are_available): Remove. + (find_insert_point): Rewritten. + (rewrite_expr_tree): Remove MOVED argument, add CHANGED argument, + return LHS of the (new resp. old) stmt. Don't call + ensure_ops_are_available, don't reuse SSA_NAMEs, recurse first + instead of last, move new stmt at the right place. + (linearize_expr, repropagate_negates): Don't reuse SSA_NAMEs. + (negate_value): Likewise. Set uids. + (break_up_subtract_bb): Initialize uids. + (reassociate_bb): Adjust rewrite_expr_tree caller. + (do_reassoc): Don't call renumber_gimple_stmt_uids. + +2013-10-23 David Edelsohn + + PR target/58838 + * config/rs6000/rs6000.md (mulsi3_internal1 and splitter): Add + TARGET_32BIT final condition. + (mulsi3_internal2 and splitter): Same. + +2013-10-23 Jeff Law + + * tree-ssa-threadedge.c (thread_across_edge): Do not allow threading + through joiner blocks with abnormal outgoing edges. + + * tree-ssa-threadupdate.c (thread_block_1): Renamed from thread_block. + Add parameter JOINERS, to allow/disallow threading through joiner + blocks. + (thread_block): New. Call thread_block_1. + (mark_threaded_blocks): Remove code to filter out certain cases + of threading through joiner blocks. + (thread_through_all_blocks): Document how we can have a dangling + edge AUX field and clear it. + +2013-10-23 Ian Lance Taylor + + * doc/invoke.texi (Option Summary): Remove -fno-default-inline. + (C++ Dialect Options): Likewise. + (Optimize Options): Likewise. + +2013-10-23 Tom de Vries + + PR tree-optimization/58805 + * tree-ssa-tail-merge.c (stmt_local_def): Add gimple_vdef check. + +2013-10-23 Jakub Jelinek + + * tree-vect-patterns.c (vect_recog_divmod_pattern): Optimize + sequence based on get_range_info returned range. + +2013-10-23 Andrew MacLeod + + * tree-ssa.h: Remove all #include's + * gengtype.c (open_base_files): Adjust include list for gtype-desc.c. + * alias.c: Move required includes from tree-ssa.h. + * asan.c: Likewise. + * builtins.c: Likewise. + * calls.c: Likewise. + * cfgexpand.c: Likewise. + * cfghooks.c: Likewise. + * cfgloop.c: Likewise. + * cfgloopmanip.c: Likewise. + * cgraph.c: Likewise. + * cgraphbuild.c: Likewise. + * cgraphclones.c: Likewise. + * cgraphunit.c: Likewise. + * dse.c: Likewise. + * except.c: Likewise. + * expr.c: Likewise. + * final.c: Likewise. + * fold-const.c: Likewise. + * ggc-page.c: Likewise. + * gimple-builder.c: Likewise. + * gimple-fold.c: Likewise. + * gimple-iterator.c: Likewise. + * gimple-low.c: Likewise. + * gimple-pretty-print.c: Likewise. + * gimple-ssa-strength-reduction.c: Likewise. + * gimple-streamer-in.c: Likewise. + * gimple-streamer-out.c: Likewise. + * gimplify.c: Likewise. + * graphite-blocking.c: Likewise. + * graphite-clast-to-gimple.c: Likewise. + * graphite-dependences.c: Likewise. + * graphite-interchange.c: Likewise. + * graphite-optimize-isl.c: Likewise. + * graphite-poly.c: Likewise. + * graphite-scop-detection.c: Likewise. + * graphite-sese-to-poly.c: Likewise. + * graphite.c: Likewise. + * ipa-cp.c: Likewise. + * ipa-inline-analysis.c: Likewise. + * ipa-inline-transform.c: Likewise. + * ipa-inline.c: Likewise. + * ipa-prop.c: Likewise. + * ipa-pure-const.c: Likewise. + * ipa-reference.c: Likewise. + * ipa-split.c: Likewise. + * ipa-utils.c: Likewise. + * loop-init.c: Likewise. + * lto-cgraph.c: Likewise. + * lto-section-in.c: Likewise. + * lto-section-out.c: Likewise. + * lto-streamer-in.c: Likewise. + * lto-streamer-out.c: Likewise. + * lto-streamer.c: Likewise. + * omp-low.c: Likewise. + * passes.c: Likewise. + * predict.c: Likewise. + * print-tree.c: Likewise. + * profile.c: Likewise. + * sese.c: Likewise. + * targhooks.c: Likewise. + * tracer.c: Likewise. + * trans-mem.c: Likewise. + * tree-call-cdce.c: Likewise. + * tree-cfg.c: Likewise. + * tree-cfgcleanup.c: Likewise. + * tree-chrec.c: Likewise. + * tree-complex.c: Likewise. + * tree-data-ref.c: Likewise. + * tree-dfa.c: Likewise. + * tree-eh.c: Likewise. + * tree-emutls.c: Likewise. + * tree-if-conv.c: Likewise. + * tree-inline.c: Likewise. + * tree-into-ssa.c: Likewise. + * tree-loop-distribution.c: Likewise. + * tree-mudflap.c: Likewise. + * tree-nested.c: Likewise. + * tree-nrv.c: Likewise. + * tree-object-size.c: Likewise. + * tree-outof-ssa.c: Likewise. + * tree-parloops.c: Likewise. + * tree-phinodes.c: Likewise. + * tree-predcom.c: Likewise. + * tree-pretty-print.c: Likewise. + * tree-profile.c: Likewise. + * tree-scalar-evolution.c: Likewise. + * tree-sra.c: Likewise. + * tree-ssa-address.c: Likewise. + * tree-ssa-alias.c: Likewise. + * tree-ssa-ccp.c: Likewise. + * tree-ssa-coalesce.c: Likewise. + * tree-ssa-copy.c: Likewise. + * tree-ssa-copyrename.c: Likewise. + * tree-ssa-dce.c: Likewise. + * tree-ssa-dom.c: Likewise. + * tree-ssa-dse.c: Likewise. + * tree-ssa-forwprop.c: Likewise. + * tree-ssa-ifcombine.c: Likewise. + * tree-ssa-live.c: Likewise. + * tree-ssa-loop-ch.c: Likewise. + * tree-ssa-loop-im.c: Likewise. + * tree-ssa-loop-ivcanon.c: Likewise. + * tree-ssa-loop-ivopts.c: Likewise. + * tree-ssa-loop-manip.c: Likewise. + * tree-ssa-loop-niter.c: Likewise. + * tree-ssa-loop-prefetch.c: Likewise. + * tree-ssa-loop-unswitch.c: Likewise. + * tree-ssa-loop.c: Likewise. + * tree-ssa-math-opts.c: Likewise. + * tree-ssa-operands.c: Likewise. + * tree-ssa-phiopt.c: Likewise. + * tree-ssa-phiprop.c: Likewise. + * tree-ssa-pre.c: Likewise. + * tree-ssa-propagate.c: Likewise. + * tree-ssa-reassoc.c: Likewise. + * tree-ssa-sccvn.c: Likewise. + * tree-ssa-sink.c: Likewise. + * tree-ssa-strlen.c: Likewise. + * tree-ssa-structalias.c: Likewise. + * tree-ssa-tail-merge.c: Likewise. + * tree-ssa-ter.c: Likewise. + * tree-ssa-threadedge.c: Likewise. + * tree-ssa-threadupdate.c: Likewise. + * tree-ssa-uncprop.c: Likewise. + * tree-ssa-uninit.c: Likewise. + * tree-ssa.c: Likewise. + * tree-ssanames.c: Likewise. + * tree-stdarg.c: Likewise. + * tree-streamer-in.c: Likewise. + * tree-switch-conversion.c: Likewise. + * tree-tailcall.c: Likewise. + * tree-vect-data-refs.c: Likewise. + * tree-vect-generic.c: Likewise. + * tree-vect-loop-manip.c: Likewise. + * tree-vect-loop.c: Likewise. + * tree-vect-patterns.c: Likewise. + * tree-vect-slp.c: Likewise. + * tree-vect-stmts.c: Likewise. + * tree-vectorizer.c: Likewise. + * tree-vrp.c: Likewise. + * tree.c: Likewise. + * tsan.c: Likewise. + * value-prof.c: Likewise. + * var-tracking.c: Likewise. + * varpool.c: Likewise. + * vtable-verify.c: Likewise. + +2013-10-23 Jan-Benedict Glaw + + * config/tilegx/tilegx.c: Include "tree.h". + +2013-10-23 Jakub Jelinek + + * gimple-pretty-print.c (dump_ssaname_info): Always print "# " before + the info, not after it. + (gump_gimple_phi): Add COMMENT argument, if true, print "# " after + dump_ssaname_info call. + (pp_gimple_stmt_1): Adjust caller. + (dump_phi_nodes): Likewise. Don't print "# " here. + +2013-10-22 Jan Hubicka + + * i386.h (TARGET_MISALIGNED_MOVE_STRING_PROLOGUES_EPILOGUES): New + tuning flag. + * x86-tune.def (TARGET_MISALIGNED_MOVE_STRING_PROLOGUES): Define it. + * i386.c (expand_small_movmem_or_setmem): New function. + (expand_set_or_movmem_prologue_epilogue_by_misaligned_moves): New + function. + (alg_usable_p): Add support for value ranges; cleanup. + (ix86_expand_set_or_movmem): Add support for misaligned moves. + +2013-10-22 Sterling Augustine + + * doc/invoke.texi: Document -ggnu-pubnames. + * common.opt: Add new option -ggnu-pubnames and modify -gpubnames + logic. + * dwarf2out.c: Include gdb/gdb-index.h. + (DEBUG_PUBNAMES_SECTION, DEBUG_PUBTYPES_SECTION): Handle + debug_generate_pub_sections. + (is_java, output_pubtables, output_pubname): New functions. + (include_pubname_in_output): Handle debug_generate_pub_sections at + level 2. + (size_of_pubnames): Use new local space_for_flags based on + debug_generate_pub_sections. + (output_pubnames): Unify pubnames and pubtypes output logic. + Genericize comments. Call output_pubname. + (dwarf2out_finish): Move logic to output_pubnames and call it. + +2013-10-22 Uros Bizjak + + PR target/58779 + * config/i386/i386.c (put_condition_code) : + Remove CCCmode handling. + : Return 'c' suffix for CCCmode. + : Return 'nc' suffix for CCCmode. + (ix86_cc_mode) : Do not generate overflow checks. + * config/i386/i386.md (*sub3_cconly_overflow): Remove. + (*sub3_cc_overflow): Ditto. + (*subsi3_zext_cc_overflow): Ditto. + +2013-10-22 Steve Ellcey + + * config/mips/mips.c (mips_rtx_costs): Fix cost estimate for nor + (AND (NOT OP1) (NOT OP2)). + +2013-10-22 Bill Schmidt + + * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Reverse + meaning of merge-high and merge-low masks for little endian; avoid + use of vector-pack masks for little endian for mismatched modes. + +2013-10-22 Jan-Benedict Glaw + + * config/tilepro/tilepro.c: Include "tree.h". + +2013-10-22 Andreas Schwab + + * config/m68k/m68k.c (notice_update_cc): Handle register conflict + with PRE_DEC. + +2013-10-22 Paolo Carlini + + * doc/contrib.texi ([Fran@,{c}ois Dumont], [Tim Shen], + [Ed Smith-Rowland]): New entries. + ([Stephen M. Webb]): Update. + +2013-10-22 Andrew MacLeod + + * tree-ssa-ter.h: Remove duplicate copy of file contents. + +2013-10-21 Marek Polacek + + PR middle-end/58809 + * fold-const.c (fold_range_test): Return 0 if the type is not + an integral type. + +2013-10-21 Richard Sandiford + + * system.h: Move hwint.h include further down. + * hwint.h (sext_hwi, zext_hwi): Define unconditionally. Add + gcc_checking_asserts. + * hwint.c (sext_hwi, zext_hwi): Delete ENABLE_CHECKING versions. + +2013-10-21 Bernd Edlinger + + Fix volatile issues in optimize_bit_field_compare. + * fold-const.c (optimize_bit_field_compare): Bail out if + lvolatilep or rvolatilep. + +2013-10-21 Bernd Edlinger + + Fix DECL_BIT_FIELD depencency on flag_strict_volatile_bitfields + and get_inner_reference returning different pmode for non-volatile + bit-field members dependent on flag_strict_volatile_bitfields. + * stor-layout.c (layout_decl): Remove special handling of + flag_strict_volatile_bitfields. + * expr.c (get_inner_reference): Don't use DECL_BIT_FIELD + if flag_strict_volatile_bitfields > 0 and TREE_THIS_VOLATILE. + +2013-10-21 Paulo Matos + + * ipa-inline.c (edge_badness): Cap edge->count at max_count for badness + calculations. + +2013-10-21 Jeff Law + + * tree-ssa-threadedge.c (thread_through_normal_block): New + argument VISITED. Remove VISISTED as a local variable. When we + have a threadable jump, verify the destination of the jump has not + been visised. + (thread_across_edge): Allocate VISITED bitmap once at function + scope and use it throughout. Make sure to set appropriate bits in + VISITED for E (start of jump thread path). + * tree-ssa-threadupdate.c (mark_threaded_blocks): Reject threading + through a joiner if any edge on the path has a recorded jump thread. + +2013-10-21 Ian Lance Taylor + + * doc/invoke.texi (Optimize Options): For -fno-toplevel-reorder, + don't imply that attributes can solve all problems. + (Directory Options): Fix typo. + +2013-10-21 Kyrylo Tkachov + + * config/arm/arm.c (cortexa9_extra_costs): Update mult costs for + extend and extend_add. + +2013-10-21 Richard Biener + + PR tree-optimization/58794 + * fold-const.c (operand_equal_p): Compare FIELD_DECL operand + of COMPONENT_REFs with OEP_CONSTANT_ADDRESS_OF left in place. + +2013-10-21 Richard Biener + + PR middle-end/58742 + * fold-const.c (fold_binary_loc): Fold ((T) (X /[ex] C)) * C + to (T) X for sign-changing conversions (or no conversion). + +2013-10-20 Uros Bizjak + + * config/i386/i386.md (kxnor): Add FLAGS_REG clobber. + +2013-10-20 Jan Hubicka + + * config/i386/i386-tune.def: Add comment; organize into categories + +2013-10-21 Michael Zolotukhin + + * config/i386/i386.c (expand_set_or_movmem_via_loop): Add issetmem + argument. Update function comment. + (expand_set_or_movmem_via_rep): New function combining + expand_movmem_via_rep_mov and expand_setmem_via_rep_stos. + (expand_movmem_via_rep_mov): Remove. + expand_setmem_via_rep_stos): Remove. + (expand_movmem_epilogue): Update calls correspondingly. + (expand_setmem_epilogue_via_loop): Likewise. + (emit_memset): New. + (expand_setmem_epilogue): Add VEC_VALUE argument, refactor. + (expand_set_or_movmem_prologue): New function combining + expand_movmem_prologue and expand_setmem_prologue. + (expand_movmem_prologue): Remove. + (expand_setmem_prologue): Remove. + (expand_set_or_movmem_constant_prologue): New function combining + expand_constant_movmem_prologue and expand_constant_setmem_prologue. + (expand_constant_movmem_prologue): Remove. + (expand_constant_setmem_prologue): Remove. + (promote_duplicated_reg): Allow vector-const0 value. + (ix86_expand_set_or_movmem): New function combining ix86_expand_movmem + and ix86_expand_setmem. + (ix86_expand_movmem): Call ix86_expand_set_or_movmem. + (ix86_expand_setmem): Call ix86_expand_set_or_movmem. + +2013-10-21 Diego Novillo + + * asan.c: Include tree.h + * bb-reorder.c: Likewise. + * cfgcleanup.c: Likewise. + * cfgloopmanip.c: Likewise. + * data-streamer-in.c: Likewise. + * data-streamer-out.c: Likewise. + * data-streamer.c: Likewise. + * dwarf2cfi.c: Likewise. + * graphite-blocking.c: Likewise. + * graphite-clast-to-gimple.c: Likewise. + * graphite-dependences.c: Likewise. + * graphite-interchange.c: Likewise. + * graphite-optimize-isl.c: Likewise. + * graphite-poly.c: Likewise. + * graphite-scop-detection.c: Likewise. + * graphite-sese-to-poly.c: Likewise. + * graphite.c: Likewise. + * ipa-devirt.c: Likewise. + * ipa-profile.c: Likewise. + * ipa.c: Likewise. + * ira.c: Likewise. + * loop-init.c: Likewise. + * loop-unroll.c: Likewise. + * lower-subreg.c: Likewise. + * lto/lto-object.c: Likewise. + * recog.c: Likewise. + * reginfo.c: Likewise. + * tree-loop-distribution.c: Likewise. + * tree-parloops.c: Likewise. + * tree-ssa-strlen.c: Likewise. + * tree-streamer.c: Likewise. + * value-prof.c: Likewise. + * target-globals.c: Likewise. + * expr.h: Include tree-core.h instead of tree.h. + * gimple.h: Likewise. + * ipa-prop.h: Likewise. + * ipa-utils.h: Likewise. + * lto-streamer.h: Likewise. + * streamer-hooks.h: Likewise. + * ipa-reference.h: Include cgraph.h instead of tree.h. + * cgraph.h: Include basic-block.h instead of tree.h. + * tree-streamer.h: Do not include tree.h. + * genattrtab.c (write_header): Generate inclusion of tree.h. + * genautomata.c (main): Likewise. + * genemit.c: Likewise. + * genopinit.c: Likewise. + * genoutput.c (output_prologue): Likewise. + * genpeep.c: Likewise. + +2013-10-20 Bill Schmidt + + * config/rs6000/altivec.md (vec_unpacku_hi_v16qi): Adjust for + little endian. + (vec_unpacku_hi_v8hi): Likewise. + (vec_unpacku_lo_v16qi): Likewise. + (vec_unpacku_lo_v8hi): Likewise. + +2013-10-20 Jan Hubicka + + * config/i386/x86-tune.def (X86_TUNE_SLOW_IMUL_IMM32_MEM, + X86_TUNE_SLOW_IMUL_IMM8): Keep enabled only for K8 and AMDFAM10. + (X86_TUNE_USE_VECTOR_FP_CONVERTS): Disable for generic. + +2013-10-20 Richard Sandiford + + * config/mips/mips.h (ISA_HAS_WSBH): Define. + * config/mips/mips.md (UNSPEC_WSBH, UNSPEC_DSBH, UNSPEC_DSHD): New + constants. + (bswaphi2, bswapsi2, bswapdi2, wsbh, dsbh, dshd): New patterns. + +2013-10-19 John David Anglin + + PR target/58603 + * system.h: Undef m_slot. + +2013-10-19 Bill Schmidt + + * config/rs6000/rs6000.c (vspltis_constant): Make sure we check + all elements for both endian flavors. + +2013-10-19 Uros Bizjak + + PR target/58792 + * config/i386/i386.c (ix86_function_value_regno): Add DX_REG, + ST1_REG and XMM1_REG for 32bit and 64bit targets. Also add DI_REG + and SI_REG for 64bit SYSV ABI targets. + +2013-10-19 Uros Bizjak + + * mode-switching.c (create_pre_exit): Rename maybe_builtin_apply + to multi_reg_return. Clarify that we are skipping USEs of multiple + return registers. Use bool type where appropriate. + +2013-10-18 Jan Hubicka + + * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Disable accumulation + for cold functions. + * x86-tune.def (X86_TUNE_USE_LEAVE): Update comment. + (X86_TUNE_PUSH_MEMORY): Likewise. + (X86_TUNE_AVX256_UNALIGNED_LOAD_OPTIMAL, + X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL): New. + (X86_TUNE_ACCUMULATE_OUTGOING_ARGS, X86_TUNE_ALWAYS_FANCY_MATH_387): + New. + * i386.c (x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387, + x86_avx256_split_unaligned_load, x86_avx256_split_unaligned_store): + Remove. + (ix86_option_override_internal): Update to use tune features instead + of variables. + +2013-10-18 Cong Hou + + PR tree-optimization/58508 + * tree-vect-loop-manip.c (vect_loop_versioning): Hoist loop invariant + statement that contains data refs with zero-step. + +2013-10-18 Andrew MacLeod + + * tree-ssa.h: Don't include gimple-low.h, tree-ssa-address.h, + sbitmap.h, tree-ssa-threadedge.h, tree-ssa-dom.h and tree-cfgcleanup.h. + * gimple-low.c (gimple_check_call_arg, + gimple_check_call_matching_types): Move to cgraph.c. + * gimple-low.h: Remove prototype. + * cgraph.c: (gimple_check_call_arg, gimple_check_call_matching_types): + Relocate from gimple-low.c. + * cgraph.h: Add prototype. Don't include basic-block.h. + * gimplify.c: Add gimple-low to include list. + * omp-low.c: Add gimple-low and tree-cfgcleanup.h to include list. + * tree-eh.c: Add gimple-low to include list. + * tree-nested.c: Likewise. + * cfgexpand.c: Add tree-ssa-address.h to include list. + * expr.c: Likewise. + * gimple-fold.c: Likewise. + * gimple-ssa-strength-reduction.c: Likewise. + * trans-mem.c: Likewise. + * tree-mudflap.c: Likewise. + * tree-ssa-loop-ivopts.c: Likewise. + * tree-ssa-dom.c: Include tree-ssa-threadedge.h and tree-ssa-dom.h. + (degenerate_phi_result): Move to tree-phinodes.c. + * tree-ssa-loop-ch.c: Include tree-ssa-threadedge.h. + * tree-ssa-threadedge.c: Likewise. + * tree-vrp.c: Likewise. + * tree-phinodes.c (degenerate_phi_result): Relocate here. + * tree-ssa-dom.h (degenerate_phi_result): Remove Prototype. + * tree-phinodes.h (degenerate_phi_result): Add prototype. + * tree-ssa-copy.c: Include tree-ssa-dom.h. + * tree-ssa-forwprop.c: Likewise. + * tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing, + pass_data_cleanup_cfg_post_optimizing, + make_pass_cleanup_cfg_post_optimizing): Relocate from tree-optimize.c. + * tree-optimize.c: Delete File. + * graphite.c: Include tree-cfgcleanup.h. + * passes.c: Likewise. + * tree-cfg.c: Likewise. + * tree-profile.c: Likewise. + * tree-ssa-dse.c: Likewise. + * tree-ssa-loop-ivcanon.c: Likewise. + * tree-switch-conversion.c: Don't include tree-ssa-operands.h. + * tree-outof-ssa.c: Include sbitmap.h. + * tree-ssa-live.c: Likewise. + * tree-ssa-propagate.c: Likewise. + * tree-ssa-structalias.c: Likewise. + * tree-stdarg.c: Likewise. + * Makefile.in (OBJS): Delete tree-optimize.o. + * basic-block.h (gcov_type, gcov_type_unsigned): Move to coretypes.h. + * coretypes.h (gcov_type, gcov_type_unsigned): Relocate here. + * varasm.c: Include basic-block.h. + * cfgloop.h: Include function.h instead of basic-block.h + (bb_loop_depth): Move to cfgloop.c. + * cfgloop.c (bb_loop_depth): Relocate from cfgloop.h. + +2013-10-18 Teresa Johnson + + * predict.c (probably_never_executed): Compare frequency-based + count to number of training runs. + * params.def (UNLIKELY_BB_COUNT_FRACTION): New parameter. + +2013-10-18 Kyrylo Tkachov + + * config/arm/arm.c (cortexa9_extra_costs): New table. + (arm_cortex_a9_tune): Use cortexa9_extra_costs. + +2013-10-18 Jeff Law + + * tree-ssa-threadupdate.c: Do not include "tm.h" or "tm_p.h". + + * tree-ssa-threadupdate.c: Include "dbgcnt.h". + (register_jump_thread): Add "registered_jump_thread" debug + counter support. + * dbgcnt.def (registered_jump_thread): New debug counter. + +2013-10-18 Andrew MacLeod + + * config/rs6000/rs6000.c: Include cgraph.h. + +2013-10-18 Teresa Johnson + + * tree-ssa-tail-merge.c (replace_block_by): Update edge + weights during merging. + +2013-10-18 Andrew MacLeod + + * tree-cfg.h: Rename from tree-flow.h. Remove #includes. + * tree-ssa.h: Relocate required #includes from tree-cfg.h. + * tree-ssa-operands.h: Remove prototype. + * tree-ssa-operands.c (virtual_operand_p): Move to gimple.c. + * gimple.c (virtual_operand_p): Relocate from gimple.c. + * gimple.h: Add prototype. + * gimple-ssa.h: Include tree-ssa-operands.h. + * tree-dump.c: Add tree-cfg.h to include list. + * tree-ssa-alias.c: Add ipa-reference.h to include list. + * config/alpha/alpha.c: Include gimple-ssa.h instead of tree-flow.h. + * config/i386/i386.c: Don't include tree-flow.h. + * config/rs6000/rs6000.c: Likewise. + +2013-10-18 Jan-Benedict Glaw + + * config/frv/frv.c (frv_init_cumulative_args): Fix wrong cast. + +2013-10-18 Richard Biener + + * stor-layout.c (layout_type): Do not change TYPE_PRECISION + or TYPE_UNSIGNED of integral types. + (set_min_and_max_values_for_integral_type): Leave TYPE_MIN/MAX_VALUE + NULL_TREE for zero-precision integral types. + +2013-10-18 James Greenhalgh + + * config/aarch64/arm_neon.h + (vcvt_n_<32,64>_<32,64>): Correct argument types. + +2013-10-17 Sriraman Tallam + + PR target/57756 + * opth-gen.awk: Define target_flags_explicit. + +2013-10-17 Michael Meissner + + * config/rs6000/rs6000.c (enum rs6000_reload_reg_type): Add new + fields to the reg_addr array that describes the valid addressing + mode for any register, general purpose registers, floating point + registers, and Altivec registers. + (FIRST_RELOAD_REG_CLASS): Likewise. + (LAST_RELOAD_REG_CLASS): Likewise. + (struct reload_reg_map_type): Likewise. + (reload_reg_map_type): Likewise. + (RELOAD_REG_VALID): Likewise. + (RELOAD_REG_MULTIPLE): Likewise. + (RELOAD_REG_INDEXED): Likewise. + (RELOAD_REG_OFFSET): Likewise. + (RELOAD_REG_PRE_INCDEC): Likewise. + (RELOAD_REG_PRE_MODIFY): Likewise. + (reg_addr): Likewise. + (mode_supports_pre_incdec_p): New helper functions to say whether + a given mode supports PRE_INC, PRE_DEC, and PRE_MODIFY. + (mode_supports_pre_modify_p): Likewise. + (rs6000_debug_vector_unit): Rearrange the -mdebug=reg output to + print the valid address mode bits for each mode. + (rs6000_debug_print_mode): Likewise. + (rs6000_debug_reg_global): Likewise. + (rs6000_setup_reg_addr_masks): New function to set up the address + mask bits for each type. + (rs6000_init_hard_regno_mode_ok): Use memset to clear arrays. + Call rs6000_setup_reg_addr_masks to set up the address mask bits. + (rs6000_legitimate_address_p): Use mode_supports_pre_incdec_p and + mode_supports_pre_modify_p to determine if PRE_INC, PRE_DEC, and + PRE_MODIFY are supported. + (rs6000_output_move_128bit): Change to use {src,dest}_vmx_p for altivec + registers, instead of {src,dest}_av_p. + (rs6000_print_options_internal): Tweak the debug output slightly. + +2013-10-17 Uros Bizjak + + * config/i386/sse.md (*vec_widen_smult_even_v8si): Remove + isa attribute. + +2013-10-17 Andrew MacLeod + + * tree-flow.h (struct omp_region): Move to omp-low.c. + Remove omp_ prototypes and variables. + * gimple.h (omp_reduction_init): Move prototype to omp-low.h. + (copy_var_decl): Relocate prototype from tree-flow.h. + * gimple.c (copy_var_decl): Relocate from omp-low.c. + * tree.h: Move prototype to omp-low.h. + * omp-low.h: New File. Relocate prototypes here. + * omp-low.c (struct omp_region): Make local here. + (root_omp_region): Make static. + (copy_var_decl) Move to gimple.c. + (new_omp_region): Make static. + (make_gimple_omp_edges): New. Refactored from tree-cfg.c make_edges. + * tree-cfg.c: Include omp-low.h. + (make_edges): Factor out OMP specific bits to make_gimple_omp_edges. + * gimplify.c: Include omp-low.h. + * tree-parloops.c: Likewise. + +2013-10-17 Uros Bizjak + + * config/i386/i386.c (ix86_fixup_binary_operands): When both source + operands are in memory, prefer to force non-matched operand 1 to + the register. + +2013-10-17 Michael Meissner + + PR target/58673 + * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Only + restrict TImode addresses to single indirect registers if both + -mquad-memory and -mvsx-timode are used. + (rs6000_output_move_128bit): Use quad_load_store_p to determine if + we should emit load/store quad. Remove using %y for quad memory + addresses. + + * config/rs6000/rs6000.md (mov_ppc64, TI/PTImode): Add + constraints to allow load/store quad on machines where TImode is + not allowed in VSX registers. Use 'n' instead of 'F' constraint + for TImode to load integer constants. + +2013-10-17 Kyrylo Tkachov + + * config/aarch64/aarch64.c (aarch64_print_operand): Handle 'c'. + +2013-10-17 Marcus Shawcroft + + * config/aarch64/aarch64.c (aarch64_preferred_reload_class): Adjust + handling of STACK_REG. + +2013-10-17 Richard Biener + + PR tree-optimization/58143 + * tree-ssa-loop-im.c (arith_code_with_undefined_signed_overflow): + New function. + (rewrite_to_defined_overflow): Likewise. + (move_computations_dom_walker::before_dom): Rewrite stmts + with undefined signed overflow that are not always executed + into unsigned arithmetic. + +2013-10-16 Michael Meissner + + PR target/57756 + * config/rs6000/rs6000.opt (rs6000_isa_flags_explicit): Move the + explicit isa flag to be an options variable, instead of using + global_options_set. Remove define from rs6000.h. + * config/rs6000/rs6000.h (rs6000_isa_flags_explicit): Likewise. + + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Initialize rs6000_isa_flags_explicit. + (rs6000_function_specific_save): Add gcc_options* parameter, so + that the powerpc builds after the 2013-10-15 changes. + (rs6000_function_specific_restore): Likewise. + +2013-10-16 DJ Delorie + + * config/rl78/rl78.c (rl78_alloc_address_registers_macax): Verify + op is a REG before checking REGNO. + (rl78_alloc_physical_registers): Verify pattern is a SET before + checking SET_SRC. + +2013-10-16 Bill Schmidt + + * config/rs6000/vector.md (vec_unpacks_hi_v4sf): Correct for + endianness. + (vec_unpacks_lo_v4sf): Likewise. + (vec_unpacks_float_hi_v4si): Likewise. + (vec_unpacks_float_lo_v4si): Likewise. + (vec_unpacku_float_hi_v4si): Likewise. + (vec_unpacku_float_lo_v4si): Likewise. + +2013-10-16 Bill Schmidt + + * config/rs6000/vsx.md (vsx_concat_): Adjust output for LE. + (vsx_concat_v2sf): Likewise. + +2013-10-16 James Greenhalgh + + * config/aarch64/aarch64.md + (*mov_aarch64): Fix output template for DUP (element) Scalar. + +2013-10-16 Andrew MacLeod + + PR tree-optimization/58697 + * cfgloop.c (get_estimated_loop_iterations_int): Rename from + estimated_loop_iterations_int. + (max_stmt_executions_int): Call get_max_loop_iterations_int. + (get_max_loop_iterations_int): New. HWINT version of + get_max_loop_iterations. + * cfgloop.h: Add prototypes. + * loop-iv.c (find_simple_exit): call get_estimated_loop_iterations_int. + * loop-unroll.c (decide_peel_once_rolling): Call + get_estimated_loop_iterations_int. + * tree-ssa-loop-niter.c (estimated_loop_iterations_int): Add back. + * tree-ssa-loop-niter.h: Tweak prototypes. + +2013-10-16 David Malcolm + + * gengtype-parse.c (struct_field_seq): Ignore access-control + keywords ("public:" etc). + +2013-10-16 Marcus Shawcroft + + * config/aarch64/aarch64.c (aarch64_regno_regclass): Classify + FRAME_POINTER_REGNUM and ARG_POINTER_REGNUM as POINTER_REGS. + +2013-10-16 Yvan Roux + + * config/arm/arm.opt (mlra): New option. + * config/arm/arm.c (arm_lra_p): New function. + (TARGET_LRA_P): Define. + +2013-10-16 Paulo Matos + + * tree-core.h (tree_code_name): Remove. + * tree.h (get_tree_code_name): New prototype. + * tree.c (tree_code_name): Make static. + (get_tree_code_name): New function. + (dump_tree_statistics, tree_check_failed, tree_not_check_failed, + tree_class_check_failed, tree_range_check_failed, + tree_not_class_check_failed, omp_clause_check_failed, + tree_contains_struct_check_failed, tree_operand_check_failed): Use new + wrapper get_tree_code_name instead of calling tree_code_name directly. + * tree-vrp.c (dump_asserts_for): Likewise. + * tree-dump.c (dequeue_and_dump): Likewise. + * tree-pretty-print.c (do_niy, dump_generic_node): Likewise. + * tree-pretty-print.h (pp_unsupported_tree): Likewise. + * lto-streamer-out.c (lto_write_tree, DFS_write_tree): Likewise. + * tree-ssa-dom.c (print_expr_hash_elt): Likewise. + * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs, + dump_ternary_rhs, dump_gimple_assign, dump_gimple_cond, + dump_gimple_omp_for): Likewise. + * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise. + * tree-ssa-pre.c (print_pre_expr): Likewise. + * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise. + * print-tree.c (print_node_brief, print_node): Likewise. + * gimple.c (gimple_check_failed): Likewise. + * lto-streamer.c (lto_tag_name, print_lto_report): Likewise. + * config/frv/frv.c (frv_init_cumulative_args): Likewise. + * config/mep/mep.c (mep_validate_vliw): Likewise. + * config/iq2000/iq2000.c (init_cumulative_args): Likewise. + * config/rs6000/rs6000.c (init_cumulative_args): Likewise. + +2013-10-16 Ganesh Gopalasubramanian + + * config/i386/i386.c (ix86_option_override_internal): Enable FMA4 + for AMD bdver3. + +2013-10-16 Hans-Peter Nilsson + + * config/cris/t-elfmulti (MULTILIB_OPTIONS, MULTILIB_DIRNAMES) + (MULTILIB_MATCHES): Add multilib for -march=v8. + +2013-10-15 Sriraman Tallam + + PR target/57756 + * optc-save-gen.awk: Add extra parameter to the save and restore + target calls. + * opth-gen.awk: Generate new TARGET_* macros to accept a parameter. + * tree.c (build_optimization_node): New parameter. Add extra parameter + to call to cl_optimization_save. + (build_target_option_node): New parameter. Add extra parameter + to call to cl_target_option_save. + * tree.h (build_optimization_node): New parameter. + (build_target_option_node): New parameter. + * c-family/c-common.c (handle_optimize_attribute): Fix calls to + build_optimization_node and build_target_option_node. + * c-family/c-pragma.c (handle_pragma_optimize): Ditto. + (handle_pragma_push_options): Ditto. + * toplev.c (process_options): Ditto. + * opts.c (init_options_struct): Check for opts_set non-null. + * target.def (target_option.save): New parameter. + (target_option.restore): New parameter. + * tm.texi: Generate. + * config/i386/i386-c.c (ix86_target_macros_internal): Ditto. + (ix86_pragma_target_parse): Ditto. + * config/i386/i386-protos.h (ix86_valid_target_attribute_tree): New + parameters. + * config/rs6000/rs6000.c (rs6000_option_override_internal): Fix calls + to build_optimization_node and build_target_option_node. + (rs6000_valid_attribute_p): Ditto. + (rs6000_pragma_target_parse): Ditto. + * config/i386/i386.opt (x_ix86_target_flags_explicit): New TargetSave + data. + * config/i386/i386.h: + TARGET_64BIT_P: New Macro + TARGET_MMX_P: New Macro. + TARGET_3DNOW_P: New Macro. + TARGET_3DNOW_A_P: New Macro. + TARGET_SSE_P: New Macro. + TARGET_SSE2_P: New Macro. + TARGET_SSE3_P: New Macro. + TARGET_SSSE3_P: New Macro. + TARGET_SSE4_1_P: New Macro. + TARGET_SSE4_2_P: New Macro. + TARGET_AVX_P: New Macro. + TARGET_AVX2_P: New Macro. + TARGET_AVX512F_P: New Macro. + TARGET_AVX512PF_P: New Macro. + TARGET_AVX512ER_P: New Macro. + TARGET_AVX512CD_P: New Macro. + TARGET_FMA_P: New Macro. + TARGET_SSE4A_P: New Macro. + TARGET_FMA4_P: New Macro. + TARGET_XOP_P: New Macro. + TARGET_LWP_P: New Macro. + TARGET_ABM_P: New Macro. + TARGET_BMI_P: New Macro. + TARGET_BMI2_P: New Macro. + TARGET_LZCNT_P: New Macro. + TARGET_TBM_P: New Macro. + TARGET_POPCNT_P: New Macro. + TARGET_SAHF_P: New Macro. + TARGET_MOVBE_P: New Macro. + TARGET_CRC32_P: New Macro. + TARGET_AES_P: New Macro. + TARGET_PCLMUL_P: New Macro. + TARGET_CMPXCHG16B_P: New Macro. + TARGET_FSGSBASE_P: New Macro. + TARGET_RDRND_P: New Macro. + TARGET_F16C_P: New Macro. + TARGET_RTM_P: New Macro. + TARGET_HLE_P: New Macro. + TARGET_RDSEED_P: New Macro. + TARGET_PRFCHW_P: New Macro. + TARGET_ADX_P: New Macro. + TARGET_FXSR_P: New Macro. + TARGET_XSAVE_P: New Macro. + TARGET_XSAVEOPT_P: New Macro. + TARGET_LP64_P: New Macro. + TARGET_X32_P: New Macro. + TARGET_FPMATH_DEFAULT_P: New Macro. + TARGET_FLOAT_RETURNS_IN_80387_P: New Macro. + * config/i386/i386.c (ix86_option_override_internal): New parameters. + opts and opts_set. + Change ix86_tune_string to access opts->x_ix86_tune_string. + Change ix86_isa_flags to access opts->x_ix86_isa_flags. + Change ix86_arch_string to access opts->x_ix86_arch_string. + Change ix86_stringop_alg to access opts->x_ix86_stringop_alg. + Change ix86_pmode to access opts->x_ix86_pmode. + Change ix86_abi to access opts->x_ix86_abi. + Change ix86_cmodel to access opts->x_ix86_cmodel. + Change ix86_asm_dialect to access opts->x_ix86_asm_dialect. + Change ix86_isa_flags_explicit to access + opts->x_ix86_isa_flags_explicit. + Change ix86_dump_tunes to access opts->x_ix86_dump_tunes. + Change ix86_regparm to access opts->x_ix86_regparm. + Change ix86_branch_cost to access opts->x_ix86_branch_cost. + Change ix86_preferred_stack_boundary_arg to access + opts->x_ix86_preferred_stack_boundary_arg. + Change ix86_force_align_arg_pointer to access + opts->x_ix86_force_align_arg_pointer. + Change ix86_incoming_stack_boundar_arg to access + opts->x_ix86_incoming_stack_boundar_arg. + Change ix86_fpmath to access opts->x_ix86_fpmath. + Change ix86_veclibabi_type to access opts->x_ix86_veclibabi_type. + Change ix86_recip_name to access opts->x_ix86_recip_name. + Change ix86_stack_protector_guard to access + opts->x_ix86_stack_protector_guard. + Change ix86_tune_memcpy_strategy to access + opts->x_ix86_tune_memcpy_strategy. + Change ix86_tune_memset_strategy to access + opts->x_ix86_tune_memset_strategy. + Change global_options to access opts. + Change global_options_set to access opts_set. + Change TARGET_64BIT to TARGET_64BIT_P (opts->...). + Change TARGET_MMX to TARGET_MMX_P (opts->...). + Change TARGET_3DNOW to TARGET_3DNOW_P (opts->...). + Change TARGET_3DNOW_A to TARGET_3DNOW_A_P (opts->...). + Change TARGET_SSE to TARGET_SSE_P (opts->...). + Change TARGET_SSE2 to TARGET_SSE2_P (opts->...). + Change TARGET_SSE3 to TARGET_SSE3_P (opts->...). + Change TARGET_SSSE3 to TARGET_SSSE3_P (opts->...). + Change TARGET_SSE4_1 to TARGET_SSE4_1_P (opts->...). + Change TARGET_SSE4_2 to TARGET_SSE4_2_P (opts->...). + Change TARGET_AVX to TARGET_AVX_P (opts->...). + Change TARGET_AVX2 to TARGET_AVX2_P (opts->...). + Change TARGET_AVX512F to TARGET_AVX512F_P (opts->...). + Change TARGET_AVX512PF to TARGET_AVX512PF_P (opts->...). + Change TARGET_AVX512ER to TARGET_AVX512ER_P (opts->...). + Change TARGET_AVX512CD to TARGET_AVX512CD_P (opts->...). + Change TARGET_FMA to TARGET_FMA_P (opts->...). + Change TARGET_SSE4A to TARGET_SSE4A_P (opts->...). + Change TARGET_FMA4 to TARGET_FMA4_P (opts->...). + Change TARGET_XOP to TARGET_XOP_P (opts->...). + Change TARGET_LWP to TARGET_LWP_P (opts->...). + Change TARGET_ABM to TARGET_ABM_P (opts->...). + Change TARGET_BMI to TARGET_BMI_P (opts->...). + Change TARGET_BMI2 to TARGET_BMI2_P (opts->...). + Change TARGET_LZCNT to TARGET_LZCNT_P (opts->...). + Change TARGET_TBM to TARGET_TBM_P (opts->...). + Change TARGET_POPCNT to TARGET_POPCNT_P (opts->...). + Change TARGET_SAHF to TARGET_SAHF_P (opts->...). + Change TARGET_MOVBE to TARGET_MOVBE_P (opts->...). + Change TARGET_CRC32 to TARGET_CRC32_P (opts->...). + Change TARGET_AES to TARGET_AES_P (opts->...). + Change TARGET_PCLMUL to TARGET_PCLMUL_P (opts->...). + Change TARGET_CMPXCHG16B to TARGET_CMPXCHG16B_P (opts->...). + Change TARGET_FSGSBASE to TARGET_FSGSBASE_P (opts->...). + Change TARGET_RDRND to TARGET_RDRND_P (opts->...). + Change TARGET_F16C to TARGET_F16C_P (opts->...). + Change TARGET_RTM to TARGET_RTM_P (opts->...). + Change TARGET_HLE to TARGET_HLE_P (opts->...). + Change TARGET_RDSEED to TARGET_RDSEED_P (opts->...). + Change TARGET_PRFCHW to TARGET_PRFCHW_P (opts->...). + Change TARGET_ADX to TARGET_ADX_P (opts->...). + Change TARGET_FXSR to TARGET_FXSR_P (opts->...). + Change TARGET_XSAVE to TARGET_XSAVE_P (opts->...). + Change TARGET_XSAVEOPT to TARGET_XSAVEOPT_P (opts->...). + Change TARGET_LP64 to TARGET_LP64_P (opts->...). + Change TARGET_X32 to TARGET_X32_P (opts->...). + Change TARGET_FPMATH_DEFAULT to TARGET_FPMATH_DEFAULT_P (opts->...). + Change TARGET_FLOAT_RETURNS_IN_80387 to + TARGET_FLOAT_RETURNS_IN_80387_P (opts->...). + (ix86_function_specific_save): New parameter. Use opts-> fields + to replace global fields. + (ix86_function_specific_restore): Ditto. + (ix86_valid_target_attribute_inner_p): New parameters. + Fix recursive call. + Fix call to ix86_handle_option and set_option. + (ix86_valid_target_attribute_tree): New parameters. + Change global_options to access opts. + Change global_options_set to access opts_set. + Fix call to ix86_valid_target_attribute_inner_p. + Change ix86_tune_string to access opts->x_ix86_tune_string. + Change ix86_arch_string to access opts->x_ix86_arch_string. + Change ix86_fpmath to access opts->x_ix86_fpmath + Fix call to ix86_option_override_internal. + Fix call to ix86_add_new_builtins. + Fix calls to build_optimization_node and build_target_option_node. + (ix86_valid_target_attribute_p): Remove access to global_options. + Use new gcc_options structure func_options. + Fix call to ix86_valid_target_attribute_tree. + Fix call to build_optimization_node. + (get_builtin_code_for_version): Fix call to + ix86_valid_target_attribute_tree. + +2013-10-15 David Malcolm + + * Makefile.in (PICFLAG): New. + (enable_host_shared): New. + (INTERNAL_CFLAGS): Use PICFLAG. + (LIBIBERTY): Use pic build of libiberty.a if configured with + --enable-host-shared. + * configure.ac: Add --enable-host-shared, setting up new + PICFLAG variable. + * configure: Regenerate. + * doc/install.texi (--enable-shared): Add note contrasting it with ... + (--enable-host-shared): New option. + +2013-10-15 Richard Biener + + * tree-tailcall.c (find_tail_calls): Don't use tail-call recursion + for built-in functions. + +2013-10-15 Zhenqiang Chen + + * tree-ssa-reassoc.c: Include rtl.h and tm_p.h. + (optimize_range_tests_1): New function, + extracted from optimize_range_tests. + (optimize_range_tests_xor): Similarly. + (optimize_range_tests_diff): New function. + (optimize_range_tests): Use optimize_range_tests_1. + +2013-10-15 Cong Hou + + * tree-vect-loop.c (vect_is_simple_reduction_1): Relax the + requirement of the reduction pattern so that one operand of the + reduction operation can come from outside of the loop. + +2013-10-15 James Greenhalgh + + * config/arm/neon-schedgen.ml: Remove. + * config/arm/cortex-a9-neon.md: Remove comment regarding + neon-schedgen.ml. + +2013-10-15 James Greenhalgh + + * config/arm/types: Remove old neon types. + +2013-10-15 James Greenhalgh + + * config/arm/cortex-a7.md + (cortex_a7_neon_type): New. + (cortex_a7_neon_mul): Update for new types. + (cortex_a7_neon_mla): Likewise. + (cortex_a7_neon): Likewise. + +2013-10-15 James Greenhalgh + + * config/arm/cortex-a15-neon.md + (cortex_a15_neon_type): New, + + (cortex_a15_neon_int_1): Remove. + (cortex_a15_neon_int_2): Likewise. + (cortex_a15_neon_int_3): Likewise. + (cortex_a15_neon_int_4): Likewise. + (cortex_a15_neon_int_5): Likewise. + (cortex_a15_neon_vqneg_vqabs): Likewise. + (cortex_a15_neon_vmov): Likewise. + (cortex_a15_neon_vaba): Likewise. + (cortex_a15_neon_vaba_qqq): Likewise. + (cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a15_neon_mul_qqq_8_16_32_ddd_32): Likewise. + (cortex_a15_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar): + Likewise. + (cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a15_neon_mla_qqq_8_16): Likewise. + (cortex_a15_neon_mla_ddd_32_qqd_16_ddd_32_scalar): Likewise. + (cortex_a15_neon_mla_qqq_32_qqd_32_scalar): Likewise. + (cortex_a15_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. + (cortex_a15_neon_mul_qqd_32_scalar): Likewise. + (cortex_a15_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. + (cortex_a15_neon_shift_1): Likewise. + (cortex_a15_neon_shift_2): Likewise. + (cortex_a15_neon_shift_3): Likewise. + (cortex_a15_neon_vshl_ddd): Likewise. + (cortex_a15_neon_vqshl_vrshl_vqrshl_qqq): Likewise. + (cortex_a15_neon_vsra_vrsra): Likewise. + (cortex_a15_neon_fp_vmla_ddd_scalar): Likewise. + (cortex_a15_neon_fp_vmla_qqq_scalar): Likewise. + (cortex_a15_neon_bp_3cycle): Likewise. + (cortex_a15_neon_ldm_2): Likewise. + (cortex_a15_neon_stm_2): Likewise. + (cortex_a15_neon_mcr): Likewise. + (cortex_a15_neon_mrc): Likewise. + (cortex_a15_neon_fp_vadd_ddd_vabs_dd): Likewise. + (cortex_a15_neon_fp_vadd_qqq_vabs_qq): Likewise. + (cortex_a15_neon_fp_vmul_ddd): Likewise. + (cortex_a15_neon_fp_vmul_qqd): Likewise. + (cortex_a15_neon_fp_vmla_ddd): Likewise. + (cortex_a15_neon_fp_vmla_qqq): Likewise. + (cortex_a15_neon_fp_vmla_ddd_scalar): Likewise. + (cortex_a15_neon_fp_vmla_qqq_scalar): Likewise. + (cortex_a15_neon_fp_vrecps_vrsqrts_ddd): Likewise. + (cortex_a15_neon_fp_vrecps_vrsqrts_qqq): Likewise. + (cortex_a15_neon_bp_simple): Likewise. + (cortex_a15_neon_bp_2cycle): Likewise. + (cortex_a15_neon_bp_3cycle): Likewise. + (cortex_a15_neon_vld1_1_2_regs): Likewise. + (cortex_a15_neon_vld1_3_4_regs): Likewise. + (cortex_a15_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. + (cortex_a15_neon_vld2_4_regs): Likewise. + (cortex_a15_neon_vld3_vld4): Likewise. + (cortex_a15_neon_vst1_1_2_regs_vst2_2_regs): Likewise. + (cortex_a15_neon_vst1_3_4_regs): Likewise. + (cortex_a15_neon_vst2_4_regs_vst3_vst4): Rename to... + (cortex_a15_neon_vst2_4_regs_vst3): ...This, update for new attributes. + (cortex_a15_neon_vst3_vst4): Rename to... + (cortex_a15_neon_vst4): This, update for new attributes. + (cortex_a15_neon_vld1_vld2_lane): Update for new attributes. + (cortex_a15_neon_vld3_vld4_lane): Likewise. + (cortex_a15_neon_vst1_vst2_lane): Likewise. + (cortex_a15_neon_vst3_vst4_lane): Likewise. + (cortex_a15_neon_vld3_vld4_all_lanes): Likewise. + (cortex_a15_neon_ldm_2): Likewise. + (cortex_a15_neon_stm_2): Likewise. + (cortex_a15_neon_mcr): Likewise. + (cortex_a15_neon_mcr_2_mcrr): Likewise. + (cortex_a15_neon_mrc): Likewise. + (cortex_a15_neon_mrrc): Likewise. + + (cortex_a15_neon_abd): New. + (cortex_a15_neon_abd_q): Likewise. + (cortex_a15_neon_aba): Likewise. + (cortex_a15_neon_aba_q): Likewise. + (cortex_a15_neon_acc): Likewise. + (cortex_a15_neon_acc_q): Likewise. + (cortex_a15_neon_arith_basic): Likewise. + (cortex_a15_neon_arith_complex): Likewise. + (cortex_a15_neon_multiply): Likewise. + (cortex_a15_neon_multiply_q): Likewise. + (cortex_a15_neon_mla): Likewise. + (cortex_a15_neon_mla_q): Likewise. + (cortex_a15_neon_sat_mla_long): Likewise. + (cortex_a15_neon_shift_acc): Likewise. + (cortex_a15_neon_shift_imm_basic): Likewise. + (cortex_a15_neon_shift_imm_complex): Likewise. + (cortex_a15_neon_shift_reg_basic): Likewise. + (cortex_a15_neon_shift_reg_basic_q): Likewise. + (cortex_a15_neon_shift_reg_complex): Likewise. + (cortex_a15_neon_shift_reg_complex_q): Likewise. + (cortex_a15_neon_fp_negabs): Likewise + (cortex_a15_neon_fp_arith): Likewise + (cortex_a15_neon_fp_arith_q): Likewise + (cortex_a15_neon_fp_cvt_int): Likewise + (cortex_a15_neon_fp_cvt_int_q): Likewise + (cortex_a15_neon_fp_cvt_16): Likewise + (cortex_a15_neon_fp_mul): Likewise + (cortex_a15_neon_fp_mul_q): Likewise + (cortex_a15_neon_fp_mla): Likewise + (cortex_a15_neon_fp_mla_q): Likewise + (cortex_a15_neon_fp_recps_rsqrte): Likewise. + (cortex_a15_neon_fp_recps_rsqrte_q): Likewise. + (cortex_a15_neon_bitops): Likewise. + (cortex_a15_neon_bitops_q): Likewise. + (cortex_a15_neon_from_gp): Likewise. + (cortex_a15_neon_from_gp_q): Likewise. + (cortex_a15_neon_tbl3_tbl4): Likewise. + (cortex_a15_neon_zip_q): Likewise. + (cortex_a15_neon_to_gp): Likewise. + (cortex_a15_neon_load_a): Likewise. + (cortex_a15_neon_load_b): Likewise. + (cortex_a15_neon_load_c): Likewise. + (cortex_a15_neon_load_d): Likewise. + (cortex_a15_neon_load_e): Likewise. + (cortex_a15_neon_load_f): Likewise. + (cortex_a15_neon_store_a): Likewise. + (cortex_a15_neon_store_b): Likewise. + (cortex_a15_neon_store_c): Likewise. + (cortex_a15_neon_store_d): Likewise. + (cortex_a15_neon_store_e): Likewise. + (cortex_a15_neon_store_f): Likewise. + (cortex_a15_neon_store_g): Likewise. + (cortex_a15_neon_store_h): Likewise. + (cortex_a15_vfp_to_from_gp): Likewise. + +2013-10-15 James Greenhalgh + + * config/arm/cortex-a9-neon.md (cortex_a9_neon_type): New. + + (cortex_a9_neon_vshl_ddd): Remove. + (cortex_a9_neon_vst3_vst4): Likewise. + (cortex_a9_neon_vld3_vld4_all_lanes): Likewise. + + (cortex_a9_neon_bit_ops_q): New. + + (cortex_a9_neon_int_1): Use cortex_a8_neon_type. + (cortex_a9_neon_int_2): Likewise. + (cortex_a9_neon_int_3): Likewise. + (cortex_a9_neon_int_4): Likewise. + (cortex_a9_neon_int_5): Likewise. + (cortex_a9_neon_vqneg_vqabs): Likewise. + (cortex_a9_neon_vmov): Likewise. + (cortex_a9_neon_vaba): Likewise. + (cortex_a9_neon_vaba_qqq): Likewise. + (cortex_a9_neon_shift_1): Likewise. + (cortex_a9_neon_shift_2): Likewise. + (cortex_a9_neon_shift_3): Likewise. + (cortex_a9_neon_vqshl_vrshl_vqrshl_qqq): Likewise. + (cortex_a9_neon_vsra_vrsra): Likewise. + (cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a9_neon_mul_qqq_8_16_32_ddd_32): Likewise. + (cortex_a9_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar): + Likewise. + (cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a9_neon_mla_qqq_8_16): Likewise. + (cortex_a9_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long): + Likewise. + (cortex_a9_neon_mla_qqq_32_qqd_32_scalar): Likewise. + (cortex_a9_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. + (cortex_a9_neon_mul_qqd_32_scalar): Likewise. + (cortex_a9_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. + (cortex_a9_neon_fp_vadd_ddd_vabs_dd): Likewise. + (cortex_a9_neon_fp_vadd_qqq_vabs_qq): Likewise. + (cortex_a9_neon_fp_vsum): Likewise. + (cortex_a9_neon_fp_vmul_ddd): Likewise. + (cortex_a9_neon_fp_vmul_qqd): Likewise. + (cortex_a9_neon_fp_vmla_ddd): Likewise. + (cortex_a9_neon_fp_vmla_qqq): Likewise. + (cortex_a9_neon_fp_vmla_ddd_scalar): Likewise. + (cortex_a9_neon_fp_vmla_qqq_scalar): Likewise. + (cortex_a9_neon_fp_vrecps_vrsqrts_ddd): Likewise. + (cortex_a9_neon_fp_vrecps_vrsqrts_qqq): Likewise. + (cortex_a9_neon_bp_simple): Likewise. + (cortex_a9_neon_bp_2cycle): Likewise. + (cortex_a9_neon_bp_3cycle): Likewise. + (cortex_a9_neon_ldr): Likewise. + (cortex_a9_neon_str): Likewise. + (cortex_a9_neon_vld1_1_2_regs): Likewise. + (cortex_a9_neon_vld1_3_4_regs): Likewise. + (cortex_a9_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. + (cortex_a9_neon_vld2_4_regs): Likewise. + (cortex_a9_neon_vld3_vld4): Likewise. + (cortex_a9_neon_vld1_vld2_lane): Likewise. + (cortex_a9_neon_vld3_vld4_lane): Likewise. + (cortex_a9_neon_vld3_vld4_all_lanes): Likewise. + (cortex_a9_neon_vst1_1_2_regs_vst2_2_regs): Likewise. + (cortex_a9_neon_vst1_3_4_regs): Likewise. + (cortex_a9_neon_vst2_4_regs_vst3_vst4): Likewise. + (cortex_a9_neon_vst1_vst2_lane): Likewise. + (cortex_a9_neon_vst3_vst4_lane): Likewise. + (cortex_a9_neon_mcr): Likewise. + (cortex_a9_neon_mcr_2_mcrr): Likewise. + (cortex_a9_neon_mrc): Likewise. + (cortex_a9_neon_mrrc): Likewise. + +2013-10-15 James Greenhalgh + + * config/arm/cortex-a8-neon.md (cortex_a8_neon_type): New. + + (cortex_a8_neon_vshl_ddd): Remove. + (cortex_a8_neon_vst3_vst4): Likewise. + (cortex_a8_neon_vld3_vld4_all_lanes): Likewise. + + (cortex_a8_neon_bit_ops_q): New. + + (cortex_a8_neon_int_1): Use cortex_a8_neon_type. + (cortex_a8_neon_int_2): Likewise.. + (cortex_a8_neon_int_3): Likewise. + (cortex_a8_neon_int_5): Likewise. + (cortex_a8_neon_vqneg_vqabs): Likewise. + (cortex_a8_neon_int_4): Likewise. + (cortex_a8_neon_vaba): Likewise. + (cortex_a8_neon_vaba_qqq): Likewise. + (cortex_a8_neon_shift_1): Likewise. + (cortex_a8_neon_shift_2): Likewise. + (cortex_a8_neon_shift_3): Likewise. + (cortex_a8_neon_vqshl_vrshl_vqrshl_qqq): Likewise. + (cortex_a8_neon_vsra_vrsra): Likewise. + (cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a8_neon_mul_qqq_8_16_32_ddd_32): Likewise. + (cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar): + Likewise. + (cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a8_neon_mla_qqq_8_16): Likewise. + (cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long): + Likewise. + (cortex_a8_neon_mla_qqq_32_qqd_32_scalar): Likewise. + (cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. + (cortex_a8_neon_mul_qqd_32_scalar): Likewise. + (cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. + (cortex_a8_neon_fp_vadd_ddd_vabs_dd): Likewise. + (cortex_a8_neon_fp_vadd_qqq_vabs_qq): Likewise. + (cortex_a8_neon_fp_vsum): Likewise. + (cortex_a8_neon_fp_vmul_ddd): Likewise. + (cortex_a8_neon_fp_vmul_qqd): Likewise. + (cortex_a8_neon_fp_vmla_ddd): Likewise. + (cortex_a8_neon_fp_vmla_qqq): Likewise. + (cortex_a8_neon_fp_vmla_ddd_scalar): Likewise. + (cortex_a8_neon_fp_vmla_qqq_scalar): Likewise. + (cortex_a8_neon_fp_vrecps_vrsqrts_ddd): Likewise. + (cortex_a8_neon_fp_vrecps_vrsqrts_qqq): Likewise. + (cortex_a8_neon_bp_simple): Likewise. + (cortex_a8_neon_bp_2cycle): Likewise. + (cortex_a8_neon_bp_3cycle): Likewise. + (cortex_a8_neon_ldr): Likewise. + (cortex_a8_neon_str): Likewise. + (cortex_a8_neon_vld1_1_2_regs): Likewise. + (cortex_a8_neon_vld1_3_4_regs): Likewise. + (cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. + (cortex_a8_neon_vld2_4_regs): Likewise. + (cortex_a8_neon_vld3_vld4): Likewise. + (cortex_a8_neon_vld1_vld2_lane): Likewise. + (cortex_a8_neon_vld3_vld4_lane): Likewise. + (cortex_a8_neon_vst1_1_2_regs_vst2_2_regs): Likewise. + (cortex_a8_neon_vst1_3_4_regs): Likewise. + (cortex_a8_neon_vst2_4_regs_vst3_vst4): Likewise. + (cortex_a8_neon_vst1_vst2_lane): Likewise. + (cortex_a8_neon_vst3_vst4_lane): Likewise. + (cortex_a8_neon_mcr): Likewise. + (cortex_a8_neon_mcr_2_mcrr): Likewise. + (cortex_a8_neon_mrc): Likewise. + (cortex_a8_neon_mrrc): Likewise. + +2013-10-15 James Greenhalgh + + * config/aarch64/iterators.md (Vetype): Add SF and DF modes. + (fp): New. + * config/aarch64/aarch64-simd.md (neon_type): Remove. + (aarch64_simd_dup): Add "type" attribute. + (aarch64_dup_lane): Likewise. + (aarch64_dup_lane_): Likewise. + (*aarch64_simd_mov): Likewise. + (aarch64_simd_mov_from_low): Likewise. + (aarch64_simd_mov_from_high): Likewise. + (orn3): Likewise. + (bic3): Likewise. + (add3): Likewise. + (sub3): Likewise. + (mul3): Likewise. + (*aarch64_mul3_elt): Likewise. + (*aarch64_mul3_elt_): Likewise. + (*aarch64_mul3_elt_to_128df): Likewise. + (*aarch64_mul3_elt_to_64v2df): Likewise. + (neg2): Likewise. + (abs2): Likewise. + (abd_3): Likewise. + (aba_3): Likewise. + (fabd_3): Likewise. + (*fabd_scalar3): Likewise. + (and3): Likewise. + (ior3): Likewise. + (xor3): Likewise. + (one_cmpl2): Likewise. + (aarch64_simd_vec_set): Likewise. + (aarch64_simd_lshr): Likewise. + (aarch64_simd_ashr): Likewise. + (aarch64_simd_imm_shl): Likewise. + (aarch64_simd_reg_sshl_unsigned): Likewise. + (aarch64_simd_reg_shl_signed): Likewise. + (aarch64_simd_vec_setv2di): Likewise. + (aarch64_simd_vec_set): Likewise. + (aarch64_mla): Likewise. + (*aarch64_mla_elt): Likewise. + (*aarch64_mla_elt_): Likewise. + (aarch64_mls): Likewise. + (*aarch64_mls_elt): Likewise. + (*aarch64_mls_elt_): Likewise. + (3): Likewise. + (move_lo_quad_): Likewise. + (aarch64_simd_move_hi_quad_): Likewise. + (aarch64_simd_vec_pack_trunc_): Likewise. + (vec_pack_trunc_): Likewise. + (aarch64_simd_vec_unpack_lo_): Likewise. + (aarch64_simd_vec_unpack_hi_): Likewise. + (*aarch64_mlal_lo): Likewise. + (*aarch64_mlal_hi): Likewise. + (*aarch64_mlsl_lo): Likewise. + (*aarch64_mlsl_hi): Likewise. + (*aarch64_mlal): Likewise. + (*aarch64_mlsl): Likewise. + (aarch64_simd_vec_mult_lo_): Likewise. + (aarch64_simd_vec_mult_hi_): Likewise. + (add3): Likewise. + (sub3): Likewise. + (mul3): Likewise. + (div3): Likewise. + (neg2): Likewise. + (abs2): Likewise. + (fma4): Likewise. + (*aarch64_fma4_elt): Likewise. + (*aarch64_fma4_elt_): Likewise. + (*aarch64_fma4_elt_to_128df): Likewise. + (*aarch64_fma4_elt_to_64v2df): Likewise. + (fnma4): Likewise. + (*aarch64_fnma4_elt): Likewise. + (*aarch64_fnma4_elt_ + (*aarch64_fnma4_elt_to_128df): Likewise. + (*aarch64_fnma4_elt_to_64v2df): Likewise. + (2): Likewise. + (l2): Likewise. + (2): Likewise. + (vec_unpacks_lo_v4sf): Likewise. + (aarch64_float_extend_lo_v2df): Likewise. + (vec_unpacks_hi_v4sf): Likewise. + (aarch64_float_truncate_lo_v2sf): Likewise. + (aarch64_float_truncate_hi_v4sf): Likewise. + (aarch64_vmls): Likewise. + (3): Likewise. + (3): Likewise. + (reduc_plus_): Likewise. + (reduc_plus_v2di): Likewise. + (reduc_plus_v2si): Likewise. + (reduc_plus_): Likewise. + (aarch64_addpv4sf): Likewise. + (clz2): Likewise. + (reduc__): Likewise. + (reduc__v2di): Likewise. + (reduc__v2si): Likewise. + (reduc__): Likewise. + (reduc__v4sf): Likewise. + (aarch64_simd_bsl_internal): Likewise. + (*aarch64_get_lane_extend): Likewise. + (*aarch64_get_lane_zero_extendsi): Likewise. + (aarch64_get_lane): Likewise. + (*aarch64_combinez): Likewise. + (aarch64_combine): Likewise. + (aarch64_simd_combine): Likewise. + (aarch64_l_hi_internal): Likewise. + (aarch64_l_lo_internal): Likewise. + (aarch64_l): Likewise. + (aarch64_w): Likewise. + (aarch64_w2_internal): Likewise. + (aarch64_h): Likewise. + (aarch64_hn): Likewise. + (aarch64_hn2): Likewise. + (aarch64_pmul): Likewise. + (aarch64_): Likewise. + (aarch64_qadd): Likewise. + (aarch64_sqmovun): Likewise. + (aarch64_qmovn): Likewise. + (aarch64_s): Likewise. + (aarch64_sqdmulh): Likewise. + (aarch64_sqdmulh_lane): Likewise. + (aarch64_sqdmulh_laneq): Likewise. + (aarch64_sqdmulh_lane): Likewise. + (aarch64_sqdmll): Likewise. + (aarch64_sqdmll_lane_internal): Likewise. + (aarch64_sqdmll_lane_internal): Likewise. + (aarch64_sqdmll_n): Likewise. + (aarch64_sqdmll2_internal): Likewise. + (aarch64_sqdmll2_lane_internal): Likewise. + (aarch64_sqdmll2_n_internal): Likewise. + (aarch64_sqdmull): Likewise. + (aarch64_sqdmull_lane_internal): Likewise. + (aarch64_sqdmull_n): Likewise. + (aarch64_sqdmull2_internal): Likewise. + (aarch64_sqdmull2_lane_internal): Likewise. + (aarch64_sqdmull2_n_internal): Likewise. + (aarch64_shl): Likewise. + (aarch64_qshl + (aarch64_shll_n): Likewise. + (aarch64_shll2_n): Likewise. + (aarch64_shr_n): Likewise. + (aarch64_sra_n): Likewise. + (aarch64_si_n): Likewise. + (aarch64_qshl_n): Likewise. + (aarch64_qshrn_n): Likewise. + (aarch64_cm): Likewise. + (aarch64_cmdi): Likewise. + (aarch64_cm): Likewise. + (aarch64_cmdi): Likewise. + (aarch64_cmtst): Likewise. + (aarch64_cmtstdi): Likewise. + (aarch64_cm): Likewise. + (*aarch64_fac): Likewise. + (aarch64_addp): Likewise. + (aarch64_addpdi): Likewise. + (sqrt2): Likewise. + (vec_load_lanesoi): Likewise. + (vec_store_lanesoi): Likewise. + (vec_load_lanesci): Likewise. + (vec_store_lanesci): Likewise. + (vec_load_lanesxi): Likewise. + (vec_store_lanesxi): Likewise. + (*aarch64_mov): Likewise. + (aarch64_ld2_dreg): Likewise. + (aarch64_ld2_dreg): Likewise. + (aarch64_ld3_dreg): Likewise. + (aarch64_ld3_dreg): Likewise. + (aarch64_ld4_dreg): Likewise. + (aarch64_ld4_dreg): Likewise. + (aarch64_tbl1): Likewise. + (aarch64_tbl2v16qi): Likewise. + (aarch64_combinev16qi): Likewise. + (aarch64_): Likewise. + (aarch64_st2_dreg): Likewise. + (aarch64_st2_dreg): Likewise. + (aarch64_st3_dreg): Likewise. + (aarch64_st3_dreg): Likewise. + (aarch64_st4_dreg): Likewise. + (aarch64_st4_dreg): Likewise. + (*aarch64_simd_ld1r): Likewise. + (aarch64_frecpe): Likewise. + (aarch64_frecp): Likewise. + (aarch64_frecps): Likewise. + +2013-10-15 James Greenhalgh + + * config/arm/iterators.md (V_elem_ch): New. + (q): Likewise. + (VQH_type): Likewise. + * config/arm/arm.md (is_neon_type): New. + (conds): Use is_neon_type. + (anddi3_insn): Update type attribute. + (xordi3_insn): Likewise. + (one_cmpldi2): Likewise. + * config/arm/vfp.md (movhf_vfp_neon): Update type attribute. + * config/arm/neon.md (neon_mov): Update type attribute. + (*movmisalign_neon_store): Likewise. + (*movmisalign_neon_load): Likewise. + (vec_set_internal): Likewise. + (vec_set_internal): Likewise. + (vec_setv2di_internal): Likewise. + (vec_extract): Likewise. + (vec_extract): Likewise. + (vec_extractv2di): Likewise. + (*add3_neon): Likewise. + (adddi3_neon): Likewise. + (*sub3_neon): Likewise. + (subdi3_neon): Likewise. + (fma4): Likewise. + (fma4_intrinsic): Likewise. + (*fmsub4): Likewise. + (fmsub4_intrinsic): Likewise. + (neon_vrint): Likewise. + (ior3): Likewise. + (and3): Likewise. + (orn3_neon): Likewise. + (orndi3_neon): Likewise. + (bic3_neon): Likewise. + (bicdi3_neon): Likewise. + (xor3): Likewise. + (one_cmpl2): Likewise. + (abs2): Likewise. + (neg2): Likewise. + (negdi2_neon): Likewise. + (*umin3_neon): Likewise. + (*umax3_neon): Likewise. + (*smin3_neon): Likewise. + (*smax3_neon): Likewise. + (vashl3): Likewise. + (vashr3_imm): Likewise. + (vlshr3_imm): Likewise. + (ashl3_signed): Likewise. + (ashl3_unsigned): Likewise. + (neon_load_count): Likewise. + (ashldi3_neon_noclobber): Likewise. + (ashldi3_neon): Likewise. + (signed_shift_di3_neon): Likewise. + (unsigned_shift_di3_neon): Likewise. + (ashrdi3_neon_imm_noclobber): Likewise. + (lshrdi3_neon_imm_noclobber): Likewise. + (di3_neon): Likewise. + (widen_ssum3): Likewise. + (widen_usum3): Likewise. + (quad_halves_v4si): Likewise. + (quad_halves_v4sf): Likewise. + (quad_halves_v8hi): Likewise. + (quad_halves_v16qi): Likewise. + (reduc_splus_v2di): Likewise. + (neon_vpadd_internal): Likewise. + (neon_vpsmin): Likewise. + (neon_vpsmax): Likewise. + (neon_vpumin): Likewise. + (neon_vpumax): Likewise. + (*ss_add_neon): Likewise. + (*us_add_neon): Likewise. + (*ss_sub_neon): Likewise. + (*us_sub_neon): Likewise. + (neon_vadd_unspec): Likewise. + (neon_vaddl): Likewise. + (neon_vaddw): Likewise. + (neon_vhadd): Likewise. + (neon_vqadd): Likewise. + (neon_vaddhn): Likewise. + (neon_vmul): Likewise. + (neon_vfms): Likewise. + (neon_vmlal): Likewise. + (neon_vmls): Likewise. + (neon_vmlsl): Likewise. + (neon_vqdmulh): Likewise. + (neon_vqdmlal): Likewise. + (neon_vqdmlsl): Likewise. + (neon_vmull): Likewise. + (neon_vqdmull): Likewise. + (neon_vsub_unspec): Likewise. + (neon_vsubl): Likewise. + (neon_vsubw): Likewise. + (neon_vqsub): Likewise. + (neon_vhsub): Likewise. + (neon_vsubhn): Likewise. + (neon_vceq): Likewise. + (neon_vcge): Likewise. + (neon_vcgeu): Likewise. + (neon_vcgt): Likewise. + (neon_vcgtu): Likewise. + (neon_vcle): Likewise. + (neon_vclt): Likewise. + (neon_vcage): Likewise. + (neon_vcagt): Likewise. + (neon_vtst): Likewise. + (neon_vabd): Likewise. + (neon_vabdl): Likewise. + (neon_vaba): Likewise. + (neon_vabal): Likewise. + (neon_vmax): Likewise. + (neon_vmin): Likewise. + (neon_vpaddl): Likewise. + (neon_vpadal): Likewise. + (neon_vpmax): Likewise. + (neon_vpmin): Likewise. + (neon_vrecps): Likewise. + (neon_vrsqrts): Likewise. + (neon_vqabs): Likewise. + (neon_vqneg): Likewise. + (neon_vcls): Likewise. + (clz2): Likewise. + (popcount2): Likewise. + (neon_vrecpe): Likewise. + (neon_vrsqrte): Likewise. + (neon_vget_lane_sext_internal): Likewise. + (neon_vget_lane_zext_internal): Likewise. + (neon_vdup_n): Likewise. + (neon_vdup_n): Likewise. + (neon_vdup_nv2di): Likewise. + (neon_vdup_lane_interal): Likewise. + (*neon_vswp): Likewise. + (neon_vcombine): Likewise. + (float2): Likewise. + (floatuns2): Likewise. + (fix_trunc2): Likewise. + (fixuns_trunc2 + (neon_vcvt): Likewise. + (neon_vcvt): Likewise. + (neon_vcvtv4sfv4hf): Likewise. + (neon_vcvtv4hfv4sf): Likewise. + (neon_vcvt_n): Likewise. + (neon_vcvt_n): Likewise. + (neon_vmovn): Likewise. + (neon_vqmovn): Likewise. + (neon_vqmovun): Likewise. + (neon_vmovl): Likewise. + (neon_vmul_lane): Likewise. + (neon_vmul_lane): Likewise. + (neon_vmull_lane): Likewise. + (neon_vqdmull_lane): Likewise. + (neon_vqdmulh_lane): Likewise. + (neon_vqdmulh_lane): Likewise. + (neon_vmla_lane): Likewise. + (neon_vmla_lane): Likewise. + (neon_vmlal_lane): Likewise. + (neon_vqdmlal_lane): Likewise. + (neon_vmls_lane): Likewise. + (neon_vmls_lane): Likewise. + (neon_vmlsl_lane): Likewise. + (neon_vqdmlsl_lane): Likewise. + (neon_vext): Likewise. + (neon_vrev64): Likewise. + (neon_vrev32): Likewise. + (neon_vrev16): Likewise. + (neon_vbsl_internal): Likewise. + (neon_vshl): Likewise. + (neon_vqshl): Likewise. + (neon_vshr_n): Likewise. + (neon_vshrn_n): Likewise. + (neon_vqshrn_n): Likewise. + (neon_vqshrun_n): Likewise. + (neon_vshl_n): Likewise. + (neon_vqshl_n): Likewise. + (neon_vqshlu_n): Likewise. + (neon_vshll_n): Likewise. + (neon_vsra_n): Likewise. + (neon_vsri_n): Likewise. + (neon_vsli_n): Likewise. + (neon_vtbl1v8qi): Likewise. + (neon_vtbl2v8qi): Likewise. + (neon_vtbl3v8qi): Likewise. + (neon_vtbl4v8qi): Likewise. + (neon_vtbl1v16qi): Likewise. + (neon_vtbl2v16qi): Likewise. + (neon_vcombinev16qi): Likewise. + (neon_vtbx1v8qi): Likewise. + (neon_vtbx2v8qi): Likewise. + (neon_vtbx3v8qi): Likewise. + (neon_vtbx4v8qi): Likewise. + (*neon_vtrn_insn): Likewise. + (*neon_vzip_insn): Likewise. + (*neon_vuzp_insn): Likewise. + (neon_vld1): Likewise. + (neon_vld1_lane): Likewise. + (neon_vld1_lane): Likewise. + (neon_vld1_dup): Likewise. + (neon_vld1_dup): Likewise. + (neon_vld1_dupv2di): Likewise. + (neon_vst1): Likewise. + (neon_vst1_lane): Likewise. + (neon_vst1_lane): Likewise. + (neon_vld2): Likewise. + (neon_vld2): Likewise. + (neon_vld2_lane): Likewise. + (neon_vld2_lane): Likewise. + (neon_vld2_dup): Likewise. + (neon_vst2): Likewise. + (neon_vst2): Likewise. + (neon_vst2_lane): Likewise. + (neon_vst2_lane): Likewise. + (neon_vld3): Likewise. + (neon_vld3qa): Likewise. + (neon_vld3qb): Likewise. + (neon_vld3_lane): Likewise. + (neon_vld3_lane): Likewise. + (neon_vld3_dup): Likewise. + (neon_vst3): Likewise. + (neon_vst3qa): Likewise. + (neon_vst3qb): Likewise. + (neon_vst3_lane): Likewise. + (neon_vst3_lane): Likewise. + (neon_vld4): Likewise. + (neon_vld4qa): Likewise. + (neon_vld4qb): Likewise. + (neon_vld4_lane): Likewise. + (neon_vld4_lane): Likewise. + (neon_vld4_dup): Likewise. + (neon_vst4): Likewise. + (neon_vst4qa): Likewise. + (neon_vst4qb): Likewise. + (neon_vst4_lane): Likewise. + (neon_vst4_lane): Likewise. + (neon_vec_unpack_lo_): Likewise. + (neon_vec_unpack_hi_): Likewise. + (neon_vec_mult_lo_): Likewise. + (neon_vec_mult_hi_): Likewise. + (neon_vec_shiftl_): Likewise. + (neon_unpack_): Likewise. + (neon_vec_mult_): Likewise. + (vec_pack_trunc_): Likewise. + (neon_vec_pack_trunc_): Likewise. + (neon_vabd_2): Likewise. + (neon_vabd_3): Likewise. + +2013-10-15 James Greenhalgh + + * config/aarch64/aarch64.md (movtf_aarch64): Update type attribute. + (load_pair): Update type attribute. + (store_pair): Update type attribute. + * config/aarch64/iterators.md (q): New. + +2013-10-15 James Greenhalgh + + * config/arm/types.md: Add new types for Neon insns. + +2013-10-15 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (unspec): Add UNSPEC_RCP14, UNSPEC_RSQRT14, + UNSPEC_FIXUPIMM, UNSPEC_SCALEF, UNSPEC_GETEXP, UNSPEC_GETMANT, + UNSPEC_EXP2, UNSPEC_RCP28, UNSPEC_RSQRT28. + (rcp14): New. + (srcp14): Ditto. + (rsqrt14): Ditto. + (rsqrt14): Ditto. + (avx512f_vmscalef): Ditto. + (avx512f_scalef): Ditto. + (avx512f_getexp): Ditto. + (avx512f_sgetexp): Ditto. + (avx512f_fixupimm): Ditto. + (avx512f_sfixupimm): Ditto. + (avx512f_rndscale): Ditto. + (*avx512er_exp2): Ditto. + (*avx512er_rcp28): Ditto. + (avx512er_rsqrt28): Ditto. + (avx512f_getmant): Ditto. + (avx512f_getmant): Ditto. + (avx512f_rndscale): Fix formatting. + +2013-10-15 Martin Jambor + + * ipa-utils.h (ipa_edge_within_scc): Declare. + * ipa-cp.c (edge_within_scc): Moved... + * ipa-utils.c (ipa_edge_within_scc): ...here. Updated all callers. + +2013-10-15 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/predicates.md (const_8_to_15_operand): New. + (const_16_to_31_operand): Ditto. + * config/i386/sse.md (V8FI): New. + (V16FI): Ditto. + (reduc_splus_v8df): Ditto. + (reduc_splus_v16sf): Ditto. + (avx512f_vextract32x4_1): Ditto. + (vec_extract_hi_): Ditto. + (avx512f_vinsert32x4_1): Ditto. + (vec_set_lo_): Ditto. + (vec_set_hi_): Ditto. + (avx512f_shuf_64x2_1): Ditto. + (avx512f_shuf_32x4_1): Ditto. + (avx512f_pshufd_1): Ditto. + (avx512f_broadcast): Ditto. + (avx512f_broadcast): Ditto. + (define_split): Split vec_extract_lo into move. + (ssequartermode): Ditto. + (ssedoublemode): Extened with wider modes. + (vec_extract_lo_): Ditto. + +2013-10-15 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/predicates.md (register_or_constm1_operand): New. + * config/i386/sse.md (unspec): Add UNSPEC_UNSIGNED_PCMP, UNSPEC_TESTM, + UNSPEC_TESTNM, UNSPEC_VTERNLOG, UNSPEC_ALIGN, UNSPEC_CONFLICT, + UNSPEC_MASKED_EQ, UNSPEC_MASKED_GT, UNSPEC_GATHER_PREFETCH, + UNSPEC_SCATTER_PREFETCH + (VI48_512): New. + (avx512f_ucmp3): Ditto. + (avx512f_vternlog): Ditto. + (avx512f_align): Ditto. + (3): Ditto. + (avx512f_v): Ditto. + (avx512f_): Ditto. + (avx512f_eq3): Ditto. + (avx512f_eq3_1): Ditto. + (avx512f_gt3): Ditto. + (avx512f_testm3): Ditto. + (avx512f_testnm3): Ditto. + (avx512pf_gatherpf): Ditto. + (*avx512pf_gatherpf_mask): Ditto. + (*avx512pf_gatherpf): Ditto. + (avx512pf_scatterpf): Ditto. + (*avx512pf_scatterpf_mask): Ditto. + (*avx512pf_scatterpf): Ditto. + (avx512f_vec_dup_gpr): Ditto. + (clz2): Ditto. + (conflict): Ditto. + (REDUC_SMINMAX_MODE): Extened with wider modes. + (reduc__): Ditto. + (vlshr3): Ditto. + (vashl3): Ditto. + +2013-10-15 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (unspec): Added UNSPEC_VPERMI2, UNSPEC_VPERMT2, + UNSPEC_SCATTER. + (VI48F_512): New. + (avx512fmaskmode): Ditto. + (bcstscalarsuff): Ditto. + (avx512f_blendm): Ditto. + (cmp_imm_predicate): Ditto. + (avx512f_cmp3): Ditto. + (avx512f_vec_dup): Ditto. + (avx512f_vec_dup_mem): Ditto. + (avx512f_vpermi2var3): Ditto. + (avx512f_vpermt2var3): Ditto. + (vec_init): Ditto. + (avx512f_gathersi): Ditto. + (*avx512f_gathersi): Ditto. + (*avx512f_gathersi_2): Ditto. + (avx512f_gatherdi): Ditto. + (*avx512f_gatherdi): Ditto. + (*avx512f_gatherdi_2): Ditto. + (avx512f_scattersi): Ditto. + (*avx512f_scattersi): Ditto. + (avx512f_scatterdi): Ditto. + (*avx512f_scatterdi): Ditto. + (sseintprefix): Extened with wider modes. + (VEC_GATHER_IDXSI): Ditto. + (VEC_GATHER_IDXDI): Ditto. + (VEC_GATHER_SRCDI): Ditto. + +2013-10-15 Matthew Gretton-Dann + Ramana Radhakrishnan + + * config/arm/t-aprofile: New file. + * config.gcc: Handle --with-multilib-list option. + +2013-10-15 Bernd Schmidt + + * reload1.c (reloads_unique_chain_p): Ensure that r1 is + the input for r2. + +2013-10-15 Richard Biener + + * tree-loop-distribution.c (build_empty_rdg): Inline into + single user. + (rdg_flag_vertex): Inline into single user. + (rdg_flag_vertex_and_dependent): Likewise. + (build_rdg_partition_for_vertex): Remove processed bitmap. + (rdg_build_partitions): Simplify. + +2013-10-15 Richard Biener + + * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): + Restructure forwarding through conversions and copies to + avoid performing copy-propagation the wrong way. Adjust + recursion invocations. + (forward_propagate_addr_expr): Add argument stating if we + are recursing from a single-use. + (ssa_forward_propagate_and_combine): Adjust. + +2013-10-14 David Malcolm + + * dumpfile.h (gcc::dump_manager): New class, to hold state + relating to dumpfile management. + (get_dump_file_name): Remove in favor of method of dump_manager. + (dump_initialized_p): Likewise. + (dump_start): Likewise. + (dump_finish): Likewise. + (dump_switch_p): Likewise. + (dump_register): Likewise. + (get_dump_file_info): Likewise. + * context.c (gcc::context::context): Construct the dump_manager + instance. + * context.h (gcc::context::get_dumps): New. + (gcc::context::m_dumps): New. + * coverage.c (coverage_init): Port to dump_manager API. + * dumpfile.c (extra_dump_files): Convert to field of gcc::dump_manager. + (extra_dump_files_in_use): Likewise. + (extra_dump_files_alloced): Likewise. + (gcc::dump_manager::dump_manager): New. + (dump_register): Convert to... + (gcc::dump_manager::dump_register): ...method, replacing + function-static next_dump with m_next_dump field. + (get_dump_file_info): Convert to... + (gcc::dump_manager::get_dump_file_info): ...method. + (get_dump_file_name): Convert to... + (gcc::dump_manager::get_dump_file_name): ...method. + (dump_start): Convert to... + (gcc::dump_manager::dump_start): ...method. + (dump_finish): Convert to... + (gcc::dump_manager::dump_finish): ...method. + (dump_begin): Replace body with... + (gcc::dump_manager::dump_begin): ...new method. + (dump_phase_enabled_p): Convert to... + (gcc::dump_manager::dump_phase_enabled_p): ...method. + (dump_phase_enabled_p): Convert to... + (gcc::dump_manager::dump_phase_enabled_p): ...method. + (dump_initialized_p): Convert to... + (gcc::dump_manager::dump_initialized_p): ...method. + (dump_flag_name): Replace body with... + (gcc::dump_manager::dump_flag_name): ...new method. + (dump_enable_all): Convert to... + (gcc::dump_manager::dump_enable_all): ...new method. + (opt_info_enable_passes): Convert to... + (gcc::dump_manager::opt_info_enable_passes): ...new method. + (dump_switch_p_1): Convert to... + (gcc::dump_manager::dump_switch_p_1): ...new method. + (dump_switch_p): Convert to... + (gcc::dump_manager::dump_switch_p): ...new method. + (opt_info_switch_p): Port to dump_manager API. + (enable_rtl_dump_file): Likewise. + * opts-global.c (handle_common_deferred_options): Port to new + dump_manager API. + * passes.c (pass_manager::finish_optimization_passes): Likewise. + (pass_manager::register_one_dump_file): Likewise. + (pass_manager::register_pass): Likewise. + (pass_init_dump_file): Likewise. + (pass_fini_dump_file): Likewise. + * statistics.c (statistics_early_init): Likewise. + +2013-10-14 Richard Biener + + * gimple.c (gimple_canonical_types, canonical_type_hash_cache, + iterative_hash_canonical_type, gimple_canonical_type_hash, + gimple_canonical_types_compatible_p, gimple_canonical_type_eq, + gimple_register_canonical_type, print_gimple_types_stats, + free_gimple_type_tables): Move to lto/lto.c + (gt-gimple.h): Do not include. + * gimple.h (gimple_register_canonical_type, + print_gimple_types_stats, free_gimple_type_tables): Remove. + * Makefile.in (GTFILES): Remove gimple.c. + +2013-10-14 Travis Snoozy + + PR target/58716 + * config/msp430/msp430.c (msp430_option_override): Correct thinko + scanning for msp430x targets. + +2013-10-14 Eric Botcazou + + PR bootstrap/58509 + * config/sparc/sparc-protos.h (widen_mem_for_ldd_peep): Declare. + (registers_ok_for_ldd_peep): Move around. + * config/sparc/sparc.c (widen_mem_for_ldd_peep): New. + * config/sparc/sparc.md (widening peepholes): Use it. + +2013-10-14 Richard Biener + + PR middle-end/58712 + PR middle-end/55358 + * gimple.c (iterative_hash_canonical_type): Make sure to + record the hash into the correct hashtable slot. + +2013-10-13 Eric Botcazou + + PR rtl-optimization/58662 + * combine.c (try_combine): Take into account death nodes on I2 when + splitting a PARALLEL of two independent SETs. Fix dump message. + +2013-10-12 Oleg Endo + + PR target/51244 + * config/sh/sh_treg_combine.cc: New SH specific RTL pass. + * config.gcc (sh[123456789lbe]*-*-* | sh-*-*): Add sh_treg_combine.o to + extra_objs. + * config/sh/t-sh (sh_treg_combine.o): New entry. + * config/sh/sh.c (sh_fixed_condition_code_regs): New function that + implements the target hook TARGET_FIXED_CONDITION_CODE_REGS. + (register_sh_passes): New function. Register sh_treg_combine pass. + (sh_option_override): Invoke it. + (sh_canonicalize_comparison): Handle op0_preserve_value. + * sh.md (*cbranch_t"): Do not try to optimize missed test and branch + opportunities. Canonicalize branch condition. + (nott): Allow only if pseudos can be created for non-SH2A. + +2013-10-12 H.J. Lu + + PR target/58690 + * config/i386/i386.c (ix86_copy_addr_to_reg): New function. + (ix86_expand_movmem): Replace copy_addr_to_reg with + ix86_copy_addr_to_reg. + (ix86_expand_setmem): Likewise. + +2013-10-12 Alexander Monakov + + * config/i386/i386.c (ix86_expand_sse_compare_and_jump): Use mode + provided by ix86_fp_compare_mode instead of CCFPUmode. + +2013-10-12 James Greenhalgh + + * config/aarch64/arm_neon.h + (vtbx<1,3>_8): Fix register constriants. + +2013-10-11 Jeff Law + + PR tree-optimization/58640 + * tree-ssa-threadupdate.c (mark_threaded_blocks): Truncate jump + threading paths that cross over two loop entry points. + +2013-10-11 Bill Schmidt + + * config/rs6000/vsx.md (*vsx_le_perm_load_v2di): Generalize to + handle vector float as well. + (*vsx_le_perm_load_v4si): Likewise. + (*vsx_le_perm_store_v2di): Likewise. + (*vsx_le_perm_store_v4si): Likewise. + +2013-10-11 Bill Schmidt + + * config/rs6000/vector.md (vec_realign_load): Generate vperm + directly to circumvent subtract from splat{31} workaround. + * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_le): New + prototype. + * config/rs6000/rs6000.c (altivec_expand_vec_perm_le): New. + * config/rs6000/altivec.md (define_c_enum "unspec"): Add + UNSPEC_VPERM_X and UNSPEC_VPERM_UNS_X. + (altivec_vperm_): Convert to define_insn_and_split to + separate big and little endian logic. + (*altivec_vperm__internal): New define_insn. + (altivec_vperm__uns): Convert to define_insn_and_split to + separate big and little endian logic. + (*altivec_vperm__uns_internal): New define_insn. + (vec_permv16qi): Add little endian logic. + +2013-10-11 Marc Glisse + + * doc/extend.texi (returns_nonnull): Remove arguments. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (VI48F_256_512): New. + (avx2_permvar): Change to ... + (_permvar): This. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.c (bdesc_args): Change corresponding pattern for + __builtin_ia32_cvtps2dq, __builtin_ia32_cvtps2dq256. + * config/i386/sse.md (VI4_AVX): New. + (sf2simodelower): Ditto. + (sse2_cvtps2dq): Change to ... + (_fix_notrunc): This. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (V_512): New. + (VI_512): Ditto. + (vcond): Ditto. + (vcond): Ditto. + (vcondu): Ditto. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.c (ix86_rtx_costs): Enable fma for TARGET_AVX512F. + * config/i386/sse.md (FMAMODEM): Changed modes and conditions. + (FMAMODE): Ditto. + (fma4): Removed condition. + (fms4): Ditto. + (fnma4): Ditto. + (fnms4): Ditto. + (fma4i_fmadd_): Ditto. + (*fma_fmadd_): Ditto. + (*fma_fmsub_): Ditto. + (*fma_fnmadd_): Ditto. + (*fma_fnmsub_): Ditto. + (fmaddsub_): Allow for TARGET_AVX512F. + (*fma_fmaddsub_): Ditto. + (*fma_fmsubadd_): Ditto. + (*fmai_fmadd_): Ditto. + (*fmai_fmsub_): Ditto. + (*fmai_fnmadd_): Ditto. + (*fmai_fnmsub_): Ditto. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (VI248_AVX2_8_AVX512F): New. + (VI124_256): Changed to ... + (VI124_256_48_512): This. + (ssepackmode): Extended with wider modes. + (3): Changed iterator. + (*avx2_3): Ditto. + (vec_pack_trunc_): Ditto. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (VI124_AVX2_48_AVX512F): New. + (VI8F_256_512): Ditto. + (abs2): Changed iterator. + (avx2_perm): Changed to ... + (_perm): This. + (avx2_perm_1): Changed to ... + (_perm_1): This. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (VI48_AVX512F): New. + (VI48_AVX2): Changed to ... + (VI48_AVX2_48_AVX512F): This. + (avx2_ashrv): Changed to ... + (_ashrv): This. + (avx2_v): Changed to ... + (_v): This. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (VI4_AVX512F): New. + (VI8_AVX2_AVX512F): Ditto. + (mul3): Extended with wider modes. + (*_mul3): Ditto. + (mul3): Ditto. + (vec_widen_mult_odd_): Ditto. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (VI2_AVX512F): New. + (VI124_AVX512F): Ditto. + (sseunpackmode): Extended with wider modes. + (sseunpackfltmode): Ditto. + (vec_unpacks_float_hi_): Ditto. + (vec_unpacks_float_lo_): Ditto. + (vec_unpacku_float_hi_): Ditto. + (vec_unpacku_float_lo_): Ditto. + (vec_unpacks_lo_): Ditto. + (vec_unpacks_hi_): Ditto. + (vec_unpacku_lo_): Ditto. + (vec_unpacku_hi_): Ditto. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.md (multdiv): New. + (multdiv_mnemonic): Ditto. + * config/i386/sse.md (_vmmul3): Changed to... + (_vm3): This. + (_vmdiv3): Removed. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (V): Extended with wider modes. + (VF2): Ditto. + (ssehalfvecmode): Ditto. + (i128): Ditto. + (ssepackfltmode): Ditto. + (avx_vec_concat): Ditto. + (V_256_512): New iterator. + (VF2_512_256): Ditto. + (si2dfmode): New attribute. + (si2dfmodelower): Ditto. + (sf2dfmode): Ditto. + (concat_tg_mode): Ditto. + (floatv4siv4df2): Changed to ... + (float2): This. + (avx_cvtps2pd256): Changed to ... + (_cvtps2pd): This. + (vec_pack_trunc_v4df): Changed to ... + (vec_pack_trunc_): This. + (avx_vpermil): Changed to ... + (_vpermil): This. + (fix_truncv8dfv8si2): New. + (vec_pack_sfix_trunc_v8df): Ditto. + (avx512f_rndscale): Ditto. + (avx512f_roundpd512): Ditto. + (vec_pack_ufix_trunc_): Updated iterator. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.md (any_fix): New iterator. + (fixsuffix): New attribute. + * config/i386/sse.md (VF1): Extened with wider modes. + (VI): Ditto. + (VI_AVX2): Ditto. + (VI8): Ditto. + (sseintvecmodelower): Ditto. + (ssescalarmode): Ditto. + (ssescalarnum): Ditto. + (VF1_128_256): New. + (ssexmmmode): Ditto. + (fix_truncv16sfv16si2): Ditto. + (_rcp2): Change iterator. + (rsqrt2): Ditto. + (_rsqrt2): Ditto. + (avx2_vec_dup): Ditto. + (_round_sfix): Ditto. + (round2_sfix): Ditto. + (avx2_pbroadcast): Ditto. + (*andnot3): Handle XI mode. + (*3): Ditto. + (AVXTOSSEMODE): Removed. + (avx_vpermil): Changed to ... + (_vpermil): This. + +2013-10-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/sse.md (_movnt): Update constraint to "v". + (_comi): Ditto. + (_ucomi): Ditto. + (sse_cvtss2siq_2): Ditto. + (sse2_cvtsd2si): Ditto. + (sse2_cvtsd2siq): Ditto. + (sse2_cvttsd2si): Ditto. + (sse2_cvttsd2siq): Ditto. + (3): Ditto. + (sse2_cvtsi2sdq): Update constraint and prefix. + (sse_cvtsi2ss): Update prefix. + (sse_cvtsi2ssq): Ditto. + +2013-10-11 Jakub Jelinek + + * tree-vrp.c (infer_nonnull_range): Use is_gimple_call, + ignore internal calls. + +2013-10-11 Richard Biener + + * tree-pretty-print.c (dump_generic_node): Allow to dump both (D) + and (ab) for SSA_NAMEs. Mark INTEGER_CSTs with (OVF) if + TREE_OVERFLOW is set. + +2013-10-11 Thomas Schwinge + + * tree.h (OMP_CLAUSE_CODE): Remove duplicate definition. + + * gimple.c: GIMPLE statements have subcodes, not sub-codes. + * gimple.h: Likewise. + + * doc/generic.texi (OpenMP): OMP_CLAUSE_* are subcodes, not sub-codes. + + * doc/generic.texi (Adding new DECL node types): Explain *_CHECK + macros. + + * doc/gimple.texi (is_gimple_omp): Move into the correct section. + + * acinclude.m4 (gcc_GAS_FLAGS): Add more gcc_cv_as_flags overrides. + * configure: Regenerate. + +2013-10-11 Jakub Jelinek + + * tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE__LOOPTEMP_ + and new OpenMP 4.0 clauses, handle UDR OMP_CLAUSE_REDUCTION, + formatting fixes, use pp_colon instead of pp_character (..., ':'), + similarly pp_right_paren. + (dump_generic_node): Handle OMP_DISTRIBUTE, OMP_TEAMS, + OMP_TARGET_DATA, OMP_TARGET, OMP_TARGET_UPDATE, OMP_TASKGROUP, + allow OMP_FOR_INIT to be NULL, handle OMP_ATOMIC_SEQ_CST. + * tree.c (omp_clause_num_ops, omp_clause_code_name): Add OpenMP 4.0 + clauses. + (omp_declare_simd_clauses_equal, + omp_remove_redundant_declare_simd_attrs): New functions. + (attribute_value_equal): Use omp_declare_simd_clauses_equal. + (walk_tree_1): Handle new OpenMP 4.0 clauses. + * tree.h (OMP_LOOP_CHECK): Define. + (OMP_FOR_BODY, OMP_FOR_CLAUSES, OMP_FOR_INIT, OMP_FOR_COND, + OMP_FOR_INCR, OMP_FOR_PRE_BODY): Use it. + (OMP_TASKGROUP_BODY, OMP_TEAMS_BODY, OMP_TEAMS_CLAUSES, + OMP_TARGET_DATA_BODY, OMP_TARGET_DATA_CLAUSES, OMP_TARGET_BODY, + OMP_TARGET_CLAUSES, OMP_TARGET_UPDATE_CLAUSES, OMP_CLAUSE_SIZE, + OMP_ATOMIC_SEQ_CST, OMP_CLAUSE_DEPEND_KIND, OMP_CLAUSE_MAP_KIND, + OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION, OMP_CLAUSE_PROC_BIND_KIND, + OMP_CLAUSE_REDUCTION_OMP_ORIG_REF, OMP_CLAUSE_ALIGNED_ALIGNMENT, + OMP_CLAUSE_NUM_TEAMS_EXPR, OMP_CLAUSE_THREAD_LIMIT_EXPR, + OMP_CLAUSE_DEVICE_ID, OMP_CLAUSE_DIST_SCHEDULE_CHUNK_EXPR, + OMP_CLAUSE_SIMDLEN_EXPR): Define. + (OMP_CLAUSE_DECL): Change range up to OMP_CLAUSE__LOOPTEMP_. + (omp_remove_redundant_declare_simd_attrs): New prototype. + * gimple.def (GIMPLE_OMP_TASKGROUP, GIMPLE_OMP_TARGET, + GIMPLE_OMP_TEAMS): New codes. + (GIMPLE_OMP_RETURN): Use GSS_OMP_ATOMIC_STORE instead of GSS_BASE. + * omp-low.c (struct omp_context): Add cancel_label and cancellable + fields. + (target_nesting_level): New variable. + (extract_omp_for_data): Handle GF_OMP_FOR_KIND_DISTRIBUTE and + OMP_CLAUSE_DIST_SCHEDULE. Don't fallback to library implementation + for collapse > 1 static schedule unless ordered. + (get_ws_args_for): Add par_stmt argument. Handle combined loops. + (determine_parallel_type): Adjust get_ws_args_for caller. + (install_var_field): Handle mask & 4 for double indirection. + (scan_sharing_clauses): Ignore shared clause on teams construct. + Handle OMP_CLAUSE__LOOPTEMP_ and new OpenMP 4.0 clauses. + (create_omp_child_function): If inside target or declare target + constructs, set "omp declare target" attribute on the child function. + (find_combined_for): New function. + (scan_omp_parallel): Handle combined loops. + (scan_omp_target, scan_omp_teams): New functions. + (check_omp_nesting_restrictions): Check new OpenMP 4.0 nesting + restrictions and set ctx->cancellable for cancellable constructs. + (scan_omp_1_stmt): Call check_omp_nesting_restrictions also on + selected builtin calls. Handle GIMPLE_OMP_TASKGROUP, + GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS. + (build_omp_barrier): Add lhs argument, return gimple rather than tree. + (omp_clause_aligned_alignment): New function. + (lower_rec_simd_input_clauses): Only call SET_DECL_VALUE_EXPR on decls. + (lower_rec_input_clauses): Add FD argument. Ignore shared clauses + on teams constructs. Handle user defined reductions and new + OpenMP 4.0 clauses. + (lower_reduction_clauses): Don't set placeholder to address of ref + if it has already the right type. + (lower_send_clauses): Handle OMP_CLAUSE__LOOPTEMP_. + (expand_parallel_call): Use the new non-_start suffixed builtins, + handle OMP_CLAUSE_PROC_BIND, don't call the outlined function + and GOMP_parallel_end after the call. + (expand_task_call): Handle OMP_CLAUSE_DEPEND. + (expand_omp_for_init_counts): Handle combined loops. + (expand_omp_for_init_vars): Add inner_stmt argument, handle combined + loops. + (expand_omp_for_generic): Likewise. Use GOMP_loop_end_cancel at the + end of cancellable loops. + (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): + Likewise. Handle collapse > 1 loops. + (expand_omp_simd): Handle combined loops. + (expand_omp_for): Add inner_stmt argument, adjust callers of + expand_omp_for* functions, use expand_omp_for_static*chunk even + for collapse > 1 unless ordered. + (expand_omp_sections): Use GOMP_sections_end_cancel at the end + of cancellable sections. + (expand_omp_single): Remove need_barrier variable, just rely on + gimple_omp_return_nowait_p. Adjust build_omp_barrier caller. + (expand_omp_synch): Allow GIMPLE_OMP_TASKGROUP and GIMPLE_OMP_TEAMS. + (expand_omp_atomic_load, expand_omp_atomic_store, + expand_omp_atomic_fetch_op): Handle gimple_omp_atomic_seq_cst_p. + (expand_omp_target): New function. + (expand_omp): Handle combined loops. Handle GIMPLE_OMP_TASKGROUP, + GIMPLE_OMP_TEAMS, GIMPLE_OMP_TARGET. + (build_omp_regions_1): Immediately close region for + GF_OMP_TARGET_KIND_UPDATE. + (maybe_add_implicit_barrier_cancel): New function. + (lower_omp_sections): Adjust lower_rec_input_clauses caller. Handle + cancellation. + (lower_omp_single): Likewise. Add clobber after the barrier. + (lower_omp_taskgroup): New function. + (lower_omp_for): Handle combined loops. Adjust + lower_rec_input_clauses caller. Handle cancellation. + (lower_depend_clauses): New function. + (lower_omp_taskreg): Lower depend clauses. Adjust + lower_rec_input_clauses caller. Add clobber after the call. Handle + cancellation. + (lower_omp_target, lower_omp_teams): New functions. + (lower_omp_1): Handle cancellation. Handle GIMPLE_OMP_TASKGROUP, + GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GOMP_barrier, GOMP_cancel + and GOMP_cancellation_point calls. + (lower_omp): Fold stmts inside of target region. + (diagnose_sb_1, diagnose_sb_2): Handle GIMPLE_OMP_TASKGROUP, + GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS. + * builtin-types.def (DEF_FUNCTION_TYPE_8): Document. + (BT_FN_VOID_OMPFN_PTR_UINT, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG, + BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove. + (BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT, + BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL, BT_FN_VOID_UINT_UINT, + BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR, + BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR, + BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New. + * tree-ssa-alias.c (ref_maybe_used_by_call_p_1, + call_may_clobber_ref_p_1): Handle BUILT_IN_GOMP_BARRIER_CANCEL, + BUILT_IN_GOMP_TASKGROUP_END, BUILT_IN_GOMP_LOOP_END_CANCEL, + BUILT_IN_GOMP_SECTIONS_END_CANCEL. Don't handle + BUILT_IN_GOMP_PARALLEL_END. + * gimple-low.c (lower_stmt): Handle GIMPLE_OMP_TASKGROUP, + GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS. + * gimple-pretty-print.c (dump_gimple_omp_for): Handle + GF_OMP_FOR_KIND_DISTRIBUTE. + (dump_gimple_omp_target, dump_gimple_omp_teams): New functions. + (dump_gimple_omp_block): Handle GIMPLE_OMP_TASKGROUP. + (dump_gimple_omp_return): Print lhs if it has any. + (dump_gimple_omp_atomic_load, dump_gimple_omp_atomic_store): Handle + gimple_omp_atomic_seq_cst_p. + (pp_gimple_stmt_1): Handle GIMPLE_OMP_TASKGROUP, GIMPLE_OMP_TARGET + and GIMPLE_OMP_TEAMS. + * langhooks.c (lhd_omp_mappable_type): New function. + * tree-vectorizer.c (struct simd_array_to_simduid): Fix up comment. + * langhooks.h (struct lang_hooks_for_types): Add omp_mappable_type + hook. + * gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP, + GOVD_ALIGNED and GOVD_MAP_TO_ONLY. + (enum omp_region_type): Add ORT_TEAMS, ORT_TARGET_DATA and ORT_TARGET. + (struct gimplify_omp_ctx): Add combined_loop field. + (gimplify_call_expr, gimplify_modify_expr): Don't call fold_stmt + on stmts inside of target region. + (is_gimple_stmt): Return true for OMP_DISTRIBUTE and OMP_TASKGROUP. + (omp_firstprivatize_variable): Handle GOVD_MAP, GOVD_ALIGNED, + ORT_TARGET and ORT_TARGET_DATA. + (omp_add_variable): Avoid checks on readding var for GOVD_ALIGNED. + Handle GOVD_MAP. + (omp_notice_threadprivate_variable): Complain about threadprivate + variables in target region. + (omp_notice_variable): Complain about vars with non-mappable type + in target region. Handle ORT_TEAMS, ORT_TARGET and ORT_TARGET_DATA. + (omp_check_private): Ignore ORT_TARGET* regions. + (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses_1, + gimplify_adjust_omp_clauses): Handle new OpenMP 4.0 clauses. + (find_combined_omp_for): New function. + (gimplify_omp_for): Handle gimplification of combined loops. + (gimplify_omp_workshare): Gimplify also OMP_TARGET, OMP_TARGET_DATA, + OMP_TEAMS. + (gimplify_omp_target_update): New function. + (gimplify_omp_atomic): Handle OMP_ATOMIC_SEQ_CST. + (gimplify_expr): Handle OMP_DISTRIBUTE, OMP_TARGET, OMP_TARGET_DATA, + OMP_TARGET_UPDATE, OMP_TEAMS, OMP_TASKGROUP. + (gimplify_body): If fndecl has "omp declare target" attribute, add + implicit ORT_TARGET context around it. + * tree.def (OMP_DISTRIBUTE, OMP_TEAMS, OMP_TARGET_DATA, OMP_TARGET, + OMP_TASKGROUP, OMP_TARGET_UPDATE): New tree codes. + * tree-nested.c (convert_nonlocal_reference_stmt, + convert_local_reference_stmt, convert_gimple_call): Handle + GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP. + * omp-builtins.def (BUILT_IN_GOMP_TASK): Use + BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR + instead of BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT. + (BUILT_IN_GOMP_TARGET, BUILT_IN_GOMP_TARGET_DATA, + BUILT_IN_GOMP_TARGET_END_DATA, BUILT_IN_GOMP_TARGET_UPDATE, + BUILT_IN_GOMP_TEAMS, BUILT_IN_BARRIER_CANCEL, + BUILT_IN_GOMP_LOOP_END_CANCEL, + BUILT_IN_GOMP_SECTIONS_END_CANCEL, BUILT_IN_OMP_GET_TEAM_NUM, + BUILT_IN_OMP_GET_NUM_TEAMS, BUILT_IN_GOMP_TASKGROUP_START, + BUILT_IN_GOMP_TASKGROUP_END, BUILT_IN_GOMP_PARALLEL_LOOP_STATIC, + BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC, + BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED, + BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME, BUILT_IN_GOMP_PARALLEL, + BUILT_IN_GOMP_PARALLEL_SECTIONS, BUILT_IN_GOMP_CANCEL, + BUILT_IN_GOMP_CANCELLATION_POINT): New built-ins. + (BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START, + BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START, + BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START, + BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START, + BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END, + BUILT_IN_GOMP_PARALLEL_SECTIONS_START): Remove. + * tree-inline.c (remap_gimple_stmt, estimate_num_insns): + Handle GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP. + * gimple.c (gimple_build_omp_taskgroup, gimple_build_omp_target, + gimple_build_omp_teams): New functions. + (walk_gimple_op): Handle GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and + GIMPLE_OMP_TASKGROUP. Walk optional lhs on GIMPLE_OMP_RETURN. + (walk_gimple_stmt, gimple_copy): Handle GIMPLE_OMP_TARGET, + GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP. + * gimple.h (enum gf_mask): GF_OMP_FOR_KIND_DISTRIBUTE, + GF_OMP_FOR_COMBINED, GF_OMP_FOR_COMBINED_INTO, + GF_OMP_TARGET_KIND_MASK, GF_OMP_TARGET_KIND_REGION, + GF_OMP_TARGET_KIND_DATA, GF_OMP_TARGET_KIND_UPDATE, + GF_OMP_ATOMIC_SEQ_CST): New. + (gimple_build_omp_taskgroup, gimple_build_omp_target, + gimple_build_omp_teams): New prototypes. + (gimple_has_substatements): Handle GIMPLE_OMP_TARGET, + GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP. + (gimple_omp_subcode): Use GIMPLE_OMP_TEAMS instead of + GIMPLE_OMP_SINGLE as end of range. + (gimple_omp_return_set_lhs, gimple_omp_return_lhs, + gimple_omp_return_lhs_ptr, gimple_omp_atomic_seq_cst_p, + gimple_omp_atomic_set_seq_cst, gimple_omp_for_combined_p, + gimple_omp_for_set_combined_p, gimple_omp_for_combined_into_p, + gimple_omp_for_set_combined_into_p, gimple_omp_target_clauses, + gimple_omp_target_clauses_ptr, gimple_omp_target_set_clauses, + gimple_omp_target_kind, gimple_omp_target_set_kind, + gimple_omp_target_child_fn, gimple_omp_target_child_fn_ptr, + gimple_omp_target_set_child_fn, gimple_omp_target_data_arg, + gimple_omp_target_data_arg_ptr, gimple_omp_target_set_data_arg, + gimple_omp_teams_clauses, gimple_omp_teams_clauses_ptr, + gimple_omp_teams_set_clauses): New inlines. + (CASE_GIMPLE_OMP): Add GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS + and GIMPLE_OMP_TASKGROUP. + * tree-core.h (enum omp_clause_code): Add new OpenMP 4.0 clause codes. + (enum omp_clause_depend_kind, enum omp_clause_map_kind, + enum omp_clause_proc_bind_kind): New. + (union omp_clause_subcode): Add depend_kind, map_kind and + proc_bind_kind fields. + * tree-cfg.c (make_edges): Handle GIMPLE_OMP_TARGET, + GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP. + * langhooks-def.h (lhd_omp_mappable_type): New prototype. + (LANG_HOOKS_OMP_MAPPABLE_TYPE): Define. + (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it. + +2013-10-10 Teresa Johnson + + * predict.c (tree_estimate_probability): Add new parameter + for estimate_bb_frequencies. + (estimate_bb_frequencies): Add new parameter to force estimation. + (rebuild_frequencies): When max frequency in function is small, + recompute counts from frequencies. + * predict.h (estimate_bb_frequencies): New parameter. + +2013-10-10 David Malcolm + + * ipa-inline.c (ipa_inline): Fix leak of "order" when + optimizations are disabled. + +2013-10-10 David Malcolm + + * coverage.c (coverage_finish): Fix leak of da_file_name. + +2013-10-10 Jan Hubicka + + * config/i386/x86-tune.def: Enable X86_TUNE_SSE_TYPELESS_STORES + for generic, enable X86_TUNE_SSE_LOAD0_BY_PXOR for Bulldozer, + Bobcat and generic. + +2013-10-10 Jakub Jelinek + + PR middle-end/58670 + * stmt.c (expand_asm_operands): Add FALLTHRU_BB argument, + if any labels are in FALLTHRU_BB, use a special label emitted + immediately after the asm goto insn rather than label_rtx + of the LABEL_DECL. + (expand_asm_stmt): Adjust caller. + * cfgrtl.c (commit_one_edge_insertion): Force splitting of + edge if the last insn in predecessor is a jump with single successor, + but it isn't simplejump_p. + +2013-10-10 Richard Biener + + PR tree-optimization/58656 + * tree-ssa-pre.c (phi_translate): Do not cache failed translations. + +2013-10-10 Andrew MacLeod + + * gimplify.c: Include expr.h and tm_p.h for targets with special + va-arg padding requirements. + +2013-10-10 Andrew MacLeod + + * tree-flow.h: Move some prototypes to gimple.h. + (gimple_fold_indirect_ref): Move prototype to gimple-fold.h. + * gimple.h: Relocate some prototypes from tree-flow.h + * builtins.c (std_gimplify_va_arg_expr, build_va_arg_indirect_ref): + Move to gimplify.c. + * gimplify.c (gimple_fold_indirect_ref): Move to gimple-fold.c. + (build_va_arg_indirect_ref): Relocate and make static. + (std_gimplify_va_arg_expr): Relocate here. + * gimple-fold.c (gimple_fold_indirect_ref): Relocate here. + * gimple-fold.h (gimple_fold_indirect_ref): Add prototype. + +2013-10-10 Andreas Krebbel + + * doc/md.texi: Document the mnemonic attribute. + +2013-10-10 Andreas Krebbel + + PR target/57377 + * gensupport.c (gen_mnemonic_attr): Handle (set (attr x) y) and + (set_attr_alternative x ...) when searching for user defined + mnemonic attribute. + +2013-10-10 Andrew MacLeod + + * config/alpha/alpha.c: Add gimple-ssa.h to include list. + +2013-10-09 Easwaran Raman + + * params.def (PARAM_MIN_SIZE_FOR_STACK_SHARING): New param... + * cfgexpand.c (defer_stack_allocation): ...use here + * doc/invoke.texi: Add documentation for min-size-for-stack-sharing. + +2013-10-09 Zhenqiang Chen + + * tree-ssa-phiopts.c (rhs_is_fed_for_value_replacement): New function. + (operand_equal_for_value_replacement): New function, extracted from + value_replacement and enhanced to catch more cases. + (value_replacement): Use operand_equal_for_value_replacement. + +2013-10-09 Andrew MacLeod + + * loop-doloop.c (doloop_modify, doloop_optimize): Use + get_max_loop_iterations. + +2013-10-09 Kyrylo Tkachov + + * config/arm/aarch-common.c (arm_early_load_addr_dep): + Place comment above function. + +2013-10-09 Andrew MacLeod + + * tree-flow.h: Remove all remaining prototypes, enums and structs that + are not related to tree-cfg.c. + * tree-ssa-address.h: New file. Relocate prototypes. + * tree-ssa-address.c: (struct mem_address): Relocate from tree-flow.h. + (addr_for_mem_ref): New. Combine call to get_address_description and + return addr_for_mem_ref. + * expr.c (expand_expr_real_1): Use new addr_for_mem_ref routine. + * tree-ssa-live.h: Adjust prototypes. + * passes.c: Include tree-ssa-live.h. + * gimple-pretty-print.h (gimple_dump_bb): Add prototype. + * graphite.c (graphite_transform_loops): Make static. + (graphite_transforms, gate_graphite_transforms, pass_data_graphite, + make_pass_graphite, pass_data_graphite_transforms, + make_pass_graphite_transforms): Relocate here from tree-ssa-loop.c. + * ipa-pure-const.c (warn_function_noreturn): Make static. + (execute_warn_function_noreturn, gate_warn_function_noreturn, + class pass_warn_function_noreturn, make_pass_warn_function_noreturn): + Relocate from tree-cfg.c + * tree-cfg.c (tree_node_can_be_shared, gimple_empty_block_p): Make + static. + (execute_warn_function_noreturn, gate_warn_function_noreturn, + class pass_warn_function_noreturn, make_pass_warn_function_noreturn): + Move to ipa-pure-const.c. + (execute_fixup_cfg, class pass_fixup_cfg, make_pass_fixup_cfg): + Relocate from tree-optimize.c. + * tree-optimize.c (execute_fixup_cfg, class pass_fixup_cfg, + make_pass_fixup_cfg): Move to tree-cfg.c. + * tree-chrec.h: (enum ev_direction): Relocate here from tree-flow.h. + Relocate some prototypes. + * tree-data-ref.h (tree_check_data_deps) Add prototype. + * tree-dump.c (dump_function_to_file): Remove prototype. + Add tree-flow.h to the include file. + * tree-dump.h: Remove prototype. + * tree-parloops.h: New File. Add prototypes. + * tree-parloops.c (gate_tree_parallelize_loops, tree_parallelize_loops, + pass_data_parallelize_loops, make_pass_parallelize_loops): Relocate + from tree-ssa-loop.c. + * tree-predcom.c (run_tree_predictive_commoning, + gate_tree_predictive_commoning, pass_data_predcom, make_pass_predcom): + Relocate here from tree-ssa-loop.c. + * tree-ssa-dom.c (tree_ssa_dominator_optimize) Don't call + ssa_name_values.release (). + * tree-ssa-threadedge.h: New File. Relocate prototypes here. + (ssa_name_values): Relocate from tree-flow.h. + * tree-ssa.h: Include tree-ssa-threadedge.h and tree-ssa-address.h. + * tree-ssa-loop.c (run_tree_predictive_commoning, + gate_tree_predictive_commoning, pass_data_predcom, make_pass_predcom, + graphite_transforms, gate_graphite_transforms, pass_data_graphite, + make_pass_graphite, pass_data_graphite_transforms, + make_pass_graphite_transforms, gate_tree_parallelize_loops, + tree_parallelize_loops, pass_data_parallelize_loops, + make_pass_parallelize_loops): Move to other files. + * tree-vectorizer.h (lpeel_tree_duplicate_loop_to_edge_cfg): Prototype + moved here. + * tree.h: Remove prototypes from tree-address.c. + +2013-10-09 Andrew MacLeod + + * tree-flow.h (tm_restart_node, gimple_df): Move to gimple-ssa.h. + (struct int_tree_map): Move to tree-hasher.h + (SCALE, LABEL, PERCENT): Move to gimple.h + * tree-flow-inline.h: Delete. Move functions to other files. + (unmodifiable_var_p, ref_contains_array_ref): Unused, so delete. + * gimple-ssa.h (tm_restart_node, gimple_df): Relocate from tree-flow.h. + (gimple_in_ssa_p, gimple_vop): Relocate from tree-flow-inline.h + * gimple.h (imple_stmt_max_uid, set_gimple_stmt_max_uid, + inc_gimple_stmt_max_uid, get_lineno): Relocate from tree-flow-inline.h. + (SCALE, LABEL, PERCENT): Relocate from tree-flow.h + * tree-hasher.h: Don't include tree-flow.h. + (struct int_tree_map): Relocate from tree-flow.h. + * tree-sra.c (contains_view_convert_expr_p): Relocate from + tree-flow-inline.h and make static. + * tree-ssa-alias.h (ranges_overlap_p): Relocate from + tree-flow-inline.h. + * tree-ssa-operands.c (gimple_ssa_operands): Relocate from + tree-flow-inline.h and make static. + * tree.h (is_global_var, may_be_aliased): Relocate from + tree-flow-inline.h. + * Makefile.in (GTFILES): Remove tree-flow.h and add gimple-ssa.h. + * value-prof.c: No longer include tree-flow-inline.h. + * tree-switch-conversion.c: No longer include tree-flow-inline.h. + +2013-10-09 Andrew MacLeod + + * tree-flow.h: Move some protoypes. Include new tree-ssa-loop.h. + (struct affine_iv, struct tree_niter_desc): Move to tree-ssa-loop.h. + (enum move_pos): Move to tree-ssa-loop-im.h + * cfgloop.h: Move some prototypes. + (gcov_type_to_double_int): relocate from tree-ssa-loop.niter.c. + * tree-flow-inline.h (loop_containing_stmt): Move to tree-ssa-loop.h. + * tree-ssa-loop.h: New File. Include other tree-ssa-loop-*.h files. + (struct affine_iv, struct tree_niter_desc): Relocate from tree-flow.h. + (loop_containing_stmt): Relocate from tree-flow-inline.h. + * tree-ssa-loop-ch.c: (do_while_loop_p): Make static. + * tree-ssa-loop-im.c (for_each_index): Move to tree-ssa-loop.c. + (enum move_pos): Relocate here. + (lsm_tmp_name_add, gen_lsm_tmp_name, get_lsm_tmp_name): Move to + tree-ssa-loop.c. + (execute_sm_if_changed_flag_set): Change get_lsm_tmp_name call. + (tree_ssa_loop_im, gate_tree_ssa_loop_im, pass_data_lim, + make_pass_lim): Relocate here from tree-ssa-loop.c. + * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Move to + tree-ssa-loop.c. + (loop_edge_to_cancel, unloop_loops): Make static. + (tree_ssa_loop_ivcanon, gate_tree_ssa_loop_ivcanon, pass_data_iv_canon, + make_pass_iv_canon): Relocate from tree-ssa-loop.c. + (tree_complete_unroll, gate_tree_complete_unroll, + pass_data_complete_unroll, make_pass_complete_unroll): Relocate here. + (tree_complete_unroll_inner, gate_tree_complete_unroll_inner, + pass_data_complete_unrolli, make_pass_complete_unrolli): Relocate here. + * tree-ssa-loop-ivopts.c: Remove local prototypes. + (stmt_invariant_in_loop_p): Remove unused function. + * tree-ssa-loop-ivopts.h: New file. Add prototypes. + * tree-ssa-loop-manip.h: New file. Add prototypes. + * tree-ssa-loop-niter.c (record_niter_bound): Move to cfgloop.c. + (gcov_type_to_double_int): Move to cfgloop.h. + (double_int_cmp, bound_index, + estimate_numbers_of_iterations_loop): Make static. + (estimated_loop_iterations): Factor out get_estimated_loop_iterations. + (max_loop_iterations): Factor out get_max_loop_iterations. + (estimated_loop_iterations_int, max_stmt_executions_int): Move to + cfgloop.c. + * tree-ssa-loop-niter.h: New file. Add prototypes. + * tree-ssa-loop-prefetch.c (tree_ssa_loop_prefetch, + gate_tree_ssa_loop_prefetch, pass_data_loop_prefetch, + make_pass_loop_prefetch): Relocate from tree-ssa-loop.c. + * tree-ssa-loop-unswitch.c (tree_ssa_loop_unswitch, + gate_tree_ssa_loop_unswitch, pass_data_tree_unswitch, + make_pass_tree_unswitch): Relocate from tree-ssa-loop.c. + * tree-ssa-loop.c (tree_ssa_loop_im, gate_tree_ssa_loop_im, + pass_data_lim, make_pass_lim): Move to tree-ssa-loop-im.c. + (tree_ssa_loop_unswitch, gate_tree_ssa_loop_unswitch, + pass_data_tree_unswitch, make_pass_tree_unswitch): Move. + (tree_ssa_loop_ivcanon, gate_tree_ssa_loop_ivcanon, pass_data_iv_canon, + make_pass_iv_canon, tree_complete_unroll, gate_tree_complete_unroll, + pass_data_complete_unroll, make_pass_complete_unroll, + tree_complete_unroll_inner, gate_tree_complete_unroll_inner, + pass_data_complete_unrolli, make_pass_complete_unrolli): Move to + tree-ssa-loop-ivcanon.c. + (tree_ssa_loop_prefetch, gate_tree_ssa_loop_prefetch, + pass_data_loop_prefetch, make_pass_loop_prefetch): Move to + tree-ssa-loop-prefetch.c. + (for_each_index, lsm_tmp_name_add, gen_lsm_tmp_name): Relocate from + tree-ssa-loop-im.c. + (get_lsm_tmp_name): Relocate and add suffix parameter. + (tree_num_loop_insns): Relocate from tree-ssa-ivcanon.c. + * tree-scalar-evolution.h (simple_iv): Don't use affive_iv typedef. + * cfgloop.c (record_niter_bound, estimated_loop_iterations_int, + max_stmt_executions_int): Move from tree-ssa-loop-niter.c. + (get_estimated_loop_iterations): Factor out accessor from + estimated_loop_iterations in tree-ssa-loop-niter.c. + (get_max_loop_iterations): Factor out accessor from + _max_loop_iterations in tree-ssa-niter.c. + * loop-unroll.c (decide_unroll_constant_iterations, + decide_unroll_runtime_iterations, decide_peel_simple, + decide_unroll_stupid): Use new get_* accessors. + +2013-10-09 Marc Glisse + + PR tree-optimization/20318 + * doc/extend.texi (returns_nonnull): New function attribute. + * fold-const.c (tree_expr_nonzero_warnv_p): Look for returns_nonnull + attribute. + * tree-vrp.c (gimple_stmt_nonzero_warnv_p): Likewise. + (stmt_interesting_for_vrp): Accept all GIMPLE_CALL. + +2013-10-09 Eric Botcazou + + PR middle-end/58570 + * tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): Return + false if both components are bitfields. + +2013-10-09 Alex Velenko + + * config/aarch64/arm_neon.h (vclz_s8, vclz_s16, vclz_s32) + (vclzq_s8, vclzq_s16, vclzq_s32, vclz_u8, vclz_u16, vclz_u32) + (vclzq_u8, vclzq_u16, vclzq_u32): Replace ASM with C. + * config/aarch64/aarch64.h + (CLZ_DEFINED_VALUE_AT_ZERO): Macro fixed for clz. + * config/aarch64/aarch64-simd-builtins.def + (VAR1 (UNOP, clz, 0, v4si)): Replaced with iterator. + +2013-10-09 Alex Velenko + + * config/aarch64/arm_neon.h (vadd_f64, vsub_f64): Implementation added. + +2013-10-09 Alex Velenko + + * config/aarch64/arm_neon.h (vdiv_f64): Added. + +2013-10-09 Alex Velenko + + * config/aarch64/arm_neon.h (vneg_f32): Asm replaced with C. + (vneg_f64): New intrinsic. + (vneg_s8): Asm replaced with C. + (vneg_s16): Likewise. + (vneg_s32): Likewise. + (vneg_s64): New intrinsic. + (vnegq_f32): Asm replaced with C. + (vnegq_f64): Likewise. + (vnegq_s8): Likewise. + (vnegq_s16): Likewise. + (vnegq_s32): Likewise. + (vnegq_s64): Likewise. + +2013-10-09 Renlin Li + + * config/arm/arm.c (arm_output_mi_thunk): Use plus_constant. + +2013-10-09 Andreas Krebbel + + * config/s390/s390.c (s390_register_info_stdarg_fpr): Remove + packed stack special handling. + (s390_frame_info, s390_emit_prologue, s390_emit_epilogue): Switch + back to fixed stack slots for FPRs saved due to stdarg. + +2013-10-09 Andreas Krebbel + + * config/s390/s390.c (s390_frame_info): Restructure function. + +2013-10-09 Andreas Krebbel + + * config/s390/s390.c (struct s390_frame_layout): New field + gpr_save_slots. + (cfun_save_arg_fprs_p, cfun_gpr_save_slot): New macros. + (s390_reg_clobbered_rtx, s390_regs_ever_clobbered): Change type of + regs_ever_clobbered to char*. + (s390_regs_ever_clobbered): Check crtl->saves_all_registers instead + of cfun->has_nonlocal_label. Ignore frame related restore INSNs. + (s390_register_info): Enable FPR save slots. Move/Copy some + functionality into ... + (s390_register_info_gprtofpr, s390_register_info_stdarg_fpr) + (s390_register_info_stdarg_gpr, s390_optimize_register_info): New + function. + (s390_frame_info): Do gpr slot allocation here now. stdarg does + not imply a stack frame. + (s390_init_frame_layout): Remove variable clobbered_regs. + (s390_update_register_info): Remove function. + (s390_hard_regno_rename_ok): Call-saved regs without a save slot + cannot be used for register renaming. + (s390_hard_regno_scratch_ok): New function. + (TARGET_HARD_REGNO_SCRATCH_OK): Define target hook. + (s390_initial_elimination_offset): Change offset calculation of + the return address pointer. + (save_gprs): Deal with only r6 being saved from the call-saved regs. + (restore_gprs): Set frame related flag. + (s390_save_gprs_to_fprs, s390_restore_gprs_from_fprs): New functions. + (s390_emit_prologue): Call s390_register_info instead of + s390_update_frame_layout. Call s390_save_gprs_to_fprs. + (s390_emit_epilogue): Call s390_restore_gprs_from_fprs. + (s390_optimize_prologue): Call s390_optimize_register_info. + Try to remove also FPR slot save/restore INSNs. Remove frame + related flags from restore INSNs. + +2013-10-08 DJ Delorie + + * config/rl78/rl78-expand.md (movqi): use operands[] not operandN. + (movhi): Likewise. + + * config/rl78/rl78.c (rl78_print_operand_1): Change %c to %C to + avoid conflict with the MI use of %c. + * config/rl78/rl78-real.md: change %c to %C throughout. + * config/rl78/rl78-virt.md: Likewise. + +2013-10-08 Jan Hubicka + + * config/i386/i386.c (ix86_option_override_internal): Switch + to SSE math for -ffast-math when target ISA supports SSE2. + +2013-10-08 Andrew MacLeod + + * tree-flow.h: Remove some prototypes. + * tree.h: Remove some protypes, add a couple. + * tree.c (using_eh_for_cleanups_flag, using_eh_for_cleanups, + using_eh_for_cleanups_p): Add interface routines for front ends. + * tree-eh.h: New file. Add protoptyes. + * tree-eh.c (using_eh_for_cleanups_p, using_eh_for_cleanups): Delete. + (add_stmt_to_eh_lp_fn): Make static. + (lower_try_finally): Use new using_eh_for_cleanups_p. + * emit-rtl.c: Include tree-eh.h. + * gimple.h: Include tree-eh.h. + +2013-10-08 Marc Glisse + + PR tree-optimization/58480 + * tree-vrp.c (infer_nonnull_range): New function. + (infer_value_range): Call infer_nonnull_range. + +2013-10-08 Dehao Chen + + PR tree-optimization/58619 + * tree-inline.c (copy_phis_for_bb): Combine location data + only if non-null. + +2013-10-08 Zhenqiang Chen + + PR target/58423 + * config/arm/arm.c (arm_emit_ldrd_pop): Attach + RTX_FRAME_RELATED_P on INSN. + +2013-10-07 Bill Schmidt + + * config/rs6000/rs6000.c (altivec_expand_vec_perm_const_le): New. + (altivec_expand_vec_perm_const): Call it. + +2013-10-07 Bill Schmidt + + * config/rs6000/vector.md (mov): Emit permuted move + sequences for LE VSX loads and stores at expand time. + * config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_move): New + prototype. + * config/rs6000/rs6000.c (rs6000_const_vec): New. + (rs6000_gen_le_vsx_permute): New. + (rs6000_gen_le_vsx_load): New. + (rs6000_gen_le_vsx_store): New. + (rs6000_gen_le_vsx_move): New. + * config/rs6000/vsx.md (*vsx_le_perm_load_v2di): New. + (*vsx_le_perm_load_v4si): New. + (*vsx_le_perm_load_v8hi): New. + (*vsx_le_perm_load_v16qi): New. + (*vsx_le_perm_store_v2di): New. + (*vsx_le_perm_store_v4si): New. + (*vsx_le_perm_store_v8hi): New. + (*vsx_le_perm_store_v16qi): New. + (*vsx_xxpermdi2_le_): New. + (*vsx_xxpermdi4_le_): New. + (*vsx_xxpermdi8_le_V8HI): New. + (*vsx_xxpermdi16_le_V16QI): New. + (*vsx_lxvd2x2_le_): New. + (*vsx_lxvd2x4_le_): New. + (*vsx_lxvd2x8_le_V8HI): New. + (*vsx_lxvd2x16_le_V16QI): New. + (*vsx_stxvd2x2_le_): New. + (*vsx_stxvd2x4_le_): New. + (*vsx_stxvd2x8_le_V8HI): New. + (*vsx_stxvd2x16_le_V16QI): New. + +2013-10-07 Renlin Li + + * config/arm/arm-cores.def (cortex-a53): Use cortex tuning. + +2013-10-07 Andreas Krebbel + + * config/s390/s390.c (s390_register_info): Make the call-saved FPR + loop to work also for 31bit ABI. + Save the stack pointer for frame_size > 0. + +2013-10-07 Andreas Krebbel + + * config/s390/s390.md ("tbegin", "tbegin_nofloat", "tbegin_retry") + ("tbegin_retry_nofloat", "tend", "tabort", "tx_assist"): Remove + constraint letters from expanders. + ("tbegin_retry", "tbegin_retry_nofloat"): Change predicate of the + retry count to general_operand. + ("tabort"): Give operand 0 a mode. + ("tabort_1"): Add mode and constraint letter for operand 0. + * doc/extend.texi: Fix protoype of __builtin_non_tx_store. + +2013-10-04 Jeff Law + + * tree-ssa-threadedge.c: Fix some trailing whitespace problems. + + * tree-ssa-threadedge.c (thread_through_normal_block): Broken + out of ... + (thread_across_edge): Here. Call it. + +2013-10-04 Cary Coutant + + * dwarf2out.c (dw_sra_loc_expr): Release addr_table entries when + discarding a location list expression (or a piece of one). + +2013-10-03 Jan Hubicka + + * config/i386/i386.c (ix86_issue_rate): Pentium4, Nocona has issue + rate of 2. Core2, Corei7 and Haswell has issue rate of 4. + (ix86_adjust_cost): Remove Atom case; fix core2/corei7/Haswell case. + +2013-10-03 Jan Hubicka + + * config/i386/i386.c (ix86_option_override_internal): Do not enable + accumulate-outgoing-args when producing unwind info. + +2013-10-03 Wei Mi + + * lra-constraints.c (insert_move_for_subreg): New function + extracted from simplify_operand_subreg. + (simplify_operand_subreg): Add reload for paradoxical subreg. + +2013-10-03 Rong Xu + + * ipa-inline-analysis.c (find_foldable_builtin_expect): Find + the candidate of builtin_expect such that we should fix the + size/time estimation. + (estimate_function_body_sizes): Do the acutally size/time fix-up + for builtin_expect. + +2013-10-03 Rong Xu + + * predict.c (tree_predict_by_opcode): Get the probability + for builtin_expect from param builtin_expect_probability. + * params.def (BUILTIN_EXPECT_PROBABILITY): New parameter. + * predict.def (PRED_BUILTIN_EXPECT_RELAXED): Fix comments. + * doc/invoke.texi: Add documentation for builtin-expect-probability. + +2013-10-03 Marc Glisse + + PR c++/19476 + * common.opt (fcheck-new): Moved from c.opt. Make it 'Common'. + * calls.c (alloca_call_p): Use get_callee_fndecl. + * fold-const.c (tree_expr_nonzero_warnv_p): Handle operator new. + * tree-vrp.c (gimple_stmt_nonzero_warnv_p, stmt_interesting_for_vrp): + Likewise. + (vrp_visit_stmt): Remove duplicated code. + +2013-10-03 Michael Meissner + + * config/rs6000/rs6000-builtin.def (XSRDPIM): Use floatdf2, + ceildf2, btruncdf2, instead of vsx_* name. + + * config/rs6000/vsx.md (vsx_add3): Change arithmetic + iterators to only do V2DF and V4SF here. Move the DF code to + rs6000.md where it is combined with SF mode. Replace with + just 'v' since only vector operations are handled with these insns + after moving the DF support to rs6000.md. + (vsx_sub3): Likewise. + (vsx_mul3): Likewise. + (vsx_div3): Likewise. + (vsx_fre2): Likewise. + (vsx_neg2): Likewise. + (vsx_abs2): Likewise. + (vsx_nabs2): Likewise. + (vsx_smax3): Likewise. + (vsx_smin3): Likewise. + (vsx_sqrt2): Likewise. + (vsx_rsqrte2): Likewise. + (vsx_fms4): Likewise. + (vsx_nfma4): Likewise. + (vsx_copysign3): Likewise. + (vsx_btrunc2): Likewise. + (vsx_floor2): Likewise. + (vsx_ceil2): Likewise. + (vsx_smaxsf3): Delete scalar ops that were moved to rs6000.md. + (vsx_sminsf3): Likewise. + (vsx_fmadf4): Likewise. + (vsx_fmsdf4): Likewise. + (vsx_nfmadf4): Likewise. + (vsx_nfmsdf4): Likewise. + (vsx_cmpdf_internal1): Likewise. + + * config/rs6000/rs6000.h (TARGET_SF_SPE): Define macros to make it + simpler to select whether a target has SPE or traditional floating + point support in iterators. + (TARGET_DF_SPE): Likewise. + (TARGET_SF_FPR): Likewise. + (TARGET_DF_FPR): Likewise. + (TARGET_SF_INSN): Macros to say whether floating point support + exists for a given operation for expanders. + (TARGET_DF_INSN): Likewise. + + * config/rs6000/rs6000.c (Ftrad): New mode attributes to allow + combining of SF/DF mode operations, using both traditional and VSX + registers. + (Fvsx): Likewise. + (Ff): Likewise. + (Fv): Likewise. + (Fs): Likewise. + (Ffre): Likewise. + (FFRE): Likewise. + (abs2): Combine SF/DF modes using traditional floating point + instructions. Add support for using the upper DF registers with + VSX support, and SF registers with power8-vector support. Update + expanders for operations supported by both the SPE and traditional + floating point units. + (abs2_fpr): Likewise. + (nabs2): Likewise. + (nabs2_fpr): Likewise. + (neg2): Likewise. + (neg2_fpr): Likewise. + (add3): Likewise. + (add3_fpr): Likewise. + (sub3): Likewise. + (sub3_fpr): Likewise. + (mul3): Likewise. + (mul3_fpr): Likewise. + (div3): Likewise. + (div3_fpr): Likewise. + (sqrt3): Likewise. + (sqrt3_fpr): Likewise. + (fre): Likewise. + (rsqrt2): Likewise. + (cmp_fpr): Likewise. + (smax3): Likewise. + (smin3): Likewise. + (smax3_vsx): Likewise. + (smin3_vsx): Likewise. + (negsf2): Delete SF operations that are merged with DF. + (abssf2): Likewise. + (addsf3): Likewise. + (subsf3): Likewise. + (mulsf3): Likewise. + (divsf3): Likewise. + (fres): Likewise. + (fmasf4_fpr): Likewise. + (fmssf4_fpr): Likewise. + (nfmasf4_fpr): Likewise. + (nfmssf4_fpr): Likewise. + (sqrtsf2): Likewise. + (rsqrtsf_internal1): Likewise. + (smaxsf3): Likewise. + (sminsf3): Likewise. + (cmpsf_internal1): Likewise. + (copysign3_fcpsgn): Add VSX/power8-vector support. + (negdf2): Delete DF operations that are merged with SF. + (absdf2): Likewise. + (nabsdf2): Likewise. + (adddf3): Likewise. + (subdf3): Likewise. + (muldf3): Likewise. + (divdf3): Likewise. + (fred): Likewise. + (rsqrtdf_internal1): Likewise. + (fmadf4_fpr): Likewise. + (fmsdf4_fpr): Likewise. + (nfmadf4_fpr): Likewise. + (nfmsdf4_fpr): Likewise. + (sqrtdf2): Likewise. + (smaxdf3): Likewise. + (smindf3): Likewise. + (cmpdf_internal1): Likewise. + (lrintdi2): Use TARGET__FPR macro. + (btrunc2): Delete separate expander, and combine with the + insn and add VSX instruction support. Use TARGET__FPR. + (btrunc2_fpr): Likewise. + (ceil2): Likewise. + (ceil2_fpr): Likewise. + (floor2): Likewise. + (floor2_fpr): Likewise. + (fma4_fpr): Combine SF and DF fused multiply/add support. + Add support for using the upper registers with VSX and + power8-vector. Move insns to be closer to the define_expands. On + VSX systems, prefer the traditional form of FMA over the VSX + version, since the traditional form allows the target not to + overlap with the inputs. + (fms4_fpr): Likewise. + (nfma4_fpr): Likewise. + (nfms4_fpr): Likewise. + +2013-10-03 Kyrylo Tkachov + Richard Earnshaw + + * config/arm/aarch-common-protos.h (struct alu_cost_table): New. + (struct mult_cost_table): Likewise. + (struct mem_cost_table): Likewise. + (struct fp_cost_table): Likewise. + (struct vector_cost_table): Likewise. + (cpu_cost_table): Likewise. + * config/arm/arm.opt (mold-rts-costs): New option. + (mnew-generic-costs): Likewise. + * config/arm/arm.c (generic_extra_costs): New table. + (cortexa15_extra_costs): Likewise. + (arm_slowmul_tune): Use NULL as new costs. + (arm_fastmul_tune): Likewise. + (arm_strongarm_tune): Likewise. + (arm_xscale_tune): Likewise. + (arm_9e_tune): Likewise. + (arm_v6t2_tune): Likewise. + (arm_cortex_a5_tune): Likewise. + (arm_cortex_a9_tune): Likewise. + (arm_v6m_tune): Likewise. + (arm_fa726te_tune): Likewise. + (arm_cortex_a15_tune): Use cortex15_extra_costs. + (arm_cortex_tune): Use generict_extra_costs. + (shifter_op_p): New function. + (arm_unspec_cost): Likewise. + (LIBCALL_COST): Define. + (arm_new_rtx_costs): New function. + (arm_rtx_costs): Use arm_new_rtx_costs when core-specific + table is available. Use old costs otherwise unless mnew-generic-costs + is specified. + * config/arm/arm-protos.h (tune_params): Add insn_extra_cost field. + (cpu_cost_table): Declare. + +2013-10-03 Marcus Shawcroft + + PR target/58460 + * config/aarch64/aarch64.md (*adds_mul_imm_) + (*subs_mul_imm_) + (*add__, *add__si_uxtw,*add_mul_imm_) + (*sub__) + (*sub__si_uxtw,*sub_mul_imm_, *sub_mul_imm_si_uxtw): + Remove k constraint. + +2013-10-03 Ian Bolton + + * config/aarch64/aarch64.c (aarch64_secondary_reload): Remove legacy + code. + * config/aarch64/aarch64.md (reload_sp_immediate): Likewise. + +2013-10-02 Teresa Johnson + + * predict.c (probably_never_executed): New function. + (probably_never_executed_bb_p): Invoke probably_never_executed. + (probably_never_executed_edge_p): Ditto. + * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges): + Treat profile insanities conservatively. + +2013-10-02 John David Anglin + + * config.gcc (hppa*64*-*-linux*): Don't add pa/t-linux to tmake_file. + +2013-10-02 Vladimir Makarov + + * lra-constraints.c (process_alt_operand): Calculate scratch_p and + use it. Use smaller increase for scratch. Don't increase reject + for early clobber scratch. + * lra-eliminations.c (eliminate_regs_in_insn): Remove all insns + setting eliminated regs except setting fp from hfp. + (lra_eliminate): Check lra_insn_recog_data on NULL. + +2013-10-02 Michael Meissner + + PR target/58587 + * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Turn off + setting -mvsx-timode by default until the underlying problem is fixed. + (RS6000_CPU, power7 defaults): Likewise. + +2013-10-02 Uros Bizjak + + * config/x-linux (host-linux.o): Remove header dependencies. + Use $(COMPILE) and $(POSTCOMPILE). + * config/t-linux-android (linux-android.o): Ditto. + +2013-10-02 Uros Bizjak + + * Makefile.in (expmed.o-warn): Remove. + +2013-10-02 Andrew MacLeod + + * graphite-scop-detection.c: Include tree-ssa-propagate,h. + * graphite-sese-to-poly.c: Include tree-ssa-propagate.h. + +2013-10-02 Teresa Johnson + + * dojump.c (do_jump_1): Divide probability between + both conditions of a TRUTH_ANDIF_EXPR/TRUTH_ORIF_EXPR. + +2013-10-02 Tom Tromey + + * Makefile.in (DRIVER_DEFINES): Use $(if), not $(and). + +2013-10-02 Andrew MacLeod + + * tree-flow.h: Remove some prototypes. + * tree-ssa-dce.c (mark_virtual_operand_for_renaming, + mark_virtual_phi_result_for_renaming): Move to tree-into-ssa.c. + * tree-into-ssa.c (mark_virtual_operand_for_renaming, + mark_virtual_phi_result_for_renaming): Relocate here. + * tree-into-ssa.h: Add prototypes. + * tree-ssa-phiopt.c: (tree_ssa_phiopt_worker) Use + single_pred_before_succ_order. + (blocks_in_phiopt_order): Rename and move to cfganal.c. + (nonfreeing_call_p) Move to gimple.c. + * cfganal.c (single_pred_before_succ_order): Move and renamed from + tree-ssa-phiopt.c. + * basic-block.h (single_pred_before_succ_order): Add prototype. + * gimple.c (nonfreeing_call_p): Relocate here. + * gimple.h: Add prototype. + * tree-ssa-ifcombine.c: Include tree-ssa-phiopt.h. + * tree-ssa-dom.h: New file. Relocate prototypes here. + * tree-ssa.h: Include tree-ssa-dom.h. + +2013-10-02 Uros Bizjak + + * config/i386/x-i386 (driver-i386.o): Remove header dependencies. + Use $(COMPILE) and $(POSTCOMPILE). + + * config/alpha/x-alpha (driver-alpha.o): Ditto. + +2013-10-02 Andrew MacLeod + + * tree-flow.h: Remove some prototypes. + * gimple-fold.h: Add prototypes from gimple.h and tree-flow.h. + * tree-ssa-propagate.h: Relocate prototypes from tree-flow.h. + * tree-ssa-copy.c (may_propagate*, propagate_value, replace_exp, + propagate_tree_value*): Move from here to... + * tree-ssa-propagate.c (may_propagate*, propagate_value, replace_exp, + propagate_tree_value*): Relocate here. + * tree-ssa-propagate.h: Relocate prototypes from tree-flow.h. + * gimple.h: Include gimple-fold.h, move prototypes into gimple-fold.h. + * gimple-fold.c: Remove gimple-fold.h from include list. + * tree-vrp.c: Remove gimple-fold.h from include list. + * tree-ssa-sccvn.c: Remove gimple-fold.h from include list. + * tree-ssa-ccp.c: Remove gimple-fold.h from include list. + * tree-scalar-evolution.c: Add tree-ssa-propagate.h to include list. + * tree-ssa-pre.c: Add tree-ssa-propagate.h to include list. + * sese.c: Add tree-ssa-propagate.h to include list. + +2013-10-02 Richard Biener + + * tree-loop-distribution.c: Include tree-vectorizer.h for + find_loop_location. + (enum partition_kind): Remove PKIND_REDUCTION. + (struct partition_s): Remove has_writes member, add reduction_p member. + (partition_alloc): Adjust. + (partition_builtin_p): Likewise. + (partition_has_writes): Remove. + (partition_reduction_p): New function. + (partition_merge_into): Likewise. + (generate_code_for_partition): Commonize builtin partition + handling tail. + (rdg_cannot_recompute_vertex_p): Remove. + (already_processed_vertex_p): Likewise. + (rdg_flag_vertex): Do not set has_writes. + (classify_partition): Adjust. + (rdg_build_partitions): Do not set has_writes, treat all + partitions as useful. + (distribute_loop): Record number of library calls generated. Adjust. + (tree_loop_distribution): Report number of loops and library + calls generated as opt-info. + +2013-10-02 Andrew MacLeod + + * tree-flow.h: Include new .h files. Move prototypes. + * tree-cfgcleanup.h: New file. Add prototypes from tree-flow.h. + * tree-dfa.h: New File. Add prototypes from tree-flow.h. + (get_addr_base_and_unit_offset_1) Move from tree-flow-inline.h. + * tree-pretty-print.h: Add prototypes from tree-flow.h. + * tree-into-ssa.h: New File. Add prototypes from tree-flow.h. + ({debug|dump}*): Move debugging prototypes out of tree-into-ssa.c. + * tree-into-ssa.c ({debug|dump}*): Move prototypes to header file. + * tree.h (get_ref_base_and_extent): Move prototype out. + * tree-flow-inline.h (get_addr_base_and_unit_offset_1): Move to + tree-dfa.h. + * gimple-low.h: New File. Add prototypes from tree-flow.h. + * gimple-low.c (try_catch_may_fallthru, block_may_fallthru): Move to... + * tree.c (try_catch_may_fallthru, block_may_fallthru): Here. + * tree-scalar-evolution.c: Include tree.h. + * sese.c: Include tree.h. + * dumpfile.c: Move gimple-pretty-print.h include after tree.h. + * dwarf2out.c: Include tree-dfa.h. + * tree-chrec.c: Include tree.h. + * tree-data-ref.c: Include tree.h. + +2013-10-02 Yufeng Zhang + + * gimple-ssa-strength-reduction.c (backtrace_base_for_ref): + Fix whitespace. + +2013-10-02 Rainer Orth + + * config/t-sol2 (sol2-c.o): Remove header dependencies. + Use $(COMPILE) and $(POSTCOMPILE). + (sol2-cxx.o): Likewise. + (sol2-stubs.o): Likewise. + (sol2.o): Likewise. + * config/x-solaris (host-solaris.o): Likewise. + + * config/sparc/t-sparc (sparc.o): Remove. + (sparc-c.o): Remove header dependencies. + Use $(COMPILE) and $(POSTCOMPILE). + * config/sparc/x-sparc: Likewise. + +2013-10-02 Joern Rennecke + + * config/arc/arc-opts.h: Add 2013 to Copyright years. + * config/arc/arc700.md: Likewise. + * config/arc/arc-modes.def: Likewise. + * config/arc/arc-simd.h: Likewise. + * config/arc/t-arc-uClibc: Likewise. + * config/arc/t-arc-newlib: Likewise. + +2013-10-02 Renlin Li + + * config/aarch64/aarch64.c (aarch64_expand_prologue): Use + plus_constant. + (aarch64_expand_epilogue): Likewise. + +2013-10-02 Bill Schmidt + Yufeng Zhang + + * gimple-ssa-strength-reduction.c (legal_cast_p_1): Forward + declaration. + (backtrace_base_for_ref): Call get_unwidened with 'base_in' if + 'base_in' represent a conversion and legal_cast_p_1 holds; set + 'base_in' with the returned value from get_unwidened. + +2013-10-02 Kyrylo Tkachov + + * config/arm/arm.c (arm_legitimize_reload_address): Explain why + plus_constant is not used. + +2013-10-01 Wei Mi + + * config/i386/x86-tune.def (DEF_TUNE): Remove m_CORE_ALL. + * config/i386/i386.md: Add define_peephole2 to + break partial reg stall for cvtss2sd/cvtsd2ss. + +2013-10-01 Joern Rennecke + + * config/arc/arc.c (pass_arc_ifcvt::clone): + Update for ctxt_ -> m_ctxt change. + +2013-10-01 Jeff Law + + * tree-ssa-threadupdate.c (struct redirection_data): Delete + outgoing_edge and intermediate_edge fields. Instead store the path. + (redirection_data::hash): Hash on the last edge's destination index. + (redirection_data::equal): Check the entire thread path. + (lookup_redirectio_data): Corresponding changes. + (create_edge_and_update_destination_phis): Likewise. + (thread_single_edge): Likewise. + +2013-10-01 Joern Rennecke + Diego Novillo + + * config/arc/simdext.md (UNSPEC_ARC_SIMD_VLD32WH): Delete. + (UNSPEC_ARC_SIMD_VLD32WL): Likewise. + (vld32wh_insn, vld32wl_insn): Delete commented-out old + versions of these patterns. + + * doc/extend.texi (long_call/medium_call/short_call): Typo fix. + (__builtin_arc_aligned): Likewise. + + * config/arc/arc.md: Expand adc_0 comment stating the intended + purpose and why it isn't ready. + Replace commented out call_value_via_label_mixed with a + plain comment about bl_s. + + * config/arc/arc.c (stdio.h): Don't include directly. + (arc_expand_epilogue): Remove [0]: Remove fp_restored_p. + Remove if (1) condition. + (arc_encode_section_info): Fix comment. + +2013-10-01 Joern Rennecke + + * config/arc/arc.c (arc_conditional_register_usage): + Use ARC_FIRST_SIMD_VR_REG / ARC_LAST_SIMD_VR_REG. + Also set reg_alloc_order for DMA config regs. + +2013-10-01 Joern Rennecke + Jeremy Bennett + + * doc/install.texi (--with-cpu): Mention ARC. + (arc-*-elf32): New paragraph. + (arc-linux-uclibc): Likewise. + * doc/md.texi (Machine Constraints): Add ARC part. + * doc/invoke.texi: (menu): Add ARC Options. + (Machine Dependent Options) : Add synopsis. + (node ARC Options): Add. + * doc/extend.texi (long_call / short_call attribute): Add ARC. + (ARC Built-in Functions): New section defining + generic ARC built-in functions. + (ARC SIMD Built-in Functions): New section defining SIMD specific + built-in functions. + (Declaring Attributes of Functions): Extended + description of short_call and long_call attributes for ARC and + added index entries. + +2013-10-01 Saurabh Verma + Ramana Radhakrishnan + Joern Rennecke + Muhammad Khurram Riaz + Brendan Kehoe + Michael Eager + Simon Cook + Jeremy Bennett + + * config/arc, common/config/arc: New directories. + +2013-10-01 Joern Rennecke + Brendan Kehoe + Simon Cook + + * config.gcc (arc*-*-elf*, arc*-*-linux-uclibc*): New configurations. + +2013-10-01 Andrew MacLeod + + * tree-ssa-live.h (coalesce_ssa_name): Move Prototype to... + * tree-ssa-coalesce.h: New. Move prototype to here. + * tree-outof-ssa.h: Include tree-ssa-coalesce.h. + * tree-ssa-coalesce.c: Include tree-outof-ssa.h. + (gimple_can_coalesce_p): Move to... + * gimple.c (gimple_can_coalesce_p): Here. + +2013-10-01 Andrew MacLeod + + * tree-into-ssa.c (enum need_phi_state): Relocate from tree-flow.h. + (dump_decl_set): Move to gimple.c. + * gimple.h: Don't include tree-ssa-operands.h. + (dump_decl_set): Add prototype. + (gimple_vuse_op, gimple_vdef_op, update_stmt, update_stmt_if_modified): + Move to gimple-ssa.h. + (phi_ssa_name_p, phi_nodes, phi_nodes_ptr, gimple_phi_arg_def, + gimple_phi_arg_def_ptr, gimple_phi_arg_edge, gimple_phi_arg_location, + gimple_phi_arg_location_from_edge, gimple_phi_arg_set_location, + gimple_phi_arg_has_location): Relocate from tree-flow-inline.h + * gimple.c (walk_stmt_load_store_ops): Use gimple_phi_arg_def rather + than PHI_ARG_DEF. + (dump_decl_set): Relocate here. + * gimple-ssa.h: New file. + (gimple_vuse_op, gimple_vdef_op, update_stmt, update_stmt_if_modified): + Relocate from gimple.h. + * tree-cfg.c (has_zero_uses_1, single_imm_use_1): Move to... + * tree-ssa-operands.c (swap_ssa_operands): Rename from + swap_tree_operands and remove non-ssa path. + (has_zero_uses_1, single_imm_use_1): Relocate from tree-cfg.c. + * tree-ssa-reassoc.c (linearize_expr_tree, repropagate_negates): Use + swap_ssa_operands. + * tree-vect-loop.c (destroy_loop_vec_info, vect_is_slp_reduction, + vect_is_simple_reduction_1): Use swap_ssa_operands. + * tree-flow.h: Move various prototypes to tree-phinodes.h. + (enum need_phi_state): Move to tree-into-ssa.c. + (struct immediate_use_iterator_d, FOR_EACH_IMM_*, + BREAK_FROM_IMM_USE_STMT): Move to ssa-iterators.h. + (swap_tree_operands): Rename and move prototype to tree-ssa-operands.h. + * tree-flow-inline.h (delink_imm_use, link_imm_use_to_list, + link_imm_use, set_ssa_use_from_ptr, link_imm_use_stmt, relink_imm_use, + relink_imm_use_stmt, end_readonly_imm_use_p, first_readonly_imm_use, + next_readonly_imm_use, has_zero_uses, has_single_use, single_imm_use, + num_imm_uses): Move to ssa-iterators.h. + (get_use_from_ptr, get_def_from_ptr): Move to tree-ssa-operands.h + (gimple_phi_arg_imm_use_ptr, phi_arg_index_from_use): Move to + tree-phinodes.h. + (op_iter_done, op_iter_next_def, op_iter_next_tree, + clear_and_done_ssa_iter, op_iter_init, op_iter_init_use, + op_iter_init_def, op_iter_init_tree, single_ssa_tree_operand, + single_ssa_use_operand, single_ssa_def_operand, zero_ssa_operands, + num_ssa_operands, delink_stmt_imm_use, single_phi_def, + op_iter_init_phiuse, op_iter_init_phidef, end_imm_use_stmt_p, + end_imm_use_stmt_traverse, move_use_after_head, link_use_stmts_after, + first_imm_use_stmt, next_imm_use_stmt, first_imm_use_on_stmt, + end_imm_use_on_stmt_p, next_imm_use_on_stmt): Move to ssa-iterators.h. + (gimple_phi_arg_def, gimple_phi_arg_def_ptr, gimple_phi_arg_edge, + gimple_phi_arg_location, gimple_phi_arg_location_from_edge, + gimple_phi_arg_set_location, gimple_phi_arg_has_location, phi_nodes, + phi_nodes_ptr, phi_ssa_name_p): Move to gimple.h. + (set_phi_nodes): Move to tree-phinodes.h. + * tree-ssa-operands.h (enum ssa_op_iter_type, + struct ssa_operand_iterator_d, SSA_OP*, FOR_EACH_SSA*, SINGLE_SSA*, + ZERO_SSA_OPERANDS, NUM_SSA_OPERANDS): Move to ssa-iterators.h. + (dump_decl_set): Remove prototype. + (get_use_from_ptr, get_def_from_ptr): Relocate from tree-flow.h. + * tree-phinodes.h: New file. Move some prototypes from tree-flow.h. + (set_phi_nodes): Relocate from tree-flow-inline.h. + (gimple_phi_arg_imm_use_ptr, phi_arg_index_from_use): Relocate from + tree-flow-inline.h + * tree-ssa.h: Add tree-phinodes.h, gimple-ssa.h, ssa-iterators.h to + include list. Temporarily add gimple.h to include list. + * ssa-iterators.h: New file. + (struct immediate_use_iterator_d, FOR_EACH_IMM_*, + BREAK_FROM_IMM_USE_STMT): Relocate from tree-flow.h. + (enum ssa_op_iter_type, struct ssa_operand_iterator_d, SSA_OP*, + FOR_EACH_SSA*, SINGLE_SSA*, ZERO_SSA_OPERANDS, NUM_SSA_OPERANDS): + Relocate from tree-ssa-operands.h. + (delink_imm_use, link_imm_use_to_list, link_imm_use, + set_ssa_use_from_ptr, link_imm_use_stmt, relink_imm_use, + relink_imm_use_stmt, end_readonly_imm_use_p, first_readonly_imm_use, + next_readonly_imm_use, has_zero_uses, has_single_use, single_imm_use, + num_imm_uses, get_use_from_ptr, get_def_from_ptr, + phi_arg_index_from_use, op_iter_done, op_iter_next_def, + op_iter_next_tree, clear_and_done_ssa_iter, op_iter_init, + op_iter_init_use, op_iter_init_def, op_iter_init_tree, + single_ssa_tree_operand, single_ssa_use_operand, single_ssa_def_operand, + zero_ssa_operands, num_ssa_operands, delink_stmt_imm_use, + single_phi_def, op_iter_init_phiuse, op_iter_init_phidef, + end_imm_use_stmt_p, end_imm_use_stmt_traverse, move_use_after_head, + link_use_stmts_after, first_imm_use_stmt, next_imm_use_stmt, + first_imm_use_on_stmt, end_imm_use_on_stmt_p, next_imm_use_on_stmt): + Relocate from tree-flow-inline.h. + * tree-outof-ssa.h: Change _SSAEXPAND_H macro to GCC_TREE_OUTOF_SSA_H. + +2013-10-01 Vidya Praveen + + * aarch64-simd.md + (aarch64_l2_internal): Rename to ... + (aarch64_l_hi_internal): ... this; + Insert '\t' to output template. + (aarch64_l_lo_internal): New. + (aarch64_saddl2, aarch64_uaddl2): Modify to call + gen_aarch64_l_hi_internal() instead. + (aarch64_ssubl2, aarch64_usubl2): Ditto. + +2013-10-01 Uros Bizjak + + * doc/install.texi (Host/target specific installation notes for GCC): + Put @anchor before @heading. + * doc/gcc.texi (titlepage): Use @uref and http:// prefix for website. + Use @email for email addresses. + +2013-10-01 Jeff Law + + * tree-ssa-threadedge.c (thread_across_edge): Make path a pointer to + a vec. Only delete the path if we create one without successfully + registering a jump thread. + * tree-ssa-threadupdate.h (register_jump_thread): Pass in path vector + as a pointer. + * tree-ssa-threadupdate.c (threaded_edges): Remove. No longer used + (paths): New vector of jump threading paths. + (THREAD_TARGET, THREAD_TARGET2): Remove accessor macros. + (THREAD_PATH): New accessor macro for the entire thread path. + (lookup_redirection_data): Get intermediate and final outgoing edge + from the thread path. + (create_edge_and_update_destination_phis): Copy the threading path. + (ssa_fix_duplicate_block_edges): Get edges and block types from the + jump threading path. + (ssa_redirect_edges): Get edges and block types from the jump threading + path. Free the path vector. + (thread_block): Get edges from the jump threading path. Look at the + entire path to see if we thread to a loop exit. If we cancel a jump + thread request, then free the path vector. + (thread_single_edge): Get edges and block types from the jump threading + path. Free the path vector. + (thread_through_loop_header): Get edges and block types from the jump + threading path. Free the path vector. + (mark_threaded_blocks): Iterate over the vector of paths and store + the path on the appropriate edge. Get edges and block types from the + jump threading path. + (mark_threaded_blocks): Get edges and block types from the jump + threading path. Free the path vector. + (thread_through_all_blocks): Use the vector of paths rather than + a vector of 3-edge sets. + (register_jump_thread): Accept pointer to a path vector rather + than the path vector itself. Store the path vector for later use. + Simplify. + +2013-10-01 Jakub Jelinek + Andreas Krebbel + + PR target/58574 + * config/s390/s390.c (s390_split_branches): Modify check for table + jump insns. + (s390_chunkify_start): Rearrange table jump insn check in order to + deal with compare and branch insns correctly. + +2013-10-01 Kugan Vivekanandarajah + + PR target/58578 + Revert + 2013-04-05 Greta Yorsh + * config/arm/arm.md (arm_ashldi3_1bit): define_insn into + define_insn_and_split. + (arm_ashrdi3_1bit,arm_lshrdi3_1bit): Likewise. + (shiftsi3_compare): New pattern. + (rrx): New pattern. + * config/arm/unspecs.md (UNSPEC_RRX): New. + +2013-10-01 Alan Modra + + * stmt.c (expand_asm_operands): Revert part of 2013-09-24 special + casing inout operands. + +2013-10-01 Richard Biener + + PR tree-optimization/58553 + * tree-loop-distribution.c (struct partition_s): Add niter member. + (classify_partition): Populate niter member for the partition + and properly identify whether the relevant store happens before + or after the loop exit. + (generate_memset_builtin): Use niter member from the partition. + (generate_memcpy_builtin): Likewise. + +2013-09-30 Richard Sandiford + + * vec.h (vec_prefix, vec): Prefix member names with "m_". + * vec.c (vec_prefix::calculate_allocation): Update accordingly. + +2013-09-30 Richard Sandiford + + * basic-block.h (edge_list): Prefix member names with "m_". + * context.h (context): Likewise. + * domwalk.h (dom_walker): Likewise. + * gengtype-state.c (s_expr_writer, state_writer): Likewise. + * graphite-sese-to-poly.c (sese_dom_walker): Likewise. + * hash-table.h (hash_table): Likewise. + * machmode.h (bit_field_mode_iterator): Likewise. + * pass_manager.h (pass_list): Likewise. + * tree-into-ssa.c (mark_def_dom_walker): Likewise. + * tree-pass.h (pass_data): Likewise. + * tree-ssa-dom.c (dom_opt_dom_walker): Likewise. + * tree-ssa-phiopt.c (nontrapping_dom_walker): Likewise, + * tree-ssa-uncprop.c (uncprop_dom_walker): Likewise. + * asan.c (pass_data_asan): Update accordingly. + * cfganal.c (control_dependences::find_control_dependence): Likewise. + (control_dependences::control_dependences): Likewise. + (control_dependences::~control_dependences): Likewise. + (control_dependences::~control_dependences): Likewise. + (control_dependences::get_edges_dependent_on): Likewise. + * cgraphbuild.c (pass_data_rebuild_cgraph_edges::clone): Likewise. + (pass_data_remove_cgraph_callee_edges::clone): Likewise. + * context.c (gcc::context::context): Likewise. + * cprop.c (pass_rtl_cprop::clone): Likewise. + * domwalk.c (dom_walker::walk): Likewise. + * ipa-inline-analysis.c (pass_inline_parameters::clone): Likewise. + * ipa-pure-const.c (pass_local_pure_const::clone): Likewise. + * mode-switching.c (pass_mode_switching::clone): Likewise. + * passes.c (opt_pass::opt_pass): Likewise. + (pass_manager::pass_manager): Likewise. + * predict.c (pass_strip_predict_hints::clone): Likewise. + * recog.c (pass_data pass_data_peephole2::clone): Likewise. + (pass_split_all_insns::clone): Likewise. + * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator): + Likewise. + (bit_field_mode_iterator::next_mode): Likewise. + (bit_field_mode_iterator::prefer_smaller_modes): Likewise. + * tree-cfg.c (pass_split_crit_edges::clone): Likewise. + * tree-cfgcleanup.c (pass_merge_phi::clone): Likewise. + * tree-complex.c (pass_lower_complex::clone): Likewise. + * tree-eh.c (pass_cleanup_eh::clone): Likewise. + * tree-object-size.c (pass_object_sizes::clone): Likewise. + * tree-optimize.c (pass_fixup_cfg::clone): Likewise. + * tree-ssa-ccp.c (pass_data_ccp::clone): Likewise. + (pass_fold_builtins::clone): Likewise. + * tree-ssa-copy.c (pass_data_copy_prop::clone): Likewise. + * tree-ssa-copyrename.c (pass_rename_ssa_copies::clone): Likewise. + * tree-ssa-dce.c (pass_dce::clone, pass_dce_loop::clone): Likewise. + (pass_cd_dce::clone): Likewise. + * tree-ssa-dom.c (pass_dominator::clone): Likewise. + (pass_phi_only_cprop::clone): Likewise. + * tree-ssa-dse.c (pass_dse::clone): Likewise. + * tree-ssa-forwprop.c (pass_forwprop::clone): Likewise. + * tree-ssa-loop.c (pass_lim::clone): Likewise. + * tree-ssa-phiopt.c (pass_phiopt::clone): Likewise. + * tree-ssa-pre.c (pass_fre::clone): Likewise. + * tree-ssa-reassoc.c (pass_reassoc::clone): Likewise. + * tree-ssa-uninit.c (pass_late_warn_uninitialized::clone): Likewise. + * tree-tailcall.c (pass_tail_recursion::clone): Likewise. + * tree-vect-generic.c (pass_lower_vector_ssa::clone): Likewise. + * tree-vrp.c (pass_vrp::clone): Likewise. + * tsan.c (pass_tsan::clone): Likewise. + +2013-09-30 Jakub Jelinek + + PR middle-end/58564 + * fold-const.c (tree_unary_nonnegative_warnv_p): Use + INTEGRAL_TYPE_P (t) instead of TREE_CODE (t) == INTEGER_TYPE. + + PR middle-end/58564 + * fold-const.c (fold_ternary_loc): For A < 0 : : 0 + optimization, punt if sign_bit_p looked through any zero extension. + +2013-09-30 Teresa Johnson + + * tree-ssa-threadupdate.c (ssa_fix_duplicate_block_edges): + Update redirected out edge count in joiner case. + (ssa_redirect_edges): Common the joiner and non-joiner cases + so that joiner case gets profile updates. + +2013-09-30 Richard Biener + + PR tree-optimization/58554 + * tree-loop-distribution.c (classify_partition): Require + unconditionally executed stores for memcpy and memset recognition. + (tree_loop_distribution): Calculate dominance info. + +2013-09-30 Venkataramanan Kumar + + * config/aarch64/aarch64.h (MCOUNT_NAME): Define. + (NO_PROFILE_COUNTERS): Likewise. + (PROFILE_HOOK): Likewise. + (FUNCTION_PROFILER): Likewise. + * config/aarch64/aarch64.c (aarch64_function_profiler): Remove. + +2013-09-30 Iain Sandoe + + * config/rs6000/darwin.md (load_macho_picbase_si): Wrap machopic + calls and defines in TARGET_MACHO conditional. + (load_macho_picbase_di): Likewise. + (reload_macho_picbase): Likewise. + (reload_macho_picbase_si): Likewise. + (reload_macho_picbase_di): Likewise. + (nonlocal_goto_receiver): Likewise. + +2013-09-30 Nick Clifton + + * config/msp430/msp430.c (msp430x_names): New array. Lists MCUs + that use the MSP430X ISA. + (msp430_option_override): Scan -mmcu command line option for any + MCU name that supports the MSP430X ISA. + * config/msp430/t-msp430 (MULTILIB_MATCHES): Add matches for known + -mmcu options which enable the MSP430X ISA. + +2013-09-30 Richard Biener + + PR middle-end/58532 + * tree-cfg.c (make_abnormal_goto_edges): Skip debug statements + before looking for setjmp-like calls. + +2013-09-29 Iain Sandoe + + PR target/10901 + * config/darwin-protos.h (machopic_get_function_picbase): New. + * config/darwin.c (machopic_get_function_picbase): New. + * config/rs6000/darwin.md (load_macho_picbase_si): Update picbase + label for a new func. (load_macho_picbase_di): Likewise. + (reload_macho_picbase): New expand. + (reload_macho_picbase_si): New insn. + (reload_macho_picbase_di): New insn. + (nonlocal_goto_receiver): New define and split. + * config/rs6000/rs6000.md (unspec enum): Add UNSPEC_RELD_MPIC. + (unspecv enum): Add UNSPECV_NLGR. + +2013-09-29 Iain Sandoe + + * config/rs6000/rs6000.c (rs6000_init_dwarf_reg_sizes_extra): Ensure + that altivec registers are correctly sized on Darwin. + +2013-09-29 Iain Sandoe + + * config/t-darwin (darwin.o, darwin-c.o, darwin-f.o, + darwin-driver.o): Use COMPILE and POSTCOMPILE. + * config/x-darwin (host-darwin.o): Likewise. + * config/i386/x-darwin (host-i386-darwin.o): Likewise. + * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise. + * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise. + +2013-09-29 Uros Bizjak + + * doc/invoke.texi: Fix usage of @tie{} command. + +2013-09-29 Eric Botcazou + + * config/sparc/sync.md: Add peephole for consecutive memory barriers. + +2013-09-28 Jan Hubicka + + * config/i386/x86-tune.def: Add documentation for each of the options; + add whitespace. + +2013-09-28 Jan Hubicka + + * x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL): Enable for + generic. + (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Likewise. + (X86_TUNE_FOUR_JUMP_LIMIT): Drop for generic and buldozer. + (X86_TUNE_PAD_RETURNS): Drop for buldozer chips. + (X86_TUNE_AVOID_VECTOR_DECODE): Drop for generic. + (X86_TUNE_REASSOC_FP_TO_PARALLEL): Enable for generic. + +2013-09-28 Richard Sandiford + + * alloc-pool.c, asan.c, auto-inc-dec.c, basic-block.h, bb-reorder.c, + bitmap.c, bitmap.h, bt-load.c, builtins.c, calls.c, cfgcleanup.c, + cfgexpand.c, cfghooks.c, cfgloop.c, cfgloopmanip.c, cfgrtl.c, cgraph.c, + cgraph.h, cgraphbuild.c, cgraphclones.c, cgraphunit.c, collect2.c, + combine-stack-adj.c, combine.c, compare-elim.c, context.c, context.h, + cprop.c, cse.c, cselib.c, dbxout.c, dce.c, defaults.h, df-core.c, + df-problems.c, df-scan.c, df.h, diagnostic.c, double-int.c, dse.c, + dumpfile.c, dwarf2asm.c, dwarf2cfi.c, dwarf2out.c, emit-rtl.c, + errors.c, except.c, expmed.c, expr.c, file-find.c, final.c, + fixed-value.c, fold-const.c, function.c, fwprop.c, gcc-ar.c, gcc.c, + gcov-io.c, gcov-io.h, gcov.c, gcse.c, genattr-common.c, genattr.c, + genattrtab.c, genautomata.c, genconfig.c, genemit.c, genextract.c, + genflags.c, gengenrtl.c, gengtype-state.c, gengtype.c, genmodes.c, + genopinit.c, genoutput.c, genpeep.c, genpreds.c, genrecog.c, + gensupport.c, ggc-common.c, ggc-page.c, gimple-fold.c, gimple-low.c, + gimple-pretty-print.c, gimple-ssa-strength-reduction.c, gimple.c, + gimple.h, godump.c, graphite-clast-to-gimple.c, + graphite-optimize-isl.c, graphite-poly.h, graphite-sese-to-poly.c, + graphite.c, haifa-sched.c, hash-table.c, hash-table.h, hwint.c, + hwint.h, ifcvt.c, incpath.c, init-regs.c, input.h, intl.c, intl.h, + ipa-cp.c, ipa-devirt.c, ipa-inline-analysis.c, ipa-inline.c, + ipa-profile.c, ipa-pure-const.c, ipa-reference.c, ipa-split.c, + ipa-utils.c, ipa.c, ira-build.c, ira.c, jump.c, loop-doloop.c, + loop-init.c, loop-invariant.c, loop-iv.c, lower-subreg.c, lto-cgraph.c, + lto-streamer-in.c, lto-streamer-out.c, lto-wrapper.c, mcf.c, + mode-switching.c, modulo-sched.c, omp-low.c, optabs.c, opts.c, + pass_manager.h, passes.c, plugin.c, postreload-gcse.c, postreload.c, + predict.c, prefix.c, pretty-print.c, print-rtl.c, print-tree.c, + profile.c, read-md.c, real.c, real.h, recog.c, ree.c, reg-stack.c, + regcprop.c, reginfo.c, regmove.c, regrename.c, regs.h, regstat.c, + reload1.c, reorg.c, rtl.c, rtl.h, rtlanal.c, sbitmap.c, sched-rgn.c, + sdbout.c, sel-sched-ir.c, sel-sched.c, sparseset.c, stack-ptr-mod.c, + statistics.c, stmt.c, stor-layout.c, store-motion.c, streamer-hooks.h, + system.h, target-hooks-macros.h, targhooks.c, targhooks.h, toplev.c, + tracer.c, trans-mem.c, tree-browser.c, tree-call-cdce.c, tree-cfg.c, + tree-cfgcleanup.c, tree-complex.c, tree-data-ref.c, tree-data-ref.h, + tree-eh.c, tree-emutls.c, tree-flow.h, tree-if-conv.c, tree-into-ssa.c, + tree-iterator.c, tree-loop-distribution.c, tree-mudflap.c, + tree-nested.c, tree-nomudflap.c, tree-nrv.c, tree-object-size.c, + tree-optimize.c, tree-pass.h, tree-pretty-print.c, tree-profile.c, + tree-scalar-evolution.c, tree-sra.c, tree-ssa-ccp.c, + tree-ssa-coalesce.c, tree-ssa-copy.c, tree-ssa-copyrename.c, + tree-ssa-dce.c, tree-ssa-dom.c, tree-ssa-dse.c, tree-ssa-forwprop.c, + tree-ssa-ifcombine.c, tree-ssa-live.c, tree-ssa-loop-ch.c, + tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c, tree-ssa-loop-prefetch.c, + tree-ssa-loop.c, tree-ssa-math-opts.c, tree-ssa-operands.c, + tree-ssa-phiopt.c, tree-ssa-phiprop.c, tree-ssa-pre.c, + tree-ssa-reassoc.c, tree-ssa-sink.c, tree-ssa-strlen.c, + tree-ssa-structalias.c, tree-ssa-threadedge.c, tree-ssa-threadupdate.c, + tree-ssa-uncprop.c, tree-ssa-uninit.c, tree-ssa.c, tree-ssanames.c, + tree-stdarg.c, tree-switch-conversion.c, tree-tailcall.c, + tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop-manip.c, + tree-vect-stmts.c, tree-vectorizer.c, tree-vectorizer.h, tree-vrp.c, + tree.c, tree.h, tsan.c, tsystem.h, value-prof.c, var-tracking.c, + varasm.c, vec.h, vmsdbgout.c, vtable-verify.c, web.c: Add missing + whitespace before "(". + +2013-09-28 Sandra Loosemore + + * expr.h (extract_bit_field): Remove packedp parameter. + * expmed.c (extract_fixed_bit_field): Remove packedp parameter + from forward declaration. + (store_split_bit_field): Remove packedp arg from calls to + extract_fixed_bit_field. + (extract_bit_field_1): Remove packedp parameter and packedp + argument from recursive calls and calls to extract_fixed_bit_field. + (extract_bit_field): Remove packedp parameter and corresponding + arg to extract_bit_field_1. + (extract_fixed_bit_field): Remove packedp parameter. Remove code + to issue warnings. + (extract_split_bit_field): Remove packedp arg from call to + extract_fixed_bit_field. + * expr.c (emit_group_load_1): Adjust calls to extract_bit_field. + (copy_blkmode_from_reg): Likewise. + (copy_blkmode_to_reg): Likewise. + (read_complex_part): Likewise. + (store_field): Likewise. + (expand_expr_real_1): Likewise. + * calls.c (store_unaligned_arguments_into_pseudos): Adjust call + to extract_bit_field. + * config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Adjust + call to extract_bit_field. + * config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Adjust + call to extract_bit_field. + * doc/invoke.texi (Code Gen Options): Remove mention of warnings + and special packedp behavior from -fstrict-volatile-bitfields + documentation. + +2013-09-27 Jan-Benedict Glaw + + * lra-eliminations.c (init_elim_table): Guard value_p. + +2013-09-27 Michael Meissner + + * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Allow + DFmode, DImode, and SFmode in the upper VSX registers based on the + -mupper-regs-{df,sf} flags. Fix wu constraint to be ALTIVEC_REGS + if -mpower8-vector. Combine -mvsx-timode handling with the rest + of the VSX register handling. + + * config/rs6000/rs6000.md (f32_lv): Use %x0 for VSX regsters. + (f32_sv): Likewise. + (zero_extendsidi2_lfiwzx): Add support for loading into the + Altivec registers with -mpower8-vector. Use wu/wv constraints to + only do VSX memory options on Altivec registers. + (extendsidi2_lfiwax): Likewise. + (extendsfdf2_fpr): Likewise. + (mov_hardfloat, SF/SD modes): Likewise. + (mov_hardfloat32, DF/DD modes): Likewise. + (mov_hardfloat64, DF/DD modes): Likewise. + (movdi_internal64): Likewise. + +2013-09-27 Xinliang David Li + + * opts.c (finish_options): Adjust parameters + according to vect cost model. + (common_handle_option): Set dynamic vect cost + model for FDO. + targhooks.c (default_add_stmt_cost): Compute stmt cost + unconditionally. + * tree-vect-loop.c (vect_estimate_min_profitable_iters): + Use helper function. + * tree-vectorizer.h (unlimited_cost_model): New function. + * tree-vect-slp.c (vect_slp_analyze_bb_1): Use helper function. + * tree-vect-data-refs.c (vect_peeling_hash_insert): Use helper + function. + (vect_enhance_data_refs_alignment): Ditto. + * flag-types.h: New enum. + * common/config/i386/i386-common.c (ix86_option_init_struct): + No need to initialize vect_cost_model flag. + * config/i386/i386.c (ix86_add_stmt_cost): Compute stmt cost + unconditionally. + +2013-09-27 Diego Novillo + + * gimple.h (enum ssa_mode): Remove. + +2013-09-27 Paulo Matos + + * cfgloop.h (number_of_loops): Fix typo in check for null. + +2013-09-27 Jakub Jelinek + + PR middle-end/58551 + * tree-cfg.c (move_sese_region_to_fn): Also move loops that + are children of outermost saved_cfun's loop, and set it up to + be moved to dest_cfun's outermost loop. Fix up num_nodes adjustments + if loop != loop0 and SESE region contains bbs that belong to loop0. + +2013-09-27 Richard Sandiford + + * rtlanal.c (must_be_base_p, must_be_index_p): Delete. + (binary_scale_code_p, get_base_term, get_index_term): New functions. + (set_address_segment, set_address_base, set_address_index) + (set_address_disp): Accept the argument unconditionally. + (baseness): Remove must_be_base_p and must_be_index_p checks. + (decompose_normal_address): Classify as much as possible in the + main loop. + +2013-09-27 Richard Sandiford + + * cse.c (count_reg_usage): Handle INT_LIST. + * lra-eliminations.c (lra_eliminate_regs_1): Likewise. + * reginfo.c (reg_scan_mark_refs): Likewise. + * reload1.c (eliminate_regs_1): Likewise. + +2013-09-27 Iain Sandoe + + PR middle-end/58547 + * rtlanal.c (lsb_bitfield_op_p): Make both parts of the comparison + signed. + +2013-09-27 Richard Biener + + PR tree-optimization/58459 + * tree-ssa-forwprop.c (forward_propagate_addr_expr): Remove + restriction not propagating into loops. + +2013-09-26 Florian Weimer + + * tree-ssa.h (walk_use_def_chains_fn, walk_use_def_chains): Delete. + * tree-ssa.c (walk_use_def_chains_1, walk_use_def_chains): Delete. + * doc/tree-ssa.texi (Walking use-def chains): Delete. + +2013-09-26 Richard Biener + + * tree-into-ssa.c (rewrite_into_ssa): Make more SSA names to anonymous. + +2013-09-26 Richard Biener + + * alias.h (component_uses_parent_alias_set): Rename to ... + (component_uses_parent_alias_set_from): ... this. + * alias.c (component_uses_parent_alias_set): Rename to ... + (component_uses_parent_alias_set_from): ... this and return + the desired parent. + (reference_alias_ptr_type_1): Use the result from + component_uses_parent_alias_set_from instead of stripping + components one at a time. + * emit-rtl.c (set_mem_attributes_minus_bitpos): Adjust. + +2013-09-26 Andrew MacLeod + + * tree-ssa-live.h (find_replaceable_exprs, dump_replaceable_exprs): + Move prototypes to... + * tree-ssa-ter.h: New File. Move prototypes here. + * tree-flow.h (stmt_is_replaceable_p): Remove prototype. + * tree-outof-ssa.h: New. Rename ssaexpand.h, include tree-ssa-ter.h. + * tree-outof-ssa.c (ssa_is_replaceable_p): New. Refactor common bits + from is_replaceable_p. + * tree-ssa-ter.c (is_replaceable_p, stmt_is_replaceable_p): Delete. + (ter_is_replaceable_p): New. Use new refactored ssa_is_replaceable_p. + (process_replaceable): Use ter_is_replaceable_p. + (find_replaceable_in_bb): Use ter_is_replaceable_p. + * expr.c (stmt_is_replaceable_p): Relocate from tree-ssa-ter.c. Use + newly refactored ssa_is_replaceable_p. + * cfgexpand.c: Include tree-outof-ssa.h. + * ssaexpand.h: Delete. + +2013-09-26 Andrew MacLeod + + * gimple.c (gimple_replace_lhs): Move to tree-ssa.c and rename. + (struct count_ptr_d, count_ptr_derefs, count_uses_and_derefs): Move to + tree-ssa.c + (create_gimple_tmp): Delete. + (get_expr_type, build_assign, build_type_cast): Move to... + * gimple-builder.c: New File. + (get_expr_type): Relocate from gimple.c. + (build_assign, build_type_cast): Change to only create ssanames. + * gimple.h: Move prototypes to... + * gimple-builder.h: New File. Here. + * tree-ssa.h: And here. + * tree-ssa.c (struct count_ptr_d, count_ptr_derefs, + count_uses_and_derefs): Relocate from gimple.c. + (gimple_replace_ssa_lhs): Renamed gimple_replace_ssa from gimple.c + * tree-ssa-reassoc.c (repropagate_negates): Use gimple_replace_ssa_lhs. + * tree-ssa-math-opts (execute_cse_reciprocals): Use + gimple_replace_ssa_lhs. + * asan.c: Include gimple-builder.h. + * Makefile.in: Add gimple-builder.o. + +2013-09-26 Richard Biener + + * tree-ssa-live.c (var_map_base_init): Handle SSA names with + DECL_IGNORED_P base VAR_DECLs like anonymous SSA names. + (loe_visit_block): Use gcc_checking_assert. + * tree-ssa-coalesce.c (create_outofssa_var_map): Use + gimple_assign_ssa_name_copy_p. + (gimple_can_coalesce_p): Adjust according to the var_map_base_init + change. + +2013-09-26 David Edelsohn + + * config/rs6000/t-rs6000 (rs6000.o): Remove. + (rs6000-c.o): Use COMPILE and POSTCOMPILE. + +2013-09-26 Richard Biener + + PR tree-optimization/58539 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Honor + the fact that debug statements are not taking part in loop-closed + SSA construction. + +2013-09-26 Nick Clifton + + * config/msp430/msp430.c (msp430_expand_epilogue): Fix compile + time warning message. + (msp430_print_operand_raw): Delete unused letter parameter. + (TARGET_PRINT_OPERAND_ADDRESS): Define. + (msp430_print_operand_address): New function. + (msp430_print_operand): Move address printing code from here to + new function. + * config/msp430/msp430.md (movsipsi2): Add comment in generated + assembler. + (zero_extendpsisi2): Likewise. + (extendpsisi2): New pattern. + (andneghi3): New pattern. + +2013-09-26 Yvan Roux + + * config/aarch64/aarch64.opt (mlra): New option. + * config/aarch64/aarch64.c (aarch64_lra_p): New function. + (TARGET_LRA_P): Define. + +2013-09-26 Eric Botcazou + + * expr.c (expand_assignment): Remove obsolete comment. + +2013-09-25 Jeff Law + + * tree-flow.h (thread_through_all_blocks): Prototype moved into + tree-ssa-threadupdate.h. + (register_jump_thread): Similarly. + * tree-ssa-threadupdate.h: New header file. + * tree-ssa-dom.c: Include tree-ssa-threadupdate.h. + * tree-vrp.c: Likewise. + * tree-ssa-threadedge.c: Include tree-ssa-threadupdate.h. + (thread_around_empty_blocks): Change type of path vector argument to + an edge,type pair from just an edge. Initialize both elements when + appending to a jump threading path. Tweak references to elements + appropriately. + (thread_across_edge): Similarly. Release memory for the elements + as needed. + * tree-ssa-threadupdate.c: Include tree-ssa-threadupdate.h. + (dump_jump_thread_path): New function broken out from + register_jump_thread. + (register_jump_thread): Use dump_jump_thread_path. Change type of + path vector entries. Search the path for NULL edges and dump + the path if one is found. Tweak the conversion of path to 3-edge + form to use the block copy type information embedded in the path. + +2013-09-25 Yvan Roux + + * lra.c (update_inc_notes): Remove all REG_DEAD and REG_UNUSED notes. + +2013-09-25 Yvan Roux + Vladimir Makarov + + * rtlanal.c (lsb_bitfield_op_p): New predicate for bitfield operations + from the least significant bit. + (strip_address_mutations): Add bitfield operations handling. + (must_be_index_p): Add shifting and rotate operations handling. + (set_address_base): Use must_be_base_p predicate. + (set_address_index): Use must_be_index_p predicate. + +2013-09-25 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/i386.c (ix86_avx256_split_vector_move_misalign): + Use new names. + (ix86_expand_vector_move_misalign): Support new unaligned load and + stores and use new names. + (CODE_FOR_sse2_storedqu): Rename to ... + (CODE_FOR_sse2_storedquv16qi): ... this. + (CODE_FOR_sse2_loaddqu): Rename to ... + (CODE_FOR_sse2_loaddquv16qi): ... this. + (CODE_FOR_avx_loaddqu256): Rename to ... + (CODE_FOR_avx_loaddquv32qi): ... this. + (CODE_FOR_avx_storedqu256): Rename to ... + (CODE_FOR_avx_storedquv32qi): ... this. + * config/i386/i386.md (fpint_logic): New. + * config/i386/sse.md (VMOVE): Extend for AVX512. + (VF): Ditto. + (VF_128_256): New. + (VF_512): Ditto. + (VI_UNALIGNED_LOADSTORE): Ditto. + (sse2_avx_avx512f): Ditto. + (sse2_avx2): Extend for AVX512. + (sse4_1_avx2): Ditto. + (avx2_avx512f): New. + (sse): Extend for AVX512. + (sse2): Ditto. + (sse4_1): Ditto. + (avxsizesuffix): Ditto. + (sseintvecmode): Ditto. + (ssePSmode): Ditto. + (_loadu): Ditto. + (_storeu): Ditto. + (_loaddqu): Extend for AVX512 and rename to ... + (_loaddqu): ... this. + (_storedqu): Extend for AVX512 and rename to ... + (_storedqu_movnt): Replace constraint "x" with "v". + (STORENT_MODE): Extend for AVX512. + (*absneg2): Replace constraint "x" with "v". + (*mul3): Ditto. + (*ieee_smin3): Ditto. + (*ieee_smax3): Ditto. + (avx_cmp3): Replace VF with VF_128_256. + (*_maskcmp3_comm): Ditto. + (_maskcmp3): Ditto. + (_andnot3): Extend for AVX512. + (3, anylogic): Replace VF with VF_128_256. + (3, fpint_logic): New. + (*3): Extend for AVX512. + (avx512flogicsuff): New. + (avx512f_): Ditto. + (_movmsk): Replace VF with + VF_128_256. + (_blend): Ditto. + (_blendv): Ditto. + (_dp): Ditto. + (avx_vtest): Ditto. + (_round): Ditto. + (xop_vpermil23): Ditto. + (*avx_vpermilp): Extend for AVX512 and rename to ... + (*_vpermilp): ... this. + (avx_vpermilvar3): Extend for AVX512 and rename to ... + (_vpermilvar3): ... this. + +2013-09-25 Tom Tromey + + * Makefile.in (PARTITION_H, LTO_SYMTAB_H, COMMON_TARGET_DEF_H) + (RTL_ERROR_H, TRANS_MEM_H, COVERAGE_H, DEMANGLE_H, ALIAS_H) + (SCHED_INT_H, SEL_SCHED_IR_H, SEL_SCHED_DUMP_H, VALTRACK_H, DDG_H) + (GGC_INTERNAL_H, DECNUM_H, BACKTRACE_H, MKDEPS_H, TREE_HASHER_H) + (TREE_SSA_LIVE_H, SSAEXPAND_H, DWARF2OUT_H, SCEV_H, OMEGA_H) + (TREE_DATA_REF_H, IRA_INT_H, LRA_INT_H, DBGCNT_H, DATA_STREAMER_H) + (GIMPLE_STREAMER_H, TREE_STREAMER_H, STREAMER_HOOKS_H) + (TREE_VECTORIZER_H, IPA_INLINE_H, GSTAB_H, LIBFUNCS_H) + (GRAPHITE_HTAB_H): Remove. + +2013-09-25 Tom Tromey + + * config/mcore/t-mcore (CROSS_FLOAT_H): Remove. + +2013-09-25 Tom Tromey + + * config/t-glibc (glibc-c.o): Use COMPILE and POSTCOMPILE. + +2013-09-25 Tom Tromey + + * config/i386/t-i386 (i386.o): Remove. + (i386-c.o): Use COMPILE and POSTCOMPILE. + +2013-09-25 Tom Tromey + + * Makefile.in ($(out_object_file)): Use COMPILE and POSTCOMPILE. + +2013-09-25 Tom Tromey + + * Makefile.in (graph.o, sbitmap.o, sparseset.o, gcc-ar.o) + (gcc-ranlib.o, gcc-nm.o, collect2.o, collect2-aix.o, tlink.o) + (lto-wrapper.o, default-c.o, attribs.o, incpath.o, prefix.o) + (gcc.o, options.o, options-save.o, version.o, gtype-desc.o) + (trans-mem.o, ggc-common.o, ggc-page.o, ggc-none.o, stringpool.o) + (convert.o, double-int.o, lto-compress.o, data-streamer-in.o) + (data-streamer-out.o, data-streamer.o, gimple-streamer-in.o) + (gimple-streamer-out.o, tree-streamer.o, tree-streamer-in.o) + (tree-streamer-out.o, streamer-hooks.o, lto-cgraph.o) + (lto-streamer-in.o, lto-streamer-out.o, lto-section-in.o) + (lto-section-out.o, lto-opts.o, lto-streamer.o, langhooks.o) + (test-dump.o, tree.o, tree-dump.o, tree-inline.o, print-tree.o) + (stor-layout.o, asan.o, tsan.o, ubsan.o, tree-ssa-tail-merge.o) + (tree-ssa-structalias.o, tree-ssa-uninit.o, tree-ssa.o) + (tree-into-ssa.o, tree-ssa-ter.o, tree-ssa-coalesce.o) + (tree-outof-ssa.o, tree-ssa-dse.o, tree-ssa-forwprop.o) + (tree-ssa-phiprop.o, tree-ssa-ifcombine.o, tree-ssa-phiopt.o) + (tree-nrv.o, tree-ssa-copy.o, tree-ssa-propagate.o) + (tree-ssa-dom.o, tree-ssa-uncprop.o, tree-ssa-threadedge.o) + (tree-ssa-threadupdate.o, tree-ssanames.o, tree-phinodes.o) + (domwalk.o, tree-ssa-live.o, tree-ssa-copyrename.o) + (tree-ssa-pre.o, tree-ssa-sccvn.o) + (gimple-ssa-strength-reduction.o, tree-vrp.o, tree-cfg.o) + (tree-cfgcleanup.o, tree-tailcall.o, tree-ssa-sink.o) + (tree-nested.o, tree-if-conv.o, tree-iterator.o, tree-dfa.o) + (tree-ssa-operands.o, tree-eh.o, tree-ssa-loop.o) + (tree-ssa-loop-unswitch.o, tree-ssa-address.o) + (tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o) + (tree-ssa-loop-ch.o, tree-ssa-loop-prefetch.o, tree-predcom.o) + (tree-ssa-loop-ivopts.o, tree-affine.o, tree-ssa-loop-manip.o) + (tree-ssa-loop-im.o, tree-ssa-math-opts.o, tree-ssa-alias.o) + (tree-ssa-reassoc.o, tree-optimize.o, gimplify.o) + (gimple-iterator.o, gimple-fold.o, gimple-low.o, omp-low.o) + (tree-browser.o, omega.o, tree-chrec.o, tree-scalar-evolution.o) + (tree-data-ref.o, sese.o, graphite.o, graphite-blocking.o) + (graphite-clast-to-gimple.o, graphite-dependences.o) + (graphite-interchange.o, graphite-poly.o) + (graphite-scop-detection.o, graphite-sese-to-poly.o) + (graphite-optimize-isl.o, tree-vect-loop.o) + (tree-vect-loop-manip.o, tree-vect-patterns.o, tree-vect-slp.o) + (tree-vect-stmts.o, tree-vect-data-refs.o, tree-vectorizer.o) + (vtable-verify.o, tree-loop-distribution.o, tree-parloops.o) + (tree-stdarg.o, tree-object-size.o, internal-fn.o, gimple.o) + (gimple-pretty-print.o, tree-mudflap.o, tree-nomudflap.o) + (tree-pretty-print.o, tree-diagnostic.o, fold-const.o) + (diagnostic.o, diagnostic-color.o, opts.o, opts-global.o) + (opts-common.o, targhooks.o, common/common-targhooks.o, input.o) + (toplev.o, hwint.o, passes.o, plugin.o, main.o, host-default.o) + (rtl-error.o, rtl.o, print-rtl.o, rtlanal.o, varasm.o, function.o) + (statistics.o, stmt.o, except.o, expr.o, dojump.o, builtins.o) + (calls.o, expmed.o, explow.o, optabs.o, dbxout.o, debug.o) + (sdbout.o, dwarf2out.o, dwarf2cfi.o, dwarf2asm.o, vmsdbgout.o) + (xcoffout.o, godump.o, emit-rtl.o, real.o, realmpfr.o, dfp.o) + (fixed-value.o, jump.o, simplify-rtx.o, symtab.o, cgraph.o) + (cgraphunit.o, cgraphclones.o, cgraphbuild.o, varpool.o, ipa.o) + (ipa-profile.o, ipa-devirt.o, ipa-prop.o, ipa-ref.o, ipa-cp.o) + (ipa-split.o, ipa-inline.o, ipa-inline-analysis.o) + (ipa-inline-transform.o, ipa-utils.o, ipa-reference.o) + (ipa-pure-const.o, coverage.o, cselib.o, cse.o, dce.o, dumpfile.o) + (dse.o, fwprop.o, web.o, ree.o, cprop.o, gcse.o, store-motion.o) + (resource.o, lcm.o, mode-switching.o, tree-ssa-dce.o) + (tree-call-cdce.o, tree-ssa-ccp.o, tree-ssa-strlen.o, tree-sra.o) + (tree-switch-conversion.o, tree-complex.o, tree-emutls.o) + (tree-vect-generic.o, df-core.o, df-problems.o, df-scan.o) + (regstat.o, valtrack.o, var-tracking.o, profile.o, mcf.o) + (tree-profile.o, value-prof.o, loop-doloop.o, alloc-pool.o) + (auto-inc-dec.o, cfg.o, cfghooks.o, cfgexpand.o, cfgrtl.o) + (cfganal.o, cfgbuild.o, cfgcleanup.o, cfgloop.o, cfgloopanal.o) + (graphds.o, loop-iv.o, loop-invariant.o, cfgloopmanip.o) + (loop-init.o, loop-unswitch.o, loop-unroll.o, dominance.o) + (et-forest.o, combine.o, reginfo.o, bitmap.o, vec.o, hash-table.o) + (reload.o, reload1.o, rtlhooks.o, postreload.o, postreload-gcse.o) + (caller-save.o, bt-load.o, reorg.o, alias.o, stack-ptr-mod.o) + (init-regs.o, ira-build.o, ira-costs.o, ira-conflicts.o) + (ira-color.o, ira-emit.o, ira-lives.o, ira.o, lra.o) + (lra-assigns.o, lra-coalesce.o, lra-constraints.o) + (lra-eliminations.o, lra-lives.o, lra-spills.o, regmove.o) + (combine-stack-adj.o, compare-elim.o, ddg.o, modulo-sched.o) + (haifa-sched.o, sched-deps.o, sched-rgn.o, sched-ebb.o) + (sched-vis.o, sel-sched.o, sel-sched-dump.o, sel-sched-ir.o) + (final.o, recog.o, reg-stack.o, sreal.o, predict.o, lists.o) + (bb-reorder.o, tracer.o, timevar.o, regcprop.o, regrename.o) + (ifcvt.o, params.o, pointer-set.o, hooks.o, pretty-print.o) + (errors.o, dbgcnt.o, lower-subreg.o, target-globals.o) + (hw-doloop.o, file-find.o, context.o, $(common_out_object_file)) + (insn-attrtab.o, insn-automata.o, insn-dfatab.o, insn-emit.o) + (insn-enums.o, insn-extract.o, insn-latencytab.o, insn-modes.o) + (insn-opinit.o, insn-output.o, insn-peep.o, insn-preds.o) + (insn-recog.o, intl.o, cppbuiltin.o, cppdefault.o, gcov.o) + (gcov-dump.o): Remove. + (default-c.o): Use COMPILE and POSTCOMPILE. + (CFLAGS-gcc.o): New variable. + ($(common_out_object_file)): Use COMPILE and POSTCOMPILE. + +2013-09-25 Tom Tromey + + * Makefile.in (c-family/cppspec.o, c-family/c-common.o) + (c-family/c-cppbuiltin.o, c-family/c-dump.o, c-family/c-format.o) + (c-family/c-gimplify.o, c-family/c-lex.o, c-family/c-omp.o) + (c-family/c-opts.o, c-family/c-pch.o, c-family/c-ppoutput.o) + (c-family/c-pragma.o, c-family/c-pretty-print.o) + (c-family/c-semantics.o, c-family/c-ada-spec.o) + (c-family/array-notation-common.o, c-family/stub-objc.o) + (c-family/c-ubsan.o): Remove. + +2013-09-25 Tom Tromey + + * Makefile.in (C_TREE_H): Reference c/c-tree.h. + +2013-09-25 Tom Tromey + + * Makefile.in (DRIVER_DEFINES): Use $(and), not shell code, + to add -DENABLE_SHARED_LIBGCC. + (gcc.o): Don't use subshell. + +2013-09-25 Tom Tromey + + * Makefile.in (OUTPUT_OPTION): Define as "-o $@". + * configure.ac: Don't invoke AM_PROG_CC_C_O. + (NO_MINUS_C_MINUS_O, OUTPUT_OPTION): Don't subst. + * configure, config.in: Rebuild. + +2013-09-25 Tom Tromey + + * Makefile.in (CCDEPMODE, DEPDIR, depcomp, COMPILE.base) + (COMPILE, POSTCOMPILE): New variables. + (.cc.o .c.o): Use COMPILE, POSTCOMPILE. + (DEPFILES): New variable. + Include ".Po" files. + * configure.ac: Add checks for dependency checking. + * configure, aclocal.m4: Regenerate. + +2013-09-25 Tom Tromey + + * Makefile.in (ALL_HOST_BACKEND_OBJS): Add lto-wrapper.o. + ($(ALL_HOST_OBJS)): Move order-only dependency to end of file. + +2013-09-25 Tom Tromey + + * Makefile.in (generated_files): Add options.h, + target-hooks-def.h, insn-opinit.h, + common/common-target-hooks-def.h, pass-instances.def, + c-family/c-target-hooks-def.h. + +2013-09-25 Jeff Law + + * tree-ssa-threadedge.c (thread_across_edge): Use foo.last () rather + than foo[foo.length () - 1] to access last member in a vec. + * tree-ssa-threadupdate.c (register_jump_thread): Similarly. + +2013-09-25 Richard Biener + + PR middle-end/58521 + * tree.c (iterative_hash_expr): Remove MEM_REF special handling. + +2013-09-25 Jan Hubicka + + * cgraph.c (cgraph_resolve_speculation): Use semantical equivalency + test. + +2013-09-25 Marek Polacek + + PR sanitizer/58420 + * ubsan.c (ubsan_type_descriptor): Handle IDENTIFIER_NODEs + when determining the type name. + +2013-09-24 Oleg Endo + + * config/sh/sh.md: Fix formatting. + +2013-09-24 Xinliang David Li + + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Check + max peel iterations parameter. + * param.def: New parameter. + * doc/invoke.texi: Document New parameter. + +2013-09-24 Christophe Lyon + + * gimple-pretty-print.c: Various whitespace tweaks. + * tree-core.h: Likewise. + * tree-pretty-print.c: Likewise. + * tree-ssa-alias.c: Likewise. + * tree-ssa-copy.c: Likewise. + * tree-ssanames.c: Likewise. + * tree-ssanames.h: Likewise. + * tree-vrp.c: Likewise. + +2013-09-24 Alan Modra + + PR middle-end/57134 + PR middle-end/57586 + * stmt.c (expand_asm_operands): Call expand_expr with EXPAND_MEMORY + for output operands that disallow regs. Don't use EXPAND_WRITE on + inout operands. + +2013-09-24 Richard Biener + + PR middle-end/58513 + * tree.c (reference_alias_ptr_type): Move ... + * alias.c (reference_alias_ptr_type): ... here and implement + in terms of the new reference_alias_ptr_type_1. + (ref_all_alias_ptr_type_p): New helper. + (get_deref_alias_set_1): Drop flag_strict_aliasing here, + use ref_all_alias_ptr_type_p. + (get_deref_alias_set): Add flag_strict_aliasing check here. + (reference_alias_ptr_type_1): New function, split out from ... + (get_alias_set): ... here. + (alias_ptr_types_compatible_p): New function. + * alias.h (reference_alias_ptr_type): Declare. + (alias_ptr_types_compatible_p): Likewise. + * tree.h (reference_alias_ptr_type): Remove. + * fold-const.c (operand_equal_p): Use alias_ptr_types_compatible_p + to compare MEM_REF alias types. + +2013-09-24 Richard Biener + + * tree-vrp.c (vrp_finalize): Check for SSA name presence. + +2013-09-23 Michael Meissner + + * config/rs6000/rs6000.c (rs6000_vector_reload): Delete, combine + reload helper function arrays into a single array reg_addr. + (reload_fpr_gpr): Likewise. + (reload_gpr_vsx): Likewise. + (reload_vsx_gpr): Likewise. + (struct rs6000_reg_addr): Likewise. + (reg_addr): Likewise. + (rs6000_debug_reg_global): Change rs6000_vector_reload, + reload_fpr_gpr, reload_gpr_vsx, reload_vsx_gpr uses to reg_addr. + (rs6000_init_hard_regno_mode_ok): Likewise. + (rs6000_secondary_reload_direct_move): Likewise. + (rs6000_secondary_reload): Likewise. + + * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Add new + constraints: wu, ww, and wy. Repurpose wv constraint added during + power8 changes. Put wg constraint in alphabetical order. + + * config/rs6000/rs6000.opt (-mvsx-scalar-float): New debug switch + for future work to add ISA 2.07 VSX single precision support. + (-mvsx-scalar-double): Change default from -1 to 1, update + documentation comment. + (-mvsx-scalar-memory): Rename debug switch to -mupper-regs-df. + (-mupper-regs-df): New debug switch to control whether DF values + can go in the traditional Altivec registers. + (-mupper-regs-sf): New debug switch to control whether SF values + can go in the traditional Altivec registers. + + * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print wu, ww, + and wy constraints. + (rs6000_init_hard_regno_mode_ok): Use ssize_t instead of int for + loop variables. Rename -mvsx-scalar-memory to -mupper-regs-df. + Add new constraints, wu/ww/wy. Repurpose wv constraint. + (rs6000_debug_legitimate_address_p): Print if we are running + before, during, or after reload. + (rs6000_secondary_reload): Add a comment. + (rs6000_opt_masks): Add -mupper-regs-df, -mupper-regs-sf. + + * config/rs6000/constraints.md (wa constraint): Sort w + constraints. Update documentation string. + (wd constraint): Likewise. + (wf constraint): Likewise. + (wg constraint): Likewise. + (wn constraint): Likewise. + (ws constraint): Likewise. + (wt constraint): Likewise. + (wx constraint): Likewise. + (wz constraint): Likewise. + (wu constraint): New constraint for ISA 2.07 SFmode scalar + instructions. + (ww constraint): Likewise. + (wy constraint): Likewise. + (wv constraint): Repurpose ISA 2.07 constraint that we did not use + in the previous submissions. + * doc/md.texi (PowerPC and IBM RS6000): Likewise. + +2013-09-23 Richard Sandiford + + * doc/rtl.texi (REG_NOTES): Say that int_list can also be used. + (REG_BR_PROB): Say that the probability is stored in an int_list. + * reg-notes.def: Update commentary to mention INT_LIST. + * rtl.def (EXPR_LIST, INSN_LIST): Capitalize comments. + (INT_LIST): New rtx. + * rtl.h (add_int_reg_note, add_shallow_copy_of_reg_note): Declare. + * rtlanal.c (int_reg_note_p): New function. + (alloc_reg_note): Assert that the note does not have an int argument. + (add_int_reg_note, add_shallow_copy_of_reg_note): New functions. + * combine.c (distribute_notes): Use add_shallow_copy_of_rtx. + * cse.c (cse_process_notes_1): Expect REG_EQUAL to be an EXPR_LIST + rather than an INSN_LIST. Handle INT_LIST. + * ifcvt.c (cond_exec_process_insns): Take the probability as an int + rather than an rtx. Use gen_rtx_INT_LIST to create a REG_BR_PROB note. + (cond_exec_process_if_block): Use XINT to extract REG_BR_PROB values. + Manipulate them as ints rather than rtxes. + * reg-stack.c (subst_asm_stack_regs): Only handle EXPR_LIST notes. + * regmove.c (copy_src_to_dest): Likewise. + * sched-vis.c (print_insn_with_notes): Handle INT_LIST. + + * config/i386/winnt.c (i386_pe_seh_unwind_emit): Sink pat assignment + into the cases that need it. + * config/arm/arm.c (arm_unwind_emit): Likewise. + + * asan.c (asan_clear_shadow): Use add_int_reg_note for REG_BR_PROB. + * emit-rtl.c (try_split, emit_copy_of_insn_after): Likewise. + * loop-doloop.c (add_test, doloop_modify): Likewise. + * loop-unswitch.c (compare_and_jump_seq): Likewise. + * optabs.c (emit_cmp_and_jump_insn_1): Likewise. + * predict.c (combine_predictions_for_insn): Likewise. + * print-rtl.c (print_rtx): Handle INT_LIST. + * config/aarch64/aarch64.c (aarch64_emit_unlikely_jump): Likewise. + * config/alpha/alpha.c (emit_unlikely_jump): Likewise. + * config/arm/arm.c (emit_unlikely_jump): Likewise. + * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise. + (ix86_split_fp_branch, predict_jump): Likewise. + * config/rs6000/rs6000.c (emit_unlikely_jump): Likewise. + * config/sh/sh.c (expand_cbranchsi4): Likewise. + * config/spu/spu.c (ea_load_store_inline): Likewise. + + * cfgbuild.c (compute_outgoing_frequencies): Use XINT to access the + value of a REG_BR_PROB note. + * cfgrtl.c (force_nonfallthru_and_redirect): Likewise. + (update_br_prob_note, rtl_verify_edges, purge_dead_edges): Likewise. + * emit-rtl.c (try_split): Likewise. + * predict.c (br_prob_note_reliable_p): Likewise. + (invert_br_probabilities, combine_predictions_for_insn): Likewise. + * reorg.c (mostly_true_jump): Likewise. + * config/bfin/bfin.c (cbranch_predicted_taken_p): Likewise. + * config/frv/frv.c (frv_print_operand_jump_hint): Likewise. + * config/i386/i386.c (ix86_print_operand): Likewise. + * config/ia64/ia64.c (ia64_print_operand): Likewise. + * config/mmix/mmix.c (mmix_print_operand): Likewise. + * config/rs6000/rs6000.c (output_cbranch): Likewise. + * config/s390/s390.c (s390_expand_tbegin): Likewise. + * config/sh/sh.c (sh_print_operand, sh_adjust_cost): Likewise. + * config/sparc/sparc.c (output_cbranch): Likewise. + * config/spu/spu.c (get_branch_target): Likewise. + * config/tilegx/tilegx.c (cbranch_predicted_p): Likewise. + * config/tilepro/tilepro.c (cbranch_predicted_p): Likewise. + +2013-09-23 Jan Hubicka + + * ipa-cp.c (ipa_get_indirect_edge_target_1): Add sanity check + for ipa-devirt. + * ipa-utils.h (possible_polymorphic_call_target_p): New function. + * ipa-devirt.c (possible_polymorphic_call_target_p): Be tolerant + of external calls + * gimple-fold.c: Include ipa-utils.h and gimple-pretty-print.h + (gimple_fold_call): Dump inconsistent devirtualizations; add + sanity check for type based devirtualizations. + * ipa-prop.c: Include ipa-utils.h + (ipa_intraprocedural_devirtualization): Add sanity check. + (try_make_edge_direct_virtual_call): Likewise. + +2013-09-23 Eric Botcazou + + * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Recurse on copy + assignment statements. + +2013-09-23 Kugan Vivekanandarajah + + * gimple-pretty-print.c (dump_ssaname_info): New function. + (dump_gimple_phi): Call it. + (pp_gimple_stmt_1): Likewise. + * tree-core.h (tree_ssa_name): New union ssa_name_info_type field. + (range_info_def): Declare. + * tree-pretty-print.c (pp_double_int): New function. + (dump_generic_node): Call it. + * tree-pretty-print.h (pp_double_int): Declare. + * tree-ssa-alias.c (dump_alias_info): Check pointer type. + * tree-ssanames.h (range_info_def): New structure. + (value_range_type): Move definition here. + (set_range_info, value_range_type, duplicate_ssa_name_range_info): + Declare. + * tree-ssanames.c (make_ssa_name_fn): Check pointer type at + initialization. + (set_range_info): New function. + (get_range_info): Likewise. + (duplicate_ssa_name_range_info): Likewise. + (duplicate_ssa_name_fn): Check pointer type and call + duplicate_ssa_name_range_info. + * tree-ssa-copy.c (fini_copy_prop): Likewise. + * tree-vrp.c (value_range_type): Remove definition, now in + tree-ssanames.h. + (vrp_finalize): Call set_range_info to update value range of SSA_NAMEs. + * tree.h (SSA_NAME_PTR_INFO): Macro changed to access via union. + (SSA_NAME_RANGE_INFO): New macro. + +2013-09-23 Richard Biener + + PR tree-optimization/58464 + * tree-ssa-pre.c (phi_trans_lookup): Remove. + (phi_trans_add): Change to add conditionally on being not present. + (phi_translate_1): Remove recursion detection here. + (phi_translate): Pre-seed the cache with NULL to catch + recursion here in a more generic way. + (bitmap_find_leader): Adjust comment. + (get_representative_for): Dump value-numbers. + (create_expression_by_pieces): Likewise. + (insert_into_preds_of_block): Likewise. + +2013-09-23 Christian Bruel + + PR target/58475 + * config/sh/sh.md (movsf_ie): Allow fpul_operand. + * config/sh/predicate.md (arith_reg_operand): Disallow FPUL_REG. + +2013-09-23 James Greenhalgh + + Revert r202780: + 2013-09-20 Renlin Li + + * config/aarch64/aarch64.c (aarch64_expand_prologue): Use + plus_constant. + (aarch64_expand_epilogue): Likewise. + (aarch64_legitimize_reload_address): Likewise. + +2013-09-22 Eric Botcazou + + * gimplify.c (gimplify_asm_expr): Reset the TREE_CHAIN of clobbers to + NULL_TREE before pushing them onto the vector. Likewise for labels. + +2013-09-21 Eric Botcazou + + * config/ia64/predicates.md (ia64_cbranch_operator): Accept unordered + comparison operators when -fno-trapping-math is in effect. + * config/ia64/ia64.c (ia64_expand_compare): Add support for unordered + comparison operators in TFmode and assert that unsupported operators + cannot reach here. + (ia64_print_operand): Likewise. + +2013-09-21 Jan Hubicka + + * x86-tune.def (partial_reg_stall): Disable for CoreI7 and newer. + (sse_typeless_stores): Enable for core + (sse_load0_by_pxor): Likewise. + (four_jump_limit): Disable for core. + (pad_returns): Likewise. + (avoid_vector_decode): Likewise. + (fuse_cmp_and_branch): Enable for cores. + * i386.c (x86_accumulate_outgoing_args): Disable for cores. + +2013-09-20 John David Anglin + + PR middle-end/56791 + * config/pa/pa.c (pa_option_override): Disable auto increment and + decrement instructions until reload is completed. + + * config/pa/pa-linux.h (TARGET_OS_CPP_BUILTINS): Define + __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2, + and __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. + +2013-09-20 DJ Delorie + Nick Clifton + + * config/rl78/rl78.c: Various whitespace and comment tweaks. + (need_to_save): Save bank 0 on interrupts. + (characterize_address): Strip far address wrappers. + (rl78_as_legitimate_address): Likewise. + (transcode_memory_rtx): Likewise. + (rl78_peep_movhi_p): Disable this peephole after devirt. + (rl78_propogate_register_origins): Forget all origins when a + CLOBBER is seen. + * config/rl78/rl78-virt.md: Various whitespace tweaks. + * config/rl78/rl78-real.md: Various whitespace tweaks. Additional + peephole2's. + * config/rl78/rl78.md (sel_rb): Disable for G10 just in case. + * config/rl78/rl78-expand.md (movqi): Check for subregs of consts. + * config/rl78/rl78.h (LINK_SPEC): Pass -gc-sections unless + relocating. + * config/rl78/constraints.md: Various whitespace and paren tweaks. + +2013-09-20 John David Anglin + + * config/pa/pa.md: In "scc" insn patterns, change output template to + handle const0_rtx in reg_or_0_operand operands. + +2013-09-20 Martin Husemann + + PR target/56875 + * config/vax/vax.c (vax_output_int_move): Use D format specifier. + * config/vax/vax.md (ashldi3, ): Ditto. + +2013-09-20 Richard Biener + + PR middle-end/58484 + * tree-scalar-evolution.c (struct scev_info_str): Shrink by + remembering SSA name version and block index. + (new_scev_info_str): Adjust. + (hash_scev_info): Likewise. Also hash the block index. + (eq_scev_info): Adjust. + (find_var_scev_info): Likewise. + (struct instantiate_cache_entry): Remove. + (struct instantiate_cache_type): Use a htab to map name, block + to chrec. + (instantiate_cache_type::~instantiate_cache_type): Adjust. + (get_instantiated_value_entry): Likewise. + (hash_idx_scev_info, eq_idx_scev_info): New functions. + (instantiate_scev_name): Adjust. + +2013-09-20 Jeff Law + + * tree-ssa-dom.c (record_temporary_equivalences): Add comment. + +2013-09-20 Yufeng Zhang + + * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): + Call aarch64_simd_expand_args to update op[argc]. + +2013-09-20 Basile Starynkevitch + + * plugin.c (parse_plugin_arg_opt): Accept equal sign inside + plugin argument. + +2013-09-20 Basile Starynkevitch + + * gengtype.c (file_rules): Added rule for *.cc files. + (get_output_file_with_visibility): Give fatal message when no + rules found. + +2013-09-20 Renlin Li + + * config/aarch64/aarch64.c (aarch64_expand_prologue): Use plus_constant. + (aarch64_expand_epilogue): Likewise. + (aarch64_legitimize_reload_address): Likewise. + +2013-09-20 Bernd Edlinger + + PR middle-end/57748 + * expr.c (expand_assignment): Remove misalignp code path. + +2013-09-20 Marek Polacek + + PR sanitizer/58413 + * ubsan.c (get_ubsan_type_info_for_type): Use TYPE_SIZE instead of + TYPE_PRECISION. Add asserts. + +2013-09-20 Richard Biener + + PR tree-optimization/58453 + * tree-loop-distribution.c (distribute_loop): Apply the cost + model for -ftree-loop-distribute-patterns, too. + +2013-09-20 Richard Biener + + PR middle-end/58473 + * tree-chrec.h (build_polynomial_chrec): Use gcc_checking_assert, + make type comparison less strict. + +2013-09-20 Alan Modra + + * configure: Regenerate. + * aclocal.m4: Regenerate. + +2013-09-20 Marek Polacek + + PR other/58467 + * doc/extend.texi: Document that attribute used is meant to be used + on variables with static storage duration. + +2013-09-19 Jakub Jelinek + + PR tree-optimization/58472 + * tree-vect-stmts.c (vectorizable_store, vectorizable_load): For + simd_lane_access set inv_p = false. + * omp-low.c (lower_rec_input_clauses): Set TREE_NO_WARNING on + the simduid magic VAR_DECL. + +2013-09-19 Jan Hubicka + + * i386.c (generic_memcpy, generic_memset): Fix 32bit template. + +2013-09-17 Jeff Law + + * tree-ssa-dom.c (record_temporary_equivalences): New function + split out of dom_opt_dom_walker::after_dom_children. + (dom_opt_dom_walker::thread_across_edge): Move common code + in here from dom_opt_dom_walker::after_dom_children. + (dom_opt_dom_walker::after_dom_children): Corresponding simplifictions. + +2013-09-19 Jan Hubicka + + * i386.h (TARGET_GENERIC32, TARGET_GENERIC64): Remove. + (TARGET_GENERIC): Use PROCESOR_GENERIC + (enum processor_type): Unify generic32 and 64. + * i386.md (cpu): Likewise. + * x86-tune.def (use_leave): Enable for generic32. + (avoid_vector_decode, slow_imul_imm32_mem, slow_imul_imm8): Likewise. + * athlon.md: Change generic64 to generic in all occurences. + * i386-c.c (ix86_target_macros_internal): Unify generic64 and 32. + (ix86_target_macros_internal): Likewise. + * driver-i386.c (host_detect_local_cpu): Likewise. + * i386.c (generic64_memcpy, generic64_memset, generic64_cost): Rename + to .. + (generic_memcpy, generic_memset, generic_cost): This one. + (generic32_memcpy, generic32_memset, generic32_cost): Remove. + (m_GENERIC32, m_GENERIC64): Remove. + (m_GENERIC): Turn into one flag. + (processor_target): Unify generic tunnings. + (ix86_option_override_internal): Replace generic32/64 by generic. + (ix86_issue_rate): Likewise. + (ix86_adjust_cost): Likewise. + +2013-09-19 Jan Hubicka + + * cgraph.c (cgraph_create_edge_1): Avoid uninitialized read + of speculative flag. + +2013-09-19 Jakub Jelinek + + * omp-low.c (expand_omp_sections): Always pass len - 1 to + GOMP_sections_start, even if !exit_reachable. + +2013-09-18 Vladimir Makarov + + * lra-constraints.c (need_for_all_save_p): Use macro + HARD_REGNO_CALL_PART_CLOBBERED. + * lra-lives.c (check_pseudos_live_through_calls): Use the macro to + set up pseudo conflict hard regs. + +2013-09-18 Michael Meissner + + PR target/58452 + * config/rs6000/paired.md (movmisalignv2sf): Fix to allow memory + operands. + +2013-09-18 Vladimir Makarov + + PR rtl-optimization/58438 + * lra.c (lra): Clear lra_optional_reload_pseudos in upper loop. + * lra-constraints.c (undo_optional_reloads): Keep optional reloads + from previous subpasses. + +2013-09-18 Richard Earnshaw + + * arm.c (arm_get_frame_offsets): Validate architecture supports + LDRD/STRD before accepting the tuning preference. + (arm_expand_prologue): Likewise. + (arm_expand_epilogue): Likewise. + +2013-09-18 Richard Biener + + PR tree-optimization/58417 + * tree-chrec.c (chrec_fold_plus_1): Assert that we do not + have chrecs with symbols defined in the loop as operands. + (chrec_fold_multiply): Likewise. + * tree-scalar-evolution.c (interpret_rhs_expr): Instantiate + parameters before folding binary operations. + (struct instantiate_cache_entry_hasher): Remove. + (struct instantiate_cache_type): Use a pointer-map. + (instantiate_cache_type::instantiate_cache_type): New function. + (instantiate_cache_type::get): Likewise. + (instantiate_cache_type::set): Likewise. + (instantiate_cache_type::~instantiate_cache_type): Adjust. + (get_instantiated_value_entry): Likewise. + (global_cache): New global. + (instantiate_scev_r, instantiate_scev_poly, instantiate_scev_binary, + instantiate_array_ref, instantiate_scev_convert, instantiate_scev_3, + instantiate_scev_2, instantiate_scev_1): Do not pass along cache. + (instantiate_scev_name): Adjust. + (instantiate_scev): Construct global instead of local cache. + (resolve_mixers): Likewise. + +2013-09-18 Daniel Morris + Paolo Carlini + + PR c++/58458 + * doc/implement-cxx.texi: Fix references to the C++ standards. + +2013-09-18 Jakub Jelinek + + * omp-low.c (copy_var_decl): Copy DECL_ATTRIBUTES. + * tree-vect-data-refs.c (vect_analyze_data_refs): For + simd_lane_access drs, update also DR_ALIGNED_TO. + +2013-09-18 Marek Polacek + + PR sanitizer/58411 + * doc/extend.texi: Document no_sanitize_undefined attribute. + * builtins.c (fold_builtin_0): Don't sanitize function if it has the + no_sanitize_undefined attribute. + +2013-09-18 Nick Clifton + + * config/msp430/msp430.h (ASM_SPEC): Pass -md on to the assembler. + (ASM_DECLARE_FUNCTION_NAME): Define. + +2013-09-17 Trevor Saunders + + * compare-elim.c (find_comparison_dom_walker): New class + (find_comparisons_in_bb): Rename to + find_comparison_dom_walker::before_dom_children + (find_comparisons): Adjust + * domwalk.c (walk_dominator_tree): Rename to dom_walker::walk, and + adjust. + (init_walk_dominator_tree, fini_walk_dominator_tree): Remove + * domwalk.h (dom_walk_data): Convert it To a class dom_walker. + (init_walk_dominator_tree): Remove declaration. + (fini_walk_dominator_tree): Remove declaration. + * fwprop.c (single_def_use_dom_walker): New class + (single_def_use_enter_block): Convert to + single_def_use_dom_walker::before_dom_children. + (single_def_use_leave_block): Convert to + single_def_use_dom_walker::after_dom_children. + (build_single_def_use_links): Adjust. + * gimple-ssa-strength-reduction.c (find_candidates_dom_walker): New + class. + (find_candidates_in_block): Convert to + find_candidates_dom_walker::before_dom_children. + (execute_strength_reduction): Adjust. + * graphite-sese-to-poly.c (struct bsc, build_sese_conditions): Remove. + (sese_dom_walker): New class. + (sese_dom_walker::sese_dom_walker): New constructor. + (sese_dom_walker::~sese_dom_walker): New destructor. + (build_sese_conditions_before): Convert to + sese_dom_walker::before_dom_children. + (build_sese_conditions_after): Convert to + sese_dom_walker::after_dom_children. + (build_poly_scop): Adjust + * tree-into-ssa.c (rewrite_dom_walker): New class + (rewrite_enter_block): Convert to + rewrite_dom_walker::before_dom_children. + (rewrite_leave_block): Convert to + rewrite_dom_walker::after_dom_children. + (rewrite_update_dom_walker): New class. + (rewrite_update_enter_block): Convert to + rewrite_update_dom_walker::before_dom_children. + (rewrite_update_leave_block): Convert to + rewrite_update_dom_walker::after_dom_children. + (rewrite_blocks, rewrite_into_ssa): Adjust. + (mark_def_dom_walker): New class. + (mark_def_dom_walker::mark_def_dom_walker): New constructor. + (mark_def_dom_walker::~mark_def_dom_walker): New destructor. + (mark_def_sites_blocks): Convert to + mark_def_dom_walker::before_dom_children. + (mark_def_site_blocks): Remove. + * tree-ssa-dom.c (dom_opt_dom_walker): New class. + (tree_ssa_dominator_optimize): Adjust. + (dom_thread_across_edge): Convert to method + dom_opt_dom_walker::thread_across_edge. + (dom_opt_enter_block): Convert to member function + dom_opt_dom_walker::before_dom_children. + (dom_opt_leave_block): Convert to member function + dom_opt_dom_walker::after_dom_children. + * tree-ssa-dse.c (dse_dom_walker): New class. + (dse_enter_block): Convert to member function + dse_dom_walker::before_dom_children. + (tree_ssa_dse): Adjust. + * tree-ssa-loop-im.c (invariantness_dom_walker): New class. + (determine_invariantness_stmt): Convert to method + invariantness_dom_walker::before_dom_children. + (determine_invariantness): Remove + (move_computations_dom_walker): New class. + (move_computations_stmt): Convert to method + move_computations_dom_walker::before_dom_children. + (move_computations, tree_ssa_lim): Adjust. + * tree-ssa-phiopt.c (nontrapping_dom_walker): New class. + (nt_init_block): Convert to method + notrappping_dom_walker::before_dom_children. + (nt_fini_block): Convert to method + method nontrapping_dom_walker::after_dom_children. + (get_non_trapping): Adjust. + * tree-ssa-pre.c (eliminate_dom_walker): New class. + (eliminate_bb): Convert to method + eliminate_dom_walker::before_dom_children. + (eliminate_leave_block): Convert to method + eliminate_dom_walker::after_dom_children. + (eliminate): Adjust. + * tree-ssa-strlen.c (strlen_dom_walker): New class. + (strlen_enter_block): Convert to method + strlen_dom_walker::before_dom_children. + (strlen_leave_block): Convert to method + method strlen_dom_walker::after_dom_children. + (tree_ssa_strlen): Adjust. + * tree-ssa-uncprop.c (uncprop_dom_walker): New class. + (tree_ssa_uncprop): Adjust. + (uncprop_leave_block): Convert to method + uncprop_dom_walker::after_dom_children. + (uncprop_leave_block): Convert to method + uncprop_dom_walker::before_dom_children. + +2013-09-18 Bin Cheng + + * config/arm/arm.c (thumb1_reorg): Search for flag setting insn before + branch in same basic block. Check both src and dest of the move insn. + +2013-09-17 Nick Clifton + + * config/rl78/rl78-real.md (bf): New pattern. + (bt): New pattern. + * config/rl78/rl78.c (rl78_print_operand_1): Handle %B. + (rl78_print_operand): Do not put a # before a %B. + * config/rl78/rl78.opt: Tweak doc strings. + +2013-09-17 DJ Delorie + + * config/rl78/constraints.md (Wcv): Allow up to $r31. + * config/rl78/rl78.c (rl78_asm_file_start: Likewise. + (rl78_option_override): Likewise, if -mallregs. + (is_virtual_register): Likewise. + * config/rl78/rl78.h (reg_class): Extend VREGS to $r31. + (REGNO_OK_FOR_BASE_P): Likewise. + * config/rl78/rl78.opt (-mallregs): New. + +2013-09-17 Nick Clifton + + * config/rl78/rl78.c (need_to_save): Change return type to bool. + For interrupt functions: save all call clobbered registers if the + interrupt handler is not a leaf function. + (rl78_expand_prologue): Always recompute the frame information. + For interrupt functions: only select bank 0 if one of the bank 0 + registers is going to be psuhed. + +2013-09-17 DJ Delorie + + * config/rl78/constraints.md: For each W* constraint, rename to C* + and create a W* constraint that checks for an optional ES: prefix + pattern also. + * config/rl78/rl78.md (UNS_ES_ADDR): New. + (es_addr): New. Used to wrap far addresses. + * config/rl78/rl78-protos.h (rl78_es_addr): New. + (rl78_es_base): New. + * config/rl78/rl78.c (rl78_as_legitimate_address): Accept "unspec" + wrapped far addresses. + (rl78_print_operand_1): Unwrap far addresses before processing. + (rl78_lo16): Wrap far addresses in unspecs. + (rl78_es_addr): New. + (rl78_es_base): New. + (insn_ok_now): Check for not-yet-wrapped far addresses. + (transcode_memory_rtx): Properly re-wrap far addresses. + +2013-09-17 Sebastian Huber + + * config/sparc/t-rtems: Add leon3 multilibs. + +2013-09-17 Cong Hou + + * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Fix a bug + when checking the dot production pattern. The type of rhs operand + of multiply is now checked correctly. + +2013-09-17 Jeff Law + + * tree-ssa-dom.c (cprop_into_successor_phis): Also propagate + edge implied equivalences into successor phis. + * tree-ssa-threadupdate.c (phi_args_equal_on_edges): Moved into + here from tree-ssa-threadedge.c. + (mark_threaded_blocks): When threading through a joiner, if both + successors of the joiner's clone reach the same block, verify the + PHI arguments are equal. If not, cancel the jump threading request. + * tree-ssa-threadedge.c (phi_args_equal_on_edges): Moved into + tree-ssa-threadupdate.c + (thread_across_edge): Don't check PHI argument equality when + threading through joiner block here. + +2013-09-17 Andrew MacLeod + + * tree-flow.h (ssa_undefined_value_p): Remove prototype. + * tree-ssa.c (ssa_undefined_value_p): Move pass independent parts here. + (warn_uninit, warn_uninitialized_vars, + execute_early_warn_uninitialized, make_pass_early_warn_uninitialized): + Move to tree-ssa-uninit.c. + * tree-ssa-uninit.c (ssa_undefined_value_p): Move to tree-ssa.c. + (has_undefined_value_p): New. Pass dependant parts of + ssa_undefined_value_p. + (uninit_undefined_value_p): Use has_undefined_value_p. + (warn_uninit, warn_uninitialized_vars, + execute_early_warn_uninitialized, make_pass_early_warn_uninitialized): + Move from tree-ssa.c. + * tree-ssa.h: Adjust prototypes. + +2013-09-17 Jan Hubicka + + PR middle-end/58332 + * cif-code.def (FUNCTION_NOT_OPTIMIZED): New CIF code. + * ipa-inline.c (can_inline_edge_p): Do not downgrade + FUNCTION_NOT_OPTIMIZED. + * ipa-inline-analysis.c (compute_inline_parameters): Function + not optimized is not inlinable unless it is alwaysinline. + (inline_analyze_function): Force calls in not optimized + function not inlinable. + +2013-09-17 Jan Hubicka + + PR middle-end/58329 + * ipa-devirt.c (ipa_devirt): Be ready for symtab_nonoverwritable_alias + to return NULL. + * ipa.c (function_and_variable_visibility): Likewise. + * ipa-profile.c (ipa_profile): Likewise. + +2013-09-17 Bernd Edlinger + + PR ipa/58398 + * cgraph.c (cgraph_function_body_availability): Check for ifunc + attribute, and don't inline the resolver in this case. + +2013-09-17 Teresa Johnson + + * coverage.c (get_coverage_counts): Add missing newline. + +2013-09-17 Kyrylo Tkachov + + PR tree-optimization/58088 + * fold-const.c (mask_with_trailing_zeros): New function. + (fold_binary_loc): Make sure we don't recurse infinitely + when the X in (X & C1) | C2 is a tree of the form (Y * K1) & K2. + Use mask_with_trailing_zeros where appropriate. + +2013-09-17 Yuri Rumyantsev + + * config/i386/i386.c (distance_agu_use_in_bb) : Proper initialization + of 'prev' var to get better distance estimation. + +2013-09-17 Eric Botcazou + + * tree-inline.h (struct copy_body_data): Add transform_parameter. + * tree-inline.c (is_parameter_of): New predicate. + (remap_gimple_op_r): Do not propagate TREE_THIS_NOTRAP on MEM_REF if + a parameter has been remapped. + (copy_tree_body_r): Likewise on INDIRECT_REF and MEM_REF. + (optimize_inline_calls): Initialize transform_parameter. + (copy_gimple_seq_and_replace_locals): Likewise. + (tree_function_versioning): Likewise. + (maybe_inline_call_in_expr): Likewise. + +2013-09-17 Nick Clifton + + * config/msp430/msp430-protos.h: Add prototypes for new functions. + * config/msp430/msp430.c (msp430_preserve_reg_p): Add support for + interrupt handlers. + (is_attr_func): New function. + (msp430_is_interrupt_func): New function. + (is_naked_func): New function. + (is_reentrant_func): New function. + (is_critical_func): New function. + (msp430_start_function): Add annotations for function attributes. + (msp430_attr): New function. + (msp430_attribute_table): New. + (msp430_function_section): New function. + (TARGET_ASM_FUNCTION_SECTION): Define. + (msp430_builtin): New enum. + (msp430_init_builtins): New function. + (msp430_builtin_devl): New function. + (msp430_expand_builtin): New function. + (TARGET_INIT_BUILTINS): Define. + (TARGET_EXPAND_BUILTINS): Define. + (TARGET_BUILTIN_DECL): Define. + (msp430_expand_prologue): Add support for naked, interrupt, + critical and reentrant functions. + (msp430_expand_epilogue): Likewise. + (msp430_print_operand): Handle 'O' character. + * config/msp430/msp430.h (TARGET_CPU_CPP_BUILTINS): Define + NO_TRAMPOLINES. + * config/msp430/msp430.md (unspec): Add UNS_DINT, UNS_EINT, + UNS_PUSH_INTR, UNS_POP_INTR, UNS_BIC_SR, UNS_BIS_SR. + (pushm): Use a 'n' rather than an 'i' constraint. + (msp_return): Add generation of the interrupt return instruction. + (disable_interrupts): New pattern. + (enable_interrupts): New pattern. + (push_intr_state): New pattern. + (pop_intr_state): New pattern. + (bic_SR): New pattern. + (bis_SR): New pattern. + * doc/extend.texi: Document MSP430 function attributes and builtin + functions. + +2013-09-17 Richard Biener + + PR tree-optimization/58432 + * tree-loop-distribution.c (tree_loop_distribution): Also + scan PHIs for outside loop uses and seed a partition from them. + +2013-09-17 Bin Cheng + + * gimple-ssa-strength-reduction.c (backtrace_base_for_ref): New. + (restructure_reference): Call backtrace_base_for_ref. + +2013-09-17 Alan Modra + + PR target/57589 + * config/rs6000/driver-rs6000.c (elf_platform): Revert 2013-06-11 + patch. + +2013-09-16 DJ Delorie + + * config/rl78/rl78.c (rl78_asm_file_start): Specify alternate + vregs location for RL78/G10. + (rl78_expand_prologue): Avoid SEL on G10. + (rl78_expand_epilogue): Likewise. + (rl78_peep_movhi_p): Can't move a constant to memory in HImode. + * config/rl78/rl78.h (TARGET_CPU_CPP_BUILTINS): Define + __RL78_G10__ when appropriate. + (ASM_SPEC): Pass -mg10 along to the assembler. + * config/rl78/rl78.md (sel_rb): Disable for G10. + * config/rl78/rl78.opt: Add -mg10 option. + * config/rl78/t-rl78: Add -mg10 multilib. + +2013-09-16 Xinliang David Li + + * tree-if-conv.c (main_tree_if_conversion): Check new flag. + * omp-low.c (omp_max_vf): Ditto. + (expand_omp_simd): Ditto. + * tree-vectorizer.c (vectorize_loops): Ditto. + (gate_vect_slp): Ditto. + (gate_increase_alignment): Ditto. + * tree-ssa-pre.c (inhibit_phi_insertion): Ditto. + * tree-ssa-loop.c (gate_tree_vectorize): Ditto. + (gate_tree_vectorize): Name change. + (tree_vectorize): Ditto. + (pass_vectorize::gate): Call new function. + (pass_vectorize::execute): Ditto. + * opts.c: O3 default setting change. + (finish_options): Check new flag. + * doc/invoke.texi: Document new flags. + * common.opt: New flags. + +2013-09-16 Andreas Schwab + + * doc/tm.texi.in (Cond Exec Macros): Remove node. + (Condition Code): Don't reference it. + * doc/tm.texi: Regenerate. + +2013-09-16 Vladimir Makarov + + PR middle-end/58418 + * lra-constraints.c (undo_optional_reloads): Consider all optional + reload even if it did not get a hard reg. + +2013-09-16 Teresa Johnson + + * dumpfile.c (dump_loc): Remove newline emission. + * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Add newline + emission to dump_printf_loc calls where missing. + (vect_mark_for_runtime_alias_test): Ditto. + (vect_analyze_data_ref_dependence): Ditto. + (vect_analyze_data_ref_dependences): Ditto. + (vect_slp_analyze_data_ref_dependence): Ditto. + (vect_slp_analyze_data_ref_dependences): Ditto. + (vect_compute_data_ref_alignment): Ditto. + (vect_update_misalignment_for_peel): Ditto. + (vect_verify_datarefs_alignment): Ditto. + (vector_alignment_reachable_p): Ditto. + (vect_get_data_access_cost): Ditto. + (vect_enhance_data_refs_alignment): Ditto. + (vect_find_same_alignment_drs): Ditto. + (vect_analyze_data_refs_alignment): Ditto. + (vect_analyze_group_access): Ditto. + (vect_analyze_data_ref_access): Ditto. + (vect_analyze_data_ref_accesses): Ditto. + (vect_prune_runtime_alias_test_list): Ditto. + (vect_analyze_data_refs): Ditto. + (vect_create_addr_base_for_vector_ref): Ditto. + (vect_create_data_ref_ptr): Ditto. + (vect_grouped_store_supported): Ditto. + (vect_grouped_load_supported): Ditto. + * value-prof.c (check_counter): Ditto. + (check_ic_target): Ditto. + * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Ditto. + (vect_recog_widen_mult_pattern): Ditto. + (vect_recog_widen_sum_pattern): Ditto. + (vect_recog_over_widening_pattern): Ditto. + (vect_recog_widen_shift_pattern): Ditto. + (vect_recog_rotate_pattern): Ditto. + (vect_recog_vector_vector_shift_pattern): Ditto. + (vect_recog_divmod_pattern): Ditto. + (vect_recog_mixed_size_cond_pattern): Ditto. + (vect_recog_bool_pattern): Ditto. + (vect_pattern_recog_1): Ditto. + (vect_pattern_recog): Ditto. + * tree-vect-loop.c (vect_determine_vectorization_factor): Ditto. + (vect_is_simple_iv_evolution): Ditto. + (vect_analyze_scalar_cycles_1): Ditto. + (vect_get_loop_niters): Ditto. + (vect_analyze_loop_1): Ditto. + (vect_analyze_loop_form): Ditto. + (vect_analyze_loop_operations): Ditto. + (vect_analyze_loop_2): Ditto. + (vect_analyze_loop): Ditto. + (report_vect_op): Ditto. + (vect_is_slp_reduction): Ditto. + (vect_is_simple_reduction_1): Ditto. + (vect_get_known_peeling_cost): Ditto. + (vect_estimate_min_profitable_iters): Ditto. + (vect_model_reduction_cost): Ditto. + (vect_model_induction_cost): Ditto. + (get_initial_def_for_induction): Ditto. + (vect_create_epilog_for_reduction): Ditto. + (vectorizable_reduction): Ditto. + (vectorizable_induction): Ditto. + (vectorizable_live_operation): Ditto. + (vect_loop_kill_debug_uses): Ditto. + (vect_transform_loop): Ditto. + * tree-vect-stmts.c (vect_mark_relevant): Ditto. + (vect_stmt_relevant_p): Ditto. + (process_use): Ditto. + (vect_mark_stmts_to_be_vectorized): Ditto. + (vect_model_simple_cost): Ditto. + (vect_model_promotion_demotion_cost): Ditto. + (vect_model_store_cost): Ditto. + (vect_get_store_cost): Ditto. + (vect_model_load_cost): Ditto. + (vect_get_load_cost): Ditto. + (vect_init_vector_1): Ditto. + (vect_get_vec_def_for_operand): Ditto. + (vect_finish_stmt_generation): Ditto. + (vectorizable_call): Ditto. + (vectorizable_conversion): Ditto. + (vectorizable_assignment): Ditto. + (vectorizable_shift): Ditto. + (vectorizable_operation): Ditto. + (vectorizable_store): Ditto. + (vectorizable_load): Ditto. + (vectorizable_condition): Ditto. + (vect_analyze_stmt): Ditto. + (vect_transform_stmt): Ditto. + (vect_is_simple_use): Ditto. + * tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Ditto. + (vect_can_advance_ivs_p): Ditto. + (vect_update_ivs_after_vectorizer): Ditto. + (vect_do_peeling_for_loop_bound): Ditto. + (vect_gen_niters_for_prolog_loop): Ditto. + (vect_update_inits_of_drs): Ditto. + (vect_create_cond_for_alias_checks): Ditto. + * tree-vect-slp.c (vect_get_and_check_slp_defs): Ditto. + (vect_build_slp_tree_1): Ditto. + (vect_supported_load_permutation_p): Ditto. + (vect_analyze_slp_instance): Ditto. + (vect_analyze_slp): Ditto. + (vect_make_slp_decision): Ditto. + (vect_detect_hybrid_slp): Ditto. + (vect_bb_vectorization_profitable_p): Ditto. + (vect_slp_analyze_bb_1): Ditto. + (vect_update_slp_costs_according_to_vf): Ditto. + (vect_get_mask_element): Ditto. + (vect_transform_slp_perm_load): Ditto. + (vect_schedule_slp_instance): Ditto. + (vect_schedule_slp): Ditto. + (vect_slp_transform_bb): Ditto. + * profile.c (read_profile_edge_counts): Ditto. + (compute_branch_probabilities): Ditto. + * coverage.c (get_coverage_counts): Ditto. + +2013-09-16 Diego Novillo + + * tree-core.h: Add missing comment lines from refactoring of tree.h. + +2013-09-16 Jan Hubicka + + * gimple-fold.c (can_refer_decl_in_current_unit_p): Do not accept + abstract functions; for static functions check the presence of body. + +2013-09-16 James Greenhalgh + + * config/aarch64/aarch64-simd-builtins.def (fma): New. + * config/aarch64/aarch64-simd.md + (aarch64_mla_elt): New. + (aarch64_mla_elt_): Likewise. + (aarch64_mls_elt): Likewise. + (aarch64_mls_elt_): Likewise. + (aarch64_fma4_elt): Likewise. + (aarch64_fma4_elt_): Likewise. + (aarch64_fma4_elt_to_128v2df): Likewise. + (aarch64_fma4_elt_to_64df): Likewise. + (fnma4): Likewise. + (aarch64_fnma4_elt): Likewise. + (aarch64_fnma4_elt_): Likewise. + (aarch64_fnma4_elt_to_128v2df): Likewise. + (aarch64_fnma4_elt_to_64df): Likewise. + * config/aarch64/iterators.md (VDQSF): New. + * config/aarch64/arm_neon.h + (vfm_lane_f<32, 64>): Convert to C implementation. + (vml_lane_<16, 32, 64>): Likewise. + +2013-09-16 James Greenhalgh + + * config/aarch64/aarch64-simd.md (aarch64_mul3_elt): New. + (aarch64_mul3_elt_): Likewise. + (aarch64_mul3_elt_to_128df): Likewise. + (aarch64_mul3_elt_to_64v2df): Likewise. + * config/aarch64/iterators.md (VEL): Also handle DFmode. + (VMUL): New. + (VMUL_CHANGE_NLANES) Likewise. + (h_con): Likewise. + (f): Likewise. + * config/aarch64/arm_neon.h + (vmul_lane_<16,32,64>): Convert to C implementation. + +2013-09-16 James Greenhalgh + + * config/aarch64/arm_neon.h + (vcvtx_high_f32_f64): Fix parameters. + +2013-09-16 Jan-Benedict Glaw + Uros Bizjak + + * config/alpha.c: Include tree-ssanames.h. + +2013-09-16 Richard Biener + + * tree-loop-distribution.c (enum rdg_dep_type): Add control_dd. + (dot_rdg_1): Handle control_dd. + (create_edge_for_control_dependence): New function. + (create_rdg_edges): Add control dependences if asked for. + (build_rdg): Likewise. + (generate_loops_for_partition): If there are not necessary + control stmts remove all their dependencies. + (collect_condition_stmts, rdg_flag_loop_exits): Remove. + (distribute_loop): Pass on control dependences. + (tree_loop_distribution): Compute control dependences and remove + restriction on number of loop nodes. + +2013-09-16 Jakub Jelinek + + * ipa-prop.c (ipa_compute_jump_functions_for_edge): Return early + for internal calls. + +2013-09-16 Richard Sandiford + + * cse.c (try_const_anchors): Punt on CC modes. + +2013-09-15 Jan-Benedict Glaw + + * config/vax/constraints.md (T): Add missing CONSTANT_P check. + +2013-09-14 John David Anglin + + PR target/58382 + * config/pa/pa.c (pa_expand_prologue): Change mode in gen_rtx_POST_INC + calls to word_mode. + +2013-09-14 Iain Sandoe + + PR target/48094 + * config/darwin.c (darwin_objc2_section): Note if ObjC Metadata is + seen. + (darwin_objc1_section): Likewise. + (darwin_file_end): Emit Image Info section when required. + +2013-09-14 Jan Hubicka + + * tree-into-ssa.c (gate_into_ssa): New. + (pass_data_build_ssa): Use it. + * cgraph.h (expand_thunk): Update prototype. + * cgraphunit.c (analyze_function): Expand thunks early. + (expand_thunk): Fix DECL_CONTEXT of reust_decl; + build proper cgraph; set in_ssa_p; clear bogus TREE_ASM_WRITTEN; + set lowered flag; do not add new function. + (assemble_thunks_and_aliases): Update. + * tree-ssa.c (gate_init_datastructures): New gate. + (pass_data_init_datastructures): Use it. + +2013-09-14 Iain Sandoe + + PR target/58269 + * config/i386/i386.c (ix86_function_arg_regno_p): Make Darwin use the + xmm register set described in the psABI. + +2013-09-13 Evgeny Gavrin + + * dwarf2out.c (should_emit_struct_debug): Add check + for type_decl variable is not NULL. + +2013-09-13 Jacek Caban + + * config.gcc: Use new winnt-c.c target hooks + * config/t-winnt: New file + * config/winnt-c.c: New file + * doc/tm.texi.in: Document new hook + * doc/tm.texi: Regenerated + +2013-09-13 Jan Hubicka + + PR middle-end/58094 + * ipa-inline.c (check_callers): New function. + (check_caller_edge): Remove. + (want_inline_function_to_all_callers_p): Also permit alises that are + called dirrectly. + (inline_to_all_callers): Terminate the walk when devirtualization + introduce new calls. + +2013-09-13 Jan Hubicka + + * ipa-inline-analysis.c (struct growth_data): Add node. + (do_estimate_growth_1): Fix detection of recursion. + +2013-09-13 Jakub Jelinek + + PR tree-optimization/58392 + * tree-cfg.c (move_sese_region_to_fn): Rename loop variable + to avoid shadowing of outer loop variable. If + saved_cfun->has_simduid_loops or saved_cfun->has_force_vect_loops, + replace_by_duplicate_decl simduid of loops that have it set and + set dest_cfun->has_simduid_loops and/or + dest_cfun->has_force_vect_loops. + * omp-low.c (build_outer_var_ref): Call maybe_lookup_decl_in_outer_ctx + instead of maybe_lookup_decl. + * tree-inline.c (copy_loops): Change blocks_to_copy argument to id. + Use id->blocks_to_copy instead of blocks_to_copy. Adjust recursive + call. Copy over force_vect and copy and remap simduid. Set + cfun->has_simduid_loops and/or cfun->has_force_vect_loops. + (copy_cfg_body): Remove blocks_to_copy argument. Use + id->blocks_to_copy instead of blocks_to_copy. Adjust copy_loops + caller. Don't set cfun->has_simduid_loops and/or + cfun->has_force_vect_loops here. + (copy_body): Remove blocks_to_copy argument. Adjust copy_cfg_body + caller. + (expand_call_inline, tree_function_versioning): Adjust copy_body + callers. + +2013-09-13 Martin Jambor + + PR bootstrap/58388 + * ipa-prop.c (try_make_edge_direct_simple_call): Be less strict in + the assert if the edge was a speculative one. + +2013-09-13 Richard Biener + + * tree-data-ref.h (known_dependences_p): Move here ... + * tree-loop-distribution.c (known_dependences_p): ... from here. + (dump_rdg_component, debug_rdg_component): Remove. + (dump_rdg): Adjust. + (generate_loops_for_partition): Use gimple_uid instead of + relying on matching stmt visit order. + (rdg_build_partitions): Take starting stmt vector. + (ldist_gen): Merge into ... + (distribute_loop): ... this function. Do not compute starting + vertices vector. + * tree-cfg.c (gimple_duplicate_bb): Copy UID for PHIs. + +2013-09-13 Kyrylo Tkachov + + * config/arm/arm.md (arm_cmpsi_insn): Split rI alternative. + Set type attribute correctly. Set predicable_short_it attribute. + (cmpsi_shiftsi): Remove %? from output template. + +2013-09-13 Richard Biener + + * tree-loop-distribution.c (struct rdg_component, + rdg_defs_used_in_other_loops_p, free_rdg_components, + rdg_build_components): Remove. + (stmts_from_loop): Do not record virtual PHIs. + (generate_loops_for_partition): Skip virtual PHIs. + (build_rdg_partition_for_component): Rename to ... + (build_rdg_partition_for_vertex): ... this and adjust. + (rdg_build_partitions): Take a vector of starting vertices + instead of components. Remove unnecessary leftover handling. + (ldist_gen): Do not build components or record other stores. + (distribute_loop): Do not distribute loops containing stmts + with side-effects. + +2013-09-13 Christian Bruel + + PR target/58314 + * config/sh/sh.md (mov_reg_reg): Allow memory reloads. + +2013-09-13 Kai Tietz + + * config.gcc: Separate cases for mingw and cygwin targets, + and add 64-bit cygwin target case. + + * config/i386/winnt-cxx.c (i386_pe_type_dllexport_p): Don't + dll-export inline-functions. + * config/i386/winnt.c (i386_pe_determine_dllexport_p): Likewise. + +2013-09-13 Jeff Law + + PR middle-end/58387 + Revert: + 2013-09-06 Jeff Law + + * tree-ssa-dom.c (cprop_into_successor_phis): Also propagate + edge implied equivalences into successor phis. + +2013-09-12 DJ Delorie + + * config/rl78/rl78-virt.md: Change from | to \; for asm line + separators. + +2013-09-12 Brooks Moses + + PR driver/42955 + * Makefile.in: Do not install driver binaries in $(target)/bin. + +2013-09-12 DJ Delorie + + * config/rl78/rl78.opt (mrelax): New. + * config/rl78/rl78.h (ASM_SPEC): New, pass on -mrelax to gas. + * config/rl78/rl78.h (LINK_SPEC): New, pass on -mrelax to ld. + + * config/rl78/rl78.c (rl78_expand_prologue): Use AX to copy + between SP and FP. + (rl78_expand_epilogue): Likewise. + +2013-09-12 Vladimir Makarov + + PR middle-end/58335 + * lra-eliminations.c (remove_reg_equal_offset_note): New. + (eliminate_regs_in_insn): Rewrite frame pointer to hard frame + pointer elimination with using remove_reg_equal_offset_note. + +2013-09-12 DJ Delorie + + * config/msp430/: New port. + * config.gcc (msp430): Added. + * doc/invoke.texi: Document MSP430 options. + * doc/install.texi: Document msp430-elf + * doc/md.texi: Document msp430-elf + * doc/contrib.texi: Document msp430-elf + + * cfgexpand.c (expand_debug_expr): Avoid sign-extending SImode to + PSImode. + +2013-09-12 Martin Jambor + + PR ipa/58389 + * ipa-prop.c (remove_described_reference): Give up if the edge in the + reference descriptor is NULL. + (ipa_edge_removal_hook): If owning a reference descriptor, set its + edge to NULL. + +2013-09-12 Andrew MacLeod + + * tree-flow.h (FREE_SSANAMES): Move to tree-ssanames.c + (SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS, ptr_info_def, + num_ssa_names, ssa_name): Move to tree-ssanames.h + prototypes. + * tree-flow-inline.h (make_ssa_name, copy_ssa_name, duplicate_ssa_name, + make_temp_ssa_name): move to tree-ssanames.h + * tree-ssa-alias.h: Move prototype. + * tree-ssa.h: Include tree-ssanames.h. + * tree-ssanames.c (FREE_SSANAMES): Move to here. + * tree-ssanames.h: New. Move items from tree-flow*.h + * Makefile.in (tree-ssanames.h): Add to tree-ssanames.o and GTFILES. + +2013-09-12 Richard Biener + + PR tree-optimization/58404 + * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also + propagate non-invariant addresses into dereferences wrapped + in component references. + +2013-09-12 Richard Biener + + PR tree-optimization/58402 + * passes.def: Move pass_late_warn_uninitialized later. + +2013-09-12 Andrew MacLeod + + * tree-ssa.h: New. Move content from tree-flow.h and + tree-flow-inline.h. + * tree-flow.h (_edge_var_map, edge_var_map_vector): Move to tree-ssa.h. + Move prototypes belonging to tree-ssa.c. + * tree-flow-inline.h (redirect_edge_var_map_def, + redirect_edge_var_map_result, redirect_edge_var_map_location): Move to + tree-ssa.h. + * gimple.h: Adjust prototypes. + * tree-ssa.c (useless_type_conversion_p, types_compatible_p): Move + to... + * gimple.c (useless_type_conversion_p, types_compatible_p): Here. + * tree.h: Move prototype to tree-ssa.h. + * gengtype.c (open_base_files): Replace tree-flow.h with tree-ssa.h. + * Makefile.in: (TREE_SSA_H, TREE_FLOW_H): Adjust dependencies. + * alias.c, asan.c, builtins.c, calls.c, cfgexpand.c, cfghooks.c, + cfgloop.c, cfgloopmanip.c, cgraph.c, cgraphbuild.c, cgraphclones.c, + cgraphunit.c, dse.c, except.c, expr.c, final.c, fold-const.c, + ggc-page.c, gimple-fold.c, gimple-iterator.c, gimple-low.c, + gimple-pretty-print.c, gimple-ssa-strength-reduction.c, + gimple-streamer-in.c, gimple-streamer-out.c, gimple.c, gimplify.c, + graphite-blocking.c, graphite-clast-to-gimple.c, + graphite-dependences.c, graphite-interchange.c, + graphite-optimize-isl.c, graphite-poly.c, graphite-scop-detection.c, + graphite-sese-to-poly.c, graphite.c, ipa-cp.c, ipa-inline-analysis.c, + ipa-inline-transform.c, ipa-inline.c, ipa-prop.c, ipa-pure-const.c, + ipa-reference.c, ipa-split.c, ipa-utils.c, + loop-init.c, lto-cgraph.c, lto-section-in.c, lto-section-out.c, + lto-streamer-in.c, lto-streamer-out.c, lto-streamer.c, omp-low.c, + passes.c, predict.c, print-tree.c, profile.c, sese.c, targhooks.c, + tracer.c, trans-mem.c, tree-call-cdce.c, tree-cfg.c, tree-cfgcleanup.c, + tree-chrec.c, tree-complex.c, tree-data-ref.c, tree-dfa.c, tree-eh.c, + tree-emutls.c, tree-if-conv.c, tree-inline.c, tree-into-ssa.c, + tree-loop-distribution.c, tree-mudflap.c, tree-nested.c, tree-nrv.c, + tree-object-size.c, tree-optimize.c, tree-outof-ssa.c, tree-parloops.c, + tree-phinodes.c, tree-predcom.c, tree-pretty-print.c, tree-profile.c, + tree-scalar-evolution.c, tree-sra.c, tree-ssa*.c, tree-stdarg.c, + tree-streamer-in.c, tree-switch-conversion.c, tree-tailcall.c, + tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop-manip.c, + tree-vect-loop.c, tree-vect-patterns.c, tree-vect-slp.c, + tree-vect-stmts.c, tree-vectorizer.c, tree-vrp.c, tsan.c, + value-prof.c, var-tracking.c, + varpool.c, vtable-verify.c: Replace tree-flow.h with tree-ssa.h + +2013-09-12 Richard Biener + + PR tree-optimization/58396 + * tree-loop-distribution.c (create_rdg_edges): Free unused DDRs. + (build_rdg): Take a loop-nest parameter, fix memleaks. + (distribute_loop): Compute loop-nest here and pass it to build_rdg. + +2013-09-12 Yuri Rumyantsev + + * config/i386/x86-tune.def: Turn on X86_TUNE_AVOID_MEM_OPND_FOR_CMOVE + for SLM. + +2013-09-12 Cameron McInally + + * doc/extend.texi: Fix errors in x86 FMA builtin naming. + The FMA instruction names should have a 'v' prefix. + +2013-09-12 Richard Biener + + * tree-loop-distribution.c (dot_rdg_1): Make graph prettier. + (dot_rdg): Use popen instead of system in optional code. + (remaining_stmts, upstream_mem_writes): Remove global bitmaps. + (already_processed_vertex_p): Adjust. + (has_anti_or_output_dependence, predecessor_has_mem_write, + mark_nodes_having_upstream_mem_writes, has_upstream_mem_writes, + rdg_flag_uses): Remove. + (rdg_flag_vertex): Simplify. + (rdg_flag_vertex_and_dependent): Rely on a correct RDG and + remove recursion. + (build_rdg_partition_for_component): Process the first vertex + of a component only. + (ldist_gen): Do not compute remaining_stmts or upstream_mem_writes. + +2013-09-12 Alan Modra + + * config/rs6000/rs6000.c (toc_relative_expr_p): Use add_cint_operand. + +2013-09-11 DJ Delorie + Nick Clifton + + * config/rl78/predicates.md (rl78_cmp_operator_signed): New. + (rl78_stack_based_mem): New. + * config/rl78/constraints.md (Iv08): New. + (Iv16): New. + (Iv24): New. + (Is09): New. + (Is17): New. + (Is25): New. + (ISsi): New. + (IShi): New. + (ISqi): New. + * config/rl78/rl78-expand.md (movqi): Reject more SUBREG operands. + (movhi): Likewise. + (movsi): Change from expand to insn-and-split. + (ashrsi3): Clobber AX. + (lshrsi3): New. + (ashlsi3): New. + (cbranchsi4): New. + * config/rl78/rl78.md (CC_REG): Fix. + (addsi3): Allow memory and immediate operands. + (addsi3_internal): Split into... + (addsi3_internal_virt): ...new, and ... + (addsi3_internal_real): ...new. + (subsi): New. + (subsi3_internal_virt): New. + (subsi3_internal_real): New. + (mulsi3): Add memory operand. + (mulsi3_rl78): Likewise. + (mulsi3_g13): Likewise. + * config/rl78/rl78-real.md (cbranchqi4_real_signed): New. + (cbranchqi4_real): Add more constraint options. + (cbranchhi4_real): Expand pattern. + (cbranchhi4_real_signed): New. + (cbranchhi4_real_inverted): New. + (cbranchsi4_real_lt): New. + (cbranchsi4_real_ge): New. + (cbranchsi4_real_signed): New. + (cbranchsi4_real): New. + (peephole2): New. + * config/rl78/rl78-virt.md (ashrsi3_virt): Add custom cases for + constant shifts. + (lshrsi3_virt): Likewise. + (ashlsi3_virt): Likewise. + (cbranchqi4_virt_signed): New. + (cbranchhi4_virt_signed): New. + (cbranchsi4_virt): New. + * config/rl78/rl78.c: Whitespace fixes throughout. + (move_elim_pass): New. + (pass_data_rl78_move_elim): New. + (pass_rl78_move_elim): New. + (make_pass_rl78_move_elim): New. + (rl78_devirt_info): Run devirt earlier. + (rl78_move_elim_info): New. + (rl78_asm_file_start): Register it. + (rl78_split_movsi): New. + (rl78_as_legitimate_address): Allow virtual base registers when + appropriate. + (rl78_addr_space_convert): Remove spurious debug stuff. + (rl78_print_operand_1): Add z,s,S,r,E modifiers. + (rl78_print_operand): More cases for not printing '#'. + (rl78_expand_compare): Remove most of the logic. + (content_memory): New. + (clear_content_memory): New. + (get_content_index): New. + (get_content_name): New. + (display_content_memory): New. + (update_content): New. + (record_content): New. + (already_contains): New. + (insn_ok_now): Re-recog insns with virtual registers. + (add_postponed_content_update): New. + (process_postponed_content_update): New. + (gen_and_emit_move): New. + (transcode_memory_rtx): Record new location content. + Use gen_and_emit_move. + (force_into_acc): New. + (move_to_acc): Use gen_and_emit_move. + (move_from_acc): Likewise. + (move_acc_to_reg): Likewise. + (move_to_x): Likewise. + (move_to_hl): Likewise. + (move_to_de): Likewise. + (rl78_alloc_physical_registers_op1): Record location content. + (has_constraint): New. + (rl78_alloc_physical_registers_op2): Record location content. + Optimize use of HL. + (rl78_alloc_physical_registers_ro1): Likewise. + (rl78_alloc_physical_registers_cmp): Likewise. + (rl78_alloc_physical_registers_umul): Likewise. + (rl78_alloc_address_registers_macax): New. + (rl78_alloc_physical_registers): Initialize and set location + content memory as needed. + (rl78_reorg): Make sure split2 is called. + (rl78_rtx_costs): New. + +2013-09-11 Richard Sandiford + + * simplify-rtx.c (simplify_unary_operation_1): Use simplify_gen_binary + for (not (neg ...)) and (neg (not ...)) cases. + +2013-09-11 Richard Biener + + PR middle-end/58377 + * passes.def: Split critical edges before late uninit warning passes. + * tree-cfg.c (pass_split_crit_edges): Implement clone method. + +2013-09-11 Jakub Jelinek + + PR tree-optimization/58385 + * fold-const.c (build_range_check): If both low and high are NULL, + use omit_one_operand_loc to preserve exp side-effects. + +2013-09-11 Kyrylo Tkachov + + * config/arm/arm.md (arm_shiftsi3): New alternative l/l/M. + +2013-09-11 Richard Biener + + * tree-data-ref.c (dump_rdg_vertex, debug_rdg_vertex, + dump_rdg_component, debug_rdg_component, dump_rdg, debug_rdg, + dot_rdg_1, dot_rdg, rdg_vertex_for_stmt, create_rdg_edge_for_ddr, + create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices, + stmts_from_loop, known_dependences_p, build_empty_rdg, + build_rdg, free_rdg, rdg_defs_used_in_other_loops_p): Move ... + * tree-loop-distribution.c: ... here. + * tree-data-ref.h (struct rdg_vertex, RDGV_STMT, RDGV_DATAREFS, + RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT, RDG_DATAREFS, + RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT, enum rdg_dep_type, + struct rdg_edge, RDGE_TYPE, RDGE_LEVEL, RDGE_RELATION): Move ... + * tree-loop-distribution.c: ... here. + * tree-loop-distribution.c: Include gimple-pretty-print.h. + (struct partition_s): Add loops member. + (partition_alloc, partition_free, rdg_flag_uses, rdg_flag_vertex, + rdg_flag_vertex_and_dependent, rdg_flag_loop_exits, + build_rdg_partition_for_component, rdg_build_partitions): Adjust. + +2013-09-11 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * config/i386/constraints.md (k): New. + (Yk): Ditto. + * config/i386/i386.c (const regclass_map): Add new mask registers. + (dbx_register_map): Ditto. + (dbx64_register_map): Ditto. + (svr4_dbx_register_map): Ditto. + (ix86_conditional_register_usage): Squash mask registers if AVX512F is + disabled. + (ix86_preferred_reload_class): Disable constants for mask registers. + (ix86_secondary_reload): Do spill of mask register using 32-bit insn. + (ix86_hard_regno_mode_ok): Support new mask registers. + (x86_order_regs_for_local_alloc): Ditto. + * config/i386/i386.h (FIRST_PSEUDO_REGISTER): Update. + (FIXED_REGISTERS): Add new mask registers. + (CALL_USED_REGISTERS): Ditto. + (REG_ALLOC_ORDER): Ditto. + (VALID_MASK_REG_MODE): New. + (FIRST_MASK_REG): Ditto. + (LAST_MASK_REG): Ditto. + (reg_class): Add MASK_EVEX_REGS, MASK_REGS. + (MAYBE_MASK_CLASS_P): New. + (REG_CLASS_NAMES): Add MASK_EVEX_REGS, MASK_REGS. + (REG_CLASS_CONTENTS): Ditto. + (MASK_REGNO_P): New. + (ANY_MASK_REG_P): Ditto. + (HI_REGISTER_NAMES): Add new mask registers. + * config/i386/i386.md (MASK0_REG, MASK1_REG, MASK2_REG, MASK3_REG, + MASK4_REG, MASK5_REG, MASK6_REG, MASK7_REG): Constants for new + mask registers. + (attribute "type"): Add mskmov, msklog. + (attribute "length_immediate"): Support them. + (attribute "memory"): Ditto. + (attribute "prefix_0f"): Ditto. + (*movhi_internal): Support new mask registers. + (*movqi_internal): Ditto. + (define_split): Split out clobber pattern is a logic + insn on mask registers. + (*k): New. + (*andhi_1): Extend to support mask regs. + (*andqi_1): Extend to support mask regs. + (kandn): New. + (define_split): Split and-not to and and not if operands + are not mask regs. + (*_1): Separate HI mode to new pattern... + (*hi_1): This. + (*qi_1): Extend to support mask regs. + (kxnor): New. + (kortestzhi): Ditto. + (kortestchi): Ditto. + (kunpckhi): Ditto. + (*one_cmpl2_1): Remove HImode and handle it... + (*one_cmplhi2_1): ...Here, now with mask registers support. + (*one_cmplqi2_1): Support new mask registers. + (HI/QImode arithmetics splitter): Don't split if mask registers + are used. + (HI/QImode not splitter): Ditto. + * config/i386/predicated.md (mask_reg_operand): New. + (general_reg_operand): Ditto. + +2013-09-11 Alexander Ivchenko + + * doc/invoke.texi: Document fxsr, xsave and xsaveopt options. + * doc/extend.texi: Document fxsr, xsave and xsaveopt builtins. + +2013-09-10 Jeff Law + + PR tree-optimization/58380 + * tree-ssa-threadupdate.c (thread_block): Recognize another case + of threading through a buried loop header. + + * tree-ssa-threadedge.c (thread_around_empty_blocks): Correct + return value for single successor case. + +2013-09-10 Jan Hubicka + + * ipa-devirt.c (ipa_devirt): Enable with LTO. + +2013-09-10 Richard Earnshaw + + PR target/58361 + * arm/vfp.md (combine_vcvt_f32_): Fix pattern to + support conditional execution. + (combine_vcvt_f64_): Likewise. + +2013-09-10 Vladimir Makarov + + * lra.c (lra): Clear lra_optional_reload_pseudos before every + constraint pass. + * lra-constraints.c (curr_insn_transform): Switch on optional reloads. + Check destination too to check move insn. + (undo_optional_reloads): Add check that the original peudo did not + changed its allocation and the optional reload was inherited on last + inheritance pass. Break loop after deciding to keep optional reload. + (lra_undo_inheritance): Add check that inherited pseudo still in + memory. + +2013-09-10 James Greenhalgh + + * config/aarch64/aarch64.md (generic_sched): New. + * config/aarch64/aarch64-generic.md (load): Make conditional + on generic_sched attribute. + (nonload): Likewise. + +2013-09-10 Jan Hubicka + + * lto-cgraph.c: Include ipa-utils.h. + (compute_ltrans_boundary): Also add possible targets into the boundary. + +2013-09-10 Jan Hubicka + + * gimple-fold.c (gimple_get_virt_method_for_binfo): Pass real + VAR_DECL of vtable rather than full expression. + +2013-09-10 Jan Hubicka + Paolo Carlini + + * cgraphunit.c (analyze_functions): Save input_location, set it + to UNKNOWN_LOCATION and restore it at the end. + +2013-09-10 Martin Jambor + + * ipa-cp.c (propagate_constants_topo): Do not ignore SCC + represented by a thunk. + +2013-09-10 Jeff Law + + PR tree-optimization/58343 + * tree-ssa-threadupdate.c (thread_block): Identify and disable + jump threading requests through loop headers buried in the middle + of a jump threading path. + + * tree-ssa-threadedge.c (thread_around_empty_blocks): Fix thinko + in return value/type. + +2013-09-10 Jakub Jelinek + + PR rtl-optimization/58365 + * cfgcleanup.c (merge_memattrs): Also clear MEM_READONLY_P + resp. MEM_NOTRAP_P if they differ, or set MEM_VOLATILE_P if + it differs. + +2013-09-10 Richard Biener + + * tree-data-ref.h (build_rdg): Drop all parameters but loop. + * tree-data-ref.c (create_rdg_vertices): Collect all data + references, signal failure to the caller, use data-ref API. + (build_rdg): Compute data references only once. Maintain lifetime + of data references and data dependences from within RDG. + (free_rdg): Free dependence relations. + * tree-loop-distribution.c (rdg_flag_uses): Drop weird code + inventing extra dependences. + (distribute_loop): Update for RDG API changes. + +2013-09-10 Kai Tietz + + * doc/invoke.texi (fms-extensions): Document changed + behavior for ms-abi targets. + * config/i386/i386.c (ix86_option_override_internal): + Set default value of option -fms-extension for ms-abi targets. + +2013-09-10 Michael Zolotukhin + + * config/i386/i386.c (ix86_expand_movmem): Fix epilogue generation. + +2013-09-10 Alan Modra + + PR target/58330 + * config/rs6000/rs6000.md (bswapdi2_64bit): Disable for volatile mems. + +2013-09-10 Alan Modra + + * config/rs6000/predicates.md (add_cint_operand): New. + (reg_or_add_cint_operand, small_toc_ref): Use add_cint_operand. + * config/rs6000/rs6000.md (largetoc_high_plus): Restrict offset + using add_cint_operand. + (largetoc_high_plus_aix): Likewise. + +2013-09-09 Jakub Jelinek + + PR tree-optimization/58364 + * tree-ssa-reassoc.c (init_range_entry): For BIT_NOT_EXPR on + BOOLEAN_TYPE, only invert in_p and continue with arg0 if + the current range can't be an unconditional true or false. + +2013-09-09 James Greenhalgh + + * config/aarch64/arm_neon.h (vrsqrte_f64): Fix parameter type. + +2013-09-09 Uros Bizjak + + * ipa-prop.c (ipa_modify_call_arguments): Initialize deref_align. + +2013-09-09 Paolo Carlini + + PR c++/43452 + * doc/invoke.texi (-Wdelete-incomplete): Document it. + +2013-09-09 Ian Bolton + + * config/aarch64/aarch64.c (aarch64_preferred_reload_class): Return + NO_REGS for immediate that can't be moved directly into FP_REGS. + +2013-09-09 Kyrylo Tkachov + + * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for + comparison with negated operand. + * config/aarch64/aarch64.md (compare_neg): Match canonical + RTL form. + +2013-09-09 Richard Biener + + PR middle-end/58326 + * cfgloopmanip.c (fix_bb_placements): When fixing the placement + of a subloop record all its block as affecting loop-closed SSA form. + +2013-09-09 Richard Sandiford + + * expmed.c (lshift_value): Take an unsigned HOST_WIDE_INT instead + of an rtx/bitpos pair. + (store_fixed_bit_field): Update accordingly. + +2013-09-09 Richard Sandiford + + * asan.c (asan_emit_stack_protection): Use gen_int_mode instead of + GEN_INT. + * builtins.c (expand_errno_check): Likewise. + * dwarf2cfi.c (init_return_column_size): Likewise. + * except.c (sjlj_mark_call_sites): Likewise. + * expr.c (move_by_pieces_1, store_by_pieces_2): Likewise. + * lra-constraints.c (emit_inc): Likewise. + * ree.c (combine_set_extension): Likewise. + * regmove.c (fixup_match_2): Likewise. + * reload1.c (inc_for_reload): Likewise. + +2013-09-09 Richard Sandiford + + * combine.c (simplify_set, expand_field_assignment, extract_left_shift) + (force_to_mode, simplify_shift_const_1, simplify_comparison): + Use gen_int_mode with the mode of the associated simplify_* call. + * explow.c (probe_stack_range, anti_adjust_stack_and_probe): Likewise. + * expmed.c (expand_shift_1): Likewise. + * function.c (instantiate_virtual_regs_in_insn): Likewise. + * loop-iv.c (iv_number_of_iterations): Likewise. + * loop-unroll.c (unroll_loop_runtime_iterations): Likewise. + * simplify-rtx.c (simplify_binary_operation_1): Likewise. + +2013-09-09 Richard Sandiford + + * asan.c (asan_clear_shadow): Use gen_int_mode with the mode + of the associated expand_* call. + (asan_emit_stack_protection): Likewise. + * builtins.c (round_trampoline_addr): Likewise. + * explow.c (allocate_dynamic_stack_space, probe_stack_range): Likewise. + * expmed.c (expand_smod_pow2, expand_sdiv_pow2, expand_divmod) + (emit_store_flag): Likewise. + * expr.c (emit_move_resolve_push, push_block, emit_single_push_insn_1) + (emit_push_insn, optimize_bitfield_assignment_op, expand_expr_real_1): + Likewise. + * function.c (instantiate_virtual_regs_in_insn): Likewise. + * ifcvt.c (noce_try_store_flag_constants): Likewise. + * loop-unroll.c (unroll_loop_runtime_iterations): Likewise. + * modulo-sched.c (generate_prolog_epilog): Likewise. + * optabs.c (expand_binop, widen_leading, expand_doubleword_clz) + (expand_ctz, expand_ffs, expand_unop): Likewise. + +2013-09-09 Richard Sandiford + + * alias.c (addr_side_effect_eval): Use gen_int_mode with the mode + of the associated gen_rtx_* call. + * caller-save.c (init_caller_save): Likewise. + * combine.c (find_split_point, make_extraction): Likewise. + (make_compound_operation): Likewise. + * dwarf2out.c (mem_loc_descriptor): Likewise. + * explow.c (plus_constant, probe_stack_range): Likewise. + * expmed.c (expand_mult_const): Likewise. + * expr.c (emit_single_push_insn_1, do_tablejump): Likewise. + * reload1.c (init_reload): Likewise. + * valtrack.c (cleanup_auto_inc_dec): Likewise. + * var-tracking.c (adjust_mems): Likewise. + * modulo-sched.c (sms_schedule): Likewise, but use gen_rtx_GT + rather than gen_rtx_fmt_ee. + +2013-09-09 Jan Hubicka + + PR middle-end/58294 + * value-prof.c (gimple_ic): Copy also abnormal edges. + +2013-09-09 Richard Sandiford + + * asan.c (asan_shadow_cst): Use gen_int_mode. + +2013-09-08 Jan Hubicka + + * ipa-profile.c: Add toplevel comment. + (ipa_propagate_frequency_1): Be more conservative when profile is read. + (contains_hot_call_p): New function. + (ipa_propagate_frequency): Set frequencies based on counts when + profile is read. + * predict.c (compute_function_frequency): Use PROFILE_READ gueard for + profile; do not tamper with profile after inlining if it is read. + +2013-09-08 Jan Hubicka + + * ipa-prop.c (try_make_edge_direct_simple_call): Do not special case + speculative edges. + +2013-09-08 Jan Hubicka + + * ipa.c (walk_polymorphic_call_targets): Fix redirection before IPA + summary generation. + +2013-09-08 Jeff Law + + PR bootstrap/58340 + * tree-ssa-threadedge.c (thread_across_edge): Fix initialization + of 'found'. + +2013-09-08 Andi Kleen + + * tree-inline.c (estimate_num_insns): Limit asm cost to 1000. + +2013-09-08 Jan Hubicka + + * ipa.c (walk_polymorphic_call_targets): Fix inliner summary update. + +2013-09-08 Richard Sandiford + + * ira.c (update_equiv_regs): Only call set_paradoxical_subreg + for non-debug insns. + * lra.c (new_insn_reg): Take the containing insn as a parameter. + Only modify lra_reg_info[].biggest_mode if it's non-debug insn. + (collect_non_operand_hard_regs, add_regs_to_insn_regno_info): Update + accordingly. + +2013-09-08 Jan Hubicka + + * cgraphunit.c (walk_polymorphic_call_targets): Permit 0 possible + targets and devirtualize to BUILT_IN_UNREACHABLE. + * timevar.def (TV_IPA_UNREACHABLE): New timevar. + * ipa.c (walk_polymorphic_call_targets): New function. + (symtab_remove_unreachable_nodes): Use it; do not keep all virtual + functions; use the new timevar. + * ipa-devirt.c (maybe_record_node): Do not insert static nodes that + was removed from the program. + (record_binfo): If BINFO corresponds to an anonymous namespace, we may + not consider it in the walk when its vtable is dead. + (possible_polymorphic_call_targets_1): Pass anonymous flag to + record_binfo. + (devirt_variable_node_removal_hook): New function. + (possible_polymorphic_call_targets): Also register + devirt_variable_node_removal_hook. + (ipa_devirt): Do not do non-speculative devirtualization. + (gate_ipa_devirt): One execute if devirtualizing speculatively. + +2013-09-08 Jan Hubicka + + * cgraph.h (varpool_node_hook, varpool_node_hook_list, + varpool_add_node_removal_hook, varpool_add_variable_insertion_hook, + varpool_remove_variable_insertion_hook): Declare. + * varpool.c (varpool_node_hook_list): New structure. + (first_varpool_node_removal_hook, + first_varpool_variable_insertion_hook): New variables. + (varpool_add_node_removal_hook, varpool_remove_node_removal_hook, + varpool_call_node_removal_hooks, varpool_add_variable_insertion_hook, + varpool_remove_variable_insertion_hook, + varpool_call_variable_insertion_hooks): New functions. + (varpool_remove_node): Use it. + +2013-09-08 Paolo Carlini + + PR c++/54941 + * diagnostic.c (diagnostic_build_prefix): When s.file is + "" don't output line and column numbers. + +2013-09-06 Jan Hubicka + + * cgraphunit.c (expand_thunk): Get body before touching arguments. + * lto-streamer-out.c: Stream thunks, too. + * lto-streamer-in.c (input_function): Pop cfun here + (lto_read_body): Instead of here. + +2013-09-06 Caroline Tice + + * doc/install.texi: Add documentation for the --enable-vtable-verify + and the --disable-libvtv configure options. + +2013-09-06 Jeff Law + + * tree-ssa-dom.c (cprop_into_successor_phis): Also propagate + edge implied equivalences into successor phis. + +2013-09-06 Joern Rennecke + + * resource.c (mark_referenced_resources): Handle COND_EXEC. + +2013-09-06 Claudiu Zissulescu + + * resource.c (mark_target_live_regs): Compute resources taking + into account if a call is predicated or not. + +2013-09-06 Eric Botcazou + + * toplev.c (output_stack_usage): Be prepared for suffixes created by + the compiler in the function names. + +2013-09-06 Jan Hubicka + + PR middle-end/58094 + * ipa-inline.c (has_caller_p): New function. + (want_inline_function_to_all_callers_p): Use it. + (sum_callers, inline_to_all_callers): Break out from ... + (ipa_inline): ... here. + +2013-09-06 Jan Hubicka + + * config/i386/i386.c (ix86_hard_regno_mode_ok): AVX modes are valid + only when AVX is enabled. + +2013-09-06 James Greenhalgh + + * config/aarch64/aarch64.md + (*movtf_aarch64): Use neon_dm_2 as type where v8type + is fpsimd_2. + (load_pair): Likewise. + (store_pair): Likewise. + +2013-09-06 James Greenhalgh + + * config/arm/types.md (type): Add "mrs" type. + * config/aarch64/aarch64.md + (aarch64_load_tp_hard): Make type "mrs". + * config/arm/arm.md + (load_tp_hard): Make type "mrs". + * config/arm/cortex-a15.md: Update with new attributes. + * config/arm/cortex-a5.md: Update with new attributes. + * config/arm/cortex-a53.md: Update with new attributes. + * config/arm/cortex-a7.md: Update with new attributes. + * config/arm/cortex-a8.md: Update with new attributes. + * config/arm/cortex-a9.md: Update with new attributes. + * config/arm/cortex-m4.md: Update with new attributes. + * config/arm/cortex-r4.md: Update with new attributes. + * config/arm/fa526.md: Update with new attributes. + * config/arm/fa606te.md: Update with new attributes. + * config/arm/fa626te.md: Update with new attributes. + * config/arm/fa726te.md: Update with new attributes. + +2013-09-06 James Greenhalgh + + * config/aarch64/aarch64.md + (*movti_aarch64): Use "multiple" for type where v8type is "move2". + (*movtf_aarch64): Likewise. + * config/arm/arm.md + (thumb1_movdi_insn): Use "multiple" for type where more than one + instruction is used for a move. + (*arm32_movhf): Likewise. + (*thumb_movdf_insn): Likewise. + +2013-09-06 James Greenhalgh + + * config/arm/types.md (type): Rename fcpys to fmov. + * config/arm/vfp.md + (*arm_movsi_vfp): Rename type fcpys as fmov. + (*thumb2_movsi_vfp): Likewise + (*movhf_vfp_neon): Likewise + (*movhf_vfp): Likewise + (*movsf_vfp): Likewise + (*thumb2_movsf_vfp): Likewise + (*movsfcc_vfp): Likewise + (*thumb2_movsfcc_vfp): Likewise + * config/aarch64/aarch64-simd.md + (move_lo_quad_): Replace type mov_reg with fmovs. + * config/aarch64/aarch64.md + (*movsi_aarch64): Replace type mov_reg with fmovs. + (*movdi_aarch64): Likewise + (*movsf_aarch64): Likewise + (*movdf_aarch64): Likewise + * config/arm/arm.c + (cortexa7_older_only): Rename TYPE_FCPYS to TYPE_FMOV. + * config/arm/iwmmxt.md + (*iwmmxt_movsi_insn): Rename type fcpys as fmov. + * config/arm/arm1020e.md: Update with new attributes. + * config/arm/cortex-a15-neon.md: Update with new attributes. + * config/arm/cortex-a5.md: Update with new attributes. + * config/arm/cortex-a53.md: Update with new attributes. + * config/arm/cortex-a7.md: Update with new attributes. + * config/arm/cortex-a8-neon.md: Update with new attributes. + * config/arm/cortex-a9.md: Update with new attributes. + * config/arm/cortex-m4-fpu.md: Update with new attributes. + * config/arm/cortex-r4f.md: Update with new attributes. + * config/arm/marvell-pj4.md: Update with new attributes. + * config/arm/vfp11.md: Update with new attributes. + +2013-09-06 James Greenhalgh + + * config/aarch64/aarch64.md + (*madd): Fix type attribute. + (*maddsi_uxtw): Likewise. + (*msub): Likewise. + (*msubsi_uxtw): Likewise. + (maddsidi4): Likewise. + (msubsidi4): Likewise. + +2013-09-06 James Greenhalgh + + * config/arm/types.md: Split fdiv as fsqrt, fdiv. + * config/arm/arm.md (core_cycles): Remove fdiv. + * config/arm/vfp.md: + (*sqrtsf2_vfp): Update for attribute changes. + (*sqrtdf2_vfp): Likewise. + * config/aarch64/aarch64.md: + (sqrt2): Update for attribute changes. + * config/arm/arm1020e.md: Update with new attributes. + * config/arm/cortex-a15-neon.md: Update with new attributes. + * config/arm/cortex-a5.md: Update with new attributes. + * config/arm/cortex-a53.md: Update with new attributes. + * config/arm/cortex-a7.md: Update with new attributes. + * config/arm/cortex-a8-neon.md: Update with new attributes. + * config/arm/cortex-a9.md: Update with new attributes. + * config/arm/cortex-m4-fpu.md: Update with new attributes. + * config/arm/cortex-r4f.md: Update with new attributes. + * config/arm/marvell-pj4.md: Update with new attributes. + * config/arm/vfp11.md: Update with new attributes. + +2013-09-06 James Greenhalgh + + * config/arm/types.md + (type): Split f_cvt as f_cvt, f_cvtf2i, f_cvti2f. + * config/aarch64/aarch64.md + (l2): Update with + new attributes. + (fix_trunc2): Likewise. + (fixuns_trunc2): Likewise. + (float2): Likewise. + * config/arm/vfp.md + (*truncsisf2_vfp): Update with new attributes. + (*truncsidf2_vfp): Likewise. + (fixuns_truncsfsi2): Likewise. + (fixuns_truncdfsi2): Likewise. + (*floatsisf2_vfp): Likewise. + (*floatsidf2_vfp): Likewise. + (floatunssisf2): Likewise. + (floatunssidf2): Likewise. + (*combine_vcvt_f32_): Likewise. + (*combine_vcvt_f64_): Likewise. + * config/arm/arm1020e.md: Update with new attributes. + * config/arm/cortex-a15-neon.md: Update with new attributes. + * config/arm/cortex-a5.md: Update with new attributes. + * config/arm/cortex-a53.md: Update with new attributes. + * config/arm/cortex-a7.md: Update with new attributes. + * config/arm/cortex-a8-neon.md: Update with new attributes. + * config/arm/cortex-a9.md: Update with new attributes. + * config/arm/cortex-m4-fpu.md: Update with new attributes. + * config/arm/cortex-r4f.md: Update with new attributes. + * config/arm/marvell-pj4.md: Update with new attributes. + * config/arm/vfp11.md: Update with new attributes. + +2013-09-06 James Greenhalgh + + * config/aarch64/arm_neon.h + (vqtbl<1,2,3,4>_s8): Fix control vector parameter type. + (vqtbx<1,2,3,4>_s8): Likewise. + +2013-09-06 James Greenhalgh + + * config/arm/types.md: Add "no_insn", "multiple" and "untyped" types. + * config/arm/arm-fixed.md: Add type attribute to all insn patterns. + (add3): Add type attribute. + (add3): Likewise. + (usadd3): Likewise. + (ssadd3): Likewise. + (sub3): Likewise. + (sub3): Likewise. + (ussub3): Likewise. + (sssub3): Likewise. + (ssmulsa3): Likewise. + (usmulusa3): Likewise. + (arm_usatsihi): Likewise. + * config/arm/vfp.md + (*movdi_vfp): Add types for all instructions. + (*movdi_vfp_cortexa8): Likewise. + (*movhf_vfp_neon): Likewise. + (*movhf_vfp): Likewise. + (*movdf_vfp): Likewise. + (*thumb2_movdf_vfp): Likewise. + (*thumb2_movdfcc_vfp): Likewise. + * config/arm/arm.md: Add type attribute to all insn patterns. + (*thumb1_adddi3): Add type attribute. + (*arm_adddi3): Likewise. + (*adddi_sesidi_di): Likewise. + (*adddi_zesidi_di): Likewise. + (*thumb1_addsi3): Likewise. + (addsi3_compare0): Likewise. + (*addsi3_compare0_scratch): Likewise. + (*compare_negsi_si): Likewise. + (cmpsi2_addneg): Likewise. + (*addsi3_carryin_): Likewise. + (*addsi3_carryin_alt2_): Likewise. + (*addsi3_carryin_clobercc_): Likewise. + (*subsi3_carryin): Likewise. + (*subsi3_carryin_const): Likewise. + (*subsi3_carryin_compare): Likewise. + (*subsi3_carryin_compare_const): Likewise. + (*arm_subdi3): Likewise. + (*thumb_subdi3): Likewise. + (*subdi_di_zesidi): Likewise. + (*subdi_di_sesidi): Likewise. + (*subdi_zesidi_di): Likewise. + (*subdi_sesidi_di): Likewise. + (*subdi_zesidi_ze): Likewise. + (thumb1_subsi3_insn): Likewise. + (*arm_subsi3_insn): Likewise. + (*anddi3_insn): Likewise. + (*anddi_zesidi_di): Likewise. + (*anddi_sesdi_di): Likewise. + (*ne_zeroextracts): Likewise. + (*ne_zeroextracts): Likewise. + (*ite_ne_zeroextr): Likewise. + (*ite_ne_zeroextr): Likewise. + (*anddi_notdi_di): Likewise. + (*anddi_notzesidi): Likewise. + (*anddi_notsesidi): Likewise. + (andsi_notsi_si): Likewise. + (thumb1_bicsi3): Likewise. + (*iordi3_insn): Likewise. + (*iordi_zesidi_di): Likewise. + (*iordi_sesidi_di): Likewise. + (*thumb1_iorsi3_insn): Likewise. + (*xordi3_insn): Likewise. + (*xordi_zesidi_di): Likewise. + (*xordi_sesidi_di): Likewise. + (*arm_xorsi3): Likewise. + (*andsi_iorsi3_no): Likewise. + (*smax_0): Likewise. + (*smax_m1): Likewise. + (*arm_smax_insn): Likewise. + (*smin_0): Likewise. + (*arm_smin_insn): Likewise. + (*arm_umaxsi3): Likewise. + (*arm_uminsi3): Likewise. + (*minmax_arithsi): Likewise. + (*minmax_arithsi_): Likewise. + (*satsi_): Likewise. + (arm_ashldi3_1bit): Likewise. + (arm_ashrdi3_1bit): Likewise. + (arm_lshrdi3_1bit): Likewise. + (*arm_negdi2): Likewise. + (*thumb1_negdi2): Likewise. + (*arm_negsi2): Likewise. + (*thumb1_negsi2): Likewise. + (*negdi_extendsid): Likewise. + (*negdi_zero_extend): Likewise. + (*arm_abssi2): Likewise. + (*thumb1_abssi2): Likewise. + (*arm_neg_abssi2): Likewise. + (*thumb1_neg_abss): Likewise. + (one_cmpldi2): Likewise. + (extenddi2): Likewise. + (*compareqi_eq0): Likewise. + (*arm_extendhisi2addsi): Likewise. + (*arm_movdi): Likewise. + (*thumb1_movdi_insn): Likewise. + (*arm_movt): Likewise. + (*thumb1_movsi_insn): Likewise. + (pic_add_dot_plus_four): Likewise. + (pic_add_dot_plus_eight): Likewise. + (tls_load_dot_plus_eight): Likewise. + (*thumb1_movhi_insn): Likewise. + (*thumb1_movsf_insn): Likewise. + (*movdf_soft_insn): Likewise. + (*thumb_movdf_insn): Likewise. + (cbranchsi4_insn): Likewise. + (cbranchsi4_scratch): Likewise. + (*negated_cbranchsi4): Likewise. + (*tbit_cbranch): Likewise. + (*tlobits_cbranch): Likewise. + (*tstsi3_cbranch): Likewise. + (*cbranchne_decr1): Likewise. + (*addsi3_cbranch): Likewise. + (*addsi3_cbranch_scratch): Likewise. + (*arm_cmpdi_insn): Likewise. + (*arm_cmpdi_unsig): Likewise. + (*arm_cmpdi_zero): Likewise. + (*thumb_cmpdi_zero): Likewise. + (*deleted_compare): Likewise. + (*mov_scc): Likewise. + (*mov_negscc): Likewise. + (*mov_notscc): Likewise. + (*cstoresi_eq0_thumb1_insn): Likewise. + (cstoresi_nltu_thumb1): Likewise. + (cstoresi_ltu_thu): Likewise. + (thumb1_addsi3_addgeu): Likewise. + (*arm_jump): Likewise. + (*thumb_jump): Likewise. + (*check_arch2): Likewise. + (arm_casesi_internal): Likewise. + (thumb1_casesi_dispatch): Likewise. + (*arm_indirect_jump): Likewise. + (*thumb1_indirect_jump): Likewise. + (nop): Likewise. + (*and_scc): Likewise. + (*ior_scc): Likewise. + (*compare_scc): Likewise. + (*cond_move): Likewise. + (*cond_arith): Likewise. + (*cond_sub): Likewise. + (*cmp_ite0): Likewise. + (*cmp_ite1): Likewise. + (*cmp_and): Likewise. + (*cmp_ior): Likewise. + (*ior_scc_scc): Likewise. + (*ior_scc_scc_cmp): Likewise. + (*and_scc_scc): Likewise. + (*and_scc_scc_cmp): Likewise. + (*and_scc_scc_nod): Likewise. + (*negscc): Likewise. + (movcond_addsi): Likewise. + (movcond): Likewise. + (*ifcompare_plus_move): Likewise. + (*if_plus_move): Likewise. + (*ifcompare_move_plus): Likewise. + (*if_move_plus): Likewise. + (*ifcompare_arith_arith): Likewise. + (*if_arith_arith): Likewise. + (*ifcompare_arith_move): Likewise. + (*if_arith_move): Likewise. + (*ifcompare_move_arith): Likewise. + (*if_move_arith): Likewise. + (*ifcompare_move_not): Likewise. + (*if_move_not): Likewise. + (*ifcompare_not_move): Likewise. + (*if_not_move): Likewise. + (*ifcompare_shift_move): Likewise. + (*if_shift_move): Likewise. + (*ifcompare_move_shift): Likewise. + (*if_move_shift): Likewise. + (*ifcompare_shift_shift): Likewise. + (*ifcompare_not_arith): Likewise. + (*ifcompare_arith_not): Likewise. + (*if_arith_not): Likewise. + (*ifcompare_neg_move): Likewise. + (*if_neg_move): Likewise. + (*ifcompare_move_neg): Likewise. + (*if_move_neg): Likewise. + (prologue_thumb1_interwork): Likewise. + (*cond_move_not): Likewise. + (*sign_extract_onebit): Likewise. + (*not_signextract_onebit): Likewise. + (stack_tie): Likewise. + (align_4): Likewise. + (align_8): Likewise. + (consttable_end): Likewise. + (consttable_1): Likewise. + (consttable_2): Likewise. + (consttable_4): Likewise. + (consttable_8): Likewise. + (consttable_16): Likewise. + (*thumb1_tablejump): Likewise. + (prefetch): Likewise. + (force_register_use): Likewise. + (thumb_eh_return): Likewise. + (load_tp_hard): Likewise. + (load_tp_soft): Likewise. + (tlscall): Likewise. + (*arm_movtas_ze): Likewise. + (*arm_rev): Likewise. + (*arm_revsh): Likewise. + (*arm_rev16): Likewise. + * config/arm/thumb2.md + (*thumb2_smaxsi3): Likewise. + (*thumb2_sminsi3): Likewise. + (*thumb32_umaxsi3): Likewise. + (*thumb2_uminsi3): Likewise. + (*thumb2_negdi2): Likewise. + (*thumb2_abssi2): Likewise. + (*thumb2_neg_abss): Likewise. + (*thumb2_movsi_insn): Likewise. + (tls_load_dot_plus_four): Likewise. + (*thumb2_movhi_insn): Likewise. + (*thumb2_mov_scc): Likewise. + (*thumb2_mov_negs): Likewise. + (*thumb2_mov_negs): Likewise. + (*thumb2_mov_nots): Likewise. + (*thumb2_mov_nots): Likewise. + (*thumb2_movsicc_): Likewise. + (*thumb2_movsfcc_soft_insn): Likewise. + (*thumb2_indirect_jump): Likewise. + (*thumb2_and_scc): Likewise. + (*thumb2_ior_scc): Likewise. + (*thumb2_ior_scc_strict_it): Likewise. + (*thumb2_cond_move): Likewise. + (*thumb2_cond_arith): Likewise. + (*thumb2_cond_ari): Likewise. + (*thumb2_cond_sub): Likewise. + (*thumb2_negscc): Likewise. + (*thumb2_movcond): Likewise. + (thumb2_casesi_internal): Likewise. + (thumb2_casesi_internal_pic): Likewise. + (*thumb2_alusi3_short): Likewise. + (*thumb2_mov_shortim): Likewise. + (*thumb2_addsi_short): Likewise. + (*thumb2_subsi_short): Likewise. + (thumb2_addsi3_compare0): Likewise. + (*thumb2_cbz): Likewise. + (*thumb2_cbnz): Likewise. + (*thumb2_one_cmplsi2_short): Likewise. + (*thumb2_negsi2_short): Likewise. + (*orsi_notsi_si): Likewise. + * config/arm/arm1020e.md: Update with new attributes. + * config/arm/arm1026ejs.md: Update with new attributes. + * config/arm/arm1136jfs.md: Update with new attributes. + * config/arm/arm926ejs.md: Update with new attributes. + * config/arm/cortex-a15.md: Update with new attributes. + * config/arm/cortex-a5.md: Update with new attributes. + * config/arm/cortex-a53.md: Update with new attributes. + * config/arm/cortex-a7.md: Update with new attributes. + * config/arm/cortex-a8.md: Update with new attributes. + * config/arm/cortex-a9.md: Update with new attributes. + * config/arm/cortex-m4.md: Update with new attributes. + * config/arm/cortex-r4.md: Update with new attributes. + * config/arm/fa526.md: Update with new attributes. + * config/arm/fa606te.md: Update with new attributes. + * config/arm/fa626te.md: Update with new attributes. + * config/arm/fa726te.md: Update with new attributes. + +2013-09-06 James Greenhalgh + + * config/aarch64/aarch64-simd.md + (aarch64_sqdmll_n_internal): Use + iterator to ensure correct register choice. + (aarch64_sqdmll2_n_internal): Likewise. + (aarch64_sqdmull_n): Likewise. + (aarch64_sqdmull2_n_internal): Likewise. + * config/aarch64/arm_neon.h + (vml_lane_16): Use 'x' constraint for element vector. + (vml_n_16): Likewise. + (vmll_high_lane_16): Likewise. + (vmll_high_n_16): Likewise. + (vmll_lane_16): Likewise. + (vmll_n_16): Likewise. + (vmul_lane_16): Likewise. + (vmul_n_16): Likewise. + (vmull_lane_16): Likewise. + (vmull_n_16): Likewise. + (vmull_high_lane_16): Likewise. + (vmull_high_n_16): Likewise. + (vqrdmulh_n_s16): Likewise. + +2013-09-06 Tejas Belagod + + * config/aarch64/arm_neon.h: Fix all vdup intrinsics to + have the correct lane parameter. + +2013-09-06 Richard Biener + + * cfganal.c (control_dependences::~control_dependences): + Properly free all of the vector. + +2013-09-06 Kirill Yukhin + + PR target/58269 + * config/i386/i386.c (ix86_conditional_register_usage): + Proper initialize extended SSE registers. + +2013-09-06 Jan Hubicka + + PR tree-optimization/58311 + * ipa-devirt.c (gate_ipa_devirt): Only execute when optimizing. + +2013-09-06 Jan Hubicka + + * Makefile.in (tree-sra.o): Update dependencies. + * tree-sra.c: Include ipa-utils.h + (scan_function): Use recursive_call_p. + (has_caller_p): New function. + (cgraph_for_node_and_aliases): Count also callers of aliases. + +2013-09-06 Jan Hubicka + + PR middle-end/58094 + * cgraph.h (symtab_semantically_equivalent_p): Declare. + * tree-tailcall.c: Include ipa-utils.h. + (find_tail_calls): Use it. + * ipa-pure-const.c (check_call): Likewise. + * ipa-utils.c (recursive_call_p): New function. + * ipa-utils.h (recursive_call_p): Dclare. + * symtab.c (symtab_nonoverwritable_alias): Fix formatting. + (symtab_semantically_equivalent_p): New function. + * Makefile.in (tree-tailcall.o): Update dependencies. + +2013-09-06 Eric Botcazou + + * ipa-split.c (split_function): Set DECL_NO_INLINE_WARNING_P on the + non-inlinable part. + +2013-09-06 Richard Biener + + * lto-streamer.h (lto_global_var_decls): Remove. + * Makefile.in (OBJS): Remove lto-symtab.o. + (lto-symtab.o): Remove. + (GTFILES): Remove lto-symtab.c + * lto-symtab.c: Move to lto/ + +2013-09-06 Andreas Krebbel + + * config/s390/s390.md (UNSPEC_FPINT_FLOOR, UNSPEC_FPINT_BTRUNC) + (UNSPEC_FPINT_ROUND, UNSPEC_FPINT_CEIL, UNSPEC_FPINT_NEARBYINT) + (UNSPEC_FPINT_RINT): New constant definitions. + (FPINT, fpint_name, fpint_roundingmode): New integer iterator + definition with 2 attributes. + ("2", "rint2") + ("2", "rint2"): New pattern + definitions. + +2013-09-06 Andreas Krebbel + + * config/s390/s390.md: Add "bcr_flush" value to mnemonic attribute. + ("mem_thread_fence_1"): Use bcr 14,0 for z196 and later. + Set the mnemonic attribute to "bcr_flush". Set the "z196prop" + attribute to "z196_alone". + * config/s390/2827.md: Add "bcr_flush" to "ooo_groupalone" and + "zEC12_simple". + +2013-09-06 Richard Biener + + * basic-block.h (class control_dependences): New. + * tree-ssa-dce.c (control_dependence_map): Remove. + (cd): New global. + (EXECUTE_IF_CONTROL_DEPENDENT): Remove. + (set_control_dependence_map_bit, clear_control_dependence_bitmap, + find_pdom, find_control_dependence, find_all_control_dependences): + Move to cfganal.c. + (mark_control_dependent_edges_necessary, + find_obviously_necessary_stmts, propagate_necessity, tree_dce_init, + tree_dce_done, perform_tree_ssa_dce): Adjust. + * cfganal.c (set_control_dependence_map_bit, + clear_control_dependence_bitmap, find_pdom, find_control_dependence, + find_all_control_dependences): Move from tree-ssa-dce.c and + implement as methods of control_dependences class. + (control_dependences::control_dependences): New. + (control_dependences::~control_dependences): Likewise. + (control_dependences::get_edges_dependent_on): Likewise. + (control_dependences::get_edge): Likewise. + +2013-09-04 Jan Hubicka + + * tree.c (types_same_for_odr): Drop overactive check. + * ipa-devirt.c (hash_type_name): Likewise. + +2013-09-04 Jan Hubicka + + * cgraphunit.c (walk_polymorphic_call_targets): Break out from ... + (analyze_functions): ... here. + +2013-09-04 Jan Hubicka + + PR middle-end/58201 + * cgraphunit.c (analyze_functions): Clear AUX fields + after processing; initialize assembler name has. + +2013-09-05 Jeff Law + + * tree-ssa-threadedge.c (thread_around_empty_blocks): Renamed + from thread_around_empty_block. Record threading path into PATH. + Recurse if threading through the initial block is successful. + (thread_across_edge): Corresponding changes to slightly simplify. + +2013-09-05 James Greenhalgh + + * config/aarch64/aarch64.md + (type): Remove frecpe, frecps, frecpx. + (aarch64_frecp): Move to aarch64-simd.md, + fix to be a TARGET_SIMD instruction. + (aarch64_frecps): Remove. + * config/aarch64/aarch64-simd.md + (aarch64_frecp): New, moved from aarch64.md + (aarch64_frecps): Handle all float/vector of float modes. + +2013-09-05 James Greenhalgh + Sofiane Naci + + * config/arm/types.md (define_attr "type"): Expand "arlo_imm" + into "adr", "alu_imm", "alus_imm", "logic_imm", "logics_imm". + Expand "arlo_reg" into "adc_reg", "adc_imm", "adcs_reg", "adcs_imm", + "alu_ext", "alu_reg", "alus_ext", "alus_reg", "bfm", "csel", + "logic_reg", "logics_reg", "rev". Expand "arlo_shift" into + "alu_shift_imm", "alus_shift_imm", "logic_shift_imm", + "logics_shift_imm". Expand "arlo_shift_reg" into "alu_shift_reg", + "alus_shift_reg", "logic_shift_reg", "logics_shift_reg". Expand "clz" + into "clz, "rbit". Rename "shift" to "shift_imm". + * config/arm/arm.md (define_attr "core_cycles"): Update for attribute + changes. Update for attribute changes all occurrences of arlo_* and + shift* types. + * config/arm/arm-fixed.md: Update for attribute changes + all occurrences of arlo_* types. + * config/arm/thumb2.md: Update for attribute changes all occurrences + of arlo_* types. + * config/arm/arm.c (xscale_sched_adjust_cost): (rtx insn, rtx + (cortexa7_older_only): Likewise. + (cortexa7_younger): Likewise. + * config/arm/arm1020e.md (1020alu_op): Update for attribute changes. + (1020alu_shift_op): Likewise. + (1020alu_shift_reg_op): Likewise. + * config/arm/arm1026ejs.md (alu_op): Update for attribute changes. + (alu_shift_op): Likewise. + (alu_shift_reg_op): Likewise. + * config/arm/arm1136jfs.md (11_alu_op): Update for attribute changes. + (11_alu_shift_op): Likewise. + (11_alu_shift_reg_op): Likewise. + * config/arm/arm926ejs.md (9_alu_op): Update for attribute changes. + (9_alu_shift_reg_op): Likewise. + * config/arm/cortex-a15.md (cortex_a15_alu): Update for + attribute changes. + (cortex_a15_alu_shift): Likewise. + (cortex_a15_alu_shift_reg): Likewise. + * config/arm/cortex-a5.md (cortex_a5_alu): Update for + attribute changes. + (cortex_a5_alu_shift): Likewise. + * config/arm/cortex-a53.md (cortex_a53_alu): Update for + attribute changes. + (cortex_a53_alu_shift): Likewise. + * config/arm/cortex-a7.md (cortex_a7_alu_imm): Update for + attribute changes. + (cortex_a7_alu_reg): Likewise. + (cortex_a7_alu_shift): Likewise. + * config/arm/cortex-a8.md (cortex_a8_alu): Update for + attribute changes. + (cortex_a8_alu_shift): Likewise. + (cortex_a8_alu_shift_reg): Likewise. + * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute changes. + (cortex_a9_dp_shift): Likewise. + * config/arm/cortex-m4.md (cortex_m4_alu): Update for + attribute changes. + * config/arm/cortex-r4.md + (cortex_r4_alu): Update for attribute changes. + (cortex_r4_mov): Likewise. + (cortex_r4_alu_shift_reg): Likewise. + * config/arm/fa526.md (526_alu_op): Update for attribute changes. + (526_alu_shift_op): Likewise. + * config/arm/fa606te.md (606te_alu_op): Update for attribute changes. + * config/arm/fa626te.md (626te_alu_op): Update for attribute changes. + (626te_alu_shift_op): Likewise. + * config/arm/fa726te.md (726te_alu_op): Update for attribute changes. + (726te_alu_shift_op): Likewise. + (726te_alu_shift_reg_op): Likewise. + * config/arm/fmp626.md (mp626_alu_op): Update for attribute changes. + (mp626_alu_shift_op): Likewise. + * config/arm/marvell-pj4.md (pj4_alu): Update for attribute changes. + (pj4_alu_conds): Likewise. + (pj4_shift): Likewise. + (pj4_shift_conds): Likewise. + (pj4_alu_shift): Likewise. + (pj4_alu_shift_conds): Likewise. + * config/aarch64/aarch64.md: Update for attribute change + all occurrences of arlo_* and shift* types. + +2013-09-05 Mike Stump + + * tree.h: Move documentation for tree_function_decl to tree-core.h + with the declaration. + +2013-09-05 Peter Bergner + + PR target/58139 + * reginfo.c (choose_hard_reg_mode): Scan through all mode classes + looking for widest mode. + +2013-09-05 Eric Botcazou + + * config.gcc (*-*-vxworks*): Do not override an existing extra_objs. + +2013-09-05 Richard Biener + + PR tree-optimization/58137 + * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): + Do not create vectors of pointers. + * tree-vect-loop.c (get_initial_def_for_induction): Use proper + types for the components of the vector initializer. + * tree-cfg.c (verify_gimple_assign_binary): Remove special-casing + allowing pointer vectors with PLUS_EXPR/MINUS_EXPR. + +2013-09-05 Martin Jambor + + * ipa-prop.c (remove_described_reference): Accept missing references, + return false if that hppens, otherwise return true. + (cgraph_node_for_jfunc): New function. + (try_decrement_rdesc_refcount): Likewise. + (try_make_edge_direct_simple_call): Use them. + (ipa_edge_removal_hook): Remove references from rdescs. + (ipa_edge_duplication_hook): Clone rdescs and their references + when the new edge has the same caller as the old one. + * cgraph.c (cgraph_resolve_speculation): Remove speculative + reference before removing any edges. + +2013-09-05 Richard Earnshaw + + * arm.c (thumb2_emit_strd_push): Rewrite to use pre-decrement on + initial store. + * thumb2.md (thumb2_storewb_parisi): New pattern. + +2013-09-05 Yufeng Zhang + + * config/aarch64/aarch64-option-extensions.def: Add + AARCH64_OPT_EXTENSION of 'crc'. + * config/aarch64/aarch64.h (AARCH64_FL_CRC): New define. + (AARCH64_ISA_CRC): Ditto. + * doc/invoke.texi (-march and -mcpu feature modifiers): Add + description of the CRC extension. + +2013-09-05 Alexander Ivchenko + + * config/rs6000/linux64.h: Define OPTION_BIONIC and OPTION_UCLIBC. + * config/rs6000/linux.h: Ditto. + * alpha/linux.h: Ditto. + * config/bfin/uclinux.h: Define TARGET_LIBC_HAS_FUNCTION as + no_c99_libc_has_function. + * config/c6x/uclinux-elf.h: Ditto. + * config/lm32/uclinux-elf.h: Ditto. + * config/m68k/uclinux.h: Ditto. + * config/moxie/uclinux.h: Ditto. + * config.gcc (bfin*-linux-uclibc*): Add t-linux-android to tmake_file. + (crisv32-*-linux*, cris-*-linux*): Ditto. + * config/bfin/bfin.c: Include "tm_p.h". + +2013-09-05 Richard Biener + + * tree-vect-loop.c (vect_analyze_loop_operations): Properly + check for a definition without a basic-block. + +2013-09-05 James Greenhalgh + Sofiane Naci + + * config/aarch64/aarch64.md + (*movti_aarch64): Rename r_2_f and f_2_r. + (*movsf_aarch64): Likewise. + (*movdf_aarch64): Likewise. + (*movtf_aarch64): Likewise. + (aarch64_movdi_low): Likewise. + (aarch64_movdi_high): Likewise. + (aarch64_movhigh_di): Likewise. + (aarch64_movlow_di): Likewise. + (aarch64_movtilow_tilow): Likewise. + * config/arm/arm.md (attribute "neon_type"): Delete. Move attribute + values to config/arm/types.md + (attribute "conds"): Update for attribute change. + (anddi3_insn): Likewise. + (iordi3_insn): Likewise. + (xordi3_insn): Likewise. + (one_cmpldi2): Likewise. + * config/arm/types.md (type): Add Neon types. + * config/arm/neon.md (neon_mov): Remove "neon_type" attribute, + use "type" attribute. + (movmisalign_neon_store): Likewise. + (movmisalign_neon_load): Likewise. + (vec_set_internal): Likewise. + (vec_setv2di_internal): Likewise. + (vec_extract): Likewise. + (vec_extractv2di): Likewise. + (add3_neon): Likewise. + (adddi3_neon): Likewise. + (sub3_neon): Likewise. + (subdi3_neon): Likewise. + (mul3_neon): Likewise. + (mul3add_neon): Likewise. + (mul3negadd_neon): Likewise. + (fma4)): Likewise. + (fma4_intrinsic): Likewise. + (fmsub4)): Likewise. + (fmsub4_intrinsic): Likewise. + (neon_vrint): Likewise. + (ior3): Likewise. + (and3): Likewise. + (anddi3_neon): Likewise. + (orn3_neon): Likewise. + (orndi3_neon): Likewise. + (bic3_neon): Likewise. + (bicdi3_neon): Likewise. + (xor3): Likewise. + (one_cmpl2): Likewise. + (abs2): Likewise. + (neg2): Likewise. + (umin3_neon): Likewise. + (umax3_neon): Likewise. + (smin3_neon): Likewise. + (smax3_neon): Likewise. + (vashl3): Likewise. + (vashr3_imm): Likewise. + (vlshr3_imm): Likewise. + (ashl3_signed): Likewise. + (ashl3_unsigned): Likewise. + (neon_load_count): Likewise. + (ashldi3_neon_noclobber): Likewise. + (signed_shift_di3_neon): Likewise. + (unsigned_shift_di3_neon): Likewise. + (ashrdi3_neon_imm_noclobber): Likewise. + (lshrdi3_neon_imm_noclobber): Likewise. + (widen_ssum3): Likewise. + (widen_usum3): Likewise. + (quad_halves_v4si): Likewise. + (quad_halves_v4sf): Likewise. + (quad_halves_v8hi): Likewise. + (quad_halves_v16qi): Likewise. + (reduc_splus_v2di): Likewise. + (neon_vpadd_internal): Likewise. + (neon_vpsmin): Likewise. + (neon_vpsmax): Likewise. + (neon_vpumin): Likewise. + (neon_vpumax): Likewise. + (ss_add_neon): Likewise. + (us_add_neon): Likewise. + (ss_sub_neon): Likewise. + (us_sub_neon): Likewise. + (neon_vadd_unspec): Likewise. + (neon_vaddl): Likewise. + (neon_vaddw): Likewise. + (neon_vhadd): Likewise. + (neon_vqadd): Likewise. + (neon_vaddhn): Likewise. + (neon_vmul): Likewise. + (neon_vmla): Likewise. + (neon_vmlal): Likewise. + (neon_vmls): Likewise. + (neon_vmlsl): Likewise. + (neon_vqdmulh): Likewise. + (neon_vqdmlal): Likewise. + (neon_vqdmlsl): Likewise. + (neon_vmull): Likewise. + (neon_vqdmull): Likewise. + (neon_vsub_unspec): Likewise. + (neon_vsubl): Likewise. + (neon_vsubw): Likewise. + (neon_vqsub): Likewise. + (neon_vhsub): Likewise. + (neon_vsubhn): Likewise. + (neon_vceq): Likewise. + (neon_vcge): Likewise. + (neon_vcgeu): Likewise. + (neon_vcgt): Likewise. + (neon_vcgtu): Likewise. + (neon_vcle): Likewise. + (neon_vclt): Likewise. + (neon_vcage): Likewise. + (neon_vcagt): Likewise. + (neon_vtst): Likewise. + (neon_vabd): Likewise. + (neon_vabdl): Likewise. + (neon_vaba): Likewise. + (neon_vabal): Likewise. + (neon_vmax): Likewise. + (neon_vmin): Likewise. + (neon_vpaddl): Likewise. + (neon_vpadal): Likewise. + (neon_vpmax): Likewise. + (neon_vpmin): Likewise. + (neon_vrecps): Likewise. + (neon_vrsqrts): Likewise. + (neon_vqabs): Likewise. + (neon_vqneg): Likewise. + (neon_vcls): Likewise. + (clz2): Likewise. + (popcount2): Likewise. + (neon_vrecpe): Likewise. + (neon_vrsqrte): Likewise. + (neon_vget_lane_sext_internal): Likewise. + (neon_vget_lane_zext_internal): Likewise. + (neon_vdup_n): Likewise. + (neon_vdup_nv2di): Likewise. + (neon_vdpu_lane_internal): Likewise. + (neon_vswp): Likewise. + (float2): Likewise. + (floatuns2): Likewise. + (fix_trunc)2): Likewise + (fixuns_trunc): Likewise. + (neon_vcvtv4sfv4hf): Likewise. + (neon_vcvtv4hfv4sf): Likewise. + (neon_vcvt_n): Likewise. + (neon_vmovn): Likewise. + (neon_vqmovn): Likewise. + (neon_vqmovun): Likewise. + (neon_vmovl): Likewise. + (neon_vmul_lane): Likewise. + (neon_vmull_lane): Likewise. + (neon_vqdmull_lane): Likewise. + (neon_vqdmulh_lane): Likewise. + (neon_vmla_lane): Likewise. + (neon_vmlal_lane): Likewise. + (neon_vqdmlal_lane): Likewise. + (neon_vmls_lane): Likewise. + (neon_vmlsl_lane): Likewise. + (neon_vqdmlsl_lane): Likewise. + (neon_vext): Likewise. + (neon_vrev64): Likewise. + (neon_vrev32): Likewise. + (neon_vrev16): Likewise. + (neon_vbsl_internal): Likewise. + (neon_vshl): Likewise. + (neon_vqshl): Likewise. + (neon_vshr_n): Likewise. + (neon_vshrn_n): Likewise. + (neon_vqshrn_n): Likewise. + (neon_vqshrun_n): Likewise. + (neon_vshl_n): Likewise. + (neon_vqshl_n): Likewise. + (neon_vqshlu_n): Likewise. + (neon_vshll_n): Likewise. + (neon_vsra_n): Likewise. + (neon_vsri_n): Likewise. + (neon_vsli_n): Likewise. + (neon_vtbl1v8qi): Likewise. + (neon_vtbl2v8qi): Likewise. + (neon_vtbl3v8qi): Likewise. + (neon_vtbl4v8qi): Likewise. + (neon_vtbx1v8qi): Likewise. + (neon_vtbx2v8qi): Likewise. + (neon_vtbx3v8qi): Likewise. + (neon_vtbx4v8qi): Likewise. + (neon_vtrn_internal): Likewise. + (neon_vzip_internal): Likewise. + (neon_vuzp_internal): Likewise. + (neon_vld1): Likewise. + (neon_vld1_lane): Likewise. + (neon_vld1_dup): Likewise. + (neon_vld1_dupv2di): Likewise. + (neon_vst1): Likewise. + (neon_vst1_lane): Likewise. + (neon_vld2): Likewise. + (neon_vld2_lane): Likewise. + (neon_vld2_dup): Likewise. + (neon_vst2): Likewise. + (neon_vst2_lane): Likewise. + (neon_vld3): Likewise. + (neon_vld3qa): Likewise. + (neon_vld3qb): Likewise. + (neon_vld3_lane): Likewise. + (neon_vld3_dup): Likewise. + (neon_vst3): Likewise. + (neon_vst3qa): Likewise. + (neon_vst3qb): Likewise. + (neon_vst3_lane): Likewise. + (neon_vld4): Likewise. + (neon_vld4qa): Likewise. + (neon_vld4qb): Likewise. + (neon_vld4_lane): Likewise. + (neon_vld4_dup): Likewise. + (neon_vst4): Likewise. + (neon_vst4qa): Likewise. + (neon_vst4qb): Likewise. + (neon_vst4_lane): Likewise. + (neon_vec_unpack_lo_): Likewise. + (neon_vec_unpack_hi_): Likewise. + (neon_vec_mult_lo_): Likewise. + (neon_vec_mult_hi_): Likewise. + (neon_vec_shiftl_): Likewise. + (neon_unpack_): Likewise. + (neon_vec_mult_): Likewise. + (vec_pack_trunc_): Likewise. + (neon_vec_pack_trunk_): Likewise. + (neon_vabd_2): Likewise. + (neon_vabd_3): Likewise. + * config/arm/vfp.md (arm_movsi_vfp): Update for attribute changes. + (thumb2_movsi_vfp): Likewise. + (movdi_vfp): Likewise. + (movdi_vfp_cortexa8): Likewise. + (movhf_vfp_neon): Likewise. + (movhf_vfp): Likewiwse. + (movsf_vfp): Likewiwse. + (thumb2_movsf_vfp): Likewiwse. + (movdf_vfp): Likewise. + (thumb2_movdf_vfp): Likewise. + (movsfcc_vfp): Likewise. + (thumb2_movsfcc_vfp): Likewise. + (movdfcc_vfp): Likewise. + (thumb2_movdfcc_vfp): Likewise. + * config/arm/arm.c (cortexa7_older_only): Update for attribute change. + * config/arm/arm1020e.md (v10_c2v): Update for attribute change. + (v10_v2c): Likewise. + * config/arm/cortex-a15-neon.md (cortex_a15_neon_int_1): Update for + attribute change. + (cortex_a15_neon_int_2): Likewise. + (cortex_a15_neon_int_3): Likewise. + (cortex_a15_neon_int_4): Likewise. + (cortex_a15_neon_int_5): Likewise. + (cortex_a15_neon_vqneg_vqabs): Likewise. + (cortex_a15_neon_vmov): Likewise. + (cortex_a15_neon_vaba): Likewise. + (cortex_a15_neon_vaba_qqq): Likewise. + (cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a15_neon_mul_qqq_8_16_32_ddd_32): Likewise. + (cortex_a15_neon_mul_qdd_64_32_long_qqd_16_ddd_32_\ + scalar_64_32_long_scalar): Likewise. + (cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a15_neon_mla_qqq_8_16): Likewise. + (cortex_a15_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\ + lotype_qdd_64_32_long): Likewise. + (cortex_a15_neon_mla_qqq_32_qqd_32_scalar): Likewise. + (cortex_a15_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. + (cortex_a15_neon_mul_qqd_32_scalar): Likewise. + (cortex_a15_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. + (cortex_a15_neon_shift_1): Likewise. + (cortex_a15_neon_shift_2): Likewise. + (cortex_a15_neon_shift_3): Likewise. + (cortex_a15_neon_vshl_ddd): Likewise. + (cortex_a15_neon_vqshl_vrshl_vqrshl_qqq): Likewise. + (cortex_a15_neon_vsra_vrsra): Likewise. + (cortex_a15_neon_fp_vadd_ddd_vabs_dd): Likewise. + (cortex_a15_neon_fp_vadd_qqq_vabs_qq): Likewise. + (cortex_a15_neon_fp_vmul_ddd): Likewise. + (cortex_a15_neon_fp_vmul_qqd): Likewise. + (cortex_a15_neon_fp_vmla_ddd): Likewise. + (cortex_a15_neon_fp_vmla_qqq): Likewise. + (cortex_a15_neon_fp_vmla_ddd_scalar): Likewise. + (cortex_a15_neon_fp_vmla_qqq_scalar): Likewise. + (cortex_a15_neon_fp_vrecps_vrsqrts_ddd): Likewise. + (cortex_a15_neon_fp_vrecps_vrsqrts_qqq): Likewise. + (cortex_a15_neon_bp_simple): Likewise. + (cortex_a15_neon_bp_2cycle): Likewise. + (cortex_a15_neon_bp_3cycle): Likewise. + (cortex_a15_neon_vld1_1_2_regs): Likewise. + (cortex_a15_neon_vld1_3_4_regs): Likewise. + (cortex_a15_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. + (cortex_a15_neon_vld2_4_regs): Likewise. + (cortex_a15_neon_vld3_vld4): Likewise. + (cortex_a15_neon_vst1_1_2_regs_vst2_2_regs): Likewise. + (cortex_a15_neon_vst1_3_4_regs): Likewise. + (cortex_a15_neon_vst2_4_regs_vst3_vst4): Likewise. + (cortex_a15_neon_vst3_vst4): Likewise. + (cortex_a15_neon_vld1_vld2_lane): Likewise. + (cortex_a15_neon_vld3_vld4_lane" 10 + (cortex_a15_neon_vst1_vst2_lane): Likewise. + (cortex_a15_neon_vst3_vst4_lane): Likewise. + (cortex_a15_neon_vld3_vld4_all_lanes): Likewise. + (cortex_a15_neon_ldm_2): Likewise.0 + (cortex_a15_neon_stm_2): Likewise. + (cortex_a15_neon_mcr): Likewise. + (cortex_a15_neon_mcr_2_mcrr): Likewise. + (cortex_a15_neon_mrc): Likewise. + (cortex_a15_neon_mrrc): Likewise. + * config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute + change. + (cortex_a15_alu_shift): Likewise. + (cortex_a15_alu_shift_reg): Likewise. + (cortex_a15_mult32): Likewise. + (cortex_a15_mult64): Likewise. + (cortex_a15_block): Likewise. + (cortex_a15_branch): Likewise. + (cortex_a15_load1): Likewise. + (cortex_a15_load3): Likewise. + (cortex_a15_store1): Likewise. + (cortex_a15_store3): Likewise. + (cortex_a15_call): Likewise. + * config/arm/cortex-a5.md (cortex_a5_r2f): Update for attribute change. + (cortex_a5_f2r): Likewise. + * config/arm/cortex-a53.md (cortex_a53_r2f): Update for attribute + change. + (cortex_a53_f2r): Likewise. + * config/arm/cortex-a7.md + (cortex_a7_branch): Update for attribute change. + (cortex_a7_call): Likewise. + (cortex_a7_alu_imm): Likewise. + (cortex_a7_alu_reg): Likewise. + (cortex_a7_alu_shift): Likewise. + (cortex_a7_mul): Likewise. + (cortex_a7_load1): Likewise. + (cortex_a7_store1): Likewise. + (cortex_a7_load2): Likewise. + (cortex_a7_store2): Likewise. + (cortex_a7_load3): Likewise. + (cortex_a7_store3): Likewise. + (cortex_a7_load4): Likewise. + (cortex_a7_store4): Likewise. + (cortex_a7_fpalu): Likewise. + (cortex_a7_fconst): Likewise. + (cortex_a7_fpmuls): Likewise. + (cortex_a7_neon_mul): Likewise. + (cortex_a7_fpmacs): Likewise. + (cortex_a7_neon_mla: Likewise. + (cortex_a7_fpmuld: Likewise. + (cortex_a7_fpmacd: Likewise. + (cortex_a7_fpfmad: Likewise. + (cortex_a7_fdivs: Likewise. + (cortex_a7_fdivd: Likewise. + (cortex_a7_r2f: Likewise. + (cortex_a7_f2r: Likewise. + (cortex_a7_f_flags: Likewise. + (cortex_a7_f_loads: Likewise. + (cortex_a7_f_loadd: Likewise. + (cortex_a7_f_stores: Likewise. + (cortex_a7_f_stored: Likewise. + (cortex_a7_neon): Likewise. + * config/arm/cortex-a8-neon.md + (cortex_a8_neon_mrc): Update for attribute change. + (cortex_a8_neon_mrrc): Likewise. + (cortex_a8_neon_int_1): Likewise. + (cortex_a8_neon_int_2): Likewise. + (cortex_a8_neon_int_3): Likewise. + (cortex_a8_neon_int_4): Likewise. + (cortex_a8_neon_int_5): Likewise. + (cortex_a8_neon_vqneg_vqabs): Likewise. + (cortex_a8_neon_vmov): Likewise. + (cortex_a8_neon_vaba): Likewise. + (cortex_a8_neon_vaba_qqq): Likewise. + (cortex_a8_neon_vsma): Likewise. + (cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a8_neon_mul_qqq_8_16_32_ddd_32): Likewise. + (cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_\ + long_scalar): Likewise. + (cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a8_neon_mla_qqq_8_16): Likewise. + (cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\ + long_scalar_qdd_64_32_long): Likewise. + (cortex_a8_neon_mla_qqq_32_qqd_32_scalar): Likewise. + (cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. + (cortex_a8_neon_mul_qqd_32_scalar): Likewise. + (cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. + (cortex_a8_neon_shift_1): Likewise. + (cortex_a8_neon_shift_2): Likewise. + (cortex_a8_neon_shift_3): Likewise. + (cortex_a8_neon_vshl_ddd): Likewise. + (cortex_a8_neon_vqshl_vrshl_vqrshl_qqq): Likewise. + (cortex_a8_neon_vsra_vrsra): Likewise. + (cortex_a8_neon_fp_vadd_ddd_vabs_dd): Likewise. + (cortex_a8_neon_fp_vadd_qqq_vabs_qq): Likewise. + (cortex_a8_neon_fp_vsum): Likewise. + (cortex_a8_neon_fp_vmul_ddd): Likewise. + (cortex_a8_neon_fp_vmul_qqd): Likewise. + (cortex_a8_neon_fp_vmla_ddd): Likewise. + (cortex_a8_neon_fp_vmla_qqq): Likewise. + (cortex_a8_neon_fp_vmla_ddd_scalar): Likewise. + (cortex_a8_neon_fp_vmla_qqq_scalar): Likewise. + (cortex_a8_neon_fp_vrecps_vrsqrts_ddd): Likewise. + (cortex_a8_neon_fp_vrecps_vrsqrts_qqq): Likewise. + (cortex_a8_neon_bp_simple): Likewise. + (cortex_a8_neon_bp_2cycle): Likewise. + (cortex_a8_neon_bp_3cycle): Likewise. + (cortex_a8_neon_ldr): Likewise. + (cortex_a8_neon_str): Likewise. + (cortex_a8_neon_vld1_1_2_regs): Likewise. + (cortex_a8_neon_vld1_3_4_regs): Likewise. + (cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. + (cortex_a8_neon_vld2_4_regs): Likewise. + (cortex_a8_neon_vld3_vld4): Likewise. + (cortex_a8_neon_vst1_1_2_regs_vst2_2_regs): Likewise. + (cortex_a8_neon_vst1_3_4_regs): Likewise. + (cortex_a8_neon_vst2_4_regs_vst3_vst4): Likewise. + (cortex_a8_neon_vst3_vst4): Likewise. + (cortex_a8_neon_vld1_vld2_lane): Likewise. + (cortex_a8_neon_vld3_vld4_lane): Likewise. + (cortex_a8_neon_vst1_vst2_lane): Likewise. + (cortex_a8_neon_vst3_vst4_lane): Likewise. + (cortex_a8_neon_vld3_vld4_all_lanes): Likewise. + (cortex_a8_neon_mcr): Likewise. + (cortex_a8_neon_mcr_2_mcrr): Likewise. + * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute change. + * config/arm/cortex-a9-neon.md (ca9_neon_mrc): Update for attribute + change. + (ca9_neon_mrrc): Likewise. + (cortex_a9_neon_int_1): Likewise. + (cortex_a9_neon_int_2): Likewise. + (cortex_a9_neon_int_3): Likewise. + (cortex_a9_neon_int_4): Likewise. + (cortex_a9_neon_int_5): Likewise. + (cortex_a9_neon_vqneg_vqabs): Likewise. + (cortex_a9_neon_vmov): Likewise. + (cortex_a9_neon_vaba): Likewise. + (cortex_a9_neon_vaba_qqq): Likewise. + (cortex_a9_neon_vsma): Likewise. + (cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a9_neon_mul_qqq_8_16_32_ddd_32): Likewise. + (cortex_a9_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_\ + long_scalar): Likewise. + (cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise. + (cortex_a9_neon_mla_qqq_8_16): Likewise. + (cortex_a9_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\ + long_scalar_qdd_64_32_long): Likewise. + (cortex_a9_neon_mla_qqq_32_qqd_32_scalar): Likewise. + (cortex_a9_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise. + (cortex_a9_neon_mul_qqd_32_scalar): Likewise. + (cortex_a9_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise. + (cortex_a9_neon_shift_1): Likewise. + (cortex_a9_neon_shift_2): Likewise. + (cortex_a9_neon_shift_3): Likewise. + (cortex_a9_neon_vshl_ddd): Likewise. + (cortex_a9_neon_vqshl_vrshl_vqrshl_qqq): Likewise. + (cortex_a9_neon_vsra_vrsra): Likewise. + (cortex_a9_neon_fp_vadd_ddd_vabs_dd): Likewise. + (cortex_a9_neon_fp_vadd_qqq_vabs_qq): Likewise. + (cortex_a9_neon_fp_vsum): Likewise. + (cortex_a9_neon_fp_vmul_ddd): Likewise. + (cortex_a9_neon_fp_vmul_qqd): Likewise. + (cortex_a9_neon_fp_vmla_ddd): Likewise. + (cortex_a9_neon_fp_vmla_qqq): Likewise. + (cortex_a9_neon_fp_vmla_ddd_scalar): Likewise. + (cortex_a9_neon_fp_vmla_qqq_scalar): Likewise. + (cortex_a9_neon_fp_vrecps_vrsqrts_ddd): Likewise. + (cortex_a9_neon_fp_vrecps_vrsqrts_qqq): Likewise. + (cortex_a9_neon_bp_simple): Likewise. + (cortex_a9_neon_bp_2cycle): Likewise. + (cortex_a9_neon_bp_3cycle): Likewise. + (cortex_a9_neon_ldr): Likewise. + (cortex_a9_neon_str): Likewise. + (cortex_a9_neon_vld1_1_2_regs): Likewise. + (cortex_a9_neon_vld1_3_4_regs): Likewise. + (cortex_a9_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise. + (cortex_a9_neon_vld2_4_regs): Likewise. + (cortex_a9_neon_vld3_vld4): Likewise. + (cortex_a9_neon_vst1_1_2_regs_vst2_2_regs): Likewise. + (cortex_a9_neon_vst1_3_4_regs): Likewise. + (cortex_a9_neon_vst2_4_regs_vst3_vst4): Likewise. + (cortex_a9_neon_vst3_vst4): Likewise. + (cortex_a9_neon_vld1_vld2_lane): Likewise. + (cortex_a9_neon_vld3_vld4_lane): Likewise. + (cortex_a9_neon_vst1_vst2_lane): Likewise. + (cortex_a9_neon_vst3_vst4_lane): Likewise. + (cortex_a9_neon_vld3_vld4_all_lanes): Likewise. + (cortex_a9_neon_mcr): Likewise. + (cortex_a9_neon_mcr_2_mcrr): Likewise. + * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute change. + (cortex_a9_fps): Likewise. + * config/arm/cortex-m4-fpu.md (cortex_m4_vmov_2): Update for attribute + change. + (cortex_m4_fmuls): Likewise. + * config/arm/cortex-r4f.md (cortex_r4_mcr): Update for attribute + change. + (cortex_r4_mrc): Likewise. + * config/arm/iterators.md: Update comment referring to neon_type. + * config/arm/iwmmxt.md (iwmmxt_arm_movdi): Update for attribute change. + (iwmmxt_movsi_insn): Likewise. + * config/arm/marvell-pj4.md (pj4_vfp_to_core): Update for + attribute change. + (pj4_core_to_vfp): Likewise. + * config/arm/neon-schedgen.ml (emit_insn_reservations): Update for + attribute change. + * config/arm/vfp11.md (vfp_fload): Update for attribute change. + (vfp_fstore): Likewise. + * doc/md.texi: Change references to neon_type to refer to type. + +2013-09-04 Dodji Seketeli + + * tree.h (DECL_BUILT_IN): Fix typo in comment. + +2013-09-04 David Edelsohn + + * config/rs6000/rs6000.h (ASM_OUTPUT_DEF_FROM_DECLS): Only emit + lglobl if not weak. + +2013-09-04 Easwaran Raman + + PR middle-end/57370 + * tree-ssa-reassoc.c (get_stmt_uid_with_default): New function, + (build_and_add_sum): Use it. + (appears_later_in_bb): Simplify code. + +2013-09-04 Teresa Johnson + + * dumpfile.c (dump_finish): Don't close stderr/stdout. + +2013-09-04 James Greenhalgh + + * config/aarch64/arm_neon.h (vaddvq_64): Fix return types. + +2013-09-04 Jan Hubicka + + * Makefile.in (ipa-devirt.o): Add dependency on diagnostic.h + * ipa-devirt.c: Include diganostic.h + (odr_type_d): Add types and types_set. + (hash_type_name): Work for types with vtables during LTO. + (odr_hasher::remove): Fix comment; destroy types_set. + (add_type_duplicate): New function, + (get_odr_type): Use it. + (dump_type_inheritance_graph): Dump type duplicates. + * ipa.c (symtab_remove_unreachable_nodes): Build type inheritance + graph. + * tree.c (types_same_for_odr): Give exact answers on types with + virtual tables. + +2013-09-04 Dodji Seketeli + + * tree.h (DECL_BUILT_IN, DECL_IS_BUILTIN): Add more comments + explaining their differences. + +2013-09-04 Sandeep Kumar Singh + + * config/rx/rx.h: Add option -mcpu for target variants RX100 and RX200. + +2013-09-03 Jeff Law + + * tree-ssa-threadedge.c (thread_across_edge): Record entire path + when not threading through a joiner block. Pass joiner/no joiner + state to register_jump_thread. + * tree-ssa-threadupdate.c (register_jump_thread): Get joiner/no joiner + state from argument rather than implying on path length. + Dump the entire jump thread path into debugging dump. + * tree-flow.h (register_jump_thread): Update prototype. + +2013-08-29 Xinliang David Li + + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): + Remove a trivial gcc_assert. + +2013-08-29 Xinliang David Li + + * tree-vect-slp.c (destroy_bb_vec_info): Data ref cleanup. + * tree-vect-loop.c (destroy_bb_vec_info): Ditto. + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): + Delay base decl alignment adjustment. + * tree-vectorizer.c (vect_destroy_datarefs): New function. + * tree-vectorizer.h: New data structure. + (set_dr_misalignment): New function. + (dr_misalignment): Ditto. + * tree-vect-stmts.c (vectorizable_store): Ensure alignment. + (vectorizable_load): Ditto. + (ensure_base_align): New function. + (vectorize_loops): Add dbg_cnt support. + (execute_vect_slp): Ditto. + * dbgcnt.def: New debug counter. + * Makefile: New dependency. + +2013-09-03 Meador Inge + + Revert: + + 2013-08-30 Meador Inge + + * tree-vrp.c (check_array_ref): Bail out on zero-length arrays. + +2013-09-03 David Edelsohn + + * config/rs6000/rs6000.h (ASM_OUTPUT_DEF_FROM_DECLS): Emit lglobl for + function descriptor. + +2013-09-03 Richard Biener + + * tree-affine.c (add_elt_to_tree): Fix association issue, + avoid useless converts and make sure to always return a + properly typed result. + +2013-09-03 Richard Biener + + PR middle-end/57656 + * fold-const.c (negate_expr_p): Fix division case. + (negate_expr): Likewise. + +2013-09-03 Richard Biener + + PR lto/58285 + * tree-streamer-out.c: Include tm.h. + * Makefile.in (tree-streamer-out.o): Depend on $(TM_H). + +2013-09-03 Jan Hubicka + + * tree-profile.c (tree_profiling): Cleanup CFG when done. + +2013-09-03 Alan Modra + + * config.gcc (powerpc*-*-linux*): Add support for little-endian + multilibs to big-endian target and vice versa. + * config/rs6000/t-linux64: Use := assignment on all vars. + (MULTILIB_EXTRA_OPTS): Remove fPIC. + (MULTILIB_OSDIRNAMES): Specify using mapping from multilib_options. + * config/rs6000/t-linux64le: New file. + * config/rs6000/t-linux64bele: New file. + * config/rs6000/t-linux64lebe: New file. + +2013-09-02 Jan Hubicka + + * ipa-inline-transform.c (inline_transform): Do not + optimize_inline_calls when not optimizing. + +2013-09-02 Jan Hubicka + + * lto-symtab.c (lto_symtab_merge_symbols): Add comments; merge + duplicated nodes for assembler names. + * symtab.c (symtab_unregister_node): Do not attempt to unlink + hard registers from assembler name hash. + +2013-09-02 Jan Hubicka + + * ipa-split.c (execute_split_functions): Split externally visible + functions called once. + +2013-09-02 Martin Jambor + + PR ipa/58106 + * ipa-prop.c (ipa_edge_duplication_hook): Always put new rdesc to the + linked list. When finding the correct duplicate, also consider also + the caller in additon to its inlined_to node. + +2013-09-02 James Greenhalgh + + * config/aarch64/aarch64-simd-builtins.def + (dup_lane_scalar): Remove. + * config/aarch64/aarch64-simd.md + (aarch64_simd_dup): Add 'w->w' alternative. + (aarch64_dup_lane): Allow for VALL. + (aarch64_dup_lane_scalar): Remove. + (aarch64_dup_lane_): New. + (aarch64_get_lane_signed): Add w->w altenative. + (aarch64_get_lane_unsigned): Likewise. + (aarch64_get_lane): Likewise. + * config/aarch64/aarch64.c (aarch64_evpc_dup): New. + (aarch64_expand_vec_perm_const_1): Use aarch64_evpc_dup. + * config/aarch64/iterators.md (VSWAP_WIDTH): New. + (VCON): Change container of V2SF. + (vswap_width_name): Likewise. + * config/aarch64/arm_neon.h + (__aarch64_vdup_lane_any): New. + (__aarch64_vdup_lane_<8,16,32,64>): Likewise. + (vdup_n_<8,16,32,64>): Convert to C implementation. + (vdup_lane_<8,16,32,64>): Likewise. + +2013-09-02 Eric Botcazou + + PR middle-end/56382 + * expr.c (emit_move_complex): Do not move complex FP values as parts if + the source or the destination is a single hard register. + +2013-09-02 Richard Biener + + PR middle-end/57511 + * tree-scalar-evolution.c (instantiate_scev_name): Allow + non-linear SCEVs. + +2013-09-02 Richard Biener + + * tree-affine.c (add_elt_to_tree): Avoid converting all pointer + arithmetic to sizetype. + +2013-09-02 Bin Cheng + + * tree-ssa-loop-ivopts.c (set_autoinc_for_original_candidates): + Find auto-increment use both before and after candidate. + +2013-09-02 Marek Polacek + + * Makefile.in (ubsan.o): Add $(TM_P_H) dependency. + +2013-09-01 Jan Hubicka + + * Makefile.in: Add ipa-profile.o + (ipa.o, ipa-devrit.o, ipa-inline-analysis.o): Adjust dependencies. + * cgraph.c (struct cgraph_propagate_frequency_data, + cgraph_propagate_frequency_1, cgraph_propagate_frequency): Move to + ipa-profile.c; replace cgraph_ by ipa_ prefix. + * cgraph.h (cgraph_propagate_frequency): Remove. + * ipa-inline-analysis.c: Include ipa-utils.h; + drop duplicated cfgloop.h. + (inline_update_callee_summaries): Update. + * ipa-profile.c: New file. + * ipa-utils.h (ipa_propagate_frequency): Declare. + * ipa.c: Do not include pointer-set.h, hash-table.h, lto-streamer.h, + data-streamer.h, value-prof.h. + (symtab_remove_unreachable_nodes): Update profile. + (struct histogram_entry, histogram, histogram_pool, histogram_hash, + account_time_size, cmp_counts, dump_histogram, + ipa_profile_generate_summary, ipa_profile_write_summary, + ipa_profile_read_summary, ipa_profile, gate_ipa_profile, + pass_data_ipa_profile, pass_ipa_profile, make_pass_ipa_profile): + Move to ipa-profile.c. + +2013-09-01 John David Anglin + + * config/pa/pa.md: Allow "const 0" operand 1 in "scc" insns. + +2013-09-01 Jan Hubicka + + * common.opt (fdevirtualize-speculatively): New function. + * invoke.texi (fdevirtualize-speculatively): Document. + * ipa-devirt.c: Include ipa-inline.h + (likely_target_p): New function. + (ipa_devirt): New function. + (gate_ipa_devirt): New function. + (pass_data_ipa_devirt): New static var. + (pass_ipa_devirt): Likewise. + (make_pass_ipa_devirt): New function. + * opts.c (default_options): Add OPT_fdevirtualize_speculatively. + (common_handle_option): Disable devirtualization when + value range profiling is available. + * passes.def (pass_ipa_devirt): Add. + * timever.def (TV_IPA_DEVIRT): New timevar. + * tree-pass.h (make_pass_ipa_devirt): + +2013-09-01 Iain Sandoe + + * config/darwin.h (LINK_COMMAND_SPEC_A): Revise sanitizer specs to + include sanitize(undefined). + +2013-08-31 Diego Novillo + + * Makefile.in (TREE_CORE_H): Define. + (TREE_H): Use. + (GTFILES): Add tree-core.h. + * builtins.c (built_in_class_names): Use BUILT_IN_LAST to + size the array. + * tree-core.h: New file. + Move all data structures, enum, typedefs, global + declarations and constants from ... + * tree.h: ... here. + +2013-08-31 Jan Hubicka + + * bulitins.c (expand_builtin): Do not early exit for gcov + instrumented functions. + +2013-08-31 Marek Polacek + + * ubsan.c: Include tm_p.h. + +2013-08-31 Jan Hubicka + + * gimple-streamer-in.c (input_gimple_stmt): Silence parameter unused + warning. + + * cgraph.c (cgraph_get_body): Update call of lto_input_function_body. + * gimple-streamer-in.c (input_gimple_stmt): Move sanity check to ... + * tree-cfg.c (verify_gimple_label): ... here. + * ipa-utils.c: Include lto-streamer.h, ipa-inline.h + (ipa_merge_profiles): New function. + * lto-streamer-in.c (lto_read_body): Take node instead of fn_decl. + (lto_input_function_body): Likewise. + * ipa-utils.h (ipa_merge_profiles): Declare. + * lto-streamer.h (lto_input_function_body): Update prototype. + (emit_label_in_global_context_p): Remove. + * lto-symtab.c: Include ipa-utils.h + (lto_cgraph_replace_node): Use ipa_merge_profiles. + +2013-08-31 Jan Hubicka + + * cgraph.c (cgraph_speculative_call_info): Fix ref lookup + +2013-08-31 Jan Hubicka + + * basic-block.h (apply_scale): Make scale parmeter gcov_type. + +2013-08-31 Uros Bizjak + + * config/alpha/alpha.c (alpha_emit_conditional_move): Update + "cmp" RTX before signed_comparison_operator check to account + for "code" changes. + +2013-08-30 Jan Hubicka + + * ipa-prop.c (ipa_set_jf_known_type): Check that we add only records. + (detect_type_change_1): Rename to ... + (detect_type_change): ... this one; early return on non-polymorphic + types. + (detect_type_change_ssa): Add comp_type parameter; update + use of detect_type_change. + (compute_complex_assign_jump_func): Add param_type parameter; + update use of detect_type_change_ssa. + (compute_complex_ancestor_jump_func): Likewise. + (ipa_get_callee_param_type): New function. + (ipa_compute_jump_functions_for_edge): Compute parameter type; + update calls to the jump function computation functions. + +2013-08-30 Teresa Johnson + Steven Bosscher + + * cfgrtl.c (fixup_new_cold_bb): New routine. + (commit_edge_insertions): Invoke fixup_partitions. + (find_partition_fixes): New routine. + (fixup_partitions): Ditto. + (verify_hot_cold_block_grouping): Update comments. + (rtl_verify_edges): Invoke find_partition_fixes. + (rtl_verify_bb_pointers): Update comments. + (rtl_verify_bb_layout): Ditto. + * basic-block.h (probably_never_executed_edge_p): Declare. + (fixup_partitions): Ditto. + * cfgcleanup.c (try_optimize_cfg): Invoke fixup_partitions. + * bb-reorder.c (sanitize_hot_paths): New function. + (find_rarely_executed_basic_blocks_and_crossing_edges): Invoke + sanitize_hot_paths. + * predict.c (probably_never_executed_edge_p): New routine. + * cfg.c (check_bb_profile): Add partition insanity warnings. + +2013-08-30 Meador Inge + + * tree-vrp.c (check_array_ref): Bail out on zero-length arrays. + +2013-08-30 Marek Polacek + + * Makefile.in (ubsan.o): Add. + (c-family/c-ubsan.o): Add. + (builtins.o): Add ubsan.h dependency. + * ubsan.h: New file. + * ubsan.c: New file. + * common.opt: Add -fsanitize=undefined option. + (flag_sanitize): Add variable. + (fsanitize=): Add option. Add Driver. + (fsanitize=thread): Remove option. + (fsanitize=address): Likewise. + (static-libubsan): New option. + * doc/invoke.texi: Document the new flag and -static-libubsan. + * sanitizer.def (DEF_SANITIZER_BUILTIN): Define. + (BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE): Define. + * builtin-attrs.def (ATTR_COLD): Define. + (ATTR_COLD_NOTHROW_LEAF_LIST): Define. + * builtins.def (BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW, + BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS): Define. + * flag-types.h (sanitize_code): New enum. + * opts.c (common_handle_option): Parse command line arguments + of -fsanitize=. Add -fsanitize=unreachable option. + * varasm.c (get_variable_section): Adjust. + (assemble_noswitch_variable): Likewise. + (assemble_variable): Likewise. + (output_constant_def_contents): Likewise. + (categorize_decl_for_section): Likewise. + (place_block_symbol): Likewise. + (output_object_block): Likewise. + * builtins.def: Likewise. + * toplev.c (compile_file): Likewise. + (process_options): Likewise. + * cppbuiltin.c: Likewise. + * tsan.c (tsan_pass): Likewise. + (tsan_gate): Likewise. + (tsan_gate_O0): Likewise. + * cfgexpand.c (partition_stack_vars): Likewise. + (expand_stack_vars): Likewise. + (defer_stack_allocation): Likewise. + (expand_used_vars): Likewise. + * cfgcleanup.c (old_insns_match_p): Likewise. + * asan.c (asan_finish_file): Likewise. + (asan_instrument): Likewise. + (gate_asan): Likewise. + (initialize_sanitizer_builtins): Build BT_FN_VOID_PTR_PTR_PTR. + (ATTR_COLD_NOTHROW_LEAF_LIST): Define. + (asan_global_struct): Use pointer_sized_int_node instead + calling build_nonstandard_integer_type. + (initialize_sanitizer_builtins): Likewise. + (asan_finish_file): Likewise. + * gcc.c: Document %{%:function(args):X}. + (static_spec_functions): Add sanitize. + (handle_spec_function): Add retval_nonnull argument and if non-NULL, + store funcval != NULL there. + (do_spec_1): Adjust handle_spec_function caller. + (handle_braces): Allow %:function(args) as condition. + (sanitize_spec_function): New function. + (ADD_STATIC_LIBUBSAN_LIBS): Define. + (LIBUBSAN_SPEC): Likewise. + (LIBUBSAN_EARLY_SPEC): Likewise. + (SANITIZER_SPEC): Handle libubsan. + (SANITIZER_EARLY_SPEC): Likewise. + * config/darwin.h (LINK_COMMAND_SPEC_A): Use %:sanitize(address) + instead of fsanitize=address. + * config/arm/linux-eabi.h (ASAN_CC1_SPEC): Use %:sanitize(address) + instead of fsanitize=address*. + * builtins.c: Include ubsan.h. + (fold_builtin_0): Instrument __builtin_unreachable. + * config/rs6000/rs6000.h (FRAME_GROWS_DOWNWARD): Use flag_sanitize + instead of flag_asan. + * tree.h (enum tree_index): Add TI_POINTER_SIZED_TYPE. + (pointer_sized_int_node): Define. + * tree.c (build_common_tree_nodes): Initialize pointer_sized_int_node. + +2013-08-30 Mike Stump + + * doc/install.texi (Prerequisites): Note regression in Tcl 8.6 + with RE patterns. + +2013-08-29 Jan Hubicka + + * cgraph.c (cgraph_function_body_availability): Handle weakref + correctly. + * passes.def: Remove pass_fixup_cfg. + * ipa-inline.c (ipa_inline): When not optimizing, do not inline; + track when we need to remove functions. + (gate_ipa_inline): Execute inlining always; add comment why. + (pass_data_ipa_inline): Remove TODO_remove_functions. + * ipa-inline-analysis.c (inline_generate_summary): When not optimizing + do not produce summaries. + * symtab.c (change_decl_assembler_name): Handle renaming of weakrefs. + (symtab_nonoverwritable_alias): Assert we are not called on weakref. + * varpool.c (cgraph_variable_initializer_availability): Fix weakrefs, + constant pool and vtable. + +2013-08-30 Tejas Belagod + + * config/aarch64/arm_neon.h (__AARCH64_UINT64_C, __AARCH64_INT64_C): + New arm_neon.h's internal macros to specify 64-bit constants. + Avoid using stdint.h's macros. + +2013-08-30 Joern Rennecke + + * recog.c (verify_changes): Verify that changes[i].old is non-zero + before applying REG_P. + +2013-08-30 Jakub Jelinek + + PR tree-optimization/58277 + * tree-ssa-strlen.c (strlen_enter_block): If do_invalidate gave up + after seeing too many stmts with vdef in between dombb and current + bb, invalidate everything. + +2013-08-30 Richard Biener + + * fold-const.c (fold_single_bit_test): Fix overflow test. + +2013-08-30 Eric Botcazou + + * function.c (assign_parm_setup_reg): For a parameter passed by pointer + and which can live in a register, always retrieve the value on entry. + * var-tracking.c (add_stores): Treat the copy on entry for a parameter + passed by invisible reference specially. + (emit_notes_in_bb) : Emit notes before the instruction. + (vt_add_function_parameter): Correctly deal with a parameter passed by + invisible reference. + +2013-08-30 Jan Hubicka + + * tree.c (set_call_expr_flags): Fix handling of TM_PURE. + +2013-08-30 Richard Biener + + PR tree-optimization/58228 + * tree-vect-data-refs.c (vect_analyze_data_ref_access): Do not + allow invariant loads in nested loop vectorization. + +2013-08-30 Richard Biener + + PR tree-optimization/58223 + * tree-loop-distribution.c (has_anti_dependence): Rename to ... + (has_anti_or_output_dependence): ... this and adjust to also + look for output dependences. + (mark_nodes_having_upstream_mem_writes): Adjust. + (rdg_flag_uses): Likewise. + +2013-08-30 Richard Biener + + PR tree-optimization/58010 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Remove + assert that we have a loop-closed PHI. + +2013-08-29 Jan Hubicka + + * lto-symtab.c (lto_cgraph_replace_node): Free decl_in_state. + * cgraph.c (cgraph_release_function_body): Free decl_in_state. + * lto-section-in.c (lto_free_function_in_decl_state): New function. + (lto_free_function_in_decl_state_for_node): New function. + +2013-08-29 Xinliang David Li + + * loop-unroll.c (report_unroll_peel): Minor message change. + * tree-vect-loop-manip.c (vect_do_peeling_for_alignment): + Emit alignment peeling message with default -fopt-info. + (vect_loop_versioning): Emit loop version info message. + * tree-vectorizer.c (vectorize_loops): Minor message change. + (execute_vect_slp): Ditto. + +2013-08-29 Eric Botcazou + + * cgraphclones.c (cgraph_create_virtual_clone): Compute the DECL_NAME + of the clone from the DECL_NAME of the original function. + +2013-08-29 Oleg Endo + + * passes.c (register_pass): Add overload. + * tree-pass.h (register_pass): Forward declare it. Add comment. + +2013-08-29 Jan Hubicka + + * lto-streamer-out.c (hash_tree): Stream DECL_FINAL_P, + DECL_CXX_CONSTRUCTOR_P, DECL_CXX_DESTRUCTOR_P and TYPE_FINAL_P. + * lto-streamer-in.c (unpack_ts_decl_with_vis_value_fields): Stream + DECL_FINAL_P, DECL_CXX_CONSTRUCTOR_P and DECL_CXX_DESTRUCTOR_P. + (unpack_ts_type_common_value_fields): Stream TYPE_FINAL_P. + * tree-streamer-out.c (pack_ts_decl_with_vis_value_fields): + Add DECL_FINAL_P, DECL_CXX_CONSTRUCTOR_P and DECL_CXX_DESTRUCTOR_P. + (pack_ts_type_common_value_fields): Add TYPE_FINAL_P. + +2013-08-29 Teresa Johnson + + * dumpfile.c (dump_loc): Output column number. + * dumpfile.h (OPTGROUP_OTHER): Add and enable under OPTGROUP_ALL. + * doc/invoke.texi: Document optall -fopt-info flag. + * profile.c (read_profile_edge_counts): Use new dump framework. + (compute_branch_probabilities): Ditto. + * passes.c (pass_manager::register_one_dump_file): Use OPTGROUP_OTHER + when pass not in any opt group. + * pass_manager.h (pass_manager::get_pass_profile): New method. + * value-prof.c (check_counter): Use new dump framework. + (check_ic_target): Ditto. + * coverage.c (get_coverage_counts): Ditto. + (coverage_init): Setup new dump framework. + +2013-08-29 Richard Biener + + PR tree-optimization/58246 + * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Properly + handle the dominance check inside a basic-block. + +2013-08-29 Richard Biener + + PR middle-end/57287 + * tree-ssa-copy.c (may_propagate_copy): Allow propagating + of default defs that appear in abnormal PHI nodes. + +2013-08-29 Richard Biener + + PR tree-optimization/57685 + * tree-vrp.c (register_edge_assert_for_1): Recurse only for + single-use operands to avoid exponential complexity. + +2013-08-28 Dehao Chen + + * ipa-inline.c (edge_badness): Fix integer underflow. + +2013-08-28 Uros Bizjak + + * gtm-builtins.def (_ITM_free): Declare leaf. + +2013-08-28 Jakub Jelinek + + PR target/58067 + * config/i386/i386.md (*tls_global_dynamic_64_largepic): New insn. + (*tls_local_dynamic_base_64_largepic): Likewise. + (tls_global_dynamic_64_, tls_local_dynamic_base_64_): + Remove predicate from call operand. + * config/i386/i386.c (ix86_tls_get_addr): For -mcmodel=large -fpic + return sum of pic_offset_table_rtx and UNSPEC_PLTOFF of the symbol. + +2013-08-28 Jeff Law + + * tree-ssa-threadedge.c (thread_around_empty_block): Remove + checks for the number of predecessors and successors allowed. + * tree-ssa-threadupdate.c (mark_threaded_blocks): Ignore requests + which require copying a joiner block if there is a request which + is a subpath that requires no joiner block copying. + +2013-08-28 Jan Hubicka + + * lto-streamer-out.c (DFS_write_tree_body): Drop + BINFO_INHERITANCE_CHAIN, BINFO_SUBVTT_INDEX and BINFO_VPTR_INDEX. + (hash_tree): Do not hash DECL_DEFER_OUTPUT, BINFO_INHERITANCE_CHAIN, + BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, DECL_IN_TEXT_SECTION. + * tree-streamer-in.c (unpack_ts_decl_common_value_fields): + Do not read DECL_ERROR_ISSUED. + (unpack_ts_decl_with_vis_value_fields): Do not read + DECL_DEFER_OUTPUT. + (lto_input_ts_binfo_tree_pointers): Do not read + BINFO_INHERITANCE_CHAIN, BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX + * tree-streamer-out.c (pack_ts_decl_common_value_fields): Do not + write DECL_ERROR_ISSUED.. + (pack_ts_decl_with_vis_value_fields): Do not write + DECL_DEFER_OUTPUT. + (write_ts_binfo_tree_pointers): Do not read BINFO_INHERITANCE_CHAIN, + BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX. + * print-tree.c (print_node): Do not print DECL_ERROR_ISSUED. + * tree.h (tree_decl_common): Update comment. + (DECL_ERROR_ISSUED): Remove. + +2013-08-28 Jakub Jelinek + + PR middle-end/58257 + * omp-low.c (copy_var_decl): Copy over TREE_NO_WARNING flag. + +2013-08-28 Jan Hubicka + + * builtins.def (free): Declare leaf. + +2013-08-27 David Malcolm + + * gdbhooks.py: New. + * configure.ac (gdbinit.in): Add import of gcc/gdbhooks.py. + * configure: Regenerate. + +2013-08-27 Martin Jambor + + * ipa-prop.h (ipa_pass_through_data): New field type_preserved. + (ipa_ancestor_jf_data): Likewise. + (ipa_get_jf_pass_through_agg_preserved): Fix comment typo. + (ipa_get_jf_pass_through_type_preserved): New function. + (ipa_get_jf_ancestor_agg_preserved): Fix comment typo. + (ipa_get_jf_ancestor_type_preserved): New function. + * ipa-cp.c (ipa_get_jf_pass_through_result): Honor type_preserved flag. + (ipa_get_jf_ancestor_result): Likewise. + (propagate_vals_accross_pass_through): Use + ipa_get_jf_pass_through_result to do all the value mappings. + * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Dump the + type_preserved flag. + (ipa_set_jf_cst_copy): New function. + (ipa_set_jf_simple_pass_through): Set the type_preserved flag. + (ipa_set_jf_arith_pass_through): Likewise. + (ipa_set_ancestor_jf): Likewise. + (compute_complex_assign_jump_func): Set type_preserved instead of + punting. + (ipa_compute_jump_functions_for_edge): Likewise. + (combine_known_type_and_ancestor_jfs): Honor type_preserved. + (update_jump_functions_after_inlining): Update type_preserved. + Explicitely create jump functions when combining one with pass_through. + (ipa_write_jump_function): Stream the type_preserved flags. + (ipa_read_jump_function): Likewise. + +2013-08-27 Jakub Jelinek + Aldy Hernandez + + * Makefile.in (omp-low.o): Depend on $(TARGET_H). + * cfgloop.h (struct loop): Add safelen, force_vect, simduid. + * function.h (struct function): Add has_force_vect_loops and + has_simduid_loops. + * gimple-pretty-print.c (dump_gimple_omp_for): Handle GF_OMP_FOR_KIND*. + * gimple.c (gimple_build_omp_critical): Add KIND argument and + handle it. + * gimple.def: Update CLAUSES comments. + * gimple.h (enum gf_mask): Add GF_OMP_FOR_KIND_{FOR,SIMD}. + (gimple_build_omp_for): Add argument to prototype. + (gimple_omp_for_kind): New. + (gimple_omp_for_set_kind): New. + * gimplify.c (enum gimplify_omp_var_data): Add GOVD_LINEAR to + GOVD_DATA_SHARE_CLASS. + (enum omp_region_type): Add ORT_SIMD. + (gimple_add_tmp_var): Handle ORT_SIMD. + (gimplify_var_or_parm_decl): Same. + (is_gimple_stmt): Same. + (omp_firstprivatize_variable): Same. + (omp_add_variable): Only use splay_tree_insert if lookup failed. + (omp_notice_variable): Handle ORT_SIMD. + (omp_is_private): Add SIMD argument and handle it as well as ORT_SIMD. + (omp_check_private): Handle ORT_SIMD. + (gimplify_scan_omp_clauses): Handle OMP_CLAUSE_LINEAR and + OMP_CLAUSE_SAFELEN. + (gimplify_adjust_omp_clauses_1): Handle GOVD_LINEAR. + Handle OMP_CLAUSE_LASTPRIVATE. + (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_LINEAR and + OMP_CLAUSE_SAFELEN. + (gimplify_omp_for): Handle OMP_SIMD and OMP_CLAUSE_LINEAR. + (gimplify_expr): Handle OMP_SIMD. + * internal-fn.c (expand_GOMP_SIMD_LANE): New. + (expand_GOMP_SIMD_VF): New. + (expand_GOMP_SIMD_LAST_LANE): New. + * internal-fn.def (GOMP_SIMD_LANE): New. + (GOMP_SIMD_VF): New. + (GOMP_SIMD_LAST_LANE): New. + * omp-low.c: Include target.h. + (extract_omp_for_data): Handle OMP_SIMD, OMP_CLAUSE_LINEAR, + OMP_CLAUSE_SAFELEN. + (check_omp_nesting_restrictions): Same. + (omp_max_vf): New. + (lower_rec_simd_input_clauses): New. + (lower_rec_input_clauses): Handle OMP_SIMD, GF_OMP_FOR_KIND_SIMD, + OMP_CLAUSE_LINEAR. + (lower_lastprivate_clauses): Handle OMP_CLAUSE_LINEAR, + GF_OMP_FOR_KIND_SIMD, OMP_SIMD. + (expand_omp_build_assign): New. + (expand_omp_for_init_counts): New. + (expand_omp_for_init_vars): New. + (extract_omp_for_update_vars): New. + (expand_omp_for_generic): Use expand_omp_for_{init,update}_vars + and rewrite accordingly. + (expand_omp_simd): New. + (expand_omp_for): Use expand_omp_simd. + (lower_omp_for_lastprivate): Unshare vinit when appropriate. + (lower_omp_for): Do not lower the body. + * tree-data-ref (get_references_in_stmt): Allow IFN_GOMP_SIMD_LANE + in their own loops. + * tree-flow.h (find_omp_clause): Remove prototype. + * tree-if-conv.c (main_tree_if_conversion): Run if doing if conversion, + forcing vectorization of the loop, or if flag_tree_vectorize. + (gate_tree_if_conversion): Similarly. + * tree-inline.c (remap_gimple_stmt): Pass for kind argument to + gimple_build_omp_for. + (copy_cfg_body): set has_force_vect_loops and has_simduid_loops. + * tree-parloops (create_parallel_loop): Pass kind argument to + gimple_build_omp_for. + * tree-pretty-print.c (dump_omp_clause): Add cases for + OMP_CLAUSE_UNIFORM, OMP_CLAUSE_LINEAR, OMP_CLAUSE_SAFELEN, + OMP_CLAUSE__SIMDUID_. + (dump_generic_node): Handle OMP_SIMD. + * tree-ssa-ccp.c (likely_value): Handle IFN_GOMP_SIMD*. + * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Do not + unroll OMP_SIMD loops here. + * tree-ssa-loop.c (gate_tree_vectorize): Run if has_force_vect_loops. + * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Handle + loop->safelen. + (vect_analyze_data_refs): Handle simd loops. + * tree-vect-loop.c (vectorizable_live_operation): Handle + IFN_GOMP_SIMD*. + * tree-vect-stmts.c (vectorizable_call): Handle IFN_GOMP_SIMD_LANE. + (vectorizable_store): Handle STMT_VINFO_SIMD_LANE_ACCESS_P. + (vectorizable_load): Same. + * tree-vectorizer.c: Include hash-table.h and tree-ssa-propagate.h. + (struct simduid_to_vf): New. + (simduid_to_vf::hash): New. + (simduid_to-vf::equal): New. + (struct simd_array_to_simduid): New. + (simd_array_to_simduid::hash): New. + (simd_array_to_simduid::equal): New. + (adjust_simduid_builtins): New. + (struct note_simd_array_uses_struct): New. + (note_simd_array_uses_cb): New. + (note_simd_array_uses): New. + (vectorize_loops): Handle simd hints and adjust simd builtins + accordingly. + * tree-vectorizer.h (struct _stmt_vec_info): Add + simd_lane_access_p field. + (STMT_VINFO_SIMD_LANE_ACCESS_P): New macro. + * tree.c (omp_clause_num_ops): Add entries for OMP_CLAUSE_LINEAR, + OMP_CLAUSE_SAFELEN, OMP_CLAUSE__SIMDUID_, OMP_CLAUSE_UNIFORM. + (omp_clause_code_name): Same. + (walk_tree_1): Handle OMP_CLAUSE_UNIFORM, OMP_CLAUSE_SAFELEN, + OMP_CLAUSE__SIMDUID_, OMP_CLAUSE_LINEAR. + * tree.def (OMP_SIMD): New entry. + * tree.h (enum omp_clause_code): Add entries for OMP_CLAUSE_LINEAR, + OMP_CLAUSE_UNIFORM, OMP_CLAUSE_SAFELEN, OMP_CLAUSE__SIMDUID_. + (OMP_CLAUSE_DECL): Adjust range for new clauses. + (OMP_CLAUSE_LINEAR_NO_COPYIN): New. + (OMP_CLAUSE_LINEAR_NO_COPYOUT): New. + (OMP_CLAUSE_LINEAR_STEP): New. + (OMP_CLAUSE_SAFELEN_EXPR): New. + (OMP_CLAUSE__SIMDUID__DECL): New. + (find_omp_clause): New prototype. + +2013-08-27 H.J. Lu + + * config/i386/driver-i386.c (host_detect_local_cpu): Update + Haswell processor detection. + +2013-08-27 Christian Widmer + + PR target/57927 + * config/i386/driver-i386.c (host_detect_local_cpu): Add detection + of Ivy Bridge and Haswell processors. Assume core-avx2 for unknown + AVX2 capable processors. + +2013-08-27 Tejas Belagod + + * config/aarch64/arm_neon.h: Replace all inline asm implementations + of vget_low_* with implementations in terms of other intrinsics. + +2013-08-27 Marc Glisse + + PR middle-end/57219 + * doc/extend.texi (__builtin_isinf_sign): Restrict the return + values to -1, 0 and 1. + +2013-08-27 Vidya Praveen + + * config/aarch64/aarch64.md (unspec): Add UNSPEC_SISD_SSHL, + UNSPEC_SISD_USHL, UNSPEC_USHL_2S, UNSPEC_SSHL_2S, UNSPEC_SISD_NEG. + (3_insn): Remove. + (aarch64_ashl_sisd_or_int_3): New Pattern. + (aarch64_lshr_sisd_or_int_3): Likewise. + (aarch64_ashr_sisd_or_int_3): Likewise. + (define_split for aarch64_lshr_sisd_or_int_di3): Likewise. + (define_split for aarch64_lshr_sisd_or_int_si3): Likewise. + (define_split for aarch64_ashr_sisd_or_int_di3): Likewise. + (define_split for aarch64_ashr_sisd_or_int_si3): Likewise. + (aarch64_sisd_ushl, aarch64_sisd_sshl): Likewise. + (aarch64_ushl_2s, aarch64_sshl_2s, aarch64_sisd_neg_qi): Likewise. + (ror3_insn): Likewise. + * config/aarch64/predicates.md (aarch64_simd_register): New. + +2013-08-27 Richard Biener + + PR tree-optimization/57521 + * tree-if-conv.c (if_convertible_bb_p): Verify that at least + one edge is non-critical. + (find_phi_replacement_condition): Make sure to use a non-critical + edge. Cleanup and remove old bug workarounds. + (bb_postdominates_preds): Remove. + (if_convertible_loop_p_1): Do not compute post-dominators. + (combine_blocks): Do not free post-dominators. + (main_tree_if_conversion): Likewise. + (pass_data_if_conversion): Add TODO_verify_ssa. + +2013-08-27 DJ Delorie + + * config/i386/djgpp.h (ASM_DECLARE_FUNCTION_NAME): New. + +2013-08-27 Yufeng Zhang + + * function.c (assign_parm_find_data_types): Set passed_mode and + nominal_mode to the TYPE_MODE of nominal_type for the built + pointer type in case of the struct-pass-by-reference. + +2013-08-26 Joern Rennecke + + * config/avr/avr-stdint.h (INT16_TYPE): Change default to "int". + (UINT16_TYPE): Change default to "unsigned int". + + * config/avr/avr.opt (mfract-convert-truncate): New option. + * config/avr/avr.c (avr_out_fract): Unless TARGET_FRACT_CONV_TRUNC + is set, round negative fractional integers according to n1169 + when converting to integer types. + +2013-08-26 Jan Hubicka + + * cgraph.c (cgraph_propagate_frequency): Do not assume that virtual + methods can not be called indirectly when their address is not taken. + +2013-08-26 Jan Hubicka + + * gimple-fold.c (gimple_get_virt_method_for_binfo): Use + ctor_for_folding. + +2013-08-26 Jan Hubicka + + * ipa.c (comdat_can_be_unshared_p_1): C++ constructors and destructors + can be unshared. + +2013-08-26 Joern Rennecke + + * reload.c (find_valid_class): Allow classes that do not include + FIRST_PSEUDO_REGISTER - 1. + +2013-08-26 Jan Hubicka + + * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Fix formatting; + fix edge count/frequency when speculation failed; fix type check + for the direct call. + +2013-08-26 Jan Hubicka + + * ipa-prop.c (ipa_print_node_params): Do not ICE during WPA. + +2013-08-26 Jan Hubicka + + * ipa-inline-transform.c (inline_transform): Be ready for basic block + to be changed by edge redirection. + +2013-08-26 Jan Hubicka + + * cgraph.c (cgraph_speculative_call_info): Fix parameter order and + formating; add sanity check. + (cgraph_resolve_speculation): Add FIXME about scaling profiles. + (cgraph_redirect_edge_call_stmt_to_callee): Fix ICE in debug dump. + * ipa-inline.c (heap_edge_removal_hook): Reset node growth cache. + (resolve_noninline_speculation): Update callee keys, too. + +2013-08-26 Jan Hubicka + + * tree.h (tree_decl_with_vis): Add cxx_constructor, cxx_destructor. + (DECL_CXX_CONSTRUCTOR_P, DECL_CXX_DESTRUCTOR_P): New macros. + +2013-08-26 Joern Rennecke + + * config/i386/i386.c (x86_64_elf_select_section): Put ATTRIBUTE_UNUSED + into proper place. + +2013-08-26 Uros Bizjak + + * config/i386/i386.c (ix86_debug_options): Remove prototype. + (x86_64_elf_select_section): Ditto. + (ix86_handle_tm_regparm_attribute): Remove ATTRIBUTE_UNUSED on used + arguments. + (ix86_pass_by_reference): Ditto. + (output_set_got): Ditto. + (ix86_unary_operator_ok): Ditto. + (ix86_expand_builtin): Ditto. + +2013-08-23 Jan Hubicka + + * cgraph.c (cgraph_turn_edge_to_speculative): Fix debug output. + +2013-08-23 Jan Hubicka + + * tree.h (TYPE_FINAL_P, DECL_FINAL_P): New macros. + (tree_decl_with_vis): Add FINAL field. + +2013-08-23 Jeff Law + + * tree-ssa-pre.c (do_regular_insertion): Include the expression in + the debugging dump when the expression is fully redundant. + +2013-08-23 Gabriel Dos Reis + + * diagnostic.c (diagnostic_set_caret_max_width): Use pp_buffer. + * gimple-pretty-print.c (gimple_dump_bb_buff): Likewise. + * pretty-print.c (pp_formatted_text_data): Likewise. + (pp_write_text_to_stream): Likewise. + (pp_write_text_as_dot_label_to_stream): Likewise. + (pp_append_r): Likewise. + (pp_format): Likewise. + (pp_flush): Likewise. + (pp_clear_output_area): Likewise. + (pp_append_text): Likewise. + (pp_formatted_text): Likewise. + (pp_remaining_character_count_for_line): Likewise. + (pp_newline): Likewise. + (pp_character): Likewise. + (output_buffer::~output_buffer): Define. + (pretty_printer::~pretty_printer): Destruct output buffer. + * pretty-print.h (output_buffer::~output_buffer): Declare. + (pretty_printer::~pretty_printer): Declare virtual. + +2013-08-24 Marc Glisse + + PR other/57324 + * hwint.h (HOST_WIDE_INT_UC, HOST_WIDE_INT_1U, HOST_WIDE_INT_M1, + HOST_WIDE_INT_M1U): New macros. + * fold-const.c (sign_bit_p, build_range_check, fold_unary_loc, + fold_binary_loc, fold_ternary_loc): Use the new macros. Use an + unsigned -1 for lshift. + * cse.c (cse_insn): Likewise. + * double-int.c (rshift_double, lshift_double): Likewise. + * builtins.c (fold_builtin_bitop): Likewise. + * combine.c (force_to_mode): Likewise. + * tree.c (integer_pow2p, tree_log2, tree_floor_log2): Likewise. + * simplify-rtx.c (simplify_const_unary_operation, + simplify_const_binary_operation): Likewise. + * tree-stdarg.c (va_list_counter_bump, va_list_ptr_read, + check_va_list_escapes): Likewise. + * rtlanal.c (nonzero_bits1): Likewise. + * expmed.c (expand_smod_pow2): Likewise. + * tree-ssa-structalias.c (UNKNOWN_OFFSET): Use HOST_WIDE_INT_MIN. + +2013-08-23 Jan Hubicka + + * cgraph.c (cgraph_turn_edge_to_speculative): Mark target node + as having address taken. + +2013-08-23 Jan Hubicka + + * ipa-utils.h (method_class_type): Declare. + * ipa-devirt.c (method_class_type): Export. + + * cgraphunit.c (analyze_functions): Do basic devirtualization; + do not walk base classes of anonymous types. + +2013-08-23 Kaz Kojima + + PR rtl-optimization/58220 + PR regression/58221 + * final.c (reemit_insn_block_notes): Use NEXT_INSN to + handle SEQUENCE insns properly. + +2013-08-23 Gabriel Dos Reis + + * pretty-print.h (pp_newline_and_flush): Declare. Remove macro + definition. + (pp_newline_and_indent): Likewise. + (pp_separate_with): Likewise. + * pretty-print.c (pp_newline_and_flush): Define. + (pp_newline_and_indent): Likewise. + (pp_separate_with): Likewise. + +2013-08-23 Jakub Jelinek + + PR target/58218 + * config/i386/x86-64.h (TARGET_SECTION_TYPE_FLAGS): Define. + * config/i386/i386.c (x86_64_elf_section_type_flags): New function. + +2013-08-23 Kirill Yukhin + + * config/i386/predicates.md (ext_sse_reg_operand): New. + * config/i386/i386.md (*movti_internal): Use + predicate to determine if EVEX is needed. + (*movsi_internal): Ditto. + (*movdf_internal): Ditto. + (*movsf_internal): Ditto. + * config/i386/mmx.md (*mov_internal): Ditto. + +2013-08-23 Jakub Jelinek + + PR tree-optimization/58209 + * tree-tailcall.c (process_assignment): Handle POINTER_PLUS_EXPR. + (find_tail_calls): Give up for pointer result types if m is non-NULL. + (adjust_return_value_with_ops): For PLUS_EXPR and pointer result type + emit POINTER_PLUS_EXPR. + (create_tailcall_accumulator): For pointer result type accumulate in + sizetype type. + +2013-08-22 Paolo Carlini + + * configure.ac: Add backslashes missing from the last change. + * configure: Regenerate. + +2013-08-22 Jan Hubicka + + * ipa.c (function_and_variable_visibility): First remember function + was global and then make it local. + +2013-08-22 Julian Brown + + * configure.ac: Add aarch64 to list of arches which use "nop" in + debug_line test. + * configure: Regenerate. + +2013-08-22 Andreas Krebbel + + * config/s390/linux.h (TARGET_LIBC_HAS_FUNCTION): Define as + gnu_libc_has_function. + * config/s390/tpf.h: Likewise. + +2013-08-22 Jan Hubicka + + * timevar.c (validate_phases): Add cast. + +2013-08-22 Jan Hubicka + + * timevar.c (validate_phases): Use size_t for memory. + * timevar.h (struct timevar_time_def): Use size_t for ggc_mem. + +2013-08-22 Gabriel Dos Reis + + * pretty-print.h (output_buffer::output_buffer): Declare. + (pretty_printer::pretty_printer): Likewise. + (pp_construct): Remove. + * pretty-print.c (output_buffer::output_buffer): Define. + (pretty_printer::pretty_printer): Rename from pp_construct. Simplify. + * gimple-pretty-print.c (print_gimple_stmt): Do not call pp_construct. + (print_gimple_expr): Likewise. + (print_gimple_seq): Likewise. + (gimple_dump_bb): Likewise. + * sched-vis.c (dump_value_slim): Likewise. + (dump_insn_slim): Likewise. + (dump_rtl_slim): Likewise. + (str_pattern_slim): Likewise. + * tree-mudflap.c (mf_varname_tree): Likewise. + * graph.c (print_graph_cfg): Likewise. + (start_graph_dump): Likewise. + * tree-pretty-print.c (maybe_init_pretty_print): Likewise. Use + placement-new. + * diagnostic.c (diagnostic_initialize): Simplify early diagnostic + pretty printer initialization. + * coretypes.h (diagnostic_context): Remove superflous type alias + declaration. + (pretty_printer): Likewise. Declare directly as a class. + (pretty_print_info): Remove declaration as class. + * asan.c (asan_emit_stack_protection): Remove call to pp_construct + and pp_clear_output_area. + (asan_add_global): Likewise. + +2013-08-22 Jan Hubicka + + * cgraphunit.c (analyze_functions) Use update_type_inheritance_graph. + * ipa-utils.h (update_type_inheritance_graph): Declare. + (possible_polymorphic_call_target_p): Declare. + (possible_polymorphic_call_target_p): New. + * ipa-devirt.c: Update toplevel comments. + (cached_polymorphic_call_targets): Move up. + (odr_type_d): Move ID down. + (polymorphic_type_binfo_p): Update comment. + (odr_hasher::remove): Likewise; + (get_odr_type): Set anonymous_namespace. + (dump_odr_type): Dump it. + (dump_type_inheritance_graph): Do not ICE when there are no ODR types. + (maybe_record_node): Record node in cached_polymorphic_call_targets. + (record_binfo): Add comment. + (free_polymorphic_call_targets_hash): Do not ICE when cache is not + built. + (devirt_node_removal_hook): Do not iCE when cache is freed. + (possible_polymorphic_call_target_p): New predicate. + (update_type_inheritance_graph): New function. + +2013-08-22 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_SET): New. + (OPTION_MASK_ISA_AVX512CD_SET): Ditto. + (OPTION_MASK_ISA_AVX512PF_SET): Ditto. + (OPTION_MASK_ISA_AVX512ER_SET): Ditto. + (OPTION_MASK_ISA_AVX2_UNSET): Update. + (OPTION_MASK_ISA_AVX512F_UNSET): New. + (OPTION_MASK_ISA_AVX512CD_UNSET): Ditto. + (OPTION_MASK_ISA_AVX512PF_UNSET): Ditto. + (OPTION_MASK_ISA_AVX512ER_UNSET): Ditto. + (ix86_handle_option): Handle OPT_mavx512f, OPT_mavx512cd, + OPT_mavx512pf, OPT_mavx512er cases. + * config/i386/constraints.md (v): New constraint. + (Yi, Yj): Replace SSE_REGS with ALL_SSE_REGS. + * config/i386/cpuid.h (bit_AVX512F, bit_AVX512PF, bit_AVX512ER) + (bit_AVX512CD): New. + * config/i386/driver-i386.c (host_detect_local_cpu): Detect + AVX512F, AVX512ER, AVX512PF, AVX512CD features. + * config/i386/i386-c.c (ix86_target_macros_internal): + Conditionally define __AVX512F__, __AVX512ER__, __AVX512CD__, + __AVX512PF__. + * config/i386/i386-modes.def (VECTOR_MODES (INT, 128)) + (VECTOR_MODES (FLOAT, 128), INT_MODE (XI, 64)): New modes. + * config/i386/i386.c (regclass_map, dbx_register_map) + (dbx64_register_map, svr4_dbx_register_map): Add new SSE registers. + (gate_insert_vzeroupper): Disable vzeroupper for TARGET_AVX512F. + (ix86_target_string): Define -mavx512f, -mavx512er, -mavx512cd, + -mavx512pf options. + (ix86_option_override_internal): Define PTA_AVX512F, PTA_AVX512ER, + PTA_AVX512PF, PTA_AVX512CD. Handle -mavx512f, -mavx512er, -mavx512cd, + -mavx512pf options. Fix formatting. + (ix86_conditional_register_usage): Squash EXT_REX_SSE_REGs for 32-bit + targets. Squash EVEX_SSE_REGS if AVX512F is disabled. + (ix86_valid_target_attribute_inner_p): Handle -mavx512f, -mavx512er, + -mavx512cd, -mavx512pf options. + (standard_sse_constant_opcode): Add vpternlogd for 512-bit modes. + (print_reg, ix86_print_operand): Handle 'g' to output 512-bit operands. + (ix86_preferred_output_reload_class): Replace SSE_REGS with + ALL_SSE_REGS. + (ix86_hard_regno_mode_ok): Support 512-bit registers. + (ix86_set_reg_reg_cost): Ditto. + (x86_order_regs_for_local_alloc): Ditto. + (MAX_VECT_LEN): Extend to 64-byte. + (ix86_spill_class): Replace SSE_REGS with ALL_SSE_REGS. + * config/i386/i386.h (TARGET_AVX512F, TARGET_AVX512PF) + (TARGET_AVX512ER, TARGET_AVX512CD): New. + (BIGGEST_ALIGNMENT): Extend to 512-bits. + (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS): Add new registers. + (CALL_USED_REGISTERS, REG_ALLOC_ORDER): Likewise. + (VALID_AVX512F_SCALAR_MODE, VALID_AVX512F_REG_MODE): New. + (SSE_REG_MODE_P): Support new modes. + (FIRST_MMX_REG, FIRST_REX_INT_REG, FIRST_REX_SSE_REG): Add comments. + (FIRST_EXT_REX_SSE_REG, LAST_EXT_REX_SSE_REG): New. + (reg_class, REG_CLASS_NAMES): Add EVEX_SSE_REGS, ALL_SSE_REGS. + (SSE_CLASS_P, MAYBE_SSE_CLASS_P): Replace SSE_REGS with ALL_SSE_REGS. + (REG_CLASS_CONTENTS): Add new registers. + (SSE_REGNO_P, SSE_REGNO, HARD_REGNO_RENAME_OK): Support new registers. + (EXT_REX_SSE_REGNO_P): New. + (HI_REGISTER_NAMES): Add new registers. + * config/i386/i386.md: Define constants for new registers. + (mode): Add new 512-bit modes. + (prefix): Support evex prefix. + (isa): Support avx512f, noavx512f, fma_avx512f. + (ssemodesuffix): Add new 512-bit modes. + (movxi): New. + (*movxi_internal_avx512f): Ditto. + (*movdi_internal): Replace constraint "x" with the new constraint "v". + Support MODE_XI. + (*movsi_internal): Likewise. + (*movdf_internal): Likewise. + (*movsf_internal): Likewise. + (*fop__comm_sse): Replace constraint "x" with new constraint "v". + (3): Likewise. + * config/i386/i386.opt (mavx512f, mavx512pf, mavx512er, mavx512cd): + New. + * config/i386/mmx.md (*mov_internal): Replace constraint "x" + with the new constraint "v". + * config/i386/sse.md (*mov_internal): Support new registers and + modes. + (_loadu): Replace constraint "x" + with the new constraint "v". + (_loaddqu): Likewise. + (_storedqu): Likewise. + (*3): Likewise. + (_vm3): Likewise. + (*mul3): Likewise. + (_vmmul3): Likewise. + (_div3): Likewise. + (_vmdiv3): Likewise. + (_sqrt2): Likewise. + (_vmsqrt2): Likewise. + (*3_finite): Likewise. + (*3) : Likewise. + (_vm3): Likewise. + (*3) : Likewise. + (*fma_fmadd_): Likewise. + (*fma_fmsub_): Likewise. + (*fma_fnmadd_): Likewise. + (*fma_fnmsub_): Likewise. + (*fma_fmaddsub_): Likewise. + (*fma_fmsubadd_): Likewise. + (*fmai_fmadd_): Likewise. + (*fmai_fmsub_): Likewise. + (*fmai_fnmadd_): Likewise. + (*fmai_fnmsub_): Likewise. + (sse_cvtsi2ss): Likewise. + (sse_cvtsi2ssq): Likewise. + (sse_cvtss2si): Likewise. + (sse_cvtss2si_2): Likewise. + (sse_cvtss2siq): Likewise. + (sse_cvtss2siq_2): Likewise. + (sse_cvttss2si): Likewise. + (sse_cvtss2siq_2): Likewise. + (float2): Likewise. + (sse2_cvtsd2si_2): Likewise. + (sse2_cvtsd2siq_2): Likewise. + (*3): Likewise. + (*_3): Likewise. + (*_mul3): Likewise. + (ashr3): Likewise. + (3): Likewise. + (avx2_3): Likewise. + (*avx2_3): Likewise. + (*andnot3): Likewise. + (*3) : Likewise. + (abs2): Likewise. + (avx2_permvar): Likewise. + (avx2_perm_1): Likewise. + (*avx_vpermilp): Likewise. + (avx_vpermilvar3): Likewise. + (avx2_ashrv): Likewise. + (avx2_v): Likewise. + * doc/invoke.texi: Document -mavx512f, -mavx512pf, -mavx512er, + -mavx512cd. + * doc/rtl.texi: Document XImode. + +2013-08-21 Jeff Law + + * tree-flow.h (register_jump_thread): Pass vector of edges + instead of each important edge. + * tree-ssa-threadedge.c (thread_across_edge): Build the jump + thread path into a vector and pass that to register_jump_thread. + * tree-ssa-threadupdate.c (register_jump_thread): Conver the + passed in edge vector to the current 3-edge form. + + Revert: + 2013-08-20 Alexey Makhalov + + * dce.c (fini_dce): Call df_analyze again just in case + delete_unmarked_insns removed anything. + +2013-08-21 Joern Rennecke + + * reload.h (struct reg_equivs): Rename to .. + (struct reg_equivs_s): .. this. + +2013-08-20 Martin Liska + + * ipa.c (ipa_profile_read_summary): Fix buffer overflow. + +2013-08-21 Rainer Orth + + * config/sol2-10.h (TARGET_LIBC_HAS_FUNCTION): Don't nest comment. + +2013-08-21 Jeff Law + + * tree-vrp.c (simplify_stmt_for_jump_threading): Try to + simplify assignments too. If the RHS collapses to a singleton + range, then return the value for the range. + +2013-08-21 Kirill Yukhin + + * config/i386/sse.md (V16): Rename to... + (VMOVE): this. + (mov): Update iterator name. + (*mov_internal): Ditto. + (push1): Ditto. + (movmisalign): Ditto. + +2013-08-20 Jan Hubicka + + PR bootstrap/58186 + * cgraph.c (cgraph_add_edge_to_call_site_hash): Overwrite hash + entry for direct edges. + (cgraph_turn_edge_to_speculative): Fix setting of can_throw_external. + +2013-08-20 David Malcolm + + Revert my last two changes, r201865 and r201864: + + Revert r201865: + 2013-08-20 David Malcolm + + Make opt_pass and gcc::pass_manager be GC-managed, so that pass + instances can own GC refs. + + * Makefile.in (GTFILES): Add pass_manager.h and tree-pass.h. + * context.c (gcc::context::gt_ggc_mx): Traverse passes_. + (gcc::context::gt_pch_nx): Likewise. + (gcc::context::gt_pch_nx): Likewise. + * ggc.h (gt_ggc_mx ): New. + (gt_pch_nx_with_op ): New. + (gt_pch_nx ): New. + * passes.c (opt_pass::gt_ggc_mx): New. + (opt_pass::gt_pch_nx): New. + (opt_pass::gt_pch_nx_with_op): New. + (pass_manager::gt_ggc_mx): New. + (pass_manager::gt_pch_nx): New. + (pass_manager::gt_pch_nx_with_op): New. + (pass_manager::operator new): Use + ggc_internal_cleared_alloc_stat rather than xcalloc. + * pass_manager.h (class pass_manager): Add GTY((user)) marking. + (pass_manager::gt_ggc_mx): New. + (pass_manager::gt_pch_nx): New. + (pass_manager::gt_pch_nx_with_op): New. + * tree-pass.h (class opt_pass): Add GTY((user)) marking. + (opt_pass::operator new): New. + (opt_pass::gt_ggc_mx): New. + (opt_pass::gt_pch_nx): New. + (opt_pass::gt_pch_nx_with_op): New. + + Revert r201864: + 2013-08-20 David Malcolm + + * Makefile.in (GTFILES): Add context.h. + * context.c (gcc::context::operator new): New. + (gcc::context::gt_ggc_mx): New. + (gcc::context::gt_pch_nx): New. + (gcc::context::gt_pch_nx): New. + * context.h (gcc::context): Add GTY((user)) marking. + (gcc::context::operator new): New. + (gcc::context::gt_ggc_mx): New. + (gcc::context::gt_pch_nx): New. + (gcc::context::gt_pch_nx): New. + (g): Add GTY marking. + (gt_ggc_mx (gcc::context *)): New. + (gt_pch_nx (gcc::context *)): New. + (gt_pch_nx (gcc::context *ctxt, gt_pointer_operator op, + void *cookie)): New. + * gengtype.c (open_base_files) : Add context.h. + +2013-08-20 Alexey Makhalov + + * dce.c (fini_dce): Call df_analyze again just in case + delete_unmarked_insns removed anything. + +2013-08-20 Teresa Johnson + + PR rtl-optimizations/57451 + * final.c (reemit_insn_block_notes): Prevent lexical blocks + from crossing split section boundaries. + +2013-08-20 Matthew Gretton-Dann + + * config/arm/linux-elf.h (MULTILIB_DEFAULTS): Remove definition. + * config/arm/t-linux-eabi (MULTILIB_OPTIONS): Document association + with MULTLIB_DEFAULTS. + +2013-08-20 Nick Clifton + + * target.def (narrow_volatile_bitfield): Note that the default + value is false, not !TARGET_STRICT_ALIGN. + * doc/tm.texi: Regenerate. + +2013-08-20 Pavel Chupin + + Fix LIB_SPEC for systems without libpthread. + + * config/gnu-user.h: Introduce GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC. + * config/arm/linux-eabi.h: Use GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC + for Android. + * config/i386/linux-common.h: Likewise. + * config/mips/linux-common.h: Likewise. + +2013-08-20 Zhouyi Zhou + + * tree-ssa-ccp.c (get_default_value): Remove redundant condition + checks. + +2013-08-20 David Malcolm + + Make opt_pass and gcc::pass_manager be GC-managed, so that pass + instances can own GC refs. + + * Makefile.in (GTFILES): Add pass_manager.h and tree-pass.h. + * context.c (gcc::context::gt_ggc_mx): Traverse passes_. + (gcc::context::gt_pch_nx): Likewise. + (gcc::context::gt_pch_nx): Likewise. + * ggc.h (gt_ggc_mx ): New. + (gt_pch_nx_with_op ): New. + (gt_pch_nx ): New. + * passes.c (opt_pass::gt_ggc_mx): New. + (opt_pass::gt_pch_nx): New. + (opt_pass::gt_pch_nx_with_op): New. + (pass_manager::gt_ggc_mx): New. + (pass_manager::gt_pch_nx): New. + (pass_manager::gt_pch_nx_with_op): New. + (pass_manager::operator new): Use + ggc_internal_cleared_alloc_stat rather than xcalloc. + * pass_manager.h (class pass_manager): Add GTY((user)) marking. + (pass_manager::gt_ggc_mx): New. + (pass_manager::gt_pch_nx): New. + (pass_manager::gt_pch_nx_with_op): New. + * tree-pass.h (class opt_pass): Add GTY((user)) marking. + (opt_pass::operator new): New. + (opt_pass::gt_ggc_mx): New. + (opt_pass::gt_pch_nx): New. + (opt_pass::gt_pch_nx_with_op): New. + +2013-08-20 David Malcolm + + * Makefile.in (GTFILES): Add context.h. + * context.c (gcc::context::operator new): New. + (gcc::context::gt_ggc_mx): New. + (gcc::context::gt_pch_nx): New. + (gcc::context::gt_pch_nx): New. + * context.h (gcc::context): Add GTY((user)) marking. + (gcc::context::operator new): New. + (gcc::context::gt_ggc_mx): New. + (gcc::context::gt_pch_nx): New. + (gcc::context::gt_pch_nx): New. + (g): Add GTY marking. + (gt_ggc_mx (gcc::context *)): New. + (gt_pch_nx (gcc::context *)): New. + (gt_pch_nx (gcc::context *ctxt, gt_pointer_operator op, + void *cookie)): New. + * gengtype.c (open_base_files) : Add context.h. + +2013-08-20 Alan Modra + + PR target/57865 + * config/rs6000/rs6000.c (rs6000_emit_prologue): Correct ool_adjust. + (rs6000_emit_epilogue): Likewise. + +2013-08-19 Dehao Chen + + * value-prof.c (gimple_ic): Fix the bug of adding EH edge. + +2013-08-19 Peter Bergner + Jakub Jelinek + + * builtins.def (BUILT_IN_FABSD32): New DFP ABS builtin. + (BUILT_IN_FABSD64): Likewise. + (BUILT_IN_FABSD128): Likewise. + * builtins.c (expand_builtin): Add support for new DFP ABS builtins. + (fold_builtin_1): Likewise. + * config/rs6000/dfp.md (*negtd2_fpr): Handle non-overlapping + destination and source operands. + (*abstd2_fpr): Likewise. + (*nabstd2_fpr): Likewise. + +2013-08-19 Richard Sandiford + + * config/mips/mips.c (mips_adjust_insn_length): Add checks for + JUMP_P and INSN_P. + +2013-08-19 Aldy Hernandez + + * doc/invoke.texi (-fcilkplus): Clarify that implementation is + incomplete. + +2013-08-19 Alexander Ivchenko + + * target.def (TARGET_LIBC_HAS_FUNCTION): New target hook. + * builtins.c (default_libc_has_function): New. + (gnu_libc_has_function): Ditto. + (no_c99_libc_has_function): Ditto. + (expand_builtin_cexpi): Using new target hook TARGET_LIBC_HAS_FUNCTION + instead of TARGET_HAS_SINCOS and TARGET_C99_FUNCTIONS. + (fold_builtin_sincos): Likewise. + (fold_builtin_cexp): Likewise. + * builtins.def (DEF_C94_BUILTIN): Likewise. + (DEF_C99_BUILTIN): Likewise. + (DEF_C99_C90RES_BUILTIN): Likewise. + (DEF_C99_COMPL_BUILTIN): New define. Change all complex c99 builtin + definitions to using this define. + * config/darwin-protos.h (darwin_libc_has_function): New. + * config/darwin.c (darwin_libc_has_function): Ditto. + * config/alpha/linux.h: Remove TARGET_C99_FUNCTIONS and + TARGET_HAS_SINCOS. Redefine TARGET_LIBC_HAS_FUNCTION. + * config/darwin.h: Ditto. + * config/elfos.h: Ditto. + * config/freebsd.h: Ditto. + * config/i386/cygming.h: Ditto. + * config/i386/djgpp.h: Ditto. + * config/i386/i386-interix.h: Ditto. + * config/microblaze/microblaze.h: Ditto. + * config/mmix/mmix.h: Ditto. + * config/gnu-user.h: Ditto. + * config/ia64/hpux.h: Ditto. + * config/pa/pa-hpux.h: Ditto. + * config/pdp11/pdp11.h: Ditto. + * config/picochip/picochip.h: Ditto. + * config/linux.h: Ditto. + * config/netbsd.h: Ditto. + * config/openbsd.h: Ditto. + * config/rs6000/aix43.h: Ditto. + * config/rs6000/aix51.h: Ditto. + * config/rs6000/aix52.h: Ditto. + * config/rs6000/aix53.h: Ditto. + * config/rs6000/aix61.h: Ditto. + * config/rs6000/darwin.h: Ditto. + * config/rs6000/linux.h: Ditto. + * config/rs6000/linux64.h: Ditto. + * config/s390/tpf.h: Ditto. + * config/sol2-10.h: Ditto. + * config/sol2.h: Ditto. + * config/vms/vms.h: Ditto. + * config/vxworks.h: Ditto. + * config/linux-android.c (linux_android_libc_has_function): + New linux-specific implementation of TARGET_LIBC_HAS_FUNCTION. + * config/linux-protos.h (linux_android_libc_has_function): + New declaration. + * config/i386/i386.c (ix86_libc_has_function): New. + * config/i386/i386-protos.h + (ix86_libc_has_function): New declaration. + * config/i386/i386.md + ("isinfxf2"): Change condition for TARGET_LIBC_HAS_FUNCTION. + ("isinf2): Likewise. + * convert.c (convert_to_integer): Using new target hook + TARGET_LIBC_HAS_FUNCTION istead of TARGET_HAS_SINCOS and + TARGET_C99_FUNCTIONS. + * fortran/f95-lang.c (gfc_init_builtin_functions): Ditto. + * tree-ssa-math-opts.c (execute_cse_sincos): Ditto. + * coretypes.h (function_class): New enum for different + classes of functions. + * defaults.h: Remove TARGET_C99_FUNCTIONS and TARGET_HAS_SINCOS. + * doc/tm.texi.in (TARGET_C99_FUNCTIONS): Remove documentation. + (TARGET_HAS_SINCOS): Likewise. + (TARGET_LIBC_HAS_FUNCTION): New. + * doc/tm.texi: Regenerated. + * targhooks.h (default_libc_has_function): New declaration. + (no_c99_libc_has_function): Ditto. + (gnu_libc_has_function): Ditto. + * system.h: Add the poisoning of TARGET_C99_FUNCTIONS + and TARGET_HAS_SINCOS. + +2013-08-18 Jan Hubicka + + * Makeifle-in (ipa-devirt.o): New. + (GTFILES): Add ipa-utils.h and ipa-devirt.c + * cgraphunit.c (decide_is_symbol_needed): Do not care about virtuals. + (analyze_functions): Look into possible targets of polymorphic call. + * dumpfile.c (dump_files): Add type-inheritance dump. + * dumpfile.h (TDI_inheritance): New. + * ipa-devirt.c: New file. + * ipa-utils.h (odr_type_d): Forward declare. + (odr_type): New type. + (build_type_inheritance_graph): Declare. + (possible_polymorphic_call_targets): Declare and introduce inline + variant when only edge is pased. + (dump_possible_polymorphic_call_targets): Likewise. + * timevar.def (TV_IPA_INHERITANCE, TV_IPA_VIRTUAL_CALL): New. + * tree.c (type_in_anonymous_namespace_p): Break out from ... + (types_same_for_odr): ... here. + * tree.h (type_in_anonymous_namespace_p): Declare. + +2013-08-18 Jakub Jelinek + + PR tree-optimization/58006 + * tree-parloops.c (take_address_of): Don't ICE if get_name + returns NULL. + (eliminate_local_variables_stmt): Remove clobber stmts. + +2013-08-18 Eric Botcazou + + * cgraphunit.c (handle_alias_pairs): Reset the alias flag after the + error message is issued for an alias to undefined symbol. + +2013-08-18 Jan Hubicka + + * cgraph.c (cgraph_create_indirect_edge): Discover + polymorphic calls and record basic info into indirect_info. + * gimple-fold.c (gimple_fold_call): When doing BINFO based + devirtualization, ignore objc function calls. + * ipa-cp.c (initialize_node_lattices): Be ready for polymorphic + call with no parm index info. + * ipa-prop.c (ipa_analyze_call_uses): Likewise. + * tree.c (virtual_method_call_p): New function. + * tree.h (virtual_method_call_p): Declare. + +2013-08-16 Jan Hubicka + + PR middle-end/58179 + * tree.c (obj_type_ref_class): Do not ICE on non-method calls. + +2013-08-16 David Edelsohn + + * config/rs6000/rs6000.md (rs6000_get_timebase_ppc32): Add length + attribute. + +2013-08-16 David Malcolm + + * gengtype.c (type_for_name): Add special-case support for + locating types within the "gcc::" namespace. + (open_base_files): Emit a "using namespace gcc" directive. + +2013-08-16 Michael Meissner + + PR target/58160 + * config/rs6000/predicates.md (fusion_gpr_mem_load): Allow the + memory rtx to contain ZERO_EXTEND and SIGN_EXTEND. + + * config/rs6000/rs6000-protos.h (fusion_gpr_load_p): Pass operands + array instead of each individual operand as a separate argument. + (emit_fusion_gpr_load): Likewise. + (expand_fusion_gpr_load): Add new function declaration. + + * config/rs6000/rs6000.c (fusion_gpr_load_p): Change the calling + signature to have the operands passed as an array, instead of as + separate arguments. Allow ZERO_EXTEND to be in the memory + address, and also SIGN_EXTEND if -mpower8-fusion-sign. Do not + depend on the register live/dead flags when peepholes are run. + (expand_fusion_gpr_load): New function to be called from the + peephole2 pass, to change the register that addis sets to be the + target register. + (emit_fusion_gpr_load): Change the calling signature to have the + operands passed as an array, instead of as separate arguments. + Allow ZERO_EXTEND to be in the memory address, and also + SIGN_EXTEND if -mpower8-fusion-sign. + + * config/rs6000/rs6000.md (UNSPEC_FUSION_GPR): Delete unused + unspec enumeration. + (power8 fusion peephole/peephole2): Rework the fusion peepholes to + adjust the register addis loads up in the peephole2 pass. Do not + depend on the register live/dead state when the peephole pass is done. + +2013-08-16 David Malcolm + + * gengtype.c (create_user_defined_type): Ensure that the kind + is set to TYPE_USER_STRUCT, fixing a bug seen when an incomplete + declaration is seen before the GTY((user)) marking. + +2013-08-16 Bernd Edlinger + + PR target/58105 + * config/i386/i386.c (make_resolver_func): Set DECL_UNINLINABLE. + +2013-08-16 Jan Hubicka + + * gimple-fold.c (gimple_extract_devirt_binfo_from_cst): Add new + arugment expected_type. + (gimple_fold_call): Use it. + * gimple.h (gimple_extract_devirt_binfo_from_cst): Update prototype. + * ipa-cp.c (ipa_get_indirect_edge_target_1): Update. + * ipa-prop.c (ipa_analyze_virtual_call_uses): Use obj_type_ref_class. + (try_make_edge_direct_virtual_call): Likewise. + * tree.c (obj_type_ref_class): New. + * tree.h (obj_type_ref_class): Use it. + +2013-08-16 Gabriel Dos Reis + + * sched-vis.c (rtl_slim_pp_initialized): Remove. + (rtl_slim_pp): Likewise. + (init_rtl_slim_pretty_print): Likewise. + (dump_value_slim): Don't call it. Use local pretty printer. + (dump_insn_slim): Likewise. + (dump_rtl_slim): Likewise. + (str_pattern_slim): Likewise. + * tree-mudflap.c (mf_varname_tree): Use local pretty printer. + Simplify. + +2013-08-16 Jakub Jelinek + + PR tree-optimization/58164 + * gimple.c (walk_stmt_load_store_addr_ops): For visit_addr + walk gimple_goto_dest of GIMPLE_GOTO. + + PR tree-optimization/58165 + * tree-call-cdce.c (shrink_wrap_one_built_in_call): If + bi_call must be the last stmt in a bb, don't split_block, instead + use fallthru edge from it and give up if there is none. + Release conds vector when returning early. + +2013-08-14 Xinliang David Li + + * config/i386/i386.c (ix86_option_override_internal): + Remove unused variable and field. + +2013-08-14 Bill Schmidt + + PR target/57949 + * doc/invoke.texi: Add documentation of mcompat-align-parm option. + * config/rs6000/rs6000.opt: Add mcompat-align-parm option. + * config/rs6000/rs6000.c (rs6000_function_arg_boundary): For AIX + and Linux, correct BLKmode alignment when 128-bit alignment is + required and compatibility flag is not set. + (rs6000_gimplify_va_arg): For AIX and Linux, honor specified alignment + for zero-size arguments when compatibility flag is not set. + +2013-08-14 Jakub Jelinek + + PR tree-optimization/58145 + * tree-sra.c (build_ref_for_offset): If prev_base has + TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS, propagate it to MEM_REF. + +2013-08-14 Xinliang David Li + + * config/i386/i386.c (ix86_option_override_internal): + Fix uninitialized variable error. + +2013-08-14 Xinliang David Li + + * config/i386/i386.opt: Define two new options. + * config/i386/x86-tune.def: Add arch selector field in macros. + * config/i386/i386.h: Adjust macro definition. + * config/i386/i386.c (ix86_option_override_internal): + Refactor the code. + (parse_mtune_ctrl_str): New function. + (set_ix86_tune_features): New function. + (ix86_function_specific_restore): Call the new helper function. + +2013-08-14 Andrey Belevantsev + + PR rtl-optimization/57662 + * sel-sched.c (code_motion_process_successors): When the current insn + is removed after the recursive traversal, break from the loop. + Add comments and debug printouts. + +2013-08-14 Jakub Jelinek + Alexandre Oliva + + PR target/58067 + * config/i386/i386.c (ix86_delegitimize_address): For CM_MEDIUM_PIC + and CM_LARGE_PIC ix86_cmodel fall thru into the -m32 code, handle + there also UNSPEC_PLTOFF. + +2013-08-14 Marek Polacek + + * ipa-inline-analysis.c (add_clause): Avoid shifting integer + NUM_CONDITIONS bit positions. + +2013-08-13 Cary Coutant + + * dwarf2out.c (CHECKSUM_BLOCK): New macro. + (attr_checksum): Hash vector contents instead of pointer. + (attr_checksum_ordered): Likewise. + +2013-08-13 Uros Bizjak + + * config/i386/sse.md (*sse2_maskmovdqu): Emit addr32 prefix + when Pmode != word_mode. Add length_address attribute. + (sse3_monitor_): Merge from sse3_monitor and + sse3_monitor64_ insn patterns. Emit addr32 prefix when + Pmode != word_mode. Update insn length attribute. + * config/i386/i386.c (ix86_option_override_internal): Update + ix86_gen_monitor selection for merged sse3_monitor insn. + +2013-08-13 Julian Brown + + * config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Don't + perform invalid legitimization on greater-than-word-size modes for + TARGET_E500_DOUBLE. + +2013-08-13 Vladimir Makarov + + * ira.c (setup_class_translate_array): Use aclass instead of cl + for classes not fully covered by allocno classes. + +2013-08-13 Jakub Jelinek + + PR tree-optimization/57661 + * tree-inline.h (struct copy_body_data): Add blocks_to_copy field. + * tree-inline.c (tree_function_versioning): Initialize it. + (remap_gimple_stmt): Return GIMPLE_NOP for MEM_REF lhs clobber stmts + if id->blocks_to_copy and MEM_REF's SSA_NAME is defined in a block + that is not being copied. + + PR sanitizer/56417 + * asan.c (instrument_strlen_call): Fix typo in comment. + Use char * type even for the lhs of POINTER_PLUS_EXPR. + +2013-08-13 Steve Ellcey + + * config/mips/mips.md (prefetch): Use lw instead of ld on + loongson in 32bit mode. + +2013-08-13 Nick Clifton + + * config.gcc: (avr-linux): Allow for tmake_file not being empty. + +2013-08-13 Jan Hubicka + + * cgraph.c (cgraph_turn_edge_to_speculative): Return newly + introduced edge; fix typo in sanity check. + (cgraph_resolve_speculation): Export; improve diagnostic. + (cgraph_redirect_edge_call_stmt_to_callee): Better diagnostic; cancel + speculation at type mismatch. + * cgraph.h (cgraph_turn_edge_to_speculative): Update. + (cgraph_resolve_speculation): Declare. + (symtab_can_be_discarded): New function. + * value-prof.c (gimple_ic_transform): Remove actual transform code. + * ipa-inline-transform.c (speculation_removed): New global var. + (clone_inlined_nodes): See if speculation can be removed. + (inline_call): If speculations was removed, we growths may not match. + * ipa-inline.c (can_inline_edge_p): Add DISREGARD_LIMITS parameter. + (speculation_useful_p): New function. + (resolve_noninline_speculation): New function. + (inline_small_functions): Resolve useless speculations. + * ipa-inline.h (speculation_useful_p): Declare + * ipa.c (can_replace_by_local_alias): Simplify. + (ipa_profile): Produce speculative calls in non-lto, too; + add simple cost model; produce local aliases. + +2013-08-13 David Malcolm + + * config/i386/t-i386 (i386.o): Rename stray PIPELINE_H to + PASS_MANAGER_H. + +2013-08-12 Paolo Carlini + + * config/i386/i386.c (ix86_function_versions): Use error + inform. + +2013-08-12 Uros Bizjak + + * config/i386/i386.md (floatunssi2 expand): Use MODEF mode + iterator instead of X87MODEF. + +2013-08-12 Perez Read + + PR target/58132 + * config/i386/i386.md (*movabs_1): Add PTR before + operand 0 for intel asm alternative. + (*movabs_2): Ditto for operand 1. + +2013-08-12 James Greenhalgh + + * config/aarch64/arm_none.h + (vdup_lane_<8,16,32,64>): Fix macro call. + +2013-08-12 Nick Clifton + + * config.gcc (m32r-linux): Allow for tmake_file not being empty. + +2013-08-12 Yuri Rumyantsev + + * config/i386/i386.md (floatunssi2 expand): Add new + expand for QI/HImode operand to produce more effictive code for + unsigned char(short) --> float(double) conversion. + +2013-08-12 Alexander Monakov + + * doc/invoke.texi: Mention that -ftls-model does not force the final + model. + +2013-08-12 Marek Polacek + Marc Glisse + + PR tree-optimization/57980 + * tree-tailcall.c (process_assignment): Call build_minus_one_cst + when creating -1 constant. + +2013-08-10 Jan Hubicka + + Workaround binutils PR14342. + * tree-profile.c (init_ic_make_global_vars): Add LTO path. + (gimple_init_edge_profiler): Likewise. + (gimple_gen_ic_func_profiler): Likewise. + +2013-08-09 Jan Hubicka + + * cgraph.c (cgraph_create_edge_1): Clear speculative flag. + +2013-08-09 Xinliang David Li + + * config/i386/stringop.def: New file. + * config/i386/stringop.opt: New file. + * config/i386/i386-opts.h: Include stringopt.def. + * config/i386/i386.opt: Include stringopt.opt. + * config/i386/i386.c (ix86_option_override_internal): + Override default size based stringop inline strategies with options. + * config/i386/i386.c (ix86_parse_stringop_strategy_string): + New function. + +2013-08-09 Jan Hubicka + + * ipa-ref.c (ipa_clear_stmts_in_references): Clear lto_stmt_uid, too. + +2013-08-09 Jan Hubicka + + * cgraph.c (cgraph_resolve_speculation): Cut frequency to + CGRAPH_FREQ_MAX. + (dump_cgraph_node): Dump profile-id. + * cgraph.h (cgraph_indirect_call_info): Add common_target_id + and common_target_probability. + * lto-cgraph.c (lto_output_edge): Stream common targets. + (lto_output_node): Stream profile ids. + (input_node): Stream profile ids. + (input_edge): Stream common targets. + * lto-streamer-in.c (fixup_call_stmt_edges_1): Fix formatting. + * ipa.c: Include value-prof.h + (ipa_profile_generate_summary): Turn indirect call statement histograms + into common targets. + (ipa_profile): Turn common targets into speculative edges. + +2013-08-09 Jan Hubicka + + * cgraph.h (cgraph_node): Add profile_id. + * value-prof.c (cgraph_node_map): Turn into pointer_map. + (init_node_map): Rewrite to handle hashes increas of incremental IDs. + (del_node_map): Update. + (find_func_by_funcdef_no): Replace by ... + (find_func_by_profile_id): ... this one. + (gimple_ic_transform): Do not remove useful histograms when + speculation is not done; dump info when indirect call removal + can happen at LTO. + * value-prof.h (find_func_by_profile_id, gimple_ic): Declare. + * gcov-io.h (__gcov_indirect_call_profiler): Replace by ... + (__gcov_indirect_call_profiler_v2): .. this one. + * profile.h (init_node_map): Update. + * coverage.c (coverage_compute_profile_id): New function. + * coverage.h (coverage_compute_profile_id): Declare. + * tree-profile.c (init_ic_make_global_vars): Make + __gcov_indirect_call_callee and __gcov_indirect_call_counters global. + (gimple_init_edge_profiler): Update prototype of + __gcov_indirect_call_profiler. + (gimple_gen_ic_func_profiler): Simplify. + (tree_profiling): Use init_node_map + +2013-08-09 Jan Hubicka + + * cgraphbuild.c (cgraph_rebuild_references): Rebuild only + non-speculative refs. + * cgraph.c (cgraph_update_edge_in_call_site_hash): New function. + (cgraph_add_edge_to_call_site_hash): Deal with speculative calls. + (cgraph_set_call_stmt): Likewise. + (cgraph_create_edge_1): Fix release checking compilatoin; + clear lto_stmt_uid. + (cgraph_free_edge): Free indirect info. + (cgraph_turn_edge_to_speculative): New function. + (cgraph_speculative_call_info): New function. + (cgraph_make_edge_direct): Return direct edge; handle speculation. + (cgraph_redirect_edge_call_stmt_to_callee): Expand speculative edges. + (dump_cgraph_node): Dump speculation. + (verify_edge_count_and_frequency): Accept speculative edges. + (verify_edge_corresponds_to_fndecl): Handle partitioned cgraph. + (verify_cgraph_node): Handle speculation. + * cgraph.h (cgraph_edge): Add SPECULATIVE flag. + (cgraph_set_call_stmt): Update prototype. + (cgraph_make_edge_direct): Update prototype. + (cgraph_speculative_call_info): Declare. + * ipa-cp.c (ipcp_discover_new_direct_edges): Be ready for edge + to change; update call of ipa_find_references. + * ipa-ref.c (ipa_record_reference): Fix return value; clear + lto_stmt_uid and speculative flags. + (ipa_dump_references): Dump speculation. + (ipa_clone_references): Clone speculative flag. + (ipa_clone_referring): Likewise. + (ipa_clone_ref): New function. + (ipa_find_reference): Look into lto_stmt_uids + (ipa_clear_stmts_in_references): Do not clear speculative calls. + * ipa-ref.h (ipa_ref): Add lto_stmt_uid and speculative flags. + (ipa_find_reference): Update declaration. + (ipa_clone_ref): Declare. + * lto-cgraph.c (lto_output_edge): Make lto_stmt_uids start from 0; + stream speculative flag. + (lto_output_ref): Stream statements uids and speculation. + (input_ref): Likewise. + (input_edge): Stream speuclation. + * cgraphclones.c (cgraph_clone_edge): Clone speculation. + (cgraph_set_call_stmt_including_clones): Handle speculation. + * ipa-inline.c (heap_edge_removal_hook): New function. + (inline_small_functions): Register it. + * lto-streamer-in.c (fixup_call_stmt_edges_1): Bounds checking; + also initialize refs. + * ipa-prop.c (ipa_make_edge_direct_to_target): Be ready for + edge to change. + (try_make_edge_direct_simple_call): Likewise. + (try_make_edge_direct_simple_call): Likewise. + (update_indirect_edges_after_inlining): Likewise. + (remove_described_reference): Look proper lto_stmt_uid. + (propagate_controlled_uses): Likewise. + (propagate_controlled_uses): Liekwise. + * tree-inline.c (copy_bb): Copy speculative edges. + (redirect_all_calls): New function. + (copy_cfg_body): Do redirection after loop info is updated. + (delete_unreachable_blocks_update_callgraph): Updadte speculation. + +2013-08-09 Jan Hubicka + + * lto-streamer-out.c (output_function): Renumber PHIs. + * lto-streamer-in.c (input_function): Likewise. + +2013-08-09 James Greenhalgh + + * config/aarch64/aarch64-simd-builtins.def (get_lane_signed): Remove. + (get_lane_unsigned): Likewise. + (dup_lane_scalar): Likewise. + (get_lane): enable for VALL. + * config/aarch64/aarch64-simd.md + (aarch64_dup_lane_scalar): Remove. + (aarch64_get_lane_signed): Likewise. + (aarch64_get_lane_unsigned): Likewise. + (aarch64_get_lane_extend): New. + (aarch64_get_lane_zero_extendsi): Likewise. + (aarch64_get_lane): Enable for all vector modes. + (aarch64_get_lanedi): Remove misleading constraints. + * config/aarch64/arm_neon.h + (__aarch64_vget_lane_any): Define. + (__aarch64_vget_lane_<8,16,32,64>): Likewise. + (vget_lane_<8,16,32,64>): Use __aarch64_vget_lane macros. + (vdup_lane_<8,16,32,64>): Likewise. + * config/aarch64/iterators.md (VDQQH): New. + (VDQQHS): Likewise. + (vwcore): Likewise. + +2013-08-09 Eric Botcazou + + * configure.ac: Add GAS check for LEON instructions on SPARC. + * configure: Regenerate. + * config.in: Likewise. + * config.gcc (with_cpu): Remove sparc-leon*-* and deal with LEON in the + sparc*-*-* block. + * config/sparc/sparc.opt (LEON, LEON3): New masks. + * config/sparc/sparc.h (ASM_CPU32_DEFAULT_SPEC): Set to AS_LEON_FLAG + for LEON or LEON3. + (ASM_CPU_SPEC): Pass AS_LEON_FLAG if -mcpu=leon or -mcpu=leon3. + (AS_LEON_FLAG): New macro. + * config/sparc/sparc.c (sparc_option_override): Set MASK_LEON for leon + and MASK_LEON3 for leon3 and unset them if HAVE_AS_LEON is not defined. + Deal with LEON and LEON3 for the memory model. + * config/sparc/sync.md (atomic_compare_and_swap): Enable if LEON3 + (atomic_compare_and_swap_1): Likewise. + (*atomic_compare_and_swap_1): Likewise. + +2013-08-09 Zhenqiang Chen + + * config/arm/neon.md (vcond): Fix floating-point vector + comparisons against 0. + +2013-08-08 Vladimir Makarov + + * lra-constraints.c (emit_spill_move): Remove assert. + (process_alt_operands): Add more debugging + output. Increase reject for spilling into memory. Decrease + reject for reloading scratch. + (split_reg): Use HARD_REGNO_CALLER_SAVE_MODE. + +2013-08-08 Steve Ellcey + + * config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add nan2008. + * config/mips/t-mti-elf (MULTILIB_OPTIONS): Make mips16 and + micromips incompatible. Add nan2008. + (MULTILIB_DIRNAMES): Add nan2008. + (MULTILIB_EXCEPTIONS): Remove mips16/micromips entry. + * config/mips/t-mti-linux (MULTILIB_OPTIONS): Make mips16 + and micromips incompatible. Add nan2008. + (MULTILIB_DIRNAMES): Add nan2008. + (MULTILIB_EXCEPTIONS): Remove mips16/micromips entry. + +2013-08-08 Richard Sandiford + + PR rtl-optimization/58079 + * combine.c (combine_simplify_rtx): Avoid using SUBST if + simplify_comparison has widened a comparison with an integer. + +2013-08-08 Kyrylo Tkachov + + * config/arm/neon.md (movmisalign): Disable when we + don't allow unaligned accesses. + (*movmisalign_neon_store): Likewise. + (*movmisalign_neon_load): Likewise. + (*movmisalign_neon_store): Likewise. + (*movmisalign_neon_load): Likewise. + +2013-08-08 Jan Hubicka + + * cgraphbuild.c (build_cgraph_edges): Do not walk into debugs. + (make_pass_rebuild_cgraph_edges): Also clear references. + * cgraph.c (verify_cgraph_node): Add basic ipa-ref verifier. + * ipa-inline-transform.c (inline_transform): Remove all references + after inlining. + * cgraphunit.c (expand_function): Remove all references after + expansion. + * ipa-ref.c (ipa_ref_has_aliases_p): Fix formatting. + (ipa_find_reference): Rewrite to iterator. + (remove_stmt_references): Likewise. + (ipa_clear_stmts_in_references): New function. + * ipa-ref.h (ipa_clear_stmts_in_references): Declare. + * cgraphclones.c (cgraph_materialize_all_clones): Remove or + clear references. + * ipa-split.c (split_function): Remove references in split function. + +2013-08-08 Richard Earnshaw + + PR target/57431 + * config/arm/arm/neon.md (neon_vld1_dupdi): New expand pattern. + (neon_vld1_dup VD iterator): Iterate over VD not VDX. + +2013-08-08 Richard Earnshaw + + PR target/56979 + * config/arm/arm.c (aapcs_vfp_allocate): Decompose the argument if the + suggested mode for the assignment isn't compatible with the + registers required. + +2013-08-08 Bernd Edlinger + + PR target/58065 + * config/arm/arm.h (MALLOC_ABI_ALIGNMENT): Define. + +2013-08-07 Xinliang David Li + + * config/i386/i386.opt: New option -mtune-ctrl=. + * config/i386/x86-tune.def: New file. + * config/i386/i386.h: include x86-tune.def. + * config/i386/i386.c (ix86_option_override_internal): + Parsing -mtune-ctrl= option and set tune features. + +2013-08-07 Oleg Endo + + PR other/12081 + * config/rs6000/rs6000.c (gen_2arg_fn_t): Remove typedef. + (rs6000_emit_swdiv, rs6000_emit_swrsqrt): Don't cast result of GEN_FCN + to gen_2arg_fn_t. + +2013-08-07 Eric Botcazou + + * rtl.h (update_alignments): Declare. + * final.c (grow_label_align): New function extracted from... + (shorten_branches): ...here. Call it. + (update_alignments): New function. + * reorg.c (sibling_labels): New variable. + (get_label_before): Add SIBLING parameter. If it is non-zero, push + the new label along with it onto the sibling_labels vector. + (fill_simple_delay_slots): Adjust call to get_label_before. + (fill_slots_from_thread): Likewise. + (relax_delay_slots): Likewise. + (make_return_insns): Likewise. + (dbr_schedule): Invoke update_alignment on the sibling_labels vector. + +2013-08-07 Eric Botcazou + + * diagnostic.c (diagnostic_classify_diagnostic): Accept zero index and + document its semantics. + (diagnostic_report_diagnostic): Adjust accordingly. + +2013-08-07 David Malcolm + + * config/sparc/sparc.c (insert_pass_work_around_errata): Move into... + (sparc_option_override): ...and port to new C++ pass API. + * config/sparc/t-sparc (sparc.o): Add dep on CONTEXT_H + +2013-08-07 Peter Bergner + + * config/rs6000/rs6000.c (htm_expand_builtin) : Remove. + +2013-08-06 Caroline Tice + + * gcc.c (VTABLE_VERIFICATION_SPEC): New definition. + (LINK_COMMAND_SPEC): Add VTABLE_VERIFICATION_SPEC. + * tree-pass.h: Add pass_vtable_verify. + * varasm.c (assemble_variable): Add code to properly set the comdat + section and name for the .vtable_map_vars section. + (assemble_vtyv_preinit_initializer): New function. + (default_sectin_type_flags): Make sure .vtable_map_vars section has + LINK_ONCE flag. + * output.h: Add function decl for assemble_vtv_preinit_initializer. + * vtable-verify.c: New file. + * vtable-verify.h: New file. + * flag-types.h (enum vtv_priority): Defintions for flag_vtable_verify + initialiation levels. + * timevar.def (TV_VTABLE_VERIFICATION): New definition. + * passes.def: Insert pass_vtable_verify. + * aclocal.m4: Reorder includes. + * doc/invoke.texi: Document the -fvtable-verify=, -fvtv-debug, and + -fvtv-counts options. + * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add vtv_start*.o, + as appropriate, if -fvtable-verify=... is used. + (GNU_USER_TARGET_ENDFILE_SPEC): Add vtv_end*.o as appropriate, if + -fvtable-verify=... is used. + * Makefile.in (OBJS): Add vtable-verify.o to list. + (vtable-verify.o): Add new build rule. + (GTFILES): Add vtable-verify.c to list. + * common.opt (fvtable-verify=): New flag. + (vtv_priority): Values for fvtable-verify= flag. + (fvtv-counts): New flag. + (fvtv-debug): New flag. + * tree.h (save_vtable_map_decl): New extern function decl. + +2013-08-07 David Malcolm + + * config/rl78/rl78.c (rl78_devirt_pass): Convert from a struct to... + (pass_rl78_devirt): ...new subclass of rtl_opt_pass along with... + (pass_data_rl78_devirt): ...new pass_data instance and... + (make_pass_rl78_devirt): ...new function. + (rl78_asm_file_start): Port pass registration to new C++ API. + +2013-08-07 David Malcolm + + * coretypes.h (rtl_opt_pass): Add. + (gcc::context): Add. + * config/epiphany/epiphany.c (pass_mode_switch_use): New. + (epiphany_init): Port to new C++ pass API. + (epiphany_optimize_mode_switching): Likewise. + * pass_manager.h (pass_manager::get_pass_split_all_insns): New. + (pass_manager::get_pass_mode_switching): New. + (pass_manager::get_pass_peephole2): New. + * mode-switching.c (pass_mode_switching): Add clone method. + * recog.c (pass_peephole2): Add clone method. + (pass_split_all_insns): Add clone method. + +2013-08-06 David Malcolm + + * config/mips/mips.c (insert_pass_mips_machine_reorg2): Move into... + (mips_option_override): ...here, porting to new C++ API for passes. + +2013-08-06 Jan Hubicka + + * cgraph.c (cgraph_get_body): New function based on lto.c + implementation. + * cgraph.h (cgraph_get_body): Declare. + * cgraphclones.c (cgraph_create_virtual_clone): Commonize WPA and + LTO paths. + * cgraphunit.c (expand_function): Get body prior expanding. + * ipa.c (function_and_variable_visibility): Use gimple_has_body_p test. + * lto-cgraph.c (lto_output_node): Do not stream bodies we don't + really need. + * passes.c (do_per_function_toporder): Get body. + * tree-inline.c (expand_call_inline): Get body prior inlining it. + * tree-ssa-structalias.c (ipa_pta_execute): Get body; skip clones. + +2013-08-06 Martin Jambor + + PR fortran/57987 + * cgraphunit.c (cgraph_finalize_function): Assert that nested function + is not re-finalized. Rename second parameter to no_collect. + +2013-08-06 Martin Jambor + + PR middle-end/58041 + * gimple-ssa-strength-reduction.c (replace_ref): Make sure built + MEM_REF has proper alignment information. + +2013-08-05 Oleg Endo + + PR other/12081 + * recog.h (rtx (*insn_gen_fn) (rtx, ...)): Replace typedef with new + class insn_gen_fn. + * expr.c (move_by_pieces_1, store_by_pieces_2): Replace argument + rtx (*) (rtx, ...) with insn_gen_fn. + * genoutput.c (output_insn_data): Cast gen_? function pointers to + insn_gen_fn::stored_funcptr. Add initializer braces. + +2013-08-05 David Malcolm + + Rewrite how instances of passes are cloned to remove assumptions + about their sizes (thus allowing pass subclasses to have + additional data fields, albeit non-GC-managed ones at this point). + + * passes.c (make_pass_instance): Now that passes have clone + methods, rewrite this function to eliminate XNEW and memcpy + calls that used hardcoded sizes. Since this function no longer + creates pass instances, rename it to... + (add_pass_instance): ...this. Document the old way that passes were + numbered and flagged, and rework this function to continue using it. + (next_pass_1): Add an initial_pass argument for use by + add_pass_instance. + (position_pass): When adding multiple instances of a pass, use + the pass's clone method, rather than relying on the XNEW/memcpy + within the former make_pass_instance (now add_pass_instance). + (pass_manager::pass_manager): When invoking next_pass_1, also supply + the initial instance of the current pass within the pass manager. + +2013-08-05 David Malcolm + + This is the automated part of the conversion of passes from C + structs to C++ classes. + + Patch autogenerated by refactor_passes.py from + https://github.com/davidmalcolm/gcc-refactoring-scripts + revision 03fe39476a4c4ea450b49e087cfa817b5f92021e + + * asan.c (pass_asan): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_asan): ...new pass_data instance and... + (make_pass_asan): ...new function. + (pass_asan_O0): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_asan_O0): ...new pass_data instance and... + (make_pass_asan_O0): ...new function. + * auto-inc-dec.c (pass_inc_dec): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_inc_dec): ...new pass_data instance and... + (make_pass_inc_dec): ...new function. + * bb-reorder.c (pass_reorder_blocks): Convert from a global struct to + a subclass of rtl_opt_pass along with... + (pass_data_reorder_blocks): ...new pass_data instance and... + (make_pass_reorder_blocks): ...new function. + (pass_duplicate_computed_gotos): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_duplicate_computed_gotos): ...new pass_data instance and... + (make_pass_duplicate_computed_gotos): ...new function. + (pass_partition_blocks): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_partition_blocks): ...new pass_data instance and... + (make_pass_partition_blocks): ...new function. + * bt-load.c (pass_branch_target_load_optimize1): Convert from a global + struct to a subclass of rtl_opt_pass along with... + (pass_data_branch_target_load_optimize1): ...new pass_data instance + and... + (make_pass_branch_target_load_optimize1): ...new function. + (pass_branch_target_load_optimize2): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_branch_target_load_optimize2): ...new pass_data instance + and... + (make_pass_branch_target_load_optimize2): ...new function. + * cfgcleanup.c (pass_jump): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_jump): ...new pass_data instance and... + (make_pass_jump): ...new function. + (pass_jump2): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_jump2): ...new pass_data instance and... + (make_pass_jump2): ...new function. + * cfgexpand.c (pass_expand): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_expand): ...new pass_data instance and... + (make_pass_expand): ...new function. + * cfgrtl.c (pass_free_cfg): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_free_cfg): ...new pass_data instance and... + (make_pass_free_cfg): ...new function. + (pass_into_cfg_layout_mode): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_into_cfg_layout_mode): ...new pass_data instance and... + (make_pass_into_cfg_layout_mode): ...new function. + (pass_outof_cfg_layout_mode): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_outof_cfg_layout_mode): ...new pass_data instance and... + (make_pass_outof_cfg_layout_mode): ...new function. + * cgraphbuild.c (pass_build_cgraph_edges): Convert from a global + struct to a subclass of gimple_opt_pass along with... + (pass_data_build_cgraph_edges): ...new pass_data instance and... + (make_pass_build_cgraph_edges): ...new function. + (pass_rebuild_cgraph_edges): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_rebuild_cgraph_edges): ...new pass_data instance and... + (make_pass_rebuild_cgraph_edges): ...new function. + (pass_remove_cgraph_callee_edges): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_remove_cgraph_callee_edges): ...new pass_data instance + and... + (make_pass_remove_cgraph_callee_edges): ...new function. + * combine-stack-adj.c (pass_stack_adjustments): Convert from a global + struct to a subclass of rtl_opt_pass along with... + (pass_data_stack_adjustments): ...new pass_data instance and... + (make_pass_stack_adjustments): ...new function. + * combine.c (pass_combine): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_combine): ...new pass_data instance and... + (make_pass_combine): ...new function. + * compare-elim.c (pass_compare_elim_after_reload): Convert from a + global struct to a subclass of rtl_opt_pass along with... + (pass_data_compare_elim_after_reload): ...new pass_data instance + and... + (make_pass_compare_elim_after_reload): ...new function. + * cprop.c (pass_rtl_cprop): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_rtl_cprop): ...new pass_data instance and... + (make_pass_rtl_cprop): ...new function. + * cse.c (pass_cse): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_cse): ...new pass_data instance and... + (make_pass_cse): ...new function. + (pass_cse2): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_cse2): ...new pass_data instance and... + (make_pass_cse2): ...new function. + (pass_cse_after_global_opts): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_cse_after_global_opts): ...new pass_data instance and... + (make_pass_cse_after_global_opts): ...new function. + * dce.c (pass_ud_rtl_dce): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_ud_rtl_dce): ...new pass_data instance and... + (make_pass_ud_rtl_dce): ...new function. + (pass_fast_rtl_dce): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_fast_rtl_dce): ...new pass_data instance and... + (make_pass_fast_rtl_dce): ...new function. + * df-core.c (pass_df_initialize_opt): Convert from a global struct to + a subclass of rtl_opt_pass along with... + (pass_data_df_initialize_opt): ...new pass_data instance and... + (make_pass_df_initialize_opt): ...new function. + (pass_df_initialize_no_opt): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_df_initialize_no_opt): ...new pass_data instance and... + (make_pass_df_initialize_no_opt): ...new function. + (pass_df_finish): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_df_finish): ...new pass_data instance and... + (make_pass_df_finish): ...new function. + * dse.c (pass_rtl_dse1): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_rtl_dse1): ...new pass_data instance and... + (make_pass_rtl_dse1): ...new function. + (pass_rtl_dse2): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_rtl_dse2): ...new pass_data instance and... + (make_pass_rtl_dse2): ...new function. + * dwarf2cfi.c (pass_dwarf2_frame): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_dwarf2_frame): ...new pass_data instance and... + (make_pass_dwarf2_frame): ...new function. + * except.c (pass_set_nothrow_function_flags): Convert from a global + struct to a subclass of rtl_opt_pass along with... + (pass_data_set_nothrow_function_flags): ...new pass_data instance + and... + (make_pass_set_nothrow_function_flags): ...new function. + (pass_convert_to_eh_region_ranges): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_convert_to_eh_region_ranges): ...new pass_data instance + and... + (make_pass_convert_to_eh_region_ranges): ...new function. + * final.c (pass_compute_alignments): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_compute_alignments): ...new pass_data instance and... + (make_pass_compute_alignments): ...new function. + (pass_final): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_final): ...new pass_data instance and... + (make_pass_final): ...new function. + (pass_shorten_branches): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_shorten_branches): ...new pass_data instance and... + (make_pass_shorten_branches): ...new function. + (pass_clean_state): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_clean_state): ...new pass_data instance and... + (make_pass_clean_state): ...new function. + * function.c (pass_instantiate_virtual_regs): Convert from a global + struct to a subclass of rtl_opt_pass along with... + (pass_data_instantiate_virtual_regs): ...new pass_data instance and... + (make_pass_instantiate_virtual_regs): ...new function. + (pass_leaf_regs): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_leaf_regs): ...new pass_data instance and... + (make_pass_leaf_regs): ...new function. + (pass_thread_prologue_and_epilogue): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_thread_prologue_and_epilogue): ...new pass_data instance + and... + (make_pass_thread_prologue_and_epilogue): ...new function. + (pass_match_asm_constraints): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_match_asm_constraints): ...new pass_data instance and... + (make_pass_match_asm_constraints): ...new function. + * fwprop.c (pass_rtl_fwprop): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_rtl_fwprop): ...new pass_data instance and... + (make_pass_rtl_fwprop): ...new function. + (pass_rtl_fwprop_addr): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_rtl_fwprop_addr): ...new pass_data instance and... + (make_pass_rtl_fwprop_addr): ...new function. + * gcse.c (pass_rtl_pre): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_rtl_pre): ...new pass_data instance and... + (make_pass_rtl_pre): ...new function. + (pass_rtl_hoist): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_rtl_hoist): ...new pass_data instance and... + (make_pass_rtl_hoist): ...new function. + * gimple-low.c (pass_lower_cf): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_lower_cf): ...new pass_data instance and... + (make_pass_lower_cf): ...new function. + * gimple-ssa-strength-reduction.c (pass_strength_reduction): Convert + from a global struct to a subclass of gimple_opt_pass along with... + (pass_data_strength_reduction): ...new pass_data instance and... + (make_pass_strength_reduction): ...new function. + * ifcvt.c (pass_rtl_ifcvt): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_rtl_ifcvt): ...new pass_data instance and... + (make_pass_rtl_ifcvt): ...new function. + (pass_if_after_combine): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_if_after_combine): ...new pass_data instance and... + (make_pass_if_after_combine): ...new function. + (pass_if_after_reload): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_if_after_reload): ...new pass_data instance and... + (make_pass_if_after_reload): ...new function. + * init-regs.c (pass_initialize_regs): Convert from a global struct to + a subclass of rtl_opt_pass along with... + (pass_data_initialize_regs): ...new pass_data instance and... + (make_pass_initialize_regs): ...new function. + * ipa-cp.c (pass_ipa_cp): Convert from a global struct to a subclass + of ipa_opt_pass_d along with... + (pass_data_ipa_cp): ...new pass_data instance and... + (make_pass_ipa_cp): ...new function. + * ipa-inline-analysis.c (pass_inline_parameters): Convert from a + global struct to a subclass of gimple_opt_pass along with... + (pass_data_inline_parameters): ...new pass_data instance and... + (make_pass_inline_parameters): ...new function. + * ipa-inline.c (pass_early_inline): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_early_inline): ...new pass_data instance and... + (make_pass_early_inline): ...new function. + (pass_ipa_inline): Convert from a global struct to a subclass of + ipa_opt_pass_d along with... + (pass_data_ipa_inline): ...new pass_data instance and... + (make_pass_ipa_inline): ...new function. + * ipa-pure-const.c (pass_local_pure_const): Convert from a global + struct to a subclass of gimple_opt_pass along with... + (pass_data_local_pure_const): ...new pass_data instance and... + (make_pass_local_pure_const): ...new function. + (pass_ipa_pure_const): Convert from a global struct to a subclass of + ipa_opt_pass_d along with... + (pass_data_ipa_pure_const): ...new pass_data instance and... + (make_pass_ipa_pure_const): ...new function. + * ipa-reference.c (pass_ipa_reference): Convert from a global struct + to a subclass of ipa_opt_pass_d along with... + (pass_data_ipa_reference): ...new pass_data instance and... + (make_pass_ipa_reference): ...new function. + * ipa-split.c (pass_split_functions): Convert from a global struct to + a subclass of gimple_opt_pass along with... + (pass_data_split_functions): ...new pass_data instance and... + (make_pass_split_functions): ...new function. + (pass_feedback_split_functions): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_feedback_split_functions): ...new pass_data instance and... + (make_pass_feedback_split_functions): ...new function. + * ipa.c (pass_ipa_function_and_variable_visibility): Convert from a + global struct to a subclass of simple_ipa_opt_pass along with... + (pass_data_ipa_function_and_variable_visibility): ...new pass_data + instance and... + (make_pass_ipa_function_and_variable_visibility): ...new function. + (pass_ipa_free_inline_summary): Convert from a global struct to a + subclass of simple_ipa_opt_pass along with... + (pass_data_ipa_free_inline_summary): ...new pass_data instance and... + (make_pass_ipa_free_inline_summary): ...new function. + (pass_ipa_whole_program_visibility): Convert from a global struct to a + subclass of ipa_opt_pass_d along with... + (pass_data_ipa_whole_program_visibility): ...new pass_data instance + and... + (make_pass_ipa_whole_program_visibility): ...new function. + (pass_ipa_profile): Convert from a global struct to a subclass of + ipa_opt_pass_d along with... + (pass_data_ipa_profile): ...new pass_data instance and... + (make_pass_ipa_profile): ...new function. + (pass_ipa_cdtor_merge): Convert from a global struct to a subclass of + ipa_opt_pass_d along with... + (pass_data_ipa_cdtor_merge): ...new pass_data instance and... + (make_pass_ipa_cdtor_merge): ...new function. + * ira.c (pass_ira): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_ira): ...new pass_data instance and... + (make_pass_ira): ...new function. + (pass_reload): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_reload): ...new pass_data instance and... + (make_pass_reload): ...new function. + * jump.c (pass_cleanup_barriers): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_cleanup_barriers): ...new pass_data instance and... + (make_pass_cleanup_barriers): ...new function. + * loop-init.c (pass_loop2): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_loop2): ...new pass_data instance and... + (make_pass_loop2): ...new function. + (pass_rtl_loop_init): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_rtl_loop_init): ...new pass_data instance and... + (make_pass_rtl_loop_init): ...new function. + (pass_rtl_loop_done): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_rtl_loop_done): ...new pass_data instance and... + (make_pass_rtl_loop_done): ...new function. + (pass_rtl_move_loop_invariants): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_rtl_move_loop_invariants): ...new pass_data instance and... + (make_pass_rtl_move_loop_invariants): ...new function. + (pass_rtl_unswitch): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_rtl_unswitch): ...new pass_data instance and... + (make_pass_rtl_unswitch): ...new function. + (pass_rtl_unroll_and_peel_loops): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_rtl_unroll_and_peel_loops): ...new pass_data instance + and... + (make_pass_rtl_unroll_and_peel_loops): ...new function. + (pass_rtl_doloop): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_rtl_doloop): ...new pass_data instance and... + (make_pass_rtl_doloop): ...new function. + * lower-subreg.c (pass_lower_subreg): Convert from a global struct to + a subclass of rtl_opt_pass along with... + (pass_data_lower_subreg): ...new pass_data instance and... + (make_pass_lower_subreg): ...new function. + (pass_lower_subreg2): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_lower_subreg2): ...new pass_data instance and... + (make_pass_lower_subreg2): ...new function. + * lto-streamer-out.c (pass_ipa_lto_gimple_out): Convert from a global + struct to a subclass of ipa_opt_pass_d along with... + (pass_data_ipa_lto_gimple_out): ...new pass_data instance and... + (make_pass_ipa_lto_gimple_out): ...new function. + (pass_ipa_lto_finish_out): Convert from a global struct to a subclass + of ipa_opt_pass_d along with... + (pass_data_ipa_lto_finish_out): ...new pass_data instance and... + (make_pass_ipa_lto_finish_out): ...new function. + * mode-switching.c (pass_mode_switching): Convert from a global struct + to a subclass of rtl_opt_pass along with... + (pass_data_mode_switching): ...new pass_data instance and... + (make_pass_mode_switching): ...new function. + * modulo-sched.c (pass_sms): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_sms): ...new pass_data instance and... + (make_pass_sms): ...new function. + * omp-low.c (pass_expand_omp): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_expand_omp): ...new pass_data instance and... + (make_pass_expand_omp): ...new function. + (pass_lower_omp): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_lower_omp): ...new pass_data instance and... + (make_pass_lower_omp): ...new function. + (pass_diagnose_omp_blocks): Convert from a global struct to a subclass + of gimple_opt_pass along with... + (pass_data_diagnose_omp_blocks): ...new pass_data instance and... + (make_pass_diagnose_omp_blocks): ...new function. + * passes.c (pass_early_local_passes): Convert from a global struct to + a subclass of simple_ipa_opt_pass along with... + (pass_data_early_local_passes): ...new pass_data instance and... + (make_pass_early_local_passes): ...new function. + (pass_all_early_optimizations): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_all_early_optimizations): ...new pass_data instance and... + (make_pass_all_early_optimizations): ...new function. + (pass_all_optimizations): Convert from a global struct to a subclass + of gimple_opt_pass along with... + (pass_data_all_optimizations): ...new pass_data instance and... + (make_pass_all_optimizations): ...new function. + (pass_all_optimizations_g): Convert from a global struct to a subclass + of gimple_opt_pass along with... + (pass_data_all_optimizations_g): ...new pass_data instance and... + (make_pass_all_optimizations_g): ...new function. + (pass_rest_of_compilation): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_rest_of_compilation): ...new pass_data instance and... + (make_pass_rest_of_compilation): ...new function. + (pass_postreload): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_postreload): ...new pass_data instance and... + (make_pass_postreload): ...new function. + * postreload-gcse.c (pass_gcse2): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_gcse2): ...new pass_data instance and... + (make_pass_gcse2): ...new function. + * postreload.c (pass_postreload_cse): Convert from a global struct to + a subclass of rtl_opt_pass along with... + (pass_data_postreload_cse): ...new pass_data instance and... + (make_pass_postreload_cse): ...new function. + * predict.c (pass_profile): Convert from a global struct to a subclass + of gimple_opt_pass along with... + (pass_data_profile): ...new pass_data instance and... + (make_pass_profile): ...new function. + (pass_strip_predict_hints): Convert from a global struct to a subclass + of gimple_opt_pass along with... + (pass_data_strip_predict_hints): ...new pass_data instance and... + (make_pass_strip_predict_hints): ...new function. + * recog.c (pass_peephole2): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_peephole2): ...new pass_data instance and... + (make_pass_peephole2): ...new function. + (pass_split_all_insns): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_split_all_insns): ...new pass_data instance and... + (make_pass_split_all_insns): ...new function. + (pass_split_after_reload): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_split_after_reload): ...new pass_data instance and... + (make_pass_split_after_reload): ...new function. + (pass_split_before_regstack): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_split_before_regstack): ...new pass_data instance and... + (make_pass_split_before_regstack): ...new function. + (pass_split_before_sched2): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_split_before_sched2): ...new pass_data instance and... + (make_pass_split_before_sched2): ...new function. + (pass_split_for_shorten_branches): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_split_for_shorten_branches): ...new pass_data instance + and... + (make_pass_split_for_shorten_branches): ...new function. + * ree.c (pass_ree): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_ree): ...new pass_data instance and... + (make_pass_ree): ...new function. + * reg-stack.c (pass_stack_regs): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_stack_regs): ...new pass_data instance and... + (make_pass_stack_regs): ...new function. + (pass_stack_regs_run): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_stack_regs_run): ...new pass_data instance and... + (make_pass_stack_regs_run): ...new function. + * regcprop.c (pass_cprop_hardreg): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_cprop_hardreg): ...new pass_data instance and... + (make_pass_cprop_hardreg): ...new function. + * reginfo.c (pass_reginfo_init): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_reginfo_init): ...new pass_data instance and... + (make_pass_reginfo_init): ...new function. + * regmove.c (pass_regmove): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_regmove): ...new pass_data instance and... + (make_pass_regmove): ...new function. + * regrename.c (pass_regrename): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_regrename): ...new pass_data instance and... + (make_pass_regrename): ...new function. + * reorg.c (pass_delay_slots): Convert from a global struct to a + subclass of rtl_opt_pass along with... + (pass_data_delay_slots): ...new pass_data instance and... + (make_pass_delay_slots): ...new function. + (pass_machine_reorg): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_machine_reorg): ...new pass_data instance and... + (make_pass_machine_reorg): ...new function. + * sched-rgn.c (pass_sched): Convert from a global struct to a subclass + of rtl_opt_pass along with... + (pass_data_sched): ...new pass_data instance and... + (make_pass_sched): ...new function. + (pass_sched2): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_sched2): ...new pass_data instance and... + (make_pass_sched2): ...new function. + * stack-ptr-mod.c (pass_stack_ptr_mod): Convert from a global struct + to a subclass of rtl_opt_pass along with... + (pass_data_stack_ptr_mod): ...new pass_data instance and... + (make_pass_stack_ptr_mod): ...new function. + * store-motion.c (pass_rtl_store_motion): Convert from a global struct + to a subclass of rtl_opt_pass along with... + (pass_data_rtl_store_motion): ...new pass_data instance and... + (make_pass_rtl_store_motion): ...new function. + * tracer.c (pass_tracer): Convert from a global struct to a subclass + of gimple_opt_pass along with... + (pass_data_tracer): ...new pass_data instance and... + (make_pass_tracer): ...new function. + * trans-mem.c (pass_diagnose_tm_blocks): Convert from a global struct + to a subclass of gimple_opt_pass along with... + (pass_data_diagnose_tm_blocks): ...new pass_data instance and... + (make_pass_diagnose_tm_blocks): ...new function. + (pass_lower_tm): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_lower_tm): ...new pass_data instance and... + (make_pass_lower_tm): ...new function. + (pass_tm_init): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_tm_init): ...new pass_data instance and... + (make_pass_tm_init): ...new function. + (pass_tm_mark): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_tm_mark): ...new pass_data instance and... + (make_pass_tm_mark): ...new function. + (pass_tm_edges): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_tm_edges): ...new pass_data instance and... + (make_pass_tm_edges): ...new function. + (pass_tm_memopt): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_tm_memopt): ...new pass_data instance and... + (make_pass_tm_memopt): ...new function. + (pass_ipa_tm): Convert from a global struct to a subclass of + simple_ipa_opt_pass along with... + (pass_data_ipa_tm): ...new pass_data instance and... + (make_pass_ipa_tm): ...new function. + * tree-call-cdce.c (pass_call_cdce): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_call_cdce): ...new pass_data instance and... + (make_pass_call_cdce): ...new function. + * tree-cfg.c (pass_build_cfg): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_build_cfg): ...new pass_data instance and... + (make_pass_build_cfg): ...new function. + (pass_split_crit_edges): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_split_crit_edges): ...new pass_data instance and... + (make_pass_split_crit_edges): ...new function. + (pass_warn_function_return): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_warn_function_return): ...new pass_data instance and... + (make_pass_warn_function_return): ...new function. + (pass_warn_function_noreturn): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_warn_function_noreturn): ...new pass_data instance and... + (make_pass_warn_function_noreturn): ...new function. + (pass_warn_unused_result): Convert from a global struct to a subclass + of gimple_opt_pass along with... + (pass_data_warn_unused_result): ...new pass_data instance and... + (make_pass_warn_unused_result): ...new function. + * tree-cfgcleanup.c (pass_merge_phi): Convert from a global struct to + a subclass of gimple_opt_pass along with... + (pass_data_merge_phi): ...new pass_data instance and... + (make_pass_merge_phi): ...new function. + * tree-complex.c (pass_lower_complex): Convert from a global struct to + a subclass of gimple_opt_pass along with... + (pass_data_lower_complex): ...new pass_data instance and... + (make_pass_lower_complex): ...new function. + (pass_lower_complex_O0): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_lower_complex_O0): ...new pass_data instance and... + (make_pass_lower_complex_O0): ...new function. + * tree-eh.c (pass_lower_eh): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_lower_eh): ...new pass_data instance and... + (make_pass_lower_eh): ...new function. + (pass_refactor_eh): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_refactor_eh): ...new pass_data instance and... + (make_pass_refactor_eh): ...new function. + (pass_lower_resx): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_lower_resx): ...new pass_data instance and... + (make_pass_lower_resx): ...new function. + (pass_lower_eh_dispatch): Convert from a global struct to a subclass + of gimple_opt_pass along with... + (pass_data_lower_eh_dispatch): ...new pass_data instance and... + (make_pass_lower_eh_dispatch): ...new function. + (pass_cleanup_eh): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_cleanup_eh): ...new pass_data instance and... + (make_pass_cleanup_eh): ...new function. + * tree-emutls.c (pass_ipa_lower_emutls): Convert from a global struct + to a subclass of simple_ipa_opt_pass along with... + (pass_data_ipa_lower_emutls): ...new pass_data instance and... + (make_pass_ipa_lower_emutls): ...new function. + * tree-if-conv.c (pass_if_conversion): Convert from a global struct to + a subclass of gimple_opt_pass along with... + (pass_data_if_conversion): ...new pass_data instance and... + (make_pass_if_conversion): ...new function. + * tree-into-ssa.c (pass_build_ssa): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_build_ssa): ...new pass_data instance and... + (make_pass_build_ssa): ...new function. + * tree-loop-distribution.c (pass_loop_distribution): Convert from a + global struct to a subclass of gimple_opt_pass along with... + (pass_data_loop_distribution): ...new pass_data instance and... + (make_pass_loop_distribution): ...new function. + * tree-mudflap.c (pass_mudflap_1): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_mudflap_1): ...new pass_data instance and... + (make_pass_mudflap_1): ...new function. + (pass_mudflap_2): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_mudflap_2): ...new pass_data instance and... + (make_pass_mudflap_2): ...new function. + * tree-nomudflap.c (pass_mudflap_1): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_mudflap_1): ...new pass_data instance and... + (make_pass_mudflap_1): ...new function. + (pass_mudflap_2): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_mudflap_2): ...new pass_data instance and... + (make_pass_mudflap_2): ...new function. + * tree-nrv.c (pass_nrv): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_nrv): ...new pass_data instance and... + (make_pass_nrv): ...new function. + (pass_return_slot): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_return_slot): ...new pass_data instance and... + (make_pass_return_slot): ...new function. + * tree-object-size.c (pass_object_sizes): Convert from a global struct + to a subclass of gimple_opt_pass along with... + (pass_data_object_sizes): ...new pass_data instance and... + (make_pass_object_sizes): ...new function. + * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Convert from a + global struct to a subclass of gimple_opt_pass along with... + (pass_data_cleanup_cfg_post_optimizing): ...new pass_data instance + and... + (make_pass_cleanup_cfg_post_optimizing): ...new function. + (pass_fixup_cfg): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_fixup_cfg): ...new pass_data instance and... + (make_pass_fixup_cfg): ...new function. + * tree-pass.h (pass_mudflap_1): Replace declaration with that of... + (make_pass_mudflap_1): ...new function. + (pass_mudflap_2): Replace declaration with that of... + (make_pass_mudflap_2): ...new function. + (pass_asan): Replace declaration with that of... + (make_pass_asan): ...new function. + (pass_asan_O0): Replace declaration with that of... + (make_pass_asan_O0): ...new function. + (pass_tsan): Replace declaration with that of... + (make_pass_tsan): ...new function. + (pass_tsan_O0): Replace declaration with that of... + (make_pass_tsan_O0): ...new function. + (pass_lower_cf): Replace declaration with that of... + (make_pass_lower_cf): ...new function. + (pass_refactor_eh): Replace declaration with that of... + (make_pass_refactor_eh): ...new function. + (pass_lower_eh): Replace declaration with that of... + (make_pass_lower_eh): ...new function. + (pass_lower_eh_dispatch): Replace declaration with that of... + (make_pass_lower_eh_dispatch): ...new function. + (pass_lower_resx): Replace declaration with that of... + (make_pass_lower_resx): ...new function. + (pass_build_cfg): Replace declaration with that of... + (make_pass_build_cfg): ...new function. + (pass_early_tree_profile): Replace declaration with that of... + (make_pass_early_tree_profile): ...new function. + (pass_cleanup_eh): Replace declaration with that of... + (make_pass_cleanup_eh): ...new function. + (pass_sra): Replace declaration with that of... + (make_pass_sra): ...new function. + (pass_sra_early): Replace declaration with that of... + (make_pass_sra_early): ...new function. + (pass_early_ipa_sra): Replace declaration with that of... + (make_pass_early_ipa_sra): ...new function. + (pass_tail_recursion): Replace declaration with that of... + (make_pass_tail_recursion): ...new function. + (pass_tail_calls): Replace declaration with that of... + (make_pass_tail_calls): ...new function. + (pass_tree_loop): Replace declaration with that of... + (make_pass_tree_loop): ...new function. + (pass_tree_loop_init): Replace declaration with that of... + (make_pass_tree_loop_init): ...new function. + (pass_lim): Replace declaration with that of... + (make_pass_lim): ...new function. + (pass_tree_unswitch): Replace declaration with that of... + (make_pass_tree_unswitch): ...new function. + (pass_predcom): Replace declaration with that of... + (make_pass_predcom): ...new function. + (pass_iv_canon): Replace declaration with that of... + (make_pass_iv_canon): ...new function. + (pass_scev_cprop): Replace declaration with that of... + (make_pass_scev_cprop): ...new function. + (pass_empty_loop): Replace declaration with that of... + (make_pass_empty_loop): ...new function. + (pass_record_bounds): Replace declaration with that of... + (make_pass_record_bounds): ...new function. + (pass_graphite): Replace declaration with that of... + (make_pass_graphite): ...new function. + (pass_graphite_transforms): Replace declaration with that of... + (make_pass_graphite_transforms): ...new function. + (pass_if_conversion): Replace declaration with that of... + (make_pass_if_conversion): ...new function. + (pass_loop_distribution): Replace declaration with that of... + (make_pass_loop_distribution): ...new function. + (pass_vectorize): Replace declaration with that of... + (make_pass_vectorize): ...new function. + (pass_slp_vectorize): Replace declaration with that of... + (make_pass_slp_vectorize): ...new function. + (pass_complete_unroll): Replace declaration with that of... + (make_pass_complete_unroll): ...new function. + (pass_complete_unrolli): Replace declaration with that of... + (make_pass_complete_unrolli): ...new function. + (pass_parallelize_loops): Replace declaration with that of... + (make_pass_parallelize_loops): ...new function. + (pass_loop_prefetch): Replace declaration with that of... + (make_pass_loop_prefetch): ...new function. + (pass_iv_optimize): Replace declaration with that of... + (make_pass_iv_optimize): ...new function. + (pass_tree_loop_done): Replace declaration with that of... + (make_pass_tree_loop_done): ...new function. + (pass_ch): Replace declaration with that of... + (make_pass_ch): ...new function. + (pass_ccp): Replace declaration with that of... + (make_pass_ccp): ...new function. + (pass_phi_only_cprop): Replace declaration with that of... + (make_pass_phi_only_cprop): ...new function. + (pass_build_ssa): Replace declaration with that of... + (make_pass_build_ssa): ...new function. + (pass_build_alias): Replace declaration with that of... + (make_pass_build_alias): ...new function. + (pass_build_ealias): Replace declaration with that of... + (make_pass_build_ealias): ...new function. + (pass_dominator): Replace declaration with that of... + (make_pass_dominator): ...new function. + (pass_dce): Replace declaration with that of... + (make_pass_dce): ...new function. + (pass_dce_loop): Replace declaration with that of... + (make_pass_dce_loop): ...new function. + (pass_cd_dce): Replace declaration with that of... + (make_pass_cd_dce): ...new function. + (pass_call_cdce): Replace declaration with that of... + (make_pass_call_cdce): ...new function. + (pass_merge_phi): Replace declaration with that of... + (make_pass_merge_phi): ...new function. + (pass_split_crit_edges): Replace declaration with that of... + (make_pass_split_crit_edges): ...new function. + (pass_pre): Replace declaration with that of... + (make_pass_pre): ...new function. + (pass_profile): Replace declaration with that of... + (make_pass_profile): ...new function. + (pass_strip_predict_hints): Replace declaration with that of... + (make_pass_strip_predict_hints): ...new function. + (pass_lower_complex_O0): Replace declaration with that of... + (make_pass_lower_complex_O0): ...new function. + (pass_lower_complex): Replace declaration with that of... + (make_pass_lower_complex): ...new function. + (pass_lower_vector): Replace declaration with that of... + (make_pass_lower_vector): ...new function. + (pass_lower_vector_ssa): Replace declaration with that of... + (make_pass_lower_vector_ssa): ...new function. + (pass_lower_omp): Replace declaration with that of... + (make_pass_lower_omp): ...new function. + (pass_diagnose_omp_blocks): Replace declaration with that of... + (make_pass_diagnose_omp_blocks): ...new function. + (pass_expand_omp): Replace declaration with that of... + (make_pass_expand_omp): ...new function. + (pass_expand_omp_ssa): Replace declaration with that of... + (make_pass_expand_omp_ssa): ...new function. + (pass_object_sizes): Replace declaration with that of... + (make_pass_object_sizes): ...new function. + (pass_strlen): Replace declaration with that of... + (make_pass_strlen): ...new function. + (pass_fold_builtins): Replace declaration with that of... + (make_pass_fold_builtins): ...new function. + (pass_stdarg): Replace declaration with that of... + (make_pass_stdarg): ...new function. + (pass_early_warn_uninitialized): Replace declaration with that of... + (make_pass_early_warn_uninitialized): ...new function. + (pass_late_warn_uninitialized): Replace declaration with that of... + (make_pass_late_warn_uninitialized): ...new function. + (pass_cse_reciprocals): Replace declaration with that of... + (make_pass_cse_reciprocals): ...new function. + (pass_cse_sincos): Replace declaration with that of... + (make_pass_cse_sincos): ...new function. + (pass_optimize_bswap): Replace declaration with that of... + (make_pass_optimize_bswap): ...new function. + (pass_optimize_widening_mul): Replace declaration with that of... + (make_pass_optimize_widening_mul): ...new function. + (pass_warn_function_return): Replace declaration with that of... + (make_pass_warn_function_return): ...new function. + (pass_warn_function_noreturn): Replace declaration with that of... + (make_pass_warn_function_noreturn): ...new function. + (pass_cselim): Replace declaration with that of... + (make_pass_cselim): ...new function. + (pass_phiopt): Replace declaration with that of... + (make_pass_phiopt): ...new function. + (pass_forwprop): Replace declaration with that of... + (make_pass_forwprop): ...new function. + (pass_phiprop): Replace declaration with that of... + (make_pass_phiprop): ...new function. + (pass_tree_ifcombine): Replace declaration with that of... + (make_pass_tree_ifcombine): ...new function. + (pass_dse): Replace declaration with that of... + (make_pass_dse): ...new function. + (pass_nrv): Replace declaration with that of... + (make_pass_nrv): ...new function. + (pass_rename_ssa_copies): Replace declaration with that of... + (make_pass_rename_ssa_copies): ...new function. + (pass_sink_code): Replace declaration with that of... + (make_pass_sink_code): ...new function. + (pass_fre): Replace declaration with that of... + (make_pass_fre): ...new function. + (pass_check_data_deps): Replace declaration with that of... + (make_pass_check_data_deps): ...new function. + (pass_copy_prop): Replace declaration with that of... + (make_pass_copy_prop): ...new function. + (pass_vrp): Replace declaration with that of... + (make_pass_vrp): ...new function. + (pass_uncprop): Replace declaration with that of... + (make_pass_uncprop): ...new function. + (pass_return_slot): Replace declaration with that of... + (make_pass_return_slot): ...new function. + (pass_reassoc): Replace declaration with that of... + (make_pass_reassoc): ...new function. + (pass_rebuild_cgraph_edges): Replace declaration with that of... + (make_pass_rebuild_cgraph_edges): ...new function. + (pass_remove_cgraph_callee_edges): Replace declaration with that of... + (make_pass_remove_cgraph_callee_edges): ...new function. + (pass_build_cgraph_edges): Replace declaration with that of... + (make_pass_build_cgraph_edges): ...new function. + (pass_local_pure_const): Replace declaration with that of... + (make_pass_local_pure_const): ...new function. + (pass_tracer): Replace declaration with that of... + (make_pass_tracer): ...new function. + (pass_warn_unused_result): Replace declaration with that of... + (make_pass_warn_unused_result): ...new function. + (pass_diagnose_tm_blocks): Replace declaration with that of... + (make_pass_diagnose_tm_blocks): ...new function. + (pass_lower_tm): Replace declaration with that of... + (make_pass_lower_tm): ...new function. + (pass_tm_init): Replace declaration with that of... + (make_pass_tm_init): ...new function. + (pass_tm_mark): Replace declaration with that of... + (make_pass_tm_mark): ...new function. + (pass_tm_memopt): Replace declaration with that of... + (make_pass_tm_memopt): ...new function. + (pass_tm_edges): Replace declaration with that of... + (make_pass_tm_edges): ...new function. + (pass_split_functions): Replace declaration with that of... + (make_pass_split_functions): ...new function. + (pass_feedback_split_functions): Replace declaration with that of... + (make_pass_feedback_split_functions): ...new function. + (pass_strength_reduction): Replace declaration with that of... + (make_pass_strength_reduction): ...new function. + (pass_ipa_lower_emutls): Replace declaration with that of... + (make_pass_ipa_lower_emutls): ...new function. + (pass_ipa_function_and_variable_visibility): Replace declaration with + that of... + (make_pass_ipa_function_and_variable_visibility): ...new function. + (pass_ipa_tree_profile): Replace declaration with that of... + (make_pass_ipa_tree_profile): ...new function. + (pass_early_local_passes): Replace declaration with that of... + (make_pass_early_local_passes): ...new function. + (pass_ipa_whole_program_visibility): Replace declaration with that + of... + (make_pass_ipa_whole_program_visibility): ...new function. + (pass_ipa_lto_gimple_out): Replace declaration with that of... + (make_pass_ipa_lto_gimple_out): ...new function. + (pass_ipa_increase_alignment): Replace declaration with that of... + (make_pass_ipa_increase_alignment): ...new function. + (pass_ipa_inline): Replace declaration with that of... + (make_pass_ipa_inline): ...new function. + (pass_ipa_free_lang_data): Replace declaration with that of... + (make_pass_ipa_free_lang_data): ...new function. + (pass_ipa_free_inline_summary): Replace declaration with that of... + (make_pass_ipa_free_inline_summary): ...new function. + (pass_ipa_cp): Replace declaration with that of... + (make_pass_ipa_cp): ...new function. + (pass_ipa_reference): Replace declaration with that of... + (make_pass_ipa_reference): ...new function. + (pass_ipa_pure_const): Replace declaration with that of... + (make_pass_ipa_pure_const): ...new function. + (pass_ipa_pta): Replace declaration with that of... + (make_pass_ipa_pta): ...new function. + (pass_ipa_lto_finish_out): Replace declaration with that of... + (make_pass_ipa_lto_finish_out): ...new function. + (pass_ipa_tm): Replace declaration with that of... + (make_pass_ipa_tm): ...new function. + (pass_ipa_profile): Replace declaration with that of... + (make_pass_ipa_profile): ...new function. + (pass_ipa_cdtor_merge): Replace declaration with that of... + (make_pass_ipa_cdtor_merge): ...new function. + (pass_cleanup_cfg_post_optimizing): Replace declaration with that + of... + (make_pass_cleanup_cfg_post_optimizing): ...new function. + (pass_init_datastructures): Replace declaration with that of... + (make_pass_init_datastructures): ...new function. + (pass_fixup_cfg): Replace declaration with that of... + (make_pass_fixup_cfg): ...new function. + (pass_expand): Replace declaration with that of... + (make_pass_expand): ...new function. + (pass_instantiate_virtual_regs): Replace declaration with that of... + (make_pass_instantiate_virtual_regs): ...new function. + (pass_rtl_fwprop): Replace declaration with that of... + (make_pass_rtl_fwprop): ...new function. + (pass_rtl_fwprop_addr): Replace declaration with that of... + (make_pass_rtl_fwprop_addr): ...new function. + (pass_jump): Replace declaration with that of... + (make_pass_jump): ...new function. + (pass_jump2): Replace declaration with that of... + (make_pass_jump2): ...new function. + (pass_lower_subreg): Replace declaration with that of... + (make_pass_lower_subreg): ...new function. + (pass_cse): Replace declaration with that of... + (make_pass_cse): ...new function. + (pass_fast_rtl_dce): Replace declaration with that of... + (make_pass_fast_rtl_dce): ...new function. + (pass_ud_rtl_dce): Replace declaration with that of... + (make_pass_ud_rtl_dce): ...new function. + (pass_rtl_dce): Replace declaration with that of... + (make_pass_rtl_dce): ...new function. + (pass_rtl_dse1): Replace declaration with that of... + (make_pass_rtl_dse1): ...new function. + (pass_rtl_dse2): Replace declaration with that of... + (make_pass_rtl_dse2): ...new function. + (pass_rtl_dse3): Replace declaration with that of... + (make_pass_rtl_dse3): ...new function. + (pass_rtl_cprop): Replace declaration with that of... + (make_pass_rtl_cprop): ...new function. + (pass_rtl_pre): Replace declaration with that of... + (make_pass_rtl_pre): ...new function. + (pass_rtl_hoist): Replace declaration with that of... + (make_pass_rtl_hoist): ...new function. + (pass_rtl_store_motion): Replace declaration with that of... + (make_pass_rtl_store_motion): ...new function. + (pass_cse_after_global_opts): Replace declaration with that of... + (make_pass_cse_after_global_opts): ...new function. + (pass_rtl_ifcvt): Replace declaration with that of... + (make_pass_rtl_ifcvt): ...new function. + (pass_into_cfg_layout_mode): Replace declaration with that of... + (make_pass_into_cfg_layout_mode): ...new function. + (pass_outof_cfg_layout_mode): Replace declaration with that of... + (make_pass_outof_cfg_layout_mode): ...new function. + (pass_loop2): Replace declaration with that of... + (make_pass_loop2): ...new function. + (pass_rtl_loop_init): Replace declaration with that of... + (make_pass_rtl_loop_init): ...new function. + (pass_rtl_move_loop_invariants): Replace declaration with that of... + (make_pass_rtl_move_loop_invariants): ...new function. + (pass_rtl_unswitch): Replace declaration with that of... + (make_pass_rtl_unswitch): ...new function. + (pass_rtl_unroll_and_peel_loops): Replace declaration with that of... + (make_pass_rtl_unroll_and_peel_loops): ...new function. + (pass_rtl_doloop): Replace declaration with that of... + (make_pass_rtl_doloop): ...new function. + (pass_rtl_loop_done): Replace declaration with that of... + (make_pass_rtl_loop_done): ...new function. + (pass_web): Replace declaration with that of... + (make_pass_web): ...new function. + (pass_cse2): Replace declaration with that of... + (make_pass_cse2): ...new function. + (pass_df_initialize_opt): Replace declaration with that of... + (make_pass_df_initialize_opt): ...new function. + (pass_df_initialize_no_opt): Replace declaration with that of... + (make_pass_df_initialize_no_opt): ...new function. + (pass_reginfo_init): Replace declaration with that of... + (make_pass_reginfo_init): ...new function. + (pass_inc_dec): Replace declaration with that of... + (make_pass_inc_dec): ...new function. + (pass_stack_ptr_mod): Replace declaration with that of... + (make_pass_stack_ptr_mod): ...new function. + (pass_initialize_regs): Replace declaration with that of... + (make_pass_initialize_regs): ...new function. + (pass_combine): Replace declaration with that of... + (make_pass_combine): ...new function. + (pass_if_after_combine): Replace declaration with that of... + (make_pass_if_after_combine): ...new function. + (pass_ree): Replace declaration with that of... + (make_pass_ree): ...new function. + (pass_partition_blocks): Replace declaration with that of... + (make_pass_partition_blocks): ...new function. + (pass_match_asm_constraints): Replace declaration with that of... + (make_pass_match_asm_constraints): ...new function. + (pass_regmove): Replace declaration with that of... + (make_pass_regmove): ...new function. + (pass_split_all_insns): Replace declaration with that of... + (make_pass_split_all_insns): ...new function. + (pass_fast_rtl_byte_dce): Replace declaration with that of... + (make_pass_fast_rtl_byte_dce): ...new function. + (pass_lower_subreg2): Replace declaration with that of... + (make_pass_lower_subreg2): ...new function. + (pass_mode_switching): Replace declaration with that of... + (make_pass_mode_switching): ...new function. + (pass_sms): Replace declaration with that of... + (make_pass_sms): ...new function. + (pass_sched): Replace declaration with that of... + (make_pass_sched): ...new function. + (pass_ira): Replace declaration with that of... + (make_pass_ira): ...new function. + (pass_reload): Replace declaration with that of... + (make_pass_reload): ...new function. + (pass_clean_state): Replace declaration with that of... + (make_pass_clean_state): ...new function. + (pass_branch_prob): Replace declaration with that of... + (make_pass_branch_prob): ...new function. + (pass_value_profile_transformations): Replace declaration with that + of... + (make_pass_value_profile_transformations): ...new function. + (pass_postreload_cse): Replace declaration with that of... + (make_pass_postreload_cse): ...new function. + (pass_gcse2): Replace declaration with that of... + (make_pass_gcse2): ...new function. + (pass_split_after_reload): Replace declaration with that of... + (make_pass_split_after_reload): ...new function. + (pass_branch_target_load_optimize1): Replace declaration with that + of... + (make_pass_branch_target_load_optimize1): ...new function. + (pass_thread_prologue_and_epilogue): Replace declaration with that + of... + (make_pass_thread_prologue_and_epilogue): ...new function. + (pass_stack_adjustments): Replace declaration with that of... + (make_pass_stack_adjustments): ...new function. + (pass_peephole2): Replace declaration with that of... + (make_pass_peephole2): ...new function. + (pass_if_after_reload): Replace declaration with that of... + (make_pass_if_after_reload): ...new function. + (pass_regrename): Replace declaration with that of... + (make_pass_regrename): ...new function. + (pass_cprop_hardreg): Replace declaration with that of... + (make_pass_cprop_hardreg): ...new function. + (pass_reorder_blocks): Replace declaration with that of... + (make_pass_reorder_blocks): ...new function. + (pass_branch_target_load_optimize2): Replace declaration with that + of... + (make_pass_branch_target_load_optimize2): ...new function. + (pass_leaf_regs): Replace declaration with that of... + (make_pass_leaf_regs): ...new function. + (pass_split_before_sched2): Replace declaration with that of... + (make_pass_split_before_sched2): ...new function. + (pass_compare_elim_after_reload): Replace declaration with that of... + (make_pass_compare_elim_after_reload): ...new function. + (pass_sched2): Replace declaration with that of... + (make_pass_sched2): ...new function. + (pass_stack_regs): Replace declaration with that of... + (make_pass_stack_regs): ...new function. + (pass_stack_regs_run): Replace declaration with that of... + (make_pass_stack_regs_run): ...new function. + (pass_df_finish): Replace declaration with that of... + (make_pass_df_finish): ...new function. + (pass_compute_alignments): Replace declaration with that of... + (make_pass_compute_alignments): ...new function. + (pass_duplicate_computed_gotos): Replace declaration with that of... + (make_pass_duplicate_computed_gotos): ...new function. + (pass_variable_tracking): Replace declaration with that of... + (make_pass_variable_tracking): ...new function. + (pass_free_cfg): Replace declaration with that of... + (make_pass_free_cfg): ...new function. + (pass_machine_reorg): Replace declaration with that of... + (make_pass_machine_reorg): ...new function. + (pass_cleanup_barriers): Replace declaration with that of... + (make_pass_cleanup_barriers): ...new function. + (pass_delay_slots): Replace declaration with that of... + (make_pass_delay_slots): ...new function. + (pass_split_for_shorten_branches): Replace declaration with that of... + (make_pass_split_for_shorten_branches): ...new function. + (pass_split_before_regstack): Replace declaration with that of... + (make_pass_split_before_regstack): ...new function. + (pass_convert_to_eh_region_ranges): Replace declaration with that + of... + (make_pass_convert_to_eh_region_ranges): ...new function. + (pass_shorten_branches): Replace declaration with that of... + (make_pass_shorten_branches): ...new function. + (pass_set_nothrow_function_flags): Replace declaration with that of... + (make_pass_set_nothrow_function_flags): ...new function. + (pass_dwarf2_frame): Replace declaration with that of... + (make_pass_dwarf2_frame): ...new function. + (pass_final): Replace declaration with that of... + (make_pass_final): ...new function. + (pass_rtl_seqabstr): Replace declaration with that of... + (make_pass_rtl_seqabstr): ...new function. + (pass_release_ssa_names): Replace declaration with that of... + (make_pass_release_ssa_names): ...new function. + (pass_early_inline): Replace declaration with that of... + (make_pass_early_inline): ...new function. + (pass_inline_parameters): Replace declaration with that of... + (make_pass_inline_parameters): ...new function. + (pass_update_address_taken): Replace declaration with that of... + (make_pass_update_address_taken): ...new function. + (pass_convert_switch): Replace declaration with that of... + (make_pass_convert_switch): ...new function. + * tree-profile.c (pass_ipa_tree_profile): Convert from a global struct + to a subclass of simple_ipa_opt_pass along with... + (pass_data_ipa_tree_profile): ...new pass_data instance and... + (make_pass_ipa_tree_profile): ...new function. + * tree-sra.c (pass_sra_early): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_sra_early): ...new pass_data instance and... + (make_pass_sra_early): ...new function. + (pass_sra): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_sra): ...new pass_data instance and... + (make_pass_sra): ...new function. + (pass_early_ipa_sra): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_early_ipa_sra): ...new pass_data instance and... + (make_pass_early_ipa_sra): ...new function. + * tree-ssa-ccp.c (pass_ccp): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_ccp): ...new pass_data instance and... + (make_pass_ccp): ...new function. + (pass_fold_builtins): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_fold_builtins): ...new pass_data instance and... + (make_pass_fold_builtins): ...new function. + * tree-ssa-copy.c (pass_copy_prop): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_copy_prop): ...new pass_data instance and... + (make_pass_copy_prop): ...new function. + * tree-ssa-copyrename.c (pass_rename_ssa_copies): Convert from a + global struct to a subclass of gimple_opt_pass along with... + (pass_data_rename_ssa_copies): ...new pass_data instance and... + (make_pass_rename_ssa_copies): ...new function. + * tree-ssa-dce.c (pass_dce): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_dce): ...new pass_data instance and... + (make_pass_dce): ...new function. + (pass_dce_loop): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_dce_loop): ...new pass_data instance and... + (make_pass_dce_loop): ...new function. + (pass_cd_dce): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_cd_dce): ...new pass_data instance and... + (make_pass_cd_dce): ...new function. + * tree-ssa-dom.c (pass_dominator): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_dominator): ...new pass_data instance and... + (make_pass_dominator): ...new function. + (pass_phi_only_cprop): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_phi_only_cprop): ...new pass_data instance and... + (make_pass_phi_only_cprop): ...new function. + * tree-ssa-dse.c (pass_dse): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_dse): ...new pass_data instance and... + (make_pass_dse): ...new function. + * tree-ssa-forwprop.c (pass_forwprop): Convert from a global struct to + a subclass of gimple_opt_pass along with... + (pass_data_forwprop): ...new pass_data instance and... + (make_pass_forwprop): ...new function. + * tree-ssa-ifcombine.c (pass_tree_ifcombine): Convert from a global + struct to a subclass of gimple_opt_pass along with... + (pass_data_tree_ifcombine): ...new pass_data instance and... + (make_pass_tree_ifcombine): ...new function. + * tree-ssa-loop-ch.c (pass_ch): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_ch): ...new pass_data instance and... + (make_pass_ch): ...new function. + * tree-ssa-loop.c (pass_tree_loop): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_tree_loop): ...new pass_data instance and... + (make_pass_tree_loop): ...new function. + (pass_tree_loop_init): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_tree_loop_init): ...new pass_data instance and... + (make_pass_tree_loop_init): ...new function. + (pass_lim): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_lim): ...new pass_data instance and... + (make_pass_lim): ...new function. + (pass_tree_unswitch): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_tree_unswitch): ...new pass_data instance and... + (make_pass_tree_unswitch): ...new function. + (pass_predcom): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_predcom): ...new pass_data instance and... + (make_pass_predcom): ...new function. + (pass_vectorize): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_vectorize): ...new pass_data instance and... + (make_pass_vectorize): ...new function. + (pass_graphite): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_graphite): ...new pass_data instance and... + (make_pass_graphite): ...new function. + (pass_graphite_transforms): Convert from a global struct to a subclass + of gimple_opt_pass along with... + (pass_data_graphite_transforms): ...new pass_data instance and... + (make_pass_graphite_transforms): ...new function. + (pass_check_data_deps): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_check_data_deps): ...new pass_data instance and... + (make_pass_check_data_deps): ...new function. + (pass_iv_canon): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_iv_canon): ...new pass_data instance and... + (make_pass_iv_canon): ...new function. + (pass_scev_cprop): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_scev_cprop): ...new pass_data instance and... + (make_pass_scev_cprop): ...new function. + (pass_record_bounds): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_record_bounds): ...new pass_data instance and... + (make_pass_record_bounds): ...new function. + (pass_complete_unroll): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_complete_unroll): ...new pass_data instance and... + (make_pass_complete_unroll): ...new function. + (pass_complete_unrolli): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_complete_unrolli): ...new pass_data instance and... + (make_pass_complete_unrolli): ...new function. + (pass_parallelize_loops): Convert from a global struct to a subclass + of gimple_opt_pass along with... + (pass_data_parallelize_loops): ...new pass_data instance and... + (make_pass_parallelize_loops): ...new function. + (pass_loop_prefetch): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_loop_prefetch): ...new pass_data instance and... + (make_pass_loop_prefetch): ...new function. + (pass_iv_optimize): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_iv_optimize): ...new pass_data instance and... + (make_pass_iv_optimize): ...new function. + (pass_tree_loop_done): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_tree_loop_done): ...new pass_data instance and... + (make_pass_tree_loop_done): ...new function. + * tree-ssa-math-opts.c (pass_cse_reciprocals): Convert from a global + struct to a subclass of gimple_opt_pass along with... + (pass_data_cse_reciprocals): ...new pass_data instance and... + (make_pass_cse_reciprocals): ...new function. + (pass_cse_sincos): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_cse_sincos): ...new pass_data instance and... + (make_pass_cse_sincos): ...new function. + (pass_optimize_bswap): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_optimize_bswap): ...new pass_data instance and... + (make_pass_optimize_bswap): ...new function. + (pass_optimize_widening_mul): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_optimize_widening_mul): ...new pass_data instance and... + (make_pass_optimize_widening_mul): ...new function. + * tree-ssa-phiopt.c (pass_phiopt): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_phiopt): ...new pass_data instance and... + (make_pass_phiopt): ...new function. + (pass_cselim): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_cselim): ...new pass_data instance and... + (make_pass_cselim): ...new function. + * tree-ssa-phiprop.c (pass_phiprop): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_phiprop): ...new pass_data instance and... + (make_pass_phiprop): ...new function. + * tree-ssa-pre.c (pass_pre): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_pre): ...new pass_data instance and... + (make_pass_pre): ...new function. + (pass_fre): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_fre): ...new pass_data instance and... + (make_pass_fre): ...new function. + * tree-ssa-reassoc.c (pass_reassoc): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_reassoc): ...new pass_data instance and... + (make_pass_reassoc): ...new function. + * tree-ssa-sink.c (pass_sink_code): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_sink_code): ...new pass_data instance and... + (make_pass_sink_code): ...new function. + * tree-ssa-strlen.c (pass_strlen): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_strlen): ...new pass_data instance and... + (make_pass_strlen): ...new function. + * tree-ssa-structalias.c (pass_build_alias): Convert from a global + struct to a subclass of gimple_opt_pass along with... + (pass_data_build_alias): ...new pass_data instance and... + (make_pass_build_alias): ...new function. + (pass_build_ealias): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_build_ealias): ...new pass_data instance and... + (make_pass_build_ealias): ...new function. + (pass_ipa_pta): Convert from a global struct to a subclass of + simple_ipa_opt_pass along with... + (pass_data_ipa_pta): ...new pass_data instance and... + (make_pass_ipa_pta): ...new function. + * tree-ssa-uncprop.c (pass_uncprop): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_uncprop): ...new pass_data instance and... + (make_pass_uncprop): ...new function. + * tree-ssa-uninit.c (pass_late_warn_uninitialized): Convert from a + global struct to a subclass of gimple_opt_pass along with... + (pass_data_late_warn_uninitialized): ...new pass_data instance and... + (make_pass_late_warn_uninitialized): ...new function. + * tree-ssa.c (pass_init_datastructures): Convert from a global struct + to a subclass of gimple_opt_pass along with... + (pass_data_init_datastructures): ...new pass_data instance and... + (make_pass_init_datastructures): ...new function. + (pass_early_warn_uninitialized): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_early_warn_uninitialized): ...new pass_data instance and... + (make_pass_early_warn_uninitialized): ...new function. + (pass_update_address_taken): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_update_address_taken): ...new pass_data instance and... + (make_pass_update_address_taken): ...new function. + * tree-ssanames.c (pass_release_ssa_names): Convert from a global + struct to a subclass of gimple_opt_pass along with... + (pass_data_release_ssa_names): ...new pass_data instance and... + (make_pass_release_ssa_names): ...new function. + * tree-stdarg.c (pass_stdarg): Convert from a global struct to a + subclass of gimple_opt_pass along with... + (pass_data_stdarg): ...new pass_data instance and... + (make_pass_stdarg): ...new function. + * tree-switch-conversion.c (pass_convert_switch): Convert from a + global struct to a subclass of gimple_opt_pass along with... + (pass_data_convert_switch): ...new pass_data instance and... + (make_pass_convert_switch): ...new function. + * tree-tailcall.c (pass_tail_recursion): Convert from a global struct + to a subclass of gimple_opt_pass along with... + (pass_data_tail_recursion): ...new pass_data instance and... + (make_pass_tail_recursion): ...new function. + (pass_tail_calls): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_tail_calls): ...new pass_data instance and... + (make_pass_tail_calls): ...new function. + * tree-vect-generic.c (pass_lower_vector): Convert from a global + struct to a subclass of gimple_opt_pass along with... + (pass_data_lower_vector): ...new pass_data instance and... + (make_pass_lower_vector): ...new function. + (pass_lower_vector_ssa): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_lower_vector_ssa): ...new pass_data instance and... + (make_pass_lower_vector_ssa): ...new function. + * tree-vectorizer.c (pass_slp_vectorize): Convert from a global struct + to a subclass of gimple_opt_pass along with... + (pass_data_slp_vectorize): ...new pass_data instance and... + (make_pass_slp_vectorize): ...new function. + (pass_ipa_increase_alignment): Convert from a global struct to a + subclass of simple_ipa_opt_pass along with... + (pass_data_ipa_increase_alignment): ...new pass_data instance and... + (make_pass_ipa_increase_alignment): ...new function. + * tree-vrp.c (pass_vrp): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_vrp): ...new pass_data instance and... + (make_pass_vrp): ...new function. + * tree.c (pass_ipa_free_lang_data): Convert from a global struct to a + subclass of simple_ipa_opt_pass along with... + (pass_data_ipa_free_lang_data): ...new pass_data instance and... + (make_pass_ipa_free_lang_data): ...new function. + * tsan.c (pass_tsan): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_tsan): ...new pass_data instance and... + (make_pass_tsan): ...new function. + (pass_tsan_O0): Convert from a global struct to a subclass of + gimple_opt_pass along with... + (pass_data_tsan_O0): ...new pass_data instance and... + (make_pass_tsan_O0): ...new function. + * var-tracking.c (pass_variable_tracking): Convert from a global + struct to a subclass of rtl_opt_pass along with... + (pass_data_variable_tracking): ...new pass_data instance and... + (make_pass_variable_tracking): ...new function. + * web.c (pass_web): Convert from a global struct to a subclass of + rtl_opt_pass along with... + (pass_data_web): ...new pass_data instance and... + (make_pass_web): ...new function. + * config/epiphany/epiphany.h (pass_mode_switch_use): Replace + declaration with that of... + (make_pass_mode_switch_use): ...new function. + (pass_resolve_sw_modes): Replace declaration with that of... + (make_pass_resolve_sw_modes): ...new function. + * config/epiphany/mode-switch-use.c (pass_mode_switch_use): Convert + from a global struct to a subclass of rtl_opt_pass along with... + (pass_data_mode_switch_use): ...new pass_data instance and... + (make_pass_mode_switch_use): ...new function. + * config/epiphany/resolve-sw-modes.c (pass_resolve_sw_modes): Convert + from a global struct to a subclass of rtl_opt_pass along with... + (pass_data_resolve_sw_modes): ...new pass_data instance and... + (make_pass_resolve_sw_modes): ...new function. + * config/i386/i386.c (pass_insert_vzeroupper): Convert from a global + struct to a subclass of rtl_opt_pass along with... + (pass_data_insert_vzeroupper): ...new pass_data instance and... + (make_pass_insert_vzeroupper): ...new function. + * config/sparc/sparc.c (pass_work_around_errata): Convert from a + global struct to a subclass of rtl_opt_pass along with... + (pass_data_work_around_errata): ...new pass_data instance and... + (make_pass_work_around_errata): ...new function. + * config/mips/mips.c (pass_mips_machine_reorg2): Convert from a global + struct to a subclass of rtl_opt_pass along with... + (pass_data_mips_machine_reorg2): ...new pass_data instance and... + (make_pass_mips_machine_reorg2): ...new function. + +2013-08-05 David Malcolm + + * passes.c (pass_manager::operator new): New. + +2013-08-05 David Malcolm + + Handwritten part of conversion of passes to C++ classes. + + * Makefile.in (PASS_MANAGER_H): Add dep on pass-instances.def. + (toplev.o): Add dep on PASS_MANAGER_H. + * cgraphunit.c (cgraph_process_new_functions): Rework invocation + of early local pases to reflect this moving from a global to a + member of gcc::pass_manager. + (cgraph_add_new_function): Likewise. + * lto-cgraph.c (lto_output_node): Update for conversion of + struct ipa_opt_pass_d to a C++ subclass of opt_pass. + * passes.c (opt_pass::clone): New. + (opt_pass::gate): New. + (opt_pass::execute): New. + (opt_pass::opt_pass): New. + (pass_manager::execute_early_local_passes): New. + (pass_manager::execute_pass_mode_switching): new. + (finish_optimization_passes): Convert to... + (pass_manager::finish_optimization_passes): ...this. + (finish_optimization_passes): Update for conversion of passes to + C++ classes. + (register_dump_files_1): Use has_gate since we cannot portably + check a vtable entry against NULL. + (dump_one_pass): Likewise. + (ipa_write_summaries_2): Likewise. + (ipa_write_optimization_summaries_1): Likewise. + (ipa_read_summaries_1): Likewise. + (ipa_read_optimization_summaries_1): Likewise. + (execute_ipa_stmt_fixups): Likewise. + (pass_manager::pass_manager): Rewrite pass-creation, invoking + pass-creation functions rather than wiring up globals, and + storing the results in fields of pass_manager generated using + pass-instances.def. + (pass_manager::dump_profile_report): Update for conversion of + passes to C++ classes. + (pass_manager::execute_ipa_summary_passes): Likewise. + (execute_one_ipa_transform_pass): Likewise. + (execute_one_pass): Use has_gate and has_execute since we cannot + portably check a vtable entry against NULL. + * pass_manager.h (pass_manager::finish_optimization_passes): New. + (pass_manager): Use pass-instances.def to add fields for the + various pass instances. + * toplev.c (finalize): Update for move of + finish_optimization_passes to a method of gcc::pass_manager. + * toplev.h (finish_optimization_passes): Move to method of class + pass_manager. + * tree-pass.h (struct pass_data): New. + (opt_pass): Convert to C++ class, make it a subclass of pass_data. + (opt_pass::gate): Convert to virtual function. + (opt_pass::~opt_pass): New. + (opt_pass::clone): New. + (opt_pass::execute): Convert to virtual function. + (opt_pass::opt_pass): New. + (opt_pass::ctxt_): new. + (gimple_opt_pass): Convert to subclass of opt_pass. + (gimple_opt_pass::gimple_opt_pass): New. + (rtl_opt_pass): Convert to subclass of opt_pass. + (rtl_opt_pass::rtl_opt_pass): New. + (ipa_opt_pass_d): Convert to subclass of opt_pass. + (ipa_opt_pass_d::ipa_opt_pass_d): New. + (simple_ipa_opt_pass): Convert to subclass of opt_pass. + (simple_ipa_opt_pass::simple_ipa_opt_pass): New. + * config/i386/i386.c (rest_of_handle_insert_vzeroupper): Rework + invocation of pass_mode_switching to reflect this moving from a + global to a member of gcc::pass_manager. + (ix86_option_override): Rework how pass_insert_vzeroupper is + added to the pass_manager to reflect autogenerated changes. + * config/i386/t-i386 (i386.o) Add deps on CONTEXT_H and PASS_MANAGER_H. + +2013-08-05 Richard Earnshaw + + PR rtl-optimization/57708 + * recog.c (peep2_find_free_register): Validate all regs in a + multi-reg mode. + +2013-08-05 Jan Hubicka + + PR lto/57602 + * cgraph.c (verify_cgraph_node): Accept local flags from other + partitions. + * ipa.c (symtab_remove_unreachable_nodes): Do not clear local flag. + (function_and_variable_visibility): Likewise. + * trans-mem.c (ipa_tm_create_version): TM versions are not local. + +2013-08-05 Gabriel Dos Reis + + * graph.c (init_graph_slim_pretty_print): Remove. + (print_graph_cfg): Do not call it. Use local pretty printer. + (start_graph_dump): Likewise. + +2013-08-05 Gabriel Dos Reis + + * gimple-pretty-print.c (buffer): Remove. + (initialized): Likewise. + (maybe_init_pretty_print): Likewise. + (print_gimple_stmt): Do not call it. Use non-static local + pretty_printer variable. + (print_gimple_expr): Likewise. + (print_gimple_seq): Likewise. + (gimple_dump_bb): Likewise. + +2013-08-05 Gabriel Dos Reis + + * asan.c (asan_pp): Remove. + (asan_pp_initialized): Likewise. + (asan_pp_initialize): Likewise. + (asan_pp_string): Take a pretty_printer parameter. Adjust callers. + (asan_emit_stack_protection): Tidy. Use local pretty printer. + (asan_add_global): Likewise. + +2013-08-04 Gabriel Dos Reis + + * pretty-print.h (pp_base): Remove. Adjust dependent macros. + * diagnostic.h (diagnostic_flush_buffer): Adjust. + * pretty-print.c (pp_formatted_text_data): Likewise. + (pp_indent): Rename from pp_base_indent. + (pp_format): Rename from pp_base_format. + (pp_output_formatted_text): Rename from pp_base_output_formatted_text. + (pp_format_verbatim): Rename from pp_base_format_verbatim. + (pp_flush): Rename from pp_base_flush. + (pp_set_line_maximum_length): Rename from + pp_base_set_line_maximum_length. + (pp_clear_output_area): Rename from pp_base_clear_output_area. + (pp_set_prefix): Rename from pp_base_set_prefix. + (pp_destroy_prefix): Rename from pp_base_destroy_prefix. + (pp_emit_prefix): Rename from pp_base_emit_prefix. + (pp_append_text): Rename from pp_base_append_text. + (pp_formatted_text): Rename from pp_base_formatted_text. + (pp_last_position_in_text): Rename from pp_base_last_position_in_text. + (pp_remaining_character_count_for_line): Rename from + pp_base_remaining_character_count_for_line. + (pp_newline): Rename from pp_base_newline. + (pp_character): Rename from pp_base_character. + (pp_string): Rename from pp_base_string. + (pp_maybe_space): Rename from pp_base_maybe_space. + * asan.c (asan_pp_string): Adjust. + (asan_emit_stack_protection): Likewise. + (asan_add_global): Likewise. + * sched-vis.c (str_pattern_slim): Adjust pretty printer function call. + * tree-mudflap.c (mf_varname_tree): Likewise. + * tree-pretty-print.c (pp_tree_identifier): Rename from + pp_base_tree_identifier. + * tree-pretty-print.h (pp_tree_identifier): Remove macro definition. + Declare as function. + +2013-08-03 Gabriel Dos Reis + + * pretty-print.h (pp_bar_bar): New. + (pp_ampersand_ampersand): Likewise. + (pp_less_equal): Likewise. + (pp_greater_equal): Likewise. + * gimple-pretty-print.c (dump_ternary_rhs): Use specialized pretty + printer functions instead of pp_string or operators and punctuators. + (dump_gimple_call): Likewise. + (dump_gimple_omp_for): Likewise. + (dump_gimple_transaction): Likewise. + (dump_gimple_phi): Likewise. + (pp_gimple_stmt_1): Likewise. + * sched-vis.c (print_insn): Likewise. + * tree-mudflap.c (mf_varname_tree): Likewise. + * tree-pretty-print.c (dump_block_node): Likewise. + (dump_generic_node): Likewise. + +2013-08-02 Jan Hubicka + + * lto-cgraph.c (compute_ltrans_boundary): Add abstract origins into + boundaries. + * lto-streamer-out.c (tree_is_indexable): Results decls and + parm decls are not indexable. + (DFS_write_tree_body): Do not follow args and results. + (hash_tree): Likewise. + (output_functions): Rearrange so struct function is needed + only when real body is output; be able to also ouptut abstract + functions; output DECL_ARGUMENTS and DECL_RESULT. + (lto_output): When not in WPA, ale store abstract functions. + (write_symbol): Do not care about RESULT_DECL. + (output_symbol_p): Handle correctly sbtract decls. + * lto-streamer-in.c (input_function): Rearrange so struct + function can be NULL at entry; allow streaming of + functions w/o body; store DECL_ARGUMENTS and DECL_RESULT. + * ipa.c (symtab_remove_unreachable_nodes): Silence confused + sanity check during LTO. + * tree-streamer-out.c (write_ts_decl_non_common_tree_pointers): Skip + RESULT_DECl and DECL_ARGUMENTS. + * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers): + Likewise. + +2013-08-03 Gabriel Dos Reis + + * pretty-print.h (pp_underscore): New. + (pp_comma): Tidy. + * gimple-pretty-print.c (dump_unary_rhs): Use specialized pretty + printer functions instead of pp_character. + (dump_binary_rhs): Likewise. + (dump_ternary_rhs): Likewise. + (dump_gimple_call_args): Likewise. + (pp_points_to_solution): Likewise. + (dump_gimple_call): Likewise. + (dump_gimple_switch): Likewise. + (dump_gimple_cond): Likewise. + (dump_gimple_bind): Likewise. + (dump_gimple_try): Likewise. + (dump_gimple_omp_for): Likewise. + (dump_gimple_omp_continue): Likewise. + (dump_gimple_omp_single): Likewise. + (dump_gimple_omp_sections): Likewise. + (dump_gimple_omp_block): Likewise. + (dump_gimple_omp_critical): Likewise. + (dump_gimple_transaction): Likewise. + (dump_gimple_asm): Likewise. + (dump_gimple_phi): Likewise. + (dump_gimple_omp_parallel): Likewise. + (dump_gimple_omp_task): Likewise. + (dump_gimple_omp_atomic_load): Likewise. + (dump_gimple_omp_atomic_store): Likewise. + (dump_gimple_mem_ops): Likewise. + (pp_gimple_stmt_1): Likewise. + (pp_cfg_jump): Likewise. + (dump_implicit_edges): Likewise. + (gimple_dump_bb_for_graph): Likewise. + * graph.c (draw_cfg_node): Likewise. + * langhooks.c (lhd_print_error_function): Likewise. + * sched-vis.c (print_exp): Likewise. + (print_value): Likewise. + (print_pattern): Likewise. + (print_insn): Likewise. + (rtl_dump_bb_for_graph): Likewise. + * tree-pretty-print.c (dump_function_declaration): Likewise. + (dump_array_domain): Likewise. + (dump_omp_clause): Likewise. + (dump_location): Likewise. + (dump_generic_node): Likewise. + (print_struct_decl): Likewise. + * diagnostic.c (diagnostic_show_locus): Use pp_space. + +2013-08-03 Bill Schmidt + + * gimple-ssa-strength-reduction.c (replace_mult_candidate): Update + candidate table when replacing a candidate statement. + (replace_rhs_if_not_dup): Likewise. + (replace_one_candidate): Likewise. + +2013-08-02 Jan Hubicka + Martin Liska + + * cgraphunit.c (add_new_function): Fix logic when adding from + late IPA pass. + (assemble_thunk): Rename to ... + (expand_thunk); .. this one; export; get it working with + general functions; make produced gimple valid. + * cgraph.h (expand_thunk): Declare. + +2013-08-02 Jan Hubicka + + * ipa-cp.c (gather_context_independent_values): Use + ipa_get_param_move_cost. + (get_replacement_map): Remove PARAM; move parameter folding + into tree-inline.c + (create_specialized_node): Update. + * ipa-prop.c (ipa_populate_param_decls): Do not look for origins; + assert that we have gimple body; update move_cost. + (count_formal_params): Assert that we have gimple body. + (ipa_dump_param): New function. + (ipa_alloc_node_params): Break out from ... + (ipa_initialize_node_params): ... here. + (ipa_get_vector_of_formal_parms): ICE when used in WPA. + (ipa_write_node_info): Stream move costs. + (ipa_read_node_info): Read move costs. + (ipa_update_after_lto_read): Do not recompute node params. + * ipa-prop.h (ipa_param_descriptor): Add move_cost. + (ipa_get_param): Check we are not in WPA. + (ipa_get_param_move_cost): New. + * tree-inline.c (tree_function_versioning): Fold replacement as needed. + * ipa-inline-analysis.c (inline_node_duplication_hook): Expect only + parm numbers to be present. + +2013-08-02 Vladimir Makarov + + PR rtl-optimization/58048 + * lra-constraints.c (process_alt_operands): Don't check asm + operand on register. + +2013-08-02 Eric Botcazou + + * config/sparc/sparc.c (sparc_emit_membar_for_model) : Add + the implied StoreLoad barrier for atomic operations if before. + +2013-08-02 Jan Hubicka + Martin Liska + + * cgraph.c (cgraph_function_body_availability): Do not check + cgraph flags. + * cgraph.h (symtab_for_node_and_aliases, symtab_nonoverwritable_alias, + symtab_node_availability): Declare. + * ipa.c (can_replace_by_local_alias): New. + (function_and_variable_visibility): Use it. + * symtab.c (symtab_for_node_and_aliases, + symtab_nonoverwritable_alias_1, symtab_nonoverwritable_alias): New. + +2013-08-02 Vladimir Makarov + + PR rtl-optimization/57963 + * lra-constraints.c (reverse_equiv_p, contains_reloaded_insn_p): New. + (lra_constraints): Use them. + +2013-08-02 Sofiane Naci + + * config/arm/types.md (define_attr "type"): Add "load_acq" + and "store_rel". + * config/arm/cortex-a53.md (cortex_a53_load1): Update for attribute + changes. + (cortex_a53_store1): Likewise. + +2013-08-01 Jan Hubicka + + * ipa.c (symtab_remove_unreachable_nodes): Nodes in other + partitions are not needed. + +2013-08-01 Uros Bizjak + + * config/i386/i386.h (MAYBE_NON_Q_CLASS_P): New. + * config/i386/i386.c (ix86_secondary_reload): Use INTEGER_CLASS_P and + MAYBE_NON_Q_CLASS_P where appropriate. + +2013-08-01 Jan Hubicka + + * cgraph.h (release_function_body): Declare. + * tree.c (free_lang_data_in_decl): Free, parameters and return values + of unused delcarations. + +2013-08-01 Kyrylo Tkachov + + * config/arm/arm.md (minmax_arithsi_non_canon): Emit canonical + RTL form when subtracting a constant. + +2013-08-01 Kyrylo Tkachov + + * config/arm/arm.md (peepholes for eq (reg1) (reg2/imm)): + Generate canonical plus rtx with negated immediate instead of minus + where appropriate. + * config/arm/arm.c (thumb2_reorg): Handle ADCS , case. + +2013-08-01 Jan Hubicka + + * cgraph.c (cgraph_release_function_body): Use used_as_abstract_origin. + (cgraph_release_function_body): Likewise. + (cgraph_can_remove_if_no_direct_calls_p): Likewise. + * cgraph.h (cgrpah_node): Rename abstract_and_needed + to used_as_abstract_origin. + * tree-inline-transfrom.c (can_remove_node_now_p_1): Do not remove + symbols used as abstract origins. + * cgraphunit.c (analyze_functions): Update. + * ipa.c (symtab_remove_unreachable_nodes): Recompute + used_as_abstract_origin. + * tree-inline.c (tree_function_versioning): Update + used_as_abstract_origin; be ready for DECL_RESULT and + DECL_ARGUMENTS to be NULL. + + * lto-symtab.c (lto_symtab_merge_symbols): Merge duplicated nodes + for abstract functions. + * cgraph.h (symtab_real_symbol_p): Abstract declarations are not + real symbols. + +2013-08-01 Jan Hubicka + + * profile.c (compute_value_histograms): Fix thinko. + +2013-08-01 Sofiane Naci + + * config.gcc (aarch64*-*-*): Add aarch-common.o to extra_objs. Add + aarch-common-protos.h to extra_headers. + (aarch64*-*-*): Add arm/aarch-common-protos.h to tm_p_file. + * config/aarch64/aarch64.md: Include "../arm/cortex-a53.md". + * config/aarch64/t-aarch64 (aarch-common.o): Define. + +2013-08-01 Sofiane Naci + + * config/aarch64/aarch64.md (define_attr "type"): Delete. + Include "../arm/types.md". Define "type" attribute for all patterns. + * config/aarch64/aarch64-simd.md (move_lo_quad_): Update for + attribute changes. + +2013-07-31 Michael Meissner + + * config/rs6000/predicates.md (fusion_gpr_addis): New predicates + to support power8 load fusion. + (fusion_gpr_mem_load): Likewise. + + * config/rs6000/rs6000-modes.def (PTImode): Update a comment. + + * config/rs6000/rs6000-protos.h (fusion_gpr_load_p): New + declarations for power8 load fusion. + (emit_fusion_gpr_load): Likewise. + + * config/rs6000/rs6000.c (rs6000_option_override_internal): If + tuning for power8, turn on fusion mode by default. Turn on sign + extending fusion mode if normal fusion mode is on, and we are at + -O2 or -O3. + (fusion_gpr_load_p): New function, return true if we can fuse an + addis instruction with a dependent load to a GPR. + (emit_fusion_gpr_load): Emit the instructions for power8 load + fusion to GPRs. + + * config/rs6000/vsx.md (VSX_M2): New iterator for fusion peepholes. + (VSX load fusion peepholes): New peepholes to fuse together an + addi instruction with a VSX load instruction. + + * config/rs6000/rs6000.md (GPR load fusion peepholes): New + peepholes to fuse an addis instruction with a load to a GPR base + register. If we are supporting sign extending fusions, convert + sign extending loads to zero extending loads and add an explicit + sign extension. + +2013-07-31 Sofiane Naci + + * config.gcc (arm*-*-*): Add aarch-common.o to extra_objs. Add + aarch-common-protos.h to extra_headers. + (arm*-*-*): Add arm/aarch-common-protos.h to tm_p_file. + * config/arm/arm.c (arm_early_load_addr_dep): Move from here to ... + (arm_early_store_addr_dep): Likewise. + (arm_no_early_alu_shift_dep): Likewise. + (arm_no_early_alu_shift_value_dep): Likewise. + (arm_no_early_mul_dep): Likewise. + (arm_no_early_store_addr_dep): Likewise. + (arm_mac_accumulator_is_mul_result): Likewise. + (arm_mac_accumulator_is_result): Likewise. + * config/arm/aarch-common.c: ... here. New file. + * config/arm/arm-protos.h (arm_early_load_addr_dep): Move from + here to ... + (arm_early_store_addr_dep): Likewise. + (arm_no_early_alu_shift_dep): Likewise. + (arm_no_early_alu_shift_value_dep): Likewise. + (arm_no_early_mul_dep): Likewise. + (arm_no_early_store_addr_dep): Likewise. + (arm_mac_accumulator_is_mul_result): Likewise. + (arm_mac_accumulator_is_result): Likewise. + * config/arm/aarch-common-protos.h: ... here. New file. + * config/arm/t-arm (aarch-common.o): Define. + +2013-07-31 Sofiane Naci + + * config/arm/arm.md: Include new file "types.md". + (define_attr "type"): Move from here to ... + (define_attr "mul32"): Likewise. + (define_attr "mul64"): Likewise. + * config/arm/types.md: ... here. New file. + +2013-07-31 Sebastian Huber + + * config.gcc (*-*-rtems*): Use __cxa_atexit by default. + * config/rs6000/rtems.h (TARGET_LIBGCC_SDATA_SECTION): Define. + +2013-07-31 Jan-Benedict Glaw + + * gen-pass-instances.awk: Fix offset of substr(). + +2013-07-31 David Malcolm + + * Makefile.in (pass-instances.def): New. + (passes.o): Replace dependency on passes.def with one on + pass-instances.def + + * gen-pass-instances.awk: New. + + * passes.c (pass_manager::pass_manager): Use pass-instances.def + rather than passes.def, updating local definition of NEXT_PASS + macro to add an extra NUM parameter (currently unused). + +2013-07-30 David Malcolm + + * Makefile.in (PASS_MANAGER_H): New. + (lto-cgraph.o): Depend on CONTEXT_H and PASS_MANAGER_H. + (passes.o): Likewise. + (statistics.o): Likewise. + (cgraphunit.o): Likewise. + (context.o): Depend on PASS_MANAGER_H. + + * pass_manager.h: New. + + * cgraphunit.c (cgraph_add_new_function): Update for moves + of globals to fields of pass_manager. + (analyze_function): Likewise. + (expand_function): Likewise. + (ipa_passes): Likewise. + (compile): Likewise. + + * context.c (context::context): New. + * context.h (context::context): New. + (context::get_passes): New. + (context::passes_): New. + + * lto-cgraph.c (input_node): Update for moves of globals to + fields of pass_manager. + + * passes.c (all_passes): Remove, in favor of a field of the + same name within the new class pass_manager. + (all_small_ipa_passes): Likewise. + (all_lowering_passes): Likewise. + (all_regular_ipa_passes): Likewise. + (all_late_ipa_passes): Likewise. + (all_lto_gen_passes): Likewise. + (passes_by_id): Likewise. + (passes_by_id_size): Likewise. + (gcc_pass_lists): Remove, in favor of "pass_lists" field within + the new class pass_manager. + (set_pass_for_id): Convert to... + (pass_manager::set_pass_for_id): ...method. + (get_pass_for_id): Convert to... + (pass_manager::get_pass_for_id): ...method. + (register_one_dump_file): Move body of implementation into... + (pass_manager::register_one_dump_file): ...here. + (register_dump_files_1): Convert to... + (pass_manager::register_dump_files_1): ...method. + (register_dump_files): Convert to... + (pass_manager::register_dump_files): ...method. + (create_pass_tab): Update for moves of globals to fields of + pass_manager. + (dump_passes): Move body of implementation into... + (pass_manager::dump_passes): ...here. + (register_pass): Move body of implementation into... + (pass_manager::register_pass): ...here. + (init_optimization_passes): Convert into... + (pass_manager::pass_manager): ...constructor for new + pass_manager class, and initialize the pass_lists array. + (check_profile_consistency): Update for moves of globals to + fields of pass_manager. + (dump_profile_report): Move body of implementation into... + (pass_manager::dump_profile_report): ...here. + (ipa_write_summaries_1): Update for moves of pass lists from + being globals to fields of pass_manager. + (ipa_write_optimization_summaries): Likewise. + (ipa_read_summaries): Likewise. + (ipa_read_optimization_summaries): Likewise. + (execute_all_ipa_stmt_fixups): Likewise. + + * statistics.c (statistics_fini): Update for moves of globals to + fields of pass_manager. + + * toplev.c (general_init): Replace call to + init_optimization_passes with construction of the pass_manager + instance. + + * tree-pass.h (all_passes): Remove, in favor of a field of the + same name within the new class pass_manager. + (all_small_ipa_passes): Likewise. + (all_lowering_passes): Likewise. + (all_regular_ipa_passes): Likewise. + (all_lto_gen_passes): Likewise. + (all_late_ipa_passes): Likewise. + (passes_by_id): Likewise. + (passes_by_id_size): Likewise. + (gcc_pass_lists): Remove, in favor of "pass_lists" field within + the new class pass_manager. + (get_pass_for_id): Remove. + +2013-07-30 Richard Earnshaw + + * config.gcc (arm): Require 64-bit host-wide-int for all ARM target + configs. + +2013-07-30 Richard Earnshaw + + * arm.md (mulhi3): New expand pattern. + +2013-07-30 Jan Hubicka + Martin Liska + + * profile.c (compute_value_histograms): Do not ICE when + there is mismatch only on some counters. + +2013-07-30 Zhenqiang Chen + + PR rtl-optimization/57637 + * function.c (move_insn_for_shrink_wrap): Also check the + GEN set of the LIVE problem for the liveness analysis + if it exists, otherwise give up. + +2013-07-29 Bill Schmidt + + PR tree-optimization/57993 + * gimple-ssa-strength-reduction.c (replace_mult_candidate): Record + replaced statement in the candidate table. + (phi_add_costs): Return infinite cost when the hidden basis does + not dominate all phis on which the candidate is dependent. + (replace_one_candidate): Record replaced statement in the + candidate table. + +2013-07-29 Joern Rennecke + + * config/epiphany/epiphany.md (*isub_i+2): New peephole. + (ashlv2si3): New expander. + (*ashlv2si3_i): New define_insn_and_split. + * predicates.md (float_operation): Allow patterns with three + basic sub-patterns. + + PR rtl-optimization/58021 + * mode-switching.c (create_pre_exit): Always split off preceding + insns if we are not at the basic block head. + +2013-07-29 Maciej W. Rozycki + + * config/mips/linux.h (GLIBC_DYNAMIC_LINKER): Handle `-mnan=2008'. + (UCLIBC_DYNAMIC_LINKER): New macro. + * config/mips/linux64.h (GLIBC_DYNAMIC_LINKER32): Handle + `-mnan=2008'. + (GLIBC_DYNAMIC_LINKER64, GLIBC_DYNAMIC_LINKERN32): Likewise. + (UCLIBC_DYNAMIC_LINKER32): Undefine macro first. Handle + `-mnan=2008'. + (UCLIBC_DYNAMIC_LINKER64): Redefine macro. + (UCLIBC_DYNAMIC_LINKERN32): Likewise. + * config/mips/mips-modes.def: Remove RESET_FLOAT_FORMAT calls + for SF and DF modes. Use ieee_quad_format for TF mode. + * config/mips/mips-opts.h (mips_ieee_754_setting): New enum. + * config/mips/mips.c (mips_file_start): Output a `.nan' directive. + (mips_option_override): Handle `-mnan=legacy'. + * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Handle + `-mabs=2008' and `-mnan=2008'. + (OPTION_DEFAULT_SPECS): Add "nan" default. + (ASM_SPEC): Handle `-mnan='. + [!HAVE_AS_NAN] (HAVE_AS_NAN): New macro. + * config/mips/mips.md (abs2): Handle `-mabs=2008', update + comment accordingly. + (neg2): Likewise. + * config/mips/mips.opt (mabs, mnan): New options. + * doc/install.texi (Configuration): Document `--with-nan=' option. + * doc/invoke.texi (Option Summary): List MIPS `-mabs=' and + `-mnan=' options. + (MIPS Options): Document them. + * config.gcc : Handle `--with-nan='. + * configure.ac : Check for GAS `-mnan=2008' support. + * configure: Regenerate. + * config.in: Regenerate. + +2013-07-29 Uros Bizjak + + * config/i386/i386.md (float post-reload splitters): Do not check + for subregs of SSE registers. + +2013-07-29 Uros Bizjak + H.J. Lu + + PR target/57954 + PR target/57988 + * config/i386/i386.md (post-reload splitter + to avoid partial SSE reg dependency stalls): New pattern. + +2013-07-29 Dominik Vogt + + * config/s390/s390.md ("movcc"): Swap load and store instructions. + +2013-07-27 Joern Rennecke + + * config/epiphany/epiphany.c (epiphany_compute_frame_size): + Also reserve space for saving UNKNOWN_REGNUM for leaf functions. + +2013-07-26 Cary Coutant + + * dwarf2out.c (die_checksum_ordered): Don't include template + instantiations in signature. + (is_template_parameter): New function. + (is_template_instantiation): New function. + (generate_skeleton_bottom_up): Don't include template instantiations + in type unit DIE. + (generate_skeleton): Likewise. + (break_out_comdat_types): Move recursive call to break out nested + types earlier. + (prune_unused_types_mark_generic_parms_dies): Call + is_template_parameter. + +2013-07-26 Ian Bolton + + * config/aarch64/aarch64.md (neg2): Offer alternative that + uses vector registers. + * config/aarch64/iterators.md: Add attributes rtn and vas. + +2013-07-26 Kyrylo Tkachov + Richard Earnshaw + + * combine.c (simplify_comparison): Re-canonicalize operands + where appropriate. + * config/arm/arm.md (movcond_addsi): New splitter. + +2013-07-25 Sterling Augustine + + * dwarf2out.c (size_of_pubnames): Move code to... + (include_pubname_in_output): ...here. New. + (want_pubnames): Rearrange. + (output_pubnames): Call include_pubname_in_output. Move assertion. + +2013-07-25 Cameron McInally + + * doc/extend.texi: Fix return types for __builtin_ia32_cmp*s builtins. + +2013-07-25 Cameron McInally + + PR target/38836 + * doc/extend.texi: Remove obsolete builtins. Fix + typo for __builtin_ia32_loadss and __builtin_ia32_cmpnltss. + +2013-07-25 Jan Hubicka + + * cgraph.c (release_function_body): Break out from ... + (cgraph_release_function_body): ... this one; also release DECL_RESULT + and DECL_ARGUMENTS. + * ipa-cp.c (get_replacement_map): Add parm_num argument; do not set + old_tree in the map. + (create_specialized_node): Update. + * lto-cgraph.c (output_node_opt_summary): Do not translate old_tree + into index. + * cgraphclones.c (cgraph_create_virtual_clone): Do not copy + DECL_ARGUMENTS, DECL_INITIAL and DECL_RESULT. + * ipa-prop.c (ipa_populate_param_decls): Look for origin of clones. + * tree-inline.c (initialize_cfun): Initialize DECL_ARGUMENTS and + DECL_RESULT. + +2013-07-25 Kyrylo Tkachov + + * config/arm/arm.md (arm_addsi3, addsi3_carryin_, + addsi3_carryin_alt2_): Correct output template. + +2013-07-25 Kyrylo Tkachov + + * config/arm/arm-fixed.md (ssmulsa3, usmulusa3): + Adjust for arm_restrict_it. + Remove trailing whitespace. + +2013-07-25  Mark Kettenis   + + * config/pa/pa.c (pa_trampoline_init): Emit __enable_execute_stack + libcall if HAVE_ENABLE_EXECUTE_STACK is defined. + + * config.gcc (hppa-*-openbsd*): Don't set tmake_file. + +2013-07-25 Vladimir Makarov + + PR rtl-optimization/57960 + * lra-constraints.c (process_alt_operands): Use the right mode + when checking strict_low. + +2013-07-25 Jan Hubicka + + * lto-symtab.c (lto_cgraph_replace_node): Release function body. + * cgraph.c (cgraph_remove_node): Do not release function body + when in cgraph streaming. + * ipa.c (process_references, symtab_remove_unreachable_nodes): Objects + in other partitions are not considered reachable; fix handling of + clones. + +2013-07-25 Ramana Radhakrishnan + + * config/arm/arm.md (*sibcall_insn): Remove unnecessary space. + +2013-07-25 Ramana Radhakrishnan + + PR target/19599 + PR target/57731 + PR target/57837 + * config/arm/arm.md ("*sibcall_insn): Replace use of + Ss with US. Adjust output for v5 and v4t. + (*sibcall_value_insn): Likewise and loosen predicate on operand0. + + * config/arm/constraints.md ("Ss"): Rename to US. + +2013-07-25 Terry Guo + + * config/arm/arm.c (thumb1_size_rtx_costs): Assign proper cost for + shift_add/shift_sub0/shift_sub1 RTXs. + +2013-07-24 Bill Schmidt + Anton Blanchard + + * config/rs6000/altivec.md (altivec_vpkpx): Handle little endian. + (altivec_vpksss): Likewise. + (altivec_vpksus): Likewise. + (altivec_vpkuus): Likewise. + (altivec_vpkuum): Likewise. + +2013-07-24 David Malcolm + + Introduce context class. + + * Makefile.in (CONTEXT_H): New. + (OBJS): Add context.o. + (toplev.o): Add CONTEXT_H to dependencies. + (context.o): New. + + * toplev.c (general_init): Create the singleton gcc::context instance. + + * context.c: New. + + * context.h: New. + +2013-07-24 Joern Rennecke + + PR rtl-optimization/57968 + * mode-switching.c (create_pre_exit): Allow instructions that + don't set a return register to need a non-exit mode. + +2013-07-24 Bill Schmidt + Anton Blanchard + + * config/rs6000/vector.md (vec_realign_load_): Reorder input + operands to vperm for little endian. + * config/rs6000/rs6000.c (rs6000_expand_builtin): Use lvsr instead + of lvsl to create the control mask for a vperm for little endian. + +2013-07-23 Bill Schmidt + Anton Blanchard + + * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Reverse + two operands for little-endian. + +2013-07-23 Steve Ellcey + + * config/mips/mips.c (mips_case_values_threshold): New. + (TARGET_CASE_VALUES_THRESHOLD): Define. + +2013-07-23 Bill Schmidt + Anton Blanchard + + * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Correct + selection of field for vector splat in little endian mode. + +2013-07-23 Michael Meissner + + * config/rs6000/vector.md (xor3): Move 128-bit boolean + expanders to rs6000.md. + (ior3): Likewise. + (and3): Likewise. + (one_cmpl2): Likewise. + (nor3): Likewise. + (andc3): Likewise. + (eqv3): Likewise. + (nand3): Likewise. + (orc3): Likewise. + + * config/rs6000/rs6000-protos.h (rs6000_split_logical): New + declaration. + + * config/rs6000/rs6000.c (rs6000_split_logical_inner): Add support + to split multi-word logical operations. + (rs6000_split_logical_di): Likewise. + (rs6000_split_logical): Likewise. + + * config/rs6000/vsx.md (VSX_L2): Delete, no longer used. + (vsx_and3_32bit): Move 128-bit logical insns to rs6000.md, + and allow TImode operations in 32-bit. + (vsx_and3_64bit): Likewise. + (vsx_ior3_32bit): Likewise. + (vsx_ior3_64bit): Likewise. + (vsx_xor3_32bit): Likewise. + (vsx_xor3_64bit): Likewise. + (vsx_one_cmpl2_32bit): Likewise. + (vsx_one_cmpl2_64bit): Likewise. + (vsx_nor3_32bit): Likewise. + (vsx_nor3_64bit): Likewise. + (vsx_andc3_32bit): Likewise. + (vsx_andc3_64bit): Likewise. + (vsx_eqv3_32bit): Likewise. + (vsx_eqv3_64bit): Likewise. + (vsx_nand3_32bit): Likewise. + (vsx_nand3_64bit): Likewise. + (vsx_orc3_32bit): Likewise. + (vsx_orc3_64bit): Likewise. + + * config/rs6000/rs6000.h (VLOGICAL_REGNO_P): Always allow vector + logical types in GPRs. + + * config/rs6000/altivec.md (altivec_and3): Move 128-bit + logical insns to rs6000.md, and allow TImode operations in + 32-bit. + (altivec_ior3): Likewise. + (altivec_xor3): Likewise. + (altivec_one_cmpl2): Likewise. + (altivec_nor3): Likewise. + (altivec_andc3): Likewise. + + * config/rs6000/rs6000.md (BOOL_128): New mode iterators and mode + attributes for moving the 128-bit logical operations into + rs6000.md. + (BOOL_REGS_OUTPUT): Likewise. + (BOOL_REGS_OP1): Likewise. + (BOOL_REGS_OP2): Likewise. + (BOOL_REGS_UNARY): Likewise. + (BOOL_REGS_AND_CR0): Likewise. + (one_cmpl2): Add support for DI logical operations on + 32-bit, splitting the operations to 32-bit. + (anddi3): Likewise. + (iordi3): Likewise. + (xordi3): Likewise. + (and3, 128-bit types): Rewrite 2013-06-06 logical operator + changes to combine the 32/64-bit code, allow logical operations on + TI mode in 32-bit, and to use similar match_operator patterns like + scalar mode uses. Combine the Altivec and VSX code for logical + operations, and move it here. + (ior3, 128-bit types): Likewise. + (xor3, 128-bit types): Likewise. + (one_cmpl3, 128-bit types): Likewise. + (nor3, 128-bit types): Likewise. + (andc3, 128-bit types): Likewise. + (eqv3, 128-bit types): Likewise. + (nand3, 128-bit types): Likewise. + (orc3, 128-bit types): Likewise. + (and3_internal): Likewise. + (bool3_internal): Likewise. + (boolc3_internal1): Likewise. + (boolc3_internal2): Likewise. + (boolcc3_internal1): Likewise. + (boolcc3_internal2): Likewise. + (eqv3_internal1): Likewise. + (eqv3_internal2): Likewise. + (one_cmpl13_internal): Likewise. + +2013-07-23 David Holsgrove + + * config/microblaze/microblaze.c (microblaze_expand_prologue): + Rename flag_stack_usage to flag_stack_usage_info. + +2013-07-23 David Holsgrove + + * config/microblaze/sync.md: New file. + * config/microblaze/microblaze.md: Include sync.md + * config/microblaze/microblaze.c: Add print_operand 'y'. + * config/microblaze/constraints.md: Add memory_contraint + 'Q' which is a single register. + +2013-07-23 Eric Botcazou + + * doc/invoke.texi (SPARC Options): Document new leon3 processor value. + +2013-07-22 Po-Chun Chang + + * reload.c (find_reloads): Exit loop once we find this operand + cannot be reloaded somehow for this alternative. + + * reload.c (find_reloads): Exit loop once we find a hard register. + + * rtlanal.c (computed_jump_p): Exit loop once we find label + reference is used. + + * i386.c (ix86_pad_returns): Exit loop after setting replace. + + * cfgloopmanip.c (remove_path): Exit loop after setting + irred_invalidated. + + * gensupport.c (subst_dup): Avoid loop if code is not + MATCH_DUP nor MATCH_OP_DUP. + +2013-07-23 Nicklas Bo Jensen + + * doc/md.texi (Machine-Specific Peephole Optimizers): Fix a typo. + +2013-07-23 Yufeng Zhang + + * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Also return + true for SP_REGNUM if mode == ptr_mode. + * config/aarch64/aarch64.h (ADDITIONAL_REGISTER_NAMES): Add "wsp" + with value R0_REGNUM + 31. + +2013-07-23 Yufeng Zhang + + * config/aarch64/aarch64.c (aarch64_pad_arg_upward): In big-endian, + pad pointer-typed argument downward. + +2013-07-23 Yufeng Zhang + + * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define _ILP32 + and __ILP32__ when the ILP32 model is in use. + +2013-07-23 Yufeng Zhang + + * config/aarch64/aarch64.c (POINTER_BYTES): New define. + (aarch64_load_symref_appropriately): In the case of + SYMBOL_SMALL_ABSOLUTE, use the mode of 'dest' instead of Pmode + to generate new rtx; likewise to the case of SYMBOL_SMALL_GOT. + (aarch64_expand_mov_immediate): In the case of SYMBOL_FORCE_TO_MEM, + change to pass 'ptr_mode' to force_const_mem and zero-extend 'mem' + if 'mode' doesn't equal to 'ptr_mode'. + (aarch64_output_mi_thunk): Add an assertion on the alignment of + 'vcall_offset'; change to call aarch64_emit_move differently depending + on whether 'Pmode' equals to 'ptr_mode' or not; use 'POINTER_BYTES' + to calculate the upper bound of 'vcall_offset'. + (aarch64_cannot_force_const_mem): Change to also return true if + mode != ptr_mode. + (aarch64_legitimize_reload_address): In the case of large + displacements, add new local variable 'xmode' and an assertion + based on it; change to use 'xmode' to generate the new rtx and + reload. + (aarch64_asm_trampoline_template): Change to generate the template + differently depending on TARGET_ILP32 or not; change to use + 'POINTER_BYTES' in the argument passed to assemble_aligned_integer. + (aarch64_trampoline_size): Removed. + (aarch64_trampoline_init): Add new local constant 'tramp_code_sz' + and replace immediate literals with it. Change to use 'ptr_mode' + instead of 'DImode' and call convert_memory_address if the mode + of 'fnaddr' doesn't equal to 'ptr_mode'. + (aarch64_elf_asm_constructor): Change to use assemble_aligned_integer + to output symbol. + (aarch64_elf_asm_destructor): Likewise. + * config/aarch64/aarch64.h (TRAMPOLINE_SIZE): Change to be dependent + on TARGET_ILP32 instead of aarch64_trampoline_size. + * config/aarch64/aarch64.md (movsi_aarch64): Add new alternatives + of 'mov' between WSP and W registers as well as 'adr' and 'adrp'. + (loadwb_pair_): Rename to ... + (loadwb_pair_): ... this. Replace PTR with P. + (storewb_pair_): Likewise; rename to ... + (storewb_pair_): ... this. + (add_losym): Change to 'define_expand' and call gen_add_losym_ + depending on the value of 'mode'. + (add_losym_): New. + (ldr_got_small_): New, based on ldr_got_small. + (ldr_got_small): Remove. + (ldr_got_small_sidi): New. + * config/aarch64/iterators.md (P): New. + (PTR): Change to 'ptr_mode' in the condition. + +2013-07-23 Yufeng Zhang + + * config.gcc (aarch64*-*-*): Support --with-abi. + (aarch64*-*-elf): Support --with-multilib-list. + (aarch64*-*-linux*): Likewise. + (supported_defaults): Add abi to aarch64*-*-*. + * configure.ac: Mention AArch64 for --with-multilib-list. + * configure: Re-generated. + * config/aarch64/biarchilp32.h: New file. + * config/aarch64/biarchlp64.h: New file. + * config/aarch64/aarch64-elf.h (ENDIAN_SPEC): New define. + (ABI_SPEC): Ditto. + (MULTILIB_DEFAULTS): Ditto. + (DRIVER_SELF_SPECS): Ditto. + (ASM_SPEC): Update to also substitute -mabi. + * config/aarch64/aarch64-elf-raw.h (LINK_SPEC): Add linker script + file whose name depends on -mabi= and -mbig-endian. + * config/aarch64/aarch64.h (LONG_TYPE_SIZE): Change to depend on + TARGET_ILP32. + (POINTER_SIZE): New define. + (POINTERS_EXTEND_UNSIGNED): Ditto. + (enum aarch64_abi_type): New enumeration tag. + (AARCH64_ABI_LP64, AARCH64_ABI_ILP32): New enumerators. + (AARCH64_ABI_DEFAULT): Define to AARCH64_ABI_LP64 if undefined. + (TARGET_ILP32): New define. + * config/aarch64/aarch64.opt (mabi): New. + (aarch64_abi): New. + (ilp32, lp64): New values for -mabi. + * config/aarch64/t-aarch64 (comma): New define. + (MULTILIB_OPTIONS): Ditto. + (MULTILIB_DIRNAMES): Ditto. + * config/aarch64/t-aarch64-linux (MULTIARCH_DIRNAME): New define. + * doc/invoke.texi: Document -mabi for AArch64. + +2013-07-23 Georg-Johann Lay + + * config/avr/avr.md: Explain asm print modifier 'r' for REG. + +2013-07-22 Bill Schmidt + Anton Blanchard + + * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix + endianness when selecting field to splat. + +2013-07-22 Eric Christopher + + * dwarf2out.c (die_odr_checksum): New function to use + CHECKSUM_ macros and ULEB128 for DIE tag. + (generate_type_signature): Use. + +2013-07-22 Eric Botcazou + + * config.gcc (sparc*-*-*): Accept leon3 processor. + (sparc-leon*-*): Merge with sparc*-*-* and add leon3 support. + * doc/invoke.texi (SPARC Options): Adjust -mfix-ut699 entry. + * config/sparc/sparc-opts.h (enum processor_type): Add PROCESSOR_LEON3. + * config/sparc/sparc.opt (enum processor_type): Add leon3. + (mfix-ut699): Adjust comment. + * config/sparc/sparc.h (TARGET_CPU_leon3): New define. + (CPP_CPU32_DEFAULT_SPEC): Add leon3 support. + (CPP_CPU_SPEC): Likewise. + (ASM_CPU_SPEC): Likewise. + * config/sparc/sparc.c (leon3_cost): New constant. + (sparc_option_override): Add leon3 support. + (mem_ref): New function. + (sparc_gate_work_around_errata): Return true if -mfix-ut699 is enabled. + (sparc_do_work_around_errata): Look into the instruction in the delay + slot and adjust accordingly. Add fix for the data cache nullify issues + of the UT699. Change insertion position for the NOP. + * config/sparc/leon.md (leon_fpalu, leon_fpmds, write_buf): Delete. + (leon3_load): New reservation. + (leon_store): Bump latency to 2. + (grfpu): New automaton. + (grfpu_alu): New unit. + (grfpu_ds): Likewise. + (leon_fp_alu): Adjust. + (leon_fp_mult): Delete. + (leon_fp_div): Split into leon_fp_divs and leon_fp_divd. + (leon_fp_sqrt): Split into leon_fp_sqrts and leon_fp_sqrtd. + * config/sparc/sparc.md (cpu): Add leon3. + * config/sparc/sync.md (atomic_exchangesi): Disable if -mfix-ut699. + (swapsi): Likewise. + (atomic_test_and_set): Likewise. + (ldstub): Likewise. + +2013-07-22 Jürgen Urban + + * config.gcc (mips*-*-*): Add --with-fpu support. Make single the + default for R5900 targets. + * config/mips/mips.h (OPTION_DEFAULT_SPECS): Handle --with-fpu. + (ISA_HAS_LDC1_SDC1): Set to false for TARGET_MIPS5900. + * config/mips/mips.c (mips_option_override): Report an error for + -march=r5900 -mhard-float -mdouble-float. Use spu_single_format + for -march=r5900 -mhard-float. + +2013-07-22 Po-Chun Chang + + * df-problems.c (can_move_insns_across): Exit loop once we + find a non-fixed, non-global register. + + * ipa-pure-const.c (propagate_nothrow): Exit loop after + setting can_throw. + + * omega.c (omega_eliminate_red): Break after setting red_found. + (omega_problem_has_red_equations): Similarly after setting found. + (omega_query_variable): Similarly after setting coupled. + +2013-07-22 Marek Polacek + + * gimplify.c: Don't include gimple.h twice. + +2013-07-22 Kyrylo Tkachov + + * config/arm/constraints.md (Pd): Allow TARGET_THUMB + instead of TARGET_THUMB1. + (Pz): New constraint. + * config/arm/arm.md (arm_addsi3): Add alternatives for 16-bit + encodings. + (compare_negsi_si): Likewise. + (compare_addsi2_op0): Likewise. + (compare_addsi2_op1): Likewise. + (addsi3_carryin_): Likewise. + (addsi3_carryin_alt2_): Likewise. + (addsi3_carryin_shift_): Disable cond_exec variant + for arm_restrict_it. + (subsi3_carryin): Likewise. + (arm_subsi3_insn): Add alternatives for 16-bit encoding. + (minmax_arithsi): Disable for arm_restrict_it. + (minmax_arithsi_non_canon): Adjust for arm_restrict_it. + (satsi_): Disable cond_exec variant for arm_restrict_it. + (satsi__shift): Likewise. + (arm_shiftsi3): Add alternative for 16-bit encoding. + (arm32_movhf): Disable for arm_restrict_it. + (arm_cmpdi_unsigned): Add alternatives for 16-bit encoding. + (arm_movtas_ze): Disable cond_exec variant for arm_restrict_it. + +2013-07-22 Sofiane Naci + + * config/arm/arm.md (attribute "insn"): Delete. + (attribute "type"): Add "mov_imm", "mov_reg", "mov_shift", + "mov_shift_reg", "mvn_imm", "mvn_reg", "mvn_shift" and "mvn_shift_reg". + (not_shiftsi): Update for attribute change. + (not_shiftsi_compare0): Likewise. + (not_shiftsi_compare0_scratch): Likewise. + (arm_one_cmplsi2): Likewise. + (thumb1_one_cmplsi2): Likewise. + (notsi_compare0): Likewise. + (notsi_compare0_scratch): Likewise. + (thumb1_movdi_insn): Likewise. + (arm_movsi_insn): Likewise. + (movhi_insn_arch4): Likewise. + (movhi_bytes): Likewise. + (arm_movqi_insn): Likewise. + (thumb1_movqi_insn): Likewise. + (arm32_movhf): Likewise. + (thumb1_movhf): Likewise. + (arm_movsf_soft_insn): Likewise. + (thumb1_movsf_insn): Likewise. + (thumb_movdf_insn): Likewise. + (movsicc_insn): Likewise. + (movsfcc_soft_insn): Likewise. + (and_scc): Likewise. + (cond_move): Likewise. + (if_move_not): Likewise. + (if_not_move): Likewise. + (if_shift_move): Likewise. + (if_move_shift): Likewise. + (if_shift_shift): Likewise. + (if_not_arith): Likewise. + (if_arith_not): Likewise. + (cond_move_not): Likewise. + * config/arm/neon.md (neon_mov): Update for attribute change. + (neon_mov): Likewise. + * config/arm/vfp.md (arm_movsi_vfp): Update for attribute change. + (thumb2_movsi_vfp): Likewise. + (movsf_vfp): Likewise. + (thumb2_movsf_vfp): Likewise. + * config/arm/arm.c (xscale_sched_adjust_cost): Update for attribute + change. + (cortexa7_older_only): Likewise. + (cortexa7_younger): Likewise. + * config/arm/arm1020e.md (1020alu_op): Update for attribute change. + (1020alu_shift_op): Likewise. + (1020alu_shift_reg_op): Likewise. + * config/arm/arm1026ejs.md (alu_op): Update for attribute change. + (alu_shift_op): Likewise. + (alu_shift_reg_op): Likewise. + * config/arm/arm1136jfs.md (11_alu_op): Update for attribute change. + (11_alu_shift_op): Likewise. + (11_alu_shift_reg_op): Likewise. + * config/arm/arm926ejs.md (9_alu_op): Update for attribute change. + (9_alu_shift_reg_op): Likewise. + * config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute + change. + (cortex_a15_alu_shift): Likewise. + (cortex_a15_alu_shift_reg): Likewise. + * config/arm/cortex-a5.md (cortex_a5_alu): Update for attribute change. + (cortex_a5_alu_shift): Likewise. + * config/arm/cortex-a53.md (cortex_a53_alu): Update for attribute + change. + (cortex_a53_alu_shift): Likewise. + * config/arm/cortex-a7.md (cortex_a7_alu_imm): Update for attribute + change. + (cortex_a7_alu_reg): Likewise. + (cortex_a7_alu_shift): Likewise. + * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute change. + (cortex_a8_alu_shift): Likewise. + (cortex_a8_alu_shift_reg): Likewise. + (cortex_a8_mov): Likewise. + * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute change. + (cortex_a9_dp_shift): Likewise. + * config/arm/cortex-m4.md (cortex_m4_alu): Update for attribute change. + * config/arm/cortex-r4.md (cortex_r4_alu): Update for attribute change. + (cortex_r4_mov): Likewise. + (cortex_r4_alu_shift): Likewise. + (cortex_r4_alu_shift_reg): Likewise. + * config/arm/fa526.md (526_alu_op): Update for attribute change. + (526_alu_shift_op): Likewise. + * config/arm/fa606te.md (606te_alu_op): Update for attribute change. + * config/arm/fa626te.md (626te_alu_op): Update for attribute change. + (626te_alu_shift_op): Likewise. + * config/arm/fa726te.md (726te_shift_op): Update for attribute change. + (726te_alu_op): Likewise. + (726te_alu_shift_op): Likewise. + (726te_alu_shift_reg_op): Likewise. + * config/arm/fmp626.md (mp626_alu_op): Update for attribute change. + (mp626_alu_shift_op): Likewise. + * config/arm/marvell-pj4.md (pj4_alu_e1): Update for attribute change. + (pj4_alu_e1_conds): Likewise. + (pj4_alu): Likewise. + (pj4_alu_conds): Likewise. + (pj4_shift): Likewise. + (pj4_shift_conds): Likewise. + (pj4_alu_shift): Likewise. + (pj4_alu_shift_conds): Likewise. + +2013-07-22 Kyrylo Tkachov + + * config/arm/predicates.md (shiftable_operator_strict_it): + New predicate. + * config/arm/thumb2.md (thumb_andsi_not_shiftsi_si): + Disable cond_exec version for arm_restrict_it. + (thumb2_smaxsi3): Convert to generate cond_exec. + (thumb2_sminsi3): Likewise. + (thumb32_umaxsi3): Likewise. + (thumb2_uminsi3): Likewise. + (thumb2_abssi2): Adjust constraints for arm_restrict_it. + (thumb2_neg_abssi2): Likewise. + (thumb2_mov_scc): Add alternative for 16-bit encoding. + (thumb2_movsicc_insn): Adjust alternatives. + (thumb2_mov_negscc): Disable for arm_restrict_it. + (thumb2_mov_negscc_strict_it): New pattern. + (thumb2_mov_notscc_strict_it): New pattern. + (thumb2_mov_notscc): Disable for arm_restrict_it. + (thumb2_ior_scc): Likewise. + (thumb2_ior_scc_strict_it): New pattern. + (thumb2_cond_move): Adjust for arm_restrict_it. + (thumb2_cond_arith): Disable for arm_restrict_it. + (thumb2_cond_arith_strict_it): New pattern. + (thumb2_cond_sub): Adjust for arm_restrict_it. + (thumb2_movcond): Likewise. + (thumb2_extendqisi_v6): Disable cond_exec variant for arm_restrict_it. + (thumb2_zero_extendhisi2_v6): Likewise. + (thumb2_zero_extendqisi2_v6): Likewise. + (orsi_notsi_si): Likewise. + (orsi_not_shiftsi_si): Likewise. + +2013-07-22 Georg-Johann Lay + + * config/avr/avr.c (avr_out_xload): No SBIS around LPM so that + instruction sequence is 1 byte shorter. + +2013-07-22 Uros Bizjak + + * config/i386/i386.md (nonlocal_goto_receiver): Delete insn if + it is not needed after split. + +2013-07-20 Iain Sandoe + + PR target/51784 + * config/i386/i386.c (output_set_got) [TARGET_MACHO]: Adjust to emit a + second label for nonlocal goto receivers. Don't output pic base labels + unless we're producing PIC; mark that action unreachable(). + (ix86_save_reg): If the function contains a nonlocal label, save the + PIC base reg. + * config/darwin-protos.h (machopic_should_output_picbase_label): New. + * config/darwin.c (emitted_pic_label_num): New GTY. + (update_pic_label_number_if_needed): New. + (machopic_output_function_base_name): Adjust for nonlocal receiver + case. + (machopic_should_output_picbase_label): New. + * config/i386/i386.md (enum unspecv): UNSPECV_NLGR: New. + (nonlocal_goto_receiver): New insn and split. + +2013-07-20 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_fold_builtin): Fold abs in all modes. + * config/aarch64/aarch64-simd-builtins.def + (abs): Enable for all modes. + * config/aarch64/arm_neon.h + (vabs_s<8,16,32,64): Rewrite using builtins. + (vabs_f64): Add missing intrinsic. + +2013-07-19 Ian Bolton + + * config/aarch64/arm_neon.h (vabs_s64): New function + +2013-07-19 Georg-Johann Lay + + PR target/57516 + * config/avr/avr-fixed.md (round3_const): Turn expander to insn. + * config/avr/avr.md (adjust_len): Add `round'. + * config/avr/avr-protos.h (avr_out_round): New prototype. + (avr_out_plus): Add `out_label' argument. + * config/avr/avr.c (avr_out_plus_1): Add `out_label' argument. + (avr_out_plus): Pass down `out_label' to avr_out_plus_1. + Handle the case where `insn' is just a pattern. + (avr_out_bitop): Handle the case where `insn' is just a pattern. + (avr_out_round): New function. + (avr_adjust_insn_length): Handle ADJUST_LEN_ROUND. + +2013-07-18 David Holsgrove + + * config/microblaze/microblaze.c (microblaze_expand_prologue): + Add check for flag_stack_usage to handle -fstack-usage support + +2013-07-18 Pat Haugen + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Adjust flag + interaction for new Power8 flags and VSX. + +2013-07-18 Sriraman Tallam + + PR middle-end/57698 + * tree-inline.c (expand_call_inline): Emit errors during + early_inlining only if optimization is not turned on. + +2013-07-18 David Malcolm + + * passes.def: New. + + * passes.c (init_optimization_passes): Move the construction of + the pass hierarchy into a new passes.def file. + + * Makefile.in (passes.o): Add dependency on passes.def. + +2013-07-18 David Malcolm + + * passes.c (init_optimization_passes): Introduce macros for + constructing the tree of passes (INSERT_PASSES_AFTER, + PUSH_INSERT_PASSES_WITHIN, POP_INSERT_PASSES, + TERMINATE_PASS_LIST). + +2013-07-18 Vladimir Makarov + Wei Mi + + PR rtl-optimization/57878 + * lra-assigns.c (assign_by_spills): Move non_reload_pseudos to the + top. + (reload_pseudo_compare_func): Check nregs first for reload + pseudos. + +2013-07-18 David Malcolm + + * tree-pass.h (pass_ipa_lto_wpa_fixup): Remove redundant decl. + +2013-07-18 Po-Chun Chang + + * read-rtl.c (validate_const_int): Once an invalid character is + seen, quit the loop. + + * gengtype.c (write_roots): Similarly once we find the "deletable" + or "if_marked" option. + +2013-07-18 Sofiane Naci + + * config/arm/arm.md (attribute "insn"): Delete values "mrs", "msr", + "xtab" and "sat". Move value "clz" from here to ... + (attriubte "type"): ... here. + (satsi_): Delete "insn" attribute. + (satsi__shift): Likewise. + (arm_zero_extendqisi2addsi): Likewise. + (arm_extendqisi2addsi): Likewise. + (clzsi2): Update for attribute changes. + (rbitsi2): Likewise. + * config/arm/arm-fixed.md (arm_ssatsihi_shift): Delete "insn" + attribute. + (arm_usatsihi): Likewise. + * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute change. + +2013-07-18 Sofiane Naci + + * config/arm/arm.md (attribute "type"): Rename "simple_alu_imm" to + "arlo_imm". Rename "alu_reg" to "arlo_reg". Rename "simple_alu_shift" + to "extend". Split "alu_shift" into "shift" and "arlo_shift". Split + "alu_shift_reg" into "shift_reg" and "arlo_shift_reg". List types + in alphabetical order. + (attribute "core_cycles"): Update for attribute changes. + (arm_addsi3): Likewise. + (addsi3_compare0): Likewise. + (addsi3_compare0_scratch): Likewise. + (addsi3_compare_op1): Likewise. + (addsi3_compare_op2): Likewise. + (compare_addsi2_op0): Likewise. + (compare_addsi2_op1): Likewise. + (addsi3_carryin_shift_): Likewise. + (subsi3_carryin_shift): Likewise. + (rsbsi3_carryin_shift): Likewise. + (arm_subsi3_insn): Likewise. + (subsi3_compare0): Likewise. + (subsi3_compare): Likewise. + (arm_andsi3_insn): Likewise. + (thumb1_andsi3_insn): Likewise. + (andsi3_compare0): Likewise. + (andsi3_compare0_scratch): Likewise. + (zeroextractsi_compare0_scratch + (andsi_not_shiftsi_si): Likewise. + (iorsi3_insn): Likewise. + (iorsi3_compare0): Likewise. + (iorsi3_compare0_scratch): Likewise. + (arm_xorsi3): Likewise. + (thumb1_xorsi3_insn): Likewise. + (xorsi3_compare0): Likewise. + (xorsi3_compare0_scratch): Likewise. + (satsi__shift): Likewise. + (rrx): Likewise. + (arm_shiftsi3): Likewise. + (shiftsi3_compare0): Likewise. + (not_shiftsi): Likewise. + (not_shiftsi_compare0): Likewise. + (not_shiftsi_compare0_scratch): Likewise. + (arm_one_cmplsi2): Likewise. + (thumb_one_complsi2): Likewise. + (notsi_compare0): Likewise. + (notsi_compare0_scratch): Likewise. + (thumb1_zero_extendhisi2): Likewise. + (arm_zero_extendhisi2): Likewise. + (arm_zero_extendhisi2_v6): Likewise. + (arm_zero_extendhisi2addsi): Likewise. + (thumb1_zero_extendqisi2): Likewise. + (thumb1_zero_extendqisi2_v6): Likewise. + (arm_zero_extendqisi2): Likewise. + (arm_zero_extendqisi2_v6): Likewise. + (arm_zero_extendqisi2addsi): Likewise. + (thumb1_extendhisi2): Likewise. + (arm_extendhisi2): Likewise. + (arm_extendhisi2_v6): Likewise. + (arm_extendqisi): Likewise. + (arm_extendqisi_v6): Likewise. + (arm_extendqisi2addsi): Likewise. + (thumb1_extendqisi2): Likewise. + (thumb1_movdi_insn): Likewise. + (arm_movsi_insn): Likewise. + (movsi_compare0): Likewise. + (movhi_insn_arch4): Likewise. + (movhi_bytes): Likewise. + (arm_movqi_insn): Likewise. + (thumb1_movqi_insn): Likewise. + (arm32_movhf): Likewise. + (thumb1_movhf): Likewise. + (arm_movsf_soft_insn): Likewise. + (thumb1_movsf_insn): Likewise. + (movdf_soft_insn): Likewise. + (thumb_movdf_insn): Likewise. + (arm_cmpsi_insn): Likewise. + (cmpsi_shiftsi): Likewise. + (cmpsi_shiftsi_swp): Likewise. + (arm_cmpsi_negshiftsi_si): Likewise. + (movsicc_insn): Likewise. + (movsfcc_soft_insn): Likewise. + (arith_shiftsi): Likewise. + (arith_shiftsi_compare0 + (arith_shiftsi_compare0_scratch + (sub_shiftsi): Likewise. + (sub_shiftsi_compare0 + (sub_shiftsi_compare0_scratch + (and_scc): Likewise. + (cond_move): Likewise. + (if_plus_move): Likewise. + (if_move_plus): Likewise. + (if_move_not): Likewise. + (if_not_move): Likewise. + (if_shift_move): Likewise. + (if_move_shift): Likewise. + (if_shift_shift): Likewise. + (if_not_arith): Likewise. + (if_arith_not): Likewise. + (cond_move_not): Likewise. + (thumb1_ashlsi3): Set type attribute. + (thumb1_ashrsi3): Likewise. + (thumb1_lshrsi3): Likewise. + (thumb1_rotrsi3): Likewise. + (shiftsi3_compare0_scratch): Likewise. + * config/arm/neon.md (neon_mov): Update for attribute changes. + (neon_mov): Likewise. + * config/arm/thumb2.md (thumb_andsi_not_shiftsi_si): Update for + attribute changes. + (thumb2_movsi_insn): Likewise. + (thumb2_cmpsi_neg_shiftsi): Likewise. + (thumb2_extendqisi_v6): Likewise. + (thumb2_zero_extendhisi2_v6): Likewise. + (thumb2_zero_extendqisi2_v6): Likewise. + (thumb2_shiftsi3_short): Likewise. + (thumb2_addsi3_compare0_scratch): Likewise. + (orsi_not_shiftsi_si): Likewise. + * config/arm/vfp.md (arm_movsi_vfp): Update for attribute changes. + * config/arm/arm-fixed.md (arm_ssatsihi_shift): Update for attribute + changes. + * config/arm/arm1020e.md (1020alu_op): Update for attribute changes. + (1020alu_shift_op): Likewise. + (1020alu_shift_reg_op): Likewise. + * config/arm/arm1026ejs.md (alu_op): Update for attribute changes. + (alu_shift_op): Likewise. + (alu_shift_reg_op): Likewise. + * config/arm/arm1136jfs.md (11_alu_op): Update for attribute changes. + (11_alu_shift_op): Likewise. + (11_alu_shift_reg_op): Likewise. + * config/arm/arm926ejs.md (9_alu_op): Update for attribute changes. + (9_alu_shift_reg_op): Likewise. + * config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute + changes. + (cortex_a15_alu_shift): Likewise. + (cortex_a15_alu_shift_reg): Likewise. + * config/arm/cortex-a5.md (cortex_a5_alu): Update for attribute + changes. + (cortex_a5_alu_shift): Likewise. + * config/arm/cortex-a53.md (cortex_a53_alu) : Update for attribute + changes. + (cortex_a53_alu_shift): Likewise. + * config/arm/cortex-a7.md (cortex_a7_alu_imm): Update for attribute + changes. + (cortex_a7_alu_reg): Likewise. + (cortex_a7_alu_shift): Likewise. + * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute + changes. + (cortex_a8_alu_shift): Likewise. + (cortex_a8_alu_shift_reg): Likewise. + (cortex_a8_mov): Likewise. + * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute changes. + (cortex_a9_dp_shift): Likewise. + * config/arm/cortex-m4.md (cortex_m4_alu): Update for attribute + changes. + * config/arm/cortex-r4.md (cortex_r4_alu): Update for attribute + changes. + (cortex_r4_mov): Likewise. + (cortex_r4_alu_shift): Likewise. + (cortex_r4_alu_shift_reg): Likewise. + * config/arm/fa526.md (526_alu_op): Update for attribute changes. + (526_alu_shift_op): Likewise. + * config/arm/fa606te.md (606te_alu_op): Update for attribute changes. + * config/arm/fa626te.md (626te_alu_op): Update for attribute changes. + (626te_alu_shift_op): Likewise. + * config/arm/fa726te.md (726te_shift_op): Update for attribute changes. + (726te_alu_op): Likewise. + (726te_alu_shift_op): Likewise. + (726te_alu_shift_reg_op): Likewise. + * config/arm/fmp626.md (mp626_alu_op): Update for attribute changes. + (mp626_alu_shift_op): Likewise. + * config/arm/marvell-pj4.md (pj4_alu_e1): Update for attribute changes. + (pj4_alu_e1_conds): Likewise. + (pj4_alu): Likewise. + (pj4_alu_conds): Likewise. + (pj4_shift): Likewise. + (pj4_shift_conds): Likewise. + (pj4_alu_shift): Likewise. + (pj4_alu_shift_conds): Likewise. + * config/arm/arm.c (xscale_sched_adjust_cost): Update for attribute + changes. + (cortexa7_older_only): Likewise. + (cortexa7_younger): Likewise. + +2013-07-18 David Malcolm + + * ipa-pure-const.c (generate_summary): Rename to... + (pure_const_generate_summary): ... this. + +2013-07-17 Iain Sandoe + + * config/rs6000/darwin.h (REGISTER_NAMES): Add HTM registers. + +2013-07-17 Yvan Roux + + PR target/57909 + * config/arm/arm.c (gen_movmem_ldrd_strd): Fix unaligned load/store + usage in HI mode. + +2013-07-17 Andreas Krebbel + + * config/s390/s390.c: (s390_expand_builtin): Allow -mhtm to be + enabled without -march=zEC12. + * config/s390/s390.h (TARGET_HTM): Do not require EC12 machine + flags to be set. + +2013-07-16 Maciej W. Rozycki + + * config/mips/mips.h (ISA_HAS_FP4): Correct formatting. + (ISA_HAS_FP_MADD4_MSUB4): Also enable for ISA_MIPS32R2. + (ISA_HAS_NMADD4_NMSUB4): Remove the MODE argument; rewrite in + terms of ISA_HAS_FP4, and also enable for ISA_MIPS32R2. + (ISA_HAS_NMADD3_NMSUB3): Remove the MODE argument. + * config/mips/mips.c (mips_rtx_costs) : Check for + ISA_HAS_FP_MADD4_MSUB4 || ISA_HAS_FP_MADD3_MSUB3 rather than + ISA_HAS_FP4. + : Update according to changes to ISA_HAS_NMADD4_NMSUB4 + and ISA_HAS_NMADD3_NMSUB3. + * config/mips/mips.md (nmadd4, nmadd3): Likewise. + (nmadd4_fastmath, nmadd3_fastmath): Likewise. + (nmsub4, nmsub3): Likewise. + (nmsub4_fastmath, nmsub3_fastmath): Likewise. + +2013-07-16 Maciej W. Rozycki + + * config/mips/mips.h (ISA_HAS_NMADD4_NMSUB4): Remove + TARGET_MIPS5400 checking. + +2013-07-16 Jakub Jelinek + Peter Bergner + + * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTERS): Mention HTM + registers in the comment. + (DWARF_FRAME_REGISTERS): Subtract also the 3 HTM registers. + (DWARF_REG_TO_UNWIND_COLUMN): Use DWARF_FRAME_REGISTERS + rather than FIRST_PSEUDO_REGISTERS. + +2013-07-16 Peter Bergner + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not + enable extra ISA flags with TARGET_HTM. + +2013-07-16 Maciej W. Rozycki + + * config/mips/mips.h (ISA_HAS_MULS, ISA_HAS_MSAC, ISA_HAS_MACC): + Fix comment typos. + +2013-07-15 Cong Hou + + * tree-vect-data-refs.c (dr_group_sort_cmp): Do not use hash function + in compare function for sorting. + +2013-07-15 Peter Bergner + + * config.gcc (powerpc*-*-*): Install htmintrin.h and htmxlintrin.h. + * config/rs6000/t-rs6000 (MD_INCLUDES): Add htm.md. + * config/rs6000/rs6000.opt: Add -mhtm option. + * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add OPTION_MASK_HTM. + (ISA_2_7_MASKS_SERVER): Add OPTION_MASK_HTM. + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define + __HTM__ if the HTM instructions are available. + * config/rs6000/predicates.md (u3bit_cint_operand, u10bit_cint_operand, + htm_spr_reg_operand): New define_predicates. + * config/rs6000/rs6000.md (define_attr "type"): Add htm. + (TFHAR_REGNO, TFIAR_REGNO, TEXASR_REGNO): New define_constants. + Include htm.md. + * config/rs6000/rs6000-builtin.def (BU_HTM_0, BU_HTM_1, BU_HTM_2, + BU_HTM_3, BU_HTM_SPR0, BU_HTM_SPR1): Add support macros for defining + HTM builtin functions. + * config/rs6000/rs6000.c (RS6000_BUILTIN_H): New macro. + (rs6000_reg_names, alt_reg_names): Add HTM SPR register names. + (rs6000_init_hard_regno_mode_ok): Add support for HTM instructions. + (rs6000_builtin_mask_calculate): Likewise. + (rs6000_option_override_internal): Likewise. + (bdesc_htm): Add new HTM builtin support. + (htm_spr_num): New function. + (htm_spr_regno): Likewise. + (rs6000_htm_spr_icode): Likewise. + (htm_expand_builtin): Likewise. + (htm_init_builtins): Likewise. + (rs6000_expand_builtin): Add support for HTM builtin functions. + (rs6000_init_builtins): Likewise. + (rs6000_invalid_builtin, rs6000_opt_mask): Add support for -mhtm + option. + * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mhtm. + (TARGET_HTM, MASK_HTM): Define macros. + (FIRST_PSEUDO_REGISTER): Adjust for new HTM SPR registers. + (FIXED_REGISTERS): Likewise. + (CALL_USED_REGISTERS): Likewise. + (CALL_REALLY_USED_REGISTERS): Likewise. + (REG_ALLOC_ORDER): Likewise. + (enum reg_class): Likewise. + (REG_CLASS_NAMES): Likewise. + (REG_CLASS_CONTENTS): Likewise. + (REGISTER_NAMES): Likewise. + (ADDITIONAL_REGISTER_NAMES): Likewise. + (RS6000_BTC_SPR, RS6000_BTC_VOID, RS6000_BTC_32BIT, RS6000_BTC_64BIT, + RS6000_BTC_MISC_MASK, RS6000_BTM_HTM): New macros. + (RS6000_BTM_COMMON): Add RS6000_BTM_HTM. + * config/rs6000/htm.md: New file. + * config/rs6000/htmintrin.h: New file. + * config/rs6000/htmxlintrin.h: New file. + +2013-07-15 Marcus Shawcroft + + * config/aarch64/aarch64-protos.h (aarch64_symbol_type): + Define SYMBOL_TINY_GOT, update comment. + * config/aarch64/aarch64.c + (aarch64_load_symref_appropriately): Handle SYMBOL_TINY_GOT. + (aarch64_expand_mov_immediate): Likewise. + (aarch64_print_operand): Likewise. + (aarch64_classify_symbol): Likewise. + * config/aarch64/aarch64.md (UNSPEC_GOTTINYPIC): Define. + (ldr_got_tiny): Define. + +2013-07-13 Tobias Grosser + + PR tree-optimization/54094 + * graphite-clast-to-gimple.c (translate_clast_for_loop): Derive the + scheduling dimension for the parallelism check from the polyhedral + information in the AST. + * graphite-dependences.c (carries_deps): Do not assume the schedule is + in 2D + 1 form. + +2013-07-13 Jason Merrill + + * print-tree.c (debug_vec_tree): Use debug_raw. + (debug_raw (vec &)): New. + (debug_raw (vec *)): New. + * tree.h: Declare them. + +2013-07-13 Bin Cheng + + * ifcvt.c (ifcvt_after_combine): New static variable. + (cheap_bb_rtx_cost_p): Set scale to REG_BR_PROB_BASE when optimizing + for size. + (if_convert): New parameter after_combine. Set ifcvt_after_combine. + (rest_of_handle_if_conversion, rest_of_handle_if_after_combine, + rest_of_handle_if_after_reload): Pass new argument for if_convert. + +2013-07-12 Maciej W. Rozycki + + * config/mips/mips.c (mips_expand_call): Remove empty statement. + +2013-07-12 Michael Matz + + PR middle-end/55771 + * convert.c (convert_to_real): Reject non-float inner types. + +2013-07-12 Tejas Belagod + + * config/aarch64/aarch64-protos.h + (aarch64_simd_immediate_valid_for_move): Remove. + * config/aarch64/aarch64.c (simd_immediate_info): New member. + (aarch64_simd_valid_immediate): Recognize idioms for shifting ones + cases. + (aarch64_output_simd_mov_immediate): Print the correct shift specifier. + +2013-07-11 Steve Ellcey + + * config/mips/mips.c (mips_conditional_register_usage): Do not + use t[0-7] registers in MIPS16 mode when optimizing for size. + +2013-07-11 Sriraman Tallam + + * config/i386/i386.c (dispatch_function_versions): Fix array + indexing of function_version_info to match actual_versions. + +2013-07-11 Teresa Johnson + + * vec.h (struct va_gc): Move release out-of-line. + (va_gc::release): Call ggc_free on released vec. + +2013-07-11 Ulrich Weigand + + * config/rs6000/rs6000.md (""*tls_gd_low"): + Require GOT register as additional operand in UNSPEC. + ("*tls_ld_low"): Likewise. + ("*tls_got_dtprel_low"): Likewise. + ("*tls_got_tprel_low"): Likewise. + ("*tls_gd"): Update splitter. + ("*tls_ld"): Likewise. + ("tls_got_dtprel_"): Likewise. + ("tls_got_tprel_"): Likewise. + +2013-07-11 Georg-Johann Lay + + PR target/57631 + * config/avr/avr.c (avr_set_current_function): Sanity-check signal + name seen by assembler/linker rather if available. + +2013-07-11 Andreas Schwab + + * config/aarch64/aarch64-linux.h (CPP_SPEC): Define. + +2013-07-10 Vladimir Makarov + + * lra-constraints.c (curr_insn_transform): Switch off optional reloads. + +2013-07-10 Joseph Myers + + * doc/tm.texi.in: Move hook documentation to .... + * target.def: ... here. + + * doc/tm.texi.in (TARGET_CANONICALIZE_COMPARISON): Remove stray + text on @hook line. + * doc/tm.texi: Regenerate. + +2013-07-10 Paolo Carlini + + PR c++/57869 + * doc/invoke.texi: Document -Wconditionally-supported. + +2013-07-10 Georg-Johann Lay + + PR target/57844 + * config/avr/avr.c (avr_prologue_setup_frame): Trunk -size to mode + of my_fp. + +2013-07-10 Georg-Johann Lay + + PR target/57506 + * config/avr/avr-mcus.def (atmega16hva, atmega16hva2, atmega16hvb) + (atmega16m1, atmega16u4, atmega32a, atmega32c1, atmega32hvb) + (atmega32m1, atmega32u4, atmega32u6, atmega64c1, atmega64m1): + Remove duplicate devices. + * config/avr/gen-avr-mmcu-texi.c (print_mcus): Fail on duplicate MCUs. + * config/avr/t-multilib: Regenerate. + * config/avr/avr-tables.opt: Regenerate. + * doc/avr-mmcu.texi: Regenerate. + +2013-07-10 Georg-Johann Lay + + PR target/56987 + * config/avr/avr.opt (Waddr-space-convert): Fix typo. + +2013-07-10 Graham Stott + + * config/mips/mips.c (mips_rtx_costs): Very slightly increase + the cost of MULT when optimizing for size. + +2013-07-10 Jan-Benedict Glaw + + * config/cr16/cr16-protos.h: Don't include target.h. + +2013-07-09 Joseph Myers + + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Only + adjust register size for TDmode and TFmode for VSX registers. + +2013-07-08 Kai Tietz + + PR target/56892 + * config/i386/i386.c (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Define as + hook_bool_const_tree_true. + +2013-07-08 Andreas Krebbel + + * config/s390/s390.c: Replace F*_REGNUM with FPR*_REGNUM. + * config/s390/s390.h: Remove F*_REGNUM macro definitions. + * config/s390/s390.md: Define FPR*_REGNUM constants. + Fix FPR2_REGNUM constant (18 -> 17). + ("*trunc2") + ("*trunc2") + ("trunc2") + ("trunc2") + ("*extend2") + ("*extend2") + ("extend2") + ("extend2"): Replace FPR2_REGNUM with + FPR4_REGNUM. + +2013-07-08 Graham Stott + + * Makefile.in: (c-family-warn): Define to $(STRICT_WARN) + +2013-07-08 Andreas Krebbel + + * config/s390/s390.c: Rename cfun_set_fpr_bit to cfun_set_fpr_save + and cfun_fpr_bit_p to cfun_fpr_save_p. + (s390_frame_area, s390_register_info, s390_frame_info) + (s390_emit_prologue, s390_emit_epilogue) + (s390_conditional_register_usage): Use the *_REGNUM macros for FPR + register numbers. + * config/s390/s390.h: Define *_REGNUM macros for floating point + register numbers. + +2013-07-08 Eric Botcazou + + * Makefile.in (tree-ssa-reassoc.o): Add dependency on $(PARAMS_H). + +2013-07-08 Po-Chun Chang + + PR rtl-optimization/57786 + * combine.c (distribute_notes) : Change all_used to bool + and break out of the loop when it is set to false. + +2013-07-08 Jakub Jelinek + + PR target/57819 + * simplify-rtx.c (simplify_unary_operation_1) : + Simplify (zero_extend:SI (subreg:QI (and:SI (reg:SI) + (const_int 63)) 0)). + * combine.c (make_extraction): Create ZERO_EXTEND or SIGN_EXTEND + using simplify_gen_unary instead of gen_rtx_*_EXTEND. + * config/i386/i386.md (*jcc_bt_1): New define_insn_and_split. + + PR rtl-optimization/57829 + * simplify-rtx.c (simplify_binary_operation_1) : Ensure that + mask bits outside of mode are just sign-extension from mode to HWI. + +2013-07-08 Michael Zolotukhin + + * config/i386/i386-opts.h (enum stringop_alg): Add vector_loop. + * config/i386/i386.c (expand_set_or_movmem_via_loop): Use + adjust_address instead of change_address to keep info about alignment. + (emit_strmov): Remove. + (emit_memmov): New function. + (expand_movmem_epilogue): Refactor to properly handle bigger sizes. + (expand_movmem_epilogue): Likewise and return updated rtx for + destination. + (expand_constant_movmem_prologue): Likewise and return updated rtx for + destination and source. + (decide_alignment): Refactor, handle vector_loop. + (ix86_expand_movmem): Likewise. + (ix86_expand_setmem): Likewise. + * config/i386/i386.opt (Enum): Add vector_loop to option stringop_alg. + +2013-07-07 Uros Bizjak + + * config/i386/driver-i386.c (host_detect_local_cpu): Do not check + signature_TM2_ebx, it interferes with signature_INTEL_ebx. + +2013-07-06 Uros Bizjak + + * config/i386/sse.md (sse_movlhps): Change alternative 3 + of operand 2 to "m". + +2013-07-06 Uros Bizjak + + PR target/57807 + * config/i386/sse.md (iptr): New mode attribute. + (sse2_movq128): Add pointer size overrides for Intel asm dialect. + (_vm3): Ditto. + (_vmmul3): Ditto. + (_vmdiv3): Ditto. + (sse_vmrcpv4sf2): Ditto. + (_vmsqrt2): Ditto. + (sse_vmrsqrtv4sf2): Ditto. + (_vm3): Ditto. + (avx_vmcmp3): Ditto. + (_vmmaskcmp3): Ditto. + (_comi): Ditto. + (_ucomi): Ditto. + (*xop_vmfrcz_): Ditto. + (*fmai_fmadd_): Ditto. + (*fmai_fmsub_): Ditto. + (*fmai_fnmadd_): Ditto. + (*fmai_fnmsub_): Ditto. + (*fma4i_vmfmadd_): Ditto. + (*fma4i_vmfmsub_): Ditto. + (*fma4i_vmfnmadd_): Ditto. + (*fma4i_vmfnmsub_): Ditto. + (*xop_vmfrcz_): Ditto. + (sse_cvtps2pi): Ditto. + (sse_cvttps2pi): Ditto. + (sse_cvtss2si): Ditto. + (sse_cvtss2si_2): Ditto. + (sse_cvtss2siq_2): Ditto. + (sse_cvttss2si): Ditto. + (sse_cvttss2siq): Ditto. + (sse_cvtsd2si): Ditto. + (sse_cvtsd2si_2): Ditto. + (sse_cvtsd2siq_2): Ditto. + (sse_cvttsd2si): Ditto. + (sse_cvttsd2siq): Ditto. + (sse_cvtsd2ss): Ditto. + (sse_cvtss2sd): Ditto. + (avx2_pbroadcast): Ditto. + (avx2_pbroadcast_1): Ditto. + (*avx_vperm_broadcast_v4sf): Ditto. + + (sse_movhlps): Ditto for movlp[sd]/movhp[sd] alternatives. + (sse_movlhps): Ditto. + (sse_storehps): Ditto. + (sse_loadhps): Ditto. + (sse_storelps): Ditto. + (sse_loadlps): Ditto. + (*vec_concatv4sf): Ditto. + (*vec_interleave_highv2df): Ditto. + (*vec_interleave_lowv2df): Ditto. + (*vec_extractv2df_1_sse): Ditto. + (*vec_extractv2df_0_sse): Ditto. + (sse2_storelpd): Ditto. + (sse2_loadlpd): Ditto. + (sse2_movsd): Ditto. + (*vec_concatv4si): Ditto. + (vec_concatv2di): Ditto. + + * config/i386/mmx.md (mmx_punpcklbw): Add pointer size overrides + for Intel asm dialect. + (mmx_punpcklwd): Ditto. + (mmx_punpckldq): Ditto. + + * config/i386/i386.c (ix86_print_operand) ['H']: Output 'qword ptr' + for intel assembler dialect. + +2013-07-06 Jakub Jelinek + + PR target/29776 + * fold-const.c (tree_call_nonnegative_warnv_p): Return true + for BUILT_IN_C{LZ,LRSB}*. + * tree.h (CASE_INT_FN): Add FN##IMAX case. + * tree-vrp.c (extract_range_basic): Handle + BUILT_IN_{FFS,PARITY,POPCOUNT,C{LZ,TZ,LRSB}}*. For + BUILT_IN_CONSTANT_P if argument isn't (D) of PARM_DECL, + fall thru to code calling set_value*. + * builtins.c (expand_builtin): Remove *IMAX cases. + (fold_builtin_bitop): For BUILT_IN_CLRSB* return NULL_TREE + if width is bigger than 2*HWI. + +2013-07-05 Vladimir Makarov + + PR rtl-optimization/55342 + * lra-int.h (lra_subreg_reload_pseudos): New. + * lra.c: Add undoing optional reloads to the block diagram. + (lra_subreg_reload_pseudos): New. + (lra_optional_reload_pseudos): Change comments. + (lra): Init and clear lra_subreg_reload_pseudos. Clear + lra_optional_reload_pseudos after undo transformations. + * lra-assigns.c (pseudo_prefix_title): New. + (lra_setup_reg_renumber): Use it. + (spill_for): Ditto. Check subreg reload pseudos too. + (assign_by_spills): Consider subreg reload pseudos too. + * lra-constraints.c (simplify_operand_subreg): Use + lra_subreg_reload_pseudos instead of lra_optional_reload_pseudos. + (curr_insn_transform): Recognize and do optional reloads. + (undo_optional_reloads): New. + (lra_undo_inheritance): Call undo_optional_reloads. + +2013-07-05 Thomas Quinot + + * tree-complex.c (expand_complex_operations_1): Fix typo. + +2013-07-04 Tejas Belagod + + * config/aarch64/aarch64-protos.h (cpu_vector_cost): New. + (tune_params): New member 'const vec_costs'. + * config/aarch64/aarch64.c (generic_vector_cost): New. + (generic_tunings): New member 'generic_vector_cost'. + (aarch64_builtin_vectorization_cost): New. + (aarch64_add_stmt_cost): New. + (TARGET_VECTORIZE_ADD_STMT_COST): New. + (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New. + +2013-07-03 Jakub Jelinek + + PR target/57777 + * config/i386/predicates.md (vsib_address_operand): Disallow + SYMBOL_REF or LABEL_REF in parts.disp if TARGET_64BIT && flag_pic. + +2013-07-03 Hans-Peter Nilsson + + PR middle-end/55030 + * stmt.c (expand_nl_goto_receiver): Remove almost-copy of + expand_builtin_setjmp_receiver. + (expand_label): Adjust, call expand_builtin_setjmp_receiver + with NULL for the label parameter. + * builtins.c (expand_builtin_setjmp_receiver): Don't clobber + the frame-pointer. Adjust comments. + [HAVE_builtin_setjmp_receiver]: Emit builtin_setjmp_receiver + only if LABEL is non-NULL. + +2013-07-03 Yufeng Zhang + + * config/aarch64/aarch64.h (enum arm_abi_type): Remove. + (ARM_ABI_AAPCS64): Ditto. + (arm_abi): Ditto. + (ARM_DEFAULT_ABI): Ditto. + +2013-07-03 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_simd_expand_builtin): Handle AARCH64_SIMD_STORE1. + * config/aarch64/aarch64-simd-builtins.def (ld1): New. + (st1): Likewise. + * config/aarch64/aarch64-simd.md + (aarch64_ld1): New. + (aarch64_st1): Likewise. + * config/aarch64/arm_neon.h + (vld1_<8, 16, 32, 64>): Convert to RTL builtins. + +2013-07-02 Sriraman Tallam + + * config/i386/i386.c (gate_insert_vzeroupper): Check if + target ISA is AVX. + (ix86_option_override_internal):Turn on all -mavx target flags by + default as they are dependent on AVX anyway. + +2013-07-02 Cary Coutant + + * dwarf2out.c (loc_checksum): Call hash_loc_operands for a + deterministic hash. + (loc_checksum_ordered): Likewise. + (hash_loc_operands): Remove inline keyword. + +2013-07-02 Jakub Jelinek + + PR tree-optimization/57741 + * tree-vect-loop.c (vect_is_simple_iv_evolution): Disallow + non-INTEGRAL_TYPE_P non-SCALAR_FLOAT_TYPE_P SSA_NAME step_exprs, + or SCALAR_FLOAT_TYPE_P SSA_NAMEs if !flag_associative_math. + Allow REAL_CST step_exprs if flag_associative_math. + (get_initial_def_for_induction): Handle SCALAR_FLOAT_TYPE_P step_expr. + +2013-07-02 Ian Bolton + + * config/aarch64/aarch64-simd.md (absdi2): Support abs for DI mode. + +2013-07-02 Ian Bolton + + * config/aarch64/aarch64.md (*extr_insv_reg): New pattern. + +2013-07-02 Kyrylo Tkachov + + * config/arm/arm.md (arm_andsi3_insn): Add alternatives for 16-bit + encoding. + (iorsi3_insn): Likewise. + (arm_xorsi3): Likewise. + +2013-07-01 Sofiane Naci + + * arm.md (attribute "wtype"): Delete. Move attribute values from here + to ... + (attribute "type"): ... here, and prefix with "wmmx_". + (attribute "core_cycles"): Update for attribute changes. + * iwmmxt.md (tbcstv8qi): Update for attribute changes. + (tbcstv4hi): Likewise. + (tbcstv2si): Likewise. + (iwmmxt_iordi3): Likewise. + (iwmmxt_xordi3): Likewise. + (iwmmxt_anddi3): Likewise. + (iwmmxt_nanddi3): Likewise. + (iwmmxt_arm_movdi): Likewise. + (iwmmxt_movsi_insn): Likewise. + (mov_internal): Likewise. + (and3_iwmmxt): Likewise. + (ior3_iwmmxt): Likewise. + (xor3_iwmmxt): Likewise. + (add3_iwmmxt): Likewise. + (ssaddv8qi3): Likewise. + (ssaddv4hi3): Likewise. + (ssaddv2si3): Likewise. + (usaddv8qi3): Likewise. + (usaddv4hi3): Likewise. + (usaddv2si3): Likewise. + (sub3_iwmmxt): Likewise. + (sssubv8qi3): Likewise. + (sssubv4hi3): Likewise. + (sssubv2si3): Likewise. + (ussubv8qi3): Likewise. + (ussubv4hi3): Likewise. + (ussubv2si3): Likewise. + (mulv4hi3_iwmmxt): Likewise. + (smulv4hi3_highpart): Likewise. + (umulv4hi3_highpart): Likewise. + (iwmmxt_wmacs): Likewise. + (iwmmxt_wmacsz): Likewise. + (iwmmxt_wmacu): Likewise. + (iwmmxt_wmacuz): Likewise. + (iwmmxt_clrdi): Likewise. + (iwmmxt_clrv8qi): Likewise. + (iwmmxt_clr4hi): Likewise. + (iwmmxt_clr2si): Likewise. + (iwmmxt_uavgrndv8qi3): Likewise. + (iwmmxt_uavgrndv4hi3): Likewise. + (iwmmxt_uavgv8qi3): Likewise. + (iwmmxt_uavgv4hi3): Likewise. + (iwmmxt_tinsrb): Likewise. + (iwmmxt_tinsrh): Likewise. + (iwmmxt_tinsrw): Likewise. + (iwmmxt_textrmub): Likewise. + (iwmmxt_textrmsb): Likewise. + (iwmmxt_textrmuh): Likewise. + (iwmmxt_textrmsh): Likewise. + (iwmmxt_textrmw): Likewise. + (iwmxxt_wshufh): Likewise. + (eqv8qi3): Likewise. + (eqv4hi3): Likewise. + (eqv2si3): Likewise. + (gtuv8qi3): Likewise. + (gtuv4hi3): Likewise. + (gtuv2si3): Likewise. + (gtv8qi3): Likewise. + (gtv4hi3): Likewise. + (gtv2si3): Likewise. + (smax3_iwmmxt): Likewise. + (umax3_iwmmxt): Likewise. + (smin3_iwmmxt): Likewise. + (umin3_iwmmxt): Likewise. + (iwmmxt_wpackhss): Likewise. + (iwmmxt_wpackwss): Likewise. + (iwmmxt_wpackdss): Likewise. + (iwmmxt_wpackhus): Likewise. + (iwmmxt_wpackwus): Likewise. + (iwmmxt_wpackdus): Likewise. + (iwmmxt_wunpckihb): Likewise. + (iwmmxt_wunpckihh): Likewise. + (iwmmxt_wunpckihw): Likewise. + (iwmmxt_wunpckilb): Likewise. + (iwmmxt_wunpckilh): Likewise. + (iwmmxt_wunpckilw): Likewise. + (iwmmxt_wunpckehub): Likewise. + (iwmmxt_wunpckehuh): Likewise. + (iwmmxt_wunpckehuw): Likewise. + (iwmmxt_wunpckehsb): Likewise. + (iwmmxt_wunpckehsh): Likewise. + (iwmmxt_wunpckehsw): Likewise. + (iwmmxt_wunpckelub): Likewise. + (iwmmxt_wunpckeluh): Likewise. + (iwmmxt_wunpckeluw): Likewise. + (iwmmxt_wunpckelsb): Likewise. + (iwmmxt_wunpckelsh): Likewise. + (iwmmxt_wunpckelsw): Likewise. + (ror3): Likewise. + (ashr3_iwmmxt): Likewise. + (lshr3_iwmmxt): Likewise. + (ashl3_iwmmxt): Likewise. + (ror3_di): Likewise. + (ashr3_di): Likewise. + (lshr3_di): Likewise. + (ashl3_di): Likewise. + (iwmmxt_wmadds): Likewise. + (iwmmxt_wmaddu): Likewise. + (iwmmxt_tmia): Likewise. + (iwmmxt_tmiaph): Likewise. + (iwmmxt_tmiabb): Likewise. + (iwmmxt_tmiatb): Likewise. + (iwmmxt_tmiabt): Likewise. + (iwmmxt_tmiatt): Likewise. + (iwmmxt_tmovmskb): Likewise. + (iwmmxt_tmovmskh): Likewise. + (iwmmxt_tmovmskw): Likewise. + (iwmmxt_waccb): Likewise. + (iwmmxt_wacch): Likewise. + (iwmmxt_waccw): Likewise. + (iwmmxt_waligni): Likewise. + (iwmmxt_walignr): Likewise. + (iwmmxt_walignr0): Likewise. + (iwmmxt_walignr1): Likewise. + (iwmmxt_walignr2): Likewise. + (iwmmxt_walignr3): Likewise. + (iwmmxt_wsadb): Likewise. + (iwmmxt_wsadh): Likewise. + (iwmmxt_wsadbz): Likewise. + (iwmmxt_wsadhz): Likewise. + * iwmmxt2.md (iwmmxt_wabs3): Update for attribute changes. + (iwmmxt_wabsdiffb): Likewise. + (iwmmxt_wabsdiffh): Likewise. + (iwmmxt_wabsdiffw): Likewise. + (iwmmxt_waddsubhx): Likewise + (iwmmxt_wsubaddhx): Likewise. + (addc3): Likewise. + (iwmmxt_avg4): Likewise. + (iwmmxt_avg4r): Likewise. + (iwmmxt_wmaddsx): Likewise. + (iwmmxt_wmaddux): Likewise. + (iwmmxt_wmaddsn): Likewise. + (iwmmxt_wmaddun): Likewise. + (iwmmxt_wmulwsm): Likewise. + (iwmmxt_wmulwum): Likewise. + (iwmmxt_wmulsmr): Likewise. + (iwmmxt_wmulumr): Likewise. + (iwmmxt_wmulwsmr): Likewise. + (iwmmxt_wmulwumr): Likewise. + (iwmmxt_wmulwl): Likewise. + (iwmmxt_wqmulm): Likewise. + (iwmmxt_wqmulwm): Likewise. + (iwmmxt_wqmulmr): Likewise. + (iwmmxt_wqmulwmr): Likewise. + (iwmmxt_waddbhusm): Likewise. + (iwmmxt_waddbhusl): Likewise. + (iwmmxt_wqmiabb): Likewise. + (iwmmxt_wqmiabt): Likewise. + (iwmmxt_wqmiatb): Likewise. + (iwmmxt_wqmiatt): Likewise. + (iwmmxt_wqmiabbn): Likewise. + (iwmmxt_wqmiabtn): Likewise. + (iwmmxt_wqmiatbn): Likewise. + (iwmmxt_wqmiattn): Likewise. + (iwmmxt_wmiabb): Likewise. + (iwmmxt_wmiabt): Likewise. + (iwmmxt_wmiatb): Likewise. + (iwmmxt_wmiatt): Likewise. + (iwmmxt_wmiabbn): Likewise. + (iwmmxt_wmiabtn): Likewise. + (iwmmxt_wmiatbn): Likewise. + (iwmmxt_wmiattn): Likewise. + (iwmmxt_wmiawbb): Likewise. + (iwmmxt_wmiawbt): Likewise. + (iwmmxt_wmiawtb): Likewise. + (iwmmxt_wmiawtt): Likewise. + (iwmmxt_wmiawbbn): Likewise. + (iwmmxt_wmiawbtn): Likewise. + (iwmmxt_wmiawtbn): Likewise. + (iwmmxt_wmiawttn): Likewise. + (iwmmxt_wmerge): Likewise. + (iwmmxt_tandc3): Likewise. + (iwmmxt_torc3): Likewise. + (iwmmxt_torvsc3): Likewise. + (iwmmxt_textrc3): Likewise. + * marvell-f-iwmmxt.md (wmmxt_shift): Update for attribute changes. + (wmmxt_pack): Likewise. + (wmmxt_mult_c1): Likewise. + (wmmxt_mult_c2): Likewise. + (wmmxt_alu_c1): Likewise. + (wmmxt_alu_c2): Likewise. + (wmmxt_alu_c3): Likewise. + (wmmxt_transfer_c1): Likewise. + (wmmxt_transfer_c2): Likewise. + (wmmxt_transfer_c3): Likewise. + (marvell_f_iwmmxt_wstr): Likewise. + (marvell_f_iwmmxt_wldr): Likewise. + +2013-06-29 Yufeng Zhang + + * config/aarch64/aarch64.c: Remove junk from the beginning of the file. + +2013-06-28 Vladimir Makarov + + Revert: + 2013-06-28 Vladimir Makarov + * lra-constraints.c (need_for_split_p): Check call used hard regs + living through calls. + + * lra-constraints.c (inherit_in_ebb): Reset live_hard_regs for + call used regs for call insn. + +2013-06-28 Jakub Jelinek + + PR target/57736 + * config/i386/i386.c (ix86_expand_builtin): If target == NULL and + mode is VOIDmode, don't create a VOIDmode pseudo to copy result into. + +2013-06-28 Balaji V. Iyer + + * builtins.def: Fixed the function type of CILKPLUS_BUILTIN. + +2013-06-28 Vladimir Makarov + + * lra-constraints.c (need_for_split_p): Check call used hard regs + living through calls. + +2013-06-28 Michael Meissner + + PR target/57744 + * config/rs6000/rs6000.h (MODES_TIEABLE_P): Do not allow PTImode + to tie with any other modes. Eliminate Altivec vector mode tests, + since these are a subset of ALTIVEC or VSX vector modes. Simplify + code, to return 0 if testing MODE2 for a condition, if we've + already tested MODE1 for the same condition. + +2013-06-28 Marcus Shawcroft + + * config/aarch64/aarch64.c (aarch64_cannot_force_const_mem): Adjust + layout. + +2013-06-28 Marcus Shawcroft + + * config/aarch64/aarch64-protos.h (aarch64_symbol_type): + Update comment w.r.t SYMBOL_TINY_ABSOLUTE. + +2013-06-28 Marcus Shawcroft + + * config/aarch64/aarch64-protos.h (aarch64_classify_symbol_expression): + Define. + (aarch64_symbolic_constant_p): Remove. + * config/aarch64/aarch64.c (aarch64_classify_symbol_expression): Remove + static. Fix line length and white space. + (aarch64_symbolic_constant_p): Remove. + * config/aarch64/predicates.md (aarch64_valid_symref): + Use aarch64_classify_symbol_expression. + +2013-06-28 Kyrylo Tkachov + + * config/arm/constraints.md (Ts): New constraint. + * config/arm/arm.md (arm_movqi_insn): Add alternatives for + 16-bit encodings. + (compare_scc): Use "Ts" constraint for operand 0. + (ior_scc_scc): Likewise. + (and_scc_scc): Likewise. + (and_scc_scc_nodom): Likewise. + (ior_scc_scc_cmp): Likewise for operand 7. + (and_scc_scc_cmp): Likewise. + * config/arm/thumb2.md (thumb2_movsi_insn): + Add alternatives for 16-bit encodings. + (thumb2_movhi_insn): Likewise. + (thumb2_movsicc_insn): Likewise. + (thumb2_and_scc): Take 'and' outside cond_exec. Use "Ts" constraint. + (thumb2_negscc): Use "Ts" constraint. + Move mvn instruction outside cond_exec block. + * config/arm/vfp.md (thumb2_movsi_vfp): Add alternatives + for 16-bit encodings. + +2013-06-28 Kyrylo Tkachov + + * config/arm/arm.md (arm_mulsi3_v6): Add alternative for 16-bit + encoding. + (mulsi3addsi_v6): Disable predicable variant for arm_restrict_it. + (mulsi3subsi): Likewise. + (mulsidi3adddi): Likewise. + (mulsidi3_v6): Likewise. + (umulsidi3_v6): Likewise. + (umulsidi3adddi_v6): Likewise. + (smulsi3_highpart_v6): Likewise. + (umulsi3_highpart_v6): Likewise. + (mulhisi3tb): Likewise. + (mulhisi3bt): Likewise. + (mulhisi3tt): Likewise. + (maddhisi4): Likewise. + (maddhisi4tb): Likewise. + (maddhisi4tt): Likewise. + (maddhidi4): Likewise. + (maddhidi4tb): Likewise. + (maddhidi4tt): Likewise. + (zeroextractsi_compare0_scratch): Likewise. + (insv_zero): Likewise. + (insv_t2): Likewise. + (anddi_notzesidi_di): Likewise. + (anddi_notsesidi_di): Likewise. + (andsi_notsi_si): Likewise. + (iordi_zesidi_di): Likewise. + (xordi_zesidi_di): Likewise. + (andsi_iorsi3_notsi): Likewise. + (smax_0): Likewise. + (smax_m1): Likewise. + (smin_0): Likewise. + (not_shiftsi): Likewise. + (unaligned_loadsi): Likewise. + (unaligned_loadhis): Likewise. + (unaligned_loadhiu): Likewise. + (unaligned_storesi): Likewise. + (unaligned_storehi): Likewise. + (extv_reg): Likewise. + (extzv_t2): Likewise. + (divsi3): Likewise. + (udivsi3): Likewise. + (arm_zero_extendhisi2addsi): Likewise. + (arm_zero_extendqisi2addsi): Likewise. + (compareqi_eq0): Likewise. + (arm_extendhisi2_v6): Likewise. + (arm_extendqisi2addsi): Likewise. + (arm_movt): Likewise. + (thumb2_ldrd): Likewise. + (thumb2_ldrd_base): Likewise. + (thumb2_ldrd_base_neg): Likewise. + (thumb2_strd): Likewise. + (thumb2_strd_base): Likewise. + (thumb2_strd_base_neg): Likewise. + (arm_negsi2): Add alternative for 16-bit encoding. + (arm_one_cmplsi2): Likewise. + +2013-06-28 Kyrylo Tkachov + + * config/arm/predicates.md (arm_cond_move_operator): New predicate. + * config/arm/arm.md (movsfcc): Use arm_cond_move_operator predicate. + (movdfcc): Likewise. + * config/arm/vfp.md (*thumb2_movsf_vfp): + Disable predication for arm_restrict_it. + (*thumb2_movsfcc_vfp): Disable for arm_restrict_it. + (*thumb2_movdfcc_vfp): Likewise. + (*abssf2_vfp, *absdf2_vfp, *negsf2_vfp, *negdf2_vfp,*addsf3_vfp, + *adddf3_vfp, *subsf3_vfp, *subdf3_vfpc, *divsf3_vfp,*divdf3_vfp, + *mulsf3_vfp, *muldf3_vfp, *mulsf3negsf_vfp, *muldf3negdf_vfp, + *mulsf3addsf_vfp, *muldf3adddf_vfp, *mulsf3subsf_vfp, + *muldf3subdf_vfp, *mulsf3negsfaddsf_vfp, *fmuldf3negdfadddf_vfp, + *mulsf3negsfsubsf_vfp, *muldf3negdfsubdf_vfp, *fma4, + *fmsub4, *fnmsub4, *fnmadd4, + *extendsfdf2_vfp, *truncdfsf2_vfp, *extendhfsf2, *truncsfhf2, + *truncsisf2_vfp, *truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2, + *floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2, floatunssidf2, + *sqrtsf2_vfp, *sqrtdf2_vfp, *cmpsf_vfp, *cmpsf_trap_vfp, *cmpdf_vfp, + *cmpdf_trap_vfp, 2): + Disable predication for arm_restrict_it. + +2013-06-28 Kirill Yukhin + + * config/i386/bmiintrin.h (_bextr_u32): New. + (_bextr_u64): Ditto. + +2013-06-27 Richard Sandiford + + * config.gcc (mips*-mti-elf*, mips*-sde-elf*, mips64r5900-*-elf*) + (mips64r5900el-*-elf*): Include mips/n32-elf.h. + * config/mips/sde.h (LOCAL_LABEL_PREFIX, NO_DOLLAR_IN_LABEL) + (LONG_DOUBLE_TYPE_SIZE, LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Move to... + * config/mips/n32-elf.h: ...this new file. + +2013-06-27 Marc Glisse + + PR target/57224 + * config/i386/i386.c (enum ix86_builtins, bdesc_args): Remove + IX86_BUILTIN_CMPNGTSS and IX86_BUILTIN_CMPNGESS. + +2013-06-27 Catherine Moore + + * config/mips/mips-tables.opt: Regenerate. + * config/mips/mips-cpus.def: Add m14ke and m14kec. + * config/mips/mips.h (BASE_DRIVER_SELF_SPECS): m14ke* implies -mdspr2. + * doc/invoke.texi: Add -m14kc. + +2013-06-27 Jakub Jelinek + + PR target/57623 + * config/i386/i386.md (bmi_bextr_): Swap predicates and + constraints of operand 1 and 2. + + PR target/57623 + * config/i386/i386.md (bmi2_bzhi_3): Swap AND arguments + to match RTL canonicalization. Swap predicates and + constraints of operand 1 and 2. + +2013-06-27 Vladimir Makarov + + * lra-constraints.c (inherit_in_ebb): Process static hard regs too. + Process OP_INOUT regs for splitting too. + +2013-06-27 Jakub Jelinek + + * tree-vect-stmts.c (vectorizable_store): Move ptr_incr var + decl before the loop, initialize to NULL. + (vectorizable_load): Initialize ptr_incr to NULL. + +2013-06-27 Martin Jambor + + PR lto/57208 + * ipa-ref.h (ipa_maybe_record_reference): Declare. + * ipa-ref.c (ipa_maybe_record_reference): New function. + * cgraphclones.c (cgraph_create_virtual_clone): Use it. + * ipa-cp.c (create_specialized_node): Record potential references from + aggvals. + * Makefile.in (ipa-ref.o): Add IPA_REF_H to dependencies. + +2013-06-27 Yufeng Zhang + + * config/aarch64/aarch64.c (aarch64_force_temporary): Add an extra + parameter 'mode' of type 'enum machine_mode mode'; change to pass + 'mode' to force_reg. + (aarch64_add_offset): Update calls to aarch64_force_temporary. + (aarch64_expand_mov_immediate): Likewise. + +2013-06-27 Yufeng Zhang + + * config/aarch64/aarch64.c (aarch64_add_offset): Change to pass + 'mode' to aarch64_plus_immediate and gen_rtx_PLUS. + +2013-06-27 Andreas Krebbel + + * config/s390/s390.c: Rename UNSPEC_CCU_TO_INT to + UNSPEC_STRCMPCC_TO_INT and UNSPEC_CCZ_TO_INT to UNSPEC_CC_TO_INT. + (struct machine_function): Add tbegin_p. + (s390_canonicalize_comparison): Fold CC mode compares to + conditional jump if possible. + (s390_emit_jump): Return the emitted jump. + (s390_branch_condition_mask, s390_branch_condition_mnemonic): + Handle CCRAWmode compares. + (s390_option_override): Default to -mhtm if available. + (s390_reg_clobbered_rtx): Handle floating point regs as well. + (s390_regs_ever_clobbered): Use s390_regs_ever_clobbered also for + FPRs instead of df_regs_ever_live_p. + (s390_optimize_nonescaping_tx): New function. + (s390_init_frame_layout): Extend clobbered_regs array to cover + FPRs as well. + (s390_emit_prologue): Call s390_optimize_nonescaping_tx. + (s390_expand_tbegin): New function. + (enum s390_builtin): New enum definition. + (code_for_builtin): New array definition. + (s390_init_builtins): New function. + (s390_expand_builtin): New function. + (TARGET_INIT_BUILTINS): Define. + (TARGET_EXPAND_BUILTIN): Define. + * common/config/s390/s390-common.c (processor_flags_table): Add PF_TX. + * config/s390/predicates.md (s390_comparison): Handle CCRAWmode. + (s390_alc_comparison): Likewise. + * config/s390/s390-modes.def: Add CCRAWmode. + * config/s390/s390.h (processor_flags): Add PF_TX. + (TARGET_CPU_HTM): Define macro. + (TARGET_HTM): Define macro. + (TARGET_CPU_CPP_BUILTINS): Define __HTM__ for htm. + * config/s390/s390.md: Rename UNSPEC_CCU_TO_INT to + UNSPEC_STRCMPCC_TO_INT and UNSPEC_CCZ_TO_INT to UNSPEC_CC_TO_INT. + (UNSPECV_TBEGIN, UNSPECV_TBEGINC, UNSPECV_TEND, UNSPECV_TABORT) + (UNSPECV_ETND, UNSPECV_NTSTG, UNSPECV_PPA): New unspecv enum values. + (TBEGIN_MASK, TBEGINC_MASK): New constants. + ("*cc_to_int"): Move up. + ("*movcc", "*cjump_64", "*cjump_31"): Accept integer + constants other than 0. + ("*ccraw_to_int"): New insn and splitter definition. + ("tbegin", "tbegin_nofloat", "tbegin_retry") + ("tbegin_retry_nofloat", "tbeginc", "tend", "tabort") + ("tx_assist"): New expander. + ("tbegin_1", "tbegin_nofloat_1", "*tbeginc_1", "*tend_1") + ("*tabort_1", "etnd", "ntstg", "*ppa"): New insn definition. + * config/s390/s390.opt: Add -mhtm option. + * config/s390/s390-protos.h (s390_emit_jump): Add return type. + * config/s390/htmxlintrin.h: New file. + * config/s390/htmintrin.h: New file. + * config/s390/s390intrin.h: New file. + * doc/extend.texi: Document htm builtins. + * config.gcc: Add the new header files to extra_headers. + +2013-06-26 Thomas Schwinge + + * config/i386/gnu.h [TARGET_LIBC_PROVIDES_SSP] + (TARGET_CAN_SPLIT_STACK, TARGET_THREAD_SPLIT_STACK_OFFSET): Undefine. + +2013-06-26 Michael Meissner + Pat Haugen + Peter Bergner + + * config/rs6000/power8.md: New. + * config/rs6000/rs6000-cpus.def (RS6000_CPU table): Adjust processor + setting for power8 entry. + * config/rs6000/t-rs6000 (MD_INCLUDES): Add power8.md. + * config/rs6000/rs6000.c (is_microcoded_insn, is_cracked_insn): Adjust + test for Power4/Power5 only. + (insn_must_be_first_in_group, insn_must_be_last_in_group): Add Power8 + support. + (force_new_group): Adjust comment. + * config/rs6000/rs6000.md: Include power8.md. + +2013-06-26 Greta Yorsh + + * config/arm/arm.h (MAX_CONDITIONAL_EXECUTE): Define macro. + * config/arm/arm-protos.h (arm_max_conditional_execute): New + declaration. + (tune_params): Update comment. + * config/arm/arm.c (arm_cortex_a15_tune): Set max_cond_insns to 2. + (arm_max_conditional_execute): New function. + (thumb2_final_prescan_insn): Use max_insn_skipped and + MAX_INSN_PER_IT_BLOCK to compute maximum instructions in a block. + +2013-06-25 Jakub Jelinek + + PR tree-optimization/57705 + * tree-vect-loop.c (vect_is_simple_iv_evolution): Allow + SSA_NAME step, provided that it is not defined inside the loop. + (vect_analyze_scalar_cycles_1): Disallow SSA_NAME step in nested loop. + (get_initial_def_for_induction): Handle SSA_NAME IV step. + +2013-06-25 Martin Jambor + + PR middle-end/57670 + * cgraph.h (cgraph_indirect_call_info): New flag member_ptr. + * ipa-prop.c (ipa_print_node_jump_functions): Mark member pointer + calls in the dump. + (ipa_note_param_call): Initialize member_ptr flag. + (ipa_analyze_indirect_call_uses): Set member_ptr flag. + (ipa_make_edge_direct_to_target): Bail out if member_ptr is set. + (ipa_write_indirect_edge_info): Stream member_ptr flag. + (ipa_read_indirect_edge_info): Likewise. + +2013-06-25 Richard Biener + + PR middle-end/56977 + * passes.c (init_optimization_passes): Move pass_fold_builtins + and pass_dce earlier with -Og. + +2013-06-25 Eric Botcazou + + * expr.c (expand_expr_real_1) : Fix formatting glitches. + : Remove trailing TAB. + * varasm.c (output_constructor_bitfield): Fix formatting glitch and + remove blank line. + +2013-06-24 Martin Jambor + + PR tree-optimization/57358 + * ipa-prop.c (ipa_func_spec_opts_forbid_analysis_p): New function. + (ipa_compute_jump_functions_for_edge): Bail out if it returns true. + (ipa_analyze_params_uses): Generate pessimistic info when true. + +2013-06-24 Martin Jambor + + PR tree-optimization/57539 + * cgraphclones.c (cgraph_clone_node): Add parameter new_inlined_to, set + global.inlined_to of the new node to it. All callers changed. + * ipa-inline-transform.c (clone_inlined_nodes): New variable + inlining_into, pass it to cgraph_clone_node. + * ipa-prop.c (ipa_propagate_indirect_call_infos): Do not call + ipa_free_edge_args_substructures. + (ipa_edge_duplication_hook): Only add edges from inlined nodes to + rdesc linked list. Do not assert rdesc edges have inlined caller. + Assert we have found an rdesc in the rdesc list. + +2013-06-24 Richard Biener + + * pointer-set.h (struct pointer_set_t): Move here from pointer-set.c. + (pointer_set_lookup): Declare. + (class pointer_map): New template class implementing a + generic pointer to T map. + (pointer_map::pointer_map, pointer_map::~pointer_map, + pointer_map::contains, pointer_map::insert, + pointer_map::traverse): New functions. + * pointer-set.c (struct pointer_set_t): Moved to pointer-set.h. + (pointer_set_lookup): New function. + (pointer_set_contains): Use pointer_set_lookup. + (pointer_set_insert): Likewise. + (insert_aux): Remove. + (struct pointer_map_t): Embed a pointer_set_t. + (pointer_map_create): Adjust. + (pointer_map_destroy): Likewise. + (pointer_map_contains): Likewise. + (pointer_map_insert): Likewise. + (pointer_map_traverse): Likewise. + * tree-streamer.h (struct streamer_tree_cache_d): Use a + pointer_map instead of a pointer_map_t. + * tree-streamer.c (streamer_tree_cache_insert_1): Adjust. + (streamer_tree_cache_lookup): Likewise. + (streamer_tree_cache_create): Likewise. + (streamer_tree_cache_delete): Likewise. + * lto-streamer.h (struct lto_tree_ref_encoder): Use a + pointer_map instead of a pointer_map_t. + (lto_init_tree_ref_encoder): Adjust. + (lto_destroy_tree_ref_encoder): Likewise. + * lto-section-out.c (lto_output_decl_index): Likewise. + (lto_record_function_out_decl_state): Likewise. + * dominance.c (iterate_fix_dominators): Use pointer_map. + +2013-06-24 Richard Biener + + PR tree-optimization/57488 + * tree-ssa-pre.c (insert): Clear NEW sets before each iteration. + +2013-06-24 Alan Modra + + * config/rs6000/rs6000.c (vspltis_constant): Correct for little-endian. + (gen_easy_altivec_constant): Likewise. + * config/rs6000/predicates.md (easy_vector_constant_add_self, + easy_vector_constant_msb): Likewise. + +2013-06-23 Jakub Jelinek + + PR target/57688 + * common/config/i386/i386-common.c (ix86_handle_option): For OPT_mlzcnt + add missing return true. + +2013-06-23 Oleg Endo + + PR target/52483 + * config/sh/predicates.md (general_extend_operand): Invoke + general_movsrc_operand for memory operands. + (general_movsrc_operand): Allow reg+reg addressing, do not use + general_operand for memory operands. + +2013-06-23 Sriraman Tallam + + * config/i386/i386.c (ix86_pragma_target_parse): Restore target + when current target options does not apply. + * config/i386/i386-protos.h (ix86_reset_previous_fndecl): New function. + * config/i386/i386.c (ix86_reset_previous_fndecl): Ditto. + * config/i386/bmiintrin.h: Pass appropriate target + attributes to header. + * config/i386/mmintrin.h: Ditto. + * config/i386/nmmintrin.h: Ditto. + * config/i386/avx2intrin.h: Ditto. + * config/i386/fxsrintrin.h: Ditto. + * config/i386/tbmintrin.h: Ditto. + * config/i386/xsaveintrin.h: Ditto. + * config/i386/f16cintrin.h: Ditto. + * config/i386/xtestintrin.h: Ditto. + * config/i386/xsaveoptintrin.h: Ditto. + * config/i386/bmi2intrin.h: Ditto. + * config/i386/lzcntintrin.h: Ditto. + * config/i386/smmintrin.h: Ditto. + * config/i386/wmmintrin.h: Ditto. + * config/i386/x86intrin.h: Remove all header include guards. + * config/i386/prfchwintrin.h: Ditto. + * config/i386/pmmintrin.h: Ditto. + * config/i386/tmmintrin.h: Ditto. + * config/i386/xmmintrin.h: Ditto. + * config/i386/popcntintrin.h: Ditto. + * config/i386/rdseedintrin.h: Ditto. + * config/i386/ammintrin.h: Ditto. + * config/i386/emmintrin.h: Ditto. + * config/i386/immintrin.h: Remove all header include guards. + * config/i386/fma4intrin.h: Ditto. + * config/i386/lwpintrin.h: Ditto. + * config/i386/xopintrin.h: Ditto. + * config/i386/ia32intrin.h: Ditto. + * config/i386/avxintrin.h: Ditto. + * config/i386/rtmintrin.h: Ditto. + * config/i386/fmaintrin.h: Ditto. + * config/i386/mm3dnow.h: Ditto. + +2013-06-22 Sriraman Tallam + + * common/config/i386/i386-common.c: Handle LZCNT. + +2013-06-22 Andi Kleen + + * doc/extend.texi: Use __atomic_store_n instead of + __atomic_store in HLE example. + +2013-06-22 Oleg Endo + + * config/sh/sh.c: Remove workaround. + +2013-06-21 Andi Kleen + + * doc/extend.texi: Dont use __atomic_clear in HLE example. Fix typo. + +2013-06-21 Andi Kleen + + * doc/extend.texi: Document that __atomic_clear and + __atomic_test_and_set should only be used with bool. + +2013-06-20 Jan Hubicka + + * gimple-fold.c (gimple_extract_devirt_binfo_from_cst): Use + types_same_for_odr. + * tree.c (decls_same_for_odr): New function. + (same_for_edr): New function. + (types_same_for_odr): New function. + (get_binfo_at_offset): Use it. + * tree.h (types_same_for_odr): Declare. + +2013-06-20 Oleg Endo + Jason Merrill + + * system.h: Include as well as . + +2013-06-20 Uros Bizjak + + PR target/57655 + * config/i386/i386.c (construct_container): Report error if + long double is used with disabled x87 float returns. + +2013-06-20 Jan Hubicka + + * lto-cgraph.c (input_symtab): Do not set cgraph state. + +2013-06-20 Joern Rennecke + + PR rtl-optimization/57425 + PR rtl-optimization/57569 + * alias.c (write_dependence_p): Remove parameters mem_mode and + canon_mem_addr. Add parameters x_mode, x_addr and x_canonicalized. + Changed all callers. + (canon_anti_dependence): Get comments and semantics in sync. + Add parameter mem_canonicalized. Changed all callers. + * rtl.h (canon_anti_dependence): Update prototype. + +2013-06-20 Richard Biener + + * data-streamer-in.c (streamer_read_uhwi): Optimize single + byte case, inline streamer_read_uchar and defer section + overrun check. + +2013-06-20 Richard Biener + + PR tree-optimization/57584 + * tree-ssa-loop-niter.c (expand_simple_operations): Avoid including + SSA names into the expanded expression that take part in + abnormal coalescing. + +2013-06-19 Sharad Singhai + + * gcov.c (print_usage): Handle new option. + (process_args): Ditto. + (get_gcov_intermediate_filename): New function. + (output_intermediate_file): New function. + (output_gcov_file): New function + (generate_results): Handle new option. + (release_function): Relase demangled name. + (read_graph_file): Handle demangled name. + (output_lines): Ditto. + * doc/gcov.texi: Document gcov intermediate format. + +2013-06-19 Vladimir Makarov + + PR bootstrap/57604 + * lra.c (emit_add3_insn, emit_add2_insn): New functions. + (lra_emit_add): Use the functions. Add comment about Y as an + address segment. + +2013-06-19 David Edelsohn + + PR driver/57652 + * collect2.c (collect_atexit): New. + (collect_exit): Delete. + (main): Register collect_atexit with atexit. + (collect_wait): Change collect_exit to exit. + (do_wait): Same. + * collect2.h (collect_exit): Delete. + * tlink.c (do_tlink): Rename exit to ret. Change collect_exit to exit. + +2013-06-19 Wei Mi + + PR rtl-optimization/57518 + * ira.c (set_paradoxical_subreg): Set pdx_subregs[regno] + if regno is used in paradoxical subreg. + (update_equiv_regs): Check pdx_subregs[regno] before + set a reg to be equivalent with a mem. + +2013-06-19 Matthias Klose + + PR driver/57651 + * file-find.h (find_a_file): Add a mode parameter. + * file-find.c (find_a_file): Likewise. + * gcc-ar.c (main): Call find_a_file with R_OK for the plugin, + with X_OK for the executables. + * collect2.c (main): Call find_a_file with X_OK. + +2013-06-19 Steve Ellcey + + PR target/56942 + * config/mips/mips.md (casesi_internal_mips16_): + Use NEXT_INSN instead of next_real_insn. + +2013-06-19 Jan Hubicka + + * cgraph.h (const_value_known_p): Replace by ... + (ctor_for_folding): .. this one. + * cgraphunit.c (process_function_and_variable_attributes): Use it. + * lto-cgraph.c (compute_ltrans_boundary): Use ctor_for_folding. + * expr.c (expand_expr_real_1): Likewise. + (string_constant): Likewise. + * tree-ssa-loop-ivcanon.c (constant_after_peeling): Likewise. + * ipa.c (process_references): Likewise. + (symtab_remove_unreachable_nodes): Likewise. + * ipa-inline-analysis.c (param_change_prob): Likewise. + * gimple-fold.c (canonicalize_constructor_val): Likewise. + (get_base_constructor): Likwise. + * varpool.c (varpool_remove_node): Likewise. + (varpool_remove_initializer): LIkewise. + (dump_varpool_node): LIkwise. + (const_value_known_p): Rewrite to ... + (ctor_for_folding): ... this one. + +2013-06-19 Jakub Jelinek + + PR driver/57651 + * gcc-ar.c (main): If not CROSS_DIRECTORY_STRUCTURE, look for + PERSONALITY in $PATH derived prefixes. + +2013-06-19 Jeff Law + + * tree-ssa-forwprop.c (simplify_bitwise_binary_boolean): Fix typo + in comment. + + * tree-ssa-forwprop.c (simplify_bitwise_binary_boolean): New function. + (simplify_bitwise_binary): Use it to simpify certain binary ops on + booleans. + +2013-06-19 Sofiane Naci + + * config/arm/vfp.md: Move VFP instruction classification documentation + to ... + * config/arm/arm.md: ... here. Update instruction classification + documentation. + +2013-06-19 Richard Earnshaw + + arm.md (split for eq(reg, 0)): Add variants for ARMv5 and Thumb2. + (peepholes for eq(reg, not-0)): Ensure condition register is dead after + pattern. Use more efficient sequences on ARMv5 and Thumb2. + +2013-06-19 Steven Bosscher + + PR target/57609 + * config/s390/s390.c (s390_chunkify_start): Replace next_real_insn + with NEXT_INSN. Use tablejump_p to check for jump table data + insns. + +2013-06-19 Paolo Carlini + + PR c++/56544 + * doc/cpp.texi [Standard Predefined Macros, __cplusplus]: Document + that now in C++ the value is correct per the C++ standards. + +2013-06-19 Richard Biener + + * expr.c (expand_expr_real_1): Use SCOPE_FILE_SCOPE_P to check + for global context. + +2013-06-19 Andreas Krebbel + + Revert: + 2013-06-18 Andreas Krebbel + + PR target/57609 + * config/s390/s390.c (s390_chunkify_start): Replace next_real_insn + with next_active_insn. + +2013-06-18 Sriraman Tallam + + * ipa-inline.c (inline_always_inline_functions): Pretend always_inline + functions are inlined during failures to flag an error. + * tree-inline.c (expand_call_inline): Allow the error to be flagged + in early inline pass. + +2013-06-18 H.J. Lu + + * config/i386/i386.c (initial_ix86_tune_features): Fix a typo + in comments. + +2013-06-18 Julian Brown + + * config/arm/arm.c (neon_vector_mem_operand): Add strict argument. + Permit virtual register pre-reload if !strict. + (coproc_secondary_reload_class): Adjust for neon_vector_mem_operand + change. + * config/arm/arm-protos.h (neon_vector_mem_operand): Adjust + prototype. + * config/arm/neon.md (movmisalign): Use + neon_perm_struct_or_reg_operand instead of + neon_struct_or_register_operand. + (*movmisalign_neon_load, *movmisalign_neon_store): Use + neon_permissive_struct_operand instead of neon_struct_operand. + * config/arm/constraints.md (Un, Um, Us): Adjust calls to + neon_vector_mem_operand. + * config/arm/predicates.md (neon_struct_operand): Adjust call to + neon_vector_mem_operand. + (neon_permissive_struct_operand): New. + (neon_struct_or_register_operand): Rename to... + (neon_perm_struct_or_reg_operand): This. Adjust call to + neon_vector_mem_operand. + +2013-06-18 Richard Biener + + * Makefile.in (LTO_STREAMER_H): Add pointer-set.h dependency. + * lto-streamer.h: Include pointer-set.h. + (struct lto_decl_slot): Remove. + (struct lto_tree_ref_encoder): Make tree_hash_table a pointer-map. + Remove next_index entry. + (lto_hash_decl_slot_node, lto_eq_decl_slot_node, + lto_hash_type_slot_node, lto_eq_type_slot_node): Remove. + (lto_init_tree_ref_encoder): Adjust. + (lto_destroy_tree_ref_encoder): Likewise. + * lto-section-out.c (lto_hash_decl_slot_node, lto_eq_decl_slot_node, + lto_hash_type_slot_node, lto_eq_type_slot_node): Remove. + (lto_output_decl_index): Adjust. + (lto_new_out_decl_state): Likewise. + (lto_record_function_out_decl_state): Likewise. + * lto-streamer-out.c (copy_function): Likewise. + +2013-06-18 Richard Biener + + * Makefile.in (cgraphunit.o): Add $(CFGLOOP_H) dependency. + * cgraphunit.c: Include cfgloop.h. + (init_lowered_empty_function): Initialize the loop tree. + (assemble_thunk): Insert new BBs into loops. + +2013-06-18 Richard Biener + + * tree-streamer.h (streamer_tree_cache_create): Adjust prototype. + * tree-streamer.c (streamer_tree_cache_create): Make maintaining + the map from cache entry to cache index optional. + (streamer_tree_cache_replace_tree): Adjust accordingly. + (streamer_tree_cache_append): Likewise. + (streamer_tree_cache_delete): Likewise. + * lto-streamer-in.c (lto_data_in_create): Do not maintain the + streamer cache map from cache entry to cache index. + * lto-streamer-out.c (create_output_block): Adjust. + +2013-06-18 Sofiane Naci + + * config/arm/arm.md (attribute "insn"): Move multiplication and + division attributes to... + (attribute "type"): ... here. Remove mult. + (attribute "mul32"): New attribute. + (attribute "mul64"): Add umaal. + (*arm_mulsi3): Update attributes. + (*arm_mulsi3_v6): Likewise. + (*thumb_mulsi3): Likewise. + (*thumb_mulsi3_v6): Likewise. + (*mulsi3_compare0): Likewise. + (*mulsi3_compare0_v6): Likewise. + (*mulsi_compare0_scratch): Likewise. + (*mulsi_compare0_scratch_v6): Likewise. + (*mulsi3addsi): Likewise. + (*mulsi3addsi_v6): Likewise. + (*mulsi3addsi_compare0): Likewise. + (*mulsi3addsi_compare0_v6): Likewise. + (*mulsi3addsi_compare0_scratch): Likewise. + (*mulsi3addsi_compare0_scratch_v6): Likewise. + (*mulsi3subsi): Likewise. + (*mulsidi3adddi): Likewise. + (*mulsi3addsi_v6): Likewise. + (*mulsidi3adddi_v6): Likewise. + (*mulsidi3_nov6): Likewise. + (*mulsidi3_v6): Likewise. + (*umulsidi3_nov6): Likewise. + (*umulsidi3_v6): Likewise. + (*umulsidi3adddi): Likewise. + (*umulsidi3adddi_v6): Likewise. + (*smulsi3_highpart_nov6): Likewise. + (*smulsi3_highpart_v6): Likewise. + (*umulsi3_highpart_nov6): Likewise. + (*umulsi3_highpart_v6): Likewise. + (mulhisi3): Likewise. + (*mulhisi3tb): Likewise. + (*mulhisi3bt): Likewise. + (*mulhisi3tt): Likewise. + (maddhisi4): Likewise. + (*maddhisi4tb): Likewise. + (*maddhisi4tt): Likewise. + (maddhidi4): Likewise. + (*maddhidi4tb): Likewise. + (*maddhidi4tt): Likewise. + (divsi3): Likewise. + (udivsi3): Likewise. + * config/arm/thumb2.md (thumb2_mulsi_short): Update attributes. + (thumb2_mulsi_short_compare0): Likewise. + (thumb2_mulsi_short_compare0_scratch): Likewise. + * config/arm/arm1020e.md (1020mult1): Update attribute change. + (1020mult2): Likewise. + (1020mult3): Likewise. + (1020mult4): Likewise. + (1020mult5): Likewise. + (1020mult6): Likewise. + * config/arm/cortex-a15.md (cortex_a15_mult32): Update attribute + change. + (cortex_a15_mult64): Likewise. + (cortex_a15_sdiv): Likewise. + (cortex_a15_udiv): Likewise. + * config/arm/arm1026ejs.md (mult1): Update attribute change. + (mult2): Likewise. + (mult3): Likewise. + (mult4): Likewise. + (mult5): Likewise. + (mult6): Likewise. + * config/arm/marvell-pj4.md (pj4_ir_mul): Update attribute change. + (pj4_ir_div): Likewise. + * config/arm/arm1136jfs.md (11_mult1): Update attribute change. + (11_mult2): Likewise. + (11_mult3): Likewise. + (11_mult4): Likewise. + (11_mult5): Likewise. + (11_mult6): Likewise. + (11_mult7): Likewise. + * config/arm/cortex-a8.md (cortex_a8_mul): Update attribute change. + (cortex_a8_mla): Likewise. + (cortex_a8_mull): Likewise. + (cortex_a8_smulwy): Likewise. + (cortex_a8_smlald): Likewise. + * config/arm/cortex-m4.md (cortex_m4_alu): Update attribute change. + * config/arm/cortex-r4.md (cortex_r4_mul_4): Update attribute change. + (cortex_r4_mul_3): Likewise. + (cortex_r4_mla_4): Likewise. + (cortex_r4_mla_3): Likewise. + (cortex_r4_smlald): Likewise. + (cortex_r4_mull): Likewise. + (cortex_r4_sdiv): Likewise. + (cortex_r4_udiv): Likewise. + * config/arm/cortex-a7.md (cortex_a7_mul): Update attribute change. + (cortex_a7_idiv): Likewise. + * config/arm/arm926ejs.md (9_mult1): Update attribute change. + (9_mult2): Likewise. + (9_mult3): Likewise. + (9_mult4): Likewise. + (9_mult5): Likewise. + (9_mult6): Likewise. + * config/arm/cortex-a53.md (cortex_a53_mul): Update attribute change. + (cortex_a53_sdiv): Likewise. + (cortex_a53_udiv): Likewise. + * config/arm/fa726te.md (726te_mult_op): Update attribute change. + * config/arm/fmp626.md (mp626_mult1): Update attribute change. + (mp626_mult2): Likewise. + (mp626_mult3): Likewise. + (mp626_mult4): Likewise. + * config/arm/fa526.md (526_mult1): Update attribute change. + (526_mult2): Likewise. + * config/arm/arm-generic.md (mult): Update attribute change. + (mult_ldsched_strongarm): Likewise. + (mult_ldsched): Likewise. + (multi_cycle): Likewise. + * config/arm/cortex-a5.md (cortex_a5_mul): Update attribute change. + * config/arm/fa606te.md (606te_mult1): Update attribute change. + (606te_mult2): Likewise. + (606te_mult3): Likewise. + (606te_mult4): Likewise. + * config/arm/cortex-a9.md (cortex_a9_mult16): Update attribute change. + (cortex_a9_mac16): Likewise. + (cortex_a9_multiply): Likewise. + (cortex_a9_mac): Likewise. + (cortex_a9_multiply_long): Likewise. + * config/arm/fa626te.md (626te_mult1): Update attribute change. + (626te_mult2): Likewise. + (626te_mult3): Likewise. + (626te_mult4): Likewise. + +2013-06-18 Richard Biener + + PR lto/57334 + * lto-symtab.c (lto_symtab_merge_decls): Process nodes properly. + +2013-06-18 Andreas Krebbel + + PR target/57609 + * config/s390/s390.c (s390_chunkify_start): Replace next_real_insn + with next_active_insn. + +2013-06-18 Alan Modra + + * config/rs6000/rs6000.h (enum data_align): New. + (LOCAL_ALIGNMENT, DATA_ALIGNMENT): Use rs6000_data_alignment. + (DATA_ABI_ALIGNMENT): Define. + (CONSTANT_ALIGNMENT): Correct comment. + * config/rs6000/rs6000-protos.h (rs6000_data_alignment): Declare. + * config/rs6000/rs6000.c (rs6000_data_alignment): New function. + +2013-06-17 David Malcolm + + * ggc-page.c (ggc_pch_write_object) : Remove erroneous + ATTRIBUTE_UNUSED marking. + +2013-06-17 Sofiane Naci + + * config/aarch64/aarch64-simd.md (aarch64_dup_lane): Add r<-w + alternative and update. + (aarch64_dup_lanedi): Delete. + * config/aarch64/arm_neon.h (vdup_lane_*): Update. + * config/aarch64/aarch64-simd-builtins.def: Update. + +2013-06-17 Richard Biener + + * lto-streamer.h (enum LTO_tags): Add LTO_tree_scc. + (lto_input_scc): Declare. + (lto_input_tree_1): Likewise. + (struct lto_stats_d): Add num_tree_bodies_output and + num_pickle_refs_output. + * lto-streamer-in.c (lto_read_body): Use streamer_tree_cache_get_tree. + (lto_read_tree_1): Split out from ... + (lto_read_tree): ... this. + (lto_input_scc): New function. + (lto_input_tree_1): Split out from ... + (lto_input_tree): ... this. Handle LTO_tree_scc. + (lto_data_in_create): Create the streamer cache without hashes. + * lto-streamer-out.c (create_output_block): Create the streamer + cache with hashes when not doing WPA. + (lto_write_tree_1): Split out from ... + (lto_write_tree): ... this. + (get_symbol_initial_value): New function. + (lto_output_tree_1): Split out from ... + (lto_output_tree): ... this. Write trees as series of SCCs + using a DFS walk via DFS_write_tree. + (struct sccs, struct scc_entry): New types. + (next_dfs_num, sccstack, sccstate, sccstate_obstack): New globals. + (DFS_write_tree_body): New function. + (DFS_write_tree): Likewise. + (hash_tree): Likewise. + (scc_entry_compare): Likewise. + (hash_scc): Likewise. + (tree_is_indexable): DEBUG_EXPR_DECLs are local entities. + * tree-streamer-in.c (lto_input_ts_list_tree_pointers): Stream + TREE_CHAIN as regular reference. + (streamer_read_integer_cst): Remove. + (streamer_get_pickled_tree): Adjust. + * tree-streamer-out.c (streamer_write_chain): Disable streaming + of DECL_EXTERNALs in BLOCK_VARS for now. + (write_ts_list_tree_pointers): Stream TREE_CHAIN as regular + reference. + * tree-streamer.c (streamer_tree_cache_add_to_node_array): + Add hash value argument and record that if hashes are recorded + in the cache. + (streamer_tree_cache_insert_1): Adjust. + (streamer_tree_cache_insert): Likewise. + (streamer_tree_cache_insert_at): Rename to ... + (streamer_tree_cache_replace_tree): ... this and adjust. + (streamer_tree_cache_append): Adjust. + (record_common_node): Likewise. + (streamer_tree_cache_create): Add argument whether to + record hash values together with trees. + (streamer_tree_cache_delete): Adjust. + * tree-streamer.h (struct streamer_tree_cache_d): Add + vector of hashes. + (streamer_read_integer_cst): Remove. + (streamer_tree_cache_insert): Adjust. + (streamer_tree_cache_append): Likewise. + (streamer_tree_cache_insert_at): Rename to ... + (streamer_tree_cache_replace_tree): ... this and adjust. + (streamer_tree_cache_create): Add argument whether to record hashes. + (streamer_tree_cache_get): Rename to ... + (streamer_tree_cache_get_tree): ... this. + (streamer_tree_cache_get_hash): New function. + * tree.c (cache_integer_cst): New function. + * tree.h (cache_integer_cst): Declare. + (ANON_AGGRNAME_FORMAT, ANON_AGGRNAME_P): Move here from cp/cp-tree.h. + * lto-symtab.c (lto_varpool_replace_node): Only release + DECL_INITIAL of non-prevailing decls. + * varpool.c (varpool_remove_initializer): Do not release + DECL_INITIAL when we are still in CGRAPH_LTO_STREAMING. + +2013-06-16 Jürgen Urban + + * config/mips/mips.h (ISA_HAS_MUL3): Include TARGET_MIPS5900. + (ISA_HAS_MULT, ISA_HAS_DMULT, ISA_HAS_DIV, ISA_HAS_DDIV): New macros. + * config/mips/mips.md (mul3, mul3_internal) + (mul3_r4000): Require ISA_HAS_MULT. + (mul3_mul3): Handle TARGET_MIPS5900. + (mulsidi3_64bit_dmul): Remove redundant TARGET_64BIT test. + (muldi3_highpart, muldi3_highpart_internal, mulditi3) + (mulditi3_internal, mulditi3_r4000): Require ISA_HAS_DMULT + instead of TARGET_64BIT. + (divmod4, udivmod4, divmod4_hilo_): + Require ISA_HAS_DIV. + +2013-06-16 Richard Sandiford + + * config.gcc (mips*-mti-linux*, mips64*-*-linux*, mipsisa64*-*-linux*) + (mips*-*-linux*): Move default with_llsc setting to where other + defaults are set. + (mips*-*-vxworks*): Move with_arch default from with_cpu block to + with_arch block. + (mips64r5900-*-*, mips64r5900el-*-*, mipsr5900-*-*, mipsr5900el-*-*): + Likewise. Remove default with_tune setting. Move default float + setting to its own block. Handle with_llsc in the same block as above. + +2013-06-16 Joern Rennecke + + PR rtl-optimization/57425 + PR rtl-optimization/57569 + * alias.c (write_dependence_p): Add new parameters mem_mode, + canon_mem_addr and mem_canonicalized. Change type of writep to bool. + Changed all callers. + (canon_anti_dependence): New function. + * cse.c (check_dependence): Use canon_anti_dependence. + * cselib.c (cselib_invalidate_mem): Likewise. + * rtl.h (canon_anti_dependence): Declare. + +2013-06-16 Jürgen Urban + + * config/mips/mips.h (ISA_HAS_LL_SC): Exclude TARGET_MIPS5900. + * config/mips/mips.c (mips_start_ll_sc_sync_block): Output + ".set mips3" for 64-bit targets. + +2013-06-15 Dehao Chen + + * tree-flow.h (gimple_check_call_matching_types): Add new argument. + * gimple-low.c (gimple_check_call_matching_types): Likewise. + (gimple_check_call_args): Likewise. + * value-prof.c (check_ic_target): Likewise. + * ipa-inline.c (early_inliner): Likewise. + * ipa-prop.c (update_indirect_edges_after_inlining): Likewise. + * cgraph.c (cgraph_create_edge_1): Likewise. + (cgraph_make_edge_direct): Likewise. + +2013-06-14 Michael Meissner + + PR target/57615 + * config/rs6000/rs6000.md (mov_ppc64): Call + rs6000_output_move_128bit to handle emitting quad memory + operations. Set attribute length to 8 bytes. + +2013-06-14 Vidya Praveen + + * config/aarch64/aarch64-simd.md (aarch64_mlal_lo): + New pattern. + (aarch64_mlal_hi, aarch64_mlsl_lo): Likewise. + (aarch64_mlsl_hi, aarch64_mlal): Likewise. + (aarch64_mlsl): Likewise. + +2013-06-14 Mike Stump + + * Makefile.in (TARGET_H): Add insn-codes.h. + +2013-06-14 Alan Modra + + PR middle-end/57134 + PR middle-end/57586 + * expr.c (expand_expr_real_1 ): Pass + EXPAND_MEMORY and EXPAND_WRITE to recursive call. Don't use + bitfield expansion when EXPAND_MEMORY. + (expand_expr_real_1 ): Pass modifier likewise. + +2013-06-13 Michael Meissner + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Move + test for clearing quad memory on 32-bit later. + +2013-06-13 Marc Glisse + + * fold-const.c (negate_expr_p): Handle VECTOR_CST. + (fold_negate_expr): Likewise. + (fold_real_zero_addition_p): Handle vectors. + (fold_binary_loc) : Likewise. + +2013-06-14 Alan Modra + + * varasm.c (force_const_mem): Revert 2013-06-07 change. + +2013-06-13 Jan Hubicka + + * ipa.c (cgraph_externally_visible_p, varpool_externally_visible_p): + Local comdats are not externally visible. + * symtab.c (dump_symtab_base): Dump externally visible. + (verify_symtab_base): Verify back links in the symtab hash. + +2013-06-13 Bin Cheng + + * fold-const.c (operand_equal_p): Consider NOP_EXPR and + CONVERT_EXPR as equal nodes. + +2013-06-13 Bin Cheng + + * rtlanal.c (noop_move_p): Check the code to be executed for COND_EXEC. + +2013-06-13 Marc Glisse + + * tree-ssa-forwprop.c (simplify_bitwise_binary, associate_plusminus): + Generalize to complex and vector. + * tree.c (build_all_ones_cst): New function. + * tree.h (build_all_ones_cst): Declare it. + +2013-06-13 Alan Modra + + * config/rs6000/rs6000.h (LONG_DOUBLE_LARGE_FIRST): Define. + * config/rs6000/rs6000.md (signbittf2): New insn. + (extenddftf2_internal): Use LONG_DOUBLE_LARGE_FIRST. + (abstf2_internal, cmptf_internal2): Likewise. + * config/rs6000/spe.md (spe_abstf2_cmp, spe_abstf2_tst): Likewise. + +2013-06-12 Michael Meissner + Pat Haugen + Peter Bergner + + * config/rs6000/rs6000.c (emit_load_locked): Add support for + power8 byte, half-word, and quad-word atomic instructions. + (emit_store_conditional): Likewise. + (rs6000_expand_atomic_compare_and_swap): Likewise. + (rs6000_expand_atomic_op): Likewise. + + * config/rs6000/sync.md (larx): Add new modes for power8. + (stcx): Likewise. + (AINT): New mode iterator to include TImode as well as normal + integer modes on power8. + (fetchop_pred): Use int_reg_operand instead of gpc_reg_operand so + that VSX registers are not considered. Use AINT mode iterator + instead of INT1 to allow inclusion of quad word atomic operations + on power8. + (load_locked): Likewise. + (store_conditional): Likewise. + (atomic_compare_and_swap): Likewise. + (atomic_exchange): Likewise. + (atomic_nand): Likewise. + (atomic_fetch_): Likewise. + (atomic_nand_fetch): Likewise. + (mem_thread_fence): Use gen_loadsync_ instead of enumerating + each type. + (ATOMIC): On power8, add QImode, HImode modes. + (load_locked_si): Varients of load_locked for QI/HI + modes that promote to SImode. + (load_lockedti): Convert TImode arguments to PTImode, so that we + get a guaranteed even/odd register pair. + (load_lockedpti): Likewise. + (store_conditionalti): Likewise. + (store_conditionalpti): Likewise. + + * config/rs6000/rs6000.md (QHI): New mode iterator for power8 + atomic load/store instructions. + (HSI): Likewise. + +2013-06-12 Richard Sandiford + + * config/mips/mips.md (extended_mips16): Include GOT and constant-pool + loads. + (insn_count): New attribute, with most cases extracted from... + (length): ...here. Redefine most cases in terms of insn_count. + (single_insn): Delete. + (can_delay): Use insn_count to check for single instructions. + (*mul3_r4300, mul3_r4000, *mul_acc_si, *mul_acc_si_r3900) + (*msac_using_macc, *mul_sub_si, mulsidi3_32bit_r4000) + (mulsidi3_64bit_r4000, muldi3_highpart_internal) + (mulsi3_highpart_split, muldi3_highpart_internal) + (mulditi3_r4000, *div3, *recip3, divmod4) + (udivmod4, sqrt2, *rsqrta, *rsqrtb) + (fix_truncdfsi2_macro, fix_truncsfsi2_macro, *lea_high64) + (*lea64, cprestore_, clear_hazard_, ) + (casesi_internal_mips16_, *tls_get_tp__split) + (tls_get_tp_mips16, *tls_get_tp_mips16_call_): Use "insn_count" + rather than "length". + (tls_get_tp_): Likewise. Remove redundant "no_delay" attribute. + * config/mips/mips-ps-3d.md (mips_c_cond_4s, mips_cabs_cond_4s): + Use "insn_count" rather than "length". + * config/mips/mips-dsp.md + (mips_lx_ext_) + (mips_lx_, *mips_lwx__ext): Remove + length attributes. + +2013-06-12 Marc Glisse + + PR tree-optimization/57361 + * tree-ssa-dse.c (dse_possible_dead_store_p): Handle self-assignment. + +2013-06-12 Sofiane Naci + + * config/aarch64/aarch64-simd.md (aarch64_combine): Convert + to split. + (aarch64_simd_combine): New instruction expansion. + * config/aarch64/aarch64-protos.h (aarch64_split_simd_combine): New + function prototype. + * config/aarch64/aarch64.c (aarch64_split_combine): New function. + * config/aarch64/iterators.md (Vdbl): Add entry for DF. + +2013-06-12 Jan Hubicka + + * cgraph.c (verify_edge_corresponds_to_fndecl): Be lax about + decl has when in streaming stage. + * lto-symtab.c (lto_symtab_merge_symbols): Likewise. + * cgraph.h (cgraph_state): Add CGRAPH_LTO_STREAMING. + +2013-06-12 Roland Stigge + + PR target/57578 + * config/rs6000/t-linux (MULTIARCH_DIRNAME): Fix SPE version detection. + +2013-06-12 Jakub Jelinek + + PR tree-optimization/57537 + * tree-vect-patterns.c (vect_recog_widen_mult_pattern): If + vect_handle_widen_op_by_const, convert oprnd1 to half_type1. + +2013-06-12 Richard Biener + + * data-streamer.h (streamer_write_char_stream): CSE + obs->current_pointer. + * data-streamer-out.c (streamer_write_uhwi_stream): Inline + streamer_write_char_stream manually and optimize the resulting loop. + (streamer_write_hwi_stream): Likewise. + +2013-06-12 Jan Hubicka + + * lto-symtab.c (lto_symtab_merge_symbols): Populate symtab hashtable. + * cgraph.h (varpool_create_empty_node): Declare. + * lto-cgraph.c (input_node, input_varpool_node): Forcingly create + duplicated nodes. + * symtab.c (symtab_unregister_node): Be lax about missin entries + in node hash. + (symtab_get_node): Update comment. + * varpool.c (varpool_create_empty_node): Break out from ... + (varpool_node_for_decl): ... here. + * lto-streamer.h (lto_file_decl_data): Add RESOLUTION_MAP. + +2013-06-12 Eric Botcazou + + * expr.c (expand_expr_real_1) : Use straight-line flow. + : Use 'type' instead of TREE_TYPE (exp) and tidy up the first + part. Use straight-line flow at the end. + : Remove superfluous else. + : Use 'type' instead of TREE_TYPE (exp). + +2013-06-12 Jakub Jelinek + + PR target/56564 + * varasm.c (decl_binds_to_current_def_p): Call binds_local_p + target hook even for !TREE_PUBLIC decls. If no resolution info + is available, return false for common and external decls. + +2013-06-12 Kaushik Phatak + + * config/rl78/constraints.md (U): New constraint. + * config/rl78/rl78.md (*mulqi3_rl78,*mulhi3_rl78,*mulhi3_g13): Add + valloc attribute. + +2013-06-11 Michael Meissner + + PR target/57589 + * config/rs6000/driver-rs6000.c (elf_platform): Make buffer static + to allow returning address to AT_PLATFORM name. + +2013-06-11 Jan Hubicka + + * cgraph.c (cgraph_create_function_alias): Set weakref flag. + * cgraph.h (symtab_node_base): Add weakref flag. + * cgraphunit.c (cgraph_reset_node): Clear weakref flag. + (handle_alias_pairs): Set weakref flag, do not set DECL_EXTERNAL. + (output_weakrefs): Use weakref flag. + * fold-const.c (simple_operand_p): Handle WEAK. + * gimple-fold.c (can_refer_decl_in_current_unit_p): Drop weakref. + * ipa.c (varpool_externally_visible_p): Drop weakref. + (function_and_variable_visibility): Update comment; fix weakref + sanity checks; do not clear DECL_WEAK on them. + * lto-cgraph.c (lto_output_node): update. + (lto_output_varpool_node): Update. + (input_overwrite_node): Update. + (input_node): Update. + (input_varpool_node): Update. + * lto-symtab.c (lto_symtab_symbol_p): Do not special case weakrefs. + (lto_symtab_merge_symbols): Add sanity check. + (lto_symtab_prevailing_decl): Do not special case weakrefs. + * passes.c (rest_of_decl_compilation): Set static flag, too. + * symtab.c (dump_symtab_base): Dump weakref. + (verify_symtab_base): Sanity check weakrefs. + (symtab_make_decl_local): Remove duplicated code. + (symtab_alias_ultimate_target): Simplify. + * varpool.c (varpool_create_variable_alias): Set weakref flag. + +2013-06-11 Tom de Vries + + * genautomata.c (gen_regexp_sequence): Handle els_num == -1. Handle + sequence_vect == NULL. + +2013-06-11 DJ Delorie + + * config/rl78/rl78.c (TARGET_UNWIND_WORD_MODE): Define. + (rl78_unwind_word_mode): New. + +2013-06-11 David Malcolm + + * final.c (debug_prefix_maps): Make static. + +2013-06-11 David Malcolm + + * function.c (initial_trampoline): Remove stray copy. + +2013-06-11 Sofiane Naci + + * config/aarch64/aarch64-simd.md (move_lo_quad_): Update. + +2013-06-11 Martin Jambor + + * ipa-cp.c (ipa_get_indirect_edge_target_1): Check that param_index is + within bounds at the beginning of the function. + +2013-06-11 Alan Modra + + * varasm.c (get_section): Don't die on !DECL_P decl. Tidy error + reporting. + (get_named_section): Don't NULL !DECL_P decl. + +2013-06-11 Igor Zamyatin + + * doc/invoke.texi (core-avx2): Document. + (slm): Likewise. + (atom): Updated with MOVBE. + +2013-06-11 Richard Biener + + * collect2.c (main): Do not redirect ld stdout/stderr when debugging. + +2013-06-11 Anton Blanchard + + * config/rs6000/rs6000.c (rs6000_adjust_atomic_subword): Calculate + correct shift value in little-endian mode. + +2013-06-11 Jakub Jelinek + + PR target/56564 + * varasm.c (get_variable_align): Move #endif to the right place. + +2013-06-10 Cary Coutant + + * dwarf2out.c (hash_external_ref): Use die_symbol or signature + for hash so that hash table traversal order is deterministic. + +2013-06-10 Michael Meissner + Pat Haugen + Peter Bergner + + * config/rs6000/vector.md (GPR move splitter): Do not split moves + of vectors in GPRS if they are direct moves or quad word load or + store moves. + + * config/rs6000/rs6000-protos.h (rs6000_output_move_128bit): Add + declaration. + (direct_move_p): Likewise. + (quad_load_store_p): Likewise. + + * config/rs6000/rs6000.c (enum rs6000_reg_type): Simplify register + classes into bins based on the physical register type. + (reg_class_to_reg_type): Likewise. + (IS_STD_REG_TYPE): Likewise. + (IS_FP_VECT_REG_TYPE): Likewise. + (reload_fpr_gpr): Arrays to determine what insn to use if we can + use direct move instructions. + (reload_gpr_vsx): Likewise. + (reload_vsx_gpr): Likewise. + (rs6000_init_hard_regno_mode_ok): Precalculate the register type + information that is a simplification of register classes. Also + precalculate direct move reload helpers. + (direct_move_p): New function to return true if the operation can + be done as a direct move instruciton. + (quad_load_store_p): New function to return true if the operation + is a quad memory operation. + (rs6000_legitimize_address): If quad memory, only allow register + indirect for TImode addresses. + (rs6000_legitimate_address_p): Likewise. + (enum reload_reg_type): Delete, replace with rs6000_reg_type. + (rs6000_reload_register_type): Likewise. + (register_to_reg_type): Return register type. + (rs6000_secondary_reload_simple_move): New helper function for + secondary reload and secondary memory needed to identify anything + that is a simple move, and does not need reloading. + (rs6000_secondary_reload_direct_move): New helper function for + secondary reload to identify cases that can be done with several + instructions via the direct move instructions. + (rs6000_secondary_reload_move): New helper function for secondary + reload to identify moves between register types that can be done. + (rs6000_secondary_reload): Add support for quad memory operations + and for direct move. + (rs6000_secondary_memory_needed): Likewise. + (rs6000_debug_secondary_memory_needed): Change argument names. + (rs6000_output_move_128bit): New function to return the move to + use for 128-bit moves, including knowing about the various + limitations of quad memory operations. + + * config/rs6000/vsx.md (vsx_mov): Add support for quad + memory operations. call rs6000_output_move_128bit for the actual + instruciton(s) to generate. + (vsx_movti_64bit): Likewise. + + * config/rs6000/rs6000.md (UNSPEC_P8V_FMRGOW): New unspec values. + (UNSPEC_P8V_MTVSRWZ): Likewise. + (UNSPEC_P8V_RELOAD_FROM_GPR): Likewise. + (UNSPEC_P8V_MTVSRD): Likewise. + (UNSPEC_P8V_XXPERMDI): Likewise. + (UNSPEC_P8V_RELOAD_FROM_VSX): Likewise. + (UNSPEC_FUSION_GPR): Likewise. + (FMOVE128_GPR): New iterator for direct move. + (f32_lv): New mode attribute for load/store of SFmode/SDmode values. + (f32_sv): Likewise. + (f32_dm): Likewise. + (zero_extenddi2_internal1): Add support for power8 32-bit + loads and direct move instructions. + (zero_extendsidi2_lfiwzx): Likewise. + (extendsidi2_lfiwax): Likewise. + (extendsidi2_nocell): Likewise. + (floatsi2_lfiwax): Likewise. + (lfiwax): Likewise. + (floatunssi2_lfiwzx): Likewise. + (lfiwzx): Likewise. + (fix_trunc_stfiwx): Likewise. + (fixuns_trunc_stfiwx): Likewise. + (mov_hardfloat, 32-bit floating point): Likewise. + (mov_hardfloat64, 64-bit floating point): Likewise. + (parity2_cmpb): Set length/type attr. + (unnamed shift right patterns, mov_internal2): Change type attr + for 'mr.' to fast_compare. + (bpermd_): Change type attr to popcnt. + (p8_fmrgow_): New insns for power8 direct move support. + (p8_mtvsrwz_1): Likewise. + (p8_mtvsrwz_2): Likewise. + (reload_fpr_from_gpr): Likewise. + (p8_mtvsrd_1): Likewise. + (p8_mtvsrd_2): Likewise. + (p8_xxpermdi_): Likewise. + (reload_vsx_from_gpr): Likewise. + (reload_vsx_from_gprsf): Likewise. + (p8_mfvsrd_3_): LIkewise. + (reload_gpr_from_vsx): Likewise. + (reload_gpr_from_vsxsf): Likewise. + (p8_mfvsrd_4_disf): Likewise. + (multi-word GPR splits): Do not split direct moves or quad memory + operations. + +2013-06-10 David Malcolm + + * tree-into-ssa.c (interesting_blocks): Make static. + +2013-06-10 Jakub Jelinek + + PR target/56564 + * varasm.c (align_variable): Don't use DATA_ALIGNMENT or + CONSTANT_ALIGNMENT if !decl_binds_to_current_def_p (decl). + Use DATA_ABI_ALIGNMENT for that case instead if defined. + (get_variable_align): New function. + (get_variable_section, emit_bss, emit_common, + assemble_variable_contents, place_block_symbol): Use + get_variable_align instead of DECL_ALIGN. + (assemble_noswitch_variable): Add align argument, use it + instead of DECL_ALIGN. + (assemble_variable): Adjust caller. Use get_variable_align + instead of DECL_ALIGN. + * config/i386/i386.h (DATA_ALIGNMENT): Adjust x86_data_alignment + caller. + (DATA_ABI_ALIGNMENT): Define. + * config/i386/i386-protos.h (x86_data_alignment): Adjust prototype. + * config/i386/i386.c (x86_data_alignment): Add opt argument. If + opt is false, only return the psABI mandated alignment increase. + * config/c6x/c6x.h (DATA_ALIGNMENT): Renamed to... + (DATA_ABI_ALIGNMENT): ... this. + * config/mmix/mmix.h (DATA_ALIGNMENT): Renamed to... + (DATA_ABI_ALIGNMENT): ... this. + * config/mmix/mmix.c (mmix_data_alignment): Adjust function comment. + * config/s390/s390.h (DATA_ALIGNMENT): Renamed to... + (DATA_ABI_ALIGNMENT): ... this. + * doc/tm.texi.in (DATA_ABI_ALIGNMENT): Document. + * doc/tm.texi: Regenerated. + +2013-06-10 Uros Bizjak + + * config/alpha/alpha.c (alpha_emit_xfloating_compare): Also use + cmp_code to construct REG_EQUAL note. + +2013-06-09 Jakub Jelinek + + PR target/57568 + * config/i386/i386.md (TARGET_READ_MODIFY_WRITE peepholes): Ensure + that operands[2] doesn't overlap with operands[0]. + +2013-06-09 David Edelsohn + Jan Hubicka + + * config/rs6000/rs6000.c (print_operand, 'z'): Remove historical + hack to mark symbols as used. + +2013-06-08 Vladimir Makarov + + PR rtl-optimization/57559 + * lra-constraints.c (process_alt_operands): Don't discourage + memory with known offset for offsetable memory constraint. + * lra.c (lra_emit_add): Exchange y and z for 2-op add insn. + +2013-06-08 Eric Botcazou + + * varasm.c (struct oc_local_state): Reorder fields. + (output_constructor_bitfield): Replace OUTER parameter with BIT_OFFSET + and adjust accordingly. + (output_constructor): Reorder initialization code and adjust call to + output_constructor_bitfield. + +2013-06-07 Jan Hubicka + + * symtab.c (symtab_resolve_alias): Do not remove alias attribute. + +2013-06-07 David Malcolm + + * tree-object-size.c (unknown): Make const. + +2013-06-07 Andreas Krebbel + + * config/s390/s390.md (cpu_facility): Add cpu_zarch. + ("*movmem_short", "*clrmem_short", "*cmpmem_short): Use cpu_zarch + for last alternative in the cpu_facility attribute. + +2013-06-07 Kyrylo Tkachov + + PR target/56315 + * config/arm/arm.md (*xordi3_insn): Change to insn_and_split. + (xordi3): Change operand 2 constraint to arm_xordi_operand. + * config/arm/arm.c (const_ok_for_dimode_op): Handle XOR. + * config/arm/constraints.md (Dg): New constraint. + * config/arm/neon.md (xordi3_neon): Remove. + (neon_veor): Generate xordi3 instead of xordi3_neon. + * config/arm/predicates.md (arm_xordi_operand): New predicate. + +2013-06-07 Kyrylo Tkachov + + * config/arm/arm.md (anddi3_insn): Remove duplicate alternatives. + Clean up alternatives. + +2013-06-07 Alan Modra + + * config/rs6000/rs6000.c (setup_incoming_varargs): Round up + va_list_gpr_size. + +2013-06-07 Alan Modra + + * varasm.c (force_const_mem): Assert mode is not VOID or BLK. + +2013-06-07 Kyrylo Tkachov + + * config/arm/constraints.md (Df): New constraint. + * config/arm/arm.md (iordi3_insn): Use Df constraint instead of De. + Correct length attribute for last two alternatives. + +2013-06-07 Alan Modra + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't + override user -mfp-in-toc. + (offsettable_ok_by_alignment): Consider just the current access + rather than the whole object, unless BLKmode. Handle + CONSTANT_POOL_ADDRESS_P constants that lack a decl too. + (use_toc_relative_ref): Allow CONSTANT_POOL_ADDRESS_P constants + for -mcmodel=medium. + * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Don't + override user -mfp-in-toc or -msum-in-toc. Default to + -mno-fp-in-toc for -mcmodel=medium. + +2013-06-06 DJ Delorie + + * config/rl78/rl78.c (rl78_valid_pointer_mode): New, implements + TARGET_VALID_POINTER_MODE. + +2013-06-06 Michael Meissner + Pat Haugen + Peter Bergner + + * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions): + Document new power8 builtins. + + * config/rs6000/vector.md (and3): Add a clobber/scratch of a + condition code register, to allow 128-bit logical operations to be + done in the VSX or GPR registers. + (nor3): Use the canonical form for nor. + (eqv3): Add expanders for power8 xxleqv, xxlnand, xxlorc, + vclz*, and vpopcnt* vector instructions. + (nand3): Likewise. + (orc3): Likewise. + (clz2): LIkewise. + (popcount2): Likewise. + + * config/rs6000/predicates.md (int_reg_operand): Rework tests so + that only the GPRs are recognized. + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + support for new power8 builtins. + + * config/rs6000/rs6000-builtin.def (xscvspdpn): Add new power8 + builtin functions. + (xscvdpspn): Likewise. + (vclz): Likewise. + (vclzb): Likewise. + (vclzh): Likewise. + (vclzw): Likewise. + (vclzd): Likewise. + (vpopcnt): Likewise. + (vpopcntb): Likewise. + (vpopcnth): Likewise. + (vpopcntw): Likewise. + (vpopcntd): Likewise. + (vgbbd): Likewise. + (vmrgew): Likewise. + (vmrgow): Likewise. + (eqv): Likewise. + (eqv_v16qi3): Likewise. + (eqv_v8hi3): Likewise. + (eqv_v4si3): Likewise. + (eqv_v2di3): Likewise. + (eqv_v4sf3): Likewise. + (eqv_v2df3): Likewise. + (nand): Likewise. + (nand_v16qi3): Likewise. + (nand_v8hi3): Likewise. + (nand_v4si3): Likewise. + (nand_v2di3): Likewise. + (nand_v4sf3): Likewise. + (nand_v2df3): Likewise. + (orc): Likewise. + (orc_v16qi3): Likewise. + (orc_v8hi3): Likewise. + (orc_v4si3): Likewise. + (orc_v2di3): Likewise. + (orc_v4sf3): Likewise. + (orc_v2df3): Likewise. + + * config/rs6000/rs6000.c (rs6000_option_override_internal): Only + allow power8 quad mode in 64-bit. + (rs6000_builtin_vectorized_function): Add support to vectorize + ISA 2.07 count leading zeros, population count builtins. + (rs6000_expand_vector_init): On ISA 2.07 use xscvdpspn to form + V4SF vectors instead of xscvdpsp to avoid IEEE related traps. + (builtin_function_type): Add vgbbd builtin function which takes an + unsigned argument. + (altivec_expand_vec_perm_const): Add support for new power8 merge + instructions. + + * config/rs6000/vsx.md (VSX_L2): New iterator for 128-bit types, + that does not include TImdoe for use with 32-bit. + (UNSPEC_VSX_CVSPDPN): Support for power8 xscvdpspn and xscvspdpn + instructions. + (UNSPEC_VSX_CVDPSPN): Likewise. + (vsx_xscvdpspn): Likewise. + (vsx_xscvspdpn): Likewise. + (vsx_xscvdpspn_scalar): Likewise. + (vsx_xscvspdpn_directmove): Likewise. + (vsx_and3): Split logical operations into 32-bit and + 64-bit. Add support to do logical operations on TImode as well as + VSX vector types. Allow logical operations to be done in either + VSX registers or in general purpose registers in 64-bit mode. Add + splitters if GPRs were used. For AND, add clobber of CCmode to + allow use of ANDI on GPRs. Rewrite nor to use the canonical RTL + encoding. + (vsx_and3_32bit): Likewise. + (vsx_and3_64bit): Likewise. + (vsx_ior3): Likewise. + (vsx_ior3_32bit): Likewise. + (vsx_ior3_64bit): Likewise. + (vsx_xor3): Likewise. + (vsx_xor3_32bit): Likewise. + (vsx_xor3_64bit): Likewise. + (vsx_one_cmpl2): Likewise. + (vsx_one_cmpl2_32bit): Likewise. + (vsx_one_cmpl2_64bit): Likewise. + (vsx_nor3): Likewise. + (vsx_nor3_32bit): Likewise. + (vsx_nor3_64bit): Likewise. + (vsx_andc3): Likewise. + (vsx_andc3_32bit): Likewise. + (vsx_andc3_64bit): Likewise. + (vsx_eqv3_32bit): Add support for power8 xxleqv, xxlnand, + and xxlorc instructions. + (vsx_eqv3_64bit): Likewise. + (vsx_nand3_32bit): Likewise. + (vsx_nand3_64bit): Likewise. + (vsx_orc3_32bit): Likewise. + (vsx_orc3_64bit): Likewise. + + * config/rs6000/rs6000.h (VLOGICAL_REGNO_P): Update comment. + + * config/rs6000/altivec.md (UNSPEC_VGBBD): Add power8 vgbbd + instruction. + (p8_vmrgew): Add power8 vmrgew and vmrgow instructions. + (p8_vmrgow): Likewise. + (altivec_and3): Add clobber of CCmode to allow AND using + GPRs to be split under VSX. + (p8v_clz2): Add power8 count leading zero support. + (p8v_popcount2): Add power8 population count support. + (p8v_vgbbd): Add power8 gather bits by bytes by doubleword + support. + + * config/rs6000/rs6000.md (eqv3): Add support for powerp eqv + instruction. + + * config/rs6000/altivec.h (vec_eqv): Add defines to export power8 + builtin functions. + (vec_nand): Likewise. + (vec_vclz): Likewise. + (vec_vclzb): Likewise. + (vec_vclzd): Likewise. + (vec_vclzh): Likewise. + (vec_vclzw): Likewise. + (vec_vgbbd): Likewise. + (vec_vmrgew): Likewise. + (vec_vmrgow): Likewise. + (vec_vpopcnt): Likewise. + (vec_vpopcntb): Likewise. + (vec_vpopcntd): Likewise. + (vec_vpopcnth): Likewise. + (vec_vpopcntw): Likewise. + +2013-06-06 Vladimir Makarov + + PR rtl-optimization/57468 + * config/i386/i386.c (inline_secondary_memory_needed): Ignore + spilled pseudos. + +2013-06-06 Vladimir Makarov + + PR rtl-optimization/57459 + * lra-constraints.c (update_ebb_live_info): Fix typo for operand + type when setting live regs. + +2013-06-06 Vladimir Makarov + + * config/s390/s390.opt (mlra): New option. + * config/s390/s390.c (s390_decompose_address): Check displacement + for all registers for LRA. + (s390_secondary_reload): Don't used secondary reloads for LRA. + (s390_lra_p): New function. + (TARGET_LRA_P): Define. + * config/s390/s390.md (*movmem_short, *clrmem_short): Change value + of attribute cpu_facility to zarch for the last alternative. + (*cmpmem_short): Ditto. + +2013-06-06 Eric Botcazou + + * config/arm/arm.c (arm_r3_live_at_start_p): New predicate. + (arm_compute_static_chain_stack_bytes): Use it. Tidy up. + (arm_expand_prologue): Likewise. + +2013-06-06 Teresa Johnson + + PR c++/53743 + * ifcvt.c (find_if_case_1): Replace BB_COPY_PARTITION with assert + as this is now done by redirect_edge_and_branch_force. + * function.c (thread_prologue_and_epilogue_insns): Insert new bb after + barriers, and fix interaction with splitting. + * emit-rtl.c (try_split): Copy REG_CROSSING_JUMP notes. + * cfgcleanup.c (try_forward_edges): Fix early return value to properly + reflect changes made in the routine. + * bb-reorder.c (emit_barrier_after_bb): Move to cfgrtl.c. + (fix_up_fall_thru_edges): Remove incorrect check for bb layout order + since this is called in cfglayout mode, and replace partition fixup + with assert as that is now done by force_nonfallthru_and_redirect. + (add_reg_crossing_jump_notes): Handle the fact that some jumps may + already be marked with region crossing note. + (insert_section_boundary_note): Make non-static, gate on flag + has_bb_partition, rewrite to also check for multiple partitions. + (rest_of_handle_reorder_blocks): Remove call to + insert_section_boundary_note, now done later during free_cfg. + (duplicate_computed_gotos): Don't duplicate partition crossing edge. + * bb-reorder.h (insert_section_boundary_note): Declare. + * Makefile.in (cfgrtl.o): Depend on bb-reorder.h + * cfgrtl.c (rest_of_pass_free_cfg): If partitions exist + invoke insert_section_boundary_note. + (try_redirect_by_replacing_jump): Remove unnecessary + check for region crossing note. + (fixup_partition_crossing): New function. + (rtl_redirect_edge_and_branch): Fixup partition boundaries. + (emit_barrier_after_bb): Move here from bb-reorder.c, handle insertion + in non-cfglayout mode. + (force_nonfallthru_and_redirect): Fixup partition boundaries, + remove old code that tried to do this. Emit barrier correctly + when we are in cfglayout mode. + (last_bb_in_partition): New function. + (rtl_split_edge): Correctly fixup partition boundaries. + (commit_one_edge_insertion): Remove old code that tried to + fixup region crossing edge since this is now handled in + split_block, and set up insertion point correctly since + block may now end in a jump. + (verify_hot_cold_block_grouping): Guard against checking when not in + linearized RTL mode. + (rtl_verify_edges): Add checks for incorrect/missing REG_CROSSING_JUMP + notes. + (rtl_verify_flow_info_1): Move verify_hot_cold_block_grouping to + rtl_verify_flow_info, so not called in cfglayout mode. + (rtl_verify_flow_info): Move verify_hot_cold_block_grouping here. + (fixup_reorder_chain): Remove old code that attempted to fixup region + crossing note as this is now handled in force_nonfallthru_and_redirect. + (duplicate_insn_chain): Don't duplicate switch section notes. + (rtl_can_remove_branch_p): Remove unnecessary check for region crossing + note. + * basic-block.h (emit_barrier_after_bb): Declare. + +2013-06-06 Kyrylo Tkachov + + * config/arm/arm-fixed.md (add3,usadd3,ssadd3, + sub3, ussub3, sssub3, arm_ssatsihi_shift, + arm_usatsihi): Adjust alternatives for arm_restrict_it. + +2013-06-06 Kyrylo Tkachov + + * config/arm/arm-ldmstm.ml: Set "predicable_short_it" to "no" + where appropriate. + * config/arm/ldmstm.md: Regenerate. + +2013-06-06 Kyrylo Tkachov + + * config/arm/sync.md (atomic_loaddi_1): + Disable predication for arm_restrict_it. + (arm_load_exclusive): Likewise. + (arm_load_exclusivesi): Likewise. + (arm_load_exclusivedi): Likewise. + (arm_load_acquire_exclusive): Likewise. + (arm_load_acquire_exclusivesi): Likewise. + (arm_load_acquire_exclusivedi): Likewise. + (arm_store_exclusive): Likewise. + (arm_store_exclusive): Likewise. + (arm_store_release_exclusivedi): Likewise. + (arm_store_release_exclusive): Likewise. + +2013-06-06 Richard Biener + + * lto-streamer.h (enum LTO_tags): Move LTO_tree_pickle_reference + after LTO_null. + (lto_tag_is_tree_code_p): Adjust. + (lto_tag_is_gimple_code_p): Likewise. + (lto_gimple_code_to_tag): Likewise. + (lto_tag_to_gimple_code): Likewise. + (lto_tree_code_to_tag): Likewise. + (lto_tag_to_tree_code): Likewise. + * data-streamer.h (streamer_write_hwi_in_range): Use + uhwi streaming to stream the normalized range. + (streamer_read_hwi_in_range): Likewise. + +2013-06-05 Kyrylo Tkachov + + * config/arm/arm.md (enabled_for_depr_it): New attribute. + (predicable_short_it): Likewise. + (predicated): Likewise. + (enabled): Handle above. + (define_cond_exec): Set predicated attribute to yes. + +2013-06-05 Mike Stump + + * gdbinit.in (__FUNCTION__): Add. + +2013-06-05 Uros Bizjak + + * config/alpha/alpha.c (alpha_emit_conditional_move): Swap all + GE, GT, GEU and GTU compares, modulo DImode compares with zero. + +2013-06-05 Jan Hubicka + + * varasm.c (mark_decl_referenced): Revert the removal until targets + are fixed. + +2013-06-05 David Edelsohn + + * config/rs6000/rs6000.c (print_operand, 'z'): Use DECL_PRESERVE_P + instead of mark_decl_referenced. + +2013-06-05 Jan Hubicka + + * cgraph.c (cgraph_remove_node): Clear forced_by_abi. + (cgraph_node_cannot_be_local_p_1): Honnor symbol.forced_by_abi + and symtab_used_from_object_file_p. + (cgraph_make_node_local_1): Clear forced_by_abi. + (cgraph_can_remove_if_no_direct_calls_and): Use forced_by_abi + * cgraph.h (symtab_node_base): Add forced_by_abi. + (decide_is_variable_needed): Remove. + (varpool_can_remove_if_no_refs): Honnor symbol.forced_by_abi. + * cgraphunit.c (cgraph_decide_is_function_needed): Rename to .. + (decide_is_symbol_needed): ... this one; handle symbols in general; + always analyze virtuals; honnor forced_by_abi. + (cgraph_finalize_function): Update. + (varpool_finalize_decl): Update. + (symbol_defined_and_needed): Remove. + (analyze_functions): Update. + * lto-cgraph.c (lto_output_node, lto_output_varpool_node, + output_refs, input_overwrite_node): Handle forced_by_abi. + * ipa.c (cgraph_address_taken_from_non_vtable_p): Rename to ... + (address_taken_from_non_vtable_p): ... this one. + (comdat_can_be_unshared_p_1): New function. + (cgraph_comdat_can_be_unshared_p): Rename to ... + (comdat_can_be_unshared_p): ... this one; handle symbols in general. + (varpool_externally_visible_p): Use comdat_can_be_unshared_p. + (function_and_variable_visibility): Clear forced_by_abi as needed. + * trans-mem.c (ipa_tm_mark_forced_by_abi_node): New functoin. + (ipa_tm_create_version_alias, ipa_tm_create_version): Update. + * symtab.c (dump_symtab_base): Dump forced_by_abi. + * varpool.c (decide_is_variable_needed): Remove. + +2013-06-05 Kyrylo Tkachov + + * config/arm/arm.c (MAX_INSN_PER_IT_BLOCK): New macro. + (arm_option_override): Override arm_restrict_it where appropriate. + (thumb2_final_prescan_insn): Use MAX_INSN_PER_IT_BLOCK. + * config/arm/arm.opt (mrestrict-it): New command-line option. + * doc/invoke.texi: Document -mrestrict-it. + +2013-06-05 David Malcolm + + * tsan.c (tsan_atomic_table): Make const. + +2013-06-05 Richard Biener + + * tree-streamer.c (streamer_tree_cache_insert_1): Update the + index associated with the tree we are supposed to replace. + * tree-streamer-out.c (pack_ts_base_value_fields): Output + TREE_ASM_WRITTEN as zero for everything but SSA names. + +2013-06-05 David Malcolm + + * tree-ssa-structalias.c (call_stmt_vars): Make static. + +2013-06-04 Jan Hubicka + + * lto-cgraph.c (get_alias_symbol): Remove weakref sanity check. + (input_node, input_varpool_node): Handle correctly external same + body aliases. + * ipa.c (symtab_remove_unreachable_nodes): Do not remove external + nodes at ltrans stage. + +2013-06-04 Jan Hubicka + + * ipa-inline.c (update_caller_keys): Fix availability test. + (update_callee_keys): Likewise. + * symtab.c (symtab_alias_ultimate_target): Make availaiblity logic + to follow ELF standard. + +2013-06-04 Jürgen Urban + + * config.gcc (mipsr5900-*-elf*, mipsr5900el-*-elf*, mips64r5900-*-elf*) + (mips64r5900el-*-elf*): New configurations. + * config/mips/mips-cpus.def (r5900): New processor. + * config/mips/mips-tables.opt: Regenerate. + * config/mips/mips.c (mips_rtx_cost_data): Add an R5900 entry. + (mips_issue_rate): Handle PROCESSOR_R5900. + (mips_reorg_process_insns): Force reorder mode for the R5900. + * config/mips/mips.h (TARGET_MIPS5900): Define. + (ISA_HAS_CONDMOVE, ISA_HAS_PREFETCH, ISA_HAS_HILO_INTERLOCKS): Include + TARGET_MIPS5900. + (ISA_HAS_LOAD_DELAY, ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY): Exclude + TARGET_MIPS5900. + * config/mips/mips.md (processor): Add r5900. + (MOVECC): Disallow CCmode conditions for TARGET_MIPS5900. + +2013-06-04 Ian Bolton + + * config/aarch64/aarch64.md (*mov_aarch64): Call + into function to generate MOVI instruction. + * config/aarch64/aarch64.c (aarch64_simd_container_mode): New function. + (aarch64_preferred_simd_mode): Turn into wrapper. + (aarch64_output_scalar_simd_mov_immediate): New function. + * config/aarch64/aarch64-protos.h: Add prototype for above. + +2013-06-04 Ian Bolton + + * config/aarch64/aarch64.c (simd_immediate_info): Remove + element_char member. + (sizetochar): Return signed char. + (aarch64_simd_valid_immediate): Remove elchar and other + unnecessary variables. + (aarch64_output_simd_mov_immediate): Take rtx instead of &rtx. + Calculate element_char as required. + * config/aarch64/aarch64-protos.h: Update and move prototype + for aarch64_output_simd_mov_immediate. + * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): + Update arguments. + +2013-06-04 Ian Bolton + + * config/aarch64/aarch64.c (simd_immediate_info): Struct to hold + information completed by aarch64_simd_valid_immediate. + (aarch64_legitimate_constant_p): Update arguments. + (aarch64_simd_valid_immediate): Work with struct rather than many + pointers. + (aarch64_simd_scalar_immediate_valid_for_move): Update arguments. + (aarch64_simd_make_constant): Update arguments. + (aarch64_output_simd_mov_immediate): Work with struct rather than + many pointers. Output immediate directly rather than as operand. + * config/aarch64/aarch64-protos.h (aarch64_simd_valid_immediate): + Update prototype. + * config/aarch64/constraints.md (Dn): Update arguments. + +2013-06-04 Ian Bolton + + * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): No + longer static. + (aarch64_simd_immediate_valid_for_move): Remove. + (aarch64_simd_scalar_immediate_valid_for_move): Update call. + (aarch64_simd_make_constant): Update call. + (aarch64_output_simd_mov_immediate): Update call. + * config/aarch64/aarch64-protos.h (aarch64_simd_valid_immediate): + Add prototype. + * config/aarch64/constraints.md (Dn): Update call. + +2013-06-04 Ian Bolton + + * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Change + return type to bool for prototype. + (aarch64_legitimate_constant_p): Check for true instead of not -1. + (aarch64_simd_valid_immediate): Fix up each return to return a bool. + (aarch64_simd_immediate_valid_for_move): Update retval for bool. + +2013-06-04 Catherine Moore + + * config/mips/mips.opt (meva): New. + * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_eva. + (ASM_SPEC): Handle -meva. + * doc/invoke.texi (meva): Document. + +2013-06-04 Alan Modra + + * config/rs6000/rs6000.c (output_toc): Correct little-endian float + constant output. + +2013-06-04 Kyrylo Tkachov + + * rtl.def: Add extra fourth optional field to define_cond_exec. + * gensupport.c (process_one_cond_exec): Process attributes from + define_cond_exec. + * doc/md.texi: Document fourth field in define_cond_exec. + +2013-06-04 Eric Botcazou + + * expmed.c (extract_bit_field_1): In the larger-than-a-word case, factor + out the processing order as in store_bit_field_1. + +2013-06-04 Jan Hubicka + + PR middle-end/57500 + * cgraphunit.c (cgraph_process_same_body_aliases): Create + non-VAR_DECL node if it does not exist yet. + +2013-06-03 Richard Sandiford + + * config.gcc (mipsisa64sr71k-*-elf*, mipsisa64sb1-*-elf*) + (mipsisa64sb1el-*-elf*, mips64-*-elf*, mips64el-*-elf*) + (mips64orion-*-elf*, mips64orionel-*-elf*): Remove + target_cpu_default setting. + +2013-06-03 Teresa Johnson + + * dumpfile.c (opt_info_switch_p): Change -fopt-info + default to -fopt-info=optimized instead of all. + * doc/invoke.texi: Ditto. + * tree-vectorizer.c (vectorize_loops): Emit loop vectorization + success under MSG_OPTIMIZED_LOCATIONS, and use dump_printf_loc. + (execute_vect_slp): Emit BB vectorization success under + MSG_OPTIMIZED_LOCATIONS. + * tree-vect-slp.c (vect_slp_transform_bb): Change + MSG_OPTIMIZED_LOCATIONS to MSG_NOTE. + * tree-vect-loop.c (vect_transform_loop): Ditto. + +2013-06-03 Jason Merrill + + PR c++/57415 + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + Use TARGET_EXPR for C++. + +2013-06-03 Jakub Jelinek + + PR rtl-optimization/57268 + * sched-deps.c (sched_analyze_2): Don't flush_pending_lists + if DEBUG_INSN_P (insn). + + Reapply + 2013-05-31 Dinar Temirbulatov + + PR rtl-optimization/57268 + * sched-deps.c (sched_analyze_2): Flush dependence lists if + the sum of the read and write lists exceeds MAX_PENDING_LIST_LENGTH. + +2013-06-03 Yuri Rumyantsev + + * config/i386/i386.c (ix86_lea_outperforms): Fix formatting. + (ix86_avoid_lea_for_addr): Likewise. + (exact_dependency_1): Likewise. + (ix86_adjust_cost): Likewise. + (swap_top_of_ready_list): Fix formatting and !reload_completed check + removed. + (do_reorder_for_imul): Fix typo, formatting and + !reload_completed check removed. + (ix86_sched_reorder): Fix typo and formatting. + (fold_builtin_cpu): Move M_INTEL_SLM at the end of processor types + list. + +2013-06-03 Sofiane Naci + + * config/aarch64/aarch64.md (*movdi_aarch64): Define "simd" attribute. + +2013-06-03 Eric Botcazou + + * varasm.c (output_constant) : Minor formatting tweak. + : Likewise. + : Likewise. + +2013-06-01 Janus Weil + Mikael Morin + + * configure.ac: Add AC_HEADER_TIOCGWINSZ macro. + * config.in: Regenerated. + * configure: Regenerated. + +2013-06-01 Jan Hubicka + + PR middle-end/57366 + * cgraphunit.c (compile): When weakref is not supported, + set up transparent aliases before final output pass. + * varasm.c (assemble_alias): Do not try to do it here. + +2013-06-01 Jan Hubicka + + PR middle-end/57467 + * passes.c (for_per_function): Skip unanalyzed functions. + +2013-06-01 Jan Hubicka + + * lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Rename to ... + (lto_symtab_merge_symbols_1): ... this one. + (lto_symtab_merge_cgraph_nodes): Rename to ... + (lto_symtab_merge_symbols): ... this one; simplify. + * cgraph.c (same_body_aliases_done): Rename to ... + (cpp_implicit_aliases_done): ... this one. + (cgraph_create_function_alias): Update. + (cgraph_same_body_alias): Update. + (dump_cgraph_node): Remove alias dumping; simplify thunk dumping. + (verify_edge_corresponds_to_fndecl): Simplify. + * cgraph.h (symtab_node_base): Add cpp_implicit_alias, alias_target. + (cgraph_node): Remove same_body_alias. + (varpool_node): Remove alias_of and extra_name_alias. + (same_body_aliases_done): Rename to .. + (cpp_implicit_aliases_done): ... this one. + (symtab_alias_ultimate_target): Add default parameter. + (symtab_resolve_alias): New function. + (fixup_same_cpp_alias_visibility): Declare. + (cgraph_function_node): Add default parameter. + (cgraph_node_asm_name): Likewise. + (cgraph_function_or_thunk_node): Add default parameter; do + not ICE when it is NULL. + (varpool_variable_node): Likewise. + * tree-emutls.c (create_emultls_var): Update. + (ipa_lower_emutls): Update. + * cgraphunit.c (cgraph_decide_is_function_needed): Update. + (cgraph_reset_node): Reset alias info. + (cgraph_finalize_function): Update. + (fixup_same_cpp_alias_visibility): Move to symtab.c. + (analyze_function): Simplify. + (cgraph_process_same_body_aliases): Simplify. + (analyze_functions): Fixup same body aliases. + (handle_alias_pairs): Simplify. + (assemble_thunk): Update. + (assemble_thunks_and_aliases): Update. + (output_weakrefs): Rewrite. + * lto-cgraph.c (lto_output_node): Rewrite alias handling. + (lto_output_varpool_node): Likewise. + (compute_ltrans_boundary): Remve assert. + (get_alias_symbol): New functoin. + (input_node): Rewrite alias handling. + (input_varpool_node): Likewise. + * ipa-pure-const.c (propagate_pure_const): Fix formating. + * ipa.c (process_references): Handle weakrefs correctly. + (symtab_remove_unreachable_nodes): Likewise. + * trans-mem.c (get_cg_data): Update. + (ipa_tm_create_version_alias): Update. + (ipa_tm_execute): Update. + * symtab.c (dump_symtab_base): Dump aliases. + (verify_symtab_base): Verify aliases. + (symtab_node_availability): New function. + (symtab_alias_ultimate_target): Simplify. + (fixup_same_cpp_alias_visibility): Move here from cgraphunit.c; + handle all the fixup cases. + (symtab_resolve_alias): New function. + * passes.c (ipa_write_summaries): Handle weakrefs. + * varpool.c (varpool_analyze_node): Simplify. + (assemble_aliases): Update. + (varpool_create_variable_alias): Simplify. + (varpool_extra_name_alias): Simplify. + * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Rename to... + (lto_symtab_merge_symbols): ... this one. + +2013-06-01 Dinar Temirbulatov + + Revert + PR rtl-optimization/57268 + * sched-deps.c (sched_analyze_2): Flush dependence lists if + the sum of the read and write lists exceeds MAX_PENDING_LIST_LENGTH. + +2013-06-01 Tobias Burnus + + Partially reverted: + 2013-05-31 Tobias Burnus + + PR middle-end/57073 + * tree-ssa-math-opts.c (execute_cse_sincos): Move check + further up. + +2013-05-31 Dinar Temirbulatov + + PR rtl-optimization/57268 + * sched-deps.c (sched_analyze_2): Flush dependence lists if + the sum of the read and write lists exceeds MAX_PENDING_LIST_LENGTH. + +2013-05-31 Eric Botcazou + + * config/rs6000/predicates.md (rs6000_cbranch_operator): Accept some + unordered comparison operators when -fno-trapping-math is in effect + on the e500. + * config/rs6000/rs6000.c (rs6000_generate_compare): Remove dead code + and implement unordered comparison operators properly on the e500. + +2013-05-31 Eric Botcazou + + * simplify-rtx.c (simplify_byte_swapping_operation): Use proper macro + for constant scalar integers. + (simplify_relational_operation_1): Likewise. + +2013-05-31 Segher Boessenkool + + * config/rs6000/rs6000-opts.h (enum processor_type): Reorder. + * config/rs6000/rs6000.md (cpu): Reorder. Split long line. + Fix comment. + +2013-05-31 Yuri Rumyantsev + Igor Zamyatin + + Silvermont (SLM) architecture performance tuning. + * config/i386/i386.h (enum ix86_tune_indices): Add + X86_TUNE_SPLIT_MEM_OPND_FOR_FP_CONVERTS. + (TARGET_SPLIT_MEM_OPND_FOR_FP_CONVERTS): New define. + + * config/i386/i386.c (initial_ix86_tune_features) + : Initialize. + (ix86_lea_outperforms): Handle Silvermont tuning. + (ix86_avoid_lea_for_add): Add new argument to ix86_lea_outperforms + call. + (ix86_use_lea_for_mov): Likewise. + (ix86_avoid_lea_for_addr): Likewise. + (ix86_lea_for_add_ok): Likewise. + (exact_dependency_1): New function. + (exact_store_load_dependency): Likewise. + (ix86_adjust_cost): Handle Silvermont tuning. + (do_reoder_for_imul): Likewise. + (swap_top_of_ready_list): New function. + (ix86_sched_reorder): Changed to handle Silvermont tuning. + + * config/i386/i386.md (peepholes that split memory operand in fp + converts): New. + +2013-05-31 Marcus Shawcroft + + * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): + Remove un-necessary braces. + +2013-05-31 Marcus Shawcroft + + * config/aarch64/aarch64.c (aarch64_classify_symbol): + Use SYMBOL_TINY_ABSOLUTE for AARCH64_CMODEL_TINY_PIC. + +2013-05-31 Tobias Burnus + + PR middle-end/57073 + * tree-ssa-math-opts.c (execute_cse_sincos): Move check further up. + +2013-05-31 Kyrylo Tkachov + + PR target/56315 + * config/arm/arm.c (const_ok_for_dimode_op): Handle IOR. + * config/arm/arm.md (*iordi3_insn): Change to insn_and_split. + * config/arm/neon.md (iordi3_neon): Remove. + (neon_vorr): Generate iordi3 instead of iordi3_neon. + * config/arm/predicates.md (imm_for_neon_logic_operand): + Move to earlier in the file. + (neon_logic_op2): Likewise. + (arm_iordi_operand_neon): New predicate. + +2013-05-31 Richard Biener + + PR tree-optimization/57478 + PR tree-optimization/57453 + * tree-vect-slp.c (vect_bb_slp_scalar_cost): Uses in PHI nodes + are life as well. + +2013-05-31 Kaushik Phatak + + * config/rl78/rl78.md (mulqi3,mulhi3): New define_expands. + (*mulqi3_rl78,*mulhi3_rl78,*mulhi3_g13): New define_insns. + +2013-05-30 Tobias Burnus + Thomas Koenig + + PR middle-end/57073 + * tree-ssa-math-opts.c (execute_cse_sincos): Optimize + powi (-1.0, k) to (k & 1) ? -1.0 : 1.0. + +2013-05-30 Steven Bosscher + + * rtlanal.c (tablejump_p): Expect table and label to be adjacent. + +2013-05-30 Vladimir Makarov + + * target.def (register_usage_leveling_p): New hook. + * targhooks.c (default_register_usage_leveling_p): New. + * targhooks.h (default_register_usage_leveling_p): New prototype. + * lra-assigns.c (register_usage_leveling_p): Use the hook. + * doc/tm.texi.in (TARGET_REGISTER_USAGE_LEVELING_P): New hook. + * doc/tm.texi: Update. + * config/i386/i386.c (TARGET_REGISTER_USAGE_LEVELING_P): Define. + +2013-05-30 Ian Bolton + + * config/aarch64/aarch64.md (insv): New define_expand. + (*insv_reg): New define_insn. + +2013-05-30 Joern Rennecke + + PR rtl-optimization/57439 + * postreload.c (move2add_valid_value_p): Check that we have + a zero subreg_regno_offset when accessing the register in + the requested mode. + +2013-05-30 Yuri Rumyantsev + Igor Zamyatin + + Silvermont (SLM) architecture pipeline model, tuning and + insn selection. + * config.gcc: Add slm config options and target. + + * config/i386/slm.md: New. + + * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe. + + * config/i386/i386-c.c (ix86_target_macros_internal): New case + PROCESSOR_SLM. + (ix86_target_macros_internal): Likewise. + + * config/i386/i386.c (slm_cost): New cost. + (m_SLM): New macro flag. + (initial_ix86_tune_features): Set m_SLM. + (x86_accumulate_outgoing_args): Likewise. + (x86_arch_always_fancy_math_387): Likewise. + (processor_target_table): Add slm cost. + (cpu_names): Add slm cpu name. + (x86_option_override_internal): Set SLM ISA. + (ix86_issue_rate): New case PROCESSOR_SLM. + (ia32_multipass_dfa_lookahead): Likewise. + (fold_builtin_cpu): Add slm. + + * config/i386/i386.h (TARGET_SLM): New target macro. + (target_cpu_default): Add TARGET_CPU_DEFAULT_slm. + (processor_type): Add PROCESSOR_SLM. + + * config/i386/i386.md (cpu): Add new value "slm". + (slm.md): Include slm.md. + +2013-05-30 Bernd Schmidt + Zhenqiang Chen + + * config/arm/arm-protos.h: Add and update function protos. + * config/arm/arm.c (use_simple_return_p): New added. + (thumb2_expand_return): Check simple_return flag. + * config/arm/arm.md: Add simple_return and conditional simple_return. + * config/arm/iterators.md: Add iterator for return and simple_return. + +2013-05-30 Zhenqiang Chen + + * config/arm/arm.c (arm_add_cfa_adjust_cfa_note): New added. + (arm_emit_multi_reg_pop): Add REG_CFA_ADJUST_CFA notes. + (arm_emit_vfp_multi_reg_pop): Likewise. + (thumb2_emit_ldrd_pop): Likewise. + (arm_expand_epilogue): Add misc REG_CFA notes. + (arm_unwind_emit): Skip REG_CFA_ADJUST_CFA and REG_CFA_RESTORE. + +2013-05-29 Lawrence Crowl + + * config/arm/t-arm: Update for below. + + * config/arm/arm.c (arm_libcall_uses_aapcs_base::libcall_htab): + Change type to hash_table. Update dependent calls and types. + + * config/i386/t-cygming: Update for below. + + * config/i386/t-interix: Update for below. + + * config/i386/winnt.c (i386_pe_section_type_flags::htab): + Change type to hash_table. Update dependent calls and types. + (i386_find_on_wrapper_list::wrappers): Likewise. + + * config/ia64/t-ia64: Update for below. + + * config/ia64/ia64.c (bundle_state_table): + Change type to hash_table. Update dependent calls and types. + + * config/mips/mips.c (mips_reorg_process_insns::htab): + Change type to hash_table. Update dependent calls and types. + + * config/sol2.c (solaris_comdat_htab): + Change type to hash_table. Update dependent calls and types. + + * config/t-sol2: Update for above. + +2013-05-29 Teresa Johnson + + * passes.c (dump_passes): Use FOR_EACH_FUNCTION since + functions are not yet marked as defined. + +2013-05-29 Michael Meissner + Pat Haugen + Peter Bergner + + * config/rs6000/vector.md (VEC_I): Add support for new power8 V2DI + instructions. + (VEC_A): Likewise. + (VEC_C): Likewise. + (vrotl3): Likewise. + (vashl3): Likewise. + (vlshr3): Likewise. + (vashr3): Likewise. + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + support for power8 V2DI builtins. + + * config/rs6000/rs6000-builtin.def (abs_v2di): Add support for + power8 V2DI builtins. + (vupkhsw): Likewise. + (vupklsw): Likewise. + (vaddudm): Likewise. + (vminsd): Likewise. + (vmaxsd): Likewise. + (vminud): Likewise. + (vmaxud): Likewise. + (vpkudum): Likewise. + (vpksdss): Likewise. + (vpkudus): Likewise. + (vpksdus): Likewise. + (vrld): Likewise. + (vsld): Likewise. + (vsrd): Likewise. + (vsrad): Likewise. + (vsubudm): Likewise. + (vcmpequd): Likewise. + (vcmpgtsd): Likewise. + (vcmpgtud): Likewise. + (vcmpequd_p): Likewise. + (vcmpgtsd_p): Likewise. + (vcmpgtud_p): Likewise. + (vupkhsw): Likewise. + (vupklsw): Likewise. + (vaddudm): Likewise. + (vmaxsd): Likewise. + (vmaxud): Likewise. + (vminsd): Likewise. + (vminud): Likewise. + (vpksdss): Likewise. + (vpksdus): Likewise. + (vpkudum): Likewise. + (vpkudus): Likewise. + (vrld): Likewise. + (vsld): Likewise. + (vsrad): Likewise. + (vsrd): Likewise. + (vsubudm): Likewise. + + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add + support for power8 V2DI instructions. + + * config/rs6000/altivec.md (UNSPEC_VPKUHUM): Add support for + power8 V2DI instructions. Combine pack and unpack insns to use an + iterator for each mode. Check whether a particular mode supports + Altivec instructions instead of just checking TARGET_ALTIVEC. + (UNSPEC_VPKUWUM): Likewise. + (UNSPEC_VPKSHSS): Likewise. + (UNSPEC_VPKSWSS): Likewise. + (UNSPEC_VPKUHUS): Likewise. + (UNSPEC_VPKSHUS): Likewise. + (UNSPEC_VPKUWUS): Likewise. + (UNSPEC_VPKSWUS): Likewise. + (UNSPEC_VPACK_SIGN_SIGN_SAT): Likewise. + (UNSPEC_VPACK_SIGN_UNS_SAT): Likewise. + (UNSPEC_VPACK_UNS_UNS_SAT): Likewise. + (UNSPEC_VPACK_UNS_UNS_MOD): Likewise. + (UNSPEC_VUPKHSB): Likewise. + (UNSPEC_VUNPACK_HI_SIGN): Likewise. + (UNSPEC_VUNPACK_LO_SIGN): Likewise. + (UNSPEC_VUPKHSH): Likewise. + (UNSPEC_VUPKLSB): Likewise. + (UNSPEC_VUPKLSH): Likewise. + (VI2): Likewise. + (VI_char): Likewise. + (VI_scalar): Likewise. + (VI_unit): Likewise. + (VP): Likewise. + (VP_small): Likewise. + (VP_small_lc): Likewise. + (VU_char): Likewise. + (add3): Likewise. + (altivec_vaddcuw): Likewise. + (altivec_vaddus): Likewise. + (altivec_vaddss): Likewise. + (sub3): Likewise. + (altivec_vsubcuw): Likewise. + (altivec_vsubus): Likewise. + (altivec_vsubss): Likewise. + (altivec_vavgs): Likewise. + (altivec_vcmpbfp): Likewise. + (altivec_eq): Likewise. + (altivec_gt): Likewise. + (altivec_gtu): Likewise. + (umax3): Likewise. + (smax3): Likewise. + (umin3): Likewise. + (smin3): Likewise. + (altivec_vpkuhum): Likewise. + (altivec_vpkuwum): Likewise. + (altivec_vpkshss): Likewise. + (altivec_vpkswss): Likewise. + (altivec_vpkuhus): Likewise. + (altivec_vpkshus): Likewise. + (altivec_vpkuwus): Likewise. + (altivec_vpkswus): Likewise. + (altivec_vpksss): Likewise. + (altivec_vpksus): Likewise. + (altivec_vpkuus): Likewise. + (altivec_vpkuum): Likewise. + (altivec_vrl): Likewise. + (altivec_vsl): Likewise. + (altivec_vsr): Likewise. + (altivec_vsra): Likewise. + (altivec_vsldoi_): Likewise. + (altivec_vupkhsb): Likewise. + (altivec_vupkhs): Likewise. + (altivec_vupkls): Likewise. + (altivec_vupkhsh): Likewise. + (altivec_vupklsb): Likewise. + (altivec_vupklsh): Likewise. + (altivec_vcmpequ_p): Likewise. + (altivec_vcmpgts_p): Likewise. + (altivec_vcmpgtu_p): Likewise. + (abs2): Likewise. + (vec_unpacks_hi_v16qi): Likewise. + (vec_unpacks_hi_v8hi): Likewise. + (vec_unpacks_lo_v16qi): Likewise. + (vec_unpacks_hi_): Likewise. + (vec_unpacks_lo_v8hi): Likewise. + (vec_unpacks_lo_): Likewise. + (vec_pack_trunc_v8h): Likewise. + (vec_pack_trunc_v4si): Likewise. + (vec_pack_trunc_): Likewise. + + * config/rs6000/altivec.h (vec_vaddudm): Add defines for power8 + V2DI builtins. + (vec_vmaxsd): Likewise. + (vec_vmaxud): Likewise. + (vec_vminsd): Likewise. + (vec_vminud): Likewise. + (vec_vpksdss): Likewise. + (vec_vpksdus): Likewise. + (vec_vpkudum): Likewise. + (vec_vpkudus): Likewise. + (vec_vrld): Likewise. + (vec_vsld): Likewise. + (vec_vsrad): Likewise. + (vec_vsrd): Likewise. + (vec_vsubudm): Likewise. + (vec_vupkhsw): Likewise. + (vec_vupklsw): Likewise. + +2013-05-29 Jan Hubicka + + * cgraph.h (symtab_node_base): Add definition, alias and analyzed + flags; reorder rest of fields in more consistent way. + (varpool_node): Remove analyzed, finalized and alias. + (cgraph_ndoe): Likewise. + (symtab_alias_ultimate_target): New function. + (cgraph_function_node): Move offline. + (cgraph_reset_node): Declare. + (cgraph_comdat_can_be_unshared_p): Remove. + (varpool_remove_initializer): Declare. + (varpool_first_defined_variable, varpool_next_defined_variable + cgraph_first_defined_function, cgraph_next_defined_function): Update. + (cgraph_function_with_gimple_body_p): Update. + (varpool_all_refs_explicit_p): Update. + (symtab_alias_target): New function. + (cgraph_alias_aliased_node, varpool_alias_aliased_node): Rename to ... + (cgraph_alias_target, varpool_alias_target): .. this one; simplify. + (cgraph_function_or_thunk_node): Simplify using + symtab_alias_ultimate_target. + (varpool_variable_node): Likewise. + * cgraph.c (cgraph_create_function_alias): Update. + (cgraph_add_thunk): Update. + (cgraph_remove_node): Update. + (dump_cgraph_node): Do not dump removed flags. + (cgraph_function_body_availability): Update. + (cgraph_propagate_frequency): Update. + (verify_cgraph_node): Check sanity of local flag. + (cgraph_function_node): Move here from cgraph.h; revamp for + cgraph_function_or_thunk_node. + * lto-symtab.c (lto_varpool_replace_node): Update. + (lto_symtab_resolve_can_prevail_p): Update. + (lto_symtab_merge_cgraph_nodes): Update. + * ipa-cp.c (determine_versionability, initialize_node_lattices, + propagate_constants_accross_call, devirtualization_time_bonus, + ipcp_propagate_stage): Update. + * tree-emutls.c (create_emultls_var, ipa_lower_emutls): Update. + * ipa-inline-transform.c (clone_inlined_nodes, + preserve_function_body_p): Update. + * ipa-reference.c (propagate): Update. + (write_node_summary_p): Update. + * toplev.c (wrapup_global_declaration_2): Update. + * cgraphunit.c (cgraph_analyze_function): Rename to ... + (analyze_function) ... this one. + (cgraph_process_new_functions): Update. + (cgraph_reset_node): Export. + (cgraph_finalize_function): Update. + (cgraph_add_new_function): Update. + (process_function_and_variable_attributes): Update. + (varpool_finalize_decl): Update. + (symbol_finalized): Remove. + (symbol_finalized_and_needed): Rename to ... + (symbol_defined_and_needed): ... update. + (cgraph_analyze_functions): Update. + (handle_alias_pairs): Update. + (mark_functions_to_output): Update. + (assemble_thunk): Update. + (output_in_order): Update. + (output_weakrefs): Update. + (finalize_compilation_unit): Update. + * lto-cgraph.c (reachable_from_other_partition_p, lto_output_node, + lto_output_varpool_node, compute_ltrans_boundary, input_overwrite_node, + input_node, input_varpool_node): Update. + * dbxout.c (dbxout_expand_expr): Update. + * cgraphclones.c (cgraph_clone_node): Update. + (cgraph_copy_node_for_versioning): Update. + (cgraph_materialize_clone): Update. + (cgraph_materialize_all_clones): Update. + * ipa-pure-const.c (analyze_function, pure_const_write_summary, + propagate_pure_const, propagate_nothrow): Update. + * lto-streamer-out.c (lto_output, write_symbol): Update. + * ipa-utils.c (ipa_reverse_postorder): Update. + * ipa-inline.c (can_inline_edge_p): Update. + (update_caller_keys, ipa_inline): Update. + * dwarf2out.c (reference_to_unused, + premark_types_used_by_global_vars_helper): Update. + * tree-eh.c (tree_could_trap_p): Update. + * ipa-split.c (consider_split, execute_split_functions): Update. + * ipa.c (cgraph_non_local_node_p_1, cgraph_local_node_p, + has_addr_references_p): Update; move ahead in file for better + readability. + (process_references): Simplify. + (symtab_remove_unreachable_nodes): Update; cleanup way function/var + bodies are removed. + (cgraph_comdat_can_be_unshared_p): Make static. + (cgraph_externally_visible_p): Update. + (varpool_externally_visible_p): Update. + (function_and_variable_visibility): Update. + * trans-mem.c (get_cg_data, ipa_tm_mayenterirr_function, + ipa_tm_mark_force_output_node): Update. + * ipa-inline-analysis.c (dump_inline_summary, initialize_inline_failed, + estimate_edge_devirt_benefit, inline_generate_summary, + inline_write_summary): Update. + * gimple-fold.c (can_refer_decl_in_current_unit_p): Update. + * ipa-prop.c (ipa_compute_jump_functions): Update. + (ipa_print_node_params, ipa_prop_read_section, + ipa_update_after_lto_read, read_replacements_section): Update. + * varasm.c (mark_decl_referenced): Update. + (assemble_alias, dump_tm_clone_pairs): Update. + * tree-inline.c (copy_bb): Update. + (estimate_num_insns, optimize_inline_calls, tree_function_versioning): + Update. + * symtab.c (dump_symtab_base): Print new flags. + (verify_symtab_base): Verify new flags. + (symtab_alias_ultimate_target): New function. + * tree-ssa-structalias.c (get_constraint_for_ssa_var, + create_variable_info_for, associate_varinfo_to_alias, ipa_pta_execute): + Update. + * passes.c (ipa_write_summaries, ipa_write_optimization_summaries): + Update. + * i386.c (ix86_get_function_versions_dispatcher, + ix86_generate_version_dispatcher_body): Update. + (fold_builtin_cpu): Use varpool_add_new_variable. + * varpool.c (varpool_remove_initializer): Break out from ... + (varpool_remove_node): ... this one. + (dump_varpool_node, varpool_node_for_asm, + cgraph_variable_initializer_availability, varpool_analyze_node, + varpool_assemble_decl, varpool_remove_unreferenced_decls, + varpool_finalize_named_section_flags, varpool_create_variable_alias): + Update. + +2013-05-29 Jan Hubicka + + * passes.c (init_optimization_passes): Move OMP expansion into lowering. + +2013-05-29 Easwaran Raman + + PR tree-optimization/57442 + * tree-ssa-reassoc.c (appears_later_in_bb): Return correct value + when control exits the main loop. + +2013-05-29 Sandeep Kumar Singh + + * rx/rx.h (TARGET_CPU_CPP_BUILTINS): Add macros for RX100, RX200, + and RX600. + * rx/rx.opt: Add macro for rx100 with string rx100 and value RX100. + * rx/rx-opts.h (rx_cpu_types): Add new cpu type rx100. + * rx/t-rx: Add rx100 under multi library matches option for nofpu + option. + +2013-05-29 Bill Schmidt + + PR tree-optimization/57441 + * gimple-ssa-strength-reduction.c (analyze_candidates_and_replace): + Don't limit size of incr_vec to number of candidates. + +2013-05-29 Steve Ellcey + + * config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add micromips + and mips16 directories. + * config/mips/t-mti-linux (MULTILIB_OPTIONS): Add micromips and mips16. + (MULTILIB_DIRNAMES): Ditto. + (MULTILIB_EXCEPTIONS): Add new exceptions. + * config/mips/t-mti-elf (MULTILIB_OPTIONS): Add micromips. + (MULTILIB_DIRNAMES): Ditto. + (MULTILIB_EXCEPTIONS): Add new exceptions. + +2012-05-29 Chris Schlumberger-Socha + Marcus Shawcroft + + * config/aarch64/aarch64-protos.h (aarch64_symbol_type): Define + SYMBOL_TINY_ABSOLUTE. + * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Handle + SYMBOL_TINY_ABSOLUTE. + (aarch64_expand_mov_immediate): Likewise. + (aarch64_classify_symbol): Likewise. + (aarch64_mov_operand_p): Remove ATTRIBUTE_UNUSED. + Permit SYMBOL_TINY_ABSOLUTE. + * config/aarch64/predicates.md (aarch64_mov_operand): Permit CONST. + +2013-05-29 Chris Schlumberger-Socha + Marcus Shawcroft + + * config/aarch64/aarch64.c (aarch64_classify_symbol): Remove comment. + Refactor if/switch. Replace gcc_assert with if. + +2013-05-29 Ganesh Gopalasubramanian + + * config/i386/i386.c (initial_ix86_tune_features): Enable + FP Reassociation for AMD bdver1 and bdver2. + +2013-05-29 Martin Jambor + + * tree-cfg.c (verify_expr): Verify that BIT_FIELD_REF, REALPART_EXPR + and IMAGPART_EXPR do not occur within other handled_components. + +2013-05-29 Richard Biener + + * tree-vect-slp.c (vect_bb_slp_scalar_cost): Guard vinfo + access on whether the use is in the BB we currently try to + vectorize. + (vect_bb_vectorization_profitable_p): Pass the BB we currently + vectorize to vect_bb_slp_scalar_cost. + +2013-05-29 Richard Biener + + * tree-vect-slp.c (vect_bb_slp_scalar_cost): New function + computing scalar cost offsetted by stmts that are kept live + by scalar uses. + (vect_bb_vectorization_profitable_p): Use vect_bb_slp_scalar_cost + for computation of scalar cost. + +2013-05-28 Steve Ellcey + + * config/mips/mips-cpus.def (mips32r2): Change processor type. + +2013-05-28 Balaji V. Iyer + + * doc/extend.texi (C Extensions): Added documentation about Cilk Plus + array notation built-in reduction functions. + * doc/passes.texi (Passes): Added documentation about changes done + for Cilk Plus. + * doc/invoke.texi (C Dialect Options): Added documentation about + the -fcilkplus flag. + * Makefile.in (C_COMMON_OBJS): Added c-family/array-notation-common.o. + (BUILTINS_DEF): Depend on cilkplus.def. + * builtins.def: Include cilkplus.def. Define DEF_CILKPLUS_BUILTIN. + * builtin-types.def: Define BT_FN_INT_PTR_PTR_PTR. + * cilkplus.def: New file. + +2013-05-28 Joern Rennecke + + PR rtl-optimization/57439 + * postreload.c (move2add_use_add2_insn): Use gen_lowpart_common. + +2013-05-28 Easwaran Raman + + PR tree-optimization/57337 + * tree-ssa-reassoc.c (appears_later_in_bb): New function. + (find_insert_point): Correctly identify the insertion point + when two statements with the same UID is compared. + +2013-05-28 Richard Biener + + PR tree-optimization/56787 + * tree-vect-data-refs.c (vect_analyze_data_refs): Drop clobbers + from the list of data references. + * tree-vect-loop.c (vect_determine_vectorization_factor): Skip + clobbers. + (vect_analyze_loop_operations): Likewise. + (vect_transform_loop): Remove clobbers. + +2013-05-28 Martin Jambor + + * tree-cfg.c (verify_expr): Verify that BIT_FIELD_REFs, IMAGPART_EXPRs + and REALPART_EXPRs have scalar type. + +2013-05-28 Richard Biener + + PR tree-optimization/57411 + * tree-ssa-copy.c (may_propagate_copy): Cannot propagate + virtual operands. + * tree-ssa-dom.c (eliminate_const_or_copy): Special-case + virtual operand propagation. + +2013-05-28 Eric Botcazou + + * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): Use %g0 as + destination register for bmasksi_vis. + (vector_init_bshuffle): Likewise. + * config/sparc/sparc.md (vec_perm_constv8qi): Likewise. + +2013-05-28 Eric Botcazou + + * doc/invoke.texi (SPARC Options): Document -mfix-ut699. + * builtins.c (expand_builtin_mathfn) : Try to widen the + mode if the instruction isn't available in the original mode. + * config/sparc/sparc.opt (mfix-ut699): New option. + * config/sparc/sparc.md (muldf3_extend): Disable if -mfix-ut699. + (divdf3): Turn into expander. + (divdf3_nofix): New insn. + (divdf3_fix): Likewise. + (divsf3): Disable if -mfix-ut699. + (sqrtdf2): Turn into expander. + (sqrtdf2_nofix): New insn. + (sqrtdf2_fix): Likewise. + (sqrtsf2): Disable if -mfix-ut699. + +2013-05-27 Richard Biener + + PR middle-end/57412 + * omp-low.c (expand_omp_atomic_pipeline): Use the correct latch + block for the new loop. + +2013-05-27 Richard Biener + + PR tree-optimization/57343 + * tree-ssa-loop-niter.c (number_of_iterations_ne_max): Do not + use multiple_of_p if not TYPE_OVERFLOW_UNDEFINED. + (number_of_iterations_cond): Do not build the folded tree. + +2013-05-27 Richard Biener + + Revert + PR middle-end/57381 + * fold-const.c (operand_equal_p): Compare FIELD_DECLs with + OEP_CONSTANT_ADDRESS_OF retained. + + PR tree-optimization/57417 + * tree-ssa-sccvn.c (vn_reference_fold_indirect): Fix test + for unchanged base. + (set_ssa_val_to): Compare addresses using + get_addr_base_and_unit_offset. + +2013-05-27 Joern Rennecke + + PR rtl-optimization/56833 + * postreload.c (move2add_record_mode): New function. + (move2add_record_sym_value, move2add_valid_value_p): Likewise. + (move2add_use_add2_insn): Use move2add_record_sym_value. + (move2add_use_add3_insn): Likewise. + (reload_cse_move2add): Use move2add_valid_value_p and + move2add_record_mode. Invalidate call-clobbered and REG_INC + affected regs by setting reg_mode to VOIDmode. + (move2add_note_store): Don't pretend the inside of a SUBREG is + the actual destination. Invalidate single/leading registers by + setting reg_mode to VOIDmode. + Use move2add_record_sym_value, move2add_valid_value_p and + move2add_record_mode. + +2013-05-27 Richard Biener + + PR tree-optimization/57396 + * tree-affine.c (double_int_constant_multiple_p): Properly + return false for val == 0 and div != 0. + +2013-05-25 Richard Sandiford + + * config/mips/mips.h: Use #elif in preprocessor conditions. + +2013-05-25 Richard Sandiford + + PR target/53916 + * config/mips/constraints.md (kl): New constraint. + * config/mips/mips.md (divmod4, udivmod4): Delete. + (divmod4_internal): Rename to divmod4. Use "kl" as the + constraint for operand 0. Split after CSE for MIPS16. Emit a move + from LO for MIPS16. + (udivmod4_internal): Likewise udivmod4. + +2013-05-25 Richard Sandiford + + PR target/55777 + * config/mips/mips.c (mips_can_inline_p): New function. + (TARGET_CAN_INLINE_P): Define. + +2013-05-25 Steven Bosscher + + * sched-int.h (ds_t, dw_t): Make unsigned int. + Fix documentation that describes how all the ds_t bits are used. + Reserve the last bit for delayed-branch scheduling. + (BITS_PER_DEP_STATUS): Move to ds_t typedef. + (BITS_PER_DEP_WEAK): Fix definition and documentation. + (gen_dep_weak_1): Remove prototype. + * sched-deps.c (get_dep_weak_1): Make static. + * target.def (speculate_insn, needs_block_p, gen_spec_check, + get_insn_spec_ds, get_insn_checked_ds): Adjust hook prototypes. + * doc/tm.texi: Regenerate. + * config/ia64/ia64.c (ia64_needs_block_p): Update prototype. + +2013-05-24 Steven Bosscher + + PR debug/56950 + * haifa-sched.c (sched_extend_bb): Ignore DEBUG_INSNs. + +2013-05-24 Nathan Sidwell + Sandra Loosemore + + * config.gcc (powerpc-*): Allow native for with-cpu. + +2013-05-24 Jeff Law + + PR tree-optimization/57124 + * tree-vrp.c (simplify_cond_using_ranges): Only simplify a + conversion feeding a condition if the range has an overflow + if -fstrict-overflow. Add warnings for when we do make the + transformation. + +2013-05-24 Dehao Chen + + * tree-cfg.c (locus_discrim_map): Fix the typo. + (locus_discrim_hasher): Likewise. + (locus_discrim_hasher::hash): Likewise. + (locus_discrim_hasher::equal): Likewise. + +2013-05-24 Martin Jambor + + PR tree-optimization/57294 + * cgraph.h (ipa_record_stmt_references): Declare. + * cgraphbuild.c (ipa_record_stmt_references): New function. + (build_cgraph_edges): Use ipa_record_stmt_references. + (rebuild_cgraph_edges): Likewise. + (cgraph_rebuild_references): Likewise. + * ipa-prop.c (ipa_modify_call_arguments): Discard references + associated with the old statement and build references from the + newly built statements. + * ipa-ref.c (ipa_remove_stmt_references): New function. + * ipa-ref.h (ipa_remove_stmt_references): Declare. + +2013-05-24 Vladimir Makarov + + * lra-constraints.c (emit_spill_move): Use smaller mode for + mem-mem moves. + (check_and_process_move): Consider mem-reg moves for secondary + too. + (curr_insn_transform): Don't lose insns emitted before for + secondary memory moves. + (inherit_in_ebb): Mark defined reg. Add usage only if it is not a + reg set up in the current insn. + +2013-05-24 Dehao Chen + + * tree-cfg.c (locus_descrim_hasher::hash): Change discriminator + hash function. + (locus_descrim_hasher::equal): Likewise. + (build_gimple_cfg): New discriminator assignment algorithm. + (make_edges): Likewise. + (next_discriminator_for_locus): Likewise. + (same_line_p): Likewise. + (assign_discriminators): Likewise. + (make_cond_expr_edges): Likewise. + (make_gimple_switch_edges): Likewise. + (make_goto_expr_edges): Likewise. + (make_gimple_asm_edges): Likewise. + +2013-05-24 Ian Bolton + + * config/aarch64/aarch64.c (aarch64_print_operand): Change the + X format specifier to only display bottom 16 bits. + * config/aarch64/aarch64.md (insv_imm): Allow any size of + immediate to match for operand 2, since it will be masked. + +2013-05-24 Richard Biener + + PR tree-optimization/57287 + * tree-ssa-uninit.c (compute_uninit_opnds_pos): Disregard + all SSA names that occur in abnormal PHIs. + +2013-05-24 Alexander Ivchenko + + PR tree-ssa/57385 + * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Check + that index is not negative. + +2013-05-24 Eric Botcazou + + PR rtl-optimization/55177 + * simplify-rtx.c (simplify_unary_operation_1) : Deal with BSWAP. + (simplify_byte_swapping_operation): New. + (simplify_binary_operation_1): Call it for AND, IOR and XOR. + (simplify_relational_operation_1): Deal with BSWAP. + +2013-05-23 Richard Henderson + + PR target/56742 + * config/i386/i386.c (ix86_seh_fixup_eh_fallthru): New. + (ix86_reorg): Call it. + +2013-05-23 Uros Bizjak + + PR target/57379 + * config/alpha/alpha.md (unspec): Add UNSPEC_XFLT_COMPARE. + * config/alpha/alpha.c (alpha_emit_xfloating_compare): Construct + REG_EQUAL note as UNSPEC_XFLT_COMPARE unspec. + +2013-05-23 Christian Bruel + + PR debug/57351 + * config/arm/arm.c (arm_dwarf_register_span): Do not use dbx number. + +2013-05-23 Chris Schlumberger-Socha + Marcus Shawcroft + + * config/aarch64/aarch64.md (*movdi_aarch64): Replace Usa with S. + * config/aarch64/constraints.md (Usa): Remove. + * doc/md.texi (AArch64 Usa): Remove. + +2013-05-23 Chris Schlumberger-Socha + Marcus Shawcroft + + * config/aarch64/aarch64-protos.h (aarch64_mov_operand_p): Define. + * config/aarch64/aarch64.c (aarch64_mov_operand_p): Define. + * config/aarch64/predicates.md (aarch64_const_address): Remove. + (aarch64_mov_operand): Use aarch64_mov_operand_p. + +2013-05-23 Vidya Praveen + + * config/aarch64/aarch64-simd.md (clzv4si2): Support for CLZ + instruction (AdvSIMD). + * config/aarch64/aarch64-builtins.c + (aarch64_builtin_vectorized_function): Handler for BUILT_IN_CLZ. + * config/aarch64/aarch-simd-builtins.def: Entry for CLZ. + +2013-05-23 Martin Jambor + + PR middle-end/57347 + * tree.h (contains_bitfld_component_ref_p): Declare. + * tree-sra.c (contains_bitfld_comp_ref_p): Move... + * tree.c (contains_bitfld_component_ref_p): ...here. Adjust its + caller. + * ipa-prop.c (determine_known_aggregate_parts): Check that LHS does + not access a bit-field. Assert all final offsets are byte-aligned. + +2013-05-23 Richard Biener + + PR tree-optimization/57380 + * tree-ssa-phiprop.c (propagate_with_phi): Do not require at + least one invariant or re-used load. + * passes.c (init_optimization_passes): Move pass_phiprop before + pass_forwprop. + +2013-05-23 James Greenhalgh + + * config/aarch64/aarch64-simd.md + (aarch64_cmdi): Add clobber of CC_REGNUM to unsplit pattern. + +2013-05-23 Richard Biener + + PR middle-end/57381 + * fold-const.c (operand_equal_p): Compare FIELD_DECLs with + OEP_CONSTANT_ADDRESS_OF retained. + +2013-05-23 Jakub Jelinek + + PR middle-end/57344 + * expmed.c (store_split_bit_field): If op0 is a REG or SUBREG of a REG, + don't lower unit. Handle unit not being always BITS_PER_WORD. + +2013-05-23 Richard Biener + + PR rtl-optimization/57341 + * ira.c (validate_equiv_mem_from_store): Use anti_dependence + instead of true_dependence. + +2013-05-22 David Malcolm + + * bb-reorder.c (branch_threshold): Make const. + (exec_threshold): Ditto. + +2013-05-22 Michael Meissner + Pat Haugen + Peter Bergner + + * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions): Add + documentation for the power8 crypto builtins. + + * config/rs6000/t-rs6000 (MD_INCLUDES): Add crypto.md. + + * config/rs6000/rs6000-builtin.def (BU_P8V_AV_1): Add support + macros for defining power8 builtin functions. + (BU_P8V_AV_2): Likewise. + (BU_P8V_AV_P): Likewise. + (BU_P8V_VSX_1): Likewise. + (BU_P8V_OVERLOAD_1): Likewise. + (BU_P8V_OVERLOAD_2): Likewise. + (BU_CRYPTO_1): Likewise. + (BU_CRYPTO_2): Likewise. + (BU_CRYPTO_3): Likewise. + (BU_CRYPTO_OVERLOAD_1): Likewise. + (BU_CRYPTO_OVERLOAD_2): Likewise. + (XSCVSPDP): Fix typo, point to the correct instruction. + (VCIPHER): Add power8 crypto builtins. + (VCIPHERLAST): Likewise. + (VNCIPHER): Likewise. + (VNCIPHERLAST): Likewise. + (VPMSUMB): Likewise. + (VPMSUMH): Likewise. + (VPMSUMW): Likewise. + (VPERMXOR_V2DI): Likewise. + (VPERMXOR_V4SI: Likewise. + (VPERMXOR_V8HI: Likewise. + (VPERMXOR_V16QI: Likewise. + (VSHASIGMAW): Likewise. + (VSHASIGMAD): Likewise. + (VPMSUM): Likewise. + (VPERMXOR): Likewise. + (VSHASIGMA): Likewise. + + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define + __CRYPTO__ if the crypto instructions are available. + (altivec_overloaded_builtins): Add support for overloaded power8 + builtins. + + * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add + support for power8 crypto builtins. + (builtin_function_type): Likewise. + (altivec_init_builtins): Add support for builtins that take vector + long long (V2DI) arguments. + + * config/rs6000/crypto.md: New file, define power8 crypto + instructions. + +2013-05-22 Michael Meissner + Pat Haugen + Peter Bergner + + * doc/invoke.texi (Option Summary): Add power8 options. + (RS/6000 and PowerPC Options): Likewise. + + * doc/md.texi (PowerPC and IBM RS6000 constraints): Update to use + constraints.md instead of rs6000.h. Reorder w* constraints. Add + wm, wn, wr documentation. + + * config/rs6000/constraints.md (wm): New constraint for VSX + registers if direct move instructions are enabled. + (wn): New constraint for no registers. + (wq): New constraint for quad word even GPR registers. + (wr): New constraint if 64-bit instructions are enabled. + (wv): New constraint if power8 vector instructions are enabled. + (wQ): New constraint for quad word memory locations. + + * config/rs6000/predicates.md (const_0_to_15_operand): New + constraint for 0..15 for crypto instructions. + (gpc_reg_operand): If VSX allow registers in VSX registers as well + as GPR and floating point registers. + (int_reg_operand): New predicate to match only GPR registers. + (base_reg_operand): New predicate to match base registers. + (quad_int_reg_operand): New predicate to match even GPR registers + for quad memory operations. + (vsx_reg_or_cint_operand): New predicate to allow vector logical + operations in both GPR and VSX registers. + (quad_memory_operand): New predicate for quad memory operations. + (reg_or_indexed_operand): New predicate for direct move support. + + * config/rs6000/rs6000-cpus.def (ISA_2_5_MASKS_EMBEDDED): + Inherit from ISA_2_4_MASKS, not ISA_2_2_MASKS. + (ISA_2_7_MASKS_SERVER): New mask for ISA 2.07 (i.e. power8). + (POWERPC_MASKS): Add power8 options. + (power8 cpu): Use ISA_2_7_MASKS_SERVER instead of specifying the + various options. + + * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): + Define _ARCH_PWR8 and __POWER8_VECTOR__ for power8. + + * config/rs6000/rs6000.opt (-mvsx-timode): Add documentation. + (-mpower8-fusion): New power8 options. + (-mpower8-fusion-sign): Likewise. + (-mpower8-vector): Likewise. + (-mcrypto): Likewise. + (-mdirect-move): Likewise. + (-mquad-memory): Likewise. + + * config/rs6000/rs6000.c (power8_cost): Initial definition for power8. + (rs6000_hard_regno_mode_ok): Make PTImode only match even GPR + registers. + (rs6000_debug_reg_print): Print the base register class if -mdebug=reg. + (rs6000_debug_vector_unit): Add p8_vector. + (rs6000_debug_reg_global): If -mdebug=reg, print power8 constraint + definitions. Also print fusion state. + (rs6000_init_hard_regno_mode_ok): Set up power8 constraints. + (rs6000_builtin_mask_calculate): Add power8 builtin support. + (rs6000_option_override_internal): Add support for power8. + (rs6000_common_init_builtins): Add debugging for skipped builtins + if -mdebug=builtin. + (rs6000_adjust_cost): Add power8 support. + (rs6000_issue_rate): Likewise. + (insn_must_be_first_in_group): Likewise. + (insn_must_be_last_in_group): Likewise. + (force_new_group): Likewise. + (rs6000_register_move_cost): Likewise. + (rs6000_opt_masks): Likewise. + + * config/rs6000/rs6000.h (ASM_CPU_POWER8_SPEC): If we don't have a + power8 capable assembler, default to power7 options. + (TARGET_DIRECT_MOVE): Likewise. + (TARGET_CRYPTO): Likewise. + (TARGET_P8_VECTOR): Likewise. + (VECTOR_UNIT_P8_VECTOR_P): Define power8 vector support. + (VECTOR_UNIT_VSX_OR_P8_VECTOR_P): Likewise. + (VECTOR_MEM_P8_VECTOR_P): Likewise. + (VECTOR_MEM_VSX_OR_P8_VECTOR_P): Likewise. + (VECTOR_MEM_ALTIVEC_OR_VSX_P): Likewise. + (TARGET_XSCVDPSPN): Likewise. + (TARGET_XSCVSPDPN): Likewsie. + (TARGET_SYNC_HI_QI): Likewise. + (TARGET_SYNC_TI): Likewise. + (MASK_CRYPTO): Likewise. + (MASK_DIRECT_MOVE): Likewise. + (MASK_P8_FUSION): Likewise. + (MASK_P8_VECTOR): Likewise. + (REG_ALLOC_ORDER): Move fr13 to be lower in priority so that the TFmode + temporary used by some of the direct move instructions to get two FP + temporary registers does not force creation of a stack frame. + (VLOGICAL_REGNO_P): Allow vector logical operations in GPRs. + (MODES_TIEABLE_P): Move the VSX tests above the Altivec tests so + that any VSX registers are tieable, even if they are also an + Altivec vector mode. + (r6000_reg_class_enum): Add wm, wr, wv constraints. + (RS6000_BTM_P8_VECTOR): Power8 builtin support. + (RS6000_BTM_CRYPTO): Likewise. + (RS6000_BTM_COMMON): Likewise. + + * config/rs6000/rs6000.md (cpu attribute): Add power8. + * config/rs6000/rs6000-opts.h (PROCESSOR_POWER8): Likewise. + (enum rs6000_vector): Add power8 vector support. + +2013-05-22 Ramana Radhakrishnan + + PR target/19599 + PR target/57340 + * config/arm/arm.c (any_sibcall_uses_r3): Rename to .. + (any_sibcall_could_use_r3): this and handle indirect calls. + (arm_get_frame_offsets): Rename use of any_sibcall_uses_r3. + +2013-05-22 Bill Schmidt + + * config/rs6000/rs6000.h (MALLOC_ABI_ALIGNMENT): New #define. + +2013-05-22 Richard Biener + + PR middle-end/57349 + * profile.c (branch_prob): Do not split blocks that are + abnormally receiving from ECF_RETURNS_TWICE functions. + +2013-05-22 Richard Sandiford + + * recog.c (offsettable_address_addr_space_p): Fix calculation of + address mode. Move pointer mode initialization to the same place. + +2013-05-22 Michael Zolotukhin + + * read-rtl.c (copy_rtx_for_iterators): Continue applying iterators + while it has any effect. + +2013-05-21 Easwaran Raman + + PR tree-optimization/57322 + * tree-ssa-reassoc.c (build_and_add_sum): If a BB is empty, set the + UID of the statement added to the BB to be 1. + +2013-05-21 Jakub Jelinek + + PR tree-optimization/57331 + * tree-vrp.c (simplify_cond_using_ranges): Don't optimize comparison + of conversion from pointer type to integral type with integer. + +2013-05-21 Martin Jambor + + PR lto/57289 + * ipa-prop.c (ipa_read_node_info): Process param_used and + controlled_uses in the same order as when writing. + +2013-05-21 Magnus Granberg + + PR plugins/56754 + * Makefile.in (PLUGIN_HEADERS): Add $(TARGET_H). + +2013-05-21 Richard Biener + + PR tree-optimization/57318 + * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Do not + estimate stmts with side-effects as likely eliminated. + +2013-05-21 Richard Biener + + PR tree-optimization/57330 + * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Properly + preserve the call stmts fntype. + +2013-05-21 Richard Biener + + PR tree-optimization/57303 + * tree-ssa-sink.c (statement_sink_location): Improve killing + stmt detection and properly handle self-assignments. + +2013-05-21 Christian Bruel + + * dwarf2out.c (multiple_reg_loc_descriptor): Use dbx_reg_number for + spanning registers. LEAF_REG_REMAP is supported only for contiguous + registers. Set register size out of the PARALLEL loop. + +2013-05-20 Oleg Endo + + PR target/56547 + * config/sh/sh.md (fmasf4): Remove empty constraints strings. + (*fmasf4, *fmasf4_media): New insns. + +2013-05-19 Richard Sandiford + + * config/mips/mips.h (BASE_INSN_LENGTH, NOP_INSN_LENGTH): New macros. + * config/mips/mips.c (mips_symbol_insns, mips_address_insns) + (mips_const_insns, mips_split_const_insns, mips_load_store_insns) + (mips_idiv_insns): Update the comments to say that the returned + instruction counts are in units of BASE_INSN_LENGTH. + (mips_adjust_insn_length): Multiply the mips_load_label_num_insns + by BASE_INSN_LENGTH rather than 4. Add the jump separately, + using 2 rather than 4 as the length of indirect MIPS16 and + microMIPS jumps. Use NOP_INSN_LENGTH rather than 4 as the + length of a NOP. Don't divide MIPS16 lengths by 2. + (mips16_split_long_branches): Assume a branch is long if the + length is greater than 4 rather than 8. + * config/mips/mips.md (length): Give MIPS16 lengths directly, + rather than multiplying them by 2. Multiply instruction counts + by BASE_INSN_LENGTH rather than 4. + (*jump_mips16, tls_get_tp_mips16_) + (*tls_get_tp_mips16_call_): Divide lengths by 2. + +2013-05-19 Richard Sandiford + + * config/mips/mips.md (extended_mips16): Remove branch case. + (length): Remove duplicated extended_mips16 test. + +2013-05-19 Richard Sandiford + + * config/mips/t-sde: Don't build 64-bit microMIPS multilibs. + +2013-05-18 Richard Sandiford + + * recog.h (Recog_data): Rename to... + (recog_data_d): ...this. + (recog_data): Update accordingly. + * recog.c (recog_data): Likewise. + * reload.c (save_recog_data): Likewise. + * config/picochip/picochip.c (picochip_saved_recog_data): Likewise. + (picochip_save_recog_data, picochip_restore_recog_data): Likewise. + +2013-05-17 Julian Brown + + * gcse.c (compute_ld_motion_mems): If a non-simple MEM is + found in a REG_EQUAL note, invalidate it. + +2013-05-17 Easwaran Raman + + * tree-ssa-reassoc.c (find_insert_point): New function. + (insert_stmt_after): Likewise. + (get_def_stmt): Likewise. + (ensure_ops_are_available): Likewise. + (not_dominated_by): Likewise. + (rewrite_expr_tree): Do not move statements beyond what is + necessary. Remove call to swap_ops_for_binary_stmt... + (reassociate_bb): ... and move it here. + (build_and_add_sum): Assign UIDs for new statements. + (linearize_expr): Likewise. + (do_reassoc): Renumber gimple statement UIDs. + +2013-05-17 Jan Hubicka + + * lto-symtab.c (lto_symtab_merge_cgraph_nodes): Resolve cross module + weakrefs. + * cgraph.c (dump_cgraph_node): Do not ice on unresolved alias. + * cgraphunit.c (handle_alias_pairs): Store target of unresolved + weakrefs. + (output_weakrefs): Update. + +2013-05-17 Po-Chun Chang + Martin Jambor + + PR middle-end/57276 + * ipa-cp.c (cgraph_edge_brings_all_agg_vals_for_node): Break when a + value that corresponds to the given aggval is found in values vector. + +2013-05-17 Uros Bizjak + + * config/i386/driver-i386.c (host_detect_local_cpu): Pass mmx, 3dnow, + sse, sse2, sse3, ssse3 and sse4a flags to options. + +2013-05-17 David Malcolm + + * gengtype-state.c: (s_expr_writer): New class, to handle + prettifying of output layout of s-expressions. + (state_writer): New class, to write out gtype.state. + (state_written_type_count): Move this variable into member data of + state_writer. + (s_expr_writer::s_expr_writer): New code: constructor for new class + (state_writer::state_writer(): ditto + (s_expr_writer::write_new_line): New function + (s_expr_writer::write_any_indent): ditto + (s_expr_writer::begin_s_expr): ditto + (s_expr_writer::end_s_expr): ditto + (write_state_fileloc): convert to method of state_writer... + (state_writer:: write_state_fileloc): ...and use methods of + s_expr_writer to write indentation into the gtype.state output file + to visually represent the hierarchical structure of the list + structures + (write_state_fields): ditto, renaming to... + (state_writer::write_state_fields) + (write_state_a_string): ditto, renaming to... + (state_writer::write_state_a_string) + (write_state_string_option): ditto, renaming to... + (state_writer::write_state_string_option) + (write_state_type_option): ditto, renaming to... + (state_writer::write_state_type_option) + (write_state_nested_option): ditto, renaming to... + (state_writer::write_state_nested_option) + (write_state_option): ditto, renaming to... + (state_writer::write_state_option) + (write_state_options): ditto, renaming to... + (state_writer::write_state_options) + (write_state_lang_bitmap): ditto, renaming to... + (state_writer::write_state_lang_bitmap) + (write_state_version): ditto, renaming to... + (state_writer::write_state_version) + (write_state_scalar_type): ditto, renaming to... + (state_writer::write_state_scalar_type) + (write_state_string_type): ditto, renaming to... + (state_writer::write_state_string_type) + (write_state_undefined_type): ditto, renaming to... + (state_writer::write_state_undefined_type) + (write_state_struct_union_type): ditto, renaming to... + (state_writer::write_state_struct_union_type) + (write_state_struct_type): ditto, renaming to... + (state_writer::write_state_struct_type) + (write_state_user_struct_type): ditto, renaming to... + (state_writer::write_state_user_struct_type) + (write_state_lang_struct_type): ditto, renaming to... + (state_writer::write_state_lang_struct_type) + (write_state_param_struct_type): ditto, renaming to... + (state_writer::write_state_param_struct_type) + (write_state_pointer_type): ditto, renaming to... + (state_writer::write_state_pointer_type) + (write_state_array_type): ditto, renaming to... + (state_writer::write_state_array_type) + (write_state_gc_used): ditto, renaming to... + (state_writer::write_state_gc_used) + (write_state_common_type_content): ditto, renaming to... + (state_writer::write_state_common_type_content) + (write_state_type): ditto, renaming to... + (state_writer::write_state_type) + (write_state_pair_list): ditto, renaming to... + (state_writer::write_state_pair_list) + (write_state_pair): ditto, renaming to... + (state_writer::write_state_pair) + (write_state_typedefs): ditto, renaming to... + (state_writer::write_state_typedefs) + (write_state_structures): ditto, renaming to... + (state_writer::write_state_structures) + (write_state_param_structs): ditto, renaming to... + (state_writer::write_state_param_structs) + (write_state_variables): ditto, renaming to... + (state_writer::write_state_variables) + (write_state_srcdir): ditto, renaming to... + (state_writer::write_state_srcdir) + (write_state_files_list): ditto, renaming to... + (state_writer::write_state_files_list) + (write_state_languages): ditto, renaming to... + (state_writer::write_state_languages) + (write_state): create a state_writer instance and use it when + writing out the state file + +2013-05-17 Mike Stump + + PR rtl-optimization/57304 + * web.c (union_match_dups): Ensure that DF_REF_LOC exists before + accessing DF_REF_REAL_LOC. + +2013-05-17 Jakub Jelinek + + PR rtl-optimization/57281 + PR rtl-optimization/57300 + * config/i386/i386.md (extendsidi2_1 dead reg splitter): Remove. + (extendsidi2_1 peephole2s): Add instead 2 new peephole2s, that undo + what the other splitter did if the registers are dead. + +2013-05-17 Richard Biener + + * tree-ssa-alias.c (stmt_kills_ref_p_1): Properly compare + MEM_REF offsets. + +2013-05-17 Jakub Jelinek + + * gcc.c (SANITIZER_SPEC): Reject -fsanitize=address -fsanitize=thread + linking. + +2013-05-17 Marek Polacek + + * tree-ssa-strlen.c (handle_char_store): Don't invalidate cached + length when doing non-zero store of storing '\0' to '\0'. + +2013-05-17 Jakub Jelinek + + * tree-vect-patterns.c (vect_recog_rotate_pattern): For + vect_external_def oprnd1 with loop_vinfo, try to emit + optional cast, negation and and stmts on the loop preheader + edge instead of into the pattern def seq. + + PR tree-optimization/57051 + * fold-const.c (const_binop) : Fix BYTES_BIG_ENDIAN handling. + +2013-05-16 Nick Clifton + + * config/rl78/rl78.c (rl78_attribute_table): Add naked. + (rl78_is_naked_func): New function. + (rl78_expand_prologue): Skip prologue generation for naked functions. + (rl78_expand_epilogue): Skip epilogue generation for naked functions. + * doc/extend.texi (naked): Add RL78 to the list of processors + that supports this attribute. + +2013-05-16 Jeff Law + + * Makefile.in (tree-switch-conversion.o): Depend on $(OPTABS_H). + +2013-05-16 Uros Bizjak + + * config/i386/driver-i386.c (host_detect_local_cpu): Determine + cache parameters using detect_caches_amd also for CYRIX, + NSC and TM2 signatures. + +2013-05-16 Uros Bizjak + Dzianis Kahanovich + + PR target/45359 + PR target/46396 + * config/i386/driver-i386.c (host_detect_local_cpu): Detect + VIA/Centaur processors and determine their cache parameters + using detect_caches_amd. + +2013-05-16 Teresa Johnson + + * cfgrtl.c (verify_hot_cold_block_grouping): Return err. + (rtl_verify_edges): New function. + (rtl_verify_bb_insns): Ditto. + (rtl_verify_bb_pointers): Ditto. + (rtl_verify_bb_insn_chain): Ditto. + (rtl_verify_fallthru): Ditto. + (rtl_verify_bb_layout): Ditto. + (rtl_verify_flow_info_1): Outline checks into new functions. + (rtl_verify_flow_info): Ditto. + +2013-05-16 Steve Ellcey + + * cfghooks.c (copy_bbs): Add update_dominance argument. + * cfghooks.h (copy_bbs): Update prototype. + * tree-cfg.c (gimple_duplicate_sese_region): + Add update_dominance argument. + * tree-flow.h (gimple_duplicate_sese_region): Update prototype. + * tree-ssa-loop-ch.c (copy_loop_headers): Update + gimple_duplicate_sese_region call. + * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): + Update copy_bbs call. + * cfgloopmanip.c (duplicate_loop_to_header_edge): Ditto. + * trans-mem.c (ipa_uninstrument_transaction): Ditto. + +2013-05-16 Jakub Jelinek + + * tree-vectorizer.h (NUM_PATTERNS): Increment. + * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add + vect_recog_rotate_pattern. + (vect_recog_rotate_pattern): New function. + +2013-05-16 Jason Merrill + + * Makefile.in (LLINKER): New variable. + (mostlyclean): Remove link mutex. + * configure.ac: Handle --enable-link-mutex. + * lock-and-run.sh: New script. + +2013-05-16 Ramana Radhakrishnan + + PR target/19599 + * config/arm/arm.c (arm_function_ok_for_sibcall): Add check + for NULL decl. + +2013-05-16 Rainer Orth + + * reorg.c (link_cc0_insns): Wrap in #ifdef HAVE_cc0. + +2013-05-16 Greta Yorsh + + * config/arm/arm-protos.h (gen_movmem_ldrd_strd): New declaration. + * config/arm/arm.c (next_consecutive_mem): New function. + (gen_movmem_ldrd_strd): Likewise. + * config/arm/arm.md (movmemqi): Update condition and code. + (unaligned_loaddi, unaligned_storedi): New patterns. + +2013-05-16 Rainer Orth + + * config.gcc: Obsolete *-*-solaris2.9*. + * doc/install.texi (Specific, *-*-solaris2*): Document it. + +2013-05-16 Richard Biener + + * passes.c (init_optimization_passes): Move pass_parallelize_loops + earlier, after GRAPHITE transforms and IV canonicalization. + +2013-05-16 Jakub Jelinek + + * omp-low.c (extract_omp_for_data): For collapsed loops, + if at least one of the loops is known at compile time to + iterate zero times, set count to 0. + (expand_omp_regimplify_p): New function. + (expand_omp_for_generic): For collapsed loops, if at least + one of the loops isn't known to iterate at least once, + add runtime check with setting count to 0. + (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): + For unsigned types if it isn't known at compile time that + the loop will iterate at least once, add runtime check to bypass + the whole loop if initial condition isn't true. + +2013-05-16 Nathan Sidwell + + * varasm.c (default_use_anchors_for_symbol_p): Use decl_replaceable_p. + +2013-05-16 Marc Glisse + + PR middle-end/57286 + * fold-const.c (fold_ternary_loc) : Disable some + transformations to avoid an infinite loop. + +2013-05-16 Marek Polacek + + * tree-scalar-evolution.c (scev_const_prop): Add more dumps. + +2013-05-15 Leif Ekblad + + * config/i386/i386.c (ix86_decompose_address): Use + DEFAULT_TLS_SEG_REG to access TLS segment register. + * config/i386/i386.h (DEFAULT_TLS_SEG_REG): New define. + * config/i386/rdos.h (DEFAULT_TLS_SEG_REG): Ditto. + (TARGET_TLS_DIRECT_SEG_REFS_DEFAULT): Ditto. + +2013-05-15 Richard Sandiford + + PR target/57260 + * config/mips/mips.c (mips_function_ok_for_sibcall): Don't allow + sibling calls to functions that would normally be lazily bound, + unless $gp is call-clobbered. + +2013-05-15 Uros Bizjak + + * config/i386/i386.c (ix86_option_override_internal): Update + processor_alias_table for missing PTA_PRFCHW and PTA_FXSR flags. Add + PTA_POPCNT to corei7 entry. Do not enable SSE prefetch on + non-SSE 3dNow! targets. Enable TARGET_PRFCHW for TARGET_3DNOW targets. + * config/i386/i386.md (prefetch): Enable for TARGET_PRFCHW instead + of TARGET_3DNOW. + (*prefetch_3dnow): Enable for TARGET_PRFCHW only. + +2013-05-15 Andreas Schwab + + * config/m68k/m68k.md (*rotlhi3_lowpart, *rotlqi3_lowpart): Name + for rotlhi3+1 and rotlqi3+1, resp. Fix reference to non-existing + third operand. + +2013-05-15 Teresa Johnson + + * loop-unroll.c (report_unroll_peel): Check decision before + emitting unroll/peel message. + +2013-05-15 Teresa Johnson + + * function.h (has_bb_partition): New rtl_data flag. + (bb_reorder_complete): Ditto. + * cfgcleanup.c (try_crossjump_to_edge): Check for has_bb_partition + instead of flag_reorder_blocks_and_partition. + * cfgrtl.c (verify_hot_cold_block_grouping): Moved from bb-reorder.c, + with some enhancements. + (rtl_verify_flow_info_1): Call verify_hot_cold_block_grouping. + * bb-reorder.c (connect_traces): Check for has_bb_partition + instead of flag_reorder_blocks_and_partition. + (verify_hot_cold_block_grouping): Moved to cfgrtl.c. + (reorder_basic_blocks): Set bb_reorder_complete flag, remove call to + verify_hot_cold_block_grouping. + (partition_hot_cold_basic_blocks): Set has_bb_partition. + +2013-05-15 Ramana Radhakrishnan + + PR target/19599 + * config/arm/predicates.md (call_insn_operand): New predicate. + * config/arm/constraints.md ("Cs", "Ss"): New constraints. + * config/arm/arm.md (*call_insn, *call_value_insn): Match only + if insn is not a tail call. + (*sibcall_insn, *sibcall_value_insn): Adjust for tailcalling through + registers. + * config/arm/arm.h (enum reg_class): New caller save register class. + (REG_CLASS_NAMES): Likewise. + (REG_CLASS_CONTENTS): Likewise. + * config/arm/arm.c (arm_function_ok_for_sibcall): Allow tailcalling + without decls. + +2013-05-15 Richard Biener + + * tree-vect-loop.c (vect_transform_loop): Use MSG_NOTE instead + of MSG_OPTIMIZED_LOCATIONS. + * tree-vect-slp.c (vect_make_slp_decision): Likewise. + (vect_slp_transform_bb): Indicate location in MSG_OPTIMIZED_LOCATIONS + message. + * tree-vectorizer.c (vectorize_loops): Use MSG_NOTE instead + of MSG_OPTIMIZED_LOCATIONS. + (execute_vect_slp): Likewise. + * tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): Likewise. + (vect_create_cond_for_alias_checks): Likewise. + * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise. + (vect_recog_widen_mult_pattern): Likewise. + (vect_recog_widen_sum_pattern): Likewise. + (vect_recog_over_widening_pattern): Likewise. + (vect_recog_widen_shift_pattern): Likewise. + (vect_recog_vector_vector_shift_pattern): Likewise. + (vect_recog_divmod_pattern): Likewise. + (vect_recog_mixed_size_cond_pattern): Likewise. + (vect_recog_bool_pattern): Likewise. + (vect_pattern_recog_1): Likewise. + +2013-05-15 Martin Jambor + + * ipa-prop.c (ipa_make_edge_direct_to_target): Redirect calls to + non-functions to builtin_unreachable. + * ipa-inline-transform.c (inline_call): Do not assert estimates were + correct when new direct edges were discovered. + +2013-05-15 Martin Jambor + + * ipa-prop.c (ipa_print_node_jump_functions): Print symbol order in + header, print symbol order instead of node uid, print more information + about indirect edge targets. + (ipa_make_edge_direct_to_target): Print symbol order instead of node + uids. + (ipa_make_edge_direct_to_target): Likewise. + (remove_described_reference): Likewise. + (propagate_controlled_uses): Likewise. + (ipa_print_node_params): Also print symbol order. + (ipcp_transform_function): Print symbol order instead of node uids. + * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Likewise. + (cgraph_get_create_real_symbol_node): Likewise. + * ipa-cp.c (print_lattice): Likewise. + (print_all_lattices): Likewise. + (determine_versionability): Likewise. + (initialize_node_lattices): Likewise. + (estimate_local_effects): Likewise. + (update_profiling_info): Likewise. + (create_specialized_node): Likewise. + (perhaps_add_new_callers): Likewise. + (decide_about_value): Likewise. + (decide_whether_version_node): Likewise. + (identify_dead_nodes): Likewise. + * ipa-inline-analysis.c (dump_inline_edge_summary): Likewise. + (dump_inline_summary): Likewise. + (estimate_node_size_and_time): Likewise. + (inline_analyze_function): Likewise. + * ipa-inline.c (report_inline_failed_reason): Likewise. + (want_early_inline_function_p): Likewise. + (edge_badness): Likewise. + (update_edge_key): Likewise. + (inline_small_functions): Likewise. Add dumping of order to two other + dumps. + * ipa-pure-const.c (pure_const_read_summary): Print symbol order + instead of node uids. + (propagate_pure_const): Likewise. + (propagate_pure_const): Likewise. + * ipa-utils.c (dump_cgraph_node_set): Likewise. + * lto-cgraph.c (input_node): Explicitly specify we dump uid. + * lto-symtab.c (lto_cgraph_replace_node): Print symbol order instead + of node uids. + * tree-pretty-print.c (dump_function_header): Likewise. + * tree-sra.c (convert_callers_for_node): Dump in traditional format. + Print symbol order instead of node uids. + +2013-05-15 Andreas Krebbel + + * config/s390/s390.c (s390_register_move_cost): Don't impose the + FPR<->GPR move cost penalty if ldgr/lgdr can be used. + +2013-05-15 Richard Biener + + PR tree-optimization/57275 + * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Fix + return value for fail to do runtime alias checks for gather loads. + +2013-05-15 Jan Hubicka + + PR lto/57038 + PR lto/47375 + * lto-symtab.c (lto_symtab_symbol_p): Add external symbol; + weakrefs are not external. + (lto_symtab_merge_decls): Fix thinko when dealing with + non-lto_symtab decls. + (lto_symtab_merge_cgraph_nodes): Use lto_symtab_symbol_p. + (lto_symtab_prevailing_decl): Get int sync with lto_symtab_symbol_p. + * varpool.c (dump_varpool_node): Dump more flags. + +2013-05-15 Ganesh Gopalasubramanian + + * config/i386/i386.c (processor_alias_table): Add instruction + FSGSBASE for AMD bdver3 architecture. + +2013-05-14 Jakub Jelinek + + * tree.c (warn_deprecated_use): Print file:line using locus color. + * diagnostic.c (diagnostic_report_current_module): Print file:line + and file:line:column using locus color. + +2013-05-14 Mike Stump + + * gdbinit.in: Add __null. + +2013-05-14 Mike Stump + + * recog.h: Rename struct recog_data to Recog_data. + * recog.c: Likewise. + * reload.c (can_reload_into): Likewise. + * config/picochip/picochip.c: Likewise. + +2013-05-14 Mike Stump + + * web.c (union_match_dups): Also check DF_REF_REAL_LOC. + +2013-05-14 Steven Bosscher + + * resource.h (struct resources): Remove unch_memory member. + (CLEAR_RESOURCE): Don't clear unch_memory. + * resource.c (mark_referenced_resources): Don't set it. + (mark_set_resources): Likewise. + (mark_target_live_regs): Don't clear it. + (init_resource_info): Likewise. + * reorg.c (resource_conflicts_p): Don't compare it. + (redundant_insn): Don't set it. + + * rtl.h (next_label, skip_consecutive_labels, link_cc0_insns): + Remove prototypes. + * emit-rtl.c (next_label): Remove unused function. + (skip_consecutive_labels, link_cc0_insns): Move to ... + * reorg.c (skip_consecutive_labels, link_cc0_insns): ... here, the + only place where these functions are used, and make them static. + +2013-05-14 Marc Glisse + + * fold-const.c (fold_negate_expr): Handle vectors. + (fold_truth_not_expr): Make it static. + (fold_invert_truthvalue): New static function. + (invert_truthvalue_loc): Handle vectors. Do not call + fold_truth_not_expr directly. + (fold_unary_loc) : Handle comparisons. + : Do not cast to boolean. + (fold_comparison): Handle vector constants. + (fold_binary_loc) : Remove redundant code. + (fold_ternary_loc) : Adapt more COND_EXPR optimizations. + * tree.h (fold_truth_not_expr): Remove declaration. + +2013-05-14 James Greenhalgh + + * config/aarch64/aarch64-simd.md + (aarch64_vcond_internal): Rename to... + (aarch64_vcond_internal): ...This, for integer modes. + (aarch64_vcond_internal): ...This for + float modes. Clarify all iterator modes. + (vcond): Use new name for vcond expanders. + (vcond): Likewise. + (vcondu: Likewise. + * config/aarch64/iterators.md (VDQF_COND): New. + +2013-05-14 Marc Glisse + + PR bootstrap/57266 + * fold-const.c (fold_binary_loc) : Use an unsigned + variable for the shift amount. Check that we shift by non-negative + amounts. + +2013-05-14 Chung-Lin Tang + + PR target/42017 + * config/arm/arm.h (EPILOGUE_USES): Only return true + for LR_REGNUM after epilogue_completed. + +2013-05-14 Joern Rennecke + + * config/avr/avr.c (avr_encode_section_info): Bail out if the type + is error_mark_node. + +2013-05-14 Rainer Orth + + PR target/57261 + * configure.ac (gcc_cv_ld_as_needed): Disable before Solaris 11 + and Solaris 11+/x86 with gld. + * configure: Regenerate. + +2013-05-14 Jakub Jelinek + + * expmed.c (expand_shift_1): Canonicalize rotates by + constant bitsize / 2 to bitsize - 1. + * simplify-rtx.c (simplify_binary_operation_1) : Likewise. + + Revert: + 2013-05-10 Jakub Jelinek + + * config/i386/i386.md (rotateinv): New code attr. + (*3_1, *si3_1_zext, + *qi3_1_slp): Emit rorl %eax instead of + roll $31, %eax, etc. + +2013-05-14 Richard Biener + + PR middle-end/57235 + * tree-eh.c (sink_clobbers): Give up for successors with + multiple predecessors and no virtual uses. + +2013-05-14 Eric Botcazou + + * config/sparc/sp64-elf.h (CPP_SUBTARGET_SPEC): Delete. + * config/sparc/openbsd64.h (CPP_SUBTARGET_SPEC): Likewise. + +2013-05-14 Jakub Jelinek + + PR middle-end/57251 + * expr.c (expand_expr_real_2) : Handle + the case when both op0 and op1 have VOIDmode. + +2013-05-14 Kaushik Phatak + + * config/rl78/rl78.md(mulsi3_g13): Add additional 'nop' required + in multiply-accumulate mode. + +2013-05-13 Guozhi Wei + + * dwarf2asm.c (dw2_output_indirect_constant_1): Mark new decl STATIC. + +2013-05-13 Kai Tietz + + PR target/56975 + * config/i386/cygming.h (TARGET_PECOFF): Define as true. + * config/i386/i386.h (TARGET_PECOFF): Define by default as false. + (PIC_OFFSET_TABLE_REGNUM): Use TARGET_PECOFF. + * config/i386/i386.c (ix86_option_override_internal): Likewise. + (ix86_expand_prologue): Likewise. + (ix86_expand_split_stack_prologue): Likewise. + (legitimate_pic_address_disp_p): Likewise. + (legitimize_pic_address): Likewise. + (legitimize_tls_address): Likewise. + (legitimize_pe_coff_symbol): Likewise. + (output_pic_addr_const): Likewise. + (construct_plt_address): Likewise. + (ix86_expand_call): Likewise. + (x86_output_mi_thunk): Likewise. + (x86_function_profiler): Likewise. + +2013-05-13 Sofiane Naci + + * config/aarch64/aarch64-simd.md (aarch64_simd_mov): Group + similar switch cases. + (aarch64_simd_mov): Rename to aarch64_split_simd_mov. Update. + (aarch64_simd_mov_to_low): Delete. + (aarch64_simd_mov_to_high): Delete. + (move_lo_quad_): Add w<-r alternative. + (aarch64_simd_move_hi_quad_): Likewise. + (aarch64_simd_mov_from_*): Update type attribute. + * config/aarch64/aarch64.c (aarch64_split_simd_move): Refacror switch + statement. + +2013-05-13 Jan Hubicka + + * mode-switching.c (optimize_mode_switching): Set correct RTL profile. + * config/i386/i386.c (ix86_compute_frame_layout, + ix86_expand_epilogue, emit_i387_cw_initialization, + ix86_expand_vector_move_misalign, ix86_fp_comparison_strategy, + ix86_local_alignment): Fix use of size/speed predicates. + +2013-05-13 Jakub Jelinek + + PR tree-optimization/45216 + PR tree-optimization/57157 + * tree-ssa-forwprop.c (simplify_rotate): Only recognize + the (-Y) & (B - 1) variant if OP is |. + * expmed.c (expand_shift_1): For rotations by const0_rtx just + return shifted. Use (-op1) & (prec - 1) as other_amount + instead of prec - op1. + +2013-05-13 Martin Jambor + + PR middle-end/42371 + * ipa-prop.h (IPA_UNDESCRIBED_USE): New macro. + (ipa_constant_data): New type. + (ipa_jump_func): Use ipa_constant_data to hold information about + constant jump functions. + (ipa_get_jf_constant): Adjust to jump function type changes. + (ipa_get_jf_constant_rdesc): New function. + (ipa_param_descriptor): New field controlled_uses. + (ipa_get_controlled_uses): New function. + (ipa_set_controlled_uses): Likewise. + * ipa-ref.h (ipa_find_reference): Declare. + * ipa-prop.c (ipa_cst_ref_desc): New type. + (ipa_print_node_jump_functions_for_edge): Adjust for jump function type + changes. + (ipa_set_jf_constant): Likewise. Also create reference descriptions. + New parameter cs. Adjust all callers. + (ipa_analyze_params_uses): Detect uncontrolled and controlled uses. + (remove_described_reference): New function. + (jfunc_rdesc_usable): Likewise. + (try_make_edge_direct_simple_call): Decrement controlled use count, + attempt to remove reference if it hits zero. + (combine_controlled_uses_counters): New function. + (propagate_controlled_uses): Likewise. + (ipa_propagate_indirect_call_infos): Call propagate_controlled_uses. + (ipa_edge_duplication_hook): Duplicate reference descriptions. + (ipa_print_node_params): Print described use counter. + (ipa_write_jump_function): Adjust to jump function type changes. + (ipa_read_jump_function): New parameter CS, pass it to + ipa_set_jf_constant. Adjust caller. + (ipa_write_node_info): Stream controlled use count + (ipa_read_node_info): Likewise. + * cgraph.c (cgraph_mark_address_taken_node): Bail out instead of + asserting. + * ipa-cp.c (ipcp_discover_new_direct_edges): Decrement controlled use + count. Remove cloning-added reference if it reaches zero. + * ipa-ref.c (ipa_find_reference): New function. + +2013-05-13 Ganesh Gopalasubramanian + + * config/i386/i386.c (processor_target_table): Modified default + alignment values for AMD BD and BT architectures. + +2013-05-13 Marc Glisse + + * tree-vect-generic.c (uniform_vector_p): Move ... + * tree.c (uniform_vector_p): ... here. + * tree.h (uniform_vector_p): Declare it. + * fold-const.c (fold_binary_loc) : Turn the second argument + into a scalar. + +2013-05-13 Jakub Jelinek + + PR tree-optimization/57230 + * tree-ssa-strlen.c (handle_char_store): Record length for + array store from STRING_CST. + + PR tree-optimization/57230 + * tree-ssa-strlen.c (handle_char_store): Add missing integer_zerop + check. + +2013-05-12 Joern Rennecke + + * config/epiphany/epiphany.c (epiphany_init): Check size of + NUM_MODES_FOR_MODE_SWITCHING. + (epiphany_expand_prologue): + Remove CONFIG_REGNUM initial value handling code. + (epiphany_optimize_mode_switching): Handle EPIPHANY_MSW_ENTITY_CONFIG. + (epiphany_mode_needed, epiphany_mode_entry_exit): Likewise. + (emit_set_fp_mode, epiphany_mode_after): Likewise. + (epiphany_mode_needed) : + Don't return 1 for FP_MODE_NONE. + * config/epiphany/epiphany.h (NUM_MODES_FOR_MODE_SWITCHING): + Add value for EPIPHANY_MSW_ENTITY_CONFIG. + (EPIPHANY_MSW_ENTITY_CONFIG, EPIPHANY_MSW_ENTITY_NUM): Define. + * config/epiphany/epiphany.md (save_config): New pattern. + +2013-05-12 Uros Bizjak + + * config/i386/i386.md (*zero_extendsidi2): Add *x->?r alternative. + +2013-05-10 Uros Bizjak + + * config/i386/i386.md (memory): Handle sseishft1. + * config/i386/sse.md (*vec_extractv4si): Remove memory attribute. + (*vec_extractv2di_1): Ditto. + +2013-05-10 Vladimir Makarov + + * lra-assigns.c (find_hard_regno_for): Add 1 to the cost of call + saved registers. + +2013-05-10 Sebastian Huber + + * config/arm/t-rtems-eabi: Remove mthumb/march=armv7 multilib. + Add mthumb/march=armv7-a multilib. + Add mthumb/march=armv7-r multilib. + Add mthumb/march=armv7-a/mfpu=neon/mfloat-abi=hard multilib. + +2013-05-10 Ralf Corsépius + + * config/v850/t-rtems: Add more multilibs. + +2013-05-10 Richard Biener + + PR tree-optimization/57214 + * tree-ssa-loop-ivcanon.c (propagate_constants_for_unrolling): Do + not propagate from SSA names that occur in abnormal PHI nodes. + +2013-05-10 Marc Glisse + + * stor-layout.c (element_precision): New function. + * machmode.h (element_precision): Declare it. + * tree.c (build_minus_one_cst): New function. + (element_precision): Likewise. + * tree.h (build_minus_one_cst): Declare new function. + (element_precision): Likewise. + * fold-const.c (operand_equal_p): Use element_precision. + (fold_binary_loc): Handle vector types. + * convert.c (convert_to_integer): Use element_precision. + * gimple.c (iterative_hash_canonical_type): Handle complex and vectors + separately. + +2013-05-10 Richard Sandiford + + * config/mips/mips-protos.h (m16_uimm3_b, m16_simm4_1, m16_nsimm4_1) + (m16_simm5_1, m16_nsimm5_1, m16_uimm5_4, m16_nuimm5_4, m16_simm8_1) + (m16_nsimm8_1, m16_uimm8_1, m16_nuimm8_1, m16_uimm8_m1_1, m16_uimm8_4) + (m16_nuimm8_4, m16_simm8_8, m16_nsimm8_8): Delete. + * config/mips/mips.c (m16_check_op, m16_uimm3_b, m16_simm4_1) + (m16_nsimm4_1, m16_simm5_1, m16_nsimm5_1, m16_uimm5_4, m16_nuimm5_4) + (m16_simm8_1, m16_nsimm8_1, m16_uimm8_1, m16_nuimm8_1, m16_uimm8_m1_1) + (m16_uimm8_4, m16_nuimm8_4, m16_simm8_8, m16_nsimm8_8): Delete. + * config/mips/constraints.md (Udb8, Usb5, Usb8, Usd8, Uub8, Uuw5) + (Uuw8): New constraints. + (Usb4): Move into alphabetical order. + * config/mips/predicates.md (db8_operand, sb5_operand, sb8_operand) + (sd8_operand, ub8_operand, uw8_operand): New predicates. + * config/mips/mips.md (*xor3, *xor3_mips16): Name + previously unnamed patterns. + (*add3_mips16, *xor3_mips16, *si3_mips16) + (*ashldi3_mips16, *ashrdi3_mips16, *lshrdi3_mips16) + (*slt__mips16) + (*sle__mips16): Use constraints instead + of set_attr_alternative/if_then_else. Use extended_mips16 instead + of specific lengths. + +2013-05-10 Jakub Jelinek + + * config/i386/i386.md (rotateinv): New code attr. + (*3_1, *si3_1_zext, + *qi3_1_slp): Emit rorl %eax instead of + roll $31, %eax, etc. + + PR tree-optimization/45216 + PR tree-optimization/57157 + * tree-ssa-forwprop.c (simplify_rotate): New function. + (ssa_forward_propagate_and_combine): Call it. + +2013-05-10 Richard Biener + + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Do not + disable peeling when we version for aliasing. + (vector_alignment_reachable_p): Honor explicit user alignment. + (vect_supportable_dr_alignment): Likewise. + * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Use + STMT_VINFO_LOOP_PHI_EVOLUTION_PART instead of recomputing it. + * tree-vect-loop.c (vect_transform_loop): First apply versioning, + then peeling to arrange for the cost-model check to come first. + +2013-05-10 Alan Modra + + * configure.ac (HAVE_AS_TLS): Swap powerpc64 and powerpc cases. + (HAVE_LD_LARGE_TOC): Don't mention AIX in help text. + * configure: Regenerate. + +2013-05-10 Alan Modra + + PR target/55033 + * varasm.c (default_elf_select_section): Move !DECL_P check.. + (get_named_section): ..to here before calling get_section_name. + Adjust assertion. + (default_section_type_flags): Add DECL_P check. + * config/i386/winnt.c (i386_pe_section_type_flags): Likewise. + * config/rs6000/rs6000.c (rs6000_xcoff_section_type_flags): Likewise. + +2013-05-09 Joern Rennecke + + * config/epiphany/epiphany.c (epiphany_expand_prologue): + When using gen_stack_adjust_str with a register offset, add a + REG_FRAME_RELATED_EXPR note. + +2013-05-09 Uros Bizjak + + * config/i386/sse.md (*vec_extractv4si_0_zext): New pattern. + (*vec_extractv4si_zext_mem): Ditto. + (*vec_extractv2di): Add 0->x and x->x alternatives. + * config/i386/mmx.md (*vec_extractv2si_zext_mem): New pattern. + * config/i386/i386.md (*zero_extendsidi2): Add *Yj->?r alternative. + +2013-05-09 Jason Merrill + + N3639 C++1y VLA support + * gimplify.c (gimplify_vla_decl): Don't touch an existing + DECL_VALUE_EXPR. + + * tree.c (build_constructor_va): New. + * tree.h: Declare it. + +2013-05-09 Martin Jambor + + PR lto/57084 + * gimple-fold.c (canonicalize_constructor_val): Call + cgraph_get_create_real_symbol_node instead of cgraph_get_create_node. + +2013-05-09 Jan Hubicka + Richard Biener + + PR lto/54095 + * symtab.c (symtab_make_decl_local): Do not add private names. + +2013-05-09 Jan Hubicka + + PR lto/54095 + * symtab.c (insert_to_assembler_name_hash): Handle clones. + (unlink_from_assembler_name_hash): Likewise. + (symtab_prevail_in_asm_name_hash, symtab_register_node, + symtab_unregister_node, symtab_initialize_asm_name_hash, + change_decl_assembler_name): Update. + +2013-05-09 Sofiane Naci + + * config/aarch64/aarch64.md: New movtf split. + (*movtf_aarch64): Update. + (aarch64_movdi_tilow): Handle TF modes and rename to + aarch64_movdi_low. + (aarch64_movdi_tihigh): Handle TF modes and rename to + aarch64_movdi_high + (aarch64_movtihigh_di): Handle TF modes and rename to + aarch64_movhigh_di + (aarch64_movtilow_di): Handle TF modes and rename to + aarch64_movlow_di + (aarch64_movtilow_tilow): Remove spurious whitespace. + * config/aarch64/aarch64.c (aarch64_split_128bit_move): Handle TFmode + splits. + (aarch64_print_operand): Update. + +2013-05-09 Alan Modra + + * configure.ac (HAVE_AS_TLS): Enable tests for powerpcle and + powerpc64le. + * configure: Regenerate. + +2013-05-08 Uros Bizjak + + * config/i386/mmx.md (*vec_extract* splitters): Simplify post-reload + splitter preparation statements. + * config/i386/sse.md (*vec_extract* splitters): Ditto. + (*avx_vperm_broadcast_): Use adjust_address instead of + adjust_address_nv. + +2013-05-08 Bill Schmidt + + * gimple-ssa-strength-reduction.c (count_candidates): Change + return value to int. + (analyze_candidates_and_replace): Change type of length to int. + +2013-05-08 Uros Bizjak + + * config/i386/sse.md (PEXTR_MODE, PEXTR_MODEx): Remove. + (*vec_extract): Use VI12_128 mode iterator. + (*vec_extract_mem): Ditto. + (*vec_extract*_mem splitters): Merge splitters using VI_128 mode + attribute. + +2013-05-08 Diego Novillo + + PR bootstrap/54659 + + Revert: + 2012-08-17 Diego Novillo + + PR bootstrap/54281 + * configure.ac: Add libintl.h to AC_CHECK_HEADERS list. + * config.in: Regenerate. + * configure: Regenerate. + * intl.h: Always include libintl.h if HAVE_LIBINTL_H is set. + +2013-05-08 Jan Hubicka + + PR lto/54095 + * cgraph.c (cgraph_make_node_local_1): Se unique_name. + * cgraph.h (symtab_node_base): Add unique_name. + * lto-cgraph.c (lto_output_node, lto_output_varpool_node, + input_overwrite_node, input_varpool_node): Stream unique_name. + * cgraphclones.c (cgraph_create_virtual_clone, + cgraph_function_versioning): Set unique_name. + * ipa.c (function_and_variable_visibility): Set unique_name. + +2013-05-08 Bill Schmidt + + * gimple-ssa-strength-reduction.c (find_phi_def): Revert former "fix." + (alloc_cand_and_find_basis): Restrict conditional candidate + processing to CAND_MULTs. + +2013-05-08 Jan Hubicka + + PR lto/54095 + lto-symtab.c (lto_symtab_symbol_p): New function. + (lto_symtab_resolve_can_prevail_p, lto_symtab_resolve_symbols, + lto_symtab_resolve_symbols, lto_symtab_merge_decls_2, + lto_symtab_merge_decls_1, lto_symtab_merge_cgraph_nodes_1): + Skip static symbols. + +2013-05-08 Paolo Carlini + + PR tree-optimization/57200 + * tree-ssa-loop-niter.c (do_warn_aggressive_loop_optimizations): + Only call inform if the preceding warning_at returns true. + +2013-05-07 Han Shen + + * cfgexpand.c (record_or_union_type_has_array_p): New function. + (expand_used_vars): Add logic handling '-fstack-protector-strong'. + * common.opt (fstack-protector-strong): New option. + * doc/cpp.texi (__SSP_STRONG__): New builtin "__SSP_STRONG__". + * doc/invoke.texi (Optimization Options): Document + "-fstack-protector-strong". + * gcc.c (LINK_SSP_SPEC): Add 'fstack-protector-strong'. + +2013-05-06 Steven Bosscher + + * config/mips/mips.c (mips_machine_reorg2): Return 0. + +2013-05-07 Vladimir Makarov + + * ira.c (update_equiv_regs): Add insn having equiv memory even if + it is not lhs of the insn. + (setup_reg_equiv): Remove insn having equiv memory which it is not + lhs of the insn. + * lra-constraints.c (process_address): Try to improve generation + code for address base + disp. + (lra_constraints): Make correct the code for checking insn setting + up backward equivalence. Remove insn only if it is in the init + insn list. + * lra-eliminations.c (update_reg_eliminate): Change return value. + (lra_eliminate): Use the result. + +2013-05-07 Uros Bizjak + + * config/i386/sse.md (ssescalarnummask): New mode attribute. + (PEXTR_MODE, PEXTR_MODEx): New mode iterators. + (*vec_extract): Merge from *sse4_1_pextrb_memory and + *sse4_1_pextrw_memory using PEXTR_MODE mode iterator. Handle + register target operands. + (*vec_extractv8hi_sse2): New pattern. + (*vec_extractv16qi_zext): Rename from *sse4_1_pextrb_. + (*vec_extractv8hi_zext): Rename from *sse2_pextrw_. + (*vec_extract_mem): New insn and split pattern. + +2013-05-07 Christophe Lyon + + * config/arm/arm.c (arm_asan_shadow_offset): New function. + (TARGET_ASAN_SHADOW_OFFSET): Define. + * config/arm/linux-eabi.h (ASAN_CC1_SPEC): Define. + (LINUX_OR_ANDROID_CC): Add ASAN_CC1_SPEC. + +2013-05-07 Bill Schmidt + + * gimple-ssa-strength-reduction.c (MAX_INCR_VEC_LEN): New constant. + (incr_vec_index): Return -1 if increment not found. + (create_add_on_incoming_edge): Assert if increment not found. + (record_increment): Limit number of increments recorded. + (all_phi_incrs_profitable): Return false if an increment not found. + (replace_profitable_candidates): Don't process increments that were + not recorded. + (analyze_candidates_and_replace): Limit size of incr_vec. + +2013-05-07 Richard Biener + + * calls.c (special_function_p): setjmp-like functions are leaf. + * builtins.def (BUILT_IN_SETJMP): setjmp is leaf. + * tree-inline.c (update_ssa_across_abnormal_edges): Remove assert. + +2013-05-07 Sofiane Naci + + * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): call splitter. + (aarch64_simd_mov): New expander. + (aarch64_simd_mov_to_low): New instruction pattern. + (aarch64_simd_mov_to_high): Likewise. + (aarch64_simd_mov_from_low): Likewise. + (aarch64_simd_mov_from_high): Likewise. + (aarch64_dup_lane): Update. + (aarch64_dup_lanedi): New instruction pattern. + * config/aarch64/aarch64-protos.h (aarch64_split_simd_move): New prototype. + * config/aarch64/aarch64.c (aarch64_split_simd_move): New function. + +2013-05-07 Bill Schmidt + + * gimple-ssa-strength-reduction.c (lazy_create_slsr_reg): Remove. + (replace_mult_candidate): Remove unnecessary argument; remove + unnecessary parameter from call to introduce_cast_before_cand. + (replace_unconditional_candidate): Remove unnecessary parameter + from call to replace_mult_candidate. + (replace_conditional_candidate): Likewise. + (insert_initializers): Use make_temp_ssa_name. + (introduce_cast_before_cand): Remove unnecessary argument; use + make_temp_ssa_name. + (replace_one_candidate): Remove unnecessary argument; remove + unnecessary parameter from calls to introduce_cast_before_cand. + (replace_profitable_candidates): Remove unnecessary parameters + from calls to replace_one_candidate. + +2013-05-07 Bill Schmidt + + * gimple-ssa-strength-reduction.c (find_phi_def): Don't record a + phi def as possibly hiding a basis for a CAND_ADD whose operands + have been commuted in the analysis. + (alloc_cand_and_find_basis): Add parms to call to find_phi_def. + +2013-05-07 Naveen H.S + + * config/aarch64/aarch64.md + (cmp_swp__shft_): Restrict the + shift value between 0-4. + +2013-05-07 Richard Biener + + * double-int.h (rshift): New overload. + * double-int.c (rshift): New function. + * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Optimize. + (create_reference_ops_from_ref): Remove. + (vn_reference_insert): Use shared ops for constructing the + reference and copy it. + +2013-05-07 Richard Biener + + PR middle-end/57190 + * tree-eh.c (sink_clobbers): Properly propagate + SSA_NAME_OCCURS_IN_ABNORMAL_PHI. + +2013-05-07 Jakub Jelinek + + PR tree-optimization/57149 + * tree-ssa-uninit.c (uninit_undefined_value_p): New inline. + (can_skip_redundant_opnd, compute_uninit_opnds_pos, + collect_phi_def_edges, execute_late_warn_uninitialized): Use + uninit_undefined_value_p instead of ssa_undefined_value_p. + + PR debug/57184 + * expr.c (expand_expr_addr_expr_1): Handle COMPOUND_LITERAL_EXPR + for modifier == EXPAND_INITIALIZER. + +2013-05-07 Anton Blanchard + + * configure.ac (HAVE_LD_LARGE_TOC): Use correct linker emulation + for powerpc64 little endian. + * configure: Regenerate. + +2013-05-06 Graham Stott + + * expmed.c (init_expmed_rtl): Remove unused fields reg_fld, plus_fld, + mult_fld, sdiv_fld1, udiv_fld1, sdiv_32_fld1, smod_32_fld1, + wide_mult_fld1, wide_lshr_fld1, shift_fld1, shift_mult_fld1, + shift_add_fld1, shift_sub0_fld1, shift_sub1_fld1. + +2013-05-06 Graham Stott + + * gensupport.c (add_predicate_code): Also exclude SCRATCH from rtx + codes which allow non-lvalues. + +2013-05-06 Marc Glisse + + * tree.c (integer_all_onesp) : Test that both + components are all 1s. + (integer_minus_onep): New function. + * tree.h (integer_minus_onep): Declare it. + * fold-const.c (fold_binary_loc) : Test + integer_minus_onep instead of integer_all_onesp. + +2013-05-06 Oleg Endo + + PR target/52933 + * config/sh/sh.md (*cmp_div0s_0, *cmp_div0s_1, *movsicc_div0s): Add + variations of these patterns. + +2013-05-06 Uros Bizjak + + * config/i386/i386.md (isa): Add x64_sse4 member. + (enabled): Handle x64_sse4. + (*movdi_internal): Add *x->?r alternative to emit pextrq $0,%xmm,%reg + instruction for 64bit SSE4_1 targets. Update insn attributes. + (*movsi_internal): Add *x->?r alternative to emit pextrd $0,%xmm,%reg + instruction for SSE4_1 targets. Update insn attributes. + * config/i386/sse.md (*vec_extract_0): Merge + with *sse4_1_pextrd and *sse4_1_pextrq having const_0 selector. + (*vec_extractv2di_1): Merge with *sse4_1_pextrq having + const_1 selector. + (*vec_extractv4si): Rename from *sse4_1_pextrd. + (*vec_extractv4si_zext): Rename from *sse4_1_pextrd_zext. + (*vec_extract_0 splitters): Merge splitters together. + +2013-05-06 Oleg Endo + + PR target/57108 + * config/sh/sh.md (tstsi_t_zero_extract_eq): Use QIHISIDI mode iterator. + +2013-05-06 Maxim Kuznetsov + + * final.c (do_assembler_dialects): Don't handle curly braces and + vertical bar escaped by % as dialect delimiters. + (output_asm_insn): Print curly braces and vertical bar if escaped + by % and ASSEMBLER_DIALECT defined. + * doc/tm.texi.in (ASSEMBLER_DIALECT): Document new standard escapes. + * doc/tm.texi: Regenerated. + +2013-05-06 Steven Bosscher + + * config/mips/mips.c: Include tree-pass.h. + (mips_reorg): Split in pre- and post-dbr_schedule parts. + (mips_machine_reorg2): Move mips_reorg post-dbr_schedule parts here. + (pass_mips_machine_reorg2): New machine specific pass. + (insert_pass_mips_machine_reorg2): New pass plugin definition. + (mips_option_override): Register the new pass. + * rtl.h (cleanup_barriers): Remove prototype. + (dbr_schedule): Likewise. + * jump.c (cleanup_barriers): Make static. + * reorg.c (dbr_schedule): Likewise. + +2013-05-06 Richard Biener + + PR tree-optimization/57185 + * tree-parloops.c (add_field_for_reduction): Handle anonymous + SSA names properly. + +2013-05-06 Uros Bizjak + + PR target/57106 + * config/i386/i386.c (add_parameter_dependencies): Add dependence + between "first_arg" and "insn", not "last" and "insn". + +2013-05-06 Bill Schmidt + + * gimple-ssa-strength-reduction.c (slsr_process_phi): Re-enable. + (find_candidates_in_block): Re-enable slsr_process_phi. + (create_phi_basis): Fix double counting of candidate adjustment. + +2013-05-06 Richard Biener + + PR middle-end/57147 + * tree-cfg.c (gimple_purge_dead_abnormal_call_edges): If + the edge is also fallthru, preserve it and just clear the + abnormal flag. + * tree-cfgcleanup.c (remove_fallthru_edge): If the edge is + also complex, preserve that and just clear the fallthru flag. + * tree-inline.c (update_ssa_across_abnormal_edges): Also + update virtual operands. + +2013-05-06 Alan Modra + + * config/rs6000/linux.h (DEFAULT_ASM_ENDIAN): Define. + (LINK_OS_LINUX_EMUL): Use ENDIAN_SELECT. + * config/rs6000/linux64.h (DEFAULT_ASM_ENDIAN): Define. + * config/rs6000/sysv4le.h (DEFAULT_ASM_ENDIAN): Define. + (LINK_TARGET_SPEC): Use ENDIAN_SELECT. + * config/rs6000/sysv4.h (DEFAULT_ASM_ENDIAN): Define as -mbig. + +2013-05-06 Alan Modra + + * config/rs6000/sysv4.h (ENDIAN_SELECT): Define, extracted from + (ASM_SPEC): ..here. Emit DEFAULT_ASM_ENDIAN too. + (DEFAULT_ASM_ENDIAN): Define. + (CC1_SPEC, LINK_TARGET_SPEC): Use ENDIAN_SELECT. + * config/rs6000/linux64.h (ASM_SPEC32): Remove endian options. + Update -K PIC clause from sysv4.h. + (ASM_SPEC_COMMON): Use ENDIAN_SELECT. + (LINK_OS_LINUX_EMUL32, LINK_OS_LINUX_EMUL64): Likewise. + +2013-05-06 Alan Modra + + * config/rs6000/rs6000.md (bswapdi 2nd splitter): Don't swap words + twice for little-endian. + (ashrdi3_no_power, ashrdi3): Support little-endian. + +2013-05-06 Oleg Endo + + PR target/55303 + * config/sh/sh.c (sh_rtx_costs): Handle SMIN and SMAX cases. + * config/sh/sh.md (*clips, uminsi3, *clipu, clipu_one): New insns and + related expanders. + * config/sh/iterators.md (SMIN_SMAX): New code iterator. + * config/sh/predicates.md (arith_reg_or_0_or_1_operand, + clips_min_const_int, clips_max_const_int, clipu_max_const_int): + New predicates. + +2013-05-05 Steven Bosscher + John David Anglin + + * config.gcc (hppa*-*-*): Remove MASK_BIG_SWITCH from CPU default. + * config/pa/pa.opt: Make mbig-switch a no-op. + * config/pa/pa.h (TARGET_DEFAULT): Remove MASK_BIG_SWITCH. + (CASE_VECTOR_MODE): Always return SImode. + (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Remove code + for the !TARGET_BIG_SWITCH case. + * config/pa/pa-linux.h: Likewise. + * config/pa/pa-openbsd.h: Likewise. + * config/pa/pa-hpux.h: Define TARGET_DEFAULT to 0. + * config/pa/pa.md (short_jump): Remove define_insn. + (casesi): Remove code for the !TARGET_BIG_SWITCH case. + (casesi0): Remove define_insn. + (type): Remove btable_branch. + (pa_combine_type): Likewise. + (in_nullified_branch_delay): Likewise. + (in_call_delay): Likewise. + (define_delay): Likewise. + (define_insn_reservation "Z3"): Likewise. + (define_insn_reservation "Z4"): Likewise. + * config/pa/pa.c (pa_reorg): Remove code for !TARGET_BIG_SWITCH. + (pa_adjust_insn_length): Remove adjustment for btable branches. + * doc/invoke.texi (HPPA Options): Delete documentation for mbig-switch + and mno-big-switch + +2013-05-05 Uros Bizjak + + * config/i386/sse.md (*vec_extract_0): Merge + from sse2_stored and *sse2_storeq_rex64 using SWI48 mode iterator. + Add m->r,x alternatives. + (*vec_extract_0 splitters): Merge V2DI and V4SI + splitters using SWI48x mode iterator. + (*vec_extract_v2di_0_sse): Rename from *sse2_storeq. Disable for + TARGET_64BIT. Add m->x alternative. + (*vec_extractv4si_mem): Rename from *vec_ext_v4si_mem. + Add o->x alternative. Enable for TARGET_SSE. + (sse_storeq): Remove expander. + (*vec_extractv2di_1): Enable for TARGET_SSE. Split alternatives + with memory input operand. + (*vec_extractv2di_1 splitter): New. + (*vec_extractv4sf_mem): Rename from *vec_extract_v4sf_mem. + * config/i386/i386.md (ssevecmodelower): New mode attribute. + +2013-05-04 Segher Boessenkool + + * config/rs6000/rs6000.c (INT_P): Reformat. Delete obsolete comment. + (INT_LOWPART): Delete. + (extract_MB): Adjust. + (extract_ME): Adjust. + (print_operand): Adjust. + +2013-05-04 Segher Boessenkool + + * config/rs6000/predicates.md (reg_or_add_cint_operand, + reg_or_sub_cint_operand): Delete "HOST_BITS_PER_WIDE_INT == 32" case. + (reg_or_logical_cint_operand, easy_fp_constant, + logical_const_operand): Delete "CONST_DOUBLE" case. + * config/rs6000/rs6000.c (num_insns_constant_wide): Delete + "HOST_BITS_PER_WIDE_INT == 64" test. + (num_insns_constant): Ditto. Delete CONST_DOUBLE DImode/VOIDmode case. + (build_mask64_2_operands): Delete "HOST_BITS_PER_WIDE_INT >= 64" test. + (rs6000_emit_set_const): Delete CONST_DOUBLE case. + (rs6000_emit_set_long_const): Delete "HOST_BITS_PER_WIDE_INT >= 64" + test. + (includes_rldic_lshift_p, includes_rldicr_lshift_p): Delete + CONST_DOUBLE DImode/VOIDmode case. + (INT_P, INT_LOWPART): Delete CONST_DOUBLE case. + (print_operand): Delete "HOST_BITS_PER_WIDE_INT == 32" case. Delete + CONST_DOUBLE VOIDmode case. + (output_toc): Delete "HOST_BITS_PER_WIDE_INT == 32" case. + (rs6000_rtx_costs): Delete CONST_DOUBLE DImode/VOIDmode case. + * config/rs6000/rs6000.md (iordi3, xordi3, splitter for these): + Delete CONST_DOUBLE case. + (splitters for mov FMOVE64 const_double): Delete + "HOST_BITS_PER_WIDE_INT == 32" case. Delete + "HOST_BITS_PER_WIDE_INT >= 64" test. + (splitter for mov DI const_int): Delete "HOST_BITS_PER_WIDE_INT == 32" + case. + (mov DI const_double): Delete. + +2013-05-04 Jakub Jelinek + + * combine.c (combine_simplify_rtx) : If nonzero_bits + on op shows all bits zero in mode of a lowpart subreg, return zero. + +2013-05-03 Michael Meissner + + PR target/57150 + * config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Use DFmode + to save TFmode registers and DImode to save TImode registers for + caller save operations. + (HARD_REGNO_CALL_PART_CLOBBERED): TFmode and TDmode do not need to + mark being partially clobbered since they only use the first + double word. + + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): TFmode + and TDmode only use the upper 64-bits of each VSX register. + +2013-05-03 Bill Schmidt + + * gimple-ssa-strength-reduction.c (slsr_process_phi): Disable. + (find_candidates_in_block): Disable slsr_process_phi. + +2013-05-03 Guozhi Wei + + * coverage.c (coverage_obj_init): Move the construction of gcov + constructor to ... + (build_init_ctor): ... here. + +2013-05-03 Bill Schmidt + + * gimple-ssa-strength-reduction.c (cand_kind): Add CAND_PHI. + (slsr_cand_d): Redefine def_phi. + (stride_status, phi_adjust_status, count_phis_status): New enums. + (find_phi_def): New. + (find_basis_for_base_expr): New. + (find_basis_for_candidate): Handle hidden bases. + (alloc_cand_and_find_basis): Handle phi candidates. + (slsr_process_phi): New. + (create_mul_ssa_cand): Exclude phi base candidates; use integer_onep. + (create_mul_imm_cand): Likewise. + (create_add_ssa_cand): Exclude phi base candidates. + (create_add_imm_cand): Likewise. + (slsr_process_cast): Likewise. + (slsr_process_copy): Likewise. + (find_candidates_in_block): Handle phi candidates. + (dump_candidate): Likewise. + (unconditional_cands): Delete. + (unconditional_cands_with_known_stride_p): Delete. + (phi_dependent_cand_p): New. + (cand_increment): Handle phi-dependent candidates. + (replace_dependent): Delete. + (replace_mult_candidate): New. + (replace_unconditional_candidate): New. + (incr_vec_index): Move to avoid forward reference. + (create_add_on_incoming_edge): New. + (create_phi_basis): New. + (replace_dependents): Delete. + (replace_conditional_candidate): New. + (phi_add_costs): New. + (replace_uncond_cands_and_profitable_phis): New. + (record_increment): Handle phi adjustments. + (record_phi_increments): New. + (record_increments): Handle phi adjustments. + (phi_incr_cost): New. + (lowest_cost_path): Handle phis. + (total_savings): Likewise. + (analyze_increments): Likewise. + (ncd_with_phi): New. + (ncd_of_cand_and_phis): New. + (nearest_common_dominator_for_cands): Handle phi increments. + (all_phi_incrs_profitable): New. + (replace_profitable_candidates): Handle phi-dependent candidates. + (analyze_candidates_and_replace): Likewise. + +2013-05-03 Teresa Johnson + + PR bootstrap/57154 + * sched-rgn.c (compute_dom_prob_ps): Ensure accumulated probabilities + do not exceed REG_BR_PROB_BASE. + +2013-05-03 Jeff Law + + PR tree-optimization/57144 + * tree-vrp.c (simplify_cond_using_ranges): Verify the constant + operand of the condition will bit into the new type when eliminating + a cast feeding a condition. + +2013-05-03 Jakub Jelinek + + PR rtl-optimization/57130 + * combine.c (make_compound_operation) : Pass SET instead + of COMPARE as in_code to the recursive call if needed. + +2013-05-03 Uros Bizjak + + * config/i386/i386.md (isa): Add x64_sse4_noavx and x64_avx members. + (enabled): Handle new members. + * config/i386/sse.md (*vec_concatv2si): Merge from + *vec_concatv2si_sse2 and vec_concatv2si_sse. + (vec_concatv2di): Merge with *vec_concatv2di_rex64. + +2013-05-03 Joern Rennecke + + PR tree-optimization/57027 + * tree-ssa-math-opts.c (convert_mult_to_fma): When checking + for fnms opportunity, check we got the prerequisite kind + of tree / gimple before using accessor functions. + +2013-05-03 Richard Biener + + * double-int.h (lshift): New overload without precision + and arith argument. + (operator *=, operator +=, operator -=): Move ... + * double-int.c (operator *=, operator +=, operator -=): ... here + and implement more efficiently. + (mul_double_with_sign): Remove. + (lshift_double): Adjust to take unsinged shift argument, push + dispatching code to callers. + (mul_double_wide_with_sign): Add early out for callers that + are not interested in high parts or overflow. + (lshift): New function. + (lshift, rshift, alshift, arshift, llshift, lrshift): Add + dispatch code here. + (lrotate, rrotate): Use logical shifts. + * expr.c (get_inner_reference): Use lshift. + * fixed-value.c (do_fixed_divide): Likewise. + * tree-dfa.c (get_ref_base_and_extent): Likewise. + * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise. + (indirect_refs_may_alias_p): Likewise. + (stmt_kills_ref_p_1): Likewise. + +2013-05-03 Vidya Praveen + + * config/aarch64/aarch64-simd.md (simd_fabd): Correct the description. + +2013-05-03 Vidya Praveen + + * config/aarch64/aarch64-simd.md (*fabd_scalar3): Support + scalar form of FABD instruction. + +2013-05-02 Vladimir Makarov + + * lra-constraints.c (process_alt_operands): Add checking alt + number to choose the best alternative. + +2013-05-02 Richard Biener + + * tree-eh.c (cleanup_empty_eh_merge_phis): Remove rename_virts + bitmap and its handling. + (pass_cleanup_eh): Set todo_flags_finish to TODO_verify_ssa. + +2013-05-02 Richard Biener + + PR middle-end/57140 + * tree-inline.c (copy_loops): Properly handle removed loops. + (copy_cfg_body): Mark destination loops for fixup if source + loops needed fixup. + +2013-05-02 Greta Yorsh + + PR target/56732 + * config/arm/arm.c (arm_expand_epilogue): Check really_return before + generating simple_return for naked functions. + +2013-05-02 Martin Jambor + + PR middle-end/56988 + * ipa-prop.h (ipa_agg_replacement_value): New flag by_ref. + * ipa-cp.c (ipa_get_indirect_edge_target_1): Also check that by_ref + flags match. + (find_aggregate_values_for_callers_subset): Fill in the by_ref flag of + ipa_agg_replacement_value structures. + (known_aggs_to_agg_replacement_list): Likewise. + * ipa-prop.c (write_agg_replacement_chain): Stream by_ref flag. + (read_agg_replacement_chain): Likewise. + (ipcp_transform_function): Also check that by_ref flags match. + +2013-05-02 Richard Biener + + * graphds.h (struct graph): Add obstack member. + * graphds.c (new_graph): Initialize obstack and allocate + vertices from it. + (add_edge): Allocate edge from the obstack. + (free_graph): Free the obstack instead of all edges and vertices. + +2013-05-02 Teresa Johnson + + * loop-unswitch.c (unswitch_loop): Use helper routines with rounding + divides. + * cfg.c (update_bb_profile_for_threading): Ditto. + * tree-inline.c (copy_bb): Ditto. + (copy_edges_for_bb): Ditto. + (initialize_cfun): Ditto. + (copy_cfg_body): Ditto. + (expand_call_inline): Ditto. + * ipa-inline-analysis.c (estimate_edge_size_and_time): Ditto. + (estimate_node_size_and_time): Ditto. + (inline_merge_summary): Ditto. + * cgraphclones.c (cgraph_clone_edge): Ditto. + (cgraph_clone_node): Ditto. + * sched-rgn.c (compute_dom_prob_ps): Ditto. + (compute_trg_info): Ditto. + +2013-05-02 Ian Bolton + + * config/aarch64/aarch64.md (movsi_aarch64): Only allow to/from + S reg when fp attribute set. + (movdi_aarch64): Only allow to/from D reg when fp attribute set. + +2013-05-02 Ian Bolton + + * config/aarch64/aarch64.md (*and_one_cmpl3_compare0): + New pattern. + (*and_one_cmplsi3_compare0_uxtw): Likewise. + (*and_one_cmpl_3_compare0): Likewise. + (*and_one_cmpl_si3_compare0_uxtw): Likewise. + +2013-05-02 Richard Biener + + * tree-scalar-evolution.c (scev_info_hasher): Remove. + (struct instantiate_cache_entry): New type. + (struct instantiate_cache_entry_hasher): New hashtable descriptor. + (struct instantiate_cache_type): New type. + (set_instantiated_value, get_instantiated_value): Remove. + (get_instantiated_value_entry): New function. + (instantiate_scev_name): Use the new cache and adjust. + (instantiate_scev_poly): Adjust. + (instantiate_scev_binary): Likewise. + (instantiate_array_ref): Likewise. + (instantiate_scev_convert): Likewise. + (instantiate_scev_not): Likewise. + (instantiate_scev_3): Likewise. + (instantiate_scev_2): Likewise. + (instantiate_scev_r): Likewise. + (instantiate_scev): Likewise. + (resolve_mixers): Likewise. + +2013-05-01 Vladimir Makarov + + PR target/57091 + * lra-constraints.c (best_small_class_operands_num): Remove. + (process_alt_operands): Remove small_class_operands_num. Take + small classes operands into losers and only if the operand is not + matched. Modify debugging output. + (curr_insn_transform): Remove best_small_class_operands_num. + Print insn name. + +2013-05-01 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_gimple_fold_builtin.c): Fold more modes for reduc_splus_. + * config/aarch64/aarch64-simd-builtins.def + (reduc_splus_): Add new modes. + (reduc_uplus_): New. + * config/aarch64/aarch64-simd.md (aarch64_addvv4sf): Remove. + (reduc_uplus_v4sf): Likewise. + (reduc_splus_v4sf): Likewise. + (aarch64_addv): Likewise. + (reduc_uplus_): Likewise. + (reduc_splus_): Likewise. + (aarch64_addvv2di): Likewise. + (reduc_uplus_v2di): Likewise. + (reduc_splus_v2di): Likewise. + (aarch64_addvv2si): Likewise. + (reduc_uplus_v2si): Likewise. + (reduc_splus_v2si): Likewise. + (reduc_plus_): New. + (reduc_plus_v2di): Likewise. + (reduc_plus_v2si): Likewise. + (reduc_plus_v4sf): Likewise. + (aarch64_addpv4sf): Likewise. + * config/aarch64/arm_neon.h + (vaddv_<8, 16, 32, 64): Rewrite using builtins. + * config/aarch64/iterators.md (unspec): Remove UNSPEC_ADDV, + add UNSPEC_SADDV, UNSPEC_UADDV. + (SUADDV): New. + (sur): Add UNSPEC_SADDV, UNSPEC_UADDV. + +2013-05-01 James Greenhalgh + + * config/aarch64/arm_neon.h + (v_<8, 16, 32, 64>): Rewrite using builtins. + +2013-05-01 James Greenhalgh + + * config/aarch64/aarch64-builtins + (aarch64_gimple_fold_builtin): Fold reduc__ builtins. + +2013-05-01 James Greenhalgh + + * config/aarch64/aarch64-simd-builtins.def + (reduc_smax_): New. + (reduc_smin_): Likewise. + (reduc_umax_): Likewise. + (reduc_umin_): Likewise. + (reduc_smax_nan_): Likewise. + (reduc_smin_nan_): Likewise. + (fmax): Remove. + (fmin): Likewise. + (smax): Update for V2SF, V4SF and V2DF modes. + (smin): Likewise. + (smax_nan): New. + (smin_nan): Likewise. + * config/aarch64/aarch64-simd.md (3): Rename to... + (3): ...This, refactor. + (s3): New. + (3): Likewise. + (reduc__): Refactor. + (reduc__v4sf): Likewise. + (reduc__v2si): Likewise. + (aarch64_: Remove. + * config/aarch64/arm_neon.h (vmax_f<32,64>): Rewrite to use + new builtin names. + (vmin_f<32,64>): Likewise. + * config/iterators.md (unspec): Add UNSPEC_FMAXNMV, UNSPEC_FMINNMV. + (FMAXMIN): New. + (su): Add mappings for smax, smin, umax, umin. + (maxmin): New. + (FMAXMINV): Add UNSPEC_FMAXNMV, UNSPEC_FMINNMV. + (FMAXMIN): Rename as... + (FMAXMIN_UNS): ...This. + (maxminv): Remove. + (fmaxminv): Likewise. + (fmaxmin): Likewise. + (maxmin_uns): New. + (maxmin_uns_op): Likewise. + +2013-05-01 James Greenhalgh + + * config/aarch64/arm_neon.h + (vac_f<32, 64>): Rename to... + (vca_f<32, 64>): ...this, reimpliment in C. + (vca_f<32, 64>): Reimpliment in C. + +2013-05-01 James Greenhalgh + + * config/aarch64/aarch64-simd.md (*aarch64_fac): New. + * config/aarch64/iterators.md (FAC_COMPARISONS): New. + +2013-05-01 James Greenhalgh + + * config/aarch64/aarch64-simd.md + (vcond_internal): Handle special cases for constant masks. + (vcond): Allow nonmemory_operands for outcome vectors. + (vcondu): Likewise. + (vcond): New. + +2013-05-01 James Greenhalgh + + * config/aarch64/aarch64-builtins.c (BUILTIN_VALLDI): Define. + (aarch64_fold_builtin): Add folding for cm. + * config/aarch64/aarch64-simd-builtins.def + (cmeq): Update to BUILTIN_VALLDI. + (cmgt): Likewise. + (cmge): Likewise. + (cmle): Likewise. + (cmlt): Likewise. + * config/aarch64/arm_neon.h + (vc_<8,16,32,64>): Remap + to builtins or C as appropriate. + +2013-05-01 James Greenhalgh + + * config/aarch64/aarch64-simd-builtins.def (cmhs): Rename to... + (cmgeu): ...This. + (cmhi): Rename to... + (cmgtu): ...This. + * config/aarch64/aarch64-simd.md + (simd_mode): Add SF. + (aarch64_vcond_internal): Use new names for unsigned comparison insns. + (aarch64_cm): Rewrite to not use UNSPECs. + * config/aarch64/aarch64.md (*cstore_neg): Rename to... + (cstore_neg): ...This. + * config/aarch64/iterators.md + (VALLF): new. + (unspec): Remove UNSPEC_CM. + (COMPARISONS): New. + (UCOMPARISONS): Likewise. + (optab): Add missing comparisons. + (n_optab): New. + (cmp_1): Likewise. + (cmp_2): Likewise. + (CMP): Likewise. + (cmp): Remove. + (VCMP_S): Likewise. + (VCMP_U): Likewise. + (V_cmp_result): Add DF, SF modes. + (v_cmp_result): Likewise. + (v): Likewise. + (vmtype): Likewise. + * config/aarch64/predicates.md (aarch64_reg_or_fp_zero): New. + +2013-05-01 Greta Yorsh + + * config/arm/thumb2.md (thumb2_smaxsi3,thumb2_sminsi3): Convert + define_insn to define_insn_and_split. + (thumb32_umaxsi3,thumb2_uminsi3): Likewise. + (thumb2_negdi2,thumb2_abssi2,thumb2_neg_abssi2): Likewise. + (thumb2_mov_scc,thumb2_mov_negscc,thumb2_mov_notscc): Likewise. + (thumb2_movsicc_insn,thumb2_and_scc,thumb2_ior_scc): Likewise. + (thumb2_negscc): Likewise. + +2013-04-30 Greta Yorsh + + * config/arm/thumb2.md (thumb2_incscc, thumb2_decscc): Delete. + +2013-04-30 Greta Yorsh + + * config/arm/thumb2.md: Remove trailing whitespaces. + +2013-04-30 Richard Sandiford + + * explow.c (plus_constant): Pass "mode" to immed_double_int_const. + Use gen_int_mode rather than GEN_INT. + +2013-04-30 H.J. Lu + + * value-prof.c (stream_in_histogram_value): Remove the strayed + debug_gimple_stmt. + +2013-04-30 Richard Biener + + PR middle-end/57122 + * cfghooks.c (split_edge): Properly check for the loop latch edge. + +2013-04-30 Richard Biener + + PR middle-end/57107 + * tree-eh.c (sink_clobbers): Preserve virtual SSA form. + +2013-04-30 Andrey Belevantsev + + PR rtl-optimization/56957 + PR rtl-optimization/57105 + * sel-sched.c (move_op_orig_expr_found): Remove insn_emitted + variable. Use just INSN_UID for determining whether an insn + should be only disconnected from the insn stream. + * sel-sched-ir.h (EXPR_WAS_CHANGED): Remove. + +2013-04-30 Jakub Jelinek + + PR tree-optimization/57104 + * tsan.c (instrument_expr): Don't instrument accesses to + DECL_HARD_REGISTER VAR_DECLs. + +2013-04-30 Richard Biener + + * function.h (loops_for_fn): New inline function. + (set_loops_for_fn): Likewise. + * cfgloop.h (place_new_loop): Add struct function parameter. + (get_loop): Likewise. + (get_loops): Likewise. + (number_of_loops): Likewise. + (fel_next): Adjust. + (fel_init): Likewise. + * cfg.c (get_loop_copy): Adjust. + * cfgloop.c (flow_loops_dump): Likewise. + (record_loop_exits): Likewise. + (verify_loop_structure): Likewise. + * cfgloopanal.c (mark_irreducible_loops): Likewise. + (estimate_reg_pressure_cost): Likewise. + (mark_loop_exit_edges): Likewise. + * cfgloopmanip.c (place_new_loop): Likewise. + (add_loop): Likewise. + (duplicate_loop): Likewise. + * graph.c (draw_cfg_nodes): Likewise. + * graphite-clast-to-gimple.c (translate_clast_user): Likewise. + * graphite-sese-to-poly.c (build_scop_scattering): Likewise. + (extract_affine_chrec): Likewise. + (build_scop_iteration_domain): Likewise. + * graphite.c (graphite_initialize): Likewise. + * ira-build.c (create_loop_tree_nodes): Likewise. + (more_one_region_p): Likewise. + (rebuild_regno_allocno_maps): Likewise. + (mark_loops_for_removal): Likewise. + (mark_all_loops_for_removal): Likewise. + (remove_unnecessary_regions): Likewise. + (ira_build): Likewise. + * ira-emit.c (setup_entered_from_non_parent_p): Likewise. + * loop-init.c (fix_loop_structure): Likewise. + (gate_rtl_move_loop_invariants): Likewise. + (gate_rtl_unswitch): Likewise. + (gate_rtl_unroll_and_peel_loops): Likewise. + (rtl_doloop): Likewise. + * lto-streamer-in.c (input_cfg): Likewise. + * lto-streamer-out.c (output_cfg): Likewise. + * modulo-sched.c (sms_schedule): Likewise. + * predict.c (tree_estimate_probability): Likewise. + (tree_estimate_probability_driver): Likewise. + (estimate_loops): Likewise. + * tree-cfg.c (fixup_loop_arrays_after_move): Likewise. + (move_sese_region_to_fn): Likewise. + (debug_loop_num): Likewise. + * tree-chrec.c (chrec_evaluate): Likewise. + (hide_evolution_in_other_loops_than_loop): Likewise. + (chrec_component_in_loop_num): Likewise. + (reset_evolution_in_loop): Likewise. + (evolution_function_is_invariant_rec_p): Likewise. + * tree-if-conv.c (main_tree_if_conversion): Likewise. + * tree-inline.c (copy_loops): Likewise. + (copy_cfg_body): Likewise. + (tree_function_versioning): Likewise. + * tree-loop-distribution.c (rdg_flag_loop_exits): Likewise. + * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop): + Likewise. + (add_to_evolution_1): Likewise. + (scev_const_prop): Likewise. + * tree-scalar-evolution.h (get_chrec_loop): Likewise. + * tree-ssa-loop-ch.c (copy_loop_headers): Likewise. + * tree-ssa-loop-im.c (analyze_memory_references): Likewise. + (tree_ssa_lim_initialize): Likewise. + * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa): Likewise. + (verify_loop_closed_ssa): Likewise. + * tree-ssa-loop.c (tree_ssa_loop_init): Likewise. + (tree_ssa_loop_im): Likewise. + (tree_ssa_loop_unswitch): Likewise. + (tree_vectorize): Likewise. + (check_data_deps): Likewise. + (tree_ssa_loop_ivcanon): Likewise. + (tree_ssa_loop_bounds): Likewise. + (tree_complete_unroll): Likewise. + (tree_complete_unroll_inner): Likewise. + (tree_parallelize_loops): Likewise. + (tree_ssa_loop_prefetch): Likewise. + (tree_ssa_loop_ivopts): Likewise. + * tree-ssa.c (execute_update_addresses_taken): Liekwise. + * tree-vectorizer.c (vectorize_loops): Likewise. + +2013-04-29 Mike Frysinger + + * config/arm/bpabi.h (EABI_LINK_SPEC): Define. + (BPABI_LINK_SPEC): Use new EABI_LINK_SPEC. + * config/arm/linux-eabi.h (LINK_SPEC): Replace BE8_LINK_SPEC + with EABI_LINK_SPEC. + +2013-04-29 Uros Bizjak + + PR target/44578 + * config/i386/i386.md (*zero_extendsidi2): Add "!" to m->?*y + alternative. + +2013-04-29 Vladimir Makarov + + PR target/57097 + * lra-constraints.c (process_alt_operands): Discourage a bit more + using memory for pseudos. Print cost dump for alternatives. + Modify cost values for conflicts with early clobbers. + (curr_insn_transform): Spill pseudos reassigned to NO_REGS. + +2013-04-29 Uros Bizjak + + PR target/57098 + * config/i386/i386.c (ix86_expand_vec_perm): Validize constant memory. + +2013-04-29 Ian Bolton + + * config/aarch64/aarch64.md (movsi_aarch64): Support LDR/STR + from/to S register. + (movdi_aarch64): Support LDR/STR from/to D register. + +2013-04-29 Ian Bolton + + * common/config/aarch64/aarch64-common.c: Enable REE pass at O2 + or higher by default. + +2013-04-29 Richard Biener + + PR middle-end/57075 + * tree-inline.c (copy_edges_for_bb): Still split the bbs, + even if not adding abnormal edges for calls that can make + abnormal gotos. + +2013-04-29 Richard Biener + + PR middle-end/57103 + * tree-cfg.c (move_stmt_op): Fix condition under which to update + TREE_BLOCK. + (move_stmt_r): Remove redundant checking. + +2013-04-29 Teresa Johnson + + PR bootstrap/57077 + * basic-block.h (apply_scale): New function. + (apply_probability): Use apply_scale. + * gimple-streamer-in.c (input_bb): Ditto. + * lto-streamer-in.c (input_cfg): Ditto. + * lto-cgraph.c (merge_profile_summaries): Ditto. + * tree-optimize.c (execute_fixup_cfg): Ditto. + * tree-inline.c (copy_bb): Update comment to use apply_scale. + (copy_edges_for_bb): Ditto. + (copy_cfg_body): Ditto. + +2013-04-29 Tom de Vries + + * tree-ssa-tail-merge.c (find_same_succ_bb): Skip loop latch bbs. + (replace_block_by): Don't set LOOPS_NEED_FIXUP. + (tail_merge_optimize): Handle current_loops == NULL. + +2013-04-26 Jeff Law + + * tree-vrp.c (range_fits_type_p): Move to earlier point in file. + (simplify_cond_using_ranges): Generalize code to simplify + COND_EXPRs where one argument is a constant and the other + is an SSA_NAME created by an integral type conversion. + +2013-04-29 Kyrylo Tkachov + + * config/arm/arm.md (store_minmaxsi): Use only when + optimize_insn_for_size_p. + +2013-04-29 Christian Bruel + + PR target/57108 + * sh.md (tstsi_t_zero_extract_eq): Set mode for operand 0. + +2013-04-29 Richard Biener + + PR middle-end/57089 + * omp-low.c (expand_omp_taskreg): If the parent function had a broken + loop tree make sure to schedule a fixup for the child as well. + (expand_omp_for_generic): Properly add loops. + (expand_omp_for_static_nochunk): Likewise. + (expand_omp_for_static_chunk): Likewise. + (expand_omp_for): For the degenerate case fixup loops. + (expand_omp_sections): Fix default bb placement in loops. + (expand_omp_atomic_pipeline): Properly add loops. + +2013-04-29 Kyrylo Tkachov + + * predict.c: Fix typo in comment above #define PROB_VERY_UNLIKELY. + +2013-04-29 Tom de Vries + + * tree-ssa-tail-merge.c: Update header comment. + +2013-04-29 James Greenhalgh + + * config/aarch64/arm_neon.h + (vcvt_f<32,64>_s<32,64>): Rewrite in C. + (vcvt_f<32,64>_s<32,64>): Rewrite using builtins. + (vcvt__f<32,64>_f<32,64>): Likewise. + (vcvt_<32,64>_f<32,64>): Likewise. + (vcvta_<32,64>_f<32,64>): Likewise. + (vcvtm_<32,64>_f<32,64>): Likewise. + (vcvtn_<32,64>_f<32,64>): Likewise. + (vcvtp_<32,64>_f<32,64>): Likewise. + +2013-04-29 James Greenhalgh + + * config/aarch64/aarch64-simd.md + (2): New, maps to fix, fixuns. + (2): New, maps to + fix_trunc, fixuns_trunc. + (ftrunc2): New. + * config/aarch64/iterators.md (optab): Add fix, fixuns. + (fix_trunc_optab): New. + +2013-04-29 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_builtin_vectorized_function): Vectorize over ifloorf, + iceilf, lround, iroundf. + +2013-04-29 Uros Bizjak + + PR target/54349 + * config/i386/i386.h (enum ix86_tune_indices) + : + New, split from X86_TUNE_INTER_UNIT_MOVES. + : Remove. + (TARGET_INTER_UNIT_MOVES_TO_VEC): New define. + (TARGET_INTER_UNIT_MOVES_FROM_VEC): Ditto. + (TARGET_INTER_UNIT_MOVES): Remove. + * config/i386/i386.c (initial_ix86_tune_features): Update. + Disable X86_TUNE_INTER_UNIT_MOVES_FROM_VEC for m_ATHLON_K8 only. + (ix86_expand_convert_uns_didf_sse): Use + TARGET_INTER_UNIT_MOVES_TO_VEC instead of TARGET_INTER_UNIT_MOVES. + (ix86_expand_vector_init_one_nonzero): Ditto. + (ix86_expand_vector_init_interleave): Ditto. + (inline_secondary_memory_needed): Return true for moves from SSE class + registers for !TARGET_INTER_UNIT_MOVES_FROM_VEC targets and for moves + to SSE class registers for !TARGET_INTER_UNIT_MOVES_TO_VEC targets. + * config/i386/constraints.md (Yi, Ym): Depend on + TARGET_INTER_UNIT_MOVES_TO_VEC. + (Yj, Yn): New constraints. + * config/i386/i386.md (*movdi_internal): Change constraints of + operand 1 from Yi to Yj and from Ym to Yn. + (*movsi_internal): Ditto. + (*movdf_internal): Ditto. + (*movsf_internal): Ditto. + (*float2_1): Use + TARGET_INTER_UNIT_MOVES_TO_VEC instead of TARGET_INTER_UNIT_MOVES. + (*float2_1 splitters): Ditto. + (floatdi2_i387_with_xmm): Ditto. + (floatdi2_i387_with_xmm splitters): Ditto. + * config/i386/sse.md (movdi_to_sse): Ditto. + (sse2_stored): Change constraint of operand 1 from Yi to Yj. + Use TARGET_INTER_UNIT_MOVES_FROM_VEC instead of + TARGET_INTER_UNIT_MOVES. + (sse_storeq_rex64): Change constraint of operand 1 from Yi to Yj. + (sse_storeq_rex64 splitter): Use TARGET_INTER_UNIT_MOVES_FROM_VEC + instead of TARGET_INTER_UNIT_MOVES. + * config/i386/mmx.md (*mov_internal): Change constraint of + operand 1 from Yi to Yj and from Ym to Yn. + +2013-04-29 James Greenhalgh + + * config/aarch64/aarch64-simd-builtins.def (vec_unpacks_hi_): New. + (float_truncate_hi_): Likewise. + (float_extend_lo_): Likewise. + (float_truncate_lo_): Likewise. + * config/aarch64/aarch64-simd.md (vec_unpacks_lo_v4sf): New. + (aarch64_float_extend_lo_v2df): Likewise. + (vec_unpacks_hi_v4sf): Likewise. + (aarch64_float_truncate_lo_v2sf): Likewise. + (aarch64_float_truncate_hi_v4sf): Likewise. + (vec_pack_trunc_v2df): Likewise. + (vec_pack_trunc_df): Likewise. + +2013-04-29 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_fold_builtin): Fold float conversions. + * config/aarch64/aarch64-simd-builtins.def + (floatv2si, floatv4si, floatv2di): New. + (floatunsv2si, floatunsv4si, floatunsv2di): Likewise. + * config/aarch64/aarch64-simd.md + (2): New, expands to float and floatuns. + * config/aarch64/iterators.md (FLOATUORS): New. + (optab): Add float, floatuns. + (su_optab): Likewise. + +2013-04-29 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_builtin_vectorized_function): Use new names for + fcvt builtins. + * config/aarch64/aarch64-simd-builtins.def (fcvtzs): Split as... + (lbtruncv2sf, lbtruncv4sf, lbtruncv2df): ...This. + (fcvtzu): Split as... + (lbtruncuv2sf, lbtruncuv4sf, lbtruncuv2df): ...This. + (fcvtas): Split as... + (lroundv2sf, lroundv4sf, lroundv2df, lroundsf, lrounddf): ...This. + (fcvtau): Split as... + (lrounduv2sf, lrounduv4sf, lrounduv2df, lroundusf, lroundudf): ...This. + (fcvtps): Split as... + (lceilv2sf, lceilv4sf, lceilv2df): ...This. + (fcvtpu): Split as... + (lceiluv2sf, lceiluv4sf, lceiluv2df, lceilusf, lceiludf): ...This. + (fcvtms): Split as... + (lfloorv2sf, lfloorv4sf, lfloorv2df): ...This. + (fcvtmu): Split as... + (lflooruv2sf, lflooruv4sf, lflooruv2df, lfloorusf, lfloorudf): ...This. + (lfrintnv2sf, lfrintnv4sf, lfrintnv2df, lfrintnsf, lfrintndf): New. + (lfrintnuv2sf, lfrintnuv4sf, lfrintnuv2df): Likewise. + (lfrintnusf, lfrintnudf): Likewise. + * config/aarch64/aarch64-simd.md + (l2): Convert to + define_insn. + (aarch64_fcvt): Remove. + * config/aarch64/iterators.md (FCVT): Include UNSPEC_FRINTN. + (fcvt_pattern): Likewise. + +2013-04-29 James Greenhalgh + + * config/aarch64/aarch64-simd.md + (l2): Rename to... + (l2): ... This. + +2013-04-29 James Greenhalgh + + * config/aarch64/arm_neon.h (vrndq_f<32, 64>): Rename to... + (vrndq_f<32, 64>): ...This, implement using builtin. + (vrnd_f32): Implement using builtins. + (vrnd_f<32, 64>): New. + +2013-04-29 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_builtin_vectorized_function): Fold to standard pattern names. + * config/aarch64/aarch64-simd-builtins.def (frintn): New. + (frintz): Rename to... + (btrunc): ...this. + (frintp): Rename to... + (ceil): ...this. + (frintm): Rename to... + (floor): ...this. + (frinti): Rename to... + (nearbyint): ...this. + (frintx): Rename to... + (rint): ...this. + (frinta): Rename to... + (round): ...this. + * config/aarch64/aarch64-simd.md + (aarch64_frint): Delete. + (2): Convert to insn. + * config/aarch64/aarch64.md (unspec): Add UNSPEC_FRINTN. + * config/aarch64/iterators.md (FRINT): Add UNSPEC_FRINTN. + (frint_pattern): Likewise. + (frint_suffix): Likewise. + +2013-04-29 Richard Biener + + PR tree-optimization/57081 + * loop-init.c: Include tree-flow.h. + (loop_optimizer_finalize): Free number of iteration estimates. + * Makefile.in (loop-init.o): Add $(TREE_FLOW_H) dependency. + +2013-04-29 Jakub Jelinek + + PR tree-optimization/57083 + * tree-vrp.c (extract_range_from_binary_expr_1): For LSHIFT_EXPR with + non-singleton shift count range, zero extend low_bound for uns case. + + * config/i386/predicates.md (general_vector_operand): New predicate. + * config/i386/i386.c (const_vector_equal_evenodd_p): New function. + (ix86_expand_mul_widen_evenodd): Force op1 resp. op2 into register + if they aren't nonimmediate operands. If their original values + satisfy const_vector_equal_evenodd_p, don't shift them. + * config/i386/sse.md (mul3): Use general_vector_operand + predicates. For the SSE4.1 case force operands[{1,2}] into registers + if not nonimmediate_operand. + (vec_widen_smult_even_v4si): Use nonimmediate_operand predicates + instead of register_operand. + (vec_widen_mult_odd_): Use general_vector_operand predicates. + +2013-04-28 Eric Botcazou + + * stor-layout.c (finalize_size_functions): Allocate a structure and + reset cfun before dumping the functions. + +2013-04-27 Jakub Jelinek + + * config/i386/i386.c (ix86_expand_call): Make cregs_size unsigned. + + PR target/56866 + * config/i386/i386.c (ix86_expand_mul_widen_evenodd): Don't + use xop_pmacsdqh if uns_p. + * config/i386/sse.md (xop_rotr3): Fix up computation of + the immediate rotate count. + +2013-04-26 Vladimir Makarov + + * rtl.h (struct rtx_def): Add comment for field jump. + (LRA_SUBREG_P): New macro. + * recog.c (register_operand): Check LRA_SUBREG_P. + * lra.c (lra): Add note at the end of RTL code. Align non-empty + stack frame. + * lra-spills.c (lra_spill): Align stack after spilling pseudos. + (lra_final_code_change): Skip subreg change for operators. + * lra-eliminations.c (eliminate_regs_in_insn): Make return earlier + if there are no operand changes. + * lra-constraints.c (curr_insn_set): New. + (match_reload): Set LRA_SUBREG_P. + (emit_spill_move): Ditto. + (check_and_process_move): Use curr_insn_set. Process only single + set insns. Don't initialize sec_mem_p and change_p. + (simplify_operand_subreg): Use LRA_SUBREG_P. + (reg_in_class_p): New function. + (process_alt_operands): Use it. Use #if HAVE_ATTR_enabled instead + of #ifdef. Add code to remove cycling. + (process_address): Check EXTRA_CONSTRAINT_STR. Process even if + non-null disp. Reload inner instead of disp when base and index + are null. Try to put lo_sum into register. + (EBB_PROBABILITY_CUTOFF): Redefine probability in percents. + (check_and_process_move): Move code for move cost check to + simple_move_p. Remove equiv_substitution. + (simple_move_p): New function. + (curr_insn_transform): Initialize sec_mem_p and change_p. Set up + curr_insn_set. Call check_and_process_move only for single set + insns. Use the new function. Move call of check_and_process_move + after operand equiv substitution and address process. + +2013-04-26 Jakub Jelinek + + PR go/57045 + * tree-ssa-uninit.c (compute_uninit_opnds_pos): In functions + with nonlocal goto receivers or returns twice calls, ignore + unininitialized values from abnormal edges to nl goto receiver + or returns twice call. + +2013-04-26 Jakub Jelinek + + PR tree-optimization/57051 + * fold-const.c (const_binop): Handle VEC_LSHIFT_EXPR + and VEC_RSHIFT_EXPR if shift count is a multiple of element + bitsize. + +2013-04-26 Richard Biener + + * omp-low.c (finalize_task_copyfn): Do not drop PROP_loops. + (expand_omp_taskreg): Likewise. Mark loops for fixup. + * tree-cfg.c (move_block_to_fn): Remap loop fathers. + (fixup_loop_arrays_after_move): New function. + (move_sese_region_to_fn): Properly outline the loop tree parts + of the SESE region. + +2013-04-26 Uros Bizjak + + * config/i386/i386.md (type, unit): Fix long lines. + +2013-04-26 Richard Biener + + * Makefile.in (lto-streamer-in.o): Add $(CFGLOOP_H) dependency. + (lto-streamer-out.o): Likewise. + * cfgloop.c (init_loops_structure): Export, add struct function + argument and adjust. + (flow_loops_find): Adjust. + * cfgloop.h (enum loop_estimation): Add EST_LAST. + (init_loops_structure): Declare. + * lto-streamer-in.c: Include cfgloop.h. + (input_cfg): Input the loop tree. + * lto-streamer-out.c: Include cfgloop.h. + (output_cfg): Output the loop tree. + (output_struct_function_base): Do not drop PROP_loops. + +2013-03-26 Richard Biener + + * tree-cfg.c (execute_build_cfg): Build the loop tree. + (pass_build_cfg): Provide PROP_loops. + (move_sese_region_to_fn): Remove loops that are outlined into fn + for now. + * tree-inline.c: Include cfgloop.h. + (initialize_cfun): Do not drop PROP_loops. + (copy_loops): New function. + (copy_cfg_body): Copy loop structure. + (tree_function_versioning): Initialize destination loop tree. + * tree-ssa-loop.c (pass_tree_loop_init): Do not provide PROP_loops. + (pass_parallelize_loops): Do IL verification. + * loop-init.c (loop_optimizer_init): Fixup loops if required. + * tree-optimize.c (execute_fixup_cfg): If we need to cleanup + the CFG make sure we fixup loops as well. + * tree-ssa-tail-merge.c: Include cfgloop.h. + (replace_block_by): When merging loop latches mark loops for fixup. + * lto-streamer-out.c (output_struct_function_base): Drop + PROP_loops for now. + * tree-ssa-phiopt.c: Include tree-scalar-evolution.h. + (tree_ssa_cs_elim): Initialize the loop optimizer and SCEV. + * ipa-split.c: Include cfgloop.h. + (split_function): Add the new return block to the loop tree root. + * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Return + whether we have removed the forwarder block. + (merge_phi_nodes): If we removed a forwarder mark loops for fixup. + * cfgloop.h (place_new_loop): Declare. + * cfgloopmanip.c (place_new_loop): Export. + * Makefile.in (asan.o): Add $(CFGLOOP_H) dependency. + (tree-switch-conversion.o): Likewise. + (tree-complex.o): Likewise. + (tree-inline.o): Likewise. + (tree-ssa-tailmerge.o): Likewise. + (ipa-split.o): Likewise. + (tree-ssa-phiopt.o): Add $(SCEV_H) dependency. + (tree-ssa-copy.o): Likewise. + * tree-switch-conversion.c: Include cfgloop.h + (process_switch): If we emit a bit-test cascade, schedule loops + for fixup. + * tree-complex.c: Include cfgloop.h. + (expand_complex_div_wide): Properly add new basic-blocks to loops. + * asan.c: Include cfgloop.h. + (create_cond_insert_point): Properly add new basic-blocks to + loops, schedule loop fixup. + * cfgloop.c (verify_loop_structure): Check that looks are not + marked for fixup. + * omp-low.c (expand_parallel_call): Properly add new basic-blocks + to loops. + (expand_omp_for_generic): Likewise. + (expand_omp_sections): Likewise. + (expand_omp_atomic_pipeline): Schedule loops for fixup. + * tree-ssa-copy.c: Include tree-scalar-evolution.h. + (fini_copy_prop): Disable DCE in substitute_and_fold if SCEV + is initialized, not when loops are present. + * tree-parloops.c (parallelize_loops): Remove checking here. + * passes.c (init_optimization_passes): Schedule a copy-propagation + pass before complete unrolling of inner loops. + +2013-04-26 Jakub Jelinek + + * Makefile.in (toplev.o): Depend on diagnostic-color.h. + * diagnostic-color.c (should_colorize): Remove _WIN32 version. + (colorize_init): Add argument to _WIN32 version. + * toplev.c: Include diagnostic-color.h. + (process_options): Default to -fdiagnostics-color=auto if + GCC_COLORS env var is in the environment. + * common.opt (fdiagnostics-color=): Add Var and Init. + * doc/invoke.texi (-fdiagnostics-color=): Document that if GCC_COLORS + env var is in the environment, the default is auto rather than never. + + * diagnostic.h (file_name_as_prefix): Add context argument. + * diagnostic.c (file_name_as_prefix): Likewise. Colorize + the string as locus. + * langhooks.c (lhd_print_error_function): Adjust caller. + +2013-04-25 Lawrence Crowl + + * var-tracking.c (shared_hash_def::htab): + Change type to hash_table. Update dependent calls and types. + +2013-04-25 Lawrence Crowl + + * Makefile.in: Update as needed below. + + * alloc-pool.c (static hash_table alloc_pool_hash): + Move declaration to after the type's method definitons. + + * attribs.c (htab_t scoped_attributes::attribute_hash): + Change type to hash_table. Update dependent calls and types. + + * bitmap.c (htab_t bitmap_desc_hash): + Change type to hash_table. Update dependent calls and types. + + * cselib.c (htab_t cselib_hash_table): + Change type to hash_table. Update dependent calls and types. + + * data-streamer.h (struct string_slot): Move to lto-streamer.h. + (hash_string_slot_node): Move implementation into lto-streamer.h + struct string_slot_hasher. + (eq_string_slot_node): Likewise. + + * data-streamer-out.c: Update output_block::string_hash_table + dependent calls and types. + + * dwarf2cfi.c (htab_t trace_index): + Change type to hash_table. Update dependent calls and types. + + * dwarf2out.c (htab_t break_out_includes::cu_hash_table): + Change type to hash_table. Update dependent calls and types. + (htab_t copy_decls_for_unworthy_types::decl_table): Likewise. + (htab_t optimize_external_refs::map): Likewise. + (htab_t output_comp_unit::extern_map): Likewise. + (htab_t output_comdat_type_unit::extern_map): Likewise. + (htab_t output_macinfo::macinfo_htab): Likewise. + (htab_t optimize_location_lists::htab): Likewise. + (htab_t dwarf2out_finish::comdat_type_table): Likewise. + + * except.c (htab_t ehspec_hash_type): + Change type to hash_table. Update dependent calls and types. + (assign_filter_values::ttypes): Likewise. + (assign_filter_values::ehspec): Likewise. + (sjlj_assign_call_site_values::ar_hash): Likewise. + (convert_to_eh_region_ranges::ar_hash): Likewise. + + * gcse.c (htab_t pre_ldst_table): + Change type to hash_table. Update dependent calls and types. + + * ggc-common.c (htab_t saving_htab): + Change type to hash_table. Update dependent calls and types. + (htab_t loc_hash): Likewise. + (htab_t ptr_hash): Likewise. + (call_count): Rename ggc_call_count. + (call_alloc): Rename ggc_call_alloc. + (loc_descriptor): Rename make_loc_descriptor. + (add_statistics): Rename ggc_add_statistics. + + * ggc-common.c (saving_htab): + Change type to hash_table. Update dependent calls and types. + + * gimple.h (struct gimplify_ctx): Move to gimplify-ctx.h. + (push_gimplify_context): Likewise. + (pop_gimplify_context): Likewise. + (struct gimple_temp_hash_elt): Added. + (struct gimplify_hasher): Likewise. + (struct gimplify_ctx.temp_htab): + Change type to hash_table. Update dependent calls and types. + + * gimple-fold.c: Include gimplify-ctx.h. + + * gimple-ssa-strength-reduction.c (htab_t base_cand_map): + Change type to hash_table. Update dependent calls and types. + (base_cand_dump_callback): Rename to ssa_base_cand_dump_callback to + avoid potential global name collision. + + * gimplify.c: Include gimplify-ctx.h. + (struct gimple_temp_hash_elt): Move to gimplify-ctx.h. + (htab_t gimplify_ctx::temp_htab): + Update dependent calls and types for new type hash_table. + (gimple_tree_hash): Move into gimplify_hasher in gimplify-ctx.h. + (gimple_tree_eq): Move into gimplify_hasher in gimplify-ctx.h. + + * gimplify-ctx.h: New. + (struct gimple_temp_hash_elt): Move from gimplify.c. + (class gimplify_hasher): New. + (struct gimplify_ctx): Move from gimple.h. + (htab_t gimplify_ctx::temp_htab): + Change type to hash_table. Update dependent calls and types. + + * graphite-clast-to-gimple.c: Include graphite-htab.h. + (htab_t ivs_params::newivs_index): + Change type to hash_table. Update dependent calls and types. + (htab_t ivs_params::params_index): Likewise. + (htab_t print_generated_program::params_index): Likewise. + (htab_t gloog::newivs_index): Likewise. + (htab_t gloog::params_index): Likewise. + + * graphite.c: Include graphite-htab.h. + 4htab_t graphite_transform_loops::bb_pbb_mapping): + Change type to hash_table. Update dependent calls and types. + + * graphite-clast-to-gimple.h: (extern gloog) Move to graphite-htab.h. + (bb_pbb_map_hash): Fold into bb_pbb_htab_type in graphite-htab.h. + (eq_bb_pbb_map): Fold into bb_pbb_htab_type in graphite-htab.h. + + * graphite-dependences.c: Include graphite-htab.h. + (loop_is_parallel_p): Change hash table type of parameter. + + * graphite-htab.h: New. + (typedef hash_table bb_pbb_htab_type): New. + (extern find_pbb_via_hash): Move from graphite-poly.h. + (extern loop_is_parallel_p): Move from graphite-poly.h. + (extern get_loop_body_pbbs): Move from graphite-poly.h. + + * graphite-poly.h (extern find_pbb_via_hash): Move to graphite-htab.h. + (extern loop_is_parallel_p): Move to graphite-htab.h. + (extern get_loop_body_pbbs): Move to graphite-htab.h. + + * haifa-sched.c (htab_t delay_htab): + Change type to hash_table. Update dependent calls and types. + (htab_t delay_htab_i2): Likewise. + + * ira-color.c (htab_t allocno_hard_regs_htab): + Change type to hash_table. Update dependent calls and types. + + * ira-costs.c (htab_t cost_classes_htab): + Change type to hash_table. Update dependent calls and types. + + * loop-invariant.c (htab_t merge_identical_invariants::eq): + Change type to hash_table. Update dependent calls and types. + + * loop-iv.c (htab_t bivs): + Change type to hash_table. Update dependent calls and types. + + * loop-unroll.c (htab_t opt_info::insns_to_split): + Change type to hash_table. Update dependent calls and types. + (htab_t opt_info::insns_with_var_to_expand): Likewise. + + * lto-streamer.h (struct string_slot): Move from data-streamer.h + (struct string_slot_hasher): New. + (htab_t output_block::string_hash_table): + Change type to hash_table. Update dependent calls and types. + + * lto-streamer-in.c (freeing_string_slot_hasher): New. + (htab_t file_name_hash_table): + Change type to hash_table. Update dependent calls and types. + + * lto-streamer-out.c: Update output_block::string_hash_table dependent + calls and types. + + * lto-streamer.c (htab_t tree_htab): + Change type to hash_table. Update dependent calls and types. + + * omp-low.c: Include gimplify-ctx.h. + + * passes.c (htab_t name_to_pass_map): + Change type to hash_table. Update dependent calls and types. + (pass_traverse): Rename to passes_pass_traverse. + + * plugin.c (htab_t event_tab): + Change type to hash_table. Update dependent calls and types. + + * postreload-gcse.c (htab_t expr_table): + Change type to hash_table. Update dependent calls and types. + (dump_hash_table_entry): Rename dump_expr_hash_table_entry. + + * sese.c (debug_rename_map_1): Make extern. + (htab_t copy_bb_and_scalar_dependences::rename_map): + Change type to hash_table. Update dependent calls and types. + + * sese.h (extern debug_rename_map): Move to .c file. + + * store-motion.c (htab_t store_motion_mems_table): + Change type to hash_table. Update dependent calls and types. + + * trans-mem.c (htab_t tm_new_mem_hash): + Change type to hash_table. Update dependent calls and types. + + * tree-browser.c (htab_t TB_up_ht): + Change type to hash_table. Update dependent calls and types. + + * tree-cfg.c (htab_t discriminator_per_locus): + Change type to hash_table. Update dependent calls and types. + + * tree-complex.c: Include tree-hasher.h + (htab_t complex_variable_components): + Change type to hash_table. Update dependent calls and types. + + * tree-eh.c (htab_t finally_tree): + Change type to hash_table. Update dependent calls and types. + + * tree-flow.h (extern int_tree_map_hash): Moved into tree-hasher + struct int_tree_hasher. + (extern int_tree_map_eq): Likewise. + (uid_decl_map_hash): Removed. + (extern decl_tree_map_eq): Likewise. + + * tree-hasher.h: New. + (struct int_tree_hasher): New. + (typedef int_tree_htab_type): New. + + * tree-inline.c: Include gimplify-ctx.h. + + * tree-mudflap.c: Include gimplify-ctx.h. + + * tree-parloops.c: Include tree-hasher.h. + (htab_t eliminate_local_variables_stmt::decl_address): + Change type to hash_table. Update dependent calls and types. + (htab_t separate_decls_in_region::decl_copies): Likewise. + + * tree-scalar-evolution.c (htab_t resolve_mixers::cache): + Change type to hash_table. Update dependent calls and types. + + * tree-sra.c (candidates): + Change type to hash_table. Update dependent calls and types. + + * tree-ssa.c (int_tree_map_eq): Moved into struct int_tree_hasher + in tree-flow.h. + (int_tree_map_hash): Likewise. + + * tree-ssa-dom.c (htab_t avail_exprs): + Change type to hash_table. Update dependent calls and types. + + * tree-ssa-live.c (var_map_base_init::tree_to_index): + Change type to hash_table. Update dependent calls and types. + + * tree-ssa-loop-ivopts.c (struct ivopts_data.inv_expr_tab): + Change type to hash_table. Update dependent calls and types. + + * tree-ssa-phiopt.c (seen_ssa_names): + Change type to hash_table. Update dependent calls and types. + + * tree-ssa-strlen.c (decl_to_stridxlist_htab): + Change type to hash_table. Update dependent calls and types. + + * tree-ssa-uncprop.c (equiv): + Change type to hash_table. Update dependent calls and types. + +2013-04-25 Jakub Jelinek + + PR rtl-optimization/57003 + * regcprop.c (copyprop_hardreg_forward_1): If ksvd.ignore_set_reg, + call note_stores with kill_clobbered_value callback again after + killing regs_invalidated_by_call. + +2013-04-25 James Greenhalgh + + * config/aarch64/aarch64-simd.md + (aarch64_simd_bsl_internal): Rewrite RTL to not use UNSPEC_BSL. + (aarch64_simd_bsl): Likewise. + * config/aarch64/iterators.md (unspec): Remove UNSPEC_BSL. + +2013-04-25 Marek Polacek + + PR tree-optimization/57066 + * builtins.c (fold_builtin_logb): Return +Inf for -Inf. + +2013-04-25 James Greenhalgh + + * config/aarch64/aarch64-simd.md (neg2): Use VDQ iterator. + +2013-04-25 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_fold_builtin): New. + * config/aarch64/aarch64-protos.h (aarch64_fold_builtin): New. + * config/aarch64/aarch64.c (TARGET_FOLD_BUILTIN): Define. + * config/aarch64/aarch64-simd-builtins.def (abs): New. + * config/aarch64/arm_neon.h + (vabs_): Implement using __builtin_aarch64_fabs. + +2013-04-25 James Greenhalgh + Tejas Belagod + + * config/aarch64/aarch64-builtins.c + (aarch64_gimple_fold_builtin): New. + * config/aarch64/aarch64-protos.h (aarch64_gimple_fold_builtin): New. + * config/aarch64/aarch64-simd-builtins.def (addv): New. + * config/aarch64/aarch64-simd.md (addpv4sf): New. + (addvv4sf): Update. + * config/aarch64/aarch64.c (TARGET_GIMPLE_FOLD_BUILTIN): Define. + +2013-04-25 Naveen H.S + + * config/aarch64/aarch64.md + (*cmp_swp__shft_): New pattern. + +2013-04-25 Naveen H.S + + * config/aarch64/aarch64.md (*ngc): New pattern. + (*ngcsi_uxtw): New pattern. + +2013-04-25 Kyrylo Tkachov + Julian Brown + + * config/arm/arm.c (neon_builtin_type_mode): Add T_V4HF. + (TB_DREG): Add T_V4HF. + (v4hf_UP): New macro. + (neon_itype): Add NEON_FLOAT_WIDEN, NEON_FLOAT_NARROW. + (arm_init_neon_builtins): Handle NEON_FLOAT_WIDEN, NEON_FLOAT_NARROW. + Handle initialisation of V4HF. Adjust initialisation of reinterpret + built-ins. + (arm_expand_neon_builtin): Handle NEON_FLOAT_WIDEN, NEON_FLOAT_NARROW. + (arm_vector_mode_supported_p): Handle V4HF. + (arm_mangle_map): Handle V4HFmode. + * config/arm/arm.h (VALID_NEON_DREG_MODE): Add V4HF. + * config/arm/arm_neon_builtins.def: Add entries for + vcvtv4hfv4sf, vcvtv4sfv4hf. + * config/arm/neon.md (neon_vcvtv4sfv4hf): New pattern. + (neon_vcvtv4hfv4sf): Likewise. + * config/arm/neon-gen.ml: Handle half-precision floating point + features. + * config/arm/neon-testgen.ml: Handle Requires_FP_bit feature. + * config/arm/arm_neon.h: Regenerate. + * config/arm/neon.ml (type elts): Add F16. + (type vectype): Add T_float16x4, T_floatHF. + (type vecmode): Add V4HF. + (type features): Add Requires_FP_bit feature. + (elt_width): Handle F16. + (elt_class): Likewise. + (elt_of_class_width): Likewise. + (mode_of_elt): Refactor. + (type_for_elt): Handle F16, fix error messages. + (vectype_size): Handle T_float16x4. + (vcvt_sh): New function. + (ops): Add entries for vcvt_f16_f32, vcvt_f32_f16. + (string_of_vectype): Handle T_floatHF, T_float16, T_float16x4. + (string_of_mode): Handle V4HF. + * doc/arm-neon-intrinsics.texi: Regenerate. + +2013-04-25 James Greenhalgh + + * config/aarch64/aarch64.c (aarch64_print_operand): Fix asm_fprintf + format specifier in 'X' case. + +2013-04-25 Alan Modra + + PR target/57052 + * config/rs6000/rs6000.md (rotlsi3_internal7): Rename to + rotlsi3_internal7le and condition on !BYTES_BIG_ENDIAN. + (rotlsi3_internal8be): New BYTES_BIG_ENDIAN insn. + Repeat for many other rotate/shift and mask patterns using subregs. + Name lshiftrt insns. + (ashrdisi3_noppc64): Rename to ashrdisi3_noppc64be and condition + on WORDS_BIG_ENDIAN. + +2013-04-25 Alan Modra + + * config.gcc: Support little-endian powerpc-linux targets. + * config/rs6000/linux.h (LINK_OS_LINUX_EMUL): Define. + (LINK_OS_LINUX_SPEC): Define. + * config/rs6000/linuxspe.h (TARGET_DEFAULT): + Preserve MASK_LITTLE_ENDIAN. + * config/rs6000/default64.h (TARGET_DEFAULT): Likewise. + * config/rs6000/linuxaltivec.h (TARGET_DEFAULT): Likewise. + * config/rs6000/linux64.h (OPTION_LITTLE_ENDIAN): Don't zero. + (LINK_OS_LINUX_EMUL32, LINK_OS_LINUX_EMUL64): Define. + (LINK_OS_LINUX_SPEC32, LINK_OS_LINUX_SPEC64): Use above. + * config/rs6000/rs6000.c (output_toc): Don't use .tc for TARGET_ELF. + Correct fp word order for little-endian. Don't shift toc entries + smaller than a word for little-endian. + * config/rs6000/rs6000.md (bswaphi2, bswapsi2 split): Comment. + (bswapdi2 splits): Correct low-part subreg for little-endian. + Remove wrong BYTES_BIG_ENDIAN tests, and rename vars to remove + low/high where such is correct only for be. + * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Allow + little-endian for -mcall-aixdesc. + +2013-04-25 Alan Modra + + * config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Use + replace_equiv_address_nv. + +2013-04-25 Alan Modra + + * config/rs6000/rs6000.c (rs6000_emit_set_long_const): Tidy. + +2013-04-24 Vladimir Makarov + + Revert: + 2013-04-24 Vladimir Makarov + * rtl.h (struct rtx_def): ... + +2013-04-24 Vladimir Makarov + + PR rtl-optimizations/57046 + * lra-constraints (split_reg): Set up lra_risky_transformations_p + for multi-reg splits. + +2013-04-24 H.J. Lu + + * config/i386/x86-64.h (ASM_SPEC): Support -mx32. + +2013-04-24 Sterling Augustine + + * dwarf2out.c (skeleton_debug_str_hash, add_skeleton_AT_string) + (comp_dir_string, debug_str_dwo_section): New. + (DEBUG_STR_DWO_SECTION): Rename to ... + (DEBUG_DWO_STR_SECTION): ... this. + (DEBUG_NORM_STR_SECTION): Delete. + (DEBUG_STR_SECTION, DEBUG_STR_SECTION_FLAGS): Edit definitions. + (DEBUG_STR_DWO_SECTION_FLAGS): New. + (find_AT_string): Move most logic to ... + (find_AT_string_in_table): ... here. New. + (add_top_level_skeleton_die_attrs): Call comp_dir_string and + add_skeleton_AT_string. Delete logic. + (output_skeleton_debug_sections): Remove call to + add_top_level_skeleton_die_attrs. + (add_comp_dir_attribute): Move logic to comp_dir_string. + (dwarf2out_init): Initialize debug_str_dwo_section. + (output_indirect_string): Call find_string_form. + (output_indirect_strings): Rewrite. + (prune_unused_types): Empty skeleton_debug_str_hash. + Call get_skeleton_type_unit and add_top_level_skeleton_die_attrs. + (dwarf2out_finish): Call output_indirect_strings. + +2013-04-24 Paolo Carlini + + * doc/cpp.texi: Remove __GXX_EXPERIMENTAL_CXX1Y__. + +2013-04-24 Vladimir Makarov + + * rtl.h (struct rtx_def): Add comment for field jump. + (LRA_SUBREG_P): New macro. + * recog.c (register_operand): Check LRA_SUBREG_P. + * lra.c (lra): Add note at the end of RTL code. Align non-empty + stack frame. + * lra-spills.c (lra_spill): Align stack after spilling pseudos. + (lra_final_code_change): Skip subreg change for operators. + * lra-eliminations.c (eliminate_regs_in_insn): Make return earlier + if there are no operand changes. + * lra-constraints.c (curr_insn_set): New. + (match_reload): Set LRA_SUBREG_P. + (emit_spill_move): Ditto. + (check_and_process_move): Use curr_insn_set. Process only single + set insns. Don't initialize sec_mem_p and change_p. + (simplify_operand_subreg): Use LRA_SUBREG_P. + (reg_in_class_p): New function. + (process_alt_operands): Use it. Use #if HAVE_ATTR_enabled instead + of #ifdef. Add code to remove cycling. + (process_address): Check EXTRA_CONSTRAINT_STR. Process even if + non-null disp. Reload inner instead of disp when base and index + are null. Try to put lo_sum into register. + (EBB_PROBABILITY_CUTOFF): Redefine probability in percents. + (check_and_process_move): Move code for move cost check to + simple_move_p. Remove equiv_substitution. + (simple_move_p): New function. + (curr_insn_transform): Initialize sec_mem_p and change_p. Set up + curr_insn_set. Call check_and_process_move only for single set + insns. Use the new function. Move call of check_and_process_move + after operand equiv substitution and address process. + +2013-04-24 James Greenhalgh + + * config/aarch64/arm_neon.h (vld1_lane*): Fix constraints. + (vld1_dup_<8, 16, 32, 64>): Likewise. + (vld1_<8, 16, 32, 64>): Likewise. + +2013-04-24 Paolo Carlini + + * doc/cpp.texi: Document __GXX_EXPERIMENTAL_CXX1Y__. + +2013-04-24 Marek Polacek + + * tree-scalar-evolution.h (analyze_scalar_evolution): Remove. + * tree-scalar-evolution.c (get_exit_conditions_rec): Likewise. + (select_loops_exit_conditions): Likewise. + (number_of_iterations_for_all_loops): Likewise. + (analyze_scalar_evolution_for_all_loop_phi_nodes): Likewise. + (scev_analysis): Likewise. + +2013-04-02 Catherine Moore + Chao-ying Fu + + * config/mips/micromips.md (jraddiusp): New pattern. + * config/mips/mips.c (mips_expand_epilogue): Use the JRADDIUSP + instruction if possible. + +2013-04-24 Alan Modra + + * config/rs6000/driver-rs6000.c (elf_dcachebsize): Fix comment pasto. + +2013-04-24 Julian Brown + Chung-Lin Tang + + * dwarf2out.c (gen_enumeration_type_die): Fix HOST_BITS_PER_WIDE_INT + dependency behavior in enumeration type DIE generation. Add TODO note + to comments about future DW_FORM_sdata/udata re-work of related code. + +2013-04-23 Lawrence Crowl + + * Makefile.in: Update as needed below. + + * hash-table.h (class hash_table): + Correct many methods with parameter types compare_type to the correct + value_type. (Correct code was unlikely to notice the change.) + (hash_table::elements_with_deleted) New. + (class hashtable::iterator): New. + (hashtable::begin()): New. + (hashtable::end()): New. + (FOR_EACH_HASH_TABLE_ELEMENT): New. + + * statistics.c (statistics_hashes): + Change type to hash_table. Update dependent calls and types. + + * tree-into-ssa.c (var_infos): + Change type to hash_table. Update dependent calls and types. + + * tree-ssa-coalesce.c (struct coalesce_list_d.list): + Change type to hash_table. Update dependent calls and types. + + * tree-ssa-loop-im.c (struct mem_ref.refs): + Change type to hash_table. Update dependent calls and types. + + * tree-ssa-reassoc.c (undistribute_ops_list::ctable): + Change type to hash_table. Update dependent calls and types. + + * tree-ssa-sccvn.c (vn_tables_s::nary): + Change type to hash_table. Update dependent calls and types. + (vn_tables_s::phis): Likewise. + (vn_tables_s::references): Likewise. + + * tree-ssa-sccvn.h (vn_nary_op_eq): Update parameter and return types. + (vn_reference_eq): Update parameter and return types. + + * tree-ssa-structalias.c (pointer_equiv_class_table): + Change type to hash_table. Update dependent calls and types. + (location_equiv_class_table): Likewise. + + * tree-vect-data-refs.c: Consequential changes for making + peeling a hash_table. + + * tree-vect-loop.c (new_loop_vec_info): Dependent hash_table update. + (destroy_loop_vec_info): Dependent hash_table update. + + * tree-vectorizer.h (peeling_htab): + Change type to hash_table. Update dependent calls and types. + +2013-04-23 Shiva Chen + + * lra-assigns.c (find_hard_regno_for): Use lra_reg_val_equal_p + to check the register content is equal or not. + * lra-constraints.c (match_reload): Use lra_assign_reg_val + to assign register content record. + * lra-eliminations.c (update_reg_eliminate): Use + lra_update_reg_val_offset to update register content offset. + * lra-int.h (struct lra_reg): Add offset member. + (lra_reg_val_equal_p): New static inline function. + (lra_update_reg_val_offset): New static inline function. + (lra_assign_reg_val): New static inline function. + * lra.c (lra_create_new_reg): Use lra_assign_reg_val + to assign register content record. + (initialize_lra_reg_info_element): Initial offset to zero. + +2013-04-23 Catherine Moore + + * config/mips/mips.md (*movhi_internal, *movqi_internal): New + operands. Record compression. + +2013-04-23 Xinliang David Li + + * cfghhooks.c (dump_bb_for_graph): Support 'slim' graph dump. + +2013-04-23 Richard Biener + + PR middle-end/57036 + * tree-inline.c (copy_edges_for_bb): Add can_make_abnormal_goto + parameter, only add abnormal goto edges from the copied body + if the call could perform abnormal gotos. + (copy_cfg_body): Adjust. + +2013-04-23 Sofiane Naci + + * config/aarch64/aarch64.md (*mov_aarch64): Add simd attribute. + +2013-04-23 Andreas Schwab + + * coretypes.h (gimple_stmt_iterator): Add struct to make + compatible with C. + +2013-04-23 Richard Biener + + PR tree-optimization/57026 + * tree-vrp.c (simplify_conversion_using_ranges): Do not propagate + from SSA names occuring in abnormal PHI nodes. + +2013-04-22 Andi Kleen + + * lto/lto.c (print_lto_report_1): Fix LTO report names. + +2013-04-22 Andi Kleen + + * lto/lto.c (print_lto_report_1): Declare early. + (read_cgraph_and_symbols): Call print_lto_report_1 early. + +2013-04-22 Andi Kleen + + * common.opt (-flto-report-wpa): Add. + * doc/invoke.texi (-flto-report-wpa): Add. + * lto/lto.c (do_whole_program_analysis): Check for lto-report-wpa. + (lto_main): dito. + +2013-04-22 Xinliang David Li + + * graph.c (draw_cfg_node_succ_edges): Add branch probility as label. + * cfghhooks.c (dump_bb_for_graph): Dump profile count and frquency. + * Makefile.in: New dependency + + David Daney + + * configure.ac (gcc_cv_as_micromips_support): Use the + --fatal-warnings option. + * configure: Regenerate. + +2013-04-22 Marek Polacek + + PR sanitizer/56990 + * tsan.c (instrument_expr): Don't instrument expression + in case its size is zero. + +2013-04-22 Uros Bizjak + + PR target/57032 + Revert: + 2013-03-17 Uros Bizjak + + * config/alpha/alpha.c (TARGET_LRA_P): New define. + +2013-04-22 James Greenhalgh + + * coretypes.h (gimple_stmt_iterator_d): Forward declare. + (gimple_stmt_iterator): New typedef. + * gimple.h (gimple_stmt_iterator): Rename to... + (gimple_stmt_iterator_d): ... This. + * doc/tm.texi.in (TARGET_FOLD_BUILTIN): Detail restriction that + trees be valid for GIMPLE and GENERIC. + (TARGET_GIMPLE_FOLD_BUILTIN): New. + * gimple-fold.c (gimple_fold_call): Call target hook + gimple_fold_builtin. + * hooks.c (hook_bool_gsiptr_false): New. + * hooks.h (hook_bool_gsiptr_false): New. + * target.def (fold_stmt): New. + * doc/tm.texi: Regenerate. + +2013-04-22 Vladimir Makarov + + PR target/57018 + * lra-eliminations.c (mark_not_eliminable): Prevent elimination of + a set sp if no stack realignment. + +2013-04-22 Nick Clifton + + * config.gcc (tilegx-linux): Extend extra_objs rather than + overwriting it. + (tilepro-linux): Likewise. + +2013-04-22 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (CF): Remove. + (CF0, CF1, CF2, CF3, CF4, CF10): New. + (VAR<1-12>): Add MAP parameter. + (BUILTIN_*): Likewise. + * config/aarch64/aarch64-simd-builtins.def: Set MAP parameter. + * config/aarch64/aarch64-simd.md (aarch64_sshl_n): Remove. + (aarch64_ushl_n): Likewise. + (aarch64_sshr_n): Likewise. + (aarch64_ushr_n): Likewise. + (aarch64_): Likewise. + (aarch64_sqrt): Likewise. + * config/aarch64/arm_neon.h (vshl_n_*): Use new builtin names. + (vshr_n_*): Likewise. + +2013-04-22 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_simd_builtin_type_mode): Handle SF types. + (sf_UP): Define. + (BUILTIN_GPF): Define. + (aarch64_init_simd_builtins): Handle SF types. + * config/aarch64/aarch64-simd-builtins.def (frecpe): Add support. + (frecps): Likewise. + (frecpx): Likewise. + * config/aarch64/aarch64-simd.md + (simd_types): Update simd_frcp to simd_frecp. + (aarch64_frecpe): New. + (aarch64_frecps): Likewise. + * config/aarch64/aarch64.md (unspec): Add UNSPEC_FRECP. + (v8type): Add frecp. + (aarch64_frecp): New. + (aarch64_frecps): Likewise. + * config/aarch64/iterators.md (FRECP): New. + (frecp_suffix): Likewise. + * config/aarch64/arm_neon.h + (vrecp_<32, 64>): Convert to using builtins. + +2013-04-22 Christian Bruel + + PR target/56995 + * config/sh/sh.h (enum reg_class): Remove DF_HI_REGS. + (REG_CLASS_NAMES): Idem. + (REG_CLASS_CONTENTS): Idem. + (REGCLASS_HAS_FP_REG): Idem. + * config/sh/sh.c (sh_cannot_change_mode_class): Idem. + (sh_conditional_register_usage): Idem. + +2013-04-21 Jeff Law + + * tree-ssa-forwprop.c (simplify_conversion_from_bitmask): New function. + (ssa_forward_propagate_and_combine): Use it. + +2013-04-19 Vladimir Makarov + + * lra.c: Update the flow chart diagram. + +2013-04-19 Vladimir Makarov + + PR rtl-optimization/56847 + * lra-constraints.c (process_alt_operands): Discourage alternative + with non-matche doffsettable memory constraint fro memory with + known offset. + +2013-04-19 Richard Biener + + PR tree-optimization/56982 + * builtins.def (BUILT_IN_LONGJMP): longjmp is not a leaf + function. + * gimplify.c (gimplify_call_expr): Notice special calls. + (gimplify_modify_expr): Likewise. + * tree-cfg.c (make_abnormal_goto_edges): Handle setjmp-like + abnormal control flow receivers. + (call_can_make_abnormal_goto): Handle cfun->calls_setjmp + in the same way as cfun->has_nonlocal_labels. + (gimple_purge_dead_abnormal_call_edges): Likewise. + (stmt_starts_bb_p): Make setjmp-like abnormal control flow + receivers start a basic-block. + +2013-04-19 Richard Biener + + * tree-vectorizer.h (struct _slp_instance): Move load_permutation + member ... + (struct _slp_tree): ... here. Make it a vector of unsigned ints. + (SLP_INSTANCE_LOAD_PERMUTATION): Remove. + (SLP_TREE_LOAD_PERMUTATION): Add. + (vect_transform_slp_perm_load): Adjust prototype. + * tree-vect-slp.c (vect_free_slp_tree): Adjust. + (vect_free_slp_instance): Likewise. + (vect_create_new_slp_node): Likewise. + (vect_supported_slp_permutation_p): Remove. + (vect_slp_rearrange_stmts): Adjust. + (vect_supported_load_permutation_p): Likewise. Inline + vect_supported_slp_permutation_p here. + (vect_analyze_slp_instance): Compute load permutations per + slp node instead of per instance. + (vect_get_slp_defs): Adjust. + (vect_transform_slp_perm_load): Likewise. + (vect_schedule_slp_instance): Remove redundant code. + (vect_schedule_slp): Remove hack for PR56270, add it ... + * tree-vect-stmts.c (vectorizable_load): ... here, do not + CSE loads for SLP. Adjust. + +2013-04-19 Greta Yorsh + + * config/arm/arm.c (load_multiple_sequence, ldm_stm_operation_p): Fix + spelling in two comments. + +2013-04-19 Greta Yorsh + + PR target/56797 + * config/arm/arm.c (load_multiple_sequence): Require SP + as base register for loads if SP is in the register list. + +2013-04-19 Martin Jambor + + PR tree-optimization/56718 + * ipa-cp.c (ipa_value_from_known_type_jfunc): Moved... + * ipa-prop.c (ipa_binfo_from_known_type_jfunc): ...here, renamed + and made public. Adjusted all callers. + (ipa_intraprocedural_devirtualization): New function. + * ipa-prop.h (ipa_binfo_from_known_type_jfunc): Declare. + (ipa_intraprocedural_devirtualization): Likewise. + * Makefile.in (tree-ssa-pre.o): Add ipa-prop.h to dependencies. + +2013-04-19 Richard Biener + + PR tree-optimization/57000 + * tree-ssa-reassoc.c (pass_reassoc): Add TODO_update_ssa_only_virtuals. + +2013-04-19 Terry Guo + + * config/arm/cortex-m4-fpu.md (cortex_m4_v): Delete cpu unit. + Replace with ... + (cortex_m4_v_a, cortex_m4_v_b): ... new cpu units. + (cortex_m4_v, cortex_m4_exa_va, cortex_m4_exb_vb): New reservations. + (cortex_m4_fmacs): Use new reservations. + (cortex_m4_f_load, cortex_m4_f_store): Likewise. + +2013-04-18 Vladimir Makarov + + PR rtl-optimization/56999 + * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and + related code. + (lra_coalesce): Remove split_origin_bitmap and related code. + * lra.c (lra): Coalesce after undoing inheritance. Recreate live + ranges if necessary. + +2013-04-18 Uros Bizjak + + * config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): + New array. + (ix86_expand_call): Remove clobbered_registers array and use + x86_64_ms_sysv_extra_clobbered_registers instead. + * config/i386/i386.h (x86_64_ms_sysv_extra_clobbered_registers): + Declare here. + * config/i386/predicates.md (call_rex64_ms_sysv_operation): New + predicate. + * config/i386/i386.md (*call_rex64_ms_sysv): Use + call_rex64_ms_sysv_operation predicate. Remove explicit clobbers. + (*call_value_rex64_ms_sysv): Ditto. + +2013-04-18 Cary Coutant + + * dwarf2out.c (output_pubnames): Check die_perennial_p of + parent instead of die_mark. + +2013-04-18 Diego Novillo + + * gimple.c (create_gimple_tmp): New. + (get_expr_type): New. + (build_assign): New. + (build_type_cast): New. + * gimple.h (enum ssa_mode): Define. + (gimple_seq_set_location): New. + * asan.c (build_check_stmt): Change some gimple_build_* calls + to use build_assign and build_type_cast. + +2013-04-18 Richard Biener + + * tree-vect-data-refs.c (vect_analyze_group_access): Properly + handle negative step. Remove redundant checks. + (vect_create_data_ref_ptr): Avoid ICEs with non-constant steps. + * tree-vect-stmts.c (vectorizable_load): Instead of asserting + for negative step and grouped loads fail to vectorize. + +2013-04-18 Steven Bosscher + + * emit-rtl.c (reset_insn_used_flags): New function. + (reset_all_used_flags): Use it. + (verify_insn_sharing): New function. + (verify_rtl_sharing): Fix verification for SEQUENCEs. + +2013-04-18 Jakub Jelinek + + PR tree-optimization/56984 + * tree-vrp.c (register_edge_assert_for_2): For (x >> M) < N + and (x >> M) >= N don't register any assertion if N << M is the + minimum value. + +2013-04-18 Steven Bosscher + + * lower-subreg.c (resolve_simple_move): If called self-recursive, + do not delete_insn insns that have not yet been emitted, only + unlink them with remove_insn. + * df-scan.c (df_insn_delete): Revert r197492. + +2013-04-17 Steven Bosscher + + * emit-rtl.c (link_insn_into_chain): Handle chaining of SEQUENCEs. + * reorg.c (emit_delay_sequence): Simplify with emit-rtl API. + +2013-04-17 Greta Yorsh + + * config/arm/arm.md (movsicc_insn): Convert define_insn into + define_insn_and_split. + (and_scc,ior_scc,negscc): Likewise. + (cmpsi2_addneg, subsi3_compare): Convert to named patterns. + +2013-04-17 Greta Yorsh + + * config/arm/arm.c (use_return_insn): Return 0 for targets that + can benefit from using a sequence of LDRD instructions in epilogue + instead of a single LDM instruction. + +2013-04-17 Manuel López-Ibáñez + + PR 45688 + * doc/extend.texi: Fix typo. + +2013-04-17 Richard Biener + + * tree-vect-slp.c (vect_build_slp_tree_1): Split out from ... + (vect_build_slp_tree): ... here. + (vect_build_slp_tree_1): Compute which stmts of the SLP group + match. Remove special-casing of mismatched complex loads. + (vect_build_slp_tree): Based on the result from vect_build_slp_tree_1 + re-try the match with swapped commutative operands. + (vect_supported_load_permutation_p): Remove special-casing of + mismatched complex loads. + (vect_analyze_slp_instance): Adjust. + +2013-04-17 Richard Biener + + PR rtl-optimization/56921 + * cfgloop.h (struct loop): Add simple_loop_desc member. + (struct niter_desc): Mark with GTY(()). + (simple_loop_desc): Do not use aux field but simple_loop_desc. + * loop-iv.c (get_simple_loop_desc): Likewise. + (free_simple_loop_desc): Likewise. + + Revert + 2013-04-16 Richard Biener + + PR rtl-optimization/56921 + * loop-init.c (pass_rtl_move_loop_invariants): Add + TODO_do_not_ggc_collect to todo_flags_finish. + (pass_rtl_unswitch): Same. + (pass_rtl_unroll_and_peel_loops): Same. + (pass_rtl_doloop): Same. + +2013-04-17 Eric Botcazou + + * tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p): New. + (decl_refs_may_alias_p): Add REF1 and REF2 parameters. + Use nonoverlapping_component_refs_of_decl_p to disambiguate component + references. + (refs_may_alias_p_1): Adjust call to decl_refs_may_alias_p. + * tree-streamer.c (record_common_node): Adjust reference in comment. + +2013-04-17 Terry Guo + + * config/arm/cortex-m4.md: Add a new bypass. + +2013-04-16 Naveen H.S + + * config/aarch64/aarch64.md (*adds__multp2): + New pattern. + (*subs__multp2): New pattern. + (*adds__): New pattern. + (*subs__): New pattern. + +2013-04-16 Naveen H.S + + * config/aarch64/aarch64.md (*adds_mul_imm_): New pattern. + (*subs_mul_imm_): New pattern. + +2013-04-16 David Edelsohn + + PR target/56948 + * config/rs6000/vsx.md (vsx_mov): Add j->r alternative. + (vsx_movti_64bit): Change j->wa to O->wa. Add n->r alternative. + (vsx_movti_32bit): Change j->wa to O->wa. + +2013-04-16 Richard Biener + + PR rtl-optimization/56921 + * loop-init.c (pass_rtl_move_loop_invariants): Add + TODO_do_not_ggc_collect to todo_flags_finish. + (pass_rtl_unswitch): Same. + (pass_rtl_unroll_and_peel_loops): Same. + (pass_rtl_doloop): Same. + +2013-04-16 Greta Yorsh + + * config/arm/arm.c (emit_multi_reg_push): New declaration + for an existing function. + (arm_emit_strd_push): New function. + (arm_expand_prologue): Used here. + (arm_emit_ldrd_pop): New function. + (arm_expand_epilogue): Used here. + (arm_get_frame_offsets): Update condition. + (arm_emit_multi_reg_pop): Add a special case for load of a single + register with writeback. + +2013-04-16 Uros Bizjak + + * doc/invoke.texi (i386 Option): Reword -mstack-protector-guard + description. + +2013-04-16 Richard Biener + + PR tree-optimization/56756 + * tree-ssa-loop-im.c (struct first_mem_ref_loc_1): New functor. + (first_mem_ref_loc): New. + (execute_sm): Place the load temporarily before a previous + access instead of in the latch edge to ensure its SSA dependencies + are defined at points dominating the load. + +2013-04-16 Steven Bosscher + + * cfgrtl.c (cfg_layout_merge_blocks): Revert r184005, implement + correct fix by moving header and footer insn to the footer of + the merged basic block. Clear BB_END of the merged-away block. + + PR middle-end/43631 + * emit-rtl.c (make_note_raw): New function. + (link_insn_into_chain): New static inline function. + (add_insn): Use it. + (add_insn_before, add_insn_after): Factor insn chain linking code... + (add_insn_before_nobb, add_insn_after_nobb): ...here, new functions + using link_insn_into_chain. + (note_outside_basic_block_p): New helper function for emit_note_after + and emit_note_before. + (emit_note_after): Use nobb variant of add_insn_after if the note + should not be contained in a basic block. + (emit_note_before): Use nobb variant of add_insn_before if the note + should not be contained in a basic block. + (emit_note_copy): Use make_note_raw. + (emit_note): Likewise. + * bb-reorder.c (insert_section_boundary_note): Remove hack to set + BLOCK_FOR_INSN to NULL manually for NOTE_INSN_SWITCH_TEXT_SECTIONS. + * jump.c (cleanup_barriers): Use reorder_insns_nobb to avoid making + the moved barrier the tail of the basic block it follows. + * var-tracking.c (pass_variable_tracking): Add TODO_verify_flow. + +2013-04-15 Jakub Jelinek + + PR tree-optimization/56962 + * gimple-ssa-strength-reduction.c (record_increment): Only set + initializer if gimple_assign_rhs_code is {,POINTER_}PLUS_EXPR and + either rhs1 or rhs2 is equal to c->base_expr. + +2013-04-15 Richard Biener + + PR tree-optimization/56933 + * tree-vectorizer.h (struct _stmt_vec_info): Remove read_write_dep + member. + (GROUP_READ_WRITE_DEPENDENCE): Remove. + (STMT_VINFO_GROUP_READ_WRITE_DEPENDENCE): Likewise. + * tree-vect-data-refs.c (vect_analyze_group_access): Move + dependence check ... + vect_analyze_data_ref_dependence (vect_analyze_data_ref_dependence): + ... here. + * tree-vect-stmts.c (new_stmt_vec_info): Do not initialize + GROUP_READ_WRITE_DEPENDENCE. + +2013-04-15 Andreas Krebbel + + * emit-rtl.c (reset_all_used_flags): New function. + (verify_rtl_sharing): Call reset_all_used_flags before and after + performing the checks. + +2013-04-15 Kyrylo Tkachov + + * config/arm/arm.c (const_ok_for_dimode_op): Handle AND case. + * config/arm/arm.md (*anddi3_insn): Change to insn_and_split. + * config/arm/constraints.md (De): New constraint. + * config/arm/neon.md (anddi3_neon): Delete. + (neon_vand): Expand to standard anddi3 pattern. + * config/arm/predicates.md (imm_for_neon_inv_logic_operand): + Move earlier in the file. + (neon_inv_logic_op2): Likewise. + (arm_anddi_operand_neon): New predicate. + +2013-04-15 Rainer Orth + + * configure.ac (gcc_cv_ld_as_needed): Set + gcc_cv_ld_as_needed_option, gcc_cv_no_as_needed_option. + Use -z ignore, -z record on *-*-solaris2*. + (HAVE_LD_AS_NEEDED): Update comment. + (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Define. + * configure: Regenerate. + * config.in: Regenerate. + * gcc.c (init_gcc_specs) [USE_LD_AS_NEEDED]: Use + LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION. + * config/sol2.h [HAVE_LD_AS_NEEDED] (USE_LD_AS_NEEDED): Define. + * doc/tm.texi.in (USE_LD_AS_NEEDED): Allow for --as-needed + equivalents. Fix markup. + * doc/tm.texi: Regenerate. + +2013-04-15 Andrew Hsieh + + * config/i386/i386.opt: New option mstack-protector-guard=. + * config/i386/i386-opts.h: Add enum stack_protector_guard. + * config/i386/i386.h: Define TARGET_SSP_GLOBAL_GUARD and + TARGET_SSP_TLS_GUARD. + * config/i386/i386.c (ix86_option_override_internal): Set + ix86_stack_protector_guard. + * config/i386/i386.md (stack_protect_set): Enable for + TARGET_SSP_TLS_GUARD only. + (stack_protect_set_): Ditto. + (stack_protect_test): Ditto. + (stack_protect_test_): Ditto. + * doc/invoke.texi (i386 Option): Document. + +2013-04-15 Eric Botcazou + + PR target/56890 + * config/sparc/sparc.c (enum sparc_mode_class): Add H_MODE value. + (S_MODES): Set H_MODE bit. + (SF_MODES): Set only S_MODE and SF_MODE bits. + (DF_MODES): Set SF_MODES and only D_MODE and DF_MODE bits. + (sparc_init_modes) : Set H_MODE bit for sub-word modes. + : Do not set SF_MODE for sub-word modes. + : Likewise. + +2013-04-15 Joey Ye + + * config/arm/arm.c (thumb_far_jump_used_p): Fix typo in comments. + +2013-04-15 Joey Ye + + * config/arm/arm.c (thumb1_final_prescan_insn): Assert lr save + for real far jump. + (thumb_far_jump_used_p): Count instruction size and set + far_jump_used. + +2013-04-14 Eric Botcazou + + * reorg.c (fill_simple_delay_slots): Reindent block of code. + * resource.c (mark_target_live_regs): Reformat conditional block. + +2013-04-13 Steven Bosscher + + * sched-deps.c (deps_analyze_insn): Do not check for EH_REGION insn + notes, they are emitted only just before final. + * sched-int.h: Include insn-attr.h before checking INSN_SCHEDULING. + +2013-04-13 Steven Bosscher + + * emit-rtl.c (remove_insn): Do not call df_insn_delete here. + * cfgrtl.c (delete_insn): Call it here instead. + * lra-spills.c (lra_final_code_change): Use delete_insn. + * haifa-sched.c (sched_remove_insn): Likewise. + * sel-sched-ir.c (return_nop_to_pool): Clear INSN_DELETED_P for nops + returning to the nop pool. + (sel_remove_insn): Simplify the only_disconnect case via remove_insn, + use delete_insn for definitive removal. Clear BLOCK_FOR_INSN. + +2013-04-12 Steven Bosscher + + * doc/tm.texi.in (LOOP_ALIGN): Remove loop note references. + * doc/tm.texi: Regenerated. + +2013-04-12 Uros Bizjak + + * config/i386/i386.c (ix86_hard_regno_mode_ok): Use ANY_QI_REGNO_P in + QImode checks. + +2013-04-12 Steven Bosscher + + * df-core.c (df_find_def): Compare register numbers. + (df_find_use): Likewise. + +2013-04-12 Vladimir Makarov + + PR target/56903 + * config/i386/i386.c (ix86_hard_regno_mode_ok): Add + lra_in_progress for return. + +2013-04-12 Greta Yorsh + + * config/arm/arm.md (mov_scc,mov_negscc,mov_notscc): Convert + define_insn into define_insn_and_split and emit movsicc patterns. + +2013-04-12 Greta Yorsh + + * config/arm/arm.c (gen_operands_ldrd_strd): Initialize "base". + +2013-04-12 Richard Biener + + * tree-pass.h (TODO_do_not_ggc_collect): New. + * passes.c (execute_one_ipa_transform_pass): Honor + TODO_do_not_ggc_collect. + (execute_one_pass): Likewise. + + Revert + 2013-04-10 Richard Biener + + * passes.c (init_optimization_passes): Remove reload pass. + * ira.c (do_reload): Merge into ... + (ira): ... this. + (rest_of_handle_reload): Remove. + (pass_reload): Likewise. + * config/i386/i386.c (ix86_option_override): Refer to ira instead + of reload for vzeroupper pass placement. + +2013-04-12 Jakub Jelinek + + PR tree-optimization/56918 + PR tree-optimization/56920 + * fold-const.c (int_const_binop_1): Use op1.mul_with_sign (op2, ...) + instead of op1 - op2. Pass 2 * TYPE_PRECISION (type) as second + argument to rshift method. For 2 * HOST_BITS_PER_WIDE_INT precision + use wide_mul_with_sign method. + +2013-04-12 Richard Biener + + * gimple.c (is_gimple_constant): Vector CONSTRUCTORs should + not be considered a gimple constant. + +2013-04-12 Marc Glisse + + * fold-const.c (const_binop): Handle vector shifts by a scalar. + (fold_binary_loc): Call const_binop also for mixed vector-scalar + operations. + +2013-04-12 Manuel López-Ibáñez + Jakub Jelinek + + * opts.c: Include diagnostic-color.h. + (common_handle_option): Handle OPT_fdiagnostics_color_. + * Makefile.in (OBJS-libcommon): Add diagnostic-color.o. + (diagnostic.o, opts.o, pretty-print.o): Depend on diagnostic-color.h. + (diagnostic-color.o): New. + * common.opt (fdiagnostics-color, fdiagnostics-color=): New options. + (diagnostic_color_rule): New enum. + * dwarf2out.c (gen_producer_string): Don't print -fdiagnostics-color*. + * langhooks.c (lhd_print_error_function): Add %r "locus" and %R around + the location string. + * diagnostic.def: Add 3rd argument to DEFINE_DIAGNOSTIC_KIND macros, + either NULL, or color kind. + * diagnostic-color.c: New file. + * diagnostic-color.h: New file. + * diagnostic-core.h (DEFINE_DIAGNOSTIC_KIND): Adjust macro for 3 + arguments. + * doc/invoke.texi (-fdiagnostics-color): Document. + * pretty-print.h (pp_show_color): Define. + (struct pretty_print_info): Add show_color field. + * diagnostic.c: Include diagnostic-color.h. + (diagnostic_build_prefix): Adjust for 3 argument DEFINE_DIAGNOSTIC_KIND + macros. Colorize error:, warning: etc. strings and also the location + string. + (diagnostic_show_locus): Colorize the caret line. + * pretty-print.c: Include diagnostic-color.h. + (pp_base_format): Handle %r and %R format specifiers. Colorize strings + inside of %< %> quotes or quoted through q format modifier. + +2013-04-12 Andreas Krebbel + + * ifcvt.c (end_ifcvt_sequence): Mark a and b for unsharing as well. + +2013-04-11 Naveen H.S + + * config/aarch64/aarch64.c (aarch64_select_cc_mode): Allow NEG + code in CC_NZ mode. + * config/aarch64/aarch64.md (*neg_3_compare0): New + pattern. + +2013-04-11 Marek Polacek + + PR tree-optimization/48184 + * params.def (PARAM_ALIGN_THRESHOLD): Increase the minimum value to 1. + +2013-04-11 Eric Botcazou + + * stor-layout.c (skip_simple_constant_arithmetic): Move to... + * tree.c (skip_simple_constant_arithmetic): ...here and make public. + (skip_simple_arithmetic): Tidy up. + * tree.h (skip_simple_constant_arithmetic): Declare. + +2013-04-11 Naveen H.S + + * config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Define. + +2013-04-11 Richard Biener + + * tree-vect-loop.c (get_initial_def_for_induction): Properly + generate vector constants. + +2013-04-11 Richard Biener + + PR tree-optimization/56878 + * tree-flow.h (outermost_invariant_loop_for_expr): Declare. + * tree-ssa-loop-ivopts.c (outermost_invariant_loop_for_expr): + New function. + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): + Prefer to align the DR with the most invariant base address. + +2013-04-11 Senthil Kumar Selvaraj + + * opts.c (common_handle_option): Fix formatting and add FALLTHRU + comment. + +2013-04-11 James Greenhalgh + + * config/aarch64/aarch64-simd.md (aarch64_vcond_internal): Fix + floating-point vector comparisons against 0. + +2013-04-11 Jakub Jelinek + + PR tree-optimization/56899 + * fold-const.c (extract_muldiv_1): Apply distributive law + only if TYPE_OVERFLOW_WRAPS (ctype). + +2013-04-11 Bin Cheng + + PR target/56124 + * ira-costs.c (scan_one_insn): Check whether the source rtx of + loading has side effect. + +2013-04-10 Steven Bosscher + + * config/sparc/sparc.c: Include tree-pass.h. + (TARGET_MACHINE_DEPENDENT_REORG): Do not redefine. + (sparc_reorg): Rename to sparc_do_work_around_errata. Move to + head of file. Change return type. Split off gate function. + (sparc_gate_work_around_errata): New function. + (pass_work_around_errata): New pass definition. + (insert_pass_work_around_errata) New pass insert definition to + insert pass_work_around_errata just after delayed-branch scheduling. + (sparc_option_override): Insert the pass. + * config/sparc/t-sparc (sparc.o): Add TREE_PASS_H dependence. + +2013-04-10 David S. Miller + + * config/sparc/sparc.h (ASM_CPU_SPEC): Pass -Av8 if -mcpu=supersparc + or -mcpu=hypersparc. + + * target.def (cstore_mode): New hook. + * target.h: Include insn-codes.h + * targhooks.c: Likewise. + (default_cstore_mode): New function. + * targhooks.h: Declare it. + * doc/tm.texi.in: New hook slot for TARGET_CSTORE_MODE. + * doc/tm.texi: Rebuild. + * expmed.c (emit_cstore): Obtain cstore boolean result mode using + target hook, rather than inspecting the insn_data. + * config/sparc/sparc.c (sparc_cstore_mode): New function. + (TARGET_CSTORE_MODE): Redefine. + (emit_scc_insn): When TARGET_ARCH64, emit new 64-bit boolean + result patterns. + * config/sparc/predicates.md (cstore_result_operand): New special + predicate. + * config/sparc/sparc.md (cstoresi4, cstoredi4, cstore4): + Use it for operand 0. + (*seqsi_special): Rewrite using 'P' mode iterator on operand 0. + (*snesi_special): Likewise. + (*snesi_zero): Likewise. + (*seqsi_zero): Likewise. + (*sltu_insn): Likewise. + (*sgeu_insn): Likewise. + (*seqdi_special): Make operand 0 and comparison operation be of + DImode. + (*snedi_special): Likewise. + (*snedi_special_vis3): Likewise. + (*neg_snesi_zero): Rename to *neg_snesisi_zero. + (*neg_snesi_sign_extend): Rename to *neg_snesidi_zero. + (*snesi_zero_extend): Delete, covered by 'P' mode iterator. + (*neg_seqsi_zero): Rename to *neg_seqsisi_zero. + (*neg_seqsi_sign_extend): Rename to *neg_seqsidi_zero. + (*seqsi_zero_extend): Delete, covered by 'P' mode iterator. + (*sltu_extend_sp64): Likewise. + (*neg_sltu_insn): Rename to *neg_sltusi_insn. + (*neg_sltu_extend_sp64): Rename to *neg_sltudi_insn. + (*sgeu_extend_sp64): Delete, covered by 'P' mode iterator. + (*neg_sgeu_insn): Rename to *neg_sgeusi_insn. + (*neg_sgeu_extend_sp64): Rename to *neg_sgeudi_insn. + +2013-04-10 Yufeng Zhang + + * config/aarch64/aarch64.c (aarch64_print_extension): New function. + (aarch64_start_file): Use the new function. + +2013-04-10 Senthil Kumar Selvaraj + Jason Merrill + + * common.opt: Add -gdwarf. + * opts.c (common_handle_option): Handle it. + * gcc.c (ASM_DEBUG_SPEC): Don't expect "-2" for DWARF. + +2013-04-10 Richard Biener + + * passes.c (execute_todo): Do not call ggc_collect conditional here. + (execute_one_ipa_transform_pass): But unconditionally here. + (execute_one_pass): And here. + (init_optimization_passes): Remove reload pass. + * tree-pass.h (TODO_ggc_collect): Remove. + (pass_reload): Likewise. + * ira.c (do_reload): Merge into ... + (ira): ... this. + (rest_of_handle_reload): Remove. + (pass_reload): Likewise. + * config/i386/i386.c (ix86_option_override): Refer to ira instead + of reload for vzeroupper pass placement. + * : Remove TODO_ggc_collect from todo_flags_start + and todo_flags_finish of all passes. + +2013-04-10 Richard Biener + + * tree-vectorizer.h (struct _slp_oprnd_info): Remove + first_const_oprnd field, rename first_def_type to first_op_type. + * tree-vect-slp.c (vect_create_oprnd_info): Adjust. + (vect_get_and_check_slp_defs): Always use the type of the + operand. Allow mixed vect_external_def, vect_constant_def types. + (vect_get_constant_vectors): Handle mixed vect_external_def, + vect_constant_def types. + +2013-04-10 Joern Rennecke + + PR tree-optimization/55524 + * tree-ssa-math-opts.c + (convert_mult_to_fma): Don't use an fms construct + when we don't have an fms operation, but fnma, and it looks + likely that we'll be able to use the latter. + +2013-04-10 Zhouyi Zhou + + * cif-code.def (OVERWRITABLE): Correct the comment for overwritable + function. + * ipa-inline.c (can_inline_edge_p): Let dump mechanism report the + inline fail caused by overwritable functions. + +2013-04-10 Chung-Ju Wu + + * combine.c (simplify_compare_const): Use GET_MODE_MASK to filter out + unnecessary bits in the constant power of two case. + +2013-04-10 Richard Biener + + * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove + broken code swapping operands. + (vect_build_slp_tree): Do not compute load permutations here. + (vect_analyze_slp_instance): Compute load permutations here, + after building the SLP tree. + +2013-04-09 Christian Bruel + + * config/sh/sh.md (barrier_align): Use next/prev_active_insn instead + of next/prev_real_insn. + +2013-04-09 Jan Hubicka + + * ipa.c (cgraph_externally_visible_p, varpool_externally_visible_p): + Drop aliased parameter. + (function_and_variable_visibility): Do not handle alias pairs. + * cgraph.c (varpool_externally_visible_p): Update prototype. + * varpool.c (varpool_add_new_variable): Update. + +2013-04-09 Kyrylo Tkachov + + * config/arm/arm.md (minmax_arithsi_non_canon): New pattern. + +2013-04-09 Steven Bosscher + + * sched-vis.c (print_pattern): Print SEQUENCE of insns as insns. + + * config/sparc/sparc.md: Use define_c_enum for "unspec" and "unspecv". + +2013-04-09 Marek Polacek + + PR tree-optimization/48762 + * params.def (PARAM_MAX_CSE_INSNS): Increase the minimum value to 1. + +2013-04-09 Richard Biener + + * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove code + dealing with cost. + (vect_build_slp_tree): Likewise. + (vect_analyze_slp_cost_1, vect_analyze_slp_cost): New functions + calculating the cost of a SLP instance. + (vect_analyze_slp_instance): Use it from here, after building + the SLP tree. + +2013-04-09 Jakub Jelinek + + PR middle-end/56883 + * omp-low.c (expand_omp_for_generic, expand_omp_for_static_nochunk, + expand_omp_for_static_chunk): Use simple_p = true in + force_gimple_operand_gsi calls when assigning to addressable decls. + +2013-04-09 Jeff Law + + * tree-vrp.c (simplify_cond_using_ranges): Simplify test of boolean + when the boolean was created by converting a wider object which + had a boolean range. + +2013-04-09 Richard Biener + + * tree-vectorizer.h (slp_void_p): Remove. + (slp_tree): Typedef before _slp_tree declaration. + (struct _slp_tree): Use a vector of slp_tree as children. + (vect_get_place_in_interleaving_chain): Remove. + * tree-vect-data-refs.c (vect_get_place_in_interleaving_chain): + Move ... + * tree-vect-slp.c (vect_get_place_in_interleaving_chain): ... here + and make static. + (vect_free_slp_tree, vect_print_slp_tree, vect_mark_slp_stmts, + vect_mark_slp_stmts_relevant, vect_slp_rearrange_stmts, + vect_detect_hybrid_slp_stmts, vect_slp_analyze_node_operations, + vect_schedule_slp_instance, vect_remove_slp_scalar_calls): + Use slp_node instead of slp_void_p and adjust. + +2013-04-09 Richard Biener + + * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa): Avoid + work that is not necessary. + +2013-04-09 Jakub Jelinek + + PR tree-optimization/56854 + * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't + forward into clobber stmts if it would change MEM_REF lhs into + non-MEM_REF. + +2013-04-09 Maxim Kuvyrkov + + * tree.c (type_hash_lookup, type_hash_add): Make static. + * tree.h (type_hash_lookup, type_hash_add): Remove global declarations. + +2013-04-09 Richard Biener + + * tree.h (unsave_expr_now): Remove. + * tree-inline.c (mark_local_for_remap_r): Remove. + (unsave_expr_1): Likewise. + (unsave_r): Likewise. + (unsave_expr_now): Likewise. + * tree-ssa-copy.c (replace_exp_1): Use unshare_expr. + (propagate_tree_value): Likewise. + +2013-04-08 Steven Bosscher + + * doc/rtl.texi (sequence): Rewrite documentation to match the + current use of SEQUENCE rtl objects. + * rtl.def (SEQUENCE): Likewise. + + * doc/rtl.texi (NOTE_INSN_EH_REGION_BEG, NOTE_INSN_EH_REGION_END): + Update documentation. + (NOTE_INSN_LOOP_BEG, NOTE_INSN_LOOP_END, NOTE_INSN_LOOP_CONT, + NOTE_INSN_LOOP_VTOP): Remove documentation for non-existing notes. + + * reg-notes.def (REG_EH_CONTEXT): Remove unused note. + +2013-04-08 Teresa Johnson + + * basic-block.h (GCOV_COMPUTE_SCALE): Define. + * ipa-inline-analysis.c (param_change_prob): Use helper rounding divide + methods. + (estimate_edge_size_and_time): Add comment to suggest using rounding + methods. + (estimate_node_size_and_time): Ditto. + (remap_edge_change_prob): Use helper rounding divide methods. + * value-prof.c (gimple_divmod_fixed_value_transform): Ditto. + (gimple_mod_pow2_value_transform): Ditto. + (gimple_mod_subtract_transform): Ditto. + (gimple_ic_transform): Ditto. + (gimple_stringops_transform): Ditto. + * stmt.c (conditional_probability): Ditto. + (emit_case_dispatch_table): Ditto. + * lto-cgraph.c (merge_profile_summaries): Ditto. + * tree-optimize.c (execute_fixup_cfg): Ditto. + * cfgcleanup.c (try_forward_edges): Ditto. + * cfgloopmanip.c (scale_loop_profile): Ditto. + (loopify): Ditto. + (duplicate_loop_to_header_edge): Ditto. + (lv_adjust_loop_entry_edge): Ditto. + * tree-vect-loop.c (vect_transform_loop): Ditto. + * profile.c (compute_branch_probabilities): Ditto. + * cfgbuild.c (compute_outgoing_frequencies): Ditto. + * lto-streamer-in.c (input_cfg): Ditto. + * gimple-streamer-in.c (input_bb): Ditto. + * ipa-cp.c (update_profiling_info): Ditto. + (update_specialized_profile): Ditto. + * tree-vect-loop-manip.c (slpeel_tree_peel_loop_to_edge): Ditto. + * cfg.c (update_bb_profile_for_threading): Add comment to suggest using + rounding methods. + * sched-rgn.c (compute_dom_prob_ps): Ditto. + (compute_trg_info): Ditto. + * cfgrtl.c (force_nonfallthru_and_redirect): Ditto. + (purge_dead_edges): Ditto. + * loop-unswitch.c (unswitch_loop): Ditto. + * cgraphclones.c (cgraph_clone_edge): Ditto. + (cgraph_clone_node): Ditto. + * tree-inline.c (copy_bb): Ditto. + (copy_edges_for_bb): Ditto. + (initialize_cfun): Ditto. + (copy_cfg_body): Ditto. + (expand_call_inline): Ditto. + +2013-04-08 Kai Tietz + + * config/i386/cygwin.h (EXTRA_OS_CPP_BUILTINS): Replaced + TARGET_CYGWIN64 by TARGET_64BIT. + +2013-04-08 Joern Rennecke + + * config/epiphany/epiphany.md (GPR_1): New constant. + (define_expand "movcc): FAIL if gen_compare_reg returned 0. + * config/epiphany/epiphany.c (gen_compare_reg): + For flag_finite_math_only, avoid swapping operands when r0 and/or r1 + is already in place. + Use GPR_0 / GPR_1 instead of 0/1 for r0/r1 register numbers. + Don't require being called during rtl expansion; If y operlaps r0, + return 0. + (epiphany_compute_frame_size, epiphany_expand_prologue): Use GPR_1. + (epiphany_expand_epilogue): Likewise. + + * config/epiphany/epiphany.c (epiphany_select_cc_mode): + Don't use CC_FPmode for ORDERED / UNORDERED. + * config/epiphany/epiphany.md (cmpsf_ord): Make pattern unconditional. + + * config/epiphany/constraints.md (CnL): New constraint. + * config/epiphany/epiphany.md (addsi3_i): Add r/r/CnL alternative. + * config/epiphany/predicates.md (add_operand): Allow 1024. + + * config/epiphany/epiphany.md (logical_op): New code iterator. + (op_mnc): New code attribute. + (_f, mov_f, cstoresi4): New patterns. + (mov_f+1, mov_f+2): New peephole2 patterns. + + * config/epiphany/epiphany.md (mov_f+2): New peephole2 pattern. + (cstoresi4): Also allow re-use of zero result when doing a NE + comparison to a non-zero operand. + Use (clobber (scratch)) for first insn if the gpr output is not needed. + + * config/epiphany/epiphany.md (v2si3): + Use gen_addsi3_i / gen_subsi3_i. + +2013-04-08 Jakub Jelinek + + PR c++/34949 + PR c++/50243 + * tree-eh.c (optimize_clobbers): Only remove clobbers if bb doesn't + contain anything but clobbers, at most one __builtin_stack_restore, + optionally debug stmts and final resx, and if it has at least one + incoming EH edge. Don't check for SSA_NAME on LHS of a clobber. + (sink_clobbers): Don't check for SSA_NAME on LHS of a clobber. + Instead of moving clobbers with MEM_REF LHS with SSA_NAME address + which isn't defaut definition, remove them. + (unsplit_eh, cleanup_empty_eh): Use single_{pred,succ}_{p,edge} + instead of EDGE_COUNT comparisons or EDGE_{PRED,SUCC}. + * tree-ssa-ccp.c (execute_fold_all_builtins): Remove clobbers + with MEM_REF LHS with SSA_NAME address. + +2013-04-08 Jeff Law + + * gimple.c (canonicalize_cond_expr_cond): Rewrite x ^ y into x != y. + +2013-04-08 Richard Biener + + * gimple-pretty-print.c (debug_gimple_stmt): Do not print + extra newline. + * tree-vect-loop.c (vect_determine_vectorization_factor): Dump + determined vector type. + (vect_analyze_data_refs): Likewise. + (vect_get_new_vect_var): Adjust. + (vect_create_destination_var): Preserve SSA name versions. + * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Do + not dump anything here. + +2013-04-08 Joern Rennecke + + * config/epiphany/epiphany.h (struct GTY (()) machine_function): + Add member lr_slot_known. + * config/epiphany/epiphany.md (reload_insi_ra): Compute lr_slot_offs + if necessary. + * config/epiphany/epiphany.c (epiphany_compute_frame_size): + Remove code that sets lr_slot_offset according to what a previous + version of epiphany_emit_save_restore used to do. + (epiphany_emit_save_restore): When doing an lr save or restore, + set/verify lr_slot_known and lr_slot_offset. + +2013-04-08 Xinyu Qi + + PR target/54338 + * config/arm/arm.h (REG_CLASS_CONTENTS): Include IWMMXT_GR_REGS + in ALL_REGS. + +2013-04-08 Richard Biener + + * alias.c (find_base_term): Fix thinko in previous change. + +2013-04-08 Jakub Jelinek + + * tree-loop-distribution.c (const_with_all_bytes_same): New function. + (generate_memset_builtin): Only handle integer_all_onesp as -1 val if + TYPE_PRECISION is equal to mode bitsize. Use const_with_all_bytes_same + if possible to compute val. + (classify_partition): Verify CONSTRUCTOR doesn't have any elts. + For QImode integers don't require anything about precision. Use + const_with_all_bytes_same to find out if the constant doesn't have + repeated bytes in it. + +2013-04-08 Andreas Krebbel + + * config/s390/s390.c (s390_expand_insv): Only accept insertions + within mode size. + +2013-04-08 Marek Polacek + + PR rtl-optimization/48182 + * params.def (PARAM_MIN_CROSSJUMP_INSNS): Increase the minimum + value to 1. + +2013-04-06 John David Anglin + + PR target/55487 + * config/pa/pa.c (legitimize_pic_address): Before incrementing label + nuses, make sure we have a label. + +2013-04-05 Bill Schmidt + + PR target/56843 + * config/rs6000/rs6000.c (rs6000_emit_swdiv_high_precision): Remove. + (rs6000_emit_swdiv_low_precision): Remove. + (rs6000_emit_swdiv): Rewrite to handle between one and four + iterations of Newton-Raphson generally; modify required number of + iterations for some cases. + * config/rs6000/rs6000.h (RS6000_RECIP_HIGH_PRECISION_P): Remove. + +2013-04-05 Steven Bosscher + + * bb-reorder.c (fix_crossing_unconditional_branches): Remove a + set-but-unused variable. + + * cgraph.c (cgraph_release_function_body): Clear cfun->cfg to make + basic blocks of released function bodies garbage-collectable. + + * ree.c (find_and_remove_re): Do not call df_finish_pass here. + (struct rtl_opt_pass): Add TODO_df_finish. + + * rtl.def (DEFINE_SUBST, DEFINE_SUBST_ATTR): Add documentation. + +2013-04-05 Greta Yorsh + + * config/arm/constraints.md (q): New constraint. + * config/arm/ldrdstrd.md: New file. + * config/arm/arm.md (ldrdstrd.md) New include. + (arm_movdi): Use "q" instead of "r" constraint + for double-word memory access. + (movdf_soft_insn): Likewise. + * config/arm/vfp.md (movdi_vfp): Likewise. + * config/arm/t-arm (MD_INCLUDES): Add ldrdstrd.md. + * config/arm/arm-protos.h (gen_operands_ldrd_strd): New declaration. + * config/arm/arm.c (gen_operands_ldrd_strd): New function. + (mem_ok_for_ldrd_strd): Likewise. + (output_move_double): Update assertion. + +2013-04-05 Greta Yorsh + + * config/arm/arm.md: Comment on splitting Thumb1 patterns. + +2013-04-05 Greta Yorsh + + * config/arm/arm.md (arm_smax_insn): Convert define_insn into + define_insn_and_split. + (arm_smin_insn,arm_umaxsi3,arm_uminsi3): Likewise. + +2013-04-05 Greta Yorsh + + * config/arm/arm.md (arm_ashldi3_1bit): Convert define_insn into + define_insn_and_split. + (arm_ashrdi3_1bit,arm_lshrdi3_1bit): Likewise. + (shiftsi3_compare): New pattern. + (rrx): New pattern. + * config/arm/unspecs.md (UNSPEC_RRX): New. + +2013-04-05 Greta Yorsh + + * config/arm/arm.md (negdi_extendsidi): New pattern. + (negdi_zero_extendsidi): Likewise. + +2013-04-05 Greta Yorsh + + * config/arm/arm.md (andsi_iorsi3_notsi): Convert define_insn into + define_insn_and_split. + (arm_negdi2,arm_abssi2,arm_neg_abssi2): Likewise. + (arm_cmpdi_insn,arm_cmpdi_unsigned): Likewise. + +2013-04-05 Greta Yorsh + + * config/arm/arm.md (arm_subdi3): Convert define_insn into + define_insn_and_split. + (subdi_di_zesidi,subdi_di_sesidi): Likewise. + (subdi_zesidi_di,subdi_sesidi_di,subdi_zesidi_zesidi): Likewise. + +2013-04-05 Greta Yorsh + + * config/arm/arm.md (subsi3_carryin): New pattern. + (subsi3_carryin_const): Likewise. + (subsi3_carryin_compare,subsi3_carryin_compare_const): Likewise. + (subsi3_carryin_shift,rsbsi3_carryin_shift): Likewise. + +2013-04-05 Greta Yorsh + + * config/arm/arm.md (incscc,arm_incscc,decscc,arm_decscc): Delete. + +2013-04-05 Greta Yorsh + + * config/arm/arm.md (addsi3_carryin_): Set attribute predicable. + (addsi3_carryin_alt2_,addsi3_carryin_shift_): Likewise. + +2013-04-05 Kyrylo Tkachov + + * config/arm/arm.c (arm_expand_builtin): Change fcode + type to unsigned int. + +2013-04-05 Ramana Radhakrishnan + + * doc/invoke.texi (ARM Options): Document cortex-a53 support. + +2013-04-04 Ian Lance Taylor + + * doc/standards.texi (Standards): The Go frontend supports the Go 1 + language standard. + +2013-04-04 Steven Bosscher + + PR middle-end/56729 + * df-scan.c (df_insn_delete): Disable failing assert. + +2013-04-04 Kyrylo Tkachov + + * config/arm/arm-protos.h (arm_builtin_vectorized_function): + New function prototype. + * config/arm/arm.c (TARGET_VECTORIZE_BUILTINS): Define. + (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Likewise. + (arm_builtin_vectorized_function): New function. + +2013-04-04 Kyrylo Tkachov + + * config/arm/arm_neon_builtins.def: New file. + * config/arm/arm.c (neon_builtin_data): Move contents to + arm_neon_builtins.def. + (enum arm_builtins): Include neon builtin definitions. + (ARM_BUILTIN_NEON_BASE): Move from enum to macro. + * config/arm/t-arm (arm.o): Add dependency on arm_neon_builtins.def. + +2013-04-04 Marek Polacek + + PR tree-optimization/48186 + * predict.c (maybe_hot_frequency_p): Return false if + HOT_BB_FREQUENCY_FRACTION is 0. + (cgraph_maybe_hot_edge_p): Likewise. + +2013-04-04 Richard Biener + + PR tree-optimization/56826 + * tree-vect-slp.c (vect_build_slp_tree): Compute ncopies + more accurately. + +2013-04-04 Richard Biener + + PR tree-optimization/56213 + * tree-vect-data-refs.c (vect_check_strided_load): Remove. + (vect_analyze_data_refs): Allow all non-nested loads as strided loads. + +2013-04-04 Richard Biener + + PR tree-optimization/56837 + * tree-loop-distribution.c (classify_partition): For non-zero + values require that the value has the same precision as its + mode to be useful as memset value. + +2013-04-03 Nick Clifton + + * config/v850/v850e3v5.md (fmasf4): Use fmaf.s on E3V5 architectures. + (fmssf4): Use fmsf.s on E3V5 architectures. + (fnmasf4): Use fnmaf.s on E3V5 architectures. + (fnmssf4): Use fnmsf.s on E3V5 architectures. + +2013-04-03 Jeff Law + + * Makefile.in (lra-constraints.o): Depend on $(OPTABS_H). + (lra-eliminations.o): Likewise. + +2013-04-03 Teresa Johnson + + * gcov-io.c (compute_working_sets): Moved most of body of old + compute_working_sets here from profile.c. + * gcov-io.h (NUM_GCOV_WORKING_SETS): Moved here from profile.c. + (gcov_working_set_t): Moved typedef here from basic-block.h + (compute_working_set): Declare. + * profile.c (NUM_GCOV_WORKING_SETS): Moved to gcov-io.h. + (get_working_sets): Renamed from compute_working_set, + replace most of body with call to new compute_working_sets. + (get_exec_counts): Replace call to compute_working_sets + to get_working_sets. + * profile.h (get_working_sets): Renamed from compute_working_set. + * lto-cgraph.c (input_symtab): Replace call to compute_working_sets + to get_working_sets. + * basic-block.h (gcov_working_set_t): Moved to gcov-io.h. + * gcov-dump.c (dump_working_sets): New function. + +2013-04-03 Kenneth Zadeck + + * hwint.c (sext_hwi, zext_hwi): New functions. + * hwint.h (HOST_BITS_PER_HALF_WIDE_INT, HOST_HALF_WIDE_INT, + HOST_HALF_WIDE_INT_PRINT, HOST_HALF_WIDE_INT_PRINT_C, + HOST_HALF_WIDE_INT_PRINT_DEC, HOST_HALF_WIDE_INT_PRINT_DEC_C, + HOST_HALF_WIDE_INT_PRINT_UNSIGNED, HOST_HALF_WIDE_INT_PRINT_HEX, + HOST_HALF_WIDE_INT_PRINT_HEX_PURE): New symbols. + (sext_hwi, zext_hwi): New functions. + +2013-04-03 Jeff Law + + PR tree-optimization/56799 + * tree-ssa-dom.c (record_equivalences_from_incoming_edge): Bring + back test for widening conversion erroneously dropped in prior change. + +2013-04-03 Kyrylo Tkachov + + PR target/56809 + * config/aarch64/aarch64.c (is_jump_table): Use next_active_insn + instead of next_real_insn. + +2013-04-03 Marek Polacek + + PR sanitizer/55702 + * tsan.c (instrument_func_exit): Allow BUILT_IN_RETURN functions. + +2013-04-03 Kyrylo Tkachov + + PR target/56809 + * config/arm/arm.c (is_jump_table): Use next_active_insn instead of + next_real_insn. + (thumb1_output_casesi): Likewise. + (thumb2_output_casesi): Likewise. + +2013-04-03 Richard Biener + + PR tree-optimization/56817 + * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): + Split out ... + (tree_unroll_loops_completely_1): ... new function to manually + walk the loop tree, properly defering outer loops of unrolled + loops to later iterations. + +2013-04-03 Marc Glisse + + * tree-vect-stmts.c (vectorizable_store): Accept BIT_FIELD_REF. + (vectorizable_load): Likewise. + * tree-vect-slp.c (vect_build_slp_tree): Likewise. + * tree-vect-data-refs.c (vect_create_data_ref_ptr): Handle VECTOR_TYPE. + +2013-04-03 Marc Glisse + + * tree-flow-inline.h (get_addr_base_and_unit_offset_1): Handle + BIT_FIELD_REF. + +2013-04-03 Ulrich Weigand + + * config/spu/spu.c (emit_nop_for_insn): Handle JUMP_TABLE_DATA. + +2013-04-03 Bin Cheng + + * rtl.h (AUTO_INC_DEC): Fix typo of HAVE_POST_MODIFY_DISP. + +2013-04-03 Marc Glisse + + PR tree-optimization/56790 + * fold-const.c (fold_ternary_loc) : Add constant + folding. + +2013-04-03 Marc Glisse + + * simplify-rtx.c (simplify_binary_operation_1) : + Handle VEC_MERGE. + (simplify_ternary_operation) : Use unsigned HOST_WIDE_INT + for masks. Test for side effects. Handle nested VEC_MERGE. Handle + equal arguments. + +2013-04-03 Jakub Jelinek + + PR c/19449 + * tree.h (force_folding_builtin_constant_p): New decl. + * builtins.c (force_folding_builtin_constant_p): New variable. + (fold_builtin_constant_p): Fold immediately also if + force_folding_builtin_constant_p. + +2013-04-03 Richard Biener + + PR tree-optimization/56812 + * tree-vect-data-refs.c (vect_slp_analyze_data_ref_dependence): + DRs of the same interleaving chain are independent. + +2013-04-02 Jason Merrill + + * gdbinit.in (pbb): Use debug fn. + +2013-04-02 Lawrence Crowl + + * sese.h (struct ivtype_map_elt_s): Remove unused. + (extern debug_ivtype_map): Remove unused. + (extern eq_ivtype_map_elts): Remove unused. + * sese.c (debug_ivtype_map): Removed unused. + (debug_ivtype_map_1): Removed unused. + (debug_ivtype_elt): Remove unused. + (eq_ivtype_map_elts): Remove unused. + +2013-04-02 Kai Tietz + + PR target/52790 + * config/i386/cygming.h (SUB_TARGET_RECORD_STUB): New sub-target macro. + * config/i386/i386-protos.h (i386_pe_record_stub): Add new prototype. + * config/i386/i386.c (legitimize_pe_coff_extern_decl): New static + function. + (legitimize_pe_coff_symbol): Likewise. + (is_imported_p): New helper-function. + (ix86_option_override_internal): Make MEDIUM_PIC the default code-model + for Windows x64 targets. + (ix86_expand_prologue): Optimize for pe-coff targets. + (ix86_expand_split_stack_prologue): Adjust for pe-coff targets. + (legitimate_pic_address_disp_p): Adjust for x64 pe-coff to support + medium/large code-model. + (legitimize_pic_address): Likewise. + (legitimize_tls_address): Likewise. + (ix86_expand_call): Likewise. + (x86_output_mi_thunk): Likewise. + (get_dllimport_decl): Add new beimport argument. + (construct_plt_address): Don't assert for x64 pe-coff targets. + * config/i386/i386.h (PIC_OFFSET_TABLE_REGNUM): Adjust for x64 pe-coff + targets. + (SYMBOL_FLAG_STUBVAR): New macro. + (SYMBOL_REF_STUBVAR_P): Likewise. + * config/i386/winnt.c (stub_list): New structure. + (stub_head): New local variable. + (i386_pe_record_stub): New function. + (i386_pe_file_end): Emit refptr-stubs. + +2013-04-02 Jakub Jelinek + + PR rtl-optimization/56745 + * ifcvt.c (cond_exec_find_if_block): Don't try to optimize + if then_bb has no successors and else_bb is EXIT_BLOCK_PTR. + + PR c++/34949 + * tree-ssa-alias.c (stmt_kills_ref_p_1): If base != ref->base + and both of them are MEM_REFs, just compare first argument for + equality and attempt to deal even with differing offsets. + + PR c++/34949 + * tree-cfg.c (verify_gimple_assign_single): Allow lhs + of gimple_clobber_p to be MEM_REF. + * gimplify.c (gimplify_modify_expr): Gimplify *to_p of + an assignment from TREE_CLOBBER_P. Allow it to be MEM_REF + after gimplification. + * asan.c (get_mem_ref_of_assignment): Don't instrument + gimple_clobber_p stmts. + * tree-ssa-dse.c (dse_optimize_stmt): Allow DSE of + gimple_clobber_p stmt if they have MEM_REF lhs and + are dead because of another gimple_clobber_p stmt. + * tree-ssa-live.c (clear_unused_block_pointer): Treat + gimple_clobber_p stmts like debug stmts. + (remove_unused_locals): Remove clobbers with MEM_REF lhs + that refer to unused VAR_DECLs or uninitialized values. + * tree-sra.c (sra_ipa_reset_debug_stmts): Also remove + gimple_clobber_p stmts if they refer to removed parameters. + (get_repl_default_def_ssa_name, sra_ipa_modify_expr): Fix up + formatting. + +2013-04-02 Uros Bizjak + + * config/i386/i386.md (*testqi_ext_3): Merge with *testqi_ext_3_rex64 + using SWI48 mode attribute. + +2013-04-02 Wei Mi + + * config/i386/i386.c (ix86_rtx_costs): Set proper rtx cost for + ashl3_mask, *3_mask and + *3_mask in i386.md. + +2013-04-02 Alexander Ivchenko + + * config.gcc (arm*-*-linux-*): Remove duplicate t-linux-android. + +2013-04-02 Richard Biener + + PR tree-optimization/56778 + * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): + Runtime alias tests are not supported for gather loads. + * tree-vect-loop-manip.c (vect_loop_versioning): Insert + stmts referenced from SSA operands before updating SSA form. + +2013-04-02 Ian Caulfield + Ramana Radhakrishnan + + * config/arm/arm-arches.def (armv8-a): Default to cortex-a53. + * config/arm/t-arm (MD_INCLUDES): Depend on cortex-a53.md. + * config/arm/cortex-a53.md: New file. + * config/arm/bpabi.h (BE8_LINK_SPEC): Handle cortex-a53. + * config/arm/arm.md (generic_sched, generic_vfp): Handle cortex-a53. + * config/arm/arm.c (arm_issue_rate): Likewise. + * config/arm/arm-tune.md: Regenerate + * config/arm/arm-tables.opt: Regenerate. + * config/arm/arm-cores.def: Add cortex-a53. + +2013-04-02 Zhenqiang Chen + + * config/arm/uclinux-elf.h: Add %L to LINK_GCC_C_SEQUENCE_SPEC for + non-static link. + +2013-04-02 Sofiane Naci + + * config/aarch64/aarch64.md (*mov_aarch64): Add variants for + scalar load/store operations using B/H registers. + (*zero_extend2_aarch64): Likewise. + +2013-04-02 Sofiane Naci + + * config/aarch64/aarch64.md (*mov_aarch64): Add alternatives for + scalar move. + * config/aarch64/aarch64.c + (aarch64_simd_scalar_immediate_valid_for_move): New. + * config/aarch64/aarch64-protos.h + (aarch64_simd_scalar_immediate_valid_for_move): New. + * config/aarch64/constraints.md (Dh, Dq): New. + * config/aarch64/iterators.md (hq): New. + +2013-04-02 Eric Botcazou + + * reorg.c (get_branch_condition): Deal with conditional returns. + (fill_simple_delay_slots): Remove dead code dealing with jumps. + +2013-04-01 Wei Mi + + * config/i386/i386.md (*ashl3_mask): Rewrite as define_insn. + Truncate operand 2 using %b asm operand modifier. + (*3_mask): Ditto. + (*3_mask): Ditto. + +2013-04-01 Steven Bosscher + + PR middle-end/56798 + * cfgbuild.c (inside_basic_block_p): Restore check broken at r197234. + +2013-03-31 Kaz Kojima + + * config/sh/sh.md (casesi_worker_1): Use next_active_insn instead + of next_real_insn. + (casesi_worker_2, casesi_shift_media, casesi_load_media): Likewise. + +2013-03-30 Lawrence Crowl + + * dse.c (clear_alias_sets): Remove never set. + (disqualified_clear_alias_sets): Remove never set. + (clear_alias_mode_pool): Remove never set. + (dse_step0): Remove condition that is never true. + (canon_address): Remove condition that is never true. + (dse_step7): Remove condition that is never true. + (rest_of_handle_dse): Remove condition that is never true. + (rest_of_handle_dse::did_global): Remove never read from above. + (dse_step2_spill): Remove never called from above. + (dse_step5_spill): Remove never called from above. + +2013-03-30 Steven Bosscher + + * doc/md.texi (Standard Names) : Update documentation for + JUMP_TABLE_DATA changes. + * doc/tm.texi.in (Dispatch Tables) : Likewise. + * doc/rtl.texi (Flags) : Likewise. + (Insns) : New entry. + * doc/tm.texi: Regenerate. + + * cfgrtl.c (fixup_reorder_chain): Do not emit barriers to BB_FOOTER. + + * postreload-gcse.c (bb_has_well_behaved_predecessors): Correct test + for table jump at the end of a basic block using tablejump_p. + * targhooks.c (default_invalid_within_doloop): Likewise. + * config/rs6000/rs6000.c (TARGET_INVALID_WITHIN_DOLOOP): Remove + target hook implementation that is identical to the default hook. + (rs6000_invalid_within_doloop): Remove. + + * bb-reorder.c (fix_crossing_unconditional_branches): Remove set but + unused variable from tablejump_p call. + + * rtl.def (JUMP_TABLE_DATA): New RTX_INSN object. + * rtl.h (RTX_PREV, RTX_NEXT): Adjust for new JUMP_TABLE_DATA. + (INSN_DELETED_P): Likewise. + (emit_jump_table_data): New prototype. + * gengtype.c (adjust_field_rtx_def): Handle JUMP_TABLE_DATA fields + after 4th as unused. + * print-rtl.c (print_rtl): Handle JUMP_TABLE_DATA. + * sched-vis.c (print_insn): Likewise. + * emit-rtl.c (active_insn_p): Consider JUMP_TABLE_DATA an active + insn for compatibility with back ends that use next_active_insn to + identify jump table data. + (set_insn_deleted): Remove no longer useful JUMP_TABLE_DATA_P check. + (remove_insn): Likewise. + (emit_insn): Do not accept JUMP_TABLE_DATA objects in insn chains + to be emitted. + (emit_debug_insn, emit_jump_insn, emit_call_insn, emit_label): Idem. + (emit_jump_table_data): New function. + + * cfgbuild.c (inside_basic_block_p): A JUMP_INSN is always inside a + basic block, a JUMP_TABLE_DATA never is. + (control_flow_insn_p): JUMP_TABLE_DATA is not a control flow insn. + * cfgrtl.c (duplicate_insn_chain): Split handling of JUMP_TABLE_DATA + off from code handling real insns. + * final.c (get_attr_length_1): Simplify for JUMP_INSNs. + * function.c (instantiate_virtual_regs): Remove JUMP_TABLE_DATA_P + test, now redundant because JUMP_TABLE_DATA is not an INSN_P insn. + * gcse.c (insert_insn_end_basic_block): Likewise, JUMP_TABLE_DATA_P + is not a NONDEBUG_INSN_P. + * ira-costs.c (scan_one_insn): Likewise. + * jump.c (mark_all_labels): Likewise. + (mark_jump_label_1): Likewise. + * lra-eliminations.c (eliminate_regs_in_insn): Likewise. + * lra.c (get_insn_freq): Expect all insns reaching here to be in + a basic block. + (check_rtl): Remove JUMP_TABLE_DATA_P test, not a NONDEBUG_INSN_P insn. + * predict.c (expensive_function_p): Use FOR_BB_INSNS. + * reload1.c (calculate_needs_all_insns): Call set_label_offsets for + JUMP_TABLE_DATA_P insns. + (calculate_elim_costs_all_insns): Likewise. + (set_label_offsets): Recurse on the PATTERN of JUMP_TABLE_DATA insns. + (elimination_costs_in_insn): Remove redundant JUMP_TABLE_DATA_P test. + (delete_output_reload): Code style fixups. + * reorg.c (dbr_schedule): Move JUMP_TABLE_DATA_P up to avoid setting + insn flags on this non-insn. + * sched-rgn.c (add_branch_dependences): Treat JUMP_TABLE_DATA insns + as scheduling barriers, for pre-change compatibility. + * stmt.c (emit_case_dispatch_table): Emit jump table data not as + JUMP_INSN objects but instead as JUMP_TABLE_DATA objects. + + * config/alpha/alpha.c (alpha_does_function_need_gp): Remove + redundant JUMP_TABLE_DATA_P test. + * config/arm/arm.c (thumb_far_jump_used_p): Likewise. + * config/frv/frv.c (frv_function_contains_far_jump): Likewise. + (frv_for_each_packet): Likewise. + * config/i386/i386.c (min_insn_size): Likewise. + (ix86_avoid_jump_mispredicts): Likewise. + * config/m32r/m32r.c (m32r_is_insn): Likewise. + * config/mep/mep.c (mep_reorg_erepeat): Likewise. + * config/mips/mips.c (USEFUL_INSN_P): Likewise. + (mips16_insn_length): Robustify. + (mips_has_long_branch_p): Remove redundant JUMP_TABLE_DATA_P test. + (mips16_split_long_branches): Likewise. + * config/pa/pa.c (pa_combine_instructions): Likewise. + * config/rs6000/rs6000.c (get_next_active_insn): Treat + JUMP_TABLE_DATA objects as active insns, like in active_insn_p. + * config/s390/s390.c (s390_chunkify_start): Treat JUMP_TABLE_DATA + as contributing to pool range lengths. + * config/sh/sh.c (find_barrier): Restore check for ADDR_DIFF_VEC. + Remove redundant JUMP_TABLE_DATA_P test. + (sh_loop_align): Likewise. + (split_branches): Likewise. + (sh_insn_length_adjustment): Likewise. + * config/spu/spu.c (get_branch_target): Likewise. + +2013-03-29 Jan Hubicka + + * lto-cgraph.c (output_profile_summary, input_profile_summary): Use + gcov streaming; stream hot bb threshold to ltrans. + * predict.c (get_hot_bb_threshold): Break out from .... + (maybe_hot_count_p): ... here. + (set_hot_bb_threshold): New function. + * lto-section-in.c (lto_section_name): Add profile. + * profile.h (get_hot_bb_threshold, set_hot_bb_threshold): Declare. + * ipa.c: Include hash-table.h, tree-inline.h, profile.h, lto-streamer.h + and data-streamer.h + (histogram_entry): New structure. + (histogram, histogram_pool): New global vars. + (histogram_hash): New structure. + (histogram_hash::hash): New method. + (histogram_hash::equal): Likewise. + (account_time_size): New function. + (cmp_counts): New function. + (dump_histogram): New function. + (ipa_profile_generate_summary): New function. + (ipa_profile_write_summary): New function. + (ipa_profile_read_summary): New function. + (ipa_profile): Decide on threshold. + (pass_ipa_profile): Add ipa_profile_write_summary and + ipa_profile_read_summary. + * Makefile.in (ipa.o): Update dependencies. + * lto-streamer.h (LTO_section_ipa_profile): New section. + +2013-03-29 Gabriel Dos Reis + + * tree.h (VAR_P): New. + +2013-03-29 Paolo Carlini + + PR lto/56777 + * doc/invoke.texi ([-fwhole-program]): Fix typo. + +2013-03-29 Steven Bosscher + + * cfgbuild.c (inside_basic_block_p): Use JUMP_TABLE_DATA_P in lieu + of tests for JUMP_P and a ADDR_DIFF_VEC or ADDR_VEC pattern. + (control_flow_insn_p): Likewise. + * cfgrtl.c (duplicate_insn_chain): Likewise. + * final.c (get_attr_length_1): Likewise. + (shorten_branches): Likewise. + (final_scan_insn): Likewise. + * function.c (instantiate_virtual_regs): Likewise. + * gcse.c (insert_insn_end_basic_block): Likewise. + * ira-costs.c (scan_one_insn): Likewise. + * lra-eliminations.c (eliminate_regs_in_insn): Likewise. + * lra.c (check_rtl): Likewise. + * reload1.c (elimination_costs_in_insn): Likewise. + * reorg.c (follow_jumps): Likewise. + + * config/arm/arm.c (is_jump_table): Use JUMP_TABLE_DATA_P in lieu + of tests for JUMP_P and a ADDR_DIFF_VEC or ADDR_VEC pattern. + (thumb_far_jump_used_p): Likewise. + * config/bfin/bfin.c (workaround_rts_anomaly): Likewise. + (workaround_speculation): Likewise. + (add_sched_insns_for_speculation): Likewise. + * config/c6x/c6x.c (reorg_emit_nops): Likewise. + * config/frv/frv.c (frv_function_contains_far_jump): Likewise. + (frv_for_each_packet): Likewise. + * config/i386/i386.c (ix86_avoid_jump_mispredicts): Likewise. + * config/ia64/ia64.c (emit_all_insn_group_barriers): Likewise. + (final_emit_insn_group_barriers): Likewise. + * config/m32r/m32r.c (m32r_is_insn): Likewise. + * config/mips/mips.c (USEFUL_INSN_P): Likewise. + (mips16_insn_length): Likewise. + * config/pa/pa.c (pa_reorg): Likewise. + (pa_combine_instructions): Likewise. + * config/rs6000/rs6000.c (rs6000_invalid_within_doloop): Likewise. + * config/sh/sh.c (fixup_addr_diff_vecs): Likewise. + (sh_reorg): Likewise. + (split_branches): Likewise. + * config/spu/spu.c (get_branch_target): Likewise. + + * config/s390/s390.c (s390_chunkify_start): Simplify logic using + JUMP_TABLE_DATA_P. + +2013-03-29 Kirill Yukhin + + * config/i386/avx2intrin.h (_mm256_broadcastsi128_si256): + Fix declaration name. + +2013-03-28 Lawrence Crowl + + * graphds.h (struct graph.indicies): Remove unused. + * graphite-poly.h (struct graph.original_pddrs): Remove unused. + (SCOP_ORIGINAL_PDDRS): Remove unused. + * sese.h (extern insert_loop_close_phis): Removed unused. + (extern insert_guard_phis): Removed unused. + (extern ivtype_map_elt_info): Removed unused. + (new_ivtype_map_elt): Removed unused. + * sese.c (ivtype_map_elt_info): Removed unused. + +2013-03-28 Lawrence Crowl + + * Makefile.in: Add several missing include dependences. + (DUMPFILE_H): New. + (test-dump.o): New. This object is not added to any executable, + but is present for ad-hoc testing. + * bitmap.c + (debug (const bitmap_head_def &)): New. + (debug (const bitmap_head_def *)): New. + * bitmap.h + (extern debug (const bitmap_head_def &)): New. + (extern debug (const bitmap_head_def *)): New. + * cfg.c + (debug (edge_def &)): New. + (debug (edge_def *)): New. + * cfghooks.c + (debug (basic_block_def &)): New. + (debug (basic_block_def *)): New. + * dumpfile.h + (dump_node (const_tree, int, FILE *)): Correct source file. + * dwarf2out.c + (debug (die_struct &)): New. + (debug (die_struct *)): New. + * dwarf2out.h + (extern debug (die_struct &)): New. + (extern debug (die_struct *)): New. + * gimple-pretty-print.c + (debug (gimple_statement_d &)): New. + (debug (gimple_statement_d *)): New. + * gimple-pretty-print.h + (extern debug (gimple_statement_d &)): New. + (extern debug (gimple_statement_d *)): New. + * ira-build.c + (debug (ira_allocno_copy &)): New. + (debug (ira_allocno_copy *)): New. + (debug (ira_allocno &)): New. + (debug (ira_allocno *)): New. + * ira-int.h + (extern debug (ira_allocno_copy &)): New. + (extern debug (ira_allocno_copy *)): New. + (extern debug (ira_allocno &)): New. + (extern debug (ira_allocno *)): New. + * ira-lives.c + (debug (live_range &)): New. + (debug (live_range *)): New. + * lra-int.h + (debug (lra_live_range &)): New. + (debug (lra_live_range *)): New. + * lra-lives.c + (debug (lra_live_range &)): New. + (debug (lra_live_range *)): New. + * omega.c + (debug (omega_pb_d &)): New. + (debug (omega_pb_d *)): New. + * omega.h + (extern debug (omega_pb_d &)): New. + (extern debug (omega_pb_d *)): New. + * print-rtl.c + (debug (const rtx_def &)): New. + (debug (const rtx_def *)): New. + * print-tree.c + (debug_tree (tree): Move within file. + (debug_raw (const tree_node &)): New. + (debug_raw (const tree_node *)): New. + (dump_tree_via_hooks (const tree_node *, int)): New. + (debug (const tree_node &)): New. + (debug (const tree_node *)): New. + (debug_verbose (const tree_node &)): New. + (debug_verbose (const tree_node *)): New. + (debug_head (const tree_node &)): New. + (debug_head (const tree_node *)): New. + (debug_body (const tree_node &)): New. + (debug_body (const tree_node *)): New. + (debug_vec_tree (tree): Move and reimplement in terms of dump. + (debug (vec &)): New. + (debug (vec *)): New. + * rtl.h + (extern debug (const rtx_def &)): New. + (extern debug (const rtx_def *)): New. + * sbitmap.c + (debug_raw (simple_bitmap_def &)): New. + (debug_raw (simple_bitmap_def *)): New. + (debug (simple_bitmap_def &)): New. + (debug (simple_bitmap_def *)): New. + * sbitmap.h + (extern debug (simple_bitmap_def &)): New. + (extern debug (simple_bitmap_def *)): New. + (extern debug_raw (simple_bitmap_def &)): New. + (extern debug_raw (simple_bitmap_def *)): New. + * sel-sched-dump.c + (debug (vinsn_def &)): New. + (debug (vinsn_def *)): New. + (debug_verbose (vinsn_def &)): New. + (debug_verbose (vinsn_def *)): New. + (debug (expr_def &)): New. + (debug (expr_def *)): New. + (debug_verbose (expr_def &)): New. + (debug_verbose (expr_def *)): New. + (debug (vec &)): New. + (debug (vec *)): New. + * sel-sched-dump.h + (extern debug (vinsn_def &)): New. + (extern debug (vinsn_def *)): New. + (extern debug_verbose (vinsn_def &)): New. + (extern debug_verbose (vinsn_def *)): New. + (extern debug (expr_def &)): New. + (extern debug (expr_def *)): New. + (extern debug_verbose (expr_def &)): New. + (extern debug_verbose (expr_def *)): New. + (extern debug (vec &)): New. + (extern debug (vec *)): New. + * sel-sched-ir.h + (_list_iter_cond_expr): Make inline instead of static. + * sreal.c + (debug (sreal &)): New. + (debug (sreal *)): New. + * sreal.h + (extern debug (sreal &)): New. + (extern debug (sreal *)): New. + * tree.h + (extern debug_raw (const tree_node &)): New. + (extern debug_raw (const tree_node *)): New. + (extern debug (const tree_node &)): New. + (extern debug (const tree_node *)): New. + (extern debug_verbose (const tree_node &)): New. + (extern debug_verbose (const tree_node *)): New. + (extern debug_head (const tree_node &)): New. + (extern debug_head (const tree_node *)): New. + (extern debug_body (const tree_node &)): New. + (extern debug_body (const tree_node *)): New. + (extern debug (vec &)): New. + (extern debug (vec *)): New. + * tree-cfg.c + (debug (struct loop &)): New. + (debug (struct loop *)): New. + (debug_verbose (struct loop &)): New. + (debug_verbose (struct loop *)): New. + * tree-dump.c: Add header dependence. + * tree-flow.h + (extern debug (struct loop &)): New. + (extern debug (struct loop *)): New. + (extern debug_verbose (struct loop &)): New. + (extern debug_verbose (struct loop *)): New. + * tree-data-ref.c + (debug (data_reference &)): New. + (debug (data_reference *)): New. + (debug (vec &)): New. + (debug (vec *)): New. + (debug (vec &)): New. + (debug (vec *)): New. + * tree-data-ref.h + (extern debug (data_reference &)): New. + (extern debug (data_reference *)): New. + (extern debug (vec &)): New. + (extern debug (vec *)): New. + (extern debug (vec &)): New. + (extern debug (vec *)): New. + * tree-ssa-alias.c + (debug (pt_solution &)): New. + (debug (pt_solution *)): New. + * tree-ssa-alias.h + (extern debug (pt_solution &)): New. + (extern debug (pt_solution *)): New. + * tree-ssa-alias.c + (debug (_var_map &)): New. + (debug (_var_map *)): New. + (debug (tree_live_info_d &)): New. + (debug (tree_live_info_d *)): New. + * tree-ssa-alias.h + (extern debug (_var_map &)): New. + (extern debug (_var_map *)): New. + (extern debug (tree_live_info_d &)): New. + (extern debug (tree_live_info_d *)): New. + +2013-03-28 Jan Hubicka + + * lto-cgraph.c (merge_profile_summaries): Fix overflows. + +2013-03-28 Ian Bolton + + * config/aarch64/aarch64.md (aarch64_can_eliminate): Keep frame + record only when desired or required. + +2013-03-28 Uros Bizjak + + * config/i386/i386.md (*vec_extract2vdi_1): Merge with + *vec_extractv2di_1_rex64. Use x64 isa attribute. + +2013-03-28 Naveen H.S + + * config/aarch64/aarch64.md (*and3_compare0): New pattern. + (*andsi3_compare0_uxtw): New pattern. + (*and_3_compare0): New pattern. + (*and_si3_compare0_uxtw): New pattern. + +2013-03-28 Jan Hubicka + + * data-streamer-in.c (streamer_read_gcov_count): New function. + * gimple-streamer-out.c: Include value-prof.h. + (output_gimple_stmt): Output histogram. + (output_bb): Use streamer_write_gcov_count. + * value-prof.c: Include data-streamer.h + (dump_histogram_value): Add HIST_TYPE_MAX. + (stream_out_histogram_value): New function. + (stream_in_histogram_value): New function. + * value-prof.h (enum hist_type): Add HIST_TYPE_MAX. + (stream_out_histogram_value, stream_in_histogram_value): Declare. + * data-streamer-out.c (streamer_write_gcov_count): New function. + (streamer_write_gcov_count_stream): New function. + * lto-cgraph.c (lto_output_edge): Update counter streaming. + (lto_output_node): Likewise. + (input_node, input_edge): Likewise. + * lto-streamer-out.c (output_cfg): Update streaming. + * lto-streamer-in.c (input_cfg): Likewise. + * data-streamer.h (streamer_write_gcov_count, + streamer_write_gcov_count_stream, streamer_read_gcov_count): Declare. + * gimple-streamer-in.c: Include value-prof.h + (input_gimple_stmt): Input histograms. + (input_bb): Update profile streaming. + +2013-03-28 Kenneth Zadeck + + * genmodes.c (emit_max_int): New function. + (emit_insn_modes_h): Added call to emit_max_function. + * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_INT, MAX_BITSIZE_MODE_ANY_MODE): + Added doc. + * machmode.def: Fixed comment. + +2013-03-28 Kenneth Zadeck + + * combine.c (try_combine): Removed useless assert. + * cselib.c (rtx_equal_for_cselib_1): Removed unnecessary parens. + +2013-03-28 Marek Polacek + Richard Biener + + PR tree-optimization/56695 + * tree-vect-stmts.c (vectorizable_condition): Unconditionally + build signed result of a vector comparison. + * tree-cfg.c (verify_gimple_comparison): Check that a result + of a vector comparison has signed type. + +2013-03-28 Richard Biener + + PR tree-optimization/37021 + * tree-vect-slp.c (vect_build_slp_tree): When not unrolling + do not restrict gaps between groups. + * tree-vect-stmts.c (vectorizable_load): Properly account for + a gap between groups. + +2013-03-28 Eric Botcazou + + * toplev.c (process_options): Do not disable -fomit-frame-pointer on a + general basis if unwind info is requested and ACCUMULATE_OUTGOING_ARGS + is not enabled. + +2013-03-27 Gerald Pfeifer + + * doc/invoke.texi (AVR Options): Tweak link for AVR-LibC user manual. + * doc/extend.texi (Named Address Spaces): Ditto. + (Variable Attributes): Ditto. + +2013-03-27 Kai Tietz + + * config.build: Add support for cygwin x64 target. + * config.gcc: Likewise. + * config.host: Likewise. + * configure.ac: Likewise + * configure: Regenerated. + +2013-03-27 Kai Tietz + + * config/i386/cygwin-stdint.h: Add support for cygwin x64 target. + * config/i386/t-cygwin-w64: New file. + * config/i386/cygwin-w64.h: New file. + * config/i386/cygwin.h (EXTRA_OS_CPP_BUILTINS): Extend + and add support for x64-cygwin target. + (CPP_SPEC): Likewise. + (CXX_WRAP_SPEC_LIST): Undefine before define. + (LIBGCJ_SONAME): Use 15 as version. + +2013-03-27 Richard Biener + + PR tree-optimization/56716 + * tree-ssa-structalias.c (perform_var_substitution): Adjust + dumping for ref nodes. + +2013-03-27 Martin Jambor + + PR tree-optimization/55334 + * ipa-cp.c (initialize_node_lattices): Allow IPA-CP through and to + restricted pointers to arrays. + +2013-03-27 Gabriel Dos Reis + + * Makefile.in (.SUFFIXES): Add .cc. + (.c.o): Apply same recipe for implicit rule .cc.o. + +2013-03-27 Richard Biener + + PR tree-optimization/37021 + * tree-vect-data-refs.c (vect_check_strided_load): Allow + REALPART/IMAGPART_EXPRs around the supported refs. + * tree-ssa-structalias.c (find_func_aliases): Assume that + floating-point values are not used to transfer pointers. + +2013-03-27 Alexander Ivchenko + + * target.def (TARGET_HAS_IFUNC_P): New target hook. + * doc/tm.texi.in (TARGET_HAS_IFUNC_P): New. + * doc/tm.texi: Regenerate. + * targhooks.h (default_has_ifunc_p): New. + * targhooks.c (default_has_ifunc_p): Ditto. + * config/linux-protos.h: New file. + * config/linux-android.h (TARGET_HAS_IFUNC_P): Using version of this + hook for linux which disables support of indirect functions in android. + * config/linux-android.c: New file. + * config/t-linux-android.c: Ditto. + * config.gcc: Added new object file linux-android.o. + * config/i386/i386.c (ix86_get_function_versions_dispatcher): + Using TARGET_HAS_IFUNC hook instead of HAVE_GNU_INDIRECT_FUNCTION. + * varasm.c (do_assemble_alias): Likewise. + * configure.ac: Define HAVE_GNU_INDIRECT_FUNCTION as zero if the target + doesn't support indirect functions. + * configure: Regenerate. + +2013-03-27 Bin Cheng + + PR target/56102 + * config/arm/arm.c (thumb1_rtx_costs, thumb1_size_rtx_costs): Fix + rtx costs for SET/ASHIFT/ASHIFTRT/LSHIFTRT/ROTATERT patterns with + mult-word mode. + +2013-03-27 Andreas Krebbel + + * config/s390/s390.h (TARGET_FLT_EVAL_METHOD): Define. + +2013-03-27 Terry Guo + + * config/arm/arm-cores.def: Added core cortex-r7. + * config/arm/arm-tune.md: Regenerated. + * config/arm/arm-tables.opt: Regenerated. + * doc/invoke.texi: Added entry for core cortex-r7. + +2013-03-27 Walter Lee + + * config/tilegx/tilegx.c (tilegx_expand_prologue): Avoid + double-decrement of next_scratch_regno. + +2013-03-27 Walter Lee + + * config/tilegx/tilegx.md (insn_v1mulu): Fix predicates on + input operands. + (insn_v1mulus): Ditto. + (insn_v2muls): Ditto. + +2013-03-27 Walter Lee + + * config/tilegx/tilegx.h (ASM_OUTPUT_ADDR_VEC_ELT): Delete extra tab. + (ASM_OUTPUT_ADDR_DIFF_ELT): Ditto. + +2013-03-27 Walter Lee + + * config/tilegx/tilegx.md (*sibcall_insn): Fix type atribute for jr. + (*sibcall_value): Ditto. + +2013-03-27 Walter Lee + + * config/tilegx/tilegx.md (insn_mnz_): Replaced by ... + (insn_mnz_v8qi): ... this ... + (insn_mnz_v4hi): ... and this. Replace (const_int 0) with the + vector equivalent. + (insn_vmnz): Replaced by ... + (insn_v1mnz): ... this ... + (insn_v2mnz): ... and this. Replace (const_int 0) with the vector + equivalent. + (insn_mz_): Replaced by ... + (insn_mz_v8qi): ... this ... + (insn_mz_v4hi): ... and this. Replace (const_int 0) with the + vector equivalent. + (insn_vmz): Replaced by ... + (insn_v1mz): ... this ... + (insn_v2mz): ... and this. Replace (const_int 0) with the vector + equivalent. + +2013-03-26 Eric Botcazou + + * doc/invoke.texi (SPARC options): Remove -mlittle-endian. + +2013-03-26 Roland McGrath + + * config/arm/arm.c (arm_print_operand: case 'w'): Use fputs rather + than fprintf with a non-constant, non-format string. + +2013-03-26 Uros Bizjak + + * config/i386/i386.md (*cmpqi_ext_1): Merge with *cmpqi_ext_1_rex64 + using nox64 isa attribute. Use nonimmediate_x86nomem_operand as + operand 0 predicate. + (*cmpqi_ext_3): Merge with *cmpqi_ext_3_rex64 using nox64 isa + attribute. Use general_x64nomem_operand as operand 1 predicate. + (*movqi_extv_1): Merge with *movqi_extv_1_rex64 using nox64 isa + attribute. Use nonimmediate_x64nomem_operand as operand 0 predicate. + (*movqi_extzv_2): Merge with *movqi_extzv_2_rex64 using nox64 isa + attribute. Use nonimmediate_x64nomem_operand as operand 0 predicate. + (mov_insv_1): Remove expander. Merge insn with + movsi_insv_1 using SWI48 mode iterator and nox64 isa attribute. + Use general_x64nomem_operand as operand 1 predicate. + (addqi_ext_1): Merge with *addqi_ext_1_rex64 using nox64 isa attribute. + (*testqi_ext_1): Merge with *testqi_ext_1_rex64 using nox64 isa + attribute. Use nonimmediate_x64nomem_operand as operand 1 predicate. + (*andqi_ext_1): Merge with *andqi_ext_1_rex64 using nox64 isa + attribute. Use nonimmediate_x64nomem_operand as operand 2 predicate. + (*qi_ext_1): Merge with *qi_ext_1_rex64 using nox64 isa + attribute. Use nonimmediate_x64nomem_operand as operand 1 predicate. + (*xorqi_cc_ext_1): Merge with *xorqi_cc_ext_1_rex64 using nox64 + isa attribute. Use general_x64nomem_operand as operand 2 predicate. + * config/i386/predicates.md (nonimmediate_x64nomem_operand): New. + (general_x64nomem_operand): Ditto. + +2013-03-26 Sebastian Huber + + * config/rtems.opt: Add -pthread option. + +2013-03-26 Richard Biener + + * alias.c (find_base_term): Avoid redundant and not used recursion. + (base_alias_check): Get the initial base term from the caller. + (true_dependence_1): Compute and pass base terms to base_alias_check. + (write_dependence_p): Likewise. + (may_alias_p): Likewise. + +2013-03-26 Sofiane Naci + + * config/aarch64/aarch64.c (aarch64_classify_address): Support + PC-relative load in SI modes and above only. + +2013-03-26 Xinyu Qi + + * config/arm/arm.h (FIRST_IWMMXT_GR_REGNUM): Add comment. + * config/arm/iwmmxt.md (WCGR0): Update. + (WCGR1, WCGR2, WCGR3): Likewise. + +2013-03-26 Uros Bizjak + + * config/i386/i386.md (*movdfcc_1): Merge with *movdfcc_1_rex64. + Use x64 and nox64 isa attributes. + +2013-03-26 Richard Biener + + * emit-rtl.c (set_mem_attributes_minus_bitpos): Remove + alignment computations and rely on get_object_alignment_1 + for the !TYPE_P case. + Commonize DECL/COMPONENT_REF handling in the ARRAY_REF path. + +2013-03-26 Walter Lee + + * config/tilegx/tilegx.h (PROFILE_BEFORE_PROLOGUE): Define. + * config/tilegx/tilepro.h (PROFILE_BEFORE_PROLOGUE): Define. + +2013-03-25 Jeff Law + + * tree-ssa-dom.c (record_equivalences_from_incoming_edge): Add missing + check for INTEGRAL_TYPE_P that was missing due to checking in + wrong version of prior patch. + +2013-03-25 Walter Lee + + * config/tilegx/tilegx-builtins.h (enum tilegx_builtin): Add + TILEGX_INSN_SHUFFLEBYTES1. + * config/tilegx/tilegx.c (tilegx_builtin_info): Add entry for + shufflebytes1. + (tilegx_builtins): Ditto. + * config/tilegx/tilegx.md (insn_shufflebytes1): New pattern. + +2013-03-25 Walter Lee + + * config/tilegx/tilegx.md (floatsisf2): New pattern. + (floatunssisf2): New pattern. + (floatsidf2): New pattern. + (floatunssidf2): New pattern. + +2013-03-25 Walter Lee + + * config/tilegx/tilegx.c (expand_set_cint64_one_inst): Inline + tests for constraint J, K, N, P. + +2013-03-25 Walter Lee + + * config/tilegx/tilegx.c (tilegx_asm_preferred_eh_data_format): + Use indirect/pcrel encoding. + * config/tilepro/tilepro.c (tilepro_asm_preferred_eh_data_format): + Ditto. + +2013-03-25 Steve Ellcey + + * config/mips/mmips-cpus.def (74kc, 74kf2_1, 74kf, 74kf, 74kf1_1, + 74kfx, 74kx, 74kf3_2): Add PTF_AVOID_IMADD. + * config/mips/mips.c (mips_option_override): Set IMADD default. + * config/mips/mips.h (PTF_AVOID_IMADD): New. + (ISA_HAS_MADD_MSUB): Remove MIPS16 check. + (GENERATE_MADD_MSUB): Remove TUNE_74K check, add MIPS16 check. + * config/mips/mips.md (mimadd): New flag for integer madd/msub. + * doc/invoke.texi (-mimadd/-mno-imadd): New. + +2013-03-25 Jeff Law + + * tree-ssa-dom.c (record_equivalences_from_incoming_edge): Rework + slightly to avoid creating and folding useless trees. Simplify + slightly by restricting to INTEGER_CSTs and using int_fits_type_p. + +2013-03-25 Uros Bizjak + + * config/i386/i386.md (*zero_extendsidi2): Merge with + *zero_extendsidi2_rex64. Use x64 and nox64 isa attributes. + * config/i386/predicates.md (x86_64_zext_operand): Rename from + x86_64_zext_general_operand. Use nonimmediate_operand on 32bit + targets. Clarify comment. + +2013-03-25 Martin Jambor + + * ipa-prop.c (ipa_write_jump_function): Stream simple and aritmetic + pass-through jump functions differently. + (ipa_read_jump_function): Likewise. Also use setter functions to set + up jump functions. + +2013-03-25 Martin Jambor + + * ipa-cp.c (ipa_get_indirect_edge_target): Renamed to + ipa_get_indirect_edge_target_1, added parameter agg_reps and ability to + process it. + (ipa_get_indirect_edge_target): New function. + (devirtualization_time_bonus): New parameter known_aggs, pass it to + ipa_get_indirect_edge_target. Update all callers. + (ipcp_discover_new_direct_edges): New parameter aggvals. Pass it to + ipa_get_indirect_edge_target_1 instead of calling + ipa_get_indirect_edge_target. + (create_specialized_node): Pass aggvlas to + ipcp_discover_new_direct_edges. + +2013-03-25 Kyrylo Tkachov + + * config/arm/arm.md (f_sels, f_seld): New types. + (*cmov): New pattern. + * config/arm/predicates.md (arm_vsel_comparison_operator): New + predicate. + +2013-03-25 Kai Tietz + + * config/i386/xm-mingw32.h (__USE_MINGW_ANSI_STDIO): Enable + POSIX-printf for mingw-hosted builds. + +2013-03-25 Richard Biener + + PR middle-end/56694 + * tree-eh.c (lower_eh_must_not_throw): Strip BLOCKs from the + must-not-throw stmt location. + +2013-03-25 Kyrylo Tkachov + + * config/arm/arm.c (arm_emit_load_exclusive): Add acq parameter. + Emit load-acquire versions when acq is true. + (arm_emit_store_exclusive): Add rel parameter. + Emit store-release versions when rel is true. + (arm_split_compare_and_swap): Use acquire-release instructions + instead. + of barriers when appropriate. + (arm_split_atomic_op): Likewise. + * config/arm/arm.h (TARGET_HAVE_LDACQ): New macro. + * config/arm/unspecs.md (VUNSPEC_LAX): New unspec. + (VUNSPEC_SLX): Likewise. + (VUNSPEC_LDA): Likewise. + (VUNSPEC_STL): Likewise. + * config/arm/sync.md (atomic_load): New pattern. + (atomic_store): Likewise. + (arm_load_acquire_exclusive): Likewise. + (arm_load_acquire_exclusivesi): Likewise. + (arm_load_acquire_exclusivedi): Likewise. + (arm_store_release_exclusive): Likewise. + +2013-03-25 Catherine Moore + + * config/mips/constraints.md (u, Udb7 Uead, Uean, Uesp, Uib3, + Uuw6, Usb4, ZS, ZT, ZU, ZV, ZW): New constraints. + * config/mip/predicates.md (lwsp_swsp_operand, + lw16_sw16_operand, lhu16_sh16_operand, lbu16_operand, + sb16_operand, db4_operand, db7_operand, ib3_operand, + sb4_operand, ub4_operand, uh4_operand, uw4_operand, + uw5_operand, uw6_operand, addiur2_operand, addiusp_operand, + andi16_operand): New predicates. + * config/mips/mips.md (compression): New attribute. + (enabled): New attribute. + (length): Consider compression in computing length. + (shift_compression): New code attribute. + (*add3): New operands. Record compression. + (sub3): Likewise. + (one_cmpl2): Likewise. + (*and3): Likewise. + (*ior3): Likewise. + (unnamed pattern for xor): Likewise. + (*zero_extend2): Likewise. + (*3): Likewise. + (*mov_internal: Likewise. + * config/mips/mips-protos.h (mips_signed_immediate_p): New. + (mips_unsigned_immediate_p): New. + (umips_lwsp_swsp_address_p): New. + (m16_based_address_p): New. + * config/mips/mips-protos.h (mips_signed_immediate_p): New prototype. + (mips_unsigned_immediate_p): New prototype. + (lwsp_swsp_address_p): New prototype. + (m16_based_address_p): New prototype. + * config/mips/mips.c (mips_unsigned_immediate_p): New function. + (mips_signed_immediate_p): New function. + (m16_based_address_p): New function. + (lwsp_swsp_address_p): New function. + (mips_print_operand_punctuation): Recognize short delay slot insns + for microMIPS.add3" + +2013-03-25 Kyrylo Tkachov + + PR target/56720 + * config/arm/iterators.md (v_cmp_result): New mode attribute. + * config/arm/neon.md (vcond): Handle unordered cases. + +2013-03-25 Richard Biener + + PR tree-optimization/56689 + * tree-vrp.c (execute_vrp): Mark loops for fixup if we removed + any edge. + +2013-03-25 Richard Biener + + * tree-ssa-loop-im.c (struct mem_ref): Use bitmap_head instead + of bitmap. + (memory_references): Likewise. + (outermost_indep_loop, mem_ref_alloc, mark_ref_stored, + gather_mem_refs_stmt, record_dep_loop, ref_indep_loop_p_1, + ref_indep_loop_p_2, find_refs_for_sm): Adjust. + (gather_mem_refs_in_loops): Fold into ... + (analyze_memory_references): ... this. Move initialization + to tree_ssa_lim_initialize. + (fill_always_executed_in): Rename to ... + (fill_always_executed_in_1): ... this. + (fill_always_executed_in): Move contains_call computation to + this new function from ... + (tree_ssa_lim_initialize): ... here. + (tree_ssa_lim): Call fill_always_executed_in. + +2013-03-25 Eric Botcazou + + * postreload.c (reload_combine): Fix code detecting returns. + +2013-03-25 Eric Botcazou + + * function.c (emit_use_return_register_into_block): On cc0 targets, + do not emit the sequence between cc0 setter and user. + +2013-03-25 Kai Tietz + + * config/i386/predicates.md (local_symbolic_operand): Interpret + dll-imported symbols as none-local. + +2013-03-25 Richard Biener + + * tree-ssa-loop-im.c (struct depend): Remove. + (struct lim_aux_data): Make depends a vec of gimples. + (free_lim_aux_data): Adjust. + (add_dependency): Likewise. + (set_level): Likewise. + +2013-03-25 Richard Biener + + PR middle-end/56434 + * calls.c (expand_call): Use MALLOC_ABI_ALIGNMENT to annotate + the pointer returned by calls with ECF_MALLOC set. + +2013-03-24 Uros Bizjak + + * config/i386/mmx.md (mov): Add ?!Ym,r and r,?!Ym alternatives. + +2013-03-24 Uros Bizjak + + * config/i386/mmx.md (mov): Merge with movv2sf expander + using MMXMODE mode iterator. + (*move_internal): Merge with *movv2sf_internal and + *movv2sf_internal_rex64 using MMXMODE mode iterator. + +2013-03-23 Steven Bosscher + + * gcse.c (oprs_unchanged_p): Respect flag_gcse_lm. + (record_last_mem_set_info): Likewise. + + * df-core.c (rest_of_handle_df_initialize): Use XCNEWVEC instead + of XNEWVEC followed by memset. + (df_worklist_dataflow): Use XNEWVEC instead of xmalloc with a cast. + +2013-03-23 Steven Bosscher + + * config/avr/avr.c, config/bfin/bfin.c, config/c6x/c6x.c, + config/epiphany/epiphany.c, config/frv/frv.c, config/ia64/ia64.c, + config/iq2000/iq2000.c, config/mcore/mcore.c, config/mep/mep.c, + config/mmix/mmix.c, config/pa/pa.c, config/rs6000/rs6000.c, + config/s390/s390.c, config/sparc/sparc.c, config/spu/spu.c, + config/stormy16/stormy16.c, config/v850/v850.c, config/xtensa/xtensa.c, + dwarf2out.c, hw-doloop.c, resource.c, rtl.h : Where applicable, use + the predicates NOTE_P, NONJUMP_INSN_P, JUMP_P, CALL_P, LABEL_P, and + BARRIER_P instead of GET_CODE. + +2013-03-23 Eric Botcazou + + * config/sparc/sparc.c (sparc_emit_probe_stack_range): Fix small + inaccuracy in the probing code. + + * config/sparc/sparc.md (ctrapsi4): Add predicate for operand #3. + (ctrapdi4): Likewise. + +2013-03-23 Eric Botcazou + + * calls.c (expand_call): Add missing guard to code handling return + of non-BLKmode structures in MSB. + * function.c (expand_function_end): Likewise. + +2013-03-23 Eric Botcazou + + * combine.c (try_combine): Adjust comment. Do not add the set of + insn #0 if the destination indirectly is set or dies in insn #2. + Tidy up code to distribute a new note. + +2013-03-22 Uros Bizjak + + * config/i386/i386.md (*movdi_internal): Set prefix_rex attribute + also for alternatives 16 and 17. + +2013-03-22 Uros Bizjak + + * config/i386/sse.md (*mov_internal): Merge with + *mov_internal_rex64. Use x64 and nox64 isa attributes. + Emit insn template depending on type attribute. Use + HAVE_AS_IX86_INTERUNIT_MOVQ to handle broken assemblers that require + movd instead of movq mnemonic for interunit moves. Rewrite mode + attribute calculation. Remove unit attribute calculation. + Set prefix attribute to maybe_vex for sselog1 and ssemov types. + Set prefix_data16 attribute for DImode ssemov types. + Use Ym instead of y for SSE-MMX conversion alternatives. + Reorder operand constraints. + +2013-03-22 Steven Bosscher + + * df.h (df_insn_delete): Adjust prototype. + * emit-rtl.c (remove_insn): Pass a basic block to df_insn_delete + and let it decide whether mark the basic block dirty. + (set_insn_deleted): Only pass INSN_P insns to df_insn_delete. + * df-scan.c (df_insn_info_delete): New helper function, split + off from df_insn_delete. + (df_scan_free_bb_info): Use it. + (df_insn_rescan, df_insn_rescan_all, df_process_deferred_rescans): + Likewise. + (df_insn_delete): Likewise. Take insn rtx as argument. Verify + that the insn is actually an insn and it has a non-NULL basic block. + Do not mark basic block dirty if only deleting a DEBUG_INSN. + +2013-03-22 Richard Biener + + * tree-ssa-loop-im.c (struct mem_ref): Remove indep_ref and + dep_ref members. + (mem_ref_alloc): Do not allocate them. + (refs_independent_p): Do not query or maintain a cache. + +2013-03-22 Richard Biener + + * tree-ssa-loop-im.c (memory_references): Drop all_refs_in_loop. + (gather_mem_refs_in_loops): Do not compute it. + (analyze_memory_references): Do not allocate it. + (tree_ssa_lim_finalize): Do not free it. + (for_all_locs_in_loop): Do not query all_refs_in_loop. + +2013-03-22 Richard Biener + + * is-a.h (as_a): Use gcc_checking_assert. + +2013-03-22 Ian Bolton + + * config/aarch64/aarch64.c (aarch64_print_operand): New + format specifier for printing a constant in hex. + * config/aarch64/aarch64.md (insv_imm): Use the X + format specifier for printing second operand. + +2013-03-22 Richard Biener + + * tree-ssa-loop-im.c (memory_references): Add refs_stored_in_loop + bitmaps. + (gather_mem_refs_in_loops): Perform store accumulation here. + (create_vop_ref_mapping_loop): Remove. + (create_vop_ref_mapping): Likewise. + (analyze_memory_references): Initialize refs_stored_in_loop. + (LOOP_DEP_BIT): New define to map to bits in (in)dep_loop bitmaps. + (record_indep_loop): Remove. + (record_dep_loop): New function. + (ref_indep_loop_p_1): Adjust to only walk over references + in the loop, not its subloops. + (ref_indep_loop_p): Rename to ... + (ref_indep_loop_p_2): ... this and recurse over the loop tree, + maintaining a more fine-grained cache. + (ref_indep_loop_p): Wrap ref_indep_loop_p_2. + (tree_ssa_lim_finalize): Free refs_stored_in_loop. + +2013-03-22 Richard Biener + + * tree-ssa-loop-im.c (struct mem_ref_locs): Remove. + (struct mem_ref): Make accesses_in_loop a vec of a vec of + aggregate mem_ref_loc. + (free_mem_ref_locs): Inline into ... + (memref_free): ... this and adjust. + (mem_ref_alloc): Adjust. + (mem_ref_locs_alloc): Remove. + (record_mem_ref_loc): Adjust. + (get_all_locs_in_loop): Rewrite into ... + (for_all_locs_in_loop): ... this iterator. + (rewrite_mem_ref_loc): New functor. + (rewrite_mem_refs): Use for_all_locs_in_loop. + (sm_set_flag_if_changed): New functor. + (execute_sm_if_changed_flag_set): Use for_all_locs_in_loop. + (ref_always_accessed): New functor. + (ref_always_accessed_p): Use for_all_locs_in_loop. + +2013-03-21 Marc Glisse + + * tree-pass.h (PROP_gimple_lvec): New. + * passes.c (dump_properties): Handle PROP_gimple_lvec. + (init_optimization_passes): Move pass_lower_vector. + * tree-vect-generic.c (gate_expand_vector_operations_ssa): Test + PROP_gimple_lvec. + (pass_lower_vector): Provide PROP_gimple_lvec. + (pass_lower_vector_ssa): Likewise. + * cfgexpand.c (pass_expand): Require PROP_gimple_lvec. + +2013-03-21 Mark Wielaard + + * dwarf2out.c (size_of_aranges): Skip DECL_IGNORED_P functions. + +2013-03-21 Uros Bizjak + + * config/i386/i386.md (*movdi_internal): Disparage slightly + all MMX moves to/from memory. Use Yi instead of x for SSE-MMX + conversion alternatives. + +2013-03-21 Jakub Jelinek + + PR middle-end/48087 + * diagnostic.def (DK_WERROR): New kind. + * diagnostic.h (werrorcount): Define. + * diagnostic.c (diagnostic_report_diagnostic): For DK_WARNING + promoted to DK_ERROR, increment DK_WERROR counter instead of + DK_ERROR counter. + * toplev.c (toplev_main): Call print_ignored_options even if + just werrorcount is non-zero. Exit with FATAL_EXIT_CODE + even if just werrorcount is non-zero. + + PR debug/55608 + * dwarf2out.c (tree_add_const_value_attribute): Call ggc_free (array) + on failure. + (resolve_one_addr): Fail if referenced STRING_CST hasn't been written. + (string_cst_pool_decl): New function. + (optimize_one_addr_into_implicit_ptr): New function. + (resolve_addr_in_expr): Optimize DWARF location expression + DW_OP_addr DW_OP_stack_value where DW_OP_addr refers to some variable + which doesn't live in memory, but has DW_AT_location or + DW_AT_const_value, or refers to a string literal, into + DW_OP_GNU_implicit_pointer. + (optimize_location_into_implicit_ptr): New function. + (resolve_addr): If removing DW_AT_location of a variable because + it was DW_OP_addr of address of the variable, but the variable doesn't + live in memory, try to emit const value attribute for the initializer. + +2013-03-21 Marc Glisse + + * tree.h (VECTOR_TYPE_P): New macro. + (VECTOR_INTEGER_TYPE_P, VECTOR_FLOAT_TYPE_P, FLOAT_TYPE_P, + TYPE_MODE): Use it. + * fold-const.c (fold_cond_expr_with_comparison): Use build_zero_cst. + VEC_COND_EXPR cannot be lvalues. + (fold_ternary_loc) : Merge with the COND_EXPR case. + +2013-03-21 Marc Glisse + + * simplify-rtx.c (simplify_binary_operation_1) : + Restrict the transformation to equal modes. + +2013-03-21 Richard Biener + + PR tree-optimization/39326 + * tree-ssa-loop-im.c (UNANALYZABLE_MEM_ID): New define. + (MEM_ANALYZABLE): Adjust. + (record_mem_ref_loc): Move bitmap ops ... + (gather_mem_refs_stmt): ... here. Use the shared mem-ref for + unanalyzable refs, do not record locations for it. + (analyze_memory_references): Allocate ref zero as shared + unanalyzable ref. + (refs_independent_p): Do not test for unanalyzed mems here. + (ref_indep_loop_p_1): Special-case disambiguation against + the unanalyzed ref. + (ref_indep_loop_p): Assert we are not queried for the unanalyzed mem. + +2013-03-21 Christophe Lyon + + * config/arm/arm-protos.h (tune_params): Add + prefer_neon_for_64bits field. + * config/arm/arm.c (prefer_neon_for_64bits): New variable. + (arm_slowmul_tune): Default prefer_neon_for_64bits to false. + (arm_fastmul_tune, arm_strongarm_tune, arm_xscale_tune): Ditto. + (arm_9e_tune, arm_v6t2_tune, arm_cortex_tune): Ditto. + (arm_cortex_a15_tune, arm_cortex_a5_tune): Ditto. + (arm_cortex_a9_tune, arm_v6m_tune, arm_fa726te_tune): Ditto. + (arm_option_override): Handle -mneon-for-64bits new option. + * config/arm/arm.h (TARGET_PREFER_NEON_64BITS): New macro. + (prefer_neon_for_64bits): Declare new variable. + * config/arm/arm.md (arch): Rename neon_onlya8 and neon_nota8 to + avoid_neon_for_64bits and neon_for_64bits. Remove onlya8 and nota8. + (arch_enabled): Handle new arch types. Remove support for onlya8 + and nota8. + (one_cmpldi2): Use new arch names. + (zero_extenddi2, extenddi2): Ditto. + * config/arm/arm.opt (mneon-for-64bits): Add option. + * config/arm/neon.md (adddi3_neon, subdi3_neon, iordi3_neon) + (anddi3_neon, xordi3_neon, ashldi3_neon, di3_neon): Use + neon_for_64bits instead of nota8 and avoid_neon_for_64bits instead + of onlya8. + * doc/invoke.texi (-mneon-for-64bits): Document. + +2013-03-21 Richard Biener + + PR tree-optimization/39326 + * tree-ssa-loop-im.c (bb_loop_postorder): New global static. + (sort_bbs_in_loop_postorder_cmp): New function. + (gather_mem_refs_in_loops): Assign mem-ref IDs in loop postorder. + +2013-03-21 Richard Biener + + * tree-vect-data-refs.c (vect_update_interleaving_chain): Remove. + (vect_insert_into_interleaving_chain): Likewise. + (vect_drs_dependent_in_basic_block): Inline ... + (vect_slp_analyze_data_ref_dependence): ... here. New function, + split out from ... + (vect_analyze_data_ref_dependence): ... here. Simplify. + (vect_check_interleaving): Simplify. + (vect_analyze_data_ref_dependences): Likewise. Split out ... + (vect_slp_analyze_data_ref_dependences): ... this new function. + (dr_group_sort_cmp): New function. + (vect_analyze_data_ref_accesses): Compute data-reference groups + here instead of in vect_analyze_data_ref_dependence. Use + a more efficient algorithm. + * tree-vect-slp.c (vect_slp_analyze_bb_1): Use + vect_slp_analyze_data_ref_dependences. Call + vect_analyze_data_ref_accesses earlier. + * tree-vect-loop.c (vect_analyze_loop_2): Likewise. + * tree-vectorizer.h (vect_analyze_data_ref_dependences): Adjust. + (vect_slp_analyze_data_ref_dependences): New prototype. + +2013-03-21 Richard Biener + + * tree-ssa-loop-im.c (can_sm_ref_p): Do not test whether + ref is stored in the loop. + (find_refs_for_sm): Walk only over all stores. + (store_motion_loop): Allocate from lim_bitmap_obstack. + (store_motion): Likewise. + +2013-03-21 Richard Biener + + * tree-vect-loop-manip.c (slpeel_tree_peel_loop_to_edge): + Update virtual SSA form. + +2013-03-21 Rainer Orth + + * configure.ac (gcc_cv_ld_eh_frame_ciev3): New test. + * configure: Regenerate. + * config.in: Regenerate. + * config/sol2.c (solaris_override_options): Only enforce DWARF 2 + if !HAVE_LD_EH_FRAME_CIEV3. + +2013-03-21 Richard Biener + + * tree-cfg.c (verify_expr_no_block): New function. + (verify_expr_location_1): Verify that neither DECL_DEBUG_EXPR + nor DECL_VALUE_EXPR have locations with associated blocks. + * tree-ssa-live.c (clear_unused_block_pointer_1): Remove. + (clear_unused_block_pointer): Remove code dealing with + blocks in DECL_DEBUG_EXPR locations. + +2013-03-21 Richard Biener + + * tree.h (DECL_DEBUG_EXPR_IS_FROM): Rename to ... + (DECL_HAS_DEBUG_EXPR_P): ... this. Guard properly. + * tree.c (copy_node_stat): Do not copy DECL_HAS_DEBUG_EXPR_P. + * dwarf2out.c (add_var_loc_to_decl): Use DECL_HAS_DEBUG_EXPR_P + instead of DECL_DEBUG_EXPR_IS_FROM. + * gimplify.c (gimplify_modify_expr): Likewise. + * tree-cfg.c (verify_expr_location_1): Likewise. + * tree-complex.c (create_one_component_var): Likewise. + * tree-sra.c (create_access_replacement): Likewise. + * tree-ssa-live.c (clear_unused_block_pointer_1): Likewise. + (clear_unused_block_pointer): Likewise. + * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Likewise. + * tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise. + * var-tracking.c (var_debug_decl): Likewise. + (track_expr_p): Likewise. + * tree-inline.c (add_local_variables): Likewise. Set + DECL_HAS_DEBUG_EXPR_P after copying it. + * tree-diagnostic.c (default_tree_printer): Use DECL_HAS_DEBUG_EXPR_P + instead of DECL_DEBUG_EXPR_IS_FROM. Guard properly. + +2013-03-21 Uros Bizjak + + PR bootstrap/56656 + * configure.ac (HAVE_AS_IX86_INTERUNIT_MOVQ): New test. + * configure: Regenerate. + * config.in: Regenerate. + * config/i386/i386.md (*movdf_internal): Use + HAVE_AS_IX86_INTERUNIT_MOVQ to handle broken assemblers that require + movd instead of movq mnemonic for interunit moves. + (*movdi_internal): Ditto. + +2013-03-21 Naveen H.S + + * config/aarch64/aarch64-simd.md (simd_fabd): New Attribute. + (abd_3): New pattern. + (aba_3): New pattern. + (fabd_3): New pattern. + +2013-03-21 Naveen H.S + + * config/aarch64/aarch64-elf.h (REGISTER_PREFIX): Remove. + * config/aarch64/aarch64.c (aarch64_print_operand): Remove all + occurrence of REGISTER_PREFIX as its empty string. + +2013-03-20 Jeff Law + + * tree-ssa-dom.c (record_equivalences_from_incoming_edge): Record + addititional equivalences for equality comparisons between an SSA_NAME + and a constant where the SSA_NAME was set from a widening conversion. + +2013-03-20 Walter Lee + + * config/tilegx/sync.md (atomic_test_and_set): New pattern. + +2013-03-20 Uros Bizjak + + * config/i386/i386.md (*movoi_internal_avx): Emit insn template + depending on type attribute. + (*movti_internal): Ditto. + (*movtf_internal): Ditto. + (*movxf_internal): Ditto. + (*movdf_internal): Ditto. + (*movsf_internal): Ditto. + +2013-03-20 Uros Bizjak + + * config/i386/i386.md (*movti_internal): Set prefix attribute to + maybe_vex for sselog1 and ssemov types. + (*movdi_internal): Reorder operand constraints. + (*movsi_internal): Ditto. Set prefix attribute to + maybe_vex for sselog1 and ssemov types. + (*movtf_internal): Set prefix attribute to maybe_vex + for sselog1 and ssemov types. + (*movdf_internal): Ditto. Set prefix_data16 attribute for + DImode ssemov types. Reorder operand constraints. + (*movsf_internal): Set type of alternatives 3,4 to imov. Set prefix + attribute to maybe_vex for sselog1 and ssemov types. Set prefix_data16 + attribute for SImode ssemov types. Reorder operand constraints. + +2013-03-20 Martin Jambor + + * params.def (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS): New parameter. + * ipa-cp.c (hint_time_bonus): Add abonus for known array indices. + +2013-03-20 Pat Haugen + + * config/rs6000/predicates.md (indexed_address, update_address_mem + update_indexed_address_mem): New predicates. + * config/rs6000/vsx.md (vsx_extract__zero): Set correct "type" + attribute for load/store instructions. + * config/rs6000/dfp.md (movsd_store): Likewise. + (movsd_load): Likewise. + * config/rs6000/rs6000.md (zero_extenddi2_internal1): Likewise. + (unnamed HI->DI extend define_insn): Likewise. + (unnamed SI->DI extend define_insn): Likewise. + (unnamed QI->SI extend define_insn): Likewise. + (unnamed QI->HI extend define_insn): Likewise. + (unnamed HI->SI extend define_insn): Likewise. + (unnamed HI->SI extend define_insn): Likewise. + (extendsfdf2_fpr): Likewise. + (movsi_internal1): Likewise. + (movsi_internal1_single): Likewise. + (movhi_internal): Likewise. + (movqi_internal): Likewise. + (movcc_internal1): Correct mnemonic for stw insn. Set correct "type" + attribute for load/store instructions. + (mov_hardfloat): Set correct "type" attribute for load/store + instructions. + (mov_softfloat): Likewise. + (mov_hardfloat32): Likewise. + (mov_hardfloat64): Likewise. + (mov_softfloat64): Likewise. + (movdi_internal32): Likewise. + (movdi_internal64): Likewise. + (probe_stack_): Likewise. + +2013-03-20 Michael Meissner + + * config/rs6000/vector.md (VEC_R): Add 32-bit integer, binary + floating point, and decimal floating point to reload iterator. + + * config/rs6000/constraints.md (wl constraint): New constraints to + return FLOAT_REGS if certain options are used to reduce the number + of separate patterns that exist in the file. + (wx constraint): Likewise. + (wz constraint): Likewise. + + * config/rs6000/rs6000.c (rs6000_debug_reg_global): If + -mdebug=reg, print wg, wl, wx, and wz constraints. + (rs6000_init_hard_regno_mode_ok): Initialize new constraints. + Initialize the reload functions for 64-bit binary/decimal floating + point types. + (reg_offset_addressing_ok_p): If we are on a power7 or later, use + LFIWZX and STFIWX to load/store 32-bit decimal types, and don't + create the buffer on the stack to overcome not having a 32-bit + load and store. + (rs6000_emit_move): Likewise. + (rs6000_secondary_memory_needed_rtx): Likewise. + (rs6000_alloc_sdmode_stack_slot): Likewise. + (rs6000_preferred_reload_class): On VSX, we can create SFmode 0.0f + via xxlxor, just like DFmode 0.0. + + * config/rs6000/rs6000.h (TARGET_NO_SDMODE_STACK): New macro, + define as 1 if we are running on a power7 or newer. + (enum r6000_reg_class_enum): Add new constraints. + + * config/rs6000/dfp.md (movsd): Delete, combine with binary + floating point moves in rs6000.md. Combine power6x (mfpgpr) moves + with other moves by using conditional constraits (wg). Use LFIWZX + and STFIWX for loading SDmode on power7. Use xxlxor to create 0.0f. + (movsd splitter): Likewise. + (movsd_hardfloat): Likewise. + (movsd_softfloat): Likewise. + + * config/rs6000/rs6000.md (FMOVE32): New iterators to combine + binary and decimal floating point moves. + (fmove_ok): New attributes to combine binary and decimal floating + point moves, and to combine power6x (mfpgpr) moves along normal + floating moves. + (real_value_to_target): Likewise. + (f32_lr): Likewise. + (f32_lm): Likewise. + (f32_li): Likewise. + (f32_sr): Likewise. + (f32_sm): Likewise. + (f32_si): Likewise. + (movsf): Combine binary and decimal floating point moves. Combine + power6x (mfpgpr) moves with other moves by using conditional + constraits (wg). Use LFIWZX and STFIWX for loading SDmode on power7. + (mov for SFmode/SDmode); Likewise. + (SFmode/SDmode splitters): Likewise. + (movsf_hardfloat): Likewise. + (mov_hardfloat for SFmode/SDmode): Likewise. + (movsf_softfloat): Likewise. + (mov_softfloat for SFmode/SDmode): Likewise. + + * doc/md.texi (PowerPC and IBM RS6000 constraints): Document wl, + wx and wz constraints. + + * config/rs6000/constraints.md (wg constraint): New constraint to + return FLOAT_REGS if -mmfpgpr (power6x) was used. + + * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Add wg + constraint. + + * config/rs6000/rs6000.c (rs6000_debug_reg_global): If + -mdebug=reg, print wg, wl, wx, and wz constraints. + (rs6000_init_hard_regno_mode_ok): Initialize new constraints. + Initialize the reload functions for 64-bit binary/decimal floating + point types. + (reg_offset_addressing_ok_p): If we are on a power7 or later, use + LFIWZX and STFIWX to load/store 32-bit decimal types, and don't + create the buffer on the stack to overcome not having a 32-bit + load and store. + (rs6000_emit_move): Likewise. + (rs6000_secondary_memory_needed_rtx): Likewise. + (rs6000_alloc_sdmode_stack_slot): Likewise. + (rs6000_preferred_reload_class): On VSX, we can create SFmode 0.0f + via xxlxor, just like DFmode 0.0. + + * config/rs6000/dfp.md (movdd): Delete, combine with binary + floating point moves in rs6000.md. Combine power6x (mfpgpr) moves + with other moves by using conditional constraits (wg). Use LFIWZX + and STFIWX for loading SDmode on power7. + (movdd splitters): Likewise. + (movdd_hardfloat32): Likewise. + (movdd_softfloat32): Likewise. + (movdd_hardfloat64_mfpgpr): Likewise. + (movdd_hardfloat64): Likewise. + (movdd_softfloat64): Likewise. + + * config/rs6000/rs6000.md (FMOVE64): New iterators to combine + 64-bit binary and decimal floating point moves. + (FMOVE64X): Likewise. + (movdf): Combine 64-bit binary and decimal floating point moves. + Combine power6x (mfpgpr) moves with other moves by using + conditional constraits (wg). + (mov for DFmode/DDmode): Likewise. + (DFmode/DDmode splitters): Likewise. + (movdf_hardfloat32): Likewise. + (mov_hardfloat32 for DFmode/DDmode): Likewise. + (movdf_softfloat32): Likewise. + (movdf_hardfloat64_mfpgpr): Likewise. + (movdf_hardfloat64): Likewise. + (mov_hardfloat64 for DFmode/DDmode): Likewise. + (movdf_softfloat64): Likewise. + (mov_softfloat64 for DFmode/DDmode): Likewise. + (reload__load): Move to later in the file so they aren't in + the middle of the floating point move insns. + (reload__store): Likewise. + + * doc/md.texi (PowerPC and IBM RS6000 constraints): Document wg + constraint. + + * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print out wg + constraint if -mdebug=reg. + (rs6000_initi_hard_regno_mode_ok): Enable wg constraint if -mfpgpr. + Enable using dd reload support if needed. + + * config/rs6000/dfp.md (movtd): Delete, combine with 128-bit + binary and decimal floating point moves in rs6000.md. + (movtd_internal): Likewise. + + * config/rs6000/rs6000.md (FMOVE128): Combine 128-bit binary and + decimal floating point moves. + (movtf): Likewise. + (movtf_internal): Likewise. + (mov_internal, TDmode/TFmode): Likewise. + (movtf_softfloat): Likewise. + (mov_softfloat, TDmode/TFmode): Likewise. + + * config/rs6000/rs6000.md (movdi_mfpgpr): Delete, combine with + movdi_internal64, using wg constraint for move direct operations. + (movdi_internal64): Likewise. + + * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print + MODES_TIEABLE_P for selected modes. Print the numerical value of + the various virtual registers. Use GPR/FPR first/last values, + instead of hard coding the register numbers. Print which modes + have reload functions registered. + (rs6000_option_override_internal): If -mdebug=reg, trace the options + settings before/after setting cpu, target and subtarget settings. + (rs6000_secondary_reload_trace): Improve the RTL dump for -mdebug=addr + and for secondary reload failures in rs6000_secondary_reload_inner. + (rs6000_secondary_reload_fail): Likewise. + (rs6000_secondary_reload_inner): Likewise. + + * config/rs6000/rs6000.md (FIRST_GPR_REGNO): Add convenience + macros for first/last GPR and FPR registers. + (LAST_GPR_REGNO): Likewise. + (FIRST_FPR_REGNO): Likewise. + (LAST_FPR_REGNO): Likewise. + + * config/rs6000/vector.md (mul3): Use the combined macro + VECTOR_UNIT_ALTIVEC_OR_VSX_P instead of separate calls to + VECTOR_UNIT_ALTIVEC_P and VECTOR_UNIT_VSX_P. + (vcond): Likewise. + (vcondu): Likewise. + (vector_gtu): Likewise. + (vector_gte): Likewise. + (xor3): Don't allow logical operations on TImode in 32-bit + to prevent the compiler from converting DImode operations to TImode. + (ior3): Likewise. + (and3): Likewise. + (one_cmpl2): Likewise. + (nor3): Likewise. + (andc3): Likewise. + + * config/rs6000/constraints.md (wt constraint): New constraint + that returns VSX_REGS if TImode is allowed in VSX registers. + + * config/rs6000/predicates.md (easy_fp_constant): 0.0f is an easy + constant under VSX. + + * config/rs6000/rs6000-modes.def (PTImode): Define, PTImode is + similar to TImode, but it is restricted to being in the GPRs. + + * config/rs6000/rs6000.opt (-mvsx-timode): New switch to allow + TImode to occupy a single VSX register. + + * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Default to + -mvsx-timode for power7/power8. + (power7 cpu): Likewise. + (power8 cpu): Likewise. + + * config/rs6000/rs6000.c (rs6000_hard_regno_nregs_internal): Make + sure that TFmode/TDmode take up two registers if they are ever + allowed in the upper VSX registers. + (rs6000_hard_regno_mode_ok): If -mvsx-timode, allow TImode in VSX + registers. + (rs6000_init_hard_regno_mode_ok): Likewise. + (rs6000_debug_reg_global): Add debugging for PTImode and wt + constraint. Print if LRA is turned on. + (rs6000_option_override_internal): Give an error if -mvsx-timode + and VSX is not enabled. + (invalid_e500_subreg): Handle PTImode, restricting it to GPRs. If + -mvsx-timode, restrict TImode to reg+reg addressing, and PTImode + to reg+offset addressing. Use PTImode when checking offset + addresses for validity. + (reg_offset_addressing_ok_p): Likewise. + (rs6000_legitimate_offset_address_p): Likewise. + (rs6000_legitimize_address): Likewise. + (rs6000_legitimize_reload_address): Likewise. + (rs6000_legitimate_address_p): Likewise. + (rs6000_eliminate_indexed_memrefs): Likewise. + (rs6000_emit_move): Likewise. + (rs6000_secondary_reload): Likewise. + (rs6000_secondary_reload_inner): Handle PTImode. Allow 64-bit + reloads to fpr registers to continue to use reg+offset addressing, + but 64-bit reloads to altivec registers need reg+reg addressing. + Drop test for PRE_MODIFY, since VSX loads/stores no longer support + it. Treat LO_SUM like a PLUS operation. + (rs6000_secondary_reload_class): If type is 64-bit, prefer to use + FLOAT_REGS instead of VSX_RGS to allow use of reg+offset addressing. + (rs6000_cannot_change_mode_class): Do not allow TImode in VSX + registers to share a register with a smaller sized type, since VSX + puts scalars in the upper 64-bits. + (print_operand): Add support for PTImode. + (rs6000_register_move_cost): Use VECTOR_MEM_VSX_P instead of + VECTOR_UNIT_VSX_P to catch types that can be loaded in VSX + registers, but don't have arithmetic support. + (rs6000_memory_move_cost): Add test for VSX. + (rs6000_opt_masks): Add -mvsx-timode. + + * config/rs6000/vsx.md (VSm): Change to use 64-bit aligned moves + for TImode. + (VSs): Likewise. + (VSr): Use wt constraint for TImode. + (VSv): Drop TImode support. + (vsx_movti): Delete, replace with versions for 32-bit and 64-bit. + (vsx_movti_64bit): Likewise. + (vsx_movti_32bit): Likewise. + (vec_store_): Use VSX iterator instead of vector iterator. + (vsx_and3): Delete use of '?' constraint on inputs, just put + one '?' on the appropriate output constraint. Do not allow TImode + logical operations on 32-bit systems. + (vsx_ior3): Likewise. + (vsx_xor3): Likewise. + (vsx_one_cmpl2): Likewise. + (vsx_nor3): Likewise. + (vsx_andc3): Likewise. + (vsx_concat_): Likewise. + (vsx_xxpermdi_): Fix thinko for non V2DF/V2DI modes. + + * config/rs6000/rs6000.h (MASK_VSX_TIMODE): Map from + OPTION_MASK_VSX_TIMODE. + (enum rs6000_reg_class_enum): Add RS6000_CONSTRAINT_wt. + (STACK_SAVEAREA_MODE): Use PTImode instead of TImode. + + * config/rs6000/rs6000.md (INT mode attribute): Add PTImode. + (TI2 iterator): New iterator for TImode, PTImode. + (wd mode attribute): Add values for vector types. + (movti_string): Replace TI move operations with operations for TImode + and PTImode. Add support for TImode being allowed in VSX registers. + (mov_string, TImode/PTImode): Likewise. + (movti_ppc64): Likewise. + (mov_ppc64, TImode/PTImode): Likewise. + (TI mode splitters): Likewise. + + * doc/md.texi (PowerPC and IBM RS6000 constraints): Document wt + constraint. + +2013-03-20 Marc Glisse + + PR tree-optimization/56355 + * fold-const.c (tree_binary_nonnegative_warnv_p) : + Also handle integers with undefined overflow. + +2013-03-20 Catherine Moore + Maciej W. Rozycki + Tom de Vries + Nathan Sidwell + Iain Sandoe + Nathan Froyd + Chao-ying Fu + + * doc/extend.texi: (micromips, nomicromips, nocompression): + Document new function attributes. + * doc/invoke.texi (minterlink-compressed, mmicromips, + m14k, m14ke, m14kec): Document new options. + (minterlink-mips16): Update documentation. + * doc/md.texi (ZC, ZD): Document new constraints. + * configure.ac (gcc_cv_as_micromips): Check if linker + supports the .set micromips directive. + * configure: Regenerate. + * config.in: Regenerate. + * config/mips/mips-tables.opt: Regenerate. + * config/mips/micromips.md: New file. + * constraints.md (ZC, ZD): New constraints. + * config/mips/predicates.md (movep_src_register): New predicate. + (movep_src_operand): New predicate. + (non_volatile_mem_operand): New predicate. + * config/mips/mips.md (multimem): New type. + (length): Differentiate between 17-bit and 18-bit branch offsets. + (MOVEP1, MOVEP2): New mode iterator. + (mov_l): Use ZC constraint. + (mov_r): Likewise. + (mov_l): Likewise. + (mov_r): Likewise. + (*branch_equality_inverted): Add microMIPS support. + (*branch_equality): Likewise. + (*jump_absolute): Likewise. + (indirect_jump_): Likewise. + (tablejump_): Likewise. + (_internal): Likewise. + (sibcall_internal): Likewise. + (sibcall_value_internal): Likewise. + (prefetch): Use constraint ZD. + * config/mips/mips.opt (minterlink-compressed): New option. + (minterlink-mips16): Now an alias for minterlink-compressed. + (mmicromips): New option. + * config/mips/sync.md (sync_compare_and_swap): Use ZR constraint. + (compare_and_swap_12): Likewise. + (sync_add): Likewise. + (sync__12): Likewise. + (sync_old__12): Likewise. + (sync_new__12): Likewise. + (sync_nand_12): Likewise. + (sync_old_nand_12): Likewise. + (sync_new_nand_12): Likewise. + (sync_sub): Likewise. + (sync_old_add): Likewise. + (sync_old_sub): Likewise. + (sync_new_add): Likewise. + (sync_new_sub): Likewise. + (sync_): Likewise. + (sync_old_): Likewise. + (sync_new_): Likewise. + (sync_nand): Likewise. + (sync_old_nand): Likewise. + (sync_new_nand): Likewise. + (sync_lock_test_and_set): Likewise. + (test_and_set_12): Likewise. + (atomic_compare_and_swap): Likewise. + (atomic_exchange_llsc): Likewise. + (atomic_fetch_add_llsc): Likewise. + * config/mips/mips-cpus.def (m14kc, m14k): New processors. + * config/mips/mips-protos.h (umips_output_save_restore): New prototype. + (umips_save_restore_pattern_p): Likewise. + (umips_load_store_pair_p): Likewise. + (umips_output_load_store_pair): Likewise. + (umips_movep_target_p): Likewise. + (umips_12bit_offset_address_p): Likewise. + * config/mips/mips.c (MIPS_MAX_FIRST_STEP): Update for microMIPS. + (mips_base_mips16): Rename this... + (mips_base_compression_flags): ...to this. Update all uses. + (mips_attribute_table): Add micromips, nomicromips and nocompression. + (mips_mips16_decl_p): Delete. + (mips_nomips16_decl_p): Delete. + (mips_get_compress_on_flags): New function. + (mips_get_compress_off_flags): New function. + (mips_get_compress_mode): New function. + (mips_get_compress_on_name): New function. + (mips_get_compress_off_name): New function. + (mips_insert_attributes): Support multiple compression types. + (mips_merge_decl_attributes): Likewise. + (umips_12bit_offset_address_p): New function. + (mips_start_function_definition): Emit .set micromips directive. + (mips_call_may_need_jalx_p): New function. + (mips_function_ok_for_sibcall): Add microMIPS support. + (mips_print_operand_punctuation): Support short delay slots and + compact jumps. + (umips_swm_mask, umips_swm_encoding): New. + (umips_build_save_restore): New function. + (mips_for_each_saved_gpr_and_fpr): Add microMIPS support. + (was_mips16_p): Remove. + (old_compression_mode): New. + (mips_set_compression_mode): New function. + (mips_set_current_function): Add microMIPS support. + (mips_option_override): Likewise. + (umips_save_restore_pattern_p): New function. + (umips_output_save_restore): New function. + (umips_load_store_pair_p_1): New function. + (umips_load_store_pair_p): New function. + (umips_output_load_store_pair_1): New function. + (umips_output_load_store_pair): New function. + (umips_movep_target_p) New function. + (mips_prepare_pch_save): Add microMIPS support. + * config/mips/mips.h (TARGET_COMPRESSION): New. + (TARGET_CPU_CPP_BUILTINS): Update macro + to use new compression flags and to support microMIPS. + (MIPS_ISA_LEVEL_SPEC): Add m14k processors. + (MIPS_ARCH_FLOAT_SPEC): Likewise. + (ISA_HAS_LWXS): Include TARGET_MICROMIPS. + (ISA_HAS_LOAD_DELAY): Exclude TARGET_MICROMIPS. + (ASM_SPEC): Support mmicromips and mno-micromips. + (M16STORE_REG_P): New macro. + (MIPS_CALL): Support TARGET_MICROMIPS. + (MICROMIPS_J): New macro. + (mips_base_mips16): Rename this... + (mips_base_compression_flags): ...to this. + (UMIPS_12BIT_OFFSET_P): New macro. + * config/mips/t-sde: (MULTILIB_OPTIONS): Add microMIPS. + (MULTILIB_DIRNAMES): Likewise. +2013-03-20 Richard Biener + + PR tree-optimization/56661 + * tree-ssa-sccvn.c (visit_use): Only value-number calls if + the result does not have to be distinct. + +2013-03-20 Richard Biener + + * tree-inline.c (copy_tree_body_r): Sync MEM_REF code with + remap_gimple_op_r. + +2013-03-20 Bill Schmidt + Steven Bosscher + + PR rtl-optimization/56605 + * loop-iv.c (implies_p): Handle equal RTXs and subregs. + +2013-03-20 Uros Bizjak + + PR bootstrap/56656 + * config/i386/i386.md (*movdi_internal): Handle broken assemblers + that require movd instead of movq. + +2013-03-20 Richard Biener + + * tree-ssa-structalias.c (struct variable_info): Add pointer + to the first field of an aggregate with sub-vars. Make + this and the pointer to the next subfield its ID. + (vi_next): New function. + (nothing_id, anything_id, readonly_id, escaped_id, nonlocal_id, + storedanything_id, integer_id): Increment by one. + (new_var_info, get_call_vi, lookup_call_clobber_vi, + get_call_clobber_vi): Adjust. + (solution_set_expand): Simplify and speedup. + (solution_set_add): Inline into ... + (set_union_with_increment): ... this. Adjust accordingly. + (do_sd_constraint): Likewise. + (do_ds_constraint): Likewise. + (do_complex_constraint): Simplify. + (build_pred_graph): Adjust. + (solve_graph): Likewise. Simplify and speedup. + (get_constraint_for_ssa_var, get_constraint_for_ptr_offset, + get_constraint_for_component_ref, get_constraint_for_1, + first_vi_for_offset, first_or_preceding_vi_for_offset, + create_function_info_for, create_variable_info_for_1, + create_variable_info_for, intra_create_variable_infos): Adjust. + (init_base_vars): Push NULL for ID zero. + (compute_points_to_sets): Adjust. + +2013-03-20 Richard Biener + + * cfgloop.c (verify_loop_structure): Streamline and avoid + ICEing on corrupt loop tree. + * graph.c (draw_cfg_nodes_for_loop): Avoid ICEing on corrupt + loop tree. + +2013-03-20 Richard Biener + + * tree-vect-loop-manip.c (slpeel_can_duplicate_loop_p): Do not + check whether an SSA update is needed. + +2013-03-20 Richard Sandiford + + * config/mips/constraints.md (T): Rename to... + (Yf): ...this. + (U): Rename to... + (Yd): ...this. + * config/mips/mips.md (*movdi_64bit, *movdi_64bit_mips16) + (*mov_internal, *mov_mips16): Update accordingly. + +2013-03-19 Ian Bolton + + * config/aarch64/aarch64.md (*sub3_carryin): New pattern. + (*subsi3_carryin_uxtw): Likewise. + +2013-03-19 Ian Bolton + + * config/aarch64/aarch64.md (*ror3_insn): New pattern. + (*rorsi3_insn_uxtw): Likewise. + +2013-03-19 Ian Bolton + + * config/aarch64/aarch64.md (*extr5_insn): New pattern. + (*extrsi5_insn_uxtw): Likewise. + +2013-03-19 Richard Biener + + PR tree-optimization/56273 + * passes.c (init_optimization_passes): Move second VRP after DOM. + +2013-03-19 Uros Bizjak + + * config/i386/i386.md (*movti_internal): Merge from + *movti_internal_rex64 and *movti_internal_sse. Use x64 isa attribute. + (*movdi_internal): Merge with *movdi_internal_rex64. Use x64 and + nox64 isa attributes. + +2013-03-18 Richard Biener + + * tree-ssa-structalias.c (find): Use gcc_checking_assert. + (unite): Likewise. + (merge_node_constraints): Likewise. + (build_succ_graph): Likewise. + (valid_graph_edge): Inline into single caller. + (unify_nodes): Likewise. Use bitmap_set_bit return value + and cache varinfo. + (scc_visit): Fix formatting and variable use. + (do_sd_constraint): Use gcc_checking_assert. + (do_ds_constraint): Likewise. + (do_complex_constraint): Likewise. + (condense_visit): Likewise. Cleanup. + (dump_pred_graph): New function. + (perform_var_substitution): Dump the pred-graph before + variable substitution. + (find_equivalent_node): Use gcc_checking_assert. + (rewrite_constraints): Guard checking loop with ENABLE_CHECKING. + +2013-03-18 Richard Biener + + * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): + Remove cond_expr_stmt_list argument and do not gimplify the + built expression. + (vect_loop_versioning): Adjust. + * tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref): + Cleanup to use less temporaries. + (vect_create_data_ref_ptr): Cleanup. + +2013-03-18 Jakub Jelinek + + PR tree-optimization/56635 + * fold-const.c (operand_equal_p): For MEM_REF and TARGET_MEM_REF, + require types_compatible_p types. + +2013-03-18 Nick Clifton + + * config/stormy16/stormy16.c (xstormy16_expand_prologue): Remove + spurious backslash. + + * config/mn10300/mn10300.c (mn10300_get_live_callee_saved_regs): + Add missing line to comment describing function. + +2013-03-18 Richard Biener + + PR tree-optimization/56210 + * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): + Handle string / character search functions. + * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise. + +2013-03-18 Richard Biener + + PR middle-end/56483 + * cfgexpand.c (expand_gimple_cond): Inline gimple_cond_single_var_p + and implement properly. + * gimple.h (gimple_cond_single_var_p): Remove. + +2013-03-18 Richard Biener + + * tree-data-ref.h (find_data_references_in_loop): Declare. + * tree-data-ref.c (get_references_in_stmt): Use a stack + vector pre-allocated in the callers. + (find_data_references_in_stmt): Adjust. + (graphite_find_data_references_in_stmt): Likewise. + (create_rdg_vertices): Likewise. + (find_data_references_in_loop): Export. + * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): + Compute dependences here... + (vect_analyze_data_refs): ...not here. When we encounter + a non-vectorizable data reference in basic-block vectorization + truncate the data reference vector. Do not bother to + fixup data-dependence information for gather loads. + * tree-vect-slp.c (vect_slp_analyze_bb_1): Check the number + of data references, as reported. + +2013-03-18 Richard Biener + + PR tree-optimization/3713 + * tree-ssa-sccvn.c (visit_copy): Simplify. Always propagate + has_constants and expr. + (stmt_has_constants): Properly valueize SSA names when deciding + whether the stmt has constants. + +2013-03-18 Richard Biener + + * tree-ssa-loop-manip.c (find_uses_to_rename): Do not scan the + whole function when there is nothing to do. + * tree-ssa-loop.c (pass_vectorize): Remove TODO_update_ssa. + * tree-vectorizer.c (vectorize_loops): Update virtual and + loop-closed SSA once. + * tree-vect-loop.c (vect_transform_loop): Do not update SSA here. + +2013-03-18 Richard Biener + + PR middle-end/56113 + * domwalk.c (bb_postorder): New global static. + (cmp_bb_postorder): New function. + (walk_dominator_tree): Replace scheme imposing an order for + visiting dominator sons by one sorting them at the time they + are pushed on the stack. + +2013-03-18 Richard Biener + + PR tree-optimization/39326 + * tree-ssa-loop-im.c (refs_independent_p): Exploit symmetry. + (struct mem_ref): Replace mem member with ao_ref typed member. + (MEM_ANALYZABLE): Adjust. + (memref_eq): Likewise. + (mem_ref_alloc): Likewise. + (gather_mem_refs_stmt): Likewise. + (mem_refs_may_alias_p): Use the ao_ref to query the alias oracle. + (execute_sm_if_changed_flag_set): Adjust. + (execute_sm): Likewise. + (ref_always_accessed_p): Likewise. + (refs_independent_p): Likewise. + (can_sm_ref_p): Likewise. + +2013-03-18 Jakub Jelinek + + PR c/56566 + * tree.c (tree_int_cst_min_precision): For integer_zerop (value) + return 1 even for !unsignedp. + +2013-03-17 Uros Bizjak + + * config/i386/i386.md (isa): Add x64 and nox64. + (enabled): Define x64 for TARGET_64BIT and nox64 for !TARGET_64BIT. + (*pushtf): Enable *roF alternative for x64 isa only. + (*pushxf): Merge with *pushxf_nointeger. Use Yx*r constraint. Set + mode attribute of integer alternatives to DImode for TARGET_64BIT. + (*pushdf): Merge with *pushdf_rex64. Use x64 and nox64 isa attributes. + (*movtf_internal): Merge from *movtf_internal_rex64 and + *movtf_internal_sse. Use x64 and nox64 isa attributes. + (*movxf_internal): Merge with *movxf_internal_rex64. Use x64 and + nox64 isa attributes. + (*movdf_internal): Merge with *movdf_internal_rex64. Use x64 and + nox64 isa attributes. + * config/i386/constraints.md (Yd): Do not set for TARGET_64BIT. + +2013-03-17 Uros Bizjak + + * config/alpha/alpha.c (TARGET_LRA_P): New define. + +2013-03-17 Jakub Jelinek + + PR target/56640 + * config/arm/arm.h (REG_CLASS_NAMES): Add "SFP_REG" and "AFP_REG" + class names. Remove trailing comma after "ALL_REGS". + +2013-03-16 Jan Hubicka + + * cgraph.h (cgraph_get_create_real_symbol_node): Declare. + * cgraph.c (cgraph_get_create_real_symbol_node): New function. + * cgrpahbuild.c: Use cgraph_get_create_real_symbol_node instead + of cgraph_get_create_node. + * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise. + +2013-03-16 Jason Merrill + + PR debug/49090 + * dwarf2out.c (gen_generic_params_dies): Indicate default arguments + with DW_AT_default_value. + +2013-03-16 Jakub Jelinek + + * BASE-VER: Set to 4.9.0. + +2013-03-14 Andi Kleen + + PR target/56619 + * doc/extend.texi: Document __ATOMIC_HLE_ACQUIRE, + __ATOMIC_HLE_RELEASE. Document __builtin_ia32 TSX intrincs. + Document _x* TSX intrinsics. + +2013-03-14 Edgar E. Iglesias + David Holsgrove + + * configure.ac: Add MicroBlaze TLS support detection. + * configure: Regenerate. + * config/microblaze/microblaze-protos.h + (microblaze_cannot_force_const_mem, microblaze_tls_referenced_p, + symbol_mentioned_p, label_mentioned_p): Add prototypes. + * config/microblaze/microblaze.c (microblaze_address_type): Add + ADDRESS_TLS and tls_reloc address types. + (microblaze_address_info): Add tls_reloc. + (TARGET_HAVE_TLS): Define. + (get_tls_get_addr, microblaze_tls_symbol_p, microblaze_tls_operand_p_1, + microblaze_tls_referenced_p, microblaze_cannot_force_const_mem, + symbol_mentioned_p, label_mentioned_p, tls_mentioned_p, + load_tls_operand, microblaze_call_tls_get_addr, + microblaze_legitimize_tls_address): New functions. + (microblaze_classify_unspec): Handle UNSPEC_TLS. + (get_base_reg): Use microblaze_tls_symbol_p. + (microblaze_classify_address): Handle TLS. + (microblaze_legitimate_pic_operand): Use symbol_mentioned_p, + label_mentioned_p and microblaze_tls_referenced_p. + (microblaze_legitimize_address): Handle TLS. + (microblaze_address_insns): Handle ADDRESS_TLS. + (pic_address_needs_scratch): Handle TLS. + (print_operand_address): Handle TLS. + (microblaze_expand_prologue): Check TLS_NEEDS_GOT. + (microblaze_expand_move): Handle TLS. + (microblaze_legitimate_constant_p): Check + microblaze_cannot_force_const_mem and microblaze_tls_symbol_p. + (TARGET_CANNOT_FORCE_CONST_MEM): Define. + * config/microblaze/microblaze.h (TLS_NEEDS_GOT): Define + (PIC_OFFSET_TABLE_REGNUM): Set. + * config/microblaze/linux.h (TLS_NEEDS_GOT): Define. + * config/microblaze/microblaze.md (UNSPEC_TLS): Define. + (addsi3, movsi_internal2, movdf_internal): Update constraints + * config/microblaze/predicates.md (arith_plus_operand): Define + (move_operand): Redefine as move_src_operand, + check microblaze_tls_referenced_p. + +2013-03-14 Ian Bolton + + * config/aarch64/aarch64.md: (*and3nr_compare0): Use CC_NZ. + (*and_3nr_compare0): Likewise. + +2013-03-14 Ian Bolton + + * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return correct + CC mode for AND. + +2013-03-14 Jakub Jelinek + + PR tree-optimization/53265 + * common.opt (Waggressive-loop-optimizations): New option. + * tree-ssa-loop-niter.c: Include tree-pass.h. + (do_warn_aggressive_loop_optimizations): New function. + (record_estimate): Call it. Don't add !is_exit bounds to loop->bounds + if number_of_latch_executions returned constant. + (estimate_numbers_of_iterations_loop): Call number_of_latch_executions + early. If number_of_latch_executions returned constant, set + nb_iterations_upper_bound back to it. + * cfgloop.h (struct loop): Add warned_aggressive_loop_optimizations + field. + * Makefile.in (tree-ssa-loop-niter.o): Depend on $(TREE_PASS_H). + * doc/invoke.texi (-Wno-aggressive-loop-optimizations): Document. + + * config/aarch64/t-aarch64-linux (MULTARCH_DIRNAME): Remove. + (MULTILIB_OSDIRNAMES): Set. + * genmultilib: If defaultosdirname doesn't start with :: , set + defaultosdirname2 instead, clear it and emit two . multilib_raw + entries instead of just one. + +2013-03-14 Kaz Kojima + + * config/sh/linux.h (TARGET_DEFAULT): Remove MASK_USERMODE. + (SUBTARGET_OVERRIDE_OPTIONS): Set TARGET_USERMODE as default. + * config/sh/netbsd-elf.h (TARGET_DEFAULT): Remove MASK_USERMODE. + (SUBTARGET_OVERRIDE_OPTIONS): New. + +2013-03-13 Oleg Endo + + PR target/49880 + * config/sh/sh.opt (FPU_SINGLE_ONLY): New mask. + (musermode): Convert to Var(TARGET_USERMODE). + * config/sh/sh.h (SELECT_SH2A_SINGLE_ONLY, SELECT_SH4_SINGLE_ONLY, + MASK_ARCH): Add MASK_FPU_SINGLE_ONLY. + * config/sh/sh.c (sh_option_override): Use + TARGET_FPU_DOUBLE || TARGET_FPU_SINGLE_ONLY for call-fp case. + * config/sh/sh.md (udivsi3_i1, divsi3_i1): Remove ! TARGET_SH4 + condition. + (udivsi3_i4, divsi3_i4): Use TARGET_FPU_DOUBLE condition instead of + TARGET_SH4. + (udivsi3_i4_single, divsi3_i4_single): Use + TARGET_FPU_SINGLE_ONLY || TARGET_FPU_DOUBLE instead of TARGET_HARD_SH4. + +2013-03-13 Dave Korn + + * config/i386/cygwin.h (SHARED_LIBGCC_SPEC): Make shared libgcc the + default setting. + +2013-03-13 Richard Biener + + PR tree-optimization/56608 + * tree-vect-slp.c (vect_schedule_slp): Do not remove scalar + calls when vectorizing basic-blocks. + +2013-03-13 Jakub Jelinek + + PR plugins/45078 + * config.gcc: On arm, mips, sh and sparc add vxworks-dummy.h to + tm_file. + +2013-03-12 Jakub Jelinek + + * doc/invoke.texi (-Waddr-space-convert): Move into the table earlier. + +2013-03-11 Jan Hubicka + + PR lto/56557 + * lto-streamer-out.c (output_symbol_p): Skip references from + constructors of external variables. + +2013-03-11 Jan Hubicka + + PR middle-end/56571 + * valtrack.c (cleanup_auto_inc_dec): Unshare clobbers originating + from pseudos. + * emit-rtl.c (verify_rtx_sharing): Likewise. + (copy_insn_1): Likewise. + * rtl.c (copy_rtx): Likewise. + +2013-03-11 Georg-Johann Lay + + PR target/56591 + * config/avr/avr.c (avr_print_operand): Add space after '%c' in + output_operand_lossage message. + +2013-03-11 Richard Earnshaw + + PR target/56470 + * arm.c (shift_op): Validate RTL pattern on the fly. + (arm_print_operand, case 'S'): Don't use shift_operator to validate + the RTL. + +2013-03-10 John David Anglin + + PR target/56347 + * config/pa/pa.md (call_value): Check for calls to powf and direct to + new call patterns that clobber %fr12. + (call_val_powf, call_val_powf_pic, call_val_powf_64bit): New insn, + split and postreload patterns. + * config/pa/pa.c (pa_conditional_register_usage): Revert marking + registers %fr12 and %fr12R as call used. + +2013-03-09 Steven Bosscher + + * dse.c (delete_dead_store_insn): Respect TDF_DETAILS. + (canon_address, record_store, replace_read, check_mem_read_rtx, + scan_insn, dse_step1, dse_step2_init, dse_step2_spill, + dse_step4, dse_step5_nospill, dse_step5_spill, dse_step6, + rest_of_handle_dse): Likewise. + +2013-03-09 Richard Sandiford + + PR middle-end/56524 + * tree.h (tree_optimization_option): Rename target_optabs to optabs. + Add base_optabs. + (TREE_OPTIMIZATION_OPTABS): Update after previous field change. + (TREE_OPTIMIZATION_BASE_OPTABS): New macro. + (save_optabs_if_changed): Replace with... + (init_tree_optimization_optabs): ...this. + * optabs.c (save_optabs_if_changed): Rename to... + (init_tree_optimization_optabs): ...this. Take the optimization node + as argument. Do nothing if the base optabs are already correct. + Reuse the existing TREE_OPTIMIZATION_OPTABS memory if we need + to recompute optabs. + * function.h (function): Remove optabs field. + * function.c (invoke_set_current_function_hook): Call + init_tree_optimization_optabs. Use the result to initialize + this_fn_optabs. + +2013-02-27 Aldy Hernandez + + * trans-mem.c (expand_transaction): Do not set PR_INSTRUMENTEDCODE + if GTMA_HAS_NO_INSTRUMENTATION. + (generate_tm_state): Keep GTMA_HAS_NO_INSTRUMENTATION bit. + (ipa_tm_transform_transaction): Set GTMA_HAS_NO_INSTRUMENTATION. + * gimple.h (GTMA_HAS_NO_INSTRUMENTATION): Define. + * gimple-pretty-print.c (dump_gimple_transaction): Handle + GTMA_HAS_NO_INSTRUMENTATION. + +2013-03-08 Jakub Jelinek + + * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Don't link against + libasan_preinit.o. + +2013-03-08 Marek Polacek + Jakub Jelinek + + PR tree-optimization/56478 + * predict.c (is_comparison_with_loop_invariant_p): Change the + type of loop_step to tree. + (predict_loops): Adjust. + (predict_iv_comparison): Perform the computations on double_ints. + +2013-03-08 Richard Biener + + PR tree-optimization/56570 + * tree-cfg.c (verify_expr_location_1): Verify locations for + DECL_DEBUG_EXPR. + * tree-sra.c (create_access_replacement): Strip locations + from DECL_DEBUG_EXPRs. + +2013-03-08 Richard Biener + + * tree-inline.c (expand_call_inline): Do not associate + a BLOCK with the location in BLOCK_SOURCE_LOCATION. + * tree-cfg.c (verify_location): Verify BLOCK_SOURCE_LOCATION. + +2013-03-08 Richard Biener + + * tree-ssa-ter.c (is_replaceable_p): Do not TER across location + or block changes with -Og. Fix for location / block encoding + changes and PHI arguments with locations. + +2013-03-07 Steven Bosscher + + * bitmap.c (struct bitmap_descriptor_d): Use unsigned HOST_WIDEST_INT + for all counters. + (struct output_info): Likewise. + (register_overhead): Remove bad gcc_assert. + (bitmap_find_bit): If there is only a single bitmap element, do not + count a miss as a search. + (print_statistics): Update for counter type changes. + (dump_bitmap_statistics): Likewise. Print headers such that they + are properly lined up with the printed counters. + +2013-03-07 Jakub Jelinek + + PR tree-optimization/56559 + * tree-ssa-reassoc.c (zero_one_operation): When looking at rhs2, + check that it has only a single use. + +2013-03-07 Richard Biener + + * doc/invoke.texi (fwhole-program): Discourage use in combination + with -flto. + +2013-03-06 Jakub Jelinek + + * config/arm/t-arm (TM_H, OPTIONS_H_EXTRA): Add arm-cores.def. + + PR tree-optimization/56539 + * tree-tailcall.c (adjust_return_value_with_ops): Use GSI_SAME_STMT + instead of GSI_CONTINUE_LINKING as last argument to + force_gimple_operand_gsi. Adjust function comment. + + * config/aarch64/t-aarch64 (TM_H, OPTIONS_H_EXTRA): Add + aarch64-cores.def. + + PR middle-end/56548 + * expr.c (expand_cond_expr_using_cmove): When expanding cmove in + promoted mode, convert the result back to the original mode. + +2013-03-06 Richard Biener + + PR middle-end/56294 + * tree-into-ssa.c (insert_phi_nodes_for): Add dumping. + (insert_updated_phi_nodes_compare_uids): New function. + (update_ssa): Sort symbols_to_rename after UID before + traversing it to insert PHI nodes. + +2013-03-06 Richard Biener + + PR middle-end/50494 + * tree-vect-data-refs.c (vect_can_force_dr_alignment_p): + Do not adjust alignment of DECL_IN_CONSTANT_POOL decls. + + Revert + 2013-02-13 Richard Biener + + PR lto/50494 + * varasm.c (output_constant_def_1): Get the decl representing + the constant as argument. + (output_constant_def): Wrap output_constant_def_1. + (make_decl_rtl): Use output_constant_def_1 with the decl + representing the constant. + (build_constant_desc): Optionally re-use a decl already + representing the constant. + (tree_output_constant_def): Adjust. + +2013-03-06 Joey Ye + + PR lto/50293 + * gcc.c (convert_white_space): New function. + (main): Handles white space in function name. + +2013-03-06 Oleg Endo + + PR target/56529 + * config/sh/sh.c (sh_option_override): Check for TARGET_DYNSHIFT + instead of TARGET_SH2 for call-table case. Do not set sh_div_strategy + to SH_DIV_CALL_TABLE for TARGET_SH2. + * config.gcc (sh_multilibs): Add m2 and m2a to sh*-*-linux* multilib + list. + * doc/invoke.texi (SH options): Document mdiv= call-div1, call-fp, + call-table options. + +2013-03-05 Sterling Augustine + Cary Coutant + + PR debug/55364 + * dwarf2out.c (resolve_addr): Don't call + remove_loc_list_addr_table_entries a second time for the same + expression. + +2013-03-05 Jakub Jelinek + + PR debug/56510 + * cfgexpand.c (expand_debug_parm_decl): Call copy_rtx on incoming. + (avoid_complex_debug_insns): New function. + (expand_debug_locations): Call it. + + PR rtl-optimization/56484 + * ifcvt.c (noce_process_if_block): If else_bb is NULL, avoid extending + lifetimes of hard registers on small register class machines. + +2013-03-05 David Holsgrove + + * config/microblaze/microblaze-protos.h: Rename + microblaze_is_interrupt_handler to microblaze_is_interrupt_variant. + * config/microblaze/microblaze.c (microblaze_attribute_table): Add + fast_interrupt. + (microblaze_fast_interrupt_function_p): New function. + (microblaze_is_interrupt_handler): Rename to + microblaze_is_interrupt_variant and add fast_interrupt check. + (microblaze_must_save_register): Use microblaze_is_interrupt_variant. + (save_restore_insns): Likewise. + (compute_frame_size): Likewise. + (microblaze_function_prologue): Add FAST_INTERRUPT_NAME. + (microblaze_globalize_label): Likewise. + * config/microblaze/microblaze.h: Define FAST_INTERRUPT_NAME. + * config/microblaze/microblaze.md: Use wrapper + microblaze_is_interrupt_variant. + +2013-03-05 Kai Tietz + + * sdbout.c (sdbout_one_type): Switch to current function's section + supporting cold/hot. + +2013-03-05 David Holsgrove + + * doc/invoke.texi (MicroBlaze): Add -mbig-endian, -mlittle-endian, + -mxl-reorder. + +2013-03-05 Jakub Jelinek + + PR middle-end/56461 + * ggc-common.c (gt_pch_save): For ENABLE_VALGRIND_CHECKING, + if VALGRIND_GET_VBITS is defined, temporarily make object + memory all defined, and restore previous valgrind addressability + and definability afterwards. Free this_object at the end. + + PR middle-end/56461 + * lra.c (lra): Call lra_clear_live_ranges if live_p, + right before calling lra_create_live_ranges, also call it + when clearing live_p. Only call lra_clear_live_ranges + at the end if live_p. + + PR middle-end/56461 + * sched-deps.c (delete_dep_node): Free DEP_REPLACE. + +2013-03-05 Richard Biener + + PR tree-optimization/56521 + * tree-ssa-sccvn.c (set_value_id_for_result): Always initialize + value-id. + +2013-03-05 Steven Bosscher + + PR c++/55135 + * except.h (remove_unreachable_eh_regions): New prototype. + * except.c (remove_eh_handler_splicer): New function, split out + of remove_eh_handler. + (remove_eh_handler): Use remove_eh_handler_splicer. Add comment + warning about running it on many EH regions one at a time. + (remove_unreachable_eh_regions_worker): New function, walk the + EH tree in depth-first order and remove non-marked regions. + (remove_unreachable_eh_regions): New function. + * tree-eh.c (mark_reachable_handlers): New function, split out + from remove_unreachable_handlers. + (remove_unreachable_handlers): Use mark_reachable_handlers and + remove_unreachable_eh_regions. + (remove_unreachable_handlers_no_lp): Use mark_reachable_handlers + and remove_unreachable_eh_regions. + +2013-03-05 Richard Biener + + PR middle-end/56525 + * loop-init.c (fix_loop_structure): Remove loops in two stages, + not freeing them until the end. + +2013-03-05 Andreas Krebbel + + * config/s390/s390.h: Define DWARF2_ASM_LINE_DEBUG_INFO. + +2013-03-05 Richard Biener + + PR tree-optimization/56270 + * tree-vect-slp.c (vect_schedule_slp): Clear vectorized stmts + of loads after scheduling an SLP instance. + +2013-03-05 Jakub Jelinek + + * Makefile.in (dg_target_exps): Add aarch64.exp, epiphany.exp and + tic6x.exp. + (check_gcc_parallelize): Run guality.exp as a separate job from + vect.exp with unsorted.exp and $(dg_target_exps) separately from + struct-layout-1.exp with stackalign.exp. + + * alias.c (init_alias_analysis): Clear reg_known_equiv_p bitmap. + + PR middle-end/56461 + * tree-vect-slp.c (vect_supported_load_permutation_p): Free + load_index sbitmap even if some bit in it isn't set. + + PR middle-end/56461 + * tree-ssa-loop-niter.c (bb_queue): Remove typedef. + (discover_iteration_bound_by_body_walk): Change queues to + vec > and queue to vec. Fix up + spelling in comment. Call safe_push on queues[bound_index] directly. + Release queues[queue_index] in every iteration unconditionally. + Release bounds vector. + + PR middle-end/56461 + * tree-vect-stmts.c (free_stmt_vec_info_vec): Call + free_stmt_vec_info on any left-over stmt_vec_info in the vector. + * tree-vect-loop.c (vect_create_epilog_for_reduction): Release + inner_phis vector. + +2013-03-05 Richard Biener + + PR lto/56515 + * tree-inline.c (remap_blocks_to_null): New function. + (expand_call_inline): When expanding a call stmt without + an associated block inline remap all callee blocks to NULL. + +2013-03-05 Jakub Jelinek + + PR rtl-optimization/56494 + * simplify-rtx.c (simplify_truncation): If C is narrower than A, + optimize (truncate:A (subreg:B (truncate:C X) 0)) into + (subreg:A (truncate:C X) 0) instead of (truncate:A X). + + PR middle-end/56461 + * sel-sched-ir.c (free_sched_pools): Release + succs_info_pool.stack[succs_info_pool.max_top] vectors too + if succs_info_pool.max_top isn't -1. + + PR bootstrap/56509 + * opts.c (opts_obstack, opts_concat): Moved to... + * opts-common.c (opts_obstack, opts_concat): ... here. + +2013-03-04 Jakub Jelinek + + PR middle-end/56461 + * diagnostic.c (diagnostic_append_note): Save and restore old prefix. + +2013-03-04 Martin Jambor + + * tree-dfa.c (get_or_create_ssa_default_def): Use parameter fn in + all appropriate places. + +2013-01-04 Eric Botcazou + + PR tree-optimization/56424 + * ipa-split.c (split_function): Do not set the RSO flag if result is + not by reference and its type is a register type. + +2013-03-04 David Holsgrove + + * config/microblaze/microblaze.c (microblaze_valid_pic_const): New + (microblaze_legitimate_pic_operand): Likewise + * config/microblaze/microblaze.h (LEGITIMATE_PIC_OPERAND_P): calls + new function microblaze_legitimate_pic_operand + * config/microblaze/microblaze-protos.h + (microblaze_legitimate_pic_operand): Declare. + +2013-03-04 Edgar E. Iglesias + + * config/microblaze/predicates.md (call_insn_simple_operand): + New predicate for supported rtx code types. + * config/microblaze/microblaze.md (call_internal1): Use + call_insn_simple_operand predicate. + +2013-03-04 Jakub Jelinek + + PR middle-end/56461 + * tree-loop-distribution.c (ldist_gen): Call partition_free after each + partitions.ordered_remove. + + PR middle-end/56461 + * tree-vect-stmts.c (vectorizable_conversion): Don't call + vec_oprnds0.create (1) for modifier == NONE. + + PR middle-end/56461 + * tree-vect-stmts.c (vectorizable_shift): Don't call create methods + on vec_oprnds0 or vec_oprnds1 before loop, only call it on + vec_oprnds1 right before pushing anything to it for + scalar_shift_arg. + + PR middle-end/56461 + * tree-vect-loop.c (destroy_loop_vec_info): For !clean_stmts, just + set nbbs to 0 instead of having separate code path. + (vect_analyze_loop_form): Call destroy_loop_vec_info with true + instead of false as last argument if returning NULL. + +2013-03-03 Sandra Loosemore + + * target.def (TARGET_OPTION_VALID_ATTRIBUTE_P): Update comments; + the attribute is now called "target" instead of "option". + (TARGET_OPTION_PRAGMA_PARSE): Likewise, for the pragma. + * doc/tm.texi.in (Target Attributes): Likewise document the correct + attribute/pragma name for TARGET_OPTION_VALID_P and + TARGET_OPTION_PRAGMA_PARSE. Also copy-edit and correct markup. + * doc/tm.texi: Regenerated. + +2013-03-02 David Holsgrove + + * config/microblaze/microblaze.c: + Check mcpu, pcmp requirement and set TARGET_REORDER to 0 if not met. + * config/microblaze/microblaze.h: Add -mxl-reorder to + DRIVER_SELF_SPECS. + * config/microblaze/microblaze.md: New bswapsi2 and bswaphi2. + instructions emitted if TARGET_REORDER. + * config/microblaze/microblaze.opt: New option -mxl-reorder set to 1 + or 0 for -m/-mno case, but initialises as 2 to detect default use case + separately. + +2013-03-01 Xinliang David Li + + * tree-ssa-uninit.c (compute_control_dep_chain): Limit post-dom + walk length. + +2013-03-01 Jakub Jelinek + + PR middle-end/56461 + * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Release path + vector even when returning true. Fix up function comment formatting. + + PR middle-end/56461 + * ira-build.c (ira_loop_nodes_count): New variable. + (create_loop_tree_nodes): Initialize it. + (finish_loop_tree_nodes): Use it instead of looking at current_loops. + + PR middle-end/56461 + * tree-vect-data-refs.c (vect_permute_store_chain): Avoid using copy + method on dr_chain and result_chain. + * tree-vect-stmts.c (vectorizable_store): Only call + result_chain.create if j == 0. + + PR middle-end/56461 + * tree-vect-stmts.c (vect_create_vectorized_promotion_stmts): Call + vec_oprnds0->release (); rather than vec_oprnds0->truncate (0) + before overwriting it. + +2013-03-01 Tobias Burnus + + * doc/extended.texi (C Extensions): Change order in @menu + to match @node. + (Other MIPS Built-in Functions): Move last MIPS entry before + "picoChip Built-in Functions". + (SH Built-in Functions): Move after RX Built-in Functions. + * doc/gcc.texi (Introduction): Change order in @menu + to match @node. + * doc/md.texi (Constraints): Ditto. + * gty.texi (Type Information): Ditto. + (User-provided marking routines for template types): Make + subsection. + * doc/invoke.texi (AArch64 Options): Move before + "Adapteva Epiphany Options". + +2013-02-28 Konstantin Serebryany + Jakub Jelinek + + PR sanitizer/56454 + * asan.c (gate_asan): Lookup no_sanitize_address instead of + no_address_safety_analysis attribute. + * doc/extend.texi (no_address_safety_attribute): Rename to + no_sanitize_address attribute, mention no_address_safety_analysis + attribute as deprecated alias. + +2013-02-28 Jakub Jelinek + + PR middle-end/56461 + * tree-vectorizer.h (vect_get_slp_defs): Change 3rd argument + type to vec > *. + * tree-vect-slp.c (vect_get_slp_defs): Likewise. Change vec_defs + to be vec instead of vec *, set vec_defs + to vNULL and call vec_defs.create (number_of_vects), adjust other + uses of vec_defs. + * tree-vect-stmts.c (vect_get_vec_defs, vectorizable_call, + vectorizable_condition): Adjust vect_get_slp_defs callers. + +2013-02-28 James Greenhalgh + + * config/aarch64/aarch64.c + (aarch64_float_const_representable): Remove unused variable. + +2013-02-28 James Greenhalgh + + * config/aarch64/aarch64.c (aarch64_mangle_type): Make static. + +2013-02-28 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_init_simd_builtins): Make static. + +2013-02-28 James Greenhalgh + + * config/aarch64/aarch64.c + (aarch64_simd_make_constant): Make static. + +2013-02-28 Martin Jambor + + * tree-sra.c (load_assign_lhs_subreplacements): Do not put replacements + with no initialization to the RHS of debug statements. + +2013-02-28 Martin Jambor + + PR tree-optimization/56294 + * tree-sra.c (analyze_access_subtree): Create replacement declarations. + Adjust dumping. + (get_access_replacement): Do not call create_access_replacement. + Assert a replacement exists. + (get_repl_default_def_ssa_name): Create the replacement declaration + itself. + +2013-02-28 Ramana Radhakrishnan + + * config/arm/arm.c (arm_output_mi_thunk): Call final_start_function and + final_end_function. + +2013-02-28 Marek Polacek + + PR rtl-optimization/56466 + * loop-unroll.c (unroll_and_peel_loops): Call fix_loop_structure + if we're changing a loop. + (peel_loops_completely): Likewise. + +2013-02-28 Paolo Carlini + + PR c++/55813 + * doc/invoke.texi ([-Wctor-dtor-privacy]): Complete. + +2013-02-28 Georg-Johann Lay + + PR target/56445 + * config/avr/avr.c (avr_init_builtins): Use 'n' instead of empty + macro parameters with: FX_FTYPE_FX, FX_FTYPE_FX_INT, INT_FTYPE_FX, + INTX_FTYPE_FX, FX_FTYPE_INTX. + * config/avr/builtins.def: Adjust respective DEF_BUILTIN. + +2013-02-28 Georg-Johann Lay + + * avr/avr-mcus.def (ata5272, ata5505, attiny1634, ata6285) + (ata6286, atmega8a, atmega48pa, ata5790, ata5790n, ata5795) + (atmega164pa, atmega165pa, atmega168pa, atmega16hva, atmega16hvb) + (atmega16hvbrevb, atmega16m1, atmega16u4, atmega26hvg, atmega32a) + (atmega32a, atmega3250pa, atmega3290pa, atmega32c1, atmega32m1) + (atmega32u4, atmega32u6, atmega64a, atmega6490a, atmega6490p) + (atmega64c1, atmega64m1, atmega64rfa2, atmega64rfr2, atmega32hvb) + (atmega32hvbrevb, atmega16hva2, atmega48hvf, at90pwm161) + (atmega128a, atmega1284, atmxt112sl, atmxt224, atmxt224e) + (atmxt336s, atxmega16a4u, atxmega16c4, atxmega32a4u, atxmega32c4) + (atxmega32e5, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3) + (atxmega64c3, atxmega64d4, atxmega128a3u, atxmega128b1) + (atxmega128b3, atxmega128c3, atxmega128d4, atmxt540s, atmxt540sreva) + (atxmega192a3u, atxmega192c3, atxmega256a3u, atxmega256c3) + (atxmega384c3, atxmega384d3, atxmega128a4u): New AVR_MCU. + (avrxmega6): Increase max flash segments from 5 to 6. + * config/avr/t-multilib: Regenerate. + * config/avr/avr-tables.opt: Regenerate. + * doc/avr-mmcu.texi: Regenerate. + +2013-02-28 Georg-Johann Lay + + * config/avr/avr.h (device_to_arch): Rename to device_to_ld. + (avr_device_to_arch): Rename to avr_device_to_ld. + (avr_device_to_as): New prototype. + (EXTRA_SPEC_FUNCTIONS): Add device_to_as. + (ASM_SPEC): Use device_to_as to get -mmcu= and -mno-skip-bug=. + * config/avr/driver-avr.c (avr_device_to_as): New. + (avr_device_to_arch): Rename to avr_device_to_ld. + +2013-02-27 Jakub Jelinek + + PR middle-end/56461 + * tree-vect-data-refs.c (vect_permute_load_chain): Avoid using copy + method on dr_chain and result_chain. + + PR middle-end/56461 + * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Call + pointer_set_destroy on not_executed_last_iteration. + + PR middle-end/56461 + * tree-vect-loop.c (vectorizable_reduction): Release vect_defs vector. + + PR middle-end/56461 + * ipa-pure-const.c (propagate): Use FOR_EACH_FUNCTION instead of + FOR_EACH_DEFINED_FUNCTION when freeing state. + + PR middle-end/56461 + * df-scan.c (df_insn_delete): Use df_scan_free_mws_vec before + pool_free. + (df_insn_rescan_debug_internal): Use df_scan_free_mws_vec before + overwriting it. + + PR middle-end/56461 + * ipa-cp.c (decide_whether_version_node): Call vec_free on + known_aggs[i].items and release known_aggs vector. + + PR middle-end/56461 + * ipa-reference.c (propagate): Free node_info even for alias nodes. + +2013-02-27 Edgar E. Iglesias + + * config/microblaze/microblaze.c (microblaze_emit_compare): + Use xor for EQ/NE comparisions. + * config/microblaze/microblaze.md (cstoresf4): Add constraints + (cbranchsf4): Adjust operator to comparison_operator. + +2013-02-27 Jakub Jelinek + + PR middle-end/56461 + * tree-flow.h (edge_var_map_vector): Change into va_heap, vl_embed + vector. + * tree-ssa.c (redirect_edge_var_map_add): Use vec_safe_reserve and + vec_safe_push, always update *slot. + (redirect_edge_var_map_clear): Use vec_free. + (redirect_edge_var_map_dup): Use vec_safe_copy and vec_safe_reserve. + (free_var_map_entry): Use vec_free. + * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Use + FOR_EACH_VEC_SAFE_ELT instead of FOR_EACH_VEC_ELT. + +2013-02-27 Andrey Belevantsev + + PR middle-end/45472 + * sel-sched-ir.c (merge_expr): Also change vinsn of merged expr + when the may_trap_p bit of the exprs being merged differs. + Reorder tests for speculativeness in the logical and operator. + +2013-02-27 Jakub Jelinek + + * incpath.c (add_standard_paths): Use reconcat instead of concat + where appropriate and avoid leaking memory. + + * opts.h: Include obstack.h. + (opts_concat): New prototype. + (opts_obstack): New declaration. + * opts.c (opts_concat): New function. + (opts_obstack): New variable. + (init_options_struct): Call gcc_init_obstack on opts_obstack. + (finish_options): Use opts_concat instead of concat + and XOBNEWVEC instead of XNEWVEC. + * opts-common.c (generate_canonical_option, decode_cmdline_option, + generate_option): Likewise. + * Makefile.in (OPTS_H): Depend on $(OBSTACK_H). + * lto-wrapper.c (main): Call gcc_init_obstack on opts_obstack. + + PR target/56455 + * stmt.c (expand_switch_as_decision_tree_p): If flag_pic + and ASM_OUTPUT_ADDR_DIFF_ELT isn't defined, return true. + +2013-02-26 Jakub Jelinek + + PR middle-end/56461 + * lra-spills.c (lra_spill): Free spill_hard_reg at the end. + +2013-02-26 Joern Rennecke + + * config/arm/arm.c (const_ok_for_dimode_op): Back out last change. + (arm_block_move_unaligned_straight): Likewise. + (arm_adjust_block_mem): Likewise. + +2013-02-26 Joern Rennecke + + PR target/48901 + * config/lm32/lm32.c (gen_int_relational): Remove unused variables + temp, cond and label. + * config/lm32/lm32.md (ashlsi3): Remove unused variable one. + + PR target/52500 + * config/c6x/c6x.c (dbx_register_map): Change to unsigned. + * config/c6x/c6x.h (dbx_register_map): Update declaration. + + PR target/52501 + * config/cr16/cr16-protos.h: Move end of RTX_CODE guard below end + of prologue/epilogue functions. + + PR target/52550 + * config/tilegx/tilegx.c (tilegx_expand_prologue): + Remove unused variable cfa_offset. + * config/tilepro/tilepro.c (tilepro_expand_prologue): Likewise. + + PR target/54639 + * config/mn10300/mn10300.c (mn10300_expand_epilogue): Avoid offset + type promotion to unsigned. + + PR target/54640 + * config/arm/arm.c (const_ok_for_dimode_op): Make code consistent + for HOST_WIDE_INT of 32 bit / same size as int. + (arm_block_move_unaligned_straight): Likewise. + (arm_adjust_block_mem): Likewise. + + PR target/54662 + * config/mep/t-mep (mep-pragma.o): Use ALL_COMPILERFLAGS instead of + ALL_CFLAGS. + +2013-02-26 Marek Polacek + + PR tree-optimization/56426 + * tree-ssa-loop.c (tree_ssa_loop_init): Always call scev_initialize. + +2013-02-26 Richard Biener + + PR target/56444 + * config/mn10300/mn10300.c (mn10300_scan_for_setlb_lcc): Remove + unused variable loops. + +2013-02-26 Jakub Jelinek + + PR tree-optimization/56448 + * fold-const.c (operand_equal_p) : Don't look at + TREE_SIDE_EFFECTS if flags contain OEP_CONSTANT_ADDRESS_OF. + Clear OEP_CONSTANT_ADDRESS_OF from flags before recursing on second or + later operands of the references, or even first operand for + INDIRECT_REF, TARGET_MEM_REF or MEM_REF. + + PR tree-optimization/56443 + * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): For + overaligned types, pass TYPE_UNSIGNED (scalar_type) as second argument + to type_for_mode langhook. + +2013-02-25 Matt Turner + + * doc/invoke.texi: Document r4700. + +2013-02-25 Richard Biener + + PR tree-optimization/56175 + * tree-ssa-forwprop.c (hoist_conversion_for_bitop_p): New predicate, + split out from ... + (simplify_bitwise_binary): ... here. Also guard the conversion + of (type) X op CST to (type) (X op ((type-x) CST)) with it. + +2013-02-25 Catherine Moore + + Revert: + 2013-02-24 Catherine Moore + Maciej W. Rozycki + Tom de Vries + Nathan Sidwell + Iain Sandoe + Nathan Froyd + Chao-ying Fu + + * doc/extend.texi: (micromips, nomicromips, nocompression): + Document new function attributes. + * doc/invoke.texi (minterlink-compressed, mmicromips, + m14k, m14ke, m14kec): Document new options. + (minterlink-mips16): Update documentation. + * doc/md.texi (ZC, ZD): Document new constraints. + * configure.ac (gcc_cv_as_micromips): Check if linker + supports the .set micromips directive. + * configure: Regenerate. + * config.in: Regenerate. + * config/mips/mips-tables.opt: Regenerate. + * config/mips/micromips.md: New file. + * constraints.md (ZC, AD): New constraints. + * config/mips/predicates.md (movep_src_register): New predicate. + (movep_src_operand): New predicate. + (non_volatile_mem_operand): New predicate. + * config/mips/mips.md (multimem): New type. + (length): Differentiate between 17-bit and 18-bit branch offsets. + (MOVEP1, MOVEP2): New mode iterator. + (mov_l): Use ZC constraint. + (mov_r): Likewise. + (mov_l): Likewise. + (mov_r): Likewise. + (*branch_equality_inverted): Add microMIPS support. + (*branch_equality): Likewise. + (*jump_absolute): Likewise. + (indirect_jump_): Likewise. + (tablejump_): Likewise. + (_internal): Likewise. + (sibcall_internal): Likewise. + (sibcall_value_internal): Likewise. + (prefetch): Use constraint ZD. + * config/mips/mips.opt (minterlink-compressed): New option. + (minterlink-mips16): Now an alias for minterlink-compressed. + (mmicromips): New option. + * config/mips/sync.md (sync_compare_and_swap): Use ZR constraint. + (compare_and_swap_12): Likewise. + (sync_add): Likewise. + (sync__12): Likewise. + (sync_old__12): Likewise. + (sync_new__12): Likewise. + (sync_nand_12): Likewise. + (sync_old_nand_12): Likewise. + (sync_new_nand_12): Likewise. + (sync_sub): Likewise. + (sync_old_add): Likewise. + (sync_old_sub): Likewise. + (sync_new_add): Likewise. + (sync_new_sub): Likewise. + (sync_): Likewise. + (sync_old_): Likewise. + (sync_new_): Likewise. + (sync_nand): Likewise. + (sync_old_nand): Likewise. + (sync_new_nand): Likewise. + (sync_lock_test_and_set): Likewise. + (test_and_set_12): Likewise. + (atomic_compare_and_swap): Likewise. + (atomic_exchange_llsc): Likewise. + (atomic_fetch_add_llsc): Likewise. + * config/mips/mips-cpus.def (m14kc, m14k): New processors. + * config/mips/mips-protos.h (umips_output_save_restore): New prototype. + (umips_save_restore_pattern_p): Likewise. + (umips_load_store_pair_p): Likewise. + (umips_output_load_store_pair): Likewise. + (umips_movep_target_p): Likewise. + (umips_12bit_offset_address_p): Likewise. + * config/mips/mips.c (MIPS_MAX_FIRST_STEP): Update for microMIPS. + (mips_base_mips16): Rename this... + (mips_base_compression_flags): ...to this. Update all uses. + (mips_attribute_table): Add micromips, nomicromips and nocompression. + (mips_mips16_decl_p): Delete. + (mips_nomips16_decl_p): Delete. + (mips_get_compress_on_flags): New function. + (mips_get_compress_off_flags): New function. + (mips_get_compress_mode): New function. + (mips_get_compress_on_name): New function. + (mips_get_compress_off_name): New function. + (mips_insert_attributes): Support multiple compression types. + (mips_merge_decl_attributes): Likewise. + (umips_12bit_offset_address_p): New function. + (mips_start_function_definition): Emit .set micromips directive. + (mips_call_may_need_jalx_p): New function. + (mips_function_ok_for_sibcall): Add microMIPS support. + (mips_print_operand_punctuation): Support short delay slots and + compact jumps. + (umips_swm_mask, umips_swm_encoding): New. + (umips_build_save_restore): New function. + (mips_for_each_saved_gpr_and_fpr): Add microMIPS support. + (was_mips16_p): Remove. + (old_compression_mode): New. + (mips_set_compression_mode): New function. + (mips_set_current_function): Add microMIPS support. + (mips_option_override): Likewise. + (umips_save_restore_pattern_p): New function. + (umips_output_save_restore): New function. + (umips_load_store_pair_p_1): New function. + (umips_load_store_pair_p): New function. + (umips_output_load_store_pair_1): New function. + (umips_output_load_store_pair): New function. + (umips_movep_target_p) New function. + (mips_prepare_pch_save): Add microMIPS support. + * config/mips/mips.h (TARGET_COMPRESSION): New. + (TARGET_CPU_CPP_BUILTINS): Update macro + to use new compression flags and to support microMIPS. + (MIPS_ISA_LEVEL_SPEC): Add m14k processors. + (MIPS_ARCH_FLOAT_SPEC): Likewise. + (ISA_HAS_LWXS): Include TARGET_MICROMIPS. + (ISA_HAS_LOAD_DELAY): Exclude TARGET_MICROMIPS. + (ASM_SPEC): Support mmicromips and mno-micromips. + (M16STORE_REG_P): New macro. + (MIPS_CALL): Support TARGET_MICROMIPS. + (MICROMIPS_J): New macro. + (mips_base_mips16): Rename this... + (mips_base_compression_flags): ...to this. + (UMIPS_12BIT_OFFSET_P): New macro. + * config/mips/t-sde: (MULTILIB_OPTIONS): Add microMIPS. + (MULTILIB_DIRNAMES): Likewise. + +2013-02-25 Tom de Vries + + PR rtl-optimization/56131 + * insn-notes.def (INSN_NOTE_BASIC_BLOCK): Update comment. + * cfgrtl.c (delete_insn): Don't reorder NOTE_INSN_DELETED_LABEL and + NOTE_INSN_BASIC_BLOCK if BLOCK_FOR_INSN == NULL. + +2013-02-25 Tobias Burnus + + * doc/invoke.texi (-fsanitize=): Move from optimization + to debugging options. + +2013-02-25 Andrey Belevantsev + + * sched-deps.c (sched_analyze_insn): Fix typo in comment. + +2013-02-25 Andrey Belevantsev + Alexander Monakov + + PR middle-end/56077 + * sched-deps.c (sched_analyze_insn): When reg_pending_barrier, + flush pending lists also on non-jumps. Adjust comment. + +2013-02-24 Catherine Moore + Maciej W. Rozycki + Tom de Vries + Nathan Sidwell + Iain Sandoe + Nathan Froyd + Chao-ying Fu + + * doc/extend.texi: (micromips, nomicromips, nocompression): + Document new function attributes. + * doc/invoke.texi (minterlink-compressed, mmicromips, + m14k, m14ke, m14kec): Document new options. + (minterlink-mips16): Update documentation. + * doc/md.texi (ZC, ZD): Document new constraints. + * configure.ac (gcc_cv_as_micromips): Check if linker + supports the .set micromips directive. + * configure: Regenerate. + * config.in: Regenerate. + * config/mips/mips-tables.opt: Regenerate. + * config/mips/micromips.md: New file. + * constraints.md (ZC, AD): New constraints. + * config/mips/predicates.md (movep_src_register): New predicate. + (movep_src_operand): New predicate. + (non_volatile_mem_operand): New predicate. + * config/mips/mips.md (multimem): New type. + (length): Differentiate between 17-bit and 18-bit branch offsets. + (MOVEP1, MOVEP2): New mode iterator. + (mov_l): Use ZC constraint. + (mov_r): Likewise. + (mov_l): Likewise. + (mov_r): Likewise. + (*branch_equality_inverted): Add microMIPS support. + (*branch_equality): Likewise. + (*jump_absolute): Likewise. + (indirect_jump_): Likewise. + (tablejump_): Likewise. + (_internal): Likewise. + (sibcall_internal): Likewise. + (sibcall_value_internal): Likewise. + (prefetch): Use constraint ZD. + * config/mips/mips.opt (minterlink-compressed): New option. + (minterlink-mips16): Now an alias for minterlink-compressed. + (mmicromips): New option. + * config/mips/sync.md (sync_compare_and_swap): Use ZR constraint. + (compare_and_swap_12): Likewise. + (sync_add): Likewise. + (sync__12): Likewise. + (sync_old__12): Likewise. + (sync_new__12): Likewise. + (sync_nand_12): Likewise. + (sync_old_nand_12): Likewise. + (sync_new_nand_12): Likewise. + (sync_sub): Likewise. + (sync_old_add): Likewise. + (sync_old_sub): Likewise. + (sync_new_add): Likewise. + (sync_new_sub): Likewise. + (sync_): Likewise. + (sync_old_): Likewise. + (sync_new_): Likewise. + (sync_nand): Likewise. + (sync_old_nand): Likewise. + (sync_new_nand): Likewise. + (sync_lock_test_and_set): Likewise. + (test_and_set_12): Likewise. + (atomic_compare_and_swap): Likewise. + (atomic_exchange_llsc): Likewise. + (atomic_fetch_add_llsc): Likewise. + * config/mips/mips-cpus.def (m14kc, m14k): New processors. + * config/mips/mips-protos.h (umips_output_save_restore): New prototype. + (umips_save_restore_pattern_p): Likewise. + (umips_load_store_pair_p): Likewise. + (umips_output_load_store_pair): Likewise. + (umips_movep_target_p): Likewise. + (umips_12bit_offset_address_p): Likewise. + * config/mips/mips.c (MIPS_MAX_FIRST_STEP): Update for microMIPS. + (mips_base_mips16): Rename this... + (mips_base_compression_flags): ...to this. Update all uses. + (mips_attribute_table): Add micromips, nomicromips and nocompression. + (mips_mips16_decl_p): Delete. + (mips_nomips16_decl_p): Delete. + (mips_get_compress_on_flags): New function. + (mips_get_compress_off_flags): New function. + (mips_get_compress_mode): New function. + (mips_get_compress_on_name): New function. + (mips_get_compress_off_name): New function. + (mips_insert_attributes): Support multiple compression types. + (mips_merge_decl_attributes): Likewise. + (umips_12bit_offset_address_p): New function. + (mips_start_function_definition): Emit .set micromips directive. + (mips_call_may_need_jalx_p): New function. + (mips_function_ok_for_sibcall): Add microMIPS support. + (mips_print_operand_punctuation): Support short delay slots and + compact jumps. + (umips_swm_mask, umips_swm_encoding): New. + (umips_build_save_restore): New function. + (mips_for_each_saved_gpr_and_fpr): Add microMIPS support. + (was_mips16_p): Remove. + (old_compression_mode): New. + (mips_set_compression_mode): New function. + (mips_set_current_function): Add microMIPS support. + (mips_option_override): Likewise. + (umips_save_restore_pattern_p): New function. + (umips_output_save_restore): New function. + (umips_load_store_pair_p_1): New function. + (umips_load_store_pair_p): New function. + (umips_output_load_store_pair_1): New function. + (umips_output_load_store_pair): New function. + (umips_movep_target_p) New function. + (mips_prepare_pch_save): Add microMIPS support. + * config/mips/mips.h (TARGET_COMPRESSION): New. + (TARGET_CPU_CPP_BUILTINS): Update macro + to use new compression flags and to support microMIPS. + (MIPS_ISA_LEVEL_SPEC): Add m14k processors. + (MIPS_ARCH_FLOAT_SPEC): Likewise. + (ISA_HAS_LWXS): Include TARGET_MICROMIPS. + (ISA_HAS_LOAD_DELAY): Exclude TARGET_MICROMIPS. + (ASM_SPEC): Support mmicromips and mno-micromips. + (M16STORE_REG_P): New macro. + (MIPS_CALL): Support TARGET_MICROMIPS. + (MICROMIPS_J): New macro. + (mips_base_mips16): Rename this... + (mips_base_compression_flags): ...to this. + (UMIPS_12BIT_OFFSET_P): New macro. + * config/mips/t-sde: (MULTILIB_OPTIONS): Add microMIPS. + (MULTILIB_DIRNAMES): Likewise. + +2013-02-24 Jakub Jelinek + + PR target/52555 + * target-globals.c (save_target_globals): For init_reg_sets and + target_reinit remporarily set this_fn_optabs to this_target_optabs. + +2013-02-22 James Greenhalgh + + * config/aarch64/aarch64-simd-builtins.def: Add copyright header. + * config/aarch64/t-aarch64 + (aarch64-builtins.o): Depend on aarch64-simd-builtins.def. + +2013-02-22 Vladimir Makarov + + PR inline-asm/56148 + * lra-constraints.c (process_alt_operands): Reload operand + conflicting with earlier clobber only if no more other conflicting + operands. + +2013-02-22 Jakub Jelinek + + PR sanitizer/56393 + * config/gnu-user.h (LIBASAN_EARLY_SPEC): Link in libasan_preinit.o + if not linking a shared library. + +2013-02-22 Seth LaForge + + * config.gcc (arm*-*-eabi*): Treat arm*eb as big-endian. + +2013-02-22 Greta Yorsh + + * config/arm/arm.md (split for extendsidi): Update condition. + (zero_extenddi2,extenddi2): Add an alternative. + * config/arm/iterators.md (qhs_extenddi_cstr): Likewise. + (qhs_zextenddi_cstr): Likewise. + +2013-02-21 Jakub Jelinek + + PR middle-end/56420 + * expmed.c (EXACT_POWER_OF_2_OR_ZERO_P): Do subtraction in uhwi, to + avoid signed wrapping. + (expand_mult): Handle properly multiplication by + ((dword_type) -1) << (BITS_PER_WORD - 1). Improve multiplication by + ((dword_type) 1) << (BITS_PER_WORD - 1). Avoid undefined behavior + in the compiler if coeff is HOST_WIDE_INT_MIN. + (expand_divmod): Don't make ext_op1 static, change it's type to + uhwi. Avoid undefined behavior in -INTVAL (op1). + + PR rtl-optimization/50339 + * lower-subreg.h (struct lower_subreg_choices): Add splitting_ashiftrt + field. + * lower-subreg.c (compute_splitting_shift): Handle ASHIFTRT. + (compute_costs): Call compute_splitting_shift also for ASHIFTRT + into splitting_ashiftrt field. + (find_decomposable_shift_zext, resolve_shift_zext): Handle also + ASHIFTRT. + (dump_choices): Fix up printing LSHIFTRT choices, print ASHIFTRT + choices. + +2013-02-20 Aldy Hernandez + + PR middle-end/56108 + * trans-mem.c (execute_tm_mark): Do not expand transactions that + are sure to go irrevocable. + +2013-02-21 Hans-Peter Nilsson + + * doc/rtl.texi (vec_concat, vec_duplicate): Mention that + scalars are valid operands. + +2013-02-21 Martin Jambor + + PR tree-optimization/56310 + * ipa-cp.c (agg_replacements_to_vector): New parameter index, copy + only matching indices and non-negative final offsets. + (intersect_aggregates_with_edge): Pass src_idx to + agg_replacements_to_vector. Pass src_idx insstead of index to + intersect_with_agg_replacements. + +2013-02-21 Martin Jambor + + * ipa-cp.c (good_cloning_opportunity_p): Dump the real threshold + instead of hard-wired defaults. + +2013-02-21 Maciej W. Rozycki + + * doc/invoke.texi (MIPS Options): Update documentation of the + floating-point multiply-accumulate instruction restrictions. + +2013-02-21 Kostya Serebryany + + * config/i386/i386.c (ix86_asan_shadow_offset): Use 0x7fff8000 as + asan_shadow_offset on x86_64 linux. + +2013-02-21 Richard Biener + + PR tree-optimization/56415 + Revert + 2013-02-11 Richard Biener + + PR tree-optimization/56273 + * tree-vrp.c (simplify_cond_using_ranges): Disable for the + first VRP run. + +2013-02-21 Jakub Jelinek + + PR bootstrap/56258 + * doc/invoke.texi (-fdump-rtl-pro_and_epilogue): Use @item + instead of @itemx. + + PR inline-asm/56405 + * expr.c (expand_expr_real_1) : Don't + use movmisalign or extract_bit_field for EXPAND_MEMORY modifier. + +2013-02-20 Jan Hubicka + + PR tree-optimization/56265 + * ipa-prop.c (ipa_make_edge_direct_to_target): Fixup callgraph + when target is referenced for first time. + +2013-02-20 Richard Biener + + * tree-call-cdce.c (tree_call_cdce): Do not remove unused locals. + * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Likewise. + * tree-ssa-dce.c (perform_tree_ssa_dce): Likewise. + * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Do + not return anything. + (rename_ssa_copies): Do not remove unused locals. + * tree-ssa-ccp.c (do_ssa_ccp): Likewise. + * tree-ssanames.c (pass_release_ssa_names): Remove unused locals first. + * passes.c (execute_function_todo): Do not schedule unused locals + removal if cleanup_tree_cfg did something. + * tree-ssa-live.c (remove_unused_locals): Dump statistics + about the number of removed locals. + +2013-02-20 Richard Biener + + PR tree-optimization/56398 + * tree-vect-loop-manip.c (adjust_debug_stmts): Skip SSA default defs. + +2013-02-20 Martin Jambor + + PR tree-optimization/55334 + * ipa-cp.c (initialize_node_lattices): Disable IPA-CP through and to + restricted pointers to arrays. + +2013-02-20 Richard Biener + Jakub Jelinek + + PR tree-optimization/56396 + * tree-ssa-ccp.c (n_const_val): New static variable. + (get_value): Return NULL for SSA names we don't have a lattice + entry for. + (ccp_initialize): Initialize n_const_val. + * tree-ssa-copy.c (n_copy_of): New static variable. + (init_copy_prop): Initialize n_copy_of. + (get_value): Return NULL_TREE for SSA names we don't have a + lattice entry for. + +2013-02-20 Martin Jambor + + * ipa-cp.c (initialize_node_lattices): Fix dumping condition. + +2013-02-20 Richard Biener + + * genpreds.c (write_lookup_constraint): Do not compare first + letter of the constraint again. + +2013-02-20 Richard Biener + + * tree-ssa-loop-ivopts.c (alloc_use_cost_map): Use bitmap_count_bits + and ceil_log2. + (get_use_iv_cost): Terminate hashtable walk when coming across + an empty entry. + +2013-02-20 Igor Zamyatin + + * config/i386/i386.c (initial_ix86_tune_features): Turn on fp + reassociation for avx2 targets. + +2012-02-19 Edgar E. Iglesias + + * config/microblaze/microblaze.c: microblaze_has_clz = 0 + Add version check for v8.10.a to enable microblaze_has_clz + * config/microblaze/microblaze.h: Add TARGET_HAS_CLZ as combined + version and TARGET_PATTERN_COMPARE check + * config/microblaze/microblaze.md: New clzsi2 instruction + +2012-02-19 Edgar E. Iglesias + + * config/microblaze/microblaze.md (call_value_intern): Check symbol is + function before branching. + +2012-02-19 Andrey Belevantsev + + * sel-sched-dump.c (dump_insn_rtx_flags): Explicitly set + DUMP_INSN_RTX_UID. + (dump_insn_rtx_1): Pass PATTERN (insn) to str_pattern_slim. + +2012-02-19 Andrey Belevantsev + + PR middle-end/55889 + * sel-sched.c: Include ira.h. + (implicit_clobber_conflict_p): New function. + (moveup_expr): Use it. + * Makefile.in (sel-sched.o): Depend on ira.h. + +2013-02-19 Richard Biener + + PR tree-optimization/56384 + * tree-ssa-sccvn.h (struct vn_phi_s): Add type member. + (vn_hash_type): Split out from ... + (vn_hash_constant_with_type): ... here. + * tree-ssa-sccvn.c (vn_phi_compute_hash): Use vn_hash_type. + (vn_phi_eq): Compare types from vn_phi_s structure. + (vn_phi_lookup): Populate vn_phi_s type. + (vn_phi_insert): Likewise. + +2013-02-19 Jakub Jelinek + + PR tree-optimization/56350 + * tree-vect-loop.c (vectorizable_reduction): If orig_stmt, return false + if haven't found reduction or nested cycle operand, rather than + asserting we must find it. + + PR tree-optimization/56381 + * tree-ssa-pre.c (create_expression_by_pieces): Fix up last argument + to fold_build3. + +2013-02-18 Aldy Hernandez + Jakub Jelinek + + PR target/52555 + * genopinit.c (raw_optab_handler): Use this_fn_optabs. + (swap_optab_enable): Same. + (init_all_optabs): Use argument instead of global. + * tree.h (struct tree_optimization_option): New field target_optabs. + * expr.h (init_all_optabs): Add argument to prototype. + (TREE_OPTIMIZATION_OPTABS): New. + (save_optabs_if_changed): Protoize. + * optabs.h: Declare this_fn_optabs. + * optabs.c (save_optabs_if_changed): New. + Declare this_fn_optabs. + (init_optabs): Add argument to init_all_optabs() call. + * function.c (invoke_set_current_function_hook): Handle per + function optabs. + * function.h (struct function): New field optabs. + * config/mips/mips.c (mips_set_mips16_mode): Handle when + optimization_current_node has changed. + * target-globals.h (save_target_globals_default_opts): Protoize. + * target-globals.c (save_target_globals_default_opts): New. + +2013-02-18 John David Anglin + + PR target/56347 + * config/pa/pa.c (pa_conditional_register_usage): On HP-UX, mark + registers %fr12 and %fr12R as call used. + + PR target/56214 + * config/pa/predicates.md (base14_operand): Except for BLKmode, QImode + and HImode, require all displacements to be an integer multiple of + their mode size. + * config/pa/pa.c (pa_legitimate_address_p): For REG+BASE addresses, + only allow QImode and HImode when reload is in progress and strict is + true. Likewise for symbolic addresses. Use base14_operand to check + displacements in REG+BASE addresses. + +2013-02-18 Richard Biener + + PR tree-optimization/56366 + * tree-vect-loop.c (get_initial_def_for_induction): Properly + handle sign-conversion of outer-loop initial induction value. + +2013-02-18 Richard Biener + + PR middle-end/56349 + * cfghooks.c (merge_blocks): If we merge a latch into another + block adjust references to it. + * cfgloop.c (flow_loops_find): Reset latch before recomputing it. + (verify_loop_structure): Verify that a recorded latch is in fact + a latch. + +2013-02-18 Richard Biener + + PR tree-optimization/56321 + * tree-ssa-reassoc.c (propagate_op_to_single_use): Properly + order SSA name release and virtual operand unlinking. + +2013-02-17 Edgar E. Iglesias + + * config/microblaze/microblaze.md (save_stack_block): Define. + (restore_stack_block): Likewise. + +2013-02-16 Edgar E. Iglesias + + * config/microblaze/linux.h (TARGET_SUPPORTS_PIC): Define as 1. + * config/microblaze/microblaze.h (TARGET_SUPPORTS_PIC): Define as 1. + * config/microblaze/microblaze.c (microblaze_option_override): + Bail out early for PIC modes when target does not support PIC. + +2013-02-16 Edgar E. Iglesias + + * config/microblaze/microblaze.c (microblaze_asm_trampoline_template): + Replace with a microblaze version. + (microblaze_trampoline_init): Adapt for microblaze. + * config/microblaze/microblaze.h (TRAMPOLINE_SIZE): Adapt for + microblaze. + +2013-02-16 Jakub Jelinek + Dodji Seketeli + + PR asan/56330 + * asan.c (get_mem_refs_of_builtin_call): White space and style cleanup. + (instrument_mem_region_access): Do not forget to always put + instrumentation of the of 'base' and 'base + len' in a "if (len != + 0) statement, even for cases where either 'base' or 'base + len' + are not instrumented -- because they have been previously + instrumented. Simplify the logic by putting all the statements + instrument 'base + len' inside a sequence, and then insert that + sequence right before the current insertion point. Then, to + instrument 'base + len', just get an iterator on that statement. + And do not forget to update the pointer to iterator the function + received as argument. + +2013-02-15 Vladimir Makarov + + PR rtl-optimization/56348 + * lra-assigns.c (reload_pseudo_compare_func): Prefer bigger pseudos. + +2013-02-15 Steven Bosscher + + * graph.c (start_graph_dump): Print dumpfile base as digraph label. + (clean_graph_dump_file): Pass base to start_graph_dump. + +2013-02-14 Richard Henderson + + PR target/55941 + * lower-subreg.c (simple_move): Check dest mode instead of src mode. + +2013-02-14 Steven Bosscher + + * collect2-aix.h: Define F_LOADONLY. + +2013-02-14 Richard Biener + + PR lto/50494 + * varasm.c (output_constant_def_1): Get the decl representing + the constant as argument. + (output_constant_def): Wrap output_constant_def_1. + (make_decl_rtl): Use output_constant_def_1 with the decl + representing the constant. + (build_constant_desc): Optionally re-use a decl already + representing the constant. + (tree_output_constant_def): Adjust. + +2013-02-14 Dodji Seketeli + + Fix an asan crash + * asan.c (instrument_builtin_call): Really put the length of the + second source argument into src1_len. + +2013-02-13 Jakub Jelinek + + * asan.c (create_cond_insert_point): Add create_then_fallthru_edge + argument. If it is false, don't create edge from then_bb to + fallthru_bb. + (insert_if_then_before_iter): Pass true to it. + (build_check_stmt): Pass false to it. + (transform_statements): Flush hash table only on extended basic + block boundaries, rather than at the beginning of every bb. + Don't flush hash table on nonfreeing_call_p calls. + * tree-flow.h (nonfreeing_call_p): New prototype. + * tree-ssa-phiopt.c (nonfreeing_call_p): No longer static. + +2013-02-13 David S. Miller + + * expmed.c (expand_shift_1): Only strip scalar integer subregs. + +2013-02-13 Vladimir Makarov + + PR target/56184 + * ira.c (max_regno_before_ira): Move from ... + (ira): ... here. + (fix_reg_equiv_init): Use max_regno_before_ira instead of + vec_safe_length. + +2013-02-13 Jakub Jelinek + + * config/i386/i386.c (ix86_asan_shadow_offset): Revert last change. + +2013-02-13 Richard Biener + + PR lto/56295 + * gimple-streamer-out.c (output_gimple_stmt): Undo wrapping + globals in MEM_REFs. + +2013-02-13 Richard Biener + + * loop-init.c (loop_optimizer_init): Clear loop state when + re-initializing preserved loops. + * loop-unswitch.c (unswitch_single_loop): Return whether + we unswitched the loop. Do not verify loop state here. + (unswitch_loops): When we unswitched a loop discover new loops. + +2013-02-13 Kostya Serebryany + + * config/i386/i386.c: Use 0x7fff8000 as asan_shadow_offset + on x86_64 linux. + * sanitizer.def: Rename __asan_init to __asan_init_v1. + +2013-02-12 Dodji Seketeli + + Avoid instrumenting duplicated memory access in the same basic block + * Makefile.in (asan.o): Add new dependency on hash-table.h + * asan.c (struct asan_mem_ref, struct mem_ref_hasher): New types. + (asan_mem_ref_init, asan_mem_ref_get_end, get_mem_ref_hash_table) + (has_stmt_been_instrumented_p, empty_mem_ref_hash_table) + (free_mem_ref_resources, has_mem_ref_been_instrumented) + (has_stmt_been_instrumented_p, update_mem_ref_hash_table) + (get_mem_ref_of_assignment): New functions. + (get_mem_refs_of_builtin_call): Extract from + instrument_builtin_call and tweak a little bit to make it fit with + the new signature. + (instrument_builtin_call): Use the new + get_mem_refs_of_builtin_call. Use gimple_call_builtin_p instead + of is_gimple_builtin_call. + (instrument_derefs, instrument_mem_region_access): Insert the + instrumented memory reference into the hash table. + (maybe_instrument_assignment): Renamed instrument_assignment into + this, and change it to advance the iterator when instrumentation + actually happened and return true in that case. This makes it + homogeneous with maybe_instrument_assignment, and thus give a + chance to callers to be more 'regular'. + (transform_statements): Clear the memory reference hash table + whenever we enter a new BB, when we cross a function call, or when + we are done transforming statements. Use + maybe_instrument_assignment instead of instrumentation. No more + need to special case maybe_instrument_assignment and advance the + iterator after calling it; it's now handled just like + maybe_instrument_call. Update comment. + +2013-02-13 Richard Biener + + * config/mn10300/mn10300.c (mn10300_scan_for_setlb_lcc): + Fix loop discovery code. + +2013-02-12 Vladimir Makarov + + PR inline-asm/56148 + * lra-constraints.c (process_alt_operands): Match early clobber + operand with itself. Check conflicts with earlyclobber only if + the operand is not reloaded. Prefer to reload conflicting operand + if earlyclobber and matching operands are the same. + +2013-02-12 Richard Biener + + PR lto/56297 + * lto-streamer-out.c (write_symbol): Do not output symbols + for hard register variables. + +2013-02-12 Georg-Johann Lay + + PR target/54222 + * config/avr/avr-dimode.md (umulsidi3, mulsidi3): New expanders. + (umulsidi3_insn, mulsidi3_insn): New insns. + +2013-02-12 Christophe Lyon + + * config/arm/arm-protos.h (struct cpu_vec_costs): New struct type. + (struct tune_params): Add vec_costs field. + * config/arm/arm.c (arm_builtin_vectorization_cost) + (arm_add_stmt_cost): New functions. + (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST) + (TARGET_VECTORIZE_ADD_STMT_COST): Define. + (arm_default_vec_cost): New struct of type cpu_vec_costs. + (arm_slowmul_tune, arm_fastmul_tune, arm_strongarm_tune) + (arm_xscale_tune, arm_9e_tune, arm_v6t2_tune, arm_cortex_tune) + (arm_cortex_a15_tune, arm_cortex_a5_tune, arm_cortex_a9_tune) + (arm_v6m_tune, arm_fa726te_tune): Define new vec_costs field. + +2013-02-12 Richard Biener + + PR lto/56295 + * gimple-streamer-in.c (input_gimple_stmt): Strip MEM_REFs off + decls again if possible. + +2013-02-12 Richard Biener + + PR middle-end/56288 + * tree-ssa.c (verify_ssa_name): Fix check, move + SSA_NAME_IN_FREE_LIST check up. + +2013-02-12 Jakub Jelinek + Steven Bosscher + + PR rtl-optimization/56151 + * optabs.c (add_equal_note): Don't return 0 if target is a MEM, + equal to op0 or op1, and last_insn pattern is CODE operation + with MEM dest and one of the operands matches that MEM. + +2013-02-11 Sriraman Tallam + + * doc/extend.texi: Document Function Multiversioning and "default" + parameter string to target attribute. + * config/i386/i386.c (get_builtin_code_for_version): Return 0 if + target attribute parameter is "default". + (ix86_compare_version_priority): Remove checks for target attribute. + (ix86_mangle_function_version_assembler_name): Change error to sorry. + Remove check for target attribute equal to NULL. Add assert. + (ix86_generate_version_dispatcher_body): Change error to sorry. + +2013-02-11 Iain Sandoe + Jack Howarth + Patrick Marlier + + PR libitm/55693 + * config/darwin.h: Replace ENDFILE_SPEC with TM_DESTRUCTOR and + define ENDFILE_SPEC as TM_DESTRUCTOR. + * config/i386/darwin.h (ENDFILE_SPEC): Use TM_DESTRUCTOR. + +2013-02-11 Alexander Potapenko + Jack Howarth + Jakub Jelinek + + PR sanitizer/55617 + * config/darwin.c (cdtor_record): Rename ctor_record. + (sort_cdtor_records): Rename sort_ctor_records. + (finalize_dtors): New routine to sort destructors by + priority before use in assemble_integer. + (machopic_asm_out_destructor): Use finalize_dtors if needed. + +2013-02-11 Uros Bizjak + + PR rtl-optimization/56275 + * simplify-rtx.c (avoid_constant_pool_reference): Check that + offset is non-negative and less than cmode size before + calling simplify_subreg. + +2013-02-11 Richard Biener + + PR tree-optimization/56264 + * cfgloop.h (fix_loop_structure): Adjust prototype. + * loop-init.c (fix_loop_structure): Return the number of + newly discovered loops. + * tree-cfgcleanup.c (repair_loop_structures): When new loops + are discovered, do a full loop-closed SSA rewrite. + +2013-02-11 Richard Biener + + PR tree-optimization/56273 + * tree-vrp.c (simplify_cond_using_ranges): Disable for the + first VRP run. + (check_array_ref): Fix missing newline in dumps. + (search_for_addr_array): Likewise. + +2013-02-09 David Edelsohn + + * config/rs6000/aix61.h (OS_MISSING_ALTIVEC): Undefine. + +2013-02-09 Jakub Jelinek + + PR target/56256 + * config/rs6000/rs6000.h (ASSEMBLER_DIALECT): Define. + +2013-02-08 Vladimir Makarov + + PR rtl-optimization/56246 + * lra-constraints.c (simplify_operand_subreg): Try to reuse + reload pseudo. + * lra.c (lra): Clear lra_optional_reload_pseudos only when all + constraints are satisfied. + +2013-02-08 Jeff Law + + PR debug/53948 + * emit-rtl.c (reg_is_parm_p): New function. + * regs.h (reg_is_parm_p): New prototype. + * ira-conflicts.c (ira_build_conflicts): Allow parameters in + callee-clobbered registers. + +2013-02-08 Michael Meissner + + PR target/56043 + * config/rs6000/rs6000.c (rs6000_builtin_vectorized_libmass): + If there is no implicit builtin declaration, just return NULL. + +2013-02-08 Uros Bizjak + + * config/i386/sse.md (FMAMODEM): New mode iterator. + (fma4, fms4, fnma4, fnms4): Use FMAMODEM + mode iterator. Do not use TARGET_SSE_MATH in insn constraint. + +2013-02-08 Uros Bizjak + + * config/i386/gnu-user.h (TARGET_CAN_SPLIT_STACK): Define only + when HAVE_GAS_CFI_PERSONALITY_DIRECTIVE is set. + * config/i386/gnu-user64.h (TARGET_CAN_SPLIT_STACK): Ditto. + +2013-02-08 Edgar E. Iglesias + + * config.gcc (microblaze*-linux*): Add TARGET_BIG_ENDIAN_DEFAULT. + (microblaze*-*-elf): Likewise. + * config/microblaze/linux.h: Add -mbig-endian / -mlittle-endian to + LINK_SPEC. + * config/microblaze/microblaze-c.c: Add builtin defines for + _LITTLE_ENDIAN and _BIG_ENDIAN. + * config/microblaze/microblaze.h: Add TARGET_ENDIAN_DEFAULT and + add to TARGET_DEFAULT flags. + Expand ASM_SPEC and LINK_SPEC. + Update BYTES_BIG_ENDIAN and WORDS_BIG_ENDIAN. + * config/microblaze/microblaze.md: Update extendsidi2 and + movdi_internal instructions to use low-order / high-order reg + print_operands. + * config/microblaze/microblaze.opt: Add mbig-endian and mlittle-endian + options and inversemask / mask of LITTLE_ENDIAN. + * config/microblaze/t-microblaze: Expand multilib options to + include mlittle-endian (le) and update exceptions patterns. + +2013-02-08 Jakub Jelinek + + PR rtl-optimization/56195 + * lra-constraints.c (get_reload_reg): Don't reuse regs + if they have smaller mode than requested, if they have + wider mode than requested, try to return a SUBREG. + + PR tree-optimization/56250 + * fold-const.c (extract_muldiv_1) : Don't optimize + if type is unsigned and code isn't MULT_EXPR. + +2013-02-08 Georg-Johann Lay + + PR tree-optimization/56064 + * fixed-value.c (fixed_from_double_int): Sign/zero extend payload + bits according to mode. + * fixed-value.h (fixed_from_double_int) + (const_fixed_from_double_int): Adjust comments. + +2013-02-08 Richard Biener + + PR lto/56231 + * lto-streamer.h (struct data_in): Remove current_file, current_line + and current_col members. + * lto-streamer-out.c (lto_output_location): Stream changed bits + en-block for efficiency. + * lto-streamer-in.c (clear_line_info): Remove. + (lto_input_location): Cache current file, line and column + globally via local statics. Read changed bits en-block. + (input_function): Do not call clear_line_info. + (lto_read_body): Likewise. + (lto_input_toplevel_asms): Likewise. + +2013-02-08 Michael Matz + + PR tree-optimization/52448 + * tree-ssa-phiopt.c (struct name_to_bb): Add phase member. + (nt_call_phase): New static. + (add_or_mark_expr): Only mark accesses with newer phase than any + call seen. + (nonfreeing_call_p): New. + (nt_init_block): Update nt_call_phase, mark blocks as visited. + (nt_fini_block): Keep blocks marked as visited. + (get_non_trapping): Initialize nt_call_phase, and reset aux pointer. + +2013-02-08 Richard Biener + + * ira.c (ira): Free broken dominator information. + +2013-02-08 Uros Bizjak + + * config/i386/i386.c (ix86_spill_class): Use INTEGER_CLASS_P macro. + +2013-02-08 Marek Polacek + + * cfgloop.c (verify_loop_structure): Add more checking of headers. + +2013-02-08 Richard Biener + + PR middle-end/56181 + * cfgloop.h (flow_loops_find): Adjust. + (bb_loop_header_p): Declare. + * cfgloop.c (bb_loop_header_p): New function split out from ... + (flow_loops_find): ... here. Adjust function signature, + support incremental loop structure update. + (verify_loop_structure): Cleanup. Verify a loop is a loop. + * cfgloopmanip.c (fix_loop_structure): Move ... + * loop-init.c (fix_loop_structure): ... here. + (apply_loop_flags): Split out from ... + (loop_optimizer_init): ... here. + (fix_loop_structure): Use apply_loop_flags. Use flow_loops_find + in incremental mode, only remove dead loops here. + +2013-02-08 Georg-Johann Lay + + PR target/54222 + * config/avr/avr.md (unspec) : Add. + * config/avr/avr-fixed.md (ALL4QA, ALL124QA): New mode iterators. + (round3, round3_const): New expanders for fixed-mode. + (*round3.libgcc): New insns for fixed-modes. + * config/avr/builtins.def (ABSxx): Use a non-NULL LIBNAME. + (ROUNDxx, COUNTLSxx, BITSxx, xxBITS): New DEF_BUILTINs. + (ROUNDFX, COUNTLSFX, ABSFX): New DEF_BUILTINs. + * config/avr/stdfix.h (absFX, bitsFX, FXbits): Remove inline + implementations. Define to __builtin_avr_absFX, + __builtin_avr_bitsFX, __builtin_avr_FXbits, respectively. + (roundFX, countlsFX): Define to __builtin_avr_roundFX, + __builtin_avr_countlsFX, respectively. + * config/avr/avr-c.c (target.h): Include it. + (enum avr_builtin_id): New enum. + (avr_resolve_overloaded_builtin): New static function. + (avr_register_target_pragmas): Use it to set + targetm.resolve_overloaded_builtin. + * config/avr/avr.c (avr_init_builtins): Supply myriads of local + tree nodes used by DEF_BUILTIN. + (avr_expand_builtin) : Sanity-check them. + (avr_fold_builtin) : Fold to VIEW_COVERT_EXPR. + : Same. + +2013-02-08 Richard Biener + + * cfgloop.c (verify_loop_structure): Properly handle + a loop exiting to another loop header. + * ira-int.h (ira_loops): Remove. + * ira.c (ira_loops): Remove. + (ira): Use loop_optimizer_init and loop_optimizer_finalize. + (do_reload): Use loop_optimizer_finalize. + * ira-build.c (create_loop_tree_nodes): Use get_loops and + number_of_loops to access the loop tree. + (more_one_region_p): Likewise. + (finish_loop_tree_nodes): Likewise. + (rebuild_regno_allocno_maps): Likewise. + (mark_loops_for_removal): Likewise. + (mark_all_loops_for_removal): Likewise. + (remove_unnecessary_regions): Likewise. + (ira_build): Likewise. + * ira-emit.c (setup_entered_from_non_parent_p): Likewise. + +2013-02-08 Richard Biener + + * Makefile.in (tree-tailcall.o): Add $(CFGLOOP_H) dependency. + * ipa-pure-const.c (analyze_function): Avoid calling + mark_irreducible_loops twice. + * tree-tailcall.c (tree_optimize_tail_calls_1): Mark loops for fixup. + +2013-02-07 David S. Miller + + * dwarf2out.c (based_loc_descr): Perform leaf register remapping + on 'reg'. + * var-tracking.c (vt_add_function_parameter): Test the presence of + HAVE_window_save properly and do not remap argument registers when + we have a leaf function. + +2013-02-07 Uros Bizjak + + PR bootstrap/56227 + * ggc-page.c (ggc_print_statistics): Use HOST_LONG_LONG_FORMAT + instead of "ll". + * config/i386/i386.c (ix86_print_operand): Ditto. + +2013-02-07 Vladimir Makarov + + * lra-constraints.c (process_alt_operands): Fix recently added comment. + +2013-02-07 Vladimir Makarov + + PR rtl-optimization/56225 + * lra-constraints.c (process_alt_operands): Check that reload hard + reg can hold value for strict_low_part. + +2013-02-07 Jakub Jelinek + + PR debug/56154 + * dwarf2out.c (dwarf2_debug_hooks): Set end_function hook to + dwarf2out_end_function. + (in_first_function_p, maybe_at_text_label_p, + first_loclabel_num_not_at_text_label): New variables. + (dwarf2out_var_location): In the first function find out + lowest loclabel_num N where .LVLN is known not to be equal to .Ltext0. + (find_empty_loc_ranges_at_text_label, dwarf2out_end_function): New + functions. + +2013-02-07 Eric Botcazou + + PR rtl-optimization/56178 + * cse.c (cse_insn): Do not create a REG_EQUAL note if the source is a + SUBREG of a register. Tidy up related block of code. + * fwprop.c (forward_propagate_and_simplify): Do not create a REG_EQUAL + note if the source is a register or a SUBREG of a register. + +2013-02-07 Jakub Jelinek + + PR target/56228 + * config/rs6000/rs6000.md (ptrm): New mode attr. + (call_indirect_aix, call_indirect_aix_nor11, + call_value_indirect_aix, + call_value_indirect_aix_nor11): Use instead of + m in constraints. + +2013-02-07 Michael Haubenwallner + + * collect2.c (main): Set aix64_flag for -G and -bsvr4 too, disable + if -bnortl. Convert to strcmp and strncmp. + +2013-02-07 Alan Modra + + PR target/54009 + * config/rs6000/rs6000.c (mem_operand_gpr): Check that LO_SUM + addresses won't wrap when offsetting. + (rs6000_secondary_reload): Provide secondary reloads needed for + wrapping LO_SUM addresses. + +2013-02-06 Thomas Schwinge + + * config/gnu.h (GNU_USER_TARGET_OS_CPP_BUILTINS): Never define + MACH, just __MACH__. + +2013-02-06 Richard Biener + + * tracer.c (tracer): Mark loops with LOOPS_NEED_FIXUP + instead of calling fix_loop_structure. + +2013-02-06 Jakub Jelinek + + PR middle-end/56217 + * omp-low.c (use_pointer_for_field): Return false if + lower_send_shared_vars doesn't generate any copy-out code. + +2013-02-06 Tom de Vries + + PR rtl-optimization/56131 + * cfgrtl.c (delete_insn): Use NOTE_BASIC_BLOCK instead of BLOCK_FOR_INSN + to get the bb of a NOTE_INSN_BASIC_BLOCK. Handle the case that the bb + of the label is NULL. Add comment. + +2013-02-05 Jakub Jelinek + + * tree.h (struct tree_decl_with_vis): Remove thread_local field. + + PR sanitizer/55374 + * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Define. + (STATIC_LIBTSAN_LIBS): Likewise. + * gcc.c (ADD_STATIC_LIBTSAN_LIBS, LIBTSAN_EARLY_SPEC): Define. + (LIBTSAN_SPEC): Add ADD_STATIC_LIBTSAN_LIBS, if LIBTSAN_EARLY_SPEC + is defined, don't add anything else beyond that. + (SANITIZER_EARLY_SPEC, SANITIZER_SPEC): Define. + (LINK_COMMAND_SPEC): Use them. + + PR tree-optimization/56205 + * tree-stdarg.c (check_all_va_list_escapes): Return true if + there are any PHI nodes that set non-va_list_escape_vars SSA_NAME + and some va_list_escape_vars SSA_NAME appears in some PHI argument. + +2013-02-05 Richard Biener + + PR tree-optimization/53342 + PR tree-optimization/53185 + * tree-vectorizer.h (vect_check_strided_load): Remove. + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Do + not disallow peeling for vectorized strided loads. + (vect_check_strided_load): Make static and simplify. + (vect_analyze_data_refs): Adjust. + * tree-vect-stmts.c (vectorizable_load): Handle peeled loops + correctly when vectorizing strided loads. + +2013-02-05 Richard Biener + + * doc/install.texi: Refer to ISL, not PPL. + +2013-02-05 Jan Hubicka + + PR tree-optimization/55789 + * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): Drop to 1. + +2013-02-05 Jan Hubicka + + PR tree-optimization/55789 + * cgraphclones.c (cgraph_remove_node_and_inline_clones): Remove + the dead call anyway. + +2013-02-05 Eric Botcazou + + PR sanitizer/55374 + * config/gnu-user.h (LIBASAN_EARLY_SPEC): Add missing guard. + +2013-02-04 Alexander Potapenko + Jack Howarth + Jakub Jelinek + + PR sanitizer/55617 + * config/darwin.c (sort_ctor_records): Stabilized qsort + on constructor priority by using original position. + (finalize_ctors): New routine to sort constructors by + priority before use in assemble_integer. + (machopic_asm_out_constructor): Use finalize_ctors if needed. + +2013-02-04 Jakub Jelinek + + PR libstdc++/54314 + * config/i386/winnt.c (i386_pe_assemble_visibility): Don't warn + about visibility on artificial decls. + * config/sol2.c (solaris_assemble_visibility): Likewise. + +2013-02-04 Kai Tietz + + PR target/56186 + * config/i386/i386.c (function_value_ms_64): Add additional valtype + argument and improve checking of return-argument types for 16-byte + modes. + (ix86_function_value_1): Add additional valtype argument on call + of function_value_64. + (return_in_memory_ms_64): Sync 16-byte sized mode handling with + handling infunction_value_64 function. + +2013-02-04 Matthew Gretton-Dann + + * reload.c (subst_reloads): Fix DEBUG_RELOAD build issue. + +2013-02-04 Richard Biener + + PR tree-optimization/56188 + * tree-ssa-structalias.c (label_visit): Consider case with + initially non-empty points-to set. + (perform_var_substitution): Dump node mapping and clean up. + +2013-02-04 Richard Guenther + + PR lto/56168 + * lto-symtab.c (lto_symtab_merge_decls_1): Make non-builtin + node prevail as last resort. + (lto_symtab_merge_decls): Remove guard on LTRANS here. + (lto_symtab_prevailing_decl): Builtins are their own prevailing decl. + +2013-02-04 Richard Biener + + PR tree-optimization/56113 + * tree-ssa-structalias.c (equiv_class_lookup, equiv_class_add): + Merge into ... + (equiv_class_lookup_or_add): ... this. + (label_visit): Adjust and fix error in previous patch. + (perform_var_substitution): Adjust. + +2013-02-03 Oleg Endo + + * config/sh/divtab.c: Fix formatting and comments throughout the file. + * config/sh/sh4-300.md: Likewise. + * config/sh/sh4a.md: Likewise. + * config/sh/constraints.md: Likewise. + * config/sh/sh.md: Likewise. + * config/sh/netbsd-elf.h: Likewise. + * config/sh/predicates.md: Likewise. + * config/sh/sh-protos.h: Likewise. + * config/sh/ushmedia.h: Likewise. + * config/sh/linux.h: Likewise. + * config/sh/sh.c: Likewise. + * config/sh/superh.h: Likewise. + * config/sh/elf.h: Likewise. + * config/sh/sh4.md: Likewise. + * config/sh/sh.h: Likewise. + +2013-02-03 John David Anglin + + * config/pa/constraints.md: Adjust unused letters. Change "T" + constraint to match_test floating_point_store_memory_operand(). + * config/pa/predicates.md (reg_plus_base_memory_operand): New. + (base14_operand): New. + (floating_point_store_memory_operand): New. + (integer_store_memory_operand): Revise to use base14_operand and + reg_plus_base_memory_operand. + (move_dest_operand): Allow symbolic_memory_operands. + (symbolic_memory_operand): Check for LO_SOM. + (symbolic_operand): Change default case to break. + * config/pa/pa.md: Remove unamed DFmode and SFmode patterns to force + CONST_DOUBLE values to be reloaded by putting them into memory when + the destination is a floating point register. + (movdf): Remove code to handle CONST_DOUBLE. + (movsf): Likewise. + (reload_indf_r1): New. + (reload_insf_r1): New. + Consistently use "Q" and "T" constraints with integer and floating + point move instructions, respectively. + (movdi): Remove FAIL. + Change predicate for source operand unamed DImode move from + general_operand to move_src_operand. + (umulsidi3): Change predicate for destination operand to + register_operand. + Likewise for similar unamed patterns. + * config/pa/pa-protos.h (pa_legitimize_reload_address): Declare. + * config/pa/pa.c (pa_symbolic_expression_p): Remove extra parenthesis. + (hppa_legitimize_address): Simplify mask calculation. + (pa_emit_move_sequence): Revised handling of secondary reloads from + REG+D addresses for floating point loads and stores. Directly handle + loading CONST0_RTX (mode) to a floating point register. + (pa_secondary_reload): Handle reloading DF and SFmode constant values + to floating point registers. Don't restrict secondary reloads to + floating point registers to integer modes. Revise some comments and + cleanup some code. + (TARGET_LEGITIMATE_ADDRESS_P): Define. + (pa_legitimate_address_p): New. + (pa_legitimize_reload_address): New. + * config/pa/pa.h (STRICT_REG_OK_FOR_INDEX_P): New. + (STRICT_REG_OK_FOR_BASE_P): New. + (GO_IF_LEGITIMATE_ADDRESS): Delete. Update some related comments. + (LEGITIMIZE_RELOAD_ADDRESS): Revise to use pa_legitimize_reload_address. + +2013-02-03 David Edelsohn + Andrew Dixie + + * collect2.c (GCC_CHECK_HDR): Do not scan objects with F_LOADONLY + flag set. + +2013-02-03 Richard Sandiford + + * expmed.c (extract_bit_field_1): Pass the full width of the + structure to get_best_reg_extraction_insn. + +2013-02-01 David Edelsohn + + PR target/54601 + * configure.ac (use_cxa_atexit): Add AIX. + * configure: Regenerate. + + * config/rs6000/aix61.h (STARTFILE_SPEC): Add crtcxa.o. + +2013-02-01 Jakub Jelinek + + PR debug/54793 + * final.c (need_profile_function): New variable. + (final_start_function): Drop ATTRIBUTE_UNUSED from first argument. + If first of NOTE_INSN_BASIC_BLOCK or NOTE_INSN_FUNCTION_BEG + is only preceeded by NOTE_INSN_VAR_LOCATION or NOTE_INSN_DELETED + notes, targetm.asm_out.function_prologue doesn't emit anything, + HAVE_prologue and profiler should be emitted before prologue, + set need_profile_function instead of emitting it. + (final_scan_insn): If need_profile_function, emit + profile_function on the first NOTE_INSN_BASIC_BLOCK or + NOTE_INSN_FUNCTION_BEG note. + +2013-02-01 Richard Henderson + + * config/rs6000/rs6000.md (smulditi3): New. + (umulditi3): New. + + * config/alpha/alpha.md (umulditi3): New. + +2013-02-01 David Edelsohn + + * config/rs6000/xcoff.h (ASM_OUTPUT_ALIGNED_COMMON): Use floor_log2. + (ASM_OUTPUT_ALIGNED_LOCAL): New. + +2013-02-01 Richard Biener + + PR tree-optimization/56113 + * tree-ssa-structalias.c (label_visit): Reduce work for + single-predecessor nodes. + +2013-02-01 Eric Botcazou + + * fold-const.c (make_range_step) : Bail out if the + range isn't testing for zero. + +2013-01-31 Steven Bosscher + + PR middle-end/56113 + * fwprop.c (fwprop_init): Set up loops without CFG modifications. + +2013-01-31 Hiroyuki Ono + Nick Clifton + + * config/v850/constraints.md (Q): Define as a memory constraint. + * config/v850/predicates.md (label_ref_operand): New predicate. + (e3v5_shift_operand): New predicate. + (ior_operator): New predicate. + * config/v850/t-v850: Add e3v5 multilib. + * config/v850/v850-protos.h (v850_adjust_insn_length): Prototype. + (v850_gen_movdi): Prototype. + * config/v850/v850.c: Add support for e3v5 architecture. + Rename all uses of TARGET_V850E || TARGET_V850E2_ALL to + TARGET_V850E_UP. + (construct_save_jarl): Add e3v5 long JARL support. + (v850_adjust_insn_length): New function. Adjust length of call + insns when using e3v5 instructions. + (v850_gen_movdi): New function: Generate instructions to move a + DImode value. + * config/v850/v850.h (TARGET_CPU_v850e3v5): Define. + (CPP_SPEC): Define __v850e3v5__ as appropriate. + (TARGET_USE_FPU): Enable for e3v5. + (CONST_OK_FOR_W): New macro. + (ADJUST_INSN_LENGTH): Define. + * config/v850/v850.md (UNSPEC_LOOP): Define. + (attr cpu): Add v850e3v5. + Rename all uses of TARGET_V850E2 to TARGET_V850E2V3_UP. + (movdi): New pattern. + (movdi_internal): New pattern. + (cbranchsf4): Conditionalize on TARGET_USE_FPU. + (cbranchdf4): Conditionalize on TARGET_USE_FPU. + (cstoresf4): Likewise. + (cstoredf4): Likewise. + (insv): New pattern. + (rotlso3_a): New pattern. + (rotlsi3_b): New pattern + (rotlsi3_v850e3v5): New pattern. + (doloop_begin): New pattern. + (fix_loop_counter): New pattern. + (doloop_end): New pattern. + (branch_normal): Add e3v5 long branch support. + (branch_invert): Likewise. + (branch_z_normal): Likewise. + (branch_z_invert): Likewise. + (branch_nz_normal): Likewise. + (branch_nz_invert): Likewise. + (call_internal_short): Add e3v5 register-indirect JARL support. + (call_internal_long): Likewise. + (call_value_internal_short): Likewise. + (call_value_internal_long): Likewise. + * config/v850/v850.opt (mv850e3v5, mv850e2v4): New options. + (mloop): New option. + * config.gcc: Add support for configuring v840e3v5 target. + * doc/invoke.texi: Document new v850 specific command line options. + +2013-01-31 Paul Koning + + PR debug/55059 + PR debug/54508 + * dwarf2out.c (prune_unused_types_mark): Mark all of parent's + children if parent is a class. + (prune_unused_types_prune): Don't add DW_AT_declaration. + +2013-01-31 Richard Biener + + PR tree-optimization/56157 + * tree-vect-slp.c (vect_get_slp_defs): More thoroughly try to + match up operand with SLP child. + +2013-01-31 Jason Merrill + + PR debug/54410 + * dwarf2out.c (gen_struct_or_union_type_die): Always schedule template + parameters the first time. + (gen_scheduled_generic_parms_dies): Check completeness here. + +2013-01-31 Richard Biener + + PR middle-end/53073 + * common.opt (faggressive-loop-optimizations): New flag, + enabled by default. + * doc/invoke.texi (faggressive-loop-optimizations): Document. + * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Guard + infer_loop_bounds_from_undefined by it. + +2013-01-31 Richard Biener + + PR tree-optimization/56150 + * tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Do not + visit virtual operands. + (find_uses_to_rename_bb): Likewise. + +2013-01-31 Richard Biener + + PR tree-optimization/56150 + * tree-ssa-tail-merge.c (gimple_equal_p): Properly handle + mixed store non-store stmts. + +2013-01-30 Jakub Jelinek + + PR sanitizer/55374 + * gcc.c (LIBASAN_SPEC): Define just to ADD_STATIC_LIBASAN_LIBS if + LIBASAN_EARLY_SPEC is defined. + (LIBASAN_EARLY_SPEC): Define to empty string if not already defined. + (LINK_COMMAND_SPEC): Add LIBASAN_EARLY_SPEC for -fsanitize=address, + before %o. + * config/gnu-user.h (LIBASAN_EARLY_SPEC): Define. + + PR c++/55742 + * config/i386/i386.c (ix86_valid_target_attribute_inner_p): Diagnose + invalid args instead of ICEing on it. + (ix86_valid_target_attribute_tree): Return error_mark_node if + ix86_valid_target_attribute_inner_p failed. + (ix86_valid_target_attribute_p): Return false only if + ix86_valid_target_attribute_tree returned error_mark_node. Allow + target("default") attribute. + (sorted_attr_string): Change argument from const char * to tree, + merge in all target attribute arguments rather than just one. + Formatting fix. Use XNEWVEC instead of xmalloc and XDELETEVEC + instead of free. Avoid using strcat. + (ix86_mangle_function_version_assembler_name): Mangle + target("default") as if no target attribute is present. Adjust + sorted_attr_string caller. Avoid leaking memory. Use XNEWVEC + instead of xmalloc and XDELETEVEC instead of free. + (ix86_function_versions): Don't return true if one of the decls + doesn't have target attribute. If they don't and one of the decls + is DECL_FUNCTION_VERSIONED, report an error. Adjust + sorted_attr_string caller. Use XDELETEVEC instead of free. + (ix86_supports_function_versions): Remove. + (make_name): Fix up formatting. + (make_dispatcher_decl): Remove resolver_name and its initialization. + Avoid leaking memory. + (is_function_default_version): Return true if there is + target("default") attribute rather than no target attribute at all. + (make_resolver_func): Avoid leaking memory. + (ix86_generate_version_dispatcher_body): Likewise. + (TARGET_OPTION_SUPPORTS_FUNCTION_VERSIONS): Remove. + * target.def (supports_function_versions): Remove. + * doc/tm.texi.in (SUPPORTS_FUNCTION_VERSIONS): Remove. + * doc/tm.texi: Regenerated. + +2013-01-30 Vladimir Makarov + + PR rtl-optimization/56144 + * lra-constraints.c (get_reload_reg): Don't reuse reload pseudo + for values with side effects. + +2013-01-30 Richard Biener + + * sparseset.h (sparseset_bit_p): Use gcc_checking_assert. + (sparseset_pop): Likewise. + * cfganal.c (compute_idf): Likewise. Increase work-stack size + to be able to use quick_push in the worker loop. + +2013-01-30 Marek Polacek + + * cfgcleanup.c (cleanup_cfg): Don't mark affected BBs. + +2013-01-30 Richard Biener + + PR lto/56147 + * lto-symtab.c (lto_symtab_merge_decls_1): Guard DECL_BUILT_IN check. + +2013-01-30 Georg-Johann Lay + + PR tree-optimization/56064 + * fixed-value.c (fixed_from_double_int): New function. + * fixed-value.h (fixed_from_double_int): New prototype. + (const_fixed_from_double_int): New static inline function. + * fold-const.c (native_interpret_fixed): New static function. + (native_interpret_expr) : Use it. + (can_native_interpret_type_p) : Return true. + (native_encode_fixed): New static function. + (native_encode_expr) : Use it. + (native_interpret_int): Move double_int worker code to... + * double-int.c (double_int::from_buffer): ...this new static method. + * double-int.h (double_int::from_buffer): Prototype it. + +2013-01-30 Richard Biener + + * tree-ssa-structalias.c (final_solutions, final_solutions_obstack): + New pointer-map and obstack. + (init_alias_vars): Allocate pointer-map and obstack. + (delete_points_to_sets): Free them. + (find_what_var_points_to): Cache result. + (find_what_p_points_to): Adjust for changed interface of + find_what_var_points_to. + (compute_points_to_sets): Likewise. + (ipa_pta_execute): Likewise. + +2013-01-30 Rainer Orth + + * configure.ac (HAVE_AS_SPARC_NOBITS): New test. + * configure: Regenerate. + * config.in: Regenerate. + * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section): Emit + #nobits/#progbits if supported. + +2013-01-29 Oleg Endo + + PR target/56121 + * config/sh/sh.md (bclr_m2a, bset_m2a, bst_m2a, bld_m2a, bldsign_m2a, + bld_reg, *bld_regqi, band_m2a, bandreg_m2a, bor_m2a, borreg_m2a, + bxor_m2a, bxorreg_m2a): Add satisfies_constraint_K03 condition. + +2013-01-29 Greta Yorsh + + * config/arm/cortex-a7.md (cortex_a7_neon, cortex_a7_all): Remove. + (cortex_a7_idiv): Use cortex_a7_both instead of cortex_a7_all. + +2013-01-29 Greta Yorsh + + * config/arm/arm.c (cortexa7_younger): Return true for TYPE_CALL. + * config/arm/cortex-a7.md (cortex_a7_call): Update required units. + +2013-01-29 Greta Yorsh + + * config/arm/arm-protos.h (arm_mac_accumulator_is_result): New + declaration. + * config/arm/arm.c (arm_mac_accumulator_is_result): New function. + * config/arm/cortex-a7.md: New bypasses using + arm_mac_accumulator_is_result. + +2013-01-29 Greta Yorsh + + * config/arm/cortex-a7.md (cortex_a7_neon_mul): New reservation. + (cortex_a7_neon_mla): Likewise. + (cortex_a7_fpfmad): New reservation. + (cortex_a7_fpmacs): Use ffmas and update required units. + (cortex_a7_fpmuld): Update required units and latency. + (cortex_a7_fpmacd): Likewise. + (cortex_a7_fdivs, cortex_a7_fdivd): Likewise. + (cortex_a7_neon). Likewise. + (bypass) Update participating units. + +2013-01-29 Greta Yorsh + + * config/arm/arm.md (type): Add ffmas and ffmad to "type" attribute. + * config/arm/vfp.md (fma,fmsub,fnmsub,fnmadd): Change type + from fmac to ffma. + * config/arm/vfp11.md (vfp_farith): Use ffmas. + (vfp_fmul): Use ffmad. + * config/arm/cortex-r4f.md (cortex_r4_fmacs): Use ffmas. + (cortex_r4_fmacd): Use ffmad. + * config/arm/cortex-m4-fpu.md (cortex_m4_fmacs): Use ffmas. + * config/arm/cortex-a9.md (cortex_a9_fmacs): Use ffmas. + (cortex_a9_fmacd): Use ffmad. + * config/arm/cortex-a8-neon.md (cortex_a8_vfp_macs): Use ffmas. + (cortex_a8_vfp_macd): Use ffmad. + * config/arm/cortex-a5.md (cortex_a5_fpmacs): Use ffmas. + (cortex_a5_fpmacd): Use ffmad. + * config/arm/cortex-a15-neon.md (cortex_a15_vfp_macs) Use ffmas. + (cortex_a15_vfp_macd): Use ffmad. + * config/arm/arm1020e.md (v10_fmul): Use ffmas and ffmad. + +2013-01-29 Jason Merrill + + PR libstdc++/54314 + * varasm.c (default_assemble_visibility): Don't warn about + visibility on artificial decls. + +2013-01-29 Richard Biener + + PR tree-optimization/56113 + * tree-ssa-structalias.c (equiv_class_lookup): Also return + the bitmap leader. + (label_visit): Free duplicate bitmaps and record the leader instead. + (perform_var_substitution): Adjust. + +2013-01-29 Richard Biener + + PR tree-optimization/55270 + * tree-ssa-dom.c (eliminate_degenerate_phis): If we changed + the CFG, schedule loops for fixup. + +2013-01-29 Nick Clifton + + * config/rl78/rl78.c (rl78_regno_mode_code_ok_for_base_p): Allow + SP_REG. + +2013-01-28 Leif Ekblad + + * config.gcc (i[34567]86-*-rdos*, x86_64-*-rdos*): New targets. + * config/i386/i386.h (TARGET_RDOS): New macro. + (DEFAULT_LARGE_SECTION_THRESHOLD): New macro. + * config/i386/i386.c (ix86_option_override_internal): For 64bit + TARGET_RDOS, set ix86_cmodel to CM_MEDIUM_PIC and flag_pic to 1. + * config/i386/i386.opt (mlarge-data-threshold): Initialize to + DEFAULT_LARGE_SECTION_THRESHOLD. + * config/i386/i386.md (R14_REG, R15_REG): New constants. + * config/i386/rdos.h: New file. + * config/i386/rdos64.h: New file. + +2013-01-28 Bernd Schmidt + + PR other/54814 + * reload.c (find_valid_class_1): Use in_hard_reg_set_p instead of + TEST_HARD_REG_BIT. + +2013-01-28 Jakub Jelinek + + PR rtl-optimization/56117 + * sched-deps.c (sched_analyze_2) : For use_cselib + call cselib_lookup_from_insn on the MEM before calling + add_insn_mem_dependence. + +2013-01-28 Richard Biener + + * tree-inline.c (remap_gimple_stmt): Do not assing a BLOCK + to a stmt that didn't have one. + (copy_phis_for_bb): Likewise for PHI arguments. + (copy_debug_stmt): Likewise for debug stmts. + +2013-01-28 Richard Biener + + PR tree-optimization/56034 + * tree-loop-distribution.c (enum partition_kind): Add PKIND_REDUCTION. + (partition_builtin_p): Adjust. + (generate_code_for_partition): Handle PKIND_REDUCTION. Assert + it is the last partition. + (rdg_flag_uses): Check SSA_NAME_IS_DEFAULT_DEF before looking + up the vertex for the definition. + (classify_partition): Classify whether a partition is a + PKIND_REDUCTION, thus has uses outside of the loop. + (ldist_gen): Inherit PKIND_REDUCTION when merging partitions. + Merge all PKIND_REDUCTION partitions into the last partition. + (tree_loop_distribution): Seed partitions from reductions as well. + +2013-01-28 Jakub Jelinek + + PR tree-optimization/56125 + * tree-ssa-math-opts.c (gimple_expand_builtin_pow): Don't optimize + pow(x,c) into sqrt(x) * powi(x, n/2) or + 1.0 / (sqrt(x) * powi(x, abs(n/2))) if c is an integer or when + optimizing for size. + Don't optimize pow(x,c) into powi(x, n/3) * powi(cbrt(x), n%3) or + 1.0 / (powi(x, abs(n)/3) * powi(cbrt(x), abs(n)%3)) if 2c is an + integer. + + PR tree-optimization/56094 + * gimplify.c (force_gimple_operand_1): Temporarily set input_location + to UNKNOWN_LOCATION while gimplifying expr. + +2013-01-27 Uros Bizjak + + PR target/56114 + * config/i386/i386.md (*movabs_1): Add square brackets around + operand 0 in movabs insn template for -masm=intel asm alternative. + (*movabs_2): Ditto for operand 1. + +2013-01-26 David Holsgrove + + PR target/54663 + * config.gcc (microblaze*-linux*): Add tmake_file to allow building + of microblaze-c.o + +2013-01-26 Edgar E. Iglesias + + * config.gcc (microblaze*-*-*): Rename microblaze*-*-elf, update + tm_file. + +2013-01-25 Naveen H.S + + * config/aarch64/aarch64.c (TARGET_FIXED_CONDITION_CODE_REGS): + Undef to avoid warning. + +2013-01-25 Michael Haubenwallner + + * configure.ac (gcc_cv_ld_static_dynamic): Define for AIX native ld. + * configure: Regenerate. + +2013-01-25 Jakub Jelinek + + PR tree-optimization/56098 + * tree-ssa-phiopt.c (nt_init_block): Don't call add_or_mark_expr + for stmts with volatile ops. + (cond_store_replacement): Don't optimize if assign has volatile ops. + (cond_if_else_store_replacement_1): Don't optimize if either + then_assign or else_assign have volatile ops. + (hoist_adjacent_loads): Don't optimize if either def1 or def2 have + volatile ops. + +2013-01-25 Georg-Johann Lay + + * doc/invoke.texi (AVR Built-in Macros): Document __XMEGA__. + +2013-01-25 Georg-Johann Lay + + * doc/extend.texi (Example of asm with clobbered asm reg): Fix + missing ':' in asm example. + +2013-01-25 Tejas Belagod + + * config/aarch64/aarch64-simd-builtins.def: Separate sqdmulh_lane + entries into lane and laneq entries. + * config/aarch64/aarch64-simd.md (aarch64_sqdmulh_lane): + Remove AdvSIMD scalar modes. + (aarch64_sqdmulh_laneq): New. + (aarch64_sqdmulh_lane): New RTL pattern for Scalar AdvSIMD + modes. + * config/aarch64/arm_neon.h: Fix all the vqdmulh_lane* intrinsics' + builtin implementations to relfect changes in RTL in aarch64-simd.md. + * config/aarch64/iterators.md (VCOND): New. + (VCONQ): New. + +2013-01-25 Georg-Johann Lay + + PR target/54222 + * config/avr/builtins.def (DEF_BUILTIN): Add LIBNAME argument. + Add NULL LIBNAME argument to existing definitions. + (ABSHR, ABSR, ABSLR, ABSLLR, ABSHK, ABSK, ABSLK, ABSLLK): New. + * config/avr/avr-c.c (DEF_BUILTIN): Add LIBNAME argument. + * config/avr/avr.c (DEF_BUILTIN): Same. + (avr_init_builtins): Pass down LIBNAME to add_builtin_function. + (avr_expand_builtin): Expand to a vanilla call if a libgcc + implementation is available (DECL_ASSEMBLER_NAME is set). + (avr_fold_absfx): New static function. + (avr_fold_builtin): Use it to handle: AVR_BUILTIN_ABSHR, + AVR_BUILTIN_ABSR, AVR_BUILTIN_ABSLR, AVR_BUILTIN_ABSLLR, + AVR_BUILTIN_ABSHK, AVR_BUILTIN_ABSK, AVR_BUILTIN_ABSLK, + AVR_BUILTIN_ABSLLK. + * config/avr/stdfix.h (abshr, absr, abslr, absllr) + (abshk, absk, abslk, absllk): Provide as static inline functions. + +2013-01-25 Marek Polacek + + PR tree-optimization/56035 + * cfgloopmanip.c (fix_loop_structure): Remove redundant condition. + +2012-01-24 Uros Bizjak + + * config/i386/i386.md (*movti_internal_rex64): Add (o,e) alternative. + (*movtf_internal_rex64): Add (!o,C) alternative + (*movxf_internal_rex64): Ditto. + (*movdf_internal_rex64): Add (?r,C) and (?m,C) alternatives. + +2013-01-24 Shenghou Ma + + * doc/invoke.texi: fix typo. + * doc/objc.texi: fix typo. + +2013-01-24 Richard Sandiford + + * config/mips/mips.md (*and3_mips16): Use the "W" constraint + for the first two alternatives. + +2013-01-24 Diego Novillo + + * Makefile.in (GGC): Remove. Replace all instances with ggc-page.o. + (ggc-zone.o): Remove. + * configure.ac: Remove option --with-gc. + * configure: Re-generate. + * doc/install.texi: Remove documentation for --with-gc. + * gengtype.c (write_enum_defn): Remove. Update all users. + (write_Types_process_field): Remove generation of gt_e_* argument. + (output_type_enum): Remove. Update all users. + (write_enum_defn): Remove. Update all users. + (enum alloc_zone): Remove. Update all users. + (write_splay_tree_allocator_def): Remove generation of gt_e_* argument. + * ggc-common.c (ggc_splay_alloc): Remove first argument. + Update all callers. + (struct ptr_data): Remove field TYPE. Update all users. + (gt_pch_note_object): Remove argument TYPE. Update all users. + * ggc-internal.h (ggc_pch_alloc_object): Remove last argument. + Update all users. + * ggc-none.c (ggc_alloc_typed_stat): Remove. + (struct alloc_zone): Remove. + (ggc_internal_alloc_zone_stat): Remove. + (ggc_internal_cleared_alloc_zone_stat): Remove. + * ggc-page.c (ggc_alloc_typed_stat): Remove. + (ggc_pch_count_object): Remove last argument. Update all users. + (ggc_pch_alloc_object): Remove last argument. Update all users. + (struct alloc_zone): Remove. + * ggc-zone.c: Remove. + * ggc.h (gt_pch_note_object): Remove last argument. Update all users. + (struct alloc_zone): Remove. + (ggc_alloc_typed_stat): Remove. + (ggc_alloc_typed): Remove. + (ggc_splay_alloc): Remove first argument. + (rtl_zone): Remove. Update all users. + (tree_zone): Remove. Update all users. + (tree_id_zone): Remove. Update all users. + (ggc_internal_zone_alloc_stat): Remove. Update all users. + (ggc_internal_zone_cleared_alloc_stat): Remove. Update all users. + (ggc_internal_zone_vec_alloc_stat): Remove. Update all users. + * tree-ssanames.c: Remove references to zone allocator in comments. + +2013-01-24 Georg-Johann Lay + + * config/avr/avr.c (avr_out_fract): Make register numbers that + might be outside of source operand signed. + +2013-01-24 Uros Bizjak + + * config/i386/constraints.md (Yf): New constraint. + * config/i386/i386.md (*movdf_internal_rex64): Use Yf*f instead + of f constraint to conditionaly disable x87 register preferences. + (*movdf_internal): Ditto. + (*movsf_internal): Ditto. + +2013-01-24 Steven Bosscher + + PR inline-asm/55934 + * lra-assigns.c (assign_by_spills): Throw away the pattern of asms + that have operands with impossible constraints. + Add a FIXME for a speed-up opportunity. + * lra-constraints.c (process_alt_operands): Verify that a class + selected from constraints on asms is valid for the operand mode. + (curr_insn_transform): Remove incorrect comment. + +2013-01-23 David Edelsohn + + * config/rs6000/rs6000.c (rs6000_delegitimize_address): Check that + TOC operand is a valid symbol ref in the constant pool. + +2013-01-23 Edgar E. Iglesias + + * config/microblaze/linux.h: Add TARGET_OS_CPP_BUILTINS + +2013-01-23 Georg-Johann Lay + + PR target/54222 + * config/avr/stdfix.h: New file. + * t-avr (stdfix-gcc.h): New rule to build it. + (EXTRA_HEADERS): Set it to install stdfix.h, stdfix-gcc.h. + +2013-01-23 Kostya Serebryany + + * config/darwin.h: remove dependency on + CoreFoundation (asan on Mac OS). + +2013-01-23 Jakub Jelinek + + PR target/49069 + * config/arm/arm.md (cbranchdi4, cstoredi4): Use s_register_operand + instead of cmpdi_operand for first comparison operand. + Don't assert that comparison operands aren't both constants. + +2013-01-22 Jonathan Wakely + + * doc/install.texi (Downloading the Source): Update references to + downloading separate components. + +2013-01-22 Jonathan Wakely + + * doc/extend.texi (__int128): Improve grammar. + +2013-01-22 Uros Bizjak + + PR target/56028 + * config/i386/i386.md (*movti_internal_rex64): Change (o,riF) + alternative to (o,r). + (*movdi_internal_rex64): Remove (!o,n) alternative. + (DImode immediate->memory splitter): Remove. + (DImode immediate->memory peephole2): Remove. + (movtf): Enable for TARGET_64BIT || TARGET_SSE. + (*movtf_internal_rex64): Rename from *movtf_internal. Change (!o,F*r) + alternative to (!o,*r). + (*movtf_internal_sse): New pattern. + (*movxf_internal_rex64): New pattern. + (*movxf_internal): Disable for TARGET_64BIT. + (*movdf_internal_rex64): Remove (!o,F) alternative. + +2013-01-22 Jakub Jelinek + + PR middle-end/56074 + * dumpfile.c (dump_loc): Only print loc if LOCATION_LOCUS (loc) + isn't UNKNOWN_LOCATION nor BUILTINS_LOCATION. + * tree-vect-loop-manip.c (find_loop_location): Also ignore + stmt locations where LOCATION_LOCUS of the stmt location is + UNKNOWN_LOCATION or BUILTINS_LOCATION. + + PR target/55686 + * config/i386/i386.md (UNSPEC_STOS): New. + (strset_singleop, *strsetdi_rex_1, *strsetsi_1, *strsethi_1, + *strsetqi_1): Add UNSPEC_STOS. + +2013-01-22 Paolo Carlini + + PR c++/56067 + * doc/invoke.texi: Remove left over -Wsynth example. + +2013-01-21 Jakub Jelinek + + PR tree-optimization/56051 + * fold-const.c (fold_binary_loc): Don't fold + X < (cast) (1 << Y) into (X >> Y) != 0 if cast is either + a narrowing conversion, or widening conversion from signed + to unsigned. + +2013-01-21 Uros Bizjak + + PR rtl-optimization/56023 + * haifa-sched.c (fix_inter_tick): Do not update ticks of instructions, + dependent on debug instruction. + +2013-01-21 Martin Jambor + + PR middle-end/56022 + * function.c (allocate_struct_function): Call + invoke_set_current_function_hook earlier. + +2013-01-21 Jakub Jelinek + + * reload1.c (init_reload): Only initialize reload_obstack + during the first call. + +2013-01-21 Marek Polacek + + * cfgloop.c (verify_loop_structure): Fix up grammar. + +2013-01-21 Yi-Hsiu Hsu + + * config/arm/marvell-pj4.md (pj4_shift_conds, pj4_alu_shift, + pj4_alu_shift_conds, pj4_shift): Handle simple_alu_shift. + +2013-01-21 Ramana Radhakrishnan + + PR target/56058 + * config/arm/marvell-pj4.md: Update copyright year. + Fix up use of alu to alu_reg and simple_alu_imm. + +2013-01-21 Uros Bizjak + + * config/i386/i386.md (enabled): Do not disable fma4 for TARGET_FMA. + +2013-01-20 Vladimir Makarov + + PR target/55433 + * lra-constraints.c (curr_insn_transform): Don't reuse original + insn for secondary memory move when memory mode should be different. + +2013-01-20 John David Anglin + + * config/pa/pa.md (atomic_loaddi, atomic_loaddi_1, atomic_storedi, + atomic_storedi_1): New patterns. + +2013-01-20 Venkataramanan Kumar + + btver2 pipeline descriptions. + * config/i386/i386.c: Enable CPU_BTVER2 to use btver2 pipeline + descriptions. + * config/i386/i386.md (btver2_decode): New type attributes. + * config/i386/sse.md (btver2_decode, btver2_sse_attr): New + type attributes. + * config/i386/btver2.md: New file describing btver2 pipelines. + +2013-01-19 Andrew Pinski + + PR tree-optimization/52631 + * tree-ssa-sccvn (visit_use): Before looking up the original + statement, try looking up the simplified expression. + +2013-01-19 Anthony Green + + * config/moxie/moxie.c (moxie_expand_prologue): Set + current_function_static_stack_size. + +2013-01-18 Jakub Jelinek + + PR tree-optimization/56029 + * tree-phinodes.c (reserve_phi_args_for_new_edge): Set + gimple_phi_arg_location for the new arg to UNKNOWN_LOCATION. + +2013-01-18 Sharad Singhai + + PR tree-optimization/55995 + * dumpfile.c (dump_loc): Print location only if available. + * tree-vectorizer.c (increase_alignment): Intialize vect_location. + +2013-01-18 Vladimir Makarov + + PR target/55433 + * lra-constraints.c (curr_insn_transform): Reuse original insn for + secondary memory move. + (inherit_reload_reg): Use rclass instead of cl for + check_secondary_memory_needed_p. + +2013-01-18 Jakub Jelinek + + PR middle-end/56015 + * expr.c (expand_expr_real_2) : Handle + the case where writing real complex part of target modifies op1. + +2013-01-18 James Greenhalgh + + * config/aarch64/aarch64-simd.md + (aarch64_vcond_internal): Handle unordered cases. + * config/aarch64/iterators.md (v_cmp_result): New. + +2013-01-18 Yi-Hsiu Hsu + Ramana Radhakrishnan + + * config/arm/marvell-pj4.md: New file. + * config/arm/arm.c (arm_issue_rate): Add marvell_pj4. + * config/arm/arm.md (generic_sched): Add marvell_pj4. + (generic_vfp): Likewise. + * config/arm/arm-cores.def: Add marvell-pj4. + * config/arm/arm-tune.md: Regenerate. + * config/arm/arm-tables.opt: Regenerate. + * config/arm/bpabi.h (BE8_LINK_SPEC): Add marvell_pj4. + * doc/invoke.texi: Document marvell-pj4. + +2013-01-18 Tejas Belagod + + * config/aarch64/arm_neon.h: Map scalar types to standard types. + +2013-01-18 Alexandre Oliva + + PR debug/54114 + PR debug/54402 + PR debug/49888 + * var-tracking.c (negative_power_of_two_p): New. + (global_get_addr_cache, local_get_addr_cache): New. + (get_addr_from_global_cache, get_addr_from_local_cache): New. + (vt_canonicalize_addr): Rewrite using the above. Adjust the + heading comment. + (vt_stack_offset_p): Remove. + (vt_canon_true_dep): Always canonicalize loc's address. + (clobber_overlapping_mems): Make sure we have a MEM. + (local_get_addr_clear_given_value): New. + (val_reset): Clear local cached entries. + (compute_bb_dataflow): Create and release the local cache. + Disable duplicate MEMs clobbering. + (emit_notes_in_bb): Clobber MEMs likewise. + (vt_emit_notes): Create and release the local cache. + (vt_initialize, vt_finalize): Create and release the global + cache, respectively. + * alias.c (rtx_equal_for_memref_p): Compare operands of ENTRY_VALUEs. + +2013-01-18 Alexandre Oliva + + PR libmudflap/53359 + * tree-mudflap.c (mudflap_finish_file): Skip deferred decls + not found in the symtab. + +2013-01-18 Alexandre Oliva + + PR debug/56006 + PR rtl-optimization/55547 + PR rtl-optimization/53827 + PR debug/53671 + PR debug/49888 + * alias.c (offset_overlap_p): New, factored out of... + (memrefs_conflict_p): ... this. Use absolute sizes. Retain + the conservative special case for symbolic constants. Don't + adjust zero sizes on alignment. + +2013-01-18 Bernd Schmidt + + PR rtl-optimization/52573 + * regrename.c (build_def_use): Ignore REG_DEAD notes if there is a + REG_UNUSED for the same register. + +2013-01-17 Richard Biener + Marek Polacek + + PR rtl-optimization/55833 + * loop-unswitch.c (unswitch_loops): Move loop verification... + (unswitch_single_loop): ...here. Call mark_irreducible_loops. + * cfgloopmanip.c (fix_loop_placement): Add IRRED_INVALIDATED parameter. + Set it to true when we're removing a loop from hierarchy tree in + an irreducible region. + (fix_bb_placements): Adjust caller. + (fix_loop_placements): Likewise. + +2013-01-17 Georg-Johann Lay + + * config/avr/builtins.def (DEF_BUILTIN): Factor out + "__builtin_avr_" from NAME, turn NAME to an uppercase identifier. + Factor out 'CODE_FOR_' from ICODE, use 'nothing' instead of '-1'. + Remove ID. Adjust comments. + * config/avr/avr-c.c (avr_builtin_name): Remove. + (avr_cpu_cpp_builtins): Use DEF_BUILTIN instead of for-loop. + * config/avr/avr.c (avr_tolower): New static function. + (DEF_BUILTIN): Remove parameter ID. Prefix ICODE by 'CODE_FOR_'. + Stringify NAME, prefix it with "__builtin_avr_" and lowercase it. + (avr_expand_builtin): Assert insn_code != CODE_FOR_nothing for + default expansion. + +2013-01-17 Jan Hubicka + + PR tree-optimization/55273 + * loop-iv.c (iv_number_of_iterations): Consider zero iteration case. + +2013-01-17 Uros Bizjak + + PR target/55981 + * config/i386/sync.md (atomic_store): Always generate SWImode + store through atomic_store_1. + (atomic_store_1): Macroize insn using SWI mode iterator. + +2013-01-17 Martin Jambor + + PR tree-optimizations/55264 + * ipa-inline-transform.c (can_remove_node_now_p_1): Never return true + for virtual methods. + * ipa.c (symtab_remove_unreachable_nodes): Never return true for + virtual methods before inlining is over. + * cgraph.h (cgraph_only_called_directly_or_aliased_p): Return false for + virtual functions. + * cgraphclones.c (cgraph_create_virtual_clone): Mark clones as + non-virtual. + +2013-01-16 Vladimir Makarov + + PR rtl-optimization/56005 + * sched-deps.c (sched_analyze_2): Check deps->readonly for adding + pending reads for prefetch. + +2013-01-16 Ian Bolton + + * config/aarch64/aarch64.md + (*cstoresi_neg_uxtw): New pattern. + (*cmovsi_insn_uxtw): New pattern. + (*si3_uxtw): New pattern. + (*_si3_uxtw): New pattern. + (*si3_insn_uxtw): New pattern. + (*bswapsi2_uxtw): New pattern. + +2013-01-16 Richard Biener + + * tree-inline.c (tree_function_versioning): Remove set but + never used variable. + +2013-01-16 Richard Biener + + PR tree-optimization/55964 + * tree-flow.h (rename_variables_in_loop): Remove. + (rename_variables_in_bb): Likewise. + * tree-loop-distribution.c (update_phis_for_loop_copy): Remove. + (copy_loop_before): Adjust and delete update-ssa status. + * tree-vect-loop-manip.c (rename_variables_in_bb): Make static. + (rename_variables_in_bb): Likewise. Properly walk over predecessors. + (rename_variables_in_loop): Remove. + (slpeel_update_phis_for_duplicate_loop): Likewise. + (slpeel_tree_duplicate_loop_to_edge_cfg): Handle nested loops, + use available cfg machinery instead of duplicating it. + Update PHI nodes and perform poor-mans SSA update here. + (slpeel_tree_peel_loop_to_edge): Adjust. + +2013-01-16 Richard Biener + + PR tree-optimization/54767 + PR tree-optimization/53465 + * tree-vrp.c (vrp_meet_1): Revert original fix for PR53465. + (vrp_visit_phi_node): For PHI arguments coming via backedges + drop all symbolical range information. + (execute_vrp): Compute backedges. + +2013-01-16 Richard Biener + + * doc/install.texi: Update CLooG and ISL requirements to + 0.18.0 and 0.11.1. + +2013-01-16 Christian Bruel + + PR target/55301 + * config/sh/sh.c (sh_expand_prologue): Postpone new_stack mem symbol. + (broken_move): Handle UNSPECV_SP_SWITCH_B. + * config/sh/sh.md (sp_switch_1): Use set (reg:SI SP_REG). + +2013-01-16 DJ Delorie + + * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New. + (UNSPECV_SP_SWITCH_E): New. + (sp_switch_1): Change to an unspec. + (sp_switch_2): Change to an unspec. Don't use post-inc when we + replace $r15. + +2013-01-16 Uros Bizjak + + * emit-rtl.c (need_atomic_barrier_p): Mask memory model argument + with MEMMODEL_MASK before comparing with MEMMODEL_* memory types. + * optabs.c (maybe_emit_sync_lock_test_and_set): Ditto. + (expand_mem_thread_fence): Ditto. + (expand_mem_signal_fence): Ditto. + (expand_atomic_load): Ditto. + (expand_atomic_store): Ditto. + +2013-01-16 Alexandre Oliva + + PR rtl-optimization/55547 + PR rtl-optimization/53827 + PR debug/53671 + PR debug/49888 + * alias.c (memrefs_conflict_p): Set sizes to negative after + AND adjustments. + +2013-01-15 Jakub Jelinek + + PR target/55940 + * function.c (thread_prologue_and_epilogue_insns): Always + add crtl->drap_reg to set_up_by_prologue.set, even if + stack_realign_drap is false. + +2013-01-15 Jan-Benedict Glaw + + * config/vax/vax.md (add3, sub3, mul3, div3, + and3, *and_const_int, ior3, xor3, ashrsi3, + *call): Fix indention. + +2013-01-15 Tom de Vries + + PR target/55876 + * optabs.c (widen_operand): Use gen_lowpart instead of gen_rtx_SUBREG. + Update comment. + +2013-01-15 Vladimir Makarov + + PR rtl-optimization/55153 + * sched-deps.c (sched_analyze_2): Add pending reads for prefetch. + +2013-01-15 Martin Jambor + + PR tree-optimization/55920 + * tree-sra.c (analyze_access_subtree): Do not mark non-removable + accesses as grp_to_be_debug_replaced. + +2013-01-15 Jakub Jelinek + + PR tree-optimization/55920 + * tree-sra.c (sra_modify_assign): If for lacc->grp_to_be_debug_replaced + there is non-useless type conversion needed from debug rhs to lhs, + use build_debug_ref_for_model and/or VIEW_CONVERT_EXPR. + +2013-01-15 Joseph Myers + Mikael Pettersson + + PR target/43961 + * config/arm/arm.h (ADDR_VEC_ALIGN): Align SImode jump tables for + Thumb. + (ASM_OUTPUT_CASE_LABEL): Remove. + (ASM_OUTPUT_BEFORE_CASE_LABEL): Define to empty. + * final.c (shorten_branches): Update alignment of labels before + jump tables if CASE_VECTOR_SHORTEN_MODE. + +2013-01-15 Richard Biener + + PR bootstrap/55961 + * system.h: Do not include gmp.h for building host tools. + +2013-01-15 Richard Biener + + PR middle-end/55882 + * emit-rtl.c (set_mem_attributes_minus_bitpos): Correctly + account for bitpos when computing alignment. + +2013-01-15 Vladimir Yakovlev + + * config/i386/i386-c.c (ix86_target_macros_internal): New case. + (ix86_target_macros_internal): Likewise. + + * config/i386/i386.c (m_CORE2I7): Removed. + (m_CORE_HASWELL): New macro. + (m_CORE_ALL): Likewise. + (initial_ix86_tune_features): m_CORE2I7 is replaced by m_CORE_ALL. + (initial_ix86_arch_features): Likewise. + (processor_target_table): Initializations for Core avx2. + (cpu_names): New names "core-avx2". + (ix86_option_override_internal): Changed PROCESSOR_COREI7 by + PROCESSOR_CORE_HASWELL. + (ix86_issue_rate): New case. + (ia32_multipass_dfa_lookahead): Likewise. + (ix86_sched_init_global): Likewise. + + * config/i386/i386.h (TARGET_HASWELL): New macro. + (target_cpu_default): New TARGET_CPU_DEFAULT_haswell. + (processor_type): New PROCESSOR_HASWELL. + +2013-01-15 Jakub Jelinek + + PR tree-optimization/55955 + * tree-vect-loop.c (vectorizable_reduction): Give up early on + *SHIFT_EXPR and *ROTATE_EXPR codes. + + PR tree-optimization/48766 + * opts.c (common_handle_option): For -fwrapv disable -ftrapv, for + -ftrapv disable -fwrapv. + +2013-01-14 Georg-Johann Lay + + PR target/55974 + * config/avr/avr-c.c (avr_cpu_cpp_builtins): Define __FLASH + etc. to 1 and not to __flash. + Use LL suffix for __INT24_MAX__ with -mint8. + Use ULL suffix for __UINT24_MAX__ with -mint8. + +2013-01-14 Georg-Johann Lay + + * config/avr/avr-arch.h + (struct base_arch_s): Use typedef avr_arch_t instead. + (struct arch_info_s): Use typedef avr_arch_info_t instead. + (struct mcu_type_s): Use typedef avr_mcu_t instead. + * config/avr/avr.c: Same. + * config/avr/avr-devices.c: Same. + * config/avr/driver-avr.c: Same. + * config/avr/gen-avr-mmcu-texi.c: Same. + * config/avr/avr-mcus.def: Adjust comment. + +2013-01-14 Tejas Belagod + + * config/aarch64/aarch64-simd.md (*aarch64_simd_ld1r): New. + * config/aarch64/iterators.md (VALLDI): New. + +2013-01-14 Uros Bizjak + Andi Kleen + + PR target/55948 + * config/i386/sync.md (atomic_store_1): New pattern. + (atomic_store): Call atomic_store_1 for IX86_HLE_RELEASE + memmodel flag. + +2013-01-14 Georg-Johann Lay + + * config/avr/avr-stdint.h: Remove trailing blanks. + * config/avr/avr-log.h: Same. + * config/avr/avr-arch.h: Same. + * config/avr/avr-devices.c: Same. + * config/avr/avr-dimode.md: Same. + * config/avr/predicates.md: Same. + * config/avr/avr-c.c: Same. And fix typo. + + * config/avr/avr-protos.h: Same. And: + (function_arg_regno_p): Rename to avr_function_arg_regno_p. + (init_cumulative_args): Rename to avr_init_cumulative_args. + (expand_prologue): Rename to avr_expand_prologue. + (expand_epilogue): Rename to avr_expand_epilogue. + (adjust_insn_length): Rename to avr_adjust_insn_length. + (notice_update_cc): Rename to avr_notice_update_cc. + (final_prescan_insn): Rename to avr_final_prescan_insn. + * config/avr/avr.c: Same. + * config/avr/avr.h: Same. + * config/avr/avr.md: Remove trailing blanks. + (prologue): Use avr_expand_prologue. + (epilogue, sibcall_epilogue): Use avr_expand_epilogue. + +2013-01-14 Richard Biener + + * tree-cfg.c (verify_expr_location, verify_expr_location_1, + verify_location, collect_subblocks): New functions. + (verify_gimple_in_cfg): Verify that locations only reference + BLOCKs in the functions BLOCK tree. + +2013-01-14 Richard Biener + + * tree-cfgcleanup.c (remove_forwarder_block): Unshare propagated + PHI argument. + * graphite-sese-to-poly.c (insert_out_of_ssa_copy): Properly + unshare reference. + (insert_out_of_ssa_copy_on_edge): Likewise. + (rewrite_close_phi_out_of_ssa): Likewise. + * tree-ssa.c (insert_debug_temp_for_var_def): Properly unshare + debug expressions. + * tree-ssa-pre.c (insert_into_preds_of_block): Properly unshare + propagated constants. + * tree-cfg.c (tree_node_can_be_shared): Handled component-refs + can not be shared. + +2013-01-14 Georg-Johann Lay + + * config/avr/avr-modes.def: Add GPL copyright notice. + +2013-01-13 Uros Bizjak + + * config/i386/sync.md (mem_thread_fence): Mask operands[0] with + MEMMODEL_MASK to determine memory model. + (atomic_store): Ditto from operands[2]. + * config/i386/i386.c (ix86_memmodel_check): Declare "strong" as bool. + +2013-01-13 Jakub Jelinek + + PR fortran/55935 + * gimple-fold.c (get_symbol_constant_value): Call unshare_expr. + (fold_gimple_assign): Don't call unshare_expr here. + (fold_ctor_reference): Call unshare_expr. + +2013-01-13 Terry Guo + + * Makefile.in (s-mlib): New argument MULTILIB_REUSE. + * doc/fragments.texi: Document MULTILIB_REUSE. + * gcc.c (multilib_reuse): New internal spec. + (set_multilib_dir): Also search multilib from multilib_reuse. + * genmultilib (tmpmultilib3): Refactor code. + (tmpmultilib4): Ditto. + (multilib_reuse): New multilib argument. + +2013-01-13 Richard Sandiford + + * Makefile.in: Update copyright. + +2013-01-12 Tom de Vries + + PR middle-end/55890 + * calls.c (expand_call): Check if arg_nr is valid. + +2013-01-11 Michael Meissner + + * doc/extend.texi (X86 Built-in Functions): Add whitespace in + __builtin_ia32_paddb256 and __builtin_ia32_pavgb256 + documentation. Add missing '__' in front of + __builtin_ia32_packssdw256. + +2013-01-11 Andreas Krebbel + + PR target/55719 + * config/s390/s390.c (s390_preferred_reload_class): Do not return + NO_REGS for larl operands. + (s390_reload_larl_operand): Use s390_load_address instead of + emit_move_insn. + +2013-01-11 Richard Biener + + * tree-cfg.c (verify_node_sharing_1): Split out from ... + (verify_node_sharing): ... here. + (verify_gimple_in_cfg): Use verify_node_sharing_1 for walk_tree. + +2013-01-11 Eric Botcazou + + * configure.ac (Tree checking): Set TREECHECKING to yes if enabled. + Substitute TREECHECKING. + * configure: Regenerate. + * Makefile.in (TREECHECKING): New. + +2013-01-11 Richard Guenther + + PR tree-optimization/44061 + * tree-vrp.c (extract_range_basic): Compute zero as + value-range for __builtin_constant_p of function parameters. + +2013-01-10 Richard Sandiford + + Update copyright years. + +2013-01-10 Vladimir Makarov + + PR rtl-optimization/55672 + * lra-eliminations.c (mark_not_eliminable): Permit addition with + const to be eliminable. + +2013-01-10 David Edelsohn + + * configure.ac (HAVE_AS_TLS): Add check for powerpc-ibm-aix. + * configure: Regenerate. + +2013-01-10 Richard Biener + + * builtins.c (expand_builtin_init_trampoline): Use set_mem_attributes. + +2013-01-10 Richard Biener + + PR bootstrap/55792 + * tree-into-ssa.c (rewrite_add_phi_arguments): Do not set + locations for virtual PHI arguments. + (rewrite_update_phi_arguments): Likewise. + +2013-01-10 Joel Sherrill + + * config/v850/rtems.h (ASM_SPEC): Pass -m8byte-align and -mgcc-abi + on to assembler. + +2013-01-10 Jakub Jelinek + + PR tree-optimization/55921 + * tree-complex.c (expand_complex_asm): New function. + (expand_complex_operations_1): Call it for GIMPLE_ASM. + +2013-01-10 Andreas Krebbel + + PR target/55718 + * config/s390/s390.c (s390_symref_operand_p) + (s390_loadrelative_operand_p): Merge the two functions. + (s390_check_qrst_address, print_operand_address): Add parameters + to s390_loadrelative_operand_p invokation. + (s390_check_symref_alignment): Use s390_loadrelative_operand_p. + (s390_reload_larl_operand, s390_secondary_reload): Use + s390_loadrelative_operand_p instead of s390_symref_operand_p. + (legitimize_pic_address): Handle @GOTENT and @PLT + addend. + +2013-01-09 Mike Stump + + * dse.c (record_store): Remove unnecessary assert. + +2013-01-09 Jan Hubicka + + PR tree-optimization/55569 + * cfgloopmanip.c (scale_loop_profile): Make ITERATION_BOUND gcov_type. + * cfgloop.h (scale_loop_profile): Likewise. + +2013-01-09 Jan Hubicka + + PR lto/45375 + * ipa-inline.c (ipa_inline): Remove extern inlines and virtual + functions. + * cgraphclones.c (cgraph_clone_node): Cpoy also LTO file data. + +2013-01-09 Richard Sandiford + + PR middle-end/55114 + * expr.h (maybe_emit_group_store): Declare. + * expr.c (maybe_emit_group_store): New function. + * builtins.c (expand_builtin_int_roundingfn): Call it. + (expand_builtin_int_roundingfn_2): Likewise. + +2013-01-09 Vladimir Makarov + + PR rtl-optimization/55829 + * lra-constraints.c (match_reload): Add code for absent output. + (curr_insn_transform): Add code for reloads of matched inputs + without output. + +2013-01-09 Uros Bizjak + + * config/i386/sse.md (*vec_interleave_highv2df): Change mode + attribute of movddup insn to DF. + (*vec_interleave_lowv2df): Ditto. + (vec_dupv2df): Ditto. + +2013-01-09 Jan Hubicka + + PR tree-optimiation/55875 + * tree-ssa-loop-niter.c (number_of_iterations_cond): Add + EVERY_ITERATION parameter. + (number_of_iterations_exit): Check if exit is executed every iteration. + (idx_infer_loop_bounds): Similarly here. + (n_of_executions_at_most): Simplify + to only test for cases where statement is dominated by the + particular bound; handle correctly the "postdominance" test. + (scev_probably_wraps_p): Use max loop iterations info + as a global bound first. + +2013-01-09 Nguyen Duy Dat + Nick Clifton + + * config/v850/v850.md (cbranchsf4): New pattern. + (cstoresf4): New pattern. + (cbranchdf4): New pattern. + (cstoredf4): New pattern. + (movsicc): Disallow floating point comparisons. + (cmpsf_le_insn): Fix order of operators. + (cmpsf_lt_insn): Likewise. + (cmpsf_eq_insn): Likewise. + (cmpdf_le_insn): Likewise. + (cmpdf_lt_insn): Likewise. + (cmpdf_eq_insn): Likewise. + (cmpsf_ge_insn): Use LE comparison. + (cmpdf_ge_insn): Likewise. + (cmpsf_gt_insn): Use LT comparison. + (cmpdf_gt_insn): Likewise. + (cmpsf_ne_insn): Delete pattern. + (cmpdf_ne_insn): Delete pattern. + * config/v850/v850.c (v850_gen_float_compare): Use + gen_cmpdf_eq_insn for NE comparison. + (v850_float_z_comparison_operator) + (v850_float_nz_comparison_operator): Move from here ... + * config/v850/predicates.md: ... to here. Move GT and GE + comparisons into v850_float_z_comparison_operator. + * config/v850/v850-protos.h (v850_float_z_comparison_operator): + Delete prototype. + (v850_float_nz_comparison_operator): Likewise. + +2013-01-09 John David Anglin + + * config/pa/pa.c (pa_emit_move_sequence): Replace calls to gen_insv + with calls to gen_insvsi/gen_insvdi. + +2013-01-09 Venkataramanan Kumar + + * config/i386/i386.c (initial_ix86_tune_features): Set up + X86_TUNE_AVX128_OPTIMAL for m_BTVER2. + +2013-01-09 Steven Bosscher + Jakub Jelinek + + PR tree-optimization/48189 + * predict.c (predict_loops): If max is 0, don't call compare_tree_int. + If nitercst is 0, don't predict the exit edge. + +2013-01-08 Naveen H.S + + * config/aarch64/aarch64.c (aarch64_print_operand): Replace %r + in asm_fprintf with reg_names. + (aarch64_print_operand_address): Likewise. + (aarch64_return_addr): Likewise. + * config/aarch64/aarch64.h (ASM_FPRINTF_EXTENSIONS): Remove. + +2013-01-08 John David Anglin + + * config/pa/pa.h (VAL_U6_BITS_P): Define. + (INT_U6_BITS): Likewise. + * config/pa/predicates.md (uint6_operand): New predicate. + (shift5_operand, shift6_operand): Likewise. + * config/pa/pa.md (lshrsi3, rotrsi3): Use shift5_operand instead of + arith32_operand. + (lshrdi3): Use shift6_operand. + (shrpsi4, shrpdi4): New insn patterns. + (extzv): Delete expander. + (extzvsi, extzvdi): New expanders. Use uint5_operand and uint6_operand + predicates in unamed zero extract patterns. Tighten common constraint. + (extv): Delete expander. + (extvsi, extvdi): New expanders. Use uint5_operand and uint6_operand + predicates in unamed sign extract patterns. Tighten common constraint. + (insv): Delete expander. + (insvsi, insvdi): New expanders. Use uint5_operand and uint6_operand + predicates in unamed insert patterns. Tighten common constraint. + Change uint32_operand predicate to uint6_operand predicate in unamed + DImode pattern to insert constant values of type 1...1xxxx. + +2013-01-04 Jan Hubicka + + PR tree-optimization/55823 + * ipa-prop.c (update_indirect_edges_after_inlining): Fix ordering + issue. + +2013-01-08 Jakub Jelinek + Uros Bizjak + + PR rtl-optimization/55845 + * df-problems.c (can_move_insns_across): Stop scanning at + volatile_insn_p source instruction or give up if + across_from .. across_to range contains any volatile_insn_p + instructions. + +2013-01-08 Tejas Belagod + + * config/aarch64/aarch64-simd.md (vec_init): New. + * config/aarch64/aarch64-protos.h (aarch64_expand_vector_init): + Declare. + * config/aarch64/aarch64.c (aarch64_simd_dup_constant, + aarch64_simd_make_constant, aarch64_expand_vector_init): New. + +2013-01-08 Jakub Jelinek + + PR fortran/55341 + * asan.c (asan_clear_shadow): New function. + (asan_emit_stack_protection): Use it. + +2013-01-08 Tejas Belagod + + * config/aarch64/aarch64-simd.md (aarch64_simd_vec_mult_lo_, + aarch64_simd_vec_mult_hi_): Separate instruction and operand + with tab instead of space. + +2013-01-08 Nick Clifton + + * config/rl78/rl78.c (rl78_expand_prologue): Always select + register bank 0 at the start of an interrupt handler. + * config/rl78/rl78.md (mulsi3_g13): Correct values for MDBL and + MDBH registers. + +2013-01-08 James Greenhalgh + + * config/aarch64/aarch64-simd.md + (aarch64_simd_bsl_internal): Add floating-point modes. + (aarch64_simd_bsl): Likewise. + (aarch64_vcond_internal): Likewise. + (vcond): Likewise. + (aarch64_cm): Fix constraints, add new modes. + * config/aarch64/iterators.md (V_cmp_result): Add V2DF. + +2013-01-08 James Greenhalgh + + * config/aarch64/aarch64-builtins.c + (aarch64_builtin_vectorized_function): Handle sqrt, sqrtf. + +2013-01-08 Martin Jambor + + PR debug/55579 + * tree-sra.c (analyze_access_subtree): Return true also after + potentially creating a debug-only replacement. + +2013-01-08 Jakub Jelinek + + PR middle-end/55890 + * tree-ssa-ccp.c (evaluate_stmt): Use gimple_call_builtin_p. + + PR tree-optimization/54120 + * tree-vrp.c (range_fits_type_p): Don't allow + src_precision < precision from signed vr to unsigned_p + if vr->min or vr->max is negative. + (simplify_float_conversion_using_ranges): Test can_float_p + against CODE_FOR_nothing. + +2013-01-08 Jakub Jelinek + Richard Biener + + PR middle-end/55851 + * fold-const.c (int_binop_types_match_p): Allow all INTEGRAL_TYPE_P + types instead of just INTEGER_TYPE types. + +2013-01-07 Mark Kettenis + + * config/i386/openbsdelf.h (LIBGCC2_HAS_TF_MODE, LIBGCC2_TF_CEXT, + TF_SIZE): Define. + +2013-01-07 Steve Ellcey + + PR target/42661 + * config/mips/mips.opt: Change mad to mmad to match documentation. + +2013-01-07 Georg-Johann Lay + + PR target/55897 + * doc/extend.texi (AVR Named Address Spaces): __memx goes into + .progmemx.data now. + +2013-01-07 Georg-Johann Lay + + PR target/55897 + * config/avr/avr.h (ADDR_SPACE_COUNT): New enum. + (avr_addrspace_t): Add .section_name field. + * config/avr/avr.c (progmem_section): Use ADDR_SPACE_COUNT as + array size. + (avr_addrspace): Same. Initialize .section_name. Remove last + NULL entry. Put __memx into .progmemx.data. + (progmem_section_prefix): Remove. + (avr_asm_init_sections): No need to initialize progmem_section. + (avr_asm_named_section): Use avr_addrspace[].section_name to get + section name prefix. + (avr_asm_select_section): Ditto. And use get_unnamed_section to + retrieve the progmem section. + * avr-c.c (avr_cpu_cpp_builtins): Use ADDR_SPACE_COUNT as loop + boundary to run over avr_addrspace[]. + (avr_register_target_pragmas): Ditto. + +2013-01-06 Jakub Jelinek + + * varasm.c (output_constant_def_contents): For asan_protect_global + protected strings, adjust DECL_ALIGN if needed, before testing for + anchored symbols. + (place_block_symbol): Adjust size for asan protected STRING_CSTs if + TREE_CONSTANT_POOL_ADDRESS_P. Increase alignment for asan protected + normal decls. + (output_object_block): For asan protected decls, emit asan padding + after their contents. + * asan.c (asan_protect_global): Don't check TREE_ASM_WRITTEN here. + (asan_finish_file): Test it here instead. + +2013-01-07 Nick Clifton + Matthias Klose + Doug Kwan + H.J. Lu + + PR driver/55470 + * collect2.c (main): Support -fuse-ld=bfd and -fuse-ld=gold. + + * common.opt: Add fuse-ld=bfd and fuse-ld=gold. + + * gcc.c (LINK_COMMAND_SPEC): Pass -fuse-ld=* to collect2. + + * opts.c (comman_handle_option): Ignore -fuse-ld=bfd and -fuse-ld=gold. + + * doc/invoke.texi: Document -fuse-ld=bfd and -fuse-ld=gold. + +2013-01-07 Georg-Johann Lay + + PR target/54461 + * doc/install.texi (Cross-Compiler-Specific Options): Document + --with-avrlibc. + +2013-01-07 Tejas Belagod + + * config/aarch64/arm_neon.h (vmovn_high_is16, vmovn_high_s32, + vmovn_high_s64, vmovn_high_u16, vmovn_high_u32, vmovn_high_u64, + vqmovn_high_s16, vqmovn_high_s32, vqmovn_high_s64, vqmovn_high_u16, + vqmovn_high_u32, vqmovn_high_u64, vqmovun_high_s16, vqmovun_high_s32, + vqmovun_high_s64): Fix source operand number and update copyright. + +2013-01-07 Richard Biener + + PR middle-end/55890 + * gimple.h (gimple_call_builtin_p): New overload. + * gimple.c (validate_call): New function. + (gimple_call_builtin_p): Likewise. + * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): + Use gimple_call_builtin_p. + (find_func_clobbers): Likewise. + * tree-ssa-strlen.c (adjust_last_stmt): Likewise. + (strlen_optimize_stmt): Likewise. + +2013-01-07 James Greenhalgh + + * config/aarch64/arm_neon.h (vld1_dup_*): Make argument const. + (vld1q_dup_*): Likewise. + (vld1_*): Likewise. + (vld1q_*): Likewise. + (vld1_lane_*): Likewise. + (vld1q_lane_*): Likewise. + +2013-01-07 Richard Biener + + * lto-streamer.h (LTO_minor_version): Bump to 2. + +2013-01-07 James Greenhalgh + + * config/aarch64/aarch64-protos.h + (aarch64_const_double_zero_rtx_p): Rename to... + (aarch64_float_const_zero_rtx_p): ...this. + (aarch64_float_const_representable_p): New. + (aarch64_output_simd_mov_immediate): Likewise. + * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Refactor + move immediate case. + * config/aarch64/aarch64.c + (aarch64_const_double_zero_rtx_p): Rename to... + (aarch64_float_const_zero_rtx_p): ...this. + (aarch64_print_operand): Allow printing of new constants. + (aarch64_valid_floating_const): New. + (aarch64_legitimate_constant_p): Check for valid floating-point + constants. + (aarch64_simd_valid_immediate): Likewise. + (aarch64_vect_float_const_representable_p): New. + (aarch64_float_const_representable_p): Likewise. + (aarch64_simd_imm_zero_p): Also allow for floating-point 0.0. + (aarch64_output_simd_mov_immediate): New. + * config/aarch64/aarch64.md (*movsf_aarch64): Add new alternative. + (*movdf_aarch64): Likewise. + * config/aarch64/constraints.md (Ufc): New. + (Y): call aarch64_float_const_zero_rtx. + * config/aarch64/predicates.md (aarch64_fp_compare_operand): New. + +2013-01-07 Richard Biener + + PR tree-optimization/55888 + PR tree-optimization/55862 + * tree-ssa-pre.c (phi_translate_1): Revert previous change. + (valid_in_sets): Check if a NAME has a leader in AVAIL_OUT, + not if it is contained therein. + +2013-01-07 Georg-Johann Lay + + * config/avr/t-avr: Typo. + +2013-01-07 Georg-Johann Lay + + PR55243 + * config/avr/t-avr: Don't automatically rebuild + $(srcdir)/config/avr/t-multilib + $(srcdir)/config/avr/avr-tables.opt + $(srcdir)/doc/avr-mmcu.texi + (avr-mcus): New phony target to build them on request. + (s-avr-mlib, s-avr-mmcu-texi): Remove. + * avr/avr-mcus.def: Adjust comments. + +2013-01-07 Uros Bizjak + + * config/i386/i386.c (DEFAULT_PCC_STRUCT_RETURN): Remove. + +2013-01-06 Richard Sandiford + + * file-find.c, file-find.h, realmpfr.c: Add FSF as copyright holder. + +2013-01-06 Richard Sandiford + + * config/tilepro/gen-mul-tables.cc: Put copyright on one line. + +2013-01-05 David Edelsohn + + * config/rs6000/aix53.h (LIB_SPEC): Add -lpthreads when compiling + to generate profiling. + * config/rs6000/aix64.h (LIB_SPEC): Same. + +2013-01-04 Andrew Pinski + + * config/aarch64/aarch64.c (aarch64_fixed_condition_code_regs): + New function. + (TARGET_FIXED_CONDITION_CODE_REGS): Define. + +2013-01-04 Uros Bizjak + + * config/i386/i386.c (ix86_legitimize_address): Call convert_to_mode + unconditionally. + (ix86_expand_move): Ditto. + (ix86_zero_extend_to_Pmode): Ditto. + (ix86_expand_call): Ditto. + (ix86_expand_special_args_builtin): Ditto. + (ix86_expand_builtin): Ditto. + +2013-01-04 Richard Biener + + PR tree-optimization/55862 + * tree-ssa-pre.c (phi_translate_1): Valueize SSA names after + translating them through PHI nodes. + +2013-01-04 Martin Jambor + + PR tree-optimization/55755 + * tree-sra.c (sra_modify_assign): Do not check that an access has no + children when trying to avoid producing a VIEW_CONVERT_EXPR. + +2013-01-04 Marek Polacek + + PR middle-end/55859 + * opts.c (default_options_optimization): Clarify error message. + +2013-01-04 Richard Biener + + PR middle-end/55863 + * fold-const.c (split_tree): Undo -X - 1 to ~X folding for + reassociation. + +2013-01-03 John David Anglin + + PR target/53789 + * config/pa/pa.md (movsi): Revert previous change. + * config/pa/pa.c (pa_legitimate_constant_p): Reject all TLS symbol + references. + +2013-01-03 Richard Henderson + + * config/i386/i386.c (ix86_expand_move): Always assign to op1 + after eliminating TLS symbols. + +2013-01-03 Marc Glisse + + PR bootstrap/50167 + * graphite-interchange.c (pdr_stride_in_loop): Use gmp_fprintf. + * graphite-poly.c (debug_gmp_value): Likewise. + +2013-01-03 Uros Bizjak + + PR target/55712 + * config/i386/i386-c.c (ix86_target_macros_internal): Depending on + selected code model, define __code_mode_small__, __code_model_medium__, + __code_model_large__, __code_model_32__ or __code_model_kernel__. + * config/i386/cpuid.h (__cpuid, __cpuid_count) [__i386__]: Prefix + xchg temporary register with %k. Declare temporary register as + early clobbered. + [__x86_64__]: For medium and large code models, preserve %rbx register. + +2013-01-03 Richard Biener + + * tree-data-ref.c (dump_conflict_function): Use less vertical spacing. + (dump_subscript): Adjust. + (finalize_ddr_dependent): Do not dump redundant info. + (analyze_siv_subscript): Adjust. + (subscript_dependence_tester): Likewise. + (compute_affine_dependence): Likewise. + +2013-01-03 Richard Biener + + Revert + 2013-01-03 Richard Biener + + PR tree-optimization/55857 + * tree-vect-stmts.c (vectorizable_load): Do not setup + re-alignment for invariant loads. + + 2013-01-02 Richard Biener + + * tree-vect-stmts.c (vectorizable_load): When vectorizing an + invariant load do not generate a vector load from the scalar location. + +2013-01-03 Richard Biener + + * tree-vect-loop.c (vect_analyze_loop_form): Clarify reason + for not vectorizing. + * tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref): Do + not build INDIRECT_REFs, call get_name once only. + (vect_create_data_ref_ptr): Likewise. Dump base object kind + based on DR_BASE_OBJECT, not DR_BASE_ADDRESS. + +2013-01-03 Richard Biener + + PR tree-optimization/55857 + * tree-vect-stmts.c (vectorizable_load): Do not setup + re-alignment for invariant loads. + +2013-01-03 Richard Biener + + PR lto/55848 + * lto-symtab.c (lto_symtab_merge_decls_1): As last resort, always + prefer a built-in decl. + +2013-01-03 Jakub Jelinek + + * gcc.c (process_command): Update copyright notice dates. + * gcov.c (print_version): Likewise. + * gcov-dump.c (print_version): Likewise. + + PR rtl-optimization/55838 + * loop-iv.c (iv_number_of_iterations): Call lowpart_subreg on + iv0.step, iv1.step and step. + +2013-01-03 Jakub Jelinek + Marc Glisse + + PR tree-optimization/55832 + * fold-const.c (fold_binary_loc): For ABS_EXPR >= 0 and + ABS_EXPR < 0 folding use constant_boolean_node instead of + integer_{one,zero}_node. + +2013-01-03 Jakub Jelinek + + PR debug/54402 + * params.def (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE): New param. + * var-tracking.c (reverse_op): Don't add reverse ops to + VALUEs that have already + PARAM_VALUE (PARAM_MAX_VARTRACK_REVERSE_OP_SIZE) or longer locs list. + +2013-01-02 Gerald Pfeifer + + * doc/contrib.texi: Note years as release manager for Mark Mitchell. + +2013-01-02 Teresa Johnson + + * dumpfile.c (dump_loc): Print filename with location. + * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Use + new location_t parameter to emit complete unroll message with + new dump framework. + (canonicalize_loop_induction_variables): Compute loops location + and pass to try_unroll_loop_completely. + * loop-unroll.c (report_unroll_peel): New function. + (peel_loops_completely): Use new dump format with location + for main dumpfile message, and invoke report_unroll_peel on success. + (decide_unrolling_and_peeling): Ditto. + (decide_peel_once_rolling): Remove old dumpfile message subsumed + by report_unroll_peel. + (decide_peel_completely): Ditto. + (decide_unroll_constant_iterations): Ditto. + (decide_unroll_runtime_iterations): Ditto. + (decide_peel_simple): Ditto. + (decide_unroll_stupid): Ditto. + * cfgloop.c (get_loop_location): New function. + * cfgloop.h (get_loop_location): Declare. + +2013-01-02 Sriraman Tallam + + * config/i386/i386.c (fold_builtin_cpu): Remove unnecessary checks for + NULL. + +2013-01-02 John David Anglin + + PR middle-end/55198 + * expr.c (expand_expr_real_1): Don't use bitfield extraction for non + BLKmode objects when EXPAND_MEMORY is specified. + +2013-01-02 Sriraman Tallam + + * config/i386/i386.c (ix86_get_function_versions_dispatcher): Fix bug + in loop predicate. + (fold_builtin_cpu): Do not share cpu model decls across statements. + +2013-01-02 Jason Merrill + + PR c++/55804 + * tree.c (build_array_type_1): Revert earlier change. + +2013-01-02 Yufeng Zhang + + * config/aarch64/aarch64-cores.def: Add entries for "cortex-a53" and + "cortex-a57". + * config/aarch64/aarch64-tune.md: Re-generate. + +2013-01-02 Richard Biener + + * tree-vect-stmts.c (vectorizable_load): When vectorizing an + invariant load do not generate a vector load from the scalar location. + +2013-01-02 Richard Biener + + PR bootstrap/55784 + * configure.ac: Add $GMPINC to CFLAGS/CXXFLAGS. + * configure: Regenerate. + +2013-01-02 Richard Sandiford + + * builtins.c (expand_builtin_mathfn, expand_builtin_mathfn_2) + (expand_builtin_mathfn_ternary, expand_builtin_mathfn_3) + (expand_builtin_int_roundingfn_2): Keep the original target around + for the fallback case. + +2013-01-02 Richard Sandiford + + * tree-vrp.c (range_fits_type_p): Require the MSB of the double_int + to be clear for sign changes. + +2013-01-01 Jan Hubicka + + * ipa-inline-analysis.c: Fix formatting. + +2013-01-01 Jakub Jelinek + + PR tree-optimization/55831 + * tree-vect-loop.c (get_initial_def_for_induction): Use + gsi_after_labels instead of gsi_start_bb. + +Copyright (C) 2013 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/cse.c b/gcc/cse.c index 0e28f487296..a58e7e9e8e9 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -6090,6 +6090,18 @@ cse_process_notes_1 (rtx x, rtx object, bool *changed) return x; } + case UNSIGNED_FLOAT: + { + rtx new_rtx = cse_process_notes (XEXP (x, 0), object, changed); + /* We don't substitute negative VOIDmode constants into these rtx, + since they would impede folding. */ + if (GET_MODE (new_rtx) != VOIDmode + || (CONST_INT_P (new_rtx) && INTVAL (new_rtx) >= 0) + || (CONST_DOUBLE_P (new_rtx) && CONST_DOUBLE_HIGH (new_rtx) >= 0)) + validate_change (object, &XEXP (x, 0), new_rtx, 0); + return x; + } + case REG: i = REG_QTY (REGNO (x)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 74c81798075..24b4161ae15 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,12403 +1,7 @@ -2013-12-31 Jakub Jelinek +2014-01-01 Jakub Jelinek - PR tree-optimization/59622 - * g++.dg/opt/pr59622.C: New test. - -2013-12-31 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * gcc.target/i386/avx-1.c: Update for AVX-512 scalar insns. - * gcc.target/i386/avx512f-vaddsd-1.c: New. - * gcc.target/i386/avx512f-vaddss-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto. - * gcc.target/i386/avx512f-vdivsd-1.c: Ditto. - * gcc.target/i386/avx512f-vdivss-1.c: Ditto. - * gcc.target/i386/avx512f-vextractf32x4-2.c: Ditto. - * gcc.target/i386/avx512f-vextracti32x4-2.c: Ditto. - * gcc.target/i386/avx512f-vfmaddXXXsd-1.c: Ditto. - * gcc.target/i386/avx512f-vfmaddXXXss-1.c: Ditto. - * gcc.target/i386/avx512f-vfmsubXXXsd-1.c: Ditto. - * gcc.target/i386/avx512f-vfmsubXXXss-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmaddXXXsd-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmaddXXXss-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmsubXXXsd-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmsubXXXss-1.c: Ditto. - * gcc.target/i386/avx512f-vgetexpsd-1.c: Ditto. - * gcc.target/i386/avx512f-vgetexpsd-2.c: Ditto. - * gcc.target/i386/avx512f-vgetexpss-1.c: Ditto. - * gcc.target/i386/avx512f-vgetexpss-2.c: Ditto. - * gcc.target/i386/avx512f-vgetmantsd-1.c: Ditto. - * gcc.target/i386/avx512f-vgetmantsd-2.c: Ditto. - * gcc.target/i386/avx512f-vgetmantss-1.c: Ditto. - * gcc.target/i386/avx512f-vgetmantss-2.c: Ditto. - * gcc.target/i386/avx512f-vmaxsd-1.c: Ditto. - * gcc.target/i386/avx512f-vmaxss-1.c: Ditto. - * gcc.target/i386/avx512f-vminsd-1.c: Ditto. - * gcc.target/i386/avx512f-vminss-1.c: Ditto. - * gcc.target/i386/avx512f-vmulsd-1.c: Ditto. - * gcc.target/i386/avx512f-vmulss-1.c: Ditto. - * gcc.target/i386/avx512f-vrcp14sd-1.c: Ditto. - * gcc.target/i386/avx512f-vrcp14sd-2.c: Ditto. - * gcc.target/i386/avx512f-vrcp14ss-1.c: Ditto. - * gcc.target/i386/avx512f-vrcp14ss-2.c: Ditto. - * gcc.target/i386/avx512f-vrndscalesd-1.c: Ditto. - * gcc.target/i386/avx512f-vrndscalesd-2.c: Ditto. - * gcc.target/i386/avx512f-vrndscaless-1.c: Ditto. - * gcc.target/i386/avx512f-vrndscaless-2.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14sd-1.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14sd-2.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14ss-1.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14ss-2.c: Ditto. - * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto. - * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto. - * gcc.target/i386/avx512f-vscalefss-1.c: Ditto. - * gcc.target/i386/avx512f-vscalefss-2.c: Ditto. - * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto. - * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto. - * gcc.target/i386/avx512f-vsubsd-1.c: Ditto. - * gcc.target/i386/avx512f-vsubss-1.c: Ditto. - * gcc.target/i386/sse-14.c: Update for AVX-512 scalar insns. - * gcc.target/i386/sse-23.c: Ditto. - * gcc.target/i386/testimm-10.c: Ditto. - -2013-12-31 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * gcc.target/i386/avx-1.c: Add define for __builtin_ia32_sha1rnds4. - * gcc.target/i386/i386.exp (check_effective_target_sha): New. - * gcc.target/i386/sha-check.h: New file. - * gcc.target/i386/sha1msg1-1.c: Ditto. - * gcc.target/i386/sha1msg1-2.c: Ditto. - * gcc.target/i386/sha1msg2-1.c: Ditto. - * gcc.target/i386/sha1msg2-2.c: Ditto. - * gcc.target/i386/sha1nexte-1: Ditto. - * gcc.target/i386/sha1nexte-2: Ditto. - * gcc.target/i386/sha1rnds4-1.c: Ditto. - * gcc.target/i386/sha1rnds4-2.c: Ditto. - * gcc.target/i386/sha256msg1-1.c: Ditto. - * gcc.target/i386/sha256msg1-2.c: Ditto. - * gcc.target/i386/sha256msg2-1.c: Ditto. - * gcc.target/i386/sha256msg2-2.c: Ditto. - * gcc.target/i386/sha256rnds2-1.c: Ditto. - * gcc.target/i386/sha256rnds2-2.c: Ditto. - * gcc.target/i386/sse-13.c: Add __builtin_ia32_sha1rnds4. - * gcc.target/i386/sse-14.c: Add _mm_sha1rnds4_epu32. - * gcc.target/i386/sse-22.c: Ditto. - * gcc.target/i386/sse-23.c: Add __builtin_ia32_sha1rnds4. - -2013-12-31 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * gcc.target/i386/avx512cd-check.h: New file. - * gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c: Ditto. - * gcc.target/i386/avx512cd-vpbroadcastmb2q-2.c: Ditto. - * gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c: Ditto. - * gcc.target/i386/avx512cd-vpbroadcastmw2d-2.c: Ditto. - * gcc.target/i386/avx512cd-vpconflictd-1.c: Ditto. - * gcc.target/i386/avx512cd-vpconflictd-2.c: Ditto. - * gcc.target/i386/avx512cd-vpconflictq-1.c: Ditto. - * gcc.target/i386/avx512cd-vpconflictq-2.c: Ditto. - * gcc.target/i386/avx512cd-vplzcntd-1.c: Ditto. - * gcc.target/i386/avx512cd-vplzcntd-2.c: Ditto. - * gcc.target/i386/avx512cd-vplzcntq-1.c: Ditto. - * gcc.target/i386/avx512cd-vplzcntq-2.c: Ditto. - * gcc.target/i386/avx512cd-vptestnmd-1.c: Ditto. - * gcc.target/i386/avx512cd-vptestnmd-2.c: Ditto. - * gcc.target/i386/avx512cd-vptestnmq-1.c: Ditto. - * gcc.target/i386/avx512cd-vptestnmq-2.c: Ditto. - * gcc.target/i386/avx512er-vexp2pd-1.c: Ditto. - * gcc.target/i386/avx512er-vexp2pd-2.c: Ditto. - * gcc.target/i386/avx512er-vexp2ps-1.c: Ditto. - * gcc.target/i386/avx512er-vexp2ps-2.c: Ditto. - * gcc.target/i386/avx512er-vrcp28pd-1.c: Ditto. - * gcc.target/i386/avx512er-vrcp28pd-2.c: Ditto. - * gcc.target/i386/avx512er-vrcp28ps-1.c: Ditto. - * gcc.target/i386/avx512er-vrcp28ps-2.c: Ditto. - * gcc.target/i386/avx512er-vrsqrt28pd-1.c: Ditto. - * gcc.target/i386/avx512er-vrsqrt28pd-2.c: Ditto. - * gcc.target/i386/avx512er-vrsqrt28ps-1.c: Ditto. - * gcc.target/i386/avx512er-vrsqrt28ps-2.c: Ditto. - * gcc.target/i386/avx512f-broadcast-gpr-1.c: Ditto. - * gcc.target/i386/avx512f-broadcast-gpr-2.c: Ditto. - * gcc.target/i386/avx512f-ceil-sfix-vec-1.c: Ditto. - * gcc.target/i386/avx512f-ceil-sfix-vec-2.c: Ditto. - * gcc.target/i386/avx512f-dummy.c: Ditto. - * gcc.target/i386/avx512f-floor-sfix-vec-1.c: Ditto. - * gcc.target/i386/avx512f-floor-sfix-vec-2.c: Ditto. - * gcc.target/i386/avx512f-gather-1.c: Ditto. - * gcc.target/i386/avx512f-gather-2.c: Ditto. - * gcc.target/i386/avx512f-gather-3.c: Ditto. - * gcc.target/i386/avx512f-gather-4.c: Ditto. - * gcc.target/i386/avx512f-gather-5.c: Ditto. - * gcc.target/i386/avx512f-i32gatherd512-1.c: Ditto. - * gcc.target/i386/avx512f-i32gatherd512-2.c: Ditto. - * gcc.target/i386/avx512f-i32gatherpd512-1.c: Ditto. - * gcc.target/i386/avx512f-i32gatherpd512-2.c: Ditto. - * gcc.target/i386/avx512f-i32gatherps512-1.c: Ditto. - * gcc.target/i386/avx512f-i32gatherps512-2.c: Ditto. - * gcc.target/i386/avx512f-i32gatherq512-1.c: Ditto. - * gcc.target/i386/avx512f-i32gatherq512-2.c: Ditto. - * gcc.target/i386/avx512f-i32scatterd512-1.c: Ditto. - * gcc.target/i386/avx512f-i32scatterd512-2.c: Ditto. - * gcc.target/i386/avx512f-i32scatterpd512-1.c: Ditto. - * gcc.target/i386/avx512f-i32scatterpd512-2.c: Ditto. - * gcc.target/i386/avx512f-i32scatterps512-1.c: Ditto. - * gcc.target/i386/avx512f-i32scatterps512-2.c: Ditto. - * gcc.target/i386/avx512f-i32scatterq512-1.c: Ditto. - * gcc.target/i386/avx512f-i32scatterq512-2.c: Ditto. - * gcc.target/i386/avx512f-i64gatherd512-1.c: Ditto. - * gcc.target/i386/avx512f-i64gatherd512-2.c: Ditto. - * gcc.target/i386/avx512f-i64gatherpd512-1.c: Ditto. - * gcc.target/i386/avx512f-i64gatherpd512-2.c: Ditto. - * gcc.target/i386/avx512f-i64gatherps512-1.c: Ditto. - * gcc.target/i386/avx512f-i64gatherps512-2.c: Ditto. - * gcc.target/i386/avx512f-i64gatherq512-1.c: Ditto. - * gcc.target/i386/avx512f-i64gatherq512-2.c: Ditto. - * gcc.target/i386/avx512f-i64scatterd512-1.c: Ditto. - * gcc.target/i386/avx512f-i64scatterd512-2.c: Ditto. - * gcc.target/i386/avx512f-i64scatterpd512-1.c: Ditto. - * gcc.target/i386/avx512f-i64scatterpd512-2.c: Ditto. - * gcc.target/i386/avx512f-i64scatterps512-1.c: Ditto. - * gcc.target/i386/avx512f-i64scatterps512-2.c: Ditto. - * gcc.target/i386/avx512f-i64scatterq512-1.c: Ditto. - * gcc.target/i386/avx512f-i64scatterq512-2.c: Ditto. - * gcc.target/i386/avx512f-inline-asm.c: Ditto. - * gcc.target/i386/avx512f-kandnw-1.c: Ditto. - * gcc.target/i386/avx512f-kandw-1.c: Ditto. - * gcc.target/i386/avx512f-klogic-2.c: Ditto. - * gcc.target/i386/avx512f-knotw-1.c: Ditto. - * gcc.target/i386/avx512f-kortestw-1.c: Ditto. - * gcc.target/i386/avx512f-kortestw-2.c: Ditto. - * gcc.target/i386/avx512f-korw-1.c: Ditto. - * gcc.target/i386/avx512f-kunpckbw-1.c: Ditto. - * gcc.target/i386/avx512f-kxnorw-1.c: Ditto. - * gcc.target/i386/avx512f-kxorw-1.c: Ditto. - * gcc.target/i386/avx512f-rounding.c: Ditto. - * gcc.target/i386/avx512f-set-v16sf-1.c: Ditto. - * gcc.target/i386/avx512f-set-v16sf-2.c: Ditto. - * gcc.target/i386/avx512f-set-v16sf-3.c: Ditto. - * gcc.target/i386/avx512f-set-v16sf-4.c: Ditto. - * gcc.target/i386/avx512f-set-v16sf-5.c: Ditto. - * gcc.target/i386/avx512f-set-v16si-1.c: Ditto. - * gcc.target/i386/avx512f-set-v16si-2.c: Ditto. - * gcc.target/i386/avx512f-set-v16si-3.c: Ditto. - * gcc.target/i386/avx512f-set-v16si-4.c: Ditto. - * gcc.target/i386/avx512f-set-v16si-5.c: Ditto. - * gcc.target/i386/avx512f-set-v8df-1.c: Ditto. - * gcc.target/i386/avx512f-set-v8df-2.c: Ditto. - * gcc.target/i386/avx512f-set-v8df-3.c: Ditto. - * gcc.target/i386/avx512f-set-v8df-4.c: Ditto. - * gcc.target/i386/avx512f-set-v8df-5.c: Ditto. - * gcc.target/i386/avx512f-set-v8di-1.c: Ditto. - * gcc.target/i386/avx512f-set-v8di-2.c: Ditto. - * gcc.target/i386/avx512f-set-v8di-3.c: Ditto. - * gcc.target/i386/avx512f-set-v8di-4.c: Ditto. - * gcc.target/i386/avx512f-set-v8di-5.c: Ditto. - * gcc.target/i386/avx512f-setzero-pd-1.c: Ditto. - * gcc.target/i386/avx512f-setzero-ps-1.c: Ditto. - * gcc.target/i386/avx512f-setzero-si512-1.c: Ditto. - * gcc.target/i386/avx512f-vaddpd-1.c: Ditto. - * gcc.target/i386/avx512f-vaddpd-2.c: Ditto. - * gcc.target/i386/avx512f-vaddps-1.c: Ditto. - * gcc.target/i386/avx512f-vaddps-2.c: Ditto. - * gcc.target/i386/avx512f-vaddsd-1.c: Ditto. - * gcc.target/i386/avx512f-vaddsd-2.c: Ditto. - * gcc.target/i386/avx512f-vaddss-1.c: Ditto. - * gcc.target/i386/avx512f-vaddss-2.c: Ditto. - * gcc.target/i386/avx512f-valignd-1.c: Ditto. - * gcc.target/i386/avx512f-valignd-2.c: Ditto. - * gcc.target/i386/avx512f-valignq-1.c: Ditto. - * gcc.target/i386/avx512f-valignq-2.c: Ditto. - * gcc.target/i386/avx512f-vblendmpd-1.c: Ditto. - * gcc.target/i386/avx512f-vblendmpd-2.c: Ditto. - * gcc.target/i386/avx512f-vblendmps-1.c: Ditto. - * gcc.target/i386/avx512f-vblendmps-2.c: Ditto. - * gcc.target/i386/avx512f-vbroadcastf32x4-1.c: Ditto. - * gcc.target/i386/avx512f-vbroadcastf32x4-2.c: Ditto. - * gcc.target/i386/avx512f-vbroadcastf64x4-1.c: Ditto. - * gcc.target/i386/avx512f-vbroadcastf64x4-2.c: Ditto. - * gcc.target/i386/avx512f-vbroadcasti32x4-1.c: Ditto. - * gcc.target/i386/avx512f-vbroadcasti32x4-2.c: Ditto. - * gcc.target/i386/avx512f-vbroadcasti64x4-1.c: Ditto. - * gcc.target/i386/avx512f-vbroadcasti64x4-2.c: Ditto. - * gcc.target/i386/avx512f-vbroadcastsd-1.c: Ditto. - * gcc.target/i386/avx512f-vbroadcastsd-2.c: Ditto. - * gcc.target/i386/avx512f-vbroadcastss-1.c: Ditto. - * gcc.target/i386/avx512f-vbroadcastss-2.c: Ditto. - * gcc.target/i386/avx512f-vcmppd-1.c: Ditto. - * gcc.target/i386/avx512f-vcmppd-2.c: Ditto. - * gcc.target/i386/avx512f-vcmpps-1.c: Ditto. - * gcc.target/i386/avx512f-vcmpps-2.c: Ditto. - * gcc.target/i386/avx512f-vcmpsd-1.c: Ditto. - * gcc.target/i386/avx512f-vcmpsd-2.c: Ditto. - * gcc.target/i386/avx512f-vcmpss-1.c: Ditto. - * gcc.target/i386/avx512f-vcmpss-2.c: Ditto. - * gcc.target/i386/avx512f-vcomisd-1.c: Ditto. - * gcc.target/i386/avx512f-vcomiss-1.c: Ditto. - * gcc.target/i386/avx512f-vcompresspd-1.c: Ditto. - * gcc.target/i386/avx512f-vcompresspd-2.c: Ditto. - * gcc.target/i386/avx512f-vcompressps-1.c: Ditto. - * gcc.target/i386/avx512f-vcompressps-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtdq2pd-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtdq2pd-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtdq2ps-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtdq2ps-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtpd2dq-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtpd2dq-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtpd2ps-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtpd2ps-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtpd2udq-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtpd2udq-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtph2ps-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtph2ps-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtps2dq-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtps2dq-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtps2pd-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtps2pd-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtps2ph-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtps2ph-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtps2udq-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtps2udq-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtsd2si-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtsd2si64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtsd2ss-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtsd2usi-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtsd2usi-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtsd2usi64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtsd2usi64-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtsi2ss-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtss2sd-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtss2si-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtss2si64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtss2usi-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtss2usi-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtss2usi64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtss2usi64-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttpd2dq-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttpd2dq-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttpd2udq-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttpd2udq-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttps2dq-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttps2dq-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttps2udq-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttps2udq-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttsd2si-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttsd2si-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttsd2si64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttsd2si64-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttsd2usi-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttsd2usi-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttsd2usi64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttsd2usi64-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttss2si-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttss2si-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttss2si64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttss2si64-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttss2usi-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttss2usi-2.c: Ditto. - * gcc.target/i386/avx512f-vcvttss2usi64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvttss2usi64-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtudq2pd-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtudq2pd-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtudq2ps-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtudq2ps-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtusi2sd-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtusi2sd-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtusi2sd64-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtusi2ss-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtusi2ss-2.c: Ditto. - * gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Ditto. - * gcc.target/i386/avx512f-vcvtusi2ss64-2.c: Ditto. - * gcc.target/i386/avx512f-vdivpd-1.c: Ditto. - * gcc.target/i386/avx512f-vdivpd-2.c: Ditto. - * gcc.target/i386/avx512f-vdivps-1.c: Ditto. - * gcc.target/i386/avx512f-vdivps-2.c: Ditto. - * gcc.target/i386/avx512f-vdivsd-1.c: Ditto. - * gcc.target/i386/avx512f-vdivsd-2.c: Ditto. - * gcc.target/i386/avx512f-vdivss-1.c: Ditto. - * gcc.target/i386/avx512f-vdivss-2.c: Ditto. - * gcc.target/i386/avx512f-vec-init.c: Ditto. - * gcc.target/i386/avx512f-vec-unpack.c: Ditto. - * gcc.target/i386/avx512f-vexpandpd-1.c: Ditto. - * gcc.target/i386/avx512f-vexpandpd-2.c: Ditto. - * gcc.target/i386/avx512f-vexpandps-1.c: Ditto. - * gcc.target/i386/avx512f-vexpandps-2.c: Ditto. - * gcc.target/i386/avx512f-vextractf32x4-1.c: Ditto. - * gcc.target/i386/avx512f-vextractf32x4-2.c: Ditto. - * gcc.target/i386/avx512f-vextractf64x4-1.c: Ditto. - * gcc.target/i386/avx512f-vextractf64x4-2.c: Ditto. - * gcc.target/i386/avx512f-vextracti32x4-1.c: Ditto. - * gcc.target/i386/avx512f-vextracti32x4-2.c: Ditto. - * gcc.target/i386/avx512f-vextracti64x4-1.c: Ditto. - * gcc.target/i386/avx512f-vextracti64x4-2.c: Ditto. - * gcc.target/i386/avx512f-vfixupimmpd-1.c: Ditto. - * gcc.target/i386/avx512f-vfixupimmpd-2.c: Ditto. - * gcc.target/i386/avx512f-vfixupimmps-1.c: Ditto. - * gcc.target/i386/avx512f-vfixupimmps-2.c: Ditto. - * gcc.target/i386/avx512f-vfixupimmsd-1.c: Ditto. - * gcc.target/i386/avx512f-vfixupimmsd-2.c: Ditto. - * gcc.target/i386/avx512f-vfixupimmss-1.c: Ditto. - * gcc.target/i386/avx512f-vfixupimmss-2.c: Ditto. - * gcc.target/i386/avx512f-vfmaddXXXpd-1.c: Ditto. - * gcc.target/i386/avx512f-vfmaddXXXpd-2.c: Ditto. - * gcc.target/i386/avx512f-vfmaddXXXps-1.c: Ditto. - * gcc.target/i386/avx512f-vfmaddXXXps-2.c: Ditto. - * gcc.target/i386/avx512f-vfmaddXXXsd-1.c: Ditto. - * gcc.target/i386/avx512f-vfmaddXXXsd-2.c: Ditto. - * gcc.target/i386/avx512f-vfmaddXXXss-1.c: Ditto. - * gcc.target/i386/avx512f-vfmaddXXXss-2.c: Ditto. - * gcc.target/i386/avx512f-vfmaddsubXXXpd-1.c: Ditto. - * gcc.target/i386/avx512f-vfmaddsubXXXpd-2.c: Ditto. - * gcc.target/i386/avx512f-vfmaddsubXXXps-1.c: Ditto. - * gcc.target/i386/avx512f-vfmaddsubXXXps-2.c: Ditto. - * gcc.target/i386/avx512f-vfmsubXXXpd-1.c: Ditto. - * gcc.target/i386/avx512f-vfmsubXXXpd-2.c: Ditto. - * gcc.target/i386/avx512f-vfmsubXXXps-1.c: Ditto. - * gcc.target/i386/avx512f-vfmsubXXXps-2.c: Ditto. - * gcc.target/i386/avx512f-vfmsubXXXsd-1.c: Ditto. - * gcc.target/i386/avx512f-vfmsubXXXsd-2.c: Ditto. - * gcc.target/i386/avx512f-vfmsubXXXss-1.c: Ditto. - * gcc.target/i386/avx512f-vfmsubXXXss-2.c: Ditto. - * gcc.target/i386/avx512f-vfmsubaddXXXpd-1.c: Ditto. - * gcc.target/i386/avx512f-vfmsubaddXXXpd-2.c: Ditto. - * gcc.target/i386/avx512f-vfmsubaddXXXps-1.c: Ditto. - * gcc.target/i386/avx512f-vfmsubaddXXXps-2.c: Ditto. - * gcc.target/i386/avx512f-vfnmaddXXXpd-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmaddXXXpd-2.c: Ditto. - * gcc.target/i386/avx512f-vfnmaddXXXps-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmaddXXXps-2.c: Ditto. - * gcc.target/i386/avx512f-vfnmaddXXXsd-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmaddXXXsd-2.c: Ditto. - * gcc.target/i386/avx512f-vfnmaddXXXss-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmaddXXXss-2.c: Ditto. - * gcc.target/i386/avx512f-vfnmsubXXXpd-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmsubXXXpd-2.c: Ditto. - * gcc.target/i386/avx512f-vfnmsubXXXps-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmsubXXXps-2.c: Ditto. - * gcc.target/i386/avx512f-vfnmsubXXXsd-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmsubXXXsd-2.c: Ditto. - * gcc.target/i386/avx512f-vfnmsubXXXss-1.c: Ditto. - * gcc.target/i386/avx512f-vfnmsubXXXss-2.c: Ditto. - * gcc.target/i386/avx512f-vgetexppd-1.c: Ditto. - * gcc.target/i386/avx512f-vgetexppd-2.c: Ditto. - * gcc.target/i386/avx512f-vgetexpps-1.c: Ditto. - * gcc.target/i386/avx512f-vgetexpps-2.c: Ditto. - * gcc.target/i386/avx512f-vgetexpsd-1.c: Ditto. - * gcc.target/i386/avx512f-vgetexpsd-2.c: Ditto. - * gcc.target/i386/avx512f-vgetexpss-1.c: Ditto. - * gcc.target/i386/avx512f-vgetexpss-2.c: Ditto. - * gcc.target/i386/avx512f-vgetmantpd-1.c: Ditto. - * gcc.target/i386/avx512f-vgetmantpd-2.c: Ditto. - * gcc.target/i386/avx512f-vgetmantps-1.c: Ditto. - * gcc.target/i386/avx512f-vgetmantps-2.c: Ditto. - * gcc.target/i386/avx512f-vgetmantsd-1.c: Ditto. - * gcc.target/i386/avx512f-vgetmantsd-2.c: Ditto. - * gcc.target/i386/avx512f-vgetmantss-1.c: Ditto. - * gcc.target/i386/avx512f-vgetmantss-2.c: Ditto. - * gcc.target/i386/avx512f-vinsertf32x4-1.c: Ditto. - * gcc.target/i386/avx512f-vinsertf32x4-2.c: Ditto. - * gcc.target/i386/avx512f-vinsertf64x4-1.c: Ditto. - * gcc.target/i386/avx512f-vinsertf64x4-2.c: Ditto. - * gcc.target/i386/avx512f-vinserti32x4-1.c: Ditto. - * gcc.target/i386/avx512f-vinserti32x4-2.c: Ditto. - * gcc.target/i386/avx512f-vinserti64x4-1.c: Ditto. - * gcc.target/i386/avx512f-vinserti64x4-2.c: Ditto. - * gcc.target/i386/avx512f-vmaxpd-1.c: Ditto. - * gcc.target/i386/avx512f-vmaxpd-2.c: Ditto. - * gcc.target/i386/avx512f-vmaxps-1.c: Ditto. - * gcc.target/i386/avx512f-vmaxps-2.c: Ditto. - * gcc.target/i386/avx512f-vmaxsd-1.c: Ditto. - * gcc.target/i386/avx512f-vmaxsd-2.c: Ditto. - * gcc.target/i386/avx512f-vmaxss-1.c: Ditto. - * gcc.target/i386/avx512f-vmaxss-2.c: Ditto. - * gcc.target/i386/avx512f-vminpd-1.c: Ditto. - * gcc.target/i386/avx512f-vminpd-2.c: Ditto. - * gcc.target/i386/avx512f-vminps-1.c: Ditto. - * gcc.target/i386/avx512f-vminps-2.c: Ditto. - * gcc.target/i386/avx512f-vminsd-1.c: Ditto. - * gcc.target/i386/avx512f-vminsd-2.c: Ditto. - * gcc.target/i386/avx512f-vminss-1.c: Ditto. - * gcc.target/i386/avx512f-vminss-2.c: Ditto. - * gcc.target/i386/avx512f-vmovapd-1.c: Ditto. - * gcc.target/i386/avx512f-vmovapd-2.c: Ditto. - * gcc.target/i386/avx512f-vmovaps-1.c: Ditto. - * gcc.target/i386/avx512f-vmovaps-2.c: Ditto. - * gcc.target/i386/avx512f-vmovddup-1.c: Ditto. - * gcc.target/i386/avx512f-vmovddup-2.c: Ditto. - * gcc.target/i386/avx512f-vmovdqa32-1.c: Ditto. - * gcc.target/i386/avx512f-vmovdqa32-2.c: Ditto. - * gcc.target/i386/avx512f-vmovdqa64-1.c: Ditto. - * gcc.target/i386/avx512f-vmovdqa64-2.c: Ditto. - * gcc.target/i386/avx512f-vmovdqu32-1.c: Ditto. - * gcc.target/i386/avx512f-vmovdqu32-2.c: Ditto. - * gcc.target/i386/avx512f-vmovdqu64-1.c: Ditto. - * gcc.target/i386/avx512f-vmovdqu64-2.c: Ditto. - * gcc.target/i386/avx512f-vmovntdq-1.c: Ditto. - * gcc.target/i386/avx512f-vmovntdq-2.c: Ditto. - * gcc.target/i386/avx512f-vmovntpd-1.c: Ditto. - * gcc.target/i386/avx512f-vmovntpd-2.c: Ditto. - * gcc.target/i386/avx512f-vmovntps-1.c: Ditto. - * gcc.target/i386/avx512f-vmovntps-2.c: Ditto. - * gcc.target/i386/avx512f-vmovsd-1.c: Ditto. - * gcc.target/i386/avx512f-vmovsd-2.c: Ditto. - * gcc.target/i386/avx512f-vmovshdup-1.c: Ditto. - * gcc.target/i386/avx512f-vmovshdup-2.c: Ditto. - * gcc.target/i386/avx512f-vmovsldup-1.c: Ditto. - * gcc.target/i386/avx512f-vmovsldup-2.c: Ditto. - * gcc.target/i386/avx512f-vmovss-1.c: Ditto. - * gcc.target/i386/avx512f-vmovss-2.c: Ditto. - * gcc.target/i386/avx512f-vmovupd-1.c: Ditto. - * gcc.target/i386/avx512f-vmovupd-2.c: Ditto. - * gcc.target/i386/avx512f-vmovups-1.c: Ditto. - * gcc.target/i386/avx512f-vmovups-2.c: Ditto. - * gcc.target/i386/avx512f-vmulpd-1.c: Ditto. - * gcc.target/i386/avx512f-vmulpd-2.c: Ditto. - * gcc.target/i386/avx512f-vmulps-1.c: Ditto. - * gcc.target/i386/avx512f-vmulps-2.c: Ditto. - * gcc.target/i386/avx512f-vmulsd-1.c: Ditto. - * gcc.target/i386/avx512f-vmulsd-2.c: Ditto. - * gcc.target/i386/avx512f-vmulss-1.c: Ditto. - * gcc.target/i386/avx512f-vmulss-2.c: Ditto. - * gcc.target/i386/avx512f-vpabsd-2.c: Ditto. - * gcc.target/i386/avx512f-vpabsd512-1.c: Ditto. - * gcc.target/i386/avx512f-vpabsq-2.c: Ditto. - * gcc.target/i386/avx512f-vpabsq512-1.c: Ditto. - * gcc.target/i386/avx512f-vpaddd-1.c: Ditto. - * gcc.target/i386/avx512f-vpaddd-2.c: Ditto. - * gcc.target/i386/avx512f-vpaddq-1.c: Ditto. - * gcc.target/i386/avx512f-vpaddq-2.c: Ditto. - * gcc.target/i386/avx512f-vpandd-1.c: Ditto. - * gcc.target/i386/avx512f-vpandd-2.c: Ditto. - * gcc.target/i386/avx512f-vpandnd-1.c: Ditto. - * gcc.target/i386/avx512f-vpandnd-2.c: Ditto. - * gcc.target/i386/avx512f-vpandnq-1.c: Ditto. - * gcc.target/i386/avx512f-vpandnq-2.c: Ditto. - * gcc.target/i386/avx512f-vpandq-1.c: Ditto. - * gcc.target/i386/avx512f-vpandq-2.c: Ditto. - * gcc.target/i386/avx512f-vpblendmd-1.c: Ditto. - * gcc.target/i386/avx512f-vpblendmd-2.c: Ditto. - * gcc.target/i386/avx512f-vpblendmq-1.c: Ditto. - * gcc.target/i386/avx512f-vpblendmq-2.c: Ditto. - * gcc.target/i386/avx512f-vpbroadcastd-1.c: Ditto. - * gcc.target/i386/avx512f-vpbroadcastd-2.c: Ditto. - * gcc.target/i386/avx512f-vpbroadcastq-1.c: Ditto. - * gcc.target/i386/avx512f-vpbroadcastq-2.c: Ditto. - * gcc.target/i386/avx512f-vpcmpd-1.c: Ditto. - * gcc.target/i386/avx512f-vpcmpd-2.c: Ditto. - * gcc.target/i386/avx512f-vpcmpeqd-1.c: Ditto. - * gcc.target/i386/avx512f-vpcmpeqd-2.c: Ditto. - * gcc.target/i386/avx512f-vpcmpeqq-1.c: Ditto. - * gcc.target/i386/avx512f-vpcmpeqq-2.c: Ditto. - * gcc.target/i386/avx512f-vpcmpgtd-1.c: Ditto. - * gcc.target/i386/avx512f-vpcmpgtd-2.c: Ditto. - * gcc.target/i386/avx512f-vpcmpgtq-1.c: Ditto. - * gcc.target/i386/avx512f-vpcmpgtq-2.c: Ditto. - * gcc.target/i386/avx512f-vpcmpq-1.c: Ditto. - * gcc.target/i386/avx512f-vpcmpq-2.c: Ditto. - * gcc.target/i386/avx512f-vpcmpud-1.c: Ditto. - * gcc.target/i386/avx512f-vpcmpud-2.c: Ditto. - * gcc.target/i386/avx512f-vpcmpuq-1.c: Ditto. - * gcc.target/i386/avx512f-vpcmpuq-2.c: Ditto. - * gcc.target/i386/avx512f-vpcompressd-1.c: Ditto. - * gcc.target/i386/avx512f-vpcompressd-2.c: Ditto. - * gcc.target/i386/avx512f-vpcompressq-1.c: Ditto. - * gcc.target/i386/avx512f-vpcompressq-2.c: Ditto. - * gcc.target/i386/avx512f-vpermd-1.c: Ditto. - * gcc.target/i386/avx512f-vpermd-2.c: Ditto. - * gcc.target/i386/avx512f-vpermi2d-1.c: Ditto. - * gcc.target/i386/avx512f-vpermi2d-2.c: Ditto. - * gcc.target/i386/avx512f-vpermi2pd-1.c: Ditto. - * gcc.target/i386/avx512f-vpermi2pd-2.c: Ditto. - * gcc.target/i386/avx512f-vpermi2ps-1.c: Ditto. - * gcc.target/i386/avx512f-vpermi2ps-2.c: Ditto. - * gcc.target/i386/avx512f-vpermi2q-1.c: Ditto. - * gcc.target/i386/avx512f-vpermi2q-2.c: Ditto. - * gcc.target/i386/avx512f-vpermilpd-1.c: Ditto. - * gcc.target/i386/avx512f-vpermilpd-2.c: Ditto. - * gcc.target/i386/avx512f-vpermilpdi-1.c: Ditto. - * gcc.target/i386/avx512f-vpermilpdi-2.c: Ditto. - * gcc.target/i386/avx512f-vpermilps-1.c: Ditto. - * gcc.target/i386/avx512f-vpermilps-2.c: Ditto. - * gcc.target/i386/avx512f-vpermilpsi-1.c: Ditto. - * gcc.target/i386/avx512f-vpermilpsi-2.c: Ditto. - * gcc.target/i386/avx512f-vpermpd-1.c: Ditto. - * gcc.target/i386/avx512f-vpermpd-2.c: Ditto. - * gcc.target/i386/avx512f-vpermpdi-1.c: Ditto. - * gcc.target/i386/avx512f-vpermpdi-2.c: Ditto. - * gcc.target/i386/avx512f-vpermps-1.c: Ditto. - * gcc.target/i386/avx512f-vpermps-2.c: Ditto. - * gcc.target/i386/avx512f-vpermq-imm-1.c: Ditto. - * gcc.target/i386/avx512f-vpermq-imm-2.c: Ditto. - * gcc.target/i386/avx512f-vpermq-var-1.c: Ditto. - * gcc.target/i386/avx512f-vpermq-var-2.c: Ditto. - * gcc.target/i386/avx512f-vpermt2d-1.c: Ditto. - * gcc.target/i386/avx512f-vpermt2d-2.c: Ditto. - * gcc.target/i386/avx512f-vpermt2pd-1.c: Ditto. - * gcc.target/i386/avx512f-vpermt2pd-2.c: Ditto. - * gcc.target/i386/avx512f-vpermt2ps-1.c: Ditto. - * gcc.target/i386/avx512f-vpermt2ps-2.c: Ditto. - * gcc.target/i386/avx512f-vpermt2q-1.c: Ditto. - * gcc.target/i386/avx512f-vpermt2q-2.c: Ditto. - * gcc.target/i386/avx512f-vpexpandd-1.c: Ditto. - * gcc.target/i386/avx512f-vpexpandd-2.c: Ditto. - * gcc.target/i386/avx512f-vpexpandq-1.c: Ditto. - * gcc.target/i386/avx512f-vpexpandq-2.c: Ditto. - * gcc.target/i386/avx512f-vpmaxsd-1.c: Ditto. - * gcc.target/i386/avx512f-vpmaxsd-2.c: Ditto. - * gcc.target/i386/avx512f-vpmaxsq-1.c: Ditto. - * gcc.target/i386/avx512f-vpmaxsq-2.c: Ditto. - * gcc.target/i386/avx512f-vpmaxud-1.c: Ditto. - * gcc.target/i386/avx512f-vpmaxud-2.c: Ditto. - * gcc.target/i386/avx512f-vpmaxuq-1.c: Ditto. - * gcc.target/i386/avx512f-vpmaxuq-2.c: Ditto. - * gcc.target/i386/avx512f-vpminsd-1.c: Ditto. - * gcc.target/i386/avx512f-vpminsd-2.c: Ditto. - * gcc.target/i386/avx512f-vpminsq-1.c: Ditto. - * gcc.target/i386/avx512f-vpminsq-2.c: Ditto. - * gcc.target/i386/avx512f-vpminud-1.c: Ditto. - * gcc.target/i386/avx512f-vpminud-2.c: Ditto. - * gcc.target/i386/avx512f-vpminuq-1.c: Ditto. - * gcc.target/i386/avx512f-vpminuq-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovdb-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovdb-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovdw-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovdw-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovqb-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovqb-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovqd-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovqd-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovqw-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovqw-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovsdb-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovsdb-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovsdw-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovsdw-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovsqb-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovsqb-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovsqd-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovsqd-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovsqw-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovsqw-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovsxbd-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovsxbd-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovsxbq-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovsxbq-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovsxdq-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovsxdq-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovsxwd-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovsxwd-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovsxwq-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovsxwq-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovusdb-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovusdb-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovusdw-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovusdw-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovusqb-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovusqb-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovusqd-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovusqd-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovusqw-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovusqw-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovzxbd-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovzxbd-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovzxbq-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovzxbq-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovzxdq-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovzxdq-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovzxwd-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovzxwd-2.c: Ditto. - * gcc.target/i386/avx512f-vpmovzxwq-1.c: Ditto. - * gcc.target/i386/avx512f-vpmovzxwq-2.c: Ditto. - * gcc.target/i386/avx512f-vpmuldq-1.c: Ditto. - * gcc.target/i386/avx512f-vpmuldq-2.c: Ditto. - * gcc.target/i386/avx512f-vpmulld-1.c: Ditto. - * gcc.target/i386/avx512f-vpmulld-2.c: Ditto. - * gcc.target/i386/avx512f-vpmuludq-1.c: Ditto. - * gcc.target/i386/avx512f-vpmuludq-2.c: Ditto. - * gcc.target/i386/avx512f-vpord-1.c: Ditto. - * gcc.target/i386/avx512f-vpord-2.c: Ditto. - * gcc.target/i386/avx512f-vporq-1.c: Ditto. - * gcc.target/i386/avx512f-vporq-2.c: Ditto. - * gcc.target/i386/avx512f-vprold-1.c: Ditto. - * gcc.target/i386/avx512f-vprold-2.c: Ditto. - * gcc.target/i386/avx512f-vprolq-1.c: Ditto. - * gcc.target/i386/avx512f-vprolq-2.c: Ditto. - * gcc.target/i386/avx512f-vprolvd-1.c: Ditto. - * gcc.target/i386/avx512f-vprolvd-2.c: Ditto. - * gcc.target/i386/avx512f-vprolvq-1.c: Ditto. - * gcc.target/i386/avx512f-vprolvq-2.c: Ditto. - * gcc.target/i386/avx512f-vprord-1.c: Ditto. - * gcc.target/i386/avx512f-vprord-2.c: Ditto. - * gcc.target/i386/avx512f-vprorq-1.c: Ditto. - * gcc.target/i386/avx512f-vprorq-2.c: Ditto. - * gcc.target/i386/avx512f-vprorvd-1.c: Ditto. - * gcc.target/i386/avx512f-vprorvd-2.c: Ditto. - * gcc.target/i386/avx512f-vprorvq-1.c: Ditto. - * gcc.target/i386/avx512f-vprorvq-2.c: Ditto. - * gcc.target/i386/avx512f-vpshufd-1.c: Ditto. - * gcc.target/i386/avx512f-vpshufd-2.c: Ditto. - * gcc.target/i386/avx512f-vpslld-1.c: Ditto. - * gcc.target/i386/avx512f-vpslld-2.c: Ditto. - * gcc.target/i386/avx512f-vpslldi-1.c: Ditto. - * gcc.target/i386/avx512f-vpslldi-2.c: Ditto. - * gcc.target/i386/avx512f-vpsllq-1.c: Ditto. - * gcc.target/i386/avx512f-vpsllq-2.c: Ditto. - * gcc.target/i386/avx512f-vpsllqi-1.c: Ditto. - * gcc.target/i386/avx512f-vpsllqi-2.c: Ditto. - * gcc.target/i386/avx512f-vpsllvd-1.c: Ditto. - * gcc.target/i386/avx512f-vpsllvd-2.c: Ditto. - * gcc.target/i386/avx512f-vpsllvq-1.c: Ditto. - * gcc.target/i386/avx512f-vpsllvq-2.c: Ditto. - * gcc.target/i386/avx512f-vpsllvq512-1.c: Ditto. - * gcc.target/i386/avx512f-vpsllvq512-2.c: Ditto. - * gcc.target/i386/avx512f-vpsrad-1.c: Ditto. - * gcc.target/i386/avx512f-vpsrad-2.c: Ditto. - * gcc.target/i386/avx512f-vpsradi-1.c: Ditto. - * gcc.target/i386/avx512f-vpsradi-2.c: Ditto. - * gcc.target/i386/avx512f-vpsraq-1.c: Ditto. - * gcc.target/i386/avx512f-vpsraq-2.c: Ditto. - * gcc.target/i386/avx512f-vpsraqi-1.c: Ditto. - * gcc.target/i386/avx512f-vpsraqi-2.c: Ditto. - * gcc.target/i386/avx512f-vpsravd-1.c: Ditto. - * gcc.target/i386/avx512f-vpsravd-2.c: Ditto. - * gcc.target/i386/avx512f-vpsravq-1.c: Ditto. - * gcc.target/i386/avx512f-vpsravq-2.c: Ditto. - * gcc.target/i386/avx512f-vpsravq512-1.c: Ditto. - * gcc.target/i386/avx512f-vpsravq512-2.c: Ditto. - * gcc.target/i386/avx512f-vpsrld-1.c: Ditto. - * gcc.target/i386/avx512f-vpsrld-2.c: Ditto. - * gcc.target/i386/avx512f-vpsrldi-1.c: Ditto. - * gcc.target/i386/avx512f-vpsrldi-2.c: Ditto. - * gcc.target/i386/avx512f-vpsrlq-1.c: Ditto. - * gcc.target/i386/avx512f-vpsrlq-2.c: Ditto. - * gcc.target/i386/avx512f-vpsrlqi-1.c: Ditto. - * gcc.target/i386/avx512f-vpsrlqi-2.c: Ditto. - * gcc.target/i386/avx512f-vpsrlvd-1.c: Ditto. - * gcc.target/i386/avx512f-vpsrlvd-2.c: Ditto. - * gcc.target/i386/avx512f-vpsrlvq-1.c: Ditto. - * gcc.target/i386/avx512f-vpsrlvq-2.c: Ditto. - * gcc.target/i386/avx512f-vpsrlvq512-1.c: Ditto. - * gcc.target/i386/avx512f-vpsrlvq512-2.c: Ditto. - * gcc.target/i386/avx512f-vpsubd-1.c: Ditto. - * gcc.target/i386/avx512f-vpsubd-2.c: Ditto. - * gcc.target/i386/avx512f-vpsubq-1.c: Ditto. - * gcc.target/i386/avx512f-vpsubq-2.c: Ditto. - * gcc.target/i386/avx512f-vpternlogd-1.c: Ditto. - * gcc.target/i386/avx512f-vpternlogd-2.c: Ditto. - * gcc.target/i386/avx512f-vpternlogq-1.c: Ditto. - * gcc.target/i386/avx512f-vpternlogq-2.c: Ditto. - * gcc.target/i386/avx512f-vptestmd-1.c: Ditto. - * gcc.target/i386/avx512f-vptestmd-2.c: Ditto. - * gcc.target/i386/avx512f-vptestmq-1.c: Ditto. - * gcc.target/i386/avx512f-vptestmq-2.c: Ditto. - * gcc.target/i386/avx512f-vpunpckhdq-1.c: Ditto. - * gcc.target/i386/avx512f-vpunpckhdq-2.c: Ditto. - * gcc.target/i386/avx512f-vpunpckhqdq-1.c: Ditto. - * gcc.target/i386/avx512f-vpunpckhqdq-2.c: Ditto. - * gcc.target/i386/avx512f-vpunpckldq-1.c: Ditto. - * gcc.target/i386/avx512f-vpunpckldq-2.c: Ditto. - * gcc.target/i386/avx512f-vpunpcklqdq-1.c: Ditto. - * gcc.target/i386/avx512f-vpunpcklqdq-2.c: Ditto. - * gcc.target/i386/avx512f-vpxord-1.c: Ditto. - * gcc.target/i386/avx512f-vpxord-2.c: Ditto. - * gcc.target/i386/avx512f-vpxorq-1.c: Ditto. - * gcc.target/i386/avx512f-vpxorq-2.c: Ditto. - * gcc.target/i386/avx512f-vrcp14pd-1.c: Ditto. - * gcc.target/i386/avx512f-vrcp14pd-2.c: Ditto. - * gcc.target/i386/avx512f-vrcp14ps-1.c: Ditto. - * gcc.target/i386/avx512f-vrcp14ps-2.c: Ditto. - * gcc.target/i386/avx512f-vrcp14sd-1.c: Ditto. - * gcc.target/i386/avx512f-vrcp14sd-2.c: Ditto. - * gcc.target/i386/avx512f-vrcp14ss-1.c: Ditto. - * gcc.target/i386/avx512f-vrcp14ss-2.c: Ditto. - * gcc.target/i386/avx512f-vrndscalepd-1.c: Ditto. - * gcc.target/i386/avx512f-vrndscalepd-2.c: Ditto. - * gcc.target/i386/avx512f-vrndscaleps-1.c: Ditto. - * gcc.target/i386/avx512f-vrndscaleps-2.c: Ditto. - * gcc.target/i386/avx512f-vrndscalesd-1.c: Ditto. - * gcc.target/i386/avx512f-vrndscalesd-2.c: Ditto. - * gcc.target/i386/avx512f-vrndscaless-1.c: Ditto. - * gcc.target/i386/avx512f-vrndscaless-2.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14pd-1.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14pd-2.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14ps-1.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14ps-2.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14sd-1.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14sd-2.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14ss-1.c: Ditto. - * gcc.target/i386/avx512f-vrsqrt14ss-2.c: Ditto. - * gcc.target/i386/avx512f-vscalefpd-1.c: Ditto. - * gcc.target/i386/avx512f-vscalefpd-2.c: Ditto. - * gcc.target/i386/avx512f-vscalefps-1.c: Ditto. - * gcc.target/i386/avx512f-vscalefps-2.c: Ditto. - * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto. - * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto. - * gcc.target/i386/avx512f-vscalefss-1.c: Ditto. - * gcc.target/i386/avx512f-vscalefss-2.c: Ditto. - * gcc.target/i386/avx512f-vshuff32x4-1.c: Ditto. - * gcc.target/i386/avx512f-vshuff32x4-2.c: Ditto. - * gcc.target/i386/avx512f-vshuff64x2-1.c: Ditto. - * gcc.target/i386/avx512f-vshuff64x2-2.c: Ditto. - * gcc.target/i386/avx512f-vshufi32x4-1.c: Ditto. - * gcc.target/i386/avx512f-vshufi32x4-2.c: Ditto. - * gcc.target/i386/avx512f-vshufi64x2-1.c: Ditto. - * gcc.target/i386/avx512f-vshufi64x2-2.c: Ditto. - * gcc.target/i386/avx512f-vshufpd-1.c: Ditto. - * gcc.target/i386/avx512f-vshufpd-2.c: Ditto. - * gcc.target/i386/avx512f-vshufps-1.c: Ditto. - * gcc.target/i386/avx512f-vshufps-2.c: Ditto. - * gcc.target/i386/avx512f-vsqrtpd-1.c: Ditto. - * gcc.target/i386/avx512f-vsqrtpd-2.c: Ditto. - * gcc.target/i386/avx512f-vsqrtps-1.c: Ditto. - * gcc.target/i386/avx512f-vsqrtps-2.c: Ditto. - * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto. - * gcc.target/i386/avx512f-vsqrtsd-2.c: Ditto. - * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto. - * gcc.target/i386/avx512f-vsqrtss-2.c: Ditto. - * gcc.target/i386/avx512f-vsubpd-1.c: Ditto. - * gcc.target/i386/avx512f-vsubpd-2.c: Ditto. - * gcc.target/i386/avx512f-vsubps-1.c: Ditto. - * gcc.target/i386/avx512f-vsubps-2.c: Ditto. - * gcc.target/i386/avx512f-vsubsd-1.c: Ditto. - * gcc.target/i386/avx512f-vsubsd-2.c: Ditto. - * gcc.target/i386/avx512f-vsubss-1.c: Ditto. - * gcc.target/i386/avx512f-vsubss-2.c: Ditto. - * gcc.target/i386/avx512f-vucomisd-1.c: Ditto. - * gcc.target/i386/avx512f-vucomiss-1.c: Ditto. - * gcc.target/i386/avx512f-vunpckhpd-1.c: Ditto. - * gcc.target/i386/avx512f-vunpckhpd-2.c: Ditto. - * gcc.target/i386/avx512f-vunpckhps-1.c: Ditto. - * gcc.target/i386/avx512f-vunpckhps-2.c: Ditto. - * gcc.target/i386/avx512f-vunpcklpd-1.c: Ditto. - * gcc.target/i386/avx512f-vunpcklpd-2.c: Ditto. - * gcc.target/i386/avx512f-vunpcklps-1.c: Ditto. - * gcc.target/i386/avx512f-vunpcklps-2.c: Ditto. - * gcc.target/i386/avx512f_cond_move.c: Ditto. - * gcc.target/i386/avx512f_evex_reg_asm-1.c: Ditto. - * gcc.target/i386/avx512f_evex_reg_asm-2.c: Ditto. - * gcc.target/i386/avx512pf-vgatherpf0dps-1.c: Ditto. - * gcc.target/i386/avx512pf-vgatherpf0qps-1.c: Ditto. - * gcc.target/i386/avx512pf-vgatherpf1dps-1.c: Ditto. - * gcc.target/i386/avx512pf-vgatherpf1qps-1.c: Ditto. - * gcc.target/i386/avx512pf-vscatterpf0dps-1.c: Ditto. - * gcc.target/i386/avx512pf-vscatterpf0qps-1.c: Ditto. - * gcc.target/i386/avx512pf-vscatterpf1dps-1.c: Ditto. - * gcc.target/i386/avx512pf-vscatterpf1qps-1.c: Ditto. - * gcc.target/i386/sse-12.c: Updated options. - * gcc.target/i386/sse-13.c: Updated options, added defines for - __builtin_ia32_addpd512_mask, __builtin_ia32_addps512_mask, - __builtin_ia32_addsd_mask, __builtin_ia32_addss_mask, - __builtin_ia32_alignd512_mask, __builtin_ia32_alignq512_mask, - __builtin_ia32_cmpd512_mask, __builtin_ia32_cmppd512_mask, - __builtin_ia32_cmpps512_mask, __builtin_ia32_cmpq512_mask, - __builtin_ia32_cmpsd_mask, __builtin_ia32_cmpss_mask, - __builtin_ia32_cvtdq2ps512_mask, __builtin_ia32_cvtpd2dq512_mask, - __builtin_ia32_cvtpd2ps512_mask, __builtin_ia32_cvtpd2udq512_mask, - __builtin_ia32_cvtps2dq512_mask, __builtin_ia32_cvtps2pd512_mask, - __builtin_ia32_cvtps2udq512_mask, __builtin_ia32_cvtsd2ss_mask, - __builtin_ia32_cvtsi2sd64, __builtin_ia32_cvtsi2ss32, - __builtin_ia32_cvtsi2ss64, __builtin_ia32_cvtss2sd_mask, - __builtin_ia32_cvttpd2dq512_mask, __builtin_ia32_cvttpd2udq512_mask, - __builtin_ia32_cvttps2dq512_mask, __builtin_ia32_cvttps2udq512_mask, - __builtin_ia32_cvtudq2ps512_mask, __builtin_ia32_cvtusi2sd64, - __builtin_ia32_cvtusi2ss32, __builtin_ia32_cvtusi2ss64, - __builtin_ia32_divpd512_mask, __builtin_ia32_divps512_mask, - __builtin_ia32_divsd_mask, __builtin_ia32_divss_mask, - __builtin_ia32_extractf32x4_mask, __builtin_ia32_extractf64x4_mask, - __builtin_ia32_extracti32x4_mask, __builtin_ia32_extracti64x4_mask, - __builtin_ia32_fixupimmpd512_mask, __builtin_ia32_fixupimmpd512_maskz, - __builtin_ia32_fixupimmps512_mask, __builtin_ia32_fixupimmps512_maskz, - __builtin_ia32_fixupimmsd_mask, __builtin_ia32_fixupimmsd_maskz, - __builtin_ia32_fixupimmss_mask, __builtin_ia32_fixupimmss_maskz, - __builtin_ia32_gatherdiv8df, __builtin_ia32_gatherdiv8di, - __builtin_ia32_gatherdiv16sf, __builtin_ia32_gatherdiv16si, - __builtin_ia32_gathersiv16sf, __builtin_ia32_gathersiv16si, - __builtin_ia32_gathersiv8df, __builtin_ia32_gathersiv8di, - __builtin_ia32_getexppd512_mask, __builtin_ia32_getexpps512_mask, - __builtin_ia32_getexpsd128_mask, __builtin_ia32_getexpss128_mask, - __builtin_ia32_getmantpd512_mask, __builtin_ia32_getmantps512_mask, - __builtin_ia32_getmantsd_mask, __builtin_ia32_getmantss_mask, - __builtin_ia32_insertf32x4_mask, __builtin_ia32_insertf64x4_mask, - __builtin_ia32_inserti32x4_mask, __builtin_ia32_inserti64x4_mask, - __builtin_ia32_maxpd512_mask, __builtin_ia32_maxps512_mask, - __builtin_ia32_maxsd_mask, __builtin_ia32_maxss_mask, - __builtin_ia32_minpd512_mask, __builtin_ia32_minps512_mask, - __builtin_ia32_minsd_mask, __builtin_ia32_minss_mask, - __builtin_ia32_mulpd512_mask, __builtin_ia32_mulps512_mask, - __builtin_ia32_mulsd_mask, __builtin_ia32_mulss_mask, - __builtin_ia32_permdf512_mask, __builtin_ia32_permdi512_mask, - __builtin_ia32_prold512_mask, __builtin_ia32_prolq512_mask, - __builtin_ia32_prord512_mask, __builtin_ia32_prorq512_mask, - __builtin_ia32_pshufd512_mask, __builtin_ia32_pslldi512_mask, - __builtin_ia32_psllqi512_mask, __builtin_ia32_psradi512_mask, - __builtin_ia32_psraqi512_mask, __builtin_ia32_psrldi512_mask, - __builtin_ia32_psrlqi512_mask, __builtin_ia32_pternlogd512_mask, - __builtin_ia32_pternlogd512_maskz, __builtin_ia32_pternlogq512_mask, - __builtin_ia32_pternlogq512_maskz, __builtin_ia32_rndscalepd_mask, - __builtin_ia32_rndscaleps_mask, __builtin_ia32_rndscalesd_mask, - __builtin_ia32_rndscaless_mask, __builtin_ia32_scalefpd512_mask, - __builtin_ia32_scalefps512_mask, __builtin_ia32_scalefsd_mask, - __builtin_ia32_scalefss_mask, __builtin_ia32_scatterdiv8df, - __builtin_ia32_scatterdiv8di, __builtin_ia32_scatterdiv16sf, - __builtin_ia32_scatterdiv16si, __builtin_ia32_scattersiv16sf, - __builtin_ia32_scattersiv16si, __builtin_ia32_scattersiv8df, - __builtin_ia32_scattersiv8di, __builtin_ia32_shuf_f32x4_mask, - __builtin_ia32_shuf_f64x2_mask, __builtin_ia32_shuf_i32x4_mask, - __builtin_ia32_shuf_i64x2_mask, __builtin_ia32_shufpd512_mask, - __builtin_ia32_shufps512_mask, __builtin_ia32_sqrtpd512_mask, - __builtin_ia32_sqrtps512_mask, __builtin_ia32_sqrtsd_mask, - __builtin_ia32_sqrtss_mask, __builtin_ia32_subpd512_mask, - __builtin_ia32_subps512_mask, __builtin_ia32_subsd_mask, - __builtin_ia32_subss_mask, __builtin_ia32_ucmpd512_mask, - __builtin_ia32_ucmpq512_mask, __builtin_ia32_vcomisd, - __builtin_ia32_vcomiss, __builtin_ia32_vcvtph2ps512_mask, - __builtin_ia32_vcvtps2ph512_mask, __builtin_ia32_vcvtsd2si32, - __builtin_ia32_vcvtsd2si64, __builtin_ia32_vcvtsd2usi32, - __builtin_ia32_vcvtsd2usi64, __builtin_ia32_vcvtss2si32, - __builtin_ia32_vcvtss2si64, __builtin_ia32_vcvtss2usi32, - __builtin_ia32_vcvtss2usi64, __builtin_ia32_vcvttsd2si32, - __builtin_ia32_vcvttsd2si64, __builtin_ia32_vcvttsd2usi32, - __builtin_ia32_vcvttsd2usi64, __builtin_ia32_vcvttss2si32, - __builtin_ia32_vcvttss2si64, __builtin_ia32_vcvttss2usi32, - __builtin_ia32_vcvttss2usi64, __builtin_ia32_vfmaddpd512_mask, - __builtin_ia32_vfmaddpd512_mask3, __builtin_ia32_vfmaddpd512_maskz, - __builtin_ia32_vfmaddps512_mask, __builtin_ia32_vfmaddps512_mask3, - __builtin_ia32_vfmaddps512_maskz, __builtin_ia32_vfmaddsd3_mask, - __builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz, - __builtin_ia32_vfmaddss3_mask, __builtin_ia32_vfmaddss3_mask3, - __builtin_ia32_vfmaddss3_maskz, __builtin_ia32_vfmaddsubpd512_mask, - __builtin_ia32_vfmaddsubpd512_mask3, - __builtin_ia32_vfmaddsubpd512_maskz, - __builtin_ia32_vfmaddsubps512_mask, - __builtin_ia32_vfmaddsubps512_mask3, - __builtin_ia32_vfmaddsubps512_maskz, - __builtin_ia32_vfmsubaddpd512_mask3, - __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, - __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, - __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, - __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, - __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, - __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_vpermilpd512_mask, - __builtin_ia32_vpermilps512_mask, __builtin_ia32_exp2ps_mask, - __builtin_ia32_exp2pd_mask, __builtin_ia32_exp2ps_mask, - __builtin_ia32_exp2pd_mask, __builtin_ia32_rsqrt28ps_mask, - __builtin_ia32_rsqrt28pd_mask, __builtin_ia32_gatherpfdps, - __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, - __builtin_ia32_scatterpfqps, __builtin_ia32_addpd512_mask, - __builtin_ia32_addps512_mask, __builtin_ia32_addsd_mask, - __builtin_ia32_addss_mask, __builtin_ia32_alignd512_mask, - __builtin_ia32_alignq512_mask, __builtin_ia32_cmpd512_mask, - __builtin_ia32_cmppd512_mask, __builtin_ia32_cmpps512_mask, - __builtin_ia32_cmpq512_mask, __builtin_ia32_cmpsd_mask, - __builtin_ia32_cmpss_mask, __builtin_ia32_cvtdq2ps512_mask, - __builtin_ia32_cvtpd2dq512_mask, __builtin_ia32_cvtpd2ps512_mask, - __builtin_ia32_cvtpd2udq512_mask, __builtin_ia32_cvtps2dq512_mask, - __builtin_ia32_cvtps2pd512_mask, __builtin_ia32_cvtps2udq512_mask, - __builtin_ia32_cvtsd2ss_mask, __builtin_ia32_cvtsi2sd64, - __builtin_ia32_cvtsi2ss32, __builtin_ia32_cvtsi2ss64, - __builtin_ia32_cvtss2sd_mask, __builtin_ia32_cvttpd2dq512_mask, - __builtin_ia32_cvttpd2udq512_mask, __builtin_ia32_cvttps2dq512_mask, - __builtin_ia32_cvttps2udq512_mask, __builtin_ia32_cvtudq2ps512_mask, - __builtin_ia32_cvtusi2sd64, __builtin_ia32_cvtusi2ss32, - __builtin_ia32_cvtusi2ss64, __builtin_ia32_divpd512_mask, - __builtin_ia32_divps512_mask, __builtin_ia32_divsd_mask, - __builtin_ia32_divss_mask, __builtin_ia32_extractf32x4_mask, - __builtin_ia32_extractf64x4_mask, __builtin_ia32_extracti32x4_mask, - __builtin_ia32_extracti64x4_mask, __builtin_ia32_fixupimmpd512_mask, - __builtin_ia32_fixupimmpd512_maskz, __builtin_ia32_fixupimmps512_mask, - __builtin_ia32_fixupimmps512_maskz, __builtin_ia32_fixupimmsd_mask, - __builtin_ia32_fixupimmsd_maskz, __builtin_ia32_fixupimmss_mask, - __builtin_ia32_fixupimmss_maskz, __builtin_ia32_gatherdiv8df, - __builtin_ia32_gatherdiv8di, __builtin_ia32_gatherdiv16sf, - __builtin_ia32_gatherdiv16si, __builtin_ia32_gathersiv16sf, - __builtin_ia32_gathersiv16si, __builtin_ia32_gathersiv8df, - __builtin_ia32_gathersiv8di, __builtin_ia32_getexppd512_mask, - __builtin_ia32_getexpps512_mask, __builtin_ia32_getexpsd128_mask, - __builtin_ia32_getexpss128_mask, __builtin_ia32_getmantpd512_mask, - __builtin_ia32_getmantps512_mask, __builtin_ia32_getmantsd_mask, - __builtin_ia32_getmantss_mask, __builtin_ia32_insertf32x4_mask, - __builtin_ia32_insertf64x4_mask, __builtin_ia32_inserti32x4_mask, - __builtin_ia32_inserti64x4_mask, __builtin_ia32_maxpd512_mask, - __builtin_ia32_maxps512_mask, __builtin_ia32_maxsd_mask, - __builtin_ia32_maxss_mask, __builtin_ia32_minpd512_mask, - __builtin_ia32_minps512_mask, __builtin_ia32_minsd_mask, - __builtin_ia32_minss_mask, __builtin_ia32_mulpd512_mask, - __builtin_ia32_mulps512_mask, __builtin_ia32_mulsd_mask, - __builtin_ia32_mulss_mask, __builtin_ia32_permdf512_mask, - __builtin_ia32_permdi512_mask, __builtin_ia32_prold512_mask, - __builtin_ia32_prolq512_mask, __builtin_ia32_prord512_mask, - __builtin_ia32_prorq512_mask, __builtin_ia32_pshufd512_mask, - __builtin_ia32_pslldi512_mask, __builtin_ia32_psllqi512_mask, - __builtin_ia32_psradi512_mask, __builtin_ia32_psraqi512_mask, - __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlqi512_mask, - __builtin_ia32_pternlogd512_mask, __builtin_ia32_pternlogd512_maskz, - __builtin_ia32_pternlogq512_mask, __builtin_ia32_pternlogq512_maskz, - __builtin_ia32_rndscalepd_mask, __builtin_ia32_rndscaleps_mask, - __builtin_ia32_rndscalesd_mask, __builtin_ia32_rndscaless_mask, - __builtin_ia32_scalefpd512_mask, __builtin_ia32_scalefps512_mask, - __builtin_ia32_scalefsd_mask, __builtin_ia32_scalefss_mask, - __builtin_ia32_scatterdiv8df, __builtin_ia32_scatterdiv8di, - __builtin_ia32_scatterdiv16sf, __builtin_ia32_scatterdiv16si, - __builtin_ia32_scattersiv16sf, __builtin_ia32_scattersiv16si, - __builtin_ia32_scattersiv8df, __builtin_ia32_scattersiv8di, - __builtin_ia32_shuf_f32x4_mask, __builtin_ia32_shuf_f64x2_mask, - __builtin_ia32_shuf_i32x4_mask, __builtin_ia32_shuf_i64x2_mask, - __builtin_ia32_shufpd512_mask, __builtin_ia32_shufps512_mask, - __builtin_ia32_sqrtpd512_mask, __builtin_ia32_sqrtps512_mask, - __builtin_ia32_sqrtsd_mask, __builtin_ia32_sqrtss_mask, - __builtin_ia32_subpd512_mask, __builtin_ia32_subps512_mask, - __builtin_ia32_subsd_mask, __builtin_ia32_subss_mask, - __builtin_ia32_ucmpd512_mask, __builtin_ia32_ucmpq512_mask, - __builtin_ia32_vcomisd, __builtin_ia32_vcomiss, - __builtin_ia32_vcvtph2ps512_mask, __builtin_ia32_vcvtps2ph512_mask, - __builtin_ia32_vcvtsd2si32, __builtin_ia32_vcvtsd2si64, - __builtin_ia32_vcvtsd2usi32, __builtin_ia32_vcvtsd2usi64, - __builtin_ia32_vcvtss2si32, __builtin_ia32_vcvtss2si64, - __builtin_ia32_vcvtss2usi32, __builtin_ia32_vcvtss2usi64, - __builtin_ia32_vcvttsd2si32, __builtin_ia32_vcvttsd2si64, - __builtin_ia32_vcvttsd2usi32, __builtin_ia32_vcvttsd2usi64, - __builtin_ia32_vcvttss2si32, __builtin_ia32_vcvttss2si64, - __builtin_ia32_vcvttss2usi32, __builtin_ia32_vcvttss2usi64, - __builtin_ia32_vfmaddpd512_mask, __builtin_ia32_vfmaddpd512_mask3, - __builtin_ia32_vfmaddpd512_maskz, __builtin_ia32_vfmaddps512_mask, - __builtin_ia32_vfmaddps512_mask3, __builtin_ia32_vfmaddps512_maskz, - __builtin_ia32_vfmaddsd3_mask, __builtin_ia32_vfmaddsd3_mask3, - __builtin_ia32_vfmaddsd3_maskz, __builtin_ia32_vfmaddss3_mask, - __builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz, - __builtin_ia32_vfmaddsubpd512_mask, - __builtin_ia32_vfmaddsubpd512_mask3, - __builtin_ia32_vfmaddsubpd512_maskz, - __builtin_ia32_vfmaddsubps512_mask, - __builtin_ia32_vfmaddsubps512_mask3, - __builtin_ia32_vfmaddsubps512_maskz, - __builtin_ia32_vfmsubaddpd512_mask3, - __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, - __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, - __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, - __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, - __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, - __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_vpermilpd512_mask, - __builtin_ia32_vpermilps512_mask, __builtin_ia32_gatherpfdps, - __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, - __builtin_ia32_scatterpfqps, __builtin_ia32_exp2pd_mask, - __builtin_ia32_exp2ps_mask, __builtin_ia32_rcp28pd_mask, - __builtin_ia32_rcp28ps_mask, __builtin_ia32_rsqrt28pd_mask, - __builtin_ia32_rsqrt28ps_mask. - * gcc.target/i386/sse-14.c (test_1y): New. - (test_2y): Ditto. - (test_2vx): Ditto. - (test_3x): Ditto. - (test_3v): Ditto. - (test_3vx): Ditto. - (test_4x): Ditto. - (test_4y): Ditto. - (test_4v): Ditto. - (pragma GCC target): Add avx512f, avx512er, avx512cd, avx512pf. - (tests): Add _mm512_cvt_roundepi32_ps, _mm512_cvt_roundepu32_ps, - _mm512_cvt_roundpd_epi32, _mm512_cvt_roundpd_epu32, - _mm512_cvt_roundpd_ps, _mm512_cvt_roundph_ps, - _mm512_cvt_roundps_epi32, _mm512_cvt_roundps_epu32, - _mm512_cvt_roundps_pd, _mm512_cvtps_ph, _mm512_cvtt_roundpd_epi32, - _mm512_cvtt_roundpd_epu32, _mm512_cvtt_roundps_epi32, - _mm512_cvtt_roundps_epu32, _mm512_extractf32x4_ps, - _mm512_extractf64x4_pd, _mm512_extracti32x4_epi32, - _mm512_extracti64x4_epi64, _mm512_getexp_round_pd, - _mm512_getexp_round_ps, _mm512_getmant_round_pd, - _mm512_getmant_round_ps, _mm512_permute_pd, _mm512_permute_ps, - _mm512_permutex_epi64, _mm512_permutex_pd, _mm512_rol_epi32, - _mm512_rol_epi64, _mm512_ror_epi32, _mm512_ror_epi64, - _mm512_shuffle_epi32, _mm512_slli_epi32, _mm512_slli_epi64, - _mm512_sqrt_round_pd, _mm512_sqrt_round_ps, _mm512_srai_epi32, - _mm512_srai_epi64, _mm512_srli_epi32, _mm512_srli_epi64, - _mm_cvt_roundsd_i32, _mm_cvt_roundsd_u32, _mm_cvt_roundss_i32, - _mm_cvt_roundss_u32, _mm_cvtt_roundsd_i32, _mm_cvtt_roundsd_u32, - _mm_cvtt_roundss_i32, _mm_cvtt_roundss_u32, _mm512_getmant_pd, - _mm512_getmant_ps, _mm_cvt_roundi32_ss, _mm512_add_round_pd, - _mm512_add_round_ps, _mm512_alignr_epi32, _mm512_alignr_epi64, - _mm512_cmp_epi32_mask, _mm512_cmp_epi64_mask, _mm512_cmp_epu32_mask, - _mm512_cmp_epu64_mask, _mm512_cmp_pd_mask, _mm512_cmp_ps_mask, - _mm512_div_round_pd, _mm512_div_round_ps, _mm512_i32gather_epi32, - _mm512_i32gather_epi64, _mm512_i32gather_pd, _mm512_i32gather_ps, - _mm512_i64gather_epi32, _mm512_i64gather_epi64, _mm512_i64gather_pd, - _mm512_i64gather_ps, _mm512_insertf32x4, _mm512_insertf64x4, - _mm512_inserti32x4, _mm512_inserti64x4, - _mm512_maskz_cvt_roundepi32_ps, _mm512_maskz_cvt_roundepu32_ps, - _mm512_maskz_cvt_roundpd_epi32, _mm512_maskz_cvt_roundpd_epu32, - _mm512_maskz_cvt_roundpd_ps, _mm512_maskz_cvt_roundph_ps, - _mm512_maskz_cvt_roundps_epi32, _mm512_maskz_cvt_roundps_epu32, - _mm512_maskz_cvt_roundps_pd, _mm512_maskz_cvtps_ph, - _mm512_maskz_cvtt_roundpd_epi32, _mm512_maskz_cvtt_roundpd_epu32, - _mm512_maskz_cvtt_roundps_epi32, _mm512_maskz_cvtt_roundps_epu32, - _mm512_maskz_extractf32x4_ps, _mm512_maskz_extractf64x4_pd, - _mm512_maskz_extracti32x4_epi32, _mm512_maskz_extracti64x4_epi64, - _mm512_maskz_getexp_round_pd, _mm512_maskz_getexp_round_ps, - _mm512_maskz_getmant_round_pd, _mm512_maskz_getmant_round_ps, - _mm512_maskz_permute_pd, _mm512_maskz_permute_ps, - _mm512_maskz_permutex_epi64, _mm512_maskz_permutex_pd, - _mm512_maskz_rol_epi32, _mm512_maskz_rol_epi64, - _mm512_maskz_ror_epi32, _mm512_maskz_ror_epi64, - _mm512_maskz_shuffle_epi32, _mm512_maskz_slli_epi32, - _mm512_maskz_slli_epi64, _mm512_maskz_sqrt_round_pd, - _mm512_maskz_sqrt_round_ps, _mm512_maskz_srai_epi32, - _mm512_maskz_srai_epi64, _mm512_maskz_srli_epi32, - _mm512_maskz_srli_epi64, _mm512_max_round_pd, _mm512_max_round_ps, - _mm512_min_round_pd, _mm512_min_round_ps, _mm512_mul_round_pd, - _mm512_mul_round_ps, _mm512_scalef_round_pd, _mm512_scalef_round_ps, - _mm512_shuffle_f32x4, _mm512_shuffle_f64x2, _mm512_shuffle_i32x4, - _mm512_shuffle_i64x2, _mm512_shuffle_pd, _mm512_shuffle_ps, - _mm512_sub_round_pd, _mm512_sub_round_ps, _mm_add_round_sd, - _mm_add_round_ss, _mm_cmp_sd_mask, _mm_cmp_ss_mask, - _mm_cvt_roundi64_sd, _mm_cvt_roundi64_ss, _mm_cvt_roundsd_ss, - _mm_cvt_roundss_sd, _mm_cvt_roundu32_ss, _mm_cvt_roundu64_sd, - _mm_cvt_roundu64_ss, _mm_div_round_sd, _mm_div_round_ss, - _mm_getexp_round_sd, _mm_getexp_round_ss, _mm_getmant_round_sd, - _mm_getmant_round_ss, _mm_mul_round_sd, _mm_mul_round_ss, - _mm_scalef_round_sd, _mm_scalef_round_ss, _mm_sqrt_round_sd, - _mm_sqrt_round_ss, _mm_sub_round_sd, _mm_sub_round_ss, - _mm512_cmp_round_pd_mask, _mm512_cmp_round_ps_mask, - _mm512_maskz_roundscale_round_pd, _mm512_maskz_roundscale_round_ps, - _mm_cmp_round_sd_mask, _mm_cmp_round_ss_mask, _mm_comi_round_sd, - _mm_comi_round_ss, _mm_roundscale_round_sd, _mm_roundscale_round_ss, - _mm512_fmadd_round_pd, _mm512_fmadd_round_ps, - _mm512_fmaddsub_round_pd, _mm512_fmaddsub_round_ps, - _mm512_fmsub_round_pd, _mm512_fmsub_round_ps, - _mm512_fmsubadd_round_pd, _mm512_fmsubadd_round_ps, - _mm512_fnmadd_round_pd, _mm512_fnmadd_round_ps, - _mm512_fnmsub_round_pd, _mm512_fnmsub_round_ps, - _mm512_mask_cmp_epi32_mask, _mm512_mask_cmp_epi64_mask, - _mm512_mask_cmp_epu32_mask, _mm512_mask_cmp_epu64_mask, - _mm512_mask_cmp_pd_mask, _mm512_mask_cmp_ps_mask, - _mm512_mask_cvt_roundepi32_ps, _mm512_mask_cvt_roundepu32_ps, - _mm512_mask_cvt_roundpd_epi32, _mm512_mask_cvt_roundpd_epu32, - _mm512_mask_cvt_roundpd_ps, _mm512_mask_cvt_roundph_ps, - _mm512_mask_cvt_roundps_epi32, _mm512_mask_cvt_roundps_epu32, - _mm512_mask_cvt_roundps_pd, _mm512_mask_cvtps_ph, - _mm512_mask_cvtt_roundpd_epi32, _mm512_mask_cvtt_roundpd_epu32, - _mm512_mask_cvtt_roundps_epi32, _mm512_mask_cvtt_roundps_epu32, - _mm512_mask_extractf32x4_ps, _mm512_mask_extractf64x4_pd, - _mm512_mask_extracti32x4_epi32, _mm512_mask_extracti64x4_epi64, - _mm512_mask_getexp_round_pd, _mm512_mask_getexp_round_ps, - _mm512_mask_getmant_round_pd, _mm512_mask_getmant_round_ps, - _mm512_mask_permute_pd, _mm512_mask_permute_ps, - _mm512_mask_permutex_epi64, _mm512_mask_permutex_pd, - _mm512_mask_rol_epi32, _mm512_mask_rol_epi64, _mm512_mask_ror_epi32, - _mm512_mask_ror_epi64, _mm512_mask_shuffle_epi32, - _mm512_mask_slli_epi32, _mm512_mask_slli_epi64, - _mm512_mask_sqrt_round_pd, _mm512_mask_sqrt_round_ps, - _mm512_mask_srai_epi32, _mm512_mask_srai_epi64, - _mm512_mask_srli_epi32, _mm512_mask_srli_epi64, - _mm512_maskz_add_round_pd, _mm512_maskz_add_round_ps, - _mm512_maskz_alignr_epi32, _mm512_maskz_alignr_epi64, - _mm512_maskz_div_round_pd, _mm512_maskz_div_round_ps, - _mm512_maskz_insertf32x4, _mm512_maskz_insertf64x4, - _mm512_maskz_inserti32x4, _mm512_maskz_inserti64x4, - _mm512_maskz_max_round_pd, _mm512_maskz_max_round_ps, - _mm512_maskz_min_round_pd, _mm512_maskz_min_round_ps, - _mm512_maskz_mul_round_pd, _mm512_maskz_mul_round_ps, - _mm512_maskz_scalef_round_pd, _mm512_maskz_scalef_round_ps, - _mm512_maskz_shuffle_f32x4, _mm512_maskz_shuffle_f64x2, - _mm512_maskz_shuffle_i32x4, _mm512_maskz_shuffle_i64x2, - _mm512_maskz_shuffle_pd, _mm512_maskz_shuffle_ps, - _mm512_maskz_sub_round_pd, _mm512_maskz_sub_round_ps, - _mm512_ternarylogic_epi32, _mm512_ternarylogic_epi64, - _mm_fmadd_round_sd, _mm_fmadd_round_ss, _mm_fmsub_round_sd, - _mm_fmsub_round_ss, _mm_fnmadd_round_sd, _mm_fnmadd_round_ss, - _mm_fnmsub_round_sd, _mm_fnmsub_round_ss, _mm_mask_cmp_sd_mask, - _mm_mask_cmp_ss_mask, _mm_maskz_add_round_sd, _mm_maskz_add_round_ss, - _mm_maskz_cvt_roundsd_ss, _mm_maskz_cvt_roundss_sd, - _mm_maskz_div_round_sd, _mm_maskz_div_round_ss, - _mm_maskz_getexp_round_sd, _mm_maskz_getexp_round_ss, - _mm_maskz_getmant_round_sd, _mm_maskz_getmant_round_ss, - _mm_maskz_mul_round_sd, _mm_maskz_mul_round_ss, - _mm_maskz_scalef_round_sd, _mm_maskz_scalef_round_ss, - _mm_maskz_sqrt_round_sd, _mm_maskz_sqrt_round_ss, - _mm_maskz_sub_round_sd, _mm_maskz_sub_round_ss, - _mm512_i32scatter_epi32, _mm512_i32scatter_epi64, - _mm512_i32scatter_pd, _mm512_i32scatter_ps, _mm512_i64scatter_epi32, - _mm512_i64scatter_epi64, _mm512_i64scatter_pd, _mm512_i64scatter_ps, - _mm512_mask_roundscale_round_pd, _mm512_mask_roundscale_round_ps, - _mm512_mask_cmp_round_pd_mask, _mm512_mask_cmp_round_ps_mask, - _mm_fixupimm_round_sd, _mm_fixupimm_round_ss, - _mm_mask_cmp_round_sd_mask, _mm_mask_cmp_round_ss_mask, - _mm_maskz_roundscale_round_sd, _mm_maskz_roundscale_round_ss, - _mm512_mask3_fmadd_round_pd, _mm512_mask3_fmadd_round_ps, - _mm512_mask3_fmaddsub_round_pd, _mm512_mask3_fmaddsub_round_ps, - _mm512_mask3_fmsub_round_pd, _mm512_mask3_fmsub_round_ps, - _mm512_mask3_fmsubadd_round_pd, _mm512_mask3_fmsubadd_round_ps, - _mm512_mask3_fnmadd_round_pd, _mm512_mask3_fnmadd_round_ps, - _mm512_mask3_fnmsub_round_pd, _mm512_mask3_fnmsub_round_ps, - _mm512_mask_add_round_pd, _mm512_mask_add_round_ps, - _mm512_mask_alignr_epi32, _mm512_mask_alignr_epi64, - _mm512_mask_div_round_pd, _mm512_mask_div_round_ps, - _mm512_mask_fmadd_round_pd, _mm512_mask_fmadd_round_ps, - _mm512_mask_fmaddsub_round_pd, _mm512_mask_fmaddsub_round_ps, - _mm512_mask_fmsub_round_pd, _mm512_mask_fmsub_round_ps, - _mm512_mask_fmsubadd_round_pd, _mm512_mask_fmsubadd_round_ps, - _mm512_mask_fnmadd_round_pd, _mm512_mask_fnmadd_round_ps, - _mm512_mask_fnmsub_round_pd, _mm512_mask_fnmsub_round_ps, - _mm512_mask_i32gather_epi32, _mm512_mask_i32gather_epi64, - _mm512_mask_i32gather_pd, _mm512_mask_i32gather_ps, - _mm512_mask_i64gather_epi32, _mm512_mask_i64gather_epi64, - _mm512_mask_i64gather_pd, _mm512_mask_i64gather_ps, - _mm512_mask_insertf32x4, _mm512_mask_insertf64x4, - _mm512_mask_inserti32x4, _mm512_mask_inserti64x4, - _mm512_mask_max_round_pd, _mm512_mask_max_round_ps, - _mm512_mask_min_round_pd, _mm512_mask_min_round_ps, - _mm512_mask_mul_round_pd, _mm512_mask_mul_round_ps, - _mm512_mask_scalef_round_pd, _mm512_mask_scalef_round_ps, - _mm512_mask_shuffle_f32x4, _mm512_mask_shuffle_f64x2, - _mm512_mask_shuffle_i32x4, _mm512_mask_shuffle_i64x2, - _mm512_mask_shuffle_pd, _mm512_mask_shuffle_ps, - _mm512_mask_sub_round_pd, _mm512_mask_sub_round_ps, - _mm512_mask_ternarylogic_epi32, _mm512_mask_ternarylogic_epi64, - _mm512_maskz_fmadd_round_pd, _mm512_maskz_fmadd_round_ps, - _mm512_maskz_fmaddsub_round_pd, _mm512_maskz_fmaddsub_round_ps, - _mm512_maskz_fmsub_round_pd, _mm512_maskz_fmsub_round_ps, - _mm512_maskz_fmsubadd_round_pd, _mm512_maskz_fmsubadd_round_ps, - _mm512_maskz_fnmadd_round_pd, _mm512_maskz_fnmadd_round_ps, - _mm512_maskz_fnmsub_round_pd, _mm512_maskz_fnmsub_round_ps, - _mm512_maskz_ternarylogic_epi32, _mm512_maskz_ternarylogic_epi64, - _mm_mask3_fmadd_round_sd, _mm_mask3_fmadd_round_ss, - _mm_mask3_fmsub_round_sd, _mm_mask3_fmsub_round_ss, - _mm_mask3_fnmadd_round_sd, _mm_mask3_fnmadd_round_ss, - _mm_mask3_fnmsub_round_sd, _mm_mask3_fnmsub_round_ss, - _mm_mask_add_round_sd, _mm_mask_add_round_ss, _mm_mask_cvt_roundsd_ss, - _mm_mask_cvt_roundss_sd, _mm_mask_div_round_sd, _mm_mask_div_round_ss, - _mm_mask_fmadd_round_sd, _mm_mask_fmadd_round_ss, - _mm_mask_fmsub_round_sd, _mm_mask_fmsub_round_ss, - _mm_mask_fnmadd_round_sd, _mm_mask_fnmadd_round_ss, - _mm_mask_fnmsub_round_sd, _mm_mask_fnmsub_round_ss, - _mm_mask_getexp_round_sd, _mm_mask_getexp_round_ss, - _mm_mask_getmant_round_sd, _mm_mask_getmant_round_ss, - _mm_mask_mul_round_sd, _mm_mask_mul_round_ss, - _mm_mask_scalef_round_sd, _mm_mask_scalef_round_ss, - _mm_mask_sqrt_round_sd, _mm_mask_sqrt_round_ss, _mm_mask_sub_round_sd, - _mm_mask_sub_round_ss, _mm_maskz_fmadd_round_sd, - _mm_maskz_fmadd_round_ss, _mm_maskz_fmsub_round_sd, - _mm_maskz_fmsub_round_ss, _mm_maskz_fnmadd_round_sd, - _mm_maskz_fnmadd_round_ss, _mm_maskz_fnmsub_round_sd, - _mm_maskz_fnmsub_round_ss, _mm512_mask_i32scatter_epi32, - _mm512_mask_i32scatter_epi64, _mm512_mask_i32scatter_pd, - _mm512_mask_i32scatter_ps, _mm512_mask_i64scatter_epi32, - _mm512_mask_i64scatter_epi64, _mm512_mask_i64scatter_pd, - _mm512_mask_i64scatter_ps, _mm_mask_getmant_sd, _mm_mask_getmant_ss, - _mm_mask_roundscale_round_sd, _mm_mask_roundscale_round_ss, - _mm512_mask_fixupimm_round_pd, _mm512_mask_fixupimm_round_ps, - _mm512_maskz_fixupimm_round_pd, _mm512_maskz_fixupimm_round_ps, - _mm_mask_fixupimm_round_sd, _mm_mask_fixupimm_round_ss, - _mm_maskz_fixupimm_round_sd, _mm_maskz_fixupimm_round_ss, - _mm512_mask_prefetch_i32gather_ps, _mm512_mask_prefetch_i32scatter_ps, - _mm512_mask_prefetch_i64gather_ps, _mm512_mask_prefetch_i64scatter_ps, - _mm512_exp2a23_round_pd, _mm512_exp2a23_round_ps, - _mm512_rcp28_round_pd, _mm512_rcp28_round_ps, _mm512_rsqrt28_round_pd, - _mm512_rsqrt28_round_ps, _mm512_maskz_exp2a23_round_pd, - _mm512_maskz_exp2a23_round_ps, _mm512_maskz_rcp28_round_pd, - _mm512_maskz_rcp28_round_ps, _mm512_maskz_rsqrt28_round_pd, - _mm512_maskz_rsqrt28_round_ps, _mm512_mask_exp2a23_round_pd, - _mm512_mask_exp2a23_round_ps, _mm512_mask_rcp28_round_pd, - _mm512_mask_rcp28_round_ps, _mm512_mask_rsqrt28_round_pd, - _mm512_mask_rsqrt28_round_ps. - * gcc.target/i386/testimm-10.c: New file. - * gcc.target/i386/testround-1.c: Ditto. - * gcc.target/i386/testround-2.c: Ditto. - * gcc.target/x86_64/abi/avx512f/test_m512_returning.c: Ditto. - * gcc.target/x86_64/abi/avx512f/test_passing_m512.c: Ditto. - * gcc.target/x86_64/abi/avx512f/test_passing_structs.c: Ditto. - * gcc.target/x86_64/abi/avx512f/test_passing_unions.c: Ditto. - * gcc.target/i386/avx512cd-check.h: Ditto. - * gcc.target/i386/avx512er-check.h: Ditto. - * gcc.target/i386/avx512f-check.h: Ditto. - * gcc.target/i386/avx512f-helper.h: Ditto. - * gcc.target/i386/avx512f-mask-type.h: Ditto. - * gcc.target/i386/avx512f-os-support.h: Ditto. - * gcc.target/i386/i386.exp (check_effective_target_avx512f): New. - (check_effective_target_avx512cd): Ditto. - (check_effective_target_avx512er): Ditto. - * gcc.target/i386/m128-check.h (CHECK_FP_EXP): Ditto. - * gcc.target/i386/m512-check.h: Ditto. - * gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: New file. - * gcc.target/x86_64/abi/avx512f/args.h: Ditto. - * gcc.target/x86_64/abi/avx512f/asm-support.S: Ditto. - * gcc.target/x86_64/abi/avx512f/avx512f-check.h: Ditto. - * lib/target-supports.exp (check_effective_target_avx512f): New. - -2013-12-31 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * gcc.target/i386/avx-1.c: Extend to AVX-512. - * gcc.target/i386/sse-22.c: Ditto. - * gcc.target/i386/sse-23.c: Ditto. - -2013-12-31 Alexander Ivchenko - Maxim Kuznetsov - Sergey Lega - Anna Tikhonova - Ilya Tocar - Andrey Turetskiy - Ilya Verbin - Kirill Yukhin - Michael Zolotukhin - - * gcc.target/i386/pr49002-2.c: allow vmovapd generation. - -2013-12-31 Sandra Loosemore - Chung-Lin Tang - Based on patches from Altera Corporation - - * gcc.dg/stack-usage-1.c (SIZE): Define case for __nios2__. - * gcc.dg/20040813-1.c: Skip for nios2-*-*. - * gcc.dg/20020312-2.c: Add __nios2__ case. - * g++.dg/other/PR23205.C: Skip for nios2-*-*. - * g++.dg/other/pr23205-2.C: Skip for nios2-*-*. - * g++.dg/cpp0x/constexpr-rom.C: Skip for nios2-*-*. - * g++.dg/cpp0x/alias-decl-debug-0.C: Skip for nios2-*-*. - * g++.old-deja/g++.jason/thunk3.C: Skip for nios2-*-*. - * lib/target-supports.exp (check_profiling_available): Check for - nios2-*-elf. - * gcc.c-torture/execute/pr47237.x:: Skip for nios2-*-*. - * gcc.c-torture/execute/20101011-1.c: Skip for nios2-*-*. - * gcc.c-torture/execute/builtins/lib/chk.c (memset): Place - char-based memset loop before inline check, to prevent - problems when called to initialize .bss. Update comments. - * gcc.target/nios2/nios2.exp: New DejaGNU file. - * gcc.target/nios2/nios2-custom-1.c: New test. - * gcc.target/nios2/nios2-trap-insn.c: New test. - * gcc.target/nios2/nios2-builtin-custom.c: New test. - * gcc.target/nios2/nios2-builtin-io.c: New test. - * gcc.target/nios2/nios2-stack-check-1.c: New test. - * gcc.target/nios2/nios2-stack-check-2.c: New test. - * gcc.target/nios2/nios2-rdctl.c: New test. - * gcc.target/nios2/nios2-wrctl.c: New test. - * gcc.target/nios2/nios2-wrctl-zero.c: New test. - * gcc.target/nios2/nios2-wrctl-not-zero.c: New test. - * gcc.target/nios2/nios2-rdwrctl-1.c: New test. - * gcc.target/nios2/nios2-reg-constraints.c: New test. - * gcc.target/nios2/nios2-ashlsi3-one_shift.c: New test. - * gcc.target/nios2/nios2-mul-options-1.c: New test. - * gcc.target/nios2/nios2-mul-options-2.c: New test. - * gcc.target/nios2/nios2-mul-options-3.c: New test. - * gcc.target/nios2/nios2-mul-options-4.c: New test. - * gcc.target/nios2/nios2-nor.c: New test. - * gcc.target/nios2/nios2-stxio.c: New test. - * gcc.target/nios2/custom-fp-1.c: New test. - * gcc.target/nios2/custom-fp-2.c: New test. - * gcc.target/nios2/custom-fp-3.c: New test. - * gcc.target/nios2/custom-fp-4.c: New test. - * gcc.target/nios2/custom-fp-5.c: New test. - * gcc.target/nios2/custom-fp-6.c: New test. - * gcc.target/nios2/custom-fp-7.c: New test. - * gcc.target/nios2/custom-fp-8.c: New test. - * gcc.target/nios2/custom-fp-cmp-1.c: New test. - * gcc.target/nios2/custom-fp-conversion.c: New test. - * gcc.target/nios2/custom-fp-double.c: New test. - * gcc.target/nios2/custom-fp-float.c: New test. - * gcc.target/nios2/nios2-int-types.c: New test. - * gcc.target/nios2/nios2-cache-1.c: New test. - * gcc.target/nios2/nios2-cache-2.c: New test. - -2013-12-30 Mike Stump - - PR c++/41090 - * g++.dg/ext/label13.C: Update to not expect failures. - -2013-12-30 Janus Weil - - PR fortran/58998 - * gfortran.dg/generic_28.f90: New. - -2013-12-30 Jakub Jelinek - - PR tree-optimization/59591 - * gcc.dg/vect/pr59591-1.c: New test. - * gcc.dg/vect/pr59591-2.c: New test. - * gcc.target/i386/pr59591-1.c: New test. - * gcc.target/i386/pr59591-2.c: New test. - - PR target/59501 - * gcc.target/i386/pr59501-1.c: New test. - * gcc.target/i386/pr59501-1a.c: New test. - * gcc.target/i386/pr59501-2.c: New test. - * gcc.target/i386/pr59501-2a.c: New test. - * gcc.target/i386/pr59501-3.c: New test. - * gcc.target/i386/pr59501-3a.c: New test. - * gcc.target/i386/pr59501-4.c: New test. - * gcc.target/i386/pr59501-4a.c: New test. - * gcc.target/i386/pr59501-5.c: New test. - * gcc.target/i386/pr59501-6.c: New test. - -2013-12-30 H.J. Lu - - PR target/59605 - * gcc.dg/pr59605.c: New test. - -2013-12-27 Yury Gribov - - PR target/59585 - * c-c++-common/ubsan/div-by-zero-1.c: Fixed pattern. - * c-c++-common/ubsan/div-by-zero-2.c: Likewise. - * c-c++-common/ubsan/div-by-zero-3.c: Likewise. - * c-c++-common/ubsan/load-bool-enum.c: Likewise. - * c-c++-common/ubsan/overflow-add-2.c: Likewise. - * c-c++-common/ubsan/overflow-mul-2.c: Likewise. - * c-c++-common/ubsan/overflow-mul-4.c: Likewise. - * c-c++-common/ubsan/overflow-negate-1.c: Likewise. - * c-c++-common/ubsan/overflow-sub-2.c: Likewise. - * c-c++-common/ubsan/pr59333.c: Likewise. - * c-c++-common/ubsan/shift-1.c: Likewise. - * c-c++-common/ubsan/shift-2.c: Likewise. - * c-c++-common/ubsan/shift-4.c: Likewise. - * c-c++-common/ubsan/vla-1.c: Likewise. - -2013-12-26 H.J. Lu - - * g++.old-deja/g++.other/store-expr1.C (dg-options): Replace - -mtune=i686 with -mtune=generic. - * g++.old-deja/g++.other/store-expr2.C (dg-options): Likewise. - -2013-12-26 H.J. Lu - - * gcc.target/i386/andor-2.c (dg-options): Replace -mtune=i686 - with -mtune=generic. - -2013-12-26 H.J. Lu - - PR target/59588 - * gcc.target/i386/pr59588-1.c: New file. - * gcc.target/i386/pr59588-2.c: Likewise. - -2013-12-26 Uros Bizjak - H.J. Lu - - PR target/59601 - * g++.dg/ext/mv14.C: New tests. - * g++.dg/ext/mv15.C: Likewise. - -2013-12-25 Allan Sandfeld Jensen - - PR target/59422 - * gcc.target/i386/funcspec-5.c (test_fma, test_xop, test_no_fma, - test_no_xop, test_arch_corei7, test_arch_corei7_avx, - test_arch_core_avx2, test_arch_bdver1, test_arch_bdver2, - test_arch_bdver3, test_tune_corei7, test_tune_corei7_avx, - test_tune_core_avx2, test_tune_bdver1, test_tune_bdver2 and - test_tune_bdver3): New function prototypes. - -2013-12-24 Renlin Li - - * gcc.target/arm/fixed_float_conversion.c: New test case. - -2013-12-23 Bingfeng Mei - - * gcc.dg/vect/vect-neg-store-1.c: New test. - * gcc.dg/vect/vect-neg-store-2.c: Ditto. - -2013-12-23 Bingfeng Mei - - PR middle-end/59569 - * gcc.c-torture/compile/pr59569-1.c: New test. - * gcc.c-torture/compile/pr59569-2.c: Ditto. - -2013-12-23 Marek Polacek - - PR c++/59111 - * g++.dg/cpp0x/pr59111.C: New test. - * g++.dg/cpp1y/pr59110.C: New test. - -2013-12-22 Uros Bizjak - - * gcc.target/x86_64/abi/callabi/func-2a.c (dg-do): Remove - target selector. - * gcc.target/x86_64/abi/callabi/func-indirect-2a.c (dg-do): Ditto. - * gcc.target/x86_64/abi/callabi/vaarg-4a.c (dg-do): Ditto. - * gcc.target/x86_64/abi/callabi/vaarg-5a.c (dg-do): Ditto. - -2013-12-20 Richard Earnshaw - - * gcc.target/arm/nested-apcs.c: New test. - -2013-12-20 Jakub Jelinek - - PR c++/59255 - * g++.dg/tree-prof/pr59255.C: New test. - -2013-12-20 Kyrylo Tkachov - - * gcc.target/arm/neon-vceq_p64.c: New test. - * gcc.target/arm/neon-vtst_p64.c: Likewise. - -2013-12-20 Bingfeng Mei - - PR tree-optimization/59544 - * gcc.target/i386/pr59544.c: New test. - -2013-12-20 Jakub Jelinek - - PR tree-optimization/59413 - * gcc.c-torture/execute/pr59413.c: New test. - - * c-c++-common/ubsan/load-bool-enum.c: New test. - -2013-12-04 Kyrylo Tkachov - - * lib/target-supports.exp (check_effective_target_arm_crypto_ok): - New procedure. - (add_options_for_arm_crypto): Likewise. - * gcc.target/arm/crypto-vaesdq_u8.c: New test. - * gcc.target/arm/crypto-vaeseq_u8.c: Likewise. - * gcc.target/arm/crypto-vaesimcq_u8.c: Likewise. - * gcc.target/arm/crypto-vaesmcq_u8.c: Likewise. - * gcc.target/arm/crypto-vldrq_p128.c: Likewise. - * gcc.target/arm/crypto-vmull_high_p64.c: Likewise. - * gcc.target/arm/crypto-vmullp64.c: Likewise. - * gcc.target/arm/crypto-vsha1cq_u32.c: Likewise. - * gcc.target/arm/crypto-vsha1h_u32.c: Likewise. - * gcc.target/arm/crypto-vsha1mq_u32.c: Likewise. - * gcc.target/arm/crypto-vsha1pq_u32.c: Likewise. - * gcc.target/arm/crypto-vsha1su0q_u32.c: Likewise. - * gcc.target/arm/crypto-vsha1su1q_u32.c: Likewise. - * gcc.target/arm/crypto-vsha256h2q_u32.c: Likewise. - * gcc.target/arm/crypto-vsha256hq_u32.c: Likewise. - * gcc.target/arm/crypto-vsha256su0q_u32.c: Likewise. - * gcc.target/arm/crypto-vsha256su1q_u32.c: Likewise. - * gcc.target/arm/crypto-vstrq_p128.c: Likewise. - * gcc.target/arm/neon/vbslQp64: Generate. - * gcc.target/arm/neon/vbslp64: Likewise. - * gcc.target/arm/neon/vcombinep64: Likewise. - * gcc.target/arm/neon/vcreatep64: Likewise. - * gcc.target/arm/neon/vdupQ_lanep64: Likewise. - * gcc.target/arm/neon/vdupQ_np64: Likewise. - * gcc.target/arm/neon/vdup_lanep64: Likewise. - * gcc.target/arm/neon/vdup_np64: Likewise. - * gcc.target/arm/neon/vextQp64: Likewise. - * gcc.target/arm/neon/vextp64: Likewise. - * gcc.target/arm/neon/vget_highp64: Likewise. - * gcc.target/arm/neon/vget_lowp64: Likewise. - * gcc.target/arm/neon/vld1Q_dupp64: Likewise. - * gcc.target/arm/neon/vld1Q_lanep64: Likewise. - * gcc.target/arm/neon/vld1Qp64: Likewise. - * gcc.target/arm/neon/vld1_dupp64: Likewise. - * gcc.target/arm/neon/vld1_lanep64: Likewise. - * gcc.target/arm/neon/vld1p64: Likewise. - * gcc.target/arm/neon/vld2_dupp64: Likewise. - * gcc.target/arm/neon/vld2p64: Likewise. - * gcc.target/arm/neon/vld3_dupp64: Likewise. - * gcc.target/arm/neon/vld3p64: Likewise. - * gcc.target/arm/neon/vld4_dupp64: Likewise. - * gcc.target/arm/neon/vld4p64: Likewise. - * gcc.target/arm/neon/vreinterpretQf32_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQf32_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_f32: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_p16: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_p8: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_s16: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_s32: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_s64: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_s8: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_u16: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_u32: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_u64: Likewise. - * gcc.target/arm/neon/vreinterpretQp128_u8: Likewise. - * gcc.target/arm/neon/vreinterpretQp16_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQp16_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_f32: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_p16: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_p8: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_s16: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_s32: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_s64: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_s8: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_u16: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_u32: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_u64: Likewise. - * gcc.target/arm/neon/vreinterpretQp64_u8: Likewise. - * gcc.target/arm/neon/vreinterpretQp8_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQp8_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQs16_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQs16_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQs32_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQs32_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQs64_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQs64_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQs8_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQs8_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQu16_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQu16_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQu32_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQu32_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQu64_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQu64_p64: Likewise. - * gcc.target/arm/neon/vreinterpretQu8_p128: Likewise. - * gcc.target/arm/neon/vreinterpretQu8_p64: Likewise. - * gcc.target/arm/neon/vreinterpretf32_p64: Likewise. - * gcc.target/arm/neon/vreinterpretp16_p64: Likewise. - * gcc.target/arm/neon/vreinterpretp64_f32: Likewise. - * gcc.target/arm/neon/vreinterpretp64_p16: Likewise. - * gcc.target/arm/neon/vreinterpretp64_p8: Likewise. - * gcc.target/arm/neon/vreinterpretp64_s16: Likewise. - * gcc.target/arm/neon/vreinterpretp64_s32: Likewise. - * gcc.target/arm/neon/vreinterpretp64_s64: Likewise. - * gcc.target/arm/neon/vreinterpretp64_s8: Likewise. - * gcc.target/arm/neon/vreinterpretp64_u16: Likewise. - * gcc.target/arm/neon/vreinterpretp64_u32: Likewise. - * gcc.target/arm/neon/vreinterpretp64_u64: Likewise. - * gcc.target/arm/neon/vreinterpretp64_u8: Likewise. - * gcc.target/arm/neon/vreinterpretp8_p64: Likewise. - * gcc.target/arm/neon/vreinterprets16_p64: Likewise. - * gcc.target/arm/neon/vreinterprets32_p64: Likewise. - * gcc.target/arm/neon/vreinterprets64_p64: Likewise. - * gcc.target/arm/neon/vreinterprets8_p64: Likewise. - * gcc.target/arm/neon/vreinterpretu16_p64: Likewise. - * gcc.target/arm/neon/vreinterpretu32_p64: Likewise. - * gcc.target/arm/neon/vreinterpretu64_p64: Likewise. - * gcc.target/arm/neon/vreinterpretu8_p64: Likewise. - * gcc.target/arm/neon/vsliQ_np64: Likewise. - * gcc.target/arm/neon/vsli_np64: Likewise. - * gcc.target/arm/neon/vsriQ_np64: Likewise. - * gcc.target/arm/neon/vsri_np64: Likewise. - * gcc.target/arm/neon/vst1Q_lanep64: Likewise. - * gcc.target/arm/neon/vst1Qp64: Likewise. - * gcc.target/arm/neon/vst1_lanep64: Likewise. - * gcc.target/arm/neon/vst1p64: Likewise. - * gcc.target/arm/neon/vst2p64: Likewise. - * gcc.target/arm/neon/vst3p64: Likewise. - * gcc.target/arm/neon/vst4p64: Likewise. - -2013-12-19 Kyrylo Tkachov - - * lib/target-supports.exp (add_options_for_arm_crc): New procedure. - (check_effective_target_arm_crc_ok_nocache): Likewise. - (check_effective_target_arm_crc_ok): Likewise. - * gcc.target/arm/acle/: New directory. - * gcc.target/arm/acle/acle.exp: New. - * gcc.target/arm/acle/crc32b.c: New test. - * gcc.target/arm/acle/crc32h.c: Likewise. - * gcc.target/arm/acle/crc32w.c: Likewise. - * gcc.target/arm/acle/crc32d.c: Likewise. - * gcc.target/arm/acle/crc32cb.c: Likewise. - * gcc.target/arm/acle/crc32ch.c: Likewise. - * gcc.target/arm/acle/crc32cw.c: Likewise. - * gcc.target/arm/acle/crc32cd.c: Likewise. - -2013-12-19 Kyrylo Tkachov - - * c-c++-common/cilk-plus/SE/ef_error.c: Use -fopen-simd. - -2013-12-19 Oleg Endo - - * gcc.dg/long-long-compare-1.c: Don't use deprecated -mcbranchdi option - for target sh4-*-*. - -2013-12-19 Tejas Belagod - - * gcc.target/aarch64/pmull_1.c: New. - -2013-12-19 Tejas Belagod - - * gcc.target/aarch64/sha256_1.c: New. - -2013-12-19 Tejas Belagod - - * gcc.target/aarch64/sha1_1.c: New. - -2013-12-19 Tejas Belagod - - * gcc.target/aarch64/aes_1.c: New. - -2013-12-19 Dominik Vogt - Andreas Krebbel - - * gcc.target/s390/hotpatch-1.c: New test - * gcc.target/s390/hotpatch-2.c: New test - * gcc.target/s390/hotpatch-3.c: New test - * gcc.target/s390/hotpatch-4.c: New test - * gcc.target/s390/hotpatch-5.c: New test - * gcc.target/s390/hotpatch-6.c: New test - * gcc.target/s390/hotpatch-7.c: New test - * gcc.target/s390/hotpatch-8.c: New test - * gcc.target/s390/hotpatch-9.c: New test - * gcc.target/s390/hotpatch-10.c: New test - * gcc.target/s390/hotpatch-11.c: New test - * gcc.target/s390/hotpatch-12.c: New test - * gcc.target/s390/hotpatch-compile-1.c: New test - * gcc.target/s390/hotpatch-compile-2.c: New test - * gcc.target/s390/hotpatch-compile-3.c: New test - * gcc.target/s390/hotpatch-compile-4.c: New test - * gcc.target/s390/hotpatch-compile-5.c: New test - * gcc.target/s390/hotpatch-compile-6.c: New test - * gcc.target/s390/hotpatch-compile-7.c: New test - -2013-12-19 Kyrylo Tkachov - - * c-c++-common/cilk-plus/SE/ef_error.c: Add fopenmp effective - target check. - -2013-12-18 Steven G. Kargl - - * gfortran.dg/io_err_1.f90: New test. - -2013-12-18 Balaji V. Iyer - - * c-c++-common/cilk-plus/SE/ef_test.c: New test. - * c-c++-common/cilk-plus/SE/ef_test2.c: Likewise. - * c-c++-common/cilk-plus/SE/vlength_errors.c: Likewise. - * c-c++-common/cilk-plus/SE/ef_error.c: Likewise. - * c-c++-common/cilk-plus/SE/ef_error2.c: Likewise. - * c-c++-common/cilk-plus/SE/ef_error3.c: Likewise. - * gcc.dg/cilk-plus/cilk-plus.exp: Added calls for the above tests. - -2013-12-18 Jakub Jelinek - - PR target/59539 - * gcc.target/i386/pr59539-1.c: New test. - * gcc.target/i386/pr59539-2.c: New test. - -2013-12-18 Nick Clifton - - * gcc.dg/pr32912-2.c: Fix for 16-bit targets. - -2013-12-18 Eric Botcazou - - * gcc.dg/pr59418.c: New test. - -2013-12-17 Jakub Jelinek - - PR tree-optimization/59523 - * gcc.dg/pr59523.c: New test. - -2013-12-17 Marek Polacek - - * c-c++-common/ubsan/overflow-int128.c: New test. - -2013-12-17 Jakub Jelinek - - PR ipa/58290 - * gfortran.dg/pr58290.f90: New test. - -2013-12-17 Thomas Schwinge - - * gcc.dg/dfp/wtr-conversion-1.c (testfunc1): Fix typo. - -2013-12-17 Jan Hubicka - - * g++.dg/ipa/devirt-13.C: Update template. - -2013-12-16 Janus Weil - - PR fortran/54949 - * gfortran.dg/proc_ptr_44.f90: New. - -2013-12-16 Jakub Jelinek - - * c-c++-common/ubsan/overflow-mul-3.c: New test. - * c-c++-common/ubsan/overflow-mul-4.c: New test. - - PR libgomp/59337 - * gfortran.dg/gomp/pr59337.f90: New test. - -2013-12-16 Jakub Jelinek - - PR middle-end/58956 - PR middle-end/59470 - * gcc.target/i386/pr59470.c: New test. - -2013-12-14 Jan Hubicka - - PR ipa/59265 - g++.dg/torture/pr59265.C: New testcase. - -2013-12-15 Uros Bizjak - - * gcc.dg/vect/vect-nop-move.c (foo32x2_be): Call - __builtin_ia32_emms for 32bit x86 targets. - (foo32x2_le): Ditto. - (main): Reorder function calls. - -2013-12-15 Uros Bizjak - - * gcc.target/i386/pr57756.c (dg-options): Add -mno-sse3. - -2013-12-15 Uros Bizjak - - PR testsuite/58630 - * gcc.target/i386/pr43662.c (dg-options): - Add -maccumulate-outgoing-args. - * gcc.target/i386/pr43869.c (dg-options): Ditto. - * gcc.target/i386/pr57003.c (dg-options): Ditto. - * gcc.target/i386/avx-vzeroupper-16.c (dg-options): - Remove -mtune=generic and add -maccumulate-outgoing-args instead. - * gcc.target/i386/avx-vzeroupper-17.c (dg-options): Ditto. - * gcc.target/i386/avx-vzeroupper-18.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/func-1.c (dg-options): - Add -maccumulate-outgoing-args. - * gcc.target/x86_64/abi/callabi/func-2a.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/func-2b.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/func-indirect.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/func-indirect-2a.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/func-indirect-2b.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/leaf-1.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/leaf-2.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/pr38891.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/vaarg-1.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/vaarg-2.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/vaarg-3.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/vaarg-4a.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/vaarg-4b.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/vaarg-5a.c (dg-options): Ditto. - * gcc.target/x86_64/abi/callabi/vaarg-5b.c (dg-options): Ditto. - -2013-12-15 Janus Weil - - PR fortran/59493 - * gfortran.dg/unlimited_polymorphic_15.f90: New. - -2013-12-14 Jan Hubicka - - PR middle-end/58477 - * g++.dg/ipa/devirt-19.C: New testcase. - -2013-12-14 Marek Polacek - - * c-c++-common/ubsan/overflow-negate-1.c: Add more testing. Don't - require int128 target. - * c-c++-common/ubsan/overflow-negate-2.c: New test. - -2013-12-14 Janus Weil - - PR fortran/59502 - * gfortran.dg/class_57.f90: New. - -2013-12-14 H.J. Lu - - PR target/59492 - * g++.dg/other/pr59492.C: New file. - -2013-12-14 Andreas Schwab - - * g++.dg/cilk-plus/cilk-plus.exp: Fix last change. - -2013-12-14 Eric Botcazou - - * gcc.dg/pr59350.c: New test. - -2013-12-14 Marek Polacek - - * c-c++-common/ubsan/overflow-1.c: New test. - * c-c++-common/ubsan/overflow-2.c: New test. - -2013-12-14 Marek Polacek - - PR sanitizer/59503 - * c-c++-common/ubsan/pr59503.c: New test. - -2013-12-14 Janus Weil - - PR fortran/59450 - * gfortran.dg/typebound_proc_31.f90: New. - -2013-12-13 Rainer Orth - - * g++.dg/cilk-plus/cilk-plus.exp: Properly set ld_library_path. - Use TEST_EXTRA_LIBS instead of ALWAYS_CFLAGS. - -2013-12-03 Jeff Law - - PR tree-optimization/45685 - * gcc.dg/tree-ssa/pr45685.c: New test. - -2013-12-13 Bin Cheng - - PR tree-optimization/58296 - PR tree-optimization/41488 - * gcc.dg/tree-ssa/scev-7.c: New test. - * gcc.dg/pr41488.c: New test. - * g++.dg/pr59445.C: New test. - -2013-12-12 Tobias Burnus - - PR fortran/59440 - * gfortran.dg/namelist_83.f90: New. - * gfortran.dg/namelist_83_2.f90: New. - -2013-12-12 Jakub Jelinek - - PR middle-end/59470 - * g++.dg/opt/pr59470.C: New test. - -2013-12-12 Max Ostapenko - - * c-c++-common/tsan/free_race2.c: New file. - * c-c++-common/tsan/race_on_barrier2.c: Likewise. - * c-c++-common/tsan/race_on_mutex.c: Likewise. - * c-c++-common/tsan/race_on_mutex2.c: Likewise. - * c-c++-common/tsan/simple_race.c: Likewise. - * c-c++-common/tsan/simple_stack.c: Likewise. - * g++.dg/tsan/aligned_vs_unaligned_race.C: Likewise. - * g++.dg/tsan/atomic_free.C: Likewise. - * g++.dg/tsan/atomic_free2.C: Likewise. - * g++.dg/tsan/benign_race.C: Likewise. - * g++.dg/tsan/cond_race.C: Likewise. - * g++.dg/tsan/default_options.C: Likewise. - * g++.dg/tsan/fd_close_norace.C: Likewise. - * g++.dg/tsan/fd_close_norace2.C: Likewise. - * g++-dg/tsan/tsan.exp: Modified to run additional C++ tests. - -2013-12-12 Jakub Jelinek - - PR libgomp/59467 - * gfortran.dg/gomp/pr59467.f90: New test. - * c-c++-common/gomp/pr59467.c: New test. - -2013-12-12 Ryan Mansfield - - PR testsuite/59442 - * gcc.target/i386/sse2-movapd-1.c: Fix alignment attributes. - * gcc.target/i386/sse2-movapd-2.c: Likewise. - * gcc.target/i386/avx-vmovapd-256-1.c: Likewise. - * gcc.target/i386/avx-vmovapd-256-2.c: Likewise. - -2013-12-11 Sriraman Tallam - - PR target/59390 - * gcc.target/i386/pr59390.c: New test. - * gcc.target/i386/pr59390_1.c: New test. - * gcc.target/i386/pr59390_2.c: New test. - -2013-12-11 Balaji V. Iyer - - * g++.dg/cilk-plus/CK/catch_exc.cc: New test case. - * g++.dg/cilk-plus/CK/const_spawn.cc: Likewise. - * g++.dg/cilk-plus/CK/fib-opr-overload.cc: Likewise. - * g++.dg/cilk-plus/CK/fib-tplt.cc: Likewise. - * g++.dg/cilk-plus/CK/lambda_spawns.cc: Likewise. - * g++.dg/cilk-plus/CK/lambda_spawns_tplt.cc: Likewise. - * g++.dg/cilk-plus/cilk-plus.exp: Added support to run Cilk Keywords - test stored in c-c++-common. Also, added the Cilk runtime's library - to the ld_library_path. - -2013-12-11 Bernd Edlinger - - PR middle-end/59134 - * gcc.c-torture/compile/pr59134.c: New test. - * gnat.dg/misaligned_volatile.adb: New test. - -2013-12-11 Bernd Edlinger - Sandra Loosemore - - * gcc.dg/pr23623.c: Update to test interaction with C++ memory model. - -2013-12-11 Sandra Loosemore - - PR middle-end/23623 - PR middle-end/48784 - PR middle-end/56341 - PR middle-end/56997 - * gcc.dg/pr23623.c: New test. - * gcc.dg/pr48784-1.c: New test. - * gcc.dg/pr48784-2.c: New test. - * gcc.dg/pr56341-1.c: New test. - * gcc.dg/pr56341-2.c: New test. - * gcc.dg/pr56997-1.c: New test. - * gcc.dg/pr56997-2.c: New test. - * gcc.dg/pr56997-3.c: New test. - -2013-12-11 Janus Weil - - PR fortran/58916 - * gfortran.dg/allocate_with_source_4.f90: New. - -2013-12-11 Jakub Jelinek - - PR tree-optimization/59417 - * gcc.c-torture/compile/pr59417.c: New test. - - PR tree-optimization/59386 - * gcc.c-torture/compile/pr59386.c: New test. - -2013-12-11 Bin Cheng - - Reverted: - 2013-12-10 Bin Cheng - PR tree-optimization/41488 - * gcc.dg/tree-ssa/scev-7.c: New test. - * gcc.dg/pr41488.c: New test. - -2013-12-10 Janus Weil - - PR fortran/35831 - * gfortran.dg/c_by_val_5.f90: Modified. - * gfortran.dg/dummy_procedure_10.f90: New. - -2013-12-10 Yury Gribov - - * gcc-dg/tsan/tsan.exp: Added missing call to torture-finish. - * g++-dg/tsan/tsan.exp: Likewise. - -2013-12-10 Richard Biener - - PR middle-end/38474 - * gcc.dg/ipa/ipa-pta-14.c: Un-XFAIL. - -2013-12-10 Jakub Jelinek - - * gcc.dg/vect/vect-cond-11.c: New test. - * gcc.target/i386/vect-cond-1.c: New test. - * gcc.target/i386/avx2-gather-5.c: New test. - * gcc.target/i386/avx2-gather-6.c: New test. - * gcc.dg/vect/vect-mask-loadstore-1.c: New test. - * gcc.dg/vect/vect-mask-load-1.c: New test. - -2013-12-09 Marek Polacek - - PR sanitizer/59437 - * g++.dg/ubsan/pr59437.C: New test. - -2013-12-10 Max Ostapenko - - * c-c++-common/tsan/thread_leak2.c: `dg-skip-if' removed. - * gcc-dg/tsan/tsan.exp: Run only with '-O0' and '-O2' options. - * g++-dg/tsan/tsan.exp: Likewise. - -2013-12-10 Eric Botcazou - - * gcc.dg/vect/pr58508.c: XFAIL for vect_no_align. - * gcc.dg/vect/vect-reduc-pattern-3.c: Require vect_int_mult. - -2013-12-10 Bin Cheng - - PR tree-optimization/41488 - * gcc.dg/tree-ssa/scev-7.c: New test. - * gcc.dg/pr41488.c: New test. - -2013-12-09 Joseph Myers - - PR preprocessor/55715 - * gcc.dg/cpp/expr-overflow-1.c: New test. - -2013-12-10 Tobias Burnus - - PR fortran/59428 - PR fortran/58099 - PR fortran/58676 - PR fortran/41724 - * gfortran.dg/proc_ptr_result_4.f90: Fix proc-ptr interface. - -2013-12-09 Paolo Carlini - - PR c++/59435 - * g++.dg/cpp0x/variadic-sizeof3.C: New. - -2013-12-09 David Malcolm - - * g++.dg/plugin/selfassign.c (execute_warn_self_assign): Eliminate - use of FOR_EACH_BB in favor of FOR_EACH_BB_FN, to make use of cfun - explicit. - * gcc.dg/plugin/selfassign.c (execute_warn_self_assign): Likewise. - -2013-12-09 Richard Earnshaw - - * gcc.target/arm/ldrd-strd-offset.c: New. - -2013-12-09 Martin Jambor - - * gcc.c-torture/compile/pr39834.c: Remove optimization level option. - * gcc.c-torture/compile/pr48929.c: Likewise. - * gcc.c-torture/compile/pr55569.c: Likewise. - * gcc.c-torture/compile/sra-1.c: Likewise. - * gcc.c-torture/compile/pr45085.c: Moved to... - * gcc.dg/tree-ssa/pr45085.c: ...here, added compile dg-do. - -2013-12-09 Marek Polacek - - PR sanitizer/59415 - * g++.dg/ubsan/pr59415.C: New test. - -2013-12-09 Paolo Carlini - - PR c++/52707 - * g++.dg/cpp0x/deleted2.C: New. - -2013-12-09 Kyrylo Tkachov - - * gcc.dg/tree-ssa/loop-31.c: Update scan pattern. - -2013-12-09 Richard Sandiford - - * lib/asan-dg.exp (asan-gtest): Remove expected output from the - pass/fail line and add it to the log instead. - -2013-12-08 Oleg Endo - - PR target/52898 - PR target/51697 - * gcc.target/sh/pr51697.c: New. - -2013-12-08 Uros Bizjak - - * gcc.dg/macro-fusion-1.c: Cleanup sched2 rtl dump. - * gcc.dg/macro-fusion-2.c: Ditto. - * gcc.dg/vect/vect-simd-clone-10a.c: Cleanup vect tree dump. - * gcc.dg/vect/vect-simd-clone-12a.c: Ditto. - -2013-12-08 Tobias Burnus - - PR fortran/58099 - PR fortran/58676 - PR fortran/41724 - * gfortran.dg/elemental_subroutine_8.f90: New. - * gfortran.dg/proc_decl_9.f90: Add ELEMENTAL to make valid. - * gfortran.dg/proc_ptr_11.f90: Ditto. - * gfortran.dg/proc_ptr_result_8.f90: Ditto. - * gfortran.dg/proc_ptr_32.f90: Update dg-error. - * gfortran.dg/proc_ptr_33.f90: Ditto. - * gfortran.dg/proc_ptr_result_1.f90: Add abstract interface - which is not elemental. - * gfortran.dg/proc_ptr_result_7.f90: Ditto. - -2013-12-07 Janus Weil - - PR fortran/59414 - * gfortran.dg/class_result_2.f90: New. - -2013-12-06 Jakub Jelinek - - PR tree-optimization/59388 - * gcc.c-torture/execute/pr59388.c: New test. - -2013-12-06 Dominique d'Humieres - - PR testsuite/59043 - * g++.dg/pubtypes.C: Adjust the regular expression. - * gcc.dg/pubtypes-1.c: Likewise. - * gcc.dg/pubtypes-2.c: Likewise. - * gcc.dg/pubtypes-3.c: Likewise. - * gcc.dg/pubtypes-4.c: Likewise. - -2013-12-06 Tejas Belagod - - * gcc.dg/vect/vect-nop-move.c: Fix dg options. - -2013-12-06 Uros Bizjak - - PR target/59405 - * gcc.target/i386/pr59405.c: New test. - -2013-12-06 Ian Bolton - Mark Mitchell - - PR target/59091 - * gcc.target/arm/builtin-trap.c: New test. - * gcc.target/arm/thumb-builtin-trap.c: Likewise. - -2013-12-06 Eric Botcazou - - * gcc.target/sparc/pdistn.c: New test. - * gcc.target/sparc/pdistn-2.c: Likewise. - -2013-12-06 Richard Biener - - PR tree-optimization/59058 - * gcc.dg/torture/pr59058.c: New testcase. - -2013-12-05 Paolo Carlini - - * g++.dg/warn/pr15774-1.C: Adjust expected message. - -2013-12-05 Vladimir Makarov - - PR rtl-optimization/59317 - * gcc.target/mips/pr59317.c: New. - -2013-12-05 Marek Polacek - - PR sanitizer/59333 - PR sanitizer/59397 - * c-c++-common/ubsan/pr59333.c: New test. - * c-c++-common/ubsan/pr59397.c: New test. - -2013-12-05 Tejas Belagod - - * gcc.dg/vect/vect-nop-move.c: New test. - -2013-12-05 Max Ostapenko - - * c-c++-common/tsan/atomic_stack.c: New test. - * c-c++-common/tsan/fd_pipe_race.c: New test. - * c-c++-common/tsan/free_race.c: New test. - * c-c++-common/tsan/mutexset1.c: New test. - * c-c++-common/tsan/race_on_barrier.c: New test. - * c-c++-common/tsan/sleep_sync.c: New test. - * c-c++-common/tsan/thread_leak.c: New test. - * c-c++-common/tsan/thread_leak1.c: New test. - * c-c++-common/tsan/thread_leak2.c: New test. - * c-c++-common/tsan/tiny_race.c: New test. - * c-c++-common/tsan/tls_race.c: New test. - * c-c++-common/tsan/write_in_reader_lock.c: New test. - * lib/tsan-dg.exp: New file. - * gcc.dg/tsan/tsan.exp: New file. - * g++.dg/tsan/tsan.exp: New file. - * g++.dg/dg.exp: Prune tsan subdirectory. - -2013-12-05 Kirill Yukhin - - * gcc.target/i386/readeflags-1.c: New. - * gcc.target/i386/writeeflags-1.c: Ditto. - -2013-12-05 Yury Gribov - - PR sanitizer/59369 - * c-c++-common/asan/pr59063-1.c: Disable on non-Linux platforms. - * c-c++-common/asan/pr59063-2.c: Likewise. - -2013-12-05 Paolo Carlini - - * g++.dg/cpp0x/constexpr-46336.C: Adjust expected messages. - * g++.dg/cpp0x/defaulted2.C: Likewise. - * g++.dg/cpp1y/auto-fn8.C: Likewise. - * g++.dg/gomp/udr-3.C: Likewise. - * g++.dg/lookup/extern-c-redecl5.C: Likewise. - * g++.dg/lookup/linkage1.C: Likewise. - * g++.dg/overload/new1.C: Likewise. - * g++.dg/parse/friend5.C: Likewise. - * g++.dg/parse/namespace-alias-1.C: Likewise. - * g++.dg/parse/namespace10.C: Likewise. - * g++.dg/parse/redef2.C: Likewise. - * g++.dg/template/friend44.C: Likewise. - * g++.old-deja/g++.brendan/crash42.C: Likewise. - * g++.old-deja/g++.brendan/crash52.C: Likewise. - * g++.old-deja/g++.brendan/crash55.C: Likewise. - * g++.old-deja/g++.jason/overload21.C: Likewise. - * g++.old-deja/g++.jason/overload5.C: Likewise. - * g++.old-deja/g++.jason/redecl1.C: Likewise. - * g++.old-deja/g++.law/arm8.C: Likewise. - * g++.old-deja/g++.other/main1.C: Likewise. - -2013-12-05 Richard Biener - - PR tree-optimization/56787 - * gcc.dg/vect/pr56787.c: Adjust to not require vector float division. - -2013-12-05 Kostya Serebryany - - * c-c++-common/asan/null-deref-1.c: Update the test - to match the fresh asan run-time. - -2013-12-05 Richard Biener - - PR tree-optimization/59374 - * gcc.dg/torture/pr59374-1.c: New testcase. - * gcc.dg/torture/pr59374-2.c: Likewise. - -2013-12-05 Kirill Yukhin - - * gcc.target/ia64/pr52731.c: New. - -2013-12-04 Jeff Law - - * gcc.dg/pr38984.c: Use -fno-isolate-erroneous-paths-dereference. - * gcc.dg/tree-ssa/isolate-2.c: Explicitly turn on - -fisolate-erroneous-paths-attribute. - * gcc.dg/tree-ssa/isolate-4.c: Likewise. - -2013-12-04 Joseph Myers - - PR c/52023 - * gcc.dg/c11-align-6.c: New test. - -2013-12-04 Marek Polacek - - * c-c++-common/ubsan/overflow-mul-2.c: New test. - * c-c++-common/ubsan/overflow-add-1.c: New test. - * c-c++-common/ubsan/overflow-add-2.c: New test. - * c-c++-common/ubsan/overflow-mul-1.c: New test. - * c-c++-common/ubsan/overflow-sub-1.c: New test. - * c-c++-common/ubsan/overflow-sub-2.c: New test. - * c-c++-common/ubsan/overflow-negate-1.c: New test. - -2013-12-04 Marek Polacek - - PR c/54113 - * gcc.dg/pr54113.c: New test. - -2013-12-04 Jakub Jelinek - - PR c++/59268 - * g++.dg/cpp0x/constexpr-template6.C: New test. - -2013-12-04 Eric Botcazou - - * gnat.dg/pack19.adb: New test. - -2013-12-04 Jakub Jelinek - - PR rtl-optimization/58726 - * gcc.c-torture/execute/pr58726.c: New test. - - PR target/59163 - * g++.dg/torture/pr59163.C: New test. - - PR tree-optimization/59355 - * g++.dg/ipa/pr59355.C: New test. - -2013-12-04 Yufeng Zhang - - * gcc.dg/tree-ssa/slsr-39.c: Update. - * gcc.dg/tree-ssa/slsr-41.c: New test. - -2013-12-03 Adhemerval Zanella - - * gcc.target/powerpc/pr57363.c: New test. - -2013-12-03 Wei Mi - - PR rtl-optimization/59020 - * gcc.dg/pr59020.c: New. - * gcc.dg/macro-fusion-1.c: New. - * gcc.dg/macro-fusion-2.c: New. - -2013-12-03 Yury Gribov - - PR sanitizer/59063 - * lib/asan-dg.exp: Don't add anything to flags if libsanitizer - has not been found. - * lib/ubsan-dg.exp: Likewise. Append to flags also - -B${gccpath}/libsanitizer/. - -2013-12-03 Bill Schmidt - - * gcc.dg/vect/costmodel/ppc/costmodel-slp-34.c: Skip for little endian. - -2013-12-03 H.J. Lu - - PR target/59363 - * gcc.target/i386/pr59363.c: New file. - -2013-12-03 Marek Polacek - - PR c/59351 - * gcc.dg/pr59351.c: New test. - -2013-12-03 Chung-Ju Wu - - * gcc.dg/20020312-2.c: Add __nds32__ case. - * gcc.dg/builtin-apply2.c: Skip for nds32*-*-*. - * gcc.dg/sibcall-3.c: Expected fail for nds32*-*-*. - * gcc.dg/sibcall-4.c: Expected fail for nds32*-*-*. - * gcc.dg/stack-usage-1.c (SIZE): Define case for __nds32__. - * gcc.dg/torture/pr37868.c: Skip for nds32*-*-*. - * gcc.dg/torture/stackalign/builtin-apply-2.c: Skip for nds32*-*-*. - * gcc.dg/tree-ssa/20040204-1.c: Expected fail for nds32*-*-*. - * gcc.dg/tree-ssa/pr42585.c: Skip for nds32*-*-*. - * gcc.dg/tree-ssa/sra-12.c: Skip for nds32*-*-*. - * gcc.target/nds32: New nds32 specific directory and testcases. - * lib/target-supports.exp (check_profiling_available): Check for - nds32*-*-elf. - -2013-12-03 Jakub Jelinek - - PR tree-optimization/59362 - * gcc.c-torture/compile/pr59362.c: New test. - - PR middle-end/59011 - * gcc.dg/pr59011.c: New test. - - PR target/58864 - * g++.dg/opt/pr58864.C: New test. - -2013-12-02 Jeff Law - - PR tree-optimization/59322 - * gcc.c-torture/compile/pr59322.c: New test. - -2013-12-02 Sriraman Tallam - - PR target/58944 - * gcc.target/i386/pr58944.c: New test. - -2013-12-02 Joseph Myers - - PR c/58235 - * gcc.dg/c90-array-lval-8.c: New test. - -2013-12-02 Jakub Jelinek - - PR tree-optimization/59358 - * gcc.c-torture/execute/pr59358.c: New test. - - PR lto/59326 - * gcc.target/i386/i386.exp (check_effective_target_avx2): Move to... - * lib/target-supports.exp (check_effective_target_avx2): ... here. - (check_effective_target_vect_simd_clones): New. - * gcc.dg/vect/vect-simd-clone-1.c: Add dg-require-effective-target - vect_simd_clones. - * gcc.dg/vect/vect-simd-clone-2.c: Likewise. - * gcc.dg/vect/vect-simd-clone-3.c: Likewise. - * gcc.dg/vect/vect-simd-clone-4.c: Likewise. - * gcc.dg/vect/vect-simd-clone-5.c: Likewise. - * gcc.dg/vect/vect-simd-clone-6.c: Likewise. - * gcc.dg/vect/vect-simd-clone-7.c: Likewise. - * gcc.dg/vect/vect-simd-clone-8.c: Likewise. - * gcc.dg/vect/vect-simd-clone-9.c: Likewise. - * gcc.dg/vect/vect-simd-clone-10.c: Likewise. - * gcc.dg/vect/vect-simd-clone-11.c: Likewise. - * gcc.dg/vect/vect-simd-clone-12.c: Likewise. - -2013-12-02 Bernd Edlinger - - * gcc.dg/pr56997-4.c: New testcase. - -2013-12-02 Marek Polacek - - * c-c++-common/ubsan/vla-1.c: Split the tests into individual - functions. - -2013-12-02 Richard Biener - - PR tree-optimization/59139 - * gcc.dg/torture/pr59139.c: New testcase. - -2013-12-02 Eric Botcazou - - * gnat.dg/opt30.adb: New test. - -2013-12-01 Paul Thomas - - PR fortran/57354 - * gfortran.dg/realloc_on_assign_23.f90 : New test - -2013-12-01 Paul Thomas - - PR fortran/34547 - * gfortran.dg/null_5.f90 : Include new error. - * gfortran.dg/null_6.f90 : Include new error. - -2013-11-29 Marek Polacek - - PR sanitizer/59331 - * g++.dg/ubsan/pr59331.C: New test. - * g++.dg/ubsan/cxx1y-vla.C: Enable -Wall -Wno-unused-variable. - Disable the -w option. - * c-c++-common/ubsan/vla-1.c: Likewise. - * c-c++-common/ubsan/vla-2.c: Likewise. - * c-c++-common/ubsan/vla-3.c: Don't use the -w option. - -2013-11-29 Joseph Myers - - PR c/42262 - * gcc.dg/c99-init-5.c, gcc.dg/c99-init-6.c: New tests. - -2013-11-29 H.J. Lu - - * lib/asan-dg.exp (asan_link_flags): Properly add path to - libsanitizer.spec to cflags. - -2013-11-29 Richard Biener - - PR middle-end/59208 - * g++.dg/torture/pr59208.C: New testcase. - -2013-11-29 Jakub Jelinek - Yury Gribov - - PR sanitizer/59063 - * c-c++-common/asan/pr59063-1.c: New test. - * c-c++-common/asan/pr59063-2.c: Likewise. - * lib/asan-dg.exp: Add path to libsanitizer.spec to cflags. - * lib/ubsan-dg.exp: Likewise. - -2013-11-29 Eric Botcazou - - * gnat.dg/opt29.ad[sb]: New test. - -2013-11-29 Richard Biener - - PR middle-end/59338 - * gcc.dg/torture/pr59338.c: New testcase. - -2013-11-29 Jakub Jelinek - - PR lto/59326 - * gcc.dg/vect/vect-simd-clone-12.c: New test. - * gcc.dg/vect/vect-simd-clone-12a.c: New test. - * gcc.dg/vect/vect-simd-clone-10a.c: Remove extern keywords. - - PR c/59280 - * c-c++-common/pr59280.c: New test. - -2013-11-29 Zhenqiang Chen - - * gcc.target/arm/lp1243022.c: Skip target arm-neon. - -2013-11-29 Joseph Myers - - PR c/57574 - * gcc.dg/inline-35.c: New test. - -2013-11-28 Jakub Jelinek - - PR c++/59297 - * g++.dg/gomp/pr59297.C: New test. - -2013-11-28 Vladimir Makarov - - PR target/57293 - * gcc.target/i386/pr57293.c: New. - -2013-11-28 Kyrylo Tkachov - - * gcc.target/arm/vrinta-ce.c: New testcase. - -2013-11-28 Richard Biener - - PR lto/59323 - * gcc.dg/lto/pr59323-2_0.c: New testcase. - -2013-11-28 Richard Biener - - PR tree-optimization/59330 - * gcc.dg/torture/pr59330.c: New testcase. - -2013-11-28 Richard Biener - - PR lto/59323 - * gcc.dg/lto/pr59323_0.c: New testcase. - -2013-11-28 Jakub Jelinek - - PR middle-end/57393 - PR tree-optimization/58018 - PR tree-optimization/58131 - * gcc.dg/torture/pr57393-1.c: New test. - * gcc.dg/torture/pr57393-2.c: New test. - * gcc.dg/torture/pr57393-3.c: New test. - * gcc.dg/torture/pr58018.c: New test. - * gcc.dg/torture/pr58131.c: New test. - * gfortran.dg/pr57393-1.f90: New test. - * gfortran.dg/pr57393-2.f90: New test. - -2013-11-27 Bill Schmidt - - * gfortran.dg/nan_7.f90: Disable for little endian PowerPC. - -2013-11-27 Eric Botcazou - - * gcc.dg/guality/param-3.c: New test. - -2013-11-27 Uros Bizjak - Ganesh Gopalasubramanian - - PR target/56788 - * gcc.target/i386/xop-frczX.c: New test. - -2013-11-27 Jakub Jelinek - - PR tree-optimization/59014 - * gcc.c-torture/execute/pr59014-2.c: New test. - -2013-11-27 Paolo Carlini - - PR c++/58647 - * g++.dg/parse/crash66.C: New. - -2013-11-27 Kenneth Zadeck - - * gcc.dg/c90-const-expr-8.c: Look for overflow on INT_MIN % -1. - * gcc.dg/c99-const-expr-8.c: Look for overflow on INT_MIN % -1. - -2013-11-27 Marek Polacek - - PR sanitizer/59306 - * g++.dg/ubsan/pr59306.C: New test. - -2013-11-27 Aldy Hernandez - Jakub Jelinek - - * g++.dg/gomp/declare-simd-1.C (f38): Make sure - simdlen is a power of two. - * gcc.dg/gomp/simd-clones-2.c: Compile on all targets. - Remove -msse2. Adjust regexps for name mangling changes. - * gcc.dg/gomp/simd-clones-3.c: Likewise. - * gcc.dg/vect/vect-simd-clone-1.c: New test. - * gcc.dg/vect/vect-simd-clone-2.c: New test. - * gcc.dg/vect/vect-simd-clone-3.c: New test. - * gcc.dg/vect/vect-simd-clone-4.c: New test. - * gcc.dg/vect/vect-simd-clone-5.c: New test. - * gcc.dg/vect/vect-simd-clone-6.c: New test. - * gcc.dg/vect/vect-simd-clone-7.c: New test. - * gcc.dg/vect/vect-simd-clone-8.c: New test. - * gcc.dg/vect/vect-simd-clone-9.c: New test. - * gcc.dg/vect/vect-simd-clone-10.c: New test. - * gcc.dg/vect/vect-simd-clone-10.h: New file. - * gcc.dg/vect/vect-simd-clone-10a.c: New file. - * gcc.dg/vect/vect-simd-clone-11.c: New test. - -2013-11-27 Rainer Orth - - * gcc.dg/cilk-plus/cilk-plus.exp: Append to ld_library_path. - Call set_ld_library_path_env_vars. - * g++.dg/cilk-plus/cilk-plus.exp: Likewise. - -2013-11-27 Tom de Vries - Marc Glisse - - PR c++/59032 - * c-c++-common/pr59032.c: New testcase. - -2013-11-27 Tom de Vries - Marc Glisse - - PR middle-end/59037 - * c-c++-common/pr59037.c: New testcase. - -2013-11-27 Eric Botcazou - - * gcc.c-torture/execute/20131127-1.c: New test. - -2013-11-27 Richard Biener - - PR tree-optimization/59288 - * gcc.dg/torture/pr59288.c: New testcase. - -2013-11-27 Marek Polacek - - * c-c++-common/ubsan/undefined-1.c: New test. - -2013-11-26 Jakub Jelinek - - PR tree-optimization/59014 - * gcc.c-torture/execute/pr59014.c: New test. - - PR target/59229 - * gcc.c-torture/execute/pr59229.c: New test. - - PR rtl-optimization/59166 - * gcc.dg/torture/pr59166.c: New test. - - PR c++/58874 - * g++.dg/gomp/pr58874.C: New test. - - PR middle-end/59150 - * g++.dg/gomp/pr59150.C: New test. - - PR middle-end/59152 - * c-c++-common/gomp/pr59152.c: New test. - -2013-11-26 Uros Bizjak - - * gcc.dg/gomp/openmp-simd-1.c: Cleanup original tree dump. - * gcc.dg/gomp/openmp-simd-2.c: Ditto. - * g++.dg/gomp/openmp-simd-1.C: Ditto. - * g++.dg/gomp/openmp-simd-2.C: Ditto. - * gfortran.dg/c_loc_test_22.f90: Ditto. - * gcc.dg/tree-ssa/attr-alias-2.c: Cleanup optimized tree dump. - * gcc.dg/tree-ssa/isolate-5.c: Ditto. - * gcc.dg/tree-ssa/pr57361.c: Cleanup dse1 tree dump. - * gcc.dg/vect/vect-124.c: Cleanup vect tree dump. - * gcc.dg/pr57518.c: Cleanup ira rtl dump. - * gcc.dg/tree-prof/cold_partition_label.c: Cleanup saved temps. - -2013-11-26 Yufeng Zhang - - * gcc.target/arm/20131120.c: New test. - -2013-11-26 Richard Biener - - PR tree-optimization/59245 - * gcc.dg/torture/pr59245.c: New testcase. - -2013-11-26 Kyrylo Tkachov - - PR target/59290 - * gcc.target/arm/negdi-2.c: Scan more general register names. - -2013-11-26 Terry Guo - - * gcc.target/arm/thumb1-pic-high-reg.c: New case. - * gcc.target/arm/thumb1-pic-single-base.c: New case. - -2013-11-26 Paolo Carlini - - PR c++/58700 - * g++.dg/parse/bitfield4.C: New. - -2013-11-26 Richard Biener - - PR tree-optimization/59287 - * gcc.dg/tree-ssa/alias-29.c: New testcase. - -2013-11-25 Paolo Carlini - - PR c++/54485 - * g++.dg/other/default8.C: New. - * g++.dg/tc1/dr217.C: Remove xfail. - * g++.dg/other/default5.C: Adjust. - * g++.old-deja/g++.mike/p1989.C: Likewise. - -2013-11-25 Paolo Carlini - - PR c++/58607 - * g++.dg/cpp0x/constexpr-ice9.C: New. - -2013-11-25 Paolo Carlini - - PR c++/58810 - * g++.dg/other/cv_func3.C: New. - * g++.dg/other/cv_func.C: Adjust. - * g++.dg/parse/fn-typedef2.C: Likewise. - -2013-11-25 Marek Polacek - - PR sanitizer/59250 - * g++.dg/ubsan/pr59250.C: New test. - -2013-11-25 Janus Weil - - PR fortran/59143 - * gfortran.dg/typebound_proc_30.f90: New. - -2013-11-25 Paolo Carlini - - PR c++/59080 - * g++.dg/cpp0x/initlist75.C: New. - - PR c++/59096 - * g++.dg/cpp0x/gen-attrs-57.C: New. - -2013-11-25 Adam Butcher - - PR c++/59112 - PR c++/59113 - * g++.dg/cpp1y/pr58533.C: Updated testcase. - * g++.dg/cpp1y/pr59112.C: New testcase. - * g++.dg/cpp1y/pr59113.C: New testcase. - -2013-11-25 Terry Guo - - * gcc.target/arm/thumb2-slow-flash-data.c: New. - -2013-11-23 Uros Bizjak - - * gcc.dg/float-exact-1.c: Use dg-add-options ieee. - [LDBL_MANT_DIG == 113]: Fix wrong variable name. - -2013-11-23 Janus Weil - - PR fortran/59228 - * gfortran.dg/asynchronous_4.f90: New. - -2013-11-22 Jakub Jelinek - - * c-c++-common/asan/no-redundant-instrumentation-7.c: Fix - cleanup-tree-dump directive. - -2013-11-22 Jan Hubicka - - * gcc.dg/20081223-1.c: Add -ffat-lto-objects. - * gcc.dg/vect/vect.exp: Add -ffat-lto-objects. - -2013-11-22 Jakub Jelinek - - * g++.dg/ubsan/return-1.C: New test. - * g++.dg/ubsan/return-2.C: New test. - - * c-c++-common/asan/no-redundant-instrumentation-1.c: Tweak to avoid - optimizing away some __asan_report* calls. - -2013-11-22 Martin Jambor - - * gcc.dg/pr10474.c: Also test ppc64. - * gcc.dg/ira-shrinkwrap-prep-1.c: Also test ppc64, change all ints - to longs. - * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise. - -2013-11-22 Michael Meissner - - PR target/59054 - * gcc.target/powerpc/direct-move.h (VSX_REG_ATTR): Allow test to - specify an appropriate register class for VSX operations. - (load_vsx): Use it. - (load_gpr_to_vsx): Likewise. - (load_vsx_to_gpr): Likewise. - * gcc.target/powerpc/direct-move-vint1.c: Use an appropriate - register class for VSX registers that the type can handle. Remove - checks for explicit number of instructions generated, just check - if the instruction is generated. - * gcc.target/powerpc/direct-move-vint2.c: Likewise. - * gcc.target/powerpc/direct-move-float1.c: Likewise. - * gcc.target/powerpc/direct-move-float2.c: Likewise. - * gcc.target/powerpc/direct-move-double1.c: Likewise. - * gcc.target/powerpc/direct-move-double2.c: Likewise. - * gcc.target/powerpc/direct-move-long1.c: Likewise. - * gcc.target/powerpc/direct-move-long2.c: Likewise. - - * gcc.target/powerpc/pr59054.c: Remove duplicate code. - - * gcc.target/powerpc/bool3-av.c: Limit to 64-bit mode for now. - * gcc.target/powerpc/bool3-p7.c: Likewise. - * gcc.target/powerpc/bool3-p8.c: Likewise. - - * gcc.target/powerpc/p8vector-ldst.c: Just check that the - appropriate instructions are generated, don't check the count. - -2013-11-22 Richard Earnshaw - - PR target/59216 - * gcc.target/arm/negdi-4.c: Delete invalid test. - * gcc.dg/torture/pr59216.c: New test. - -2013-11-22 Alex Velenko - - * gcc.target/aarch64/vmov_n_1.c: New testcase. - -2013-11-22 Richard Biener - - * gcc.dg/torture/20131122-0.c: New testcase. - -2013-11-22 Jakub Jelinek - - * gcc.dg/vect/vect-124.c: New test. - -2013-11-21 Cary Coutant - - * gcc.dg/debug/dwarf2/mlt1.c: New test. - * gcc.dg/debug/dwarf2/mlt2.c: New test. - -2013-11-21 Jeff Law - - PR tree-optimization/59221 - * gcc.c-torture/execute/pr59221.c: New test. - -2013-11-21 Francois-Xavier Coudert - - PR libfortran/59227 - * gfortran.dg/erf_3.F90: XFAIL on spu-* and ia64-*-linux*. - Make more generic for other platforms. - -2013-11-21 Oleg Endo - - PR target/53976 - * gcc.target/sh/pr53976-1.c: New. - -2013-11-20 Francois-Xavier Coudert - - PR libfortran/49024 - * gfortran.dg/erf_3.F90: New file. - -2013-11-20 Bill Schmidt - - * gcc.target/powerpc/pr48258-1.c: Skip for little endian. - -2013-11-20 Vladimir Makarov - - PR rtl-optimization/59133 - * gcc.target/i386/pr59133.c: New. - -2013-11-20 Joseph Myers - - PR middle-end/21718 - * gcc.dg/float-exact-1.c: New test. - -2013-11-20 Richard Earnshaw - - PR rtl-optimization/54300 - * gcc.target/arm/pr54300.C: New test. - -2013-11-20 Diego Novillo - - PR 59212 - * g++.dg/plugin/selfassign.c: Include stringpool.h - -2013-11-20 Ulrich Weigand - - * gcc.target/powerpc/darwin-longlong.c (msw): Make endian-safe. - -2013-11-20 Dominik Vogt - - * gcc.target/s390/htm-1.c: Rename to ... - * gcc.target/s390/htm-builtins-compile-1.c: ... this one. - * gcc.target/s390/htm-xl-intrin-1.c: Rename to ... - * gcc.target/s390/htm-builtins-compile-3.c: ... this one. - * gcc.target/s390/htm-builtins-compile-2.c: New testcase. - * gcc.target/s390/htm-builtins-1.c: New testcase. - * gcc.target/s390/htm-builtins-2.c: New testcase. - * gcc.target/s390/s390.exp: Add check for htm machine. - -2013-11-19 Joshua J Cogliati - - PR c/53001 - * c-c++-common/Wfloat-conversion.c: Copies relevant - tests from c-c++-common/Wconversion-real.c, - gcc.dg/Wconversion-real-integer.c and gcc.dg/pr35635.c into - new testcase for conversions that are warned about by - -Wfloat-conversion. - -2013-11-19 Martin Jambor - - PR rtl-optimization/59099 - * gcc.target/i386/pr59099.c: New test. - -2013-11-19 Sriraman Tallam - - * gcc.dg/tree-prof/cold_partition_label.c: New testcase. - -2013-11-19 Ulrich Weigand - - * gcc.target/powerpc/ppc64-abi-2.c (MAKE_SLOT): New macro to - construct parameter slot value in endian-independent way. - (fcevv, fciievv, fcvevv): Use it. - -2013-11-19 Jan Hubicka - - * ipa/devirt9.C: Fix prevoius change. - -2013-11-19 Cesar Philippidis - - * gcc.c-torture/execute/20101011-1.c (__aarch64__): - Remove defined(__linux__). - -2013-11-19 Richard Biener - - PR tree-optimization/59164 - * gcc.dg/torture/pr59164.c: New testcase. - -2013-11-19 Richard Biener - - PR middle-end/58956 - * gcc.dg/torture/pr58956.c: New testcase. - -2013-11-19 Marek Polacek - - * c-c++-common/ubsan/null-1.c: New test. - * c-c++-common/ubsan/null-2.c: New test. - * c-c++-common/ubsan/null-3.c: New test. - * c-c++-common/ubsan/null-4.c: New test. - * c-c++-common/ubsan/null-5.c: New test. - * c-c++-common/ubsan/null-6.c: New test. - * c-c++-common/ubsan/null-7.c: New test. - * c-c++-common/ubsan/null-8.c: New test. - * c-c++-common/ubsan/null-9.c: New test. - * c-c++-common/ubsan/null-10.c: New test. - * c-c++-common/ubsan/null-11.c: New test. - * gcc.dg/ubsan/c99-shift-2.c: Adjust dg-output. - * c-c++-common/ubsan/shift-1.c: Likewise. - * c-c++-common/ubsan/div-by-zero-3.c: Likewise. - -2013-11-19 Uros Bizjak - - * gcc.dg/c11-complex-1.c: Use dg-add-options ieee. - -2013-11-19 Jan Hubicka - - * ipa/devirt9.C: Verify that the optimization happens already before. - whole-program. - -2013-11-19 Richard Biener - - PR tree-optimization/57517 - * gfortran.fortran-torture/compile/pr57517.f90: New testcase. - * gcc.dg/torture/pr57517.c: Likewise. - -2013-11-19 Jan Hubicka - - * gcc.target/i386/memcpy-3.c: New testcase. - -2013-11-18 Jan Hubicka - Uros Bizjak - - PR middle-end/59175 - * gcc.target/i386/memcpy-2.c: Fix template; - add +1 so the testcase passes at 32bit. - -2013-11-18 Dominique d'Humieres - - * c-c++-common/cilk-plus/PS/reduction-3.c: Use stdlib.h. - Remove spurious FIXME. - -2013-11-18 Kyrylo Tkachov - - * c-c++-common/cilk-plus/PS/body.c: Add fopenmp effective target check. - -2013-11-18 Paolo Carlini - - PR c++/53473 - * g++.dg/cpp0x/constexpr-noexcept7.C: New. - -2013-11-18 Richard Biener - - PR tree-optimization/59125 - PR tree-optimization/54570 - * gcc.dg/builtin-object-size-8.c: Un-xfail. - * gcc.dg/builtin-object-size-14.c: New testcase. - * gcc.dg/strlenopt-14gf.c: Adjust. - * gcc.dg/strlenopt-1f.c: Likewise. - * gcc.dg/strlenopt-4gf.c: Likewise. - -2013-11-18 Eric Botcazou - - * gnat.dg/volatile11.adb: New test. - * gnat.dg/volatile11_pkg.ad[sb]: New helper. - -2013-11-18 Yury Gribov - - PR sanitizer/59106 - * c-c++-common/asan/pr59106.c: New test. - -2013-11-17 Jan Hubicka - - * gcc.target/i386/memcpy-2.c: New testcase. - -2013-11-17 Uros Bizjak - - PR target/59153 - * gcc.target/i386/pr59153.c: New test. - -2013-11-17 Paolo Carlini - - PR c++/59123 - * g++.dg/cpp0x/constexpr-redeclaration1.C: New. - * g++.dg/cpp0x/constexpr-decl.C: Adjust. - -2013-11-16 Paolo Carlini - - PR c++/29143 - * g++.dg/overload/addr2.C: New. - * g++.old-deja/g++.other/overload11.C: Adjust. - -2013-11-15 Mike Stump - - * lib/gcc.exp (gcc_target_compile): Add support for random runtime - * lib/g++.exp (g++_target_compile): Likewise. - * gcc.dg/cilk-plus/cilk-plus.exp: Improve support for runtime - libraries. Remove debugging. - * g++.dg/cilk-plus/cilk-plus.exp: Add support to find runtime - libraries. Remove -O0, redundant with default. - -2013-11-15 Joseph Myers - - * c-c++-common/cpp/ucnid-2011-1.c: New test. - -2013-11-15 Paolo Carlini - - PR c++/58188 - * g++.dg/cpp0x/nsdmi-template8.C: New. - -2013-11-15 Paolo Carlini - - PR c++/58725 - * g++.dg/cpp0x/nsdmi-template7.C: New. - -2013-11-15 Paolo Carlini - - PR c++/58829 - * g++.dg/cpp0x/nsdmi-template6.C: New. - -2013-11-15 Paolo Carlini - - PR c++/58599 - * g++.dg/cpp0x/nsdmi-template5.C: New. - -2013-11-15 Aldy Hernandez - - * c-c++-common/cilk-plus/PS: New directory. - * g++.dg/cilk-plus/cilk-plus.exp: Run shared tests. - * g++.dg/dg.exp: Run Cilk Plus tests. - * gcc.dg/cilk-plus/cilk-plus.exp: Run shared tests. - -2013-11-15 Bill Schmidt - - * gcc.dg/vmx/3b-15.c: Revise for little endian. - -2013-11-15 Richard Biener - - PR tree-optimization/50262 - * gcc.dg/tree-ssa/alias-28.c: New testcase. - * gcc.dg/strlenopt-1.c: Adjust. - * gcc.dg/strlenopt-1f.c: Likewise. - -2013-11-15 Richard Biener - - * gcc.dg/torture/20131115-1.c: New testcase. - -2013-11-15 Joseph Myers - - * gcc.dg/cpp/ucnid-9.c: New test. - -2013-11-14 Eric Botcazou - - * gnat.dg/stack_usage1b.adb: New test. - * gnat.dg/stack_usage1c.adb: Likewise. - -2013-11-14 H.J. Lu - - * gnat.dg/specs/addr1.ads: Revert the last change. - * gnat.dg/specs/atomic1.ads: Likewise. - -2013-11-14 Cong Hou - - * gcc.dg/vect/vect-alias-check.c: Update. - -2013-11-14 Paolo Carlini - - PR c++/57887 - * g++.dg/cpp0x/nsdmi-template3.C: New. - * g++.dg/cpp0x/nsdmi-template4.C: Likewise. - -2013-11-14 Diego Novillo - - * gcc.dg/plugin/selfassign.c: Include stringpool.h. - * gcc.dg/plugin/start_unit_plugin.c: Likewise. - -2013-11-14 Ulrich Weigand - - * gcc.target/powerpc/ppc64-abi-1.c (stack_frame_t): Remove - compiler and linker field if _CALL_ELF == 2. - * gcc.target/powerpc/ppc64-abi-2.c (stack_frame_t): Likewise. - * gcc.target/powerpc/ppc64-abi-dfp-1.c (stack_frame_t): Likewise. - * gcc.dg/stack-usage-1.c (SIZE): Update value for _CALL_ELF == 2. - -2013-11-14 Ulrich Weigand - - * gcc.target/powerpc/ppc64-abi-dfp-1.c (FUNC_START): New macro. - (WRAPPER): Use it. - * gcc.target/powerpc/no-r11-1.c: Skip on powerpc_elfv2. - * gcc.target/powerpc/no-r11-2.c: Skip on powerpc_elfv2. - * gcc.target/powerpc/no-r11-3.c: Skip on powerpc_elfv2. - -2013-11-14 Ulrich Weigand - - * lib/target-supports.exp (check_effective_target_powerpc_elfv2): - New function. - * gcc.target/powerpc/pr57949-1.c: Disable for powerpc_elfv2. - * gcc.target/powerpc/pr57949-2.c: Likewise. - -2013-11-14 Ulrich Weigand - - * g++.dg/eh/ppc64-sighandle-cr.C: New test. - -2013-11-14 Rainer Orth - - * gcc.dg/torture/float128-cmp-invalid.c: Require fenv_exceptions. - * gcc.dg/torture/float128-div-underflow.c: Likewise. - * gcc.dg/torture/float128-extend-nan.c: Likewise. - -2013-11-14 Richard Biener - - * gcc.dg/tree-ssa/ssa-vrp-thread-1.c: Fix target selector. - -2013-11-14 H.J. Lu - - * gnat.dg/specs/addr1.ads: XFAIL on x32. - * gnat.dg/specs/atomic1.ads: Likewise. - -2013-11-14 James Greenhalgh - - * gcc.target/aarch64/cpu-diagnostics-2.c: Change "-mcpu=" - to "cortex-a53". - * gcc.target/aarch64/cpu-diagnostics-3.c: Change "-mcpu=" - to "cortex-a53". - -2013-11-14 Rainer Orth - - * gcc.dg/atomic/c11-atomic-exec-4.c: Define _XOPEN_SOURCE=600 on - *-*-solaris2.1[0-9]*. - * gcc.dg/atomic/c11-atomic-exec-5.c: Likewise. - -2013-11-14 Joey Ye - - * gcc.dg/tree-ssa/forwprop-28.c: Disable for cortex_m. - * gcc.dg/tree-ssa/vrp47.c: Likewise. - * gcc.dg/tree-ssa/vrp87.c: Likewise. - * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Ingore for cortex_m. - * gcc.dg/tree-ssa/ssa-vrp-thread-1.c: Likewise. - -2013-11-14 Adam Butcher - - PR c++/58533 - * g++.dg/cpp1y/pr58533.C: New testcase (fixed by r204714). - -2013-11-14 Jakub Jelinek - - PR target/59101 - * gcc.c-torture/execute/pr59101.c: New test. - -2013-11-13 Jeff Law - - PR tree-optimization/59102 - * gcc.c-torture/compile/pr59102.c: New test. - -2013-11-13 Tom de Vries - - * gcc.dg/tail-merge-store.c: New test. - -2013-11-13 Andrew MacLeod - - * g++.dg/plugin/selfassign.c: Include gimple-iterator.h. - * gcc.dg/plugin/selfassign.c: Likewise. - -2013-11-13 Jeff Law - - * PR middle-end/59119 - * gcc.c-torture/compile/pr59119.c: New test. - -2013-11-13 Martin Jambor - - * gcc.dg/ira-shrinkwrap-prep-1.c: Add lp64 to target requirements. - * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise. - * gcc.dg/pr10474.c: Likewise. - -2013-11-13 Cesar Philippidis - - * lib/target-supports.exp - (check_effective_target_vect_cmdline_neeed): Add AArch64 to the list - of targets that do not need command line argument to enable SIMD. - -2013-11-13 Eric Botcazou - - * gcc.dg/guality/param-4.c: New test. - -2013-11-13 Joseph Myers - - * gcc.dg/c11-complex-1.c: New test. - -2013-11-13 Joseph Myers - - * gcc.dg/atomic/stdatomic-vm.c, gcc.dg/auto-type-1.c, - gcc.dg/auto-type-2.c: New tests. - -2013-11-12 Balaji V. Iyer - - * gcc.dg/cilk-plus/cilk-plus.exp: Added a check for LTO before running - LTO tests. - -2013-11-12 Jeff Law - - * gcc.dg/tree-ssa/isolate-1.c: Update expected output. - * gcc.dg/tree-ssa/isolate-5.c: Verify the load survives through - the SSA optimizers. - -2013-11-12 Michael Meissner - - PR target/59054 - * gcc.target/powerpc/pr59054.c: New test. - -2013-11-12 Adam Butcher - - * g++.dg/cpp1y/lambda-generic.C: New test case. - * g++.dg/cpp1y/lambda-generic-cfun.C: New test case. - * g++.dg/cpp1y/lambda-generic-dep.C: New test case. - * g++.dg/cpp1y/lambda-generic-udt.C: New test case. - * g++.dg/cpp1y/lambda-generic-variadic.C: New test case. - * g++.dg/cpp1y/lambda-generic-x.C: New test case. - * g++.dg/cpp1y/lambda-generic-xcfun.C: New test case. - * g++.dg/cpp1y/lambda-generic-xudt.C: New test case. - * g++.dg/cpp1y/lambda-generic-mixed.C: New test case. - -2013-11-12 Adam Butcher - - PR c++/58534 - PR c++/58536 - PR c++/58548 - PR c++/58549 - PR c++/58637 - * g++.dg/cpp1y/pr58534.C: New testcase. - * g++.dg/cpp1y/pr58536.C: New testcase. - * g++.dg/cpp1y/pr58548.C: New testcase. - * g++.dg/cpp1y/pr58549.C: New testcase. - * g++.dg/cpp1y/pr58637.C: New testcase. - -2013-11-12 Joseph Myers - - * gcc.dg/c90-thread-local-1.c, gcc.dg/c99-thread-local-1.c, - gcc.dg/c11-thread-local-1.c, gcc.dg/c11-thread-local-2.c: New tests. - * gcc.dg/tls/diag-2.c, objc.dg/tls/diag-2.m: Update expected - diagnostics. - -2013-11-12 Tristan Gingold - - * gnat.dg/aggr21.adb: New test. - * gnat.dg/aggr21_pkg.ad[sb]: New helper. - -2013-11-12 Jeff Law - - * gcc.dg/tree-ssa/isolate-1.c: Update expected output. - * gcc.dg/tree-ssa/isolate-5.c: New test. - -2013-11-12 Martin Jambor - - PR rtl-optimization/10474 - * gcc.dg/pr10474.c: New testcase. - * gcc.dg/ira-shrinkwrap-prep-1.c: Likewise. - * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise. - -2013-11-12 Paolo Carlini - - PR c++/57734 - * g++.dg/cpp0x/alias-decl-enum-1.C: New. - -2013-11-11 Martin Liska - - * gcc.dg/time-profiler-1.c: New test. - * gcc.dg/time-profiler-2.c: Ditto. - -2013-11-11 Marc Glisse - Jeff Law - - * gcc.dg/tree-ssa/alias-27.c: New testcase. - -2013-11-11 Uros Bizjak - - PR target/58853 - * gcc.target/i386/pr58853.c: New test. - -2013-11-11 Joern Rennecke - - * gcc.dg/tree-ssa/forwprop-28.c: Adjust for ARC - LOGICAL_OP_NON_SHORT_CIRCUIT definition. - * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Likewise. - * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c: Likewise. - * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c: Likewise. - * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c: Likewise. - * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c: Likewise. - * gcc.dg/tree-ssa/vrp47.c: Likewise. - * gcc.dg/tree-ssa/vrp87.c: Likewise. - -2013-11-08 Joseph Myers - - * gcc.dg/atomic/stdatomic-compare-exchange-1.c, - gcc.dg/atomic/stdatomic-compare-exchange-2.c, - gcc.dg/atomic/stdatomic-compare-exchange-3.c, - gcc.dg/atomic/stdatomic-compare-exchange-4.c, - gcc.dg/atomic/stdatomic-exchange-1.c, - gcc.dg/atomic/stdatomic-exchange-2.c, - gcc.dg/atomic/stdatomic-exchange-3.c, - gcc.dg/atomic/stdatomic-exchange-4.c, - gcc.dg/atomic/stdatomic-fence.c, gcc.dg/atomic/stdatomic-flag.c, - gcc.dg/atomic/stdatomic-generic.c, - gcc.dg/atomic/stdatomic-kill-dep.c, - gcc.dg/atomic/stdatomic-load-1.c, - gcc.dg/atomic/stdatomic-load-2.c, - gcc.dg/atomic/stdatomic-load-3.c, - gcc.dg/atomic/stdatomic-load-4.c, - gcc.dg/atomic/stdatomic-lockfree.c, - gcc.dg/atomic/stdatomic-op-1.c, gcc.dg/atomic/stdatomic-op-2.c, - gcc.dg/atomic/stdatomic-op-3.c, gcc.dg/atomic/stdatomic-op-4.c, - gcc.dg/atomic/stdatomic-store-1.c, - gcc.dg/atomic/stdatomic-store-2.c, - gcc.dg/atomic/stdatomic-store-3.c, - gcc.dg/atomic/stdatomic-store-4.c, gcc.dg/c11-stdatomic-1.c: New - tests. - -2013-11-08 Cong Hou - - PR tree-optimization/58508 - * gcc.dg/vect/pr58508.c: Update. - -2013-11-08 Richard Biener - - PR tree-optimization/59047 - * gcc.dg/torture/pr59047.c: New testcase. - -2013-11-08 Richard Biener - - PR tree-optimization/59038 - PR tree-optimization/58955 - * gcc.dg/torture/pr59038.c: New testcase. - -2013-11-07 Janus Weil - - PR fortran/58471 - * gfortran.dg/constructor_9.f90: New. - -2013-11-07 Joseph Myers - - * gcc.dg/atomic-compare-exchange-1.c, - gcc.dg/atomic-compare-exchange-2.c, - gcc.dg/atomic-compare-exchange-3.c, - gcc.dg/atomic-compare-exchange-4.c, - gcc.dg/atomic-compare-exchange-5.c, gcc.dg/atomic-exchange-1.c, - gcc.dg/atomic-exchange-2.c, gcc.dg/atomic-exchange-3.c, - gcc.dg/atomic-exchange-4.c, gcc.dg/atomic-exchange-5.c, - gcc.dg/atomic-fence.c, gcc.dg/atomic-flag.c, - gcc.dg/atomic-generic.c, gcc.dg/atomic-invalid.c, - gcc.dg/atomic-load-1.c, gcc.dg/atomic-load-2.c, - gcc.dg/atomic-load-3.c, gcc.dg/atomic-load-4.c, - gcc.dg/atomic-load-5.c, gcc.dg/atomic-lockfree.c, - gcc.dg/atomic-noinline.c, gcc.dg/atomic-op-1.c, - gcc.dg/atomic-op-2.c, gcc.dg/atomic-op-3.c, gcc.dg/atomic-op-4.c, - gcc.dg/atomic-op-5.c, gcc.dg/atomic-param.c, - gcc.dg/atomic-store-1.c, gcc.dg/atomic-store-2.c, - gcc.dg/atomic-store-3.c, gcc.dg/atomic-store-4.c, - gcc.dg/atomic-store-5.c: Declare main as returning int. - * gcc.dg/atomic-exchange-1.c, gcc.dg/atomic-exchange-2.c, - gcc.dg/atomic-exchange-3.c, gcc.dg/atomic-exchange-4.c, - gcc.dg/atomic-exchange-5.c: Separate increments of count from - expression using value of count. - -2013-11-07 Joseph Myers - - * lib/target-supports.exp - (check_effective_target_fenv_exceptions): New function. - * lib/atomic-dg.exp, gcc.dg/atomic/atomic.exp: New files. - * gcc.dg/atomic/c11-atomic-exec-1.c, - gcc.dg/atomic/c11-atomic-exec-2.c, - gcc.dg/atomic/c11-atomic-exec-3.c, - gcc.dg/atomic/c11-atomic-exec-4.c, - gcc.dg/atomic/c11-atomic-exec-5.c, gcc.dg/c11-atomic-1.c, - gcc.dg/c11-atomic-2.c, gcc.dg/c11-atomic-3.c, - gcc.dg/c90-atomic-1.c, gcc.dg/c99-atomic-1.c: New tests. - -2013-11-07 Cong Hou - - * gcc.dg/vect/vect-alias-check.c: New. - -2013-11-07 Jakub Jelinek - - * gcc.dg/tree-ssa/loop-39.c: New test. - - * gcc.dg/unroll_1.c: Add -fno-tree-vrp to dg-options. - * gcc.dg/unroll_2.c: Likewise. - * gcc.dg/unroll_3.c: Likewise. - * gcc.dg/unroll_4.c: Likewise. - * gcc.dg/vrp90.c: New test. - -2013-11-07 Paolo Carlini - - PR c++/58176 - * g++.dg/cpp0x/nullptr30.C: New. - -2013-11-07 Yury Gribov - Jakub Jelinek - - PR sanitizer/59029 - * c-c++-common/asan/pr59029.c: New test. - -2013-11-07 H.J. Lu - - PR target/59034 - * gcc.target/i386/pr59034-1.c: New test. - * gcc.target/i386/pr59034-2.c: Likewise. - -2013-11-07 Bin Cheng - - * gcc.dg/tree-ssa/loop-2.c: Refine check condition. - * gcc.dg/tree-ssa/ivopt_infer_2.c: Ditto. - * gcc.dg/tree-ssa/ivopt_mult_3.c: Ditto. - -2013-11-06 DJ Delorie - - * gcc.dg/mismatch-decl-1.c: New test. - -2013-11-06 Joseph Myers - - * gcc.dg/torture/float128-cmp-invalid.c, - gcc.dg/torture/float128-div-underflow.c, - gcc.dg/torture/float128-extend-nan.c, - gcc.dg/torture/fp-int-convert-float128-timode-3.c: New tests. - -2013-11-06 Oleg Endo - - * gcc.target/sh/pr51244-11.c: Remove target line. - * gcc.target/sh/sh4a-sincosf.c: Likewise. - * gcc.target/sh/attr-isr-trap_exit.c: Likewise. - * gcc.target/sh/pr51244-15.c: Likewise. - * gcc.target/sh/pr51244-19.c: Likewise. - * gcc.target/sh/cmpstr.c: Likewise. - * gcc.target/sh/pr33135-3.c: Likewise. - * gcc.target/sh/pr53512-2.c: Likewise. - * gcc.target/sh/pr54602-2.c: Likewise. - * gcc.target/sh/pr52483-1.c: Likewise. - * gcc.target/sh/pr21255-2-ml.c: Likewise. - * gcc.target/sh/pr54760-4.c: Likewise. - * gcc.target/sh/pr52483-5.c: Likewise. - * gcc.target/sh/pr54089-2.c: Likewise. - * gcc.target/sh/pr56547-2.c: Likewise. - * gcc.target/sh/pr54089-6.c: Likewise. - * gcc.target/sh/pr51244-20.c: Likewise. - * gcc.target/sh/pr50749-sf-predec-4.c: Likewise. - * gcc.target/sh/sh4a-fsrra.c: Likewise. - * gcc.target/sh/pr50749-qihisi-predec-1.c: Likewise. - * gcc.target/sh/pr50749-sf-postinc-2.c: Likewise. - * gcc.target/sh/pr55303-2.c: Likewise. - * gcc.target/sh/sh2a-resbank.c: Likewise. - * gcc.target/sh/sp-switch.c: Likewise. - * gcc.target/sh/pr51244-3.c: Likewise. - * gcc.target/sh/pr50751-3.c: Likewise. - * gcc.target/sh/pr51244-7.c: Likewise. - * gcc.target/sh/struct-arg-dw2.c: Likewise. - * gcc.target/sh/pr50751-7.c: Likewise. - * gcc.target/sh/pr49468-di.c: Likewise. - * gcc.target/sh/pr50749-qihisi-postinc-4.c: Likewise. - * gcc.target/sh/pr49880-3.c: Likewise. - * gcc.target/sh/pr51244-12.c: Likewise. - * gcc.target/sh/pr53988.c: Likewise. - * gcc.target/sh/pr6526.c: Likewise. - * gcc.target/sh/sh2a-bxor.c: Likewise. - * gcc.target/sh/pr51244-16.c: Likewise. - * gcc.target/sh/sh2a-bclrmem.c: Likewise. - * gcc.target/sh/sh2a-bor.c: Likewise. - * gcc.target/sh/pr53511-1.c: Likewise. - * gcc.target/sh/pr21255-3.c: Likewise. - * gcc.target/sh/pr53512-3.c: Likewise. - * gcc.target/sh/pr33135-4.c: Likewise. - * gcc.target/sh/pr54602-3.c: Likewise. - * gcc.target/sh/pr54760-1.c: Likewise. - * gcc.target/sh/pr52483-2.c: Likewise. - * gcc.target/sh/sh2a-bsetmem.c: Likewise. - * gcc.target/sh/pr54680.c: Likewise. - * gcc.target/sh/pr54386.c: Likewise. - * gcc.target/sh/pr51244-20-sh2a.c: Likewise. - * gcc.target/sh/pr54089-3.c: Likewise. - * gcc.target/sh/pr50749-sf-predec-1.c: Likewise. - * gcc.target/sh/pr54089-7.c: Likewise. - * gcc.target/sh/strlen.c: Likewise. - * gcc.target/sh/pr50749-sf-postinc-3.c: Likewise. - * gcc.target/sh/pr50749-qihisi-predec-2.c: Likewise. - * gcc.target/sh/pr55303-3.c: Likewise. - * gcc.target/sh/pr51244-4.c: Likewise. - * gcc.target/sh/pr50751-4.c: Likewise. - * gcc.target/sh/pr39423-1.c: Likewise. - * gcc.target/sh/pr51244-8.c: Likewise. - * gcc.target/sh/pr55146.c: Likewise. - * gcc.target/sh/pr50751-8.c: Likewise. - * gcc.target/sh/sh2a-bset.c: Likewise. - * gcc.target/sh/pr50749-qihisi-postinc-1.c: Likewise. - * gcc.target/sh/sh2a-movi20s.c: Likewise. - * gcc.target/sh/20080410-1.c: Likewise. - * gcc.target/sh/pr49880-4.c: Likewise. - * gcc.target/sh/pr51244-13.c: Likewise. - * gcc.target/sh/sh2a-movrt.c: Likewise. - * gcc.target/sh/pr51244-17.c: Likewise. - * gcc.target/sh/pr21255-2-mb.c: Likewise. - * gcc.target/sh/sh2a-bclr.c: Likewise. - * gcc.target/sh/pr33135-1.c: Likewise. - * gcc.target/sh/pr53512-4.c: Likewise. - * gcc.target/sh/pr54602-4.c: Likewise. - * gcc.target/sh/sh4a-bitmovua.c: Likewise. - * gcc.target/sh/pr54760-2.c: Likewise. - * gcc.target/sh/pr52483-3.c: Likewise. - * gcc.target/sh/sh2a-bld.c: Likewise. - * gcc.target/sh/pr54089-4.c: Likewise. - * gcc.target/sh/pr54685.c: Likewise. - * gcc.target/sh/pr50749-sf-predec-2.c: Likewise. - * gcc.target/sh/pr54089-8.c: Likewise. - * gcc.target/sh/pragma-isr-trap-exit.c: Likewise. - * gcc.target/sh/pr50749-qihisi-predec-3.c: Likewise. - * gcc.target/sh/pr50749-sf-postinc-4.c: Likewise. - * gcc.target/sh/pr51244-1.c: Likewise. - * gcc.target/sh/pr50751-1.c: Likewise. - * gcc.target/sh/pr55160.c: Likewise. - * gcc.target/sh/pr51244-5.c: Likewise. - * gcc.target/sh/pr54236-1.c: Likewise. - * gcc.target/sh/pr50751-5.c: Likewise. - * gcc.target/sh/pr52933-1.c: Likewise. - * gcc.target/sh/pr39423-2.c: Likewise. - * gcc.target/sh/pr51244-9.c: Likewise. - * gcc.target/sh/pr49263.c: Likewise. - * gcc.target/sh/pr50749-qihisi-postinc-2.c: Likewise. - * gcc.target/sh/pr49880-1.c: Likewise. - * gcc.target/sh/sh2a-band.c: Likewise. - * gcc.target/sh/pr51244-10.c: Likewise. - * gcc.target/sh/pr49880-5.c: Likewise. - * gcc.target/sh/prefetch.c: Likewise. - * gcc.target/sh/pr51244-14.c: Likewise. - * gcc.target/sh/rte-delay-slot.c: Likewise. - * gcc.target/sh/fpul-usage-1.c: Likewise. - * gcc.target/sh/pr51244-18.c: Likewise. - * gcc.target/sh/pr21255-1.c: Likewise. - * gcc.target/sh/pr33135-2.c: Likewise. - * gcc.target/sh/pr53512-1.c: Likewise. - * gcc.target/sh/pr54602-1.c: Likewise. - * gcc.target/sh/sh2a-rtsn.c: Likewise. - * gcc.target/sh/torture/pragma-isr.c: Likewise. - * gcc.target/sh/torture/pragma-isr2.c: Likewise. - * gcc.target/sh/torture/pr58314.c: Likewise. - * gcc.target/sh/torture/pr34777.c: Likewise. - * gcc.target/sh/torture/pr58475.c: Likewise. - * gcc.target/sh/pr54760-3.c: Likewise. - * gcc.target/sh/sh4a-cosf.c: Likewise. - * gcc.target/sh/pr52483-4.c: Likewise. - * gcc.target/sh/mfmovd.c: Likewise. - * gcc.target/sh/pr54089-1.c: Likewise. - * gcc.target/sh/pr56547-1.c: Likewise. - * gcc.target/sh/pr54089-5.c: Likewise. - * gcc.target/sh/pr50749-sf-predec-3.c: Likewise. - * gcc.target/sh/pr54089-9.c: Likewise. - * gcc.target/sh/sh2a-jsrn.c: Likewise. - * gcc.target/sh/pr49468-si.c: Likewise. - * gcc.target/sh/pr50749-sf-postinc-1.c: Likewise. - * gcc.target/sh/pr50749-qihisi-predec-4.c: Likewise. - * gcc.target/sh/pr55303-1.c: Likewise. - * gcc.target/sh/pr51244-2.c: Likewise. - * gcc.target/sh/pr50751-2.c: Likewise. - * gcc.target/sh/pr54236-2.c: Likewise. - * gcc.target/sh/pr51244-6.c: Likewise. - * gcc.target/sh/cmpstrn.c: Likewise. - * gcc.target/sh/pr50751-6.c: Likewise. - * gcc.target/sh/pr52933-2.c: Likewise. - * gcc.target/sh/pr53568-1.c: Likewise. - * gcc.target/sh/pr50749-qihisi-postinc-3.c: Likewise. - * gcc.target/sh/sh2a-tbr-jump.c: Likewise. - * gcc.target/sh/sh4a-sinf.c: Likewise. - * gcc.target/sh/pr49880-2.c: Likewise. - -2013-11-06 Tobias Burnus - - * g++.dg/warn/wdate-time.C: Update dg-error pattern. - * gcc.dg/wdate-time.c: Ditto. - * gfortran.dg/wdate-time.F90: Ditto. - -2013-11-06 Oleg Endo - - PR target/30807 - * gcc.target/sh/torture/pr30807.c: New. - -2013-11-06 Paolo Carlini - - PR c++/11006 - * g++.dg/other/java3.C: New. - -2013-11-06 Uros Bizjak - - PR target/59021 - * gcc.target/i386/pr59021.c: New test. - -2013-11-06 James Lemke - - * lib/gcc-defs.exp (dg-additional-files-options): Extend regsub for - dg-additional-files to also match BOL. - -2013-11-06 Joseph Myers - - * gcc.dg/torture/c99-contract-1.c: New test. - -2013-11-06 Richard Biener - - PR tree-optimization/58653 - * gcc.dg/tree-ssa/predcom-6.c: New testcase. - * gcc.dg/tree-ssa/predcom-7.c: Likewise. - -2013-11-05 Balaji V. Iyer - - * c-c++-common/cilk-plus/CK/fib.c: Reduced the iteration from - 40 to 30. Replaced iteration variable with a #define. Instead of - returning non-zero value for error, called __builtin_abort (). Fixed - a bug of calling fib_serial in serial case instead of fib. - * c-c++-common/cilk-plus/CK/fib_init_expr_xy.c: Likewise. - * c-c++-common/cilk-plus/CK/fib_no_return.c: Likewise. - * c-c++-common/cilk-plus/CK/fib_no_sync.c: Likewise. - * gcc.dg/cilk-plus/cilk-plus.exp: Removed duplicate/un-necessary - compiler flag testing. - -2013-11-06 Christian Bruel - - * gcc.target/sh/strlen.c: New test. - -2013-11-06 Jakub Jelinek - - PR middle-end/58970 - * gcc.c-torture/compile/pr58970.c: New test. - -2013-11-05 Wei Mi - - PR regression/58985 - * gcc.dg/pr57518.c: Add subreg in regexp pattern. - -2013-11-05 Tobias Burnus - - * g++.dg/warn/wdate-time.C: New. - * gcc.dg/wdate-time.c: New. - * gfortran.dg/wdate-time.F90: New. - -2013-11-05 Steven G. Kargl - - PR fortran/58989 - * gfortran.dg/reshape_6.f90: New test. - -2013-11-05 Jeff Law - - * gcc.dg/pr38984.c: Add -fno-isolate-erroneous-paths. - * gcc.dg/tree-ssa/isolate-1.c: New test. - * gcc.dg/tree-ssa/isolate-2.c: New test. - * gcc.dg/tree-ssa/isolate-3.c: New test. - * gcc.dg/tree-ssa/isolate-4.c: New test. - -2013-11-05 Jakub Jelinek - - PR rtl-optimization/58997 - * gcc.c-torture/compile/pr58997.c: New test. - -2013-11-05 Paolo Carlini - - PR c++/58724 - * g++.dg/cpp0x/gen-attrs-56.C: New. - -2013-11-05 Richard Biener - - PR ipa/58492 - * gcc.dg/ipa/pr58492.c: New testcase. - -2013-11-05 Richard Biener - - PR tree-optimization/58955 - * gcc.dg/torture/pr58955-1.c: New testcase. - * gcc.dg/torture/pr58955-2.c: Likewise. - -2013-11-05 H.J. Lu - - PR middle-end/58981 - * gcc.dg/pr58981.c: New test. - -2013-11-05 Richard Biener - - PR middle-end/58941 - * gcc.dg/torture/pr58941.c: New testcase. - -2013-11-05 Marc Glisse - - PR tree-optimization/58958 - * gcc.dg/tree-ssa/pr58958.c: New file. - -2013-11-05 Marc Glisse - - * gcc.dg/tree-ssa/alias-26.c: New file. - -2013-11-05 Jakub Jelinek - - PR tree-optimization/58984 - * gcc.c-torture/execute/pr58984.c: New test. - -2013-11-05 Andreas Schwab - - * g++.dg/ext/sync-4.C: Require sync_long_long_runtime support. - -2013-11-05 Tobias Burnus - - * g++.dg/gomp/openmp-simd-1.C: New. - * g++.dg/gomp/openmp-simd-2.C: New. - * gcc.dg/gomp/openmp-simd-1.c: New. - * gcc.dg/gomp/openmp-simd-2.c: New. - -2013-11-04 Senthil Kumar Selvaraj - - * gcc.dg/superblock.c: Require scheduling support. - -2013-11-04 Kostya Serebryany - - * g++.dg/asan/asan_test.cc: Update the test - to match the fresh asan run-time. - * c-c++-common/asan/stack-overflow-1.c: Ditto. - -2013-11-04 Ian Lance Taylor - - * g++.dg/ext/sync-4.C: New test. - -2013-11-04 Paul Thomas - - PR fortran/58771 - * gfortran.dg/derived_external_function_1.f90 : New test - -2013-11-04 Jakub Jelinek - - PR tree-optimization/58978 - * gcc.c-torture/compile/pr58978.c: New test. - -2013-11-04 Paul Thomas - - PR fortran/57445 - * gfortran.dg/optional_class_1.f90 : New test - -2013-11-04 Vladimir Makarov - - PR rtl-optimization/58968 - * gfortran.dg/pr58968.f: New - -2013-11-04 Marek Polacek - - PR c++/58979 - * g++.dg/diagnostic/pr58979.C: New test. - -2013-11-04 Joseph Myers - - * gcc.dg/iec-559-macros-1.c, gcc.dg/iec-559-macros-2.c, - gcc.dg/iec-559-macros-3.c, gcc.dg/iec-559-macros-4.c, - gcc.dg/iec-559-macros-5.c, gcc.dg/iec-559-macros-6.c, - gcc.dg/iec-559-macros-7.c, gcc.dg/iec-559-macros-8.c, - gcc.dg/iec-559-macros-9.c: New tests. - -2013-11-04 Jakub Jelinek - - PR tree-optimization/58946 - * gcc.c-torture/compile/pr58946.c: New test. - -2013-11-03 Paolo Carlini - - PR c++/52071 - * g++.dg/parse/pr52071.C: New. - -2013-11-03 Paolo Carlini - - PR c++/38313 - * g++.dg/lookup/name-clash10.C: New. - -2013-11-03 Kugan Vivekanandarajah - - * gcc.target/arm/neon-vcond-gt.c: Scan for vbsl or vbit or vbif. - * gcc.target/arm/neon-vcond-ltgt.c: Scan for vbsl or vbit or vbif. - * gcc.target/arm/neon-vcond-unordered.c: Scan for vbsl or vbit or - vbif. - -2013-11-03 Marek Polacek - - * g++.dg/ubsan/cxx1y-vla.C: New test. - * c-c++-common/ubsan/vla-3.c: New test. - * c-c++-common/ubsan/vla-2.c: New test. - * c-c++-common/ubsan/vla-4.c: New test. - * c-c++-common/ubsan/vla-1.c: New test. - -2013-11-02 Bill Schmidt - - * gcc.dg/vmx/vec-set.c: New. - -2013-11-02 Paolo Carlini - - PR c++/29234 - PR c++/56037 - * g++.dg/parse/pr29234.C: New. - * g++.dg/parse/pr56037.C: Likewise. - -2013-11-01 Balaji V. Iyer - - * gcc.dg/cilk-plus/cilk-plus.exp: Loaded libcilkrts library path and - passed it in as one of the options to all Cilk keywords test. - -2013-11-01 Edward Smith-Rowland <3dw4rd@verizon.net> - - PR c++/58708 - * g++.dg/cpp1y/pr58708.C: New. - -2013-11-01 Marc Glisse - - PR c++/58834 - * g++.dg/ext/pr58834.C: New file. - -2013-11-01 Jakub Jelinek - - * gcc.dg/gomp/declare-simd-2.c (f12, f13, f14, f15, f16, f17): New - tests. - * g++.dg/gomp/declare-simd-2.C (f15, f16, f17, f18, f19, f20): New - tests. - -2013-11-01 Paul Thomas - - PR fortran/57893 - * gfortran.dg/unlimited_polymorphic_13.f90 : Break up select - type block. - -2013-10-31 Jakub Jelinek - - * g++.dg/gomp/simd-1.C: New test. - * g++.dg/gomp/declare-simd-1.C (f32): Fix up aligned clause argument. - * g++.dg/gomp/declare-simd-2.C (fn13, fn14): Add new tests. - * gcc.dg/gomp/declare-simd-2.c (fn7, fn8, fn9, fn10, fn11): Likewise. - * c-c++-common/gomp/simd6.c: New test. - -2013-10-31 Edward Smith-Rowland <3dw4rd@verizon.net> - - Implement C++14 digit separators. - * g++.dg/cpp1y/digit-sep.C: New. - * g++.dg/cpp1y/digit-sep-neg.C: New. - * g++.dg/cpp1y/digit-sep-cxx11-neg.C: New. - -2013-10-31 Jakub Jelinek - - * gcc.dg/vect/vect-align-3.c: New test. - - * g++.dg/warn/pr33738.C (main): Initialize a2 again to make sure - we warn about it already during VRP1 pass. - -2013-10-31 Martin Jambor - - PR rtl-optimization/58934 - Revert: - 2013-10-30 Martin Jambor - PR rtl-optimization/10474 - * gcc.dg/pr10474.c: New testcase. - * gcc.dg/ira-shrinkwrap-prep-1.c: Likewise. - * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise. - -2013-10-31 Paolo Carlini - - PR c++/58932 - Revert: - 2013-10-18 Paolo Carlini - - PR c++/58466 - * g++.dg/cpp0x/variadic145.C: New. - - * g++.dg/cpp0x/sfinae49.C: New. - -2013-10-30 Paolo Carlini - - PR c++/58581 - * g++.dg/cpp0x/deleted1.C: New. - -2013-10-31 Zhenqiang Chen - - * gcc.target/arm/lp1243022.c: New test. - -2013-10-30 Joern Rennecke - - PR other/58545 - * gcc.target/avr/pr58545.c: New test. - -2013-10-30 Tobias Burnus - - Revert: - 2013-10-30 Tobias Burnus - * gcc.dg/cilk-plus/cilk-plus.exp: Add the libcilkrts library - path to the compile flags. - -2013-10-30 Cong Hou - - * gcc.target/i386/vect-abs-s8.c: New test. - * gcc.target/i386/vect-abs-s16.c: New test. - * gcc.target/i386/vect-abs-s32.c: New test. - -2013-10-30 Tobias Burnus - - * gcc.dg/cilk-plus/cilk-plus.exp: Add the libcilkrts library - path to the compile flags. - -2013-10-30 Mikael Pettersson - - PR rtl-optimization/58369 - * g++.dg/torture/pr58369.C: New test. - -2013-10-30 Tobias Burnus - - PR other/33426 - * g++.dg/vect/pr33426-ivdep-2.cc: New. - * g++.dg/vect/pr33426-ivdep-3.cc: New. - * g++.dg/vect/pr33426-ivdep-4.cc: New. - -2013-10-30 Vladimir Makarov - - PR target/58784 - * gcc.target/arm/pr58784.c: New. - -2013-10-30 Marc Glisse - - * gcc.dg/tree-ssa/alias-24.c: New file. - -2013-10-30 Vladimir Makarov - - * gcc.target/i386/fma_double_3.c: Use pattern for - scan-assembler-times instead of just one insn name. - * gcc.target/i386/fma_double_5.c: Ditto. - * gcc.target/i386/fma_float_3.c: Ditto. - * gcc.target/i386/fma_float_5.c: Ditto. - * gcc.target/i386/l_fma_double_1.c: Ditto. - * gcc.target/i386/l_fma_double_2.c: Ditto. - * gcc.target/i386/l_fma_double_3.c: Ditto. - * gcc.target/i386/l_fma_double_4.c: Ditto. - * gcc.target/i386/l_fma_double_5.c: Ditto. - * gcc.target/i386/l_fma_double_6.c: Ditto. - * gcc.target/i386/l_fma_float_1.c: Ditto. - * gcc.target/i386/l_fma_float_2.c: Ditto. - * gcc.target/i386/l_fma_float_3.c: Ditto. - * gcc.target/i386/l_fma_float_4.c: Ditto. - * gcc.target/i386/l_fma_float_5.c: Ditto. - * gcc.target/i386/l_fma_float_6.c: Ditto. - -2013-10-30 Christian Bruel - - * gcc.c-torture/execute/builtins/strncmp-2.c: Enable for SH. - * gcc.target/sh/cmpstr.c: New test. - * gcc.target/sh/cmpstrn.c: New test. - -2013-10-30 Martin Jambor - - PR rtl-optimization/10474 - * gcc.dg/pr10474.c: New testcase. - * gcc.dg/ira-shrinkwrap-prep-1.c: Likewise. - * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise. - -2013-10-29 Andrew Pinski - Zhenqiang Chen - - * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c: New test case. - * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c: New test case. - * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c: New test case. - * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c: New test case. - * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c: New test case. - * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c: New test case. - * gcc.dg/tree-ssa/phi-opt-9.c: Use a function call to prevent - conditional move to be used. - * gcc.dg/tree-ssa/ssa-dom-thread-3.c: Remove. - -2013-10-29 Tobias Burnus - - PR fortran/44350 - * gfortran.dg/blockdata_8.f90: New. - -2013-10-29 Oleg Endo - - PR target/54236 - * gcc.target/sh/pr54236-2: New. - * gcc.target/sh/pr54089-6: Add another rotl special case. - -2013-10-29 Paul Thomas - - PR fortran/58793 - * gfortran.dg/unlimited_polymorphic_13.f90: Use real variables - to determine sizes of real kinds. - - PR fortran/58858 - * gfortran.dg/unlimited_polymorphic_14.f90: New test. - -2013-10-29 Balaji V. Iyer - - * c-c++-common/cilk-plus/CK/compound_cilk_spawn.c: New test. - * c-c++-common/cilk-plus/CK/concec_cilk_spawn.c: Likewise. - * c-c++-common/cilk-plus/CK/fib.c: Likewise. - * c-c++-common/cilk-plus/CK/no_args_error.c: Likewise. - * c-c++-common/cilk-plus/CK/spawnee_inline.c: Likewise. - * c-c++-common/cilk-plus/CK/spawner_inline.c: Likewise. - * c-c++-common/cilk-plus/CK/spawning_arg.c: Likewise. - * c-c++-common/cilk-plus/CK/steal_check.c: Likewise. - * c-c++-common/cilk-plus/CK/test__cilk.c: Likewise. - * c-c++-common/cilk-plus/CK/varargs_test.c: Likewise. - * c-c++-common/cilk-plus/CK/sync_wo_spawn.c: Likewise. - * c-c++-common/cilk-plus/CK/invalid_spawn.c: Likewise. - * c-c++-common/cilk-plus/CK/spawn_in_return.c: Likewise. - * c-c++-common/cilk-plus/CK/fib_init_expr_xy.c: Likewise. - * c-c++-common/cilk-plus/CK/fib_no_sync.c: Likewise. - * c-c++-common/cilk-plus/CK/fib_no_return.c: Likewise. - * gcc.dg/cilk-plus/cilk-plus.exp: Added support to run Cilk Keywords - test stored in c-c++-common. Also, added the Cilk runtime's library - to the ld_library_path. - -2013-10-29 Paolo Carlini - - PR c++/58888 - * g++.dg/cpp0x/auto40.C: New. - * g++.dg/other/warning1.C: Adjust. - -2013-10-29 Richard Biener - - * gcc.dg/torture/restrict-2.c: New testcase. - * gcc.dg/torture/restrict-3.c: Likewise. - * gcc.dg/torture/restrict-4.c: Likewise. - * gcc.dg/torture/restrict-5.c: Likewise. - -2013-10-29 Marc Glisse - - PR tree-optimization/19831 - * gcc.dg/tree-ssa/alias-25.c: New file. - -2013-10-29 Richard Biener - - * g++.dg/vect/slp-pr56812.cc: Adjust with respect to -fvect-cost-model - changes. - * gcc.dg/vect/bb-slp-32.c: Likewise. - * gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp: Likewise. - * gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp: Likewise. - * gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp: Likewise. - * gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp: Likewise. - * gcc.target/powerpc/crypto-builtin-1.c: Likewise. - * gcc.target/powerpc/p8vector-builtin-1.c: Likewise. - * gcc.target/powerpc/p8vector-builtin-2.c: Likewise. - * gcc.target/powerpc/p8vector-builtin-3.c: Likewise. - * gcc.target/powerpc/p8vector-builtin-4.c: Likewise. - * gcc.target/powerpc/p8vector-builtin-5.c: Likewise. - * gcc.target/powerpc/p8vector-vectorize-1.c: Likewise. - * gcc.target/powerpc/p8vector-vectorize-2.c: Likewise. - * gcc.target/powerpc/p8vector-vectorize-3.c: Likewise. - * gcc.target/powerpc/p8vector-vectorize-4.c: Likewise. - * gcc.target/powerpc/p8vector-vectorize-5.c: Likewise. - * gfortran.dg/vect/vect.exp: Likewise. - -2013-10-28 Bill Schmidt - - * gcc.dg/vmx/gcc-bug-i.c: Add little endian variant. - * gcc.dg/vmx/eg-5.c: Likewise. - -2013-10-28 Claudiu Zissulescu - Joern Rennecke - - * gcc.target/arc/jump-around-jump.c: New test. - -2013-10-27 Tom de Vries - - * gcc.target/arm/require-pic-register-loc.c: New test. - -2013-10-27 Uros Bizjak - - PR target/58679 - * gcc.target/i386/pr58679-1.c: New test. - * gcc.target/i386/pr58679-2.c: Ditto. - -2013-10-27 Tobias Burnus - - PR other/33426 - * gcc.dg/vect/vect-ivdep-2.c: New. - -2013-10-26 Oleg Endo - - PR target/52483 - * gcc.target/sh/pr52483-1.c: Add tests for memory stores. - * gcc.target/sh/pr52483-2.c: Likewise. - * gcc.target/sh/pr52483-3.c: Likewise. - * gcc.target/sh/pr52483-4.c: Likewise. - -2013-10-26 Jeff Law - - * g++.dg/torture/pr49309.C: Removed. - * gcc.dg/dfp/pr35739.c: Removed. - -2013-10-25 Vladimir Makarov - - PR rtl-optimization/58759 - * gcc.target/i386/pr58759.c: New. - -2013-10-25 Tobias Burnus - - * g++.dg/vect/pr33426-ivdep.cc: Use dg-options. - * gfortran.dg/vect/vect-do-concurrent-1.f90: Ditto. - * gcc.dg/vect/vect-ivdep-1.c: Ditto. - -2013-10-25 Yufeng Zhang - - * gcc.dg/wmul-1.c: New test. - -2013-10-25 Paolo Carlini - - PR c++/58878 - * g++.dg/template/pr58878.C: New. - -2013-10-25 Marc Glisse - - * gcc.dg/tree-ssa/alias-23.c: New file. - -2013-10-25 Richard Biener - - PR tree-optimization/58626 - * gcc.dg/torture/pr58626.c: New testcase. - -2013-10-25 Paolo Carlini - - PR c++/54812 - * g++.dg/cpp0x/defaulted47.C: New. - -2013-10-25 Eric Botcazou - - * gcc.c-torture/execute/pr58831.c: New test. - -2013-10-25 Nick Clifton - - * c-c++-common/pr57793.c: Add expected error messages for - targets with small integers. - * gcc.dg/c99-stdint-1.c: Only run on 32-bit plus targets. - * gcc.dg/c99-stdint-2.c: Likewise. - * gcc.dg/cdce1.c: Likewise. - * gcc.dg/fold-overflow-1.c: Likewise. - * gcc.dg/utf-cvt.c: Likewise. - * gcc.dg/ftrapv-1.c: Only run on targets that support trapping - arithmetic. - * gcc.dg/ftrapv-2.c: Likewise. - * gcc.dg/pr30286.c: Likewise. - * gcc.dg/pr19340.c: Only run on targets that support scheduling. - * lib/target-supports.exp (check_effective_target_trapping): New - proc. Returns true if the target supports trapping arithmetic. - -2013-10-25 Tobias Burnus - - * g++.dg/parse/ivdep.C: New. - * g++.dg/vect/pr33426-ivdep.cc: New. - -2013-10-24 Richard Henderson - - PR rtl/58542 - * gcc.dg/atomic-store-6.c: New. - -2013-10-24 Ian Lance Taylor - - * go.test/go-test.exp (errchk): Combine quoted strings in comments. - -2013-10-24 Cong Hou - - * gcc.c-torture/execute/20030125-1.c: Update. - -2013-10-24 Tobias Burnus - - PR fortran/44646 - * gfortran.dg/vect/vect-do-concurrent-1.f90: New. - -2013-10-24 Dehao Chen - - * g++.dg/opt/devirt3.C: New test. - -2013-08-24 Tobias Burnus - - PR other/33426 - * gcc.dg/ivdep.c: New. - * gcc.dg/vect/vect-ivdep-1.c: New. - -2013-10-24 Kyrylo Tkachov - - * gcc.target/aarch64/c-output-mod-2.c: Fix for -fPIC. - * gcc.target/aarch64/c-output-mod-3.c: Likewise. - -2013-10-24 Nick Clifton - - * gcc.dg/20020312-2.c: No PIC register for RL78 or MSP430. - -2013-10-24 Marek Polacek - - PR c++/58705 - * g++.dg/parse/pr58705.C: New test. - -2013-10-24 Marek Polacek - - * gcc.dg/c11-align-5.c: Add more testing. - -2013-10-23 Pat Haugen - - * gcc.target/powerpc/direct-move.h: Fix header for executable tests. - -2013-10-23 Jakub Jelinek - - PR tree-optimization/58775 - PR tree-optimization/58791 - * gcc.dg/guality/pr58791-1.c: New test. - * gcc.dg/guality/pr58791-2.c: New test. - * gcc.dg/guality/pr58791-3.c: New test. - * gcc.dg/guality/pr58791-4.c: New test. - * gcc.dg/guality/pr58791-5.c: New test. - * gcc.c-torture/compile/pr58775.c: New test. - * gcc.dg/tree-ssa/reassoc-28.c: Don't scan reassoc1 dump. - -2013-10-23 Tom de Vries - - PR tree-optimization/58805 - * gcc.dg/pr58805.c: New test. - -2013-10-23 Jakub Jelinek - - * gcc.target/i386/vect-div-1.c: New test. - - * gcc.dg/vect/pr58508.c: Remove dg-options. - -2013-10-23 Richard Biener - - * gcc.dg/torture/pr58830.c: New testcase. - -2013-10-23 Edward Smith-Rowland <3dw4rd@verizon.net> - - Implement C++14 [[deprecated]] modulo [[gnu::deprecated]] bugs. - * g++.dg/cpp1y/attr-deprecated.C: New. - * g++.dg/cpp1y/attr-deprecated-neg.C: New. - -2013-10-23 Tobias Burnus - - PR fortran/58793 - * gfortran.dg/assumed_type_8.f90: New. - -2013-10-22 Uros Bizjak - - PR target/58779 - * gcc.target/i386/pr30315.c: Remove MINUSCC, DECCC, MINUSCCONLY - and MINUSCCZEXT defines. Update scan-assembler dg directive. - * gcc.dg/torture/pr58779.c: New test. - -2013-10-22 Steve Ellcey - - * gcc.target/mips/nor.c: New. - -2013-10-22 Bill Schmidt - - * gcc.target/powerpc/altivec-perm-1.c: Move the two vector pack - tests into... - * gcc.target/powerpc/altivec-perm-3.c: ...this new test, which is - restricted to big-endian targets. - -2013-10-22 Paul Thomas - - PR fortran 57893 - * gfortran.dg/unlimited_polymorphic_13.f90 : New test. - -2013-10-21 Tobias Burnus - - PR fortran/58803 - * gfortran.dg/proc_ptr_comp_38.f90: New. - -2013-10-21 Marek Polacek - - PR middle-end/58809 - * gcc.dg/gomp/pr58809.c: New test. - -2013-10-21 Vidya Praveen - - * gcc.dg/20050922-1.c: Remove stdlib.h and declare abort(). - * gcc.dg/20050922-1.c: Remove stdlib.h and declare abort() and exit(). - -2013-10-21 Richard Biener - - PR tree-optimization/58794 - * c-c++-common/torture/pr58794-1.c: New testcase. - * c-c++-common/torture/pr58794-2.c: Likewise. - -2013-10-21 Richard Biener - - PR middle-end/58742 - * c-c++-common/fold-divmul-1.c: New testcase. - -2013-10-21 Michael Zolotukhin - - * gcc.target/i386/memset-vector_loop-1.c: New test. - * gcc.target/i386/memset-vector_loop-2.c: New test. - -2013-10-21 Diego Novillo - - * g++.dg/plugin/selfassign.c: Include tree.h. - * gcc.dg/plugin/finish_unit_plugin.c: Likewise. - * gcc.dg/plugin/ggcplug.c: Likewise. - * gcc.dg/plugin/one_time_plugin.c: Likewise. - * gcc.dg/plugin/selfassign.c: Likewise. - * gcc.dg/plugin/start_unit_plugin.c: Likewise. - -2013-10-20 Richard Sandiford - - * gcc.target/mips/mips-ps-5.c: Add alignment attributes. - * gcc.target/mips/mips-ps-7.c: Likewise. - -2013-10-20 Richard Sandiford - - * gcc.target/mips/bswap-1.c, gcc.target/mips/bswap-2.c, - gcc.target/mips/bswap-3.c, gcc.target/mips/bswap-4.c, - gcc.target/mips/bswap-5.c, gcc.target/mips/bswap-6.c: New tests. - -2013-10-19 John David Anglin - - * c-c++-common/opaque-vector.c: Skip long double test on hppa. - - PR testsuite/58645 - * gnat.dg/specs/linker_alias.ads: Skip on hppa*-*-hpux*. - -2013-10-19 Mike Stump - - * g++.dg/lto/lto.exp: Add support for C/C++ mix language testing. - - * gcc.dg/lto/pr54625-1_0.c: Move from here... - * g++.dg/lto/pr54625-1_0.c: ... to here. - * gcc.dg/lto/pr54625-1_1.C: Likewise. - * g++.dg/lto/pr54625-1_1.C: Likewise. - * gcc.dg/lto/pr54625-2_0.c: Likewise. - * g++.dg/lto/pr54625-2_0.c: Likewise. - * gcc.dg/lto/pr54625-2_1.C: Likewise. - * g++.dg/lto/pr54625-2_1.C: Likewise. - -2013-10-19 Oleg Endo - - * gcc.target/sh/pr54089-3.c: Fix test for load of constant 31. - -2013-10-18 Cong Hou - - * gcc.dg/vect/pr58508.c: New test. - -2013-10-18 Paolo Carlini - - PR c++/58466 - * g++.dg/cpp0x/variadic145.C: New. - -2013-10-18 Andrew MacLeod - - * g++.dg/plugin/header_plugin.c: Don't include tree-flow.h. - -2013-10-18 Hans-Peter Nilsson - - * gcc.dg/tree-ssa/gen-vect-11.c: Use dynamic vector cost model. - * gcc.dg/tree-ssa/gen-vect-11a.c: Likewise. - * gcc.dg/tree-ssa/gen-vect-2.c: Likewise. - * gcc.dg/tree-ssa/gen-vect-25.c: Likewise. - -2013-10-17 Charles Baylis - - * gcc.dg/builtin-apply2.c: Skip test on arm hardfloat ABI targets. - * gcc.dg/tls/pr42894.c: Remove dg-options for arm*-*-* targets. - * gcc.target/arm/thumb-ltu.c: Remove dg-skip-if and require - effective target arm_thumb1_ok. - * lib/target-supports.exp - (check_effective_target_arm_fp16_ok_nocache): Don't force - -mfloat-abi=soft when building for hardfloat target. - -2013-10-17 Michael Meissner - - PR target/58673 - * gcc.target/powerpc/pr58673-1.c: New file to test whether - -mquad-word + -mno-vsx-timode causes errors. - * gcc.target/powerpc/pr58673-2.c: Likewise. - -2013-10-17 Paolo Carlini - - PR c++/58596 - * g++.dg/cpp0x/lambda/lambda-nsdmi5.C: New - -2013-10-17 Kyrylo Tkachov - - * gcc.target/aarch64/c-output-template.c: New testcase. - * gcc.target/aarch64/c-output-template-2.c: Likewise. - * gcc.target/aarch64/c-output-template-3.c: Likewise. - -2013-10-17 Michael Hudson-Doyle - - * lib/target-supports.exp - (check_effective_target_sync_long_long): AArch64 supports - atomic operations on "long long". - (check_effective_target_sync_long_long_runtime): AArch64 can - execute atomic operations on "long long". - -2013-10-17 Richard Biener - - PR tree-optimization/58143 - * gcc.dg/torture/pr58143-1.c: New testcase. - * gcc.dg/torture/pr58143-2.c: Likewise. - * gcc.dg/torture/pr58143-3.c: Likewise. - -2013-10-17 Marek Polacek - - PR c/58267 - * gcc.dg/c1x-align-5.c: New test. - -2013-10-16 Tobias Burnus - - PR fortran/58652 - * gfortran.dg/unlimited_polymorphic_12.f90: New. - -2013-10-16 Thomas Schwinge - - * c-c++-common/cpp/openmp-define-1.c: Move - dg-require-effective-target fopenmp after dg-do directive. - * c-c++-common/cpp/openmp-define-2.c: Likewise. - * gfortran.dg/openmp-define-1.f90: Likewise. - * gfortran.dg/openmp-define-2.f90: Likewise. - * gfortran.dg/openmp-define-3.f90: Likewise. - -2013-10-16 Paulo Matos - - * gcc.dg/tree-prof/tree-prof.exp: Fix comment. - -2013-10-15 Sriraman Tallam - - PR target/57756 - * gcc.target/i386/pr57756.c: New test. - * gcc.target/i386/pr57756_2.c: New test. - -2013-10-15 Richard Sandiford - - * gcc.dg/torture/builtin-self.c: New file. - -2013-10-15 Zhenqiang Chen - - * gcc.dg/tree-ssa/reassoc-32.c: New test case. - * gcc.dg/tree-ssa/reassoc-33.c: New test case. - * gcc.dg/tree-ssa/reassoc-34.c: New test case. - * gcc.dg/tree-ssa/reassoc-35.c: New test case. - * gcc.dg/tree-ssa/reassoc-36.c: New test case. - -2013-10-15 Cong Hou - - * gcc.dg/vect/vect-reduc-pattern-3.c: New test. - -2013-10-15 Paolo Carlini - - PR c++/58707 - * g++.dg/cpp0x/pr58707.C: New. - -2013-10-15 Kyrylo Tkachov - - * c-c++-common/cpp/openmp-define-3.c: Move effective target check - after other directives. - -2013-10-15 Tobias Burnus - - PR fortran/58652 - * gfortran.dg/unlimited_polymorphic_11.f90: New. - -2013-10-14 Ian Lance Taylor - - * go.test/go-test.exp (go-find-packages): New proc. - (go-gc-tests): Skip stress and safe tests. Skip *.dir - subdirectories. Do simple +build line matching. Handle run with - arguments. Handle errorcheckdir and rundircmpout. Use packages - for rundir. Remove special handling for bug191 and dwarf. - -2013-10-14 Tobias Burnus - - PR fortran/58658 - * gfortran.dg/unlimited_polymorphic_10.f90: New. - -2013-10-14 Rainer Orth - - * gcc.dg/torture/pr58670.c (ASM_STR) [__i386__ || __x86_64__]: - Use btsl. - -2013-10-14 Eric Botcazou - - * gnat.dg/specs/opt1.ads: New test. - -2013-10-14 Richard Biener - - PR tree-optimization/58640 - * gcc.c-torture/execute/pr58640-2.c: New testcase. - -2013-10-13 Eric Botcazou - - * gnat.dg/uninit_array.ad[sn]: New test. - * gnat.dg/uninit_array_pkg.ads: New helper. - -2013-10-13 Richard Biener - - * gcc.c-torture/execute/pr58662.c: New test. - -2013-10-12 Oleg Endo - - PR target/51244 - * gcc.dg/torture/p51244-21.c: New. - * gcc.target/sh/pr51244-20.c: New. - * gcc.target/sh/pr51244-20-sh2a.c: New. - -2013-10-12 Arnaud Charlet - - * gnat.dg/specs/linker_section.ads: Update test. - -2013-10-12 H.J. Lu - - PR target/58690 - * gcc.target/i386/pr58690.c: New test - -2013-10-12 Alexander Monakov - - * gcc.target/i386/builtin-ucmp.c: New test. - -2013-10-11 Brooks Moses - - * g++.dg/ext/altivec-7.C: Check for standard vector-type name mangling. - -2013-10-11 Jeff Law - - * gcc.c-torture/execute/pr58640.c: New test. - -2013-10-11 Paolo Carlini - - PR c++/58633 - * g++.dg/cpp0x/decltype57.C: New. - -2013-10-11 Paolo Carlini - - PR c++/31671 - * g++.dg/template/nontype26.C: New. - -2013-10-11 Thomas Schwinge - - * c-c++-common/cpp/openmp-define-1.c: New file. - * c-c++-common/cpp/openmp-define-2.c: Likewise. - * c-c++-common/cpp/openmp-define-3.c: Likewise. - * gfortran.dg/openmp-define-1.f90: Likewise. - * gfortran.dg/openmp-define-2.f90: Likewise. - * gfortran.dg/openmp-define-3.f90: Likewise. - - * g++.dg/gomp/gomp.exp: Recurse into subdirectories when looking - for test source files. - * gcc.dg/gomp/gomp.exp: Likewise. - * gcc.dg/gomp/appendix-a/a.35.1.c: Expect error. - * gcc.dg/gomp/appendix-a/a.35.3.c: Likewise. - * gcc.dg/gomp/appendix-a/a.35.4.c: Likewise. - * gcc.dg/gomp/appendix-a/a.35.5.c: Likewise. - * gcc.dg/gomp/appendix-a/a.35.6.c: Likewise. - -2013-10-11 Jakub Jelinek - - * c-c++-common/gomp/atomic-15.c: Adjust for C diagnostics. - Remove error test that is now valid in OpenMP 4.0. - * c-c++-common/gomp/atomic-16.c: New test. - * c-c++-common/gomp/cancel-1.c: New test. - * c-c++-common/gomp/depend-1.c: New test. - * c-c++-common/gomp/depend-2.c: New test. - * c-c++-common/gomp/map-1.c: New test. - * c-c++-common/gomp/pr58472.c: New test. - * c-c++-common/gomp/sections1.c: New test. - * c-c++-common/gomp/simd1.c: New test. - * c-c++-common/gomp/simd2.c: New test. - * c-c++-common/gomp/simd3.c: New test. - * c-c++-common/gomp/simd4.c: New test. - * c-c++-common/gomp/simd5.c: New test. - * c-c++-common/gomp/single1.c: New test. - * g++.dg/gomp/block-0.C: Adjust for stricter #pragma omp sections - parser. - * g++.dg/gomp/block-3.C: Likewise. - * g++.dg/gomp/clause-3.C: Adjust error messages. - * g++.dg/gomp/declare-simd-1.C: New test. - * g++.dg/gomp/declare-simd-2.C: New test. - * g++.dg/gomp/depend-1.C: New test. - * g++.dg/gomp/depend-2.C: New test. - * g++.dg/gomp/target-1.C: New test. - * g++.dg/gomp/target-2.C: New test. - * g++.dg/gomp/taskgroup-1.C: New test. - * g++.dg/gomp/teams-1.C: New test. - * g++.dg/gomp/udr-1.C: New test. - * g++.dg/gomp/udr-2.C: New test. - * g++.dg/gomp/udr-3.C: New test. - * g++.dg/gomp/udr-4.C: New test. - * g++.dg/gomp/udr-5.C: New test. - * g++.dg/gomp/udr-6.C: New test. - * gcc.dg/autopar/outer-1.c: Expect 4 instead of 5 loopfn matches. - * gcc.dg/autopar/outer-2.c: Likewise. - * gcc.dg/autopar/outer-3.c: Likewise. - * gcc.dg/autopar/outer-4.c: Likewise. - * gcc.dg/autopar/outer-5.c: Likewise. - * gcc.dg/autopar/outer-6.c: Likewise. - * gcc.dg/autopar/parallelization-1.c: Likewise. - * gcc.dg/gomp/block-3.c: Adjust for stricter #pragma omp sections - parser. - * gcc.dg/gomp/clause-1.c: Adjust error messages. - * gcc.dg/gomp/combined-1.c: Look for GOMP_parallel_loop_runtime - instead of GOMP_parallel_loop_runtime_start. - * gcc.dg/gomp/declare-simd-1.c: New test. - * gcc.dg/gomp/declare-simd-2.c: New test. - * gcc.dg/gomp/nesting-1.c: Adjust for stricter #pragma omp sections - parser. Add further #pragma omp sections nesting tests. - * gcc.dg/gomp/target-1.c: New test. - * gcc.dg/gomp/target-2.c: New test. - * gcc.dg/gomp/taskgroup-1.c: New test. - * gcc.dg/gomp/teams-1.c: New test. - * gcc.dg/gomp/udr-1.c: New test. - * gcc.dg/gomp/udr-2.c: New test. - * gcc.dg/gomp/udr-3.c: New test. - * gcc.dg/gomp/udr-4.c: New test. - * gfortran.dg/gomp/appendix-a/a.35.5.f90: Add dg-error. - -2013-10-10 Jan Hubicka - - * gcc.target/i386/avx256-unaligned-store-3.c: Update template for - tuning change. - * gcc.target/i386/avx256-unaligned-store-1.c: Likewise. - * gcc.target/i386/pr49168-1.c: Likewise. - * gcc.target/i386/pr49002-2.c: Likewise. - -2013-10-10 Jakub Jelinek - - PR middle-end/58670 - * gcc.dg/torture/pr58670.c: New test. - -2013-10-09 Zhenqiang Chen - - * gcc.dg/tree-ssa/phi-opt-11.c: New test. - -2013-10-09 Marek Polacek - - PR c++/58635 - * g++.dg/tm/pr58635-1.C: New test. - * g++.dg/tm/pr58635-2.C: New test. - -2013-10-09 Jakub Jelinek - - * gcc.dg/vect/bb-slp-31.c: Add cleanup-tree-dump. - -2013-10-09 Marc Glisse - - PR tree-optimization/20318 - * c-c++-common/pr20318.c: New file. - * gcc.dg/tree-ssa/pr20318.c: New file. - -2013-10-09 Eric Botcazou - - * gcc.c-torture/execute/pr58570.c: New test. - -2013-10-09 Alex Velenko - - * gcc.target/aarch64/vclz.c: New testcase. - -2013-10-09 Alex Velenko - - * gcc.target/aarch64/vadd_f64.c: New testcase. - * gcc.target/aarch64/vsub_f64.c: New testcase. - -2013-10-09 Alex Velenko - - * gcc.target/aarch64/vdiv_f.c: New testcase. - -2013-10-09 Alex Velenko - - * gcc.target/aarch64/vneg_f.c: New testcase. - * gcc.target/aarch64/vneg_s.c: New testcase. - -2013-10-08 Paolo Carlini - - PR c++/58568 - * g++.dg/cpp0x/lambda/lambda-ice10.C: New. - * g++.old-deja/g++.mike/misc9.C: Adjust. - -2013-10-08 Paolo Carlini - - PR c++/58665 - Revert: - 2013-10-04 Paolo Carlini - - PR c++/58448 - * g++.dg/template/crash117.C: New. - -2013-10-08 Andreas Krebbel - - * gcc.target/s390/htm-nofloat-2.c: Add -mzarch to asm options. - -2013-10-08 Marc Glisse - - PR tree-optimization/58480 - * gcc.dg/tree-ssa/pr58480.c: New file. - -2013-10-07 Bill Schmidt - - * gcc.target/powerpc/pr43154.c: Skip for ppc64 little endian. - * gcc.target/powerpc/fusion.c: Likewise. - -2013-10-07 Andreas Krebbel - - * gcc.target/s390/htm-nofloat-2.c: New testcase. - -2013-10-07 Andreas Krebbel - - * gcc.target/s390/htm-1.c: Add more tests to cover different - operand types. - -2013-10-06 Paolo Carlini - - PR c++/58126 - * g++.dg/init/uninitialized1.C: New. - -2013-10-06 Paolo Carlini - - PR c++/56060 - * g++.dg/cpp0x/variadic144.C: New. - -2013-10-04 Paolo Carlini - - PR c++/58560 - * g++.dg/cpp0x/auto39.C: New. - -2013-10-04 Paolo Carlini - - PR c++/58503 - * g++.dg/cpp0x/range-for26.C: New. - * g++.dg/cpp0x/range-for27.C: Likewise. - -2013-10-04 Paolo Carlini - - PR c++/58448 - * g++.dg/template/crash117.C: New. - -2013-10-04 Marc Glisse - - PR c++/19476 - * g++.dg/tree-ssa/pr19476-5.C: New file. - * g++.dg/tree-ssa/pr19476-1.C: Mention pr19476-5.C. - -2013-10-04 Paolo Carlini - - PR c++/58584 - * g++.dg/cpp0x/gen-attrs-55.C: New. - -2013-10-03 Easwaran Raman - - PR c++/33911 - * g++.dg/ext/attribute47.C: New. - -2013-10-03 Rong Xu - - * gcc.target/i386/cold-attribute-2.c: Fix the test by using original - probability. - * gcc.dg/tree-ssa/ipa-split-5.c: Ditto. - * gcc.dg/tree-ssa/ipa-split-6.c: Ditto. - -2013-10-03 Marek Polacek - - PR c++/58510 - * g++.dg/cpp0x/pr58510.C: New test. - -2013-10-03 Marc Glisse - - PR c++/19476 - * g++.dg/tree-ssa/pr19476-1.C: New file. - * g++.dg/tree-ssa/pr19476-2.C: Likewise. - * g++.dg/tree-ssa/pr19476-3.C: Likewise. - * g++.dg/tree-ssa/pr19476-4.C: Likewise. - -2013-10-03 Michael Meissner - - * gcc.target/powerpc/p8vector-fp.c: New test for floating point - scalar operations when using -mupper-regs-sf and -mupper-regs-df. - * gcc.target/powerpc/ppc-target-1.c: Update tests to allow either - VSX scalar operations or the traditional floating point form of - the instruction. - * gcc.target/powerpc/ppc-target-2.c: Likewise. - * gcc.target/powerpc/recip-3.c: Likewise. - * gcc.target/powerpc/recip-5.c: Likewise. - * gcc.target/powerpc/pr72747.c: Likewise. - * gcc.target/powerpc/vsx-builtin-3.c: Likewise. - -2013-10-03 Marcus Shawcroft - - PR target/58460 - * gcc.target/aarch64/pr58460.c: New file. - -2013-10-02 Tobias Burnus - - PR fortran/58593 - * gfortran.dg/char_length_19.f90: New. - -2013-10-02 Paolo Carlini - - PR c++/58535 - * g++.dg/parse/crash65.C: New. - * g++.dg/cpp1y/pr58535.C: Likewise. - -2013-10-02 Richard Biener - - * gcc.dg/tree-ssa/ldist-11.c: Adjust. - * gcc.dg/tree-ssa/ldist-17.c: Likewise. - * gcc.dg/tree-ssa/ldist-23.c: Likewise. - * gcc.dg/tree-ssa/ldist-pr45948.c: Likewise. - * gfortran.dg/ldist-pr45199.f: Likewise. - -2013-10-02 Paolo Carlini - - PR c++/58565 - * g++.dg/parse/crash64.C: New. - -2013-10-02 Yufeng Zhang - - * gcc.dg/tree-ssa/slsr-40.c: New test. - -2013-10-01 Paolo Carlini - - PR c++/58563 - * g++.dg/cpp0x/pr58563.C: New. - -2013-10-01 Vidya Praveen - - * gcc.target/aarch64/vect_saddl_1.c: New. - -2013-10-01 Jakub Jelinek - - PR target/58574 - * gcc.c-torture/execute/pr58574.c: New testcase. - -2013-10-01 Kugan Vivekanandarajah - - PR Target/58578 - * gcc.target/arm/pr58578.c: New test. - -2013-10-01 Kyrylo Tkachov - - PR tree-optimization/58556 - * gcc.dg/tree-ssa/gen-vect-26.c: Use dynamic vector cost model. - * gcc.dg/tree-ssa/gen-vect-28.c: Likewise. - -2013-10-01 Nick Clifton - - * lib/target-supports.exp (check_effective_target_ptr32plus): Fail - for MSP430. - * gcc.c-torture/compile/20010327-1.c: Only run the test for - ptr32plus targets. - * gcc.c-torture/compile/pr41181.c: Likewise. - * gcc.c-torture/compile/calls.c: Likewise. - * gcc.c-torture/compile/990617-1.c: Likewise. - * gcc.c-torture/compile/pr55955.c: Only run the test for - int32plus targets. - * gcc.c-torture/compile/limits-externdecl.c: Likewise. - -2013-10-01 Richard Biener - - PR tree-optimization/58553 - * gcc.dg/torture/pr58553.c: New testcase. - -2013-09-30 Jakub Jelinek - - PR middle-end/58564 - * gcc.c-torture/execute/pr58564.c: New test. - -2013-09-30 Teresa Johnson - - * gcc.dg/tree-ssa/ssa-dom-thread-3.c (expand_one_var): - Update for additional dump message. - -2013-09-30 Richard Biener - - PR tree-optimization/58554 - * gcc.dg/torture/pr58554.c: New testcase. - -2013-09-30 Simon Cook - Joern Rennecke - - * gcc.target/arc/barrel-shifter-1.c: New test. - * gcc.target/arc/barrel-shifter-2.c: Likewise. - * gcc.target/arc/long-calls.c, gcc.target/arc/mA6.c: Likewise. - * gcc.target/arc/mA7.c, gcc.target/arc/mARC600.c: Likewise. - * gcc.target/arc/mARC601.c, gcc.target/arc/mARC700.c: Likewise. - * gcc.target/arc/mcpu-arc600.c, gcc.target/arc/mcpu-arc601.c: Likewise. - * gcc.target/arc/mcpu-arc700.c, gcc.target/arc/mcrc.c: Likewise. - * gcc.target/arc/mdpfp.c, gcc.target/arc/mdsp-packa.c: Likewise. - * gcc.target/arc/mdvbf.c, gcc.target/arc/mlock.c: Likewise. - * gcc.target/arc/mmac-24.c, gcc.target/arc/mmac-d16.c: Likewise. - * gcc.target/arc/mno-crc.c, gcc.target/arc/mno-dsp-packa.c: Likewise. - * gcc.target/arc/mno-dvbf.c, gcc.target/arc/mno-lock.c: Likewise. - * gcc.target/arc/mno-mac-24.c, gcc.target/arc/mno-mac-d16.c: Likewise. - * gcc.target/arc/mno-rtsc.c, gcc.target/arc/mno-swape.c: Likewise. - * gcc.target/arc/mno-xy.c, gcc.target/arc/mrtsc.c: Likewise. - * gcc.target/arc/mspfp.c, gcc.target/arc/mswape.c: Likewise. - * gcc.target/arc/mtune-ARC600.c: Likewise. - * gcc.target/arc/mtune-ARC601.c: Likewise. - * gcc.target/arc/mtune-ARC700-xmac: Likewise. - * gcc.target/arc/mtune-ARC700.c: Likewise. - * gcc.target/arc/mtune-ARC725D.c: Likewise. - * gcc.target/arc/mtune-ARC750D.c: Likewise. - * gcc.target/arc/mul64.c, gcc.target/arc/mxy.c: Likewise. - * gcc.target/arc/no-dpfp-lrsr.c: Likewise. - -2013-09-30 Richard Biener - - PR middle-end/58532 - * g++.dg/torture/pr58552.C: New testcase. - -2013-09-27 Michael Meissner - - * gcc.target/powerpc/p8vector-ldst.c: New test for -mupper-regs-sf - and -mupper-regs-df. - -2013-09-27 Paulo Matos - - PR middle-end/58463 - * gcc.dg/pr58463.c: New test. - -2013-09-27 Jakub Jelinek - - PR middle-end/58551 - * c-c++-common/gomp/pr58551.c: New test. - -2013-09-27 Richard Biener - - PR tree-optimization/58459 - * gcc.dg/tree-ssa/ssa-pre-31.c: New testcase. - -2013-09-26 Bernd Edlinger - - PR fortran/58113 - * gfortran.dg/round_4.f90: Check for rounding support. - -2013-09-26 James Greenhalgh - - * g++.dg/vect/pr58513.cc (op): Make static. - -2013-09-26 Richard Biener - - * gcc.dg/tree-ssa/coalesce-2.c: New testcase. - -2013-09-26 Richard Biener - - PR tree-optimization/58539 - * gcc.dg/torture/pr58539.c: New testcase. - -2013-09-25 Jeff Law - - * gcc.dg/tree-ssa/ssa-dom-thread-3.c: Update expected output. - -2013-09-25 Tobias Burnus - - PR fortran/58436 - * gfortran.dg/finalize_21.f90: New. - -2013-09-25 Tobias Burnus - - PR fortran/57697 - PR fortran/58469 - * gfortran.dg/defined_assignment_8.f90: New. - * gfortran.dg/defined_assignment_9.f90: New. - -2013-09-25 Marek Polacek - - PR sanitizer/58413 - * c-c++-common/ubsan/shift-5.c: New test. - * c-c++-common/ubsan/shift-6.c: New test. - * c-c++-common/ubsan/div-by-zero-5.c: New test. - * gcc.dg/ubsan/c-shift-1.c: New test. - -2013-09-25 Marek Polacek - - PR c++/58516 - * g++.dg/tm/pr58516.C: New test. - -2013-09-24 Kyrylo Tkachov - - * lib/target-supports.exp (check_effective_target_arm_cond_exec): - New procedure. - * gcc.target/arm/minmax_minus.c: Check for cond_exec target. - -2013-09-24 Richard Biener - - PR middle-end/58513 - * g++.dg/vect/pr58513.cc: New testcase. - -2013-09-24 Yvan Roux - - * gcc.target/arm/atomic-comp-swap-release-acquire.c: Adjust expected - output. - -2013-09-23 Adam Butcher - - PR c++/58500 - * g++.dg/cpp1y/pr58500.C: New testcase. - -2013-09-23 Eric Botcazou - - * gnat.dg/opt28.ad[sb]: New test. - * gnat.dg/opt28_pkg.ads: New helper. - -2013-09-23 Richard Biener - - PR tree-optimization/58464 - * g++.dg/torture/pr58464.C: New testcase. - -2013-09-23 Christian Bruel - - PR target/58475 - * gcc.target/sh/torture/pr58475.c: New test. - -2013-09-23 Janus Weil - - PR fortran/58355 - * gfortran.dg/extends_15.f90: New. - -2013-09-20 Paolo Carlini - - PR c++/58481 - * g++.dg/cpp0x/lambda/lambda-this17.C: New. - -2013-09-20 Jan-Benedict Glaw - - PR target/56875 - * gcc.target/vax/vax.exp: New. - * gcc.target/vax/pr56875.c: Ditto. - -2013-09-20 Richard Biener - - PR middle-end/58484 - * gfortran.dg/pr58484.f: New testcase. - -2013-09-20 Jeff Law - - * gcc.dg/tree-ssa/ssa-dom-thread-3.c: Add missing dg-final clause. - -2013-09-20 Bernd Edlinger - - PR middle-end/57748 - * gcc.dg/torture/pr57748-1.c: New test. - * gcc.dg/torture/pr57748-2.c: New test. - -2013-09-20 Marek Polacek - - PR sanitizer/58413 - * c-c++-common/ubsan/shift-4.c: New test. - -2013-09-20 Richard Biener - - PR tree-optimization/58453 - * gcc.dg/tree-ssa/ldist-23.c: New testcase. - -2013-09-20 Janus Weil - - PR fortran/58099 - * gfortran.dg/proc_ptr_43.f90: New. - -2013-09-18 Tobias Burnus - - PR fortran/57697 - * gfortran.dg/defined_assignment_11.f90: New. - -2013-09-18 Vladimir Makarov - - PR rtl-optimization/58438 - * g++.dg/pr58438.C: New test. - -2013-09-18 Tobias Burnus - - PR fortran/43366 - * gfortran.dg/class_39.f03: Update dg-error. - * gfortran.dg/class_5.f03: Ditto. - * gfortran.dg/class_53.f90: Ditto. - * gfortran.dg/realloc_on_assign_20.f90: New. - * gfortran.dg/realloc_on_assign_21.f90: New. - * gfortran.dg/realloc_on_assign_22.f90: New. - -2013-09-18 Paolo Carlini - - PR c++/58457 - * g++.dg/parse/using4.C: New. - -2013-09-18 Kyrylo Tkachov - - * gcc.c-torture/execute/pr58419.c (b): Change type to signed char. - -2013-09-18 Marek Polacek - - PR sanitize/58443 - * g++.dg/ubsan/div-by-zero-1.C: Use the integer-divide-by-zero option - instead of the shift option. - * c-c++-common/ubsan/pr58443-1.c: New test. - * c-c++-common/ubsan/pr58443-3.c: New test. - * c-c++-common/ubsan/pr58443-2.c: New test. - -2013-09-18 Richard Biener - - PR tree-optimization/58417 - * gcc.dg/torture/pr58417.c: New testcase. - -2013-09-18 Eric Botcazou - - * gnat.dg/array_bounds_test2.adb: New test. - -2013-09-18 Kyrylo Tkachov - - * g++.dg/debug/dwarf2/omp-fesdr.C: Check for fopenmp effective target. - * gcc.dg/debug/dwarf2/omp-fesdr.c: Likewise. - -2013-09-18 Eric Botcazou - - * gnat.dg/in_out_parameter4.adb: New test. - -2013-09-18 Marek Polacek - - PR sanitizer/58411 - * c-c++-common/ubsan/attrib-1.c: New test. - -2013-09-17 Cong Hou - - * gcc.dg/vect/vect-reduc-dot-s16c.c: Add a test case with dot product - on two arrays with short and int types. This should not be recognized - as a dot product pattern. - -2013-09-17 Paolo Carlini - - PR c++/58435 - * pt.c (tsubst, [BOUND_TEMPLATE_TEMPLATE_PARM]): Take into account - the cp_type_quals (r) too. - -2013-09-17 Jan Hubicka - - PR middle-end/58332 - * gcc.c-torture/compile/pr58332.c: New testcase. - -2013-09-17 Jeff Law - - * gcc.c-torture/execute/pr58387.c: New test. - -2013-09-17 Kyrylo Tkachov - - PR tree-optimization/58088 - * gcc.c-torture/compile/pr58088.c: New test. - -2013-09-17 Nick Clifton - - * lib/target-supports.exp (check_effective_target_trampolines): - Add MSP430 to the list of targets that do not support trampolines. - (check_profiling_available): Add MSP430 to the list of targets - that do not support profiling. - (check_effective_target_tls_runtime): Add MSP430 to the list of - targets that do not support TLS. - -2013-09-17 Eric Botcazou - - * gnat.dg/opt27.adb: New test. - * gnat.dg/opt27_pkg.ad[sb]: New helper. - -2013-09-17 Andreas Schwab - - * gcc.dg/tree-ssa/ldist-22.c (main): Return zero. - -2013-09-17 Richard Biener - - PR tree-optimization/58432 - * gcc.dg/pr58432.c: New testcase. - -2013-09-17 Bin Cheng - - * gcc.dg/tree-ssa/slsr-39.c: New test. - -2013-09-16 Xinliang David Li - - * gcc.misc-tests/help.exp: Optimizer help change. - -2013-09-16 Jeff Law - - * gcc.c-torture/execute/pr58419.c: New test. - * gcc.c-torture/execute/pr58431.c: New test. - -2013-09-16 Tobias Burnus - - PR fortran/58356 - * gfortran.dg/finalize_19.f90: New. - -2013-09-16 Vladimir Makarov - - * gcc.target/i386/pr58418.c: New. - -2013-09-16 James Greenhalgh - - * gcc.target/aarch64/fmla-intrinsic.c: New. - * gcc.target/aarch64/mla-intrinsic.c: Likewise. - * gcc.target/aarch64/fmls-intrinsic.c: Likewise. - * gcc.target/aarch64/mls-intrinsic.c: Likewise. - -2013-09-16 James Greenhalgh - - * gcc.target/aarch64/mul_intrinsic_1.c: New. - * gcc.target/aarch64/fmul_intrinsic_1.c: Likewise. - -2013-09-16 Richard Biener - - * gcc.dg/tree-ssa/ldist-22.c: New testcase. - -2013-09-16 Adam Butcher - - * g++.dg/cpp0x/auto9.C: Downgrade two previously expected errors (now - interpreted as implicit templates) to be expected pedwarns instead. - -2013-09-16 Tobias Burnus - - PR fortran/57697 - * gfortran.dg/defined_assignment_10.f90: Comment print statement. - -2013-09-15 Tobias Burnus - - PR fortran/57697 - * gfortran.dg/defined_assignment_10.f90: New. - -2013-09-13 Evgeny Gavrin - - * gcc.dg/debug/dwarf2/omp-fesdr.c: Add test. - * g++.dg/debug/dwarf2/omp-fesdr.C: Add test. - -2013-09-13 Jacek Caban - - * g++.dg/abi/main.C: Added implicit C linkage tests - -2013-09-13 Kai Tietz - - * gcc.target/i386/pr57848.c: New file. - -2013-09-13 Christian Bruel - - PR target/58314 - * gcc.target/sh/torture/pr58314.c: New test. - -2013-09-12 Paolo Carlini - - * g++.dg/torture/pr58380.C: Suppress warnings with "-w". - -2013-09-12 Martin Jambor - - PR ipa/58389 - * g++.dg/pr58389.C: New test. - -2013-09-12 Paolo Carlini - - * g++.dg/template/pseudodtor2.C: Add column number to dg-error strings. - * g++.dg/template/pseudodtor3.C: Likewise. - -2013-09-12 Richard Biener - - PR tree-optimization/58404 - * g++.dg/tree-ssa/pr58404.C: New testcase. - -2013-09-12 Martin Jambor - - PR ipa/58371 - * g++.dg/ipa/pr58371.C: New test. - -2013-09-12 Richard Biener - - * gcc.dg/tree-ssa/ldist-4.c: Remove undefined behavior. Adjust - expected outcome and comment why that happens. - -2013-09-11 Richard Biener - - PR middle-end/58377 - * g++.dg/uninit-pred-4.C: New testcase. - -2013-09-11 Jakub Jelinek - - PR tree-optimization/58385 - * gcc.c-torture/execute/pr58385.c: New test. - -2013-09-11 Kyrylo Tkachov - - * gcc.target/arm/thumb-ifcvt-2.c: New test. - -2013-09-10 Jeff Law - - * g++.dg/torture/pr58380.C: New test. - -2013-09-10 Jan Hubicka - Paolo Carlini - - * g++.dg/template/cond2.C: Tweak, do not expect a "required from". - -2013-09-10 Jeff Law - - * gcc.c-torture/compile/pr58343.c: New test. - -2013-09-10 Jakub Jelinek - - PR rtl-optimization/58365 - * gcc.c-torture/execute/pr58365.c: New test. - -2013-09-10 Michael Zolotukhin - - * gcc.dg/torture/memcpy-1.c: New test. - -2013-09-10 Alan Modra - - * gcc.target/powerpc/pr58330.c: New. - -2013-09-10 Alan Modra - - * gcc.target/powerpc/medium_offset.c: New. - -2013-09-09 Jakub Jelinek - - PR c++/58325 - * g++.dg/warn/Wunused-var-21.C: New test. - - PR tree-optimization/58364 - * gcc.c-torture/execute/pr58364.c: New test. - -2013-09-09 Paolo Carlini - - PR c++/43452 - * g++.dg/warn/Wdelete-incomplete-1.C: New. - * g++.dg/warn/Wdelete-incomplete-2.C: Likewise. - * g++.dg/init/delete1.C: Adjust. - -2013-09-09 Ian Bolton - - * gcc.target/aarch64/movdi_1.c: New test. - -2013-09-09 Paolo Carlini - - PR c++/58362 - * g++.dg/warn/Wunused-parm-5.C: New. - -2013-09-09 Kyrylo Tkachov - - * gcc.target/aarch64/cmn-neg.c: New test. - -2013-09-09 Richard Biener - - PR middle-end/58326 - * gcc.dg/torture/pr58326-1.c: New testcase. - * gcc.dg/torture/pr58326-2.c: Likewise. - -2013-09-09 Kyrylo Tkachov - - PR target/57735 - * g++.dg/ext/pr57735.C: New test. - -2013-09-09 Jan Hubicka - - PR middle-end/58294 - * g++.dg/torture/PR58294.C: New testcase. - -2013-09-08 Jeff Law - - * gcc.c-torture/compile/pr58340.c: New test. - -2013-09-08 Richard Sandiford - - * g++.dg/debug/ra1.C: New test. - -2013-09-08 Jan Hubicka - - * g++.dg/ipa/devirt-11.C: Update template. - * g++.dg/ipa/devirt-16.C: New testcase. - * g++.dg/ipa/devirt-17.C: New testcase. - * g++.dg/ipa/devirt-18.C: New testcase. - -2013-09-08 Paolo Carlini - - PR c++/54941 - * g++.dg/overload/new1.C: Adjust. - -2013-09-08 Joern Rennecke - - * c-c++-common/opaque-vector.c: New test. - -2013-09-08 Tom de Vries - - PR c++/58282 - * g++.dg/tm/noexcept-6.C: New test. - -2013-09-06 Joern Rennecke - - * gcc.target/arc/cond-set-use.c: New test. - -2013-09-06 Eric Botcazou - - * gnat.dg/stack_usage2.adb: New test. - -2013-09-06 James Greenhalgh - - * gcc.target/aarch64/table-intrinsics.c - (qtbl_tests8_< ,2,3,4>): Fix control vector parameter type. - (qtb_tests8_< ,2,3,4>): Likewise. - (qtblq_tests8_< ,2,3,4>): Likewise. - (qtbxq_tests8_< ,2,3,4>): Likewise. - -2013-09-06 Eric Botcazou - - * gnat.dg/warn10.ad[sb]: New test. - * gnat.dg/warn10_pkg.ads: New helper. - -2013-09-06 Joern Rennecke - - * gcc.dg/ipa/ipa-pta-14.c (scan-ipa-dump) [keeps_null_pointer_checks]: - Don't expect NULL in foo.result set. - * gcc.dg/tree-ssa/pta-escape-1.c (scan-tree-dump): Don't expect NULL - in ESCAPED set. - * gcc.dg/tree-ssa/pta-escape-2.c: Likewise. - * gcc.dg/tree-ssa/pta-escape-3.c: Likewise. - -2013-09-06 Andreas Krebbel - - * gcc.target/s390/nearestint-1.c: New testcase. - -2013-09-06 Joern Rennecke - Vineet Gupta - - * gcc.c-torture/execute/20101011-1.c [__arc__] (DO_TEST): Define as 0. - * gcc.target/arc: New directory. - * gcc.dg/torture/pr37868.c: Also skip for arc*-*-*. - * gcc.dg/stack-usage-1.c [__arc__] (SIZE): Define. - * gcc.dg/torture/stackalign/builtin-apply-2.c - [__arc__] (STACK_ARGUMENTS_SIZE): Set to 0. - * gcc.dg/builtin-apply2.c - [__arc__] (STACK_ARGUMENTS_SIZE): Set to 0. - -2013-09-04 Jan Hubicka - - PR middle-end/58201 - * g++.dg/torture/pr58201_0.C: New testcase. - * g++.dg/torture/pr58201_1.C: New testcase. - * g++.dg/torture/pr58201.h: New testcase. - -2013-09-05 Jan Hubicka - - * gcc.dg/autopar/pr49960.c: Disable partial inlining - -2013-09-05 Richard Biener - - PR tree-optimization/58137 - * gcc.target/i386/pr58137.c: New testcase. - -2013-09-05 Martin Jambor - - * g++.dg/ipa/remref-1.C: New test. - * g++.dg/ipa/remref-2.C: Likewise. - -2013-09-04 Paolo Carlini - - PR c++/24926 - * g++.dg/parse/access11.C: New. - -2013-09-04 David Edelsohn - - * g++.dg/warn/weak1.C: Skip on AIX. - -2013-09-04 Easwaran Raman - - PR middle-end/57370 - PR tree-optimization/58011 - * gfortran.dg/reassoc_12.f90: New testcase. - * gcc.dg/tree-ssa/reassoc-31.c: New testcase. - -2013-09-04 David Edelsohn - - * gcc.dg/attr-weakref-1.c: Skip on AIX. - * gcc.dg/torture/pr53922.c: Skip on AIX. - * lib/file-format.exp (gcc_target_object_format): AIX is COFF. - -2013-09-04 Teresa Johnson - - * gcc.dg/unroll_1.c: Test dumping to stderr. - -2013-09-04 Paolo Carlini - - PR c++/58305 - * g++.dg/warn/deprecated-8.C: New. - -2013-09-03 Jeff Law - - * tree-ssa/ssa-dom-thread-3.c: Update due to changes in debug - dump output. - -2013-09-03 Meador Inge - - Revert: - - 2013-08-30 Meador Inge - - * gcc.dg/Warray-bounds-11.c: New testcase. - -2013-09-03 David Edelsohn - - * lib/target-supports.exp (check_weak_available): Return true for AIX. - -2013-09-03 Jan Hubicka - - * g++.dg/ipa/devirt-15.C: Fix testcase. - -2013-09-03 Richard Biener - - PR middle-end/57656 - * gcc.dg/torture/pr57656.c: New testcase. - -2013-09-03 Richard Biener - - PR middle-end/57287 - * gcc.dg/pr57287-2.c: Use setjmp, not __sigsetjmp. - -2013-09-02 Thomas Koenig - - PR fortran/PR56519 - * gfortran.dg/do_concurrent_3.f90: New test case. - -2013-09-02 Jan Hubicka - - * gcc.dg/tree-ssa/fnsplit-1.c: New testcase. - -2013-09-02 Martin Jambor - - PR ipa/58106 - * gcc.dg/ipa/pr58106.c: New test. - -2013-09-02 James Greenhalgh - - * gcc.target/aarch64/scalar_intrinsics.c - (vdup_lane<8,16,32,64>): Force values to SIMD registers. - -2013-09-02 Richard Biener - - PR middle-end/57511 - * gcc.dg/tree-ssa/sccp-1.c: New testcase. - -2013-09-02 Richard Biener - - * gcc.dg/tree-ssa/loop-4.c: Adjust scan looking for one memory - reference. - -2013-09-02 Bin Cheng - - * gcc.target/arm/ivopts-orig_biv-inc.c: New testcase. - -2013-09-02 Paolo Carlini - - PR c++/21682, implement DR 565 - * g++.dg/template/using24.C: New. - * g++.dg/template/using25.C: Likewise. - * g++.dg/template/using26.C: Likewise. - -2013-09-01 Jan Hubicka - - * g++.dg/ipa/devirt-15.C: New testcase. - -2013-09-01 Eric Botcazou - - * gnat.dg/specs/linker_alias.ads: Skip on Darwin. - -2013-08-31 Jan Hubicka - - * g++.dg/ipa/devirt-11.C: Use -fno-devirtualize-speuclatively - * g++.dg/tree-ssa/pr45453.C: Likewise. - -2013-08-31 Jan Hubicka - - * gcc.dg/fork-instrumentation.c: New testcase. - -2013-08-30 Uros Bizjak - - * g++.dg/abi/mangle33.C (dg-final): Use match count in scan RE. - -2013-08-30 Meador Inge - - * gcc.dg/Warray-bounds-11.c: New testcase. - -2013-08-30 Marek Polacek - - * g++.dg/ubsan/div-by-zero-1.C: New test. - * c-c++-common/ubsan/save-expr-1.c: New test. - * c-c++-common/ubsan/save-expr-2.c: New test. - * c-c++-common/ubsan/save-expr-3.c: New test. - * c-c++-common/ubsan/save-expr-4.c: New test. - * c-c++-common/ubsan/typedef-1.c: New test. - * c-c++-common/ubsan/const-char-1.c: New test. - * c-c++-common/ubsan/const-expr.c: New test. - * c-c++-common/ubsan/div-by-zero-1.c: Likewise. - * c-c++-common/ubsan/shift-1.c: Likewise. - * c-c++-common/ubsan/shift-2.c: Likewise. - * c-c++-common/ubsan/div-by-zero-2.c: Likewise. - * lib/ubsan-dg.exp: New file. - * g++.dg/dg.exp: Add ubsan tests. - * g++.dg/ubsan/ubsan.exp: New file. - * gcc.dg/ubsan/ubsan.exp: New file. - * g++.dg/ubsan/cxx11-shift-1.C: New test. - * g++.dg/ubsan/cxx11-shift-2.C: New test. - * c-c++-common/ubsan/div-by-zero-3.c: New test. - * c-c++-common/ubsan/div-by-zero-1.c: New test. - * c-c++-common/ubsan/div-by-zero-4.c: New test. - * c-c++-common/ubsan/shift-3.c: New test. - * c-c++-common/ubsan/unreachable-1.c: New test. - * c-c++-common/ubsan/shift-1.c: New test. - * c-c++-common/ubsan/shift-2.c: New test. - * c-c++-common/ubsan/div-by-zero-2.c: New test. - * gcc.dg/ubsan/c99-shift-2.c: New test. - * gcc.dg/ubsan/c99-shift-1.c: New test. - -2013-08-29 Jan Hubicka - - * gcc.dg/tree-ssa/attr-alias.c: Rename test3 to test1 - to match template and comment. - -2013-08-30 Paolo Carlini - - PR c++/51424 - * g++.dg/cpp0x/dc8.C: New. - * g++.dg/template/meminit1.C: Adjust. - -2013-08-30 Teresa Johnson - - * gcc.dg/inline-dump.c: Delete inadvertant commit. - -2013-08-30 Jakub Jelinek - - PR tree-optimization/58277 - * gcc.c-torture/execute/pr58277-1.c: New test. - * gcc.c-torture/execute/pr58277-2.c: New test. - -2013-08-30 Eric Botcazou - - * gcc.dg/guality/param-1.c: New test. - * gcc.dg/guality/param-2.c: Likewise. - -2013-08-30 Richard Biener - - PR tree-optimization/58228 - * gcc.dg/torture/pr58228.c: New testcase. - -2013-08-30 Richard Biener - - PR tree-optimization/58223 - * gcc.dg/torture/pr58223.c: New testcase. - * gcc.dg/tree-ssa/ldist-16.c: Flip expected behavior. - -2013-08-30 Richard Biener - - PR tree-optimization/58010 - * gcc.dg/pr58010.c: New testcase. - -2013-08-29 Xinliang DavidLi - - * gcc.dg/unroll_3.c: Message change. - * gcc.dg/unroll_4.c: Likewise. - * gcc.dg/tree-ssa/cunroll-1.c: Likewise. - * gcc.dg/tree-ssa/cunroll-2.c: Likewise. - * gcc.dg/tree-ssa/cunroll-3.c: Likewise. - * gcc.dg/tree-ssa/cunroll-4.c: Likewise. - * gcc.dg/tree-ssa/cunroll-5.c: Likewise. - * gcc.dg/tree-ssa/loop-23.c: Likewise. - * gcc.dg/tree-ssa/loop-1.c: Likewise. - * gcc.dg/unroll_1.c: Likewise. - * gcc.dg/vect/bb-slp-31.c: Likewise. - * gcc.dg/vect/bb-slp-14.c: Likewise. - * gcc.dg/vect/bb-slp-8.c: Likewise. - * gcc.dg/vect/bb-slp-23.c: Likewise. - * gcc.dg/vect/bb-slp-15.c: Likewise. - * gcc.dg/vect/bb-slp-9.c: Likewise. - * gcc.dg/vect/bb-slp-24.c: Likewise. - * gcc.dg/vect/bb-slp-16.c: Likewise. - * gcc.dg/vect/bb-slp-25.c: Likewise. - * gcc.dg/vect/bb-slp-17.c: Likewise. - * gcc.dg/vect/bb-slp-26.c: Likewise. - * gcc.dg/vect/bb-slp-18.c: Likewise. - * gcc.dg/vect/no-tree-reassoc-bb-slp-12.c: Likewise. - * gcc.dg/vect/bb-slp-27.c: Likewise. - * gcc.dg/vect/bb-slp-19.c: Likewise. - * gcc.dg/vect/bb-slp-28.c: Likewise. - * gcc.dg/vect/bb-slp-cond-1.c: Likewise. - * gcc.dg/vect/bb-slp-29.c: Likewise. - * gcc.dg/vect/bb-slp-8a.c: Likewise. - * gcc.dg/vect/bb-slp-pattern-2.c: Likewise. - * gcc.dg/vect/bb-slp-1.c: Likewise. - * gcc.dg/vect/bb-slp-8b.c: Likewise. - * gcc.dg/vect/bb-slp-2.c: Likewise. - * gcc.dg/vect/bb-slp-3.c: Likewise. - * gcc.dg/vect/bb-slp-10.c: Likewise. - * gcc.dg/vect/fast-math-bb-slp-call-1.c: Likewise. - * gcc.dg/vect/bb-slp-4.c: Likewise. - * gcc.dg/vect/bb-slp-11.c: Likewise. - * gcc.dg/vect/fast-math-bb-slp-call-2.c: Likewise. - * gcc.dg/vect/bb-slp-5.c: Likewise. - * gcc.dg/vect/bb-slp-20.c: Likewise. - * gcc.dg/vect/bb-slp-6.c: Likewise. - * gcc.dg/vect/bb-slp-21.c: Likewise. - * gcc.dg/vect/bb-slp-30.c: Likewise. - * gcc.dg/vect/bb-slp-13.c: Likewise. - * gcc.dg/vect/bb-slp-7.c: Likewise. - * gcc.dg/vect/bb-slp-22.c: Likewise. - * gcc.dg/unroll_2.c: Likewise. - * g++.dg/vect/slp-pr50413.cc: Likewise. - * g++.dg/vect/slp-pr56812.cc: Likewise. - * g++.dg/vect/slp-pr50819.cc: Likewise. - -2013-08-29 Eric Botcazou - - * gcc.dg/tree-ssa/ipa-cp-1.c: Adjust regexp. - -2013-08-29 Teresa Johnson - - * gcc.dg/pr40209.c: Use -fopt-info. - * gcc.dg/pr26570.c: Ditto. - * gcc.dg/pr32773.c: Ditto. - * g++.dg/tree-ssa/dom-invalid.C: Ditto. - -2013-08-29 Richard Biener - - PR tree-optimization/58246 - * gcc.dg/torture/pr58246.c: New testcase. - -2013-08-29 Thomas Koenig - - PR fortran/52243 - * gfortran.dg/realloc_on_assign_14.f90: Remove warning made - obsolete by patch. - * gfortran.dg/realloc_on_assign_19.f90: New test. - -2013-08-29 Richard Biener - - PR middle-end/57287 - * gcc.dg/pr57287-2.c: New testcase. - -2013-08-29 Richard Biener - - PR tree-optimization/57685 - * gcc.dg/torture/pr57685.c: New testcase. - -2013-08-28 Paolo Carlini - - PR c++/58255 - * g++.dg/cpp0x/dc7.C: New. - -2013-08-28 Jakub Jelinek - - PR middle-end/58257 - * c-c++-common/gomp/pr58257.c: New test. - -2013-08-28 Richard Biener - - PR tree-optimization/56933 - * gcc.dg/vect/pr56933.c: Properly guard runtime with check_vect (). - -2013-08-27 Vidya Praveen - - * gcc.target/aarch64/scalar_shift_1.c: New. - -2013-08-27 Richard Biener - - PR tree-optimization/57521 - * gcc.dg/torture/pr57521.c: New testcase. - -2013-08-27 Jakub Jelinek - - PR rtl-optimization/57860 - PR rtl-optimization/57861 - PR rtl-optimization/57875 - PR rtl-optimization/57876 - PR rtl-optimization/57877 - * gcc.c-torture/execute/pr57860.c: New test. - * gcc.c-torture/execute/pr57861.c: New test. - * gcc.c-torture/execute/pr57875.c: New test. - * gcc.c-torture/execute/pr57876.c: New test. - * gcc.c-torture/execute/pr57877.c: New test. - -2013-08-26 Thomas Koenig - - PR fortran/58146 - * gfortran.dg/bounds_check_18.f90: New test. - -2013-08-23 Jan Hubicka - - * g++.dg/ipa/devirt-14.C: Fix typo. - -2013-08-23 Mikael Morin - - PR fortran/57798 - * gfortran.dg/inline_sum_5.f90: New. - -2013-08-23 Janus Weil - - PR fortran/57843 - * gfortran.dg/typebound_assignment_7.f90: New. - -2013-08-23 Jan Hubicka - - * g++.dg/ipa/devirt-13.C: New testcase. - * g++.dg/ipa/devirt-14.C: New testcase. - -2013-08-23 Jakub Jelinek - - PR target/58218 - * gcc.target/i386/pr58218.c: New test. - - PR tree-optimization/58209 - * gcc.c-torture/execute/pr58209.c: New test. - -2013-08-22 Michael Meissner - - * gcc.target/powerpc/pr57744.c: Declare abort. - -2013-08-22 Paolo Carlini - - PR c++/56380 - * g++.dg/template/error54.C: New. - -2013-08-22 Janus Weil - - PR fortran/58185 - * gfortran.dg/select_type_34.f90: New. - -2013-08-21 Paolo Carlini - - PR c++/56130 - * g++.dg/warn/deprecated-7.C: New. - -2013-08-21 Paolo Carlini - - * g++.dg/tree-prof/pr57451.C: Remove spurious dg-do directive. - -2013-08-21 Jeff Law - - * gcc.dg/tree-ssa/ssa-vrp-thread-1.c: New test. - -2013-08-21 Paolo Carlini - - PR c++/56134 - * g++.dg/ext/attr-alias-3.C: New. - -2013-08-20 Janus Weil - - PR fortran/53655 - * gfortran.dg/intent_out_8.f90: New. - -2013-08-20 Teresa Johnson - - PR rtl-optimizations/57451 - * g++.dg/tree-prof/pr57451.C: New test. - -2013-08-20 Paolo Carlini - - PR c++/58190 - * g++.dg/pr57878.C: Use __SIZE_TYPE__. - -2013-08-19 Balaji V. Iyer - - PR c/57490 - * c-c++-common/cilk-plus/AN/pr57490.c: New test. - -2013-08-19 Peter Bergner - - * gcc.target/powerpc/dfp-dd-2.c: New test. - * gcc.target/powerpc/dfp-td-2.c: Likewise. - * gcc.target/powerpc/dfp-td-3.c: Likewise. - -2013-08-19 Richard Sandiford - - * gcc.target/mips/mulsize-1.c: Check for SLL as well as SUBU. - * gcc.target/mips/mulsize-2.c: Check for ADDU rather than SUBU. - Check for SLL too. - -2013-08-19 Joern Rennecke - - * gcc.target/avr/progmem-error-1.cpp: Update linenumber of error. - - * gcc.dg/tree-ssa/ssa-dom-thread-4.c [avr-*-*]: Expect 6 times - "Threaded". - - * gcc.dg/tree-ssa/vrp55.c: Use keeps_null_pointer_checks to determine - correct test response. - - PR testsuite/52641 - * gcc.dg/tree-ssa/pr31261.c [int16]: Change expected unsigned type. - * gcc.dg/tree-ssa/ssa-pre-21.c [! size32plus]: Mark as xfail. - * gcc.dg/tree-ssa/vector-4.c (SItype): New typedef. - (v4si): Use it. - * gcc.dg/tree-ssa/ssa-pre-30.c: Test requires int32. - * gcc.dg/tree-ssa/vrp58.c: Adjust scan expression for int16. - - * gcc.dg/tree-ssa/vrp87.c [avr-*-*] (dg-additional-options): New. - -2013-08-18 Jan Hubicka - - * g++.dg/ipa/type-inheritance-1.C: New testcase. - -2013-08-19 Janus Weil - - PR fortran/46271 - * gfortran.dg/gomp/proc_ptr_1.f90: New. - -2013-08-18 Jakub Jelinek - - PR tree-optimization/58006 - * g++.dg/opt/pr58006.C: New test. - -2013-08-18 Eric Botcazou - - * gnat.dg/specs/linker_alias.ads: New test. - -2013-08-16 Jakub Jelinek - - PR tree-optimization/58164 - * gcc.c-torture/compile/pr58164.c: New test. - - PR tree-optimization/58165 - * g++.dg/opt/pr58165.C: New test. - -2013-08-14 Paolo Carlini - - PR c++/51912 - * g++.dg/cpp0x/enum28.C: New. - * g++.dg/cpp0x/enum15.C: Adjust. - -2013-08-14 Bill Schmidt - - PR target/57949 - * gcc.target/powerpc/pr57949-1.c: New. - * gcc.target/powerpc/pr57949-2.c: New. - -2013-08-14 Jakub Jelinek - - PR tree-optimization/58145 - * gcc.dg/pr58145-1.c: New test. - * gcc.dg/pr58145-2.c: New test. - -2013-08-14 Joern Rennecke - - * gcc.dg/debug/dwarf2/dwarf2.exp: Replace -gdwarf-2 with -gdwarf. - * gcc.dg/debug/dwarf2/dwarf-die7.c: Likewise. - * gcc.dg/debug/dwarf2/static1.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-dfp.c: Likewise. - * gcc.dg/debug/dwarf2/fesd-any.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-uninit.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-die1.c: Likewise. - * gcc.dg/debug/dwarf2/var1.c: Likewise. - * gcc.dg/debug/dwarf2/pr29609-2.c: Likewise. - * gcc.dg/debug/dwarf2/aranges-fnsec-1.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-die3.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-merge.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-char1.c: Likewise. - * gcc.dg/debug/dwarf2/discriminator.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-char2.c: Likewise. - * gcc.dg/debug/dwarf2/fesd-baseonly.c: Likewise. - * gcc.dg/debug/dwarf2/pr36690-3.c: Likewise. - * gcc.dg/debug/dwarf2/const-2.c: Likewise. - * gcc.dg/debug/dwarf2/ipa-cp1.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-char3.c: Likewise. - * gcc.dg/debug/dwarf2/var2.c: Likewise. - * gcc.dg/debug/dwarf2/pr36690-2.c: Likewise. - * gcc.dg/debug/dwarf2/pr31230.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-float.c: Likewise. - * gcc.dg/debug/dwarf2/short-circuit.c: Likewise. - * gcc.dg/debug/dwarf2/pr36690-1.c: Likewise. - * gcc.dg/debug/dwarf2/fesd-reduced.c: Likewise. - * gcc.dg/debug/dwarf2/pr37616.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-die2.c: Likewise. - * gcc.dg/debug/dwarf2/inline1.c: Likewise. - * gcc.dg/debug/dwarf2/fesd-sys.c: Likewise. - * gcc.dg/debug/dwarf2/pr29609-1.c: Likewise. - * gcc.dg/debug/dwarf2/asm-line1.c: Likewise. - * gcc.dg/debug/dwarf2/c99-typedef1.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf2-macro.c: Likewise. - * gcc.dg/debug/dwarf2/fesd-none.c: Likewise. - * gcc.dg/debug/dwarf2/pr51410.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-file1.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-die6.c: Likewise. - * gcc.dg/debug/dwarf2/const-2b.c: Likewise. - * gcc.dg/debug/dwarf2/dwarf-die5.c: Likewise. - - PR testsuite/52641 - * gcc.c-torture/execute/pr56799.x: New file. - - * gcc.dg/c99-stdint-1.c [avr-*-*]: Update line number for dg-bogus. - - * gcc.dg/torture/stackalign/builtin-apply-2.c: Also skip for avr. - - * gcc.dg/pr44214-1.c (v2df): Define size using sizeof (double). - * gcc.dg/pr44214-3.c (v2df): Likewise. - - * gcc.dg/pr46647.c: xfail for avr-*-*. - - * gcc.dg/strlenopt-10.c [avr-*-*]: Reduce number of expected - memcpy by one. - * gcc.dg/strlenopt-11.c [avr-*-*]: Likewise. - Expect l to be optimized away. - * gcc.dg/strlenopt-13.c [avr-*-*]: Likewise. - - PR testsuite/52641 - * c-c++-common/scal-to-vec1.c: Add !int16 and large_double conditions - to tests that assume int/double are larger than short/float. - - PR testsuite/52641 - * c-c++-common/simulate-thread/bitfields-2.c: Run test only for - target { ! int16 }. - * gcc.dg/tree-ssa/pr54245.c: Do slsr scan only for target { ! int16 }. - * gcc.dg/tree-ssa/slsr-1.c: Adjust multiplicators to scan for for - target { int16 }. Restrict existing tests to target { int32 } - where appropriate. - * gcc.dg/tree-ssa/slsr-2.c, gcc.dg/tree-ssa/slsr-27.c: Likewise. - * gcc.dg/tree-ssa/slsr-28.c, gcc.dg/tree-ssa/slsr-29.c: Likewise. - * gcc.dg/tree-ssa/slsr-3.c, gcc.dg/tree-ssa/ssa-ccp-23.c: Likewise. - * lib/target-supports.exp (check_effective_target_int32): New proc. - - * gcc.dg/tree-ssa/pr42585.c: Add avr-*-* to list of targets to - exclude from scan test. - - * gcc.dg/debug/dwarf2/global-used-types.c: Request dwarf output. - * gcc.dg/debug/dwarf2/inline2.c: Likewise. - * gcc.dg/debug/dwarf2/inline3.c: Likewise. - * gcc.dg/debug/dwarf2/pr37726.c: Likewise. - * gcc.dg/debug/dwarf2/pr41445-1.c: Likewise. - * gcc.dg/debug/dwarf2/pr41445-2.c: Likewise. - * gcc.dg/debug/dwarf2/pr41445-3.c: Likewise. - * gcc.dg/debug/dwarf2/pr41445-4.c: Likewise. - * gcc.dg/debug/dwarf2/pr41445-5.c: Likewise. - * gcc.dg/debug/dwarf2/pr41445-6.c: Likewise. - * gcc.dg/debug/dwarf2/pr41543.c: Likewise. - * gcc.dg/debug/dwarf2/pr41695.c: Likewise. - * gcc.dg/debug/dwarf2/pr43237.c: Likewise. - * gcc.dg/debug/dwarf2/pr47939-1.c: Likewise. - * gcc.dg/debug/dwarf2/pr47939-2.c: Likewise. - * gcc.dg/debug/dwarf2/pr47939-3.c: Likewise. - * gcc.dg/debug/dwarf2/pr47939-4.c: Likewise. - * gcc.dg/debug/dwarf2/pr53948.c: Likewise. - * gcc.dg/debug/dwarf2/struct-loc1.c: Likewise. - -2013-08-14 Janis Johnson - - * gcc.target/arm/pr19599.c: Skip for -mthumb. - - * gcc.target/arm/atomic-comp-swap-release-acquire.c: Move dg-do - to be the first test directive. - * gcc.target/arm/atomic-op-acq_rel.c: Likewise. - * gcc.target/arm/atomic-op-acquire.c: Likewise. - * gcc.target/arm/atomic-op-char.c: Likewise. - * gcc.target/arm/atomic-op-consume.c: Likewise. - * gcc.target/arm/atomic-op-int.c: Likewise. - * gcc.target/arm/atomic-op-relaxed.c: Likewise. - * gcc.target/arm/atomic-op-release.c: Likewise. - * gcc.target/arm/atomic-op-seq_cst.c: Likewise. - * gcc.target/arm/atomic-op-short.c: Likewise. - -2013-08-14 Andrey Belevantsev - - PR rtl-optimization/57662 - * gcc.dg/pr57662.c: New test. - -2013-08-13 Maciej W. Rozycki - - * gcc.target/mips/nan-legacy.c: Accept 4294967295 as an - alternative to -1. - * gcc.target/mips/nans-legacy.c: Likewise. - -2013-08-13 Maciej W. Rozycki - - * gcc.target/mips/fabs-2008.c: Correct scan-assembler pattern - escapes. - * gcc.target/mips/fabs-legacy.c: Likewise. - * gcc.target/mips/fabsf-2008.c: Likewise. - * gcc.target/mips/fabsf-legacy.c: Likewise. - * gcc.target/mips/fneg-2008.c: Likewise. - * gcc.target/mips/fneg-legacy.c: Likewise. - * gcc.target/mips/fnegf-2008.c: Likewise. - * gcc.target/mips/fnegf-legacy.c: Likewise. - * gcc.target/mips/nan-2008.c: Likewise. - * gcc.target/mips/nan-legacy.c: Likewise. - * gcc.target/mips/nanf-2008.c: Likewise. - * gcc.target/mips/nanf-legacy.c: Likewise. - * gcc.target/mips/nans-2008.c: Likewise. - * gcc.target/mips/nans-legacy.c: Likewise. - * gcc.target/mips/nansf-2008.c: Likewise. - * gcc.target/mips/nansf-legacy.c: Likewise. - -2013-08-13 Eric Botcazou - - * gnat.dg/valued_proc.adb: New test. - * gnat.dg/valued_proc_pkg.ads: New helper. - -2013-08-13 Jakub Jelinek - - PR tree-optimization/57661 - * g++.dg/opt/pr57661.C: New test. - - PR sanitizer/56417 - * gcc.dg/asan/pr56417.c: New test. - -2013-08-13 Eric Botcazou - - * gnat.dg/loop_optimization16.adb: New test. - * gnat.dg/loop_optimization16_pkg.ad[sb]: New helper. - -2013-08-13 Marek Polacek - - * gcc.dg/pr57980.c: Use vector of two elements, not just one. - -2013-08-13 David Malcolm - - Example of converting global state to per-pass state. - - * gcc.dg/plugin/one_time_plugin.c (one_pass::execute): Convert - global state "static int counter" to... - (one_pass::counter): ...this instance data. - -2013-08-13 David Malcolm - - * gcc.dg/plugin/one_time_plugin.c: (one_pass_gate): Convert - to member function... - (one_pass::gate): ...this. - (one_pass_exec): Convert to member function... - (one_pass::impl_execute): ...this. - -2013-08-12 Paolo Carlini - - PR c++/57416 - * g++.dg/cpp0x/pr57416.C: New. - -2013-08-12 Paolo Carlini - - * g++.dg/cpp0x/constexpr-function2.C: Adjust for error -> inform - changes. - * g++.dg/cpp0x/constexpr-neg1.C: Likewise. - * g++.dg/cpp0x/defaulted2.C: Likewise. - * g++.dg/cpp0x/defaulted31.C: Likewise. - * g++.dg/cpp0x/error6.C: Likewise. - * g++.dg/cpp0x/gen-attrs-32.C: Likewise. - * g++.dg/cpp0x/override2.C: Likewise. - * g++.dg/cpp0x/parse1.C: Likewise. - * g++.dg/cpp0x/scoped_enum.C: Likewise. - * g++.dg/cpp0x/temp_default4.C: Likewise. - * g++.dg/ext/attrib32.C: Likewise. - * g++.dg/ext/gnu-inline-global-reject.C: Likewise. - * g++.dg/ext/mv13.C: Likewise. - * g++.dg/ext/mv7.C: Likewise. - * g++.dg/ext/mv9.C: Likewise. - * g++.dg/ext/pr57362.C: Likewise. - * g++.dg/ext/typeof10.C: Likewise. - * g++.dg/lookup/anon6.C: Likewise. - * g++.dg/lookup/crash6.C: Likewise. - * g++.dg/lookup/name-clash5.C: Likewise. - * g++.dg/lookup/name-clash6.C: Likewise. - * g++.dg/other/anon4.C: Likewise. - * g++.dg/other/error15.C: Likewise. - * g++.dg/other/error8.C: Likewise. - * g++.dg/other/redecl2.C: Likewise. - * g++.dg/parse/crash16.C: Likewise. - * g++.dg/parse/crash21.C: Likewise. - * g++.dg/parse/crash38.C: Likewise. - * g++.dg/parse/redef2.C: Likewise. - * g++.dg/parse/struct-as-enum1.C: Likewise. - * g++.dg/template/crash39.C: Likewise. - * g++.dg/template/redecl3.C: Likewise. - * g++.dg/tls/diag-3.C: Likewise. - * g++.dg/warn/Wredundant-decls-spec.C: Likewise. - * g++.old-deja/g++.benjamin/typedef01.C: Likewise. - * g++.old-deja/g++.benjamin/warn02.C: Likewise. - * g++.old-deja/g++.brendan/crash16.C: Likewise. - * g++.old-deja/g++.brendan/crash18.C: Likewise. - * g++.old-deja/g++.brendan/err-msg4.C: Likewise. - * g++.old-deja/g++.brendan/redecl1.C: Likewise. - * g++.old-deja/g++.brendan/static3.C: Likewise. - * g++.old-deja/g++.bugs/900127_02.C: Likewise. - * g++.old-deja/g++.jason/binding.C: Likewise. - * g++.old-deja/g++.jason/crash4.C: Likewise. - * g++.old-deja/g++.jason/crash7.C: Likewise. - * g++.old-deja/g++.jason/lineno.C: Likewise. - * g++.old-deja/g++.jason/scoping7.C: Likewise. - * g++.old-deja/g++.mike/misc3.C: Likewise. - * g++.old-deja/g++.mike/net44.C: Likewise. - * g++.old-deja/g++.mike/ns3.C: Likewise. - * g++.old-deja/g++.ns/alias4.C: Likewise. - * g++.old-deja/g++.ns/ns11.C: Likewise. - * g++.old-deja/g++.other/crash23.C: Likewise. - * g++.old-deja/g++.other/decl8.C: Likewise. - * g++.old-deja/g++.other/linkage3.C: Likewise. - * g++.old-deja/g++.other/typeck1.C: Likewise. - * g++.old-deja/g++.other/typedef5.C: Likewise. - * g++.old-deja/g++.pt/explicit34.C: Likewise. - * g++.old-deja/g++.pt/friend36.C: Likewise. - * obj-c++.dg/method-8.mm: Likewise. - * obj-c++.dg/tls/diag-3.mm: Likewise. - -2013-08-12 Perez Read - - PR target/58132 - * gcc.target/i386/movabs-1.c: New test. - -2013-08-12 Marek Polacek - - PR tree-optimization/57980 - * gcc.dg/pr57980.c: New test. - -2013-08-12 Thomas Koenig - - PR fortran/56666 - * gfortran.dg/do_check_10.f90: New test. - * gfortran.dg/array_constructor_11.f90: Add -Wzerotrip to dg-options. - * gfortran.dg/array_constructor_18.f90: Likewise. - * gfortran.dg/array_constructor_22.f90: Likewise. - * gfortran.dg/coarray_15.f90: Likewise. - * gfortran.dg/do_1.f90: Add -Wall to dg-options. - * gfortran.dg/do_3.F90: Add -Wzerotrip to dg-options. - * gfortran.dg/do_check_5.f90: Add -Wall to gd-options. - -2013-08-11 Paolo Carlini - - PR c++/53349 - * g++.dg/cpp0x/constexpr-ice8.C: New. - -2013-08-09 Xinliang David Li - - * gcc.target/i386/memcpy-strategy-1.c: New test. - * gcc.target/i386/memcpy-strategy-2.c: Ditto. - * gcc.target/i386/memset-strategy-1.c: Ditto. - * gcc.target/i386/memcpy-strategy-3.c: Ditto. - -2013-08-09 Jan Hubicka - - * gcc.dg/tree-prof/crossmodule-indircall-1.c: New testcase. - * gcc.dg/tree-prof/crossmodule-indircall-1a.c: New testcase. - -2013-08-09 Yufeng Zhang - - * gcc.dg/lower-subreg-1.c: Skip aarch64*-*-*. - -2013-08-09 Janus Weil - - PR fortran/58058 - * gfortran.dg/transfer_intrinsic_6.f90: New. - -2013-08-09 Paolo Carlini - - Revert: - 2013-08-07 Paolo Carlini - - PR c++/46206 - * g++.dg/lookup/typedef2.C: New. - -2013-08-09 James Greenhalgh - - * gcc.target/aarch64/scalar_intrinsics.c: Update expected - output of vdup intrinsics. - -2013-08-09 Zhenqiang Chen - - * gcc.target/arm/lp1189445.c: New testcase. - -2013-08-08 Richard Sandiford - - PR rtl-optimization/58079 - * gcc.dg/torture/pr58079.c: New test. - -2013-08-07 Eric Botcazou - - * gnat.dg/warn9.adb: New test. - -2013-08-07 Paolo Carlini - - PR c++/46206 - * g++.dg/lookup/typedef2.C: New. - -2013-08-07 David Malcolm - - * lib/plugin-support.exp (plugin-test-execute): Add -fno-rtti - to optstr when building plugins on darwin. - -2013-08-06 Martin Jambor - - PR tree-optimization/57539 - * gcc.dg/ipa/pr57539.c: New test. - -2013-08-06 Martin Jambor - Bernd Edlinger - - * gcc.dg/torture/pr58041.c (foo): Accept z by reference. - (a): Fix constructor. - -2013-08-06 Martin Jambor - - PR fortran/57987 - * gfortran.dg/pr57987.f90: New test. - -2013-08-06 Martin Jambor - - PR middle-end/58041 - * gcc.dg/torture/pr58041.c: New test. - * gcc.target/arm/pr58041.c: Likewise. - -2013-08-06 Janus Weil - - PR fortran/57306 - * gfortran.dg/pointer_init_8.f90: New. - -2013-08-05 Paolo Carlini - - PR c++/58080 - * g++.dg/cpp0x/pr58080.C: New. - -2013-08-05 David Malcolm - - * lib/plugin-support.exp (plugin-test-execute): Add -fno-rtti - to optstr when building plugins. - -2013-08-05 David Malcolm - - Patch autogenerated by refactor_passes.py from - https://github.com/davidmalcolm/gcc-refactoring-scripts - revision 03fe39476a4c4ea450b49e087cfa817b5f92021e - - * gcc.dg/plugin/one_time_plugin.c (one_pass): Convert from a global - struct to a subclass of gimple_opt_pass along with... - (pass_data_one_pass): ...new pass_data instance and... - (make_one_pass): ...new function. - * gcc.dg/plugin/selfassign.c (pass_warn_self_assign): Convert from a - global struct to a subclass of gimple_opt_pass along with... - (pass_data_warn_self_assign): ...new pass_data instance and... - (make_pass_warn_self_assign): ...new function. - * g++.dg/plugin/dumb_plugin.c (pass_dumb_plugin_example): Convert from - a global struct to a subclass of gimple_opt_pass along with... - (pass_data_dumb_plugin_example): ...new pass_data instance and... - (make_pass_dumb_plugin_example): ...new function. - * g++.dg/plugin/selfassign.c (pass_warn_self_assign): Convert from a - global struct to a subclass of gimple_opt_pass along with... - (pass_data_warn_self_assign): ...new pass_data instance and... - (make_pass_warn_self_assign): ...new function. - -2013-08-05 David Malcolm - - * g++.dg/plugin/dumb_plugin.c (plugin_init): Rework how the pass - is created and added to the pass_manager to reflect - autogenerated changes. - * g++.dg/plugin/selfassign.c (plugin_init): Likewise. - * gcc.dg/plugin/one_time_plugin.c (plugin_init): Likewise. - * gcc.dg/plugin/selfassign.c (plugin_init): Likewise. - -2013-08-04 Ed Smith-Rowland <3dw4rd@verizon.net> - - PR c++/58072 - * g++.dg/cpp0x/pr58072.C: New. - -2013-08-03 Bill Schmidt - - * gcc.dg/torture/pr57993-2.cpp: New. - -2013-08-02 Jan Hubicka - - * gcc.dg/ipa/ipa-1.c: Update. - * gcc.dg/ipa/ipa-2.c: Update. - * gcc.dg/ipa/ipa-3.c: Update. - * gcc.dg/ipa/ipa-4.c: Update. - * gcc.dg/ipa/ipa-5.c: Update. - * gcc.dg/ipa/ipa-7.c: Update. - * gcc.dg/ipa/ipa-8.c: Update. - * gcc.dg/ipa/ipcp-1.c: Update. - * gcc.dg/ipa/ipcp-2.c: Update. - -2013-08-02 Vladimir Makarov - - PR rtl-optimization/58048 - * gcc.target/i386/pr58048.c: New. - -2013-08-02 Kyrylo Tkachov - - * gcc.target/arm/neon-for-64bits-2.c: Delete. - -2013-08-01 Fabien Chêne - Peter Bergner - - PR c++/54537 - * g++.dg/overload/using3.C: New. - * g++.dg/overload/using2.C: Adjust. - * g++.dg/lookup/using9.C: Likewise. - -2013-08-01 Kyrylo Tkachov - - * gcc.target/arm/pr46972-2.c: New test. - -2013-08-01 Vidya Praveen - - * gcc.dg/vect/vect-iv-5.c: Make xfail conditional with !arm_neon_ok. - -2013-07-31 Michael Meissner - - * gcc.target/powerpc/fusion.c: New file, test power8 fusion support. - -2013-07-31 Richard Sandiford - - * gcc.target/mips/mips.exp (mips-dg-options): Test for mabicalls - rather than addressing!=absolute when deciding how to handle MIPS16 - when the test forces an ABI. - -2013-07-30 Paolo Carlini - - PR c++/57673 - * g++.dg/cpp0x/nsdmi-sizeof.C: New. - -2013-07-30 Steve Ellcey - - * gcc.target/mips/code-readable-1.c: Increase switch size. - * gcc.target/mips/code-readable-2.c: Ditto. - * gcc.target/mips/code-readable-3.c: Ditto. - * gcc.target/mips/code-readable-4.c: Ditto. - -2013-07-30 Paolo Carlini - - PR c++/57947 - * g++.dg/parse/crash63.C: New. - -2013-07-30 Tobias Burnus - - PR fortran/57530 - * gfortran.dg/pointer_assign_8.f90: New. - * gfortran.dg/pointer_assign_9.f90: New. - * gfortran.dg/pointer_assign_10.f90: New. - * gfortran.dg/pointer_assign_11.f90: New. - -2013-07-30 Zhenqiang Chen - - * gcc.target/arm/pr57637.c: New testcase. - -2013-07-29 Bill Schmidt - - PR tree-optimization/57993 - * gcc.dg/torture/pr57993.c: New test. - -2013-07-29 Joern Rennecke - - * gcc.dg/tree-ssa/pr44258.c: Disable scan test for Epiphany. - -2013-07-29 Paolo Carlini - - PR c++/57948 - * g++.dg/conversion/ambig2.C: New. - -2013-07-29 Maciej W. Rozycki - - * gcc.target/mips/fabs-2008.c: New test case. - * gcc.target/mips/fabs-legacy.c: New test case. - * gcc.target/mips/fabsf-2008.c: New test case. - * gcc.target/mips/fabsf-legacy.c: New test case. - * gcc.target/mips/fneg-2008.c: New test case. - * gcc.target/mips/fneg-legacy.c: New test case. - * gcc.target/mips/fneg-2008.c: New test case. - * gcc.target/mips/fneg-legacy.c: New test case. - * gcc.target/mips/nan-2008.c: New test case. - * gcc.target/mips/nan-legacy.c: New test case. - * gcc.target/mips/nanf-2008.c: New test case. - * gcc.target/mips/nanf-legacy.c: New test case. - * gcc.target/mips/nans-2008.c: New test case. - * gcc.target/mips/nans-legacy.c: New test case. - * gcc.target/mips/nansf-2008.c: New test case. - * gcc.target/mips/nansf-legacy.c: New test case. - * gcc.target/mips/mips.exp: Handle `-mabs=' and `-mnan='. - -2013-07-29 Alexander Ivchenko - Maxim Kuvyrkov - - * lib/target-supports.exp (check_effective_target_non_bionic): New - effective-target test. - * g++.dg/tls/thread_local4.C: Disable test for Bionic. - * g++.dg/tls/thread_local4g.C: Ditto. - -2013-07-28 Thomas Koenig - - PR fortran/58009 - * gfortran.dg/vector_subsript_7.f90: New test. - -2013-07-27 Tobias Burnus - - PR fortran/57991 - * gfortran.dg/warn_alias.f90: New. - -2013-07-27 Janus Weil - - PR fortran/57285 - * gfortran.dg/class_array_19.f90: New. - -2013-07-27 Eric Botcazou - - * gcc.dg/vect/pr57705.c: Adjust for a !vect_pack_trunc target. - * gcc.dg/vect/pr57741-2.c: Require a vect_float target. - * gcc.dg/vect/pr57741-3.c: Likewise. - * gcc.dg/vect/bb-slp-32.c: XFAIL for a vect_no_align target. - -2013-07-26 Joern Rennecke - - Skip tests that make assumptions about struct layout that don't hold - on epiphany: - * g++.dg/cpp0x/cast.C: Skip for epiphany-*-*. - * g++.dg/cpp0x/iop.C: Likewise. - * g++.dg/cpp0x/named_refs.C: Likewise. - * g++.dg/cpp0x/rv1p.C: Likewise. - * g++.dg/cpp0x/rv2p.C: Likewise. - * g++.dg/cpp0x/rv3p.C: Likewise. - * g++.dg/cpp0x/rv4p.C: Likewise. - * g++.dg/cpp0x/rv5p.C: Likewise. - * g++.dg/cpp0x/rv6p.C: Likewise. - * g++.dg/cpp0x/rv7p.C: Likewise. - * g++.dg/cpp0x/rv8p.C: Likewise. - * g++.dg/ext/strncpy-chk1.C: Likewise. - * gcc.dg/builtin-object-size-10.c: Likewise. - * gcc.dg/builtin-object-size-11.c: Likewise. - * gcc.dg/builtin-stringop-chk-1.c: Likewise. - * gcc.dg/pr25805.c: Likewise. - * gcc.c-torture/execute/builtins/memcpy-chk.x: New file. - * gcc.c-torture/execute/builtins/memmove-chk.x: Likewise. - * gcc.c-torture/execute/builtins/mempcpy-chk.x: Likewise. - * gcc.c-torture/execute/builtins/memset-chk.x: Likewise. - * gcc.c-torture/execute/builtins/snprintf-chk.x: Likewise. - * gcc.c-torture/execute/builtins/sprintf-chk.x: Likewise. - * gcc.c-torture/execute/builtins/stpcpy-chk.x: Likewise. - * gcc.c-torture/execute/builtins/strcat-chk.x: Likewise. - * gcc.c-torture/execute/builtins/strcpy-chk.x: Likewise. - * gcc.c-torture/execute/builtins/strncat-chk.x: Likewise. - * gcc.c-torture/execute/builtins/strncpy-chk.x: Likewise. - * gcc.c-torture/execute/builtins/vsnprintf-chk.x: Likewise. - * gcc.c-torture/execute/builtins/vsprintf-chk.x: Likewise. - * gcc.c-torture/execute/zerolen-2.x: Likewise. - * gcc.c-torture/execute/builtins/stpcpy-chk.x: Likewise. - - * gcc.dg/pr27095.c: For Epiphany, add -mshort-calls. - * gcc.dg/tree-ssa/loop-1.c: Likewise. - - * gcc.dg/torture/pr37868.c: Disable for epiphany. - * gcc.dg/sibcall-6.c: Enable for epiphany. - -2013-07-26 Kyrylo Tkachov - - * gcc.target/arm/minmax_minus.c: Scan for absence of mov. - -2013-07-26 David Edelsohn - - * gcc.target/powerpc/ppc-vector-memcpy.c: Test use of VMX for - memcpy not initializers. - - * gcc.dg/guality/guality.exp: Skip on AIX. - -2013-07-26 Paolo Carlini - - PR c++/57101 - * g++.dg/cpp0x/pr57101.C: New. - -2013-07-26 Ian Bolton - - * gcc.target/aarch64/neg_1.c: New test. - -2013-07-25 Janus Weil - - PR fortran/57966 - * gfortran.dg/typebound_call_25.f90: New. - -2013-07-25 Paolo Carlini - - PR c++/57981 - * g++.dg/cpp0x/pr57981.C: New. - -2013-07-25 Paolo Carlini - - PR c++/57880 - * g++.dg/cpp1y/udlit-empty-string-neg.C: New. - -2013-07-25 Vladimir Makarov - - PR rtl-optimization/57960 - * gcc.target/s390/pr57960.c: New. - -2013-07-25 Janus Weil - - PR fortran/57639 - * gfortran.dg/unlimited_polymorphic_9.f90: New. - -2013-07-25 Terry Guo - - * gcc.target/arm/thumb1-Os-mult.c: New test case. - -2013-07-24 Paolo Carlini - - PR c++/57942 - * g++.dg/inherit/pr57942.C: New. - -2013-07-23 Michael Meissner - - * gcc.target/powerpc/bool2.h: New file, test the code generation - of logical operations for power5, altivec, power7, and power8 systems. - * gcc.target/powerpc/bool2-p5.c: Likewise. - * gcc.target/powerpc/bool2-av.c: Likewise. - * gcc.target/powerpc/bool2-p7.c: Likewise. - * gcc.target/powerpc/bool2-p8.c: Likewise. - * gcc.target/powerpc/bool3.h: Likewise. - * gcc.target/powerpc/bool3-av.c: Likewise. - * gcc.target/powerpc/bool2-p7.c: Likewise. - * gcc.target/powerpc/bool2-p8.c: Likewise. - -2013-07-23 Yufeng Zhang - - * gcc.target/aarch64/vect_smlal_1.c: Replace 'long' with 'long long'. - -2013-07-23 Yufeng Zhang - - * gcc.target/aarch64/test-ptr-arg-on-stack-1.c: New test. - -2013-07-23 Yufeng Zhang - - * gcc.dg/20020219-1.c: Skip the test on aarch64*-*-* in ilp32. - * gcc.target/aarch64/aapcs64/test_18.c (struct y): Change the field - type from long to long long. - * gcc.target/aarch64/atomic-op-long.c: Update dg-final directives - to have effective-target keywords of lp64 and ilp32. - * gcc.target/aarch64/fcvt_double_int.c: Likewise. - * gcc.target/aarch64/fcvt_double_long.c: Likewise. - * gcc.target/aarch64/fcvt_double_uint.c: Likewise. - * gcc.target/aarch64/fcvt_double_ulong.c: Likewise. - * gcc.target/aarch64/fcvt_float_int.c: Likewise. - * gcc.target/aarch64/fcvt_float_long.c: Likewise. - * gcc.target/aarch64/fcvt_float_uint.c: Likewise. - * gcc.target/aarch64/fcvt_float_ulong.c: Likewise. - * gcc.target/aarch64/vect_smlal_1.c: Replace 'long' with 'long long'. - -2013-07-23 Tom Tromey - Joseph Myers - - * gcc.dg/c11-generic-1.c: New file. - * gcc.dg/c11-generic-2.c: New file. - -2013-07-22 Tobias Burnus - - PR fortran/57906 - PR fortran/52052 - * coarray/lib_realloc_1.f90: Permit optimization. - * gfortran.dg/coarray_31.f90: New. - -2013-07-22 Tobias Burnus - - PR fortran/57762 - * gfortran.dg/class_array_7.f03: Fix memory leak. - -2013-07-22 Paolo Carlini - - PR c++/52816 - * g++.dg/cpp0x/decltype56.C: New. - -2013-07-22 Kyrylo Tkachov - - * gcc.dg/pr53265.c: Correct line number in dg-message. - -2013-07-22 Diego Novillo - - * g++.dg/pr57878.C: Do not force -m32. Use target ilp32. - -2013-07-22 Georg-Johann Lay - - PR testsuite/52641 - * gcc.c-torture/execute/pr57124.x: Skip int16 platforms. - * gcc.c-torture/execute/pr53366-1.x: New: Skip int16 platforms. - -2013-07-22 Georg-Johann Lay - - PR testsuite/52641 - * gcc.c-torture/execute/pr57344-2.x: New. Skip int16. - * gcc.dg/pr53265.c: Add dg-require-effective-target size32plus. - * gcc.dg/torture/pr53366-1.c: Same. - * gcc.dg/torture/pr57381.c: Add dg-require-effective-target int32plus. - * gcc.dg/torture/pr56488.c: Same. - * gcc.dg/torture/pr57584.c: Same. - * gcc.dg/tree-ssa/pr57385.c: Same. - * gcc.dg/pr57154.c: Add dg-require-effective-target scheduling. - -2013-07-21 Ondřej Bílka - - * c-c++-common/pr41779.c: Fix typos. - * gcc.c-torture/compile/20031125-2.c: Likewise. - * gcc.c-torture/compile/20040621-1.c: Likewise. - * gcc.c-torture/execute/20020418-1.c: Likewise. - * gcc.dg/20020108-1.c: Likewise. - * gcc.dg/atomic-generic-aux.c: Likewise. - * gcc.dg/builtin-complex-err-2.c: Likewise. - * gcc.dg/decl-1.c: Likewise. - * gcc.dg/di-sync-multithread.c: Likewise. - * gcc.dg/format/c90-printf-1.c: Likewise. - * gcc.dg/format/ms_c90-printf-1.c: Likewise. - * gcc.dg/long-long-compare-1.c: Likewise. - * gcc.dg/plugin/start_unit_plugin.c: Likewise. - * gcc.dg/pr17055-1.c: Likewise. - * gcc.dg/pr27095.c: Likewise. - * gcc.dg/torture/fp-int-convert.h: Likewise. - * gcc.dg/tree-prof/inliner-1.c: Likewise. - * gcc.dg/tree-ssa/20030731-1.c: Likewise. - * gcc.dg/tree-ssa/forwprop-6.c: Likewise. - * gcc.dg/tree-ssa/ipa-cp-1.c: Likewise. - * gcc.dg/tree-ssa/loop-19.c: Likewise. - * gcc.dg/tree-ssa/loop-1.c: Likewise. - * gcc.dg/tree-ssa/pr21001.c: Likewise. - * gcc.dg/tree-ssa/pr42585.c: Likewise. - * gcc.dg/tree-ssa/ssa-dse-5.c: Likewise. - * gcc.dg/vect/vect-cond-5.c: Likewise. - * gcc.dg/weak/typeof-2.c: Likewise. - * gcc.target/aarch64/aapcs64/abitest-common.h: Likewise. - * gcc.target/arm/naked-1.c: Likewise. - * gcc.target/i386/pr9771-1.c: Likewise. - * gcc.target/sparc/sparc-constant-1.c: Likewise. - * gcc.target/sparc/struct-ret-check.c: Likewise. - * gcc.target/x86_64/abi/test_struct_returning.c: Likewise. - * gfortran.dg/c_ptr_tests_8_funcs.c: Likewise. - * objc-obj-c++-shared/objc-test-suite-next-encode-assist-impl.h: - Likewise. - -2013-07-21 Thomas Koenig - - PR fortran/56937 - * gfortran.dg/dependency_42.f90: New test. - * gfortran.dg/dependency_43.f90: New test. - -2013-07-21 Tobias Burnus - - PR fortran/35862 - * gfortran.dg/round_4.f90: New. - -2013-07-21 Tobias Burnus - - PR fortran/57894 - * gfortran.dg/min_max_conformance_2.f90: New. - -2013-07-20 Jakub Jelinek - - PR preprocessor/57620 - * c-c++-common/raw-string-2.c (s12, u12, U12, L12): Remove. - (main): Don't test {s,u,U,L}12. - * c-c++-common/raw-string-13.c: New test. - * c-c++-common/raw-string-14.c: New test. - * c-c++-common/raw-string-15.c: New test. - * c-c++-common/raw-string-16.c: New test. - -2013-07-20 James Greenhalgh - - * gcc.target/aarch64/vabs_intrinsic_1.c: New file. - -2013-07-20 Joern Rennecke - - * gcc.dg/pr57154.c: Add dg-require-effective-target scheduling. - - * gcc.dg/tree-ssa/pr21090.c: Do vrp1 scan check only for - target { ! keeps_null_pointer_checks }. - * gcc.dg/tree-ssa/unreachable.c: Do optimized scan check only for - target { ! keeps_null_pointer_checks }. - - * gcc.dg/torture/pr53366-1.c: Only run for target { size32plus }. - * gcc.dg/torture/pr56488.c: Likewise. - -2013-07-19 Ian Bolton - - * gcc.target/aarch64/scalar_intrinsics.c (test_vabs_s64): Added - new testcase. - -2013-07-19 David Edelsohn - - * gfortran.fortran-torture/execute/intrinsic_nearest.x: Skip on AIX. - * gfortran.dg/nint_2.f90: Correct AIX target name to skip. - * gfortran.dg/guality/guality.exp: Skip on AIX. - - * lib/dg-pch.exp (dg-flags-pch): Skip on AIX. - - * g++.dg/debug/pr56819.C: Skip on AIX. - * g++.dg/ext/vector23.C: Ignore vector ABI warning. - * g++.dg/guality/guality.exp: Skip on AIX. - - * g++.old-deja/g++.other/init19.C: Require cxa_atext. - - * gcc.misc-tests/gcov-14.c: Skip on AIX. - - * gcc.dg/simulate-thread/simulate-thread.exp: Skip on AIX. - -2013-07-19 Georg-Johann Lay - - PR target/57516 - * gcc.target/avr/torture/builtins-4-roundfx.c (test2hr, test2k): - Adjust to corrected rounding. - -2013-07-19 Georg-Johann Lay - - * lib/target-supports.exp (check_effective_target_cilkplus): New proc. - * gcc.dg/cilk-plus/cilk-plus.exp: only run if - check_effective_target_cilkplus. - * g++.dg/cilk-plus/cilk-plus.exp: Same. - -2013-07-18 Pat Haugen - - * gcc.target/powerpc/pr57744.c: Fix typo. - -2013-07-18 Sriraman Tallam - - PR middle-end/57698 - * gcc.c-torture/compile/pr57698.c: New test. - * gcc.c-torture/compile/pr43791.c: Remove prune output directive. - * gcc.c-torture/compile/pr44043.c: Ditto. - -2013-07-18 Wei Mi - - PR rtl-optimization/57878 - * g++.dg/pr57878.C: New test. - -2013-07-18 Kyrylo Tkachov - - * gcc.dg/pr42611.c: Move dg-error to correct line. - -2013-07-17 Tobias Burnus - - PR fortran/57895 - * gfortran.dg/dollar_sym_3.f: New. - * gfortran.dg/dollar_sym_1.f90: Update dg-error. - -2013-07-16 Iain Sandoe - - PR target/55654 - PR target/55656 - PR target/55657 - * obj-c++.dg/cxx-ivars-3.mm: Use NSObject instead of Object. - * obj-c++.dg/strings/const-cfstring-5.mm: Likewise. - * obj-c++.dg/torture/strings/const-str-10.mm: Likewise. - * obj-c++.dg/torture/strings/const-str-9.mm: Likewise. - * objc.dg/image-info.m: Likewise. - * objc.dg/symtab-1.m: Likewise. - * objc.dg/torture/strings/const-str-10.m: Likewise. - * objc.dg/torture/strings/const-str-11.m: Likewise. - * objc.dg/torture/strings/const-str-9.m: Likewise. - * objc.dg/zero-link-1.m: Likewise. - * objc.dg/zero-link-2.m: Likewise. - * objc.dg/no-extra-load.m: Avoid Foundation.h. - * objc.dg/objc-foreach-4.m: Likewise. - * objc.dg/objc-foreach-5.m: Likewise. - * obj-c++.dg/proto-lossage-7.mm: Use NSObject instead of Object - (for Darwin). - * obj-c++.dg/strings/const-str-12.mm: Likewise. - * obj-c++.dg/syntax-error-1.mm: Likewise. - * objc.dg/method-6.m: Likewise. - * objc.dg/pr23214.m: Likewise. - * objc.dg/proto-lossage-7.m: Likewise. - * objc.dg/strings/const-str-12b.m: Likewise. - * objc.dg/zero-link-3.m: Likewise. - * obj-c++.dg/method-12.mm: Skip on Darwin versions without 'Object'. - * objc.dg/encode-7-next-64bit.m: Use NSObject instead of Object, - adjust headers, interfaces and encoded types to reflect current system - versions. Add FIXME and outputs from current system compiler for - reference. - -2013-07-15 Cong Hou - - * gcc.target/i386/l_fma_float_1.c: Update the instruction to be - counted. - * gcc.target/i386/l_fma_float_3.c: Likewise. - * gcc.target/i386/l_fma_double_1.c: Likewise. - * gcc.target/i386/l_fma_double_3.c: Likewise. - -2013-07-15 Peter Bergner - - * lib/target-supports.exp (check_effective_target_powerpc_htm_ok): New - function to test if HTM is available. - * gcc.target/powerpc/htm-xl-intrin-1.c: New test. - * gcc.target/powerpc/htm-builtin-1.c: New test. - -2013-07-15 Tobias Burnus - - * gfortran.dg/coarray_lib_realloc_1.f90: New. - * gfortran.dg/coarray/lib_realloc_1.f90: New. - * gfortran.dg/coarray_6.f90: Add dg-error. - -2013-07-15 Tobias Burnus - - PR fortran/37336 - * gfortran.dg/finalize_18.f90: New. - -2013-07-14 Thomas Koenig - - PR fortran/52669 - * fortran.dg/module_variable_1.f90: New test. - * fortran.dg/module_variable_2.f90: New test. - -2013-07-14 Marc Glisse - - * g++.dg/ext/vector19.C: Adapt. - * g++.dg/ext/vector23.C: New testcase. - -2013-07-12 Michael Matz - - PR middle-end/55771 - * c-c++-common/pr55771.c: New test. - -2013-07-12 Tejas Belagod - - * gcc.target/aarch64/vect-movi.c: New. - -2013-07-11 Sriraman Tallam - - PR target/57362 - * g++.dg/ext/pr57362.C: New. - -2013-07-11 Georg-Johann Lay - - PR target/57631 - * gcc.target/avr/torture/pr57631.c: New test. - -2013-07-10 Paolo Carlini - - PR c++/57827 - * g++.dg/cpp0x/constexpr-ice7.C: New. - -2013-07-10 Janis Johnson - - * gcc.target/powerpc/20020118-1.c: Force 128-bit stack alignment - for EABI targets. - * gcc.c-torture/execute/nest-align-1.x: New. - -2013-07-10 Paolo Carlini - - PR c++/57874 - * g++.dg/cpp0x/sfinae48.C: New. - -2013-07-10 Jakub Jelinek - - PR preprocessor/57824 - * c-c++-common/raw-string-17.c: New test. - * c-c++-common/gomp/pr57824.c: New test. - -2013-07-10 Paolo Carlini - - PR c++/57869 - * g++.dg/cpp0x/reinterpret_cast1.C: New. - * g++.dg/warn/Wconditionally-supported-1.C: Likewise. - * g++.dg/conversion/dr195.C: Update. - * g++.dg/expr/cast2.C: Likewise. - -2013-07-10 Jakub Jelinek - - * c-c++-common/raw-string-18.c: New test. - * c-c++-common/raw-string-19.c: New test. - - PR preprocessor/57757 - * g++.dg/cpp/paste1.C: New test. - * g++.dg/cpp/paste2.C: New test. - -2013-07-10 Graham Stott - - * gcc.target/mips/mulsize-1.c: New. - * gcc.target/mips/mulsize-2.c: New. - * gcc.target/mips/mulsize-3.c: New. - * gcc.target/mips/mulsize-4.c: New. - -2013-07-09 Marc Glisse - - PR c++/53094 - * g++.dg/cpp0x/constexpr-53094-1.C: Adjust. - * g++.dg/ext/vector24.C: New testcase. - -2013-07-09 Marc Glisse - - PR c++/53000 - * g++.dg/cpp0x/decltype17.C: Adjust. - -2013-07-09 Paolo Carlini - - PR c++/51786 - * g++.dg/cpp0x/pr51786.C: New. - -2013-07-08 Janis Johnson - - * gcc.target/powerpc/tfmode_off.c: Skip for EABI targets. - - * gcc.target/powerpc/ppc-spe64-1.c: Update expected error message. - - * gcc.target/powerpc/pr47197.c: Require powerpc_altivec_ok. - - * gcc.target/powerpc/sd-vsx.c: Require dfp. - * gcc.target/powerpc/sd-pwr6.c: Likewise. - -2013-07-08 Tobias Burnus - - PR fortran/57834 - * gfortran.dg/c_f_pointer_tests_8.f90: New. - -2013-07-08 Tobias Burnus - - PR fortran/50554 - * gfortran.dg/do_check_9.f90: New. - -2013-07-08 Tobias Burnus - - PR fortran/57785 - * gfortran.dg/dot_product_2.f90: New. - -2013-07-08 Tobias Burnus - - PR fortran/57469 - * gfortran.dg/warn_unused_dummy_argument_4.f90: New. - -2013-07-08 Manfred Schwarb - - * gfortran.dg/defined_assignment_7.f90: Fix dg-do. - * gfortran.dg/finalize_10.f90: Fix dg-final. - -2013-07-08 Jakub Jelinek - - PR target/57819 - * gcc.target/i386/pr57819.c: New test. - - PR rtl-optimization/57829 - * gcc.c-torture/execute/pr57829.c: New test. - -2013-07-08 Michael Zolotukhin - - * gcc.target/i386/memcpy-vector_loop-1.c: New. - * gcc.target/i386/memcpy-vector_loop-2.c: New. - -2013-07-06 Uros Bizjak - - PR target/57807 - * gcc.target/i386/pr57807.c: New test. - -2013-07-06 Jakub Jelinek - - PR target/29776 - * gcc.dg/tree-ssa/vrp89.c: New test. - -2013-07-06 Paolo Carlini - - PR c++/28262 - * g++.dg/parse/defarg16.C: New. - -2013-07-05 Vladimir Makarov - - PR rtl-optimization/55342 - * gcc.target/i386/pr55342.c: New. - -2013-07-05 Marcus Shawcroft - - * gcc.dg/pr57518.c: Adjust scan-rtl-dump-not pattern. - -2013-07-05 Paolo Carlini - - PR c++/14263 - * g++.dg/inherit/virtual10.C: New. - -2013-07-04 Joern Rennecke - - PR c/57821 - * gcc.dg/large-size-array-6.c: New test. - -2013-07-04 Paolo Carlini - - PR c++/38634 - * g++.dg/template/crash116.C: New. - -2013-07-04 Joern Rennecke - - * gcc.dg/tree-ssa/vrp66.c: Make conditional on { target { ! int16 } } . - * gcc.dg/tree-ssa/vrp66-int16-sw.c: New test. - -2013-07-04 Paolo Carlini - - PR c++/54998 - * g++.dg/cpp0x/nsdmi-list3.C: New. - -2013-07-03 Jakub Jelinek - - PR target/57777 - * gcc.target/i386/pr57777.c: New test. - - PR c++/57771 - * g++.dg/template/arg9.C: New test. - -2013-07-02 Sriraman Tallam - - * gcc.target/i386/avx-inline.c: New test. - -2013-07-02 Maciej W. Rozycki - - * gcc.target/mips/call-1.c: Accept JALRS and JALR. - * gcc.target/mips/call-2.c: Likewise. - * gcc.target/mips/call-3.c: Likewise. - * gcc.target/mips/lazy-binding-1.c: Likewise. - -2013-07-02 Jakub Jelinek - - PR tree-optimization/57741 - * gcc.dg/vect/pr57741-1.c: New test. - * gcc.dg/vect/pr57741-2.c: New test. - * gcc.dg/vect/pr57741-3.c: New test. - -2013-07-02 Ian Bolton - - * gcc.target/config/aarch64/insv_1.c: Update to show it doesn't work - on big endian. - * gcc.target/config/aarch64/insv_2.c: New test for big endian. - * lib/target-supports.exp: Define aarch64_little_endian. - -2013-07-02 Ian Bolton - - * gcc.target/aarch64/abs_1.c: New test. - -2013-07-02 Ian Bolton - - * gcc.target/aarch64/bfxil_1.c: New test. - * gcc.target/aarch64/bfxil_2.c: Likewise. - -2013-07-01 Balaji V. Iyer - - PR c/57766 - * c-c++-common/cilk-plus/AN/sec_implicit_ex.c (NUMBER): Changed - array sizes from 100 to 20. - -2013-07-01 Dominique d'Humieres - - PR fortran/54788 - * gfortran.dg/pointer_remapping_8.f90: New. - -2013-06-28 Ed Smith-Rowland <3dw4rd@verizon.net> - - * g++.dg/cpp0x/udlit-nospace-neg.C: Adjust. - * g++.dg/cpp1y/udlit-enc-prefix-neg.C: New. - * g++.dg/cpp1y/udlit-userdef-string.C: New. - * g++.dg/cpp1y/complex_literals.h: New. - -2013-06-28 Paolo Carlini - - PR c++/57645 - * g++.dg/cpp0x/noexcept21.C: New. - -2013-06-28 Jakub Jelinek - - PR target/57736 - * gcc.target/i386/pr57736.c: New test. - -2013-06-28 Balaji V. Iyer - - * c-c++-common/cilk-plus/AN/decl-ptr-colon.c (main): Made this testcase - c specific. - * c-c++-common/cilk-plus/AN/decl-ptr-colon.c (main): Changed dg-error - strings to match the fixed error messages. - * c-c++-common/cilk-plus/AN/misc.c (main): Likewise. - * c-c++-common/cilk-plus/AN/rank_mismatch.c (main): Added a new error - message check. - -2013-06-28 Michael Meissner - - PR target/57744 - * gcc.target/powerpc/pr57744.c: New test to make sure lqarx and - stqcx. get even registers. - -2013-06-28 Marc Glisse - - PR c++/57509 - * g++.dg/ext/pr57509.C: Pass vectors by reference to avoid warnings. - -2013-06-28 Kirill Yukhin - - * gcc.target/i386/bmi-1.c: Extend with new instrinsic. - Fix scan patterns. - * gcc.target/i386/bmi-1.c: Ditto. - * gcc.target/i386/bmi-bextr-4.c: New. - * gcc.target/i386/bmi-bextr-5.c: Ditto. - -2013-06-28 Paolo Carlini - - PR c++/57682 - * g++.dg/cpp0x/initlist73.C: New. - -2013-06-27 Meador Inge - - * gcc.dg/atomic-flag.c: Add dg-require-effective-target sync_*. - * g++.dg/simulate-thread/atomics-2.C: Likewise. - * g++.dg/simulate-thread/atomics-1.C: Likewise. - -2013-06-27 Marc Glisse - - PR c++/57509 - * g++.dg/ext/pr57509.C: New file. - -2013-06-27 Jakub Jelinek - - PR target/57623 - * gcc.target/i386/bmi-bextr-3.c: New test. - - PR target/57623 - * gcc.target/i386/bmi2-bzhi-1.c: New test. - -2013-06-27 Marc Glisse - - PR c++/57172 - * g++.dg/cpp0x/pr57172.C: New testcase. - -2013-06-27 Andreas Krebbel - - * gcc.target/s390/htm-1.c: New file. - * gcc.target/s390/htm-nofloat-1.c: New file. - * gcc.target/s390/htm-xl-intrin-1.c: New file. - -2013-06-26 Tobias Burnus - - PR fortran/29800 - * gfortran.dg/bounds_check_17.f90: New. - -2013-06-25 Ed Smith-Rowland <3dw4rd@verizon.net> - - PR c++/57640 - * g++.dg/cpp1y/pr57640.C: New. - -2013-06-25 Balaji V. Iyer - - PR c/57692 - * c-c++-common/cilk-plus/AN/gather_scatter.c: Fixed a bug of stack - overflow due to size of arrays. - -2013-06-25 Jakub Jelinek - - PR tree-optimization/57705 - * gcc.dg/vect/pr57705.c: New test. - * gcc.dg/vect/vect-iv-7.c: Add noclone attribute, remove xfail. - -2013-06-25 Martin Jambor - - PR middle-end/57670 - * g++.dg/ipa/pr57670.C: New test. - -2013-06-25 Richard Biener - - PR middle-end/56977 - * gcc.dg/pr56977.c: New testcase. - -2013-06-24 Martin Jambor - - PR tree-optimization/57358 - * gcc.dg/ipa/pr57358.c: New test. - -2013-06-24 Richard Biener - - PR testsuite/57686 - * gcc.dg/torture/pr57584.c: Remove target specific bits. - -2013-06-24 Richard Biener - - PR tree-optimization/57488 - * gcc.dg/torture/pr57488.c: New testcase. - -2013-06-24 Francois-Xavier Coudert - Dominique d'Humieres - - PR fortran/52413 - * gfortran.dg/fraction.f90: New. - -2013-06-24 Alan Modra - - * gcc.target/powerpc/altivec-consts.c: Correct for little-endian. - Add scan-assembler-not "lvx". - * gcc.target/powerpc/le-altivec-consts.c: New. - -2013-06-23 Paolo Carlini - - * g++.dg/cpp0x/sfinae47.C: New. - -2013-06-23 Oleg Endo - - PR target/52483 - * gcc.target/sh/pr52483-1.c: New. - * gcc.target/sh/pr52483-2.c: New. - * gcc.target/sh/pr52483-3.c: New. - * gcc.target/sh/pr52483-4.c: New. - * gcc.target/sh/pr52483-5.c: New. - -2013-06-23 Sriraman Tallam - - * gcc.target/i386/intrinsics_1.c: New test. - * gcc.target/i386/intrinsics_2.c: Ditto. - * gcc.target/i386/intrinsics_3.c: Ditto. - * gcc.target/i386/intrinsics_4.c: Ditto. - * gcc.target/i386/intrinsics_5.c: Ditto. - * gcc.target/i386/intrinsics_6.c: Ditto. - * gcc.target/i386/avx-1.c: Provide macros for builtins - needing immediate arguments in f16cintrin.h and rtmintrin.h. - -2013-06-21 Tobias Burnus - - PR fortran/37336 - * gfortran.dg/finalize_17.f90: New. - -2013-06-21 Tobias Burnus - - * gfortran.dg/realloc_on_assign_18.f90: New. - -2013-06-21 Balaji V. Iyer - - * c-c++-common/cilk-plus/AN/array_test1.c: Make this an execution test. - Also changed the returns from error as distinct values so that - debugging can get easier. - * c-c++-common/cilk-plus/AN/if_test_errors.c (main): Made certain - errors specific to C, if necessary. Also added new error - hooks for C++. - * c-c++-common/cilk-plus/AN/misc.c (main): Likewise. - * c-c++-common/cilk-plus/AN/parser_errors.c (main): Likewise. - * c-c++-common/cilk-plus/AN/parser_errors2.c (main): Likewise. - * c-c++-common/cilk-plus/AN/parser_errors3.c (main): Likewise. - * c-c++-common/cilk-plus/AN/pr57541.c (main): Likewise. - * c-c++-common/cilk-plus/AN/parser_errors4.c (main): In addition to - the same changes as parser_errors3.c, spaces were added between colons - to not confuse C++ compiler with 2 colons as scope. - * c-c++-common/cilk-plus/AN/vla.c: Make this test C specific. - * g++.dg/cilk-plus/AN/array_test1_tplt.cc: New test. - * g++.dg/cilk-plus/AN/array_test2_tplt.cc: Likewise. - * g++.dg/cilk-plus/AN/array_test_ND_tplt.cc: Likewise. - * g++.dg/cilk-plus/AN/braced_list.cc: Likewise. - * g++.dg/cilk-plus/AN/builtin_fn_custom_tplt.cc: Likewise. - * g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc: Likewise. - * g++.dg/cilk-plus/AN/fp_triplet_values_tplt.c: Likewise. - * g++.dg/cilk-plus/AN/preincr_test.cc: Likewise. - * g++.dg/cilk-plus/AN/postincr_test.cc: Likewise. - * g++.dg/cilk-plus/cilk-plus.exp: New script. - * g++.dg/dg.exp: Included Cilk Plus C++ tests - in the list. - -2013-06-21 Joseph Myers - - PR other/53317 - * gcc.dg/torture/fp-int-convert-float128-timode-2.c: New test. - -2013-06-20 Uros Bizjak - - PR target/57655 - * gcc.target/i386/pr57655.c: New test. - -2013-06-20 Eric Botcazou - - * ada/acats/tests/gcc: Delete. - * gnat.dg/style: Likewise. - -2013-06-20 Jeff Law - - PR tree-optimization/57660 - * gcc.dg/tree-ssa/forwprop-28.c: Don't run test on various targets - based on their branch cost. - - * gcc.dg/tree-ssa/forwprop-28.c: Add missing dg-final. - -2013-06-20 Tobias Burnus - - PR fortran/57633 - * gfortran.dg/list_read_11.f90: New. - -2013-06-20 Richard Biener - - PR tree-optimization/57584 - * gcc.dg/torture/pr57584.c: New testcase. - -2013-06-19 Sharad Singhai - - * g++.dg/gcov/gcov-8.C: New testcase. - * lib/gcov.exp: Handle intermediate format. - -2013-06-19 Wei Mi - - PR rtl-optimization/57518 - * gcc.dg/pr57518.c: New test. - -2013-06-19 Igor Zamyatin - - * gcc.dg/tree-ssa/loop-19.c: Add -fno-common. - -2013-06-19 Jan Hubicka - - * gcc.dg/tree-ssa/attr-alias-2.c: New testcase. - -2013-06-19 Balaji V. Iyer - - * c-c++-common/cilk-plus/AN/builtin_fn_custom.c: Replaced all the - hard-coded values of array sizes with a #define. - * c-c++-common/cilk-plus/AN/builtin_fn_mutating.c: Likewise. - * c-c++-common/cilk-plus/AN/builtin_func_double2.c: Likewise. - * c-c++-common/cilk-plus/AN/gather_scatter.c: Likewise. - * c-c++-common/cilk-plus/AN/pr57577.c: Likewise. - * c-c++-common/cilk-plus/AN/sec_implicit_ex.c: Likewise. - -2013-06-19 Yufeng Zhang - - * gcc.dg/torture/stackalign/builtin-apply-2.c: set - STACK_ARGUMENTS_SIZE with 0 if __aarch64__ is defined. - -2013-06-19 Jeff Law - - * gcc.dg/tree-ssa/forwprop-28.c: New test. - -2013-06-19 Manuel Lopez-Ibanez - - PR c++/57638 - * g++.dg/template/error53.C: New. - -2013-06-19 Sebastian Huber - - PR target/55033 - * gcc.target/powerpc/pr55033.c: Fix options. - -2013-06-18 Sriraman Tallam - - * gcc.target/i386/inline_error.c: New test. - * gcc.c-torture/compile/pr44043.c: Fix test to expect an error. - * gcc.c-torture/compile/pr43791.c: Fix test to expect an error. - -2013-06-18 Paolo Carlini - - PR c++/53211 - * g++.dg/cpp0x/decltype55.C: New. - -2013-06-18 Marek Polacek - - * gcc.dg/c90-fordecl-1.c: Adjust expected message. - -2013-06-17 Balaji V. Iyer - - * c-c++-common/cilk-plus/AN/sec_reduce_ind_same_value.c: New test. - -2013-06-17 Balaji V. Iyer - - * c-c++-common/cilk-plus/AN/array_test1.c: Make this an execution test. - Also changed the returns from error as distinct values so that it is - easier to debug. - -2013-06-17 Sofiane Naci - - * gcc.target/aarch64/scalar_intrinsics.c: Update. - -2013-06-17 Paolo Carlini - - PR c++/16128 - * g++.dg/template/error52.C: New. - * g++.dg/lookup/friend15.C: Update. - * g++.dg/parse/error11.C: Likewise. - * g++.dg/parse/error14.C: Likewise. - * g++.dg/parse/parser-pr28152-2.C: Likewise. - * g++.dg/parse/template25.C: Likewise. - * g++.old-deja/g++.jason/cond.C: Likewise. - * g++.old-deja/g++.mike/for2.C: Likewise. - * g++.old-deja/g++.robertl/eb125.C: Likewise. - * obj-c++.dg/property/dotsyntax-4.mm: Likewise. - -2013-06-17 Kyrylo Tkachov - - * gcc.target/arm/unaligned-memcpy-2.c (dest): Initialize to - ensure alignment. - -2013-06-16 Balaji V. Iyer - - * c-c++-common/cilk-plus/AN/if_test.c (main2): Fixed a bug of - accidentally placing minus sign for length instead of stride. - -2013-06-16 Joern Rennecke - - PR rtl-optimization/57425 - PR rtl-optimization/57569 - * gcc.dg/torture/pr57425-1.c, gcc.dg/torture/pr57425-2.c: New files. - * gcc.dg/torture/pr57425-3.c, gcc.dg/torture/pr57569.c: Likewise. - -2013-06-15 Mikael Morin - - PR fortran/49074 - PR fortran/56136 - * gfortran.dg/typebound_assignment_5.f03: Check the absence of any - packing. - * gfortran.dg/typebound_assignment_6.f03: New. - -2013-06-15 Oleg Endo - - * gcc.target/h8300/h8300.exp: New. - * gcc.dg/pragma-isr.c: Move to ... - * gcc.target/sh/torture/pragma-isr.c: ... here ... - * gcc.target/h8300/pragma-isr.c: ... and here. - * gcc.dg/pragma-isr2.c: Move to ... - * gcc.target/sh/torture/pragma-isr2.c: ... here ... - * gcc.target/h8300/pragma-isr2.c: ... and here. - * gcc.dg/pragma-isr-trapa.c: Move to ... - * gcc.target/sh/pragma-isr-trapa.c: ... here. - * gcc.dg/pragma-isr-trapa2.c: Move to ... - * gcc.target/sh/pragma-isr-trapa2.c: ... here. - * gcc.dg/pragma-isr-trap_exit.c: Move to ... - * gcc.target/sh/pragma-isr-trap-exit.c: ... here. - * gcc.dg/pragma-isr-nosave_low_regs.c: Move to ... - * gcc.target/sh/pragma-isr-nosave_low_regs.c: ... here. - * gcc.dg/attr-isr-nosave_low_regs.c: Move to ... - * gcc.target/sh/attr-isr-nosave_low_regs.c: ... here. - * gcc.dg/attr-isr-trap_exit.c: Move to ... - * gcc.target/sh/attr-isr-trap_exit.c: ... here. - * gcc.dg/attr-isr-trapa.c: Move to ... - * gcc.target/sh/attr-isr-trapa.c: ... here. - -2013-06-14 Paolo Carlini - - PR c++/51413 - * g++.dg/ext/builtin-offsetof1.C: New. - -2013-06-14 Vidya Praveen - - * gcc.target/aarch64/vect_smlal_1.c: New file. - -2013-06-14 Tobias Burnus - - PR fortran/57508 - * gfortran.dg/defined_assignment_7.f90: New. - -2013-06-14 Paolo Carlini - - PR c++/57599 - * g++.dg/rtti/dyncast6.C: New. - * g++.dg/cpp0x/dyncast1.C: Likewise. - -2013-06-14 Alan Modra - - PR middle-end/57134 - * gcc.dg/pr57134.c: New. - -2013-06-14 Tobias Burnus - - PR fortran/57596 - * gfortran.dg/deferred_type_param_9.f90: New. - -2013-06-13 Marc Glisse - - * gcc.dg/fold-minus-1.c: New testcase. - -2013-06-13 Mikael Morin - - PR fortran/49074 - * gfortran.dg/typebound_assignment_5.f03: New. - -2013-06-13 Marc Glisse - - * gcc.dg/tree-ssa/forwprop-27.c: New testcase. - -2013-06-12 Michael Meissner - Pat Haugen - Peter Bergner - - * gcc.target/powerpc/atomic-p7.c: New file, add tests for atomic - load/store instructions on power7, power8. - * gcc.target/powerpc/atomic-p8.c: Likewise. - -2013-06-12 Balaji V. Iyer - - PR c/57577 - * c-c++-common/cilk-plus/AN/pr57577.c: New testcase. - -2013-06-12 Paolo Carlini - - PR c++/38958 - * g++.dg/warn/Wunused-var-20.C: New. - -2013-06-12 Richard Sandiford - - * gcc.target/mips/mips.exp: Handle -f{no-,}common. - * gcc.target/mips/memcpy-1.c: Remove redundant dg-do. - Run with -fno-common. - -2013-06-12 Balaji V. Iyer - - * c-c++-common/cilk-plus/AN/sec_implicit_ex.c (main): Replaced abort - and exit function calls with return 1 and return 0, respectively. - -2013-06-12 Richard Sandiford - - * gcc.target/mips/umips-branch-1.c, gcc.target/mips/umips-branch-2.c: - New tests. - -2013-06-12 Marc Glisse - - PR tree-optimization/57361 - * gcc.dg/tree-ssa/pr57361.c: New file. - -2013-06-12 Ramana Radhakrishnan - - * gcc.target/arm/unaligned-memcpy-4.c (src, dst): Initialize - to ensure alignment. - * gcc.target/arm/unaligned-memcpy-3.c (src): Likewise. - -2013-06-12 Tobias Burnus - - * gfortran.dg/finalize_10.f90: Update scan-tree-dump. - -2013-06-12 Tobias Burnus - Dominique d'Humieres - - * gfortran.dg/finalize_10.f90: Update scan-tree-dump. - -2013-06-12 Jakub Jelinek - - PR target/56564 - * gcc.target/i386/pr56564-1.c: Skip on darwin, mingw and cygwin. - * gcc.target/i386/pr56564-3.c: Likewise. - -2013-06-11 Tobias Burnus - - PR fortran/57535 - * gfortran.dg/class_array_18.f90: New. - -2013-06-11 Jan Hubicka - - PR c++/57551 - * g++.dg/ext/visibility/anon6.C: Update testcase. - -2013-06-10 Balaji V. Iyer - - PR c/57563 - * c-c++-common/cilk-plus/AN/builtin_fn_mutating.c (main): Fixed a bug - in how we check __sec_reduce_mutating function's result. - -2013-06-10 Michael Meissner - Pat Haugen - Peter Bergner - - * gcc.target/powerpc/direct-move-vint1.c: New tests for power8 - direct move instructions. - * gcc.target/powerpc/direct-move-vint2.c: Likewise. - * gcc.target/powerpc/direct-move.h: Likewise. - * gcc.target/powerpc/direct-move-float1.c: Likewise. - * gcc.target/powerpc/direct-move-float2.c: Likewise. - * gcc.target/powerpc/direct-move-double1.c: Likewise. - * gcc.target/powerpc/direct-move-double2.c: Likewise. - * gcc.target/powerpc/direct-move-long1.c: Likewise. - * gcc.target/powerpc/direct-move-long2.c: Likewise. - -2013-06-10 Paolo Carlini - - PR c++/52440 - * g++.dg/cpp0x/pr52440.C: New. - -2013-06-10 Jakub Jelinek - - PR target/56564 - * gcc.target/i386/pr56564-1.c: New test. - * gcc.target/i386/pr56564-2.c: New test. - * gcc.target/i386/pr56564-3.c: New test. - * gcc.target/i386/pr56564-4.c: New test. - * gcc.target/i386/avx256-unaligned-load-4.c: Add -fno-common. - * gcc.target/i386/avx256-unaligned-store-1.c: Likewise. - * gcc.target/i386/avx256-unaligned-store-3.c: Likewise. - * gcc.target/i386/avx256-unaligned-store-4.c: Likewise. - * gcc.target/i386/vect-sizes-1.c: Likewise. - * gcc.target/i386/memcpy-1.c: Likewise. - * gcc.dg/vect/costmodel/i386/costmodel-vect-31.c (tmp): Initialize. - * gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c (tmp): Likewise. - -2013-06-10 Thomas Schwinge - - * g++.dg/abi/forced.C: Extend current handling of Linux-based x86 - systems to cover all GNU systems. - * g++.dg/abi/guard2.C: Likewise. - * g++.dg/cpp0x/constexpr-rom.C: Likewise. - * g++.dg/eh/sighandle.C: Likewise. - * g++.dg/ext/cleanup-10.C: Likewise. - * g++.dg/ext/cleanup-11.C: Likewise. - * g++.dg/ext/cleanup-8.C: Likewise. - * g++.dg/ext/cleanup-9.C: Likewise. - * g++.dg/opt/const5.C: Likewise. - * g++.dg/opt/life1.C: Likewise. - * g++.dg/other/pr39496.C: Likewise. - * g++.old-deja/g++.abi/aggregates.C: Likewise. - * g++.old-deja/g++.abi/align.C: Likewise. - * g++.old-deja/g++.abi/bitfields.C: Likewise. - * g++.old-deja/g++.law/weak.C: Likewise. - * g++.old-deja/g++.pt/asm1.C: Likewise. - * gcc.c-torture/execute/20030125-1.x: Likewise. - * gcc.c-torture/execute/990127-2.x: Likewise. - * gcc.dg/20041106-1.c: Likewise. - * gcc.dg/20050503-1.c: Likewise. - * gcc.dg/builtin-object-size-5.c: Likewise. - * gcc.dg/cleanup-10.c: Likewise. - * gcc.dg/cleanup-11.c: Likewise. - * gcc.dg/cleanup-8.c: Likewise. - * gcc.dg/cleanup-9.c: Likewise. - * gcc.dg/complex-5.c: Likewise. - * gcc.dg/debug/dwarf2/asm-line1.c: Likewise. - * gcc.dg/debug/dwarf2/discriminator.c: Likewise. - * gcc.dg/dfp/convert-dfp-round-thread.c: Likewise. - * gcc.dg/dfp/pr35739.c: Likewise. - * gcc.dg/fdata-sections-1.c: Likewise. - * gcc.dg/lto/20090206-1_0.c: Likewise. - * gcc.dg/lto/20090206-2_0.c: Likewise. - * gcc.dg/pr30360.c: Likewise. - * gcc.dg/pr37303.c: Likewise. - * gcc.dg/pr39323-1.c: Likewise. - * gcc.dg/pr39323-2.c: Likewise. - * gcc.dg/pr39323-3.c: Likewise. - * gcc.dg/pr45416.c: Likewise. - * gcc.dg/setjmp-2.c: Likewise. - * gcc.dg/split-1.c: Likewise. - * gcc.dg/split-3.c: Likewise. - * gcc.dg/split-4.c: Likewise. - * gcc.dg/strlenopt-12g.c: Likewise. - * gcc.dg/strlenopt-14g.c: Likewise. - * gcc.dg/strlenopt-14gf.c: Likewise. - * gcc.dg/strlenopt-16g.c: Likewise. - * gcc.dg/strlenopt-17g.c: Likewise. - * gcc.dg/strlenopt-18g.c: Likewise. - * gcc.dg/strlenopt-1f.c: Likewise. - * gcc.dg/strlenopt-22g.c: Likewise. - * gcc.dg/strlenopt-2f.c: Likewise. - * gcc.dg/strlenopt-4g.c: Likewise. - * gcc.dg/strlenopt-4gf.c: Likewise. - * gcc.dg/struct-ret-3.c: Likewise. - * gcc.dg/torture/stackalign/setjmp-2.c: Likewise. - * gcc.misc-tests/linkage.exp: Likewise. - * gcc.target/i386/20000724-1.c: Likewise. - * gcc.target/i386/align-main-3.c: Likewise. - * gcc.target/i386/cleanup-1.c: Likewise. - * gcc.target/i386/inline-mcpy.c: Likewise. - * gcc.target/i386/pr32268.c: Likewise. - * gcc.target/i386/pr36613.c: Likewise. - * gcc.target/i386/pr39013-1.c: Likewise. - * gcc.target/i386/pr39013-2.c: Likewise. - * gcc.target/i386/pr39496.c: Likewise. - * gcc.target/i386/pr40906-3.c: Likewise. - * gcc.target/i386/pr46084.c: Likewise. - * lib/target-supports.exp (check_effective_target_pie): Likewise. - -2013-06-09 Oleg Endo - - PR target/6526 - * gcc.target/sh/pr6526.c: New. - -2013-06-09 Jakub Jelinek - - PR target/57568 - * gcc.c-torture/execute/pr57568.c: New test. - -2013-06-09 Paolo Carlini - - PR c++/37404 - * g++.dg/other/vararg-4.C: New. - -2013-06-08 Vladimir Makarov - - PR rtl-optimization/57559 - * gcc.target/s390/pr57559.c : New test. - -2013-06-08 Tobias Burnus - - PR fortran/37336 - * gfortran.dg/finalize_10.f90: New. - * gfortran.dg/auto_dealloc_2.f90: Update tree-dump. - * gfortran.dg/finalize_15.f90: New. - -2013-06-08 Tobias Burnus - - PR fortran/57553 - * gfortran.dg/storage_size_4.f90: New. - -2013-06-07 Sriraman Tallam - - PR c++/57548 - * g++.dg/ext/pr57548.C: New test. - -2013-06-07 Balaji V. Iyer - - PR middle-end/57541 - * c-c++-common/cilk-plus/AN/pr57541.c: New test case. - -2013-06-07 Jan Hubicka - - * gcc.dg/tree-ssa/attr-alias.c: Remove brackets in template. - -2013-06-07 Tobias Burnus - - PR fortran/57549 - * gfortran.dg/array_constructor_48.f90: New. - * gfortran.dg/array_constructor_type_14.f03: Correct test case. - * gfortran.dg/array_constructor_type_15.f03: Ditto. - -2013-06-07 Kyrylo Tkachov - - PR target/56315 - * gcc.target/arm/xordi3-opt.c: New test. - -2013-06-07 Rainer Orth - - * gcc.dg/debug/dwarf2/discriminator.c: Fix wording. - Revert to dg-options. - -2013-06-07 Sebastian Huber - - PR target/55033 - * gcc.target/powerpc/pr55033.c: New. - -2013-06-07 Paolo Carlini - - PR c++/53658 - * g++.dg/cpp0x/alias-decl-36.C: New. - -2013-06-06 Michael Meissner - Pat Haugen - Peter Bergner - - * gcc.target/powerpc/p8vector-builtin-1.c: New test to test - power8 builtin functions. - * gcc.target/powerpc/p8vector-builtin-2.c: Likewise. - * gcc.target/powerpc/p8vector-builtin-3.c: Likewise. - * gcc.target/powerpc/p8vector-builtin-4.c: Likewise. - * gcc.target/powerpc/p8vector-builtin-5.c: Likewise. - * gcc.target/powerpc/p8vector-builtin-6.c: Likewise. - * gcc.target/powerpc/p8vector-builtin-7.c: Likewise. - * gcc.target/powerpc/p8vector-vectorize-1.c: New - tests to test power8 auto-vectorization. - * gcc.target/powerpc/p8vector-vectorize-2.c: Likewise. - * gcc.target/powerpc/p8vector-vectorize-3.c: Likewise. - * gcc.target/powerpc/p8vector-vectorize-4.c: Likewise. - * gcc.target/powerpc/p8vector-vectorize-5.c: Likewise. - - * gcc.target/powerpc/crypto-builtin-1.c: Use effective target - powerpc_p8vector_ok instead of powerpc_vsx_ok. - - * gcc.target/powerpc/bool.c: New file, add eqv, nand, nor tests. - - * lib/target-supports.exp (check_p8vector_hw_available) Add power8 - support. - (check_effective_target_powerpc_p8vector_ok): Likewise. - (is-effective-target): Likewise. - (check_vect_support_and_set_flags): Likewise. - -2013-06-06 Paolo Carlini - - PR c++/43652 - * g++.dg/parse/error53.C: New. - -2013-06-06 Vladimir Makarov - - PR rtl-optimization/57459 - * gcc.target/i386/pr57459.c: New test. - -2013-06-06 Teresa Johnson - - PR c++/53743 - * gcc.dg/tree-prof/va-arg-pack-1.c: Cloned from c-torture, made - into -freorder-blocks-and-partition test. - * gcc.dg/tree-prof/comp-goto-1.c: Ditto. - * gcc.dg/tree-prof/20041218-1.c: Ditto. - * gcc.dg/tree-prof/pr52027.c: Use -O2. - * gcc.dg/tree-prof/pr50907.c: Ditto. - * gcc.dg/tree-prof/pr45354.c: Ditto. - * g++.dg/tree-prof/partition2.C: Ditto. - * g++.dg/tree-prof/partition3.C: Ditto. - -2013-06-06 Tobias Burnus - - PR fortran/57542 - * gfortran.dg/finalize_16.f90: New. - -2013-06-06 Marcus Shawcroft - - * gcc.dg/vect/no-section-anchors-vect-68.c: - Add dg-skip-if aarch64_tiny. - -2013-06-05 Balaji V. Iyer - - PR C/57457 - * c-c++-common/cilk-plus/AN/pr57457.c: New test. - * c-c++-common/cilk-plus/AN/pr57457-2.c: Likewise. - -2013-06-05 Paolo Carlini - - PR c++/51908 - * g++.dg/cpp0x/decltype54.C: New. - -2013-06-05 James Greenhalgh - - * gcc.dg/fshort-wchar.c: Add extra dg-options for - arm*-*-*eabi* targets. - * gcc.dg/tree-ssa/pr42585.c: Change dg-final to catch - arm*-*-* targets. - * gcc.dg/tree-ssa/pr43491.c: Likewise. - -2013-06-05 Manfred Schwarb - Tobias Burnus - - * gfortran.dg/string_length_2.f90: Fix dg-do run. - * gfortran.dg/io_real_boz_3.f90: Remove extra space in "dg-do run". - * gfortran.dg/io_real_boz_4.f90: Ditto. - * gfortran.dg/io_real_boz_5.f90: Ditto. - -2013-06-05 Andreas Schwab - - * gcc.dg/tree-ssa/attr-alias.c: Remove duplicated contents. - -2013-06-04 Jan Hubicka - - * gcc.dg/tree-ssa/attr-alias.c: New testcase. - -2013-06-04 Balaji V. Iyer - - * c-c++-common/cilk-plus/AN/array_test1.c (main): Replaced argc, argv - parameters with void. - (main2): Removed argc parameter. - * c-c++-common/cilk-plus/AN/array_test2.c (main2): Likewise. - (main): Replaced argc, argv parameters with void. - * c-c++-common/cilk-plus/AN/array_test_ND.c (main): Likewise. - (main2): Removed argc parameter. - * c-c++-common/cilk-plus/AN/builtin_fn_custom.c (main): Replaced argc - argv parameters with void. Added __asm volatile to avoid optimization - on argc, if necessary. - * c-c++-common/cilk-plus/AN/builtin_fn_mutating (main): Likewise. - * c-c++-common/cilk-plus/AN/builtin_func_double.c (main): Likewise. - * c-c++-common/cilk-plus/AN/builtin_func_double2.c (main): Likewise. - * c-c++-common/cilk-plus/AN/conditional.c (main): Likewise. - * c-c++-common/cilk-plus/AN/exec-once.c (main): Likewise. - * c-c++-common/cilk-plus/AN/exec-once2.c (main): Likewise. - * c-c++-common/cilk-plus/AN/fn_ptr.c (main): Likewise. - * c-c++-common/cilk-plus/AN/gather-scatter-errors.c (main): Likewise. - * c-c++-common/cilk-plus/AN/gather_scatter.c (main): Likewise. - * c-c++-common/cilk-plus/AN/misc.c (main): Likewise. - * c-c++-common/cilk-plus/AN/parser_errors.c (main): Likewise. - * c-c++-common/cilk-plus/AN/parser_errors2.c (main): Likewise. - * c-c++-common/cilk-plus/AN/parser_errors3.c (main): Likewise. - * c-c++-common/cilk-plus/AN/parser_errors4.c (main): Likewise. - * c-c++-common/cilk-plus/AN/rank_mismatch2.c (main): Likewise. - * c-c++-common/cilk-plus/AN/sec_implicit_ex.c (main): Likewise. - * c-c++-common/cilk-plus/AN/sec_reduce_return.c (main): Likewise. - * c-c++-common/cilk-plus/AN/test_builtin_return.c (main): Likewise. - * c-c++-common/cilk-plus/AN/vla.c (main): Likewise. - * c-c++-common/cilk-plus/AN/comma-exp.c (main): Replaced argc, argv - parameters with void. - (main2): Removed argc parameter. - * c-c++-common/cilk-plus/AN/if_test.c (main2): Likewise. - (main): Replaced argc, argv parameters with void. - * c-c++-common/cilk-plus/AN/fp_triplet_values (main2): Replace argc, - argv parameters with void. Also renamed this function as main, and - delete the existing main. - * c-c++-common/cilk-plus/AN/sec_implicit.c (main2): Likewise. - * c-c++-common/cilk-plus/AN/sec_implicit2.c (main2): Likewise. - * c-c++-common/cilk-plus/AN/sec_reduce_max_min_ind.c (main2): Likewise. - -2013-06-04 Ian Bolton - - * gcc.target/aarch64/movi_1.c: New test. - -2013-06-04 Tobias Burnus - - PR fortran/37336 - * gfortran.dg/finalize_12.f90: New. - * gfortran.dg/alloc_comp_basics_1.f90: Add BLOCK for - end of scope finalization. - * gfortran.dg/alloc_comp_constructor_1.f90: Ditto. - * gfortran.dg/allocatable_scalar_9.f90: Ditto. - * gfortran.dg/auto_dealloc_2.f90: Ditto. - * gfortran.dg/class_19.f03: Ditto. - * gfortran.dg/coarray_lib_alloc_1.f90: Ditto. - * gfortran.dg/coarray_lib_alloc_2.f90: Ditto. - * gfortran.dg/extends_14.f03: Ditto. - * gfortran.dg/move_alloc_4.f90: Ditto. - * gfortran.dg/typebound_proc_27.f03: Ditto. - -2013-06-04 Manfred Schwarb - - * gfortran.dg/bounds_check_7.f90: Remove "! {". - * gfortran.dg/coarray_poly_3.f90: Remove inactive, broken dg-*. - * gfortran.dg/default_initialization_5.f90: Update dg-do. - * gfortran.dg/g77/f77-edit-s-out.f: Fix broken dg-output. - * gfortran.dg/g77/f77-edit-t-out.f: Fix broken dg-output. - * gfortran.dg/g77/f77-edit-x-out.f: Fix broken dg-output. - * gfortran.dg/init_flag_11.f90: Fix broken dg-options. - * gfortran.dg/io_real_boz_3.f90: Add comment regarding dg-do run. - * gfortran.dg/io_real_boz_4.f90: Ditto. - * gfortran.dg/io_real_boz_5.f90: Ditto. - * gfortran.dg/namelist_print_1.f: Fix broken dg-output. - * gfortran.dg/read_x_eor.f90: Fix broken dg-output. - * gfortran.dg/repeat_1.f90: Improve dg-output pattern. - * gfortran.dg/spread_bounds_1.f90: Fix broken dg-output. - * gfortran.dg/transpose_2.f90: Fix dg-output. - -2013-06-03 Balaji V. Iyer - - * c-c++-common/cilk-plus/AN/if_test_errors.c (main): New testcase. - * c-c++-common/cilk-plus/AN/rank_mismatch.c: Added a '-w' option to - dg-option and an header comment. - -2013-06-03 Paolo Carlini - - PR c++/57419 - * g++.dg/cpp0x/sfinae46.C: New. - * g++.dg/cpp0x/defaulted13.C: Adjust. - * g++.dg/cpp0x/defaulted2.C: Likewise. - * g++.dg/cpp0x/defaulted26.C: Likewise. - * g++.dg/cpp0x/defaulted3.C: Likewise. - * g++.dg/cpp0x/error1.C: Likewise. - * g++.dg/cpp0x/implicit1.C: Likewise. - * g++.dg/cpp0x/implicit11.C: Likewise. - * g++.dg/cpp0x/inh-ctor13.C: Likewise. - * g++.dg/cpp0x/initlist47.C: Likewise. - * g++.dg/cpp0x/initlist9.C: Likewise. - * g++.dg/cpp0x/lambda/lambda-errloc.C: Likewise. - * g++.dg/cpp0x/lambda/lambda-errloc2.C: Likewise. - * g++.dg/cpp0x/nsdmi-local.C: Likewise. - * g++.dg/cpp0x/union4.C: Likewise. - * g++.dg/template/crash108.C: Likewise. - * g++.dg/template/crash41.C: Likewise. - * g++.old-deja/g++.jason/local.C: Likewise. - * g++.old-deja/g++.law/visibility3.C: Likewise. - -2013-06-03 Teresa Johnson - - * gcc.dg/vect/bb-slp-31.c: Update vect dump message. - * gcc.dg/vect/bb-slp-14.c: Ditto. - * gcc.dg/vect/fast-math-bb-slp-call-1.c: Ditto. - * gcc.dg/vect/bb-slp-23.c: Ditto. - * gcc.dg/vect/bb-slp-15.c: Ditto. - * gcc.dg/vect/fast-math-bb-slp-call-2.c: Ditto. - * gcc.dg/vect/bb-slp-24.c: Ditto. - * gcc.dg/vect/bb-slp-16.c: Ditto. - * gcc.dg/vect/bb-slp-25.c: Ditto. - * gcc.dg/vect/bb-slp-pattern-2.c: Ditto. - * gcc.dg/vect/bb-slp-17.c: Ditto. - * gcc.dg/vect/bb-slp-1.c: Ditto. - * gcc.dg/vect/bb-slp-26.c: Ditto. - * gcc.dg/vect/bb-slp-18.c: Ditto. - * gcc.dg/vect/bb-slp-2.c: Ditto. - * gcc.dg/vect/no-tree-reassoc-bb-slp-12.c: Ditto. - * gcc.dg/vect/bb-slp-27.c: Ditto. - * gcc.dg/vect/bb-slp-19.c: Ditto. - * gcc.dg/vect/bb-slp-3.c: Ditto. - * gcc.dg/vect/bb-slp-28.c: Ditto. - * gcc.dg/vect/bb-slp-4.c: Ditto. - * gcc.dg/vect/bb-slp-29.c: Ditto. - * gcc.dg/vect/bb-slp-5.c: Ditto. - * gcc.dg/vect/bb-slp-6.c: Ditto. - * gcc.dg/vect/bb-slp-8a.c: Ditto. - * gcc.dg/vect/bb-slp-7.c: Ditto. - * gcc.dg/vect/bb-slp-8b.c: Ditto. - * gcc.dg/vect/bb-slp-8.c: Ditto. - * gcc.dg/vect/bb-slp-9.c: Ditto. - * gcc.dg/vect/bb-slp-10.c: Ditto. - * gcc.dg/vect/bb-slp-11.c: Ditto. - * gcc.dg/vect/bb-slp-20.c: Ditto. - * gcc.dg/vect/bb-slp-cond-1.c: Ditto. - * gcc.dg/vect/bb-slp-21.c: Ditto. - * gcc.dg/vect/bb-slp-30.c: Ditto. - * gcc.dg/vect/bb-slp-13.c: Ditto. - * gcc.dg/vect/bb-slp-22.c: Ditto. - * g++.dg/vect/slp-pr50413.cc: Ditto. - * g++.dg/vect/slp-pr56812.cc: Ditto. - * g++.dg/vect/slp-pr50819.cc: Ditto. - -2013-06-01 Tobias Burnus - - PR fortran/57456 - * gfortran.dg/class_array_17.f90: New. - -2013-05-31 Eric Botcazou - - * ada/acats/floatstore.lst: New. - * ada/acats/run_all.sh: Process it. - -2013-05-31 Eric Botcazou - - * gcc.target/powerpc/e500-ord-1.c: New test. - * gcc.target/powerpc/e500-ord-2.c: Likewise. - * gcc.target/powerpc/e500-unord-1.c: Likewise. - * gcc.target/powerpc/e500-unord-2.c: Likewise. - -2013-05-31 Marcus Shawcroft - - * g++.dg/torture/pr54684.C: Add -fno-short-enums. - -2013-05-31 Marcus Shawcroft - - * gcc.target/arm/pr56184.C: Add -fno-short-enums. - -2013-05-31 Marcus Shawcroft - - * g++.old-deja/g++.robertl/eb76.C: Add -fno-short-enums. - -2013-05-31 Balaji V. Iyer - - PR c/57452 - * c-c++-common/cilk-plus/AN/if_test.c: Fixed out of bounds issue in - test-case. - -2013-05-31 Rainer Orth - - * gcc.dg/shrink-wrap-alloca.c: Use __builtin_alloca. - -2013-05-31 Marek Polacek - - PR tree-optimization/57478 - PR tree-optimization/57453 - * gcc.dg/torture/pr57478.c: New test. - -2013-05-31 Tobias Burnus - - PR fortran/57456 - * gfortran.dg/class_array_17.f90: New. - -2013-05-31 Kyrylo Tkachov - - PR target/56315 - * gcc.target/arm/iordi3-opt.c: New test. - -2013-05-31 Janus Weil - - PR fortran/54190 - PR fortran/57217 - * gfortran.dg/dummy_procedure_5.f90: Modified error message. - * gfortran.dg/interface_26.f90: Ditto. - * gfortran.dg/proc_ptr_11.f90: Ditto. - * gfortran.dg/proc_ptr_15.f90: Ditto. - * gfortran.dg/proc_ptr_comp_20.f90: Ditto. - * gfortran.dg/proc_ptr_comp_33.f90: Ditto. - * gfortran.dg/proc_ptr_result_5.f90: Ditto. - * gfortran.dg/typebound_override_1.f90: Ditto. - * gfortran.dg/typebound_override_4.f90: Ditto. - * gfortran.dg/typebound_proc_6.f03: Ditto. - * gfortran.dg/assumed_type_7.f90: New test. - * gfortran.dg/typebound_override_5.f90: New test. - * gfortran.dg/typebound_override_6.f90: New test. - * gfortran.dg/typebound_override_7.f90: New test. - -2013-05-30 Tobias Burnus - - PR middle-end/57073 - * gfortran.dg/power_6.f90: New. - -2013-05-30 Ian Bolton - - * gcc.target/aarch64/insv_1.c: New test. - -2013-05-30 Yufeng Zhang - - * g++.dg/cpp0x/alias-decl-debug-0.C: Add aarch64*-*-* to the - dg-skip-if "No stabs". - -2013-05-30 Janus Weil - - PR fortran/54189 - * gfortran.dg/assumed_size_1.f90: New. - -2013-05-30 Zhenqiang Chen - - * gcc.dg/shrink-wrap-alloca.c: New added. - * gcc.dg/shrink-wrap-pretend.c: New added. - * gcc.dg/shrink-wrap-sibcall.c: New added. - -2013-05-30 Tobias Burnus - - PR fortran/57458 - * gfortran.dg/assumed_rank_13.f90: New. - -2013-05-29 Easwaran Raman - - PR tree-optimization/57442 - * gcc.dg/tree-ssa/reassoc-30.c: New testcase. - -2013-05-29 Bill Schmidt - - PR tree-optimization/57441 - * gcc.c-torture/compile/pr57441.c: New. - -2013-05-29 Dehao Chen - - PR testsuite/57413 - * gcc.dg/debug/dwarf2/discriminator.c: Restrict the test to linux-gnu. - -2013-05-29 Tobias Burnus - - PR fortran/37336 - * gfortran.dg/auto_dealloc_2.f90: Update _free count in the dump. - * gfortran.dg/class_19.f03: Ditto. - -2013-05-29 Richard Biener - - * gcc.dg/vect/bb-slp-32.c: New testcase. - -2013-05-28 Balaji V. Iyer - - * c-c++-common/cilk-plus/AN/array_test1.c: New test. - * c-c++-common/cilk-plus/AN/array_test2.c: Likewise. - * c-c++-common/cilk-plus/AN/array_test_ND.c: Likewise. - * c-c++-common/cilk-plus/AN/builtin_func_double.c: Likewise. - * c-c++-common/cilk-plus/AN/builtin_func_double2.c: Likewise. - * c-c++-common/cilk-plus/AN/gather-scatter-errors.c: Likewise. - * c-c++-common/cilk-plus/AN/if_test.c: Likewise. - * c-c++-common/cilk-plus/AN/sec_implicit_ex.c: Likewise. - * c-c++-common/cilk-plus/AN/decl-ptr-colon.c: Likewise. - * c-c++-common/cilk-plus/AN/dimensionless-arrays.c: Likewise. - * c-c++-common/cilk-plus/AN/fn_ptr.c: Likewise. - * c-c++-common/cilk-plus/AN/fp_triplet_values.c: Likewise. - * c-c++-common/cilk-plus/AN/gather-scatter.c: Likewise. - * c-c++-common/cilk-plus/AN/misc.c: Likewise. - * c-c++-common/cilk-plus/AN/parser_errors.c: Likewise. - * c-c++-common/cilk-plus/AN/parser_errors2.c: Likewise. - * c-c++-common/cilk-plus/AN/parser_errors3.c: Likewise. - * c-c++-common/cilk-plus/AN/parser_errors4.c: Likewise. - * c-c++-common/cilk-plus/AN/rank_mismatch.c: Likewise. - * c-c++-common/cilk-plus/AN/rank_mismatch2.c: Likewise. - * c-c++-common/cilk-plus/AN/rank_mismatch3.c: Likewise. - * c-c++-common/cilk-plus/AN/sec_implicit.c: Likewise. - * c-c++-common/cilk-plus/AN/sec_implicit2.c: Likewise. - * c-c++-common/cilk-plus/AN/sec_reduce_max_min_ind.c: Likewise. - * c-c++-common/cilk-plus/AN/tst_lngth.c: Likewise. - * c-c++-common/cilk-plus/AN/vla.c: Likewise. - * c-c++-common/cilk-plus/AN/an-if.c: Likewise. - * c-c++-common/cilk-plus/AN/builtin_fn_custom.c: Likewise. - * c-c++-common/cilk-plus/AN/builtin_fn_mutating.c: Likewise. - * c-c++-common/cilk-plus/AN/comma_exp.c: Likewise. - * c-c++-common/cilk-plus/AN/conditional.c: Likewise. - * c-c++-common/cilk-plus/AN/exec-once.c: Likewise. - * c-c++-common/cilk-plus/AN/exec-once2.c: Likewise. - * c-c++-common/cilk-plus/AN/gather_scatter.c: Likewise. - * c-c++-common/cilk-plus/AN/n-ptr-test.c: Likewise. - * c-c++-common/cilk-plus/AN/side-effects-1.c: Likewise. - * c-c++-common/cilk-plus/AN/test_builtin_return.c: Likewise. - * c-c++-common/cilk-plus/AN/test_sec_limits.c: Likewise. - * gcc.dg/cilk-plus/cilk-plus.exp: New script. - -2013-05-29 Tobias Burnus - - PR fortran/37336 - * gfortran.dg/finalize_11.f90: New. - * gfortran.dg/finalize_4.f03: Remove dg-error. - * gfortran.dg/finalize_5.f03: Ditto. - * gfortran.dg/finalize_6.f03: Ditto. - * gfortran.dg/finalize_7.f03: Ditto. - -2013-05-28 Tobias Burnus - - * gfortran.dg/class_array_16.f90: New. - -2013-05-28 Tobias Burnus - - PR fortran/57435 - * gfortran.dg/use_29.f90: New. - -2013-05-28 Eric Botcazou - - * gnat.dg/fp_exception.adb: New test. - -2013-05-28 Richard Biener - - PR tree-optimization/56787 - * gcc.dg/vect/pr56787.c: New testcase. - -2013-05-28 Janus Weil - Tobias Burnus - - PR fortran/57217 - * gfortran.dg/typebound_override_4.f90: New. - -2013-05-28 Richard Biener - - PR tree-optimization/57411 - * g++.dg/opt/pr57411.C: New testcase. - -2013-05-28 Eric Botcazou - - * gcc.dg/builtin-bswap-8.c: Compile at -O2. - * gcc.dg/builtin-bswap-9.c: Likewise. - -2013-05-28 Eric Botcazou - - * gcc.target/sparc/bmaskbshuf.c: Remove superfluous options. - -2013-05-27 Richard Biener - - PR middle-end/57412 - * gcc.dg/gomp/pr57412.c: New testcase. - -2013-05-27 Bud Davis - - PR fortran/50405 - * gfortran.dg/stfunc_8.f90: New. - -2013-05-27 Richard Biener - - PR tree-optimization/57343 - * gcc.dg/torture/pr57343.c: New testcase. - -2013-05-27 Richard Biener - - PR tree-optimization/57417 - * gcc.dg/torture/pr57417.c: New testcase. - -2013-05-27 Richard Biener - - PR tree-optimization/57396 - * gfortran.fortran-torture/execute/pr57396.f90: New testcase. - -2013-05-26 Eric Botcazou - - * gnat.dg/specs/last_bit.ads: New test. - -2013-05-26 Eric Botcazou - - * gnat.dg/specs/machine_attribute.ads: New test. - -2013-05-26 Eric Botcazou - - * gnat.dg/incomplete3.ad[sb]: New test. - -2013-05-25 Richard Sandiford - - PR target/53916 - * gcc.target/mips/div-13.c: New test. - -2013-05-25 Richard Sandiford - - PR target/55777 - * gcc.target/mips/mips16-attributes-5.c, - * gcc.target/mips/mips16-attributes-6.c: New tests. - -2013-05-25 Eric Botcazou - - * gcc.dg/builtin-bswap-6.c: Use same options as optimize-bswapsi-1.c. - * gcc.dg/builtin-bswap-8.c: Likewise. - -2013-05-25 Paolo Carlini - - PR c++/52216 - * g++.dg/cpp0x/new1.C: New. - -2013-05-25 Paolo Carlini - - PR c++/25666 - * g++.dg/parse/dtor16.C: New. - * g++.dg/parse/dtor6.C: Adjust. - -2013-05-24 Paolo Carlini - - PR c++/19618 - * g++.dg/expr/bitfield12.C: New. - -2013-05-24 Jeff Law - - PR tree-optimization/57124 - * gcc.c-torture/execute/pr57124.c: New test. - * gcc.c-torture/execute/pr57124.x: Set -fno-strict-overflow. - -2013-05-24 Martin Jambor - - PR tree-optimization/57294 - * gcc.dg/ipa/pr57294.c: New test. - -2013-05-24 Dehao Chen - - * gcc.dg/debug/dwarf2/discriminator.c: New Testcase. - -2013-05-24 Ian Bolton - - * gcc.target/aarch64/scalar_intrinsics.c - (force_simd): Use a valid instruction. - (test_vdupd_lane_s64): Pass a valid lane argument. - (test_vdupd_lane_u64): Likewise. - -2013-05-24 Richard Biener - - PR tree-optimization/57287 - * gcc.dg/pr57287.c: New testcase. - -2013-05-24 Paolo Carlini - - PR c++/26572 - * g++.dg/template/error51.C: New. - -2013-05-24 Paolo Carlini - - PR c++/25503 - * g++.dg/template/bitfield2.C: New. - -2013-05-24 Eric Botcazou - - * gnat.dg/specs/noinline1.ads: New test. - * gnat.dg/noinline2.ad[sb]: Likewise. - * gnat.dg/specs/noinline3.ads: Likewise. - * gnat.dg/specs/noinline3_pkg.ad[sb]: New helper. - -2013-05-24 Alexander Ivchenko - - PR tree-ssa/57385 - * gcc.dg/tree-ssa/pr57385.c: New test. - -2013-05-24 Eric Botcazou - - * gnat.dg/derived_type4.adb: New test. - -2013-05-24 Eric Botcazou - - * gcc.dg/builtin-bswap-6.c: New test. - * gcc.dg/builtin-bswap-7.c: Likewise. - * gcc.dg/builtin-bswap-8.c: Likewise. - * gcc.dg/builtin-bswap-9.c: Likewise. - -2013-05-23 Christian Bruel - - PR debug/57351 - * gcc.dg/debug/pr57351.c: New test - -2013-05-23 Vidya Praveen - - * gcc.target/aarch64/vect-clz.c: New file. - -2013-05-23 Martin Jambor - - PR middle-end/57347 - * gcc.dg/ipa/pr57347.c: New test. - -2013-05-23 Richard Biener - - PR tree-optimization/57380 - * g++.dg/tree-ssa/pr57380.C: New testcase. - -2013-05-23 Richard Biener - - PR middle-end/57381 - * gcc.dg/torture/pr57381.c: New testcase. - -2013-05-23 Jakub Jelinek - - PR middle-end/57344 - * gcc.c-torture/execute/pr57344-1.c: New test. - * gcc.c-torture/execute/pr57344-2.c: New test. - * gcc.c-torture/execute/pr57344-3.c: New test. - * gcc.c-torture/execute/pr57344-4.c: New test. - -2013-05-23 Richard Biener - - PR rtl-optimization/57341 - * gcc.dg/torture/pr57341.c: New testcase. - -2013-05-22 Paolo Carlini - - PR c++/57352 - * g++.dg/parse/crash62.C: New. - -2013-05-22 Michael Meissner - Pat Haugen - Peter Bergner - - * gcc.target/powerpc/crypto-builtin-1.c: New file, test for power8 - crypto builtins. - -2013-05-22 Tobias Burnus - - PR fortran/57364 - * gfortran.dg/defined_assignment_6.f90: New. - -2013-05-22 Tobias Burnus - - PR fortran/57338 - * gfortran.dg/assumed_type_6.f90: New. - -2013-05-22 Paolo Carlini - - PR c++/57211 - * g++.dg/cpp0x/Wunused-parm.C: New. - -2013-05-21 Paolo Carlini - - * g++.dg/cpp0x/explicit3.C: Add column in dg-error strings. - * g++.dg/warn/Wdouble-promotion.C: Likewise. - -2013-05-21 Easwaran Raman - - PR tree-optimization/57322 - * gcc.dg/tree-ssa/reassoc-29.c: New testcase. - -2013-05-21 Graham Stott - - * lib/scanasm.exp (dg-function-on-line): Make MIPS targets match - .set (no)?micromips - -2013-05-21 Tobias Burnus - - PR fortran/57035 - * gfortran.dg/assumed_type_5.f90: New. - * gfortran.dg/assumed_rank_1.f90: Comment invalid statement. - * gfortran.dg/assumed_rank_2.f90: Ditto. - * gfortran.dg/assumed_type_3.f90: Update dg-error. - * gfortran.dg/no_arg_check_3.f90: Ditto. - -2013-05-21 Jakub Jelinek - - PR tree-optimization/57331 - * gcc.c-torture/compile/pr57331.c: New test. - -2013-05-21 Richard Biener - - PR tree-optimization/57330 - * gcc.dg/torture/pr57330.c: New testcase. - -2013-05-21 Richard Biener - - PR tree-optimization/57303 - * gcc.dg/torture/pr57303.c: New testcase. - -2013-05-21 Jakub Jelinek - - PR tree-optimization/57321 - * gcc.c-torture/execute/pr57321.c: New test. - -2013-05-20 Tobias Burnus - - PR fortran/48858 - PR fortran/55465 - * gfortran.dg/binding_label_tests_10_main.f03: Update dg-error. - * gfortran.dg/binding_label_tests_11_main.f03: Ditto. - * gfortran.dg/binding_label_tests_13_main.f03: Ditto. - * gfortran.dg/binding_label_tests_3.f03: Ditto. - * gfortran.dg/binding_label_tests_4.f03: Ditto. - * gfortran.dg/binding_label_tests_5.f03: Ditto. - * gfortran.dg/binding_label_tests_6.f03: Ditto. - * gfortran.dg/binding_label_tests_7.f03: Ditto. - * gfortran.dg/binding_label_tests_8.f03: Ditto. - * gfortran.dg/c_loc_tests_12.f03: Fix test case. - * gfortran.dg/binding_label_tests_24.f90: New. - * gfortran.dg/binding_label_tests_25.f90: New. - -2013-05-20 Tobias Burnus - - PR fortran/48858 - * gfortran.dg/binding_label_tests_17.f90: New. - * gfortran.dg/binding_label_tests_18.f90: New. - * gfortran.dg/binding_label_tests_19.f90: New. - * gfortran.dg/binding_label_tests_20.f90: New. - * gfortran.dg/binding_label_tests_21.f90: New. - * gfortran.dg/binding_label_tests_22.f90: New. - * gfortran.dg/binding_label_tests_23.f90: New. - -2013-05-20 Tobias Burnus - - PR fortran/48858 - * gfortran.dg/test_common_binding_labels.f03: Update dg-error. - * gfortran.dg/test_common_binding_labels_2_main.f03: Ditto. - * gfortran.dg/test_common_binding_labels_3_main.f03: Ditto. - * gfortran.dg/common_18.f90: New. - * gfortran.dg/common_19.f90: New. - * gfortran.dg/common_20.f90: New. - * gfortran.dg/common_21.f90: New. - -2013-05-20 Paolo Carlini - - PR c++/12288 - * g++.dg/parse/error52.C: New. - * g++.dg/parse/error3.C: Adjust. - * g++.dg/parse/error36.C: Likewise. - -2013-05-20 Oleg Endo - - PR target/56547 - * gcc.target/sh/pr56547-1.c: New. - * gcc.target/sh/pr56547-2.c: New. - -2013-05-20 Paolo Carlini - - PR c++/23608 - * g++.dg/warn/Wsign-compare-6.C: New. - * g++.dg/warn/Wdouble-promotion.C: Adjust. - -2013-05-20 Paolo Carlini - - PR c++/57327 - * g++.dg/template/error50.C: New. - -2013-05-20 Paolo Carlini - - PR c++/10207 - * g++.dg/ext/complit13.C: New. - -2013-05-20 Marc Glisse - - PR c++/57175 - * g++.dg/pr57175.C: New testcase. - -2013-05-17 Easwaran Raman - - * gcc.dg/tree-ssa/reassoc-28.c: New testcase. - -2013-05-17 Marc Glisse - - PR testsuite/57313 - * gcc.dg/binop-xor3.c: Restrict to platforms known to work (x86). - -2013-05-17 Jakub Jelinek - - PR rtl-optimization/57281 - PR rtl-optimization/57300 - * gcc.dg/pr57300.c: New test. - * gcc.c-torture/execute/pr57281.c: New test. - -2013-05-17 Paolo Carlini - - PR c++/18126 - * g++.dg/ext/sizeof-complit.C: New. - -2013-05-17 Marek Polacek - - * gcc.dg/strlenopt-25.c: New test. - * gcc.dg/strlenopt-26.c: Likewise. - -2013-05-17 Jakub Jelinek - - * gcc.target/i386/rotate-4.c: Compile only with -mavx - instead of -mavx2, require only avx instead of avx2. - * gcc.target/i386/rotate-4a.c: Include avx-check.h instead - of avx2-check.h and turn into an avx runtime test instead of - avx2 runtime test. - -2013-05-16 Marc Glisse - - * g++.dg/ext/vector22.C: Uncomment working test. - -2013-05-16 Paolo Carlini - - PR c++/17410 - * g++.dg/template/pr17410.C: New. - -2013-05-16 Jakub Jelinek - - * gcc.target/i386/rotate-3.c: New test. - * gcc.target/i386/rotate-3a.c: New test. - * gcc.target/i386/rotate-4.c: New test. - * gcc.target/i386/rotate-4a.c: New test. - * gcc.target/i386/rotate-5.c: New test. - * gcc.target/i386/rotate-5a.c: New test. - -2013-05-16 Rainer Orth - - * gcc.dg/visibility-21.c: Require section_anchors. - -2013-05-16 Greta Yorsh - - * gcc.target/arm/unaligned-memcpy-2.c: Adjust expected output. - * gcc.target/arm/unaligned-memcpy-3.c: Likewise. - * gcc.target/arm/unaligned-memcpy-4.c: Likewise. - -2013-05-16 Nathan Sidwell - - * gcc.dg/visibility-21.c: New. - -2013-05-16 Marc Glisse - - PR middle-end/57286 - * gcc.dg/pr57286.c: New testcase. - * gcc.dg/vector-shift-2.c: Don't assume int has size 4. - * g++.dg/ext/vector22.C: Comment out transformations not - performed anymore. - -2013-05-15 Richard Sandiford - - PR target/57260 - * gcc.target/mips/call-1.c: Restrict to o32. - * gcc.target/mips/call-5.c, gcc.target/mips/call-6.c: New test. - -2013-05-15 Paolo Carlini - - * g++.dg/cpp0x/lambda/lambda-shadow1.C: Replace dg-warnings with - dg-messages. - * g++.dg/warn/Wshadow-1.C: Likewise. - * g++.dg/warn/Wshadow-6.C: Likewise. - * g++.dg/warn/Wshadow-7.C: Likewise. - -2013-05-15 Paolo Carlini - - PR c++/31952 - * g++.dg/parse/pr31952-1.C: New. - * g++.dg/parse/pr31952-2.C: Likewise. - * g++.dg/parse/pr31952-3.C: Likewise. - - * g++.dg/parse/pr18770.C: Adjust dg-errors to dg-messages. - * g++.old-deja/g++.jason/cond.C: Likewise. - * g++.dg/cpp0x/range-for5.C: Likewise. - -2013-05-15 Ramana Radhakrishnan - - PR target/19599 - * gcc.target/arm/pr40887.c: Adjust testcase. - * gcc.target/arm/pr19599.c: New test. - -2013-05-15 Richard Biener - - PR tree-optimization/57275 - * gcc.target/i386/pr57275.c: New testcase. - -2013-05-15 Jan Hubicka - - * gcc.dg/lto/attr-weakref-1_0.c: New testcase. - * gcc.dg/lto/attr-weakref-1_1.c: New testcase. - * gcc.dg/lto/attr-weakref-1_2.c: New testcase. - -2013-05-14 Senthil Kumar Selvaraj - - * gcc.dg/torture/alias-1.c: Add dg-require-effective-target - scheduling. - -2013-05-14 Jakub Jelinek - - PR c++/57274 - * c-c++-common/Wsequence-point-1.c: New test. - -2013-05-14 Marc Glisse - - * g++.dg/ext/vector22.C: New testcase. - * gcc.dg/binop-xor3.c: Remove xfail. - -2013-05-14 James Greenhalgh - - * gcc.target/aarch64/vect-fcm.x: Add cases testing - FLOAT cmp FLOAT ? INT : INT. - * gcc.target/aarch64/vect-fcm-eq-d.c: Define IMODE. - * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise. - * gcc.target/aarch64/vect-fcm-ge-d.c: Likewise. - * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise. - * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise. - * gcc.target/aarch64/vect-fcm-gt-f.c: Likewise. - -2013-05-14 Paolo Carlini - - PR c++/53903 - * g++.dg/cpp0x/defaulted43.C: New. - -2013-05-14 Rainer Orth - - * gcc.dg/fstack-protector-strong.c: Don't include . - (alloca): Remove declaration. - (foo9): Replace alloca by __builtin_alloca. - -2013-05-14 Joern Rennecke - - * gcc.c-torture/compile/limits-externdecl.c [target avr-*-*]: - Expect "size of array is too large" error. - -2013-05-14 Rainer Orth - - * gcc.dg/fstack-protector-strong.c (alloca): Declare. - -2013-05-14 Richard Biener - - PR middle-end/57235 - * g++.dg/torture/pr57235.C: New testcase. - -2013-05-14 Jakub Jelinek - - PR middle-end/57251 - * gcc.dg/torture/pr57251.c: New test. - -2013-05-13 Uros Bizjak - - PR target/57264 - * gcc.target/i386/pr57264.c: New test. - -2013-05-13 Jakub Jelinek - - * gcc.dg/vector-shift-2.c: Add -O to dg-options. - -2013-05-13 Greta Yorsh - - * gcc.dg/tree-ssa/forwprop-26.c: Add -fno-short-enums to dg-options. - -2013-05-13 Jakub Jelinek - - PR tree-optimization/45216 - PR tree-optimization/57157 - * c-c++-common/rotate-1.c: Add 32 tests with +. - * c-c++-common/rotate-1a.c: Adjust. - * c-c++-common/rotate-2.c: Add 32 tests with +, expect only 48 rotates. - * c-c++-common/rotate-2b.c: New test. - * c-c++-common/rotate-3.c: Add 32 tests with +. - * c-c++-common/rotate-4.c: Add 32 tests with +, expect only 48 rotates. - * c-c++-common/rotate-4b.c: New test. - * c-c++-common/rotate-5.c: New test. - -2013-05-13 Martin Jambor - - PR middle-end/42371 - * gcc.dg/ipa/remref-0.c: New test. - * gcc.dg/ipa/remref-1a.c: Likewise. - * gcc.dg/ipa/remref-1b.c: Likewise. - * gcc.dg/ipa/remref-2a.c: Likewise. - * gcc.dg/ipa/remref-2b.c: Likewise. - -2013-05-13 Marc Glisse - - * gcc.dg/vector-shift-2.c: New testcase. - -2013-05-13 Jakub Jelinek - - PR tree-optimization/57230 - * gcc.dg/strlenopt-24.c: New test. - - PR tree-optimization/57230 - * gcc.dg/strlenopt-23.c: New test. - -2013-05-12 Oleg Endo - - PR target/57108 - * gcc.target/sh/pr57108.c: Move this test case to ... - * gcc.c-torture/compile/pr57108.c: ... here. - -2013-05-10 Richard Biener - - PR tree-optimization/57214 - * gcc.dg/torture/pr57214.c: New testcase. - -2013-05-10 Marc Glisse - - * gcc.dg/vector-shift.c: New testcase. - -2013-05-10 Jakub Jelinek - - * gcc.target/i386/rotate-1.c: Accept rolb or rorb instruction. - - PR tree-optimization/45216 - PR tree-optimization/57157 - * c-c++-common/rotate-1.c: New test. - * c-c++-common/rotate-1a.c: New test. - * c-c++-common/rotate-2.c: New test. - * c-c++-common/rotate-2a.c: New test. - * c-c++-common/rotate-3.c: New test. - * c-c++-common/rotate-3a.c: New test. - * c-c++-common/rotate-4.c: New test. - * c-c++-common/rotate-4a.c: New test. - -2013-05-10 Richard Biener - - * gcc.target/i386/avx256-unaligned-load-2.c: Make well-defined. - * gcc.target/i386/l_fma_double_1.c: Adjust. - * gcc.target/i386/l_fma_double_2.c: Likewise. - * gcc.target/i386/l_fma_double_3.c: Likewise. - * gcc.target/i386/l_fma_double_4.c: Likewise. - * gcc.target/i386/l_fma_double_5.c: Likewise. - * gcc.target/i386/l_fma_double_6.c: Likewise. - * gcc.target/i386/l_fma_float_1.c: Likewise. - * gcc.target/i386/l_fma_float_2.c: Likewise. - * gcc.target/i386/l_fma_float_3.c: Likewise. - * gcc.target/i386/l_fma_float_4.c: Likewise. - * gcc.target/i386/l_fma_float_5.c: Likewise. - * gcc.target/i386/l_fma_float_6.c: Likewise. - -2013-05-08 Paolo Carlini - - PR c++/51226 - * g++.dg/cpp0x/pr51226.C: New. - -2013-04-16 Han Shen - - Test cases for '-fstack-protector-strong'. - * gcc.dg/fstack-protector-strong.c: New. - * g++.dg/fstack-protector-strong.C: New. - -2013-05-07 Ian Bolton - - * gcc.target/aarch64/ands_1.c: New test. - * gcc.target/aarch64/ands_2.c: Likewise - -2013-05-07 Christophe Lyon - - * lib/target-supports.exp (check_effective_target_hw): New - function. - * c-c++-common/asan/clone-test-1.c: Call - check_effective_target_hw. - * c-c++-common/asan/rlimit-mmap-test-1.c: Likewise. - * c-c++-common/asan/heap-overflow-1.c: Update regexps to accept - possible decorations. - * c-c++-common/asan/null-deref-1.c: Likewise. - * c-c++-common/asan/stack-overflow-1.c: Likewise. - * c-c++-common/asan/strncpy-overflow-1.c: Likewise. - * c-c++-common/asan/use-after-free-1.c: Likewise. - * g++.dg/asan/deep-thread-stack-1.C: Likewise. - * g++.dg/asan/large-func-test-1.C: Likewise. - -2013-05-07 Sofiane Naci - - * gcc.target/aarch64/scalar_intrinsics.c: Update. - -2013-05-07 Richard Biener - - PR middle-end/57190 - * g++.dg/torture/pr57190.C: New testcase. - -2013-05-07 Jakub Jelinek - - PR tree-optimization/57149 - * gcc.dg/pr57149.c: New test. - - PR debug/57184 - * gcc.dg/pr57184.c: New test. - -2013-05-07 Eric Botcazou - - * gnat.dg/specs/array3.ads: New test. - -2013-05-06 Marc Glisse - - * c-c++-common/vector-scalar-2.c: New testcase. - -2013-05-06 Maxim Kuznetsov - - * gcc.target/i386/asm-dialect-2.c: New testcase. - -2013-05-06 Paolo Carlini - - PR c++/57183 - * g++.dg/cpp0x/auto38.C: New. - -2013-05-06 Richard Biener - - PR tree-optimization/57185 - * gcc.dg/autopar/pr57185.c: New testcase. - -2013-05-06 Uros Bizjak - - PR target/57106 - * gcc.target/i386/pr57106.c: New test. - -2013-05-06 Bill Schmidt - - * gcc.dg/tree-ssa/slsr-32.c: Re-enable. - * gcc.dg/tree-ssa/slsr-33.c: Likewise. - * gcc.dg/tree-ssa/slsr-34.c: Likewise. - * gcc.dg/tree-ssa/slsr-35.c: Likewise. - * gcc.dg/tree-ssa/slsr-36.c: Likewise. - * gcc.dg/tree-ssa/slsr-37.c: Likewise. - * gcc.dg/tree-ssa/slsr-38.c: Likewise. - -2013-05-06 Teresa Johnson - - PR bootstrap/57154 - * gcc.dg/pr57154.c: New test. - -2013-05-06 Richard Biener - - PR middle-end/57147 - * gcc.dg/torture/pr57147-1.c: New testcase. - * gcc.dg/torture/pr57147-2.c: Likewise. - * gcc.dg/torture/pr57147-3.c: Likewise. - -2013-05-06 Oleg Endo - - PR target/55303 - * gcc.target/sh/pr55303-1.c: New. - * gcc.target/sh/pr55303-2.c: New. - * gcc.target/sh/pr55303-3.c: New. - -2013-05-05 Tobias Burnus - - * gfortran.dg/allocate_with_source_3.f90: New. - -2013-05-05 Tobias Burnus - - PR fortran/57141 - * gfortran.dg/null_8.f90: New. - -2013-05-04 Paolo Carlini - - PR c++/53745 - * g++.dg/cpp0x/enum27.C: New. - * g++.dg/cpp0x/enum_base.C: Adjust. - -2013-05-04 Jakub Jelinek - - PR tree-optimization/56205 - * gcc.dg/tree-ssa/stdarg-6.c: Add cleanup-tree-dump "stdarg". - -2013-05-04 Tobias Burnus - - * gfortran.dg/bind_c_array_params.f03: Update dg-error. - * gfortran.dg/bind_c_usage_27.f90: New. - * gfortran.dg/bind_c_usage_28.f90: New. - -2013-05-04 Paolo Carlini - - PR c++/51927 - * g++.dg/cpp0x/lambda/lambda-nsdmi4.C: New. - -2013-05-03 Michael Meissner - - PR target/57150 - * gcc.target/powerpc/pr57150.c: New file. - -2013-05-03 Bill Schmidt - - * gcc.dg/tree-ssa/slsr-32.c: Skip test for now. - * gcc.dg/tree-ssa/slsr-33.c: Likewise. - * gcc.dg/tree-ssa/slsr-34.c: Likewise. - * gcc.dg/tree-ssa/slsr-35.c: Likewise. - * gcc.dg/tree-ssa/slsr-36.c: Likewise. - * gcc.dg/tree-ssa/slsr-37.c: Likewise. - * gcc.dg/tree-ssa/slsr-38.c: Likewise. - -2013-05-03 Dominique d'Humieres - - * gcc.target/i386/sse2-init-v2di-2.c: Remove "\\" from - scan-assembler-times. - -2013-05-03 Bill Schmidt - - * gcc.dg/tree-ssa/slsr-32.c: New. - * gcc.dg/tree-ssa/slsr-33.c: New. - * gcc.dg/tree-ssa/slsr-34.c: New. - * gcc.dg/tree-ssa/slsr-35.c: New. - * gcc.dg/tree-ssa/slsr-36.c: New. - * gcc.dg/tree-ssa/slsr-37.c: New. - * gcc.dg/tree-ssa/slsr-38.c: New. - -2013-05-03 Ian Bolton - - * gcc.target/aarch64/tst_1.c: New test. - * gcc.target/aarch64/tst_2.c: Likewise - -2013-05-02 Jeff Law - - PR tree-optimization/57144 - * gcc.c-torture/execute/pr57144.c: New test. - -2013-05-03 Jakub Jelinek - - PR rtl-optimization/57130 - * gcc.c-torture/execute/pr57130.c: New test. - -2013-05-03 Uros Bizjak - - * gcc.target/i386/sse2-init-v2di-2.c: Update scan assembler string. - -2013-05-03 Vidya Praveen - - * gcc.target/aarch64/fabd.c: New file. - -2013-05-03 Paolo Carlini - - PR c++/54318 - * g++.dg/cpp0x/pr54318.C: New. - -2013-05-03 Paolo Carlini - - PR c++/14283 - * g++.dg/parse/error51.C: New. - * g++.dg/parse/error15.C: Adjust column numbers. - -2013-05-02 Tobias Burnus - - PR fortran/57142 - * gfortran.dg/size_kind_2.f90: New. - * gfortran.dg/size_kind_3.f90: New. - -2013-05-02 Richard Biener - - PR middle-end/57140 - * g++.dg/torture/pr57140.C: New testcase. - -2013-05-02 Greta Yorsh - - PR target/56732 - * gcc.target/arm/pr56732-1.c: New test. - -2013-05-02 Martin Jambor - - PR middle-end/56988 - * gcc.dg/ipa/pr56988.c: New test. - -2013-05-02 Ian Bolton - - * gcc.target/aarch64/bics_1.c: New test. - * gcc.target/aarch64/bics_2.c: Likewise. - -2013-05-02 Jakub Jelinek - - PR rtl-optimization/57131 - * gcc.c-torture/execute/pr57131.c: New test. - -2013-05-01 Paolo Carlini - - PR c++/57132 - * g++.dg/warn/Wdiv-by-zero-bogus-2.C: New. - -2013-05-01 Vladimir Makarov - - PR target/57091 - * gcc.target/i386/pr57091.c: New test. - -2013-05-01 James Greenhalgh - - * gcc.target/aarch64/vect-vaddv.c: New. - -2013-05-01 James Greenhalgh - - * gcc.target/aarch64/vect-vmaxv.c: New. - * gcc.target/aarch64/vect-vfmaxv.c: Likewise. - -2013-05-01 James Greenhalgh - - * gcc.target/aarch64/scalar-vca.c: New. - * gcc.target/aarch64/vect-vca.c: Likewise. - -2013-05-01 James Greenhalgh - - * gcc.target/aarch64/scalar_intrinsics.c (force_simd): New. - (test_vceqd_s64): Force arguments to SIMD registers. - (test_vceqzd_s64): Likewise. - (test_vcged_s64): Likewise. - (test_vcled_s64): Likewise. - (test_vcgezd_s64): Likewise. - (test_vcged_u64): Likewise. - (test_vcgtd_s64): Likewise. - (test_vcltd_s64): Likewise. - (test_vcgtzd_s64): Likewise. - (test_vcgtd_u64): Likewise. - (test_vclezd_s64): Likewise. - (test_vcltzd_s64): Likewise. - (test_vtst_s64): Likewise. - (test_vtst_u64): Likewise. - -2013-05-01 Paolo Carlini - - PR c++/57092 - * g++.dg/cpp0x/decltype53.C: New. - -2013-04-30 Thomas Koenig - - PR fortran/57071 - * gfortran.dg/power_5.f90: New test. - -2013-04-30 Richard Biener - - PR middle-end/57122 - * gcc.dg/torture/pr57122.c: New testcase. - -2013-04-30 Richard Biener - - PR middle-end/57107 - * g++.dg/torture/pr57107.C: New testcase. - -2013-04-30 Andrey Belevantsev - - PR rtl-optimization/57105 - * gcc.dg/pr57105.c: New test. - -2013-04-30 Jakub Jelinek - - PR tree-optimization/57104 - * gcc.dg/pr57104.c: New test. - -2013-04-29 Uros Bizjak - - PR target/44578 - * gcc.target/i386/pr44578.c: New test. - -2013-04-29 Vladimir Makarov - - PR target/57097 - * gcc.target/i386/pr57097.c: New test. - -2013-04-29 Uros Bizjak - - PR target/57098 - * gcc.target/i386/pr57098.c: New test. - -2013-04-29 Kai Tietz - - * gcc.c-torture/execute/pr55875.c: New test. - -2013-04-29 Richard Biener - - PR middle-end/57075 - * gcc.dg/torture/pr57075.c: New testcase. - -2013-04-29 Richard Biener - - PR middle-end/57103 - * gcc.dg/autopar/pr57103.c: New testcase. - -2013-04-29 Senthil Kumar Selvaraj - - * gcc.dg/c1x-align-3.c: Add test for negative power of 2. - -2013-04-29 Tom de Vries - - * gcc.dg/pr50763.c: Update test. - -2013-04-26 Jeff Law - - * gcc.dg/tree-ssa/vrp88.c: New test. - -2013-04-29 Christian Bruel - - PR target/57108 - * gcc.target/sh/pr57108.c: New test. - -2013-04-29 Richard Biener - - PR middle-end/57089 - * gfortran.dg/gomp/pr57089.f90: New testcase. - -2013-04-29 James Greenhalgh - - * lib/target-supports.exp (vect_uintfloat_cvt): Enable for AArch64. - -2013-04-29 James Greenhalgh - - * gcc.target/aarch64/vect-vcvt.c: New. - -2013-04-29 James Greenhalgh - - * gcc.target/aarch64/vect-vrnd.c: New. - -2013-04-29 Richard Biener - - PR tree-optimization/57081 - * gcc.dg/torture/pr57081.c: New testcase. - -2013-04-29 Jakub Jelinek - - PR tree-optimization/57083 - * gcc.dg/torture/pr57083.c: New test. - -2013-04-28 Paolo Carlini - - PR c++/56450 - * g++.dg/cpp0x/decltype52.C: New. - -2013-04-28 Jakub Jelinek - - N3472 binary constants - * g++.dg/cpp/limits.C: Adjust warning wording. - * g++.dg/system-binary-constants-1.C: Likewise. - * g++.dg/cpp1y/system-binary-constants-1.C: New test. - -2013-04-28 Tobias Burnus - - PR fortran/57093 - * gfortran.dg/coarray_30.f90: New. - -2013-04-28 Thomas Koenig - - PR fortran/57071 - * frontend-passes (optimize_power): New function. - (optimize_op): Use it. - -2013-04-27 Jakub Jelinek - - PR target/56866 - * gcc.c-torture/execute/pr56866.c: New test. - * gcc.target/i386/pr56866.c: New test. - -2013-04-26 Jakub Jelinek - - PR go/57045 - * gcc.dg/setjmp-5.c: New test. - -2013-04-26 Paolo Carlini - - PR c++/55708 - * g++.dg/cpp0x/constexpr-55708.C: New. - -2013-04-26 Richard Biener - - * gcc.dg/tree-prof/update-loopch.c: Revert last change. - * gcc.dg/graphite/pr33766.c: Fix undefined behavior. - * gcc.dg/pr53265.c: Remove XFAILs. - * gcc.dg/tree-ssa/loop-38.c: Remove unreliable dump scanning. - * gcc.dg/tree-ssa/pr21559.c: Change back to two expected jump threads. - -2013-04-26 Jakub Jelinek - - * lib/prune.exp: Add -fdiagnostics-color=never to TEST_ALWAYS_FLAGS. - * lib/c-compat.exp (compat-use-alt-compiler, compat_setup_dfp): Handle - -fdiagnostics-color=never option similarly to - -fno-diagnostics-show-caret option. - -2013-04-25 Jakub Jelinek - - PR rtl-optimization/57003 - * gcc.target/i386/pr57003.c: New test. - -2013-04-25 Marek Polacek - - PR tree-optimization/57066 - * gcc.dg/torture/builtin-logb-1.c: Adjust testcase. - -2013-04-25 James Greenhalgh - Tejas Belagod - - * gcc.target/aarch64/vaddv-intrinsic.c: New. - * gcc.target/aarch64/vaddv-intrinsic-compile.c: Likewise. - * gcc.target/aarch64/vaddv-intrinsic.x: Likewise. - -2013-04-25 Naveen H.S - - * gcc.target/aarch64/cmp.c: New. - -2013-04-25 Naveen H.S - - * gcc.target/aarch64/ngc.c: New. - -2013-04-25 Kyrylo Tkachov - - * lib/target-supports.exp - (check_effective_target_arm_neon_fp16_ok_nocache): New procedure. - (check_effective_target_arm_neon_fp16_ok): Likewise. - (add_options_for_arm_neon_fp16): Likewise. - * gcc.target/arm/neon/vcvtf16_f32.c: New test. Generated. - * gcc.target/arm/neon/vcvtf32_f16.c: Likewise. - -2013-04-24 Vladimir Makarov - - PR rtl-optimizations/57046 - * gcc.target/i386/pr57046.c: New test. - -2013-04-24 Paolo Carlini - - * g++.dg/cpp1y/cplusplus.C: New. - -2013-04-24 Paolo Carlini - - * g++.dg/cpp1y/cxx1y_macro.C: Remove. - -2013-04-24 Paolo Carlini - - * c-c++-common/Wpointer-arith-1.c: New. - -2013-04-24 Paolo Carlini - - * g++.dg/cpp1y/cxx1y_macro.C: New. - -2013-04-24 Paolo Carlini - - PR c++/56970 - * g++.dg/cpp0x/sfinae45.C: New. - -2013-04-24 Richard Biener - - PR testsuite/57050 - * gcc.c-torture/execute/pr56982.c: Avoid sigjmp_buf use. - -2013-04-23 Richard Biener - - PR middle-end/57036 - * gcc.dg/torture/pr57036-1.c: New testcase. - * gcc.dg/torture/pr57036-2.c: Likewise. - -2013-04-23 Sofiane Naci - - * gcc.target/aarch64/scalar-mov.c: New testcase. - -2013-04-23 Richard Biener - - PR tree-optimization/57026 - * gcc.dg/torture/pr57026.c: New testcase. - -2013-04-22 Janus Weil - - PR fortran/53685 - PR fortran/57022 - * gfortran.dg/transfer_check_4.f90: New. - -2013-04-22 Marek Polacek - - PR sanitizer/56990 - * gcc.dg/pr56990.c: New test. - -2013-04-22 Vladimir Makarov - - PR target/57018 - * gcc.target/i386/pr57018.c: New test. - -2013-04-22 James Greenhalgh - - * gcc.target/aarch64/vrecps.c: New. - * gcc.target/aarch64/vrecpx.c: Likewise. - -2013-04-22 Christian Bruel - - PR target/56995 - * gcc.target/sh/mfmovd.c: Add new function and check hard_float. - -2013-04-21 Jeff Law - - * gcc.dg/tree-ssa/forwprop-26.c: New test. - -2013-04-20 Tobias Burnus - - PR fortran/56907 - * gfortran.dg/c_loc_test_22.f90: New. - -2013-04-19 Vladimir Makarov - - PR rtl-optimization/56847 - * gcc.dg/pr56847.c: New test. - -2013-04-19 Richard Biener - - PR tree-optimization/56982 - * gcc.c-torture/execute/pr56982.c: New testcase. - -2013-04-19 Martin Jambor - - PR tree-optimization/56718 - * g++.dg/ipa/imm-devirt-1.C: New test. - * g++.dg/ipa/imm-devirt-2.C: Likewise. - -2013-04-19 Richard Biener - - PR tree-optimization/57000 - * gcc.dg/tree-ssa/reassoc-27.c: New testcase. - -2013-04-19 Thomas Koenig - Mikael Morin - - PR fortran/56872 - * gfortran.dg/array_constructor_45.f90: New test. - * gfortran.dg/array_constructor_46.f90: New test. - * gfortran.dg/array_constructor_47.f90: New test. - * gfortran.dg/array_constructor_40.f90: Adjust number of while loops. - -2013-04-18 Jakub Jelinek - - PR rtl-optimization/56999 - * g++.dg/opt/pr56999.C: New test. - -2013-04-18 Cary Coutant - - * g++.dg/debug/dwarf2/pubnames-2.C: Add -fno-debug-types-section. - * g++.dg/debug/dwarf2/pubnames-3.C: New test case. - -2013-04-18 Cary Coutant - - * g++.dg/debug/dwarf2/typedef2.C: Add -fno-debug-types-section flag. - * g++.dg/debug/dwarf2/typedef4.C: Likewise. - * g++.dg/debug/dwarf2/static-data-member1.C: Likewise. - * g++.dg/debug/dwarf2/global-used-types-1.C: Likewise. - * g++.dg/debug/dwarf2/self-ref-1.C: Likewise. - * g++.dg/debug/dwarf2/nested-2.C: Likewise. - * g++.dg/debug/dwarf2/typedef1.C: Likewise. - * g++.dg/debug/dwarf2/namespace-2.C: Likewise. - * g++.dg/debug/dwarf2/integer-typedef.C: Likewise. - * g++.dg/debug/dwarf2/self-ref-2.C: Likewise. - * g++.dg/debug/dwarf2/explicit-constructor.C: Likewise. - -2013-04-18 Grigoriy Kraynov - - * gcc.target/i386/avx2-vpop-check.h: Cast away volatility in memcmp(). - -2013-04-18 Jakub Jelinek - - PR tree-optimization/56984 - * gcc.c-torture/compile/pr56984.c: New test. - - PR rtl-optimization/56992 - * gcc.dg/pr56992.c: New test. - -2013-04-17 Janus Weil - - PR fortran/56814 - * gfortran.dg/proc_ptr_42.f90: New. - -2013-04-17 Eric Botcazou - - * gnat.dg/discr41.ad[sb]: New test. - * gcc.dg/tree-ssa/ssa-fre-38.c: Likewise. - * gcc.dg/vect/slp-24-big-array.c: Beef up anti-vectorization trick. - * gcc.dg/vect/slp-24.c: Likewise. - * gcc.dg/vect/vect-strided-a-mult.c: Likewise. - * gcc.dg/vect/vect-strided-a-u16-i2.c: Likewise. - * gcc.dg/vect/vect-strided-a-u16-i4.c: Likewise. - * gcc.dg/vect/vect-strided-a-u16-mult.c: Likewise. - * gcc.dg/vect/vect-strided-a-u8-i2-gap.c: Likewise. - * gcc.dg/vect/vect-strided-a-u8-i8-gap2-big-array.c: Likewise. - * gcc.dg/vect/vect-strided-a-u8-i8-gap2.c: Likewise. - * gcc.dg/vect/vect-strided-a-u8-i8-gap7-big-array.c: Likewise. - * gcc.dg/vect/vect-strided-a-u8-i8-gap7.c: Likewise. - * gcc.dg/vect/vect-strided-mult-char-ls.c: Likewise. - * gcc.dg/vect/vect-strided-mult.c: Likewise. - * gcc.dg/vect/vect-strided-same-dr.c: Likewise. - * gcc.dg/vect/vect-strided-u16-i2.c: Likewise. - * gcc.dg/vect/vect-strided-u16-i4.c: Likewise. - * gcc.dg/vect/vect-strided-u32-i4.c: Likewise. - * gcc.dg/vect/vect-strided-u32-i8.c: Likewise. - * gcc.dg/vect/vect-strided-u8-i2-gap.c: Likewise. - * gcc.dg/vect/vect-strided-u8-i2.c: Likewise. - * gcc.dg/vect/vect-strided-u8-i8-gap2-big-array.c: Likewise. - * gcc.dg/vect/vect-strided-u8-i8-gap2.c: Likewise. - * gcc.dg/vect/vect-strided-u8-i8-gap4-big-array.c: Likewise. - * gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c: Likewise. - * gcc.dg/vect/vect-strided-u8-i8-gap4.c: Likewise. - * gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c: Likewise. - * gcc.dg/vect/vect-strided-u8-i8-gap7.c: Likewise. - * gcc.dg/vect/vect-strided-u8-i8.c: Likewise. - -2013-04-17 Janne Blomqvist - - PR fortran/40958 - * lib/gcc-dg.exp (scan-module): Uncompress module file before scanning. - * gfortran.dg/module_md5_1.f90: Remove. - -2013-04-16 Naveen H.S - - * gcc.target/aarch64/adds3.c: New. - * gcc.target/aarch64/subs3.c: New. - -2013-04-16 Naveen H.S - - * gcc.target/aarch64/adds1.c: New. - * gcc.target/aarch64/adds2.c: New. - * gcc.target/aarch64/subs1.c: New. - * gcc.target/aarch64/subs2.c: New. - -2013-04-16 Ed Smith-Rowland <3dw4rd@verizon.net> - - Implement n3599 - Literal operator templates for strings. - * g++.dg/cpp1y/udlit-char-template.C: New test. - * g++.dg/cpp1y/udlit-char-template-neg.C: New test. - -2013-04-16 Tobias Burnus - - PR fortran/39505 - * gfortran.dg/no_arg_check_1.f90: New. - * gfortran.dg/no_arg_check_2.f90: New. - * gfortran.dg/no_arg_check_3.f90: New. - -2013-04-16 Janus Weil - - PR fortran/56968 - * gfortran.dg/proc_ptr_41.f90: New. - -2013-04-16 Richard Biener - - PR tree-optimization/56756 - * gcc.dg/torture/pr56756.c: New testcase. - -2013-04-16 Tobias Burnus - - PR fortran/56969 - * gfortran.dg/c_assoc_5.f90: New. - -2013-04-16 Uros Bizjak - - * g++.dg/ipa/devirt-c-7.C: Require nonpic effective target. - * gcc.c-torture/execute/pr33992.x: Remove. - * gcc.c-torture/execute/pr33992.c (foo): Declare as static. - * gcc.dg/uninit-pred-5_a.c (foo): Ditto. - * gcc.dg/uninit-pred-5_b.c (foo): Ditto. - -2013-04-15 Jakub Jelinek - - PR tree-optimization/56962 - * gcc.c-torture/execute/pr56962.c: New test. - -2013-04-15 Richard Biener - - PR tree-optimization/56933 - * gcc.dg/vect/pr56933.c: New testcase. - -2013-04-15 Kyrylo Tkachov - - * gcc.target/arm/anddi3-opt.c: New test. - * gcc.target/arm/anddi3-opt2.c: Likewise. - -2013-04-15 Eric Botcazou - - * gcc.dg/pr56890-1.c: New test. - * gcc.dg/pr56890-2.c: Likewise. - -2013-04-15 Joey Ye - - * gcc.target/arm/thumb1-far-jump-1.c: New test. - * gcc.target/arm/thumb1-far-jump-2.c: New test. - -2013-04-14 Mikael Morin - - PR fortran/56816 - * gfortran.dg/select_type_33.f03: New test. - -2013-04-13 Janus Weil - - PR fortran/55959 - * gfortran.dg/typebound_proc_29.f03: New. - -2013-04-12 Janus Weil - - PR fortran/56266 - * gfortran.dg/typebound_proc_28.f03: New. - -2013-04-12 Jeff Law - - * gcc.dg/tree-ssa/vrp87.c: Do not run test on ppc and xtensa - either. - -2013-04-12 Tobias Burnus - - PR fortran/56929 - * gfortran.dg/coarray/alloc_comp_2.f90: New. - -2013-04-12 Vladimir Makarov - - PR target/56903 - * gcc.target/i386/pr56903.c: New test. - -2013-04-12 Janus Weil - - PR fortran/56261 - * gfortran.dg/auto_char_len_4.f90: Add -pedantic. Changed error. - * gfortran.dg/assumed_rank_4.f90: Modified error wording. - * gfortran.dg/block_11.f90: Fix invalid test case. - * gfortran.dg/function_types_3.f90: Add new error message. - * gfortran.dg/global_references_1.f90: Ditto. - * gfortran.dg/import2.f90: Remove unneeded parts. - * gfortran.dg/import6.f90: Fix invalid test case. - * gfortran.dg/proc_decl_2.f90: Ditto. - * gfortran.dg/proc_decl_9.f90: Ditto. - * gfortran.dg/proc_decl_18.f90: Ditto. - * gfortran.dg/proc_ptr_40.f90: New. - * gfortran.dg/whole_file_7.f90: Modified error wording. - * gfortran.dg/whole_file_16.f90: Ditto. - * gfortran.dg/whole_file_17.f90: Add -pedantic. - * gfortran.dg/whole_file_18.f90: Modified error wording. - * gfortran.dg/whole_file_20.f03: Ditto. - * gfortran.fortran-torture/execute/intrinsic_associated.f90: Fix - invalid test case. - -2013-04-12 Richard Biener - - Revert - 2013-04-10 Richard Biener - - * g++.dg/pr55604.C: Use -fdump-rtl-ira. - -2013-04-12 Tobias Burnus - - PR fortran/56845 - * gfortran.dg/class_allocate_15.f90: New. - - Revert: - 2013-04-12 Tobias Burnus - - * gfortran.dg/coarray_lib_alloc_2.f90: Update - scan-tree-dump-times. - -2013-04-12 Jakub Jelinek - - PR tree-optimization/56918 - PR tree-optimization/56920 - * gcc.dg/vect/pr56918.c: New test. - * gcc.dg/vect/pr56920.c: New test. - -2013-04-12 Tobias Burnus - - PR fortran/56845 - * gfortran.dg/class_allocate_14.f90: New. - * gfortran.dg/coarray_lib_alloc_2.f90: Update scan-tree-dump-times. - * gfortran.dg/coarray_lib_alloc_3.f90: New. - -2013-04-12 Marc Glisse - - * gcc.dg/fold-cstvecshift.c: New testcase. - -2013-04-11 Naveen H.S - - * gcc.target/aarch64/negs.c: New. - -2013-04-11 Jakub Jelinek - - PR c++/56895 - * g++.dg/template/arrow4.C: New test. - -2013-04-11 Eric Botcazou - - * gnat.dg/array23.adb: New test. - * gnat.dg/array23_pkg[123].ads: New helpers. - -2013-04-11 Jeff Law - - PR tree-optimization/56900 - * gcc.dg/tree-ssa/vrp87.c: Do not run test on various targets. - -2013-04-11 Paolo Carlini - - PR c++/56913 - * g++.dg/cpp0x/sfinae44.C: New. - -2013-04-11 Arnaud Charlet - - * ada/acats/run_all.sh: Remove special handling of -gnat95 switch. - * ada/acats/ada95.lst: Remove special handling of -gnat95 switch. - -2013-04-11 Paolo Carlini - - PR c++/54216 - * g++.dg/cpp0x/enum26.C: New. - * g++.old-deja/g++.pt/mangle1.C: Adjust. - -2013-04-11 James Greenhalgh - - * gcc.target/aarch64/vect-fcm.x: Add check for zero forms of - inverse operands. - * gcc.target/aarch64/vect-fcm-eq-d.c: Check that new zero form - loop is vectorized. - * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise. - * gcc.target/aarch64/vect-fcm-ge-d.c: Check that new zero form - loop is vectorized and that the correct instruction is generated. - * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise. - * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise. - * gcc.target/aarch64/vect-fcm-gt-f.c: Likewise. - -2013-04-11 Jakub Jelinek - - PR tree-optimization/56899 - * gcc.c-torture/execute/pr56899.c: New test. - -2013-04-10 David S. Miller - - * gcc.target/sparc/setcc-4.c: New test. - * gcc.target/sparc/setcc-5.c: New test. - -2013-04-10 Richard Biener - - * g++.dg/pr55604.C: Use -fdump-rtl-ira. - -2013-04-10 Richard Biener - - * gcc.dg/vect/slp-39.c: New testcase. - -2013-04-10 Joern Rennecke - - PR tree-optimization/55524 - * gcc.target/epiphany/fnma-1.c: New test. - -2013-04-10 Zhouyi Zhou - - * gcc.dg/tree-ssa/inline-11.c: New test - -2013-04-10 Jakub Jelinek - - PR c++/56895 - * g++.dg/template/arrow3.C: New test. - -2013-04-09 Kyrylo Tkachov - - * gcc.target/arm/minmax_minus.c: New test. - -2013-04-09 Jakub Jelinek - - PR middle-end/56883 - * c-c++-common/gomp/pr56883.c: New test. - -2013-04-09 Jeff Law - - * gcc.dg/tree-ssa/vrp87.c: New test. - -2013-04-09 Jakub Jelinek - - PR tree-optimization/56854 - * g++.dg/torture/pr56854.C: New test. - -2013-04-08 Thomas Koenig - - PR fortran/56782 - * gfortran.dg/array_constructor_44.f90: New test. - -2013-04-08 Paolo Carlini - - PR c++/56871 - * g++.dg/cpp0x/constexpr-specialization.C: New. - -2013-04-08 Jakub Jelinek - - * gcc.c-torture/execute/pr56837.c: New test. - - PR c++/34949 - PR c++/50243 - * g++.dg/opt/vt3.C: New test. - * g++.dg/opt/vt4.C: New test. - -2013-04-08 Jeff Law - - * gcc.dg/tree-ssa/forwprop-25.c: New test. - -2013-04-08 Richard Biener - - * gfortran.dg/vect/fast-math-mgrid-resid.f: Adjust. - -2013-04-08 Richard Biener - - * gfortran.dg/vect/fast-math-pr37021.f90: Adjust. - -2013-04-08 Richard Biener - - * g++.dg/vect/slp-pr56812.cc: Adjust. - -2013-04-08 Jakub Jelinek - - * gcc.dg/pr56837.c: New test. - * gcc.dg/tree-ssa/ldist-19.c: Don't check for - "generated memset minus one". - -2013-04-07 Tobias Burnus - - PR fortran/56849 - * gfortran.dg/reshape_5.f90: New. - -2013-04-05 Bill Schmidt - - PR target/56843 - * gcc.target/powerpc/recip-1.c: Modify expected output. - * gcc.target/powerpc/recip-3.c: Likewise. - * gcc.target/powerpc/recip-4.c: Likewise. - * gcc.target/powerpc/recip-5.c: Add expected output for iterations. - -2013-04-05 Greta Yorsh - - * gcc.target/arm/peep-ldrd-1.c: New test. - * gcc.target/arm/peep-strd-1.c: Likewise. - -2013-04-05 Greta Yorsh - - * gcc.target/arm/negdi-1.c: New test. - * gcc.target/arm/negdi-2.c: Likewise. - * gcc.target/arm/negdi-3.c: Likewise. - * gcc.target/arm/negdi-4.c: Likewise. - -2013-04-05 Kyrylo Tkachov - - * lib/target-supports.exp (add_options_for_arm_v8_neon): - Add -march=armv8-a when we use v8 NEON. - (check_effective_target_vect_call_btruncf): Remove arm-*-*-*. - (check_effective_target_vect_call_ceilf): Likewise. - (check_effective_target_vect_call_floorf): Likewise. - (check_effective_target_vect_call_roundf): Likewise. - (check_vect_support_and_set_flags): Remove check for arm_v8_neon. - * gcc.target/arm/vect-rounding-btruncf.c: New testcase. - * gcc.target/arm/vect-rounding-ceilf.c: Likewise. - * gcc.target/arm/vect-rounding-floorf.c: Likewise. - * gcc.target/arm/vect-rounding-roundf.c: Likewise. - -2013-04-05 David Edelsohn - - * gcc.target/powerpc/sd-vsx.c: Skip on AIX. - * gcc.target/powerpc/sd-pwr6.c: Same. - * gcc.dg/stack-usage-1.c: Define SIZE on AIX. - * g++.dg/debug/pr56294.C: XFAIL on AIX. - -2013-04-05 Ed Smith-Rowland <3dw4rd@verizon.net> - - * g++.dg/cpp0x/ref-qual-multi-neg.C: New test. - -2013-04-04 Janus Weil - - PR fortran/40881 - * gfortran.dg/altreturn_1.f90: Add -std=gnu. - * gfortran.dg/altreturn_4.f90: Ditto. - * gfortran.dg/altreturn_3.f90: Replace -std=legacy by -std=gnu. - * gfortran.dg/altreturn_5.f90: Ditto. - * gfortran.dg/altreturn_6.f90: Ditto. - * gfortran.dg/altreturn_7.f90: Ditto. - -2013-04-04 Kyrylo Tkachov - - * lib/target-supports.exp (check_effective_target_arm_v8_neon_hw): - New procedure. - (check_effective_target_arm_v8_neon_ok_nocache): - Likewise. - (check_effective_target_arm_v8_neon_ok): Change to use - check_effective_target_arm_v8_neon_ok_nocache. - (add_options_for_arm_v8_neon): Use et_arm_v8_neon_flags to set ARMv8 - NEON flags. - (check_effective_target_vect_call_btruncf): - Enable for arm and ARMv8 NEON. - (check_effective_target_vect_call_ceilf): Likewise. - (check_effective_target_vect_call_floorf): Likewise. - (check_effective_target_vect_call_roundf): Likewise. - (check_vect_support_and_set_flags): Handle ARMv8 NEON effective - target. - -2013-04-04 Marek Polacek - - PR tree-optimization/48186 - * gcc.dg/pr48186.c: New test. - -2013-04-04 Richard Biener - - PR tree-optimization/56826 - * gcc.dg/vect/pr56826.c: New testcase. - * gcc.dg/vect/O3-pr36098.c: Adjust. - -2013-04-04 Tejas Belagod - - * gcc.target/aarch64/inc/asm-adder-clobber-lr.c: Remove duplication. - * gcc.target/aarch64/inc/asm-adder-no-clobber-lr.c: Likewise. - * gcc.target/aarch64/test-framepointer-1.c: Likewise. - * gcc.target/aarch64/test-framepointer-2.c: Likewise. - * gcc.target/aarch64/test-framepointer-3.c: Likewise. - * gcc.target/aarch64/test-framepointer-4.c: Likewise. - * gcc.target/aarch64/test-framepointer-5.c: Likewise. - * gcc.target/aarch64/test-framepointer-6.c: Likewise. - * gcc.target/aarch64/test-framepointer-7.c: Likewise. - * gcc.target/aarch64/test-framepointer-8.c: Likewise. - -2013-04-04 Richard Biener - - PR tree-optimization/56213 - * gcc.dg/vect/vect-123.c: New testcase. - -2013-04-04 Tobias Burnus - - PR fortran/56810 - * gfortran.dg/read_repeat_2.f90: New. - -2013-04-04 Richard Biener - - PR tree-optimization/56837 - * g++.dg/torture/pr56837.C: New testcase. - -2013-04-04 Tobias Burnus - - PR fortran/50269 - * gfortran.dg/c_loc_test_21.f90: New. - * gfortran.dg/c_loc_test_19.f90: Update dg-error. - * gfortran.dg/c_loc_tests_10.f03: Update dg-error. - * gfortran.dg/c_loc_tests_11.f03: Update dg-error. - * gfortran.dg/c_loc_tests_4.f03: Update dg-error. - * gfortran.dg/c_loc_tests_16.f90: Update dg-error. - -2013-04-03 Jeff Law - - PR tree-optimization/56799 - * gcc.c-torture/execute/pr56799.c: New test. - -2013-04-03 Paolo Carlini - - PR c++/56815 - * g++.dg/warn/Wpointer-arith-1.C: New. - * g++.dg/gomp/for-19.C: Adjust. - -2013-04-03 Marek Polacek - - PR sanitizer/55702 - * gcc.dg/pr55702.c: New test. - -2013-04-03 Kyrylo Tkachov - - PR target/56809 - * gcc.dg/pr56809.c: New testcase. - -2013-04-03 Jakub Jelinek - - PR debug/56819 - * g++.dg/debug/pr56819.C: New test. - -2013-04-03 Richard Biener - - PR tree-optimization/56817 - * g++.dg/torture/pr56817.C: New testcase. - -2013-04-03 Marc Glisse - - * gcc.dg/vect/bb-slp-31.c: New file. - -2013-04-03 Jason Merrill - - PR c++/34949 - * g++.dg/tree-ssa/ehcleanup-1.C: Adjust unreachable count. - -2013-04-03 Richard Biener - - * g++.dg/vect/slp-pr56812.cc: Use dg-additional-options. - -2013-04-03 Richard Biener - - PR tree-optimization/55964 - * gcc.dg/torture/pr55964-2.c: New testcase. - -2013-04-03 Richard Biener - - PR tree-optimization/56501 - * gcc.dg/torture/pr56501.c: New testcase. - -2013-04-03 Richard Biener - - PR tree-optimization/56407 - * gcc.dg/torture/pr56407.c: New testcase. - -2013-04-03 Marc Glisse - - PR tree-optimization/56790 - * g++.dg/ext/pr56790-1.C: New testcase. - -2013-04-03 Marc Glisse - - * gcc.target/i386/merge-1.c: New testcase. - * gcc.target/i386/avx2-vpblendd128-1.c: Make it non-trivial. - -2013-04-03 Jakub Jelinek - - PR c/19449 - * gcc.c-torture/execute/pr19449.c: New test. - -2013-04-03 Richard Biener - - PR tree-optimization/56812 - * g++.dg/vect/slp-pr56812.cc: New testcase. - -2013-04-03 Janus Weil - - PR fortran/56284 - PR fortran/40881 - * gfortran.dg/altreturn_8.f90: New. - * gfortran.dg/altreturn_2.f90: Add -std=legacy. - * gfortran.dg/intrinsic_actual_3.f90: Ditto. - * gfortran.dg/invalid_interface_assignment.f90: Ditto. - -2013-04-02 Jakub Jelinek - - PR rtl-optimization/56745 - * gcc.c-torture/compile/pr56745.c: New test. - -2013-04-02 Pitchumani Sivanupandi - - * gcc.dg/tree-ssa/sra-13.c: Fix for 16 bit int. - -2013-04-02 Richard Biener - - PR tree-optimization/56778 - * gcc.dg/torture/pr56778.c: New testcase. - -2013-04-02 Richard Biener - - PR middle-end/56768 - * g++.dg/torture/pr56768.C: New testcase. - -2013-04-02 Paolo Carlini - - * obj-c++.dg/try-catch-13.mm: Update per PR56725. - -2013-04-01 Jerry DeLisle - - PR fortran/56660 - * gfortran.dg/namelist_82.f90: New test. - -2013-04-01 Janus Weil - - PR fortran/56500 - * gfortran.dg/implicit_class_1.f90: New. - -2013-03-31 Jerry DeLisle - - PR fortran/56786 - * gfortran.dg/namelist_81.f90: New test. - -2013-03-30 Thomas Koenig - - * gfortran.dg/character_comparison_3.f90: Adjust for use of memcmp - for constant and equal string lengths. - * gfortran.dg/character_comparison_5.f90: Likewise. - * gfortran.dg/character_comparison_9.f90: New test. - -2013-03-27 Kirill Yukhin - - * gcc.target/i386/avx2-vbroadcastsi128-1.c: Fix intrinsic name. - * gcc.target/i386/avx2-vbroadcastsi128-1.c: Ditto. - -2013-03-29 Tobias Burnus - - PR fortran/35203 - * gfortran.dg/optional_absent_3.f90: New. - -2013-03-29 Tobias Burnus - - PR fortran/56737 - * gfortran.dg/fmt_cache_3.f90: New. - -2013-03-29 Tobias Burnus - - PR fortran/56735 - * gfortran.dg/namelist_80.f90: New. - -2013-03-28 Thomas Koenig - - PR fortran/45159 - * gfortran.dg/string_length_2.f90: New test. - * gfortran.dg/dependency_41.f90: New test. - -2013-03-28 Thomas Koenig - - PR fortran/55806 - * gfortran.dg/array_constructor_43.f90: New test. - * gfortran.dg/random_seed_3.f90: New test. - -2013-03-28 Ian Bolton - - * gcc.target/aarch64/inc/asm-adder-clobber-lr.c: New test. - * gcc.target/aarch64/inc/asm-adder-no-clobber-lr.c: Likewise. - * gcc.target/aarch64/test-framepointer-1.c: Likewise. - * gcc.target/aarch64/test-framepointer-2.c: Likewise. - * gcc.target/aarch64/test-framepointer-3.c: Likewise. - * gcc.target/aarch64/test-framepointer-4.c: Likewise. - * gcc.target/aarch64/test-framepointer-5.c: Likewise. - * gcc.target/aarch64/test-framepointer-6.c: Likewise. - * gcc.target/aarch64/test-framepointer-7.c: Likewise. - * gcc.target/aarch64/test-framepointer-8.c: Likewise. - -2013-03-28 Paolo Carlini - - PR c++/56725 - * g++.dg/conversion/op4.C: Adjust. - * g++.dg/cpp0x/rv1n.C: Likewise. - * g++.dg/cpp0x/rv2n.C: Likewise. - * g++.dg/cpp0x/template_deduction.C: Likewise. - * g++.dg/expr/cond8.C: Likewise. - * g++.dg/other/error4.C: Likewise. - * g++.old-deja/g++.bugs/900514_03.C: Likewise. - * g++.old-deja/g++.bugs/900519_02.C: Likewise. - * g++.old-deja/g++.bugs/900519_03.C: Likewise. - * g++.old-deja/g++.bugs/900520_02.C: Likewise. - * g++.old-deja/g++.jason/conversion2.C: Likewise. - * g++.old-deja/g++.law/cvt20.C: Likewise. - * g++.old-deja/g++.law/cvt8.C: Likewise. - * g++.old-deja/g++.law/init8.C: Likewise. - * g++.old-deja/g++.mike/net12.C: Likewise. - * g++.old-deja/g++.mike/net8.C: Likewise. - * g++.old-deja/g++.mike/p2793.C: Likewise. - * g++.old-deja/g++.mike/p3836.C: Likewise. - * g++.old-deja/g++.mike/p418.C: Likewise. - * g++.old-deja/g++.mike/p701.C: Likewise. - * g++.old-deja/g++.mike/p807.C: Likewise. - -2013-03-28 Tejas Belagod - - PR middle-end/56694 - * g++.dg/torture/pr56694.C: Fix test case to build on bare-metal - targets. - -2013-03-28 Marek Polacek - - PR tree-optimization/56695 - * gcc.dg/vect/pr56695.c: New test. - -2013-03-28 Richard Biener - - PR tree-optimization/37021 - * gcc.dg/vect/fast-math-slp-38.c: New testcase. - * gcc.dg/vect/O3-pr36098.c: Un-XFAIL. - -2013-03-27 Tobias Burnus - - PR fortran/56650 - PR fortran/36437 - * gfortran.dg/sizeof_2.f90: New. - * gfortran.dg/sizeof_3.f90: New. - * gfortran.dg/sizeof_proc.f90: Update dg-error. - -2013-03-27 Richard Biener - - PR tree-optimization/37021 - * gfortran.dg/vect/fast-math-pr37021.f90: New testcase. - -2013-03-27 Alexander Ivchenko - - * g++.dg/ipa/ivinline-1.C: Add target nonpic. - * g++.dg/ipa/ivinline-2.C: Likewise. - * g++.dg/ipa/ivinline-3.C: Likewise. - * g++.dg/ipa/ivinline-4.C: Likewise. - * g++.dg/ipa/ivinline-5.C: Likewise. - * g++.dg/ipa/ivinline-7.C: Likewise. - * g++.dg/ipa/ivinline-8.C: Likewise. - * g++.dg/ipa/ivinline-9.C: Likewise. - * g++.dg/cpp0x/noexcept03.C: Likewise. - * gcc.dg/const-1.c: Likewise. - * gcc.dg/ipa/pure-const-1.c: Likewise. - * gcc.dg/noreturn-8.c: Likewise. - * gcc.target/i386/mmx-1.c: Likewise. - * gcc.dg/tree-ssa/ipa-split-5.c: Likewise. - * gcc.dg/tree-ssa/loadpre6.c: Likewise. - * gcc.c-torture/execute/pr33992.x: New file. - -2013-03-26 Eric Botcazou - - * gcc.c-torture/execute/20011008-3.c: Cap VLEN with STACK_SIZE too. - -2013-03-26 Paolo Carlini - - PR c++/55951 - * g++.dg/ext/desig5.C: New. - -2013-03-26 Tobias Burnus - - PR fortran/56649 - * gfortran.dg/merge_init_expr_2.f90: New. - * gfortran.dg/merge_char_1.f90: Modify test to - stay a run-time test. - * gfortran.dg/merge_char_3.f90: Ditto. - -2013-03-26 Paolo Carlini - - * g++.dg/cpp0x/constexpr-friend-2.C: New. - * g++.dg/cpp0x/constexpr-main.C: Likewise. - -2013-03-25 Paolo Carlini - - PR c++/56722 - * g++.dg/cpp0x/range-for23.C: New. - -2013-03-25 Tilo Schwarz - - PR libfortran/52512 - * gfortran.dg/namelist_79.f90: New. - -2013-03-25 Martin Jambor - - * gcc.dg/ipa/ipcp-agg-9.c: New test. - -2013-03-25 Tobias Burnus - - PR fortran/38536 - PR fortran/38813 - PR fortran/38894 - PR fortran/39288 - PR fortran/40963 - PR fortran/45824 - PR fortran/47023 - PR fortran/47034 - PR fortran/49023 - PR fortran/50269 - PR fortran/50612 - PR fortran/52426 - PR fortran/54263 - PR fortran/55343 - PR fortran/55444 - PR fortran/55574 - PR fortran/56079 - PR fortran/56378 - * gfortran.dg/c_assoc_2.f03: Update dg-error wording. - * gfortran.dg/c_f_pointer_shape_test.f90: Ditto. - * gfortran.dg/c_f_pointer_shape_tests_3.f03: Ditto. - * gfortran.dg/c_f_pointer_tests_5.f90: Ditto. - * gfortran.dg/c_funloc_tests_2.f03: Ditto. - * gfortran.dg/c_funloc_tests_5.f03: Ditto. - * gfortran.dg/c_funloc_tests_6.f90: Ditto. - * gfortran.dg/c_loc_tests_10.f03: Add -std=f2008. - * gfortran.dg/c_loc_tests_11.f03: Ditto, update dg-error. - * gfortran.dg/c_loc_tests_16.f90: Ditto. - * gfortran.dg/c_loc_tests_4.f03: Ditto. - * gfortran.dg/c_loc_tests_15.f90: Update dg-error wording. - * gfortran.dg/c_loc_tests_3.f03: Valid since F2003 TC5. - * gfortran.dg/c_loc_tests_8.f03: Ditto. - * gfortran.dg/c_ptr_tests_14.f90: Update scan-tree-dump-times. - * gfortran.dg/c_ptr_tests_15.f90: Ditto. - * gfortran.dg/c_sizeof_1.f90: Fix invalid code. - * gfortran.dg/iso_c_binding_init_expr.f03: Update dg-error wording. - * gfortran.dg/pr32601_1.f03: Ditto. - * gfortran.dg/storage_size_2.f08: Remove dg-error. - * gfortran.dg/blockdata_7.f90: New. - * gfortran.dg/c_assoc_4.f90: New. - * gfortran.dg/c_f_pointer_tests_6.f90: New. - * gfortran.dg/c_f_pointer_tests_7.f90: New. - * gfortran.dg/c_funloc_tests_8.f90: New. - * gfortran.dg/c_loc_test_17.f90: New. - * gfortran.dg/c_loc_test_18.f90: New. - * gfortran.dg/c_loc_test_19.f90: New. - * gfortran.dg/c_loc_test_20.f90: New. - * gfortran.dg/c_sizeof_5.f90: New. - * gfortran.dg/iso_c_binding_rename_3.f90: New. - * gfortran.dg/transfer_resolve_2.f90: New. - * gfortran.dg/transfer_resolve_3.f90: New. - * gfortran.dg/transfer_resolve_4.f90: New. - * gfortran.dg/pr32601.f03: Update dg-error. - * gfortran.dg/c_ptr_tests_13.f03: Update dg-error. - * gfortran.dg/c_ptr_tests_9.f03: Fix test case. - -2013-03-25 Kyrylo Tkachov - - * gcc.target/arm/vseleqdf.c: New test. - * gcc.target/arm/vseleqsf.c: Likewise. - * gcc.target/arm/vselgedf.c: Likewise. - * gcc.target/arm/vselgesf.c: Likewise. - * gcc.target/arm/vselgtdf.c: Likewise. - * gcc.target/arm/vselgtsf.c: Likewise. - * gcc.target/arm/vselledf.c: Likewise. - * gcc.target/arm/vsellesf.c: Likewise. - * gcc.target/arm/vselltdf.c: Likewise. - * gcc.target/arm/vselltsf.c: Likewise. - * gcc.target/arm/vselnedf.c: Likewise. - * gcc.target/arm/vselnesf.c: Likewise. - * gcc.target/arm/vselvcdf.c: Likewise. - * gcc.target/arm/vselvcsf.c: Likewise. - * gcc.target/arm/vselvsdf.c: Likewise. - * gcc.target/arm/vselvssf.c: Likewise. - -2013-03-25 Kyrylo Tkachov - - * gcc.target/aarch64/atomic-comp-swap-release-acquire.c: Move test - body from here... - * gcc.target/aarch64/atomic-comp-swap-release-acquire.x: ... to here. - * gcc.target/aarch64/atomic-op-acq_rel.c: Move test body from here... - * gcc.target/aarch64/atomic-op-acq_rel.x: ... to here. - * gcc.target/aarch64/atomic-op-acquire.c: Move test body from here... - * gcc.target/aarch64/atomic-op-acquire.x: ... to here. - * gcc.target/aarch64/atomic-op-char.c: Move test body from here... - * gcc.target/aarch64/atomic-op-char.x: ... to here. - * gcc.target/aarch64/atomic-op-consume.c: Move test body from here... - * gcc.target/aarch64/atomic-op-consume.x: ... to here. - * gcc.target/aarch64/atomic-op-int.c: Move test body from here... - * gcc.target/aarch64/atomic-op-int.x: ... to here. - * gcc.target/aarch64/atomic-op-relaxed.c: Move test body from here... - * gcc.target/aarch64/atomic-op-relaxed.x: ... to here. - * gcc.target/aarch64/atomic-op-release.c: Move test body from here... - * gcc.target/aarch64/atomic-op-release.x: ... to here. - * gcc.target/aarch64/atomic-op-seq_cst.c: Move test body from here... - * gcc.target/aarch64/atomic-op-seq_cst.x: ... to here. - * gcc.target/aarch64/atomic-op-short.c: Move test body from here... - * gcc.target/aarch64/atomic-op-short.x: ... to here. - * gcc.target/arm/atomic-comp-swap-release-acquire.c: New test. - * gcc.target/arm/atomic-op-acq_rel.c: Likewise. - * gcc.target/arm/atomic-op-acquire.c: Likewise. - * gcc.target/arm/atomic-op-char.c: Likewise. - * gcc.target/arm/atomic-op-consume.c: Likewise. - * gcc.target/arm/atomic-op-int.c: Likewise. - * gcc.target/arm/atomic-op-relaxed.c: Likewise. - * gcc.target/arm/atomic-op-release.c: Likewise. - * gcc.target/arm/atomic-op-seq_cst.c: Likewise. - * gcc.target/arm/atomic-op-short.c: Likewise. - -2013-03-25 Richard Biener - - PR middle-end/56694 - * g++.dg/torture/pr56694.C: New testcase. - -2013-03-25 Kyrylo Tkachov - - PR target/56720 - * gcc.target/arm/neon-vcond-gt.c: New test. - * gcc.target/arm/neon-vcond-ltgt.c: Likewise. - * gcc.target/arm/neon-vcond-unordered.c: Likewise. - -2013-03-25 Richard Biener - - PR tree-optimization/56689 - * gcc.dg/torture/pr56689.c: New testcase. - -2013-03-25 Kai Tietz - - * g++.dg/torture/20121105-1.C: Adjust for LLP64 targets. - -2013-03-24 Tobias Burnus - - PR fortran/56696 - * gfortran.dg/eof_5.f90: New. - -2013-03-23 Sebastian Huber - - * gcc.c-torture/execute/builtins/builtins.exp: Sort targets - alphabetically. - -2013-03-22 Uros Bizjak - - * gcc.target/i386/pr22152.c (dg-options): Add -mtune=core2. - -2013-03-22 Sebastian Huber - - PR testsuite/55994 - * gcc.c-torture/execute/builtins/builtins.exp: Add - -Wl,--allow-multiple-definition for RTEMS targets. - -2013-03-22 Ian Bolton - - * gcc.target/aarch64/movk.c: New test. - -2013-03-21 Marc Glisse - - * g++.dg/ext/vector21.C: New testcase. - -2013-03-21 Christophe Lyon - - * gcc.target/arm/neon-for-64bits-1.c: New tests. - * gcc.target/arm/neon-for-64bits-2.c: Likewise. - -2013-03-21 Richard Biener - - * gcc.dg/vect/vect-outer-3a-big-array.c: Adjust. - * gcc.dg/vect/vect-outer-3a.c: Likewise. - -2013-03-21 Naveen H.S - - * gcc.target/aarch64/vect.c: Test and result vector added - for sabd and saba instructions. - * gcc.target/aarch64/vect-compile.c: Check for sabd and saba - instructions in assembly. - * gcc.target/aarch64/vect.x: Add sabd and saba test functions. - * gcc.target/aarch64/vect-fp.c: Test and result vector added - for fabd instruction. - * gcc.target/aarch64/vect-fp-compile.c: Check for fabd - instruction in assembly. - * gcc.target/aarch64/vect-fp.x: Add fabd test function. - -2013-03-20 Jeff Law - - * g++.dg/tree-ssa/ssa-dom.C: New test. - -2013-03-20 Michael Meissner - - * gcc.target/powerpc/mmfpgpr.c: New test. - * gcc.target/powerpc/sd-vsx.c: Likewise. - * gcc.target/powerpc/sd-pwr6.c: Likewise. - * gcc.target/powerpc/vsx-float0.c: Likewise. - -2013-03-20 Marc Glisse - - PR tree-optimization/56355 - * gcc.dg/pr56355-1.c: New file. - -2013-03-20 Catherine Moore - Richard Sandiford - - * gcc.target/mips/mips.exp: Add microMIPS support. - * gcc.target/mips/umips-movep-2.c: New test. - * gcc.target/mips/umips-lwp-2.c: New test. - * gcc.target/mips/umips-swp-5.c: New test. - * gcc.target/mips/umips-constraints-1.c: New test. - * gcc.target/mips/umips-lwp-3.c: New test. - * gcc.target/mips/umips-swp-6.c: New test. - * gcc.target/mips/umips-constraints-2.c: New test. - * gcc.target/mips/umips-save-restore-1.c: New test. - * gcc.target/mips/umips-lwp-4.c: New test. - * gcc.target/mips/umips-swp-7.c: New test. - * gcc.target/mips/umips-save-restore-2.c: New test. - * gcc.target/mips/umips-lwp-swp-volatile.c: New test. - * gcc.target/mips/umips-lwp-5.c: New test. - * gcc.target/mips/umips-save-restore-3.c: New test. - * gcc.target/mips/umips-lwp-6.c: New test. - * gcc.target/mips/umips-swp-1.c: New test. - * gcc.target/mips/umips-lwp-7.c: New test. - * gcc.target/mips/umips-swp-2.c: New test. - * gcc.target/mips/umips-lwp-8.c: New test. - * gcc.target/mips/umips-swp-3.c: New test. - * gcc.target/mips/umips-movep-1.c: New test. - * gcc.target/mips/umips-lwp-1.c: New test. - * gcc.target/mips/umips-swp-4.c: New test. - -2013-03-20 Richard Biener - - PR tree-optimization/56661 - * gcc.dg/torture/pr56661.c: New testcase. - -2013-03-20 Bill Schmidt - - PR rtl-optimization/56605 - * gcc.target/powerpc/pr56605.c: New. - -2013-03-20 Rainer Orth - - PR fortran/54932 - * gfortran.dg/do_1.f90: Don't xfail. - -2013-03-20 Tilo Schwarz - - PR libfortran/51825 - * gfortran.dg/namelist_77.f90: New. - * gfortran.dg/namelist_78.f90: New. - -2013-03-20 Tilo Schwarz - - PR libfortran/48618 - * gfortran.dg/open_negative_unit_1.f90: New. - -2013-03-19 Ian Bolton - - * gcc.target/aarch64/sbc.c: New test. - -2013-03-19 Ian Bolton - - * gcc.target/aarch64/ror.c: New test. - -2013-03-19 Ian Bolton - - * gcc.target/aarch64/extr.c: New test. - -2013-03-19 Richard Biener - - PR tree-optimization/56273 - * gcc.dg/tree-ssa/vrp47.c: Adjust. - * c-c++-common/uninit-17.c: Likewise. - -2013-03-18 Jakub Jelinek - - PR tree-optimization/56635 - * g++.dg/torture/pr56635.C: New test. - -2013-03-18 Richard Biener - - PR tree-optimization/3713 - * g++.dg/ipa/devirt-12.C: New testcase. - -2013-03-18 Jakub Jelinek - - PR c/56566 - * c-c++-common/pr56566.c: New test. - -2013-03-17 Jason Merrill - - * g++.dg/template/abstract-dr337.C: XFAIL. - -2013-03-16 Jakub Jelinek - - PR c++/56607 - * g++.dg/warn/Wdiv-by-zero-2.C: New test. - * c-c++-common/pr56607.c: New test. - -2013-03-16 Paolo Carlini - - PR c++/56582 - * g++.dg/cpp0x/constexpr-array5.C: New. - -2013-03-15 Tobias Burnus - - PR fortran/56615 - * gfortran.dg/transfer_intrinsic_5.f90: New. - -2013-03-15 Kai Tietz - - * gcc.target/i386/movti.c: Don't test for x64 mingw. - * gcc.target/i386/pr20020-1.c: Likewise. - * gcc.target/i386/pr20020-2.c: Likewise. - * gcc.target/i386/pr20020-3.c: Likewise. - * gcc.target/i386/pr53425-1.c: Likewise. - * gcc.target/i386/pr53425-2.c: Likewise. - * gcc.target/i386/pr55093.c: Likewise. - * gcc.target/i386/pr53907.c: Adjust test for LLP64 targets. - -2013-03-15 Jakub Jelinek - - PR debug/56307 - * gcc.dg/tree-ssa/pr55579.c: Add -fvar-tracking-assignments to - dg-options. Remove 32-bit hppa*-*-hpux* xfail. - -2013-03-14 Jakub Jelinek - - PR tree-optimization/53265 - * gcc.dg/graphite/scop-3.c (toto): Increase array size to avoid - undefined behavior. - * gcc.dg/graphite/id-6.c (test): Likewise. - * gcc.dg/graphite/pr35356-2.c: Adjust regexp patterns to only look for - MIN_EXPR and MAX_EXPR in GIMPLE stmts. - - PR tree-optimization/53265 - * gcc.dg/pr53265.c: New test. - * gcc.dg/torture/pr49518.c: Add -Wno-aggressive-loop-optimizations - to dg-options. - * g++.dg/opt/longbranch2.C (EBCOTLut): Double sizes of a2 and a3 - arrays. - * gcc.dg/tree-ssa/cunroll-10.c (main): Rename to foo. Add argument - n, use it as high bound instead of 4. - -2013-03-13 Oleg Endo - - PR target/49880 - * gcc.target/sh/pr49880-1.c: New. - * gcc.target/sh/pr49880-2.c: New. - * gcc.target/sh/pr49880-3.c: New. - * gcc.target/sh/pr49880-4.c: New. - * gcc.target/sh/pr49880-5.c: New. - -2013-03-13 Paolo Carlini - - * g++.dg/cpp0x/alias-decl-32.C: Remove redundant bits. - -2013-03-13 Richard Biener - - PR tree-optimization/56608 - * gcc.dg/vect/fast-math-bb-slp-call-3.c: New testcase. - -2013-03-13 Paolo Carlini - - PR c++/56611 - * g++.dg/cpp0x/alias-decl-32.C: New. - -2013-03-11 Jan Hubicka - - PR middle-end/56571 - * gcc.c-torture/compile/pr56571.c: New testcase. - -2013-03-11 John David Anglin - - * gcc.dg/tree-ssa/vector-4.c: Add comment regarding xfail. - * gcc.dg/tree-ssa/pr55579.c: Likewise. - -2013-03-11 Dominique d'Humieres - - * gcc.dg/inline_3.c: Remove target and dg-excess-errors. - * gcc.dg/inline_4.c: Likewise. - * gcc.dg/unroll_2.c: Likewise. - * gcc.dg/unroll_3.c: Likewise. - * gcc.dg/unroll_4.c: Likewise. - -2013-03-10 John David Anglin - - PR testsuite/54119 - * gcc.dg/tree-ssa/vector-4.c: xfail on 32-bit hppa*-*-*. - - PR debug/56307 - * gcc.dg/tree-ssa/pr55579.c: xfail 32-bit hppa*-*-hpux*. - -2013-03-11 Oleg Endo - - PR target/40797 - * gcc.c-torture/compile/pr40797.c: New. - -2013-03-10 John David Anglin - - * gcc.dg/pr44194-1.c: Skip compilation on hppa*64*-*-*. - -2013-03-10 Paul Thomas - - PR fortran/56575 - * gfortran.dg/class_56.f90: New test. - -2013-03-09 Richard Sandiford - - PR middle-end/56524 - * gcc.target/mips/pr56524.c: New test. - -2013-03-08 Paolo Carlini - - PR c++/56565 - * g++.dg/cpp0x/lambda/lambda-nsdmi2.C: New. - -2013-03-08 Paolo Carlini - - PR c++/51412 - * g++.dg/cpp0x/lambda/lambda-err3.C: New. - -2013-03-08 Marek Polacek - - PR tree-optimization/56478 - * gcc.dg/torture/pr56478.c: New test. - -2013-03-08 Kai Tietz - - * gcc.c-torture/execute/builtins/builtins.exp: Add for mingw - targets linker option --allow-multiple-definition. - - * gcc.dg/pr14092-1.c: Mark intptr_t typedef to use extension. - * gcc.dg/pr24683.c: Avoid warning about casting constant string. - * gcc.dg/pr52549.c: Add LLP64 case. - * gcc.dg/pr53701.c: Use for uintptr_t typedef __UINTPTR_TYPE__. - * gcc.dg/pr56510.c: Adjust for LLP64 targets. - * gcc.dg/torture/pr51071-2.c: Likewise. - * gcc.dg/tree-ssa/vrp72.c: Likewise. - * gcc.dg/tree-ssa/vrp73.c: Likewise. - * gcc.dg/tree-ssa/vrp75.c: Likewise. - * gcc.dg/torture/pr53922.c: Skip test for mingw-targets. - * gcc.dg/weak/weak-1.c: Likewise. - * gcc.dg/weak/weak-2.c: Likewise. - * gcc.dg/weak/weak-3.c: Likewise. - * gcc.dg/weak/weak-4.c: Likewise. - * gcc.dg/weak/weak-5.c: Likewise. - * gcc.dg/weak/weak-15.c: Likewise. - * gcc.dg/weak/weak-16.c: Likewise. - - * c-c++-common/pr54486.c: Skip test for mingw-targets. - -2013-03-07 Jakub Jelinek - - PR tree-optimization/56559 - * gcc.dg/tree-ssa/reassoc-26.c: New test. - -2013-03-07 Andreas Schwab - - * gcc.dg/pr31490.c: Fix last change. - -2013-03-06 Paolo Carlini - - PR c++/56534 - * g++.dg/template/crash115.C: New. - -2013-03-06 Jakub Jelinek - - PR tree-optimization/56539 - * gcc.c-torture/compile/pr56539.c: New test. - -2013-03-06 Kai Tietz - - * gcc.dg/lto/20090914-2_0.c: Skip for mingw and cygwin - targets. - * gcc.dg/lto/20091013-1_1.c: Set x64-mingw as xfail. - * gcc.dg/lto/20091013-1_2.c: Likewise. - * gcc.dg/pr31490.c: Adjust for LLP64 targets. - -2013-03-06 Eric Botcazou - - * gnat.dg/specs/aggr6.ads: New test. - -2013-03-06 Eric Botcazou - - * gnat.dg/loop_optimization15.ad[sb]: New test. - -2013-03-06 Jakub Jelinek - - PR middle-end/56548 - * gcc.dg/pr56548.c: New test. - -2013-03-06 Rainer Orth - - PR debug/53363 - * g++.dg/debug/dwarf2/thunk1.C: Skip on darwin. - -2013-03-06 Jakub Jelinek - - PR c++/56543 - * g++.dg/template/typename20.C: New test. - -2013-03-05 Jakub Jelinek - - PR debug/56510 - * gcc.dg/pr56510.c: New test. - - PR rtl-optimization/56484 - * gcc.c-torture/compile/pr56484.c: New test. - -2013-03-05 Paolo Carlini - - PR c++/56530 - * g++.dg/warn/Wsign-conversion-2.C: New. - -2013-03-05 Richard Biener - - PR tree-optimization/56270 - * gcc.dg/vect/slp-38.c: New testcase. - -2013-03-05 Jakub Jelinek - - PR rtl-optimization/56494 - * gcc.dg/pr56494.c: New test. - -2013-01-04 Eric Botcazou - - * gcc.dg/pr56424.c: New test. - -2013-03-04 Georg-Johann Lay - - * gcc.dg/pr55153.c: Add dg-require-effective-target scheduling. - * gcc.dg/pr56228.c : Skip. - -2013-03-04 Georg-Johann Lay - - PR testsuite/52641 - PR tree-optimization/52631 - * gcc.dg/tree-ssa/pr52631.c: Fix 16-bit int. - -2013-03-03 David Edelsohn - - * gcc.dg/vect/vect-82_64.c: Skip on AIX. - * gcc.dg/vect/vect-83_64.c: Same. - -2013-03-03 Mikael Morin - - PR fortran/56477 - * gfortran.dg/pointer_check_13.f90: New test. - -2013-03-03 Mikael Morin - - PR fortran/54730 - * gfortran.dg/array_constructor_42.f90: New test. - -2013-03-02 Paolo Carlini - - PR c++/52688 - * g++.dg/template/static33.C: New. - * g++.dg/template/static34.C: Likewise. - - PR c++/10291 - * g++.dg/template/static35.C: New. - -2013-03-01 Steve Ellcey - - * gcc.dg/pr56396.c: Require pic support. - -2013-03-01 Richard Biener - - PR tree-optimization/55481 - * gcc.dg/torture/pr56488.c: New testcase. - -2013-02-28 Konstantin Serebryany - Jakub Jelinek - - PR sanitizer/56454 - * g++.dg/asan/default-options-1.C (__asan_default_options): Use - no_sanitize_address attribute rather than no_address_safety_analysis. - * g++.dg/asan/sanitizer_test_utils.h - (ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS): Likewise. - * c-c++-common/asan/attrib-1.c: Test no_sanitize_address attribute - in addition to no_address_safety_analysis. - -2013-02-28 Jason Merrill - - PR c++/56481 - * g++.dg/cpp0x/constexpr-and.C: New. - -2013-02-28 Martin Jambor - - PR tree-optimization/56294 - * g++.dg/debug/pr56294.C: New test. - -2013-02-28 Marcus Shawcroft - - * g++.old-deja/g++.pt/ptrmem6.C(main): Add xfail aarch64*-*-*. - -2013-02-27 Marek Polacek - - PR rtl-optimization/56466 - * gcc.dg/pr56466.c: New test. - -2013-02-28 Naveen H.S - - * gcc.dg/tree-ssa/slsr-1.c: Allow widening multiplications. - * gcc.dg/tree-ssa/slsr-2.c: Likewise. - * gcc.dg/tree-ssa/slsr-3.c: Likewise. - -2013-02-27 Andrey Belevantsev - - PR middle-end/45472 - * gcc.dg/pr45472.c: New test. - -2013-02-26 Marek Polacek - - PR tree-optimization/56426 - * gcc.dg/pr56436.c: New test. - -2013-02-26 Jakub Jelinek - - PR tree-optimization/56448 - * gcc.c-torture/compile/pr56448.c: New test. - - PR tree-optimization/56443 - * gcc.dg/torture/pr56443.c: New test. - -2013-02-25 Richard Biener - - PR tree-optimization/56175 - * gcc.dg/tree-ssa/forwprop-24.c: New testcase. - -2013-02-24 Jakub Jelinek - - PR c++/56403 - * g++.dg/torture/pr56403.C: New test. - -2013-02-25 Catherine Moore - - Revert: - 2013-02-24 Catherine Moore - Richard Sandiford - - * gcc.target/mips/mips.exp: Add microMIPS support. - * gcc.target/mips/umips-movep-2.c: New test. - * gcc.target/mips/umips-lwp-2.c: New test. - * gcc.target/mips/umips-swp-5.c: New test. - * gcc.target/mips/umips-constraints-1.c: New test. - * gcc.target/mips/umips-lwp-3.c: New test. - * gcc.target/mips/umips-swp-6.c: New test. - * gcc.target/mips/umips-constraints-2.c: New test. - * gcc.target/mips/umips-save-restore-1.c: New test. - * gcc.target/mips/umips-lwp-4.c: New test. - * gcc.target/mips/umips-swp-7.c: New test. - * gcc.target/mips/umips-save-restore-2.c: New test. - * gcc.target/mips/umips-lwp-swp-volatile.c: New test. - * gcc.target/mips/umips-lwp-5.c: New test. - * gcc.target/mips/umips-save-restore-3.c: New test. - * gcc.target/mips/umips-lwp-6.c: New test. - * gcc.target/mips/umips-swp-1.c: New test. - * gcc.target/mips/umips-lwp-7.c: New test. - * gcc.target/mips/umips-swp-2.c: New test. - * gcc.target/mips/umips-lwp-8.c: New test. - * gcc.target/mips/umips-swp-3.c: New test. - * gcc.target/mips/umips-movep-1.c: New test. - * gcc.target/mips/umips-lwp-1.c: New test. - * gcc.target/mips/umips-swp-4.c: New test. - -2013-02-24 Catherine Moore - Richard Sandiford - - * gcc.target/mips/mips.exp: Add microMIPS support. - * gcc.target/mips/umips-movep-2.c: New test. - * gcc.target/mips/umips-lwp-2.c: New test. - * gcc.target/mips/umips-swp-5.c: New test. - * gcc.target/mips/umips-constraints-1.c: New test. - * gcc.target/mips/umips-lwp-3.c: New test. - * gcc.target/mips/umips-swp-6.c: New test. - * gcc.target/mips/umips-constraints-2.c: New test. - * gcc.target/mips/umips-save-restore-1.c: New test. - * gcc.target/mips/umips-lwp-4.c: New test. - * gcc.target/mips/umips-swp-7.c: New test. - * gcc.target/mips/umips-save-restore-2.c: New test. - * gcc.target/mips/umips-lwp-swp-volatile.c: New test. - * gcc.target/mips/umips-lwp-5.c: New test. - * gcc.target/mips/umips-save-restore-3.c: New test. - * gcc.target/mips/umips-lwp-6.c: New test. - * gcc.target/mips/umips-swp-1.c: New test. - * gcc.target/mips/umips-lwp-7.c: New test. - * gcc.target/mips/umips-swp-2.c: New test. - * gcc.target/mips/umips-lwp-8.c: New test. - * gcc.target/mips/umips-swp-3.c: New test. - * gcc.target/mips/umips-movep-1.c: New test. - * gcc.target/mips/umips-lwp-1.c: New test. - * gcc.target/mips/umips-swp-4.c: New test. - -2013-02-22 Jakub Jelinek - - PR sanitizer/56393 - * lib/asan-dg.exp (asan_link_flags): Add - -B${gccpath}/libsanitizer/asan/ to flags. - -2013-02-21 Jakub Jelinek - - PR middle-end/56420 - * gcc.dg/torture/pr56420.c: New test. - -2013-02-20 Aldy Hernandez - - PR middle-end/56108 - * gcc.dg/tm/memopt-1.c: Declare functions transaction_safe. - -2013-02-21 Martin Jambor - - PR tree-optimization/56310 - * g++.dg/ipa/pr56310.C: New test. - -2013-02-21 Janus Weil - - PR fortran/56385 - * gfortran.dg/proc_ptr_comp_37.f90: New. - -2013-02-21 Richard Biener - - PR tree-optimization/56415 - Revert - 2013-02-11 Richard Biener - - PR tree-optimization/56273 - * g++.dg/warn/Warray-bounds-6.C: New testcase. - * gcc.dg/tree-ssa/pr21559.c: Adjust. - * gcc.dg/tree-ssa/vrp17.c: Likewise. - * gcc.dg/tree-ssa/vrp18.c: Likewise. - * gcc.dg/tree-ssa/vrp23.c: Likewise. - * gcc.dg/tree-ssa/vrp24.c: Likewise. - -2013-02-21 Marek Polacek - - PR tree-optimization/56398 - * g++.dg/torture/pr56398.C: New test. - -2013-02-21 Jakub Jelinek - - PR inline-asm/56405 - * gcc.c-torture/compile/pr56405.c: New test. - -2013-02-20 Jan Hubicka - - PR tree-optimization/56265 - * g++.dg/ipa/devirt-11.C: New testcase. - -2013-02-20 Richard Biener - - * gcc.dg/tree-ssa/forwprop-8.c: Adjust. - -2013-02-20 Richard Biener - Jakub Jelinek - - PR tree-optimization/56396 - * gcc.dg/pr56396.c: New testcase. - -2013-02-20 Paolo Carlini - - PR c++/56373 - * g++.dg/cpp0x/Wzero-as-null-pointer-constant-2.C: New. - -2013-02-19 Richard Biener - - PR tree-optimization/56384 - * gcc.dg/torture/pr56384.c: New testcase. - -2013-02-19 Jakub Jelinek - - PR tree-optimization/56350 - * gcc.dg/pr56350.c: New test. - - PR tree-optimization/56381 - * g++.dg/opt/pr56381.C: New test. - -2013-02-18 Jakub Jelinek - - PR pch/54117 - * lib/dg-pch.exp (pch-init, pch-finish, - check_effective_target_pch_supported_debug): New procs. - (dg-flags-pch): If $pch_unsupported, make tests UNSUPPORTED. - Likewise if $pch_unsupported_debug and $flags include -g. - Skip FAILs about missing *.gch file if $pch_unsupported_debug - and dg-require-effective-target pch_unsupported_debug. - * g++.dg/pch/pch.exp: Call pch-init and pch-finish. - * objc.dg/pch/pch.exp: Likewise. - * gcc.dg/pch/pch.exp: Likewise. - * gcc.dg/pch/valid-1.c: Add dg-require-effective-target - pch_unsupported_debug. - * gcc.dg/pch/valid-1.hs: Likewise. - * gcc.dg/pch/valid-1b.c: Likewise. - * gcc.dg/pch/valid-1b.hs: Likewise. - -2013-02-18 Richard Biener - - PR tree-optimization/56366 - * gcc.dg/torture/pr56366.c: New testcase. - -2013-02-18 Richard Biener - - PR middle-end/56349 - * gcc.dg/torture/pr56349.c: New testcase. - -2013-02-18 Richard Biener - - PR tree-optimization/56321 - * gcc.dg/torture/pr56321.c: New testcase. - -2013-02-16 Edgar E. Iglesias - - * gcc.dg/20020312-2.c: Define MicroBlaze PIC register - -2013-02-16 Jakub Jelinek - Dodji Seketeli - - PR asan/56330 - * c-c++-common/asan/no-redundant-instrumentation-4.c: New test file. - * c-c++-common/asan/no-redundant-instrumentation-5.c: Likewise. - * c-c++-common/asan/no-redundant-instrumentation-6.c: Likewise. - * c-c++-common/asan/no-redundant-instrumentation-7.c: Likewise. - * c-c++-common/asan/no-redundant-instrumentation-8.c: Likewise. - * c-c++-common/asan/pr56330.c: Likewise. - * c-c++-common/asan/no-redundant-instrumentation-1.c (test1): - Ensure the size argument of __builtin_memcpy is a constant. - -2013-02-15 Jonathan Wakely - Paolo Carlini - - PR c++/51242 - * g++.dg/cpp0x/enum23.C: New. - -2013-02-15 Oleg Endo - - PR target/54685 - * gcc.target/sh/pr54685.c: Fix scanning of not insn. - -2013-02-15 Vladimir Makarov - - PR rtl-optimization/56348 - * gcc.target/i386/pr56348.c: New test. - -2013-02-15 Greta Yorsh - - * gcc.target/arm/interrupt-1.c: Fix for thumb mode. - * gcc.target/arm/interrupt-2.c: Likewise. - -2013-02-15 Tobias Burnus - - PR fortran/56318 - * gfortran.dg/matmul_9.f90: New. - -2013-02-15 Tobias Burnus - - PR fortran/53818 - * gfortran.dg/init_flag_11.f90: New. - -2013-02-14 Rainer Orth - - * gcc.dg/debug/dwarf2/pr53948.c: Allow for more whitespace. - -2013-02-14 Rainer Orth - - * gcc.dg/debug/dwarf2/pr53948.c: Allow for / and ! as comment - characters. - -2013-02-14 Dominique d'Humieres - Tobias Burnus - - PR testsuite/56138 - * gfortran.dg/allocatable_function_7.f90: New. - -2013-02-14 Jakub Jelinek - - * g++.dg/asan/dejagnu-gtest.h: Add multiple inclusion guards. - * asan_globals_test-wrapper.cc: New file. - * g++.dg/asan/asan_test.C: Use asan_globals_test-wrapper.cc - instead of asan_globals_test.cc as dg-additional-sources. - Include asan_mem_test.cc, asan_str_test.cc and asan_oob_test.cc. - * g++.dg/asan/asan_test_utils.h: Synced from upstream. Include - "sanitizer_test_utils.h" instead of - "sanitizer_common/tests/sanitizer_test_utils.h". - * g++.dg/asan/asan_str_test.cc: New file, synced from upstream. - * g++.dg/asan/asan_mem_test.cc: New file, synced from upstream. - * g++.dg/asan/asan_oob_test.cc: New file, synced from upstream. - * g++.dg/asan/asan_globals_test.cc: Synced from upstream. - * g++.dg/asan/asan_test.cc: Synced from upstream. - * g++.dg/asan/sanitizer_test_utils.h: New file, synced from upstream. - -2013-02-14 Dodji Seketeli - - Fix an asan crash - * c-c++-common/asan/memcmp-2.c: New test. - -2013-02-13 Ed Smith-Rowland <3dw4rd@verizon.net> - - PR c++/55582 - * g++.dg/cpp0x/udlit-string-literal.h: New. - * g++.dg/cpp0x/udlit-string-literal.C: New. - -2013-02-13 Sriraman Tallam - - * g++.dg/ext/mv12-aux.C: Add directives to match mv12.C. - -2013-02-13 Vladimir Makarov - - PR target/56184 - * gcc.target/arm/pr56184.C: New test. - -2013-02-13 Jakub Jelinek - - PR c++/56302 - * g++.dg/torture/pr56302.C: New test. - * g++.dg/cpp0x/constexpr-56302.C: New test. - * c-c++-common/pr56302.c: New test. - -2013-02-13 Tobias Burnus - Rainer Orth - - PR fortran/56204 - * gfortran.dg/quad_2.f90: Use "< epsilon" instead of "==". - * gfortran.dg/quad_3.f90: Ditto. - -2013-02-13 Kostya Serebryany - - * c-c++-common/asan/strncpy-overflow-1.c: Update the test - to match the fresh asan run-time. - * c-c++-common/asan/rlimit-mmap-test-1.c: Ditto. - -2013-02-12 Dodji Seketeli - - Avoid instrumenting duplicated memory access in the same basic block - * c-c++-common/asan/no-redundant-instrumentation-1.c: New test. - * c-c++-common/asan/no-redundant-instrumentation-2.c: Likewise. - * c-c++-common/asan/no-redundant-instrumentation-3.c: Likewise. - * c-c++-common/asan/inc.c: Likewise. - -2013-02-12 Vladimir Makarov - - PR inline-asm/56148 - * gcc.target/i386/pr56148.c: New test. - -2013-02-12 Dominique d'Humieres - Tobias Burnus - - PR testsuite/56082 - * gfortran.dg/bind_c_bool_1.f90 (sub): Change kind=4 - to kind=2. - -2013-02-12 Richard Biener - - PR lto/56297 - * gcc.dg/lto/pr56297_0.c: New testcase. - * gcc.dg/lto/pr56297_0.c: Likewise. - -2013-02-12 Janus Weil - - PR fortran/46952 - * gfortran.dg/typebound_deferred_1.f90: New. - -2013-02-12 Jakub Jelinek - - PR rtl-optimization/56151 - * gcc.target/i386/pr56151.c: New test. - -2013-02-11 Sriraman Tallam - - * g++.dg/ext/mv12.C: New test. - * g++.dg/ext/mv12.h: New file. - * g++.dg/ext/mv12-aux.C: New file. - * g++.dg/ext/mv13.C: New test. - -2013-02-11 Sebastian Huber - - * lib/target-supports.exp - (check_effective_target_powerpc_eabi_ok): New. - * gcc.target/powerpc/ppc-eabi.c: Use require effective target - powerpc_eabi_ok. - * gcc.target/powerpc/ppc-sdata-1.c: Likewise. - * gcc.target/powerpc/spe-small-data-2.c: Likewise. Do not run, compile - only. - * gcc.target/powerpc/ppc-sdata-2.c: Add powerpc-*-rtems*. - * gcc.target/powerpc/pr51623.c: Likewise. - * gcc.target/powerpc/ppc-stackalign-1.c: Likewise. - * gcc.target/powerpc/ppc-ldstruct.c: Likewise. - -2013-02-11 Alexander Potapenko - Jack Howarth - Jakub Jelinek - - PR sanitizer/55617 - * g++.dg/asan/pr55617.C: Run on all targets. - -2013-02-11 Uros Bizjak - - PR rtl-optimization/56275 - * gcc.dg/pr56275.c: New test. - -2013-02-11 Richard Biener - - PR tree-optimization/56273 - * gcc.dg/tree-ssa/vrp17.c: Disable tail-merging. - -2013-02-11 Richard Biener - - PR tree-optimization/56264 - * gcc.dg/torture/pr56264.c: New testcase. - -2013-02-11 Richard Biener - - PR tree-optimization/56273 - * g++.dg/warn/Warray-bounds-6.C: New testcase. - * gcc.dg/tree-ssa/pr21559.c: Adjust. - * gcc.dg/tree-ssa/vrp17.c: Likewise. - * gcc.dg/tree-ssa/vrp18.c: Likewise. - * gcc.dg/tree-ssa/vrp23.c: Likewise. - * gcc.dg/tree-ssa/vrp24.c: Likewise. - -2013-02-09 Uros Bizjak - - * g++.dg/asan/asan_test.C: Compile with -D__NO_INLINE__ - for *-*-linux-gnu targets. - * g++.dg/asan/interception-test-1.c: Ditto. - * g++.dg/asan/interception-failure-test-1.C: Ditto. - * g++.dg/asan/interception-malloc-test-1.C: Ditto. - -2013-02-09 Paul Thomas - - PR fortran/55362 - * gfortran.dg/intrinsic_size_4.f90 : New test. - -2013-02-09 Jakub Jelinek - - PR target/56256 - * gcc.target/powerpc/pr56256.c: New test. - -2013-02-08 Ian Lance Taylor - - * lib/go.exp: Load timeout.exp. - -2013-02-08 Vladimir Makarov - - PR rtl-optimization/56246 - * gcc.target/i386/pr56246.c: New test. - -2013-02-08 Jeff Law - - PR debug/53948 - * gcc.dg/debug/dwarf2/pr53948.c: New test. - -2013-02-08 Michael Meissner - - PR target/56043 - * gcc.target/powerpc/vsx-mass-1.c: Only run this test on - powerpc*-*-linux*. - -2013-02-08 Edgar E. Iglesias - - * 20101011-1.c: Add __MICROBLAZE__ exception to set DO_TEST 0 - -2013-02-08 Jakub Jelinek - - PR rtl-optimization/56195 - * gcc.dg/torture/pr56195.c: New test. - -2013-02-08 Mikael Morin - - PR fortran/54107 - * gfortran.dg/recursive_interface_2.f90: New test. - -2013-02-08 Jakub Jelinek - - PR tree-optimization/56250 - * gcc.c-torture/execute/pr56250.c: New test. - -2013-02-08 Georg-Johann Lay - - PR tree-optimization/56064 - * gcc.dg/fixed-point/view-convert-2.c: New test. - -2013-02-08 Michael Matz - - PR tree-optimization/52448 - * gcc.dg/pr52448.c: New test. - -2013-02-08 Richard Biener - - PR middle-end/56181 - * gcc.dg/torture/pr56181.c: New testcase. - -2013-02-08 Georg-Johann Lay - - PR target/54222 - * gcc.target/avr/torture/builtins-4-roundfx.c: New test. - * gcc.target/avr/torture/builtins-5-countlsfx.c: New test. - -2013-02-07 Jakub Jelinek - - PR c++/56241 - * g++.dg/parse/crash61.C: New test. - - PR c++/56239 - * g++.dg/parse/pr56239.C: New test. - - PR c++/56237 - * g++.dg/abi/mangle61.C: New test. - -2013-02-07 Vladimir Makarov - - PR rtl-optimization/56225 - * gcc.target/i386/pr56225.c: New test. - -2013-02-07 Jakub Jelinek - - PR debug/56154 - * gcc.dg/guality/pr56154-1.c: New test. - * gcc.dg/guality/pr56154-2.c: New test. - * gcc.dg/guality/pr56154-3.c: New test. - * gcc.dg/guality/pr56154-4.c: New test. - * gcc.dg/guality/pr56154-aux.c: New file. - - PR tree-optimization/55789 - * g++.dg/ipa/inline-3.C: Use cleanup-ipa-dump instead of - cleanup-tree-dump. - * gcc.dg/tree-ssa/inline-3.c: Add - --param max-early-inliner-iterations=2 option. - -2013-02-07 Rainer Orth - - PR debug/53363 - * g++.dg/debug/dwarf2/thunk1.C: Restrict to 32-bit x86. - Add -fno-dwarf2-cfi-asm to dg-options. - Adapt match count. - -2013-02-07 Jakub Jelinek - - PR target/56228 - * gcc.dg/pr56228.c: New test. - -2013-02-07 Alan Modra - - PR target/54009 - * gcc.target/powerpc/pr54009.c: New test. - PR target/54131 - * gfortran.dg/pr54131.f: New test. - -2013-02-06 Paul Thomas - - PR fortran/55789 - * gfortran.dg/array_constructor_41.f90: New test. - -2013-02-06 Janus Weil - - PR fortran/55978 - * gfortran.dg/class_optional_2.f90: Uncomment some cases which work now. - -2013-02-06 Jakub Jelinek - - PR middle-end/56217 - * g++.dg/gomp/pr56217.C: New test. - -2013-02-05 Jakub Jelinek - - PR tree-optimization/56205 - * gcc.dg/tree-ssa/stdarg-6.c: New test. - * gcc.c-torture/execute/pr56205.c: New test. - -2013-02-05 Richard Biener - - PR tree-optimization/53342 - PR tree-optimization/53185 - * gcc.dg/vect/pr53185-2.c: New testcase. - -2013-02-05 Jan Hubicka - - PR tree-optimization/55789 - * g++.dg/tree-ssa/inline-1.C: Update max-inliner-iterations. - * g++.dg/tree-ssa/inline-2.C: Update max-inliner-iterations. - * g++.dg/tree-ssa/inline-3.C: Update max-inliner-iterations. - * g++.dg/ipa/inline-1.C: New testcase. - * g++.dg/ipa/inline-2.C: New testcase. - * g++.dg/ipa/inline-3.C: New testcase. - -2013-02-05 Jan Hubicka - - PR tree-optimization/55789 - * g++.dg/torture/pr55789.C: New testcase. - -2013-02-05 Jakub Jelinek - - PR middle-end/56167 - * gcc.dg/pr56167.c: New test. - -2013-02-04 Oleg Endo - - PR target/55146 - * gcc.target/sh/pr55146.c: New. - -2013-02-04 Oleg Endo - - PR tree-optimization/54386 - * gcc.target/sh/pr54386.c: New. - -2013-02-04 Paul Thomas - - PR fortran/56008 - * gfortran.dg/realloc_on _assign_16.f90 : New test. - - PR fortran/47517 - * gfortran.dg/realloc_on _assign_17.f90 : New test. - -2013-02-04 Alexander Potapenko - Jack Howarth - Jakub Jelinek - - PR sanitizer/55617 - * g++.dg/asan/pr55617.C: New test. - -2013-02-04 Mikael Morin - - PR fortran/54195 - * gfortran.dg/typebound_operator_19.f90: New test. - * gfortran.dg/typebound_assignment_4.f90: New test. - -2013-02-04 Mikael Morin - - PR fortran/54107 - * gfortran.dg/recursive_interface_1.f90: New test. - -2013-02-04 Richard Guenther - - PR lto/56168 - * gcc.dg/lto/pr56168_0.c: New testcase. - * gcc.dg/lto/pr56168_1.c: Likewise. - -2013-02-02 Thomas Koenig - - PR fortran/50627 - PR fortran/56054 - * gfortran.dg/block_12.f90: New test. - * gfortran.dg/module_error_1.f90: New test. - -2013-02-02 Richard Sandiford - - * lib/target-supports.exp (check_effective_target_vect_float) - (check_effective_target_vect_no_align): Add mips-sde-elf. - -2013-02-01 Jakub Jelinek - - * lib/gcc-dg.exp (restore-target-env-var): Avoid using lreverse. - -2013-02-01 David Edelsohn - - * gcc.dg/pr56023.c: XFAIL on AIX. - * gcc.dg/vect/pr49352.c: Same. - -2013-02-01 Eric Botcazou - - * gnat.dg/opt26.adb: New test. - -2013-01-31 Ramana Radhakrishnan - - Revert. - 2013-01-27 Amol Pise - - * gcc.target/arm/neon-vfnms-1.c: New test. - * gcc.target/arm/neon-vfnma-1.c: New test. - -2013-01-31 Richard Biener - - PR tree-optimization/56157 - * gcc.dg/torture/pr56157.c: New testcase. - -2013-01-30 Richard Biener - - PR tree-optimization/56150 - * gcc.dg/torture/pr56150.c: New testcase. - -2013-01-30 Jakub Jelinek - - PR sanitizer/55374 - * g++.dg/asan/large-func-test-1.C: Allow both _Zna[jm] in addition - to _Znw[jm] in the backtrace. Allow _Zna[jm] to be the first frame - printed in backtrace. - * g++.dg/asan/deep-stack-uaf-1.C: Use malloc instead of operator new - to avoid errors about mismatched allocation vs. deallocation. - - PR c++/55742 - * g++.dg/mv1.C: Moved to... - * g++.dg/ext/mv1.C: ... here. Adjust test. - * g++.dg/mv2.C: Moved to... - * g++.dg/ext/mv2.C: ... here. Adjust test. - * g++.dg/mv3.C: Moved to... - * g++.dg/ext/mv3.C: ... here. - * g++.dg/mv4.C: Moved to... - * g++.dg/ext/mv4.C: ... here. - * g++.dg/mv5.C: Moved to... - * g++.dg/ext/mv5.C: ... here. Adjust test. - * g++.dg/mv6.C: Moved to... - * g++.dg/ext/mv6.C: ... here. Adjust test. - * g++.dg/ext/mv7.C: New test. - * g++.dg/ext/mv8.C: New test. - * g++.dg/ext/mv9.C: New test. - * g++.dg/ext/mv10.C: New test. - * g++.dg/ext/mv11.C: New test. - -2013-01-30 Vladimir Makarov - - PR rtl-optimization/56144 - * gcc.dg/pr56144.c: New. - -2013-01-30 David Edelsohn - - * g++.dg/cpp0x/constexpr-53094-2.C: Ignore non-standard ABI - message. - * g++.dg/cpp0x/constexpr-53094-3.C: Same. - * g++.dg/cpp0x/constexpr-55573.C: Same - -2013-01-30 Georg-Johann Lay - - PR tree-optimization/56064 - * gcc.dg/fixed-point/view-convert.c: New test. - -2013-01-30 Andreas Schwab - - * lib/target-supports-dg.exp (dg-process-target): Use expr to - evaluate the end index in string range. - -2013-01-30 Tobias Burnus - - PR fortran/56138 - * gfortran.dg/allocatable_function_6.f90: New. - -2013-01-29 Janus Weil - Mikael Morin - - PR fortran/54107 - * gfortran.dg/proc_ptr_comp_36.f90: New. - -2013-01-29 Richard Biener - - PR tree-optimization/55270 - * gcc.dg/torture/pr55270.c: New testcase. - -2013-01-28 Jakub Jelinek - - PR rtl-optimization/56117 - * gcc.dg/pr56117.c: New test. - -2013-01-28 Richard Biener - - PR tree-optimization/56034 - * gcc.dg/torture/pr56034.c: New testcase. - -2013-01-28 Jakub Jelinek - - PR tree-optimization/56125 - * gcc.dg/pr56125.c: New test. - -2013-01-28 Tobias Burnus - Mikael Morin - - PR fortran/53537 - * gfortran.dg/import2.f90: Adjust undeclared type error messages. - * gfortran.dg/import8.f90: Likewise. - * gfortran.dg/interface_derived_type_1.f90: Likewise. - * gfortran.dg/import10.f90: New test. - * gfortran.dg/import11.f90: Likewise - -2013-01-28 Jakub Jelinek - - PR testsuite/56053 - * c-c++-common/asan/heap-overflow-1.c: Don't include stdlib.h and - string.h. Provide memset, malloc and free prototypes, adjust line - numbers in dg-output. - * c-c++-common/asan/stack-overflow-1.c: Don't include string.h. - Provide memset prototype and adjust line numbers in dg-output. - * c-c++-common/asan/global-overflow-1.c: Likewise. - - PR tree-optimization/56094 - * gcc.dg/pr56094.c: New test. - -2013-01-27 Amol Pise - - * gcc.target/arm/neon-vfnms-1.c: New test. - * gcc.target/arm/neon-vfnma-1.c: New test. - -2013-01-27 Uros Bizjak - - PR target/56114 - * gcc.target/i386/pr56114.c: New test. - -2013-01-27 Paul Thomas - - PR fortran/55984 - * gfortran.dg/associate_14.f90: New test. - - PR fortran/56047 - * gfortran.dg/associate_13.f90: New test. - -2013-01-25 Jakub Jelinek - - PR tree-optimization/56098 - * gcc.dg/pr56098-1.c: New test. - * gcc.dg/pr56098-2.c: New test. - -2013-01-25 Georg-Johann Lay - - PR target/54222 - * gcc.target/avr/torture/builtins-3-absfx.c: New test. - -2013-01-22 Marek Polacek - - PR tree-optimization/56035 - * gcc.dg/pr56035.c: New test. - -2013-01-24 Richard Sandiford - - * gfortran.dg/bind_c_array_params_2.f90: Require -mno-relax-pic-calls - for MIPS. - -2013-01-24 Richard Sandiford - - * gcc.target/mips/octeon-pipe-1.c: Add -ffat-lto-objects - -2013-01-24 Jakub Jelinek - - PR c/56078 - * gcc.dg/pr56078.c: New test. - * gcc.c-torture/compile/20030305-1.c: Add dg-error lines. - -2013-01-24 Martin Jambor - - PR tree-optimization/55927 - * g++.dg/ipa/devirt-10.C: Disable early inlining. - -2013-01-24 Uros Bizjak - - * gcc.target/i386/movsd.c: New test. - -2013-01-24 Steven Bosscher - - PR inline-asm/55934 - * gcc.target/i386/pr55934.c: New test. - -2013-01-23 Janus Weil - - PR fortran/56081 - * gfortran.dg/select_8.f90: New. - -2013-01-23 David Holsgrove - - * gcc.target/microblaze/microblaze.exp: Remove - target_config_cflags check. - -2013-01-23 Jakub Jelinek - - PR fortran/56052 - * gfortran.dg/gomp/pr56052.f90: New test. - - PR target/49069 - * gcc.dg/pr49069.c: New test. - -2013-01-22 Paolo Carlini - - PR c++/55944 - * g++.dg/cpp0x/constexpr-static10.C: New. - -2013-01-22 Uros Bizjak - - PR target/56028 - * gcc.target/i386/pr56028.c: New test. - -2013-01-22 Jakub Jelinek - - PR target/55686 - * gcc.target/i386/pr55686.c: New test. - -2013-01-22 Dodji Seketeli - - PR c++/53609 - * g++.dg/cpp0x/variadic139.C: New test. - * g++.dg/cpp0x/variadic140.C: Likewise. - * g++.dg/cpp0x/variadic141.C: Likewise. - -2013-01-22 Eric Botcazou - - * gnat.dg/warn8.adb: New test. - -2013-01-21 Thomas Koenig - - PR fortran/55919 - * gfortran.dg/include_8.f90: New test. - -2013-01-21 Uros Bizjak - - * gcc.dg/tree-ssa/pr55579.c: Cleanup esra tree dump. - * gfortran.dg/unlimited_polymorphic_8.f90: Cleanup original tree dump. - -2013-01-21 Jakub Jelinek - - PR tree-optimization/56051 - * gcc.c-torture/execute/pr56051.c: New test. - -2013-01-21 Uros Bizjak - - PR rtl-optimization/56023 - * gcc.dg/pr56023.c: New test. - -2013-01-21 Martin Jambor - - PR middle-end/56022 - * gcc.target/i386/pr56022.c: New test. - -2013-01-21 Jason Merrill - - * lib/target-supports.exp (check_effective_target_alias): New. - -2013-01-20 Jack Howarth - - PR debug/53235 - * g++.dg/debug/dwarf2/nested-4.C: XFAIL on darwin. - -2013-01-20 Hans-Peter Nilsson - - * gfortran.dg/inquire_10.f90: Run only for non-newlib targets. - -2013-01-19 Jeff Law - - PR tree-optimization/52631 - * tree-ssa/pr52631.c: New test. - * tree-ssa/ssa-fre-9: Update expected output. - -2013-01-19 Anthony Green - - * gcc.dg/tree-ssa/asm-2.c (REGISTER): Pick an appropriate register - for moxie. - -2013-01-18 Jakub Jelinek - - PR tree-optimization/56029 - * g++.dg/torture/pr56029.C: New test. - -2013-01-18 Sharad Singhai - - PR tree-optimization/55995 - * gcc.dg/vect/vect.exp: Use "details" flags for dump info. - -2013-01-18 Vladimir Makarov - - PR target/55433 - * gcc.target/i386/pr55433.c: New. - -2013-01-18 Jakub Jelinek - - PR middle-end/56015 - * gfortran.dg/pr56015.f90: New test. - -2013-01-18 Janis Johnson - - * gcc.dg/vect/vect-multitypes-12.c: Refactor dg-final directive. - -2013-01-18 James Greenhalgh - - * gcc.target/aarch64/vect-fcm-gt-f.c: Change expected output. - * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise. - * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise. - * gcc.target/aarch64/vect-fcm-ge-d.c: Likewise. - * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise. - -2013-01-17 Jeff Law - - * gcc.dg/pr52573.c: Move to... - * gcc.target/m68k/pr52573.c: Here. Eliminate target selector. - - PR rtl-optimization/52573 - * gcc.dg/pr52573.c: New test. - -2013-01-17 Jack Howarth - - PR sanitizer/55679 - * g++.dg/asan/interception-test-1.C: Skip on darwin. - * lib/target-supports.exp (check_effective_target_swapcontext): Use - check_no_compiler_messages to test support in ucontext.h. - (check_effective_target_setrlimit): Return 0 for Darwin's non-posix - compliant RLIMIT_AS. - -2013-01-17 Marek Polacek - - PR rtl-optimization/55833 - * gcc.dg/pr55833.c: New test. - -2013-01-17 Jan Hubicka - - PR tree-optimization/55273 - * gcc.c-torture/compile/pr55273.c: New testcase. - -2013-01-17 Uros Bizjak - - PR target/55981 - * gcc.target/pr55981.c: New test. - -2013-01-17 Janis Johnson - - * gcc.target/arm/pr40887.c: Require at least armv5. - * gcc.target/arm/pr51835.c: Avoid conflicts with multilib flags. - * gcc.target/arm/pr51915.c: Likewise. - * gcc.target/arm/pr52006.c: Likewise. - * gcc.target/arm/pr53187.c: Likewise. - - * gcc.target/arm/ftest-support.h: Replace for compile-only tests. - * gcc.target/arm/ftest-support-arm.h: Delete. - * gcc.target/arm/ftest-support-thumb.h: Delete. - * gcc.target/arm/ftest-armv4-arm.c: Replace with compile-only test. - * gcc.target/arm/ftest-armv4t-arm.c: Likewise. - * gcc.target/arm/ftest-armv4t-thumb.c: Likewise. - * gcc.target/arm/ftest-armv5t-arm.c: Likewise. - * gcc.target/arm/ftest-armv5t-thumb.c: Likewise. - * gcc.target/arm/ftest-armv5te-arm.c: Likewise. - * gcc.target/arm/ftest-armv5te-thumb.c: Likewise. - * gcc.target/arm/ftest-armv6-arm.c: Likewise. - * gcc.target/arm/ftest-armv6-thumb.c: Likewise. - * gcc.target/arm/ftest-armv6k-arm.c: Likewise. - * gcc.target/arm/ftest-armv6k-thumb.c: Likewise. - * gcc.target/arm/ftest-armv6m-thumb.c: Likewise. - * gcc.target/arm/ftest-armv6t2-arm.c: Likewise. - * gcc.target/arm/ftest-armv6t2-thumb.c: Likewise. - * gcc.target/arm/ftest-armv6z-arm.c: Likewise. - * gcc.target/arm/ftest-armv6z-thumb.c: Likewise. - * gcc.target/arm/ftest-armv7a-arm.c: Likewise. - * gcc.target/arm/ftest-armv7a-thumb.c: Likewise. - * gcc.target/arm/ftest-armv7em-thumb.c: Likewise. - * gcc.target/arm/ftest-armv7m-thumb.c: Likewise. - * gcc.target/arm/ftest-armv7r-arm.c: Likewise. - * gcc.target/arm/ftest-armv7r-thumb.c: Likewise. - * gcc.target/arm/ftest-armv8a-arm.c: Likewise. - * gcc.target/arm/ftest-armv8a-thumb.c: Likewise. - -2013-01-17 Martin Jambor - - PR tree-optimizations/55264 - * g++.dg/ipa/pr55264.C: New test. - -2013-01-16 Janus Weil - - PR fortran/55983 - * gfortran.dg/class_55.f90: New. - -2013-01-16 Janis Johnson - - PR testsuite/55994 - * gcc.c-torture/execute/builtins/builtins.exp: Add - -Wl,--allow-multiple-definition for eabi and elf targets. - - PR testsuite/54622 - * lib/target-supports.exp (check_effective_target_vect_perm_byte, - check_effective_target_vect_perm_short, - check_effective_target_vect_widen_mult_qi_to_hi_pattern, - check_effective_target_vect64): Return 0 for big-endian ARM. - (check_effective_target_vect_widen_sum_qi_to_hi): Return 1 for ARM. - - * gcc.target/arm/neon-vld1_dupQ.c: Use types that match function - prototypes. - -2013-01-16 Richard Biener - - PR tree-optimization/55964 - * gcc.dg/torture/pr55964.c: New testcase. - -2013-01-16 Richard Biener - - PR tree-optimization/54767 - PR tree-optimization/53465 - * gfortran.fortran-torture/execute/pr54767.f90: New testcase. - -2013-01-16 Christian Bruel - - PR target/55301 - * gcc.target/sh/sh-switch.c: New testcase. - -2013-01-15 Janis Johnson - - * gcc.dg/webizer.c: Increase the array size. - -2013-01-15 Jakub Jelinek - - PR target/55940 - * gcc.dg/pr55940.c: New test. - -2013-01-15 Manfred Schwarb - Harald Anlauf - - * gfortran.dg/bounds_check_4.f90: Add dg-options "-fbounds-check". - * gfortran.dg/bounds_check_5.f90: Likewise. - * gfortran.dg/class_array_10.f03: Fix syntax of dg-directive. - * gfortran.dg/continuation_9.f90: Likewise. - * gfortran.dg/move_alloc_13.f90: Likewise. - * gfortran.dg/structure_constructor_11.f90: Likewise. - * gfortran.dg/tab_continuation.f: Likewise. - * gfortran.dg/warning-directive-2.F90: Likewise. - * gfortran.dg/coarray_lib_token_4.f90: Remove misspelled directive. - -2013-01-15 Janis Johnson - - * gcc.target/arm/fma.c: Skip for conflicting multilib options. - * gcc.target/arm/fma-sp.c: Likewise. - -2013-01-15 Vladimir Makarov - - PR rtl-optimization/55153 - * gcc.dg/pr55153.c: New. - -2013-01-15 Jakub Jelinek - - PR tree-optimization/55920 - * gcc.c-torture/compile/pr55920.c: New test. - -2013-01-15 Richard Biener - - PR middle-end/55882 - * gcc.dg/torture/pr55882.c: New testcase. - -2013-01-15 Jakub Jelinek - - PR tree-optimization/55955 - * gcc.c-torture/compile/pr55955.c: New test. - -2013-01-15 Dodji Seketeli - - PR c++/55663 - * g++.dg/cpp0x/alias-decl-31.C: New test. - -2013-01-15 Paul Thomas - - PR fortran/54286 - * gfortran.dg/proc_ptr_result_8.f90 : Add module 'm' to check - case where interface is null. - -2013-01-14 Thomas Koenig - - PR fortran/55806 - * gfortran.dg/array_constructor_40.f90: New test. - -2013-01-14 Richard Sandiford - - * gcc.dg/tree-ssa/slsr-8.c: Allow widening multiplications. - -2013-01-14 Tejas Belagod - - * gcc.target/aarch64/aarch64/vect-ld1r-compile-fp.c: New. - * gcc.target/aarch64/vect-ld1r-compile.c: New. - * gcc.target/aarch64/vect-ld1r-fp.c: New. - * gcc.target/aarch64/vect-ld1r.c: New. - * gcc.target/aarch64/vect-ld1r.x: New. - -2013-01-14 Andi Kleen - - PR target/55948 - * gcc.target/i386/hle-clear-rel.c: New file - * gcc.target/i386/hle-store-rel.c: New file. - -2013-01-14 Harald Anlauf - - * gfortran.dg/aint_anint_1.f90: Add dg-do run. - * gfortran.dg/bounds_check_4.f90: Likewise. - * gfortran.dg/inquire_10.f90: Likewise. - * gfortran.dg/minloc_3.f90: Likewise. - * gfortran.dg/minlocval_3.f90: Likewise. - * gfortran.dg/module_double_reuse.f90: Likewise. - * gfortran.dg/mvbits_1.f90: Likewise. - * gfortran.dg/oldstyle_1.f90: Likewise. - * gfortran.dg/pr20163-2.f: Likewise. - * gfortran.dg/save_1.f90: Likewise. - * gfortran.dg/scan_1.f90: Likewise. - * gfortran.dg/select_char_1.f90: Likewise. - * gfortran.dg/shape_4.f90: Likewise. - * gfortran.dg/coarray_29_2.f90: Fix dg-do directive. - * gfortran.dg/function_optimize_10.f90: Likewise. - * gfortran.dg/gomp/appendix-a/a.11.2.f90: Likewise. - * gfortran.dg/used_types_17.f90: Likewise. - * gfortran.dg/used_types_18.f90: Likewise. - -2013-01-13 Paul Thomas - - PR fortran/54286 - * gfortran.dg/proc_ptr_result_8.f90 : New test. - -2013-01-13 Richard Sandiford - - * gcc.dg/unroll_5.c: Add nomips16 attributes. - -2013-01-13 Richard Sandiford - - * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Update expected results for MIPS. - -2013-01-12 Janus Weil - - PR fortran/55072 - * gfortran.dg/assumed_type_2.f90: Fix test case. - * gfortran.dg/internal_pack_13.f90: New test. - * gfortran.dg/internal_pack_14.f90: New test. - -2013-01-08 Paul Thomas - - PR fortran/55868 - * gfortran.dg/unlimited_polymorphic_8.f90: Update - scan-tree-dump-times for foo.0.x._vptr to deal with change from - $tar to STAR. - -2013-01-11 Andreas Schwab - - * gcc.c-torture/compile/pr55921.c: Don't use matching constraints. - -2013-01-11 Andreas Krebbel - - PR target/55719 - * gcc.target/s390/pr55719.c: New testcase. - -2013-01-11 Richard Guenther - - PR tree-optimization/44061 - * gcc.dg/pr44061.c: New testcase. - -2013-01-10 Richard Sandiford - - Update copyright years. - -2013-01-10 Aldy Hernandez - Jakub Jelinek - - PR target/55565 - * gcc.target/powerpc/ppc-mov-1.c: Update scan-assembler-not regex. - -2013-01-10 Vladimir Makarov - - PR rtl-optimization/55672 - * gcc.target/i386/pr55672.c: New. - -2013-01-10 Jeff Law - - * gcc/dg/tree-ssa/vrp06.c: Tighten expected output. Make each - pass/fail message unique. - - -2013-01-10 Jason Merrill - - * ada/.gitignore: New. - -2013-01-10 Rainer Orth - - * g++.dg/tls/thread_local-cse.C: Don't xfail on *-*-solaris2.9. - Add tls options. - * g++.dg/tls/thread_local2.C: Likewise. - * g++.dg/tls/thread_local2g.C: Likewise. - * g++.dg/tls/thread_local6.C: Likewise. - * g++.dg/tls/thread_local-order1.C: Add tls options. - * g++.dg/tls/thread_local-order2.C: Likewise. - * g++.dg/tls/thread_local3.C: Likewise. - * g++.dg/tls/thread_local3g.C: Likewise. - * g++.dg/tls/thread_local4.C: Likewise. - * g++.dg/tls/thread_local4g.C: Likewise. - * g++.dg/tls/thread_local5.C: Likewise. - * g++.dg/tls/thread_local5g.C: Likewise. - * g++.dg/tls/thread_local6g.C: Likewise. - -2013-01-10 Kostya Serebryany - - * g++.dg/asan/asan_test.cc: Sync from upstream. - -2013-01-10 Jakub Jelinek - - PR tree-optimization/55921 - * gcc.c-torture/compile/pr55921.c: New test. - -2013-01-09 Jan Hubicka - - PR tree-optimization/55569 - * gcc.c-torture/compile/pr55569.c: New testcase. - -2013-01-09 Mikael Morin - - PR fortran/47203 - * gfortran.dg/use_28.f90: New test. - -2013-01-09 Uros Bizjak - - * gfortran.dg/intrinsic_size_3.f90: Make scan-tree-dump-times - number matching more robust. - -2013-01-09 Vladimir Makarov - - PR rtl-optimization/55829 - * gcc.target/i386/pr55829.c: New. - -2013-01-09 Tobias Burnus - - PR fortran/55758 - * gfortran.dg/bind_c_bool_1.f90: New. - * gfortran.dg/do_5.f90: Add dg-warning. - -2013-01-09 Jan Hubicka - - PR tree-optimization/55875 - * gcc.c-torture/execute/pr55875.c: New testcase. - * g++.dg/torture/pr55875.C: New testcase. - -2013-01-09 Jakub Jelinek - - PR c/48418 - * c-c++-common/pr48418.c: New test. - -2013-01-09 Paolo Carlini - - PR c++/55801 - * g++.dg/tls/thread_local-ice.C: New. - -2013-01-09 Andreas Schwab - - * gcc.dg/guality/pr54693.c: Null-terminate arr. - -2013-01-09 Jakub Jelinek - - PR tree-optimization/48189 - * gcc.dg/pr48189.c: New test. - -2013-01-04 Jan Hubicka - - PR tree-optimization/55823 - * g++.dg/ipa/devirt-10.C: New testcase. - -2013-01-08 Uros Bizjak - Vladimir Yakovlev - - PR rtl-optimization/55845 - * gcc.target/i386/pr55845.c: New test. - -2013-01-08 Tejas Belagod - - * gcc.target/aarch64/vect-mull-compile.c: Explicitly scan for - instructions generated instead of number of occurances. - -2013-01-08 James Greenhalgh - - * gcc.target/aarch64/vect-fcm-eq-d.c: New. - * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise. - * gcc.target/aarch64/vect-fcm-ge-d.c: Likewise. - * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise. - * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise. - * gcc.target/aarch64/vect-fcm-gt-f.c: Likewise. - * gcc.target/aarch64/vect-fcm.x: Likewise. - * lib/target-supports.exp - (check_effective_target_vect_cond): Enable for AArch64. - -2013-01-08 James Greenhalgh - - * gcc.target/aarch64/vsqrt.c (test_square_root_v2sf): Use - endian-safe float pool loading. - (test_square_root_v4sf): Likewise. - (test_square_root_v2df): Likewise. - * lib/target-supports.exp - (check_effective_target_vect_call_sqrtf): Add AArch64. - -2013-01-08 Martin Jambor - - PR debug/55579 - * gcc.dg/tree-ssa/pr55579.c: New test. - -2013-01-08 Rainer Orth - - * g++.dg/debug/dwarf2/pr54508.C: Allow for more whitespace after - asm comments. - -2013-01-08 Jakub Jelinek - - PR middle-end/55890 - * gcc.dg/torture/pr55890-3.c: New test. - - PR middle-end/55851 - * gcc.c-torture/compile/pr55851.c: New test. - - PR sanitizer/55844 - * c-c++-common/asan/null-deref-1.c: Add -fno-shrink-wrap to - dg-options. - -2013-01-08 Paul Thomas - - PR fortran/55618 - * gfortran.dg/elemental_scalar_args_2.f90: New test. - -2013-01-07 Tobias Burnus - - PR fortran/55763 - * gfortran.dg/pointer_init_2.f90: Update dg-error. - * gfortran.dg/pointer_init_7.f90: New. - -2013-01-07 Richard Biener - - * gcc.dg/lto/pr55525_0.c (s): Size like char *. - -2013-01-07 Richard Biener - - PR middle-end/55890 - * gcc.dg/torture/pr55890-1.c: New testcase. - * gcc.dg/torture/pr55890-2.c: Likewise. - -2013-01-07 James Greenhalgh - - * gcc.target/aarch64/fmovd.c: New. - * gcc.target/aarch64/fmovf.c: Likewise. - * gcc.target/aarch64/fmovd-zero.c: Likewise. - * gcc.target/aarch64/fmovf-zero.c: Likewise. - * gcc.target/aarch64/vect-fmovd.c: Likewise. - * gcc.target/aarch64/vect-fmovf.c: Likewise. - * gcc.target/aarch64/vect-fmovd-zero.c: Likewise. - * gcc.target/aarch64/vect-fmovf-zero.c: Likewise. - -2013-01-07 Richard Biener - - PR tree-optimization/55888 - PR tree-optimization/55862 - * gcc.dg/torture/pr55888.c: New testcase. - -2013-01-07 Tobias Burnus - - PR fortran/55852 - * gfortran.dg/intrinsic_size_3.f90: New. - -2013-01-07 Tobias Burnus - - PR fortran/55763 - * gfortran.dg/select_type_32.f90: New. - -2013-01-04 Dodji Seketeli - - PR c++/52343 - * g++.dg/cpp0x/alias-decl-29.C: New test. - -2013-01-06 Paul Thomas - - PR fortran/53876 - PR fortran/54990 - PR fortran/54992 - * gfortran.dg/class_array_15.f03: New test. - -2013-01-06 Mikael Morin - - PR fortran/42769 - PR fortran/45836 - PR fortran/45900 - * gfortran.dg/use_23.f90: New test. - * gfortran.dg/use_24.f90: New test. - * gfortran.dg/use_25.f90: New test. - * gfortran.dg/use_26.f90: New test. - * gfortran.dg/use_27.f90: New test. - -2013-01-06 Olivier Hainque - - * gnat.dg/specs/clause_on_volatile.ads: New test. - -2013-01-06 Eric Botcazou - - * gnat.dg/alignment10.adb: New test. - -2013-01-05 Steven G. Kargl - Mikael Morin - - PR fortran/55827 - * gfortran.dg/use_22.f90: New test. - -2013-01-04 Andrew Pinski - - * gcc.target/aarch64/cmp-1.c: New testcase. - -2013-01-04 Paul Thomas - - PR fortran/55172 - * gfortran.dg/select_type_31.f03: New test. - -2013-01-04 Paolo Carlini - - PR c++/54526 (again) - * g++.dg/cpp0x/parse2.C: Extend. - * g++.old-deja/g++.other/crash28.C: Adjust. - -2013-01-04 Richard Biener - - PR tree-optimization/55862 - * gcc.dg/torture/pr55862.c: New testcase. - -2013-01-04 Martin Jambor - - PR tree-optimization/55755 - * gcc.dg/torture/pr55755.c: New test. - * gcc.dg/tree-ssa/sra-13.c: Likewise. - * gcc.dg/tree-ssa/pr45144.c: Update. - -2013-01-04 Richard Biener - - PR middle-end/55863 - * gcc.dg/fold-reassoc-2.c: New testcase. - -2013-01-04 Tobias Burnus - - PR fortran/55763 - * gfortran.dg/null_7.f90: New. - -2013-01-04 Tobias Burnus - - PR fortran/55854 - PR fortran/55763 - * gfortran.dg/unlimited_polymorphic_3.f03: Remove invalid code. - * gfortran.dg/unlimited_polymorphic_7.f90: New. - * gfortran.dg/unlimited_polymorphic_8.f90: New. - -2013-01-03 Richard Sandiford - - * gcc.dg/torture/tls/tls-reload-1.c (main): Make testing more thorough. - -2013-01-03 Janus Weil - - PR fortran/55855 - * gfortran.dg/assignment_1.f90: Modified. - * gfortran.dg/assignment_4.f90: New. - -2013-01-03 David Edelsohn - - * gcc.dg/torture/tls/tls-reload-1.c: Add tls options. - -2013-01-03 Richard Biener - - PR tree-optimization/55857 - * gcc.dg/vect/pr55857-1.c: New testcase. - * gcc.dg/vect/pr55857-2.c: Likewise. - -2013-01-03 Jakub Jelinek - - PR rtl-optimization/55838 - * gcc.dg/pr55838.c: New test. - - PR tree-optimization/55832 - * gcc.c-torture/compile/pr55832.c: New test. - -2013-01-02 Teresa Johnson - - * gcc.dg/tree-ssa/loop-1.c: Update expected dump message. - * gcc.dg/tree-ssa/loop-23.c: Ditto. - * gcc.dg/tree-ssa/cunroll-1.c: Ditto. - * gcc.dg/tree-ssa/cunroll-2.c: Ditto. - * gcc.dg/tree-ssa/cunroll-3.c: Ditto. - * gcc.dg/tree-ssa/cunroll-4.c: Ditto. - * gcc.dg/tree-ssa/cunroll-5.c: Ditto. - * gcc.dg/unroll_1.c: Ditto. - * gcc.dg/unroll_2.c: Ditto. - * gcc.dg/unroll_3.c: Ditto. - * gcc.dg/unroll_4.c: Ditto. - -2013-01-02 John David Anglin - - * gcc.dg/pr55430.c: Define MAP_FAILED if not defined. - -2013-01-02 Jerry DeLisle - - PR fortran/55818 - * gfortran.dg/eof_4.f90: New test. - -2013-01-02 Jakub Jelinek - - * lib/c-compat.exp (compat-use-alt-compiler): Remove - -fno-diagnostics-show-caret from TEST_ALWAYS_FLAGS if needed. - (compat-use-tst-compiler): Restore TEST_ALWAYS_FLAGS. - (compat_setup_dfp): Initialize compat_alt_caret and - compat_save_TEST_ALWAYS_FLAGS. - -2013-01-02 Richard Sandiford - - * gcc.dg/torture/tls/tls-reload-1.c: New test. - -2013-01-02 Richard Sandiford - - * gcc.dg/torture/fp-int-convert-2.c: New test. - -2013-01-01 Jerry DeLisle - - * gfortran.dg/newunit_3.f90: Add dg-do run. - * gfortran.dg/inquire_15.f90: Add dg-do run. - -2013-01-01 Jakub Jelinek - - PR tree-optimization/55831 - * gcc.dg/pr55831.c: New test. + PR rtl-optimization/59647 + * g++.dg/opt/pr59647.C: New test. Copyright (C) 2013 Free Software Foundation, Inc. diff --git a/gcc/testsuite/ChangeLog-2013 b/gcc/testsuite/ChangeLog-2013 new file mode 100644 index 00000000000..74c81798075 --- /dev/null +++ b/gcc/testsuite/ChangeLog-2013 @@ -0,0 +1,12406 @@ +2013-12-31 Jakub Jelinek + + PR tree-optimization/59622 + * g++.dg/opt/pr59622.C: New test. + +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * gcc.target/i386/avx-1.c: Update for AVX-512 scalar insns. + * gcc.target/i386/avx512f-vaddsd-1.c: New. + * gcc.target/i386/avx512f-vaddss-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto. + * gcc.target/i386/avx512f-vdivsd-1.c: Ditto. + * gcc.target/i386/avx512f-vdivss-1.c: Ditto. + * gcc.target/i386/avx512f-vextractf32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vextracti32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpsd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpsd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetexpss-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpss-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantsd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantsd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantss-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantss-2.c: Ditto. + * gcc.target/i386/avx512f-vmaxsd-1.c: Ditto. + * gcc.target/i386/avx512f-vmaxss-1.c: Ditto. + * gcc.target/i386/avx512f-vminsd-1.c: Ditto. + * gcc.target/i386/avx512f-vminss-1.c: Ditto. + * gcc.target/i386/avx512f-vmulsd-1.c: Ditto. + * gcc.target/i386/avx512f-vmulss-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14sd-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14sd-2.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ss-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ss-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscalesd-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscalesd-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscaless-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscaless-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14sd-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14sd-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ss-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ss-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefss-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefss-2.c: Ditto. + * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto. + * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto. + * gcc.target/i386/avx512f-vsubsd-1.c: Ditto. + * gcc.target/i386/avx512f-vsubss-1.c: Ditto. + * gcc.target/i386/sse-14.c: Update for AVX-512 scalar insns. + * gcc.target/i386/sse-23.c: Ditto. + * gcc.target/i386/testimm-10.c: Ditto. + +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * gcc.target/i386/avx-1.c: Add define for __builtin_ia32_sha1rnds4. + * gcc.target/i386/i386.exp (check_effective_target_sha): New. + * gcc.target/i386/sha-check.h: New file. + * gcc.target/i386/sha1msg1-1.c: Ditto. + * gcc.target/i386/sha1msg1-2.c: Ditto. + * gcc.target/i386/sha1msg2-1.c: Ditto. + * gcc.target/i386/sha1msg2-2.c: Ditto. + * gcc.target/i386/sha1nexte-1: Ditto. + * gcc.target/i386/sha1nexte-2: Ditto. + * gcc.target/i386/sha1rnds4-1.c: Ditto. + * gcc.target/i386/sha1rnds4-2.c: Ditto. + * gcc.target/i386/sha256msg1-1.c: Ditto. + * gcc.target/i386/sha256msg1-2.c: Ditto. + * gcc.target/i386/sha256msg2-1.c: Ditto. + * gcc.target/i386/sha256msg2-2.c: Ditto. + * gcc.target/i386/sha256rnds2-1.c: Ditto. + * gcc.target/i386/sha256rnds2-2.c: Ditto. + * gcc.target/i386/sse-13.c: Add __builtin_ia32_sha1rnds4. + * gcc.target/i386/sse-14.c: Add _mm_sha1rnds4_epu32. + * gcc.target/i386/sse-22.c: Ditto. + * gcc.target/i386/sse-23.c: Add __builtin_ia32_sha1rnds4. + +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * gcc.target/i386/avx512cd-check.h: New file. + * gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c: Ditto. + * gcc.target/i386/avx512cd-vpbroadcastmb2q-2.c: Ditto. + * gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c: Ditto. + * gcc.target/i386/avx512cd-vpbroadcastmw2d-2.c: Ditto. + * gcc.target/i386/avx512cd-vpconflictd-1.c: Ditto. + * gcc.target/i386/avx512cd-vpconflictd-2.c: Ditto. + * gcc.target/i386/avx512cd-vpconflictq-1.c: Ditto. + * gcc.target/i386/avx512cd-vpconflictq-2.c: Ditto. + * gcc.target/i386/avx512cd-vplzcntd-1.c: Ditto. + * gcc.target/i386/avx512cd-vplzcntd-2.c: Ditto. + * gcc.target/i386/avx512cd-vplzcntq-1.c: Ditto. + * gcc.target/i386/avx512cd-vplzcntq-2.c: Ditto. + * gcc.target/i386/avx512cd-vptestnmd-1.c: Ditto. + * gcc.target/i386/avx512cd-vptestnmd-2.c: Ditto. + * gcc.target/i386/avx512cd-vptestnmq-1.c: Ditto. + * gcc.target/i386/avx512cd-vptestnmq-2.c: Ditto. + * gcc.target/i386/avx512er-vexp2pd-1.c: Ditto. + * gcc.target/i386/avx512er-vexp2pd-2.c: Ditto. + * gcc.target/i386/avx512er-vexp2ps-1.c: Ditto. + * gcc.target/i386/avx512er-vexp2ps-2.c: Ditto. + * gcc.target/i386/avx512er-vrcp28pd-1.c: Ditto. + * gcc.target/i386/avx512er-vrcp28pd-2.c: Ditto. + * gcc.target/i386/avx512er-vrcp28ps-1.c: Ditto. + * gcc.target/i386/avx512er-vrcp28ps-2.c: Ditto. + * gcc.target/i386/avx512er-vrsqrt28pd-1.c: Ditto. + * gcc.target/i386/avx512er-vrsqrt28pd-2.c: Ditto. + * gcc.target/i386/avx512er-vrsqrt28ps-1.c: Ditto. + * gcc.target/i386/avx512er-vrsqrt28ps-2.c: Ditto. + * gcc.target/i386/avx512f-broadcast-gpr-1.c: Ditto. + * gcc.target/i386/avx512f-broadcast-gpr-2.c: Ditto. + * gcc.target/i386/avx512f-ceil-sfix-vec-1.c: Ditto. + * gcc.target/i386/avx512f-ceil-sfix-vec-2.c: Ditto. + * gcc.target/i386/avx512f-dummy.c: Ditto. + * gcc.target/i386/avx512f-floor-sfix-vec-1.c: Ditto. + * gcc.target/i386/avx512f-floor-sfix-vec-2.c: Ditto. + * gcc.target/i386/avx512f-gather-1.c: Ditto. + * gcc.target/i386/avx512f-gather-2.c: Ditto. + * gcc.target/i386/avx512f-gather-3.c: Ditto. + * gcc.target/i386/avx512f-gather-4.c: Ditto. + * gcc.target/i386/avx512f-gather-5.c: Ditto. + * gcc.target/i386/avx512f-i32gatherd512-1.c: Ditto. + * gcc.target/i386/avx512f-i32gatherd512-2.c: Ditto. + * gcc.target/i386/avx512f-i32gatherpd512-1.c: Ditto. + * gcc.target/i386/avx512f-i32gatherpd512-2.c: Ditto. + * gcc.target/i386/avx512f-i32gatherps512-1.c: Ditto. + * gcc.target/i386/avx512f-i32gatherps512-2.c: Ditto. + * gcc.target/i386/avx512f-i32gatherq512-1.c: Ditto. + * gcc.target/i386/avx512f-i32gatherq512-2.c: Ditto. + * gcc.target/i386/avx512f-i32scatterd512-1.c: Ditto. + * gcc.target/i386/avx512f-i32scatterd512-2.c: Ditto. + * gcc.target/i386/avx512f-i32scatterpd512-1.c: Ditto. + * gcc.target/i386/avx512f-i32scatterpd512-2.c: Ditto. + * gcc.target/i386/avx512f-i32scatterps512-1.c: Ditto. + * gcc.target/i386/avx512f-i32scatterps512-2.c: Ditto. + * gcc.target/i386/avx512f-i32scatterq512-1.c: Ditto. + * gcc.target/i386/avx512f-i32scatterq512-2.c: Ditto. + * gcc.target/i386/avx512f-i64gatherd512-1.c: Ditto. + * gcc.target/i386/avx512f-i64gatherd512-2.c: Ditto. + * gcc.target/i386/avx512f-i64gatherpd512-1.c: Ditto. + * gcc.target/i386/avx512f-i64gatherpd512-2.c: Ditto. + * gcc.target/i386/avx512f-i64gatherps512-1.c: Ditto. + * gcc.target/i386/avx512f-i64gatherps512-2.c: Ditto. + * gcc.target/i386/avx512f-i64gatherq512-1.c: Ditto. + * gcc.target/i386/avx512f-i64gatherq512-2.c: Ditto. + * gcc.target/i386/avx512f-i64scatterd512-1.c: Ditto. + * gcc.target/i386/avx512f-i64scatterd512-2.c: Ditto. + * gcc.target/i386/avx512f-i64scatterpd512-1.c: Ditto. + * gcc.target/i386/avx512f-i64scatterpd512-2.c: Ditto. + * gcc.target/i386/avx512f-i64scatterps512-1.c: Ditto. + * gcc.target/i386/avx512f-i64scatterps512-2.c: Ditto. + * gcc.target/i386/avx512f-i64scatterq512-1.c: Ditto. + * gcc.target/i386/avx512f-i64scatterq512-2.c: Ditto. + * gcc.target/i386/avx512f-inline-asm.c: Ditto. + * gcc.target/i386/avx512f-kandnw-1.c: Ditto. + * gcc.target/i386/avx512f-kandw-1.c: Ditto. + * gcc.target/i386/avx512f-klogic-2.c: Ditto. + * gcc.target/i386/avx512f-knotw-1.c: Ditto. + * gcc.target/i386/avx512f-kortestw-1.c: Ditto. + * gcc.target/i386/avx512f-kortestw-2.c: Ditto. + * gcc.target/i386/avx512f-korw-1.c: Ditto. + * gcc.target/i386/avx512f-kunpckbw-1.c: Ditto. + * gcc.target/i386/avx512f-kxnorw-1.c: Ditto. + * gcc.target/i386/avx512f-kxorw-1.c: Ditto. + * gcc.target/i386/avx512f-rounding.c: Ditto. + * gcc.target/i386/avx512f-set-v16sf-1.c: Ditto. + * gcc.target/i386/avx512f-set-v16sf-2.c: Ditto. + * gcc.target/i386/avx512f-set-v16sf-3.c: Ditto. + * gcc.target/i386/avx512f-set-v16sf-4.c: Ditto. + * gcc.target/i386/avx512f-set-v16sf-5.c: Ditto. + * gcc.target/i386/avx512f-set-v16si-1.c: Ditto. + * gcc.target/i386/avx512f-set-v16si-2.c: Ditto. + * gcc.target/i386/avx512f-set-v16si-3.c: Ditto. + * gcc.target/i386/avx512f-set-v16si-4.c: Ditto. + * gcc.target/i386/avx512f-set-v16si-5.c: Ditto. + * gcc.target/i386/avx512f-set-v8df-1.c: Ditto. + * gcc.target/i386/avx512f-set-v8df-2.c: Ditto. + * gcc.target/i386/avx512f-set-v8df-3.c: Ditto. + * gcc.target/i386/avx512f-set-v8df-4.c: Ditto. + * gcc.target/i386/avx512f-set-v8df-5.c: Ditto. + * gcc.target/i386/avx512f-set-v8di-1.c: Ditto. + * gcc.target/i386/avx512f-set-v8di-2.c: Ditto. + * gcc.target/i386/avx512f-set-v8di-3.c: Ditto. + * gcc.target/i386/avx512f-set-v8di-4.c: Ditto. + * gcc.target/i386/avx512f-set-v8di-5.c: Ditto. + * gcc.target/i386/avx512f-setzero-pd-1.c: Ditto. + * gcc.target/i386/avx512f-setzero-ps-1.c: Ditto. + * gcc.target/i386/avx512f-setzero-si512-1.c: Ditto. + * gcc.target/i386/avx512f-vaddpd-1.c: Ditto. + * gcc.target/i386/avx512f-vaddpd-2.c: Ditto. + * gcc.target/i386/avx512f-vaddps-1.c: Ditto. + * gcc.target/i386/avx512f-vaddps-2.c: Ditto. + * gcc.target/i386/avx512f-vaddsd-1.c: Ditto. + * gcc.target/i386/avx512f-vaddsd-2.c: Ditto. + * gcc.target/i386/avx512f-vaddss-1.c: Ditto. + * gcc.target/i386/avx512f-vaddss-2.c: Ditto. + * gcc.target/i386/avx512f-valignd-1.c: Ditto. + * gcc.target/i386/avx512f-valignd-2.c: Ditto. + * gcc.target/i386/avx512f-valignq-1.c: Ditto. + * gcc.target/i386/avx512f-valignq-2.c: Ditto. + * gcc.target/i386/avx512f-vblendmpd-1.c: Ditto. + * gcc.target/i386/avx512f-vblendmpd-2.c: Ditto. + * gcc.target/i386/avx512f-vblendmps-1.c: Ditto. + * gcc.target/i386/avx512f-vblendmps-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastf32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastf32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastf64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastf64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcasti32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcasti32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcasti64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcasti64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastsd-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastsd-2.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastss-1.c: Ditto. + * gcc.target/i386/avx512f-vbroadcastss-2.c: Ditto. + * gcc.target/i386/avx512f-vcmppd-1.c: Ditto. + * gcc.target/i386/avx512f-vcmppd-2.c: Ditto. + * gcc.target/i386/avx512f-vcmpps-1.c: Ditto. + * gcc.target/i386/avx512f-vcmpps-2.c: Ditto. + * gcc.target/i386/avx512f-vcmpsd-1.c: Ditto. + * gcc.target/i386/avx512f-vcmpsd-2.c: Ditto. + * gcc.target/i386/avx512f-vcmpss-1.c: Ditto. + * gcc.target/i386/avx512f-vcmpss-2.c: Ditto. + * gcc.target/i386/avx512f-vcomisd-1.c: Ditto. + * gcc.target/i386/avx512f-vcomiss-1.c: Ditto. + * gcc.target/i386/avx512f-vcompresspd-1.c: Ditto. + * gcc.target/i386/avx512f-vcompresspd-2.c: Ditto. + * gcc.target/i386/avx512f-vcompressps-1.c: Ditto. + * gcc.target/i386/avx512f-vcompressps-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtdq2pd-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtdq2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtdq2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtdq2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2dq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2dq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2udq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtpd2udq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtph2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtph2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2dq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2dq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2pd-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2ph-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2ph-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2udq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtps2udq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2si-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2si64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2ss-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2usi-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2usi-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2usi64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsd2usi64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsi2ss-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2sd-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2si-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2si64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2usi-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2usi-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2usi64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtss2usi64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttpd2dq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttpd2dq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttpd2udq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttpd2udq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttps2dq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttps2dq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttps2udq-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttps2udq-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2si-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2si-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2si64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2si64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2usi-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2usi-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2usi64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttsd2usi64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2si-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2si-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2si64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2si64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2usi-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2usi-2.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2usi64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvttss2usi64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtudq2pd-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtudq2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtudq2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtudq2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2sd-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2sd-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2sd64-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2ss-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2ss-2.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Ditto. + * gcc.target/i386/avx512f-vcvtusi2ss64-2.c: Ditto. + * gcc.target/i386/avx512f-vdivpd-1.c: Ditto. + * gcc.target/i386/avx512f-vdivpd-2.c: Ditto. + * gcc.target/i386/avx512f-vdivps-1.c: Ditto. + * gcc.target/i386/avx512f-vdivps-2.c: Ditto. + * gcc.target/i386/avx512f-vdivsd-1.c: Ditto. + * gcc.target/i386/avx512f-vdivsd-2.c: Ditto. + * gcc.target/i386/avx512f-vdivss-1.c: Ditto. + * gcc.target/i386/avx512f-vdivss-2.c: Ditto. + * gcc.target/i386/avx512f-vec-init.c: Ditto. + * gcc.target/i386/avx512f-vec-unpack.c: Ditto. + * gcc.target/i386/avx512f-vexpandpd-1.c: Ditto. + * gcc.target/i386/avx512f-vexpandpd-2.c: Ditto. + * gcc.target/i386/avx512f-vexpandps-1.c: Ditto. + * gcc.target/i386/avx512f-vexpandps-2.c: Ditto. + * gcc.target/i386/avx512f-vextractf32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vextractf32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vextractf64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vextractf64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vextracti32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vextracti32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vextracti64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vextracti64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmps-1.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmps-2.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmsd-2.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmss-1.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmss-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXsd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddXXXss-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddsubXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddsubXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmaddsubXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfmaddsubXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXsd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubXXXss-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubaddXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubaddXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfmsubaddXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfmsubaddXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXsd-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmaddXXXss-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXpd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXpd-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXps-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXps-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXsd-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXsd-2.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXss-1.c: Ditto. + * gcc.target/i386/avx512f-vfnmsubXXXss-2.c: Ditto. + * gcc.target/i386/avx512f-vgetexppd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexppd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetexpps-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpps-2.c: Ditto. + * gcc.target/i386/avx512f-vgetexpsd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpsd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetexpss-1.c: Ditto. + * gcc.target/i386/avx512f-vgetexpss-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantpd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantpd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantps-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantps-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantsd-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantsd-2.c: Ditto. + * gcc.target/i386/avx512f-vgetmantss-1.c: Ditto. + * gcc.target/i386/avx512f-vgetmantss-2.c: Ditto. + * gcc.target/i386/avx512f-vinsertf32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vinsertf32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vinsertf64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vinsertf64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vinserti32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vinserti32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vinserti64x4-1.c: Ditto. + * gcc.target/i386/avx512f-vinserti64x4-2.c: Ditto. + * gcc.target/i386/avx512f-vmaxpd-1.c: Ditto. + * gcc.target/i386/avx512f-vmaxpd-2.c: Ditto. + * gcc.target/i386/avx512f-vmaxps-1.c: Ditto. + * gcc.target/i386/avx512f-vmaxps-2.c: Ditto. + * gcc.target/i386/avx512f-vmaxsd-1.c: Ditto. + * gcc.target/i386/avx512f-vmaxsd-2.c: Ditto. + * gcc.target/i386/avx512f-vmaxss-1.c: Ditto. + * gcc.target/i386/avx512f-vmaxss-2.c: Ditto. + * gcc.target/i386/avx512f-vminpd-1.c: Ditto. + * gcc.target/i386/avx512f-vminpd-2.c: Ditto. + * gcc.target/i386/avx512f-vminps-1.c: Ditto. + * gcc.target/i386/avx512f-vminps-2.c: Ditto. + * gcc.target/i386/avx512f-vminsd-1.c: Ditto. + * gcc.target/i386/avx512f-vminsd-2.c: Ditto. + * gcc.target/i386/avx512f-vminss-1.c: Ditto. + * gcc.target/i386/avx512f-vminss-2.c: Ditto. + * gcc.target/i386/avx512f-vmovapd-1.c: Ditto. + * gcc.target/i386/avx512f-vmovapd-2.c: Ditto. + * gcc.target/i386/avx512f-vmovaps-1.c: Ditto. + * gcc.target/i386/avx512f-vmovaps-2.c: Ditto. + * gcc.target/i386/avx512f-vmovddup-1.c: Ditto. + * gcc.target/i386/avx512f-vmovddup-2.c: Ditto. + * gcc.target/i386/avx512f-vmovdqa32-1.c: Ditto. + * gcc.target/i386/avx512f-vmovdqa32-2.c: Ditto. + * gcc.target/i386/avx512f-vmovdqa64-1.c: Ditto. + * gcc.target/i386/avx512f-vmovdqa64-2.c: Ditto. + * gcc.target/i386/avx512f-vmovdqu32-1.c: Ditto. + * gcc.target/i386/avx512f-vmovdqu32-2.c: Ditto. + * gcc.target/i386/avx512f-vmovdqu64-1.c: Ditto. + * gcc.target/i386/avx512f-vmovdqu64-2.c: Ditto. + * gcc.target/i386/avx512f-vmovntdq-1.c: Ditto. + * gcc.target/i386/avx512f-vmovntdq-2.c: Ditto. + * gcc.target/i386/avx512f-vmovntpd-1.c: Ditto. + * gcc.target/i386/avx512f-vmovntpd-2.c: Ditto. + * gcc.target/i386/avx512f-vmovntps-1.c: Ditto. + * gcc.target/i386/avx512f-vmovntps-2.c: Ditto. + * gcc.target/i386/avx512f-vmovsd-1.c: Ditto. + * gcc.target/i386/avx512f-vmovsd-2.c: Ditto. + * gcc.target/i386/avx512f-vmovshdup-1.c: Ditto. + * gcc.target/i386/avx512f-vmovshdup-2.c: Ditto. + * gcc.target/i386/avx512f-vmovsldup-1.c: Ditto. + * gcc.target/i386/avx512f-vmovsldup-2.c: Ditto. + * gcc.target/i386/avx512f-vmovss-1.c: Ditto. + * gcc.target/i386/avx512f-vmovss-2.c: Ditto. + * gcc.target/i386/avx512f-vmovupd-1.c: Ditto. + * gcc.target/i386/avx512f-vmovupd-2.c: Ditto. + * gcc.target/i386/avx512f-vmovups-1.c: Ditto. + * gcc.target/i386/avx512f-vmovups-2.c: Ditto. + * gcc.target/i386/avx512f-vmulpd-1.c: Ditto. + * gcc.target/i386/avx512f-vmulpd-2.c: Ditto. + * gcc.target/i386/avx512f-vmulps-1.c: Ditto. + * gcc.target/i386/avx512f-vmulps-2.c: Ditto. + * gcc.target/i386/avx512f-vmulsd-1.c: Ditto. + * gcc.target/i386/avx512f-vmulsd-2.c: Ditto. + * gcc.target/i386/avx512f-vmulss-1.c: Ditto. + * gcc.target/i386/avx512f-vmulss-2.c: Ditto. + * gcc.target/i386/avx512f-vpabsd-2.c: Ditto. + * gcc.target/i386/avx512f-vpabsd512-1.c: Ditto. + * gcc.target/i386/avx512f-vpabsq-2.c: Ditto. + * gcc.target/i386/avx512f-vpabsq512-1.c: Ditto. + * gcc.target/i386/avx512f-vpaddd-1.c: Ditto. + * gcc.target/i386/avx512f-vpaddd-2.c: Ditto. + * gcc.target/i386/avx512f-vpaddq-1.c: Ditto. + * gcc.target/i386/avx512f-vpaddq-2.c: Ditto. + * gcc.target/i386/avx512f-vpandd-1.c: Ditto. + * gcc.target/i386/avx512f-vpandd-2.c: Ditto. + * gcc.target/i386/avx512f-vpandnd-1.c: Ditto. + * gcc.target/i386/avx512f-vpandnd-2.c: Ditto. + * gcc.target/i386/avx512f-vpandnq-1.c: Ditto. + * gcc.target/i386/avx512f-vpandnq-2.c: Ditto. + * gcc.target/i386/avx512f-vpandq-1.c: Ditto. + * gcc.target/i386/avx512f-vpandq-2.c: Ditto. + * gcc.target/i386/avx512f-vpblendmd-1.c: Ditto. + * gcc.target/i386/avx512f-vpblendmd-2.c: Ditto. + * gcc.target/i386/avx512f-vpblendmq-1.c: Ditto. + * gcc.target/i386/avx512f-vpblendmq-2.c: Ditto. + * gcc.target/i386/avx512f-vpbroadcastd-1.c: Ditto. + * gcc.target/i386/avx512f-vpbroadcastd-2.c: Ditto. + * gcc.target/i386/avx512f-vpbroadcastq-1.c: Ditto. + * gcc.target/i386/avx512f-vpbroadcastq-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpd-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpd-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpeqd-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpeqd-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpeqq-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpeqq-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpgtd-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpgtd-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpgtq-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpgtq-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpq-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpq-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpud-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpud-2.c: Ditto. + * gcc.target/i386/avx512f-vpcmpuq-1.c: Ditto. + * gcc.target/i386/avx512f-vpcmpuq-2.c: Ditto. + * gcc.target/i386/avx512f-vpcompressd-1.c: Ditto. + * gcc.target/i386/avx512f-vpcompressd-2.c: Ditto. + * gcc.target/i386/avx512f-vpcompressq-1.c: Ditto. + * gcc.target/i386/avx512f-vpcompressq-2.c: Ditto. + * gcc.target/i386/avx512f-vpermd-1.c: Ditto. + * gcc.target/i386/avx512f-vpermd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermi2d-1.c: Ditto. + * gcc.target/i386/avx512f-vpermi2d-2.c: Ditto. + * gcc.target/i386/avx512f-vpermi2pd-1.c: Ditto. + * gcc.target/i386/avx512f-vpermi2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermi2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vpermi2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vpermi2q-1.c: Ditto. + * gcc.target/i386/avx512f-vpermi2q-2.c: Ditto. + * gcc.target/i386/avx512f-vpermilpd-1.c: Ditto. + * gcc.target/i386/avx512f-vpermilpd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermilpdi-1.c: Ditto. + * gcc.target/i386/avx512f-vpermilpdi-2.c: Ditto. + * gcc.target/i386/avx512f-vpermilps-1.c: Ditto. + * gcc.target/i386/avx512f-vpermilps-2.c: Ditto. + * gcc.target/i386/avx512f-vpermilpsi-1.c: Ditto. + * gcc.target/i386/avx512f-vpermilpsi-2.c: Ditto. + * gcc.target/i386/avx512f-vpermpd-1.c: Ditto. + * gcc.target/i386/avx512f-vpermpd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermpdi-1.c: Ditto. + * gcc.target/i386/avx512f-vpermpdi-2.c: Ditto. + * gcc.target/i386/avx512f-vpermps-1.c: Ditto. + * gcc.target/i386/avx512f-vpermps-2.c: Ditto. + * gcc.target/i386/avx512f-vpermq-imm-1.c: Ditto. + * gcc.target/i386/avx512f-vpermq-imm-2.c: Ditto. + * gcc.target/i386/avx512f-vpermq-var-1.c: Ditto. + * gcc.target/i386/avx512f-vpermq-var-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2d-1.c: Ditto. + * gcc.target/i386/avx512f-vpermt2d-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2pd-1.c: Ditto. + * gcc.target/i386/avx512f-vpermt2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2ps-1.c: Ditto. + * gcc.target/i386/avx512f-vpermt2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2q-1.c: Ditto. + * gcc.target/i386/avx512f-vpermt2q-2.c: Ditto. + * gcc.target/i386/avx512f-vpexpandd-1.c: Ditto. + * gcc.target/i386/avx512f-vpexpandd-2.c: Ditto. + * gcc.target/i386/avx512f-vpexpandq-1.c: Ditto. + * gcc.target/i386/avx512f-vpexpandq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmaxsd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmaxsd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmaxsq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmaxsq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmaxud-1.c: Ditto. + * gcc.target/i386/avx512f-vpmaxud-2.c: Ditto. + * gcc.target/i386/avx512f-vpmaxuq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmaxuq-2.c: Ditto. + * gcc.target/i386/avx512f-vpminsd-1.c: Ditto. + * gcc.target/i386/avx512f-vpminsd-2.c: Ditto. + * gcc.target/i386/avx512f-vpminsq-1.c: Ditto. + * gcc.target/i386/avx512f-vpminsq-2.c: Ditto. + * gcc.target/i386/avx512f-vpminud-1.c: Ditto. + * gcc.target/i386/avx512f-vpminud-2.c: Ditto. + * gcc.target/i386/avx512f-vpminuq-1.c: Ditto. + * gcc.target/i386/avx512f-vpminuq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovdb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovdb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovdw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovdw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovqb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovqb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovqd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovqd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovqw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovqw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsdb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsdb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsdw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsdw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsqw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxbd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxbd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxbq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxbq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxdq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxdq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxwd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxwd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxwq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovsxwq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovusdb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovusdb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovusdw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovusdw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqb-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqb-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqw-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovusqw-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxbd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxbd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxbq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxbq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxdq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxdq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxwd-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxwd-2.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxwq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmovzxwq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmuldq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmuldq-2.c: Ditto. + * gcc.target/i386/avx512f-vpmulld-1.c: Ditto. + * gcc.target/i386/avx512f-vpmulld-2.c: Ditto. + * gcc.target/i386/avx512f-vpmuludq-1.c: Ditto. + * gcc.target/i386/avx512f-vpmuludq-2.c: Ditto. + * gcc.target/i386/avx512f-vpord-1.c: Ditto. + * gcc.target/i386/avx512f-vpord-2.c: Ditto. + * gcc.target/i386/avx512f-vporq-1.c: Ditto. + * gcc.target/i386/avx512f-vporq-2.c: Ditto. + * gcc.target/i386/avx512f-vprold-1.c: Ditto. + * gcc.target/i386/avx512f-vprold-2.c: Ditto. + * gcc.target/i386/avx512f-vprolq-1.c: Ditto. + * gcc.target/i386/avx512f-vprolq-2.c: Ditto. + * gcc.target/i386/avx512f-vprolvd-1.c: Ditto. + * gcc.target/i386/avx512f-vprolvd-2.c: Ditto. + * gcc.target/i386/avx512f-vprolvq-1.c: Ditto. + * gcc.target/i386/avx512f-vprolvq-2.c: Ditto. + * gcc.target/i386/avx512f-vprord-1.c: Ditto. + * gcc.target/i386/avx512f-vprord-2.c: Ditto. + * gcc.target/i386/avx512f-vprorq-1.c: Ditto. + * gcc.target/i386/avx512f-vprorq-2.c: Ditto. + * gcc.target/i386/avx512f-vprorvd-1.c: Ditto. + * gcc.target/i386/avx512f-vprorvd-2.c: Ditto. + * gcc.target/i386/avx512f-vprorvq-1.c: Ditto. + * gcc.target/i386/avx512f-vprorvq-2.c: Ditto. + * gcc.target/i386/avx512f-vpshufd-1.c: Ditto. + * gcc.target/i386/avx512f-vpshufd-2.c: Ditto. + * gcc.target/i386/avx512f-vpslld-1.c: Ditto. + * gcc.target/i386/avx512f-vpslld-2.c: Ditto. + * gcc.target/i386/avx512f-vpslldi-1.c: Ditto. + * gcc.target/i386/avx512f-vpslldi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsllq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsllq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsllqi-1.c: Ditto. + * gcc.target/i386/avx512f-vpsllqi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsllvd-1.c: Ditto. + * gcc.target/i386/avx512f-vpsllvd-2.c: Ditto. + * gcc.target/i386/avx512f-vpsllvq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsllvq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsllvq512-1.c: Ditto. + * gcc.target/i386/avx512f-vpsllvq512-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrad-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrad-2.c: Ditto. + * gcc.target/i386/avx512f-vpsradi-1.c: Ditto. + * gcc.target/i386/avx512f-vpsradi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsraq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsraq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsraqi-1.c: Ditto. + * gcc.target/i386/avx512f-vpsraqi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsravd-1.c: Ditto. + * gcc.target/i386/avx512f-vpsravd-2.c: Ditto. + * gcc.target/i386/avx512f-vpsravq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsravq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsravq512-1.c: Ditto. + * gcc.target/i386/avx512f-vpsravq512-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrld-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrld-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrldi-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrldi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrlq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrlq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrlqi-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrlqi-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvd-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvd-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvq-2.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvq512-1.c: Ditto. + * gcc.target/i386/avx512f-vpsrlvq512-2.c: Ditto. + * gcc.target/i386/avx512f-vpsubd-1.c: Ditto. + * gcc.target/i386/avx512f-vpsubd-2.c: Ditto. + * gcc.target/i386/avx512f-vpsubq-1.c: Ditto. + * gcc.target/i386/avx512f-vpsubq-2.c: Ditto. + * gcc.target/i386/avx512f-vpternlogd-1.c: Ditto. + * gcc.target/i386/avx512f-vpternlogd-2.c: Ditto. + * gcc.target/i386/avx512f-vpternlogq-1.c: Ditto. + * gcc.target/i386/avx512f-vpternlogq-2.c: Ditto. + * gcc.target/i386/avx512f-vptestmd-1.c: Ditto. + * gcc.target/i386/avx512f-vptestmd-2.c: Ditto. + * gcc.target/i386/avx512f-vptestmq-1.c: Ditto. + * gcc.target/i386/avx512f-vptestmq-2.c: Ditto. + * gcc.target/i386/avx512f-vpunpckhdq-1.c: Ditto. + * gcc.target/i386/avx512f-vpunpckhdq-2.c: Ditto. + * gcc.target/i386/avx512f-vpunpckhqdq-1.c: Ditto. + * gcc.target/i386/avx512f-vpunpckhqdq-2.c: Ditto. + * gcc.target/i386/avx512f-vpunpckldq-1.c: Ditto. + * gcc.target/i386/avx512f-vpunpckldq-2.c: Ditto. + * gcc.target/i386/avx512f-vpunpcklqdq-1.c: Ditto. + * gcc.target/i386/avx512f-vpunpcklqdq-2.c: Ditto. + * gcc.target/i386/avx512f-vpxord-1.c: Ditto. + * gcc.target/i386/avx512f-vpxord-2.c: Ditto. + * gcc.target/i386/avx512f-vpxorq-1.c: Ditto. + * gcc.target/i386/avx512f-vpxorq-2.c: Ditto. + * gcc.target/i386/avx512f-vrcp14pd-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14pd-2.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ps-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ps-2.c: Ditto. + * gcc.target/i386/avx512f-vrcp14sd-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14sd-2.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ss-1.c: Ditto. + * gcc.target/i386/avx512f-vrcp14ss-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscalepd-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscalepd-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscaleps-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscaleps-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscalesd-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscalesd-2.c: Ditto. + * gcc.target/i386/avx512f-vrndscaless-1.c: Ditto. + * gcc.target/i386/avx512f-vrndscaless-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14pd-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14pd-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ps-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ps-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14sd-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14sd-2.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ss-1.c: Ditto. + * gcc.target/i386/avx512f-vrsqrt14ss-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefpd-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefpd-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefps-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefps-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto. + * gcc.target/i386/avx512f-vscalefss-1.c: Ditto. + * gcc.target/i386/avx512f-vscalefss-2.c: Ditto. + * gcc.target/i386/avx512f-vshuff32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vshuff32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vshuff64x2-1.c: Ditto. + * gcc.target/i386/avx512f-vshuff64x2-2.c: Ditto. + * gcc.target/i386/avx512f-vshufi32x4-1.c: Ditto. + * gcc.target/i386/avx512f-vshufi32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vshufi64x2-1.c: Ditto. + * gcc.target/i386/avx512f-vshufi64x2-2.c: Ditto. + * gcc.target/i386/avx512f-vshufpd-1.c: Ditto. + * gcc.target/i386/avx512f-vshufpd-2.c: Ditto. + * gcc.target/i386/avx512f-vshufps-1.c: Ditto. + * gcc.target/i386/avx512f-vshufps-2.c: Ditto. + * gcc.target/i386/avx512f-vsqrtpd-1.c: Ditto. + * gcc.target/i386/avx512f-vsqrtpd-2.c: Ditto. + * gcc.target/i386/avx512f-vsqrtps-1.c: Ditto. + * gcc.target/i386/avx512f-vsqrtps-2.c: Ditto. + * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto. + * gcc.target/i386/avx512f-vsqrtsd-2.c: Ditto. + * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto. + * gcc.target/i386/avx512f-vsqrtss-2.c: Ditto. + * gcc.target/i386/avx512f-vsubpd-1.c: Ditto. + * gcc.target/i386/avx512f-vsubpd-2.c: Ditto. + * gcc.target/i386/avx512f-vsubps-1.c: Ditto. + * gcc.target/i386/avx512f-vsubps-2.c: Ditto. + * gcc.target/i386/avx512f-vsubsd-1.c: Ditto. + * gcc.target/i386/avx512f-vsubsd-2.c: Ditto. + * gcc.target/i386/avx512f-vsubss-1.c: Ditto. + * gcc.target/i386/avx512f-vsubss-2.c: Ditto. + * gcc.target/i386/avx512f-vucomisd-1.c: Ditto. + * gcc.target/i386/avx512f-vucomiss-1.c: Ditto. + * gcc.target/i386/avx512f-vunpckhpd-1.c: Ditto. + * gcc.target/i386/avx512f-vunpckhpd-2.c: Ditto. + * gcc.target/i386/avx512f-vunpckhps-1.c: Ditto. + * gcc.target/i386/avx512f-vunpckhps-2.c: Ditto. + * gcc.target/i386/avx512f-vunpcklpd-1.c: Ditto. + * gcc.target/i386/avx512f-vunpcklpd-2.c: Ditto. + * gcc.target/i386/avx512f-vunpcklps-1.c: Ditto. + * gcc.target/i386/avx512f-vunpcklps-2.c: Ditto. + * gcc.target/i386/avx512f_cond_move.c: Ditto. + * gcc.target/i386/avx512f_evex_reg_asm-1.c: Ditto. + * gcc.target/i386/avx512f_evex_reg_asm-2.c: Ditto. + * gcc.target/i386/avx512pf-vgatherpf0dps-1.c: Ditto. + * gcc.target/i386/avx512pf-vgatherpf0qps-1.c: Ditto. + * gcc.target/i386/avx512pf-vgatherpf1dps-1.c: Ditto. + * gcc.target/i386/avx512pf-vgatherpf1qps-1.c: Ditto. + * gcc.target/i386/avx512pf-vscatterpf0dps-1.c: Ditto. + * gcc.target/i386/avx512pf-vscatterpf0qps-1.c: Ditto. + * gcc.target/i386/avx512pf-vscatterpf1dps-1.c: Ditto. + * gcc.target/i386/avx512pf-vscatterpf1qps-1.c: Ditto. + * gcc.target/i386/sse-12.c: Updated options. + * gcc.target/i386/sse-13.c: Updated options, added defines for + __builtin_ia32_addpd512_mask, __builtin_ia32_addps512_mask, + __builtin_ia32_addsd_mask, __builtin_ia32_addss_mask, + __builtin_ia32_alignd512_mask, __builtin_ia32_alignq512_mask, + __builtin_ia32_cmpd512_mask, __builtin_ia32_cmppd512_mask, + __builtin_ia32_cmpps512_mask, __builtin_ia32_cmpq512_mask, + __builtin_ia32_cmpsd_mask, __builtin_ia32_cmpss_mask, + __builtin_ia32_cvtdq2ps512_mask, __builtin_ia32_cvtpd2dq512_mask, + __builtin_ia32_cvtpd2ps512_mask, __builtin_ia32_cvtpd2udq512_mask, + __builtin_ia32_cvtps2dq512_mask, __builtin_ia32_cvtps2pd512_mask, + __builtin_ia32_cvtps2udq512_mask, __builtin_ia32_cvtsd2ss_mask, + __builtin_ia32_cvtsi2sd64, __builtin_ia32_cvtsi2ss32, + __builtin_ia32_cvtsi2ss64, __builtin_ia32_cvtss2sd_mask, + __builtin_ia32_cvttpd2dq512_mask, __builtin_ia32_cvttpd2udq512_mask, + __builtin_ia32_cvttps2dq512_mask, __builtin_ia32_cvttps2udq512_mask, + __builtin_ia32_cvtudq2ps512_mask, __builtin_ia32_cvtusi2sd64, + __builtin_ia32_cvtusi2ss32, __builtin_ia32_cvtusi2ss64, + __builtin_ia32_divpd512_mask, __builtin_ia32_divps512_mask, + __builtin_ia32_divsd_mask, __builtin_ia32_divss_mask, + __builtin_ia32_extractf32x4_mask, __builtin_ia32_extractf64x4_mask, + __builtin_ia32_extracti32x4_mask, __builtin_ia32_extracti64x4_mask, + __builtin_ia32_fixupimmpd512_mask, __builtin_ia32_fixupimmpd512_maskz, + __builtin_ia32_fixupimmps512_mask, __builtin_ia32_fixupimmps512_maskz, + __builtin_ia32_fixupimmsd_mask, __builtin_ia32_fixupimmsd_maskz, + __builtin_ia32_fixupimmss_mask, __builtin_ia32_fixupimmss_maskz, + __builtin_ia32_gatherdiv8df, __builtin_ia32_gatherdiv8di, + __builtin_ia32_gatherdiv16sf, __builtin_ia32_gatherdiv16si, + __builtin_ia32_gathersiv16sf, __builtin_ia32_gathersiv16si, + __builtin_ia32_gathersiv8df, __builtin_ia32_gathersiv8di, + __builtin_ia32_getexppd512_mask, __builtin_ia32_getexpps512_mask, + __builtin_ia32_getexpsd128_mask, __builtin_ia32_getexpss128_mask, + __builtin_ia32_getmantpd512_mask, __builtin_ia32_getmantps512_mask, + __builtin_ia32_getmantsd_mask, __builtin_ia32_getmantss_mask, + __builtin_ia32_insertf32x4_mask, __builtin_ia32_insertf64x4_mask, + __builtin_ia32_inserti32x4_mask, __builtin_ia32_inserti64x4_mask, + __builtin_ia32_maxpd512_mask, __builtin_ia32_maxps512_mask, + __builtin_ia32_maxsd_mask, __builtin_ia32_maxss_mask, + __builtin_ia32_minpd512_mask, __builtin_ia32_minps512_mask, + __builtin_ia32_minsd_mask, __builtin_ia32_minss_mask, + __builtin_ia32_mulpd512_mask, __builtin_ia32_mulps512_mask, + __builtin_ia32_mulsd_mask, __builtin_ia32_mulss_mask, + __builtin_ia32_permdf512_mask, __builtin_ia32_permdi512_mask, + __builtin_ia32_prold512_mask, __builtin_ia32_prolq512_mask, + __builtin_ia32_prord512_mask, __builtin_ia32_prorq512_mask, + __builtin_ia32_pshufd512_mask, __builtin_ia32_pslldi512_mask, + __builtin_ia32_psllqi512_mask, __builtin_ia32_psradi512_mask, + __builtin_ia32_psraqi512_mask, __builtin_ia32_psrldi512_mask, + __builtin_ia32_psrlqi512_mask, __builtin_ia32_pternlogd512_mask, + __builtin_ia32_pternlogd512_maskz, __builtin_ia32_pternlogq512_mask, + __builtin_ia32_pternlogq512_maskz, __builtin_ia32_rndscalepd_mask, + __builtin_ia32_rndscaleps_mask, __builtin_ia32_rndscalesd_mask, + __builtin_ia32_rndscaless_mask, __builtin_ia32_scalefpd512_mask, + __builtin_ia32_scalefps512_mask, __builtin_ia32_scalefsd_mask, + __builtin_ia32_scalefss_mask, __builtin_ia32_scatterdiv8df, + __builtin_ia32_scatterdiv8di, __builtin_ia32_scatterdiv16sf, + __builtin_ia32_scatterdiv16si, __builtin_ia32_scattersiv16sf, + __builtin_ia32_scattersiv16si, __builtin_ia32_scattersiv8df, + __builtin_ia32_scattersiv8di, __builtin_ia32_shuf_f32x4_mask, + __builtin_ia32_shuf_f64x2_mask, __builtin_ia32_shuf_i32x4_mask, + __builtin_ia32_shuf_i64x2_mask, __builtin_ia32_shufpd512_mask, + __builtin_ia32_shufps512_mask, __builtin_ia32_sqrtpd512_mask, + __builtin_ia32_sqrtps512_mask, __builtin_ia32_sqrtsd_mask, + __builtin_ia32_sqrtss_mask, __builtin_ia32_subpd512_mask, + __builtin_ia32_subps512_mask, __builtin_ia32_subsd_mask, + __builtin_ia32_subss_mask, __builtin_ia32_ucmpd512_mask, + __builtin_ia32_ucmpq512_mask, __builtin_ia32_vcomisd, + __builtin_ia32_vcomiss, __builtin_ia32_vcvtph2ps512_mask, + __builtin_ia32_vcvtps2ph512_mask, __builtin_ia32_vcvtsd2si32, + __builtin_ia32_vcvtsd2si64, __builtin_ia32_vcvtsd2usi32, + __builtin_ia32_vcvtsd2usi64, __builtin_ia32_vcvtss2si32, + __builtin_ia32_vcvtss2si64, __builtin_ia32_vcvtss2usi32, + __builtin_ia32_vcvtss2usi64, __builtin_ia32_vcvttsd2si32, + __builtin_ia32_vcvttsd2si64, __builtin_ia32_vcvttsd2usi32, + __builtin_ia32_vcvttsd2usi64, __builtin_ia32_vcvttss2si32, + __builtin_ia32_vcvttss2si64, __builtin_ia32_vcvttss2usi32, + __builtin_ia32_vcvttss2usi64, __builtin_ia32_vfmaddpd512_mask, + __builtin_ia32_vfmaddpd512_mask3, __builtin_ia32_vfmaddpd512_maskz, + __builtin_ia32_vfmaddps512_mask, __builtin_ia32_vfmaddps512_mask3, + __builtin_ia32_vfmaddps512_maskz, __builtin_ia32_vfmaddsd3_mask, + __builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz, + __builtin_ia32_vfmaddss3_mask, __builtin_ia32_vfmaddss3_mask3, + __builtin_ia32_vfmaddss3_maskz, __builtin_ia32_vfmaddsubpd512_mask, + __builtin_ia32_vfmaddsubpd512_mask3, + __builtin_ia32_vfmaddsubpd512_maskz, + __builtin_ia32_vfmaddsubps512_mask, + __builtin_ia32_vfmaddsubps512_mask3, + __builtin_ia32_vfmaddsubps512_maskz, + __builtin_ia32_vfmsubaddpd512_mask3, + __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, + __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, + __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, + __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, + __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, + __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_vpermilpd512_mask, + __builtin_ia32_vpermilps512_mask, __builtin_ia32_exp2ps_mask, + __builtin_ia32_exp2pd_mask, __builtin_ia32_exp2ps_mask, + __builtin_ia32_exp2pd_mask, __builtin_ia32_rsqrt28ps_mask, + __builtin_ia32_rsqrt28pd_mask, __builtin_ia32_gatherpfdps, + __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, + __builtin_ia32_scatterpfqps, __builtin_ia32_addpd512_mask, + __builtin_ia32_addps512_mask, __builtin_ia32_addsd_mask, + __builtin_ia32_addss_mask, __builtin_ia32_alignd512_mask, + __builtin_ia32_alignq512_mask, __builtin_ia32_cmpd512_mask, + __builtin_ia32_cmppd512_mask, __builtin_ia32_cmpps512_mask, + __builtin_ia32_cmpq512_mask, __builtin_ia32_cmpsd_mask, + __builtin_ia32_cmpss_mask, __builtin_ia32_cvtdq2ps512_mask, + __builtin_ia32_cvtpd2dq512_mask, __builtin_ia32_cvtpd2ps512_mask, + __builtin_ia32_cvtpd2udq512_mask, __builtin_ia32_cvtps2dq512_mask, + __builtin_ia32_cvtps2pd512_mask, __builtin_ia32_cvtps2udq512_mask, + __builtin_ia32_cvtsd2ss_mask, __builtin_ia32_cvtsi2sd64, + __builtin_ia32_cvtsi2ss32, __builtin_ia32_cvtsi2ss64, + __builtin_ia32_cvtss2sd_mask, __builtin_ia32_cvttpd2dq512_mask, + __builtin_ia32_cvttpd2udq512_mask, __builtin_ia32_cvttps2dq512_mask, + __builtin_ia32_cvttps2udq512_mask, __builtin_ia32_cvtudq2ps512_mask, + __builtin_ia32_cvtusi2sd64, __builtin_ia32_cvtusi2ss32, + __builtin_ia32_cvtusi2ss64, __builtin_ia32_divpd512_mask, + __builtin_ia32_divps512_mask, __builtin_ia32_divsd_mask, + __builtin_ia32_divss_mask, __builtin_ia32_extractf32x4_mask, + __builtin_ia32_extractf64x4_mask, __builtin_ia32_extracti32x4_mask, + __builtin_ia32_extracti64x4_mask, __builtin_ia32_fixupimmpd512_mask, + __builtin_ia32_fixupimmpd512_maskz, __builtin_ia32_fixupimmps512_mask, + __builtin_ia32_fixupimmps512_maskz, __builtin_ia32_fixupimmsd_mask, + __builtin_ia32_fixupimmsd_maskz, __builtin_ia32_fixupimmss_mask, + __builtin_ia32_fixupimmss_maskz, __builtin_ia32_gatherdiv8df, + __builtin_ia32_gatherdiv8di, __builtin_ia32_gatherdiv16sf, + __builtin_ia32_gatherdiv16si, __builtin_ia32_gathersiv16sf, + __builtin_ia32_gathersiv16si, __builtin_ia32_gathersiv8df, + __builtin_ia32_gathersiv8di, __builtin_ia32_getexppd512_mask, + __builtin_ia32_getexpps512_mask, __builtin_ia32_getexpsd128_mask, + __builtin_ia32_getexpss128_mask, __builtin_ia32_getmantpd512_mask, + __builtin_ia32_getmantps512_mask, __builtin_ia32_getmantsd_mask, + __builtin_ia32_getmantss_mask, __builtin_ia32_insertf32x4_mask, + __builtin_ia32_insertf64x4_mask, __builtin_ia32_inserti32x4_mask, + __builtin_ia32_inserti64x4_mask, __builtin_ia32_maxpd512_mask, + __builtin_ia32_maxps512_mask, __builtin_ia32_maxsd_mask, + __builtin_ia32_maxss_mask, __builtin_ia32_minpd512_mask, + __builtin_ia32_minps512_mask, __builtin_ia32_minsd_mask, + __builtin_ia32_minss_mask, __builtin_ia32_mulpd512_mask, + __builtin_ia32_mulps512_mask, __builtin_ia32_mulsd_mask, + __builtin_ia32_mulss_mask, __builtin_ia32_permdf512_mask, + __builtin_ia32_permdi512_mask, __builtin_ia32_prold512_mask, + __builtin_ia32_prolq512_mask, __builtin_ia32_prord512_mask, + __builtin_ia32_prorq512_mask, __builtin_ia32_pshufd512_mask, + __builtin_ia32_pslldi512_mask, __builtin_ia32_psllqi512_mask, + __builtin_ia32_psradi512_mask, __builtin_ia32_psraqi512_mask, + __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlqi512_mask, + __builtin_ia32_pternlogd512_mask, __builtin_ia32_pternlogd512_maskz, + __builtin_ia32_pternlogq512_mask, __builtin_ia32_pternlogq512_maskz, + __builtin_ia32_rndscalepd_mask, __builtin_ia32_rndscaleps_mask, + __builtin_ia32_rndscalesd_mask, __builtin_ia32_rndscaless_mask, + __builtin_ia32_scalefpd512_mask, __builtin_ia32_scalefps512_mask, + __builtin_ia32_scalefsd_mask, __builtin_ia32_scalefss_mask, + __builtin_ia32_scatterdiv8df, __builtin_ia32_scatterdiv8di, + __builtin_ia32_scatterdiv16sf, __builtin_ia32_scatterdiv16si, + __builtin_ia32_scattersiv16sf, __builtin_ia32_scattersiv16si, + __builtin_ia32_scattersiv8df, __builtin_ia32_scattersiv8di, + __builtin_ia32_shuf_f32x4_mask, __builtin_ia32_shuf_f64x2_mask, + __builtin_ia32_shuf_i32x4_mask, __builtin_ia32_shuf_i64x2_mask, + __builtin_ia32_shufpd512_mask, __builtin_ia32_shufps512_mask, + __builtin_ia32_sqrtpd512_mask, __builtin_ia32_sqrtps512_mask, + __builtin_ia32_sqrtsd_mask, __builtin_ia32_sqrtss_mask, + __builtin_ia32_subpd512_mask, __builtin_ia32_subps512_mask, + __builtin_ia32_subsd_mask, __builtin_ia32_subss_mask, + __builtin_ia32_ucmpd512_mask, __builtin_ia32_ucmpq512_mask, + __builtin_ia32_vcomisd, __builtin_ia32_vcomiss, + __builtin_ia32_vcvtph2ps512_mask, __builtin_ia32_vcvtps2ph512_mask, + __builtin_ia32_vcvtsd2si32, __builtin_ia32_vcvtsd2si64, + __builtin_ia32_vcvtsd2usi32, __builtin_ia32_vcvtsd2usi64, + __builtin_ia32_vcvtss2si32, __builtin_ia32_vcvtss2si64, + __builtin_ia32_vcvtss2usi32, __builtin_ia32_vcvtss2usi64, + __builtin_ia32_vcvttsd2si32, __builtin_ia32_vcvttsd2si64, + __builtin_ia32_vcvttsd2usi32, __builtin_ia32_vcvttsd2usi64, + __builtin_ia32_vcvttss2si32, __builtin_ia32_vcvttss2si64, + __builtin_ia32_vcvttss2usi32, __builtin_ia32_vcvttss2usi64, + __builtin_ia32_vfmaddpd512_mask, __builtin_ia32_vfmaddpd512_mask3, + __builtin_ia32_vfmaddpd512_maskz, __builtin_ia32_vfmaddps512_mask, + __builtin_ia32_vfmaddps512_mask3, __builtin_ia32_vfmaddps512_maskz, + __builtin_ia32_vfmaddsd3_mask, __builtin_ia32_vfmaddsd3_mask3, + __builtin_ia32_vfmaddsd3_maskz, __builtin_ia32_vfmaddss3_mask, + __builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz, + __builtin_ia32_vfmaddsubpd512_mask, + __builtin_ia32_vfmaddsubpd512_mask3, + __builtin_ia32_vfmaddsubpd512_maskz, + __builtin_ia32_vfmaddsubps512_mask, + __builtin_ia32_vfmaddsubps512_mask3, + __builtin_ia32_vfmaddsubps512_maskz, + __builtin_ia32_vfmsubaddpd512_mask3, + __builtin_ia32_vfmsubaddps512_mask3, __builtin_ia32_vfmsubpd512_mask3, + __builtin_ia32_vfmsubps512_mask3, __builtin_ia32_vfmsubsd3_mask3, + __builtin_ia32_vfmsubss3_mask3, __builtin_ia32_vfnmaddpd512_mask, + __builtin_ia32_vfnmaddps512_mask, __builtin_ia32_vfnmsubpd512_mask, + __builtin_ia32_vfnmsubpd512_mask3, __builtin_ia32_vfnmsubps512_mask, + __builtin_ia32_vfnmsubps512_mask3, __builtin_ia32_vpermilpd512_mask, + __builtin_ia32_vpermilps512_mask, __builtin_ia32_gatherpfdps, + __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdps, + __builtin_ia32_scatterpfqps, __builtin_ia32_exp2pd_mask, + __builtin_ia32_exp2ps_mask, __builtin_ia32_rcp28pd_mask, + __builtin_ia32_rcp28ps_mask, __builtin_ia32_rsqrt28pd_mask, + __builtin_ia32_rsqrt28ps_mask. + * gcc.target/i386/sse-14.c (test_1y): New. + (test_2y): Ditto. + (test_2vx): Ditto. + (test_3x): Ditto. + (test_3v): Ditto. + (test_3vx): Ditto. + (test_4x): Ditto. + (test_4y): Ditto. + (test_4v): Ditto. + (pragma GCC target): Add avx512f, avx512er, avx512cd, avx512pf. + (tests): Add _mm512_cvt_roundepi32_ps, _mm512_cvt_roundepu32_ps, + _mm512_cvt_roundpd_epi32, _mm512_cvt_roundpd_epu32, + _mm512_cvt_roundpd_ps, _mm512_cvt_roundph_ps, + _mm512_cvt_roundps_epi32, _mm512_cvt_roundps_epu32, + _mm512_cvt_roundps_pd, _mm512_cvtps_ph, _mm512_cvtt_roundpd_epi32, + _mm512_cvtt_roundpd_epu32, _mm512_cvtt_roundps_epi32, + _mm512_cvtt_roundps_epu32, _mm512_extractf32x4_ps, + _mm512_extractf64x4_pd, _mm512_extracti32x4_epi32, + _mm512_extracti64x4_epi64, _mm512_getexp_round_pd, + _mm512_getexp_round_ps, _mm512_getmant_round_pd, + _mm512_getmant_round_ps, _mm512_permute_pd, _mm512_permute_ps, + _mm512_permutex_epi64, _mm512_permutex_pd, _mm512_rol_epi32, + _mm512_rol_epi64, _mm512_ror_epi32, _mm512_ror_epi64, + _mm512_shuffle_epi32, _mm512_slli_epi32, _mm512_slli_epi64, + _mm512_sqrt_round_pd, _mm512_sqrt_round_ps, _mm512_srai_epi32, + _mm512_srai_epi64, _mm512_srli_epi32, _mm512_srli_epi64, + _mm_cvt_roundsd_i32, _mm_cvt_roundsd_u32, _mm_cvt_roundss_i32, + _mm_cvt_roundss_u32, _mm_cvtt_roundsd_i32, _mm_cvtt_roundsd_u32, + _mm_cvtt_roundss_i32, _mm_cvtt_roundss_u32, _mm512_getmant_pd, + _mm512_getmant_ps, _mm_cvt_roundi32_ss, _mm512_add_round_pd, + _mm512_add_round_ps, _mm512_alignr_epi32, _mm512_alignr_epi64, + _mm512_cmp_epi32_mask, _mm512_cmp_epi64_mask, _mm512_cmp_epu32_mask, + _mm512_cmp_epu64_mask, _mm512_cmp_pd_mask, _mm512_cmp_ps_mask, + _mm512_div_round_pd, _mm512_div_round_ps, _mm512_i32gather_epi32, + _mm512_i32gather_epi64, _mm512_i32gather_pd, _mm512_i32gather_ps, + _mm512_i64gather_epi32, _mm512_i64gather_epi64, _mm512_i64gather_pd, + _mm512_i64gather_ps, _mm512_insertf32x4, _mm512_insertf64x4, + _mm512_inserti32x4, _mm512_inserti64x4, + _mm512_maskz_cvt_roundepi32_ps, _mm512_maskz_cvt_roundepu32_ps, + _mm512_maskz_cvt_roundpd_epi32, _mm512_maskz_cvt_roundpd_epu32, + _mm512_maskz_cvt_roundpd_ps, _mm512_maskz_cvt_roundph_ps, + _mm512_maskz_cvt_roundps_epi32, _mm512_maskz_cvt_roundps_epu32, + _mm512_maskz_cvt_roundps_pd, _mm512_maskz_cvtps_ph, + _mm512_maskz_cvtt_roundpd_epi32, _mm512_maskz_cvtt_roundpd_epu32, + _mm512_maskz_cvtt_roundps_epi32, _mm512_maskz_cvtt_roundps_epu32, + _mm512_maskz_extractf32x4_ps, _mm512_maskz_extractf64x4_pd, + _mm512_maskz_extracti32x4_epi32, _mm512_maskz_extracti64x4_epi64, + _mm512_maskz_getexp_round_pd, _mm512_maskz_getexp_round_ps, + _mm512_maskz_getmant_round_pd, _mm512_maskz_getmant_round_ps, + _mm512_maskz_permute_pd, _mm512_maskz_permute_ps, + _mm512_maskz_permutex_epi64, _mm512_maskz_permutex_pd, + _mm512_maskz_rol_epi32, _mm512_maskz_rol_epi64, + _mm512_maskz_ror_epi32, _mm512_maskz_ror_epi64, + _mm512_maskz_shuffle_epi32, _mm512_maskz_slli_epi32, + _mm512_maskz_slli_epi64, _mm512_maskz_sqrt_round_pd, + _mm512_maskz_sqrt_round_ps, _mm512_maskz_srai_epi32, + _mm512_maskz_srai_epi64, _mm512_maskz_srli_epi32, + _mm512_maskz_srli_epi64, _mm512_max_round_pd, _mm512_max_round_ps, + _mm512_min_round_pd, _mm512_min_round_ps, _mm512_mul_round_pd, + _mm512_mul_round_ps, _mm512_scalef_round_pd, _mm512_scalef_round_ps, + _mm512_shuffle_f32x4, _mm512_shuffle_f64x2, _mm512_shuffle_i32x4, + _mm512_shuffle_i64x2, _mm512_shuffle_pd, _mm512_shuffle_ps, + _mm512_sub_round_pd, _mm512_sub_round_ps, _mm_add_round_sd, + _mm_add_round_ss, _mm_cmp_sd_mask, _mm_cmp_ss_mask, + _mm_cvt_roundi64_sd, _mm_cvt_roundi64_ss, _mm_cvt_roundsd_ss, + _mm_cvt_roundss_sd, _mm_cvt_roundu32_ss, _mm_cvt_roundu64_sd, + _mm_cvt_roundu64_ss, _mm_div_round_sd, _mm_div_round_ss, + _mm_getexp_round_sd, _mm_getexp_round_ss, _mm_getmant_round_sd, + _mm_getmant_round_ss, _mm_mul_round_sd, _mm_mul_round_ss, + _mm_scalef_round_sd, _mm_scalef_round_ss, _mm_sqrt_round_sd, + _mm_sqrt_round_ss, _mm_sub_round_sd, _mm_sub_round_ss, + _mm512_cmp_round_pd_mask, _mm512_cmp_round_ps_mask, + _mm512_maskz_roundscale_round_pd, _mm512_maskz_roundscale_round_ps, + _mm_cmp_round_sd_mask, _mm_cmp_round_ss_mask, _mm_comi_round_sd, + _mm_comi_round_ss, _mm_roundscale_round_sd, _mm_roundscale_round_ss, + _mm512_fmadd_round_pd, _mm512_fmadd_round_ps, + _mm512_fmaddsub_round_pd, _mm512_fmaddsub_round_ps, + _mm512_fmsub_round_pd, _mm512_fmsub_round_ps, + _mm512_fmsubadd_round_pd, _mm512_fmsubadd_round_ps, + _mm512_fnmadd_round_pd, _mm512_fnmadd_round_ps, + _mm512_fnmsub_round_pd, _mm512_fnmsub_round_ps, + _mm512_mask_cmp_epi32_mask, _mm512_mask_cmp_epi64_mask, + _mm512_mask_cmp_epu32_mask, _mm512_mask_cmp_epu64_mask, + _mm512_mask_cmp_pd_mask, _mm512_mask_cmp_ps_mask, + _mm512_mask_cvt_roundepi32_ps, _mm512_mask_cvt_roundepu32_ps, + _mm512_mask_cvt_roundpd_epi32, _mm512_mask_cvt_roundpd_epu32, + _mm512_mask_cvt_roundpd_ps, _mm512_mask_cvt_roundph_ps, + _mm512_mask_cvt_roundps_epi32, _mm512_mask_cvt_roundps_epu32, + _mm512_mask_cvt_roundps_pd, _mm512_mask_cvtps_ph, + _mm512_mask_cvtt_roundpd_epi32, _mm512_mask_cvtt_roundpd_epu32, + _mm512_mask_cvtt_roundps_epi32, _mm512_mask_cvtt_roundps_epu32, + _mm512_mask_extractf32x4_ps, _mm512_mask_extractf64x4_pd, + _mm512_mask_extracti32x4_epi32, _mm512_mask_extracti64x4_epi64, + _mm512_mask_getexp_round_pd, _mm512_mask_getexp_round_ps, + _mm512_mask_getmant_round_pd, _mm512_mask_getmant_round_ps, + _mm512_mask_permute_pd, _mm512_mask_permute_ps, + _mm512_mask_permutex_epi64, _mm512_mask_permutex_pd, + _mm512_mask_rol_epi32, _mm512_mask_rol_epi64, _mm512_mask_ror_epi32, + _mm512_mask_ror_epi64, _mm512_mask_shuffle_epi32, + _mm512_mask_slli_epi32, _mm512_mask_slli_epi64, + _mm512_mask_sqrt_round_pd, _mm512_mask_sqrt_round_ps, + _mm512_mask_srai_epi32, _mm512_mask_srai_epi64, + _mm512_mask_srli_epi32, _mm512_mask_srli_epi64, + _mm512_maskz_add_round_pd, _mm512_maskz_add_round_ps, + _mm512_maskz_alignr_epi32, _mm512_maskz_alignr_epi64, + _mm512_maskz_div_round_pd, _mm512_maskz_div_round_ps, + _mm512_maskz_insertf32x4, _mm512_maskz_insertf64x4, + _mm512_maskz_inserti32x4, _mm512_maskz_inserti64x4, + _mm512_maskz_max_round_pd, _mm512_maskz_max_round_ps, + _mm512_maskz_min_round_pd, _mm512_maskz_min_round_ps, + _mm512_maskz_mul_round_pd, _mm512_maskz_mul_round_ps, + _mm512_maskz_scalef_round_pd, _mm512_maskz_scalef_round_ps, + _mm512_maskz_shuffle_f32x4, _mm512_maskz_shuffle_f64x2, + _mm512_maskz_shuffle_i32x4, _mm512_maskz_shuffle_i64x2, + _mm512_maskz_shuffle_pd, _mm512_maskz_shuffle_ps, + _mm512_maskz_sub_round_pd, _mm512_maskz_sub_round_ps, + _mm512_ternarylogic_epi32, _mm512_ternarylogic_epi64, + _mm_fmadd_round_sd, _mm_fmadd_round_ss, _mm_fmsub_round_sd, + _mm_fmsub_round_ss, _mm_fnmadd_round_sd, _mm_fnmadd_round_ss, + _mm_fnmsub_round_sd, _mm_fnmsub_round_ss, _mm_mask_cmp_sd_mask, + _mm_mask_cmp_ss_mask, _mm_maskz_add_round_sd, _mm_maskz_add_round_ss, + _mm_maskz_cvt_roundsd_ss, _mm_maskz_cvt_roundss_sd, + _mm_maskz_div_round_sd, _mm_maskz_div_round_ss, + _mm_maskz_getexp_round_sd, _mm_maskz_getexp_round_ss, + _mm_maskz_getmant_round_sd, _mm_maskz_getmant_round_ss, + _mm_maskz_mul_round_sd, _mm_maskz_mul_round_ss, + _mm_maskz_scalef_round_sd, _mm_maskz_scalef_round_ss, + _mm_maskz_sqrt_round_sd, _mm_maskz_sqrt_round_ss, + _mm_maskz_sub_round_sd, _mm_maskz_sub_round_ss, + _mm512_i32scatter_epi32, _mm512_i32scatter_epi64, + _mm512_i32scatter_pd, _mm512_i32scatter_ps, _mm512_i64scatter_epi32, + _mm512_i64scatter_epi64, _mm512_i64scatter_pd, _mm512_i64scatter_ps, + _mm512_mask_roundscale_round_pd, _mm512_mask_roundscale_round_ps, + _mm512_mask_cmp_round_pd_mask, _mm512_mask_cmp_round_ps_mask, + _mm_fixupimm_round_sd, _mm_fixupimm_round_ss, + _mm_mask_cmp_round_sd_mask, _mm_mask_cmp_round_ss_mask, + _mm_maskz_roundscale_round_sd, _mm_maskz_roundscale_round_ss, + _mm512_mask3_fmadd_round_pd, _mm512_mask3_fmadd_round_ps, + _mm512_mask3_fmaddsub_round_pd, _mm512_mask3_fmaddsub_round_ps, + _mm512_mask3_fmsub_round_pd, _mm512_mask3_fmsub_round_ps, + _mm512_mask3_fmsubadd_round_pd, _mm512_mask3_fmsubadd_round_ps, + _mm512_mask3_fnmadd_round_pd, _mm512_mask3_fnmadd_round_ps, + _mm512_mask3_fnmsub_round_pd, _mm512_mask3_fnmsub_round_ps, + _mm512_mask_add_round_pd, _mm512_mask_add_round_ps, + _mm512_mask_alignr_epi32, _mm512_mask_alignr_epi64, + _mm512_mask_div_round_pd, _mm512_mask_div_round_ps, + _mm512_mask_fmadd_round_pd, _mm512_mask_fmadd_round_ps, + _mm512_mask_fmaddsub_round_pd, _mm512_mask_fmaddsub_round_ps, + _mm512_mask_fmsub_round_pd, _mm512_mask_fmsub_round_ps, + _mm512_mask_fmsubadd_round_pd, _mm512_mask_fmsubadd_round_ps, + _mm512_mask_fnmadd_round_pd, _mm512_mask_fnmadd_round_ps, + _mm512_mask_fnmsub_round_pd, _mm512_mask_fnmsub_round_ps, + _mm512_mask_i32gather_epi32, _mm512_mask_i32gather_epi64, + _mm512_mask_i32gather_pd, _mm512_mask_i32gather_ps, + _mm512_mask_i64gather_epi32, _mm512_mask_i64gather_epi64, + _mm512_mask_i64gather_pd, _mm512_mask_i64gather_ps, + _mm512_mask_insertf32x4, _mm512_mask_insertf64x4, + _mm512_mask_inserti32x4, _mm512_mask_inserti64x4, + _mm512_mask_max_round_pd, _mm512_mask_max_round_ps, + _mm512_mask_min_round_pd, _mm512_mask_min_round_ps, + _mm512_mask_mul_round_pd, _mm512_mask_mul_round_ps, + _mm512_mask_scalef_round_pd, _mm512_mask_scalef_round_ps, + _mm512_mask_shuffle_f32x4, _mm512_mask_shuffle_f64x2, + _mm512_mask_shuffle_i32x4, _mm512_mask_shuffle_i64x2, + _mm512_mask_shuffle_pd, _mm512_mask_shuffle_ps, + _mm512_mask_sub_round_pd, _mm512_mask_sub_round_ps, + _mm512_mask_ternarylogic_epi32, _mm512_mask_ternarylogic_epi64, + _mm512_maskz_fmadd_round_pd, _mm512_maskz_fmadd_round_ps, + _mm512_maskz_fmaddsub_round_pd, _mm512_maskz_fmaddsub_round_ps, + _mm512_maskz_fmsub_round_pd, _mm512_maskz_fmsub_round_ps, + _mm512_maskz_fmsubadd_round_pd, _mm512_maskz_fmsubadd_round_ps, + _mm512_maskz_fnmadd_round_pd, _mm512_maskz_fnmadd_round_ps, + _mm512_maskz_fnmsub_round_pd, _mm512_maskz_fnmsub_round_ps, + _mm512_maskz_ternarylogic_epi32, _mm512_maskz_ternarylogic_epi64, + _mm_mask3_fmadd_round_sd, _mm_mask3_fmadd_round_ss, + _mm_mask3_fmsub_round_sd, _mm_mask3_fmsub_round_ss, + _mm_mask3_fnmadd_round_sd, _mm_mask3_fnmadd_round_ss, + _mm_mask3_fnmsub_round_sd, _mm_mask3_fnmsub_round_ss, + _mm_mask_add_round_sd, _mm_mask_add_round_ss, _mm_mask_cvt_roundsd_ss, + _mm_mask_cvt_roundss_sd, _mm_mask_div_round_sd, _mm_mask_div_round_ss, + _mm_mask_fmadd_round_sd, _mm_mask_fmadd_round_ss, + _mm_mask_fmsub_round_sd, _mm_mask_fmsub_round_ss, + _mm_mask_fnmadd_round_sd, _mm_mask_fnmadd_round_ss, + _mm_mask_fnmsub_round_sd, _mm_mask_fnmsub_round_ss, + _mm_mask_getexp_round_sd, _mm_mask_getexp_round_ss, + _mm_mask_getmant_round_sd, _mm_mask_getmant_round_ss, + _mm_mask_mul_round_sd, _mm_mask_mul_round_ss, + _mm_mask_scalef_round_sd, _mm_mask_scalef_round_ss, + _mm_mask_sqrt_round_sd, _mm_mask_sqrt_round_ss, _mm_mask_sub_round_sd, + _mm_mask_sub_round_ss, _mm_maskz_fmadd_round_sd, + _mm_maskz_fmadd_round_ss, _mm_maskz_fmsub_round_sd, + _mm_maskz_fmsub_round_ss, _mm_maskz_fnmadd_round_sd, + _mm_maskz_fnmadd_round_ss, _mm_maskz_fnmsub_round_sd, + _mm_maskz_fnmsub_round_ss, _mm512_mask_i32scatter_epi32, + _mm512_mask_i32scatter_epi64, _mm512_mask_i32scatter_pd, + _mm512_mask_i32scatter_ps, _mm512_mask_i64scatter_epi32, + _mm512_mask_i64scatter_epi64, _mm512_mask_i64scatter_pd, + _mm512_mask_i64scatter_ps, _mm_mask_getmant_sd, _mm_mask_getmant_ss, + _mm_mask_roundscale_round_sd, _mm_mask_roundscale_round_ss, + _mm512_mask_fixupimm_round_pd, _mm512_mask_fixupimm_round_ps, + _mm512_maskz_fixupimm_round_pd, _mm512_maskz_fixupimm_round_ps, + _mm_mask_fixupimm_round_sd, _mm_mask_fixupimm_round_ss, + _mm_maskz_fixupimm_round_sd, _mm_maskz_fixupimm_round_ss, + _mm512_mask_prefetch_i32gather_ps, _mm512_mask_prefetch_i32scatter_ps, + _mm512_mask_prefetch_i64gather_ps, _mm512_mask_prefetch_i64scatter_ps, + _mm512_exp2a23_round_pd, _mm512_exp2a23_round_ps, + _mm512_rcp28_round_pd, _mm512_rcp28_round_ps, _mm512_rsqrt28_round_pd, + _mm512_rsqrt28_round_ps, _mm512_maskz_exp2a23_round_pd, + _mm512_maskz_exp2a23_round_ps, _mm512_maskz_rcp28_round_pd, + _mm512_maskz_rcp28_round_ps, _mm512_maskz_rsqrt28_round_pd, + _mm512_maskz_rsqrt28_round_ps, _mm512_mask_exp2a23_round_pd, + _mm512_mask_exp2a23_round_ps, _mm512_mask_rcp28_round_pd, + _mm512_mask_rcp28_round_ps, _mm512_mask_rsqrt28_round_pd, + _mm512_mask_rsqrt28_round_ps. + * gcc.target/i386/testimm-10.c: New file. + * gcc.target/i386/testround-1.c: Ditto. + * gcc.target/i386/testround-2.c: Ditto. + * gcc.target/x86_64/abi/avx512f/test_m512_returning.c: Ditto. + * gcc.target/x86_64/abi/avx512f/test_passing_m512.c: Ditto. + * gcc.target/x86_64/abi/avx512f/test_passing_structs.c: Ditto. + * gcc.target/x86_64/abi/avx512f/test_passing_unions.c: Ditto. + * gcc.target/i386/avx512cd-check.h: Ditto. + * gcc.target/i386/avx512er-check.h: Ditto. + * gcc.target/i386/avx512f-check.h: Ditto. + * gcc.target/i386/avx512f-helper.h: Ditto. + * gcc.target/i386/avx512f-mask-type.h: Ditto. + * gcc.target/i386/avx512f-os-support.h: Ditto. + * gcc.target/i386/i386.exp (check_effective_target_avx512f): New. + (check_effective_target_avx512cd): Ditto. + (check_effective_target_avx512er): Ditto. + * gcc.target/i386/m128-check.h (CHECK_FP_EXP): Ditto. + * gcc.target/i386/m512-check.h: Ditto. + * gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: New file. + * gcc.target/x86_64/abi/avx512f/args.h: Ditto. + * gcc.target/x86_64/abi/avx512f/asm-support.S: Ditto. + * gcc.target/x86_64/abi/avx512f/avx512f-check.h: Ditto. + * lib/target-supports.exp (check_effective_target_avx512f): New. + +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * gcc.target/i386/avx-1.c: Extend to AVX-512. + * gcc.target/i386/sse-22.c: Ditto. + * gcc.target/i386/sse-23.c: Ditto. + +2013-12-31 Alexander Ivchenko + Maxim Kuznetsov + Sergey Lega + Anna Tikhonova + Ilya Tocar + Andrey Turetskiy + Ilya Verbin + Kirill Yukhin + Michael Zolotukhin + + * gcc.target/i386/pr49002-2.c: allow vmovapd generation. + +2013-12-31 Sandra Loosemore + Chung-Lin Tang + Based on patches from Altera Corporation + + * gcc.dg/stack-usage-1.c (SIZE): Define case for __nios2__. + * gcc.dg/20040813-1.c: Skip for nios2-*-*. + * gcc.dg/20020312-2.c: Add __nios2__ case. + * g++.dg/other/PR23205.C: Skip for nios2-*-*. + * g++.dg/other/pr23205-2.C: Skip for nios2-*-*. + * g++.dg/cpp0x/constexpr-rom.C: Skip for nios2-*-*. + * g++.dg/cpp0x/alias-decl-debug-0.C: Skip for nios2-*-*. + * g++.old-deja/g++.jason/thunk3.C: Skip for nios2-*-*. + * lib/target-supports.exp (check_profiling_available): Check for + nios2-*-elf. + * gcc.c-torture/execute/pr47237.x:: Skip for nios2-*-*. + * gcc.c-torture/execute/20101011-1.c: Skip for nios2-*-*. + * gcc.c-torture/execute/builtins/lib/chk.c (memset): Place + char-based memset loop before inline check, to prevent + problems when called to initialize .bss. Update comments. + * gcc.target/nios2/nios2.exp: New DejaGNU file. + * gcc.target/nios2/nios2-custom-1.c: New test. + * gcc.target/nios2/nios2-trap-insn.c: New test. + * gcc.target/nios2/nios2-builtin-custom.c: New test. + * gcc.target/nios2/nios2-builtin-io.c: New test. + * gcc.target/nios2/nios2-stack-check-1.c: New test. + * gcc.target/nios2/nios2-stack-check-2.c: New test. + * gcc.target/nios2/nios2-rdctl.c: New test. + * gcc.target/nios2/nios2-wrctl.c: New test. + * gcc.target/nios2/nios2-wrctl-zero.c: New test. + * gcc.target/nios2/nios2-wrctl-not-zero.c: New test. + * gcc.target/nios2/nios2-rdwrctl-1.c: New test. + * gcc.target/nios2/nios2-reg-constraints.c: New test. + * gcc.target/nios2/nios2-ashlsi3-one_shift.c: New test. + * gcc.target/nios2/nios2-mul-options-1.c: New test. + * gcc.target/nios2/nios2-mul-options-2.c: New test. + * gcc.target/nios2/nios2-mul-options-3.c: New test. + * gcc.target/nios2/nios2-mul-options-4.c: New test. + * gcc.target/nios2/nios2-nor.c: New test. + * gcc.target/nios2/nios2-stxio.c: New test. + * gcc.target/nios2/custom-fp-1.c: New test. + * gcc.target/nios2/custom-fp-2.c: New test. + * gcc.target/nios2/custom-fp-3.c: New test. + * gcc.target/nios2/custom-fp-4.c: New test. + * gcc.target/nios2/custom-fp-5.c: New test. + * gcc.target/nios2/custom-fp-6.c: New test. + * gcc.target/nios2/custom-fp-7.c: New test. + * gcc.target/nios2/custom-fp-8.c: New test. + * gcc.target/nios2/custom-fp-cmp-1.c: New test. + * gcc.target/nios2/custom-fp-conversion.c: New test. + * gcc.target/nios2/custom-fp-double.c: New test. + * gcc.target/nios2/custom-fp-float.c: New test. + * gcc.target/nios2/nios2-int-types.c: New test. + * gcc.target/nios2/nios2-cache-1.c: New test. + * gcc.target/nios2/nios2-cache-2.c: New test. + +2013-12-30 Mike Stump + + PR c++/41090 + * g++.dg/ext/label13.C: Update to not expect failures. + +2013-12-30 Janus Weil + + PR fortran/58998 + * gfortran.dg/generic_28.f90: New. + +2013-12-30 Jakub Jelinek + + PR tree-optimization/59591 + * gcc.dg/vect/pr59591-1.c: New test. + * gcc.dg/vect/pr59591-2.c: New test. + * gcc.target/i386/pr59591-1.c: New test. + * gcc.target/i386/pr59591-2.c: New test. + + PR target/59501 + * gcc.target/i386/pr59501-1.c: New test. + * gcc.target/i386/pr59501-1a.c: New test. + * gcc.target/i386/pr59501-2.c: New test. + * gcc.target/i386/pr59501-2a.c: New test. + * gcc.target/i386/pr59501-3.c: New test. + * gcc.target/i386/pr59501-3a.c: New test. + * gcc.target/i386/pr59501-4.c: New test. + * gcc.target/i386/pr59501-4a.c: New test. + * gcc.target/i386/pr59501-5.c: New test. + * gcc.target/i386/pr59501-6.c: New test. + +2013-12-30 H.J. Lu + + PR target/59605 + * gcc.dg/pr59605.c: New test. + +2013-12-27 Yury Gribov + + PR target/59585 + * c-c++-common/ubsan/div-by-zero-1.c: Fixed pattern. + * c-c++-common/ubsan/div-by-zero-2.c: Likewise. + * c-c++-common/ubsan/div-by-zero-3.c: Likewise. + * c-c++-common/ubsan/load-bool-enum.c: Likewise. + * c-c++-common/ubsan/overflow-add-2.c: Likewise. + * c-c++-common/ubsan/overflow-mul-2.c: Likewise. + * c-c++-common/ubsan/overflow-mul-4.c: Likewise. + * c-c++-common/ubsan/overflow-negate-1.c: Likewise. + * c-c++-common/ubsan/overflow-sub-2.c: Likewise. + * c-c++-common/ubsan/pr59333.c: Likewise. + * c-c++-common/ubsan/shift-1.c: Likewise. + * c-c++-common/ubsan/shift-2.c: Likewise. + * c-c++-common/ubsan/shift-4.c: Likewise. + * c-c++-common/ubsan/vla-1.c: Likewise. + +2013-12-26 H.J. Lu + + * g++.old-deja/g++.other/store-expr1.C (dg-options): Replace + -mtune=i686 with -mtune=generic. + * g++.old-deja/g++.other/store-expr2.C (dg-options): Likewise. + +2013-12-26 H.J. Lu + + * gcc.target/i386/andor-2.c (dg-options): Replace -mtune=i686 + with -mtune=generic. + +2013-12-26 H.J. Lu + + PR target/59588 + * gcc.target/i386/pr59588-1.c: New file. + * gcc.target/i386/pr59588-2.c: Likewise. + +2013-12-26 Uros Bizjak + H.J. Lu + + PR target/59601 + * g++.dg/ext/mv14.C: New tests. + * g++.dg/ext/mv15.C: Likewise. + +2013-12-25 Allan Sandfeld Jensen + + PR target/59422 + * gcc.target/i386/funcspec-5.c (test_fma, test_xop, test_no_fma, + test_no_xop, test_arch_corei7, test_arch_corei7_avx, + test_arch_core_avx2, test_arch_bdver1, test_arch_bdver2, + test_arch_bdver3, test_tune_corei7, test_tune_corei7_avx, + test_tune_core_avx2, test_tune_bdver1, test_tune_bdver2 and + test_tune_bdver3): New function prototypes. + +2013-12-24 Renlin Li + + * gcc.target/arm/fixed_float_conversion.c: New test case. + +2013-12-23 Bingfeng Mei + + * gcc.dg/vect/vect-neg-store-1.c: New test. + * gcc.dg/vect/vect-neg-store-2.c: Ditto. + +2013-12-23 Bingfeng Mei + + PR middle-end/59569 + * gcc.c-torture/compile/pr59569-1.c: New test. + * gcc.c-torture/compile/pr59569-2.c: Ditto. + +2013-12-23 Marek Polacek + + PR c++/59111 + * g++.dg/cpp0x/pr59111.C: New test. + * g++.dg/cpp1y/pr59110.C: New test. + +2013-12-22 Uros Bizjak + + * gcc.target/x86_64/abi/callabi/func-2a.c (dg-do): Remove + target selector. + * gcc.target/x86_64/abi/callabi/func-indirect-2a.c (dg-do): Ditto. + * gcc.target/x86_64/abi/callabi/vaarg-4a.c (dg-do): Ditto. + * gcc.target/x86_64/abi/callabi/vaarg-5a.c (dg-do): Ditto. + +2013-12-20 Richard Earnshaw + + * gcc.target/arm/nested-apcs.c: New test. + +2013-12-20 Jakub Jelinek + + PR c++/59255 + * g++.dg/tree-prof/pr59255.C: New test. + +2013-12-20 Kyrylo Tkachov + + * gcc.target/arm/neon-vceq_p64.c: New test. + * gcc.target/arm/neon-vtst_p64.c: Likewise. + +2013-12-20 Bingfeng Mei + + PR tree-optimization/59544 + * gcc.target/i386/pr59544.c: New test. + +2013-12-20 Jakub Jelinek + + PR tree-optimization/59413 + * gcc.c-torture/execute/pr59413.c: New test. + + * c-c++-common/ubsan/load-bool-enum.c: New test. + +2013-12-04 Kyrylo Tkachov + + * lib/target-supports.exp (check_effective_target_arm_crypto_ok): + New procedure. + (add_options_for_arm_crypto): Likewise. + * gcc.target/arm/crypto-vaesdq_u8.c: New test. + * gcc.target/arm/crypto-vaeseq_u8.c: Likewise. + * gcc.target/arm/crypto-vaesimcq_u8.c: Likewise. + * gcc.target/arm/crypto-vaesmcq_u8.c: Likewise. + * gcc.target/arm/crypto-vldrq_p128.c: Likewise. + * gcc.target/arm/crypto-vmull_high_p64.c: Likewise. + * gcc.target/arm/crypto-vmullp64.c: Likewise. + * gcc.target/arm/crypto-vsha1cq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1h_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1mq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1pq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1su0q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha1su1q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256h2q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256hq_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256su0q_u32.c: Likewise. + * gcc.target/arm/crypto-vsha256su1q_u32.c: Likewise. + * gcc.target/arm/crypto-vstrq_p128.c: Likewise. + * gcc.target/arm/neon/vbslQp64: Generate. + * gcc.target/arm/neon/vbslp64: Likewise. + * gcc.target/arm/neon/vcombinep64: Likewise. + * gcc.target/arm/neon/vcreatep64: Likewise. + * gcc.target/arm/neon/vdupQ_lanep64: Likewise. + * gcc.target/arm/neon/vdupQ_np64: Likewise. + * gcc.target/arm/neon/vdup_lanep64: Likewise. + * gcc.target/arm/neon/vdup_np64: Likewise. + * gcc.target/arm/neon/vextQp64: Likewise. + * gcc.target/arm/neon/vextp64: Likewise. + * gcc.target/arm/neon/vget_highp64: Likewise. + * gcc.target/arm/neon/vget_lowp64: Likewise. + * gcc.target/arm/neon/vld1Q_dupp64: Likewise. + * gcc.target/arm/neon/vld1Q_lanep64: Likewise. + * gcc.target/arm/neon/vld1Qp64: Likewise. + * gcc.target/arm/neon/vld1_dupp64: Likewise. + * gcc.target/arm/neon/vld1_lanep64: Likewise. + * gcc.target/arm/neon/vld1p64: Likewise. + * gcc.target/arm/neon/vld2_dupp64: Likewise. + * gcc.target/arm/neon/vld2p64: Likewise. + * gcc.target/arm/neon/vld3_dupp64: Likewise. + * gcc.target/arm/neon/vld3p64: Likewise. + * gcc.target/arm/neon/vld4_dupp64: Likewise. + * gcc.target/arm/neon/vld4p64: Likewise. + * gcc.target/arm/neon/vreinterpretQf32_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQf32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_f32: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_p16: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_p8: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s16: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s32: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_s8: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u16: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u32: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u64: Likewise. + * gcc.target/arm/neon/vreinterpretQp128_u8: Likewise. + * gcc.target/arm/neon/vreinterpretQp16_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQp16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_f32: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_p16: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_p8: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s16: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s32: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s64: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_s8: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u16: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u32: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u64: Likewise. + * gcc.target/arm/neon/vreinterpretQp64_u8: Likewise. + * gcc.target/arm/neon/vreinterpretQp8_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQp8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs16_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs32_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs64_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs64_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQs8_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQs8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu16_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu32_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu64_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu64_p64: Likewise. + * gcc.target/arm/neon/vreinterpretQu8_p128: Likewise. + * gcc.target/arm/neon/vreinterpretQu8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretf32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretp16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretp64_f32: Likewise. + * gcc.target/arm/neon/vreinterpretp64_p16: Likewise. + * gcc.target/arm/neon/vreinterpretp64_p8: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s16: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s32: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s64: Likewise. + * gcc.target/arm/neon/vreinterpretp64_s8: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u16: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u32: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u64: Likewise. + * gcc.target/arm/neon/vreinterpretp64_u8: Likewise. + * gcc.target/arm/neon/vreinterpretp8_p64: Likewise. + * gcc.target/arm/neon/vreinterprets16_p64: Likewise. + * gcc.target/arm/neon/vreinterprets32_p64: Likewise. + * gcc.target/arm/neon/vreinterprets64_p64: Likewise. + * gcc.target/arm/neon/vreinterprets8_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu16_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu32_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu64_p64: Likewise. + * gcc.target/arm/neon/vreinterpretu8_p64: Likewise. + * gcc.target/arm/neon/vsliQ_np64: Likewise. + * gcc.target/arm/neon/vsli_np64: Likewise. + * gcc.target/arm/neon/vsriQ_np64: Likewise. + * gcc.target/arm/neon/vsri_np64: Likewise. + * gcc.target/arm/neon/vst1Q_lanep64: Likewise. + * gcc.target/arm/neon/vst1Qp64: Likewise. + * gcc.target/arm/neon/vst1_lanep64: Likewise. + * gcc.target/arm/neon/vst1p64: Likewise. + * gcc.target/arm/neon/vst2p64: Likewise. + * gcc.target/arm/neon/vst3p64: Likewise. + * gcc.target/arm/neon/vst4p64: Likewise. + +2013-12-19 Kyrylo Tkachov + + * lib/target-supports.exp (add_options_for_arm_crc): New procedure. + (check_effective_target_arm_crc_ok_nocache): Likewise. + (check_effective_target_arm_crc_ok): Likewise. + * gcc.target/arm/acle/: New directory. + * gcc.target/arm/acle/acle.exp: New. + * gcc.target/arm/acle/crc32b.c: New test. + * gcc.target/arm/acle/crc32h.c: Likewise. + * gcc.target/arm/acle/crc32w.c: Likewise. + * gcc.target/arm/acle/crc32d.c: Likewise. + * gcc.target/arm/acle/crc32cb.c: Likewise. + * gcc.target/arm/acle/crc32ch.c: Likewise. + * gcc.target/arm/acle/crc32cw.c: Likewise. + * gcc.target/arm/acle/crc32cd.c: Likewise. + +2013-12-19 Kyrylo Tkachov + + * c-c++-common/cilk-plus/SE/ef_error.c: Use -fopen-simd. + +2013-12-19 Oleg Endo + + * gcc.dg/long-long-compare-1.c: Don't use deprecated -mcbranchdi option + for target sh4-*-*. + +2013-12-19 Tejas Belagod + + * gcc.target/aarch64/pmull_1.c: New. + +2013-12-19 Tejas Belagod + + * gcc.target/aarch64/sha256_1.c: New. + +2013-12-19 Tejas Belagod + + * gcc.target/aarch64/sha1_1.c: New. + +2013-12-19 Tejas Belagod + + * gcc.target/aarch64/aes_1.c: New. + +2013-12-19 Dominik Vogt + Andreas Krebbel + + * gcc.target/s390/hotpatch-1.c: New test + * gcc.target/s390/hotpatch-2.c: New test + * gcc.target/s390/hotpatch-3.c: New test + * gcc.target/s390/hotpatch-4.c: New test + * gcc.target/s390/hotpatch-5.c: New test + * gcc.target/s390/hotpatch-6.c: New test + * gcc.target/s390/hotpatch-7.c: New test + * gcc.target/s390/hotpatch-8.c: New test + * gcc.target/s390/hotpatch-9.c: New test + * gcc.target/s390/hotpatch-10.c: New test + * gcc.target/s390/hotpatch-11.c: New test + * gcc.target/s390/hotpatch-12.c: New test + * gcc.target/s390/hotpatch-compile-1.c: New test + * gcc.target/s390/hotpatch-compile-2.c: New test + * gcc.target/s390/hotpatch-compile-3.c: New test + * gcc.target/s390/hotpatch-compile-4.c: New test + * gcc.target/s390/hotpatch-compile-5.c: New test + * gcc.target/s390/hotpatch-compile-6.c: New test + * gcc.target/s390/hotpatch-compile-7.c: New test + +2013-12-19 Kyrylo Tkachov + + * c-c++-common/cilk-plus/SE/ef_error.c: Add fopenmp effective + target check. + +2013-12-18 Steven G. Kargl + + * gfortran.dg/io_err_1.f90: New test. + +2013-12-18 Balaji V. Iyer + + * c-c++-common/cilk-plus/SE/ef_test.c: New test. + * c-c++-common/cilk-plus/SE/ef_test2.c: Likewise. + * c-c++-common/cilk-plus/SE/vlength_errors.c: Likewise. + * c-c++-common/cilk-plus/SE/ef_error.c: Likewise. + * c-c++-common/cilk-plus/SE/ef_error2.c: Likewise. + * c-c++-common/cilk-plus/SE/ef_error3.c: Likewise. + * gcc.dg/cilk-plus/cilk-plus.exp: Added calls for the above tests. + +2013-12-18 Jakub Jelinek + + PR target/59539 + * gcc.target/i386/pr59539-1.c: New test. + * gcc.target/i386/pr59539-2.c: New test. + +2013-12-18 Nick Clifton + + * gcc.dg/pr32912-2.c: Fix for 16-bit targets. + +2013-12-18 Eric Botcazou + + * gcc.dg/pr59418.c: New test. + +2013-12-17 Jakub Jelinek + + PR tree-optimization/59523 + * gcc.dg/pr59523.c: New test. + +2013-12-17 Marek Polacek + + * c-c++-common/ubsan/overflow-int128.c: New test. + +2013-12-17 Jakub Jelinek + + PR ipa/58290 + * gfortran.dg/pr58290.f90: New test. + +2013-12-17 Thomas Schwinge + + * gcc.dg/dfp/wtr-conversion-1.c (testfunc1): Fix typo. + +2013-12-17 Jan Hubicka + + * g++.dg/ipa/devirt-13.C: Update template. + +2013-12-16 Janus Weil + + PR fortran/54949 + * gfortran.dg/proc_ptr_44.f90: New. + +2013-12-16 Jakub Jelinek + + * c-c++-common/ubsan/overflow-mul-3.c: New test. + * c-c++-common/ubsan/overflow-mul-4.c: New test. + + PR libgomp/59337 + * gfortran.dg/gomp/pr59337.f90: New test. + +2013-12-16 Jakub Jelinek + + PR middle-end/58956 + PR middle-end/59470 + * gcc.target/i386/pr59470.c: New test. + +2013-12-14 Jan Hubicka + + PR ipa/59265 + g++.dg/torture/pr59265.C: New testcase. + +2013-12-15 Uros Bizjak + + * gcc.dg/vect/vect-nop-move.c (foo32x2_be): Call + __builtin_ia32_emms for 32bit x86 targets. + (foo32x2_le): Ditto. + (main): Reorder function calls. + +2013-12-15 Uros Bizjak + + * gcc.target/i386/pr57756.c (dg-options): Add -mno-sse3. + +2013-12-15 Uros Bizjak + + PR testsuite/58630 + * gcc.target/i386/pr43662.c (dg-options): + Add -maccumulate-outgoing-args. + * gcc.target/i386/pr43869.c (dg-options): Ditto. + * gcc.target/i386/pr57003.c (dg-options): Ditto. + * gcc.target/i386/avx-vzeroupper-16.c (dg-options): + Remove -mtune=generic and add -maccumulate-outgoing-args instead. + * gcc.target/i386/avx-vzeroupper-17.c (dg-options): Ditto. + * gcc.target/i386/avx-vzeroupper-18.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/func-1.c (dg-options): + Add -maccumulate-outgoing-args. + * gcc.target/x86_64/abi/callabi/func-2a.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/func-2b.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/func-indirect.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/func-indirect-2a.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/func-indirect-2b.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/leaf-1.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/leaf-2.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/pr38891.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/vaarg-1.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/vaarg-2.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/vaarg-3.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/vaarg-4a.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/vaarg-4b.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/vaarg-5a.c (dg-options): Ditto. + * gcc.target/x86_64/abi/callabi/vaarg-5b.c (dg-options): Ditto. + +2013-12-15 Janus Weil + + PR fortran/59493 + * gfortran.dg/unlimited_polymorphic_15.f90: New. + +2013-12-14 Jan Hubicka + + PR middle-end/58477 + * g++.dg/ipa/devirt-19.C: New testcase. + +2013-12-14 Marek Polacek + + * c-c++-common/ubsan/overflow-negate-1.c: Add more testing. Don't + require int128 target. + * c-c++-common/ubsan/overflow-negate-2.c: New test. + +2013-12-14 Janus Weil + + PR fortran/59502 + * gfortran.dg/class_57.f90: New. + +2013-12-14 H.J. Lu + + PR target/59492 + * g++.dg/other/pr59492.C: New file. + +2013-12-14 Andreas Schwab + + * g++.dg/cilk-plus/cilk-plus.exp: Fix last change. + +2013-12-14 Eric Botcazou + + * gcc.dg/pr59350.c: New test. + +2013-12-14 Marek Polacek + + * c-c++-common/ubsan/overflow-1.c: New test. + * c-c++-common/ubsan/overflow-2.c: New test. + +2013-12-14 Marek Polacek + + PR sanitizer/59503 + * c-c++-common/ubsan/pr59503.c: New test. + +2013-12-14 Janus Weil + + PR fortran/59450 + * gfortran.dg/typebound_proc_31.f90: New. + +2013-12-13 Rainer Orth + + * g++.dg/cilk-plus/cilk-plus.exp: Properly set ld_library_path. + Use TEST_EXTRA_LIBS instead of ALWAYS_CFLAGS. + +2013-12-03 Jeff Law + + PR tree-optimization/45685 + * gcc.dg/tree-ssa/pr45685.c: New test. + +2013-12-13 Bin Cheng + + PR tree-optimization/58296 + PR tree-optimization/41488 + * gcc.dg/tree-ssa/scev-7.c: New test. + * gcc.dg/pr41488.c: New test. + * g++.dg/pr59445.C: New test. + +2013-12-12 Tobias Burnus + + PR fortran/59440 + * gfortran.dg/namelist_83.f90: New. + * gfortran.dg/namelist_83_2.f90: New. + +2013-12-12 Jakub Jelinek + + PR middle-end/59470 + * g++.dg/opt/pr59470.C: New test. + +2013-12-12 Max Ostapenko + + * c-c++-common/tsan/free_race2.c: New file. + * c-c++-common/tsan/race_on_barrier2.c: Likewise. + * c-c++-common/tsan/race_on_mutex.c: Likewise. + * c-c++-common/tsan/race_on_mutex2.c: Likewise. + * c-c++-common/tsan/simple_race.c: Likewise. + * c-c++-common/tsan/simple_stack.c: Likewise. + * g++.dg/tsan/aligned_vs_unaligned_race.C: Likewise. + * g++.dg/tsan/atomic_free.C: Likewise. + * g++.dg/tsan/atomic_free2.C: Likewise. + * g++.dg/tsan/benign_race.C: Likewise. + * g++.dg/tsan/cond_race.C: Likewise. + * g++.dg/tsan/default_options.C: Likewise. + * g++.dg/tsan/fd_close_norace.C: Likewise. + * g++.dg/tsan/fd_close_norace2.C: Likewise. + * g++-dg/tsan/tsan.exp: Modified to run additional C++ tests. + +2013-12-12 Jakub Jelinek + + PR libgomp/59467 + * gfortran.dg/gomp/pr59467.f90: New test. + * c-c++-common/gomp/pr59467.c: New test. + +2013-12-12 Ryan Mansfield + + PR testsuite/59442 + * gcc.target/i386/sse2-movapd-1.c: Fix alignment attributes. + * gcc.target/i386/sse2-movapd-2.c: Likewise. + * gcc.target/i386/avx-vmovapd-256-1.c: Likewise. + * gcc.target/i386/avx-vmovapd-256-2.c: Likewise. + +2013-12-11 Sriraman Tallam + + PR target/59390 + * gcc.target/i386/pr59390.c: New test. + * gcc.target/i386/pr59390_1.c: New test. + * gcc.target/i386/pr59390_2.c: New test. + +2013-12-11 Balaji V. Iyer + + * g++.dg/cilk-plus/CK/catch_exc.cc: New test case. + * g++.dg/cilk-plus/CK/const_spawn.cc: Likewise. + * g++.dg/cilk-plus/CK/fib-opr-overload.cc: Likewise. + * g++.dg/cilk-plus/CK/fib-tplt.cc: Likewise. + * g++.dg/cilk-plus/CK/lambda_spawns.cc: Likewise. + * g++.dg/cilk-plus/CK/lambda_spawns_tplt.cc: Likewise. + * g++.dg/cilk-plus/cilk-plus.exp: Added support to run Cilk Keywords + test stored in c-c++-common. Also, added the Cilk runtime's library + to the ld_library_path. + +2013-12-11 Bernd Edlinger + + PR middle-end/59134 + * gcc.c-torture/compile/pr59134.c: New test. + * gnat.dg/misaligned_volatile.adb: New test. + +2013-12-11 Bernd Edlinger + Sandra Loosemore + + * gcc.dg/pr23623.c: Update to test interaction with C++ memory model. + +2013-12-11 Sandra Loosemore + + PR middle-end/23623 + PR middle-end/48784 + PR middle-end/56341 + PR middle-end/56997 + * gcc.dg/pr23623.c: New test. + * gcc.dg/pr48784-1.c: New test. + * gcc.dg/pr48784-2.c: New test. + * gcc.dg/pr56341-1.c: New test. + * gcc.dg/pr56341-2.c: New test. + * gcc.dg/pr56997-1.c: New test. + * gcc.dg/pr56997-2.c: New test. + * gcc.dg/pr56997-3.c: New test. + +2013-12-11 Janus Weil + + PR fortran/58916 + * gfortran.dg/allocate_with_source_4.f90: New. + +2013-12-11 Jakub Jelinek + + PR tree-optimization/59417 + * gcc.c-torture/compile/pr59417.c: New test. + + PR tree-optimization/59386 + * gcc.c-torture/compile/pr59386.c: New test. + +2013-12-11 Bin Cheng + + Reverted: + 2013-12-10 Bin Cheng + PR tree-optimization/41488 + * gcc.dg/tree-ssa/scev-7.c: New test. + * gcc.dg/pr41488.c: New test. + +2013-12-10 Janus Weil + + PR fortran/35831 + * gfortran.dg/c_by_val_5.f90: Modified. + * gfortran.dg/dummy_procedure_10.f90: New. + +2013-12-10 Yury Gribov + + * gcc-dg/tsan/tsan.exp: Added missing call to torture-finish. + * g++-dg/tsan/tsan.exp: Likewise. + +2013-12-10 Richard Biener + + PR middle-end/38474 + * gcc.dg/ipa/ipa-pta-14.c: Un-XFAIL. + +2013-12-10 Jakub Jelinek + + * gcc.dg/vect/vect-cond-11.c: New test. + * gcc.target/i386/vect-cond-1.c: New test. + * gcc.target/i386/avx2-gather-5.c: New test. + * gcc.target/i386/avx2-gather-6.c: New test. + * gcc.dg/vect/vect-mask-loadstore-1.c: New test. + * gcc.dg/vect/vect-mask-load-1.c: New test. + +2013-12-09 Marek Polacek + + PR sanitizer/59437 + * g++.dg/ubsan/pr59437.C: New test. + +2013-12-10 Max Ostapenko + + * c-c++-common/tsan/thread_leak2.c: `dg-skip-if' removed. + * gcc-dg/tsan/tsan.exp: Run only with '-O0' and '-O2' options. + * g++-dg/tsan/tsan.exp: Likewise. + +2013-12-10 Eric Botcazou + + * gcc.dg/vect/pr58508.c: XFAIL for vect_no_align. + * gcc.dg/vect/vect-reduc-pattern-3.c: Require vect_int_mult. + +2013-12-10 Bin Cheng + + PR tree-optimization/41488 + * gcc.dg/tree-ssa/scev-7.c: New test. + * gcc.dg/pr41488.c: New test. + +2013-12-09 Joseph Myers + + PR preprocessor/55715 + * gcc.dg/cpp/expr-overflow-1.c: New test. + +2013-12-10 Tobias Burnus + + PR fortran/59428 + PR fortran/58099 + PR fortran/58676 + PR fortran/41724 + * gfortran.dg/proc_ptr_result_4.f90: Fix proc-ptr interface. + +2013-12-09 Paolo Carlini + + PR c++/59435 + * g++.dg/cpp0x/variadic-sizeof3.C: New. + +2013-12-09 David Malcolm + + * g++.dg/plugin/selfassign.c (execute_warn_self_assign): Eliminate + use of FOR_EACH_BB in favor of FOR_EACH_BB_FN, to make use of cfun + explicit. + * gcc.dg/plugin/selfassign.c (execute_warn_self_assign): Likewise. + +2013-12-09 Richard Earnshaw + + * gcc.target/arm/ldrd-strd-offset.c: New. + +2013-12-09 Martin Jambor + + * gcc.c-torture/compile/pr39834.c: Remove optimization level option. + * gcc.c-torture/compile/pr48929.c: Likewise. + * gcc.c-torture/compile/pr55569.c: Likewise. + * gcc.c-torture/compile/sra-1.c: Likewise. + * gcc.c-torture/compile/pr45085.c: Moved to... + * gcc.dg/tree-ssa/pr45085.c: ...here, added compile dg-do. + +2013-12-09 Marek Polacek + + PR sanitizer/59415 + * g++.dg/ubsan/pr59415.C: New test. + +2013-12-09 Paolo Carlini + + PR c++/52707 + * g++.dg/cpp0x/deleted2.C: New. + +2013-12-09 Kyrylo Tkachov + + * gcc.dg/tree-ssa/loop-31.c: Update scan pattern. + +2013-12-09 Richard Sandiford + + * lib/asan-dg.exp (asan-gtest): Remove expected output from the + pass/fail line and add it to the log instead. + +2013-12-08 Oleg Endo + + PR target/52898 + PR target/51697 + * gcc.target/sh/pr51697.c: New. + +2013-12-08 Uros Bizjak + + * gcc.dg/macro-fusion-1.c: Cleanup sched2 rtl dump. + * gcc.dg/macro-fusion-2.c: Ditto. + * gcc.dg/vect/vect-simd-clone-10a.c: Cleanup vect tree dump. + * gcc.dg/vect/vect-simd-clone-12a.c: Ditto. + +2013-12-08 Tobias Burnus + + PR fortran/58099 + PR fortran/58676 + PR fortran/41724 + * gfortran.dg/elemental_subroutine_8.f90: New. + * gfortran.dg/proc_decl_9.f90: Add ELEMENTAL to make valid. + * gfortran.dg/proc_ptr_11.f90: Ditto. + * gfortran.dg/proc_ptr_result_8.f90: Ditto. + * gfortran.dg/proc_ptr_32.f90: Update dg-error. + * gfortran.dg/proc_ptr_33.f90: Ditto. + * gfortran.dg/proc_ptr_result_1.f90: Add abstract interface + which is not elemental. + * gfortran.dg/proc_ptr_result_7.f90: Ditto. + +2013-12-07 Janus Weil + + PR fortran/59414 + * gfortran.dg/class_result_2.f90: New. + +2013-12-06 Jakub Jelinek + + PR tree-optimization/59388 + * gcc.c-torture/execute/pr59388.c: New test. + +2013-12-06 Dominique d'Humieres + + PR testsuite/59043 + * g++.dg/pubtypes.C: Adjust the regular expression. + * gcc.dg/pubtypes-1.c: Likewise. + * gcc.dg/pubtypes-2.c: Likewise. + * gcc.dg/pubtypes-3.c: Likewise. + * gcc.dg/pubtypes-4.c: Likewise. + +2013-12-06 Tejas Belagod + + * gcc.dg/vect/vect-nop-move.c: Fix dg options. + +2013-12-06 Uros Bizjak + + PR target/59405 + * gcc.target/i386/pr59405.c: New test. + +2013-12-06 Ian Bolton + Mark Mitchell + + PR target/59091 + * gcc.target/arm/builtin-trap.c: New test. + * gcc.target/arm/thumb-builtin-trap.c: Likewise. + +2013-12-06 Eric Botcazou + + * gcc.target/sparc/pdistn.c: New test. + * gcc.target/sparc/pdistn-2.c: Likewise. + +2013-12-06 Richard Biener + + PR tree-optimization/59058 + * gcc.dg/torture/pr59058.c: New testcase. + +2013-12-05 Paolo Carlini + + * g++.dg/warn/pr15774-1.C: Adjust expected message. + +2013-12-05 Vladimir Makarov + + PR rtl-optimization/59317 + * gcc.target/mips/pr59317.c: New. + +2013-12-05 Marek Polacek + + PR sanitizer/59333 + PR sanitizer/59397 + * c-c++-common/ubsan/pr59333.c: New test. + * c-c++-common/ubsan/pr59397.c: New test. + +2013-12-05 Tejas Belagod + + * gcc.dg/vect/vect-nop-move.c: New test. + +2013-12-05 Max Ostapenko + + * c-c++-common/tsan/atomic_stack.c: New test. + * c-c++-common/tsan/fd_pipe_race.c: New test. + * c-c++-common/tsan/free_race.c: New test. + * c-c++-common/tsan/mutexset1.c: New test. + * c-c++-common/tsan/race_on_barrier.c: New test. + * c-c++-common/tsan/sleep_sync.c: New test. + * c-c++-common/tsan/thread_leak.c: New test. + * c-c++-common/tsan/thread_leak1.c: New test. + * c-c++-common/tsan/thread_leak2.c: New test. + * c-c++-common/tsan/tiny_race.c: New test. + * c-c++-common/tsan/tls_race.c: New test. + * c-c++-common/tsan/write_in_reader_lock.c: New test. + * lib/tsan-dg.exp: New file. + * gcc.dg/tsan/tsan.exp: New file. + * g++.dg/tsan/tsan.exp: New file. + * g++.dg/dg.exp: Prune tsan subdirectory. + +2013-12-05 Kirill Yukhin + + * gcc.target/i386/readeflags-1.c: New. + * gcc.target/i386/writeeflags-1.c: Ditto. + +2013-12-05 Yury Gribov + + PR sanitizer/59369 + * c-c++-common/asan/pr59063-1.c: Disable on non-Linux platforms. + * c-c++-common/asan/pr59063-2.c: Likewise. + +2013-12-05 Paolo Carlini + + * g++.dg/cpp0x/constexpr-46336.C: Adjust expected messages. + * g++.dg/cpp0x/defaulted2.C: Likewise. + * g++.dg/cpp1y/auto-fn8.C: Likewise. + * g++.dg/gomp/udr-3.C: Likewise. + * g++.dg/lookup/extern-c-redecl5.C: Likewise. + * g++.dg/lookup/linkage1.C: Likewise. + * g++.dg/overload/new1.C: Likewise. + * g++.dg/parse/friend5.C: Likewise. + * g++.dg/parse/namespace-alias-1.C: Likewise. + * g++.dg/parse/namespace10.C: Likewise. + * g++.dg/parse/redef2.C: Likewise. + * g++.dg/template/friend44.C: Likewise. + * g++.old-deja/g++.brendan/crash42.C: Likewise. + * g++.old-deja/g++.brendan/crash52.C: Likewise. + * g++.old-deja/g++.brendan/crash55.C: Likewise. + * g++.old-deja/g++.jason/overload21.C: Likewise. + * g++.old-deja/g++.jason/overload5.C: Likewise. + * g++.old-deja/g++.jason/redecl1.C: Likewise. + * g++.old-deja/g++.law/arm8.C: Likewise. + * g++.old-deja/g++.other/main1.C: Likewise. + +2013-12-05 Richard Biener + + PR tree-optimization/56787 + * gcc.dg/vect/pr56787.c: Adjust to not require vector float division. + +2013-12-05 Kostya Serebryany + + * c-c++-common/asan/null-deref-1.c: Update the test + to match the fresh asan run-time. + +2013-12-05 Richard Biener + + PR tree-optimization/59374 + * gcc.dg/torture/pr59374-1.c: New testcase. + * gcc.dg/torture/pr59374-2.c: Likewise. + +2013-12-05 Kirill Yukhin + + * gcc.target/ia64/pr52731.c: New. + +2013-12-04 Jeff Law + + * gcc.dg/pr38984.c: Use -fno-isolate-erroneous-paths-dereference. + * gcc.dg/tree-ssa/isolate-2.c: Explicitly turn on + -fisolate-erroneous-paths-attribute. + * gcc.dg/tree-ssa/isolate-4.c: Likewise. + +2013-12-04 Joseph Myers + + PR c/52023 + * gcc.dg/c11-align-6.c: New test. + +2013-12-04 Marek Polacek + + * c-c++-common/ubsan/overflow-mul-2.c: New test. + * c-c++-common/ubsan/overflow-add-1.c: New test. + * c-c++-common/ubsan/overflow-add-2.c: New test. + * c-c++-common/ubsan/overflow-mul-1.c: New test. + * c-c++-common/ubsan/overflow-sub-1.c: New test. + * c-c++-common/ubsan/overflow-sub-2.c: New test. + * c-c++-common/ubsan/overflow-negate-1.c: New test. + +2013-12-04 Marek Polacek + + PR c/54113 + * gcc.dg/pr54113.c: New test. + +2013-12-04 Jakub Jelinek + + PR c++/59268 + * g++.dg/cpp0x/constexpr-template6.C: New test. + +2013-12-04 Eric Botcazou + + * gnat.dg/pack19.adb: New test. + +2013-12-04 Jakub Jelinek + + PR rtl-optimization/58726 + * gcc.c-torture/execute/pr58726.c: New test. + + PR target/59163 + * g++.dg/torture/pr59163.C: New test. + + PR tree-optimization/59355 + * g++.dg/ipa/pr59355.C: New test. + +2013-12-04 Yufeng Zhang + + * gcc.dg/tree-ssa/slsr-39.c: Update. + * gcc.dg/tree-ssa/slsr-41.c: New test. + +2013-12-03 Adhemerval Zanella + + * gcc.target/powerpc/pr57363.c: New test. + +2013-12-03 Wei Mi + + PR rtl-optimization/59020 + * gcc.dg/pr59020.c: New. + * gcc.dg/macro-fusion-1.c: New. + * gcc.dg/macro-fusion-2.c: New. + +2013-12-03 Yury Gribov + + PR sanitizer/59063 + * lib/asan-dg.exp: Don't add anything to flags if libsanitizer + has not been found. + * lib/ubsan-dg.exp: Likewise. Append to flags also + -B${gccpath}/libsanitizer/. + +2013-12-03 Bill Schmidt + + * gcc.dg/vect/costmodel/ppc/costmodel-slp-34.c: Skip for little endian. + +2013-12-03 H.J. Lu + + PR target/59363 + * gcc.target/i386/pr59363.c: New file. + +2013-12-03 Marek Polacek + + PR c/59351 + * gcc.dg/pr59351.c: New test. + +2013-12-03 Chung-Ju Wu + + * gcc.dg/20020312-2.c: Add __nds32__ case. + * gcc.dg/builtin-apply2.c: Skip for nds32*-*-*. + * gcc.dg/sibcall-3.c: Expected fail for nds32*-*-*. + * gcc.dg/sibcall-4.c: Expected fail for nds32*-*-*. + * gcc.dg/stack-usage-1.c (SIZE): Define case for __nds32__. + * gcc.dg/torture/pr37868.c: Skip for nds32*-*-*. + * gcc.dg/torture/stackalign/builtin-apply-2.c: Skip for nds32*-*-*. + * gcc.dg/tree-ssa/20040204-1.c: Expected fail for nds32*-*-*. + * gcc.dg/tree-ssa/pr42585.c: Skip for nds32*-*-*. + * gcc.dg/tree-ssa/sra-12.c: Skip for nds32*-*-*. + * gcc.target/nds32: New nds32 specific directory and testcases. + * lib/target-supports.exp (check_profiling_available): Check for + nds32*-*-elf. + +2013-12-03 Jakub Jelinek + + PR tree-optimization/59362 + * gcc.c-torture/compile/pr59362.c: New test. + + PR middle-end/59011 + * gcc.dg/pr59011.c: New test. + + PR target/58864 + * g++.dg/opt/pr58864.C: New test. + +2013-12-02 Jeff Law + + PR tree-optimization/59322 + * gcc.c-torture/compile/pr59322.c: New test. + +2013-12-02 Sriraman Tallam + + PR target/58944 + * gcc.target/i386/pr58944.c: New test. + +2013-12-02 Joseph Myers + + PR c/58235 + * gcc.dg/c90-array-lval-8.c: New test. + +2013-12-02 Jakub Jelinek + + PR tree-optimization/59358 + * gcc.c-torture/execute/pr59358.c: New test. + + PR lto/59326 + * gcc.target/i386/i386.exp (check_effective_target_avx2): Move to... + * lib/target-supports.exp (check_effective_target_avx2): ... here. + (check_effective_target_vect_simd_clones): New. + * gcc.dg/vect/vect-simd-clone-1.c: Add dg-require-effective-target + vect_simd_clones. + * gcc.dg/vect/vect-simd-clone-2.c: Likewise. + * gcc.dg/vect/vect-simd-clone-3.c: Likewise. + * gcc.dg/vect/vect-simd-clone-4.c: Likewise. + * gcc.dg/vect/vect-simd-clone-5.c: Likewise. + * gcc.dg/vect/vect-simd-clone-6.c: Likewise. + * gcc.dg/vect/vect-simd-clone-7.c: Likewise. + * gcc.dg/vect/vect-simd-clone-8.c: Likewise. + * gcc.dg/vect/vect-simd-clone-9.c: Likewise. + * gcc.dg/vect/vect-simd-clone-10.c: Likewise. + * gcc.dg/vect/vect-simd-clone-11.c: Likewise. + * gcc.dg/vect/vect-simd-clone-12.c: Likewise. + +2013-12-02 Bernd Edlinger + + * gcc.dg/pr56997-4.c: New testcase. + +2013-12-02 Marek Polacek + + * c-c++-common/ubsan/vla-1.c: Split the tests into individual + functions. + +2013-12-02 Richard Biener + + PR tree-optimization/59139 + * gcc.dg/torture/pr59139.c: New testcase. + +2013-12-02 Eric Botcazou + + * gnat.dg/opt30.adb: New test. + +2013-12-01 Paul Thomas + + PR fortran/57354 + * gfortran.dg/realloc_on_assign_23.f90 : New test + +2013-12-01 Paul Thomas + + PR fortran/34547 + * gfortran.dg/null_5.f90 : Include new error. + * gfortran.dg/null_6.f90 : Include new error. + +2013-11-29 Marek Polacek + + PR sanitizer/59331 + * g++.dg/ubsan/pr59331.C: New test. + * g++.dg/ubsan/cxx1y-vla.C: Enable -Wall -Wno-unused-variable. + Disable the -w option. + * c-c++-common/ubsan/vla-1.c: Likewise. + * c-c++-common/ubsan/vla-2.c: Likewise. + * c-c++-common/ubsan/vla-3.c: Don't use the -w option. + +2013-11-29 Joseph Myers + + PR c/42262 + * gcc.dg/c99-init-5.c, gcc.dg/c99-init-6.c: New tests. + +2013-11-29 H.J. Lu + + * lib/asan-dg.exp (asan_link_flags): Properly add path to + libsanitizer.spec to cflags. + +2013-11-29 Richard Biener + + PR middle-end/59208 + * g++.dg/torture/pr59208.C: New testcase. + +2013-11-29 Jakub Jelinek + Yury Gribov + + PR sanitizer/59063 + * c-c++-common/asan/pr59063-1.c: New test. + * c-c++-common/asan/pr59063-2.c: Likewise. + * lib/asan-dg.exp: Add path to libsanitizer.spec to cflags. + * lib/ubsan-dg.exp: Likewise. + +2013-11-29 Eric Botcazou + + * gnat.dg/opt29.ad[sb]: New test. + +2013-11-29 Richard Biener + + PR middle-end/59338 + * gcc.dg/torture/pr59338.c: New testcase. + +2013-11-29 Jakub Jelinek + + PR lto/59326 + * gcc.dg/vect/vect-simd-clone-12.c: New test. + * gcc.dg/vect/vect-simd-clone-12a.c: New test. + * gcc.dg/vect/vect-simd-clone-10a.c: Remove extern keywords. + + PR c/59280 + * c-c++-common/pr59280.c: New test. + +2013-11-29 Zhenqiang Chen + + * gcc.target/arm/lp1243022.c: Skip target arm-neon. + +2013-11-29 Joseph Myers + + PR c/57574 + * gcc.dg/inline-35.c: New test. + +2013-11-28 Jakub Jelinek + + PR c++/59297 + * g++.dg/gomp/pr59297.C: New test. + +2013-11-28 Vladimir Makarov + + PR target/57293 + * gcc.target/i386/pr57293.c: New. + +2013-11-28 Kyrylo Tkachov + + * gcc.target/arm/vrinta-ce.c: New testcase. + +2013-11-28 Richard Biener + + PR lto/59323 + * gcc.dg/lto/pr59323-2_0.c: New testcase. + +2013-11-28 Richard Biener + + PR tree-optimization/59330 + * gcc.dg/torture/pr59330.c: New testcase. + +2013-11-28 Richard Biener + + PR lto/59323 + * gcc.dg/lto/pr59323_0.c: New testcase. + +2013-11-28 Jakub Jelinek + + PR middle-end/57393 + PR tree-optimization/58018 + PR tree-optimization/58131 + * gcc.dg/torture/pr57393-1.c: New test. + * gcc.dg/torture/pr57393-2.c: New test. + * gcc.dg/torture/pr57393-3.c: New test. + * gcc.dg/torture/pr58018.c: New test. + * gcc.dg/torture/pr58131.c: New test. + * gfortran.dg/pr57393-1.f90: New test. + * gfortran.dg/pr57393-2.f90: New test. + +2013-11-27 Bill Schmidt + + * gfortran.dg/nan_7.f90: Disable for little endian PowerPC. + +2013-11-27 Eric Botcazou + + * gcc.dg/guality/param-3.c: New test. + +2013-11-27 Uros Bizjak + Ganesh Gopalasubramanian + + PR target/56788 + * gcc.target/i386/xop-frczX.c: New test. + +2013-11-27 Jakub Jelinek + + PR tree-optimization/59014 + * gcc.c-torture/execute/pr59014-2.c: New test. + +2013-11-27 Paolo Carlini + + PR c++/58647 + * g++.dg/parse/crash66.C: New. + +2013-11-27 Kenneth Zadeck + + * gcc.dg/c90-const-expr-8.c: Look for overflow on INT_MIN % -1. + * gcc.dg/c99-const-expr-8.c: Look for overflow on INT_MIN % -1. + +2013-11-27 Marek Polacek + + PR sanitizer/59306 + * g++.dg/ubsan/pr59306.C: New test. + +2013-11-27 Aldy Hernandez + Jakub Jelinek + + * g++.dg/gomp/declare-simd-1.C (f38): Make sure + simdlen is a power of two. + * gcc.dg/gomp/simd-clones-2.c: Compile on all targets. + Remove -msse2. Adjust regexps for name mangling changes. + * gcc.dg/gomp/simd-clones-3.c: Likewise. + * gcc.dg/vect/vect-simd-clone-1.c: New test. + * gcc.dg/vect/vect-simd-clone-2.c: New test. + * gcc.dg/vect/vect-simd-clone-3.c: New test. + * gcc.dg/vect/vect-simd-clone-4.c: New test. + * gcc.dg/vect/vect-simd-clone-5.c: New test. + * gcc.dg/vect/vect-simd-clone-6.c: New test. + * gcc.dg/vect/vect-simd-clone-7.c: New test. + * gcc.dg/vect/vect-simd-clone-8.c: New test. + * gcc.dg/vect/vect-simd-clone-9.c: New test. + * gcc.dg/vect/vect-simd-clone-10.c: New test. + * gcc.dg/vect/vect-simd-clone-10.h: New file. + * gcc.dg/vect/vect-simd-clone-10a.c: New file. + * gcc.dg/vect/vect-simd-clone-11.c: New test. + +2013-11-27 Rainer Orth + + * gcc.dg/cilk-plus/cilk-plus.exp: Append to ld_library_path. + Call set_ld_library_path_env_vars. + * g++.dg/cilk-plus/cilk-plus.exp: Likewise. + +2013-11-27 Tom de Vries + Marc Glisse + + PR c++/59032 + * c-c++-common/pr59032.c: New testcase. + +2013-11-27 Tom de Vries + Marc Glisse + + PR middle-end/59037 + * c-c++-common/pr59037.c: New testcase. + +2013-11-27 Eric Botcazou + + * gcc.c-torture/execute/20131127-1.c: New test. + +2013-11-27 Richard Biener + + PR tree-optimization/59288 + * gcc.dg/torture/pr59288.c: New testcase. + +2013-11-27 Marek Polacek + + * c-c++-common/ubsan/undefined-1.c: New test. + +2013-11-26 Jakub Jelinek + + PR tree-optimization/59014 + * gcc.c-torture/execute/pr59014.c: New test. + + PR target/59229 + * gcc.c-torture/execute/pr59229.c: New test. + + PR rtl-optimization/59166 + * gcc.dg/torture/pr59166.c: New test. + + PR c++/58874 + * g++.dg/gomp/pr58874.C: New test. + + PR middle-end/59150 + * g++.dg/gomp/pr59150.C: New test. + + PR middle-end/59152 + * c-c++-common/gomp/pr59152.c: New test. + +2013-11-26 Uros Bizjak + + * gcc.dg/gomp/openmp-simd-1.c: Cleanup original tree dump. + * gcc.dg/gomp/openmp-simd-2.c: Ditto. + * g++.dg/gomp/openmp-simd-1.C: Ditto. + * g++.dg/gomp/openmp-simd-2.C: Ditto. + * gfortran.dg/c_loc_test_22.f90: Ditto. + * gcc.dg/tree-ssa/attr-alias-2.c: Cleanup optimized tree dump. + * gcc.dg/tree-ssa/isolate-5.c: Ditto. + * gcc.dg/tree-ssa/pr57361.c: Cleanup dse1 tree dump. + * gcc.dg/vect/vect-124.c: Cleanup vect tree dump. + * gcc.dg/pr57518.c: Cleanup ira rtl dump. + * gcc.dg/tree-prof/cold_partition_label.c: Cleanup saved temps. + +2013-11-26 Yufeng Zhang + + * gcc.target/arm/20131120.c: New test. + +2013-11-26 Richard Biener + + PR tree-optimization/59245 + * gcc.dg/torture/pr59245.c: New testcase. + +2013-11-26 Kyrylo Tkachov + + PR target/59290 + * gcc.target/arm/negdi-2.c: Scan more general register names. + +2013-11-26 Terry Guo + + * gcc.target/arm/thumb1-pic-high-reg.c: New case. + * gcc.target/arm/thumb1-pic-single-base.c: New case. + +2013-11-26 Paolo Carlini + + PR c++/58700 + * g++.dg/parse/bitfield4.C: New. + +2013-11-26 Richard Biener + + PR tree-optimization/59287 + * gcc.dg/tree-ssa/alias-29.c: New testcase. + +2013-11-25 Paolo Carlini + + PR c++/54485 + * g++.dg/other/default8.C: New. + * g++.dg/tc1/dr217.C: Remove xfail. + * g++.dg/other/default5.C: Adjust. + * g++.old-deja/g++.mike/p1989.C: Likewise. + +2013-11-25 Paolo Carlini + + PR c++/58607 + * g++.dg/cpp0x/constexpr-ice9.C: New. + +2013-11-25 Paolo Carlini + + PR c++/58810 + * g++.dg/other/cv_func3.C: New. + * g++.dg/other/cv_func.C: Adjust. + * g++.dg/parse/fn-typedef2.C: Likewise. + +2013-11-25 Marek Polacek + + PR sanitizer/59250 + * g++.dg/ubsan/pr59250.C: New test. + +2013-11-25 Janus Weil + + PR fortran/59143 + * gfortran.dg/typebound_proc_30.f90: New. + +2013-11-25 Paolo Carlini + + PR c++/59080 + * g++.dg/cpp0x/initlist75.C: New. + + PR c++/59096 + * g++.dg/cpp0x/gen-attrs-57.C: New. + +2013-11-25 Adam Butcher + + PR c++/59112 + PR c++/59113 + * g++.dg/cpp1y/pr58533.C: Updated testcase. + * g++.dg/cpp1y/pr59112.C: New testcase. + * g++.dg/cpp1y/pr59113.C: New testcase. + +2013-11-25 Terry Guo + + * gcc.target/arm/thumb2-slow-flash-data.c: New. + +2013-11-23 Uros Bizjak + + * gcc.dg/float-exact-1.c: Use dg-add-options ieee. + [LDBL_MANT_DIG == 113]: Fix wrong variable name. + +2013-11-23 Janus Weil + + PR fortran/59228 + * gfortran.dg/asynchronous_4.f90: New. + +2013-11-22 Jakub Jelinek + + * c-c++-common/asan/no-redundant-instrumentation-7.c: Fix + cleanup-tree-dump directive. + +2013-11-22 Jan Hubicka + + * gcc.dg/20081223-1.c: Add -ffat-lto-objects. + * gcc.dg/vect/vect.exp: Add -ffat-lto-objects. + +2013-11-22 Jakub Jelinek + + * g++.dg/ubsan/return-1.C: New test. + * g++.dg/ubsan/return-2.C: New test. + + * c-c++-common/asan/no-redundant-instrumentation-1.c: Tweak to avoid + optimizing away some __asan_report* calls. + +2013-11-22 Martin Jambor + + * gcc.dg/pr10474.c: Also test ppc64. + * gcc.dg/ira-shrinkwrap-prep-1.c: Also test ppc64, change all ints + to longs. + * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise. + +2013-11-22 Michael Meissner + + PR target/59054 + * gcc.target/powerpc/direct-move.h (VSX_REG_ATTR): Allow test to + specify an appropriate register class for VSX operations. + (load_vsx): Use it. + (load_gpr_to_vsx): Likewise. + (load_vsx_to_gpr): Likewise. + * gcc.target/powerpc/direct-move-vint1.c: Use an appropriate + register class for VSX registers that the type can handle. Remove + checks for explicit number of instructions generated, just check + if the instruction is generated. + * gcc.target/powerpc/direct-move-vint2.c: Likewise. + * gcc.target/powerpc/direct-move-float1.c: Likewise. + * gcc.target/powerpc/direct-move-float2.c: Likewise. + * gcc.target/powerpc/direct-move-double1.c: Likewise. + * gcc.target/powerpc/direct-move-double2.c: Likewise. + * gcc.target/powerpc/direct-move-long1.c: Likewise. + * gcc.target/powerpc/direct-move-long2.c: Likewise. + + * gcc.target/powerpc/pr59054.c: Remove duplicate code. + + * gcc.target/powerpc/bool3-av.c: Limit to 64-bit mode for now. + * gcc.target/powerpc/bool3-p7.c: Likewise. + * gcc.target/powerpc/bool3-p8.c: Likewise. + + * gcc.target/powerpc/p8vector-ldst.c: Just check that the + appropriate instructions are generated, don't check the count. + +2013-11-22 Richard Earnshaw + + PR target/59216 + * gcc.target/arm/negdi-4.c: Delete invalid test. + * gcc.dg/torture/pr59216.c: New test. + +2013-11-22 Alex Velenko + + * gcc.target/aarch64/vmov_n_1.c: New testcase. + +2013-11-22 Richard Biener + + * gcc.dg/torture/20131122-0.c: New testcase. + +2013-11-22 Jakub Jelinek + + * gcc.dg/vect/vect-124.c: New test. + +2013-11-21 Cary Coutant + + * gcc.dg/debug/dwarf2/mlt1.c: New test. + * gcc.dg/debug/dwarf2/mlt2.c: New test. + +2013-11-21 Jeff Law + + PR tree-optimization/59221 + * gcc.c-torture/execute/pr59221.c: New test. + +2013-11-21 Francois-Xavier Coudert + + PR libfortran/59227 + * gfortran.dg/erf_3.F90: XFAIL on spu-* and ia64-*-linux*. + Make more generic for other platforms. + +2013-11-21 Oleg Endo + + PR target/53976 + * gcc.target/sh/pr53976-1.c: New. + +2013-11-20 Francois-Xavier Coudert + + PR libfortran/49024 + * gfortran.dg/erf_3.F90: New file. + +2013-11-20 Bill Schmidt + + * gcc.target/powerpc/pr48258-1.c: Skip for little endian. + +2013-11-20 Vladimir Makarov + + PR rtl-optimization/59133 + * gcc.target/i386/pr59133.c: New. + +2013-11-20 Joseph Myers + + PR middle-end/21718 + * gcc.dg/float-exact-1.c: New test. + +2013-11-20 Richard Earnshaw + + PR rtl-optimization/54300 + * gcc.target/arm/pr54300.C: New test. + +2013-11-20 Diego Novillo + + PR 59212 + * g++.dg/plugin/selfassign.c: Include stringpool.h + +2013-11-20 Ulrich Weigand + + * gcc.target/powerpc/darwin-longlong.c (msw): Make endian-safe. + +2013-11-20 Dominik Vogt + + * gcc.target/s390/htm-1.c: Rename to ... + * gcc.target/s390/htm-builtins-compile-1.c: ... this one. + * gcc.target/s390/htm-xl-intrin-1.c: Rename to ... + * gcc.target/s390/htm-builtins-compile-3.c: ... this one. + * gcc.target/s390/htm-builtins-compile-2.c: New testcase. + * gcc.target/s390/htm-builtins-1.c: New testcase. + * gcc.target/s390/htm-builtins-2.c: New testcase. + * gcc.target/s390/s390.exp: Add check for htm machine. + +2013-11-19 Joshua J Cogliati + + PR c/53001 + * c-c++-common/Wfloat-conversion.c: Copies relevant + tests from c-c++-common/Wconversion-real.c, + gcc.dg/Wconversion-real-integer.c and gcc.dg/pr35635.c into + new testcase for conversions that are warned about by + -Wfloat-conversion. + +2013-11-19 Martin Jambor + + PR rtl-optimization/59099 + * gcc.target/i386/pr59099.c: New test. + +2013-11-19 Sriraman Tallam + + * gcc.dg/tree-prof/cold_partition_label.c: New testcase. + +2013-11-19 Ulrich Weigand + + * gcc.target/powerpc/ppc64-abi-2.c (MAKE_SLOT): New macro to + construct parameter slot value in endian-independent way. + (fcevv, fciievv, fcvevv): Use it. + +2013-11-19 Jan Hubicka + + * ipa/devirt9.C: Fix prevoius change. + +2013-11-19 Cesar Philippidis + + * gcc.c-torture/execute/20101011-1.c (__aarch64__): + Remove defined(__linux__). + +2013-11-19 Richard Biener + + PR tree-optimization/59164 + * gcc.dg/torture/pr59164.c: New testcase. + +2013-11-19 Richard Biener + + PR middle-end/58956 + * gcc.dg/torture/pr58956.c: New testcase. + +2013-11-19 Marek Polacek + + * c-c++-common/ubsan/null-1.c: New test. + * c-c++-common/ubsan/null-2.c: New test. + * c-c++-common/ubsan/null-3.c: New test. + * c-c++-common/ubsan/null-4.c: New test. + * c-c++-common/ubsan/null-5.c: New test. + * c-c++-common/ubsan/null-6.c: New test. + * c-c++-common/ubsan/null-7.c: New test. + * c-c++-common/ubsan/null-8.c: New test. + * c-c++-common/ubsan/null-9.c: New test. + * c-c++-common/ubsan/null-10.c: New test. + * c-c++-common/ubsan/null-11.c: New test. + * gcc.dg/ubsan/c99-shift-2.c: Adjust dg-output. + * c-c++-common/ubsan/shift-1.c: Likewise. + * c-c++-common/ubsan/div-by-zero-3.c: Likewise. + +2013-11-19 Uros Bizjak + + * gcc.dg/c11-complex-1.c: Use dg-add-options ieee. + +2013-11-19 Jan Hubicka + + * ipa/devirt9.C: Verify that the optimization happens already before. + whole-program. + +2013-11-19 Richard Biener + + PR tree-optimization/57517 + * gfortran.fortran-torture/compile/pr57517.f90: New testcase. + * gcc.dg/torture/pr57517.c: Likewise. + +2013-11-19 Jan Hubicka + + * gcc.target/i386/memcpy-3.c: New testcase. + +2013-11-18 Jan Hubicka + Uros Bizjak + + PR middle-end/59175 + * gcc.target/i386/memcpy-2.c: Fix template; + add +1 so the testcase passes at 32bit. + +2013-11-18 Dominique d'Humieres + + * c-c++-common/cilk-plus/PS/reduction-3.c: Use stdlib.h. + Remove spurious FIXME. + +2013-11-18 Kyrylo Tkachov + + * c-c++-common/cilk-plus/PS/body.c: Add fopenmp effective target check. + +2013-11-18 Paolo Carlini + + PR c++/53473 + * g++.dg/cpp0x/constexpr-noexcept7.C: New. + +2013-11-18 Richard Biener + + PR tree-optimization/59125 + PR tree-optimization/54570 + * gcc.dg/builtin-object-size-8.c: Un-xfail. + * gcc.dg/builtin-object-size-14.c: New testcase. + * gcc.dg/strlenopt-14gf.c: Adjust. + * gcc.dg/strlenopt-1f.c: Likewise. + * gcc.dg/strlenopt-4gf.c: Likewise. + +2013-11-18 Eric Botcazou + + * gnat.dg/volatile11.adb: New test. + * gnat.dg/volatile11_pkg.ad[sb]: New helper. + +2013-11-18 Yury Gribov + + PR sanitizer/59106 + * c-c++-common/asan/pr59106.c: New test. + +2013-11-17 Jan Hubicka + + * gcc.target/i386/memcpy-2.c: New testcase. + +2013-11-17 Uros Bizjak + + PR target/59153 + * gcc.target/i386/pr59153.c: New test. + +2013-11-17 Paolo Carlini + + PR c++/59123 + * g++.dg/cpp0x/constexpr-redeclaration1.C: New. + * g++.dg/cpp0x/constexpr-decl.C: Adjust. + +2013-11-16 Paolo Carlini + + PR c++/29143 + * g++.dg/overload/addr2.C: New. + * g++.old-deja/g++.other/overload11.C: Adjust. + +2013-11-15 Mike Stump + + * lib/gcc.exp (gcc_target_compile): Add support for random runtime + * lib/g++.exp (g++_target_compile): Likewise. + * gcc.dg/cilk-plus/cilk-plus.exp: Improve support for runtime + libraries. Remove debugging. + * g++.dg/cilk-plus/cilk-plus.exp: Add support to find runtime + libraries. Remove -O0, redundant with default. + +2013-11-15 Joseph Myers + + * c-c++-common/cpp/ucnid-2011-1.c: New test. + +2013-11-15 Paolo Carlini + + PR c++/58188 + * g++.dg/cpp0x/nsdmi-template8.C: New. + +2013-11-15 Paolo Carlini + + PR c++/58725 + * g++.dg/cpp0x/nsdmi-template7.C: New. + +2013-11-15 Paolo Carlini + + PR c++/58829 + * g++.dg/cpp0x/nsdmi-template6.C: New. + +2013-11-15 Paolo Carlini + + PR c++/58599 + * g++.dg/cpp0x/nsdmi-template5.C: New. + +2013-11-15 Aldy Hernandez + + * c-c++-common/cilk-plus/PS: New directory. + * g++.dg/cilk-plus/cilk-plus.exp: Run shared tests. + * g++.dg/dg.exp: Run Cilk Plus tests. + * gcc.dg/cilk-plus/cilk-plus.exp: Run shared tests. + +2013-11-15 Bill Schmidt + + * gcc.dg/vmx/3b-15.c: Revise for little endian. + +2013-11-15 Richard Biener + + PR tree-optimization/50262 + * gcc.dg/tree-ssa/alias-28.c: New testcase. + * gcc.dg/strlenopt-1.c: Adjust. + * gcc.dg/strlenopt-1f.c: Likewise. + +2013-11-15 Richard Biener + + * gcc.dg/torture/20131115-1.c: New testcase. + +2013-11-15 Joseph Myers + + * gcc.dg/cpp/ucnid-9.c: New test. + +2013-11-14 Eric Botcazou + + * gnat.dg/stack_usage1b.adb: New test. + * gnat.dg/stack_usage1c.adb: Likewise. + +2013-11-14 H.J. Lu + + * gnat.dg/specs/addr1.ads: Revert the last change. + * gnat.dg/specs/atomic1.ads: Likewise. + +2013-11-14 Cong Hou + + * gcc.dg/vect/vect-alias-check.c: Update. + +2013-11-14 Paolo Carlini + + PR c++/57887 + * g++.dg/cpp0x/nsdmi-template3.C: New. + * g++.dg/cpp0x/nsdmi-template4.C: Likewise. + +2013-11-14 Diego Novillo + + * gcc.dg/plugin/selfassign.c: Include stringpool.h. + * gcc.dg/plugin/start_unit_plugin.c: Likewise. + +2013-11-14 Ulrich Weigand + + * gcc.target/powerpc/ppc64-abi-1.c (stack_frame_t): Remove + compiler and linker field if _CALL_ELF == 2. + * gcc.target/powerpc/ppc64-abi-2.c (stack_frame_t): Likewise. + * gcc.target/powerpc/ppc64-abi-dfp-1.c (stack_frame_t): Likewise. + * gcc.dg/stack-usage-1.c (SIZE): Update value for _CALL_ELF == 2. + +2013-11-14 Ulrich Weigand + + * gcc.target/powerpc/ppc64-abi-dfp-1.c (FUNC_START): New macro. + (WRAPPER): Use it. + * gcc.target/powerpc/no-r11-1.c: Skip on powerpc_elfv2. + * gcc.target/powerpc/no-r11-2.c: Skip on powerpc_elfv2. + * gcc.target/powerpc/no-r11-3.c: Skip on powerpc_elfv2. + +2013-11-14 Ulrich Weigand + + * lib/target-supports.exp (check_effective_target_powerpc_elfv2): + New function. + * gcc.target/powerpc/pr57949-1.c: Disable for powerpc_elfv2. + * gcc.target/powerpc/pr57949-2.c: Likewise. + +2013-11-14 Ulrich Weigand + + * g++.dg/eh/ppc64-sighandle-cr.C: New test. + +2013-11-14 Rainer Orth + + * gcc.dg/torture/float128-cmp-invalid.c: Require fenv_exceptions. + * gcc.dg/torture/float128-div-underflow.c: Likewise. + * gcc.dg/torture/float128-extend-nan.c: Likewise. + +2013-11-14 Richard Biener + + * gcc.dg/tree-ssa/ssa-vrp-thread-1.c: Fix target selector. + +2013-11-14 H.J. Lu + + * gnat.dg/specs/addr1.ads: XFAIL on x32. + * gnat.dg/specs/atomic1.ads: Likewise. + +2013-11-14 James Greenhalgh + + * gcc.target/aarch64/cpu-diagnostics-2.c: Change "-mcpu=" + to "cortex-a53". + * gcc.target/aarch64/cpu-diagnostics-3.c: Change "-mcpu=" + to "cortex-a53". + +2013-11-14 Rainer Orth + + * gcc.dg/atomic/c11-atomic-exec-4.c: Define _XOPEN_SOURCE=600 on + *-*-solaris2.1[0-9]*. + * gcc.dg/atomic/c11-atomic-exec-5.c: Likewise. + +2013-11-14 Joey Ye + + * gcc.dg/tree-ssa/forwprop-28.c: Disable for cortex_m. + * gcc.dg/tree-ssa/vrp47.c: Likewise. + * gcc.dg/tree-ssa/vrp87.c: Likewise. + * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Ingore for cortex_m. + * gcc.dg/tree-ssa/ssa-vrp-thread-1.c: Likewise. + +2013-11-14 Adam Butcher + + PR c++/58533 + * g++.dg/cpp1y/pr58533.C: New testcase (fixed by r204714). + +2013-11-14 Jakub Jelinek + + PR target/59101 + * gcc.c-torture/execute/pr59101.c: New test. + +2013-11-13 Jeff Law + + PR tree-optimization/59102 + * gcc.c-torture/compile/pr59102.c: New test. + +2013-11-13 Tom de Vries + + * gcc.dg/tail-merge-store.c: New test. + +2013-11-13 Andrew MacLeod + + * g++.dg/plugin/selfassign.c: Include gimple-iterator.h. + * gcc.dg/plugin/selfassign.c: Likewise. + +2013-11-13 Jeff Law + + * PR middle-end/59119 + * gcc.c-torture/compile/pr59119.c: New test. + +2013-11-13 Martin Jambor + + * gcc.dg/ira-shrinkwrap-prep-1.c: Add lp64 to target requirements. + * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise. + * gcc.dg/pr10474.c: Likewise. + +2013-11-13 Cesar Philippidis + + * lib/target-supports.exp + (check_effective_target_vect_cmdline_neeed): Add AArch64 to the list + of targets that do not need command line argument to enable SIMD. + +2013-11-13 Eric Botcazou + + * gcc.dg/guality/param-4.c: New test. + +2013-11-13 Joseph Myers + + * gcc.dg/c11-complex-1.c: New test. + +2013-11-13 Joseph Myers + + * gcc.dg/atomic/stdatomic-vm.c, gcc.dg/auto-type-1.c, + gcc.dg/auto-type-2.c: New tests. + +2013-11-12 Balaji V. Iyer + + * gcc.dg/cilk-plus/cilk-plus.exp: Added a check for LTO before running + LTO tests. + +2013-11-12 Jeff Law + + * gcc.dg/tree-ssa/isolate-1.c: Update expected output. + * gcc.dg/tree-ssa/isolate-5.c: Verify the load survives through + the SSA optimizers. + +2013-11-12 Michael Meissner + + PR target/59054 + * gcc.target/powerpc/pr59054.c: New test. + +2013-11-12 Adam Butcher + + * g++.dg/cpp1y/lambda-generic.C: New test case. + * g++.dg/cpp1y/lambda-generic-cfun.C: New test case. + * g++.dg/cpp1y/lambda-generic-dep.C: New test case. + * g++.dg/cpp1y/lambda-generic-udt.C: New test case. + * g++.dg/cpp1y/lambda-generic-variadic.C: New test case. + * g++.dg/cpp1y/lambda-generic-x.C: New test case. + * g++.dg/cpp1y/lambda-generic-xcfun.C: New test case. + * g++.dg/cpp1y/lambda-generic-xudt.C: New test case. + * g++.dg/cpp1y/lambda-generic-mixed.C: New test case. + +2013-11-12 Adam Butcher + + PR c++/58534 + PR c++/58536 + PR c++/58548 + PR c++/58549 + PR c++/58637 + * g++.dg/cpp1y/pr58534.C: New testcase. + * g++.dg/cpp1y/pr58536.C: New testcase. + * g++.dg/cpp1y/pr58548.C: New testcase. + * g++.dg/cpp1y/pr58549.C: New testcase. + * g++.dg/cpp1y/pr58637.C: New testcase. + +2013-11-12 Joseph Myers + + * gcc.dg/c90-thread-local-1.c, gcc.dg/c99-thread-local-1.c, + gcc.dg/c11-thread-local-1.c, gcc.dg/c11-thread-local-2.c: New tests. + * gcc.dg/tls/diag-2.c, objc.dg/tls/diag-2.m: Update expected + diagnostics. + +2013-11-12 Tristan Gingold + + * gnat.dg/aggr21.adb: New test. + * gnat.dg/aggr21_pkg.ad[sb]: New helper. + +2013-11-12 Jeff Law + + * gcc.dg/tree-ssa/isolate-1.c: Update expected output. + * gcc.dg/tree-ssa/isolate-5.c: New test. + +2013-11-12 Martin Jambor + + PR rtl-optimization/10474 + * gcc.dg/pr10474.c: New testcase. + * gcc.dg/ira-shrinkwrap-prep-1.c: Likewise. + * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise. + +2013-11-12 Paolo Carlini + + PR c++/57734 + * g++.dg/cpp0x/alias-decl-enum-1.C: New. + +2013-11-11 Martin Liska + + * gcc.dg/time-profiler-1.c: New test. + * gcc.dg/time-profiler-2.c: Ditto. + +2013-11-11 Marc Glisse + Jeff Law + + * gcc.dg/tree-ssa/alias-27.c: New testcase. + +2013-11-11 Uros Bizjak + + PR target/58853 + * gcc.target/i386/pr58853.c: New test. + +2013-11-11 Joern Rennecke + + * gcc.dg/tree-ssa/forwprop-28.c: Adjust for ARC + LOGICAL_OP_NON_SHORT_CIRCUIT definition. + * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Likewise. + * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c: Likewise. + * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c: Likewise. + * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c: Likewise. + * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c: Likewise. + * gcc.dg/tree-ssa/vrp47.c: Likewise. + * gcc.dg/tree-ssa/vrp87.c: Likewise. + +2013-11-08 Joseph Myers + + * gcc.dg/atomic/stdatomic-compare-exchange-1.c, + gcc.dg/atomic/stdatomic-compare-exchange-2.c, + gcc.dg/atomic/stdatomic-compare-exchange-3.c, + gcc.dg/atomic/stdatomic-compare-exchange-4.c, + gcc.dg/atomic/stdatomic-exchange-1.c, + gcc.dg/atomic/stdatomic-exchange-2.c, + gcc.dg/atomic/stdatomic-exchange-3.c, + gcc.dg/atomic/stdatomic-exchange-4.c, + gcc.dg/atomic/stdatomic-fence.c, gcc.dg/atomic/stdatomic-flag.c, + gcc.dg/atomic/stdatomic-generic.c, + gcc.dg/atomic/stdatomic-kill-dep.c, + gcc.dg/atomic/stdatomic-load-1.c, + gcc.dg/atomic/stdatomic-load-2.c, + gcc.dg/atomic/stdatomic-load-3.c, + gcc.dg/atomic/stdatomic-load-4.c, + gcc.dg/atomic/stdatomic-lockfree.c, + gcc.dg/atomic/stdatomic-op-1.c, gcc.dg/atomic/stdatomic-op-2.c, + gcc.dg/atomic/stdatomic-op-3.c, gcc.dg/atomic/stdatomic-op-4.c, + gcc.dg/atomic/stdatomic-store-1.c, + gcc.dg/atomic/stdatomic-store-2.c, + gcc.dg/atomic/stdatomic-store-3.c, + gcc.dg/atomic/stdatomic-store-4.c, gcc.dg/c11-stdatomic-1.c: New + tests. + +2013-11-08 Cong Hou + + PR tree-optimization/58508 + * gcc.dg/vect/pr58508.c: Update. + +2013-11-08 Richard Biener + + PR tree-optimization/59047 + * gcc.dg/torture/pr59047.c: New testcase. + +2013-11-08 Richard Biener + + PR tree-optimization/59038 + PR tree-optimization/58955 + * gcc.dg/torture/pr59038.c: New testcase. + +2013-11-07 Janus Weil + + PR fortran/58471 + * gfortran.dg/constructor_9.f90: New. + +2013-11-07 Joseph Myers + + * gcc.dg/atomic-compare-exchange-1.c, + gcc.dg/atomic-compare-exchange-2.c, + gcc.dg/atomic-compare-exchange-3.c, + gcc.dg/atomic-compare-exchange-4.c, + gcc.dg/atomic-compare-exchange-5.c, gcc.dg/atomic-exchange-1.c, + gcc.dg/atomic-exchange-2.c, gcc.dg/atomic-exchange-3.c, + gcc.dg/atomic-exchange-4.c, gcc.dg/atomic-exchange-5.c, + gcc.dg/atomic-fence.c, gcc.dg/atomic-flag.c, + gcc.dg/atomic-generic.c, gcc.dg/atomic-invalid.c, + gcc.dg/atomic-load-1.c, gcc.dg/atomic-load-2.c, + gcc.dg/atomic-load-3.c, gcc.dg/atomic-load-4.c, + gcc.dg/atomic-load-5.c, gcc.dg/atomic-lockfree.c, + gcc.dg/atomic-noinline.c, gcc.dg/atomic-op-1.c, + gcc.dg/atomic-op-2.c, gcc.dg/atomic-op-3.c, gcc.dg/atomic-op-4.c, + gcc.dg/atomic-op-5.c, gcc.dg/atomic-param.c, + gcc.dg/atomic-store-1.c, gcc.dg/atomic-store-2.c, + gcc.dg/atomic-store-3.c, gcc.dg/atomic-store-4.c, + gcc.dg/atomic-store-5.c: Declare main as returning int. + * gcc.dg/atomic-exchange-1.c, gcc.dg/atomic-exchange-2.c, + gcc.dg/atomic-exchange-3.c, gcc.dg/atomic-exchange-4.c, + gcc.dg/atomic-exchange-5.c: Separate increments of count from + expression using value of count. + +2013-11-07 Joseph Myers + + * lib/target-supports.exp + (check_effective_target_fenv_exceptions): New function. + * lib/atomic-dg.exp, gcc.dg/atomic/atomic.exp: New files. + * gcc.dg/atomic/c11-atomic-exec-1.c, + gcc.dg/atomic/c11-atomic-exec-2.c, + gcc.dg/atomic/c11-atomic-exec-3.c, + gcc.dg/atomic/c11-atomic-exec-4.c, + gcc.dg/atomic/c11-atomic-exec-5.c, gcc.dg/c11-atomic-1.c, + gcc.dg/c11-atomic-2.c, gcc.dg/c11-atomic-3.c, + gcc.dg/c90-atomic-1.c, gcc.dg/c99-atomic-1.c: New tests. + +2013-11-07 Cong Hou + + * gcc.dg/vect/vect-alias-check.c: New. + +2013-11-07 Jakub Jelinek + + * gcc.dg/tree-ssa/loop-39.c: New test. + + * gcc.dg/unroll_1.c: Add -fno-tree-vrp to dg-options. + * gcc.dg/unroll_2.c: Likewise. + * gcc.dg/unroll_3.c: Likewise. + * gcc.dg/unroll_4.c: Likewise. + * gcc.dg/vrp90.c: New test. + +2013-11-07 Paolo Carlini + + PR c++/58176 + * g++.dg/cpp0x/nullptr30.C: New. + +2013-11-07 Yury Gribov + Jakub Jelinek + + PR sanitizer/59029 + * c-c++-common/asan/pr59029.c: New test. + +2013-11-07 H.J. Lu + + PR target/59034 + * gcc.target/i386/pr59034-1.c: New test. + * gcc.target/i386/pr59034-2.c: Likewise. + +2013-11-07 Bin Cheng + + * gcc.dg/tree-ssa/loop-2.c: Refine check condition. + * gcc.dg/tree-ssa/ivopt_infer_2.c: Ditto. + * gcc.dg/tree-ssa/ivopt_mult_3.c: Ditto. + +2013-11-06 DJ Delorie + + * gcc.dg/mismatch-decl-1.c: New test. + +2013-11-06 Joseph Myers + + * gcc.dg/torture/float128-cmp-invalid.c, + gcc.dg/torture/float128-div-underflow.c, + gcc.dg/torture/float128-extend-nan.c, + gcc.dg/torture/fp-int-convert-float128-timode-3.c: New tests. + +2013-11-06 Oleg Endo + + * gcc.target/sh/pr51244-11.c: Remove target line. + * gcc.target/sh/sh4a-sincosf.c: Likewise. + * gcc.target/sh/attr-isr-trap_exit.c: Likewise. + * gcc.target/sh/pr51244-15.c: Likewise. + * gcc.target/sh/pr51244-19.c: Likewise. + * gcc.target/sh/cmpstr.c: Likewise. + * gcc.target/sh/pr33135-3.c: Likewise. + * gcc.target/sh/pr53512-2.c: Likewise. + * gcc.target/sh/pr54602-2.c: Likewise. + * gcc.target/sh/pr52483-1.c: Likewise. + * gcc.target/sh/pr21255-2-ml.c: Likewise. + * gcc.target/sh/pr54760-4.c: Likewise. + * gcc.target/sh/pr52483-5.c: Likewise. + * gcc.target/sh/pr54089-2.c: Likewise. + * gcc.target/sh/pr56547-2.c: Likewise. + * gcc.target/sh/pr54089-6.c: Likewise. + * gcc.target/sh/pr51244-20.c: Likewise. + * gcc.target/sh/pr50749-sf-predec-4.c: Likewise. + * gcc.target/sh/sh4a-fsrra.c: Likewise. + * gcc.target/sh/pr50749-qihisi-predec-1.c: Likewise. + * gcc.target/sh/pr50749-sf-postinc-2.c: Likewise. + * gcc.target/sh/pr55303-2.c: Likewise. + * gcc.target/sh/sh2a-resbank.c: Likewise. + * gcc.target/sh/sp-switch.c: Likewise. + * gcc.target/sh/pr51244-3.c: Likewise. + * gcc.target/sh/pr50751-3.c: Likewise. + * gcc.target/sh/pr51244-7.c: Likewise. + * gcc.target/sh/struct-arg-dw2.c: Likewise. + * gcc.target/sh/pr50751-7.c: Likewise. + * gcc.target/sh/pr49468-di.c: Likewise. + * gcc.target/sh/pr50749-qihisi-postinc-4.c: Likewise. + * gcc.target/sh/pr49880-3.c: Likewise. + * gcc.target/sh/pr51244-12.c: Likewise. + * gcc.target/sh/pr53988.c: Likewise. + * gcc.target/sh/pr6526.c: Likewise. + * gcc.target/sh/sh2a-bxor.c: Likewise. + * gcc.target/sh/pr51244-16.c: Likewise. + * gcc.target/sh/sh2a-bclrmem.c: Likewise. + * gcc.target/sh/sh2a-bor.c: Likewise. + * gcc.target/sh/pr53511-1.c: Likewise. + * gcc.target/sh/pr21255-3.c: Likewise. + * gcc.target/sh/pr53512-3.c: Likewise. + * gcc.target/sh/pr33135-4.c: Likewise. + * gcc.target/sh/pr54602-3.c: Likewise. + * gcc.target/sh/pr54760-1.c: Likewise. + * gcc.target/sh/pr52483-2.c: Likewise. + * gcc.target/sh/sh2a-bsetmem.c: Likewise. + * gcc.target/sh/pr54680.c: Likewise. + * gcc.target/sh/pr54386.c: Likewise. + * gcc.target/sh/pr51244-20-sh2a.c: Likewise. + * gcc.target/sh/pr54089-3.c: Likewise. + * gcc.target/sh/pr50749-sf-predec-1.c: Likewise. + * gcc.target/sh/pr54089-7.c: Likewise. + * gcc.target/sh/strlen.c: Likewise. + * gcc.target/sh/pr50749-sf-postinc-3.c: Likewise. + * gcc.target/sh/pr50749-qihisi-predec-2.c: Likewise. + * gcc.target/sh/pr55303-3.c: Likewise. + * gcc.target/sh/pr51244-4.c: Likewise. + * gcc.target/sh/pr50751-4.c: Likewise. + * gcc.target/sh/pr39423-1.c: Likewise. + * gcc.target/sh/pr51244-8.c: Likewise. + * gcc.target/sh/pr55146.c: Likewise. + * gcc.target/sh/pr50751-8.c: Likewise. + * gcc.target/sh/sh2a-bset.c: Likewise. + * gcc.target/sh/pr50749-qihisi-postinc-1.c: Likewise. + * gcc.target/sh/sh2a-movi20s.c: Likewise. + * gcc.target/sh/20080410-1.c: Likewise. + * gcc.target/sh/pr49880-4.c: Likewise. + * gcc.target/sh/pr51244-13.c: Likewise. + * gcc.target/sh/sh2a-movrt.c: Likewise. + * gcc.target/sh/pr51244-17.c: Likewise. + * gcc.target/sh/pr21255-2-mb.c: Likewise. + * gcc.target/sh/sh2a-bclr.c: Likewise. + * gcc.target/sh/pr33135-1.c: Likewise. + * gcc.target/sh/pr53512-4.c: Likewise. + * gcc.target/sh/pr54602-4.c: Likewise. + * gcc.target/sh/sh4a-bitmovua.c: Likewise. + * gcc.target/sh/pr54760-2.c: Likewise. + * gcc.target/sh/pr52483-3.c: Likewise. + * gcc.target/sh/sh2a-bld.c: Likewise. + * gcc.target/sh/pr54089-4.c: Likewise. + * gcc.target/sh/pr54685.c: Likewise. + * gcc.target/sh/pr50749-sf-predec-2.c: Likewise. + * gcc.target/sh/pr54089-8.c: Likewise. + * gcc.target/sh/pragma-isr-trap-exit.c: Likewise. + * gcc.target/sh/pr50749-qihisi-predec-3.c: Likewise. + * gcc.target/sh/pr50749-sf-postinc-4.c: Likewise. + * gcc.target/sh/pr51244-1.c: Likewise. + * gcc.target/sh/pr50751-1.c: Likewise. + * gcc.target/sh/pr55160.c: Likewise. + * gcc.target/sh/pr51244-5.c: Likewise. + * gcc.target/sh/pr54236-1.c: Likewise. + * gcc.target/sh/pr50751-5.c: Likewise. + * gcc.target/sh/pr52933-1.c: Likewise. + * gcc.target/sh/pr39423-2.c: Likewise. + * gcc.target/sh/pr51244-9.c: Likewise. + * gcc.target/sh/pr49263.c: Likewise. + * gcc.target/sh/pr50749-qihisi-postinc-2.c: Likewise. + * gcc.target/sh/pr49880-1.c: Likewise. + * gcc.target/sh/sh2a-band.c: Likewise. + * gcc.target/sh/pr51244-10.c: Likewise. + * gcc.target/sh/pr49880-5.c: Likewise. + * gcc.target/sh/prefetch.c: Likewise. + * gcc.target/sh/pr51244-14.c: Likewise. + * gcc.target/sh/rte-delay-slot.c: Likewise. + * gcc.target/sh/fpul-usage-1.c: Likewise. + * gcc.target/sh/pr51244-18.c: Likewise. + * gcc.target/sh/pr21255-1.c: Likewise. + * gcc.target/sh/pr33135-2.c: Likewise. + * gcc.target/sh/pr53512-1.c: Likewise. + * gcc.target/sh/pr54602-1.c: Likewise. + * gcc.target/sh/sh2a-rtsn.c: Likewise. + * gcc.target/sh/torture/pragma-isr.c: Likewise. + * gcc.target/sh/torture/pragma-isr2.c: Likewise. + * gcc.target/sh/torture/pr58314.c: Likewise. + * gcc.target/sh/torture/pr34777.c: Likewise. + * gcc.target/sh/torture/pr58475.c: Likewise. + * gcc.target/sh/pr54760-3.c: Likewise. + * gcc.target/sh/sh4a-cosf.c: Likewise. + * gcc.target/sh/pr52483-4.c: Likewise. + * gcc.target/sh/mfmovd.c: Likewise. + * gcc.target/sh/pr54089-1.c: Likewise. + * gcc.target/sh/pr56547-1.c: Likewise. + * gcc.target/sh/pr54089-5.c: Likewise. + * gcc.target/sh/pr50749-sf-predec-3.c: Likewise. + * gcc.target/sh/pr54089-9.c: Likewise. + * gcc.target/sh/sh2a-jsrn.c: Likewise. + * gcc.target/sh/pr49468-si.c: Likewise. + * gcc.target/sh/pr50749-sf-postinc-1.c: Likewise. + * gcc.target/sh/pr50749-qihisi-predec-4.c: Likewise. + * gcc.target/sh/pr55303-1.c: Likewise. + * gcc.target/sh/pr51244-2.c: Likewise. + * gcc.target/sh/pr50751-2.c: Likewise. + * gcc.target/sh/pr54236-2.c: Likewise. + * gcc.target/sh/pr51244-6.c: Likewise. + * gcc.target/sh/cmpstrn.c: Likewise. + * gcc.target/sh/pr50751-6.c: Likewise. + * gcc.target/sh/pr52933-2.c: Likewise. + * gcc.target/sh/pr53568-1.c: Likewise. + * gcc.target/sh/pr50749-qihisi-postinc-3.c: Likewise. + * gcc.target/sh/sh2a-tbr-jump.c: Likewise. + * gcc.target/sh/sh4a-sinf.c: Likewise. + * gcc.target/sh/pr49880-2.c: Likewise. + +2013-11-06 Tobias Burnus + + * g++.dg/warn/wdate-time.C: Update dg-error pattern. + * gcc.dg/wdate-time.c: Ditto. + * gfortran.dg/wdate-time.F90: Ditto. + +2013-11-06 Oleg Endo + + PR target/30807 + * gcc.target/sh/torture/pr30807.c: New. + +2013-11-06 Paolo Carlini + + PR c++/11006 + * g++.dg/other/java3.C: New. + +2013-11-06 Uros Bizjak + + PR target/59021 + * gcc.target/i386/pr59021.c: New test. + +2013-11-06 James Lemke + + * lib/gcc-defs.exp (dg-additional-files-options): Extend regsub for + dg-additional-files to also match BOL. + +2013-11-06 Joseph Myers + + * gcc.dg/torture/c99-contract-1.c: New test. + +2013-11-06 Richard Biener + + PR tree-optimization/58653 + * gcc.dg/tree-ssa/predcom-6.c: New testcase. + * gcc.dg/tree-ssa/predcom-7.c: Likewise. + +2013-11-05 Balaji V. Iyer + + * c-c++-common/cilk-plus/CK/fib.c: Reduced the iteration from + 40 to 30. Replaced iteration variable with a #define. Instead of + returning non-zero value for error, called __builtin_abort (). Fixed + a bug of calling fib_serial in serial case instead of fib. + * c-c++-common/cilk-plus/CK/fib_init_expr_xy.c: Likewise. + * c-c++-common/cilk-plus/CK/fib_no_return.c: Likewise. + * c-c++-common/cilk-plus/CK/fib_no_sync.c: Likewise. + * gcc.dg/cilk-plus/cilk-plus.exp: Removed duplicate/un-necessary + compiler flag testing. + +2013-11-06 Christian Bruel + + * gcc.target/sh/strlen.c: New test. + +2013-11-06 Jakub Jelinek + + PR middle-end/58970 + * gcc.c-torture/compile/pr58970.c: New test. + +2013-11-05 Wei Mi + + PR regression/58985 + * gcc.dg/pr57518.c: Add subreg in regexp pattern. + +2013-11-05 Tobias Burnus + + * g++.dg/warn/wdate-time.C: New. + * gcc.dg/wdate-time.c: New. + * gfortran.dg/wdate-time.F90: New. + +2013-11-05 Steven G. Kargl + + PR fortran/58989 + * gfortran.dg/reshape_6.f90: New test. + +2013-11-05 Jeff Law + + * gcc.dg/pr38984.c: Add -fno-isolate-erroneous-paths. + * gcc.dg/tree-ssa/isolate-1.c: New test. + * gcc.dg/tree-ssa/isolate-2.c: New test. + * gcc.dg/tree-ssa/isolate-3.c: New test. + * gcc.dg/tree-ssa/isolate-4.c: New test. + +2013-11-05 Jakub Jelinek + + PR rtl-optimization/58997 + * gcc.c-torture/compile/pr58997.c: New test. + +2013-11-05 Paolo Carlini + + PR c++/58724 + * g++.dg/cpp0x/gen-attrs-56.C: New. + +2013-11-05 Richard Biener + + PR ipa/58492 + * gcc.dg/ipa/pr58492.c: New testcase. + +2013-11-05 Richard Biener + + PR tree-optimization/58955 + * gcc.dg/torture/pr58955-1.c: New testcase. + * gcc.dg/torture/pr58955-2.c: Likewise. + +2013-11-05 H.J. Lu + + PR middle-end/58981 + * gcc.dg/pr58981.c: New test. + +2013-11-05 Richard Biener + + PR middle-end/58941 + * gcc.dg/torture/pr58941.c: New testcase. + +2013-11-05 Marc Glisse + + PR tree-optimization/58958 + * gcc.dg/tree-ssa/pr58958.c: New file. + +2013-11-05 Marc Glisse + + * gcc.dg/tree-ssa/alias-26.c: New file. + +2013-11-05 Jakub Jelinek + + PR tree-optimization/58984 + * gcc.c-torture/execute/pr58984.c: New test. + +2013-11-05 Andreas Schwab + + * g++.dg/ext/sync-4.C: Require sync_long_long_runtime support. + +2013-11-05 Tobias Burnus + + * g++.dg/gomp/openmp-simd-1.C: New. + * g++.dg/gomp/openmp-simd-2.C: New. + * gcc.dg/gomp/openmp-simd-1.c: New. + * gcc.dg/gomp/openmp-simd-2.c: New. + +2013-11-04 Senthil Kumar Selvaraj + + * gcc.dg/superblock.c: Require scheduling support. + +2013-11-04 Kostya Serebryany + + * g++.dg/asan/asan_test.cc: Update the test + to match the fresh asan run-time. + * c-c++-common/asan/stack-overflow-1.c: Ditto. + +2013-11-04 Ian Lance Taylor + + * g++.dg/ext/sync-4.C: New test. + +2013-11-04 Paul Thomas + + PR fortran/58771 + * gfortran.dg/derived_external_function_1.f90 : New test + +2013-11-04 Jakub Jelinek + + PR tree-optimization/58978 + * gcc.c-torture/compile/pr58978.c: New test. + +2013-11-04 Paul Thomas + + PR fortran/57445 + * gfortran.dg/optional_class_1.f90 : New test + +2013-11-04 Vladimir Makarov + + PR rtl-optimization/58968 + * gfortran.dg/pr58968.f: New + +2013-11-04 Marek Polacek + + PR c++/58979 + * g++.dg/diagnostic/pr58979.C: New test. + +2013-11-04 Joseph Myers + + * gcc.dg/iec-559-macros-1.c, gcc.dg/iec-559-macros-2.c, + gcc.dg/iec-559-macros-3.c, gcc.dg/iec-559-macros-4.c, + gcc.dg/iec-559-macros-5.c, gcc.dg/iec-559-macros-6.c, + gcc.dg/iec-559-macros-7.c, gcc.dg/iec-559-macros-8.c, + gcc.dg/iec-559-macros-9.c: New tests. + +2013-11-04 Jakub Jelinek + + PR tree-optimization/58946 + * gcc.c-torture/compile/pr58946.c: New test. + +2013-11-03 Paolo Carlini + + PR c++/52071 + * g++.dg/parse/pr52071.C: New. + +2013-11-03 Paolo Carlini + + PR c++/38313 + * g++.dg/lookup/name-clash10.C: New. + +2013-11-03 Kugan Vivekanandarajah + + * gcc.target/arm/neon-vcond-gt.c: Scan for vbsl or vbit or vbif. + * gcc.target/arm/neon-vcond-ltgt.c: Scan for vbsl or vbit or vbif. + * gcc.target/arm/neon-vcond-unordered.c: Scan for vbsl or vbit or + vbif. + +2013-11-03 Marek Polacek + + * g++.dg/ubsan/cxx1y-vla.C: New test. + * c-c++-common/ubsan/vla-3.c: New test. + * c-c++-common/ubsan/vla-2.c: New test. + * c-c++-common/ubsan/vla-4.c: New test. + * c-c++-common/ubsan/vla-1.c: New test. + +2013-11-02 Bill Schmidt + + * gcc.dg/vmx/vec-set.c: New. + +2013-11-02 Paolo Carlini + + PR c++/29234 + PR c++/56037 + * g++.dg/parse/pr29234.C: New. + * g++.dg/parse/pr56037.C: Likewise. + +2013-11-01 Balaji V. Iyer + + * gcc.dg/cilk-plus/cilk-plus.exp: Loaded libcilkrts library path and + passed it in as one of the options to all Cilk keywords test. + +2013-11-01 Edward Smith-Rowland <3dw4rd@verizon.net> + + PR c++/58708 + * g++.dg/cpp1y/pr58708.C: New. + +2013-11-01 Marc Glisse + + PR c++/58834 + * g++.dg/ext/pr58834.C: New file. + +2013-11-01 Jakub Jelinek + + * gcc.dg/gomp/declare-simd-2.c (f12, f13, f14, f15, f16, f17): New + tests. + * g++.dg/gomp/declare-simd-2.C (f15, f16, f17, f18, f19, f20): New + tests. + +2013-11-01 Paul Thomas + + PR fortran/57893 + * gfortran.dg/unlimited_polymorphic_13.f90 : Break up select + type block. + +2013-10-31 Jakub Jelinek + + * g++.dg/gomp/simd-1.C: New test. + * g++.dg/gomp/declare-simd-1.C (f32): Fix up aligned clause argument. + * g++.dg/gomp/declare-simd-2.C (fn13, fn14): Add new tests. + * gcc.dg/gomp/declare-simd-2.c (fn7, fn8, fn9, fn10, fn11): Likewise. + * c-c++-common/gomp/simd6.c: New test. + +2013-10-31 Edward Smith-Rowland <3dw4rd@verizon.net> + + Implement C++14 digit separators. + * g++.dg/cpp1y/digit-sep.C: New. + * g++.dg/cpp1y/digit-sep-neg.C: New. + * g++.dg/cpp1y/digit-sep-cxx11-neg.C: New. + +2013-10-31 Jakub Jelinek + + * gcc.dg/vect/vect-align-3.c: New test. + + * g++.dg/warn/pr33738.C (main): Initialize a2 again to make sure + we warn about it already during VRP1 pass. + +2013-10-31 Martin Jambor + + PR rtl-optimization/58934 + Revert: + 2013-10-30 Martin Jambor + PR rtl-optimization/10474 + * gcc.dg/pr10474.c: New testcase. + * gcc.dg/ira-shrinkwrap-prep-1.c: Likewise. + * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise. + +2013-10-31 Paolo Carlini + + PR c++/58932 + Revert: + 2013-10-18 Paolo Carlini + + PR c++/58466 + * g++.dg/cpp0x/variadic145.C: New. + + * g++.dg/cpp0x/sfinae49.C: New. + +2013-10-30 Paolo Carlini + + PR c++/58581 + * g++.dg/cpp0x/deleted1.C: New. + +2013-10-31 Zhenqiang Chen + + * gcc.target/arm/lp1243022.c: New test. + +2013-10-30 Joern Rennecke + + PR other/58545 + * gcc.target/avr/pr58545.c: New test. + +2013-10-30 Tobias Burnus + + Revert: + 2013-10-30 Tobias Burnus + * gcc.dg/cilk-plus/cilk-plus.exp: Add the libcilkrts library + path to the compile flags. + +2013-10-30 Cong Hou + + * gcc.target/i386/vect-abs-s8.c: New test. + * gcc.target/i386/vect-abs-s16.c: New test. + * gcc.target/i386/vect-abs-s32.c: New test. + +2013-10-30 Tobias Burnus + + * gcc.dg/cilk-plus/cilk-plus.exp: Add the libcilkrts library + path to the compile flags. + +2013-10-30 Mikael Pettersson + + PR rtl-optimization/58369 + * g++.dg/torture/pr58369.C: New test. + +2013-10-30 Tobias Burnus + + PR other/33426 + * g++.dg/vect/pr33426-ivdep-2.cc: New. + * g++.dg/vect/pr33426-ivdep-3.cc: New. + * g++.dg/vect/pr33426-ivdep-4.cc: New. + +2013-10-30 Vladimir Makarov + + PR target/58784 + * gcc.target/arm/pr58784.c: New. + +2013-10-30 Marc Glisse + + * gcc.dg/tree-ssa/alias-24.c: New file. + +2013-10-30 Vladimir Makarov + + * gcc.target/i386/fma_double_3.c: Use pattern for + scan-assembler-times instead of just one insn name. + * gcc.target/i386/fma_double_5.c: Ditto. + * gcc.target/i386/fma_float_3.c: Ditto. + * gcc.target/i386/fma_float_5.c: Ditto. + * gcc.target/i386/l_fma_double_1.c: Ditto. + * gcc.target/i386/l_fma_double_2.c: Ditto. + * gcc.target/i386/l_fma_double_3.c: Ditto. + * gcc.target/i386/l_fma_double_4.c: Ditto. + * gcc.target/i386/l_fma_double_5.c: Ditto. + * gcc.target/i386/l_fma_double_6.c: Ditto. + * gcc.target/i386/l_fma_float_1.c: Ditto. + * gcc.target/i386/l_fma_float_2.c: Ditto. + * gcc.target/i386/l_fma_float_3.c: Ditto. + * gcc.target/i386/l_fma_float_4.c: Ditto. + * gcc.target/i386/l_fma_float_5.c: Ditto. + * gcc.target/i386/l_fma_float_6.c: Ditto. + +2013-10-30 Christian Bruel + + * gcc.c-torture/execute/builtins/strncmp-2.c: Enable for SH. + * gcc.target/sh/cmpstr.c: New test. + * gcc.target/sh/cmpstrn.c: New test. + +2013-10-30 Martin Jambor + + PR rtl-optimization/10474 + * gcc.dg/pr10474.c: New testcase. + * gcc.dg/ira-shrinkwrap-prep-1.c: Likewise. + * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise. + +2013-10-29 Andrew Pinski + Zhenqiang Chen + + * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c: New test case. + * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c: New test case. + * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c: New test case. + * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c: New test case. + * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c: New test case. + * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c: New test case. + * gcc.dg/tree-ssa/phi-opt-9.c: Use a function call to prevent + conditional move to be used. + * gcc.dg/tree-ssa/ssa-dom-thread-3.c: Remove. + +2013-10-29 Tobias Burnus + + PR fortran/44350 + * gfortran.dg/blockdata_8.f90: New. + +2013-10-29 Oleg Endo + + PR target/54236 + * gcc.target/sh/pr54236-2: New. + * gcc.target/sh/pr54089-6: Add another rotl special case. + +2013-10-29 Paul Thomas + + PR fortran/58793 + * gfortran.dg/unlimited_polymorphic_13.f90: Use real variables + to determine sizes of real kinds. + + PR fortran/58858 + * gfortran.dg/unlimited_polymorphic_14.f90: New test. + +2013-10-29 Balaji V. Iyer + + * c-c++-common/cilk-plus/CK/compound_cilk_spawn.c: New test. + * c-c++-common/cilk-plus/CK/concec_cilk_spawn.c: Likewise. + * c-c++-common/cilk-plus/CK/fib.c: Likewise. + * c-c++-common/cilk-plus/CK/no_args_error.c: Likewise. + * c-c++-common/cilk-plus/CK/spawnee_inline.c: Likewise. + * c-c++-common/cilk-plus/CK/spawner_inline.c: Likewise. + * c-c++-common/cilk-plus/CK/spawning_arg.c: Likewise. + * c-c++-common/cilk-plus/CK/steal_check.c: Likewise. + * c-c++-common/cilk-plus/CK/test__cilk.c: Likewise. + * c-c++-common/cilk-plus/CK/varargs_test.c: Likewise. + * c-c++-common/cilk-plus/CK/sync_wo_spawn.c: Likewise. + * c-c++-common/cilk-plus/CK/invalid_spawn.c: Likewise. + * c-c++-common/cilk-plus/CK/spawn_in_return.c: Likewise. + * c-c++-common/cilk-plus/CK/fib_init_expr_xy.c: Likewise. + * c-c++-common/cilk-plus/CK/fib_no_sync.c: Likewise. + * c-c++-common/cilk-plus/CK/fib_no_return.c: Likewise. + * gcc.dg/cilk-plus/cilk-plus.exp: Added support to run Cilk Keywords + test stored in c-c++-common. Also, added the Cilk runtime's library + to the ld_library_path. + +2013-10-29 Paolo Carlini + + PR c++/58888 + * g++.dg/cpp0x/auto40.C: New. + * g++.dg/other/warning1.C: Adjust. + +2013-10-29 Richard Biener + + * gcc.dg/torture/restrict-2.c: New testcase. + * gcc.dg/torture/restrict-3.c: Likewise. + * gcc.dg/torture/restrict-4.c: Likewise. + * gcc.dg/torture/restrict-5.c: Likewise. + +2013-10-29 Marc Glisse + + PR tree-optimization/19831 + * gcc.dg/tree-ssa/alias-25.c: New file. + +2013-10-29 Richard Biener + + * g++.dg/vect/slp-pr56812.cc: Adjust with respect to -fvect-cost-model + changes. + * gcc.dg/vect/bb-slp-32.c: Likewise. + * gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp: Likewise. + * gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp: Likewise. + * gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp: Likewise. + * gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp: Likewise. + * gcc.target/powerpc/crypto-builtin-1.c: Likewise. + * gcc.target/powerpc/p8vector-builtin-1.c: Likewise. + * gcc.target/powerpc/p8vector-builtin-2.c: Likewise. + * gcc.target/powerpc/p8vector-builtin-3.c: Likewise. + * gcc.target/powerpc/p8vector-builtin-4.c: Likewise. + * gcc.target/powerpc/p8vector-builtin-5.c: Likewise. + * gcc.target/powerpc/p8vector-vectorize-1.c: Likewise. + * gcc.target/powerpc/p8vector-vectorize-2.c: Likewise. + * gcc.target/powerpc/p8vector-vectorize-3.c: Likewise. + * gcc.target/powerpc/p8vector-vectorize-4.c: Likewise. + * gcc.target/powerpc/p8vector-vectorize-5.c: Likewise. + * gfortran.dg/vect/vect.exp: Likewise. + +2013-10-28 Bill Schmidt + + * gcc.dg/vmx/gcc-bug-i.c: Add little endian variant. + * gcc.dg/vmx/eg-5.c: Likewise. + +2013-10-28 Claudiu Zissulescu + Joern Rennecke + + * gcc.target/arc/jump-around-jump.c: New test. + +2013-10-27 Tom de Vries + + * gcc.target/arm/require-pic-register-loc.c: New test. + +2013-10-27 Uros Bizjak + + PR target/58679 + * gcc.target/i386/pr58679-1.c: New test. + * gcc.target/i386/pr58679-2.c: Ditto. + +2013-10-27 Tobias Burnus + + PR other/33426 + * gcc.dg/vect/vect-ivdep-2.c: New. + +2013-10-26 Oleg Endo + + PR target/52483 + * gcc.target/sh/pr52483-1.c: Add tests for memory stores. + * gcc.target/sh/pr52483-2.c: Likewise. + * gcc.target/sh/pr52483-3.c: Likewise. + * gcc.target/sh/pr52483-4.c: Likewise. + +2013-10-26 Jeff Law + + * g++.dg/torture/pr49309.C: Removed. + * gcc.dg/dfp/pr35739.c: Removed. + +2013-10-25 Vladimir Makarov + + PR rtl-optimization/58759 + * gcc.target/i386/pr58759.c: New. + +2013-10-25 Tobias Burnus + + * g++.dg/vect/pr33426-ivdep.cc: Use dg-options. + * gfortran.dg/vect/vect-do-concurrent-1.f90: Ditto. + * gcc.dg/vect/vect-ivdep-1.c: Ditto. + +2013-10-25 Yufeng Zhang + + * gcc.dg/wmul-1.c: New test. + +2013-10-25 Paolo Carlini + + PR c++/58878 + * g++.dg/template/pr58878.C: New. + +2013-10-25 Marc Glisse + + * gcc.dg/tree-ssa/alias-23.c: New file. + +2013-10-25 Richard Biener + + PR tree-optimization/58626 + * gcc.dg/torture/pr58626.c: New testcase. + +2013-10-25 Paolo Carlini + + PR c++/54812 + * g++.dg/cpp0x/defaulted47.C: New. + +2013-10-25 Eric Botcazou + + * gcc.c-torture/execute/pr58831.c: New test. + +2013-10-25 Nick Clifton + + * c-c++-common/pr57793.c: Add expected error messages for + targets with small integers. + * gcc.dg/c99-stdint-1.c: Only run on 32-bit plus targets. + * gcc.dg/c99-stdint-2.c: Likewise. + * gcc.dg/cdce1.c: Likewise. + * gcc.dg/fold-overflow-1.c: Likewise. + * gcc.dg/utf-cvt.c: Likewise. + * gcc.dg/ftrapv-1.c: Only run on targets that support trapping + arithmetic. + * gcc.dg/ftrapv-2.c: Likewise. + * gcc.dg/pr30286.c: Likewise. + * gcc.dg/pr19340.c: Only run on targets that support scheduling. + * lib/target-supports.exp (check_effective_target_trapping): New + proc. Returns true if the target supports trapping arithmetic. + +2013-10-25 Tobias Burnus + + * g++.dg/parse/ivdep.C: New. + * g++.dg/vect/pr33426-ivdep.cc: New. + +2013-10-24 Richard Henderson + + PR rtl/58542 + * gcc.dg/atomic-store-6.c: New. + +2013-10-24 Ian Lance Taylor + + * go.test/go-test.exp (errchk): Combine quoted strings in comments. + +2013-10-24 Cong Hou + + * gcc.c-torture/execute/20030125-1.c: Update. + +2013-10-24 Tobias Burnus + + PR fortran/44646 + * gfortran.dg/vect/vect-do-concurrent-1.f90: New. + +2013-10-24 Dehao Chen + + * g++.dg/opt/devirt3.C: New test. + +2013-08-24 Tobias Burnus + + PR other/33426 + * gcc.dg/ivdep.c: New. + * gcc.dg/vect/vect-ivdep-1.c: New. + +2013-10-24 Kyrylo Tkachov + + * gcc.target/aarch64/c-output-mod-2.c: Fix for -fPIC. + * gcc.target/aarch64/c-output-mod-3.c: Likewise. + +2013-10-24 Nick Clifton + + * gcc.dg/20020312-2.c: No PIC register for RL78 or MSP430. + +2013-10-24 Marek Polacek + + PR c++/58705 + * g++.dg/parse/pr58705.C: New test. + +2013-10-24 Marek Polacek + + * gcc.dg/c11-align-5.c: Add more testing. + +2013-10-23 Pat Haugen + + * gcc.target/powerpc/direct-move.h: Fix header for executable tests. + +2013-10-23 Jakub Jelinek + + PR tree-optimization/58775 + PR tree-optimization/58791 + * gcc.dg/guality/pr58791-1.c: New test. + * gcc.dg/guality/pr58791-2.c: New test. + * gcc.dg/guality/pr58791-3.c: New test. + * gcc.dg/guality/pr58791-4.c: New test. + * gcc.dg/guality/pr58791-5.c: New test. + * gcc.c-torture/compile/pr58775.c: New test. + * gcc.dg/tree-ssa/reassoc-28.c: Don't scan reassoc1 dump. + +2013-10-23 Tom de Vries + + PR tree-optimization/58805 + * gcc.dg/pr58805.c: New test. + +2013-10-23 Jakub Jelinek + + * gcc.target/i386/vect-div-1.c: New test. + + * gcc.dg/vect/pr58508.c: Remove dg-options. + +2013-10-23 Richard Biener + + * gcc.dg/torture/pr58830.c: New testcase. + +2013-10-23 Edward Smith-Rowland <3dw4rd@verizon.net> + + Implement C++14 [[deprecated]] modulo [[gnu::deprecated]] bugs. + * g++.dg/cpp1y/attr-deprecated.C: New. + * g++.dg/cpp1y/attr-deprecated-neg.C: New. + +2013-10-23 Tobias Burnus + + PR fortran/58793 + * gfortran.dg/assumed_type_8.f90: New. + +2013-10-22 Uros Bizjak + + PR target/58779 + * gcc.target/i386/pr30315.c: Remove MINUSCC, DECCC, MINUSCCONLY + and MINUSCCZEXT defines. Update scan-assembler dg directive. + * gcc.dg/torture/pr58779.c: New test. + +2013-10-22 Steve Ellcey + + * gcc.target/mips/nor.c: New. + +2013-10-22 Bill Schmidt + + * gcc.target/powerpc/altivec-perm-1.c: Move the two vector pack + tests into... + * gcc.target/powerpc/altivec-perm-3.c: ...this new test, which is + restricted to big-endian targets. + +2013-10-22 Paul Thomas + + PR fortran 57893 + * gfortran.dg/unlimited_polymorphic_13.f90 : New test. + +2013-10-21 Tobias Burnus + + PR fortran/58803 + * gfortran.dg/proc_ptr_comp_38.f90: New. + +2013-10-21 Marek Polacek + + PR middle-end/58809 + * gcc.dg/gomp/pr58809.c: New test. + +2013-10-21 Vidya Praveen + + * gcc.dg/20050922-1.c: Remove stdlib.h and declare abort(). + * gcc.dg/20050922-1.c: Remove stdlib.h and declare abort() and exit(). + +2013-10-21 Richard Biener + + PR tree-optimization/58794 + * c-c++-common/torture/pr58794-1.c: New testcase. + * c-c++-common/torture/pr58794-2.c: Likewise. + +2013-10-21 Richard Biener + + PR middle-end/58742 + * c-c++-common/fold-divmul-1.c: New testcase. + +2013-10-21 Michael Zolotukhin + + * gcc.target/i386/memset-vector_loop-1.c: New test. + * gcc.target/i386/memset-vector_loop-2.c: New test. + +2013-10-21 Diego Novillo + + * g++.dg/plugin/selfassign.c: Include tree.h. + * gcc.dg/plugin/finish_unit_plugin.c: Likewise. + * gcc.dg/plugin/ggcplug.c: Likewise. + * gcc.dg/plugin/one_time_plugin.c: Likewise. + * gcc.dg/plugin/selfassign.c: Likewise. + * gcc.dg/plugin/start_unit_plugin.c: Likewise. + +2013-10-20 Richard Sandiford + + * gcc.target/mips/mips-ps-5.c: Add alignment attributes. + * gcc.target/mips/mips-ps-7.c: Likewise. + +2013-10-20 Richard Sandiford + + * gcc.target/mips/bswap-1.c, gcc.target/mips/bswap-2.c, + gcc.target/mips/bswap-3.c, gcc.target/mips/bswap-4.c, + gcc.target/mips/bswap-5.c, gcc.target/mips/bswap-6.c: New tests. + +2013-10-19 John David Anglin + + * c-c++-common/opaque-vector.c: Skip long double test on hppa. + + PR testsuite/58645 + * gnat.dg/specs/linker_alias.ads: Skip on hppa*-*-hpux*. + +2013-10-19 Mike Stump + + * g++.dg/lto/lto.exp: Add support for C/C++ mix language testing. + + * gcc.dg/lto/pr54625-1_0.c: Move from here... + * g++.dg/lto/pr54625-1_0.c: ... to here. + * gcc.dg/lto/pr54625-1_1.C: Likewise. + * g++.dg/lto/pr54625-1_1.C: Likewise. + * gcc.dg/lto/pr54625-2_0.c: Likewise. + * g++.dg/lto/pr54625-2_0.c: Likewise. + * gcc.dg/lto/pr54625-2_1.C: Likewise. + * g++.dg/lto/pr54625-2_1.C: Likewise. + +2013-10-19 Oleg Endo + + * gcc.target/sh/pr54089-3.c: Fix test for load of constant 31. + +2013-10-18 Cong Hou + + * gcc.dg/vect/pr58508.c: New test. + +2013-10-18 Paolo Carlini + + PR c++/58466 + * g++.dg/cpp0x/variadic145.C: New. + +2013-10-18 Andrew MacLeod + + * g++.dg/plugin/header_plugin.c: Don't include tree-flow.h. + +2013-10-18 Hans-Peter Nilsson + + * gcc.dg/tree-ssa/gen-vect-11.c: Use dynamic vector cost model. + * gcc.dg/tree-ssa/gen-vect-11a.c: Likewise. + * gcc.dg/tree-ssa/gen-vect-2.c: Likewise. + * gcc.dg/tree-ssa/gen-vect-25.c: Likewise. + +2013-10-17 Charles Baylis + + * gcc.dg/builtin-apply2.c: Skip test on arm hardfloat ABI targets. + * gcc.dg/tls/pr42894.c: Remove dg-options for arm*-*-* targets. + * gcc.target/arm/thumb-ltu.c: Remove dg-skip-if and require + effective target arm_thumb1_ok. + * lib/target-supports.exp + (check_effective_target_arm_fp16_ok_nocache): Don't force + -mfloat-abi=soft when building for hardfloat target. + +2013-10-17 Michael Meissner + + PR target/58673 + * gcc.target/powerpc/pr58673-1.c: New file to test whether + -mquad-word + -mno-vsx-timode causes errors. + * gcc.target/powerpc/pr58673-2.c: Likewise. + +2013-10-17 Paolo Carlini + + PR c++/58596 + * g++.dg/cpp0x/lambda/lambda-nsdmi5.C: New + +2013-10-17 Kyrylo Tkachov + + * gcc.target/aarch64/c-output-template.c: New testcase. + * gcc.target/aarch64/c-output-template-2.c: Likewise. + * gcc.target/aarch64/c-output-template-3.c: Likewise. + +2013-10-17 Michael Hudson-Doyle + + * lib/target-supports.exp + (check_effective_target_sync_long_long): AArch64 supports + atomic operations on "long long". + (check_effective_target_sync_long_long_runtime): AArch64 can + execute atomic operations on "long long". + +2013-10-17 Richard Biener + + PR tree-optimization/58143 + * gcc.dg/torture/pr58143-1.c: New testcase. + * gcc.dg/torture/pr58143-2.c: Likewise. + * gcc.dg/torture/pr58143-3.c: Likewise. + +2013-10-17 Marek Polacek + + PR c/58267 + * gcc.dg/c1x-align-5.c: New test. + +2013-10-16 Tobias Burnus + + PR fortran/58652 + * gfortran.dg/unlimited_polymorphic_12.f90: New. + +2013-10-16 Thomas Schwinge + + * c-c++-common/cpp/openmp-define-1.c: Move + dg-require-effective-target fopenmp after dg-do directive. + * c-c++-common/cpp/openmp-define-2.c: Likewise. + * gfortran.dg/openmp-define-1.f90: Likewise. + * gfortran.dg/openmp-define-2.f90: Likewise. + * gfortran.dg/openmp-define-3.f90: Likewise. + +2013-10-16 Paulo Matos + + * gcc.dg/tree-prof/tree-prof.exp: Fix comment. + +2013-10-15 Sriraman Tallam + + PR target/57756 + * gcc.target/i386/pr57756.c: New test. + * gcc.target/i386/pr57756_2.c: New test. + +2013-10-15 Richard Sandiford + + * gcc.dg/torture/builtin-self.c: New file. + +2013-10-15 Zhenqiang Chen + + * gcc.dg/tree-ssa/reassoc-32.c: New test case. + * gcc.dg/tree-ssa/reassoc-33.c: New test case. + * gcc.dg/tree-ssa/reassoc-34.c: New test case. + * gcc.dg/tree-ssa/reassoc-35.c: New test case. + * gcc.dg/tree-ssa/reassoc-36.c: New test case. + +2013-10-15 Cong Hou + + * gcc.dg/vect/vect-reduc-pattern-3.c: New test. + +2013-10-15 Paolo Carlini + + PR c++/58707 + * g++.dg/cpp0x/pr58707.C: New. + +2013-10-15 Kyrylo Tkachov + + * c-c++-common/cpp/openmp-define-3.c: Move effective target check + after other directives. + +2013-10-15 Tobias Burnus + + PR fortran/58652 + * gfortran.dg/unlimited_polymorphic_11.f90: New. + +2013-10-14 Ian Lance Taylor + + * go.test/go-test.exp (go-find-packages): New proc. + (go-gc-tests): Skip stress and safe tests. Skip *.dir + subdirectories. Do simple +build line matching. Handle run with + arguments. Handle errorcheckdir and rundircmpout. Use packages + for rundir. Remove special handling for bug191 and dwarf. + +2013-10-14 Tobias Burnus + + PR fortran/58658 + * gfortran.dg/unlimited_polymorphic_10.f90: New. + +2013-10-14 Rainer Orth + + * gcc.dg/torture/pr58670.c (ASM_STR) [__i386__ || __x86_64__]: + Use btsl. + +2013-10-14 Eric Botcazou + + * gnat.dg/specs/opt1.ads: New test. + +2013-10-14 Richard Biener + + PR tree-optimization/58640 + * gcc.c-torture/execute/pr58640-2.c: New testcase. + +2013-10-13 Eric Botcazou + + * gnat.dg/uninit_array.ad[sn]: New test. + * gnat.dg/uninit_array_pkg.ads: New helper. + +2013-10-13 Richard Biener + + * gcc.c-torture/execute/pr58662.c: New test. + +2013-10-12 Oleg Endo + + PR target/51244 + * gcc.dg/torture/p51244-21.c: New. + * gcc.target/sh/pr51244-20.c: New. + * gcc.target/sh/pr51244-20-sh2a.c: New. + +2013-10-12 Arnaud Charlet + + * gnat.dg/specs/linker_section.ads: Update test. + +2013-10-12 H.J. Lu + + PR target/58690 + * gcc.target/i386/pr58690.c: New test + +2013-10-12 Alexander Monakov + + * gcc.target/i386/builtin-ucmp.c: New test. + +2013-10-11 Brooks Moses + + * g++.dg/ext/altivec-7.C: Check for standard vector-type name mangling. + +2013-10-11 Jeff Law + + * gcc.c-torture/execute/pr58640.c: New test. + +2013-10-11 Paolo Carlini + + PR c++/58633 + * g++.dg/cpp0x/decltype57.C: New. + +2013-10-11 Paolo Carlini + + PR c++/31671 + * g++.dg/template/nontype26.C: New. + +2013-10-11 Thomas Schwinge + + * c-c++-common/cpp/openmp-define-1.c: New file. + * c-c++-common/cpp/openmp-define-2.c: Likewise. + * c-c++-common/cpp/openmp-define-3.c: Likewise. + * gfortran.dg/openmp-define-1.f90: Likewise. + * gfortran.dg/openmp-define-2.f90: Likewise. + * gfortran.dg/openmp-define-3.f90: Likewise. + + * g++.dg/gomp/gomp.exp: Recurse into subdirectories when looking + for test source files. + * gcc.dg/gomp/gomp.exp: Likewise. + * gcc.dg/gomp/appendix-a/a.35.1.c: Expect error. + * gcc.dg/gomp/appendix-a/a.35.3.c: Likewise. + * gcc.dg/gomp/appendix-a/a.35.4.c: Likewise. + * gcc.dg/gomp/appendix-a/a.35.5.c: Likewise. + * gcc.dg/gomp/appendix-a/a.35.6.c: Likewise. + +2013-10-11 Jakub Jelinek + + * c-c++-common/gomp/atomic-15.c: Adjust for C diagnostics. + Remove error test that is now valid in OpenMP 4.0. + * c-c++-common/gomp/atomic-16.c: New test. + * c-c++-common/gomp/cancel-1.c: New test. + * c-c++-common/gomp/depend-1.c: New test. + * c-c++-common/gomp/depend-2.c: New test. + * c-c++-common/gomp/map-1.c: New test. + * c-c++-common/gomp/pr58472.c: New test. + * c-c++-common/gomp/sections1.c: New test. + * c-c++-common/gomp/simd1.c: New test. + * c-c++-common/gomp/simd2.c: New test. + * c-c++-common/gomp/simd3.c: New test. + * c-c++-common/gomp/simd4.c: New test. + * c-c++-common/gomp/simd5.c: New test. + * c-c++-common/gomp/single1.c: New test. + * g++.dg/gomp/block-0.C: Adjust for stricter #pragma omp sections + parser. + * g++.dg/gomp/block-3.C: Likewise. + * g++.dg/gomp/clause-3.C: Adjust error messages. + * g++.dg/gomp/declare-simd-1.C: New test. + * g++.dg/gomp/declare-simd-2.C: New test. + * g++.dg/gomp/depend-1.C: New test. + * g++.dg/gomp/depend-2.C: New test. + * g++.dg/gomp/target-1.C: New test. + * g++.dg/gomp/target-2.C: New test. + * g++.dg/gomp/taskgroup-1.C: New test. + * g++.dg/gomp/teams-1.C: New test. + * g++.dg/gomp/udr-1.C: New test. + * g++.dg/gomp/udr-2.C: New test. + * g++.dg/gomp/udr-3.C: New test. + * g++.dg/gomp/udr-4.C: New test. + * g++.dg/gomp/udr-5.C: New test. + * g++.dg/gomp/udr-6.C: New test. + * gcc.dg/autopar/outer-1.c: Expect 4 instead of 5 loopfn matches. + * gcc.dg/autopar/outer-2.c: Likewise. + * gcc.dg/autopar/outer-3.c: Likewise. + * gcc.dg/autopar/outer-4.c: Likewise. + * gcc.dg/autopar/outer-5.c: Likewise. + * gcc.dg/autopar/outer-6.c: Likewise. + * gcc.dg/autopar/parallelization-1.c: Likewise. + * gcc.dg/gomp/block-3.c: Adjust for stricter #pragma omp sections + parser. + * gcc.dg/gomp/clause-1.c: Adjust error messages. + * gcc.dg/gomp/combined-1.c: Look for GOMP_parallel_loop_runtime + instead of GOMP_parallel_loop_runtime_start. + * gcc.dg/gomp/declare-simd-1.c: New test. + * gcc.dg/gomp/declare-simd-2.c: New test. + * gcc.dg/gomp/nesting-1.c: Adjust for stricter #pragma omp sections + parser. Add further #pragma omp sections nesting tests. + * gcc.dg/gomp/target-1.c: New test. + * gcc.dg/gomp/target-2.c: New test. + * gcc.dg/gomp/taskgroup-1.c: New test. + * gcc.dg/gomp/teams-1.c: New test. + * gcc.dg/gomp/udr-1.c: New test. + * gcc.dg/gomp/udr-2.c: New test. + * gcc.dg/gomp/udr-3.c: New test. + * gcc.dg/gomp/udr-4.c: New test. + * gfortran.dg/gomp/appendix-a/a.35.5.f90: Add dg-error. + +2013-10-10 Jan Hubicka + + * gcc.target/i386/avx256-unaligned-store-3.c: Update template for + tuning change. + * gcc.target/i386/avx256-unaligned-store-1.c: Likewise. + * gcc.target/i386/pr49168-1.c: Likewise. + * gcc.target/i386/pr49002-2.c: Likewise. + +2013-10-10 Jakub Jelinek + + PR middle-end/58670 + * gcc.dg/torture/pr58670.c: New test. + +2013-10-09 Zhenqiang Chen + + * gcc.dg/tree-ssa/phi-opt-11.c: New test. + +2013-10-09 Marek Polacek + + PR c++/58635 + * g++.dg/tm/pr58635-1.C: New test. + * g++.dg/tm/pr58635-2.C: New test. + +2013-10-09 Jakub Jelinek + + * gcc.dg/vect/bb-slp-31.c: Add cleanup-tree-dump. + +2013-10-09 Marc Glisse + + PR tree-optimization/20318 + * c-c++-common/pr20318.c: New file. + * gcc.dg/tree-ssa/pr20318.c: New file. + +2013-10-09 Eric Botcazou + + * gcc.c-torture/execute/pr58570.c: New test. + +2013-10-09 Alex Velenko + + * gcc.target/aarch64/vclz.c: New testcase. + +2013-10-09 Alex Velenko + + * gcc.target/aarch64/vadd_f64.c: New testcase. + * gcc.target/aarch64/vsub_f64.c: New testcase. + +2013-10-09 Alex Velenko + + * gcc.target/aarch64/vdiv_f.c: New testcase. + +2013-10-09 Alex Velenko + + * gcc.target/aarch64/vneg_f.c: New testcase. + * gcc.target/aarch64/vneg_s.c: New testcase. + +2013-10-08 Paolo Carlini + + PR c++/58568 + * g++.dg/cpp0x/lambda/lambda-ice10.C: New. + * g++.old-deja/g++.mike/misc9.C: Adjust. + +2013-10-08 Paolo Carlini + + PR c++/58665 + Revert: + 2013-10-04 Paolo Carlini + + PR c++/58448 + * g++.dg/template/crash117.C: New. + +2013-10-08 Andreas Krebbel + + * gcc.target/s390/htm-nofloat-2.c: Add -mzarch to asm options. + +2013-10-08 Marc Glisse + + PR tree-optimization/58480 + * gcc.dg/tree-ssa/pr58480.c: New file. + +2013-10-07 Bill Schmidt + + * gcc.target/powerpc/pr43154.c: Skip for ppc64 little endian. + * gcc.target/powerpc/fusion.c: Likewise. + +2013-10-07 Andreas Krebbel + + * gcc.target/s390/htm-nofloat-2.c: New testcase. + +2013-10-07 Andreas Krebbel + + * gcc.target/s390/htm-1.c: Add more tests to cover different + operand types. + +2013-10-06 Paolo Carlini + + PR c++/58126 + * g++.dg/init/uninitialized1.C: New. + +2013-10-06 Paolo Carlini + + PR c++/56060 + * g++.dg/cpp0x/variadic144.C: New. + +2013-10-04 Paolo Carlini + + PR c++/58560 + * g++.dg/cpp0x/auto39.C: New. + +2013-10-04 Paolo Carlini + + PR c++/58503 + * g++.dg/cpp0x/range-for26.C: New. + * g++.dg/cpp0x/range-for27.C: Likewise. + +2013-10-04 Paolo Carlini + + PR c++/58448 + * g++.dg/template/crash117.C: New. + +2013-10-04 Marc Glisse + + PR c++/19476 + * g++.dg/tree-ssa/pr19476-5.C: New file. + * g++.dg/tree-ssa/pr19476-1.C: Mention pr19476-5.C. + +2013-10-04 Paolo Carlini + + PR c++/58584 + * g++.dg/cpp0x/gen-attrs-55.C: New. + +2013-10-03 Easwaran Raman + + PR c++/33911 + * g++.dg/ext/attribute47.C: New. + +2013-10-03 Rong Xu + + * gcc.target/i386/cold-attribute-2.c: Fix the test by using original + probability. + * gcc.dg/tree-ssa/ipa-split-5.c: Ditto. + * gcc.dg/tree-ssa/ipa-split-6.c: Ditto. + +2013-10-03 Marek Polacek + + PR c++/58510 + * g++.dg/cpp0x/pr58510.C: New test. + +2013-10-03 Marc Glisse + + PR c++/19476 + * g++.dg/tree-ssa/pr19476-1.C: New file. + * g++.dg/tree-ssa/pr19476-2.C: Likewise. + * g++.dg/tree-ssa/pr19476-3.C: Likewise. + * g++.dg/tree-ssa/pr19476-4.C: Likewise. + +2013-10-03 Michael Meissner + + * gcc.target/powerpc/p8vector-fp.c: New test for floating point + scalar operations when using -mupper-regs-sf and -mupper-regs-df. + * gcc.target/powerpc/ppc-target-1.c: Update tests to allow either + VSX scalar operations or the traditional floating point form of + the instruction. + * gcc.target/powerpc/ppc-target-2.c: Likewise. + * gcc.target/powerpc/recip-3.c: Likewise. + * gcc.target/powerpc/recip-5.c: Likewise. + * gcc.target/powerpc/pr72747.c: Likewise. + * gcc.target/powerpc/vsx-builtin-3.c: Likewise. + +2013-10-03 Marcus Shawcroft + + PR target/58460 + * gcc.target/aarch64/pr58460.c: New file. + +2013-10-02 Tobias Burnus + + PR fortran/58593 + * gfortran.dg/char_length_19.f90: New. + +2013-10-02 Paolo Carlini + + PR c++/58535 + * g++.dg/parse/crash65.C: New. + * g++.dg/cpp1y/pr58535.C: Likewise. + +2013-10-02 Richard Biener + + * gcc.dg/tree-ssa/ldist-11.c: Adjust. + * gcc.dg/tree-ssa/ldist-17.c: Likewise. + * gcc.dg/tree-ssa/ldist-23.c: Likewise. + * gcc.dg/tree-ssa/ldist-pr45948.c: Likewise. + * gfortran.dg/ldist-pr45199.f: Likewise. + +2013-10-02 Paolo Carlini + + PR c++/58565 + * g++.dg/parse/crash64.C: New. + +2013-10-02 Yufeng Zhang + + * gcc.dg/tree-ssa/slsr-40.c: New test. + +2013-10-01 Paolo Carlini + + PR c++/58563 + * g++.dg/cpp0x/pr58563.C: New. + +2013-10-01 Vidya Praveen + + * gcc.target/aarch64/vect_saddl_1.c: New. + +2013-10-01 Jakub Jelinek + + PR target/58574 + * gcc.c-torture/execute/pr58574.c: New testcase. + +2013-10-01 Kugan Vivekanandarajah + + PR Target/58578 + * gcc.target/arm/pr58578.c: New test. + +2013-10-01 Kyrylo Tkachov + + PR tree-optimization/58556 + * gcc.dg/tree-ssa/gen-vect-26.c: Use dynamic vector cost model. + * gcc.dg/tree-ssa/gen-vect-28.c: Likewise. + +2013-10-01 Nick Clifton + + * lib/target-supports.exp (check_effective_target_ptr32plus): Fail + for MSP430. + * gcc.c-torture/compile/20010327-1.c: Only run the test for + ptr32plus targets. + * gcc.c-torture/compile/pr41181.c: Likewise. + * gcc.c-torture/compile/calls.c: Likewise. + * gcc.c-torture/compile/990617-1.c: Likewise. + * gcc.c-torture/compile/pr55955.c: Only run the test for + int32plus targets. + * gcc.c-torture/compile/limits-externdecl.c: Likewise. + +2013-10-01 Richard Biener + + PR tree-optimization/58553 + * gcc.dg/torture/pr58553.c: New testcase. + +2013-09-30 Jakub Jelinek + + PR middle-end/58564 + * gcc.c-torture/execute/pr58564.c: New test. + +2013-09-30 Teresa Johnson + + * gcc.dg/tree-ssa/ssa-dom-thread-3.c (expand_one_var): + Update for additional dump message. + +2013-09-30 Richard Biener + + PR tree-optimization/58554 + * gcc.dg/torture/pr58554.c: New testcase. + +2013-09-30 Simon Cook + Joern Rennecke + + * gcc.target/arc/barrel-shifter-1.c: New test. + * gcc.target/arc/barrel-shifter-2.c: Likewise. + * gcc.target/arc/long-calls.c, gcc.target/arc/mA6.c: Likewise. + * gcc.target/arc/mA7.c, gcc.target/arc/mARC600.c: Likewise. + * gcc.target/arc/mARC601.c, gcc.target/arc/mARC700.c: Likewise. + * gcc.target/arc/mcpu-arc600.c, gcc.target/arc/mcpu-arc601.c: Likewise. + * gcc.target/arc/mcpu-arc700.c, gcc.target/arc/mcrc.c: Likewise. + * gcc.target/arc/mdpfp.c, gcc.target/arc/mdsp-packa.c: Likewise. + * gcc.target/arc/mdvbf.c, gcc.target/arc/mlock.c: Likewise. + * gcc.target/arc/mmac-24.c, gcc.target/arc/mmac-d16.c: Likewise. + * gcc.target/arc/mno-crc.c, gcc.target/arc/mno-dsp-packa.c: Likewise. + * gcc.target/arc/mno-dvbf.c, gcc.target/arc/mno-lock.c: Likewise. + * gcc.target/arc/mno-mac-24.c, gcc.target/arc/mno-mac-d16.c: Likewise. + * gcc.target/arc/mno-rtsc.c, gcc.target/arc/mno-swape.c: Likewise. + * gcc.target/arc/mno-xy.c, gcc.target/arc/mrtsc.c: Likewise. + * gcc.target/arc/mspfp.c, gcc.target/arc/mswape.c: Likewise. + * gcc.target/arc/mtune-ARC600.c: Likewise. + * gcc.target/arc/mtune-ARC601.c: Likewise. + * gcc.target/arc/mtune-ARC700-xmac: Likewise. + * gcc.target/arc/mtune-ARC700.c: Likewise. + * gcc.target/arc/mtune-ARC725D.c: Likewise. + * gcc.target/arc/mtune-ARC750D.c: Likewise. + * gcc.target/arc/mul64.c, gcc.target/arc/mxy.c: Likewise. + * gcc.target/arc/no-dpfp-lrsr.c: Likewise. + +2013-09-30 Richard Biener + + PR middle-end/58532 + * g++.dg/torture/pr58552.C: New testcase. + +2013-09-27 Michael Meissner + + * gcc.target/powerpc/p8vector-ldst.c: New test for -mupper-regs-sf + and -mupper-regs-df. + +2013-09-27 Paulo Matos + + PR middle-end/58463 + * gcc.dg/pr58463.c: New test. + +2013-09-27 Jakub Jelinek + + PR middle-end/58551 + * c-c++-common/gomp/pr58551.c: New test. + +2013-09-27 Richard Biener + + PR tree-optimization/58459 + * gcc.dg/tree-ssa/ssa-pre-31.c: New testcase. + +2013-09-26 Bernd Edlinger + + PR fortran/58113 + * gfortran.dg/round_4.f90: Check for rounding support. + +2013-09-26 James Greenhalgh + + * g++.dg/vect/pr58513.cc (op): Make static. + +2013-09-26 Richard Biener + + * gcc.dg/tree-ssa/coalesce-2.c: New testcase. + +2013-09-26 Richard Biener + + PR tree-optimization/58539 + * gcc.dg/torture/pr58539.c: New testcase. + +2013-09-25 Jeff Law + + * gcc.dg/tree-ssa/ssa-dom-thread-3.c: Update expected output. + +2013-09-25 Tobias Burnus + + PR fortran/58436 + * gfortran.dg/finalize_21.f90: New. + +2013-09-25 Tobias Burnus + + PR fortran/57697 + PR fortran/58469 + * gfortran.dg/defined_assignment_8.f90: New. + * gfortran.dg/defined_assignment_9.f90: New. + +2013-09-25 Marek Polacek + + PR sanitizer/58413 + * c-c++-common/ubsan/shift-5.c: New test. + * c-c++-common/ubsan/shift-6.c: New test. + * c-c++-common/ubsan/div-by-zero-5.c: New test. + * gcc.dg/ubsan/c-shift-1.c: New test. + +2013-09-25 Marek Polacek + + PR c++/58516 + * g++.dg/tm/pr58516.C: New test. + +2013-09-24 Kyrylo Tkachov + + * lib/target-supports.exp (check_effective_target_arm_cond_exec): + New procedure. + * gcc.target/arm/minmax_minus.c: Check for cond_exec target. + +2013-09-24 Richard Biener + + PR middle-end/58513 + * g++.dg/vect/pr58513.cc: New testcase. + +2013-09-24 Yvan Roux + + * gcc.target/arm/atomic-comp-swap-release-acquire.c: Adjust expected + output. + +2013-09-23 Adam Butcher + + PR c++/58500 + * g++.dg/cpp1y/pr58500.C: New testcase. + +2013-09-23 Eric Botcazou + + * gnat.dg/opt28.ad[sb]: New test. + * gnat.dg/opt28_pkg.ads: New helper. + +2013-09-23 Richard Biener + + PR tree-optimization/58464 + * g++.dg/torture/pr58464.C: New testcase. + +2013-09-23 Christian Bruel + + PR target/58475 + * gcc.target/sh/torture/pr58475.c: New test. + +2013-09-23 Janus Weil + + PR fortran/58355 + * gfortran.dg/extends_15.f90: New. + +2013-09-20 Paolo Carlini + + PR c++/58481 + * g++.dg/cpp0x/lambda/lambda-this17.C: New. + +2013-09-20 Jan-Benedict Glaw + + PR target/56875 + * gcc.target/vax/vax.exp: New. + * gcc.target/vax/pr56875.c: Ditto. + +2013-09-20 Richard Biener + + PR middle-end/58484 + * gfortran.dg/pr58484.f: New testcase. + +2013-09-20 Jeff Law + + * gcc.dg/tree-ssa/ssa-dom-thread-3.c: Add missing dg-final clause. + +2013-09-20 Bernd Edlinger + + PR middle-end/57748 + * gcc.dg/torture/pr57748-1.c: New test. + * gcc.dg/torture/pr57748-2.c: New test. + +2013-09-20 Marek Polacek + + PR sanitizer/58413 + * c-c++-common/ubsan/shift-4.c: New test. + +2013-09-20 Richard Biener + + PR tree-optimization/58453 + * gcc.dg/tree-ssa/ldist-23.c: New testcase. + +2013-09-20 Janus Weil + + PR fortran/58099 + * gfortran.dg/proc_ptr_43.f90: New. + +2013-09-18 Tobias Burnus + + PR fortran/57697 + * gfortran.dg/defined_assignment_11.f90: New. + +2013-09-18 Vladimir Makarov + + PR rtl-optimization/58438 + * g++.dg/pr58438.C: New test. + +2013-09-18 Tobias Burnus + + PR fortran/43366 + * gfortran.dg/class_39.f03: Update dg-error. + * gfortran.dg/class_5.f03: Ditto. + * gfortran.dg/class_53.f90: Ditto. + * gfortran.dg/realloc_on_assign_20.f90: New. + * gfortran.dg/realloc_on_assign_21.f90: New. + * gfortran.dg/realloc_on_assign_22.f90: New. + +2013-09-18 Paolo Carlini + + PR c++/58457 + * g++.dg/parse/using4.C: New. + +2013-09-18 Kyrylo Tkachov + + * gcc.c-torture/execute/pr58419.c (b): Change type to signed char. + +2013-09-18 Marek Polacek + + PR sanitize/58443 + * g++.dg/ubsan/div-by-zero-1.C: Use the integer-divide-by-zero option + instead of the shift option. + * c-c++-common/ubsan/pr58443-1.c: New test. + * c-c++-common/ubsan/pr58443-3.c: New test. + * c-c++-common/ubsan/pr58443-2.c: New test. + +2013-09-18 Richard Biener + + PR tree-optimization/58417 + * gcc.dg/torture/pr58417.c: New testcase. + +2013-09-18 Eric Botcazou + + * gnat.dg/array_bounds_test2.adb: New test. + +2013-09-18 Kyrylo Tkachov + + * g++.dg/debug/dwarf2/omp-fesdr.C: Check for fopenmp effective target. + * gcc.dg/debug/dwarf2/omp-fesdr.c: Likewise. + +2013-09-18 Eric Botcazou + + * gnat.dg/in_out_parameter4.adb: New test. + +2013-09-18 Marek Polacek + + PR sanitizer/58411 + * c-c++-common/ubsan/attrib-1.c: New test. + +2013-09-17 Cong Hou + + * gcc.dg/vect/vect-reduc-dot-s16c.c: Add a test case with dot product + on two arrays with short and int types. This should not be recognized + as a dot product pattern. + +2013-09-17 Paolo Carlini + + PR c++/58435 + * pt.c (tsubst, [BOUND_TEMPLATE_TEMPLATE_PARM]): Take into account + the cp_type_quals (r) too. + +2013-09-17 Jan Hubicka + + PR middle-end/58332 + * gcc.c-torture/compile/pr58332.c: New testcase. + +2013-09-17 Jeff Law + + * gcc.c-torture/execute/pr58387.c: New test. + +2013-09-17 Kyrylo Tkachov + + PR tree-optimization/58088 + * gcc.c-torture/compile/pr58088.c: New test. + +2013-09-17 Nick Clifton + + * lib/target-supports.exp (check_effective_target_trampolines): + Add MSP430 to the list of targets that do not support trampolines. + (check_profiling_available): Add MSP430 to the list of targets + that do not support profiling. + (check_effective_target_tls_runtime): Add MSP430 to the list of + targets that do not support TLS. + +2013-09-17 Eric Botcazou + + * gnat.dg/opt27.adb: New test. + * gnat.dg/opt27_pkg.ad[sb]: New helper. + +2013-09-17 Andreas Schwab + + * gcc.dg/tree-ssa/ldist-22.c (main): Return zero. + +2013-09-17 Richard Biener + + PR tree-optimization/58432 + * gcc.dg/pr58432.c: New testcase. + +2013-09-17 Bin Cheng + + * gcc.dg/tree-ssa/slsr-39.c: New test. + +2013-09-16 Xinliang David Li + + * gcc.misc-tests/help.exp: Optimizer help change. + +2013-09-16 Jeff Law + + * gcc.c-torture/execute/pr58419.c: New test. + * gcc.c-torture/execute/pr58431.c: New test. + +2013-09-16 Tobias Burnus + + PR fortran/58356 + * gfortran.dg/finalize_19.f90: New. + +2013-09-16 Vladimir Makarov + + * gcc.target/i386/pr58418.c: New. + +2013-09-16 James Greenhalgh + + * gcc.target/aarch64/fmla-intrinsic.c: New. + * gcc.target/aarch64/mla-intrinsic.c: Likewise. + * gcc.target/aarch64/fmls-intrinsic.c: Likewise. + * gcc.target/aarch64/mls-intrinsic.c: Likewise. + +2013-09-16 James Greenhalgh + + * gcc.target/aarch64/mul_intrinsic_1.c: New. + * gcc.target/aarch64/fmul_intrinsic_1.c: Likewise. + +2013-09-16 Richard Biener + + * gcc.dg/tree-ssa/ldist-22.c: New testcase. + +2013-09-16 Adam Butcher + + * g++.dg/cpp0x/auto9.C: Downgrade two previously expected errors (now + interpreted as implicit templates) to be expected pedwarns instead. + +2013-09-16 Tobias Burnus + + PR fortran/57697 + * gfortran.dg/defined_assignment_10.f90: Comment print statement. + +2013-09-15 Tobias Burnus + + PR fortran/57697 + * gfortran.dg/defined_assignment_10.f90: New. + +2013-09-13 Evgeny Gavrin + + * gcc.dg/debug/dwarf2/omp-fesdr.c: Add test. + * g++.dg/debug/dwarf2/omp-fesdr.C: Add test. + +2013-09-13 Jacek Caban + + * g++.dg/abi/main.C: Added implicit C linkage tests + +2013-09-13 Kai Tietz + + * gcc.target/i386/pr57848.c: New file. + +2013-09-13 Christian Bruel + + PR target/58314 + * gcc.target/sh/torture/pr58314.c: New test. + +2013-09-12 Paolo Carlini + + * g++.dg/torture/pr58380.C: Suppress warnings with "-w". + +2013-09-12 Martin Jambor + + PR ipa/58389 + * g++.dg/pr58389.C: New test. + +2013-09-12 Paolo Carlini + + * g++.dg/template/pseudodtor2.C: Add column number to dg-error strings. + * g++.dg/template/pseudodtor3.C: Likewise. + +2013-09-12 Richard Biener + + PR tree-optimization/58404 + * g++.dg/tree-ssa/pr58404.C: New testcase. + +2013-09-12 Martin Jambor + + PR ipa/58371 + * g++.dg/ipa/pr58371.C: New test. + +2013-09-12 Richard Biener + + * gcc.dg/tree-ssa/ldist-4.c: Remove undefined behavior. Adjust + expected outcome and comment why that happens. + +2013-09-11 Richard Biener + + PR middle-end/58377 + * g++.dg/uninit-pred-4.C: New testcase. + +2013-09-11 Jakub Jelinek + + PR tree-optimization/58385 + * gcc.c-torture/execute/pr58385.c: New test. + +2013-09-11 Kyrylo Tkachov + + * gcc.target/arm/thumb-ifcvt-2.c: New test. + +2013-09-10 Jeff Law + + * g++.dg/torture/pr58380.C: New test. + +2013-09-10 Jan Hubicka + Paolo Carlini + + * g++.dg/template/cond2.C: Tweak, do not expect a "required from". + +2013-09-10 Jeff Law + + * gcc.c-torture/compile/pr58343.c: New test. + +2013-09-10 Jakub Jelinek + + PR rtl-optimization/58365 + * gcc.c-torture/execute/pr58365.c: New test. + +2013-09-10 Michael Zolotukhin + + * gcc.dg/torture/memcpy-1.c: New test. + +2013-09-10 Alan Modra + + * gcc.target/powerpc/pr58330.c: New. + +2013-09-10 Alan Modra + + * gcc.target/powerpc/medium_offset.c: New. + +2013-09-09 Jakub Jelinek + + PR c++/58325 + * g++.dg/warn/Wunused-var-21.C: New test. + + PR tree-optimization/58364 + * gcc.c-torture/execute/pr58364.c: New test. + +2013-09-09 Paolo Carlini + + PR c++/43452 + * g++.dg/warn/Wdelete-incomplete-1.C: New. + * g++.dg/warn/Wdelete-incomplete-2.C: Likewise. + * g++.dg/init/delete1.C: Adjust. + +2013-09-09 Ian Bolton + + * gcc.target/aarch64/movdi_1.c: New test. + +2013-09-09 Paolo Carlini + + PR c++/58362 + * g++.dg/warn/Wunused-parm-5.C: New. + +2013-09-09 Kyrylo Tkachov + + * gcc.target/aarch64/cmn-neg.c: New test. + +2013-09-09 Richard Biener + + PR middle-end/58326 + * gcc.dg/torture/pr58326-1.c: New testcase. + * gcc.dg/torture/pr58326-2.c: Likewise. + +2013-09-09 Kyrylo Tkachov + + PR target/57735 + * g++.dg/ext/pr57735.C: New test. + +2013-09-09 Jan Hubicka + + PR middle-end/58294 + * g++.dg/torture/PR58294.C: New testcase. + +2013-09-08 Jeff Law + + * gcc.c-torture/compile/pr58340.c: New test. + +2013-09-08 Richard Sandiford + + * g++.dg/debug/ra1.C: New test. + +2013-09-08 Jan Hubicka + + * g++.dg/ipa/devirt-11.C: Update template. + * g++.dg/ipa/devirt-16.C: New testcase. + * g++.dg/ipa/devirt-17.C: New testcase. + * g++.dg/ipa/devirt-18.C: New testcase. + +2013-09-08 Paolo Carlini + + PR c++/54941 + * g++.dg/overload/new1.C: Adjust. + +2013-09-08 Joern Rennecke + + * c-c++-common/opaque-vector.c: New test. + +2013-09-08 Tom de Vries + + PR c++/58282 + * g++.dg/tm/noexcept-6.C: New test. + +2013-09-06 Joern Rennecke + + * gcc.target/arc/cond-set-use.c: New test. + +2013-09-06 Eric Botcazou + + * gnat.dg/stack_usage2.adb: New test. + +2013-09-06 James Greenhalgh + + * gcc.target/aarch64/table-intrinsics.c + (qtbl_tests8_< ,2,3,4>): Fix control vector parameter type. + (qtb_tests8_< ,2,3,4>): Likewise. + (qtblq_tests8_< ,2,3,4>): Likewise. + (qtbxq_tests8_< ,2,3,4>): Likewise. + +2013-09-06 Eric Botcazou + + * gnat.dg/warn10.ad[sb]: New test. + * gnat.dg/warn10_pkg.ads: New helper. + +2013-09-06 Joern Rennecke + + * gcc.dg/ipa/ipa-pta-14.c (scan-ipa-dump) [keeps_null_pointer_checks]: + Don't expect NULL in foo.result set. + * gcc.dg/tree-ssa/pta-escape-1.c (scan-tree-dump): Don't expect NULL + in ESCAPED set. + * gcc.dg/tree-ssa/pta-escape-2.c: Likewise. + * gcc.dg/tree-ssa/pta-escape-3.c: Likewise. + +2013-09-06 Andreas Krebbel + + * gcc.target/s390/nearestint-1.c: New testcase. + +2013-09-06 Joern Rennecke + Vineet Gupta + + * gcc.c-torture/execute/20101011-1.c [__arc__] (DO_TEST): Define as 0. + * gcc.target/arc: New directory. + * gcc.dg/torture/pr37868.c: Also skip for arc*-*-*. + * gcc.dg/stack-usage-1.c [__arc__] (SIZE): Define. + * gcc.dg/torture/stackalign/builtin-apply-2.c + [__arc__] (STACK_ARGUMENTS_SIZE): Set to 0. + * gcc.dg/builtin-apply2.c + [__arc__] (STACK_ARGUMENTS_SIZE): Set to 0. + +2013-09-04 Jan Hubicka + + PR middle-end/58201 + * g++.dg/torture/pr58201_0.C: New testcase. + * g++.dg/torture/pr58201_1.C: New testcase. + * g++.dg/torture/pr58201.h: New testcase. + +2013-09-05 Jan Hubicka + + * gcc.dg/autopar/pr49960.c: Disable partial inlining + +2013-09-05 Richard Biener + + PR tree-optimization/58137 + * gcc.target/i386/pr58137.c: New testcase. + +2013-09-05 Martin Jambor + + * g++.dg/ipa/remref-1.C: New test. + * g++.dg/ipa/remref-2.C: Likewise. + +2013-09-04 Paolo Carlini + + PR c++/24926 + * g++.dg/parse/access11.C: New. + +2013-09-04 David Edelsohn + + * g++.dg/warn/weak1.C: Skip on AIX. + +2013-09-04 Easwaran Raman + + PR middle-end/57370 + PR tree-optimization/58011 + * gfortran.dg/reassoc_12.f90: New testcase. + * gcc.dg/tree-ssa/reassoc-31.c: New testcase. + +2013-09-04 David Edelsohn + + * gcc.dg/attr-weakref-1.c: Skip on AIX. + * gcc.dg/torture/pr53922.c: Skip on AIX. + * lib/file-format.exp (gcc_target_object_format): AIX is COFF. + +2013-09-04 Teresa Johnson + + * gcc.dg/unroll_1.c: Test dumping to stderr. + +2013-09-04 Paolo Carlini + + PR c++/58305 + * g++.dg/warn/deprecated-8.C: New. + +2013-09-03 Jeff Law + + * tree-ssa/ssa-dom-thread-3.c: Update due to changes in debug + dump output. + +2013-09-03 Meador Inge + + Revert: + + 2013-08-30 Meador Inge + + * gcc.dg/Warray-bounds-11.c: New testcase. + +2013-09-03 David Edelsohn + + * lib/target-supports.exp (check_weak_available): Return true for AIX. + +2013-09-03 Jan Hubicka + + * g++.dg/ipa/devirt-15.C: Fix testcase. + +2013-09-03 Richard Biener + + PR middle-end/57656 + * gcc.dg/torture/pr57656.c: New testcase. + +2013-09-03 Richard Biener + + PR middle-end/57287 + * gcc.dg/pr57287-2.c: Use setjmp, not __sigsetjmp. + +2013-09-02 Thomas Koenig + + PR fortran/PR56519 + * gfortran.dg/do_concurrent_3.f90: New test case. + +2013-09-02 Jan Hubicka + + * gcc.dg/tree-ssa/fnsplit-1.c: New testcase. + +2013-09-02 Martin Jambor + + PR ipa/58106 + * gcc.dg/ipa/pr58106.c: New test. + +2013-09-02 James Greenhalgh + + * gcc.target/aarch64/scalar_intrinsics.c + (vdup_lane<8,16,32,64>): Force values to SIMD registers. + +2013-09-02 Richard Biener + + PR middle-end/57511 + * gcc.dg/tree-ssa/sccp-1.c: New testcase. + +2013-09-02 Richard Biener + + * gcc.dg/tree-ssa/loop-4.c: Adjust scan looking for one memory + reference. + +2013-09-02 Bin Cheng + + * gcc.target/arm/ivopts-orig_biv-inc.c: New testcase. + +2013-09-02 Paolo Carlini + + PR c++/21682, implement DR 565 + * g++.dg/template/using24.C: New. + * g++.dg/template/using25.C: Likewise. + * g++.dg/template/using26.C: Likewise. + +2013-09-01 Jan Hubicka + + * g++.dg/ipa/devirt-15.C: New testcase. + +2013-09-01 Eric Botcazou + + * gnat.dg/specs/linker_alias.ads: Skip on Darwin. + +2013-08-31 Jan Hubicka + + * g++.dg/ipa/devirt-11.C: Use -fno-devirtualize-speuclatively + * g++.dg/tree-ssa/pr45453.C: Likewise. + +2013-08-31 Jan Hubicka + + * gcc.dg/fork-instrumentation.c: New testcase. + +2013-08-30 Uros Bizjak + + * g++.dg/abi/mangle33.C (dg-final): Use match count in scan RE. + +2013-08-30 Meador Inge + + * gcc.dg/Warray-bounds-11.c: New testcase. + +2013-08-30 Marek Polacek + + * g++.dg/ubsan/div-by-zero-1.C: New test. + * c-c++-common/ubsan/save-expr-1.c: New test. + * c-c++-common/ubsan/save-expr-2.c: New test. + * c-c++-common/ubsan/save-expr-3.c: New test. + * c-c++-common/ubsan/save-expr-4.c: New test. + * c-c++-common/ubsan/typedef-1.c: New test. + * c-c++-common/ubsan/const-char-1.c: New test. + * c-c++-common/ubsan/const-expr.c: New test. + * c-c++-common/ubsan/div-by-zero-1.c: Likewise. + * c-c++-common/ubsan/shift-1.c: Likewise. + * c-c++-common/ubsan/shift-2.c: Likewise. + * c-c++-common/ubsan/div-by-zero-2.c: Likewise. + * lib/ubsan-dg.exp: New file. + * g++.dg/dg.exp: Add ubsan tests. + * g++.dg/ubsan/ubsan.exp: New file. + * gcc.dg/ubsan/ubsan.exp: New file. + * g++.dg/ubsan/cxx11-shift-1.C: New test. + * g++.dg/ubsan/cxx11-shift-2.C: New test. + * c-c++-common/ubsan/div-by-zero-3.c: New test. + * c-c++-common/ubsan/div-by-zero-1.c: New test. + * c-c++-common/ubsan/div-by-zero-4.c: New test. + * c-c++-common/ubsan/shift-3.c: New test. + * c-c++-common/ubsan/unreachable-1.c: New test. + * c-c++-common/ubsan/shift-1.c: New test. + * c-c++-common/ubsan/shift-2.c: New test. + * c-c++-common/ubsan/div-by-zero-2.c: New test. + * gcc.dg/ubsan/c99-shift-2.c: New test. + * gcc.dg/ubsan/c99-shift-1.c: New test. + +2013-08-29 Jan Hubicka + + * gcc.dg/tree-ssa/attr-alias.c: Rename test3 to test1 + to match template and comment. + +2013-08-30 Paolo Carlini + + PR c++/51424 + * g++.dg/cpp0x/dc8.C: New. + * g++.dg/template/meminit1.C: Adjust. + +2013-08-30 Teresa Johnson + + * gcc.dg/inline-dump.c: Delete inadvertant commit. + +2013-08-30 Jakub Jelinek + + PR tree-optimization/58277 + * gcc.c-torture/execute/pr58277-1.c: New test. + * gcc.c-torture/execute/pr58277-2.c: New test. + +2013-08-30 Eric Botcazou + + * gcc.dg/guality/param-1.c: New test. + * gcc.dg/guality/param-2.c: Likewise. + +2013-08-30 Richard Biener + + PR tree-optimization/58228 + * gcc.dg/torture/pr58228.c: New testcase. + +2013-08-30 Richard Biener + + PR tree-optimization/58223 + * gcc.dg/torture/pr58223.c: New testcase. + * gcc.dg/tree-ssa/ldist-16.c: Flip expected behavior. + +2013-08-30 Richard Biener + + PR tree-optimization/58010 + * gcc.dg/pr58010.c: New testcase. + +2013-08-29 Xinliang DavidLi + + * gcc.dg/unroll_3.c: Message change. + * gcc.dg/unroll_4.c: Likewise. + * gcc.dg/tree-ssa/cunroll-1.c: Likewise. + * gcc.dg/tree-ssa/cunroll-2.c: Likewise. + * gcc.dg/tree-ssa/cunroll-3.c: Likewise. + * gcc.dg/tree-ssa/cunroll-4.c: Likewise. + * gcc.dg/tree-ssa/cunroll-5.c: Likewise. + * gcc.dg/tree-ssa/loop-23.c: Likewise. + * gcc.dg/tree-ssa/loop-1.c: Likewise. + * gcc.dg/unroll_1.c: Likewise. + * gcc.dg/vect/bb-slp-31.c: Likewise. + * gcc.dg/vect/bb-slp-14.c: Likewise. + * gcc.dg/vect/bb-slp-8.c: Likewise. + * gcc.dg/vect/bb-slp-23.c: Likewise. + * gcc.dg/vect/bb-slp-15.c: Likewise. + * gcc.dg/vect/bb-slp-9.c: Likewise. + * gcc.dg/vect/bb-slp-24.c: Likewise. + * gcc.dg/vect/bb-slp-16.c: Likewise. + * gcc.dg/vect/bb-slp-25.c: Likewise. + * gcc.dg/vect/bb-slp-17.c: Likewise. + * gcc.dg/vect/bb-slp-26.c: Likewise. + * gcc.dg/vect/bb-slp-18.c: Likewise. + * gcc.dg/vect/no-tree-reassoc-bb-slp-12.c: Likewise. + * gcc.dg/vect/bb-slp-27.c: Likewise. + * gcc.dg/vect/bb-slp-19.c: Likewise. + * gcc.dg/vect/bb-slp-28.c: Likewise. + * gcc.dg/vect/bb-slp-cond-1.c: Likewise. + * gcc.dg/vect/bb-slp-29.c: Likewise. + * gcc.dg/vect/bb-slp-8a.c: Likewise. + * gcc.dg/vect/bb-slp-pattern-2.c: Likewise. + * gcc.dg/vect/bb-slp-1.c: Likewise. + * gcc.dg/vect/bb-slp-8b.c: Likewise. + * gcc.dg/vect/bb-slp-2.c: Likewise. + * gcc.dg/vect/bb-slp-3.c: Likewise. + * gcc.dg/vect/bb-slp-10.c: Likewise. + * gcc.dg/vect/fast-math-bb-slp-call-1.c: Likewise. + * gcc.dg/vect/bb-slp-4.c: Likewise. + * gcc.dg/vect/bb-slp-11.c: Likewise. + * gcc.dg/vect/fast-math-bb-slp-call-2.c: Likewise. + * gcc.dg/vect/bb-slp-5.c: Likewise. + * gcc.dg/vect/bb-slp-20.c: Likewise. + * gcc.dg/vect/bb-slp-6.c: Likewise. + * gcc.dg/vect/bb-slp-21.c: Likewise. + * gcc.dg/vect/bb-slp-30.c: Likewise. + * gcc.dg/vect/bb-slp-13.c: Likewise. + * gcc.dg/vect/bb-slp-7.c: Likewise. + * gcc.dg/vect/bb-slp-22.c: Likewise. + * gcc.dg/unroll_2.c: Likewise. + * g++.dg/vect/slp-pr50413.cc: Likewise. + * g++.dg/vect/slp-pr56812.cc: Likewise. + * g++.dg/vect/slp-pr50819.cc: Likewise. + +2013-08-29 Eric Botcazou + + * gcc.dg/tree-ssa/ipa-cp-1.c: Adjust regexp. + +2013-08-29 Teresa Johnson + + * gcc.dg/pr40209.c: Use -fopt-info. + * gcc.dg/pr26570.c: Ditto. + * gcc.dg/pr32773.c: Ditto. + * g++.dg/tree-ssa/dom-invalid.C: Ditto. + +2013-08-29 Richard Biener + + PR tree-optimization/58246 + * gcc.dg/torture/pr58246.c: New testcase. + +2013-08-29 Thomas Koenig + + PR fortran/52243 + * gfortran.dg/realloc_on_assign_14.f90: Remove warning made + obsolete by patch. + * gfortran.dg/realloc_on_assign_19.f90: New test. + +2013-08-29 Richard Biener + + PR middle-end/57287 + * gcc.dg/pr57287-2.c: New testcase. + +2013-08-29 Richard Biener + + PR tree-optimization/57685 + * gcc.dg/torture/pr57685.c: New testcase. + +2013-08-28 Paolo Carlini + + PR c++/58255 + * g++.dg/cpp0x/dc7.C: New. + +2013-08-28 Jakub Jelinek + + PR middle-end/58257 + * c-c++-common/gomp/pr58257.c: New test. + +2013-08-28 Richard Biener + + PR tree-optimization/56933 + * gcc.dg/vect/pr56933.c: Properly guard runtime with check_vect (). + +2013-08-27 Vidya Praveen + + * gcc.target/aarch64/scalar_shift_1.c: New. + +2013-08-27 Richard Biener + + PR tree-optimization/57521 + * gcc.dg/torture/pr57521.c: New testcase. + +2013-08-27 Jakub Jelinek + + PR rtl-optimization/57860 + PR rtl-optimization/57861 + PR rtl-optimization/57875 + PR rtl-optimization/57876 + PR rtl-optimization/57877 + * gcc.c-torture/execute/pr57860.c: New test. + * gcc.c-torture/execute/pr57861.c: New test. + * gcc.c-torture/execute/pr57875.c: New test. + * gcc.c-torture/execute/pr57876.c: New test. + * gcc.c-torture/execute/pr57877.c: New test. + +2013-08-26 Thomas Koenig + + PR fortran/58146 + * gfortran.dg/bounds_check_18.f90: New test. + +2013-08-23 Jan Hubicka + + * g++.dg/ipa/devirt-14.C: Fix typo. + +2013-08-23 Mikael Morin + + PR fortran/57798 + * gfortran.dg/inline_sum_5.f90: New. + +2013-08-23 Janus Weil + + PR fortran/57843 + * gfortran.dg/typebound_assignment_7.f90: New. + +2013-08-23 Jan Hubicka + + * g++.dg/ipa/devirt-13.C: New testcase. + * g++.dg/ipa/devirt-14.C: New testcase. + +2013-08-23 Jakub Jelinek + + PR target/58218 + * gcc.target/i386/pr58218.c: New test. + + PR tree-optimization/58209 + * gcc.c-torture/execute/pr58209.c: New test. + +2013-08-22 Michael Meissner + + * gcc.target/powerpc/pr57744.c: Declare abort. + +2013-08-22 Paolo Carlini + + PR c++/56380 + * g++.dg/template/error54.C: New. + +2013-08-22 Janus Weil + + PR fortran/58185 + * gfortran.dg/select_type_34.f90: New. + +2013-08-21 Paolo Carlini + + PR c++/56130 + * g++.dg/warn/deprecated-7.C: New. + +2013-08-21 Paolo Carlini + + * g++.dg/tree-prof/pr57451.C: Remove spurious dg-do directive. + +2013-08-21 Jeff Law + + * gcc.dg/tree-ssa/ssa-vrp-thread-1.c: New test. + +2013-08-21 Paolo Carlini + + PR c++/56134 + * g++.dg/ext/attr-alias-3.C: New. + +2013-08-20 Janus Weil + + PR fortran/53655 + * gfortran.dg/intent_out_8.f90: New. + +2013-08-20 Teresa Johnson + + PR rtl-optimizations/57451 + * g++.dg/tree-prof/pr57451.C: New test. + +2013-08-20 Paolo Carlini + + PR c++/58190 + * g++.dg/pr57878.C: Use __SIZE_TYPE__. + +2013-08-19 Balaji V. Iyer + + PR c/57490 + * c-c++-common/cilk-plus/AN/pr57490.c: New test. + +2013-08-19 Peter Bergner + + * gcc.target/powerpc/dfp-dd-2.c: New test. + * gcc.target/powerpc/dfp-td-2.c: Likewise. + * gcc.target/powerpc/dfp-td-3.c: Likewise. + +2013-08-19 Richard Sandiford + + * gcc.target/mips/mulsize-1.c: Check for SLL as well as SUBU. + * gcc.target/mips/mulsize-2.c: Check for ADDU rather than SUBU. + Check for SLL too. + +2013-08-19 Joern Rennecke + + * gcc.target/avr/progmem-error-1.cpp: Update linenumber of error. + + * gcc.dg/tree-ssa/ssa-dom-thread-4.c [avr-*-*]: Expect 6 times + "Threaded". + + * gcc.dg/tree-ssa/vrp55.c: Use keeps_null_pointer_checks to determine + correct test response. + + PR testsuite/52641 + * gcc.dg/tree-ssa/pr31261.c [int16]: Change expected unsigned type. + * gcc.dg/tree-ssa/ssa-pre-21.c [! size32plus]: Mark as xfail. + * gcc.dg/tree-ssa/vector-4.c (SItype): New typedef. + (v4si): Use it. + * gcc.dg/tree-ssa/ssa-pre-30.c: Test requires int32. + * gcc.dg/tree-ssa/vrp58.c: Adjust scan expression for int16. + + * gcc.dg/tree-ssa/vrp87.c [avr-*-*] (dg-additional-options): New. + +2013-08-18 Jan Hubicka + + * g++.dg/ipa/type-inheritance-1.C: New testcase. + +2013-08-19 Janus Weil + + PR fortran/46271 + * gfortran.dg/gomp/proc_ptr_1.f90: New. + +2013-08-18 Jakub Jelinek + + PR tree-optimization/58006 + * g++.dg/opt/pr58006.C: New test. + +2013-08-18 Eric Botcazou + + * gnat.dg/specs/linker_alias.ads: New test. + +2013-08-16 Jakub Jelinek + + PR tree-optimization/58164 + * gcc.c-torture/compile/pr58164.c: New test. + + PR tree-optimization/58165 + * g++.dg/opt/pr58165.C: New test. + +2013-08-14 Paolo Carlini + + PR c++/51912 + * g++.dg/cpp0x/enum28.C: New. + * g++.dg/cpp0x/enum15.C: Adjust. + +2013-08-14 Bill Schmidt + + PR target/57949 + * gcc.target/powerpc/pr57949-1.c: New. + * gcc.target/powerpc/pr57949-2.c: New. + +2013-08-14 Jakub Jelinek + + PR tree-optimization/58145 + * gcc.dg/pr58145-1.c: New test. + * gcc.dg/pr58145-2.c: New test. + +2013-08-14 Joern Rennecke + + * gcc.dg/debug/dwarf2/dwarf2.exp: Replace -gdwarf-2 with -gdwarf. + * gcc.dg/debug/dwarf2/dwarf-die7.c: Likewise. + * gcc.dg/debug/dwarf2/static1.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-dfp.c: Likewise. + * gcc.dg/debug/dwarf2/fesd-any.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-uninit.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-die1.c: Likewise. + * gcc.dg/debug/dwarf2/var1.c: Likewise. + * gcc.dg/debug/dwarf2/pr29609-2.c: Likewise. + * gcc.dg/debug/dwarf2/aranges-fnsec-1.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-die3.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-merge.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-char1.c: Likewise. + * gcc.dg/debug/dwarf2/discriminator.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-char2.c: Likewise. + * gcc.dg/debug/dwarf2/fesd-baseonly.c: Likewise. + * gcc.dg/debug/dwarf2/pr36690-3.c: Likewise. + * gcc.dg/debug/dwarf2/const-2.c: Likewise. + * gcc.dg/debug/dwarf2/ipa-cp1.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-char3.c: Likewise. + * gcc.dg/debug/dwarf2/var2.c: Likewise. + * gcc.dg/debug/dwarf2/pr36690-2.c: Likewise. + * gcc.dg/debug/dwarf2/pr31230.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-float.c: Likewise. + * gcc.dg/debug/dwarf2/short-circuit.c: Likewise. + * gcc.dg/debug/dwarf2/pr36690-1.c: Likewise. + * gcc.dg/debug/dwarf2/fesd-reduced.c: Likewise. + * gcc.dg/debug/dwarf2/pr37616.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-die2.c: Likewise. + * gcc.dg/debug/dwarf2/inline1.c: Likewise. + * gcc.dg/debug/dwarf2/fesd-sys.c: Likewise. + * gcc.dg/debug/dwarf2/pr29609-1.c: Likewise. + * gcc.dg/debug/dwarf2/asm-line1.c: Likewise. + * gcc.dg/debug/dwarf2/c99-typedef1.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf2-macro.c: Likewise. + * gcc.dg/debug/dwarf2/fesd-none.c: Likewise. + * gcc.dg/debug/dwarf2/pr51410.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-file1.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-die6.c: Likewise. + * gcc.dg/debug/dwarf2/const-2b.c: Likewise. + * gcc.dg/debug/dwarf2/dwarf-die5.c: Likewise. + + PR testsuite/52641 + * gcc.c-torture/execute/pr56799.x: New file. + + * gcc.dg/c99-stdint-1.c [avr-*-*]: Update line number for dg-bogus. + + * gcc.dg/torture/stackalign/builtin-apply-2.c: Also skip for avr. + + * gcc.dg/pr44214-1.c (v2df): Define size using sizeof (double). + * gcc.dg/pr44214-3.c (v2df): Likewise. + + * gcc.dg/pr46647.c: xfail for avr-*-*. + + * gcc.dg/strlenopt-10.c [avr-*-*]: Reduce number of expected + memcpy by one. + * gcc.dg/strlenopt-11.c [avr-*-*]: Likewise. + Expect l to be optimized away. + * gcc.dg/strlenopt-13.c [avr-*-*]: Likewise. + + PR testsuite/52641 + * c-c++-common/scal-to-vec1.c: Add !int16 and large_double conditions + to tests that assume int/double are larger than short/float. + + PR testsuite/52641 + * c-c++-common/simulate-thread/bitfields-2.c: Run test only for + target { ! int16 }. + * gcc.dg/tree-ssa/pr54245.c: Do slsr scan only for target { ! int16 }. + * gcc.dg/tree-ssa/slsr-1.c: Adjust multiplicators to scan for for + target { int16 }. Restrict existing tests to target { int32 } + where appropriate. + * gcc.dg/tree-ssa/slsr-2.c, gcc.dg/tree-ssa/slsr-27.c: Likewise. + * gcc.dg/tree-ssa/slsr-28.c, gcc.dg/tree-ssa/slsr-29.c: Likewise. + * gcc.dg/tree-ssa/slsr-3.c, gcc.dg/tree-ssa/ssa-ccp-23.c: Likewise. + * lib/target-supports.exp (check_effective_target_int32): New proc. + + * gcc.dg/tree-ssa/pr42585.c: Add avr-*-* to list of targets to + exclude from scan test. + + * gcc.dg/debug/dwarf2/global-used-types.c: Request dwarf output. + * gcc.dg/debug/dwarf2/inline2.c: Likewise. + * gcc.dg/debug/dwarf2/inline3.c: Likewise. + * gcc.dg/debug/dwarf2/pr37726.c: Likewise. + * gcc.dg/debug/dwarf2/pr41445-1.c: Likewise. + * gcc.dg/debug/dwarf2/pr41445-2.c: Likewise. + * gcc.dg/debug/dwarf2/pr41445-3.c: Likewise. + * gcc.dg/debug/dwarf2/pr41445-4.c: Likewise. + * gcc.dg/debug/dwarf2/pr41445-5.c: Likewise. + * gcc.dg/debug/dwarf2/pr41445-6.c: Likewise. + * gcc.dg/debug/dwarf2/pr41543.c: Likewise. + * gcc.dg/debug/dwarf2/pr41695.c: Likewise. + * gcc.dg/debug/dwarf2/pr43237.c: Likewise. + * gcc.dg/debug/dwarf2/pr47939-1.c: Likewise. + * gcc.dg/debug/dwarf2/pr47939-2.c: Likewise. + * gcc.dg/debug/dwarf2/pr47939-3.c: Likewise. + * gcc.dg/debug/dwarf2/pr47939-4.c: Likewise. + * gcc.dg/debug/dwarf2/pr53948.c: Likewise. + * gcc.dg/debug/dwarf2/struct-loc1.c: Likewise. + +2013-08-14 Janis Johnson + + * gcc.target/arm/pr19599.c: Skip for -mthumb. + + * gcc.target/arm/atomic-comp-swap-release-acquire.c: Move dg-do + to be the first test directive. + * gcc.target/arm/atomic-op-acq_rel.c: Likewise. + * gcc.target/arm/atomic-op-acquire.c: Likewise. + * gcc.target/arm/atomic-op-char.c: Likewise. + * gcc.target/arm/atomic-op-consume.c: Likewise. + * gcc.target/arm/atomic-op-int.c: Likewise. + * gcc.target/arm/atomic-op-relaxed.c: Likewise. + * gcc.target/arm/atomic-op-release.c: Likewise. + * gcc.target/arm/atomic-op-seq_cst.c: Likewise. + * gcc.target/arm/atomic-op-short.c: Likewise. + +2013-08-14 Andrey Belevantsev + + PR rtl-optimization/57662 + * gcc.dg/pr57662.c: New test. + +2013-08-13 Maciej W. Rozycki + + * gcc.target/mips/nan-legacy.c: Accept 4294967295 as an + alternative to -1. + * gcc.target/mips/nans-legacy.c: Likewise. + +2013-08-13 Maciej W. Rozycki + + * gcc.target/mips/fabs-2008.c: Correct scan-assembler pattern + escapes. + * gcc.target/mips/fabs-legacy.c: Likewise. + * gcc.target/mips/fabsf-2008.c: Likewise. + * gcc.target/mips/fabsf-legacy.c: Likewise. + * gcc.target/mips/fneg-2008.c: Likewise. + * gcc.target/mips/fneg-legacy.c: Likewise. + * gcc.target/mips/fnegf-2008.c: Likewise. + * gcc.target/mips/fnegf-legacy.c: Likewise. + * gcc.target/mips/nan-2008.c: Likewise. + * gcc.target/mips/nan-legacy.c: Likewise. + * gcc.target/mips/nanf-2008.c: Likewise. + * gcc.target/mips/nanf-legacy.c: Likewise. + * gcc.target/mips/nans-2008.c: Likewise. + * gcc.target/mips/nans-legacy.c: Likewise. + * gcc.target/mips/nansf-2008.c: Likewise. + * gcc.target/mips/nansf-legacy.c: Likewise. + +2013-08-13 Eric Botcazou + + * gnat.dg/valued_proc.adb: New test. + * gnat.dg/valued_proc_pkg.ads: New helper. + +2013-08-13 Jakub Jelinek + + PR tree-optimization/57661 + * g++.dg/opt/pr57661.C: New test. + + PR sanitizer/56417 + * gcc.dg/asan/pr56417.c: New test. + +2013-08-13 Eric Botcazou + + * gnat.dg/loop_optimization16.adb: New test. + * gnat.dg/loop_optimization16_pkg.ad[sb]: New helper. + +2013-08-13 Marek Polacek + + * gcc.dg/pr57980.c: Use vector of two elements, not just one. + +2013-08-13 David Malcolm + + Example of converting global state to per-pass state. + + * gcc.dg/plugin/one_time_plugin.c (one_pass::execute): Convert + global state "static int counter" to... + (one_pass::counter): ...this instance data. + +2013-08-13 David Malcolm + + * gcc.dg/plugin/one_time_plugin.c: (one_pass_gate): Convert + to member function... + (one_pass::gate): ...this. + (one_pass_exec): Convert to member function... + (one_pass::impl_execute): ...this. + +2013-08-12 Paolo Carlini + + PR c++/57416 + * g++.dg/cpp0x/pr57416.C: New. + +2013-08-12 Paolo Carlini + + * g++.dg/cpp0x/constexpr-function2.C: Adjust for error -> inform + changes. + * g++.dg/cpp0x/constexpr-neg1.C: Likewise. + * g++.dg/cpp0x/defaulted2.C: Likewise. + * g++.dg/cpp0x/defaulted31.C: Likewise. + * g++.dg/cpp0x/error6.C: Likewise. + * g++.dg/cpp0x/gen-attrs-32.C: Likewise. + * g++.dg/cpp0x/override2.C: Likewise. + * g++.dg/cpp0x/parse1.C: Likewise. + * g++.dg/cpp0x/scoped_enum.C: Likewise. + * g++.dg/cpp0x/temp_default4.C: Likewise. + * g++.dg/ext/attrib32.C: Likewise. + * g++.dg/ext/gnu-inline-global-reject.C: Likewise. + * g++.dg/ext/mv13.C: Likewise. + * g++.dg/ext/mv7.C: Likewise. + * g++.dg/ext/mv9.C: Likewise. + * g++.dg/ext/pr57362.C: Likewise. + * g++.dg/ext/typeof10.C: Likewise. + * g++.dg/lookup/anon6.C: Likewise. + * g++.dg/lookup/crash6.C: Likewise. + * g++.dg/lookup/name-clash5.C: Likewise. + * g++.dg/lookup/name-clash6.C: Likewise. + * g++.dg/other/anon4.C: Likewise. + * g++.dg/other/error15.C: Likewise. + * g++.dg/other/error8.C: Likewise. + * g++.dg/other/redecl2.C: Likewise. + * g++.dg/parse/crash16.C: Likewise. + * g++.dg/parse/crash21.C: Likewise. + * g++.dg/parse/crash38.C: Likewise. + * g++.dg/parse/redef2.C: Likewise. + * g++.dg/parse/struct-as-enum1.C: Likewise. + * g++.dg/template/crash39.C: Likewise. + * g++.dg/template/redecl3.C: Likewise. + * g++.dg/tls/diag-3.C: Likewise. + * g++.dg/warn/Wredundant-decls-spec.C: Likewise. + * g++.old-deja/g++.benjamin/typedef01.C: Likewise. + * g++.old-deja/g++.benjamin/warn02.C: Likewise. + * g++.old-deja/g++.brendan/crash16.C: Likewise. + * g++.old-deja/g++.brendan/crash18.C: Likewise. + * g++.old-deja/g++.brendan/err-msg4.C: Likewise. + * g++.old-deja/g++.brendan/redecl1.C: Likewise. + * g++.old-deja/g++.brendan/static3.C: Likewise. + * g++.old-deja/g++.bugs/900127_02.C: Likewise. + * g++.old-deja/g++.jason/binding.C: Likewise. + * g++.old-deja/g++.jason/crash4.C: Likewise. + * g++.old-deja/g++.jason/crash7.C: Likewise. + * g++.old-deja/g++.jason/lineno.C: Likewise. + * g++.old-deja/g++.jason/scoping7.C: Likewise. + * g++.old-deja/g++.mike/misc3.C: Likewise. + * g++.old-deja/g++.mike/net44.C: Likewise. + * g++.old-deja/g++.mike/ns3.C: Likewise. + * g++.old-deja/g++.ns/alias4.C: Likewise. + * g++.old-deja/g++.ns/ns11.C: Likewise. + * g++.old-deja/g++.other/crash23.C: Likewise. + * g++.old-deja/g++.other/decl8.C: Likewise. + * g++.old-deja/g++.other/linkage3.C: Likewise. + * g++.old-deja/g++.other/typeck1.C: Likewise. + * g++.old-deja/g++.other/typedef5.C: Likewise. + * g++.old-deja/g++.pt/explicit34.C: Likewise. + * g++.old-deja/g++.pt/friend36.C: Likewise. + * obj-c++.dg/method-8.mm: Likewise. + * obj-c++.dg/tls/diag-3.mm: Likewise. + +2013-08-12 Perez Read + + PR target/58132 + * gcc.target/i386/movabs-1.c: New test. + +2013-08-12 Marek Polacek + + PR tree-optimization/57980 + * gcc.dg/pr57980.c: New test. + +2013-08-12 Thomas Koenig + + PR fortran/56666 + * gfortran.dg/do_check_10.f90: New test. + * gfortran.dg/array_constructor_11.f90: Add -Wzerotrip to dg-options. + * gfortran.dg/array_constructor_18.f90: Likewise. + * gfortran.dg/array_constructor_22.f90: Likewise. + * gfortran.dg/coarray_15.f90: Likewise. + * gfortran.dg/do_1.f90: Add -Wall to dg-options. + * gfortran.dg/do_3.F90: Add -Wzerotrip to dg-options. + * gfortran.dg/do_check_5.f90: Add -Wall to gd-options. + +2013-08-11 Paolo Carlini + + PR c++/53349 + * g++.dg/cpp0x/constexpr-ice8.C: New. + +2013-08-09 Xinliang David Li + + * gcc.target/i386/memcpy-strategy-1.c: New test. + * gcc.target/i386/memcpy-strategy-2.c: Ditto. + * gcc.target/i386/memset-strategy-1.c: Ditto. + * gcc.target/i386/memcpy-strategy-3.c: Ditto. + +2013-08-09 Jan Hubicka + + * gcc.dg/tree-prof/crossmodule-indircall-1.c: New testcase. + * gcc.dg/tree-prof/crossmodule-indircall-1a.c: New testcase. + +2013-08-09 Yufeng Zhang + + * gcc.dg/lower-subreg-1.c: Skip aarch64*-*-*. + +2013-08-09 Janus Weil + + PR fortran/58058 + * gfortran.dg/transfer_intrinsic_6.f90: New. + +2013-08-09 Paolo Carlini + + Revert: + 2013-08-07 Paolo Carlini + + PR c++/46206 + * g++.dg/lookup/typedef2.C: New. + +2013-08-09 James Greenhalgh + + * gcc.target/aarch64/scalar_intrinsics.c: Update expected + output of vdup intrinsics. + +2013-08-09 Zhenqiang Chen + + * gcc.target/arm/lp1189445.c: New testcase. + +2013-08-08 Richard Sandiford + + PR rtl-optimization/58079 + * gcc.dg/torture/pr58079.c: New test. + +2013-08-07 Eric Botcazou + + * gnat.dg/warn9.adb: New test. + +2013-08-07 Paolo Carlini + + PR c++/46206 + * g++.dg/lookup/typedef2.C: New. + +2013-08-07 David Malcolm + + * lib/plugin-support.exp (plugin-test-execute): Add -fno-rtti + to optstr when building plugins on darwin. + +2013-08-06 Martin Jambor + + PR tree-optimization/57539 + * gcc.dg/ipa/pr57539.c: New test. + +2013-08-06 Martin Jambor + Bernd Edlinger + + * gcc.dg/torture/pr58041.c (foo): Accept z by reference. + (a): Fix constructor. + +2013-08-06 Martin Jambor + + PR fortran/57987 + * gfortran.dg/pr57987.f90: New test. + +2013-08-06 Martin Jambor + + PR middle-end/58041 + * gcc.dg/torture/pr58041.c: New test. + * gcc.target/arm/pr58041.c: Likewise. + +2013-08-06 Janus Weil + + PR fortran/57306 + * gfortran.dg/pointer_init_8.f90: New. + +2013-08-05 Paolo Carlini + + PR c++/58080 + * g++.dg/cpp0x/pr58080.C: New. + +2013-08-05 David Malcolm + + * lib/plugin-support.exp (plugin-test-execute): Add -fno-rtti + to optstr when building plugins. + +2013-08-05 David Malcolm + + Patch autogenerated by refactor_passes.py from + https://github.com/davidmalcolm/gcc-refactoring-scripts + revision 03fe39476a4c4ea450b49e087cfa817b5f92021e + + * gcc.dg/plugin/one_time_plugin.c (one_pass): Convert from a global + struct to a subclass of gimple_opt_pass along with... + (pass_data_one_pass): ...new pass_data instance and... + (make_one_pass): ...new function. + * gcc.dg/plugin/selfassign.c (pass_warn_self_assign): Convert from a + global struct to a subclass of gimple_opt_pass along with... + (pass_data_warn_self_assign): ...new pass_data instance and... + (make_pass_warn_self_assign): ...new function. + * g++.dg/plugin/dumb_plugin.c (pass_dumb_plugin_example): Convert from + a global struct to a subclass of gimple_opt_pass along with... + (pass_data_dumb_plugin_example): ...new pass_data instance and... + (make_pass_dumb_plugin_example): ...new function. + * g++.dg/plugin/selfassign.c (pass_warn_self_assign): Convert from a + global struct to a subclass of gimple_opt_pass along with... + (pass_data_warn_self_assign): ...new pass_data instance and... + (make_pass_warn_self_assign): ...new function. + +2013-08-05 David Malcolm + + * g++.dg/plugin/dumb_plugin.c (plugin_init): Rework how the pass + is created and added to the pass_manager to reflect + autogenerated changes. + * g++.dg/plugin/selfassign.c (plugin_init): Likewise. + * gcc.dg/plugin/one_time_plugin.c (plugin_init): Likewise. + * gcc.dg/plugin/selfassign.c (plugin_init): Likewise. + +2013-08-04 Ed Smith-Rowland <3dw4rd@verizon.net> + + PR c++/58072 + * g++.dg/cpp0x/pr58072.C: New. + +2013-08-03 Bill Schmidt + + * gcc.dg/torture/pr57993-2.cpp: New. + +2013-08-02 Jan Hubicka + + * gcc.dg/ipa/ipa-1.c: Update. + * gcc.dg/ipa/ipa-2.c: Update. + * gcc.dg/ipa/ipa-3.c: Update. + * gcc.dg/ipa/ipa-4.c: Update. + * gcc.dg/ipa/ipa-5.c: Update. + * gcc.dg/ipa/ipa-7.c: Update. + * gcc.dg/ipa/ipa-8.c: Update. + * gcc.dg/ipa/ipcp-1.c: Update. + * gcc.dg/ipa/ipcp-2.c: Update. + +2013-08-02 Vladimir Makarov + + PR rtl-optimization/58048 + * gcc.target/i386/pr58048.c: New. + +2013-08-02 Kyrylo Tkachov + + * gcc.target/arm/neon-for-64bits-2.c: Delete. + +2013-08-01 Fabien Chêne + Peter Bergner + + PR c++/54537 + * g++.dg/overload/using3.C: New. + * g++.dg/overload/using2.C: Adjust. + * g++.dg/lookup/using9.C: Likewise. + +2013-08-01 Kyrylo Tkachov + + * gcc.target/arm/pr46972-2.c: New test. + +2013-08-01 Vidya Praveen + + * gcc.dg/vect/vect-iv-5.c: Make xfail conditional with !arm_neon_ok. + +2013-07-31 Michael Meissner + + * gcc.target/powerpc/fusion.c: New file, test power8 fusion support. + +2013-07-31 Richard Sandiford + + * gcc.target/mips/mips.exp (mips-dg-options): Test for mabicalls + rather than addressing!=absolute when deciding how to handle MIPS16 + when the test forces an ABI. + +2013-07-30 Paolo Carlini + + PR c++/57673 + * g++.dg/cpp0x/nsdmi-sizeof.C: New. + +2013-07-30 Steve Ellcey + + * gcc.target/mips/code-readable-1.c: Increase switch size. + * gcc.target/mips/code-readable-2.c: Ditto. + * gcc.target/mips/code-readable-3.c: Ditto. + * gcc.target/mips/code-readable-4.c: Ditto. + +2013-07-30 Paolo Carlini + + PR c++/57947 + * g++.dg/parse/crash63.C: New. + +2013-07-30 Tobias Burnus + + PR fortran/57530 + * gfortran.dg/pointer_assign_8.f90: New. + * gfortran.dg/pointer_assign_9.f90: New. + * gfortran.dg/pointer_assign_10.f90: New. + * gfortran.dg/pointer_assign_11.f90: New. + +2013-07-30 Zhenqiang Chen + + * gcc.target/arm/pr57637.c: New testcase. + +2013-07-29 Bill Schmidt + + PR tree-optimization/57993 + * gcc.dg/torture/pr57993.c: New test. + +2013-07-29 Joern Rennecke + + * gcc.dg/tree-ssa/pr44258.c: Disable scan test for Epiphany. + +2013-07-29 Paolo Carlini + + PR c++/57948 + * g++.dg/conversion/ambig2.C: New. + +2013-07-29 Maciej W. Rozycki + + * gcc.target/mips/fabs-2008.c: New test case. + * gcc.target/mips/fabs-legacy.c: New test case. + * gcc.target/mips/fabsf-2008.c: New test case. + * gcc.target/mips/fabsf-legacy.c: New test case. + * gcc.target/mips/fneg-2008.c: New test case. + * gcc.target/mips/fneg-legacy.c: New test case. + * gcc.target/mips/fneg-2008.c: New test case. + * gcc.target/mips/fneg-legacy.c: New test case. + * gcc.target/mips/nan-2008.c: New test case. + * gcc.target/mips/nan-legacy.c: New test case. + * gcc.target/mips/nanf-2008.c: New test case. + * gcc.target/mips/nanf-legacy.c: New test case. + * gcc.target/mips/nans-2008.c: New test case. + * gcc.target/mips/nans-legacy.c: New test case. + * gcc.target/mips/nansf-2008.c: New test case. + * gcc.target/mips/nansf-legacy.c: New test case. + * gcc.target/mips/mips.exp: Handle `-mabs=' and `-mnan='. + +2013-07-29 Alexander Ivchenko + Maxim Kuvyrkov + + * lib/target-supports.exp (check_effective_target_non_bionic): New + effective-target test. + * g++.dg/tls/thread_local4.C: Disable test for Bionic. + * g++.dg/tls/thread_local4g.C: Ditto. + +2013-07-28 Thomas Koenig + + PR fortran/58009 + * gfortran.dg/vector_subsript_7.f90: New test. + +2013-07-27 Tobias Burnus + + PR fortran/57991 + * gfortran.dg/warn_alias.f90: New. + +2013-07-27 Janus Weil + + PR fortran/57285 + * gfortran.dg/class_array_19.f90: New. + +2013-07-27 Eric Botcazou + + * gcc.dg/vect/pr57705.c: Adjust for a !vect_pack_trunc target. + * gcc.dg/vect/pr57741-2.c: Require a vect_float target. + * gcc.dg/vect/pr57741-3.c: Likewise. + * gcc.dg/vect/bb-slp-32.c: XFAIL for a vect_no_align target. + +2013-07-26 Joern Rennecke + + Skip tests that make assumptions about struct layout that don't hold + on epiphany: + * g++.dg/cpp0x/cast.C: Skip for epiphany-*-*. + * g++.dg/cpp0x/iop.C: Likewise. + * g++.dg/cpp0x/named_refs.C: Likewise. + * g++.dg/cpp0x/rv1p.C: Likewise. + * g++.dg/cpp0x/rv2p.C: Likewise. + * g++.dg/cpp0x/rv3p.C: Likewise. + * g++.dg/cpp0x/rv4p.C: Likewise. + * g++.dg/cpp0x/rv5p.C: Likewise. + * g++.dg/cpp0x/rv6p.C: Likewise. + * g++.dg/cpp0x/rv7p.C: Likewise. + * g++.dg/cpp0x/rv8p.C: Likewise. + * g++.dg/ext/strncpy-chk1.C: Likewise. + * gcc.dg/builtin-object-size-10.c: Likewise. + * gcc.dg/builtin-object-size-11.c: Likewise. + * gcc.dg/builtin-stringop-chk-1.c: Likewise. + * gcc.dg/pr25805.c: Likewise. + * gcc.c-torture/execute/builtins/memcpy-chk.x: New file. + * gcc.c-torture/execute/builtins/memmove-chk.x: Likewise. + * gcc.c-torture/execute/builtins/mempcpy-chk.x: Likewise. + * gcc.c-torture/execute/builtins/memset-chk.x: Likewise. + * gcc.c-torture/execute/builtins/snprintf-chk.x: Likewise. + * gcc.c-torture/execute/builtins/sprintf-chk.x: Likewise. + * gcc.c-torture/execute/builtins/stpcpy-chk.x: Likewise. + * gcc.c-torture/execute/builtins/strcat-chk.x: Likewise. + * gcc.c-torture/execute/builtins/strcpy-chk.x: Likewise. + * gcc.c-torture/execute/builtins/strncat-chk.x: Likewise. + * gcc.c-torture/execute/builtins/strncpy-chk.x: Likewise. + * gcc.c-torture/execute/builtins/vsnprintf-chk.x: Likewise. + * gcc.c-torture/execute/builtins/vsprintf-chk.x: Likewise. + * gcc.c-torture/execute/zerolen-2.x: Likewise. + * gcc.c-torture/execute/builtins/stpcpy-chk.x: Likewise. + + * gcc.dg/pr27095.c: For Epiphany, add -mshort-calls. + * gcc.dg/tree-ssa/loop-1.c: Likewise. + + * gcc.dg/torture/pr37868.c: Disable for epiphany. + * gcc.dg/sibcall-6.c: Enable for epiphany. + +2013-07-26 Kyrylo Tkachov + + * gcc.target/arm/minmax_minus.c: Scan for absence of mov. + +2013-07-26 David Edelsohn + + * gcc.target/powerpc/ppc-vector-memcpy.c: Test use of VMX for + memcpy not initializers. + + * gcc.dg/guality/guality.exp: Skip on AIX. + +2013-07-26 Paolo Carlini + + PR c++/57101 + * g++.dg/cpp0x/pr57101.C: New. + +2013-07-26 Ian Bolton + + * gcc.target/aarch64/neg_1.c: New test. + +2013-07-25 Janus Weil + + PR fortran/57966 + * gfortran.dg/typebound_call_25.f90: New. + +2013-07-25 Paolo Carlini + + PR c++/57981 + * g++.dg/cpp0x/pr57981.C: New. + +2013-07-25 Paolo Carlini + + PR c++/57880 + * g++.dg/cpp1y/udlit-empty-string-neg.C: New. + +2013-07-25 Vladimir Makarov + + PR rtl-optimization/57960 + * gcc.target/s390/pr57960.c: New. + +2013-07-25 Janus Weil + + PR fortran/57639 + * gfortran.dg/unlimited_polymorphic_9.f90: New. + +2013-07-25 Terry Guo + + * gcc.target/arm/thumb1-Os-mult.c: New test case. + +2013-07-24 Paolo Carlini + + PR c++/57942 + * g++.dg/inherit/pr57942.C: New. + +2013-07-23 Michael Meissner + + * gcc.target/powerpc/bool2.h: New file, test the code generation + of logical operations for power5, altivec, power7, and power8 systems. + * gcc.target/powerpc/bool2-p5.c: Likewise. + * gcc.target/powerpc/bool2-av.c: Likewise. + * gcc.target/powerpc/bool2-p7.c: Likewise. + * gcc.target/powerpc/bool2-p8.c: Likewise. + * gcc.target/powerpc/bool3.h: Likewise. + * gcc.target/powerpc/bool3-av.c: Likewise. + * gcc.target/powerpc/bool2-p7.c: Likewise. + * gcc.target/powerpc/bool2-p8.c: Likewise. + +2013-07-23 Yufeng Zhang + + * gcc.target/aarch64/vect_smlal_1.c: Replace 'long' with 'long long'. + +2013-07-23 Yufeng Zhang + + * gcc.target/aarch64/test-ptr-arg-on-stack-1.c: New test. + +2013-07-23 Yufeng Zhang + + * gcc.dg/20020219-1.c: Skip the test on aarch64*-*-* in ilp32. + * gcc.target/aarch64/aapcs64/test_18.c (struct y): Change the field + type from long to long long. + * gcc.target/aarch64/atomic-op-long.c: Update dg-final directives + to have effective-target keywords of lp64 and ilp32. + * gcc.target/aarch64/fcvt_double_int.c: Likewise. + * gcc.target/aarch64/fcvt_double_long.c: Likewise. + * gcc.target/aarch64/fcvt_double_uint.c: Likewise. + * gcc.target/aarch64/fcvt_double_ulong.c: Likewise. + * gcc.target/aarch64/fcvt_float_int.c: Likewise. + * gcc.target/aarch64/fcvt_float_long.c: Likewise. + * gcc.target/aarch64/fcvt_float_uint.c: Likewise. + * gcc.target/aarch64/fcvt_float_ulong.c: Likewise. + * gcc.target/aarch64/vect_smlal_1.c: Replace 'long' with 'long long'. + +2013-07-23 Tom Tromey + Joseph Myers + + * gcc.dg/c11-generic-1.c: New file. + * gcc.dg/c11-generic-2.c: New file. + +2013-07-22 Tobias Burnus + + PR fortran/57906 + PR fortran/52052 + * coarray/lib_realloc_1.f90: Permit optimization. + * gfortran.dg/coarray_31.f90: New. + +2013-07-22 Tobias Burnus + + PR fortran/57762 + * gfortran.dg/class_array_7.f03: Fix memory leak. + +2013-07-22 Paolo Carlini + + PR c++/52816 + * g++.dg/cpp0x/decltype56.C: New. + +2013-07-22 Kyrylo Tkachov + + * gcc.dg/pr53265.c: Correct line number in dg-message. + +2013-07-22 Diego Novillo + + * g++.dg/pr57878.C: Do not force -m32. Use target ilp32. + +2013-07-22 Georg-Johann Lay + + PR testsuite/52641 + * gcc.c-torture/execute/pr57124.x: Skip int16 platforms. + * gcc.c-torture/execute/pr53366-1.x: New: Skip int16 platforms. + +2013-07-22 Georg-Johann Lay + + PR testsuite/52641 + * gcc.c-torture/execute/pr57344-2.x: New. Skip int16. + * gcc.dg/pr53265.c: Add dg-require-effective-target size32plus. + * gcc.dg/torture/pr53366-1.c: Same. + * gcc.dg/torture/pr57381.c: Add dg-require-effective-target int32plus. + * gcc.dg/torture/pr56488.c: Same. + * gcc.dg/torture/pr57584.c: Same. + * gcc.dg/tree-ssa/pr57385.c: Same. + * gcc.dg/pr57154.c: Add dg-require-effective-target scheduling. + +2013-07-21 Ondřej Bílka + + * c-c++-common/pr41779.c: Fix typos. + * gcc.c-torture/compile/20031125-2.c: Likewise. + * gcc.c-torture/compile/20040621-1.c: Likewise. + * gcc.c-torture/execute/20020418-1.c: Likewise. + * gcc.dg/20020108-1.c: Likewise. + * gcc.dg/atomic-generic-aux.c: Likewise. + * gcc.dg/builtin-complex-err-2.c: Likewise. + * gcc.dg/decl-1.c: Likewise. + * gcc.dg/di-sync-multithread.c: Likewise. + * gcc.dg/format/c90-printf-1.c: Likewise. + * gcc.dg/format/ms_c90-printf-1.c: Likewise. + * gcc.dg/long-long-compare-1.c: Likewise. + * gcc.dg/plugin/start_unit_plugin.c: Likewise. + * gcc.dg/pr17055-1.c: Likewise. + * gcc.dg/pr27095.c: Likewise. + * gcc.dg/torture/fp-int-convert.h: Likewise. + * gcc.dg/tree-prof/inliner-1.c: Likewise. + * gcc.dg/tree-ssa/20030731-1.c: Likewise. + * gcc.dg/tree-ssa/forwprop-6.c: Likewise. + * gcc.dg/tree-ssa/ipa-cp-1.c: Likewise. + * gcc.dg/tree-ssa/loop-19.c: Likewise. + * gcc.dg/tree-ssa/loop-1.c: Likewise. + * gcc.dg/tree-ssa/pr21001.c: Likewise. + * gcc.dg/tree-ssa/pr42585.c: Likewise. + * gcc.dg/tree-ssa/ssa-dse-5.c: Likewise. + * gcc.dg/vect/vect-cond-5.c: Likewise. + * gcc.dg/weak/typeof-2.c: Likewise. + * gcc.target/aarch64/aapcs64/abitest-common.h: Likewise. + * gcc.target/arm/naked-1.c: Likewise. + * gcc.target/i386/pr9771-1.c: Likewise. + * gcc.target/sparc/sparc-constant-1.c: Likewise. + * gcc.target/sparc/struct-ret-check.c: Likewise. + * gcc.target/x86_64/abi/test_struct_returning.c: Likewise. + * gfortran.dg/c_ptr_tests_8_funcs.c: Likewise. + * objc-obj-c++-shared/objc-test-suite-next-encode-assist-impl.h: + Likewise. + +2013-07-21 Thomas Koenig + + PR fortran/56937 + * gfortran.dg/dependency_42.f90: New test. + * gfortran.dg/dependency_43.f90: New test. + +2013-07-21 Tobias Burnus + + PR fortran/35862 + * gfortran.dg/round_4.f90: New. + +2013-07-21 Tobias Burnus + + PR fortran/57894 + * gfortran.dg/min_max_conformance_2.f90: New. + +2013-07-20 Jakub Jelinek + + PR preprocessor/57620 + * c-c++-common/raw-string-2.c (s12, u12, U12, L12): Remove. + (main): Don't test {s,u,U,L}12. + * c-c++-common/raw-string-13.c: New test. + * c-c++-common/raw-string-14.c: New test. + * c-c++-common/raw-string-15.c: New test. + * c-c++-common/raw-string-16.c: New test. + +2013-07-20 James Greenhalgh + + * gcc.target/aarch64/vabs_intrinsic_1.c: New file. + +2013-07-20 Joern Rennecke + + * gcc.dg/pr57154.c: Add dg-require-effective-target scheduling. + + * gcc.dg/tree-ssa/pr21090.c: Do vrp1 scan check only for + target { ! keeps_null_pointer_checks }. + * gcc.dg/tree-ssa/unreachable.c: Do optimized scan check only for + target { ! keeps_null_pointer_checks }. + + * gcc.dg/torture/pr53366-1.c: Only run for target { size32plus }. + * gcc.dg/torture/pr56488.c: Likewise. + +2013-07-19 Ian Bolton + + * gcc.target/aarch64/scalar_intrinsics.c (test_vabs_s64): Added + new testcase. + +2013-07-19 David Edelsohn + + * gfortran.fortran-torture/execute/intrinsic_nearest.x: Skip on AIX. + * gfortran.dg/nint_2.f90: Correct AIX target name to skip. + * gfortran.dg/guality/guality.exp: Skip on AIX. + + * lib/dg-pch.exp (dg-flags-pch): Skip on AIX. + + * g++.dg/debug/pr56819.C: Skip on AIX. + * g++.dg/ext/vector23.C: Ignore vector ABI warning. + * g++.dg/guality/guality.exp: Skip on AIX. + + * g++.old-deja/g++.other/init19.C: Require cxa_atext. + + * gcc.misc-tests/gcov-14.c: Skip on AIX. + + * gcc.dg/simulate-thread/simulate-thread.exp: Skip on AIX. + +2013-07-19 Georg-Johann Lay + + PR target/57516 + * gcc.target/avr/torture/builtins-4-roundfx.c (test2hr, test2k): + Adjust to corrected rounding. + +2013-07-19 Georg-Johann Lay + + * lib/target-supports.exp (check_effective_target_cilkplus): New proc. + * gcc.dg/cilk-plus/cilk-plus.exp: only run if + check_effective_target_cilkplus. + * g++.dg/cilk-plus/cilk-plus.exp: Same. + +2013-07-18 Pat Haugen + + * gcc.target/powerpc/pr57744.c: Fix typo. + +2013-07-18 Sriraman Tallam + + PR middle-end/57698 + * gcc.c-torture/compile/pr57698.c: New test. + * gcc.c-torture/compile/pr43791.c: Remove prune output directive. + * gcc.c-torture/compile/pr44043.c: Ditto. + +2013-07-18 Wei Mi + + PR rtl-optimization/57878 + * g++.dg/pr57878.C: New test. + +2013-07-18 Kyrylo Tkachov + + * gcc.dg/pr42611.c: Move dg-error to correct line. + +2013-07-17 Tobias Burnus + + PR fortran/57895 + * gfortran.dg/dollar_sym_3.f: New. + * gfortran.dg/dollar_sym_1.f90: Update dg-error. + +2013-07-16 Iain Sandoe + + PR target/55654 + PR target/55656 + PR target/55657 + * obj-c++.dg/cxx-ivars-3.mm: Use NSObject instead of Object. + * obj-c++.dg/strings/const-cfstring-5.mm: Likewise. + * obj-c++.dg/torture/strings/const-str-10.mm: Likewise. + * obj-c++.dg/torture/strings/const-str-9.mm: Likewise. + * objc.dg/image-info.m: Likewise. + * objc.dg/symtab-1.m: Likewise. + * objc.dg/torture/strings/const-str-10.m: Likewise. + * objc.dg/torture/strings/const-str-11.m: Likewise. + * objc.dg/torture/strings/const-str-9.m: Likewise. + * objc.dg/zero-link-1.m: Likewise. + * objc.dg/zero-link-2.m: Likewise. + * objc.dg/no-extra-load.m: Avoid Foundation.h. + * objc.dg/objc-foreach-4.m: Likewise. + * objc.dg/objc-foreach-5.m: Likewise. + * obj-c++.dg/proto-lossage-7.mm: Use NSObject instead of Object + (for Darwin). + * obj-c++.dg/strings/const-str-12.mm: Likewise. + * obj-c++.dg/syntax-error-1.mm: Likewise. + * objc.dg/method-6.m: Likewise. + * objc.dg/pr23214.m: Likewise. + * objc.dg/proto-lossage-7.m: Likewise. + * objc.dg/strings/const-str-12b.m: Likewise. + * objc.dg/zero-link-3.m: Likewise. + * obj-c++.dg/method-12.mm: Skip on Darwin versions without 'Object'. + * objc.dg/encode-7-next-64bit.m: Use NSObject instead of Object, + adjust headers, interfaces and encoded types to reflect current system + versions. Add FIXME and outputs from current system compiler for + reference. + +2013-07-15 Cong Hou + + * gcc.target/i386/l_fma_float_1.c: Update the instruction to be + counted. + * gcc.target/i386/l_fma_float_3.c: Likewise. + * gcc.target/i386/l_fma_double_1.c: Likewise. + * gcc.target/i386/l_fma_double_3.c: Likewise. + +2013-07-15 Peter Bergner + + * lib/target-supports.exp (check_effective_target_powerpc_htm_ok): New + function to test if HTM is available. + * gcc.target/powerpc/htm-xl-intrin-1.c: New test. + * gcc.target/powerpc/htm-builtin-1.c: New test. + +2013-07-15 Tobias Burnus + + * gfortran.dg/coarray_lib_realloc_1.f90: New. + * gfortran.dg/coarray/lib_realloc_1.f90: New. + * gfortran.dg/coarray_6.f90: Add dg-error. + +2013-07-15 Tobias Burnus + + PR fortran/37336 + * gfortran.dg/finalize_18.f90: New. + +2013-07-14 Thomas Koenig + + PR fortran/52669 + * fortran.dg/module_variable_1.f90: New test. + * fortran.dg/module_variable_2.f90: New test. + +2013-07-14 Marc Glisse + + * g++.dg/ext/vector19.C: Adapt. + * g++.dg/ext/vector23.C: New testcase. + +2013-07-12 Michael Matz + + PR middle-end/55771 + * c-c++-common/pr55771.c: New test. + +2013-07-12 Tejas Belagod + + * gcc.target/aarch64/vect-movi.c: New. + +2013-07-11 Sriraman Tallam + + PR target/57362 + * g++.dg/ext/pr57362.C: New. + +2013-07-11 Georg-Johann Lay + + PR target/57631 + * gcc.target/avr/torture/pr57631.c: New test. + +2013-07-10 Paolo Carlini + + PR c++/57827 + * g++.dg/cpp0x/constexpr-ice7.C: New. + +2013-07-10 Janis Johnson + + * gcc.target/powerpc/20020118-1.c: Force 128-bit stack alignment + for EABI targets. + * gcc.c-torture/execute/nest-align-1.x: New. + +2013-07-10 Paolo Carlini + + PR c++/57874 + * g++.dg/cpp0x/sfinae48.C: New. + +2013-07-10 Jakub Jelinek + + PR preprocessor/57824 + * c-c++-common/raw-string-17.c: New test. + * c-c++-common/gomp/pr57824.c: New test. + +2013-07-10 Paolo Carlini + + PR c++/57869 + * g++.dg/cpp0x/reinterpret_cast1.C: New. + * g++.dg/warn/Wconditionally-supported-1.C: Likewise. + * g++.dg/conversion/dr195.C: Update. + * g++.dg/expr/cast2.C: Likewise. + +2013-07-10 Jakub Jelinek + + * c-c++-common/raw-string-18.c: New test. + * c-c++-common/raw-string-19.c: New test. + + PR preprocessor/57757 + * g++.dg/cpp/paste1.C: New test. + * g++.dg/cpp/paste2.C: New test. + +2013-07-10 Graham Stott + + * gcc.target/mips/mulsize-1.c: New. + * gcc.target/mips/mulsize-2.c: New. + * gcc.target/mips/mulsize-3.c: New. + * gcc.target/mips/mulsize-4.c: New. + +2013-07-09 Marc Glisse + + PR c++/53094 + * g++.dg/cpp0x/constexpr-53094-1.C: Adjust. + * g++.dg/ext/vector24.C: New testcase. + +2013-07-09 Marc Glisse + + PR c++/53000 + * g++.dg/cpp0x/decltype17.C: Adjust. + +2013-07-09 Paolo Carlini + + PR c++/51786 + * g++.dg/cpp0x/pr51786.C: New. + +2013-07-08 Janis Johnson + + * gcc.target/powerpc/tfmode_off.c: Skip for EABI targets. + + * gcc.target/powerpc/ppc-spe64-1.c: Update expected error message. + + * gcc.target/powerpc/pr47197.c: Require powerpc_altivec_ok. + + * gcc.target/powerpc/sd-vsx.c: Require dfp. + * gcc.target/powerpc/sd-pwr6.c: Likewise. + +2013-07-08 Tobias Burnus + + PR fortran/57834 + * gfortran.dg/c_f_pointer_tests_8.f90: New. + +2013-07-08 Tobias Burnus + + PR fortran/50554 + * gfortran.dg/do_check_9.f90: New. + +2013-07-08 Tobias Burnus + + PR fortran/57785 + * gfortran.dg/dot_product_2.f90: New. + +2013-07-08 Tobias Burnus + + PR fortran/57469 + * gfortran.dg/warn_unused_dummy_argument_4.f90: New. + +2013-07-08 Manfred Schwarb + + * gfortran.dg/defined_assignment_7.f90: Fix dg-do. + * gfortran.dg/finalize_10.f90: Fix dg-final. + +2013-07-08 Jakub Jelinek + + PR target/57819 + * gcc.target/i386/pr57819.c: New test. + + PR rtl-optimization/57829 + * gcc.c-torture/execute/pr57829.c: New test. + +2013-07-08 Michael Zolotukhin + + * gcc.target/i386/memcpy-vector_loop-1.c: New. + * gcc.target/i386/memcpy-vector_loop-2.c: New. + +2013-07-06 Uros Bizjak + + PR target/57807 + * gcc.target/i386/pr57807.c: New test. + +2013-07-06 Jakub Jelinek + + PR target/29776 + * gcc.dg/tree-ssa/vrp89.c: New test. + +2013-07-06 Paolo Carlini + + PR c++/28262 + * g++.dg/parse/defarg16.C: New. + +2013-07-05 Vladimir Makarov + + PR rtl-optimization/55342 + * gcc.target/i386/pr55342.c: New. + +2013-07-05 Marcus Shawcroft + + * gcc.dg/pr57518.c: Adjust scan-rtl-dump-not pattern. + +2013-07-05 Paolo Carlini + + PR c++/14263 + * g++.dg/inherit/virtual10.C: New. + +2013-07-04 Joern Rennecke + + PR c/57821 + * gcc.dg/large-size-array-6.c: New test. + +2013-07-04 Paolo Carlini + + PR c++/38634 + * g++.dg/template/crash116.C: New. + +2013-07-04 Joern Rennecke + + * gcc.dg/tree-ssa/vrp66.c: Make conditional on { target { ! int16 } } . + * gcc.dg/tree-ssa/vrp66-int16-sw.c: New test. + +2013-07-04 Paolo Carlini + + PR c++/54998 + * g++.dg/cpp0x/nsdmi-list3.C: New. + +2013-07-03 Jakub Jelinek + + PR target/57777 + * gcc.target/i386/pr57777.c: New test. + + PR c++/57771 + * g++.dg/template/arg9.C: New test. + +2013-07-02 Sriraman Tallam + + * gcc.target/i386/avx-inline.c: New test. + +2013-07-02 Maciej W. Rozycki + + * gcc.target/mips/call-1.c: Accept JALRS and JALR. + * gcc.target/mips/call-2.c: Likewise. + * gcc.target/mips/call-3.c: Likewise. + * gcc.target/mips/lazy-binding-1.c: Likewise. + +2013-07-02 Jakub Jelinek + + PR tree-optimization/57741 + * gcc.dg/vect/pr57741-1.c: New test. + * gcc.dg/vect/pr57741-2.c: New test. + * gcc.dg/vect/pr57741-3.c: New test. + +2013-07-02 Ian Bolton + + * gcc.target/config/aarch64/insv_1.c: Update to show it doesn't work + on big endian. + * gcc.target/config/aarch64/insv_2.c: New test for big endian. + * lib/target-supports.exp: Define aarch64_little_endian. + +2013-07-02 Ian Bolton + + * gcc.target/aarch64/abs_1.c: New test. + +2013-07-02 Ian Bolton + + * gcc.target/aarch64/bfxil_1.c: New test. + * gcc.target/aarch64/bfxil_2.c: Likewise. + +2013-07-01 Balaji V. Iyer + + PR c/57766 + * c-c++-common/cilk-plus/AN/sec_implicit_ex.c (NUMBER): Changed + array sizes from 100 to 20. + +2013-07-01 Dominique d'Humieres + + PR fortran/54788 + * gfortran.dg/pointer_remapping_8.f90: New. + +2013-06-28 Ed Smith-Rowland <3dw4rd@verizon.net> + + * g++.dg/cpp0x/udlit-nospace-neg.C: Adjust. + * g++.dg/cpp1y/udlit-enc-prefix-neg.C: New. + * g++.dg/cpp1y/udlit-userdef-string.C: New. + * g++.dg/cpp1y/complex_literals.h: New. + +2013-06-28 Paolo Carlini + + PR c++/57645 + * g++.dg/cpp0x/noexcept21.C: New. + +2013-06-28 Jakub Jelinek + + PR target/57736 + * gcc.target/i386/pr57736.c: New test. + +2013-06-28 Balaji V. Iyer + + * c-c++-common/cilk-plus/AN/decl-ptr-colon.c (main): Made this testcase + c specific. + * c-c++-common/cilk-plus/AN/decl-ptr-colon.c (main): Changed dg-error + strings to match the fixed error messages. + * c-c++-common/cilk-plus/AN/misc.c (main): Likewise. + * c-c++-common/cilk-plus/AN/rank_mismatch.c (main): Added a new error + message check. + +2013-06-28 Michael Meissner + + PR target/57744 + * gcc.target/powerpc/pr57744.c: New test to make sure lqarx and + stqcx. get even registers. + +2013-06-28 Marc Glisse + + PR c++/57509 + * g++.dg/ext/pr57509.C: Pass vectors by reference to avoid warnings. + +2013-06-28 Kirill Yukhin + + * gcc.target/i386/bmi-1.c: Extend with new instrinsic. + Fix scan patterns. + * gcc.target/i386/bmi-1.c: Ditto. + * gcc.target/i386/bmi-bextr-4.c: New. + * gcc.target/i386/bmi-bextr-5.c: Ditto. + +2013-06-28 Paolo Carlini + + PR c++/57682 + * g++.dg/cpp0x/initlist73.C: New. + +2013-06-27 Meador Inge + + * gcc.dg/atomic-flag.c: Add dg-require-effective-target sync_*. + * g++.dg/simulate-thread/atomics-2.C: Likewise. + * g++.dg/simulate-thread/atomics-1.C: Likewise. + +2013-06-27 Marc Glisse + + PR c++/57509 + * g++.dg/ext/pr57509.C: New file. + +2013-06-27 Jakub Jelinek + + PR target/57623 + * gcc.target/i386/bmi-bextr-3.c: New test. + + PR target/57623 + * gcc.target/i386/bmi2-bzhi-1.c: New test. + +2013-06-27 Marc Glisse + + PR c++/57172 + * g++.dg/cpp0x/pr57172.C: New testcase. + +2013-06-27 Andreas Krebbel + + * gcc.target/s390/htm-1.c: New file. + * gcc.target/s390/htm-nofloat-1.c: New file. + * gcc.target/s390/htm-xl-intrin-1.c: New file. + +2013-06-26 Tobias Burnus + + PR fortran/29800 + * gfortran.dg/bounds_check_17.f90: New. + +2013-06-25 Ed Smith-Rowland <3dw4rd@verizon.net> + + PR c++/57640 + * g++.dg/cpp1y/pr57640.C: New. + +2013-06-25 Balaji V. Iyer + + PR c/57692 + * c-c++-common/cilk-plus/AN/gather_scatter.c: Fixed a bug of stack + overflow due to size of arrays. + +2013-06-25 Jakub Jelinek + + PR tree-optimization/57705 + * gcc.dg/vect/pr57705.c: New test. + * gcc.dg/vect/vect-iv-7.c: Add noclone attribute, remove xfail. + +2013-06-25 Martin Jambor + + PR middle-end/57670 + * g++.dg/ipa/pr57670.C: New test. + +2013-06-25 Richard Biener + + PR middle-end/56977 + * gcc.dg/pr56977.c: New testcase. + +2013-06-24 Martin Jambor + + PR tree-optimization/57358 + * gcc.dg/ipa/pr57358.c: New test. + +2013-06-24 Richard Biener + + PR testsuite/57686 + * gcc.dg/torture/pr57584.c: Remove target specific bits. + +2013-06-24 Richard Biener + + PR tree-optimization/57488 + * gcc.dg/torture/pr57488.c: New testcase. + +2013-06-24 Francois-Xavier Coudert + Dominique d'Humieres + + PR fortran/52413 + * gfortran.dg/fraction.f90: New. + +2013-06-24 Alan Modra + + * gcc.target/powerpc/altivec-consts.c: Correct for little-endian. + Add scan-assembler-not "lvx". + * gcc.target/powerpc/le-altivec-consts.c: New. + +2013-06-23 Paolo Carlini + + * g++.dg/cpp0x/sfinae47.C: New. + +2013-06-23 Oleg Endo + + PR target/52483 + * gcc.target/sh/pr52483-1.c: New. + * gcc.target/sh/pr52483-2.c: New. + * gcc.target/sh/pr52483-3.c: New. + * gcc.target/sh/pr52483-4.c: New. + * gcc.target/sh/pr52483-5.c: New. + +2013-06-23 Sriraman Tallam + + * gcc.target/i386/intrinsics_1.c: New test. + * gcc.target/i386/intrinsics_2.c: Ditto. + * gcc.target/i386/intrinsics_3.c: Ditto. + * gcc.target/i386/intrinsics_4.c: Ditto. + * gcc.target/i386/intrinsics_5.c: Ditto. + * gcc.target/i386/intrinsics_6.c: Ditto. + * gcc.target/i386/avx-1.c: Provide macros for builtins + needing immediate arguments in f16cintrin.h and rtmintrin.h. + +2013-06-21 Tobias Burnus + + PR fortran/37336 + * gfortran.dg/finalize_17.f90: New. + +2013-06-21 Tobias Burnus + + * gfortran.dg/realloc_on_assign_18.f90: New. + +2013-06-21 Balaji V. Iyer + + * c-c++-common/cilk-plus/AN/array_test1.c: Make this an execution test. + Also changed the returns from error as distinct values so that + debugging can get easier. + * c-c++-common/cilk-plus/AN/if_test_errors.c (main): Made certain + errors specific to C, if necessary. Also added new error + hooks for C++. + * c-c++-common/cilk-plus/AN/misc.c (main): Likewise. + * c-c++-common/cilk-plus/AN/parser_errors.c (main): Likewise. + * c-c++-common/cilk-plus/AN/parser_errors2.c (main): Likewise. + * c-c++-common/cilk-plus/AN/parser_errors3.c (main): Likewise. + * c-c++-common/cilk-plus/AN/pr57541.c (main): Likewise. + * c-c++-common/cilk-plus/AN/parser_errors4.c (main): In addition to + the same changes as parser_errors3.c, spaces were added between colons + to not confuse C++ compiler with 2 colons as scope. + * c-c++-common/cilk-plus/AN/vla.c: Make this test C specific. + * g++.dg/cilk-plus/AN/array_test1_tplt.cc: New test. + * g++.dg/cilk-plus/AN/array_test2_tplt.cc: Likewise. + * g++.dg/cilk-plus/AN/array_test_ND_tplt.cc: Likewise. + * g++.dg/cilk-plus/AN/braced_list.cc: Likewise. + * g++.dg/cilk-plus/AN/builtin_fn_custom_tplt.cc: Likewise. + * g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc: Likewise. + * g++.dg/cilk-plus/AN/fp_triplet_values_tplt.c: Likewise. + * g++.dg/cilk-plus/AN/preincr_test.cc: Likewise. + * g++.dg/cilk-plus/AN/postincr_test.cc: Likewise. + * g++.dg/cilk-plus/cilk-plus.exp: New script. + * g++.dg/dg.exp: Included Cilk Plus C++ tests + in the list. + +2013-06-21 Joseph Myers + + PR other/53317 + * gcc.dg/torture/fp-int-convert-float128-timode-2.c: New test. + +2013-06-20 Uros Bizjak + + PR target/57655 + * gcc.target/i386/pr57655.c: New test. + +2013-06-20 Eric Botcazou + + * ada/acats/tests/gcc: Delete. + * gnat.dg/style: Likewise. + +2013-06-20 Jeff Law + + PR tree-optimization/57660 + * gcc.dg/tree-ssa/forwprop-28.c: Don't run test on various targets + based on their branch cost. + + * gcc.dg/tree-ssa/forwprop-28.c: Add missing dg-final. + +2013-06-20 Tobias Burnus + + PR fortran/57633 + * gfortran.dg/list_read_11.f90: New. + +2013-06-20 Richard Biener + + PR tree-optimization/57584 + * gcc.dg/torture/pr57584.c: New testcase. + +2013-06-19 Sharad Singhai + + * g++.dg/gcov/gcov-8.C: New testcase. + * lib/gcov.exp: Handle intermediate format. + +2013-06-19 Wei Mi + + PR rtl-optimization/57518 + * gcc.dg/pr57518.c: New test. + +2013-06-19 Igor Zamyatin + + * gcc.dg/tree-ssa/loop-19.c: Add -fno-common. + +2013-06-19 Jan Hubicka + + * gcc.dg/tree-ssa/attr-alias-2.c: New testcase. + +2013-06-19 Balaji V. Iyer + + * c-c++-common/cilk-plus/AN/builtin_fn_custom.c: Replaced all the + hard-coded values of array sizes with a #define. + * c-c++-common/cilk-plus/AN/builtin_fn_mutating.c: Likewise. + * c-c++-common/cilk-plus/AN/builtin_func_double2.c: Likewise. + * c-c++-common/cilk-plus/AN/gather_scatter.c: Likewise. + * c-c++-common/cilk-plus/AN/pr57577.c: Likewise. + * c-c++-common/cilk-plus/AN/sec_implicit_ex.c: Likewise. + +2013-06-19 Yufeng Zhang + + * gcc.dg/torture/stackalign/builtin-apply-2.c: set + STACK_ARGUMENTS_SIZE with 0 if __aarch64__ is defined. + +2013-06-19 Jeff Law + + * gcc.dg/tree-ssa/forwprop-28.c: New test. + +2013-06-19 Manuel Lopez-Ibanez + + PR c++/57638 + * g++.dg/template/error53.C: New. + +2013-06-19 Sebastian Huber + + PR target/55033 + * gcc.target/powerpc/pr55033.c: Fix options. + +2013-06-18 Sriraman Tallam + + * gcc.target/i386/inline_error.c: New test. + * gcc.c-torture/compile/pr44043.c: Fix test to expect an error. + * gcc.c-torture/compile/pr43791.c: Fix test to expect an error. + +2013-06-18 Paolo Carlini + + PR c++/53211 + * g++.dg/cpp0x/decltype55.C: New. + +2013-06-18 Marek Polacek + + * gcc.dg/c90-fordecl-1.c: Adjust expected message. + +2013-06-17 Balaji V. Iyer + + * c-c++-common/cilk-plus/AN/sec_reduce_ind_same_value.c: New test. + +2013-06-17 Balaji V. Iyer + + * c-c++-common/cilk-plus/AN/array_test1.c: Make this an execution test. + Also changed the returns from error as distinct values so that it is + easier to debug. + +2013-06-17 Sofiane Naci + + * gcc.target/aarch64/scalar_intrinsics.c: Update. + +2013-06-17 Paolo Carlini + + PR c++/16128 + * g++.dg/template/error52.C: New. + * g++.dg/lookup/friend15.C: Update. + * g++.dg/parse/error11.C: Likewise. + * g++.dg/parse/error14.C: Likewise. + * g++.dg/parse/parser-pr28152-2.C: Likewise. + * g++.dg/parse/template25.C: Likewise. + * g++.old-deja/g++.jason/cond.C: Likewise. + * g++.old-deja/g++.mike/for2.C: Likewise. + * g++.old-deja/g++.robertl/eb125.C: Likewise. + * obj-c++.dg/property/dotsyntax-4.mm: Likewise. + +2013-06-17 Kyrylo Tkachov + + * gcc.target/arm/unaligned-memcpy-2.c (dest): Initialize to + ensure alignment. + +2013-06-16 Balaji V. Iyer + + * c-c++-common/cilk-plus/AN/if_test.c (main2): Fixed a bug of + accidentally placing minus sign for length instead of stride. + +2013-06-16 Joern Rennecke + + PR rtl-optimization/57425 + PR rtl-optimization/57569 + * gcc.dg/torture/pr57425-1.c, gcc.dg/torture/pr57425-2.c: New files. + * gcc.dg/torture/pr57425-3.c, gcc.dg/torture/pr57569.c: Likewise. + +2013-06-15 Mikael Morin + + PR fortran/49074 + PR fortran/56136 + * gfortran.dg/typebound_assignment_5.f03: Check the absence of any + packing. + * gfortran.dg/typebound_assignment_6.f03: New. + +2013-06-15 Oleg Endo + + * gcc.target/h8300/h8300.exp: New. + * gcc.dg/pragma-isr.c: Move to ... + * gcc.target/sh/torture/pragma-isr.c: ... here ... + * gcc.target/h8300/pragma-isr.c: ... and here. + * gcc.dg/pragma-isr2.c: Move to ... + * gcc.target/sh/torture/pragma-isr2.c: ... here ... + * gcc.target/h8300/pragma-isr2.c: ... and here. + * gcc.dg/pragma-isr-trapa.c: Move to ... + * gcc.target/sh/pragma-isr-trapa.c: ... here. + * gcc.dg/pragma-isr-trapa2.c: Move to ... + * gcc.target/sh/pragma-isr-trapa2.c: ... here. + * gcc.dg/pragma-isr-trap_exit.c: Move to ... + * gcc.target/sh/pragma-isr-trap-exit.c: ... here. + * gcc.dg/pragma-isr-nosave_low_regs.c: Move to ... + * gcc.target/sh/pragma-isr-nosave_low_regs.c: ... here. + * gcc.dg/attr-isr-nosave_low_regs.c: Move to ... + * gcc.target/sh/attr-isr-nosave_low_regs.c: ... here. + * gcc.dg/attr-isr-trap_exit.c: Move to ... + * gcc.target/sh/attr-isr-trap_exit.c: ... here. + * gcc.dg/attr-isr-trapa.c: Move to ... + * gcc.target/sh/attr-isr-trapa.c: ... here. + +2013-06-14 Paolo Carlini + + PR c++/51413 + * g++.dg/ext/builtin-offsetof1.C: New. + +2013-06-14 Vidya Praveen + + * gcc.target/aarch64/vect_smlal_1.c: New file. + +2013-06-14 Tobias Burnus + + PR fortran/57508 + * gfortran.dg/defined_assignment_7.f90: New. + +2013-06-14 Paolo Carlini + + PR c++/57599 + * g++.dg/rtti/dyncast6.C: New. + * g++.dg/cpp0x/dyncast1.C: Likewise. + +2013-06-14 Alan Modra + + PR middle-end/57134 + * gcc.dg/pr57134.c: New. + +2013-06-14 Tobias Burnus + + PR fortran/57596 + * gfortran.dg/deferred_type_param_9.f90: New. + +2013-06-13 Marc Glisse + + * gcc.dg/fold-minus-1.c: New testcase. + +2013-06-13 Mikael Morin + + PR fortran/49074 + * gfortran.dg/typebound_assignment_5.f03: New. + +2013-06-13 Marc Glisse + + * gcc.dg/tree-ssa/forwprop-27.c: New testcase. + +2013-06-12 Michael Meissner + Pat Haugen + Peter Bergner + + * gcc.target/powerpc/atomic-p7.c: New file, add tests for atomic + load/store instructions on power7, power8. + * gcc.target/powerpc/atomic-p8.c: Likewise. + +2013-06-12 Balaji V. Iyer + + PR c/57577 + * c-c++-common/cilk-plus/AN/pr57577.c: New testcase. + +2013-06-12 Paolo Carlini + + PR c++/38958 + * g++.dg/warn/Wunused-var-20.C: New. + +2013-06-12 Richard Sandiford + + * gcc.target/mips/mips.exp: Handle -f{no-,}common. + * gcc.target/mips/memcpy-1.c: Remove redundant dg-do. + Run with -fno-common. + +2013-06-12 Balaji V. Iyer + + * c-c++-common/cilk-plus/AN/sec_implicit_ex.c (main): Replaced abort + and exit function calls with return 1 and return 0, respectively. + +2013-06-12 Richard Sandiford + + * gcc.target/mips/umips-branch-1.c, gcc.target/mips/umips-branch-2.c: + New tests. + +2013-06-12 Marc Glisse + + PR tree-optimization/57361 + * gcc.dg/tree-ssa/pr57361.c: New file. + +2013-06-12 Ramana Radhakrishnan + + * gcc.target/arm/unaligned-memcpy-4.c (src, dst): Initialize + to ensure alignment. + * gcc.target/arm/unaligned-memcpy-3.c (src): Likewise. + +2013-06-12 Tobias Burnus + + * gfortran.dg/finalize_10.f90: Update scan-tree-dump. + +2013-06-12 Tobias Burnus + Dominique d'Humieres + + * gfortran.dg/finalize_10.f90: Update scan-tree-dump. + +2013-06-12 Jakub Jelinek + + PR target/56564 + * gcc.target/i386/pr56564-1.c: Skip on darwin, mingw and cygwin. + * gcc.target/i386/pr56564-3.c: Likewise. + +2013-06-11 Tobias Burnus + + PR fortran/57535 + * gfortran.dg/class_array_18.f90: New. + +2013-06-11 Jan Hubicka + + PR c++/57551 + * g++.dg/ext/visibility/anon6.C: Update testcase. + +2013-06-10 Balaji V. Iyer + + PR c/57563 + * c-c++-common/cilk-plus/AN/builtin_fn_mutating.c (main): Fixed a bug + in how we check __sec_reduce_mutating function's result. + +2013-06-10 Michael Meissner + Pat Haugen + Peter Bergner + + * gcc.target/powerpc/direct-move-vint1.c: New tests for power8 + direct move instructions. + * gcc.target/powerpc/direct-move-vint2.c: Likewise. + * gcc.target/powerpc/direct-move.h: Likewise. + * gcc.target/powerpc/direct-move-float1.c: Likewise. + * gcc.target/powerpc/direct-move-float2.c: Likewise. + * gcc.target/powerpc/direct-move-double1.c: Likewise. + * gcc.target/powerpc/direct-move-double2.c: Likewise. + * gcc.target/powerpc/direct-move-long1.c: Likewise. + * gcc.target/powerpc/direct-move-long2.c: Likewise. + +2013-06-10 Paolo Carlini + + PR c++/52440 + * g++.dg/cpp0x/pr52440.C: New. + +2013-06-10 Jakub Jelinek + + PR target/56564 + * gcc.target/i386/pr56564-1.c: New test. + * gcc.target/i386/pr56564-2.c: New test. + * gcc.target/i386/pr56564-3.c: New test. + * gcc.target/i386/pr56564-4.c: New test. + * gcc.target/i386/avx256-unaligned-load-4.c: Add -fno-common. + * gcc.target/i386/avx256-unaligned-store-1.c: Likewise. + * gcc.target/i386/avx256-unaligned-store-3.c: Likewise. + * gcc.target/i386/avx256-unaligned-store-4.c: Likewise. + * gcc.target/i386/vect-sizes-1.c: Likewise. + * gcc.target/i386/memcpy-1.c: Likewise. + * gcc.dg/vect/costmodel/i386/costmodel-vect-31.c (tmp): Initialize. + * gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c (tmp): Likewise. + +2013-06-10 Thomas Schwinge + + * g++.dg/abi/forced.C: Extend current handling of Linux-based x86 + systems to cover all GNU systems. + * g++.dg/abi/guard2.C: Likewise. + * g++.dg/cpp0x/constexpr-rom.C: Likewise. + * g++.dg/eh/sighandle.C: Likewise. + * g++.dg/ext/cleanup-10.C: Likewise. + * g++.dg/ext/cleanup-11.C: Likewise. + * g++.dg/ext/cleanup-8.C: Likewise. + * g++.dg/ext/cleanup-9.C: Likewise. + * g++.dg/opt/const5.C: Likewise. + * g++.dg/opt/life1.C: Likewise. + * g++.dg/other/pr39496.C: Likewise. + * g++.old-deja/g++.abi/aggregates.C: Likewise. + * g++.old-deja/g++.abi/align.C: Likewise. + * g++.old-deja/g++.abi/bitfields.C: Likewise. + * g++.old-deja/g++.law/weak.C: Likewise. + * g++.old-deja/g++.pt/asm1.C: Likewise. + * gcc.c-torture/execute/20030125-1.x: Likewise. + * gcc.c-torture/execute/990127-2.x: Likewise. + * gcc.dg/20041106-1.c: Likewise. + * gcc.dg/20050503-1.c: Likewise. + * gcc.dg/builtin-object-size-5.c: Likewise. + * gcc.dg/cleanup-10.c: Likewise. + * gcc.dg/cleanup-11.c: Likewise. + * gcc.dg/cleanup-8.c: Likewise. + * gcc.dg/cleanup-9.c: Likewise. + * gcc.dg/complex-5.c: Likewise. + * gcc.dg/debug/dwarf2/asm-line1.c: Likewise. + * gcc.dg/debug/dwarf2/discriminator.c: Likewise. + * gcc.dg/dfp/convert-dfp-round-thread.c: Likewise. + * gcc.dg/dfp/pr35739.c: Likewise. + * gcc.dg/fdata-sections-1.c: Likewise. + * gcc.dg/lto/20090206-1_0.c: Likewise. + * gcc.dg/lto/20090206-2_0.c: Likewise. + * gcc.dg/pr30360.c: Likewise. + * gcc.dg/pr37303.c: Likewise. + * gcc.dg/pr39323-1.c: Likewise. + * gcc.dg/pr39323-2.c: Likewise. + * gcc.dg/pr39323-3.c: Likewise. + * gcc.dg/pr45416.c: Likewise. + * gcc.dg/setjmp-2.c: Likewise. + * gcc.dg/split-1.c: Likewise. + * gcc.dg/split-3.c: Likewise. + * gcc.dg/split-4.c: Likewise. + * gcc.dg/strlenopt-12g.c: Likewise. + * gcc.dg/strlenopt-14g.c: Likewise. + * gcc.dg/strlenopt-14gf.c: Likewise. + * gcc.dg/strlenopt-16g.c: Likewise. + * gcc.dg/strlenopt-17g.c: Likewise. + * gcc.dg/strlenopt-18g.c: Likewise. + * gcc.dg/strlenopt-1f.c: Likewise. + * gcc.dg/strlenopt-22g.c: Likewise. + * gcc.dg/strlenopt-2f.c: Likewise. + * gcc.dg/strlenopt-4g.c: Likewise. + * gcc.dg/strlenopt-4gf.c: Likewise. + * gcc.dg/struct-ret-3.c: Likewise. + * gcc.dg/torture/stackalign/setjmp-2.c: Likewise. + * gcc.misc-tests/linkage.exp: Likewise. + * gcc.target/i386/20000724-1.c: Likewise. + * gcc.target/i386/align-main-3.c: Likewise. + * gcc.target/i386/cleanup-1.c: Likewise. + * gcc.target/i386/inline-mcpy.c: Likewise. + * gcc.target/i386/pr32268.c: Likewise. + * gcc.target/i386/pr36613.c: Likewise. + * gcc.target/i386/pr39013-1.c: Likewise. + * gcc.target/i386/pr39013-2.c: Likewise. + * gcc.target/i386/pr39496.c: Likewise. + * gcc.target/i386/pr40906-3.c: Likewise. + * gcc.target/i386/pr46084.c: Likewise. + * lib/target-supports.exp (check_effective_target_pie): Likewise. + +2013-06-09 Oleg Endo + + PR target/6526 + * gcc.target/sh/pr6526.c: New. + +2013-06-09 Jakub Jelinek + + PR target/57568 + * gcc.c-torture/execute/pr57568.c: New test. + +2013-06-09 Paolo Carlini + + PR c++/37404 + * g++.dg/other/vararg-4.C: New. + +2013-06-08 Vladimir Makarov + + PR rtl-optimization/57559 + * gcc.target/s390/pr57559.c : New test. + +2013-06-08 Tobias Burnus + + PR fortran/37336 + * gfortran.dg/finalize_10.f90: New. + * gfortran.dg/auto_dealloc_2.f90: Update tree-dump. + * gfortran.dg/finalize_15.f90: New. + +2013-06-08 Tobias Burnus + + PR fortran/57553 + * gfortran.dg/storage_size_4.f90: New. + +2013-06-07 Sriraman Tallam + + PR c++/57548 + * g++.dg/ext/pr57548.C: New test. + +2013-06-07 Balaji V. Iyer + + PR middle-end/57541 + * c-c++-common/cilk-plus/AN/pr57541.c: New test case. + +2013-06-07 Jan Hubicka + + * gcc.dg/tree-ssa/attr-alias.c: Remove brackets in template. + +2013-06-07 Tobias Burnus + + PR fortran/57549 + * gfortran.dg/array_constructor_48.f90: New. + * gfortran.dg/array_constructor_type_14.f03: Correct test case. + * gfortran.dg/array_constructor_type_15.f03: Ditto. + +2013-06-07 Kyrylo Tkachov + + PR target/56315 + * gcc.target/arm/xordi3-opt.c: New test. + +2013-06-07 Rainer Orth + + * gcc.dg/debug/dwarf2/discriminator.c: Fix wording. + Revert to dg-options. + +2013-06-07 Sebastian Huber + + PR target/55033 + * gcc.target/powerpc/pr55033.c: New. + +2013-06-07 Paolo Carlini + + PR c++/53658 + * g++.dg/cpp0x/alias-decl-36.C: New. + +2013-06-06 Michael Meissner + Pat Haugen + Peter Bergner + + * gcc.target/powerpc/p8vector-builtin-1.c: New test to test + power8 builtin functions. + * gcc.target/powerpc/p8vector-builtin-2.c: Likewise. + * gcc.target/powerpc/p8vector-builtin-3.c: Likewise. + * gcc.target/powerpc/p8vector-builtin-4.c: Likewise. + * gcc.target/powerpc/p8vector-builtin-5.c: Likewise. + * gcc.target/powerpc/p8vector-builtin-6.c: Likewise. + * gcc.target/powerpc/p8vector-builtin-7.c: Likewise. + * gcc.target/powerpc/p8vector-vectorize-1.c: New + tests to test power8 auto-vectorization. + * gcc.target/powerpc/p8vector-vectorize-2.c: Likewise. + * gcc.target/powerpc/p8vector-vectorize-3.c: Likewise. + * gcc.target/powerpc/p8vector-vectorize-4.c: Likewise. + * gcc.target/powerpc/p8vector-vectorize-5.c: Likewise. + + * gcc.target/powerpc/crypto-builtin-1.c: Use effective target + powerpc_p8vector_ok instead of powerpc_vsx_ok. + + * gcc.target/powerpc/bool.c: New file, add eqv, nand, nor tests. + + * lib/target-supports.exp (check_p8vector_hw_available) Add power8 + support. + (check_effective_target_powerpc_p8vector_ok): Likewise. + (is-effective-target): Likewise. + (check_vect_support_and_set_flags): Likewise. + +2013-06-06 Paolo Carlini + + PR c++/43652 + * g++.dg/parse/error53.C: New. + +2013-06-06 Vladimir Makarov + + PR rtl-optimization/57459 + * gcc.target/i386/pr57459.c: New test. + +2013-06-06 Teresa Johnson + + PR c++/53743 + * gcc.dg/tree-prof/va-arg-pack-1.c: Cloned from c-torture, made + into -freorder-blocks-and-partition test. + * gcc.dg/tree-prof/comp-goto-1.c: Ditto. + * gcc.dg/tree-prof/20041218-1.c: Ditto. + * gcc.dg/tree-prof/pr52027.c: Use -O2. + * gcc.dg/tree-prof/pr50907.c: Ditto. + * gcc.dg/tree-prof/pr45354.c: Ditto. + * g++.dg/tree-prof/partition2.C: Ditto. + * g++.dg/tree-prof/partition3.C: Ditto. + +2013-06-06 Tobias Burnus + + PR fortran/57542 + * gfortran.dg/finalize_16.f90: New. + +2013-06-06 Marcus Shawcroft + + * gcc.dg/vect/no-section-anchors-vect-68.c: + Add dg-skip-if aarch64_tiny. + +2013-06-05 Balaji V. Iyer + + PR C/57457 + * c-c++-common/cilk-plus/AN/pr57457.c: New test. + * c-c++-common/cilk-plus/AN/pr57457-2.c: Likewise. + +2013-06-05 Paolo Carlini + + PR c++/51908 + * g++.dg/cpp0x/decltype54.C: New. + +2013-06-05 James Greenhalgh + + * gcc.dg/fshort-wchar.c: Add extra dg-options for + arm*-*-*eabi* targets. + * gcc.dg/tree-ssa/pr42585.c: Change dg-final to catch + arm*-*-* targets. + * gcc.dg/tree-ssa/pr43491.c: Likewise. + +2013-06-05 Manfred Schwarb + Tobias Burnus + + * gfortran.dg/string_length_2.f90: Fix dg-do run. + * gfortran.dg/io_real_boz_3.f90: Remove extra space in "dg-do run". + * gfortran.dg/io_real_boz_4.f90: Ditto. + * gfortran.dg/io_real_boz_5.f90: Ditto. + +2013-06-05 Andreas Schwab + + * gcc.dg/tree-ssa/attr-alias.c: Remove duplicated contents. + +2013-06-04 Jan Hubicka + + * gcc.dg/tree-ssa/attr-alias.c: New testcase. + +2013-06-04 Balaji V. Iyer + + * c-c++-common/cilk-plus/AN/array_test1.c (main): Replaced argc, argv + parameters with void. + (main2): Removed argc parameter. + * c-c++-common/cilk-plus/AN/array_test2.c (main2): Likewise. + (main): Replaced argc, argv parameters with void. + * c-c++-common/cilk-plus/AN/array_test_ND.c (main): Likewise. + (main2): Removed argc parameter. + * c-c++-common/cilk-plus/AN/builtin_fn_custom.c (main): Replaced argc + argv parameters with void. Added __asm volatile to avoid optimization + on argc, if necessary. + * c-c++-common/cilk-plus/AN/builtin_fn_mutating (main): Likewise. + * c-c++-common/cilk-plus/AN/builtin_func_double.c (main): Likewise. + * c-c++-common/cilk-plus/AN/builtin_func_double2.c (main): Likewise. + * c-c++-common/cilk-plus/AN/conditional.c (main): Likewise. + * c-c++-common/cilk-plus/AN/exec-once.c (main): Likewise. + * c-c++-common/cilk-plus/AN/exec-once2.c (main): Likewise. + * c-c++-common/cilk-plus/AN/fn_ptr.c (main): Likewise. + * c-c++-common/cilk-plus/AN/gather-scatter-errors.c (main): Likewise. + * c-c++-common/cilk-plus/AN/gather_scatter.c (main): Likewise. + * c-c++-common/cilk-plus/AN/misc.c (main): Likewise. + * c-c++-common/cilk-plus/AN/parser_errors.c (main): Likewise. + * c-c++-common/cilk-plus/AN/parser_errors2.c (main): Likewise. + * c-c++-common/cilk-plus/AN/parser_errors3.c (main): Likewise. + * c-c++-common/cilk-plus/AN/parser_errors4.c (main): Likewise. + * c-c++-common/cilk-plus/AN/rank_mismatch2.c (main): Likewise. + * c-c++-common/cilk-plus/AN/sec_implicit_ex.c (main): Likewise. + * c-c++-common/cilk-plus/AN/sec_reduce_return.c (main): Likewise. + * c-c++-common/cilk-plus/AN/test_builtin_return.c (main): Likewise. + * c-c++-common/cilk-plus/AN/vla.c (main): Likewise. + * c-c++-common/cilk-plus/AN/comma-exp.c (main): Replaced argc, argv + parameters with void. + (main2): Removed argc parameter. + * c-c++-common/cilk-plus/AN/if_test.c (main2): Likewise. + (main): Replaced argc, argv parameters with void. + * c-c++-common/cilk-plus/AN/fp_triplet_values (main2): Replace argc, + argv parameters with void. Also renamed this function as main, and + delete the existing main. + * c-c++-common/cilk-plus/AN/sec_implicit.c (main2): Likewise. + * c-c++-common/cilk-plus/AN/sec_implicit2.c (main2): Likewise. + * c-c++-common/cilk-plus/AN/sec_reduce_max_min_ind.c (main2): Likewise. + +2013-06-04 Ian Bolton + + * gcc.target/aarch64/movi_1.c: New test. + +2013-06-04 Tobias Burnus + + PR fortran/37336 + * gfortran.dg/finalize_12.f90: New. + * gfortran.dg/alloc_comp_basics_1.f90: Add BLOCK for + end of scope finalization. + * gfortran.dg/alloc_comp_constructor_1.f90: Ditto. + * gfortran.dg/allocatable_scalar_9.f90: Ditto. + * gfortran.dg/auto_dealloc_2.f90: Ditto. + * gfortran.dg/class_19.f03: Ditto. + * gfortran.dg/coarray_lib_alloc_1.f90: Ditto. + * gfortran.dg/coarray_lib_alloc_2.f90: Ditto. + * gfortran.dg/extends_14.f03: Ditto. + * gfortran.dg/move_alloc_4.f90: Ditto. + * gfortran.dg/typebound_proc_27.f03: Ditto. + +2013-06-04 Manfred Schwarb + + * gfortran.dg/bounds_check_7.f90: Remove "! {". + * gfortran.dg/coarray_poly_3.f90: Remove inactive, broken dg-*. + * gfortran.dg/default_initialization_5.f90: Update dg-do. + * gfortran.dg/g77/f77-edit-s-out.f: Fix broken dg-output. + * gfortran.dg/g77/f77-edit-t-out.f: Fix broken dg-output. + * gfortran.dg/g77/f77-edit-x-out.f: Fix broken dg-output. + * gfortran.dg/init_flag_11.f90: Fix broken dg-options. + * gfortran.dg/io_real_boz_3.f90: Add comment regarding dg-do run. + * gfortran.dg/io_real_boz_4.f90: Ditto. + * gfortran.dg/io_real_boz_5.f90: Ditto. + * gfortran.dg/namelist_print_1.f: Fix broken dg-output. + * gfortran.dg/read_x_eor.f90: Fix broken dg-output. + * gfortran.dg/repeat_1.f90: Improve dg-output pattern. + * gfortran.dg/spread_bounds_1.f90: Fix broken dg-output. + * gfortran.dg/transpose_2.f90: Fix dg-output. + +2013-06-03 Balaji V. Iyer + + * c-c++-common/cilk-plus/AN/if_test_errors.c (main): New testcase. + * c-c++-common/cilk-plus/AN/rank_mismatch.c: Added a '-w' option to + dg-option and an header comment. + +2013-06-03 Paolo Carlini + + PR c++/57419 + * g++.dg/cpp0x/sfinae46.C: New. + * g++.dg/cpp0x/defaulted13.C: Adjust. + * g++.dg/cpp0x/defaulted2.C: Likewise. + * g++.dg/cpp0x/defaulted26.C: Likewise. + * g++.dg/cpp0x/defaulted3.C: Likewise. + * g++.dg/cpp0x/error1.C: Likewise. + * g++.dg/cpp0x/implicit1.C: Likewise. + * g++.dg/cpp0x/implicit11.C: Likewise. + * g++.dg/cpp0x/inh-ctor13.C: Likewise. + * g++.dg/cpp0x/initlist47.C: Likewise. + * g++.dg/cpp0x/initlist9.C: Likewise. + * g++.dg/cpp0x/lambda/lambda-errloc.C: Likewise. + * g++.dg/cpp0x/lambda/lambda-errloc2.C: Likewise. + * g++.dg/cpp0x/nsdmi-local.C: Likewise. + * g++.dg/cpp0x/union4.C: Likewise. + * g++.dg/template/crash108.C: Likewise. + * g++.dg/template/crash41.C: Likewise. + * g++.old-deja/g++.jason/local.C: Likewise. + * g++.old-deja/g++.law/visibility3.C: Likewise. + +2013-06-03 Teresa Johnson + + * gcc.dg/vect/bb-slp-31.c: Update vect dump message. + * gcc.dg/vect/bb-slp-14.c: Ditto. + * gcc.dg/vect/fast-math-bb-slp-call-1.c: Ditto. + * gcc.dg/vect/bb-slp-23.c: Ditto. + * gcc.dg/vect/bb-slp-15.c: Ditto. + * gcc.dg/vect/fast-math-bb-slp-call-2.c: Ditto. + * gcc.dg/vect/bb-slp-24.c: Ditto. + * gcc.dg/vect/bb-slp-16.c: Ditto. + * gcc.dg/vect/bb-slp-25.c: Ditto. + * gcc.dg/vect/bb-slp-pattern-2.c: Ditto. + * gcc.dg/vect/bb-slp-17.c: Ditto. + * gcc.dg/vect/bb-slp-1.c: Ditto. + * gcc.dg/vect/bb-slp-26.c: Ditto. + * gcc.dg/vect/bb-slp-18.c: Ditto. + * gcc.dg/vect/bb-slp-2.c: Ditto. + * gcc.dg/vect/no-tree-reassoc-bb-slp-12.c: Ditto. + * gcc.dg/vect/bb-slp-27.c: Ditto. + * gcc.dg/vect/bb-slp-19.c: Ditto. + * gcc.dg/vect/bb-slp-3.c: Ditto. + * gcc.dg/vect/bb-slp-28.c: Ditto. + * gcc.dg/vect/bb-slp-4.c: Ditto. + * gcc.dg/vect/bb-slp-29.c: Ditto. + * gcc.dg/vect/bb-slp-5.c: Ditto. + * gcc.dg/vect/bb-slp-6.c: Ditto. + * gcc.dg/vect/bb-slp-8a.c: Ditto. + * gcc.dg/vect/bb-slp-7.c: Ditto. + * gcc.dg/vect/bb-slp-8b.c: Ditto. + * gcc.dg/vect/bb-slp-8.c: Ditto. + * gcc.dg/vect/bb-slp-9.c: Ditto. + * gcc.dg/vect/bb-slp-10.c: Ditto. + * gcc.dg/vect/bb-slp-11.c: Ditto. + * gcc.dg/vect/bb-slp-20.c: Ditto. + * gcc.dg/vect/bb-slp-cond-1.c: Ditto. + * gcc.dg/vect/bb-slp-21.c: Ditto. + * gcc.dg/vect/bb-slp-30.c: Ditto. + * gcc.dg/vect/bb-slp-13.c: Ditto. + * gcc.dg/vect/bb-slp-22.c: Ditto. + * g++.dg/vect/slp-pr50413.cc: Ditto. + * g++.dg/vect/slp-pr56812.cc: Ditto. + * g++.dg/vect/slp-pr50819.cc: Ditto. + +2013-06-01 Tobias Burnus + + PR fortran/57456 + * gfortran.dg/class_array_17.f90: New. + +2013-05-31 Eric Botcazou + + * ada/acats/floatstore.lst: New. + * ada/acats/run_all.sh: Process it. + +2013-05-31 Eric Botcazou + + * gcc.target/powerpc/e500-ord-1.c: New test. + * gcc.target/powerpc/e500-ord-2.c: Likewise. + * gcc.target/powerpc/e500-unord-1.c: Likewise. + * gcc.target/powerpc/e500-unord-2.c: Likewise. + +2013-05-31 Marcus Shawcroft + + * g++.dg/torture/pr54684.C: Add -fno-short-enums. + +2013-05-31 Marcus Shawcroft + + * gcc.target/arm/pr56184.C: Add -fno-short-enums. + +2013-05-31 Marcus Shawcroft + + * g++.old-deja/g++.robertl/eb76.C: Add -fno-short-enums. + +2013-05-31 Balaji V. Iyer + + PR c/57452 + * c-c++-common/cilk-plus/AN/if_test.c: Fixed out of bounds issue in + test-case. + +2013-05-31 Rainer Orth + + * gcc.dg/shrink-wrap-alloca.c: Use __builtin_alloca. + +2013-05-31 Marek Polacek + + PR tree-optimization/57478 + PR tree-optimization/57453 + * gcc.dg/torture/pr57478.c: New test. + +2013-05-31 Tobias Burnus + + PR fortran/57456 + * gfortran.dg/class_array_17.f90: New. + +2013-05-31 Kyrylo Tkachov + + PR target/56315 + * gcc.target/arm/iordi3-opt.c: New test. + +2013-05-31 Janus Weil + + PR fortran/54190 + PR fortran/57217 + * gfortran.dg/dummy_procedure_5.f90: Modified error message. + * gfortran.dg/interface_26.f90: Ditto. + * gfortran.dg/proc_ptr_11.f90: Ditto. + * gfortran.dg/proc_ptr_15.f90: Ditto. + * gfortran.dg/proc_ptr_comp_20.f90: Ditto. + * gfortran.dg/proc_ptr_comp_33.f90: Ditto. + * gfortran.dg/proc_ptr_result_5.f90: Ditto. + * gfortran.dg/typebound_override_1.f90: Ditto. + * gfortran.dg/typebound_override_4.f90: Ditto. + * gfortran.dg/typebound_proc_6.f03: Ditto. + * gfortran.dg/assumed_type_7.f90: New test. + * gfortran.dg/typebound_override_5.f90: New test. + * gfortran.dg/typebound_override_6.f90: New test. + * gfortran.dg/typebound_override_7.f90: New test. + +2013-05-30 Tobias Burnus + + PR middle-end/57073 + * gfortran.dg/power_6.f90: New. + +2013-05-30 Ian Bolton + + * gcc.target/aarch64/insv_1.c: New test. + +2013-05-30 Yufeng Zhang + + * g++.dg/cpp0x/alias-decl-debug-0.C: Add aarch64*-*-* to the + dg-skip-if "No stabs". + +2013-05-30 Janus Weil + + PR fortran/54189 + * gfortran.dg/assumed_size_1.f90: New. + +2013-05-30 Zhenqiang Chen + + * gcc.dg/shrink-wrap-alloca.c: New added. + * gcc.dg/shrink-wrap-pretend.c: New added. + * gcc.dg/shrink-wrap-sibcall.c: New added. + +2013-05-30 Tobias Burnus + + PR fortran/57458 + * gfortran.dg/assumed_rank_13.f90: New. + +2013-05-29 Easwaran Raman + + PR tree-optimization/57442 + * gcc.dg/tree-ssa/reassoc-30.c: New testcase. + +2013-05-29 Bill Schmidt + + PR tree-optimization/57441 + * gcc.c-torture/compile/pr57441.c: New. + +2013-05-29 Dehao Chen + + PR testsuite/57413 + * gcc.dg/debug/dwarf2/discriminator.c: Restrict the test to linux-gnu. + +2013-05-29 Tobias Burnus + + PR fortran/37336 + * gfortran.dg/auto_dealloc_2.f90: Update _free count in the dump. + * gfortran.dg/class_19.f03: Ditto. + +2013-05-29 Richard Biener + + * gcc.dg/vect/bb-slp-32.c: New testcase. + +2013-05-28 Balaji V. Iyer + + * c-c++-common/cilk-plus/AN/array_test1.c: New test. + * c-c++-common/cilk-plus/AN/array_test2.c: Likewise. + * c-c++-common/cilk-plus/AN/array_test_ND.c: Likewise. + * c-c++-common/cilk-plus/AN/builtin_func_double.c: Likewise. + * c-c++-common/cilk-plus/AN/builtin_func_double2.c: Likewise. + * c-c++-common/cilk-plus/AN/gather-scatter-errors.c: Likewise. + * c-c++-common/cilk-plus/AN/if_test.c: Likewise. + * c-c++-common/cilk-plus/AN/sec_implicit_ex.c: Likewise. + * c-c++-common/cilk-plus/AN/decl-ptr-colon.c: Likewise. + * c-c++-common/cilk-plus/AN/dimensionless-arrays.c: Likewise. + * c-c++-common/cilk-plus/AN/fn_ptr.c: Likewise. + * c-c++-common/cilk-plus/AN/fp_triplet_values.c: Likewise. + * c-c++-common/cilk-plus/AN/gather-scatter.c: Likewise. + * c-c++-common/cilk-plus/AN/misc.c: Likewise. + * c-c++-common/cilk-plus/AN/parser_errors.c: Likewise. + * c-c++-common/cilk-plus/AN/parser_errors2.c: Likewise. + * c-c++-common/cilk-plus/AN/parser_errors3.c: Likewise. + * c-c++-common/cilk-plus/AN/parser_errors4.c: Likewise. + * c-c++-common/cilk-plus/AN/rank_mismatch.c: Likewise. + * c-c++-common/cilk-plus/AN/rank_mismatch2.c: Likewise. + * c-c++-common/cilk-plus/AN/rank_mismatch3.c: Likewise. + * c-c++-common/cilk-plus/AN/sec_implicit.c: Likewise. + * c-c++-common/cilk-plus/AN/sec_implicit2.c: Likewise. + * c-c++-common/cilk-plus/AN/sec_reduce_max_min_ind.c: Likewise. + * c-c++-common/cilk-plus/AN/tst_lngth.c: Likewise. + * c-c++-common/cilk-plus/AN/vla.c: Likewise. + * c-c++-common/cilk-plus/AN/an-if.c: Likewise. + * c-c++-common/cilk-plus/AN/builtin_fn_custom.c: Likewise. + * c-c++-common/cilk-plus/AN/builtin_fn_mutating.c: Likewise. + * c-c++-common/cilk-plus/AN/comma_exp.c: Likewise. + * c-c++-common/cilk-plus/AN/conditional.c: Likewise. + * c-c++-common/cilk-plus/AN/exec-once.c: Likewise. + * c-c++-common/cilk-plus/AN/exec-once2.c: Likewise. + * c-c++-common/cilk-plus/AN/gather_scatter.c: Likewise. + * c-c++-common/cilk-plus/AN/n-ptr-test.c: Likewise. + * c-c++-common/cilk-plus/AN/side-effects-1.c: Likewise. + * c-c++-common/cilk-plus/AN/test_builtin_return.c: Likewise. + * c-c++-common/cilk-plus/AN/test_sec_limits.c: Likewise. + * gcc.dg/cilk-plus/cilk-plus.exp: New script. + +2013-05-29 Tobias Burnus + + PR fortran/37336 + * gfortran.dg/finalize_11.f90: New. + * gfortran.dg/finalize_4.f03: Remove dg-error. + * gfortran.dg/finalize_5.f03: Ditto. + * gfortran.dg/finalize_6.f03: Ditto. + * gfortran.dg/finalize_7.f03: Ditto. + +2013-05-28 Tobias Burnus + + * gfortran.dg/class_array_16.f90: New. + +2013-05-28 Tobias Burnus + + PR fortran/57435 + * gfortran.dg/use_29.f90: New. + +2013-05-28 Eric Botcazou + + * gnat.dg/fp_exception.adb: New test. + +2013-05-28 Richard Biener + + PR tree-optimization/56787 + * gcc.dg/vect/pr56787.c: New testcase. + +2013-05-28 Janus Weil + Tobias Burnus + + PR fortran/57217 + * gfortran.dg/typebound_override_4.f90: New. + +2013-05-28 Richard Biener + + PR tree-optimization/57411 + * g++.dg/opt/pr57411.C: New testcase. + +2013-05-28 Eric Botcazou + + * gcc.dg/builtin-bswap-8.c: Compile at -O2. + * gcc.dg/builtin-bswap-9.c: Likewise. + +2013-05-28 Eric Botcazou + + * gcc.target/sparc/bmaskbshuf.c: Remove superfluous options. + +2013-05-27 Richard Biener + + PR middle-end/57412 + * gcc.dg/gomp/pr57412.c: New testcase. + +2013-05-27 Bud Davis + + PR fortran/50405 + * gfortran.dg/stfunc_8.f90: New. + +2013-05-27 Richard Biener + + PR tree-optimization/57343 + * gcc.dg/torture/pr57343.c: New testcase. + +2013-05-27 Richard Biener + + PR tree-optimization/57417 + * gcc.dg/torture/pr57417.c: New testcase. + +2013-05-27 Richard Biener + + PR tree-optimization/57396 + * gfortran.fortran-torture/execute/pr57396.f90: New testcase. + +2013-05-26 Eric Botcazou + + * gnat.dg/specs/last_bit.ads: New test. + +2013-05-26 Eric Botcazou + + * gnat.dg/specs/machine_attribute.ads: New test. + +2013-05-26 Eric Botcazou + + * gnat.dg/incomplete3.ad[sb]: New test. + +2013-05-25 Richard Sandiford + + PR target/53916 + * gcc.target/mips/div-13.c: New test. + +2013-05-25 Richard Sandiford + + PR target/55777 + * gcc.target/mips/mips16-attributes-5.c, + * gcc.target/mips/mips16-attributes-6.c: New tests. + +2013-05-25 Eric Botcazou + + * gcc.dg/builtin-bswap-6.c: Use same options as optimize-bswapsi-1.c. + * gcc.dg/builtin-bswap-8.c: Likewise. + +2013-05-25 Paolo Carlini + + PR c++/52216 + * g++.dg/cpp0x/new1.C: New. + +2013-05-25 Paolo Carlini + + PR c++/25666 + * g++.dg/parse/dtor16.C: New. + * g++.dg/parse/dtor6.C: Adjust. + +2013-05-24 Paolo Carlini + + PR c++/19618 + * g++.dg/expr/bitfield12.C: New. + +2013-05-24 Jeff Law + + PR tree-optimization/57124 + * gcc.c-torture/execute/pr57124.c: New test. + * gcc.c-torture/execute/pr57124.x: Set -fno-strict-overflow. + +2013-05-24 Martin Jambor + + PR tree-optimization/57294 + * gcc.dg/ipa/pr57294.c: New test. + +2013-05-24 Dehao Chen + + * gcc.dg/debug/dwarf2/discriminator.c: New Testcase. + +2013-05-24 Ian Bolton + + * gcc.target/aarch64/scalar_intrinsics.c + (force_simd): Use a valid instruction. + (test_vdupd_lane_s64): Pass a valid lane argument. + (test_vdupd_lane_u64): Likewise. + +2013-05-24 Richard Biener + + PR tree-optimization/57287 + * gcc.dg/pr57287.c: New testcase. + +2013-05-24 Paolo Carlini + + PR c++/26572 + * g++.dg/template/error51.C: New. + +2013-05-24 Paolo Carlini + + PR c++/25503 + * g++.dg/template/bitfield2.C: New. + +2013-05-24 Eric Botcazou + + * gnat.dg/specs/noinline1.ads: New test. + * gnat.dg/noinline2.ad[sb]: Likewise. + * gnat.dg/specs/noinline3.ads: Likewise. + * gnat.dg/specs/noinline3_pkg.ad[sb]: New helper. + +2013-05-24 Alexander Ivchenko + + PR tree-ssa/57385 + * gcc.dg/tree-ssa/pr57385.c: New test. + +2013-05-24 Eric Botcazou + + * gnat.dg/derived_type4.adb: New test. + +2013-05-24 Eric Botcazou + + * gcc.dg/builtin-bswap-6.c: New test. + * gcc.dg/builtin-bswap-7.c: Likewise. + * gcc.dg/builtin-bswap-8.c: Likewise. + * gcc.dg/builtin-bswap-9.c: Likewise. + +2013-05-23 Christian Bruel + + PR debug/57351 + * gcc.dg/debug/pr57351.c: New test + +2013-05-23 Vidya Praveen + + * gcc.target/aarch64/vect-clz.c: New file. + +2013-05-23 Martin Jambor + + PR middle-end/57347 + * gcc.dg/ipa/pr57347.c: New test. + +2013-05-23 Richard Biener + + PR tree-optimization/57380 + * g++.dg/tree-ssa/pr57380.C: New testcase. + +2013-05-23 Richard Biener + + PR middle-end/57381 + * gcc.dg/torture/pr57381.c: New testcase. + +2013-05-23 Jakub Jelinek + + PR middle-end/57344 + * gcc.c-torture/execute/pr57344-1.c: New test. + * gcc.c-torture/execute/pr57344-2.c: New test. + * gcc.c-torture/execute/pr57344-3.c: New test. + * gcc.c-torture/execute/pr57344-4.c: New test. + +2013-05-23 Richard Biener + + PR rtl-optimization/57341 + * gcc.dg/torture/pr57341.c: New testcase. + +2013-05-22 Paolo Carlini + + PR c++/57352 + * g++.dg/parse/crash62.C: New. + +2013-05-22 Michael Meissner + Pat Haugen + Peter Bergner + + * gcc.target/powerpc/crypto-builtin-1.c: New file, test for power8 + crypto builtins. + +2013-05-22 Tobias Burnus + + PR fortran/57364 + * gfortran.dg/defined_assignment_6.f90: New. + +2013-05-22 Tobias Burnus + + PR fortran/57338 + * gfortran.dg/assumed_type_6.f90: New. + +2013-05-22 Paolo Carlini + + PR c++/57211 + * g++.dg/cpp0x/Wunused-parm.C: New. + +2013-05-21 Paolo Carlini + + * g++.dg/cpp0x/explicit3.C: Add column in dg-error strings. + * g++.dg/warn/Wdouble-promotion.C: Likewise. + +2013-05-21 Easwaran Raman + + PR tree-optimization/57322 + * gcc.dg/tree-ssa/reassoc-29.c: New testcase. + +2013-05-21 Graham Stott + + * lib/scanasm.exp (dg-function-on-line): Make MIPS targets match + .set (no)?micromips + +2013-05-21 Tobias Burnus + + PR fortran/57035 + * gfortran.dg/assumed_type_5.f90: New. + * gfortran.dg/assumed_rank_1.f90: Comment invalid statement. + * gfortran.dg/assumed_rank_2.f90: Ditto. + * gfortran.dg/assumed_type_3.f90: Update dg-error. + * gfortran.dg/no_arg_check_3.f90: Ditto. + +2013-05-21 Jakub Jelinek + + PR tree-optimization/57331 + * gcc.c-torture/compile/pr57331.c: New test. + +2013-05-21 Richard Biener + + PR tree-optimization/57330 + * gcc.dg/torture/pr57330.c: New testcase. + +2013-05-21 Richard Biener + + PR tree-optimization/57303 + * gcc.dg/torture/pr57303.c: New testcase. + +2013-05-21 Jakub Jelinek + + PR tree-optimization/57321 + * gcc.c-torture/execute/pr57321.c: New test. + +2013-05-20 Tobias Burnus + + PR fortran/48858 + PR fortran/55465 + * gfortran.dg/binding_label_tests_10_main.f03: Update dg-error. + * gfortran.dg/binding_label_tests_11_main.f03: Ditto. + * gfortran.dg/binding_label_tests_13_main.f03: Ditto. + * gfortran.dg/binding_label_tests_3.f03: Ditto. + * gfortran.dg/binding_label_tests_4.f03: Ditto. + * gfortran.dg/binding_label_tests_5.f03: Ditto. + * gfortran.dg/binding_label_tests_6.f03: Ditto. + * gfortran.dg/binding_label_tests_7.f03: Ditto. + * gfortran.dg/binding_label_tests_8.f03: Ditto. + * gfortran.dg/c_loc_tests_12.f03: Fix test case. + * gfortran.dg/binding_label_tests_24.f90: New. + * gfortran.dg/binding_label_tests_25.f90: New. + +2013-05-20 Tobias Burnus + + PR fortran/48858 + * gfortran.dg/binding_label_tests_17.f90: New. + * gfortran.dg/binding_label_tests_18.f90: New. + * gfortran.dg/binding_label_tests_19.f90: New. + * gfortran.dg/binding_label_tests_20.f90: New. + * gfortran.dg/binding_label_tests_21.f90: New. + * gfortran.dg/binding_label_tests_22.f90: New. + * gfortran.dg/binding_label_tests_23.f90: New. + +2013-05-20 Tobias Burnus + + PR fortran/48858 + * gfortran.dg/test_common_binding_labels.f03: Update dg-error. + * gfortran.dg/test_common_binding_labels_2_main.f03: Ditto. + * gfortran.dg/test_common_binding_labels_3_main.f03: Ditto. + * gfortran.dg/common_18.f90: New. + * gfortran.dg/common_19.f90: New. + * gfortran.dg/common_20.f90: New. + * gfortran.dg/common_21.f90: New. + +2013-05-20 Paolo Carlini + + PR c++/12288 + * g++.dg/parse/error52.C: New. + * g++.dg/parse/error3.C: Adjust. + * g++.dg/parse/error36.C: Likewise. + +2013-05-20 Oleg Endo + + PR target/56547 + * gcc.target/sh/pr56547-1.c: New. + * gcc.target/sh/pr56547-2.c: New. + +2013-05-20 Paolo Carlini + + PR c++/23608 + * g++.dg/warn/Wsign-compare-6.C: New. + * g++.dg/warn/Wdouble-promotion.C: Adjust. + +2013-05-20 Paolo Carlini + + PR c++/57327 + * g++.dg/template/error50.C: New. + +2013-05-20 Paolo Carlini + + PR c++/10207 + * g++.dg/ext/complit13.C: New. + +2013-05-20 Marc Glisse + + PR c++/57175 + * g++.dg/pr57175.C: New testcase. + +2013-05-17 Easwaran Raman + + * gcc.dg/tree-ssa/reassoc-28.c: New testcase. + +2013-05-17 Marc Glisse + + PR testsuite/57313 + * gcc.dg/binop-xor3.c: Restrict to platforms known to work (x86). + +2013-05-17 Jakub Jelinek + + PR rtl-optimization/57281 + PR rtl-optimization/57300 + * gcc.dg/pr57300.c: New test. + * gcc.c-torture/execute/pr57281.c: New test. + +2013-05-17 Paolo Carlini + + PR c++/18126 + * g++.dg/ext/sizeof-complit.C: New. + +2013-05-17 Marek Polacek + + * gcc.dg/strlenopt-25.c: New test. + * gcc.dg/strlenopt-26.c: Likewise. + +2013-05-17 Jakub Jelinek + + * gcc.target/i386/rotate-4.c: Compile only with -mavx + instead of -mavx2, require only avx instead of avx2. + * gcc.target/i386/rotate-4a.c: Include avx-check.h instead + of avx2-check.h and turn into an avx runtime test instead of + avx2 runtime test. + +2013-05-16 Marc Glisse + + * g++.dg/ext/vector22.C: Uncomment working test. + +2013-05-16 Paolo Carlini + + PR c++/17410 + * g++.dg/template/pr17410.C: New. + +2013-05-16 Jakub Jelinek + + * gcc.target/i386/rotate-3.c: New test. + * gcc.target/i386/rotate-3a.c: New test. + * gcc.target/i386/rotate-4.c: New test. + * gcc.target/i386/rotate-4a.c: New test. + * gcc.target/i386/rotate-5.c: New test. + * gcc.target/i386/rotate-5a.c: New test. + +2013-05-16 Rainer Orth + + * gcc.dg/visibility-21.c: Require section_anchors. + +2013-05-16 Greta Yorsh + + * gcc.target/arm/unaligned-memcpy-2.c: Adjust expected output. + * gcc.target/arm/unaligned-memcpy-3.c: Likewise. + * gcc.target/arm/unaligned-memcpy-4.c: Likewise. + +2013-05-16 Nathan Sidwell + + * gcc.dg/visibility-21.c: New. + +2013-05-16 Marc Glisse + + PR middle-end/57286 + * gcc.dg/pr57286.c: New testcase. + * gcc.dg/vector-shift-2.c: Don't assume int has size 4. + * g++.dg/ext/vector22.C: Comment out transformations not + performed anymore. + +2013-05-15 Richard Sandiford + + PR target/57260 + * gcc.target/mips/call-1.c: Restrict to o32. + * gcc.target/mips/call-5.c, gcc.target/mips/call-6.c: New test. + +2013-05-15 Paolo Carlini + + * g++.dg/cpp0x/lambda/lambda-shadow1.C: Replace dg-warnings with + dg-messages. + * g++.dg/warn/Wshadow-1.C: Likewise. + * g++.dg/warn/Wshadow-6.C: Likewise. + * g++.dg/warn/Wshadow-7.C: Likewise. + +2013-05-15 Paolo Carlini + + PR c++/31952 + * g++.dg/parse/pr31952-1.C: New. + * g++.dg/parse/pr31952-2.C: Likewise. + * g++.dg/parse/pr31952-3.C: Likewise. + + * g++.dg/parse/pr18770.C: Adjust dg-errors to dg-messages. + * g++.old-deja/g++.jason/cond.C: Likewise. + * g++.dg/cpp0x/range-for5.C: Likewise. + +2013-05-15 Ramana Radhakrishnan + + PR target/19599 + * gcc.target/arm/pr40887.c: Adjust testcase. + * gcc.target/arm/pr19599.c: New test. + +2013-05-15 Richard Biener + + PR tree-optimization/57275 + * gcc.target/i386/pr57275.c: New testcase. + +2013-05-15 Jan Hubicka + + * gcc.dg/lto/attr-weakref-1_0.c: New testcase. + * gcc.dg/lto/attr-weakref-1_1.c: New testcase. + * gcc.dg/lto/attr-weakref-1_2.c: New testcase. + +2013-05-14 Senthil Kumar Selvaraj + + * gcc.dg/torture/alias-1.c: Add dg-require-effective-target + scheduling. + +2013-05-14 Jakub Jelinek + + PR c++/57274 + * c-c++-common/Wsequence-point-1.c: New test. + +2013-05-14 Marc Glisse + + * g++.dg/ext/vector22.C: New testcase. + * gcc.dg/binop-xor3.c: Remove xfail. + +2013-05-14 James Greenhalgh + + * gcc.target/aarch64/vect-fcm.x: Add cases testing + FLOAT cmp FLOAT ? INT : INT. + * gcc.target/aarch64/vect-fcm-eq-d.c: Define IMODE. + * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise. + * gcc.target/aarch64/vect-fcm-ge-d.c: Likewise. + * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise. + * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise. + * gcc.target/aarch64/vect-fcm-gt-f.c: Likewise. + +2013-05-14 Paolo Carlini + + PR c++/53903 + * g++.dg/cpp0x/defaulted43.C: New. + +2013-05-14 Rainer Orth + + * gcc.dg/fstack-protector-strong.c: Don't include . + (alloca): Remove declaration. + (foo9): Replace alloca by __builtin_alloca. + +2013-05-14 Joern Rennecke + + * gcc.c-torture/compile/limits-externdecl.c [target avr-*-*]: + Expect "size of array is too large" error. + +2013-05-14 Rainer Orth + + * gcc.dg/fstack-protector-strong.c (alloca): Declare. + +2013-05-14 Richard Biener + + PR middle-end/57235 + * g++.dg/torture/pr57235.C: New testcase. + +2013-05-14 Jakub Jelinek + + PR middle-end/57251 + * gcc.dg/torture/pr57251.c: New test. + +2013-05-13 Uros Bizjak + + PR target/57264 + * gcc.target/i386/pr57264.c: New test. + +2013-05-13 Jakub Jelinek + + * gcc.dg/vector-shift-2.c: Add -O to dg-options. + +2013-05-13 Greta Yorsh + + * gcc.dg/tree-ssa/forwprop-26.c: Add -fno-short-enums to dg-options. + +2013-05-13 Jakub Jelinek + + PR tree-optimization/45216 + PR tree-optimization/57157 + * c-c++-common/rotate-1.c: Add 32 tests with +. + * c-c++-common/rotate-1a.c: Adjust. + * c-c++-common/rotate-2.c: Add 32 tests with +, expect only 48 rotates. + * c-c++-common/rotate-2b.c: New test. + * c-c++-common/rotate-3.c: Add 32 tests with +. + * c-c++-common/rotate-4.c: Add 32 tests with +, expect only 48 rotates. + * c-c++-common/rotate-4b.c: New test. + * c-c++-common/rotate-5.c: New test. + +2013-05-13 Martin Jambor + + PR middle-end/42371 + * gcc.dg/ipa/remref-0.c: New test. + * gcc.dg/ipa/remref-1a.c: Likewise. + * gcc.dg/ipa/remref-1b.c: Likewise. + * gcc.dg/ipa/remref-2a.c: Likewise. + * gcc.dg/ipa/remref-2b.c: Likewise. + +2013-05-13 Marc Glisse + + * gcc.dg/vector-shift-2.c: New testcase. + +2013-05-13 Jakub Jelinek + + PR tree-optimization/57230 + * gcc.dg/strlenopt-24.c: New test. + + PR tree-optimization/57230 + * gcc.dg/strlenopt-23.c: New test. + +2013-05-12 Oleg Endo + + PR target/57108 + * gcc.target/sh/pr57108.c: Move this test case to ... + * gcc.c-torture/compile/pr57108.c: ... here. + +2013-05-10 Richard Biener + + PR tree-optimization/57214 + * gcc.dg/torture/pr57214.c: New testcase. + +2013-05-10 Marc Glisse + + * gcc.dg/vector-shift.c: New testcase. + +2013-05-10 Jakub Jelinek + + * gcc.target/i386/rotate-1.c: Accept rolb or rorb instruction. + + PR tree-optimization/45216 + PR tree-optimization/57157 + * c-c++-common/rotate-1.c: New test. + * c-c++-common/rotate-1a.c: New test. + * c-c++-common/rotate-2.c: New test. + * c-c++-common/rotate-2a.c: New test. + * c-c++-common/rotate-3.c: New test. + * c-c++-common/rotate-3a.c: New test. + * c-c++-common/rotate-4.c: New test. + * c-c++-common/rotate-4a.c: New test. + +2013-05-10 Richard Biener + + * gcc.target/i386/avx256-unaligned-load-2.c: Make well-defined. + * gcc.target/i386/l_fma_double_1.c: Adjust. + * gcc.target/i386/l_fma_double_2.c: Likewise. + * gcc.target/i386/l_fma_double_3.c: Likewise. + * gcc.target/i386/l_fma_double_4.c: Likewise. + * gcc.target/i386/l_fma_double_5.c: Likewise. + * gcc.target/i386/l_fma_double_6.c: Likewise. + * gcc.target/i386/l_fma_float_1.c: Likewise. + * gcc.target/i386/l_fma_float_2.c: Likewise. + * gcc.target/i386/l_fma_float_3.c: Likewise. + * gcc.target/i386/l_fma_float_4.c: Likewise. + * gcc.target/i386/l_fma_float_5.c: Likewise. + * gcc.target/i386/l_fma_float_6.c: Likewise. + +2013-05-08 Paolo Carlini + + PR c++/51226 + * g++.dg/cpp0x/pr51226.C: New. + +2013-04-16 Han Shen + + Test cases for '-fstack-protector-strong'. + * gcc.dg/fstack-protector-strong.c: New. + * g++.dg/fstack-protector-strong.C: New. + +2013-05-07 Ian Bolton + + * gcc.target/aarch64/ands_1.c: New test. + * gcc.target/aarch64/ands_2.c: Likewise + +2013-05-07 Christophe Lyon + + * lib/target-supports.exp (check_effective_target_hw): New + function. + * c-c++-common/asan/clone-test-1.c: Call + check_effective_target_hw. + * c-c++-common/asan/rlimit-mmap-test-1.c: Likewise. + * c-c++-common/asan/heap-overflow-1.c: Update regexps to accept + possible decorations. + * c-c++-common/asan/null-deref-1.c: Likewise. + * c-c++-common/asan/stack-overflow-1.c: Likewise. + * c-c++-common/asan/strncpy-overflow-1.c: Likewise. + * c-c++-common/asan/use-after-free-1.c: Likewise. + * g++.dg/asan/deep-thread-stack-1.C: Likewise. + * g++.dg/asan/large-func-test-1.C: Likewise. + +2013-05-07 Sofiane Naci + + * gcc.target/aarch64/scalar_intrinsics.c: Update. + +2013-05-07 Richard Biener + + PR middle-end/57190 + * g++.dg/torture/pr57190.C: New testcase. + +2013-05-07 Jakub Jelinek + + PR tree-optimization/57149 + * gcc.dg/pr57149.c: New test. + + PR debug/57184 + * gcc.dg/pr57184.c: New test. + +2013-05-07 Eric Botcazou + + * gnat.dg/specs/array3.ads: New test. + +2013-05-06 Marc Glisse + + * c-c++-common/vector-scalar-2.c: New testcase. + +2013-05-06 Maxim Kuznetsov + + * gcc.target/i386/asm-dialect-2.c: New testcase. + +2013-05-06 Paolo Carlini + + PR c++/57183 + * g++.dg/cpp0x/auto38.C: New. + +2013-05-06 Richard Biener + + PR tree-optimization/57185 + * gcc.dg/autopar/pr57185.c: New testcase. + +2013-05-06 Uros Bizjak + + PR target/57106 + * gcc.target/i386/pr57106.c: New test. + +2013-05-06 Bill Schmidt + + * gcc.dg/tree-ssa/slsr-32.c: Re-enable. + * gcc.dg/tree-ssa/slsr-33.c: Likewise. + * gcc.dg/tree-ssa/slsr-34.c: Likewise. + * gcc.dg/tree-ssa/slsr-35.c: Likewise. + * gcc.dg/tree-ssa/slsr-36.c: Likewise. + * gcc.dg/tree-ssa/slsr-37.c: Likewise. + * gcc.dg/tree-ssa/slsr-38.c: Likewise. + +2013-05-06 Teresa Johnson + + PR bootstrap/57154 + * gcc.dg/pr57154.c: New test. + +2013-05-06 Richard Biener + + PR middle-end/57147 + * gcc.dg/torture/pr57147-1.c: New testcase. + * gcc.dg/torture/pr57147-2.c: Likewise. + * gcc.dg/torture/pr57147-3.c: Likewise. + +2013-05-06 Oleg Endo + + PR target/55303 + * gcc.target/sh/pr55303-1.c: New. + * gcc.target/sh/pr55303-2.c: New. + * gcc.target/sh/pr55303-3.c: New. + +2013-05-05 Tobias Burnus + + * gfortran.dg/allocate_with_source_3.f90: New. + +2013-05-05 Tobias Burnus + + PR fortran/57141 + * gfortran.dg/null_8.f90: New. + +2013-05-04 Paolo Carlini + + PR c++/53745 + * g++.dg/cpp0x/enum27.C: New. + * g++.dg/cpp0x/enum_base.C: Adjust. + +2013-05-04 Jakub Jelinek + + PR tree-optimization/56205 + * gcc.dg/tree-ssa/stdarg-6.c: Add cleanup-tree-dump "stdarg". + +2013-05-04 Tobias Burnus + + * gfortran.dg/bind_c_array_params.f03: Update dg-error. + * gfortran.dg/bind_c_usage_27.f90: New. + * gfortran.dg/bind_c_usage_28.f90: New. + +2013-05-04 Paolo Carlini + + PR c++/51927 + * g++.dg/cpp0x/lambda/lambda-nsdmi4.C: New. + +2013-05-03 Michael Meissner + + PR target/57150 + * gcc.target/powerpc/pr57150.c: New file. + +2013-05-03 Bill Schmidt + + * gcc.dg/tree-ssa/slsr-32.c: Skip test for now. + * gcc.dg/tree-ssa/slsr-33.c: Likewise. + * gcc.dg/tree-ssa/slsr-34.c: Likewise. + * gcc.dg/tree-ssa/slsr-35.c: Likewise. + * gcc.dg/tree-ssa/slsr-36.c: Likewise. + * gcc.dg/tree-ssa/slsr-37.c: Likewise. + * gcc.dg/tree-ssa/slsr-38.c: Likewise. + +2013-05-03 Dominique d'Humieres + + * gcc.target/i386/sse2-init-v2di-2.c: Remove "\\" from + scan-assembler-times. + +2013-05-03 Bill Schmidt + + * gcc.dg/tree-ssa/slsr-32.c: New. + * gcc.dg/tree-ssa/slsr-33.c: New. + * gcc.dg/tree-ssa/slsr-34.c: New. + * gcc.dg/tree-ssa/slsr-35.c: New. + * gcc.dg/tree-ssa/slsr-36.c: New. + * gcc.dg/tree-ssa/slsr-37.c: New. + * gcc.dg/tree-ssa/slsr-38.c: New. + +2013-05-03 Ian Bolton + + * gcc.target/aarch64/tst_1.c: New test. + * gcc.target/aarch64/tst_2.c: Likewise + +2013-05-02 Jeff Law + + PR tree-optimization/57144 + * gcc.c-torture/execute/pr57144.c: New test. + +2013-05-03 Jakub Jelinek + + PR rtl-optimization/57130 + * gcc.c-torture/execute/pr57130.c: New test. + +2013-05-03 Uros Bizjak + + * gcc.target/i386/sse2-init-v2di-2.c: Update scan assembler string. + +2013-05-03 Vidya Praveen + + * gcc.target/aarch64/fabd.c: New file. + +2013-05-03 Paolo Carlini + + PR c++/54318 + * g++.dg/cpp0x/pr54318.C: New. + +2013-05-03 Paolo Carlini + + PR c++/14283 + * g++.dg/parse/error51.C: New. + * g++.dg/parse/error15.C: Adjust column numbers. + +2013-05-02 Tobias Burnus + + PR fortran/57142 + * gfortran.dg/size_kind_2.f90: New. + * gfortran.dg/size_kind_3.f90: New. + +2013-05-02 Richard Biener + + PR middle-end/57140 + * g++.dg/torture/pr57140.C: New testcase. + +2013-05-02 Greta Yorsh + + PR target/56732 + * gcc.target/arm/pr56732-1.c: New test. + +2013-05-02 Martin Jambor + + PR middle-end/56988 + * gcc.dg/ipa/pr56988.c: New test. + +2013-05-02 Ian Bolton + + * gcc.target/aarch64/bics_1.c: New test. + * gcc.target/aarch64/bics_2.c: Likewise. + +2013-05-02 Jakub Jelinek + + PR rtl-optimization/57131 + * gcc.c-torture/execute/pr57131.c: New test. + +2013-05-01 Paolo Carlini + + PR c++/57132 + * g++.dg/warn/Wdiv-by-zero-bogus-2.C: New. + +2013-05-01 Vladimir Makarov + + PR target/57091 + * gcc.target/i386/pr57091.c: New test. + +2013-05-01 James Greenhalgh + + * gcc.target/aarch64/vect-vaddv.c: New. + +2013-05-01 James Greenhalgh + + * gcc.target/aarch64/vect-vmaxv.c: New. + * gcc.target/aarch64/vect-vfmaxv.c: Likewise. + +2013-05-01 James Greenhalgh + + * gcc.target/aarch64/scalar-vca.c: New. + * gcc.target/aarch64/vect-vca.c: Likewise. + +2013-05-01 James Greenhalgh + + * gcc.target/aarch64/scalar_intrinsics.c (force_simd): New. + (test_vceqd_s64): Force arguments to SIMD registers. + (test_vceqzd_s64): Likewise. + (test_vcged_s64): Likewise. + (test_vcled_s64): Likewise. + (test_vcgezd_s64): Likewise. + (test_vcged_u64): Likewise. + (test_vcgtd_s64): Likewise. + (test_vcltd_s64): Likewise. + (test_vcgtzd_s64): Likewise. + (test_vcgtd_u64): Likewise. + (test_vclezd_s64): Likewise. + (test_vcltzd_s64): Likewise. + (test_vtst_s64): Likewise. + (test_vtst_u64): Likewise. + +2013-05-01 Paolo Carlini + + PR c++/57092 + * g++.dg/cpp0x/decltype53.C: New. + +2013-04-30 Thomas Koenig + + PR fortran/57071 + * gfortran.dg/power_5.f90: New test. + +2013-04-30 Richard Biener + + PR middle-end/57122 + * gcc.dg/torture/pr57122.c: New testcase. + +2013-04-30 Richard Biener + + PR middle-end/57107 + * g++.dg/torture/pr57107.C: New testcase. + +2013-04-30 Andrey Belevantsev + + PR rtl-optimization/57105 + * gcc.dg/pr57105.c: New test. + +2013-04-30 Jakub Jelinek + + PR tree-optimization/57104 + * gcc.dg/pr57104.c: New test. + +2013-04-29 Uros Bizjak + + PR target/44578 + * gcc.target/i386/pr44578.c: New test. + +2013-04-29 Vladimir Makarov + + PR target/57097 + * gcc.target/i386/pr57097.c: New test. + +2013-04-29 Uros Bizjak + + PR target/57098 + * gcc.target/i386/pr57098.c: New test. + +2013-04-29 Kai Tietz + + * gcc.c-torture/execute/pr55875.c: New test. + +2013-04-29 Richard Biener + + PR middle-end/57075 + * gcc.dg/torture/pr57075.c: New testcase. + +2013-04-29 Richard Biener + + PR middle-end/57103 + * gcc.dg/autopar/pr57103.c: New testcase. + +2013-04-29 Senthil Kumar Selvaraj + + * gcc.dg/c1x-align-3.c: Add test for negative power of 2. + +2013-04-29 Tom de Vries + + * gcc.dg/pr50763.c: Update test. + +2013-04-26 Jeff Law + + * gcc.dg/tree-ssa/vrp88.c: New test. + +2013-04-29 Christian Bruel + + PR target/57108 + * gcc.target/sh/pr57108.c: New test. + +2013-04-29 Richard Biener + + PR middle-end/57089 + * gfortran.dg/gomp/pr57089.f90: New testcase. + +2013-04-29 James Greenhalgh + + * lib/target-supports.exp (vect_uintfloat_cvt): Enable for AArch64. + +2013-04-29 James Greenhalgh + + * gcc.target/aarch64/vect-vcvt.c: New. + +2013-04-29 James Greenhalgh + + * gcc.target/aarch64/vect-vrnd.c: New. + +2013-04-29 Richard Biener + + PR tree-optimization/57081 + * gcc.dg/torture/pr57081.c: New testcase. + +2013-04-29 Jakub Jelinek + + PR tree-optimization/57083 + * gcc.dg/torture/pr57083.c: New test. + +2013-04-28 Paolo Carlini + + PR c++/56450 + * g++.dg/cpp0x/decltype52.C: New. + +2013-04-28 Jakub Jelinek + + N3472 binary constants + * g++.dg/cpp/limits.C: Adjust warning wording. + * g++.dg/system-binary-constants-1.C: Likewise. + * g++.dg/cpp1y/system-binary-constants-1.C: New test. + +2013-04-28 Tobias Burnus + + PR fortran/57093 + * gfortran.dg/coarray_30.f90: New. + +2013-04-28 Thomas Koenig + + PR fortran/57071 + * frontend-passes (optimize_power): New function. + (optimize_op): Use it. + +2013-04-27 Jakub Jelinek + + PR target/56866 + * gcc.c-torture/execute/pr56866.c: New test. + * gcc.target/i386/pr56866.c: New test. + +2013-04-26 Jakub Jelinek + + PR go/57045 + * gcc.dg/setjmp-5.c: New test. + +2013-04-26 Paolo Carlini + + PR c++/55708 + * g++.dg/cpp0x/constexpr-55708.C: New. + +2013-04-26 Richard Biener + + * gcc.dg/tree-prof/update-loopch.c: Revert last change. + * gcc.dg/graphite/pr33766.c: Fix undefined behavior. + * gcc.dg/pr53265.c: Remove XFAILs. + * gcc.dg/tree-ssa/loop-38.c: Remove unreliable dump scanning. + * gcc.dg/tree-ssa/pr21559.c: Change back to two expected jump threads. + +2013-04-26 Jakub Jelinek + + * lib/prune.exp: Add -fdiagnostics-color=never to TEST_ALWAYS_FLAGS. + * lib/c-compat.exp (compat-use-alt-compiler, compat_setup_dfp): Handle + -fdiagnostics-color=never option similarly to + -fno-diagnostics-show-caret option. + +2013-04-25 Jakub Jelinek + + PR rtl-optimization/57003 + * gcc.target/i386/pr57003.c: New test. + +2013-04-25 Marek Polacek + + PR tree-optimization/57066 + * gcc.dg/torture/builtin-logb-1.c: Adjust testcase. + +2013-04-25 James Greenhalgh + Tejas Belagod + + * gcc.target/aarch64/vaddv-intrinsic.c: New. + * gcc.target/aarch64/vaddv-intrinsic-compile.c: Likewise. + * gcc.target/aarch64/vaddv-intrinsic.x: Likewise. + +2013-04-25 Naveen H.S + + * gcc.target/aarch64/cmp.c: New. + +2013-04-25 Naveen H.S + + * gcc.target/aarch64/ngc.c: New. + +2013-04-25 Kyrylo Tkachov + + * lib/target-supports.exp + (check_effective_target_arm_neon_fp16_ok_nocache): New procedure. + (check_effective_target_arm_neon_fp16_ok): Likewise. + (add_options_for_arm_neon_fp16): Likewise. + * gcc.target/arm/neon/vcvtf16_f32.c: New test. Generated. + * gcc.target/arm/neon/vcvtf32_f16.c: Likewise. + +2013-04-24 Vladimir Makarov + + PR rtl-optimizations/57046 + * gcc.target/i386/pr57046.c: New test. + +2013-04-24 Paolo Carlini + + * g++.dg/cpp1y/cplusplus.C: New. + +2013-04-24 Paolo Carlini + + * g++.dg/cpp1y/cxx1y_macro.C: Remove. + +2013-04-24 Paolo Carlini + + * c-c++-common/Wpointer-arith-1.c: New. + +2013-04-24 Paolo Carlini + + * g++.dg/cpp1y/cxx1y_macro.C: New. + +2013-04-24 Paolo Carlini + + PR c++/56970 + * g++.dg/cpp0x/sfinae45.C: New. + +2013-04-24 Richard Biener + + PR testsuite/57050 + * gcc.c-torture/execute/pr56982.c: Avoid sigjmp_buf use. + +2013-04-23 Richard Biener + + PR middle-end/57036 + * gcc.dg/torture/pr57036-1.c: New testcase. + * gcc.dg/torture/pr57036-2.c: Likewise. + +2013-04-23 Sofiane Naci + + * gcc.target/aarch64/scalar-mov.c: New testcase. + +2013-04-23 Richard Biener + + PR tree-optimization/57026 + * gcc.dg/torture/pr57026.c: New testcase. + +2013-04-22 Janus Weil + + PR fortran/53685 + PR fortran/57022 + * gfortran.dg/transfer_check_4.f90: New. + +2013-04-22 Marek Polacek + + PR sanitizer/56990 + * gcc.dg/pr56990.c: New test. + +2013-04-22 Vladimir Makarov + + PR target/57018 + * gcc.target/i386/pr57018.c: New test. + +2013-04-22 James Greenhalgh + + * gcc.target/aarch64/vrecps.c: New. + * gcc.target/aarch64/vrecpx.c: Likewise. + +2013-04-22 Christian Bruel + + PR target/56995 + * gcc.target/sh/mfmovd.c: Add new function and check hard_float. + +2013-04-21 Jeff Law + + * gcc.dg/tree-ssa/forwprop-26.c: New test. + +2013-04-20 Tobias Burnus + + PR fortran/56907 + * gfortran.dg/c_loc_test_22.f90: New. + +2013-04-19 Vladimir Makarov + + PR rtl-optimization/56847 + * gcc.dg/pr56847.c: New test. + +2013-04-19 Richard Biener + + PR tree-optimization/56982 + * gcc.c-torture/execute/pr56982.c: New testcase. + +2013-04-19 Martin Jambor + + PR tree-optimization/56718 + * g++.dg/ipa/imm-devirt-1.C: New test. + * g++.dg/ipa/imm-devirt-2.C: Likewise. + +2013-04-19 Richard Biener + + PR tree-optimization/57000 + * gcc.dg/tree-ssa/reassoc-27.c: New testcase. + +2013-04-19 Thomas Koenig + Mikael Morin + + PR fortran/56872 + * gfortran.dg/array_constructor_45.f90: New test. + * gfortran.dg/array_constructor_46.f90: New test. + * gfortran.dg/array_constructor_47.f90: New test. + * gfortran.dg/array_constructor_40.f90: Adjust number of while loops. + +2013-04-18 Jakub Jelinek + + PR rtl-optimization/56999 + * g++.dg/opt/pr56999.C: New test. + +2013-04-18 Cary Coutant + + * g++.dg/debug/dwarf2/pubnames-2.C: Add -fno-debug-types-section. + * g++.dg/debug/dwarf2/pubnames-3.C: New test case. + +2013-04-18 Cary Coutant + + * g++.dg/debug/dwarf2/typedef2.C: Add -fno-debug-types-section flag. + * g++.dg/debug/dwarf2/typedef4.C: Likewise. + * g++.dg/debug/dwarf2/static-data-member1.C: Likewise. + * g++.dg/debug/dwarf2/global-used-types-1.C: Likewise. + * g++.dg/debug/dwarf2/self-ref-1.C: Likewise. + * g++.dg/debug/dwarf2/nested-2.C: Likewise. + * g++.dg/debug/dwarf2/typedef1.C: Likewise. + * g++.dg/debug/dwarf2/namespace-2.C: Likewise. + * g++.dg/debug/dwarf2/integer-typedef.C: Likewise. + * g++.dg/debug/dwarf2/self-ref-2.C: Likewise. + * g++.dg/debug/dwarf2/explicit-constructor.C: Likewise. + +2013-04-18 Grigoriy Kraynov + + * gcc.target/i386/avx2-vpop-check.h: Cast away volatility in memcmp(). + +2013-04-18 Jakub Jelinek + + PR tree-optimization/56984 + * gcc.c-torture/compile/pr56984.c: New test. + + PR rtl-optimization/56992 + * gcc.dg/pr56992.c: New test. + +2013-04-17 Janus Weil + + PR fortran/56814 + * gfortran.dg/proc_ptr_42.f90: New. + +2013-04-17 Eric Botcazou + + * gnat.dg/discr41.ad[sb]: New test. + * gcc.dg/tree-ssa/ssa-fre-38.c: Likewise. + * gcc.dg/vect/slp-24-big-array.c: Beef up anti-vectorization trick. + * gcc.dg/vect/slp-24.c: Likewise. + * gcc.dg/vect/vect-strided-a-mult.c: Likewise. + * gcc.dg/vect/vect-strided-a-u16-i2.c: Likewise. + * gcc.dg/vect/vect-strided-a-u16-i4.c: Likewise. + * gcc.dg/vect/vect-strided-a-u16-mult.c: Likewise. + * gcc.dg/vect/vect-strided-a-u8-i2-gap.c: Likewise. + * gcc.dg/vect/vect-strided-a-u8-i8-gap2-big-array.c: Likewise. + * gcc.dg/vect/vect-strided-a-u8-i8-gap2.c: Likewise. + * gcc.dg/vect/vect-strided-a-u8-i8-gap7-big-array.c: Likewise. + * gcc.dg/vect/vect-strided-a-u8-i8-gap7.c: Likewise. + * gcc.dg/vect/vect-strided-mult-char-ls.c: Likewise. + * gcc.dg/vect/vect-strided-mult.c: Likewise. + * gcc.dg/vect/vect-strided-same-dr.c: Likewise. + * gcc.dg/vect/vect-strided-u16-i2.c: Likewise. + * gcc.dg/vect/vect-strided-u16-i4.c: Likewise. + * gcc.dg/vect/vect-strided-u32-i4.c: Likewise. + * gcc.dg/vect/vect-strided-u32-i8.c: Likewise. + * gcc.dg/vect/vect-strided-u8-i2-gap.c: Likewise. + * gcc.dg/vect/vect-strided-u8-i2.c: Likewise. + * gcc.dg/vect/vect-strided-u8-i8-gap2-big-array.c: Likewise. + * gcc.dg/vect/vect-strided-u8-i8-gap2.c: Likewise. + * gcc.dg/vect/vect-strided-u8-i8-gap4-big-array.c: Likewise. + * gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c: Likewise. + * gcc.dg/vect/vect-strided-u8-i8-gap4.c: Likewise. + * gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c: Likewise. + * gcc.dg/vect/vect-strided-u8-i8-gap7.c: Likewise. + * gcc.dg/vect/vect-strided-u8-i8.c: Likewise. + +2013-04-17 Janne Blomqvist + + PR fortran/40958 + * lib/gcc-dg.exp (scan-module): Uncompress module file before scanning. + * gfortran.dg/module_md5_1.f90: Remove. + +2013-04-16 Naveen H.S + + * gcc.target/aarch64/adds3.c: New. + * gcc.target/aarch64/subs3.c: New. + +2013-04-16 Naveen H.S + + * gcc.target/aarch64/adds1.c: New. + * gcc.target/aarch64/adds2.c: New. + * gcc.target/aarch64/subs1.c: New. + * gcc.target/aarch64/subs2.c: New. + +2013-04-16 Ed Smith-Rowland <3dw4rd@verizon.net> + + Implement n3599 - Literal operator templates for strings. + * g++.dg/cpp1y/udlit-char-template.C: New test. + * g++.dg/cpp1y/udlit-char-template-neg.C: New test. + +2013-04-16 Tobias Burnus + + PR fortran/39505 + * gfortran.dg/no_arg_check_1.f90: New. + * gfortran.dg/no_arg_check_2.f90: New. + * gfortran.dg/no_arg_check_3.f90: New. + +2013-04-16 Janus Weil + + PR fortran/56968 + * gfortran.dg/proc_ptr_41.f90: New. + +2013-04-16 Richard Biener + + PR tree-optimization/56756 + * gcc.dg/torture/pr56756.c: New testcase. + +2013-04-16 Tobias Burnus + + PR fortran/56969 + * gfortran.dg/c_assoc_5.f90: New. + +2013-04-16 Uros Bizjak + + * g++.dg/ipa/devirt-c-7.C: Require nonpic effective target. + * gcc.c-torture/execute/pr33992.x: Remove. + * gcc.c-torture/execute/pr33992.c (foo): Declare as static. + * gcc.dg/uninit-pred-5_a.c (foo): Ditto. + * gcc.dg/uninit-pred-5_b.c (foo): Ditto. + +2013-04-15 Jakub Jelinek + + PR tree-optimization/56962 + * gcc.c-torture/execute/pr56962.c: New test. + +2013-04-15 Richard Biener + + PR tree-optimization/56933 + * gcc.dg/vect/pr56933.c: New testcase. + +2013-04-15 Kyrylo Tkachov + + * gcc.target/arm/anddi3-opt.c: New test. + * gcc.target/arm/anddi3-opt2.c: Likewise. + +2013-04-15 Eric Botcazou + + * gcc.dg/pr56890-1.c: New test. + * gcc.dg/pr56890-2.c: Likewise. + +2013-04-15 Joey Ye + + * gcc.target/arm/thumb1-far-jump-1.c: New test. + * gcc.target/arm/thumb1-far-jump-2.c: New test. + +2013-04-14 Mikael Morin + + PR fortran/56816 + * gfortran.dg/select_type_33.f03: New test. + +2013-04-13 Janus Weil + + PR fortran/55959 + * gfortran.dg/typebound_proc_29.f03: New. + +2013-04-12 Janus Weil + + PR fortran/56266 + * gfortran.dg/typebound_proc_28.f03: New. + +2013-04-12 Jeff Law + + * gcc.dg/tree-ssa/vrp87.c: Do not run test on ppc and xtensa + either. + +2013-04-12 Tobias Burnus + + PR fortran/56929 + * gfortran.dg/coarray/alloc_comp_2.f90: New. + +2013-04-12 Vladimir Makarov + + PR target/56903 + * gcc.target/i386/pr56903.c: New test. + +2013-04-12 Janus Weil + + PR fortran/56261 + * gfortran.dg/auto_char_len_4.f90: Add -pedantic. Changed error. + * gfortran.dg/assumed_rank_4.f90: Modified error wording. + * gfortran.dg/block_11.f90: Fix invalid test case. + * gfortran.dg/function_types_3.f90: Add new error message. + * gfortran.dg/global_references_1.f90: Ditto. + * gfortran.dg/import2.f90: Remove unneeded parts. + * gfortran.dg/import6.f90: Fix invalid test case. + * gfortran.dg/proc_decl_2.f90: Ditto. + * gfortran.dg/proc_decl_9.f90: Ditto. + * gfortran.dg/proc_decl_18.f90: Ditto. + * gfortran.dg/proc_ptr_40.f90: New. + * gfortran.dg/whole_file_7.f90: Modified error wording. + * gfortran.dg/whole_file_16.f90: Ditto. + * gfortran.dg/whole_file_17.f90: Add -pedantic. + * gfortran.dg/whole_file_18.f90: Modified error wording. + * gfortran.dg/whole_file_20.f03: Ditto. + * gfortran.fortran-torture/execute/intrinsic_associated.f90: Fix + invalid test case. + +2013-04-12 Richard Biener + + Revert + 2013-04-10 Richard Biener + + * g++.dg/pr55604.C: Use -fdump-rtl-ira. + +2013-04-12 Tobias Burnus + + PR fortran/56845 + * gfortran.dg/class_allocate_15.f90: New. + + Revert: + 2013-04-12 Tobias Burnus + + * gfortran.dg/coarray_lib_alloc_2.f90: Update + scan-tree-dump-times. + +2013-04-12 Jakub Jelinek + + PR tree-optimization/56918 + PR tree-optimization/56920 + * gcc.dg/vect/pr56918.c: New test. + * gcc.dg/vect/pr56920.c: New test. + +2013-04-12 Tobias Burnus + + PR fortran/56845 + * gfortran.dg/class_allocate_14.f90: New. + * gfortran.dg/coarray_lib_alloc_2.f90: Update scan-tree-dump-times. + * gfortran.dg/coarray_lib_alloc_3.f90: New. + +2013-04-12 Marc Glisse + + * gcc.dg/fold-cstvecshift.c: New testcase. + +2013-04-11 Naveen H.S + + * gcc.target/aarch64/negs.c: New. + +2013-04-11 Jakub Jelinek + + PR c++/56895 + * g++.dg/template/arrow4.C: New test. + +2013-04-11 Eric Botcazou + + * gnat.dg/array23.adb: New test. + * gnat.dg/array23_pkg[123].ads: New helpers. + +2013-04-11 Jeff Law + + PR tree-optimization/56900 + * gcc.dg/tree-ssa/vrp87.c: Do not run test on various targets. + +2013-04-11 Paolo Carlini + + PR c++/56913 + * g++.dg/cpp0x/sfinae44.C: New. + +2013-04-11 Arnaud Charlet + + * ada/acats/run_all.sh: Remove special handling of -gnat95 switch. + * ada/acats/ada95.lst: Remove special handling of -gnat95 switch. + +2013-04-11 Paolo Carlini + + PR c++/54216 + * g++.dg/cpp0x/enum26.C: New. + * g++.old-deja/g++.pt/mangle1.C: Adjust. + +2013-04-11 James Greenhalgh + + * gcc.target/aarch64/vect-fcm.x: Add check for zero forms of + inverse operands. + * gcc.target/aarch64/vect-fcm-eq-d.c: Check that new zero form + loop is vectorized. + * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise. + * gcc.target/aarch64/vect-fcm-ge-d.c: Check that new zero form + loop is vectorized and that the correct instruction is generated. + * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise. + * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise. + * gcc.target/aarch64/vect-fcm-gt-f.c: Likewise. + +2013-04-11 Jakub Jelinek + + PR tree-optimization/56899 + * gcc.c-torture/execute/pr56899.c: New test. + +2013-04-10 David S. Miller + + * gcc.target/sparc/setcc-4.c: New test. + * gcc.target/sparc/setcc-5.c: New test. + +2013-04-10 Richard Biener + + * g++.dg/pr55604.C: Use -fdump-rtl-ira. + +2013-04-10 Richard Biener + + * gcc.dg/vect/slp-39.c: New testcase. + +2013-04-10 Joern Rennecke + + PR tree-optimization/55524 + * gcc.target/epiphany/fnma-1.c: New test. + +2013-04-10 Zhouyi Zhou + + * gcc.dg/tree-ssa/inline-11.c: New test + +2013-04-10 Jakub Jelinek + + PR c++/56895 + * g++.dg/template/arrow3.C: New test. + +2013-04-09 Kyrylo Tkachov + + * gcc.target/arm/minmax_minus.c: New test. + +2013-04-09 Jakub Jelinek + + PR middle-end/56883 + * c-c++-common/gomp/pr56883.c: New test. + +2013-04-09 Jeff Law + + * gcc.dg/tree-ssa/vrp87.c: New test. + +2013-04-09 Jakub Jelinek + + PR tree-optimization/56854 + * g++.dg/torture/pr56854.C: New test. + +2013-04-08 Thomas Koenig + + PR fortran/56782 + * gfortran.dg/array_constructor_44.f90: New test. + +2013-04-08 Paolo Carlini + + PR c++/56871 + * g++.dg/cpp0x/constexpr-specialization.C: New. + +2013-04-08 Jakub Jelinek + + * gcc.c-torture/execute/pr56837.c: New test. + + PR c++/34949 + PR c++/50243 + * g++.dg/opt/vt3.C: New test. + * g++.dg/opt/vt4.C: New test. + +2013-04-08 Jeff Law + + * gcc.dg/tree-ssa/forwprop-25.c: New test. + +2013-04-08 Richard Biener + + * gfortran.dg/vect/fast-math-mgrid-resid.f: Adjust. + +2013-04-08 Richard Biener + + * gfortran.dg/vect/fast-math-pr37021.f90: Adjust. + +2013-04-08 Richard Biener + + * g++.dg/vect/slp-pr56812.cc: Adjust. + +2013-04-08 Jakub Jelinek + + * gcc.dg/pr56837.c: New test. + * gcc.dg/tree-ssa/ldist-19.c: Don't check for + "generated memset minus one". + +2013-04-07 Tobias Burnus + + PR fortran/56849 + * gfortran.dg/reshape_5.f90: New. + +2013-04-05 Bill Schmidt + + PR target/56843 + * gcc.target/powerpc/recip-1.c: Modify expected output. + * gcc.target/powerpc/recip-3.c: Likewise. + * gcc.target/powerpc/recip-4.c: Likewise. + * gcc.target/powerpc/recip-5.c: Add expected output for iterations. + +2013-04-05 Greta Yorsh + + * gcc.target/arm/peep-ldrd-1.c: New test. + * gcc.target/arm/peep-strd-1.c: Likewise. + +2013-04-05 Greta Yorsh + + * gcc.target/arm/negdi-1.c: New test. + * gcc.target/arm/negdi-2.c: Likewise. + * gcc.target/arm/negdi-3.c: Likewise. + * gcc.target/arm/negdi-4.c: Likewise. + +2013-04-05 Kyrylo Tkachov + + * lib/target-supports.exp (add_options_for_arm_v8_neon): + Add -march=armv8-a when we use v8 NEON. + (check_effective_target_vect_call_btruncf): Remove arm-*-*-*. + (check_effective_target_vect_call_ceilf): Likewise. + (check_effective_target_vect_call_floorf): Likewise. + (check_effective_target_vect_call_roundf): Likewise. + (check_vect_support_and_set_flags): Remove check for arm_v8_neon. + * gcc.target/arm/vect-rounding-btruncf.c: New testcase. + * gcc.target/arm/vect-rounding-ceilf.c: Likewise. + * gcc.target/arm/vect-rounding-floorf.c: Likewise. + * gcc.target/arm/vect-rounding-roundf.c: Likewise. + +2013-04-05 David Edelsohn + + * gcc.target/powerpc/sd-vsx.c: Skip on AIX. + * gcc.target/powerpc/sd-pwr6.c: Same. + * gcc.dg/stack-usage-1.c: Define SIZE on AIX. + * g++.dg/debug/pr56294.C: XFAIL on AIX. + +2013-04-05 Ed Smith-Rowland <3dw4rd@verizon.net> + + * g++.dg/cpp0x/ref-qual-multi-neg.C: New test. + +2013-04-04 Janus Weil + + PR fortran/40881 + * gfortran.dg/altreturn_1.f90: Add -std=gnu. + * gfortran.dg/altreturn_4.f90: Ditto. + * gfortran.dg/altreturn_3.f90: Replace -std=legacy by -std=gnu. + * gfortran.dg/altreturn_5.f90: Ditto. + * gfortran.dg/altreturn_6.f90: Ditto. + * gfortran.dg/altreturn_7.f90: Ditto. + +2013-04-04 Kyrylo Tkachov + + * lib/target-supports.exp (check_effective_target_arm_v8_neon_hw): + New procedure. + (check_effective_target_arm_v8_neon_ok_nocache): + Likewise. + (check_effective_target_arm_v8_neon_ok): Change to use + check_effective_target_arm_v8_neon_ok_nocache. + (add_options_for_arm_v8_neon): Use et_arm_v8_neon_flags to set ARMv8 + NEON flags. + (check_effective_target_vect_call_btruncf): + Enable for arm and ARMv8 NEON. + (check_effective_target_vect_call_ceilf): Likewise. + (check_effective_target_vect_call_floorf): Likewise. + (check_effective_target_vect_call_roundf): Likewise. + (check_vect_support_and_set_flags): Handle ARMv8 NEON effective + target. + +2013-04-04 Marek Polacek + + PR tree-optimization/48186 + * gcc.dg/pr48186.c: New test. + +2013-04-04 Richard Biener + + PR tree-optimization/56826 + * gcc.dg/vect/pr56826.c: New testcase. + * gcc.dg/vect/O3-pr36098.c: Adjust. + +2013-04-04 Tejas Belagod + + * gcc.target/aarch64/inc/asm-adder-clobber-lr.c: Remove duplication. + * gcc.target/aarch64/inc/asm-adder-no-clobber-lr.c: Likewise. + * gcc.target/aarch64/test-framepointer-1.c: Likewise. + * gcc.target/aarch64/test-framepointer-2.c: Likewise. + * gcc.target/aarch64/test-framepointer-3.c: Likewise. + * gcc.target/aarch64/test-framepointer-4.c: Likewise. + * gcc.target/aarch64/test-framepointer-5.c: Likewise. + * gcc.target/aarch64/test-framepointer-6.c: Likewise. + * gcc.target/aarch64/test-framepointer-7.c: Likewise. + * gcc.target/aarch64/test-framepointer-8.c: Likewise. + +2013-04-04 Richard Biener + + PR tree-optimization/56213 + * gcc.dg/vect/vect-123.c: New testcase. + +2013-04-04 Tobias Burnus + + PR fortran/56810 + * gfortran.dg/read_repeat_2.f90: New. + +2013-04-04 Richard Biener + + PR tree-optimization/56837 + * g++.dg/torture/pr56837.C: New testcase. + +2013-04-04 Tobias Burnus + + PR fortran/50269 + * gfortran.dg/c_loc_test_21.f90: New. + * gfortran.dg/c_loc_test_19.f90: Update dg-error. + * gfortran.dg/c_loc_tests_10.f03: Update dg-error. + * gfortran.dg/c_loc_tests_11.f03: Update dg-error. + * gfortran.dg/c_loc_tests_4.f03: Update dg-error. + * gfortran.dg/c_loc_tests_16.f90: Update dg-error. + +2013-04-03 Jeff Law + + PR tree-optimization/56799 + * gcc.c-torture/execute/pr56799.c: New test. + +2013-04-03 Paolo Carlini + + PR c++/56815 + * g++.dg/warn/Wpointer-arith-1.C: New. + * g++.dg/gomp/for-19.C: Adjust. + +2013-04-03 Marek Polacek + + PR sanitizer/55702 + * gcc.dg/pr55702.c: New test. + +2013-04-03 Kyrylo Tkachov + + PR target/56809 + * gcc.dg/pr56809.c: New testcase. + +2013-04-03 Jakub Jelinek + + PR debug/56819 + * g++.dg/debug/pr56819.C: New test. + +2013-04-03 Richard Biener + + PR tree-optimization/56817 + * g++.dg/torture/pr56817.C: New testcase. + +2013-04-03 Marc Glisse + + * gcc.dg/vect/bb-slp-31.c: New file. + +2013-04-03 Jason Merrill + + PR c++/34949 + * g++.dg/tree-ssa/ehcleanup-1.C: Adjust unreachable count. + +2013-04-03 Richard Biener + + * g++.dg/vect/slp-pr56812.cc: Use dg-additional-options. + +2013-04-03 Richard Biener + + PR tree-optimization/55964 + * gcc.dg/torture/pr55964-2.c: New testcase. + +2013-04-03 Richard Biener + + PR tree-optimization/56501 + * gcc.dg/torture/pr56501.c: New testcase. + +2013-04-03 Richard Biener + + PR tree-optimization/56407 + * gcc.dg/torture/pr56407.c: New testcase. + +2013-04-03 Marc Glisse + + PR tree-optimization/56790 + * g++.dg/ext/pr56790-1.C: New testcase. + +2013-04-03 Marc Glisse + + * gcc.target/i386/merge-1.c: New testcase. + * gcc.target/i386/avx2-vpblendd128-1.c: Make it non-trivial. + +2013-04-03 Jakub Jelinek + + PR c/19449 + * gcc.c-torture/execute/pr19449.c: New test. + +2013-04-03 Richard Biener + + PR tree-optimization/56812 + * g++.dg/vect/slp-pr56812.cc: New testcase. + +2013-04-03 Janus Weil + + PR fortran/56284 + PR fortran/40881 + * gfortran.dg/altreturn_8.f90: New. + * gfortran.dg/altreturn_2.f90: Add -std=legacy. + * gfortran.dg/intrinsic_actual_3.f90: Ditto. + * gfortran.dg/invalid_interface_assignment.f90: Ditto. + +2013-04-02 Jakub Jelinek + + PR rtl-optimization/56745 + * gcc.c-torture/compile/pr56745.c: New test. + +2013-04-02 Pitchumani Sivanupandi + + * gcc.dg/tree-ssa/sra-13.c: Fix for 16 bit int. + +2013-04-02 Richard Biener + + PR tree-optimization/56778 + * gcc.dg/torture/pr56778.c: New testcase. + +2013-04-02 Richard Biener + + PR middle-end/56768 + * g++.dg/torture/pr56768.C: New testcase. + +2013-04-02 Paolo Carlini + + * obj-c++.dg/try-catch-13.mm: Update per PR56725. + +2013-04-01 Jerry DeLisle + + PR fortran/56660 + * gfortran.dg/namelist_82.f90: New test. + +2013-04-01 Janus Weil + + PR fortran/56500 + * gfortran.dg/implicit_class_1.f90: New. + +2013-03-31 Jerry DeLisle + + PR fortran/56786 + * gfortran.dg/namelist_81.f90: New test. + +2013-03-30 Thomas Koenig + + * gfortran.dg/character_comparison_3.f90: Adjust for use of memcmp + for constant and equal string lengths. + * gfortran.dg/character_comparison_5.f90: Likewise. + * gfortran.dg/character_comparison_9.f90: New test. + +2013-03-27 Kirill Yukhin + + * gcc.target/i386/avx2-vbroadcastsi128-1.c: Fix intrinsic name. + * gcc.target/i386/avx2-vbroadcastsi128-1.c: Ditto. + +2013-03-29 Tobias Burnus + + PR fortran/35203 + * gfortran.dg/optional_absent_3.f90: New. + +2013-03-29 Tobias Burnus + + PR fortran/56737 + * gfortran.dg/fmt_cache_3.f90: New. + +2013-03-29 Tobias Burnus + + PR fortran/56735 + * gfortran.dg/namelist_80.f90: New. + +2013-03-28 Thomas Koenig + + PR fortran/45159 + * gfortran.dg/string_length_2.f90: New test. + * gfortran.dg/dependency_41.f90: New test. + +2013-03-28 Thomas Koenig + + PR fortran/55806 + * gfortran.dg/array_constructor_43.f90: New test. + * gfortran.dg/random_seed_3.f90: New test. + +2013-03-28 Ian Bolton + + * gcc.target/aarch64/inc/asm-adder-clobber-lr.c: New test. + * gcc.target/aarch64/inc/asm-adder-no-clobber-lr.c: Likewise. + * gcc.target/aarch64/test-framepointer-1.c: Likewise. + * gcc.target/aarch64/test-framepointer-2.c: Likewise. + * gcc.target/aarch64/test-framepointer-3.c: Likewise. + * gcc.target/aarch64/test-framepointer-4.c: Likewise. + * gcc.target/aarch64/test-framepointer-5.c: Likewise. + * gcc.target/aarch64/test-framepointer-6.c: Likewise. + * gcc.target/aarch64/test-framepointer-7.c: Likewise. + * gcc.target/aarch64/test-framepointer-8.c: Likewise. + +2013-03-28 Paolo Carlini + + PR c++/56725 + * g++.dg/conversion/op4.C: Adjust. + * g++.dg/cpp0x/rv1n.C: Likewise. + * g++.dg/cpp0x/rv2n.C: Likewise. + * g++.dg/cpp0x/template_deduction.C: Likewise. + * g++.dg/expr/cond8.C: Likewise. + * g++.dg/other/error4.C: Likewise. + * g++.old-deja/g++.bugs/900514_03.C: Likewise. + * g++.old-deja/g++.bugs/900519_02.C: Likewise. + * g++.old-deja/g++.bugs/900519_03.C: Likewise. + * g++.old-deja/g++.bugs/900520_02.C: Likewise. + * g++.old-deja/g++.jason/conversion2.C: Likewise. + * g++.old-deja/g++.law/cvt20.C: Likewise. + * g++.old-deja/g++.law/cvt8.C: Likewise. + * g++.old-deja/g++.law/init8.C: Likewise. + * g++.old-deja/g++.mike/net12.C: Likewise. + * g++.old-deja/g++.mike/net8.C: Likewise. + * g++.old-deja/g++.mike/p2793.C: Likewise. + * g++.old-deja/g++.mike/p3836.C: Likewise. + * g++.old-deja/g++.mike/p418.C: Likewise. + * g++.old-deja/g++.mike/p701.C: Likewise. + * g++.old-deja/g++.mike/p807.C: Likewise. + +2013-03-28 Tejas Belagod + + PR middle-end/56694 + * g++.dg/torture/pr56694.C: Fix test case to build on bare-metal + targets. + +2013-03-28 Marek Polacek + + PR tree-optimization/56695 + * gcc.dg/vect/pr56695.c: New test. + +2013-03-28 Richard Biener + + PR tree-optimization/37021 + * gcc.dg/vect/fast-math-slp-38.c: New testcase. + * gcc.dg/vect/O3-pr36098.c: Un-XFAIL. + +2013-03-27 Tobias Burnus + + PR fortran/56650 + PR fortran/36437 + * gfortran.dg/sizeof_2.f90: New. + * gfortran.dg/sizeof_3.f90: New. + * gfortran.dg/sizeof_proc.f90: Update dg-error. + +2013-03-27 Richard Biener + + PR tree-optimization/37021 + * gfortran.dg/vect/fast-math-pr37021.f90: New testcase. + +2013-03-27 Alexander Ivchenko + + * g++.dg/ipa/ivinline-1.C: Add target nonpic. + * g++.dg/ipa/ivinline-2.C: Likewise. + * g++.dg/ipa/ivinline-3.C: Likewise. + * g++.dg/ipa/ivinline-4.C: Likewise. + * g++.dg/ipa/ivinline-5.C: Likewise. + * g++.dg/ipa/ivinline-7.C: Likewise. + * g++.dg/ipa/ivinline-8.C: Likewise. + * g++.dg/ipa/ivinline-9.C: Likewise. + * g++.dg/cpp0x/noexcept03.C: Likewise. + * gcc.dg/const-1.c: Likewise. + * gcc.dg/ipa/pure-const-1.c: Likewise. + * gcc.dg/noreturn-8.c: Likewise. + * gcc.target/i386/mmx-1.c: Likewise. + * gcc.dg/tree-ssa/ipa-split-5.c: Likewise. + * gcc.dg/tree-ssa/loadpre6.c: Likewise. + * gcc.c-torture/execute/pr33992.x: New file. + +2013-03-26 Eric Botcazou + + * gcc.c-torture/execute/20011008-3.c: Cap VLEN with STACK_SIZE too. + +2013-03-26 Paolo Carlini + + PR c++/55951 + * g++.dg/ext/desig5.C: New. + +2013-03-26 Tobias Burnus + + PR fortran/56649 + * gfortran.dg/merge_init_expr_2.f90: New. + * gfortran.dg/merge_char_1.f90: Modify test to + stay a run-time test. + * gfortran.dg/merge_char_3.f90: Ditto. + +2013-03-26 Paolo Carlini + + * g++.dg/cpp0x/constexpr-friend-2.C: New. + * g++.dg/cpp0x/constexpr-main.C: Likewise. + +2013-03-25 Paolo Carlini + + PR c++/56722 + * g++.dg/cpp0x/range-for23.C: New. + +2013-03-25 Tilo Schwarz + + PR libfortran/52512 + * gfortran.dg/namelist_79.f90: New. + +2013-03-25 Martin Jambor + + * gcc.dg/ipa/ipcp-agg-9.c: New test. + +2013-03-25 Tobias Burnus + + PR fortran/38536 + PR fortran/38813 + PR fortran/38894 + PR fortran/39288 + PR fortran/40963 + PR fortran/45824 + PR fortran/47023 + PR fortran/47034 + PR fortran/49023 + PR fortran/50269 + PR fortran/50612 + PR fortran/52426 + PR fortran/54263 + PR fortran/55343 + PR fortran/55444 + PR fortran/55574 + PR fortran/56079 + PR fortran/56378 + * gfortran.dg/c_assoc_2.f03: Update dg-error wording. + * gfortran.dg/c_f_pointer_shape_test.f90: Ditto. + * gfortran.dg/c_f_pointer_shape_tests_3.f03: Ditto. + * gfortran.dg/c_f_pointer_tests_5.f90: Ditto. + * gfortran.dg/c_funloc_tests_2.f03: Ditto. + * gfortran.dg/c_funloc_tests_5.f03: Ditto. + * gfortran.dg/c_funloc_tests_6.f90: Ditto. + * gfortran.dg/c_loc_tests_10.f03: Add -std=f2008. + * gfortran.dg/c_loc_tests_11.f03: Ditto, update dg-error. + * gfortran.dg/c_loc_tests_16.f90: Ditto. + * gfortran.dg/c_loc_tests_4.f03: Ditto. + * gfortran.dg/c_loc_tests_15.f90: Update dg-error wording. + * gfortran.dg/c_loc_tests_3.f03: Valid since F2003 TC5. + * gfortran.dg/c_loc_tests_8.f03: Ditto. + * gfortran.dg/c_ptr_tests_14.f90: Update scan-tree-dump-times. + * gfortran.dg/c_ptr_tests_15.f90: Ditto. + * gfortran.dg/c_sizeof_1.f90: Fix invalid code. + * gfortran.dg/iso_c_binding_init_expr.f03: Update dg-error wording. + * gfortran.dg/pr32601_1.f03: Ditto. + * gfortran.dg/storage_size_2.f08: Remove dg-error. + * gfortran.dg/blockdata_7.f90: New. + * gfortran.dg/c_assoc_4.f90: New. + * gfortran.dg/c_f_pointer_tests_6.f90: New. + * gfortran.dg/c_f_pointer_tests_7.f90: New. + * gfortran.dg/c_funloc_tests_8.f90: New. + * gfortran.dg/c_loc_test_17.f90: New. + * gfortran.dg/c_loc_test_18.f90: New. + * gfortran.dg/c_loc_test_19.f90: New. + * gfortran.dg/c_loc_test_20.f90: New. + * gfortran.dg/c_sizeof_5.f90: New. + * gfortran.dg/iso_c_binding_rename_3.f90: New. + * gfortran.dg/transfer_resolve_2.f90: New. + * gfortran.dg/transfer_resolve_3.f90: New. + * gfortran.dg/transfer_resolve_4.f90: New. + * gfortran.dg/pr32601.f03: Update dg-error. + * gfortran.dg/c_ptr_tests_13.f03: Update dg-error. + * gfortran.dg/c_ptr_tests_9.f03: Fix test case. + +2013-03-25 Kyrylo Tkachov + + * gcc.target/arm/vseleqdf.c: New test. + * gcc.target/arm/vseleqsf.c: Likewise. + * gcc.target/arm/vselgedf.c: Likewise. + * gcc.target/arm/vselgesf.c: Likewise. + * gcc.target/arm/vselgtdf.c: Likewise. + * gcc.target/arm/vselgtsf.c: Likewise. + * gcc.target/arm/vselledf.c: Likewise. + * gcc.target/arm/vsellesf.c: Likewise. + * gcc.target/arm/vselltdf.c: Likewise. + * gcc.target/arm/vselltsf.c: Likewise. + * gcc.target/arm/vselnedf.c: Likewise. + * gcc.target/arm/vselnesf.c: Likewise. + * gcc.target/arm/vselvcdf.c: Likewise. + * gcc.target/arm/vselvcsf.c: Likewise. + * gcc.target/arm/vselvsdf.c: Likewise. + * gcc.target/arm/vselvssf.c: Likewise. + +2013-03-25 Kyrylo Tkachov + + * gcc.target/aarch64/atomic-comp-swap-release-acquire.c: Move test + body from here... + * gcc.target/aarch64/atomic-comp-swap-release-acquire.x: ... to here. + * gcc.target/aarch64/atomic-op-acq_rel.c: Move test body from here... + * gcc.target/aarch64/atomic-op-acq_rel.x: ... to here. + * gcc.target/aarch64/atomic-op-acquire.c: Move test body from here... + * gcc.target/aarch64/atomic-op-acquire.x: ... to here. + * gcc.target/aarch64/atomic-op-char.c: Move test body from here... + * gcc.target/aarch64/atomic-op-char.x: ... to here. + * gcc.target/aarch64/atomic-op-consume.c: Move test body from here... + * gcc.target/aarch64/atomic-op-consume.x: ... to here. + * gcc.target/aarch64/atomic-op-int.c: Move test body from here... + * gcc.target/aarch64/atomic-op-int.x: ... to here. + * gcc.target/aarch64/atomic-op-relaxed.c: Move test body from here... + * gcc.target/aarch64/atomic-op-relaxed.x: ... to here. + * gcc.target/aarch64/atomic-op-release.c: Move test body from here... + * gcc.target/aarch64/atomic-op-release.x: ... to here. + * gcc.target/aarch64/atomic-op-seq_cst.c: Move test body from here... + * gcc.target/aarch64/atomic-op-seq_cst.x: ... to here. + * gcc.target/aarch64/atomic-op-short.c: Move test body from here... + * gcc.target/aarch64/atomic-op-short.x: ... to here. + * gcc.target/arm/atomic-comp-swap-release-acquire.c: New test. + * gcc.target/arm/atomic-op-acq_rel.c: Likewise. + * gcc.target/arm/atomic-op-acquire.c: Likewise. + * gcc.target/arm/atomic-op-char.c: Likewise. + * gcc.target/arm/atomic-op-consume.c: Likewise. + * gcc.target/arm/atomic-op-int.c: Likewise. + * gcc.target/arm/atomic-op-relaxed.c: Likewise. + * gcc.target/arm/atomic-op-release.c: Likewise. + * gcc.target/arm/atomic-op-seq_cst.c: Likewise. + * gcc.target/arm/atomic-op-short.c: Likewise. + +2013-03-25 Richard Biener + + PR middle-end/56694 + * g++.dg/torture/pr56694.C: New testcase. + +2013-03-25 Kyrylo Tkachov + + PR target/56720 + * gcc.target/arm/neon-vcond-gt.c: New test. + * gcc.target/arm/neon-vcond-ltgt.c: Likewise. + * gcc.target/arm/neon-vcond-unordered.c: Likewise. + +2013-03-25 Richard Biener + + PR tree-optimization/56689 + * gcc.dg/torture/pr56689.c: New testcase. + +2013-03-25 Kai Tietz + + * g++.dg/torture/20121105-1.C: Adjust for LLP64 targets. + +2013-03-24 Tobias Burnus + + PR fortran/56696 + * gfortran.dg/eof_5.f90: New. + +2013-03-23 Sebastian Huber + + * gcc.c-torture/execute/builtins/builtins.exp: Sort targets + alphabetically. + +2013-03-22 Uros Bizjak + + * gcc.target/i386/pr22152.c (dg-options): Add -mtune=core2. + +2013-03-22 Sebastian Huber + + PR testsuite/55994 + * gcc.c-torture/execute/builtins/builtins.exp: Add + -Wl,--allow-multiple-definition for RTEMS targets. + +2013-03-22 Ian Bolton + + * gcc.target/aarch64/movk.c: New test. + +2013-03-21 Marc Glisse + + * g++.dg/ext/vector21.C: New testcase. + +2013-03-21 Christophe Lyon + + * gcc.target/arm/neon-for-64bits-1.c: New tests. + * gcc.target/arm/neon-for-64bits-2.c: Likewise. + +2013-03-21 Richard Biener + + * gcc.dg/vect/vect-outer-3a-big-array.c: Adjust. + * gcc.dg/vect/vect-outer-3a.c: Likewise. + +2013-03-21 Naveen H.S + + * gcc.target/aarch64/vect.c: Test and result vector added + for sabd and saba instructions. + * gcc.target/aarch64/vect-compile.c: Check for sabd and saba + instructions in assembly. + * gcc.target/aarch64/vect.x: Add sabd and saba test functions. + * gcc.target/aarch64/vect-fp.c: Test and result vector added + for fabd instruction. + * gcc.target/aarch64/vect-fp-compile.c: Check for fabd + instruction in assembly. + * gcc.target/aarch64/vect-fp.x: Add fabd test function. + +2013-03-20 Jeff Law + + * g++.dg/tree-ssa/ssa-dom.C: New test. + +2013-03-20 Michael Meissner + + * gcc.target/powerpc/mmfpgpr.c: New test. + * gcc.target/powerpc/sd-vsx.c: Likewise. + * gcc.target/powerpc/sd-pwr6.c: Likewise. + * gcc.target/powerpc/vsx-float0.c: Likewise. + +2013-03-20 Marc Glisse + + PR tree-optimization/56355 + * gcc.dg/pr56355-1.c: New file. + +2013-03-20 Catherine Moore + Richard Sandiford + + * gcc.target/mips/mips.exp: Add microMIPS support. + * gcc.target/mips/umips-movep-2.c: New test. + * gcc.target/mips/umips-lwp-2.c: New test. + * gcc.target/mips/umips-swp-5.c: New test. + * gcc.target/mips/umips-constraints-1.c: New test. + * gcc.target/mips/umips-lwp-3.c: New test. + * gcc.target/mips/umips-swp-6.c: New test. + * gcc.target/mips/umips-constraints-2.c: New test. + * gcc.target/mips/umips-save-restore-1.c: New test. + * gcc.target/mips/umips-lwp-4.c: New test. + * gcc.target/mips/umips-swp-7.c: New test. + * gcc.target/mips/umips-save-restore-2.c: New test. + * gcc.target/mips/umips-lwp-swp-volatile.c: New test. + * gcc.target/mips/umips-lwp-5.c: New test. + * gcc.target/mips/umips-save-restore-3.c: New test. + * gcc.target/mips/umips-lwp-6.c: New test. + * gcc.target/mips/umips-swp-1.c: New test. + * gcc.target/mips/umips-lwp-7.c: New test. + * gcc.target/mips/umips-swp-2.c: New test. + * gcc.target/mips/umips-lwp-8.c: New test. + * gcc.target/mips/umips-swp-3.c: New test. + * gcc.target/mips/umips-movep-1.c: New test. + * gcc.target/mips/umips-lwp-1.c: New test. + * gcc.target/mips/umips-swp-4.c: New test. + +2013-03-20 Richard Biener + + PR tree-optimization/56661 + * gcc.dg/torture/pr56661.c: New testcase. + +2013-03-20 Bill Schmidt + + PR rtl-optimization/56605 + * gcc.target/powerpc/pr56605.c: New. + +2013-03-20 Rainer Orth + + PR fortran/54932 + * gfortran.dg/do_1.f90: Don't xfail. + +2013-03-20 Tilo Schwarz + + PR libfortran/51825 + * gfortran.dg/namelist_77.f90: New. + * gfortran.dg/namelist_78.f90: New. + +2013-03-20 Tilo Schwarz + + PR libfortran/48618 + * gfortran.dg/open_negative_unit_1.f90: New. + +2013-03-19 Ian Bolton + + * gcc.target/aarch64/sbc.c: New test. + +2013-03-19 Ian Bolton + + * gcc.target/aarch64/ror.c: New test. + +2013-03-19 Ian Bolton + + * gcc.target/aarch64/extr.c: New test. + +2013-03-19 Richard Biener + + PR tree-optimization/56273 + * gcc.dg/tree-ssa/vrp47.c: Adjust. + * c-c++-common/uninit-17.c: Likewise. + +2013-03-18 Jakub Jelinek + + PR tree-optimization/56635 + * g++.dg/torture/pr56635.C: New test. + +2013-03-18 Richard Biener + + PR tree-optimization/3713 + * g++.dg/ipa/devirt-12.C: New testcase. + +2013-03-18 Jakub Jelinek + + PR c/56566 + * c-c++-common/pr56566.c: New test. + +2013-03-17 Jason Merrill + + * g++.dg/template/abstract-dr337.C: XFAIL. + +2013-03-16 Jakub Jelinek + + PR c++/56607 + * g++.dg/warn/Wdiv-by-zero-2.C: New test. + * c-c++-common/pr56607.c: New test. + +2013-03-16 Paolo Carlini + + PR c++/56582 + * g++.dg/cpp0x/constexpr-array5.C: New. + +2013-03-15 Tobias Burnus + + PR fortran/56615 + * gfortran.dg/transfer_intrinsic_5.f90: New. + +2013-03-15 Kai Tietz + + * gcc.target/i386/movti.c: Don't test for x64 mingw. + * gcc.target/i386/pr20020-1.c: Likewise. + * gcc.target/i386/pr20020-2.c: Likewise. + * gcc.target/i386/pr20020-3.c: Likewise. + * gcc.target/i386/pr53425-1.c: Likewise. + * gcc.target/i386/pr53425-2.c: Likewise. + * gcc.target/i386/pr55093.c: Likewise. + * gcc.target/i386/pr53907.c: Adjust test for LLP64 targets. + +2013-03-15 Jakub Jelinek + + PR debug/56307 + * gcc.dg/tree-ssa/pr55579.c: Add -fvar-tracking-assignments to + dg-options. Remove 32-bit hppa*-*-hpux* xfail. + +2013-03-14 Jakub Jelinek + + PR tree-optimization/53265 + * gcc.dg/graphite/scop-3.c (toto): Increase array size to avoid + undefined behavior. + * gcc.dg/graphite/id-6.c (test): Likewise. + * gcc.dg/graphite/pr35356-2.c: Adjust regexp patterns to only look for + MIN_EXPR and MAX_EXPR in GIMPLE stmts. + + PR tree-optimization/53265 + * gcc.dg/pr53265.c: New test. + * gcc.dg/torture/pr49518.c: Add -Wno-aggressive-loop-optimizations + to dg-options. + * g++.dg/opt/longbranch2.C (EBCOTLut): Double sizes of a2 and a3 + arrays. + * gcc.dg/tree-ssa/cunroll-10.c (main): Rename to foo. Add argument + n, use it as high bound instead of 4. + +2013-03-13 Oleg Endo + + PR target/49880 + * gcc.target/sh/pr49880-1.c: New. + * gcc.target/sh/pr49880-2.c: New. + * gcc.target/sh/pr49880-3.c: New. + * gcc.target/sh/pr49880-4.c: New. + * gcc.target/sh/pr49880-5.c: New. + +2013-03-13 Paolo Carlini + + * g++.dg/cpp0x/alias-decl-32.C: Remove redundant bits. + +2013-03-13 Richard Biener + + PR tree-optimization/56608 + * gcc.dg/vect/fast-math-bb-slp-call-3.c: New testcase. + +2013-03-13 Paolo Carlini + + PR c++/56611 + * g++.dg/cpp0x/alias-decl-32.C: New. + +2013-03-11 Jan Hubicka + + PR middle-end/56571 + * gcc.c-torture/compile/pr56571.c: New testcase. + +2013-03-11 John David Anglin + + * gcc.dg/tree-ssa/vector-4.c: Add comment regarding xfail. + * gcc.dg/tree-ssa/pr55579.c: Likewise. + +2013-03-11 Dominique d'Humieres + + * gcc.dg/inline_3.c: Remove target and dg-excess-errors. + * gcc.dg/inline_4.c: Likewise. + * gcc.dg/unroll_2.c: Likewise. + * gcc.dg/unroll_3.c: Likewise. + * gcc.dg/unroll_4.c: Likewise. + +2013-03-10 John David Anglin + + PR testsuite/54119 + * gcc.dg/tree-ssa/vector-4.c: xfail on 32-bit hppa*-*-*. + + PR debug/56307 + * gcc.dg/tree-ssa/pr55579.c: xfail 32-bit hppa*-*-hpux*. + +2013-03-11 Oleg Endo + + PR target/40797 + * gcc.c-torture/compile/pr40797.c: New. + +2013-03-10 John David Anglin + + * gcc.dg/pr44194-1.c: Skip compilation on hppa*64*-*-*. + +2013-03-10 Paul Thomas + + PR fortran/56575 + * gfortran.dg/class_56.f90: New test. + +2013-03-09 Richard Sandiford + + PR middle-end/56524 + * gcc.target/mips/pr56524.c: New test. + +2013-03-08 Paolo Carlini + + PR c++/56565 + * g++.dg/cpp0x/lambda/lambda-nsdmi2.C: New. + +2013-03-08 Paolo Carlini + + PR c++/51412 + * g++.dg/cpp0x/lambda/lambda-err3.C: New. + +2013-03-08 Marek Polacek + + PR tree-optimization/56478 + * gcc.dg/torture/pr56478.c: New test. + +2013-03-08 Kai Tietz + + * gcc.c-torture/execute/builtins/builtins.exp: Add for mingw + targets linker option --allow-multiple-definition. + + * gcc.dg/pr14092-1.c: Mark intptr_t typedef to use extension. + * gcc.dg/pr24683.c: Avoid warning about casting constant string. + * gcc.dg/pr52549.c: Add LLP64 case. + * gcc.dg/pr53701.c: Use for uintptr_t typedef __UINTPTR_TYPE__. + * gcc.dg/pr56510.c: Adjust for LLP64 targets. + * gcc.dg/torture/pr51071-2.c: Likewise. + * gcc.dg/tree-ssa/vrp72.c: Likewise. + * gcc.dg/tree-ssa/vrp73.c: Likewise. + * gcc.dg/tree-ssa/vrp75.c: Likewise. + * gcc.dg/torture/pr53922.c: Skip test for mingw-targets. + * gcc.dg/weak/weak-1.c: Likewise. + * gcc.dg/weak/weak-2.c: Likewise. + * gcc.dg/weak/weak-3.c: Likewise. + * gcc.dg/weak/weak-4.c: Likewise. + * gcc.dg/weak/weak-5.c: Likewise. + * gcc.dg/weak/weak-15.c: Likewise. + * gcc.dg/weak/weak-16.c: Likewise. + + * c-c++-common/pr54486.c: Skip test for mingw-targets. + +2013-03-07 Jakub Jelinek + + PR tree-optimization/56559 + * gcc.dg/tree-ssa/reassoc-26.c: New test. + +2013-03-07 Andreas Schwab + + * gcc.dg/pr31490.c: Fix last change. + +2013-03-06 Paolo Carlini + + PR c++/56534 + * g++.dg/template/crash115.C: New. + +2013-03-06 Jakub Jelinek + + PR tree-optimization/56539 + * gcc.c-torture/compile/pr56539.c: New test. + +2013-03-06 Kai Tietz + + * gcc.dg/lto/20090914-2_0.c: Skip for mingw and cygwin + targets. + * gcc.dg/lto/20091013-1_1.c: Set x64-mingw as xfail. + * gcc.dg/lto/20091013-1_2.c: Likewise. + * gcc.dg/pr31490.c: Adjust for LLP64 targets. + +2013-03-06 Eric Botcazou + + * gnat.dg/specs/aggr6.ads: New test. + +2013-03-06 Eric Botcazou + + * gnat.dg/loop_optimization15.ad[sb]: New test. + +2013-03-06 Jakub Jelinek + + PR middle-end/56548 + * gcc.dg/pr56548.c: New test. + +2013-03-06 Rainer Orth + + PR debug/53363 + * g++.dg/debug/dwarf2/thunk1.C: Skip on darwin. + +2013-03-06 Jakub Jelinek + + PR c++/56543 + * g++.dg/template/typename20.C: New test. + +2013-03-05 Jakub Jelinek + + PR debug/56510 + * gcc.dg/pr56510.c: New test. + + PR rtl-optimization/56484 + * gcc.c-torture/compile/pr56484.c: New test. + +2013-03-05 Paolo Carlini + + PR c++/56530 + * g++.dg/warn/Wsign-conversion-2.C: New. + +2013-03-05 Richard Biener + + PR tree-optimization/56270 + * gcc.dg/vect/slp-38.c: New testcase. + +2013-03-05 Jakub Jelinek + + PR rtl-optimization/56494 + * gcc.dg/pr56494.c: New test. + +2013-01-04 Eric Botcazou + + * gcc.dg/pr56424.c: New test. + +2013-03-04 Georg-Johann Lay + + * gcc.dg/pr55153.c: Add dg-require-effective-target scheduling. + * gcc.dg/pr56228.c : Skip. + +2013-03-04 Georg-Johann Lay + + PR testsuite/52641 + PR tree-optimization/52631 + * gcc.dg/tree-ssa/pr52631.c: Fix 16-bit int. + +2013-03-03 David Edelsohn + + * gcc.dg/vect/vect-82_64.c: Skip on AIX. + * gcc.dg/vect/vect-83_64.c: Same. + +2013-03-03 Mikael Morin + + PR fortran/56477 + * gfortran.dg/pointer_check_13.f90: New test. + +2013-03-03 Mikael Morin + + PR fortran/54730 + * gfortran.dg/array_constructor_42.f90: New test. + +2013-03-02 Paolo Carlini + + PR c++/52688 + * g++.dg/template/static33.C: New. + * g++.dg/template/static34.C: Likewise. + + PR c++/10291 + * g++.dg/template/static35.C: New. + +2013-03-01 Steve Ellcey + + * gcc.dg/pr56396.c: Require pic support. + +2013-03-01 Richard Biener + + PR tree-optimization/55481 + * gcc.dg/torture/pr56488.c: New testcase. + +2013-02-28 Konstantin Serebryany + Jakub Jelinek + + PR sanitizer/56454 + * g++.dg/asan/default-options-1.C (__asan_default_options): Use + no_sanitize_address attribute rather than no_address_safety_analysis. + * g++.dg/asan/sanitizer_test_utils.h + (ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS): Likewise. + * c-c++-common/asan/attrib-1.c: Test no_sanitize_address attribute + in addition to no_address_safety_analysis. + +2013-02-28 Jason Merrill + + PR c++/56481 + * g++.dg/cpp0x/constexpr-and.C: New. + +2013-02-28 Martin Jambor + + PR tree-optimization/56294 + * g++.dg/debug/pr56294.C: New test. + +2013-02-28 Marcus Shawcroft + + * g++.old-deja/g++.pt/ptrmem6.C(main): Add xfail aarch64*-*-*. + +2013-02-27 Marek Polacek + + PR rtl-optimization/56466 + * gcc.dg/pr56466.c: New test. + +2013-02-28 Naveen H.S + + * gcc.dg/tree-ssa/slsr-1.c: Allow widening multiplications. + * gcc.dg/tree-ssa/slsr-2.c: Likewise. + * gcc.dg/tree-ssa/slsr-3.c: Likewise. + +2013-02-27 Andrey Belevantsev + + PR middle-end/45472 + * gcc.dg/pr45472.c: New test. + +2013-02-26 Marek Polacek + + PR tree-optimization/56426 + * gcc.dg/pr56436.c: New test. + +2013-02-26 Jakub Jelinek + + PR tree-optimization/56448 + * gcc.c-torture/compile/pr56448.c: New test. + + PR tree-optimization/56443 + * gcc.dg/torture/pr56443.c: New test. + +2013-02-25 Richard Biener + + PR tree-optimization/56175 + * gcc.dg/tree-ssa/forwprop-24.c: New testcase. + +2013-02-24 Jakub Jelinek + + PR c++/56403 + * g++.dg/torture/pr56403.C: New test. + +2013-02-25 Catherine Moore + + Revert: + 2013-02-24 Catherine Moore + Richard Sandiford + + * gcc.target/mips/mips.exp: Add microMIPS support. + * gcc.target/mips/umips-movep-2.c: New test. + * gcc.target/mips/umips-lwp-2.c: New test. + * gcc.target/mips/umips-swp-5.c: New test. + * gcc.target/mips/umips-constraints-1.c: New test. + * gcc.target/mips/umips-lwp-3.c: New test. + * gcc.target/mips/umips-swp-6.c: New test. + * gcc.target/mips/umips-constraints-2.c: New test. + * gcc.target/mips/umips-save-restore-1.c: New test. + * gcc.target/mips/umips-lwp-4.c: New test. + * gcc.target/mips/umips-swp-7.c: New test. + * gcc.target/mips/umips-save-restore-2.c: New test. + * gcc.target/mips/umips-lwp-swp-volatile.c: New test. + * gcc.target/mips/umips-lwp-5.c: New test. + * gcc.target/mips/umips-save-restore-3.c: New test. + * gcc.target/mips/umips-lwp-6.c: New test. + * gcc.target/mips/umips-swp-1.c: New test. + * gcc.target/mips/umips-lwp-7.c: New test. + * gcc.target/mips/umips-swp-2.c: New test. + * gcc.target/mips/umips-lwp-8.c: New test. + * gcc.target/mips/umips-swp-3.c: New test. + * gcc.target/mips/umips-movep-1.c: New test. + * gcc.target/mips/umips-lwp-1.c: New test. + * gcc.target/mips/umips-swp-4.c: New test. + +2013-02-24 Catherine Moore + Richard Sandiford + + * gcc.target/mips/mips.exp: Add microMIPS support. + * gcc.target/mips/umips-movep-2.c: New test. + * gcc.target/mips/umips-lwp-2.c: New test. + * gcc.target/mips/umips-swp-5.c: New test. + * gcc.target/mips/umips-constraints-1.c: New test. + * gcc.target/mips/umips-lwp-3.c: New test. + * gcc.target/mips/umips-swp-6.c: New test. + * gcc.target/mips/umips-constraints-2.c: New test. + * gcc.target/mips/umips-save-restore-1.c: New test. + * gcc.target/mips/umips-lwp-4.c: New test. + * gcc.target/mips/umips-swp-7.c: New test. + * gcc.target/mips/umips-save-restore-2.c: New test. + * gcc.target/mips/umips-lwp-swp-volatile.c: New test. + * gcc.target/mips/umips-lwp-5.c: New test. + * gcc.target/mips/umips-save-restore-3.c: New test. + * gcc.target/mips/umips-lwp-6.c: New test. + * gcc.target/mips/umips-swp-1.c: New test. + * gcc.target/mips/umips-lwp-7.c: New test. + * gcc.target/mips/umips-swp-2.c: New test. + * gcc.target/mips/umips-lwp-8.c: New test. + * gcc.target/mips/umips-swp-3.c: New test. + * gcc.target/mips/umips-movep-1.c: New test. + * gcc.target/mips/umips-lwp-1.c: New test. + * gcc.target/mips/umips-swp-4.c: New test. + +2013-02-22 Jakub Jelinek + + PR sanitizer/56393 + * lib/asan-dg.exp (asan_link_flags): Add + -B${gccpath}/libsanitizer/asan/ to flags. + +2013-02-21 Jakub Jelinek + + PR middle-end/56420 + * gcc.dg/torture/pr56420.c: New test. + +2013-02-20 Aldy Hernandez + + PR middle-end/56108 + * gcc.dg/tm/memopt-1.c: Declare functions transaction_safe. + +2013-02-21 Martin Jambor + + PR tree-optimization/56310 + * g++.dg/ipa/pr56310.C: New test. + +2013-02-21 Janus Weil + + PR fortran/56385 + * gfortran.dg/proc_ptr_comp_37.f90: New. + +2013-02-21 Richard Biener + + PR tree-optimization/56415 + Revert + 2013-02-11 Richard Biener + + PR tree-optimization/56273 + * g++.dg/warn/Warray-bounds-6.C: New testcase. + * gcc.dg/tree-ssa/pr21559.c: Adjust. + * gcc.dg/tree-ssa/vrp17.c: Likewise. + * gcc.dg/tree-ssa/vrp18.c: Likewise. + * gcc.dg/tree-ssa/vrp23.c: Likewise. + * gcc.dg/tree-ssa/vrp24.c: Likewise. + +2013-02-21 Marek Polacek + + PR tree-optimization/56398 + * g++.dg/torture/pr56398.C: New test. + +2013-02-21 Jakub Jelinek + + PR inline-asm/56405 + * gcc.c-torture/compile/pr56405.c: New test. + +2013-02-20 Jan Hubicka + + PR tree-optimization/56265 + * g++.dg/ipa/devirt-11.C: New testcase. + +2013-02-20 Richard Biener + + * gcc.dg/tree-ssa/forwprop-8.c: Adjust. + +2013-02-20 Richard Biener + Jakub Jelinek + + PR tree-optimization/56396 + * gcc.dg/pr56396.c: New testcase. + +2013-02-20 Paolo Carlini + + PR c++/56373 + * g++.dg/cpp0x/Wzero-as-null-pointer-constant-2.C: New. + +2013-02-19 Richard Biener + + PR tree-optimization/56384 + * gcc.dg/torture/pr56384.c: New testcase. + +2013-02-19 Jakub Jelinek + + PR tree-optimization/56350 + * gcc.dg/pr56350.c: New test. + + PR tree-optimization/56381 + * g++.dg/opt/pr56381.C: New test. + +2013-02-18 Jakub Jelinek + + PR pch/54117 + * lib/dg-pch.exp (pch-init, pch-finish, + check_effective_target_pch_supported_debug): New procs. + (dg-flags-pch): If $pch_unsupported, make tests UNSUPPORTED. + Likewise if $pch_unsupported_debug and $flags include -g. + Skip FAILs about missing *.gch file if $pch_unsupported_debug + and dg-require-effective-target pch_unsupported_debug. + * g++.dg/pch/pch.exp: Call pch-init and pch-finish. + * objc.dg/pch/pch.exp: Likewise. + * gcc.dg/pch/pch.exp: Likewise. + * gcc.dg/pch/valid-1.c: Add dg-require-effective-target + pch_unsupported_debug. + * gcc.dg/pch/valid-1.hs: Likewise. + * gcc.dg/pch/valid-1b.c: Likewise. + * gcc.dg/pch/valid-1b.hs: Likewise. + +2013-02-18 Richard Biener + + PR tree-optimization/56366 + * gcc.dg/torture/pr56366.c: New testcase. + +2013-02-18 Richard Biener + + PR middle-end/56349 + * gcc.dg/torture/pr56349.c: New testcase. + +2013-02-18 Richard Biener + + PR tree-optimization/56321 + * gcc.dg/torture/pr56321.c: New testcase. + +2013-02-16 Edgar E. Iglesias + + * gcc.dg/20020312-2.c: Define MicroBlaze PIC register + +2013-02-16 Jakub Jelinek + Dodji Seketeli + + PR asan/56330 + * c-c++-common/asan/no-redundant-instrumentation-4.c: New test file. + * c-c++-common/asan/no-redundant-instrumentation-5.c: Likewise. + * c-c++-common/asan/no-redundant-instrumentation-6.c: Likewise. + * c-c++-common/asan/no-redundant-instrumentation-7.c: Likewise. + * c-c++-common/asan/no-redundant-instrumentation-8.c: Likewise. + * c-c++-common/asan/pr56330.c: Likewise. + * c-c++-common/asan/no-redundant-instrumentation-1.c (test1): + Ensure the size argument of __builtin_memcpy is a constant. + +2013-02-15 Jonathan Wakely + Paolo Carlini + + PR c++/51242 + * g++.dg/cpp0x/enum23.C: New. + +2013-02-15 Oleg Endo + + PR target/54685 + * gcc.target/sh/pr54685.c: Fix scanning of not insn. + +2013-02-15 Vladimir Makarov + + PR rtl-optimization/56348 + * gcc.target/i386/pr56348.c: New test. + +2013-02-15 Greta Yorsh + + * gcc.target/arm/interrupt-1.c: Fix for thumb mode. + * gcc.target/arm/interrupt-2.c: Likewise. + +2013-02-15 Tobias Burnus + + PR fortran/56318 + * gfortran.dg/matmul_9.f90: New. + +2013-02-15 Tobias Burnus + + PR fortran/53818 + * gfortran.dg/init_flag_11.f90: New. + +2013-02-14 Rainer Orth + + * gcc.dg/debug/dwarf2/pr53948.c: Allow for more whitespace. + +2013-02-14 Rainer Orth + + * gcc.dg/debug/dwarf2/pr53948.c: Allow for / and ! as comment + characters. + +2013-02-14 Dominique d'Humieres + Tobias Burnus + + PR testsuite/56138 + * gfortran.dg/allocatable_function_7.f90: New. + +2013-02-14 Jakub Jelinek + + * g++.dg/asan/dejagnu-gtest.h: Add multiple inclusion guards. + * asan_globals_test-wrapper.cc: New file. + * g++.dg/asan/asan_test.C: Use asan_globals_test-wrapper.cc + instead of asan_globals_test.cc as dg-additional-sources. + Include asan_mem_test.cc, asan_str_test.cc and asan_oob_test.cc. + * g++.dg/asan/asan_test_utils.h: Synced from upstream. Include + "sanitizer_test_utils.h" instead of + "sanitizer_common/tests/sanitizer_test_utils.h". + * g++.dg/asan/asan_str_test.cc: New file, synced from upstream. + * g++.dg/asan/asan_mem_test.cc: New file, synced from upstream. + * g++.dg/asan/asan_oob_test.cc: New file, synced from upstream. + * g++.dg/asan/asan_globals_test.cc: Synced from upstream. + * g++.dg/asan/asan_test.cc: Synced from upstream. + * g++.dg/asan/sanitizer_test_utils.h: New file, synced from upstream. + +2013-02-14 Dodji Seketeli + + Fix an asan crash + * c-c++-common/asan/memcmp-2.c: New test. + +2013-02-13 Ed Smith-Rowland <3dw4rd@verizon.net> + + PR c++/55582 + * g++.dg/cpp0x/udlit-string-literal.h: New. + * g++.dg/cpp0x/udlit-string-literal.C: New. + +2013-02-13 Sriraman Tallam + + * g++.dg/ext/mv12-aux.C: Add directives to match mv12.C. + +2013-02-13 Vladimir Makarov + + PR target/56184 + * gcc.target/arm/pr56184.C: New test. + +2013-02-13 Jakub Jelinek + + PR c++/56302 + * g++.dg/torture/pr56302.C: New test. + * g++.dg/cpp0x/constexpr-56302.C: New test. + * c-c++-common/pr56302.c: New test. + +2013-02-13 Tobias Burnus + Rainer Orth + + PR fortran/56204 + * gfortran.dg/quad_2.f90: Use "< epsilon" instead of "==". + * gfortran.dg/quad_3.f90: Ditto. + +2013-02-13 Kostya Serebryany + + * c-c++-common/asan/strncpy-overflow-1.c: Update the test + to match the fresh asan run-time. + * c-c++-common/asan/rlimit-mmap-test-1.c: Ditto. + +2013-02-12 Dodji Seketeli + + Avoid instrumenting duplicated memory access in the same basic block + * c-c++-common/asan/no-redundant-instrumentation-1.c: New test. + * c-c++-common/asan/no-redundant-instrumentation-2.c: Likewise. + * c-c++-common/asan/no-redundant-instrumentation-3.c: Likewise. + * c-c++-common/asan/inc.c: Likewise. + +2013-02-12 Vladimir Makarov + + PR inline-asm/56148 + * gcc.target/i386/pr56148.c: New test. + +2013-02-12 Dominique d'Humieres + Tobias Burnus + + PR testsuite/56082 + * gfortran.dg/bind_c_bool_1.f90 (sub): Change kind=4 + to kind=2. + +2013-02-12 Richard Biener + + PR lto/56297 + * gcc.dg/lto/pr56297_0.c: New testcase. + * gcc.dg/lto/pr56297_0.c: Likewise. + +2013-02-12 Janus Weil + + PR fortran/46952 + * gfortran.dg/typebound_deferred_1.f90: New. + +2013-02-12 Jakub Jelinek + + PR rtl-optimization/56151 + * gcc.target/i386/pr56151.c: New test. + +2013-02-11 Sriraman Tallam + + * g++.dg/ext/mv12.C: New test. + * g++.dg/ext/mv12.h: New file. + * g++.dg/ext/mv12-aux.C: New file. + * g++.dg/ext/mv13.C: New test. + +2013-02-11 Sebastian Huber + + * lib/target-supports.exp + (check_effective_target_powerpc_eabi_ok): New. + * gcc.target/powerpc/ppc-eabi.c: Use require effective target + powerpc_eabi_ok. + * gcc.target/powerpc/ppc-sdata-1.c: Likewise. + * gcc.target/powerpc/spe-small-data-2.c: Likewise. Do not run, compile + only. + * gcc.target/powerpc/ppc-sdata-2.c: Add powerpc-*-rtems*. + * gcc.target/powerpc/pr51623.c: Likewise. + * gcc.target/powerpc/ppc-stackalign-1.c: Likewise. + * gcc.target/powerpc/ppc-ldstruct.c: Likewise. + +2013-02-11 Alexander Potapenko + Jack Howarth + Jakub Jelinek + + PR sanitizer/55617 + * g++.dg/asan/pr55617.C: Run on all targets. + +2013-02-11 Uros Bizjak + + PR rtl-optimization/56275 + * gcc.dg/pr56275.c: New test. + +2013-02-11 Richard Biener + + PR tree-optimization/56273 + * gcc.dg/tree-ssa/vrp17.c: Disable tail-merging. + +2013-02-11 Richard Biener + + PR tree-optimization/56264 + * gcc.dg/torture/pr56264.c: New testcase. + +2013-02-11 Richard Biener + + PR tree-optimization/56273 + * g++.dg/warn/Warray-bounds-6.C: New testcase. + * gcc.dg/tree-ssa/pr21559.c: Adjust. + * gcc.dg/tree-ssa/vrp17.c: Likewise. + * gcc.dg/tree-ssa/vrp18.c: Likewise. + * gcc.dg/tree-ssa/vrp23.c: Likewise. + * gcc.dg/tree-ssa/vrp24.c: Likewise. + +2013-02-09 Uros Bizjak + + * g++.dg/asan/asan_test.C: Compile with -D__NO_INLINE__ + for *-*-linux-gnu targets. + * g++.dg/asan/interception-test-1.c: Ditto. + * g++.dg/asan/interception-failure-test-1.C: Ditto. + * g++.dg/asan/interception-malloc-test-1.C: Ditto. + +2013-02-09 Paul Thomas + + PR fortran/55362 + * gfortran.dg/intrinsic_size_4.f90 : New test. + +2013-02-09 Jakub Jelinek + + PR target/56256 + * gcc.target/powerpc/pr56256.c: New test. + +2013-02-08 Ian Lance Taylor + + * lib/go.exp: Load timeout.exp. + +2013-02-08 Vladimir Makarov + + PR rtl-optimization/56246 + * gcc.target/i386/pr56246.c: New test. + +2013-02-08 Jeff Law + + PR debug/53948 + * gcc.dg/debug/dwarf2/pr53948.c: New test. + +2013-02-08 Michael Meissner + + PR target/56043 + * gcc.target/powerpc/vsx-mass-1.c: Only run this test on + powerpc*-*-linux*. + +2013-02-08 Edgar E. Iglesias + + * 20101011-1.c: Add __MICROBLAZE__ exception to set DO_TEST 0 + +2013-02-08 Jakub Jelinek + + PR rtl-optimization/56195 + * gcc.dg/torture/pr56195.c: New test. + +2013-02-08 Mikael Morin + + PR fortran/54107 + * gfortran.dg/recursive_interface_2.f90: New test. + +2013-02-08 Jakub Jelinek + + PR tree-optimization/56250 + * gcc.c-torture/execute/pr56250.c: New test. + +2013-02-08 Georg-Johann Lay + + PR tree-optimization/56064 + * gcc.dg/fixed-point/view-convert-2.c: New test. + +2013-02-08 Michael Matz + + PR tree-optimization/52448 + * gcc.dg/pr52448.c: New test. + +2013-02-08 Richard Biener + + PR middle-end/56181 + * gcc.dg/torture/pr56181.c: New testcase. + +2013-02-08 Georg-Johann Lay + + PR target/54222 + * gcc.target/avr/torture/builtins-4-roundfx.c: New test. + * gcc.target/avr/torture/builtins-5-countlsfx.c: New test. + +2013-02-07 Jakub Jelinek + + PR c++/56241 + * g++.dg/parse/crash61.C: New test. + + PR c++/56239 + * g++.dg/parse/pr56239.C: New test. + + PR c++/56237 + * g++.dg/abi/mangle61.C: New test. + +2013-02-07 Vladimir Makarov + + PR rtl-optimization/56225 + * gcc.target/i386/pr56225.c: New test. + +2013-02-07 Jakub Jelinek + + PR debug/56154 + * gcc.dg/guality/pr56154-1.c: New test. + * gcc.dg/guality/pr56154-2.c: New test. + * gcc.dg/guality/pr56154-3.c: New test. + * gcc.dg/guality/pr56154-4.c: New test. + * gcc.dg/guality/pr56154-aux.c: New file. + + PR tree-optimization/55789 + * g++.dg/ipa/inline-3.C: Use cleanup-ipa-dump instead of + cleanup-tree-dump. + * gcc.dg/tree-ssa/inline-3.c: Add + --param max-early-inliner-iterations=2 option. + +2013-02-07 Rainer Orth + + PR debug/53363 + * g++.dg/debug/dwarf2/thunk1.C: Restrict to 32-bit x86. + Add -fno-dwarf2-cfi-asm to dg-options. + Adapt match count. + +2013-02-07 Jakub Jelinek + + PR target/56228 + * gcc.dg/pr56228.c: New test. + +2013-02-07 Alan Modra + + PR target/54009 + * gcc.target/powerpc/pr54009.c: New test. + PR target/54131 + * gfortran.dg/pr54131.f: New test. + +2013-02-06 Paul Thomas + + PR fortran/55789 + * gfortran.dg/array_constructor_41.f90: New test. + +2013-02-06 Janus Weil + + PR fortran/55978 + * gfortran.dg/class_optional_2.f90: Uncomment some cases which work now. + +2013-02-06 Jakub Jelinek + + PR middle-end/56217 + * g++.dg/gomp/pr56217.C: New test. + +2013-02-05 Jakub Jelinek + + PR tree-optimization/56205 + * gcc.dg/tree-ssa/stdarg-6.c: New test. + * gcc.c-torture/execute/pr56205.c: New test. + +2013-02-05 Richard Biener + + PR tree-optimization/53342 + PR tree-optimization/53185 + * gcc.dg/vect/pr53185-2.c: New testcase. + +2013-02-05 Jan Hubicka + + PR tree-optimization/55789 + * g++.dg/tree-ssa/inline-1.C: Update max-inliner-iterations. + * g++.dg/tree-ssa/inline-2.C: Update max-inliner-iterations. + * g++.dg/tree-ssa/inline-3.C: Update max-inliner-iterations. + * g++.dg/ipa/inline-1.C: New testcase. + * g++.dg/ipa/inline-2.C: New testcase. + * g++.dg/ipa/inline-3.C: New testcase. + +2013-02-05 Jan Hubicka + + PR tree-optimization/55789 + * g++.dg/torture/pr55789.C: New testcase. + +2013-02-05 Jakub Jelinek + + PR middle-end/56167 + * gcc.dg/pr56167.c: New test. + +2013-02-04 Oleg Endo + + PR target/55146 + * gcc.target/sh/pr55146.c: New. + +2013-02-04 Oleg Endo + + PR tree-optimization/54386 + * gcc.target/sh/pr54386.c: New. + +2013-02-04 Paul Thomas + + PR fortran/56008 + * gfortran.dg/realloc_on _assign_16.f90 : New test. + + PR fortran/47517 + * gfortran.dg/realloc_on _assign_17.f90 : New test. + +2013-02-04 Alexander Potapenko + Jack Howarth + Jakub Jelinek + + PR sanitizer/55617 + * g++.dg/asan/pr55617.C: New test. + +2013-02-04 Mikael Morin + + PR fortran/54195 + * gfortran.dg/typebound_operator_19.f90: New test. + * gfortran.dg/typebound_assignment_4.f90: New test. + +2013-02-04 Mikael Morin + + PR fortran/54107 + * gfortran.dg/recursive_interface_1.f90: New test. + +2013-02-04 Richard Guenther + + PR lto/56168 + * gcc.dg/lto/pr56168_0.c: New testcase. + * gcc.dg/lto/pr56168_1.c: Likewise. + +2013-02-02 Thomas Koenig + + PR fortran/50627 + PR fortran/56054 + * gfortran.dg/block_12.f90: New test. + * gfortran.dg/module_error_1.f90: New test. + +2013-02-02 Richard Sandiford + + * lib/target-supports.exp (check_effective_target_vect_float) + (check_effective_target_vect_no_align): Add mips-sde-elf. + +2013-02-01 Jakub Jelinek + + * lib/gcc-dg.exp (restore-target-env-var): Avoid using lreverse. + +2013-02-01 David Edelsohn + + * gcc.dg/pr56023.c: XFAIL on AIX. + * gcc.dg/vect/pr49352.c: Same. + +2013-02-01 Eric Botcazou + + * gnat.dg/opt26.adb: New test. + +2013-01-31 Ramana Radhakrishnan + + Revert. + 2013-01-27 Amol Pise + + * gcc.target/arm/neon-vfnms-1.c: New test. + * gcc.target/arm/neon-vfnma-1.c: New test. + +2013-01-31 Richard Biener + + PR tree-optimization/56157 + * gcc.dg/torture/pr56157.c: New testcase. + +2013-01-30 Richard Biener + + PR tree-optimization/56150 + * gcc.dg/torture/pr56150.c: New testcase. + +2013-01-30 Jakub Jelinek + + PR sanitizer/55374 + * g++.dg/asan/large-func-test-1.C: Allow both _Zna[jm] in addition + to _Znw[jm] in the backtrace. Allow _Zna[jm] to be the first frame + printed in backtrace. + * g++.dg/asan/deep-stack-uaf-1.C: Use malloc instead of operator new + to avoid errors about mismatched allocation vs. deallocation. + + PR c++/55742 + * g++.dg/mv1.C: Moved to... + * g++.dg/ext/mv1.C: ... here. Adjust test. + * g++.dg/mv2.C: Moved to... + * g++.dg/ext/mv2.C: ... here. Adjust test. + * g++.dg/mv3.C: Moved to... + * g++.dg/ext/mv3.C: ... here. + * g++.dg/mv4.C: Moved to... + * g++.dg/ext/mv4.C: ... here. + * g++.dg/mv5.C: Moved to... + * g++.dg/ext/mv5.C: ... here. Adjust test. + * g++.dg/mv6.C: Moved to... + * g++.dg/ext/mv6.C: ... here. Adjust test. + * g++.dg/ext/mv7.C: New test. + * g++.dg/ext/mv8.C: New test. + * g++.dg/ext/mv9.C: New test. + * g++.dg/ext/mv10.C: New test. + * g++.dg/ext/mv11.C: New test. + +2013-01-30 Vladimir Makarov + + PR rtl-optimization/56144 + * gcc.dg/pr56144.c: New. + +2013-01-30 David Edelsohn + + * g++.dg/cpp0x/constexpr-53094-2.C: Ignore non-standard ABI + message. + * g++.dg/cpp0x/constexpr-53094-3.C: Same. + * g++.dg/cpp0x/constexpr-55573.C: Same + +2013-01-30 Georg-Johann Lay + + PR tree-optimization/56064 + * gcc.dg/fixed-point/view-convert.c: New test. + +2013-01-30 Andreas Schwab + + * lib/target-supports-dg.exp (dg-process-target): Use expr to + evaluate the end index in string range. + +2013-01-30 Tobias Burnus + + PR fortran/56138 + * gfortran.dg/allocatable_function_6.f90: New. + +2013-01-29 Janus Weil + Mikael Morin + + PR fortran/54107 + * gfortran.dg/proc_ptr_comp_36.f90: New. + +2013-01-29 Richard Biener + + PR tree-optimization/55270 + * gcc.dg/torture/pr55270.c: New testcase. + +2013-01-28 Jakub Jelinek + + PR rtl-optimization/56117 + * gcc.dg/pr56117.c: New test. + +2013-01-28 Richard Biener + + PR tree-optimization/56034 + * gcc.dg/torture/pr56034.c: New testcase. + +2013-01-28 Jakub Jelinek + + PR tree-optimization/56125 + * gcc.dg/pr56125.c: New test. + +2013-01-28 Tobias Burnus + Mikael Morin + + PR fortran/53537 + * gfortran.dg/import2.f90: Adjust undeclared type error messages. + * gfortran.dg/import8.f90: Likewise. + * gfortran.dg/interface_derived_type_1.f90: Likewise. + * gfortran.dg/import10.f90: New test. + * gfortran.dg/import11.f90: Likewise + +2013-01-28 Jakub Jelinek + + PR testsuite/56053 + * c-c++-common/asan/heap-overflow-1.c: Don't include stdlib.h and + string.h. Provide memset, malloc and free prototypes, adjust line + numbers in dg-output. + * c-c++-common/asan/stack-overflow-1.c: Don't include string.h. + Provide memset prototype and adjust line numbers in dg-output. + * c-c++-common/asan/global-overflow-1.c: Likewise. + + PR tree-optimization/56094 + * gcc.dg/pr56094.c: New test. + +2013-01-27 Amol Pise + + * gcc.target/arm/neon-vfnms-1.c: New test. + * gcc.target/arm/neon-vfnma-1.c: New test. + +2013-01-27 Uros Bizjak + + PR target/56114 + * gcc.target/i386/pr56114.c: New test. + +2013-01-27 Paul Thomas + + PR fortran/55984 + * gfortran.dg/associate_14.f90: New test. + + PR fortran/56047 + * gfortran.dg/associate_13.f90: New test. + +2013-01-25 Jakub Jelinek + + PR tree-optimization/56098 + * gcc.dg/pr56098-1.c: New test. + * gcc.dg/pr56098-2.c: New test. + +2013-01-25 Georg-Johann Lay + + PR target/54222 + * gcc.target/avr/torture/builtins-3-absfx.c: New test. + +2013-01-22 Marek Polacek + + PR tree-optimization/56035 + * gcc.dg/pr56035.c: New test. + +2013-01-24 Richard Sandiford + + * gfortran.dg/bind_c_array_params_2.f90: Require -mno-relax-pic-calls + for MIPS. + +2013-01-24 Richard Sandiford + + * gcc.target/mips/octeon-pipe-1.c: Add -ffat-lto-objects + +2013-01-24 Jakub Jelinek + + PR c/56078 + * gcc.dg/pr56078.c: New test. + * gcc.c-torture/compile/20030305-1.c: Add dg-error lines. + +2013-01-24 Martin Jambor + + PR tree-optimization/55927 + * g++.dg/ipa/devirt-10.C: Disable early inlining. + +2013-01-24 Uros Bizjak + + * gcc.target/i386/movsd.c: New test. + +2013-01-24 Steven Bosscher + + PR inline-asm/55934 + * gcc.target/i386/pr55934.c: New test. + +2013-01-23 Janus Weil + + PR fortran/56081 + * gfortran.dg/select_8.f90: New. + +2013-01-23 David Holsgrove + + * gcc.target/microblaze/microblaze.exp: Remove + target_config_cflags check. + +2013-01-23 Jakub Jelinek + + PR fortran/56052 + * gfortran.dg/gomp/pr56052.f90: New test. + + PR target/49069 + * gcc.dg/pr49069.c: New test. + +2013-01-22 Paolo Carlini + + PR c++/55944 + * g++.dg/cpp0x/constexpr-static10.C: New. + +2013-01-22 Uros Bizjak + + PR target/56028 + * gcc.target/i386/pr56028.c: New test. + +2013-01-22 Jakub Jelinek + + PR target/55686 + * gcc.target/i386/pr55686.c: New test. + +2013-01-22 Dodji Seketeli + + PR c++/53609 + * g++.dg/cpp0x/variadic139.C: New test. + * g++.dg/cpp0x/variadic140.C: Likewise. + * g++.dg/cpp0x/variadic141.C: Likewise. + +2013-01-22 Eric Botcazou + + * gnat.dg/warn8.adb: New test. + +2013-01-21 Thomas Koenig + + PR fortran/55919 + * gfortran.dg/include_8.f90: New test. + +2013-01-21 Uros Bizjak + + * gcc.dg/tree-ssa/pr55579.c: Cleanup esra tree dump. + * gfortran.dg/unlimited_polymorphic_8.f90: Cleanup original tree dump. + +2013-01-21 Jakub Jelinek + + PR tree-optimization/56051 + * gcc.c-torture/execute/pr56051.c: New test. + +2013-01-21 Uros Bizjak + + PR rtl-optimization/56023 + * gcc.dg/pr56023.c: New test. + +2013-01-21 Martin Jambor + + PR middle-end/56022 + * gcc.target/i386/pr56022.c: New test. + +2013-01-21 Jason Merrill + + * lib/target-supports.exp (check_effective_target_alias): New. + +2013-01-20 Jack Howarth + + PR debug/53235 + * g++.dg/debug/dwarf2/nested-4.C: XFAIL on darwin. + +2013-01-20 Hans-Peter Nilsson + + * gfortran.dg/inquire_10.f90: Run only for non-newlib targets. + +2013-01-19 Jeff Law + + PR tree-optimization/52631 + * tree-ssa/pr52631.c: New test. + * tree-ssa/ssa-fre-9: Update expected output. + +2013-01-19 Anthony Green + + * gcc.dg/tree-ssa/asm-2.c (REGISTER): Pick an appropriate register + for moxie. + +2013-01-18 Jakub Jelinek + + PR tree-optimization/56029 + * g++.dg/torture/pr56029.C: New test. + +2013-01-18 Sharad Singhai + + PR tree-optimization/55995 + * gcc.dg/vect/vect.exp: Use "details" flags for dump info. + +2013-01-18 Vladimir Makarov + + PR target/55433 + * gcc.target/i386/pr55433.c: New. + +2013-01-18 Jakub Jelinek + + PR middle-end/56015 + * gfortran.dg/pr56015.f90: New test. + +2013-01-18 Janis Johnson + + * gcc.dg/vect/vect-multitypes-12.c: Refactor dg-final directive. + +2013-01-18 James Greenhalgh + + * gcc.target/aarch64/vect-fcm-gt-f.c: Change expected output. + * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise. + * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise. + * gcc.target/aarch64/vect-fcm-ge-d.c: Likewise. + * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise. + +2013-01-17 Jeff Law + + * gcc.dg/pr52573.c: Move to... + * gcc.target/m68k/pr52573.c: Here. Eliminate target selector. + + PR rtl-optimization/52573 + * gcc.dg/pr52573.c: New test. + +2013-01-17 Jack Howarth + + PR sanitizer/55679 + * g++.dg/asan/interception-test-1.C: Skip on darwin. + * lib/target-supports.exp (check_effective_target_swapcontext): Use + check_no_compiler_messages to test support in ucontext.h. + (check_effective_target_setrlimit): Return 0 for Darwin's non-posix + compliant RLIMIT_AS. + +2013-01-17 Marek Polacek + + PR rtl-optimization/55833 + * gcc.dg/pr55833.c: New test. + +2013-01-17 Jan Hubicka + + PR tree-optimization/55273 + * gcc.c-torture/compile/pr55273.c: New testcase. + +2013-01-17 Uros Bizjak + + PR target/55981 + * gcc.target/pr55981.c: New test. + +2013-01-17 Janis Johnson + + * gcc.target/arm/pr40887.c: Require at least armv5. + * gcc.target/arm/pr51835.c: Avoid conflicts with multilib flags. + * gcc.target/arm/pr51915.c: Likewise. + * gcc.target/arm/pr52006.c: Likewise. + * gcc.target/arm/pr53187.c: Likewise. + + * gcc.target/arm/ftest-support.h: Replace for compile-only tests. + * gcc.target/arm/ftest-support-arm.h: Delete. + * gcc.target/arm/ftest-support-thumb.h: Delete. + * gcc.target/arm/ftest-armv4-arm.c: Replace with compile-only test. + * gcc.target/arm/ftest-armv4t-arm.c: Likewise. + * gcc.target/arm/ftest-armv4t-thumb.c: Likewise. + * gcc.target/arm/ftest-armv5t-arm.c: Likewise. + * gcc.target/arm/ftest-armv5t-thumb.c: Likewise. + * gcc.target/arm/ftest-armv5te-arm.c: Likewise. + * gcc.target/arm/ftest-armv5te-thumb.c: Likewise. + * gcc.target/arm/ftest-armv6-arm.c: Likewise. + * gcc.target/arm/ftest-armv6-thumb.c: Likewise. + * gcc.target/arm/ftest-armv6k-arm.c: Likewise. + * gcc.target/arm/ftest-armv6k-thumb.c: Likewise. + * gcc.target/arm/ftest-armv6m-thumb.c: Likewise. + * gcc.target/arm/ftest-armv6t2-arm.c: Likewise. + * gcc.target/arm/ftest-armv6t2-thumb.c: Likewise. + * gcc.target/arm/ftest-armv6z-arm.c: Likewise. + * gcc.target/arm/ftest-armv6z-thumb.c: Likewise. + * gcc.target/arm/ftest-armv7a-arm.c: Likewise. + * gcc.target/arm/ftest-armv7a-thumb.c: Likewise. + * gcc.target/arm/ftest-armv7em-thumb.c: Likewise. + * gcc.target/arm/ftest-armv7m-thumb.c: Likewise. + * gcc.target/arm/ftest-armv7r-arm.c: Likewise. + * gcc.target/arm/ftest-armv7r-thumb.c: Likewise. + * gcc.target/arm/ftest-armv8a-arm.c: Likewise. + * gcc.target/arm/ftest-armv8a-thumb.c: Likewise. + +2013-01-17 Martin Jambor + + PR tree-optimizations/55264 + * g++.dg/ipa/pr55264.C: New test. + +2013-01-16 Janus Weil + + PR fortran/55983 + * gfortran.dg/class_55.f90: New. + +2013-01-16 Janis Johnson + + PR testsuite/55994 + * gcc.c-torture/execute/builtins/builtins.exp: Add + -Wl,--allow-multiple-definition for eabi and elf targets. + + PR testsuite/54622 + * lib/target-supports.exp (check_effective_target_vect_perm_byte, + check_effective_target_vect_perm_short, + check_effective_target_vect_widen_mult_qi_to_hi_pattern, + check_effective_target_vect64): Return 0 for big-endian ARM. + (check_effective_target_vect_widen_sum_qi_to_hi): Return 1 for ARM. + + * gcc.target/arm/neon-vld1_dupQ.c: Use types that match function + prototypes. + +2013-01-16 Richard Biener + + PR tree-optimization/55964 + * gcc.dg/torture/pr55964.c: New testcase. + +2013-01-16 Richard Biener + + PR tree-optimization/54767 + PR tree-optimization/53465 + * gfortran.fortran-torture/execute/pr54767.f90: New testcase. + +2013-01-16 Christian Bruel + + PR target/55301 + * gcc.target/sh/sh-switch.c: New testcase. + +2013-01-15 Janis Johnson + + * gcc.dg/webizer.c: Increase the array size. + +2013-01-15 Jakub Jelinek + + PR target/55940 + * gcc.dg/pr55940.c: New test. + +2013-01-15 Manfred Schwarb + Harald Anlauf + + * gfortran.dg/bounds_check_4.f90: Add dg-options "-fbounds-check". + * gfortran.dg/bounds_check_5.f90: Likewise. + * gfortran.dg/class_array_10.f03: Fix syntax of dg-directive. + * gfortran.dg/continuation_9.f90: Likewise. + * gfortran.dg/move_alloc_13.f90: Likewise. + * gfortran.dg/structure_constructor_11.f90: Likewise. + * gfortran.dg/tab_continuation.f: Likewise. + * gfortran.dg/warning-directive-2.F90: Likewise. + * gfortran.dg/coarray_lib_token_4.f90: Remove misspelled directive. + +2013-01-15 Janis Johnson + + * gcc.target/arm/fma.c: Skip for conflicting multilib options. + * gcc.target/arm/fma-sp.c: Likewise. + +2013-01-15 Vladimir Makarov + + PR rtl-optimization/55153 + * gcc.dg/pr55153.c: New. + +2013-01-15 Jakub Jelinek + + PR tree-optimization/55920 + * gcc.c-torture/compile/pr55920.c: New test. + +2013-01-15 Richard Biener + + PR middle-end/55882 + * gcc.dg/torture/pr55882.c: New testcase. + +2013-01-15 Jakub Jelinek + + PR tree-optimization/55955 + * gcc.c-torture/compile/pr55955.c: New test. + +2013-01-15 Dodji Seketeli + + PR c++/55663 + * g++.dg/cpp0x/alias-decl-31.C: New test. + +2013-01-15 Paul Thomas + + PR fortran/54286 + * gfortran.dg/proc_ptr_result_8.f90 : Add module 'm' to check + case where interface is null. + +2013-01-14 Thomas Koenig + + PR fortran/55806 + * gfortran.dg/array_constructor_40.f90: New test. + +2013-01-14 Richard Sandiford + + * gcc.dg/tree-ssa/slsr-8.c: Allow widening multiplications. + +2013-01-14 Tejas Belagod + + * gcc.target/aarch64/aarch64/vect-ld1r-compile-fp.c: New. + * gcc.target/aarch64/vect-ld1r-compile.c: New. + * gcc.target/aarch64/vect-ld1r-fp.c: New. + * gcc.target/aarch64/vect-ld1r.c: New. + * gcc.target/aarch64/vect-ld1r.x: New. + +2013-01-14 Andi Kleen + + PR target/55948 + * gcc.target/i386/hle-clear-rel.c: New file + * gcc.target/i386/hle-store-rel.c: New file. + +2013-01-14 Harald Anlauf + + * gfortran.dg/aint_anint_1.f90: Add dg-do run. + * gfortran.dg/bounds_check_4.f90: Likewise. + * gfortran.dg/inquire_10.f90: Likewise. + * gfortran.dg/minloc_3.f90: Likewise. + * gfortran.dg/minlocval_3.f90: Likewise. + * gfortran.dg/module_double_reuse.f90: Likewise. + * gfortran.dg/mvbits_1.f90: Likewise. + * gfortran.dg/oldstyle_1.f90: Likewise. + * gfortran.dg/pr20163-2.f: Likewise. + * gfortran.dg/save_1.f90: Likewise. + * gfortran.dg/scan_1.f90: Likewise. + * gfortran.dg/select_char_1.f90: Likewise. + * gfortran.dg/shape_4.f90: Likewise. + * gfortran.dg/coarray_29_2.f90: Fix dg-do directive. + * gfortran.dg/function_optimize_10.f90: Likewise. + * gfortran.dg/gomp/appendix-a/a.11.2.f90: Likewise. + * gfortran.dg/used_types_17.f90: Likewise. + * gfortran.dg/used_types_18.f90: Likewise. + +2013-01-13 Paul Thomas + + PR fortran/54286 + * gfortran.dg/proc_ptr_result_8.f90 : New test. + +2013-01-13 Richard Sandiford + + * gcc.dg/unroll_5.c: Add nomips16 attributes. + +2013-01-13 Richard Sandiford + + * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Update expected results for MIPS. + +2013-01-12 Janus Weil + + PR fortran/55072 + * gfortran.dg/assumed_type_2.f90: Fix test case. + * gfortran.dg/internal_pack_13.f90: New test. + * gfortran.dg/internal_pack_14.f90: New test. + +2013-01-08 Paul Thomas + + PR fortran/55868 + * gfortran.dg/unlimited_polymorphic_8.f90: Update + scan-tree-dump-times for foo.0.x._vptr to deal with change from + $tar to STAR. + +2013-01-11 Andreas Schwab + + * gcc.c-torture/compile/pr55921.c: Don't use matching constraints. + +2013-01-11 Andreas Krebbel + + PR target/55719 + * gcc.target/s390/pr55719.c: New testcase. + +2013-01-11 Richard Guenther + + PR tree-optimization/44061 + * gcc.dg/pr44061.c: New testcase. + +2013-01-10 Richard Sandiford + + Update copyright years. + +2013-01-10 Aldy Hernandez + Jakub Jelinek + + PR target/55565 + * gcc.target/powerpc/ppc-mov-1.c: Update scan-assembler-not regex. + +2013-01-10 Vladimir Makarov + + PR rtl-optimization/55672 + * gcc.target/i386/pr55672.c: New. + +2013-01-10 Jeff Law + + * gcc/dg/tree-ssa/vrp06.c: Tighten expected output. Make each + pass/fail message unique. + + +2013-01-10 Jason Merrill + + * ada/.gitignore: New. + +2013-01-10 Rainer Orth + + * g++.dg/tls/thread_local-cse.C: Don't xfail on *-*-solaris2.9. + Add tls options. + * g++.dg/tls/thread_local2.C: Likewise. + * g++.dg/tls/thread_local2g.C: Likewise. + * g++.dg/tls/thread_local6.C: Likewise. + * g++.dg/tls/thread_local-order1.C: Add tls options. + * g++.dg/tls/thread_local-order2.C: Likewise. + * g++.dg/tls/thread_local3.C: Likewise. + * g++.dg/tls/thread_local3g.C: Likewise. + * g++.dg/tls/thread_local4.C: Likewise. + * g++.dg/tls/thread_local4g.C: Likewise. + * g++.dg/tls/thread_local5.C: Likewise. + * g++.dg/tls/thread_local5g.C: Likewise. + * g++.dg/tls/thread_local6g.C: Likewise. + +2013-01-10 Kostya Serebryany + + * g++.dg/asan/asan_test.cc: Sync from upstream. + +2013-01-10 Jakub Jelinek + + PR tree-optimization/55921 + * gcc.c-torture/compile/pr55921.c: New test. + +2013-01-09 Jan Hubicka + + PR tree-optimization/55569 + * gcc.c-torture/compile/pr55569.c: New testcase. + +2013-01-09 Mikael Morin + + PR fortran/47203 + * gfortran.dg/use_28.f90: New test. + +2013-01-09 Uros Bizjak + + * gfortran.dg/intrinsic_size_3.f90: Make scan-tree-dump-times + number matching more robust. + +2013-01-09 Vladimir Makarov + + PR rtl-optimization/55829 + * gcc.target/i386/pr55829.c: New. + +2013-01-09 Tobias Burnus + + PR fortran/55758 + * gfortran.dg/bind_c_bool_1.f90: New. + * gfortran.dg/do_5.f90: Add dg-warning. + +2013-01-09 Jan Hubicka + + PR tree-optimization/55875 + * gcc.c-torture/execute/pr55875.c: New testcase. + * g++.dg/torture/pr55875.C: New testcase. + +2013-01-09 Jakub Jelinek + + PR c/48418 + * c-c++-common/pr48418.c: New test. + +2013-01-09 Paolo Carlini + + PR c++/55801 + * g++.dg/tls/thread_local-ice.C: New. + +2013-01-09 Andreas Schwab + + * gcc.dg/guality/pr54693.c: Null-terminate arr. + +2013-01-09 Jakub Jelinek + + PR tree-optimization/48189 + * gcc.dg/pr48189.c: New test. + +2013-01-04 Jan Hubicka + + PR tree-optimization/55823 + * g++.dg/ipa/devirt-10.C: New testcase. + +2013-01-08 Uros Bizjak + Vladimir Yakovlev + + PR rtl-optimization/55845 + * gcc.target/i386/pr55845.c: New test. + +2013-01-08 Tejas Belagod + + * gcc.target/aarch64/vect-mull-compile.c: Explicitly scan for + instructions generated instead of number of occurances. + +2013-01-08 James Greenhalgh + + * gcc.target/aarch64/vect-fcm-eq-d.c: New. + * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise. + * gcc.target/aarch64/vect-fcm-ge-d.c: Likewise. + * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise. + * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise. + * gcc.target/aarch64/vect-fcm-gt-f.c: Likewise. + * gcc.target/aarch64/vect-fcm.x: Likewise. + * lib/target-supports.exp + (check_effective_target_vect_cond): Enable for AArch64. + +2013-01-08 James Greenhalgh + + * gcc.target/aarch64/vsqrt.c (test_square_root_v2sf): Use + endian-safe float pool loading. + (test_square_root_v4sf): Likewise. + (test_square_root_v2df): Likewise. + * lib/target-supports.exp + (check_effective_target_vect_call_sqrtf): Add AArch64. + +2013-01-08 Martin Jambor + + PR debug/55579 + * gcc.dg/tree-ssa/pr55579.c: New test. + +2013-01-08 Rainer Orth + + * g++.dg/debug/dwarf2/pr54508.C: Allow for more whitespace after + asm comments. + +2013-01-08 Jakub Jelinek + + PR middle-end/55890 + * gcc.dg/torture/pr55890-3.c: New test. + + PR middle-end/55851 + * gcc.c-torture/compile/pr55851.c: New test. + + PR sanitizer/55844 + * c-c++-common/asan/null-deref-1.c: Add -fno-shrink-wrap to + dg-options. + +2013-01-08 Paul Thomas + + PR fortran/55618 + * gfortran.dg/elemental_scalar_args_2.f90: New test. + +2013-01-07 Tobias Burnus + + PR fortran/55763 + * gfortran.dg/pointer_init_2.f90: Update dg-error. + * gfortran.dg/pointer_init_7.f90: New. + +2013-01-07 Richard Biener + + * gcc.dg/lto/pr55525_0.c (s): Size like char *. + +2013-01-07 Richard Biener + + PR middle-end/55890 + * gcc.dg/torture/pr55890-1.c: New testcase. + * gcc.dg/torture/pr55890-2.c: Likewise. + +2013-01-07 James Greenhalgh + + * gcc.target/aarch64/fmovd.c: New. + * gcc.target/aarch64/fmovf.c: Likewise. + * gcc.target/aarch64/fmovd-zero.c: Likewise. + * gcc.target/aarch64/fmovf-zero.c: Likewise. + * gcc.target/aarch64/vect-fmovd.c: Likewise. + * gcc.target/aarch64/vect-fmovf.c: Likewise. + * gcc.target/aarch64/vect-fmovd-zero.c: Likewise. + * gcc.target/aarch64/vect-fmovf-zero.c: Likewise. + +2013-01-07 Richard Biener + + PR tree-optimization/55888 + PR tree-optimization/55862 + * gcc.dg/torture/pr55888.c: New testcase. + +2013-01-07 Tobias Burnus + + PR fortran/55852 + * gfortran.dg/intrinsic_size_3.f90: New. + +2013-01-07 Tobias Burnus + + PR fortran/55763 + * gfortran.dg/select_type_32.f90: New. + +2013-01-04 Dodji Seketeli + + PR c++/52343 + * g++.dg/cpp0x/alias-decl-29.C: New test. + +2013-01-06 Paul Thomas + + PR fortran/53876 + PR fortran/54990 + PR fortran/54992 + * gfortran.dg/class_array_15.f03: New test. + +2013-01-06 Mikael Morin + + PR fortran/42769 + PR fortran/45836 + PR fortran/45900 + * gfortran.dg/use_23.f90: New test. + * gfortran.dg/use_24.f90: New test. + * gfortran.dg/use_25.f90: New test. + * gfortran.dg/use_26.f90: New test. + * gfortran.dg/use_27.f90: New test. + +2013-01-06 Olivier Hainque + + * gnat.dg/specs/clause_on_volatile.ads: New test. + +2013-01-06 Eric Botcazou + + * gnat.dg/alignment10.adb: New test. + +2013-01-05 Steven G. Kargl + Mikael Morin + + PR fortran/55827 + * gfortran.dg/use_22.f90: New test. + +2013-01-04 Andrew Pinski + + * gcc.target/aarch64/cmp-1.c: New testcase. + +2013-01-04 Paul Thomas + + PR fortran/55172 + * gfortran.dg/select_type_31.f03: New test. + +2013-01-04 Paolo Carlini + + PR c++/54526 (again) + * g++.dg/cpp0x/parse2.C: Extend. + * g++.old-deja/g++.other/crash28.C: Adjust. + +2013-01-04 Richard Biener + + PR tree-optimization/55862 + * gcc.dg/torture/pr55862.c: New testcase. + +2013-01-04 Martin Jambor + + PR tree-optimization/55755 + * gcc.dg/torture/pr55755.c: New test. + * gcc.dg/tree-ssa/sra-13.c: Likewise. + * gcc.dg/tree-ssa/pr45144.c: Update. + +2013-01-04 Richard Biener + + PR middle-end/55863 + * gcc.dg/fold-reassoc-2.c: New testcase. + +2013-01-04 Tobias Burnus + + PR fortran/55763 + * gfortran.dg/null_7.f90: New. + +2013-01-04 Tobias Burnus + + PR fortran/55854 + PR fortran/55763 + * gfortran.dg/unlimited_polymorphic_3.f03: Remove invalid code. + * gfortran.dg/unlimited_polymorphic_7.f90: New. + * gfortran.dg/unlimited_polymorphic_8.f90: New. + +2013-01-03 Richard Sandiford + + * gcc.dg/torture/tls/tls-reload-1.c (main): Make testing more thorough. + +2013-01-03 Janus Weil + + PR fortran/55855 + * gfortran.dg/assignment_1.f90: Modified. + * gfortran.dg/assignment_4.f90: New. + +2013-01-03 David Edelsohn + + * gcc.dg/torture/tls/tls-reload-1.c: Add tls options. + +2013-01-03 Richard Biener + + PR tree-optimization/55857 + * gcc.dg/vect/pr55857-1.c: New testcase. + * gcc.dg/vect/pr55857-2.c: Likewise. + +2013-01-03 Jakub Jelinek + + PR rtl-optimization/55838 + * gcc.dg/pr55838.c: New test. + + PR tree-optimization/55832 + * gcc.c-torture/compile/pr55832.c: New test. + +2013-01-02 Teresa Johnson + + * gcc.dg/tree-ssa/loop-1.c: Update expected dump message. + * gcc.dg/tree-ssa/loop-23.c: Ditto. + * gcc.dg/tree-ssa/cunroll-1.c: Ditto. + * gcc.dg/tree-ssa/cunroll-2.c: Ditto. + * gcc.dg/tree-ssa/cunroll-3.c: Ditto. + * gcc.dg/tree-ssa/cunroll-4.c: Ditto. + * gcc.dg/tree-ssa/cunroll-5.c: Ditto. + * gcc.dg/unroll_1.c: Ditto. + * gcc.dg/unroll_2.c: Ditto. + * gcc.dg/unroll_3.c: Ditto. + * gcc.dg/unroll_4.c: Ditto. + +2013-01-02 John David Anglin + + * gcc.dg/pr55430.c: Define MAP_FAILED if not defined. + +2013-01-02 Jerry DeLisle + + PR fortran/55818 + * gfortran.dg/eof_4.f90: New test. + +2013-01-02 Jakub Jelinek + + * lib/c-compat.exp (compat-use-alt-compiler): Remove + -fno-diagnostics-show-caret from TEST_ALWAYS_FLAGS if needed. + (compat-use-tst-compiler): Restore TEST_ALWAYS_FLAGS. + (compat_setup_dfp): Initialize compat_alt_caret and + compat_save_TEST_ALWAYS_FLAGS. + +2013-01-02 Richard Sandiford + + * gcc.dg/torture/tls/tls-reload-1.c: New test. + +2013-01-02 Richard Sandiford + + * gcc.dg/torture/fp-int-convert-2.c: New test. + +2013-01-01 Jerry DeLisle + + * gfortran.dg/newunit_3.f90: Add dg-do run. + * gfortran.dg/inquire_15.f90: Add dg-do run. + +2013-01-01 Jakub Jelinek + + PR tree-optimization/55831 + * gcc.dg/pr55831.c: New test. + +Copyright (C) 2013 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/testsuite/g++.dg/opt/pr59647.C b/gcc/testsuite/g++.dg/opt/pr59647.C new file mode 100644 index 00000000000..1fc5067d83f --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/pr59647.C @@ -0,0 +1,32 @@ +// PR rtl-optimization/59647 +// { dg-do compile } +// { dg-options "-O2 -fno-tree-vrp" } +// { dg-additional-options "-msse2 -mfpmath=sse" { target { { i?86-*-* x86_64-*-* } && ia32 } } } + +void f1 (int); +void f2 (); +double f3 (int); + +struct A +{ + int f4 () const + { + if (a == 0) + return 1; + return 0; + } + unsigned f5 () + { + if (!f4 ()) + f2 (); + return a; + } + int a; +}; + +void +f6 (A *x) +{ + unsigned b = x->f5 (); + f1 (b - 1 - f3 (x->f5 () - 1U)); +} -- cgit v1.2.1 From ff3ace14ed483f0bb923da690b8a795fcc4c5bd7 Mon Sep 17 00:00:00 2001 From: jakub Date: Tue, 31 Dec 2013 23:53:17 +0000 Subject: * config/i386/sse.md (*mov_internal): Guard EXT_REX_SSE_REGNO_P (REGNO ()) uses with REG_P. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206269 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 3 +++ gcc/config/i386/sse.md | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 63748709842..0d081c9362a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2014-01-01 Jakub Jelinek + * config/i386/sse.md (*mov_internal): Guard + EXT_REX_SSE_REGNO_P (REGNO ()) uses with REG_P. + PR rtl-optimization/59647 * cse.c (cse_process_notes_1): Don't substitute negative VOIDmode new_rtx into UNSIGNED_FLOAT rtxes. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index d75edb70870..d8451d17468 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -670,8 +670,10 @@ in avx512f, so we need to use workarounds, to access sse registers 16-31, which are evex-only. */ if (TARGET_AVX512F && GET_MODE_SIZE (mode) < 64 - && (EXT_REX_SSE_REGNO_P (REGNO (operands[0])) - || EXT_REX_SSE_REGNO_P (REGNO (operands[1])))) + && ((REG_P (operands[0]) + && EXT_REX_SSE_REGNO_P (REGNO (operands[0]))) + || (REG_P (operands[1]) + && EXT_REX_SSE_REGNO_P (REGNO (operands[1]))))) { if (memory_operand (operands[0], mode)) { -- cgit v1.2.1 From a80c339f05a6d68e94674b885ede65b397ef1aeb Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 1 Jan 2014 00:02:57 +0000 Subject: * lib/target-supports.exp (check_effective_target_avx512f): Make sure the builtin isn't optimized away as unused. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206270 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 2 +- gcc/testsuite/ChangeLog | 5 ++++- gcc/testsuite/lib/target-supports.exp | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0d081c9362a..4bf248105b2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -7,7 +7,7 @@ * cse.c (cse_process_notes_1): Don't substitute negative VOIDmode new_rtx into UNSIGNED_FLOAT rtxes. -Copyright (C) 2013 Free Software Foundation, Inc. +Copyright (C) 2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 24b4161ae15..25079742c51 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,9 +1,12 @@ 2014-01-01 Jakub Jelinek + * lib/target-supports.exp (check_effective_target_avx512f): Make sure + the builtin isn't optimized away as unused. + PR rtl-optimization/59647 * g++.dg/opt/pr59647.C: New test. -Copyright (C) 2013 Free Software Foundation, Inc. +Copyright (C) 2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 9a5e024fd54..b9151583608 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -5176,9 +5176,9 @@ proc check_effective_target_avx512f { } { return [check_no_compiler_messages avx512f object { typedef double __m512d __attribute__ ((__vector_size__ (64))); - void _mm512_add (__m512d a) + __m512d _mm512_add (__m512d a) { - __builtin_ia32_addpd512_mask (a, a, a, 1, 4); + return __builtin_ia32_addpd512_mask (a, a, a, 1, 4); } } "-O2 -mavx512f" ] } -- cgit v1.2.1 From 52fd35e5c14d867389b834610cc8e63c96acdb9c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 1 Jan 2014 00:16:30 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206273 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 3e6006fbda7..c34e8a22542 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20131231 +20140101 -- cgit v1.2.1 From b3390c667176b532d515d53f0be9b8fb585200b9 Mon Sep 17 00:00:00 2001 From: jbglaw Date: Wed, 1 Jan 2014 12:19:58 +0000 Subject: 2013-12-31 Jan-Benedict Glaw * config/nios2/nios2.h (BITS_PER_UNIT): Don't define it. [BR]: http://gcc.gnu.org/ml/gcc-patches/2013-12/msg01990.html git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206274 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/config/nios2/nios2.h | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4bf248105b2..0d5b4715bf1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2013-01-01 Jan-Benedict Glaw + + * config/nios2/nios2.h (BITS_PER_UNIT): Don't define it. + 2014-01-01 Jakub Jelinek * config/i386/sse.md (*mov_internal): Guard diff --git a/gcc/config/nios2/nios2.h b/gcc/config/nios2/nios2.h index 8e6941b4011..f333be3bd6f 100644 --- a/gcc/config/nios2/nios2.h +++ b/gcc/config/nios2/nios2.h @@ -73,7 +73,6 @@ #define BITS_BIG_ENDIAN 0 #define BYTES_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0) #define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN != 0) -#define BITS_PER_UNIT 8 #define BITS_PER_WORD 32 #define UNITS_PER_WORD 4 #define POINTER_SIZE 32 -- cgit v1.2.1 From 6aefe29f5d2872f4c6bc89fe042656b0313b31e7 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 2 Jan 2014 00:16:58 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206277 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index c34e8a22542..215649b6a96 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140101 +20140102 -- cgit v1.2.1 From 5569181c5c1547629f31b8da4218ac514d04a4d7 Mon Sep 17 00:00:00 2001 From: jbglaw Date: Thu, 2 Jan 2014 13:15:01 +0000 Subject: 2014-01-02 Jan-Benedict Glaw * Changelog: Fix year of my last commit. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206280 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0d5b4715bf1..b34e8add3fa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,4 @@ -2013-01-01 Jan-Benedict Glaw +2014-01-01 Jan-Benedict Glaw * config/nios2/nios2.h (BITS_PER_UNIT): Don't define it. -- cgit v1.2.1 From 839ddc8e4712502286d41f6f71da3c4959126306 Mon Sep 17 00:00:00 2001 From: janus Date: Thu, 2 Jan 2014 17:27:11 +0000 Subject: 2014-01-02 Janus Weil PR fortran/59654 * resolve.c (resolve_typebound_procedures): No need to create the vtab here. 2014-01-02 Janus Weil PR fortran/59654 * gfortran.dg/dynamic_dispatch_12.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206281 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 2082 +------------------- gcc/fortran/ChangeLog-2013 | 2083 +++++++++++++++++++++ gcc/fortran/resolve.c | 3 - gcc/testsuite/ChangeLog | 5 + gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90 | 74 + 5 files changed, 2167 insertions(+), 2080 deletions(-) create mode 100644 gcc/fortran/ChangeLog-2013 create mode 100644 gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90 (limited to 'gcc') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6c7cea7c4a4..e78d6b65f67 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,2082 +1,10 @@ -2013-12-30 Janus Weil +2014-01-02 Janus Weil - PR fortran/58998 - * resolve.c (resolve_symbol): Check that symbol is not only flavorless - but also untyped. - -2013-12-29 Janus Weil - - PR fortran/59612 - * dump-parse-tree.c (show_typespec): Check for charlen. - * invoke.texi: Fix documentation of -fdump-fortran-optimized and - -fdump-parse-tree. - -2013-12-18 Janus Weil - - PR fortran/59493 - * gfortran.h (gfc_find_intrinsic_vtab): Removed prototype. - (gfc_find_vtab): New prototype. - * class.c (gfc_find_intrinsic_vtab): Rename to 'find_intrinsic_vtab' and - make static. Minor modifications. - (gfc_find_vtab): New function. - (gfc_class_initializer): Use new function 'gfc_find_vtab'. - * check.c (gfc_check_move_alloc): Ditto. - * expr.c (gfc_check_pointer_assign): Ditto. - * interface.c (compare_actual_formal): Ditto. - * resolve.c (resolve_allocate_expr, resolve_select_type): Ditto. - * trans-expr.c (gfc_conv_intrinsic_to_class, gfc_trans_class_assign): - Ditto. - * trans-intrinsic.c (conv_intrinsic_move_alloc): Ditto. - * trans-stmt.c (gfc_trans_allocate): Ditto. - -2013-12-16 Janus Weil - - PR fortran/54949 - * symbol.c (check_conflict): Forbid abstract procedure pointers. - (gfc_add_abstract): Check for attribute conflicts. - -2013-12-16 Jakub Jelinek - - PR libgomp/59337 - * openmp.c (resolve_omp_atomic): Adjust error message. - -2013-12-15 Janus Weil - - PR fortran/59493 - * class.c (gfc_find_intrinsic_vtab): Handle BT_CLASS. - -2013-12-14 Janus Weil - - PR fortran/59502 - * primary.c (gfc_match_varspec): Check for 'class_ok'. - -2013-12-14 Janus Weil - - PR fortran/59450 - * module.c (mio_expr): Handle type-bound function expressions. - -2013-12-12 Tobias Burnus - - PR fortran/59440 - * trans-decl.c (generate_namelist_decl): Ensure debug DIE - is created by setting DECL_IGNORED_P to 0. - -2013-12-11 Janus Weil - - PR fortran/58916 - * resolve.c (conformable_arrays): Treat scalar 'e2'. - (resolve_allocate_expr): Check rank also for unlimited-polymorphic - variables. - -2013-12-10 Janus Weil - - PR fortran/35831 - * interface.c (check_dummy_characteristics): Add checks for several - attributes. - -2013-12-10 Janus Weil - - * gfortran.texi: Add possible kind values (and default) for - DOUBLE PRECISION. - * invoke.texi: Correct documentation of -fdefault-integer-8, - -fdefault-real-8 and -fdefault-double-8. - -2013-12-10 Janus Weil - - * gfortran.texi: Modify documentation of kind type parameters. - * invoke.texi: Extend documentation of -fdefault-integer-8 and - -fdefault-real-8. - -2013-12-10 Janus Weil - - * invoke.texi: Add -freal-4-real-16. Rearrange kind promotion options. - -2013-12-08 Tobias Burnus - Janus Weil - - PR fortran/58099 - PR fortran/58676 - PR fortran/41724 - * resolve.c (gfc_resolve_intrinsic): Set elemental/pure. - (resolve_fl_procedure): Reject pure dummy procedures/procedure - pointers. - (gfc_explicit_interface_required): Don't require a - match of ELEMENTAL for intrinsics. - -2013-12-07 Janus Weil - - PR fortran/59414 - * resolve.c (resolve_specific_f0): Handle CLASS-valued functions. - -2013-12-04 Tobias Burnus - - PR debug/37132 - * trans-decl.c (generate_namelist_decl, create_module_nml_decl): - New static functions. - (gfc_generate_module_vars, generate_local_vars): Call them. - (gfc_trans_use_stmts): Handle namelists for debug genertion. - -2013-12-01 Paul Thomas - - PR fortran/57354 - * trans-array.c (gfc_conv_resolve_dependencies): For other than - SS_SECTION, do a dependency check if the lhs is liable to be - reallocated. - -2013-12-01 Paul Thomas - - PR fortran/58410 - * trans-array.c (gfc_alloc_allocatable_for_assignment): Do not - use the array bounds of an unallocated array but set its size - to zero instead. - -2013-12-01 Paul Thomas - - PR fortran/34547 - * resolve.c (resolve_transfer): EXPR_NULL is always in an - invalid context in a transfer statement. - -2013-11-28 Sergey Ostanevich - - * lang.opt (Wopenmp-simd): New. - -2013-11-25 Janus Weil - - PR fortran/59143 - * interface.c (get_expr_storage_size): Handle array-valued type-bound - procedures. - -2013-11-24 Francois-Xavier Coudert - - * scanner.c (gfc_open_intrinsic_module): Remove function. - * gfortran.h (gfc_open_intrinsic_module): Remove prototype. - -2013-11-23 Janus Weil - - PR fortran/59228 - * interface.c (compare_parameter): Check for array spec. - -2013-11-22 Andrew MacLeod - - * trans.c: Add required include files from gimple.h. - * trans-expr.c: Likewise - * trans-openmp.c: Likewise - -2013-11-22 David Malcolm - - * trans.c (trans_runtime_error_vararg): Remove use of input_line - macro. - -2013-11-17 Andrew MacLeod - - * fortran/trans-intrinsic.c: Include tree-nested.h. - -2013-11-14 Andrew MacLeod - - * trans-expr.c: Include only gimplify.h and gimple.h as needed. - * trans-openmp.c: Likewise. - -2013-11-14 Diego Novillo - - * decl.c: Include stringpool.h. - * iresolve.c: Include stringpool.h. - * match.c: Include stringpool.h. - * module.c: Include stringpool.h. - * target-memory.c: Include stor-layout.h. - * trans-common.c: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - * trans-const.c: Include stor-layout.h. - * trans-decl.c: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - Include attribs.h. - * trans-expr.c: Include stringpool.h. - * trans-intrinsic.c: Include stringpool.h. - Include tree-nested.h. - Include stor-layout.h. - * trans-io.c: Include stringpool.h. - Include stor-layout.h. - * trans-openmp.c: Include stringpool.h. - * trans-stmt.c: Include stringpool.h. - * trans-types.c: Include stor-layout.h. - Include stringpool.h. - * trans.c: Include stringpool.h. - -2013-11-12 Andrew MacLeod - - * f95-lang.c: Don't include gimple.h. - * trans-array.c: Include gimple-expr.h instead of gimple.h. - * trans.c: Likewise. - * trans-decl.c: Likewise. - * trans-expr.c: Include gimplify.h. - * trans-openmp.c: Likewise. - -2013-11-07 Janus Weil - - PR fortran/58471 - * primary.c (gfc_expr_attr): Check for result symbol. - -2013-11-06 Francois-Xavier Coudert - - * gfortran.texi: Fix typo. - -2013-11-05 Tobias Burnus - - * lang.opt (-Wdate-time): New option - * cpp.c (gfc_cpp_option_data): Add warn_date_time. - (gfc_cpp_init_options, gfc_cpp_handle_option, - gfc_cpp_post_options): Handle it and pass on to libcpp. - -2013-11-05 Steven G. Kargl - - PR fortran/58989 - * check.c (gfc_check_reshape): ensure that shape is a constant - expression. - -2013-11-05 Tobias Burnus - - * lang.opt (fopenmp-simd): New option. - * gfortran.h (gfc_option_t): Add gfc_flag_openmp_simd. - * options.c (gfc_handle_option): Handle it. - -2013-11-04 Ian Lance Taylor - - * f95-lang.c (ATTR_LEAF_LIST): Define. - -2013-11-04 Paul Thomas - - PR fortran/58771 - * trans-io.c (transfer_expr): If the backend_decl for a derived - type is missing, build it with gfc_typenode_for_spec. - -2013-11-04 Paul Thomas - - PR fortran/57445 - * trans-expr.c (gfc_conv_class_to_class): Remove spurious - assert. - -2013-10-29 Tobias Burnus - - PR fortran/44350 - * parse.c (parse_spec): Add C1116 constraint - check for BLOCK DATA. - -2013-10-29 Paul Thomas - - PR fortran/58793 - * trans-types.c (gfc_typenode_for_spec): Add typenode for - BT_HOLLERITH. Note that the length is incorrect but unusable. - - PR fortran/58858 - * target-memory.c (gfc_element_size): Add element sizes for - BT_VOID and BT_ASSUMED, using gfc_typenode_for_spec. - -2013-10-24 Tobias Burnus - - PR fortran/44646 - * trans-stmt.c (struct forall_info): Add do_concurrent field. - (gfc_trans_forall_1): Set it for do concurrent. - (gfc_trans_forall_loop): Mark those as annot_expr_ivdep_kind. - -2013-10-23 Tobias Burnus - - PR fortran/58793 - * interface.c (compare_parameter): Reject passing TYPE(*) - to CLASS(*). - -2013-10-22 Paul Thomas - - PR fortran 57893 - * class.c : Include target-memory.h. - (gfc_find_intrinsic_vtab) Build a minimal expression so that - gfc_element_size can be used to obtain the storage size, rather - that the kind value. - -2013-10-21 Tobias Burnus - - PR fortran/58803 - * decl.c (match_ppc_decl): Prevent later - double free. - -2013-10-17 Andrew MacLeod - - * trans-openmp.c: Include omp-low.h. - -2013-10-16 Tobias Burnus - - PR fortran/58652 - * interface.c (compare_parameter): Accept passing CLASS(*) - to CLASS(*). - -2013-10-16 Tobias Burnus - - * intrinsic.texi (OpenMP Modules): Update to OpenMPv4. - Document omp_proc_bind_kind. - -2013-10-15 Tobias Burnus - - PR fortran/58652 - * trans-intrinsic.c (conv_intrinsic_move_alloc): Fix handling - of CLASS(*) variables. - -2013-10-14 Tobias Burnus - - PR fortran/58658 - * expr.c (gfc_check_vardef_context): Fix pointer diagnostic - for CLASS(*). - -2013-10-11 Jakub Jelinek - - * trans-openmp.c (gfc_omp_clause_default_ctor, - gfc_omp_clause_dtor): Return NULL for OMP_CLAUSE_REDUCTION. - * f95-lang.c (ATTR_NULL, DEF_FUNCTION_TYPE_8): Define. - * types.def (DEF_FUNCTION_TYPE_8): Document. - (BT_FN_VOID_OMPFN_PTR_UINT, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG, - BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove. - (BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT, - BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL, BT_FN_VOID_UINT_UINT, - BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR, - BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR, - BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New. - -2013-10-10 Tobias Burnus - - PR fortran/58226 - * options.c (gfc_get_option_string): Handle zero arg case. - -2013-10-02 Tobias Burnus - - PR fortran/58593 - * trans-expr.c (gfc_conv_string_tmp): Fix obtaining - the byte size of a single character. - -2013-10-01 Tobias Burnus - - PR fortran/58579 - * trans-expr.c (gfc_conv_string_tmp): Correctly obtain - the byte size of a single character. - -2013-09-27 Janne Blomqvist - - * intrinsic.texi (DATE_AND_TIME): Fix example. - -2013-09-25 Tobias Burnus - - PR fortran/58436 - * class.c (generate_finalization_wrapper): Handle CLASS(*). - -2013-09-25 Tobias Burnus - - PR fortran/57697 - PR fortran/58469 - * resolve.c (generate_component_assignments): Avoid double free - at runtime and freeing a still-being used expr. - -2013-09-25 Tom Tromey - - * Make-lang.in (fortran_OBJS): Use fortran/gfortranspec.o. - (gfortranspec.o): Remove. - (CFLAGS-fortran/gfortranspec.o): New variable. - (GFORTRAN_D_OBJS): Update. - ($(F95_PARSER_OBJS), fortran/openmp.o, GFORTRAN_TRANS_DEPS) - (fortran/f95-lang.o, fortran/scanner.o, fortran/convert.o) - (fortran/frontend-passes.o, fortran/trans.o, fortran/trans-decl.o) - (fortran/trans-types, fortran/trans-const.o, fortran/trans-expr.o) - (fortran/trans-stmt.o, fortran/trans-openmp.o, fortran/trans-io.o) - (fortran/trans-array.o, fortran/trans-intrinsic.o) - (fortran/dependency.o, fortran/trans-common.o, fortran/resolve.o) - (fortran/data.o, fortran/options.o, fortran/cpp.o) - (fortran/scanner.o, fortran/module.o): Remove. - -2013-09-25 Tom Tromey - - * Make-lang.in (gfortranspec.o): Don't use subshell. - -2013-09-23 Janus Weil - - PR fortran/58355 - * decl.c (check_extended_derived_type): Prevent segfault, modify error - message. - -2013-09-20 Janus Weil - - PR fortran/58099 - * expr.c (gfc_check_pointer_assign): Remove second call to - 'gfc_compare_interfaces' with swapped arguments. - * interface.c (gfc_compare_interfaces): Symmetrize the call to - 'check_result_characteristics' by calling it with swapped arguments. - -2013-09-18 Tobias Burnus - - * expr.c (gfc_check_assign_symbol): Free lvalue.ref. - -2013-09-18 Tobias Burnus - - PR fortran/43366 - * primary.c (gfc_variable_attr): Also handle codimension. - * resolve.c (resolve_ordinary_assign): Add invalid-diagnostic for - polymorphic assignment. - -2013-09-16 Tobias Burnus - - PR fortran/58356 - * class.c (generate_finalization_wrapper): Init proc_tree if - not yet resolved. - -2013-09-16 Tobias Burnus - - PR fortran/57697 - * resolve.c (generate_component_assignments): Correctly handle the - case that the LHS is not allocated. - -2013-09-15 Tobias Burnus - - PR fortran/57697 - * resolve.c (generate_component_assignments): Handle unallocated - LHS with defined assignment of components. - -2013-09-12 Brooks Moses - - PR driver/42955 - * Make-lang.in: Do not install driver binaries in $(target)/bin. - -2013-09-09 Tobias Burnus - - * invoke.texi (Error and Warning Options): Add hyphen. - -2013-09-02 Thomas Koenig - - PR fortran/PR56519 - * gfortran.h: Declare gfc_do_concurrent_flag as extern. - * resolve.c: Rename do_concurrent_flag to gfc_do_concurrent_flag - and make non-static. - (resolve_function): Use gfc_do_concurrent_flag instead of - do_concurrent_flag. - (pure_subroutine): Likewise. - (resolve_code): Likewise. - (resolve_types): Likewise. - * intrinsic.c (gfc_intrinsic_sub_interface): Raise error for - non-pure intrinsic subroutines within DO CONCURRENT. - -2013-08-29 Thomas Koenig - - PR fortran/52243 - * trans-expr.c (is_runtime_conformable): New function. - * gfc_trans_assignment_1: Use it. - -2013-08-26 Thomas Koenig - - PR fortran/58146 - * array.c (gfc_ref_dimen_size): If possible, use - gfc_dep_difference to calculate array refrence - sizes. Fall back to integer code otherwise. - * dependency.c (discard_nops). Move up. - Also discarde widening integer conversions. - (gfc_dep_compare_expr): Use discard_nops. - -2013-08-23 Mikael Morin - - PR fortran/57798 - * trans-array.c (gfc_conv_ss_startstride, set_loop_bounds, - gfc_set_delta): Generate preliminary code before the outermost loop. - -2013-08-23 Janus Weil - - PR fortran/57843 - * interface.c (gfc_extend_assign): Look for type-bound assignment - procedures before non-typebound. - -2013-08-23 Mikael Morin - - * trans-array.c (gfc_conv_section_startstride): Move &loop->pre access - to the callers. - (gfc_conv_ss_startstride, gfc_conv_expr_descriptor): Update callers. - -2013-08-22 Janus Weil - - PR fortran/58185 - * match.c (copy_ts_from_selector_to_associate): Only build class - container for polymorphic selector. Some cleanup. - -2013-08-20 Janus Weil - - PR fortran/53655 - * trans-decl.c (generate_local_decl): Check if type has any components. - -2013-08-19 Janus Weil - - PR fortran/46271 - * openmp.c (resolve_omp_clauses): Bugfix for procedure pointers. - -2013-08-12 Thomas Koenig - - PR fortran/56666 - * gfortran.h (gfc_option_t): Add warn_zerotrip. - * invoke.texi (-Wzerotrip): Document option. - * lang.opt (Wzerotrip): Add. - * options.c (gfc_init_options): Initialize warn_zerotrip. - (set_Wall): Add handling of warn_zerotrip. - (gfc_handle_option): Handle OPT_Wzerotrip. - * resolve.c (gfc_resolve_iterator): Honor - gfc_option.warn_zerotrip; update error message to show - how to suppress the warning. - -2013-08-09 Janus Weil - - * gfortran.h (gfc_get_code): Modified prototype. - * class.c (finalize_component, finalization_scalarizer, - finalization_get_offset, finalizer_insert_packed_call, - generate_finalization_wrapper, gfc_find_derived_vtab, - gfc_find_intrinsic_vtab): Use 'gfc_get_code'. - * io.c (match_io_iterator, match_io_element, terminate_io, get_io_list, - gfc_match_inquire): Call 'gfc_get_code' with argument. - * match.c (match_simple_forall, gfc_match_forall, gfc_match_goto, - gfc_match_nullify, gfc_match_call, match_simple_where, gfc_match_where): - Ditto. - * parse.c (new_level): Ditto. - (add_statement): Use XCNEW. - * resolve.c (resolve_entries, resolve_allocate_expr, - resolve_select_type, build_assignment, build_init_assign): Call - 'gfc_get_code' with argument. - * st.c (gfc_get_code): Add argument 'op'. - * trans-expr.c (gfc_trans_class_array_init_assign): Call 'gfc_get_code' - with argument. - * trans-stmt.c (gfc_trans_allocate): Ditto. - -2013-08-09 Janus Weil - - PR fortran/58058 - * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Free the temporary - string, if necessary. - -2013-08-06 Martin Jambor - - PR fortran/57987 - * trans-decl.c (gfc_generate_function_code): Never call - cgraph_finalize_function on nested functions. - -2013-08-06 Janus Weil - - PR fortran/57306 - * class.c (gfc_class_null_initializer): Rename to - 'gfc_class_initializer'. Treat non-NULL init-exprs. - * gfortran.h (gfc_class_null_initializer): Update prototype. - * trans-decl.c (gfc_get_symbol_decl): Treat class variables. - * trans-expr.c (gfc_conv_initializer): Ditto. - (gfc_trans_subcomponent_assign): Renamed gfc_class_null_initializer. - -2013-07-30 Tobias Burnus - - PR fortran/57530 - * symbol.c (gfc_type_compatible): A type is type compatible with - a class if both have the same declared type. - * interface.c (compare_type): Reject CLASS/TYPE even if they - are type compatible. - -2013-07-30 Tobias Burnus - - PR fortran/57530 - * trans-expr.c (gfc_trans_class_assign): Handle CLASS array - functions. - (gfc_trans_pointer_assign): Ditto and support pointer assignment of - a polymorphic var to a nonpolymorphic var. - -2013-07-22 Po Chang - - * match.c (gfc_match_call): Exit loop after setting i. - - * resolve.c (resolve_variable): Exit loop after setting seen. - - * expr.c (gfc_check_pointer_assign): Exit loop after setting warn. - - * trans-array.c (set_loop_bounds): Exit loop after setting - nonoptional_arr. - - * trans-io.c (gfc_trans_transfer): Exit loop after setting seen_vector. - -2013-07-28 Thomas Koenig - - PR fortran/58009 - * expr.c (gfc_check_vardef_context): Check for same values in - vector expression subscripts. - -2013-07-27 Tobias Burnus - - PR fortran/57991 - * interface.c (check_some_aliasing): Also warn for intent OUT/OUT. - -2013-07-27 Janus Weil - - PR fortran/57285 - * check.c (dim_rank_check): Re-enable this check for CLASS arrays. - -2013-07-25 Janus Weil - - PR fortran/57966 - * resolve.c (resolve_typebound_function): Make sure the declared type, - including its type-bound procedures, is resolved before resolving the - actual type-bound call. - -2013-07-25 Janus Weil - - PR fortran/57639 - * interface.c (compare_parameter): Check for class_ok. - * simplify.c (gfc_simplify_same_type_as): Ditto. - -2013-07-23 Ondřej Bílka - - * decl.c: Fix comment typos. - * interface.c: Likewise. - * trans-array.c: Likewise. - * trans.c: Likewise. - -2013-07-22 Tobias Burnus - - PR fortran/57906 - PR fortran/52052 - * class.c (gfc_build_class_symbol): Set coarray_comp. - * trans-array.c (structure_alloc_comps): For coarrays, - directly use the data pointer address. - -2013-07-22 Chang - - * trans-decl.c (gfc_build_dummy_array_decl): Exit loop after - setting PACKED_PARTIAL. - -2013-07-22 Tobias Burnus - - * trans-array.c (gfc_array_allocate): Correct memory-leak patch. - -2013-07-22 Tobias Burnus - - * trans-array.c (gfc_array_allocate, - gfc_trans_deferred_array): Plug memory leak. - -2013-07-21 Ondřej Bílka - - * trans-decl.c: Fix comment typos. - * trans-expr.c: Ditto. - -2013-07-21 Thomas Koenig - - PR fortran/56937 - * dependency.c (gfc_dep_resolver): Treat identical - array subscripts as identical; don't unconditionally - return a dependency if an array subscript is found. - -2013-07-21 Tobias Burnus - - PR fortran/35862 - * libgfortran.h (GFC_FPE_DOWNWARD, GFC_FPE_TONEAREST, - GFC_FPE_TOWARDZERO, GFC_FPE_UPWARD): New defines. - -2013-07-21 Tobias Burnus - - PR fortran/57894 - * check.c (min_max_args): Add keyword= check. - -2013-07-17 Mikael Morin - Tobias Burnus - - PR fortran/57895 - * match.c (gfc_match_name): Ensure that the error - message regarding -fdollar-ok gets printed. - (gfc_match_common): Avoid multiple freeing. - -2013-07-16 Tobias Burnus - - PR fortran/57912 - * trans-expr.c (gfc_trans_scalar_assign): Correct if - condition for caf realloc. - -2013-07-15 Tobias Burnus - - * trans-array.h (gfc_deallocate_alloc_comp_no_caf, - gfc_reassign_alloc_comp_caf): New prototype. - * trans-array.c (enum): Add DEALLOCATE_ALLOC_COMP_NO_CAF - and COPY_ALLOC_COMP_CAF. - (structure_alloc_comps): Handle it. - (gfc_reassign_alloc_comp_caf, - gfc_deallocate_alloc_comp_no_caf): New function. - (gfc_alloc_allocatable_for_assignment): Call it. - * trans-expr.c (gfc_trans_scalar_assign, - gfc_trans_arrayfunc_assign, gfc_trans_assignment_1): Ditto. - * parse.c (parse_derived): Correctly set coarray_comp. - * resolve.c (resolve_symbol): Improve error wording. - -2013-07-15 Tobias Burnus - - PR fortran/37336 - * trans.c (gfc_add_comp_finalizer_call): New function. - * trans.h (gfc_add_comp_finalizer_call): New prototype. - * trans-array.c (structure_alloc_comps): Call it. - -2013-07-14 Thomas Koenig - Tobias Burnus - - PR fortran/52669 - * trans-decl.c (gfc_finish_var_decl): Move setting of - PRIVATE for a module variable if the module has a private - default or -fmodule-private is given to... - (gfc_create_module_variable): here. Optionally - warn about private module variable which is not used. - -2013-07-08 Tobias Burnus - - PR fortran/57834 - * check.c (is_c_interoperable): Add special case for c_f_pointer. - (explicit-size, gfc_check_c_f_pointer, gfc_check_c_loc): Update - call. - -2013-07-08 Tobias Burnus - - PR fortran/50554 - * io.c (match_inquire_element): Add missing do-var check. - -2013-07-08 Tobias Burnus - - PR fortran/57785 - * simplify.c (compute_dot_product): Complex conjugate for - dot_product. - (gfc_simplify_dot_product, gfc_simplify_matmul): Update call. - -2013-07-08 Tobias Burnus - - PR fortran/57469 - * trans-decl.c (generate_local_decl): Don't warn that - a dummy is unused, when it is in a namelist. - -2013-07-01 Dominique d'Humieres - - PR fortran/54788 - * array.c (spec_size): handle the case as==NULL. - -2013-06-26 Tobias Burnus - - PR fortran/29800 - * trans-array.c (gfc_conv_array_ref): Improve out-of-bounds - diagnostic message. - * trans-array.c (gfc_conv_array_ref): Update prototype. - * trans-expr.c (gfc_conv_variable): Update call. - -2013-06-24 Steven G. Kargl - Francois-Xavier Coudert - Dominique d'Humieres - - PR fortran/52413 - * simplify.c (gfc_simplify_fraction): Fix the sign of negative values. - -2013-06-21 Tobias Burnus - - PR fortran/37336 - * trans-array.c (gfc_trans_deferred_array): Call the - finalizer for nonallocatable local variables. - * trans-decl.c (gfc_get_symbol_decl): Add local - finalizable vars to the deferred list. - (gfc_trans_deferred_vars): Call gfc_trans_deferred_array - for those. - -2013-06-21 Tobias Burnus - - * trans-array.c (gfc_alloc_allocatable_for_assignment): Allocate - at least one byte. - * trans-expr.c (alloc_scalar_allocatable_for_assignment): Ditto. - -2013-06-20 Tobias Burnus - - * resolve.c (get_temp_from_expr): Don't set FL_VARIABLE twice. - -2013-06-17 Tobias Burnus - - * gfortran.h (gfc_option_t): Add fpe_summary. - * gfortran.texi (_gfortran_set_options): Update. - * invoke.texi (-ffpe-summary): Add doc. - * lang.opt (ffpe-summary): Add flag. - * options.c (gfc_init_options, gfc_handle_option): Handle it. - (gfc_handle_fpe_option): Renamed from gfc_handle_fpe_trap_option, - also handle fpe_summary. - * trans-decl.c (create_main_function): Update - _gfortran_set_options call. - -2013-06-15 Mikael Morin - - PR fortran/49074 - PR fortran/56136 - * dependency.c (gfc_check_argument_var_dependency): Return 0 in the - array constructor case. - -2013-06-14 Tobias Burnus - - PR fortran/57508 - * resolve.c (get_temp_from_expr): Don't copy function - result attributes to temporary. - -2013-06-14 Tobias Burnus - - PR fortran/57596 - * trans-decl.c (gfc_trans_deferred_vars): Honor OPTIONAL - for nullify and deferred-strings' length variable. - -2013-06-13 Mikael Morin - - PR fortran/49074 - * trans-expr.c (gfc_conv_variable): Don't walk the reference chain. - Handle NULL array references. - (gfc_conv_procedure_call): Remove code handling NULL array references. - -2013-06-11 Tobias Burnus - - PR fortran/57535 - * trans-array.c (build_class_array_ref): Fix ICE for - function result variables. - -2013-06-08 Tobias Burnus - - PR fortran/37336 - * trans-decl.c (init_intent_out_dt): Call finalizer - when appropriate. - -2013-06-08 Tobias Burnus - - PR fortran/57553 - * simplify.c (gfc_simplify_storage_size): Handle literal - strings. - * trans-intrinsic.c (gfc_conv_intrinsic_storage_size): - Add missing fold_convert. - -2013-06-07 Tobias Burnus - - PR fortran/57549 - * array.c (gfc_match_array_constructor): Call - gfc_match_type_spec instead of gfc_match_decl_type_spec. - * match.c (gfc_match_type_spec): Renamed from match_type_spec. - (gfc_match_type_is, gfc_match_allocate): Update call. - * match.h (gfc_match_type_spec): Add prototype. - -2013-06-07 Tobias Burnus - - PR fortran/57556 - * trans.c (gfc_build_final_call): Init block before use. - -2013-06-06 Tobias Burnus - - PR fortran/57542 - * trans.c (gfc_build_final_call): Add se.pre to the block - and modify the assert. - -2013-06-04 Tobias Burnus - - PR fortran/37336 - * trans.h (gfc_build_final_call): Remove prototype. - (gfc_add_finalizer_call): Add prototype. - * trans-array.c (gfc_trans_dealloc_allocated): Support finalization. - (structure_alloc_comps): Update caller. - (gfc_trans_deferred_array): Call finalizer. - * trans-array.h (gfc_trans_dealloc_allocated): Update prototype. - * trans-decl.c (gfc_trans_deferred_vars): Don't deallocate/finalize - variables of the main program. - * trans-expr.c (gfc_conv_procedure_call): Support finalization. - * trans-openmp.c (gfc_omp_clause_dtor, - gfc_trans_omp_array_reduction): Update calls. - * trans-stmt.c (gfc_trans_deallocate): Avoid double deallocation - of alloc components. - * trans.c (gfc_add_finalizer_call): New function. - (gfc_deallocate_with_status, - gfc_deallocate_scalar_with_status): Call it - (gfc_build_final_call): Fix handling of scalar coarrays, - move up in the file and make static. - -2013-06-01 Janus Weil - Mikael Morin - - * error.c (get_terminal_width): Only limit the width if we're - outputting to a terminal. Try to determine width via ioctl. - -2013-06-01 Tobias Burnus - - * decl.c (add_global_entry): Take locus. - (gfc_match_entry): Update call. - (gfc_match_end): Better error location. - * parse.c (parse_block_data, parse_module, add_global_procedure, - add_global_program): Use better locus data. - -2013-05-31 Tobias Burnus - - PR fortran/57456 - * trans-array.c (gfc_array_init_size): Use passed type spec, - when available. - (gfc_array_allocate): Pass typespec on. - * trans-array.h (gfc_array_allocate): Update prototype. - * trans-stmt.c (gfc_trans_allocate): Pass typespec on. - -2013-05-31 Janus Weil - - PR fortran/54190 - PR fortran/57217 - * gfortran.h (gfc_terminal_width): Remove prototype. - * error.c (get_terminal_width): Moved here from misc.c. Renamed. - Try to determine terminal width from environment variable. - * interface.c (compare_type, compare_rank): New functions. Fix assumed - type/rank handling. - (compare_type_rank, check_dummy_characteristics, - check_result_characteristics, gfc_compare_interfaces): Use them. - (symbol_rank): Slightly modified and moved. - * misc.c (gfc_terminal_width): Moved to error.c. - -2013-05-30 Janus Weil - - PR fortran/54189 - * resolve.c (check_assumed_size_reference): Check for e->ref. - -2013-05-30 Tobias Burnus - - PR fortran/57458 - * interface.c (compare_parameter): Update C1239/C1240 constraint - check for assumed-rank/TS29113. - -2013-05-29 Tobias Burnus - - PR fortran/37336 - * class.c (finalize_component): Fix coarray array refs. - (generate_finalization_wrapper): Only gfc_convert_type_warn - when the kind value is different. - (gfc_find_intrinsic_vtab): _copy's dst is now intent(inout). - (gfc_find_derived_vtab): Ditto. Enable finalization-wrapper - generation. - * module.c (MOD_VERSION): Bump. - (gfc_dump_module, gfc_use_module): Remove empty line in .mod. - * trans-array.c (gfc_conv_descriptor_token): Accept nonrestricted - void pointer. - (gfc_array_allocate, structure_alloc_comps): Don't nullify for - BT_CLASS allocations. - * trans-stmt.c (gfc_trans_allocate): Ditto. - -2013-05-29 Tobias Burnus - - PR fortran/37336 - * resolve.c (gfc_resolve_finalizers): Remove not implemented error. - -2013-05-28 Tobias Burnus - - * trans-expr.c (gfc_conv_procedure_call): Deallocate - polymorphic arrays for allocatable intent(out) dummies. - (gfc_reset_vptr): New function, moved from trans-stmt.c - and extended. - * trans-stmt.c (reset_vptr): Remove. - (gfc_trans_deallocate): Update calls. - * trans.h (gfc_reset_vptr): New prototype. - -2013-05-28 Dominique d'Humieres - - PR fortran/57435 - * module.c (check_for_ambiguous): Avoid null pointer deref. - -2013-05-28 Janus Weil - Tobias Burnus - - PR fortran/57217 - * interface.c (check_dummy_characteristics): Symmetrize type check. - -2013-05-27 Bud Davis - - PR fortran/50405 - * resolve.c (resolve_formal_arglist): Detect error when an argument - has the same name as the function. - -2013-05-27 Tobias Burnus - - * expr.c (gfc_build_intrinsic_call): Make symbol as attr.artificial. - * intrinsic.c (gfc_is_intrinsic): Disable std check for those. - -2013-05-22 Tobias Burnus - - * resolve.c (get_temp_from_expr): Change mangling to - start always with a _. - -2013-05-22 Tobias Burnus - - * resolve.c (get_temp_from_expr): Fix temp var mangling. - -2013-05-22 Tobias Burnus - - PR fortran/57364 - * resolve.c (get_temp_from_expr): Commit created sym. - -2013-05-22 Tobias Burnus - - PR fortran/57338 - * intrinsic.c (do_check): Move some checks to ... - (do_ts29113_check): ... this new function. - (check_specific, gfc_intrinsic_sub_interface): Call it. - -2013-05-22 Janne Blomqvist - - * intrinsic.texi (RANDOM_SEED): Improve example. - -2013-05-21 Tobias Burnus - - PR fortran/57035 - * intrinsic.c (do_check): Add constraint check for - NO_ARG_CHECK, assumed rank and assumed type. - * gfortran.texi (NO_ARG_CHECK): Minor wording change, - allow PRESENT intrinsic. - -2013-05-20 Tobias Burnus - - PR fortran/48858 - PR fortran/55465 - * decl.c (add_global_entry): Add sym_name. - * parse.c (add_global_procedure): Ditto. - * resolve.c (resolve_bind_c_derived_types): Handle multiple decl for - a procedure. - (resolve_global_procedure): Handle gsym->ns pointing to a module. - * trans-decl.c (gfc_get_extern_function_decl): Ditto. - -2013-05-20 Tobias Burnus - - PR fortran/48858 - * decl.c (add_global_entry): Use nonbinding name - only for F2003 or if no binding label exists. - (gfc_match_entry): Update calls. - * parse.c (gfc_global_used): Improve error message. - (add_global_procedure): Use nonbinding name - only for F2003 or if no binding label exists. - (gfc_parse_file): Update call. - * resolve.c (resolve_global_procedure): Use binding - name when available. - * trans-decl.c (gfc_get_extern_function_decl): Ditto. - -2013-05-20 Tobias Burnus - - PR fortran/48858 - * decl.c (gfc_match_bind_c_stmt): Add gfc_notify_std. - * match.c (gfc_match_common): Don't add commons to gsym. - * resolve.c (resolve_common_blocks): Add to gsym and - add checks. - (resolve_bind_c_comms): Remove. - (resolve_types): Remove call to the latter. - * trans-common.c (gfc_common_ns): Remove static var. - (gfc_map_of_all_commons): Add static var. - (build_common_decl): Correctly handle binding label. - -2013-05-16 Jason Merrill - - * Make-lang.in (f951$(exeext)): Use link mutex. - -2013-05-05 Tobias Burnus - - * resolve.c (conformable_arrays): Avoid segfault - when ar.start[i] == NULL. - -2013-05-05 Tobias Burnus - - PR fortran/57141 - * decl.c (gfc_match_null): Permit use-associated - NULL intrinsic. - -2013-05-04 Tobias Burnus - - * decl.c (gfc_verify_c_interop_param): Permit allocatable - and pointer with -std=f2008ts. - -2013-05-02 Tobias Burnus - - PR fortran/57142 - * simplify.c (gfc_simplify_size): Renamed from - simplify_size; fix kind=8 handling. - (gfc_simplify_size): New function. - (gfc_simplify_shape): Add range check. - * resolve.c (resolve_function): Fix handling - for ISYM_SIZE. - -2013-05-01 Thomas Koenig - - * frontend-passes.c (optimize_power): Fix typo - in comment. - -2013-04-30 Thomas Koenig - - PR fortran/57071 - * frontend-passes.c (optimize_power): Simplify - 1**k to 1. - -2013-04-28 Tobias Burnus - - PR fortran/57114 - * intrinsic.texi (RANK): Correct syntax description and - expected result. - -2013-04-28 Tobias Burnus - - PR fortran/57093 - * trans-types.c (gfc_get_element_type): Fix handling - of scalar coarrays of type character. - * intrinsic.texi (PACK): Add missing ")". - -2013-04-28 Thomas Koenig - - PR fortran/57071 - * frontend-passes (optimize_power): New function. - (optimize_op): Use it. - -2013-04-25 Janne Blomqvist - - PR bootstrap/57028 - * Make-lang.in (f951): Link in ZLIB. - (CFLAGS-fortran/module.o): Add zlib include directory. - -2013-04-22 Janus Weil - - PR fortran/53685 - PR fortran/57022 - * check.c (gfc_calculate_transfer_sizes): Fix for array-valued SOURCE - expressions. - * simplify.c (gfc_simplify_sizeof,gfc_simplify_storage_size): Get rid - of special treatment for EXPR_ARRAY. - * target-memory.h (gfc_element_size): New prototype. - * target-memory.c (size_array): Remove. - (gfc_element_size): New function. - (gfc_target_expr_size): Modified to always return the full size of the - expression. - -2013-04-20 Tobias Burnus - - PR fortran/56907 - * trans-intrinsic.c (conv_isocbinding_function): Don't pack array - passed to C_LOC - -2013-04-19 Thomas Koenig - Mikael Morin - - PR fortran/56872 - * frontend-passes.c (copy_walk_reduction_arg): Change argument type - to gfc_constructor. If it has an iterator, wrap the copy of its - expression in an array constructor with that iterator. Don't special - case function expressions. - (callback_reduction): Update caller. Don't return early if there is - an iterator. - -2013-04-18 Tobias Burnus - - * expr.c (find_array_element): Don't copy expr. - * data.c (create_character_initializer): Free expr. - * frontend-passes.c (combine_array_constructor): Ditto. - * match.c (match_typebound_call, gfc_match_select_type): Ditto. - * resolve.c (resolve_typebound_function): Free gfc_ref. - -2013-04-18 Tobias Burnus - - PR fortran/56994 - * invoke.texi (NEAREST): S argument is not optional. - -2013-04-17 Janus Weil - - PR fortran/56814 - * interface.c (check_result_characteristics): Get result from interface - if present. - -2013-04-17 Janne Blomqvist - - PR fortran/40958 - * scanner.h: New file. - * Make-lang.in: Dependencies on scanner.h. - * scanner.c (gfc_directorylist): Move to scanner.h. - * module.c: Don't include md5.h, include scanner.h and zlib.h. - (MOD_VERSION): Add comment about backwards compatibility. - (module_fp): Change type to gzFile. - (ctx): Remove. - (gzopen_included_file_1): New function. - (gzopen_included_file): New function. - (gzopen_intrinsic_module): New function. - (write_char): Use gzputc. - (read_crc32_from_module_file): New function. - (read_md5_from_module_file): Remove. - (gfc_dump_module): Use gz* functions instead of stdio, check gzip - crc32 instead of md5. - (read_module_to_tmpbuf): Use gz* functions instead of stdio. - (gfc_use_module): Use gz* functions. - -2013-04-16 Tobias Burnus - - PR fortran/39505 - * decl.c (ext_attr_list): Add EXT_ATTR_NO_ARG_CHECK. - * gfortran.h (ext_attr_id_t): Ditto. - * gfortran.texi (GNU Fortran Compiler Directives): - Document it. - * interface.c (compare_type_rank): Ignore rank for NO_ARG_CHECK. - (compare_parameter): Ditto - and regard as unlimited polymorphic. - * resolve.c (resolve_symbol, resolve_variable): Add same constraint - checks as for TYPE(*); turn dummy to TYPE(*),dimension(*). - (gfc_explicit_interface_required): Require explicit interface - for NO_ARG_CHECK. - -2013-04-16 Janus Weil - - PR fortran/56968 - * expr.c (gfc_check_pointer_assign): Handle generic functions returning - procedure pointers. - -2013-04-16 Tobias Burnus - - PR fortran/56969 - * intrinsic.c (gfc_intrinsic_func_interface): Don't set - module name to "(intrinsic)" for intrinsics from intrinsic - modules. - -2013-04-15 Tobias Burnus - - * intrinsic.texi (SYSTEM_CLOCK): Recommend kind=8. - -2013-04-15 Janne Blomqvist - - PR fortran/56919 - * intrinsics.texi (SYSTEM_CLOCK): Update documentation. - -2013-04-15 Tobias Burnus - - * class.c (gfc_find_intrinsic_vtab): Removed unused var. - * dependency.c (check_data_pointer_types): Fix check. - * frontend-passes.c (check_data_pointer_types): Remove - superfluous statement. - * parse.c (decode_omp_directive): Add missing break. - * resolve.c (resolve_typebound_subroutine: Free variable. - * trans-decl.c (create_function_arglist): Correct condition. - -2013-04-14 Mikael Morin - - PR fortran/56816 - * match.c (gfc_match_select_type): Add syntax error. Move namespace - allocation and cleanup... - * parse.c (decode_statement): ... here. - -2013-04-13 Janus Weil - - PR fortran/55959 - * expr.c (gfc_simplify_expr): Branch is not unreachable. - -2013-04-12 Janus Weil - - PR fortran/56266 - * primary.c (gfc_match_varspec): Turn gcc_assert into MATCH_ERROR. - -2013-04-12 Tobias Burnus - - PR fortran/56929 - * trans-array.c (duplicate_allocatable): Fix handling - of scalar coarrays. - -2013-04-12 Janus Weil - - PR fortran/56261 - * gfortran.h (gfc_explicit_interface_required): New prototype. - * expr.c (gfc_check_pointer_assign): Check if an explicit interface is - required in a proc-ptr assignment. - * interface.c (check_result_characteristics): Extra check. - * resolve.c (gfc_explicit_interface_required): New function. - (resolve_global_procedure): Use new function - 'gfc_explicit_interface_required'. Do a full interface check. - -2013-04-12 Tobias Burnus - - PR fortran/56845 - * trans-decl.c (gfc_trans_deferred_vars): Restrict - static CLASS init to SAVE and -fno-automatic. - -2013-04-12 Tobias Burnus - - PR fortran/56845 - * trans-decl.c (gfc_trans_deferred_vars): Set _vptr for - allocatable static BT_CLASS. - * trans-expr.c (gfc_class_set_static_fields): New function. - * trans.h (gfc_class_set_static_fields): New prototype. - -2013-04-11 Janne Blomqvist - - * gfortran.h: Remove enum gfc_try, replace gfc_try with bool type. - * arith.c: Replace gfc_try with bool type. - * array.c: Likewise. - * check.c: Likewise. - * class.c: Likewise. - * cpp.c: Likewise. - * cpp.h: Likewise. - * data.c: Likewise. - * data.h: Likewise. - * decl.c: Likewise. - * error.c: Likewise. - * expr.c: Likewise. - * f95-lang.c: Likewise. - * interface.c: Likewise. - * intrinsic.c: Likewise. - * intrinsic.h: Likewise. - * io.c: Likewise. - * match.c: Likewise. - * match.h: Likewise. - * module.c: Likewise. - * openmp.c: Likewise. - * parse.c: Likewise. - * parse.h: Likewise. - * primary.c: Likewise. - * resolve.c: Likewise. - * scanner.c: Likewise. - * simplify.c: Likewise. - * symbol.c: Likewise. - * trans-intrinsic.c: Likewise. - * trans-openmp.c: Likewise. - * trans-stmt.c: Likewise. - * trans-types.c: Likewise. - -2013-04-09 Tobias Burnus - - * gfortran.texi (KIND Type Parameters, - Internal representation of LOGICAL variables): Add crossrefs. - (Intrinsic Types): Mention issues with _Bool interop. - (Naming and argument-passing conventions): New section. - -2013-04-08 Thomas Koenig - - PR fortran/56782 - * frontend-passes.c (callback_reduction): Don't do - any simplification if there is only a single element - which has an iterator. - -2013-04-07 Tobias Burnus - - PR fortran/56849 - * iresolve.c (gfc_resolve_reshape): Set shape also - with order=. - -2013-04-04 Janus Weil - - PR fortran/40881 - * match.c (gfc_match_return): Remove standard notification. - * primary.c (gfc_match_actual_arglist): Add standard notification. - -2013-04-04 Tobias Burnus - - PR fortran/50269 - * gcc/fortran/check.c (is_c_interoperable, - gfc_check_c_loc): Correct c_loc array checking - for Fortran 2003 and Fortran 2008. - -2013-04-03 Janus Weil - - PR fortran/56284 - PR fortran/40881 - * decl.c (gfc_match_formal_arglist): Warn about alternate-return - arguments. - * interface.c (check_dummy_characteristics): Return if symbols are NULL. - -2013-04-01 Janus Weil - - PR fortran/56500 - * symbol.c (gfc_set_default_type): Build class container for - IMPLICIT CLASS. - -2013-03-31 Tobias Burnus - - * class.c (finalization_scalarizer, finalizer_insert_packed_call, - generate_finalization_wrapper): Avoid segfault with absent SIZE= - argument to TRANSFER and use correct result kind for SIZE. - * intrinsic.c (gfc_isym_id_by_intmod): Also handle ids of - nonmodules. - * trans.c (gfc_build_final_call): Handle coarrays. - -2013-03-30 Thomas Koenig - - * trans-expr.c (build_memcmp_call): New function. - (gfc_build_compare_string): If the strings - compared have constant and equal lengths and - the strings are kind=1, or, for kind=4 strings, - the test is for (in)equality, use memcmp(). - -2013-03-29 Tobias Burnus - - PR fortran/35203 - * trans-decl.c (create_function_arglist): Pass hidden argument - for passed-by-value optional+value dummies. - * trans-expr.c (gfc_conv_expr_present, - gfc_conv_procedure_call): Handle those. - -2013-03-28 Thomas Koenig - - PR fortran/45159 - * gfortran.h (gfc_dep_difference): Add prototype. - * dependency.c (discard_nops): New function. - (gfc_dep_difference): New function. - (check_section_vs_section): Use gfc_dep_difference - to calculate the difference of starting indices. - * trans-expr.c (gfc_conv_substring): Use - gfc_dep_difference to calculate the length of - substrings where possible. - -2013-03-28 Thomas Koenig - - PR fortran/55806 - * frontend-passes.c (optimize_code): Keep track of - current code to make code insertion possible. - (combine_array_constructor): New function. - (optimize_op): Call it. - -2013-03-27 Tobias Burnus - - PR fortran/56650 - PR fortran/36437 - * check.c (gfc_check_sizeof, gfc_check_c_sizeof, - gfc_check_storage_size): Update checks. - * intrinsic.texi (SIZEOF): Correct class. - * intrinsic.h (gfc_simplify_sizeof, - gfc_simplify_storage_size): New prototypes. - * intrinsic.c (add_functions): Use them. - * simplify.c (gfc_simplify_sizeof, - gfc_simplify_storage_size): New functions. - -2013-03-27 Janne Blomqvist - - PR fortran/25708 - * module.c (module_locus): Use long for position. - (module_content): New variable. - (module_pos): Likewise. - (prev_character): Remove. - (bad_module): Free data instead of closing mod file. - (set_module_locus): Use module_pos. - (get_module_locus): Likewise. - (module_char): use buffer rather than stdio file. - (module_unget_char): Likewise. - (read_module_to_tmpbuf): New function. - (gfc_use_module): Call read_module_to_tmpbuf. - -2013-03-26 Tobias Burnus - - PR fortran/56649 - * simplify.c (gfc_simplify_merge): Simplify more. - -2013-03-25 Tobias Burnus - - PR fortran/38536 - PR fortran/38813 - PR fortran/38894 - PR fortran/39288 - PR fortran/40963 - PR fortran/45824 - PR fortran/47023 - PR fortran/47034 - PR fortran/49023 - PR fortran/50269 - PR fortran/50612 - PR fortran/52426 - PR fortran/54263 - PR fortran/55343 - PR fortran/55444 - PR fortran/55574 - PR fortran/56079 - PR fortran/56378 - * check.c (gfc_var_strlen): Properly handle 0-sized string. - (gfc_check_c_sizeof): Use is_c_interoperable, add checks. - (is_c_interoperable, gfc_check_c_associated, gfc_check_c_f_pointer, - gfc_check_c_f_procpointer, gfc_check_c_funloc, gfc_check_c_loc): New - functions. - * expr.c (check_inquiry): Add c_sizeof, compiler_version and - compiler_options. - (gfc_check_pointer_assign): Refine function result check. - gfortran.h (gfc_isym_id): Add GFC_ISYM_C_ASSOCIATED, - GFC_ISYM_C_F_POINTER, GFC_ISYM_C_F_PROCPOINTER, GFC_ISYM_C_FUNLOC, - GFC_ISYM_C_LOC. - (iso_fortran_env_symbol, iso_c_binding_symbol): Handle - NAMED_SUBROUTINE. - (generate_isocbinding_symbol): Update prototype. - (get_iso_c_sym): Remove. - (gfc_isym_id_by_intmod, gfc_isym_id_by_intmod_sym): New prototypes. - * intrinsic.c (gfc_intrinsic_subroutine_by_id): New function. - (gfc_intrinsic_sub_interface): Use it. - (add_functions, add_subroutines): Add missing C-binding intrinsics. - (gfc_intrinsic_func_interface): Add special case for c_loc. - gfc_isym_id_by_intmod, gfc_isym_id_by_intmod_sym): New functions. - (gfc_intrinsic_func_interface, gfc_intrinsic_sub_interface): Use them. - * intrinsic.h (gfc_check_c_associated, gfc_check_c_f_pointer, - gfc_check_c_f_procpointer, gfc_check_c_funloc, gfc_check_c_loc, - gfc_resolve_c_loc, gfc_resolve_c_funloc): New prototypes. - * iresolve.c (gfc_resolve_c_loc, gfc_resolve_c_funloc): New - functions. - * iso-c-binding.def: Split PROCEDURE into NAMED_SUBROUTINE and - NAMED_FUNCTION. - * iso-fortran-env.def: Add NAMED_SUBROUTINE for completeness. - * module.c (create_intrinsic_function): Support subroutines and - derived-type results. - (use_iso_fortran_env_module): Update calls. - (import_iso_c_binding_module): Ditto; update calls to - generate_isocbinding_symbol. - * resolve.c (find_arglists): Skip for intrinsic symbols. - (gfc_resolve_intrinsic): Find intrinsic subs via id. - (is_scalar_expr_ptr, gfc_iso_c_func_interface, - set_name_and_label, gfc_iso_c_sub_interface): Remove. - (resolve_function, resolve_specific_s0): Remove calls to those. - (resolve_structure_cons): Fix handling. - * symbol.c (gen_special_c_interop_ptr): Update c_ptr/c_funptr - generation. - (gen_cptr_param, gen_fptr_param, gen_shape_param, - build_formal_args, get_iso_c_sym): Remove. - (std_for_isocbinding_symbol): Handle NAMED_SUBROUTINE. - (generate_isocbinding_symbol): Support hidden symbols and - using c_ptr/c_funptr symtrees for nullptr defs. - * target-memory.c (gfc_target_encode_expr): Fix handling - of c_ptr/c_funptr. - * trans-expr.c (conv_isocbinding_procedure): Remove. - (gfc_conv_procedure_call): Remove call to it. - (gfc_trans_subcomponent_assign, gfc_conv_expr): Update handling - of c_ptr/c_funptr. - * trans-intrinsic.c (conv_isocbinding_function, - conv_isocbinding_subroutine): New. - (gfc_conv_intrinsic_function, gfc_conv_intrinsic_subroutine): - Call them. - * trans-io.c (transfer_expr): Fix handling of c_ptr/c_funptr. - * trans-types.c (gfc_typenode_for_spec, - gfc_get_derived_type): Ditto. - (gfc_init_c_interop_kinds): Handle NAMED_SUBROUTINE. - -2013-03-18 Tobias Burnus - - * gfortran.h (gfc_option_t): Remove flag_whole_file. - * invoke.texi (-fno-whole-file): Remove. - * lang.opt (fwhole-file): Change to Ignore. - * options.c (gfc_init_options, gfc_post_options, - gfc_handle_option): Remove !flag_whole_file handling - * parse.c (resolve_all_program_units, translate_all_program_units, - gfc_parse_file): Ditto. - * resolve.c (resolve_global_procedure): Ditto. - * trans-decl.c (gfc_get_symbol_decl, gfc_get_extern_function_decl, - gfc_create_module_variable): Ditto. - * trans-types.c (gfc_get_derived_type): Ditto. - -2013-03-15 Tobias Burnus - - PR fortran/56615 - * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Pack arrays - if they are not simply contiguous. - -2013-03-11 Tobias Burnus - - * gfortran.texi (STRUCTURE and RECORD): State more clearly how - to convert them into derived types. - -2013-03-10 Paul Thomas - - PR fortran/56575 - * expr.c (gfc_default_initializer): Check that a class declared - type has any components. - * resolve.c (resolve_fl_derived0): On failing the test for C437 - set the type to BT_UNKNOWN to prevent repeat error messages. - -2013-03-03 Mikael Morin - - PR fortran/56477 - * expr.c (gfc_check_pointer_assign): Avoid NULL pointer dereference. - -2013-03-03 Mikael Morin - - PR fortran/54730 - * array.c (gfc_match_array_constructor): Set a checkpoint before - matching a typespec. Drop it on success, restore it otherwise. - -2013-03-03 Mikael Morin - - PR fortran/54730 - * gfortran.h (struct gfc_undo_change_set): New field 'previous'. - (gfc_new_undo_checkpoint, gfc_drop_last_undo_checkpoint, - gfc_restore_last_undo_checkpoint): New prototypes. - * symbol.c (default_undo_chgset_var): Update initialization. - (single_undo_checkpoint_p, gfc_new_undo_checkpoint, - free_undo_change_set_data, pop_undo_change_set, - gfc_drop_last_undo_checkpoint, enforce_single_undo_checkpoint): - New functions. - (save_symbol_data): Handle multiple change sets. Make sure old_symbol - field's previous value is not overwritten. Clear gfc_new field. - (restore_old_symbol): Restore previous old_symbol field. - (gfc_restore_last_undo_checkpoint): New function, using body renamed - from gfc_undo_symbols. Restore the previous change set as current one. - (gfc_undo_symbols): New body. - (gfc_commit_symbols, gfc_commit_symbol, gfc_enforce_clean_symbol_state): - Call enforce_single_undo_checkpoint. - (gfc_symbol_done_2): Ditto. Free change set data. - -2013-03-03 Mikael Morin - - * symbol.c (restore_old_symbol): Fix thinko. - -2013-03-03 Mikael Morin - - * symbol.c (gfc_undo_symbols): Move code... - (restore_old_symbol): ... here as a new function. - -2013-03-03 Mikael Morin - - * Make-lang.in (F95_PARSER_OBJS): Add dependency to vec.h. - * gfortran.h: Include vec.h. - (gfc_undo_change_set): New struct. - * symbol.c (tentative_tbp): Remove struct. - (changed_syms, tentative_tbp_list): Remove variables. - (default_undo_chgset_var, latest_undo_chgset): New variables. - (save_symbol_data, gfc_get_sym_tree, gfc_undo_symbols, - gfc_commit_symbols, gfc_commit_symbol, - gfc_enforce_clean_symbol_state, gfc_get_typebound_proc): - Use latest_undo_chgset instead of changed_syms and tentative_tbp_list. - -2013-03-01 Tobias Burnus - - PR fortran/56491 - * iresolve.c (resolve_bound): Use gfc_get_string instead of xstrdup. - * symbol.c (free_components): Free proc-pointer components. - -2013-03-01 Tobias Burnus - - * trans-decl.c (gfc_trans_deferred_vars): Free expr after use. - * trans-io.c (build_dt): Ditto. - -2013-02-24 Joseph Myers - - * resolve.c (generate_component_assignments): Don't use UTF-8 - ligature in diagnostic. - -2013-02-21 Janus Weil - - PR fortran/56385 - * trans-array.c (structure_alloc_comps): Handle procedure-pointer - components with allocatable result. - -2013-02-21 Tobias Burnus - - PR fortran/56416 - * gfortran.texi (Part II: Language Reference, Extensions, - Non-Fortran Main Program): Sort @menu to match actual section order. - * intrinsic.texi (Intrinsic Procedures): Ditto. - (C_F_POINTER, PRECISION): Move to the alphabetically correct place. - -2013-02-15 Tobias Burnus - Mikael Morin - - PR fortran/56318 - * simplify.c (gfc_simplify_matmul): Fix result shape - and matmul result. - -2013-02-15 Tobias Burnus - - PR fortran/53818 - * resolve.c (apply_default_init_local): Don't create an - initializer for a result variable. - -2013-02-14 Thomas Koenig - - PR fortran/56224 - * gfortran.h (gfc_add_include_path): Add boolean argument - for warn. - * scanner.c (gfc_add_include_path): Pass along warn argument - to add_path_to_list. - * options.c (gfc_post_options): Add true warn argument to - gfc_add_include_path. - (gfc_handle_module_path_options): Likewise. - (gfc_handle_option): Also gfc_add_include_path for intrinsic - modules, without warning. - -2013-02-14 Paul Thomas - Tobias Burnus - - PR testsuite/56138 - * trans-decl.c (gfc_get_symbol_decl): Fix deferred-length - results for functions without extra result variable. - - Revert: - 2013-01-30 Tobias Burnus - - PR fortran/56138 - * trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length - results for functions without extra result variable. - -2013-02-12 Janus Weil - - PR fortran/46952 - * resolve.c (resolve_call): Do not check deferred procedures for - recursiveness. - -2013-02-09 Paul Thomas - - PR fortran/55362 - * check.c (array_check): It is an error if a procedure is - passed. - -2013-02-08 Mikael Morin - - PR fortran/54107 - * trans-types.c (gfc_get_function_type): Change a NULL backend_decl - to error_mark_node on entry. Detect recursive types. Build a variadic - procedure type if the type is recursive. Restore the initial - backend_decl. - -2013-02-07 Tobias Burnus - - PR fortran/54339 - * gfortran.texi (Standards): Mention TS29113. - (Varying Length Character): Mention deferred-length - strings. - (Fortran 2003 Status): Add unlimited polymorphic. - (TS 29113 Status): Add TYPE(*) and DIMENSION(..). - (C Interop): Update the section about TS29113. - -2013-02-06 Paul Thomas - - PR fortran/55789 - * trans-array.c (trans_array_constructor): Remove condition - 'dynamic' = true if the loop ubound is a VAR_DECL. - -2013-02-04 Paul Thomas - - PR fortran/56008 - PR fortran/47517 - * trans-array.c (gfc_alloc_allocatable_for_assignment): Save - the lhs descriptor before it is modified for reallocation. Use - it to deallocate allocatable components in the reallocation - block. Nullify allocatable components for newly (re)allocated - arrays. - -2013-02-04 Mikael Morin - - PR fortran/54195 - * resolve.c (resolve_typebound_procedures): Recurse through - resolve_symbol. - -2013-02-04 Mikael Morin - - PR fortran/54107 - PR fortran/54195 - * gfortran.h (struct gfc_symbol): New field 'resolved'. - * resolve.c (resolve_fl_var_and_proc): Don't skip result symbols. - (resolve_symbol): Skip duplicate calls. Don't check the current - namespace. - -2013-02-02 Thomas Koenig - - PR fortran/50627 - PR fortran/56054 - * decl.c (gfc_match_end): Remove half-ready namespace - from parent if the end of a block is missing. - * parse.c (parse_module): Do not put namespace into - gsymbol on error. - -2013-01-30 Tobias Burnus - - PR fortran/56138 - * trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length - results for functions without extra result variable. - -2013-01-29 Janus Weil - Mikael Morin - - PR fortran/54107 - * gfortran.h (gfc_component): Delete members 'formal' and 'formal_ns'. - (gfc_copy_formal_args,gfc_copy_formal_args_ppc,gfc_expr_replace_symbols, - gfc_expr_replace_comp): Delete. - (gfc_sym_get_dummy_args): New prototype. - * dependency.c (gfc_check_fncall_dependency): Use - 'gfc_sym_get_dummy_args'. - * expr.c (gfc_is_constant_expr): Ditto. - (replace_symbol,gfc_expr_replace_symbols,replace_comp, - gfc_expr_replace_comp): Deleted. - * frontend-passes.c (doloop_code,do_function): Use - 'gfc_sym_get_dummy_args'. - * interface.c (gfc_check_operator_interface,gfc_compare_interfaces, - gfc_procedure_use,gfc_ppc_use,gfc_arglist_matches_symbol, - gfc_check_typebound_override): Ditto. - * module.c (MOD_VERSION): Bump module version. - (mio_component): Do not read/write 'formal' and 'formal_ns'. - * resolve.c (resolve_procedure_interface,resolve_fl_derived0): Do not - copy formal args, but just keep a pointer to the interface. - (resolve_function,resolve_call,resolve_typebound_generic_call, - resolve_ppc_call,resolve_expr_ppc,generate_component_assignments, - resolve_fl_procedure,gfc_resolve_finalizers,check_generic_tbp_ambiguity, - resolve_typebound_procedure,check_uop_procedure): Use - 'gfc_sym_get_dummy_args'. - * symbol.c (free_components): Do not free 'formal' and 'formal_ns'. - (gfc_copy_formal_args,gfc_copy_formal_args_ppc): Deleted. - (gfc_sym_get_dummy_args): New function. - * trans-array.c (get_array_charlen,gfc_walk_elemental_function_args): - Use 'gfc_sym_get_dummy_args'. - * trans-decl.c (build_function_decl,create_function_arglist, - build_entry_thunks,init_intent_out_dt,gfc_trans_deferred_vars, - add_argument_checking): Ditto. - * trans-expr.c (gfc_map_fcn_formal_to_actual,gfc_conv_procedure_call, - gfc_conv_statement_function): Ditto. - * trans-stmt.c (gfc_conv_elemental_dependencies): Ditto. - * trans-types.c (create_fn_spec,gfc_get_function_type): Ditto. - -2013-01-28 Tobias Burnus - Mikael Morin - - PR fortran/53537 - * symbol.c (gfc_find_sym_tree): Don't look for the symbol outside an - interface block. - (gfc_get_ha_symtree): Let gfc_find_sym_tree lookup the parent namespace. - * decl.c (gfc_match_data_decl): Ditto. - (variable_decl): Remove undeclared type error. - (gfc_match_import): Use renamed instead of original name. - -2013-01-27 Paul Thomas - - PR fortran/55984 - PR fortran/56047 - * gfortran.h : Add associate_var to symbol_attr. - * resolve.c (resolve_assoc_var): Set associate_var attribute. - If the target class_ok is set, set it for the associate - variable. - * check.c (allocatable_check): Associate variables should not - have the allocatable attribute even if their symbols do. - * class.c (gfc_build_class_symbol): Symbols with associate_var - set will always have a good class container. - -2013-01-23 Janus Weil - - PR fortran/56081 - * resolve.c (resolve_select): Add argument 'select_type', reject - non-scalar expressions. - (resolve_select_type,resolve_code): Pass new argument to - 'resolve_select'. - -2013-01-23 Jakub Jelinek - - PR fortran/56052 - * trans-decl.c (gfc_get_symbol_decl): Set DECL_ARTIFICIAL - and DECL_IGNORED_P on select_type_temporary and don't set - DECL_BY_REFERENCE. - -2013-01-21 Thomas Koenig - - PR fortran/55919 - * scanner.c (add_path_to_list): Copy path to temporary and strip - trailing directory separators before calling stat(). - -2013-01-17 Richard Biener - - * trans-stmt.c (gfc_trans_do): Conditionally compute countm1 - dependent on sign of step, avoids repeated evaluation of - step sign test. Avoid undefined overflow issues by using unsigned - arithmetic. - -2013-01-16 Janus Weil - - PR fortran/55983 - * class.c (find_typebound_proc_uop): Check for f2k_derived instead of - asserting it. - -2013-01-16 Jakub Jelinek - Tobias Burnus - - PR driver/55884 - * lang.opt (fintrinsic-modules-path): Don't accept Joined. - (fintrinsic-modules-path=): New. - * options.c (gfc_handle_option, gfc_get_option_string, - gfc_get_option_string): Handle the latter. - -2013-01-16 Jakub Jelinek - - PR fortran/52865 - * trans-stmt.c (gfc_trans_do): Put countm1-- before conditional - and use value of countm1 before the decrement in the condition. - -2013-01-15 Paul Thomas - - PR fortran/54286 - * expr.c (gfc_check_pointer_assign): Check for presence of - 's2' before using it. - -2013-01-14 Thomas Koenig - - PR fortran/55806 - * frontend-passes.c (optimize_reduction): New function, - including prototype. - (callback_reduction): Likewise. - (gfc_run_passes): Also run optimize_reduction. - (copy_walk_reduction_arg): New function. - (dummy_code_callback): New function. - -2013-01-13 Jakub Jelinek - - PR fortran/55935 - * trans-expr.c (gfc_conv_structure): Call - unshare_expr_without_location on the ctor elements. - -2013-01-13 Paul Thomas - - PR fortran/54286 - * expr.c (gfc_check_pointer_assign): Ensure that both lvalue - and rvalue interfaces are presented to gfc_compare_interfaces. - Simplify references to interface names by using the symbols - themselves. Call gfc_compare_interfaces with s1 and s2 inter- - changed to overcome the asymmetry of this function. Do not - repeat the check for the presence of s1 and s2. - -2013-01-12 Janus Weil - - PR fortran/55072 - * trans-array.c (gfc_conv_array_parameter): No packing was done for - full arrays of derived type. - -2013-01-08 Paul Thomas - - PR fortran/55868 - * class.c (get_unique_type_string): Change $tar to STAR and - replace sprintf by strcpy where there is no formatting. - * decl.c (gfc_match_decl_type_spec): Change $tar to STAR. - -2013-01-09 Mikael Morin - - PR fortran/47203 - * module.c (check_for_ambiguous): Get the current program unit using - gfc_current_ns. - -2013-01-09 Tobias Burnus - - PR fortran/55758 - * resolve.c (resolve_symbol): Reject non-C_Bool logicals - in BIND(C) procedures with -std=f*. - -2013-01-08 Paul Thomas - - PR fortran/55618 - * trans-expr.c (gfc_conv_procedure_call): Dereference scalar - character function arguments to elemental procedures in - scalarization loops. - -2013-01-07 Tobias Burnus - - PR fortran/55763 - * gfortran.h (gfc_check_assign_symbol): Update prototype. - * decl.c (add_init_expr_to_sym, do_parm): Update call. - * expr.c (gfc_check_assign_symbol): Handle BT_CLASS and - improve error location; support components. - (gfc_check_pointer_assign): Handle component assignments. - * resolve.c (resolve_fl_derived0): Call gfc_check_assign_symbol. - (resolve_values): Update call. - (resolve_structure_cons): Avoid double diagnostic. - -2013-01-07 Tobias Burnus - Thomas Koenig - - PR fortran/55852 - * expr.c (gfc_build_intrinsic_call): Avoid clashes - with user's procedures. - * gfortran.h (gfc_build_intrinsic_call): Update prototype. - * simplify.c (gfc_simplify_size): Update call. - * class.c (finalization_scalarizer, finalization_get_offset, - finalizer_insert_packed_call, generate_finalization_wrapper): - Clean up by using gfc_build_intrinsic_call. - -2013-01-07 Tobias Burnus - - PR fortran/55763 - * resolve.c (resolve_select_type): Reject intrinsic types for - a non-unlimited-polymorphic selector. - -2013-01-06 Paul Thomas - - PR fortran/53876 - PR fortran/54990 - PR fortran/54992 - * trans-array.c (build_array_ref): Check the TYPE_CANONICAL - to see if it is GFC_CLASS_TYPE_P. - * trans-expr.c (gfc_get_vptr_from_expr): The same. - (gfc_conv_class_to_class): If the types are not the same, - cast parmese->expr to the type of ctree. - * trans-types.c (gfc_get_derived_type): GFC_CLASS_TYPE_P of - CLASS components must be set. - -2013-01-06 Mikael Morin - - PR fortran/42769 - PR fortran/45836 - PR fortran/45900 - * module.c (read_module): Don't reuse local symtree if the associated - symbol isn't exactly the one wanted. Don't reuse local symtree if it is - ambiguous. - * resolve.c (resolve_call): Use symtree's name instead of symbol's to - lookup the symtree. - -2013-01-05 Steven G. Kargl - Mikael Morin - - PR fortran/55827 - * class.c (gfc_fix_class_refs): Adapt ts initialization for the case - e->symtree == NULL. - * trans-expr.c (gfc_conv_function_expr): Init sym earlier. Use it. - -2013-01-05 Tobias Burnus - - * class.c (finalize_component): Used passed offset expr. - (finalization_get_offset): New static function. - (finalizer_insert_packed_call, generate_finalization_wrapper): Use it - to handle noncontiguous arrays. - -2013-01-04 Tobias Burnus - - * trans.c (gfc_build_final_call): New function. - * trans.h (gfc_build_final_call, gfc_conv_scalar_to_descriptor): - New function prototypes. - * trans-expr.c (gfc_conv_scalar_to_descriptor): Renamed from - conv_scalar_to_descriptor, removed static attribute. - (gfc_conv_procedure_call): Honor renaming. - -2013-01-04 Tobias Burnus - - * intrinsic.c (add_functions): New internal intrinsic - function GFC_PREFIX ("stride"). - * gfortran.h (gfc_isym_id): Add GFC_ISYM_STRIDE. - * intrinsic.h (gfc_resolve_stride): New prototypes. - * iresolve.c (gfc_resolve_stride): New function. - * trans-intrinsic.c (conv_intrinsic_stride): New static - function. - (gfc_conv_intrinsic_function): Use it. - -2013-01-04 Tobias Burnus - - * class.c (gfc_find_intrinsic_vtab): Add _final - component. - * decl.c (gfc_match_null): Remove superfluous - variadic argument to gfc_match. - -2013-01-04 Paul Thomas - - PR fortran/55172 - * match.c (copy_ts_from_selector_to_associate): Remove call to - gfc_resolve_expr and replace it with explicit setting of the - array reference type. - * resolve.c (resolve_select_type): It is an error if the - selector is coindexed. - -2013-01-04 Tobias Burnus - - PR fortran/55763 - * decl.c (gfc_match_null): Parse and reject MOLD. - -2013-01-04 Tobias Burnus - - PR fortran/55854 - PR fortran/55763 - * class.c (gfc_class_null_initializer): Fix finding the vtab. - (gfc_find_intrinsic_vtab): Use BT_VOID for some components. - -2013-01-03 Janus Weil - - PR fortran/55855 - * expr.c (gfc_check_assign): Use 'gfc_expr_attr' to evaluate attributes - of rvalue. Correct hyphenation in error message. - -2013-01-03 Jakub Jelinek - - * gfortranspec.c (lang_specific_driver): Update copyright notice - dates. + PR fortran/59654 + * resolve.c (resolve_typebound_procedures): No need to create the vtab + here. -Copyright (C) 2013 Free Software Foundation, Inc. +Copyright (C) 2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/fortran/ChangeLog-2013 b/gcc/fortran/ChangeLog-2013 new file mode 100644 index 00000000000..6c7cea7c4a4 --- /dev/null +++ b/gcc/fortran/ChangeLog-2013 @@ -0,0 +1,2083 @@ +2013-12-30 Janus Weil + + PR fortran/58998 + * resolve.c (resolve_symbol): Check that symbol is not only flavorless + but also untyped. + +2013-12-29 Janus Weil + + PR fortran/59612 + * dump-parse-tree.c (show_typespec): Check for charlen. + * invoke.texi: Fix documentation of -fdump-fortran-optimized and + -fdump-parse-tree. + +2013-12-18 Janus Weil + + PR fortran/59493 + * gfortran.h (gfc_find_intrinsic_vtab): Removed prototype. + (gfc_find_vtab): New prototype. + * class.c (gfc_find_intrinsic_vtab): Rename to 'find_intrinsic_vtab' and + make static. Minor modifications. + (gfc_find_vtab): New function. + (gfc_class_initializer): Use new function 'gfc_find_vtab'. + * check.c (gfc_check_move_alloc): Ditto. + * expr.c (gfc_check_pointer_assign): Ditto. + * interface.c (compare_actual_formal): Ditto. + * resolve.c (resolve_allocate_expr, resolve_select_type): Ditto. + * trans-expr.c (gfc_conv_intrinsic_to_class, gfc_trans_class_assign): + Ditto. + * trans-intrinsic.c (conv_intrinsic_move_alloc): Ditto. + * trans-stmt.c (gfc_trans_allocate): Ditto. + +2013-12-16 Janus Weil + + PR fortran/54949 + * symbol.c (check_conflict): Forbid abstract procedure pointers. + (gfc_add_abstract): Check for attribute conflicts. + +2013-12-16 Jakub Jelinek + + PR libgomp/59337 + * openmp.c (resolve_omp_atomic): Adjust error message. + +2013-12-15 Janus Weil + + PR fortran/59493 + * class.c (gfc_find_intrinsic_vtab): Handle BT_CLASS. + +2013-12-14 Janus Weil + + PR fortran/59502 + * primary.c (gfc_match_varspec): Check for 'class_ok'. + +2013-12-14 Janus Weil + + PR fortran/59450 + * module.c (mio_expr): Handle type-bound function expressions. + +2013-12-12 Tobias Burnus + + PR fortran/59440 + * trans-decl.c (generate_namelist_decl): Ensure debug DIE + is created by setting DECL_IGNORED_P to 0. + +2013-12-11 Janus Weil + + PR fortran/58916 + * resolve.c (conformable_arrays): Treat scalar 'e2'. + (resolve_allocate_expr): Check rank also for unlimited-polymorphic + variables. + +2013-12-10 Janus Weil + + PR fortran/35831 + * interface.c (check_dummy_characteristics): Add checks for several + attributes. + +2013-12-10 Janus Weil + + * gfortran.texi: Add possible kind values (and default) for + DOUBLE PRECISION. + * invoke.texi: Correct documentation of -fdefault-integer-8, + -fdefault-real-8 and -fdefault-double-8. + +2013-12-10 Janus Weil + + * gfortran.texi: Modify documentation of kind type parameters. + * invoke.texi: Extend documentation of -fdefault-integer-8 and + -fdefault-real-8. + +2013-12-10 Janus Weil + + * invoke.texi: Add -freal-4-real-16. Rearrange kind promotion options. + +2013-12-08 Tobias Burnus + Janus Weil + + PR fortran/58099 + PR fortran/58676 + PR fortran/41724 + * resolve.c (gfc_resolve_intrinsic): Set elemental/pure. + (resolve_fl_procedure): Reject pure dummy procedures/procedure + pointers. + (gfc_explicit_interface_required): Don't require a + match of ELEMENTAL for intrinsics. + +2013-12-07 Janus Weil + + PR fortran/59414 + * resolve.c (resolve_specific_f0): Handle CLASS-valued functions. + +2013-12-04 Tobias Burnus + + PR debug/37132 + * trans-decl.c (generate_namelist_decl, create_module_nml_decl): + New static functions. + (gfc_generate_module_vars, generate_local_vars): Call them. + (gfc_trans_use_stmts): Handle namelists for debug genertion. + +2013-12-01 Paul Thomas + + PR fortran/57354 + * trans-array.c (gfc_conv_resolve_dependencies): For other than + SS_SECTION, do a dependency check if the lhs is liable to be + reallocated. + +2013-12-01 Paul Thomas + + PR fortran/58410 + * trans-array.c (gfc_alloc_allocatable_for_assignment): Do not + use the array bounds of an unallocated array but set its size + to zero instead. + +2013-12-01 Paul Thomas + + PR fortran/34547 + * resolve.c (resolve_transfer): EXPR_NULL is always in an + invalid context in a transfer statement. + +2013-11-28 Sergey Ostanevich + + * lang.opt (Wopenmp-simd): New. + +2013-11-25 Janus Weil + + PR fortran/59143 + * interface.c (get_expr_storage_size): Handle array-valued type-bound + procedures. + +2013-11-24 Francois-Xavier Coudert + + * scanner.c (gfc_open_intrinsic_module): Remove function. + * gfortran.h (gfc_open_intrinsic_module): Remove prototype. + +2013-11-23 Janus Weil + + PR fortran/59228 + * interface.c (compare_parameter): Check for array spec. + +2013-11-22 Andrew MacLeod + + * trans.c: Add required include files from gimple.h. + * trans-expr.c: Likewise + * trans-openmp.c: Likewise + +2013-11-22 David Malcolm + + * trans.c (trans_runtime_error_vararg): Remove use of input_line + macro. + +2013-11-17 Andrew MacLeod + + * fortran/trans-intrinsic.c: Include tree-nested.h. + +2013-11-14 Andrew MacLeod + + * trans-expr.c: Include only gimplify.h and gimple.h as needed. + * trans-openmp.c: Likewise. + +2013-11-14 Diego Novillo + + * decl.c: Include stringpool.h. + * iresolve.c: Include stringpool.h. + * match.c: Include stringpool.h. + * module.c: Include stringpool.h. + * target-memory.c: Include stor-layout.h. + * trans-common.c: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + * trans-const.c: Include stor-layout.h. + * trans-decl.c: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + Include attribs.h. + * trans-expr.c: Include stringpool.h. + * trans-intrinsic.c: Include stringpool.h. + Include tree-nested.h. + Include stor-layout.h. + * trans-io.c: Include stringpool.h. + Include stor-layout.h. + * trans-openmp.c: Include stringpool.h. + * trans-stmt.c: Include stringpool.h. + * trans-types.c: Include stor-layout.h. + Include stringpool.h. + * trans.c: Include stringpool.h. + +2013-11-12 Andrew MacLeod + + * f95-lang.c: Don't include gimple.h. + * trans-array.c: Include gimple-expr.h instead of gimple.h. + * trans.c: Likewise. + * trans-decl.c: Likewise. + * trans-expr.c: Include gimplify.h. + * trans-openmp.c: Likewise. + +2013-11-07 Janus Weil + + PR fortran/58471 + * primary.c (gfc_expr_attr): Check for result symbol. + +2013-11-06 Francois-Xavier Coudert + + * gfortran.texi: Fix typo. + +2013-11-05 Tobias Burnus + + * lang.opt (-Wdate-time): New option + * cpp.c (gfc_cpp_option_data): Add warn_date_time. + (gfc_cpp_init_options, gfc_cpp_handle_option, + gfc_cpp_post_options): Handle it and pass on to libcpp. + +2013-11-05 Steven G. Kargl + + PR fortran/58989 + * check.c (gfc_check_reshape): ensure that shape is a constant + expression. + +2013-11-05 Tobias Burnus + + * lang.opt (fopenmp-simd): New option. + * gfortran.h (gfc_option_t): Add gfc_flag_openmp_simd. + * options.c (gfc_handle_option): Handle it. + +2013-11-04 Ian Lance Taylor + + * f95-lang.c (ATTR_LEAF_LIST): Define. + +2013-11-04 Paul Thomas + + PR fortran/58771 + * trans-io.c (transfer_expr): If the backend_decl for a derived + type is missing, build it with gfc_typenode_for_spec. + +2013-11-04 Paul Thomas + + PR fortran/57445 + * trans-expr.c (gfc_conv_class_to_class): Remove spurious + assert. + +2013-10-29 Tobias Burnus + + PR fortran/44350 + * parse.c (parse_spec): Add C1116 constraint + check for BLOCK DATA. + +2013-10-29 Paul Thomas + + PR fortran/58793 + * trans-types.c (gfc_typenode_for_spec): Add typenode for + BT_HOLLERITH. Note that the length is incorrect but unusable. + + PR fortran/58858 + * target-memory.c (gfc_element_size): Add element sizes for + BT_VOID and BT_ASSUMED, using gfc_typenode_for_spec. + +2013-10-24 Tobias Burnus + + PR fortran/44646 + * trans-stmt.c (struct forall_info): Add do_concurrent field. + (gfc_trans_forall_1): Set it for do concurrent. + (gfc_trans_forall_loop): Mark those as annot_expr_ivdep_kind. + +2013-10-23 Tobias Burnus + + PR fortran/58793 + * interface.c (compare_parameter): Reject passing TYPE(*) + to CLASS(*). + +2013-10-22 Paul Thomas + + PR fortran 57893 + * class.c : Include target-memory.h. + (gfc_find_intrinsic_vtab) Build a minimal expression so that + gfc_element_size can be used to obtain the storage size, rather + that the kind value. + +2013-10-21 Tobias Burnus + + PR fortran/58803 + * decl.c (match_ppc_decl): Prevent later + double free. + +2013-10-17 Andrew MacLeod + + * trans-openmp.c: Include omp-low.h. + +2013-10-16 Tobias Burnus + + PR fortran/58652 + * interface.c (compare_parameter): Accept passing CLASS(*) + to CLASS(*). + +2013-10-16 Tobias Burnus + + * intrinsic.texi (OpenMP Modules): Update to OpenMPv4. + Document omp_proc_bind_kind. + +2013-10-15 Tobias Burnus + + PR fortran/58652 + * trans-intrinsic.c (conv_intrinsic_move_alloc): Fix handling + of CLASS(*) variables. + +2013-10-14 Tobias Burnus + + PR fortran/58658 + * expr.c (gfc_check_vardef_context): Fix pointer diagnostic + for CLASS(*). + +2013-10-11 Jakub Jelinek + + * trans-openmp.c (gfc_omp_clause_default_ctor, + gfc_omp_clause_dtor): Return NULL for OMP_CLAUSE_REDUCTION. + * f95-lang.c (ATTR_NULL, DEF_FUNCTION_TYPE_8): Define. + * types.def (DEF_FUNCTION_TYPE_8): Document. + (BT_FN_VOID_OMPFN_PTR_UINT, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG, + BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove. + (BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT, + BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL, BT_FN_VOID_UINT_UINT, + BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR, + BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR, + BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New. + +2013-10-10 Tobias Burnus + + PR fortran/58226 + * options.c (gfc_get_option_string): Handle zero arg case. + +2013-10-02 Tobias Burnus + + PR fortran/58593 + * trans-expr.c (gfc_conv_string_tmp): Fix obtaining + the byte size of a single character. + +2013-10-01 Tobias Burnus + + PR fortran/58579 + * trans-expr.c (gfc_conv_string_tmp): Correctly obtain + the byte size of a single character. + +2013-09-27 Janne Blomqvist + + * intrinsic.texi (DATE_AND_TIME): Fix example. + +2013-09-25 Tobias Burnus + + PR fortran/58436 + * class.c (generate_finalization_wrapper): Handle CLASS(*). + +2013-09-25 Tobias Burnus + + PR fortran/57697 + PR fortran/58469 + * resolve.c (generate_component_assignments): Avoid double free + at runtime and freeing a still-being used expr. + +2013-09-25 Tom Tromey + + * Make-lang.in (fortran_OBJS): Use fortran/gfortranspec.o. + (gfortranspec.o): Remove. + (CFLAGS-fortran/gfortranspec.o): New variable. + (GFORTRAN_D_OBJS): Update. + ($(F95_PARSER_OBJS), fortran/openmp.o, GFORTRAN_TRANS_DEPS) + (fortran/f95-lang.o, fortran/scanner.o, fortran/convert.o) + (fortran/frontend-passes.o, fortran/trans.o, fortran/trans-decl.o) + (fortran/trans-types, fortran/trans-const.o, fortran/trans-expr.o) + (fortran/trans-stmt.o, fortran/trans-openmp.o, fortran/trans-io.o) + (fortran/trans-array.o, fortran/trans-intrinsic.o) + (fortran/dependency.o, fortran/trans-common.o, fortran/resolve.o) + (fortran/data.o, fortran/options.o, fortran/cpp.o) + (fortran/scanner.o, fortran/module.o): Remove. + +2013-09-25 Tom Tromey + + * Make-lang.in (gfortranspec.o): Don't use subshell. + +2013-09-23 Janus Weil + + PR fortran/58355 + * decl.c (check_extended_derived_type): Prevent segfault, modify error + message. + +2013-09-20 Janus Weil + + PR fortran/58099 + * expr.c (gfc_check_pointer_assign): Remove second call to + 'gfc_compare_interfaces' with swapped arguments. + * interface.c (gfc_compare_interfaces): Symmetrize the call to + 'check_result_characteristics' by calling it with swapped arguments. + +2013-09-18 Tobias Burnus + + * expr.c (gfc_check_assign_symbol): Free lvalue.ref. + +2013-09-18 Tobias Burnus + + PR fortran/43366 + * primary.c (gfc_variable_attr): Also handle codimension. + * resolve.c (resolve_ordinary_assign): Add invalid-diagnostic for + polymorphic assignment. + +2013-09-16 Tobias Burnus + + PR fortran/58356 + * class.c (generate_finalization_wrapper): Init proc_tree if + not yet resolved. + +2013-09-16 Tobias Burnus + + PR fortran/57697 + * resolve.c (generate_component_assignments): Correctly handle the + case that the LHS is not allocated. + +2013-09-15 Tobias Burnus + + PR fortran/57697 + * resolve.c (generate_component_assignments): Handle unallocated + LHS with defined assignment of components. + +2013-09-12 Brooks Moses + + PR driver/42955 + * Make-lang.in: Do not install driver binaries in $(target)/bin. + +2013-09-09 Tobias Burnus + + * invoke.texi (Error and Warning Options): Add hyphen. + +2013-09-02 Thomas Koenig + + PR fortran/PR56519 + * gfortran.h: Declare gfc_do_concurrent_flag as extern. + * resolve.c: Rename do_concurrent_flag to gfc_do_concurrent_flag + and make non-static. + (resolve_function): Use gfc_do_concurrent_flag instead of + do_concurrent_flag. + (pure_subroutine): Likewise. + (resolve_code): Likewise. + (resolve_types): Likewise. + * intrinsic.c (gfc_intrinsic_sub_interface): Raise error for + non-pure intrinsic subroutines within DO CONCURRENT. + +2013-08-29 Thomas Koenig + + PR fortran/52243 + * trans-expr.c (is_runtime_conformable): New function. + * gfc_trans_assignment_1: Use it. + +2013-08-26 Thomas Koenig + + PR fortran/58146 + * array.c (gfc_ref_dimen_size): If possible, use + gfc_dep_difference to calculate array refrence + sizes. Fall back to integer code otherwise. + * dependency.c (discard_nops). Move up. + Also discarde widening integer conversions. + (gfc_dep_compare_expr): Use discard_nops. + +2013-08-23 Mikael Morin + + PR fortran/57798 + * trans-array.c (gfc_conv_ss_startstride, set_loop_bounds, + gfc_set_delta): Generate preliminary code before the outermost loop. + +2013-08-23 Janus Weil + + PR fortran/57843 + * interface.c (gfc_extend_assign): Look for type-bound assignment + procedures before non-typebound. + +2013-08-23 Mikael Morin + + * trans-array.c (gfc_conv_section_startstride): Move &loop->pre access + to the callers. + (gfc_conv_ss_startstride, gfc_conv_expr_descriptor): Update callers. + +2013-08-22 Janus Weil + + PR fortran/58185 + * match.c (copy_ts_from_selector_to_associate): Only build class + container for polymorphic selector. Some cleanup. + +2013-08-20 Janus Weil + + PR fortran/53655 + * trans-decl.c (generate_local_decl): Check if type has any components. + +2013-08-19 Janus Weil + + PR fortran/46271 + * openmp.c (resolve_omp_clauses): Bugfix for procedure pointers. + +2013-08-12 Thomas Koenig + + PR fortran/56666 + * gfortran.h (gfc_option_t): Add warn_zerotrip. + * invoke.texi (-Wzerotrip): Document option. + * lang.opt (Wzerotrip): Add. + * options.c (gfc_init_options): Initialize warn_zerotrip. + (set_Wall): Add handling of warn_zerotrip. + (gfc_handle_option): Handle OPT_Wzerotrip. + * resolve.c (gfc_resolve_iterator): Honor + gfc_option.warn_zerotrip; update error message to show + how to suppress the warning. + +2013-08-09 Janus Weil + + * gfortran.h (gfc_get_code): Modified prototype. + * class.c (finalize_component, finalization_scalarizer, + finalization_get_offset, finalizer_insert_packed_call, + generate_finalization_wrapper, gfc_find_derived_vtab, + gfc_find_intrinsic_vtab): Use 'gfc_get_code'. + * io.c (match_io_iterator, match_io_element, terminate_io, get_io_list, + gfc_match_inquire): Call 'gfc_get_code' with argument. + * match.c (match_simple_forall, gfc_match_forall, gfc_match_goto, + gfc_match_nullify, gfc_match_call, match_simple_where, gfc_match_where): + Ditto. + * parse.c (new_level): Ditto. + (add_statement): Use XCNEW. + * resolve.c (resolve_entries, resolve_allocate_expr, + resolve_select_type, build_assignment, build_init_assign): Call + 'gfc_get_code' with argument. + * st.c (gfc_get_code): Add argument 'op'. + * trans-expr.c (gfc_trans_class_array_init_assign): Call 'gfc_get_code' + with argument. + * trans-stmt.c (gfc_trans_allocate): Ditto. + +2013-08-09 Janus Weil + + PR fortran/58058 + * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Free the temporary + string, if necessary. + +2013-08-06 Martin Jambor + + PR fortran/57987 + * trans-decl.c (gfc_generate_function_code): Never call + cgraph_finalize_function on nested functions. + +2013-08-06 Janus Weil + + PR fortran/57306 + * class.c (gfc_class_null_initializer): Rename to + 'gfc_class_initializer'. Treat non-NULL init-exprs. + * gfortran.h (gfc_class_null_initializer): Update prototype. + * trans-decl.c (gfc_get_symbol_decl): Treat class variables. + * trans-expr.c (gfc_conv_initializer): Ditto. + (gfc_trans_subcomponent_assign): Renamed gfc_class_null_initializer. + +2013-07-30 Tobias Burnus + + PR fortran/57530 + * symbol.c (gfc_type_compatible): A type is type compatible with + a class if both have the same declared type. + * interface.c (compare_type): Reject CLASS/TYPE even if they + are type compatible. + +2013-07-30 Tobias Burnus + + PR fortran/57530 + * trans-expr.c (gfc_trans_class_assign): Handle CLASS array + functions. + (gfc_trans_pointer_assign): Ditto and support pointer assignment of + a polymorphic var to a nonpolymorphic var. + +2013-07-22 Po Chang + + * match.c (gfc_match_call): Exit loop after setting i. + + * resolve.c (resolve_variable): Exit loop after setting seen. + + * expr.c (gfc_check_pointer_assign): Exit loop after setting warn. + + * trans-array.c (set_loop_bounds): Exit loop after setting + nonoptional_arr. + + * trans-io.c (gfc_trans_transfer): Exit loop after setting seen_vector. + +2013-07-28 Thomas Koenig + + PR fortran/58009 + * expr.c (gfc_check_vardef_context): Check for same values in + vector expression subscripts. + +2013-07-27 Tobias Burnus + + PR fortran/57991 + * interface.c (check_some_aliasing): Also warn for intent OUT/OUT. + +2013-07-27 Janus Weil + + PR fortran/57285 + * check.c (dim_rank_check): Re-enable this check for CLASS arrays. + +2013-07-25 Janus Weil + + PR fortran/57966 + * resolve.c (resolve_typebound_function): Make sure the declared type, + including its type-bound procedures, is resolved before resolving the + actual type-bound call. + +2013-07-25 Janus Weil + + PR fortran/57639 + * interface.c (compare_parameter): Check for class_ok. + * simplify.c (gfc_simplify_same_type_as): Ditto. + +2013-07-23 Ondřej Bílka + + * decl.c: Fix comment typos. + * interface.c: Likewise. + * trans-array.c: Likewise. + * trans.c: Likewise. + +2013-07-22 Tobias Burnus + + PR fortran/57906 + PR fortran/52052 + * class.c (gfc_build_class_symbol): Set coarray_comp. + * trans-array.c (structure_alloc_comps): For coarrays, + directly use the data pointer address. + +2013-07-22 Chang + + * trans-decl.c (gfc_build_dummy_array_decl): Exit loop after + setting PACKED_PARTIAL. + +2013-07-22 Tobias Burnus + + * trans-array.c (gfc_array_allocate): Correct memory-leak patch. + +2013-07-22 Tobias Burnus + + * trans-array.c (gfc_array_allocate, + gfc_trans_deferred_array): Plug memory leak. + +2013-07-21 Ondřej Bílka + + * trans-decl.c: Fix comment typos. + * trans-expr.c: Ditto. + +2013-07-21 Thomas Koenig + + PR fortran/56937 + * dependency.c (gfc_dep_resolver): Treat identical + array subscripts as identical; don't unconditionally + return a dependency if an array subscript is found. + +2013-07-21 Tobias Burnus + + PR fortran/35862 + * libgfortran.h (GFC_FPE_DOWNWARD, GFC_FPE_TONEAREST, + GFC_FPE_TOWARDZERO, GFC_FPE_UPWARD): New defines. + +2013-07-21 Tobias Burnus + + PR fortran/57894 + * check.c (min_max_args): Add keyword= check. + +2013-07-17 Mikael Morin + Tobias Burnus + + PR fortran/57895 + * match.c (gfc_match_name): Ensure that the error + message regarding -fdollar-ok gets printed. + (gfc_match_common): Avoid multiple freeing. + +2013-07-16 Tobias Burnus + + PR fortran/57912 + * trans-expr.c (gfc_trans_scalar_assign): Correct if + condition for caf realloc. + +2013-07-15 Tobias Burnus + + * trans-array.h (gfc_deallocate_alloc_comp_no_caf, + gfc_reassign_alloc_comp_caf): New prototype. + * trans-array.c (enum): Add DEALLOCATE_ALLOC_COMP_NO_CAF + and COPY_ALLOC_COMP_CAF. + (structure_alloc_comps): Handle it. + (gfc_reassign_alloc_comp_caf, + gfc_deallocate_alloc_comp_no_caf): New function. + (gfc_alloc_allocatable_for_assignment): Call it. + * trans-expr.c (gfc_trans_scalar_assign, + gfc_trans_arrayfunc_assign, gfc_trans_assignment_1): Ditto. + * parse.c (parse_derived): Correctly set coarray_comp. + * resolve.c (resolve_symbol): Improve error wording. + +2013-07-15 Tobias Burnus + + PR fortran/37336 + * trans.c (gfc_add_comp_finalizer_call): New function. + * trans.h (gfc_add_comp_finalizer_call): New prototype. + * trans-array.c (structure_alloc_comps): Call it. + +2013-07-14 Thomas Koenig + Tobias Burnus + + PR fortran/52669 + * trans-decl.c (gfc_finish_var_decl): Move setting of + PRIVATE for a module variable if the module has a private + default or -fmodule-private is given to... + (gfc_create_module_variable): here. Optionally + warn about private module variable which is not used. + +2013-07-08 Tobias Burnus + + PR fortran/57834 + * check.c (is_c_interoperable): Add special case for c_f_pointer. + (explicit-size, gfc_check_c_f_pointer, gfc_check_c_loc): Update + call. + +2013-07-08 Tobias Burnus + + PR fortran/50554 + * io.c (match_inquire_element): Add missing do-var check. + +2013-07-08 Tobias Burnus + + PR fortran/57785 + * simplify.c (compute_dot_product): Complex conjugate for + dot_product. + (gfc_simplify_dot_product, gfc_simplify_matmul): Update call. + +2013-07-08 Tobias Burnus + + PR fortran/57469 + * trans-decl.c (generate_local_decl): Don't warn that + a dummy is unused, when it is in a namelist. + +2013-07-01 Dominique d'Humieres + + PR fortran/54788 + * array.c (spec_size): handle the case as==NULL. + +2013-06-26 Tobias Burnus + + PR fortran/29800 + * trans-array.c (gfc_conv_array_ref): Improve out-of-bounds + diagnostic message. + * trans-array.c (gfc_conv_array_ref): Update prototype. + * trans-expr.c (gfc_conv_variable): Update call. + +2013-06-24 Steven G. Kargl + Francois-Xavier Coudert + Dominique d'Humieres + + PR fortran/52413 + * simplify.c (gfc_simplify_fraction): Fix the sign of negative values. + +2013-06-21 Tobias Burnus + + PR fortran/37336 + * trans-array.c (gfc_trans_deferred_array): Call the + finalizer for nonallocatable local variables. + * trans-decl.c (gfc_get_symbol_decl): Add local + finalizable vars to the deferred list. + (gfc_trans_deferred_vars): Call gfc_trans_deferred_array + for those. + +2013-06-21 Tobias Burnus + + * trans-array.c (gfc_alloc_allocatable_for_assignment): Allocate + at least one byte. + * trans-expr.c (alloc_scalar_allocatable_for_assignment): Ditto. + +2013-06-20 Tobias Burnus + + * resolve.c (get_temp_from_expr): Don't set FL_VARIABLE twice. + +2013-06-17 Tobias Burnus + + * gfortran.h (gfc_option_t): Add fpe_summary. + * gfortran.texi (_gfortran_set_options): Update. + * invoke.texi (-ffpe-summary): Add doc. + * lang.opt (ffpe-summary): Add flag. + * options.c (gfc_init_options, gfc_handle_option): Handle it. + (gfc_handle_fpe_option): Renamed from gfc_handle_fpe_trap_option, + also handle fpe_summary. + * trans-decl.c (create_main_function): Update + _gfortran_set_options call. + +2013-06-15 Mikael Morin + + PR fortran/49074 + PR fortran/56136 + * dependency.c (gfc_check_argument_var_dependency): Return 0 in the + array constructor case. + +2013-06-14 Tobias Burnus + + PR fortran/57508 + * resolve.c (get_temp_from_expr): Don't copy function + result attributes to temporary. + +2013-06-14 Tobias Burnus + + PR fortran/57596 + * trans-decl.c (gfc_trans_deferred_vars): Honor OPTIONAL + for nullify and deferred-strings' length variable. + +2013-06-13 Mikael Morin + + PR fortran/49074 + * trans-expr.c (gfc_conv_variable): Don't walk the reference chain. + Handle NULL array references. + (gfc_conv_procedure_call): Remove code handling NULL array references. + +2013-06-11 Tobias Burnus + + PR fortran/57535 + * trans-array.c (build_class_array_ref): Fix ICE for + function result variables. + +2013-06-08 Tobias Burnus + + PR fortran/37336 + * trans-decl.c (init_intent_out_dt): Call finalizer + when appropriate. + +2013-06-08 Tobias Burnus + + PR fortran/57553 + * simplify.c (gfc_simplify_storage_size): Handle literal + strings. + * trans-intrinsic.c (gfc_conv_intrinsic_storage_size): + Add missing fold_convert. + +2013-06-07 Tobias Burnus + + PR fortran/57549 + * array.c (gfc_match_array_constructor): Call + gfc_match_type_spec instead of gfc_match_decl_type_spec. + * match.c (gfc_match_type_spec): Renamed from match_type_spec. + (gfc_match_type_is, gfc_match_allocate): Update call. + * match.h (gfc_match_type_spec): Add prototype. + +2013-06-07 Tobias Burnus + + PR fortran/57556 + * trans.c (gfc_build_final_call): Init block before use. + +2013-06-06 Tobias Burnus + + PR fortran/57542 + * trans.c (gfc_build_final_call): Add se.pre to the block + and modify the assert. + +2013-06-04 Tobias Burnus + + PR fortran/37336 + * trans.h (gfc_build_final_call): Remove prototype. + (gfc_add_finalizer_call): Add prototype. + * trans-array.c (gfc_trans_dealloc_allocated): Support finalization. + (structure_alloc_comps): Update caller. + (gfc_trans_deferred_array): Call finalizer. + * trans-array.h (gfc_trans_dealloc_allocated): Update prototype. + * trans-decl.c (gfc_trans_deferred_vars): Don't deallocate/finalize + variables of the main program. + * trans-expr.c (gfc_conv_procedure_call): Support finalization. + * trans-openmp.c (gfc_omp_clause_dtor, + gfc_trans_omp_array_reduction): Update calls. + * trans-stmt.c (gfc_trans_deallocate): Avoid double deallocation + of alloc components. + * trans.c (gfc_add_finalizer_call): New function. + (gfc_deallocate_with_status, + gfc_deallocate_scalar_with_status): Call it + (gfc_build_final_call): Fix handling of scalar coarrays, + move up in the file and make static. + +2013-06-01 Janus Weil + Mikael Morin + + * error.c (get_terminal_width): Only limit the width if we're + outputting to a terminal. Try to determine width via ioctl. + +2013-06-01 Tobias Burnus + + * decl.c (add_global_entry): Take locus. + (gfc_match_entry): Update call. + (gfc_match_end): Better error location. + * parse.c (parse_block_data, parse_module, add_global_procedure, + add_global_program): Use better locus data. + +2013-05-31 Tobias Burnus + + PR fortran/57456 + * trans-array.c (gfc_array_init_size): Use passed type spec, + when available. + (gfc_array_allocate): Pass typespec on. + * trans-array.h (gfc_array_allocate): Update prototype. + * trans-stmt.c (gfc_trans_allocate): Pass typespec on. + +2013-05-31 Janus Weil + + PR fortran/54190 + PR fortran/57217 + * gfortran.h (gfc_terminal_width): Remove prototype. + * error.c (get_terminal_width): Moved here from misc.c. Renamed. + Try to determine terminal width from environment variable. + * interface.c (compare_type, compare_rank): New functions. Fix assumed + type/rank handling. + (compare_type_rank, check_dummy_characteristics, + check_result_characteristics, gfc_compare_interfaces): Use them. + (symbol_rank): Slightly modified and moved. + * misc.c (gfc_terminal_width): Moved to error.c. + +2013-05-30 Janus Weil + + PR fortran/54189 + * resolve.c (check_assumed_size_reference): Check for e->ref. + +2013-05-30 Tobias Burnus + + PR fortran/57458 + * interface.c (compare_parameter): Update C1239/C1240 constraint + check for assumed-rank/TS29113. + +2013-05-29 Tobias Burnus + + PR fortran/37336 + * class.c (finalize_component): Fix coarray array refs. + (generate_finalization_wrapper): Only gfc_convert_type_warn + when the kind value is different. + (gfc_find_intrinsic_vtab): _copy's dst is now intent(inout). + (gfc_find_derived_vtab): Ditto. Enable finalization-wrapper + generation. + * module.c (MOD_VERSION): Bump. + (gfc_dump_module, gfc_use_module): Remove empty line in .mod. + * trans-array.c (gfc_conv_descriptor_token): Accept nonrestricted + void pointer. + (gfc_array_allocate, structure_alloc_comps): Don't nullify for + BT_CLASS allocations. + * trans-stmt.c (gfc_trans_allocate): Ditto. + +2013-05-29 Tobias Burnus + + PR fortran/37336 + * resolve.c (gfc_resolve_finalizers): Remove not implemented error. + +2013-05-28 Tobias Burnus + + * trans-expr.c (gfc_conv_procedure_call): Deallocate + polymorphic arrays for allocatable intent(out) dummies. + (gfc_reset_vptr): New function, moved from trans-stmt.c + and extended. + * trans-stmt.c (reset_vptr): Remove. + (gfc_trans_deallocate): Update calls. + * trans.h (gfc_reset_vptr): New prototype. + +2013-05-28 Dominique d'Humieres + + PR fortran/57435 + * module.c (check_for_ambiguous): Avoid null pointer deref. + +2013-05-28 Janus Weil + Tobias Burnus + + PR fortran/57217 + * interface.c (check_dummy_characteristics): Symmetrize type check. + +2013-05-27 Bud Davis + + PR fortran/50405 + * resolve.c (resolve_formal_arglist): Detect error when an argument + has the same name as the function. + +2013-05-27 Tobias Burnus + + * expr.c (gfc_build_intrinsic_call): Make symbol as attr.artificial. + * intrinsic.c (gfc_is_intrinsic): Disable std check for those. + +2013-05-22 Tobias Burnus + + * resolve.c (get_temp_from_expr): Change mangling to + start always with a _. + +2013-05-22 Tobias Burnus + + * resolve.c (get_temp_from_expr): Fix temp var mangling. + +2013-05-22 Tobias Burnus + + PR fortran/57364 + * resolve.c (get_temp_from_expr): Commit created sym. + +2013-05-22 Tobias Burnus + + PR fortran/57338 + * intrinsic.c (do_check): Move some checks to ... + (do_ts29113_check): ... this new function. + (check_specific, gfc_intrinsic_sub_interface): Call it. + +2013-05-22 Janne Blomqvist + + * intrinsic.texi (RANDOM_SEED): Improve example. + +2013-05-21 Tobias Burnus + + PR fortran/57035 + * intrinsic.c (do_check): Add constraint check for + NO_ARG_CHECK, assumed rank and assumed type. + * gfortran.texi (NO_ARG_CHECK): Minor wording change, + allow PRESENT intrinsic. + +2013-05-20 Tobias Burnus + + PR fortran/48858 + PR fortran/55465 + * decl.c (add_global_entry): Add sym_name. + * parse.c (add_global_procedure): Ditto. + * resolve.c (resolve_bind_c_derived_types): Handle multiple decl for + a procedure. + (resolve_global_procedure): Handle gsym->ns pointing to a module. + * trans-decl.c (gfc_get_extern_function_decl): Ditto. + +2013-05-20 Tobias Burnus + + PR fortran/48858 + * decl.c (add_global_entry): Use nonbinding name + only for F2003 or if no binding label exists. + (gfc_match_entry): Update calls. + * parse.c (gfc_global_used): Improve error message. + (add_global_procedure): Use nonbinding name + only for F2003 or if no binding label exists. + (gfc_parse_file): Update call. + * resolve.c (resolve_global_procedure): Use binding + name when available. + * trans-decl.c (gfc_get_extern_function_decl): Ditto. + +2013-05-20 Tobias Burnus + + PR fortran/48858 + * decl.c (gfc_match_bind_c_stmt): Add gfc_notify_std. + * match.c (gfc_match_common): Don't add commons to gsym. + * resolve.c (resolve_common_blocks): Add to gsym and + add checks. + (resolve_bind_c_comms): Remove. + (resolve_types): Remove call to the latter. + * trans-common.c (gfc_common_ns): Remove static var. + (gfc_map_of_all_commons): Add static var. + (build_common_decl): Correctly handle binding label. + +2013-05-16 Jason Merrill + + * Make-lang.in (f951$(exeext)): Use link mutex. + +2013-05-05 Tobias Burnus + + * resolve.c (conformable_arrays): Avoid segfault + when ar.start[i] == NULL. + +2013-05-05 Tobias Burnus + + PR fortran/57141 + * decl.c (gfc_match_null): Permit use-associated + NULL intrinsic. + +2013-05-04 Tobias Burnus + + * decl.c (gfc_verify_c_interop_param): Permit allocatable + and pointer with -std=f2008ts. + +2013-05-02 Tobias Burnus + + PR fortran/57142 + * simplify.c (gfc_simplify_size): Renamed from + simplify_size; fix kind=8 handling. + (gfc_simplify_size): New function. + (gfc_simplify_shape): Add range check. + * resolve.c (resolve_function): Fix handling + for ISYM_SIZE. + +2013-05-01 Thomas Koenig + + * frontend-passes.c (optimize_power): Fix typo + in comment. + +2013-04-30 Thomas Koenig + + PR fortran/57071 + * frontend-passes.c (optimize_power): Simplify + 1**k to 1. + +2013-04-28 Tobias Burnus + + PR fortran/57114 + * intrinsic.texi (RANK): Correct syntax description and + expected result. + +2013-04-28 Tobias Burnus + + PR fortran/57093 + * trans-types.c (gfc_get_element_type): Fix handling + of scalar coarrays of type character. + * intrinsic.texi (PACK): Add missing ")". + +2013-04-28 Thomas Koenig + + PR fortran/57071 + * frontend-passes (optimize_power): New function. + (optimize_op): Use it. + +2013-04-25 Janne Blomqvist + + PR bootstrap/57028 + * Make-lang.in (f951): Link in ZLIB. + (CFLAGS-fortran/module.o): Add zlib include directory. + +2013-04-22 Janus Weil + + PR fortran/53685 + PR fortran/57022 + * check.c (gfc_calculate_transfer_sizes): Fix for array-valued SOURCE + expressions. + * simplify.c (gfc_simplify_sizeof,gfc_simplify_storage_size): Get rid + of special treatment for EXPR_ARRAY. + * target-memory.h (gfc_element_size): New prototype. + * target-memory.c (size_array): Remove. + (gfc_element_size): New function. + (gfc_target_expr_size): Modified to always return the full size of the + expression. + +2013-04-20 Tobias Burnus + + PR fortran/56907 + * trans-intrinsic.c (conv_isocbinding_function): Don't pack array + passed to C_LOC + +2013-04-19 Thomas Koenig + Mikael Morin + + PR fortran/56872 + * frontend-passes.c (copy_walk_reduction_arg): Change argument type + to gfc_constructor. If it has an iterator, wrap the copy of its + expression in an array constructor with that iterator. Don't special + case function expressions. + (callback_reduction): Update caller. Don't return early if there is + an iterator. + +2013-04-18 Tobias Burnus + + * expr.c (find_array_element): Don't copy expr. + * data.c (create_character_initializer): Free expr. + * frontend-passes.c (combine_array_constructor): Ditto. + * match.c (match_typebound_call, gfc_match_select_type): Ditto. + * resolve.c (resolve_typebound_function): Free gfc_ref. + +2013-04-18 Tobias Burnus + + PR fortran/56994 + * invoke.texi (NEAREST): S argument is not optional. + +2013-04-17 Janus Weil + + PR fortran/56814 + * interface.c (check_result_characteristics): Get result from interface + if present. + +2013-04-17 Janne Blomqvist + + PR fortran/40958 + * scanner.h: New file. + * Make-lang.in: Dependencies on scanner.h. + * scanner.c (gfc_directorylist): Move to scanner.h. + * module.c: Don't include md5.h, include scanner.h and zlib.h. + (MOD_VERSION): Add comment about backwards compatibility. + (module_fp): Change type to gzFile. + (ctx): Remove. + (gzopen_included_file_1): New function. + (gzopen_included_file): New function. + (gzopen_intrinsic_module): New function. + (write_char): Use gzputc. + (read_crc32_from_module_file): New function. + (read_md5_from_module_file): Remove. + (gfc_dump_module): Use gz* functions instead of stdio, check gzip + crc32 instead of md5. + (read_module_to_tmpbuf): Use gz* functions instead of stdio. + (gfc_use_module): Use gz* functions. + +2013-04-16 Tobias Burnus + + PR fortran/39505 + * decl.c (ext_attr_list): Add EXT_ATTR_NO_ARG_CHECK. + * gfortran.h (ext_attr_id_t): Ditto. + * gfortran.texi (GNU Fortran Compiler Directives): + Document it. + * interface.c (compare_type_rank): Ignore rank for NO_ARG_CHECK. + (compare_parameter): Ditto - and regard as unlimited polymorphic. + * resolve.c (resolve_symbol, resolve_variable): Add same constraint + checks as for TYPE(*); turn dummy to TYPE(*),dimension(*). + (gfc_explicit_interface_required): Require explicit interface + for NO_ARG_CHECK. + +2013-04-16 Janus Weil + + PR fortran/56968 + * expr.c (gfc_check_pointer_assign): Handle generic functions returning + procedure pointers. + +2013-04-16 Tobias Burnus + + PR fortran/56969 + * intrinsic.c (gfc_intrinsic_func_interface): Don't set + module name to "(intrinsic)" for intrinsics from intrinsic + modules. + +2013-04-15 Tobias Burnus + + * intrinsic.texi (SYSTEM_CLOCK): Recommend kind=8. + +2013-04-15 Janne Blomqvist + + PR fortran/56919 + * intrinsics.texi (SYSTEM_CLOCK): Update documentation. + +2013-04-15 Tobias Burnus + + * class.c (gfc_find_intrinsic_vtab): Removed unused var. + * dependency.c (check_data_pointer_types): Fix check. + * frontend-passes.c (check_data_pointer_types): Remove + superfluous statement. + * parse.c (decode_omp_directive): Add missing break. + * resolve.c (resolve_typebound_subroutine: Free variable. + * trans-decl.c (create_function_arglist): Correct condition. + +2013-04-14 Mikael Morin + + PR fortran/56816 + * match.c (gfc_match_select_type): Add syntax error. Move namespace + allocation and cleanup... + * parse.c (decode_statement): ... here. + +2013-04-13 Janus Weil + + PR fortran/55959 + * expr.c (gfc_simplify_expr): Branch is not unreachable. + +2013-04-12 Janus Weil + + PR fortran/56266 + * primary.c (gfc_match_varspec): Turn gcc_assert into MATCH_ERROR. + +2013-04-12 Tobias Burnus + + PR fortran/56929 + * trans-array.c (duplicate_allocatable): Fix handling + of scalar coarrays. + +2013-04-12 Janus Weil + + PR fortran/56261 + * gfortran.h (gfc_explicit_interface_required): New prototype. + * expr.c (gfc_check_pointer_assign): Check if an explicit interface is + required in a proc-ptr assignment. + * interface.c (check_result_characteristics): Extra check. + * resolve.c (gfc_explicit_interface_required): New function. + (resolve_global_procedure): Use new function + 'gfc_explicit_interface_required'. Do a full interface check. + +2013-04-12 Tobias Burnus + + PR fortran/56845 + * trans-decl.c (gfc_trans_deferred_vars): Restrict + static CLASS init to SAVE and -fno-automatic. + +2013-04-12 Tobias Burnus + + PR fortran/56845 + * trans-decl.c (gfc_trans_deferred_vars): Set _vptr for + allocatable static BT_CLASS. + * trans-expr.c (gfc_class_set_static_fields): New function. + * trans.h (gfc_class_set_static_fields): New prototype. + +2013-04-11 Janne Blomqvist + + * gfortran.h: Remove enum gfc_try, replace gfc_try with bool type. + * arith.c: Replace gfc_try with bool type. + * array.c: Likewise. + * check.c: Likewise. + * class.c: Likewise. + * cpp.c: Likewise. + * cpp.h: Likewise. + * data.c: Likewise. + * data.h: Likewise. + * decl.c: Likewise. + * error.c: Likewise. + * expr.c: Likewise. + * f95-lang.c: Likewise. + * interface.c: Likewise. + * intrinsic.c: Likewise. + * intrinsic.h: Likewise. + * io.c: Likewise. + * match.c: Likewise. + * match.h: Likewise. + * module.c: Likewise. + * openmp.c: Likewise. + * parse.c: Likewise. + * parse.h: Likewise. + * primary.c: Likewise. + * resolve.c: Likewise. + * scanner.c: Likewise. + * simplify.c: Likewise. + * symbol.c: Likewise. + * trans-intrinsic.c: Likewise. + * trans-openmp.c: Likewise. + * trans-stmt.c: Likewise. + * trans-types.c: Likewise. + +2013-04-09 Tobias Burnus + + * gfortran.texi (KIND Type Parameters, + Internal representation of LOGICAL variables): Add crossrefs. + (Intrinsic Types): Mention issues with _Bool interop. + (Naming and argument-passing conventions): New section. + +2013-04-08 Thomas Koenig + + PR fortran/56782 + * frontend-passes.c (callback_reduction): Don't do + any simplification if there is only a single element + which has an iterator. + +2013-04-07 Tobias Burnus + + PR fortran/56849 + * iresolve.c (gfc_resolve_reshape): Set shape also + with order=. + +2013-04-04 Janus Weil + + PR fortran/40881 + * match.c (gfc_match_return): Remove standard notification. + * primary.c (gfc_match_actual_arglist): Add standard notification. + +2013-04-04 Tobias Burnus + + PR fortran/50269 + * gcc/fortran/check.c (is_c_interoperable, + gfc_check_c_loc): Correct c_loc array checking + for Fortran 2003 and Fortran 2008. + +2013-04-03 Janus Weil + + PR fortran/56284 + PR fortran/40881 + * decl.c (gfc_match_formal_arglist): Warn about alternate-return + arguments. + * interface.c (check_dummy_characteristics): Return if symbols are NULL. + +2013-04-01 Janus Weil + + PR fortran/56500 + * symbol.c (gfc_set_default_type): Build class container for + IMPLICIT CLASS. + +2013-03-31 Tobias Burnus + + * class.c (finalization_scalarizer, finalizer_insert_packed_call, + generate_finalization_wrapper): Avoid segfault with absent SIZE= + argument to TRANSFER and use correct result kind for SIZE. + * intrinsic.c (gfc_isym_id_by_intmod): Also handle ids of + nonmodules. + * trans.c (gfc_build_final_call): Handle coarrays. + +2013-03-30 Thomas Koenig + + * trans-expr.c (build_memcmp_call): New function. + (gfc_build_compare_string): If the strings + compared have constant and equal lengths and + the strings are kind=1, or, for kind=4 strings, + the test is for (in)equality, use memcmp(). + +2013-03-29 Tobias Burnus + + PR fortran/35203 + * trans-decl.c (create_function_arglist): Pass hidden argument + for passed-by-value optional+value dummies. + * trans-expr.c (gfc_conv_expr_present, + gfc_conv_procedure_call): Handle those. + +2013-03-28 Thomas Koenig + + PR fortran/45159 + * gfortran.h (gfc_dep_difference): Add prototype. + * dependency.c (discard_nops): New function. + (gfc_dep_difference): New function. + (check_section_vs_section): Use gfc_dep_difference + to calculate the difference of starting indices. + * trans-expr.c (gfc_conv_substring): Use + gfc_dep_difference to calculate the length of + substrings where possible. + +2013-03-28 Thomas Koenig + + PR fortran/55806 + * frontend-passes.c (optimize_code): Keep track of + current code to make code insertion possible. + (combine_array_constructor): New function. + (optimize_op): Call it. + +2013-03-27 Tobias Burnus + + PR fortran/56650 + PR fortran/36437 + * check.c (gfc_check_sizeof, gfc_check_c_sizeof, + gfc_check_storage_size): Update checks. + * intrinsic.texi (SIZEOF): Correct class. + * intrinsic.h (gfc_simplify_sizeof, + gfc_simplify_storage_size): New prototypes. + * intrinsic.c (add_functions): Use them. + * simplify.c (gfc_simplify_sizeof, + gfc_simplify_storage_size): New functions. + +2013-03-27 Janne Blomqvist + + PR fortran/25708 + * module.c (module_locus): Use long for position. + (module_content): New variable. + (module_pos): Likewise. + (prev_character): Remove. + (bad_module): Free data instead of closing mod file. + (set_module_locus): Use module_pos. + (get_module_locus): Likewise. + (module_char): use buffer rather than stdio file. + (module_unget_char): Likewise. + (read_module_to_tmpbuf): New function. + (gfc_use_module): Call read_module_to_tmpbuf. + +2013-03-26 Tobias Burnus + + PR fortran/56649 + * simplify.c (gfc_simplify_merge): Simplify more. + +2013-03-25 Tobias Burnus + + PR fortran/38536 + PR fortran/38813 + PR fortran/38894 + PR fortran/39288 + PR fortran/40963 + PR fortran/45824 + PR fortran/47023 + PR fortran/47034 + PR fortran/49023 + PR fortran/50269 + PR fortran/50612 + PR fortran/52426 + PR fortran/54263 + PR fortran/55343 + PR fortran/55444 + PR fortran/55574 + PR fortran/56079 + PR fortran/56378 + * check.c (gfc_var_strlen): Properly handle 0-sized string. + (gfc_check_c_sizeof): Use is_c_interoperable, add checks. + (is_c_interoperable, gfc_check_c_associated, gfc_check_c_f_pointer, + gfc_check_c_f_procpointer, gfc_check_c_funloc, gfc_check_c_loc): New + functions. + * expr.c (check_inquiry): Add c_sizeof, compiler_version and + compiler_options. + (gfc_check_pointer_assign): Refine function result check. + gfortran.h (gfc_isym_id): Add GFC_ISYM_C_ASSOCIATED, + GFC_ISYM_C_F_POINTER, GFC_ISYM_C_F_PROCPOINTER, GFC_ISYM_C_FUNLOC, + GFC_ISYM_C_LOC. + (iso_fortran_env_symbol, iso_c_binding_symbol): Handle + NAMED_SUBROUTINE. + (generate_isocbinding_symbol): Update prototype. + (get_iso_c_sym): Remove. + (gfc_isym_id_by_intmod, gfc_isym_id_by_intmod_sym): New prototypes. + * intrinsic.c (gfc_intrinsic_subroutine_by_id): New function. + (gfc_intrinsic_sub_interface): Use it. + (add_functions, add_subroutines): Add missing C-binding intrinsics. + (gfc_intrinsic_func_interface): Add special case for c_loc. + gfc_isym_id_by_intmod, gfc_isym_id_by_intmod_sym): New functions. + (gfc_intrinsic_func_interface, gfc_intrinsic_sub_interface): Use them. + * intrinsic.h (gfc_check_c_associated, gfc_check_c_f_pointer, + gfc_check_c_f_procpointer, gfc_check_c_funloc, gfc_check_c_loc, + gfc_resolve_c_loc, gfc_resolve_c_funloc): New prototypes. + * iresolve.c (gfc_resolve_c_loc, gfc_resolve_c_funloc): New + functions. + * iso-c-binding.def: Split PROCEDURE into NAMED_SUBROUTINE and + NAMED_FUNCTION. + * iso-fortran-env.def: Add NAMED_SUBROUTINE for completeness. + * module.c (create_intrinsic_function): Support subroutines and + derived-type results. + (use_iso_fortran_env_module): Update calls. + (import_iso_c_binding_module): Ditto; update calls to + generate_isocbinding_symbol. + * resolve.c (find_arglists): Skip for intrinsic symbols. + (gfc_resolve_intrinsic): Find intrinsic subs via id. + (is_scalar_expr_ptr, gfc_iso_c_func_interface, + set_name_and_label, gfc_iso_c_sub_interface): Remove. + (resolve_function, resolve_specific_s0): Remove calls to those. + (resolve_structure_cons): Fix handling. + * symbol.c (gen_special_c_interop_ptr): Update c_ptr/c_funptr + generation. + (gen_cptr_param, gen_fptr_param, gen_shape_param, + build_formal_args, get_iso_c_sym): Remove. + (std_for_isocbinding_symbol): Handle NAMED_SUBROUTINE. + (generate_isocbinding_symbol): Support hidden symbols and + using c_ptr/c_funptr symtrees for nullptr defs. + * target-memory.c (gfc_target_encode_expr): Fix handling + of c_ptr/c_funptr. + * trans-expr.c (conv_isocbinding_procedure): Remove. + (gfc_conv_procedure_call): Remove call to it. + (gfc_trans_subcomponent_assign, gfc_conv_expr): Update handling + of c_ptr/c_funptr. + * trans-intrinsic.c (conv_isocbinding_function, + conv_isocbinding_subroutine): New. + (gfc_conv_intrinsic_function, gfc_conv_intrinsic_subroutine): + Call them. + * trans-io.c (transfer_expr): Fix handling of c_ptr/c_funptr. + * trans-types.c (gfc_typenode_for_spec, + gfc_get_derived_type): Ditto. + (gfc_init_c_interop_kinds): Handle NAMED_SUBROUTINE. + +2013-03-18 Tobias Burnus + + * gfortran.h (gfc_option_t): Remove flag_whole_file. + * invoke.texi (-fno-whole-file): Remove. + * lang.opt (fwhole-file): Change to Ignore. + * options.c (gfc_init_options, gfc_post_options, + gfc_handle_option): Remove !flag_whole_file handling + * parse.c (resolve_all_program_units, translate_all_program_units, + gfc_parse_file): Ditto. + * resolve.c (resolve_global_procedure): Ditto. + * trans-decl.c (gfc_get_symbol_decl, gfc_get_extern_function_decl, + gfc_create_module_variable): Ditto. + * trans-types.c (gfc_get_derived_type): Ditto. + +2013-03-15 Tobias Burnus + + PR fortran/56615 + * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Pack arrays + if they are not simply contiguous. + +2013-03-11 Tobias Burnus + + * gfortran.texi (STRUCTURE and RECORD): State more clearly how + to convert them into derived types. + +2013-03-10 Paul Thomas + + PR fortran/56575 + * expr.c (gfc_default_initializer): Check that a class declared + type has any components. + * resolve.c (resolve_fl_derived0): On failing the test for C437 + set the type to BT_UNKNOWN to prevent repeat error messages. + +2013-03-03 Mikael Morin + + PR fortran/56477 + * expr.c (gfc_check_pointer_assign): Avoid NULL pointer dereference. + +2013-03-03 Mikael Morin + + PR fortran/54730 + * array.c (gfc_match_array_constructor): Set a checkpoint before + matching a typespec. Drop it on success, restore it otherwise. + +2013-03-03 Mikael Morin + + PR fortran/54730 + * gfortran.h (struct gfc_undo_change_set): New field 'previous'. + (gfc_new_undo_checkpoint, gfc_drop_last_undo_checkpoint, + gfc_restore_last_undo_checkpoint): New prototypes. + * symbol.c (default_undo_chgset_var): Update initialization. + (single_undo_checkpoint_p, gfc_new_undo_checkpoint, + free_undo_change_set_data, pop_undo_change_set, + gfc_drop_last_undo_checkpoint, enforce_single_undo_checkpoint): + New functions. + (save_symbol_data): Handle multiple change sets. Make sure old_symbol + field's previous value is not overwritten. Clear gfc_new field. + (restore_old_symbol): Restore previous old_symbol field. + (gfc_restore_last_undo_checkpoint): New function, using body renamed + from gfc_undo_symbols. Restore the previous change set as current one. + (gfc_undo_symbols): New body. + (gfc_commit_symbols, gfc_commit_symbol, gfc_enforce_clean_symbol_state): + Call enforce_single_undo_checkpoint. + (gfc_symbol_done_2): Ditto. Free change set data. + +2013-03-03 Mikael Morin + + * symbol.c (restore_old_symbol): Fix thinko. + +2013-03-03 Mikael Morin + + * symbol.c (gfc_undo_symbols): Move code... + (restore_old_symbol): ... here as a new function. + +2013-03-03 Mikael Morin + + * Make-lang.in (F95_PARSER_OBJS): Add dependency to vec.h. + * gfortran.h: Include vec.h. + (gfc_undo_change_set): New struct. + * symbol.c (tentative_tbp): Remove struct. + (changed_syms, tentative_tbp_list): Remove variables. + (default_undo_chgset_var, latest_undo_chgset): New variables. + (save_symbol_data, gfc_get_sym_tree, gfc_undo_symbols, + gfc_commit_symbols, gfc_commit_symbol, + gfc_enforce_clean_symbol_state, gfc_get_typebound_proc): + Use latest_undo_chgset instead of changed_syms and tentative_tbp_list. + +2013-03-01 Tobias Burnus + + PR fortran/56491 + * iresolve.c (resolve_bound): Use gfc_get_string instead of xstrdup. + * symbol.c (free_components): Free proc-pointer components. + +2013-03-01 Tobias Burnus + + * trans-decl.c (gfc_trans_deferred_vars): Free expr after use. + * trans-io.c (build_dt): Ditto. + +2013-02-24 Joseph Myers + + * resolve.c (generate_component_assignments): Don't use UTF-8 + ligature in diagnostic. + +2013-02-21 Janus Weil + + PR fortran/56385 + * trans-array.c (structure_alloc_comps): Handle procedure-pointer + components with allocatable result. + +2013-02-21 Tobias Burnus + + PR fortran/56416 + * gfortran.texi (Part II: Language Reference, Extensions, + Non-Fortran Main Program): Sort @menu to match actual section order. + * intrinsic.texi (Intrinsic Procedures): Ditto. + (C_F_POINTER, PRECISION): Move to the alphabetically correct place. + +2013-02-15 Tobias Burnus + Mikael Morin + + PR fortran/56318 + * simplify.c (gfc_simplify_matmul): Fix result shape + and matmul result. + +2013-02-15 Tobias Burnus + + PR fortran/53818 + * resolve.c (apply_default_init_local): Don't create an + initializer for a result variable. + +2013-02-14 Thomas Koenig + + PR fortran/56224 + * gfortran.h (gfc_add_include_path): Add boolean argument + for warn. + * scanner.c (gfc_add_include_path): Pass along warn argument + to add_path_to_list. + * options.c (gfc_post_options): Add true warn argument to + gfc_add_include_path. + (gfc_handle_module_path_options): Likewise. + (gfc_handle_option): Also gfc_add_include_path for intrinsic + modules, without warning. + +2013-02-14 Paul Thomas + Tobias Burnus + + PR testsuite/56138 + * trans-decl.c (gfc_get_symbol_decl): Fix deferred-length + results for functions without extra result variable. + + Revert: + 2013-01-30 Tobias Burnus + + PR fortran/56138 + * trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length + results for functions without extra result variable. + +2013-02-12 Janus Weil + + PR fortran/46952 + * resolve.c (resolve_call): Do not check deferred procedures for + recursiveness. + +2013-02-09 Paul Thomas + + PR fortran/55362 + * check.c (array_check): It is an error if a procedure is + passed. + +2013-02-08 Mikael Morin + + PR fortran/54107 + * trans-types.c (gfc_get_function_type): Change a NULL backend_decl + to error_mark_node on entry. Detect recursive types. Build a variadic + procedure type if the type is recursive. Restore the initial + backend_decl. + +2013-02-07 Tobias Burnus + + PR fortran/54339 + * gfortran.texi (Standards): Mention TS29113. + (Varying Length Character): Mention deferred-length + strings. + (Fortran 2003 Status): Add unlimited polymorphic. + (TS 29113 Status): Add TYPE(*) and DIMENSION(..). + (C Interop): Update the section about TS29113. + +2013-02-06 Paul Thomas + + PR fortran/55789 + * trans-array.c (trans_array_constructor): Remove condition + 'dynamic' = true if the loop ubound is a VAR_DECL. + +2013-02-04 Paul Thomas + + PR fortran/56008 + PR fortran/47517 + * trans-array.c (gfc_alloc_allocatable_for_assignment): Save + the lhs descriptor before it is modified for reallocation. Use + it to deallocate allocatable components in the reallocation + block. Nullify allocatable components for newly (re)allocated + arrays. + +2013-02-04 Mikael Morin + + PR fortran/54195 + * resolve.c (resolve_typebound_procedures): Recurse through + resolve_symbol. + +2013-02-04 Mikael Morin + + PR fortran/54107 + PR fortran/54195 + * gfortran.h (struct gfc_symbol): New field 'resolved'. + * resolve.c (resolve_fl_var_and_proc): Don't skip result symbols. + (resolve_symbol): Skip duplicate calls. Don't check the current + namespace. + +2013-02-02 Thomas Koenig + + PR fortran/50627 + PR fortran/56054 + * decl.c (gfc_match_end): Remove half-ready namespace + from parent if the end of a block is missing. + * parse.c (parse_module): Do not put namespace into + gsymbol on error. + +2013-01-30 Tobias Burnus + + PR fortran/56138 + * trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length + results for functions without extra result variable. + +2013-01-29 Janus Weil + Mikael Morin + + PR fortran/54107 + * gfortran.h (gfc_component): Delete members 'formal' and 'formal_ns'. + (gfc_copy_formal_args,gfc_copy_formal_args_ppc,gfc_expr_replace_symbols, + gfc_expr_replace_comp): Delete. + (gfc_sym_get_dummy_args): New prototype. + * dependency.c (gfc_check_fncall_dependency): Use + 'gfc_sym_get_dummy_args'. + * expr.c (gfc_is_constant_expr): Ditto. + (replace_symbol,gfc_expr_replace_symbols,replace_comp, + gfc_expr_replace_comp): Deleted. + * frontend-passes.c (doloop_code,do_function): Use + 'gfc_sym_get_dummy_args'. + * interface.c (gfc_check_operator_interface,gfc_compare_interfaces, + gfc_procedure_use,gfc_ppc_use,gfc_arglist_matches_symbol, + gfc_check_typebound_override): Ditto. + * module.c (MOD_VERSION): Bump module version. + (mio_component): Do not read/write 'formal' and 'formal_ns'. + * resolve.c (resolve_procedure_interface,resolve_fl_derived0): Do not + copy formal args, but just keep a pointer to the interface. + (resolve_function,resolve_call,resolve_typebound_generic_call, + resolve_ppc_call,resolve_expr_ppc,generate_component_assignments, + resolve_fl_procedure,gfc_resolve_finalizers,check_generic_tbp_ambiguity, + resolve_typebound_procedure,check_uop_procedure): Use + 'gfc_sym_get_dummy_args'. + * symbol.c (free_components): Do not free 'formal' and 'formal_ns'. + (gfc_copy_formal_args,gfc_copy_formal_args_ppc): Deleted. + (gfc_sym_get_dummy_args): New function. + * trans-array.c (get_array_charlen,gfc_walk_elemental_function_args): + Use 'gfc_sym_get_dummy_args'. + * trans-decl.c (build_function_decl,create_function_arglist, + build_entry_thunks,init_intent_out_dt,gfc_trans_deferred_vars, + add_argument_checking): Ditto. + * trans-expr.c (gfc_map_fcn_formal_to_actual,gfc_conv_procedure_call, + gfc_conv_statement_function): Ditto. + * trans-stmt.c (gfc_conv_elemental_dependencies): Ditto. + * trans-types.c (create_fn_spec,gfc_get_function_type): Ditto. + +2013-01-28 Tobias Burnus + Mikael Morin + + PR fortran/53537 + * symbol.c (gfc_find_sym_tree): Don't look for the symbol outside an + interface block. + (gfc_get_ha_symtree): Let gfc_find_sym_tree lookup the parent namespace. + * decl.c (gfc_match_data_decl): Ditto. + (variable_decl): Remove undeclared type error. + (gfc_match_import): Use renamed instead of original name. + +2013-01-27 Paul Thomas + + PR fortran/55984 + PR fortran/56047 + * gfortran.h : Add associate_var to symbol_attr. + * resolve.c (resolve_assoc_var): Set associate_var attribute. + If the target class_ok is set, set it for the associate + variable. + * check.c (allocatable_check): Associate variables should not + have the allocatable attribute even if their symbols do. + * class.c (gfc_build_class_symbol): Symbols with associate_var + set will always have a good class container. + +2013-01-23 Janus Weil + + PR fortran/56081 + * resolve.c (resolve_select): Add argument 'select_type', reject + non-scalar expressions. + (resolve_select_type,resolve_code): Pass new argument to + 'resolve_select'. + +2013-01-23 Jakub Jelinek + + PR fortran/56052 + * trans-decl.c (gfc_get_symbol_decl): Set DECL_ARTIFICIAL + and DECL_IGNORED_P on select_type_temporary and don't set + DECL_BY_REFERENCE. + +2013-01-21 Thomas Koenig + + PR fortran/55919 + * scanner.c (add_path_to_list): Copy path to temporary and strip + trailing directory separators before calling stat(). + +2013-01-17 Richard Biener + + * trans-stmt.c (gfc_trans_do): Conditionally compute countm1 + dependent on sign of step, avoids repeated evaluation of + step sign test. Avoid undefined overflow issues by using unsigned + arithmetic. + +2013-01-16 Janus Weil + + PR fortran/55983 + * class.c (find_typebound_proc_uop): Check for f2k_derived instead of + asserting it. + +2013-01-16 Jakub Jelinek + Tobias Burnus + + PR driver/55884 + * lang.opt (fintrinsic-modules-path): Don't accept Joined. + (fintrinsic-modules-path=): New. + * options.c (gfc_handle_option, gfc_get_option_string, + gfc_get_option_string): Handle the latter. + +2013-01-16 Jakub Jelinek + + PR fortran/52865 + * trans-stmt.c (gfc_trans_do): Put countm1-- before conditional + and use value of countm1 before the decrement in the condition. + +2013-01-15 Paul Thomas + + PR fortran/54286 + * expr.c (gfc_check_pointer_assign): Check for presence of + 's2' before using it. + +2013-01-14 Thomas Koenig + + PR fortran/55806 + * frontend-passes.c (optimize_reduction): New function, + including prototype. + (callback_reduction): Likewise. + (gfc_run_passes): Also run optimize_reduction. + (copy_walk_reduction_arg): New function. + (dummy_code_callback): New function. + +2013-01-13 Jakub Jelinek + + PR fortran/55935 + * trans-expr.c (gfc_conv_structure): Call + unshare_expr_without_location on the ctor elements. + +2013-01-13 Paul Thomas + + PR fortran/54286 + * expr.c (gfc_check_pointer_assign): Ensure that both lvalue + and rvalue interfaces are presented to gfc_compare_interfaces. + Simplify references to interface names by using the symbols + themselves. Call gfc_compare_interfaces with s1 and s2 inter- + changed to overcome the asymmetry of this function. Do not + repeat the check for the presence of s1 and s2. + +2013-01-12 Janus Weil + + PR fortran/55072 + * trans-array.c (gfc_conv_array_parameter): No packing was done for + full arrays of derived type. + +2013-01-08 Paul Thomas + + PR fortran/55868 + * class.c (get_unique_type_string): Change $tar to STAR and + replace sprintf by strcpy where there is no formatting. + * decl.c (gfc_match_decl_type_spec): Change $tar to STAR. + +2013-01-09 Mikael Morin + + PR fortran/47203 + * module.c (check_for_ambiguous): Get the current program unit using + gfc_current_ns. + +2013-01-09 Tobias Burnus + + PR fortran/55758 + * resolve.c (resolve_symbol): Reject non-C_Bool logicals + in BIND(C) procedures with -std=f*. + +2013-01-08 Paul Thomas + + PR fortran/55618 + * trans-expr.c (gfc_conv_procedure_call): Dereference scalar + character function arguments to elemental procedures in + scalarization loops. + +2013-01-07 Tobias Burnus + + PR fortran/55763 + * gfortran.h (gfc_check_assign_symbol): Update prototype. + * decl.c (add_init_expr_to_sym, do_parm): Update call. + * expr.c (gfc_check_assign_symbol): Handle BT_CLASS and + improve error location; support components. + (gfc_check_pointer_assign): Handle component assignments. + * resolve.c (resolve_fl_derived0): Call gfc_check_assign_symbol. + (resolve_values): Update call. + (resolve_structure_cons): Avoid double diagnostic. + +2013-01-07 Tobias Burnus + Thomas Koenig + + PR fortran/55852 + * expr.c (gfc_build_intrinsic_call): Avoid clashes + with user's procedures. + * gfortran.h (gfc_build_intrinsic_call): Update prototype. + * simplify.c (gfc_simplify_size): Update call. + * class.c (finalization_scalarizer, finalization_get_offset, + finalizer_insert_packed_call, generate_finalization_wrapper): + Clean up by using gfc_build_intrinsic_call. + +2013-01-07 Tobias Burnus + + PR fortran/55763 + * resolve.c (resolve_select_type): Reject intrinsic types for + a non-unlimited-polymorphic selector. + +2013-01-06 Paul Thomas + + PR fortran/53876 + PR fortran/54990 + PR fortran/54992 + * trans-array.c (build_array_ref): Check the TYPE_CANONICAL + to see if it is GFC_CLASS_TYPE_P. + * trans-expr.c (gfc_get_vptr_from_expr): The same. + (gfc_conv_class_to_class): If the types are not the same, + cast parmese->expr to the type of ctree. + * trans-types.c (gfc_get_derived_type): GFC_CLASS_TYPE_P of + CLASS components must be set. + +2013-01-06 Mikael Morin + + PR fortran/42769 + PR fortran/45836 + PR fortran/45900 + * module.c (read_module): Don't reuse local symtree if the associated + symbol isn't exactly the one wanted. Don't reuse local symtree if it is + ambiguous. + * resolve.c (resolve_call): Use symtree's name instead of symbol's to + lookup the symtree. + +2013-01-05 Steven G. Kargl + Mikael Morin + + PR fortran/55827 + * class.c (gfc_fix_class_refs): Adapt ts initialization for the case + e->symtree == NULL. + * trans-expr.c (gfc_conv_function_expr): Init sym earlier. Use it. + +2013-01-05 Tobias Burnus + + * class.c (finalize_component): Used passed offset expr. + (finalization_get_offset): New static function. + (finalizer_insert_packed_call, generate_finalization_wrapper): Use it + to handle noncontiguous arrays. + +2013-01-04 Tobias Burnus + + * trans.c (gfc_build_final_call): New function. + * trans.h (gfc_build_final_call, gfc_conv_scalar_to_descriptor): + New function prototypes. + * trans-expr.c (gfc_conv_scalar_to_descriptor): Renamed from + conv_scalar_to_descriptor, removed static attribute. + (gfc_conv_procedure_call): Honor renaming. + +2013-01-04 Tobias Burnus + + * intrinsic.c (add_functions): New internal intrinsic + function GFC_PREFIX ("stride"). + * gfortran.h (gfc_isym_id): Add GFC_ISYM_STRIDE. + * intrinsic.h (gfc_resolve_stride): New prototypes. + * iresolve.c (gfc_resolve_stride): New function. + * trans-intrinsic.c (conv_intrinsic_stride): New static + function. + (gfc_conv_intrinsic_function): Use it. + +2013-01-04 Tobias Burnus + + * class.c (gfc_find_intrinsic_vtab): Add _final + component. + * decl.c (gfc_match_null): Remove superfluous + variadic argument to gfc_match. + +2013-01-04 Paul Thomas + + PR fortran/55172 + * match.c (copy_ts_from_selector_to_associate): Remove call to + gfc_resolve_expr and replace it with explicit setting of the + array reference type. + * resolve.c (resolve_select_type): It is an error if the + selector is coindexed. + +2013-01-04 Tobias Burnus + + PR fortran/55763 + * decl.c (gfc_match_null): Parse and reject MOLD. + +2013-01-04 Tobias Burnus + + PR fortran/55854 + PR fortran/55763 + * class.c (gfc_class_null_initializer): Fix finding the vtab. + (gfc_find_intrinsic_vtab): Use BT_VOID for some components. + +2013-01-03 Janus Weil + + PR fortran/55855 + * expr.c (gfc_check_assign): Use 'gfc_expr_attr' to evaluate attributes + of rvalue. Correct hyphenation in error message. + +2013-01-03 Jakub Jelinek + + * gfortranspec.c (lang_specific_driver): Update copyright notice + dates. + +Copyright (C) 2013 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 54cfdd6fd68..6151d73827e 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -11903,9 +11903,6 @@ resolve_typebound_procedures (gfc_symbol* derived) resolve_bindings_derived = derived; resolve_bindings_result = true; - /* Make sure the vtab has been generated. */ - gfc_find_derived_vtab (derived); - if (derived->f2k_derived->tb_sym_root) gfc_traverse_symtree (derived->f2k_derived->tb_sym_root, &resolve_typebound_procedure); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 25079742c51..17ea414fc76 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-01-02 Janus Weil + + PR fortran/59654 + * gfortran.dg/dynamic_dispatch_12.f90: New. + 2014-01-01 Jakub Jelinek * lib/target-supports.exp (check_effective_target_avx512f): Make sure diff --git a/gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90 b/gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90 new file mode 100644 index 00000000000..d37e1f6a9b5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90 @@ -0,0 +1,74 @@ +! { dg-do run } +! +! PR 59654: [4.8/4.9 Regression] [OOP] Broken function table with complex OO use case +! +! Contributed by Thomas Clune + +module TestResult_mod + implicit none + + type TestResult + integer :: numRun = 0 + contains + procedure :: run + procedure, nopass :: getNumRun + end type + +contains + + subroutine run (this) + class (TestResult) :: this + this%numRun = this%numRun + 1 + end subroutine + + subroutine getNumRun() + end subroutine + +end module + + +module BaseTestRunner_mod + implicit none + + type :: BaseTestRunner + contains + procedure, nopass :: norun + end type + +contains + + function norun () result(result) + use TestResult_mod, only: TestResult + type (TestResult) :: result + end function + +end module + + +module TestRunner_mod + use BaseTestRunner_mod, only: BaseTestRunner + implicit none +end module + + +program main + use TestRunner_mod, only: BaseTestRunner + use TestResult_mod, only: TestResult + implicit none + + type (TestResult) :: result + + call runtest (result) + +contains + + subroutine runtest (result) + use TestResult_mod, only: TestResult + class (TestResult) :: result + call result%run() + if (result%numRun /= 1) call abort() + end subroutine + +end + +! { dg-final { cleanup-modules "TestResult_mod BaseTestRunner_mod TestRunner_mod" } } -- cgit v1.2.1 From d67510b9cb0a0f7e1164c0132771eecf222bbbad Mon Sep 17 00:00:00 2001 From: burnus Date: Thu, 2 Jan 2014 21:25:41 +0000 Subject: 2014-01-02 Tobias Burnus gcc/ada/ * gnat_ugn.texi: Bump @copying's copyright year. gcc/ * gcc.c (process_command): Update copyright notice dates. * gcov-dump.c: Ditto. * gcov.c: Ditto. * doc/cpp.texi: Bump @copying's copyright year. * doc/cppinternals.texi: Ditto. * doc/gcc.texi: Ditto. * doc/gccint.texi: Ditto. * doc/gcov.texi: Ditto. * doc/install.texi: Ditto. * doc/invoke.texi: Ditto. gcc/fortran/ * gfortranspec.c (lang_specific_driver): Update copyright notice dates. * gfc-internals.texi: Bump @copying's copyright year. * gfortran.texi: Ditto. * intrinsic.texi: Ditto. * invoke.texi: Ditto. gcc/go/ * gcc/go/gccgo.texi: Ditto. gcc/java/ * jcf-dump.c (version): Update copyright notice dates. * gcj.texi: Bump @copying's copyright year. libgomp/ * libgomp.texi: Bump @copying's copyright year. libitm/ * libitm.texi: Bump @copying's copyright year. libjava/ * classpath/gnu/java/rmi/registry/RegistryImpl.java (version): * Update copyright notice dates. * classpath/tools/gnu/classpath/tools/orbd/Main.java (run): * Ditto. * gnu/gcj/convert/Convert.java (version): Update copyright * notice dates. * gnu/gcj/tools/gcj_dbtool/Main.java (main): Ditto. libquadmath/ * libquadmath.texi: Bump @copying's copyright year. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206286 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 13 + gcc/ada/ChangeLog | 8291 +------------- gcc/ada/ChangeLog-2013 | 8294 ++++++++++++++ gcc/ada/gnat_ugn.texi | 4 +- gcc/doc/cpp.texi | 2 +- gcc/doc/cppinternals.texi | 4 +- gcc/doc/gcc.texi | 2 +- gcc/doc/gccint.texi | 2 +- gcc/doc/gcov.texi | 2 +- gcc/doc/install.texi | 4 +- gcc/doc/invoke.texi | 2 +- gcc/fortran/ChangeLog | 9 + gcc/fortran/gfc-internals.texi | 2 +- gcc/fortran/gfortran.texi | 2 +- gcc/fortran/gfortranspec.c | 4 +- gcc/fortran/intrinsic.texi | 2 +- gcc/fortran/invoke.texi | 4 +- gcc/gcc.c | 4 +- gcc/gcov-dump.c | 4 +- gcc/gcov.c | 4 +- gcc/go/ChangeLog | 750 +- gcc/go/ChangeLog-2013 | 745 ++ gcc/go/gccgo.texi | 2 +- gcc/java/ChangeLog | 22894 +------------------------------------- gcc/java/ChangeLog-2013 | 22898 +++++++++++++++++++++++++++++++++++++++ gcc/java/gcj.texi | 2 +- gcc/java/jcf-dump.c | 4 +- 27 files changed, 32000 insertions(+), 31950 deletions(-) create mode 100644 gcc/ada/ChangeLog-2013 create mode 100644 gcc/go/ChangeLog-2013 create mode 100644 gcc/java/ChangeLog-2013 (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b34e8add3fa..f9699173985 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2014-01-02 Tobias Burnus + + * gcc.c (process_command): Update copyright notice dates. + * gcov-dump.c: Ditto. + * gcov.c: Ditto. + * doc/cpp.texi: Bump @copying's copyright year. + * doc/cppinternals.texi: Ditto. + * doc/gcc.texi: Ditto. + * doc/gccint.texi: Ditto. + * doc/gcov.texi: Ditto. + * doc/install.texi: Ditto. + * doc/invoke.texi: Ditto. + 2014-01-01 Jan-Benedict Glaw * config/nios2/nios2.h (BITS_PER_UNIT): Don't define it. diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 8c5ee48dbf7..f7dad6cefae 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,8293 +1,8 @@ -2013-12-20 Trevor saunders +2014-01-02 Tobias Burnus - * gcc-interface/decl.c (components_to_record): Replace stack_vec with - auto_vec. - -2013-12-12 Eric Botcazou - - * gcc-interface/Makefile.in (ARM linux, GNU eabi): Tweak regexp. - -2013-12-12 Eric Botcazou - Iain Sandoe - - PR ada/55946 - * gcc-interface/Make-lang.in (ada/doctools/xgnatugn): Use gnatmake. - * gcc-interface/Makefile.in (GCC_LINK): Add LDFLAGS. - (../../gnatmake): Remove LDFLAGS. - (../../gnatlink): Likewise. - -2013-12-04 Eric Botcazou - - PR ada/59382 - * indepsw-darwin.adb: New file. - -2013-12-04 Eric Botcazou - - * gcc-interface/decl.c (components_to_record): Add specific handling - for fields with zero size and no representation clause. - -2013-12-04 Eric Botcazou - - * gcc-interface/trans.c (Case_Statement_to_gnu): Do not push a binding - level for each branch if this is a case expression in Ada 2012. - (gnat_to_gnu) : Adjust comment. - -2013-11-29 Eric Botcazou - - PR ada/54040 - PR ada/59346 - * s-osinte-hpux.ads (timespec): Change type of tv_nsec field to time_t. - * s-osinte-kfreebsd-gnu.ads (timespec): Likewise. - * s-osinte-solaris-posix.ads (timespec): Likewise. - -2013-11-23 Eric Botcazou - - * gcc-interface/trans.c (Loop_Statement_to_gnu): Set TREE_SIDE_EFFECTS - on the conditional expression directly. - -2013-11-22 Andrew MacLeod - - * gcc-interface/trans.c: Add required include files from gimple.h. - -2013-11-22 David Malcolm - - * gcc-interface/utils2.c (build_call_raise): Remove use of - input_line macro. - (build_call_raise_range): Likewise. - (build_call_raise_column): Likewise. - -2013-11-20 Kenneth Zadeck - Mike Stump - Richard Sandiford - - * gcc-interface/cuintp.c (UI_From_gnu): Use tree_to_shwi. - * gcc-interface/decl.c (gnat_to_gnu_entity): Use tree_to_uhwi. - * gcc-interface/utils.c (make_packable_type): Likewise. - -2013-11-18 Richard Sandiford - - * gcc-interface/cuintp.c (UI_From_gnu): Use tree_to_shwi rather than - tree_low_cst. - -2013-11-18 Richard Sandiford - - * gcc-interface/decl.c, gcc-interface/utils.c, gcc-interface/utils2.c: - Replace tree_low_cst (..., 1) with tree_to_uhwi throughout. - -2013-11-18 Richard Sandiford - - * gcc-interface/cuintp.c: Update comments to refer to - tree_fits_shwi_p rather than host_integerp. - * gcc-interface/decl.c (gnat_to_gnu_entity): Use tree_fits_uhwi_p - rather than host_integerp. - * gcc-interface/utils.c (rest_of_record_type_compilation): Likewise. - -2013-11-18 Richard Sandiford - - * gcc-interface/decl.c, gcc-interface/misc.c, gcc-interface/utils.c: - Replace host_integerp (..., 1) with tree_fits_uhwi_p throughout. - -2013-11-18 Richard Sandiford - - * gcc-interface/cuintp.c: Replace host_integerp (..., 0) with - tree_fits_shwi_p throughout. - -2013-11-18 Eric Botcazou - - * gcc-interface/trans.c (TARGET_ABI_OPEN_VMS): Delete as redundant. - -2013-11-18 Eric Botcazou - - * gcc-interface/trans.c (Call_to_gnu): For an Out parameter passed by - copy and that don't need to be copied in, only evaluate its address. - -2013-11-18 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Deal with an - error mark as renamed object in type annotating mode. - -2013-11-15 H.J. Lu - - PR ada/54040 - * s-linux-x32.ads: New file. - * s-osprim-x32.adb: Likewise. - * s-linux.ads (time_t): New type. - * s-linux-alpha.ads (time_t): Likewise. - * s-linux-hppa.ads (time_t): Likewise. - * s-linux-mipsel.ads (time_t): Likewise. - * s-linux-sparc.ads (time_t): Likewise. - * s-osinte-linux.ads (time_t): Mark it private. Replace long - with System.Linux.time_t. - (timespec): Replace long with time_t. - * s-osinte-posix.adb (To_Timespec): Likewise. - * s-taprop-linux.adb (timeval): Replace C.long with - System.OS_Interface.time_t. - * gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS): Replace - s-linux.ads with s-linux-x32.ads, s-osprim-posix.adb with - s-osprim-x32.adb for x32. - -2013-11-14 H.J. Lu - - * gcc-interface/trans.c: Include gimple.h and pointer-set.h. - -2013-11-14 Diego Novillo - - * gcc-interface/decl.c: Include stringpool.h - Include stor-layout.h - * gcc-interface/misc.c: Include stor-layout.h - Include print-tree.h - * gcc-interface/trans.c: Include stringpool.h - Include stor-layout.h - Include stmt.h - Include varasm.h - * gcc-interface/utils.c: Include stringpool.h - Include stor-layout.h - Include attribs.h - Include varasm.h - * gcc-interface/utils2.c: Include stringpool.h - Include stor-layout.h - Include attribs.h - Include varasm.h - -2013-11-12 Andrew MacLeod - - * gcc-interface/trans.c: Include gimplify.h. - -2013-11-11 Tristan Gingold - Eric Botcazou - - * gcc-interface/utils2.c (gnat_build_constructor): Also set the flag - CONSTRUCTOR_NO_CLEARING on the constructor. - -2013-10-30 Sharad Singhai - - * gnat_ugn.texi: Remove option description for PR middle-end/58134. - -2013-10-29 David Malcolm - - * gcc-interface/trans.c (finalize_nrv): Update for conversion of - symtab types to a true class hierarchy. - * gcc-interface/utils.c (gnat_write_global_declarations): Likewise. - -2013-10-28 Trevor Saunders - - * gcc-interface/decl.c (components_to_record): Adjust stack vector. - -2013-10-24 Rainer Orth - - * gcc-interface/Make-lang.in (ADA_DEPS): Fix quoting. - -2013-10-19 Thomas Quinot - - * gcc-interface/Makefile.in: Use canonical absolute path to refer to - the top source directory and to the libgcc subidrectories. - -2013-10-19 Eric Botcazou - - * gcc-interface/utils.c (scale_by_factor_of): New function. - (rest_of_record_type_compilation): Use scale_by_factor_of in order to - scale the original offset for both rounding cases; in the second case, - take into accout the addend to compute the alignment. Tidy up. - -2013-10-19 Eric Botcazou - - * gcc-interface/cuintp.c: Remove useless include directives. - (build_cst_from_int): Use standard predicate. - (UI_To_gnu): Simplify. - (UI_From_gnu): Fix formatting. - * gcc-interface/trans.c (post_error): Likewise. - (post_error_ne): Likewise. - -2013-10-19 Eric Botcazou - - * gcc-interface/utils.c (gnat_set_type_context): New function. - (gnat_pushdecl): Use it to set the context of the type. - -2013-10-17 Hristian Kirtchev - - * sem_prag.adb (Check_Dependency_Clause): - Recognize the scenario where successful clause matching has - depleted the available refinement items and the clause to match - technically refines to null => null. - -2013-10-17 Tristan Gingold - - * exp_prag.adb (Expand_Pragma_Import_Or_Interface): Specify - External_Name instead of Link_Name for the RTTI declaration. - -2013-10-17 Robert Dewar - - * sem_prag.adb (Record_Possible_Body_Reference): Fix test for - being in body. - (Add_Constituent): Merged into Check_Refined_Global_Item. - (Check_Matching_Constituent): A constituent that has the proper Part_Of - option and comes from a private child or a sibling is now collected. - (Check_Matching_Modes): Merged into Check_Refined_Global_Item. - (Check_Refined_Global_Item): Code cleanup. - (Collect_Constituent): New routine. - (Inconsistent_Mode_Error): Moved out from Check_Matching_Modes. - -2013-10-17 Ed Schonberg - - * freeze.adb (Check_Current_Instance, Process): Add RM reference - and mention immutably limited types, when the current instance - is illegal in Ada 2012. - -2013-10-17 Ed Schonberg - - * sem_warn.adb (Check_Unused_Withs): If the main unit is a - subunit, apply the check to the units mentioned in its context - only. This provides additional warnings on with_clauses that - are superfluous. - -2013-10-17 Hristian Kirtchev - - * sem_ch3.adb (Analyze_Declarations): Emit an - error message concerning state refinement when the spec defines at - least one non-null abstract state and the body's SPARK mode is On. - (Requires_State_Refinement): New routine. - -2013-10-17 Robert Dewar - - * sem_ch7.ads: Comment fixes. - -2013-10-17 Robert Dewar - - * sem_ch7.adb (Analyze_Package_Specification): Remove circuit - for ensuring that a package spec requires a body for some other - reason than that it contains the declaration of an abstract state. - -2013-10-17 Tristan Gingold - - * exp_ch11.adb (Expand_N_Raise_Expression): Fix call of - Possible_Local_Raise. - -2013-10-17 Thomas Quinot - - * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Unchecked - conversion of Or_Rhs to Etype of New_Rhs is required only when - the latter is the result of a byte swap operation. - -2013-10-17 Thomas Quinot - - * exp_dist.adb (Build_To_Any_Function): For a type with opaque - representation that is not transmitted as an unconstrained value, - use 'Write, not 'Output, to generate the opaque representation. - -2013-10-17 Yannick Moy - - * sem_res.adb (Resolve_Short_Circuit): Only - generate expression-with-action when full expansion is set. - -2013-10-17 Yannick Moy - - * debug.adb Remove obsolete comment. - -2013-10-17 Thomas Quinot - - * exp_ch4.adb (Process_Transient_Object.Find_Enclosing_Contexts): - Avoid late insertion when expanding an expression with action - nested within a transient block; Do not inconditionally generate - a finalization call if the generated object is from a specific - branch of a conditional expression. - -2013-10-17 Pascal Obry - - * g-arrspl.adb: Ensure Finalize call is idempotent. - * g-arrspl.adb (Finalize): Makes the call idempotent. - -2013-10-17 Hristian Kirtchev - - * sem_prag.adb (Is_Matching_Input): Account - for the case where a state with a null refinement appears as - the last input of a refinement clause. - -2013-10-17 Robert Dewar - - * sem_aux.ads, sem_aux.adb: Minor reformatting. - -2013-10-17 Hristian Kirtchev - - * aspects.adb, aspects.ads, sem_prag.ads: Remove all entries - for Refined_Pre from the various tables. - * par-prag.adb: Remove the entry for Refined_Pre from the list - of pragmas not needing special processing by the parser. - * sem_ch13.adb (Analyze_Aspect_Specifications): - Remove the processing for aspect Refined_Pre. - (Check_Aspect_At_Freeze_Point): Remove the entry for aspect - Refined_Pre. - * sem_prag.adb (Analyze_Pragma): Refined_Pre is no longer a - valid assertion kind. Remove the analysis of pragma Refined_Pre. - (Analyze_Refined_Pragma): Update the comment on usage. - (Find_Related_Subprogram_Or_Body): Update the comment on - usage. Pragma Refined_Pre is no longer processed by this routine. - (Is_Valid_Assertion_Kind): Refined_Pre is no longer a valid - assertion kind. - * snames.ads-tmpl: Remove predefined name Refined_Pre. Remove - the pragma id for Refined_Pre. - -2013-10-17 Hristian Kirtchev - - * exp_util.adb, exp_util.ads (Entity_Of): Moved to Sem_Util. - * sem_prag.adb (Analyze_Global_In_Decl_List): Mark a null - item list as being analyzed. - (Analyze_Global_List): Mark a - null global list and multiple global items as being analyzed. - (Analyze_Input_Item): Check the unit that defines the input - variable or state, not the reference to it. - * sem_util.ads, sem_util.adb (Entity_Of): Moved from Exp_Util. Ensure - that the input has an entity. - -2013-10-17 Thomas Quinot - - * exp_util.adb (Get_Current_Value_Condition, - Set_Current_Value_Condition): Handle the case of expressions - with actions * exp_util.adb (Insert_Actions): Handle the case - of an expression with actions whose Actions list is empty. - * exp_util.adb (Remove_Side_Effects.Side_Effect_Free): An - expression with actions that has no Actions and whose Expression - is side effect free is itself side effect free. - * exp_util.adb (Remove_Side_Effects): Do not set an incorrect etype on - temporary 'R' (Def_Id), which is in general an access to Exp_Type, not - an Exp_Type. - * sem_res.adb (Resolve): For an expression with - actions, resolve the expression early. * sem_res.adb - (Resolve_Expression_With_Actions): Rewrite an expression with - actions whose value is compile time known and which has no - actions into just its expression, so that its constant value is - available downstream. - * sem_res.adb (Resolve_Short_Circuit): - Wrap the left operand in an expression with actions to contain - any required finalization actions. - * exp_ch4.adb (Expand_Expression_With_Actions): For an - expression with actions returning a Boolean expression, ensure - any finalization action is kept within the Actions list. - * sem_warn.adb (Check_References, Check_Unset_Reference): add - missing circuitry to handle expressions with actions. - * checks.adb (Ensure_Valid): For an expression with actions, - insert the validity check on the Expression. - * sem_ch13.adb (Build_Static_Predicate.Get_RList): An expression - with actions that has a non-empty Actions list is not static. An - expression with actions that has an empty Actions list has the - static ranges of its Expression. - * sem_util.adb (Has_No_Obvious_Side_Effects): An expression with - actions with an empty Actions list has no obvious side effects - if its Expression itsekf has no obvious side effects. - -2013-10-17 Ed Schonberg - - * sem_aux.ads, sem_aux.adb (Is_Immutably_Limited_Type): Make - predicate compatible with Ada 2012 definition - (Is_Limited_View): New name for previous version of - Is_Immutably_Limited_Type. Predicate is true for an untagged - record type with a limited component. - * exp_ch7.adb, exp_ch6.adb, exp_ch4.adb, exp_ch3.adb, exp_aggr.adb, - sem_util.adb, sem_res.adb, sem_prag.adb, sem_attr.adb, sem_ch8.adb, - sem_ch6.adb, sem_ch3.adb, exp_util.adb: Use Is_Limited_View - * freeze.adb Use Is_Immutably_Limited_Type to check the legality - of references to the current instance, Is_Limited_View otherwise. - -2013-10-17 Hristian Kirtchev - - * sem_ch13.adb (Analyze_Aspect_Specifications): Flag aspect - Refined_Pre as not supported. - * sem_prag.adb (Analyze_Pragma): Ignore pragma Refined_Pre. - -2013-10-17 Ed Schonberg - - * sem_ch12.adb (Validated_Access_Subprogram_Instance): According - to AI05-288, actuals for access_to_subprograms must be subtype - conformant with the generic formal. Previous to AI05-288 - only mode conformance was required, but the AI is a binding - interpretation that applies to previous versions of the language, - -2013-10-17 Robert Dewar - - * gnat_ugn.texi: Minor text correction. - * ug_words: Add entry for -gnateu /IGNORE_UNRECOGNIZED. - * vms_data.ads: Add /IGNORE_UNRECOGNIZED for -gnateu. - -2013-10-17 Tristan Gingold - - * impunit.adb (Non_Imp_File_Names_95): Add g-cppexc. - -2013-10-17 Hristian Kirtchev - - * sem_prag.adb (Analyze_Constituent): Move the check - concerning option Part_Of to routine Check_Matching_Constituent. - (Check_Matching_Constituent): Verify that an abstract state - that acts as a constituent has the proper Part_Of option in - its aspect/pragma Abstract_State. Account for the case when a - constituent comes from a private child or private sibling. - * sem_util.ads, sem_util.adb (Is_Child_Or_Sibling): New routine. - -2013-10-17 Tristan Gingold - - * g-cppexc.adb, g-cppexc.ads: New files. - * gcc-interface/Makefile.in: Add g-cppexc when building zcx runtimes. - -2013-10-17 Thomas Quinot - - * exp_ch7.adb: Minor reformatting. - -2013-10-17 Ed Schonberg - - * sem_dim.adb (Process_Minus, Process_Divide): Label dimension - expression with standard operator and type, for pretty-printing - use. - -2013-10-17 Bob Duff - - * gnat_ugn.texi: Document --pp-new and --pp-old switches. - -2013-10-17 Hristian Kirtchev - - * einfo.adb: Flag 159 is now known as From_Limited_With. Replace - all references to attribute From_With_Type with From_Limited_With. - (From_With_Type): Renamed to From_Limited_With. - (Set_From_With_Type): Renamd to Set_From_Limited_With. - * einfo.ads: Remove attribute From_With_Type and occurrences in - nodes. Add attribute From_Limited_With along with occurrences - in nodes. - (From_With_Type): Renamed to From_Limited_With along with pragma Inline. - (Set_From_With_Type): Renamed to - Set_From_Limited_With along with pragma Inline. - * sem_ch7.adb, sem_ch8.adb, sem_ch12.adb, sem_ch13.adb, sem_disp.adb, - sem_res.adb, sem_type.adb, sem_util.adb, sem_warn.adb, - exp_attr.adb, exp_disp.adb, freeze.adb, itypes.adb, layout.adb, - lib-writ.adb, rtsfind.adb, sem_attr.adb, sem_aux.adb, sem_ch3.adb, - sem_ch4.adb: Replace all references to attribute From_With_Type - with From_Limited_With. - * sem_ch6.adb: Replace all references to attribute From_With_Type - with From_Limited_With. - (Designates_From_With_Type): Renamed to Designates_From_Limited_With. - (Process_Formals): Update the call to Designates_From_With_Type. - * sem_ch10.adb: Replace all references to attribute From_With_Type - with From_Limited_With. - (Build_Limited_Views): Reimplemented. - * gcc-interface/decl.c Replace all references to attribute - From_With_Type with From_Limited_With. - (finalize_from_with_types): Renamed to finalize_from_limited_with. - * gcc-interface/gigi.h (finalize_from_with_types): Renamed to - finalize_from_limited_with. - * gcc-interface/trans.c: Replace all references to attribute - From_With_Type with From_Limited_With. - (Compilation_Unit_to_gnu): Update the call to finalize_from_with_types. - -2013-10-17 Pascal Obry - - * projects.texi: Update VCS_Kind documentation. - -2013-10-17 Matthew Heaney - - * a-convec.adb, a-coinve.adb, a-cobove.adb (Insert, Insert_Space): - Inspect value range before converting type. - -2013-10-17 Hristian Kirtchev - - * sem_prag.adb (Analyze_Pragma): Flag the use of pragma Refined_Pre as - illegal. - -2013-10-17 Vincent Celier - - * gnat_ugn.texi: Remove VMS conversion of -gnatet and -gnateT, - now that they are both in ug_words. - * ug_words: Update qualifier for -gnatet Add qualifier for -gnateT - * vms_data.ads: Update qualifier for -gnatet Add qualifier - for -gnateT - * projects.texi: Continue to update the project documentation - for VMS. - -2013-10-17 Robert Dewar - - * einfo.ads, einfo.adb (Has_Body_References): New flag. - (Body_References): New field. - * sem_prag.adb (Record_Possible_Body_Reference): New procedure - (Analyze_Input_Output): Call Record_Possible_Body_Reference - (Analyze_Global_Item): Call Record_Possible_Body_Reference - (Analyze_Refinement_Clause): Output messages if illegal global refs. - -2013-10-17 Thomas Quinot - - * freeze.adb (Check_Component_Storage_Order): Reject a record or - array type that does not have an explicit Scalar_Storage_Order - attribute definition if a component of the record, or the - elements of the array, have one. - * gnat_rm.texi (attribute Scalar_Storage_Order): Document the above - rule. - -2013-10-17 Vincent Celier - - * gnat_ugn.texi: Add examples of switches -gnateD, including - one where the value is a string. - * projects.texi: Do not convert switches in project files to - VMS qualifiers. - -2013-10-17 Robert Dewar - - * sem_prag.adb (Report_Extra_Clauses): Don't complain about - refinements with null input since null should be considered to - always match. - -2013-10-17 Robert Dewar - - * gnat_ugn.texi: Document -gnatw.y/-gnatw.Y. - * opt.ads (List_Body_Required_Info): New flag. - * prep.adb: Minor reformatting. - * sem_ch7.adb (Unit_Requires_Body_Info): New - procedure (Analyze_Package_Specification): Add call to - Unit_Requires_Body_Info. - * ug_words: Add entries for -gnatw.y and -gnatw.Y. - * usage.adb: Add line for new warning switch -gnatw.y/.Y. - * vms_data.ads: Add entry for [NO_]WHY_SPEC_NEEDS_BODY warning - qualifier. - * warnsw.ads, warnsw.adb: Implement new warning switch -gnatw.y/.Y. - -2013-10-17 Yannick Moy - - * sem_ch8.adb (Find_Direct_Name): Keep track of assignments for - renamings in SPARK mode. - -2013-10-17 Yannick Moy - - * exp_spark.adb (Expand_SPARK): Remove special case for NOT IN - operation. - * sinfo.ads: Add special comment section to describe SPARK mode - effect on tree. - * exp_spark.ads: Remove comments, moved to sinfo.ads. - -2013-10-17 Yannick Moy - - * exp_ch3.adb (Expand_Freeze_Class_Wide_Type, - Expand_Freeze_Class_Wide_Type, Expand_Freeze_Class_Wide_Type): - Remove useless special cases. - * exp_ch4.adb (Expand_Allocator_Expression, Expand_N_Allocator, - Expand_N_Op_Expon): Remove useless special cases. - * exp_ch6.adb (Is_Build_In_Place_Function_Call): Disable build-in-place - in SPARK mode by testing Full_Expander_Active instead of - Expander_Active. - (Make_Build_In_Place_Call_In_Allocator): Remove useless special case. - * exp_util.adb (Build_Allocate_Deallocate_Proc): Remove - useless special case. - * sem_eval.adb (Compile_Time_Known_Value): Remove special handling of - deferred constant. - -2013-10-17 Yannick Moy - - * gnat_ugn.texi: Document -gnateT and target file format. - -2013-10-17 Vincent Celier - - * prep.adb (Check_Command_Line_Symbol_Definition): Is_A_String is - always False, even when the value starts and ends with double quotes. - -2013-10-17 Tristan Gingold - - * a-exexpr-gcc.adb: Synchronize declarations of other/all others. - -2013-10-17 Thomas Quinot - - * exp_pakd.adb: Add missing guard protecting Reverse_Storage_Order - call. - * sem_res.adb: Minor code cleanup: use named parameter association - (not positional) for Boolean parameter Sec_Stack in calls to - Establish_Transient_Scope. - -2013-10-15 Thomas Quinot - - * exp_pakd.adb (Expand_Packed_Element_Set, - Expand_Packed_Element_Reference): Adjust for the case of packed - arrays of reverse-storage-order types. - -2013-10-15 Robert Dewar - - * sem_prag.adb: Minor reformatting. - -2013-10-15 Ed Schonberg - - * sem_attr.adb (Analyze_Attribute_Specification, case - To_Address): If the expression is an identifier, do not modify - its type; it will be converted when necessary, and the type of - the expression must remain consistent with that of the entity - for back-end consistency. - -2013-10-15 Robert Dewar - - * sem_ch7.adb (Unit_Requires_Body): Add flag - Ignore_Abstract_State (Analyze_Package_Specification): Enforce - rule requiring Elaborate_Body if a non-null abstract state is - specified for a library-level package. - * sem_ch7.ads (Unit_Requires_Body): Add flag Ignore_Abstract_State. - -2013-10-15 Hristian Kirtchev - - * sem_prag.adb (Analyze_Constituent): When - a state acts as a constituent of another state, ensure that - the said state has a Part_Of dependency in its corresponding - aspect/pragma Abstract_State. - -2013-10-15 Robert Dewar - - * par-ch4.adb (P_If_expression): Handle redundant ELSE cleanly. - -2013-10-15 Thomas Quinot - - * atree.ads (New_Copy, Relocate_Node): Improve documentation - (note that these subprograms reset Is_Overloaded). - -2013-10-15 Thomas Quinot - - * checks.adb (Check_Needed): Handle the case where the test in - the left operand of the short circuit is wrapped in a qualified - expression, type conversion, or expression with actions. - -2013-10-15 Thomas Quinot - - * sem_type.adb, sem_type.ads (Save_Interps): Also propagate - Is_Overloaded to New_N, for consistency. - -2013-10-15 Ed Schonberg - - * a-tienau.adb (Put): Use file parameter to query values of - current column and line length. - -2013-10-15 Robert Dewar - - * sem_prag.adb, exp_ch11.adb, a-except-2005.adb, a-except-2005.ads: - Minor reformatting. - -2013-10-15 Eric Botcazou - - * targparm.ads: Fix minor typo in comment. - -2013-10-15 Ed Schonberg - - * lib-xref.adb: handle full views that are derived from private - types. - * sem_util.adb (Build_Elaboration_Entity): Do nothing in ASIS - mode: the elaboration entity is not in the source, and plays no - role in semantic analysis. Minor reformatting. - -2013-10-15 Tristan Gingold - - * adaint.c (__gnat_get_executable_load_address): Remove AIX - specific code. - -2013-10-15 Ed Schonberg - - * exp_aggr.adb (Aggr_Size_OK): Refine criteria to better handle - large static aggregates with static record components, to avoid - generating a large number of asignments. Conversely, improve - handling of aggregates initialized by a single association, - which are most efficiently implemented with a loop. - -2013-10-15 Hristian Kirtchev - - * sem_prag.adb (Analyze_Input_Item): Emit an - error when the input item comes from the related package. - -2013-10-15 Arnaud Charlet - - * exp_ch11.adb (Expand_Exception_Handlers): Restrict previous - change. - -2013-10-14 Tristan Gingold - - * gcc-interface/gigi.h (standard_datatypes): Add - ADT_set_exception_parameter_decl - (set_exception_parameter_decl): New macro. - * gcc-interface/trans.c (gigi): Initialize set_exception_parameter_decl. - (Exception_Handler_to_gnu_zcx): Initialize the choice parameter. - * gcc-interface/trans.c: Synchronize declarations of other/all others - between gigi and the runtime. - -2013-10-14 Robert Dewar - - * exp_attr.adb (Find_Stream_Subprogram): Optimize - Storage_Array stream handling. - (Find_Stream_Subprogram): Optimize Stream_Element_Array stream handling - * rtsfind.ads: Add entry for Stream_Element_Array Add - entries for RE_Storage_Array subprograms Add entries for - RE_Stream_Element_Array subprograms - * s-ststop.ads, s-ststop.adb: Add processing for System.Storage_Array. - Add processing for Ada.Stream_Element_Array. - -2013-10-14 Tristan Gingold - - * a-except-2005.ads, a-except-2005.adb: - (Get_Exception_Machine_Occurrence): New function. - * raise-gcc.c (__gnat_unwind_exception_size): New constant. - -2013-10-14 Robert Dewar - - * sem_res.adb: Minor fix to error message text. - * errout.ads, erroutc.ads: Minor reformatting. - * s-ststop.ads, s-stratt.ads: Clean up documentation of block IO - mode for streams. - * s-stratt-xdr.adb: Minor comment update. - -2013-10-14 Robert Dewar - - * sem_aux.adb, sem_aux.ads, sem_prag.adb: Minor reformatting. - -2013-10-14 Ed Schonberg - - * sem_res.adb (Resolve_Actuals): Add error message for a - subprogram with an in-out parameter when used in a predicate, - to clarify subsequent error at the point of call. - -2013-10-14 Hristian Kirtchev - - * sem_prag.adb (Is_Matching_Input): Consume a matching null input. - -2013-10-14 Robert Dewar - - * freeze.adb (Freeze_Record): Don't give warning about packed - and foreign convention. - -2013-10-14 Ed Schonberg - - * sem_aux.adb, sem_aux.ads (Package_Specification): New function, to - replace the less efficient idiom Specification. - (Unit_Declaration_Node (Pack_Id)), which handles library units and - child units. - * sem_ch3.adb, sem_ch10.adb, sem_prag.adb, sem_ch12.adb, sem_ch6.adb, - exp_disp.adb, sem_cat.adb, exp_dist.adb: Use Package_Specification. - -2013-10-14 Hristian Kirtchev - - * exp_attr.adb (Expand_Update_Attribute): Update the call to - Process_Range_Update. - (Process_Range_Update): Add new formal parameter Typ and associated - comment on usage. Add local constant Index_Typ. Add a type conversion - as part of the indexed component to ensure that the loop variable - corresponds to the index type. - -2013-10-14 Tristan Gingold - - * a-exexpr-gcc.adb: Adjust comment. - (Others_Value, All_Others_Value, - Unhandled_Others_Value): Declare as Character to slightly reduce - memory footprint. - -2013-10-14 Robert Dewar - - * freeze.adb (Size_Known): Size is not known for packed record - with aliased components - -2013-10-14 Robert Dewar - - * sem_ch3.adb: Minor fix to error message. - * a-exexpr-gcc.adb, sem_util.adb, sem_case.adb, exp_ch11.adb: Minor - reformatting. - -2013-10-14 Arnaud Charlet - - * exp_ch11.adb: Fix typo. - -2013-10-14 Thomas Quinot - - * exp_util.ads: Minor reformatting. - -2013-10-14 Ed Schonberg - - * sem_ch3.adb (Build_Derived_Record_Type): Reject full views - with no explicit discriminant constraints, when the parents of - the partial view and the full view are constrained subtypes with - different constraints. - -2013-10-14 Robert Dewar - - * freeze.adb (Freeze_Array_Type): New procedure, abstracts out - this code from Freeze. - (Freeze_Array_Type): Detect pragma Pack overriding foreign convention - (Freeze_Record_Type): Ditto. - -2013-10-14 Hristian Kirtchev - - * sem_prag.adb (Analyze_Dependency_Clause): Add new local variable - Non_Null_Output_Seen. Update the call to Analyze_Input_Output. - (Analyze_Input_Item): Streamline the detection mechanism of null and - non-null items. - (Analyze_Input_List): Add new local variable - Non_Null_Input_Seen. Update all calls to Analyze_Input_Output. - (Analyze_Input_Output): Add new formal parameter Non_Null_Seen - and update the related comment on usage. Update the - recursive call to itself. Attribute 'Result is now treated - as a non-null item. Detect mixes of null and non-null items. - (Analyze_Initialization_Item): Streamline the detection mechanism - of null and non-null items. - -2013-10-14 Vincent Celier - - * projects.texi: Add documentation for the new project level - attribute Library_Rpath_Options. - -2013-10-14 Tristan Gingold - - * a-exexpr-gcc.adb (Set_Exception_Parameter): New procedure. - (Set_Foreign_Occurrence): New procedure, extracted from - Setup_Current_Excep. - * exp_ch11.adb (Expand_Exception_Handlers): Do not expand choice - parameter in case of zcx. - * sem_ch11.adb (Analyze_Exception_Handlers): Need debug info - for the choice parameter. - * raise-gcc.c: Add comments. - -2013-10-14 Hristian Kirtchev - - * aspects.adb: Add an entry in table Canonical_Aspect for - Initial_Condition. - * aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument, - Aspect_Names and Aspect_Delay for Initial_Condition. - * einfo.adb (Get_Pragma): Include pragma Initial_Condition to - categorization pragmas. - * einfo.ads (Get_Pragma): Update comment on usage. - * exp_ch7.adb (Expand_N_Package_Body): Add a runtime check to - verify the assertion introduced by pragma Initial_Condition. - (Expand_N_Package_Declaration): Add a runtime check to - verify the assertion introduced by pragma Initial_Condition. - (Expand_Pragma_Initial_Condition): New routine. - * par-prag: Include pragma Initial_Condition to the list of - pragmas that do not require special processing by the parser. - * sem_ch3.adb (Analyze_Declarations): Analyze pragma - Initial_Condition at the end of the visible declarations. - * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing - for aspect Initial_Condition. - (Check_Aspect_At_Freeze_Point): - Aspect Initial_Condition does not need inspection at freezing. - * sem_prag.adb (Analyze_Initial_Condition_In_Decl_Part): - New routine. - (Analyze_Pragma): Update all calls - to Check_Declaration_Order. Add processing for pragma - Initial_Condition. Initial_Condition is now a valid assertion - kind. Add an entry in table Sig_Flags for Initial_Condition. - (Check_Declaration_Order): Reimplemented to handle arbitrary - pragmas. - (Is_Valid_Assertion_Kind): Add an entry for - Initial_Condition. - * sem_pag.ads (Analyze_Initial_Condition_In_Decl_Part): - New routine. - * sem_util.adb (Add_Contract_Item): Pragma Initial_Condition - can now be associated with a package spec. - * sem_util.ads (Add_Contract_Item): Update comment on usage. - * sinfo.ads: Update the documentation of node N_Contract - * snames.ads-tmpl: Add new predefined name Initial_Condition. Add - new pragma id for Initial_Condition. - -2013-10-14 Thomas Quinot - - * exp_pakd.adb: Minor reformatting. - -2013-10-14 Robert Dewar - - * exp_prag.adb: Minor reformatting. - -2013-10-14 Ed Schonberg - - * sem_case.adb (Check_Against_Predicate): Handle properly an - others clause in various cases. - -2013-10-14 Hristian Kirtchev - - * sem_prag.adb (Check_Matching_Constituent): Do - not inspect the hidden states if there are no hidden states. This - case arises when the constituents are states coming from a - private child. - -2013-10-14 Doug Rupp - - * init.c [ARMEL and VxWorks] (__gnat_map_signal): Re-arm guard - page by clearing VALID bit vice setting page protection. - -2013-10-14 Arnaud Charlet - - * gnat_rm.texi, adaint.c: Fix typo. - -2013-10-14 Ed Schonberg - - * sem_util.adb (Is_Variable, In_Protected_Function): In the - body of a protected function, the protected object itself is a - constant (not just its components). - -2013-10-14 Vincent Celier - - * snames.ads-tmpl: Add new standard name Library_Rpath_Options. - -2013-10-14 Tristan Gingold - - * sem_prag.adb (Process_Import_Or_Interface): Allow importing - of exception using convention Cpp. - * exp_prag.adb (Expand_Pragma_Import_Or_Interface): Expand cpp - imported exceptions. - * raise-gcc.c (is_handled_by): Filter C++ exception occurrences. - * gnat_rm.texi: Document how to import C++ exceptions. - -2013-10-14 Jose Ruiz - - * sem_ch13.adb (Sem_Ch13.Analyze_Aspect_Specification): For - Priority and CPU aspects, when checking, issue a warning only - if it is obviously not a main program. - -2013-10-14 Tristan Gingold - - * adaint.c: Fix condition for AIX. Minor reformatting. - -2013-10-14 Robert Dewar - - * sem_ch3.adb, sem_prag.adb, prj.ads: Minor reformatting. - -2013-10-14 Hristian Kirtchev - - * sem_prag.adb (Analyze_Depends_In_Decl_Part): - Rename Outputs_Seen to All_Outputs_Seen and update all occurrences - of the variable. - (Analyze_Input_Output): Add an item to - All_Inputs_Seen when it is an input or a self-referential output. - (Check_Mode): Comment reformatting. - (Analyze_Abstract_State): Remove the restriction that an Export state - must also have mode Input_Only or Output_Only. - -2013-10-14 Hristian Kirtchev - - * einfo.adb: Flag 263 is now known as Has_Visible_Refinement. - (Has_Non_Null_Refinement): New routine. - (Has_Null_Refinement): The routine is now synthesized. - (Has_Visible_Refinement): New routine. - (Set_Has_Visible_Refinement): New routine. - (Write_Entity_Flags): Remove the output for - Has_Null_Refinement. Add output for Has_Visible_Refinement. - * einfo.ads: Update the occurrences of Has_Non_Null_Refinement, - Has_Null_Refinement and Has_Visible_Refinement in entities. - (Has_Non_Null_Refinement): New synthesized attribute. - (Has_Null_Refinement): This attribute is now synthesized. - (Has_Visible_Refinement): New routine with corresponding - pragma Inline. - (Set_Has_Visible_Refinement): New routine with corresponding pragma - Inline. - * sem_ch3.adb (Analyze_Declarations): Add new local - variable In_Package_Body. Remove state refinements from - visibility at the end of the package body declarations. - (Remove_Visible_Refinements): New routine. - * sem_prag.adb (Analyze_Constituent): Collect a null - constituent and mark the state as having visible refinement. - (Analyze_Global_Item): Use attribute Has_Visible_Refinement to - detect a state with visible refinement. - (Analyze_Input_Output): Use attribute Has_Visible_Refinement to detect - a state with visible refinement. - (Check_Dependency_Clause): Use attribute Has_Non_Null_Refinement rather - than checking the contents of list Refinement_Constituents. - (Check_In_Out_States): Use attribute Has_Non_Null_Refinement rather - than checking the contents of list Refinement_Constituents. - (Check_Input_States): Use attribute Has_Non_Null_Refinement rather - than checking the contents of list Refinement_Constituents. - (Check_Matching_Constituent): Mark a state as having visible refinement. - (Check_Output_States): Use attribute Has_Non_Null_Refinement rather than - checking the contents of list Refinement_Constituents. - (Check_Refined_Global_Item): Use attribute Has_Visible_Refinement - to detect a state with visible refinement. - (Is_Matching_Input): Use attribute Has_Non_Null_Refinement rather than - checking the contents of list Refinement_Constituents. - * sem_util.adb (Is_Refined_State): Use attribute - Has_Visible_Refinement to detect a state with visible refinement. - -2013-10-14 Hristian Kirtchev - - * sem_prag.adb (Check_Mode): Do not emit an - error when inspecting a self referencial output item of an - unconstrained type. - -2013-10-14 Tristan Gingold - - * exp_prag.adb (Expand_Pragma_Import_Export_Exception): Fix - target type for code of VMS imported exception. - * init.c: Replace Exception_Code by void *. - * s-vmexta.adb (Hash, Base_Code_In): Adjust code after changing - the type of Exception_Code. - -2013-10-14 Vincent Celier - - * prj.ads: Minor comment updates. - * prj-attr.adb: New attribute Library_Rpath_Options. - -2013-10-14 Robert Dewar - - * gnat_rm.texi: Library_Level attribute now applies to an - entity name. - * sem_attr.adb (Analyze_Attribute, case Library_Level): Prefix - is now an entity name. - -2013-10-14 Jose Ruiz - - * sem_ch13.adb (Analyze_Aspect_Specification): For - Priority and CPU aspects in subprograms, the expression in the - aspect is analyzed and exported. - -2013-10-14 Robert Dewar - - * s-valuti.adb, prep.adb, scng.adb, errout.adb: Minor reformatting. - -2013-10-14 Eric Botcazou - - * adaint.c: Further disable __gnat_get_executable_load_address - for Linux. - -2013-10-14 Vincent Celier - - * gnat_ugn.texi: Add documentation for comparing symbols to - integers in preprocessing expressions. - -2013-10-14 Jose Ruiz - - * sem_prag.adb (Analyze_Aspect_Specification): For - Priority and CPU aspects in subprograms, the expression in the - aspect is analyzed and exported. - (Analyze_Pragma): When having a Priority pragma in the - main subprogram, load a unit that will force the initialization - of the tasking run time, which is needed for setting the required - priority. - -2013-10-14 Vincent Celier - - * prj-nmsc.adb (Check_Interfaces): Put in Other_Interfaces all - non Ada interface files. - * prj.ads (Project_Data): New component Other_Interfaces. - -2013-10-14 Arnaud Charlet - - * gcc-interface/Makefile.in: Target pairs clean ups. - -2013-10-14 Vincent Celier - - * errout.adb (Write_Error_Summary): Do not output the number - of lines when Main_Source_File is unknown. - (Output_Messages): Do not write the header when Main_Source_File is - unknown. - -2013-10-14 Vincent Celier - - * prep.adb (Expression): Accept terms of the form 'symbol - integer", where relop is =, <, <=, > or >=. - (Parse_Def_File): Accept literal integer values. - * gcc-interface/Make-lang.in: Add s-valint.o, s-valuns.o and - s-valuti.o to the compiler object files. - -2013-10-14 Robert Dewar - - * exp_prag.adb, exp_ch11.adb, s-exctab.adb: Minor reformatting. - * usage.adb: Add line for -gnateu switch. - -2013-10-14 Vincent Celier - - * lib-writ.ads: Add comments to indicate that a path name in - D lines may be quoted if the path name includes directories - with spaces. - -2013-10-14 Robert Dewar - - * debug.adb: Document -gnatd.E. - * gnat1drv.adb (Adjust_Global_Switches): Set Error_To_Warning - if -gnatd.E set. - * opt.ads (Error_To_Warning): New switch. - * osint.adb: Minor reformatting. - * sem_warn.adb (Warn_On_Overlapping_Actuals): Overlap is error - in some cases in Ada 2012 mode (unless Error_To_Warning) is set. - * sem_warn.ads (Warn_On_Overlapping_Actuals): Document error - in Ada 2012 mode. - -2013-10-14 Tristan Gingold - - * cstand.adb: Add a comment for Standard_Exception_Type. - -2013-10-14 Ed Schonberg - - * exp_ch4.adb (Process_Transient_Object): If a transient scope - has already been created, use the corresponding Node_To_Be_Wrapped - as the insertion point for the controlled actions. - -2013-10-14 Tristan Gingold - - * cstand.adb (Create_Standard): Change Import_Code component - of Standard_Exception_Type to Foreign_Data. Its type is now - Standard_A_Char (access to character). - * exp_prag.adb (Expand_Pragma_Import_Export_Exception): Adjust - definition of Code to match the type of Foreign_Data. - * s-stalib.ads (Exception_Data): Replace Import_Code by Foreign_Data - Change the definition of standard predefined exceptions. - (Exception_Code): Remove. - * raise.h (Exception_Code): Remove (Exception_Data): Replace - Import_Code field by Foreign_Data. - * rtsfind.ads (RE_Exception_Code): Remove - (RE_Import_Address): Add. - * a-exexpr-gcc.adb (Import_Code_For): Replaced by Foreign_Data_For. - * exp_ch11.adb (Expand_N_Exception_Declaration): Associate null - to Foreign_Data component. - * raise-gcc.c (Import_Code_For): Replaced by Foreign_Data_For. - (is_handled_by): Add comments. Use replaced function. Change - condition so that an Ada occurrence is never handled by - Foreign_Exception. - * s-exctab.adb (Internal_Exception): Associate Null_Address to - Foreign_Data component. - * s-vmexta.adb, s-vmexta.ads (Exception_Code): Declare Replace - SSL.Exception_Code by Exception_Code. - -2013-10-14 Robert Dewar - - * gnat_ugn.texi: Document -gnateu switch. - * opt.ads (Ignore_Unrecognized_VWY_Switches): New switch. - * stylesw.adb: Ignore unrecognized switch if - Ignore_Unrecognized_VWY_Switches set. - * switch-c.adb: Implement -gnateu (sets - Ignore_Unrecognized_VWY_Switches). - * validsw.adb: Ignore unrecognized switch if - Ignore_Unrecognized_VWY_Switches set. - * warnsw.adb: Ignore unrecognized switch if - Ignore_Unrecognized_VWY_Switches set. - -2013-10-14 Robert Dewar - - * exp_prag.adb, sem_prag.adb, a-exexda.adb, s-vmexta.ads: Minor - reformatting. - -2013-10-14 Vincent Celier - - * ali.adb (Get_File_Name): New Boolean parameter May_Be_Quoted, - defaulted to False. Calls Get_Name with May_Be_Quoted. - (Get_Name): New Boolean parameter May_Be_Quoted, defaulted to - False. If May_Be_Quoted is True and first non blank charater is - '"', unquote the name. - (Scan_ALI): For the file/path name on the D line, call Get_File_Name - with May_Be_Quoted = True, as it may have been quoted. - * lib-util.adb, lib-util.ads (Write_Info_Name_May_Be_Quoted): New - procedure to write file/path names that may contain spaces and if they - do are quoted. - * lib-writ.adb (Write_ALI): Use new procedure - Write_Info_Name_May_Be_Quoted to write file/path names on D lines. - -2013-10-14 Hristian Kirtchev - - * sem_prag.adb (Analyze_Depends_In_Decl_Part, - Analyze_Global_In_Decl_Part, - Analyze_Pre_Post_Condition_In_Decl_Part): Install the subprogram - and its formals only when it is not already installed. - * sem_util.adb (Is_Refined_State): A state is refined when it - has a non-empty list of constituents. - -2013-10-14 Tristan Gingold - - * adaint.c: Disable __gnat_get_executable_load_address for linux. - * exp_prag.adb: Add comment in Expand_Pragma_Import_Export_Exception. - -2013-10-14 Tristan Gingold - - * s-vmexta.ads: Add comments. - -2013-10-14 Hristian Kirtchev - - * sem_ch6.adb (Analyze_Subprogram_Body_Contract): Add processing - for pragma Refined_State. - * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing - for aspect Refined_Depends. - * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): - Use Find_Related_Subprogram_Or_Body to find the related - context. Use the current scope when determining whether to - ensure proper visibility. - (Analyze_Depends_In_Decl_Part): - Add local variable Spec_Id. Update the comment on usage of - Subp_Id. Use Find_Related_Subprogram_Or_Body to find the - related context. Extract the corresponding spec of the body - (if any). Use the current scope when determining when to - ensure proper visibility. - (Analyze_Global_In_Decl_Part): - Add local variable Spec_Id. Update the comment on usage of - Subp_Id. Use Find_Related_Subprogram_Or_Body to find the - related context. Extract the corresponding spec of the body - (if any). Use the current scope when determining when to - ensure proper visibility. - (Analyze_Global_Item): Use the - entity of the subprogram spec when performing formal parameter - checks. Perform state-related checks. - (Analyze_Input_Output): - Use Is_Attribute_Result to detect 'Result. Query the - entity of a subprogram spec when verifying the prefix of - 'Result. Perform state-related checks. (Analyze_Pragma): - Merge the analysis of Refined_Depends and Refined_Global. - (Analyze_Refined_Depends_In_Decl_Part): Provide implemenation. - (Analyze_Refined_Global_In_Decl_Part): Move state-related checks - to the body of Analyze_Global_In_Decl_Part. Rename local constant - List to Items. (Analyze_Refined_Pragma): Remove circuitry to - find the proper context, use Find_Related_Subprogram_Or_Body - instead. - (Check_Function_Return): Query the entity of - the subprogram spec when verifying the use of 'Result. - (Check_In_Out_States, Check_Input_States, Check_Output_States): - Avoid using Has_Null_Refinement to detect a state with - a non-null refinement, use the Refinement_Constituents - list instead. - (Check_Matching_Constituent): Remove initialization code. - (Check_Mode_Restriction_In_Function): Use the entity of the subprogram - spec when verifying mode usage in functions. - (Collect_Global_Items): New routine. - (Collect_Subprogram_Inputs_Outputs): Add local - variable Spec_Id. Add circuitry for bodies-as-specs. Use - pragma Refined_Global when collecting for a body. - (Create_Or_Modify_Clause): Use the location of the - clause. Rename local variable Clause to New_Clause to avoid - confusion and update all occurrences. Use Is_Attribute_Result - to detect 'Result. - (Find_Related_Subprogram): Removed. - (Find_Related_Subprogram_Or_Body): New routine. - (Is_Part_Of): Move routine to top level. - (Normalize_Clause): Update the - comment on usage. The routine can now normalize a clause with - multiple outputs by splitting it. - (Collect_Global_Items): - Rename local constant List to Items. Remove the check for - a null list. - (Requires_Profile_Installation): Removed. - (Split_Multiple_Outputs): New routine. - * sem_prag.ads: Update the comments on usage of various - pragma-related analysis routines. - * sem_util.adb (Contains_Refined_State): The routine can now - process pragma [Refined_]Depends. - (Has_Refined_State): Removed. - (Has_State_In_Dependency): New routine. - (Has_State_In_Global): New routine. - (Is_Attribute_Result): New routine. - * sem_util.ads (Is_Attribute_Result): New routine. - -2013-10-14 Emmanuel Briot - - * s-regpat.adb (Compile): Fix finalization of the automaton - when its size was automatically computed to be exactly 1000 bytes. - -2013-10-14 Ed Schonberg - - * sem_ch3.adb (Complete_Private_Subtype): If the full view of - the base type is constrained, the full view of the subtype is - known to be constrained as well. - -2013-10-14 Vincent Celier - - * projects.texi: Add documentation for new attributes of package - Clean: Artifacts_In_Object_Dir and Artifacts_In_Exec_Dir. - -2013-10-14 Tristan Gingold - - * adaint.c, adaint.h (__gnat_get_executable_load_address): - New function. - * a-exexda.adb (Append_Info_Basic_Exception_Traceback): Add - executable load address (Basic_Exception_Tback_Maxlength): Adjust. - -2013-10-14 Vincent Celier - - * prj-attr.adb: New attributes in package Clean: - Artifacts_In_Exec_Dir, Artifacts_In_Object_Dir. - * prj-nmsc.adb (Process_Clean (Attributes)): New - procedure to process attributes Artifacts_In_Exec_Dir and - Artifacts_In_Object_Dir in package Clean. - * prj.ads (Project_Configuration): New components - Artifacts_In_Exec_Dir and Artifacts_In_Object_Dir. - * snames.ads-tmpl: New standard names Artifacts_In_Exec_Dir and - Artifacts_In_Object_Dir used only by gprclean. - -2013-10-14 Robert Dewar - - * exp_attr.adb (Expand_N_Attribute_Reference): Add error - entry for Library_Level attribute (which should not survive - to expansion) - * gnat_rm.texi: Document attribute Library_Level - * sem_attr.adb (Analyze_Attribute, case Library_Level): Implement - this new attribute (Set_Boolean_Result): Replaces Set_Result - (Check_Standard_Prefix): Document that Check_E0 is called - (Check_System_Prefix): New procedure - * snames.ads-tmpl: Add entry for Library_Level attribute - -2013-10-14 Robert Dewar - - * exp_ch6.adb, sinfo.ads: Minor reformatting. - * checks.adb (Overlap_Check): Use identifier casing in messages. - -2013-10-14 Robert Dewar - - * einfo.ads, einfo.adb (Default_Aspect_Component_Value): Is on base type - only. - * exp_aggr.adb (Expand_Array_Aggregate): Handle proper - initialization of <> component. - * exp_ch3.adb, exp_tss.adb: Minor reformatting - * sem_ch13.adb (Default_Aspect_Component_Value, Default_Aspect_Value): - Is on base type only. - * sinfo.ads: Minor comment revision. - -2013-10-14 Robert Dewar - - * g-decstr.adb (Decode_Wide_Wide_Character): Fix failure - to detect invalid sequences where longer than necessary - sequences are used for encoding. - (Validate_Wide_Character): - Call Decode_Wide_Character to get the above validations. - (Validate_Wide_Wide_Character): Same fix - * g-decstr.ads: Add documentation making it clear that the UTF-8 - implementation here recognizes all valid UTF-8 sequences, rather - than the well-formed subset corresponding to characters defined - in Unicode. - (Next_Wide_Character): Remove comment about this - being more efficient than Decode_Wide_Character (because this - no longer the case). - (Prev_Wide_Character): Add note that valid encoding is assumed. - -2013-10-14 Robert Dewar - - * a-wichha.adb (Character_Set_Version): New function. - * a-wichha.ads: Remove comments for pragma Pure (final RM has - this). - (Character_Set_Version): New function. - * gnat_rm.texi: Update doc. - -2013-10-14 Hristian Kirtchev - - * einfo.adb: Flag263 is now known as Has_Null_Refinement. - (Has_Null_Refinement): New routine. - (Set_Has_Null_Refinement): New routine. - (Write_Entity_Flags): Output the status of flag - Has_Null_Refinement. - * einfo.ads: Add new flag Has_Null_Refinement along with - comment on usage and update all nodes subject to the flag. - (Has_Null_Refinement): New routine along with pragma Inline. - (Set_Has_Null_Refinement): New rouitine along with pragma Inline. - * sem_prag.adb (Analyze_Constituent): Mark a state as having - a null refinement when the sole constituent is "null". - (Analyze_Global_List): Handle null input/output items. - (Analyze_Refined_Global_In_Decl_Part): Add local variable - Has_Null_State. Add logic to handle combinations of states - with null refinements and null global lists and/or items. - (Check_In_Out_States, Check_Input_States, Check_Output_States): - Use attribute Has_Null_Refinement to detect states with - constituents. - (Check_Refined_Global_List): Handle null input/output items. - (Process_Global_Item): Handle states with null refinements. - (Process_Global_List): Handle null input/output items. - -2013-10-14 Robert Dewar - - * freeze.adb (Freeze_Entity): Reset Is_True_Constant for - aliased object - * gnat_ugn.texi: Update doc on aliased variables and constants. - -2013-10-14 Ed Schonberg - - * exp_pakd.adb (Expand_Packed_Element_Reference): If the - reference is an actual in a call, the prefix has not been fully - expanded, to account for the additional expansion for parameter - passing. the prefix itself is a packed reference as well, - recurse to complete the transformation of the prefix. - -2013-10-14 Eric Botcazou - - * exp_dbug.adb (Debug_Renaming_Declaration): Do not - materialize the entity when the renamed object contains an - N_Explicit_Dereference. - * sem_ch8.adb (Analyze_Object_Renaming): - If the renaming comes from source and the renamed object is a - dereference, mark the prefix as needing debug information. - -2013-10-14 Doug Rupp - - * system-vxworks-arm.ads (Stack_Check_Probes, Stack_Check_Limits): - Enable Stack Probes, Disable Stack Limit Checking. - * init.c [VxWorks] (__gnat_inum_to_ivec): Caste return value. - (__gnat_map_signal): Fix signature. - (__gnat_error_handler): Make - static, fix signature, remove prototype, fix prototype warning. - [ARMEL and VxWorks6] (__gnat_map_signal): Check and re-arm guard - page for storage_error. - * exp_pakd.adb: Minor reformatting. - -2013-10-14 Hristian Kirtchev - - * sem_prag.adb (Analyze_Global_In_Decl_Part): Remove local - variable Contract_Seen. Add local variable Proof_Seen. - (Analyze_Global_List): Remove the processing for mode - Contract_In. Add support for mode Proof_In. - (Analyze_Pragma): Update the grammar of pragmas Global and - Refined_Global. - * snames.ads-tmpl: Remove predefined name Contract_In. Add - predefined name Proof_In. - -2013-10-14 Robert Dewar - - * exp_prag.adb (Expand_Pragma_Check): Generate proper string - for invariant - * gnat_rm.texi: Add documentation for pragmas - Type_Invariant[_Class] - * par-prag.adb: Add entries for pragmas Type_Invariant[_Class] - * sem_ch13.adb: Minor reformatting - * sem_prag.adb: Implement pragmas Type_Invariant[_Class] - * snames.ads-tmpl: Add entries for pragmas Type_Invariant[_Class] - -2013-10-14 Johannes Kanig - - * debug.adb: Release now unused debug switches that were only - relevant for gnat2why backend, not the frontend - * frontend.adb (Frontend) Do not stop when -gnatd.H is present, - was unused - -2013-10-14 Hristian Kirtchev - - * sem_prag.adb (Analyze_Global_Item): Allow - references to enclosing formal parameters. - -2013-10-14 Thomas Quinot - - * einfo.adb (Equivalent_Type): Add missing case - E_Access_Subprogram_Type in guard (for remote access to - subprograms) * sem_ch8.adb (Find_Direct_Name, Find_Expanded_Name): - Add missing guards to account for the presence of RAS types - that have already been replaced with the corresponding fat - pointer type. - -2013-10-14 Hristian Kirtchev - - * aspects.adb: Add an entry in table Canonical_Aspect for - Initializes. - * aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument, - Aspect_Names and Aspect_Delay for Initializes. - * atree.ads, atree.adb (Ekind_In): New seven argument versions of the - routines. - * einfo.adb: Remove Refined_State_Pragma from the list of node - usage. Finalizer is now at position 28. - (Contract): Package - and package bodies now have a contract. - (Finalizer): Update - the assertion and node usage. - (Get_Pragma): Update the Is_CDG - flag to include Abstract_State, Initializes and Refined_State. - (Refined_State_Pragma): Removed. - (Set_Contract): Package and - package bodies now have a contract. - (Set_Finalizer): Update the - assertion and node usage. - (Set_Refined_State_Pragma): Removed. - (Write_Field8_Name): Remove the output for Refined_State_Pragma. - (Write_Field24_Name): Remove the output for Finalizer. Package - and package bodies now have a contract. - (Write_Field28_Name): - Add output for Finalizer. - * einfo.ads: Update the documentation and usage in entities - of attribute Contract. Update the node position and usage in - entities of attribute Finalizer. Remove the documentation - and usage in entities for attribute Refined_State_Pragma. - (Refined_State_Pragma): Removed along with pragma Inline. - (Set_Refined_State_Pragma): Removed along with pragma Inline. - * par-prag.adb: Add Initializes to the pragmas that do not - require special processing by the parser. - * sem_ch3.adb (Analyze_Declarations): Add local variable - Prag. Update the retrieval of pragma Refined_State. Analyze - aspect/pragma Initializes at the end of the visible declarations - of the related package. - * sem_ch6.adb (Analyze_Subprogram_Body_Contract): - Add local variables Ref_Depends and Ref_Global. Analyze - pragmas Refined_Global and Refined_Depends in that order. - (Analyze_Subprogram_Contract): Add local variables Depends and - Global. Analyze pragmas Global and Depends in that order. - * sem_ch7.adb (Analyze_Package_Body_Helper): Package - bodies now have a contract. Move the analysis of the aspect - specifications after the defining entity has been decorated. - (Analyze_Package_Declaration): Packages now have a contract. Move - the analysis of the aspect specifications after the defining - entity has been decorated. - * sem_ch12.adb (Analyze_Generic_Package_Declaration): Packages - now have contracts. - * sem_ch13.adb (Analyze_Pragma): Code cleanup for aspect - Abstract_State. Add processing for aspect Initializes. - (Check_Aspect_At_Freeze_Point): Add an entry for Initializes. - * sem_prag.adb: Use Get_Pragma_Arg to extract the expression - of a pragma argument. Add an entry in table Sig_Flags for - Initializes. - (Analyze_Initializes_In_Decl_Part): New routine. - (Analyze_Pragma): Check the declaration order of pragmas - Abstract_State and Initializes. Abstract_State is now part of - the package contract. Analyze pragma Initializes. Check for - duplicate Refined_State pragma. Refined_State is now part of - the package contract. - (Check_Declaration_Order): New routine. - (Check_Test_Case): Alphabetized. - * sem_prag.ads (Analyze_Initializes_In_Decl_Part): New routine. - * sem_util.adb (Add_Contract_Item): Rename formal Subp_Id - to Id. This routine can now support contracts on packages and - package bodies. - * sem_util.ads (Add_Contract_Item): Rename formal Subp_Id to - Id. Update comment on usage. - * sinfo.ads: Update the usage of N_Contract nodes. - * snames.ads-tmpl: Add predefined name Initializes. Add new - pragma id for Initializes. - -2013-10-13 Nicolas Roche - Eric Botcazou - - * gcc-interface/Make-lang.in (ada/%.o): Replace individual rules with - generic rule and add $(POSTCOMPILE). - (ADA_DEPS): New. - (.adb.o): Add @$(ADA_DEPS). - (.ads.o): Likewise. - (ada/a-except.o): Likewise. - (ada/s-excdeb.): Likewise. - (ada/s-assert.o): Likewise. - (ada/a-tags.o): Likewise. - (ada_generated_files): New variable. - Use them as dependency order for GNAT1_ADA_OBJS and GNATBIND_OBJS. - (ADA_DEPFILES): New variable. - Include them. - (ada_OBJS): Define. - -2013-10-13 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Force all local - variables with aggregate types in memory if not optimizing. - -2013-10-13 Hristian Kirtchev - - * sem_prag.adb (Check_Mode): Do - not emit an error when we are looking at inputs and - the item is an unconstrained or tagged out parameter. - (Check_Mode_Restriction_In_Enclosing_Context): Use Get_Pragma - to find whether the context is subject to aspect/pragma Global. - (Collect_Subprogram_Inputs_Outputs): Unconstrained or tagged - out parameters are now considered inputs. Use Get_Pragma to - find wheher the subprogram is subject to aspect/pragma Global. - (Is_Unconstrained_Or_Tagged_Item): New routine. - -2013-10-13 Thomas Quinot - - * einfo.ads: Minor reformatting. - * gcc-interface/Make-lang.in: Update dependencies. - -2013-10-13 Robert Dewar - - * gnat_rm.texi: Add documentation for pragmas Pre[_Class] - Post[_Class]. - * par-ch2.adb (Skip_Pragma_Semicolon): Handle extra semicolon nicely. - * par-prag.adb: Add entries for pragmas Pre[_Class] and - Post[_Class]. - * sem_prag.adb: Add handling of pragmas Pre[_Class] and - Post[_Class]. - * sem_util.adb (Original_Aspect_Name): Moved here from - Sem_Prag.Original_Name, and modified to handle pragmas - Pre/Post/Pre_Class/Post_Class. - * sem_util.ads (Original_Aspect_Name): Moved here from - Sem_Prag.Original_Name. - * snames.ads-tmpl: Add entries for pragmas Pre[_Class] and - Post[_Class]. - -2013-10-13 Robert Dewar - - * einfo.adb, sem_ch6.adb: Minor reformatting. - -2013-10-13 Hristian Kirtchev - - * einfo.adb: Add node/list usage for Refined_State - and Refinement_Constituents. - (Get_Pragma): Update the - initialization of Is_CDG to include Refined_Global and - Refined_Depends. Rename constant Delayed to In_Contract and update - all of its occurrences. - (Is_Non_Volatile_State): New routine. - (Is_Volatile_State): Removed. - (Refined_State): New routine. - (Refinement_Constituents): New routine. - (Set_Refined_State): New routine. - (Set_Refinement_Constituents): New routine. - (Write_Field8_Name): Add output for Refinement_Constituents. - (Write_Field10_Name): Add output for Refined_State. - * einfo.ads: Add new synthesized attribute Is_Non_Volatile_State. - Remove synthesized attribute Is_Volatile_State. Add new - attributes Refined_State and Refinement_Constituents along with - usage in nodes. - (Get_Pragma): Update the comment on usage. - (Is_Non_Volatile_State): New routine. - (Is_Volatile_State): Removed. - (Refined_State): New routine and pragma Inline. - (Refinement_Constituents): New routine and pragma Inline. - (Set_Refined_State): New routine and pragma Inline. - (Set_Refinement_Constituents): New routine and pragma Inline. - * elists.ads, elists.adb (Clone): Removed. - (New_Copy_Elist): New routine. - (Remove): New routine. - * sem_ch3.adb (Analyze_Declarations): Use Defining_Entity - to get the entity of the subprogram [body]. - (Analyze_Object_Declaration): Add initialization for - Refined_State. - * sem_ch6.adb (Analyze_Subprogram_Body_Contract): Add processing - for Refined_Global and Refined_Depends. Emit an error when - the body requires Refined_Global, but the aspect/pragma is - not present. - * sem_ch6.ads (Analyze_Subprogram_Body_Contract): Change - procedure signature and add comment on usage. - * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing - for aspect Refined_Global. - * sem_prag.adb (Analyze_Abstract_State): Add initialization - of attributes Refined_State and Refinement_Constituents. - (Analyze_Depends_In_Decl_Part, Analyze_Global_In_Decl_Part, - Analyze_Contract_Cases_In_Decl_Part): Remove local - constant Arg1. - (Analyze_Pragma): Add processing for pragma - Refined_Global. The analysis of Refined_Post and Refined_Pre - has been merged. Update an error message in the processing of - pragma Refined_State. - (Analyze_Refined_Global_In_Decl_Part): Provide implementation. - (Analyze_Refined_Pragma): New routine. - (Analyze_Refined_Pre_Post_Condition): Removed. - (Analyze_Refined_State_In_Decl_Part): Update the call to Clone. - (Analyze_Refinement_Clause): Make State_Id visible to all - nested subprogram. - (Check_Matching_Constituent): Establish - a relation between a refined state and its constituent. - (Collect_Hidden_States_In_Decls): Remove ??? comment. Look at - the entity of the object declaration to establish its kind. - * sem_util.adb: Alphabetize with and use clauses. - (Contains_Refined_State): New routine. - * sem_util.ads (Contains_Refined_State): New routine. - -2013-10-13 Thomas Quinot - - * scos.ads: Minor documentation clarification. - -2013-10-13 Thomas Quinot - - * s-oscons-tmplt.c (CLOCK_RT_Ada): Set to CLOCK_MONOTONIC when - building on AIX 5.3 or later, and to CLOCK_REALTIME on older - versions of AIX. - * init.c (pthread_condattr_setclock): Remove now useless weak symbol. - * thread.c(__gnat_pthread_condattr_setup): Remove bogus AIX 5.2 - compatibility shim. - * s-osinte-aix.ads(clock_id_t): Fix C mapping (this is a 64-bit - type). - (clock_gettime): Import from C runtime library. - * s-osinte-aix.adb (clock_gettime): Remove bogus emulation body, - this routine is provided by the system in current supported - versions of AIX. - -2013-10-13 Robert Dewar - - * sem_ch3.adb: Minor reformatting. - -2013-10-13 Ed Schonberg - - * freeze.adb (Freeze_Entity): For a function whose return type - is incomplete, do not replace the type with the full view if the - type is a limited view. In that case the full view appears in a - different unit, and the back-end will retrieve it at the proper - elaboration point. - -2013-10-13 Yannick Moy - - * exp_spark.adb (Expand_SPARK_Call): Do not introduce temporaries for - actuals. - -2013-10-13 Ed Schonberg - - * sem_ch3.adb: in Ada 2012 access_to_function types can have - in-out parameters. - (Derived_Type_Declaration): SPARK restriction - must be flagged on the original node, since it may have been - written as a subtype declaration. - (Analyze_Subtype_Declaration): Do not enter name of - entity in declaration if it is the current entity, because it may - have been inserted in a previous analysis and it appears in the - else_part of an if-statement that is rewritten during expansion. - -2013-10-13 Yannick Moy - - * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove procedure. - (Expand_SPARK): Remove call to Expand_SPARK_N_Attribute_Reference and - Expand_SPARK_N_Simple_Return_Statement. - (Expand_SPARK_N_Simple_Return_Statement, - Expand_SPARK_Simple_Function_Return): Remove procedures. - -2013-10-13 Vincent Celier - - * gnat_ugn.texi: Minor editing. - -2013-10-13 Ed Schonberg - - * sem_ch3.adb (Check_Abstract_Overriding): If a synchronized - operation implements an interface primitive, mark the operation - as referenced, to prevent usually spurious messages about unused - entities: such operations are called in dispatching select - statements that are not visible to the compiler. - -2013-10-13 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_param): Remove obsolete comment. - -2013-10-11 Jakub Jelinek - - * gcc-interface/utils.c (DEF_FUNCTION_TYPE_8): Define. - -2013-10-10 Robert Dewar - - * par-ch6.adb (Check_Junk_Semicolon_Before_Return): Remove - junk code. - -2013-10-10 Javier Miranda - - * sem_ch13.adb (Freeze_Entity_Checks): Avoid - loosing errors on CPP entities in -gnatc mode. - -2013-10-10 Robert Dewar - - * sem_ch5.adb (Analyze_If_Statement): Only diagnose redundant - if from source. - -2013-10-10 Robert Dewar - - * restrict.adb (Check_SPARK_Restriction): Refine test (don't - automatically go to the original node). - * sem_ch11.adb (Analyze_Raise_Statement): Only raise - statements that come from source violate SPARK restrictions. - (Analyze_Raise_xxx_Error): Same fix. - * sem_ch3.adb (Analyze_Object_Declaration): Check OK SPARK - initialization on original node, not on possibly rewritten - expression. - * sem_ch4.adb (Analyze_If_Expression): Only if expressions that - come from source violate SPARK mode restrictions. - -2013-10-10 Robert Dewar - - * gnat_ugn.texi: Fix confusing documentation for -gnatyM. - -2013-10-10 Yannick Moy - - * errout.adb (Compilation_Errors): In formal verification mode, - always return False. - -2013-10-10 Hristian Kirtchev - - * sem_prag.adb (Collect_Hidden_States_In_Decls): Only consider source - non-constant objects. - -2013-10-10 Hristian Kirtchev - - * aspects.adb: Add an entry in table Canonical_Aspect for - Refined_State. - * aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument, - Aspect_Names and Aspect_Delay for Refined_State. - * einfo.adb: Add with and use clauses for Elists. - Remove Refined_State from the list of node usage. - Add Refined_State_Pragma to the list of node usage. - (Has_Null_Abstract_State): New routine. - (Refined_State): Removed. - (Refined_State_Pragma): New routine. - (Set_Refined_State): Removed. - (Set_Refined_State_Pragma): New routine. - (Write_Field8_Name): Add output for Refined_State_Pragma. - (Write_Field9_Name): Remove the output for Refined_State. - * einfo.ads: Add new synthesized attribute Has_Null_Abstract_State - along with usage in nodes. Remove attribute Refined_State along - with usage in nodes. Add new attribute Refined_State_Pragma along - with usage in nodes. - (Has_Null_Abstract_State): New routine. - (Refined_State): Removed. - (Refined_State_Pragma): New routine. - (Set_Refined_State): Removed. - (Set_Refined_State_Pragma): New routine. - * elists.adb (Clone): New routine. - * elists.ads (Clone): New routine. - * par-prag.adb: Add Refined_State to the pragmas that do not - require special processing by the parser. - * sem_ch3.adb: Add with and use clause for Sem_Prag. - (Analyze_Declarations): Add local variables Body_Id, Context and - Spec_Id. Add processing for delayed aspect/pragma Refined_State. - * sem_ch13.adb (Analyze_Aspect_Specifications): Update the - handling of aspect Abstract_State. Add processing for aspect - Refined_State. Remove the bizzare insertion policy for aspect - Abstract_State. - (Check_Aspect_At_Freeze_Point): Add an entry for Refined_State. - * sem_prag.adb: Add an entry to table Sig_Flags - for pragma Refined_State. - (Add_Item): Update the - comment on usage. The inserted items need not be unique. - (Analyze_Contract_Cases_In_Decl_Part): Rename variable Restore to - Restore_Scope and update all its occurrences. - (Analyze_Pragma): - Update the handling of pragma Abstract_State. Add processing for - pragma Refined_State. - (Analyze_Pre_Post_Condition_In_Decl_Part): - Rename variable Restore to Restore_Scope and update all its - occurrences. - (Analyze_Refined_State_In_Decl_Part): New routine. - * sem_prag.ads (Analyze_Refined_State_In_Decl_Part): New routine. - * snames.ads-tmpl: Add new predefined name for Refined_State. Add - new Pragma_Id for Refined_State. - -2013-10-10 Ed Schonberg - - * sem_ch10.adb (Install_Limited_Withed_Unit): handle properly the - case of a record declaration in a limited view, when the record - contains a self-referential component of an anonymous access type. - -2013-10-10 Thomas Quinot - - * exp_ch4.adb (Process_Transient_Object): For any context other - than a simple return statement, insert the finalization action - after the context, not as an action on the context (which will - get evaluated before it). - -2013-10-10 Hristian Kirtchev - - * einfo.adb (Write_Field19_Name): Correct the - string name of attribute Default_Aspect_Value. - -2013-10-10 Ed Schonberg - - * sem_type.adb (Interface_Present_In_Ancestor): The progenitor - in a type declaration may be an interface subtype. - -2013-10-10 Robert Dewar - - * sinfo.ads (Do_Range_Check): Add special note on handling of - range checks for Succ and Pred. - -2013-10-10 Robert Dewar - - * erroutc.adb (Output_Msg_Text): Remove VMS special handling. - -2013-10-10 Robert Dewar - - * a-chahan.ads, a-chahan.adb (Is_Line_Terminator): New function - (Is_Mark): New function. - (Is_Other_Format): New function. - (Is_Punctuation_Connector): New function. - (Is_Space): New function. - -2013-10-10 Robert Dewar - - * sem_aggr.adb (Resolve_Array_Aggregate): Redo duplicate/missing - choice circuit. Was not quite right in some cases, which showed - up in ACATS test B43201C. - * sem_attr.adb (Address_Checks): Make sure name is set right - for some messages issued. - * mlib-prj.adb: Minor code reorganization. - * gnat_ugn.texi: Remove special VMS doc for tagging of warning msgs. - * exp_ch9.adb: Minor reformatting. - -2013-10-10 Tristan Gingold - - * lib-writ.adb (Write_Unit_Information): Adjust previous patch. - -2013-10-10 Robert Dewar - - * sem_ch5.adb (Analyze_If_Statement): Warn on redundant if - statement. - * sem_util.ads, sem_util.adb (Has_No_Obvious_Side_Effects): New - function. - -2013-10-10 Ed Schonberg - - * exp_ch9.adb (Expand_N_Timed_Entry_Call): Simplify expansion - for the case of a dispatching trigger: there is no need to - duplicate the code or create a subprogram to encapsulate the - triggering statements. This allows exit statements in the - triggering statements, that refer to enclosing loops. - -2013-10-10 Robert Dewar - - * freeze.adb: Minor reformatting. - * sem_ch13.adb (Freeze_Entity_Checks): New procedure - (Analyze_Freeze_Entity): Call Freeze_Entity_Checks - (Analyze_Freeze_Generic_Entity): Call Freeze_Entity_Checks. - * sinfo.ads: Add syntax for sprint for Freeze_Generic_Entity. - * sprint.ads: Add syntax for freeze generic entity node. - -2013-10-10 Robert Dewar - - * einfo.adb, einfo.ads: Minor comment updates. - -2013-10-10 Robert Dewar - - * lib-writ.adb (Write_Unit_Information): Fatal error if linker - options are detected in a predefined generic unit. - -2013-10-10 Thomas Quinot - - * s-oscons-tmplt.c (CLOCK_REALTIME): Always define, possibly using - a dummy placeholder value. - (NEED_PTHREAD_CONDATTR_SETCLOCK): Remove, not needed anymore. - * thread.c: Adjust #if test accordingly. - -2013-10-10 Hristian Kirtchev - - * exp_ch6.adb (Consequence_Error): Generate an - implicit if statement. - (Expand_Contract_Cases): Generate an implicit if statement. - (Process_Contract_Cases): Do not expand Contract_Cases when no code - is being generated. - -2013-10-10 Robert Dewar - - * sem_attr.adb (Address_Checks): New procedure. - -2013-10-10 Ed Schonberg - - * sinfo.ads, sinfo.adb: New Node Freeze_Generic_Entity, to trigger - semantic actions at the proper point for entities that previously - had no explicit freeze point. - * freeze.adb (Freeze_Generic_Entities): generate new nodes to - indicate the point at which semantic checks can be performed on - entities declared in generic packages. - * sem_ch13.ads, sem_ch13.adb: New procedure - Analyze_Freeze_Generic_Entity. - * exp_util.adb (Insert_Actions): Treat new node like Freeze_Entity. - * sem.adb (Analyze): Call Analyze_Freeze_Generic_Entity. - * sprint.adb (Sprint_Node): display Analyze_Freeze_Generic_Entity. - * gcc-interface/trans.c: Ignore Analyze_Freeze_Generic_Entity. - * gcc-interface/Make-lang.in: Update dependencies. - -2013-10-10 Robert Dewar - - * sem_aggr.adb (Resolve_Array_Aggregate): Identify duplicated - cases. - -2013-10-10 Robert Dewar - - * sem_ch9.adb (Analyze_Task_Body): Aspects are illegal - (Analyze_Protected_Body): Aspects are illegal. - -2013-10-10 Robert Dewar - - * sem_ch6.adb, sem_ch13.adb: Minor reformatting. - * sem_case.adb (Check_Choices): Fix bad listing of missing - values from predicated subtype case (Check_Choices): List - duplicated values. - * errout.adb (Set_Msg_Text): Process warning tags in VMS mode - * erroutc.adb (Output_Msg_Text): Handle VMS warning tags - * gnat_ugn.texi: Document /WARNINGS=TAG_WARNINGS for VMS - * ug_words: Add entries for -gnatw.d and -gnatw.D - * vms_data.ads: Add [NO]TAG_WARNINGS for -gnatw.D/-gnatw.d - * lib-writ.ads: Documentation fixes - -2013-10-10 Robert Dewar - - * a-wichha.adb, a-wichha.ads, a-zchhan.adb, a-zchhan.ads - (Is_Other_Format): New name for Is_Other. - (Is_Punctuation_Connector): New name for Is_Punctuation - -2013-10-10 Hristian Kirtchev - - * aspects.adb: Add entries in table Canonical_Aspects for aspects - Refined_Depends and Refined_Global. - * aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument, - Aspect_Names, Aspect_Declay, Aspect_On_Body_Or_Stub_OK for - aspects Refined_Depends and Refined_Global. - * einfo.adb (Contract): Subprogram bodies are now valid owners - of contracts. - (Set_Contract): Subprogram bodies are now valid - owners of contracts. - (Write_Field24_Name): Output the contract - attribute for subprogram bodies. - * exp_ch6.adb (Expand_Subprogram_Contract): New routine. - * exp_ch6.ads (Expand_Subprogram_Contract): New routine. - * par-prag.adb: Pragmas Refined_Depends and Refined_Global do - not require any special processing by the parser. - * sem_ch3.adb (Adjust_D): Renamed to Adjust_Decl. - (Analyze_Declarations): Code reformatting. Analyze the contract - of a subprogram body at the end of the declarative region. - * sem_ch6.adb (Analyze_Generic_Subprogram_Body): - Subprogram bodies can now have contracts. Use - Expand_Subprogram_Contract to handle the various contract - assertions. - (Analyze_Subprogram_Body_Contract): New null routine. - (Analyze_Subprogram_Body_Helper): Subprogram bodies can now have - contracts. Use Expand_Subprogram_Contract to handle the various - contract assertions. - (Analyze_Subprogram_Contract): Add local - variable Nam. Update the call to Analyze_PPC_In_Decl_Part. Capture - the pragma name in Nam. - (Process_PPCs): Removed. - * sem_ch6.ads (Analyze_Subprogram_Body_Contract): New routine. - (Analyze_Subprogram_Contract): Update the comment on usage. - * sem_ch13.adb (Analyze_Aspect_Specifications): Add null - implementations for aspects Refined_Depends and Refined_Global. - (Check_Aspect_At_Freeze_Point): Aspects Refined_Depends and - Refined_Global do not need to be checked at the freeze point. - * sem_prag.adb: Add entries in table Sig_Flags - for pragmas Refined_Depends and Refined_Global. - (Analyze_Contract_Cases_In_Decl_Part): Add local - variable Restore. Use Restore to pop the scope. - (Analyze_Depends_In_Decl_Part): Add local variable Restore. Use - Restore to pop the scope. - (Analyze_Global_In_Decl_List): Add local variable Restore. Use Restore - to pop the scope. - (Analyze_PPC_In_Decl_Part): Renamed to - Analyze_Pre_Post_Condition_In_Decl_Part. - (Analyze_Pragma): - Add null implementations for pragmas Refined_Depends and - Refined_Global. Refined_Pre and Refined_Post are now - handled by routine Analyze_Refined_Pre_Post_Condition - exclusively. - (Analyze_Refined_Depends_In_Decl_Part): New - null routine. - (Analyze_Refined_Global_In_Decl_Part): - New null routine. - (Analyze_Refined_Pre_Post): - Renamed to Analyze_Refined_Pre_Post_Condition. - (Analyze_Refined_Pre_Post_Condition): Analyze the boolean - expression. - (Check_Precondition_Postcondition): Update the call - to Analyze_PPC_In_Decl_Part. - * sem_prag.ads: Add entries in table - Pragma_On_Body_Or_Stub_OK for pragmas Refined_Depends - and Refined_Global. - (Analyze_PPC_In_Decl_Part): Renamed - to Analyze_Pre_Post_Condition_In_Decl_Part. Update the - comment on usage. - (Analyze_Refined_Depends_In_Decl_Part): New routine. - (Analyze_Refined_Global_In_Decl_Part): New routine. - (Analyze_Test_Case_In_Decl_Part): Update the comment on usage. - * sem_util.adb (Add_Contract_Item): Rename formal Item to Prag - and update all occurrences. Subprogram body contracts can now - contain pragmas Refined_Depends and Refined_Global. - * sem_util.ads (Add_Contract_Item): Rename formal Item to - Prag. Update the comment on usage. - * sinfo.ads: Update the comment on structure and usage of - N_Contract. - * snames.ads-tmpl: Add new predefined names for Refined_Depends - and Refined_Global. Add entries in table Pragma_Id for - Refined_Depends and Refined_Global. - -2013-10-10 Robert Dewar - - * types.ads: Minor reformatting. - -2013-10-10 Thomas Quinot - - * s-taprop-posix.adb: Add missing comment. - -2013-10-10 Robert Dewar - - * freeze.adb (Freeze_Record_Type): Move choice checking to - Analyze_Freeze_Entity (Freeze_Record_Type): Make sure all choices - are properly frozen - * sem_case.adb (Check_Choices): Remove misguided attempt to - freeze choices (this is now done in Freeze_Record_Type where - it belongs). - (Check_Choices): Remove some analyze/resolve calls - that are redundant since they are done in Analyze_Choices. - * sem_ch13.adb (Analyze_Freeze_Entity): Do the error - checking for choices in variant records here (moved here from - Freeze.Freeze_Record_Type) - -2013-10-10 Thomas Quinot - - * s-oscons-tmplt.c, s-taprop-posix.adb (CLOCK_REALTIME): Always define, - possibly using a dummy placeholder value. - (Compute_Deadline): For the case of an - Absolute_Calendar deadline, if the target uses another clock - than CLOCK_REALTIME as CLOCK_RT_Ada, compensate for possible - different epoch. - -2013-10-10 Ed Schonberg - - * sem_ch8.adb (Find_Expanded_Name): Handle properly a fully - qualified reference to a generic child unit within itself, - in an instantiation. - -2013-10-10 Pascal Obry - - * prj-conf.adb: Minor typo fixes in comment. - -2013-10-10 Thomas Quinot - - * s-taprop-posix.adb (Compute_Deadline): New local subprogram, - factors common code between Timed_Sleep and Timed_Delay. - -2013-10-10 Robert Dewar - - * freeze.adb (Freeze_Record_Type): Don't replace others if - expander inactive. This avoids clobbering the ASIS tree in - -gnatct mode. - -2013-10-10 Robert Dewar - - * sem_res.adb (Resolve_Op_Expon): Avoid crash testing for - fixed-point case in preanalysis mode (error will be caught during - full analysis). - -2013-10-10 Robert Dewar - - * gnat_rm.texi: Refined_Pre and Refined_Post are now allowed as - assertion identifiers for pragma Assertion_Policy. - * sem_prag.adb (Is_Valid_Assertion_Kind): Add Refined_Pre/Refined_Post - * sem_ch13.adb: Minor reformatting. - -2013-10-10 Pascal Obry - - * prj-conf.adb: Code refactoring. - -2013-10-10 Hristian Kirtchev - - * einfo.adb: Remove Integrity_Level from the node usage list. - (Has_Option): Update the implementation to match - the new terminology. - (Has_Property): Renamed to Has_Option. - (Integrity_Level): Removed. - (Is_External_State): New routine. - (Is_Input_Only_State): Use Has_Option to determine whether a state - is Input_Only. (Is_Input_State): Renamed to Is_Input_Only_State. - (Is_Output_Only_State): Use Has_Option to determine whether - a state is Output_Only. - (Is_Output_State): Renamed to - Is_Output_Only_State. - (Is_Volatile_State): Use Has_Option to determine whether a state is - volatile. - (Set_Integrity_Level): Removed. - (Write_Field8): Remove the entry for Integrity_Level. - * einfo.ads: Remove Integrity_Level along with its documentation - and usage in nodes. Rename Is_Input_State to Is_Input_Only_State. - Rename Is_Output_State to Is_Output_Only_State. Update the - documentation of Is_Volatile_State. Update the node structure of - E_Abstract_Entity. - (Integrity_Level): Removed along with pragma Inline. - (Is_External_State): New routine. - (Is_Input_State): Renamed to Is_Input_Only_State. - (Is_Output_State): Renamed to Is_Output_Only_State. - (Set_Integrity_Level): Removed along with pragma Inline. - * sem_prag.adb (Analyze_Pragma): Update the checks regarding - global items and abstract state modes. Update the implementation - of pragma Abstract_State to reflect the new rules and terminology. - * snames.ads-tmpl: Remove the predefined name for Integrity - level. Add new predefined names for Input_Only, Non_Volatile, - Output_Only and Part_Of. - -2013-10-10 Ed Schonberg - - * lib-xref.adb (Generate_Reference): Do not generate a reference - within a _postcondition procedure: a proper source reference has - already been generated when pre- analyzing the original aspect - specification, and the use of a formal in a pre/postcondition - should not count as a proper use in a subprogram body. - -2013-10-10 Robert Dewar - - * sem_eval.adb (Why_Non_Static): Fix bomb for deferred constant - case - -2013-10-10 Hristian Kirtchev - - * aspects.adb: Add an entry for Aspect_Refined_Post in table - Canonical_Aspect. - * aspects.ads: Add an entry for Aspect_Refined_Post in tables - Aspect_Id, Aspect_Argument, Aspect_Names, Aspect_Delay, - Aspect_On_Body_Or_Stub_OK. Update the comment on the use of - table Aspect_On_Body_Or_Stub_OK. - * par-prag.adb: Add pragma Refined_Post to the list of pragmas - that do not require special processing by the parser. - * sem_attr.adb (Analyze_Attribute): Add special analysis for - attributes 'Old and 'Result when code generation is disabled and - they appear in aspect/pragma Refined_Post. - (In_Refined_Post): New routine. - * sem_ch6.adb (Analyze_Expression_Function): Move various - aspects and/or pragmas that apply to an expression function to the - corresponding spec or body. - (Collect_Body_Postconditions): New routine. - (Process_PPCs): Use routine Collect_Body_Postconditions - to gather all postcondition pragmas. - * sem_ch10.adb (Analyze_Proper_Body): Use routine - Relocate_Pragmas_To_Body to move all source pragmas that follow - a body stub to the proper body. - (Move_Stub_Pragmas_To_Body): Removed. - * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing - for aspect Refined_Post. - (Check_Aspect_At_Freeze_Point): Aspect - Refined_Post does not need delayed processing at the freeze point. - * sem_prag.adb: Add an entry for pragma Refined_Post in - table Sig_Flags. - (Analyze_Pragma): Add processing for pragma - Refined_Post. Update the processing of pragma Refined_Pre - to use common routine Analyze_Refined_Pre_Post. - (Analyze_Refined_Pre_Post): New routine. - (Relocate_Pragmas_To_Body): New routine. - * sem_prag.ads: Table Pragma_On_Stub_OK is now known as - Pragma_On_Body_Or_Stub_OK. Update the comment on usage of - table Pragma_On_Body_Or_Stub_OK. - (Relocate_Pragmas_To_Body): New routine. - * snames.ads-tmpl: Add new predefined name for Refined_Post. Add - new Pragma_Id for Refined_Post. - -2013-10-10 Robert Dewar - - * exp_ch3.adb (Expand_N_Variant_Part): Now null, expansion of - last choice to others is moved to Freeze_Record_Type. - * freeze.adb (Freeze_Record_Type): Expand last variant to others - if necessary (moved here from Expand_N_Variant_Part - -2013-10-10 Robert Dewar - - * lib-xref-spark_specific.adb, par-ch13.adb, sem_prag.adb, sem_prag.ads, - sem_ch12.adb, sem_attr.adb, sem_ch6.adb, sem_ch13.adb, a-sequio.adb, - s-atocou-builtin.adb: Minor reformatting. - -2013-10-10 Thomas Quinot - - * s-oscons-tmplt.c (NEED_PTHREAD_CONDATTR_SETCLOCK): This - constant needs to be output to s-oscons.h, as it is tested - by init.c. - -2013-10-10 Robert Dewar - - * exp_ch3.adb (Expand_N_Variant_Part): Don't expand choices, too early - * exp_ch5.adb (Expand_N_Case_Statement): Use new Has_SP_Choice - flag to avoid expanding choices when not necessary. - * exp_util.adb: Minor reformatting - * freeze.adb (Freeze_Record_Type): Redo expansion of variants - * sem_aggr.adb: Minor reformatting - * sem_case.ads, sem_case.adb: Major rewrite, separating Analysis and - Checking of choices. - * sem_ch3.adb (Analyze_Variant_Part): Rewrite to call new - Analyze_Choices. - * sem_ch4.adb (Analyze_Case_Expression): Call Analyze_Choices - and Check_Choices - * sem_ch5.adb (Analyze_Case_Statement): Call Analyze_Choices - and Check_Choices - * sem_util.adb: Minor reformatting - * sinfo.ads, sinfo.adb (Has_SP_Choice): New flag. - -2013-10-10 Vincent Celier - - * mlib-prj.adb (Build_Library): Do not issue link dynamic - libraries with an Rpath, if switch -R was used. - -2013-10-10 Tristan Gingold - - * s-stalib.ads (Image_Index_Table_8, Image_Index_Table_16, - Image_Index_Table_32): Remove as not used. - * s-imgint.adb (Image_Integer): Call Set_Image_Integer and - remove duplicated code. - -2013-10-10 Hristian Kirtchev - - * sem_prag.adb (Analyze_Pragma): Provide a - more precise error message when pragma Refined_Pre applies to - an expression function that is not a completion. - -2013-10-10 Thomas Quinot - - * sem_attr.adb (Analyse_Attribute, case - Attribute_Scalar_Storage_Order): a 'Scalar_Storage_Order attribute - reference for a generic type is permitted in GNAT runtime mode. - * a-sequio.adb (Read, Write): Use the endianness of the actual - type to encode length information written to the file. - -2013-10-10 Ed Schonberg - - * par-ch13.adb (Aspect_Specifications_Present)): In earlier than - Ada2012 mode, assume that a legal aspect name following "with" - keyword is an older gnat switch and not a misplaced with_clause. - -2013-10-10 Hristian Kirtchev - - * aspects.adb: Add an entry for Aspect_Refined_Pre in - table Canonical_Aspect. - (Aspects_On_Body_OK): Renamed to - Aspects_On_Body_Or_Stub_OK. - (Aspects_On_Body_Or_Stub_OK): - Update the query in table Aspect_On_Body_OK. - * aspects.ads: Add an entry for Aspect_Refined_Pre in tables - Aspect_Id, Aspect_Argument, Aspect_Names, Aspect_Delay, - Aspect_On_Body_Or_Stub_OK. Table Aspect_On_Body_OK is now known as - Aspect_On_Body_Or_Stub_OK. Add a section of aspect specifications - that apply to body stubs. - (Aspects_On_Body_OK): Renamed to Aspects_On_Body_Or_Stub_OK. - (Aspects_On_Body_Or_Stub_OK): Update the comment on usage. - * par-prag.adb: Add pragma Refined_Pre to the list of pragmas - that do not require special processing by the parser. - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Delay the - analysis of aspect specifications that apply to a body stub - until the proper body is analyzed. - * sem_ch10.adb: Add with and use clause for Sem_Ch13. - (Analyze_Package_Body_Stub): Set the corresponding spec of the stub. - (Analyze_Proper_Body): Relocate all pragmas that apply - to a subprogram body stub to the declarations of the proper - body. Analyze the aspect specifications of the stub when the - proper body is not present. - (Analyze_Protected_Body_Stub): Set the corresponding spec of the stub. - (Analyze_Task_Body_Stub): Set the corresponding spec of the stub. - (Move_Stub_Pragmas_To_Body): New routine. - * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing - for aspect Refined_Pre. - (Check_Aspect_At_Freeze_Point): Aspect - Refined_Pre does not need delayed processing at the freeze point. - * sem_prag.adb: Remove with and use clause for Snames. Add - an entry for Pragma_Refined_Pre in table Sig_Flags. - (Analyze_Pragma): Add processing for pragma Refined_Pre. - * sem_prag.ads: Add with and use clause for Snames. Add table - Pragma_On_Stub_OK. - * sinfo.adb (Corresponding_Spec_Of_Stub): New routine. - (Set_Corresponding_Spec_Of_Stub): New routine. - * sinfo.ads: Add new attribute Corresponding_Spec_Of_Stub - along with comment on usage and occurrences in nodes. - (Corresponding_Spec_Of_Stub): New routine along with pragma - Inline. - (Set_Corresponding_Spec_Of_Stub): New routine along - with pragma Inline. - * snames.ads-tmpl: Add new predefined name for Refined_Pre. Add - new Pragma_Id for Refined_Pre. - -2013-10-10 Ed Schonberg - - * sem_ch12.adb (Analyze_Package_Instantiation, - Analyze_Subprogram_Instantiation): Improve error message when - name in instantiation does not designate a generic unit of the - right kind. - -2013-10-10 Robert Dewar - - * exp_ch3.adb (Expand_N_Variant_Part): Expand statically - predicated subtype which appears in Discrete_Choices list. - * exp_ch5.adb (Expand_N_Case_Statement): Expand statically - predicated subtype which appears in Discrete_Choices list of - case statement alternative. - * exp_util.ads, exp_util.adb (Expand_Static_Predicates_In_Choices): New - procedure. - * sem_case.adb: Minor reformatting (Analyze_Choices): Don't - expand out Discrete_Choices that are names of subtypes with - static predicates. This is now done in the analyzer so that the - -gnatct tree is properly formed for ASIS. - * sem_case.ads (Generic_Choices_Processing): Does not apply - to aggregates any more, so change doc accordingly, and remove - unneeded Get_Choices argument. - * sem_ch3.adb (Analyze_Variant_Part): Remove no - longer used Get_Choices argument in instantiation of - Generic_Choices_Processing. - * sem_ch4.adb (Analyze_Case_Expression): Remove no - longer used Get_Choices argument in instantiation of - Generic_Choices_Processing. - * sem_ch5.adb (Analyze_Case_Statement): Remove no - longer used Get_Choices argument in instantiation of - Generic_Choices_Processing. - * sinfo.ads: For N_Variant_Part, and N_Case_Statement_Alternative, - document that choices that are names of statically predicated - subtypes are expanded in the code generation tree passed to the - back end, but not in the ASIS tree generated for -gnatct. - -2013-10-10 Ed Schonberg - - * sem_ch7.adb: Revert previous change. - -2013-10-10 Gary Dismukes - - * sem_ch13.adb (Analyze_Attribute_Definition_Clause): In the case where - the Storage_Pool aspect is specified by an aspect clause and a - renaming is used to capture the evaluation of the pool name, - insert the renaming in front of the aspect's associated entity - declaration rather than in front of the corresponding attribute - definition (which hasn't been appended to the declaration - list yet). - -2013-10-10 Ed Schonberg - - * sem_ch6.adb (Is_Interface_Conformant): The controlling type - of the interface operation is obtained from the ultimate alias - of the interface primitive parameter, because that may be in - fact an implicit inherited operation whose signature involves - the type extension and not the desired interface. - -2013-10-10 Ed Schonberg - - * par-ch13.adb (Aspect_Specifications_Present): In Ada 2012, - recognize an aspect specification with a misspelled name if it - is followed by a a comma or semicolon. - -2013-10-10 Vadim Godunko - - * s-atocou.adb, s-atocou.ads, s-atocou-x86.adb, s-atocou-builtin.adb: - Fix copyright notice. - -2013-10-10 Yannick Moy - - * lib-xref-spark_specific.adb (Enclosing_Subprogram_Or_Package): Get - enclosing subprogram for precondition/postcondition/contract cases. - -2013-10-10 Robert Dewar - - * gnat_rm.texi: Minor fix. - -2013-10-10 Robert Dewar - - * sem_ch13.adb (Analyze_Attribute_Definition_Clause, case - Address): Remove the Comes_From_Source test for the overlap - warning. - -2013-10-10 Robert Dewar - - * sem_util.adb: Minor code reorganization (use Nkind_In). - * sem_warn.adb: Minor code reorganization (optimization in - Check_Unset_Reference). - * exp_ch9.adb, exp_ch4.adb, sinfo.ads: Minor reformatting. - -2013-10-10 Ed Schonberg - - * sem_ch7.adb (Install_Parent_Private_Declarations): When - instantiating a child unit, do not install private declaration of - a non-generic ancestor of the generic that is also an ancestor - of the current unit: its private part will be installed when - private part of ancestor itself is analyzed. - -2013-10-10 Thomas Quinot - - * freeze.adb (Check_Component_Storage_Order): Retrieve component - aliased status from type entities directly instead of going back - to original component definition. - * sem_ch7.adb: Minor reformatting. - -2013-10-10 Robert Dewar - - * sem_ch13.adb (Analyze_Aspect_Specifications): For Address - attribute, consider it to be set in source, because of aliasing - considerations. - (Analyze_Attribute_Definition_Clause): For the - purpose of warning on overlays, take into account the aspect case. - -2013-10-10 Robert Dewar - - * a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads, a-cforse.ads, - a-cofove.ads: Minor reformatting. - -2013-10-10 Arnaud Charlet - - * gnat_ugn.texi: Remove obsolete mention to -laddr2line. - -2013-10-10 Ed Schonberg - - * exp_ch4.adb (Expand_N_Case_Expression): Indicate that the - generated variable used as a target of the expression needs - no initialization. - -2013-10-10 Jose Ruiz - - * exp_util.adb (Corresponding_Runtime_Package): Remove the condition - related to No_Dynamic_Attachment which was wrong. Protected types - with interrupt handlers (when not using a restricted profile) - are always treated as protected types with entries, regardless - of the No_Dynamic_Attachment restriction. - * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Simplify the code - using the result of Corresponding_Runtime_Package. - (Install_Private_Data_Declarations): When having - static handlers and a non restricted profile, we use the - type Static_Interrupt_Protection always, so we removed an - extra wrong condition looking at the No_Dynamic_Attachment - restriction. Simplify the code using the result of - Corresponding_Runtime_Package. - (Make_Initialize_Protection): Simplify the code using - the result of Corresponding_Runtime_Package. - (Install_Private_Data_Declaration): The No_Dynamic_Attachment - restriction has nothing to do with static handlers. Remove the extra - erroneous condition that was creating the wrong data type. - -2013-10-10 Hristian Kirtchev - - * sem_util.adb (Is_Object_Reference): Attribute - 'Old produces an object reference. - * gnat_rm.texi: Define accessibility level of - X'Update(...) result. - -2013-10-10 Yannick Moy - - * gnat_rm.texi, a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads, - a-cforse.ads, a-cofove.ads: Update comment and doc of formal containers - -2013-10-10 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specifications): For Pre/Post - conditions that apply to a subprogram body, preserve the placement - and order of the generated pragmas, which must appear before - other declarations in the body. - -2013-10-10 Bob Duff - - * gnat_ugn.texi: Add gnat2xml doc. - -2013-10-10 Doug Rupp - - * s-vxwork-arm.ads: Fix interface to FP_CONTEXT. - -2013-10-10 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specification): An aspect Import - on a variable need not have a convention specified, as long as - the implicit convention of the object, obtained from its type, - is Ada or Ada-related. - -2013-10-10 Robert Dewar - - * cstand.adb (Standard_Unsigned_64): New internal type. - * gnat_rm.texi: Update documentation on To_Address. - * sem_attr.adb (Analyze_Attribute, case To_Address): Fix - problem with out of range static values given as literals or - named numbers. - * stand.ads (Standard_Unsigned_64): New internal type. - * stand.adb: Minor reformatting. - -2013-10-10 Ed Schonberg - - * sem_ch4.adb (Analyze_Selected_Component, - Has_Mode_Conformant_Spec): If selected component may be an - indexing of a parameterless call to a protected function, and - expansion is disabled, this is a valid candidate interpretation. - -2013-10-10 Arnaud Charlet - - * gnat_ugn.texi: Minor editing. - -2013-10-10 Robert Dewar - - * gnatlink.adb: Minor reformatting. - -2013-10-10 Yannick Moy - - * debug.adb: Free flag d.E and change doc for flag d.K. - -2013-10-10 Ed Schonberg - - * sem_prag.adb (Check_Precondition_Postcondition): If the - pragma comes from an aspect spec, and the subprogram is a - library unit, treat as a ppc in a declarative part in ASIS mode, - so that expression in aspect is properly analyzed. In this case - there is no later point at which the aspect specification would - be examined. - -2013-10-10 Bob Duff - - * opt.ads: Minor comment fix. - -2013-10-10 Vadim Godunko - - * a-coinho-shared.ads, a-coinho-shared.adb: New file. - * s-atocou.ads: Add procedure to initialize counter. - * s-atocou.adb: Likewise. - * s-atocou-builtin.adb: Likewise. - * s-atocou-x86.adb: Likewise. - * gcc-interface/Makefile.in: Select special version of - Indefinite_Holders package on platforms where atomic built-ins - are supported. Update tools target pairs for PikeOS. - -2013-10-10 Robert Dewar - - * sem_ch3.adb: Minor reformatting. - -2013-10-10 Robert Dewar - - * sinput-c.adb (Load_File): Ensure Source_Align alignment. - * sinput-d.adb (Create_Debug_Source): Ensure Source_Align alignment. - * sinput-l.adb (Create_Instantiation_Source): Ensure Source_Align - alignment. - (Load_File): Ditto. - * sinput.ads, sinput.adb (Get_Source_File_Index): New optimized (single - line) version. - * types.ads (Source_Align): New definition. - (Source_Buffer): Document new alignment requirement. - -2013-10-10 Robert Dewar - - * sem_prag.adb (Analyze_Pragma, case Linker_Section): Allow - this for types. - -2013-10-10 Robert Dewar - - * gnat_rm.texi: Minor adjustment to doc for To_Address attribute. - -2013-10-10 Vadim Godunko - - * s-stopoo.ads (Root_Storage_Pool): Add pragma - Preelaborable_Initialization. - -2013-09-25 Tom Tromey - - * gcc-interface/Makefile.in (OUTPUT_OPTION): Define as "-o $@". - -2013-09-18 Eric Botcazou - - PR ada/58264 - * gcc-interface/trans.c (Attribute_to_gnu): Define GNAT_PREFIX local - variable and use it throughout. - : Note whether the prefix is the dereference of a pointer - to unconstrained array and, in this case, capture the result for both - Attr_First and Attr_Last. - -2013-09-18 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : New. - -2013-09-18 Eric Botcazou - - * gcc-interface/trans.c (gigi): Remove dead code. - -2013-09-18 Eric Botcazou - - * gcc-interface/trans.c (Subprogram_Body_to_gnu): Pop the stack of - return variables for subprograms using the CICO mechanism. - -2013-09-13 Dominique Dhumieres - - * gcc-interface/Makefile.in: Fix darwin Filter to match on $target_os, - not $target_cpu. - -2013-09-11 Thomas Schwinge - Olivier Hainque - - * gcc-interface/Makefile.in: Import target_cpu, target_vendor, - target_os and their host_ counterparts. Remove host_canonical and - target_cpu_default, unused. Remove local ad-hoc computations of - "host", "targ", "arch", "osys" and "manu". Replace uses of these by - uses of the now imported family, hence back to filters against - canonical values. Remove filters on e500 for target_cpu, expected to - be canonicalized into powerpc. Invert the logic filtering on 64bit - sparc for VxWorks. Simplify the filtering logic for bareboard tools - target pairs, now using straight elf/eabi filters on the target_os - part only. - -2013-09-10 Ed Schonberg - - * sem_ch3.adb (Replace_Anonymoous_Access_To_Protected_Subprogram): If - the return type is itself an access to function, recurse to emit - another anonymous type. - * gcc-interface/Make-lang.in: Update dependencies. - -2013-09-10 Robert Dewar - - * err_vars.ads (Warning_Doc_Switch): Ignored in VMS mode. - * errout.adb (Warning_Doc_Switch): Ignored in VMS mode. - * errout.ads (Warning_Doc_Switch): Ignored in VMS mode. - * inline.ads (Warnings): New component in Pending_Body_Info. - * sem_ch12.adb (Pending_Body_Info): Save and restore warnings - at instantiation point. - * warnsw.adb (Save_Warnings): New function (Restore_Warnings): - New procedure Remove special handling of Warning_Doc_Switch, - cleaner to handle the VMS case in errout, than to introduce - undocumented oddities here. - * warnsw.ads (Warning_Record) : New type. - (Save_Warnings): New function. - (Restore_Warnings): New procedure. - -2013-09-10 Robert Dewar - - * sinput.adb (Check_For_BOM): Avoid reading past end of file. - -2013-09-10 Robert Dewar - - * errout.adb (Error_Msg_Ada_2012_Feature): New procedure. - * errout.ads (Error_Msg_Ada_2012_Feature): New procedure. - * inline.ads: Save/Restore Ada_Version_Pragma. - * opt.adb: Save/Restore Ada_Version_Pragma. - * opt.ads (Ada_Version_Pragma): New variable. - * par-ch11.adb, par-ch12.adb, par-ch13.adb, par-ch4.adb, par-ch5.adb, - par-ch6.adb, par-ch8.adb, par-prag.adb: Use Error_Msg_Ada_2012_Feature. - * prj.adb: Initialize Ada_Version_Pragma. - * sem_attr.adb: Use Error_Msg_Ada_2012_Feature. - * sem_ch12.adb, sem_ch8.adb: Save/restore Ada_Version_Pragma. - * sem_prag.adb (Analyze_Pragma, cases Ada_xx): Set Ada_Version_Pragma. - * switch-c.adb: Initialize Ada_Version_Pragma. - * sem_ch12.adb: Minor reformatting. - -2013-09-10 Ed Schonberg - - * sem_ch3.adb (Process_Subtype): Discard constraint on access - to class-wide type. Such constraints are not supported and are - considered a language pathology. - -2013-09-10 Robert Dewar - - * gnatbind.adb: Correct starting date in --version string. - * gnatdll.adb: Use Check_Version_And_Help_G to implement --help - and --version. - * gnatkr.adb: Use Check_Version_And_Help_G to implement --help - and --version. - * gnatlink.adb: Correct starting date in --version string. - * gnatls.adb: Correct starting date in --version string. - * make.adb: Correct starting date in --version string. - -2013-09-10 Robert Dewar - - * switch-c.adb: Minor reformatting. - * atree.ads (Original_Nodes): Add documentation on ASIS usage. - * sinfo.ads: Add section on ASIS mode (documentation only). - -2013-09-10 Robert Dewar - - * sem_prag.adb (Analyze_Pragma, case Warnings): Don't allow - REASON parameter in compiler units (bootstrap issues). - -2013-09-10 Robert Dewar - - * gnat1drv.adb (Adjust_Global_Switches): Output warning if - -gnateE specified for a target that does not support it. - -2013-09-10 Ed Schonberg - - * sem_prag.adb (Analyze_Pragma, case SPARK_Mode): Handle properly - a subprogram body without previous spec. - -2013-09-10 Gary Dismukes - - * sem_ch4.adb: Minor typo fixes. - -2013-09-10 Hristian Kirtchev - - * aspects.adb (Aspects_On_Body_OK): New routine. - * aspects.ads: Modify type Aspect_Expression to include - the Optional_XXX variants. Update the contents of - table Aspect_Argument. Add table Aspect_On_Body_OK. - (Aspects_On_Body_OK): New routine. - * par-ch13.adb (Get_Aspect_Specifications): Account for optional - names and expressions when parsing an aspect. - * sem_ch6.adb: Add with and use clause for Aspects. - (Analyze_Subprogram_Body_Helper): Do not emit an error when - analyzing a body with aspects that can be applied simultaneously - to both spec and body. - * sem_ch13.adb (Analyze_Aspect_Specifications): Insert the - corresponding pragma of an aspect that applies to a subprogram - body in the declarative part. - (Make_Aitem_Pragma): Do not generate a pragma with an empty argument - list. - -2013-09-10 Robert Dewar - - * switch-c.adb: Diagnose -gnatc given after -gnatRm. - * gnat_ugn.texi: Add documentation for -gnatRm. - * usage.adb: Minor reorganization (put style entries in proper - order) Document -gnatRm switch. - * sinfo.ads: Minor comment fix. - -2013-09-10 Sergey Rybin - - * tree_io.ads: Update ASIS_Version_Number. - -2013-09-10 Ed Schonberg - - * sem_ch3.adb (Access_Subprogram_Declaration): Check whether the - designated type can appear in a parameterless call. - * sem_ch4.adb (Analyze_Call): Do not insert an explicit dereference - in the case of an indirect call through an access function that - returns an array type. - (Analyze_One_Call): Handle properly legal parameterless calls - whose result is indexed, in constructs of the for F.all (I) - * sem_ch6.ads (May_Need_Actuals): Make public, for use on access - to subprogram types. - * sem_res.adb (Resolve_Call): If the call is indirect, there is - no entity to set on the name in the call. - -2013-09-10 Hristian Kirtchev - - * aspects.adb: Add entries in the Has_Aspect_Specifications_Flag - table for package body and body stubs. - (Move_Or_Merge_Aspects): New routine. - (Remove_Aspects): New routine. - * aspects.ads (Move_Aspects): Update comment on usage. - (Move_Or_Merge_Aspects): New routine. - (Remove_Aspects): New routine. - * par-ch3.adb: Update the grammar of private_type_declaration, - private_extension_declaration, object_renaming_declaration, - and exception_renaming_declaration. - (P_Subprogram): Parse the - aspect specifications that apply to a body stub. - * par-ch6.adb: Update the grammar of subprogram_body_stub and - generic_instantiation. - * par-ch7.adb: Update the grammar of package_declaration, - package_specification, package_body, package_renaming_declaration, - package_body_stub. - (P_Package): Parse the aspect specifications - that apply to a body, a body stub and package renaming. - * par-ch9.adb: Update the grammar of entry_declaration, - protected_body, protected_body_stub, task_body, - and task_body_stub. - (P_Protected): Add local variable - Aspect_Sloc. Add local constant Dummy_Node. Parse the aspect - specifications that apply to a protected body and a protected - body stub. - (P_Task): Add local variable Aspect_Sloc. Add local - constant Dummy_Node. Parse the aspect specifications that apply - to a task body and a task body stub. - * par-ch12.adb: Update the grammar of - generic_renaming_declaration. - (P_Generic): Parse the aspect - specifications that apply to a generic renaming. - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not emit - an error when analyzing aspects that apply to a body stub. Such - aspects are relocated to the proper body. - * sem_ch7.adb (Analyze_Package_Body_Helper): Analyze the aspect - specifications that apply to a body. - * sem_ch9.adb (Analyze_Protected_Body): Warn about user-defined - aspects not being supported on protected bodies. Remove the - aspect specifications. (Analyze_Single_Protected_Declaration): - Analyze the aspects that apply to a single protected declaration. - (Analyze_Task_Body): Warn about user-defined aspects not being - supported on task bodies. Remove the aspect specifications. - * sem_ch10.adb: Add with and use clause for Aspects. - (Analyze_Package_Body_Stub): Propagate the aspect specifications - from the stub to the proper body. - * sem_ch13.adb (Analyze_Aspect_Specifications): Insert the - corresponding pragma of an aspect that applies to a body in the - declarations of the body. - * sinfo.ads: Update the gramma of expression_function, - private_type_declaration, private_extension_declaration, - object_renaming_declaration, exception_renaming_declaration, - package_renaming_declaration, subprogram_renaming_declaration, - generic_renaming_declaration, entry_declaration, - subprogram_body_stub, package_body_stub, task_body_stub, - generic_subprogram_declaration. - -2013-09-10 Hristian Kirtchev - - * sem_prag.adb (Analyze_Pragma): Add processing - for aspect/pragma SPARK_Mode when it applies to a [library-level] - subprogram or package [body]. - -2013-09-10 Robert Dewar - - * gnat_ugn.texi: Document that -gnatc and -gnatR cannot be - given together. - * switch-c.adb (Scan_Front_End_Switches): Give error if both - -gnatR and -gnatc given. - -2013-09-10 Robert Dewar - - * g-table.ads, g-table.adb (For_Each): New generic procedure - (Sort_Table): New generic procedure. - -2013-09-10 Thomas Quinot - - * adaint.c (__gnat_is_executable_file_attr): Should be true - for an executable regular file only only (not for a directory - that has the executable permission). - -2013-09-10 Ed Schonberg - - * sem_res.adb: Further work on operator calls in ASIS. - -2013-09-10 Yannick Moy - - * sinfo.ads, sem_prag.ads, sem_ch13.adb: Minor correction and comment - update. - -2013-09-10 Thomas Quinot - - * aspects.ads, sem_ch13.adb: Minor reformatting. - * adaint.c (__gnat_set_close_on_exec): Add comment documenting - that this routine is shared between OS_Lib and Sockets. - -2013-09-10 Robert Dewar - - * exp_prag.adb (Expand_Pragma_Check): Ignore pragma if Is_Ignored set. - * sem_ch13.adb (Make_Aitem_Pragma): Set Is_Checked if needed. - * sem_prag.adb (Check_Kind): Moved from spec (Analyze_Pragma): - Make sure Is_Ignored/Is_Checked are set right (Analyze_Pragma, - case Check): Ditto (Check_Applicable_Policy): Handle - Statement_Assertion case Throughout, set and check the Is_Checked - flag as appropriate. - * sem_prag.ads (Check_Kind): Moved to body. - * sinfo.ads, sinfo.adb (Is_Checked): New flag. - -2013-09-10 Robert Dewar - - * aspects.ads (Delay_Type): New type (Aspect_Delay): New table. - * einfo.adb (Has_Delayed_Rep_Aspects): New flag - (May_Inherit_Delayed_Rep_Aspects): New flag (Rep_Clause): Removed - (use Get_Attribute_Representation_Clause). - * einfo.ads (Has_Delayed_Rep_Aspects): New flag - (May_Inherit_Delayed_Rep_Aspects): New flag - * freeze.adb: Minor reformatting - * sem_ch13.adb (Analyze_Aspect_Speficifications): Redo - handling of delayed evaluation, including optimizing some cases - and avoiding delays. - (Analyze_Aspects_At_Freeze_Point): Now - handled inheriting delayed rep aspects for type derivation case. - (Inherit_Delayed_Rep_Aspects): New procedure - * sem_ch13.ads (Analyze_Aspects_At_Freeze_Point): Now handled - inheriting delayed rep aspects for type derivation case. - * sem_ch3.adb (Build_Derived_Type): Set - May_Inherit_Derived_Rep_Aspects if parent type flag - Has_Delayed_Rep_Aspects is set - -2013-09-10 Robert Dewar - - * errout.adb (Finalize): Don't delete real errors with specific - warning control. - -2013-09-10 Ed Schonberg - - * exp_ch9.adb (Expand_N_Timed_Entry_Call, - Expand_N_Conditional_Entry_Call, Expand_N_Asynchronous_Select): - Handle properly a trigger that is a call to a primitive operation - of a type that implements a limited interface, if the type itself - is not limited. - -2013-09-10 Robert Dewar - - * sem_ch3.adb, sinfo.ads, exp_ch9.adb, sem_prag.adb, sem_ch12.adb, - exp_ch4.adb, sprint.adb: Minor reformatting. - -2013-09-10 Yannick Moy - - * sinfo.ads: Document splitting of pre/post in N_Contract description. - -2013-09-10 Ed Schonberg - - * exp_ch4.adb (Expand_N_Op_Multiply): If the operation is of the - form X * 2 ** N and it has been marked Is_Power_Of_2_For_Shift, - add a mod operation if the result type is a binary modular type. - -2013-09-10 Hristian Kirtchev - - * sem_prag.adb (Check_Mode_Restriction_In_Enclosing_Context): Add local - variable Context. Remove local variable Subp_Id. Start the - context traversal from the current subprogram rather than the - current scope. Update the scope traversal and error reporting. - -2013-09-10 Ed Schonberg - - * exp_ch9.adb (Expand_N_Timed_Entry_Call): New procedure - Rewrite_Triggering_Statements, to encapsulate the statements that - follow the trigger of the entry call. This procedure is needed - when the trigger is a dispatching call, because the expansion - requires several copies of those statements. The procedure is - more efficient, and preserves non-local references when the - construct is within an instance. - -2013-09-10 Ed Schonberg - - * sem_ch12.adb (Analyze_Package_Instantiation): If the - instantiation is a compilation unit, analyze aspects before - analyzing the package declaration for the instance. - * sem_ch13.adb (Analyze_Aspect_Specifications): If the - corresponding node is a package instantiation, insert generated - pragmas at the head of visible declarations. - * sem_prag.adb (Analyze_Pragma, case Preelaborate): In an instance - do not ignore the pragma if it comes from an aspect specification - in the instance, and not from the generic unit. - * sprint.adb (Sprint_Node_Actual): For a package declaration that - is an instantiation, print aspects after declaration. - -2013-09-10 Robert Dewar - - * einfo.adb, sem_prag.adb, rtsfind.ads: Minor reformatting. - -2013-09-10 Hristian Kirtchev - - * sem_prag.adb (Get_SPARK_Mode_Id): Handle the - case where the pragma may appear without an argument. - (Analyze_Global_List): Add expanded_name to the list of constructs - that denote a single item. - (Collect_Global_List): Add expanded_name to the list of constructs - that denote a single item. - -2013-09-10 Hristian Kirtchev - - * exp_ch4.adb (Apply_Accessibility_Check): Add local constant - Pool_Id and local variables Fin_Call and Free_Stmt. Finalize - and deallocate a heap-allocated class-wide object after it - has been determined that it violates the accessibility rules. - * rtsfind.ads: Add new RTU_Id for System.Memory. Add new RE_Id - and entry in RE_Unit_Table for RE_Free. - -2013-09-01 Eric Botcazou - Iain Sandoe - - PR ada/58239 - * gcc-interface/Makefile.in (GCC_LINK_FLAGS): Add -static-libstdc++. - (GCC_LINK): Use CXX instead of CC. - * gcc-interface/Make-lang.in (CXX_LFLAGS): New. - (ADA_TOOLS_FLAGS_TO_PASS): Pass CXX, and CXX_LFLAGS for native. - -2013-08-13 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity): Do not bother about alias - sets of derived types in ASIS mode. - -2013-08-13 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity): Replace True with true. - (is_cplusplus_method): Likewise, and False with false. - (components_need_strict_alignment): Likewise. - * gcc-interface/misc.c (gnat_init_gcc_fp): Likewise. - * gcc-interface/trans.c (Loop_Statement_to_gnu): Likewise. - (Handled_Sequence_Of_Statements_to_gnu): Likewise. - (add_cleanup): Likewise. - (Sloc_to_locus1): Likewise. - (Sloc_to_locus): Likewise. - (set_expr_location_from_node): Likewise. - * gcc-interface/utils.c (potential_alignment_gap): Likewise. - -2013-08-13 Thomas Quinot - - * gcc-interface/trans.c (set_end_locus_from_node): Clear column info - for the end_locus of a block if it does not come from an End_Label. - -2013-08-13 Thomas Quinot - - * gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): If - there is no End_Label, attach cleanup actions to the sloc of the HSS - node instead. - (Exception_Handler_to_gnu_zcx): Associate cleanup actions with the sloc - of the handler itself. - (add_cleanup): Clear column information in sloc of cleanup actions. - (Sloc_to_locus1): New static function. - (Sloc_to_locus): Call it. - (set_expr_location_from_node1): New static function. - (set_expr_location_from_node): Call it. - -2013-08-13 Eric Botcazou - - * gcc-interface/trans.c (Call_to_gnu): Deal with specific conditional - expressions for misaligned actual parameters. - -2013-08-13 Eric Botcazou - - * gcc-interface/trans.c (can_equal_min_or_max_val_p): Be prepared for - values outside of the range of the type. - -2013-08-13 Eric Botcazou - - * gcc-interface/utils2.c (build_atomic_load): Do a mere view-conversion - to the original type before converting to the result type. - (build_atomic_store): First do a conversion to the original type before - view-converting to the effective type, but deal with a padded type - specially. - -2013-08-08 Eric Botcazou - - * gcc-interface/Makefile.in (TOOLS_LIBS): Pick C object files from the - compiler build and use standard library variables. - (../../vxaddr2line$(exeext): Do not depend on targext.o and adjust. - (gnatmake-re): Do not depend on targext.o. - (gnatlink-re): Do not depend on link.o and targext.o. - (../../gnatmake$(exeext): Likewise. - (../../gnatlink$(exeext): Likewise. - -2013-07-21 Ondřej Bílka - - * gcc-interface/gigi.h: Fix typos. - * gcc-interface/trans.c: Likewise. - * gcc-interface/utils2.c: Likewise. - * gnat_rm.texi: Likewise. - * gnat_ugn.texi: Likewise. - * raise-gcc.c: Likewise. - * sigtramp-ppcvxw.c: Likewise. - * sysdep.c: Likewise. - * terminals.c: Likewise. - -2013-07-20 Eric Botcazou - - PR ada/57934 - * gcc-interface/ada.h (CAT): Fix typo. - -2013-07-08 Hristian Kirtchev - - * einfo.adb (Get_Pragma): Handle the retrieval of delayed - pragmas stored in N_Contract nodes. - * einfo.ads (Get_Pragma): Update the comment on usage. - * sem_prag.adb (Check_Precondition_Postcondition): Retain a copy - of the pragma when it applies to a body that acts as a spec. The - copy is preanalyzed and chained on the contract of the body. - -2013-07-08 Robert Dewar - - * rtsfind.adb: Minor comment fix. - -2013-07-08 Hristian Kirtchev - - * sem_ch4.adb (Check_Ghost_Subprogram_Call): Do not check the placement - of a Ghost function call when the enclosing context is being - preanalyzed. - -2013-07-08 Ed Schonberg - - * exp_ch6.adb (Expand_Inlined_Call, Process_Formals): If the - expression in a return statement is a numeric literal, qualify - it with the return type for proper resolution. - -2013-07-08 Robert Dewar - - * sem.ads: Minor comment updates. - * s-restri.ads, exp_ch6.adb, lib-load.ads, exp_ch3.adb, sem_ch10.adb: - Minor reformatting. - -2013-07-08 Robert Dewar - - * exp_attr.adb (Expand_N_Attribute_Reference): Add dummy entry - for Restriction_Set. - * gnat_rm.texi: Add missing menu entry for Attribute Ref Add - documentation for attribute Restriction_Set. - * lib-writ.adb (Write_With_Lines): Generate special W lines - for Restriction_Set. - * lib-writ.ads: Document special use of W lines for - Restriction_Set. - * lib.ads (Restriction_Set_Dependences): New table. - * par-ch4.adb (Is_Parameterless_Attribute): Add Loop_Entry to - list (Scan_Name_Extension_Apostrophe): Remove kludge test for - Loop_Entry (Scan_Name_Extension_Apostrophe): Handle No_Dependence - for Restricton_Set. - * restrict.adb (Check_SPARK_Restriction): Put in Alfa order - (OK_No_Dependence_Unit_Name): New function. - * restrict.ads (OK_No_Dependence_Unit_Name): New function. - * rtsfind.adb: Minor reformatting Minor code reorganization. - * sem_attr.adb (Analyze_Attribute): Add processing for - Restriction_Set. - * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): - Remove Check_Unit_Name and use new function - OK_No_Dependence_Unit_Name instead. - * sinfo.ads: Minor comment updates. - * snames.ads-tmpl: Add entry for Restriction_Set attribute. - -2013-07-08 Hristian Kirtchev - - * exp_ch4.adb (Apply_Accessibility_Check): Remove local constant - Pool_Id and local variable Free_Stmt. Do not deallocate the faulty - object as "free" is not available on all targets/profiles. - -2013-07-08 Robert Dewar - - * sem_ch13.adb (Analyze_Aspect_Specifications): Handle - Storage_Size aspect for task type in case discriminant is - referenced. - (Analyze_Attribute_Definition_Clause): Do not flag Storage_Size - attribute definition clause as obsolescent if from aspect. - -2013-07-08 Robert Dewar - - * gnat_rm.texi: Add documentation for Img returning a function. - * par-prag.adb: Minor reformatting. - * restrict.adb: Minor reformatting and code reorganization. - -2013-07-08 Ed Schonberg - - * sem_res.adb: add guard to ASIS transform. - -2013-07-08 Ed Schonberg - - * exp_ch9.adb (Expand_N_Asynchronous_Select): If the trigger - of the asynchronous select is a dispatching call, transform the - abortable part into a procedure, to avoid duplication of local - loop variables that may appear within. - -2013-07-08 Vincent Celier - - * projects.texi: Update the documentation of suffixes in package - Naming. - -2013-07-08 Ed Schonberg - - * sem_ch6.adb (Conforming_Types): Anonymous_access_to_subprograsm - types are type conformant if the designated type of one is - protected and the other is not. Convention only matters when - checking subtype conformance. - -2013-07-08 Ed Schonberg - - * sem_res.adb (Make_Call_Into_Operator): In ASIS mode, propagate - back the fully resolved operands to the original function call - so that all semantic information remains available to ASIS. - -2013-07-08 Ed Schonberg - - * sem_ch4.adb: minor reformatting (remove obsolete comment). - * sem_ch9.adb: improve error message on illegal trigger. - -2013-07-08 Robert Dewar - - * sem_prag.adb: Minor reformatting. - -2013-07-08 Robert Dewar - - * gnatcmd.adb: Minor reformatting. - -2013-07-08 Robert Dewar - - * targparm.adb (Get_Target_Parameters): Recognize pragma - Partition_Elaboration_Policy. - -2013-07-08 Robert Dewar - - * gnat_ugn.texi: Minor update to mention partition elaboration policy. - -2013-07-08 Ed Schonberg - - * sem_ch4.adb (Comple_Object_Operation): Revert previous change. - (Analyze_Indexed_Component_Form): In ASIS mode, if node has been - transformed but not rewritten as a function call (as is the case - in a generic), analyze it as such. - -2013-07-08 Thomas Quinot - - * gnat_rm.texi: Minor rewording: add missing word "operators" - in documentation for restriction No_Direct_Boolean_Operator. - -2013-07-08 Robert Dewar - - * errout.adb (Set_Msg_Txt): No longer sets Is_Style_Msg, - Is_Warning_Msg, or Is_Unconditional_Msg (all are set elsewhere - now). - * errout.ads: Insertions ! and !! no longer have to be at the - end of the message, they can be anywhere in the message. - * erroutc.adb (Test_Style_Warning_Serious_Unconditional_Msg): - Replaces Test_Style_Warning_Serious_Msg - * erroutc.ads (Has_Double_Exclam): New flag New comments for - existing flags (Test_Style_Warning_Serious_Unconditional_Msg): - Replaces Test_Style_Warning_Serious_Msg - * errutil.adb (Test_Style_Warning_Serious_Unconditional_Msg): - Replaces Test_Style_Warning_Serious_Msg - -2013-07-08 Robert Dewar - - * par-prag.adb (Process_Restrictions_Or_Restriction_Warnings): - Recognize SPARK_05 as synonym for SPARK in restrictions pragma. - * restrict.ads, restrict.adb (SPARK_Hides): Table moved to body, only - referenced there. - * scng.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_ch8.adb, - sem_res.adb, sem_util.adb: Use restriction SPARK_05 instead of SPARK. - * snames.ads-tmpl (Name_No_Obsolescent_Features): New entry. - -2013-07-08 Vincent Celier - - * gnatcmd.adb (Check_Files): Use a response file for gnatls - when possible. - -2013-07-08 Gary Dismukes - - * freeze.adb: Minor typo fixes. - -2013-07-08 Robert Dewar - - * gnat_rm.texi: Document SPARK_05 (replaces SPARK) Document - obsolete recognition of SPARK Document all other obsolete synonyms - for old restrictions. - * restrict.adb (Check_SPARK_Restriction): SPARK_05 replaces - SPARK (Process_Restriction_Synonyms): Handle SPARK as synonym - for SPARK_05. - * restrict.ads: Restriction SPARK_05 replaces SPARK. - * s-rident.ads: Replace restriction SPARK by SPARK_05 Add SPARK - as synonym for SPARK_05. - * sem_prag.adb: Minor reformatting. - * snames.ads-tmpl: Add entries for Name_SPARK and Name_SPARK_05. - -2013-07-08 Robert Dewar - - * sem_dim.adb: Minor error message change. - * freeze.adb (Freeze_Entity, array type case): Extend handling - of Implicit_Packing to handle multi-dimensional array case. - * gnat_rm.texi: Update doc on Implicit_Packing. - -2013-07-08 Robert Dewar - - * exp_ch4.adb: Minor reformatting. - -2013-07-08 Ed Schonberg - - * sem_ch4.adb (Complete_Object_Operation): In ASIS mode, if - the parent node is a selected component and the analysis as a - call is successful, set the type of the selector in the parent - node for subsequent checks, because the rewriting of the node - does not take place during pre-analysis. - -2013-07-08 Robert Dewar - - * sem_ch8.adb, exp_ch3.adb: Minor reformatting. - -2013-07-08 Hristian Kirtchev - - * exp_ch4.adb (Expand_N_Op_Eq): When comparing two - Bounded_Strings, use the predefined equality function of the - root Super_String type. - -2013-07-08 Hristian Kirtchev - - * exp_ch4.adb (Create_Alternative): Removed. - (Expand_N_If_Expression): Remove constant - In_Case_Or_If_Expression. Add local variable - Ptr_Typ. Inspect the "then" and "else" action lists - for transient controlled objects and generate code to - finalize them. (Is_Controlled_Function_Call): Removed. - (Process_Action): Update the comment on usage. Update the call - to Process_Transient_Object. There is no need to continue the - traversal of the object itself. - (Process_Actions): New routine. - (Process_Transient_Object): Moved to the top level of Exp_Ch4. Add - a new formal and update the related comment on usage. - * exp_util.adb (Within_Case_Or_If_Expression): Start the search - from the parent of the node. - -2013-07-08 Robert Dewar - - * a-cusyqu.ads, a-cbprqu.ads, s-interr.ads, a-cuprqu.ads, - a-cbsyqu.ads: Minor reformatting (proper formatting of overriding). - -2013-07-08 Ed Schonberg - - * sem_ch8.adb (Attribute_Renaming): Treat 'Img as an attribute - that can be renamed as a function. - -2013-07-08 Thomas Quinot - - * g-socket.ads: Document target dependency: FIONBIO may or may not - be inherited from listening socket by accepted socket. - -2013-07-08 Hristian Kirtchev - - * exp_ch4.adb (Apply_Accessibility_Check): Do not deallocate the object - on targets that can't deallocate. - -2013-07-08 Hristian Kirtchev - - * exp_ch3.adb (Freeze_Type): Generate a - subpools-related accessibility check only on profiles that - include the corresponding library unit. - -2013-07-08 Gary Dismukes - - * sem_ch8.adb: Minor typo fixes. - -2013-07-08 Javier Miranda - - * sem_ch8.adb (Save_Scope_Stack): Adding documentation. - (Restore_Scope_Stack): Remove the elements of the list when the - visibility of each entity is restored. - -2013-07-08 Robert Dewar - - * exp_ch9.adb, sem.ads, sem_util.adb: Minor reformatting. - -2013-07-08 Robert Dewar - - * sem_ch8.adb, sem_ch8.ads: Minor reformatting. - -2013-07-08 Gary Dismukes - - * gnat_rm.texi: Minor reformatting and rewording for consistency. - -2013-07-08 Bob Duff - - * exp_ch3.adb (Build_Master): If Desig_Type is an incomplete - view coming from a limited-with'ed package, use the nonlimited - view in case it has tasks. - -2013-07-08 Javier Miranda - - * sem_ch8.ad[sb] (Save_Scope_Stack): Modified to return the list - of entities which have been temporarily removed from immediate - visibility. - (Restore_Scope_Stack): Modified to receive an - additional parameter with the list of entities whose immediate - visibility must be restored. - * sem.adb (Do_Analyze): Use new version of - Save_Scope_Stack/Restore_Scope_Stack - * sem_ch12.adb (Inline_Instance_Body): Use new version of - Save_Scope_Stack and Restore_Scope_Stack - -2013-07-08 Hristian Kirtchev - - * sem_prag.adb (Analyze_Pragma): Remove - variable Unit_Prag. Remove the check on duplicate mode for the - configuration form of the pragma. - (Redefinition_Error): Removed. - -2013-07-08 Robert Dewar - - * lib.ads, gnat_rm.texi, einfo.ads, sem_ch13.adb: Minor reformatting - and editing. - -2013-07-08 Ed Schonberg - - * sem_prag.adb (Analyze_PPC_In_Decl_Part): In ASIS mode, - pre-analyze only the original expression attached to the source - aspect, not the relocated expression of the pragma, to prevent - malformed trees in ASIS mode. - * sem_ch13.adb (Analyze_Aspect_Specifications): Revert previous - patch: the expression in the aspect for pre/post must be relocated - to the pragma for proper analysis. - -2013-07-05 Hristian Kirtchev - - * aspects.adb: Add an entry for SPARK_Mode in table Canonical_Aspect. - * aspects.ads: Add an entry for SPARK_Mode in tables Aspect_Id, - Aspect_Argument, Aspect_Names. - * atree.adb (Node32): New routine. - (Set_Node32): New routine. - * atree.ads (Node32): New routine. - (Set_Node32): New routine. - * einfo.adb: Node32 is now used as SPARK_Mode_Pragmas. - (Set_SPARK_Mode_Pragmas): New routine. - (SPARK_Mode_Pragmas): New routine. - (Write_Field32_Name): Add and entry for SPARK_Modes. - * einfo.ads: Add attribute SPARK_Mode_Pragmas along with usage - in various entities. - (Set_SPARK_Mode_Pragmas): New routine and - pragma Inline. - (SPARK_Mode_Pragmas): New routine and pragma Inline. - * gnat_rm.texi: Add sections explaining the syntax and semantics - of aspect/pragma SPARK_Mode. - * gnat_ugn.texi: Add pragma SPARK_Mode to the list of - configuration pragmas. - * lib.adb (Set_SPARK_Mode_Pragma): New routine. - (SPARK_Mode_Pragma): New routine. - * lib.ads: Alphabetize the comments on fields of record - Unit_Record. Add new field SPARK_Mode_Pragma along with - comment on its usage. Update the layout of record Unit_Record. - (Set_SPARK_Mode_Pragma): New routine and pragma Inline. - (SPARK_Mode_Pragma): New routine and pragma Inline. - * lib-load.adb (Create_Dummy_Package_Unit): Initialize - field SPARK_Mode_Pragma. - (Load_Main_Source): Initialize field SPARK_Mode_Pragma. - (Load_Unit): Initialize field SPARK_Mode_Pragma. - * lib-writ.adb (Add_Preprocessing_Dependency): Initialize field - SPARK_Mode_Pragma. - (Ensure_System_Dependency): Initialize field SPARK_Mode_Pragma. - * opt.ads: Alphabetize verification flags. Store the - compilation-wide SPARK mode in variable Global_SPARK_Mode. - * par-prag.adb: Pragma SPARK_Mode does not need special processing - by the parser. - * sem_ch13.adb (Analyze_Aspect_Specifications): Convert aspect - SPARK_Mode into a pragma. - (Check_Aspect_At_Freeze_Point): Aspect SPARK_Mode does not need - delayed processing. - * sem_prag.adb: Add an entry for SPARK_Mode in table Sig_Flags. - (Analyze_Pragma): Add processing for pragma SPARK_Mode. - (Get_SPARK_Mode_Id): New routine. - (Is_Elaboration_SPARK_Mode): New routine. - (Is_Private_SPARK_Mode): New routine. - * sem_prag.ads (Get_SPARK_Mode_Id): New routine. - (Is_Elaboration_SPARK_Mode): New routine. - (Is_Private_SPARK_Mode): New routine. - * sinfo.ads: Update the comment on the usage of field Next_Pragma. - * snames.ads-tmpl: Add new predefined name for SPARK_Mode and - Auto. Add new pragma Id for SPARK_Mode. - * types.ads: Add new type SPARK_Mode_Id. - -2013-07-05 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specifications): For - pre/postconditions copy the expression to the generated pragma, - to avoid sharing between the original aspect and the pragma node, - because in ASIS_Mode both will be independently analyzed. - -2013-07-05 Ed Schonberg - - * exp_ch3.adb (Build_Variant_Record_Equality): Add pairs of - formals for each discriminant of an unchecked union. - (Make_Eq_Case): Suprogram accepts a list of discriminants. Nested - variants are supported. New helper function Corresponding_Formal. - * exp_ch4.adb (Build_Equality_Call): For unchecked unions, - loop through discriminants to create list of inferred values, - and modify call to equality routine accordingly. - -2013-07-05 Claire Dross - - * a-cfdlli.ads, a-cfhama.ads, a-cfhase.ads, a-cforma.ads, - a-cforse.ads, a-cofove.ads: Add preconditions when needed + - container types are not tagged any more. - -2013-07-05 Thomas Quinot - - * freeze.adb (Freeze_Entity): For an object with captured - initialization statements, do not remove Init_Stmts from the - enclosing list, as Freeze_All might rely on it to know where to - stop freezing. - -2013-07-05 Robert Dewar - - * exp_ch4.adb, a-cfdlli.ads, a-ngelfu.ads, s-bignum.adb: Minor - reformatting. - -2013-07-05 Hristian Kirtchev - - * exp_ch4.adb (Expand_Composite_Equality): Use the full view - when the base type is private. - -2013-07-05 Claire Dross - - * a-cfdlli.ads: Add preconditions when needed. - -2013-07-05 Robert Dewar - - * sem_ch8.adb: Minor reformatting. - -2013-07-05 Ed Schonberg - - * sem_ch3.adb (Access_Subprogram_Declaration): Use - Generate_Reference_To_Formals. - * lib-xref.adb (Generate_Reference_To_Formals): In the case of - access to subprograms, the formals are found in the designated - subprogram type. - -2013-07-05 Robert Dewar - - * gnat_ugn.texi: Document that comments can be lined up with - previous non-blank line. - * styleg.adb (Check_Comment): Allow indentation to match previous - non-blank line (Same_Column_As_Previous_Line): New function - -2013-07-05 Robert Dewar - - * gnat_rm.texi: Update doc on missing pragmas. - * sem_ch12.adb: Minor comment additions. - -2013-07-05 Hristian Kirtchev - - * sem_prag.adb (Analyze_Pragma): Ensure that - Contract_Cases, Depends and Global are analyzed when they apply - to a subprogram compilation unit. The pragmas are all added - unconditionally to the construct's contract. This ensures that - proof tools can locate the pragmas. - -2013-07-05 Ed Schonberg - - * sem_ch8.adb (Freeze_Actual_Profile): An instance within - a generic unit does not freeze a generic private type of the - enclosing generic. This rule must also apply to a type derived - from a generic private type. - -2013-07-05 Arnaud Charlet - - * gnat_rm.texi: Add missing documentation for pragmas. - -2013-07-05 Yannick Moy - - * sem_ch12.adb: Minor comment. - -2013-07-05 Robert Dewar - - * gnat_rm.texi: Document that -gnatR and -gnatD cannot be used - together. - * switch-c.adb: Do not allow -gnatD and -gnatR to both be - specified. - -2013-07-05 Robert Dewar - - * gnat_rm.texi: Add missing documentation for pragmas. - * sem_ch8.adb: Minor reformatting. - * gnat_ugn.texi: Document that -gnatR and -gnatD cannot be used - together. - -2013-07-05 Yannick Moy - - * sem_ch12.ads, sem_ch12.adb (Need_Subprogram_Instance_Body): Force - instance of subprogram body in SPARK mode, by testing Expander_Active - (set in SPARK mode) instead of Full_Expander_Active (not set in - SPARK mode). - * sem_ch8.adb: Minor reformatting. - -2013-07-05 Robert Dewar - - * freeze.adb (Freeze_Entity): Remove test of obsolete flag - Propagate_Exceptions, and associated useless code that did - nothing. - * gnat_rm.texi: Add documentation for obsolete pragma - Propagate_Exceptions. - * opt.ads (Propagate_Exceptions): Obsolete flag removed. - * sem_prag.adb (Analyze_Pragma, case Propagate_Exceptions): - Remove useless and obsolete setting of Propagate_Exceptions flag. - -2013-07-05 Robert Dewar - - * gnat_rm.texi, sem_prag.adb: Minor comment/text fixes. - -2013-07-05 Robert Dewar - - * gnat_rm.texi: Add missing doc for various pragmas. - -2013-07-05 Robert Dewar - - * par_sco.adb, sem_ch12.adb, par-ch5.adb: Minor reformatting. - * gnat_rm.texi: Document pragma Profile_Warnings. - * restrict.ads, sem_prag.adb: Minor reformatting. - -2013-07-05 Ed Schonberg - - * sem_ch12.adb (Check_Formal_Package_Instance): Handle properly - a formal subprogram that was defaulted in the formal package. - -2013-07-05 Thomas Quinot - - * par_sco.adb (Traverse_Declarations_Or_Statements): Ignore - N_Implicit_Label_Declaration nodes. - -2013-07-05 Robert Dewar - - * a-cfhase.adb, sem_prag.adb, a-cfhama.adb: Minor reformatting. - -2013-07-05 Ed Schonberg - - * sem_ch12.adb (Copy_Generic_Node): Check that name in function - call is a valid entity name before preserving entity in generic - copy. - -2013-07-05 Thomas Quinot - - * par-ch5.adb: Minor reformatting. - -2013-07-05 Thomas Quinot - - * sinfo.ads: Minor clarification to documentation for - N_Implicit_Label_Declaration. - -2013-07-05 Hristian Kirtchev - - * a-except-2005.adb, a-except.adb: Add constant Rmsg_17. Correct the - values of all remaining constants. - (Rcheck_35): New routine along with pragmas Export and No_Return. - (Rcheck_PE_Aliased_Parameters): New routine along with pragmas - Export and No_Return. - (Rcheck_PE_All_Guards_Closed, - Rcheck_PE_Bad_Predicated_Generic_Type, - Rcheck_PE_Current_Task_In_Entry_Body, - Rcheck_PE_Duplicated_Entry_Address, Rcheck_PE_Explicit_Raise, - Rcheck_PE_Implicit_Return, Rcheck_PE_Misaligned_Address_Value, - Rcheck_PE_Missing_Return, Rcheck_PE_Overlaid_Controlled_Object, - Rcheck_PE_Potentially_Blocking_Operation - Rcheck_PE_Stubbed_Subprogram_Called, - Rcheck_PE_Unchecked_Union_Restriction, - Rcheck_PE_Non_Transportable_Actual, Rcheck_SE_Empty_Storage_Pool, - Rcheck_SE_Explicit_Raise, Rcheck_SE_Infinite_Recursion, - Rcheck_SE_Object_Too_Large, Rcheck_PE_Finalize_Raised_Exception): - Update the use of Rmsg_XX. - (Rcheck_17, Rcheck_18, Rcheck_19, - Rcheck_20, Rcheck_21, Rcheck_22, Rcheck_23, Rcheck_24, Rcheck_25, - Rcheck_26, Rcheck_27, Rcheck_28, Rcheck_29, Rcheck_30, Rcheck_31, - Rcheck_32, Rcheck_33, Rcheck_34, Rcheck_35): Update corresponding - renamed subprograms. - * checks.adb: Add with and use clause for Stringt. - (Apply_Parameter_Aliasing_Checks): Make constant Loc visible in - all subprograms of Apply_Parameter_Aliasing_Checks. Remove local - variable Cond. Initialize Check at the start of the routine. Use - routine Overlap_Check to construct a simple or a detailed run-time - check. Update the creation of the simple check. - (Overlap_Check): New routine. - * exp_ch11.adb (Get_RT_Exception_Name): Add a value for - PE_Aliased_Parameters. - * types.ads: Add new enumeration literal - PE_Aliased_Parameters. Update the corresponding integer values - of all RT_Exception_Code literals. - * types.h: Add new constant PE_Aliased_Parameters. Correct the - values of all remaining constants. - -2013-07-05 Yannick Moy - - * gnat_rm.texi: Minor renaming of SPARK into SPARK 2005 in - documentation. - -2013-07-05 Ed Schonberg - - * sem_prag.adb (Analyze_PPC_In_Decl_Part): For a class-wide - condition, when replacing the name of a formal by a conversion - to the class-wide type, exempt selector names that appear in - parameter associations. - -2013-06-13 Eric Botcazou - - * gcc-interface/ada-tree.h (DECL_BY_DOUBLE_REF_P): Delete. - * gcc-interface/gigi.h (annotate_object): Adjust prototype. - (convert_vms_descriptor): Likewise. - * gcc-interface/decl.c (gnat_to_gnu_param): Do not pass fat pointer - types by double dereference. - (annotate_object): Remove BY_DOUBLE_REF parameter and adjust. - (gnat_to_gnu_entity): Adjust calls to annotate_object. - * gcc-interface/trans.c (Identifier_to_gnu): Do not deal with double - dereference. - (Call_to_gnu): Likewise. - (build_function_stub): Adjust call to convert_vms_descriptor. - (Subprogram_Body_to_gnu): Adjust call to annotate_object. - * gcc-interface/utils.c (convert_vms_descriptor): Remove BY_REF - parameter and adjust. - -2013-05-30 Eric Botcazou - - * gcc-interface/Makefile.in (arm% androideabi): Robustify. - -2013-05-26 Eric Botcazou - - * gcc-interface/decl.c: (gnat_to_gnu_entity): In ASIS mode, do not - check that access types have a set size. - -2013-05-26 Eric Botcazou - - * gcc-interface/decl.c (vinfo_t): New type and associated vector. - (components_to_record): Change return type to bool. - Lay out the variants in two passes. Do not force a specific layout for - the variant part if the variants do not have a representation clause. - Take the alignment of the variant part into account when laying out - variants without rep clause in a record type with a partial rep clause. - (create_rep_part): Do not set the position of the field. - -2013-05-26 Eric Botcazou - - * gcc-interface/trans.c (Attribute_to_gnu) : Add kludge - to avoid generating an overflow for -1. - -2013-05-26 Eric Botcazou - - * gcc-interface/gigi.h (create_type_decl): Adjust prototype. - (create_label_decl): Complete prototype. - (process_attributes): Declare. - * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust multiple calls to - create_type_decl throughout. - : Do the layout of the type manually and call - process_attributes on it. Reindent. - : Minor tweak. - : Reindent. - : Call process_attributes on the array type built - for a packed array type. - : Call process_attributes on the type. - : Likewise. - : Likewise. - : Likewise. - Likewise for all types at the end of the processing. - * gcc-interface/utils.c (make_aligning_type): Adjust call to - create_type_decl. - (maybe_pad_type): Likewise. - (create_index_type): Likewise. - (create_type_decl): Remove attr_list parameter and associated code. - (create_var_decl_1): Call process_attributes on the variable. - (process_attributes): Take a pointer to the object and add in_place - and gnat_node parameters and adjust throughout. - : Pass ATTR_FLAG_TYPE_IN_PLACE only on demand - and set the input location. - Zap the attribute list at the end. - (create_subprog_decl): Call process_attributes on the subprogram. - (build_unc_object_type): Adjust call to create_type_decl. - (handle_vector_type_attribute): Remove dead code. - -2013-05-26 Eric Botcazou - - * gcc-interface/gigi.h (make_aligning_type): Adjust prototype. - * gcc-interface/utils.c (make_aligning_type): Take GNAT_NODE parameter - for the position of the associated TYPE_DECL. - * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust call to above. - * gcc-interface/utils2.c (maybe_wrap_malloc): Likewise. - -2013-05-26 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity): Do not prematurely - elaborate the full view of a type with a freeze node. - * gcc-interface/trans.c (process_type): Add explicit predicate. - -2013-05-26 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Always build the - UNC variable for aliased objects with unconstrained nominal subtype. - -2013-05-24 Eric Botcazou - - * gcc-interface/gigi.h (gnat_init_gcc_fp): Declare. - * gcc-interface/trans.c (gigi): Call it. - * gcc-interface/misc.c (gnat_init_gcc_fp): New function. - -2013-05-24 Eric Botcazou - - * gcc-interface/gigi.h (enum inline_status_t): New type. - (create_subprog_decl): Adjust prototype. - * gcc-interface/decl.c (gnat_to_gnu_entity) : Adjust - calls to create_subprog_decl. - (get_minimal_subprog_decl): Likewise. - * gcc-interface/trans.c (gigi): Likewise. - (build_raise_check): Likewise. - (establish_gnat_vms_condition_handler): Likewise. - (Compilation_Unit_to_gnu): Likewise. - (gnat_to_gnu): Likewise. - * gcc-interface/utils.c (create_subprog_decl): Change inline_flag - parameter to inline_status and implement for suppressed inlining. - -2013-05-24 Eric Botcazou - - * gcc-interface/ada-tree.h (LOOP_STMT_NO_UNROLL): New define. - (LOOP_STMT_UNROLL): Likewise. - (LOOP_STMT_NO_VECTOR): Likewise. - (LOOP_STMT_VECTOR): Likewise. - * gcc-interface/trans.c (struct loop_info_d): Replace label field - with stmt field. - (Pragma_to_gnu) : New case. - (Loop_Statement_to_gnu): Save the loop statement onto the stack - instead of the label. - (gnat_to_gnu) : Retrieve the loop label. - -2013-05-24 Eric Botcazou - - * gcc-interface/trans.c: Include diagnostic.h and opts.h. - (Pragma_to_gnu) : New case. - -2013-05-24 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Constify - a handful of local variables. - For a derived untagged type that renames discriminants, change the type - of the stored discriminants to a subtype with the bounds of the type - of the visible discriminants. - (build_subst_list): Rename local variable. - -2013-05-16 Jason Merrill - - * gcc-interface/Make-lang.in (gnat1$(exeext)): Use link mutex. - -2013-05-13 Rainer Orth - - PR ada/57188 - * gcc-interface/Makefile.in: Allow for amd64 solaris2. - -2013-05-07 Eric Botcazou - - PR ada/56474 - * gcc-interface/decl.c (gnat_to_gnu_entity) : Use - int_const_binop to shift bounds by 1 when they are integer constants. - -2013-04-25 Arnaud Charlet - - * gcc-interface/Makefile.in (ADA_EXCLUDE_SRCS): Exclude s-init.ad{s,b} - -2013-04-25 Hristian Kirtchev - - * checks.adb (Apply_Predicate_Check): Update the comment associated - with the call to Check_Expression_Against_Static_Predicate. - * sem_ch3.adb (Analyze_Object_Declaration): Update the comment - associated with the call to Check_Expression_Against_Static_Predicate. - * sem_util.adb (Check_Expression_Against_Static_Predicate): - Broaden the check from a static expression to an expression with - a known value at compile time. - * sem_util.ads (Check_Expression_Against_Static_Predicate): Update - comment on usage. - -2013-04-25 Thomas Quinot - - * exp_attr.adb (Expand_N_Attribute_Reference, cases Position, - First_Bit, and Last_Bit): Fix incorrect test in implementation of - RM 2005 13.5.2(3/2). - -2013-04-25 Claire Dross - - * a-cfhase.adb, a-cfhase.ads, a-cforma.adb, a-cforma.ads, a-cfhama.adb, - a-cfhama.ads, a-cforse.adb, a-cforse.ads, a-cofove.adb, a-cofove.ads - (Query_Element): Removed. - (Update_Element): Removed. - (Insert): The version with no New_Item specified is removed. - (Iterate): Removed. - (Write): Removed. - (Read): Removed. - Every check of fields Busy and Lock has been removed. - -2013-04-25 Robert Dewar - - * sem_prag.adb (Analyze_Pragma, case Contract_Cases): Remove - call to S14_Pragma (Find_Related_Subprogram): Require proper - placement in subprogram body (Find_Related_Subprogram): Detect - duplicates for all cases (Find_Related_Subprogram): Handle case - of spec nested inside body. - -2013-04-25 Arnaud Charlet - - * par-prag.adb: Fix typo. - -2013-04-25 Hristian Kirtchev - - * checks.adb (Apply_Predicate_Check): If the type has a static - predicate and the expression is also static, check whether the - expression satisfies the predicate. - * sem_ch3.adb (Analyze_Object_Declaration): If the type has a - static predicate and the expression is also static, see if the - expression satisfies the predicate. - * sem_util.adb: Alphabetize several routines. - (Check_Expression_Against_Static_Predicate): New routine. - * sem_util.ads (Check_Expression_Against_Static_Predicate): New routine. - -2013-04-25 Robert Dewar - - * gnat_rm.texi: Document Reason argument for pragma Warnings. - * par-prag.adb: Handle Reason parameter for pragma Warnings. - * sem_prag.adb (Analyze_Pragma, case Warnings): Allow Reason argument. - * snames.ads-tmpl (Name_Reason): New name entry. - -2013-04-25 Yannick Moy - - * exp_spark.adb (Expand_SPARK_N_In): Remove procedure. - (Expand_SPARK): Remove special expansion for membership tests. - -2013-04-25 Hristian Kirtchev - - * exp_ch3.adb (Expand_N_Object_Declaration): Update all places - that should use constant Base_Typ. When building an invariant - check, account for invariants coming from the base type. Prevent - the creation of a junk invariant check when the related object - is of an array type and it is initialized with an aggregate. - * exp_util.adb (Make_Invariant_Call): Typ is now a variable. Use - the base type to create an invariant call when the type of the - expression is a composite subtype. - -2013-04-25 Vasiliy Fofanov - - * a-cborse.adb: Fix minor typo. - -2013-04-25 Ed Schonberg - - * sem_ch6.adb (Different_Generic_Profile): A spec and body - match in an instance if a subtype declaration that renames a - generic actual with the same name appears between spec and body. - -2013-04-25 Robert Dewar - - * sem_util.adb: Minor reformatting. - -2013-04-25 Ed Schonberg - - * exp_aggr.adb (Expand_N_Aggregate): Use special circuitry to - fold strings with a single others choice only if there are no - expressions in the aggregate. - -2013-04-25 Arnaud Charlet - - * gnat_ugn.texi: Update doc on Ada 2012 default mode. - -2013-04-25 Hristian Kirtchev - - * exp_ch6.adb: Add with and use clause for Stringt. - (Expand_Contract_Cases): Moved from sem_ch6. Add formal parameters - Decls and Stmts along with comments on their usage. - * exp_ch6.ads (Expand_Contract_Cases): Moved from sem_ch6. - * sem_ch6.adb (Expand_Contract_Cases): Moved to exp_ch6. - (Process_Contract_Cases): Update the call to Expand_Contract_Cases. - -2013-04-25 Ed Schonberg - - * gnat_rm.texi: Minor editing, to clarify use of dimension aspects. - * sem_util.adb (Is_OK_Variable_For_Out_Formal): Reject an - aggregate for a packed type, which may be converted into an - unchecked conversion of an object. - -2013-04-25 Robert Dewar - - * sem_prag.adb: Minor code reorganization (correct misspelling - Restiction). - * sem_util.adb, aspects.ads, sem_ch6.adb: Minor reformatting. - * gnat_rm.texi: Document impl-defined aspects. - * sem_dim.adb, sem_dim.ads, gnat_ugn.texi, s-dimmks.ads: Minor - reformatting. - -2013-04-25 Hristian Kirtchev - - * einfo.adb (Set_Abstract_States): The attribute now applies - to generic packages. - * sem_ch4.adb (Referenced): Moved to sem_util. - * sem_ch7.adb (Unit_Requires_Body): A [generic] package with - a non-null abstract state needs a body. - * sem_prag.adb (Analyze_Depends_In_Decl_Part): Update the calls - to Collect_Subprogram_Inputs_Outputs. - (Analyze_Global_Item): Verify the proper usage of an item with mode - In_Out or Output relative to the enclosing context. - (Analyze_Pragma): Abstract_State can now be applied to a generic - package. Do not reset the Analyzed flag for pragmas Depends and Global - as this is not needed. - (Appears_In): Moved to library level. - (Check_Mode_Restiction_In_Enclosing_Context): New routine. - (Collect_Subprogram_Inputs_Outputs): Moved to library level. Add - formal parameters Subp_Id, Subp_Inputs, Subp_Outputs and Global - seen along with comments on usage. - * sem_util.ads, sem_util.adb (Referenced): New routine. - -2013-04-25 Hristian Kirtchev - - * sem_ch6.adb (Expand_Contract_Cases): Generate - detailed error messages only when switch -gnateE is in effect. - -2013-04-25 Yannick Moy - - * sem_attr.adb (Analyze_Attribute): Do not issue - an error for a possibly misplaced 'Result or 'Old attribute when - analyzing the aspect. - -2013-04-25 Robert Dewar - - * sem_ch12.adb, sem_util.adb, sem_ch4.adb: Minor reformatting. - -2013-04-25 Hristian Kirtchev - - * sem_ch4.adb (Analyze_Quantified_Expression): - Add local variable Loop_Id. Verify that the loop variable - is used within the condition of the quantified expression. - (Referenced): New routine. - -2013-04-25 Hristian Kirtchev - - * sem_case.adb (Analyze_Choices): Enhance the error message - given on a bad use of subtype predicate. - * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Enhance - the error message given on a bad use of subtype predicate. - * sem_util.adb (Bad_Predicated_Subtype_Use): Add formal parameter - Suggest_Static. Emit an extra error message advising how to - remedy the bad use of the predicate if the context warrants it. - * sem_util.ads (Bad_Predicated_Subtype_Use): Add formal parameter - Suggest_Static along with a comment explaining its usage. - -2013-04-25 Ed Schonberg - - * sem_disp.adb (Check_Dispatching_Operation): Further refinement - to checks for AI05-0125: the check for a hidden primitive that - may be overridden by the new declaration only applies if the - hidden operation is never declared. This is not the case if the - operation is declared in a parent unit. - -2013-04-25 Robert Dewar - - * debug.adb: Remove d.X and d.Y entries and documentation. - * exp_ch4.adb (Expand_N_If_Expression): Remove special code used - if expression with actions not available (now always available). - (Expand_Short_Circuit_Operator): Same change. - * gnat1drv.adb (Adjust_Global_Switches) Remove setting - Use_Expression_With_Actions flag, since this is now obsolete. - * opt.ads (Use_Expression_Actions): Removed (always True now). - * sinfo.ads: Minor comment updates. - -2013-04-25 Ed Schonberg - - * sem_ch12.adb (Check_Generic_Actuals): If an actual is an array - subtype whose base type is currently private, install full view - when compiling instance body. - -2013-04-25 Ed Schonberg - - * sem_disp.adb (Check_Dispatching_Operation): Refine checks for - AI05-0125: the check for a hidden primitive that may be overridden - by the new declaration is only performed if the declaration comes - from source, and it must carry an explicit overriding indicator. - -2013-04-25 Hristian Kirtchev - - * einfo.adb (Abstract_States): The attribute now applies to - generic packages. - * sem_ch3.adb (Analyze_Object_Declaration): Check whether an - object declaration introduces an illegal hidden state. - * sem_prag.adb (Analyze_Abstract_State): Check whether a state - declaration introduces an illegal hidden state. - * sem_util.ads, sem_util.adb (Check_No_Hidden_State): New routine. - -2013-04-25 Ed Schonberg - - * exp_ch6.adb (Is_Build_In_Place_Function_Call): The call may - be to a protected function, in which case the name in the call - is a selected component. - -2013-04-25 Hristian Kirtchev - - * sem_ch4.adb (Analyze_Quantified_Expression): - Warn on a suspicious use of quantifier "some" when "all" was meant. - (No_Else_Or_Trivial_True): New routine. - -2013-04-25 Robert Dewar - - * einfo.ads, einfo.adb: Put back with/use for Namet. - (Get_Pragma): New name (wi new spec) for Find_Pragma. - * sem_ch6.adb: Change name Find_Pragma to Get_Pragma with - different interface. - -2013-04-25 Ed Schonberg - - * sem_ch3.adb (Is_Visible_Component): In an instance all - components are visible. - -2013-04-25 Matthew Heaney - - * a-rbtgbo.adb, a-crbtgo.adb (Generic_Equal): do not test for - tampering when container empty. - * a-crbtgk.adb (Ceiling, Find, Floor): ditto. - (Generic_Conditional_Insert, Generic_Conditional_Insert_With_Hint): - ditto. - -2013-04-25 Ed Schonberg - - * par-ch12.adb: Move aspects from package specification to - generic package declaration. - * sem_ch12.adb: Analyze aspect specifications before building - and analyzing the generic copy, so that the generated pragmas - are properly taken into account. - * sem_ch13.adb: For compilation unit aspects that apply to a - generic package declaration, insert corresponding pragmas ahead - of visible declarations. - * sprint.adb: Display properly the aspects of a generic type - declaration. - -2013-04-25 Robert Dewar - - * frontend.adb: Minor reformatting. - -2013-04-25 Ed Schonberg - - * einfo.ads: Extend documentation on use of Is_Private_Ancestor - for untagged types. - * sem_ch3.adb (Is_Visible_Component): Refine predicate for the - case of untagged types derived from private types, to reject - illegal selected components. - -2013-04-25 Gary Dismukes - - * sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Test - for case of selecting from an unexpanded implicit dereference - and do not make a recursive call on such a prefix. - -2013-04-25 Doug Rupp - - * targparm.adb (VXF{_Str}): New tag for vaxfloat. - (Get_Target_Parameters): Handle VXF tag. - * targparm.ads (VAX_Float_On_Target): New boolean. - * system-vms-ia64.ads (VAX_Float): New boolean. - * frontend.adb (Frontend): Handle VAX float boolean. - -2013-04-25 Hristian Kirtchev - - * einfo.ads, einfo.adb: Remove with and use clauses for Namet. - (Find_Pragma): New routine. - * sem_util.ads, sem_util.adb (Find_Pragma): Moved to einfo. - -2013-04-25 Hristian Kirtchev - - * sem_ch13.adb (Add_Call): Do not capture the nature of the inherited - predicate. - (Add_Predicates): Save the static predicate for diagnostics and error - reporting purposes. - (Process_PPCs): Remove local variables Dynamic_Predicate_Present and - Static_Predicate_Present. Add local variable Static_Pred. Ensure that - the expression of a static predicate is static. - -2013-04-25 Hristian Kirtchev - - * einfo.adb (Is_Ghost_Subprogram): Remove useless code. - -2013-04-25 Robert Dewar - - * gnat_rm.texi: Minor addition of index entry. - -2013-04-25 Hristian Kirtchev - - * sem_ch6.adb (Check_Access_Invariants): Test whether an - invariant procedure is empty before generating a call to it. - (Has_Enabled_Predicate): New routine. - (Has_Null_Body): New routine. - (Process_PPCs): Test whether an invariant procedure is - empty before generating a call to it. Test whether predicates are - enabled for a particular type before generating a predicate call. - * sem_util.ads, sem_util.adb (Find_Pragma): New routine. - -2013-04-25 Robert Dewar - - * sem_ch7.adb, einfo.adb, repinfo.adb, snames.adb-tmpl, - snames.ads-tmpl: Minor reformatting. - -2013-04-25 Thomas Quinot - - * sem_ch7.adb: Minor reformatting. - -2013-04-25 Robert Dewar - - * gnat_rm.texi: Minor fix to Loop_Variant doc (Loop_Entry allowed). - * s-tarest.adb: Minor reformatting. - -2013-04-25 Hristian Kirtchev - - * aspects.ads, aspects.adb: Remove aspect Ghost from all relevant - tables. - * einfo.adb: Remove with and use clause for Aspects. - (Is_Ghost_Function): Removed. - (Is_Ghost_Entity): New routine. - (Is_Ghost_Subprogram): New routine. - * einfo.ads: Remove synthesized attribute Is_Ghost_Function - along with its uses in entities. Add synthesized attributes - Is_Ghost_Entity and Is_Ghost_Subprogram along with uses in related - entities. - (Is_Ghost_Function): Removed. - (Is_Ghost_Entity): New routine. - (Is_Ghost_Subprogram): New routine. - * par-prag.adb: Remove pragma Ghost from the processing machinery. - * repinfo.adb (List_Mechanisms): Add a value for convention Ghost. - * sem_attr.adb (Analyze_Access_Attribute): Update the check - for ghost subprograms. - * sem_ch4.adb (Analyze_Call): Update the check for calls - to ghost subprograms. - (Check_Ghost_Function_Call): Removed. - (Check_Ghost_Subprogram_Call): New routine. - * sem_ch6.adb (Check_Convention): Rewritten. - (Check_Overriding_Indicator): Remove the check for overriding - ghost functions. - (Convention_Of): New routine. - * sem_ch12.adb (Preanalyze_Actuals): Update the check for ghost - generic actual subprograms. - * sem_mech.adb (Set_Mechanisms): Add an entry for convention Ghost. - * sem_prag.adb: Remove the value for pragma Ghost from - table Sig_Flags. - (Analyze_Pragma): Remove the processing for pragma Ghost. - (Process_Convention): Emit an error when a ghost - subprogram attempts to override. - (Set_Convention_From_Pragma): Emit an error when a ghost subprogram - attempts to override. - * sinfo.ads: Clarify the usage of field Label_Construct. - * snames.adb-tmpl (Get_Convention_Id): Add an entry for - predefined name Ghost. - (Get_Convention_Name): Add an entry for convention Ghost. - * snames.ads-tmpl: Move predefined name Ghost to the sublist - denoting conventions. Add convention id Ghost. Remove pragma - id Ghost. - -2013-04-25 Ed Schonberg - - * sem_ch7.adb (Swap_Private_Dependents): Do no recurse on child - units if within a generic hierarchy. - -2013-04-24 Hristian Kirtchev - - * exp_ch6.adb (Expand_Actuals): Add a predicate check on an - actual the related type has a predicate function. - * sem_ch3.adb (Constant_Redeclaration): Ensure that the related - type has an invariant procedure before building a call to it. - * sem_ch6.adb (Append_Enabled_Item): New routine. - (Check_Access_Invariants): Use routine - Append_Enabled_Item to chain onto the list of postconditions. - (Contains_Enabled_Pragmas): Removed. - (Expand_Contract_Cases): Use routine Append_Enabled_Item to chain onto - the list of postconditions. - (Invariants_Or_Predicates_Present): Removed. - (Process_PPCs): Partially reimplemented. - -2013-04-24 Sergey Rybin - - * tree_io.ads: Update ASIS_Version_Number because of changes - in the way how entities are chained in a scope by means of - Next_Entity link. - -2013-04-24 Ed Schonberg - - * exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case - Storage_Size): If the clause is not from an aspect, insert - assignment to size variable of task type at the point of the - clause, not after the task definition, to prevent access before - elaboration in the back-end. - -2013-04-24 Yannick Moy - - * sem_prag.adb (Sig_Flags): Set correct value for Pragma_Assume. - -2013-04-24 Yannick Moy - - * gnat_rm.texi: Document 'Loop_Entry. - -2013-04-24 Jose Ruiz - - * s-tassta.adb, s-tarest.adb (Task_Wrapper): Start looking for - fall-back termination handlers from the parents, because they apply - only to dependent tasks. - * s-solita.adb (Task_Termination_Handler_T): Do not look for fall-back - termination handlers because the environment task has no parent, - and if it defines one of these handlers it does not apply to - itself because they apply only to dependent tasks. - -2013-04-24 Robert Dewar - - * sem_type.adb, exp_attr.adb, exp_ch4.adb: Minor reformatting. - -2013-04-24 Robert Dewar - - * gnat_rm.texi: Document 'Update attribute. - * sem_attr.adb (Analyze_Attribute, case Update): Remove call - to S14_Attribute (S14_Attribute): removed. - -2013-04-24 Robert Dewar - - * interfac.ads: Add size clauses for IEEE_Float_32/64 - -2013-04-24 Claire Dross - - * gnat1drv.adb (Adjust_Global_Switches): Remove - special assignment of Use_Expression_With_Actions for SPARK_Mode. - -2013-04-24 Hristian Kirtchev - - * checks.adb (Apply_Predicate_Check): Check for the presence - of the dynamic predicate aspect when trying to determine if the - predicate of a type is non-static. - * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Check - for the presence of the dynamic predicate aspect when trying to - determine if the predicate of a type is non- static. - * sem_ch13.adb (Add_Call): Capture the nature of the - inherited ancestor predicate. - (Build_Predicate_Functions): Update comments. Rewrite the checks on - static predicate application. Complain about the form of a non-static - expression only when the type is static. - -2013-04-24 Ed Schonberg - - * sem_prag.adb: Add guard to tree traversal. - -2013-04-24 Vincent Celier - - * clean.adb (Clean): Remove local variable Root_Environment, - use Makeutl.Root_Environment instead. - * gnatcmd.adb: Remove local variable Root_Environment, use - Makeutl.Root_Environment instead. - * make.adb (Gnatmake): Remove local variable Root_Environment, - use Makeutl.Root_Environment instead. - * prj-makr.adb: Remove local variable Root_Environment, use - Makeutl.Root_Environment instead. - -2013-04-24 Hristian Kirtchev - - * exp_attr.adb (Expand_Loop_Entry_Attribute): Clarify the - extraction of the declarative part of the conditional block. Move - the processing of simple infinite loops to the start of the - expansion logic. Correct the check which determines whether the - proper scope is installed in visibility. - * sem_attr.adb (Analyze_Attribute): Add local variable Attr - to keep track of the attribute in case the enclosing indexed - component has to be rewritten. When searching for the enclosing - loop, start from the proper attribute reference in case of a - rewriting. Do not allow for 'Loop_Entry to appear in pragma - Assert. Replace loop variable J with Index. Set the type of the - proper attribute. - * sem_ch5.adb (Check_Unreachable_Code): Detect a specialized - block that services a loop statement subject to at least one - 'Loop_Entry attribute. - -2013-04-24 Ed Schonberg - - * sem_type.adb (Disambiguate): In Ada 2012 mode, when trying to - resolve a fixed point operation, use first subtype to determine - whether type and operator are declared in the same list of - declarations. - -2013-04-24 Hristian Kirtchev - - * par-ch6.adb (P_Subprogram): Detect an illegal - placement of the aspect specification list in the context of - expression functions. - -2013-04-24 Ed Schonberg - - * exp_ch4.adb (Expand_N_Allocator): If the designated object - has tasks, and the pointer type is an itype that has no master - id, create a master renaming in the current context, which can - only be an init_proc. - -2013-04-24 Robert Dewar - - * sem_ch3.adb, sem_ch7.adb: Minor reformatting. - * gnat_rm.texi: Document pragma Loop_Invariant. - * sem_attr.adb (Analyze_Attribute, case Loop_Entry): This is - no longer an S14_Attribute. - * sem_prag.adb (Analyze_Pragma, case Loop_Invariant): Combine - processing with Assert, allow message parameter, remove call - to S14_Pragma. - -2013-04-24 Thomas Quinot - - * exp_ch4.adb: Minor reformatting. - -2013-04-24 Ed Schonberg - - * sem_ch7.adb (Swap_Private_Dependents): New internal routine - to Install_Private_Declarations, to make the installation of - private dependents recursive in the presence of child units. - * sem_ch3.adb (Build_Discriminated_Subtype): Initialize properly - the Private_Dependents of a private subtype. - -2013-04-24 Hristian Kirtchev - - * exp_attr.adb (Expand_Loop_Entry_Attribute): Update the - retrieval of the block declarations. - * par-ch4.adb (P_Name): Let the name parsing machinery create - a sequence of nested indexed components for attribute Loop_Entry. - * sem_attr.adb (Analyze_Attribute): Add local constant - Context. Reimplement part of the analysis of attribute Loop_Entry. - (Convert_To_Indexed_Component): Removed. - * sem_ch4.adb (Analyze_Indexed_Component_Form): Do not analyze - an indexed component after it has been rewritten into attribute - Loop_Entry. - -2013-04-24 Yannick Moy - - * snames.ads-tmpl: Minor change to list - Loop_(In)variant not in configuration pragma. - * sem_ch3.adb (Analyze_Declarations): Do not look at the original node - for analyzing the expressions in pre/postconditions. - -2013-04-24 Robert Dewar - - * gnatcmd.adb, xref_lib.adb, gnatls.adb, sem_ch13.adb: Minor - reformatting. - -2013-04-24 Yannick Moy - - * sem_ch6.adb (Analyze_Generic_Subprogram_Body, - Analyze_Subprogram_Body_Helper): Reset contract node to Empty - before setting entity to E_Subprogram_Body. - * sem_ch8.adb (Analyze_Subprogram_Renaming): Reset contract node to - Empty before setting entity to E_Subprogram_Body. - -2013-04-24 Vincent Celier - - * gnat_ugn.texi: Document new gnatls switch -aPdir. - * gnatcmd.adb: Pass switch -aP to gnatls. - * gnatls.adb (Scan_Ls_Arg): Process new switch -aP. Issue - a warning for unknown switches. - (Usage): Add line for new switch -aPdir. - -2013-04-24 Ed Schonberg - - * sem_util.adb, sem_util.ads (Is_Limited_Class_Wide_Type): Return true - if the type comes from a limited view, so that task attributes can be - constructed. - -2013-04-24 Yannick Moy - - * checks.adb (Apply_Float_Conversion_Check): Do not apply checks if - full expansion is not enabled. - -2013-04-24 Ed Schonberg - - * sem_ch6.adb (Create_Extra_Formals): In Ada 2012, create extra - formals if the type does not yet have a completion, and thus - has no underlying view. - -2013-04-24 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specifications): Treat an aspect - specification for Address as a reference, to suppress warnings - on entities that may be read by an external device. - -2013-04-24 Sergey Rybin - - * gnat_ugn.texi: Add description of '--help' and '--version' - options for ASIS tools: gnatelim, gnatmetric, gnatstub, gnatpp. - -2013-04-24 Arnaud Charlet - - * gnat_rm.texi: Minor syntax fix. - -2013-04-24 Hristian Kirtchev - - * exp_attr.adb (Expand_Loop_Entry_Attribute): Add extra comments on - what and why is being analyzed. Remove the decoration of renamings as - this simply falls out of the general analysis mechanism. - -2013-04-24 Hristian Kirtchev - - * sem_res.adb (Explain_Redundancy): New routine. - (Resolve_Equality_Op): Place the error concerning a redundant - comparison to True at the "=". Try to explain the nature of the - redundant True. - -2013-04-24 Javier Miranda - - - * checks.adb, exp_ch6.adb (Install_Null_Excluding_Check): No - check in interface thunks since it is performed at the caller - side. - (Expand_Simple_Function_Return): No accessibility check - needed in thunks since the check is done by the target routine. - -2013-04-24 Vincent Celier - - * xref_lib.adb (Add_Entity): Use the canonical file names - so that source file names with capital letters are found on - platforms where file names are case insensitive. - -2013-04-24 Hristian Kirtchev - - * par-ch4.adb (P_Name): Continue to parse the name extension when the - construct is attribute Loop_Entry. Do not convert the attribute - reference into an indexed component when there is at least one - expression / range following 'Loop_Entry. - -2013-04-24 Hristian Kirtchev - - * sem_ch6.adb (Contains_Enabled_Pragmas): New routine. - (Process_PPCs): Generate procedure _Postconditions - only when the context has invariants or predicates or enabled - aspects/pragmas. - -2013-04-24 Thomas Quinot - - * g-socket.adb (Host_Entry): Introduce intermediate copy of - memory location pointed to by Hostent_H_Addr, as it might not - have sufficient alignment. - -2013-04-24 Yannick Moy - - * repinfo.adb (List_Rep_Info): Set the value of Unit_Casing before - calling subprograms which may read it. - -2013-04-24 Hristian Kirtchev - - * einfo.adb: Remove Loop_Entry_Attributes from the usage of - nodes. Flag 260 is now used. - (Has_Loop_Entry_Attributes): New routine. - (Loop_Entry_Attributes): Removed. - (Set_Has_Loop_Entry_Attributes): New routine. - (Set_Loop_Entry_Attributes): Removed. - (Write_Entity_Flags): Write out Flag 260. - (Write_Field10_Name): Remove the output for Loop_Entry_Attributes. - * einfo.ads: Remove attribute Loop_Entry_Attributes, - its related comment and uses in nodes. Add new attribute - Has_Loop_Entry_Attributes, related comment and uses in loop nodes. - (Has_Loop_Entry_Attributes): New routine and pragma Inline. - (Loop_Entry_Attributes): Removed along with pragma Inline. - (Set_Has_Loop_Entry_Attributes): New routine and pragma Inline. - (Set_Loop_Entry_Attributes): Removed along with pragma Inline. - * exp_attr.adb (Expand_Loop_Entry_Attribute): New routine. - (Expand_N_Attribute_Reference): Expand attribute 'Loop_Entry. - * exp_ch5.adb: Remove with and use clause for Elists. - (Expand_Loop_Entry_Attributes): Removed. - (Expand_N_Loop_Statement): Add local variable Stmt. Rename local - constant Isc to Scheme. When a loop is subject to attribute - 'Loop_Entry, retrieve the nested loop from the conditional - block. Move the processing of controlled object at the end of - loop expansion. - * sem_attr.adb (Analyze_Attribute): Do not chain attribute - 'Loop_Entry to its related loop. - * sem_ch5.adb (Analyze_Loop_Statement): Add local variable - Stmt. When the iteration scheme mentions attribute 'Loop_Entry, - the entire loop is rewritten into a block. Retrieve the nested - loop in such cases to complete the analysis. - * sem_util.ads, sem_util.adb (Find_Loop_In_Conditional_Block): New - routine. - (Subject_To_Loop_Entry_Attributes): New routine. - -2013-04-24 Robert Dewar - - * exp_prag.adb (Expand_Loop_Variant): Generate pragma Check - (Loop_Variant, xxx) rather than Assert (xxx). - * gnat_rm.texi: Document pragma Loop_Variant. - * sem_prag.adb (Analyze_Pragma, case Loop_Variant): Remove call - to S14_Pragma. - -2013-04-24 Yannick Moy - - * adabkend.adb, ali-util.adb, ali.adb, debug.adb, - errout.adb, errout.ads, erroutc.adb, exp_ch3.adb, exp_ch4.adb, - exp_ch6.adb, exp_ch7.adb, exp_dbug.adb, exp_util.adb, - expander.adb, freeze.adb, gnat1drv.adb, lib-writ.adb, - lib-writ.ads, lib-xref.adb, lib-xref.ads, opt.adb, opt.ads, - restrict.adb, sem_aggr.adb, sem_attr.adb, sem_ch3.adb, - sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_eval.adb, sem_prag.adb, - sem_res.adb, sem_util.adb: Everything with name - 'Alfa' renamed in 'SPARK'. Update comments. - Renaming of units with name 'Alfa', renamed with 'SPARK' instead. - * exp_alfa.adb: renamed exp_spark.adb. - * exp_alfa.ads: renamed exp_spark.ads. - * get_alfa.adb: renamed get_spark_xrefs.adb. - * get_alfa.ads: renamed get_spark_xrefs.ads. - * lib-xref-alfa.adb: renamed lib-xref-spark_specific.adb. - * put_alfa.adb: renamed put_spark_xrefs.adb. - * put_alfa.ads: renamed put_spark_xrefs.ads. - * alfa.adb: renamed spark_xrefs.adb. - * alfa.ads: renamed spark_xrefs.ads. - * alfa_test.adb: renamed spark_xrefs_test.adb. - * gcc-interface/Make-lang.in: Update dependencies. - -2013-04-24 Robert Dewar - - * gnat_rm.texi: Document pragma Assume. - * sem_prag.adb (Analyze_Pragma, case Assume): Now processed as - part of Assert, and no longer requires -gnatd.F - -2013-04-24 Robert Dewar - - * gnat_rm.texi: Document pragma Assert_And_Cut. - * sem_prag.adb (Analyze_Pragma, case Assert_And_Cut): Remove - S14_Pragma call. - -2013-04-24 Ed Schonberg - - * sem_aux.adb: Add guard in Available_View. - -2013-04-24 Hristian Kirtchev - - * sem_prag.adb (Analyze_Depends_In_Decl_Part): Use - Find_Related_Subprogram to find the associated subprogram. - (Analyze_Global_In_Decl_List): Use Find_Related_Subprogram - to find the associated subprogram. - (Analyze_Pragma): Use Find_Related_Subprogram to find the associated - subprogram. - -2013-04-24 Hristian Kirtchev - - * exp_ch6.adb: Remove with and use clause for Sem_Prag. - (Freeze_Subprogram): Call Analyze_Subprogram_Contract to analyze - the contract of a subprogram. - * sem_ch3.adb: Remove with and use clause for Sem_Prag. - (Analyze_Declarations): Call Analyze_Subprogram_Contract to - analyze the contract of a subprogram. - * sem_ch6.adb (Analyze_Subprogram_Contract): New routine. - (Check_Subprogram_Contract): Removed. - * sem_ch6.ads (Analyze_Subprogram_Contract): New routine. - (Check_Subprogram_Contract): Removed. - (Expand_Contract_Cases): Add a guard against malformed contract cases. - * sem_ch13.adb (Analyze_Aspect_Specifications): Call - Decorate_Delayed_Aspect_And_Pragma to decorate aspects - Contract_Cases, Depends and Global. Reimplement the analysis of - aspect Contract_Cases. - (Decorate_Delayed_Aspect_And_Pragma): New routine. - * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): New routine. - (Analyze_CTC_In_Decl_Part): Removed. - (Analyze_Pragma): Reimplement the analysis of pragma Contract_Cases. - (Analyze_Test_Case_In_Decl_Part): New routine. - (Find_Related_Subprogram): New routine. - (Requires_Profile_Installation): Add new formal Prag. Update - the logic to take into account the origin of the pragma. - * sem_prag.ads (Analyze_Contract_Cases_In_Decl_Part): New routine. - (Analyze_CTC_In_Decl_Part): Removed. - (Analyze_Test_Case_In_Decl_Part): New routine. - -2013-04-24 Robert Dewar - - * sem_prag.adb (Process_Convention): Move Stdcall tests to - Set_Convention_From_Pragma so that they are applied to each - entry of a homonym set. - (Process_Convention): Don't try to set convention if already set. - -2013-04-24 Robert Dewar - - * gnatbind.adb: Minor reformatting. - -2013-04-24 Vincent Celier - - * clean.adb (Gnatclean): Add the default project search - directories in the project search path after scanning the - switches on the command line. - (Initialize): Do not put the default project search directories in the - project search path. - * gnatcmd.adb (GNATcmd): Add the default project search - directories in the project search path after scanning the switches - on the command line. - * make.adb (Initialize): Add the default project search - directories in the project search path after scanning the switches - on the command line. - -2013-04-24 Yannick Moy - - * restrict.ads (Restriction_Warnings): Initialize with all False value. - -2013-04-24 Robert Dewar - - * checks.ads, checks.adb (Predicate_Checks_Suppressed): New function. - * exp_util.ads, exp_util.adb (Make_Predicate_Check): Check setting of - Predicate_Check. - * snames.ads-tmpl (Name_Predicate_Check): New check name. - * types.ads (Predicate_Check): New definition. - * gnat_rm.texi: Add documentation for Predicate_Check. - -2013-04-24 Ed Schonberg - - * exp_ch8.adb (Expand_N_Subprogram_Renaming_Declaration): If this - is a renaming of predefined equality for an untagged record, - add generated body to the freeze actions for the subprogram, to - prevent freezing issues when the record has incomplete components. - * exp_ch4.adb (Expand_Composite_Equality): If the type is a type - without completion, return a predefined comparison instead of - just False. This may happen when building the expression for - record equality, when some component has a type whose completion - has not been seen yet. The operation will be analyzed an expanded - after the type has been frozen, at which point all component - types will have been completed, or an error reported. - -2013-04-24 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specifications): Do not delay - analysis of a Convention aspect. - -2013-04-24 Eric Botcazou - - * fe.h (Machine_Overflows_On_Target): New macro and declaration. - (Signed_Zeros_On_Target): Likewise. - -2013-04-24 Hristian Kirtchev - - * exp_ch6.adb: Add with and use clause for Sem_Prag. - (Freeze_Subprogram): Analyze all delayed aspects for a null - procedure so that they are available when analyzing the - internally-generated _Postconditions routine. - * exp_ch13.adb: Remove with and use clause for Sem_Prag. - (Expand_N_Freeze_Entity): Move the code that analyzes delayed - aspects of null procedures to exp_ch6.Freeze_Subprogram. - * sem_prag.adb (Analyze_Abstract_State): Update the check on - volatile requirements. - -2013-04-24 Bob Duff - - * ali-util.ads (Source_Record): New component Stamp_File - to record from whence the Stamp came. - * ali-util.adb (Set_Source_Table): Set Stamp_File component. - * bcheck.adb (Check_Consistency): Print additional information in - Verbose_Mode. - * gnatbind.adb (Gnatbind): Print additional information in - Verbose_Mode. - -2013-04-24 Robert Dewar - - * exp_ch13.adb, sem_prag.adb: Update comments. - * sem_ch3.adb, exp_ch9.adb, g-socket.adb, sem_ch13.adb: Minor - reformatting. - -2013-04-24 Doug Rupp - - * vms_data.ads (/{NO}INHIBIT-EXEC): Document new default behavior. - -2013-04-24 Yannick Moy - - * sinfo.ads: Minor correction of typo. - -2013-04-24 Ed Schonberg - - * sem_ch3.adb: Create packed array only when expander is - active. - -2013-04-24 Hristian Kirtchev - - * sem_prag.adb (Analyze_Depends_In_Decl_Part): Install the formals only - when the context warrants it. - (Analyze_Global_In_Decl_List): Install the formals only when - the context warrants it. - (Requires_Profile_Installation): New routine. - -2013-04-24 Ed Schonberg - - * exp_ch6.adb (Expand_N_Simple_Return_Statement): When the return - type is a discriminated private type that does not require use - of the secondary stack, a constrained subtype of the underlying - type is created to convey the proper object size to the backend. - If the return type is originally a private type, the return - expression is wrapped in an unchecked_conversion. If the return - expression is used subsequently in a call to the postcondition - function, this conversion must be undone to prevent a spurious - error on the analysis of that call. - -2013-04-23 Kai Tietz - - PR target/55445 - * raise-gcc.c (__SEH__): Additional check that SjLj isn't active. - -2013-04-23 Eric Botcazou - Pascal Obry - - * gcc-interface/Makefile.in (targ): Fix target name check. - (../../gnatmake$(exeext)): Add '+' for LTO. - (../../gnatlink$(exeext)): Likewise. - -2013-04-23 Hristian Kirtchev - - * exp_ch9.adb (Build_PPC_Wrapper): Correct the traversal of - pre- and post-conditions. - (Expand_N_Task_Type_Declaration): - Use the correct attribute to check for pre- and post-conditions. - * exp_ch13.adb (Expand_N_Freeze_Entity): Correct the traversal of - pre- and post-conditions. Analyze delayed classification items. - * freeze.adb (Freeze_Entity): Use the correct attribute to - check for pre- and post- conditions. - * sem_ch3.adb (Analyze_Declarations): Correct the traversal - of pre- and post-conditions as well as contract- and - test-cases. Analyze delayed pragmas Depends and Global. - * sem_ch6.adb (Check_Subprogram_Contract): Use the correct - attribute to check for pre- and post-conditions, as well as - contract-cases and test-cases. (List_Inherited_Pre_Post_Aspects): - Correct the traversal of pre- and post- conditions. - (Process_Contract_Cases): Update the comment on usage. Correct - the traversal of contract-cases. - (Process_Post_Conditions): Update the comment on usage. Correct the - traversal of pre- and post-conditions. - (Process_PPCs): Correct the traversal of pre- and post-conditions. - (Spec_Postconditions): Use the correct - attribute to check for pre- and post- conditions, as well as - contract-cases and test-cases. - * sem_ch13.adb (Analyze_Aspect_Specifications): Reimplement the - actions related to aspects Depends and Global. Code refactoring - for pre- and post-conditions. - (Insert_Delayed_Pragma): New routine. - * sem_prag.adb (Add_Item): New routine. - (Analyze_Depends_In_Decl_Part): New routine. - (Analyze_Global_In_Decl_Part): New routine. - (Analyze_Pragma): Reimplement the actions related to aspects Depends and - Global. Verify that a body acts as a spec for pragma Contract_Cases. - (Chain_PPC): Use Add_Contract_Item to chain a pragma. - (Chain_CTC): Correct the traversal of contract- - and test-cases. Use Add_Contract_Item to chain a pragma. - (Chain_Contract_Cases): Correct the traversal of contract- - and test-cases. Use Add_Contract_Item to chain a pragma. - (Check_Precondition_Postcondition): Update the comment on usage. - (Check_Test_Case): Update the comment on usage. - * sem_prag.ads (Analyze_Depends_In_Decl_Part): New routine. - (Analyze_Global_In_Decl_Part): New routine. - * sem_util.ads, sem_util.adb (Add_Contract_Item): New routine. - * sinfo.adb (Classifications): New routine. - (Contract_Test_Cases): New routine. - (Pre_Post_Conditions): New routine. - (Set_Classifications): New routine. - (Set_Contract_Test_Cases): New routine. - (Set_Pre_Post_Conditions): New routine. - (Set_Spec_CTC_List): Removed. - (Set_Spec_PPC_List): Removed. - (Spec_CTC_List): Removed. - (Spec_PPC_List): Removed. - * sinfo.ads: Update the structure of N_Contruct along with all - related comments. - (Classifications): New routine and pragma Inline. - (Contract_Test_Cases): New routine and pragma Inline. - (Pre_Post_Conditions): New routine and pragma Inline. - (Set_Classifications): New routine and pragma Inline. - (Set_Contract_Test_Cases): New routine and pragma Inline. - (Set_Pre_Post_Conditions): New routine and pragma Inline. - (Set_Spec_CTC_List): Removed. - (Set_Spec_PPC_List): Removed. - (Spec_CTC_List): Removed. - (Spec_PPC_List): Removed. - -2013-04-23 Doug Rupp - - * init.c (GNAT$STOP) [VMS]: Bump sigargs[0] count by 2 - to account for LIB$STOP not having the chance to add the PC and - PSL fields. - -2013-04-23 Robert Dewar - - * sem_ch13.adb: Minor code reorganization (remove some redundant - assignments). - * sem_ch3.adb, sem_prag.adb: Minor reformatting. - -2013-04-23 Yannick Moy - - * einfo.ads: Minor typo fix. - * sem_ch13.adb (Build_Predicate_Functions): Reject cases where - Static_Predicate is applied to a non-scalar or non-static type. - * sem_prag.adb: Minor typo fix. - -2013-04-23 Doug Rupp - - * init.c (GNAT$STOP) [VMS]: New function. - -2013-04-23 Ed Schonberg - - * sem_ch3.adb: Add exp_pakd to context. - (Constrain_Component_Type): If the component of the parent is - packed, and the record subtype being built is already frozen, - as is the case for an itype, the component type itself will not - be frozen, and the packed array type for it must be constructed - explicitly. - -2013-04-23 Thomas Quinot - - * g-socket.adb, g-socket.ads (Set_Close_On_Exec): New subprogram. - -2013-04-23 Yannick Moy - - * err_vars.ads (Error_Msg_Qual_Level): Set variable to zero - at declaration. - * opt.ads (Multiple_Unit_Index): Set variable to zero at declaration. - * sem_util.adb (NCT_Table_Entries): Set variable to zero at declaration. - * set_targ.ads (Num_FPT_Modes): Set variable to zero at declaration. - * stylesw.adb (Save_Style_Check_Options): Protect testing the - value of Style_Check_Comments_Spacing by a previous test that - Style_Check_Comments is True. - -2013-04-23 Thomas Quinot - - * sem_prag.adb, sem_prag.ads (Effective_Name): Rename to - Original_Name, and move declaration to package body as this - subprogram is not used from outside. Also clarify documentation. - -2013-04-23 Ed Schonberg - - * exp_ch6.adb (Expand_N_Subprogram_Body): When compiling with - initialize_scalars, disable predicate checks on the generated - assignment to an out scalar parameter. - -2013-04-23 Gary Dismukes - - * sem_ch4.adb (Analyze_Allocator): Remove error - check for "constrained in partial view" constraints entirely. - -2013-04-23 Robert Dewar - - * einfo.ads, sem_prag.ads: Minor reformatting. - * errout.ads: Comment update. - -2013-04-23 Yannick Moy - - * exp_ch5.adb: Minor typo. - -2013-04-23 Thomas Quinot - - * gnat_ugn.texi: Fix typo. - -2013-04-23 Ed Schonberg - - * einfo.ads: Minor documentation clarification. - -2013-04-23 Bob Duff - - * types.ads: Fix incorrect comment. - -2013-04-23 Ed Schonberg - - * sem_aux.adb sem_aux.ads (Effectively_has_Constrained_Partial_View): - Rename subprogram as Object_Type_Has_Constrained_Partial_View, better - description of purpose. - * checks.adb (Apply_Discriminant_Check): Use above renaming. - * sem_ch4.adb (Analyze_Allocator): Check Has_Constrained_Partial_View - of the base type, rather than using the Object_Type predicate. - * sem_attr.adb (Analyze_Attribute, case 'Access): Use above renaming. - * sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): ditto. - * exp_attr.adb (Expand_N_Attribute_Reference, case 'Constrained): Ditto. - * exp_ch4.adb (Expand_N_Allocator): Ditto. - -2013-04-23 Robert Dewar - - * exp_prag.adb (Expand_Pragma_Check): Check for Assert rather - than Assertion. - * sem_prag.adb (Is_Valid_Assertion_Kind): Moved to spec - (Effective_Name): New function (Analyze_Pragma, case Check): - Disallow [Statement_]Assertions (Check_Kind): Implement - Statement_Assertions (Check_Applicable_Policy): Use Effective_Name - (Is_Valid_Assertion_Kind): Allow Statement_Assertions. - * sem_prag.ads (Is_Valid_Assertion_Kind): Moved here from body - (Effective_Name): New function. - * sem_res.adb: Minor reformatting. - * snames.ads-tmpl (Name_Statement_Assertions): New entry. - * gnat_rm.texi: Add documentation of new assertion kind - Statement_Assertions. - -2013-04-23 Robert Dewar - - * sinfo.ads, einfo.adb, sem_res.adb, exp_ch6.adb, aspects.adb: Minor - reformatting and code clean up. - -2013-04-23 Vincent Celier - - * prj-part.ads, prj-conf.ads: Minor comment updates. - -2013-04-23 Ed Schonberg - - * einfo.adb (Predicate_Function): For a private type, retrieve - predicate function from full view. - * aspects.adb (Find_Aspect): Ditto. - * exp_ch6.adb (Expand_Actuals): If the formal is class-wide and - the actual is a definite type, apply predicate check after call. - * sem_res.adb: Do not apply a predicate check before the call to - a generated Init_Proc. - -2013-04-23 Robert Dewar - - * sem_ch13.adb (Analyze_Aspect_Specifications): Significant - rewrite to make sure Is_Ignore is properly captured when aspect - is declared. - * sem_ch6.adb: Minor reformatting. - * sem_prag.adb (Analyze_Pragma): Do not test policy at time of - pragma for the case of a pragma coming from an aspect (already - tested when we analyzed the aspect). - -2013-04-23 Vincent Celier - - * prj-conf.adb (Parse_Project_And_Apply_Config): New - Boolean parameter Implicit_Project, defaulted to False. Call - Prj.Part.Parse with Implicit_Project. - * prj-conf.ads (Parse_Project_And_Apply_Config): New Boolean - parameter Implicit_Project, defaulted to False. - * prj-part.adb (Parse_Single_Project): New Boolean parameter - Implicit_Project, defaulted to False. When Implicit_Project is - True, change the Directory of the project node to the Current_Dir. - * prj-part.ads (Parse): New Boolean parameter, defaulted to False - -2013-04-23 Robert Dewar - - * exp_util.adb: Minor reformatting. - -2013-04-23 Robert Dewar - - * xoscons.adb: Minor reformatting. - -2013-04-23 Hristian Kirtchev - - * sem_prag.adb (Check_Mode): Ensure that a - self-referential output appears in both input and output lists of - the subprogram as categorized by aspect Global. - (Check_Usage): Rename formal parameters to better illustrate their - function. Update all uses of the said formals. - -2013-04-23 Thomas Quinot - - * exp_util.adb, exp_util.ads (Fully_Qualified_Name_String): New - parameter Append_NUL to make NUL-termination optional. - * exp_dist.adb: Consistently use the above throughout instead of - Get_Library_Unit_Name_String. - -2013-04-23 Robert Dewar - - * sem_util.adb, sem_res.adb, prj-tree.adb, prj-tree.ads: Minor - reformatting. - -2013-04-23 Pascal Obry - - * xoscons.adb: Remove unused use clause, minor code clean-up. - -2013-04-23 Ed Schonberg - - * sem_util.ads, sem_util.adb: Code cleanup for Is_Expression_Function - (can apply to any scope entity). - * sem_res.adb (Resolve_Call): If the call is within another - expression function it does not constitute a freeze point. - -2013-04-23 Yannick Moy - - * exp_ch6.adb (Expand_Actuals): Test that Subp - is overloadable before testing if it's an inherited operation. - -2013-04-23 Robert Dewar - - * a-envvar.adb, a-envvar.ads, exp_util.adb, sem_ch12.adb: Minor - reformatting. - -2013-04-23 Ed Schonberg - - * sem_ch3.adb (Analyze_Object_Declarations): Undo previous patch. - * exp_util.adb (Expand_Subtype_From_Expr): If the expression - is a source entity and the declaration is for an aliased - unconstrained array, create a new subtype so that the flag - Is_Constr_Subt_For_UN_Aliased does not pollute other entities. - -2013-04-23 Hristian Kirtchev - - * aspects.adb: Move tables Base_Aspect and Inherited_Aspect - from the spec to the body. - (Find_Aspect): Update the call to Get_Aspect_Id. - (Get_Aspect_Id): New version that takes an aspect specification. - * aspects.ads: Reorganize all aspect related tables. - (Get_Aspect_Id): New version that takes an aspect specification. - * par_sco.adb (Traverse_Aspects): Update the call to Get_Aspect_Id. - * sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Update - the call to Get_Aspect_Id. - * sem_ch13.adb (Analyze_Aspect_At_Freeze_Point): Update the - call to Get_Aspect_Id. (Analyze_Aspect_Specifications): Update - the call to Get_Aspect_Id. Update the call to Impl_Defined_Aspect. - -2013-04-23 Robert Dewar - - * sem_prag.adb (Fix_Error): Rewrite to do more accurate job - of getting proper name in the case where pragma comes from - aspect. - * sem_ch3.adb, sinfo.ads, par-ch6.adb, exp_ch6.adb: Minor reformatting. - -2013-04-23 Yannick Moy - - * sem_ch6.adb (Process_PPCs): Do not filter postconditions based on - applicable policy. - -2013-04-23 Thomas Quinot - - * par_sco.adb (Traverse_Aux_Decls): Minor code reorganization. - -2013-04-23 Doug Rupp - - * init.c: Move facility macros outside IN_RTS. - -2013-04-23 Thomas Quinot - - * freeze.adb (Freeze_Entity): For the case of a bit-packed - array time that is known at compile time to have more that - Integer'Last+1 elements, issue an error, since such arrays are - not supported. - -2013-04-23 Hristian Kirtchev - - * sem_prag.adb (Analyze_Dependency_Clause): Update all calls to - Analyze_Input_Output. - (Analyze_Input_List): Update all calls to Analyze_Input_Output. - (Analyze_Input_Output): Add formal parameter Self_Ref along with - comment on its usage. Update all calls to Analyze_Input_Output. - (Analyze_Pragma): Add new local variable Self_Ref to capture - the presence of a self-referential dependency clause. Update - all calls to Analyze_Input_Output. - (Check_Mode): Add formal parameter Self_Ref along with comment on its - usage. Verify the legality of a self-referential output. - -2013-04-23 Ed Schonberg - - * exp_ch6.adb: Add predicate checks on by-copy parameter. - -2013-04-23 Vincent Celier - - * a-envvar.adb, a-envvar.ads (Value): New. - -2013-04-22 Yannick Moy - - * exp_prag.adb (Expand_Pragma_Loop_Variant): Rewrite pragma as - null statement if ignored. - * sem_ch6.adb (Expand_Contract_Cases): Do nothing if pragma is ignored. - * sem_prag.adb (Analyze_Pragma): Keep analyzing ignored pragmas. - -2013-04-22 Hristian Kirtchev - - * sem_prag.adb (Analyze_Contract_Case): New routine. - (Analyze_Pragma): Aspect/pragma Contract_Cases can - now be associated with a library level subprogram. - Add circuitry to detect illegal uses of aspect/pragma Contract_Cases - in a subprogram body. - (Chain_Contract_Cases): Rename formal parameter Subp_Decl to - Subp_Id. Remove local constant Subp. The entity of the subprogram - is now obtained via the formal paramter. - -2013-04-22 Ed Schonberg - - * sem_ch3.adb (Analyze_Object_Declaration): Do not set - Is_Constr_Subt_For_Unc_Aliased on the subtype of the expression, - if the expression is a source entity. - -2013-04-22 Yannick Moy - - * exp_prag.adb, sinfo.ads, sem_prag.ads: Minor correction of typos in - comments. - * sem_ch6.adb (Expand_Contract_Cases): Add location to message. - -2013-04-22 Thomas Quinot - - * sem_prag.adb (Fix_Error): For a pragma rewritten from another - pragma, fix up error message to include original pragma name. - * par_sco.adb: Minor reformatting. - -2013-04-22 Robert Dewar - - * sem_prag.adb, sem_util.adb, sem_util.ads, sem_res.adb, exp_ch6.adb, - sem_ch6.adb, opt.ads: Minor reformatting. - -2013-04-22 Pascal Obry - - * gnat_ugn.texi, prj-nmsc.adb, projects.texi: Add check for - Library_Standalone and Library_Kind. - -2013-04-22 Ed Schonberg - - * exp_ch6.adb (Expand_Actuals): If the call is to an - inherited operation and the actual is a by-reference type with - predicates, add predicate call to post-call actions. - * sem_util.adb (Is_Inherited_Operation_For_Type): Fix coding - error: a type declaration has a defining identifier, not an Etype. - * sem_res.adb: Restore code removed because of above error. - -2013-04-22 Doug Rupp - - * init.c (__gnat_handle_vms_condition): Also match C$_SIGINT. - -2013-04-22 Yannick Moy - - * gnat_rm.texi, exp_util.adb, sem_prag.adb, sem_prag.ads, par-ch2.adb, - opt.ads, sem_ch13.adb: Minor correction of typos in comments/doc. - -2013-04-22 Vincent Celier - - * prj-nmsc.adb (Check_Library_Attributes): Set Library_Dir to - No_Path_Information only when Directories_Must_Exist_In_Projects - is False. - (Get_Directories): Set Object_Directory - or Exec_Directory to No_Path_Information only when - Directories_Must_Exist_In_Projects is False. - -2013-04-22 Yannick Moy - - * par-prag.adb, sem_attr.adb, sem_ch6.adb, sem_prag.adb, sem_warn.adb, - snames.ads-tmpl, sinfo.ads, sem_util.ads: Remove all references to - Pragma_Contract_Case and Name_Contract_Case. - -2013-04-22 Yannick Moy - - * aspects.ads, aspects.adb, sem_ch13.adb: Removal of references to - Contract_Case. - * gnat_ugn.texi, gnat_rm.texi Description of Contract_Case replaced by - description of Contract_Cases. - -2013-04-12 Robert Dewar - - * makeutl.adb, prj-nmsc.adb: Minor reformatting. - -2013-04-12 Robert Dewar - - * exp_util.adb (Make_Invariant_Call): Use Check_Kind instead - of Check_Enabled. - * gnat_rm.texi (Check_Policy): Update documentation for new - Check_Policy syntax. - * sem_prag.adb (Check_Kind): Replaces Check_Enabled - (Analyze_Pragma, case Check_Policy): Rework to accomodate new - syntax (like Assertion_Policy). - * sem_prag.ads (Check_Kind): Replaces Check_Enabled. - -2013-04-12 Doug Rupp - - * init.c (SS$_CONTROLC, SS$_CONTINUE) [VMS]: New macros. - (__gnat_handle_vms_condition) [VMS]: Dispatch on the Crtl/C user - handler if installed. - * ctrl_c.c (__gnat_install_int_handler) - [VMS]: Install a dummy sigaction handler to trigger the real - user handler dispatch in init.c/__gnat_handle_vms_condition. - (__gnat_uninstall_int_handler) [VMS]: Likewise. - -2013-04-12 Vincent Celier - - * clean.adb (Parse_Cmd_Line): Set Directories_Must_Exist_In_Projects - to False if switch is specified. - * makeutl.adb (Initialize_Source_Record): Do not look for the - object file if there is no object directory. - * opt.ads (Directories_Must_Exist_In_Projects): New Boolean - variable, defaulted to True. - * prj-nmsc.adb (Check_Library_Attributes): Do not fail if library - directory does not exist when Directories_Must_Exist_In_Projects is - False. - (Get_Directories): Do not fail when the object or the exec directory - do not exist when Directories_Must_Exist_In_Projects is False. - -2013-04-12 Robert Dewar - - * namet.adb, namet.ads: Minor addition (7 arg version of Nam_In). - * exp_prag.adb, sem_ch3.adb, sem_intr.adb, sem_type.adb, exp_util.adb, - sem_aux.adb, exp_ch9.adb, sem_ch7.adb, sem_ch10.adb, sem_prag.adb, - par-ch2.adb, tbuild.adb, rtsfind.adb, freeze.adb, sem_util.adb, - sem_res.adb, sem_attr.adb, exp_ch2.adb, prj-makr.adb, sem_elab.adb, - exp_ch4.adb, sem_ch4.adb, sem_mech.adb, sem_ch6.adb, par-prag.adb, - prj-nmsc.adb, exp_disp.adb, sem_ch8.adb, sem_warn.adb, par-util.adb, - sem_eval.adb, exp_intr.adb, sem_ch13.adb, exp_cg.adb, lib-xref.adb, - sem_disp.adb, exp_ch3.adb: Minor code reorganization (use Nam_In). - -2013-04-12 Doug Rupp - - * init.c: Don't clobber condition code on VMS. - -2013-04-12 Robert Dewar - - * exp_aggr.adb: Minor reformatting. - * namet.ads, namet.adb (Nam_In): New functions. - -2013-04-12 Robert Dewar - - * einfo.adb (Has_Dynamic_Predicate_Aspect): New flag. - (Has_Static_Predicate_Aspect): New flag. - * einfo.ads (Has_Dynamic_Predicate_Aspect): New flag. - (Has_Static_Predicate_Aspect): New flag. - * exp_ch9.adb: Minor reformatting. - * exp_util.adb (Make_Invariant_Call): Check_Enabled now handles - synonyms. - * gnat1drv.adb: Remove setting of Debug_Pragmas_Enabled, - since this switch is gone and control of Debug is done with - Assertions_Enabled. - * gnat_rm.texi: Update documentation for Assertion_Policy and - Check_Policy pragmas. - * opt.adb (Debug_Pragmas_Disabled[_Config]): Removed - (Debug_Pragmas_Enabled[_Config]): Removed Since debug now - controlled by Assertion_Enabled. - * opt.ads (Debug_Pragmas_Disabled[_Config]): Removed - (Debug_Pragmas_Enabled[_Config]): Removed Since debug now - controlled by Assertion_Enabled. - * par-ch2.adb (Scan_Pragma_Argument_Association): Allow new - 'Class forms. - * sem_attr.adb: Minor reformatting. - * sem_ch13.adb (Analyze_Aspect_Specification): Disable aspect - if DISABLE policy applies. - * sem_ch6.adb (Grab_PPC): Check original name of aspect for - aspect from pragma (Process_PPCs): Properly check assertion policy. - * sem_prag.adb (Check_Enabled): Rewritten for new Assertion_Policy - (Check_Appicable_Policy): New procedure. - (Is_Valid_Assertion_Kind): New function. - (Rewrite_Assertion_Kind): New procedure. - (Analyze_Pragma): Handle case of disabled assertion pragma. - (Analyze_Pragma, case Assertion_Policy): Rewritten for Ada 2012. - (Analyze_Pragma, case Check): Deal with 'Class possibilities. - (Analyze_Pragma, case Check_Policy): Deal with 'Class possibilities. - (Analyze_Pragma, case Contract_Class): New handling of ignored pragma. - (Analyze_Pragma, case Debug): New control with Assertion_Policy. - (Analyze_Pragma, case Debug_Policy): Now consistent with - Assertion_Policy. - (Analyze_Pragma, case Loop_Invariant): New handling of ignored - pragma. - (Analyze_Pragma, case Loop_Variant): New handling of ignored pragma. - (Analyze_Pragma, case Precondition): Use proper name for Check pragma. - (Analyze_Pragma, case Check_Enabled): Rewritten for new policy stuff. - * sem_prag.ads (Check_Enabled): Rewritten for new - Assertion_Policy stuff. - (Check_Appicable_Policy): New procedure. - * sinfo.adb (Is_Disabled): New flag. - (Is_Ignored): New flag. - * sinfo.ads (Is_Disabled): New flag. - (Is_Ignored): New flag. - (N_Pragma_Argument_Association): New 'Class forms. - * snames.ads-tmpl: New names Name_uPre, Name_uPost, - Name_uType_Invariant, Name_uInvariant. - * switch-c.adb: Remove setting of Debug_Pragmas_Enabled for -gnata. - * tree_io.ads (ASIS_Version_Number): Updated (remove - read write of obsolete flags Debug_Pragmas_Disabled and - Debug_Pragmas_Enabled. - -2013-04-12 Ed Schonberg - - * exp_aggr.adb (Get_Explicit_Discriminant_Value): Subsidiary - of Build_Record_Aggr_Code, used to retrieve explicit values - for inherited discriminants in an extension aggregate, when the - ancestor type is unconstrained. - -2013-04-12 Ed Schonberg - - * sem_attr.adb (Check_Stream_Attribute): If restriction - No_Default_Stream_Attributes is active, it is illegal to use a - predefined elementary type stream attribute either by itself, - or more importantly as part of the attribute subprogram for a - composite type. However, if the broader restriction No_Streams - is active, then stream operations are not generated, and there - is no error. - -2013-04-12 Robert Dewar - - * gnatbind.adb: Minor reformatting. - -2013-04-12 Bob Duff - - * sem_attr.adb (Analyze_Access_Attribute): Treat P'Access like a - call only in the static elaboration model. - -2013-04-12 Hristian Kirtchev - - * sem_prag.adb (Analyze_Input_List): Detect an illegal dependency - clause where both input and output lists are null. - (Analyze_Pragma): Update the grammar of pragma Depends. - -2013-04-12 Vincent Celier - - * gnatbind.adb (No_Restriction_List): Exclude restrictions that - take a parameter value, not a count. - * prj.ads, prj.adb (Remove_All_Restricted_Languages): New procedure. - * projects.texi: Complete documentation of attribute Roots. - -2013-04-12 Thomas Quinot - - * exp_ch3.adb, exp_util.ads, checks.adb, freeze.adb, sem_attr.adb, - sem_ch3.adb: Minor reformatting. - * exp_ch4.adb (Size_In_Storage_Elements): Minor documentation - improvement: note that the computation is pessimistic for bit - packed arrays. - * gnat_rm.texi (Range_Length): Fix minor error in description - of attribute. - -2013-04-12 Hristian Kirtchev - - * aspects.adb (Find_Aspect): New routine. - (Find_Value_Of_Aspect): New routine. - (Has_Aspect): Reimplemented. - * aspects.ads (Find_Aspect): New routine. - (Find_Value_Of_Aspect): New routine, previously known as Find_Aspect. - * exp_ch5.adb (Expand_Iterator_Loop): Update the call to Find_Aspect. - * exp_util.adb (Is_Iterated_Container): Update the call to Find_Aspect. - * sem_ch4.adb (Try_Container_Indexing): Update calls to Find_Aspect. - * sem_ch5.adb (Analyze_Iterator_Specification): Update - the call to Find_Aspect. Use function Has_Aspect for better - readability. - (Preanalyze_Range): Use function Has_Aspect for better readability. - * sem_ch13.adb (Check_One_Function): Update the call to Find_Aspect. - * sem_prag.adb (Analyze_Pragma): There is no longer need to - look at the parent to extract the corresponding pragma for - aspect Global. - -2013-04-12 Robert Dewar - - * checks.adb, sem_elab.adb, repinfo.adb, sem_ch4.adb, restrict.adb, - restrict.ads: Minor reformatting. - -2013-04-12 Ed Schonberg - - * lib-xref.adb: Retrieve original name of classwide type if any. - -2013-04-12 Thomas Quinot - - * exp_ch11.ads: Minor reformatting. - -2013-04-12 Hristian Kirtchev - - * aspects.adb: Alphabetize subprogram bodies in this unit. Add - an entry for Aspect_Ghost in the table of canonical aspects. - (Has_Aspect): New routine. - * aspects.ads: Add Aspect_Ghost to all relevant - tables. Alphabetize subprograms in this unit. - (Has_Aspect): New routine. - * einfo.adb: Add with and use clauses for Aspects. - (Is_Ghost_Function): New routine. - * einfo.ads: Add new synthesized attribute Is_Ghost_Function and - update the structure of the related nodes. - (Is_Ghost_Function): New routine. - * exp_ch4.adb (Find_Enclosing_Context): Use routine - Is_Body_Or_Package_Declaration to terminate a search. - (Is_Body_Or_Unit): Removed. - * exp_util.adb (Within_Case_Or_If_Expression): Use routine - Is_Body_Or_Package_Declaration to terminate a search. - * par-prag.adb: Add pragma Ghost to the list of pragmas that do - not need special processing by the parser. - * sem_attr.adb (Analyze_Access_Attribute): Detect an - illegal use of 'Access where the prefix is a ghost function. - (Analyze_Attribute): Use routine Is_Body_Or_Package_Declaration - to terminate a search. (Check_References_In_Prefix): Use routine - Is_Body_Or_Package_Declaration to terminate a search. - * sem_ch4.adb (Analyze_Call): Mark a function when it appears - inside an assertion expression. Verify the legality of a call - to a ghost function. - (Check_Ghost_Function_Call): New routine. - * sem_ch6.adb (Analyze_Function_Call): Code reformatting. Move - the setting of attribute In_Assertion_Expression to Analyze_Call. - (Check_Overriding_Indicator): Detect an illegal attempt to - override a function with a ghost function. - * sem_ch12.adb (Preanalyze_Actuals): Detect an illegal use of - a ghost function as a generic actual. - * sem_elab.adb (Check_Internal_Call_Continue): Update the call - to In_Assertion. - * sem_prag.adb: Add an entry for pragma Ghost in the table - of significant arguments. - (Analyze_Pragma): Do not analyze - an "others" case guard. Add processing for pragma Ghost. Use - Preanalyze_Assert_Expression when analyzing the expression of - pragmas Loop_Invariant and Loop_Variant. - * sem_util.adb (Get_Subprogram_Entity): Reimplemented. - (Is_Body_Or_Package_Declaration): New routine. - * sem_util.ads: Alphabetize subprotrams in this unit. - (Is_Body_Or_Package_Declaration): New routine. - * sinfo.adb (In_Assertion): Rename to In_Assertion_Expression. - (Set_In_Assertion): Rename to Set_In_Assertion_Expression. - * sinfo.ads: Rename flag In_Assertion to In_Assertion_Expression - to better reflect its use. Update all places that mention the flag. - (In_Assertion): Rename to In_Assertion_Expression. Update - related pragma Inline. (Set_In_Assertion): Rename to - Set_In_Assertion_Expression. Update related pragma Inline. - * snames.ads-tmpl: Add new predefined name Ghost. Add new pragma - id Pragma_Ghost. - -2013-04-12 Arnaud Charlet - - * sem_prag.adb (Set_Imported): Do not generate error for multiple - Import in CodePeer mode. - * s-rident.ads: Fix minor typo. - -2013-04-12 Ed Schonberg - - * checks.adb (Insert_Valid_Check): Do not insert validity check - in the body of the generated predicate function, to prevent - infinite recursion. - -2013-04-12 Ed Schonberg - - * s-rident.ads: Add various missing Ada 2012 restrictions: - No_Access_Parameter_Allocators, No_Coextensions, - No_Use_Of_Attribute, No_Use_Of_Pragma. - * snames.ads-tmpl: Add corresponding names. - * restrict.ads restrict.adb: Subprograms and data structures to - handle aspects No_Use_Of_Attribute and No_Use_Of_Pragma. - * sem_ch4.adb: Correct name of restrictions is - No_Standard_Allocators_After_Elaboration. - * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Check - violation of restriction No_Use_Of_Attribute. - * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): - Set restrictions No_Use_Of_Pragma and No_Use_Of_Attribute. - (Analyze_Pragma): Check violation of restriction No_Use_Of_Pragma. - * sem_res.adb: Check restrictions No_Access_Parameter_Allocators - and No_Coextensions. - * bcheck.adb: Correct name of restrictions is - No_Standard_Allocators_After_Elaboration. - * gnatbind.adb: Correct name of restrictions is - No_Standard_Allocators_After_Elaboration. - -2013-04-12 Hristian Kirtchev - - * sem_prag.adb (Analyze_Pragma, (Check_Mode_Restriction_In_Function): - Correct error message format. - -2013-04-12 Robert Dewar - - * sem_attr.adb: Minor reformatting. - -2013-04-12 Ed Schonberg - - * sem_elab.adb (Within_Elaborate_All): Do not examine a context - item that has not been analyzed, because the unit may have errors, - or the context item may come from a proper unit inserted at the - point of a stub and not analyzed yet. - -2013-04-12 Thomas Quinot - - * gnat1drv.adb, repinfo.adb, repinfo.ads (Repinfo.List_Array_Info, - List_Record_Info): Also include scalar storage order information in - output. - -2013-04-12 Yannick Moy - - * sem_ch6.adb (Process_Contract_Cases): Update code to apply to - Contract_Cases instead of Contract_Case pragma. - -2013-04-12 Robert Dewar - - * a-cfdlli.ads, g-socket.adb, s-fileio.adb: Minor reformatting. - -2013-04-12 Yannick Moy - - * sem_attr.adb (Analyze_Attribute): Update analyse of - Attribute_Old and Attribute_Result so they are allowed in the - right-hand-side of an association in a Contract_Cases pragma. - * sem_prag.adb (Analyze_CTC_In_Decl_Part): Add pre-analysis of - the expressions in a Contract_Cases pragma. - -2013-04-12 Robert Dewar - - * sem.ads, opt.ads: Minor comment edits. - * sem_warn.adb, sem_ch6.adb: Minor reformatting. - -2013-04-12 Claire Dross - - * a-cfdlli.adb a-cfdlli.ads (List, Not_No_Element, Iterate, - Reverse_Iterate, Query_Element, Update_Element, Read, Write): Removed, - not suitable for formal analysis. - -2013-04-12 Ed Schonberg - - * sem_prag.adb (Analyze_Abstract_State): Use Defining entity - to locate package entity, which may be a child unit. - -2013-04-12 Thomas Quinot - - * g-socket.adb, g-socket.ads (Connect_Socket, version with timeout): If - the specified timeout is 0, do not attempt to determine whether the - connection succeeded. - -2013-04-12 Doug Rupp - - * s-fileio.adb (Form_RMS Context_Key): Fix some thinkos. - -2013-04-12 Doug Rupp - - * s-fileio.adb: Minor reformatting. - -2013-04-12 Ed Schonberg - - * sem_warn.adb (Check_Infinite_Loop_Warning): Do not warn if - the last statement in the analyzed loop is an unconditional - exit statement. - -2013-04-12 Robert Dewar - - * opt.ads (Style_Check_Main): New switch. - * sem.adb (Semantics): Set Style_Check flag properly for new - unit to be analyzed. - * sem_ch10.adb (Analyze_With_Clause): Don't reset Style_Check, - the proper setting of this flag is now part of the Semantics - procedure. - * switch-c.adb (Scan_Front_End_Switches): Set Style_Check_Main - for -gnatg and -gnaty - -2013-04-12 Doug Rupp - - * s-crtl.ads (fopen, freopen): Add vms_form parameter - * i-cstrea.ads (fopen, freopen): Likewise. - * adaint.h (__gnat_fopen, __gnat_freopen): Likewise. - * adaint.c (__gnat_fopen, __gnat_freopen): Likewise. - [VMS]: Split out RMS keys and call CRTL function appropriately. - * s-fileio.adb (Form_VMS_RMS_Keys, Form_RMS_Context_Key): New - subprograms. - (Open, Reset): Call Form_VMS_RMS_Keys. Call fopen,freopen with - vms_form - * gnat_rm.texi: Document implemented RMS keys. - -2013-04-12 Hristian Kirtchev - - * sem_ch13.adb (Analyze_Aspect_Specifications): - Insert the corresponding pragma for aspect Abstract_State at - the top of the visible declarations of the related package. - Previously this was only done when the package is a compilation - unit. - -2013-04-12 Arnaud Charlet - - * gnat_ugn.texi: Further menu clean ups. - * sem_prag.adb, opt.ads: Minor reformatting. - * sem_util.ads: Minor comment fix. - -2013-04-12 Hristian Kirtchev - - * sem_ch13.adb (Analyze_Aspect_Specifications): Aspect - Depends is now a delayed aspect. The delay is required - due to the interplay between aspects Depends and Global. - (Check_Aspect_At_Freeze_Point): Add an entry for aspect Depends. - * sem_prag.adb: Reformat various error messages. - (Add_Item): New subsidiary routine. - (Analyze_Pragma): Add new variables - Global_Seen, Result_Seen, Subp_Inputs and Subp_Outputs. The - analysis of pragma Depends now has the capability to check - the proper mode and usage of subprogram inputs and outputs. - (Appears_In): New routine. - (Check_Function_Return): New routine. - (Check_Mode): New routine. - (Check_Usage): New routine. - (Collect_Subprogram_Inputs_Outputs): New routine. - -2013-04-12 Bob Duff - - * par-ch7.adb (P_Package): Initialize Sloc in the newly-pushed scope - stack entry. - -2013-04-12 Robert Dewar - - * switch-c.adb: Minor fix to wording of error message for - -gnatet/eT. - -2013-04-12 Robert Dewar - - * impunit.adb: Add s-multip and s-mudido to list of impl defined - system units. - * gnat_rm.texi: Add documentation for - System.Multiprocessors[.Dispatching_Domains]. - -2013-04-12 Ben Brosgol - - * gnat_ugn.texi: Completion of menu cleanups. - -2013-04-12 Arnaud Charlet - - * sem_prag.adb (Diagnose_Multiple_Pragmas): Relax the rules - in Relaxed_RM_Semantics. - -2013-04-12 Arnaud Charlet - - * set_targ.adb (elab code): Add support for non gcc back-ends - where save_argv is null. - -2013-04-12 Robert Dewar - - * gnat1drv.adb (Gnat1drv): Test Target_Dependent_Info_Write_Name. - * opt.ads (Target_Dependent_Info_Read): Add _Name, now an access - type (Target_Dependent_Info_Write): Add _Name, now an access type. - * set_targ.adb (Write_Target_Dependent_Values): Use name - from -gnatet switch stored in Target_Dependent_Info_Write_Name - (Read_Target_Dependent_Values): Use name from -gnateT switch - stored in Target_Dependent_Info_Read_Name. - * switch-c.adb: New form of -gnatet and -gnateT switches. - * usage.adb: New form of -gnatet and -gnateT switches with - file name. - -2013-04-11 Eric Botcazou - - * gcc-interface/decl.c (elaborate_expression_1): Skip only constant - arithmetics when looking for a read-only variable in the expression. - -2013-04-11 Javier Miranda - - * check.ads, exp_ch6.adb (Install_Null_Excluding_Check): No check in - interface thunks since it is performed at the caller side. - (Expand_Simple_Function_Return): No accessibility check needed in thunks - since the check is done by the target routine. - -2013-04-11 Ed Schonberg - - * sem_prag.adb (Analyze_Pragma, case Priority): pre-analyze - expression with type Any_Priority. - * exp_ch9.adb (Initialize_Protection): Check that the value - of the priority expression is within the bounds of the proper - priority type. - -2013-04-11 Robert Dewar - - * sem_prag.adb, prj-env.adb: Minor reformatting. - -2013-04-11 Ben Brosgol - - * gnat_ugn.texi: Clean ups. - -2013-04-11 Yannick Moy - - * set_targ.adb: Minor comment update. - -2013-04-11 Pascal Obry - - * gnat_ugn.texi: Remove obsolete comment about DLL calling - convention. - -2013-04-11 Javier Miranda - - * exp_ch6.adb (Expand_Call): For the call to the target primitive - of an interface thunks do not compute the extra actuals; just - propagate the extra actuals received by the thunk. - * exp_disp.adb (Expand_Interface_Thunk): Decorate new attribute - Thunk_Entity. - * sem_ch6.adb (Create_Extra_Formals): Do not generate extra - formals in interface thunks whose target primitive has no extra - formals. - -2013-04-11 Hristian Kirtchev - - * sem_prag.adb (Analyze_Pragma): Detect - a renaming by looking at the Renamed_Object attribute. - (Is_Renaming): Removed. - -2013-04-11 Vincent Celier - - * prj-env.adb (Initialize_Default_Project_Path): Take - into account a project path file, specified by environment - variable GPR_PROJECT_PATH_FILE, before taking into account - GPR_PROJECT_PATH. - * projects.texi: Add documentation for GPR_PROJECT_PATH_FILE - -2013-04-11 Ed Schonberg - - * a-cdlili.adb, a-cdlili.ads, a-cihama.adb, a-cihama.ads, a-coinve.adb, - a-coinve.ads, a-ciorse.adb, a-ciorse.ads, a-coorma.adb, a-coorma.ads, - a-cfdlli.adb, a-cfdlli.ads, a-cborma.adb, a-cborma.ads, a-cidlli.adb, - a-cidlli.ads, a-ciormu.adb, a-ciormu.ads, a-cihase.adb, a-cihase.ads, - a-cohama.adb, a-cohama.ads, a-coorse.adb, a-coorse.ads, a-cbhama.adb, - a-cbhama.ads, a-cborse.adb, a-cborse.ads, a-ciorma.adb, a-cobove.adb, - a-ciorma.ads, a-cobove.ads, a-coormu.adb, a-coormu.ads, a-cohase.adb, - a-cohase.ads, a-cbdlli.adb, a-cbdlli.ads, a-cbhase.adb, a-cbhase.ads: - Move Iterator operations from body to private part of spec. - -2013-04-11 Eric Botcazou - - * ttypes.ads, get_targ.ads: More minor rewording of comments. - -2013-04-11 Johannes Kanig - - * debug.adb: Document use of switch -gnatd.Z. - -2013-04-11 Hristian Kirtchev - - * sem_prag.adb (Analyze_Pragma): Both pragma Depends and Global can now - support renamings of entire objects. Legal renamings are replaced by - the object they rename. - (Is_Renaming): New routine. - -2013-04-11 Yannick Moy - - * set_targ.adb, opt.ads: Minor changes in comments. - -2013-04-11 Ben Brosgol - - * gnat_ugn.texi: Minor clean ups. - -2013-04-11 Robert Dewar - - * nlists.ads, nlists.adb, treepr.adb, treepr.ads: Move debugging - function p from Nlists to Treepr. - -2013-04-11 Ed Schonberg - - * sem_disp.adb (Check_Dispatching_Context): If the context is - a contract for a null procedure defer error reporting until - postcondition body is created. - * exp_ch13.adb (Expand_N_Freeze_Entity): If the entity is a - null procedure, complete the analysis of its contracts so that - calls within classwide conditions are properly rewritten as - dispatching calls. - -2013-04-11 Thomas Quinot - - * sem_ch10.adb, sem_ch12.adb: Minor reformatting. - -2013-04-11 Robert Dewar - - * exp_attr.adb, sem_res.adb, sem_attr.adb: Minor reformatting. - -2013-04-11 Robert Dewar - - * atree.adb, atree.ads (Node31): New function. - (Set_Node31): New procedure. - -2013-04-11 Robert Dewar - - * errout.ads: Minor typo correction. - -2013-04-11 Javier Miranda - - * einfo.ad[sb] (Thunk_Entity/Set_Thunk_Entity): New attribute. - -2013-04-11 Robert Dewar - - * back_end.adb (Register_Back_End_Types): Moved to Get_Targ - * back_end.ads (C_String): Moved to Get_Targ - (Register_Type_Proc): Moved to Get_Targ (Register_Back_End_Types): - Moved to Get_Targ. - * cstand.adb (Register_Float_Type): New interface - (Create_Back_End_Float_Types): Use entries in FPT_Mode_Table. - * get_targ.adb (Register_Back_End_Types): Moved here from - Back_End. - * get_targ.ads (C_String): Moved here from Back_End - (Register_Type_Proc): Moved here from Back_End - (Register_Back_End_Types): here from Back_End. - * gnat1drv.adb (GGnat11drv): Add call to - Write_Target_Dependent_Values; - * lib-writ.ads, lib-writ.adb (Write_ALI): Remove section writing - obsolete target dependent info. - * opt.ads (Generate_Target_Dependent_Info): - Removed (Target_Dependent_Info_Read): New flag - (Target_Dependent_Info_Write): New flag - * output.adb: Minor comment change - * s-os_lib.ads: Minor reformatting - * set_targ.ads, set_targ.adb: Minor reformatting. - * switch-c.adb (Scan_Switches.First_Ptr): New variable - (Scan_Front_End_Switches): Check -gnatd.b, -gnateT come first - (Scan_Front_End_Switches): Handle -gnatet, -gnateT - * ttypes.ads: Remove documentation section on target dependent - info in ali file Remove four letter codes, no longer used Instead - of using Get_Targ.Get_xxx, we use Set_Targ.xxx - * usage.adb: Add usage lines for -gnatet/-gnateT - * gcc-interface/Make-lang.in: Update dependencies. - -2013-04-11 Thomas Quinot - - * sem_ch4.adb: Update documentation. - * sinfo.ads (N_Expression_With_Actions): Ditto. - -2013-04-11 Hristian Kirtchev - - * sem_ch13.adb (Analyze_Aspect_Specifications): - Add a guard to prevent the double insertion of the same aspect - into a rep item list. This previously led to a circularity. - -2013-04-11 Ed Schonberg - - * sem_attr.adb (Eval_Attribute, case 'Access): Reject attribute - reference if the prefix is the dereference of an anonymous access - to subprogram type. - * exp_attr.adb (Expand_N_Attribute_Reference, Access_Cases): Handle - properly a reference to the current instance of a protected type - from within a protected subprogram. - * sem_res.adb (Find_Unique_Access_Type): Treat - Attribute_Access_Type like Allocator_Type when resolving an - equality operator. - -2013-04-11 Arnaud Charlet - - * xgnatugn.adb: Remove obsolete comments. - -2013-04-11 Robert Dewar - - * back_end.ads, back_end.adb: Minor reformatting. - * set_targ.ads, set_targ.adb: New files. - -2013-04-11 Hristian Kirtchev - - * sem_case.adb (Check_Against_Predicate): New routine. - (Check_Choices): When the type covered by the list of choices - is a static subtype with a static predicate, check all choices - agains the predicate. - (Issue_Msg): All versions removed. - (Missing_Choice): New routines. - * sem_ch4.adb: Code and comment reformatting. - (Analyze_Case_Expression): Do not check the choices when the case - expression is being preanalyzed and the type of the expression - is a subtype with a static predicate. - (Has_Static_Predicate): New routine. - * sem_ch13.adb: Code and comment reformatting. (Build_Range): - Always build a range even if the low and hi bounds denote the - same value. This is needed by the machinery in Check_Choices. - (Build_Static_Predicate): Always build a range even if the low and - hi bounds denote the same value. This is needed by the machinery - in Check_Choices. - -2013-04-11 Robert Dewar - - * einfo.ads, sem_util.adb, exp_ch6.adb, xgnatugn.adb: Minor - reformatting. - -2013-04-11 Doug Rupp - - * gnatlink.adb: Fold program basename to lower case on VMS for - consistency. - -2013-04-11 Matthew Heaney - - * a-rbtgbo.adb (Generic_Equal): Initialize Result variable before - entering loop. - -2013-04-11 Arnaud Charlet - - * xgnatugn.adb: Remove dead code (handling of @ifset/@ifclear). - -2013-04-11 Arnaud Charlet - - * gnat_ugn.texi: Remove some use of ifset in menus. Not strictly - needed, and seems to confuse some versions of makeinfo. - -2013-04-11 Javier Miranda - - * einfo.adb (Is_Thunk): Remove assertion. - (Set_Is_Thunk): Add assertion. - * einfo.ads (Is_Thunk): Complete documentation. - * exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Code cleanup. - * exp_ch3.ad[sb] (Is_Variable_Size_Array): Moved to sem_util - (Is_Variable_Size_Record): Moved to sem_util - * exp_ch6.adb (Expand_Call): Code cleanup. - (Expand_N_Extended_Return_Statement): Code cleanup. - (Expand_Simple_Function_Return): Code cleanup. - * exp_disp.adb Remove dependency on exp_ch3 - (Expand_Interface_Thunk): Add minimum decoration needed to set - attribute Is_Thunk. - * sem_ch3.ad[sb] (Is_Constant_Bound): moved to sem_util - * sem_util.ad[sb] (Is_Constant_Bound): Moved from - sem_ch3 (Is_Variable_Size_Array): Moved from exp_ch3 - (Is_Variable_Size_Record): Moved from exp_ch3 - -2013-04-11 Javier Miranda - - * exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Do - not add cleanup actions in thunks associated with interface types. - * exp_ch3.ad[sb] (Is_Variable_Size_Record): Move declaration to - the package spec. - * exp_ch4.adb (Tagged_Conversion): Update call to - Expand_Interface_Conversion since the parameter Is_Static is no - longer needed. - * exp_ch6.adb (Expand_N_Extended_Return_Statement): Adding - assertion to ensure that interface thunks are never handled by - this routine. - (Expand_N_Simple_Function_Return): Do not rewrite this statement - as an extended return statement in interface thunks, and do not - perform copy in the secondary stack if the return statement is - located in a thunk. - * exp_disp.adb (Expand_Dispatching_Call): No longer displace - the pointer to the returned object in functions returning interface - types. - (Expand_Interface_Thunk): For functions returning interface types - displace the pointer to the returned object. - (Expand_Interface_Conversion): Remove formal - Is_Static since this subprogram can now evaluate it locally. - * sem_ch3.adb (Add_Internal_Interface_Entities): For functions - propagate the type returned by the covered interface primitive to - the internal interface entity. Needed by the thunk to generate - the code which displaces "this" to reference the corresponding - secondary dispatch table. - * sem_disp.adb (Propagate_Tag): Update call to - Expand_Interface_Conversion since the parameter Is_Static is no - longer needed. - * sem_res.adb (Resolve_Type_Conversion): Update calls to - Expand_Interface_Conversion since the parameter Is_Static is no - longer needed plus code cleanup. - -2013-04-11 Eric Botcazou - - * init.c (RETURN_ADDR_OFFSET): Delete as unused. - -2013-04-11 Robert Dewar - - * a-crbtgk.adb, a-ciorse.adb, a-crbtgo.adb, a-coorse.adb, a-rbtgbo.adb, - a-cborse.adb, a-rbtgso.adb, exp_ch3.adb: Minor reformatting. - -2013-04-11 Yannick Moy - - * exp_ch4.adb (Expand_N_Selected_Component): Do not expand - discriminant check for Unchecked_Union. - * sem_res.adb (Resolve_Selected_Component): Set flag - Do_Discriminant_Check even when expansion is not performed. - * sinfo.ads (Do_Discriminant_Check): Update documentation for the case - of Unchecked_Union. - -2013-04-11 Thomas Quinot - - * sem_ch13.adb (Same_Representation): Two types with different scalar - storage order never have the same representation. - -2013-04-11 Arnaud Charlet - - * xgnatugn.adb (Push_Conditional): Simplify handling, - no longer need to keep track of "excluding" sections. - (Currently_Excluding): Removed. - (Process_Source_File): - Set unw/vms flag so that texinfo can do the whole handling of - @ifset/@ifclear sections. Fix handling of nested @ifset/@ifclear - sections. - * gnat_ugn.texi: Add a section on performing unassisted install - on Windows. - -2013-04-11 Johannes Kanig - - * debug.adb: Document usage of -gnatd.Q switch. - -2013-04-11 Matthew Heaney - - * a-crbtgk.adb (Ceiling, Find, Floor): Adjust locks - before element comparisons. - (Generic_Conditional_Insert, Generic_Conditional_Insert_With_Hint): - Ditto. - * a-crbtgo.adb, a-rbtgbo.adb (Generic_Equal): Adjust locks before - element comparisons. - * a-rbtgso.adb (Difference, Intersection): Adjust locks - before element comparisons. - (Is_Subset, Overlap): Ditto - (Symmetric_Difference, Union): Ditto - * a-btgbso.adb (Set_Difference, Set_Intersection): Adjust locks - before element comparisons. - (Set_Subset, Set_Overlap): Ditto - (Set_Symmetric_Difference, Set_Union): Ditto - * a-coorse.adb, a-ciorse.adb, a-cborse.adb - (Update_Element_Preserving_Key): Adjust locks before element - comparisons (Replace_Element): Ditto - -2013-04-11 Pascal Obry - - * prj-attr.adb, projects.texi, snames.ads-tmpl: Remove Build_Slaves - attribute. - -2013-04-11 Ed Schonberg - - * exp_ch3.adb (Build_Equivalent_Aggregate): Subsidiary of - Expand_N_Object_Declaration, used to construct an aggregate - with static components whenever possible, so that objects of a - discriminated type can be initialized without calling the init. - proc for the type. - -2013-04-11 Vincent Celier - - * prj-makr.adb (Process_Directory): On VMS, always delete, - then recreate the temporary file with Create_Output_Text_File, - otherwise the output redirection does not work properly. - -2013-04-11 Eric Botcazou - - * urealp.ads: Fix minor typo. - -2013-04-11 Fabien Chouteau - - * cio.c (mktemp): Don't use tmpnam function from the - system on VxWorks in kernel mode. - -2013-04-11 Vincent Celier - - * make.adb (Compile): Clarify the error message reported - when gnatmake refuses to compile a runtime source. - (Start_Compile_If_Possible): Ditto. - -2013-04-11 Vincent Celier - - * gnat_ugn.texi: Add documentation about -gnatc and gnatmake. - -2013-04-11 Vincent Celier - - * switch-c.adb: Document internal switches. - * usage.adb: Remove lines for internal switches: -gnatea, -gnateO, - -gnatez and -gnateO. - -2013-04-11 Ed Schonberg - - * par-ch6.adb (P_Subprogram): Attach aspects to subprogram stub. - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Allow aspects on - subprogram stubs. - * sem_ch13.adb (Analyze_Aspect_Specifications): Analyze generated - pre/post pragmas at once before analyzing the proper body. - * sem_prag.adb (Chain_PPC): Handle pragma that comes from an - aspect on a subprogram stub. - * aspects.adb: Aspect specifications can appear on a - subprogram_Body_Stub. - -2013-04-11 Vincent Celier - - * gnatname.adb: Minor comment fix. - -2013-04-11 Vincent Celier - - * prj-makr.adb (Process_Directory): Create a new temporary - file for each invocation of the compiler, in directory pointed - by environment variable TMPDIR if it exists. - -2013-04-11 Arnaud Charlet - - * gnat_ugn.texi: Minor editing/clean ups. - -2013-04-11 Ed Schonberg - - * sem_ch6.adb (Analyze_Null_Procedure): New subprogram, mostly - extracted from Analyze_Subprogram_Declaration, to handle null - procedure declarations that in ada 2012 can be completions of - previous declarations. - -2013-04-11 Hristian Kirtchev - - * sem_prag.adb (Entity_Of): Moved to Exp_Util. - * exp_util.ads, exp_util.adb (Entity_Of): New routine. - -2013-04-11 Robert Dewar - - * g-spipat.ads: Minor comment fix. - -2013-04-11 Robert Dewar - - * sem_prag.adb, sem_util.adb, sem_res.adb, exp_ch4.adb: Minor - reformatting. - -2013-04-11 Thomas Quinot - - * exp_util.ads (Fully_Qualified_Name_String): Document that the - constructed literal is the entity name in all upper case. - -2013-04-11 Thomas Quinot - - * sem_util.adb (Set_Entity_With_Style_Check): Fix logic of - check for implementation defined identifiers. - -2013-04-11 Yannick Moy - - * checks.adb (Apply_Type_Conversion_Checks): Add an explanation - of why range check and length are put on different nodes. - * exp_ch4.adb (Apply_Type_Conversion_Checks): Remove check marks - when doing their expansion. - -2013-04-11 Ed Schonberg - - * sem_util.ads, sem_util.adb (Get_Incomplete_View_Of_Ancestor): - New function to implement the notion introduced in RM 7.3.1 - (5.2/3): in a child unit, a derived type is within the derivation - class of an ancestor declared in a parent unit, even if there - is an intermediate derivation that does not see the full view - of that ancestor. - * sem_res.adb (Valid_Conversion): if all else fails, examine if an - incomplete view of an ancestor makes a numeric conversion legal. - -2013-04-11 Ed Schonberg - - * sem_ch6.adb: in Ada2012 operators can only have in - parameters. - -2013-04-11 Vincent Celier - - * makeutl.adb (Create_Binder_Mapping_File): Do not put into - the mapping file ALI files of sources that have been replaced. - -2013-04-11 Vincent Celier - - * projects.texi: Add subsection Duplicate Sources in Projects. - -2013-04-11 Vincent Celier - - * gnat_ugn.texi: Add documentation for gnatmake switch -droot_dir/** - -2013-04-11 Arnaud Charlet - - * init.c (__gnat_install_handler): Only set up an alternate - stack when installing a signal handler for SIGSEGV. - -2013-04-11 Thomas Quinot - - * g-socket.adb (Connect_Socket, timeout version): Call - underlying connect operation directly, not through the 2-argument - Connect_Socket thick binding, in order to avoid raising a junk - exception for the EINPROGRESS return. - -2013-04-11 Robert Dewar - - * a-cdlili.adb: Minor addition of pragma Warnings (Off). - -2013-04-11 Robert Dewar - - * hostparm.ads: Minor reformatting. - -2013-04-11 Hristian Kirtchev - - * aspects.ads, aspects.adb: Add Aspect_Depends to all the relevant - tables. - * elists.ads, elists.adb (Contains): New routine. - * par-prag.adb: Pragma Depends does not need any special treatment - by the parser. - * sem_ch13.adb (Analyze_Aspect_Specifications): - Transform aspect Depends into a corresponding pragma. - (Check_Aspect_At_Freeze_Point): Aspect Depends does not need - inspection at its freeze point. - * sem_prag.adb (Analyze_Pragma): Perform analysis and - normalization of pragma Depends. Remove the use of function - Is_Duplicate_Item. Use End_Scope to uninstalle the formal - parameters of a subprogram. Add a value for pragma Depends in - table Sig_Flags. - (Is_Duplicate_Item): Removed. - * snames.ads-tmpl: Add predefined name for Depends as well as - a pragma identifier. - -2013-04-11 Arnaud Charlet - - * gnat1drv.adb: Minor code clean up. - -2013-04-11 Arnaud Charlet - - * debug.adb, sem_ch13.adb (Analyze_Enumeration_Representation_Clause): - Ignore enumeration rep clauses by default in CodePeer mode, unless - -gnatd.I is specified. - -2013-04-11 Ed Schonberg - - * sem_util.adb (Safe_To_Capture_Value): If the node belongs to - an expression that has been attached to the else_actions of an - if-expression, the capture is not safe. - -2013-04-11 Yannick Moy - - * checks.adb (Apply_Type_Conversion_Checks): Put check mark on type - conversion for arrays. - -2013-04-11 Robert Dewar - - * a-cdlili.adb, a-cidlli.adb, a-cbdlli.adb: Minor reformatting. - -2013-04-11 Johannes Kanig - - * adabkend.adb: Minor comment addition. - -2013-04-11 Matthew Heaney - - * a-cdlili.adb, a-cidlli.adb, a-cbdlli.adb ("="): Increment - lock counts before entering loop. - (Find): Ditto. - (Is_Sorted, Merge, Sort): Ditto. - (Reverse_Find): Ditto. - (Splice_Internal): Internal operation to refactor splicing logic. - (Splice): Some logic moved into Splice_Internal. - -2013-04-11 Johannes Kanig - - * adabkend.adb (Scan_Compiler_Arguments): Do not call - Set_Output_Object_File_Name in Alfa_Mode - * gnat1drv.adb (Adjust_Global_Switches): Take Alfa_Mode into account. - * opt.ads: Fix documentation. - -2013-04-11 Robert Dewar - - * sem_res.adb: Minor code reorganization and comment fixes. - * sem_type.adb: Minor reformatting. - -2013-04-11 Hristian Kirtchev - - * exp_ch4.adb (Process_Transient_Object): Add new - local variable Fin_Call. Remove and explain ??? comment. Use the - Actions of logical operators "and then" and "or else" to insert - the generated finalization call. - -2013-04-11 Eric Botcazou - - * gnat_rm.texi: Fix typo. - -2013-04-11 Ed Schonberg - - * sem_res.adb: Minor reformatting. - -2013-04-11 Robert Dewar - - * atree.h: Add declarations for Flag255-Flag289 Fix declaration - of Field30 (was wrong, but no effect, since not yet referenced by - back end) Add declarations for Field31-Field35 Add declarations - for Node31-Node35. - * einfo.ads, einfo.adb (Has_Invariants): No longer applies to - procedures. - (Has_Predicates): No longer applies to functions. - (Is_Predicate_Function): New flag. - (Is_Predicate_Function_M): New flag. - (Is_Invariant_Procedure): New flag. - (Predicate_Function_M): New function. - (Set_Predicate_Function_M): New procedure. - * exp_ch11.adb (Expand_N_Raise_Expression): Take care of special - case of appearing in predicate used for membership test. - * exp_ch3.adb (Insert_Component_Invariant_Checks): Set - Is_Invariant_Procedure flag. - * exp_ch4.adb (Expand_Op_In): Call special predicate function - that takes care of raise_expression nodes in the predicate. - * exp_util.ads, exp_util.adb (Make_Predicate_Call): Add argument Mem for - membership case. - * sem_ch13.adb (Build_Predicate_Functions): New name for - Build_Predicate_Function. Major rewrite to take care of raise - expression in predicate for membership tests. - * sem_res.adb (Resolve_Actuals): Include both predicate functions - in defense against infinite predicate function loops. - * sinfo.ads, sinfo.adb (Convert_To_Return_False): New flag. - -2013-04-11 Robert Dewar - - * sem_prag.adb: Minor reformatting. - -2013-04-11 Ed Schonberg - - * lib-xref.adb: Generate reference for component of anonymous - access type. - -2013-04-11 Robert Dewar - - * stand.ads: Minor reformatting. - -2013-04-11 Matthew Heaney - - * a-convec.adb, a-coinve.adb, a-cobove.adb ("="): Increment lock - counts before entering loop. - (Find, Find_Index): Ditto. - (Is_Sorted, Merge, Sort): Ditto. - (Reverse_Find, Reverse_Find_Index): Ditto. - -2013-04-11 Robert Dewar - - * exp_ch11.ads, exp_ch11.adb (Expand_N_Raise_Expression): New procedure. - * exp_util.adb (Insert_Actions): Add entry for N_Raise_Expression. - * expander.adb: Add call to Expand_N_Raise_Expression. - * par-ch11.adb (P_Raise_Expression): New procedure. - * par-ch4.adb (P_Relation): Handle Raise_Expression. - * par.adb (P_Raise_Expression): New procedure. - * sem.adb: Add handling for N_Raise_Expression. - * sem_ch11.ads, sem_ch11.adb (Analyze_Raise_Expression): New procedure. - * sem_res.adb (Resolve): Add handling for N_Raise_Expression. - * sinfo.ads, sinfo.adb (N_Raise_Expression): New node. - * sprint.adb (Sprint_Node_Actual): Add handling for N_Raise_Expression. - * stand.ads (Any_Type): Document use with N_Raise_Expression. - -2013-04-11 Vincent Celier - - * gnat_ugn.texi: Remove section "The Development Environments" - now that all predefined attributes are documented, including - those in package IDE. - -2013-04-11 Ed Schonberg - - * sem_ch6.adb: Preserve parent link in copy of expression. - -2013-04-11 Vincent Celier - - * projects.texi: Complete rewrite of the subsection Attributes - in section "Project file Reference". - -2013-04-11 Robert Dewar - - * exp_ch4.adb: Minor reformatting. - -2013-04-11 Robert Dewar - - * exp_ch4.adb (Expand_Concatenate): Remove wrapping in - expression-with-actions node. No longer needed given fix to - sem_prag and caused loss of some useful warnings. - * sem.ads: Minor reformatting. - * sem_prag.adb (Check_Disabled): Removed, to be replaced by not - Check_Enabled. These two routines were curiously incompatible - causing confusion. - (Analyze_Pragma, case Check): Make sure we do - not expand the string argument if the check is disabled. Avoid - use of Check_Disabled, which resulted in missing analysis in - some cases. - * sem_prag.ads (Check_Disabled): Removed, to be replaced by not - Check_Enabled. These two routines were curiously incompatible - causing confusion. - -2013-04-11 Hristian Kirtchev - - * exp_ch4.adb (Process_Transient_Object): Use - an unchecked conversion when associating a transient controlled - object with its "hook". - -2013-04-11 Ed Schonberg - - * sem_prag.adb (Analyze_Pragma, case - Preelaborable_Initialization): The pragma is legal if it comes - from an aspect on the private view of the type, even though its - analysis point takes place later at the freeze point. - -2013-04-11 Robert Dewar - - * sem_ch6.adb: Minor reformatting. - -2013-04-11 Yannick Moy - - * ali-util.adb (Read_Withed_ALIs): Do not consider it an error to - read ALI files with No_Object=True in Alfa mode. - * gnat1drv.adb: Set appropriately Back_End_Mode in Alfa mode, whether - this is during frame condition generation of translation to Why. - -2013-04-11 Robert Dewar - - * exp_ch4.adb: Minor code reorganization - * types.ads: Minor reformatting. - -2013-04-11 Johannes Kanig - - * opt.ads New global boolean Frame_Condition_Mode to avoid - referring to command line switch. - * gnat1drv.adb (Gnat1drv) set frame condition mode when -gnatd.G - is present, and disable Code generation in that case. Disable - ALI file generation when switch is *not* present. - -2013-04-11 Ed Schonberg - - * sem_ch6.adb (Analyze_Expression_Function): Perform the - pre-analysis on a copy of the expression, to prevent downstream - visbility issues involving operators and instantiations. - -2013-04-11 Johannes Kanig - - * debug.adb: Reservation and documentation for -gnatd.G switch. - * gnat1drv.adb (Adjust_Global_Switches) Take into account -gnatd.G - switch, and set ALI file generation accordingly. - -2013-04-11 Robert Dewar - - * exp_ch4.adb, exp_dist.adb: Minor reformatting. - * gnat_rm.texi, gnat_ugn.texi: -020 Add documentation clarifying that - check names introduced with pragma Check_Name are suppressed by -gnatp. - -2013-04-11 Vincent Celier - - * gnat_ugn.texi, projects.texi: Move chapter "Tools Supporting Project - Files" from projects.texi to gnat_ugn.texi. - -2013-04-11 Arnaud Charlet - - * gcc-interface/Make-lang.in: Update dependencies. - -2013-04-11 Yannick Moy - - * gnat1drv.adb (Adjust_Global_Switches): Allow missing body in Alfa - mode. - -2013-04-11 Hristian Kirtchev - - * exp_ch4.adb (Expand_N_Allocator): Detect the - allocation of an anonymous controlled object where the type of - the context is named. Use the pool and finalization master of - the named access type to allocate the object. - -2013-04-11 Vincent Celier - - * gnat_ugn.texi: Remove most mentions of gprbuild. - * projects.texi: Remove all mentions of asociative array - attributes. - -2013-04-11 Robert Dewar - - * sem_prag.adb, sem_attr.adb, gnat1drv.adb, prj-makr.adb, - opt.ads, sem_ch13.adb: Minor reformatting. - * debug.adb: Minor comment fix (remove junk .I doc). - -2013-04-11 Thomas Quinot - - * rtsfind.ads, exp_dist.adb, exp_dist.ads (Rtsfind.PCS_Version, case - PolyORB): Bump to 6. - (Exp_Dist.PolyORB_Support): Replace TC_Build with - Build_Complex_TC. - -2013-04-11 Arnaud Charlet - - * debug.adb, sem_prag.adb, par-ch2.adb, sem_attr.adb, gnat1drv.adb, - exp_disp.adb, opt.ads, sem_ch13.adb (Relaxed_RM_Semantics): New flag. - Enable this flag in CodePeer mode, and also via -gnatd.M. - Replace some uses of CodePeer_Mode by Relaxed_RM_Semantics. - -2013-04-11 Ed Schonberg - - * sem_ch8.adb (Check_Constrained_Object): If a subtype is created - from the renamed object in an object renaming declaration with - an unconstrained nominal subtype, freeze the created subtype at - once, to prevent order of elaboration issues in the backend. - -2013-04-11 Arnaud Charlet - - * exp_aggr.adb (Aggr_Size_OK): Refine setting of Max_Aggr_Size - in particular in CodePeer mode. - -2013-04-11 Vincent Celier - - * gnat_ugn.texi: Add documentation for backup copies of project - files for gnatname. - -2013-04-11 Tristan Gingold - - * gnat_rm.texi: Add Detect_BLocking in the ravenscar profile - pragma list. - -2013-04-11 Vincent Celier - - * gnatname.adb (Scan_Args): Recognize new switch --no-backup - (Usage): Add line for --no-backup. - * opt.ads (No_Backup): New Boolean variable, initialized to False. - (Ada_Version_Default): Switch to Ada 2012 by default. - * prj-makr.adb (Initialize): Create a backup for an existing - project file if gnatname is not invoked with --no-backup. - -2013-04-11 Thomas Quinot - - * exp_ch4.adb: Minor code improvement: replace various calls to - Make_If_Statement in expansion with Make_Implicit_If_Statement. - -2013-04-11 Eric Botcazou - - * ali.adb: Fix minor typo. - -2013-04-11 Thomas Quinot - - * exp_ch4.adb (Find_Enclosing_Context): Add missing case of - N_Procedure_Call_Statement. - -2013-04-11 Robert Dewar - - * debug.adb: Minor comment fix. - -2013-04-11 Johannes Kanig - - * debug.adb: Remove comment for -gnatd.G. - -2013-04-11 Thomas Quinot - - * exp_ch4.adb (Expand_Record_Equality.Suitable_Element): - Remove recursive routine, replace with... - (Expand_Record_Equality.Element_To_Compare): New subroutine, - implement iterative search for next element to compare. - Add explanatory comment in the tagged case. - -2013-04-11 Ed Schonberg - - * sem_ch5.adb: remove spurious warning from non-empty loop. - * sem_ch8.adb (Enclosing_Instance): Make public to other routines - in the package, in order to suppress redundant semantic checks - on subprogram renamings in nested instantiations. - -2013-04-11 Robert Dewar - - * errout.ads: Minor reformatting. - * sem_eval.adb (Why_Not_Static): Now issues continuation messages - (Why_Not_Static): Test for aggregates behind string literals. - * sem_eval.ads (Why_Not_Static): Now issues continuation messages. - -2013-04-11 Robert Dewar - - * exp_ch4.adb (Expand_Concatenation): Wrap expansion in - Expressions_With_Actions. - -2013-04-11 Ed Schonberg - - * sem_ch6.adb (Base_Types_Match): For an actual type in an - instance, the base type may itself be a subtype, so find true - base type to determine compatibility. - -2013-04-11 Robert Dewar - - * s-osprim-mingw.adb, sem_ch3.adb, sem_prag.adb, sem_util.adb. - makeutl.adb, sem_ch8.adb: Minor reformatting. - -2013-04-11 Vincent Celier - - * gnat_ugn.texi: Minor fixes for VMS. - * ug_words: Minor addition: -gnato? => /OVERFLOW_CHECKS=?. - -2013-04-11 Robert Dewar - - * usage.adb (Usage): Minor edit to -gnatW message - -2013-04-11 Robert Dewar - - * exp_aggr.adb (Expand_N_Aggregate): Add circuit for handling - others for string literal case. Also add big ??? comment about - this new code, which should be redundant, but is not. - * sem_eval.adb (Eval_Concatenation): Handle non-static case - properly (Eval_String_Literal): Handle non-static literal properly - -2013-03-20 Tobias Burnus - - * i-fortra.ads: Update comment, add Ada 2012's optional - Star and Kind data types for enhanced interoperability. - -2013-03-16 Eric Botcazou - - * gnatvsn.ads (Library_Version): Bump to 4.9. - -2013-03-08 Cesar Strauss - - PR ada/52123 - * seh_init.c (Raise_From_Signal_Handler): Declare as no-return. - (__gnat_SEH_error_handler): Likewise. Remove final return. - -2013-03-06 Eric Botcazou - - * gcc-interface/trans.c (Attribute_to_gnu): Abort instead of erroring - out for an unimplemented attribute. - -2013-03-06 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_field): Remove the wrapper around - a misaligned integral type if a size is specified for the field. - -2013-03-06 Eric Botcazou - - * gcc-interface/trans.c (Raise_Error_to_gnu) : - Record the unpadded type of the index type on the RCI stack. - -2013-03-06 Eric Botcazou - - * gcc-interface/trans.c (emit_range_check): Assert that the range type - is a numerical type and remove useless local variables. - -2013-02-25 Eric Botcazou - - * gcc-interface/ada-tree.h: Back out change accidentally committed. - -2013-02-21 Jakub Jelinek - - PR bootstrap/56258 - * gnat-style.texi (@title): Remove @hfill. - * projects.texi: Avoid line wrapping inside of @pxref or @xref. - -2013-02-14 Rainer Emrich - - PR target/52123 - * tracebak.c: Cast from pointer via FARPROC. - -2013-02-07 Simon Wright - - PR target/50678 - * init.c (__darwin_major_version): New function for x86-64/Darwin. - (__gnat_adjust_context_for_raise) [Darwin]: Disable the workaround - on Darwin 12 and above. - -2013-02-06 Rainer Emrich - - PR target/52123 - * adaint.c (__gnat_check_OWNER_ACL): Cast from pointer via - SECURITY_DESCRIPTOR * - (__gnat_set_OWNER_ACL): Cast from DWORD to ACCESS_MODE - (__gnat_portable_spawn): Fix cast to char* const* - (add_handle): Cast from pointer via void ** - (add_handle): Cast from pointer via int * - (__gnat_locate_exec_on_path): Cast from pointer via TCHAR * - (__gnat_locate_exec_on_path): Cast from pointer via char * - * initialize.c (append_arg): Cast from pointer via LPWSTR - (__gnat_initialize): Cast from pointer via LPWSTR - * seh_init.c (__gnat_map_SEH): Cast from pointer via FARPROC - -2013-02-06 Hristian Kirtchev - - * gcc-interface/Make-lang.in: Enable System.Stack_Checking.Operations - target pairs on VxWorks 5 only. - -2013-02-06 Arnaud Charlet - - * gcc-interface/Make-lang.in: Update dependencies. - -2013-02-06 Vincent Celier - - * prj-proc.adb (Process_Aggregated_Projects): Use a new project - node tree for each project tree rooted at an aggregated project. - -2013-02-06 Hristian Kirtchev - - * sem_util.adb (Is_Interface_Conversion): New routine. - (Object_Access_Level): Detect an interface conversion - that has been rewritten into a different construct. Use the - original form of the conversion to find the access level of - the operand. - -2013-02-06 Eric Botcazou - - * einfo.ads (Has_Pragma_No_Inline): New flag using Flag201. - (Has_Pragma_No_Inline): Declare and mark as inline. - (Set_Has_Pragma_No_Inline): Likewise. - * einfo.adb (Has_Pragma_No_Inline): New function. - (Set_Has_Pragma_No_Inline): New procedure. - (Write_Entity_Flags): Handle Has_Pragma_No_Inline. - * snames.ads-tmpl (Name_No_Inline): New pragma-related name. - (Pragma_Id): Add Pragma_No_Inline value. - * par-prag.adb (Prag): Handle Pragma_Inline. - * sem_prag.adb (Inline_Status): New enumeration type. - (Process_Inline): Change Active parameter - to Inline_Status and add support for suppressed inlining. - (Analyze_Pragma) : Adjust to above change. - : Likewise. - : Implement new pragma No_Inline. - (Sig_Flags): Add Pragma_No_Inline. - * gnat_rm.texi (Implementation Defined Pragmas): Add No_Inline. - * gnat_ugn.texi (Switches for gcc): Mention Pragma No_Inline. - -2013-02-06 Pascal Obry - - * s-osprim-mingw.adb (Clock): Make sure we copy all data locally - to avoid interleaved modifications that could happen from another - task calling Get_Base_Data. - (Get_Base_Data): Make it a critical section. Avoid updating if another - task has already done it. - -2013-02-06 Eric Botcazou - - * sem_prag.adb: Minor reformatting. - -2013-02-06 Pascal Obry - - * s-tasloc.ads: Set System.Task_Lock to preelaborate. - -2013-02-06 Eric Botcazou - - * snames.ads-tmpl (Name_Loop_Optimize, Name_No_Unroll, - Name_Unroll, Name_No_Vector, Name_Vector): New pragma-related - names. - (Pragma_Id): Add Pragma_Loop_Optimize value. - * par-prag.adb (Prag): Handle Pragma_Loop_Optimize. - * sem_prag.adb (Check_Loop_Invariant_Variant_Placement): Rename to... - (Check_Loop_Pragma_Placement): ...this. - (Analyze_Pragma) - : Adjust to above renaming. - : Likewise. - : Implement new pragma Loop_Optimize. - (Sig_Flags): Add Pragma_Loop_Optimize. - * gnat_rm.texi (Implementation Defined Pragmas): Add Loop_Optimize. - * gnat_ugn.texi (Vectorization of loops): Mention Loop_Optimize. - -2013-02-06 Robert Dewar - - * osint.ads: Minor fix of typo. - -2013-02-06 Sergey Rybin - - * gnat_ugn.texi: gnatmetric: update the documentation of - complexity metrics for Ada 2012. - -2013-02-06 Javier Miranda - - * exp_disp.adb (Make_Secondary_DT): Code cleanup: - remove useless initialization. - -2013-02-06 Ed Schonberg - - * sem_ch3.adb (Build_Discriminant_Constraints): Do not - generate overflow checks on a discriminant expression if the - discriminant constraint is applied to a private type that has - a full view, because the check will be applied when the full - view is elaborated. Removing the redundant check is not just - an optimization, but it prevents spurious assembler errors, - because of the way the backend generates names for expressions - that require overflow checking. - -2013-02-06 Pascal Obry - - * s-osprim-mingw.adb: Removes workaround for an old GNU/Linker - limitation on Windows. - (DA): Removed. - (LIA): Removed. - (LLIA): Removed. - (TFA): Removed. - (BTA): Removed. - (BMTA): Removed. - (BCA): Removed. - (BMCA): Removed. - (BTiA): Removed. - (Clock): Use variable corresponding to access. - (Get_Base_Time): Likewise. - (Monotonic_Clock): Likewise. - -2013-02-06 Vincent Celier - - * make.adb (Gnatmake): When gnatmake is called with a project - file, do not invoke gnatbind with -I-. - * makeutl.adb (Create_Binder_Mapping_File): Rewrite function. Get - the infos from all the sources. - -2013-02-06 Ed Schonberg - - * snames.ads-tmpl: Add Name_Overriding_Renamings and pragma - Overriding_Renamings. - * par-prag.adb: Recognize pragma Overriding_Renamings. - * opt.ads (Overriding_Renamings): flag to control compatibility - mode with Rational compiler, replaces Rational_Profile flag. - * sem_ch8.adb (Analyze_Subprogram_Renaming): When - Overriding_Renamings is enabled, accept renaming declarations - where the new subprogram renames and overrides a locally inherited - operation. Improve error message for some illegal renamings. - * sem_prag.adb (Analyze_Pragma): Add case for Overriding_Renamings. - (Set_Rational_Profile): The Rational_Profile enables - Overriding_Renamings, Implicit_Packing, and Use_Vads_Size. - -2013-02-06 Ed Schonberg - - * sem_util.adb: Set parent of copied aggregate component, to - prevent infinite loop. - -2013-02-06 Robert Dewar - - * sem_ch3.adb, sem_ch10.adb: Minor reformatting. - * exp_disp.adb: Minor comment update. - * comperr.ads, osint.ads, rtsfind.adb, sem_prag.adb: Minor addition of - No_Return pragmas. - -2013-02-06 Thomas Quinot - - * targparm.ads, sem_ch13.adb (Support_Nondefault_SSO): New target - parameter, defaulted to False for now, indicates targets where - non-default scalar storage order may be specified. - -2013-02-06 Thomas Quinot - - * sprint.adb (Write_Itype): Treat E_Record_Subtype_With_Private - same as E_Record_Subtype. Display E_Class_Wide_Subtype as - subtype, not type. - -2013-02-06 Hristian Kirtchev - - * sem_ch3.adb (Complete_Private_Subtype): Inherit the - Has_Unknown_Discriminants from the full view of the base type. - -2013-02-06 Tristan Gingold - - * raise-gcc.c: Remove useless includes (sys/stat.h, adaint.h) - Enclosing debugging functions within #ifndef inhibit_libc to - support builds without full C headers. - -2013-02-06 Thomas Quinot - - * gnat_rm.texi: Add a minimal example of Scalar_Storage_Order. - -2013-02-06 Hristian Kirtchev - - * sem_ch10.adb (Install_Limited_Withed_Unit): Add a missing - check to detect a parent-child relationship between two units in - order to correctly bypass the installation of a limited view. In - other words, the comment on the intended usage of the check was - correct, but the code itself did not reflect the behavior. - -2013-02-06 Javier Miranda - - * exp_ch5.adb (Expand_N_Assignment_Statement): Do not generate the - runtime check on assignment to tagged types if compiling with checks - suppressed. - -2013-02-06 Robert Dewar - - * exp_util.adb, checks.adb, sem_ch12.adb, sem_res.adb, prj-conf.adb, - s-os_lib.adb: Minor reformatting - -2013-02-06 Vincent Celier - - * ug_words: Add -gnateY = /IGNORE_STYLE_CHECKS_PRAGMAS. - -2013-02-06 Ed Schonberg - - * snames.ads-tmpl: Add Name_Rational and pragma Rational. - * par-prag.adb: Recognize pragma Rational. - * opt.ads (Rational_Profile): flag to control compatibility mode - with Rational compiler. - * sem_ch8.adb (Analyze_Subprogram_Renaming): When Rational profile - is enable, accept renaming declarations where the new subprogram - and the renamed entity have the same name. - * sem_prag.adb (analyze_pragma): Add pragma Rational, and recognize - Rational as a profile. - -2013-02-06 Hristian Kirtchev - - * exp_ch5.adb (Expand_Loop_Entry_Attributes): When - dealing with a for loop that iterates over a subtype indication - with a range, use the low and high bounds of the subtype. - -2013-02-06 Nicolas Roche - - * s-os_lib.adb (Normalize_Arguments): Arguments containing tabs should - be quoted - -2013-02-06 Vincent Celier - - * prj-conf.adb (Process_Project_And_Apply_Config): New variable - Conf_Project. New recursive procedure Check_Project to find a non - aggregate project and put its Project_Id in Conf_Project. Fails if - no such project can be found. - (Get_Or_Create_Configuration_File): New parameter Conf_Project. - (Do_Autoconf): Use project directory of project Conf_Project to store - the generated configuration project file. - * prj-conf.ads (Get_Or_Create_Configuration_File): New parameter - Conf_Project. - -2013-02-06 Javier Miranda - - * sem_res.adb (Resolve_Actuals): Generate a read - reference for out-mode parameters in the cases specified by - RM 6.4.1(12). - -2013-02-06 Hristian Kirtchev - - * sem_attr.adb (Resolve_Attribute): Do not resolve the prefix of - Loop_Entry, instead wait until the attribute has been expanded. The - delay ensures that any generated checks or temporaries are inserted - before the relocated prefix. - -2013-02-06 Ed Schonberg - - * sem_ch12.adb: Code clean up. - -2013-02-06 Ed Schonberg - - * checks.adb (Apply_Discriminant_Check): Look for discriminant - constraint in full view of private type when needed. - * sem_ch12.adb (Validate_Array_Type_Instance): Specialize - previous patch to components types that are private and without - discriminants. - -2013-02-06 Hristian Kirtchev - - * exp_ch4.adb (Find_Enclosing_Context): Recognize - a simple return statement as one of the cases that require special - processing with respect to temporary controlled function results. - (Process_Transient_Object): Do attempt to finalize a temporary - controlled function result when the associated context is - a simple return statement. Instead, leave this task to the - general finalization mechanism. - -2013-02-06 Thomas Quinot - - * einfo.ads: Minor reformatting. - (Status_Flag_Or_Transient_Decl): Add ??? comment. - -2013-02-06 Hristian Kirtchev - - * exp_ch4.adb (Expand_N_Expression_With_Actions): Rewritten. This - routine should be able to properly detect controlled transient - objects in its actions and generate the appropriate finalization - actions. - * exp_ch6.adb (Enclosing_Context): Removed. - (Expand_Ctrl_Function_Call): Remove local subprogram and - constant. Use routine Within_Case_Or_If_Expression to determine - whether the lifetime of the function result must be extended to - match that of the context. - * exp_util.ads, exp_util.adb (Within_Case_Or_If_Expression): New - routine. - -2013-02-06 Ed Schonberg - - * sem_ch12.adb (Validate_Array_Type_Instance): Extend check - for subtype matching of component type of formal array type, - to avoid spurious error when component type is a separate actual - in the instance, and there may be a discrepancy between private - and full view of component type. - -2013-02-06 Robert Dewar - - * s-dim.ads, clean.adb: Minor reformatting. - -2013-02-06 Javier Miranda - - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Undo previous patch. - (Can_Split_Unconstrained_Function): Only split the inlined function if - the compiler generates the code of its body. - -2013-02-06 Robert Dewar - - * exp_prag.adb, sem_ch3.adb, exp_attr.adb, sem_prag.adb, sem_ch6.adb, - exp_intr.adb, exp_dist.adb, sem_ch13.adb: Internal clean up for - N_Pragma nodes. - -2013-02-06 Robert Dewar - - * gnat_rm.texi: Minor text updates for pragma Warning. - -2013-02-06 Geert Bosch - - * s-multip.adb (Number_Of_CPUs): Short-circuit in case of - CPU'Last = 1. - -2013-02-06 Vincent Celier - - * clean.adb (Delete): On VMS use host notation to delete all files. - -2013-02-06 Robert Dewar - - * sem_prag.adb, sem_ch6.adb, prj-conf.adb, erroutc.adb: Minor - reformatting. - -2013-02-06 Gary Dismukes - - * sem_ch6.adb (Check_For_Primitive_Subprogram): Test for - the special case of a user-defined equality that overrides - the predefined equality of a nonderived type declared in a - declarative part. - * sem_util.adb (Collect_Primitive_Operations): Add test for - Is_Primitive when looping over the subprograms following a type, - to catch the case of primitives such as a user-defined equality, - which otherwise won't be found when the type is not a derived - type and is declared in a declarative part. - -2013-02-06 Vincent Celier - - * prj-conf.adb (Check_Target): Always return True when Target - is empty (Get_Or_Create_Configuration_File.Get_Project_Target): - New procedure to get the value of attribute Target in the main - project. - (Get_Or_Create_Configuration_File.Do_Autoconf): No - need to get the value of attribute Target in the main project. - (Get_Or_Create_Configuration_File): Call Get_Project_Target and - use the target fom this call. - -2013-02-06 Eric Botcazou - - * erroutc.adb (Validate_Specific_Warning): Do not issue the - warning about an ineffective Pragma Warnings for -Wxxx warnings. - * sem_prag.adb (Analyze_Pragma) : Accept -Wxxx warnings. - * gnat_rm.texi (Pragma Warnings): Document coordination with - warnings of the GCC back-end. - -2013-02-06 Javier Miranda - - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not build the body - of an inlined function if we do not generate code for the function. - -2013-02-06 Pascal Obry - - * s-os_lib.adb (Locate_Exec_On_Path): Call Normalize_Pathname - with Resolve_Links set to False. - -2013-02-03 Eric Botcazou - - * gcc-interface/decl.c: Include diagnostic-core.h. - (gnat_to_gnu_entity) : Sorry if Reverse_Storage_Order - is set on the entity. - : Likewise. - * gcc-interface/Make-lang.in (ada/decl.o): Add $(DIAGNOSTIC_CORE_H). - -2013-01-29 Ben Brosgol - - * gnat_rm.texi: Fixed typos. Minor edits. - -2013-01-29 Bob Duff - - * a-convec.adb: Minor reformatting. - -2013-01-29 Pascal Obry - - * tempdir.adb, tempdir.ads (Use_Temp_Dir): Set wether to use the temp - directory. - -2013-01-29 Ed Schonberg - - * exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Preserve loop - identifier only if it comes from source. - (Expand_N_Loop_Statement): If the domain of iteration is an - enumeration type with a representation clause, remove from - visibility the loop identifier before rewriting the loop as a - block with a declaration for said identifier. - * sem_util.adb (Remove_Homonym): Handle properly the default case. - -2013-01-29 Vincent Celier - - * prj-proc.adb: Minor comment spelling fix. - -2013-01-29 Pascal Obry - - * prj-proc.adb (Process_Expression_Variable_Decl): Prepend - Project_Path to current environment. - -2013-01-29 Thomas Quinot - - * sprint.adb (Sprint_Node_Actual): Output freeze nodes for - itypes even if Dump_Freeze_Null is not set. - -2013-01-29 Robert Dewar - - * sem_util.adb: Minor reformatting. - * s-rident.ads: Minor comment fixes. - -2013-01-29 Pascal Obry - - * prj-env.ads, prj-env.adb (Add_Directories): Add parameter to - control if the path is prepended or appended. - -2013-01-29 Ed Schonberg - - * sem_ch6.adb (Analyze_Expression_Function): An expression - function declaration is not a subprogram declaration, and thus - cannot appear in a protected definition. - -2013-01-29 Hristian Kirtchev - - * exp_util.adb (Insert_Actions): When new - actions come from the expression of the expression with actions, - then they must be added to the list of existing actions. - -2013-01-29 Eric Botcazou - - * sem_ch3.adb (Analyze_Subtype_Declaration) : For - the subtype of a constrained private type with discriminants - that has got a full view, show that the completion is a clone - of the full view. - -2013-01-29 Javier Miranda - - * errout.ads, errout.adb (Get_Ignore_Errors): New subprogram. - * opt.ads (Warn_On_Overlap): Update documentation. - * sem_aggr.adb (Resolve_Aggregate, Resolve_Extension_Aggregate): - Check function writable actuals. - * sem_ch3.adb (Build_Derived_Record_Type, - Record_Type_Declaration): Check function writable actuals. - * sem_ch4.adb (Analyze_Range): Check function writable actuals. - * sem_ch5.adb (Analyze_Assignment): Remove code of the initial - implementation of AI05-0144. - * sem_ch6.adb (Analyze_Function_Return, - (Analyze_Procedure_Call.Analyze_Call_And_Resolve): Remove code - of the initial implementation of AI05-0144. - * sem_res.adb (Resolve): Remove code of the initial implementation. - (Resolve_Actuals): Call Check_Function_Writable_Actuals and remove call - of the initial implementation. - (Resolve_Arithmetic_Op, Resolve_Logical_Op, - Resolve_Membership_Op): Check function writable actuals. - * sem_util.ad[sb] (Actuals_In_Call): Removed - (Check_Order_Dependence): Removed (Save_Actual): Removed - (Check_Function_Writable_Actuals): New subprogram. - * usage.adb (Usage): Update documentation. - * warnsw.adb (Set_Warning_Switch): Enable warn_on_overlap when - setting all warnings. - -2013-01-29 Robert Dewar - - * a-calend-vms.adb: Minor comment fix. - -2013-01-29 Robert Dewar - - * mlib-utl.adb, gnatlink.adb: Avoid reference to ASCII.Back_Slash - because of casing issues. - * sem_util.ads: Minor comment fix. - * style.adb (Check_Identifier): Set proper casing for entities - in ASCII. - * styleg.adb: Minor comment improvement. - * stylesw.ads (Style_Check_Standard): Fix bad comments. - -2013-01-29 Hristian Kirtchev - - * sem_prag.adb: Add the grammar for pragmas Abstract_State and Global. - (Analyze_Pragma): Push the scope of the related subprogram and install - its formals once before starting the analysis of the [moded] global - list. - -2013-01-29 Pascal Obry - - * prj-proc.adb (Process_Expression_Variable_Decl): Always handle - relative paths in Project_Path as relative to the aggregate - project location. Note that this was what was documented. - -2013-01-29 Vincent Celier - - * gnatcmd.adb: For "gnat stub -P ...", do not check the naming - scheme for Ada, when Ada is not a language for the project. - -2013-01-29 Ed Schonberg - - * sem_ch3.adb (Analyze_Subtype_Declaration): Inherit - Is_Generic_Actual_Type flag in a nested instance. - * sem_ch12.adb (Restore_Private_Views): Preserve - Is_Generic_Actual_Type flag if actual is a Generic_Actual_Type - of an enclosing instance. - * sem_util.adb (Corresponding_Generic_Type): Handle generic actual - which is an actual of an enclosing instance. - * sem_type.adb (Real_Actual): If a generic_actual_type is the - formal of an enclosing generic and thus renames the corresponding - actual, use the actual of the enclosing instance to resolve - spurious ambiguities in instantiations when two formals are - instantiated with the same actual. - -2013-01-29 Robert Dewar - - * gnat_rm.texi: Document all Ada 2005 and Ada 2012 pragmas as - being available as implementation-defined pragmas in earlier - versions of Ada. - -2013-01-29 Vincent Celier - - * clean.adb (Delete): On VMS, delete all versions of the file. - -2013-01-29 Robert Dewar - - * par-ch6.adb (No_Constraint_Maybe_Expr_Func): New procedure. - * par-util.adb (No_Constraint): Undo special handling, moved - to par-ch6.adb. - -2013-01-29 Robert Dewar - - * aspects.ads: Aspect Warnings is implementation defined Add - some other missing entries to impl-defined list Mark Warnings - as GNAT pragma in main list. - * sem_ch8.adb: Process aspects for all cases of renaming - declarations. - -2013-01-29 Robert Dewar - - * sem_ch6.adb (Analyze_Function_Call): Set In_Assertion flag. - * sem_elab.adb (Check_Internal_Call_Continue): Do not issue - warnings about possible elaboration error if call is within - an assertion. - * sinfo.ads, sinfo.adb (In_Assertion): New flag in N_Function_Call node. - -2013-01-29 Robert Dewar - - * a-calend-vms.adb, g-eacodu-vms.adb, g-trasym-vms-alpha.adb, - * s-auxdec-vms-ia64.adb, s-mastop-vms.adb, s-osprim-vms.adb, - s-tasdeb-vms.adb: Replace pragma Interface by pragma Import. - -2013-01-29 Robert Dewar - - * opt.ads (Ignore_Style_Checks_Pragmas): New flag. - * par-prag.adb (Par, case Style_Checks): Recognize - Ignore_Style_Checks_Pragmas. - * sem_prag.adb (Analyze_Pragma, case Style_Checks): Recognize - Ignore_Style_Checks_Pragmas. - * switch-c.adb: Recognize -gnateY switch. - * usage.adb: Add documentation for "-gnateY". - * vms_data.ads: Add IGNORE_STYLE_CHECKS_PRAGMAS (-gnateY). - -2013-01-29 Vincent Celier - - * clean.adb (Clean_Executables): Add Sid component when calling - Queue.Insert. - * make.adb: When inserting in the Queue, add the Source_Id - (Sid) when it is known (Start_Compile_If_Possible): When the - Source_Id is known (Sid), get the path name of the ALI file - (Full_Lib_File) from it, to avoid finding old ALI files in other - object directories. - * makeutl.ads (Source_Info): New Source_Id component Sid in - Format_Gnatmake variant. - -2013-01-29 Robert Dewar - - * gnat_ugn.texi: Document -gnateY. - -2013-01-29 Doug Rupp - - * s-osinte-vms.ads, s-taprop-vms.adb, system-vms_64.ads, - system-vms-ia64.ads: Replace pragma Interface by pragma Import. - -2013-01-29 Robert Dewar - - * atree.ads, atree.adb (Node30): New function. - (Set_Node30): New procedure. - (Num_Extension_Nodes): Change to 5 (activate new fields/flags). - * atree.h: Add macros for Field30 and Node30. - * einfo.ads, einfo.adb: Move some fields to avoid duplexing. - * treepr.adb (Print_Entity_Information): Print fields 30-35. - -2013-01-29 Robert Dewar - - * sem_prag.adb (Analyze_Pragma, case Interface): Consider to - be a violation of No_Obsolescent_Features even in Ada 95. Also - generates a warning in -gnatwj mode. - (Analyze_Pragma, case Interface_Name): Generates a warning in -gnatwj - mode. - * gnat_ugn.texi: Additional documentation on -gnatwj and pragma - Interface[_Name]. - -2013-01-29 Vincent Celier - - * snames.ads-tmpl: Add new standard name Trailing_Switches. - -2013-01-29 Ed Schonberg - - * sem_disp.adb (Check_Controlling_Type): If a designated type T - of an anonymous access type is a limited view of a tagged type, - it can be a controlling type only if the subprogram is in the - same scope as T. - -2013-01-29 Vincent Celier - - * gnatcmd.adb: Use the project where the config pragmas file is - declared to get its path. - -2013-01-29 Vincent Celier - - * prj-attr.adb: New attribute Linker'Trailing_Switches. - -2013-01-22 Eric Botcazou - - * gcc-interface/trans.c (gnat_to_gnu) : Do - not translate the Etype of the node before translating the Actions. - -2013-01-22 Eric Botcazou - - * gcc-interface/trans.c (Pragma_to_gnu) : Use optimize_size - instead of optimize and adjust warning message. - (Compilation_Unit_to_gnu): Process pragmas preceding the unit. - -2013-01-22 Tristan Gingold - - * gcc-interface/gigi.h (ADT_unhandled_except_decl, - ADT_unhandled_others_decl): New. - (unhandled_others_decl, unhandled_except_decl): Define. - * gcc-interface/trans.c: Include common/common-target.h. - (gigi): Initialize them. - (Subprogram_Body_to_gnu): On SEH targets, wrap the body of the main - function in a try/catch clause. - -2013-01-11 Eric Botcazou - - * gcc-interface/Make-lang.in (COMMON_ADAFLAGS): Remove -gnata. - (CHECKING_ADAFLAGS): New. - (ALL_ADAFLAGS): Include CHECKING_ADAFLAGS. - -2013-01-10 Eric Botcazou - - * gcc-interface/config-lang.in (boot_language_boot_flags): Delete. - * gcc-interface/Make-lang.in (BOOT_ADAFLAGS): Likewise. - -2013-01-07 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Adjust - comment about type extension with discriminants. - : Remove useless test and reorder conditions. - (elaborate_entity) : Likewise. - -2013-01-07 Richard Biener - - PR ada/864 - * gcc-interface/Make-lang.in (ada.install-common): Always apply - program_transform_name. - -2013-01-06 Eric Botcazou - - * gnatvsn.ads (Current_Year): Bump to 2013. - -2013-01-06 Olivier Hainque - - * gcc-interface/decl.c (gnat_to_gnu_field): Emit a specialized - diagnostic for component size mismatch wrt volatile requirements. - Add a gcc_unreachable() at the end of the checks for size. Split - the check on volatile for positions into one check on atomic and - a subsequent one on volatile. - -2013-01-06 Eric Botcazou - - * gcc-interface/decl.c (elaborate_entity) : Delete. - -2013-01-06 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Do not - pack the field of the record type made for a misaligned type. - -2013-01-06 Eric Botcazou - - * gcc-interface/decl.c (annotate_value) : Be prepared - for discriminants inherited from parent record types. - -2013-01-04 Robert Dewar - - * warnsw.adb: Minor fixes to -gnatw.d handling. - -2013-01-04 Robert Dewar - - * einfo.adb, atree.adb: Enlarge entities to make 63 more flags, 6 more - fields. - -2013-01-04 Joel Brobecker - - * gnat_ugn.texi: Fix typo. - -2013-01-04 Robert Dewar - - * gnat_rm.texi: Document alignment choice for subtypes. - -2013-01-04 Robert Dewar - - * validsw.ads: Minor fix to comment. - -2013-01-04 Doug Rupp - - * Makefile.rtl (GNATRTL_NONTASKING_OBJS, - GNATRTL_ALTIVEC_OBJS): Factor g-al* objects. - * gcc-interface/Makefile.in (ADA_EXCLUDE_SRCS): Add g-al* sources. - (GNATRTL_ALTIVEC_OBJS): Override to null for VMS. - Rename leon vxworks toolchain as leon-wrs-vxworks. - * gcc-interface/Make-lang.in: Update dependencies - -2013-01-04 Pascal Obry - - * prj.ads (For_Each_Source): Add Locally_Removed parameter. - (Source_Iterator): Add Locally_Removed field. - * prj.adb (For_Each_Source): Ignore Locally_Removed files if needed. - (Next): Likewise. - -2013-01-04 Robert Dewar - - * exp_attr.adb: Minor reformatting. - -2013-01-04 Robert Dewar - - * checks.adb (Insert_Valid_Check): Fix handling of renamed - packed array element. - * exp_ch4.adb (Expand_Concatenate): Fix some missing parent - fields in generated code. - * exp_util.adb (Side_Effect_Free): Improve detection of cases - needing renaming. - -2013-01-04 Robert Dewar - - * sinfo.ads: Clean up order of N_xxx subtypes - -2013-01-04 Vincent Celier - - * prj-conf.adb (Check_Target): Allow --autoconf= with no target. - -2013-01-04 Robert Dewar - - * types.ads, prj-conf.adb, par-tchk.adb: Minor reformatting. - -2013-01-04 Robert Dewar - - * par-ch6.adb (P_Subprogram): Better handling of missing IS - after expression function. - * par-util.adb (No_Constraint): Improve handling to avoid bad warnings. - -2013-01-04 Robert Dewar - - * exp_util.ads, exp_util.adb (Insert_Actions): In expression with - actions case, new actions are appended to the sequence rather than - prepended. - -2013-01-04 Robert Dewar - - * gnat_ugn.texi: Document -gnatw.d/w.D (does no apply in VMS mode). - * usage.adb: Add lines for -gnatw.d/w.D switches. - * warnsw.adb: Minor fixes (some missing cases of setting - Warning_Doc_Switch). Reject -gnatw.d and -gnatw.D in VMS mode. - -2013-01-04 Robert Dewar - - * exp_util.adb (Remove_Side_Effects): Make sure scope suppress - is restored on exit. - -2013-01-04 Robert Dewar - - * usage.adb: Document -gnateF (check overflow for predefined Float). - -2013-01-04 Robert Dewar - - * sem_res.adb (Resolve_Type_Conversion): Remove incorrect - prevention of call to Apply_Type_Conversion_Checks, which resulted - in missing check flags in formal mode. - -2013-01-04 Vincent Celier - - * makeutl.ads (Db_Switch_Args): New table used by gprbuild. - * prj-conf.adb (Check_Builder_Switches): Check for switches - --config= (Get_Db_Switches): New procedure to get the --db - switches so that they are used when invoking gprconfig in - auto-configuration. - (Do_Autoconf): When invoking gprconfig, use the --db switches, if any. - -2013-01-04 Pascal Obry - - * prj-nmsc.adb: Minor reformatting. - -2013-01-04 Vincent Celier - - * makeutl.ads (Root_Environment): New variable, moved rom - gprbuild (Load_Standard_Base): New Boolean variable, moved - from gprbuild. - * prj-conf.adb (Check_Builder_Switches): New procedure to check - for switch --RTS in package Builder. If a runtime specified - by --RTS is a relative path name, but not a base name, then - find the path on the Project Search Path. - (Do_Autoconf): Call Check_Builder_Switches. - (Locate_Runtime): New procedure, moved from gprbuild, to get the - absolute paths of runtimes when they are not specified as a base name. - * prj-conf.ads (Locate_Runtime): New procedure, moved from gprbuild. - -2013-01-04 Ed Schonberg - - * sem_ch3.adb (Build_Private_Derived_Type): Set - Has_Private_Ancestor on type derived from an untagged private - type whose full view has discriminants - * sem_aggr.adb (Resolve_Record_Aggregate): Reject non-extension - aggregate for untagged record type with private ancestor. - -2013-01-04 Thomas Quinot - - * sem_elab.adb, sem_ch3.adb: Minor reformatting. - -2013-01-04 Robert Dewar - - * table.adb: Minor reformatting. - -2013-01-04 Ed Schonberg - - * sem_ch10.adb (Check_Redundant_Withs): A with_clause that does - not come from source does not generate a warning for redundant - with_clauses. - -2013-01-04 Hristian Kirtchev - - * aspects.adb, aspects.ads: Add Aspect_Global to all relevant tables. - * par-prag.adb: Add pragma Global to the list of pragmas that - do not need special processing by the parser. - * sem_ch13.adb (Analyze_Aspect_Specifications): Convert aspect - Global into a pragma without any form of legality checks. The - work is done by Analyze_Pragma. The aspect and pragma are both - marked as needing delayed processing. Insert the corresponding - pragma of aspect Abstract_State in the visible declarations of the - related package. - (Check_Aspect_At_Freeze_Point): Aspect Global - does not need processing even though it is marked as delayed. - Alphabetize the list on aspect names. - * sem_prag.adb: Add a value for pragma Global in table Sig_Flags. - (Analyze_Pragma): Add ??? comment about the grammar of pragma - Abstract_State. Move the error location from the pragma to the - state to improve the quality of error placement. Add legality - checks for pragma Global. - * snames.ads-tmpl Add the following specially recognized names - -2013-01-04 Eric Botcazou - - * sem_ch3.adb: Fix minor typo. - -2013-01-04 Ed Schonberg - - * par-ch13.adb (Aspect_Specifications_Present): In Strict mode, - accept an aspect name followed by a comma, indicating a defaulted - boolean aspect. - -2013-01-04 Joel Brobecker - - * gnat_ugn.texi: Document procedure to codesign GDB on Darwin. - Update doc on gnattest --separates switch. - -2013-01-04 Thomas Quinot - - * s-chepoo.ads: Minor reformatting. - -2013-01-04 Arnaud Charlet - - * usage.adb: Remove mention of -gnatN in usage. - -2013-01-04 Robert Dewar - - * exp_prag.adb, gnatcmd.adb, exp_util.adb, table.adb, sem_prag.adb, - freeze.adb, sem_ch4.adb, sem_warn.adb, opt.ads, exp_aggr.adb, - prj-conf.adb, sem_ch13.adb: Minor reformatting. - -2013-01-04 Thomas Quinot - - * sinfo.ads: Minor documentation update. - -2013-01-04 Thomas Quinot - - * sem_ch3.adb, einfo.adb (Analyze_Object_Declaration): Do not set Ekind - before resolving initialization expression. - -2013-01-04 Hristian Kirtchev - - * checks.adb (Generate_Index_Checks): Delay the generation of - the check for an indexed component where the prefix mentions - Loop_Entry until the attribute has been properly expanded. - * exp_ch5.adb (Expand_Loop_Entry_Attributes): Perform minor - decoration of the constant that captures the value of Loop_Entry's - prefix at the entry point into a loop. Generate index checks - for an attribute reference that has been transformed into an - indexed component. - -2013-01-04 Thomas Quinot - - * exp_prag.adb, exp_util.adb, exp_util.ads, freeze.adb, exp_aggr.adb, - sem_ch13.adb (Exp_Aggr.Collect_Initialization_Statements): Nothing to - do if Obj is already frozen. - (Exp_Util.Find_Init_Call): Rename to... - (Exp_Util.Remove_Init_Call): New subprogram, renamed from - Find_Init_Call. Remove the initialization call from the enclosing - list if found, and if it is from an Initialization_Statements - attribute, reset it. - (Exp_Util.Append_Freeze_Action): Minor code reorganization. - (Exp_Util.Append_Freeze_Actions): Ensure a freeze node has been - allocated (as is already done in Append_Freeze_Action). - (Freeze.Freeze_Entity): For an object with captured - Initialization_Statements and non-delayed freezeing, unwrap the - initialization statements and insert and them directly in the - enclosing list. - (Sem_Ch13.Check_Address_Clause): For an object - with Initialization_Statements and an address clause, unwrap the - initialization statements when moving them to the freeze actions. - -2013-01-03 Pascal Obry - - * prj-attr.adb, projects.texi, snames.ads-tmpl: Add package remote and - corresponding attibutes. - -2013-01-03 Thomas Quinot - - * exp_aggr.adb: Minor comment improvement. - -2013-01-03 Hristian Kirtchev - - * aspects.adb, aspects.ads: Add Aspect_Abstract_State to all the - relevant tables. - * einfo.ads, einfo.adb: Add Integrity_Level and Refined_State to - the description of fields (Abstract_States): New routine. - (Integrity_Level): New routine. - (Has_Property): New routine. - (Is_Input_State): New routine. - (Is_Null_State): New routine. - (Is_Output_State): New routine. - (Is_Volatile_State): New routine. - (Refined_State): New routine. - (Set_Abstract_States): New routine. - (Set_Integrity_Level): New routine. - (Set_Refined_State): New routine. - (Write_Field8_Name): Add proper output for E_Abstract_State. - (Write_Field9_Name): Add proper output for E_Abstract_State. - (Write_Field25_Name): Add proper output for E_Package. - * lib-xref.ads: Add new letter for an abstract state. - * par-prag.adb: Add pragma Abstract_State to the list of pragma - that do not need special processing by the parser. - * sem_ch13.adb (Analyze_Aspect_Specifications): Convert - aspect Abstract_State into a pragma without any form - of legality checks. The work is done by Analyze_Pragma. - (Check_Aspect_At_Freeze_Point): Aspect Abstract_State does not - require delayed analysis. - * sem_prag.adb: Add a value for pragma Abstract_State in table - Sig_Flags. - (Analyze_Pragma): Add legality checks for pragma - Abstract_State. Analysis of individual states introduces a state - abstraction entity into the visibility chain. - * snames.ads-tmpl: Add new names for abstract state and - integrity. Add new pragma id for abstract state. - -2013-01-03 Bob Duff - - * table.adb (Reallocate): Calculate new Length in - Long_Integer to avoid overflow. - -2013-01-03 Thomas Quinot - - * sem_ch3.adb, sinfo.ads, freeze.adb, sem_ch4.adb, exp_aggr.adb - (Sem_Ch3.Analyze_Object_Declaration): Set Ekind early so that - it is set properly when expanding the initialization expression. - (Freeze.Check_Address_Clause): Transfer initialization expression - to an assignment in the freeze actions, so that the object is - initialized only after being elaborated by GIGI. - (Sinfo (comments), Sem_Ch4.Analyze_Expression_With_Actions): Allow - a Null_Statement as the expression in an Expression_With_Actions. - (Exp_Aggr.Collect_Initialization_Statements): New subprogram - shared by expansion of record and array aggregates, used to - capture statements for an aggregate used to initalize an object - into an Expression_With_Actions (which acts as a container for - a list of actions). - (Exp_Aggr.Convert_Aggr_In_Obj_Decl): Use the above to - capture initialization statements, instead of the previously - existing loop which left freeze nodes out of the capturing - construct (causing out of order elaboration crashes in GIGI). - (Exp_Aggr.Expand_Array_Aggregate): Use the above to capture - initialization statements (this was previously not done for - arrays). Also do not unconditionally prevent in place expansion - for an object with address clause. - -2013-01-03 Thomas Quinot - - * gnat_rm.texi, freeze.adb (Check_Component_Storage_Order): Check that - a record extension has the same scalar storage order as the parent type. - -2013-01-03 Thomas Quinot - - * exp_ch4.adb: Add comment. - -2013-01-03 Vincent Celier - - * prj.adb: Minor spelling error correction in comment. - -2013-01-03 Vincent Celier - - * gnatcmd.adb (GNATCmd): If a single main has been specified - as an absolute path, use its simple file name to find specific - switches, instead of the absolute path. - -2013-01-03 Javier Miranda - - * sem_warn.adb (Warn_On_Overlapping_Actuals): For overlapping - parameters that are record types or array types generate warnings - only compiling under -gnatw.i - * opt.ads (Extensions_Allowed): Restore previous documentation. - -2013-01-03 Vincent Celier - - * prj-conf.adb (Do_Autoconf): If Target is specified in the - main project, but not on the command line, use the Target in - the project to invoke gprconfig in auto-configuration. - * makeutl.ads (Default_Config_Name): New constant String. - -2013-01-03 Arnaud Charlet - - * usage.adb: Minor: fix typo in usage. - -2013-01-03 Thomas Quinot - - * sem_ch13.adb (Analyze_Record_Representation_Clause): Reject - an illegal component clause for an inherited component in a - record extension. - -2013-01-03 Emmanuel Briot - - * xref_lib.adb (Parse_Identifier_Info): Fix handling of arrays, which - have information in the ALI file for both the index and the component - types. - -2013-01-03 Emmanuel Briot - - * projects.texi: Fix error in documenting the project path - computed for an aggregate project. - -2013-01-03 Javier Miranda - - * sem_warn.adb (Warn_On_Overlapping_Actuals): Adding documentation - plus restricting the functionality of this routine to cover the - cases described in the Ada 2012 reference manual. The previous - extended support is now available under -gnatX. - * s-tassta.adb (Finalize_Global_Tasks): Addition of a dummy - variable to call Timed_Sleep. Required to avoid warning on - overlapping out-mode actuals. - * opt.ads (Extensions_Allowed): Update documentation. - -2013-01-03 Tristan Gingold - - * s-arit64.ads: Use Multiply_With_Ovflo_Check as __gnat_mulv64. - * arit64.c: Removed - * gcc-interface/Makefile.in: Remove reference to arit64.c. - -2013-01-03 Thomas Quinot - - * checks.adb, checks.ads (Apply_Address_Clause_Check): The check must - be generated at the start of the freeze actions for the entity, not - before (or after) the freeze node. - -2013-01-03 Thomas Quinot - - * exp_aggr.adb (Exp_Aggr.Convert_Aggregate_In_Obj_Decl): - Reorganize code to capture initialization statements in a block, - so that freeze nodes are excluded from the captured block. - -2013-01-03 Thomas Quinot - - * exp_ch11.adb: Minor reformatting. - -2013-01-03 Thomas Quinot - - * exp_util.adb, einfo.adb, einfo.ads, freeze.adb, exp_aggr.adb, - sem_ch13.adb (Einfo.Initialization_Statements, - Einfo.Set_Initialization_Statements): New entity attribute - for objects. - (Exp_Util.Find_Init_Call): Handle case of an object initialized - by an aggregate converted to a block of assignment statements. - (Freeze.Check_Address_Clause): Do not clear Has_Delayed_Freeze - even for objects that require a constant address, because the - address expression might involve entities that have yet to be - elaborated at the point of the object declaration. - (Exp_Aggr.Convert_Aggregate_In_Obj_Decl): For a type that does - not require a transient scope, capture the assignment statements - in a block so that they can be moved down after elaboration of - an address clause if needed. - (Sem_Ch13.Check_Constant_Address_Clause.Check_Expr_Constants, - case N_Unchecked_Conversion): Do not replace operand subtype with - its base type as this violates a GIGI invariant if the operand - is an identifier (in which case the etype of the identifier - is expected to be equal to that of the denoted entity). - -2013-01-03 Javier Miranda - - * sem_util.ads, sem_util.adb (Denotes_Same_Object): Extend the - functionality of this routine to cover cases described in the Ada 2012 - reference manual. - -2013-01-03 Ed Schonberg - - * sem_elab.adb (Set_Elaboration_Constraint): Handle properly - a 'Access attribute reference when the subprogram is called - Initialize. - -2013-01-03 Arnaud Charlet - - * s-tpobop.adb (PO_Do_Or_Queue): Refine assertion, since a - select statement may be called from a controlled (e.g. Initialize) - operation and have abort always deferred. - -2013-01-03 Robert Dewar - - * sem_ch8.adb, einfo.ads, einfo.adb: Minor code reorganization. - -2013-01-03 Javier Miranda - - * exp_ch3.adb (Make_Controlling_Function_Wrappers): Exclude - internal entities associated with interfaces and add minimum - decoration to the defining entity of the generated wrapper to - allow overriding interface primitives. - * sem_disp.ads (Override_Dispatching_Operation): Addition of a - new formal (Is_Wrapper). - * sem_disp.adb (Override_Dispatching_Operation): When overriding - interface primitives the new formal helps identifying that the - new operation is not fully decorated. - -2013-01-03 Thomas Quinot - - * sem_ch7.adb, sem_ch10.adb, einfo.adb, einfo.ads, sem_ch12.adb, - rtsfind.adb, sem_elab.adb, sem_ch4.adb, sem_ch8.adb - (Einfo.Is_Visible_Child_Unit, Einfo.Set_Is_Visible_Child_Unit): - Rename to Is_Visible_Lib_Unit, Set_Is_Visible_Lib_Unit, and - update spec accordingly (now also applies to root library units). - (Sem_Ch10.Analyze_Subunit.Analyze_Subunit_Context): Toggle above flag - on root library units, not only child units. - (Sem_Ch10.Install[_Limited]_Withed_Unit): Same. - (Sem_Ch10.Remove_Unit_From_Visibility): Reset Is_Visible_Lib_Unit - even for root library units. - (Sem_Ch8.Find_Expanded_Name): A selected component form whose prefix is - Standard is an expanded name for a root library unit. - -2013-01-03 Thomas Quinot - - * exp_ch3.adb: Minor reformatting. - -2013-01-03 Olivier Hainque - - * tracebak.c: Reinstate changes to support ppc-lynx178. - -2013-01-03 Ed Schonberg - - * atree.ads: Minor reformatting and documentation enhancement. - -2013-01-03 Ed Schonberg - - * exp_ch3.adb (Expand_N_Object_Declaration): If the object has - a class-wide type and a renaming declaration is created for it, - preserve entity chain, which already contains generated internal - types. This ensures that freezing actions are properly generated - for all objects declared subsequently in the same scope, and - that debugging information is generated for them. - * sem_util.adb, sem_util.ads (we): New debugging routine, to - display entity chain of a given scope. - -2013-01-03 Robert Dewar - - * exp_intr.adb: Minor reformatting. - -2013-01-03 Robert Dewar - - * einfo.adb: Minor reformatting. - -2013-01-03 Pascal Obry - - * adaint.c, adaint.h (__gnat_get_module_name): Removed. - (__gnat_is_module_name_supported): Removed. - * s-win32.ads: Add some needed definitions. - * g-trasym.ads: Update comments. - -2013-01-03 Robert Dewar - - * layout.adb (Set_Composite_Alignment): Fix problems of - interactions with Optimize_Alignment set to Space. - -2013-01-03 Thomas Quinot - - * exp_disp.adb: Minor reformatting. - -2013-01-02 Richard Biener - - PR bootstrap/55784 - * gcc-interface/Makefile.in: Add $(GMPINC) to includes. - -2013-01-02 Thomas Quinot - - * exp_intr.adb (Expand_Dispatching_Constructor_Call): Remove - side effects from Tag_Arg early, doing it too late may cause a - crash due to inconsistent Parent link. - * sem_ch8.adb, einfo.ads: Minor reformatting. - -2013-01-02 Robert Dewar - - * einfo.ads, einfo.adb (Has_Independent_Components): New flag. - * freeze.adb (Size_Known): We do not know the size of a packed - record if it has atomic components, by reference type components, - or independent components. - * sem_prag.adb (Analyze_Pragma, case Independent_Components): Set new - flag Has_Independent_Components. - -2013-01-02 Yannick Moy - - * opt.ads (Warn_On_Suspicious_Contract): Set to True by default. - * usage.adb (Usage): Update usage message. - -2013-01-02 Pascal Obry - - * adaint.c (__gnat_is_module_name_supported): New constant. - -2013-01-02 Ed Schonberg - - * sem_attr.adb (Check_Array_Type): Reject an attribute reference on an - array whose component type does not have a completion. - -2013-01-02 Geert Bosch - - * a-nllcef.ads, a-nlcefu.ads, a-nscefu.ads: Make Pure. - -2013-01-02 Robert Dewar - - * par_sco.adb: Minor reformatting. - -2013-01-02 Javier Miranda - - * sem_aggr.adb (Resolve_Array_Aggregate): Remove dead code. - -2013-01-02 Olivier Hainque - - * a-exctra.ads (Get_PC): New function. - -2013-01-02 Thomas Quinot - - * sem_ch8.adb: Minor reformatting. - -2013-01-02 Thomas Quinot - - * sem_ch7.adb: Minor reformatting. - -2013-01-02 Thomas Quinot - - * freeze.adb (Check_Component_Storage_Order): Do not crash on - _Tag component. - -2013-01-02 Robert Dewar - - * gnat1drv.adb, targparm.adb, targparm.ads: Minor name change: add - On_Target to Atomic_Sync_Default. - -2013-01-02 Robert Dewar - - * sem_warn.adb (Warn_On_Known_Condition): Suppress warning for - comparison of attribute result with constant - * a-ststio.adb, s-direio.adb, s-rannum.adb: Remove unnecessary pragma - Warnings (Off, ".."); - -2013-01-02 Yannick Moy - - * sem_prag.ads: Minor correction of comment. - -2013-01-02 Thomas Quinot - - * par_sco.adb (Traverse_Package_Declaration): The first - declaration in a nested package is dominated by the preceding - declaration in the enclosing scope. - -2013-01-02 Pascal Obry - - * adaint.c, adaint.h (__gnat_get_module_name): Return the actual - module containing a given address. - -2013-01-02 Thomas Quinot - - * sem_ch3.adb: Minor reformatting. - -2013-01-02 Pascal Obry - - * cstreams.c (__gnat_ftell64): New routine. Use _ftelli64 on - Win64 and default to ftell on other platforms. - (__gnat_fsek64): Likewise. - * i-cstrea.ads: Add fssek64 and ftell64 specs. - * s-crtl.ads: Likewise. - * a-ststio.adb, s-direio.adb (Size): Use 64 bits version when required. - (Set_Position): Likewise. - -2013-01-02 Thomas Quinot - - * par_sco.adb: Generate X SCOs for default expressions in - subprogram body stubs. Do not generate any SCO for package, - task, or protected body stubs. - -2013-01-02 Ed Schonberg - - * sem_ch3.adb: Further improvement to ASIS mode for anonymous - access to protected subprograms. - -2013-01-02 Robert Dewar - - * par_sco.adb, vms_data.ads: Minor reformatting. - -2013-01-02 Thomas Quinot - - * par_sco.adb (Traverse_Declarations_Or_Statement): Function - form, returning value of Current_Dominant upon exit, for chaining - purposes. - (Traverse_Declarations_Or_Statement.Traverse_One, case - N_Block_Statement): First statement is dominated by last declaration. - (Traverse_Subprogram_Or_Task_Body): Ditto. - (Traverse_Package_Declaration): First private - declaration is dominated by last visible declaration. - (Traverse_Sync_Definition): Ditto. - -2013-01-02 Thomas Quinot - - * gnat_rm.texi: Restrict the requirement for Scalar_Storage_Order - matching Bit_Order to record types only, since array types do not - have a Bit_Order. - -2013-01-02 Vincent Celier - - * gnat_ugn.texi: Remove documentation of -gnateO, which is an - internal switch. - * usage.adb: Indicate that -gnateO is an internal switch. - -2013-01-02 Thomas Quinot - - * par_sco.adb: Add SCO generation for task types and single - task declarations. - * get_scos.adb: When adding an instance table entry for a - non-nested instantiation, make sure the Enclosing_Instance is - correctly set to 0. - -2013-01-02 Hristian Kirtchev - - * sem_attr.adb (Analyze_Attribute): Skip the special _Parent - scope generated for subprogram inlining purposes while trying - to locate the enclosing function. - * sem_prag.adb (Analyze_Pragma): Preanalyze the boolean - expression of pragma Postcondition when the pragma comes from - source and appears inside a subprogram body. - -2013-01-02 Thomas Quinot - - * switch-c.adb, fe.h, back_end.adb: Enable generation of instantiation - information in debug info unconditionally when using -fdump-scos, - instead of relying on a separate command line switch -fdebug-instances. - * gcc-interface/Make-lang.in: Update dependencies. - -2013-01-02 Ed Schonberg - - * sem_ch12.adb: Additional refinement of predicate. - -2013-01-02 Vincent Celier - - * vms_data.ads: Remove incorrect spaces at end of descriptions - of qualifiers for single switch. - -2013-01-02 Ben Brosgol - - * gnat_rm.texi: Minor edits / wordsmithing in section on pragma - Check_Float_Overflow. - -2013-01-02 Thomas Quinot - - * sprint.adb (Sprint_Node_Actual): Do not add extra parens for - a conditional expression (CASE or IF expression) that already - has parens. Also omit ELSE keyword for an IF expression without - an ELSE part. - -2013-01-02 Thomas Quinot - - * gnat1drv.adb (Adjust_Global_Switches): Adjust back-end - flag_debug_instances here, after front-end switches have been - processed. - -2013-01-02 Vincent Celier - - * usage.adb: Minor reformatting. - -2013-01-02 Arnaud Charlet - - * opt.ads: Fix typo. - -2013-01-02 Thomas Quinot - - * par_sco.adb: Generate P decision SCOs for SPARK pragmas - Assume and Loop_Invariant. - -2013-01-02 Robert Dewar - - * vms_data.ads: Add entry for Float_Check_Valid (-gnateF). - * ug_words: Add entry for Float_Check_Overflow. - * usage.adb: Minor reformatting. - * gnat_ugn.texi: Add documentation for -gnateF (Check_Float_Overflow). - -2013-01-02 Vincent Celier - - * gnat_ugn.texi: Add documentation for switches -gnateA, -gnated, - -gnateO=, -gnatet and -gnateV. - * ug_words: Add qualifiers equivalent to -gnateA, -gnated, - -gnatet and -gnateV. - * usage.adb: Add lines for -gnatea, -gnateO and -gnatez. - * vms_data.ads: Add new compiler qualifiers /ALIASING_CHECK - (-gnateA), /DISABLE_ATOMIC_SYNCHRONIZATION (-gnated), - /PARAMETER_VALIDITY_CHECK (-gnateV) and /TARGET_DEPENDENT_INFO - (-gnatet). - -2013-01-02 Robert Dewar - - * checks.adb (Apply_Scalar_Range_Check): Implement Check_Float_Overflow. - * opt.ads, opt.adb: Handle flags Check_Float_Overflow[_Config]. - * par-prag.adb: Add dummy entry for pragma Check_Float_Overflow. - * sem_prag.adb: Implement pragma Check_Float_Overflow. - * snames.ads-tmpl: Add entries for pragma Check_Float_Overflow. - * switch-c.adb: Recognize -gnateF switch. - * tree_io.ads: Update ASIS version number. - * gnat_rm.texi: Add documentation of pragma Check_Float_Overflow. - -2013-01-02 Robert Dewar - - * checks.adb, exp_ch4.adb, exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, - exp_disp.adb, exp_dist.adb, exp_intr.adb, exp_prag.adb, exp_util.adb, - freeze.adb, gnat1drv.adb, inline.adb, layout.adb, lib-xref.adb, - par-ch10.adb, par-labl.adb, par-load.adb, par-util.adb, restrict.adb, - sem_ch13.adb, sem_ch4.adb, sem_ch6.adb, sem_dim.adb, sem_elab.adb, - sem_res.adb, sem_warn.adb, sinput-l.adb: Add tags to warning messages. - * sem_ch6.ads, warnsw.ads, opt.ads: Minor comment updates. - -2013-01-02 Robert Dewar - - * err_vars.ads: Minor comment fix. - -2013-01-02 Ed Schonberg - - * sem_ch12.adb: Refine predicate. - -2013-01-02 Robert Dewar - - * errout.ads: Minor comment fixes. - * opt.ads: Minor comment additions. - * exp_aggr.adb: Add tags to warning messages - * exp_ch11.adb, exp_ch3.adb, exp_ch4.adb, exp_util.adb, sem_aggr.adb, - sem_attr.adb, sem_case.adb, sem_cat.adb, sem_ch3.adb, sem_ch4.adb, - sem_ch5.adb, sem_disp.adb, sem_dist.adb, sem_elab.adb, sem_eval.adb, - sem_intr.adb, sem_mech.adb, sem_prag.adb, sem_res.adb, sem_util.adb, - sem_warn.adb: Add tags to warning messages - -2013-01-02 Doug Rupp - - * init.c [VMS] Remove subtest on reason mask for ACCVIO that is a C_E. - -2013-01-02 Ed Schonberg - - * sem_ch12.adb: Recover source name for renamed packagea. - -2013-01-02 Robert Dewar - - * errout.adb (Set_Msg_Insertion_Warning): Correct typo causing - tests to fail if insertion sequence is at end of message string. - * opt.ads: Minor comment fixes and additions. - * sem_ch7.adb, sem_ch8.adb, sem_ch9.adb, sem_ch10.adb, sem_ch11.adb, - sem_ch12.adb, sem_ch13.adb: Add tags to warning messages. - * sem_ch6.ads, sem_ch6.adb (Cannot_Inline): Deal with warning message - tags. Add tags to warning messages. - -2013-01-02 Robert Dewar - - * err_vars.ads (Warning_Doc_Switch): New flag. - * errout.adb (Error_Msg_Internal): Implement new warning flag - doc tag stuff (Set_Msg_Insertion_Warning): New procedure. - * errout.ads: Document new insertion sequences ?? ?x? ?.x? - * erroutc.adb (Output_Msg_Text): Handle ?? and ?x? warning doc - tag stuff. - * erroutc.ads (Warning_Msg_Char): New variable. - (Warn_Chr): New field in error message object. - * errutil.adb (Error_Msg): Set Warn_Chr in error message object. - * sem_ch13.adb: Minor reformatting. - * warnsw.adb: Add handling for -gnatw.d and -gnatw.D - (Warning_Doc_Switch). - * warnsw.ads: Add handling of -gnatw.d/.D switches (warning - doc tag). - -2013-01-02 Robert Dewar - - * opt.ads: Minor reformatting. - -2013-01-02 Doug Rupp - - * init.c: Reorganize VMS section. - (scan_condtions): New function for scanning condition tables. - (__gnat_handle_vms_condtion): Use actual exception name for imported - exceptions vice IMPORTED_EXCEPTION. - Move condition table scanning into separate function. Move formerly - special handled conditions to system condition table. Use SYS$PUTMSG - output to fill exception message field for formally special handled - condtions, in particular HPARITH to provide more clues about cause and - location then raised from the translated image. - -2013-01-02 Thomas Quinot - - * sem_ch13.adb (Analyze_Aspect_Specifications): For a Pre/Post - aspect that applies to a library subprogram, prepend corresponding - pragma to the Pragmas_After list, in order for split AND THEN - sections to be processed in the expected order. - -2013-01-02 Thomas Quinot - - * exp_prag.adb (Expand_Pragma_Check): The statements generated - for the pragma must have the sloc of the pragma, not the - sloc of the condition, otherwise this creates anomalies in the - generated debug information that confuse coverage analysis tools. - -2013-01-02 Thomas Quinot - - * sem_ch13.adb: Minor reformatting. - -2013-01-02 Arnaud Charlet - - * g-excact.ads (Core_Dump): Clarify that this subprogram does - not dump cores under Windows. - -2013-01-02 Ed Schonberg - - * sem_ch8.adb (Analyze_Primitive_Renamed_Operation): The prefixed - view of a subprogram has convention Intrnnsic, and a renaming - of a prefixed view cannot be the prefix of an Access attribute. - -2013-01-02 Robert Dewar - - * restrict.adb: Minor reformatting. - -2013-01-02 Thomas Quinot - - * exp_prag.adb: Minor reformatting. - -2013-01-02 Ed Schonberg - - * sem_ch12.adb (Get_Associated_Node): If the node is an - identifier that denotes an unconstrained array in an object - declaration, it is rewritten as the name of an anonymous - subtype whose bounds are given by the initial expression in the - declaration. When checking whether that identifier is global - reference, use the original node, not the local generated subtype. - -2013-01-02 Olivier Hainque - - * tracebak.c: Revert previous change, incomplete. - -2013-01-02 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specifications): If the aspect - appears on a subprogram body that acts as a spec, place the - corresponding pragma in the declarations of the body, so that - e.g. pre/postcondition checks can be generated appropriately. - -2013-01-02 Robert Dewar - - * sem_ch3.adb: Minor reformatting and code reorganization. - -2013-01-02 Vincent Celier - - * switch-m.adb (Normalize_Compiler_Switches): Record the - complete switch -fstack-check=specific instead of its shorter - alias -fstack-check. - -2013-01-02 Ed Schonberg - - * sem_ch3.adb (Derive_Subprogram): Enforce RM 6.3.1 (8): - if the derived type is a tagged generic formal type with - unknown discriminants, the inherited operation has convention - Intrinsic. As such, the 'Access attribute cannot be applied to it. - -2013-01-02 Thomas Quinot - - * sem_attr.adb: Minor reformatting. - -2013-01-02 Thomas Quinot - - * par_sco.adb: Add SCO generation for S of protected types and - single protected object declarations. - -2013-01-02 Robert Dewar - - * sem_eval.adb, osint.ads: Minor reformatting. - -2013-01-02 Hristian Kirtchev - - * sem_prag.adb (Analyze_Pragma): Check the legality of pragma Assume. - -2013-01-02 Thomas Quinot - - * sem_eval.adb (Compile_Time_Compare): For static operands, we - can perform a compile time comparison even if in preanalysis mode. - -2013-01-02 Thomas Quinot - - * par_sco.adb (SCO_Record): Always use - Traverse_Declarations_Or_Statements to process the library level - declaration, so that SCOs are properly generated for its aspects. - -2013-01-02 Thomas Quinot - - * scos.ads (In_Decision): Add missing entry for 'a'. - * sem_prag.adb (Analyze_Pragma, case pragma Check): Omit - call to Set_SCO_Pragma_Enabled for Invariant and Predicate. - * sem_ch13.adb: Minor comment update. + * gnat_ugn.texi: Bump @copying's copyright year. -Copyright (C) 2013 Free Software Foundation, Inc. +Copyright (C) 2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/ada/ChangeLog-2013 b/gcc/ada/ChangeLog-2013 new file mode 100644 index 00000000000..8c5ee48dbf7 --- /dev/null +++ b/gcc/ada/ChangeLog-2013 @@ -0,0 +1,8294 @@ +2013-12-20 Trevor saunders + + * gcc-interface/decl.c (components_to_record): Replace stack_vec with + auto_vec. + +2013-12-12 Eric Botcazou + + * gcc-interface/Makefile.in (ARM linux, GNU eabi): Tweak regexp. + +2013-12-12 Eric Botcazou + Iain Sandoe + + PR ada/55946 + * gcc-interface/Make-lang.in (ada/doctools/xgnatugn): Use gnatmake. + * gcc-interface/Makefile.in (GCC_LINK): Add LDFLAGS. + (../../gnatmake): Remove LDFLAGS. + (../../gnatlink): Likewise. + +2013-12-04 Eric Botcazou + + PR ada/59382 + * indepsw-darwin.adb: New file. + +2013-12-04 Eric Botcazou + + * gcc-interface/decl.c (components_to_record): Add specific handling + for fields with zero size and no representation clause. + +2013-12-04 Eric Botcazou + + * gcc-interface/trans.c (Case_Statement_to_gnu): Do not push a binding + level for each branch if this is a case expression in Ada 2012. + (gnat_to_gnu) : Adjust comment. + +2013-11-29 Eric Botcazou + + PR ada/54040 + PR ada/59346 + * s-osinte-hpux.ads (timespec): Change type of tv_nsec field to time_t. + * s-osinte-kfreebsd-gnu.ads (timespec): Likewise. + * s-osinte-solaris-posix.ads (timespec): Likewise. + +2013-11-23 Eric Botcazou + + * gcc-interface/trans.c (Loop_Statement_to_gnu): Set TREE_SIDE_EFFECTS + on the conditional expression directly. + +2013-11-22 Andrew MacLeod + + * gcc-interface/trans.c: Add required include files from gimple.h. + +2013-11-22 David Malcolm + + * gcc-interface/utils2.c (build_call_raise): Remove use of + input_line macro. + (build_call_raise_range): Likewise. + (build_call_raise_column): Likewise. + +2013-11-20 Kenneth Zadeck + Mike Stump + Richard Sandiford + + * gcc-interface/cuintp.c (UI_From_gnu): Use tree_to_shwi. + * gcc-interface/decl.c (gnat_to_gnu_entity): Use tree_to_uhwi. + * gcc-interface/utils.c (make_packable_type): Likewise. + +2013-11-18 Richard Sandiford + + * gcc-interface/cuintp.c (UI_From_gnu): Use tree_to_shwi rather than + tree_low_cst. + +2013-11-18 Richard Sandiford + + * gcc-interface/decl.c, gcc-interface/utils.c, gcc-interface/utils2.c: + Replace tree_low_cst (..., 1) with tree_to_uhwi throughout. + +2013-11-18 Richard Sandiford + + * gcc-interface/cuintp.c: Update comments to refer to + tree_fits_shwi_p rather than host_integerp. + * gcc-interface/decl.c (gnat_to_gnu_entity): Use tree_fits_uhwi_p + rather than host_integerp. + * gcc-interface/utils.c (rest_of_record_type_compilation): Likewise. + +2013-11-18 Richard Sandiford + + * gcc-interface/decl.c, gcc-interface/misc.c, gcc-interface/utils.c: + Replace host_integerp (..., 1) with tree_fits_uhwi_p throughout. + +2013-11-18 Richard Sandiford + + * gcc-interface/cuintp.c: Replace host_integerp (..., 0) with + tree_fits_shwi_p throughout. + +2013-11-18 Eric Botcazou + + * gcc-interface/trans.c (TARGET_ABI_OPEN_VMS): Delete as redundant. + +2013-11-18 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): For an Out parameter passed by + copy and that don't need to be copied in, only evaluate its address. + +2013-11-18 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Deal with an + error mark as renamed object in type annotating mode. + +2013-11-15 H.J. Lu + + PR ada/54040 + * s-linux-x32.ads: New file. + * s-osprim-x32.adb: Likewise. + * s-linux.ads (time_t): New type. + * s-linux-alpha.ads (time_t): Likewise. + * s-linux-hppa.ads (time_t): Likewise. + * s-linux-mipsel.ads (time_t): Likewise. + * s-linux-sparc.ads (time_t): Likewise. + * s-osinte-linux.ads (time_t): Mark it private. Replace long + with System.Linux.time_t. + (timespec): Replace long with time_t. + * s-osinte-posix.adb (To_Timespec): Likewise. + * s-taprop-linux.adb (timeval): Replace C.long with + System.OS_Interface.time_t. + * gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS): Replace + s-linux.ads with s-linux-x32.ads, s-osprim-posix.adb with + s-osprim-x32.adb for x32. + +2013-11-14 H.J. Lu + + * gcc-interface/trans.c: Include gimple.h and pointer-set.h. + +2013-11-14 Diego Novillo + + * gcc-interface/decl.c: Include stringpool.h + Include stor-layout.h + * gcc-interface/misc.c: Include stor-layout.h + Include print-tree.h + * gcc-interface/trans.c: Include stringpool.h + Include stor-layout.h + Include stmt.h + Include varasm.h + * gcc-interface/utils.c: Include stringpool.h + Include stor-layout.h + Include attribs.h + Include varasm.h + * gcc-interface/utils2.c: Include stringpool.h + Include stor-layout.h + Include attribs.h + Include varasm.h + +2013-11-12 Andrew MacLeod + + * gcc-interface/trans.c: Include gimplify.h. + +2013-11-11 Tristan Gingold + Eric Botcazou + + * gcc-interface/utils2.c (gnat_build_constructor): Also set the flag + CONSTRUCTOR_NO_CLEARING on the constructor. + +2013-10-30 Sharad Singhai + + * gnat_ugn.texi: Remove option description for PR middle-end/58134. + +2013-10-29 David Malcolm + + * gcc-interface/trans.c (finalize_nrv): Update for conversion of + symtab types to a true class hierarchy. + * gcc-interface/utils.c (gnat_write_global_declarations): Likewise. + +2013-10-28 Trevor Saunders + + * gcc-interface/decl.c (components_to_record): Adjust stack vector. + +2013-10-24 Rainer Orth + + * gcc-interface/Make-lang.in (ADA_DEPS): Fix quoting. + +2013-10-19 Thomas Quinot + + * gcc-interface/Makefile.in: Use canonical absolute path to refer to + the top source directory and to the libgcc subidrectories. + +2013-10-19 Eric Botcazou + + * gcc-interface/utils.c (scale_by_factor_of): New function. + (rest_of_record_type_compilation): Use scale_by_factor_of in order to + scale the original offset for both rounding cases; in the second case, + take into accout the addend to compute the alignment. Tidy up. + +2013-10-19 Eric Botcazou + + * gcc-interface/cuintp.c: Remove useless include directives. + (build_cst_from_int): Use standard predicate. + (UI_To_gnu): Simplify. + (UI_From_gnu): Fix formatting. + * gcc-interface/trans.c (post_error): Likewise. + (post_error_ne): Likewise. + +2013-10-19 Eric Botcazou + + * gcc-interface/utils.c (gnat_set_type_context): New function. + (gnat_pushdecl): Use it to set the context of the type. + +2013-10-17 Hristian Kirtchev + + * sem_prag.adb (Check_Dependency_Clause): + Recognize the scenario where successful clause matching has + depleted the available refinement items and the clause to match + technically refines to null => null. + +2013-10-17 Tristan Gingold + + * exp_prag.adb (Expand_Pragma_Import_Or_Interface): Specify + External_Name instead of Link_Name for the RTTI declaration. + +2013-10-17 Robert Dewar + + * sem_prag.adb (Record_Possible_Body_Reference): Fix test for + being in body. + (Add_Constituent): Merged into Check_Refined_Global_Item. + (Check_Matching_Constituent): A constituent that has the proper Part_Of + option and comes from a private child or a sibling is now collected. + (Check_Matching_Modes): Merged into Check_Refined_Global_Item. + (Check_Refined_Global_Item): Code cleanup. + (Collect_Constituent): New routine. + (Inconsistent_Mode_Error): Moved out from Check_Matching_Modes. + +2013-10-17 Ed Schonberg + + * freeze.adb (Check_Current_Instance, Process): Add RM reference + and mention immutably limited types, when the current instance + is illegal in Ada 2012. + +2013-10-17 Ed Schonberg + + * sem_warn.adb (Check_Unused_Withs): If the main unit is a + subunit, apply the check to the units mentioned in its context + only. This provides additional warnings on with_clauses that + are superfluous. + +2013-10-17 Hristian Kirtchev + + * sem_ch3.adb (Analyze_Declarations): Emit an + error message concerning state refinement when the spec defines at + least one non-null abstract state and the body's SPARK mode is On. + (Requires_State_Refinement): New routine. + +2013-10-17 Robert Dewar + + * sem_ch7.ads: Comment fixes. + +2013-10-17 Robert Dewar + + * sem_ch7.adb (Analyze_Package_Specification): Remove circuit + for ensuring that a package spec requires a body for some other + reason than that it contains the declaration of an abstract state. + +2013-10-17 Tristan Gingold + + * exp_ch11.adb (Expand_N_Raise_Expression): Fix call of + Possible_Local_Raise. + +2013-10-17 Thomas Quinot + + * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Unchecked + conversion of Or_Rhs to Etype of New_Rhs is required only when + the latter is the result of a byte swap operation. + +2013-10-17 Thomas Quinot + + * exp_dist.adb (Build_To_Any_Function): For a type with opaque + representation that is not transmitted as an unconstrained value, + use 'Write, not 'Output, to generate the opaque representation. + +2013-10-17 Yannick Moy + + * sem_res.adb (Resolve_Short_Circuit): Only + generate expression-with-action when full expansion is set. + +2013-10-17 Yannick Moy + + * debug.adb Remove obsolete comment. + +2013-10-17 Thomas Quinot + + * exp_ch4.adb (Process_Transient_Object.Find_Enclosing_Contexts): + Avoid late insertion when expanding an expression with action + nested within a transient block; Do not inconditionally generate + a finalization call if the generated object is from a specific + branch of a conditional expression. + +2013-10-17 Pascal Obry + + * g-arrspl.adb: Ensure Finalize call is idempotent. + * g-arrspl.adb (Finalize): Makes the call idempotent. + +2013-10-17 Hristian Kirtchev + + * sem_prag.adb (Is_Matching_Input): Account + for the case where a state with a null refinement appears as + the last input of a refinement clause. + +2013-10-17 Robert Dewar + + * sem_aux.ads, sem_aux.adb: Minor reformatting. + +2013-10-17 Hristian Kirtchev + + * aspects.adb, aspects.ads, sem_prag.ads: Remove all entries + for Refined_Pre from the various tables. + * par-prag.adb: Remove the entry for Refined_Pre from the list + of pragmas not needing special processing by the parser. + * sem_ch13.adb (Analyze_Aspect_Specifications): + Remove the processing for aspect Refined_Pre. + (Check_Aspect_At_Freeze_Point): Remove the entry for aspect + Refined_Pre. + * sem_prag.adb (Analyze_Pragma): Refined_Pre is no longer a + valid assertion kind. Remove the analysis of pragma Refined_Pre. + (Analyze_Refined_Pragma): Update the comment on usage. + (Find_Related_Subprogram_Or_Body): Update the comment on + usage. Pragma Refined_Pre is no longer processed by this routine. + (Is_Valid_Assertion_Kind): Refined_Pre is no longer a valid + assertion kind. + * snames.ads-tmpl: Remove predefined name Refined_Pre. Remove + the pragma id for Refined_Pre. + +2013-10-17 Hristian Kirtchev + + * exp_util.adb, exp_util.ads (Entity_Of): Moved to Sem_Util. + * sem_prag.adb (Analyze_Global_In_Decl_List): Mark a null + item list as being analyzed. + (Analyze_Global_List): Mark a + null global list and multiple global items as being analyzed. + (Analyze_Input_Item): Check the unit that defines the input + variable or state, not the reference to it. + * sem_util.ads, sem_util.adb (Entity_Of): Moved from Exp_Util. Ensure + that the input has an entity. + +2013-10-17 Thomas Quinot + + * exp_util.adb (Get_Current_Value_Condition, + Set_Current_Value_Condition): Handle the case of expressions + with actions * exp_util.adb (Insert_Actions): Handle the case + of an expression with actions whose Actions list is empty. + * exp_util.adb (Remove_Side_Effects.Side_Effect_Free): An + expression with actions that has no Actions and whose Expression + is side effect free is itself side effect free. + * exp_util.adb (Remove_Side_Effects): Do not set an incorrect etype on + temporary 'R' (Def_Id), which is in general an access to Exp_Type, not + an Exp_Type. + * sem_res.adb (Resolve): For an expression with + actions, resolve the expression early. * sem_res.adb + (Resolve_Expression_With_Actions): Rewrite an expression with + actions whose value is compile time known and which has no + actions into just its expression, so that its constant value is + available downstream. + * sem_res.adb (Resolve_Short_Circuit): + Wrap the left operand in an expression with actions to contain + any required finalization actions. + * exp_ch4.adb (Expand_Expression_With_Actions): For an + expression with actions returning a Boolean expression, ensure + any finalization action is kept within the Actions list. + * sem_warn.adb (Check_References, Check_Unset_Reference): add + missing circuitry to handle expressions with actions. + * checks.adb (Ensure_Valid): For an expression with actions, + insert the validity check on the Expression. + * sem_ch13.adb (Build_Static_Predicate.Get_RList): An expression + with actions that has a non-empty Actions list is not static. An + expression with actions that has an empty Actions list has the + static ranges of its Expression. + * sem_util.adb (Has_No_Obvious_Side_Effects): An expression with + actions with an empty Actions list has no obvious side effects + if its Expression itsekf has no obvious side effects. + +2013-10-17 Ed Schonberg + + * sem_aux.ads, sem_aux.adb (Is_Immutably_Limited_Type): Make + predicate compatible with Ada 2012 definition + (Is_Limited_View): New name for previous version of + Is_Immutably_Limited_Type. Predicate is true for an untagged + record type with a limited component. + * exp_ch7.adb, exp_ch6.adb, exp_ch4.adb, exp_ch3.adb, exp_aggr.adb, + sem_util.adb, sem_res.adb, sem_prag.adb, sem_attr.adb, sem_ch8.adb, + sem_ch6.adb, sem_ch3.adb, exp_util.adb: Use Is_Limited_View + * freeze.adb Use Is_Immutably_Limited_Type to check the legality + of references to the current instance, Is_Limited_View otherwise. + +2013-10-17 Hristian Kirtchev + + * sem_ch13.adb (Analyze_Aspect_Specifications): Flag aspect + Refined_Pre as not supported. + * sem_prag.adb (Analyze_Pragma): Ignore pragma Refined_Pre. + +2013-10-17 Ed Schonberg + + * sem_ch12.adb (Validated_Access_Subprogram_Instance): According + to AI05-288, actuals for access_to_subprograms must be subtype + conformant with the generic formal. Previous to AI05-288 + only mode conformance was required, but the AI is a binding + interpretation that applies to previous versions of the language, + +2013-10-17 Robert Dewar + + * gnat_ugn.texi: Minor text correction. + * ug_words: Add entry for -gnateu /IGNORE_UNRECOGNIZED. + * vms_data.ads: Add /IGNORE_UNRECOGNIZED for -gnateu. + +2013-10-17 Tristan Gingold + + * impunit.adb (Non_Imp_File_Names_95): Add g-cppexc. + +2013-10-17 Hristian Kirtchev + + * sem_prag.adb (Analyze_Constituent): Move the check + concerning option Part_Of to routine Check_Matching_Constituent. + (Check_Matching_Constituent): Verify that an abstract state + that acts as a constituent has the proper Part_Of option in + its aspect/pragma Abstract_State. Account for the case when a + constituent comes from a private child or private sibling. + * sem_util.ads, sem_util.adb (Is_Child_Or_Sibling): New routine. + +2013-10-17 Tristan Gingold + + * g-cppexc.adb, g-cppexc.ads: New files. + * gcc-interface/Makefile.in: Add g-cppexc when building zcx runtimes. + +2013-10-17 Thomas Quinot + + * exp_ch7.adb: Minor reformatting. + +2013-10-17 Ed Schonberg + + * sem_dim.adb (Process_Minus, Process_Divide): Label dimension + expression with standard operator and type, for pretty-printing + use. + +2013-10-17 Bob Duff + + * gnat_ugn.texi: Document --pp-new and --pp-old switches. + +2013-10-17 Hristian Kirtchev + + * einfo.adb: Flag 159 is now known as From_Limited_With. Replace + all references to attribute From_With_Type with From_Limited_With. + (From_With_Type): Renamed to From_Limited_With. + (Set_From_With_Type): Renamd to Set_From_Limited_With. + * einfo.ads: Remove attribute From_With_Type and occurrences in + nodes. Add attribute From_Limited_With along with occurrences + in nodes. + (From_With_Type): Renamed to From_Limited_With along with pragma Inline. + (Set_From_With_Type): Renamed to + Set_From_Limited_With along with pragma Inline. + * sem_ch7.adb, sem_ch8.adb, sem_ch12.adb, sem_ch13.adb, sem_disp.adb, + sem_res.adb, sem_type.adb, sem_util.adb, sem_warn.adb, + exp_attr.adb, exp_disp.adb, freeze.adb, itypes.adb, layout.adb, + lib-writ.adb, rtsfind.adb, sem_attr.adb, sem_aux.adb, sem_ch3.adb, + sem_ch4.adb: Replace all references to attribute From_With_Type + with From_Limited_With. + * sem_ch6.adb: Replace all references to attribute From_With_Type + with From_Limited_With. + (Designates_From_With_Type): Renamed to Designates_From_Limited_With. + (Process_Formals): Update the call to Designates_From_With_Type. + * sem_ch10.adb: Replace all references to attribute From_With_Type + with From_Limited_With. + (Build_Limited_Views): Reimplemented. + * gcc-interface/decl.c Replace all references to attribute + From_With_Type with From_Limited_With. + (finalize_from_with_types): Renamed to finalize_from_limited_with. + * gcc-interface/gigi.h (finalize_from_with_types): Renamed to + finalize_from_limited_with. + * gcc-interface/trans.c: Replace all references to attribute + From_With_Type with From_Limited_With. + (Compilation_Unit_to_gnu): Update the call to finalize_from_with_types. + +2013-10-17 Pascal Obry + + * projects.texi: Update VCS_Kind documentation. + +2013-10-17 Matthew Heaney + + * a-convec.adb, a-coinve.adb, a-cobove.adb (Insert, Insert_Space): + Inspect value range before converting type. + +2013-10-17 Hristian Kirtchev + + * sem_prag.adb (Analyze_Pragma): Flag the use of pragma Refined_Pre as + illegal. + +2013-10-17 Vincent Celier + + * gnat_ugn.texi: Remove VMS conversion of -gnatet and -gnateT, + now that they are both in ug_words. + * ug_words: Update qualifier for -gnatet Add qualifier for -gnateT + * vms_data.ads: Update qualifier for -gnatet Add qualifier + for -gnateT + * projects.texi: Continue to update the project documentation + for VMS. + +2013-10-17 Robert Dewar + + * einfo.ads, einfo.adb (Has_Body_References): New flag. + (Body_References): New field. + * sem_prag.adb (Record_Possible_Body_Reference): New procedure + (Analyze_Input_Output): Call Record_Possible_Body_Reference + (Analyze_Global_Item): Call Record_Possible_Body_Reference + (Analyze_Refinement_Clause): Output messages if illegal global refs. + +2013-10-17 Thomas Quinot + + * freeze.adb (Check_Component_Storage_Order): Reject a record or + array type that does not have an explicit Scalar_Storage_Order + attribute definition if a component of the record, or the + elements of the array, have one. + * gnat_rm.texi (attribute Scalar_Storage_Order): Document the above + rule. + +2013-10-17 Vincent Celier + + * gnat_ugn.texi: Add examples of switches -gnateD, including + one where the value is a string. + * projects.texi: Do not convert switches in project files to + VMS qualifiers. + +2013-10-17 Robert Dewar + + * sem_prag.adb (Report_Extra_Clauses): Don't complain about + refinements with null input since null should be considered to + always match. + +2013-10-17 Robert Dewar + + * gnat_ugn.texi: Document -gnatw.y/-gnatw.Y. + * opt.ads (List_Body_Required_Info): New flag. + * prep.adb: Minor reformatting. + * sem_ch7.adb (Unit_Requires_Body_Info): New + procedure (Analyze_Package_Specification): Add call to + Unit_Requires_Body_Info. + * ug_words: Add entries for -gnatw.y and -gnatw.Y. + * usage.adb: Add line for new warning switch -gnatw.y/.Y. + * vms_data.ads: Add entry for [NO_]WHY_SPEC_NEEDS_BODY warning + qualifier. + * warnsw.ads, warnsw.adb: Implement new warning switch -gnatw.y/.Y. + +2013-10-17 Yannick Moy + + * sem_ch8.adb (Find_Direct_Name): Keep track of assignments for + renamings in SPARK mode. + +2013-10-17 Yannick Moy + + * exp_spark.adb (Expand_SPARK): Remove special case for NOT IN + operation. + * sinfo.ads: Add special comment section to describe SPARK mode + effect on tree. + * exp_spark.ads: Remove comments, moved to sinfo.ads. + +2013-10-17 Yannick Moy + + * exp_ch3.adb (Expand_Freeze_Class_Wide_Type, + Expand_Freeze_Class_Wide_Type, Expand_Freeze_Class_Wide_Type): + Remove useless special cases. + * exp_ch4.adb (Expand_Allocator_Expression, Expand_N_Allocator, + Expand_N_Op_Expon): Remove useless special cases. + * exp_ch6.adb (Is_Build_In_Place_Function_Call): Disable build-in-place + in SPARK mode by testing Full_Expander_Active instead of + Expander_Active. + (Make_Build_In_Place_Call_In_Allocator): Remove useless special case. + * exp_util.adb (Build_Allocate_Deallocate_Proc): Remove + useless special case. + * sem_eval.adb (Compile_Time_Known_Value): Remove special handling of + deferred constant. + +2013-10-17 Yannick Moy + + * gnat_ugn.texi: Document -gnateT and target file format. + +2013-10-17 Vincent Celier + + * prep.adb (Check_Command_Line_Symbol_Definition): Is_A_String is + always False, even when the value starts and ends with double quotes. + +2013-10-17 Tristan Gingold + + * a-exexpr-gcc.adb: Synchronize declarations of other/all others. + +2013-10-17 Thomas Quinot + + * exp_pakd.adb: Add missing guard protecting Reverse_Storage_Order + call. + * sem_res.adb: Minor code cleanup: use named parameter association + (not positional) for Boolean parameter Sec_Stack in calls to + Establish_Transient_Scope. + +2013-10-15 Thomas Quinot + + * exp_pakd.adb (Expand_Packed_Element_Set, + Expand_Packed_Element_Reference): Adjust for the case of packed + arrays of reverse-storage-order types. + +2013-10-15 Robert Dewar + + * sem_prag.adb: Minor reformatting. + +2013-10-15 Ed Schonberg + + * sem_attr.adb (Analyze_Attribute_Specification, case + To_Address): If the expression is an identifier, do not modify + its type; it will be converted when necessary, and the type of + the expression must remain consistent with that of the entity + for back-end consistency. + +2013-10-15 Robert Dewar + + * sem_ch7.adb (Unit_Requires_Body): Add flag + Ignore_Abstract_State (Analyze_Package_Specification): Enforce + rule requiring Elaborate_Body if a non-null abstract state is + specified for a library-level package. + * sem_ch7.ads (Unit_Requires_Body): Add flag Ignore_Abstract_State. + +2013-10-15 Hristian Kirtchev + + * sem_prag.adb (Analyze_Constituent): When + a state acts as a constituent of another state, ensure that + the said state has a Part_Of dependency in its corresponding + aspect/pragma Abstract_State. + +2013-10-15 Robert Dewar + + * par-ch4.adb (P_If_expression): Handle redundant ELSE cleanly. + +2013-10-15 Thomas Quinot + + * atree.ads (New_Copy, Relocate_Node): Improve documentation + (note that these subprograms reset Is_Overloaded). + +2013-10-15 Thomas Quinot + + * checks.adb (Check_Needed): Handle the case where the test in + the left operand of the short circuit is wrapped in a qualified + expression, type conversion, or expression with actions. + +2013-10-15 Thomas Quinot + + * sem_type.adb, sem_type.ads (Save_Interps): Also propagate + Is_Overloaded to New_N, for consistency. + +2013-10-15 Ed Schonberg + + * a-tienau.adb (Put): Use file parameter to query values of + current column and line length. + +2013-10-15 Robert Dewar + + * sem_prag.adb, exp_ch11.adb, a-except-2005.adb, a-except-2005.ads: + Minor reformatting. + +2013-10-15 Eric Botcazou + + * targparm.ads: Fix minor typo in comment. + +2013-10-15 Ed Schonberg + + * lib-xref.adb: handle full views that are derived from private + types. + * sem_util.adb (Build_Elaboration_Entity): Do nothing in ASIS + mode: the elaboration entity is not in the source, and plays no + role in semantic analysis. Minor reformatting. + +2013-10-15 Tristan Gingold + + * adaint.c (__gnat_get_executable_load_address): Remove AIX + specific code. + +2013-10-15 Ed Schonberg + + * exp_aggr.adb (Aggr_Size_OK): Refine criteria to better handle + large static aggregates with static record components, to avoid + generating a large number of asignments. Conversely, improve + handling of aggregates initialized by a single association, + which are most efficiently implemented with a loop. + +2013-10-15 Hristian Kirtchev + + * sem_prag.adb (Analyze_Input_Item): Emit an + error when the input item comes from the related package. + +2013-10-15 Arnaud Charlet + + * exp_ch11.adb (Expand_Exception_Handlers): Restrict previous + change. + +2013-10-14 Tristan Gingold + + * gcc-interface/gigi.h (standard_datatypes): Add + ADT_set_exception_parameter_decl + (set_exception_parameter_decl): New macro. + * gcc-interface/trans.c (gigi): Initialize set_exception_parameter_decl. + (Exception_Handler_to_gnu_zcx): Initialize the choice parameter. + * gcc-interface/trans.c: Synchronize declarations of other/all others + between gigi and the runtime. + +2013-10-14 Robert Dewar + + * exp_attr.adb (Find_Stream_Subprogram): Optimize + Storage_Array stream handling. + (Find_Stream_Subprogram): Optimize Stream_Element_Array stream handling + * rtsfind.ads: Add entry for Stream_Element_Array Add + entries for RE_Storage_Array subprograms Add entries for + RE_Stream_Element_Array subprograms + * s-ststop.ads, s-ststop.adb: Add processing for System.Storage_Array. + Add processing for Ada.Stream_Element_Array. + +2013-10-14 Tristan Gingold + + * a-except-2005.ads, a-except-2005.adb: + (Get_Exception_Machine_Occurrence): New function. + * raise-gcc.c (__gnat_unwind_exception_size): New constant. + +2013-10-14 Robert Dewar + + * sem_res.adb: Minor fix to error message text. + * errout.ads, erroutc.ads: Minor reformatting. + * s-ststop.ads, s-stratt.ads: Clean up documentation of block IO + mode for streams. + * s-stratt-xdr.adb: Minor comment update. + +2013-10-14 Robert Dewar + + * sem_aux.adb, sem_aux.ads, sem_prag.adb: Minor reformatting. + +2013-10-14 Ed Schonberg + + * sem_res.adb (Resolve_Actuals): Add error message for a + subprogram with an in-out parameter when used in a predicate, + to clarify subsequent error at the point of call. + +2013-10-14 Hristian Kirtchev + + * sem_prag.adb (Is_Matching_Input): Consume a matching null input. + +2013-10-14 Robert Dewar + + * freeze.adb (Freeze_Record): Don't give warning about packed + and foreign convention. + +2013-10-14 Ed Schonberg + + * sem_aux.adb, sem_aux.ads (Package_Specification): New function, to + replace the less efficient idiom Specification. + (Unit_Declaration_Node (Pack_Id)), which handles library units and + child units. + * sem_ch3.adb, sem_ch10.adb, sem_prag.adb, sem_ch12.adb, sem_ch6.adb, + exp_disp.adb, sem_cat.adb, exp_dist.adb: Use Package_Specification. + +2013-10-14 Hristian Kirtchev + + * exp_attr.adb (Expand_Update_Attribute): Update the call to + Process_Range_Update. + (Process_Range_Update): Add new formal parameter Typ and associated + comment on usage. Add local constant Index_Typ. Add a type conversion + as part of the indexed component to ensure that the loop variable + corresponds to the index type. + +2013-10-14 Tristan Gingold + + * a-exexpr-gcc.adb: Adjust comment. + (Others_Value, All_Others_Value, + Unhandled_Others_Value): Declare as Character to slightly reduce + memory footprint. + +2013-10-14 Robert Dewar + + * freeze.adb (Size_Known): Size is not known for packed record + with aliased components + +2013-10-14 Robert Dewar + + * sem_ch3.adb: Minor fix to error message. + * a-exexpr-gcc.adb, sem_util.adb, sem_case.adb, exp_ch11.adb: Minor + reformatting. + +2013-10-14 Arnaud Charlet + + * exp_ch11.adb: Fix typo. + +2013-10-14 Thomas Quinot + + * exp_util.ads: Minor reformatting. + +2013-10-14 Ed Schonberg + + * sem_ch3.adb (Build_Derived_Record_Type): Reject full views + with no explicit discriminant constraints, when the parents of + the partial view and the full view are constrained subtypes with + different constraints. + +2013-10-14 Robert Dewar + + * freeze.adb (Freeze_Array_Type): New procedure, abstracts out + this code from Freeze. + (Freeze_Array_Type): Detect pragma Pack overriding foreign convention + (Freeze_Record_Type): Ditto. + +2013-10-14 Hristian Kirtchev + + * sem_prag.adb (Analyze_Dependency_Clause): Add new local variable + Non_Null_Output_Seen. Update the call to Analyze_Input_Output. + (Analyze_Input_Item): Streamline the detection mechanism of null and + non-null items. + (Analyze_Input_List): Add new local variable + Non_Null_Input_Seen. Update all calls to Analyze_Input_Output. + (Analyze_Input_Output): Add new formal parameter Non_Null_Seen + and update the related comment on usage. Update the + recursive call to itself. Attribute 'Result is now treated + as a non-null item. Detect mixes of null and non-null items. + (Analyze_Initialization_Item): Streamline the detection mechanism + of null and non-null items. + +2013-10-14 Vincent Celier + + * projects.texi: Add documentation for the new project level + attribute Library_Rpath_Options. + +2013-10-14 Tristan Gingold + + * a-exexpr-gcc.adb (Set_Exception_Parameter): New procedure. + (Set_Foreign_Occurrence): New procedure, extracted from + Setup_Current_Excep. + * exp_ch11.adb (Expand_Exception_Handlers): Do not expand choice + parameter in case of zcx. + * sem_ch11.adb (Analyze_Exception_Handlers): Need debug info + for the choice parameter. + * raise-gcc.c: Add comments. + +2013-10-14 Hristian Kirtchev + + * aspects.adb: Add an entry in table Canonical_Aspect for + Initial_Condition. + * aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument, + Aspect_Names and Aspect_Delay for Initial_Condition. + * einfo.adb (Get_Pragma): Include pragma Initial_Condition to + categorization pragmas. + * einfo.ads (Get_Pragma): Update comment on usage. + * exp_ch7.adb (Expand_N_Package_Body): Add a runtime check to + verify the assertion introduced by pragma Initial_Condition. + (Expand_N_Package_Declaration): Add a runtime check to + verify the assertion introduced by pragma Initial_Condition. + (Expand_Pragma_Initial_Condition): New routine. + * par-prag: Include pragma Initial_Condition to the list of + pragmas that do not require special processing by the parser. + * sem_ch3.adb (Analyze_Declarations): Analyze pragma + Initial_Condition at the end of the visible declarations. + * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing + for aspect Initial_Condition. + (Check_Aspect_At_Freeze_Point): + Aspect Initial_Condition does not need inspection at freezing. + * sem_prag.adb (Analyze_Initial_Condition_In_Decl_Part): + New routine. + (Analyze_Pragma): Update all calls + to Check_Declaration_Order. Add processing for pragma + Initial_Condition. Initial_Condition is now a valid assertion + kind. Add an entry in table Sig_Flags for Initial_Condition. + (Check_Declaration_Order): Reimplemented to handle arbitrary + pragmas. + (Is_Valid_Assertion_Kind): Add an entry for + Initial_Condition. + * sem_pag.ads (Analyze_Initial_Condition_In_Decl_Part): + New routine. + * sem_util.adb (Add_Contract_Item): Pragma Initial_Condition + can now be associated with a package spec. + * sem_util.ads (Add_Contract_Item): Update comment on usage. + * sinfo.ads: Update the documentation of node N_Contract + * snames.ads-tmpl: Add new predefined name Initial_Condition. Add + new pragma id for Initial_Condition. + +2013-10-14 Thomas Quinot + + * exp_pakd.adb: Minor reformatting. + +2013-10-14 Robert Dewar + + * exp_prag.adb: Minor reformatting. + +2013-10-14 Ed Schonberg + + * sem_case.adb (Check_Against_Predicate): Handle properly an + others clause in various cases. + +2013-10-14 Hristian Kirtchev + + * sem_prag.adb (Check_Matching_Constituent): Do + not inspect the hidden states if there are no hidden states. This + case arises when the constituents are states coming from a + private child. + +2013-10-14 Doug Rupp + + * init.c [ARMEL and VxWorks] (__gnat_map_signal): Re-arm guard + page by clearing VALID bit vice setting page protection. + +2013-10-14 Arnaud Charlet + + * gnat_rm.texi, adaint.c: Fix typo. + +2013-10-14 Ed Schonberg + + * sem_util.adb (Is_Variable, In_Protected_Function): In the + body of a protected function, the protected object itself is a + constant (not just its components). + +2013-10-14 Vincent Celier + + * snames.ads-tmpl: Add new standard name Library_Rpath_Options. + +2013-10-14 Tristan Gingold + + * sem_prag.adb (Process_Import_Or_Interface): Allow importing + of exception using convention Cpp. + * exp_prag.adb (Expand_Pragma_Import_Or_Interface): Expand cpp + imported exceptions. + * raise-gcc.c (is_handled_by): Filter C++ exception occurrences. + * gnat_rm.texi: Document how to import C++ exceptions. + +2013-10-14 Jose Ruiz + + * sem_ch13.adb (Sem_Ch13.Analyze_Aspect_Specification): For + Priority and CPU aspects, when checking, issue a warning only + if it is obviously not a main program. + +2013-10-14 Tristan Gingold + + * adaint.c: Fix condition for AIX. Minor reformatting. + +2013-10-14 Robert Dewar + + * sem_ch3.adb, sem_prag.adb, prj.ads: Minor reformatting. + +2013-10-14 Hristian Kirtchev + + * sem_prag.adb (Analyze_Depends_In_Decl_Part): + Rename Outputs_Seen to All_Outputs_Seen and update all occurrences + of the variable. + (Analyze_Input_Output): Add an item to + All_Inputs_Seen when it is an input or a self-referential output. + (Check_Mode): Comment reformatting. + (Analyze_Abstract_State): Remove the restriction that an Export state + must also have mode Input_Only or Output_Only. + +2013-10-14 Hristian Kirtchev + + * einfo.adb: Flag 263 is now known as Has_Visible_Refinement. + (Has_Non_Null_Refinement): New routine. + (Has_Null_Refinement): The routine is now synthesized. + (Has_Visible_Refinement): New routine. + (Set_Has_Visible_Refinement): New routine. + (Write_Entity_Flags): Remove the output for + Has_Null_Refinement. Add output for Has_Visible_Refinement. + * einfo.ads: Update the occurrences of Has_Non_Null_Refinement, + Has_Null_Refinement and Has_Visible_Refinement in entities. + (Has_Non_Null_Refinement): New synthesized attribute. + (Has_Null_Refinement): This attribute is now synthesized. + (Has_Visible_Refinement): New routine with corresponding + pragma Inline. + (Set_Has_Visible_Refinement): New routine with corresponding pragma + Inline. + * sem_ch3.adb (Analyze_Declarations): Add new local + variable In_Package_Body. Remove state refinements from + visibility at the end of the package body declarations. + (Remove_Visible_Refinements): New routine. + * sem_prag.adb (Analyze_Constituent): Collect a null + constituent and mark the state as having visible refinement. + (Analyze_Global_Item): Use attribute Has_Visible_Refinement to + detect a state with visible refinement. + (Analyze_Input_Output): Use attribute Has_Visible_Refinement to detect + a state with visible refinement. + (Check_Dependency_Clause): Use attribute Has_Non_Null_Refinement rather + than checking the contents of list Refinement_Constituents. + (Check_In_Out_States): Use attribute Has_Non_Null_Refinement rather + than checking the contents of list Refinement_Constituents. + (Check_Input_States): Use attribute Has_Non_Null_Refinement rather + than checking the contents of list Refinement_Constituents. + (Check_Matching_Constituent): Mark a state as having visible refinement. + (Check_Output_States): Use attribute Has_Non_Null_Refinement rather than + checking the contents of list Refinement_Constituents. + (Check_Refined_Global_Item): Use attribute Has_Visible_Refinement + to detect a state with visible refinement. + (Is_Matching_Input): Use attribute Has_Non_Null_Refinement rather than + checking the contents of list Refinement_Constituents. + * sem_util.adb (Is_Refined_State): Use attribute + Has_Visible_Refinement to detect a state with visible refinement. + +2013-10-14 Hristian Kirtchev + + * sem_prag.adb (Check_Mode): Do not emit an + error when inspecting a self referencial output item of an + unconstrained type. + +2013-10-14 Tristan Gingold + + * exp_prag.adb (Expand_Pragma_Import_Export_Exception): Fix + target type for code of VMS imported exception. + * init.c: Replace Exception_Code by void *. + * s-vmexta.adb (Hash, Base_Code_In): Adjust code after changing + the type of Exception_Code. + +2013-10-14 Vincent Celier + + * prj.ads: Minor comment updates. + * prj-attr.adb: New attribute Library_Rpath_Options. + +2013-10-14 Robert Dewar + + * gnat_rm.texi: Library_Level attribute now applies to an + entity name. + * sem_attr.adb (Analyze_Attribute, case Library_Level): Prefix + is now an entity name. + +2013-10-14 Jose Ruiz + + * sem_ch13.adb (Analyze_Aspect_Specification): For + Priority and CPU aspects in subprograms, the expression in the + aspect is analyzed and exported. + +2013-10-14 Robert Dewar + + * s-valuti.adb, prep.adb, scng.adb, errout.adb: Minor reformatting. + +2013-10-14 Eric Botcazou + + * adaint.c: Further disable __gnat_get_executable_load_address + for Linux. + +2013-10-14 Vincent Celier + + * gnat_ugn.texi: Add documentation for comparing symbols to + integers in preprocessing expressions. + +2013-10-14 Jose Ruiz + + * sem_prag.adb (Analyze_Aspect_Specification): For + Priority and CPU aspects in subprograms, the expression in the + aspect is analyzed and exported. + (Analyze_Pragma): When having a Priority pragma in the + main subprogram, load a unit that will force the initialization + of the tasking run time, which is needed for setting the required + priority. + +2013-10-14 Vincent Celier + + * prj-nmsc.adb (Check_Interfaces): Put in Other_Interfaces all + non Ada interface files. + * prj.ads (Project_Data): New component Other_Interfaces. + +2013-10-14 Arnaud Charlet + + * gcc-interface/Makefile.in: Target pairs clean ups. + +2013-10-14 Vincent Celier + + * errout.adb (Write_Error_Summary): Do not output the number + of lines when Main_Source_File is unknown. + (Output_Messages): Do not write the header when Main_Source_File is + unknown. + +2013-10-14 Vincent Celier + + * prep.adb (Expression): Accept terms of the form 'symbol + integer", where relop is =, <, <=, > or >=. + (Parse_Def_File): Accept literal integer values. + * gcc-interface/Make-lang.in: Add s-valint.o, s-valuns.o and + s-valuti.o to the compiler object files. + +2013-10-14 Robert Dewar + + * exp_prag.adb, exp_ch11.adb, s-exctab.adb: Minor reformatting. + * usage.adb: Add line for -gnateu switch. + +2013-10-14 Vincent Celier + + * lib-writ.ads: Add comments to indicate that a path name in + D lines may be quoted if the path name includes directories + with spaces. + +2013-10-14 Robert Dewar + + * debug.adb: Document -gnatd.E. + * gnat1drv.adb (Adjust_Global_Switches): Set Error_To_Warning + if -gnatd.E set. + * opt.ads (Error_To_Warning): New switch. + * osint.adb: Minor reformatting. + * sem_warn.adb (Warn_On_Overlapping_Actuals): Overlap is error + in some cases in Ada 2012 mode (unless Error_To_Warning) is set. + * sem_warn.ads (Warn_On_Overlapping_Actuals): Document error + in Ada 2012 mode. + +2013-10-14 Tristan Gingold + + * cstand.adb: Add a comment for Standard_Exception_Type. + +2013-10-14 Ed Schonberg + + * exp_ch4.adb (Process_Transient_Object): If a transient scope + has already been created, use the corresponding Node_To_Be_Wrapped + as the insertion point for the controlled actions. + +2013-10-14 Tristan Gingold + + * cstand.adb (Create_Standard): Change Import_Code component + of Standard_Exception_Type to Foreign_Data. Its type is now + Standard_A_Char (access to character). + * exp_prag.adb (Expand_Pragma_Import_Export_Exception): Adjust + definition of Code to match the type of Foreign_Data. + * s-stalib.ads (Exception_Data): Replace Import_Code by Foreign_Data + Change the definition of standard predefined exceptions. + (Exception_Code): Remove. + * raise.h (Exception_Code): Remove (Exception_Data): Replace + Import_Code field by Foreign_Data. + * rtsfind.ads (RE_Exception_Code): Remove + (RE_Import_Address): Add. + * a-exexpr-gcc.adb (Import_Code_For): Replaced by Foreign_Data_For. + * exp_ch11.adb (Expand_N_Exception_Declaration): Associate null + to Foreign_Data component. + * raise-gcc.c (Import_Code_For): Replaced by Foreign_Data_For. + (is_handled_by): Add comments. Use replaced function. Change + condition so that an Ada occurrence is never handled by + Foreign_Exception. + * s-exctab.adb (Internal_Exception): Associate Null_Address to + Foreign_Data component. + * s-vmexta.adb, s-vmexta.ads (Exception_Code): Declare Replace + SSL.Exception_Code by Exception_Code. + +2013-10-14 Robert Dewar + + * gnat_ugn.texi: Document -gnateu switch. + * opt.ads (Ignore_Unrecognized_VWY_Switches): New switch. + * stylesw.adb: Ignore unrecognized switch if + Ignore_Unrecognized_VWY_Switches set. + * switch-c.adb: Implement -gnateu (sets + Ignore_Unrecognized_VWY_Switches). + * validsw.adb: Ignore unrecognized switch if + Ignore_Unrecognized_VWY_Switches set. + * warnsw.adb: Ignore unrecognized switch if + Ignore_Unrecognized_VWY_Switches set. + +2013-10-14 Robert Dewar + + * exp_prag.adb, sem_prag.adb, a-exexda.adb, s-vmexta.ads: Minor + reformatting. + +2013-10-14 Vincent Celier + + * ali.adb (Get_File_Name): New Boolean parameter May_Be_Quoted, + defaulted to False. Calls Get_Name with May_Be_Quoted. + (Get_Name): New Boolean parameter May_Be_Quoted, defaulted to + False. If May_Be_Quoted is True and first non blank charater is + '"', unquote the name. + (Scan_ALI): For the file/path name on the D line, call Get_File_Name + with May_Be_Quoted = True, as it may have been quoted. + * lib-util.adb, lib-util.ads (Write_Info_Name_May_Be_Quoted): New + procedure to write file/path names that may contain spaces and if they + do are quoted. + * lib-writ.adb (Write_ALI): Use new procedure + Write_Info_Name_May_Be_Quoted to write file/path names on D lines. + +2013-10-14 Hristian Kirtchev + + * sem_prag.adb (Analyze_Depends_In_Decl_Part, + Analyze_Global_In_Decl_Part, + Analyze_Pre_Post_Condition_In_Decl_Part): Install the subprogram + and its formals only when it is not already installed. + * sem_util.adb (Is_Refined_State): A state is refined when it + has a non-empty list of constituents. + +2013-10-14 Tristan Gingold + + * adaint.c: Disable __gnat_get_executable_load_address for linux. + * exp_prag.adb: Add comment in Expand_Pragma_Import_Export_Exception. + +2013-10-14 Tristan Gingold + + * s-vmexta.ads: Add comments. + +2013-10-14 Hristian Kirtchev + + * sem_ch6.adb (Analyze_Subprogram_Body_Contract): Add processing + for pragma Refined_State. + * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing + for aspect Refined_Depends. + * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): + Use Find_Related_Subprogram_Or_Body to find the related + context. Use the current scope when determining whether to + ensure proper visibility. + (Analyze_Depends_In_Decl_Part): + Add local variable Spec_Id. Update the comment on usage of + Subp_Id. Use Find_Related_Subprogram_Or_Body to find the + related context. Extract the corresponding spec of the body + (if any). Use the current scope when determining when to + ensure proper visibility. + (Analyze_Global_In_Decl_Part): + Add local variable Spec_Id. Update the comment on usage of + Subp_Id. Use Find_Related_Subprogram_Or_Body to find the + related context. Extract the corresponding spec of the body + (if any). Use the current scope when determining when to + ensure proper visibility. + (Analyze_Global_Item): Use the + entity of the subprogram spec when performing formal parameter + checks. Perform state-related checks. + (Analyze_Input_Output): + Use Is_Attribute_Result to detect 'Result. Query the + entity of a subprogram spec when verifying the prefix of + 'Result. Perform state-related checks. (Analyze_Pragma): + Merge the analysis of Refined_Depends and Refined_Global. + (Analyze_Refined_Depends_In_Decl_Part): Provide implemenation. + (Analyze_Refined_Global_In_Decl_Part): Move state-related checks + to the body of Analyze_Global_In_Decl_Part. Rename local constant + List to Items. (Analyze_Refined_Pragma): Remove circuitry to + find the proper context, use Find_Related_Subprogram_Or_Body + instead. + (Check_Function_Return): Query the entity of + the subprogram spec when verifying the use of 'Result. + (Check_In_Out_States, Check_Input_States, Check_Output_States): + Avoid using Has_Null_Refinement to detect a state with + a non-null refinement, use the Refinement_Constituents + list instead. + (Check_Matching_Constituent): Remove initialization code. + (Check_Mode_Restriction_In_Function): Use the entity of the subprogram + spec when verifying mode usage in functions. + (Collect_Global_Items): New routine. + (Collect_Subprogram_Inputs_Outputs): Add local + variable Spec_Id. Add circuitry for bodies-as-specs. Use + pragma Refined_Global when collecting for a body. + (Create_Or_Modify_Clause): Use the location of the + clause. Rename local variable Clause to New_Clause to avoid + confusion and update all occurrences. Use Is_Attribute_Result + to detect 'Result. + (Find_Related_Subprogram): Removed. + (Find_Related_Subprogram_Or_Body): New routine. + (Is_Part_Of): Move routine to top level. + (Normalize_Clause): Update the + comment on usage. The routine can now normalize a clause with + multiple outputs by splitting it. + (Collect_Global_Items): + Rename local constant List to Items. Remove the check for + a null list. + (Requires_Profile_Installation): Removed. + (Split_Multiple_Outputs): New routine. + * sem_prag.ads: Update the comments on usage of various + pragma-related analysis routines. + * sem_util.adb (Contains_Refined_State): The routine can now + process pragma [Refined_]Depends. + (Has_Refined_State): Removed. + (Has_State_In_Dependency): New routine. + (Has_State_In_Global): New routine. + (Is_Attribute_Result): New routine. + * sem_util.ads (Is_Attribute_Result): New routine. + +2013-10-14 Emmanuel Briot + + * s-regpat.adb (Compile): Fix finalization of the automaton + when its size was automatically computed to be exactly 1000 bytes. + +2013-10-14 Ed Schonberg + + * sem_ch3.adb (Complete_Private_Subtype): If the full view of + the base type is constrained, the full view of the subtype is + known to be constrained as well. + +2013-10-14 Vincent Celier + + * projects.texi: Add documentation for new attributes of package + Clean: Artifacts_In_Object_Dir and Artifacts_In_Exec_Dir. + +2013-10-14 Tristan Gingold + + * adaint.c, adaint.h (__gnat_get_executable_load_address): + New function. + * a-exexda.adb (Append_Info_Basic_Exception_Traceback): Add + executable load address (Basic_Exception_Tback_Maxlength): Adjust. + +2013-10-14 Vincent Celier + + * prj-attr.adb: New attributes in package Clean: + Artifacts_In_Exec_Dir, Artifacts_In_Object_Dir. + * prj-nmsc.adb (Process_Clean (Attributes)): New + procedure to process attributes Artifacts_In_Exec_Dir and + Artifacts_In_Object_Dir in package Clean. + * prj.ads (Project_Configuration): New components + Artifacts_In_Exec_Dir and Artifacts_In_Object_Dir. + * snames.ads-tmpl: New standard names Artifacts_In_Exec_Dir and + Artifacts_In_Object_Dir used only by gprclean. + +2013-10-14 Robert Dewar + + * exp_attr.adb (Expand_N_Attribute_Reference): Add error + entry for Library_Level attribute (which should not survive + to expansion) + * gnat_rm.texi: Document attribute Library_Level + * sem_attr.adb (Analyze_Attribute, case Library_Level): Implement + this new attribute (Set_Boolean_Result): Replaces Set_Result + (Check_Standard_Prefix): Document that Check_E0 is called + (Check_System_Prefix): New procedure + * snames.ads-tmpl: Add entry for Library_Level attribute + +2013-10-14 Robert Dewar + + * exp_ch6.adb, sinfo.ads: Minor reformatting. + * checks.adb (Overlap_Check): Use identifier casing in messages. + +2013-10-14 Robert Dewar + + * einfo.ads, einfo.adb (Default_Aspect_Component_Value): Is on base type + only. + * exp_aggr.adb (Expand_Array_Aggregate): Handle proper + initialization of <> component. + * exp_ch3.adb, exp_tss.adb: Minor reformatting + * sem_ch13.adb (Default_Aspect_Component_Value, Default_Aspect_Value): + Is on base type only. + * sinfo.ads: Minor comment revision. + +2013-10-14 Robert Dewar + + * g-decstr.adb (Decode_Wide_Wide_Character): Fix failure + to detect invalid sequences where longer than necessary + sequences are used for encoding. + (Validate_Wide_Character): + Call Decode_Wide_Character to get the above validations. + (Validate_Wide_Wide_Character): Same fix + * g-decstr.ads: Add documentation making it clear that the UTF-8 + implementation here recognizes all valid UTF-8 sequences, rather + than the well-formed subset corresponding to characters defined + in Unicode. + (Next_Wide_Character): Remove comment about this + being more efficient than Decode_Wide_Character (because this + no longer the case). + (Prev_Wide_Character): Add note that valid encoding is assumed. + +2013-10-14 Robert Dewar + + * a-wichha.adb (Character_Set_Version): New function. + * a-wichha.ads: Remove comments for pragma Pure (final RM has + this). + (Character_Set_Version): New function. + * gnat_rm.texi: Update doc. + +2013-10-14 Hristian Kirtchev + + * einfo.adb: Flag263 is now known as Has_Null_Refinement. + (Has_Null_Refinement): New routine. + (Set_Has_Null_Refinement): New routine. + (Write_Entity_Flags): Output the status of flag + Has_Null_Refinement. + * einfo.ads: Add new flag Has_Null_Refinement along with + comment on usage and update all nodes subject to the flag. + (Has_Null_Refinement): New routine along with pragma Inline. + (Set_Has_Null_Refinement): New rouitine along with pragma Inline. + * sem_prag.adb (Analyze_Constituent): Mark a state as having + a null refinement when the sole constituent is "null". + (Analyze_Global_List): Handle null input/output items. + (Analyze_Refined_Global_In_Decl_Part): Add local variable + Has_Null_State. Add logic to handle combinations of states + with null refinements and null global lists and/or items. + (Check_In_Out_States, Check_Input_States, Check_Output_States): + Use attribute Has_Null_Refinement to detect states with + constituents. + (Check_Refined_Global_List): Handle null input/output items. + (Process_Global_Item): Handle states with null refinements. + (Process_Global_List): Handle null input/output items. + +2013-10-14 Robert Dewar + + * freeze.adb (Freeze_Entity): Reset Is_True_Constant for + aliased object + * gnat_ugn.texi: Update doc on aliased variables and constants. + +2013-10-14 Ed Schonberg + + * exp_pakd.adb (Expand_Packed_Element_Reference): If the + reference is an actual in a call, the prefix has not been fully + expanded, to account for the additional expansion for parameter + passing. the prefix itself is a packed reference as well, + recurse to complete the transformation of the prefix. + +2013-10-14 Eric Botcazou + + * exp_dbug.adb (Debug_Renaming_Declaration): Do not + materialize the entity when the renamed object contains an + N_Explicit_Dereference. + * sem_ch8.adb (Analyze_Object_Renaming): + If the renaming comes from source and the renamed object is a + dereference, mark the prefix as needing debug information. + +2013-10-14 Doug Rupp + + * system-vxworks-arm.ads (Stack_Check_Probes, Stack_Check_Limits): + Enable Stack Probes, Disable Stack Limit Checking. + * init.c [VxWorks] (__gnat_inum_to_ivec): Caste return value. + (__gnat_map_signal): Fix signature. + (__gnat_error_handler): Make + static, fix signature, remove prototype, fix prototype warning. + [ARMEL and VxWorks6] (__gnat_map_signal): Check and re-arm guard + page for storage_error. + * exp_pakd.adb: Minor reformatting. + +2013-10-14 Hristian Kirtchev + + * sem_prag.adb (Analyze_Global_In_Decl_Part): Remove local + variable Contract_Seen. Add local variable Proof_Seen. + (Analyze_Global_List): Remove the processing for mode + Contract_In. Add support for mode Proof_In. + (Analyze_Pragma): Update the grammar of pragmas Global and + Refined_Global. + * snames.ads-tmpl: Remove predefined name Contract_In. Add + predefined name Proof_In. + +2013-10-14 Robert Dewar + + * exp_prag.adb (Expand_Pragma_Check): Generate proper string + for invariant + * gnat_rm.texi: Add documentation for pragmas + Type_Invariant[_Class] + * par-prag.adb: Add entries for pragmas Type_Invariant[_Class] + * sem_ch13.adb: Minor reformatting + * sem_prag.adb: Implement pragmas Type_Invariant[_Class] + * snames.ads-tmpl: Add entries for pragmas Type_Invariant[_Class] + +2013-10-14 Johannes Kanig + + * debug.adb: Release now unused debug switches that were only + relevant for gnat2why backend, not the frontend + * frontend.adb (Frontend) Do not stop when -gnatd.H is present, + was unused + +2013-10-14 Hristian Kirtchev + + * sem_prag.adb (Analyze_Global_Item): Allow + references to enclosing formal parameters. + +2013-10-14 Thomas Quinot + + * einfo.adb (Equivalent_Type): Add missing case + E_Access_Subprogram_Type in guard (for remote access to + subprograms) * sem_ch8.adb (Find_Direct_Name, Find_Expanded_Name): + Add missing guards to account for the presence of RAS types + that have already been replaced with the corresponding fat + pointer type. + +2013-10-14 Hristian Kirtchev + + * aspects.adb: Add an entry in table Canonical_Aspect for + Initializes. + * aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument, + Aspect_Names and Aspect_Delay for Initializes. + * atree.ads, atree.adb (Ekind_In): New seven argument versions of the + routines. + * einfo.adb: Remove Refined_State_Pragma from the list of node + usage. Finalizer is now at position 28. + (Contract): Package + and package bodies now have a contract. + (Finalizer): Update + the assertion and node usage. + (Get_Pragma): Update the Is_CDG + flag to include Abstract_State, Initializes and Refined_State. + (Refined_State_Pragma): Removed. + (Set_Contract): Package and + package bodies now have a contract. + (Set_Finalizer): Update the + assertion and node usage. + (Set_Refined_State_Pragma): Removed. + (Write_Field8_Name): Remove the output for Refined_State_Pragma. + (Write_Field24_Name): Remove the output for Finalizer. Package + and package bodies now have a contract. + (Write_Field28_Name): + Add output for Finalizer. + * einfo.ads: Update the documentation and usage in entities + of attribute Contract. Update the node position and usage in + entities of attribute Finalizer. Remove the documentation + and usage in entities for attribute Refined_State_Pragma. + (Refined_State_Pragma): Removed along with pragma Inline. + (Set_Refined_State_Pragma): Removed along with pragma Inline. + * par-prag.adb: Add Initializes to the pragmas that do not + require special processing by the parser. + * sem_ch3.adb (Analyze_Declarations): Add local variable + Prag. Update the retrieval of pragma Refined_State. Analyze + aspect/pragma Initializes at the end of the visible declarations + of the related package. + * sem_ch6.adb (Analyze_Subprogram_Body_Contract): + Add local variables Ref_Depends and Ref_Global. Analyze + pragmas Refined_Global and Refined_Depends in that order. + (Analyze_Subprogram_Contract): Add local variables Depends and + Global. Analyze pragmas Global and Depends in that order. + * sem_ch7.adb (Analyze_Package_Body_Helper): Package + bodies now have a contract. Move the analysis of the aspect + specifications after the defining entity has been decorated. + (Analyze_Package_Declaration): Packages now have a contract. Move + the analysis of the aspect specifications after the defining + entity has been decorated. + * sem_ch12.adb (Analyze_Generic_Package_Declaration): Packages + now have contracts. + * sem_ch13.adb (Analyze_Pragma): Code cleanup for aspect + Abstract_State. Add processing for aspect Initializes. + (Check_Aspect_At_Freeze_Point): Add an entry for Initializes. + * sem_prag.adb: Use Get_Pragma_Arg to extract the expression + of a pragma argument. Add an entry in table Sig_Flags for + Initializes. + (Analyze_Initializes_In_Decl_Part): New routine. + (Analyze_Pragma): Check the declaration order of pragmas + Abstract_State and Initializes. Abstract_State is now part of + the package contract. Analyze pragma Initializes. Check for + duplicate Refined_State pragma. Refined_State is now part of + the package contract. + (Check_Declaration_Order): New routine. + (Check_Test_Case): Alphabetized. + * sem_prag.ads (Analyze_Initializes_In_Decl_Part): New routine. + * sem_util.adb (Add_Contract_Item): Rename formal Subp_Id + to Id. This routine can now support contracts on packages and + package bodies. + * sem_util.ads (Add_Contract_Item): Rename formal Subp_Id to + Id. Update comment on usage. + * sinfo.ads: Update the usage of N_Contract nodes. + * snames.ads-tmpl: Add predefined name Initializes. Add new + pragma id for Initializes. + +2013-10-13 Nicolas Roche + Eric Botcazou + + * gcc-interface/Make-lang.in (ada/%.o): Replace individual rules with + generic rule and add $(POSTCOMPILE). + (ADA_DEPS): New. + (.adb.o): Add @$(ADA_DEPS). + (.ads.o): Likewise. + (ada/a-except.o): Likewise. + (ada/s-excdeb.): Likewise. + (ada/s-assert.o): Likewise. + (ada/a-tags.o): Likewise. + (ada_generated_files): New variable. + Use them as dependency order for GNAT1_ADA_OBJS and GNATBIND_OBJS. + (ADA_DEPFILES): New variable. + Include them. + (ada_OBJS): Define. + +2013-10-13 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Force all local + variables with aggregate types in memory if not optimizing. + +2013-10-13 Hristian Kirtchev + + * sem_prag.adb (Check_Mode): Do + not emit an error when we are looking at inputs and + the item is an unconstrained or tagged out parameter. + (Check_Mode_Restriction_In_Enclosing_Context): Use Get_Pragma + to find whether the context is subject to aspect/pragma Global. + (Collect_Subprogram_Inputs_Outputs): Unconstrained or tagged + out parameters are now considered inputs. Use Get_Pragma to + find wheher the subprogram is subject to aspect/pragma Global. + (Is_Unconstrained_Or_Tagged_Item): New routine. + +2013-10-13 Thomas Quinot + + * einfo.ads: Minor reformatting. + * gcc-interface/Make-lang.in: Update dependencies. + +2013-10-13 Robert Dewar + + * gnat_rm.texi: Add documentation for pragmas Pre[_Class] + Post[_Class]. + * par-ch2.adb (Skip_Pragma_Semicolon): Handle extra semicolon nicely. + * par-prag.adb: Add entries for pragmas Pre[_Class] and + Post[_Class]. + * sem_prag.adb: Add handling of pragmas Pre[_Class] and + Post[_Class]. + * sem_util.adb (Original_Aspect_Name): Moved here from + Sem_Prag.Original_Name, and modified to handle pragmas + Pre/Post/Pre_Class/Post_Class. + * sem_util.ads (Original_Aspect_Name): Moved here from + Sem_Prag.Original_Name. + * snames.ads-tmpl: Add entries for pragmas Pre[_Class] and + Post[_Class]. + +2013-10-13 Robert Dewar + + * einfo.adb, sem_ch6.adb: Minor reformatting. + +2013-10-13 Hristian Kirtchev + + * einfo.adb: Add node/list usage for Refined_State + and Refinement_Constituents. + (Get_Pragma): Update the + initialization of Is_CDG to include Refined_Global and + Refined_Depends. Rename constant Delayed to In_Contract and update + all of its occurrences. + (Is_Non_Volatile_State): New routine. + (Is_Volatile_State): Removed. + (Refined_State): New routine. + (Refinement_Constituents): New routine. + (Set_Refined_State): New routine. + (Set_Refinement_Constituents): New routine. + (Write_Field8_Name): Add output for Refinement_Constituents. + (Write_Field10_Name): Add output for Refined_State. + * einfo.ads: Add new synthesized attribute Is_Non_Volatile_State. + Remove synthesized attribute Is_Volatile_State. Add new + attributes Refined_State and Refinement_Constituents along with + usage in nodes. + (Get_Pragma): Update the comment on usage. + (Is_Non_Volatile_State): New routine. + (Is_Volatile_State): Removed. + (Refined_State): New routine and pragma Inline. + (Refinement_Constituents): New routine and pragma Inline. + (Set_Refined_State): New routine and pragma Inline. + (Set_Refinement_Constituents): New routine and pragma Inline. + * elists.ads, elists.adb (Clone): Removed. + (New_Copy_Elist): New routine. + (Remove): New routine. + * sem_ch3.adb (Analyze_Declarations): Use Defining_Entity + to get the entity of the subprogram [body]. + (Analyze_Object_Declaration): Add initialization for + Refined_State. + * sem_ch6.adb (Analyze_Subprogram_Body_Contract): Add processing + for Refined_Global and Refined_Depends. Emit an error when + the body requires Refined_Global, but the aspect/pragma is + not present. + * sem_ch6.ads (Analyze_Subprogram_Body_Contract): Change + procedure signature and add comment on usage. + * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing + for aspect Refined_Global. + * sem_prag.adb (Analyze_Abstract_State): Add initialization + of attributes Refined_State and Refinement_Constituents. + (Analyze_Depends_In_Decl_Part, Analyze_Global_In_Decl_Part, + Analyze_Contract_Cases_In_Decl_Part): Remove local + constant Arg1. + (Analyze_Pragma): Add processing for pragma + Refined_Global. The analysis of Refined_Post and Refined_Pre + has been merged. Update an error message in the processing of + pragma Refined_State. + (Analyze_Refined_Global_In_Decl_Part): Provide implementation. + (Analyze_Refined_Pragma): New routine. + (Analyze_Refined_Pre_Post_Condition): Removed. + (Analyze_Refined_State_In_Decl_Part): Update the call to Clone. + (Analyze_Refinement_Clause): Make State_Id visible to all + nested subprogram. + (Check_Matching_Constituent): Establish + a relation between a refined state and its constituent. + (Collect_Hidden_States_In_Decls): Remove ??? comment. Look at + the entity of the object declaration to establish its kind. + * sem_util.adb: Alphabetize with and use clauses. + (Contains_Refined_State): New routine. + * sem_util.ads (Contains_Refined_State): New routine. + +2013-10-13 Thomas Quinot + + * scos.ads: Minor documentation clarification. + +2013-10-13 Thomas Quinot + + * s-oscons-tmplt.c (CLOCK_RT_Ada): Set to CLOCK_MONOTONIC when + building on AIX 5.3 or later, and to CLOCK_REALTIME on older + versions of AIX. + * init.c (pthread_condattr_setclock): Remove now useless weak symbol. + * thread.c(__gnat_pthread_condattr_setup): Remove bogus AIX 5.2 + compatibility shim. + * s-osinte-aix.ads(clock_id_t): Fix C mapping (this is a 64-bit + type). + (clock_gettime): Import from C runtime library. + * s-osinte-aix.adb (clock_gettime): Remove bogus emulation body, + this routine is provided by the system in current supported + versions of AIX. + +2013-10-13 Robert Dewar + + * sem_ch3.adb: Minor reformatting. + +2013-10-13 Ed Schonberg + + * freeze.adb (Freeze_Entity): For a function whose return type + is incomplete, do not replace the type with the full view if the + type is a limited view. In that case the full view appears in a + different unit, and the back-end will retrieve it at the proper + elaboration point. + +2013-10-13 Yannick Moy + + * exp_spark.adb (Expand_SPARK_Call): Do not introduce temporaries for + actuals. + +2013-10-13 Ed Schonberg + + * sem_ch3.adb: in Ada 2012 access_to_function types can have + in-out parameters. + (Derived_Type_Declaration): SPARK restriction + must be flagged on the original node, since it may have been + written as a subtype declaration. + (Analyze_Subtype_Declaration): Do not enter name of + entity in declaration if it is the current entity, because it may + have been inserted in a previous analysis and it appears in the + else_part of an if-statement that is rewritten during expansion. + +2013-10-13 Yannick Moy + + * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove procedure. + (Expand_SPARK): Remove call to Expand_SPARK_N_Attribute_Reference and + Expand_SPARK_N_Simple_Return_Statement. + (Expand_SPARK_N_Simple_Return_Statement, + Expand_SPARK_Simple_Function_Return): Remove procedures. + +2013-10-13 Vincent Celier + + * gnat_ugn.texi: Minor editing. + +2013-10-13 Ed Schonberg + + * sem_ch3.adb (Check_Abstract_Overriding): If a synchronized + operation implements an interface primitive, mark the operation + as referenced, to prevent usually spurious messages about unused + entities: such operations are called in dispatching select + statements that are not visible to the compiler. + +2013-10-13 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_param): Remove obsolete comment. + +2013-10-11 Jakub Jelinek + + * gcc-interface/utils.c (DEF_FUNCTION_TYPE_8): Define. + +2013-10-10 Robert Dewar + + * par-ch6.adb (Check_Junk_Semicolon_Before_Return): Remove + junk code. + +2013-10-10 Javier Miranda + + * sem_ch13.adb (Freeze_Entity_Checks): Avoid + loosing errors on CPP entities in -gnatc mode. + +2013-10-10 Robert Dewar + + * sem_ch5.adb (Analyze_If_Statement): Only diagnose redundant + if from source. + +2013-10-10 Robert Dewar + + * restrict.adb (Check_SPARK_Restriction): Refine test (don't + automatically go to the original node). + * sem_ch11.adb (Analyze_Raise_Statement): Only raise + statements that come from source violate SPARK restrictions. + (Analyze_Raise_xxx_Error): Same fix. + * sem_ch3.adb (Analyze_Object_Declaration): Check OK SPARK + initialization on original node, not on possibly rewritten + expression. + * sem_ch4.adb (Analyze_If_Expression): Only if expressions that + come from source violate SPARK mode restrictions. + +2013-10-10 Robert Dewar + + * gnat_ugn.texi: Fix confusing documentation for -gnatyM. + +2013-10-10 Yannick Moy + + * errout.adb (Compilation_Errors): In formal verification mode, + always return False. + +2013-10-10 Hristian Kirtchev + + * sem_prag.adb (Collect_Hidden_States_In_Decls): Only consider source + non-constant objects. + +2013-10-10 Hristian Kirtchev + + * aspects.adb: Add an entry in table Canonical_Aspect for + Refined_State. + * aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument, + Aspect_Names and Aspect_Delay for Refined_State. + * einfo.adb: Add with and use clauses for Elists. + Remove Refined_State from the list of node usage. + Add Refined_State_Pragma to the list of node usage. + (Has_Null_Abstract_State): New routine. + (Refined_State): Removed. + (Refined_State_Pragma): New routine. + (Set_Refined_State): Removed. + (Set_Refined_State_Pragma): New routine. + (Write_Field8_Name): Add output for Refined_State_Pragma. + (Write_Field9_Name): Remove the output for Refined_State. + * einfo.ads: Add new synthesized attribute Has_Null_Abstract_State + along with usage in nodes. Remove attribute Refined_State along + with usage in nodes. Add new attribute Refined_State_Pragma along + with usage in nodes. + (Has_Null_Abstract_State): New routine. + (Refined_State): Removed. + (Refined_State_Pragma): New routine. + (Set_Refined_State): Removed. + (Set_Refined_State_Pragma): New routine. + * elists.adb (Clone): New routine. + * elists.ads (Clone): New routine. + * par-prag.adb: Add Refined_State to the pragmas that do not + require special processing by the parser. + * sem_ch3.adb: Add with and use clause for Sem_Prag. + (Analyze_Declarations): Add local variables Body_Id, Context and + Spec_Id. Add processing for delayed aspect/pragma Refined_State. + * sem_ch13.adb (Analyze_Aspect_Specifications): Update the + handling of aspect Abstract_State. Add processing for aspect + Refined_State. Remove the bizzare insertion policy for aspect + Abstract_State. + (Check_Aspect_At_Freeze_Point): Add an entry for Refined_State. + * sem_prag.adb: Add an entry to table Sig_Flags + for pragma Refined_State. + (Add_Item): Update the + comment on usage. The inserted items need not be unique. + (Analyze_Contract_Cases_In_Decl_Part): Rename variable Restore to + Restore_Scope and update all its occurrences. + (Analyze_Pragma): + Update the handling of pragma Abstract_State. Add processing for + pragma Refined_State. + (Analyze_Pre_Post_Condition_In_Decl_Part): + Rename variable Restore to Restore_Scope and update all its + occurrences. + (Analyze_Refined_State_In_Decl_Part): New routine. + * sem_prag.ads (Analyze_Refined_State_In_Decl_Part): New routine. + * snames.ads-tmpl: Add new predefined name for Refined_State. Add + new Pragma_Id for Refined_State. + +2013-10-10 Ed Schonberg + + * sem_ch10.adb (Install_Limited_Withed_Unit): handle properly the + case of a record declaration in a limited view, when the record + contains a self-referential component of an anonymous access type. + +2013-10-10 Thomas Quinot + + * exp_ch4.adb (Process_Transient_Object): For any context other + than a simple return statement, insert the finalization action + after the context, not as an action on the context (which will + get evaluated before it). + +2013-10-10 Hristian Kirtchev + + * einfo.adb (Write_Field19_Name): Correct the + string name of attribute Default_Aspect_Value. + +2013-10-10 Ed Schonberg + + * sem_type.adb (Interface_Present_In_Ancestor): The progenitor + in a type declaration may be an interface subtype. + +2013-10-10 Robert Dewar + + * sinfo.ads (Do_Range_Check): Add special note on handling of + range checks for Succ and Pred. + +2013-10-10 Robert Dewar + + * erroutc.adb (Output_Msg_Text): Remove VMS special handling. + +2013-10-10 Robert Dewar + + * a-chahan.ads, a-chahan.adb (Is_Line_Terminator): New function + (Is_Mark): New function. + (Is_Other_Format): New function. + (Is_Punctuation_Connector): New function. + (Is_Space): New function. + +2013-10-10 Robert Dewar + + * sem_aggr.adb (Resolve_Array_Aggregate): Redo duplicate/missing + choice circuit. Was not quite right in some cases, which showed + up in ACATS test B43201C. + * sem_attr.adb (Address_Checks): Make sure name is set right + for some messages issued. + * mlib-prj.adb: Minor code reorganization. + * gnat_ugn.texi: Remove special VMS doc for tagging of warning msgs. + * exp_ch9.adb: Minor reformatting. + +2013-10-10 Tristan Gingold + + * lib-writ.adb (Write_Unit_Information): Adjust previous patch. + +2013-10-10 Robert Dewar + + * sem_ch5.adb (Analyze_If_Statement): Warn on redundant if + statement. + * sem_util.ads, sem_util.adb (Has_No_Obvious_Side_Effects): New + function. + +2013-10-10 Ed Schonberg + + * exp_ch9.adb (Expand_N_Timed_Entry_Call): Simplify expansion + for the case of a dispatching trigger: there is no need to + duplicate the code or create a subprogram to encapsulate the + triggering statements. This allows exit statements in the + triggering statements, that refer to enclosing loops. + +2013-10-10 Robert Dewar + + * freeze.adb: Minor reformatting. + * sem_ch13.adb (Freeze_Entity_Checks): New procedure + (Analyze_Freeze_Entity): Call Freeze_Entity_Checks + (Analyze_Freeze_Generic_Entity): Call Freeze_Entity_Checks. + * sinfo.ads: Add syntax for sprint for Freeze_Generic_Entity. + * sprint.ads: Add syntax for freeze generic entity node. + +2013-10-10 Robert Dewar + + * einfo.adb, einfo.ads: Minor comment updates. + +2013-10-10 Robert Dewar + + * lib-writ.adb (Write_Unit_Information): Fatal error if linker + options are detected in a predefined generic unit. + +2013-10-10 Thomas Quinot + + * s-oscons-tmplt.c (CLOCK_REALTIME): Always define, possibly using + a dummy placeholder value. + (NEED_PTHREAD_CONDATTR_SETCLOCK): Remove, not needed anymore. + * thread.c: Adjust #if test accordingly. + +2013-10-10 Hristian Kirtchev + + * exp_ch6.adb (Consequence_Error): Generate an + implicit if statement. + (Expand_Contract_Cases): Generate an implicit if statement. + (Process_Contract_Cases): Do not expand Contract_Cases when no code + is being generated. + +2013-10-10 Robert Dewar + + * sem_attr.adb (Address_Checks): New procedure. + +2013-10-10 Ed Schonberg + + * sinfo.ads, sinfo.adb: New Node Freeze_Generic_Entity, to trigger + semantic actions at the proper point for entities that previously + had no explicit freeze point. + * freeze.adb (Freeze_Generic_Entities): generate new nodes to + indicate the point at which semantic checks can be performed on + entities declared in generic packages. + * sem_ch13.ads, sem_ch13.adb: New procedure + Analyze_Freeze_Generic_Entity. + * exp_util.adb (Insert_Actions): Treat new node like Freeze_Entity. + * sem.adb (Analyze): Call Analyze_Freeze_Generic_Entity. + * sprint.adb (Sprint_Node): display Analyze_Freeze_Generic_Entity. + * gcc-interface/trans.c: Ignore Analyze_Freeze_Generic_Entity. + * gcc-interface/Make-lang.in: Update dependencies. + +2013-10-10 Robert Dewar + + * sem_aggr.adb (Resolve_Array_Aggregate): Identify duplicated + cases. + +2013-10-10 Robert Dewar + + * sem_ch9.adb (Analyze_Task_Body): Aspects are illegal + (Analyze_Protected_Body): Aspects are illegal. + +2013-10-10 Robert Dewar + + * sem_ch6.adb, sem_ch13.adb: Minor reformatting. + * sem_case.adb (Check_Choices): Fix bad listing of missing + values from predicated subtype case (Check_Choices): List + duplicated values. + * errout.adb (Set_Msg_Text): Process warning tags in VMS mode + * erroutc.adb (Output_Msg_Text): Handle VMS warning tags + * gnat_ugn.texi: Document /WARNINGS=TAG_WARNINGS for VMS + * ug_words: Add entries for -gnatw.d and -gnatw.D + * vms_data.ads: Add [NO]TAG_WARNINGS for -gnatw.D/-gnatw.d + * lib-writ.ads: Documentation fixes + +2013-10-10 Robert Dewar + + * a-wichha.adb, a-wichha.ads, a-zchhan.adb, a-zchhan.ads + (Is_Other_Format): New name for Is_Other. + (Is_Punctuation_Connector): New name for Is_Punctuation + +2013-10-10 Hristian Kirtchev + + * aspects.adb: Add entries in table Canonical_Aspects for aspects + Refined_Depends and Refined_Global. + * aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument, + Aspect_Names, Aspect_Declay, Aspect_On_Body_Or_Stub_OK for + aspects Refined_Depends and Refined_Global. + * einfo.adb (Contract): Subprogram bodies are now valid owners + of contracts. + (Set_Contract): Subprogram bodies are now valid + owners of contracts. + (Write_Field24_Name): Output the contract + attribute for subprogram bodies. + * exp_ch6.adb (Expand_Subprogram_Contract): New routine. + * exp_ch6.ads (Expand_Subprogram_Contract): New routine. + * par-prag.adb: Pragmas Refined_Depends and Refined_Global do + not require any special processing by the parser. + * sem_ch3.adb (Adjust_D): Renamed to Adjust_Decl. + (Analyze_Declarations): Code reformatting. Analyze the contract + of a subprogram body at the end of the declarative region. + * sem_ch6.adb (Analyze_Generic_Subprogram_Body): + Subprogram bodies can now have contracts. Use + Expand_Subprogram_Contract to handle the various contract + assertions. + (Analyze_Subprogram_Body_Contract): New null routine. + (Analyze_Subprogram_Body_Helper): Subprogram bodies can now have + contracts. Use Expand_Subprogram_Contract to handle the various + contract assertions. + (Analyze_Subprogram_Contract): Add local + variable Nam. Update the call to Analyze_PPC_In_Decl_Part. Capture + the pragma name in Nam. + (Process_PPCs): Removed. + * sem_ch6.ads (Analyze_Subprogram_Body_Contract): New routine. + (Analyze_Subprogram_Contract): Update the comment on usage. + * sem_ch13.adb (Analyze_Aspect_Specifications): Add null + implementations for aspects Refined_Depends and Refined_Global. + (Check_Aspect_At_Freeze_Point): Aspects Refined_Depends and + Refined_Global do not need to be checked at the freeze point. + * sem_prag.adb: Add entries in table Sig_Flags + for pragmas Refined_Depends and Refined_Global. + (Analyze_Contract_Cases_In_Decl_Part): Add local + variable Restore. Use Restore to pop the scope. + (Analyze_Depends_In_Decl_Part): Add local variable Restore. Use + Restore to pop the scope. + (Analyze_Global_In_Decl_List): Add local variable Restore. Use Restore + to pop the scope. + (Analyze_PPC_In_Decl_Part): Renamed to + Analyze_Pre_Post_Condition_In_Decl_Part. + (Analyze_Pragma): + Add null implementations for pragmas Refined_Depends and + Refined_Global. Refined_Pre and Refined_Post are now + handled by routine Analyze_Refined_Pre_Post_Condition + exclusively. + (Analyze_Refined_Depends_In_Decl_Part): New + null routine. + (Analyze_Refined_Global_In_Decl_Part): + New null routine. + (Analyze_Refined_Pre_Post): + Renamed to Analyze_Refined_Pre_Post_Condition. + (Analyze_Refined_Pre_Post_Condition): Analyze the boolean + expression. + (Check_Precondition_Postcondition): Update the call + to Analyze_PPC_In_Decl_Part. + * sem_prag.ads: Add entries in table + Pragma_On_Body_Or_Stub_OK for pragmas Refined_Depends + and Refined_Global. + (Analyze_PPC_In_Decl_Part): Renamed + to Analyze_Pre_Post_Condition_In_Decl_Part. Update the + comment on usage. + (Analyze_Refined_Depends_In_Decl_Part): New routine. + (Analyze_Refined_Global_In_Decl_Part): New routine. + (Analyze_Test_Case_In_Decl_Part): Update the comment on usage. + * sem_util.adb (Add_Contract_Item): Rename formal Item to Prag + and update all occurrences. Subprogram body contracts can now + contain pragmas Refined_Depends and Refined_Global. + * sem_util.ads (Add_Contract_Item): Rename formal Item to + Prag. Update the comment on usage. + * sinfo.ads: Update the comment on structure and usage of + N_Contract. + * snames.ads-tmpl: Add new predefined names for Refined_Depends + and Refined_Global. Add entries in table Pragma_Id for + Refined_Depends and Refined_Global. + +2013-10-10 Robert Dewar + + * types.ads: Minor reformatting. + +2013-10-10 Thomas Quinot + + * s-taprop-posix.adb: Add missing comment. + +2013-10-10 Robert Dewar + + * freeze.adb (Freeze_Record_Type): Move choice checking to + Analyze_Freeze_Entity (Freeze_Record_Type): Make sure all choices + are properly frozen + * sem_case.adb (Check_Choices): Remove misguided attempt to + freeze choices (this is now done in Freeze_Record_Type where + it belongs). + (Check_Choices): Remove some analyze/resolve calls + that are redundant since they are done in Analyze_Choices. + * sem_ch13.adb (Analyze_Freeze_Entity): Do the error + checking for choices in variant records here (moved here from + Freeze.Freeze_Record_Type) + +2013-10-10 Thomas Quinot + + * s-oscons-tmplt.c, s-taprop-posix.adb (CLOCK_REALTIME): Always define, + possibly using a dummy placeholder value. + (Compute_Deadline): For the case of an + Absolute_Calendar deadline, if the target uses another clock + than CLOCK_REALTIME as CLOCK_RT_Ada, compensate for possible + different epoch. + +2013-10-10 Ed Schonberg + + * sem_ch8.adb (Find_Expanded_Name): Handle properly a fully + qualified reference to a generic child unit within itself, + in an instantiation. + +2013-10-10 Pascal Obry + + * prj-conf.adb: Minor typo fixes in comment. + +2013-10-10 Thomas Quinot + + * s-taprop-posix.adb (Compute_Deadline): New local subprogram, + factors common code between Timed_Sleep and Timed_Delay. + +2013-10-10 Robert Dewar + + * freeze.adb (Freeze_Record_Type): Don't replace others if + expander inactive. This avoids clobbering the ASIS tree in + -gnatct mode. + +2013-10-10 Robert Dewar + + * sem_res.adb (Resolve_Op_Expon): Avoid crash testing for + fixed-point case in preanalysis mode (error will be caught during + full analysis). + +2013-10-10 Robert Dewar + + * gnat_rm.texi: Refined_Pre and Refined_Post are now allowed as + assertion identifiers for pragma Assertion_Policy. + * sem_prag.adb (Is_Valid_Assertion_Kind): Add Refined_Pre/Refined_Post + * sem_ch13.adb: Minor reformatting. + +2013-10-10 Pascal Obry + + * prj-conf.adb: Code refactoring. + +2013-10-10 Hristian Kirtchev + + * einfo.adb: Remove Integrity_Level from the node usage list. + (Has_Option): Update the implementation to match + the new terminology. + (Has_Property): Renamed to Has_Option. + (Integrity_Level): Removed. + (Is_External_State): New routine. + (Is_Input_Only_State): Use Has_Option to determine whether a state + is Input_Only. (Is_Input_State): Renamed to Is_Input_Only_State. + (Is_Output_Only_State): Use Has_Option to determine whether + a state is Output_Only. + (Is_Output_State): Renamed to + Is_Output_Only_State. + (Is_Volatile_State): Use Has_Option to determine whether a state is + volatile. + (Set_Integrity_Level): Removed. + (Write_Field8): Remove the entry for Integrity_Level. + * einfo.ads: Remove Integrity_Level along with its documentation + and usage in nodes. Rename Is_Input_State to Is_Input_Only_State. + Rename Is_Output_State to Is_Output_Only_State. Update the + documentation of Is_Volatile_State. Update the node structure of + E_Abstract_Entity. + (Integrity_Level): Removed along with pragma Inline. + (Is_External_State): New routine. + (Is_Input_State): Renamed to Is_Input_Only_State. + (Is_Output_State): Renamed to Is_Output_Only_State. + (Set_Integrity_Level): Removed along with pragma Inline. + * sem_prag.adb (Analyze_Pragma): Update the checks regarding + global items and abstract state modes. Update the implementation + of pragma Abstract_State to reflect the new rules and terminology. + * snames.ads-tmpl: Remove the predefined name for Integrity + level. Add new predefined names for Input_Only, Non_Volatile, + Output_Only and Part_Of. + +2013-10-10 Ed Schonberg + + * lib-xref.adb (Generate_Reference): Do not generate a reference + within a _postcondition procedure: a proper source reference has + already been generated when pre- analyzing the original aspect + specification, and the use of a formal in a pre/postcondition + should not count as a proper use in a subprogram body. + +2013-10-10 Robert Dewar + + * sem_eval.adb (Why_Non_Static): Fix bomb for deferred constant + case + +2013-10-10 Hristian Kirtchev + + * aspects.adb: Add an entry for Aspect_Refined_Post in table + Canonical_Aspect. + * aspects.ads: Add an entry for Aspect_Refined_Post in tables + Aspect_Id, Aspect_Argument, Aspect_Names, Aspect_Delay, + Aspect_On_Body_Or_Stub_OK. Update the comment on the use of + table Aspect_On_Body_Or_Stub_OK. + * par-prag.adb: Add pragma Refined_Post to the list of pragmas + that do not require special processing by the parser. + * sem_attr.adb (Analyze_Attribute): Add special analysis for + attributes 'Old and 'Result when code generation is disabled and + they appear in aspect/pragma Refined_Post. + (In_Refined_Post): New routine. + * sem_ch6.adb (Analyze_Expression_Function): Move various + aspects and/or pragmas that apply to an expression function to the + corresponding spec or body. + (Collect_Body_Postconditions): New routine. + (Process_PPCs): Use routine Collect_Body_Postconditions + to gather all postcondition pragmas. + * sem_ch10.adb (Analyze_Proper_Body): Use routine + Relocate_Pragmas_To_Body to move all source pragmas that follow + a body stub to the proper body. + (Move_Stub_Pragmas_To_Body): Removed. + * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing + for aspect Refined_Post. + (Check_Aspect_At_Freeze_Point): Aspect + Refined_Post does not need delayed processing at the freeze point. + * sem_prag.adb: Add an entry for pragma Refined_Post in + table Sig_Flags. + (Analyze_Pragma): Add processing for pragma + Refined_Post. Update the processing of pragma Refined_Pre + to use common routine Analyze_Refined_Pre_Post. + (Analyze_Refined_Pre_Post): New routine. + (Relocate_Pragmas_To_Body): New routine. + * sem_prag.ads: Table Pragma_On_Stub_OK is now known as + Pragma_On_Body_Or_Stub_OK. Update the comment on usage of + table Pragma_On_Body_Or_Stub_OK. + (Relocate_Pragmas_To_Body): New routine. + * snames.ads-tmpl: Add new predefined name for Refined_Post. Add + new Pragma_Id for Refined_Post. + +2013-10-10 Robert Dewar + + * exp_ch3.adb (Expand_N_Variant_Part): Now null, expansion of + last choice to others is moved to Freeze_Record_Type. + * freeze.adb (Freeze_Record_Type): Expand last variant to others + if necessary (moved here from Expand_N_Variant_Part + +2013-10-10 Robert Dewar + + * lib-xref-spark_specific.adb, par-ch13.adb, sem_prag.adb, sem_prag.ads, + sem_ch12.adb, sem_attr.adb, sem_ch6.adb, sem_ch13.adb, a-sequio.adb, + s-atocou-builtin.adb: Minor reformatting. + +2013-10-10 Thomas Quinot + + * s-oscons-tmplt.c (NEED_PTHREAD_CONDATTR_SETCLOCK): This + constant needs to be output to s-oscons.h, as it is tested + by init.c. + +2013-10-10 Robert Dewar + + * exp_ch3.adb (Expand_N_Variant_Part): Don't expand choices, too early + * exp_ch5.adb (Expand_N_Case_Statement): Use new Has_SP_Choice + flag to avoid expanding choices when not necessary. + * exp_util.adb: Minor reformatting + * freeze.adb (Freeze_Record_Type): Redo expansion of variants + * sem_aggr.adb: Minor reformatting + * sem_case.ads, sem_case.adb: Major rewrite, separating Analysis and + Checking of choices. + * sem_ch3.adb (Analyze_Variant_Part): Rewrite to call new + Analyze_Choices. + * sem_ch4.adb (Analyze_Case_Expression): Call Analyze_Choices + and Check_Choices + * sem_ch5.adb (Analyze_Case_Statement): Call Analyze_Choices + and Check_Choices + * sem_util.adb: Minor reformatting + * sinfo.ads, sinfo.adb (Has_SP_Choice): New flag. + +2013-10-10 Vincent Celier + + * mlib-prj.adb (Build_Library): Do not issue link dynamic + libraries with an Rpath, if switch -R was used. + +2013-10-10 Tristan Gingold + + * s-stalib.ads (Image_Index_Table_8, Image_Index_Table_16, + Image_Index_Table_32): Remove as not used. + * s-imgint.adb (Image_Integer): Call Set_Image_Integer and + remove duplicated code. + +2013-10-10 Hristian Kirtchev + + * sem_prag.adb (Analyze_Pragma): Provide a + more precise error message when pragma Refined_Pre applies to + an expression function that is not a completion. + +2013-10-10 Thomas Quinot + + * sem_attr.adb (Analyse_Attribute, case + Attribute_Scalar_Storage_Order): a 'Scalar_Storage_Order attribute + reference for a generic type is permitted in GNAT runtime mode. + * a-sequio.adb (Read, Write): Use the endianness of the actual + type to encode length information written to the file. + +2013-10-10 Ed Schonberg + + * par-ch13.adb (Aspect_Specifications_Present)): In earlier than + Ada2012 mode, assume that a legal aspect name following "with" + keyword is an older gnat switch and not a misplaced with_clause. + +2013-10-10 Hristian Kirtchev + + * aspects.adb: Add an entry for Aspect_Refined_Pre in + table Canonical_Aspect. + (Aspects_On_Body_OK): Renamed to + Aspects_On_Body_Or_Stub_OK. + (Aspects_On_Body_Or_Stub_OK): + Update the query in table Aspect_On_Body_OK. + * aspects.ads: Add an entry for Aspect_Refined_Pre in tables + Aspect_Id, Aspect_Argument, Aspect_Names, Aspect_Delay, + Aspect_On_Body_Or_Stub_OK. Table Aspect_On_Body_OK is now known as + Aspect_On_Body_Or_Stub_OK. Add a section of aspect specifications + that apply to body stubs. + (Aspects_On_Body_OK): Renamed to Aspects_On_Body_Or_Stub_OK. + (Aspects_On_Body_Or_Stub_OK): Update the comment on usage. + * par-prag.adb: Add pragma Refined_Pre to the list of pragmas + that do not require special processing by the parser. + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Delay the + analysis of aspect specifications that apply to a body stub + until the proper body is analyzed. + * sem_ch10.adb: Add with and use clause for Sem_Ch13. + (Analyze_Package_Body_Stub): Set the corresponding spec of the stub. + (Analyze_Proper_Body): Relocate all pragmas that apply + to a subprogram body stub to the declarations of the proper + body. Analyze the aspect specifications of the stub when the + proper body is not present. + (Analyze_Protected_Body_Stub): Set the corresponding spec of the stub. + (Analyze_Task_Body_Stub): Set the corresponding spec of the stub. + (Move_Stub_Pragmas_To_Body): New routine. + * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing + for aspect Refined_Pre. + (Check_Aspect_At_Freeze_Point): Aspect + Refined_Pre does not need delayed processing at the freeze point. + * sem_prag.adb: Remove with and use clause for Snames. Add + an entry for Pragma_Refined_Pre in table Sig_Flags. + (Analyze_Pragma): Add processing for pragma Refined_Pre. + * sem_prag.ads: Add with and use clause for Snames. Add table + Pragma_On_Stub_OK. + * sinfo.adb (Corresponding_Spec_Of_Stub): New routine. + (Set_Corresponding_Spec_Of_Stub): New routine. + * sinfo.ads: Add new attribute Corresponding_Spec_Of_Stub + along with comment on usage and occurrences in nodes. + (Corresponding_Spec_Of_Stub): New routine along with pragma + Inline. + (Set_Corresponding_Spec_Of_Stub): New routine along + with pragma Inline. + * snames.ads-tmpl: Add new predefined name for Refined_Pre. Add + new Pragma_Id for Refined_Pre. + +2013-10-10 Ed Schonberg + + * sem_ch12.adb (Analyze_Package_Instantiation, + Analyze_Subprogram_Instantiation): Improve error message when + name in instantiation does not designate a generic unit of the + right kind. + +2013-10-10 Robert Dewar + + * exp_ch3.adb (Expand_N_Variant_Part): Expand statically + predicated subtype which appears in Discrete_Choices list. + * exp_ch5.adb (Expand_N_Case_Statement): Expand statically + predicated subtype which appears in Discrete_Choices list of + case statement alternative. + * exp_util.ads, exp_util.adb (Expand_Static_Predicates_In_Choices): New + procedure. + * sem_case.adb: Minor reformatting (Analyze_Choices): Don't + expand out Discrete_Choices that are names of subtypes with + static predicates. This is now done in the analyzer so that the + -gnatct tree is properly formed for ASIS. + * sem_case.ads (Generic_Choices_Processing): Does not apply + to aggregates any more, so change doc accordingly, and remove + unneeded Get_Choices argument. + * sem_ch3.adb (Analyze_Variant_Part): Remove no + longer used Get_Choices argument in instantiation of + Generic_Choices_Processing. + * sem_ch4.adb (Analyze_Case_Expression): Remove no + longer used Get_Choices argument in instantiation of + Generic_Choices_Processing. + * sem_ch5.adb (Analyze_Case_Statement): Remove no + longer used Get_Choices argument in instantiation of + Generic_Choices_Processing. + * sinfo.ads: For N_Variant_Part, and N_Case_Statement_Alternative, + document that choices that are names of statically predicated + subtypes are expanded in the code generation tree passed to the + back end, but not in the ASIS tree generated for -gnatct. + +2013-10-10 Ed Schonberg + + * sem_ch7.adb: Revert previous change. + +2013-10-10 Gary Dismukes + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause): In the case where + the Storage_Pool aspect is specified by an aspect clause and a + renaming is used to capture the evaluation of the pool name, + insert the renaming in front of the aspect's associated entity + declaration rather than in front of the corresponding attribute + definition (which hasn't been appended to the declaration + list yet). + +2013-10-10 Ed Schonberg + + * sem_ch6.adb (Is_Interface_Conformant): The controlling type + of the interface operation is obtained from the ultimate alias + of the interface primitive parameter, because that may be in + fact an implicit inherited operation whose signature involves + the type extension and not the desired interface. + +2013-10-10 Ed Schonberg + + * par-ch13.adb (Aspect_Specifications_Present): In Ada 2012, + recognize an aspect specification with a misspelled name if it + is followed by a a comma or semicolon. + +2013-10-10 Vadim Godunko + + * s-atocou.adb, s-atocou.ads, s-atocou-x86.adb, s-atocou-builtin.adb: + Fix copyright notice. + +2013-10-10 Yannick Moy + + * lib-xref-spark_specific.adb (Enclosing_Subprogram_Or_Package): Get + enclosing subprogram for precondition/postcondition/contract cases. + +2013-10-10 Robert Dewar + + * gnat_rm.texi: Minor fix. + +2013-10-10 Robert Dewar + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause, case + Address): Remove the Comes_From_Source test for the overlap + warning. + +2013-10-10 Robert Dewar + + * sem_util.adb: Minor code reorganization (use Nkind_In). + * sem_warn.adb: Minor code reorganization (optimization in + Check_Unset_Reference). + * exp_ch9.adb, exp_ch4.adb, sinfo.ads: Minor reformatting. + +2013-10-10 Ed Schonberg + + * sem_ch7.adb (Install_Parent_Private_Declarations): When + instantiating a child unit, do not install private declaration of + a non-generic ancestor of the generic that is also an ancestor + of the current unit: its private part will be installed when + private part of ancestor itself is analyzed. + +2013-10-10 Thomas Quinot + + * freeze.adb (Check_Component_Storage_Order): Retrieve component + aliased status from type entities directly instead of going back + to original component definition. + * sem_ch7.adb: Minor reformatting. + +2013-10-10 Robert Dewar + + * sem_ch13.adb (Analyze_Aspect_Specifications): For Address + attribute, consider it to be set in source, because of aliasing + considerations. + (Analyze_Attribute_Definition_Clause): For the + purpose of warning on overlays, take into account the aspect case. + +2013-10-10 Robert Dewar + + * a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads, a-cforse.ads, + a-cofove.ads: Minor reformatting. + +2013-10-10 Arnaud Charlet + + * gnat_ugn.texi: Remove obsolete mention to -laddr2line. + +2013-10-10 Ed Schonberg + + * exp_ch4.adb (Expand_N_Case_Expression): Indicate that the + generated variable used as a target of the expression needs + no initialization. + +2013-10-10 Jose Ruiz + + * exp_util.adb (Corresponding_Runtime_Package): Remove the condition + related to No_Dynamic_Attachment which was wrong. Protected types + with interrupt handlers (when not using a restricted profile) + are always treated as protected types with entries, regardless + of the No_Dynamic_Attachment restriction. + * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Simplify the code + using the result of Corresponding_Runtime_Package. + (Install_Private_Data_Declarations): When having + static handlers and a non restricted profile, we use the + type Static_Interrupt_Protection always, so we removed an + extra wrong condition looking at the No_Dynamic_Attachment + restriction. Simplify the code using the result of + Corresponding_Runtime_Package. + (Make_Initialize_Protection): Simplify the code using + the result of Corresponding_Runtime_Package. + (Install_Private_Data_Declaration): The No_Dynamic_Attachment + restriction has nothing to do with static handlers. Remove the extra + erroneous condition that was creating the wrong data type. + +2013-10-10 Hristian Kirtchev + + * sem_util.adb (Is_Object_Reference): Attribute + 'Old produces an object reference. + * gnat_rm.texi: Define accessibility level of + X'Update(...) result. + +2013-10-10 Yannick Moy + + * gnat_rm.texi, a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads, + a-cforse.ads, a-cofove.ads: Update comment and doc of formal containers + +2013-10-10 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specifications): For Pre/Post + conditions that apply to a subprogram body, preserve the placement + and order of the generated pragmas, which must appear before + other declarations in the body. + +2013-10-10 Bob Duff + + * gnat_ugn.texi: Add gnat2xml doc. + +2013-10-10 Doug Rupp + + * s-vxwork-arm.ads: Fix interface to FP_CONTEXT. + +2013-10-10 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specification): An aspect Import + on a variable need not have a convention specified, as long as + the implicit convention of the object, obtained from its type, + is Ada or Ada-related. + +2013-10-10 Robert Dewar + + * cstand.adb (Standard_Unsigned_64): New internal type. + * gnat_rm.texi: Update documentation on To_Address. + * sem_attr.adb (Analyze_Attribute, case To_Address): Fix + problem with out of range static values given as literals or + named numbers. + * stand.ads (Standard_Unsigned_64): New internal type. + * stand.adb: Minor reformatting. + +2013-10-10 Ed Schonberg + + * sem_ch4.adb (Analyze_Selected_Component, + Has_Mode_Conformant_Spec): If selected component may be an + indexing of a parameterless call to a protected function, and + expansion is disabled, this is a valid candidate interpretation. + +2013-10-10 Arnaud Charlet + + * gnat_ugn.texi: Minor editing. + +2013-10-10 Robert Dewar + + * gnatlink.adb: Minor reformatting. + +2013-10-10 Yannick Moy + + * debug.adb: Free flag d.E and change doc for flag d.K. + +2013-10-10 Ed Schonberg + + * sem_prag.adb (Check_Precondition_Postcondition): If the + pragma comes from an aspect spec, and the subprogram is a + library unit, treat as a ppc in a declarative part in ASIS mode, + so that expression in aspect is properly analyzed. In this case + there is no later point at which the aspect specification would + be examined. + +2013-10-10 Bob Duff + + * opt.ads: Minor comment fix. + +2013-10-10 Vadim Godunko + + * a-coinho-shared.ads, a-coinho-shared.adb: New file. + * s-atocou.ads: Add procedure to initialize counter. + * s-atocou.adb: Likewise. + * s-atocou-builtin.adb: Likewise. + * s-atocou-x86.adb: Likewise. + * gcc-interface/Makefile.in: Select special version of + Indefinite_Holders package on platforms where atomic built-ins + are supported. Update tools target pairs for PikeOS. + +2013-10-10 Robert Dewar + + * sem_ch3.adb: Minor reformatting. + +2013-10-10 Robert Dewar + + * sinput-c.adb (Load_File): Ensure Source_Align alignment. + * sinput-d.adb (Create_Debug_Source): Ensure Source_Align alignment. + * sinput-l.adb (Create_Instantiation_Source): Ensure Source_Align + alignment. + (Load_File): Ditto. + * sinput.ads, sinput.adb (Get_Source_File_Index): New optimized (single + line) version. + * types.ads (Source_Align): New definition. + (Source_Buffer): Document new alignment requirement. + +2013-10-10 Robert Dewar + + * sem_prag.adb (Analyze_Pragma, case Linker_Section): Allow + this for types. + +2013-10-10 Robert Dewar + + * gnat_rm.texi: Minor adjustment to doc for To_Address attribute. + +2013-10-10 Vadim Godunko + + * s-stopoo.ads (Root_Storage_Pool): Add pragma + Preelaborable_Initialization. + +2013-09-25 Tom Tromey + + * gcc-interface/Makefile.in (OUTPUT_OPTION): Define as "-o $@". + +2013-09-18 Eric Botcazou + + PR ada/58264 + * gcc-interface/trans.c (Attribute_to_gnu): Define GNAT_PREFIX local + variable and use it throughout. + : Note whether the prefix is the dereference of a pointer + to unconstrained array and, in this case, capture the result for both + Attr_First and Attr_Last. + +2013-09-18 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : New. + +2013-09-18 Eric Botcazou + + * gcc-interface/trans.c (gigi): Remove dead code. + +2013-09-18 Eric Botcazou + + * gcc-interface/trans.c (Subprogram_Body_to_gnu): Pop the stack of + return variables for subprograms using the CICO mechanism. + +2013-09-13 Dominique Dhumieres + + * gcc-interface/Makefile.in: Fix darwin Filter to match on $target_os, + not $target_cpu. + +2013-09-11 Thomas Schwinge + Olivier Hainque + + * gcc-interface/Makefile.in: Import target_cpu, target_vendor, + target_os and their host_ counterparts. Remove host_canonical and + target_cpu_default, unused. Remove local ad-hoc computations of + "host", "targ", "arch", "osys" and "manu". Replace uses of these by + uses of the now imported family, hence back to filters against + canonical values. Remove filters on e500 for target_cpu, expected to + be canonicalized into powerpc. Invert the logic filtering on 64bit + sparc for VxWorks. Simplify the filtering logic for bareboard tools + target pairs, now using straight elf/eabi filters on the target_os + part only. + +2013-09-10 Ed Schonberg + + * sem_ch3.adb (Replace_Anonymoous_Access_To_Protected_Subprogram): If + the return type is itself an access to function, recurse to emit + another anonymous type. + * gcc-interface/Make-lang.in: Update dependencies. + +2013-09-10 Robert Dewar + + * err_vars.ads (Warning_Doc_Switch): Ignored in VMS mode. + * errout.adb (Warning_Doc_Switch): Ignored in VMS mode. + * errout.ads (Warning_Doc_Switch): Ignored in VMS mode. + * inline.ads (Warnings): New component in Pending_Body_Info. + * sem_ch12.adb (Pending_Body_Info): Save and restore warnings + at instantiation point. + * warnsw.adb (Save_Warnings): New function (Restore_Warnings): + New procedure Remove special handling of Warning_Doc_Switch, + cleaner to handle the VMS case in errout, than to introduce + undocumented oddities here. + * warnsw.ads (Warning_Record) : New type. + (Save_Warnings): New function. + (Restore_Warnings): New procedure. + +2013-09-10 Robert Dewar + + * sinput.adb (Check_For_BOM): Avoid reading past end of file. + +2013-09-10 Robert Dewar + + * errout.adb (Error_Msg_Ada_2012_Feature): New procedure. + * errout.ads (Error_Msg_Ada_2012_Feature): New procedure. + * inline.ads: Save/Restore Ada_Version_Pragma. + * opt.adb: Save/Restore Ada_Version_Pragma. + * opt.ads (Ada_Version_Pragma): New variable. + * par-ch11.adb, par-ch12.adb, par-ch13.adb, par-ch4.adb, par-ch5.adb, + par-ch6.adb, par-ch8.adb, par-prag.adb: Use Error_Msg_Ada_2012_Feature. + * prj.adb: Initialize Ada_Version_Pragma. + * sem_attr.adb: Use Error_Msg_Ada_2012_Feature. + * sem_ch12.adb, sem_ch8.adb: Save/restore Ada_Version_Pragma. + * sem_prag.adb (Analyze_Pragma, cases Ada_xx): Set Ada_Version_Pragma. + * switch-c.adb: Initialize Ada_Version_Pragma. + * sem_ch12.adb: Minor reformatting. + +2013-09-10 Ed Schonberg + + * sem_ch3.adb (Process_Subtype): Discard constraint on access + to class-wide type. Such constraints are not supported and are + considered a language pathology. + +2013-09-10 Robert Dewar + + * gnatbind.adb: Correct starting date in --version string. + * gnatdll.adb: Use Check_Version_And_Help_G to implement --help + and --version. + * gnatkr.adb: Use Check_Version_And_Help_G to implement --help + and --version. + * gnatlink.adb: Correct starting date in --version string. + * gnatls.adb: Correct starting date in --version string. + * make.adb: Correct starting date in --version string. + +2013-09-10 Robert Dewar + + * switch-c.adb: Minor reformatting. + * atree.ads (Original_Nodes): Add documentation on ASIS usage. + * sinfo.ads: Add section on ASIS mode (documentation only). + +2013-09-10 Robert Dewar + + * sem_prag.adb (Analyze_Pragma, case Warnings): Don't allow + REASON parameter in compiler units (bootstrap issues). + +2013-09-10 Robert Dewar + + * gnat1drv.adb (Adjust_Global_Switches): Output warning if + -gnateE specified for a target that does not support it. + +2013-09-10 Ed Schonberg + + * sem_prag.adb (Analyze_Pragma, case SPARK_Mode): Handle properly + a subprogram body without previous spec. + +2013-09-10 Gary Dismukes + + * sem_ch4.adb: Minor typo fixes. + +2013-09-10 Hristian Kirtchev + + * aspects.adb (Aspects_On_Body_OK): New routine. + * aspects.ads: Modify type Aspect_Expression to include + the Optional_XXX variants. Update the contents of + table Aspect_Argument. Add table Aspect_On_Body_OK. + (Aspects_On_Body_OK): New routine. + * par-ch13.adb (Get_Aspect_Specifications): Account for optional + names and expressions when parsing an aspect. + * sem_ch6.adb: Add with and use clause for Aspects. + (Analyze_Subprogram_Body_Helper): Do not emit an error when + analyzing a body with aspects that can be applied simultaneously + to both spec and body. + * sem_ch13.adb (Analyze_Aspect_Specifications): Insert the + corresponding pragma of an aspect that applies to a subprogram + body in the declarative part. + (Make_Aitem_Pragma): Do not generate a pragma with an empty argument + list. + +2013-09-10 Robert Dewar + + * switch-c.adb: Diagnose -gnatc given after -gnatRm. + * gnat_ugn.texi: Add documentation for -gnatRm. + * usage.adb: Minor reorganization (put style entries in proper + order) Document -gnatRm switch. + * sinfo.ads: Minor comment fix. + +2013-09-10 Sergey Rybin + + * tree_io.ads: Update ASIS_Version_Number. + +2013-09-10 Ed Schonberg + + * sem_ch3.adb (Access_Subprogram_Declaration): Check whether the + designated type can appear in a parameterless call. + * sem_ch4.adb (Analyze_Call): Do not insert an explicit dereference + in the case of an indirect call through an access function that + returns an array type. + (Analyze_One_Call): Handle properly legal parameterless calls + whose result is indexed, in constructs of the for F.all (I) + * sem_ch6.ads (May_Need_Actuals): Make public, for use on access + to subprogram types. + * sem_res.adb (Resolve_Call): If the call is indirect, there is + no entity to set on the name in the call. + +2013-09-10 Hristian Kirtchev + + * aspects.adb: Add entries in the Has_Aspect_Specifications_Flag + table for package body and body stubs. + (Move_Or_Merge_Aspects): New routine. + (Remove_Aspects): New routine. + * aspects.ads (Move_Aspects): Update comment on usage. + (Move_Or_Merge_Aspects): New routine. + (Remove_Aspects): New routine. + * par-ch3.adb: Update the grammar of private_type_declaration, + private_extension_declaration, object_renaming_declaration, + and exception_renaming_declaration. + (P_Subprogram): Parse the + aspect specifications that apply to a body stub. + * par-ch6.adb: Update the grammar of subprogram_body_stub and + generic_instantiation. + * par-ch7.adb: Update the grammar of package_declaration, + package_specification, package_body, package_renaming_declaration, + package_body_stub. + (P_Package): Parse the aspect specifications + that apply to a body, a body stub and package renaming. + * par-ch9.adb: Update the grammar of entry_declaration, + protected_body, protected_body_stub, task_body, + and task_body_stub. + (P_Protected): Add local variable + Aspect_Sloc. Add local constant Dummy_Node. Parse the aspect + specifications that apply to a protected body and a protected + body stub. + (P_Task): Add local variable Aspect_Sloc. Add local + constant Dummy_Node. Parse the aspect specifications that apply + to a task body and a task body stub. + * par-ch12.adb: Update the grammar of + generic_renaming_declaration. + (P_Generic): Parse the aspect + specifications that apply to a generic renaming. + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not emit + an error when analyzing aspects that apply to a body stub. Such + aspects are relocated to the proper body. + * sem_ch7.adb (Analyze_Package_Body_Helper): Analyze the aspect + specifications that apply to a body. + * sem_ch9.adb (Analyze_Protected_Body): Warn about user-defined + aspects not being supported on protected bodies. Remove the + aspect specifications. (Analyze_Single_Protected_Declaration): + Analyze the aspects that apply to a single protected declaration. + (Analyze_Task_Body): Warn about user-defined aspects not being + supported on task bodies. Remove the aspect specifications. + * sem_ch10.adb: Add with and use clause for Aspects. + (Analyze_Package_Body_Stub): Propagate the aspect specifications + from the stub to the proper body. + * sem_ch13.adb (Analyze_Aspect_Specifications): Insert the + corresponding pragma of an aspect that applies to a body in the + declarations of the body. + * sinfo.ads: Update the gramma of expression_function, + private_type_declaration, private_extension_declaration, + object_renaming_declaration, exception_renaming_declaration, + package_renaming_declaration, subprogram_renaming_declaration, + generic_renaming_declaration, entry_declaration, + subprogram_body_stub, package_body_stub, task_body_stub, + generic_subprogram_declaration. + +2013-09-10 Hristian Kirtchev + + * sem_prag.adb (Analyze_Pragma): Add processing + for aspect/pragma SPARK_Mode when it applies to a [library-level] + subprogram or package [body]. + +2013-09-10 Robert Dewar + + * gnat_ugn.texi: Document that -gnatc and -gnatR cannot be + given together. + * switch-c.adb (Scan_Front_End_Switches): Give error if both + -gnatR and -gnatc given. + +2013-09-10 Robert Dewar + + * g-table.ads, g-table.adb (For_Each): New generic procedure + (Sort_Table): New generic procedure. + +2013-09-10 Thomas Quinot + + * adaint.c (__gnat_is_executable_file_attr): Should be true + for an executable regular file only only (not for a directory + that has the executable permission). + +2013-09-10 Ed Schonberg + + * sem_res.adb: Further work on operator calls in ASIS. + +2013-09-10 Yannick Moy + + * sinfo.ads, sem_prag.ads, sem_ch13.adb: Minor correction and comment + update. + +2013-09-10 Thomas Quinot + + * aspects.ads, sem_ch13.adb: Minor reformatting. + * adaint.c (__gnat_set_close_on_exec): Add comment documenting + that this routine is shared between OS_Lib and Sockets. + +2013-09-10 Robert Dewar + + * exp_prag.adb (Expand_Pragma_Check): Ignore pragma if Is_Ignored set. + * sem_ch13.adb (Make_Aitem_Pragma): Set Is_Checked if needed. + * sem_prag.adb (Check_Kind): Moved from spec (Analyze_Pragma): + Make sure Is_Ignored/Is_Checked are set right (Analyze_Pragma, + case Check): Ditto (Check_Applicable_Policy): Handle + Statement_Assertion case Throughout, set and check the Is_Checked + flag as appropriate. + * sem_prag.ads (Check_Kind): Moved to body. + * sinfo.ads, sinfo.adb (Is_Checked): New flag. + +2013-09-10 Robert Dewar + + * aspects.ads (Delay_Type): New type (Aspect_Delay): New table. + * einfo.adb (Has_Delayed_Rep_Aspects): New flag + (May_Inherit_Delayed_Rep_Aspects): New flag (Rep_Clause): Removed + (use Get_Attribute_Representation_Clause). + * einfo.ads (Has_Delayed_Rep_Aspects): New flag + (May_Inherit_Delayed_Rep_Aspects): New flag + * freeze.adb: Minor reformatting + * sem_ch13.adb (Analyze_Aspect_Speficifications): Redo + handling of delayed evaluation, including optimizing some cases + and avoiding delays. + (Analyze_Aspects_At_Freeze_Point): Now + handled inheriting delayed rep aspects for type derivation case. + (Inherit_Delayed_Rep_Aspects): New procedure + * sem_ch13.ads (Analyze_Aspects_At_Freeze_Point): Now handled + inheriting delayed rep aspects for type derivation case. + * sem_ch3.adb (Build_Derived_Type): Set + May_Inherit_Derived_Rep_Aspects if parent type flag + Has_Delayed_Rep_Aspects is set + +2013-09-10 Robert Dewar + + * errout.adb (Finalize): Don't delete real errors with specific + warning control. + +2013-09-10 Ed Schonberg + + * exp_ch9.adb (Expand_N_Timed_Entry_Call, + Expand_N_Conditional_Entry_Call, Expand_N_Asynchronous_Select): + Handle properly a trigger that is a call to a primitive operation + of a type that implements a limited interface, if the type itself + is not limited. + +2013-09-10 Robert Dewar + + * sem_ch3.adb, sinfo.ads, exp_ch9.adb, sem_prag.adb, sem_ch12.adb, + exp_ch4.adb, sprint.adb: Minor reformatting. + +2013-09-10 Yannick Moy + + * sinfo.ads: Document splitting of pre/post in N_Contract description. + +2013-09-10 Ed Schonberg + + * exp_ch4.adb (Expand_N_Op_Multiply): If the operation is of the + form X * 2 ** N and it has been marked Is_Power_Of_2_For_Shift, + add a mod operation if the result type is a binary modular type. + +2013-09-10 Hristian Kirtchev + + * sem_prag.adb (Check_Mode_Restriction_In_Enclosing_Context): Add local + variable Context. Remove local variable Subp_Id. Start the + context traversal from the current subprogram rather than the + current scope. Update the scope traversal and error reporting. + +2013-09-10 Ed Schonberg + + * exp_ch9.adb (Expand_N_Timed_Entry_Call): New procedure + Rewrite_Triggering_Statements, to encapsulate the statements that + follow the trigger of the entry call. This procedure is needed + when the trigger is a dispatching call, because the expansion + requires several copies of those statements. The procedure is + more efficient, and preserves non-local references when the + construct is within an instance. + +2013-09-10 Ed Schonberg + + * sem_ch12.adb (Analyze_Package_Instantiation): If the + instantiation is a compilation unit, analyze aspects before + analyzing the package declaration for the instance. + * sem_ch13.adb (Analyze_Aspect_Specifications): If the + corresponding node is a package instantiation, insert generated + pragmas at the head of visible declarations. + * sem_prag.adb (Analyze_Pragma, case Preelaborate): In an instance + do not ignore the pragma if it comes from an aspect specification + in the instance, and not from the generic unit. + * sprint.adb (Sprint_Node_Actual): For a package declaration that + is an instantiation, print aspects after declaration. + +2013-09-10 Robert Dewar + + * einfo.adb, sem_prag.adb, rtsfind.ads: Minor reformatting. + +2013-09-10 Hristian Kirtchev + + * sem_prag.adb (Get_SPARK_Mode_Id): Handle the + case where the pragma may appear without an argument. + (Analyze_Global_List): Add expanded_name to the list of constructs + that denote a single item. + (Collect_Global_List): Add expanded_name to the list of constructs + that denote a single item. + +2013-09-10 Hristian Kirtchev + + * exp_ch4.adb (Apply_Accessibility_Check): Add local constant + Pool_Id and local variables Fin_Call and Free_Stmt. Finalize + and deallocate a heap-allocated class-wide object after it + has been determined that it violates the accessibility rules. + * rtsfind.ads: Add new RTU_Id for System.Memory. Add new RE_Id + and entry in RE_Unit_Table for RE_Free. + +2013-09-01 Eric Botcazou + Iain Sandoe + + PR ada/58239 + * gcc-interface/Makefile.in (GCC_LINK_FLAGS): Add -static-libstdc++. + (GCC_LINK): Use CXX instead of CC. + * gcc-interface/Make-lang.in (CXX_LFLAGS): New. + (ADA_TOOLS_FLAGS_TO_PASS): Pass CXX, and CXX_LFLAGS for native. + +2013-08-13 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Do not bother about alias + sets of derived types in ASIS mode. + +2013-08-13 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Replace True with true. + (is_cplusplus_method): Likewise, and False with false. + (components_need_strict_alignment): Likewise. + * gcc-interface/misc.c (gnat_init_gcc_fp): Likewise. + * gcc-interface/trans.c (Loop_Statement_to_gnu): Likewise. + (Handled_Sequence_Of_Statements_to_gnu): Likewise. + (add_cleanup): Likewise. + (Sloc_to_locus1): Likewise. + (Sloc_to_locus): Likewise. + (set_expr_location_from_node): Likewise. + * gcc-interface/utils.c (potential_alignment_gap): Likewise. + +2013-08-13 Thomas Quinot + + * gcc-interface/trans.c (set_end_locus_from_node): Clear column info + for the end_locus of a block if it does not come from an End_Label. + +2013-08-13 Thomas Quinot + + * gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): If + there is no End_Label, attach cleanup actions to the sloc of the HSS + node instead. + (Exception_Handler_to_gnu_zcx): Associate cleanup actions with the sloc + of the handler itself. + (add_cleanup): Clear column information in sloc of cleanup actions. + (Sloc_to_locus1): New static function. + (Sloc_to_locus): Call it. + (set_expr_location_from_node1): New static function. + (set_expr_location_from_node): Call it. + +2013-08-13 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): Deal with specific conditional + expressions for misaligned actual parameters. + +2013-08-13 Eric Botcazou + + * gcc-interface/trans.c (can_equal_min_or_max_val_p): Be prepared for + values outside of the range of the type. + +2013-08-13 Eric Botcazou + + * gcc-interface/utils2.c (build_atomic_load): Do a mere view-conversion + to the original type before converting to the result type. + (build_atomic_store): First do a conversion to the original type before + view-converting to the effective type, but deal with a padded type + specially. + +2013-08-08 Eric Botcazou + + * gcc-interface/Makefile.in (TOOLS_LIBS): Pick C object files from the + compiler build and use standard library variables. + (../../vxaddr2line$(exeext): Do not depend on targext.o and adjust. + (gnatmake-re): Do not depend on targext.o. + (gnatlink-re): Do not depend on link.o and targext.o. + (../../gnatmake$(exeext): Likewise. + (../../gnatlink$(exeext): Likewise. + +2013-07-21 Ondřej Bílka + + * gcc-interface/gigi.h: Fix typos. + * gcc-interface/trans.c: Likewise. + * gcc-interface/utils2.c: Likewise. + * gnat_rm.texi: Likewise. + * gnat_ugn.texi: Likewise. + * raise-gcc.c: Likewise. + * sigtramp-ppcvxw.c: Likewise. + * sysdep.c: Likewise. + * terminals.c: Likewise. + +2013-07-20 Eric Botcazou + + PR ada/57934 + * gcc-interface/ada.h (CAT): Fix typo. + +2013-07-08 Hristian Kirtchev + + * einfo.adb (Get_Pragma): Handle the retrieval of delayed + pragmas stored in N_Contract nodes. + * einfo.ads (Get_Pragma): Update the comment on usage. + * sem_prag.adb (Check_Precondition_Postcondition): Retain a copy + of the pragma when it applies to a body that acts as a spec. The + copy is preanalyzed and chained on the contract of the body. + +2013-07-08 Robert Dewar + + * rtsfind.adb: Minor comment fix. + +2013-07-08 Hristian Kirtchev + + * sem_ch4.adb (Check_Ghost_Subprogram_Call): Do not check the placement + of a Ghost function call when the enclosing context is being + preanalyzed. + +2013-07-08 Ed Schonberg + + * exp_ch6.adb (Expand_Inlined_Call, Process_Formals): If the + expression in a return statement is a numeric literal, qualify + it with the return type for proper resolution. + +2013-07-08 Robert Dewar + + * sem.ads: Minor comment updates. + * s-restri.ads, exp_ch6.adb, lib-load.ads, exp_ch3.adb, sem_ch10.adb: + Minor reformatting. + +2013-07-08 Robert Dewar + + * exp_attr.adb (Expand_N_Attribute_Reference): Add dummy entry + for Restriction_Set. + * gnat_rm.texi: Add missing menu entry for Attribute Ref Add + documentation for attribute Restriction_Set. + * lib-writ.adb (Write_With_Lines): Generate special W lines + for Restriction_Set. + * lib-writ.ads: Document special use of W lines for + Restriction_Set. + * lib.ads (Restriction_Set_Dependences): New table. + * par-ch4.adb (Is_Parameterless_Attribute): Add Loop_Entry to + list (Scan_Name_Extension_Apostrophe): Remove kludge test for + Loop_Entry (Scan_Name_Extension_Apostrophe): Handle No_Dependence + for Restricton_Set. + * restrict.adb (Check_SPARK_Restriction): Put in Alfa order + (OK_No_Dependence_Unit_Name): New function. + * restrict.ads (OK_No_Dependence_Unit_Name): New function. + * rtsfind.adb: Minor reformatting Minor code reorganization. + * sem_attr.adb (Analyze_Attribute): Add processing for + Restriction_Set. + * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): + Remove Check_Unit_Name and use new function + OK_No_Dependence_Unit_Name instead. + * sinfo.ads: Minor comment updates. + * snames.ads-tmpl: Add entry for Restriction_Set attribute. + +2013-07-08 Hristian Kirtchev + + * exp_ch4.adb (Apply_Accessibility_Check): Remove local constant + Pool_Id and local variable Free_Stmt. Do not deallocate the faulty + object as "free" is not available on all targets/profiles. + +2013-07-08 Robert Dewar + + * sem_ch13.adb (Analyze_Aspect_Specifications): Handle + Storage_Size aspect for task type in case discriminant is + referenced. + (Analyze_Attribute_Definition_Clause): Do not flag Storage_Size + attribute definition clause as obsolescent if from aspect. + +2013-07-08 Robert Dewar + + * gnat_rm.texi: Add documentation for Img returning a function. + * par-prag.adb: Minor reformatting. + * restrict.adb: Minor reformatting and code reorganization. + +2013-07-08 Ed Schonberg + + * sem_res.adb: add guard to ASIS transform. + +2013-07-08 Ed Schonberg + + * exp_ch9.adb (Expand_N_Asynchronous_Select): If the trigger + of the asynchronous select is a dispatching call, transform the + abortable part into a procedure, to avoid duplication of local + loop variables that may appear within. + +2013-07-08 Vincent Celier + + * projects.texi: Update the documentation of suffixes in package + Naming. + +2013-07-08 Ed Schonberg + + * sem_ch6.adb (Conforming_Types): Anonymous_access_to_subprograsm + types are type conformant if the designated type of one is + protected and the other is not. Convention only matters when + checking subtype conformance. + +2013-07-08 Ed Schonberg + + * sem_res.adb (Make_Call_Into_Operator): In ASIS mode, propagate + back the fully resolved operands to the original function call + so that all semantic information remains available to ASIS. + +2013-07-08 Ed Schonberg + + * sem_ch4.adb: minor reformatting (remove obsolete comment). + * sem_ch9.adb: improve error message on illegal trigger. + +2013-07-08 Robert Dewar + + * sem_prag.adb: Minor reformatting. + +2013-07-08 Robert Dewar + + * gnatcmd.adb: Minor reformatting. + +2013-07-08 Robert Dewar + + * targparm.adb (Get_Target_Parameters): Recognize pragma + Partition_Elaboration_Policy. + +2013-07-08 Robert Dewar + + * gnat_ugn.texi: Minor update to mention partition elaboration policy. + +2013-07-08 Ed Schonberg + + * sem_ch4.adb (Comple_Object_Operation): Revert previous change. + (Analyze_Indexed_Component_Form): In ASIS mode, if node has been + transformed but not rewritten as a function call (as is the case + in a generic), analyze it as such. + +2013-07-08 Thomas Quinot + + * gnat_rm.texi: Minor rewording: add missing word "operators" + in documentation for restriction No_Direct_Boolean_Operator. + +2013-07-08 Robert Dewar + + * errout.adb (Set_Msg_Txt): No longer sets Is_Style_Msg, + Is_Warning_Msg, or Is_Unconditional_Msg (all are set elsewhere + now). + * errout.ads: Insertions ! and !! no longer have to be at the + end of the message, they can be anywhere in the message. + * erroutc.adb (Test_Style_Warning_Serious_Unconditional_Msg): + Replaces Test_Style_Warning_Serious_Msg + * erroutc.ads (Has_Double_Exclam): New flag New comments for + existing flags (Test_Style_Warning_Serious_Unconditional_Msg): + Replaces Test_Style_Warning_Serious_Msg + * errutil.adb (Test_Style_Warning_Serious_Unconditional_Msg): + Replaces Test_Style_Warning_Serious_Msg + +2013-07-08 Robert Dewar + + * par-prag.adb (Process_Restrictions_Or_Restriction_Warnings): + Recognize SPARK_05 as synonym for SPARK in restrictions pragma. + * restrict.ads, restrict.adb (SPARK_Hides): Table moved to body, only + referenced there. + * scng.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_ch8.adb, + sem_res.adb, sem_util.adb: Use restriction SPARK_05 instead of SPARK. + * snames.ads-tmpl (Name_No_Obsolescent_Features): New entry. + +2013-07-08 Vincent Celier + + * gnatcmd.adb (Check_Files): Use a response file for gnatls + when possible. + +2013-07-08 Gary Dismukes + + * freeze.adb: Minor typo fixes. + +2013-07-08 Robert Dewar + + * gnat_rm.texi: Document SPARK_05 (replaces SPARK) Document + obsolete recognition of SPARK Document all other obsolete synonyms + for old restrictions. + * restrict.adb (Check_SPARK_Restriction): SPARK_05 replaces + SPARK (Process_Restriction_Synonyms): Handle SPARK as synonym + for SPARK_05. + * restrict.ads: Restriction SPARK_05 replaces SPARK. + * s-rident.ads: Replace restriction SPARK by SPARK_05 Add SPARK + as synonym for SPARK_05. + * sem_prag.adb: Minor reformatting. + * snames.ads-tmpl: Add entries for Name_SPARK and Name_SPARK_05. + +2013-07-08 Robert Dewar + + * sem_dim.adb: Minor error message change. + * freeze.adb (Freeze_Entity, array type case): Extend handling + of Implicit_Packing to handle multi-dimensional array case. + * gnat_rm.texi: Update doc on Implicit_Packing. + +2013-07-08 Robert Dewar + + * exp_ch4.adb: Minor reformatting. + +2013-07-08 Ed Schonberg + + * sem_ch4.adb (Complete_Object_Operation): In ASIS mode, if + the parent node is a selected component and the analysis as a + call is successful, set the type of the selector in the parent + node for subsequent checks, because the rewriting of the node + does not take place during pre-analysis. + +2013-07-08 Robert Dewar + + * sem_ch8.adb, exp_ch3.adb: Minor reformatting. + +2013-07-08 Hristian Kirtchev + + * exp_ch4.adb (Expand_N_Op_Eq): When comparing two + Bounded_Strings, use the predefined equality function of the + root Super_String type. + +2013-07-08 Hristian Kirtchev + + * exp_ch4.adb (Create_Alternative): Removed. + (Expand_N_If_Expression): Remove constant + In_Case_Or_If_Expression. Add local variable + Ptr_Typ. Inspect the "then" and "else" action lists + for transient controlled objects and generate code to + finalize them. (Is_Controlled_Function_Call): Removed. + (Process_Action): Update the comment on usage. Update the call + to Process_Transient_Object. There is no need to continue the + traversal of the object itself. + (Process_Actions): New routine. + (Process_Transient_Object): Moved to the top level of Exp_Ch4. Add + a new formal and update the related comment on usage. + * exp_util.adb (Within_Case_Or_If_Expression): Start the search + from the parent of the node. + +2013-07-08 Robert Dewar + + * a-cusyqu.ads, a-cbprqu.ads, s-interr.ads, a-cuprqu.ads, + a-cbsyqu.ads: Minor reformatting (proper formatting of overriding). + +2013-07-08 Ed Schonberg + + * sem_ch8.adb (Attribute_Renaming): Treat 'Img as an attribute + that can be renamed as a function. + +2013-07-08 Thomas Quinot + + * g-socket.ads: Document target dependency: FIONBIO may or may not + be inherited from listening socket by accepted socket. + +2013-07-08 Hristian Kirtchev + + * exp_ch4.adb (Apply_Accessibility_Check): Do not deallocate the object + on targets that can't deallocate. + +2013-07-08 Hristian Kirtchev + + * exp_ch3.adb (Freeze_Type): Generate a + subpools-related accessibility check only on profiles that + include the corresponding library unit. + +2013-07-08 Gary Dismukes + + * sem_ch8.adb: Minor typo fixes. + +2013-07-08 Javier Miranda + + * sem_ch8.adb (Save_Scope_Stack): Adding documentation. + (Restore_Scope_Stack): Remove the elements of the list when the + visibility of each entity is restored. + +2013-07-08 Robert Dewar + + * exp_ch9.adb, sem.ads, sem_util.adb: Minor reformatting. + +2013-07-08 Robert Dewar + + * sem_ch8.adb, sem_ch8.ads: Minor reformatting. + +2013-07-08 Gary Dismukes + + * gnat_rm.texi: Minor reformatting and rewording for consistency. + +2013-07-08 Bob Duff + + * exp_ch3.adb (Build_Master): If Desig_Type is an incomplete + view coming from a limited-with'ed package, use the nonlimited + view in case it has tasks. + +2013-07-08 Javier Miranda + + * sem_ch8.ad[sb] (Save_Scope_Stack): Modified to return the list + of entities which have been temporarily removed from immediate + visibility. + (Restore_Scope_Stack): Modified to receive an + additional parameter with the list of entities whose immediate + visibility must be restored. + * sem.adb (Do_Analyze): Use new version of + Save_Scope_Stack/Restore_Scope_Stack + * sem_ch12.adb (Inline_Instance_Body): Use new version of + Save_Scope_Stack and Restore_Scope_Stack + +2013-07-08 Hristian Kirtchev + + * sem_prag.adb (Analyze_Pragma): Remove + variable Unit_Prag. Remove the check on duplicate mode for the + configuration form of the pragma. + (Redefinition_Error): Removed. + +2013-07-08 Robert Dewar + + * lib.ads, gnat_rm.texi, einfo.ads, sem_ch13.adb: Minor reformatting + and editing. + +2013-07-08 Ed Schonberg + + * sem_prag.adb (Analyze_PPC_In_Decl_Part): In ASIS mode, + pre-analyze only the original expression attached to the source + aspect, not the relocated expression of the pragma, to prevent + malformed trees in ASIS mode. + * sem_ch13.adb (Analyze_Aspect_Specifications): Revert previous + patch: the expression in the aspect for pre/post must be relocated + to the pragma for proper analysis. + +2013-07-05 Hristian Kirtchev + + * aspects.adb: Add an entry for SPARK_Mode in table Canonical_Aspect. + * aspects.ads: Add an entry for SPARK_Mode in tables Aspect_Id, + Aspect_Argument, Aspect_Names. + * atree.adb (Node32): New routine. + (Set_Node32): New routine. + * atree.ads (Node32): New routine. + (Set_Node32): New routine. + * einfo.adb: Node32 is now used as SPARK_Mode_Pragmas. + (Set_SPARK_Mode_Pragmas): New routine. + (SPARK_Mode_Pragmas): New routine. + (Write_Field32_Name): Add and entry for SPARK_Modes. + * einfo.ads: Add attribute SPARK_Mode_Pragmas along with usage + in various entities. + (Set_SPARK_Mode_Pragmas): New routine and + pragma Inline. + (SPARK_Mode_Pragmas): New routine and pragma Inline. + * gnat_rm.texi: Add sections explaining the syntax and semantics + of aspect/pragma SPARK_Mode. + * gnat_ugn.texi: Add pragma SPARK_Mode to the list of + configuration pragmas. + * lib.adb (Set_SPARK_Mode_Pragma): New routine. + (SPARK_Mode_Pragma): New routine. + * lib.ads: Alphabetize the comments on fields of record + Unit_Record. Add new field SPARK_Mode_Pragma along with + comment on its usage. Update the layout of record Unit_Record. + (Set_SPARK_Mode_Pragma): New routine and pragma Inline. + (SPARK_Mode_Pragma): New routine and pragma Inline. + * lib-load.adb (Create_Dummy_Package_Unit): Initialize + field SPARK_Mode_Pragma. + (Load_Main_Source): Initialize field SPARK_Mode_Pragma. + (Load_Unit): Initialize field SPARK_Mode_Pragma. + * lib-writ.adb (Add_Preprocessing_Dependency): Initialize field + SPARK_Mode_Pragma. + (Ensure_System_Dependency): Initialize field SPARK_Mode_Pragma. + * opt.ads: Alphabetize verification flags. Store the + compilation-wide SPARK mode in variable Global_SPARK_Mode. + * par-prag.adb: Pragma SPARK_Mode does not need special processing + by the parser. + * sem_ch13.adb (Analyze_Aspect_Specifications): Convert aspect + SPARK_Mode into a pragma. + (Check_Aspect_At_Freeze_Point): Aspect SPARK_Mode does not need + delayed processing. + * sem_prag.adb: Add an entry for SPARK_Mode in table Sig_Flags. + (Analyze_Pragma): Add processing for pragma SPARK_Mode. + (Get_SPARK_Mode_Id): New routine. + (Is_Elaboration_SPARK_Mode): New routine. + (Is_Private_SPARK_Mode): New routine. + * sem_prag.ads (Get_SPARK_Mode_Id): New routine. + (Is_Elaboration_SPARK_Mode): New routine. + (Is_Private_SPARK_Mode): New routine. + * sinfo.ads: Update the comment on the usage of field Next_Pragma. + * snames.ads-tmpl: Add new predefined name for SPARK_Mode and + Auto. Add new pragma Id for SPARK_Mode. + * types.ads: Add new type SPARK_Mode_Id. + +2013-07-05 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specifications): For + pre/postconditions copy the expression to the generated pragma, + to avoid sharing between the original aspect and the pragma node, + because in ASIS_Mode both will be independently analyzed. + +2013-07-05 Ed Schonberg + + * exp_ch3.adb (Build_Variant_Record_Equality): Add pairs of + formals for each discriminant of an unchecked union. + (Make_Eq_Case): Suprogram accepts a list of discriminants. Nested + variants are supported. New helper function Corresponding_Formal. + * exp_ch4.adb (Build_Equality_Call): For unchecked unions, + loop through discriminants to create list of inferred values, + and modify call to equality routine accordingly. + +2013-07-05 Claire Dross + + * a-cfdlli.ads, a-cfhama.ads, a-cfhase.ads, a-cforma.ads, + a-cforse.ads, a-cofove.ads: Add preconditions when needed + + container types are not tagged any more. + +2013-07-05 Thomas Quinot + + * freeze.adb (Freeze_Entity): For an object with captured + initialization statements, do not remove Init_Stmts from the + enclosing list, as Freeze_All might rely on it to know where to + stop freezing. + +2013-07-05 Robert Dewar + + * exp_ch4.adb, a-cfdlli.ads, a-ngelfu.ads, s-bignum.adb: Minor + reformatting. + +2013-07-05 Hristian Kirtchev + + * exp_ch4.adb (Expand_Composite_Equality): Use the full view + when the base type is private. + +2013-07-05 Claire Dross + + * a-cfdlli.ads: Add preconditions when needed. + +2013-07-05 Robert Dewar + + * sem_ch8.adb: Minor reformatting. + +2013-07-05 Ed Schonberg + + * sem_ch3.adb (Access_Subprogram_Declaration): Use + Generate_Reference_To_Formals. + * lib-xref.adb (Generate_Reference_To_Formals): In the case of + access to subprograms, the formals are found in the designated + subprogram type. + +2013-07-05 Robert Dewar + + * gnat_ugn.texi: Document that comments can be lined up with + previous non-blank line. + * styleg.adb (Check_Comment): Allow indentation to match previous + non-blank line (Same_Column_As_Previous_Line): New function + +2013-07-05 Robert Dewar + + * gnat_rm.texi: Update doc on missing pragmas. + * sem_ch12.adb: Minor comment additions. + +2013-07-05 Hristian Kirtchev + + * sem_prag.adb (Analyze_Pragma): Ensure that + Contract_Cases, Depends and Global are analyzed when they apply + to a subprogram compilation unit. The pragmas are all added + unconditionally to the construct's contract. This ensures that + proof tools can locate the pragmas. + +2013-07-05 Ed Schonberg + + * sem_ch8.adb (Freeze_Actual_Profile): An instance within + a generic unit does not freeze a generic private type of the + enclosing generic. This rule must also apply to a type derived + from a generic private type. + +2013-07-05 Arnaud Charlet + + * gnat_rm.texi: Add missing documentation for pragmas. + +2013-07-05 Yannick Moy + + * sem_ch12.adb: Minor comment. + +2013-07-05 Robert Dewar + + * gnat_rm.texi: Document that -gnatR and -gnatD cannot be used + together. + * switch-c.adb: Do not allow -gnatD and -gnatR to both be + specified. + +2013-07-05 Robert Dewar + + * gnat_rm.texi: Add missing documentation for pragmas. + * sem_ch8.adb: Minor reformatting. + * gnat_ugn.texi: Document that -gnatR and -gnatD cannot be used + together. + +2013-07-05 Yannick Moy + + * sem_ch12.ads, sem_ch12.adb (Need_Subprogram_Instance_Body): Force + instance of subprogram body in SPARK mode, by testing Expander_Active + (set in SPARK mode) instead of Full_Expander_Active (not set in + SPARK mode). + * sem_ch8.adb: Minor reformatting. + +2013-07-05 Robert Dewar + + * freeze.adb (Freeze_Entity): Remove test of obsolete flag + Propagate_Exceptions, and associated useless code that did + nothing. + * gnat_rm.texi: Add documentation for obsolete pragma + Propagate_Exceptions. + * opt.ads (Propagate_Exceptions): Obsolete flag removed. + * sem_prag.adb (Analyze_Pragma, case Propagate_Exceptions): + Remove useless and obsolete setting of Propagate_Exceptions flag. + +2013-07-05 Robert Dewar + + * gnat_rm.texi, sem_prag.adb: Minor comment/text fixes. + +2013-07-05 Robert Dewar + + * gnat_rm.texi: Add missing doc for various pragmas. + +2013-07-05 Robert Dewar + + * par_sco.adb, sem_ch12.adb, par-ch5.adb: Minor reformatting. + * gnat_rm.texi: Document pragma Profile_Warnings. + * restrict.ads, sem_prag.adb: Minor reformatting. + +2013-07-05 Ed Schonberg + + * sem_ch12.adb (Check_Formal_Package_Instance): Handle properly + a formal subprogram that was defaulted in the formal package. + +2013-07-05 Thomas Quinot + + * par_sco.adb (Traverse_Declarations_Or_Statements): Ignore + N_Implicit_Label_Declaration nodes. + +2013-07-05 Robert Dewar + + * a-cfhase.adb, sem_prag.adb, a-cfhama.adb: Minor reformatting. + +2013-07-05 Ed Schonberg + + * sem_ch12.adb (Copy_Generic_Node): Check that name in function + call is a valid entity name before preserving entity in generic + copy. + +2013-07-05 Thomas Quinot + + * par-ch5.adb: Minor reformatting. + +2013-07-05 Thomas Quinot + + * sinfo.ads: Minor clarification to documentation for + N_Implicit_Label_Declaration. + +2013-07-05 Hristian Kirtchev + + * a-except-2005.adb, a-except.adb: Add constant Rmsg_17. Correct the + values of all remaining constants. + (Rcheck_35): New routine along with pragmas Export and No_Return. + (Rcheck_PE_Aliased_Parameters): New routine along with pragmas + Export and No_Return. + (Rcheck_PE_All_Guards_Closed, + Rcheck_PE_Bad_Predicated_Generic_Type, + Rcheck_PE_Current_Task_In_Entry_Body, + Rcheck_PE_Duplicated_Entry_Address, Rcheck_PE_Explicit_Raise, + Rcheck_PE_Implicit_Return, Rcheck_PE_Misaligned_Address_Value, + Rcheck_PE_Missing_Return, Rcheck_PE_Overlaid_Controlled_Object, + Rcheck_PE_Potentially_Blocking_Operation + Rcheck_PE_Stubbed_Subprogram_Called, + Rcheck_PE_Unchecked_Union_Restriction, + Rcheck_PE_Non_Transportable_Actual, Rcheck_SE_Empty_Storage_Pool, + Rcheck_SE_Explicit_Raise, Rcheck_SE_Infinite_Recursion, + Rcheck_SE_Object_Too_Large, Rcheck_PE_Finalize_Raised_Exception): + Update the use of Rmsg_XX. + (Rcheck_17, Rcheck_18, Rcheck_19, + Rcheck_20, Rcheck_21, Rcheck_22, Rcheck_23, Rcheck_24, Rcheck_25, + Rcheck_26, Rcheck_27, Rcheck_28, Rcheck_29, Rcheck_30, Rcheck_31, + Rcheck_32, Rcheck_33, Rcheck_34, Rcheck_35): Update corresponding + renamed subprograms. + * checks.adb: Add with and use clause for Stringt. + (Apply_Parameter_Aliasing_Checks): Make constant Loc visible in + all subprograms of Apply_Parameter_Aliasing_Checks. Remove local + variable Cond. Initialize Check at the start of the routine. Use + routine Overlap_Check to construct a simple or a detailed run-time + check. Update the creation of the simple check. + (Overlap_Check): New routine. + * exp_ch11.adb (Get_RT_Exception_Name): Add a value for + PE_Aliased_Parameters. + * types.ads: Add new enumeration literal + PE_Aliased_Parameters. Update the corresponding integer values + of all RT_Exception_Code literals. + * types.h: Add new constant PE_Aliased_Parameters. Correct the + values of all remaining constants. + +2013-07-05 Yannick Moy + + * gnat_rm.texi: Minor renaming of SPARK into SPARK 2005 in + documentation. + +2013-07-05 Ed Schonberg + + * sem_prag.adb (Analyze_PPC_In_Decl_Part): For a class-wide + condition, when replacing the name of a formal by a conversion + to the class-wide type, exempt selector names that appear in + parameter associations. + +2013-06-13 Eric Botcazou + + * gcc-interface/ada-tree.h (DECL_BY_DOUBLE_REF_P): Delete. + * gcc-interface/gigi.h (annotate_object): Adjust prototype. + (convert_vms_descriptor): Likewise. + * gcc-interface/decl.c (gnat_to_gnu_param): Do not pass fat pointer + types by double dereference. + (annotate_object): Remove BY_DOUBLE_REF parameter and adjust. + (gnat_to_gnu_entity): Adjust calls to annotate_object. + * gcc-interface/trans.c (Identifier_to_gnu): Do not deal with double + dereference. + (Call_to_gnu): Likewise. + (build_function_stub): Adjust call to convert_vms_descriptor. + (Subprogram_Body_to_gnu): Adjust call to annotate_object. + * gcc-interface/utils.c (convert_vms_descriptor): Remove BY_REF + parameter and adjust. + +2013-05-30 Eric Botcazou + + * gcc-interface/Makefile.in (arm% androideabi): Robustify. + +2013-05-26 Eric Botcazou + + * gcc-interface/decl.c: (gnat_to_gnu_entity): In ASIS mode, do not + check that access types have a set size. + +2013-05-26 Eric Botcazou + + * gcc-interface/decl.c (vinfo_t): New type and associated vector. + (components_to_record): Change return type to bool. + Lay out the variants in two passes. Do not force a specific layout for + the variant part if the variants do not have a representation clause. + Take the alignment of the variant part into account when laying out + variants without rep clause in a record type with a partial rep clause. + (create_rep_part): Do not set the position of the field. + +2013-05-26 Eric Botcazou + + * gcc-interface/trans.c (Attribute_to_gnu) : Add kludge + to avoid generating an overflow for -1. + +2013-05-26 Eric Botcazou + + * gcc-interface/gigi.h (create_type_decl): Adjust prototype. + (create_label_decl): Complete prototype. + (process_attributes): Declare. + * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust multiple calls to + create_type_decl throughout. + : Do the layout of the type manually and call + process_attributes on it. Reindent. + : Minor tweak. + : Reindent. + : Call process_attributes on the array type built + for a packed array type. + : Call process_attributes on the type. + : Likewise. + : Likewise. + : Likewise. + Likewise for all types at the end of the processing. + * gcc-interface/utils.c (make_aligning_type): Adjust call to + create_type_decl. + (maybe_pad_type): Likewise. + (create_index_type): Likewise. + (create_type_decl): Remove attr_list parameter and associated code. + (create_var_decl_1): Call process_attributes on the variable. + (process_attributes): Take a pointer to the object and add in_place + and gnat_node parameters and adjust throughout. + : Pass ATTR_FLAG_TYPE_IN_PLACE only on demand + and set the input location. + Zap the attribute list at the end. + (create_subprog_decl): Call process_attributes on the subprogram. + (build_unc_object_type): Adjust call to create_type_decl. + (handle_vector_type_attribute): Remove dead code. + +2013-05-26 Eric Botcazou + + * gcc-interface/gigi.h (make_aligning_type): Adjust prototype. + * gcc-interface/utils.c (make_aligning_type): Take GNAT_NODE parameter + for the position of the associated TYPE_DECL. + * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust call to above. + * gcc-interface/utils2.c (maybe_wrap_malloc): Likewise. + +2013-05-26 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Do not prematurely + elaborate the full view of a type with a freeze node. + * gcc-interface/trans.c (process_type): Add explicit predicate. + +2013-05-26 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Always build the + UNC variable for aliased objects with unconstrained nominal subtype. + +2013-05-24 Eric Botcazou + + * gcc-interface/gigi.h (gnat_init_gcc_fp): Declare. + * gcc-interface/trans.c (gigi): Call it. + * gcc-interface/misc.c (gnat_init_gcc_fp): New function. + +2013-05-24 Eric Botcazou + + * gcc-interface/gigi.h (enum inline_status_t): New type. + (create_subprog_decl): Adjust prototype. + * gcc-interface/decl.c (gnat_to_gnu_entity) : Adjust + calls to create_subprog_decl. + (get_minimal_subprog_decl): Likewise. + * gcc-interface/trans.c (gigi): Likewise. + (build_raise_check): Likewise. + (establish_gnat_vms_condition_handler): Likewise. + (Compilation_Unit_to_gnu): Likewise. + (gnat_to_gnu): Likewise. + * gcc-interface/utils.c (create_subprog_decl): Change inline_flag + parameter to inline_status and implement for suppressed inlining. + +2013-05-24 Eric Botcazou + + * gcc-interface/ada-tree.h (LOOP_STMT_NO_UNROLL): New define. + (LOOP_STMT_UNROLL): Likewise. + (LOOP_STMT_NO_VECTOR): Likewise. + (LOOP_STMT_VECTOR): Likewise. + * gcc-interface/trans.c (struct loop_info_d): Replace label field + with stmt field. + (Pragma_to_gnu) : New case. + (Loop_Statement_to_gnu): Save the loop statement onto the stack + instead of the label. + (gnat_to_gnu) : Retrieve the loop label. + +2013-05-24 Eric Botcazou + + * gcc-interface/trans.c: Include diagnostic.h and opts.h. + (Pragma_to_gnu) : New case. + +2013-05-24 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Constify + a handful of local variables. + For a derived untagged type that renames discriminants, change the type + of the stored discriminants to a subtype with the bounds of the type + of the visible discriminants. + (build_subst_list): Rename local variable. + +2013-05-16 Jason Merrill + + * gcc-interface/Make-lang.in (gnat1$(exeext)): Use link mutex. + +2013-05-13 Rainer Orth + + PR ada/57188 + * gcc-interface/Makefile.in: Allow for amd64 solaris2. + +2013-05-07 Eric Botcazou + + PR ada/56474 + * gcc-interface/decl.c (gnat_to_gnu_entity) : Use + int_const_binop to shift bounds by 1 when they are integer constants. + +2013-04-25 Arnaud Charlet + + * gcc-interface/Makefile.in (ADA_EXCLUDE_SRCS): Exclude s-init.ad{s,b} + +2013-04-25 Hristian Kirtchev + + * checks.adb (Apply_Predicate_Check): Update the comment associated + with the call to Check_Expression_Against_Static_Predicate. + * sem_ch3.adb (Analyze_Object_Declaration): Update the comment + associated with the call to Check_Expression_Against_Static_Predicate. + * sem_util.adb (Check_Expression_Against_Static_Predicate): + Broaden the check from a static expression to an expression with + a known value at compile time. + * sem_util.ads (Check_Expression_Against_Static_Predicate): Update + comment on usage. + +2013-04-25 Thomas Quinot + + * exp_attr.adb (Expand_N_Attribute_Reference, cases Position, + First_Bit, and Last_Bit): Fix incorrect test in implementation of + RM 2005 13.5.2(3/2). + +2013-04-25 Claire Dross + + * a-cfhase.adb, a-cfhase.ads, a-cforma.adb, a-cforma.ads, a-cfhama.adb, + a-cfhama.ads, a-cforse.adb, a-cforse.ads, a-cofove.adb, a-cofove.ads + (Query_Element): Removed. + (Update_Element): Removed. + (Insert): The version with no New_Item specified is removed. + (Iterate): Removed. + (Write): Removed. + (Read): Removed. + Every check of fields Busy and Lock has been removed. + +2013-04-25 Robert Dewar + + * sem_prag.adb (Analyze_Pragma, case Contract_Cases): Remove + call to S14_Pragma (Find_Related_Subprogram): Require proper + placement in subprogram body (Find_Related_Subprogram): Detect + duplicates for all cases (Find_Related_Subprogram): Handle case + of spec nested inside body. + +2013-04-25 Arnaud Charlet + + * par-prag.adb: Fix typo. + +2013-04-25 Hristian Kirtchev + + * checks.adb (Apply_Predicate_Check): If the type has a static + predicate and the expression is also static, check whether the + expression satisfies the predicate. + * sem_ch3.adb (Analyze_Object_Declaration): If the type has a + static predicate and the expression is also static, see if the + expression satisfies the predicate. + * sem_util.adb: Alphabetize several routines. + (Check_Expression_Against_Static_Predicate): New routine. + * sem_util.ads (Check_Expression_Against_Static_Predicate): New routine. + +2013-04-25 Robert Dewar + + * gnat_rm.texi: Document Reason argument for pragma Warnings. + * par-prag.adb: Handle Reason parameter for pragma Warnings. + * sem_prag.adb (Analyze_Pragma, case Warnings): Allow Reason argument. + * snames.ads-tmpl (Name_Reason): New name entry. + +2013-04-25 Yannick Moy + + * exp_spark.adb (Expand_SPARK_N_In): Remove procedure. + (Expand_SPARK): Remove special expansion for membership tests. + +2013-04-25 Hristian Kirtchev + + * exp_ch3.adb (Expand_N_Object_Declaration): Update all places + that should use constant Base_Typ. When building an invariant + check, account for invariants coming from the base type. Prevent + the creation of a junk invariant check when the related object + is of an array type and it is initialized with an aggregate. + * exp_util.adb (Make_Invariant_Call): Typ is now a variable. Use + the base type to create an invariant call when the type of the + expression is a composite subtype. + +2013-04-25 Vasiliy Fofanov + + * a-cborse.adb: Fix minor typo. + +2013-04-25 Ed Schonberg + + * sem_ch6.adb (Different_Generic_Profile): A spec and body + match in an instance if a subtype declaration that renames a + generic actual with the same name appears between spec and body. + +2013-04-25 Robert Dewar + + * sem_util.adb: Minor reformatting. + +2013-04-25 Ed Schonberg + + * exp_aggr.adb (Expand_N_Aggregate): Use special circuitry to + fold strings with a single others choice only if there are no + expressions in the aggregate. + +2013-04-25 Arnaud Charlet + + * gnat_ugn.texi: Update doc on Ada 2012 default mode. + +2013-04-25 Hristian Kirtchev + + * exp_ch6.adb: Add with and use clause for Stringt. + (Expand_Contract_Cases): Moved from sem_ch6. Add formal parameters + Decls and Stmts along with comments on their usage. + * exp_ch6.ads (Expand_Contract_Cases): Moved from sem_ch6. + * sem_ch6.adb (Expand_Contract_Cases): Moved to exp_ch6. + (Process_Contract_Cases): Update the call to Expand_Contract_Cases. + +2013-04-25 Ed Schonberg + + * gnat_rm.texi: Minor editing, to clarify use of dimension aspects. + * sem_util.adb (Is_OK_Variable_For_Out_Formal): Reject an + aggregate for a packed type, which may be converted into an + unchecked conversion of an object. + +2013-04-25 Robert Dewar + + * sem_prag.adb: Minor code reorganization (correct misspelling + Restiction). + * sem_util.adb, aspects.ads, sem_ch6.adb: Minor reformatting. + * gnat_rm.texi: Document impl-defined aspects. + * sem_dim.adb, sem_dim.ads, gnat_ugn.texi, s-dimmks.ads: Minor + reformatting. + +2013-04-25 Hristian Kirtchev + + * einfo.adb (Set_Abstract_States): The attribute now applies + to generic packages. + * sem_ch4.adb (Referenced): Moved to sem_util. + * sem_ch7.adb (Unit_Requires_Body): A [generic] package with + a non-null abstract state needs a body. + * sem_prag.adb (Analyze_Depends_In_Decl_Part): Update the calls + to Collect_Subprogram_Inputs_Outputs. + (Analyze_Global_Item): Verify the proper usage of an item with mode + In_Out or Output relative to the enclosing context. + (Analyze_Pragma): Abstract_State can now be applied to a generic + package. Do not reset the Analyzed flag for pragmas Depends and Global + as this is not needed. + (Appears_In): Moved to library level. + (Check_Mode_Restiction_In_Enclosing_Context): New routine. + (Collect_Subprogram_Inputs_Outputs): Moved to library level. Add + formal parameters Subp_Id, Subp_Inputs, Subp_Outputs and Global + seen along with comments on usage. + * sem_util.ads, sem_util.adb (Referenced): New routine. + +2013-04-25 Hristian Kirtchev + + * sem_ch6.adb (Expand_Contract_Cases): Generate + detailed error messages only when switch -gnateE is in effect. + +2013-04-25 Yannick Moy + + * sem_attr.adb (Analyze_Attribute): Do not issue + an error for a possibly misplaced 'Result or 'Old attribute when + analyzing the aspect. + +2013-04-25 Robert Dewar + + * sem_ch12.adb, sem_util.adb, sem_ch4.adb: Minor reformatting. + +2013-04-25 Hristian Kirtchev + + * sem_ch4.adb (Analyze_Quantified_Expression): + Add local variable Loop_Id. Verify that the loop variable + is used within the condition of the quantified expression. + (Referenced): New routine. + +2013-04-25 Hristian Kirtchev + + * sem_case.adb (Analyze_Choices): Enhance the error message + given on a bad use of subtype predicate. + * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Enhance + the error message given on a bad use of subtype predicate. + * sem_util.adb (Bad_Predicated_Subtype_Use): Add formal parameter + Suggest_Static. Emit an extra error message advising how to + remedy the bad use of the predicate if the context warrants it. + * sem_util.ads (Bad_Predicated_Subtype_Use): Add formal parameter + Suggest_Static along with a comment explaining its usage. + +2013-04-25 Ed Schonberg + + * sem_disp.adb (Check_Dispatching_Operation): Further refinement + to checks for AI05-0125: the check for a hidden primitive that + may be overridden by the new declaration only applies if the + hidden operation is never declared. This is not the case if the + operation is declared in a parent unit. + +2013-04-25 Robert Dewar + + * debug.adb: Remove d.X and d.Y entries and documentation. + * exp_ch4.adb (Expand_N_If_Expression): Remove special code used + if expression with actions not available (now always available). + (Expand_Short_Circuit_Operator): Same change. + * gnat1drv.adb (Adjust_Global_Switches) Remove setting + Use_Expression_With_Actions flag, since this is now obsolete. + * opt.ads (Use_Expression_Actions): Removed (always True now). + * sinfo.ads: Minor comment updates. + +2013-04-25 Ed Schonberg + + * sem_ch12.adb (Check_Generic_Actuals): If an actual is an array + subtype whose base type is currently private, install full view + when compiling instance body. + +2013-04-25 Ed Schonberg + + * sem_disp.adb (Check_Dispatching_Operation): Refine checks for + AI05-0125: the check for a hidden primitive that may be overridden + by the new declaration is only performed if the declaration comes + from source, and it must carry an explicit overriding indicator. + +2013-04-25 Hristian Kirtchev + + * einfo.adb (Abstract_States): The attribute now applies to + generic packages. + * sem_ch3.adb (Analyze_Object_Declaration): Check whether an + object declaration introduces an illegal hidden state. + * sem_prag.adb (Analyze_Abstract_State): Check whether a state + declaration introduces an illegal hidden state. + * sem_util.ads, sem_util.adb (Check_No_Hidden_State): New routine. + +2013-04-25 Ed Schonberg + + * exp_ch6.adb (Is_Build_In_Place_Function_Call): The call may + be to a protected function, in which case the name in the call + is a selected component. + +2013-04-25 Hristian Kirtchev + + * sem_ch4.adb (Analyze_Quantified_Expression): + Warn on a suspicious use of quantifier "some" when "all" was meant. + (No_Else_Or_Trivial_True): New routine. + +2013-04-25 Robert Dewar + + * einfo.ads, einfo.adb: Put back with/use for Namet. + (Get_Pragma): New name (wi new spec) for Find_Pragma. + * sem_ch6.adb: Change name Find_Pragma to Get_Pragma with + different interface. + +2013-04-25 Ed Schonberg + + * sem_ch3.adb (Is_Visible_Component): In an instance all + components are visible. + +2013-04-25 Matthew Heaney + + * a-rbtgbo.adb, a-crbtgo.adb (Generic_Equal): do not test for + tampering when container empty. + * a-crbtgk.adb (Ceiling, Find, Floor): ditto. + (Generic_Conditional_Insert, Generic_Conditional_Insert_With_Hint): + ditto. + +2013-04-25 Ed Schonberg + + * par-ch12.adb: Move aspects from package specification to + generic package declaration. + * sem_ch12.adb: Analyze aspect specifications before building + and analyzing the generic copy, so that the generated pragmas + are properly taken into account. + * sem_ch13.adb: For compilation unit aspects that apply to a + generic package declaration, insert corresponding pragmas ahead + of visible declarations. + * sprint.adb: Display properly the aspects of a generic type + declaration. + +2013-04-25 Robert Dewar + + * frontend.adb: Minor reformatting. + +2013-04-25 Ed Schonberg + + * einfo.ads: Extend documentation on use of Is_Private_Ancestor + for untagged types. + * sem_ch3.adb (Is_Visible_Component): Refine predicate for the + case of untagged types derived from private types, to reject + illegal selected components. + +2013-04-25 Gary Dismukes + + * sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Test + for case of selecting from an unexpanded implicit dereference + and do not make a recursive call on such a prefix. + +2013-04-25 Doug Rupp + + * targparm.adb (VXF{_Str}): New tag for vaxfloat. + (Get_Target_Parameters): Handle VXF tag. + * targparm.ads (VAX_Float_On_Target): New boolean. + * system-vms-ia64.ads (VAX_Float): New boolean. + * frontend.adb (Frontend): Handle VAX float boolean. + +2013-04-25 Hristian Kirtchev + + * einfo.ads, einfo.adb: Remove with and use clauses for Namet. + (Find_Pragma): New routine. + * sem_util.ads, sem_util.adb (Find_Pragma): Moved to einfo. + +2013-04-25 Hristian Kirtchev + + * sem_ch13.adb (Add_Call): Do not capture the nature of the inherited + predicate. + (Add_Predicates): Save the static predicate for diagnostics and error + reporting purposes. + (Process_PPCs): Remove local variables Dynamic_Predicate_Present and + Static_Predicate_Present. Add local variable Static_Pred. Ensure that + the expression of a static predicate is static. + +2013-04-25 Hristian Kirtchev + + * einfo.adb (Is_Ghost_Subprogram): Remove useless code. + +2013-04-25 Robert Dewar + + * gnat_rm.texi: Minor addition of index entry. + +2013-04-25 Hristian Kirtchev + + * sem_ch6.adb (Check_Access_Invariants): Test whether an + invariant procedure is empty before generating a call to it. + (Has_Enabled_Predicate): New routine. + (Has_Null_Body): New routine. + (Process_PPCs): Test whether an invariant procedure is + empty before generating a call to it. Test whether predicates are + enabled for a particular type before generating a predicate call. + * sem_util.ads, sem_util.adb (Find_Pragma): New routine. + +2013-04-25 Robert Dewar + + * sem_ch7.adb, einfo.adb, repinfo.adb, snames.adb-tmpl, + snames.ads-tmpl: Minor reformatting. + +2013-04-25 Thomas Quinot + + * sem_ch7.adb: Minor reformatting. + +2013-04-25 Robert Dewar + + * gnat_rm.texi: Minor fix to Loop_Variant doc (Loop_Entry allowed). + * s-tarest.adb: Minor reformatting. + +2013-04-25 Hristian Kirtchev + + * aspects.ads, aspects.adb: Remove aspect Ghost from all relevant + tables. + * einfo.adb: Remove with and use clause for Aspects. + (Is_Ghost_Function): Removed. + (Is_Ghost_Entity): New routine. + (Is_Ghost_Subprogram): New routine. + * einfo.ads: Remove synthesized attribute Is_Ghost_Function + along with its uses in entities. Add synthesized attributes + Is_Ghost_Entity and Is_Ghost_Subprogram along with uses in related + entities. + (Is_Ghost_Function): Removed. + (Is_Ghost_Entity): New routine. + (Is_Ghost_Subprogram): New routine. + * par-prag.adb: Remove pragma Ghost from the processing machinery. + * repinfo.adb (List_Mechanisms): Add a value for convention Ghost. + * sem_attr.adb (Analyze_Access_Attribute): Update the check + for ghost subprograms. + * sem_ch4.adb (Analyze_Call): Update the check for calls + to ghost subprograms. + (Check_Ghost_Function_Call): Removed. + (Check_Ghost_Subprogram_Call): New routine. + * sem_ch6.adb (Check_Convention): Rewritten. + (Check_Overriding_Indicator): Remove the check for overriding + ghost functions. + (Convention_Of): New routine. + * sem_ch12.adb (Preanalyze_Actuals): Update the check for ghost + generic actual subprograms. + * sem_mech.adb (Set_Mechanisms): Add an entry for convention Ghost. + * sem_prag.adb: Remove the value for pragma Ghost from + table Sig_Flags. + (Analyze_Pragma): Remove the processing for pragma Ghost. + (Process_Convention): Emit an error when a ghost + subprogram attempts to override. + (Set_Convention_From_Pragma): Emit an error when a ghost subprogram + attempts to override. + * sinfo.ads: Clarify the usage of field Label_Construct. + * snames.adb-tmpl (Get_Convention_Id): Add an entry for + predefined name Ghost. + (Get_Convention_Name): Add an entry for convention Ghost. + * snames.ads-tmpl: Move predefined name Ghost to the sublist + denoting conventions. Add convention id Ghost. Remove pragma + id Ghost. + +2013-04-25 Ed Schonberg + + * sem_ch7.adb (Swap_Private_Dependents): Do no recurse on child + units if within a generic hierarchy. + +2013-04-24 Hristian Kirtchev + + * exp_ch6.adb (Expand_Actuals): Add a predicate check on an + actual the related type has a predicate function. + * sem_ch3.adb (Constant_Redeclaration): Ensure that the related + type has an invariant procedure before building a call to it. + * sem_ch6.adb (Append_Enabled_Item): New routine. + (Check_Access_Invariants): Use routine + Append_Enabled_Item to chain onto the list of postconditions. + (Contains_Enabled_Pragmas): Removed. + (Expand_Contract_Cases): Use routine Append_Enabled_Item to chain onto + the list of postconditions. + (Invariants_Or_Predicates_Present): Removed. + (Process_PPCs): Partially reimplemented. + +2013-04-24 Sergey Rybin + + * tree_io.ads: Update ASIS_Version_Number because of changes + in the way how entities are chained in a scope by means of + Next_Entity link. + +2013-04-24 Ed Schonberg + + * exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case + Storage_Size): If the clause is not from an aspect, insert + assignment to size variable of task type at the point of the + clause, not after the task definition, to prevent access before + elaboration in the back-end. + +2013-04-24 Yannick Moy + + * sem_prag.adb (Sig_Flags): Set correct value for Pragma_Assume. + +2013-04-24 Yannick Moy + + * gnat_rm.texi: Document 'Loop_Entry. + +2013-04-24 Jose Ruiz + + * s-tassta.adb, s-tarest.adb (Task_Wrapper): Start looking for + fall-back termination handlers from the parents, because they apply + only to dependent tasks. + * s-solita.adb (Task_Termination_Handler_T): Do not look for fall-back + termination handlers because the environment task has no parent, + and if it defines one of these handlers it does not apply to + itself because they apply only to dependent tasks. + +2013-04-24 Robert Dewar + + * sem_type.adb, exp_attr.adb, exp_ch4.adb: Minor reformatting. + +2013-04-24 Robert Dewar + + * gnat_rm.texi: Document 'Update attribute. + * sem_attr.adb (Analyze_Attribute, case Update): Remove call + to S14_Attribute (S14_Attribute): removed. + +2013-04-24 Robert Dewar + + * interfac.ads: Add size clauses for IEEE_Float_32/64 + +2013-04-24 Claire Dross + + * gnat1drv.adb (Adjust_Global_Switches): Remove + special assignment of Use_Expression_With_Actions for SPARK_Mode. + +2013-04-24 Hristian Kirtchev + + * checks.adb (Apply_Predicate_Check): Check for the presence + of the dynamic predicate aspect when trying to determine if the + predicate of a type is non-static. + * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Check + for the presence of the dynamic predicate aspect when trying to + determine if the predicate of a type is non- static. + * sem_ch13.adb (Add_Call): Capture the nature of the + inherited ancestor predicate. + (Build_Predicate_Functions): Update comments. Rewrite the checks on + static predicate application. Complain about the form of a non-static + expression only when the type is static. + +2013-04-24 Ed Schonberg + + * sem_prag.adb: Add guard to tree traversal. + +2013-04-24 Vincent Celier + + * clean.adb (Clean): Remove local variable Root_Environment, + use Makeutl.Root_Environment instead. + * gnatcmd.adb: Remove local variable Root_Environment, use + Makeutl.Root_Environment instead. + * make.adb (Gnatmake): Remove local variable Root_Environment, + use Makeutl.Root_Environment instead. + * prj-makr.adb: Remove local variable Root_Environment, use + Makeutl.Root_Environment instead. + +2013-04-24 Hristian Kirtchev + + * exp_attr.adb (Expand_Loop_Entry_Attribute): Clarify the + extraction of the declarative part of the conditional block. Move + the processing of simple infinite loops to the start of the + expansion logic. Correct the check which determines whether the + proper scope is installed in visibility. + * sem_attr.adb (Analyze_Attribute): Add local variable Attr + to keep track of the attribute in case the enclosing indexed + component has to be rewritten. When searching for the enclosing + loop, start from the proper attribute reference in case of a + rewriting. Do not allow for 'Loop_Entry to appear in pragma + Assert. Replace loop variable J with Index. Set the type of the + proper attribute. + * sem_ch5.adb (Check_Unreachable_Code): Detect a specialized + block that services a loop statement subject to at least one + 'Loop_Entry attribute. + +2013-04-24 Ed Schonberg + + * sem_type.adb (Disambiguate): In Ada 2012 mode, when trying to + resolve a fixed point operation, use first subtype to determine + whether type and operator are declared in the same list of + declarations. + +2013-04-24 Hristian Kirtchev + + * par-ch6.adb (P_Subprogram): Detect an illegal + placement of the aspect specification list in the context of + expression functions. + +2013-04-24 Ed Schonberg + + * exp_ch4.adb (Expand_N_Allocator): If the designated object + has tasks, and the pointer type is an itype that has no master + id, create a master renaming in the current context, which can + only be an init_proc. + +2013-04-24 Robert Dewar + + * sem_ch3.adb, sem_ch7.adb: Minor reformatting. + * gnat_rm.texi: Document pragma Loop_Invariant. + * sem_attr.adb (Analyze_Attribute, case Loop_Entry): This is + no longer an S14_Attribute. + * sem_prag.adb (Analyze_Pragma, case Loop_Invariant): Combine + processing with Assert, allow message parameter, remove call + to S14_Pragma. + +2013-04-24 Thomas Quinot + + * exp_ch4.adb: Minor reformatting. + +2013-04-24 Ed Schonberg + + * sem_ch7.adb (Swap_Private_Dependents): New internal routine + to Install_Private_Declarations, to make the installation of + private dependents recursive in the presence of child units. + * sem_ch3.adb (Build_Discriminated_Subtype): Initialize properly + the Private_Dependents of a private subtype. + +2013-04-24 Hristian Kirtchev + + * exp_attr.adb (Expand_Loop_Entry_Attribute): Update the + retrieval of the block declarations. + * par-ch4.adb (P_Name): Let the name parsing machinery create + a sequence of nested indexed components for attribute Loop_Entry. + * sem_attr.adb (Analyze_Attribute): Add local constant + Context. Reimplement part of the analysis of attribute Loop_Entry. + (Convert_To_Indexed_Component): Removed. + * sem_ch4.adb (Analyze_Indexed_Component_Form): Do not analyze + an indexed component after it has been rewritten into attribute + Loop_Entry. + +2013-04-24 Yannick Moy + + * snames.ads-tmpl: Minor change to list + Loop_(In)variant not in configuration pragma. + * sem_ch3.adb (Analyze_Declarations): Do not look at the original node + for analyzing the expressions in pre/postconditions. + +2013-04-24 Robert Dewar + + * gnatcmd.adb, xref_lib.adb, gnatls.adb, sem_ch13.adb: Minor + reformatting. + +2013-04-24 Yannick Moy + + * sem_ch6.adb (Analyze_Generic_Subprogram_Body, + Analyze_Subprogram_Body_Helper): Reset contract node to Empty + before setting entity to E_Subprogram_Body. + * sem_ch8.adb (Analyze_Subprogram_Renaming): Reset contract node to + Empty before setting entity to E_Subprogram_Body. + +2013-04-24 Vincent Celier + + * gnat_ugn.texi: Document new gnatls switch -aPdir. + * gnatcmd.adb: Pass switch -aP to gnatls. + * gnatls.adb (Scan_Ls_Arg): Process new switch -aP. Issue + a warning for unknown switches. + (Usage): Add line for new switch -aPdir. + +2013-04-24 Ed Schonberg + + * sem_util.adb, sem_util.ads (Is_Limited_Class_Wide_Type): Return true + if the type comes from a limited view, so that task attributes can be + constructed. + +2013-04-24 Yannick Moy + + * checks.adb (Apply_Float_Conversion_Check): Do not apply checks if + full expansion is not enabled. + +2013-04-24 Ed Schonberg + + * sem_ch6.adb (Create_Extra_Formals): In Ada 2012, create extra + formals if the type does not yet have a completion, and thus + has no underlying view. + +2013-04-24 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specifications): Treat an aspect + specification for Address as a reference, to suppress warnings + on entities that may be read by an external device. + +2013-04-24 Sergey Rybin + + * gnat_ugn.texi: Add description of '--help' and '--version' + options for ASIS tools: gnatelim, gnatmetric, gnatstub, gnatpp. + +2013-04-24 Arnaud Charlet + + * gnat_rm.texi: Minor syntax fix. + +2013-04-24 Hristian Kirtchev + + * exp_attr.adb (Expand_Loop_Entry_Attribute): Add extra comments on + what and why is being analyzed. Remove the decoration of renamings as + this simply falls out of the general analysis mechanism. + +2013-04-24 Hristian Kirtchev + + * sem_res.adb (Explain_Redundancy): New routine. + (Resolve_Equality_Op): Place the error concerning a redundant + comparison to True at the "=". Try to explain the nature of the + redundant True. + +2013-04-24 Javier Miranda + + + * checks.adb, exp_ch6.adb (Install_Null_Excluding_Check): No + check in interface thunks since it is performed at the caller + side. + (Expand_Simple_Function_Return): No accessibility check + needed in thunks since the check is done by the target routine. + +2013-04-24 Vincent Celier + + * xref_lib.adb (Add_Entity): Use the canonical file names + so that source file names with capital letters are found on + platforms where file names are case insensitive. + +2013-04-24 Hristian Kirtchev + + * par-ch4.adb (P_Name): Continue to parse the name extension when the + construct is attribute Loop_Entry. Do not convert the attribute + reference into an indexed component when there is at least one + expression / range following 'Loop_Entry. + +2013-04-24 Hristian Kirtchev + + * sem_ch6.adb (Contains_Enabled_Pragmas): New routine. + (Process_PPCs): Generate procedure _Postconditions + only when the context has invariants or predicates or enabled + aspects/pragmas. + +2013-04-24 Thomas Quinot + + * g-socket.adb (Host_Entry): Introduce intermediate copy of + memory location pointed to by Hostent_H_Addr, as it might not + have sufficient alignment. + +2013-04-24 Yannick Moy + + * repinfo.adb (List_Rep_Info): Set the value of Unit_Casing before + calling subprograms which may read it. + +2013-04-24 Hristian Kirtchev + + * einfo.adb: Remove Loop_Entry_Attributes from the usage of + nodes. Flag 260 is now used. + (Has_Loop_Entry_Attributes): New routine. + (Loop_Entry_Attributes): Removed. + (Set_Has_Loop_Entry_Attributes): New routine. + (Set_Loop_Entry_Attributes): Removed. + (Write_Entity_Flags): Write out Flag 260. + (Write_Field10_Name): Remove the output for Loop_Entry_Attributes. + * einfo.ads: Remove attribute Loop_Entry_Attributes, + its related comment and uses in nodes. Add new attribute + Has_Loop_Entry_Attributes, related comment and uses in loop nodes. + (Has_Loop_Entry_Attributes): New routine and pragma Inline. + (Loop_Entry_Attributes): Removed along with pragma Inline. + (Set_Has_Loop_Entry_Attributes): New routine and pragma Inline. + (Set_Loop_Entry_Attributes): Removed along with pragma Inline. + * exp_attr.adb (Expand_Loop_Entry_Attribute): New routine. + (Expand_N_Attribute_Reference): Expand attribute 'Loop_Entry. + * exp_ch5.adb: Remove with and use clause for Elists. + (Expand_Loop_Entry_Attributes): Removed. + (Expand_N_Loop_Statement): Add local variable Stmt. Rename local + constant Isc to Scheme. When a loop is subject to attribute + 'Loop_Entry, retrieve the nested loop from the conditional + block. Move the processing of controlled object at the end of + loop expansion. + * sem_attr.adb (Analyze_Attribute): Do not chain attribute + 'Loop_Entry to its related loop. + * sem_ch5.adb (Analyze_Loop_Statement): Add local variable + Stmt. When the iteration scheme mentions attribute 'Loop_Entry, + the entire loop is rewritten into a block. Retrieve the nested + loop in such cases to complete the analysis. + * sem_util.ads, sem_util.adb (Find_Loop_In_Conditional_Block): New + routine. + (Subject_To_Loop_Entry_Attributes): New routine. + +2013-04-24 Robert Dewar + + * exp_prag.adb (Expand_Loop_Variant): Generate pragma Check + (Loop_Variant, xxx) rather than Assert (xxx). + * gnat_rm.texi: Document pragma Loop_Variant. + * sem_prag.adb (Analyze_Pragma, case Loop_Variant): Remove call + to S14_Pragma. + +2013-04-24 Yannick Moy + + * adabkend.adb, ali-util.adb, ali.adb, debug.adb, + errout.adb, errout.ads, erroutc.adb, exp_ch3.adb, exp_ch4.adb, + exp_ch6.adb, exp_ch7.adb, exp_dbug.adb, exp_util.adb, + expander.adb, freeze.adb, gnat1drv.adb, lib-writ.adb, + lib-writ.ads, lib-xref.adb, lib-xref.ads, opt.adb, opt.ads, + restrict.adb, sem_aggr.adb, sem_attr.adb, sem_ch3.adb, + sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_eval.adb, sem_prag.adb, + sem_res.adb, sem_util.adb: Everything with name + 'Alfa' renamed in 'SPARK'. Update comments. + Renaming of units with name 'Alfa', renamed with 'SPARK' instead. + * exp_alfa.adb: renamed exp_spark.adb. + * exp_alfa.ads: renamed exp_spark.ads. + * get_alfa.adb: renamed get_spark_xrefs.adb. + * get_alfa.ads: renamed get_spark_xrefs.ads. + * lib-xref-alfa.adb: renamed lib-xref-spark_specific.adb. + * put_alfa.adb: renamed put_spark_xrefs.adb. + * put_alfa.ads: renamed put_spark_xrefs.ads. + * alfa.adb: renamed spark_xrefs.adb. + * alfa.ads: renamed spark_xrefs.ads. + * alfa_test.adb: renamed spark_xrefs_test.adb. + * gcc-interface/Make-lang.in: Update dependencies. + +2013-04-24 Robert Dewar + + * gnat_rm.texi: Document pragma Assume. + * sem_prag.adb (Analyze_Pragma, case Assume): Now processed as + part of Assert, and no longer requires -gnatd.F + +2013-04-24 Robert Dewar + + * gnat_rm.texi: Document pragma Assert_And_Cut. + * sem_prag.adb (Analyze_Pragma, case Assert_And_Cut): Remove + S14_Pragma call. + +2013-04-24 Ed Schonberg + + * sem_aux.adb: Add guard in Available_View. + +2013-04-24 Hristian Kirtchev + + * sem_prag.adb (Analyze_Depends_In_Decl_Part): Use + Find_Related_Subprogram to find the associated subprogram. + (Analyze_Global_In_Decl_List): Use Find_Related_Subprogram + to find the associated subprogram. + (Analyze_Pragma): Use Find_Related_Subprogram to find the associated + subprogram. + +2013-04-24 Hristian Kirtchev + + * exp_ch6.adb: Remove with and use clause for Sem_Prag. + (Freeze_Subprogram): Call Analyze_Subprogram_Contract to analyze + the contract of a subprogram. + * sem_ch3.adb: Remove with and use clause for Sem_Prag. + (Analyze_Declarations): Call Analyze_Subprogram_Contract to + analyze the contract of a subprogram. + * sem_ch6.adb (Analyze_Subprogram_Contract): New routine. + (Check_Subprogram_Contract): Removed. + * sem_ch6.ads (Analyze_Subprogram_Contract): New routine. + (Check_Subprogram_Contract): Removed. + (Expand_Contract_Cases): Add a guard against malformed contract cases. + * sem_ch13.adb (Analyze_Aspect_Specifications): Call + Decorate_Delayed_Aspect_And_Pragma to decorate aspects + Contract_Cases, Depends and Global. Reimplement the analysis of + aspect Contract_Cases. + (Decorate_Delayed_Aspect_And_Pragma): New routine. + * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): New routine. + (Analyze_CTC_In_Decl_Part): Removed. + (Analyze_Pragma): Reimplement the analysis of pragma Contract_Cases. + (Analyze_Test_Case_In_Decl_Part): New routine. + (Find_Related_Subprogram): New routine. + (Requires_Profile_Installation): Add new formal Prag. Update + the logic to take into account the origin of the pragma. + * sem_prag.ads (Analyze_Contract_Cases_In_Decl_Part): New routine. + (Analyze_CTC_In_Decl_Part): Removed. + (Analyze_Test_Case_In_Decl_Part): New routine. + +2013-04-24 Robert Dewar + + * sem_prag.adb (Process_Convention): Move Stdcall tests to + Set_Convention_From_Pragma so that they are applied to each + entry of a homonym set. + (Process_Convention): Don't try to set convention if already set. + +2013-04-24 Robert Dewar + + * gnatbind.adb: Minor reformatting. + +2013-04-24 Vincent Celier + + * clean.adb (Gnatclean): Add the default project search + directories in the project search path after scanning the + switches on the command line. + (Initialize): Do not put the default project search directories in the + project search path. + * gnatcmd.adb (GNATcmd): Add the default project search + directories in the project search path after scanning the switches + on the command line. + * make.adb (Initialize): Add the default project search + directories in the project search path after scanning the switches + on the command line. + +2013-04-24 Yannick Moy + + * restrict.ads (Restriction_Warnings): Initialize with all False value. + +2013-04-24 Robert Dewar + + * checks.ads, checks.adb (Predicate_Checks_Suppressed): New function. + * exp_util.ads, exp_util.adb (Make_Predicate_Check): Check setting of + Predicate_Check. + * snames.ads-tmpl (Name_Predicate_Check): New check name. + * types.ads (Predicate_Check): New definition. + * gnat_rm.texi: Add documentation for Predicate_Check. + +2013-04-24 Ed Schonberg + + * exp_ch8.adb (Expand_N_Subprogram_Renaming_Declaration): If this + is a renaming of predefined equality for an untagged record, + add generated body to the freeze actions for the subprogram, to + prevent freezing issues when the record has incomplete components. + * exp_ch4.adb (Expand_Composite_Equality): If the type is a type + without completion, return a predefined comparison instead of + just False. This may happen when building the expression for + record equality, when some component has a type whose completion + has not been seen yet. The operation will be analyzed an expanded + after the type has been frozen, at which point all component + types will have been completed, or an error reported. + +2013-04-24 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specifications): Do not delay + analysis of a Convention aspect. + +2013-04-24 Eric Botcazou + + * fe.h (Machine_Overflows_On_Target): New macro and declaration. + (Signed_Zeros_On_Target): Likewise. + +2013-04-24 Hristian Kirtchev + + * exp_ch6.adb: Add with and use clause for Sem_Prag. + (Freeze_Subprogram): Analyze all delayed aspects for a null + procedure so that they are available when analyzing the + internally-generated _Postconditions routine. + * exp_ch13.adb: Remove with and use clause for Sem_Prag. + (Expand_N_Freeze_Entity): Move the code that analyzes delayed + aspects of null procedures to exp_ch6.Freeze_Subprogram. + * sem_prag.adb (Analyze_Abstract_State): Update the check on + volatile requirements. + +2013-04-24 Bob Duff + + * ali-util.ads (Source_Record): New component Stamp_File + to record from whence the Stamp came. + * ali-util.adb (Set_Source_Table): Set Stamp_File component. + * bcheck.adb (Check_Consistency): Print additional information in + Verbose_Mode. + * gnatbind.adb (Gnatbind): Print additional information in + Verbose_Mode. + +2013-04-24 Robert Dewar + + * exp_ch13.adb, sem_prag.adb: Update comments. + * sem_ch3.adb, exp_ch9.adb, g-socket.adb, sem_ch13.adb: Minor + reformatting. + +2013-04-24 Doug Rupp + + * vms_data.ads (/{NO}INHIBIT-EXEC): Document new default behavior. + +2013-04-24 Yannick Moy + + * sinfo.ads: Minor correction of typo. + +2013-04-24 Ed Schonberg + + * sem_ch3.adb: Create packed array only when expander is + active. + +2013-04-24 Hristian Kirtchev + + * sem_prag.adb (Analyze_Depends_In_Decl_Part): Install the formals only + when the context warrants it. + (Analyze_Global_In_Decl_List): Install the formals only when + the context warrants it. + (Requires_Profile_Installation): New routine. + +2013-04-24 Ed Schonberg + + * exp_ch6.adb (Expand_N_Simple_Return_Statement): When the return + type is a discriminated private type that does not require use + of the secondary stack, a constrained subtype of the underlying + type is created to convey the proper object size to the backend. + If the return type is originally a private type, the return + expression is wrapped in an unchecked_conversion. If the return + expression is used subsequently in a call to the postcondition + function, this conversion must be undone to prevent a spurious + error on the analysis of that call. + +2013-04-23 Kai Tietz + + PR target/55445 + * raise-gcc.c (__SEH__): Additional check that SjLj isn't active. + +2013-04-23 Eric Botcazou + Pascal Obry + + * gcc-interface/Makefile.in (targ): Fix target name check. + (../../gnatmake$(exeext)): Add '+' for LTO. + (../../gnatlink$(exeext)): Likewise. + +2013-04-23 Hristian Kirtchev + + * exp_ch9.adb (Build_PPC_Wrapper): Correct the traversal of + pre- and post-conditions. + (Expand_N_Task_Type_Declaration): + Use the correct attribute to check for pre- and post-conditions. + * exp_ch13.adb (Expand_N_Freeze_Entity): Correct the traversal of + pre- and post-conditions. Analyze delayed classification items. + * freeze.adb (Freeze_Entity): Use the correct attribute to + check for pre- and post- conditions. + * sem_ch3.adb (Analyze_Declarations): Correct the traversal + of pre- and post-conditions as well as contract- and + test-cases. Analyze delayed pragmas Depends and Global. + * sem_ch6.adb (Check_Subprogram_Contract): Use the correct + attribute to check for pre- and post-conditions, as well as + contract-cases and test-cases. (List_Inherited_Pre_Post_Aspects): + Correct the traversal of pre- and post- conditions. + (Process_Contract_Cases): Update the comment on usage. Correct + the traversal of contract-cases. + (Process_Post_Conditions): Update the comment on usage. Correct the + traversal of pre- and post-conditions. + (Process_PPCs): Correct the traversal of pre- and post-conditions. + (Spec_Postconditions): Use the correct + attribute to check for pre- and post- conditions, as well as + contract-cases and test-cases. + * sem_ch13.adb (Analyze_Aspect_Specifications): Reimplement the + actions related to aspects Depends and Global. Code refactoring + for pre- and post-conditions. + (Insert_Delayed_Pragma): New routine. + * sem_prag.adb (Add_Item): New routine. + (Analyze_Depends_In_Decl_Part): New routine. + (Analyze_Global_In_Decl_Part): New routine. + (Analyze_Pragma): Reimplement the actions related to aspects Depends and + Global. Verify that a body acts as a spec for pragma Contract_Cases. + (Chain_PPC): Use Add_Contract_Item to chain a pragma. + (Chain_CTC): Correct the traversal of contract- + and test-cases. Use Add_Contract_Item to chain a pragma. + (Chain_Contract_Cases): Correct the traversal of contract- + and test-cases. Use Add_Contract_Item to chain a pragma. + (Check_Precondition_Postcondition): Update the comment on usage. + (Check_Test_Case): Update the comment on usage. + * sem_prag.ads (Analyze_Depends_In_Decl_Part): New routine. + (Analyze_Global_In_Decl_Part): New routine. + * sem_util.ads, sem_util.adb (Add_Contract_Item): New routine. + * sinfo.adb (Classifications): New routine. + (Contract_Test_Cases): New routine. + (Pre_Post_Conditions): New routine. + (Set_Classifications): New routine. + (Set_Contract_Test_Cases): New routine. + (Set_Pre_Post_Conditions): New routine. + (Set_Spec_CTC_List): Removed. + (Set_Spec_PPC_List): Removed. + (Spec_CTC_List): Removed. + (Spec_PPC_List): Removed. + * sinfo.ads: Update the structure of N_Contruct along with all + related comments. + (Classifications): New routine and pragma Inline. + (Contract_Test_Cases): New routine and pragma Inline. + (Pre_Post_Conditions): New routine and pragma Inline. + (Set_Classifications): New routine and pragma Inline. + (Set_Contract_Test_Cases): New routine and pragma Inline. + (Set_Pre_Post_Conditions): New routine and pragma Inline. + (Set_Spec_CTC_List): Removed. + (Set_Spec_PPC_List): Removed. + (Spec_CTC_List): Removed. + (Spec_PPC_List): Removed. + +2013-04-23 Doug Rupp + + * init.c (GNAT$STOP) [VMS]: Bump sigargs[0] count by 2 + to account for LIB$STOP not having the chance to add the PC and + PSL fields. + +2013-04-23 Robert Dewar + + * sem_ch13.adb: Minor code reorganization (remove some redundant + assignments). + * sem_ch3.adb, sem_prag.adb: Minor reformatting. + +2013-04-23 Yannick Moy + + * einfo.ads: Minor typo fix. + * sem_ch13.adb (Build_Predicate_Functions): Reject cases where + Static_Predicate is applied to a non-scalar or non-static type. + * sem_prag.adb: Minor typo fix. + +2013-04-23 Doug Rupp + + * init.c (GNAT$STOP) [VMS]: New function. + +2013-04-23 Ed Schonberg + + * sem_ch3.adb: Add exp_pakd to context. + (Constrain_Component_Type): If the component of the parent is + packed, and the record subtype being built is already frozen, + as is the case for an itype, the component type itself will not + be frozen, and the packed array type for it must be constructed + explicitly. + +2013-04-23 Thomas Quinot + + * g-socket.adb, g-socket.ads (Set_Close_On_Exec): New subprogram. + +2013-04-23 Yannick Moy + + * err_vars.ads (Error_Msg_Qual_Level): Set variable to zero + at declaration. + * opt.ads (Multiple_Unit_Index): Set variable to zero at declaration. + * sem_util.adb (NCT_Table_Entries): Set variable to zero at declaration. + * set_targ.ads (Num_FPT_Modes): Set variable to zero at declaration. + * stylesw.adb (Save_Style_Check_Options): Protect testing the + value of Style_Check_Comments_Spacing by a previous test that + Style_Check_Comments is True. + +2013-04-23 Thomas Quinot + + * sem_prag.adb, sem_prag.ads (Effective_Name): Rename to + Original_Name, and move declaration to package body as this + subprogram is not used from outside. Also clarify documentation. + +2013-04-23 Ed Schonberg + + * exp_ch6.adb (Expand_N_Subprogram_Body): When compiling with + initialize_scalars, disable predicate checks on the generated + assignment to an out scalar parameter. + +2013-04-23 Gary Dismukes + + * sem_ch4.adb (Analyze_Allocator): Remove error + check for "constrained in partial view" constraints entirely. + +2013-04-23 Robert Dewar + + * einfo.ads, sem_prag.ads: Minor reformatting. + * errout.ads: Comment update. + +2013-04-23 Yannick Moy + + * exp_ch5.adb: Minor typo. + +2013-04-23 Thomas Quinot + + * gnat_ugn.texi: Fix typo. + +2013-04-23 Ed Schonberg + + * einfo.ads: Minor documentation clarification. + +2013-04-23 Bob Duff + + * types.ads: Fix incorrect comment. + +2013-04-23 Ed Schonberg + + * sem_aux.adb sem_aux.ads (Effectively_has_Constrained_Partial_View): + Rename subprogram as Object_Type_Has_Constrained_Partial_View, better + description of purpose. + * checks.adb (Apply_Discriminant_Check): Use above renaming. + * sem_ch4.adb (Analyze_Allocator): Check Has_Constrained_Partial_View + of the base type, rather than using the Object_Type predicate. + * sem_attr.adb (Analyze_Attribute, case 'Access): Use above renaming. + * sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): ditto. + * exp_attr.adb (Expand_N_Attribute_Reference, case 'Constrained): Ditto. + * exp_ch4.adb (Expand_N_Allocator): Ditto. + +2013-04-23 Robert Dewar + + * exp_prag.adb (Expand_Pragma_Check): Check for Assert rather + than Assertion. + * sem_prag.adb (Is_Valid_Assertion_Kind): Moved to spec + (Effective_Name): New function (Analyze_Pragma, case Check): + Disallow [Statement_]Assertions (Check_Kind): Implement + Statement_Assertions (Check_Applicable_Policy): Use Effective_Name + (Is_Valid_Assertion_Kind): Allow Statement_Assertions. + * sem_prag.ads (Is_Valid_Assertion_Kind): Moved here from body + (Effective_Name): New function. + * sem_res.adb: Minor reformatting. + * snames.ads-tmpl (Name_Statement_Assertions): New entry. + * gnat_rm.texi: Add documentation of new assertion kind + Statement_Assertions. + +2013-04-23 Robert Dewar + + * sinfo.ads, einfo.adb, sem_res.adb, exp_ch6.adb, aspects.adb: Minor + reformatting and code clean up. + +2013-04-23 Vincent Celier + + * prj-part.ads, prj-conf.ads: Minor comment updates. + +2013-04-23 Ed Schonberg + + * einfo.adb (Predicate_Function): For a private type, retrieve + predicate function from full view. + * aspects.adb (Find_Aspect): Ditto. + * exp_ch6.adb (Expand_Actuals): If the formal is class-wide and + the actual is a definite type, apply predicate check after call. + * sem_res.adb: Do not apply a predicate check before the call to + a generated Init_Proc. + +2013-04-23 Robert Dewar + + * sem_ch13.adb (Analyze_Aspect_Specifications): Significant + rewrite to make sure Is_Ignore is properly captured when aspect + is declared. + * sem_ch6.adb: Minor reformatting. + * sem_prag.adb (Analyze_Pragma): Do not test policy at time of + pragma for the case of a pragma coming from an aspect (already + tested when we analyzed the aspect). + +2013-04-23 Vincent Celier + + * prj-conf.adb (Parse_Project_And_Apply_Config): New + Boolean parameter Implicit_Project, defaulted to False. Call + Prj.Part.Parse with Implicit_Project. + * prj-conf.ads (Parse_Project_And_Apply_Config): New Boolean + parameter Implicit_Project, defaulted to False. + * prj-part.adb (Parse_Single_Project): New Boolean parameter + Implicit_Project, defaulted to False. When Implicit_Project is + True, change the Directory of the project node to the Current_Dir. + * prj-part.ads (Parse): New Boolean parameter, defaulted to False + +2013-04-23 Robert Dewar + + * exp_util.adb: Minor reformatting. + +2013-04-23 Robert Dewar + + * xoscons.adb: Minor reformatting. + +2013-04-23 Hristian Kirtchev + + * sem_prag.adb (Check_Mode): Ensure that a + self-referential output appears in both input and output lists of + the subprogram as categorized by aspect Global. + (Check_Usage): Rename formal parameters to better illustrate their + function. Update all uses of the said formals. + +2013-04-23 Thomas Quinot + + * exp_util.adb, exp_util.ads (Fully_Qualified_Name_String): New + parameter Append_NUL to make NUL-termination optional. + * exp_dist.adb: Consistently use the above throughout instead of + Get_Library_Unit_Name_String. + +2013-04-23 Robert Dewar + + * sem_util.adb, sem_res.adb, prj-tree.adb, prj-tree.ads: Minor + reformatting. + +2013-04-23 Pascal Obry + + * xoscons.adb: Remove unused use clause, minor code clean-up. + +2013-04-23 Ed Schonberg + + * sem_util.ads, sem_util.adb: Code cleanup for Is_Expression_Function + (can apply to any scope entity). + * sem_res.adb (Resolve_Call): If the call is within another + expression function it does not constitute a freeze point. + +2013-04-23 Yannick Moy + + * exp_ch6.adb (Expand_Actuals): Test that Subp + is overloadable before testing if it's an inherited operation. + +2013-04-23 Robert Dewar + + * a-envvar.adb, a-envvar.ads, exp_util.adb, sem_ch12.adb: Minor + reformatting. + +2013-04-23 Ed Schonberg + + * sem_ch3.adb (Analyze_Object_Declarations): Undo previous patch. + * exp_util.adb (Expand_Subtype_From_Expr): If the expression + is a source entity and the declaration is for an aliased + unconstrained array, create a new subtype so that the flag + Is_Constr_Subt_For_UN_Aliased does not pollute other entities. + +2013-04-23 Hristian Kirtchev + + * aspects.adb: Move tables Base_Aspect and Inherited_Aspect + from the spec to the body. + (Find_Aspect): Update the call to Get_Aspect_Id. + (Get_Aspect_Id): New version that takes an aspect specification. + * aspects.ads: Reorganize all aspect related tables. + (Get_Aspect_Id): New version that takes an aspect specification. + * par_sco.adb (Traverse_Aspects): Update the call to Get_Aspect_Id. + * sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Update + the call to Get_Aspect_Id. + * sem_ch13.adb (Analyze_Aspect_At_Freeze_Point): Update the + call to Get_Aspect_Id. (Analyze_Aspect_Specifications): Update + the call to Get_Aspect_Id. Update the call to Impl_Defined_Aspect. + +2013-04-23 Robert Dewar + + * sem_prag.adb (Fix_Error): Rewrite to do more accurate job + of getting proper name in the case where pragma comes from + aspect. + * sem_ch3.adb, sinfo.ads, par-ch6.adb, exp_ch6.adb: Minor reformatting. + +2013-04-23 Yannick Moy + + * sem_ch6.adb (Process_PPCs): Do not filter postconditions based on + applicable policy. + +2013-04-23 Thomas Quinot + + * par_sco.adb (Traverse_Aux_Decls): Minor code reorganization. + +2013-04-23 Doug Rupp + + * init.c: Move facility macros outside IN_RTS. + +2013-04-23 Thomas Quinot + + * freeze.adb (Freeze_Entity): For the case of a bit-packed + array time that is known at compile time to have more that + Integer'Last+1 elements, issue an error, since such arrays are + not supported. + +2013-04-23 Hristian Kirtchev + + * sem_prag.adb (Analyze_Dependency_Clause): Update all calls to + Analyze_Input_Output. + (Analyze_Input_List): Update all calls to Analyze_Input_Output. + (Analyze_Input_Output): Add formal parameter Self_Ref along with + comment on its usage. Update all calls to Analyze_Input_Output. + (Analyze_Pragma): Add new local variable Self_Ref to capture + the presence of a self-referential dependency clause. Update + all calls to Analyze_Input_Output. + (Check_Mode): Add formal parameter Self_Ref along with comment on its + usage. Verify the legality of a self-referential output. + +2013-04-23 Ed Schonberg + + * exp_ch6.adb: Add predicate checks on by-copy parameter. + +2013-04-23 Vincent Celier + + * a-envvar.adb, a-envvar.ads (Value): New. + +2013-04-22 Yannick Moy + + * exp_prag.adb (Expand_Pragma_Loop_Variant): Rewrite pragma as + null statement if ignored. + * sem_ch6.adb (Expand_Contract_Cases): Do nothing if pragma is ignored. + * sem_prag.adb (Analyze_Pragma): Keep analyzing ignored pragmas. + +2013-04-22 Hristian Kirtchev + + * sem_prag.adb (Analyze_Contract_Case): New routine. + (Analyze_Pragma): Aspect/pragma Contract_Cases can + now be associated with a library level subprogram. + Add circuitry to detect illegal uses of aspect/pragma Contract_Cases + in a subprogram body. + (Chain_Contract_Cases): Rename formal parameter Subp_Decl to + Subp_Id. Remove local constant Subp. The entity of the subprogram + is now obtained via the formal paramter. + +2013-04-22 Ed Schonberg + + * sem_ch3.adb (Analyze_Object_Declaration): Do not set + Is_Constr_Subt_For_Unc_Aliased on the subtype of the expression, + if the expression is a source entity. + +2013-04-22 Yannick Moy + + * exp_prag.adb, sinfo.ads, sem_prag.ads: Minor correction of typos in + comments. + * sem_ch6.adb (Expand_Contract_Cases): Add location to message. + +2013-04-22 Thomas Quinot + + * sem_prag.adb (Fix_Error): For a pragma rewritten from another + pragma, fix up error message to include original pragma name. + * par_sco.adb: Minor reformatting. + +2013-04-22 Robert Dewar + + * sem_prag.adb, sem_util.adb, sem_util.ads, sem_res.adb, exp_ch6.adb, + sem_ch6.adb, opt.ads: Minor reformatting. + +2013-04-22 Pascal Obry + + * gnat_ugn.texi, prj-nmsc.adb, projects.texi: Add check for + Library_Standalone and Library_Kind. + +2013-04-22 Ed Schonberg + + * exp_ch6.adb (Expand_Actuals): If the call is to an + inherited operation and the actual is a by-reference type with + predicates, add predicate call to post-call actions. + * sem_util.adb (Is_Inherited_Operation_For_Type): Fix coding + error: a type declaration has a defining identifier, not an Etype. + * sem_res.adb: Restore code removed because of above error. + +2013-04-22 Doug Rupp + + * init.c (__gnat_handle_vms_condition): Also match C$_SIGINT. + +2013-04-22 Yannick Moy + + * gnat_rm.texi, exp_util.adb, sem_prag.adb, sem_prag.ads, par-ch2.adb, + opt.ads, sem_ch13.adb: Minor correction of typos in comments/doc. + +2013-04-22 Vincent Celier + + * prj-nmsc.adb (Check_Library_Attributes): Set Library_Dir to + No_Path_Information only when Directories_Must_Exist_In_Projects + is False. + (Get_Directories): Set Object_Directory + or Exec_Directory to No_Path_Information only when + Directories_Must_Exist_In_Projects is False. + +2013-04-22 Yannick Moy + + * par-prag.adb, sem_attr.adb, sem_ch6.adb, sem_prag.adb, sem_warn.adb, + snames.ads-tmpl, sinfo.ads, sem_util.ads: Remove all references to + Pragma_Contract_Case and Name_Contract_Case. + +2013-04-22 Yannick Moy + + * aspects.ads, aspects.adb, sem_ch13.adb: Removal of references to + Contract_Case. + * gnat_ugn.texi, gnat_rm.texi Description of Contract_Case replaced by + description of Contract_Cases. + +2013-04-12 Robert Dewar + + * makeutl.adb, prj-nmsc.adb: Minor reformatting. + +2013-04-12 Robert Dewar + + * exp_util.adb (Make_Invariant_Call): Use Check_Kind instead + of Check_Enabled. + * gnat_rm.texi (Check_Policy): Update documentation for new + Check_Policy syntax. + * sem_prag.adb (Check_Kind): Replaces Check_Enabled + (Analyze_Pragma, case Check_Policy): Rework to accomodate new + syntax (like Assertion_Policy). + * sem_prag.ads (Check_Kind): Replaces Check_Enabled. + +2013-04-12 Doug Rupp + + * init.c (SS$_CONTROLC, SS$_CONTINUE) [VMS]: New macros. + (__gnat_handle_vms_condition) [VMS]: Dispatch on the Crtl/C user + handler if installed. + * ctrl_c.c (__gnat_install_int_handler) + [VMS]: Install a dummy sigaction handler to trigger the real + user handler dispatch in init.c/__gnat_handle_vms_condition. + (__gnat_uninstall_int_handler) [VMS]: Likewise. + +2013-04-12 Vincent Celier + + * clean.adb (Parse_Cmd_Line): Set Directories_Must_Exist_In_Projects + to False if switch is specified. + * makeutl.adb (Initialize_Source_Record): Do not look for the + object file if there is no object directory. + * opt.ads (Directories_Must_Exist_In_Projects): New Boolean + variable, defaulted to True. + * prj-nmsc.adb (Check_Library_Attributes): Do not fail if library + directory does not exist when Directories_Must_Exist_In_Projects is + False. + (Get_Directories): Do not fail when the object or the exec directory + do not exist when Directories_Must_Exist_In_Projects is False. + +2013-04-12 Robert Dewar + + * namet.adb, namet.ads: Minor addition (7 arg version of Nam_In). + * exp_prag.adb, sem_ch3.adb, sem_intr.adb, sem_type.adb, exp_util.adb, + sem_aux.adb, exp_ch9.adb, sem_ch7.adb, sem_ch10.adb, sem_prag.adb, + par-ch2.adb, tbuild.adb, rtsfind.adb, freeze.adb, sem_util.adb, + sem_res.adb, sem_attr.adb, exp_ch2.adb, prj-makr.adb, sem_elab.adb, + exp_ch4.adb, sem_ch4.adb, sem_mech.adb, sem_ch6.adb, par-prag.adb, + prj-nmsc.adb, exp_disp.adb, sem_ch8.adb, sem_warn.adb, par-util.adb, + sem_eval.adb, exp_intr.adb, sem_ch13.adb, exp_cg.adb, lib-xref.adb, + sem_disp.adb, exp_ch3.adb: Minor code reorganization (use Nam_In). + +2013-04-12 Doug Rupp + + * init.c: Don't clobber condition code on VMS. + +2013-04-12 Robert Dewar + + * exp_aggr.adb: Minor reformatting. + * namet.ads, namet.adb (Nam_In): New functions. + +2013-04-12 Robert Dewar + + * einfo.adb (Has_Dynamic_Predicate_Aspect): New flag. + (Has_Static_Predicate_Aspect): New flag. + * einfo.ads (Has_Dynamic_Predicate_Aspect): New flag. + (Has_Static_Predicate_Aspect): New flag. + * exp_ch9.adb: Minor reformatting. + * exp_util.adb (Make_Invariant_Call): Check_Enabled now handles + synonyms. + * gnat1drv.adb: Remove setting of Debug_Pragmas_Enabled, + since this switch is gone and control of Debug is done with + Assertions_Enabled. + * gnat_rm.texi: Update documentation for Assertion_Policy and + Check_Policy pragmas. + * opt.adb (Debug_Pragmas_Disabled[_Config]): Removed + (Debug_Pragmas_Enabled[_Config]): Removed Since debug now + controlled by Assertion_Enabled. + * opt.ads (Debug_Pragmas_Disabled[_Config]): Removed + (Debug_Pragmas_Enabled[_Config]): Removed Since debug now + controlled by Assertion_Enabled. + * par-ch2.adb (Scan_Pragma_Argument_Association): Allow new + 'Class forms. + * sem_attr.adb: Minor reformatting. + * sem_ch13.adb (Analyze_Aspect_Specification): Disable aspect + if DISABLE policy applies. + * sem_ch6.adb (Grab_PPC): Check original name of aspect for + aspect from pragma (Process_PPCs): Properly check assertion policy. + * sem_prag.adb (Check_Enabled): Rewritten for new Assertion_Policy + (Check_Appicable_Policy): New procedure. + (Is_Valid_Assertion_Kind): New function. + (Rewrite_Assertion_Kind): New procedure. + (Analyze_Pragma): Handle case of disabled assertion pragma. + (Analyze_Pragma, case Assertion_Policy): Rewritten for Ada 2012. + (Analyze_Pragma, case Check): Deal with 'Class possibilities. + (Analyze_Pragma, case Check_Policy): Deal with 'Class possibilities. + (Analyze_Pragma, case Contract_Class): New handling of ignored pragma. + (Analyze_Pragma, case Debug): New control with Assertion_Policy. + (Analyze_Pragma, case Debug_Policy): Now consistent with + Assertion_Policy. + (Analyze_Pragma, case Loop_Invariant): New handling of ignored + pragma. + (Analyze_Pragma, case Loop_Variant): New handling of ignored pragma. + (Analyze_Pragma, case Precondition): Use proper name for Check pragma. + (Analyze_Pragma, case Check_Enabled): Rewritten for new policy stuff. + * sem_prag.ads (Check_Enabled): Rewritten for new + Assertion_Policy stuff. + (Check_Appicable_Policy): New procedure. + * sinfo.adb (Is_Disabled): New flag. + (Is_Ignored): New flag. + * sinfo.ads (Is_Disabled): New flag. + (Is_Ignored): New flag. + (N_Pragma_Argument_Association): New 'Class forms. + * snames.ads-tmpl: New names Name_uPre, Name_uPost, + Name_uType_Invariant, Name_uInvariant. + * switch-c.adb: Remove setting of Debug_Pragmas_Enabled for -gnata. + * tree_io.ads (ASIS_Version_Number): Updated (remove + read write of obsolete flags Debug_Pragmas_Disabled and + Debug_Pragmas_Enabled. + +2013-04-12 Ed Schonberg + + * exp_aggr.adb (Get_Explicit_Discriminant_Value): Subsidiary + of Build_Record_Aggr_Code, used to retrieve explicit values + for inherited discriminants in an extension aggregate, when the + ancestor type is unconstrained. + +2013-04-12 Ed Schonberg + + * sem_attr.adb (Check_Stream_Attribute): If restriction + No_Default_Stream_Attributes is active, it is illegal to use a + predefined elementary type stream attribute either by itself, + or more importantly as part of the attribute subprogram for a + composite type. However, if the broader restriction No_Streams + is active, then stream operations are not generated, and there + is no error. + +2013-04-12 Robert Dewar + + * gnatbind.adb: Minor reformatting. + +2013-04-12 Bob Duff + + * sem_attr.adb (Analyze_Access_Attribute): Treat P'Access like a + call only in the static elaboration model. + +2013-04-12 Hristian Kirtchev + + * sem_prag.adb (Analyze_Input_List): Detect an illegal dependency + clause where both input and output lists are null. + (Analyze_Pragma): Update the grammar of pragma Depends. + +2013-04-12 Vincent Celier + + * gnatbind.adb (No_Restriction_List): Exclude restrictions that + take a parameter value, not a count. + * prj.ads, prj.adb (Remove_All_Restricted_Languages): New procedure. + * projects.texi: Complete documentation of attribute Roots. + +2013-04-12 Thomas Quinot + + * exp_ch3.adb, exp_util.ads, checks.adb, freeze.adb, sem_attr.adb, + sem_ch3.adb: Minor reformatting. + * exp_ch4.adb (Size_In_Storage_Elements): Minor documentation + improvement: note that the computation is pessimistic for bit + packed arrays. + * gnat_rm.texi (Range_Length): Fix minor error in description + of attribute. + +2013-04-12 Hristian Kirtchev + + * aspects.adb (Find_Aspect): New routine. + (Find_Value_Of_Aspect): New routine. + (Has_Aspect): Reimplemented. + * aspects.ads (Find_Aspect): New routine. + (Find_Value_Of_Aspect): New routine, previously known as Find_Aspect. + * exp_ch5.adb (Expand_Iterator_Loop): Update the call to Find_Aspect. + * exp_util.adb (Is_Iterated_Container): Update the call to Find_Aspect. + * sem_ch4.adb (Try_Container_Indexing): Update calls to Find_Aspect. + * sem_ch5.adb (Analyze_Iterator_Specification): Update + the call to Find_Aspect. Use function Has_Aspect for better + readability. + (Preanalyze_Range): Use function Has_Aspect for better readability. + * sem_ch13.adb (Check_One_Function): Update the call to Find_Aspect. + * sem_prag.adb (Analyze_Pragma): There is no longer need to + look at the parent to extract the corresponding pragma for + aspect Global. + +2013-04-12 Robert Dewar + + * checks.adb, sem_elab.adb, repinfo.adb, sem_ch4.adb, restrict.adb, + restrict.ads: Minor reformatting. + +2013-04-12 Ed Schonberg + + * lib-xref.adb: Retrieve original name of classwide type if any. + +2013-04-12 Thomas Quinot + + * exp_ch11.ads: Minor reformatting. + +2013-04-12 Hristian Kirtchev + + * aspects.adb: Alphabetize subprogram bodies in this unit. Add + an entry for Aspect_Ghost in the table of canonical aspects. + (Has_Aspect): New routine. + * aspects.ads: Add Aspect_Ghost to all relevant + tables. Alphabetize subprograms in this unit. + (Has_Aspect): New routine. + * einfo.adb: Add with and use clauses for Aspects. + (Is_Ghost_Function): New routine. + * einfo.ads: Add new synthesized attribute Is_Ghost_Function and + update the structure of the related nodes. + (Is_Ghost_Function): New routine. + * exp_ch4.adb (Find_Enclosing_Context): Use routine + Is_Body_Or_Package_Declaration to terminate a search. + (Is_Body_Or_Unit): Removed. + * exp_util.adb (Within_Case_Or_If_Expression): Use routine + Is_Body_Or_Package_Declaration to terminate a search. + * par-prag.adb: Add pragma Ghost to the list of pragmas that do + not need special processing by the parser. + * sem_attr.adb (Analyze_Access_Attribute): Detect an + illegal use of 'Access where the prefix is a ghost function. + (Analyze_Attribute): Use routine Is_Body_Or_Package_Declaration + to terminate a search. (Check_References_In_Prefix): Use routine + Is_Body_Or_Package_Declaration to terminate a search. + * sem_ch4.adb (Analyze_Call): Mark a function when it appears + inside an assertion expression. Verify the legality of a call + to a ghost function. + (Check_Ghost_Function_Call): New routine. + * sem_ch6.adb (Analyze_Function_Call): Code reformatting. Move + the setting of attribute In_Assertion_Expression to Analyze_Call. + (Check_Overriding_Indicator): Detect an illegal attempt to + override a function with a ghost function. + * sem_ch12.adb (Preanalyze_Actuals): Detect an illegal use of + a ghost function as a generic actual. + * sem_elab.adb (Check_Internal_Call_Continue): Update the call + to In_Assertion. + * sem_prag.adb: Add an entry for pragma Ghost in the table + of significant arguments. + (Analyze_Pragma): Do not analyze + an "others" case guard. Add processing for pragma Ghost. Use + Preanalyze_Assert_Expression when analyzing the expression of + pragmas Loop_Invariant and Loop_Variant. + * sem_util.adb (Get_Subprogram_Entity): Reimplemented. + (Is_Body_Or_Package_Declaration): New routine. + * sem_util.ads: Alphabetize subprotrams in this unit. + (Is_Body_Or_Package_Declaration): New routine. + * sinfo.adb (In_Assertion): Rename to In_Assertion_Expression. + (Set_In_Assertion): Rename to Set_In_Assertion_Expression. + * sinfo.ads: Rename flag In_Assertion to In_Assertion_Expression + to better reflect its use. Update all places that mention the flag. + (In_Assertion): Rename to In_Assertion_Expression. Update + related pragma Inline. (Set_In_Assertion): Rename to + Set_In_Assertion_Expression. Update related pragma Inline. + * snames.ads-tmpl: Add new predefined name Ghost. Add new pragma + id Pragma_Ghost. + +2013-04-12 Arnaud Charlet + + * sem_prag.adb (Set_Imported): Do not generate error for multiple + Import in CodePeer mode. + * s-rident.ads: Fix minor typo. + +2013-04-12 Ed Schonberg + + * checks.adb (Insert_Valid_Check): Do not insert validity check + in the body of the generated predicate function, to prevent + infinite recursion. + +2013-04-12 Ed Schonberg + + * s-rident.ads: Add various missing Ada 2012 restrictions: + No_Access_Parameter_Allocators, No_Coextensions, + No_Use_Of_Attribute, No_Use_Of_Pragma. + * snames.ads-tmpl: Add corresponding names. + * restrict.ads restrict.adb: Subprograms and data structures to + handle aspects No_Use_Of_Attribute and No_Use_Of_Pragma. + * sem_ch4.adb: Correct name of restrictions is + No_Standard_Allocators_After_Elaboration. + * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Check + violation of restriction No_Use_Of_Attribute. + * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): + Set restrictions No_Use_Of_Pragma and No_Use_Of_Attribute. + (Analyze_Pragma): Check violation of restriction No_Use_Of_Pragma. + * sem_res.adb: Check restrictions No_Access_Parameter_Allocators + and No_Coextensions. + * bcheck.adb: Correct name of restrictions is + No_Standard_Allocators_After_Elaboration. + * gnatbind.adb: Correct name of restrictions is + No_Standard_Allocators_After_Elaboration. + +2013-04-12 Hristian Kirtchev + + * sem_prag.adb (Analyze_Pragma, (Check_Mode_Restriction_In_Function): + Correct error message format. + +2013-04-12 Robert Dewar + + * sem_attr.adb: Minor reformatting. + +2013-04-12 Ed Schonberg + + * sem_elab.adb (Within_Elaborate_All): Do not examine a context + item that has not been analyzed, because the unit may have errors, + or the context item may come from a proper unit inserted at the + point of a stub and not analyzed yet. + +2013-04-12 Thomas Quinot + + * gnat1drv.adb, repinfo.adb, repinfo.ads (Repinfo.List_Array_Info, + List_Record_Info): Also include scalar storage order information in + output. + +2013-04-12 Yannick Moy + + * sem_ch6.adb (Process_Contract_Cases): Update code to apply to + Contract_Cases instead of Contract_Case pragma. + +2013-04-12 Robert Dewar + + * a-cfdlli.ads, g-socket.adb, s-fileio.adb: Minor reformatting. + +2013-04-12 Yannick Moy + + * sem_attr.adb (Analyze_Attribute): Update analyse of + Attribute_Old and Attribute_Result so they are allowed in the + right-hand-side of an association in a Contract_Cases pragma. + * sem_prag.adb (Analyze_CTC_In_Decl_Part): Add pre-analysis of + the expressions in a Contract_Cases pragma. + +2013-04-12 Robert Dewar + + * sem.ads, opt.ads: Minor comment edits. + * sem_warn.adb, sem_ch6.adb: Minor reformatting. + +2013-04-12 Claire Dross + + * a-cfdlli.adb a-cfdlli.ads (List, Not_No_Element, Iterate, + Reverse_Iterate, Query_Element, Update_Element, Read, Write): Removed, + not suitable for formal analysis. + +2013-04-12 Ed Schonberg + + * sem_prag.adb (Analyze_Abstract_State): Use Defining entity + to locate package entity, which may be a child unit. + +2013-04-12 Thomas Quinot + + * g-socket.adb, g-socket.ads (Connect_Socket, version with timeout): If + the specified timeout is 0, do not attempt to determine whether the + connection succeeded. + +2013-04-12 Doug Rupp + + * s-fileio.adb (Form_RMS Context_Key): Fix some thinkos. + +2013-04-12 Doug Rupp + + * s-fileio.adb: Minor reformatting. + +2013-04-12 Ed Schonberg + + * sem_warn.adb (Check_Infinite_Loop_Warning): Do not warn if + the last statement in the analyzed loop is an unconditional + exit statement. + +2013-04-12 Robert Dewar + + * opt.ads (Style_Check_Main): New switch. + * sem.adb (Semantics): Set Style_Check flag properly for new + unit to be analyzed. + * sem_ch10.adb (Analyze_With_Clause): Don't reset Style_Check, + the proper setting of this flag is now part of the Semantics + procedure. + * switch-c.adb (Scan_Front_End_Switches): Set Style_Check_Main + for -gnatg and -gnaty + +2013-04-12 Doug Rupp + + * s-crtl.ads (fopen, freopen): Add vms_form parameter + * i-cstrea.ads (fopen, freopen): Likewise. + * adaint.h (__gnat_fopen, __gnat_freopen): Likewise. + * adaint.c (__gnat_fopen, __gnat_freopen): Likewise. + [VMS]: Split out RMS keys and call CRTL function appropriately. + * s-fileio.adb (Form_VMS_RMS_Keys, Form_RMS_Context_Key): New + subprograms. + (Open, Reset): Call Form_VMS_RMS_Keys. Call fopen,freopen with + vms_form + * gnat_rm.texi: Document implemented RMS keys. + +2013-04-12 Hristian Kirtchev + + * sem_ch13.adb (Analyze_Aspect_Specifications): + Insert the corresponding pragma for aspect Abstract_State at + the top of the visible declarations of the related package. + Previously this was only done when the package is a compilation + unit. + +2013-04-12 Arnaud Charlet + + * gnat_ugn.texi: Further menu clean ups. + * sem_prag.adb, opt.ads: Minor reformatting. + * sem_util.ads: Minor comment fix. + +2013-04-12 Hristian Kirtchev + + * sem_ch13.adb (Analyze_Aspect_Specifications): Aspect + Depends is now a delayed aspect. The delay is required + due to the interplay between aspects Depends and Global. + (Check_Aspect_At_Freeze_Point): Add an entry for aspect Depends. + * sem_prag.adb: Reformat various error messages. + (Add_Item): New subsidiary routine. + (Analyze_Pragma): Add new variables + Global_Seen, Result_Seen, Subp_Inputs and Subp_Outputs. The + analysis of pragma Depends now has the capability to check + the proper mode and usage of subprogram inputs and outputs. + (Appears_In): New routine. + (Check_Function_Return): New routine. + (Check_Mode): New routine. + (Check_Usage): New routine. + (Collect_Subprogram_Inputs_Outputs): New routine. + +2013-04-12 Bob Duff + + * par-ch7.adb (P_Package): Initialize Sloc in the newly-pushed scope + stack entry. + +2013-04-12 Robert Dewar + + * switch-c.adb: Minor fix to wording of error message for + -gnatet/eT. + +2013-04-12 Robert Dewar + + * impunit.adb: Add s-multip and s-mudido to list of impl defined + system units. + * gnat_rm.texi: Add documentation for + System.Multiprocessors[.Dispatching_Domains]. + +2013-04-12 Ben Brosgol + + * gnat_ugn.texi: Completion of menu cleanups. + +2013-04-12 Arnaud Charlet + + * sem_prag.adb (Diagnose_Multiple_Pragmas): Relax the rules + in Relaxed_RM_Semantics. + +2013-04-12 Arnaud Charlet + + * set_targ.adb (elab code): Add support for non gcc back-ends + where save_argv is null. + +2013-04-12 Robert Dewar + + * gnat1drv.adb (Gnat1drv): Test Target_Dependent_Info_Write_Name. + * opt.ads (Target_Dependent_Info_Read): Add _Name, now an access + type (Target_Dependent_Info_Write): Add _Name, now an access type. + * set_targ.adb (Write_Target_Dependent_Values): Use name + from -gnatet switch stored in Target_Dependent_Info_Write_Name + (Read_Target_Dependent_Values): Use name from -gnateT switch + stored in Target_Dependent_Info_Read_Name. + * switch-c.adb: New form of -gnatet and -gnateT switches. + * usage.adb: New form of -gnatet and -gnateT switches with + file name. + +2013-04-11 Eric Botcazou + + * gcc-interface/decl.c (elaborate_expression_1): Skip only constant + arithmetics when looking for a read-only variable in the expression. + +2013-04-11 Javier Miranda + + * check.ads, exp_ch6.adb (Install_Null_Excluding_Check): No check in + interface thunks since it is performed at the caller side. + (Expand_Simple_Function_Return): No accessibility check needed in thunks + since the check is done by the target routine. + +2013-04-11 Ed Schonberg + + * sem_prag.adb (Analyze_Pragma, case Priority): pre-analyze + expression with type Any_Priority. + * exp_ch9.adb (Initialize_Protection): Check that the value + of the priority expression is within the bounds of the proper + priority type. + +2013-04-11 Robert Dewar + + * sem_prag.adb, prj-env.adb: Minor reformatting. + +2013-04-11 Ben Brosgol + + * gnat_ugn.texi: Clean ups. + +2013-04-11 Yannick Moy + + * set_targ.adb: Minor comment update. + +2013-04-11 Pascal Obry + + * gnat_ugn.texi: Remove obsolete comment about DLL calling + convention. + +2013-04-11 Javier Miranda + + * exp_ch6.adb (Expand_Call): For the call to the target primitive + of an interface thunks do not compute the extra actuals; just + propagate the extra actuals received by the thunk. + * exp_disp.adb (Expand_Interface_Thunk): Decorate new attribute + Thunk_Entity. + * sem_ch6.adb (Create_Extra_Formals): Do not generate extra + formals in interface thunks whose target primitive has no extra + formals. + +2013-04-11 Hristian Kirtchev + + * sem_prag.adb (Analyze_Pragma): Detect + a renaming by looking at the Renamed_Object attribute. + (Is_Renaming): Removed. + +2013-04-11 Vincent Celier + + * prj-env.adb (Initialize_Default_Project_Path): Take + into account a project path file, specified by environment + variable GPR_PROJECT_PATH_FILE, before taking into account + GPR_PROJECT_PATH. + * projects.texi: Add documentation for GPR_PROJECT_PATH_FILE + +2013-04-11 Ed Schonberg + + * a-cdlili.adb, a-cdlili.ads, a-cihama.adb, a-cihama.ads, a-coinve.adb, + a-coinve.ads, a-ciorse.adb, a-ciorse.ads, a-coorma.adb, a-coorma.ads, + a-cfdlli.adb, a-cfdlli.ads, a-cborma.adb, a-cborma.ads, a-cidlli.adb, + a-cidlli.ads, a-ciormu.adb, a-ciormu.ads, a-cihase.adb, a-cihase.ads, + a-cohama.adb, a-cohama.ads, a-coorse.adb, a-coorse.ads, a-cbhama.adb, + a-cbhama.ads, a-cborse.adb, a-cborse.ads, a-ciorma.adb, a-cobove.adb, + a-ciorma.ads, a-cobove.ads, a-coormu.adb, a-coormu.ads, a-cohase.adb, + a-cohase.ads, a-cbdlli.adb, a-cbdlli.ads, a-cbhase.adb, a-cbhase.ads: + Move Iterator operations from body to private part of spec. + +2013-04-11 Eric Botcazou + + * ttypes.ads, get_targ.ads: More minor rewording of comments. + +2013-04-11 Johannes Kanig + + * debug.adb: Document use of switch -gnatd.Z. + +2013-04-11 Hristian Kirtchev + + * sem_prag.adb (Analyze_Pragma): Both pragma Depends and Global can now + support renamings of entire objects. Legal renamings are replaced by + the object they rename. + (Is_Renaming): New routine. + +2013-04-11 Yannick Moy + + * set_targ.adb, opt.ads: Minor changes in comments. + +2013-04-11 Ben Brosgol + + * gnat_ugn.texi: Minor clean ups. + +2013-04-11 Robert Dewar + + * nlists.ads, nlists.adb, treepr.adb, treepr.ads: Move debugging + function p from Nlists to Treepr. + +2013-04-11 Ed Schonberg + + * sem_disp.adb (Check_Dispatching_Context): If the context is + a contract for a null procedure defer error reporting until + postcondition body is created. + * exp_ch13.adb (Expand_N_Freeze_Entity): If the entity is a + null procedure, complete the analysis of its contracts so that + calls within classwide conditions are properly rewritten as + dispatching calls. + +2013-04-11 Thomas Quinot + + * sem_ch10.adb, sem_ch12.adb: Minor reformatting. + +2013-04-11 Robert Dewar + + * exp_attr.adb, sem_res.adb, sem_attr.adb: Minor reformatting. + +2013-04-11 Robert Dewar + + * atree.adb, atree.ads (Node31): New function. + (Set_Node31): New procedure. + +2013-04-11 Robert Dewar + + * errout.ads: Minor typo correction. + +2013-04-11 Javier Miranda + + * einfo.ad[sb] (Thunk_Entity/Set_Thunk_Entity): New attribute. + +2013-04-11 Robert Dewar + + * back_end.adb (Register_Back_End_Types): Moved to Get_Targ + * back_end.ads (C_String): Moved to Get_Targ + (Register_Type_Proc): Moved to Get_Targ (Register_Back_End_Types): + Moved to Get_Targ. + * cstand.adb (Register_Float_Type): New interface + (Create_Back_End_Float_Types): Use entries in FPT_Mode_Table. + * get_targ.adb (Register_Back_End_Types): Moved here from + Back_End. + * get_targ.ads (C_String): Moved here from Back_End + (Register_Type_Proc): Moved here from Back_End + (Register_Back_End_Types): here from Back_End. + * gnat1drv.adb (GGnat11drv): Add call to + Write_Target_Dependent_Values; + * lib-writ.ads, lib-writ.adb (Write_ALI): Remove section writing + obsolete target dependent info. + * opt.ads (Generate_Target_Dependent_Info): + Removed (Target_Dependent_Info_Read): New flag + (Target_Dependent_Info_Write): New flag + * output.adb: Minor comment change + * s-os_lib.ads: Minor reformatting + * set_targ.ads, set_targ.adb: Minor reformatting. + * switch-c.adb (Scan_Switches.First_Ptr): New variable + (Scan_Front_End_Switches): Check -gnatd.b, -gnateT come first + (Scan_Front_End_Switches): Handle -gnatet, -gnateT + * ttypes.ads: Remove documentation section on target dependent + info in ali file Remove four letter codes, no longer used Instead + of using Get_Targ.Get_xxx, we use Set_Targ.xxx + * usage.adb: Add usage lines for -gnatet/-gnateT + * gcc-interface/Make-lang.in: Update dependencies. + +2013-04-11 Thomas Quinot + + * sem_ch4.adb: Update documentation. + * sinfo.ads (N_Expression_With_Actions): Ditto. + +2013-04-11 Hristian Kirtchev + + * sem_ch13.adb (Analyze_Aspect_Specifications): + Add a guard to prevent the double insertion of the same aspect + into a rep item list. This previously led to a circularity. + +2013-04-11 Ed Schonberg + + * sem_attr.adb (Eval_Attribute, case 'Access): Reject attribute + reference if the prefix is the dereference of an anonymous access + to subprogram type. + * exp_attr.adb (Expand_N_Attribute_Reference, Access_Cases): Handle + properly a reference to the current instance of a protected type + from within a protected subprogram. + * sem_res.adb (Find_Unique_Access_Type): Treat + Attribute_Access_Type like Allocator_Type when resolving an + equality operator. + +2013-04-11 Arnaud Charlet + + * xgnatugn.adb: Remove obsolete comments. + +2013-04-11 Robert Dewar + + * back_end.ads, back_end.adb: Minor reformatting. + * set_targ.ads, set_targ.adb: New files. + +2013-04-11 Hristian Kirtchev + + * sem_case.adb (Check_Against_Predicate): New routine. + (Check_Choices): When the type covered by the list of choices + is a static subtype with a static predicate, check all choices + agains the predicate. + (Issue_Msg): All versions removed. + (Missing_Choice): New routines. + * sem_ch4.adb: Code and comment reformatting. + (Analyze_Case_Expression): Do not check the choices when the case + expression is being preanalyzed and the type of the expression + is a subtype with a static predicate. + (Has_Static_Predicate): New routine. + * sem_ch13.adb: Code and comment reformatting. (Build_Range): + Always build a range even if the low and hi bounds denote the + same value. This is needed by the machinery in Check_Choices. + (Build_Static_Predicate): Always build a range even if the low and + hi bounds denote the same value. This is needed by the machinery + in Check_Choices. + +2013-04-11 Robert Dewar + + * einfo.ads, sem_util.adb, exp_ch6.adb, xgnatugn.adb: Minor + reformatting. + +2013-04-11 Doug Rupp + + * gnatlink.adb: Fold program basename to lower case on VMS for + consistency. + +2013-04-11 Matthew Heaney + + * a-rbtgbo.adb (Generic_Equal): Initialize Result variable before + entering loop. + +2013-04-11 Arnaud Charlet + + * xgnatugn.adb: Remove dead code (handling of @ifset/@ifclear). + +2013-04-11 Arnaud Charlet + + * gnat_ugn.texi: Remove some use of ifset in menus. Not strictly + needed, and seems to confuse some versions of makeinfo. + +2013-04-11 Javier Miranda + + * einfo.adb (Is_Thunk): Remove assertion. + (Set_Is_Thunk): Add assertion. + * einfo.ads (Is_Thunk): Complete documentation. + * exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Code cleanup. + * exp_ch3.ad[sb] (Is_Variable_Size_Array): Moved to sem_util + (Is_Variable_Size_Record): Moved to sem_util + * exp_ch6.adb (Expand_Call): Code cleanup. + (Expand_N_Extended_Return_Statement): Code cleanup. + (Expand_Simple_Function_Return): Code cleanup. + * exp_disp.adb Remove dependency on exp_ch3 + (Expand_Interface_Thunk): Add minimum decoration needed to set + attribute Is_Thunk. + * sem_ch3.ad[sb] (Is_Constant_Bound): moved to sem_util + * sem_util.ad[sb] (Is_Constant_Bound): Moved from + sem_ch3 (Is_Variable_Size_Array): Moved from exp_ch3 + (Is_Variable_Size_Record): Moved from exp_ch3 + +2013-04-11 Javier Miranda + + * exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Do + not add cleanup actions in thunks associated with interface types. + * exp_ch3.ad[sb] (Is_Variable_Size_Record): Move declaration to + the package spec. + * exp_ch4.adb (Tagged_Conversion): Update call to + Expand_Interface_Conversion since the parameter Is_Static is no + longer needed. + * exp_ch6.adb (Expand_N_Extended_Return_Statement): Adding + assertion to ensure that interface thunks are never handled by + this routine. + (Expand_N_Simple_Function_Return): Do not rewrite this statement + as an extended return statement in interface thunks, and do not + perform copy in the secondary stack if the return statement is + located in a thunk. + * exp_disp.adb (Expand_Dispatching_Call): No longer displace + the pointer to the returned object in functions returning interface + types. + (Expand_Interface_Thunk): For functions returning interface types + displace the pointer to the returned object. + (Expand_Interface_Conversion): Remove formal + Is_Static since this subprogram can now evaluate it locally. + * sem_ch3.adb (Add_Internal_Interface_Entities): For functions + propagate the type returned by the covered interface primitive to + the internal interface entity. Needed by the thunk to generate + the code which displaces "this" to reference the corresponding + secondary dispatch table. + * sem_disp.adb (Propagate_Tag): Update call to + Expand_Interface_Conversion since the parameter Is_Static is no + longer needed. + * sem_res.adb (Resolve_Type_Conversion): Update calls to + Expand_Interface_Conversion since the parameter Is_Static is no + longer needed plus code cleanup. + +2013-04-11 Eric Botcazou + + * init.c (RETURN_ADDR_OFFSET): Delete as unused. + +2013-04-11 Robert Dewar + + * a-crbtgk.adb, a-ciorse.adb, a-crbtgo.adb, a-coorse.adb, a-rbtgbo.adb, + a-cborse.adb, a-rbtgso.adb, exp_ch3.adb: Minor reformatting. + +2013-04-11 Yannick Moy + + * exp_ch4.adb (Expand_N_Selected_Component): Do not expand + discriminant check for Unchecked_Union. + * sem_res.adb (Resolve_Selected_Component): Set flag + Do_Discriminant_Check even when expansion is not performed. + * sinfo.ads (Do_Discriminant_Check): Update documentation for the case + of Unchecked_Union. + +2013-04-11 Thomas Quinot + + * sem_ch13.adb (Same_Representation): Two types with different scalar + storage order never have the same representation. + +2013-04-11 Arnaud Charlet + + * xgnatugn.adb (Push_Conditional): Simplify handling, + no longer need to keep track of "excluding" sections. + (Currently_Excluding): Removed. + (Process_Source_File): + Set unw/vms flag so that texinfo can do the whole handling of + @ifset/@ifclear sections. Fix handling of nested @ifset/@ifclear + sections. + * gnat_ugn.texi: Add a section on performing unassisted install + on Windows. + +2013-04-11 Johannes Kanig + + * debug.adb: Document usage of -gnatd.Q switch. + +2013-04-11 Matthew Heaney + + * a-crbtgk.adb (Ceiling, Find, Floor): Adjust locks + before element comparisons. + (Generic_Conditional_Insert, Generic_Conditional_Insert_With_Hint): + Ditto. + * a-crbtgo.adb, a-rbtgbo.adb (Generic_Equal): Adjust locks before + element comparisons. + * a-rbtgso.adb (Difference, Intersection): Adjust locks + before element comparisons. + (Is_Subset, Overlap): Ditto + (Symmetric_Difference, Union): Ditto + * a-btgbso.adb (Set_Difference, Set_Intersection): Adjust locks + before element comparisons. + (Set_Subset, Set_Overlap): Ditto + (Set_Symmetric_Difference, Set_Union): Ditto + * a-coorse.adb, a-ciorse.adb, a-cborse.adb + (Update_Element_Preserving_Key): Adjust locks before element + comparisons (Replace_Element): Ditto + +2013-04-11 Pascal Obry + + * prj-attr.adb, projects.texi, snames.ads-tmpl: Remove Build_Slaves + attribute. + +2013-04-11 Ed Schonberg + + * exp_ch3.adb (Build_Equivalent_Aggregate): Subsidiary of + Expand_N_Object_Declaration, used to construct an aggregate + with static components whenever possible, so that objects of a + discriminated type can be initialized without calling the init. + proc for the type. + +2013-04-11 Vincent Celier + + * prj-makr.adb (Process_Directory): On VMS, always delete, + then recreate the temporary file with Create_Output_Text_File, + otherwise the output redirection does not work properly. + +2013-04-11 Eric Botcazou + + * urealp.ads: Fix minor typo. + +2013-04-11 Fabien Chouteau + + * cio.c (mktemp): Don't use tmpnam function from the + system on VxWorks in kernel mode. + +2013-04-11 Vincent Celier + + * make.adb (Compile): Clarify the error message reported + when gnatmake refuses to compile a runtime source. + (Start_Compile_If_Possible): Ditto. + +2013-04-11 Vincent Celier + + * gnat_ugn.texi: Add documentation about -gnatc and gnatmake. + +2013-04-11 Vincent Celier + + * switch-c.adb: Document internal switches. + * usage.adb: Remove lines for internal switches: -gnatea, -gnateO, + -gnatez and -gnateO. + +2013-04-11 Ed Schonberg + + * par-ch6.adb (P_Subprogram): Attach aspects to subprogram stub. + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Allow aspects on + subprogram stubs. + * sem_ch13.adb (Analyze_Aspect_Specifications): Analyze generated + pre/post pragmas at once before analyzing the proper body. + * sem_prag.adb (Chain_PPC): Handle pragma that comes from an + aspect on a subprogram stub. + * aspects.adb: Aspect specifications can appear on a + subprogram_Body_Stub. + +2013-04-11 Vincent Celier + + * gnatname.adb: Minor comment fix. + +2013-04-11 Vincent Celier + + * prj-makr.adb (Process_Directory): Create a new temporary + file for each invocation of the compiler, in directory pointed + by environment variable TMPDIR if it exists. + +2013-04-11 Arnaud Charlet + + * gnat_ugn.texi: Minor editing/clean ups. + +2013-04-11 Ed Schonberg + + * sem_ch6.adb (Analyze_Null_Procedure): New subprogram, mostly + extracted from Analyze_Subprogram_Declaration, to handle null + procedure declarations that in ada 2012 can be completions of + previous declarations. + +2013-04-11 Hristian Kirtchev + + * sem_prag.adb (Entity_Of): Moved to Exp_Util. + * exp_util.ads, exp_util.adb (Entity_Of): New routine. + +2013-04-11 Robert Dewar + + * g-spipat.ads: Minor comment fix. + +2013-04-11 Robert Dewar + + * sem_prag.adb, sem_util.adb, sem_res.adb, exp_ch4.adb: Minor + reformatting. + +2013-04-11 Thomas Quinot + + * exp_util.ads (Fully_Qualified_Name_String): Document that the + constructed literal is the entity name in all upper case. + +2013-04-11 Thomas Quinot + + * sem_util.adb (Set_Entity_With_Style_Check): Fix logic of + check for implementation defined identifiers. + +2013-04-11 Yannick Moy + + * checks.adb (Apply_Type_Conversion_Checks): Add an explanation + of why range check and length are put on different nodes. + * exp_ch4.adb (Apply_Type_Conversion_Checks): Remove check marks + when doing their expansion. + +2013-04-11 Ed Schonberg + + * sem_util.ads, sem_util.adb (Get_Incomplete_View_Of_Ancestor): + New function to implement the notion introduced in RM 7.3.1 + (5.2/3): in a child unit, a derived type is within the derivation + class of an ancestor declared in a parent unit, even if there + is an intermediate derivation that does not see the full view + of that ancestor. + * sem_res.adb (Valid_Conversion): if all else fails, examine if an + incomplete view of an ancestor makes a numeric conversion legal. + +2013-04-11 Ed Schonberg + + * sem_ch6.adb: in Ada2012 operators can only have in + parameters. + +2013-04-11 Vincent Celier + + * makeutl.adb (Create_Binder_Mapping_File): Do not put into + the mapping file ALI files of sources that have been replaced. + +2013-04-11 Vincent Celier + + * projects.texi: Add subsection Duplicate Sources in Projects. + +2013-04-11 Vincent Celier + + * gnat_ugn.texi: Add documentation for gnatmake switch -droot_dir/** + +2013-04-11 Arnaud Charlet + + * init.c (__gnat_install_handler): Only set up an alternate + stack when installing a signal handler for SIGSEGV. + +2013-04-11 Thomas Quinot + + * g-socket.adb (Connect_Socket, timeout version): Call + underlying connect operation directly, not through the 2-argument + Connect_Socket thick binding, in order to avoid raising a junk + exception for the EINPROGRESS return. + +2013-04-11 Robert Dewar + + * a-cdlili.adb: Minor addition of pragma Warnings (Off). + +2013-04-11 Robert Dewar + + * hostparm.ads: Minor reformatting. + +2013-04-11 Hristian Kirtchev + + * aspects.ads, aspects.adb: Add Aspect_Depends to all the relevant + tables. + * elists.ads, elists.adb (Contains): New routine. + * par-prag.adb: Pragma Depends does not need any special treatment + by the parser. + * sem_ch13.adb (Analyze_Aspect_Specifications): + Transform aspect Depends into a corresponding pragma. + (Check_Aspect_At_Freeze_Point): Aspect Depends does not need + inspection at its freeze point. + * sem_prag.adb (Analyze_Pragma): Perform analysis and + normalization of pragma Depends. Remove the use of function + Is_Duplicate_Item. Use End_Scope to uninstalle the formal + parameters of a subprogram. Add a value for pragma Depends in + table Sig_Flags. + (Is_Duplicate_Item): Removed. + * snames.ads-tmpl: Add predefined name for Depends as well as + a pragma identifier. + +2013-04-11 Arnaud Charlet + + * gnat1drv.adb: Minor code clean up. + +2013-04-11 Arnaud Charlet + + * debug.adb, sem_ch13.adb (Analyze_Enumeration_Representation_Clause): + Ignore enumeration rep clauses by default in CodePeer mode, unless + -gnatd.I is specified. + +2013-04-11 Ed Schonberg + + * sem_util.adb (Safe_To_Capture_Value): If the node belongs to + an expression that has been attached to the else_actions of an + if-expression, the capture is not safe. + +2013-04-11 Yannick Moy + + * checks.adb (Apply_Type_Conversion_Checks): Put check mark on type + conversion for arrays. + +2013-04-11 Robert Dewar + + * a-cdlili.adb, a-cidlli.adb, a-cbdlli.adb: Minor reformatting. + +2013-04-11 Johannes Kanig + + * adabkend.adb: Minor comment addition. + +2013-04-11 Matthew Heaney + + * a-cdlili.adb, a-cidlli.adb, a-cbdlli.adb ("="): Increment + lock counts before entering loop. + (Find): Ditto. + (Is_Sorted, Merge, Sort): Ditto. + (Reverse_Find): Ditto. + (Splice_Internal): Internal operation to refactor splicing logic. + (Splice): Some logic moved into Splice_Internal. + +2013-04-11 Johannes Kanig + + * adabkend.adb (Scan_Compiler_Arguments): Do not call + Set_Output_Object_File_Name in Alfa_Mode + * gnat1drv.adb (Adjust_Global_Switches): Take Alfa_Mode into account. + * opt.ads: Fix documentation. + +2013-04-11 Robert Dewar + + * sem_res.adb: Minor code reorganization and comment fixes. + * sem_type.adb: Minor reformatting. + +2013-04-11 Hristian Kirtchev + + * exp_ch4.adb (Process_Transient_Object): Add new + local variable Fin_Call. Remove and explain ??? comment. Use the + Actions of logical operators "and then" and "or else" to insert + the generated finalization call. + +2013-04-11 Eric Botcazou + + * gnat_rm.texi: Fix typo. + +2013-04-11 Ed Schonberg + + * sem_res.adb: Minor reformatting. + +2013-04-11 Robert Dewar + + * atree.h: Add declarations for Flag255-Flag289 Fix declaration + of Field30 (was wrong, but no effect, since not yet referenced by + back end) Add declarations for Field31-Field35 Add declarations + for Node31-Node35. + * einfo.ads, einfo.adb (Has_Invariants): No longer applies to + procedures. + (Has_Predicates): No longer applies to functions. + (Is_Predicate_Function): New flag. + (Is_Predicate_Function_M): New flag. + (Is_Invariant_Procedure): New flag. + (Predicate_Function_M): New function. + (Set_Predicate_Function_M): New procedure. + * exp_ch11.adb (Expand_N_Raise_Expression): Take care of special + case of appearing in predicate used for membership test. + * exp_ch3.adb (Insert_Component_Invariant_Checks): Set + Is_Invariant_Procedure flag. + * exp_ch4.adb (Expand_Op_In): Call special predicate function + that takes care of raise_expression nodes in the predicate. + * exp_util.ads, exp_util.adb (Make_Predicate_Call): Add argument Mem for + membership case. + * sem_ch13.adb (Build_Predicate_Functions): New name for + Build_Predicate_Function. Major rewrite to take care of raise + expression in predicate for membership tests. + * sem_res.adb (Resolve_Actuals): Include both predicate functions + in defense against infinite predicate function loops. + * sinfo.ads, sinfo.adb (Convert_To_Return_False): New flag. + +2013-04-11 Robert Dewar + + * sem_prag.adb: Minor reformatting. + +2013-04-11 Ed Schonberg + + * lib-xref.adb: Generate reference for component of anonymous + access type. + +2013-04-11 Robert Dewar + + * stand.ads: Minor reformatting. + +2013-04-11 Matthew Heaney + + * a-convec.adb, a-coinve.adb, a-cobove.adb ("="): Increment lock + counts before entering loop. + (Find, Find_Index): Ditto. + (Is_Sorted, Merge, Sort): Ditto. + (Reverse_Find, Reverse_Find_Index): Ditto. + +2013-04-11 Robert Dewar + + * exp_ch11.ads, exp_ch11.adb (Expand_N_Raise_Expression): New procedure. + * exp_util.adb (Insert_Actions): Add entry for N_Raise_Expression. + * expander.adb: Add call to Expand_N_Raise_Expression. + * par-ch11.adb (P_Raise_Expression): New procedure. + * par-ch4.adb (P_Relation): Handle Raise_Expression. + * par.adb (P_Raise_Expression): New procedure. + * sem.adb: Add handling for N_Raise_Expression. + * sem_ch11.ads, sem_ch11.adb (Analyze_Raise_Expression): New procedure. + * sem_res.adb (Resolve): Add handling for N_Raise_Expression. + * sinfo.ads, sinfo.adb (N_Raise_Expression): New node. + * sprint.adb (Sprint_Node_Actual): Add handling for N_Raise_Expression. + * stand.ads (Any_Type): Document use with N_Raise_Expression. + +2013-04-11 Vincent Celier + + * gnat_ugn.texi: Remove section "The Development Environments" + now that all predefined attributes are documented, including + those in package IDE. + +2013-04-11 Ed Schonberg + + * sem_ch6.adb: Preserve parent link in copy of expression. + +2013-04-11 Vincent Celier + + * projects.texi: Complete rewrite of the subsection Attributes + in section "Project file Reference". + +2013-04-11 Robert Dewar + + * exp_ch4.adb: Minor reformatting. + +2013-04-11 Robert Dewar + + * exp_ch4.adb (Expand_Concatenate): Remove wrapping in + expression-with-actions node. No longer needed given fix to + sem_prag and caused loss of some useful warnings. + * sem.ads: Minor reformatting. + * sem_prag.adb (Check_Disabled): Removed, to be replaced by not + Check_Enabled. These two routines were curiously incompatible + causing confusion. + (Analyze_Pragma, case Check): Make sure we do + not expand the string argument if the check is disabled. Avoid + use of Check_Disabled, which resulted in missing analysis in + some cases. + * sem_prag.ads (Check_Disabled): Removed, to be replaced by not + Check_Enabled. These two routines were curiously incompatible + causing confusion. + +2013-04-11 Hristian Kirtchev + + * exp_ch4.adb (Process_Transient_Object): Use + an unchecked conversion when associating a transient controlled + object with its "hook". + +2013-04-11 Ed Schonberg + + * sem_prag.adb (Analyze_Pragma, case + Preelaborable_Initialization): The pragma is legal if it comes + from an aspect on the private view of the type, even though its + analysis point takes place later at the freeze point. + +2013-04-11 Robert Dewar + + * sem_ch6.adb: Minor reformatting. + +2013-04-11 Yannick Moy + + * ali-util.adb (Read_Withed_ALIs): Do not consider it an error to + read ALI files with No_Object=True in Alfa mode. + * gnat1drv.adb: Set appropriately Back_End_Mode in Alfa mode, whether + this is during frame condition generation of translation to Why. + +2013-04-11 Robert Dewar + + * exp_ch4.adb: Minor code reorganization + * types.ads: Minor reformatting. + +2013-04-11 Johannes Kanig + + * opt.ads New global boolean Frame_Condition_Mode to avoid + referring to command line switch. + * gnat1drv.adb (Gnat1drv) set frame condition mode when -gnatd.G + is present, and disable Code generation in that case. Disable + ALI file generation when switch is *not* present. + +2013-04-11 Ed Schonberg + + * sem_ch6.adb (Analyze_Expression_Function): Perform the + pre-analysis on a copy of the expression, to prevent downstream + visbility issues involving operators and instantiations. + +2013-04-11 Johannes Kanig + + * debug.adb: Reservation and documentation for -gnatd.G switch. + * gnat1drv.adb (Adjust_Global_Switches) Take into account -gnatd.G + switch, and set ALI file generation accordingly. + +2013-04-11 Robert Dewar + + * exp_ch4.adb, exp_dist.adb: Minor reformatting. + * gnat_rm.texi, gnat_ugn.texi: -020 Add documentation clarifying that + check names introduced with pragma Check_Name are suppressed by -gnatp. + +2013-04-11 Vincent Celier + + * gnat_ugn.texi, projects.texi: Move chapter "Tools Supporting Project + Files" from projects.texi to gnat_ugn.texi. + +2013-04-11 Arnaud Charlet + + * gcc-interface/Make-lang.in: Update dependencies. + +2013-04-11 Yannick Moy + + * gnat1drv.adb (Adjust_Global_Switches): Allow missing body in Alfa + mode. + +2013-04-11 Hristian Kirtchev + + * exp_ch4.adb (Expand_N_Allocator): Detect the + allocation of an anonymous controlled object where the type of + the context is named. Use the pool and finalization master of + the named access type to allocate the object. + +2013-04-11 Vincent Celier + + * gnat_ugn.texi: Remove most mentions of gprbuild. + * projects.texi: Remove all mentions of asociative array + attributes. + +2013-04-11 Robert Dewar + + * sem_prag.adb, sem_attr.adb, gnat1drv.adb, prj-makr.adb, + opt.ads, sem_ch13.adb: Minor reformatting. + * debug.adb: Minor comment fix (remove junk .I doc). + +2013-04-11 Thomas Quinot + + * rtsfind.ads, exp_dist.adb, exp_dist.ads (Rtsfind.PCS_Version, case + PolyORB): Bump to 6. + (Exp_Dist.PolyORB_Support): Replace TC_Build with + Build_Complex_TC. + +2013-04-11 Arnaud Charlet + + * debug.adb, sem_prag.adb, par-ch2.adb, sem_attr.adb, gnat1drv.adb, + exp_disp.adb, opt.ads, sem_ch13.adb (Relaxed_RM_Semantics): New flag. + Enable this flag in CodePeer mode, and also via -gnatd.M. + Replace some uses of CodePeer_Mode by Relaxed_RM_Semantics. + +2013-04-11 Ed Schonberg + + * sem_ch8.adb (Check_Constrained_Object): If a subtype is created + from the renamed object in an object renaming declaration with + an unconstrained nominal subtype, freeze the created subtype at + once, to prevent order of elaboration issues in the backend. + +2013-04-11 Arnaud Charlet + + * exp_aggr.adb (Aggr_Size_OK): Refine setting of Max_Aggr_Size + in particular in CodePeer mode. + +2013-04-11 Vincent Celier + + * gnat_ugn.texi: Add documentation for backup copies of project + files for gnatname. + +2013-04-11 Tristan Gingold + + * gnat_rm.texi: Add Detect_BLocking in the ravenscar profile + pragma list. + +2013-04-11 Vincent Celier + + * gnatname.adb (Scan_Args): Recognize new switch --no-backup + (Usage): Add line for --no-backup. + * opt.ads (No_Backup): New Boolean variable, initialized to False. + (Ada_Version_Default): Switch to Ada 2012 by default. + * prj-makr.adb (Initialize): Create a backup for an existing + project file if gnatname is not invoked with --no-backup. + +2013-04-11 Thomas Quinot + + * exp_ch4.adb: Minor code improvement: replace various calls to + Make_If_Statement in expansion with Make_Implicit_If_Statement. + +2013-04-11 Eric Botcazou + + * ali.adb: Fix minor typo. + +2013-04-11 Thomas Quinot + + * exp_ch4.adb (Find_Enclosing_Context): Add missing case of + N_Procedure_Call_Statement. + +2013-04-11 Robert Dewar + + * debug.adb: Minor comment fix. + +2013-04-11 Johannes Kanig + + * debug.adb: Remove comment for -gnatd.G. + +2013-04-11 Thomas Quinot + + * exp_ch4.adb (Expand_Record_Equality.Suitable_Element): + Remove recursive routine, replace with... + (Expand_Record_Equality.Element_To_Compare): New subroutine, + implement iterative search for next element to compare. + Add explanatory comment in the tagged case. + +2013-04-11 Ed Schonberg + + * sem_ch5.adb: remove spurious warning from non-empty loop. + * sem_ch8.adb (Enclosing_Instance): Make public to other routines + in the package, in order to suppress redundant semantic checks + on subprogram renamings in nested instantiations. + +2013-04-11 Robert Dewar + + * errout.ads: Minor reformatting. + * sem_eval.adb (Why_Not_Static): Now issues continuation messages + (Why_Not_Static): Test for aggregates behind string literals. + * sem_eval.ads (Why_Not_Static): Now issues continuation messages. + +2013-04-11 Robert Dewar + + * exp_ch4.adb (Expand_Concatenation): Wrap expansion in + Expressions_With_Actions. + +2013-04-11 Ed Schonberg + + * sem_ch6.adb (Base_Types_Match): For an actual type in an + instance, the base type may itself be a subtype, so find true + base type to determine compatibility. + +2013-04-11 Robert Dewar + + * s-osprim-mingw.adb, sem_ch3.adb, sem_prag.adb, sem_util.adb. + makeutl.adb, sem_ch8.adb: Minor reformatting. + +2013-04-11 Vincent Celier + + * gnat_ugn.texi: Minor fixes for VMS. + * ug_words: Minor addition: -gnato? => /OVERFLOW_CHECKS=?. + +2013-04-11 Robert Dewar + + * usage.adb (Usage): Minor edit to -gnatW message + +2013-04-11 Robert Dewar + + * exp_aggr.adb (Expand_N_Aggregate): Add circuit for handling + others for string literal case. Also add big ??? comment about + this new code, which should be redundant, but is not. + * sem_eval.adb (Eval_Concatenation): Handle non-static case + properly (Eval_String_Literal): Handle non-static literal properly + +2013-03-20 Tobias Burnus + + * i-fortra.ads: Update comment, add Ada 2012's optional + Star and Kind data types for enhanced interoperability. + +2013-03-16 Eric Botcazou + + * gnatvsn.ads (Library_Version): Bump to 4.9. + +2013-03-08 Cesar Strauss + + PR ada/52123 + * seh_init.c (Raise_From_Signal_Handler): Declare as no-return. + (__gnat_SEH_error_handler): Likewise. Remove final return. + +2013-03-06 Eric Botcazou + + * gcc-interface/trans.c (Attribute_to_gnu): Abort instead of erroring + out for an unimplemented attribute. + +2013-03-06 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_field): Remove the wrapper around + a misaligned integral type if a size is specified for the field. + +2013-03-06 Eric Botcazou + + * gcc-interface/trans.c (Raise_Error_to_gnu) : + Record the unpadded type of the index type on the RCI stack. + +2013-03-06 Eric Botcazou + + * gcc-interface/trans.c (emit_range_check): Assert that the range type + is a numerical type and remove useless local variables. + +2013-02-25 Eric Botcazou + + * gcc-interface/ada-tree.h: Back out change accidentally committed. + +2013-02-21 Jakub Jelinek + + PR bootstrap/56258 + * gnat-style.texi (@title): Remove @hfill. + * projects.texi: Avoid line wrapping inside of @pxref or @xref. + +2013-02-14 Rainer Emrich + + PR target/52123 + * tracebak.c: Cast from pointer via FARPROC. + +2013-02-07 Simon Wright + + PR target/50678 + * init.c (__darwin_major_version): New function for x86-64/Darwin. + (__gnat_adjust_context_for_raise) [Darwin]: Disable the workaround + on Darwin 12 and above. + +2013-02-06 Rainer Emrich + + PR target/52123 + * adaint.c (__gnat_check_OWNER_ACL): Cast from pointer via + SECURITY_DESCRIPTOR * + (__gnat_set_OWNER_ACL): Cast from DWORD to ACCESS_MODE + (__gnat_portable_spawn): Fix cast to char* const* + (add_handle): Cast from pointer via void ** + (add_handle): Cast from pointer via int * + (__gnat_locate_exec_on_path): Cast from pointer via TCHAR * + (__gnat_locate_exec_on_path): Cast from pointer via char * + * initialize.c (append_arg): Cast from pointer via LPWSTR + (__gnat_initialize): Cast from pointer via LPWSTR + * seh_init.c (__gnat_map_SEH): Cast from pointer via FARPROC + +2013-02-06 Hristian Kirtchev + + * gcc-interface/Make-lang.in: Enable System.Stack_Checking.Operations + target pairs on VxWorks 5 only. + +2013-02-06 Arnaud Charlet + + * gcc-interface/Make-lang.in: Update dependencies. + +2013-02-06 Vincent Celier + + * prj-proc.adb (Process_Aggregated_Projects): Use a new project + node tree for each project tree rooted at an aggregated project. + +2013-02-06 Hristian Kirtchev + + * sem_util.adb (Is_Interface_Conversion): New routine. + (Object_Access_Level): Detect an interface conversion + that has been rewritten into a different construct. Use the + original form of the conversion to find the access level of + the operand. + +2013-02-06 Eric Botcazou + + * einfo.ads (Has_Pragma_No_Inline): New flag using Flag201. + (Has_Pragma_No_Inline): Declare and mark as inline. + (Set_Has_Pragma_No_Inline): Likewise. + * einfo.adb (Has_Pragma_No_Inline): New function. + (Set_Has_Pragma_No_Inline): New procedure. + (Write_Entity_Flags): Handle Has_Pragma_No_Inline. + * snames.ads-tmpl (Name_No_Inline): New pragma-related name. + (Pragma_Id): Add Pragma_No_Inline value. + * par-prag.adb (Prag): Handle Pragma_Inline. + * sem_prag.adb (Inline_Status): New enumeration type. + (Process_Inline): Change Active parameter + to Inline_Status and add support for suppressed inlining. + (Analyze_Pragma) : Adjust to above change. + : Likewise. + : Implement new pragma No_Inline. + (Sig_Flags): Add Pragma_No_Inline. + * gnat_rm.texi (Implementation Defined Pragmas): Add No_Inline. + * gnat_ugn.texi (Switches for gcc): Mention Pragma No_Inline. + +2013-02-06 Pascal Obry + + * s-osprim-mingw.adb (Clock): Make sure we copy all data locally + to avoid interleaved modifications that could happen from another + task calling Get_Base_Data. + (Get_Base_Data): Make it a critical section. Avoid updating if another + task has already done it. + +2013-02-06 Eric Botcazou + + * sem_prag.adb: Minor reformatting. + +2013-02-06 Pascal Obry + + * s-tasloc.ads: Set System.Task_Lock to preelaborate. + +2013-02-06 Eric Botcazou + + * snames.ads-tmpl (Name_Loop_Optimize, Name_No_Unroll, + Name_Unroll, Name_No_Vector, Name_Vector): New pragma-related + names. + (Pragma_Id): Add Pragma_Loop_Optimize value. + * par-prag.adb (Prag): Handle Pragma_Loop_Optimize. + * sem_prag.adb (Check_Loop_Invariant_Variant_Placement): Rename to... + (Check_Loop_Pragma_Placement): ...this. + (Analyze_Pragma) + : Adjust to above renaming. + : Likewise. + : Implement new pragma Loop_Optimize. + (Sig_Flags): Add Pragma_Loop_Optimize. + * gnat_rm.texi (Implementation Defined Pragmas): Add Loop_Optimize. + * gnat_ugn.texi (Vectorization of loops): Mention Loop_Optimize. + +2013-02-06 Robert Dewar + + * osint.ads: Minor fix of typo. + +2013-02-06 Sergey Rybin + + * gnat_ugn.texi: gnatmetric: update the documentation of + complexity metrics for Ada 2012. + +2013-02-06 Javier Miranda + + * exp_disp.adb (Make_Secondary_DT): Code cleanup: + remove useless initialization. + +2013-02-06 Ed Schonberg + + * sem_ch3.adb (Build_Discriminant_Constraints): Do not + generate overflow checks on a discriminant expression if the + discriminant constraint is applied to a private type that has + a full view, because the check will be applied when the full + view is elaborated. Removing the redundant check is not just + an optimization, but it prevents spurious assembler errors, + because of the way the backend generates names for expressions + that require overflow checking. + +2013-02-06 Pascal Obry + + * s-osprim-mingw.adb: Removes workaround for an old GNU/Linker + limitation on Windows. + (DA): Removed. + (LIA): Removed. + (LLIA): Removed. + (TFA): Removed. + (BTA): Removed. + (BMTA): Removed. + (BCA): Removed. + (BMCA): Removed. + (BTiA): Removed. + (Clock): Use variable corresponding to access. + (Get_Base_Time): Likewise. + (Monotonic_Clock): Likewise. + +2013-02-06 Vincent Celier + + * make.adb (Gnatmake): When gnatmake is called with a project + file, do not invoke gnatbind with -I-. + * makeutl.adb (Create_Binder_Mapping_File): Rewrite function. Get + the infos from all the sources. + +2013-02-06 Ed Schonberg + + * snames.ads-tmpl: Add Name_Overriding_Renamings and pragma + Overriding_Renamings. + * par-prag.adb: Recognize pragma Overriding_Renamings. + * opt.ads (Overriding_Renamings): flag to control compatibility + mode with Rational compiler, replaces Rational_Profile flag. + * sem_ch8.adb (Analyze_Subprogram_Renaming): When + Overriding_Renamings is enabled, accept renaming declarations + where the new subprogram renames and overrides a locally inherited + operation. Improve error message for some illegal renamings. + * sem_prag.adb (Analyze_Pragma): Add case for Overriding_Renamings. + (Set_Rational_Profile): The Rational_Profile enables + Overriding_Renamings, Implicit_Packing, and Use_Vads_Size. + +2013-02-06 Ed Schonberg + + * sem_util.adb: Set parent of copied aggregate component, to + prevent infinite loop. + +2013-02-06 Robert Dewar + + * sem_ch3.adb, sem_ch10.adb: Minor reformatting. + * exp_disp.adb: Minor comment update. + * comperr.ads, osint.ads, rtsfind.adb, sem_prag.adb: Minor addition of + No_Return pragmas. + +2013-02-06 Thomas Quinot + + * targparm.ads, sem_ch13.adb (Support_Nondefault_SSO): New target + parameter, defaulted to False for now, indicates targets where + non-default scalar storage order may be specified. + +2013-02-06 Thomas Quinot + + * sprint.adb (Write_Itype): Treat E_Record_Subtype_With_Private + same as E_Record_Subtype. Display E_Class_Wide_Subtype as + subtype, not type. + +2013-02-06 Hristian Kirtchev + + * sem_ch3.adb (Complete_Private_Subtype): Inherit the + Has_Unknown_Discriminants from the full view of the base type. + +2013-02-06 Tristan Gingold + + * raise-gcc.c: Remove useless includes (sys/stat.h, adaint.h) + Enclosing debugging functions within #ifndef inhibit_libc to + support builds without full C headers. + +2013-02-06 Thomas Quinot + + * gnat_rm.texi: Add a minimal example of Scalar_Storage_Order. + +2013-02-06 Hristian Kirtchev + + * sem_ch10.adb (Install_Limited_Withed_Unit): Add a missing + check to detect a parent-child relationship between two units in + order to correctly bypass the installation of a limited view. In + other words, the comment on the intended usage of the check was + correct, but the code itself did not reflect the behavior. + +2013-02-06 Javier Miranda + + * exp_ch5.adb (Expand_N_Assignment_Statement): Do not generate the + runtime check on assignment to tagged types if compiling with checks + suppressed. + +2013-02-06 Robert Dewar + + * exp_util.adb, checks.adb, sem_ch12.adb, sem_res.adb, prj-conf.adb, + s-os_lib.adb: Minor reformatting + +2013-02-06 Vincent Celier + + * ug_words: Add -gnateY = /IGNORE_STYLE_CHECKS_PRAGMAS. + +2013-02-06 Ed Schonberg + + * snames.ads-tmpl: Add Name_Rational and pragma Rational. + * par-prag.adb: Recognize pragma Rational. + * opt.ads (Rational_Profile): flag to control compatibility mode + with Rational compiler. + * sem_ch8.adb (Analyze_Subprogram_Renaming): When Rational profile + is enable, accept renaming declarations where the new subprogram + and the renamed entity have the same name. + * sem_prag.adb (analyze_pragma): Add pragma Rational, and recognize + Rational as a profile. + +2013-02-06 Hristian Kirtchev + + * exp_ch5.adb (Expand_Loop_Entry_Attributes): When + dealing with a for loop that iterates over a subtype indication + with a range, use the low and high bounds of the subtype. + +2013-02-06 Nicolas Roche + + * s-os_lib.adb (Normalize_Arguments): Arguments containing tabs should + be quoted + +2013-02-06 Vincent Celier + + * prj-conf.adb (Process_Project_And_Apply_Config): New variable + Conf_Project. New recursive procedure Check_Project to find a non + aggregate project and put its Project_Id in Conf_Project. Fails if + no such project can be found. + (Get_Or_Create_Configuration_File): New parameter Conf_Project. + (Do_Autoconf): Use project directory of project Conf_Project to store + the generated configuration project file. + * prj-conf.ads (Get_Or_Create_Configuration_File): New parameter + Conf_Project. + +2013-02-06 Javier Miranda + + * sem_res.adb (Resolve_Actuals): Generate a read + reference for out-mode parameters in the cases specified by + RM 6.4.1(12). + +2013-02-06 Hristian Kirtchev + + * sem_attr.adb (Resolve_Attribute): Do not resolve the prefix of + Loop_Entry, instead wait until the attribute has been expanded. The + delay ensures that any generated checks or temporaries are inserted + before the relocated prefix. + +2013-02-06 Ed Schonberg + + * sem_ch12.adb: Code clean up. + +2013-02-06 Ed Schonberg + + * checks.adb (Apply_Discriminant_Check): Look for discriminant + constraint in full view of private type when needed. + * sem_ch12.adb (Validate_Array_Type_Instance): Specialize + previous patch to components types that are private and without + discriminants. + +2013-02-06 Hristian Kirtchev + + * exp_ch4.adb (Find_Enclosing_Context): Recognize + a simple return statement as one of the cases that require special + processing with respect to temporary controlled function results. + (Process_Transient_Object): Do attempt to finalize a temporary + controlled function result when the associated context is + a simple return statement. Instead, leave this task to the + general finalization mechanism. + +2013-02-06 Thomas Quinot + + * einfo.ads: Minor reformatting. + (Status_Flag_Or_Transient_Decl): Add ??? comment. + +2013-02-06 Hristian Kirtchev + + * exp_ch4.adb (Expand_N_Expression_With_Actions): Rewritten. This + routine should be able to properly detect controlled transient + objects in its actions and generate the appropriate finalization + actions. + * exp_ch6.adb (Enclosing_Context): Removed. + (Expand_Ctrl_Function_Call): Remove local subprogram and + constant. Use routine Within_Case_Or_If_Expression to determine + whether the lifetime of the function result must be extended to + match that of the context. + * exp_util.ads, exp_util.adb (Within_Case_Or_If_Expression): New + routine. + +2013-02-06 Ed Schonberg + + * sem_ch12.adb (Validate_Array_Type_Instance): Extend check + for subtype matching of component type of formal array type, + to avoid spurious error when component type is a separate actual + in the instance, and there may be a discrepancy between private + and full view of component type. + +2013-02-06 Robert Dewar + + * s-dim.ads, clean.adb: Minor reformatting. + +2013-02-06 Javier Miranda + + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Undo previous patch. + (Can_Split_Unconstrained_Function): Only split the inlined function if + the compiler generates the code of its body. + +2013-02-06 Robert Dewar + + * exp_prag.adb, sem_ch3.adb, exp_attr.adb, sem_prag.adb, sem_ch6.adb, + exp_intr.adb, exp_dist.adb, sem_ch13.adb: Internal clean up for + N_Pragma nodes. + +2013-02-06 Robert Dewar + + * gnat_rm.texi: Minor text updates for pragma Warning. + +2013-02-06 Geert Bosch + + * s-multip.adb (Number_Of_CPUs): Short-circuit in case of + CPU'Last = 1. + +2013-02-06 Vincent Celier + + * clean.adb (Delete): On VMS use host notation to delete all files. + +2013-02-06 Robert Dewar + + * sem_prag.adb, sem_ch6.adb, prj-conf.adb, erroutc.adb: Minor + reformatting. + +2013-02-06 Gary Dismukes + + * sem_ch6.adb (Check_For_Primitive_Subprogram): Test for + the special case of a user-defined equality that overrides + the predefined equality of a nonderived type declared in a + declarative part. + * sem_util.adb (Collect_Primitive_Operations): Add test for + Is_Primitive when looping over the subprograms following a type, + to catch the case of primitives such as a user-defined equality, + which otherwise won't be found when the type is not a derived + type and is declared in a declarative part. + +2013-02-06 Vincent Celier + + * prj-conf.adb (Check_Target): Always return True when Target + is empty (Get_Or_Create_Configuration_File.Get_Project_Target): + New procedure to get the value of attribute Target in the main + project. + (Get_Or_Create_Configuration_File.Do_Autoconf): No + need to get the value of attribute Target in the main project. + (Get_Or_Create_Configuration_File): Call Get_Project_Target and + use the target fom this call. + +2013-02-06 Eric Botcazou + + * erroutc.adb (Validate_Specific_Warning): Do not issue the + warning about an ineffective Pragma Warnings for -Wxxx warnings. + * sem_prag.adb (Analyze_Pragma) : Accept -Wxxx warnings. + * gnat_rm.texi (Pragma Warnings): Document coordination with + warnings of the GCC back-end. + +2013-02-06 Javier Miranda + + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not build the body + of an inlined function if we do not generate code for the function. + +2013-02-06 Pascal Obry + + * s-os_lib.adb (Locate_Exec_On_Path): Call Normalize_Pathname + with Resolve_Links set to False. + +2013-02-03 Eric Botcazou + + * gcc-interface/decl.c: Include diagnostic-core.h. + (gnat_to_gnu_entity) : Sorry if Reverse_Storage_Order + is set on the entity. + : Likewise. + * gcc-interface/Make-lang.in (ada/decl.o): Add $(DIAGNOSTIC_CORE_H). + +2013-01-29 Ben Brosgol + + * gnat_rm.texi: Fixed typos. Minor edits. + +2013-01-29 Bob Duff + + * a-convec.adb: Minor reformatting. + +2013-01-29 Pascal Obry + + * tempdir.adb, tempdir.ads (Use_Temp_Dir): Set wether to use the temp + directory. + +2013-01-29 Ed Schonberg + + * exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Preserve loop + identifier only if it comes from source. + (Expand_N_Loop_Statement): If the domain of iteration is an + enumeration type with a representation clause, remove from + visibility the loop identifier before rewriting the loop as a + block with a declaration for said identifier. + * sem_util.adb (Remove_Homonym): Handle properly the default case. + +2013-01-29 Vincent Celier + + * prj-proc.adb: Minor comment spelling fix. + +2013-01-29 Pascal Obry + + * prj-proc.adb (Process_Expression_Variable_Decl): Prepend + Project_Path to current environment. + +2013-01-29 Thomas Quinot + + * sprint.adb (Sprint_Node_Actual): Output freeze nodes for + itypes even if Dump_Freeze_Null is not set. + +2013-01-29 Robert Dewar + + * sem_util.adb: Minor reformatting. + * s-rident.ads: Minor comment fixes. + +2013-01-29 Pascal Obry + + * prj-env.ads, prj-env.adb (Add_Directories): Add parameter to + control if the path is prepended or appended. + +2013-01-29 Ed Schonberg + + * sem_ch6.adb (Analyze_Expression_Function): An expression + function declaration is not a subprogram declaration, and thus + cannot appear in a protected definition. + +2013-01-29 Hristian Kirtchev + + * exp_util.adb (Insert_Actions): When new + actions come from the expression of the expression with actions, + then they must be added to the list of existing actions. + +2013-01-29 Eric Botcazou + + * sem_ch3.adb (Analyze_Subtype_Declaration) : For + the subtype of a constrained private type with discriminants + that has got a full view, show that the completion is a clone + of the full view. + +2013-01-29 Javier Miranda + + * errout.ads, errout.adb (Get_Ignore_Errors): New subprogram. + * opt.ads (Warn_On_Overlap): Update documentation. + * sem_aggr.adb (Resolve_Aggregate, Resolve_Extension_Aggregate): + Check function writable actuals. + * sem_ch3.adb (Build_Derived_Record_Type, + Record_Type_Declaration): Check function writable actuals. + * sem_ch4.adb (Analyze_Range): Check function writable actuals. + * sem_ch5.adb (Analyze_Assignment): Remove code of the initial + implementation of AI05-0144. + * sem_ch6.adb (Analyze_Function_Return, + (Analyze_Procedure_Call.Analyze_Call_And_Resolve): Remove code + of the initial implementation of AI05-0144. + * sem_res.adb (Resolve): Remove code of the initial implementation. + (Resolve_Actuals): Call Check_Function_Writable_Actuals and remove call + of the initial implementation. + (Resolve_Arithmetic_Op, Resolve_Logical_Op, + Resolve_Membership_Op): Check function writable actuals. + * sem_util.ad[sb] (Actuals_In_Call): Removed + (Check_Order_Dependence): Removed (Save_Actual): Removed + (Check_Function_Writable_Actuals): New subprogram. + * usage.adb (Usage): Update documentation. + * warnsw.adb (Set_Warning_Switch): Enable warn_on_overlap when + setting all warnings. + +2013-01-29 Robert Dewar + + * a-calend-vms.adb: Minor comment fix. + +2013-01-29 Robert Dewar + + * mlib-utl.adb, gnatlink.adb: Avoid reference to ASCII.Back_Slash + because of casing issues. + * sem_util.ads: Minor comment fix. + * style.adb (Check_Identifier): Set proper casing for entities + in ASCII. + * styleg.adb: Minor comment improvement. + * stylesw.ads (Style_Check_Standard): Fix bad comments. + +2013-01-29 Hristian Kirtchev + + * sem_prag.adb: Add the grammar for pragmas Abstract_State and Global. + (Analyze_Pragma): Push the scope of the related subprogram and install + its formals once before starting the analysis of the [moded] global + list. + +2013-01-29 Pascal Obry + + * prj-proc.adb (Process_Expression_Variable_Decl): Always handle + relative paths in Project_Path as relative to the aggregate + project location. Note that this was what was documented. + +2013-01-29 Vincent Celier + + * gnatcmd.adb: For "gnat stub -P ...", do not check the naming + scheme for Ada, when Ada is not a language for the project. + +2013-01-29 Ed Schonberg + + * sem_ch3.adb (Analyze_Subtype_Declaration): Inherit + Is_Generic_Actual_Type flag in a nested instance. + * sem_ch12.adb (Restore_Private_Views): Preserve + Is_Generic_Actual_Type flag if actual is a Generic_Actual_Type + of an enclosing instance. + * sem_util.adb (Corresponding_Generic_Type): Handle generic actual + which is an actual of an enclosing instance. + * sem_type.adb (Real_Actual): If a generic_actual_type is the + formal of an enclosing generic and thus renames the corresponding + actual, use the actual of the enclosing instance to resolve + spurious ambiguities in instantiations when two formals are + instantiated with the same actual. + +2013-01-29 Robert Dewar + + * gnat_rm.texi: Document all Ada 2005 and Ada 2012 pragmas as + being available as implementation-defined pragmas in earlier + versions of Ada. + +2013-01-29 Vincent Celier + + * clean.adb (Delete): On VMS, delete all versions of the file. + +2013-01-29 Robert Dewar + + * par-ch6.adb (No_Constraint_Maybe_Expr_Func): New procedure. + * par-util.adb (No_Constraint): Undo special handling, moved + to par-ch6.adb. + +2013-01-29 Robert Dewar + + * aspects.ads: Aspect Warnings is implementation defined Add + some other missing entries to impl-defined list Mark Warnings + as GNAT pragma in main list. + * sem_ch8.adb: Process aspects for all cases of renaming + declarations. + +2013-01-29 Robert Dewar + + * sem_ch6.adb (Analyze_Function_Call): Set In_Assertion flag. + * sem_elab.adb (Check_Internal_Call_Continue): Do not issue + warnings about possible elaboration error if call is within + an assertion. + * sinfo.ads, sinfo.adb (In_Assertion): New flag in N_Function_Call node. + +2013-01-29 Robert Dewar + + * a-calend-vms.adb, g-eacodu-vms.adb, g-trasym-vms-alpha.adb, + * s-auxdec-vms-ia64.adb, s-mastop-vms.adb, s-osprim-vms.adb, + s-tasdeb-vms.adb: Replace pragma Interface by pragma Import. + +2013-01-29 Robert Dewar + + * opt.ads (Ignore_Style_Checks_Pragmas): New flag. + * par-prag.adb (Par, case Style_Checks): Recognize + Ignore_Style_Checks_Pragmas. + * sem_prag.adb (Analyze_Pragma, case Style_Checks): Recognize + Ignore_Style_Checks_Pragmas. + * switch-c.adb: Recognize -gnateY switch. + * usage.adb: Add documentation for "-gnateY". + * vms_data.ads: Add IGNORE_STYLE_CHECKS_PRAGMAS (-gnateY). + +2013-01-29 Vincent Celier + + * clean.adb (Clean_Executables): Add Sid component when calling + Queue.Insert. + * make.adb: When inserting in the Queue, add the Source_Id + (Sid) when it is known (Start_Compile_If_Possible): When the + Source_Id is known (Sid), get the path name of the ALI file + (Full_Lib_File) from it, to avoid finding old ALI files in other + object directories. + * makeutl.ads (Source_Info): New Source_Id component Sid in + Format_Gnatmake variant. + +2013-01-29 Robert Dewar + + * gnat_ugn.texi: Document -gnateY. + +2013-01-29 Doug Rupp + + * s-osinte-vms.ads, s-taprop-vms.adb, system-vms_64.ads, + system-vms-ia64.ads: Replace pragma Interface by pragma Import. + +2013-01-29 Robert Dewar + + * atree.ads, atree.adb (Node30): New function. + (Set_Node30): New procedure. + (Num_Extension_Nodes): Change to 5 (activate new fields/flags). + * atree.h: Add macros for Field30 and Node30. + * einfo.ads, einfo.adb: Move some fields to avoid duplexing. + * treepr.adb (Print_Entity_Information): Print fields 30-35. + +2013-01-29 Robert Dewar + + * sem_prag.adb (Analyze_Pragma, case Interface): Consider to + be a violation of No_Obsolescent_Features even in Ada 95. Also + generates a warning in -gnatwj mode. + (Analyze_Pragma, case Interface_Name): Generates a warning in -gnatwj + mode. + * gnat_ugn.texi: Additional documentation on -gnatwj and pragma + Interface[_Name]. + +2013-01-29 Vincent Celier + + * snames.ads-tmpl: Add new standard name Trailing_Switches. + +2013-01-29 Ed Schonberg + + * sem_disp.adb (Check_Controlling_Type): If a designated type T + of an anonymous access type is a limited view of a tagged type, + it can be a controlling type only if the subprogram is in the + same scope as T. + +2013-01-29 Vincent Celier + + * gnatcmd.adb: Use the project where the config pragmas file is + declared to get its path. + +2013-01-29 Vincent Celier + + * prj-attr.adb: New attribute Linker'Trailing_Switches. + +2013-01-22 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu) : Do + not translate the Etype of the node before translating the Actions. + +2013-01-22 Eric Botcazou + + * gcc-interface/trans.c (Pragma_to_gnu) : Use optimize_size + instead of optimize and adjust warning message. + (Compilation_Unit_to_gnu): Process pragmas preceding the unit. + +2013-01-22 Tristan Gingold + + * gcc-interface/gigi.h (ADT_unhandled_except_decl, + ADT_unhandled_others_decl): New. + (unhandled_others_decl, unhandled_except_decl): Define. + * gcc-interface/trans.c: Include common/common-target.h. + (gigi): Initialize them. + (Subprogram_Body_to_gnu): On SEH targets, wrap the body of the main + function in a try/catch clause. + +2013-01-11 Eric Botcazou + + * gcc-interface/Make-lang.in (COMMON_ADAFLAGS): Remove -gnata. + (CHECKING_ADAFLAGS): New. + (ALL_ADAFLAGS): Include CHECKING_ADAFLAGS. + +2013-01-10 Eric Botcazou + + * gcc-interface/config-lang.in (boot_language_boot_flags): Delete. + * gcc-interface/Make-lang.in (BOOT_ADAFLAGS): Likewise. + +2013-01-07 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Adjust + comment about type extension with discriminants. + : Remove useless test and reorder conditions. + (elaborate_entity) : Likewise. + +2013-01-07 Richard Biener + + PR ada/864 + * gcc-interface/Make-lang.in (ada.install-common): Always apply + program_transform_name. + +2013-01-06 Eric Botcazou + + * gnatvsn.ads (Current_Year): Bump to 2013. + +2013-01-06 Olivier Hainque + + * gcc-interface/decl.c (gnat_to_gnu_field): Emit a specialized + diagnostic for component size mismatch wrt volatile requirements. + Add a gcc_unreachable() at the end of the checks for size. Split + the check on volatile for positions into one check on atomic and + a subsequent one on volatile. + +2013-01-06 Eric Botcazou + + * gcc-interface/decl.c (elaborate_entity) : Delete. + +2013-01-06 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Do not + pack the field of the record type made for a misaligned type. + +2013-01-06 Eric Botcazou + + * gcc-interface/decl.c (annotate_value) : Be prepared + for discriminants inherited from parent record types. + +2013-01-04 Robert Dewar + + * warnsw.adb: Minor fixes to -gnatw.d handling. + +2013-01-04 Robert Dewar + + * einfo.adb, atree.adb: Enlarge entities to make 63 more flags, 6 more + fields. + +2013-01-04 Joel Brobecker + + * gnat_ugn.texi: Fix typo. + +2013-01-04 Robert Dewar + + * gnat_rm.texi: Document alignment choice for subtypes. + +2013-01-04 Robert Dewar + + * validsw.ads: Minor fix to comment. + +2013-01-04 Doug Rupp + + * Makefile.rtl (GNATRTL_NONTASKING_OBJS, + GNATRTL_ALTIVEC_OBJS): Factor g-al* objects. + * gcc-interface/Makefile.in (ADA_EXCLUDE_SRCS): Add g-al* sources. + (GNATRTL_ALTIVEC_OBJS): Override to null for VMS. + Rename leon vxworks toolchain as leon-wrs-vxworks. + * gcc-interface/Make-lang.in: Update dependencies + +2013-01-04 Pascal Obry + + * prj.ads (For_Each_Source): Add Locally_Removed parameter. + (Source_Iterator): Add Locally_Removed field. + * prj.adb (For_Each_Source): Ignore Locally_Removed files if needed. + (Next): Likewise. + +2013-01-04 Robert Dewar + + * exp_attr.adb: Minor reformatting. + +2013-01-04 Robert Dewar + + * checks.adb (Insert_Valid_Check): Fix handling of renamed + packed array element. + * exp_ch4.adb (Expand_Concatenate): Fix some missing parent + fields in generated code. + * exp_util.adb (Side_Effect_Free): Improve detection of cases + needing renaming. + +2013-01-04 Robert Dewar + + * sinfo.ads: Clean up order of N_xxx subtypes + +2013-01-04 Vincent Celier + + * prj-conf.adb (Check_Target): Allow --autoconf= with no target. + +2013-01-04 Robert Dewar + + * types.ads, prj-conf.adb, par-tchk.adb: Minor reformatting. + +2013-01-04 Robert Dewar + + * par-ch6.adb (P_Subprogram): Better handling of missing IS + after expression function. + * par-util.adb (No_Constraint): Improve handling to avoid bad warnings. + +2013-01-04 Robert Dewar + + * exp_util.ads, exp_util.adb (Insert_Actions): In expression with + actions case, new actions are appended to the sequence rather than + prepended. + +2013-01-04 Robert Dewar + + * gnat_ugn.texi: Document -gnatw.d/w.D (does no apply in VMS mode). + * usage.adb: Add lines for -gnatw.d/w.D switches. + * warnsw.adb: Minor fixes (some missing cases of setting + Warning_Doc_Switch). Reject -gnatw.d and -gnatw.D in VMS mode. + +2013-01-04 Robert Dewar + + * exp_util.adb (Remove_Side_Effects): Make sure scope suppress + is restored on exit. + +2013-01-04 Robert Dewar + + * usage.adb: Document -gnateF (check overflow for predefined Float). + +2013-01-04 Robert Dewar + + * sem_res.adb (Resolve_Type_Conversion): Remove incorrect + prevention of call to Apply_Type_Conversion_Checks, which resulted + in missing check flags in formal mode. + +2013-01-04 Vincent Celier + + * makeutl.ads (Db_Switch_Args): New table used by gprbuild. + * prj-conf.adb (Check_Builder_Switches): Check for switches + --config= (Get_Db_Switches): New procedure to get the --db + switches so that they are used when invoking gprconfig in + auto-configuration. + (Do_Autoconf): When invoking gprconfig, use the --db switches, if any. + +2013-01-04 Pascal Obry + + * prj-nmsc.adb: Minor reformatting. + +2013-01-04 Vincent Celier + + * makeutl.ads (Root_Environment): New variable, moved rom + gprbuild (Load_Standard_Base): New Boolean variable, moved + from gprbuild. + * prj-conf.adb (Check_Builder_Switches): New procedure to check + for switch --RTS in package Builder. If a runtime specified + by --RTS is a relative path name, but not a base name, then + find the path on the Project Search Path. + (Do_Autoconf): Call Check_Builder_Switches. + (Locate_Runtime): New procedure, moved from gprbuild, to get the + absolute paths of runtimes when they are not specified as a base name. + * prj-conf.ads (Locate_Runtime): New procedure, moved from gprbuild. + +2013-01-04 Ed Schonberg + + * sem_ch3.adb (Build_Private_Derived_Type): Set + Has_Private_Ancestor on type derived from an untagged private + type whose full view has discriminants + * sem_aggr.adb (Resolve_Record_Aggregate): Reject non-extension + aggregate for untagged record type with private ancestor. + +2013-01-04 Thomas Quinot + + * sem_elab.adb, sem_ch3.adb: Minor reformatting. + +2013-01-04 Robert Dewar + + * table.adb: Minor reformatting. + +2013-01-04 Ed Schonberg + + * sem_ch10.adb (Check_Redundant_Withs): A with_clause that does + not come from source does not generate a warning for redundant + with_clauses. + +2013-01-04 Hristian Kirtchev + + * aspects.adb, aspects.ads: Add Aspect_Global to all relevant tables. + * par-prag.adb: Add pragma Global to the list of pragmas that + do not need special processing by the parser. + * sem_ch13.adb (Analyze_Aspect_Specifications): Convert aspect + Global into a pragma without any form of legality checks. The + work is done by Analyze_Pragma. The aspect and pragma are both + marked as needing delayed processing. Insert the corresponding + pragma of aspect Abstract_State in the visible declarations of the + related package. + (Check_Aspect_At_Freeze_Point): Aspect Global + does not need processing even though it is marked as delayed. + Alphabetize the list on aspect names. + * sem_prag.adb: Add a value for pragma Global in table Sig_Flags. + (Analyze_Pragma): Add ??? comment about the grammar of pragma + Abstract_State. Move the error location from the pragma to the + state to improve the quality of error placement. Add legality + checks for pragma Global. + * snames.ads-tmpl Add the following specially recognized names + +2013-01-04 Eric Botcazou + + * sem_ch3.adb: Fix minor typo. + +2013-01-04 Ed Schonberg + + * par-ch13.adb (Aspect_Specifications_Present): In Strict mode, + accept an aspect name followed by a comma, indicating a defaulted + boolean aspect. + +2013-01-04 Joel Brobecker + + * gnat_ugn.texi: Document procedure to codesign GDB on Darwin. + Update doc on gnattest --separates switch. + +2013-01-04 Thomas Quinot + + * s-chepoo.ads: Minor reformatting. + +2013-01-04 Arnaud Charlet + + * usage.adb: Remove mention of -gnatN in usage. + +2013-01-04 Robert Dewar + + * exp_prag.adb, gnatcmd.adb, exp_util.adb, table.adb, sem_prag.adb, + freeze.adb, sem_ch4.adb, sem_warn.adb, opt.ads, exp_aggr.adb, + prj-conf.adb, sem_ch13.adb: Minor reformatting. + +2013-01-04 Thomas Quinot + + * sinfo.ads: Minor documentation update. + +2013-01-04 Thomas Quinot + + * sem_ch3.adb, einfo.adb (Analyze_Object_Declaration): Do not set Ekind + before resolving initialization expression. + +2013-01-04 Hristian Kirtchev + + * checks.adb (Generate_Index_Checks): Delay the generation of + the check for an indexed component where the prefix mentions + Loop_Entry until the attribute has been properly expanded. + * exp_ch5.adb (Expand_Loop_Entry_Attributes): Perform minor + decoration of the constant that captures the value of Loop_Entry's + prefix at the entry point into a loop. Generate index checks + for an attribute reference that has been transformed into an + indexed component. + +2013-01-04 Thomas Quinot + + * exp_prag.adb, exp_util.adb, exp_util.ads, freeze.adb, exp_aggr.adb, + sem_ch13.adb (Exp_Aggr.Collect_Initialization_Statements): Nothing to + do if Obj is already frozen. + (Exp_Util.Find_Init_Call): Rename to... + (Exp_Util.Remove_Init_Call): New subprogram, renamed from + Find_Init_Call. Remove the initialization call from the enclosing + list if found, and if it is from an Initialization_Statements + attribute, reset it. + (Exp_Util.Append_Freeze_Action): Minor code reorganization. + (Exp_Util.Append_Freeze_Actions): Ensure a freeze node has been + allocated (as is already done in Append_Freeze_Action). + (Freeze.Freeze_Entity): For an object with captured + Initialization_Statements and non-delayed freezeing, unwrap the + initialization statements and insert and them directly in the + enclosing list. + (Sem_Ch13.Check_Address_Clause): For an object + with Initialization_Statements and an address clause, unwrap the + initialization statements when moving them to the freeze actions. + +2013-01-03 Pascal Obry + + * prj-attr.adb, projects.texi, snames.ads-tmpl: Add package remote and + corresponding attibutes. + +2013-01-03 Thomas Quinot + + * exp_aggr.adb: Minor comment improvement. + +2013-01-03 Hristian Kirtchev + + * aspects.adb, aspects.ads: Add Aspect_Abstract_State to all the + relevant tables. + * einfo.ads, einfo.adb: Add Integrity_Level and Refined_State to + the description of fields (Abstract_States): New routine. + (Integrity_Level): New routine. + (Has_Property): New routine. + (Is_Input_State): New routine. + (Is_Null_State): New routine. + (Is_Output_State): New routine. + (Is_Volatile_State): New routine. + (Refined_State): New routine. + (Set_Abstract_States): New routine. + (Set_Integrity_Level): New routine. + (Set_Refined_State): New routine. + (Write_Field8_Name): Add proper output for E_Abstract_State. + (Write_Field9_Name): Add proper output for E_Abstract_State. + (Write_Field25_Name): Add proper output for E_Package. + * lib-xref.ads: Add new letter for an abstract state. + * par-prag.adb: Add pragma Abstract_State to the list of pragma + that do not need special processing by the parser. + * sem_ch13.adb (Analyze_Aspect_Specifications): Convert + aspect Abstract_State into a pragma without any form + of legality checks. The work is done by Analyze_Pragma. + (Check_Aspect_At_Freeze_Point): Aspect Abstract_State does not + require delayed analysis. + * sem_prag.adb: Add a value for pragma Abstract_State in table + Sig_Flags. + (Analyze_Pragma): Add legality checks for pragma + Abstract_State. Analysis of individual states introduces a state + abstraction entity into the visibility chain. + * snames.ads-tmpl: Add new names for abstract state and + integrity. Add new pragma id for abstract state. + +2013-01-03 Bob Duff + + * table.adb (Reallocate): Calculate new Length in + Long_Integer to avoid overflow. + +2013-01-03 Thomas Quinot + + * sem_ch3.adb, sinfo.ads, freeze.adb, sem_ch4.adb, exp_aggr.adb + (Sem_Ch3.Analyze_Object_Declaration): Set Ekind early so that + it is set properly when expanding the initialization expression. + (Freeze.Check_Address_Clause): Transfer initialization expression + to an assignment in the freeze actions, so that the object is + initialized only after being elaborated by GIGI. + (Sinfo (comments), Sem_Ch4.Analyze_Expression_With_Actions): Allow + a Null_Statement as the expression in an Expression_With_Actions. + (Exp_Aggr.Collect_Initialization_Statements): New subprogram + shared by expansion of record and array aggregates, used to + capture statements for an aggregate used to initalize an object + into an Expression_With_Actions (which acts as a container for + a list of actions). + (Exp_Aggr.Convert_Aggr_In_Obj_Decl): Use the above to + capture initialization statements, instead of the previously + existing loop which left freeze nodes out of the capturing + construct (causing out of order elaboration crashes in GIGI). + (Exp_Aggr.Expand_Array_Aggregate): Use the above to capture + initialization statements (this was previously not done for + arrays). Also do not unconditionally prevent in place expansion + for an object with address clause. + +2013-01-03 Thomas Quinot + + * gnat_rm.texi, freeze.adb (Check_Component_Storage_Order): Check that + a record extension has the same scalar storage order as the parent type. + +2013-01-03 Thomas Quinot + + * exp_ch4.adb: Add comment. + +2013-01-03 Vincent Celier + + * prj.adb: Minor spelling error correction in comment. + +2013-01-03 Vincent Celier + + * gnatcmd.adb (GNATCmd): If a single main has been specified + as an absolute path, use its simple file name to find specific + switches, instead of the absolute path. + +2013-01-03 Javier Miranda + + * sem_warn.adb (Warn_On_Overlapping_Actuals): For overlapping + parameters that are record types or array types generate warnings + only compiling under -gnatw.i + * opt.ads (Extensions_Allowed): Restore previous documentation. + +2013-01-03 Vincent Celier + + * prj-conf.adb (Do_Autoconf): If Target is specified in the + main project, but not on the command line, use the Target in + the project to invoke gprconfig in auto-configuration. + * makeutl.ads (Default_Config_Name): New constant String. + +2013-01-03 Arnaud Charlet + + * usage.adb: Minor: fix typo in usage. + +2013-01-03 Thomas Quinot + + * sem_ch13.adb (Analyze_Record_Representation_Clause): Reject + an illegal component clause for an inherited component in a + record extension. + +2013-01-03 Emmanuel Briot + + * xref_lib.adb (Parse_Identifier_Info): Fix handling of arrays, which + have information in the ALI file for both the index and the component + types. + +2013-01-03 Emmanuel Briot + + * projects.texi: Fix error in documenting the project path + computed for an aggregate project. + +2013-01-03 Javier Miranda + + * sem_warn.adb (Warn_On_Overlapping_Actuals): Adding documentation + plus restricting the functionality of this routine to cover the + cases described in the Ada 2012 reference manual. The previous + extended support is now available under -gnatX. + * s-tassta.adb (Finalize_Global_Tasks): Addition of a dummy + variable to call Timed_Sleep. Required to avoid warning on + overlapping out-mode actuals. + * opt.ads (Extensions_Allowed): Update documentation. + +2013-01-03 Tristan Gingold + + * s-arit64.ads: Use Multiply_With_Ovflo_Check as __gnat_mulv64. + * arit64.c: Removed + * gcc-interface/Makefile.in: Remove reference to arit64.c. + +2013-01-03 Thomas Quinot + + * checks.adb, checks.ads (Apply_Address_Clause_Check): The check must + be generated at the start of the freeze actions for the entity, not + before (or after) the freeze node. + +2013-01-03 Thomas Quinot + + * exp_aggr.adb (Exp_Aggr.Convert_Aggregate_In_Obj_Decl): + Reorganize code to capture initialization statements in a block, + so that freeze nodes are excluded from the captured block. + +2013-01-03 Thomas Quinot + + * exp_ch11.adb: Minor reformatting. + +2013-01-03 Thomas Quinot + + * exp_util.adb, einfo.adb, einfo.ads, freeze.adb, exp_aggr.adb, + sem_ch13.adb (Einfo.Initialization_Statements, + Einfo.Set_Initialization_Statements): New entity attribute + for objects. + (Exp_Util.Find_Init_Call): Handle case of an object initialized + by an aggregate converted to a block of assignment statements. + (Freeze.Check_Address_Clause): Do not clear Has_Delayed_Freeze + even for objects that require a constant address, because the + address expression might involve entities that have yet to be + elaborated at the point of the object declaration. + (Exp_Aggr.Convert_Aggregate_In_Obj_Decl): For a type that does + not require a transient scope, capture the assignment statements + in a block so that they can be moved down after elaboration of + an address clause if needed. + (Sem_Ch13.Check_Constant_Address_Clause.Check_Expr_Constants, + case N_Unchecked_Conversion): Do not replace operand subtype with + its base type as this violates a GIGI invariant if the operand + is an identifier (in which case the etype of the identifier + is expected to be equal to that of the denoted entity). + +2013-01-03 Javier Miranda + + * sem_util.ads, sem_util.adb (Denotes_Same_Object): Extend the + functionality of this routine to cover cases described in the Ada 2012 + reference manual. + +2013-01-03 Ed Schonberg + + * sem_elab.adb (Set_Elaboration_Constraint): Handle properly + a 'Access attribute reference when the subprogram is called + Initialize. + +2013-01-03 Arnaud Charlet + + * s-tpobop.adb (PO_Do_Or_Queue): Refine assertion, since a + select statement may be called from a controlled (e.g. Initialize) + operation and have abort always deferred. + +2013-01-03 Robert Dewar + + * sem_ch8.adb, einfo.ads, einfo.adb: Minor code reorganization. + +2013-01-03 Javier Miranda + + * exp_ch3.adb (Make_Controlling_Function_Wrappers): Exclude + internal entities associated with interfaces and add minimum + decoration to the defining entity of the generated wrapper to + allow overriding interface primitives. + * sem_disp.ads (Override_Dispatching_Operation): Addition of a + new formal (Is_Wrapper). + * sem_disp.adb (Override_Dispatching_Operation): When overriding + interface primitives the new formal helps identifying that the + new operation is not fully decorated. + +2013-01-03 Thomas Quinot + + * sem_ch7.adb, sem_ch10.adb, einfo.adb, einfo.ads, sem_ch12.adb, + rtsfind.adb, sem_elab.adb, sem_ch4.adb, sem_ch8.adb + (Einfo.Is_Visible_Child_Unit, Einfo.Set_Is_Visible_Child_Unit): + Rename to Is_Visible_Lib_Unit, Set_Is_Visible_Lib_Unit, and + update spec accordingly (now also applies to root library units). + (Sem_Ch10.Analyze_Subunit.Analyze_Subunit_Context): Toggle above flag + on root library units, not only child units. + (Sem_Ch10.Install[_Limited]_Withed_Unit): Same. + (Sem_Ch10.Remove_Unit_From_Visibility): Reset Is_Visible_Lib_Unit + even for root library units. + (Sem_Ch8.Find_Expanded_Name): A selected component form whose prefix is + Standard is an expanded name for a root library unit. + +2013-01-03 Thomas Quinot + + * exp_ch3.adb: Minor reformatting. + +2013-01-03 Olivier Hainque + + * tracebak.c: Reinstate changes to support ppc-lynx178. + +2013-01-03 Ed Schonberg + + * atree.ads: Minor reformatting and documentation enhancement. + +2013-01-03 Ed Schonberg + + * exp_ch3.adb (Expand_N_Object_Declaration): If the object has + a class-wide type and a renaming declaration is created for it, + preserve entity chain, which already contains generated internal + types. This ensures that freezing actions are properly generated + for all objects declared subsequently in the same scope, and + that debugging information is generated for them. + * sem_util.adb, sem_util.ads (we): New debugging routine, to + display entity chain of a given scope. + +2013-01-03 Robert Dewar + + * exp_intr.adb: Minor reformatting. + +2013-01-03 Robert Dewar + + * einfo.adb: Minor reformatting. + +2013-01-03 Pascal Obry + + * adaint.c, adaint.h (__gnat_get_module_name): Removed. + (__gnat_is_module_name_supported): Removed. + * s-win32.ads: Add some needed definitions. + * g-trasym.ads: Update comments. + +2013-01-03 Robert Dewar + + * layout.adb (Set_Composite_Alignment): Fix problems of + interactions with Optimize_Alignment set to Space. + +2013-01-03 Thomas Quinot + + * exp_disp.adb: Minor reformatting. + +2013-01-02 Richard Biener + + PR bootstrap/55784 + * gcc-interface/Makefile.in: Add $(GMPINC) to includes. + +2013-01-02 Thomas Quinot + + * exp_intr.adb (Expand_Dispatching_Constructor_Call): Remove + side effects from Tag_Arg early, doing it too late may cause a + crash due to inconsistent Parent link. + * sem_ch8.adb, einfo.ads: Minor reformatting. + +2013-01-02 Robert Dewar + + * einfo.ads, einfo.adb (Has_Independent_Components): New flag. + * freeze.adb (Size_Known): We do not know the size of a packed + record if it has atomic components, by reference type components, + or independent components. + * sem_prag.adb (Analyze_Pragma, case Independent_Components): Set new + flag Has_Independent_Components. + +2013-01-02 Yannick Moy + + * opt.ads (Warn_On_Suspicious_Contract): Set to True by default. + * usage.adb (Usage): Update usage message. + +2013-01-02 Pascal Obry + + * adaint.c (__gnat_is_module_name_supported): New constant. + +2013-01-02 Ed Schonberg + + * sem_attr.adb (Check_Array_Type): Reject an attribute reference on an + array whose component type does not have a completion. + +2013-01-02 Geert Bosch + + * a-nllcef.ads, a-nlcefu.ads, a-nscefu.ads: Make Pure. + +2013-01-02 Robert Dewar + + * par_sco.adb: Minor reformatting. + +2013-01-02 Javier Miranda + + * sem_aggr.adb (Resolve_Array_Aggregate): Remove dead code. + +2013-01-02 Olivier Hainque + + * a-exctra.ads (Get_PC): New function. + +2013-01-02 Thomas Quinot + + * sem_ch8.adb: Minor reformatting. + +2013-01-02 Thomas Quinot + + * sem_ch7.adb: Minor reformatting. + +2013-01-02 Thomas Quinot + + * freeze.adb (Check_Component_Storage_Order): Do not crash on + _Tag component. + +2013-01-02 Robert Dewar + + * gnat1drv.adb, targparm.adb, targparm.ads: Minor name change: add + On_Target to Atomic_Sync_Default. + +2013-01-02 Robert Dewar + + * sem_warn.adb (Warn_On_Known_Condition): Suppress warning for + comparison of attribute result with constant + * a-ststio.adb, s-direio.adb, s-rannum.adb: Remove unnecessary pragma + Warnings (Off, ".."); + +2013-01-02 Yannick Moy + + * sem_prag.ads: Minor correction of comment. + +2013-01-02 Thomas Quinot + + * par_sco.adb (Traverse_Package_Declaration): The first + declaration in a nested package is dominated by the preceding + declaration in the enclosing scope. + +2013-01-02 Pascal Obry + + * adaint.c, adaint.h (__gnat_get_module_name): Return the actual + module containing a given address. + +2013-01-02 Thomas Quinot + + * sem_ch3.adb: Minor reformatting. + +2013-01-02 Pascal Obry + + * cstreams.c (__gnat_ftell64): New routine. Use _ftelli64 on + Win64 and default to ftell on other platforms. + (__gnat_fsek64): Likewise. + * i-cstrea.ads: Add fssek64 and ftell64 specs. + * s-crtl.ads: Likewise. + * a-ststio.adb, s-direio.adb (Size): Use 64 bits version when required. + (Set_Position): Likewise. + +2013-01-02 Thomas Quinot + + * par_sco.adb: Generate X SCOs for default expressions in + subprogram body stubs. Do not generate any SCO for package, + task, or protected body stubs. + +2013-01-02 Ed Schonberg + + * sem_ch3.adb: Further improvement to ASIS mode for anonymous + access to protected subprograms. + +2013-01-02 Robert Dewar + + * par_sco.adb, vms_data.ads: Minor reformatting. + +2013-01-02 Thomas Quinot + + * par_sco.adb (Traverse_Declarations_Or_Statement): Function + form, returning value of Current_Dominant upon exit, for chaining + purposes. + (Traverse_Declarations_Or_Statement.Traverse_One, case + N_Block_Statement): First statement is dominated by last declaration. + (Traverse_Subprogram_Or_Task_Body): Ditto. + (Traverse_Package_Declaration): First private + declaration is dominated by last visible declaration. + (Traverse_Sync_Definition): Ditto. + +2013-01-02 Thomas Quinot + + * gnat_rm.texi: Restrict the requirement for Scalar_Storage_Order + matching Bit_Order to record types only, since array types do not + have a Bit_Order. + +2013-01-02 Vincent Celier + + * gnat_ugn.texi: Remove documentation of -gnateO, which is an + internal switch. + * usage.adb: Indicate that -gnateO is an internal switch. + +2013-01-02 Thomas Quinot + + * par_sco.adb: Add SCO generation for task types and single + task declarations. + * get_scos.adb: When adding an instance table entry for a + non-nested instantiation, make sure the Enclosing_Instance is + correctly set to 0. + +2013-01-02 Hristian Kirtchev + + * sem_attr.adb (Analyze_Attribute): Skip the special _Parent + scope generated for subprogram inlining purposes while trying + to locate the enclosing function. + * sem_prag.adb (Analyze_Pragma): Preanalyze the boolean + expression of pragma Postcondition when the pragma comes from + source and appears inside a subprogram body. + +2013-01-02 Thomas Quinot + + * switch-c.adb, fe.h, back_end.adb: Enable generation of instantiation + information in debug info unconditionally when using -fdump-scos, + instead of relying on a separate command line switch -fdebug-instances. + * gcc-interface/Make-lang.in: Update dependencies. + +2013-01-02 Ed Schonberg + + * sem_ch12.adb: Additional refinement of predicate. + +2013-01-02 Vincent Celier + + * vms_data.ads: Remove incorrect spaces at end of descriptions + of qualifiers for single switch. + +2013-01-02 Ben Brosgol + + * gnat_rm.texi: Minor edits / wordsmithing in section on pragma + Check_Float_Overflow. + +2013-01-02 Thomas Quinot + + * sprint.adb (Sprint_Node_Actual): Do not add extra parens for + a conditional expression (CASE or IF expression) that already + has parens. Also omit ELSE keyword for an IF expression without + an ELSE part. + +2013-01-02 Thomas Quinot + + * gnat1drv.adb (Adjust_Global_Switches): Adjust back-end + flag_debug_instances here, after front-end switches have been + processed. + +2013-01-02 Vincent Celier + + * usage.adb: Minor reformatting. + +2013-01-02 Arnaud Charlet + + * opt.ads: Fix typo. + +2013-01-02 Thomas Quinot + + * par_sco.adb: Generate P decision SCOs for SPARK pragmas + Assume and Loop_Invariant. + +2013-01-02 Robert Dewar + + * vms_data.ads: Add entry for Float_Check_Valid (-gnateF). + * ug_words: Add entry for Float_Check_Overflow. + * usage.adb: Minor reformatting. + * gnat_ugn.texi: Add documentation for -gnateF (Check_Float_Overflow). + +2013-01-02 Vincent Celier + + * gnat_ugn.texi: Add documentation for switches -gnateA, -gnated, + -gnateO=, -gnatet and -gnateV. + * ug_words: Add qualifiers equivalent to -gnateA, -gnated, + -gnatet and -gnateV. + * usage.adb: Add lines for -gnatea, -gnateO and -gnatez. + * vms_data.ads: Add new compiler qualifiers /ALIASING_CHECK + (-gnateA), /DISABLE_ATOMIC_SYNCHRONIZATION (-gnated), + /PARAMETER_VALIDITY_CHECK (-gnateV) and /TARGET_DEPENDENT_INFO + (-gnatet). + +2013-01-02 Robert Dewar + + * checks.adb (Apply_Scalar_Range_Check): Implement Check_Float_Overflow. + * opt.ads, opt.adb: Handle flags Check_Float_Overflow[_Config]. + * par-prag.adb: Add dummy entry for pragma Check_Float_Overflow. + * sem_prag.adb: Implement pragma Check_Float_Overflow. + * snames.ads-tmpl: Add entries for pragma Check_Float_Overflow. + * switch-c.adb: Recognize -gnateF switch. + * tree_io.ads: Update ASIS version number. + * gnat_rm.texi: Add documentation of pragma Check_Float_Overflow. + +2013-01-02 Robert Dewar + + * checks.adb, exp_ch4.adb, exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, + exp_disp.adb, exp_dist.adb, exp_intr.adb, exp_prag.adb, exp_util.adb, + freeze.adb, gnat1drv.adb, inline.adb, layout.adb, lib-xref.adb, + par-ch10.adb, par-labl.adb, par-load.adb, par-util.adb, restrict.adb, + sem_ch13.adb, sem_ch4.adb, sem_ch6.adb, sem_dim.adb, sem_elab.adb, + sem_res.adb, sem_warn.adb, sinput-l.adb: Add tags to warning messages. + * sem_ch6.ads, warnsw.ads, opt.ads: Minor comment updates. + +2013-01-02 Robert Dewar + + * err_vars.ads: Minor comment fix. + +2013-01-02 Ed Schonberg + + * sem_ch12.adb: Refine predicate. + +2013-01-02 Robert Dewar + + * errout.ads: Minor comment fixes. + * opt.ads: Minor comment additions. + * exp_aggr.adb: Add tags to warning messages + * exp_ch11.adb, exp_ch3.adb, exp_ch4.adb, exp_util.adb, sem_aggr.adb, + sem_attr.adb, sem_case.adb, sem_cat.adb, sem_ch3.adb, sem_ch4.adb, + sem_ch5.adb, sem_disp.adb, sem_dist.adb, sem_elab.adb, sem_eval.adb, + sem_intr.adb, sem_mech.adb, sem_prag.adb, sem_res.adb, sem_util.adb, + sem_warn.adb: Add tags to warning messages + +2013-01-02 Doug Rupp + + * init.c [VMS] Remove subtest on reason mask for ACCVIO that is a C_E. + +2013-01-02 Ed Schonberg + + * sem_ch12.adb: Recover source name for renamed packagea. + +2013-01-02 Robert Dewar + + * errout.adb (Set_Msg_Insertion_Warning): Correct typo causing + tests to fail if insertion sequence is at end of message string. + * opt.ads: Minor comment fixes and additions. + * sem_ch7.adb, sem_ch8.adb, sem_ch9.adb, sem_ch10.adb, sem_ch11.adb, + sem_ch12.adb, sem_ch13.adb: Add tags to warning messages. + * sem_ch6.ads, sem_ch6.adb (Cannot_Inline): Deal with warning message + tags. Add tags to warning messages. + +2013-01-02 Robert Dewar + + * err_vars.ads (Warning_Doc_Switch): New flag. + * errout.adb (Error_Msg_Internal): Implement new warning flag + doc tag stuff (Set_Msg_Insertion_Warning): New procedure. + * errout.ads: Document new insertion sequences ?? ?x? ?.x? + * erroutc.adb (Output_Msg_Text): Handle ?? and ?x? warning doc + tag stuff. + * erroutc.ads (Warning_Msg_Char): New variable. + (Warn_Chr): New field in error message object. + * errutil.adb (Error_Msg): Set Warn_Chr in error message object. + * sem_ch13.adb: Minor reformatting. + * warnsw.adb: Add handling for -gnatw.d and -gnatw.D + (Warning_Doc_Switch). + * warnsw.ads: Add handling of -gnatw.d/.D switches (warning + doc tag). + +2013-01-02 Robert Dewar + + * opt.ads: Minor reformatting. + +2013-01-02 Doug Rupp + + * init.c: Reorganize VMS section. + (scan_condtions): New function for scanning condition tables. + (__gnat_handle_vms_condtion): Use actual exception name for imported + exceptions vice IMPORTED_EXCEPTION. + Move condition table scanning into separate function. Move formerly + special handled conditions to system condition table. Use SYS$PUTMSG + output to fill exception message field for formally special handled + condtions, in particular HPARITH to provide more clues about cause and + location then raised from the translated image. + +2013-01-02 Thomas Quinot + + * sem_ch13.adb (Analyze_Aspect_Specifications): For a Pre/Post + aspect that applies to a library subprogram, prepend corresponding + pragma to the Pragmas_After list, in order for split AND THEN + sections to be processed in the expected order. + +2013-01-02 Thomas Quinot + + * exp_prag.adb (Expand_Pragma_Check): The statements generated + for the pragma must have the sloc of the pragma, not the + sloc of the condition, otherwise this creates anomalies in the + generated debug information that confuse coverage analysis tools. + +2013-01-02 Thomas Quinot + + * sem_ch13.adb: Minor reformatting. + +2013-01-02 Arnaud Charlet + + * g-excact.ads (Core_Dump): Clarify that this subprogram does + not dump cores under Windows. + +2013-01-02 Ed Schonberg + + * sem_ch8.adb (Analyze_Primitive_Renamed_Operation): The prefixed + view of a subprogram has convention Intrnnsic, and a renaming + of a prefixed view cannot be the prefix of an Access attribute. + +2013-01-02 Robert Dewar + + * restrict.adb: Minor reformatting. + +2013-01-02 Thomas Quinot + + * exp_prag.adb: Minor reformatting. + +2013-01-02 Ed Schonberg + + * sem_ch12.adb (Get_Associated_Node): If the node is an + identifier that denotes an unconstrained array in an object + declaration, it is rewritten as the name of an anonymous + subtype whose bounds are given by the initial expression in the + declaration. When checking whether that identifier is global + reference, use the original node, not the local generated subtype. + +2013-01-02 Olivier Hainque + + * tracebak.c: Revert previous change, incomplete. + +2013-01-02 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specifications): If the aspect + appears on a subprogram body that acts as a spec, place the + corresponding pragma in the declarations of the body, so that + e.g. pre/postcondition checks can be generated appropriately. + +2013-01-02 Robert Dewar + + * sem_ch3.adb: Minor reformatting and code reorganization. + +2013-01-02 Vincent Celier + + * switch-m.adb (Normalize_Compiler_Switches): Record the + complete switch -fstack-check=specific instead of its shorter + alias -fstack-check. + +2013-01-02 Ed Schonberg + + * sem_ch3.adb (Derive_Subprogram): Enforce RM 6.3.1 (8): + if the derived type is a tagged generic formal type with + unknown discriminants, the inherited operation has convention + Intrinsic. As such, the 'Access attribute cannot be applied to it. + +2013-01-02 Thomas Quinot + + * sem_attr.adb: Minor reformatting. + +2013-01-02 Thomas Quinot + + * par_sco.adb: Add SCO generation for S of protected types and + single protected object declarations. + +2013-01-02 Robert Dewar + + * sem_eval.adb, osint.ads: Minor reformatting. + +2013-01-02 Hristian Kirtchev + + * sem_prag.adb (Analyze_Pragma): Check the legality of pragma Assume. + +2013-01-02 Thomas Quinot + + * sem_eval.adb (Compile_Time_Compare): For static operands, we + can perform a compile time comparison even if in preanalysis mode. + +2013-01-02 Thomas Quinot + + * par_sco.adb (SCO_Record): Always use + Traverse_Declarations_Or_Statements to process the library level + declaration, so that SCOs are properly generated for its aspects. + +2013-01-02 Thomas Quinot + + * scos.ads (In_Decision): Add missing entry for 'a'. + * sem_prag.adb (Analyze_Pragma, case pragma Check): Omit + call to Set_SCO_Pragma_Enabled for Invariant and Predicate. + * sem_ch13.adb: Minor comment update. + +Copyright (C) 2013 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index edb3886a03a..5c3c0a9eb53 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -7,14 +7,14 @@ @c o @c G N A T _ U G N o @c o -@c Copyright (C) 1992-2013, Free Software Foundation, Inc. o +@c Copyright (C) 1992-2014, Free Software Foundation, Inc. o @c o @c oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo @setfilename gnat_ugn.info @copying -Copyright @copyright{} 1995-2009 Free Software Foundation, +Copyright @copyright{} 1995-2014 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi index 0ab9361bb42..aaed739fb35 100644 --- a/gcc/doc/cpp.texi +++ b/gcc/doc/cpp.texi @@ -10,7 +10,7 @@ @copying @c man begin COPYRIGHT -Copyright @copyright{} 1987-2013 Free Software Foundation, Inc. +Copyright @copyright{} 1987-2014 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/cppinternals.texi b/gcc/doc/cppinternals.texi index f78c4d3b2ea..8b329d6c173 100644 --- a/gcc/doc/cppinternals.texi +++ b/gcc/doc/cppinternals.texi @@ -18,7 +18,7 @@ @ifinfo This file documents the internals of the GNU C Preprocessor. -Copyright (C) 2000-2013 Free Software Foundation, Inc. +Copyright (C) 2000-2014 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -47,7 +47,7 @@ into another language, under the above conditions for modified versions. @page @vskip 0pt plus 1filll @c man begin COPYRIGHT -Copyright @copyright{} 2000-2013 Free Software Foundation, Inc. +Copyright @copyright{} 2000-2014 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice diff --git a/gcc/doc/gcc.texi b/gcc/doc/gcc.texi index 55307cd35ee..1e0fc46d00b 100644 --- a/gcc/doc/gcc.texi +++ b/gcc/doc/gcc.texi @@ -40,7 +40,7 @@ @c %**end of header @copying -Copyright @copyright{} 1988-2013 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2014 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/gccint.texi b/gcc/doc/gccint.texi index a80cc5d4003..889f410c563 100644 --- a/gcc/doc/gccint.texi +++ b/gcc/doc/gccint.texi @@ -26,7 +26,7 @@ @c %**end of header @copying -Copyright @copyright{} 1988-2013 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2014 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi index 00c7d1d4f0e..47972b362e1 100644 --- a/gcc/doc/gcov.texi +++ b/gcc/doc/gcov.texi @@ -4,7 +4,7 @@ @ignore @c man begin COPYRIGHT -Copyright @copyright{} 1996-2013 Free Software Foundation, Inc. +Copyright @copyright{} 1996-2014 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 71aa7fc9866..67586fff446 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -44,7 +44,7 @@ @settitle Installing GCC: GNU Free Documentation License @end ifset -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com @c IMPORTANT: whenever you modify this file, run `install.texi2html' to @@ -69,7 +69,7 @@ @c Part 2 Summary Description and Copyright @copying -Copyright @copyright{} 1988-2013 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2014 Free Software Foundation, Inc. @sp 1 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 42c6ea45915..63bd59e63e4 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -8,7 +8,7 @@ @c man end @c man begin COPYRIGHT -Copyright @copyright{} 1988-2013 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2014 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index e78d6b65f67..fff53db6ce8 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2014-01-02 Tobias Burnus + + * gfortranspec.c (lang_specific_driver): Update copyright notice + dates. + * gfc-internals.texi: Bump @copying's copyright year. + * gfortran.texi: Ditto. + * intrinsic.texi: Ditto. + * invoke.texi: Ditto. + 2014-01-02 Janus Weil PR fortran/59654 diff --git a/gcc/fortran/gfc-internals.texi b/gcc/fortran/gfc-internals.texi index b26571f7f6d..44516a039dd 100644 --- a/gcc/fortran/gfc-internals.texi +++ b/gcc/fortran/gfc-internals.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename gfc-internals.info -@set copyrights-gfortran 2007-2013 +@set copyrights-gfortran 2007-2014 @include gcc-common.texi diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index f2f2c80c29d..cb7fde277e7 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename gfortran.info -@set copyrights-gfortran 1999-2013 +@set copyrights-gfortran 1999-2014 @include gcc-common.texi diff --git a/gcc/fortran/gfortranspec.c b/gcc/fortran/gfortranspec.c index 107f33809a5..a6296efbf4d 100644 --- a/gcc/fortran/gfortranspec.c +++ b/gcc/fortran/gfortranspec.c @@ -1,5 +1,5 @@ /* Specific flags and argument handling of the Fortran front-end. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. @@ -299,7 +299,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options, case OPT__version: printf ("GNU Fortran %s%s\n", pkgversion_string, version_string); - printf ("Copyright %s 2013 Free Software Foundation, Inc.\n\n", + printf ("Copyright %s 2014 Free Software Foundation, Inc.\n\n", _("(C)")); printf (_("GNU Fortran comes with NO WARRANTY, to the extent permitted by law.\n\ You may redistribute copies of GNU Fortran\n\ diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index 18bd4d241b2..792518d468c 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -1,5 +1,5 @@ @ignore -Copyright (C) 2005-2013 Free Software Foundation, Inc. +Copyright (C) 2005-2014 Free Software Foundation, Inc. This is part of the GNU Fortran manual. For copying conditions, see the file gfortran.texi. diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 535f34c6f53..b92abfc2f9f 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -1,10 +1,10 @@ -@c Copyright (C) 2004-2013 Free Software Foundation, Inc. +@c Copyright (C) 2004-2014 Free Software Foundation, Inc. @c This is part of the GNU Fortran manual. @c For copying conditions, see the file gfortran.texi. @ignore @c man begin COPYRIGHT -Copyright @copyright{} 2004-2013 Free Software Foundation, Inc. +Copyright @copyright{} 2004-2014 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/gcc.c b/gcc/gcc.c index 0866e748cc6..35d1fe6bf1a 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -1,5 +1,5 @@ /* Compiler driver program that can handle many languages. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. @@ -6840,7 +6840,7 @@ main (int argc, char **argv) { printf (_("%s %s%s\n"), progname, pkgversion_string, version_string); - printf ("Copyright %s 2013 Free Software Foundation, Inc.\n", + printf ("Copyright %s 2014 Free Software Foundation, Inc.\n", _("(C)")); fputs (_("This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"), diff --git a/gcc/gcov-dump.c b/gcc/gcov-dump.c index 7f8e23109f8..f21878dd116 100644 --- a/gcc/gcov-dump.c +++ b/gcc/gcov-dump.c @@ -1,5 +1,5 @@ /* Dump a gcov file, for debugging use. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Nathan Sidwell Gcov is free software; you can redistribute it and/or modify @@ -142,7 +142,7 @@ static void print_version (void) { printf ("gcov-dump %s%s\n", pkgversion_string, version_string); - printf ("Copyright (C) 2013 Free Software Foundation, Inc.\n"); + printf ("Copyright (C) 2014 Free Software Foundation, Inc.\n"); printf ("This is free software; see the source for copying conditions.\n" "There is NO warranty; not even for MERCHANTABILITY or \n" "FITNESS FOR A PARTICULAR PURPOSE.\n\n"); diff --git a/gcc/gcov.c b/gcc/gcov.c index 9458812d86b..b0e59e853f5 100644 --- a/gcc/gcov.c +++ b/gcc/gcov.c @@ -1,6 +1,6 @@ /* Gcov.c: prepend line execution counts and branch probabilities to a source file. - Copyright (C) 1990-2013 Free Software Foundation, Inc. + Copyright (C) 1990-2014 Free Software Foundation, Inc. Contributed by James E. Wilson of Cygnus Support. Mangled by Bob Manson of Cygnus Support. Mangled further by Nathan Sidwell @@ -500,7 +500,7 @@ static void print_version (void) { fnotice (stdout, "gcov %s%s\n", pkgversion_string, version_string); - fprintf (stdout, "Copyright %s 2013 Free Software Foundation, Inc.\n", + fprintf (stdout, "Copyright %s 2014 Free Software Foundation, Inc.\n", _("(C)")); fnotice (stdout, _("This is free software; see the source for copying conditions.\n" diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index f6e6599bda3..28f97433886 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,745 +1,9 @@ -2013-12-16 Chris Manghane +2014-01-02 Tobias Burnus - * go-gcc.cc (Gcc_backend::struct_field_expression): New function. + * gcc/go/gccgo.texi: Ditto. + +Copyright (C) 2014 Free Software Foundation, Inc. -2013-12-11 Ian Lance Taylor - - * go-lang.c (go_langhook_post_options): Disable sibling calls by - default. - -2013-12-10 Ian Lance Taylor - - * Make-lang.in (check_go_parallelize): Test go-test.exp r* tests - separately. - -2013-12-05 Ian Lance Taylor - - Revert this change; no longer required. - 2013-11-06 Ian Lance Taylor - - * go-lang.c (go_langhook_post_options): If - -fisolate-erroneous-paths was turned on by an optimization option, - turn it off. - -2013-11-23 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::function_type): Add result_struct - parameter. - -2013-11-22 Andrew MacLeod - - * go-gcc.cc: Add required include files from gimple.h. - * go-lang.c: Likewise - -2013-11-18 Richard Sandiford - - * gofrontend/expressions.cc: Replace tree_low_cst (..., 0) with - tree_to_shwi throughout. - -2013-11-18 Richard Sandiford - - * gofrontend/expressions.cc: Replace host_integerp (..., 0) with - tree_fits_shwi_p throughout. - -2013-11-14 Andrew MacLeod - - * go-lang.c: Include only gimplify.h and gimple.h as needed. - -2013-11-14 Diego Novillo - - * go-backend.c: Include stor-layout.h. - * go-gcc.cc: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - * go-lang.c: Include stor-layout.h. - -2013-11-12 Andrew MacLeod - - * go-lang.c: Include gimplify.h. - -2013-11-06 Ian Lance Taylor - - * go-lang.c (go_langhook_post_options): If - -fisolate-erroneous-paths was turned on by an optimization option, - turn it off. - -2013-10-14 Chris Manghane - - * go-gcc.cc (Gcc_backend::address_expression): New function. - -2013-10-11 Chris Manghane - - * go-gcc.cc (Gcc_backend::function_code_expression): New - function. - -2013-10-10 Chris Manghane - - * go-gcc.cc (Gcc_backend::error_function): New function. - (Gcc_backend::function): New function. - (Gcc_backend::make_function): New function. - (function_to_tree): New function. - -2013-10-04 Chris Manghane - - * go-gcc.cc (Gcc_backend::convert_expression): New function. - -2013-10-02 Chris Manghane - - * go-gcc.cc: Include "real.h" and "realmpfr.h". - (Gcc_backend::integer_constant_expression): New function. - (Gcc_backend::float_constant_expression): New function. - (Gcc_backend::complex_constant_expression): New function. - -2013-09-30 Chris Manghane - - * go-gcc.cc (Gcc_backend::error_expression): New function. - (Gcc_backend::var_expression): New function. - (Gcc_backend::indirect_expression): New function. - -2013-09-25 Tom Tromey - - * Make-lang.in (gospec.o): Remove. - (CFLAGS-go/gospec.o): New variable. - (GCCGO_OBJS): Update to use go/gospec.o. - (go_OBJS): Define. - (GO_SYSTEM_H, GO_C_H, GO_LINEMAP_H, GO_LEX_H, GO_PARSE_H) - (GO_GOGO_H, GO_TYPES_H, GO_STATEMENTS_H, GO_EXPRESSIONS_H) - (GO_EXPORT_H, GO_IMPORT_H, GO_RUNTIME_H, GO_AST_DUMP_H) - (go/go-backend.o, go/go-lang.o, go/go-gcc.o, go/go-linemap.o) - (go/ast-dump.o, go/dataflow.o, go/export.o, go/expressions.o) - (go/go.o, go/go-dump.o, go/go-optimize.o, go/gogo-tree.o) - (go/gogo.o, go/import.o, go/import-archive.o, go/lex.o) - (go/parse.o, go/runtime.o, go/statements.o, go/types.o) - (go/unsafe.o): Remove. - (CFLAGS-go/go-gcc.o, CFLAGS-go/go-linemap.o): New variables. - (go/%.o: go/gofrontend/%.cc): Use COMPILE and POSTCOMPILE. - -2013-09-25 Tom Tromey - - * Make-lang.in (gospec.o): Don't use subshell. - -2013-08-28 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::immutable_struct): Set TREE_PUBLIC if - the struct is not hidden. - (Gcc_backend::immutable_struct_set_init): Don't set TREE_PUBLIC. - -2013-08-06 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::immutable_struct_set_init): Use - compute_reloc_for_constant. - -2013-08-02 Ian Lance Taylor - - * go-gcc.cc (immutable_struct_set_init): Always call - resolve_unique_section. - -2013-07-24 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::non_zero_size_type): If a struct has a - fields, recreate those fields with the first one with a non-zero - size. - -2013-07-23 Ian Lance Taylor - - * go-backend.c: Don't #include "rtl.h". - (go_imported_unsafe): Don't call init_varasm_once. - * Make-lang.in (go/go-backend.o): Don't depend on $(RTL_H). - -2013-07-23 Ian Lance Taylor - - * go-lang.c: Don't #include "except.h". - * Make-lang.in (go/go-lang.o): Don't depend on $(EXCEPT_H). - -2013-06-18 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::immutable_struct): Add is_hidden - parameter. - (Gcc_backend::immutable_struct_set_init): Likewise. - -2013-05-16 Jason Merrill - - * Make-lang.in (go1$(exeext)): Use link mutex. - -2013-01-16 Shenghou Ma - - * gospec.c: pass -u pthread_create to linker when static linking. - -2012-12-21 Ian Lance Taylor - - PR bootstrap/54659 - * go-system.h: Don't include . - -2012-12-18 Ian Lance Taylor - - PR go/55201 - * gospec.c: Revert last patch. - -2012-12-18 Andreas Schwab - - PR go/55201 - * gospec.c (LIBATOMIC): Define. - (LIBATOMIC_PROFILE): Define. - (lang_specific_driver): Add LIBATOMIC[_PROFILE] option. - -2012-11-29 Ian Lance Taylor - - * go-gcc.cc: Include "output.h". - (global_variable): Add is_unique_section parameter. - (global_variable_set_init): Adjust unique section if necessary. - * Make-lang.in (go/go-gcc.o): Add dependency on output.h. - -2012-11-17 Diego Novillo - - Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec) - - * go-lang.c: Use new vec API in vec.h. - -2012-11-16 Ian Lance Taylor - - * Make-lang.in (gccgo$(exeext)): Add + at start of command. - (go1$(exeext)): Likewise. - -2012-10-30 Ian Lance Taylor - - * lang.opt (-fgo-relative-import-path): New option. - * go-lang.c (go_relative_import_path): New static variable. - (go_langhook_init): Pass go_relative_import_path to - go_create_gogo. - (go_langhook_handle_option): Handle -fgo-relative-import-path. - * go-c.h (go_create_gogo): Update declaration. - * gccgo.texi (Invoking gccgo): Document - -fgo-relative-import-path. - -2012-09-17 Ian Lance Taylor - - * config-lang.in (target_libs): Add target-libbacktrace. - -2012-09-16 Ian Lance Taylor - - * Make-lang.in (go/gogo.o): Depend on filenames.h. - -2012-08-14 Diego Novillo - - Merge from cxx-conversion branch. Configury. - - * go-c.h: Remove all handlers of ENABLE_BUILD_WITH_CXX. - * go-gcc.cc: Likewise. - * go-system.h: Likewise. - -2012-07-24 Uros Bizjak - - * go-lang.c (lang_decl): Add variable_size GTY option. - -2012-05-09 Ian Lance Taylor - - * lang.opt: Add -fgo-pkgpath. - * go-lang.c (go_pkgpath): New static variable. - (go_prefix): New static variable. - (go_langhook_init): Pass go_pkgpath and go_prefix to - go_create_gogo. - (go_langhook_handle_option): Handle -fgo-pkgpath. Change - -fgo-prefix handling to just set go_prefix. - * go-c.h (go_set_prefix): Don't declare. - (go_create_gogo): Add pkgpath and prefix to declaration. - * go-gcc.cc (Gcc_backend::global_variable): Change unique_prefix - to pkgpath. Don't include the package name in the asm name. - * gccgo.texi (Invoking gccgo): Document -fgo-pkgpath. Update the - docs for -fgo-prefix. - -2012-04-23 Ian Lance Taylor - - * go-lang.c (go_langhook_init): Set MPFR precision to 256. - -2012-04-20 Ian Lance Taylor - - * lang.opt: Add -fgo-check-divide-zero and - -fgo-check-divide-overflow. - * gccgo.texi (Invoking gccgo): Document new options. - -2012-04-18 Steven Bosscher - - * go-gcc.cc (Gcc_backend::switch_statement): Build SWITCH_EXPR - with NULL_TREE type instead of void_type_node. - -2012-03-09 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::assignment_statement): Convert the rhs - to the lhs type if necessary. - -2012-03-08 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::init_statement): Don't initialize a - zero-sized variable. - (go_non_zero_struct): New global variable. - (Gcc_backend::non_zero_size_type): New function. - (Gcc_backend::global_variable): Don't build an assignment for a - zero-sized value. - * go-c.h (go_non_zero_struct): Declare. - * config-lang.in (gtfiles): Add go-c.h. - -2012-02-29 Ian Lance Taylor - - * go-gcc.cc (class Gcc_tree): Add set_tree method. - (set_placeholder_pointer_type): When setting to a pointer to - error, set to error_mark_node. - -2012-02-23 Richard Guenther - - * go-gcc.cc (Gcc_backend::placeholder_pointer_type): Use - build_distinct_type_copy. - -2012-02-17 Ian Lance Taylor - - * Make-lang.in (go/import.o): Add dependency on $(GO_LEX_H). - -2012-02-17 Ian Lance Taylor - - * gospec.c (lang_specific_driver): If linking, and no -o option - was used, add one. - -2012-02-14 Ian Lance Taylor - - PR go/48411 - * Make-lang.in (gccgo-cross$(exeext)): New target. - (go.all.cross): Depend on gccgo-cross$(exeext) instead of - gccgo$(exeext). - (go.install-common): Only install GCCGO_TARGET_INSTALL_NAME if - gccgo-cross$(exeext) does not exist. - -2012-02-07 Ian Lance Taylor - - * gccgo.texi (Function Names): Document //extern instead of - __asm__. - -2012-02-01 Jakub Jelinek - - PR target/52079 - * go-lang.c (go_langhook_type_for_mode): For TImode and 64-bit HWI - return build_nonstandard_integer_type result if possible. - -2012-01-21 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::type_size): Check for error_mark_node. - (Gcc_backend::type_alignment): Likewise. - (Gcc_backend::type_field_alignment): Likewise. - (Gcc_backend::type_field_offset): Likewise. - -2012-01-20 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::placeholder_struct_type): Permit name to - be empty. - (Gcc_backend::set_placeholder_struct_type): Likewise. - -2012-01-17 Ian Lance Taylor - - * gospec.c (lang_specific_driver): If we see -S without -o, add -o - BASE.s rather than -o BASE.o. - -2012-01-11 Ian Lance Taylor - - * go-lang.c (go_langhook_init): Initialize void_list_node before - calling go_create_gogo. - -2012-01-10 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::type_size): New function. - (Gcc_backend::type_alignment): New function. - (Gcc_backend::type_field_alignment): New function. - (Gcc_backend::type_field_offset): New function. - * go-backend.c (go_type_alignment): Remove. - * go-c.h (go_type_alignment): Don't declare. - -2011-12-27 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::set_placeholder_struct_type): Use - build_distinct_type_copy rather than build_variant_type_copy. - (Gcc_backend::set_placeholder_array_type): Likewise. - (Gcc_backend::named_type): Add special handling for builtin - basic types. - -2011-12-22 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::set_placeholder_pointer_type): Arrange - for the type name to have a DECL_ORIGINAL_TYPE as gcc expects. - (Gcc_backend::set_placeholder_struct_type): Likewise. - (Gcc_backend::set_placeholder_array_type): Likewise. - (Gcc_backend::named_type): Set DECL_ORIGINAL_TYPE. - -2011-12-13 Ian Lance Taylor - - * go-backend.c: #include "simple-object.h" and "intl.h". - (GO_EXPORT_SEGMENT_NAME): Define if not defined. - (GO_EXPORT_SECTION_NAME): Likewise. - (go_write_export_data): Use GO_EXPORT_SECTION_NAME. - (go_read_export_data): New function. - * go-c.h (go_read_export_data): Declare. - -2011-11-29 Sanjoy Das - Ian Lance Taylor - - * go-location.h: New file. - * go-linemap.cc: New file. - * go-gcc.cc: Change all uses of source_location to Location. - * Make-lang.in (GO_OBJS): Add go/go-linemap.o. - (GO_LINEMAP_H): New variable. - (GO_LEX_H): Use $(GO_LINEMAP_H). - (GO_GOGO_H, GO_TYPES_H, GO_IMPORT_H): Likewise. - (go/go-linemap.o): New target. - -2011-11-02 Rainer Orth - - * Make-lang.in (gospec.o): Pass SHLIB instead of SHLIB_LINK. - -2011-08-24 Roberto Lublinerman - - * lang.opt: Add fgo-optimize-. - * go-lang.c (go_langhook_handle_option): Handle OPT_fgo_optimize. - * go-c.h (go_enable_optimize): Declare. - * Make-lang.in (GO_OBJS): Add go/go-optimize.o. - (GO_EXPORT_H): Define. - (GO_IMPORT_H): Add $(GO_EXPORT_H). - (GO_AST_DUMP_H): Define. - (go/ast-dump.o, go/statements.o): Use GO_AST_DUMP_H. - (go/export.o, go/gogo.o, go/import.o): Use GO_EXPORT_H. - (go/types.o): Likewise. - (go/expressions.o): Use GO_AST_DUMP_H and GO_EXPORT_H. - (go/go-optimize.o): New target. - -2011-08-24 Joseph Myers - - * Make-lang.in (CFLAGS-go/go-lang.o): New. - (go/go-lang.o): Remove explicit compilation rule. - -2011-08-08 Rainer Orth - - * Make-lang.in (gccgo$(exeext)): Add $(EXTRA_GCC_LIBS). - -2011-08-02 Roberto Lublinerman - - * Make-lang.in (GO_OBJS): Add go/ast-dump.o. - (go/ast-dump.o): New target. - (go/expressions.o): Depend on go/gofrontend/ast-dump.h. - (go/statements.o): Likewise. - -2011-07-06 Richard Guenther - - * go-lang.c (go_langhook_init): - Merge calls to build_common_tree_nodes and build_common_tree_nodes_2. - -2011-06-14 Joseph Myers - - * Make-lang.in (go/go-lang.o, go/go-backend.o): Update - dependencies. - * go-backend.c: Include common/common-target.h. - (go_write_export_data): Use targetm_common.have_named_sections. - * go-lang.c: Include common/common-target.h. - (go_langhook_init_options_struct): Use - targetm_common.supports_split_stack. - -2011-06-13 Ian Lance Taylor - - * Make-lang.in (go/expressions.o): Depend on $(GO_RUNTIME_H). - -2011-06-10 Ian Lance Taylor - - * go-gcc.cc: Include "toplev.h". - (Gcc_backend::immutable_struct): New function. - (Gcc_backend::immutable_struct_set_init): New function. - (Gcc_backend::immutable_struct_reference): New function. - * Make-lang.in (go/go-gcc.o): Depend on toplev.h. - -2011-06-09 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::zero_expression): New function. - -2011-06-07 Richard Guenther - - * go-lang.c (go_langhook_init): Do not set - size_type_node or call set_sizetype. - -2011-05-27 Ian Lance Taylor - - * go-backend.c: Include "output.h". - (go_write_export_data): New function. - * go-c.h (go_write_export_data): Declare. - * Make-lang.in (go/go-backend.o): Depend on output.h. - (go/export.o): Depend on $(GO_C_H). Do not depend on - $(MACHMODE_H), output.h, or $(TARGET_H). - -2011-05-24 Joseph Myers - - * Make-lang.in (GCCGO_OBJS): Remove prefix.o. - (gccgo$(exeext)): Use libcommon-target.a. - -2011-05-20 Joseph Myers - - * Make-lang.in (GCCGO_OBJS): Remove intl.o and version.o. - -2011-05-13 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::function_type): When building a struct - for multiple results, check that all fields types have a size. - (Gcc_backend::placeholder_pointer_type): Permit name to be empty. - -2011-05-12 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::local_variable): Add is_address_taken - parameter. - (Gcc_backend::parameter_variable): Likewise. - -2011-05-07 Eric Botcazou - - * go-lang.c (global_bindings_p): Return bool and simplify. - -2011-05-05 Nathan Froyd - - * go-gcc.cc (Gcc_backend::switch_statement): Call build_case_label. - -2011-05-04 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::struct_type): Call fill_in_struct. - (Gcc_backend::fill_in_struct): New function. - (Gcc_backend::array_type): Implement. - (Gcc_backend::fill_in_array): New function. - (Gcc_backend::placeholder_pointer_type): New function. - (Gcc_backend::set_placeholder_pointer_type): New function. - (Gcc_backend::set_placeholder_function_type): New function. - (Gcc_backend::placeholder_struct_type): New function. - (Gcc_backend::set_placeholder_struct_type): New function. - (Gcc_backend::placeholder_array_type): New function. - (Gcc_backend::set_placeholder_array_type): New function. - (Gcc_backend::named_type): New function. - (Gcc_backend::circular_pointer_type): New function. - (Gcc_backend::is_circular_pointer_type): New function. - -2011-04-26 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::struct_type): Implement. - -2011-04-25 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::error_type): Implement. - (Gcc_backend::string_type): Remove. - (Gcc_backend::function_type): Change signature and implement. - (Gcc_backend::struct_type): Change signature. - (Gcc_backend::slice_type, Gcc_backend::map_type): Remove. - (Gcc_backend::channel_type, Gcc_backend::interface_type): Remove. - (Gcc_backend::pointer_type): Check for error. - * Make-lang.in (go/types.o): Depend on go/gofrontend/backend.h. - -2011-04-25 Evan Shaw - - * go-gcc.c (class Gcc_tree): Make get_tree const. - (Gcc_backend::void_type): Implement. - (Gcc_backend::bool_type): Implement. - (Gcc_backend::integer_type): Implement. - (Gcc_backend::float_type): Implement. - (Gcc_backend::complex_type): New function. - (Gcc_backend::pointer_type): New function. - (Gcc_backend::make_type): New function. - (type_to_tree): New function. - -2011-04-21 Ian Lance Taylor - - * go-system.h (go_assert, go_unreachable): Define. - -2011-04-19 Ian Lance Taylor - - * go-system.h: Include "intl.h". - * Make-lang.in (GO_SYSTEM_H): Add intl.h. - (go/statements.o): Remove dependencies on intl.h $(TREE_H) - $(GIMPLE_H) convert.h tree-iterator.h $(TREE_FLOW_H) $(REAL_H). - -2011-04-19 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::temporary_variable): New function. - -2011-04-19 Ian Lance Taylor - - * go-gcc.cc (class Bblock): Define. - (Gcc_backend::if_statement): Change then_block and else_block to - Bblock*. - (Gcc_backend::block): New function. - (Gcc_backend::block_add_statements): New function. - (Gcc_backend::block_statement): New function. - (tree_to_block, block_to_tree): New functions. - -2011-04-18 Ian Lance Taylor - - * go-gcc.cc: Include "go-c.h". - (class Bvariable): Define. - (Gcc_backend::init_statement): New function. - (Gcc_backend::global_variable): New function. - (Gcc_backend::global_variable_set_init): New function. - (Gcc_backend::local_variable): New function. - (Gcc_backend::parameter_variable): New function. - (tree_to_type, var_to_tree): New functions. - * Make-lang.in (go/go-gcc.o): Depend on $(GO_C_H). - * (go/gogo-tree.o): Depend on go/gofrontend/backend.h. - -2011-04-15 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::compound_statement): New function. - (Gcc_backend::assignment_statement): Use error_statement. - (Gcc_backend::return_statement): Likewise. - (Gcc_backend::if_statement): Likewise. - (Gcc_backend::switch_statement): Likewise. - (Gcc_backend::statement_list): Likewise. - -2011-04-14 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::error_statement): New function. - -2011-04-13 Ian Lance Taylor - - * Make-lang.in (go/gogo-tree.o): depend on $(GO_RUNTIME_H). - -2011-04-13 Ian Lance Taylor - - * Make-lang.in (GO_OBJS): Add go/runtime.o. - (GO_RUNTIME_H): New variable. - (go/runtime.o): New target. - (go/gogo.o): Depend on $(GO_RUNTIME_H). - (go/statements.o): Likewise. - -2011-04-12 Nathan Froyd - - * go-lang.c (union lang_tree_node): Check for TS_COMMON before - calling TREE_CHAIN. - -2011-04-06 Ian Lance Taylor - - * go-gcc.cc (if_statement): Use build3_loc. - (Gcc_backend::switch_statement): New function. - (Gcc_backend::statement_list): New function. - -2011-04-06 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::if_statement): New function. - (tree_to_stat): New function. - (expr_to_tree): Renamed from expression_to_tree. - (stat_to_tree): Renamed from statement_to_tree. - -2011-04-06 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::expression_statement): New function. - -2011-04-04 Ian Lance Taylor - - * go-gcc.c (class Blabel): Define. - (Gcc_backend::make_expression): New function. - (get_identifier_from_string): New function. - (Gcc_backend::label): New function. - (Gcc_backend::label_definition_statement): New function. - (Gcc_backend::goto_statement): New function. - (Gcc_backend::label_address): New function. - (expression_to_tree): New function. - * Make-lang.in (go/expressions.o): Depend on - go/gofrontend/backend.h. - (go/gogo.o): Likewise. - -2011-04-04 Ian Lance Taylor - - * go-gcc.cc: #include "tree-iterator.h", "gimple.h", and "gogo.h". - (class Bfunction): Define. - (Gcc_backend::assignment_statement): Rename from assignment. - Check for errors. - (Gcc_backend::return_statement): New function. - (tree_to_function): New function. - * Make-lang.in (go/go-gcc.o): Depend on tree-iterator.h, - $(GIMPLE_H), and $(GO_GOGO_H). - -2011-04-03 Ian Lance Taylor - - * go-gcc.cc: New file. - * Make-lang.in (GO_OBJS): Add go/go-gcc.o. - (go/go-gcc.o): New target. - (go/go.o): Depend on go/gofrontend/backend.h. - (go/statements.o): Likewise. - -2011-02-14 Ralf Wildenhues - - * gccgo.texi (Top, Import and Export): Fix a typo and a markup nit. - -2011-02-08 Ian Lance Taylor - - * go-lang.c (go_langhook_init_options_struct): Set - frontend_set_flag_errno_math. Don't set x_flag_trapping_math. - -2011-01-31 Rainer Orth - - * gospec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use - LD_STATIC_OPTION, LD_DYNAMIC_OPTION. - -2011-01-21 Ian Lance Taylor - - * go-lang.c (go_langhook_init): Omit float_type_size when calling - go_create_gogo. - * go-c.h: Update declaration of go_create_gogo. - -2011-01-13 Ian Lance Taylor - - * go-backend.c: Include "rtl.h" and "target.h". - (go_imported_unsafe): New function. - * go-c.h (go_imported_unsafe): Declare. - * Make-lang.in (go/go-backend.o): Depend on $(RTL_H). - (go/gogo-tree.o): Remove dependency on $(RTL_H). - (go/unsafe.o): Depend on $(GO_C_H). - -2010-12-31 Joern Rennecke - - PR go/47113 - * go-backend.c: (go_field_alignment): Add ATTRIBUTE_UNUSED to - variable ‘field’ . - -2010-12-21 Ian Lance Taylor - - * Make-lang.in (check-go): Remove. - (lang_checks_parallelized): Add check-go. - (check_go_parallelize): Set. - -2010-12-13 Ian Lance Taylor - - * gospec.c (lang_specific_driver): Add a -o option if not linking - and there is no -o option already. - -2010-12-07 Ian Lance Taylor - - PR tree-optimization/46805 - PR tree-optimization/46833 - * go-lang.c (go_langhook_type_for_mode): Handle vector modes. - -2010-12-06 Ian Lance Taylor - - PR other/46789 - PR bootstrap/46812 - * go-lang.c (go_char_p): Define type and vectors. - (go_search_dirs): New static variable. - (go_langhook_handle_option): Use version and version/machine - directories for -L. - (go_langhook_post_options): Add non-specific -L paths. - * Make-lang.in (go/go-lang.o): Define DEFAULT_TARGET_VERSION and - DEFAULT_TARGET_MACHINE when compiling. - * gccgo.texi (Invoking gccgo): Only document -L for linking. - (Import and Export): Don't mention -L for finding import files. - -2010-12-03 Ian Lance Taylor - - PR bootstrap/46776 - * go-backend.c: New file. - * go-c.h (go_type_alignment): Declare. - (go_field_alignment, go_trampoline_info): Declare. - * Make-lang.in (GO_OBJS): Add go/go-backend.o. - (go/go-backend.o): New target. - (go/go-lang.o): Make dependencies match source file. - (go/expressions.o): Don't depend on $(TM_H) $(TM_P_H). - (go/gogo-tree.o): Don't depend on $(TM_H). - -2010-12-03 Ian Lance Taylor - - * config-lang.in (build_by_default): Set to no. - -2010-12-02 Ian Lance Taylor - - Go frontend added to gcc repository. +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/go/ChangeLog-2013 b/gcc/go/ChangeLog-2013 new file mode 100644 index 00000000000..f6e6599bda3 --- /dev/null +++ b/gcc/go/ChangeLog-2013 @@ -0,0 +1,745 @@ +2013-12-16 Chris Manghane + + * go-gcc.cc (Gcc_backend::struct_field_expression): New function. + +2013-12-11 Ian Lance Taylor + + * go-lang.c (go_langhook_post_options): Disable sibling calls by + default. + +2013-12-10 Ian Lance Taylor + + * Make-lang.in (check_go_parallelize): Test go-test.exp r* tests + separately. + +2013-12-05 Ian Lance Taylor + + Revert this change; no longer required. + 2013-11-06 Ian Lance Taylor + + * go-lang.c (go_langhook_post_options): If + -fisolate-erroneous-paths was turned on by an optimization option, + turn it off. + +2013-11-23 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::function_type): Add result_struct + parameter. + +2013-11-22 Andrew MacLeod + + * go-gcc.cc: Add required include files from gimple.h. + * go-lang.c: Likewise + +2013-11-18 Richard Sandiford + + * gofrontend/expressions.cc: Replace tree_low_cst (..., 0) with + tree_to_shwi throughout. + +2013-11-18 Richard Sandiford + + * gofrontend/expressions.cc: Replace host_integerp (..., 0) with + tree_fits_shwi_p throughout. + +2013-11-14 Andrew MacLeod + + * go-lang.c: Include only gimplify.h and gimple.h as needed. + +2013-11-14 Diego Novillo + + * go-backend.c: Include stor-layout.h. + * go-gcc.cc: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + * go-lang.c: Include stor-layout.h. + +2013-11-12 Andrew MacLeod + + * go-lang.c: Include gimplify.h. + +2013-11-06 Ian Lance Taylor + + * go-lang.c (go_langhook_post_options): If + -fisolate-erroneous-paths was turned on by an optimization option, + turn it off. + +2013-10-14 Chris Manghane + + * go-gcc.cc (Gcc_backend::address_expression): New function. + +2013-10-11 Chris Manghane + + * go-gcc.cc (Gcc_backend::function_code_expression): New + function. + +2013-10-10 Chris Manghane + + * go-gcc.cc (Gcc_backend::error_function): New function. + (Gcc_backend::function): New function. + (Gcc_backend::make_function): New function. + (function_to_tree): New function. + +2013-10-04 Chris Manghane + + * go-gcc.cc (Gcc_backend::convert_expression): New function. + +2013-10-02 Chris Manghane + + * go-gcc.cc: Include "real.h" and "realmpfr.h". + (Gcc_backend::integer_constant_expression): New function. + (Gcc_backend::float_constant_expression): New function. + (Gcc_backend::complex_constant_expression): New function. + +2013-09-30 Chris Manghane + + * go-gcc.cc (Gcc_backend::error_expression): New function. + (Gcc_backend::var_expression): New function. + (Gcc_backend::indirect_expression): New function. + +2013-09-25 Tom Tromey + + * Make-lang.in (gospec.o): Remove. + (CFLAGS-go/gospec.o): New variable. + (GCCGO_OBJS): Update to use go/gospec.o. + (go_OBJS): Define. + (GO_SYSTEM_H, GO_C_H, GO_LINEMAP_H, GO_LEX_H, GO_PARSE_H) + (GO_GOGO_H, GO_TYPES_H, GO_STATEMENTS_H, GO_EXPRESSIONS_H) + (GO_EXPORT_H, GO_IMPORT_H, GO_RUNTIME_H, GO_AST_DUMP_H) + (go/go-backend.o, go/go-lang.o, go/go-gcc.o, go/go-linemap.o) + (go/ast-dump.o, go/dataflow.o, go/export.o, go/expressions.o) + (go/go.o, go/go-dump.o, go/go-optimize.o, go/gogo-tree.o) + (go/gogo.o, go/import.o, go/import-archive.o, go/lex.o) + (go/parse.o, go/runtime.o, go/statements.o, go/types.o) + (go/unsafe.o): Remove. + (CFLAGS-go/go-gcc.o, CFLAGS-go/go-linemap.o): New variables. + (go/%.o: go/gofrontend/%.cc): Use COMPILE and POSTCOMPILE. + +2013-09-25 Tom Tromey + + * Make-lang.in (gospec.o): Don't use subshell. + +2013-08-28 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::immutable_struct): Set TREE_PUBLIC if + the struct is not hidden. + (Gcc_backend::immutable_struct_set_init): Don't set TREE_PUBLIC. + +2013-08-06 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::immutable_struct_set_init): Use + compute_reloc_for_constant. + +2013-08-02 Ian Lance Taylor + + * go-gcc.cc (immutable_struct_set_init): Always call + resolve_unique_section. + +2013-07-24 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::non_zero_size_type): If a struct has a + fields, recreate those fields with the first one with a non-zero + size. + +2013-07-23 Ian Lance Taylor + + * go-backend.c: Don't #include "rtl.h". + (go_imported_unsafe): Don't call init_varasm_once. + * Make-lang.in (go/go-backend.o): Don't depend on $(RTL_H). + +2013-07-23 Ian Lance Taylor + + * go-lang.c: Don't #include "except.h". + * Make-lang.in (go/go-lang.o): Don't depend on $(EXCEPT_H). + +2013-06-18 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::immutable_struct): Add is_hidden + parameter. + (Gcc_backend::immutable_struct_set_init): Likewise. + +2013-05-16 Jason Merrill + + * Make-lang.in (go1$(exeext)): Use link mutex. + +2013-01-16 Shenghou Ma + + * gospec.c: pass -u pthread_create to linker when static linking. + +2012-12-21 Ian Lance Taylor + + PR bootstrap/54659 + * go-system.h: Don't include . + +2012-12-18 Ian Lance Taylor + + PR go/55201 + * gospec.c: Revert last patch. + +2012-12-18 Andreas Schwab + + PR go/55201 + * gospec.c (LIBATOMIC): Define. + (LIBATOMIC_PROFILE): Define. + (lang_specific_driver): Add LIBATOMIC[_PROFILE] option. + +2012-11-29 Ian Lance Taylor + + * go-gcc.cc: Include "output.h". + (global_variable): Add is_unique_section parameter. + (global_variable_set_init): Adjust unique section if necessary. + * Make-lang.in (go/go-gcc.o): Add dependency on output.h. + +2012-11-17 Diego Novillo + + Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec) + + * go-lang.c: Use new vec API in vec.h. + +2012-11-16 Ian Lance Taylor + + * Make-lang.in (gccgo$(exeext)): Add + at start of command. + (go1$(exeext)): Likewise. + +2012-10-30 Ian Lance Taylor + + * lang.opt (-fgo-relative-import-path): New option. + * go-lang.c (go_relative_import_path): New static variable. + (go_langhook_init): Pass go_relative_import_path to + go_create_gogo. + (go_langhook_handle_option): Handle -fgo-relative-import-path. + * go-c.h (go_create_gogo): Update declaration. + * gccgo.texi (Invoking gccgo): Document + -fgo-relative-import-path. + +2012-09-17 Ian Lance Taylor + + * config-lang.in (target_libs): Add target-libbacktrace. + +2012-09-16 Ian Lance Taylor + + * Make-lang.in (go/gogo.o): Depend on filenames.h. + +2012-08-14 Diego Novillo + + Merge from cxx-conversion branch. Configury. + + * go-c.h: Remove all handlers of ENABLE_BUILD_WITH_CXX. + * go-gcc.cc: Likewise. + * go-system.h: Likewise. + +2012-07-24 Uros Bizjak + + * go-lang.c (lang_decl): Add variable_size GTY option. + +2012-05-09 Ian Lance Taylor + + * lang.opt: Add -fgo-pkgpath. + * go-lang.c (go_pkgpath): New static variable. + (go_prefix): New static variable. + (go_langhook_init): Pass go_pkgpath and go_prefix to + go_create_gogo. + (go_langhook_handle_option): Handle -fgo-pkgpath. Change + -fgo-prefix handling to just set go_prefix. + * go-c.h (go_set_prefix): Don't declare. + (go_create_gogo): Add pkgpath and prefix to declaration. + * go-gcc.cc (Gcc_backend::global_variable): Change unique_prefix + to pkgpath. Don't include the package name in the asm name. + * gccgo.texi (Invoking gccgo): Document -fgo-pkgpath. Update the + docs for -fgo-prefix. + +2012-04-23 Ian Lance Taylor + + * go-lang.c (go_langhook_init): Set MPFR precision to 256. + +2012-04-20 Ian Lance Taylor + + * lang.opt: Add -fgo-check-divide-zero and + -fgo-check-divide-overflow. + * gccgo.texi (Invoking gccgo): Document new options. + +2012-04-18 Steven Bosscher + + * go-gcc.cc (Gcc_backend::switch_statement): Build SWITCH_EXPR + with NULL_TREE type instead of void_type_node. + +2012-03-09 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::assignment_statement): Convert the rhs + to the lhs type if necessary. + +2012-03-08 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::init_statement): Don't initialize a + zero-sized variable. + (go_non_zero_struct): New global variable. + (Gcc_backend::non_zero_size_type): New function. + (Gcc_backend::global_variable): Don't build an assignment for a + zero-sized value. + * go-c.h (go_non_zero_struct): Declare. + * config-lang.in (gtfiles): Add go-c.h. + +2012-02-29 Ian Lance Taylor + + * go-gcc.cc (class Gcc_tree): Add set_tree method. + (set_placeholder_pointer_type): When setting to a pointer to + error, set to error_mark_node. + +2012-02-23 Richard Guenther + + * go-gcc.cc (Gcc_backend::placeholder_pointer_type): Use + build_distinct_type_copy. + +2012-02-17 Ian Lance Taylor + + * Make-lang.in (go/import.o): Add dependency on $(GO_LEX_H). + +2012-02-17 Ian Lance Taylor + + * gospec.c (lang_specific_driver): If linking, and no -o option + was used, add one. + +2012-02-14 Ian Lance Taylor + + PR go/48411 + * Make-lang.in (gccgo-cross$(exeext)): New target. + (go.all.cross): Depend on gccgo-cross$(exeext) instead of + gccgo$(exeext). + (go.install-common): Only install GCCGO_TARGET_INSTALL_NAME if + gccgo-cross$(exeext) does not exist. + +2012-02-07 Ian Lance Taylor + + * gccgo.texi (Function Names): Document //extern instead of + __asm__. + +2012-02-01 Jakub Jelinek + + PR target/52079 + * go-lang.c (go_langhook_type_for_mode): For TImode and 64-bit HWI + return build_nonstandard_integer_type result if possible. + +2012-01-21 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::type_size): Check for error_mark_node. + (Gcc_backend::type_alignment): Likewise. + (Gcc_backend::type_field_alignment): Likewise. + (Gcc_backend::type_field_offset): Likewise. + +2012-01-20 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::placeholder_struct_type): Permit name to + be empty. + (Gcc_backend::set_placeholder_struct_type): Likewise. + +2012-01-17 Ian Lance Taylor + + * gospec.c (lang_specific_driver): If we see -S without -o, add -o + BASE.s rather than -o BASE.o. + +2012-01-11 Ian Lance Taylor + + * go-lang.c (go_langhook_init): Initialize void_list_node before + calling go_create_gogo. + +2012-01-10 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::type_size): New function. + (Gcc_backend::type_alignment): New function. + (Gcc_backend::type_field_alignment): New function. + (Gcc_backend::type_field_offset): New function. + * go-backend.c (go_type_alignment): Remove. + * go-c.h (go_type_alignment): Don't declare. + +2011-12-27 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::set_placeholder_struct_type): Use + build_distinct_type_copy rather than build_variant_type_copy. + (Gcc_backend::set_placeholder_array_type): Likewise. + (Gcc_backend::named_type): Add special handling for builtin + basic types. + +2011-12-22 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::set_placeholder_pointer_type): Arrange + for the type name to have a DECL_ORIGINAL_TYPE as gcc expects. + (Gcc_backend::set_placeholder_struct_type): Likewise. + (Gcc_backend::set_placeholder_array_type): Likewise. + (Gcc_backend::named_type): Set DECL_ORIGINAL_TYPE. + +2011-12-13 Ian Lance Taylor + + * go-backend.c: #include "simple-object.h" and "intl.h". + (GO_EXPORT_SEGMENT_NAME): Define if not defined. + (GO_EXPORT_SECTION_NAME): Likewise. + (go_write_export_data): Use GO_EXPORT_SECTION_NAME. + (go_read_export_data): New function. + * go-c.h (go_read_export_data): Declare. + +2011-11-29 Sanjoy Das + Ian Lance Taylor + + * go-location.h: New file. + * go-linemap.cc: New file. + * go-gcc.cc: Change all uses of source_location to Location. + * Make-lang.in (GO_OBJS): Add go/go-linemap.o. + (GO_LINEMAP_H): New variable. + (GO_LEX_H): Use $(GO_LINEMAP_H). + (GO_GOGO_H, GO_TYPES_H, GO_IMPORT_H): Likewise. + (go/go-linemap.o): New target. + +2011-11-02 Rainer Orth + + * Make-lang.in (gospec.o): Pass SHLIB instead of SHLIB_LINK. + +2011-08-24 Roberto Lublinerman + + * lang.opt: Add fgo-optimize-. + * go-lang.c (go_langhook_handle_option): Handle OPT_fgo_optimize. + * go-c.h (go_enable_optimize): Declare. + * Make-lang.in (GO_OBJS): Add go/go-optimize.o. + (GO_EXPORT_H): Define. + (GO_IMPORT_H): Add $(GO_EXPORT_H). + (GO_AST_DUMP_H): Define. + (go/ast-dump.o, go/statements.o): Use GO_AST_DUMP_H. + (go/export.o, go/gogo.o, go/import.o): Use GO_EXPORT_H. + (go/types.o): Likewise. + (go/expressions.o): Use GO_AST_DUMP_H and GO_EXPORT_H. + (go/go-optimize.o): New target. + +2011-08-24 Joseph Myers + + * Make-lang.in (CFLAGS-go/go-lang.o): New. + (go/go-lang.o): Remove explicit compilation rule. + +2011-08-08 Rainer Orth + + * Make-lang.in (gccgo$(exeext)): Add $(EXTRA_GCC_LIBS). + +2011-08-02 Roberto Lublinerman + + * Make-lang.in (GO_OBJS): Add go/ast-dump.o. + (go/ast-dump.o): New target. + (go/expressions.o): Depend on go/gofrontend/ast-dump.h. + (go/statements.o): Likewise. + +2011-07-06 Richard Guenther + + * go-lang.c (go_langhook_init): + Merge calls to build_common_tree_nodes and build_common_tree_nodes_2. + +2011-06-14 Joseph Myers + + * Make-lang.in (go/go-lang.o, go/go-backend.o): Update + dependencies. + * go-backend.c: Include common/common-target.h. + (go_write_export_data): Use targetm_common.have_named_sections. + * go-lang.c: Include common/common-target.h. + (go_langhook_init_options_struct): Use + targetm_common.supports_split_stack. + +2011-06-13 Ian Lance Taylor + + * Make-lang.in (go/expressions.o): Depend on $(GO_RUNTIME_H). + +2011-06-10 Ian Lance Taylor + + * go-gcc.cc: Include "toplev.h". + (Gcc_backend::immutable_struct): New function. + (Gcc_backend::immutable_struct_set_init): New function. + (Gcc_backend::immutable_struct_reference): New function. + * Make-lang.in (go/go-gcc.o): Depend on toplev.h. + +2011-06-09 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::zero_expression): New function. + +2011-06-07 Richard Guenther + + * go-lang.c (go_langhook_init): Do not set + size_type_node or call set_sizetype. + +2011-05-27 Ian Lance Taylor + + * go-backend.c: Include "output.h". + (go_write_export_data): New function. + * go-c.h (go_write_export_data): Declare. + * Make-lang.in (go/go-backend.o): Depend on output.h. + (go/export.o): Depend on $(GO_C_H). Do not depend on + $(MACHMODE_H), output.h, or $(TARGET_H). + +2011-05-24 Joseph Myers + + * Make-lang.in (GCCGO_OBJS): Remove prefix.o. + (gccgo$(exeext)): Use libcommon-target.a. + +2011-05-20 Joseph Myers + + * Make-lang.in (GCCGO_OBJS): Remove intl.o and version.o. + +2011-05-13 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::function_type): When building a struct + for multiple results, check that all fields types have a size. + (Gcc_backend::placeholder_pointer_type): Permit name to be empty. + +2011-05-12 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::local_variable): Add is_address_taken + parameter. + (Gcc_backend::parameter_variable): Likewise. + +2011-05-07 Eric Botcazou + + * go-lang.c (global_bindings_p): Return bool and simplify. + +2011-05-05 Nathan Froyd + + * go-gcc.cc (Gcc_backend::switch_statement): Call build_case_label. + +2011-05-04 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::struct_type): Call fill_in_struct. + (Gcc_backend::fill_in_struct): New function. + (Gcc_backend::array_type): Implement. + (Gcc_backend::fill_in_array): New function. + (Gcc_backend::placeholder_pointer_type): New function. + (Gcc_backend::set_placeholder_pointer_type): New function. + (Gcc_backend::set_placeholder_function_type): New function. + (Gcc_backend::placeholder_struct_type): New function. + (Gcc_backend::set_placeholder_struct_type): New function. + (Gcc_backend::placeholder_array_type): New function. + (Gcc_backend::set_placeholder_array_type): New function. + (Gcc_backend::named_type): New function. + (Gcc_backend::circular_pointer_type): New function. + (Gcc_backend::is_circular_pointer_type): New function. + +2011-04-26 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::struct_type): Implement. + +2011-04-25 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::error_type): Implement. + (Gcc_backend::string_type): Remove. + (Gcc_backend::function_type): Change signature and implement. + (Gcc_backend::struct_type): Change signature. + (Gcc_backend::slice_type, Gcc_backend::map_type): Remove. + (Gcc_backend::channel_type, Gcc_backend::interface_type): Remove. + (Gcc_backend::pointer_type): Check for error. + * Make-lang.in (go/types.o): Depend on go/gofrontend/backend.h. + +2011-04-25 Evan Shaw + + * go-gcc.c (class Gcc_tree): Make get_tree const. + (Gcc_backend::void_type): Implement. + (Gcc_backend::bool_type): Implement. + (Gcc_backend::integer_type): Implement. + (Gcc_backend::float_type): Implement. + (Gcc_backend::complex_type): New function. + (Gcc_backend::pointer_type): New function. + (Gcc_backend::make_type): New function. + (type_to_tree): New function. + +2011-04-21 Ian Lance Taylor + + * go-system.h (go_assert, go_unreachable): Define. + +2011-04-19 Ian Lance Taylor + + * go-system.h: Include "intl.h". + * Make-lang.in (GO_SYSTEM_H): Add intl.h. + (go/statements.o): Remove dependencies on intl.h $(TREE_H) + $(GIMPLE_H) convert.h tree-iterator.h $(TREE_FLOW_H) $(REAL_H). + +2011-04-19 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::temporary_variable): New function. + +2011-04-19 Ian Lance Taylor + + * go-gcc.cc (class Bblock): Define. + (Gcc_backend::if_statement): Change then_block and else_block to + Bblock*. + (Gcc_backend::block): New function. + (Gcc_backend::block_add_statements): New function. + (Gcc_backend::block_statement): New function. + (tree_to_block, block_to_tree): New functions. + +2011-04-18 Ian Lance Taylor + + * go-gcc.cc: Include "go-c.h". + (class Bvariable): Define. + (Gcc_backend::init_statement): New function. + (Gcc_backend::global_variable): New function. + (Gcc_backend::global_variable_set_init): New function. + (Gcc_backend::local_variable): New function. + (Gcc_backend::parameter_variable): New function. + (tree_to_type, var_to_tree): New functions. + * Make-lang.in (go/go-gcc.o): Depend on $(GO_C_H). + * (go/gogo-tree.o): Depend on go/gofrontend/backend.h. + +2011-04-15 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::compound_statement): New function. + (Gcc_backend::assignment_statement): Use error_statement. + (Gcc_backend::return_statement): Likewise. + (Gcc_backend::if_statement): Likewise. + (Gcc_backend::switch_statement): Likewise. + (Gcc_backend::statement_list): Likewise. + +2011-04-14 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::error_statement): New function. + +2011-04-13 Ian Lance Taylor + + * Make-lang.in (go/gogo-tree.o): depend on $(GO_RUNTIME_H). + +2011-04-13 Ian Lance Taylor + + * Make-lang.in (GO_OBJS): Add go/runtime.o. + (GO_RUNTIME_H): New variable. + (go/runtime.o): New target. + (go/gogo.o): Depend on $(GO_RUNTIME_H). + (go/statements.o): Likewise. + +2011-04-12 Nathan Froyd + + * go-lang.c (union lang_tree_node): Check for TS_COMMON before + calling TREE_CHAIN. + +2011-04-06 Ian Lance Taylor + + * go-gcc.cc (if_statement): Use build3_loc. + (Gcc_backend::switch_statement): New function. + (Gcc_backend::statement_list): New function. + +2011-04-06 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::if_statement): New function. + (tree_to_stat): New function. + (expr_to_tree): Renamed from expression_to_tree. + (stat_to_tree): Renamed from statement_to_tree. + +2011-04-06 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::expression_statement): New function. + +2011-04-04 Ian Lance Taylor + + * go-gcc.c (class Blabel): Define. + (Gcc_backend::make_expression): New function. + (get_identifier_from_string): New function. + (Gcc_backend::label): New function. + (Gcc_backend::label_definition_statement): New function. + (Gcc_backend::goto_statement): New function. + (Gcc_backend::label_address): New function. + (expression_to_tree): New function. + * Make-lang.in (go/expressions.o): Depend on + go/gofrontend/backend.h. + (go/gogo.o): Likewise. + +2011-04-04 Ian Lance Taylor + + * go-gcc.cc: #include "tree-iterator.h", "gimple.h", and "gogo.h". + (class Bfunction): Define. + (Gcc_backend::assignment_statement): Rename from assignment. + Check for errors. + (Gcc_backend::return_statement): New function. + (tree_to_function): New function. + * Make-lang.in (go/go-gcc.o): Depend on tree-iterator.h, + $(GIMPLE_H), and $(GO_GOGO_H). + +2011-04-03 Ian Lance Taylor + + * go-gcc.cc: New file. + * Make-lang.in (GO_OBJS): Add go/go-gcc.o. + (go/go-gcc.o): New target. + (go/go.o): Depend on go/gofrontend/backend.h. + (go/statements.o): Likewise. + +2011-02-14 Ralf Wildenhues + + * gccgo.texi (Top, Import and Export): Fix a typo and a markup nit. + +2011-02-08 Ian Lance Taylor + + * go-lang.c (go_langhook_init_options_struct): Set + frontend_set_flag_errno_math. Don't set x_flag_trapping_math. + +2011-01-31 Rainer Orth + + * gospec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use + LD_STATIC_OPTION, LD_DYNAMIC_OPTION. + +2011-01-21 Ian Lance Taylor + + * go-lang.c (go_langhook_init): Omit float_type_size when calling + go_create_gogo. + * go-c.h: Update declaration of go_create_gogo. + +2011-01-13 Ian Lance Taylor + + * go-backend.c: Include "rtl.h" and "target.h". + (go_imported_unsafe): New function. + * go-c.h (go_imported_unsafe): Declare. + * Make-lang.in (go/go-backend.o): Depend on $(RTL_H). + (go/gogo-tree.o): Remove dependency on $(RTL_H). + (go/unsafe.o): Depend on $(GO_C_H). + +2010-12-31 Joern Rennecke + + PR go/47113 + * go-backend.c: (go_field_alignment): Add ATTRIBUTE_UNUSED to + variable ‘field’ . + +2010-12-21 Ian Lance Taylor + + * Make-lang.in (check-go): Remove. + (lang_checks_parallelized): Add check-go. + (check_go_parallelize): Set. + +2010-12-13 Ian Lance Taylor + + * gospec.c (lang_specific_driver): Add a -o option if not linking + and there is no -o option already. + +2010-12-07 Ian Lance Taylor + + PR tree-optimization/46805 + PR tree-optimization/46833 + * go-lang.c (go_langhook_type_for_mode): Handle vector modes. + +2010-12-06 Ian Lance Taylor + + PR other/46789 + PR bootstrap/46812 + * go-lang.c (go_char_p): Define type and vectors. + (go_search_dirs): New static variable. + (go_langhook_handle_option): Use version and version/machine + directories for -L. + (go_langhook_post_options): Add non-specific -L paths. + * Make-lang.in (go/go-lang.o): Define DEFAULT_TARGET_VERSION and + DEFAULT_TARGET_MACHINE when compiling. + * gccgo.texi (Invoking gccgo): Only document -L for linking. + (Import and Export): Don't mention -L for finding import files. + +2010-12-03 Ian Lance Taylor + + PR bootstrap/46776 + * go-backend.c: New file. + * go-c.h (go_type_alignment): Declare. + (go_field_alignment, go_trampoline_info): Declare. + * Make-lang.in (GO_OBJS): Add go/go-backend.o. + (go/go-backend.o): New target. + (go/go-lang.o): Make dependencies match source file. + (go/expressions.o): Don't depend on $(TM_H) $(TM_P_H). + (go/gogo-tree.o): Don't depend on $(TM_H). + +2010-12-03 Ian Lance Taylor + + * config-lang.in (build_by_default): Set to no. + +2010-12-02 Ian Lance Taylor + + Go frontend added to gcc repository. diff --git a/gcc/go/gccgo.texi b/gcc/go/gccgo.texi index f6fc3a6b541..d7222d50129 100644 --- a/gcc/go/gccgo.texi +++ b/gcc/go/gccgo.texi @@ -12,7 +12,7 @@ @include gcc-common.texi @c Copyright years for this manual. -@set copyrights-go 2010-2013 +@set copyrights-go 2010-2014 @copying @c man begin COPYRIGHT diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 5ab19210cb7..a9d272878cc 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,22897 +1,9 @@ -2013-12-19 Jakub Jelinek - - PR other/59545 - * class.c (hashUtf8String): Compute hash in unsigned type. - * javaop.h (WORD_TO_INT): Avoid signed integer overflow. - -2013-11-22 Andrew MacLeod - - * java-gimplify.c: Add required include files from gimple.h. - -2013-11-22 David Malcolm - - * class.c (maybe_layout_super_class): Update comment. - * decl.c (java_add_stmt): Remove use of input_filename macro. - * jcf-parse.c (set_source_filename): Remove use of - input_filename macro. - (parse_class_file): Remove use of input_line and input_filename - macros. - (java_parse_file): Remove use of input_filename macro. - -2013-11-18 Richard Sandiford - - * class.c, expr.c: Replace tree_low_cst (..., 0) with tree_to_shwi - throughout. - -2013-11-18 Richard Sandiford - - * class.c, expr.c: Replace host_integerp (..., 0) with - tree_fits_shwi_p throughout. - -2013-11-14 Andrew MacLeod - - * java-gimplify.c: Include only gimplify.h and gimple.h as needed. - -2013-11-14 Diego Novillo - - * builtins.c: Include stor-layout.h. - Include stringpool.h. - * class.c: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - * constants.c: Include stringpool.h. - Include stor-layout.h. - * decl.c: Include stor-layout.h. - Include stringpool.h. - Include varasm.h. - * except.c: Include stringpool.h. - Include stor-layout.h. - * expr.c: Include stringpool.h. - Include stor-layout.h. - * jcf-parse.c: Include stringpool.h. - * mangle.c: Include stringpool.h. - * resource.c: Include stringpool.h. - Include stor-layout.h. - * typeck.c: Include stor-layout.h. - Include stringpool.h. - * verify-glue.c: Include stringpool.h. - -2013-11-12 Andrew MacLeod - - * java-gimplify.c: Include gimplify.h. - -2013-11-07 Jeff Law - - * builtins.c (initialize_builtins): Provide __builtin_trap. - -2013-10-29 David Malcolm - - Patch autogenerated by refactor_symtab.py from - https://github.com/davidmalcolm/gcc-refactoring-scripts - revision 58bb219cc090b2f4516a9297d868c245495ee622 - - * decl.c (java_mark_decl_local): Update for conversion of symtab types - to a true class hierarchy. - -2013-10-14 David Malcolm - - * lang.c (java_handle_option): Update for introduction of - gcc::dump_manager. - -2013-09-25 Tom Tromey - - * Make-lang.in (jvspec.o): Remove. - (CFLAGS-java/jvspec.o): New variable. - ($(XGCJ)$(exeext), java_OBJS): Use java/jvspec.o - (java/jvspec.o-warn): Rename from jvspec.o-warn. - (JAVA_TREE_H, java/jcf-dump.o, java/boehm.o, java/builtins.o) - (java/class.o, java/constants.o, java/decl.o, java/except.o) - (java/expr.o, java/jcf-depend.o, java/jcf-parse.o) - (java/jvgenmain.o, java/lang.o, java/mangle.o, java/mangle_name.o) - (java/resource.o java/typeck.o, java/win32-host.o) - (java/verify-glue.o, java/verify-impl.o, java/zextract.o) - (java/java-gimplify.o, java/jcf-io.o, java/jcf-path.o): Remove. - -2013-09-25 Tom Tromey - - * Make-lang.in (jvspec.o): Don't use subshell. - -2013-06-05 Jan Hubicka - - * class.c (emit_register_classes_in_jcr_section): Use DECL_PRESERVE_P - instead of mark_decl_referenced. - -2013-05-29 Jan Hubicka - - * decl.c (java_mark_decl_local): Update for new symtab flags. - -2013-05-22 Matthias Klose - - * jvspec.c (jvgenmain_spec): Add %I to cc1 call. - -2013-05-16 Jason Merrill - - * Make-lang.in (jc1$(exeext)): Use link mutex. - -2013-05-06 Jakub Jelinek - - PR libgcj/57074 - * class.c (emit_symbol_table): Use array type of the - right size for the_syms_decl and its DECL_INITIAL, instead - of symbols_array_type. Set TREE_TYPE (the_syms_decl) to it. - (emit_assertion_table): Use array type of the right size - for table_decl and its DECL_INITIAL. - -2013-04-15 Gerald Pfeifer - - * gcj.texi (Configure-time Options): Refer to GCC, not gcc. - (Resources): Adjust reference to Mauve. - Remove link to java.sun.com. - Refer to GCC, not gcc. - -2013-04-09 Richard Biener - - * expr.c (build_java_binop): Pass a type to build_int_cst. - -2013-03-22 Kai Tietz - - * lang.c (put_decl_node): Don't iterate over end_params_node. - -2013-01-03 Jakub Jelinek - - * jcf-dump.c (version): Update copyright notice dates. - -2012-11-16 Diego Novillo - - Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec) - - * boehm.c: Use new vec API in vec.h. - * class.c: Likewise. - * constants.c: Likewise. - * decl.c: Likewise. - * expr.c: Likewise. - * java-tree.h: Likewise. - * jcf-parse.c: Likewise. - * resource.c: Likewise. - * verify-glue.c: Likewise. - -2012-11-15 Jan Hubicka - - * builtins.c (define_builtin): Accept ECF flags and - use set_call_expr_flags. - (initialize_builtins): Update. - -2012-10-01 Lawrence Crowl - - * Make-lang.in (JAVA_OBJS): Add dependence on hash-table.o. - (JCFDUMP_OBJS): Add dependence on hash-table.o. - (jcf-io.o): Add dependence on hash-table.h. - * jcf-io.c (memoized_class_lookups): Change to use type-safe hash table. - -2012-09-24 Lawrence Crowl - - * decl.c (java_init_decl_processing): Change to new double_int API. - * jcf-parse.c (get_constant): Likewise. - * boehm.c (mark_reference_fields): Likewise. - (get_boehm_type_descriptor): Likewise. - -2012-07-30 Laurynas Biveinis - - * jcf.h (CPool): Use the "atomic" GTY option for the tags field. - (bootstrap_method): Likewise for the bootstrap_arguments field. - -2012-07-16 Steven Bosscher - - * java-gimplify.c: Include dumpfile.h instead of tree-dump.h - * Make-lang.in: Fix dependencies. - -2012-07-11 Steven Bosscher - - * java-tree.h (force_evaluation_order): Remove prototype. - * expr.c (force_evaluation_order): Remove unused function. - -2012-07-11 Steven Bosscher - - * decl.c: Do not include libfuncs.h. - * class.c: Do not include defaults.h. - * jvgenmain.c: Likewise. - * magnle.c: Likewise. - * Make-lang.in (decl.o): Fix dependencies. - -2012-07-08 Steven Bosscher - - * verify.h: Do not include system.h and coretypes.h here. - * verify-impl.c: Include them here instead. - -2012-07-05 Uros Bizjak - - * jcf-io.c (read_zip_member): Initialize d_stream. - -2012-05-31 Steven Bosscher - - * resource.c: Do not include output.h. - -2012-05-21 John David Anglin - - PR java/52815 - * class.c (emit_register_classes_in_jcr_section): Revise placement - of #ifdef JCR_SECTION_NAME. - -2012-04-22 Jan Hubicka - - * class.c (build_utf8_ref): Do not mark varpool node as needed. - -2012-04-20 Jan Hubicka - - * class.c (make_local_function_alias): Do not mark symbol referenced. - -2012-04-11 Rainer Orth - - * jcf-dump.c (print_constant): Cast JPOOL_USHORT2, JPOOL_USHORT1 - results to long to match formats. - -2012-04-11 Andrew Haley - - * jcf-reader.c (jcf_parse_bootstrap_methods): Add - ATTRIBUTE_UNUSED. - -2012-04-11 Andrew Haley - - * jcf.h (bootstrap_method): New. - (BootstrapMethods): New. - (JCF): Add BootstrapMethods. - (enum cpool_tag): Add MethodHandle, MethodType, and InvokeDynamic. - * jcf-reader.c (jcf_parse_bootstrap_methods): New. - (jcf_parse_constant_pool): Handlers for MethodHandle, MethodType, - and InvokeDynamic. - (jcf_parse_bootstrap_methods): New. - * javaop.def (invokedynamic): New opcode. - * jcf-parse.c (get_constant): An unknown constant type should not - be an internal error, but a fatal one. Make it so. - * jcf-dump.c (HANDLE_BOOTSTRAP_METHODS_ATTRIBUTE): New. - (HANDLE_END_BOOTSTRAP_METHODS): New. - (print_constant): Handlers for MethodHandle, MethodType, and - InvokeDynamic. - -2012-04-02 Rainer Orth - - * class.c (emit_register_classes_in_jcr_section): Set DECL_USER_ALIGN. - Clear TREE_READONLY. - -2012-03-29 Steven Bosscher - - PR java/52730 - * class.c (emit_register_classes_in_jcr_section): New function. - (emit_Jv_RegisterClass_calls): New function, split out from ... - (emit_register_classes): ... here. Reorganize. Do not call - output_constant. - -2012-01-23 Andreas Schwab - - * lang.c (java_init_options_struct): Set - frontend_set_flag_trapping_math. - -2012-01-01 Jakub Jelinek - - * jcf-dump.c (version): Update copyright notice dates. - -2011-12-03 Matthias Klose - - * expr.c (SPECIAL_WIDE): Fix typo in message. - -2011-11-23 Jeffrey A Law (law@cygnus.com) - - * lang.c (java_init_options_struct): Disable optimizations - which assume a NULL pointer dereference will cause a fault. - -2011-11-07 Richard Henderson - - * builtins.c (compareAndSwapInt_builtin): Use can_compare_and_swap_p. - (compareAndSwapLong_builtin): Likewise. - (compareAndSwapObject_builtin): Likewise. - (VMSupportsCS8_builtin): Likewise. - -2011-11-02 Rainer Orth - - * Make-lang.in (jvspec.o): Pass SHLIB instead of SHLIB_LINK. - -2011-10-15 Tom Tromey - Dodji Seketeli - - * jcf-parse.c (set_source_filename): Adjust to the new map API. - -2011-10-11 Michael Meissner - - * class.c (build_static_field_ref): Delete old interface with two - parallel arrays to hold standard builtin declarations, and replace - it with a function based interface that can support creating - builtins on the fly in the future. Change all uses, and poison - the old names. Make sure 0 is not a legitimate builtin index. - * decl.c (java_init_decl_processing): Ditto. - * except.c (compareAndSwapLong_builtin): Ditto. - (compareAndSwapObject_builtin): Ditto. - (putVolatile_builtin): Ditto. - (define_builtin): Ditto. - (check_for_builtin): Ditto. - * expr.c (rewrite_arglist_getcaller): Ditto. - (expand_java_field_op): Ditto. - -2011-08-24 Joseph Myers - - * Make-lang.in (CFLAGS-java/jcf-io.o, CFLAGS-java/jcf-path.o): - New. - (java/jcf-io.o, java/jcf-path.o): Remove explicit compilation - rules. - -2011-08-18 Peter Collingbourne - - * expr.c (expand_invoke) Use the type of the method rewrite - target. - -2011-08-10 Rainer Orth - - * jcf-dump.c (print_constant): Cast first frexp arg. - -2011-08-08 Rainer Orth - - * Make-lang.in ($(XGCJ)$(exeext)): Add $(EXTRA_GCC_LIBS). - -2011-07-19 Richard Guenther - - * builtins.c (static): Use fold_build_pointer_plus. - * class.c (make_class_data): Likewise. - (build_symbol_entry): Likewise. - * except.c (build_exception_object_ref): Likewise. - * expr.c (build_java_arrayaccess): Likewise. - (build_field_ref): Likewise. - (build_known_method_ref): Likewise. - (build_invokevirtual): Likewise. - -2011-07-06 Richard Guenther - - * decl.c (java_init_decl_processing): - Merge calls to build_common_tree_nodes and build_common_tree_nodes_2. - -2011-06-21 Andrew MacLeod - - * builtins.c: Add sync_ or SYNC__ to builtin names. - * expr.c: Add sync_ or SYNC__ to builtin names. - -2011-06-07 Richard Guenther - - * decl.c (java_init_decl_processing): Call build_common_nodes, - build_common_nodes_2 at the beginning. Remove then duplicate - initializations. - -2011-06-07 Richard Guenther - - * decl.c (java_init_decl_processing): Properly initialize - size_type_node. - -2011-05-30 Joern Rennecke - - PR middle-end/46500 - * expr.c: Include "tm.h" . - -2011-05-26 Nathan Froyd - - * decl.c (poplevel): Don't access TREE_TYPE of BLOCKs. - * expr.c (build_jni_stub): Likewise. - -2011-05-24 Joseph Myers - - * Make-lang.in ($(XGCJ)$(exeext)): Use libcommon-target.a instead - of prefix.o. - -2011-05-20 Joseph Myers - - * Make-lang.in ($(XGCJ)$(exeext)): Don't explicitly use intl.o and - version.o. - (JCFDUMP_OBJS): Remove errors.o, version.o and intl.o. - (JVGENMAIN_OBJS): Remove errors.o and intl.o. - (java/jcf-dump.o, java/jvgenmain.o): Depend in $(DIAGNOSTIC_H). - * jcf-dump.c: Include diagnostic.h. - (main): Initialize diagnostics. - * jvgenmain.c: Include diagnostic.h. - (main): Initialize diagnostics. - -2011-05-11 Nathan Froyd - - * java-tree.h (TYPE_ARGUMENT_SIGNATURE): Use TYPE_MINVAL. - -2011-05-07 Eric Botcazou - - * java-tree.h (global_bindings_p): Adjust prototype. - * decl.c (global_bindings_p): Return bool. - -2011-05-05 Nathan Froyd - - * expr.c (expand_java_switch): Call build_case_label. - (expand_java_add_case): Likewise. - -2011-04-29 Richard Guenther - - PR middle-end/48819 - * constants.c (build_constants_constructor): Use ptr_type_node for - temp. - -2011-04-20 Jim Meyering - - * jcf-parse.c (java_parse_file): Remove useless if-before-free. - -2011-04-18 Jim Meyering - - * jcf-parse.c: Fix typo in comment. - -2011-04-14 Nathan Froyd - - * decl.c (poplevel): Use BLOCK_CHAIN and block_chainon. - -2011-04-12 Nathan Froyd - - * java-tree.h (union lang_tree_node): Check for TS_COMMON before - calling TREE_CHAIN. - -2011-04-11 Martin Jambor - - * decl.c (java_mark_decl_local): Call cgraph_get_node instead of - cgraph_node and handle returned NULL. - -2011-03-25 Kai Tietz - - * jcf-parse.c (java_read_sourcefilenames): Use filename_cmp - instead of strcmp. - (set_source_filename): Likewise. - * win32-host.c (jcf_open_exact_case): Likewise. - -2011-03-21 Kai Tietz - - PR target/12171 - * lang.c (java_attribute_table): Adjust table. - -2011-02-13 Joseph Myers - - * jvspec.c (jvgenmain_spec): Remove %{a*}. - -2011-01-21 Kai Tietz - - PR bootstrap/47215 - * decl.c (java_init_decl_processing): Remove - va_list_type_node related type initializations. - -2011-01-11 Kai Tietz - - PR bootstrap/47215 - * decl.c (java_init_decl_processing): Initialize - long_integer_type_node. - -2011-01-07 Kai Tietz - - PR bootstrap/47215 - * decl.c (java_init_decl_processing): Initialize unsigned_type_node. - -2011-01-07 Kai Tietz - - * decl.c (java_init_decl_processing): Setup va_list_type_node. - -2011-01-03 Jakub Jelinek +2014-01-02 Tobias Burnus * jcf-dump.c (version): Update copyright notice dates. - -2010-12-15 Dave Korn - - * decl.c (java_init_decl_processing): Initialise integer_three_node. - * lang.c (put_decl_node): Handle nested function decls. - -2010-12-07 Joseph Myers - - * jcf-parse.c: Don't include assert.h. - (java_parse_file): Use gcc_assert. - -2010-12-03 Joseph Myers - - * lang.opt (static-libgcj): New option. - -2010-12-01 Joseph Myers - - * jcf-parse.c: Don't include toplev.h. - * Make-lang.in (java/jcf-parse.o): Don't depend on toplev.h. - -2010-11-30 Joseph Myers - - * boehm.c: Don't include toplev.h. - * Make-lang.in (java/boehm.o): Don't depend on toplev.h. - -2010-11-30 Joseph Myers - - * expr.c, lang.c, mangle.c, mangle_name.c, typeck.c, - verify-glue.c: Don't include toplev.h. - * Make-lang.in: Dependencies for above files changed to remove - toplev.h. - -2010-11-29 Joseph Myers - - * boehm.c: Include "config.h" instead of . - * builtins.c: Don't include . - * class.c: Don't include "stdio.h". - (O_BINARY): Don't define here. - * jcf-depend.c: Don't include . - (jcf_dependency_set_dep_file, jcf_dependency_init, - jcf_dependency_write): Use gcc_assert. - * jcf-io.c (O_BINARY): Don't define here. - * jcf-path.c: Don't include "tm.h". - (jcf_path_init): Use getenv instead of GET_ENVIRONMENT. - * resource.c: Don't include "stdio.h". - (O_BINARY): Don't define here. - * verify-impl.c: Don't include . - -2010-11-17 Joseph Myers - - * jcf-parse.c (java_parse_file): Take no arguments. - * java-tree.h (java_parse_file): Update prototype. - -2010-11-09 Joern Rennecke - Andrew Haley - - PR java/46386 - * config/pdp11/t-pdp11 (java/constants.o-warn): Remove. - -2010-11-12 Joseph Myers - - * Make-lang.in (jvspec.o, java/lang.o): Use $(OPTS_H). - * lang.c (java_handle_option): Take location_t parameter. - -2010-11-10 Joseph Myers - - * expr.c (expand_java_field_op): Use %' in diagnostic. - * jcf-parse.c (java_parse_file): Use %' in diagnostics. - * jvspec.c (lang_specific_driver): Use %' in diagnostic. - * lang.c (java_post_options): Use %' in diagnostics. - -2010-11-06 Joern Rennecke - - PR middle-end/46314 - * class.c: Include target.h. - (make_local_function_alias): - Use targetm.asm_out.generate_internal_label. - * expr.c (lookup_label, generate_name): Likewise. - -2010-11-03 Joern Rennecke - - PR bootstrap/44335 - * jfc-parse.c (target.h): Include. - (handle_constant): Use targetm.words_big_endian and - targetm.float_words_big_endian. - (get_constant): Use targetm.float_words_big_endian. - -2010-10-13 Richard Henderson - - * lang.c (java_eh_personality): Update call to - build_personality_function. - -2010-10-12 Joseph Myers - - * Make-lang.in (java/lang.o): Use $(OPTIONS_H) instead of - options.h. - -2010-10-11 Nathan Froyd - - * decl.c (java_init_decl_processing): Use build_function_type_list - instead of build_function_type. - * jcf-parse.c (java_emit_static_constructor): Likewise. - * builtins.c (initialize_builtins): Likewise. - -2010-10-08 Joseph Myers - - * lang.c (java_init_options_struct): New. Split out from - java_init_options. - (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define. - -2010-10-04 Andi Kleen - - * Make-lang.in (xgcj, jc1, jcf-dump, jvgenmain): - Add + to build rule. - -2010-09-29 Joseph Myers - - * lang.opt: Don't use VarExists. - -2010-09-29 Joseph Myers - - * java-tree.h (flag_filelist_file, flag_assert, flag_jni, - flag_force_classes_archive_check, flag_redundant, flag_newer, - flag_use_divide_subroutine, flag_use_atomic_builtins, - flag_use_boehm_gc, flag_hash_synchronization, - flag_check_references, flag_optimize_sci, flag_indirect_classes, - flag_indirect_dispatch, flag_store_check, - flag_reduced_reflection): Remove. - * jcf-dump.c (flag_newer): Remove. - * jcf.h (quiet_flag): Remove. - * parse.h (quiet_flag): Remove. - -2010-09-28 Richard Henderson - - * lang.c: Include "target.h". - (java_eh_personality): Use targetm.except_unwind_info. - * Make-lang.in (lang.o): Update deps. - -2010-09-27 Andrew Haley - - PR java/45773 - * jvgenmain.c (main): Fix arg processing. - -2010-09-22 Joseph Myers - - * jvspec.c (lang_specific_driver): Handle OPT__help instead of - OPT_fhelp. - * lang.opt (-CLASSPATH, -all-warnings, -bootclasspath, -classpath, - -dependencies, -encoding, -extdirs, -include-directory, - -include-directory=, -output-class-directory, - -output-class-directory=, -resource, -resource=, - -user-dependencies): New. - -2010-09-16 Richard Guenther - - * jcf-parse.c (current_file_list): Remove. - (java_parse_file): Use build_translation_unit_decl. Adjust. - -2010-09-03 Joseph Myers - - * lang.opt (d): New. - -2010-09-03 H.J. Lu - - PR java/45504 - * jvgenmain.c (main): Check "-D XXX=YYY". - -2010-09-02 Joseph Myers - - * jvspec.c (jvgenmain_spec): Don't handle -fnew-verifier. - -2010-09-02 Joseph Myers - - * lang.opt (CLASSPATH, bootclasspath, classpath, encoding, - fCLASSPATH=): Mark as Java options and as aliases. - * jvspec.c (jvgenmain_spec): Don't handle -fCLASSPATH*. - (lang_specific_driver): Don't handle options marked as aliases. - * lang.c (java_handle_option): Don't handle OPT_fCLASSPATH_. - -2010-08-22 Joseph Myers - - * Make-lang.in (jvspec.o): Update dependencies. - * jvspec.c: Include opts.h. - (PARAM_ARG): Remove. - (find_spec_file): Do not add leading -specs=. - (lang_specific_driver): Use cl_decoded_option structures. - * lang.opt (C, CLASSPATH, D, bootclasspath, classpath, encoding, - extdirs, fmain=, s-bc-abi): New options. - -2010-08-20 Nathan Froyd - - * class.c: Use FOR_EACH_VEC_ELT. - * expr.c: Likewise. - * jcf-parse.c: Likewise. - * resource.c: Likewise. - -2010-08-16 Joseph Myers - - * lang.opt (MD_, MMD_, version): Mark RejectDriver. - -2010-08-05 David Daney - - * class.c (build_utf8_ref): Fix code formatting from previous commit. - -2010-08-05 David Daney - - * class.c (build_utf8_ref): Make decl DECL_USER_ALIGN. - -2010-07-27 Joseph Myers - - * lang.c (java_handle_option): Update prototype and return value - type. - -2010-07-27 Joseph Myers - - * lang.c (java_option_lang_mask): New. - (java_init_options): Update prototype. - (LANG_HOOKS_OPTION_LANG_MASK): Define. - -2010-07-15 Nathan Froyd - - * java-tree.h: Carefully replace TREE_CHAIN with DECL_CHAIN. - * boehm.c: Likewise. - * class.c: Likewise. - * decl.c: Likewise. - * expr.c: Likewise. - * jcf-parse.c: Likewise. - * typeck.c: Likewise. - * verify-glue.c: Likewise. - -2010-07-08 Manuel López-Ibáñez - - * boehm.c: Include diagnostic-core.h in every file that includes - toplev.h. - * class.c: Likewise. - * constants.c: Likewise. - * decl.c: Likewise. - * except.c: Likewise. - * expr.c: Likewise. - * jcf-parse.c: Likewise. - * mangle.c: Likewise. - * mangle_name.c: Likewise. - * resource.c: Likewise. - * typeck.c: Likewise. - * verify-glue.c: Likewise. - -2010-07-05 Nathan Froyd - - PR bootstrap/44825 - * class.c (make_class_data): Cast result of VEC_length calls to int. - -2010-07-05 Nathan Froyd - - * constants.c (build_constants_constructor): Use build_constructor - instead of build_constructor_from_list. - * class.c (make_method_value): Likewise. - (get_dispatch_table): Likewise. - (make_class_data): Likewise. - (emit_indirect_register_classes): Likewise. - (emit_symbol_table): Likewise. - (add_assertion_table_entry): Likewise. - (emit_assertion_table): Likewise. - (make_field_value): Use build_constructor_single instead of - build_constructor_from_list. - -2010-06-28 Nathan Froyd - - * java-tree.h (struct lang_type) [catch_classes]: Change type to a - VEC. - * except.c (prepare_eh_table_type): Call CONSTRUCTOR_APPEND_ELT - instead of tree_cons. - * class.c (make_class): Add dummy entry to TYPE_CATCH_CLASSES. - (emit_catch_table): Adjust for new type of TYPE_CATCH_CLASSES. - -2010-06-28 Steven Bosscher - - * lang.c: Do not include except.h - * except.c: Likewise. - (doing_eh): New, moved from except.c (in gcc/) but removed the - do_warning flag. - (maybe_start_try): Update doing_eh call. - * Make-lang.in: Update dependencies. - -2010-06-23 Anatoly Sokolov - - * decl.c (java_init_decl_processing): Use double_int_to_tree instead - of build_int_cst_wide. - * boehm.c (set_bit): Remove. - (mark_reference_fields): Use double_int type for 'mask' argument. - Use double_int_setbit instead of set_bit. - (get_boehm_type_descriptor): Use double_int_setbit instead of - set_bit. Use double_int_to_tree instead of build_int_cst_wide. - -2010-06-10 Gerald Pfeifer - - * gcj.texi: Move to GFDL version 1.3. Fix copyright years. - -2010-06-08 Laurynas Biveinis - - * jcf-reader.c (jcf_parse_constant_pool): Use typed GC allocation. - - * jcf-parse.c (java_parse_file): Likewise. - (process_zip_dir): Likewise. - - * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Likewise. - (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Likewise. - - * expr.c (add_type_assertion): Likewise. - - * decl.c (make_binding_level): Likewise. - (java_dup_lang_specific_decl): Likewise. - - * constants.c (set_constant_entry): Likewise. - (cpool_for_class): Likewise. - - * class.c (add_method_1): Likewise. - (java_treetreehash_new): Likewise. - - * java-tree.h (struct lang_type): Add variable_size GTY option. - (struct lang_decl): Likewise. - - * jch.h (struct cpool_entry): Likewise. - - * java-tree.h (java_treetreehash_create): Remove parameter ggc. - - * except.c (prepare_eh_table_type): Update - java_treetreehash_create call. - - * class.c (add_method_1): Update java_treetreehash_create call. - (java_treetreehash_create): Remove parameter gc. Use - htab_create_ggc. - -2010-06-04 Joseph Myers - - * jvspec.c (lang_specific_driver): Use GCC-specific formats in - diagnostics. - -2010-05-30 Steven Bosscher - - * except.c: Include tm.h. - -2010-05-28 Joseph Myers - - * jvspec.c (lang_specific_driver): Use fatal_error instead of - fatal. Use warning instead of error for warnings. - -2010-05-28 Nathan Froyd - - * expr.c (get_symbol_table_index): Add spaces in expression. - -2010-05-28 Nathan Froyd - - * java-tree.h (method_entry): Declare. Declare VECs containing it. - (struct lang_type): Change type of otable_methods, atable_methods, and - itable_methods to VECs. Fix comment for atable_methods. - (emit_symbol_table): Take a VEC instead of a tree. - (get_symbol_table_index): Take a VEC * instead of a tree *. - * class.c (add_table_and_syms): Take a VEC instead of a tree. - (emit_symbol_table): Update for changed parameter type. - * expr.c (get_symbol_table_index): Likewise. - -2010-05-27 Steven Bosscher - - * buildings.c: Pretend to be a backend file by undefining - IN_GCC_FRONTEND (still need rtl.h here). - -2010-05-26 Nathan Froyd - - * java-tree.h (struct lang_decl_func): Change type of throws_list - field to a VEC. - * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): Adjust for changed type - of DECL_FUNCTION_THROWS. - * class.c (make_method_value): Likewise. - -2010-05-26 Nathan Froyd - - * class.c (utf8_decl_list): Delete. - (build_utf8_ref): Remove references to it. - * java-tree.h (all_class_list): Delete. - (predef_filenames): Delete. - (enum java_tree_index) [JTI ALL_CLASS_LIST,JTI_PREDEF_FILENAMES]: - Delete. - * jcf-parse.c (parse_roots): Decrease size to 2. - (current_file_list): Convert to a VEC. - (all_class_list): Declare. - (jcf_parse): Adjust for new type of all_class_list. - (java_layout_seen_class_methods): Likewise. - (predefined_filenames): Declare. - (add_predefined_file): Use it. - (predefined_filename_p): Likewise. - (java_parse_file): Adjust for new type of current_file_list. - -2010-05-25 Jakub Jelinek - - * lang.c (java_classify_record): Return RECORD_IS_INTERFACE - for interfaces. - - PR debug/43260 - * java-tree.h (pending_static_fields): New extern declaration. - (java_write_globals): New prototype. - * lang.c (LANG_HOOKS_WRITE_GLOBALS): Define. - * decl.c (java_mark_class_local): When clearing DECL_EXTERNAL - of a static field push it into pending_static_fields vector. - * class.c (pending_static_fields): New variable. - (add_field): If static field is not DECL_EXTERNAL, push it into - pending_static_fields vector. - (java_write_globals): New function. - -2010-05-24 Nathan Froyd - - * expr.c (quick_stack): Change type to a VEC. Update comment. - (tree_list_free_list): Delete. - (flush_quick_stack): Update for quick_stack type change. - (push_value): Likewise. - (pop_value): Likewise. - -2010-05-23 Steven Bosscher - - * java-gimplify.c: Do not include tm.h, toplev.h. - * typeck.c: Do not include tm.h. - * mangle_name.c: Do not include tm.h. - * jcf-dump.c: Do not include tm.h, ggc.h. - * class.c: Do not include rtl.h, tm_p.h, target.h, except.h, cgraph.h. - * decl.c: Do not include tm.h, rtl.h, function.h, expr.h, except.h, - and timevar.h. - * jcf-parse.c: Do not include tm.h and tm_p.h. - * resource.c: Do not include tm.h, rtl.h, flags.h, obstack.h, - target.h, and expr.h. - * except.c: Do not include tm.h, rtl.h, function.h. - * builtins.c: Do not include convert.h. Explain why RTL headers - have to be included here. - * verify-glue.c: Do not include tm.h. - * jcf-depend.c: Do not include tm.h. - * jcf-reader.c: Include ggc.h. - * jcf-io.c: Do not include tm.h, toplev.h. - * expr.c: Do not include tm.h, rtl.h, expr.h, except.h, tm_p.h, - gimple.h. - * lang.c: Do not include rtl.h, expr.h. - * Make-lang.in: Update dependencies. - -2010-05-23 Steven Bosscher - - * jcf-parse.c: Include bitmap.h. - * Make-lang.in: Update dependencies. - -2010-05-20 Jakub Jelinek - - PR debug/43521 - * decl.c (start_java_method): Set DECL_ARTIFICIAL on the 'this' - PARM_DECL. - -2010-05-19 Anatoly Sokolov - - * jcf-parse.c (get_constant): Use double_int_to_tree instead of - build_int_cst_wide_type. - -2010-05-18 Nathan Froyd - - * expr.c (pop_arguments): Fix use of undeclared variable. - -2010-05-18 Nathan Froyd - - * expr.c (expand_java_multianewarray): Use build_call_vec instead of - build_call_list. - (pop_arguments): Return a VEC instead of a tree. Take a method type - rather than a list of argument types. - (rewrite_rule): Change signature. of rewrite_arglist member. - (rewrite_arglist_getcaller): Update signature. - (rewrite_arglist_getclass): Likewise. - (maybe_rewrite_invocation): Update for rewrite_arglist change. - (build_known_method_ref): Take a VEC instead of a tree. - (invoke_build_dtable): Likewise. - (expand_invoke): Update calls to pop_arguments. Use build_call_vec - instead of build_call_list. - (build_jni_stub): Use build_call_vec instead of build_call_list. - * java-tree.h (maybe_rewrite_invocation): Update declaration. - (build_known_method_ref): Likewise. - (invoke_build_dtable): Likewise. - -2010-05-14 Nathan Froyd - - PR 44103 - * java-tree.h (START_RECORD_CONSTRUCTOR): Change first argument to a - vector. Move call to build_constructor... - (FINISH_RECORD_CONSTRUCTOR): ...here. Add necessary arguments. Clear - TREE_CONSTANT on the constructor. - (PUSH_SUPER_VALUE): Change first argument to a vector. - (PUSH_FIELD_VALUE): Likewise. - * resource.c (compile_resource_data): Update calls to above macros. - * constants.c (build_constants_constructor): Likewise. - * class.c (build_utf8_ref): Likewise. - (make_field_value): Likewise. - (make_method_value): Likewise. - (add_table_and_syms): New function. - (make_class_data): Call it. Update calls to above macros. - (build_symbol_table_entry): New function. - (build_symbol_entry): Call it. Update calls to above macros. - (emit_symbol_table): Likewise. - (make_catch_class_record): Update calls to above macros. - (build_assertion_table_entry): New function. - (add_assertion_table_entry): Call it. - (emit_assertion_table): Likewise. - -2010-05-06 Manuel López-Ibáñez - - PR 40989 - * lang.c (java_handle_option): Add argument kind. - -2010-04-18 Eric Botcazou - - * decl.c (java_init_decl_processing): Remove argument in call to - initialize_sizetypes - -2010-04-07 Jakub Jelinek - - * exception.cc (_Jv_Throw): Avoid set but not used warning. - * include/java-assert.h (JvAssertMessage, JvAssert): Use argument in - sizeof to avoid set but not used warnings. - -2010-01-20 Joern Rennecke - - * lang.c (java_post_options): Constify variable "dot". - - * jcf-parse.c (set_source_filename): Constify variable "dot". - (load_class): Constify variable "separator". - Use get_identifier_with_length. - - * jvspec.c (lang_specific_driver): Constify two variables named "p". - -2010-01-09 Jakub Jelinek - - * jcf-dump.c (version): Update copyright notice dates. - -2009-11-28 Jakub Jelinek - - * jvspec.c (lang_specific_driver): Remove unused - saw_verbose_flag variable. - * jcf-dump.c (main): Remove unused general_purpose_bits - variable. - * builtins.c (initialize_builtins): Remove unused float_ftype_float - variable. - * expr.c (java_stack_pop): Remove unused val variable. - (build_jni_stub): Remove unused res_type variable. - * verify-impl.c (check_field_constant): Remove unused len variable. - -2009-10-20 Joel Dice - - PR java/28474 - * mangle_name.c (append_unicode_mangled_name): Fix mangling - of names with multiple underscores and "U". - (unicode_mangling_length): Likewise. - -2009-10-03 Simon Baldwin - - * config-lang.in (lang_dirs): Remove zlib. - -2009-09-28 Richard Henderson - - * builtins.c (initialize_builtins): Update call to - build_common_builtin_nodes. - * lang.c (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New. - -2009-09-14 Richard Henderson - - * builtins.c (initialize_builtins): Update call to - build_common_builtin_nodes. - * decl.c (java_init_decl_processing): Don't call - default_init_unwind_resume_libfunc. - * except.c: Include tree-iterator.h. - (build_exception_object_var): New. - (build_exception_object_ref): Use it. - (expand_end_java_handler): Initialize it from __builtin_eh_pointer. - Attach all CATCH_EXPRs to a single TRY_CATCH_EXPR. - * java-tree.h (DECL_FUNCTION_EXC_OBJ): New. - -2009-09-13 Richard Guenther - Rafael Avila de Espindola - - * decl.c (do_nothing): Remove. - (java_init_decl_processing): Do not set lang_eh_runtime_type. - * Make-lang.in (lang.o): Add $(EXCEPT_H) dependency. - * lang.c (java_eh_personality): New. - (java_eh_personality_decl): Likewise. - (LANG_HOOKS_EH_PERSONALITY): Define. - -2009-09-03 Diego Novillo - - * lang.c (lang_hooks): Remove const qualifier. - -2009-09-01 Jakub Jelinek - - * boehm.c (mark_reference_fields): Compute % in HOST_WIDE_INT - type. - -2009-09-01 Richard Guenther - - * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Remove. - * java-tree.h (java_mark_addressable): Likewise. - * typeck.c (java_mark_addressable): Likewise. - -2009-08-17 Ralf Wildenhues - - * Make-lang.in (java.install-pdf): Install gcj.pdf in - $(pdfdir)/gcc, alongside the other manuals. - -2009-08-12 Andrew Haley - - * builtins.c (compareAndSwapInt_builtin): Use - flag_use_atomic_builtins. - (compareAndSwapLong_builtin): Likewise. - (compareAndSwapObject_builtin): Likewise. - * jvspec.c: Add flag_use_atomic_builtins. - * gcj.texi: Likewise. - * java-tree.h: Likewise. - * lang.opt: Likewise. - -2009-08-11 Dodji Seketeli - - PR debug/40990 - * lang.c (put_decl_node): Outputs different level of information - depending on the verbosity level. - -2009-07-31 Andrew Haley - - PR java/40867 - * decl.c (java_replace_references): Set EXPR_LOCATION on all - generated expressions. - (binding_level.loc): new field. - (clear_binding_level): Initialize loc. - (set_input_location): New function. - (pushlevel): Set new binding_level.loc. - (poplevel): Set EXPR_LOCATION on the new BIND_EXPR_BODY. - (start_java_method): Set DECL_SOURCE_LOCATION of this new method. - (java_add_stmt): Set the EXPR_LOCATION on all subtrees of new_stmt. - -2009-07-17 Richard Guenther - - PR c/40401 - * java-gimplify.c (java_genericize): Do not gimplify here. - But replace all local references. - (java_gimplify_expr): Do not replace local references here. - (java_gimplify_modify_expr): Likewise. - * jcf-parse.c (java_parse_file): Do not finalize the CU or - optimize the cgraph here. - * decl.c (java_replace_reference): Make static. - (java_replace_references): New function. - (end_java_method): Clear base_decl_map. - * java-tree.h (java_replace_references): Declare. - (java_replace_reference): Remove. - -2009-07-14 Taras Glek - Rafael Espindola - - * Make-lang.in (java.install-plugin): New target for - installing plugin headers. - -2009-07-07 Manuel López-Ibáñez - - * class.c: Replace %J by an explicit location. Update all calls. - -2009-07-07 Manuel López-Ibáñez - - * jcf-parse.c: Replace %H by an explicit location. Update all calls. - -2009-06-29 Andrew Haley - - PR java/40590 - * java-tree.h (cxx_keyword_p): New declaration. - * mangle_name.c (utf8_cmp): Move here from mangle.c. - (cxx_keywords): Likewise. - (cxx_keyword_p): Likewise. - (MANGLE_CXX_KEYWORDS): New macro. - (append_gpp_mangled_name): Use MANGLE_CXX_KEYWORDS. - (append_gpp_mangled_name): Likewise. - * mangle.c: Move code to mangle_name.c. - (mangle_member_name): Don't call cxx_keyword_p. - -2009-06-12 Aldy Hernandez - - * java-gimplify.c (java_gimplify_block): New argument to - build_empty_stmt. - * expr.c (force_evaluation_order): Same. - * typeck.c: Add location to build_decl or PUSH_FIELD calls. - * class.c: Same. - * decl.c: Same. - * jcf-parse.c: Same. - * constants.c: Same. - * resource.c: Same. - * except.c: Same. - * builtins.c: Same. - * expr.c: Same. - * java-tree.h (PUSH_FIELD): Add location field. - -2009-06-09 Ian Lance Taylor - - * verify.h: Remove extern "C". - -2009-06-07 Ian Lance Taylor - - * jcf-parse.c (handle_constant): Change local variable 'kind' to - unsigned int. - -2009-06-01 Ian Lance Taylor - - * jcf-io.c (find_class): Use CONST_CAST. - -2009-05-27 Ian Lance Taylor - - * Make-lang.in ($(XGCJ)$(exeext)): Change $(COMPILER) to - $(LINKER). - (jc1$(exeext), jcf-dump$(exeext), jvgenmain$(exeext)): Likewise. - -2009-05-26 Ian Lance Taylor - - * Make-lang.in (jvspec.o): Use $(COMPILER). - ($(XGCJ)$(exeext), jc1$(exeext), jcf-dump$(exeext)): Likewise. - (jvgenmain$(exeext), java/jcf-io.o, java/jcf-path.o): Likewise. - -2009-05-12 Alexandre Oliva - - * Make-lang.in (GCJ): Renamed to... - (XGCJ): ... this. - -2009-04-27 Ian Lance Taylor - - * builtins.c (java_builtins): Add casts to enum type. - * verify-impl.c (check_class_constant): Add cast to enum type. - (check_constant, check_wide_constant): Likewise. - -2009-04-27 Richard Guenther - - PR java/38374 - * constants.c (build_constants_constructor): Retain the old - pointer type as valid TYPE_POINTER_TO after patching the - type of the constant pool decl. - -2009-04-24 Ian Lance Taylor - - * jcf-parse.c (handle_constant): Add cast to enum type. - -2009-04-21 Taras Glek - - * builtins.c: Update GTY annotations to new syntax - * decl.c: Likewise - * java-tree.h: Likewise - * jcf.h: Likewise - * lang.c: Likewise - -2009-04-21 Joseph Myers - - * ChangeLog, ChangeLog.ptr, ChangeLog.tree-ssa: Add copyright and - license notices. - -2009-04-18 Ian Lance Taylor - - * verify-impl.c (verify_instructions_0): Add cast to enum type. - -2009-04-09 Paolo Bonzini - - * builtins.c (compareAndSwapLong_builtin, - compareAndSwapInt_builtin, compareAndSwapObject_builtin, - VMSupportsCS8_builtin): Do not look at sync_compare_and_swap_cc. - -2009-03-31 Richard Guenther - - * java-gimplify.c (java_gimplify_expr): Do not manually gimplify - the first operand of binary and comaprison expressions. - -2009-03-30 Joseph Myers - - PR rtl-optimization/323 - * lang.c (java_post_options): Set flag_excess_precision_cmdline. - Give an error for -fexcess-precision=standard for processors where - the option is significant. - -2009-03-18 Ralf Wildenhues - - * lang.opt: Unify help text for -Wdeprecated. - -2009-02-03 Jakub Jelinek - - * jcf-dump.c (version): Update copyright notice dates. - -2009-01-16 Richard Guenther - - PR tree-optimization/38835 - PR middle-end/36227 - * builtins.c (build_addr_sum): Use POINTER_PLUS_EXPR. - -2008-12-05 Sebastian Pop - - PR bootstrap/38262 - * Make-lang.in (jc1): Add BACKENDLIBS, remove GMPLIBS. - -2008-11-04 Andrew Haley - - PR java/37068 - * jcf-parse.c (java_emit_static_constructor): Don't call - cgraph_build_static_cdtor. Rewrite. - -2008-10-24 Jakub Jelinek - - * Make-lang.in (check-java-subtargets): New target. - -2008-10-16 David Edelsohn - - PR target/35483 - * Make-lang.in (class.o): Depend on $(TM_P_H). - (expr.o): Same. - * class.c: Include tm_p.h. - * expr.c: Include tm_p.h. - -2008-10-14 Andrew Haley - - * constants.c (build_constant_data_ref): Make sure we only build - one copy of the decl for the constant pool. - -2008-09-22 Andrew Haley - - * expr.c (rules): Add new rule for - gnu.java.lang.VMCPStringBuilder.toString. - (rewrite_rule.new_classname): New field. - (maybe_rewrite_invocation): Use new_classname field instead of - DECL_CONTEXT (*method_p). - Allow rewrite_arglist to be NULL. - -2008-09-17 Andrew Pinski - - * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): Don't define. - (java_get_callee_fndecl): Kill. - -2008-09-17 Jan Hubicka - - PR c++/18071 - * class.c (add_method_1): Do not initialize DECL_INLINE. - (make_local_function_alias): Likewise. - * expr.c (rewrite_arglist_getcaller): Set DECL_UNINLINABLE. - * lang.c (java_decl_ok_for_sibcall): Use DECL_UNINLINABLE. - -2008-09-09 Richard Guenther - - * decl.c (build_result_decl): Remove no longer applicable - promotion. - -2008-09-05 David Daney - - * gcj.texi (-freduced-reflection): Clarify option's restrictions. - -2008-08-21 David Daney - - * class.c (make_class_data): Don't add field_index when - flag_reduced_reflection set. - -2008-08-12 Ulrich Weigand - - * typeck.c (convert): Do not check for TARGET_FLOAT_FORMAT. - -2008-08-08 Manuel Lopez-Ibanez - - PR 28875 - * lang.c (java_handle_option): Replace set_Wunused with - warn_unused. - -2008-07-30 Ralf Wildenhues - - * gcj.texi: Update copyright years. Do not list GPL as - Invariant Section. - -2008-07-29 Jakub Jelinek - - * class.c (build_utf8_ref): Set DECL_SIZE and DECL_SIZE_UNIT - from ctype's sizes. - - * class.c (build_utf8_ref): Pad initializer string to utf8const_type's - alignment. - -2008-07-29 Jan Hubicka - - * lang.c (java_post_options): Remove handling of flag_no_inline. - -2008-07-28 Richard Guenther - - Merge from gimple-tuples-branch. - - 2008-07-18 Richard Guenther - - * expr.c: Include tree-iterator.h. - * Make-lang.in (expr.o): Add tree-iterator.h dependency. - - 2008-07-18 Aldy Hernandez - - * java-gimplify.c: Include gimple.h instead of tree-gimple.h. - * expr.c: Same. - - 2008-07-14 Aldy Hernandez - - * java-gimplify.c (java_gimplify_expr): Same. - (java_gimplify_modify_expr): Same. - * java-tree.h: Rename GENERIC_NEXT to TREE_CHAIN. - - 2008-05-02 Diego Novillo - - * expr.c (build_java_throw_out_of_bounds_exception): Fix - mixed declarations and code. - - 2008-05-02 Doug Kwan - - * expr.c (build_java_throw_out_of_bounds_exception ): Wrap call to - _Jv_ThrowBadArrayIndex with a COMPOUND_EXPR to return 0. - - 2008-02-19 Diego Novillo - - http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00804.html - - * java-gimplify.c (java_gimplify_self_mod_expr): Change - gimple_seq arguments to gimple_seq *. Update all users. - - 2007-11-26 Aldy Hernandez - - * java-gimplify.c (java_gimplify_expr): Make pre_p and post_p - sequences. - (java_gimplify_self_mod_expr): Same. - * java-tree.h (java_gimplify_expr): Make pre_p and post_p - sequences. - -2008-07-24 Jan Hubicka - - * java/decl.c: Include cgraph.h - (end_java_method): Remove non-unit-at-a-time code. - (java_mark_decl_local): Likewise; sanity check that we don't touch - finalized nodes. - -2008-07-15 Jan Hubicka - - * lang.c (java_init_options): Enable unit-at-a-time by default. - -2008-07-14 Ralf Wildenhues - - * Make-lang.in (jvspec.o): Fix dependencies. - -2008-07-06 Tom Tromey - - * Make-lang.in (java/parse.o-warn): Remove. - (java/jcf-io.o-warn): Remove. - -2008-07-05 Tom Tromey - - * jcf-io.c: Don't include fnmatch.h. Don't use JCF_USE_SCANDIR. - (compare_path): Remove. - (java_or_class_file): Likewise. - (memoized_dirlist_entry): Likewise. - (memoized_dirlist_hash): Likewise. - (memoized_dirlist_lookup_eq): Likewise. - (memoized_dirlists): Likewise. - (caching_stat): Likewise. - (find_class): Use stat. - * jcf.h (JCF_USE_SCANDIR): Remove. - -2008-06-30 Joshua Sumali - - * Make-lang.in (JAVA_MANFILES): Add doc/aot-compile.1 and - doc/rebuild-gcj-db.1 - (java.uninstall): Likewise. - (java.maintainer-clean): Likewise. - (aot-compile.pod): New rule. - (rebuild-gcj-db.pod): New rule. - (java.install-man): Install doc/aot-compile.1 and doc/rebuild-gcj-db.1 - * gcj.texi: Add new sections for aot-compile and rebuild-gcj-db. - -2008-06-29 Kaveh R. Ghazi - - * Make-lang.in (java/jcf-io.o-warn): New. - -2008-06-24 Tom Tromey - - * jcf-path.c (jcf_path_init): Don't name variable 'try'. - * expr.c (add_type_assertion): Rename argument. - (build_java_arrayaccess): Don't name variable 'throw'. - (ARRAY_NEW_MULTI): Don't name variable 'class'. - * jcf-io.c (find_class): Don't name variable 'class'. - * mangle.c (compression_table_add): Don't name variable 'new'. - * constants.c (cpool_for_class): Rename argument. - (alloc_constant_fieldref): Likewise. - * jcf-parse.c (handle_innerclass_attribute): Don't name variable - 'class'. - (read_class): Likewise. - (parse_zip_file_entries): Likewise. - (process_zip_dir): Likewise. - * decl.c (java_mark_class_local): Rename argument. - * class.c (GEN_TABLE): Use type_name, not typename. - (gen_indirect_dispatch_tables): Likewise. - (add_field): Rename argument. - (is_compiled_class): Likewise. - (safe_layout_class): Likewise. - (emit_assertion_table): Likewise. - * typeck.c (has_method): Rename argument. - -2008-06-19 Kaveh R. Ghazi - - * class.c (ident_subst, mangled_classname, unmangle_classname, - gen_indirect_dispatch_tables, add_method_1, - build_fieldref_cache_entry, make_local_function_alias, - layout_class, java_treetreehash_find, java_treetreehash_new, - split_qualified_name): Fix for -Wc++-compat. - * constants.c (set_constant_entry, cpool_for_class): Likewise. - * decl.c (make_binding_level, java_dup_lang_specific_decl, - start_java_method): Likewise. - * except.c (prepare_eh_table_type): Likewise. - * expr.c (type_assertion_hash, note_instructions): Likewise. - * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC, - MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Likewise. - * jcf-io.c (jcf_filbuf_from_stdio, opendir_in_zip, find_class): - Likewise. - * jcf-parse.c (reverse, java_read_sourcefilenames, - annotation_grow, rewrite_reflection_indexes, java_parse_file, - process_zip_dir): Likewise. - * jcf-path.c (add_entry, add_path, jcf_path_init, - jcf_path_extdirs_arg): Likewise. - * jcf-reader.c (jcf_parse_constant_pool): Likewise. - * jvgenmain.c (do_mangle_classname): Likewise. - * lang.c (put_decl_string): Likewise. - * verify-impl.c (make_state_copy, make_state, add_new_state): - Likewise. - -2008-06-15 Ralf Wildenhues - - * gcj.texi: Expand TABs, remove whitespace from blank lines. - -2008-06-14 Tom Tromey - - PR java/36247: - * class.c (build_class_ref): Initialize this_classdollar when - needed. - -2008-05-23 Andrew Haley - - * jcf-parse.c (give_name_to_class): Call find_sourcefile to find full - pathname of source file. - -2008-05-12 Aaron W. LaFramboise - - * jcf-dump.c (print_constant): Use - HOST_LONG_LONG_FORMAT. - -2008-05-07 Kenneth Zadeck - - * decl.c (java_init_decl_processing): Change DECL_IS_PURE to - DECL_PURE_P. - -2008-04-23 Paolo Bonzini - - * class.c (build_utf8_ref): Don't set TREE_INVARIANT. - (build_classdollar_field): Don't set TREE_INVARIANT. - (get_dispatch_table): Don't set TREE_INVARIANT. - (make_class_data): Don't set TREE_INVARIANT. - (build_symbol_entry): Don't set TREE_INVARIANT. - (emit_symbol_table): Don't set TREE_INVARIANT. - * constants.c (build_constant_data_ref): Don't set TREE_INVARIANT. - (build_ref_from_constant_pool): Don't set TREE_INVARIANT. - * resource.c (compile_resource_data): Don't set TREE_INVARIANT. - * expr.c (cache_cpool_data_ref): Don't set TREE_INVARIANT. - -2008-04-03 Tom Tromey - - * Make-lang.in (java_OBJS): New variable. - -2008-04-03 Paolo Bonzini - - * java-tree.h (insert_block): Kill. - * decl.c (insert_block): Kill. - -2008-04-01 Joseph Myers - - * gcj.texi: Include gpl_v3.texi instead of gpl.texi - * Make-lang.in (TEXI_JAVA_FILES): Include gpl_v3.texi instead of - gpl.texi. - -2008-03-27 Tom Tromey - - * Make-lang.in: Revert automatic dependency patch. - -2008-03-25 Tom Tromey - - * Make-lang.in: Removed most explicit .o targets. - (java/jvspec.o): Reduce to variable setting. Moved to java/. - ($(GCJ)$(exeext)): Update. - (JAVA_OBJS): New variable. - (JCFDUMP_OBJS): Reformat. - (java_OBJS): New variable. - (java/jvspec.o-warn): Update. - (java/parse.o-warn): Remove. - (JAVA_TREE_H): Remove. - (java/jcf-io.o): Reduce to variable setting. - (ALL_CPPFLAGS): Likewise. - -2008-03-12 Paolo Bonzini - - * mangle.c (java_mangle_decl): Remove dead check. - -2008-03-11 Paolo Bonzini - - * jcf-parse.c (java_parse_file): Assert binding levels are - left in order. - * lang.c (LANG_HOOKS_CLEAR_BINDING_STACK, java_clear_binding_stack): - Delete. - -2008-03-02 Jakub Jelinek - - * jcf-dump.c (version): Update copyright notice dates. - -2008-02-29 Tom Tromey - - * expr.c (expand_byte_code): Set DECL_FUNCTION_LAST_LINE on - method. - * java-tree.h (struct lang_decl_func): Remove obsolete comment. - -2008-02-26 Tom Tromey - - * lang.c (java_post_options): Remove conditional. - * expr.c (expand_byte_code): Remove old location code. - * jcf-parse.c (set_source_filename): Remove old location code. - (give_name_to_class): Likewise. - (jcf_parse): Likewise. - (duplicate_class_warning): Likewise. - (parse_class_file): Likewise. - (java_parse_file): Likewise. - * decl.c (finish_method): Remove old location code. - * class.c (push_class): Remove old location code. - -2008-02-06 Kaveh R. Ghazi - - PR other/35107 - * Make-lang.in (jc1): Add $(GMPLIBS). - -2008-01-23 David Daney - - * class.c (hide) Rename to... - (java_hide_decl) ... this throughout, and make public. - * resource.c (Jr_count): Remove. - (compile_resource_data): Call java_mangle_resource_name to generate - decl name. Make resource decl public and hidden. - * mangle.c (java_mangle_resource_name): New function. - * java-tree.h (java_hide_decl, java_mangle_resource_name): Declare - functions. - -2008-01-04 Andrew Haley - - PR java/17779 - * jcf-parse.c (parse_zip_file_entries): Move decl to compile on - C90. - -2008-01-03 Andrew Haley - - PR java/17779 - * jcf-parse.c (parse_zip_file_entries): Unset TYPE_ALIAS_SET if - we're about to re-layout the type. - -2007-12-20 Alexandre Oliva - - * lang.c (java_classify_record): Don't return - RECORD_IS_INTERFACE for now. - -2007-12-18 Andrew Haley - - PR java/27643 - * jcf-parse.c (java_parse_file): Remove call to - java_mark_class_local. - (parse_class_file): Reinstate call to java_mark_class_local here. - * decl.c (java_mark_cni_decl_local): If the ASSEMBLER_NAME is - already set, call java_mangle_decl() and make_decl_rtl() to - rewrite its name as a hidden alias. - -2007-12-15 Alexandre Oliva - - PR debug/7081 - * lang.c (java_classify_record): New. - (LANG_HOOKS_CLASSIFY_RECORD): Override. - -2007-11-26 Andreas Krebbel - - PR 34081/C++ - * decl.c (finish_method): Pass 'false' for the new - allocate_struct_function parameter. - -2007-11-26 Alexandre Oliva - - * expr.c (build_jni_stub): Use the computed jni func type for - variable meth. - -2007-11-26 Alexandre Oliva - - * class.c (JAVA_TREEHASHHASH_H): Use TYPE_UID. - -2007-11-26 Alexandre Oliva - - * expr.c (type_assertion_hash): Hash type uids rather than - tree pointers. - -2007-11-17 David Daney - Andrew Haley - - * constants.c (build_constants_constructor): Use POINTER_SIZE - insead of BITS_PER_WORD in big-endian work around. - -2007-11-07 Tom Tromey - - PR java/34019: - * gcj.texi (Input Options): Add missing noun. - -2007-11-02 Tom Tromey - - PR java/33765: - * jcf-parse.c (java_parse_file): Ignore ZIPEMPTYMAGIC files. - * zipfile.h (ZIPEMPTYMAGIC): New define. - -2007-11-01 Tom Tromey - - * Make-lang.in (java/jcf-dump.o): Depend on zipfile.h. - (java/jcf-parse.o): Depend on jcf-reader.c, zipfile.h, and jcf.h. - (java/jcf-io.o): Depend on zipfile.h. - -2007-10-17 Richard Guenther - - * Make-lang.in (java/builtins.o): Add $(OPTABS_H) and $(EXPR_H) - dependencies. - -2007-10-03 Andrew Haley - - PR java/33639 - * class.c (mangled_classname): Detect and replace illegal - characters in assembly language symbols. - (gen_indirect_dispatch_tables): Call mangled_classname() on - the type. - -2007-09-27 Jakub Jelinek - - * lang.c (java_print_error_function): Add third argument. - -2007-09-15 Tom Tromey - - * java-tree.h (struct lang_decl_func) : - Remove. - : Likewise. - * lang.c (java_dump_tree): Update. - * java-tree.h (DECL_FUNCTION_BODY): Remove. - -2007-09-11 Jan Hubicka - - * decl.c (java_expand_body): Kill. - (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill. - -2007-09-06 Tom Tromey - - * jcf-parse.c (parse_class_file): Re-enter the current file. - -2007-09-07 Roman Zippel - - * boehm.c (mark_reference_fields): Move misaligned pointer check - after JREFERENCE_TYPE_P test - -2007-09-06 Roman Zippel - - * boehm.c (mark_reference_fields): Don't use bitmap as gc_descr - if pointer is misaligned. - -2007-09-06 Tom Tromey - - * lang.c (java_post_options): Update. - * jcf-parse.c (set_source_filename): Update. - (give_name_to_class): Update. - (jcf_parse): Update. - (duplicate_class_warning): Update. - (parse_class_file): Update. - (java_parse_file): Update. - * expr.c (expand_byte_code): Update. - -2007-09-05 Sandra Loosemore - - * decl.c (finish_method): Use set_cfun. - -2007-09-04 Andrew Haley - - * decl.c (java_init_decl_processing): Call "__cxa_end_cleanup" - when using the ARM EABI. - -2007-09-03 Daniel Jacobowitz - - * Make-lang.in (jvspec.o): Remove SHLIB_MULTILIB. - -2007-09-03 Kaveh R. Ghazi - - * jcf-parse.c (read_class, java_parse_file): Supply a TYPE for - CONST_CAST. - * jcf.h (JCF_FINISH): Likewise. - -2007-08-28 Tom Tromey - - * Make-lang.in (java.tags): Don't tag '*.y' files. - -2007-08-25 Kaveh R. Ghazi - - * lang.c (java_decl_ok_for_sibcall): Likewise. - -2007-08-21 Paul Brook - Nathan Sidwell - Mark Mitchell - Joseph Myers - - * jcf-dump.c (version): Use pkgversion_string. Update copyright - date. - -2007-08-20 Richard Guenther - - * lang.c (java_tree_inlining_walk_subtrees): Remove. - (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Remove. - -2007-08-17 Tom Tromey - - * typeck.c (find_method_in_interfaces): Update. - * jcf-parse.c (load_class): Update. - * java-gimplify.c (java_gimplify_component_ref): Removed. - (java_gimplify_modify_expr): Update. Removed pre_p and post_p - arguments. - (java_gimplify_expr): Update. - * decl.c (java_init_decl_processing): Update. - * class.c (set_constant_value): Update. - (make_class_data): Update. - (finish_class): Update. - (build_static_field_ref): Update. - (is_compiled_class): Update. - (maybe_layout_super_class): Update. - (layout_class): Update. - (layout_class_method): Update. - * java-tree.h (CAN_COMPLETE_NORMALLY): Removed. - (lang_decl_var) : Removed fields. - (lang_decl_func) : Removed field. - (lang_type) : Removed fields. - (FIELD_NESTED_ACCESS): Removed. - (FIELD_NESTED_ACCESS_P): Removed. - (DECL_FIELD_FINAL_IUD): Removed. - (DECL_LOCAL_FINAL_IUD): Removed - (LOCAL_FINAL_P): Removed. - (FINAL_VARIABLE_P): Removed. - (CLASS_FINAL_VARIABLE_P): Removed. - (DECL_BIT_INDEX): Removed. - (DECL_INIT_CALLS_THIS): Removed. - (FIELD_LOCAL_ALIAS): Removed. - (FIELD_LOCAL_ALIAS_USED): Removed. - (FIELD_THISN): Removed. - (DECL_FUNCTION_INIT_TEST_CLASS): Removed. - (LOCAL_CLASS_INITIALIZATION_FLAG): Removed. - (LOCAL_CLASS_INITIALIZATION_FLAG_P): Removed. - (TYPE_DOT_CLASS): Removed. - (TYPE_VERIFY_METHOD): Removed. - (ID_CLASSDOLLAR_P): Removed. - (enum java_tree_index) : - Removed. - (classdollar_identifier_node): Removed. - (TYPE_UNKNOWN): Removed. - (CLASS_FROM_SOURCE_P): Removed. - * expr.c (build_jni_stub): Update. - (force_evaluation_order): Update. - (build_java_empty_stmt): Update. - (build_class_init): Update. - (java_stack_swap): Update. - (build_jni_stub): Update. - -2007-08-17 Tom Tromey - - * java-tree.h (LABEL_TYPE_STATE): Removed. - (load_type_state): Removed. - (LABEL_PC): Removed. - (LABEL_VERIFIED): Removed. - (type_states): Declare. - * expr.c (type_states): New global. - (load_type_state): Now static. Use type_states. Changed - argument. - (lookup_label): Don't set LABEL_PC. - (expand_byte_code): Don't use LABEL_VERIFIED. - (note_instructions): Initialize type_states. - * verify-glue.c (vfy_note_stack_depth): Rewrote. - (vfy_note_stack_type): Use type_states. - (vfy_note_local_type): Likewise. - -2007-08-10 Kaveh R. Ghazi - - * jcf-parse.c (read_class, java_parse_file): Use CONST_CAST. - * jcf.h (JCF_FINISH): Likewise. - -2007-07-31 Nick Clifton - - * java-gimplify.c: Change copyright header to refer to version 3 - of the GNU General Public License and to point readers at the - COPYING3 file and the FSF's license web page. - * typeck.c, lang-specs.h, mangle_name.c, jcf-dump.c, class.c, - decl.c, config-lang.in, jcf-parse.c, constants.c, Make-lang.in, - resource.c, except.c, builtins.c, jvspec.c, java-tree.def, - javaop.def, jcf-path.c, verify-glue.c, jcf-depend.c, lang.opt, - jcf-reader.c, mangle.c, zextract.c, jcf-io.c, jcf.h, zipfile.h, - verify.h, java-except.h, win32-host.c, expr.c, jvgenmain.c, - parse.h, lang.c, java-tree.h, javaop.h, boehm.c: Likewise. - -2007-07-30 Kaveh R. Ghazi - - * jcf-io.c (find_class): Fix -Wcast-qual warnings. - -2007-07-29 Kaveh R. Ghazi - - * lang.c (java_get_callee_fndecl): Constify. - -2007-07-27 Kaveh R. Ghazi - - * mangle.c (set_type_package_list): Constify. - * verify-glue.c (vfy_make_string): Delete. - * verify.h (vfy_make_string): Likewise. - -2007-07-26 Tom Tromey - - * java-tree.h (push_labeled_block, pop_labeled_block): Remove. - (LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, - EXIT_BLOCK_LABELED_BLOCK): Likewise. - * lang.c (java_tree_inlining_walk_subtrees): Update. - (java_dump_tree): Likewise. - * java-tree.def (LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, TRY_EXPR): - Remove. - * decl.c (push_labeled_block, pop_labeled_block): Remove. - * java-gimplify.c (java_gimplify_labeled_block_expr, - java_gimplify_exit_block_expr, java_gimplify_try_expr): Remove. - (java_gimplify_expr): Update. - -2007-07-25 Kaveh R. Ghazi - - * class.c (java_treetreehash_hash, java_treetreehash_compare): - Constify. - * expr.c (type_assertion_eq): Likewise. - * jcf-io.c (compare_path): Likewise. - * jcf-parse.c (cmpstringp): Likewise. - * verify-impl.c (get_one_type, compute_argument_types, - compute_return_type): Likewise. - -2007-07-16 Rainer Orth - - PR target/32462 - PR libgcj/32465 - * class.c (hide): Wrap in HAVE_GAS_HIDDEN. - -2007-07-12 Richard Guenther - - * expr.c (expand_java_return): RETURN_EXPR has void type. - (build_jni_stub): Likewise. Use a comparison against zero - for null-pointer test in COND_EXPR. - (build_field_ref): Build POINTER_PLUS_EXPR with correct - type. Convert result instead. - (build_invokevirtual): Likewise. - -2007-07-09 Geoffrey Keating - - PR 32617 - * lang.c (java_init): Remove setting of force_align_functions_log. - * class.c (add_method_1): Set DECL_ALIGN of non-static method - to cope with ptrmemfunc_vbit_in_pfn. - -2007-07-03 David Daney - - * java/Make-lang.in (doc/gcj.info): Add $(gcc_docdir) to - include path. - (doc/gcj.dvi): Same. - (doc/gcj.pdf): Same. - (java/index.html): Same. - -2007-06-15 Andrew Pinski - - * class.c (make_class_data): Build the index in sizetype. - Use POINTER_PLUS_EXPR instead of PLUS_EXPR when - adding to a pointer type. - (build_symbol_entry): Likewise. - * expr.c (build_java_arrayaccess): Likewise. - (build_field_ref): Likewise. - (build_known_method_ref): Likewise. - (build_invokevirtual): Likewise. - * except.c (build_exception_object_ref): Do a - NEGATIVE and then a POINTER_PLUS_EXPR instead - of a MINUS_EXPR. - -2007-06-11 Rafael Ávila de Espíndola - - * typeck.c (java_signed_type): Remove. - * lang.c (LANG_HOOKS_SIGNED_TYPE): Remove. - * java-tree.h (java_signed_type): Remove. - -2007-05-18 Geoffrey Keating - - * jcf-dump.c (HANDLE_MAGIC): Use 'unsigned long' for %lx. - (print_constant): Likewise. - -2007-05-14 Rafael Ávila de Espíndola - - * expr.c (build_java_binop): Use unsigned_type_for instead of - java_unsigned_type. - * java-tree.h (java_unsigned_type): Remove. - * lang.c (LANG_HOOKS_UNSIGNED_TYPE): Remove. - * typeck.c (java_unsigned_type): Remove. - -2007-04-21 Andrew Pinski - - * java-tree.h (lang_tree_node): Use GENERIC_NEXT - instead of checking GIMPLE_STMT_P in chain_next. - -2007-04-06 Colin Walters - - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161701 - * jcf-io.c (open_class): Copy 'filename'. - -2007-04-03 Andrew Haley - - * jvgenmain.c (main): Change main to use class$, not class$$. - (do_mangle_classname): Likewise. - * class.c (hide): New function. - (add_field): Hide everything that shouldn't be visible outside a - DSO. - (build_static_class_ref): Likewise. - (build_classdollar_field): Likewise. - (make_class_data): Likewise. - (layout_class_method): Likewise. - * expr.c (special_method_p): New function. - - * class.c (push_class): Don't bogusly guess the source filename. - * jcf-parse.c (give_name_to_class): Don't set input_location from - DECL_ARTIFICIAL decls. - -2007-03-30 Rafael Ávila de Espíndola - - * typeck.c (java_signed_or_unsigned_type): Removed. - (java_signed_type): use get_signed_or_unsigned_type instead of - java_signed_or_unsigned_type. - (java_unsigned_type): Ditto. - * lang.c (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Removed. - * java-tree.h (java_signed_or_unsigned_type): Removed. - -2007-03-26 Tom Tromey - - * Make-lang.in (JAVA_MANFILES): Removed grmiregistry.1. - (java.maintainer-clean): Likewise. - (java.install-man): Likewise. - (.INTERMEDIATE): Removed grmiregistry.pod. - (grmiregistry.pod): Removed. - * gcj.texi (Invoking gcjh): Removed. - (Invoking gjnih): Likewise. - (Invoking grmiregistry): Likewise. - (direntry): Updated. - (Top): Likewise. - (which-gcj): Removed. - -2007-03-01 Brooks Moses - - * Make-lang.in: Add install-pdf target as copied from - automake v1.10 rules. - -2007-02-27 Brooks Moses - - * gcj.texi: Standardize title page. - -2007-02-18 Kazu Hirata - - * class.c: Fix a comment typo. - -2007-02-15 Sandra Loosemore - Brooks Moses - Lee Millward - - * java-tree.h (BUILD_MONITOR_ENTER): Use build_call_nary instead - of build3. - (BUILD_MONITOR_EXIT): Likewise. - - * java-gimplify.c (java_gimplify_component_ref): Use build_call_expr. - (java_gimplify_modify_expr): Likewise. - - * class.c (cache_this_class_ref): Use build_call_expr. - (build_static_field_ref): Likewise. - (emit_indirect_register_classes): Likewise. - (emit_register_classes): Likewise. - - * resource.c (write_resource_constructor): Use build_call_expr. - - * builtins.c (builtin_creator_function): Change interpretation of - the second parameter to be the whole CALL_EXPR instead of the arglist. - (max_builtin): Tweak parameter list. Use new CALL_EXPR accessors. - (min_builtin): Likewise. - (abs_builtin): Likewise. - (java_build_function_call_expr): Likewise. - (convert_real): Likewise. - (UNMARSHAL3): Likewise. - (UNMARSHAL4): Likewise. - (UNMARSHAL5): Likewise. - (build_arglist_for_builtin): Delete. Fix callers to use - build_call_expr instead. - (putObject_builtin): Tweak parameter list. Use new CALL_EXPR - accessors. - (compareAndSwapInt_builtin): Likewise. - (compareAndSwapLong_builtin): Likewise. - (compareAndSwapObject_builtin): Likewise. - (putVolatile_builtin): Likewise. - (getVolatile_builtin): Likewise. - (VMSupportsCS8_builtin): Likewise. - (check_for_builtin): Pass entire CALL_EXPR to builtin expander - instead of arglist. - - * expr.c (build_java_athrow): Use build_call_nary instead of build3. - (build_java_throw_out_of_bounds_exception): Likewise. - (java_check_reference): Likewise. - (build_java_arraystore_check): Likewise. - (build_newarray): Likewise. - (build_anewarray): Likewise. - (expand_java_multinewarray): Use build_call_list instead of build3. - (build_java_monitor): Use build_call_nary instead of build3. - (java_create_object): Likewise. - (expand_java_NEW): Likewise. - (build_instanceof): Likewise. - (expand_java_CHECKCAST): Likewise. - (build_java_soft_divmod): Likewise. - (build_java_binop): Likewise. - (build_field_ref): Likewise. - (build_class_init): Likewise. - (rewrite_arglist_getcaller): Use build_call_expr. - (build_invokeinterface): Use build_call_nary instead of build3. - (expand_invoke): Use build_call_list instead of build3. - (build_jni_stub): Use build_call_nary, build_call_list, or - build_call_expr instead of build3. - (expand_java_field_op): Use build_call_expr instead of build3. - (force_evaluation_order): Use new CALL_EXPR accessors. - - * lang.c (java_get_callee_fndecl): Use new CALL_EXPR accessors. - -2007-02-15 David Daney - - * Make-lang.in (JAVA_MANFILES): Add doc/gc-analyze.1. - (java.maintainer-clean):Add gc-analyze.1. - (.INTERMEDIATE): Add gc-analyze.pod. - (gc-analyze.pod): New rule. - (java.install-man): Install gc-analyze.1 - * gcj.texi: Add new section for the gc-analyze program. - -2007-02-07 Andrew Haley - - * class.c (uncache_this_class_ref): New. - * expr.c (build_jni_stub): Initialize the class. - (expand_byte_code): Call uncache_this_class_ref after generating - code. - -2007-02-06 Tom Tromey - - PR java/30714: - * jvspec.c (lang_specific_driver): Check for the '-' in '-I'. - -2007-02-03 Kazu Hirata - - * java-tree.h, javaop.def, jcf-parse.c: Fix comment typos. - -2007-02-02 Andrew Haley - - * expr.c (expand_byte_code): Call cache_this_class_ref() and - cache_cpool_data_ref(). - Set TYPE_CPOOL_DATA_REF. - (cache_cpool_data_ref): New function. - * constants.c (build_ref_from_constant_pool): Remove special-case - code for flag_indirect_classes. - (build_constant_data_ref): Move special-case code for - flag_indirect_classes here from build_ref_from_constant_pool. - * decl.c (finish_method): Move class initialization from here to - cache_this_class_ref. - * class.c (cache_this_class_ref): New function. - (build_class_ref): Use this_classdollar for the ouput class. - -2007-02-02 David Daney - - * class.c (is_compiled_class): Move check to avoid reloading - current class. - (layout_class_method): Don't calculate DECL_EXTERNAL if it is - already set. - -2007-02-01 Andrew Haley - - PR java/30641 - * jcf-parse.c (jcf_parse): Clear the field_offsets bitmap. - -2007-01-31 Kazu Hirata - - * class.c, jcf-parse.c: Fix comment typos. - -2007-01-30 Tom Tromey - - * gcj.texi (Strings): Fix documentation for JvNewString. - -2007-01-30 Ralf Wildenhues - - * gcj.texi (Invoking gcjh, Invoking gjnih, Arrays): Fix some - typos. - -2007-01-30 Ben Elliston - - * jvspec.c (lang_specific_driver): Remove unused classpath_args. - -2007-01-29 Tom Tromey - - PR java/30607: - * jvspec.c (lang_specific_driver): Handle separate -I argument. - * lang.opt (-I): Add 'Separate'. - -2007-01-29 Andrew Haley - - * class.c (add_method_1): Mark fndecl as external unless we are - compiling it into this object file. - -2007-01-24 Andrew Haley - - * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): current_class is a - type node, not a decl, so use TYPE_SYNTHETIC not CLASS_SYNTHETIC. - -2007-01-22 Andrew Haley - - * builtins.c (VMSupportsCS8_builtin): New function. - -2007-01-23 Andrew Pinski - - PR java/30454 - * jcf-io.c (opendir_in_zip): Close the file - and free zipf before returning after an error. - -2007-01-16 Tom Tromey - - * java-tree.def: Added copyright header. - -2007-01-15 Tom Tromey - - * lang.c (dump_compound_expr) : Removed - case. - * java-gimplify.c (java_gimplify_expr) : - Removed case. - * java-tree.h (EXPR_WFL_EMIT_LINE_NOTE): Removed. - (EXPR_WFL_NODE): Likewise. - (EXPR_WFL_LINECOL): Likewise. - (EXPR_WFL_FILENAME): Likewise. - (EXPR_WFL_LINENO): Likewise. - (build_expr_wfl, expr_add_location): Don't declare. - (build_unknown_wfl): Removed. - (EXPR_WFL_FILENAME_NODE): Removed. - (EXPR_WFL_COLNO): Removed. - (EXPR_WFL_SET_LINECOL): Removed. - (DECL_FUNCTION_WFL): Removed. - (DECL_FIELD_FINAL_WFL): Removed. - (struct lang_decl_func) : Removed field. - : Likewise. - : Likewise. - (struct lang_decl_var) : Removed field. - (DECL_CONSTRUCTOR_CALLS): Removed. - (DECL_FUNCTION_ACCESS_DECL): Likewise. - (DECL_FUNCTION_INNER_ACCESS): Likewise. - (DECL_SPECIFIC_COUNT): Likewise. - * java-tree.def (EXPR_WITH_FILE_LOCATION): Removed. - * expr.c (build_expr_wfl): Removed. - (expr_add_location): Likewise. - -2007-01-12 Tom Tromey - - * jcf-dump.c (main): Updated call to find_class. - * lang.c (java_init): Removed dead code. - * jcf-parse.c (read_class): Don't use java_source field. Removed - dead code. - (parse_zip_file_entries): Don't use java_source field. - (process_zip_dir): Likewise. - (jcf_parse): Removed dead code. - (java_parse_file): Likewise. - (read_class): Updated call to find_class. - * jcf-io.c (find_class): Don't use java_source field. Removed - 'source_ok' argument, .java logic. - * jcf.h (JCF) : Removed field. - (JCF_ZERO): Updated. (find_class): Updated. - * decl.c: Removed dead code. - * class.c: Removed dead code. - -2007-01-11 Tom Tromey - - * typeck.c (convert): Don't use flag_emit_class_files. - * lang.c (java_post_options): Don't use flag_emit_class_files. - (java_handle_option): Don't use flag_extraneous_semicolon or - flag_redundant. - * jcf-parse.c (HANDLE_CONSTANTVALUE): Don't use - flag_emit_class_files. - (load_class): Likewise. - * java-tree.h (flag_emit_class_files): Don't declare. - (STATIC_CLASS_INIT_OPT_P): Don't use flag_emit_class_files. - (flag_extraneous_semicolon): Don't declare. - (flag_not_overriding): Likewise. - (flag_static_local_jdk1_1): Likewise. - (flag_redundant): Likewise. - * expr.c (build_newarray): Don't use flag_emit_class_files. - * class.c (DEFAULT_ENABLE_ASSERT): Don't use - flag_emit_class_files. - (build_class_ref): Likewise. - * builtins.c (check_for_builtin): Don't use - flag_emit_class_files. - -2007-01-10 Tom Tromey - - * lang.c (java_can_use_bit_fields_p): Removed. - (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed. - -2007-01-09 Andrew Haley - - * expr.c (build_java_arrayaccess): Rewrite to generate array - access in canonical form. - (expand_java_arraystore): Use build_fold_addr_expr() on address of - array access. - -2007-01-03 Andrew Haley - - PR java/28754 - * expr.c (expand_java_field_op): If we're initializing a field's - declaring interface we should not also initialize the class - context in which it was referenced. - -2007-01-02 Tom Tromey - - * java-tree.h (compiling_from_source, current_encoding, - JTI_FINIT_IDENTIFIER_NODE, JTI_INSTINIT_IDENTIFIER_NODE, - JTI_LENGTH_IDENTIFIER_NODE, JTI_SUPER_IDENTIFIER_NODE, - JTI_CONTINUE_IDENTIFIER_NODE, JTI_ACCESS0_IDENTIFIER_NODE, - JTI_WFL_OPERATOR): Removed - (finit_identifier_node, instinit_identifier_node, - length_identifier_node, super_identifier_node, - continue_identifier_node, access0_identifier_node, wfl_operator): - Removed. - (cyclic_inheritance_report, - DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND, - DECL_FUNCTION_NAP, DECL_FUNCTION_SYNTHETIC_CTOR, - DECL_FIXED_CONSTRUCTOR_P): Removed. - (struct lang_decl_func) : - Removed. - (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST, TYPE_II_STMT_LIST, - TYPE_IMPORT_LIST, TYPE_IMPORT_DEMAND_LIST): Removed. - (struct lang_type) : Removed. - (java_layout_seen_class_methods, init_jcf_parse, init_src_parse, - cxx_keyword_p): Removed. - (DECL_FINIT_P, DECL_INSTINIT_P, ID_FINIT_P, ID_INSTINIT_P, - TYPE_UNUSED, TYPE_UNDERFLOW, TYPE_UNEXPECTED, - CLASS_ACCESS0_GENERATED_P, CLASS_HAS_FINIT_P, - IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME, - IS_AN_IMPORT_ON_DEMAND_P, COMPOUND_ASSIGN_P, SWITCH_HAS_DEFAULT, - PRIMARY_P, MODIFY_EXPR_FROM_INITIALIZATION_P, - CLASS_METHOD_CHECKED_P, FOR_LOOP_P, ANONYMOUS_CLASS_P, - LOCAL_CLASS_P, ARG_FINAL_P, SUPPRESS_UNREACHABLE_ERROR, - RESOLVE_PACKAGE_NAME_P, RESOLVE_TYPE_NAME_P, IS_BREAK_STMT_P, - IS_CRAFTED_STRING_BUFFER_P, IS_INIT_CHECKED, CALL_USING_SUPER, - NESTED_FIELD_ACCESS_IDENTIFIER_P, TOPLEVEL_CLASS_DECL_P, - PURE_INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P, - CALL_CONSTRUCTOR_P, CALL_EXPLICIT_CONSTRUCTOR_P, - CALL_THIS_CONSTRUCTOR_P, CALL_SUPER_CONSTRUCTOR_P, - FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, BLOCK_IS_IMPLICIT, - BLOCK_EMPTY_P, IS_UNCHECKED_EXCEPTION_P, java_error_count, - java_parse_abort_on_error, extract_field_decl): Removed. - (finput): Declare. - * lang.c: (compiling_from_source, current_encoding): Removed. - (java_handle_option): Ignore -fencoding. - * parse.h: Don't include lex.h. - (java_error_count, int_fits_type_p, stabilize_reference, RULE, - RECOVERED, DRECOVERED, RECOVER, DRECOVER, YYERROR_NOW, - YYNOT_TWICE, CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS, - INTERFACE_MODIFIERS, INTERFACE_INNER_MODIFIERS, - INTERFACE_METHOD_MODIFIERS, INTERFACE_FIELD_MODIFIERS, - MODIFIER_WFL, THIS_MODIFIER_ONLY, parse_error_context, - ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, exit_java_complete_class, - CLASS_OR_INTERFACE, GET_REAL_TYPE, GET_TYPE_NAME, - OBSOLETE_MODIFIER_WARNING, OBSOLETE_MODIFIER_WARNING2, - BUILD_PTR_FROM_NAME, INCOMPLETE_TYPE_P, - JAVA_MAYBE_GENERATE_DEBUG_INFO, JBSC_TYPE_P, JSTRING_P, - JNULLP_TYPE_P, JDECL_P, TYPE_INTERFACE_P, TYPE_CLASS_P, - IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS, - MANGLE_OUTER_LOCAL_VARIABLE_NAME, - MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID, - MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING, - SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS, - UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP, - AIPL_FUNCTION_CREATION, AIPL_FUNCTION_DECLARATION, - AIPL_FUNCTION_CTOR_INVOCATION, AIPL_FUNCTION_FINIT_INVOCATION, - ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, - ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED, - LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK, - LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY, - LOOP_EXPR_BODY_BODY_EXPR, PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, - PUSH_LOOP, POP_LOOP, PUSH_EXCEPTIONS, POP_EXCEPTIONS, - IN_TRY_BLOCK_P, EXCEPTIONS_P, ANONYMOUS_ARRAY_BASE_TYPE, - ANONYMOUS_ARRAY_DIMS_SIG, ANONYMOUS_ARRAY_INITIALIZER, - INVOKE_STATIC, INVOKE_NONVIRTUAL, INVOKE_SUPER, INVOKE_INTERFACE, - INVOKE_VIRTUAL, jdep_code, struct _jdep, JDEP_DECL, JDEP_DECL_WFL, - JDEP_KIND, JDEP_WFL, JDEP_MISC, JDEP_ENCLOSING, JDEP_CLASS, - JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN, JDEP_TO_RESOLVE, - JDEP_RESOLVED_DECL, JDEP_RESOLVED, JDEP_RESOLVED_P, struct - jdeplist_s, jdeplists, CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, - JDEP_INSERT, SET_TYPE_FOR_RESOLUTION, WFL_STRIP_BRACKET, - STRING_STRIP_BRACKETS, PROMOTE_RECORD_IF_COMPLETE, - BLOCK_CHAIN_DECL, GET_CURRENT_BLOCK, EXPR_WFL_GET_LINECOL, - EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION, QUAL_DECL_TYPE, - GET_SKIP_TYPE, COMPLETE_CHECK_OP, COMPLETE_CHECK_OP_0, - COMPLETE_CHECK_OP_1, COMPLETE_CHECK_OP_2, BUILD_APPEND, - BUILD_STRING_BUFFER, BUILD_THROW, SET_WFL_OPERATOR, - PATCH_METHOD_RETURN_ERROR, CHECK_METHODS, CLEAR_DEPRECATED, - CHECK_DEPRECATED_NO_RESET, CHECK_DEPRECATED, REGISTER_IMPORT, - CURRENT_OSB, struct parser_ctxt, GET_CPC_LIST, CPC_INNER_P, - GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE, GET_CPC_DECL_NODE, - GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC, - GET_ENCLOSING_CPC_CONTEXT, INNER_ENCLOSING_SCOPE_CHECK, PUSH_CPC, - PUSH_ERROR, POP_CPC, DEBUG_CPC, CPC_INITIALIZER_LIST, - CPC_STATIC_INITIALIZER_LIST, CPC_INSTANCE_INITIALIZER_LIST, - CPC_INITIALIZER_STMT, CPC_STATIC_INITIALIZER_STMT, - CPC_INSTANCE_INITIALIZER_STMT, SET_CPC_INITIALIZER_STMT, - SET_CPC_STATIC_INITIALIZER_STMT, - SET_CPC_INSTANCE_INITIALIZER_STMT, JAVA_NOT_RADIX10_FLAG, - java_complete_class, java_check_circular_reference, - java_fix_constructors, java_layout_classes, java_reorder_fields, - java_method_add_stmt, java_get_line_col, reset_report, - java_init_lex, yyparse, java_parse, yyerror, java_expand_classes, - java_finish_classes, ctxp, ctxp_for_generation, - ctxp_for_generation_last): Removed. - * expr.c (force_evaluation_order): Don't mention NEW_CLASS_EXPR. - * mangle.c (utf8_cmp): New function. - (cxx_keywords): New global. - (cxx_keyword_p): New function. - * jvspec.c (JAVA_START_CHAR): Removed obsolete comment. - * java-tree.def (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, - NEW_ANONYMOUS_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR, - CASE_EXPR, DEFAULT_EXPR, JAVA_CATCH_EXPR, SYNCHRONIZED_EXPR, - THROW_EXPR, CONDITIONAL_EXPR, INSTANCEOF_EXPR, NEW_ARRAY_INIT, - CLASS_LITERAL, JAVA_EXC_OBJ_EXPR): Removed. - * Make-lang.in (java.srcextra): Do nothing. - (parse.c, keyword.h, gt-java-parse.h): Removed targets. - (JAVA_OBJS): Don't mention deleted files. - (java.mostlyclean): Likewise. - (java.clean): Likewise. - (JAVA_LEX_C): Removed. - (buffer.o, check-init.o, parse.o): Remove unused targets. - (typeck.o): Updated. - * jcf-parse.c (read_class): Comment out unused code. - (java_layout_seen_class_methods): New function. - (parse_source_file_1, parse_source_file_2, parse_source_file_3): - Removed. - (java_parse_file): Comment out unused code. Don't use 'ctxp'. - (init_jcf_parse): Removed. - * config-lang.in (gtfiles): Remove deleted files. - * decl.c (java_init_decl_processing): Don't initialize - finit_identifier_node, instinit_identifier_node, - length_identifier_node, super_identifier_node, - continue_identifier_node, access0_identifier_node. Don't call - init_jcf_parse. - * class.c (cyclic_inheritance_report): New global. - (add_method_1): Don't use - DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND. - (maybe_layout_super_class): Comment out code. - (safe_layout_class): New function. - * java-gimplify.c (java_gimplify_expr): Removed CASE_EXPR, - DEFAULT_EXPR, NEW_ARRAY_INIT, JAVA_CATCH_EXPR, JAVA_EXC_OBJ_EXPR, - UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_ANONYMOUS_ARRAY_EXPR, - NEW_CLASS_EXPR, SYNCHRONIZED_EXPR, CONDITIONAL_EXPR, - INSTANCEOF_EXPR, CLASS_LITERAL, THIS_EXPR. - (java_gimplify_case_expr): Removed. - (java_gimplify_default_expr): Likewise. - (java_gimplify_new_array_init): Likewise. - * parse.y: Removed. - * keyword.gperf, keyword.h: Removed. - * chartables.h: Removed. - * check-init.c: Removed. - * buffer.c, buffer.h: Removed. - * convert.h: Removed. - * gen-table.pl: Removed. - * lex.c, lex.h: Removed. - -2007-01-02 Andrew Haley - - * expr.c (expand_java_arraystore): Make sure we perform a bounds - check at runtime before we perform a type check. - -2006-12-19 Andrew Haley - - * decl.c: Bump minor BC ABI version. - -2006-12-13 Gary Benson - - * jcf-depend.c (jcf_dependency_add_file): Mark filename unused. - -2006-12-12 Tom Tromey - - * lang-specs.h: Pass -M options to jc1. - * jcf-depend.c (jcf_dependency_add_file): Don't emit - dependencies. - -2006-12-07 Mohan Embar - - * jcf-path.c (jcf_path_compute): Use platform PATH_SEPARATOR. - -2006-12-06 Mohan Embar - - * lang-specs.h: Pass '%U'-based options as separate arguments. - -2006-12-05 Tom Tromey - - PR java/29495: - * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Mark fields and - classes as well. - * class.c (add_field): Handle ACC_SYNTHETIC. - (add_method_1): Likewise. Handle bridge and varargs. - (get_access_flags_from_decl): Handle synthetic, bridge, varargs, - annotation. - (set_class_decl_access_flags): Handle synthetic and annotation. - * java-tree.h (METHOD_BRIDGE): New macro. - (METHOD_VARARGS): Likewise. - (TYPE_SYNTHETIC): Likewise. - (TYPE_ANNOTATION): Likewise. - (lang_type): New fields 'synthetic' and 'annotation'. - (lang_decl_func): New fields 'varargs' and 'bridge'. - -2006-12-04 Andrew Haley - - * jcf-parse.c (rewrite_reflection_indexes): Don't do anything if - there's no map. - -2006-11-29 Gary Benson - - * expr.c (rewrite_arglist_getcaller): Reorder. - -2006-11-29 Andrew Haley - - * expr.c (rewrite_arglist_getcaller): Remove DECL_INLINE. - * lang.c (java_decl_ok_for_sibcall): Check for DECL_INLINE. - -2006-11-23 Andrew Haley - - * expr.c (rewrite_arglist_getcaller): New. - (rewrite_arglist_getclass): Fix indentation. - (rules): Add gnu.classpath.VMStackWalker.getCallingClass() and - gnu.classpath.VMStackWalker.getCallingClassLoader(). - * builtins.c (initialize_builtins): Remove duplicate def'n of - __sync_synchronize. - Add __builtin_return_address. - -2006-11-22 Andrew Haley - - * jcf-reader.c (get_attribute): Mark attr_type unused. - - * builtins.c (compareAndSwapObject_builtin): Fix declaration. - -2007-01-08 Richard Guenther - - * lex.c (do_java_lex): Use build_int_cst_wide_type. - * jcf-parse.c (get_constant): Likewise. - -2006-11-12 Jan Hubicka - - * resource.c (compile_resource_data): Update for new varpool names. - * java/class.c (build_utf8_ref): Likewise. - -2006-11-12 David Daney - - PR java/29805 - * typeck.c (build_java_array_type): Increase buffer sizes. - -2006-11-11 Richard Guenther - - * check-init.c (check_init): Remove handling of FIX_CEIL_EXPR, - FIX_FLOOR_EXPR and FIX_ROUND_EXPR. - -2006-11-06 Andrew Haley - - * java-tree.h (CONSTANT_LazyFlag): New. - * constants.c (build_constants_constructor): Mask CONSTANT_LazyFlag. - * jcf-parse.c (handle_innerclass_attribute): Write attribute to - reflection_data. - (handle_constant): Return 0 for dummy cpool entries. - Handle constants of kind Class. - Handle constants of kind NameAndType. - (handle_enclosingmethod_attribute): New. - (handle_signature_attribute): New. - (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New. - (HANDLE_SIGNATURE_ATTRIBUTE): New. - (handle_constant): Use unmangle_classname()rather than calling - identifier_subst() directly. - -2006-11-02 Andrew Haley - - * java-tree.h (FIELD_ENUM): New. - (lang_decl_var.field_enum): New. - (lang_type.enum_class): New. - (CLASS_ENUM): New. - * class.c (set_class_decl_access_flags): Handle enum types. - (add_field): Handle enum fields. - (get_access_flags_from_decl): Likewise. - - * class.c (make_class_data): Put reflection_data into rodata. - -2006-11-01 Andrew Haley - - * jcf-parse.c (field_offsets, bit_obstack): New variables. - (jcf_parse): Write end marker to annotation_data. - (java_parse_file): Create field_offsets bitmap. Destroy it. - (annotation_grow, annotation_rewrite_byte) - (annotation_rewrite_short, annotation_rewrite_int) - (annotation_read_short, annotation_write_byte) - (annotation_write_short, annotation_write_int) - (handle_long_constant, handle_constant, handle_element_value) - (handle_annotation, handle_annotations) - (handle_annotation_attribute, rewrite_reflection_indexes) - (handle_member_annotations, handle_parameter_annotations) - (handle_default_annotation): New functions. - (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE) - (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE) - (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) - (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) - (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): New definitions. - * java-tree.h (enum jv_attr_type, enum jv_attr_kind): New. - (TYPE_REFLECTION_DATA): New. - (TYPE_REFLECTION_DATASIZE): New. - * jcf.h (enum cpool_tag): Convert a bunch of #define constants to - an enum. - * jcf-reader.c (get_attribute): Pass field/method index and - attribute type to get_attribute(). - * constants.c (find_class_or_string_constant): Make nonstatic. - (cpool_for_class): Likewise. - (build_constants_constructor): Separate string and scalar types. - * class.c (make_class_data): Generate field_indexes permutation. - Pass it to rewrite_reflection_indexes(). - (make_class_data): Generate constructor for reflection_data field. - -2006-10-20 Tom Tromey - - * gcj.texi (Top): Don't mention jv-scan. - (Invoking gcj): Likewise. - (Invoking gcjh): Likewise. - (Invoking gjnih): Likewise. - (Invoking gij): Likewise. - (Invoking gcj-dbtool): Likewise. - (Invoking jv-scan): Removed. - * parse-scan.y: Removed. - * jv-scan.c: Removed. - * config-lang.in (stagestuff): Don't mention jv-scan. - * Make-lang.in (java): Removed jv-scan. - (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. - (JVSCAN_OBJS): Removed. - (jv-scan$(exeext)): Likewise. - (JAVA_MANFILES): Removed jv-scan.1. - (java.uninstall): Don't mention jv-scan. - (java.mostlyclean): Likewise. - (java.maintainer-clean): Likewise. - (.INTERMEDIATE): Likewise. - (java/jv-scan.o): Removed. - (jv-scan.pod): Likewise. - (java.srcextra): Don't mention parse-scan.c. - (java.mostlyclean): Likewise. - (java/parse-scan.c): Removed. - (java/parse-scan.o-warn): Removed. - (java/parse-scan.o): Removed. - -2006-10-20 Tom Tromey - - * lang.c (java_handle_option): Don't use - jcf_write_base_directory. - * jcf.h (jcf_write_base_directory): Removed. - * parse.y (java_expand_classes): Don't call write_classfile. - * config-lang.in (gtfiles): Removed jcf-write.c. - * Make-lang.in (JAVA_OBJS): Removed jcf-write.o. - (java/jcf-write.o): Removed. - * jcf-parse.c (parse_class_file): Don't call write_classfile. - * java-tree.h (write_classfile): Removed declaration. - * jcf-write.c: Removed. - -2006-10-20 Tom Tromey - - * Make-lang.in (java): Removed gjnih, gcjh. - (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. - (GCJH_OBJS): Removed. - (GJNIH_OBJS): Likewise. - (gjnih$(exeext)): Likewise. - (gcjh$(exeext)): Likewise. - (JAVA_MANFILES): Removed gcjh.1, gjnih.1. - (java.install-common): Don't special case gcjh. - (java.uninstall): Don't mention gcjh, gjnih. - (java.mostlyclean): Likewise. - (java.maintainer-clean): Likewise. - (.INTERMEDIATE): Likewise. - (gcjh.pod): Removed. - (gjnih.pod): Likewise. - (GCJH_TARGET_INSTALL_NAME): Removed. - (java/gjavah-jni.o): Removed. - (java/gjavah.o): Likewise. - * config-lang.in (stagestuff): Removed gjnih, gcjh. - * gjavah.c: Removed. - -2006-10-17 Tom Tromey - - * jcf-dump.c (print_element_value): Expect a utf8 constant in the - "string" case. - -2006-10-17 Tom Tromey - - * jvgenmain.c (main): Handle -findirect-dispatch. - * jvspec.c (jvgenmain_spec): Pass -findirect-dispatch to - jvgenmain. - -2006-10-06 Andrew Haley - - * builtins.c (compareAndSwapInt_builtin): Check that we really do - have a compare_and_swap builtin. - (compareAndSwapLong_builtin): Likewise. - (compareAndSwapObject_builtin): Likewise. - -2006-10-04 Andrew Haley - - * builtins.c (java_builtins): Add compareAndSwapInt, - compareAndSwapLong, compareAndSwapObject, putOrderedInt, - putOrderedLong, putOrderedObject, putIntVolatile, putLongVolatile, - putObjectVolatile, getObjectVolatile, getIntVolatile, - getLongVolatile, getLong. - (UNMARSHAL3): New macro. - (UNMARSHAL4): Likewise. - (UNMARSHAL5): Likewise. - (build_arglist_for_builtin): New function. - (build_addr_sum, build_check_this): New functions. - (putObject_builtin. compareAndSwapInt_builtin, - compareAndSwapLong_builtin, compareAndSwapObject_builtin, - putVolatile_builtin, getVolatile_builtin): New builtins. - -2006-06-08 Andrew Haley - - * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to - get_symbol_table_index(). - (maybe_rewrite_invocation): Set SPECIAL if we need to access a - private method. - (build_known_method_ref): New arg: special. Pass it to - get_symbol_table_index. - (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of - the method list. - (build_invokevirtual): New arg: special. Pass it to - get_symbol_table_index. - (expand_invoke): New variable: special. - Pass it to maybe_rewrite_invocation(). - Pass it to build_known_method_ref(). - * class.c (build_symbol_entry): Add new arg: special. Use it to - build the symbol table conbstructor. - (emit_symbol_table): Extract SPECIAL from the method list and pass - it to build_symbol_entry(). - * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set - special accordingly. - -2006-09-08 Andrew Haley - - * class.c (layout_class_method): Use build_java_signature, not - build_java_argument_signature. Use lookup_java_method, not - lookup_argument_method. - -2006-08-16 Jakub Jelinek - Bryce McKinlay - - * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed. - -2006-07-18 Tom Tromey - - * lang.opt: Added missing -W options. - -2006-07-12 Tom Tromey - - PR java/28329: - * lang-specs.h: Pass '%U'-based options as separate arguments. - Use -faux-classpath. - * lang.c (java_handle_option): Handle OPT_faux_classpath. - * lang.opt (faux-classpath): New option. - -2006-07-07 Tom Tromey - - * class.c (make_class_data): Set value for reflection_data field. - * decl.c (java_init_decl_processing): Add reflection_data field. - -2006-07-07 Tom Tromey - - * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): Declare locals - earlier. - (HANDLE_SIGNATURE_ATTRIBUTE): Likewise. - -2006-07-07 Andrew Haley - - * jcf-parse.c (set_source_filename): Don't check for - CLASS_FROM_CURRENTLY_COMPILED_P. - Remove // comments. - -2006-07-07 Andrew Haley - - * java-tree.h (java_read_sourcefilenames): Declare. - * lang.c (java_handle_option): Call java_read_sourcefilenames(). - * lang.opt (fsource-filename): New opt. - * lang-specs.h: Add -fsource-filename. - * jcf-parse.c (num_files, filenames): New variables. - (reverse, cmpstringp, java_read_sourcefilenames, - find_sourcefile): New. - (set_source_filename): Call find_sourcefile to find the real name - of a source file. - -2006-06-27 Tom Tromey - - * jcf-reader.c (get_attribute): Handle EnclosingMethod, - Signature, LocalVariableTypeTable, annotation attributes. - * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New macro. - (HANDLE_SIGNATURE_ATTRIBUTE): Likewise. - (HANDLE_START_FIELD): Mention 'descriptor', not 'signature'. - (HANDLE_METHOD): Likewise. - (HANDLE_LOCALVARIABLETYPETABLE_ATTRIBUTE): New macro. - (print_annotation): New function. - (print_element_value): Likewise. - (indent): Likewise. - (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE): New macro. - (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE): Likewise. - (print_parameter_annotations): New function. - (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE): New macro. - (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE): - Likewise. - (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): Likewise. - (print_annotations): New function. - -2006-06-23 Tom Tromey - - * lang-specs.h: Default -fsource and -ftarget to 1.5. If - emitting class files, always use 1.5. - * gcj.texi (Input Options): Document -fsource. - (Code Generation): Document -ftarget. - -2006-06-21 Tom Tromey - - PR java/28089: - * expr.c (expand_java_field_op): Initialize field's declaring - class. - -2006-06-20 Tom Tromey - - * expr.c (push_value): Always flush quick stack. - -2006-06-19 Tom Tromey - - * expr.c (push_value): Also flush quick stack if value is a - component_ref. - -2006-06-19 Tom Tromey - - * expr.c (push_value): Flush quick stack if value has side - effects. - -2006-06-13 Tom Tromey - - * class.c (is_compiled_class): Explicitly check for current - class. - -2006-06-09 Tom Tromey - - * gjavah.c (decompile_method): Don't decompile a static field - accessor method. - -2006-06-06 Tom Tromey - - * lang-specs.h : Add .jar file to command line if - -fsaw-java-file. Also, remove -ffilelist-file in this case. - -2006-06-05 Tom Tromey - - * jcf-dump.c (print_access_flags): Handle varargs, bridge, - synthetic, enum, annotation. - * jcf.h (ACC_BRIDGE): New macro. - (ACC_VARARGS): Likewise. - (ACC_SYNTHETIC): Likewise. - (ACC_ENUM): Likewise. - (ACC_ANNOTATION): Likewise. - -2006-06-04 Tom Tromey - - * lang.opt (-fsaw-java-file, -fsource, -ftarget): New options. - * jvspec.c (jvgenmain_spec): Remove -fsaw-java-file, -fsource, - and -ftarget. - (lang_specific_driver): Removed dead code. Add -fsaw-java-file - when needed. Handle classpath-setting. - * Make-lang.in ($(GCJ)$(exeext)): Link in jcf-path.o. - * lang-specs.h: Rewrote. - -2006-06-04 Tom Tromey - - * jcf-io.c (find_class): Set source_ok to 0. - * jcf-parse.c (jcf_parse): Disable gnu.gcj.gcj-compiled warning. - (parse_class_file): Don't call java_mark_class_local. - (java_parse_file): Skip .java files. Call java_mark_class_local - before lowering any code. - (parse_zip_file_entries): Don't call duplicate_class_warning - here. - (process_zip_dir): ... call it here. - * class.c (add_field): Don't mark field external if it is being - compiled into this object. - (make_class_data): Handle situation where class_dtable_decl is - created before Class is compiled. - (is_compiled_class): Don't assume files in zip are compiled into - this object. - (layout_class_method): Don't mark method external if it is being - compiled into this object. - -2006-06-04 Tom Tromey - - * jcf-path.c (jcf_path_compute): New function. - * jcf.h (jcf_path_compute): Declare. - -2006-10-23 Rafael Ávila de Espíndola - - * decl.c: Include langhooks.h. - (builtin_function): Remove. - (java_init_decl_processing): Replace calls to builtin_function - with add_builtin_function. - * Make-lang.in (jc1$(exeext)): Depend on and link with attribs.o. - (java/decl.o): Depend on langhooks.h. - * java-tree.h (builtin_function): Remove. - -2006-10-10 Brooks Moses - - * Make-lang.in: Added "java.pdf", "gcj.pdf" target support. - -2006-09-12 Tom Tromey - - * expr.c (push_value): Always flush quick stack. - -2006-09-12 Tom Tromey - - PR java/29013: - * jcf-write.c (generate_bytecode_insns) : Always note - the push of the called method's return result. - -2006-09-12 Tom Tromey - - * jvspec.c (lang_specific_driver): Read spec file even if - -fsyntax-only. - -2006-09-12 Tom Tromey - - PR java/28754: - * expr.c (expand_java_field_op): Initialize field's declaring - interface if necessary. - -2006-09-12 Tom Tromey - - PR java/28892: - * expr.c (expand_java_field_op): No error for assignments not in - class initializer or constructor. - -2006-08-22 Andrew Haley - - * decl.c (java_add_stmt): Give the statement list a type. - -2006-08-16 Jakub Jelinek - Bryce McKinlay - - * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed. - -2006-08-10 Simon Martin - - PR java/8923 - * parse.y (build_incdec): Emit an error instead of an ICE if '++' - or '--' is used with a constant operand. - (java_complete_lhs): When processing a '++' or '--' expression, - don't call java_complete_tree but java_complete_lhs, so that a - static final variable operand is never replaced by its value. This - avoids an ICE later on. - (patch_unaryop): Fixed typo in comment. - -2006-07-28 Volker Reichelt - - * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies. - -2006-07-12 Bryce McKinlay - - * builtins.c (check_for_builtin): If a builtin could result in a - direct call being generated, don't use it if flag_indirect_dispatch - is set. - -2006-07-12 Bryce McKinlay - - * gcj.texi (Invocation): Corrections for Invocation API example. - -2006-07-04 Andrew Haley - - * class.c (build_fieldref_cache_entry): Set DECL_IGNORED_P on the - entry. - -2006-06-21 Andrew Haley - - * java-tree.h (update_aliases): Remove - * expr.c (expand_iinc): Remove call to update_aliases(). - (STORE_INTERNAL): Likewise. - * decl.c (update_aliases, initialize_local_variable) - (maybe_pushlevels): Set DECL_VALUE_EXPR for debugging decls. - -2006-06-19 Andrew Haley - - PR java/1305 - PR java/27908 - * expr.c (java_modify_addr_for_volatile): New function. - (expand_java_field_op): Handle volatile fields. - * java-gimplify.c (java_gimplify_component_ref): Call - java_modify_addr_for_volatile to give the field_ref the correct - volatile type. - (java_gimplify_modify_expr): Likewise. - * java-tree.h (java_modify_addr_for_volatile): New decl. - -2006-06-17 Karl Berry - - * gcj.texi (@dircategory): Use "Software development" instead - of "Programming", following the Free Software Directory. - -2006-06-16 Andrew Haley - - * class.c (make_class_data): When using flag_indirect_classes, - don't initialize the vtable of Class instances. - -2006-06-09 Andrew Haley - - PR java/1305 - PR java/27908 - * builtins.c (initialize_builtins): Add __sync_synchronize(). - * class.c (add_field): Mark volatile fields. - * java-gimplify.c (java_gimplify_expr): Call new functions to - handle self-modifying exprs and COMPONENT_REFs. - (java_gimplify_component_ref): New. - (java_gimplify_modify_expr): Add handling for volatiles. - -2006-06-08 Tom Tromey - - * gcj.texi (libgcj Runtime Properties): Document - gnu.gcj.user.realname. - -2006-06-08 Andrew Haley - - * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to - get_symbol_table_index(). - (maybe_rewrite_invocation): Set SPECIAL if we need to access a - private method. - (build_known_method_ref): New arg: special. Pass it to - get_symbol_table_index. - (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of - the method list. - (build_invokevirtual): New arg: special. Pass it to - get_symbol_table_index. - (expand_invoke): New variable: special. - Pass it to maybe_rewrite_invocation(). - Pass it to build_known_method_ref(). - * class.c (build_symbol_entry): Add new arg: special. Use it to - build the symbol table conbstructor. - (emit_symbol_table): Extract SPECIAL from the method list and pass - it to build_symbol_entry(). - * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set - special accordingly. - -2006-06-06 David Daney - - * gcj.texi (libgcj Runtime Properties): Document - gnu.gcj.runtime.NameFinder.show_raw and - gnu.gcj.runtime.NameFinder.remove_unknown. - -2006-06-06 Tom Tromey - - * jcf-dump.c (print_access_flags): Handle varargs, bridge, - synthetic, enum, annotation. - * jcf.h (ACC_BRIDGE): New macro. - (ACC_VARARGS): Likewise. - (ACC_SYNTHETIC): Likewise. - (ACC_ENUM): Likewise. - (ACC_ANNOTATION): Likewise. - -2006-06-06 Mike Stump - - * Make-lang.in: Rename to htmldir to build_htmldir to avoid - installing during build. - -2006-05-31 Thomas Fitzsimmons - - * gcj.texi (Extensions): Document the new gcj-dbtool-based - classname-to-library resolution mechanism. - Declare the old gnu.gcj.runtime.VMClassLoader.library_control - mechanism deprecated. - (libgcj Runtime Properties): Document - gnu.gcj.runtime.VMClassLoader.library_control's new default. - -2006-05-29 Jakub Jelinek - - * javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64) - bit wide type. - (jword): Define to uint64 on 64-bit arches. - * jcf-dump.c (print_constant): Cast JPOOL_UINT to long. - -2006-05-28 Kazu Hirata - - * class.c, except.c, expr.c, java-gimplify.c: Fix comment - typos. - -2006-05-26 Tom Tromey - - * expr.c (java_push_constant_from_pool): Handle 'ldc class'. - * verify-glue.c (vfy_class_type): New function. - * verify-impl.c (check_constant): Allow 'ldc class'. - * verify.h (vfy_class_type): Declare. - -2006-05-25 Andrew Haley - - PR java/27756 - * decl.c (maybe_pushlevels): When variable ranges are non-nested - update all lifetimes, not just the first one. - -2006-05-24 Tom Tromey - - * java-tree.h: Fixed flag documentation. - -2006-05-24 Tom Tromey - - PR libgcj/27729: - * jcf.h (ACC_INVISIBLE): Changed value. - -2006-05-24 Andrew Haley - - PR java/27754 - * decl.c (java_add_stmt): Use a STATEMENT_LIST rather than a - COMPOUND_EXPR. - -2006-05-16 H.J. Lu - - * lang.opt (femit-class-file): Remove VarExists. - -2006-05-16 Tom Tromey - - * verify-impl.c (verify_instructions_0) : Special case - for Object.. - -2006-05-16 H.J. Lu - - PR driver/26885 - * Make-lang.in ($(GCJ)$(exeext)): Replace gcc.o with - $(GCC_OBJS). - -2006-05-14 H.J. Lu - - * Make-lang.in (java/decl.o): Add dependency on $(TARGET_H). - (java/expr.o): Replace target.h with $(TARGET_H). - (java/parse.o): Likewise. - -2006-05-10 Andrew Haley - - * class.c (emit_indirect_register_classes): Fix comment. - -2006-05-04 Tom Tromey - - * java-tree.h (uses_jv_markobj_p): Declare. - * class.c (uses_jv_markobj_p): Removed. - * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): New define. - (get_boehm_type_descriptor): Use it. - (uses_jv_markobj_p): Moved from class.c. Return bool. - -2006-05-04 Tom Tromey - - * java-tree.def (THIS_EXPR): Now a tcc_expression. - -2006-05-04 Andrew Haley - - * class.c (make_field_value): Always build_address_of fdecl if - there is an initializer. - -2006-05-03 Andrew Haley - - PR libgcj/27352 - * expr.c (maybe_rewrite_invocation): New function. - (rewrite_arglist_getclass): Likewise. - (rules): New. - (expand_invoke): Call maybe_rewrite_invocation. - * parse.y (patch_invoke): Likewise. - * java-tree.h: (maybe_rewrite_invocation): New function. - -2006-04-21 Andrew Haley - - * lang.c (java_init): Handle flag_indirect_classes. - * jvgenmain.c: Use "class$$" instead of "class$". - * mangle.c (java_mangle_decl): Accept RECORD_TYPEs sw well as - DECLs. - (mangle_class_field): Special case "class$$" as well as "class$". - * constants.c (build_ref_from_constant_pool): If - flag_indirect_classes, generate a ref into the heap. - * decl.c (constants_field_decl_node, - constants_data_field_decl_node): New. - * class.c (build_static_class_ref): New. - (build_classdollar_field): Factor out from build_class_ref(). - (make_field_value): Handle static fields in heap. - (make_class_data): Make sure we get a static ref to class. - Make class initializer const if flag_indirect_classes. - (register_class): Build a class_ref for initialization if - flag_indirect_classes. - (emit_indirect_register_classes): New. - -2006-04-08 Kazu Hirata - - * expr.c, gjavah.c: Fix comment typos. - -2006-04-03 Andrew Haley - - PR java/26858 - * expr.c (build_field_ref): Don't check the field offset if - flag_syntax_only. - -2006-03-30 Andrew Haley - - PR java/26858 - * lang.c (java_attribute_table): New. - (LANG_HOOKS_ATTRIBUTE_TABLE): Define. - * expr.c (build_field_ref): Add a null pointer check for all - fields of offset > 4k. Don't do so for accesses via the this - pointer, which we know can never be null. - * class.c (build_java_method_type): Mark arg 1 of all nonstatic - methods nonnull. - -2006-03-30 Carlos O'Donell - - * Make-lang.in: Rename docdir to gcc_docdir. - -2006-03-30 Tom Tromey - - PR java/26042: - * parse.y (java_reorder_fields): Reset superclass field's size as - well. - -2006-03-28 Tom Tromey - - PR java/26390: - * parse.y (find_most_specific_methods_list): Added 'class' - argument. - (lookup_method_invoke): Updated. - -2006-03-15 Tom Tromey - - * jcf-write.c (generate_bytecode_insns): Use qualifying type for - non-static method calls. - -2006-03-15 David Daney - - * java-tree.h : Moved comment for TYPE_DOT_CLASS adjacent to its - declaration. - -2006-03-15 David Daney - - * lang.opt (-freduced-reflection): New option. - * lang.c (java_post_options): Generate an error if - -freduced-reflection used with -fjni or -findirect-dispatch. - * java-tree.h (flag_reduced_reflection): Declare new variable. - * boehm.c (get_boehm_type_descriptor): Indicate all pointers - if bitmap overflows and flag_reduced_reflection set. - * class.c (uses_jv_markobj_p): New function. - (make_class_data): Moved generation of vtable to before - reflection data, generate less reflection data if - flag_reduced_reflection set. - * gcj.texi: Document -freduced-reflection. - -2006-03-15 Tom Tromey - - PR java/26638: - * class.c (get_interface_method_index): Don't put into - interface table. - -2006-03-15 Tom Tromey - - * parse.y (analyze_clinit_body): Ignore empty statements. - -2006-03-08 David Daney - - * gcj.texi: Document -static-libgcj option. - -2006-02-20 Andrew Haley - - * jcf-parse.c (parse_class_file): Set input_location from - current_class. - -2006-02-15 Andrew Haley - - * class.c (GEN_TABLE): Don't pushdecl *_SYMS_DECL here. - (make_class_data): pushdecl_top_level TYPE_OTABLE_SYMS_DECL, - TYPE_ATABLE_SYMS_DECL, TYPE_ITABLE_SYMS_DECL here. - -2006-02-09 Andrew Haley - - PR java/26192 - * expr.c (expand_invoke): Allow methods in arrays to be resolved - in their superclass. - - * typeck.c (build_java_array_type): Generate TYPE_STUB_DECLs for - array types. - -2006-02-08 Tom Tromey - - PR java/22578: - * check-init.c (check_init): Handle VIEW_CONVERT_EXPR. - * builtins.c (convert_real): New function. - (java_builtins): Handle Float.intBitsToFloat, - Float.floatToRawIntBits, Double.longBitsToDouble, - Double.doubleToRawLongBits. - -2006-02-07 Andrew Haley - - * expr.c (expand_invoke): (BC mode.) If we find a method in a - class other than the one in which we expected to find it, ignore - the result. - - PR java/25535 - * constants.c (build_constants_constructor): move initializer into - first halfword on a 64-bit big-endian machine. - -2006-02-04 Tom Tromey - - PR java/25676: - * builtins.c (max_builtin): Skip floating point 'max'. - (min_builtin): Skip floating point 'min'. - (check_for_builtin): Never return NULL_TREE. - -2006-02-04 Tom Tromey - - PR java/26097: - * expr.c (push_type): Avoid side effect in gcc_assert. - -2006-02-04 Roger Sayle - - * decl.c (java_init_decl_processing): Create char_type_node as a - regular INTEGER_TYPE node. - (push_promoted_type): Preserve TYPE_STRING_FLAG on types. - * typeck.c (convert): No longer check for CHAR_TYPEs but instead - test for char_type_node and promoted_char_type_node as special - instances of INTEGER_TYPE tree codes. - (promote_type,build_java_signature): Likewise. - * jcf-write.c (adjust_typed_op): Likewise. - * mangle.c (mangle_type): Likewise. - * parse.y (do_unary_numeric_promotion): No longer handle CHAR_TYPE. - * parse.h (JINTEGRAL_TYPE_P): Likewise. - -2006-02-04 Andreas Tobler - - * expr.c (java_stack_swap): Revert gcc_assert patch. - -2006-02-03 Ben Elliston - - * java-gimplify.c: Use gcc_assert and gcc_unreachable throughout. - * typeck.c: Likewise. - * verify-impl.c: Likewise. - * class.c: Likewise. - * decl.c: Likewise. - * jcf-parse.c: Likewise. - * constants.c: Likewise. - * check-init.c: Likewise. - * jcf-write.c: Likewise. - * verify-glue.c: Likewise. - * mangle.c: Likewise. - * expr.c: Likewise. - * lang.c: Likewise. - * boehm.c: Likewise. - -2006-02-01 Jan Hubicka - - * decl.c (end_java_method): Kill hack disabling unit-at-a-time. - * lang.c (java_init_options): Set no_unit_at_a_time_default. - -2006-01-30 Andrew Haley - - PR java/21428 - * parse.y: (source_start_java_method): Mark DECL_ARTIFICIAL("this"). - -2006-01-21 Joseph S. Myers - - * jv-scan.c (version), jcf-dump.c (version), gjavah.c (version): - Update copyright notice dates. - -2006-01-16 Rafael Ávila de Espíndola - - * jvspec.c (lang_specific_spec_functions): Remove. - -2006-01-06 Tom Tromey - - * gcj.texi (Arrays): Added more documentation for - JvNewObjectArray. - (Primitive types): Correct information about primitive classes. - (Reference types): New node. - (Index): New node. - -2005-12-16 Alexandre Oliva - - * jcf-parse.c (set_source_filename): Set the decl source location - even when returning early. - -2005-12-15 Tom Tromey - Andrew Haley - - PR java/25429 - * parse.y (resolve_expression_name): Don't generate accessor - methods for constant fields. - -2005-12-13 Andrew Haley - - PR java/25366 - PR java/25368 - * class.c (maybe_layout_super_class): Update current_class before - calling do_resolve_class. - -2005-12-12 H.J. Lu - - PR java/25330 - * jcf-write.c (write_classfile): Use PID in temporary class - file. Save/restore errno when reporting error. - -2005-12-10 Terry Laurenzo - - PR java/9861 - * mangle.c (mangle_method_decl): Mangle Java methods by prepending 'J' - to bare_function_type and including the return type - * builtins.c (initialize_builtins) : Change builtin mangled name - constants to conform to new mangling scheme - -2005-12-08 Andrew Haley - - PR libgcj/25265 - * java-tree.h (enum java_tree_index): Add JTI_SOFT_NOSUCHFIELD_NODE. - (soft_abstractmethod_node): New. - * expr.c (build_field_ref): Add in-line check for missing field. - * decl.c (java_init_decl_processing): Add soft_nosuchfield_node. - -2005-12-07 Rafael Ávila de Espíndola - - * Make-lang.in (java.all.build, java.install-normal): Remove. - -2005-12-07 Rafael Ávila de Espíndola - - * Make-lang.in: Remove all dependencies on s-gtype, except for - gt-java-parse.h. - -2005-12-07 Richard Sandiford - - * class.c (build_utf8_ref, emit_register_classes): Use - switch_to_section and get_section. - -2005-12-06 Tom Tromey - - PR java/25283: - * parse.y (patch_new_array_init): Revert previous patch. - (lookup_method_invoke): Use size-less array type when creating an - anonymous constructor. - -2005-12-05 Tom Tromey - - * parse.y (patch_new_array_init): Don't set length on array. - -2005-12-02 Richard Guenther - - * java-gimplify.c (java_gimplify_labeled_block_expr): Use - buildN instead of build. - * class.c (finish_class): Likewise. - * expr.c (java_create_object): Likewise. - -2005-11-28 Tom Tromey - - PR java/18278: - * expr.c (build_jni_stub): Unwrap the return value. - * java-tree.h (soft_unwrapjni_node): New define. - (enum java_tree_index): Added JTI_SOFT_UNWRAPJNI_NODE. - * decl.c (java_init_decl_processing): Initialize - soft_unwrapjni_node. - -2005-11-24 Bryce McKinlay - - * gcj.texi (gij options): Add -Xss documentation. - -2005-11-08 Wil Mahan - - PR java/23617 - * zextract.c (read_zip_archive): Fix out of memory error when - reading jar files with zip-style comments. - -2005-11-07 Terry Laurenzo - - * gjavah.c (HANDLE_CODE_ATTRIBUTE): Only define for ELF Object - formats. - * gjavah.c (decompile_method): Add ATTRIBUTE_UNUSED - -2005-10-12 Nathan Sidwell - Wil Mahan - - PR java/23620 - * class.c (make_class): Create empty binfo here. - (set_super_info): Only create binfo if we have superclasses. - -2005-10-03 Ranjit Mathew - - PR java/24127 - * parse.y (method_header): Make the result of the rule a NULL_TREE - when a parsing error occurs. - -2005-09-29 Tom Tromey - - PR java/24120: - * jcf-io.c (memoized_dirlist_hash): New function. - (caching_stat): Use it. - -2005-09-21 Ranjit Mathew - - PR java/21418 - * class.c (inherits_from_p): Try to lay out super class - if it is not already laid out. - (maybe_layout_super_class): Handle the case where SUPER_CLASS - is a NULL_TREE. - -2005-09-18 James A. Morrison - - * builtins.c (max_builtin, min_builtin, abs_builtin, - java_build_function_call_expr): Use fold_buildN. - * class.c (layout_class_method): Likewise. - * expr.c (java_truthvalue_conversion, build_java_jsr, - build_java_arrayaccess, expand_java_arrayload, expand_iinc, - build_java_binop, build_field_ref, expand_compare, - build_known_method_ref, build_invokevirtual, - process_jvm_instruction): Likewise. - * parse.y (patch_binop, patch_exit_expr): Likewise. - * typeck.c (convert_ieee_real_to_integer): Likewise. - (convert): Don't call fold after convert_ieee_real_to_integer. - -2005-09-14 Bryce McKinlay - - PR java/23891 - * parse.y (maybe_create_class_interface_decl): Set TYPE_PACKAGE for - the newly created type. Set import lists here, not in create_class. - (jdep_resolve_class): Set current_class. - (do_resolve_class): Use current_class's TYPE_PACKAGE to determine - the current package context, not ctxp->package. - (cicp_cache): Removed. - (class_in_current_package): Simplify implementation using TYPE_PACKAGE. - * jcf-parse.c (give_name_to_class): Set TYPE_PACKAGE. - * java-tree.h (TYPE_PACKAGE): New macro. - (struct lang_type): New member 'package'. - -2005-09-09 Andrew Haley - - PR libgcj/23182 - * expr.c (pop_type_0): If the expected type is object or ptr - (i.e. void*), return the type of the object we just popped from - the stack. - -2005-09-06 Andrew Pinski - - * java-gimplify.c (java_gimplify_block): NULL out the old BLOCK's - BLOCK_EXPR_BODY before returning the new BIND_EXPR. - -2005-09-06 Kazu Hirata - - * check-init.c, decl.c, expr.c, gcj.texi, java-tree.h, - jcf-parse.c, jcf.h, parse.h, parse.y, typeck.c: Fix comment - typos. Follow spelling conventions. - -2005-09-05 Ranjit Mathew - - PR java/23431 - * typeck.c (lookup_do): Look up interfaces for the original class, - not the base class. - * parse.y (java_check_regular_methods): Fix diagnostic message for - more restrictive overriding of a method from an interface. - -2005-08-16 Tom Tromey - - * class.c (make_class_data): Always emit JV_STATE_PRELOADING for - class' initial state. - -2005-08-16 Ranjit Mathew - - PR java/22113 - * lex.c (do_java_lex): Define MAX_TOKEN_LEN. Avoid overflowing - `literal_token' for large numeric input tokens. - -2005-08-16 Ranjit Mathew - - PR java/19870 - * parse.y (nested_field_access_p): Rename to nested_member_access_p - and expand to handle method accesses across nested classes. - (build_outer_method_access_method): Rename to - build_nested_method_access_method. Minor adjustments to comments. - (resolve_expression_name): Use the newly-renamed - nested_member_access_p method. - (resolve_qualified_expression_name): Likewise. - (patch_method_invocation): Also consider static methods for access - method generation. Minor adjustments to comments. - (maybe_use_access_method): Use the more general - nested_memeber_access_p to determine access across nested class - boundaries. Allow THIS_ARG to be NULL (for static methods). - -2005-08-15 Tom Tromey - - PR java/23300. - * expr.c (build_field_ref): Don't generate otable reference when - DECL_FIELD_OFFSET is 0. - * class.c (maybe_layout_super_class): Pass outer class to - do_resolve_class. - -2005-08-15 Tom Tromey - - * java-tree.h (LABEL_IN_SUBR): Removed. - (LABEL_IN_SUBR): Likewise. - (LABEL_IS_SUBR_START): Likewise. - (LABEL_SUBR_START): Likewise. - (LABEL_SUBR_CONTEXT): Likewise. - (LABEL_CHANGED): Likewise. - (LABEL_RETURN_LABEL): Likewise. - (LABEL_RETURN_TYPE_STATE): Likewise. - (LABEL_RETURN_LABELS): Likewise. - (RETURN_MAP_ADJUSTED): Likewise. - (LABEL_PENDING_CHAIN): Likewise. - -2005-08-15 Tom Tromey - - * Make-lang.in (JAVA_OBJS): Removed verify.o - (java/verify.o): Removed. - * verify.c: Removed. - * lang.c (flag_new_verifier): Removed. - (java_post_options): Updated. - * java-tree.h (flag_new_verifier): Removed. - (verify_jvm_instructions): Removed. - * expr.c (pop_type_0): Assume flag_new_verifier is true. - (build_java_check_indexed_type): Likewise. - (expand_java_arraystore): Likewise. - (expand_java_arrayload): Likewise. - (pop_arguments): Likewise. - (expand_byte_code): Likewise. - (process_jvm_instruction): Likewise. - -2005-08-10 Andrew Haley - - * java-gimplify.c (java_gimplify_modify_expr): Fix any pointer - type mismatches to make legal GIMPLE. - -2005-08-10 Robin Green - - PR java/23230: - * parse.y (maybe_use_access_method): Generalize check from - java.lang.Object to any superclass of current_class - -2005-08-08 Nathan Sidwell - - * class.c (build_class_ref): Wrap the primary class type in a - NOP_EXPR. - * parse.y (java_complete_lhs) : Extract the - primary class type from the NOP_EXPR in which it was placed. - -2005-07-28 Diego Novillo - - * expr.c (expand_load_internal): Fix missing parens in - predicate. - -2005-07-28 Andrew Haley - - * expr.c (expand_load_internal): Convert to destination type. - -2005-07-22 Manfred Hollstein - - * verify-impl.c (check_class_constant): Fix uninitialised warnings. - (check_constant): Likewise. - (check_wide_constant): Likewise. - -2005-07-20 Giovanni Bajo - - Make CONSTRUCTOR use VEC to store initializers. - * check-init.c (check_init): Update to cope with VEC in - CONSTRUCTOR_ELTS. - * class.c (make_field_value, make_method_value, get_dispatch_table, - make_class_data, emit_symbol_table, emit_catch_table, - emit_assertion_table): Use build_constructor_from_list instead of - build_constructor. - * constants.c (build_constants_constructor): Likewise. - * java-gimplify.c (java_gimplify_new_array_init): Update to cope with - VEC in CONSTRUCTOR_ELTS. - * java-tree.h (START_RECORD_CONSTRUCTOR, PUSH_SUPER_VALUE, - PUSH_FIELD_VALUE, FINISH_RECORD_CONSTRUCTOR): Create a VEC instead - of a TREE_LIST. - * jcf-write.c (generate_bytecode_insns): Update to cope with VEC in - CONSTRUCTOR_ELTS. - * parse.y (build_new_array_init): Use build_constructor_from_list - instead of build_constructor. - (patch_new_array_init): Update to cope with VEC in - CONSTRUCTOR_ELTS. - (array_constructor_check_entry): Likewise. - -2005-07-12 Tom Tromey - - * jvspec.c (lang_specific_driver): Put filelist_filename first on - command line. - -2005-07-12 Tom Tromey - - PR java/19674: - * parse-scan.y (interface_member_declaration): Added - empty_statement. - -2005-07-08 Daniel Berlin - - * java-tree.h (LABEL_RETURN_LABELS): Use decl_non_common. - (LABEL_PENDING_CHAIN): Ditto. - (LABEL_PC): Ditto. - (DECL_BIT_INDEX): Ditto. - -2005-07-07 Bryce McKinlay - - PR java/18119 - * parse.y (inner_class_accessible): New function. Logic moved from - check_inner_class_access. - (check_inner_class_access): Use inner_class_accessible. - (resolve_inner_class): Simplify arguments. Create circularity hash - here. Keep looking for classes if we found one that was inaccessible. - Return the inaccessible class only if there is no other match. - (do_resolve_class): Update for new resolve_inner_class arguments. - Don't create circularity_hash here. - -2005-07-07 Bryce McKinlay - - PR java/21045 - * parse.y (add_exception_to_throws): New function. - (purge_unchecked_exceptions): Removed. - (get_constructor_super): Renamed from verify_constructor_super. Now - returns the super constructor after verification. - (java_complete_expand_method): Don't use purge_unchecked_exceptions - or save/restore the exception list. - (check_thrown_exceptions): Add uncaught exceptions in anonymous - class initializers and constructors to the throws clause of the method. - -2005-07-05 Bryce McKinlay - - PR java/19674 - * parse.y (interface_member_declaration): Allow empty statements in - interface declarations. - -2005-07-05 Paolo Bonzini - - * Makefile.in (parse.o): Adjust dependencies. - * parse.y: Include tree-dump.h. - -2005-07-02 Joseph S. Myers - - * class.c, decl.c, expr.c: Use '+' flag instead of %J. Use 'q' - flag for quoting. - -2005-07-01 Andrew Pinski - - * parse.y (issue_warning_error_from_context): Call - pp_output_formatted_text to be able to get the buffer. - -2005-06-30 Andrew Pinski - - * parse.y (issue_warning_error_from_context): Update for the - renaming of pp_format_text to pp_format. - -2005-06-28 Paul Brook - - * decl.c (java_init_decl_processing): Call - default_init_unwind_resume_libfunc. - -2005-06-27 Tom Tromey - - PR java/21540, PR java/13788: - * parse.y (java_complete_lhs) : Use - fold_constant_for_init. - (patch_binop): Added 'folding' argument. Updated all callers. - (patch_unaryop) : New case. - (fold_constant_for_init) : Likewise. - (fold_constant_for_init) : Fix sense of test. - -2005-06-25 Jan Hubicka - - * builtins.c (define_builtin): Accept new flags parameter. - (initialize_builtins): Mark the builtins const and nothrow accordingly. - -2005-06-25 Kelley Cook - - * all files: Update FSF address in copyright headers. - -2005-06-24 Tom Tromey - - * verify-impl.c (verify_instructions_0): Correctly handle - situation where PC falls off end. - -2005-06-23 Bryce McKinlay - - PR java/20697 - * parse.y (find_most_specific_methods_list): Remove special case for - inner classes. - -2005-06-15 Tom Tromey - - PR libgcj/21906: - * class.c (make_method_value): Use soft_abstractmethod_node for - abstract method. - * java-tree.h (soft_abstractmethod_node): New define. - (JTI_SOFT_ABSTRACTMETHOD_NODE): New enum constant. - * decl.c (java_init_decl_processing): Initialize - soft_abstractmethod_node. - -2005-06-13 Geoffrey Keating - - * Make-lang.in (rule for installing gcj.1): Depends on installdirs. - -2005-06-13 Per Bothner - - * expr.c (int highest_label_pc_this_method, - start_label_pc_this_method): New globals. - (lookup_label): Add start_label_pc_this_method to pc for label, and - update highest_label_pc_this_method. This prevents conflicts between - labels from different methods. - * java-tree.h: Declare new globals. - * jcf-parse.c (parse_class_file): If needed bump - start_label_pc_this_method and reset highest_label_pc_this_method. - -2005-06-13 Tom Tromey - - PR java/21844: - * parse.y (nested_field_access_p): Handle case where outer field - is inherited by enclosing class. - -2005-06-12 Per Bothner - - * class.c (inherits_from_p): Do load_class if needed. - -2005-06-09 Kaveh R. Ghazi - - * gjavah.c (error): Add ATTRIBUTE_PRINTF_1. - * java-tree.h (parse_error_context): Move... - * parse.h (parse_error_context): ... here, add ATTRIBUTE_GCC_DIAG. - * parse.y (parse_warning_context): Add ATTRIBUTE_GCC_DIAG. - * verify-impl.c (debug_print): Add ATTRIBUTE_PRINTF_1. - -2005-06-08 Roger Sayle - - * typeck.c (convert): Only clear TREE_OVERFLOW on INTEGER_CST nodes. - -2005-06-06 Jakub Jelinek - - * jv-scan.c (fatal_error, warning, warning0): Use gmsgid instead of - msgid for argument name. - * gjavah.c (error): Likewise. - * java-tree.h (parse_error_context): Likewise. - * parse.y (parse_error_context, parse_warning_context, - issue_warning_error_from_context): Likewise. - -2005-06-01 Tom Tromey - - PR java/21722: - * class.c (build_static_field_ref): Don't fold constant fields if - current class is from a .class file and we're using indirect - dispatch. - -2005-05-31 Kaveh R. Ghazi - - * java/verify-glue.c: Don't include errors.h and include toplev.h. - * java/Make-lang.in: Updates dependencies. - -2005-05-26 Ranjit Mathew - - PR java/19870. - * java-tree.h (OUTER_FIELD_ACCESS_IDENTIFIER_P): Rename to - NESTED_FIELD_ACCESS_IDENTIFIER_P. - (FIELD_INNER_ACCESS): Rename to FIELD_NESTED_ACCESS. - (FIELD_INNER_ACCESS_P): Rename to FIELD_NESTED_ACCESS_P. - * jcf-write.c (generate_classfile): Use - NESTED_FIELD_ACCESS_IDENTIFIER_P instead of - OUTER_FIELD_ACCESS_IDENTIFIER_P. - * parse.y (build_outer_field_access): Rename to - build_nested_field_access. Support static fields and outer-to-inner - class accesses. - (outer_field_access_p): Rename to nested_field_access_p. Support - static fields and generalise to outer-to-inner class and sibling - inner class accesses. - (outer_field_expanded_access_p): Rename to - nested_field_expanded_access_p and support static fields. - (outer_field_access_fix): Rename to nested_field_access_fix and - support static fields. - (build_outer_field_access_expr): Rename to - build_nested_field_access_expr and support static fields. - (build_outer_field_access_methods): Rename to - build_nested_field_access_methods and support static fields. For - static fields, generate accessors without class instance parameters. - (build_outer_field_access_method): Rename to - build_nested_field_access_method and support static fields. - (build_outer_method_access_method): Use - NESTED_FIELD_ACCESS_IDENTIFIER_P instead of - OUTER_FIELD_ACCESS_IDENTIFIER_P. - (resolve_expression_name): Consider static field accesses across - nested classes. - (resolve_qualified_expression_name): Likewise. - (java_complete_lhs): Use nested_field_access_fix instead of - outer_field_access_fix. - (patch_unary_op): Rename outer_field_flag to nested_field_flag. - Use nested_field_expanded_access_p instead of - outer_field_expanded_access_p. Use nested_field_access_fix instead - of outer_field_access_fix. - (check_thrown_exceptions): Use NESTED_FIELD_ACCESS_IDENTIFIER_P - instead of OUTER_FIELD_ACCESS_IDENTIFIER_P. - -2005-05-26 Bryce McKinlay - - * decl.c (GCJ_BINARYCOMPAT_ADDITION, - GCJ_BOOTSTRAP_LOADER_ADDITION): Removed. - (FLAG_BINARYCOMPAT_ABI, FLAG_BOOTSTRAP_LOADER, - MINOR_BINARYCOMPAT_ABI_VERSION): New. - (GCJ_CURRENT_BC_ABI_VERSION): Use new method to calculate version ID. - (parse_version): Calculate version ID using new method. Use bit-flags - for flag_indirect_dispatch and flag_bootstrap_classes. - -2005-05-25 Richard Henderson - - PR libgcj/21692 - * Make-lang.in (java/mangle.o): Depend on LANGHOOKS_DEF_H. - * class.c (build_class_ref): Set DECL_CLASS_FIELD_P and - DECL_CONTEXT; avoid pushdecl_top_level. - (build_dtable_decl): Set DECL_VTABLE_P and DECL_CONTEXT. - (layout_class): Don't SET_DECL_ASSEMBLER_NAME. - (layout_class_method): Likewise. - * decl.c (java_mark_cni_decl_local): New. - (java_mark_class_local): Use it. - * java-tree.h (DECL_LOCAL_CNI_METHOD_P): New. - (DECL_CLASS_FIELD_P, DECL_VTABLE_P): New. - (struct lang_decl_func): Add local_cni; - (struct lang_decl_var): Add class_field, vtable. - (java_mangle_decl): Declare. - * lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): New. - * mangle.c: Remove dup obstack.h; include langhooks-def.h. - (mangle_obstack_1): New. - (java_mangle_decl): Remove obstack argument. Call mangle_class_field, - mangle_vtable, and mangle_local_cni_method_decl. Fall back to - lhd_set_decl_assembler_name for things that don't need mangling. - (mangle_class_field): Rename from java_mangle_class_field, make - static, don't call init_mangling or finish_mangling. - (mangle_vtable): Similarly. - (mangle_local_cni_method_decl): New. - (init_mangling): Remove obstack argument. Use &mangle_obstack_1, - gcc_assert, and MANGLE_RAW_STRING. - (finish_mangling): Use gcc_assert, remove if 0 debugging code. - -2005-05-25 DJ Delorie - - * class.c (set_constant_value): Move warning control from if() to - warning(OPT_*). - -2005-05-24 Richard Henderson - - * builtins.c (define_builtin): Don't call make_decl_rtl. - * constants.c (build_constant_data_ref): Likewise. - * class.c (build_utf8_ref): Likewise. - (build_fieldref_cache_entry, build_static_field_ref): Likewise. - (get_dispatch_table, layout_class_method): Likewise. - (build_class_ref): Likewise. Don't set DECL_SIZE or DECL_SIZE_UNIT - by hand. - (make_local_function_alias): Don't SET_DECL_ASSEMBLER_NAME. - (make_method_value): Use METHOD_ABSTRACT instead of DECL_RTL_SET_P - to determine if we need a non-zero address. - * decl.c (builtin_function): Don't call make_decl_rtl. - (give_name_to_locals): Don't SET_DECL_ASSEMBLER_NAME. - * expr.c (build_known_method_ref): Don't call make_decl_rtl. - * resource.c (compile_resource_data): Likewise. - * parse.y (resolve_field_access): Re-word comment to avoid - building DECL_RTL. - -2005-05-24 Richard Henderson - - * class.c (registered_class): Take it out of class_roots; turn into - a vec of trees. - (register_class): Make static. Don't duplicate decl node. Use - VEC_safe_push. - (emit_register_classes): Use VEC_iterate. Use output_constant - instead of assemble_integer. Don't call mark_decl_referenced - directly. - * java-tree.h (register_class): Remove decl. - -2005-05-19 Paolo Bonzini - - PR java/17845 - - * parse.y (register_package, package_list): Remove. - (package_declaration): Do not call register_package. - (do_resolve_class): Do not use package_list. - -2005-05-15 Gerald Pfeifer - - * jcf-write.c (generate_bytecode_insns) : Remove - unused variable. - -2005-05-15 Tom Tromey - - PR java/21519: - * jcf-write.c (generate_bytecode_insns) : Don't call - NOTE_PUSH. - -2005-05-12 Aaron Luchko - - * gcj.texi: Add '-verify', '-noverify', and '-verifyremote'. - -2005-05-11 Tom Tromey - - * gcj.texi (Code Generation): Document -fbootstrap-classes. - * decl.c (GCJ_BOOTSTRAP_LOADER_ADDITION): New macro. - (parse_version): Use it. - * lang.opt (-fbootstrap-classes): New option. - -2005-05-10 Paolo Bonzini - - PR java/21436 - * class.c (maybe_layout_super_class): Look for imports in this_class. - * parse.h (ctxp_for_generation_last): New. - (do_resolve_class): Add a parameter. - * parse.y (ctxp_for_generation_last): New. - (java_pop_parser_context): Add at end of list. - (find_in_imports, find_in_imports_on_demand): Look in ctxp - if the TYPE_IMPORT_LIST or respectively the TYPE_IMPORT_DEMAND_LIST of - the given type are NULL. - (do_resolve_class): Look into the imports of the new second parameter. - Adjust recursive calls. - (resolve_class, resolve_inner_class, find_as_inner_class): Adjust - calls to do_resolve_class. - (create_class): Set the TYPE_IMPORT_LIST and TYPE_IMPORT_DEMAND_LIST. - (java_complete_class): Do not do that here. - -2005-05-03 Thomas Fitzsimmons - - PR java/20309 - * Make-lang.in (java): Add gjnih. - (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. - (GJNIH_OBJS): New variable. - (gjnih$(exeext)): New target. - (JAVA_MANFILES): Add gjnih.1. - (java.uninstall): Add gjnih.1. - (java.mostlyclean): Add gjnih. - (java.maintainer-clean): Add gjnih.1. - (java/gjavah-jni.o): New target. - (.INTERMEDIATE): Add gjnih.pod. - (gjnih.pod): New target. - * config-lang.in (stagestuff): Add gjnih. - * gcj.texi (Top): Add gjnih node. - (Invoking gcjh): Add descriptions of -force, -old, -trace, -J and - -bootclasspath options. - (Invoking gjnih): New node. - * gjavah.c Initialize flag_jni to 1 if JNI_DEFAULT is defined. - (TOOLNAME): New macro. - (error): Replace hard-coded gcjh with TOOLNAME. - (process_file): Likewise. - (usage): Likewise. - (version): Likewise. - (help): Likewise. Add help output for -force, -old, -trace and -J - options. - (OPT_FORCE, OPT_OLD, OPT_TRACE): New macros. - (options): Add force, old, trace and J fields. - (main): Handle -force, -old, -trace and -J options. - -2005-05-03 Tom Tromey - - PR java/21245: - * gjavah.c (main): Unlink output file on error. - -2005-05-03 Kazu Hirata - - * constants.c, jvgenmain.c, lang.opt, resource.c: Update - copyright. - -2005-04-29 Tom Tromey - - * expr.c (build_jni_stub): Updated for change to build_block. - -2005-04-29 Andrew Pinski - - * expr.c (force_evaluation_order): Declare 'saved' earlier. - -2005-04-28 Andrew Haley - - PR java/19285 - * java-tree.h (soft_resolvepoolentry_node): New. - (alloc_constant_fieldref): Declare. - * expr.c (expand_java_field_op): Don't call class_init for - accesses to static fields with indirect dispatch. - * builtins.c (initialize_builtins): Add "__builtin_expect". - * decl.c (soft_resolvepoolentry_node): New variable. - (java_init_decl_processing): Create a decl for - "_Jv_ResolvePoolEntry". - * class.c (build_fieldref_cache_entry): New function. - (build_static_field_ref): Rewrite for indirect dispatch. - * constants.c (find_name_and_type_constant_tree): New function. - (alloc_constant_fieldref): Likewise. - (build_constants_constructor): Handle CONSTANT_Fieldref and - CONSTANT_NameAndType. - - PR java/21115 - * expr.c (force_evaluation_order): Convert outgoing args smaller - than integer. - -2005-04-27 Bryce McKinlay - - * gcj.texi (libgcj Runtime Properties): Remove obsolete - gnu.gcj.runtime.NameFinder.* system properties. Update documentation - for gnu.gcj.runtime.NameFinder.use_addr2line and gnu.gcj.progname. - -2005-04-25 Kaveh R. Ghazi - - * gjavah.c, jcf-dump.c, jv-scan.c, jvgenmain.c: Replace calls - to `unlock_stream' with `unlock_std_streams'. - -2005-04-25 Jakub Jelinek - - * Make-lang.in (java/decl.o, java/resource.o): Depend on $(EXPR_H) - instead of just expr.h. - -2005-04-24 Kaveh R. Ghazi - - * gjavah.c (main): Unlock the stdio streams. - * jcf-dump.c (main): Likewise. - * jv-scan.c (main): Likewise. - * jvgenmain.c (main): Likewise. - -2005-04-23 DJ Delorie - - * class.c, decl.c, expr.c, jcf-io.c, jcf-parse.c, jv-scan.c, - parse.y: Adjust warning() callers. - -2005-04-21 Bryce McKinlay - - * gcj.texi (Object fields): Change "Integer" to "Int" in example - contructor. - -2005-04-20 Bryce McKinlay - - * gcj.texi: Fix typos and bogus example. - -2005-04-19 Kazu Hirata - - * except.c: Fix a comment typo. - -2005-04-19 Julian Brown - - * decl.c (finish_method): Revert patch from 2005-04-13 for breaking - indirect dispatch with PIC. - -2005-04-18 Andrew Haley - - * java-except.h (struct eh_range.handler): Remove unused field. - (handle_nested_ranges): Remove function declaration. - (sanity_check_exception_range): Add function declaration. - * verify.c (verify_jvm_instructions): Remove call to - handle_nested_ranges. - * verify-glue.c (verify_jvm_instructions_new): Call - sanity_check_exception_range. - * except.c (link_handler, eh_range_freelist, link_handler, - handle_nested_ranges): Remove. - (add_handler): Rewrite. - (sanity_check_exception_range): New function. - (print_ranges): New function. - -2005-04-13 Julian Brown - - * decl.c (finish_method): Give methods once-only linkage. - -2005-04-11 Richard Sandiford - - * lang.opt: Refer to the GCC internals documentation instead of c.opt. - -2005-04-07 Kaveh R. Ghazi - - * java-tree.h: Don't use PARAMS(). - -2005-04-07 Per Bothner - - * class.c (push_class): By default, suppress debug output. - (finish_class): Enable debug output for classes we're emitting. - -2005-04-07 Andrew Haley - - * gcj.texi: Correct gcj-dbtool instructions. - -2005-04-04 Kazu Hirata - - * gcj.texi: Fix a typo. - * lang.c: Fix a comment typo. - -2005-04-01 Thomas Fitzsimmons - - * gcj.texi (Invoking gij): Add descriptions of new -X options. - Mention recognized-and-ignored compatibility options. - (Memory allocation): Add descriptions of JvMalloc, JvRealloc and - JvFree. - (About CNI): Add Memory allocation section. - -2005-04-01 Tom Tromey - - * decl.c (java_init_decl_processing): Fix types of - _Jv_MonitorEnter, _Jv_MonitorExit, _Jv_AllocObject, - _Jv_AllocObjectNoFinalizer, _Jv_Throw, _Jv_NewPrimArray, - _Jv_JNI_PopSystemFrame, _Jv_divI, _Jv_remI, _Jv_divJ, _Jv_remJ. - -2005-03-31 Jan Hubicka - - * Make-lang.in (class.o, decl.o): Depend on cgraph.h. - * class.c: Include cgraph.h - (make_local_functoin_alias): Mark aslias as needed. - * resource.c: Include cgraph.h - (compile_resource_data): Go via cgraph interface. - -2005-03-30 Ian Lance Taylor - - * parse.y (maybe_yank_clinit): Don't crash if bbody is NULL. - -2005-03-30 Tom Tromey - - * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): Handle cases where - inner_class_info_index==0 or outer_class_info_index==0. - -2005-03-29 Tom Tromey - - * gcj.texi (libgcj Runtime Properties): Document - gnu.gcj.runtime.endorsed.dirs. - -2005-03-24 Anthony Green - - * gcj.texi (Invoking gcj-dbtool): Document new LIBDIR option to - 'gcj-dbtool -p'. - -2005-03-23 Tom Tromey - - * decl.c (GCJ_CURRENT_BC_ABI_VERSION): New define. - (parse_version): Use it. - -2005-03-23 Joseph S. Myers - - * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove. - -2005-03-18 Andrew Haley - - PR java/20522 - * decl.c (update_aliases): Don't update variables that are about - to die. - (maybe_poplevels): Add comment. - -2005-03-17 Bryce McKinlay - - PR java/20502 - * jcf-parse.c (duplicate_class_warning): New function. - (java_parse_file): Call duplicate_class_warning if - CLASS_FROM_CURRENTLY_COMPILED_P is already set. - (parse_zip_file_entries): Likewise. Also set - CLASS_FROM_CURRENTLY_COMPILED_P. - -2005-03-16 Andrew Haley - - * expr.c (expand_java_arrayload): Don't generate a - NullPointerException based on the type of the node. - (build_java_array_length_access): Likewise. - -2005-03-15 Zack Weinberg - - * Make-lang.in (TEXI_JAVA_FILES): Add gcc-vers.texi. - -2005-03-11 Tom Tromey - - * gcj.texi (Invoking gcj-dbtool): Document 'gcj-dbtool -p'. - (libgcj Runtime Properties): Document the default .db. - -2005-03-10 Ranjit Mathew - - PR java/20312 - * parse.y (checks_throws_clauses): Check exceptions list even when - the base class does not come from a source file being compiled. - (java_complete_lhs): Remove unused variable 'wfl'. - -2005-03-09 Ranjit Mathew - - PR java/20338 - * decl.c (finish_method): Emit _Jv_InitClass for private static - methods inside inner classes as well. - -2005-03-08 Julian Brown - * Revert patch from 2005-03-08 for causing bootstrap failure on - ppc-darwin. - -2005-03-08 Julian Brown - - * decl.c (finish_method): Give methods once-only linkage. - -2005-03-07 Ranjit Mathew - - * lang.c (flag_new_verifier): Enable by default, regardless of ABI. - -2005-03-07 Bryce McKinlay - - * verify-glue.c (vfy_is_assignable_from): Perform static check using - can_widen_reference_to if the C++ ABI is in use. - (vfy_get_interface_count, vfy_get_interface): Remove unused functions. - * verify-impl.c (debug_print, make_utf8_const, init_type, copy_type, - type_isresolved, init_state, set_pc, state_get_pc, - _Jv_BytecodeVerifier): Clean up unused and disabled functions. - (verify_fail): Report the current PC from the verifier context. - (free_state): Remove #if 0 block to enable this function. - (free_verifier_context): Call free_state on state_list iterator - values before freeing them. - * expr.c (pop_type_0): Pop correct type for error message when stack - contains a multi-word type. - -2005-03-07 Ranjit Mathew - - * expr.c (build_java_array_length_access): Remove !flag_new_verifier - for known NULL array length access. - -2005-03-07 Tom Tromey - - * gcj.texi (Invoking gcj-dbtool): Document '-f'. - -2005-03-06 Kazu Hirata - - * jcf-dump.c, jcf-io.c, jcf-reader.c, lang.c, parse.h, - typeck.c: Update copyright. - -2005-03-06 Ranjit Mathew - - Remove xref code. - * xref.c, xref.h: Remove file. - * Make-lang.in (java/xref.o): Remove. - * java-tree.h (flag_emit_xref, do_not_fold): Remove declaration. - * lang.c (flag_emit_xref): Remove definition. - * parse.h (DECL_END_SOURCE_LINE, DECL_INHERITED_SOURCE_LINE): Remove. - * typeck.c (convert): Remove use of do_not_fold. - * parse.y (do_not_fold): Remove definition. - (parser grammar): Remove xref code. - (maybe_create_class_interface_decl, create_class): Likewise. - (register_fields, method_header, finish_method_declaration): Likewise. - (declare_local_variables, source_end_java_method): Likewise. - (java_complete_expand_classes): Do not set do_not_fold. - (java_complete_expand_method): Remove xref code. - (java_expand_classes, resolve_field_access, patch_invoke): Likewise. - (java_complete_tree, java_complete_lhs, patch_assignment): Likewise. - (patch_binop, build_string_concatenation, patch_array_ref): Likewise. - (patch_synchronized_statement, patch_throw_statement): Likewise. - (maybe_build_class_init_for_field): Likewise. - -2005-03-05 Kazu Hirata - - * expr.c (build_expr_wfl, expr_add_location): Use TYPE_P - instead of IS_NON_TYPE_CODE_CLASS. - -2005-03-04 Andrew Haley - - PR java/18362 - * class.c (set_method_index): Don't set method_index if it is - NULL_TREE. - (layout_class_method): Don't complain about "non-static method foo - overrides static method" in the case of indirect dispatch. - -2005-03-02 Kaveh R. Ghazi - - * jcf-io.c (caching_stat): Use __extension__ to avoid pedantic - warning. - * Make-lang.in: Don't elide warnings in jcf-io.c. - -2005-03-01 Per Bothner - - PR java/8608 - * check-init.c (wfl): Remove static. - (final_assign_error, check_init): Replace calls to parse_error_context - by plain error. - (check_init): Save, set, and restore input_location for each exp. - -2005-03-01 Per Bothner - - * jcf-reader.c (get_attribute): Handle SourceDebugExtension (JSR 45) - if HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE is defined. - * jcf-dump.c (HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE): Print contents. - -2005-03-01 Per Bothner - - * java-tree.h (IDENTIFIER_HANDLECLASS_VALUE): Remove ancient macro. - -2005-02-23 Thomas Fitzsimmons - - PR libgcj/16923 - * gcj.texi (Invocation): Add descriptions of JvVMInitArgs and - JvVMOption. - -2005-02-22 Tom Tromey - - PR java/20056: - * verify-impl.c (EITHER): New define. - (types_compatible): Handle it. - (check_field_constant): Use it. - -2005-02-18 Tom Tromey - - PR java/20056: - * verify-impl.c (types_equal): Fixed test. - - PR java/20056: - * verify-glue.c (vfy_class_has_field): New function. - * verify.h (vfy_class_has_field): Declare. - * verify-impl.c (check_field_constant): Added 'putfield' - argument. - (verify_instructions_0): Updated. - (types_equal): New function. - -2005-02-14 Tom Tromey - - PR java/19921: - * jcf-write.c (generate_bytecode_insns) : Note the - stack effect of multianewarray. - -2005-02-14 Andrew Haley - - PR java/19907 - * expr.c (expand_byte_code): Call promote_arguments(). - (promote_arguments): New function. - * decl.c (check_local_unnamed_variable): Remove special case for - new verifier. - (find_local_variable): Promote all boolean types to int - when searching for local variable decls. - -2005-02-12 Kazu Hirata - - * builtins.c, java-except.h, jcf-parse.c, jv-scan.c, lex.c, - parse-scan.y: Update copyright. - -2005-02-11 Per Bothner - - PR java/15543 - * parse-scan.y (input_location): Remove variable. - (main_input_filename): New - replaces input_filename, which isn't - settable if USE_MAPPED_LOCATION. - * lex.c (java_init_lex): Wrap some more places in #ifndef JC1-LITE, - so we don't reference input_location or wfl_operator in that case. - * jv-scan.c (expand_location): Remove - no longer used. - (main): Set main_input_filename rather than input_filename. - -2005-02-09 Richard Henderson - - * builtins.c (initialize_builtins): Call build_common_builtin_nodes. - * decl.c (java_init_decl_processing): Initialize const_ptr_type_node. - -2005-02-08 Marcin Dalecki - - * expr.c (add_type_assertion): Use the proper enumeration type, - since this is what htab_find_slot() is expecting. - -2005-02-06 Joseph S. Myers - - * gcj.texi: Update copyright dates. - -2005-02-02 Tom Tromey - - * gcj.texi (libgcj Runtime Properties): Default library_control - to 'cache'. - -2005-02-02 Ranjit Mathew - - PR java/15543 - * parse-scan.y (formal_parameter): Use $2 (type) instead of $$ - (modifiers) when square brackets are present in a declaration for - a final paramter. - * jv-scan.c (main): Set input_filename and input_line. - -2005-02-01 Tom Tromey - - PR java/19742: - * gjavah.c (get_field_name): Don't override name for JNI header. - -2005-02-01 Roger Sayle - - * jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR - of unsigned types using iushr and lushr JVM bytecodes. - -2005-02-01 Ranjit Mathew - - PR java/19738 - * gjavah.c (jni_print_float): Do not emit floating-point - initialiser for a static final field. - (jni_print_double): Likewise. - -2005-02-01 Mark Mitchell - - Revert: - 2005-01-31 Mark Mitchell - * gjavah.c (print_field_info): Mark static data members of - floating-point type with "__extension__". - -2005-01-31 Mark Mitchell - - * gjavah.c (print_field_info): Mark static data members of - floating-point type with "__extension__". - -2005-02-01 Ranjit Mathew - - PR java/9157 - * parse.y (build_string_concatenation): Remove redundant if. - (patch_conditional_expr): Attempt to patch_string() the condition - of a ?: as well, in addition to its other operands. - -2005-01-25 Tom Tromey - - * Make-lang.in (java/java-tree-inline.o): Removed. - -2005-01-25 Ranjit Mathew - - PR java/19070 - * parse.y (patch_binop): Allow comparisons against NULL only - if the other operand is of a reference type. - -2005-01-24 Tom Tromey - - * java-tree.h (gcj_abi_version): Declare. - * class.c (make_class_data): Push gcj_abi_version into "next" - field. Renamed field. - * decl.c (gcj_abi_version): New global. - (parse_version): New function. - (java_init_decl_processing): Call it. Renamed 'next' field. - Include version.h. - (GCJ_BINARYCOMPAT_ADDITION): New define. - -2005-01-24 Roger Sayle - - PR java/19295 - * jcf-write.c (generate_bytecode_insns): Conversions between - integer types of the same precision shouldn't generate widening - or narrowing conversion bytecodes. - -2005-01-22 Kazu Hirata - - * java-except.h, java-tree.h: Remove unused prototypes. - -2005-01-20 Andrew Pinski - - PR java/18091: - * jcf-write.c (perform_relocations): Don't call memcpy if source - and destination are the same. - -2005-01-17 Tom Tromey - - * verify-impl.c (get_short): Sign extend. - (get_int): Likewise. - -2005-01-12 Ranjit Mathew - - * expr.c (build_jni_stub): Replace mistaken use of TYPE_SIZE_UNIT - with TYPE_SIZE. - -2005-01-10 Ranjit Mathew - - * verify.c: Revert to the version before the BC-ABI merge. - -2005-01-10 Ranjit Mathew - - PR java/19277 - * check-init.c (check_init): Take care of references that do not - have an explicit final variable declaration (e.g. array length - access) for pre/post in/de-crement operators. - -2005-01-08 Mark Wielaard - - * parse.y (process_imports): Allocate (and free) original_name only - when not already defined. - * jcf-parse.c (read_class): Free results of find_class() and - lrealpath(). - (java_parse_file): Keep pointer to head of file_list and free when - done. Free result of lrealpath(). - -2005-01-05 Tom Tromey - - * gcj.texi (Standard Properties): java.ext.dirs is now used. - -2004-12-20 Andrew Haley - - * typeck.c: Use fold_convert for ints and booleans. - -2004-12-17 Andrew Haley - - PR java/18931 - * typeck.c (convert): Use a CONVERT_EXPR when converting to - BOOLEAN_TYPE or CHAR_TYPE. - (convert_to_boolean, convert_to_char) : Remove. - * convert.h (convert_to_boolean, convert_to_char) : Remove. - * expr.c (expand_load_internal): Do type conversion if type is not - as required. - -2004-12-13 Danny Smith - - PR target/18459 - * class.c (emit_register_classes): Use TARGET_USE_JCR_SECTION. - Update comment. - -2004-12-07 Andrew Haley - - PR java/18811: - * jcf-parse.c (load_class): Remove sanity test for missing inner - class file. - -2004-12-06 Tom Tromey - - * Make-lang.in (JAVA_MANFILES): Added gcj-dbtool. - (java.uninstall): Likewise. - (java.maintainer-clean): Likewise. - (.INTERMEDIATE): Likewise. - (java.install-man): Likewise. - (gcj-dbtool.pod): New target. - * gcj.texi (Code Generation): Document -findirect-dispatch. - (libgcj Runtime Properties): Document - gnu.gcj.precompiled.db.path. - (Top): Link to "Invoking gcj-dbtool". - -2004-12-06 Tom Tromey - - PR java/14853: - * java-tree.h (extract_field_decl): Declare. - * parse.y (extract_field_decl): Renamed from - strip_out_static_field_access_decl. No longer static. - * check-init.c (get_variable_decl): Unwrap COMPOUND_EXPRs. - -2004-12-03 Tom Tromey - - * lang.c (flag_new_verifier): Define. - (java_post_options): Set flag_new_verifier if indirect dispatch - is being used. - * lang.opt (fnew-verifier): Removed. - -2004-12-03 Tom Tromey - - PR bootstrap/14614: - * Make-lang.in (java.install-common): Only install transformed - gcjh if gcj-cross exists. - -2004-12-03 Andrew Haley - - PR java/18812 - * except.c (link_handler): Patch 'outer' field of siblings of the - range we're demoting. - -2004-12-03 Andrew Haley - - PR java/18697 - * class.c (layout_class_method): Don't fail to override a method - simply because it has DECL_ARTIFICIAL set. - -2004-12-02 Tom Tromey - - PR java/16675: - * parse.y (craft_constructor): Special case null_pointer_node. - -2004-12-02 Tom Tromey - - PR java/18741: - * java-gimplify.c (java_gimplify_expr): Don't call - SET_EXPR_LOCATION unless wrapped tree is an expression. - -2004-11-27 Per Bothner - - * jcf-parse.c (set_source_filename): Improvement to Andrew's fix: - Fix fencepost error in 'i', which got executed one too many times. - Also, fold memcpy into explicit loop, as originally intended. - Also, free temporary 'buf' which otherwise leaks. - -2004-11-27 Per Bothner - - * expr.c (build_expr_wfl): Only declare last_file and last_filenode - local static variables if not USE_MAPPED_LOCATION. - -2004-11-27 Kazu Hirata - - * class.c, decl.c, expr.c: Fix comment typos. - -2004-11-26 Andrew Pinski - - PR java/18305 - * decl.c (end_java_method): Call - attach_init_test_initialization_flags on all the init_decls. - * parse.y (attach_init_test_initialization_flags): Move to ... - * expr.c (attach_init_test_initialization_flags): here and - support BIND_EXPR also. - * java-tree.h (attach_init_test_initialization_flags): Prototype. - * jcf-parse.c (parse_class_file): Don't disable class init - optimization. - -2004-11-25 Joseph S. Myers - - * gjavah.c, jcf-dump.c, jv-scan.c, jvspec.c: Avoid ` as left quote - in diagnostics. - -2004-11-24 Richard Henderson - - * verify-glue.c (vfy_init_name, vfy_clinit_name, vfy_object_type, - vfy_string_type, vfy_throwable_type): Use ANSI declaration form. - -2004-11-24 Tom Tromey - - * verify.c (defer_merging): Don't use C++-style comment. - * verify.h (java_opcode): Added java_opcode_end. - * class.c (build_class_ref): Remove C++ comment and old FIXME. - - * verify-impl.c (vfy_push_type): Removed bogus "return". - (initialize_stack): Use vfy_alloc and vfy_free. - (verify_instructions_0): Likewise. - - * Merged gcj-abi-2-dev-branch to trunk. - -2004-11-24 Andrew Haley - - * jcf-parse.c (parse_class_file): Set file_start_location. - -2004-11-10 Tom Tromey - - * class.c (make_field_value): Don't call build_static_field_ref. - (build_static_field_ref): Don't emit direct references when using - indirect dispatch. - - * gcj.texi (Invoking gij): Document -verbose. Put -verbose and - -verbose:class into man page synopsis. - -2004-11-09 Tom Tromey - - * expr.c (build_java_arraystore_check): Still generate check if - element type is itself an array. - -2004-11-08 Tom Tromey - - * java-tree.h (soft_check_assignment_node): Removed. - (enum java_tree_index): Removed JTI_SOFT_CHECK_ASSIGNMENT_NODE. - * decl.c (java_init_decl_processing): Don't initialize - soft_check_assignment_node. - -2004-11-05 Tom Tromey - - * class.c (layout_class_methods): Don't add Miranda methods when - using indirect dispatch. - -2004-11-05 Bryce McKinlay - - * class.c (make_class_data): Call emit_assertion_table to set the - 'assertion_table' field. - (build_signature_for_libgcj): Move here from expr.c. - (add_assertion_table_entry): New function. Callback for assertion - hashtable traversal. - (emit_assertion_table): New. Take class argument, and generate - assertion table DECL based on the TYPE_ASSERTIONS hashtable. - * decl.c (init_decl_processing): Define assertion_entry_type record. - Push 'assertion_table' class field instead of 'verify'. - * expr.c (type_assertion_eq): Compare 'assertion_code' field. - (type_assertion_hash): Include 'assertion_code' in hash. - (add_type_assertion): Rewritten. Take class and assertion_code - arguments. Add assertions to the TYPE_ASSERTIONS hashtable. - (can_widen_reference_to): Use new add_type_assertion() arguments. - * java-tree.h (java_tree_index): Add JTI_ASSERTION_ENTRY_TYPE, - JTI_ASSERTION_TABLE_TYPE. Remove JTI_VERIFY_IDENTIFIER_NODE. - (verify_identifier_node): Removed. - (assertion_entry_type, assertion_table_type): New. - (ASSERTION_TYPES_COMPATIBLE, ASSERTION_IS_INSTANTIABLE): New. Type - assertion code definitions. - (struct type_assertion): Add assertion_code. Rename 'source_type' and - 'target_type' to 'op1' and 'op2'. - (add_type_assertion): Declare. - (lang_printable_name_wls): Remove unused definition. - * verify-glue.c: (vfy_is_assignable_from): New. Call add_type_assertion - to emit runtime assertion. - (vfy_note_stack_type): Clean up non-C90 declarations. - (vfy_note_local_type): Likewise. - * verify.h (vfy_is_assignable_from): Declare. - * verify-impl.c (is_assignable_from_slow): Remove unused function. - (ref_compatible): Rename arguments. Call vfy_is_assignable_from() - instead of is_assignable_from_slow(). - (types_compatible): Reinstate ref_compatible() call. - -2004-11-04 Tom Tromey - - * class.c (build_static_field_ref): Reverted previous patch. - - * class.c (build_static_field_ref): Don't emit direct references - when using indirect dispatch. - -2004-11-03 Tom Tromey - - * expr.c (expand_java_arrayload): Set lhs_type_node. - (expand_java_arraystore): Set rhs_type_node. - -2004-11-02 Tom Tromey - - * jcf-parse.c (compute_class_name): Use filename length from zip - directory, not strlen. - - * expr.c (expand_invoke): Mark new interface methods as abstract. - -2004-11-01 Tom Tromey - - * verify-impl.c (push_jump): Removed check for uninitialized - objects. - (push_exception_jump): Likewise. - (handle_ret_insn): Likewise. - (handle_jsr_insn): Likewise. - (state_check_no_uninitialized_objects): Removed. - - * decl.c (check_local_unnamed_variable): Recognize - promoted-to-int parameters when using the new verifier. - * expr.c (expand_java_arraystore): Explicitly request array type - when using new verifier. - (expand_java_arrayload): Likewise. - (invoke_build_dtable): Don't pass object_type_node as - expression argument to build_java_indirect_ref. - (build_java_check_indexed_type): Do nothing. - (build_java_arraystore_check): Handle case where array doesn't - have array type. - (build_java_array_length_access): Likewise. - (expand_invoke): Handle case where interface overrides a method - from Object. - (pop_type_0): Always succeed for reference types. - (process_jvm_instruction): Don't pop a value in a dead - exception handler. - (pop_arguments): Convert arguments to correct types. - -2004-10-29 Andrew Haley - - * jcf-parse.c (give_name_to_class): Remove line that was - incorrectly merged. - -2004-10-29 Andrew Haley - - * jcf-parse.c (set_source_filename): Add code to build new sfname. - -2004-10-20 Andrew Haley - - * decl.c (end_java_method): Don't expand if flag_syntax_only. - -2004-10-26 Tom Tromey - - * verify.h (vfy_notify_verified): Removed. - * verify-glue.c (vfy_notify_verified): Removed. - -2004-10-26 Tom Tromey - - * verify-impl.c (debug_print_state): Declare `i' before code. - (merge_types): Modify `t' when it is null_type. - -2004-10-26 Tom Tromey - - * verify-impl.c (type_print): Renamed from print. Now static and - takes an argument. - (debug_print_state): Use type_print. - -2004-10-25 Tom Tromey - - * expr.c (build_invokeinterface): Compute correct offset for - index into interface methods. - -2004-10-20 Tom Tromey - - * java-tree.h (verify_jvm_instructions_new): Declare. - - * jvspec.c (jvgenmain_spec): Remove -fnew-verifier from cc1 - command line. - - * verify-impl.c (verify_instructions): Correctly handle wide - types on the stack. - * verify-glue.c (vfy_get_class_name): Use DECL_NAME. - (vfy_get_component_type): Strip pointer types. - (vfy_find_class): Use get_type_from_signature. Strip pointer - types. - Include java-except.h. - -2004-10-20 Bryce McKinlay - - * verify-impl.c (type_array_elementpop_raw, vfy_pop_type_t, - vfy_push_type_t, set_variable, add_new_state, merge_into, - handle_jsr_insn, branch_prepass, check_class_constant, - check_wide_constant, get_one_type, compute_static_types, - verify_instructions_0): Clean up C99 declarations after statements. - -2004-10-20 Tom Tromey - - * verify-impl.c (merge_refs): Compare reference against iterator, - not ref2. - - * verify-glue.c (vfy_tag): Mask off resolved flag. - -2004-10-19 Tom Tromey - - * verify-impl.c (verify_instructions): Call vfy_note_local_type. - (init_state_with_stack): Initialize `this_type' in state. - (verify_method): Use debug_print. - * verify-glue.c (vfy_is_primitive): Removed debugging print. - (vfy_note_stack_depth): Reverted last patch. - (vfy_note_stack_type): Note pointer to Object, not Object. - (vfy_note_local_type): Likewise. - - * verify.h (vfy_note_instruction_seen): Declare. - * verify-glue.c (verify_jvm_instructions_new): Set - BCODE_EXCEPTION_TARGET on target instruction. - (vfy_note_instruction_seen): New function. - * verify-impl.c (FLAG_INSN_SEEN): New define. - (verify_instructions_0): Set flag on instruction. Save state for - PC=0 later. - (verify_instructions): Call vfy_note_instruction_seen. - - * verify-glue.c (vfy_note_stack_depth): Fix off-by-one error. - (verify_jvm_instructions_new): Call method_init_exceptions, - add_handler, and handle_nested_ranges. - * verify-impl.c (verify_method): Return 1 on success. - (verify_instructions_0): Save the state at PC=0. - - * verify-impl.c (init_type_from_class): Set is_resolved and - ref_next on new ref_intersection. - (init_type_from_string): Likewise. - -2004-10-15 Bryce McKinlay - - * expr.c (expand_bytecode): Use verify_jvm_instructions_new - if flag_new_verifier is set. - * java-tree.h (flag_new_verifier): Declare. - * lang.opt (fnew-verifier): New option. - * verify-impl.c: Work around namespace pollution by undef'ing - 'current_class'. - (struct verifier_context): Make 'bytecode' const. - (verify_fail_pc): Pass -1 PC argument to vfy_fail. - (types_compatible): For the BC-ABI, always consider reference types - compatible. - (check_class_constant): Use vfr->current_class. - (check_constant): Likewise. - (check_wide_constant): Likewise. - (check_field_constant): Check for 'L' at start of type name. - (get_one_type): Return pointer instead of type. Set type result in - caller via passed type pointer. - (compute_argument_types): Update to use new get_one_type arguments. - (compute_return_type): Likewise. - (make_verifier_context): New. Allocate and initialize 'vfr'. - (free_verifier_context): New. Free 'vfr' and its contents. - (verify_method): Remove ATTRIBUTE_UNUSED. Call make_verifier_context - and free_verifier_context. - -2004-10-15 Tom Tromey - - * verify-glue.c (vfy_note_local_type): Mark argument as unused. - * verify.h (vfy_fail): Fixed formatting. - - * verify-impl.c (vfr): Fixed comment formatting. - (collapse_type): New function. - (verify_instructions): Notify compiler about type map. - * verify.h (vfy_note_stack_depth): Updated. - (vfy_note_stack_type): Likewise. - (vfy_note_local_type): Likewise. - (vfy_unsuitable_type, vfy_return_address_type, vfy_null_type): - Declare. - * verify-glue.c (vfy_note_stack_depth): Correctly size type - state. Added `method' argument. - (vfy_note_stack_type): Renamed from vfy_note_type. Added `method' - argument. - (vfy_note_local_type): New function. - (vfy_unsuitable_type): Likewise. - (vfy_return_address_type): Likewise. - (vfy_null_type): Likewise. - - * verify.h (VFY_IN_GCC): Removed. - (VFY_WANT_TYPEMAP): Removed. - * verify-impl.c (verify_instructions_0): Removed useless "\". - (struct state) : Uncomment. - -2004-10-13 Bryce McKinlay - - * verify-impl.c: Formatting fixes. Reformat C++-style comments to - C-style. - -2004-10-06 Bryce McKinlay - - * Make-lang.in (verify.o): Re-enabled this target. - * verify-glue.c (vfy_get_interface_count): Add ATTRIBUTE_UNUSED. - (vfy_get_interface): Likewise. - (verify_jvm_instructions_new): Renamed from verify_jvm_instructions. - * verify.h (verify_jvm_instructions_new): Declare. - * verify-impl.c (free_state): Temporarily comment out unused - function. - -2004-10-06 Tom Tromey - - * java-tree.h (JV_STATE_READ): New enum value. - -2004-10-06 Bryce McKinlay - - * verify.h: New file. - -2004-10-05 Bryce McKinlay - - * verify-impl.c, verify-glue.c, verify.h: New files. - * Make-lang.in: Add rules for verify-impl.o and verify-glue.o. - -2004-09-24 Andrew Haley - - * decl.c (check_local_unnamed_variable): Always use the PARM_DECL - for a slot if it's of pointer type. - -2004-09-14 Tom Tromey - - * class.c (make_class_data): Correctly initialize "state" field. - Initialize "engine" field. - * decl.c (java_init_decl_processing): Add "engine" field. - -2004-09-10 Andrew Haley - - PR java/12760 - * expr.c (build_invokeinterface): Use fast method for interface - dispatch. - * java-tree.h (enum java_tree_index): Add JTI_ITABLE_TYPE, - JTI_ITABLE_PTR_TYPE. - (struct lang_type): Add itable_methods, itable_decl, itable_syms_decl. - (emit_symbol_table): Add new arg, element_size. - * decl.c (java_init_decl_processing): Initialize Class.itable. - * class.c (GEN_TABLE): New macro. - (gen_indirect_dispatch_tables): Use it. Add itable. - (make_class_data): Add new arg for emit_symbol_table(). - Emit itable. - (add_miranda_methods): Make sure search_class has been parsed. - (emit_symbol_table): Add new arg, element_size. - -2004-09-06 Andrew Haley - - * verify.c (merge_types): Return Object for all merges of - interfaces. - * expr.c (add_type_assertion): Don't generate assertions when - source type is array of Object. - -2004-09-03 Andrew Haley - - * class.c (finish_class): Nullify TYPE_VERIFY_METHOD. - - * lang.c (java_post_options): Force flag_verify_invocations if - we're not using indirect dispatch. - - * expr.c (pop_type_0): Move test for interfaces before call to - can_widen_reference_to(). - (build_signature_for_libgcj): Remove generation of canonical array - type. - (add_type_assertion): Canonicalize both arrays. - Don't assert that type X can be assigned to Object. - Don't assert that type X an be assigned to type X. - Don't assert that Object can be assigned to type X. - (can_widen_reference_to): Warn whenever we generate an assertion. - (process_jvm_instruction): Use throwable_type_node for the type of - an exception class. - -2004-09-01 Andrew Haley - - * decl.c (java_init_decl_processing): Change - verify_identifier_node to "__verify". - * expr.c (add_type_assertion): Use verify_identifier_node for name. - * java-tree.h (verify_identifier_node): Change to "__verify". - - * expr.c (build_signature_for_libgcj): New function. - (add_type_assertion): Use it to construct signatures for - source_type and target_type. - -2004-08-27 Andrew Haley - - * java-tree.h (enum java_tree_index): Add JTI_VERIFY_IDENTIFIER_NODE. - (verify_identifier_node): New. - (TYPE_VERIFY_METHOD): New. - (struct type_assertion): New type. - * expr.c (type_assertion_eq): New function. - (type_assertion_hash): New function. - (add_type_assertion): New function. - (can_widen_reference_to): Call add_type_assertion(). - * decl.c (java_init_decl_processing): Add verify_identifier_node. - * class.c (make_class_data): Initialize TYPE_VERIFY_METHOD (type). - (finish_class): Output TYPE_VERIFY_METHOD (type). - - * decl.c (end_java_method): Nullify unused fields. - -2004-08-17 Andrew Haley - - * verify.c (defer_merging): Quieten. - * jcf-parse.c (load_class): Only try to open a class file if it's - java.lang.Object or if it's part of the current compilation. - Check that the class we just tried to load is the class we just - loaded. Quieten. - (java_parse_file): Set flag_verify_invocations off if we're - compiling from .class. - (parse_zip_file_entries): Abort if we try to read a dummy class. - * expr.c (can_widen_reference_to): Quieten. - (build_invokevirtual): Abort if we try to invokevirtual an - interface. - (expand_invoke): Don't build a non-interface call to an interface. - (build_instanceof): Don't do premature optimization if - flag_verify_invocations is not set. - * class.c (set_super_info): Disable code that inherits TYPE_DUMMY - from superclass. - (build_static_field_ref): Add correct type conversion for - field_address. - (add_miranda_methods): Disable generation of Miranda methods for - dummy classes. - (layout_class_method): Don't complain about non-static method - overrides static method with dummy classes. - -2004-08-13 Tom Tromey - - * class.c (build_static_field_ref): Re-enable atable lookups for - static fields. - - * parse.y (strip_out_static_field_access_decl): Indentation fix. - -2004-08-11 Tom Tromey - - * gcj.texi (libgcj Runtime Properties): Document new properties. - -2004-08-06 Andrew Haley - - * jcf-parse.c (load_class): Check that we really have loaded the - class we're looking for. - -2004-07-19 Andrew Haley - - * verify.c (verify_jvm_instructions): Comment change only. - - * typeck.c (build_java_array_type): Add size field to array name. - - * java-tree.h (LOCAL_SLOT_P): New. - (update_aliases): Add PC argument. - (pushdecl_function_level): New function. - - * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL, - MODIFY_EXPR, and SAVE_EXPR. - (java_gimplify_modify_expr): New function. - - * expr.c (push_type_0): Call find_stack_slot() to create temporary. - (expand_iinc): Pass PC to update_aliases(). - (STORE_INTERNAL): Likewise. - (process_jvm_instruction): Likewise. - - * decl.c (base_decl_map): New variable. - (uniq): New variable. - (update_aliases): Rewrite with more thorough checking. - (debug_variable_p): New function. - (push_jvm_slot): Don't initialize local variable. Don't pushdecl. - (check_local_named_variable): Delete whole function. - (initialize_local_variable): New function. - (check_local_unnamed_variable): Add checks and comments. - (find_local_variable): Rewrite. - (java_replace_reference): New function. - (function_binding_level): New variable. - (pushdecl_function_level): New function. - (maybe_pushlevels): Set DECL_LOCAL_END_PC. - (maybe_pushlevels): Call pushdecl() on each of the new decls. - (start_java_method): Reset uniq. Create base_decl_map. Set - function_binding_level. - (end_java_method): Null unused fields to save memory. - -2004-06-29 Andrew Haley - - * except.c (expand_start_java_handler): Push a new binding level. - Don't build a TRY_CATCH_EXPR now, we'll do it later. Call - register_exception_range() to register where we'll do it. - (expand_end_java_handler): Remove old bogus code. Replace with - new logic that simply builds TRY_CATCH_EXPRs and inserts them at - the top of the expression we're curently building. - (maybe_end_try): Delete. - * decl.c (binding_level.exception_range): New field. - (clear_binding_level): Add field exception_range. Reformat. - (poplevel): Call expand_end_java_handler(). - (poplevel): Call java_add_stmt only if functionbody is false. - (maybe_poplevels): Don't call maybe_end_try() from here. - (end_java_method): Clear no longer used trees in function decl. - (register_exception_range): New function. - * java-tree.h (register_exception_range, struct eh_range): Declare. - -2004-06-22 Andrew Haley - - * class.c (gen_indirect_dispatch_tables): Set the DECL_OWNER of - the otable. - * check-init.c (get_variable_decl): Teach check-init about - FIELD_DECLs addressed via the otable. - * jcf-parse.c (load_class): Check CLASS_LOADED_P, not - CLASS_PARSED_P. - -2004-05-28 Andrew Haley - - * jcf-parse.c (load_class): Don't try to read a class that we've - already read. - - * expr.c (build_invokeinterface): Use the old-fashioned way of - doing indirect dispatch: look up interfaces by name. - * java-tree.h (enum java_tree_index): Add - JTI_SOFT_LOOKUPINTERFACEMETHODBYNAME_NODE - * decl.c (java_init_decl_processing): Add - soft_lookupinterfacemethodbyname_node. - - * gjavah.c (print_method_info): Final methods have vtable entries, - so gjavah needs to output them. - * class.c (layout_class_method): Generate vtable entries for final - methods. - * parse.y (invocation_mode): Use INVOKE_VIRTUAL for indirect - dispatch, even if a method is final. - -2004-05-25 Andrew Haley - - * class.c (build_symbol_entry): Convert the names of constructors - to init_identifier_node when generating an entry for the indirect - dispatch table. - - * expr.c (build_known_method_ref): Generate indirect calls for - all methods marked DECL_EXTERNAL or TREE_PUBLIC. - -2004-05-24 Andrew Haley - - * expr.c (build_known_method_ref): Make sure ARRAY_REF access to - atable element is of the right type. - - * class.c (build_static_field_ref): Cast pointer to correct type - for field. - -2004-04-20 Bryce McKinlay - - * Merged with HEAD as of 20040514. Diff against - gcj-abi-2-merge-20040514. - -2004-04-16 Andrew Haley - - * verify.c (check_pending_block): Disable subroutine checks. - (defer_merging): New function. - (merge_types): If types are dummy, use defer_merging to combine them. - (verify_jvm_instructions): If invocation is invokeinterface and - target is dummy, assume target really is an interface. - - * parse.y (patch_invoke): Break out call to java_create_object. - - * lang.c (flag_verify_invocations): New. - - * jcf-parse.c (load_class): If we've already failed to load a - class, don't try again. - (load_class): If we can't find a .class file, don't fail, but emit - a warning. - (parse_class_file): Don't act on dummy methods. - - * java-tree.h (flag_verify_invocations): New. - (TYPE_DUMMY): New. - (lang_type.dummy_class): New field. - (java_create_object): New function. - (METHOD_DUMMY): New. - - * expr.c (build_field_ref): Widen field offset. - (pop_type_0): If the type in stack_type_map is a TREE_LIST, check - that each of its elements is compatible with the one we're - popping. - (pop_type_0): Issue a warning to say that we need to generate a - runtime check. - (java_create_object): New function. - (build_field_ref): Only generate hard refs if we're not using - indirect dispatch. - (expand_java_field_op): If we're using !verify_invocations and we - see a missing field, generate a decl for it. - - (expand_invoke): If a class doesn't have the method we seek and - we're using !flag_verify_invocations, generate a decl for the - method now. - - (build_known_method_ref): Always use indirect dispatch via the - atable for static methods. - - (expand_java_NEW): Break out object creation into new function, - java_create_object. - - (can_widen_reference_to): Issue a warning to say that we need to - generate a runtime check. - - * class.c (set_super_info): Inherit TYPE_DUMMY from sureclass. - (make_method_value): Also use index for interfaces. - (make_class_data): Skip dummy field for inherited data. - Don't build method array for dummy methods. - Set size_in_byte to -1 when using inirect dispatch - Don't build a hard class ref if we don't have a hard ref to our - superclass, or if we're using inirect dispatch. - Null out dispatch tables. - - (layout_class_method): Don't complain about non-static method - overrides static method is method is artificial. - - (build_static_field_ref): Disable atable references to static - fields for the time being. - - (layout_class_methods): Check for CLASS_INTERFACE as - well as CLASS_ABSTRACT. - -2004-11-24 Steven Bosscher - - * class.c (make_class_data): Don't check flag_inline_functions. - * lang.c (flag_really_inline): Remove unused flag. - (java_handle_option): Don't set it here. Remove special handling - of flag_inline_functions for Java. - (java_init): Don't set flag_inline_trees here. Already done... - (java_post_options): ...here. Don't clear flag_inline_functions. - -2004-11-24 Steven Bosscher - - * java-gimplify.c (java_gimplify_labeled_block_expr): New function. - (java_gimplify_exit_block_expr): New function. - (java_gimplify_expr): Use them to gimplify EXIT_BLOCK_EXPR and - LABELED_BLOCK_EXPR. - * java-tree.def (LABELED_BLOCK_EXPR): Moved from tree.def. - (EXIT_BLOCK_EXPR): Likewise. - * java-tree.h (LABELED_BLOCK_LABEL): Moved from tree.h. - (LABELED_BLOCK_BODY): Likewise. - (EXIT_BLOCK_LABELED_BLOCK): Likewise. - * jcf-write.c (generate_bytecode_insns): Don't handle the unused - EXIT_BLOCK_RETURN operand. Use EXIT_BLOCK_LABELED_BLOCK instead of - TREE_OPERAND. - * lang.c (java_tree_inlining_walk_subtrees): Handle EXIT_BLOCK_EXPR. - (java_dump_tree): Use LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, and - EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND. Don't handle the - second operand of EXIT_BLOCK_EXPR. - * parse.y (find_expr_with_wfl): Use LABELED_BLOCK_BODY instead of - TREE_OPERAND. - (build_bc_statement): Use build1 to build EXIT_BLOCK_EXPR nodes. - -2004-11-23 Ben Elliston - - * xref.h (xref_flag_value): Remove. - (xref_set_data, xref_get_data): Likewise. - (xref_set_current_fp): Likewise. - (XREF_NONE): Likewise. - (XREF_GET_DATA): Likewise. - * xref.c (xref_flag_value): Remove. - (xref_set_data, xref_get_data): Likewise. - (xref_set_current_fp): Likewise. - -2004-11-23 Ben Elliston - - * gjavah.c (output_directory): Make static. - (temp_directory): Likewise. - -2004-11-15 Tom Tromey - - * decl.c (instn_ptr_type_node): Removed. - (lineNumbers_ptr_type_node): Removed. - (jint_type): Removed. - (jint_ptr_type): Removed. - -2004-11-09 Andrew Pinski - - PR java/15576 - * check-init.c (check_init): Ignore DECL_EXPR. - * expr.c (always_initialize_class_p): Reenable. - (build_class_init): Use a variable to store the decl. Also use - boolean_false_node instead of integer_zero_node. - * parse.y (attach_init_test_initialization_flags): Add a decl_expr - to the block. - -2004-11-08 Tom Tromey - - PR java/16843: - * gjavah.c (HANDLE_END_FIELD): Call print_field_info when - generating a JNI header. - (print_field_info): Handle JNI headers. - (jni_print_float): Likewise. - (jni_print_double): Likewise. - -2004-11-08 Andrew Pinski - - * decl.c (end_java_method): Remove duplicated code. - -2004-11-06 Zack Weinberg - Gerald Pfeifer - - * lex.h (HAVE_ICONV): Undefine if we do not have HAVE_ICONV_H - as well. - -2004-11-02 Bryce McKinlay - - PR java/17265 - * class.c: Reinstate 2004-08-18 patch. - (make_local_function_alias): Don't create an alias for extern (native) - functions. - -2004-10-22 Eric Botcazou - - PR java/17265 - * class.c (make_local_function_alias): Revert 2004-08-18 change. - (make_method_value): Likewise. - -2004-10-21 Andrew Haley - - PR java/18091: - * jcf-parse.c (set_source_filename): Add code to build new sfname. - -2004-10-20 Andrew Haley - - * decl.c (end_java_method): Don't expand if flag_syntax_only. - Remove duplicated code block. - -2004-10-18 Steven Bosscher - - * Make-lang.in (java/parse.o-warn, java/parse-scan.o-warn): - New rules to work around old Bison warnings. - -2004-10-17 Steven Bosscher - - * class.c (ident_subst): Always alloca buffer. - * java-opcodes.h (LAST_AND_UNUSED_JAVA_OPCODE): Add this dummy - opcode after including javaop.def. - * jcf-dump.c (CHECK_PC_IN_RANGE): Return 0 from the arm of the - conditional expression that exits, to avoid warnings. - * verify.c (CHECK_PC_IN_RANGE): Mark the __GNUC__ definition as - a user of an extension. - * win32-host.c: Move check down to have non-empty file when - WIN32 is not defined. - - * Make-lang.in (java-warn): Add STRICT_WARN. - (java/jcf-io.o-warn): Don't have Werror for this file. - * jcf-io.c (caching_stat): Add FIXME for non-POSIX scandir use. - -2004-10-16 Hans-Peter Nilsson - - * expr.c (expr_add_location): Move declaration to before all - statements. - * parse.y (java_expand_classes): Ditto. - * lex.c (java_peek_unicode): Ditto. - -2004-10-16 Ranjit Mathew - - * check-init.c: Use %<, %> and %q for quoting in diagnostics, - if possible, else convert `foo' to 'foo'. - * class.c: Likewise. - * decl.c: Likewise. - * expr.c: Likewise. - * jcf-io.c: Likewise. - * jcf-parse.c: Likewise. - * lang.c: Likewise. - * lex.c: Likewise. - * parse.h: Likewise. - -2004-10-16 Ranjit Mathew - - * parse.y (parse_warning_context): Remove ATTRIBUTE_PRINTF_2 and - rename parameter 'msg' to 'msgid' in function declaration. - (issue_warning_error_from_context): Likewise. - (yyerror): Rename parameter 'msg' to 'msgid'. - (all over): Use new quoting style for diagnostics. - -2004-10-15 Kazu Hirata - - * boehm.c, builtins.c, java-except.h, jcf-io.c, jcf-path.c, - jcf.h, lang-specs.h, lex.c, lex.h, resource.c, win32-host.c: - Update copyright. - -2004-10-14 Matt Austern - - * lang.c (java_tree_inlining_walk_subtrees): Last arg is struct - pointer_set_t* now. - -2004-10-13 Tom Tromey - - PR java/15578: - * lang.opt (--extdirs): Document. - * jvspec.c (lang_specific_driver): Recognize -encoding and - -extdirs. - -2004-10-06 Ulrich Weigand - - * parse.y (issue_warning_error_from_context): Use va_list * - instead of va_list parameter. - (parse_error_context): Update call. - (parse_warning_context): Likewise. - -2004-10-05 Zack Weinberg - - * parse.y, parse-scan.y: Add list of diagnostic messages to - insulate translation template from version of yacc/bison used - to compile the grammar. - -2004-10-05 Ranjit Mathew - - Prepare for %q, %< and %> in diagnostic message strings. - * java-tree.h (parse_error_context): remove ATTRIBUTE_PRINTF_2. - Name second parameter 'msgid'. - * parse.y: Additionally include pretty-print.h and diagnostic.h. - (issue_warning_error_from_context): Use pretty-printer functions - instead of vsprintf for constructing formatted messages. Rename - parameter 'msg' to 'msgid'. - (parse_error_context): Rename parameter 'msg' to 'msgid'. - (parse_warning_context): Likewise. - -2004-10-05 Andrew Haley - - PR java/17779 - * jcf-parse.c (parse_zip_file_entries): If a class has a - superclass and a TYPE_SIZE of zero, lay it out. - -2004-09-30 Andrew Haley - - PR java/17733 - * jcf-parse.c (compute_class_name): Rewrite. - -2004-10-01 Jan Hubicka - - * java.c (java_expand_body): Update call of tree_rest_of_compilation. - -2004-10-01 Kazu Hirata - - * lex.c: Fix a comment typo. - -2004-10-01 Kazu Hirata - - * java-tree.h: Fix a comment typo. - -2004-09-30 Per Bothner - - Simplify lexer. Implement --enable-mapped-location support. - * jcf-parse.c (parse_class_file): Use linemap_line_start. - (parse_source_file_1): Pass filename as extra parameter, so we can call - linemap_add and set input_location here, rather than in both callers. - (read_class): Pass copied filename to parse_source_file_1. - Don't initialize wfl_operator - only needed for source compilation. - (read_class, jcf_parse): Call linemap_add with LC_LEAVE. - * lex.h: Remove a bunch of debugging macros. - * lex.h (struct_java_line, struct java_error): Remove types. - (JAVA_COLUMN_DELTA): Remove - use java_lexer.next_colums instead. - (struct java_lc_s): Remove prev_col field. - (struct java_lexer): New fields next_unicode, next_columns, and - avail_unicode. New position field, and maybe token_start field. - Don't need hit_eof field - use next_unicode == -1 instead. - (JAVA_INTEGERAL_RANGE_ERROR): Rename to JAVA_RANGE_ERROR. - (JAVA_RANGE_ERROR, JAVA_FLOAT_ANGE_ERROR): Update accordingly. - * parse.h: Various changes for USE_MAPPED_LOCATION. - (EXPR_WFL_EMIT_LINE_NOTE): XXX - (BUILD_EXPR_WFL, EXPR_WFL_ADD_COL): Remove no-longer-used macros. - (struct parser_ctxt): New file_start_location field. - Remove p_line, c_line fields since we no longer save lines. - Remove elc, lineno, and current_jcf fields - no longer used. - * parse.y: Updates for USE_MAPPED_LOCATION and new lexer. - Don't use EXPR_WFL_ADD_COL since that isn't trivial with - source_location and is probably not needed anymore anyway. - Use new expr_add_Location function. - (SET_EXPR_LOCATION_FROM_TOKEN): New convenience macro. - (java_pop_parser_context): Minor cleanup. - (java_parser_context_save_global, java_parser_context_restore_global, - java_pop_parser_context): Save/restore input_location as a unit. - (issue_warning_error_from_context): If USE_MAPPED_LOCATION take - a source_location instead of a wfl context node. - (check_class_interface_creation): input_filename is not addressable. - (create_artificial_method): Calling java_parser_context_save_global - and java_parser_context_restore_global is overkill. Instead, - temporarily set input_location from class decl. - (java_layout_seen_class_methods): Set input_location from method decl. - (fix_constructors): Make more robust if no EXPR_WITH_FILE_LOCATION. - (finish_loop_body): Likewise. - * lex.c: Updates for USE_MAPPED_LOCATION. Use build_unknwon_wfl. - (java_sprint_unicode): Take a character, not index in line. - (java_sneak_uncode): Replaced by java_peek_unicode. - (java_unget_unicode): No longer used. - (java_allocate_new_line. java_store_unicode): Removed, since we - no longer remember "lines". - (java_new_lexer): Update for new data structures. - (java_read_char): Move unget_value checking to java_read_unicode. - (java_get_unicode, java_peek_unicode, java_next_unicode): New more - efficient functions that are used directly when lexing. - (java_read_unicode_collapsing_terminators): No longer needed. - (java_parse_end_comment, java_parse_escape_sequence, do_java_lex): - Re-organize to use java_peek_unicode to avoid java_unget_unicode. - (java_parse_escape_sequence): Rewrite to be simpler / more efficient. - (do_java_lex): Lots of movings around to avoid java_unget_unicode, - combine switch branches, and test for common token kinds earlier. - (java_lex_error): Rewrite. - * jv-scan.c (expand_location): New function, copied from tree.c. - (main): Set ctxp->filename instead of setting input_filename directly. - -2004-09-30 Per Bothner - - More cleanup for --enable-mapped-location. - * class.c (push_class): If USE_MAPPED_LOCATION don't set - input_location here. Instead do it in give_name_to_class. - (build_class_ref): Set DECL_ARTIFICIAL, for the sake of dwarf2out. - * expr.c (expand_byte_code): Call linemap_line_start. - * expr.c (build_expr_wfl): If USE_MAPPED_LOCATION, change final - parameters to a source_location. Don't need EXPR_WFL_FILENAME_NODE. - (expr_add_location): New function, if USE_MAPPED_LOCATION. - * class.c (maybe_layout_super_class): Adjust build_expr_wfl call - to USE_MAPPED_LOCATION case. - - * java-tree.h (JAVA_FILE_P, ZIP_FILE_P): Remove unused macros. - * jcf-parse.c (java_parse_file): Don't set input_filename. - Use IS_A_COMMAND_LINE_FILENAME_P to check for duplicate filenames. - Create a list of TRANSLATION_UNIT_DECL. - (current_file_list): Is now a TRANSLATION_UNIT_DECL chain. The - reason is so we can set a DECL_SOURCE_LOCATION for each file. - (java_parse_file): Don't set unused ZIP_FILE_P, JAVA_FILE_P.. - Create line-map LC_ENTER/LC_LEAVE entries for archive itself. - (file_start_location): New static. - (set_source_filename): Avoid extra access to input_filename macro. - Concatenate new name with class's package prefix. - (set_source_filename, give_name_to_class): Update. - (give_name_to_class): Set class's "line 0" input_location here. - (parse_class_file): Set input_location as a unit. - - * jcf-parse.c (load_class): Sanity test if missing inner class file. - -2004-09-29 Per Bothner - - * java-tree.h: Redefine some macros and add some declaration - to handle the USE_MAPPED_LOCATION case. - * parse.h (EXPR_WFL_QUALIFICATION): Use operand 1, not 2. - * java-tree.h (EXPR_WFL_FILENAME_NODE): Use operand 2, not 1. - * java-tree.def (EXPR_WITH_FILE_LOCATION): Only need two operands in - USE_MAPPED_LOCATION case, since EXPR_WFL_FILENAME_NODE is gone. - - * check-init.c (check_init): Handle USE_MAPPED_LOCATION case. - * decl.c (finish_method, java_add_stmt): Likewise. - * java-gimplify.c (java-gimplify.c): Likewise. - * jcf-write.c (generate_bytecode_insns): Likewise. - * lang.c (java_post_options): Likewise - call linemap_add. - -2004-09-29 Andrew Haley - - PR java/17007 - * parse.y (patch_binop): Don't mess with the TREE_SIDE_EFFECTS of the - result of TRUNC_MOD_EXPR. - (patch_unaryop): Likewise for CONVERT_EXPR, which may throw. - * decl.c (java_init_decl_processing): Mark - soft_lookupinterfacemethod_node and soft_instanceof_node pure. - -2004-09-28 Tom Tromey - - PR java/15710: - * class.c (add_miranda_methods): Load superinterface if not - already loaded. - -2004-09-28 Andrew Haley - - PR java/17586 - * jcf-parse.c (load_class): Don't try to read a class that we've - already read. - -2004-09-28 Andrew Haley - - * jcf-parse.c (load_class): Back out previous broken patch. - -2004-09-28 Andrew Haley - - PR java/17586 - * jcf-parse.c (load_class): Don't try to read a class that we've - already read. - Check that we really did read the right class. - -2004-09-25 Tom Tromey - - PR java/17500: - * parse.y (create_artificial_method): Use add_method_1. - -2004-09-25 Kazu Hirata - - * expr.c, jcf-dump.c, parse-scan.y, parse.y: Fix - comment typos. - * gcj.texi: Fix typos. - -2004-09-24 Tom Tromey - - PR java/15656: - * parse.y (class_instance_creation_expression): Set `$$' to NULL - in error parts of rule. - (unary_expression): Don't call error_if_numeric_overflow when $1 - is NULL. - -2004-09-24 Tom Tromey - - PR java/16789: - * parse.y (resolve_qualified_expression_name): Set - CAN_COMPLETE_NORMALLY on first call when chaining static calls. - * expr.c (force_evaluation_order): Check for empty argument list - after stripping COMPOUND_EXPR. - -2004-09-23 Andrew Haley - - PR java/16927: - * parse.y (java_complete_lhs): Call patch_string() on Operand 1 of - COND_EXPRs. - -2004-09-23 Tom Tromey - - PR java/17329: - * java-gimplify.c (java_gimplify_expr) : Ignore case - where operand is null. - -2004-09-23 Tom Tromey - - PR java/17380: - * parse.y (not_accessible_p): Allow access to protected members - even when class is not static. - -2004-09-22 Kelley Cook - - * Make-lang.in: Revert the gcc-none.o change. - -2004-09-22 Nathan Sidwell - - * parse.y (patch_anonymous_class): VEC_space returns true if there - is space. - -2004-09-21 Matt Austern - - Fix bootstrap. - * gjavah.c (free_method_name_list): Fix function definition so - it's a proper C prototype. - -2004-09-21 Tom Tromey - - PR java/17575: - * gjavah.c (free_method_name_list): New method. - (main): Call it. - -2004-09-17 Jeffrey D. Oldham - Zack Weinberg - - * java-tree.def: Use tree_code_class enumeration constants - instead of code letters. - * java-gimplify.c, jcf-write.c, lang.c, parse.y: Update for - new tree-class enumeration constants. - -2004-09-13 Tom Tromey - - PR java/17216: - * class.c (layout_class_method): Put synthetic methods into the - vtable. - -2004-09-11 Andrew Pinski - - * Make-lang.in (java/ggc-none.c): Change dependency - for ggc.h into $(GGC_H). - -2004-09-11 Mohan Embar - - * Make-lang.in (java/win32-host.o): Add dependency on - coretypes.h. - * win32-host.c: Add includes for coretypes.h, jcf.h - -2004-09-11 Mohan Embar - - * Make-lang.in (GCJH_OBJS): Change dependency from - ggc-none.o to java/ggc-none.o - (JCFDUMP_OBJS): Likewise. - (java/ggc-none.o): New target. - -2004-08-25 Nathan Sidwell - - * boehm.c (get_boehm_type_descriptor): Adjust build_int_cst calls. - * class.c (build_utf8_ref, build_static_field_ref, - make_field_value, make_method_value, get_dispatch_table, - make_class_data, emit_symbol_table, emit_catch_table): Likewise. - * constants.c (get_tag_node, build_ref_from_constant_pool, - build_constants_constructor): Likewise. - * decl.c (java_init_decl_processing): Likewise. - * expr.c (build_java_array_length_access, build_newarray, - expand_java_multianewarray, expand_java_pushc, expand_iinc, - build_java_binop, build_field_ref, expand_java_add_case, - expand_java_call, build_known_method_ref, build_invokevirtual, - build_invokeinterface, build_jni_stub): Likewise. - * java-gimplify.c (java_gimplify_new_array_init): Likewise. - * jcf-parse.c (get_constant): Likewise. - * lex.c (do_java_lex): Likewise. - * parse.y (patch_binop, patch_unaryop, patch_cast, - build_newarray_node, patch_newarray): Likewise. - * resource.c (compile_resource_data): Likewise. - * typeck.c (build_prim_array_type): Likewise. - -2004-08-24 Nathan Sidwell - - * decl.c (java_init_decl_processing): Adjust - initialize_sizetypes call. - -2004-08-23 Nathan Sidwell - - * jv-scan.c (fancy_abort): Add. - -2004-08-20 Nathan Sidwell - - * expr.c (build_java_arrayaccess): Use convert to change - len's type. - -2004-08-19 Bryce McKinlay - - * class.c (make_local_function_alias): Allocate extra space for 'L' - in name buffer. Reported by Thomas Neumann. - -2004-08-19 Nathan Sidwell - - * parse.h (JAVA_RADIX10_FLAG): Rename to ... - (JAVA_NOT_RADIX10_FLAG): ... here. Invert meaning. - * lex.c (do_java_lex): Adjust. - (error_if_numeric_overflow): Likewise. - -2004-08-18 Andrew Pinski - - * class.c (make_local_function_alias): Only make a new decl if we - support alias attribute on all decls. - -2004-08-18 Bryce McKinlay - - * class.c (make_local_function_alias): New function. Create local - alias for public method DECL. - (make_method_value): Use make_local_function_alias. - * parse.y (craft_constructor): Don't special-case anonymous classes. - Always set ctor_name to init_identifier_node. - (lookup_method_invoke): Call layout_class_method when creating - anonymous class constructor. - -2004-08-18 Richard Henderson - - * java-gimplify.c (java_gimplify_expr): Move '2' handling into - default case. Treat '<' similarly. Update for - is_gimple_formal_tmp_var name change. - -2004-08-17 Andrew Haley - - * lang.c (lang_printable_name): Obey verbose flag. - * parse.y (constructor_circularity_msg): Set VERBOSE arg for - lang_printable_name(). - (verify_constructor_circularity, get_printable_method_name, - check_abstract_method_definitions, java_check_regular_methods, - java_check_abstract_methods, check_inner_class_access, - fix_constructors, patch_method_invocation, patch_return): - Likewise. - * expr.c (pop_type_0): Likewise. - - * java-tree.h (lang_printable_name_wls): Delete. - -2004-08-16 Tom Tromey - - PR java/8473: - * parse.y (primary): Changed for initialized and uninitialized - array creations. - (array_access): Handle array_creation_initialized. - (array_creation_expression): Split into - array_creation_initialized and array_creation_uninitialized. - -2004-08-16 Andrew Haley - - * jcf-write.c (find_constant_index): Canonicalize NaNs when - generating bytecode. - -2004-08-16 Elliot Lee - - PR java/9677 - * jcf-parse.c (java_parse_file): Handle filenames with embedded - spaces, and quoted filelists. - -2004-08-15 Nathan Sidwell - - * boehm.c (get_boehm_type_descriptor): Use build_int_cst. - * class.c (build_utf8_ref, build_static_field_ref, - make_field_value, make_method_value, get_dispatch_table, - make_class_data, emit_symbol_table, emit_catch_table): Likewise. - * constants.c (get_tag_node, build_ref_from_constant_pool, - build_constants_constructor): Likewise. - * decl.c (java_init_decl_processing): Likewise. - * expr.c (build_java_array_length_access, build_newarray, - expand_java_multianewarray, expand_java_pushc, expand_iinc, - build_java_binop, build_field_ref, expand_java_add_case, - expand_java_call, build_known_method_ref, build_invokevirtual, - build_invokeinterface, build_jni_stub): Likewise. - * java-gimplify.c (java_gimplify_new_array_init): Likewise. - * jcf-parse.c (get_constant): Likewise. - * lex.c (do_java_lex): Likewise. - * parse.y (patch_binop, patch_unaryop, patch_cast, - build_null_of_type, patch_newarray): Likewise. - * resource.c (compile_resource_data): Likewise. - * typeck.c (build_prim_array_type): Likewise. - -2004-08-10 Bryce McKinlay - - * java-gimplify.c (java_gimplify_new_array_init): Use create_tmp_var. - Don't create BLOCK here or call java_gimplify_block. - -2004-08-09 H.J. Lu - - * java-tree.h (flag_deprecated): Removed. - * lang.opt (Wdeprecated): Use existing Var(warn_deprecated). - * parse.y (check_deprecation): Check warn_deprecated instead of - flag_deprecated. - -2004-08-06 Kelley Cook - - * lang.c (flag_emit_class_files, flag_filelist_file, flag_redundant, - flag_use_divide_subroutine, flag_use_boehm_gc, flag_store_check, - flag_hash_synchronization, flag_assert, flag_jni, flag_newer, - flag_check_references, flag_extraneous_semicolon, flag_deprecated, - flag_force_classes_archive_check, flag_optimize_sci, - flag_indirect_dispatch): Remove explicit declarations. - * lang.opt: Add implicit declare/define/assign. Remove obsolete - final comment. - -2004-08-05 Michael Chastain - - PR bootstrap/14893 - * Make-lang.in (java.install-man): Install from either build - tree or source tree, whichever has the file first. - -2004-08-05 Nathan Sidwell - - * jcf-parse.c (get_constant): Adjust force_fit_type call. - * lex.h (SET_LVAL_NODE_TYPE): Remove. - * lex.c (java_perform_atof): Use SET_LVAL_NODE directly. - (do_java_lex): Likewise. Adjust force_fit_type call. - -2004-08-04 Roger Sayle - Andrew Haley - - * typeck.c (convert_ieee_real_to_integer): Call fold on the range - checking trees as they're being built. - (convert): Call convert_ieee_real_to_integer if we're - converting a constant, even if we're writing a class file. - -2004-08-02 Bryce McKinlay - - PR java/16701 - * parse.y (fold_constant_for_init): Call resolve_field_access with - correct current_class context. - -2004-08-01 Roger Sayle - - * decl.c (update_aliases, initialize_local_variable): Replace calls - to build with calls to buildN. - * java-gimplify.c (java_gimplify_modify_expr): Likewise. - * java-tree.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Likewise. - * parse.h (BUILD_THROW): Likewise. - * parse.y (switch_expression, synchronized_statement, - catch_clause_parameter, array_creation_expression, - conditional_expression, make_qualified_name, - resolve_qualified_expression_name, patch_method_invocation, - patch_invoke, build_method_invocation, build_new_invocation, - build_assignment, patch_assignment, build_binop, patch_binop, - build_string_concatenation, build_incdec, patch_unaryop, - patch_cast, build_array_ref, build_newarray_node, patch_newarray, - patch_return, build_if_else_statement, build_labeled_block, - build_new_loop, build_loop_body, build_bc_statement, - build_assertion, encapsulate_with_try_catch, build_try_statement, - build_try_finally_statement, patch_synchronized_statement, - emit_test_initialization): Likewise, replace build with buildN. - -2004-07-28 Eric Christopher - - * lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete. - (java_unsafe_for_reeval): Ditto. - -2004-07-26 - - * parse.y (build_super_invocation): Adjust declaration order to - avoid declaration after statement. - -2004-07-25 Bernardo Innocenti - - * decl.c: Rename all identifiers named `class' to `cl'. - -2004-07-25 Richard Henderson - - * decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P. - -2004-07-23 Mike Stump - - * boehm.c (set_bit): Improve type safety wrt unsignedness. - * gjavah.c (throwable_p, decode_signature_piece, - print_full_cxx_name, print_include, add_namelet, add_class_decl, - process_file): Likewise. - * jcf-dump.c (main): Likewise. - * jcf-io.c (read_zip_member): Likewise. - * jcf-parse.c (HANDLE_CONSTANT_Utf8, get_constant, - give_name_to_class, get_class_constant): Likewise. - * jcf-write.c (find_constant_wide, push_long_const, - generate_classfile): Likewise. - * lex.c (java_new_lexer, java_read_char, cxx_keyword_p): Likewise. - * parse.y (read_import_dir): Likewise. - * typeck.c (parse_signature_type): Likewise. - * verify.c (verify_jvm_instructions): Likewise. - * zextract.c (find_zip_file_start, read_zip_archive): Likewise. - -2004-07-23 Thomas Fitzsimmons - - * Make-lang.in: Replace rmic and rmiregistry references with - grmic and grmiregistry. - * gcj.texi: Likewise. - -2004-07-20 Andrew Haley - - PR java/16431. - * verify.c (verify_jvm_instructions): Comment change only. - - * typeck.c (build_java_array_type): Add size field to array name. - - * java-tree.h (LOCAL_SLOT_P): New. - (update_aliases): Add PC argument. - (pushdecl_function_level): New function. - - * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL, - MODIFY_EXPR, and SAVE_EXPR. - (java_gimplify_modify_expr): New function. - - * expr.c (push_type_0): Call find_stack_slot() to create temporary. - (expand_iinc): Pass PC to update_aliases(). - (STORE_INTERNAL): Likewise. - (process_jvm_instruction): Likewise. - - * decl.c (base_decl_map): New variable. - (uniq): New variable. - (update_aliases): Rewrite with more thorough checking. - (debug_variable_p): New function. - (push_jvm_slot): Don't initialize local variable. Don't pushdecl. - (check_local_named_variable): Delete whole function. - (initialize_local_variable): New function. - (check_local_unnamed_variable): Add checks and comments. - (find_local_variable): Rewrite. - (java_replace_reference): New function. - (function_binding_level): New variable. - (pushdecl_function_level): New function. - (maybe_pushlevels): Set DECL_LOCAL_END_PC. - (maybe_pushlevels): Call pushdecl() on each of the new decls. - (start_java_method): Reset uniq. Create base_decl_map. Set - function_binding_level. - (end_java_method): Null unused fields to save memory. - -2004-07-20 Nathan Sidwell - - * class.c (add_interface_do): Remove. - (set_super_info, interface_of_p, maybe_add_interface, - add_interface, make_class_data, layout_class, - add_miranda_methods): Adjust BINFO accessors and addition. - * expr.c (can_widen_reference_to, lookup_field): Adjust BINFO - accessors. - * jcf-write.c (generate_classfile): Likewise. - * parse.y (patch_anonymous_class, check_inner_circular_reference, - check_circular_reference, java_complete_class, - check_abstract_method_definitions, - java_check_abstract_method_definitions, - check_interface_throws_clauses, java_check_abstract_methods, - lookup_java_interface_method2, - find_applicable_accessible_methods_list): Adjust BINFO accessors - and addition. - * typeck.c (find_method_in_interfaces): Adjust BINFO accessors. - -2004-07-18 Roger Sayle - - * builtins.c (max_builtin, min_builtin, - java_build_function_call_expr): Replace calls to build with buildN. - * class.c (build_class_ref, build_static_field_ref, - get_dispatch_table, make_class_data, layout_class_method): Likewise. - * constants.c (build_ref_from_constant_pool): Likewise. - * decl.c (update_aliases, push_jvm_slot, poplevel, finish_method, - add_stmt_to_compound): Likewise. - * except.c (build_exception_object_ref, expand_end_java_handler): - Likewise. - * java-gimplify.c (java_gimplify_case_expr, - java_gimplify_default_expr, java_gimplify_block, - java_gimplify_new_array_init, java_gimplify_try_expr): Likewise. - * jcf-write.c (generate_bytecode_insns): Likewise. - * typeck.c (convert_ieee_real_to_integer): Likewise. - -2004-07-17 Joseph S. Myers - - * java-tree.h (builtin_function): Declare. - -2004-07-16 Steven Bosscher - - * parse.y (java_complete_expand_methods, java_expand_classes): Don't - abuse restore_line_number_status. - -2004-07-15 Frank Ch. Eigler - - g++/15861 - * jcf-parse.c (java_emit_static_constructor): Specify default - priority. - -2004-07-13 Per Bothner - - * java-tree.h (all_class_filename): Remove useless macro. - (enum java_tree_index): Remove JTI_ALL_CLASS_FILENAME constant. - (BUILD_FILENAME_IDENTIFIER_NODE): Remove useless macro. - * parse.y (java_parser_context_restore_global): Replace - BUILD_FILENAME_IDENTIFIER_NODE by plain get_identifier. - * jcf-parse.c (read_class, java_parse_file): Likewise. - -2004-07-12 Bryce McKinlay - - PR java/16474 - gjavah.c (print_field_info): Emit constant only if field is static. - -2004-07-11 Roger Sayle - - * expr.c (java_truthvalue_conversion, flush_quick_stack, - java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr, - build_java_ret, build_java_throw_out_of_bounds_exception, - build_java_array_length_access, java_check_reference, - build_java_arrayaccess, build_java_arraystore_check, build_newarray, - build_anewarray, expand_java_multianewarray, expand_java_arraystore, - expand_java_arrayload, build_java_monitor, expand_java_return, - expand_load_internal, expand_java_NEW, build_get_class, - build_instanceof, expand_java_CHECKCAST, expand_iinc, - build_java_soft_divmod, build_java_binop, build_field_ref, - expand_compare, expand_java_goto, expand_java_switch, - expand_java_add_case, build_class_init, build_known_method_ref, - invoke_build_dtable, build_invokevirtual, build_invokeinterface, - expand_invoke, build_jni_stub, expand_java_field_op, - java_expand_expr, expand_byte_code, STORE_INTERNAL, - force_evaluation_order, emit_init_test_initialization): Convert - calls to "build" into calls to the prefered "buildN" functions. - -2004-07-11 Joseph S. Myers - - * java-tree.h (set_block): Remove. - * lang.c (java_clear_binding_stack): New. - (LANG_HOOKS_CLEAR_BINDING_STACK): Define. - * decl.c (struct binding_level): Remove this_block. - (clear_binding_level): Likewise. - (poplevel): Don't handle this_block. - (set_block): Remove. - -2004-07-10 Bryce McKinlay - - * class.c (common_enclosing_context_p): Remove statement with no - side-effects. - -2004-07-09 Bryce McKinlay - - PR java/8618 - * parse.y (create_anonymous_class): Remove 'location' argument. Use - the WFL from TYPE_NAME to get line number for the decl. Fix comment. - (craft_constructor): Inherit access flags for implicit constructor - from the enclosing class. - (create_class): Fix comment typo. - (resolve_qualified_expression_name): Pass type of qualifier to - not_accessible_p, not the type in which target field was found. - (not_accessible_p): Handle inner classes. Expand protected - qualifier-subtype check to enclosing instances, but don't apply this - check to static members. Allow protected access to inner classes - of a subtype. Allow private access within common enclosing context. - (build_super_invocation): Get WFL line number info from current - class decl. - (build_incomplete_class_ref): Update for new create_anonymous_class - signature. - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Use - common_enclosing_instance_p. - * class.c (common_enclosing_context_p): New. Determine if types - share a common enclosing context, even across static contexts. - (common_enclosing_instance_p): Renamed from - common_enclosing_context_p. Determines if types share a common - non-static enclosing instance. - * java-tree.h (common_enclosing_instance_p): Declare. - * jcf-write.c (get_method_access_flags): New. Surpress private flag - for inner class constructors. - (generate_classfile): Use get_method_access_flags. - -2004-07-09 Bryce McKinlay - - * class.c (interface_of_p): Check for null TYPE_BINFO. - -2004-07-09 Nathan Sidwell - - * class.c (make_class): Do not create binfo here. - (set_super_info): Create it here. - * java-tree.h (CLASS_HAS_SUPER): Cope with lack of a binfo. - -2004-07-08 Richard Henderson - - * expr.c (case_identity, get_primitive_array_vtable, - java_expand_expr, emit_init_test_initialization): Remove. - * java-tree.h (java_expand_expr): Remove. - * lang.c (LANG_HOOKS_EXPAND_EXPR): Remove. - -2004-07-07 Per Bothner - - * class.c (build_static_field_ref): Add a NOP_EXPR; otherwise we - get internal error due to mismatched types. - - * gcj.texi (Invoking gij): Document new -verbose:class flag. - - * gcj.texi (Linking): New node. Document -lgij usage. - -2004-07-07 Nathan Sidwell - - * java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros. - (TYPE_NVIRTUALS, TYPE_VTABLE): Likewise. - * java/class.c (set_super_info, class_depth, interface_of_p, - maybe_add_interface, add_interface, make_class_data, - layout_class, add_miranda_methods): Adjust BINFO macros. - * expr.c (can_widen_reference_to, lookup_field): Likewise. - * jcf-write.c (generate_classfile): Likewise. - * parse.y (patch_anonymous_class, - check_inner_circular_reference, check_circular_reference, - java_complete_class, check_abstract_method_definitions, - java_check_abstract_method_definitions, - check_interface_throws_clauses, java_check_abstract_methods, - lookup_java_interface_method2, - find_applicable_accessible_methods_list): Likewise. - * typeck.c (find_method_in_interface): Likewise. - * verify.c (merge_types): Likewise. - -2004-07-06 Nathan Sidwell - - * java-tree.h (CLASS_HAS_SUPER_FLAG): Use BINFO_FLAG_1. - * class.c (add_interface_do): Use BINFO_VIRTUAL_P. - -2004-07-05 Nathan Sidwell - - * class.c (make_class): Use make_tree_binfo. - (set_super_info, add_interface_do): Likewise. - * java-tree.h (CLASS_HAS_SUPER_FLAG): Expect a BINFO. - -2004-07-04 Ranjit Mathew - - * verify.c: Correct array element access formatting thinko. - -2004-07-04 Ranjit Mathew - - * verify.c: Insert a short blurb at the start referring to the JVMS. - (merge_type_state): Remove redundant nested if statement. - (verify_jvm_instructions): Ensure current_subr is initialised to - NULL_TREE. - Minor formatting fixes all over the place. - -2004-07-02 Richard Henderson - - * jcf-write.c (generate_bytecode_insns ): Rewrite. - -2004-07-01 Richard Henderson - - * class.c (registerClass_libfunc): Remove. - (init_class_processing): Don't set it. - (emit_register_classes): Take list_p parameter. Fill it in - with _Jv_RegisterClass calls. - * decl.c (java_init_decl_processing): Don't call - init_resource_processing. - * jcf-parse.c (java_emit_static_constructor): New. - (java_parse_file): Call it. - * resource.c (registerResource_libfunc): Remove. - (init_resource_processing): Remove. - (write_resource_constructor): Take list_p parameter. Fill it in - with _Jv_RegisterResource calls. - * java-tree.h: Update prototypes. - -2004-06-29 Bryce McKinlay - - PR java/1262 - * class.c (layout_class_method): Do not override package-private - method if its in a different package. - (split_qualified_name): Move here from parse.y. Rename from - breakdown_qualified. Add comment. - (in_same_package): Move here from parse.y. Add comment. - * java-tree.h (break_down_qualified, in_same_package): Declare. - (in_same_package): Likewise. - * parse.y (breakdown_qualified, in_same_package): Moved to class.c. - Callers updated. - -2004-06-29 Andrew Haley - - * except.c (expand_start_java_handler): Push a new binding level. - Don't build a TRY_CATCH_EXPR now, we'll do it later. Call - register_exception_range() to register where we'll do it. - (expand_end_java_handler): Remove old bogus code. Replace with - new logic that simply builds TRY_CATCH_EXPRs and inserts them at - the top of the expression we're curently building. - (maybe_end_try): Delete. - * decl.c (binding_level.exception_range): New field. - (clear_binding_level): Add field exception_range. Reformat. - (poplevel): Call expand_end_java_handler(). - (poplevel): Call java_add_stmt only if functionbody is false. - (maybe_poplevels): Don't call maybe_end_try() from here. - (end_java_method): Clear no longer used trees in function decl. - (register_exception_range): New function. - * java-tree.h (register_exception_range, struct eh_range): Declare. - -2004-06-28 Bryce McKinlay - - * jcf-write.c (get_classfile_modifiers): Formatting fixes. - -2004-06-27 Ranjit Mathew - - Formatting fixes. - * expr.c (class_has_finalize_method): Fix method name indentation. - (expand_java_call): Remove K&R style parameter declaration. - (expand_invoke): Fix statement indentation. - (expand_java_field_op): Likewise. - * parse-scan.y: Fix typo. - (reset_report): Fix method name indentation. - * parse.y (unresolved_type_p, build_expr_block): Remove extra blank - line. Fix typos. - * verify.c (verify_jvm_instructions): Document parameters, insert - page break. - * lang.c (lang_init_source): Fix method name indentation. - * class.c (common_enclosing_context_p): Likewise. - (emit_symbol_table): Fix parameter list indentation. - * decl.c (add_stmt_to_compound, java_add_stmt): Remove K&R style - parameter declaration. - * constants.c: Fix copyright notice indentation. - * typeck.c (find_method_in_superclasses): Fix parameter list - indentation. - (find_method_in_interfaces): Likewise. - * zextract.c (makelong): Fix method name indentation. - -2004-06-26 Bryce McKinlay - - PR java/15715. - * parse.y (create_interface): Set correct access modifiers for - interfaces. - * jcf-write.c (get_classfile_modifiers): New function. - (generate_classfile): Use get_classfile_modifiers, not - get_access_flags. - -2004-06-26 Bryce McKinlay - - * parse.y (register_incomplete_type): Set JDEP_ENCLOSING for "super" - dependency to current parser context, not NULL_TREE, for top-level - classes. - (jdep_resolve_class): Enable member access check for all inner - class dependencies. - -2004-06-26 Bryce McKinlay - - * parse.y (qualify_and_find): Pass type decl, not identifier, to - load_class. - -2004-06-26 Bryce McKinlay - - PR java/15734 - * expr.c (expand_java_field_op): Ensure that target class for static - field access has been loaded. - -2004-06-26 Bryce McKinlay - Ranjit Mathew - - PR java/1207, java/16178 - * jcf-parse.c (load_class): Return immediately if passed a type decl - where CLASS_FROM_SOURCE_P is set. Remove FIXME. - * parse.y (do_resolve_class): Remove checks for CLASS_FROM_SOURCE_P - before calling load_class. - (qualify_and_find): Likewise. - (find_in_imports_on_demand): Likewise. - (find_applicable_accessible_methods_list): Likewise. - -2004-06-24 Bryce McKinlay - - * parse.y (java_layout_seen_class_methods): Don't call load_class - on class defined by source parser. - -2004-06-23 Bryce McKinlay - - * parse.y (set_nested_class_simple_name_value): Removed. - (java_complete_expand_class): Remove calls to - set_nested_class_simple_name_value. - -2004-06-22 Andrew Haley - Ranjit Mathew - - Fixes PR java/16113. - * decl.c (force_poplevels): Remove call to expand_end_bindings. - -2004-06-22 Ranjit Mathew - - * parse.y (create_class): Correct diagnostic message about - java.lang.Object extending anything else. - -2004-06-21 Richard Kenner - - * class.c (build_class_ref): Add new operand for COMPONENT_REF. - (build_static_field_ref): Likewise and add new operands for ARRAY_REF. - * constants.c (build_ref_from_constant_pool): Likewise. - * expr.c (build_java_array_length_access): Likewise. - (build_get_class, build_field_ref, build_known_method_ref): Likewise. - (invoke_build_dtable, build_invokevirtual): Likewise. - (build_invokeinterface, java_expand_expr): Likewise. - (emit_init_test_initialization): Likewise. - * java-gimplify.c (java_gimplify_new_array_init): Likewise. - * parse.y (make_qualifed_name, build_array_ref): Likewise. - -2004-06-21 Andrew Haley - - * java-gimplify.c (java_gimplify_block): set TREE_USED on the new - block. - -2004-06-21 Joseph S. Myers - - * jcf.h (struct JCF): Change java_source, right_zip and finished - to unsigned int. - * lex.h (struct java_lexer): Change hit_eof, read_anything, - byte_swap and use_fallback to unsigned int. - * parse.h (struct _jdep): Change flag0 to unsigned int. - -2004-06-17 Ranjit Mathew - - Fixes PR java/13948 - * parse.y (java_layout_seen_class_methods): Ensure class is loaded - before trying to lay out its methods. - * jcf-parse.c (read_class): Track parsed files using canonical paths - obtained via lrealpath from libiberty. - (java_parse_file): Likewise. - (parse_source_file_1): Rename formal parameter to reflect its - modified purpose. Minor formatting fix. - -2004-06-15 Paolo Bonzini - - * class.c (emit_register_classes): Make the function uninlinable, - do not set current_function_cannot_inline. - * resource.c (write_resource_constructor): Do not reset - flag_inline_functions around rest_of_compilation. - -2004-06-08 Andrew Pinski - - PR java/15769 - * expr.c (java_truthvalue_conversion): Handle - UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR, - ORDERED_EXPR, and UNORDERED_EXPR as comparison operators, - i.e. return the expression. - -2004-06-03 Mark G. Adams - - * gjavah.c: Include version.h - -2004-05-31 Bryce McKinlay - - * jcf-write.c (generate_bytecode_conditional): Correct handling - of unordered conditionals. Add comment. - -2004-05-29 Ranjit Mathew - Per Bothner - - * java-tree.h (DECL_LOCAL_FINAL_IUD): New macro to test if a - local variable was initialised upon declaration. - * parse.y (declare_local_variables): Set DECL_LOCAL_FINAL_IUD if - variable was final and initialised upon declaration. - * check-init.c (check_final_reassigned): Give error only if a blank - final is not definitely unassigned or if an initialised final is - reassigned. - (check_bool_init): Respect JLS2 16.1.7 requirements for boolean - assignment expressions. Remove case MODIFY_EXPR, label do_default. - (check_init): Perform initialised-variable-removing-optimisation - only on non-final local variables. - -2004-05-28 Bryce McKinlay - - * jcf-write.c (generate_bytecode_conditional): Handle binops - UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, - and LTGT_EXPR. - (generate_bytecode_insns): Likewise. - -2004-05-28 Bryce McKinlay - - * check-init.c (check_init): Handle binops UNLT_EXPR, UNLE_EXPR, - UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, and LTGT_EXPR. - -2004-05-28 Bryce McKinlay - - * gcj.texi (Object allocation): Remove _Jv_AllocBytes. - (Mixing with C++): Document JvAllocBytes and RawDataManaged. - -2004-05-26 Bryce McKinlay - - * decl.c (struct binding_level): Add GTY marker. Compile - binding_depth unconditionally. - (current_binding_level, free_binding_level, global_binding_level): - Likewise. - (clear_binding_level): Unconditionally set binding_depth. - (make_binding_level): Use ggc_alloc_cleared, not xmalloc. - -2004-05-26 Bryce McKinlay - - * lex.c (java_new_lexer): Set 'encoding'. - (java_read_char): Improve error message for unrecognized characters. - * lex.h (struct java_lexer): New field 'encoding'. - -2004-05-23 Paolo Bonzini - - * Make-lang.in: Link in $(LIBCPP) instead of mkdeps.o. - -2004-05-21 Mark Wielaard - - * gjavah.c (print_stub_or_jni): Mark functions only JNIEXPORT, not - extern. - -2004-05-19 Paolo Bonzini - - * typeck.c: Remove non-printable character 160. - -2004-05-17 Ranjit Mathew - - * check-init.c: Correct minor typos. - -2004-05-13 Diego Novillo - - * Make-lang.in, expr.c, java-gimplify.c: Rename - tree-simple.[ch] to tree-gimple.[ch]. - -2004-05-14 Ranjit Mathew - - * java-gimplify.c (java_gimplify_expr): Correct minor typos. - -2004-05-13 Diego Novillo - - Merge from tree-ssa-20020619-branch. See - ChangeLog.tree-ssa for details. - - * Make-lang.in, builtins.c, check-init.c, class.c, - constants.c, decl.c, except.c, expr.c, java-except.h, - java-tree.def, java-tree.h, jcf-parse.c, jcf-write.c, - lang.c, lang.opt, parse.y, resource.c: Merged. - * java-gimplify.c: New file. - -2004-05-10 Andrew Haley - - * parse.y (create_class): Set TYPE_VFIELD. - * decl.c (java_init_decl_processing): Likewise. - - * expr.c (build_invokevirtual): Remove DECL_VINDEX offset adjustment. - * class.c (make_method_value): Replace DECL_VINDEX with call to - get_method_index(). - (get_dispatch_vector): Likewise. - (layout_class_method): Likewise. - Replace set of DECL_VINDEX with call to set_method_index(). - (set_method_index): New function. - (get_method_index): New function. - * java-tree.h (set_method_index): New function decl. - (get_method_index): New function decl. - -2004-05-10 Andrew Pinski - - * parse.y (check_pkg_class_access): Add new argument - and use it when cl is NULL to call lookup_cl on it. - (parser_check_super_interface): Do not call lookup_cl. - Pass this_decl to check_pkg_class_access and NULL - instead of lookup_cl. - (parser_check_super): Update for change in - check_pkg_class_access. - (do_resolve_class): Likewise. - (process_imports): Likewise. - (find_in_imports_on_demand): Likewise. - (resolve_qualified_expression_name): Likewise. - -2004-05-06 Ranjit Mathew - - Fixes PR java/9685, PR java/15073 - * parse.y (accessibility_string): New method. - (not_accessible_field_error): Use accessibility_string() - instead of java_accstring_lookup(). - (resolve_qualified_expression_name): Check with - check_pkg_class_access() before allowing access using - qualified names. - Fix comment typo. - Use check_pkg_class_access() instead of not_accessible_p() - for unqualified types. - (not_accessible_p): Use DECL_CONTEXT (member) instead of - REFERENCE for package-private access checking. - (patch_method_invocation): Use accessibility_string() instead - of java_accstring_lookup(). - -2004-04-30 Ranjit Mathew - - Fixes PR java/15133 - * gjavah.c (struct method_name): Add member is_native. - (overloaded_jni_method_exists_p): Match candidate method only if - it is native. - (print_method_info): Initialise is_native flag from the method's - access flags. - -2004-04-30 Roger Sayle - - * builtins.c (java_builtins): Add acos, asin, ceil and floor. - (initialize_builtins): Likewise, define acos, asin, ceil and floor. - -2004-04-22 Roger Sayle - - * resource.c (write_resource_constructor): Guard call to possibly - NULL targetm.asm_out.constructor with targetm.have_ctors_dtors. - -2004-04-19 Bryce McKinlay - - * class.c (make_class_data): Add new field aux_info. - * decl.c (java_init_decl_processing): Push type and decl for - `aux_info'. - -2004-04-15 Bryce McKinlay - - * expr.c (expand_java_NEW): Don't use size argument for - _Jv_AllocObject calls. - * parse.y (patch_invoke): Likewise. - -2004-04-12 Bryce McKinlay - - * expr.c (build_invokeinterface): Remove unused variables to - fix warnings. - -2004-04-12 Bryce McKinlay - - * class.c (get_interface_method_index): New function. Return dispatch - index for interface method. - (make_method_value): For interface methods, set index field to - iface dispatch index, not DECL_VINDEX. - * expr.c (build_invokeinterface): Use get_interface_method_index. - -2004-03-31 Richard Kenner - - * jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED. - -2004-03-31 Andrew Haley - - PR java/14104 - * jcf-io.c (opendir_in_zip): Tidy up error handling. - -2004-03-30 Zack Weinberg - - * builtins.c, expr.c, jcf.h, parse.h: Use new shorter - form of GTY markers. - -2004-03-25 Marcus Meissner - - PR java/14689: - * jcf-path.c (jcf_path_extdirs_arg): Add missing closedir. - -2004-03-23 Tom Tromey - - PR java/14315: - * jcf-write.c (make_class_file_name): Don't report if mkdir - failed with EEXIST. - -2004-03-23 Tom Tromey - - * gcj.texi (Extensions): Document GCJ_PROPERTIES. - -2004-03-20 Kazu Hirata - - * class.c, gjavah.c, lang.c: Fix comment typos. - * gcj.texi: Fix typos. - -2004-03-19 Per Bothner - - * gcj.texi (Code Generation): Document new flags and assert defaults. - - * class.c (assume_compiled_node_struct): Rename type to - class_flag_node_struct, as it is now also used for enable_assertions. - Rename assume_compiled_node typedef. Rename excludep field to value. - (find_assume_compiled_node): Rename function to find_class_flag_node. - Minor optimization - avoid needless strlen. - (add_assume_compiled): Some tweaking and optimization. - Rename and generalize to add_class_flag takem an extra parameter. - (add_assume_compled): New just calls add_class_flag. - (add_enable_assert, enable_assertions): New functions. - (enable_assert_tree): New static. - * java-tree.h (add_enable_assert, enable_assertions): New declarations. - * lang.opt (fenable-assertions, fenable-assertions=, - fdisable-assertions, fdisable-assertions=): New options. - * lang.c (java_handle_option): Handle new options. - * parse.y (build_incomplete_class_ref): Handle class$ in an inner - class in an interface - create helper class nested in outer interface. - (build_assertion): Short-circuit if enable_assertions is false. - -2004-03-18 Richard Kenner - - * java-tree.h: Changes throughout to add checking to macros - and numerous whitespace changes. - (VAR_OR_FIELD_CHECK): New macro. - * jcf-write.c (get_access_flags): Use FIELD_PUBLIC, METHOD_PUBLIC, - FIELD_FINAL, and METHOD_FINAL instead of CLASS_PUBLIC and CLASS_FINAL. - -2004-03-16 Per Bothner - - * jcf-jump.c (options): New --print-constants option. - * gcj.texi (Invoking jcf-dump): Document --print-constants. - - * jcf-dump.c (flag_print_constant_pool): Default to off. - (print_constant_terse_with_index): New helper function. - (various places): Check flag_print_constant_pool where missing. - (main): If verbose set flag_print_constant_pool. - (HANDLE_INNERCLASSES_ATTRIBUTE): Null inner class name is anonymous. - -2004-03-15 Andrew Haley - - PR java/14581 - * parse.y (java_complete_lhs): Check that final variable has an - initializer. - -2004-03-12 Andrew Haley - - PR java/14551 - * typeck.c (convert): Clear TREE_OVERFLOW after an integer - conversion. - -2004-02-29 Roger Sayle - - * jcf-parse.c (java_parse_file): Handle the case that input_filename - is NULL. - -2004-02-27 Per Bothner - - * parse.y (build_assertion): Re-do 02-25 change following Jeff Sturm - suggestion: Use build_incomplete_class_ref. - This fixes PR java/13508, java/11714. - -2004-02-27 Kazu Hirata - - * java/parse.h: Update copyright. - -2004-02-26 Andrew Haley - - PR java/14231: - * parse.y (check_interface_throws_clauses): Check for - !METHOD_INVISIBLE (iface_method). - * class.c (layout_class_methods): Check for CLASS_INTERFACE as - well as CLASS_ABSTRACT. - -2004-02-25 Per Bothner - - * parse.y (build_assertion): If we're in an inner class, create the - class$ helper routine in the outer class. - -2004-02-19 Richard Henderson - - * parse.y (switch_label): Use make_node for DEFAULT_EXPR. - -2004-02-16 Geoffrey Keating - - * Make-lang.in (java.install-man): Add extra dependencies. - -2004-02-13 Geoffrey Keating - - * Make-lang.in: Install man pages under the same names - (possibly transformed) as the program they document. - -2004-02-10 Joseph S. Myers - - * gjavah.c: Include "intl.h". - (error): New function. - (main): Call gcc_init_libintl. - (get_field_name, throwable_p, print_c_decl, print_full_cxx_name, - print_stub_or_jni, process_file, main): Use error rather than - fprintf. - (print_method_info, usage, help, version, main): Mark strings for - translation with _. Avoid splitting up sentences. Send - information messages to stdout. - * jcf-dump.c: Include "intl.h". - (main): Call gcc_init_libintl. - (process_class, usage, help, version, main, CHECK_PC_IN_RANGE): - Mark error, usage and version messages for translation with _. - Avoid splitting up sentences. - * jv-scan.c: Include "intl.h". - (fatal_error, warning): Change parameter s to msgid. Translate - messages. - (main): Call gcc_init_libintl. - (usage, help, version): Mark error, usage and version messages for - translation with _. Avoid splitting up sentences. - * jvgenmain.c: Include "intl.h". - (main): Call gcc_init_libintl. - (usage, main): Mark error messages for translation with _. - * Make-lang.in (GCJH_OBJS, JVSCAN_OBJS, JCFDUMP_OBJS, - JVGENMAIN_OBJS): Add intl.o. - (java/jcf-dump.o, java/gjavah.o, java/jv-scan.o, - java/jvgenmain.o): Update dependencies. - -2004-02-08 Per Bothner - - * parse.y (resolve_qualified_expression_name): In case of inaccessible - class don't use not_accessible_field_error, which can get confused. - -2004-02-05 Kelley Cook - - Make-lang.in (po-generated): Delete. - -2004-02-05 Kazu Hirata - - * Make-lang.in (java/decl.o, java/expr.o, java/parse.o): - Depend on target.h. - * decl.c: Include target.h. - (start_java_method): Replace PROMOTE_PROTOTYPES with - targetm.calls.promote_prototypes. - * expr.c: Include target.h. - (pop_arguments): Replace PROMOTE_PROTOTYPES with - targetm.calls.promote_prototypes. - * parse.y: Include target.h. - (start_complete_expand_method): Replace PROMOTE_PROTOTYPES - with targetm.calls.promote_prototypes. - -2004-02-04 Kazu Hirata - - * typeck.c: Update copyright. - -2004-02-02 Tom Tromey - - * decl.c (java_init_decl_processing): Remove duplicate - gnu/gcj/RawData. - -2004-01-30 Kelley Cook - - * Make-lang.in (doc/gcj.dvi): Use $(abs_docdir). - -2004-01-28 Andrew Pinski - - * expr.c (build_field_ref): Move variable - definition up. - -2004-01-28 Andrew Haley - - * expr.c (build_field_ref): Widen field offset. - -2004-01-27 Andrew Haley - - java/13273 - * parse.y (check_interface_throws_clauses): Make sure class_decl - has been loaded. - -2004-01-22 Jeff Sturm - - PR java/13733 - * parse.y (patch_assignment): Don't modify lhs_type for - reference assignments. - -2004-01-20 Kelley Cook - - * Make-lang.in: Replace $(docdir) with doc. - (java.info, java.srcinfo, java.man, java.srcman): New rules. - (java.install-man): Revamp rule. - -2004-01-20 Kelley Cook - - * Make-lang.in (JAVA_INSTALL_NAME, JAVA_TARGET_INSTALL_NAME, - GCJH_TARGET_INSTALL_NAME): Define via a immediate $(shell) - instead of deferred backquote. - -2004-01-16 Andrew Pinski - - * typeck.c (find_method_in_interfaces): Move variable - definition up. - -2004-01-16 Andrew Haley - - PR java/13273: - * typeck.c (shallow_find_method): New. - (find_method_in_superclasses): New. - (find_method_in_interfaces): New. - (lookup_do): Rewrite. - * java-tree.h (SEARCH_ONLY_INTERFACE): Delete. - - * jcf-parse.c (read_class): Save and restore output_class. - * decl.c (java_expand_body): Set output_class from fndecl. - -2004-01-15 Michael Chastain - - * class.c (gen_indirect_dispatch_tables): Fix string length - calculations. - -2004-01-15 Kelley Cook - - * Make-lang.in (parse.c, parse-scan.c): Always build in doc directory. - (java.srcextra): Copy above back to source directory if requested. - (po-generated): Delete reference to $(parsedir). - (java/parse.o, java/parse-scan.o): Delete reference to $(parsedir). - Use implicit rule. - -2004-01-14 Jan Hubicka - - * lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost - estimation. - -2004-01-09 Mark Mitchell - - * java-tree.h (java_expand_expr): Change prototype. - * expr.c (java_expand_expr): Add alt_rtl parameter. - -2004-01-09 Andrew Haley - - PR java/12755: - * parse.y (java_fix_constructors): Set output_class. - (java_reorder_fields): Likewise. - (java_layout_classes): Likewise. - (java_expand_classes): Generate indirect dispatch tables. - (java_expand_classes): Set output_class. - (java_finish_classes): Likewise. - * lang.c (java_init): Turn on always_initialize_class_p if we're - using indirect dis[atch. - (java_decl_ok_for_sibcall): Use output_class, not current_class. - (java_get_callee_fndecl): Use class local atable. - * jcf-parse.c - (always_initialize_class_p): Decl moved to java-tree.h. - (HANDLE_CLASS_INFO): Set output_class. - (read_class): Likewise. - (parse_class_file): Call gen_indirect_dispatch_tables. - (parse_zip_file_entries): Set output_class. - (java_parse_file): Set output_class. Don't emit symbol tables. - * java-tree.h (output_class): New. - Remove global declarations for otable, atable, and ctable. - (always_initialize_class_p): moved here from decl.c. - (DECL_OWNER): New. - (TYPE_ATABLE_METHODS, TYPE_ATABLE_SYMS_DECL, TYPE_ATABLE_DECL, - TYPE_OTABLE_METHODS, TYPE_OTABLE_SYMS_DECL, TYPE_OTABLE_DECL, - TYPE_CTABLE_DECL, TYPE_CATCH_CLASSES): New. - (struct lang_type): Add otable_methods, otable_decl, - otable_syms_decl, atable_methods, atable_decl, atable_syms_decl, - ctable_decl, catch_classes, type_to_runtime_map. - * expr.c (build_field_ref): Make otable, atable, and ctable class - local rather than global. - (build_known_method_ref): Likewise. - (build_invokeinterface): Likewise. - (java_expand_expr): Pass runtime type (rather than actual type) to - expand_start_catch. - * except.c (prepare_eh_table_type): Create TYPE_TO_RUNTIME_MAP for - this class. Look up each class in that map to delete duplicates. - (expand_end_java_handler): Pass runtime type (rather than actual - type) to expand_start_catch. - * decl.c: (always_initialize_class_p): Decl moved to java-tree.h. - (do_nothing): New. - (java_init_decl_processing): Rearrange things. Remove global - declarations of otable, atable, and ctable. - (java_init_decl_processing): Make lang_eh_runtime_type do_nothing. - (java_expand_body): Set output_class. - * constants.c (build_constant_data_ref): Use output_class, not - current_class. - (alloc_name_constant): Likewise. - * class.c (gen_indirect_dispatch_tables): New. - (build_class_ref): Generate hard reference to superclass, even if - using indirect dispatch. - (build_static_field_ref): Use class local atable. - (make_class_data): Generate hard reference to superclass, even if - using indirect dispatch. - Generate symbolic references to interfaces when using indirect - dispatch. - (make_class_data): Emit otable, atable, and ctable. - Make otable, atable, and ctable class local rather than global. - (emit_catch_table): Make otable, atable, and ctable class local - rather than global. - -2003-12-25 Andrew Pinski - - * parse.y (catch_clause_parameter): Fix typo. - - PR java/13404 - * parse.y: (catch_clause_parameter): Return early if $3, aka - formal_parameter, is null. - -2003-12-20 Kazu Hirata - - * class.c: Remove uses of "register" specifier in - declarations of arguments and local variables. - * decl.c: Likewise. - * expr.c: Likewise. - * gjavah.c: Likewise. - * jcf-dump.c: Likewise. - * jcf-io.c: Likewise. - * jcf-parse.c: Likewise. - * jcf-write.c: Likewise. - * keyword.h: Likewise. - * parse.y: Likewise. - * typeck.c: Likewise. - * verify.c: Likewise. - -2003-12-06 Kelley Cook - - * Make-lang.in (GCJ_CROSS_NAME): Delete. - (java.install_common, java.install-man): Adjust for above. - (java.uninstall): Likewise. - -2003-12-03 Michael Koch - - * class.c (make_class_data): - Push field value to 'hack_signers' instead of 'signers'. - * decl.c (java_init_decl_processing): - Push field 'hack_signers' instead of 'signers'. - -2003-12-03 Zack Weinberg - - * lex.h: Check both HAVE_ICONV and HAVE_ICONV_H before - including iconv.h. - -2003-12-03 Ralph Loader - - PR java/12374: - * parse.y (qualify_ambiguous_name): Remove lots of broken - field access processing - there's no need to do that here, - because we have resolve_field_access. Remove - RESOLVE_EXPRESSION_NAME_P as it isn't used anywhere else. - * java-tree.h: Remove RESOLVE_EXPRESSION_NAME_P as it isn't - used. - -2003-12-01 Jeff Sturm - - Fix PR java/13237 - * parse.y (java_complete_lhs): Save location prior to patching - CALL_EXPR. - -2003-11-25 Mohan Embar - - PR java/12548 - * resource.c (write_resource_constructor): Append - "_resource" to constructor identifier name. - -2003-11-25 Jeff Sturm - - Fix PR java/13183. - * constants.c (cpool_for_class): New function. - (outgoing_cpool): Remove global variable. - (alloc_name_constant): Use cpool_for_class. - (build_constants_constructor): Likewise. - * decl.c (java_expand_body): Set current_class. - * java-tree.h (outgoing_cpool) Remove declaration. - (init_outgoing_cpool): Likewise. - * jcf-parse.c (init_outgoing_cpool): Remove function. - (parse_class_file): Don't call init_outgoing_cpool. - * parse.y (java_complete_expand_methods): Don't call - init_outgoing_cpool. Don't save outgoing_cpool. - (java_expand_classes): Don't restore outgoing_cpool. - (java_finish_classes): Likewise. - -2003-11-24 Mohan Embar - - * Make-lang.in: (java.install-common) Add - symlink for $(target_noncanonical)-gcjh for - native builds. - -2003-11-20 Joseph S. Myers - - * Make-lang.in (java.extraclean): Delete. - -2003-11-20 Joseph S. Myers - - * Make-lang.in (check-java): Add. - -2003-11-19 Jeff Sturm - - Fix PR java/13024. - * except.c (prepare_eh_table_type): Allocate variable-sized - buffer `buf' with alloca. - -2003-11-17 Jeff Sturm - - Fix PR java/12857. - - decl.c (java_init_decl_processing): Don't initialize - class_not_found_type_node, no_class_def_found_type_node. - - java-tree.h (JTI_CLASS_NOT_FOUND_TYPE_NODE, - JTI_NO_CLASS_DEF_FOUND_TYPE_NODE): Remove from java_tree_index. - (class_not_found_type_node, no_class_def_found_type_node): - Don't define. - - parse.y (build_dot_class_method_invocation): Add this_class - argument. Qualify method invocations to a different class. - (create_new_parser_context): Initialize saved_data_ctx to 0. - (java_parser_context_save_global): Initialize saved_data_ctx to 1. - (build_dot_class_method): Don't load classes. Register - incomplete types. - (build_incomplete_class_ref): Special cases for interfaces - and inner classes. Move build_dot_class_method call to here... - (patch_incomplete_class_ref): ...from here. Pass current_class - to build_dot_class_method_invocation. - (build_assertion): Pass class_type to - build_dot_class_method_invocation. - (encapsulate_with_try_catch): Handle EXPR_WITH_FILE_LOCATION node. - -2003-11-17 Jeff Sturm - - Fix PR java/12739. - * java-tree.h (BLOCK_EMPTY_P): Define. - * parse.y (java_complete_lhs): Check for empty blocks - in TRY_FINALLY_EXPR case. - -2003-11-17 Andrew Haley - - * java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New. - (struct lang_decl_var:freed): New variable. - * decl.c (poplevel): Mark local vars that have gone out of scope. - (push_jvm_slot): Don't use the RTL of a var that has gone out of - scope. - -2003-11-16 Jason Merrill - - * Make-lang.in (java.tags): Create TAGS.sub files in each directory - and TAGS files that include them for each front end. - -2003-11-15 Tom Tromey - - * gjavah.c (print_stub_or_jni): Pass `env' to FatalError. - -2003-11-12 Jason Merrill - - PR optimization/12547 - * lang.c (java_tree_inlining_walk_subtrees): Just walk - BLOCK_EXPR_BODY directly. - -2003-11-12 Andrew Haley - - PR java/11045 - * parse.y (fold_constant_for_init): Check that we really do have a - constant. - - PR java/11533 - * lang.c (merge_init_test_initialization): Clear DECL_INITIAL for - init_test_decls being inlined. - - PR java/12890: - * parse.y (do_resolve_class): Check return value from - breakdown_qualified(). - -2003-11-11 Tom Tromey - - PR java/12915: - * parse.y (merge_string_cste): Handle case where we have a - pointer that happens to be zero, not null_pointer_node. - -2003-11-10 Tom Tromey - - * jcf-parse.c (classify_zip_file): Correctly compare - filename_length against length of manifest file's name. - -2003-11-08 Tom Tromey - - PR java/12894: - * jcf-parse.c (classify_zip_file): Only skip MANIFEST.MF file. - -2003-11-06 Andrew Haley - - * expr.c (java_stack_swap): Make sure destination stack slots are - of the correct type. - -2003-11-03 Kelley Cook - - * Make-lang.in (dvi): Move targets to $(docobjdir). - (gcj.dvi): Simplify rule and adjust target. - (gcj.info): Simplify rule. - (gcj.pod): New intermediate rule. - (gcjh.pod): Likewise. - (jv-scan.pod): Likewise. - (jcf-dump.pod): Likewise. - (gij.pod): Likewise. - (jv-convert.pod): Likewise. - (rmic.pod): Likewise. - (rmiregistry.pod): Likewise. - (gcj.1): Delete. - (gcjh.1): Delete. - (jv-scan.1): Delete. - (jcf-dump.1): Delete. - (gij.1): Delete. - (jv-convert.1): Delete. - (rmic.1): Delete. - (rmiregistry.1): Delete. - -2003-11-02 Jeff Sturm - - Fixes PR java/12866. - * parse.y (resolve_qualified_expression_name): Move test - for outer field access methods from here... - (check_thrown_exceptions) ...to here. - -2003-11-01 Kelley Cook - - * .cvsignore: Delete. - -2003-10-28 Frank Ch. Eigler - - * verify.c (verify_jvm_instructions): Don't warn about legal - eh binding regions generated for example by jdk 1.4.1. - -2003-10-24 David S. Miller - - * jcf-parse.c (jcf_parse): Fix args to fatal_error(). - -2003-10-22 Andrew Haley - - * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New. - (java_get_callee_fndecl): New. - - * jcf-parse.c (java_parse_file): Call emit_catch_table(). - - * java-tree.h (ctable_decl): New. - (catch_classes): New. - (java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES. - - * decl.c (java_init_decl_processing): Add catch_class_type. - Add ctable_decl. - Add catch_classes field. - - * class.c (build_indirect_class_ref): Break out from - build_class_ref. - (make_field_value): Check flag_indirect_dispatch. - (make_class_data): Ditto. - Tidy uses of PUSH_FIELD_VALUE. - Add field catch_classes. - (make_catch_class_record): New. - - * java-tree.h (PUSH_FIELD_VALUE): Tidy. - -2003-10-22 Kazu Hirata - - * jcf-write.c: Follow spelling conventions. - * parse.y: Likewise. - -2003-10-22 Kazu Hirata - - * ChangeLog: Fix typos. - * expr.c: Fix comment typos. - * jcf-write.c: Likewise. - * lang.c: Likewise. - * lex.c: Likewise. - * mangle.c: Likewise. - * parse-scan.y: Likewise. - * parse.y: Likewise. - -2003-10-22 Tom Tromey - - * expr.c (expand_byte_code): Only warn about dead bytecode when - extra_warnings is set. - -2003-10-22 Bryce McKinlay - - Fix for PR java/12586. - * mangle.c (find_compression_record_match): Don't iterate through - package namespace elements unless they all match compression_table - entries. - -2003-10-20 Kelley Cook - - * Make-lang.in (info): Honor $(parsedir) and $(docobjdir). - (generate-manpages): Likewise. - (java.maintainer-clean): Likewise. - (gcj.info): Likewise. - (gcj.1): Likewise. - (gcjh.1): Likewise. - (jv-scan.1): Likewise. - (jcf-dump.1): Likewise. - (gij.1): Likewise. - (jv-convert.1): Likewise. - (rmic.1): Likewise. - (rmiregistry.1): Likewise. - (java.install-man): Likewise. - (parse-scan.o): Move and define complete compile line. - (parse.o): Likewise. - (jcf-tree-inline.o): Move. - -2003-10-20 Mark Mitchell - - * Make-lang.in (info): Update dependencies. - (java.install-info): Remove. - ($(srcdir)/java/gcj.info): Replace with ... - ($(docobjdir)/gcj.info): ... this. - -2003-10-14 Nathanael Nerode - - * Make-lang.in: Replace uses of $(target_alias) with - $(target_noncanonical). - -2003-10-09 Tom Tromey - - * decl.c (java_init_decl_processing): Declare signers field. - * class.c (make_class_data): Set signers field. - -2003-10-09 Jason Merrill - - * parse.y (patch_assignment): Use make_node to create a BLOCK. - * parse.h (BUILD_PTR_FROM_NAME): Use make_node to create a - POINTER_TYPE. - -2003-10-06 Mark Mitchell - - * Make-lang.in (java.info): Replace with ... - (info): ... this. - (java.dvi): Replace with ... - (dvi): ... this. - (java.generated-manpages): Replace with ... - -2003-10-03 Kelley Cook - - * builtins.c, jcf.h, jvspec.c: Remove PARAMS macros. - -2003-10-01 Andrew Haley - - * jcf-parse.c (java_parse_file): Write otable and atable. - * java-tree.h (atable_methods): New. - (atable_decl): New. - (atable_syms_decl): New. - (enum java_tree_index): Add JTI_ATABLE_METHODS, JTI_ATABLE_DECL, - JTI_ATABLE_SYMS_DECL. Rename JTI_METHOD_SYMBOL* to JTI_SYMBOL*. - (symbol_*type): Rename method_symbol* to symbol*type. - (emit_offset_symbol_table): Delete. - (emit_symbol_table): New. - (get_symbol_table_index): New. - (atable_type): New. - * expr.c (build_field_ref): Handle flag_indirect_dispatch. - (build_known_method_ref): Likewise. - (get_symbol_table_index): Rename from get_offset_table_index. - Parameterize to allow re-use by differing types of symbol table. - (build_invokevirtual): Pass table to get_offset_table_index. - * decl.c (java_init_decl_processing): Push types and decls for - atable and atable_syyms. - * class.c (build_static_field_ref): Handle flag_indirect_dispatch. - (make_class_data): Add new fields atable and atable_syms. - (emit_symbol_table): Rename from emit_offset_symbol_table. - Parameterize to allow re-use by different types of symbol table. - (build_symbol_entry): Renamed from build_method_symbols_entry. - -2003-09-30 Roger Sayle - - * jcf-write.c (generate_bytecode_insns): Implement evaluate-once - semantics for SAVE_EXPR, by caching the result in a temporary. - -2003-09-28 Richard Henderson - - * check-init.c (check_init): Save and restore input_location - instead of file and line separately. - * decl.c (java_expand_body): Likewise. - * jcf-write.c (generate_bytecode_insns): Likewise. - * parse.y (safe_layout_class): Likewise. - * jcf-parse.c (read_class, parse_class_file): Likewise. - (java_parse_file): Use %H for warning locator. - -2003-09-28 Roger Sayle - - * expr.c (java_check_reference): Use the semantics of COND_EXPRs - with void-type branches instead of using a COMPOUND_EXPR. - -2003-09-28 Jeff Sturm - - * decl.c (java_optimize_inline, dump_function): Remove. - * java-tree.h (java_optimize_inline): Remove declaration. - * jcf-parse.c (java_parse_file): Assume flag_unit_at_a_time is set. - * parse.y (source_end_java_method, java_expand_classes): - Likewise. Remove dead code. - -2003-09-27 Roger Sayle - - * lang.c (java_init_options): Set flag_evaluation_order. - * expr.c (force_evaluation_order): Don't attempt to force - evaluation order of binary operations using save_expr. - * parse.y (java_complete_lhs): No longer need to call - force_evaluation_order when constructing binary operators. - -2003-09-27 Alexandre Petit-Bianco - Bryce McKinlay - - PR java/1333: - * parse.y (not_accessible_field_error): New function. - (resolve_expression_name): Check field access permissions. - (resolve_qualified_expression_name): Use - not_accessible_field_error. - (resolve_qualified_expression_name): Likewise. - -2003-09-24 Rainer Orth - - * class.c (build_utf8_ref): Test for HAVE_GAS_SHF_MERGE value. - -2003-09-23 Roger Sayle - - * jcf-write.c (generate_bytecode_insns): Optimize binary operations - with equal operands without side-effects. - -2003-09-22 Jeff Sturm - - * decl.c (java_init_decl_processing): Don't emit otable decls - if flag_indirect_dispatch is not set. - -2003-09-21 Richard Henderson - - * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y, - resource.c: Revert. - -2003-09-21 Richard Henderson - - * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y, - resource.c: Update for DECL_SOURCE_LOCATION rename and change to const. - -2003-09-20 Richard Henderson - - * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics. - -2003-09-18 Roger Sayle - - * expr.c (java_truthvalue_conversion): Remove FFS_EXPR case. - * check-init.c (check_init): Likewise. - -2003-09-18 Roger Sayle - - * jcf-write.c (generate_bytecode_insns): Add support for fconst_2. - -2003-09-16 Andrew Haley - - * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR. - -2003-09-17 Ranjit Mathew - - Fixes PR java/9577 - * mangle.c (find_compression_record_match): Skip - over a "6JArray" (the array template mangled string) - IDENTIFIER_NODE. - (mangle_array_type): Correct minor typo. - (atms): Move definition to the beginning. - -2003-09-16 Bryce McKinlay - - * class.c (add_miranda_methods): Ensure super-interfaces are laid - out. Fix for PR java/12254. - -2003-09-11 Richard Henderson - - * parse.y (source_end_java_method): Update for new - cgraph_finalize_function argument. - -2003-09-09 Richard Henderson - - * parse.y (source_end_java_method): Update call to - cgraph_finalize_function. - -2003-09-03 Jeff Sturm - - * decl.c (java_expand_body): New function. - * expr.c (build_class_init): Set DECL_IGNORED_P. - * java-tree.h (start_complete_expand_method, - java_expand_body): Declare. - * jcf-parse.c (cgraph.h): Include. - (java_parse_file): Handle flag_unit_at_a_time. - * lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING, - LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define. - (java_estimate_num_insns): Use walk_tree_without_duplicates. - (java_start_inlining): New function. - * parse.h (java_finish_classes): Declare. - * parse.y: Include cgraph.h. - (block): Don't special-case empty block production. - (craft_constructor): Set DECL_INLINE. - (source_end_java_method): Handle flag_unit_at_a_time. - Replace inline code with call to java_expand_body. - (start_complete_expand_method): Remove static modifier. - (java_expand_method_bodies): Patch function tree for - class initialization and/or synchronization as needed. - Don't begin RTL expansion yet. - (java_expand_classes): Check flag_unit_at_a_time before - calling finish_class. - (java_finish_classes): New function. - (java_complete_lhs): Ensure COMPOUND_EXPR has non-NULL type. - (patch_assignment): Set DECL_CONTEXT on temporary variable. - (emit_test_initialization): Set DECL_IGNORED_P. - -2003-09-03 Roger Sayle - - * builtins.c (enum builtin_type): Delete unused enumeration. - * Make-lang.in (java/builtins.o): Remove built-types.def dependency. - -2003-08-28 Tom Tromey - - * gcj.texi (Extensions): Document gcjlib URLs. - -2003-08-20 Tom Tromey - - * gcj.texi (Extensions): Added xref. - (libgcj Runtime Properties): Document - gnu.gcj.runtime.VMClassLoader.library_control. - -2003-08-20 Andrew Haley - - * except.c (prepare_eh_table_type): Use new encoding for exception - handlers when using -fno-assume-compiled. - -2003-08-13 Tom Tromey - - * gcj.texi (Invoking gij): Document -X and -?. - -2003-08-13 Mohan Embar - - * Make-lang.in: Added missing win32-host.o to JAVA_OBJS, - GCJH_OBJS, JCFDUMP_OBJS - * win32-host.c: Removed the unnecessary and broken dependency - on jcf.h - -2003-08-11 Tom Tromey - - * parse.y (java_check_regular_methods): Typo fixes. Call - check_interface_throws_clauses. Use - check_concrete_throws_clauses. - (check_interface_throws_clauses): New function. - (check_concrete_throws_clauses): New function. - (hack_is_accessible_p): New function. - (find_most_specific_methods_list): Added FIXME. - * typeck.c (lookup_do): Use `flags' argument to decide what to - do. Reimplemented. - (lookup_argument_method_generic): New function. - (lookup_argument_method2): Removed. - * jcf.h (ACC_INVISIBLE): New define. - * jcf-write.c (generate_classfile): Skip invisible methods. - * class.c (add_miranda_methods): New function. - (layout_class_methods): Use it. - (get_access_flags_from_decl): Use ACC_INVISIBLE. - * java-tree.h (METHOD_INVISIBLE): New define. - (lang_decl_func) [invisible]: New field. - (lookup_argument_method_generic): Declare. - (SEARCH_INTERFACE): New define. - (SEARCH_SUPER): Likewise. - (SEARCH_ONLY_INTERFACE): Likewise. - (SEARCH_VISIBLE): Likewise. - (lookup_argument_method2): Removed declaration. - -2003-08-05 Tom Tromey - - Fix for PR java/11600: - * parse.y (java_complete_lhs): See whether we're calling a method - on an array. - (check_thrown_exceptions): Added `is_array_call' argument; - fixed `clone' checking; updated all callers. - -2003-08-05 Steven Bosscher - - * java-tree.h (DECL_ESTIMATED_INSNS): Remove (moved to tree.h). - -2003-08-03 Tom Tromey - - * java-tree.h (METHOD_TRANSIENT): Removed. - * decl.c (pushdecl): Removed some dead code. - * class.c (get_access_flags_from_decl): Can't have transient - method. - (add_method_1): Can't have a transient method. - -2003-07-28 Andreas Jaeger - - * jvspec.c: Convert to ISO C90 prototypes. - -2003-07-25 Nathan Sidwell - - * decl.c (force_poplevels): Fix warning call. - -2003-07-25 Gabriel Dos Reis - - * expr.c (expand_java_field_op): Don't use xxx_with_decl - (expand_java_field_op): Likewise. - * class.c (layout_class_method): Likewise - (emit_register_classes): Likewise. - * decl.c (pushdecl): Likewise. - (poplevel): Likewise. - (force_poplevels): Likewise. - (give_name_to_locals): Likewise. - * check-init.c (check_for_initialization): Likewise. - -2003-07-24 Jason Merrill - - * java-tree.h: Move boolean_type_node et al to the back end. - -2003-07-19 Kaveh R. Ghazi - - * class.c java-tree.h jcf-write.c jvspec.c: Remove unnecessary - casts. - -2003-07-19 Neil Booth - - * lang.opt: Don't show -MD_ and -MDD_. - -2003-07-18 Neil Booth - - * lang-options.h: Remove. - * lang.opt: Add help text. - -2003-07-15 Kazu Hirata - - * expr.c: Remove the last argument to expand_assignment(). - -2003-07-09 Jan Hubicka - - * java-tree.h (DECL_NUM_STMTS): Rename to... - (DECL_ESTIMATED_INSNS): ... this. - * lang.c (java_estimate_num_insns, java_estimate_num_insns_1): - New static functions. - (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define. - * parser.y (add_stmt_to_compound): Do not account statements. - -2003-07-08 Mark Wielaard - - * gcj.texi: CNI now expands to Compiled Native Interface. - -2003-07-08 Rainer Orth - - * Make-lang.in (java/gcj.dvi): Use PWD_COMMAND. - -2003-07-07 Nathan Sidwell - - * expr.c (expand_byte_code): Adjist emit_line_note call. - -2003-07-06 Neil Booth - - * lang.c (java_handle_option): Don't handle filenames. - -2003-07-02 Zack Weinberg - - * jcf-path.c: Don't default-define PATH_SEPARATOR nor - DIR_SEPARATOR. - Use FILENAME_CMP. - * jcf-write.c: Don't default-define DIR_SEPARATOR. - * jcf.h: Delete COMPARE_FILENAMES definition. - -2003-07-02 Neil Booth - - * lang.c (java_init_options): Update prototype. - -2003-07-01 Nathan Sidwell - - * decl.c (poplevel): Adjust define_label call. - -2003-06-27 Zack Weinberg - - * gjavah.c (flag_jni): Make non-static. - * parse-scan.y (ctxp): Make non-static. - - * class.c (build_method_symbols_entry) - * expr.c (get_offset_table_index) - * jcf-parse.c (jcf_parse): - Mark the definition static, matching the forward declaration. - -2003-06-26 Neil Booth - - * lang.c (java_handle_option): Don't check for missing arguments. - -2003-06-20 Nathan Sidwell - - * class.c (push_class): Use a location_t to save place. - (emit_register_classes): Set input_location. Adjust - expand_function_end call. - * resource.c (write_resource_constructor): Likewise. - * decl.c (end_java_method): Adjust expand_function_end call. - * parse.y (source_end_java_method): Likewise. - -2003-06-17 Robert Abeles - - * lang.c (java_handle_option): Likewise. - -2003-06-16 Neil Booth - - * lang.c (java_handle_option): Special-casing of optional - joined arguments no longer needed. - * lang.opt: Update switches that take optional argument. - -2003-06-15 Neil Booth - - * lang.opt: Declare Java. - * lang.c (java_init_options): Update. - -2003-06-15 Neil Booth - - * lang.c (version_flag): Rename to v_flag to avoid clash w/ toplev.h. - -2003-06-14 Neil Booth - - * lang-specs.h: Rewrite -MD and -MMD to append an underscore. - * lang.c (java_handle_option): -MD and -MMD have an underscore. - * lang.opt: -MD and -MMD have an underscore. - -2003-06-14 Nathan Sidwell - - * class.c (emit_register_classes): Adjust init_function_start - call. - * decl.c (complete_start_java_method): Likewise. - * resource.c (write_resource_constructor): Likewise. - -2003-06-14 Neil Booth - - * Make-lang.in: Update to use options.c and options.h. - * lang.c: Include options.h not j-options.h. - (java_handle_option): Abort on unrecognized option. - (java_init_options): Request Java switches. - -2003-06-11 Neil Booth - - * Make-lang.in: Handle mostlyclean. - -2003-06-11 Tom Tromey - - * lang.c (java_handle_option): Update dependency_tracking for - OPT_MF case. - - * lang.c (java_handle_option): OPT_fbootclasspath_ can take an - empty argument. - -2003-06-10 Andrew Haley - - * resource.c (write_resource_constructor): Use expand_expr to - generate the address of the label attached to a resource. - * Make-lang.in (java/resource.o): Add expr.h - -2003-06-10 Andrew Haley - - * lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New. - (java_decl_ok_for_sibcall): New. - -2003-06-09 Neil Booth - - * Make-lang.in (JAVA_OBJS, java/lang.o): Update. - (java/j-options.c, java/j-options.h): New. - * java-tree.h (resource_name, compile_resource_file, - compile_resource_data): Constify. - * jcf-write.c (jcf_write_base_directory): Similarly. - * jcf.h (jcf_write_base_directory): Similarly. - * lang.c: Include j-options.h. - (cl_options_count, cl_options, string_option, java_decode_option, - lang_f_options, lang_W_options, LANG_HOOKS_DECODE_OPTION, - process_option_with_no): Remove. - (resource_name): Constify. - (LANG_HOOKS_HANDLE_OPTION): Override. - (java_handle_option): New. - (java_init): Don't call jcf_path_init. - (java_init_options): Call jcf_path_init. - * lang.opt: New. - * resource.c (compile_resource_data, compile_resource_file): Constify. - -2003-06-09 Nathan Sidwell - - * java-tree.h (DECL_FUNCTION_LAST_LINE): New. - (struct lang_decl_func): Add last_line field. - * parse.h (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST, - DECL_SOURCE_LINE_LAST): Remove. - * parse.y (missing_return_error, finish_method_declaration, - lookup_cl, start_artificial_method_body, source_end_java_method, - start_complete_expand_method): Adjust. - -2003-06-08 Tom Tromey - - * jvspec.c (jvgenmain_spec): Added `*' after fassume-compiled and - fno-assume-compiled. - -2003-06-08 Roger Sayle - - * builtins.c (define_builtin_type, builtin_types): Delete. - (define_builtin): Rewritten to take just the built-in code, - the function's name, type and fallback library function name. - All built-ins used by Java are implicit and BUILT_IN_NORMAL. - (initialize_builtins): Overhaul to define the GCC builtins - used by gcj manually, providing the Java run-time's - implementations as the fallback library function. - -2003-06-08 Anthony Green - - * parse.y (patch_cast): Fix conversions from floating-point to - integral types. - -2003-06-08 Neil Booth - - * Make-lang.in: Update. - * lang.c: Include opts.h. Define cl_options_count and cl_options. - -2003-06-07 Neil Booth - - * lang.c (java_init_options): Update. - -2003-06-05 Jan Hubicka - - * Make-lang.in: Add support for stageprofile and stagefeedback - -2003-05-31 Roger Sayle - - * lang.c (java_init_options): Prescribe wrap-around two's - complement arithmetic overflow by setting flag_wrapv. - -2003-05-29 Roger Sayle - - * builtins.c (cos_builtin, sin_builtin, sqrt_builtin): Delete. - (builtin_record): Add an additional builtin_code field to - record which GCC built-in corresponds to the Java function. - (java_builtins): Add new entries for atan, atan2, exp, log, - pow and tan. - (max_builtin, min_builtin, abs_builtin): Perform constant - folding on the resulting tree. - (java_build_function_call_expr): Likewise, perform constant - folding on the resulting tree. - (initialize_builtins): The NULL creators are now allowed in - the java_builtins table, which is now terminated by an entry - with builtin_code == END_BUILTINS. - (check_for_builtin): Likewise. If the matching creator is - NULL, construct the call using java_build_function_call_expr - directly with the decl for the corresponding builtin_code. - -2003-05-23 Nathanael Nerode - - * win32-host.c: Normalize copyright boilerplate. - -2003-05-16 Kaveh R. Ghazi - - * parse.y (print_int_node): Use string concatentation on - HOST_WIDE_INT_PRINT_* format specifier to collapse multiple - function calls into one. - -2003-05-13 Zack Weinberg - - * jcf-parse.c, jcf-write.c, lex.c: Replace all calls to - fatal_io_error with calls to fatal_error; add ": %m" to the end of - all the affected error messages. - -2003-05-13 Richard Henderson - - * class.c (layout_class_method): Set DECL_EXTERNAL. - * decl.c (java_mark_decl_local, java_mark_class_local): New. - * java-tree.h (java_mark_class_local): Declare. - * jcf-parse.c (parse_class_file): Use it. - * parse.y (java_expand_classes): Likewise. - -2003-05-04 Nathan Sidwell - - * Make-lang.in (java/parse.o, java/parse-scan.o): Depend on input.h. - * lex.h: #include input.h. - * jv-scan.c (input_filename): Remove. - -2003-05-02 Tom Tromey - - PR java/10491: - * gjavah.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. - (handle_inner_classes): New function. - -2003-05-01 Tom Tromey - - PR java/10459: - * parse.y (finish_for_loop): Do nothing if update expression is a - EXPR_WFL_NODE wrapping nothing. - (java_complete_lhs) : Likewise. - -2003-05-02 Nathan Sidwell - - * lex.h (input_lineno): Remove declaration. - * parse-scan.y: #include input.h. - (input_filename): Remove declaration. - (input_location): Add definition. - (input_line): Remove definition. - -2003-05-01 Nathan Sidwell - - * lex.h (lineno): Rename to ... - (input_line): ... here - * parse-scan.y (lineno): Rename to ... - (input_line): ... here. - (reset_report): Rename lineno to input_line. - * check-init.c (check_init): Likewise. - * class.c (push_class): Likewise. - * decl.c (complete_start_java_method, end_java_method): Likewise. - * expr.c (expand_byte_code): Likewise. - * jcf-parse.c (give_name_to_class, parse_class_file): Likewise. - * jcf-write.c (generate_bytecode_insns): Likewise. - * lex.c (java_init_lex, java_allocate_new_line, - do_java_lex): Likewise. - * parse.h (YYNOT_TWICE): Likewise. - * parse.y (empty_statement, expression_statement, - java_pop_parser_context, java_parser_context_save_global, - yyerror, register_fields, method_header, safe_layout_class, - find_in_imports_on_demand, create_artificial_method, - source_end_java_method, start_complete_expand_method, - build_thisn_assign, java_complete_lhs, - maybe_absorb_scoping_block): Likewise. - -2003-04-20 Mohan Embar - - * jcf-io.c (find_class): use DIR_SEPARATOR instead of - '/' when computing java source filename - -2003-04-13 Tom Tromey - - * gjavah.c (print_c_decl): Indentation fix. - -2003-04-12 Zack Weinberg - - * class.c (make_field_value, make_method_value, get_dispatch_table) - (make_class_data, emit_offset_symbol_table) - * constants.c (build_constants_constructor) - * java-tree.h (START_RECORD_CONSTRUCTOR) - * parse.y (maybe_build_array_element_wfl): - Use build_constructor. - -2003-04-10 Eric Blake - - PR java/10253: - * parse.y (string_convert_int_cst): Always use at least one digit - in string conversion. Remove ASCII dependence. - (merge_string_cste): Fix merging of 3-byte UTF-8 characters. - -2003-03-16 Mohan Embar - - * Make-lang.in: added win32-host.c - * jcf.h: defined macro JCF_OPEN_EXACT_CASE which - resolves to open() on non-Win32 platforms and - Win32-specific jcf_open_exact_case() on Win32 - * jcf-io.c (find_class): use JCF_OPEN_EXACT_CASE - when trying .java and .class files - * win32-host.c: added to repository. Defines - Win32-specific jcf_open_exact_case() - -2003-04-10 Andrew Haley - - * jcf-write.c (struct jcf_partial): num_jsrs: new field. - (maybe_free_localvar): Renamed from localvar_free. - Add new arg, really. - (generate_bytecode_insns): Set new variable, jsrs. - Only free local vars if no jsr insns have been emittted. - Call maybe_free_localvar, not localvar_free. - -2003-03-30 Joseph S. Myers - - * gcj.texi: Remove @ at start of file. - -2003-03-25 Tom Tromey - - * parse.y (create_interface): Call CHECK_DEPRECATED. - -2003-03-23 Zack Weinberg - - * Make-lang.in: Link jcf-dump against $(LDEXP_LIB). - -2003-03-21 Zack Weinberg - - * javaop.h (jfloat, jdouble): Make them structures mirroring - the bit fields of IEEE float and double respectively. - (JFLOAT_FINITE, JFLOAT_QNAN_MASK, JFLOAT_EXP_BIAS, - JDOUBLE_FINITE, JDOUBLE_QNAN_MASK, JDOUBLE_EXP_BIAS): New. - (union Word, union DWord): Delete. - (WORD_TO_FLOAT, WORDS_TO_DOUBLE): Update to match. - - * gjavah.c (java_float_finite, java_double_finite, F_NAN_MASK, - D_NAN_MASK): Delete. - (jni_print_float, jni_print_double): New. Generate - hexadecimal floating constants. - (print_field_info): Use jni_print_float/double. - - * jcf-dump.c: Include math.h. Use ldexp/frexp to assemble - finite floating point numbers for output; special case - non-finite floats. - -2003-03-19 Nathanael Nerode - - * lang.c (java_dump_tree): Change return type from 'int' to 'bool'. - Replace 0 and 1 with true and false in return statements. - -2003-03-19 Tom Tromey - - * lex.c (do_java_lex): Renamed from java_lex. - (java_lex): New function. - Include timevar.h. - -2003-03-13 Tom Tromey - - * parse.y (resolve_inner_class): Error if qualifier is a primitive - type. - -2003-03-04 Andrew Haley - - * gjavah.c (is_first_data_member): New global variable. - (print_c_decl): If it's the first data member, align it as the - superclass. - (process_file): Set is_first_data_member. - -2003-03-11 Tom Tromey - - * parse.y (resolve_field_access): Initialize class if field is - found in another static field. - * expr.c (build_class_init): Don't optimize out initialization of - implemented interface. - -2003-03-11 Andrew Haley - - * jcf-io.c (caching_stat): Initialize origsep to remove compiler - warning. - -2003-03-10 Ranjit Mathew - - * jcf-io.c (caching_stat): Account for both DIR_SEPARATOR - and DIR_SEPARATOR_2 for a target. - Correct minor typos. - - * jcf-write.c (make_class_file_name): Take both DIR_SEPARATOR - and DIR_SEPARATOR_2 for a target into account. - -2003-03-08 Neil Booth - - * lang.c (java_init): Update prototype, move code to java_post_options. - (java_post_options): Similarly. - -2003-03-05 Ranjit Mathew - - * jcf.h (COMPARE_FILENAMES): New macro similar to "strcmp" to - compare file name components depending on the case-sensitivity - or otherwise of the host file system. - - * jcf-path.c (add_entry): Use COMPARE_FILENAMES instead of - "strcmp" to compare file name components. - Use IS_DIR_SEPARATOR instead of comparing directly against - DIR_SEPARATOR. - (jcf_path_extdirs_arg): Use IS_DIR_SEPARATOR instead of - comparing directly against DIR_SEPARATOR. - -2003-03-04 Tom Tromey - - * Make-lang.in (java.tags): New target. - -2003-03-01 Roger Sayle - - * java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3. - (initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3. - -2003-03-01 Tom Tromey - - * parse.y (jdep_resolve_class): Only check deprecation if we found - a decl. - -2003-02-28 Tom Tromey - - PR java/9695: - * class.c (maybe_layout_super_class): Always pass a WFL to - do_resolve_class. - * parse.y (do_resolve_class): Updated comment to explain - parameters. - -2003-02-26 Tom Tromey - - * jcf-write.c (generate_classfile): Check whether class is - deprecated before writing attribute count. - -2003-02-25 Roger Sayle - - * java/decl.c (java_init_decl_processing): Get soft_fmod_node from - built_in_decls[BUILT_IN_FMOD] rather than define it ourselves. - -2003-02-23 Tom Tromey - - * lang-options.h: Added -Wdeprecated. - * gcj.texi (Warnings): Document -Wdeprecated. - * java-tree.h (flag_deprecated): Declare. - * lang.c (lang_W_options): Added deprecated. - (flag_deprecated): New global. - * chartables.h: Rebuilt. - * gen-table.pl (process_one): Look at whitespace. - (print_tables): Define LETTER_SPACE, LETTER_MASK. - * parse.h (CLEAR_DEPRECATED): New macro. - (CHECK_DEPRECATED_NO_RESET): New macro. - * jcf-parse.c (handle_deprecated): New function. - (HANDLE_DEPRECATED_ATTRIBUTE): New define. - * jcf-reader.c (get_attribute): Handle Deprecated attribute. - * parse.y (resolve_type_during_patch): Check deprecation. - (jdep_resolve_class): Likewise. - (process_imports): Likewise. - (resolve_expression_name): Likewise. - (check_deprecation): Strip arrays from decl. Check - flag_deprecated. - (patch_method_invocation): Also check the particular constructor - for deprecation. - (register_fields): Use CHECK_DEPRECATED_NO_RESET in loop. - * jcf-write.c (append_deprecated_attribute): New function. - (generate_classfile): Generate deprecated attribute when - appropriate. - * lex.c (java_parse_doc_section): Return type now void. Rewrote. - (java_lex) [case '*']: Simplify logic. - (java_start_char_p): Use LETTER_MASK. - (java_part_char_p): Likewise. - (java_space_char_p): New function. - -2003-02-20 Nathan Sidwell - - Change base class access representation. - * java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC. - (add_interface_do): Likewise. - -2003-02-12 Ranjit Mathew - - * decl.c (java_init_decl_processing): Change - soft_lookupjnimethod_node to reflect the change in - signature of _Jv_LookupJNIMethod in libjava/jni.cc - * expr.c (build_jni_stub): Calculate and pass the size - on the stack of the arguments to a JNI function. Use - new target macro MODIFY_JNI_METHOD_CALL to allow a - target to modify the call to a JNI method. - -2003-02-08 Roger Sayle - - * jcf-io.c (java_or_class_file): Use libiberty's lbasename - instead of basename to avoid compiler warnings on Tru64. - -2003-02-04 Joseph S. Myers - - * gcj.texi: Update to GFDL 1.2. - -2003-01-31 Andrew Haley - - * parse.y (java_expand_classes): Scan the whole class list looking - for access methods that haven't yet been expanded. - -2003-01-31 Adrian Bunk - - Fix for java/4269: - - * jv-scan.c: Use HAVE_LANGINFO_CODESET instead of HAVE_NL_LANGINFO - to fix bootstrap on sparc-unknown-netbsdelf1.5. - * jcf-parse.c: Likewise. - -2003-01-31 Mark Wielaard - - * gjavah.c (throwable_p): Allocate 1 more byte for string. - -2003-01-31 Nathan Sidwell - - * class.c (make_class): Use BINFO_ELTS. - (set_super_info): Likewse. - (add_interface_do): Likewise. - -2003-01-30 Tom Tromey - - * jcf-parse.c (read_class): Update identifier's class value if it - changed during parsing. - -2003-01-30 Loren James Rittle - - * Make-lang.in (po-generated): Find the targets in $(parsedir). - Propagate change to all other rules as required. - (java/parse-scan.o): Add explicit dependency on - $(parsedir)/java/parse-scan.c . - -2003-01-29 Tom Tromey - - * parse.y (patch_assignment): Only transform the rhs of an - assignment when compiling to native. - -2003-01-28 Tom Tromey - - * jcf-write.c (generate_bytecode_conditional): Typo fixes. - -2003-01-28 Tom Tromey - - * lex.c (java_lex): Don't include UEOF as part of token. - (java_read_unicode): Error if \u sequence prematurely terminated. - -2003-01-27 Tom Tromey - - * parse.y (java_check_regular_methods): Check for construct after - checking types in throws clause. - -2003-01-24 Tom Tromey - - * class.c (build_static_field_ref): Only a String or numeric field - can fold to a constant. - -2003-01-23 Tom Tromey - - * jcf-parse.c (parse_zip_file_entries): Overwrite trailing \0 of - file name in resource buffer. - -2003-01-23 Tom Tromey - - * expr.c (build_known_method_ref): Use method's context to find - method table index. - -2003-01-23 Tom Tromey - - * constants.c (set_constant_entry): Allocated cleared memory. - -2003-01-22 Tom Tromey - - * java-tree.h: Don't use PARAMS. - * resource.c: Add prototypes for all functions. - (write_resource_constructor): Use `const char *' to avoid - warning. - -2003-01-22 Nathanael Nerode - - * jcf-parse.c (process_zip_dir): Remove unused variable. - -2003-01-22 Tom Tromey - - * expr.c (build_invokeinterface): Abort if method's context is not - an interface. - -2003-01-22 Tom Tromey - - * gcj.texi (Input and output files): Mention non-class entries. - * decl.c (java_init_decl_processing): Call - init_resource_processing. - * java-tree.h (compile_resource_data, write_resource_constructor, - compile_resource_file, init_resource_processing): Declare. - * config-lang.in (gtfiles): Added resource.c. - * Make-lang.in (gt-java-resource.h): New target. - (JAVA_OBJS): Added resource.o. - (java/resource.o): New target. - * resource.c: New file. - * class.c (compile_resource_file): Moved to resource.c. - (registerResource_libfunc): Likewise. - (utf8_decl_list): Mark with GTY; now static. - * jcf-parse.c (classify_zip_file): New function. - (parse_zip_file_entries): Use it; compile .properties files. - (process_zip_dir): Use classify_zip_file and compute_class_name. - Don't write class name into zip directory. - (java_parse_file): Call write_resource_constructor. - (compute_class_name): New function. - * jcf-io.c (read_zip_member): Reindented. - -2003-01-21 Tom Tromey - - * class.c (supers_all_compiled): New function. - (make_class_data): Use it. - -2003-01-21 Tom Tromey - - * parse.y (method_header): Native method can't be strictfp. - No method can be transient or volatile. - -2003-01-21 Kaveh R. Ghazi - - Make-lang.in (jvspec.o-warn): Add -Wno-error. - -2003-01-18 Kazu Hirata - - * check-init.c: Fix comment typos. - * class.c: Likewise. - * constants.c: Likewise. - * decl.c: Likewise. - * except.c: Likewise. - * expr.c: Likewise. - * java-except.h: Likewise. - * java-tree.h: Likewise. - * javaop.h: Likewise. - * jcf-dump.c: Likewise. - * jcf-io.c: Likewise. - * jcf-parse.c: Likewise. - * jcf-write.c: Likewise. - * lang.c: Likewise. - * mangle.c: Likewise. - * typeck.c: Likewise. - * verify.c: Likewise. - -2003-01-18 Kaveh R. Ghazi - - * Make-lang.in (java/jcf-write.o): Depend on $(TM_P_H). - * jcf-write.c: Include "tm_p.h". - -2003-01-17 Kaveh R. Ghazi - - * jcf-io.c (caching_stat): Cast the 3rd arg of scandir to void*. - -2003-01-16 Kaveh R. Ghazi - - * builtins.c (java_build_function_call_expr): Renamed from - build_function_call_expr. All callers changed. - - * Make-lang.in (java/jcf-parse.o): Depend on $(TM_P_H). - * jcf-parse.c: Include tm_p.h. - - * jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned - warning. - -2003-01-14 Tom Tromey - - * class.c (make_class_data): Check that super is compiled before - building class reference to it. - -2003-01-14 Andrew Haley - - * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a - varargs function -- correct. - -2003-01-14 Andrew Haley - - * decl.c (java_init_decl_processing): Temporarily back out previous patch. - -2003-01-14 Andrew Haley - - * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a - varargs function -- correct. - - * parse.y (patch_assignment): Copy the rhs of an assignment into a - temporary if the RHS is a reference. - -2003-01-11 Kaveh R. Ghazi - - * Make-lang.in (keyword.h): Pass "-L ANSI-C" to gperf. - * keyword.h: Regenerated. - - * All Files: Convert to ISO C style function definitions. - -2003-01-09 Nathanael Nerode - - * parse.y (check_pkg_class_access): ANSIfy definition. - -2003-01-09 Kaveh R. Ghazi - - * decl.c, parse-scan.y, parse.y: Don't cast return value of - xmalloc et al. - - * class.c, gjavah.c, parse.y, verify.c: Don't use PTR. - -2003-01-09 Geoffrey Keating - - Merge from pch-branch: - - 2002-12-02 Geoffrey Keating - - * Make-lang.in (java/gjavah.o): Update dependencies. - * gjavah.c: Include ggc.h. - - 2002-08-16 Geoffrey Keating - - * Make-lang.in (GCJH_OBJS): Add ggc-none.o. - (JCFDUMP_OBJS): Add ggc-none.o. - (java/jcf-dump.o): Depend on GGC_H. - * jcf-reader.c (jcf_parse_constant_pool): Use ggc_alloc to allocate - CPool substructures. - * jcf-parse.c (process_zip_dir): Use ggc_alloc to allocate JCFs. - * jcf-dump.c: Include ggc.h. - - 2002-08-08 Geoffrey Keating - - * jcf.h (union cpool_entry): New. - (struct CPool): Use gengtype to mark. Change field 'data' to be - an array of unions. - (struct JCF): Use gengtype to mark. - (CPOOL_UINT): Update for new cpool_entry type. - (CPOOL_USHORT1): Likewise. - (CPOOL_USHORT2): Likewise. - (CPOOL_FINISH): Use GC to free cpool subfields. - * parse.h (struct parser_ctxt): Mark field current_jcf. - * lex.c (java_init_lex): Use GC to allocate struct JCF. - * jcf-parse.c (HANDLE_CONSTANT_Utf8): Update for new cpool_entry type. - (main_jcf): Use gengtype to mark. - (ggc_mark_jcf): Delete. - (get_constant): Update for new cpool_entry type. - (give_name_to_class): Likewise. - (get_class_constant): Likewise. - (init_outgoing_cpool): Use GGC to allocate struct CPool. - (java_parse_file): Use GGC to allocate struct JCF. - (init_jcf_parse): Don't call ggc_add_root. - * jcf-reader.c (jcf_parse_constant_pool): Update for new - cpool_entry type. - * java-tree.h (current_jcf): Use gengtype to mark. - (CPOOL_UTF): Update for new cpool_entry type. - (outgoing_cpool): Use gengtype to mark. - (struct lang_type): GC struct JCF and struct CPool. - * config-lang.in (gtfiles): Add jcf.h. - * constants.c (find_tree_constant): New. - (set_constant_entry): Allocate cpool subfields using GGC. Update - for new cpool_entry type. - (find_constant1): Update for new cpool_entry type. - (find_constant2): Likewise. - (find_utf8_constant): Use find_tree_constant. - (find_class_or_string_constant): Remove unnecessary cast to jword. - Update for new cpool_entry type. - (count_constant_pool_bytes): Update for new cpool_entry type. - (write_constant_pool): Likewise. - (alloc_name_constant): Use find_tree_constant. - (build_constants_constructor): Update for new cpool_entry type. - - 2002-08-08 Geoffrey Keating - - * parse.y (mark_parser_ctxt): Delete. - (goal): Don't use ggc_add_root. - (create_new_parser_context): Use GC to allocate struct parser_ctxt. - (java_pop_parser_context): Let GC free parser_ctxt. - (java_parser_context_resume): Likewise. - * parse.h (struct parser_ctxt): Use gengtype to mark. - (ctxp): Likewise. - (ctxp_for_generation): Likewise. - * lex.h (struct java_lc_s): Mark for gengtype. - (java_lexer): Rearrange for gengtype. - * config-lang.in (gtfiles): Add lex.h, parse.h. - -2003-01-09 Kaveh R. Ghazi - - * All Files: Remove PARAMS macro. - - * expr.c, gjavah.c, javaop.h, jcf-dump.c, jcf-io.c, jcf-reader.c, - jcf-write.c, jcf.h, jv-scan.c: Don't rely on the `DEFUN', `AND' or - `__STDC__' macros. - - * jv-scan.c, parse.y: Remove VPARAMS, VA_OPEN, VA_FIXEDARG and - VA_CLOSE. - -2003-01-09 Christian Cornelssen - - * Make-lang.in (java.install-common, java.uninstall, - java.install-info, java.install-man): Prepend $(DESTDIR) - to destination paths in all (un)installation commands. - (java.install-common): Rewrite $(LN) command to support - DESTDIR with "ln" as well as with "ln -s". - -2003-01-08 Nathanael Nerode - - * java-tree.h: Protect against multiple inclusion. - -2003-01-07 Tom Tromey - - * class.c (add_assume_compiled): Don't adjust parent if we're - already at the root of tree. - -2003-01-05 Kaveh R. Ghazi - - * lang.c (dump_compound_expr): Prototype. - -2003-01-03 Tom Tromey - - Fix for PR java/8712: - * expr.c (build_instanceof): Build an NE_EXPR, not a COND_EXPR, - when simply checking against `null'. - -2003-01-03 Tom Tromey - - * gcj.texi (Standard Properties): Document http.proxyHost and - http.proxyPort. - - * gcj.texi (GNU Classpath Properties): Document new properties. - -2003-01-02 Steven Bosscher - - * java/jcf-reader.c, java/jvgenmain.c, java/keyword.gperf, - java/lang-options.h, java/mangle.c, java/mangle_name.c, - java/xref.c, java/zextract.c,java/zipfile.h: Fix copyright years. - -2003-01-01 Steven Bosscher - - * Make-lang.in, boehm.c, buffer.c, - buffer.h, builtins.c, class.c, - config-lang.in, constants.c, - convert.h, decl.c, except.c, - expr.c, java-except.h, - java-tree.h, javaop.def, - jcf-parse.c, jcf-write.c, - jv-scan.c, jvgenmain.c, - jvspec.c, keyword.gperf, - keyword.h, lang-options.h, - lang-specs.h, lang.c, lex.c, - lex.h, mangle.c, mangle_name.c, - parse-scan.y, parse.h, parse.y, - typeck.c, verify.c, xref.c, - xref.h: Replace "GNU CC" with - "GCC" in the copyright header. - - * check-init.c, gjavah.c, javaop.h, - jcf-depend.c, jcf-dump.c, jcf-io.c, - jcf-path.c, jcf-reader.c, jcf.h, - zextract.c, zipfile.h: These files are - "part of GCC". Also say "GCC" not "GNU CC". - -2002-12-30 DJ Delorie - - * Make-lang.in: Protect against texi2pod/pod2man failing. - -2002-12-28 Joseph S. Myers - - * gcj.texi: Use @copying. - -2002-12-27 Mark Mitchell - - * gjavah.c (print_name_for_stub_or_jni): Adjust call to - print_cxx_classname. - (print_cxx_classname): Add add_scope parameter. - (print_class_decls): Do not emit a semicolon after the extern - "Java" block. - (process_file): Adjust calls to print_cxx_classname. - -2002-12-23 Joseph S. Myers - - * gcj.texi: Include Cover Texts in man page. - -2002-12-23 Jeff Sturm - - * class.c (build_static_field_ref): Check FIELD_FINAL. - - * constants.c (alloc_class_constant): Use TYPE_CPOOL_DATA_REF - instead of current_constant_pool_data_ref. - * java-tree.h (current_constant_pool_data_ref): Undefine. - (JTI_CURRENT_CONSTANT_POOL_DATA_REF): Remove. - * jcf-parse.c (init_outgoing_cpool): Don't initialize - current_constant_pool_data_ref. - - * except.c (prepare_eh_table_type ): Use DECL_NAME of class type, - not build_internal_class_name. - - * parse.y (patch_incomplete_class_ref): Always emit `class$' method. - Use it when class ref isn't certain to be compiled. - -2002-12-23 Joseph S. Myers - - * gcj.texi: Include gcc-common.texi. - * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on - $(srcdir)/doc/include/gcc-common.texi. - -2002-12-22 Anthony Green - - * gcj.texi (Limitations): Add note about org.xml.sax and - org.w3c.dom. - -2002-12-20 Tom Tromey - - * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case - where minimum case value is Integer.MIN_VALUE. - Fixes PR java/8955. - -2002-12-18 Andrew Haley - - * parse.y (patch_invoke): Force evaluation order when `check' is - set. For PR libgcj/8945. - -2002-12-16 Mark Mitchell - - * gcj.texi: Change version number to 3.4. - -2002-12-05 Ranjit Mathew - Andrew Haley - - * parse.y (source_end_java_method): Remove custom encoding of line - numbers for a function decl before passing it to the back end. - -2002-12-03 Andrew Haley - - * class.c (make_class_data): New field, "chain". - * decl.c (java_init_decl_processing): Likewise. - -2002-12-02 Tom Tromey - - For PR java/8740: - * parse.y (do_resolve_class): Handle qualified name via - recursion. - -2002-11-30 Zack Weinberg - - * boehm.c, buffer.c, builtins.c, check-init.c, class.c, - constants.c, decl.c, except.c, expr.c, gjavah.c, jcf-depend.c, - jcf-dump.c, jcf-io.c, jcf-parse.c, jcf-path.c, jcf-write.c, - jv-scan.c, jvgenmain.c, jvspec.c, lang.c, mangle.c, mangle_name.c, - parse-scan.y, parse.y, typeck.c, verify.c, xref.c, zextract.c: - Include coretypes.h and tm.h. - * Make-lang.in: Update dependencies. - -2002-11-27 Kaveh R. Ghazi - - * decl.c (java_init_decl_processing): Use `LL' on 64-bit constant. - -2002-11-25 Diego Novillo - - * jcf-reader.c: Don't expand JCF_readu4 inside the - expansion of JCF_SKIP. - -2002-11-25 Diego Novillo - - * jcf-reader.c: Don't expand JCF_readu4 inside the - expansion of JCF_SKIP. - -2002-11-22 Tom Tromey - - * parse.y (patch_binop): Cast right hand side of shift expression - to `int'. Fixes PR java/8676. - -2002-11-22 Ranjit Mathew - Andrew Haley - - * gcc/java/jcf-write.c (write_classfile): Remove target - class file, if it exists, before renaming the temporary - class file to it. - -2002-11-19 Jason Thorpe - - * jvspec.c (lang_specific_spec_functions): New. - -2002-11-18 Tom Tromey - - Fix for PR java/7912: - * expr.c (can_widen_reference_to): Allow cast of array to - Cloneable or Serializable. - * java-tree.h (java_lang_cloneable_identifier_node): Declare. - (java_io_serializable_identifier_node): Likewise. - * parse.y (java_lang_cloneable, java_io_serializable): Removed. - (valid_ref_assignconv_cast_p): Use new identifier nodes. - * lex.c (java_init_lex): Don't initialize java_lang_cloneable and - java_io_serializable. - * decl.c (java_init_decl_processing): Initialize - java_lang_cloneable_identifier_node and - java_io_serializable_identifier_node. - (java_lang_cloneable_identifier_node): New global. - (java_io_serializable_identifier_node): Likewise. - -2002-11-14 Jens-Michael Hoffmann - - * buffer.c: Remove unnecessary casts. - * check-init.c: Likewise. - * class.c: Likewise. - * constants.c: Likewise. - * decl.c: Likewise. - * except.c: Likewise. - * gjavah.c: Likewise. - * jcf-io.c: Likewise. - * jcf-parse.c: Likewise. - * jcf-path.c: Likewise. - * jvspec.c: Likewise. - * lang.c: Likewise. - * lex.c: Likewise. - * verify.c: Likewise. - -2002-11-06 Tom Tromey - - * gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in - a JNI header. - -2002-11-05 Tom Tromey - - Fix for PR java/6388. - * lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while. - * java-tree.h (enum java_tree_index): New values - JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE. - (decimal_int_max, decimal_long_max): New defines. - * lex.c (yylex): Rewrote range checking. Sign extend literals. - (error_if_numeric_overflow): Rewrote range checking. - * decl.c (java_init_decl_processing): Initialize decimal_int_max, - decimal_long_max. - -2002-11-02 Tom Tromey - - * java-tree.h: Move JV_STATE_ERROR before JV_STATE_DONE. - - * class.c (make_method_value): Put class name, not signature, into - `throws' field. For PR java/8415. - -2002-10-24 Tom Tromey - - * gcj.texi (Invoking gij): Document --showversion. - (Standard Properties): java.library.path now set. - -2002-10-23 Tom Tromey - - * gjavah.c (decode_signature_piece): In JNI mode, print - `jobjectArray' when array depth is nonzero. - Fixes PR java/8296. - -2002-10-15 Andrew Haley - - * parse.y (patch_invoke): Call force_evaluation_order on a static - arg list. - (resolve_qualified_expression_name): Call force_evaluation_order - on a arg list that is part of a Qualified Expression Name. - - * lang.c (dump_compound_expr): New. - (java_dump_tree): New. - -2002-10-20 Ranjit Mathew - - * gcj.texi: Added item describing the GCJ runtime property - "gnu.gcj.progname". - -2002-10-15 Richard Henderson - - * jcf-parse.c (get_constant): Fix type warning. - -2002-10-15 Andrew Haley - - * java-tree.h (java_inlining_merge_static_initializers): Declare. - (java_inlining_map_static_initializers): Declare. - -2002-10-14 Andrew Haley - - * tree-inline.c (remap_block): All local class initialization - flags go in the outermost scope. - (expand_call_inline): Call java_inlining_map_static_initializers. - (expand_call_inline): Call java_inlining_merge_static_initializers. - * java/lang.c (merge_init_test_initialization): New. - (java_inlining_merge_static_initializers): New. - (inline_init_test_initialization): New. - (java_inlining_map_static_initializers): New. - -2002-10-11 Mark Wielaard - - * gcj.texi (Compatibility): Add Limitations and Extensions section. - -2002-10-10 Kaveh R. Ghazi - - * class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer. - -2002-10-09 Kaveh R. Ghazi - - * parse.y (merge_string_cste): Add parentheses around & within |. - -2002-10-08 Tom Tromey - - * parse.y (variable_declarator_id): Simplify error path for - array declarator error. For PR java/8003. - -2002-10-08 Zack Weinberg - - * gjavah.c, jcf-dump.c, jv-scan.c: Globally replace GCCBUGURL with - bug_report_url. - -2002-10-08 Andrew Haley - - * parse.y (attach_init_test_initialization_flags): Check for - error_mark_node. - -2002-10-07 Anthony Green - - * parse.y (merge_string_cste): Fix bug in string concatenation. - -2002-10-03 Michael Koch - - * gcj.texi (Standard properties): - Change default of java.awt.toolkit to gnu.awt.gtk.GtkToolkit. - -2002-10-02 Roger Sayle - - PR optimization/6627 - * lang.c (java_init): If storing the vbit in function - pointers, ensure that force_align_functions_log is atleast - one to aid compatability with g++ vtables. - -2002-10-01 Nathan Sidwell - - * jcf-dump.c (print_constant, case CONSTANT_float): Don't fall - foul of type-based aliasing. - -2002-09-30 Anthony Green - - * gcj.texi (Invoking jv-scan): Fix texinfo. - -2002-09-28 Anthony Green - - * gcj.texi (Invoking jv-scan): Add --no-assert documentation. - (Code Generation): Add -fno-assert documentation. - * jv-scan.c (flag_assert): New global. - (options): Add assert option. - (help): Add --no-assert documentation. - * parse-scan.y (flag_assert): New global. - * lang.c (lang_f_options): Add -fassert/-fno-assert support. - (flag_assert): New global. - * java-tree.h (flag_assert): New global. - * lex.c (java_lex): Obey flag_assert. - * jvspec.c (jvgenmain_spec): Strip -fassert/-fno-assert when - calling cc1. - -2002-09-26 Andrew Haley - - * expr.c (build_java_array_length_access): Check for null pointer. - * expr.c (expand_java_arrayload): Likewise. - -2002-09-21 Richard Henderson - - * jcf-parse.c (get_constant): Decode from IEEE no matter - what the target format. - -2002-09-20 Kazu Hirata - - * ChangeLog: Follow spelling conventions. - * class.c: Likewise. - * decl.c: Likewise. - * expr.c: Likewise. - * gjavah.c: Likewise. - * java-tree.h: Likewise. - * jcf-dump.c: Likewise. - * jcf-parse.c: Likewise. - * jvspec.c: Likewise. - * lang.c: Likewise. - * mangle.c: Likewise. - * parse.y: Likewise. - -2002-09-17 Tom Tromey - - * lex.c (java_read_unicode_collapsing_terminators): Handle case - where \r appears at EOF. Fixes PR java/7950. - -2002-09-16 Volker Reichelt - - * jvspec.c (lang_specific_driver): Remove unused variable. - -2002-09-16 Geoffrey Keating - - * java-tree.h (union lang_tree_node): Add chain_next option. - -2002-09-16 Richard Henderson - - * jcf-parse.c (get_constant): Runtime check for IEEE format; - use new real.h interface. - * jcf-write.c (find_constant_index): Use new real.h interface. - * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL. - -2002-09-15 Kazu Hirata - - * lang.c: Follow spelling conventions. - -2002-09-11 Per Bothner - - * parse.y (fold_constant_for_init): If a VAR_DECL, convert numerical - constant to the type of the field. - (java_complete_tree): Remove now-redundant code. - - * parse.y (fold_constant_for_init): 'null' is not a constant expr. - -2002-09-03 Jesse Rosenstock - - For PR java/5794: - * verify.c (verify_jvm_instructions) [OPCODE_jsr]: Only push the - return label if a ret instruction for the jsr has been reached. - -2002-09-09 Ranjit Mathew - - * parse.y (DIR_SEPARATOR): Don't define. - (check_class_interface_creation): Use IS_DIR_SEPARATOR. - -2002-08-28 Andrew Haley - - * verify.c (verify_jvm_instructions): Allow exception handler - inside code that is being protected, but generate a warning. - * except.c (link_handler): Initialize `expanded' in new eh_range. - (binding_depth, is_class_level, current_pc): Declare extern. - -2002-09-01 Mark Wielaard - - * gcj.texi: Add chapter about system properties. - Fixed some typos. - -2002-08-26 Tom Tromey - - * parse.y (try_builtin_assignconv): Allow narrowing primitive - conversion if RHS_TYPE is byte, short, or char. - -2002-08-22 Tom Tromey - - * gcj.texi (Invoking gij): Document -cp and -classpath. - -2002-08-21 Tom Tromey - - * Make-lang.in (java/jcf-path.o): Use $(datadir), not - $(prefix)/share. For PR libgcj/7633. - - For PR java/6005 and PR java/7611: - * lang.c (LANG_HOOKS_CAN_USE_BITFIELDS_P): New define. - (java_can_use_bit_fields_p): New function. - -2002-08-16 Tom Tromey - - * gcj.texi (Class Initialization): Mention class initialization of - arrays. - -2002-07-30 Andrew Haley - - * Make-lang.in (java-tree-inline.o): New. - (JAVA_OBJS): Add java-tree-inline.o. - * parse.y (source_end_java_method): Call java_optimize_inline. - (java_expand_method_bodies): Save method's tree in - DECL_SAVED_TREE. - (add_stmt_to_compound): Keep track of the number of statments. - * lang.c (java_init): Enable flag_inline_trees. - (java_post_options): If flag_inline_functions is on, enable - flag_inline_trees instread. - (decl_constant_value): New. - (java_tree_inlining_walk_subtrees): New. - * java-tree.h (DECL_NUM_STMTS): New macro. - (java_optimize_inline): Declare. - * expr.c (java_expand_expr): Allow a BLOCK to return a value. - Handle a LABEL_EXPR. - * decl.c (build_result_decl): If we already have a DECL_RESULT - don't make another. - (dump_function): New. - (java_optimize_inline): New. - (dump_function): New. - -2002-08-13 Jesse Rosenstock - - For PR java/7483: - * parse.y (build_assertion): Invert return from - desiredAssertionStatus. - -2002-08-08 Bryce McKinlay - - * jcf-write.c (get_access_flags): Return correct access flags for - private and protected inner classes. - -2002-08-08 Nathan Sidwell - - * java/Make-lang.in (java.mostlyclean): Remove coverage files. - -2002-08-05 Geoffrey Keating - - * mangle_name.c: Don't include obstack.h twice. - * xref.c: Don't include obstack.h. - -2002-08-04 Geoffrey Keating - - * class.c: (permanent_obstack): Delete declaration. - * constants.c: (permanent_obstack): Delete declaration. - * except.c: (permanent_obstack): Delete declaration. - * expr.c: (permanent_obstack): Delete declaration. - * jcf-parse.c: (permanent_obstack): Delete declaration. - (saveable_obstack): Delete declaration. - * parse.h: (permanent_obstack): Delete declaration. - * typeck.c: (permanent_obstack): Delete declaration. - -2002-08-04 Joseph S. Myers - - * gcj.texi (version-gcc): Increase to 3.3. - -2002-07-22 Tom Tromey - - * lex.c (java_lex): Check for `e' or `E' after 0. - -2002-07-21 Richard Henderson - - * lang.c (java_unsafe_for_reeval): New. - (LANG_HOOKS_UNSAFE_FOR_REEVAL): New. - -2002-07-21 Neil Booth - - * jcf-path.c (GET_ENV_PATH_LIST): Remove. - (jcf_path_init): Use GET_ENVIRONMENT. - -2002-07-10 Roger Sayle - Zack Weinberg - - * builtins.c (initialize_builtins): Remove defines that - handled C/C++ specific junk hereby removed from builtins.def. - -2002-07-07 Neil Booth - - * lang.c (java_post_options): Update prototype. - -2002-07-05 Roger Sayle - - * builtins.c (initialize_builtins): Ignore the additional - parameter to DEF_BUILTIN. Handle more C/C++ specific junk in - the builtins.def file. - -2002-07-01 Tom Tromey - - For PR libgcj/7073: - * parse.y (patch_incomplete_class_ref): Handle VOID_TYPE - specially. - -2002-07-01 Roger Sayle - - * java/decl.c (builtin_function): Accept additional parameter. - (java_init_decl_processing): Pass an additional NULL_TREE - argument to builtin_function. - -2002-06-29 T.J. Mather - - * gcj.texi: Fixed gcj invocation example so that it compiles. - -2002-06-26 Kaveh R. Ghazi - - * lex.c (java_init_lex): Avoid incorrect hardcoded constant 11. - * parse.y (mark_parser_ctxt): Likewise. - (check_modifiers, declare_local_variables): Avoid incorrect - hardcoded constant 10. - - * lex.c (java_read_char): Avoid "comparison is always true" - warning. - -2002-06-25 Andreas Schwab - - * expr.c (JSR): Avoid undefined operation on PC. - -2002-06-21 Kaveh R. Ghazi - - * decl.c (clear_binding_level): Const-ify. - -2002-06-13 Akim Demaille - - * parse.y (class_declaration, interface_declaration): Make sure - all their rules have an action, in order to avoid meaningless `$$ - = $1' and their type clashes. - -2002-06-11 Tom Tromey - - * jcf-write.c (generate_classfile): Use FIELD_SYNTHETIC. - * parse-scan.y (statement_without_trailing_substatement): Added - assert_statement. - (assert_statement): New rule. - * java-tree.h (struct lang_type) [assertions]: New field. - (TYPE_USES_ASSERTIONS): New macro. - (CLASS_USES_ASSERTIONS): Likewise. - (FIELD_SYNTHETIC): New define. - * lex.c (java_lval;): Added ASSERT_TK. - * parse.y (ASSERT_TK): Added. - (statement_without_trailing_substatement): Added assert_statement. - (assert_statement): New rule. - (build_assertion): New function. - (maybe_generate_pre_expand_clinit): Create and initialize - $assertionsDisabled. - (lookup_package_type): Removed decl. - * keyword.h: Rebuilt. - * keyword.gperf (assert): New token. - -2002-06-10 Akim Demaille - - * parse.y (interface_type_list, class_member_declaration) - (unary_expression_not_plus_minus): Remove duplicate %type. - Whitespace changes. - -2002-06-09 Tom Tromey - - * Make-lang.in (java/lang.o): Use LANGHOOKS_DEF_H. - - * parse.y (method_header): Give error message in all cases. - Fixes PR java/6865. - -2002-06-10 Bryce McKinlay - - Don't use RTL inlining. Fix for PR java/6820. - * lang.c (LANG_HOOKS_POST_OPTIONS): Define. - (flag_really_inline): New. - (java_decode_option): Set flag_really_inline if -finline-functions - is seen. - (java_post_options): New function. Turn off inlining unless - flag_really_inline is set. - -2002-06-10 Bryce McKinlay - - * gjavah.c (throwable_p): Accept argument as either a classname or - signature fragment. Create null-terminated classname string for super - when calling itself recursively. - (decode_signature_piece): Skip first character from class name - signature when calling throwable_p. - -2002-06-08 H.J. Lu (hjl@gnu.org) - - * jcf-path.c (jcf_path_init): Allocate 1 more byte for string. - -2002-06-04 Tom Tromey - - * jcf-write.c (perform_relocations): Optmize a goto to a goto. - -2002-06-04 Michael Koch - - * gcj.texi (Input Options): Fixed typo. - -2002-06-04 Zack Weinberg - - * java-tree.h, class.c, expr.c, jcf-parse.c, parse.y, - typeck.c, verify.c: Remove all #if JAVA_USE_HANDLES blocks, - all mention of CLASS_TO_HANDLE_TYPE or HANDLE_TO_CLASS_TYPE, - and all now-pointless local variables. Rename other local - variables to reflect their not being handles. - - * java-tree.h, jcf-dump.c, jcf-io.c: Remove all - #if JCF_USE_STDIO blocks. - - * parse.y: Add missing semicolon at end of rule. - -2002-06-03 Geoffrey Keating - - * check-init.c (attach_initialized_static_class): Delete, unused. - * parse.y: Use htab_t instead of struct hashtable, update - all uses. - * java-tree.h: Include hashtab.h instead of hash.h. - (struct lang_decl_func): Use htab_t, set up for gengtype. - (struct init_test_hash_entry): Delete. - (struct treetreehash_entry): New. - (java_treetreehash_find): New - (java_treetreehash_new): New prototype. - (java_treetreehash_create): New prototype. - (java_mark_tree): Delete prototype. - (java_hash_hash_tree_node): Delete prototype. - (java_hash_compare_tree_node): Delete prototype. - (attach_initialized_static_class): Delete prototype. - * expr.c (build_class_init): Update to use java_treetreehash - functions. - (java_expand_expr): Update to use htab_t. - (emit_init_test_initialization): Likewise. - * decl.c (java_mark_tree): Delete. - * class.c (init_test_hash_newfunc): Delete. - (java_hash_hash_tree_node): Delete. - (java_hash_compare_tree_node): Delete. - (add_method_1): Update to use java_treetreehash functions. - (JAVA_TREEHASHHASH_H): New macro. - (java_treetreehash_hash): New function. - (java_treetreehash_compare): New function. - (java_treetreehash_find): New function. - (java_treetreehash_new): New function. - (java_treetreehash_create): New function. - * Make-lang.in (JAVA_TREE_H): Replace hash.h by HASHTAB_H. - - * Make-lang.in (java/parse.o): Depend on debug.h. - * java-tree.h (struct lang_identifier): Use gengtype. - (union lang_tree_node): New. - (struct lang_decl_func): Use gengtype. - (struct lang_decl_var): Likewise. - (struct lang_decl): Likewise. - * parse.y: Include debug.h. - * lang.c (LANG_HOOKS_MARK_TREE): Delete. - - * lang.c (struct language_function): New dummy structure. - - * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Set - descriminator for DECL_LANG_SPECIFIC. - (struct lang_decl_func): Rename from struct lang_decl. - (enum lang_decl_desc): New. - (struct lang_decl): Make it a union. Update all the accessor macros. - (struct lang_type): Use gengtype. - * class.c (add_method_1): Set descriminator for DECL_LANG_SPECIFIC. - * decl.c (java_dup_lang_specific_decl): All lang_decl structures - are now the same size. - (lang_mark_tree): Use gengtype to mark TYPE_LANG_SPECIFIC; - use discriminator to mark DECL_LANG_SPECIFIC. - - * Make-lang.in (gt-java-builtins.h): New rule. - (java/builtins.o): Add dependency on gt-.h. - * builtins.c: Use gengtype for roots. - (union string_or_tree): Use gengtype. - (struct builtin_record): Use gengtype. - * config-lang.in (gtfiles): Add builtins.c. - - * Make-lang.in (gt-java-class.h, gt-java-constants.h, - gt-java-decl.h, gt-java-expr.h, gt-java-jcf-parse.h, - gt-java-jcf-write.h, gt-java-lang.h, gt-java-mangle.h, - gt-java-parse.h, gtype-java.h): Add rules to generate. - (parse.o): Add dependency on gt-java-parse.h, gt-java.h. - (class.o): Add dependency on gt-*.h. - (constants.o): Likewise. - (decl.o): Likewise. - (expr.o): Likewise. - (jcf-parse.o): Likewise. - (jcf-write.o): Likewise. - (lang.o): Likewise. - * config-lang.in (gtfiles): New. - * class.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. - * constants.c: Replace uses of ggc_add_* with GTY markers. - Include gt-*.h. - * decl.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. - * expr.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. - * java-tree.h: Replace uses of ggc_add_* with GTY markers. - * jcf-parse.c: Replace uses of ggc_add_* with GTY markers. - Include gt-*.h. - * jcf-write.c: Replace uses of ggc_add_* with GTY markers. - Include gt-*.h. - * lang.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. - * mangle.c: Replace uses of ggc_add_* with GTY markers. Include - gt-*.h. - * parse.y: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. - Include gtype-java.h. - -2002-06-02 Tom Tromey - - Fix for PR java/5913: - * parse.y (patch_binop): Call patch_string on op1. - -2002-06-02 Tom Tromey - - Fix for PR java/1343, PR java/6336: - * parse.y (make_nested_class_name): Remove extraneous `else'; fix - formatting. Changed return type. - (anonymous_class_counter): Moved to top of file. - (maybe_make_nested_class_name): Append number to class name for - function-local classes. - -2002-05-28 Zack Weinberg - - * decl.c, jcf-parse.c, parse.y, typeck.c: Include real.h. - * Make-lang.in: Update dependency lists. - -2002-05-18 Mark Mitchell - - * gjavah.c (throwable_p): Do not free the name of the class after - passing it to find_class. - * java-tree.h (CLASS_BEING_LAIDOUT): Remove duplicate definition. - * jcf-io.c (dirent.h): Include it. - (fnmatch.h): Likewise. - (compare_path): New function. - (java_or_class_file): Likewise. - (memoized_dirlist_entry): New type. - (memoized_dirlist_lookup_eq): New function. - (memoized_dirlists): New variable. - (caching_stat): New function. - (memoized_class_lookup_eq): New function. - (memoized_class_lookups): Likewise. - (find_class): Use memoized_class_lookups and caching_stat. - * jcf.h (JCF_USE_SCANDIR): Define. - * parse.y (java_expand_classes): Write the class files in reverse - order. - -2002-05-16 Rainer Orth - - * Make-lang.in: Allow for PWDCMD to override hardcoded pwd. - -2002-05-13 Mark Mitchell - - * jcf-write.c (write_classfile): Unlink the temporary file if it - cannot be renamed. Use concat to build up the name of the - temporary file. - -2002-05-08 Mark Mitchell - - * jcf-write.c (write_classfile): Write the file to a - temporary file and then rename it. - -2002-05-07 Tom Tromey - - * gjavah.c (throwable_p): Use xstrdup, not strdup. - - Fix for PR java/1200: - * gjavah.c (throwable_p): New function. - (decode_signature_piece): Use it. A `WeakReference' isn't the - same as a `jweak'. - Include hashtab.h. - (gcjh_streq): New function. - -2002-05-07 Andreas Jaeger - - * parse.y (finish_for_loop): Fix if statement. - -2002-05-06 Tom Tromey - - Fix for PR java/5941: - * parse.y (finish_for_loop): Set SUPPRESS_UNREACHABLE_ERROR for - loop update expression. - (java_complete_lhs): Use SUPPRESS_UNREACHABLE_ERROR. - * java-tree.h (SUPPRESS_UNREACHABLE_ERROR): New macro. - -2002-05-04 Mark Wielaard - - For PR java/6519: - * parse.y (build_string_concatenation): Return just op1 only when op2 - is null and op1 is a STRING_CST, otherwise always construct a - StringBuffer. - -2002-04-27 Tom Tromey - - For PR java/6382: - * parse.y (string_convert_int_cst): New function. - (merge_string_cste): Use it. - -2002-04-25 Neil Booth - - * java-tree.h (java_parse_file): Update. - (java_set_yydebug): Remove. - * jcf-parse.c (yydebug): Remove. - (java_set_yydebug): Die. - (java_parse_file): Update. - * lang.c (LANG_HOOKS_SET_YYDEBUG): Remove. - -2002-04-24 Tom Tromey - - For PR java/6425: - * parse.y (qualify_ambiguous_name) [case CALL_EXPR]: Always choose - EXPR_WFL_QUALIFICATION of qual_wfl. - -2002-04-23 Per Bothner - - * expr.c (PRE_JSR): Call NOTE_LABEL for return address. - * java-tree.h (BCODE_RETURN_TARGET): Removed - never set. - (BCODE_TARGET): Remove BCODE_RETURN_TARGET. - -2002-04-23 Tom Tromey - - For PR java/6314: - * jvspec.c (lang_specific_driver): Use --resource, not -R. Also - recognize `-fcompile-resource='. - * gcj.texi (Invoking gcj): Use --resource, not -R. Expanded text - a bit. - -2002-04-22 Alexandre Petit-Bianco - - * jcf-parse.c: (yyparse): Don't prepend "./" to relative - paths. Fixes PR java/2791. - -2002-04-19 Andrew Haley - - * jcf-write.c (push_long_const): lo, hi: New variables. - Use rshift_double to extract the high part of a 64-bit long. - Use WORD_TO_INT to extract the low part. - - * jcf-parse.c (get_constant): CONSTANT_Integer: Use an unsigned - HOST_WIDE_INT for num. Use JPOOL_UINT to get it. - CONSTANT_Double: Use JPOOL_UINT to get both halve of a double. - -2002-04-18 Neil Booth - - * typeck.c (incomplete_type_error): Remove. - -2002-04-18 Bryce McKinlay - - * class.c (make_class_data): Set DECL_ALIGN on static class data, - for hash synchronization. - * expr.c (java_expand_expr): Set DECL_ALIGN on static array objects. - * decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for - class_type_node. - -2002-04-16 Mark Wielaard - - * jcf-write.c (generate_bytecode_insns): Only write const_0 if not - negative zero. - -2002-04-16 Bryce McKinlay - - Fix for PR java/6294: - * parse.h (INNER_INTERFACE_MODIFIERS): Allow ACC_PRIVATE for inner - interfaces. - -2002-04-15 Bryce McKinlay - - Fix for PR java/6085: - * parse.y (patch_method_invocation): Always use build_access_to_thisn - to get enclosing "this" argument for inner-class constructor - invocation. Pass correct arguments to build_access_to_thisn. - -2002-04-10 Andreas Jaeger - - * gcj.texi (Input Options): Fix extdirs patch. - -2002-04-10 Anthony Green - - * jcf-path.c (jcf_path_init) : Clean up local extdirs declaration. - -2002-04-09 Anthony Green - - * gcj.texi (Input Options): Add --extdirs documentation. - * jcf-dump.c (OPT_extdirs): New macro. - (options): Add extdirs option. - (help): Describe --extdirs. - (main): Handle OPT_extdirs. - * gjavah.c (OPT_extdirs): New macro. - (options): Add extdirs option. - (help): Describe --extdirs. - (main): Handle OPT_extdirs. - * jcf-path.c (jcf_path_init): Add extdirs support. - (jcf_path_extdirs_arg): New function. - (extensions): New variable to hold extensions path entries. - * jvspec.c: Remove -fextdirs= when compiling main(). - * lang.c (java_decode_option): Handle -fextdirs=. - * jcf.h (jcf_path_extdirs_arg): Declare new function. - * Make-lang.in: Compile jcf-path with version info for use in - identifying the appropriate libgcj.jar. - -2002-04-08 Tom Tromey - - For PR libgcj/5303: - * .cvsignore: Added rmic.1 and rmiregistry.1. - * gcj.texi (Top): Link to new nodes. - (Invoking rmic): New node. - (Invoking rmiregistry): Likewise. - * Make-lang.in (java.generated-manpages): Added rmic.1 and - rmiregistry.1. - (java.maintainer-clean): Likewise. - ($(srcdir)/java/rmic.1): New target. - ($(srcdir)/java/rmiregistry.1): Likewise. - (java.install-man): Handle rmic.1 and rmiregistry.1. - -2002-04-08 Bryce McKinlay - - * gcj.texi (Invocation): Update JvAttachCurrentThread documentation. - Add note about handling uncaught exceptions. Add an exception handler - to example. - -2002-04-08 Bryce McKinlay - - * parse.y (resolve_qualified_expression_name): Clear "from_super" flag - after using it to patch CALL_EXPR. - -2002-04-08 Bryce McKinlay - - * gcj.texi (Invocation): Document CNI invocation API. - -2002-04-04 Neil Booth - - * expr.c (truthvalue_conversion): Rename. Update. - (expand_compare): Update. - * java-tree.h (java_truthvalue_conversion): New. - * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine. - -2002-04-01 Neil Booth - - * java-tree.h (java_mark_addressable): New. - * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine. - * typeck.c (mark_addressable): Rename, update. - -2002-04-01 Neil Booth - - * expr.c (build_java_binop): Update. - * java-tree.h (java_signed_type, java_unsigned_type, - java_signed_or_unsigned_type): Update. - * lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE, - LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New. - * parse.y (patch_binop): Update. - * typeck.c (signed_or_unsigned_type, unsigned_type, - signed_type): Update. - -2002-03-31 Neil Booth - - * lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine. - (java_dummy_print): Remove. - (lang_print_error): Rename. Exit early if inhibiting output. - (inhibit_error_printing_function): New. - (java_init): Don't set hook. - (lang_init_source): Use new boolean. - -2002-03-29 Martin Kahlert - - * parse.y (do_resolve_class): Fix infinite recursion. - -2002-03-29 Tom Tromey - - * parse.y (check_inner_circular_reference): Ignore incomplete - types. - -2002-03-29 Neil Booth - - * Make-lang.in (builtins.o): Update. - * boehm.c (get_boehm_type_descriptor): Update. - * builtins.c: Include langhooks.h. - * decl.c (java_init_decl_processing): Update. - * java-tree.h (java_type_for_mode, java_type_for_size): New. - * lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE): - Redefine. - * typeck.c (type_for_mode, type_for_size): Update. - -2002-03-29 Martin Kahlert - - * lex.c (java_new_lexer): Alias "646" to DEFAULT_ENCODING. - -2002-03-28 Tom Tromey - - * except.c (expand_end_java_handler): If the handler type is NULL, - use java.lang.Throwable. Fixes PR java/5986. - -2002-03-28 Alexandre Petit-Bianco - - Fix for PR java/4715: - * jcf-parse.c (parse_source_file_3): New function. - (read_class): Call it. - (java_parse_file): Likewise. - -2002-03-28 Jan Hubicka - - * java/lang.c (java_init_options): Set flag_trapping_math to 0. - -2002-03-28 Bryce McKinlay - - * parse.y (resolve_package): Initialize "decl". - (lookup_package_type): Remove unused function. - -2002-03-28 Bryce McKinlay - - Fix for PR java/5993: - * parse.y (resolve_package): Return the decl if resolution was - successful. Don't special case "java.lang" and "java.lang.reflect" - packages. Set type_name to the merged identifier. - (resolved_qualified_expression_name): Print error using "name" if - resolve_package returns NULL_TREE. - -2002-03-27 Tom Tromey - - * expr.c (expand_invoke): Don't generate null pointer check if - we're calling . - -2002-03-27 Neil Booth - - * expr.c (java_lang_expand_expr): Rename java_expand_expr, - fix prototype. - * java-tree.h (java_lang_expand_expr): Similarly. - * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. - (java_init): Don't set hook. - -2002-03-27 Bryce McKinlay - - Fix for PR java/5850: - * parse.y (lookup_field_wrapper): Call itself recursively for enclosing - context if field was not found in the current scope. - * expr.c (lookup_field): Don't look in enclosing contexts. - -2002-03-26 Tom Tromey - - Fix for PR java/5942: - * parse.y (init_src_parse): Added sanity check. - * parse.h (struct parser_ctxt) [modifier_ctx]: Array has 12 - elements, not 11. - -2002-03-26 Neil Booth - - * decl.c (lang_mark_tree): Rename java_mark_tree. - * java-tree.h (java_mark_tree): New. - * java-lang.c (LANG_HOOKS_MARK_TREE): Redefine. - -2002-03-25 Zack Weinberg - - * lex.c: Change java_perform_atof to take normal parameters - instead of a pointer to a parameter block. Call it directly - from java_lex. - -2002-03-22 Mark Wielaard - - Fix for PR java/5368: - * parse.y (resolve_qualified_expression_name): Use decl not field_decl - when printing error message. - -2002-03-25 Neil Booth - - * decl.c (maybe_build_cleanup): Remove. - -2002-03-22 Tom Tromey - - Andrew Haley - - * expr.c (build_field_ref): Don't build a check if the field is a - member of `this'. - -2002-03-21 Eric Blake - - Fix for PR java/6026: - * lex.c (java_lex): Fix parsing of consecutive floats. - -2002-03-21 Tom Tromey - - * parse.y (build_access_to_thisn): Stop when FROM is not an inner - class. - -2002-03-21 Neil Booth - - * cp-tree.h (pushdecl, pushlevel, poplevel, set_block, - insert_block, getdecls, kept_level_p, global_bindings_p): New. - -2002-03-20 Nic Ferrier - - * gcj.texi: @code{gcj} becomes @command{gcj}. - @code{gcc} becomes @command{gcc}. - GcjRaw changed to gnu.gcc.RawData. - -2002-03-20 Neil Booth - - * decl.c (start_java_method): Use new hook. - * lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine. - (java_init): Remove old hook. - -2002-03-18 Alexandre Petit-Bianco - - * builtins.c (define_builtin): Do nothing if `type' is null. - Fixes PR java/5876. - -2002-03-18 Bryce McKinlay - - * parse.y (parser_check_super_interface): Fix error message - grammar/order. - -2002-03-17 Kaveh R. Ghazi - - * jcf-parse.c (get_constant): Delete unused variables. - -2002-03-17 Neil Booth - - * java-tree.h (java_parse_file): New. - * jcf-parse.c (yyparse): Rename java_parse_file. - * lang.c (LANG_HOOKS_PARSE_FILE): Redefine. - -2002-03-16 Bryce McKinlay - - * parse.y (craft_constructor): Return the constructor decl. - (java_expand_classes): Update comments. - (lookup_method_invoke): Call fix_constructors immediately for - anonymous class. Fixes PR java/5935. - -2002-03-15 Anthony Green - - * jcf-parse.c (yyparse): Don't emit class registration - constructor when compiling resource files. - -2002-03-12 Kaveh R. Ghazi - - * lang.c (java_tree_code_type, java_tree_code_length, - tree_code_name): Delete. - (tree_code_type, tree_code_length, tree_code_name): Define. - (java_init): Don't try to copy into the various tree_code - arrays. - -2002-03-12 Tom Tromey - - * jcf-parse.c (get_constant) [CONSTANT_String]: String values are - UTF-8, not UCS-2. Fixes PR java/5923. - - * parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is - a call_expr wrapped in a convert. Fixes PR java/5848. - -2002-03-12 Bryce McKinlay - - * jcf-write.c (write_classfile): Improve error strings. - -2002-03-11 Eric Blake - - * lex.c: Adjust comments to GNU standards. - -2002-03-11 Eric Blake - - Fix for PR java/5902: - * lex.c (java_lex): Fix parsing of literals. - -2002-03-11 Bryce McKinlay - - * parse.y (patch_assignment): Wrap the right-hand-side with a save_expr - to prevent it getting evaluated twice in the store checking case. - * expr.c (build_java_arraystore_check): Unwrap SAVE_EXPR's when - examining OBJECT. - -2002-03-09 Bryce McKinlay - - * decl.c (java_init_decl_processing): Make sure class_type_node - alignment is not less than 64 bits if hash synchronization is enabled. - -2002-03-08 Per Bothner - - * parse.y (java_complete_lhs): Check if patch_assignment - returned an error-mark. - - * parse.y (try_builtin_assignconv): Don't special-case zero. - -2002-03-08 Per Bothner - - Fix for PR java/5812. - * expr.c (build_java_jsr): Take pc arguments, and do lookup_label - here instead of in JSR macro. Likewise with load_type_state call. - Do the latter on if the return_pc has been verified (the jsr returns). - (JSR): Now just call build_java_jsr. - -2002-03-07 Jeff Sturm - - * java/Make-lang.in (JAVA_TARGET_INSTALL_NAME): Define. - (java.install-common): Link native driver to - JAVA_TARGET_INSTALL_NAME. - -2002-03-05 David Billinghurst - - * builtins.c(cos_builtin): method_return_type ATTRIBUTE_UNUSED - * builtins.c(sin_builtin): Likewise - * builtins.c(sqrt_builtin): Likewise - -2002-03-03 Zack Weinberg - - * java/expr.c, java/jcf-parse.c, java/lex.c: - Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef - REAL_ARITHMETIC blocks unconditional. Delete some further - #ifdef blocks predicated on REAL_ARITHMETIC. - -2002-03-03 Kaveh R. Ghazi - - * class.c (init_class_processing): Use ARRAY_SIZE in lieu of - explicit sizeof/sizeof. - * decl.c (java_init_decl_processing): Likewise. - * jcf-parse.c (init_jcf_parse): Likewise. - * parse.y (init_src_parse): Likewise. - -2002-03-02 Per Bothner - - Make --CLASSPATH by a synonym for --classpath and -classpath. - Implement --bootclasspath. - * jcf-path.c (classpath_u): Rename static variable to classpath_user. - (classpath_l): Remove. - (jcf_path_CLASSPATH_arg): Remove. - (jcf_path_bootclasspath_arg): New function. - (jcf_path_seal): Simplify accordingly. - - * jcf.h (jcf_path_bootclasspath_arg): New declarations. - (jcf_path_CLASSPATH): Remove declaration. - * jvspec.c (jvgenmain_spec): Also accept -fbootclasspath*. - (lang_specific_driver): Translate -bootclasspath. - * lang-options.h: Add --bootclasspath. Update --CLASSPATH. - * lang.c (decode_lang_options): Do jcf_path_init first. - Handle -fCLASSPATH same as -fclasspath. Also process -fbootclasspath. - * gjavah.c: Also handle --bootclasspath. - Handle --CLASSPATH as a synonum for --classpath. - * jcf-dump.c: Likewise. - - "." is not part of system path, but is the default for --classpath. - * jcf-path.c (jcf_path_init): Don't add "." to sys_dirs. - (jcf_path_seal): Add "." if no CLASSPATH specified. - - * gcj.texi: Document changes. - -2002-03-01 Bryce McKinlay - - * expr.c (build_java_arraystore_check): Fix formatting. - -2002-02-28 Alexandre Petit-Bianco - - Fix for PR java/5758, java/5632: - * jcf-parse.c (load_class): Renamed local variable, consider `.' an - inner-class separator too. - * parse.y (do_resolve_class): New local `decl_result.' - Progressively build a name for what can have been loaded. - -2002-02-28 Bryce McKinlay - - * expr.c (java_array_data_offset): Removed function. - (JAVA_ARRAY_LENGTH_OFFSET): Removed macro. - (build_java_array_length_access): Obtain "length" value using a - COMPONENT_REF, instead of INDIRECT_REF and arithmetic. - (build_java_arrayaccess): Correct comment. Access "data" using a - COMPONENT_REF, and return an ARRAY_REF instead of an INDIRECT_REF. - (build_java_arraystore_check): New function. - (expand_java_arraystore): Use build_java_arraystore_check. - * parse.y (patch_assignment): Simplify code to insert a store check - when lvalue is an ARRAY_REF. Use build_java_arraystore_check. - * check-init.c (check_init): Update to reflect that an array length - access is now a COMPONENT_REF. - * gcj.texi (Code Generation): Improve documentation of - -fno-bounds-check. Add documentation for -fno-store-check. - * java-tree.h (flag_store_check): Declare. - (build_java_arraystore_check): Declare. - * lang.c (flag_store_check): Initialize to 1. - (lang_f_options): Add store-check option. - * jvspec.c: Don't pass store-check option to jvgenmain. - * lang-options.h: Add help string for -fno-store-check. - -2002-02-28 Neil Booth - - * decl.c (copy_lang_decl): Rename java_dup_lang_specific_decl. - * java-tree.h (java_dup_lang_specific_decl): New. - * lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine. - -2002-02-27 Zack Weinberg - - * builtins.c, decl.c: Delete traditional-mode-related code - copied from the C front end but not used, or used only to - permit the compiler to link. - -2002-02-22 Tom Tromey - - Fix for PR java/2369: - * jvspec.c (verify_class_name): New function. - (lang_specific_driver): Call it. - (JAVA_START_CHAR_P): New macro. - (JAVA_PART_CHAR_P): Likewise. - -2002-02-22 Per Bothner - - * class.c: Change vtable to be more compatible with g++ v3 abi. - (get_dispatch_table): Prepend offset-to-top (always 0) and - type_info pointer (currently unimplemented hence NULL) to vtable. - Specifically, prepend offset-to-top and typeinfo ptr (currently null). - (make_class_data): Variable dtable_start_offset is sizeof 2 pointers. - Adjust vtable pointers by dtable_start_offse - i.e. skip new words. - (build_dtable_decl): Add declarations for new fields. - -2002-02-20 Per Bothner - - * parse.y (patch_method_invocation): Set CAN_COMPLETE_NORMALLY on call - to finit$ (otherwise generate_bytecode_insns drops it). However, we - don't need to set it on the COMPOUND_EXPR - the caller does that. - -2002-02-20 Nic Ferrier - - * gcj.texi: Option `--classpath' becomes `--CLASSPATH.'Option - `--CLASSPATH' becomes `--classpath.' - * gjavah.c: Likewise. - * jcf-dump.c: Likewise. - * lang-options.h: Likewise. - * lang.c: Likewise. - * jcf-path.c: Updated comment. - (jcf_path_classpath_arg): Renamed `jcf_path_CLASSPATH_arg.' - (jcf_path_CLASSPATH_arg): Renamed `jcf_path_classpath_arg.' - * jcf.h (jcf_path_CLASSPATH_arg): Ditto. - (jcf_path_CLASSPATH_arg): Ditto. - (classpath_u): Updated leading comment. - -2002-02-20 Per Bothner - - * builtins.c (check_for_builtin): New function. - (build_call_or_builtin): Remove. - * java-tree.h: Update accordingly. - * expr.c (expand_invoke): Use build + check_for_builtin instead - of build_call_or_builtin. - * parse.y (patch_invoke): Likewise. This avoids needlessly creating - a new CALL_EXPR node, which means we don't lose the CALL_USING_SUPER - flag (which had caused jcf-write to incorrectly emit invokevirtual). - -2002-02-17 Tom Tromey - - * java-tree.h (TYPE_STRICTFP): New macro. - (struct lang_type) [strictfp]: New field. - (CLASS_STRICTFP): New macro. - (METHOD_STRICTFP): New macro. - (struct lang_decl) [strictfp]: New field. - * parse.y (method_header): Disallow strictfp constructor or - abstract method. - (STRICT_TK): Move before MODIFIER_TK. - * parse.h (CLASS_MODIFIERS): Added ACC_STRICT. - (METHOD_MODIFIERS): Likewise. - (INTERFACE_MODIFIERS): Likewise. - * jcf-write.c (get_access_flags): Likewise. - * class.c (set_class_decl_access_flags): Recognize ACC_STRICT. - (add_method_1): Likewise. - (get_access_flags_from_decl): Likewise. - * jcf-dump.c (print_access_flags): Print in standard order. Also, - recognize strictfp flag. - * jcf.h (ACC_STRICT): New define. - -2002-02-12 David Billinghurst - - * class.c(build_utf8_ref): Move declaration of decl_size - -2002-02-07 Tom Tromey - - * gcj.texi (Input Options): --CLASSPATH does not suppress system - path. - -2002-02-04 Anthony Green - - * class.c (build_utf8_ref): Put UTF-8 constants into merged - sections if available. - -2002-02-04 Bryce McKinlay - - * parse.y (java_expand_classes): Fix typo in static field loop. - -2002-02-02 Richard Henderson - - * class.c (add_field): Mark static fields external. - (build_class_ref): Remove redundant set. - * parse.y (java_expand_classes): Mark static fields of classes - to be compiled as local. - * jcf-parse.c (parse_class_file): Likewise. - -2002-02-02 Nic Ferrier - - * gcj.texi (About CNI): New node. - -2002-02-01 Craig Rodrigues - - PR java/5080 - * jcf-parse.c : Check for HAVE_LOCALE_H before using - setlocale() with LC_CTYPE as a parameter. - * jv-scan.c: Same. - -2002-01-31 Joseph S. Myers - - * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version): - Follow GNU Coding Standards for --version. - -2002-01-28 Tom Tromey - - * expr.c (build_jni_stub): Ensure storage for `meth' is - generated. - * parse.y (java_complete_expand_methods): Set - current_function_decl before building JNI stub. - -2002-01-26 Andreas Tobler - - * gcc/java/builtins.c (sqrt_builtin): Use BUILT_IN_SQRT, not - BUILT_IN_SQRTF. - -2002-01-22 Tom Tromey - - * decl.c (java_init_decl_processing): Use add_predefined_file. - Predefine RawData.java. - (predef_filenames): Removed. - (java_init_decl_processing): Don't register predef_filenames. - * jcf-parse.c (add_predefined_file): New function. - (predefined_filename_p): Rewrote. - (predefined_filename_p): No longer static. - * decl.c (java_init_decl_processing): Call initialize_builtins. - * Make-lang.in (JAVA_OBJS): Added builtins.o. - (java/builtins.o): New target. - * builtins.c: New file. - * parse.y (patch_invoke): Use build_call_or_builtin. - * java-tree.h (build_call_or_builtin): Declare. - (initialize_builtins): Declare. - (java_set_exception_lang_code): Removed unused declaration. - (PREDEF_FILENAMES_SIZE): Removed. - (java_tree_index): Added JTI_PREDEF_FILENAMES. - (predef_filenames): New define. - (add_predefined_file): Declare. - (predefined_filename_p): Declare. - * expr.c (expand_invoke): Use build_call_or_builtin. - -2002-01-22 Kaveh R. Ghazi - - * parse.y (patch_switch_statement): Fix format specifier. - -2002-01-16 Tom Tromey - - More for PR java/5365: - * gjavah.c (print_stub_or_jni): Cause exception to be thrown by - default. - (process_file): Generate include for - java.lang.UnsupportedOperationExceptions. - -2002-01-15 Andreas Jaeger - - * .cvsignore: Add man pages. - -2002-01-15 Tom Tromey - - Fix for PR java/5365: - * gjavah.c (process_file): Turn class name into a file name. - -2002-01-14 Matthias Klose - - * gcj.texi: Fix whitespace and formatting errors in the - synopsis of the man pages. Update copyright. - -2002-01-14 Tom Tromey - - For PR libgcj/5303: - * Make-lang.in (java.install-man): Handle jv-convert man page. - (java.generated-manpages): Added jv-convert.1. - (java.uninstall): Remove jv-convert.1. - (java.maintainer-clean): Likewise. - ($(srcdir)/java/jv-convert.1): New target. - * gcj.texi (Top): Link to jv-convert node. - (Individual utilities): Likewise. - (Invoking jv-convert): New node. - -2001-01-10 Jeff Sturm - Martin Kahlert - - * jcf-parse.c (get_constant): Don't swap lo/hi for big - endian targets when HOST_BITS_PER_WIDE_INT >= 64. - -2002-01-03 Graham Stott - - * class.c (compile_resource_file): Update copyright date. - Constify filename parameter. - (java-tree.h): Update copyright date. - (compile_resource_file): Constify filename parameter. - -2002-01-03 Graham Stott - - * gcc/jcf-parse.c: Update copyright date. - (yyparse): Constify resource_filename. - -2002-01-02 Kaveh R. Ghazi - - * parse.y (src_parse_roots): Don't needlessly zero init. - -2001-12-31 Tom Tromey - - * parse.y (dump_java_tree): New function. - (source_end_java_method): Call it. - (end_class_declaration): Likewise. - * lang.c (java_decode_option): Call dump_switch_p. - -2001-12-28 Tom Tromey - - * gen-table.pl: Don't process characters after \uffff. Added - comment pointing to input file. - -2001-12-28 Kaveh R. Ghazi - - * gen-table.pl: Const-ify output. Document the location of a - suitable unicode input file. - - * chartables.h: Regenerate. - -2001-12-26 Kaveh R. Ghazi - - * chartables.h: Const-ify. - * gjavah.c (options): Likewise. - * jcf-dump.c (options): Likewise. - * jv-scan.c (options): Likewise. - * lex.c (java_start_char_p, java_part_char_p): Likewise. - * parse.y (binop_lookup): Likewise. - -2001-12-23 Kaveh R. Ghazi - - * Make-lang.in (keyword.h): Pass -C to gperf to const-ify - the static arrays that are output. - * jvspec.c (jvgenmain_spec): Make static. - * keyword.gperf (struct java_keyword, java_keyword): Const-ify. - * keyword.h: Regenerate. - * lang.c (string_option, process_option_with_no, lang_f_options, - lang_W_options): Const-ify. - * lex.c (java_lex): Likewise. - -2001-12-21 Richard Henderson - - * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Merge into .. - (get_boehm_type_descriptor): ... here. Arrange for the - TREE_TYPE to get set properly. - -2001-12-21 Richard Henderson - - * class.c (compile_resource_file): Set TREE_PUBLIC on the constructor - only if the target requires collect2. - - * class.c (build_class_ref): Mark _Jv_fooClass DECL_EXTERNAL. - -2001-12-20 Tom Tromey - - For PR java/4509: - * parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute - CAN_COMPLETE_NORMALLY for the node. - * jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't - generate code for second branch if first branch can't complete - normally. - (generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to - the loop head if the loop body can't complete normally. - -2001-12-20 Tom Tromey - - For PR java/4766: - * jcf-write.c (generate_bytecode_insns) [TRY_FINALLY_EXPR]: Handle - case where `finally' clause can't complete normally. - -2001-12-20 Tom Tromey - - Fixes PR java/5057: - * parse.y (analyze_clinit_body): Added this_class parameter. - Check for more cases where we must keep . - (maybe_yank_clinit): Cleaned up flow control. - -2001-12-20 Bryce McKinlay - - * decl.c (java_init_decl_processing): Don't initialize - finit_leg_identifier_node. - * java-tree.h (java_tree_index): Remove JTI_FINIT_LEG_IDENTIFIER_NODE. - (finit_leg_identifier_node): Remove. - (ID_FINIT_P): Don't check for JTI_FINIT_LEG_IDENTIFIER_NODE. - -2001-12-20 Bryce McKinlay - - * mangle.c (mangle_member_name): Don't special-case for - NO_DOLLAR_IN_LABEL. - * mangle_name.c (unicode_mangling_length): Likewise. - (append_unicode_mangled_name): Likewise. - * parse.y (make_nested_class_name): Remove dead NO_DOLLAR_IN_LABEL - code. - -2001-12-20 Bryce McKinlay - - * expr.c (build_java_array_length_access): Don't force null pointer - check unless flag_check_references is set. - -2001-12-20 Tom Tromey - - Fix for PR java/3417: - * parse.y (patch_assignment): Added special processing for - `return'. - (patch_return): Don't convert booleans to integers, and don't - special-case `null'. - -2001-12-20 Joseph S. Myers - - * config-lang.in (diff_excludes): Remove. - -2001-12-17 Joseph S. Myers - - * gcj.texi: Update link to GCC manual. - -2001-12-17 Tom Tromey - - * parse.y (link_nested_class_to_enclosing): Removed useless - statement. - -2001-12-16 Tom Tromey - - * mangle.c (mangle_method_decl): Never emit `C2' constructor. - Fixes PR java/5088. - -2001-12-16 Joseph S. Myers - - * ChangeLog, Make-lang.in, class.c, expr.c, gcj.texi, java-tree.h, - jcf-parse.c, jcf-write.c, lex.c, parse.h, parse.y, verify.c: Fix - spelling errors. - -2001-12-16 Kaveh R. Ghazi - - * lex.c (java_read_unicode, java_lex): Use hex_p/hex_value. - -2001-12-16 Bryce McKinlay - - * decl.c (java_init_decl_processing): Build otable_type correctly. - otable_decl is an otable_type. - -2001-12-15 Bryce McKinlay - - * java-tree.h (otable_methods, otable_decl, otable_syms_decl, - otable_type, otable_ptr_type, method_symbol_type, - method_symbols_array_type, method_symbols_array_ptr_type): New - field/global tree definitions. - (flag_indirect_dispatch): New flag. - * decl.c (java_init_decl_processing): Initialize new otable and - otable_syms type nodes and decls. Add new field "index" to - method_type_node. - * class.c (build_method_symbols_entry): New function. - (make_method_value): Set "index" to to method's vtable index for - virtual methods when indirect-dispatch is not used. - (make_class_data): For indirect-dispatch, don't emit the dtable_decl, - and set vtable_method_count to -1. Set otable and otable_syms field - if indirect-dispatch is used and there was something to put in them. - (build_method_symbols_entry): New function. - (emit_offset_symbol_table): New function. - * expr.c (get_offset_table_index): New function. - (build_invokevirtual): Build array reference to otable at the index - returned by get_offset_table_index, and use the result as the vtable - offset. - (build_invokeinterface): Similar. - * jcf-parse.c (yyparse): If indirect-dispatch, call - emit_offset_symbol_table at the end of compilation, after all classes - have been generated. - * jvspec.c: Don't pass findirect-dispatch to jvgenmain. - * lang.c (flag_indirect_dispatch): Define. - (lang_f_options): Add indirect-dispatch flag. - -2001-12-14 Matthias Klose - - * gcj.texi: Markup for man page generation. Document missing - options printed by --help. - Terminate description of gij's -ms option with a dot. - * Make-lang.in ($(srcdir)/java/*.1): New targets. - (java.generated-manpages java.install-man, java.uninstall, - java-maintainer-clean) Updated. - -2001-12-14 Hans Boehm - - * class.c (get_dispatch_table): Fix java vtable layout - for TARGET_VTABLE_USES_DESCRIPTORS. - * decl.c (java_init_decl_processing): Initialize - alloc_no_finalizer_node, finalize_identifier_node. - * expr.c (class_has_finalize_method): New function. - (expand_java_NEW): Generate calls for finalizer-free allocation. - (build_invokevirtual): Fix java vtable layout for - TARGET_VTABLE_USES_DESCRIPTORS. - * java-tree.h (enum java_tree_index): New entries: - JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE. - (alloc_no_finalizer_node, finalize_deintifier_node): New macros. - (class_has_finalize_method): declare. - (HAS_FINALIZER_P): New macro. - * parse.y (patch_invoke): Generate calls for finalizer-free - allocation. - -2001-12-12 Matthias Klose - - * Make-lang.in: JAVA_INSTALL_NAME, JAVA_CROSS_NAME: Remove - whitespace at end of line. - -2001-12-11 Tom Tromey - - * lex.c (java_init_lex): Define wfl_to_string as - gnu.gcj.runtime.StringBuffer unless generating bytecode. - -2001-12-11 Jeff Sturm - - * class.c (make_method_value): Use null_pointer_node to - represent empty exception table. - -2001-12-10 Tom Tromey - - * check-init.c (check_init) [SWITCH_EXPR]: Use SWITCH_HAS_DEFAULT. - -2001-12-10 Douglas B. Rupp - - * Make-lang.in (jvspec.o): Add $(OUTPUT_OPTION). - -2001-12-09 Per Bothner - - * check-init.c (current_switch_has_default): New static field. - (check_init): Case DEFAULT_EXPR: Set current_switch_has_default. - Case SWITCH_EXPR: Save/restore current_switch_has_default. If no - DEFAULT_EXPR seen, simulate a default alternative that copies state. - -2001-12-09 Tom Tromey - - * check-init.c (check_init): Don't allow pre- or post- increment - or decrement of final variable. - (final_assign_error): Minor error message rewording. - -2001-12-08 Tom Tromey - - * java-tree.h: Fixed typo. - - * gjavah.c (decompile_method): Don't decompile to `return this' - for static methods. - - * gjavah.c (cxx_keywords): Re-sorted. - * lex.c (cxx_keywords): Re-sorted. - - * gjavah.c (HANDLE_METHOD): Set `decompiled' before doing anything - else. - - * gjavah.c (print_namelet): Clear subnamelets. - (HANDLE_METHOD): Set `method_printed' earlier. - -2001-12-07 Tom Tromey - - * lang.c (lang_f_options): Added - optimize-static-class-initialization. - (java_decode_option): Removed special case. - -2001-12-07 Per Bothner - - * check-init.c (check_init): Fix typo freeing memory twice. - -2001-12-05 Per Bothner - - Restore support for static class initialization optimization. - * java-tree.h (STATIC_CLASS_INIT_OPT_P): Re-enable. - * check-init.c (check_int): At end of BLOCK handle initialization - blocks, which used to be done in java_complete_expand_method but did - not handle the case where check_for_initialization might allocate - more than a word of bits. - * decl.c (lang_make_tree): The smic field is now a tree. - * expr.c (build_class_init): Set DECL_FUNCTION_INIT_TEST_CLASS field. - * java-tree.h (DECL_FUNCTION_INIT_TEST_TABLE): New macro. - - * parse.y (emit_test_initialization): Combine hash_lookup calls. - - * java-tree.h (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): - Change from a hash table to a list. - (struct_lang_decl): Change field 'smic' to match. - * class.c (add_method_1): Initialize - DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND to null list. - * parse.y (adjust_init_test_initialization): Removed - inlined into - - (java_expand_method_bodies): -here, since 'smic' is now a list. - (patch_invoke): Add to 'smic' list, instead of hash_lookup. - - * check-init.c (WORD_SIZE): Use BITS_PER_UNIT. - - * class.c (java_hash_compare_tree_node): Fix casts. - -2001-12-04 Per Bothner - - * check-init.c: Handle definite unassignment to finals in addition - to definite assignment. - (loop_current_locals): New field. - (num_current_locals, int start_current_locals, num_current_words): - Make static. - (SET_P, CLEAR_P, SET_BIT): Add needed but missing parentheses. - (ASSIGNED_P, UNASSIGNED_P, SET_ASSIGNED, SET_UNASSIGNED, - CLEAR_ASSIGNED, CLEAR_UNASSIGNED): New macros. - (get_variable_decl, check_final_reassigned): New functions. - (check_init, check_bool_init): Modify as needed for checking finals. - (check_for_initialization): Take extra parameter and return void. - Do extra start-up logic to check final fields for assignment. - * parse.y (check_static_final_variable_assignment_flag, - reset_static_final_variable_assignment_flag, check_final_assignment, - check_final_variable_local_assignment_flag, - reset_final_variable_indirect_assignment_flag, - reset_final_variable_global_assignment_flag): Remove functions. - (java_complete_expand_methods, outer_field_access_fix, - patch_assignment): Remove no-longer used logic. - * java-tree.h (DECL_FIELD_FINAL_IUD): Change usage and comments. - * parse.y (register_fields, java_complete_tree): Update accordingly. - - * check-init.c (ALLOC_WORDS/FREE_WORDS): Use xmalloc/free, not alloca. - (DECLARE_BUFFERS, RELEASE_BUFFERS, ALLOC_BUFFER, FREE_BUFFER): New. - (check_cond_init, check_bool2_init): Use DECLARE_BUFFERS. - - * java-tree.h (STATIC_CLASS_INIT_OPT_P): Temporarily turn off. - - * java-tree.h (DECL FINAL): New bit-field. - (METHOD_FINAL, FIELD_FINAL, CLASS_FINAL): Define as DECL_FINAL. - (LOCAL_FINAL_P): Use DECL_FINAL rather than old LOCAL_FINAL. - (DECL_INIT_CALLS_THIS): New macro. - (struct lang_decl): New bit-field init_calls_this. - (DECL_FUNCTION_ALL_FINAL_INITIALIZED, DECL_FIELD_FINAL_LIIC, - DECL_FIELD_FINAL_IERR, LOCAL_FINAL, TYPE_HAS_FINAL_VARIABLE - (DECL_BIT_INDEX): Change to use pointer_alias_set since we now - use it for both local variables and final fields. - (struct lang_decl_var): Remove bit-fields final_liic, final_ierr, - and local_final. - (struct lang_type): Remove hfv bit-field. - (check_for_initialization): Change to return void. - - * java-tree.h (IS_ARRAY_LENGTH_ACCESS): New macros. - * expr.c (build_java_array_length_access): Set IS_ARRAY_LENGTH_ACCESS. - * check-init.c (final_assign_error): New helper function. - (check_final_reassigned, check_init): Use it. - (check_init): Also check IS_ARRAY_LENGTH_ACCESS for ARRAY.length. - - * java-tree.h (struct lang_decl, struct lang_decl_var): Change all - bit-fields to unsigned. - -2001-12-03 Per Bothner - - * parse.y (patch_binop): Minor constant folding. - - * parse.y (build_current_thisn): Shorter 'buffer'. - -2001-12-03 Per Bothner - - * decl.c (complete_start_java_method): Now generate TRY_FINALLY_EXPR - instead of CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR. - * jcf-write.c (generate_bytecode_insns): Remove support for - CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR as they are no longer used. - * check-init.c (check_init): Likewise. - -2001-12-03 Per Bothner - - * verify.c (subroutine_nesting): New function. - (verify_jvm_instructions): Use it to fix logic for checking that - we're done with the current subroutine. - - * verify.c (verify_jvm_instruction): For OPCODE_checkcast and - OPCODE_instanceof use POP_TYPE macro for better diagnostics. - -2001-12-03 Per Bothner - - * jcf.h: Fix obvious typo in comment. - * typeck.c (build_null_signature): Add comment. - -2001-12-03 Neil Booth - - * expr.c: Remove leading capital from diagnostic messages, as - per GNU coding standards. - * jcf-io.c: Similarly. - * jcf-parse.c: Similarly. - * jv-scan.c: Similarly. - * jvspec.c: Similarly. - * mangle.c: Similarly. - -2001-12-02 Tang Ching-Hui - Alexandre Petit-Bianco - - * expr.c (build_java_arrayaccess): Call save_expr on array for - correct evaluation order, modified comment, fixed indentation. - * parse.y: (patch_assignment): Correctly extract the array base - from the tree generate by build_java_arrayaccess, added comments. - (patch_array_ref): Remove SAVE_EXPR on ARRAY_REF. - Fixes PR java/3096, PR java/3803, PR java/3965. - -2001-12-01 Neil Booth - - * expr.c (expand_byte_code): Remove trailing periods from messages. - * jcf-parse.c (load_class, jcf_parse): Similarly. - * jcf-write.c (generate_classfile): Similarly. - * lex.c (java_lex): Similarly. - -2001-11-30 Bryce McKinlay - - * class.c (add_interface_do): Set BINFO_VPTR_FIELD. - -2001-11-29 Joseph S. Myers - - * Make-lang.in (java.generated-manpages): New dummy target. - -2001-11-27 Rainer Orth - - * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks - ASM_FINAL_SPEC. - (lang_specific_pre_link): Use set_input to set input_filename. - Append `main' here. - * jvgenmain.c (usage): Append literal `main' to CLASSNAME. - (main): Fix definition. - Strip `main' from classname. - Fixes PR java/227. - -2001-11-18 Roger Sayle - - * parse.h (java_expand_switch): Remove old prototype. - -2001-11-18 Tom Tromey - - Fix for PR java/1401: - * jcf-write.c (generate_bytecode_insns) [binop]: Handle case where - arg0 is null. - (generate_bytecode_insns) [MODIFY_EXPR]: Handle `OP=' case - correctly. - -2001-11-18 Neil Booth - - * lang.c (finish_parse): Rename to java_finish. - (LANG_HOOKS_FINISH, java_finish): New. - -2001-11-15 Neil Booth - - * decl.c (init_decl_processing): Rename java_init_decl_processing. - * java-tree.h: New prototype. - * lang.c (java_init): Update prototype. Combine with old init_parse. - -2001-11-13 Tom Tromey - - * gjavah.c (method_signature): New global. - (HANDLE_METHOD): Set it. - (decompile_return_statement): New function. - (decompile_method): Use it. - (print_method_info): Removed `synth' argument. - -2001-11-09 Neil Booth - - * java-tree.h (java_set_yydebug): New. - * jcf-parse.c (set_yydebug): Rename java_set_yydebug. - * lang.c (LANG_HOOKS_SET_YYDEBUG): Override. - (print_lang_decl, print_lang_type, print_lang_identifier, - print_lang_statistics, lang_print_xnode): Remove. - -2001-11-09 Neil Booth - - * jcf-parse.c (init_lex): Remove. - * lang.c (language_string, lang_identify): Remove. - (struct lang_hooks): Constify. - (LANG_HOOKS_NAME): Override. - (init_parse): Update. - -2001-11-08 Andreas Franck - - * Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle - program_transform_name the way suggested by autoconf. - (java.install-common): Also transform auxiliary program names with - program_transform_name. - -2001-11-08 Tom Tromey - - * parse.y (trap_overflow_corner_case): New rule. - (unary_expression): Use it. - * lex.c (java_init_lex): Don't set minus_seen. - (yylex): Don't use minus_seen. Communicate overflow to parser for - it to handle. - (error_if_numeric_overflow): New function. - * parse.h (minus_seen): Removed field. - (JAVA_RADIX10_FLAG): New define. - -2001-11-07 Tom Tromey - - Patch for PR java/1414: - * parse.y (case_label_list): New global. - (goal): Register case_label_list with GC. - (java_complete_lhs): Save new case on case_label_list. - (patch_switch_statement): Check for duplicate case labels. - -2001-11-07 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Removed unused third argument. - (java_complete_lhs): Removed unused third argument to patch_assignment. - -2001-11-06 Neil Booth - - * lang.c: Include langhooks-def.h. - * Make-lang.in: Update. - -2001-10-31 Zack Weinberg - - * Make-lang.in: Replace $(INTL_TARGETS) with po-generated. - -2001-10-29 Bryce McKinlay - - * mangle.c (find_compression_record_match): Don't match compression - records for package name elements unless they occur at the start of - the name. Fix for PR java/4717. - -2001-10-25 Bryce McKinlay - - * expr.c (expand_java_field_op): Don't special-case references to - java.lang.PRIMTYPE.TYPE. - (build_primtype_type_ref): Removed. - * java-tree.h (build_primtype_type_ref): Remove prototype. - * parse.y (maybe_build_primttype_type_ref): Removed. - (complete_function_arguments): Don't special-case references to - java.lang.PRIMTYPE.TYPE. - (patch_assignment): Likewise. - (array_constructor_check_entry): Likewise. - -2001-10-24 Alexandre Petit-Bianco - - * mangle.c (static tree compression_table): Fixed leading comment. - * parse.h (struct parser_ctxt): Fixed field comment. - * parse.y (check_pkg_class_access): New prototype, fixed leading - comment, new parameter used to emit error only if passed as true. - (parse_check_super): Pass extra argument to check_pkg_class_access. - (do_resolve_class): Likewise. - (process_imports): Likewise. - (read_import_dir): Fixed indentation. - (find_in_imports_on_demand): New local class_type_name. Local - node_to_use deleted. while loop changed into for loop. Report - multiple definition only for accessible classes. Improved error - message. - (start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS - assigned to parameter list, fixed indentation. while loop changed - into for loop, restore TREE_CHAIN on local `tem' before the next - iteration. - -2001-10-23 Richard Kenner - - * lang.c (lang_get_alias_set): Deleted. - -2001-10-21 Kaveh R. Ghazi - - * gjavah.c (jni_print_char): Fix thinko in last change. - - * gjavah.c (jni_print_char, decode_signature_piece): Use - safe-ctype macros and/or fold extra calls into fewer ones. - * lex.c (java_read_unicode, java_lex): Likewise. - * lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT, - JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise. - * mangle_name.c (append_unicode_mangled_name, - unicode_mangling_length): Likewise. - -2001-10-17 Richard Henderson - - * Make-lang.in (java/lang.o): Depend on langhooks.h. - -2001-10-15 Alexandre Petit-Bianco - - * lang.c (langhooks.h): Included. - (LANG_HOOKS_INIT): Redefined. - (LANG_HOOKS_INIT_OPTIONS): Likewise. - (LANG_HOOKS_DECODE_OPTION): Likewise. - (struct lang_hooks lang_hooks): New initialization. - -2001-10-11 Per Bothner - - * parse.y (patch_synchronized_statement): Use a TRY_FINALLY_EXPR - rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair. - The former is simpler, and jcf-write.c handles it better. - (java_complete_lhs): No longer need to handle CLEANUP_POINT_EXPR - or WITH_CLEANUP_EXPR. - * jcf-write.c: Revert Alex's change from 2000-10-18. It is no - longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine. - - * parse.y (patch_if_else_statement): If the condition is constant, - optimize away the test. - -2001-10-09 Alexandre Petit-Bianco - - * parse.y (patch_cast): Call patch_string on the first operand of - the incoming node, update it if necessary. Fixes PR java/4510. - -2001-10-09 Bryce McKinlay - - * parse.y (find_as_inner_class): Don't disregard the enclosing scope - when name qualifier matches a package name. - -2001-10-08 Tom Tromey - - Fix for PR java/4489: - * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always - force a new label when computing `body_block'. - -2001-10-07 Kaveh R. Ghazi - - * jcf-io.c (format_uint): Const-ify. - * lang.c (java_tree_code_type, java_tree_code_length): Likewise. - * lex.c (java_get_line_col): Likewise. - * parse.y (build_incdec): Likewise. - -2001-10-05 Alexandre Petit-Bianco - - * parse.y (register_incomplete_type): Set JDEP_SUPER to be given - a NULL enclosing context if appropriate. Fixes PR java/4466. - -2001-10-03 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Use lvalue's original TYPE when - building the final COMPOUND_EXPR. - (try_reference_assignconv): Fixed leading comment. - -2001-09-26 Alexandre Petit-Bianco - - * parse.y (check_final_variable_indirect_assignment): For - COMPOUND_EXPR, return only if finals were found initialized - properly, if not, keep on checking. - (check_final_variable_global_assignment_flag): New local - error_found, set when appropriate and used to decide whether to - report uninitialized finals. Fixed typo in comment. - -2001-09-22 Alexandre Petit-Bianco - - * decl.c (init_decl_processing): Fixed typo in predef_filenames - last three initializations. Fixes PR java/4360. - -2001-09-21 Richard Henderson - - * class.c (get_dispatch_table): Handle function descriptors. - (build_dtable_decl): Likewise. - * expr.c (build_invokevirtual): Likewise. - -2001-09-20 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Build class initialization - when static finals are used to qualify method invocation. - Fixes PR java/4366. - -2001-09-19 Alexandre Petit-Bianco - - * parse.h: (WFL_STRIP_BRACKET): Re-written using - build_type_name_from_array_name. - (STRING_STRIP_BRACKETS): New macro. - * parse.y (build_type_name_from_array_name): New function. - (array_creation_expression:): Accumulate []s instead of [s. - (cast_expression:): Accumulate []s instead of [s after cast type - name. - (build_array_from_name): Local string deleted, use - build_type_name_from_array_name. - (build_unresolved_array_type): Accumulate []s instead of [s after - type name. - (register_fields): Fixed comment. - (resolve_class): Local name, base deleted, new locals tname and - array_dims. Use build_type_name_from_array_name. Use array_dims to - build array type. - (purify_type_name): Use STRING_STRIP_BRACKETS. - -2001-09-18 Andreas Jaeger - - * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout. - * jv-scan.c: Likewise. - -2001-09-17 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Inner class creation context - check not enforced within constructors. Fixes PR java/1873. - -2001-09-16 Tom Tromey - - * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call - NOTE_PUSH for single-case push. Fixes PR java/4189. - -2001-09-13 Alexandre Petit-Bianco - - * java-tree.h (TYPE_IMPORT_LIST): New macro. - (TYPE_IMPORT_DEMAND_LIST): Likewise. - (struct lang_type): New fields import_list and import_demand_list. - * parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and - TYPE_IMPORT_DEMAND_LIST with ctxp counterparts. - (do_resolve_class): New local saved_enclosing_type, initialized, - passed as parameter to find_in_imports and find_in_imports_on_demand. - (find_in_imports): Added paramater enclosing_type, use its - TYPE_IMPORT_LIST when applicable. - (find_in_imports_on_demand): Added parameter enclosing_type, use - its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals - declaration and initialization. - (fold_constant_for_init): Switch/restore current_class to the - appropriate context. - -2001-09-13 Mark Mitchell - - * verify.c (verify_jvm_instructions): Fix typo. - -2001-09-13 Kaveh R. Ghazi - - * expr.c (expand_invoke): Const-ification. - * parse.y (patch_method_invocation): Likewise. - -2001-09-12 Kaveh R. Ghazi - - * gjavah.c (cxx_keywords): Const-ification. - * keyword.gperf (java_keyword): Likewise. - * lang.c (java_tree_code_name): Likewise. - * lex.c (cxx_keywords): Likewise. - * parse.y (java_parser_context_suspend, merge_string_cste): Likewise. - -2001-09-11 Richard Henderson - - * parse.h (ctxp_for_generation): Mark extern. - -2001-09-10 Richard Henderson - - * class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl. - -2001-09-07 Matt Kraai - - * typeck.c (java_array_type_length, build_prim_array_type): - Represent empty arrays by NULL index. - -2001-09-06 Alexandre Petit-Bianco - - * java-tree.h (compile_resource_file): Grouped with other prototypes. - * jvspec.c (lang_specific_driver): Removed unused local `ptr.' - -2001-09-06 Anthony Green - - * class.c (O_BINARY): Define if necessary. - (registerResource_libfunc): Declare. - (init_class_processing): Initilize registerResource_libfunc. - (compile_resource_file): New function. - * java-tree.h (resource_name): Declare. - (compile_resource_file): Declare. - * jcf-parse.c (yyparse): Handle compiling java resource files. - * lang.c (java_decode_option): Handle -fcompile-resource option. - * jvspec.c (lang_specific_driver): Handle -R flag for compiling - resource files. - * gcj.texi (Code Generation): Add documentation for -R flag. - -2001-09-05 Alexandre Petit-Bianco - - * jcf-write.c (generate_classfile): Issue an error in case of - field/initial value mismatch. - * parse.y (analyze_clinit_body): Keep if an array is - being initialized and we're generating bytecode. - (java_complete_lhs): In MODIFY_EXPR section: added comments, - set DECL_INITIAL properly when appropriate. - Fixes PR java/4230 - Fixes PR java/4204 - -2001-09-01 Per Bothner - - * parse.y (maybe_yank_clinit): A field without an initializer is not - relevant. All initializers except static final and constant require - , regardless of flag_emit_class_files. - -2001-08-31 Per Bothner - - * class.c (set_constant_value): When not emitting class files, then a - String ConstantValue is a utf8const_ptr_type. - -2001-08-30 Per Bothner - - * jcf-write.c (generate_classfile): Check that field is primitive - or string before emitting ConstantValue attribute. - -2001-08-30 Per Bothner - - * parse.y (resolve_qualified_expression_name): If creating a - COMPOUND_EXPR, set it's type correctly. - -2001-08-30 Per Bothner - - * jcf-io.c (open_class): Set filename field. - - * jcf-parse,c (parse_class_file): Set current_function_decl - for better error message when Code attribute is missing. - - * lang.c (put_decl_node, lang_print_error): Re-arrange for - better diagnostics, especially for constructors. - -2001-08-30 Per Bothner - - * jcf-write.c (generate_classfile): Don't write ConstantValue - attribute if field is not final, for compatibility with jdk. - - * jcf-write.c (generate_classfile): Convert ConstantValue values - to correct type. Work-around for front-end bug. - * class.c (set_constant_value): Error if constant has wrong type. - -2001-08-30 Per Bothner - - * jcf-dump.c (print_constant): Fix fencepost error so "Float" and - "Double" are printed at verbosity 1. - - * jcf-dump.c (main): Disable flag_print_attributes if --javap. - - * jcf-dump.c (SPECIAL_IINC): Remove unneeded casts to long. - -2001-08-30 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Don't verify final re-assignment here. - (java_complete_lhs): Verify assignments to finals calling - patch_assignment. Verify re-assignments to finals before calling - patch_assignment. - -2001-08-29 Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs. - Fixes PR java/1413 - -2001-08-28 Alexandre Petit-Bianco - - * lex.c (java_lex): new local found_hex_digits. Set and then used - in test to reject invalid hexadecimal numbers. - * parse.y (java_complete_tree): Prevent unwanted cast with - initialized floating point finals. - (patch_binop): Emit a warning when detecting a division by zero, - mark result not constant, don't simplify non integer division. - -2001-08-28 Per Bothner - - * jcf-write.c (generate_bytecode_insns): For increments and - decrements just recurse to push constant. Improvement on Mark's patch. - -2001-08-28 Mark Mitchell - - * jcf-write.c (generate_bytecode_insns): Generate an integer to - real conversion for increments and decrements of reals. - -2001-08-27 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Handle unresolved - qualified expressions, prevent numerical qualifiers, fixed typo. - Fixes PR java/4141 - -2001-08-24 Alexandre Petit-Bianco - - * parse.y (check_deprecation): Handle TYPE_DECL in a special case, - don't report anything but deprecated class when marked so. Handle - VAR_DECL. - (patch_method_invocation): Check deprecation on methods and types. - (patch_binop): code becomes an enum tree_code, added default: to - switch to handle that. Detect division by zero, try to fold and - return before using a subroutine. - -2001-08-23 Alexandre Petit-Bianco - - * jcf-parse.c (yyparse): Set magic to 0, don't issue error for a - file smaller than 4 bytes. - * parse.y (check_inner_circular_reference): New function. - (check_circular_reference): Likewise. - (array_initializer:): Accept {,}. - (java_check_circular_reference): Rewritten using - check_circular_reference and check_inner_circular_reference. - (java_complete_expand_method): Unconditionally save and restore - the unpurged exception list. - (build_dot_class_method_invocation): Unmangle signature parameter. - -2001-08-21 Tom Tromey - - * decl.c (init_decl_processing): Add `throws' field to method - descriptor. - * class.c (make_method_value): Compute `throws' field for method. - -2001-08-22 Alexandre Petit-Bianco - - * parse.y (resolve_inner_class): Keep local_enclosing to NULL if - circularity is detected. - (ctors_unchecked_throws_clause_p): Fixed leading comment. - -2001-08-17 Richard Henderson - - * class.c (emit_register_classes): Add align parameter to - call to assemble_integer. - -2001-08-16 Alexandre Petit-Bianco - - * jcf-parse.c (load_class): New locals saved and class_loaded. If - loading a class_or_name fails, try considering an innerclass name - and load the enclosing context. - * parse.y (resolve_inner_class): New function. - (find_as_inner_class): Added leading comment. - (register_incomplete_type): Keep the current context as enclosing - context for JDEP_FIELD dependencies. - (do_resolve_class): Locals new_class_decl and super initialized to - NULL. Call resolve_inner_class, explore the enclosing context - superclass if necessary. - Fixes PR java/4007 - -2001-08-16 Tom Tromey - - * jcf-dump.c (main): Updated for change to jcf_path_seal. - * gjavah.c (main): Updated for change to jcf_path_seal. - * lang.c (version_flag): New global. - (java_decode_option): Recognize `-version'. - (java_init): Update for change to jcf_path_seal. - * jcf.h (jcf_path_seal): Added `print' argument. - * jcf-path.c (jcf_path_seal): Added `print' argument. - -2001-08-13 Zack Weinberg - - * Make-lang.in (java/decl.o): Update dependencies. - * decl.c: Include libfuncs.h, don't include toplev.h. - -2001-08-12 Alexandre Petit-Bianco - - * decl.c (init_decl_processing): exception_type_node, - class_not_found_type_node, and no_class_def_found_type_node - initialized. predef_filenames augmented accordingly. - instinit_identifier_node initialized. - * java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed. - * java-tree.h (enum java_tree_index): New entries - JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE, - JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE. - (exception_type_node): New macro. - (class_not_found_type_node): Likewise. - (no_class_def_found_type_node): Likewise. - (instinit_identifier_node): Likewise. - (PREDEF_FILENAMES_SIZE): Adjusted. - (TYPE_HAS_FINAL_VARIABLE): Fixed typo. - (struct lang_type): Fixed typo in bitfield name. - (DECL_INSTINIT_P): New macro. - (ID_INSTINIT_P): Likewise. - * jcf-write.c (generate_classfile): instinit$ bears the Synthetic - attribute. - * parse.y (encapsulate_with_try_catch): New function. - (generate_instinit): Likewise. - (build_instinit_invocation): Likewise. - (ctors_unchecked_throws_clause_p): Likewise. - (add_instance_initializer): Deleted. - (build_instance_initializer): Likewise. - (in_instance_initializer): Likewise. - (check_method_redefinition): instinit$ not to be verified. - (java_complete_expand_methods): Generate instinit$, simplified code. - (build_dot_class_method): Eliminated unnecessary locals. Use - encapsulate_with_try_catch, removed unnecessary code. - (fix_constructors): New local iii. Use build_instinit_invocation. - (patch_method_invocation): Added comment. - (maybe_use_access_method): Don't consider instinit$. - (find_applicable_accessible_methods_list): Shorten the search for - instinit$ too. - (java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed. - (patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer. - (patch_throw_statement): Likewise. Fixed typo. - -2001-08-12 David Edelsohn - - Revert: - 2001-08-02 Rainer Orth - * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks - ASM_FINAL_SPEC. - (lang_specific_pre_link): Use set_input to set input_filename. - Append `main' here. - * jvgenmain.c (usage): Append literal `main' to CLASSNAME. - (main): Fix definition. - Strip `main' from classname. - Fixes PR java/227. - -2001-08-11 Zack Weinberg - - * lex.h: Don't include setjmp.h. Don't define - SET_FLOAT_HANDLER or prototype set_float_handler. - -2001-08-09 Alexandre Petit-Bianco - - * expr.c (java_lang_expand_expr): Call `expand_end_bindings' and - `poplevel' in the right order. - -2001-08-09 Richard Henderson - - * Make-lang.in (class.o): Depend on TARGET_H. - * class.c (emit_register_classes): Use target hooks instead of - assemble_constructor and assemble_destructor. - -2001-08-08 Alexandre Petit-Bianco - - * check-init.c (flags.h): Include - (check_init): Don't report uninitialized static class - initialization flags, don't free bit index when doing static class - initialization optimization. - (check_for_initialization): Return type changed to `unsigned int.' - (attach_initialized_static_class): New function. - * class.c (add_method_1): Create the initialized static class - table if necessary. - (finish_class): Always emit deferred inline methods. - * decl.c (emit_init_test_initialization): Moved to expr.c - (complete_start_java_method): Don't traverse - DECL_FUNCTION_INIT_TEST_TABLE. - (lang_mark_tree): Mark hash tables in function decls. - * expr.c (emit_init_test_initialization): Moved from decl.c. - (build_class_init): Create LAG_DECL_SPECIFIC for the static class - initialization flag, set DECL_CONTEXT and - LOCAL_CLASS_INITIALIZATION_FLAG. - (java_lang_expand_expr): Emit initialization code for static class - initialized flags when entering block, if necessary. - * gcj.texi (-fno-optimize-static-class-initialization): Documented. - * java-tree.h (flag_optimize_sci): New global variable declaration. - (DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro. - (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise. - (LOCAL_FINAL_P): Fixed typo in comment. - (FINAL_VARIABLE_P): Likewise. - (LOCAL_CLASS_INITIALIZATIO_FLAG): New macro. - (LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise. - (struct lang_decl): New fields `ict', `smic' and `cif.' - (check_for_initialization): New returned value for global. - (attach_initialized_static_class): New global function. - (STATIC_CLASS_INIT_OPT_P): New macro. - * lang-options.h (-fno-optimize-static-class-initialization): New flag. - * lang.c (java_decode_option): Handle - `-fno-optimize-static-class-initialization' - * parse.y (start_complete_expand_method): New function. - (java_expand_method_bodies): Likewise. - (attach_init_test_initialization_flags): Likewise. - (adjust_init_test_initialization): Likewise. - (emit_test_initialization): Likewise. - (java_complete_expand_methods): Nullify abstract and native method - bodies. - (java_complete_expand_method): New locals `fbody', `block_body' - and `exception_copy.' Reorganized: directly return on empty method - bodies, call `start_complete_expand_method', remember definitely - initialized static class in function, don't expand method bodies. - (java_expand_classes): Call `java_expand_method_bodies' before - `finish_class' when compiling to native. - (resolve_expression_name): Use `orig' after building outer class - field access. - (patch_invoke): Remember static method invocations. - -2001-08-06 Richard Henderson - - * class.c (emit_register_classes): Pass a symbol_ref and priority - to assemble_constructor. - -2001-08-02 Alexandre Petit-Bianco - - * java-tree.h (all_class_filename): New macro. - (enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.' - (BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link - newly created IDENTIFIER_NODE to `all_class_filename.' - -2001-08-01 Jeff Sturm - - * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): - Use ggc_add_tree_root to register roots. - -2001-07-31 Alexandre Petit-Bianco - - * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its - second operand calling check_init. - * decl.c (complete_start_java_method): Swaped second and third - arguments while creating WITH_CLEANUP_EXPR node. - * jcf-write.c (generate_bytecode_insns): Use second operand - instead of third when handling WITH_CLEANUP_EXPR. - * parse.y (java_complete_lhs): Expand second operand of - WITH_CLEANUP_EXPR nodes. - (patch_synchronized_statement): Swaped second and third arguments - while creating WITH_CLEANUP_EXPR node. - -2001-07-18 Alexandre Petit-Bianco - - * parse.y (create_interface): Avoid cyclic inheritance report when - syntax error encountered during class definition. - Fixes PR java/2956 - -2001-08-02 Rainer Orth - - * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks - ASM_FINAL_SPEC. - (lang_specific_pre_link): Use set_input to set input_filename. - Append `main' here. - * jvgenmain.c (usage): Append literal `main' to CLASSNAME. - (main): Fix definition. - Strip `main' from classname. - Fixes PR java/227. - -2001-07-18 Tom Tromey - - For PR java/2812: - * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H. - * lex.c (java_new_lexer): Use ICONV_CONST. - (java_read_char): Likewise. - * Make-lang.in (jc1$(exeext)): Link against LIBICONV. - (jv-scan$(exeext)): Likewise. - -2001-07-17 Alexandre Petit-Bianco - - * parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.' - * parse.y (check_class_interface_creation): Allow `private' if the - enclosing is not an interface. - (create_interface): Interface tagged public if the enclosing - context is an interface. - (create_class): Class tagged public if the enclosing context - is an interface. - Fixes PR java/2959 - -2001-07-17 Alexandre Petit-Bianco - - * class.c (push_class): Set DECL_SIZE to `integer_zero_node.' - Fixes PR java/2665 - -2001-07-14 Tim Josling - - * check-init.c (check_init): Remove references to EXPON_EXPR. - -2001-07-13 Alexandre Petit-Bianco - - * parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset - TREE_CONSTANT_OVERFLOW of CASE_EXPR value. - Fixes PR java/3602 - -2001-07-13 Tom Tromey - - * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1 - invocation. - -2001-07-12 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Don't override primary if one - is already provided, but let this$ be built. Fixed comment. - -2001-07-12 Alexandre Petit-Bianco - - * parse.y (empty_statement:): Report empty statement error only - when found at class declaration level. - Fixes PR java/3635 - -2001-07-12 Tom Tromey - - * expr.c (expand_load_internal): New function. - (LOAD_INTERNAL): Use it. - -2001-07-11 Alexandre Petit-Bianco - - * parse.y (verify_constructor_super): Compare anonymous class ctor - args with `valid_method_invocation_conversion_p.' - Fixes PR java/3285 - -2001-07-10 Alexandre Petit-Bianco - - * lang-specs.h: Forbit the use if `-femit-class-file{s}' without - `-fsyntax-only.' Fixes PR java/3248 - -2001-07-10 Alexandre Petit-Bianco - - * jcf-io.c (find_class): Clarified error message. Fixes PR java/2603 - -2001-07-10 Alexandre Petit-Bianco - - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the - current function is static. Fixes PR java/1970 - -2001-07-09 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Add enclosing context to ctor - calls if necessary. Fixes PR java/2953 - -2001-07-09 Alexandre Petit-Bianco - - * parse.y (resolve_package): Abort if qualified expression member - isn't right. - (qualify_ambiguous_name): Don't qualify as type if `this' in use. - Fixes PR java/1391 - -2001-07-07 Zack Weinberg - - * verify.c: Don't use // comments. - -2001-07-05 Tom Tromey - - * lang.c (flag_assume_compiled): Removed. - * java-tree.h (flag_assume_compiled): Removed. - * lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc, - -fhash-synchronization, -fuse-divide-subroutine, - -fcheck-references, -femit-class-file, -femit-class-files, - -fassume-compiled. Updated --encoding information. Changed - -foutput-class-dir to `-d'. - -2001-07-04 Daniel Berlin - - * jcf-parse.c (parse_class_file): Add lineno parameter to - debug_start_source_file call. - -2001-07-04 Joseph S. Myers - - * gcj.texi: Use gpl.texi. - * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update - dependencies and use doc/include in search path. - -2001-07-03 Jeff Sturm - - * parse.y (fix_constructors): Test if a CALL_EXPR invokes - `this'. If so, don't build instance initializers. - -2001-07-03 Alexandre Petit-Bianco - - * parse.y (resolve_expression_name): Improved error message for - inner class cases. Fixes PR java/1958 - -2001-06-28 Gabriel Dos Reis - - * lang.c: #include diagnostic.h - (lang_print_error): Add a `diagnostic_context *' parameter. - (java_dummy_print): Likewise. - * Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h - -2001-06-27 Alexandre Petit-Bianco - - * jcf-parse.c (gcc_mark_jcf): Test for a finished JCF. - * jcf.h (typedef struct JCF): New bitfield `finished.' - (JCF_FINISH): Set `finished.' - (JCF_ZERO): Reset `finished.' - Fixes PR java/2633 - -2001-06-27 Alexandre Petit-Bianco - - * parse.y (class_body_declaration:): Don't install empty instance - initializers. - Fixes PR java/1314 - -2001-06-27 Alexandre Petit-Bianco - - * class.c (set_super_info): Call `set_class_decl_access_flags.' - (set_class_decl_access_flags): New function. - * java-tree.h (set_class_decl_access_flags): New prototype. - * jcf-parse.c (handle_innerclass_attribute): Read and set access flags. - (parse_class_file): New local `decl_max_locals.' Take wide types - into account to compute DECL_MAX_LOCALS. - * parse.y (type_import_on_demand_declaration:): Ignore duplicate - imports on demand. - -2001-06-22 Jan van Male - - * zipfile.h: Use GCC_JCF_H instead of JCF_H. - -2001-06-20 Alexandre Petit-Bianco - - * class.c (java_hash_tree_node): Fixed indentation in leading comment. - * parse.y (do_resolve_class): Moved comments out to leading comment - section. Removed local `start', New local `_ht' and - `circularity_hash.' Record `enclosing' in hash table and search - it to detect circularity. Use `enclosing' as an argument to - `lookup_cl.' Free the hash table when done. - -2001-06-19 Tom Tromey - - * lex.c (java_read_char): Disallow invalid and overlong - sequences. Fixes PR java/2319. - -2001-06-05 Jeff Sturm - - * decl.c (create_primitive_vtable): Don't call make_decl_rtl. - -2001-06-04 Alexandre Petit-Bianco - - * expr.c (force_evaluation_order): Match wrapped ctor calls, locate - arguments accordingly. - -2001-06-02 Joseph S. Myers - - * gcj.texi: Move contents to just after title page. - -2001-06-01 Alexandre Petit-Bianco - - * parse.y (type_literals:): Use `build_incomplete_class_ref' with - builtin type. - (patch_incomplete_class_ref): Build the class ref, build the class - init if necessary, complete the tree. - Fixes PR java/2605 - -2001-05-31 Alexandre Petit-Bianco - - * parse.y (lookup_field_wrapper): Test `name' code. - (resolve_qualified_expression_name): Test `qual_wfl' code. - (qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation, - handle `qual_wfl' by code. - (maybe_build_primttype_type_ref): Test `wfl' code. - -2001-05-23 Theodore Papadopoulo - - * Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on - fdl.texi. - (java/gcj.dvi): Use TEXI2DVI instead of custom tex calls. Create - the dvi file in the java directory. - -2001-05-25 Sam TH - - * gen-table.pl javaop.h jcf.h lex.h, - parse.h: Fix header include guards. - -2001-05-23 Joseph S. Myers - - * jv-scan.c (version): Update copyright year. - -2001-05-21 Per Bothner - - * jcf-parse.c (read_class): If class is from .class or .zip file - and it's already been read, don't push/pop parser context. - -2001-05-18 Per Bothner - - * jvspec.c (lang_specific_pre_link): Re-arrange the linker - command line so the jvgenmain-generated main program comes first. - -2001-05-15 Tom Tromey - - * class.c (build_utf8_ref): Don't generate identifier based on - utf8const contents. - -2001-05-12 Richard Henderson - - * java-tree.def (JAVA_EXC_OBJ_EXPR): New. - * expr.c (java_lang_expand_expr): Expand it. - (process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of - calling build_exception_object_ref. - * parse.y (catch_clause_parameter): Likewise. - (build_dot_class_method): Likewise. - (try_reference_assignconv): Likewise. - * check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR. - * jcf-write.c (generate_bytecode_insns): Likewise. - -2001-05-07 Alexandre Petit-Bianco - - * parse.y (build_unresolved_array_type): Set - EXPR_WFL_QUALIFICATION on the newly created wfl. - Fixes PR java/2538. Fixes PR java/2535. - -2001-05-07 Alexandre Petit-Bianco - - * parse.y (fix_constructors): Removed unnecessary assignment to - local. Moved assignment to `this$', fixed comments and - indentation. - (build_wfl_wrap): Fixed indentation. - Fixes PR java/2598, java/2579 and java/2658. - -2001-05-03 Mo DeJong - - * lex.c (java_new_lexer): Call iconv_close on temp handle used to - check for byte swap. - -2000-05-02 Jeff Sturm - - * expr.c (build_class_init): Move MODIFY_EXPR - outside of COND_EXPR. Remove variable `call'. - -2001-05-02 Kaveh R. Ghazi - - * decl.c: NULL_PTR -> NULL. - * jcf-write.c: Likewise. - -2001-05-01 Tom Tromey - - * Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'. - (java/gcj.dvi): Added $(srcdir) to TEXINPUTS. - * gcj.texi: Updated copyright text. Include fdl.texi. - (Top): Link to new node. - -2001-05-01 Per Bothner - - * parse.h (REGISTER_IMPORT): Use tree_cons instead of chainon. - -2001-05-01 Per Bothner - - * parse.y (java_pop_parser_context): The TREE_VALUE of a link in the - import_list contains the name, not the TREE_PURPOSE. - -2001-04-29 Kaveh R. Ghazi - - * jcf-io.c (read_zip_member): Cast to long in comparison with - signed value. - - * jvspec.c (lang_specific_driver): Initialize variables. - - * mangle.c (find_compression_record_match): Likewise. - - * typeck.c (build_null_signature): Provide static prototype. Mark - parameter with ATTRIBUTE_UNUSED. - - * verify.c (verify_jvm_instructions): Initialize variable. - -2001-04-27 Bryce McKinlay - - * parse.y (do_resolve_class): Check for cyclic inheritance during - inner class resolution. - -2001-04-27 Per Bothner - - * parse.y (java_expand_classes): Don't change ctxp_for_generation - while iterating, since that could cause gc to lose stuff. - -2001-04-26 Per Bothner - - Fix method search wrt scope of inner classes to match JLS2. - * typeck.c (build_null_signature): New static function. - (has_method): New function. Uses build_null_signature and lookup_do. - * java-tree.h (has_method): New declaration. - * parse.y (find_applicable_accessible_methods_list): Do not search - context of inner classes here. - (patch_method_invocation): Search scope, ie. current and outer clases, - for method matching simple name, to find class. - -2001-04-26 Per Bothner - - * jcf-write.c (generate_bytecode_insns case SWITCH_EXPR): - Fix thinko: If a single case, use if_icmpeq, not ifeq. - - * constants.c (find_methodref_with_class_index): New function. - (find_methodref_index): Use find_methodref_with_class_index. - * java-tree.h (find_methodref_with_class_index): New declaration. - * jcf-write.c (generate_bytecode_insns case CALL_EXPR): Don't change - DECL_CONTEXT, instead use new find_methodref_with_class_index function. - If context changed from interface to class, don't use invokeinterface. - -2001-04-25 Per Bothner - - * verify.c (verify_jvm_instructions): For field instructions, - check that field index is valid. For invoke instructions, check that - method index is valid. - -2001-04-25 Alexandre Oliva - - * config-lang.in (target_libs): Copy from $libgcj_saved. - -2001-04-25 Bryce McKinlay - - * decl.c (init_decl_processing): Add new class "protectionDomain" - field. - * class.c (make_class_data): Set initial value for "protectionDomain". - -2001-04-22 Kaveh R. Ghazi - - * jvspec.c (lang_specific_driver): Fix memory allocation - deficit, by using concat in lieu of xmalloc/sprintf. - -2001-04-20 Per Bothner - - Fixes to compile multiple .class files at once. - * decl.c (init_decl_processing): Don't set CLASS_LOADED_P. - * java-tree.h (CLASS_PARSED_P): New macro. - (CLASS_LOADED_P): Re-define to use TYPE_SIZE and CLASS_PARSED_P. - * jcf-parse.c (jcf_parse_source): Inline into read_class. - (read_class): Avoid some code duplication. - Don't call JCF_FINISH for a .class file - might be needed later. - (jcf_parse): Don't call layout_class here. Check/set CLASS_PARSED_P - rather than CLASS_LOADED_P, since latter implies class laid out. - (yyparse): Do layout_class and JCF_FINISh here instead, in pass 2. - * parse.y: Don't need to set CLASS_LOADED_P for array types. - -2001-04-11 Kaveh R. Ghazi - - * Make-lang.in (java/boehm.o): Depend on toplev.h. - - * boehm.c: Include toplev.h. - -2001-04-06 Tom Tromey - Alexandre Petit-Bianco - - Fix for PR gcj/1404 and PR gcj/2332: - * parse.y (build_array_from_name): If we use the type_wfl then - accumulate dimensions from the original type as well. - (build_unresolved_array_type): Don't modify TYPE_OR_WFL in place. - -2001-04-06 Tom Tromey - - * parse.y (analyze_clinit_body): Return true if the second operand - of a METHOD_EXPR is nonzero. - -2001-04-06 Tom Tromey - - * Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build - directory. - ($(srcdir)/java/parse.c): Likewise. - -2001-04-05 Alexandre Petit-Bianco - - * gcj.texi: Use `which-gcj' instead of `which-g77.' - (version-gcc): Initialized. - (which-gcj): Likewise. - -2001-04-04 Alexandre Petit-Bianco - - * java-tree.h (struct lang_decl): New macro - `DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.' - * parse.y (build_instance_initializer): New function. - (add_instance_initializer): Use it. - (java_fix_constructors): Set `current_class' before fix pass. - (fix_constructors): Just return if already fixed. Move `super()' - invocation ahead. Use `build_instance_initializer.' - Fixes PR java/1315. - -2001-04-04 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Pass field's - DECL_CONTEXT to `not_accessible_p.' - (not_accessible_p): Changed parameters order in `inherits_from_p' - invocation. - -2001-03-27 Andrew Haley - - * lang-options.h: Add flag_check_references. - -2001-04-04 Per Bothner - - * java-tree.h (CONSTANT_VALUE_P): New macro. - * jcf-write.c (generate_classfile): Use CONSTANT_VALUE_P. - * parse.y (maybe_build_class_init_for_field): New static function. - (resolve_expression_name, resolve_field_access): Use - maybe_build_class_init_for_field instead of build_class_init - This does not do the init if the field is compile-time-constant. - (resolve_field_access): Simplify. - - * parse.y (fold_constant_for_init): Merge test into switch. - -2001-04-03 Zack Weinberg - - * Make-lang.in (buffer.o, check-init.o, class.o): Don't depend - on gansidecl.h. - * buffer.c, jvgenmain.c: Don't include gansidecl.h. - -2001-04-02 Zack Weinberg - - * expr.c (pop_type_0): Save the result of the first - lang_printable_name call in a scratch buffer, so it - won't be clobbered by the second call. - -2001-03-30 Alexandre Petit-Bianco - - * parse-scan.y (array_type:): Rewritten. - (type_declaration:): `empty_statement' replaces `SC_TK.' - (class_member_declaration:): `empty statement' added. - (method_body:): Simplified. - (static_initializer:): Likewise. - (primary_no_new_array:): Use `type_literals.' - (type_literals:): New rule. - (dims:): Set and update `bracket_count.' - Fixes PR java/1074. Fixes PR java/2412. - -2001-03-28 Hans Boehm - - * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.' - (get_boehm_type_descriptor): Set type on returned value to be a - pointer length integer. - -2001-03-28 Kaveh R. Ghazi - - * expr.c (pop_type_0): Call `concat' rather than building the - string manually. - (pop_type): Add format specifier in call to `error'. - - * parse.y (patch_method_invocation): Avoid casting away - const-ness. - -2001-03-28 Jeffrey Oldham - - * jvgenmain.c (do_mangle_classname): End string constant with '\0'. - -2001-03-28 Richard Henderson - - IA-64 ABI Exception Handling: - * Make-lang.in (except.o): Don't depend on eh-common.h. - * check-init.c (check_init): Handle EXC_PTR_EXPR. - * decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw. - [soft_exceptioninfo_call_node]: Remove. - [eh_personality_libfunc, lang_eh_runtime_type]: New. - (end_java_method): No emit_handlers. - * except.c (java_set_exception_lang_code): Remove. - (method_init_exceptions): Don't call it. - (prepare_eh_table_type): No CATCH_ALL_TYPE. - (build_exception_object_ref): New. - (expand_end_java_handler): Update for except.h name changes. - (emit_handlers, expand_resume_after_catch): Remove. - * expr.c (java_lang_expand_expr): Update for except.h name changes. - (process_jvm_instruction): Use build_exception_object_ref. - * java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove. - (soft_exceptioninfo_call_node): Remove. - (build_exception_object_ref): Declare. - * jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No - soft_exceptioninfo_call_node. Move processing ... - [EXC_PTR_EXPR]: ... here. - * parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code. - * parse.y (catch_clause_parameter): Use build_exception_object_ref. - (source_end_java_method): No java_set_exception_lang_code or - emit_handlers. - (build_dot_class_method): Use build_exception_object_ref. - (try_reference_assignconv): Check EXC_PTR_EXPR not - soft_exceptioninfo_call_node. - -2001-03-28 Richard Henderson - - * java-tree.h (throw_node): Define as a single member of - java_global_trees instead of a separate array. - (JTI_THROW_NODE): New. - * decl.c (throw_node): Don't declare. - (init_decl_processing): Init a scalar throw_node. - Don't register it for gc. - * check-init.c (check_init): Reference scalar throw_node. - * expr.c (build_java_athrow): Likewise. - * jcf-write.c (generate_bytecode_insns): Likewise. - * parse.h (BUILD_THROW): Likewise. - -2001-03-28 Richard Henderson - - * decl.c (end_java_method): Do not save and restore - flag_non_call_exceptions. - * parse.y (source_end_java_method): Likewise. - * lang.c (flag_exceptions): Don't declare. - (java_init_options): Set flag_non_call_exceptions. Set - flag_exceptions here ... - (java_init): ... not here. - -2001-03-27 Richard Henderson - - * expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of - exceptions_via_longjmp. - - * lang.c (flag_new_exceptions): Don't declare it. - (java_init_options): Or set it. - -2001-03-27 Richard Henderson - - * decl.c (end_java_method): Rename asynchronous_exceptions to - flag_non_call_exceptions. - * parse.y (source_end_java_method): Likewise. - -2001-03-27 Kaveh R. Ghazi - - * Make-lang.in: Depend on $(SYSTEM_H), not system.h. - -2001-03-26 Mark Mitchell - - * parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE. - -2001-03-26 Alexandre Petit-Bianco - - * parse.y (find_as_inner_class): Follow current package - indications not to mistakingly load an unrelated class. - -2001-03-25 Kaveh R. Ghazi - - * constants.c (PUTN): Use memcpy, not bcopy. - - * lex.c (java_read_char): Use memmove, not bcopy. - - * parse.y (java_parser_context_resume): Use memcpy, not bcopy. - -2001-03-23 Per Bothner - - * verify.c (verify_jvm_instructions): Replace 3 pop_type by POP_TYPE - macro for better error pin-pointing. - * java-tree.h: Fix typo in comment. - - * jcf-write.c (generate_bytecode_insns): Changes to TRY_FINALLY_EXPR. - Don't include jsr/goto in exception range. - Check if start and end of exception range are the same (also TRY_EXPR). - Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false. - However, do emit the following goto even if try_block is empty. - Defer freeing exception_decl until after the finalizer, to make - sure the local isn't reused in the finalizer. Fixes PR java/1208. - - * parse.y (java_complete_lhs): If the try-clause is empty, just - return the finally-clause and vice versa. - -2001-03-23 Alexandre Petit-Bianco - - * gcj.texi (Input Options): documented the check for attribute - `gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag. - * java-tree.h (flag_force_classes_archive_check): Declared extern. - * jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro. - (jcf_parse): Check for the right classes archive if necessary. - * jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it. - (jcf_parse_fields): Fixed indentation. - * jcf-write.c (append_gcj_attribute): New function. - (generate_classfile): Compute the attribute count, invoke - `append_gcj_attribute'. - * jcf.h (typedef struct JCF): `seen_in_zip' and `java_source' - turned into bit-fields. New bit-field `right_zip.' - (JCF_ZERO): Set `right_zip' to zero. - * lang-options.h (-fforce-classes-archive-check): Added flag. - * lang.c (flag_force_classes_archive_check): New flag. - (lang_f_options): New entry `force-classes-archive-check.' - Fixes PR java/1213. - -2001-02-07 Andrew Haley - - * gcj.texi (Configure-time Options): Add -fcheck-references. - * expr.c (build_java_indirect_ref): New function. - (java_check_reference): New function. - (build_java_array_length_access): Use build_java_indirect_ref to - check for null references. - (build_java_arrayaccess): Likewise. - (build_get_class): Likewise. - (build_field_ref): Likewise. - (invoke_build_dtable): Likewise. - (build_invokeinterface): Likewise. - * lang.c (lang_f_options): Add flag_check_references. - * jvspec.c (jvgenmain_spec): Add flag_check_references. - * java-tree.h (flag_check_references): New variable. - * lang.c (flag_check_references): Likewise. - * parse.y (patch_invoke): Use java_check_reference. - (patch_assignment): Allow for extra nesting in - _Jv_CheckArrayStore. - -2001-03-23 Bryce McKinlay - - * gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c. - * lex.c (cxx_keywords): Likewise. - -2001-03-21 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Broaden `length' - recognition. Help MODIFY_EXPR be resolved as expression names. - Fixes PR java/2066. Fixes PR java/2400. - -2001-03-21 Bryce McKinlay - - * gjavah.c (process_file): Mark interface definitions with - "__attribute__ ((java_interface))". - -2001-03-21 Alexandre Petit-Bianco - - * class.c (layout_class): Fixed push_super_field's second - argument. Fixes PR java/2333. - (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's - too early to lay innerclasses out. - -2001-03-20 Tom Tromey - Alexandre Petit-Bianco - - * parse.y (patch_assignment): Handle the case of a SAVE_EXPR - inside an array reference. Insertion of the array store check - rewritten. Fixes PR java/2299. - -2001-03-20 Tom Tromey - - * lex.c (java_read_unicode): Only accept leading `u's. - -2001-03-20 Tom Tromey - - * jcf-parse.c (read_class): Initialize `class'. - -2001-03-20 Matt Kraai - - * jcf_parse.c (jcf_parse): Eliminate unused variable. - -2001-03-19 Mark Mitchell - - * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME. - (layout_class): Likewise. - (layout_class_method): Likewise. - (emit_register_classes): Likewise. - * decl.c (builtin_function): Likewise. - (give_name_to_locals): Likewise. - -2001-03-19 Per Bothner - - * jcf-parse.c (load_inner_classes): Check CLASS_LOADED_P - before trying to load an inner class. - - Fixes to process to command-line .class files in two passes. - * java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P): New flags. - (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P): Rename to .. - (CLASS_FROM_CURRENTLY_COMPILED_P): ... because it is more general now. - * class.c (is_compiled_class): Fix for renamed flag. - * parse.y (maybe_create_class_interface_decl): Likewise. - * jcf-parse.c (yyparse): Also set if compiling .class files. - * jcf-parse.c (read_class); Read current_class. - (jcf_parse): Make static. - (load_inner_classes): New function, with code moved from jcf_parse, - because we need to inner classes after the command-line files are read. - (yyparse): Set finput to NULL when it doesn't need to be closed. - Reduce use of main_jcf (basically only for archive) and - use finput instead of main_jcf->read_state. - Inline jcf_figure_file_type into yyparse. - Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name. - Defer load_inner_classes and parse_class_file to a second pass, - after we've correctly mapped command-line .clas fiels to classes. - (jcf_figure_file_type): Removed. - * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): Removed flags. - (JCF_ZERO): Also clear zipd field. - * zipfile.h: Conditionalize on JCF_H insread of JCF_ZIP. - -2001-03-18 Matt Kraai - - * jcf-parse.c (yyparse): Change ch from char * to char. - -2001-03-19 Per Bothner - - * jvspec.c (lang_specific_driver): Check for .zip and .jar files. - Add constructed filelist-file at end, following -xjava. Thus any .o - and library files are not affected by the -xjava. Also wrap - explicit @FILE with -xjava and -xnone. - -2001-03-19 Andrew Haley - - * class.c (build_static_field_ref): Call make_decl_rtl() after - setting the DECL_EXTERNAL flag. - -2001-03-17 Per Bothner - - * decl.c (clear_binding_level): Fix initializer (broke 03-15). - - * jcf-write.c (generate_bytecode_insns): Handle emitting iinc - when result is is needed (target is STACK_TARGET). - - * parse.h (JDEP_SOLV): Removed. - * parse.y (register_incomplete_type): Use JDEP_TO_RESOLVE instead. - - * parse.y (incomplete_class_list): Removed. - (obtain_incomplete_type): Don't use or set incomplete_class_list. - It doesn't work if resolve_class changes the name of an array type - that is on the list and then someone else looks for the modified name. - Also, seems liable to break when compiling multiple source files at - once. So the simplest is to just remove incomplete_class_list - - it is only a minor space win and it is not even clear it saves time. - - * parse.y (resolve_class): Remove unneeded promote_type. - -2001-03-15 Per Bothner - - * java-tree.h (BLOCK_IS_IMPLICIT): New flag. - * parse.h (BLOCK_EXPR_ORIGIN): Removed macro. - * parse.y (declare_local_variables, maybe_absorb_scoping_blocks): - Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN. - - * jcf-parse.c (yyparse): Set/reset input_filename for source file. - * parse.y (java_expand_classes): Likewise. - - * parse.y (expand_start_java_method): Was only called once and had a - misleading name, so inline in caller java_complete_expand_method. - (enter_a_block): Likewise inline in enter_block and remove. - - Remove junk from when gcc/java was created (by copying from C/C++). - * decl.c (keep_next_level_flag, keep_next_if_subblocks): Remove. - (struct binding_level): Remove fields keep, keep_if_subblocks, - more_cleanups_ok, have_cleanups (which have never been used). - (pushlevel, poplevel): Remove related useless code. - - * class.c (make_class_data): The class_dtable_decl (i.e. the - vtable for Class) should be external, except when compiling Class. - - * jvspec.c (lang_specific_driver): Fix -C handling. - Check -save-temps to see if temp @FILE should be deleted. - Follow-up to/fix for February 16 patch. - - * verify.c (verify_jvm_instructions): Better error msgs for dup. - (type_stack_dup): Remove no-longer neded error check. - -2001-03-15 Bryce McKinlay - - * mangle.c (mangle_record_type): Rename 'from_pointer' argument - to 'for_pointer'. If this type is for a pointer (argument) mangling, - don't surround the element with 'N..E' if the type name is - unqualified. - -2001-03-14 Mark Mitchell - - * class.c (build_static_field_ref): Use COPY_DECL_RTL, - DECL_RTL_SET_P, etc. - (make_method_value): Likewise. - (get_dispatch_table): Likewise. - - * decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc. - -2001-03-07 Tom Tromey - - * config-lang.in (lang_requires): Define. - -2001-03-07 Brad Lucier - - * typeck.c (convert): Check flag_unsafe_math_optimizations, - not flag_fast_math. - -2001-03-05 Per Bothner - - Fix a problem where rest_of_decl_compilation applied to - class_dtable_decl causes problems because it was done too early, - before output file was opened. - * decl.c (init_decl_processing): Remove init of class_dtable_decl. - * class.c (class_dtable_decl): Add macro - element of class_roots. - (make_class_data): Define class_dtable_decl. - * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl): Removed. - -2001-03-01 Zack Weinberg - - * java/class.c, java/decl.c, java/java-tree.h: Replace all - uses of 'boolean' with 'bool'. - -2001-03-01 Zack Weinberg - - * lang-specs.h: Add zero initializer for cpp_spec field to all - array elements. - -2001-02-16 Per Bothner - - Handle compiling multiple input files at once, and @FILE syntax. - * gcj.texi: Updated documentation to match. - * java-tree.h (flag_filelist_file, init_src_parse): New declarations. - * jcf-parse.c (parse_source_file): Split into ... - (parse_source_file_1): New function - and: - (parse_source_file_2): New function. - (yyparse): On -ffilelist-file, open and scan named file. - On first pass over files, only do parse_source_file_1. - A new second pass calls parse_source_file_2 for each file to compile. - (init_jcf_parse): Call init_src_parse. - * jvspec.c (INDIRECT_FILE_ARG): New flag. - (lang_specific_driver): Support @FILELIST-FILE syntax, as well - as multiple input file combined in one compilation. - * lang-options.h: Add -ffilelist-file - * lang.c (flag_filelist_file): New flag variable. - (lang_f_options): Handle -ffilelist-file. - * lex.c (java_init_lex): Don't clear ctxp->incomplete_class. - * parse.h (struct parse_ctxt): Remove fields incomplete_class and - gclass_list - use global fields of src_parse_roots instead. - * parse.y (src_parse_roots): New array. - (incomplete_class_list, gclass_list): New macros. - (push_parser_context, java_pop_parser_context, - java_parser_context_resume): Don't fiddle with deleted fields. - (various): Use incomplete_class gclass_list and global macros - instead of parse_ctxt fields - the lists are global. - (init_src_parse): New function. - -2001-02-23 Richard Kenner - - * decl.c (set_block): Set NAMES and BLOCKS from BLOCK. - -2001-02-20 Alexandre Petit-Bianco - - * parse.y (check_inner_class_access): Moved declaration of local - `enclosing_decl_type' to the right location. - -2001-02-19 Bryce McKinlay - - * parse.y (parser_check_super_interface): Don't call - check_pkg_class_access for an inner interface. - (parser_check_super): Don't call check_pkg_class_access for inner - class. - (do_resolve_class): Simplify enclosing type loop. Don't call - check_pkg_class_access if CL and DECL are not set. - (find_in_imports_on_demand): Set DECL if class_type needed to be - loaded. Don't call check_pkg_class_access for an inner class. - (check_inner_class_access): Rewritten to implement member access - rules as per spec 6.6.1. - (check_pkg_class_access): Handle the empty package correctly. - (in_same_package): New function. Determine if two classes are in the - same package. - -2001-02-18 Bryce McKinlay - - * typeck.c (build_java_array_type): Don't try to poke a public `clone' - method into array types. - * parse.y (patch_method_invocation): Bypass access check on clone call - to array instance. - -2001-02-15 Alexandre Petit-Bianco - - * expr.c (build_instanceof): Check for arrays when trying fold to - false. - -2001-02-15 Jim Meyering - - * Make-lang.in (java.install-common): Depend on `installdirs'. - (java.install-info): Likewise. - -2001-02-15 Bryce McKinlay - - * Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o. - -2001-02-14 Tom Tromey - Alexandre Petit-Bianco - - Fix for PR java/1261. - * typeck.c (build_java_array_type): Add public `clone' method to - arrays. - * parse.y (resolve_qualified_expression_name): Use current_class - when checking for inaccessibility. - (patch_method_invocation): Fixed error message when accessibility - denied. Added `from_super' argument. - -2001-02-14 Alexandre Petit-Bianco - - * parse.y (resolve_class): Don't build a fake decl. Use the one - already built. - * typeck.c (build_java_array_type): Build and assign decl to array - type. - -2001-02-14 Alexandre Petit-Bianco - - * parse.y (not_accessible_p): Changed leading comment. Added extra - `where' argument. Use it to enforce protected access rules. - (resolve_qualified_expression_name): Added extra argument to - not_accessible_p. - (patch_method_invocation): Use argument `primary' to provide - not_accessible_p with an extra argument. - (lookup_method_invoke): Added extra argument to not_accessible_p. - (search_applicable_method_list): Likewise. - -2001-02-13 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Try to resolve as - an inner class access only if `decl' is a TYPE_DECL. - -2001-02-13 Alexandre Petit-Bianco - - * decl.c (classdollar_identifier_node): Initialize. - * java-tree.h (enum java_tree_index): New entry - `JTI_CLASSDOLLAR_IDENTIFIER_NODE.' - (classdollar_identifier_node): New macro. - (ID_CLASSDOLLAR_P): Likewise. - * parse.y (build_dot_class_method): Use `classdollar_identifier_node.' - (build_dot_class_method_invocation): Likewise. - (find_applicable_accessible_methods_list): `class$' can't be - inherited. - -2001-02-09 Raja R Harinath - - * Make-lang.in (java/mangle_name.o): Add 'make' prereqs. - -2001-02-09 Alexandre Petit-Bianco - - * Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o' - * jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now - gone. - -2001-02-09 Alexandre Petit-Bianco - - * mangle_name (append_unicode_mangled_name): Emit `_' or `U' - outside of the `__U' sequence too. - (unicode_mangling_length): Count `_' or `U' outside of the `__U' - sequence too. - -2001-02-09 Alexandre Petit-Bianco - - * jvgenmain.c (error): Reversed 2001-02-01 deletion. - -2001-02-08 Alexandre Petit-Bianco - - * Make-lang.in (JAVA_OBJS): Added java/mangle_name.o - (JVGENMAIN_OBJS): Likewise. - * java-tree.h (append_gpp_mangled_name): New prototype. - * jcf-parse.c (ggc_mark_jcf): Argument now `void *.' - Removed cast calling `gcc_add_root.' - * jvgenmain.c (mangle_obstack): New global, initialized. - (main): Use it. - (do_mangle_class): Constify local `ptr.' - Removed macro `MANGLE_NAME.' Removed cast in `for.' Call - append_gpp_mangle_name and update `count' if necessary. - Use `mangle_obstack.' - * mangle.c (append_unicode_mangled_name): Removed. - (append_gpp_mangled_name): Likewise. - (unicode_mangling_length): Likewise. - (mangle_member_name): Return type set to `void.' - (mangle_field_decl): Don't append `U' in escaped names. - (mangle_method_decl): Likewise. - (mangle_member_name): Just use `append_gpp_mangled_name.' - * mangle_name.c: New file. - -2001-02-07 Per Bothner - - * check-init.c (check_init): Fix TRY_FINALLY_EXPR logic. - - * check-init.c (check_init): Don't call done_alternative after - processing loop code, as a LOOP_EXPR never terminates normally. - -2001-02-08 Joseph S. Myers - - * gcj.texi: Change sources.redhat.com reference to gcc.gnu.org. - -2001-02-07 Alexandre Petit-Bianco - - * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field - DECLs. - -2001-02-06 Tom Tromey - - * lex.c (java_new_lexer): Longer error message. - -2001-02-05 Jeff Sturm - Alexandre Petit-Bianco - - * typeck.c (build_prim_array_type): Added leading comment. - (build_java_array_type): Moved locals out of - block. Always create the `data' field, fixed alignment to match - C++. - -2001-02-04 Tom Tromey - - * expr.c (java_lang_expand_expr): Don't bother recomputing - `length'. Use rest_of_decl_compilation, not make_decl_rtl. - Fixes PR java/1866. - -2001-02-05 Alexandre Petit-Bianco - - * parse.y (process_imports): Save the original name of the import - for better error report. - -2001-02-04 Bryce McKinlay - - * Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list - of macros used when compiling jvspec.c. - * jvspec.c (lang_specific_driver): Link with the shared - libgcc by default. - -2001-02-04 Richard Kenner - - * check-init.c (check_init): Call internal_error instead of fatal. - * expr.c (java_lang_expand_expr): Likewise. - * jcf-parse.c (get_constant): Likewise. - * mangle.c (java_mangle_decl): Likewise. - * parse.y (make_nested_class_name, java_complete_lhs): Likewise. - (operator_string): Likewise. - * check-init.c (check_init): Call abort instead of fatal. - * class.c (build_class_ref): Likewise. - * constants.c (write_constant_pool): Likewise. - * decl.c (start_java_method): Likewise. - * expr.c (push_type, java_stack_pop, java_stack_swap): Likewise. - (java_stack_dup, encode_newarray_type): Likewise. - (build_java_array_length_access): Likewise. - (build_java_check_indexed_type, expand_java_pushc): Likewise. - (build_java_soft_divmod, build_invokeinterface): Likewise. - * java-tree.h (INNER_CLASS_P): Likewise. - * jcf-parse.c (parse_signature, get_name_constant): Likewise. - (give_name_to_class, get_class_constant): Likewise. - * jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise. - (find_constant_index, generate_bytecode_conditional): Likewise. - (generate_bytecode_insns, perform_relocations): Likewise. - * lex.c (java_unget_unicode, java_lex): Likewise. - * mangle.c (mangle_type, mangle_record_type): Likewise. - (mangle_pointer_type, mangle_array_type, init_mangling): Likewise. - (finish_mangling): Likewise. - * parse.h (MARK_FINAL_PARMS): Likewise. - * parse.y (pop_current_osb, unreachable_stmt_error): Likewise. - (obtain_incomplete_type, java_complete_class): Likewise. - (java_check_regular_methods, java_complete_expand_method): Likewise. - (cut_identifier_in_qualified, check_deprecation): Likewise. - (patch_invoke, find_applicable_accessible_methods_list): Likewise. - (java_complete_lhs, lookup_name_in_blocks): Likewise. - (check_final_variable_indirect_assignment, build_unaryop): Likewise. - * typeck.c (set_local_type, parse_signature_type): Likewise. - (parse_signature_string, build_java_signature): Likewise; - (set_java_signature): Likewise. - * verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise. - * class.c (add_method): Call fatal_error instead of fatal. - (build_static_field_ref): Likewise. - * expr.c (build_known_method_ref, expand_invoke): Likewise. - * jcf-parse.c (get_constant, jcf_parse): Likewise. - * lex.c (java_new_new_lexer): Likewise. - * jv-scan.c (main): Likewise. - (fatal_error): Renamed from fatal. - * jcf-parse.c (yyparse): Call fatal_io_error instead of - pfatal_with_name. - * jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal. - (yyparse): Likewise. - * jcf-write.c (make_class_file_name, write_classfile): Likewise. - * lex.c (java_get_line_col): Likewise. - * jcf-parse.c (load_class): Make errors non-fatal. - * lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV. - -2001-02-01 Bryce McKinlay - - * jvgenmain.c (class_mangling_suffix): Remove unused string. - (error): Remove unused function. - (main): Don't use "__attribute__ alias" on generated class symbol. - -2001-01-30 Alexandre Petit-Bianco - - * jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last - argument. - * parse.y (finish_method_declaration): Code accounting for WFLed - method DECL_NAMEs deleted. - (check_abstract_method_definitions): Likewise. - (resolve_type_during_patch): Layout resolved type. - * typeck.c (lookup_do): Removed unused local. - -2001-01-30 Bryce McKinlay - - * java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE. - * decl.c (init_decl_processing): Use integer_minus_one_node, not - integer_negative_one_node. - * expr.c (build_java_binop): Likewise. - -2001-01-24 Jeff Sturm - - * zextract.c (read_zip_archive): Read file_offset before writing - zipd and consequently clobbering the header contents. - -2001-01-27 Kaveh R. Ghazi - - * Make-lang.in: Remove all dependencies on defaults.h. - * decl.c: Don't include defaults.h. - * expr.c: Likewise. - * parse.y: Likewise. - -2001-01-25 Alexandre Petit-Bianco - - * ChangeLog (2001-01-21): Fixed typo. - * class.c (layout_class_method): Code accounting for WFLed - method DECL_NAMEs deleted. - * constant.c (find_methodref_index): Likewise. - * decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl. - * java-tree.h (DECL_FUNCTION_WFL): New macro. - (struct lang_decl): New field `wfl'. - (java_get_real_method_name): Prototype deleted. - * mangle.c (mangle_method_decl): Code accounting for WFLed - method DECL_NAMEs deleted. - * parse.h (GET_METHOD_NAME): Macro deleted. - * parse.y (reset_method_name): Deleted. - (method_header): Set DECL_FUNCTION_WFL. - (check_abstract_method_header): Code accounting for WFLed method - DECL_NAMEs deleted. - (java_get_real_method_name): Deleted. - (check_method_redefinition): Code accounting for WFLed method - DECL_NAMEs deleted. Use DECL_FUNCTION_WFL. - (java_check_regular_methods): Likewise. - (java_check_abstract_methods): Likewise. - (java_expand_classes): Don't call `reset_method_name.' - (search_applicable_method_list): Use DECL_NAMEs instead of - GET_METHOD_NAME. - * typeck.c (lookup_do): Code accounting for WFLed method - DECL_NAMEs deleted. - -2001-01-25 Richard Earnshaw - - * lex.c (java_read_char): Check for EOF from getc first. - -2001-01-23 Alexandre Petit-Bianco - - * class.c (layout_class): Don't lay the superclass out if it's - already being laid out. - * jcf-parse.c (handle_innerclass_attribute): New function. - (HANDLE_INNERCLASSES_ATTRIBUTE): Invoke - handle_innerclasses_attribute. - (jcf_parse): Don't load an innerclasses if it's already being - laid out. - * jcf-write.c (append_innerclass_attribute_entry): Static - `anonymous_name' and its initialization deleted. `ocii' and `ini' - to be zero for anonymous classes. - -2001-01-23 Alexandre Petit-Bianco - - * class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if - necessary. - * jcf-parse.c (set_source_filename): Use - MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary. - -2001-01-23 Alexandre Petit-Bianco - - * expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it - gets a unique asm name. - -2001-01-23 Alexandre Petit-Bianco - - * jcf-parse.c (HANDLE_END_METHODS): Nullify current_method. - (HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC - if necessary. - (HANDLE_SYNTHETIC_ATTRIBUTE): New macro. - * jcf-reader.c (get_attribute): Handle `Synthetic' attribute. - * parse.y (lookup_package_type_and_set_next): Deleted. - (resolve_package): Removed unnecessary code. - (find_applicable_accessible_methods_list): `finit$' can't be - inherited. - * verify.c (pop_argument_types): Added missing prototype. - -2001-01-23 Bryce McKinlay - - * config-lang.in: Disable java by default. - -2001-01-23 Tom Tromey - - * gcj.texi (Copying): New node. - Added copyright information. - -2001-01-21 Per Bothner - - Various fixes to allow compiling a compressed .jar/.zip archive. - * zipfile.h (struct ZipFileCache): Replace by struct ZipFile. - (struct ZipFile): Add fields name and next (from ZipFileCache). - (struct ZipDirectory): New field zipf points to owning ZipFile. - * jcf.h (struct ZipDirectory): Add forward declaration. - (struct JCF): Declare zipd field to have type struct ZipDirectory. - Remove seen_in_zip and zip_offset fields. - (JCF_SEEN_IN_ZIP): New macro. - * zextract.c (read_zip_archive): Set ZipDirectory's zipf field. - * jcf-io.c: Change all ZipFileCache to ZipFile. - (read_zip_member): New function. - (open_in_zip): Call read_zip_member. - * jcf-parse.c (find_in_current_zip): Remove function. - (read_class): Merge in find_in_current_zip functionality. - Call read_zip_member if needed. - (parse_zip_file_entries): Use read_zip_member. - (process_zip_dir): Update for removed and added JCF fields. - (jcf_figure_file_type): Re-use, don't copy initial ZipFile struct. - -2001-01-21 Per Bothner - - Minor optimization of static ggc roots. - * jcf-parse.c (parse_roots): New static field. - (current_field, current_method, current_file_list): Replace by macros - naming fields of parse_roots. - (init_jcf_parse): Combine 3 ggc_add_tree_root calls to 1. - * class.c (class_roots): New static field. - (registered_class, fields_ident, info_ident, class_list): - New macros naming fields of parse_roots. - (build_static_field_ref): Don't register roots here. - (layout_class): Static field list replaced by macro class_list. - (init_class_processing): Call ggc_add_tree_root for 4 roots. - Initialize fields_ident and info_ident here. - -2001-01-21 Per Bothner - - * jcf-parse.c (ggc_mark_jcf): New function. - (init_jcf_parse): Register current_jcf as ggc root. - -2001-01-21 Per Bothner - - * lang.c (put_decl_node): Print method's name. - -2001-01-21 Per Bothner - - * verify.c (VERIFICATION_ERROR_WITH_INDEX): New macro. - (verify_jvm_instructions): Use it, for better error messages on loads. - -2001-01-21 Per Bothner - - * verify.c (merge_type_state): Still may have to merge even if - LABEL_VERIFIED (label). - -2001-01-21 Per Bothner - - * parse.y (method_header): Don't set the DECL_NAME of a FUNCTION_DECL - to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong. - -2001-01-19 Per Bothner - - * expr.c (pop_type_0): Only return object_ptr_type_node on mismatch - if expeting an interface type. Refines Tom's change of 2000-09-12. - -2001-01-18 Per Bothner - - * gcj.texi (Input Options): Mention .java files. - -2001-01-17 Alexandre Petit-Bianco - - * lang-options.h (-Wunsupported-jdk11): Removed. - * lang.c (flag_not_overriding): Deleted. - (flag_static_local_jdk1_1): Likewise. - (lang_W_options): Removed "unsupported-jdk11" entry. - * parse.y (java_check_methods): Removed dead code. - -2001-01-17 Tom Tromey - - Changes suggested by Per Bothner: - * gcj.texi (Input Options): Don't mention input files. - (Code Generation): Updated --main information. - (Invoking jcf-dump): Mention that --javap is incomplete. - From Alexandre Petit-Bianco: - (Warnings): Don't mention -Wunsupported-jdk11. - My stuff: - (Compatibility): Mention JDK 1.2-ness of libraries. - (Resources): Mention resources used when writing gcj. - -2001-01-17 Tom Tromey - - * gcj.texi: New file. - * Make-lang.in ($(srcdir)/java/gcj.info): New target. - (java.info): Depend on gcj.info. - (java/gcj.dvi): New target. - (java.dvi): Depend on gcj.dvi. - (java.install-info): Wrote. - -2001-01-16 Jeff Sturm - - * expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after - having called make_decl_rtl. - -2001-01-14 Per Bothner - - Various patches to emit better messages on verification errors. - * expr.c (push_type_0): Return error indication on stack overflow, - instead of callinfg fatal. - (push_type): Now just call push_type_0 (nd fatal on overflow). - (pop_type_0): Return detailed error message (in a char** argument). - (pop_type): If pop_type_0 fails, print error message. - (pop_argument_types): Moved to verify.c. - * verify.c (pop_argument_types): Moved from expr.c. - Return a (possible) error message, rather than void. - (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING): New macros. - (verify_jvm_instruction): Use new macros, improving error messages. - For case OPCODE_astore use object_ptr_type_node. - * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED): New macros. - (pop_type_0, push_type_0, pop_argument_types): Update accordingly. - - * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is - constant, return body without wrapper. (Improves constant folding.) - * lex.c (build_wfl_node): Clear TREE_TYPE from returned node. - -2001-01-13 Per Bothner - - * expr.c (expand_java_field_op): Assigning to a final field outside - an initializer does not violate JVM spec, so should be warning, not - error. (Sun's verifier does not complain - though MicroSoft's does.) - -2001-01-12 Joseph S. Myers - - * gjavah.c (version), jcf-dump.c (version): Update copyright year - to 2001. - -2001-01-11 Bryce McKinlay - - * parse.y (resolve_expression_name): Permit instance variables from - enclosing context in super constructor call. - (resolve_qualified_expression_name): Permit enclosing class's qualified - "this" in super constructor call. - -2001-01-10 Mark Mitchell - - * class.c (build_utf8_ref): Remove last argument in call to - make_decl_rtl; use make_function_rtl instead of make_decl_rtl. - (build_class_ref): Likewise. - (build_static_field_ref): Likewise. - (get_dispatch_table): Likewise. - (layout_class_method): Likewise. - (emit_register_classes): Likewise. - * constants.c (build_constant_data_ref): Likewise. - * decl.c (builtin_function): Likewise. - (create_primitive_vtable): Likewise. - * expr.c (build_known_method_def): Likewise. - (build_jni_stub): Likewise. - (java_lang_expand_expr): Likewise. - -2001-01-10 Tom Tromey - - * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation. - -2001-01-08 Alexandre Petit-Bianco - - * java-tree.h (lang_printable_name_wls): New prototype. - * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT - rather than `current_class' to print type name. Don't prepend type - names when printing constructor names. - (lang_printable_name_wls): New function. - * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to - `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE. - * parse.y (patch_method_invocation): Message tuned for constructors. - (not_accessible_p): Grant `private' access from within - enclosing contexts. - -2001-01-07 Alexandre Petit-Bianco - - All files with updated copyright when applicable. - * Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o. - * class.c (mangle_class_field): Function removed. - (append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise. - (utf8_cmp, cxx_keyword_p): Moved to lex.c. - (build_class_ref): Call `java_mangle_class_field' instead of - `mangle_class_field.' - (build_dtable_decl): Rewritten to call `java_mangle_vtable.' - (layout_class): Call `java_mangle_decl' instead of - `mangle_static_field.' - (cxx_keywords): Initialized static array moved to `lex.c.' - (layout_class_method): Changed leading comment. Simplified to - call `java_mangle_decl.' Local `ptr' moved in for loop body. - * decl.c (lang_mark_tree): Mark field `package_list.' - * java-tree.h (TYPE_PACKAGE_LIST): New macro. - (struct lang_type): New field `package_list.' - (unicode_mangling_length): Prototype removed. - (append_gpp_mangled_name, append_gpp_mangled_classtype, - emit_unicode_mangled_name): Likewise. - (cxx_keyword_p): New prototype. - (java_mangle_decl, java_mangle_class_field, - java_mangle_class_field_from_string, java_mangle_vtable): Likewise. - * jcf-parse.c (jcf_parse_source): Constify `file' argument to - `build_expr_wfl.' - * jvgenmain.c (main_method_prefix): Global variable removed. - (main_method_suffix): Likewise. - (do_mangle_classname): New function. - (main): Call it. Format changed to accommodate new mangling scheme. - * lex.c: (utf8_cmp): Conditionally prototyped. - (cxx_keywords): Moved from class.c, conditionally defined. - (utf8_cmp, cxx_keyword_p): Likewise. - * mangle.c (obstack.h, ggc.h): Included. - (mangle_field_decl): New function. - (mangle_method_decl, mangle_type, mangle_pointer_type, - mangle_array_type, mangle_record_type, - find_compression_pointer_match, find_compression_array_match, - find_compression_record_match, - find_compression_array_template_match, set_type_package_list, - entry_match_pointer_p, emit_compression_string, init_mangling, - finish_mangling, compression_table_add, mangle_member_name): Likewise. - (mangle_obstack): New global. - (MANGLE_RAW_STRING): New macro. - (unicode_mangling_length): Turned static. - (append_unicode_mangled_name): Renamed from - `emit_unicode_mangled_name.' Turned static. `mangle_obstack' - replaces `obstack', removed from the parameter list. - (append_gpp_mangled_name): Turned static. `mangle_obstack' - replaces parameter `obstack', removed from the parameter list. Call - `append_unicode_mangled_name' instead of `emit_unicode_mangled_name. - (append_gpp_mangled_classtype): Removed. - (compression_table, compression_next): New static variables. - * parse.y (temporary_obstack): Extern declaration removed. - -2001-01-05 Alexandre Petit-Bianco - - * parse.y (patch_binop): Compute missing type in error situations. - -2001-01-05 Bryce McKinlay - - * class.c (make_class_data): Push initial value for "arrayclass". - * decl.c (init_decl_processing): Add new class field "arrayclass". - -2001-01-05 Bryce McKinlay - - From patha@softlab.ericsson.se: - * parse.y (switch_label): Use build, not build1, to construct - DEFAULT_EXPR. - -2001-01-04 Neil Booth - - * lang.c (lang_decode_option): Change -MA to -MP. - * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target): - Update to new prototype; do quote targets. - (jcf_dependency_write): Update. - -2000-12-22 Bryce McKinlay - - Shorten primitive array allocation path: - * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray - to create new primitive arrays. - * expr.c (build_newarray): If generating native code, call - soft_newarray_node with a reference to the primitive TYPE identifier - instead of type_value. - -2000-12-17 Bryce McKinlay - - Fix for PRs gcj/312 and gcj/253: - * parse.y (valid_ref_assignconv_cast_p): Load classes for source and - dest if they arn't already. - * class.c (layout_class): Call maybe_layout_super_class on - superinterfaces also, but only if compiling from bytecode. - - Fix for PR gcj/373: - * parse.y (create_class): Set ACC_STATIC if class is declared in an - interface. - -2000-12-15 Tom Tromey - - * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already - set. - -2000-12-14 Andrew Haley - - * boehm.c (mark_reference_fields): Change test to correctly detect - bitmap overflow. - -2000-12-15 Andreas Jaeger - - * config-lang.in (lang_dirs): Added. - -2000-12-15 Alexandre Petit-Bianco - - * parse.y (end_artificial_method_body): Fixed undefined behavior. - Credits go to rth for finding it. - -2000-12-13 Mike Stump - - * parse.y (check_static_final_variable_assignment_flag): Fix spelling. - -2000-11-07 Tom Tromey - - * Make-lang.in (JAVA_LEX_C): Added chartables.h. - * lex.c (java_ignorable_control_p): Removed. - (java_letter_or_digit_p): Removed. - (java_start_char_p): New function. - (java_read_char): Return `int', not `unicode_t'. Changed - callers. - (java_read_unicode): Likewise. - (java_read_unicode_collapsing_terminators): Likewise. - (java_get_unicode): Likewise. - (java_new_lexer): Initialize hit_eof. - (java_parse_end_comment): Take `int' argument. - (java_parse_doc_section): Likewise. - (java_parse_escape_sequence): Don't allow backlash-newline. - Return `int'. - * lex.h (JAVA_DIGIT_P): Removed. - (_JAVA_LETTER_OR_DIGIT_P): Removed. - (_JAVA_IDENTIFIER_IGNORABLE): Removed. - (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P. - (JAVA_PART_CHAR_P): New macro. - (UEOF): Now -1. - (JAVA_CHAR_ERROR): Now -2. - (java_lexer): New field `hit_eof'. - * chartables.h: New file. - * gen-table.pl: new file. - -2000-11-20 Tom Tromey - Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): Only allow compound assignment of - reference type if type is String. - -2000-12-09 Alexandre Petit-Bianco - - * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip. - jcf-path.c: Likewise. - -2000-12-09 Anthony Green - - * zipfile.h (ZipDirectory): Declare size, uncompressed_size, - filestart and filename_length as int values. - -2000-12-07 Mo DeJong - - * jcf-io.c (find_class): Correct the logic that tests to see if a - .java file is newer than its .class file. The compiler was - incorrectly printing a warning when file mod times were equal. - -2000-12-07 Zack Weinberg - - * jvgenmain.c: Use ISPRINT not isascii. - -2000-12-06 Alexandre Petit-Bianco - - * parse.y (end_artificial_method_body): Fixed typo. - -2000-12-04 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Pick the correct enclosing - context when creating inner class instances. - Fixes gcj/332. - -2000-11-26 Joseph S. Myers - - * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version): - Update copyright year to 2000. - -2000-11-23 Anthony Green - - * jcf-parse.c (init_jcf_parse): Register current_file_list root. - Move current_file_list out of yyparse and make it static. - - * expr.c: Declare quick_stack and tree_list_free_list as static - (init_expr_processing): Register quick_stack and - tree_list_free_list roots. - -2000-11-22 Alexandre Petit-Bianco - - * parse.y (build_outer_field_access): New local `decl_ctx', use - it. Check for field's context and current class immediate outer - context inheritance. - (outer_field_access_p): Consider fields inherited from the last - enclosing context. - (build_access_to_thisn): Stop at the last enclosing context if - necessary. - Fixes gcj/367. - -2000-11-23 J"orn Rennecke - - * Make-lang.in (jvspec.o): Depend on $(CONFIG_H). - -2000-11-22 Bryce McKinlay - - * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the - scratch buffer. - -2000-11-20 Tom Tromey - - * jv-scan.c (help): Document --complexity. - (options): Added --complexity. - (flag_complexity): New global. - (main): Call `report'. - * parse-scan.y (complexity): New global. - (if_then_statement, if_then_else_statement, - if_then_else_statement_nsi, switch_block_statement_group, - while_expression, do_statement, for_begin, continue_statement, - throw_statement, catch_clause, finally, method_invocation, - conditional_and_expression, conditional_or_expression, - conditional_expression): Update complexity. - (reset_report): Reset complexity. - (report): New function. - -2000-11-20 Tom Tromey - - * lex.c (yylex): Added STRICT_TK case. - * parse.y (STRICT_TK): Added. - * parse-scan.y (STRICT_TK): Added. - * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and - `;'. Use 4, not 3, with -k option. Correctly rename resulting - file. - * keyword.h: Rebuilt. - * keyword.gperf (strictfp): Added. - -2000-11-20 Tom Tromey - - * lex.c (yylex): Recognize floating point constants with leading - 0. - -2000-11-19 Kaveh R. Ghazi - - * java-tree.h (cyclic_inheritance_report): Constify. - * parse.y (cyclic_inheritance_report): Likewise. - -2000-11-17 Zack Weinberg - - * parse.y (goal): Remove call to ggc_add_string_root. - -2000-11-16 Zack Weinberg - - * jcf-parse.c (get_constant), parse.y (do_merge_string_cste): - Create string in scratch buffer, then pass to build_string. - -2000-11-13 Joseph S. Myers - - * parse.y (issue_warning_error_from_context): Add - ATTRIBUTE_PRINTF. - -2000-11-11 Anthony Green - - * jcf-parse.c (process_zip_dir): Add finput parameter. - (jcf_figure_file_type): Call process_zip_dir with appropriate - argument. - -2000-11-10 Kaveh R. Ghazi - - * decl.c (copy_lang_decl): Use memcpy, not bcopy. - * jcf-parse.c (jcf_figure_file_type): Likewise. - -2000-11-09 Joseph S. Myers - - * parse.y (create_new_parser_context): Use memset () instead of - bzero (). - -2000-11-08 Tom Tromey - - * gjavah.c (process_file): Only include gcj/cni.h when generating - CNI stubs. - -2000-11-07 Joseph S. Myers - - * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c - (init_outgoing_cpool), lex.c (java_init_lex): Use memset () - instead of bzero (). - -2000-11-05 Tom Tromey - - * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix. - * lex.c (IS_ZERO): New define. - (java_perform_atof): Error on floating point underflow. - -2000-11-04 Tom Tromey - - * lex.c (java_parse_escape_sequence): Only read two octal - characters if the first one is greater than 3. Don't allow - "octal" numbers to include the digits 8 or 9. - -2000-11-05 Joseph S. Myers - - * Make-lang.in (java.distdir): Remove. - -2000-11-03 Tom Tromey - - * Make-lang.in (java.dvi): New target. - Partial fix for PR other/567. - - * lang-options.h: Mention -Wout-of-date. - * jcf-dump.c (flag_newer): New global. - * gjavah.c (flag_newer): New global. - * jcf-io.c (find_class): Only warn when flag_newer set. - * lang.c (flag_newer): New global. - (struct string_option): New declaration. - (lang_W_options): New global. - (process_option_with_no): New function. - (lang_decode_option): Use it. - - * class.c (cxx_keyword_p): Accept keywords with trailing `$'s. - * gjavah.c (cxx_keyword_subst): Handle any number of trailing - `$'. - - * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro. - (JAVA_ID_CHAR_P): Also try java_ignorable_control_p. - * lex.c (java_read_unicode): Removed `term_context' argument. - Recognize any number of `u' in `\u'. - (java_read_unicode_collapsing_terminators): New function. - (java_get_unicode): Use it. - (java_lineterminator): Removed. - (yylex): Produce error if character literal is newline or single - quote. Return if eof found in middle of `//' comment. EOF in - `//' comment is only an error if pedantic. - (java_ignorable_control_p): New function. - (java_parse_end_comment): Return if eof found in middle of - comment. - Include flags.h. - * jv-scan.c (pedantic): New global. - -2000-10-31 Alexandre Petit-Bianco - - * parse.y (outer_field_access_p): Inherited fields aren't - consider outer fields. - (maybe_build_thisn_access_method): Use - PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P. - (resolve_expression_name): Trigger an error if a static field - is being accessed as an outer field. - -2000-10-29 Alexandre Petit-Bianco - - * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'. - Fixes gcj/365. - -2000-10-27 Zack Weinberg - - * Make-lang.in: Move all build rules here from Makefile.in, - adapt to new context. Wrap all rules that change the current - directory in parentheses. Expunge all references to $(P). - When one command depends on another and they're run all at - once, use && to separate them, not ;. Add OUTPUT_OPTION to - all object-file generation rules. Delete obsolete variables. - - * Makefile.in: Delete. - * config-lang.in: Delete outputs= line. - -2000-10-25 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): NULLify this_arg when already - inserted. - (maybe_use_access_method): Handle call to methods unrelated to the - current class. Fixed comment. - Fixes gcj/361. - -2000-10-24 Alexandre Petit-Bianco - - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in - scope. - -2000-10-24 Tom Tromey - - * lex.c (java_new_lexer): Initialize new fields. Work around - broken iconv() implementations. - (java_read_char): Swap bytes if required. Use fallback decoder if - required. - (byteswap_init, need_byteswap): New globals. - (java_destroy_lexer): Only close iconv handle if it is in use. - * lex.h (java_lexer): New fields read_anything, byte_swap, - use_fallback. - Made out_buffer unsigned. - -2000-10-24 Alexandre Petit-Bianco - - * parse.y (register_incomplete_type): Include JDEP_FIELD as a case - where an enclosing context can be set on the jdep. - (do_resolve_class): Fixed identation. - -2000-10-21 Kaveh R. Ghazi - - * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define - - * jcf-reader.c (peek_attribute, skip_attribute): Only define - when requested. - - * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN. - - * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void. - -2000-10-18 Alexandre Petit-Bianco - - * jcf-write.c (OP1): Update `last_bc'. - (struct jcf_block): Fixed indentation and typo in comments. New - field `last_bc'. - (generate_bytecode_insns): Insert `nop' if `jsr' immediately - follows `monitorenter'. - * parse.y (patch_synchronized_statement): New local `tmp'. Call - `patch_string'. - Fixes gcj/232. - -2000-10-16 Tom Tromey - - * jvspec.c (lang_specific_driver): Recognize -MF and -MT. - * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}. - * lang-options.h: Added -MA, -MT, -MF.. - * lang.c (lang_decode_option): Recognize -MA, -MT, -MF. - (DEPEND_TARGET_SET): New macro. - (DEPEND_FILE_ALREADY_SET): Likewise. - (init_parse): Handle new flags. - * jcf.h (jcf_dependency_print_dummies): Declare. - * Make-lang.in (s-java): Added mkdeps.o. - * Makefile.in (BACKEND): Added mkdeps.o. - (../gcjh$(exeext)): Added mkdeps.o. - (../jcf-dump$(exeext)): Added mkdeps.o. - * jcf-depend.c: Include mkdeps.h. - (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS, - add_entry): Removed. - (jcf_dependency_reset): Rewrote. - (dependencies): New global. - (jcf_dependency_set_target): Rewrote. - (jcf_dependency_add_target): Likewise. - (jcf_dependency_add_file): Likewise. - (munge): Removed. - (print_ents): Removed. - (jcf_dependency_write): Rewrote. - (print_dummies): New global. - (jcf_dependency_print_dummies): New function - (jcf_dependency_write): Call deps_dummy_targets if required. - -2000-10-18 Alexandre Petit-Bianco - - * gjavah.c (add_class_decl): Removed unused variables `tname', - `tlen' and `name_index'. - * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro. - * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME - in `wfl_operator' with value. - (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE. - (jcf_figure_file_type): Fixed identation. - * lex.c (java_get_line_col): Use EOF. Tuned `^' placement. - * parse.y (analyze_clinit_body): New function. - (static_initializer:): Reset `current_static_block'. - (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in - `wfl_operator' with new value. - (lookup_cl): Use EXPR_WFL_FILENAME. - (maybe_yank_clinit): Handle bogus bodies, call - analyze_clinit_body. - (build_outer_field_access): Access to this$ built from - current_class, not its outer context. - (build_access_to_thisn): Fixed leading comment. Tidied things up. - (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'. - (patch_method_invocation): Use `is_static_flag' when already - initialized. - (patch_newarray): Removed assignment in ternary operator. - -2000-10-17 Alexandre Petit-Bianco - - * except.c (free_eh_ranges): Don't free `whole_range'. - -2000-10-15 Anthony Green - - * decl.c (init_decl_processing): Call init_class_processing before - anything else. - -2000-10-13 Alexandre Petit-Bianco - - * check-init.c (check_init): Fixed leading comment. Use - LOCAL_FINAL_P. - * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. - (give_name_to_locals): Likewise. - (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl' - fields in lang_decl_var. - * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR, - DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros. - (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten. - (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC, - DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros. - (LOCAL_FINAL): Rewritten. - (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P - MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros. - (struct lang_decl): Fixed comments. Added `synthetic_ctor' and - `init_final' fields. - (struct lang_decl_var): Fixed leading comment. Added `am', `wfl', - `final_uid', `final_liic', `final_ierr' and `local_final' fields. - (TYPE_HAS_FINAL_VARIABLE): New macro. - (struct lang_type): Added `afv' field. - * parse.y (check_static_final_variable_assignment_flag): New function. - (reset_static_final_variable_assignment_flag): Likewise. - (check_final_variable_local_assignment_flag): Likewise. - (reset_final_variable_local_assignment_flag): Likewise. - (check_final_variable_indirect_assignment): Likewise. - (check_final_variable_global_assignment_flag): Likewise. - (add_inner_class_fields): Use LOCAL_FINAL_P. - (register_fields): Handle local finals and final variables. - (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR. - (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. - (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC - on local finals. - (java_complete_expand_methods): Loop to set - TYPE_HAS_FINAL_VARIABLE. Call - `reset_final_variable_local_assignment_flag' and - `check_final_variable_local_assignment_flag' accordingly before - and after constructor expansion. Call - `reset_static_final_variable_assignment_flag' - before expanding and after call - `check_static_final_variable_assignment_flag' if the - current_class isn't an interface. After all methods have been - expanded, call `check_final_variable_global_assignment_flag' and - `check_static_final_variable_assignment_flag' if the current class - is an interface. - (maybe_yank_clinit): Fixed typo in comment. - (build_outer_field_access_methods): Removed old sanity check. Use - FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. - Don't create access methods for finals. - (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'. - (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if - existing DECL_INIT has been processed. - (java_complete_lhs): Likewise. - (check_final_assignment): Filter input on `lvalue''s TREE_CODE. - Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new - logic. - (patch_assignment): Use LOCAL_FINAL_P. - (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if - DECL_INITIAL is nullified. - Fixes gcj/163. - -2000-10-13 Kaveh R. Ghazi - - * Make-lang.in (parse.c, parse-scan.c): Create atomically. - - * Makefile.in (parse.c, parse-scan.c): Likewise. - -2000-10-12 Mark Mitchell - - * class.c (temporary_obstack): Remove. - (make_class): Don't mess with obstascks. - (push_class): Likewise. - (set_super_info): Likewise. - (add_method_1): Likewise. - (add_method): Likewise. - (add_field): Likewise. - (build_utf8_ref): Likewise. - (build_class_ref): Likewise. - (build_static_field_ref): Likewise. - (finish_class): Likewise. - (push_super_field): Likewise. - (layout_class): Likewise. - (layout_class_methods): Likewise. - (init_class_processing): Likewise. - * constants.c (get_tag_node): Likewise. - (build_constant_data_ref): Likewise. - * decl.c (ggc_p): Remove. - (copy_lang_decl): Use ggc_alloc. - (complete_start_java_method): Don't mess with obstacks. - (start_java_method): Likewise. - (end_java_method): Likewise. - * except.c (link_handler): Use xmalloc. - (free_eh_ranges): New function. - (method_init_exceptions): Use it. - (add_handler): Use xmalloc. - (expand_start_java_handler): Don't mess with obstacks. - (prepare_eh_table_type): Likewise. - (expand_end_java_handler): Likewise. - * expr.c (push_value): Likewise. - (create_label_decl): Likewise. - (build_jni_stub): Likewise. - (java_lang_expand_expr): Likewise. - (note_instructions): Use xrealloc. - (java_push_constant_from_pool): Don't mess with obstacks. - (process_jvm_instruction): Likewise. - * java-tree.h (cyclic_inheritance_report): Remove duplicate - declaration. - * jcf-parse.c (get_constant): Don't mess with obstacks. - (read_class): Likewise. - (jcf_parse): Likewise. - * lex.c (expression_obstack): Remove. - (java_lex): Don't use obstack_free. - * parse.h (exit_java_complete_class): Don't mess with obstacks. - (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust. - (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise. - (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise. - * parse.y (gaol): Add more GC roots. - (add_inner_class_fields): Adjust calls to MANGLE_* macros. - (lookup_field_wrapper): Likewise. - (obtain_incomplete_type): Don't mess with obstacks. - (build_alias_initializer_parameter_list): Adjust calls to MANGLE_* - macros. - (craft_constructor): Don't mess with obstacks. - (safe_layout_class): Likewise. - (java_complete_class): Likewise. - (source_end_java_method): Likewise. - (build_outer_field_access_methods): Likewise. - (build_outer_method_access_method): Likewise. - (maybe_build_thisn_access_method): Likewise. - (build_dot_class_method_invocation): Likewise. - (java_complete_tree): Likewise. - (java_complete_lhs): Likewise. - (do_merge_string_cste): Likewise. - (patch_string_cst): Likewise. - (array_constructor_check_entry): Likewise. - * typeck.c (build_java_array_type): Likewise. - (parse_signature_string): Likewise. - (build_java_signature): Likewise. - -2000-10-12 Tom Tromey - - Fix for PR gcj/356: - * gjavah.c (add_class_decl): Don't special-case inner classes. - (add_namelet): Likewise. - -2000-10-11 Rodney Brown - - * java-tree.h: Constify current_encoding. - * lang.c: Constify current_encoding. - -2000-10-10 Jeff Sturm - - * jvgenmain.c (class_mangling_suffix): Omit `.'. - (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'. - -2000-10-10 Alexandre Petit-Bianco - - * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's - patch. Fixes gcj/340. - -2000-10-10 Tom Tromey - - * lex.c (java_new_lexer): Initialize out_first and out_last - fields. - * lex.h (java_lexer): Added out_buffer, out_first, out_last. - -2000-10-09 Alexandre Petit-Bianco - - * parse.y (pop_current_osb): New function. - (array_type:): Use `dims:', changed actions - accordingly. Suggested by Anthony Green. - (array_creation_expression:): Used pop_current_osb. - (cast_expression:): Likewise. - (search_applicable_method_list): Fixed indentation. - -2000-10-08 Anthony Green - - * parse.y (array_type_literal): Remove production. - (type_literals): Refer to array_type, not array_type_literal. - -2000-10-07 Alexandre Petit-Bianco - - Patch contributed by Corey Minyard. - * decl.c (check_local_named_variable): New function. - (tree check_local_unnamed_variable): Likewise. - (find_local_variable): Splitted. Call check_local_{un}named_variable. - -2000-10-07 Anthony Green - - * class.c (layout_class): Handle case where superclass can't be - layed out yet. - -2000-10-07 Joseph S. Myers - - * Makefile.in (keyword.h): Refer to GNU FTP site for updated - gperf. - -2000-10-05 Tom Tromey - - * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'. - * jvgenmain.c (class_mangling_prefix): Removed. - (class_mangling_suffix): New global. - (main): Use it. - * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending - `$'. - (print_method_info): Handle overrides for static and final - methods. - (process_file): Generate declaration for class object field. - * class.c (cxx_keywords): New array. - (utf8_cmp): New function. - (cxx_keyword_p): New function. - (layout_class_method): Mangle C++ keywords by appending `$'. - (mangle_field): New function. - (mangle_class_field): Use mangle_field. Mangle class name as - `class$'. - (mangle_static_field): Use mangle_field. - -2000-10-03 Alexandre Petit-Bianco - - * decl.c (find_local_variable): Removed uncessary type check and - fixed range check typo. From Corey Minyard. - -2000-09-13 Alexandre Petit-Bianco - - * decl.c (give_name_to_locals): New local `code_offset'. Call - `maybe_adjust_start_pc'. - * expr.c (note_instructions): New function. - (expand_byte_code): Don't collect insn starts here. - (peek_opcode_at_pc): New function. - (maybe_adjust_start_pc): Likewise. - * java-tree.h (maybe_adjust_start_pc): Declare. - (note_instructions): Likewise. - * jcf-parse.c (parse_class_file): Call `note_instructions'. - -2000-09-13 Alexandre Petit-Bianco - - * parse.y (field_access:): Fixed indentation. - (qualify_ambiguous_name): Properly qualify `this.a[b].c'. - -2000-09-07 Tom Tromey - - Fix for PR gcj/307: - * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not - JPRIMITIVE_TYPE_P, for arithmetic operators. - (patch_method_invocation): Indentation fix. - (try_builtin_assignconv): Handle boolean specially. Fixed typo. - (valid_builtin_assignconv_identity_widening_p): Handle boolean. - (do_unary_numeric_promotion): Cleaned up code. - (valid_cast_to_p): Handle boolean correctly. - -2000-09-27 Tom Tromey - - * lex.c (java_read_unicode): Reset bs_count when finished with - `\u' sequence. - -2000-10-01 Mark Mitchell - - Convert to GC. - * Make-lang.in (s-java): Don't depend on ggc-callbacks.o. - * Makefile.in (BACKEND): Don't include ggc-callbacks.o. - (typeck.o): Depend on ggc.h. - * class.c (add_method_1): Use GC functions for allocation. - (init_class_processing): Register roots. - * decl.c (ggc_p): Set to 1. - (pending_local_decls): Make it static. - (push_jvm_slot): Use GC functions for allocation. - (init_decl_processing): Register roots. - (give_name_to_locals): Use GC functions for allocation. - (lang_mark_tree): New function. - * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC - functions for allocation. - * jcf-parse.c (jcf_parse_source): Use ggc_strdup. - * lex.c (java_lex): Use build_string, rather than replicating it - inline. - * parse.y (goal): Add more roots. - (mark_parser_ctxt): New function. - * typeck.c: Include ggc.h. - -2000-09-29 Alexandre Petit-Bianco - - * parse.y (maybe_yank_clinit): Also keep if its body - contains something else than MODIFY_EXPR. - -2000-09-23 Mark Mitchell - - * Make-lang.in (JAVA_SRCS): Include java-tree.h. - * Makefile.in (parse.o): Depend on ggc.h. - (class.o): Likewise. - (constants.o): Likewise. - (decl.o): Likewise. - (expr.o): Likewise. - (jcf-parse.o): Likewise. - (jcf-write.o): Likewise. - (mangle.o): Likewise. - * class.c: Include ggc.h. - (build_static_field_ref): Register GC roots. - (layout_class): Likewise. - (init_class_processing): Likewise. - * constants.c: Include ggc.h. - (current_constant_pool_data_ref): Remove. - (tag_nodes): Move it to ... - (get_tag_node): ... here. Register GC roots. - * decl.c: Include ggc.h. Remove many global tree definitions. - (throw_node): Define. - (java_global_trees): Likewise. - (predef_filenames): Make the size a constant. - (init_decl_processing): Adjust accordingly. - (init_decl_processing): Call init_jcf_parse. Register GC roots. - * expr.c: Include ggc.h. - (init_expr_processing): Register GC roots. - (build_invokeinterface): Likewise. - * java-tree.h: Replace extern tree declarations with macros. - (java_global_trees): New variable. - (java_tree_index): New enumeration. - (init_jcf_parse): Declare. - * jcf-parse.c: Include ggc.h. - (current_class): Remove declaration. - (main_class): Likewise. - (all_class_list): Likewise. - (predefined_filename_p): Adjust for constant size of - predef_filenames. - (init_jcf_parse): New function. - * jcf-write.c: Include ggc.h. - (generate_classfile): Register GC roots. - (append_synthetic_attribute): Likewise. - (append_innerclass_attribute_entry): Likewise. - * lang.c: Include ggc.h. - (lang_print_error): Register GC roots. - * parse.h (struct parser_ctxt): Rename fields to avoid conflicts - with macros. - * parse.y: Include ggc.h. - (wfl_operator): Remove. - (goal): Register GC roots. - (java_pop_parser_context): Adjust for new field names. - (java_parser_context_save_global): Likewse. - (java_parser_context_restore_global): Likewise. - (java_parser_context_suspend): Likewise. - (java_parser_context_resume): Likewise. - (verify_constructor_circularity): Register GC roots. - (lookup_cl): Likewise. - (java_reorder_fields): Likewise. - (build_current_this): Likewise. - (class_in_current_package): Likewise. - (argument_types_convertible): Likewise. - (patch_cast): Rename wfl_op parameter to avoid macro conflicts. - -2000-09-14 Tom Tromey - - * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV. - -2000-09-13 Tom Tromey - - * jcf-parse.c: Include . - * jv-scan.c: Include . - -2000-09-12 Tom Tromey - - * expr.c (pop_type_0): Return `Object' if trying to merge two - interface types. - * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for - interface types; `Object' is always a valid supertype. - -2000-09-12 Tom Tromey - - Fix for PR gcj/33: - * jv-scan.c (help): Document --encoding. - (options): Added `encoding' entry. - (OPT_ENCODING): New define. - (main): Handle --encoding. - Include if nl_langinfo exists. - * lang-options.h: Document --classpath, --CLASSPATH, --main, and - --encoding. - * jcf-parse.c Include if we have nl_langinfo. - (parse_source_file): Correctly call java_init_lex. Added `finput' - argument. Use nl_langinfo to determine default encoding. - * java-tree.h (current_encoding): Declare. - * parse.y (java_parser_context_restore_global): Don't restore - `finput'. - (java_parser_context_save_global): Don't set `finput' field. - (java_pop_parser_context): Don't restore `finput'. Free old lexer - if required. - * lang.c (current_encoding): New global. - (lang_decode_option): Recognize `-fencoding='. - (finish_parse): Don't close finput. - * parse.h (struct parser_ctxt): Removed `finput' and - `unget_utf8_value' fields. Added `lexer' field. - (java_init_lex): Fixed declaration. - * lex.c (java_new_lexer): New function. - (java_destroy_lexer): Likewise. - (java_read_char): Added `lex' argument. Handle iconv case. - (java_read_unicode): Added `lex' argument. Count backslashes in - lexer structure. - (java_init_lex): Added `finput' and `encoding' arguments. Set - `lexer' field in ctxp. - (BAD_UTF8_VALUE): Removed. - (java_lex): Handle seeing UEOF in the middle of a string literal. - * lex.h: Include if HAVE_ICONV defined. - (java_lexer): New structure. - (UNGETC): Removed. - (GETC): Removed. - (DEFAULT_ENCODING): New define. - (java_destroy_lexer): Declare. - -2000-09-12 Tom Tromey - - Fix for PR gcj/343: - * lex.c (java_init_lex): Initialize java_io_serializable. - * parse.y (java_io_serializable): New global. - (valid_ref_assignconv_cast_p): An array can be cast to - serializable. - -2000-09-10 Zack Weinberg - - * decl.c, expr.c: Include defaults.h if not already included. - Don't define the *_TYPE_SIZE macros. - -2000-09-09 Geoffrey Keating - - * typeck.c (build_java_array_type): Correct first parameter - in ADJUST_FIELD_ALIGN invocation. - -2000-09-06 Tom Tromey - - * lang-specs.h: Also recognize `-femit-class-files'. - -2000-09-05 Alexandre Petit-Bianco - - * verify.c (merge_types): Load the types to merge if necessary. - -2000-09-02 Anthony Green - - * jcf-io.c: Include zlib.h. - (open_in_zip): Read compressed class file archives. - * zipfile.h (ZipDirectory): Add uncompressed_size and - compression_method fields. - * zextract.c (read_zip_archive): Collect file compression info. - -2000-08-15 Bryce McKinlay - - * parse.y (do_resolve_class): Also explore superclasses of - intermediate enclosing contexts when searching for inner classes. - -2000-08-11 Alexandre Petit-Bianco - - * parse.y (variable_declarator_id:): Better error message. - (expression_statement:): Use YYNOT_TWICE. - (cast_expression:): Likewise. - (assignment:): Likewise. - -2000-08-11 Alexandre Petit-Bianco - - * parse.y (do_merge_string_cste): New locals. Create new - STRING_CSTs each time, use memcpy. Fixes gcj/311. - -2000-08-07 Hans Boehm - - * boehm.c (mark_reference_fields): Set marking bits for all words in - a multiple-word record. - (get_boehm_type_descriptor): Use the procedure marking descriptor for - java.lang.Class. - -2000-08-31 Mike Stump - - * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext), - jcf-dump$(exeext)): Make parallel safe. - -2000-08-29 Zack Weinberg - - * jcf-parse.c (set_source_filename): Constify a char *. - * jcf-write.c (append_innerclasses_attribute, - make_class_file_name): Constify a char *. Don't recycle a - variable for an unrelated purpose. - * parse.y: (build_alias_initializer_parameter_list): Constify a char *. - (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings. - -2000-08-29 Alexandre Petit-Bianco - - * expr.c (can_widen_reference_to): Fixed indentation. - * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment. - * parse.y: `finit$' replaces `$finit$' in comments. - (try_builtin_assignconv): Fixed leading comment. - -2000-08-25 Greg McGary - - * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE. - -2000-08-24 Greg McGary - - * lang.c (lang_decode_option): Use ARRAY_SIZE. - * parse.y (BINOP_LOOKUP): Likewise. - -2000-08-22 Andrew Haley - - * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before - sign extending. Fixes gcj/321. - * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before - combining to make a jlong. Fixes gcj/321. - -2000-08-21 Nix - - * lang-specs.h: Do not process -o or run the assembler if - -fsyntax-only. - -2000-08-16 Andrew Haley - - * typeck.c (build_java_array_type): Rewrite code to do array - alignment. Take into account back-end macros when aligning array - data. Remove setting of TYPE_USER_ALIGN; Java doesn't allow the - user to set alignment. Fixes gcj/252 and 160. - -2000-08-09 Tom Tromey - - * parse.y (check_abstract_method_definitions): Now return `int'. - Check implemented interfaces. Fixes PR gcj/305. - - * parse.y (patch_switch_statement): Disallow `long' in switch - expressions. Fixes PR gcj/310. - -2000-08-15 Alexandre Petit-Bianco - - * decl.c (finit_leg_identifier_node): New global. - (init_decl_processing): Use `finit$' to initialize - finit_identifier_node. Use `$finit$' to initialize - finit_leg_identifier_node. - * expr.c (expand_java_field_op): Use ID_FINIT_P. - * java-tree.h (finit_identifier_node): Changed attached comment. - (finit_leg_identifier_node): New declaration. - (ID_FINIT_P): Take finit_identifier_node and - finit_leg_identifier_node into account. This is a backward - compatibility hack. - -2000-08-14 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_conditional): Re-installed lost - Jan 6 2000 patch. - (generate_bytecode_insns): Check `nargs' before emitting it. - * verify.c (merge_type_state): Fixed typo. - * ChangeLog: Fixed typo in some jcf-write.c entries mentioning - generate_bytecode_{conditional,insns}. - -2000-08-13 Anthony Green - - * check-init.c (check_init): Add case for BIT_FIELD_REF (required - for -pg builds). - -2000-08-10 Alexandre Petit-Bianco - - * class.c (maybe_layout_super_class): Fixed indentation. - * java-tree.h (CLASS_METHOD_CHECKED_P): New macro. - (java_check_methods): New function declaration. - * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str' - instead of `str_ptr'. - * jcf-write.c (generate_bytecode_insns): Emit number the of args - of a `invokeinterface' at the right time. - * parse.h (WFL_STRIP_BRACKET): New macro. - (SET_TYPE_FOR_RESOLUTION): Use it. - * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'. - (check_class_interface_creation): Don't check for cross package - innerclass name clashes. - (method_header): Behave properly if MDECL is `error_mark_node'. - (method_declarator): Return `error_mark_node' if bogus current - class. - (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary. - (resolve_and_layout): New local `decl_type', set and used. Call - java_check_methods. - (java_check_methods): New method. - (java_layout_classes): Use it. - (resolve_qualified_expression_name): No EH check necessary in - access$. - (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating - `case' statement. - (patch_assignment): Set DECL_INITIAL on integral final local. - -2000-08-08 Alexandre Petit-Bianco - - * java-tree.h (flag_extraneous_semicolon): New extern. - * lang-options.h: (-Wextraneous-semicolon): New option. - * lang.c (flag_redundant): Fixed typo in leading comment. - (flag_extraneous_semicolon): New global. - (lang_decode_option): Set `flag_extraneous_semicolon' when - -Wall. Decode `-Wextraneous-semicolon'. - * parse.y (type_declaration:): Removed `SC_TK' hack, added - `empty_statement' rule. - (class_body_declaration): Likewise. - (method_body:): Accept `;' as a method body. - (static_initializer:): Removed `SC_TK' hack. - (constructor_block_end:): Likewise. - (empty_statement:): Report deprecated empty declaration. Fixes - gcj/295 - -2000-08-07 Alexandre Petit-Bianco - - * parse.y (build_dot_class_method_invocation): Changed parameter - name to `type'. Build signature from `type' and convert it to a - STRING_CST if it's an array. - (patch_incomplete_class_ref): `build_dot_class_method_invocation' - to use `ref_type' directly. - -2000-08-06 Ovidiu Predescu - - * lang-options.h: Added a comma after the last element to avoid - syntax errors when other languages define additional options. - -2000-08-04 Zack Weinberg - - * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist. - * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS. - (jc1): Link with $(BACKEND). - (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND). - -2000-08-02 Zack Weinberg - - * jvspec.c: Adjust type of second argument to - lang_specific_driver, and update code as necessary. - - * class.c (build_dtable_decl): Initialize dummy. - -2000-08-01 Alexandre Petit-Bianco - - * parse.y (maybe_yank_clinit): When generating bytecode: non empty - method bodies not to rule out discarding `'; don't use - to initialize static fields with constant initializers. - -2000-08-01 Alexandre Petit-Bianco - - * gjavah.c (print_method_info): Added `synth' parameter. Skip - synthetic methods. - (method_synthetic): New global. - (HANDLE_METHOD): Recognize synthetic method and tell - `print_method_info' about it. - (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're - processing a synthetic method. - * jcf-reader.c (skip_attribute): New function. - ( skip_attribute): Likewise. - -2000-08-01 Alexandre Petit-Bianco - - * parse.y (build_outer_field_access): Fixed comments. - (fix_constructors): Emit the initialization of this$ before - calling $finit$. - (resolve_qualified_expression_name): Build an access to `decl' if - necessary. - -2000-07-31 Alexandre Petit-Bianco - - * parse-scan.y (curent_class): Non longer const. - (inner_qualifier, inner_qualifier_length): Deleted. - (current_class_length): New global. - (bracket_count): Fixed typo in leading comment. - (anonymous_count): New global. - (class_instance_creation_expression:): Handle anonymous classes. - (anonymous_class_creation:): New rule. - (push_class_context): Rewritten. - (pop_class_context): Likewise. - (INNER_QUALIFIER): Macro deleted. - (report_class_declaration): call `push_class_context' when - entering the function. `fprintf' format modified not to use - INNER_QUALIFIER. - (report_class_declaration): Assign `package_name' and - `current_class' to NULL separately. - -2000-07-31 Alexandre Petit-Bianco - - * expr.c (build_invokeinterface): Call layout_class_methods on - target interface. - -2000-07-27 Tom Tromey - Anthony Green - Alexandre Petit-Bianco - - * class.c (make_class_data): Create vtable for abstract classes. - (get_dispatch_table): Changed to cope with abstract classes. - -2000-07-27 Tom Tromey - - * parse.y (patch_method_invocation): Don't reverse the argument - list when dealing with anonymous class constructors. Fixed typo in - comment. - -2000-07-27 Alexandre Petit-Bianco - - * parse.y (build_alias_initializer_parameter_list): Reverse - crafted list when building aliases for anonymous class - constructors. - -2000-07-25 Alexandre Petit-Bianco - - * parse.y (jdep_resolve_class): Don't bother checking potential - innerclass access if `decl' is NULL. - (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the - WFL. - -2000-07-25 Alexandre Petit-Bianco - - * parse.c: Remove (again.) - -2000-07-24 Alexandre Petit-Bianco - - * parse.y (find_as_inner_class): Removed 2000-07-19 patches. - * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved - outside the `if' statement, alias to innerclass removed, `decl' - used to mark the class complete. - -2000-07-21 Alexandre Petit-Bianco - - * parse.y (simple_name:): Fixed typo in error message. - -2000-07-21 Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node - or its first operand can be error marks. - -2000-07-20 Alexandre Petit-Bianco - - * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC. - * parse.y (method_header): Likewise. - -2000-07-19 Alexandre Petit-Bianco - - * parse.y (process_imports): Consider that one might be trying to - import an innerclass. Fixes gcj/254 - -2000-07-19 Alexandre Petit-Bianco - - * parse.y (find_as_inner_class): Handle the case where the - enclosing context of an innerclass has been loaded as bytecode. - -2000-07-19 Alexandre Petit-Bianco - - * parse.y (simple_name:): Reject `$' in type names. - (resolve_type_during_patch): Use `type' as a second - argument to resolve_no_layout. Fixes gcj/257. - -2000-07-18 Bryce McKinlay - - * parse.y (find_most_specific_methods_list): Select the only - non-abstract method even if max has been set. - Fixes gcj/285, gcj/298. - -2000-07-18 Jeff Sturm - - * lang-specs.h: Added %(jc1) to java compiler options. - -2000-07-14 Zack Weinberg - - * .cvsignore: New file. - -2000-07-13 Alexandre Petit-Bianco - - * parse.y (not_accessible_p): Access granted to innerclasses - (indirectly) extending the reference type. Fixes gcj/249. - -2000-07-13 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Fixed comment. - (maybe_use_access_method): Build this$s to the context of the - target method, or a type that extends it. Fixes gcj/242. - -2000-07-13 Mark Mitchell - - * parse.c: Remove. - -2000-07-13 Alexandre Petit-Bianco - - * parse.y (fold_constant_for_init): Avoid bullish conversion. - -2000-07-13 Tom Tromey - - * lang-specs.h: Added %{I*}. - -2000-07-13 Zack Weinberg - - * lang-specs.h: Use the new named specs. Remove unnecessary braces. - -2000-07-12 Mark Mitchell - - * parse-scan.c: Remove. - -2000-07-10 Alexandre Petit-Bianco - - * class.c (set_super_info): Handled protected inner classes. - (common_enclosing_context_p): Bail early if arguments aren't both - inner classes. - (get_access_flags_from_decl): Handle private and protected inner - classes. - * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro. - (CLASS_PROTECTED): Likewise. - (struct lang_type): New bitfield `poic'. - * parse.y (jdep_resolve_class): Call check_inner_class_access on - inner classes only. - (check_inner_class_access): Renamed arguments, added - comments. Handles protected inner classes (fixes gcj/225) - (not_accessible_p): Fixed comments. Avoid handling inner classes. - -2000-07-10 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Verify qualified - access to `this'. Fixes gcj/239. - -2000-07-10 Alexandre Petit-Bianco - - * jcf-write.c (generate_classfile): Don't install ConstantValue - for null pointers. - -2000-07-07 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Handle inner class - access. Fixes gcj/256. - -2000-07-07 Alexandre Petit-Bianco - - * jcf-write.c (generate_classfile): Properly install the - ConstantValue attribute and the initial value constant pool index - on string constants. - * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting - class files. - -2000-07-06 Alexandre Petit-Bianco - - * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while - construct. - * parse.y (find_as_inner_class): Fixed typo. - (do_resolve_class): Explore enclosing contexts when searching for - innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME. - (check_inner_class_access): Check `decl' which can be null in case - of previous errors. - -2000-07-05 Alexandre Petit-Bianco - - * java-tree.h (java_debug_context): Declared `extern'. - (safe_layout_class): Likewise. - * parse.y (resolve_field_access): Field must be `static' in order - to be replaced by its initial value. Added comments. - (find_applicable_accessible_methods_list): Fixed typo. - (find_most_specific_methods_list): Methods found in innerclasses - take over methods founds in the enclosing contexts. - (java_complete_tree): Loosen restrictions on the type of DECLs - that can be replaced by their initialization values. - (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'. - -2000-07-05 Tom Tromey - - * Make-lang.in (PARSE_DIR): New macro. - (PARSE_RELDIR): Likewise. - (PARSE_C): Likewise. - (PARSE_SCAN_C): Likewise. - ($(PARSE_C)): New target. - ($(PARSE_SCAN_C)): Likewise. - (SET_BISON): New macro. - (BISONFLAGS): Likewise. - (JAVABISONFLAGS): Likewise. - -2000-07-02 Bryce McKinlay - - * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream - argument on the first pass for CNI as well as JNI. - (print_method_info): Set up method name on the first pass only. - -2000-07-01 Alexandre Petit-Bianco - - * parse.y (parser_qualified_classname): Removed parameter - `is_static'. - (create_interface): Removed first passed parameter to - parser_qualified_classname. - (create_class): Likewise. Don't install alias on static - innerclasses. Fixes gcj/275. - -2000-07-01 Alexandre Petit-Bianco - - * parse.y (maybe_generate_pre_expand_clinit): Don't build a - debugable statement with empty_stmt_node. Fixes gcj/272 - -2000-07-01 Alexandre Petit-Bianco - - * expr.c (build_instanceof): Layout type after it's loaded. Fixes - gcj/271. - -2000-06-29 Alexandre Petit-Bianco - - * jcf-write.c (push_long_const): Appropriately cast short negative - constant to jword. - -2000-06-29 Alexandre Petit-Bianco - - * parse.y (verify_constructor_super): Use loop variable - `m_arg_type' initialized with `mdecl_arg_type'. - -2000-06-29 Tom Tromey - - * parse.y (resolve_field_access): Handle case where `type_found' - is NULL. - -2000-06-27 Alexandre Petit-Bianco - - * expr.c (lookup_field): The same field can be found through two - different interface. Don't declare it ambiguous in that case. - -2000-06-27 Tom Tromey - - * lex.c (java_lineterminator): Don't recognize \r after \n. If \r - follows \r, then unget it at a lower level. - -2000-06-26 Tom Tromey - - * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to - java_complete_tree. - -2000-06-25 Tom Tromey - - * parse.y (for_statement): Wrap expression in a WFL if it is a - constant. For PR gcj/268. - -2000-06-25 Alexandre Petit-Bianco - - * parse.y (do_resolve_class): Minor optimiztion in the package - list search. Removed unnecessary test and return statement. - (valid_ref_assignconv_cast_p): Order of arguments to - enclosing_context_p fixed. - -2000-06-24 Tom Tromey - - * expr.c (lookup_field): Print error and return error_mark_node if - field reference is ambiguous. - - * parse.y (check_abstract_method_definitions): Also check if - `other_method' is abstract. - -2000-06-23 Alexandre Petit-Bianco - - * class.c (set_super_info): Handle ACC_PRIVATE for (inner) - classes. - * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro. - (struct lang_type): New field `pic'. - (CLASS_PRIVATE): New macro. - * parse.y (check_inner_class_access): New function. - (jdep_resolve_class): Call it. - -2000-06-23 Tom Tromey - - * parse.y (patch_incomplete_class_ref): Initialize the returned - class. For PR gcj/260. - -2000-06-21 Alexandre Petit-Bianco - - * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'. - -2000-06-20 Alexandre Petit-Bianco - - * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for - Java specific checks. - * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage - screened by DECL_P. - * java-tree.def (CASE_EXPR): Marked 'e'. - (DEFAULT_EXPR): Likewise. - * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage - screened by DECL_P. - * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for - Java specific checks. - (generate_bytecode_insns): Test try_block for BLOCK before using - BLOCK_EXPR_BODY. - * parse.y (build_wfl_wrap): Added `location' argument. Set - EXPR_WFL_LINECOL accordingly. - (dim_expr:): Wrap constants with WFLs. - (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC. - (resolve_package): Check for `stmt' not being a BLOCK before - building a debuggable statement with it. - (make_qualified_primary): Added extra parameter to build_wfl_wrap - invocation. - (resolve_field_access): Make sure `decl' is a DECL before treating - it as such. - (maybe_build_primttype_type_ref): Make sure `wfl''s node is an - IDENTIFIER_NODE before treating it as such. - (patch_new_array_init): Make sure `elt' is a TREE_LIST before - treating it as such. - (find_applicable_accessible_methods_list): CLASS_INTERFACE macro - to be applied only on non array types. - -2000-06-16 Per Bothner - - * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN): Don't - define in terms of DECL_RESULT, as that fails when --enable-checking. - -2000-06-15 Kaveh R. Ghazi - - * jcf-write.c (CHECK_PUT): Add static prototype. Make pointer - types the same in comparison. - (CHECK_OP): Add static prototype. - -2000-06-13 Jakub Jelinek - - * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN. - * parse.y (java_complete_class): Set DECL_USER_ALIGN. - * parse.c: Rebuilt. - -2000-06-11 Kaveh R. Ghazi - - * decl.c (create_primitive_vtable): Prototype. - - * jcf-write.c (generate_bytecode_insns): Initialize variable - `saved_context'. - - * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED. - -2000-06-09 Bryce McKinlay - - * parse.y (find_applicable_accessible_methods_list): Use a hashtable - to track searched classes, and do not search the same class more than - once. Call find_applicable_accessible_methods_list on immediate - superclass, instead of search_applicable_method_list on all ancestors. - Fix for PR gcj/238. - -2000-06-09 Bryce McKinlay - - * parse.y (register_fields): Permit static fields in inner classes - if they are final. Fix for PR gcj/255. - -2000-06-06 Alexandre Petit-Bianco - - * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries. - * parse.y (find_in_imports): Returned type changed to void, - leading comment fixed. - (register_package): New function. - (qualify_and_find): Likewise. - (package_declaration:): Use `register_package'. - (single_type_import_declaration:): Removed local variable - `node'. Added missing `;' for consistency. - (type_import_on_demand_declaration:): Use `chainon' to link new - entries. - (lookup_field_wrapper): Lookup local variables defined in outer - contexts first. - (java_complete_class): Don't reverse the list of imported on demand. - (do_resolve_class): Reorganized. Removed local variable - `original_name'. Call `qualify_and_find' with the current package - name, invoke `find_in_imports_on_demand' right after. Call - `qualify_and_find' with the packages we've seen so far. Fixed - operations numbering in comments. - (java_expand_class): Don't reverse `package_list'. - (find_most_specific_methods_list): New local variables `abstract' - and `candidates'. Use them to pick the right method. - -2000-06-06 Tom Tromey - - * parse.y (check_modifiers_consistency): Don't subtract out - `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY. - -2000-06-04 Philipp Thomas - - * Makefile.in (INTLLIBS): New. - (LIBS): Add above. - (DEPLIBS): Ditto. - -2000-06-02 Alexandre Petit-Bianco - - * class.c (get_dispatch_table): Build the vtable dummy entry list - element with a null purpose. Fixed leading comment. - (build_dtable_decl): Build an accurate dtable type when appropriate - and use it. - -2000-06-02 Richard Henderson - - * lang.c (lang_get_alias_set): New. - -2000-05-31 Alexandre Petit-Bianco - - * parse.y (resolve_field_access): Complete the DECL_INITIAL tree - before using it as the accessed field. - -2000-05-31 Tom Tromey - - * java-tree.h (boolean_array_vtable, byte_array_vtable, - char_array_vtable, short_array_vtable, int_array_vtable, - long_array_vtable, float_array_vtable, double_array_vtable): - Declare. - * expr.c (get_primitive_array_vtable): New function. - (create_primitive_vtable): New function. - (java_lang_expand_expr): Enable code to statically generate - arrays. - * decl.c (init_decl_processing): Create primitive vtables. - (boolean_array_vtable, byte_array_vtable, char_array_vtable, - short_array_vtable, int_array_vtable, long_array_vtable, - float_array_vtable, double_array_vtable): Define. - -2000-05-26 Zack Weinberg - - * java/parse.y (find_applicable_accessible_methods_list): - Don't add an uninitialized value to the list. - -2000-05-25 Tom Tromey - - * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC - when trying to see if field's class should be initialized. Always - initialize field's declaring class, not qualified class. - For PR gcj/162. - - * parse.y (array_constructor_check_entry): Pass `wfl_value', not - `wfl_operator', to maybe_build_primttype_type_ref. - Fixes PR gcj/235. - -2000-05-23 Bryce McKinlay - - * parse.y (patch_method_invocation): Don't try to lookup methods - in primitive types. - -2000-05-02 Alexandre Petit-Bianco - - * parse.y (resolve_field_access): Call the appropriate - before accessing the length of a static array. Craft a decl for - the field while its time. Fixes PR gcj/129. - -2000-05-01 Alexandre Petit-Bianco - - * parse.y (resolve_package): Correctly set `*next' (was off by - one.) - (resolve_qualified_expression_name): Fixed comment. - -2000-04-27 Alexandre Petit-Bianco - - * jcf-parse.c (jcf_parse_source): Reset current_class and - current_function_decl to NULL before parsing a new file. - -2000-04-27 Alexandre Petit-Bianco - - * parse.y (block_end:): If the collected block doesn't feature a - statement, insert an empty statement. - -2000-04-17 Alexandre Petit-Bianco - - * parse.y (maybe_yank_clinit): New function. - (maybe_generate_pre_expand_clinit): Always link at the - end of the list of methods belonging to a class. - (java_complete_expand_method): Check whether is really - necessary and expand it accordingly. - -2000-04-17 Alexandre Petit-Bianco - - * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be - processed by the method's switch statement. - -2000-05-19 Tom Tromey - - * java-tree.h: Added init state enum. - * decl.c (emit_init_test_initialization): Initialize class - initialization check variable by looking at class' state. - -2000-05-19 Tom Tromey - - * java-tree.h (build_instanceof): Declare. - (build_get_class): Declare. - * parse.y (patch_binop): Use build_instanceof. - * expr.c (build_instanceof): New function. If class is final, - don't make a function call. - (expand_java_INSTANCEOF): Use it. - (build_get_class): New function. - -2000-05-18 Alexandre Oliva - - * jcf-write.c (generate_classfile): Scan the source_file for - slashes with the right pointer variable. - -2000-05-17 Andrew Cagney - - * lang.c (lang_decode_option): Update -Wunused flags by calling - set_Wunused. - * decl.c (poplevel): Replace warn_unused with warn_unused_label. - -2000-05-09 Zack Weinberg - - * check_init.c (check_init): Constify local char *. - * class.c (push_class): Constify local char *. - * java_tree.h: Update prototypes. - * jcf-io.c (open_class): Constify filename parameter and - return value. - (find_class): Remove redundant string copy. Cast return from - open_class. - * jcf-parse.c (read_class, parse_class_file, yyparse): - Constify local char *. - * jcf-write.c (generate_bytecode_insns, generate_classfile): - Constify local char *. - * jcf.h (JCF): Constify filename and classname. - (JCF_FINISH): Cast args to FREE to char * when appropriate. - * lang.c (init_parse): Constify parameter and return value. - * lex.c (java_get_line_col): Constify filename parameter. - * parse.h: Constify parser_ctxt.filename. Update prototypes. - * parse.y (java_parser_context_suspend, - issue_warning_error_from_context, safe_layout_class): Constify - local char *. - * parse.c: Regenerate. - -2000-05-08 Tom Tromey - - * expr.c (build_jni_stub): Cache the result of - _Jv_LookupJNIMethod. - -2000-05-05 Alexandre Petit-Bianco - - * decl.c (predef_filenames_size): Now 7. - (predef_filenames): New seventh entry. - -2000-05-04 Tom Tromey - - * boehm.c (mark_reference_fields): Don't mark RawData fields. - Keep track of when we've seen a reference field after a - non-reference field. - (get_boehm_type_descriptor): Handle case where we see - non-reference fields but no trailing reference field. - * decl.c (rawdata_ptr_type_node): Define. - (init_decl_processing): Initialize rawdata_ptr_type_node. - * java-tree.h (rawdata_ptr_type_node): Declare. - -2000-05-04 Kaveh R. Ghazi - - * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format - specifiers in calls to fprintf. - -2000-05-03 Andrew Haley - - * expr.c (build_java_jsr): Use emit_jump, not expand_goto. - - * javaop.h (WORD_TO_INT): New function. - (IMMEDIATE_s4): Use WORD_TO_INT. - * jcf.h (JPOOL_INT): Ditto. - - * gjavah.c (decode_signature_piece): Don't treat `$' as namespace - separator. - -2000-04-19 Tom Tromey - - * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE - on native function. - * jcf-parse.c (parse_class_file): Call build_jni_stub for native - JNI methods. - * expr.c (build_jni_stub): New function. - * lang-specs.h: -fjni and -femit-class-file are incompatible. - * parse.c: Rebuilt. - * parse.y (java_complete_expand_methods): Expand a native method - and call build_jni_stub if -fjni given. - * lang-options.h: Document -fjni. - * lang.c (flag_jni): New global. - (lang_f_options): Added `jni' entry. - * java-tree.h (soft_lookupjnimethod_node, - soft_getjnienvnewframe_node, soft_jnipopsystemframe_node): - Declare. - (flag_jni): Declare. - (build_jni_stub): Declare. - (struct lang_decl): Added `native' flag. - (METHOD_NATIVE): Redefined to use `native' field of lang specific - structure. - * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node, - soft_jnipopsystemframe_node): New globals. - (init_decl_processing): Set them. _Jv_InitClass only takes one - argument. - - * java-tree.def: Put into `C' mode. - -2000-04-27 Tom Tromey - - Fix for PR gcj/2: - * expr.c (expand_invoke): Generate check to see if object pointer - is null in nonvirtual invocation case. - * java-tree.h (soft_nullpointer_node): Declare. - * decl.c (soft_nullpointer_node): New global. - (init_decl_processing): Initialize soft_nullpointer_node. - * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final' - or `private' methods. - (patch_invoke): Handle INVOKE_NONVIRTUAL case. - -2000-04-26 Alexandre Petit-Bianco - - * decl.c (complete_start_java_method): Don't call _Jv_InitClass - from - -2000-04-26 Tom Tromey - - * zextract.c (find_zip_file_start): New function. - (read_zip_archive): Use it. - -2000-04-25 Alexandre Petit-Bianco - - * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS. - -2000-04-24 Alexandre Petit-Bianco - - * class.c (common_enclosing_context_p): New function. - * java-tree.h (common_enclosing_context_p): Added prototype. - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow - classes sharing an outer context with the current instance. - * parse.y (build_access_to_thisn): Fixed leading comment. - (verify_constructor_super): New local `supper_inner'. Skip - enclosing context argument in the case of inner class constructors. - (patch_method_invocation): Insert proper context as second - parameter to pure inner class constructor super invocations. - -2000-04-24 Alexandre Petit-Bianco - - * parse.y (end_class_declaration): Reset the interface number - counter. - -2000-04-24 Alexandre Petit-Bianco - - * parse.y (source_start_java_method): Deleted unnecessary code. - (patch_method_invocation): Fixed comment. - -2000-04-24 Robert Lipe - - * parse.h (_jdep): Member `kind' now ENUM_BITFIELD. - -2000-04-23 Tom Tromey - - * boehm.c (mark_reference_fields): Use int_byte_position. - -2000-04-22 Tom Tromey - - * boehm.c (mark_reference_fields): Only call byte_position on - non-static fields. - -2000-04-22 Tom Tromey - - * boehm.c (mark_reference_fields): Added `last_view_index' - argument. Use DECL_FIELD_OFFSET to determine field's offset. - -2000-04-20 Mo DeJong - - * parse.h (INTERFACE_INNER_MODIFIERS): New macro. - * parse.y (check_class_interface_creation): Fixed comments. Select - permitted modifiers for (inner) interfaces. Changed error message - to report rejected modifiers used with local classes. - -2000-04-20 Alexandre Petit-Bianco - - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes - of directly inherited type considered in scope. - * parse.y (do_resolve_class): Search inherited classes for inner - classes. - -2000-04-20 Tom Tromey - - * parse.y (not_accessible_p): Use member's class, not current - class, when doing inheritance check for protected reference. - Fixes PR gcj/124. - -2000-04-20 Jason Schroeder - - * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction. - -2000-04-19 Alexandre Petit-Bianco - - * parse.y (lookup_field_wrapper): Search for final local aliases. - (resolve_expression_name): Let lookup_field_wrapper search for - final local aliases. Force the value of `name' if one is found. - (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have - an expression name. Fixed comments. - -2000-04-19 Alexandre Petit-Bianco - - * parse.y (yyerror): `msg' can be null, don't use it in that case. - -2000-04-19 Tom Tromey - - * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop. - -2000-04-18 Alexandre Petit-Bianco - - * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'. - -2000-04-18 Tom Tromey - - PR gcj/211: - * gjavah.c (utf8_cmp): Changed return value. - (cxx_keyword_subst): Handle all C++ keywords. Allocate new return - result. - (cxx_keywords): New global. - (get_field_name): Handle new result of cxx_keyword_subst. - (print_method_info): Likewise. - -2000-04-17 Bryce McKinlay - - * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names - with a newline, for CNI. - (print_stub_or_jni): Print a space or newline before method name for - CNI as well as JNI. - (print_cxx_classname): Don't write leading "::" in CNI stub method. - (process_file): Include gcj/cni.h if generating CNI stubs. - -2000-04-16 Tom Tromey - - * gjavah.c (decompile_method): Use print_field_name. - Fixes PR gcj/205. - -2000-04-14 Alexandre Petit-Bianco - - * parse.y (java_expand_classes): Reverse the package list once. - (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string - reduction. - (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of - the `==' and `!=' operators. - -2000-04-05 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): At invocation time, - always relate an interface method to the type of its selector. - -2000-04-05 Tom Tromey - - Fix for PR gcj/2: - * expr.c (expand_invoke): Generate check to see if object pointer - is null in nonvirtual invocation case. - * java-tree.h (soft_nullpointer_node): Declare. - * decl.c (soft_nullpointer_node): New global. - (init_decl_processing): Initialize soft_nullpointer_node. - * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final' - or `private' methods. - (patch_invoke): Handle INVOKE_NONVIRTUAL case. - -2000-04-05 Tom Tromey - - Fix for PR gcj/140: - * parse.y (check_final_assignment): Recognize assignments to the - `length' field of an array when generating class files. - -2000-04-05 Alexandre Petit-Bianco - - * class.c (decl_hash): Prototype removed. - (decl_compare): Likewise. - -2000-04-05 Tom Tromey - - * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter. - * parse.y (check_modifiers_consistency): Check for final/volatile - clash. Fixes PR gcj/164. - -2000-04-05 Alexandre Petit-Bianco - - * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash', - made global. - (java_hash_compare_tree_node): Renamed from `decl_compare, made - global. - (add_method_1): Use `java_hash_hash_tree_node' and - `java_hash_compare_tree_node'. - * java-tree.h: (java_hash_hash_tree_node): Prototyped. - (java_hash_compare_tree_node): Likewise. - * parse.y (find_applicable_accessible_methods_list): Create, - delete and use a hash table to remember already searched interfaces. - -2000-04-03 Matt Welsh - - * jcf-depend.c (add_entry): Fixed bug where list was always replaced - with latest entry. - -2000-04-04 Kaveh R. Ghazi - - * boehm.c (mark_reference_fields, set_bit): Prototype. - (set_bit): Un-ANSI-fy definition. - - * class.c (init_test_hash_newfunc, decl_hash, decl_compare): - Prototype. - - * decl.c (emit_init_test_initialization): Likewise. - - * gjavah.c (jni_print_char): Likewise. - - * parse.y (create_new_parser_context): Likewise. - -2000-03-30 Alexandre Petit-Bianco - - * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000 - patch missing hunk. Fixed indentation. - -2000-03-30 Tom Tromey - - * gjavah.c (D_NAN_MASK): Only define as word-reversed when - HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree. - -2000-03-28 Alexandre Petit-Bianco - - * parse-scan.y (pop_class_context): Reset `inner_qualifier_length' - when negative *before* using it as an array index. - * ChangeLog: Fixed typo. - -2000-03-28 Alexandre Petit-Bianco - - * parse-scan.y (pop_class_context): Reset `inner_qualifier_length' - to 0 when it reaches -1. - -2000-03-27 Alexandre Petit-Bianco - - * jcf-parse.c (get_constant): Properly cast `num' during the - invocation of `add_double'. - * jcf-write.c (push_long_const): Properly cast `lo' before - comparing it to short bounds. - * parse-scan.y (interface_declaration:): Rule re-arrange so that - `interface_body:' is reduced after the current interface is - pushed. - -2000-03-26 Tom Tromey - - * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each - Java-specific `-f' option. - -2000-03-26 Richard Kenner - - * decl.c (init_decl_processing): Only call initialize_sizetypes once. - Adjust order of making types. - Make bitsize_*_node values. - -2000-03-25 Richard Kenner - - * class.c (make_field_value): Use byte_position. - * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position. - (java_array_data_offset): Likewise. - * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to - bzero call. - -2000-03-22 Alexandre Petit-Bianco - - * parse.y (check_abstract_method_definitions): New local - `end_type_reached'. Make sure we also consider `end_type'. - (java_check_abstract_method_definitions): Make sure we eventually - consider `java.lang.Object'. - (maybe_use_access_method): Don't use access method if not in the - context of a pure inner class or if the method's context is right. - (find_applicable_accessible_methods_list): New static flag - `object_done'. Don't search abstract classes as interfaces. Fixed - indentation. Fixed the `java.lang.Object' only search. Search - class interface(s) first, then fully search enclosing contexts. - (find_most_specific_methods_list): Pick the closest candidate when - they're all abstract. - -2000-03-20 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR: - properly initialize `finished_label'. Don't emit gotos for empty - try statements. - -2000-03-19 Martin v. Löwis - - * except.c (emit_handlers): Clear catch_clauses_last. - -2000-03-17 Alexandre Petit-Bianco - - * parse.y (check_method_types_complete): New function. - (create_class): Reset anonymous class counter only when seeing an - non inner classe. - (java_complete_class): JDEP_METHOD: Don't recompute signature - if incomplete. - -2000-03-17 Alexandre Petit-Bianco - - * class.c (build_static_ref): Fixed indentation in comment. - * java-tree.def (TRY_EXPR): Fixed typo in name. - (CLASS_LITERAL): Likewise. - * java-tree.h: (TYPE_DOT_CLASS): New macro. - (struct lang_type): New field `dot_class'. - * jcf-write.c (generate_bytecode_insns): Fixed error message. - (generate_classfile): Method `class$' is synthetic. - * parse.y (build_do_class_method): New function. - (build_dot_class_method_invocation): Likewise. - (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary. - (resolve_qualified_expression_name): Handle CLASS_LITERAL. - (qualify_ambiguous_name): Likewise. - (patch_incomplete_class_ref): Invoke synthetic method if necessary. - (build_try_statement): Fixed leading comment. - -2000-03-17 Richard Kenner - - * class.c (make_field_value): Properly handle sizes. - (get_dispatch_vector): Use tree_low_cst and host_integerp. - (layout_class_method): Count using trees. - * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node. - * expr.c (java_array_data_offset): Use int_bit_position. - (build_newarray, build_anewarray): Use host_integerp and tree_low_cst. - (build_invokevirtual): Use tree_low_cst and do computations with trees. - -2000-03-16 Tom Tromey - - * lang.c (flag_hash_synchronization): New global. - (lang_f_options): Added `hash-synchronization'. - * lang-options.h: Mention -fhash-synchronization. - * java-tree.h (flag_hash_synchronization): Declare. - * expr.c (java_lang_expand_expr): Only push `sync_info' value when - hash table synchronization is disabled. - * decl.c (init_decl_processing): Only push `sync_info' value when - hash table synchronization is disabled. - * class.c (make_class_data): Only push `sync_info' field when hash - table synchronization is disabled. Removed dead code. - -2000-03-16 Tom Tromey - - * lang.c (lang_decode_option): Enable -Wunused when -Wall given. - -2000-03-15 Alexandre Petit-Bianco - - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous - classes. - * parse.y (patch_method_invocation): Handle anonymous classes - creation in static context. - -2000-03-15 Alexandre Petit-Bianco - - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro. - * parse.y (resolve_qualified_expression_name): Use it. - (patch_method_invocation): Likewise. - -2000-03-15 Alexandre Petit-Bianco - - * parse.y (register_incomplete_type): JDEP_ENCLOSING set - depending on the type of dependency which dictates what the - current class is. - (unresolved_type_p): Resolved types limited to the current class. - -2000-03-15 Tom Tromey - - * decl.c (init_decl_processing): Set type of `sync_info' to be - pointer to Object. - - * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'. - Correctly compute bit number for current slot. Zero `high' and - `low' in DS_LENGTH case. Don't skip inherited fields. Use - mark_reference_fields. - (mark_reference_fields): New function. - -2000-03-14 Alexandre Petit-Bianco - - * parse.y (register_incomplete_type): Fixed initialization of - JDEP_ENCLOSING. - -2000-02-28 Alexandre Petit-Bianco - - * parse-scan.y (inner_qualifier, inner_qualifier_length): New - static globals. - (push_class_context, pop_class_context): New function. - (class_body:): Call pop_class_context. - (interface_body:): Likewise. - (INNER_QUALIFIER): New macro. - (report_class_declaration): Changed output format and use - INNER_QUALIFIER. Call push_class_context. - -2000-02-14 Andrew Haley - - * check-init.c (check_init): Add new cases for unary and binary - tree nodes. - -2000-03-13 Alexandre Petit-Bianco - - * parse.y (resolve_package): Set `next' once a type name has been - progressively discovered. - (resolve_qualified_expression_name): Propagate resolution only if - there are remaining qualifiers. Take into account `q' might have - been cleared after re-qualification. - * parse.y (patch_method_invocation): New local `resolved'. - Section dealing with qualified expression rewritten to use - resolve_field_access. - -2000-03-13 Alexandre Petit-Bianco - - * parse.h (PUSH_CPC): Fixed indentation. - (DEBUG_CPC): New macro. - (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT, - SET_CPC_INSTANCE_INITIALIZER_STMT): New macros. - * parse.y (class_body_declaration:): Use - SET_CPC_INSTANCE_INITIALIZER_STMT. - (method_declaration:): Check for null current_function_decl. - (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT. - (java_parser_context_pop_initialized_field): Better handling of - empty lists. - (maybe_make_nested_class_name): Mark nested class name as - qualified when necessary. - (end_class_declaration): Don't call java_parse_context_resume when - one or more error occurred. - (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT. - (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and - SET_CPC_INITIALIZER_STMT. - (method_header): Check for inner classes declaring static methods. - (resolve_qualified_expression_name): Handle situation where `this' - is implied. - -2000-03-13 Hans Boehm - - * typeck.c (build_prim_array_type): Correctly set the high word too. - -2000-03-09 Alexandre Petit-Bianco - - * parse.y (java_complete_expand_methods): Leave out of - ordinary methods. - (maybe_generate_pre_expand_clinit): Put at the end of the - list of methods for interfaces. - -2000-03-07 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Properly handle expressions - using `null'. - -2000-03-07 Alexandre Petit-Bianco - - * parse.y (check_final_assignment): Extended to process - COMPOUND_EXPR. - (patch_assignment): Have check_final_assignment called only once. - -2000-03-07 Alexandre Petit-Bianco - - * java-tree.h (IS_INIT_CHECKED): New flag. - * check-init.c (check_init): Test and set IS_INIT_CHECKED. - * parse.y (patch_string): Call force_evaluation_order on the - completed string concatenation tree. - * expr.c (force_evaluation_order): Call force_evaluation_order on - function's arguments too. - -2000-03-06 Richard Kenner - - * decl.c (emit_init_test_initialization): Mark KEY as unused. - * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT. - (build_anewarray): Likewise. - * parse.y (patch_newarray): Likewise. - * parse.c: Regenerated. - -2000-03-06 Bryce McKinlay - - * decl.c (init_decl_processing): Added new class fields `depth', - `ancestors', and `idt' to class_type_node. Use - _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node. - * class.c (make_class_data): Push initial values for new fields. - * java-tree.h: Updated prototype for `build_invokeinterface'. - * expr.c (build_invokeinterface): Changed parameters to accept - `method' tree. Calculate index of `method' in its declaring - interface. Build call to _Jv_LookupInterfaceMethodIdx. - (expand_invoke): Call `build_invokeinterface' with new parameters. - * parse.y (patch_invoke): Call `build_invokeinterface' with new - parameters. - -2000-03-06 Bryce McKinlay - - * typeck.c (lookup_do): Search superinterfaces first - when looking up an interface method. From Godmar Back - - -2000-03-06 Tom Tromey - - * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c. - -2000-03-02 Alexandre Petit-Bianco - - * java-tree.h (lookup_argument_method2): Declared. - (safe_layout_class): Prototype moved from parse.h. - * parse.h (safe_layout_class): Prototype moved to java-tree.h. - * parse.y (java_check_regular_methods): Local `super_class' gone. - Call lookup_argument_method2 instead of lookup_argument_method. - Perform modifier match for methods found declared in implemented - interfaces. Fixed indentation problem. Overriding/hiding error - report to take place only for methods found in classes. - * typeck.c (lookup_argument_method): Changed leading - comment. Re-written by calling lookup_do. - (lookup_argument_method2): New function. - (lookup_java_method): Re-written by calling lookup_do. - (lookup_do): New function. - -2000-03-02 Alexandre Petit-Bianco - - * check-init.c (check_init): Removed dead code. Handle (blank) - final variables. - * parse.y (declare_local_variables): New local `final_p', set it - and use it to initialize LOCAL_FINAL. - (check_final_assignment): Only check FIELD_DECLs. - -2000-02-17 Tom Tromey - - * Makefile.in (JAVA_OBJS): Added boehm.o. - (boehm.o): New target. - * Make-lang.in (JAVA_SRCS): Added boehm.c. - * java-tree.h (flag_use_boehm_gc): Declare. - (get_boehm_type_descriptor): Declare. - * lang.c (lang_f_options): Added `use-boehm-gc'. - (flag_use_boehm_gc): New global. - * lang-options.h: Added -fuse-boehm-gc. - * boehm.c: New file. - * class.c (get_dispatch_table): If class uses a Boehm type - descriptor, put it in the vtable. - (make_class_data): Removed dead code. - -2000-03-03 Per Bothner - - * decl.c (init_decl_processing): Initialize sizetype properly. - -2000-03-01 Alexandre Petit-Bianco - - * java-tree.h (LOCAL_CLASS_P): New flag usage and macro. - (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros. - * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. - * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise. - (jcf_parse): New local `current'. Load innerclasses seen in outer - context being processed. - * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. - * jcf-write.c (append_innerclasses_attribute): New function. - (append_innerclasses_attribute_entry): Likewise. - (get_access_flags): Handle static classes. Set anonymous and local - classes to be private. - (generate_classfile): Attribute count adjusted. Call - append_innerclasses_attribute. - * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use - PURE_INNER_CLASS_TYPE_P. - * parse.y (parser_qualified_classname): New parameter `is_static', - produce non qualified name accordingly. - (block_statement:): Set LOCAL_CLASS_P when declaring local class. - (create_interface): Added argument to parser_qualified_classname. - (create_class): Added argument to parser_qualified_classname. Setup - alias for top level classes. Use PURE_INNER_CLASS_DECP_P. - (add_inner_class_fields): Fixed indentation. - (method_declarator): Use PURE_INNER_CLASS_DECP_P. - (method_declarator): Fixed typo in comment. - (craft_constructor): Use PURE_INNER_CLASS_DECP_P. - (build_current_thisn): Likewise. - (patch_method_invocation): Likewise. - -2000-03-01 Martin von Löwis - - * decl.c (current_function_decl): Move to toplev.c. - -2000-02-28 Richard Kenner - - * java-tree.h (LABEL_PC): Relect name changes in ../tree.h. - (DECL_BIT_INDEX): Use underlying representation. - * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise. - -2000-02-27 Richard Kenner - - * expr.c (build_java_ret): Pass proper type to size_binop. - -2000-02-25 Anthony Green - - * expr.c (build_class_init): Mark the decl to be ignored by - check_init. - * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c - * check-init.c: Move DECL_BIT_INDEX to java-tree.h - * class.c (init_test_hash_newfunc): New function. - (decl_hash): New function. - (decl_compare): New function. - * decl.c (emit_init_test_initialization): New function. - (complete_start_java_method): Traverse the init test hashtable, - calling emit_init_test_initialization. - (always_initialize_class_p): Define. - * expr.c (build_class_init): Use initialization tests when - emitting class initialization code. - (always_initialize_class_p): Declare. - * jcf-parse.c (parse_class_file): Set always_initialize_class_p to - 1. - * java-tree.h: Include hash.h. - (DECL_FUNCTION_INIT_TEST_TABLE): Define. - (struct lang_decl): Add init_test_table field. - (init_test_hash_entry): Define. - -2000-02-25 Alexandre Petit-Bianco - - * gjavah.c (main): Avoid using `argi' to report unimplemented - options. - -2000-02-25 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR: - initialize locals to avoid warnings. Local `exception_type' moved - into if statement. - -2000-02-25 Alexandre Petit-Bianco - - * parse.y (resolve_expression_name): Use `orig' as a second - argument to resolve_field_access. - (resolve_field_access): Removed unnecessary code when dealing with - static fields. - -2000-02-23 Alexandre Petit-Bianco - - * class.c (push_super_field): Don't push the field twice. - * jcf-parse.c (parse_source_file): Call java_reorder_fields. - * parse.h (java_reorder_fields): Prototyped. - * parse.y (java_reorder_fields): New function. - (java_layout_class): Simplified not to worry about re-ordering. - -2000-02-23 Tom Tromey - - * gjavah.c (print_name): In JNI case, correctly quote string. - (print_method_info): Don't handle overrides in JNI mode. - -2000-02-22 Alexandre Petit-Bianco - - * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned - value type set to `boolean_type_node'. - -2000-01-18 Joerg Brunsmann - - * jcf-dump.c (main): Test for correct condition after - output file creation. - -2000-02-19 Anthony Green - - * jcf-depend.c (add_entry): Fix test for first list entry. - -2000-02-19 Richard Kenner - - * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT. - * constants.c (build_constants_constructor): Likewise. - -2000-02-19 Anthony Green - - * jcf-depend.c (add_entry): Add entries to the end of the list. - -1999-11-03 Pekka Nikander - - * decl.c (INT_TYPE_SIZE): Define if necessary. - (expand_java_return): Handle the case of a native integer smaller - than a JVM integer. - -2000-02-18 Martin von Löwis - - * gjavah.c (help): Use GCCBUGURL. - * jv-scan.c (help): Likewise. - * jcf-dump.c (help): Likewise. - -2000-02-17 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): Don't generate empty - `finally' clauses. - -2000-02-17 Alexandre Petit-Bianco - - * jcf-parse.c (load_class): Call `fatal' if no file containing - the target class are found. - -2000-02-16 Zack Weinberg - - * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on - lex.c, lex.h, and PARSE_H to... - (parse.o, parse-scan.o): ...here, respectively. - - * lex.c: Split out code that may trigger SIGFPE from yylex() - to its own function. - * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value. - -2000-02-16 Kaveh R. Ghazi - - * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h. - -2000-02-15 Alexandre Petit-Bianco - - * parse.y (outer_field_access_p): Stop in time when outer contexts - are exhausted. - (resolve_qualified_expression_name): Properly qualify *everything* - after a package.type to be resoled as expression names. - (find_applicable_accessible_methods_list): Save/restore `class' to - isolate it from a possible outer context search. - -2000-02-15 Tom Tromey - - * gjavah.c (jni_print_char): New function. - (print_full_cxx_name): Use it. - (decode_signature_piece): Likewise. - (print_cxx_classname): Likewise. - -2000-02-15 Kaveh R. Ghazi - - * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with - version.o. - (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h. - - * gjavah.c: Include version.h. - - * jcf-dump.c: Likewise. - - * jv-scan.c: Likewise. - -2000-02-12 Alexandre Petit-Bianco - - * parse.y (outer_field_access_fix): First parameter now a tree - node. Check for assignment to final. First argument to - build_outer_field_access_fix modified to accommodate prototype. - (build_outer_field_access): Don't check for assignment to final - here. - (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node' - possibly returned by outer_field_access_fix. Changed - outer_field_access_fix's first argument. - (check_final_assignment): $finit$'s context is OK. - (patch_unaryop): Use node instead of its line/column value when - calling outer_field_access_fix. - -2000-02-11 Alexandre Petit-Bianco - - * parse.y (interface_declaration:): No longer tagged - . Re-installed default action. - (class_member_declaration:): Handle inner interfaces. - (interface_member_declaration): Handle inner interfaces and - classes. - (create_interface): Push error if one seen. Suspend parsing - context when processing an inner interface. - (register_fields): Inner class static field limitations not to - apply to inner interfaces. - -2000-02-10 Alexandre Petit-Bianco - - * jcf-parse.c (load_class): Update `java_error_count' when a - class' file can't be found. - (parse.y): Avoid (byte)code generation when errors seen. - -2000-02-10 Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal' - decodes a valid node. - (patch_binop): Handle TRUNC_DIV_EXPR. - -2000-02-10 Alexandre Petit-Bianco - - * parse.y (resolve_package): New local `acc'. Try to progressively - build and guess a package and type name. - -2000-02-10 Alexandre Petit-Bianco - - * parse.y (find_applicable_accessible_methods_list): Load and - layout the search class if necessary. - (java_complete_tree): Keep to original type of the folded initial - value. - -2000-02-09 Alexandre Petit-Bianco - - * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT. - Generate error message if circularity is detected. New static - local `list'. - * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro. * - * jcf-write.c (generate_bytecode_insns): Very simply handle - SAVE_EXPR. - * parse.y (java_check_circular_reference): Use - `cyclic_inheritance_report' during report, if necessary. - (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid - walking NEW_ARRAY_INIT twice. - -2000-02-09 Tom Tromey - - * parse.y (check_class_interface_creation): Allow inner classes to - be `private' or `protected', check modifiers' consistency. Prevent - block local classes from bearing any modifiers. - -2000-02-10 Kaveh R. Ghazi - - * except.c (check_start_handlers): Re-add prototype lost in last - patch. - (maybe_start_try): Remove excess argument to `check_start_handlers'. - -2000-02-09 Andrew Haley - - * decl.c (clear_binding_level): Remove excess initializer. - (maybe_poplevels): Remove unused variable. - (force_poplevels): Ditto. - (struct binding_level): Add comment. - -2000-02-07 Alexandre Petit-Bianco - - * jcf-write.c (generate_classfile): Don't consider - pre-initialization with reference value (use instead.) - * parse.y (java_fix_constructors): No generated constructor for - interfaces. - (build_outer_field_access): Removed debug message. - (outer_field_expanded_access_p): Adapted to bytecode generation. - (build_outer_field_access_method): Use fix_method_argument_names. - (build_outer_method_access_method): Fixed indentation. Added - comment. Handle access method generation for static and also void - methods. - (build_access_to_thisn): Inserted debug message. - (maybe_build_thisn_access_method): Use fix_method_argument_names. - (resolve_qualified_expression_name): Fixed comment. - (not_accessible_p): Adapted to bytecode generation. Added comment. - (patch_method_invocation): Added comment. - (maybe_use_access_method): Fixed leading comment. Handle static - methods. - (java_complete_lhs): Don't shortcut handling of initialized upon - declaration String type static fields when generating bytecode. - (patch_unaryop): Handle outer field access when generating - bytecode. - -2000-02-03 Alexandre Petit-Bianco - - * java-tree.h (FIELD_THISN): New macro. - * jcf-write.c (append_synthetic_attribute): New function. - (generate_classfile): Set "Synthetic" attribute on this$, - val$ fields, access$ and $finit$ methods. Fixed indentation. - * parse.y (add_inner_class_fields): Set FIELD_THISN for created - this$ fields. - (build_outer_field_access): Turned on access functions usage and - generation when compiling to bytecode. - (maybe_use_access_method): Likewise. - -2000-01-25 Andrew Haley - - * java-except.h (struct eh_range): Add `expanded' field. - (maybe_start_try): Add end_pc arg. - (maybe_end_try): Ditto. - * java-tree.h (force_poplevels): new function. - * expr.c (expand_byte_code): Don't call maybe_start_try or - maybe_end_try. - * except.c (add_handler): Reset expanded. - (expand_start_java_handler): Set expanded. - (check_start_handlers): Don't expand a start handler that's - already been expanded. - (maybe_start_try): Add end_pc arg. Only expand a handler which - ends after end_pc. - (expand_end_java_handler): call force_poplevels. - (force_poplevels): new function. - * decl.c (binding_level): Add start_pc of binding level. - (maybe_pushlevels): Call maybe_start_try when pushing binding - levels. - (maybe_poplevels): Call maybe_end_try when popping binding levels. - (LARGEST_PC): Define. - (clear_binding_level): Use LARGEST_PC. - - * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define. - * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define. - (binding_depth, is_class_level, current_pc): new variables. - (struct binding_level): ditto. - (indent): new function. - (push_jvm_slot): add debugging info. - (maybe_pushlevels): ditto. - (maybe_poplevels): ditto. - (pushlevel): ditto. - (poplevel): ditto. - (start_java_method): ditto. - (give_name_to_locals): comment only. - * except.c (binding_depth, is_class_level, current_pc): - new variables. - (expand_start_java_handler): add debugging info. - (expand_end_java_handler): ditto. - -2000-02-05 Kaveh R. Ghazi - - * gjavah.c (overloaded_jni_method_exists_p): Add prototype. - (print_name_for_stub_or_jni, process_file): Constify a char*. - -2000-02-03 Tom Tromey - - * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input. - -2000-01-31 Scott Bambrough - - * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to - assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is - defined to be 1. - -2000-02-02 Alexandre Petit-Bianco - - * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code. - * java-tree.h (TYPE_II_STMT_LIST): New macro. - (struct lang_type): New field `ii_block'. - * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST, - CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST. - * parse.h (struct parser_ctxt): New field `instance_initializers'. - (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST, - CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT, - CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New - macros. - * parse.y (add_instance_initializer): New function. - (in_instance_initializer): New static global. - (class_body_declaration:): Link instance initializer block. - (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT. - (array_creation_expression:): Remove unused local. - (java_parser_context_push_initialized_field): Fixed leading - comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and - CPC_INSTANCE_INITIALIZER_LIST. - (java_parser_context_pop_initialized_field): Likewise. - (add_inner_class_fields): Use CPC_INITIALIZER_STMT. - (register_fields): Use CPC_STATIC_INITIALIZER_STMT and - CPC_INITIALIZER_STMT. - (fix_constructors): New local `class_type'. Use it. Call - add_instance_initializer. - (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR. - (patch_return): Forbid return in instance initializers. - (patch_throw_statement): Enforce exception handling in the context - of instance initializers. - -2000-02-03 Tom Tromey - - * Make-lang.in (java.mostlyclean): Remove executables in - `mostlyclean'. - -2000-01-31 Scott Bambrough - - * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when - HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1. - (java_float_finite): Convert to use union Word from javaop.h. - (java_double_finite): Convert to use union DWord from javaop.h. - -2000-02-02 Tom Tromey - - * gjavah.c (options): Added `jni' entry. - (help): Document -jni. - (flag_jni): New global. - (process_file): Handle JNI output. Don't print text from - -prepend, -add, etc, when generating stubs. Only remove `.class' - suffix if it actually exists. - (main): Create a `.c' file when run with `--jni --stubs'. Create - correct output file name with `--jni'. - (print_include): Mangle header name differently in JNI case. - (HANDLE_METHOD): In JNI mode, call print_method_info to generate - method list. - (print_method_info): Handle JNI case. Put signature info into - method name. Handle case when STREAM is NULL. - (print_name_for_stub_or_jni): New function. - (print_stub_or_jni): Renamed from `print_stub'. Handle JNI. - (print_cxx_classname): Handle JNI. - (print_full_cxx_name): Likewise. - (decode_signature_piece): Likewise. - (overloaded_jni_method_exists_p): New function. - (struct method_name): Added `signature' and `sig_length' fields. - (HANDLE_END_FIELD): Do nothing in JNI mode. - -2000-02-02 Tom Tromey - - * jv-scan.c: Include version.c, . - (LONG_OPT, OPT_HELP, OPT_VERSION): New macros. - (options): New array. - (usage): New function. - (version): New function. - (main): Use getopt_long to parse command line. - * jcf-dump.c: Include version.c, . - (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION, - OPT_JAVAP): New macros. - (options): New array. - (usage): Return `void'. Changed message. - (help): New function. - (version): New function. - (main): Use getopt_long_only to parse command line. - * gjavah.c: Include . - (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP, - OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M, - OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros. - (options): New array. - (java_no_argument): Removed. - (help): Updated with missing options. - (main): Use getopt_long_only to parse command line. - (usage): Changed message. - -2000-02-01 Alexandre Petit-Bianco - - * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code. - * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG, - ANONYMOUS_ARRAY_INITIALIZER): New access macros. - * parse.y (array_creation_expression:): Handle anonymous arrays. - (build_array_from_name): Don't set `ret_name' if null. - (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR. - (qualify_ambiguous_name): Likewise. - (java_complete_expand_class): Likewise. - -2000-02-01 Alexandre Petit-Bianco - - * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo. - * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro. - (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise. - (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P. - (AIPL_FUNCTION_FINIT_INVOCATION): Replaces - AIPL_FUNCTION_COMPLETED_INVOCATION. - (AIPL_FUNCTION_CTOR_INVOCATION): Replaces - AIPL_FUNCTION_INVOCATION_READY. - (AIPL_FUNCTION_DECLARATION): New enum entry. - * parse.y (reorder_static_initialized): New function. - (java_parser_context_pop_initialized_field): Use it. - (add_inner_class_fields): Use - MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment - augmented. Install marker after last alias initializer, if any. - (generate_finit): Fixed typo. Don't try to retain only the used - fields. - (method_header): Compute and set DECL_FUNCTION_NAP. - (method_declarator): Fixed comment. Insert alias initializer in - parameter list. - (build_alias_initializer_parameter_list): Fixed leading - comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value - replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. - (java_complete_expand_class): Code to retain only used aliases - removed. - (java_complete_expand_methods): New local `first_decl'. Generate - $finit$ first, then expand the constructors, regular methods and - . - (java_complete_expand_method): Don't report error on missing - return statement if previously detected bogus. - (fix_constructors): Don't patch constructor parameters list. - (patch_method_invocation): Use new AIPL enum values. Reverse - alias initializer list for anonymous classes. - -2000-01-30 Anthony Green - - * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to - determine how many stack slots to pop. - -2000-01-29 Alexandre Petit-Bianco - - * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better - error handling/recovery. - * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment. - -2000-01-28 Alexandre Petit-Bianco - - * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS, - FIELD_LOCAL_ALIAS_USED): New macros. - (DECL_FUNCTION_NAP): New macro. - (struct lang_decl): New field `nap'. - (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros. - (struct lang_type): New fields `finit_stmt_list' and - `clinit_stmt_list'. - (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST. - * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro. - (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS, - UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros. - (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION, - AIPL_FUNCTION_INVOCATION_READY): New enum fields. - (BUILD_THROW): Macro line separator re-indented. - * parse.y (end_class_declaration): New function. - (maybe_generate_pre_expand_clinit): New name for - java_pre_expand_clinit. Create off TYPE_CLINIT_STMT_LIST, - pre-expand static fields. - (maybe_generate_clinit): Function deleted. - (check_for_static_method_reference): Prototype's parameter list - indented. - (generate_finit): New name for maybe_generate_finit. Changed - leading comment. Function rewritten to use - TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list. - (build_alias_initializer_parameter_list): New function. - (java_parser_context_pop_initialized_field): Likewise. - (add_inner_class_fields): Likewise. - (type_declaration:): Call end_class_declaration. - (class_member_declaration:): Likewise. - (formal_parameter_list:): Fixed typos. - (formal_parameter:): Use ARG_FINAL_P to mark created tree list - element. Improved error handling. - (block_statement:): Call end_class_declaration. - (anonymous_class_creation:): Likewise. - (create_anonymous_class): Fixed comments. - (create_class): Call add_inner_class_fields. - (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P. - (method_header): Use MARK_FINAL_PARMS. - (finish_method_declaration): Use UNMARK_FINAL_PARMS. - (method_declarator): Propagate final argument flag. - (craft_constructor): New local `artificial'. Call - build_alias_initializer_parameter_list. Use - CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP. - (source_start_java_method): Mark parm decls with LOCAL_FINAL if - necessary. - (complete_expand_class): Get rid of unused outer context local - alias fields. - (java_complete_expand_methods): Fixed leading - comment. Generate/pre-expand first. Changed method - expansion order to regular, $finit$, constructors, . - (java_complete_expand_method): Set current_function_decl. - (fix_constructors): Fix constructor parameter list to account for - outer context local alias initializers. - (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS. - (resolve_expression_name): Lookup outer context local aliases. New - local `access', use it. - (patch_method_invocation): Patch inner class ctor invocation with - outer context local aliases initialization values. $finit$ - invocation patching now includes things generated with - build_alias_initializer_parameter_list. - (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS. - (build_super_invocation): Likewise. - (patch_assignment): Changed comment. - -2000-01-27 Andrew Haley - - * jcf-write.c (emit_goto): RESERVE 3 bytes for insn. - (emit_if): Ditto. - (emit_jsr): Ditto. - -2000-01-25 Kaveh R. Ghazi - - * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string - concatenation. - (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args. - - * parse.y (register_fields): Don't pass a format specifier to - OBSOLETE_MODIFIER_WARNING. - (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2 - instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format - specifier. - (check_modifiers): Change function into a macro. - (check_class_interface_creation): Pass a literal format string. - -2000-01-21 Kaveh R. Ghazi - - * buffer.h: PROTO -> PARAMS. - * check-init.c: Likewise. - * class.c: Likewise. - * constants.c: Likewise. - * convert.h: Likewise. - * decl.c: Likewise. - * except.c: Likewise. - * expr.c: Likewise. - * gjavah.c: Likewise. - * java-except.h: Likewise. - * java-tree.h: Likewise. - * jcf-depend.c: Likewise. - * jcf-dump.c: Likewise. - * jcf-parse.c: Likewise. - * jcf-path.c: Likewise. - * jcf-reader.c: Likewise. - * jcf-write.c: Likewise. - * jcf.h: Likewise. - * jv-scan.c: Likewise. - * jvgenmain.c: Likewise. - * jvspec.c: Likewise. - * lang.c: Likewise. - * lex.c: Likewise. - * lex.h: Likewise. - * parse-scan.y: Likewise. - * parse.h: Likewise. - * parse.y: Likewise. - * typeck.c: Likewise. - * verify.c: Likewise. - * xref.c: Likewise. - * xref.h: Likewise. - * zextract.c: Likewise. - * zipfile.h: Likewise. - -2000-01-18 Alexandre Petit-Bianco - - * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC. - (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF. - * constants.c (build_constant_data_ref): Check for cached - current_constant_pool_data_ref. Cache current_constant_pool_data_ref - in TYPE_CPOOL_DATE_REF. - * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF, - MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros. - (struct lang_type): New fields `cpool' and `cpool_data_ref'. - (LOCAL_FINAL): New macro. - * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing - constant pool -- don't try to reuse. - (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate - TYPE_LANG_SPECIFIC. - (find_in_current_zip): Use TYPE_JCF. - * parse.h (java_check_final): Prototype removed. - * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch. - (maybe_create_class_interface_decl, - check_class_interface_creation): Likewise. - (java_expand_finals): Function removed. - (class_declaration:): Reversed Jan 12, 2000 extra argument patch. - (block_statement:): Fixed comment. - (anonymous_class_creation:): Likewise. - (check_class_interface_creation): Reversed Jan 12, 2000 extra - argument patch. - (check_class_interface_creation): Loosened error report on (inner) - public class declarations. CPC_INNER_P replaces GET_CPC_LIST. - (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch. - (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra - argument patch. - (create_interface): Likewise. - (anonymous_class_counter): New static global. - (create_anonymous_class): Reversed Jan 12, 2000 extra argument - patch. Fixed comments. - (create_class): Reversed Jan 12, 2000 extra argument patch. Reset - anonymous_class_counter when declaring a toplevel class. - (craft_constructor): Fixed constructor name when handling - anonymous classes. Anonymous class constructors to feature hidden - this$ parameter. - (java_fix_constructors): Added comment. - (java_check_final): Function removed. - (java_complete_expand_methods): Fixed comment. Don't generate - class data, save its outgoing constant pool instead. - (verify_constructor_super): Skip anonymous class constructor - hidden this$ parameter. - (java_expand_classes): New local `saved_ctxp'. Removed call to - java_expand_finals and java_check_final. Expand anonymous class - constructors. Generate class data. - (build_super_invocation): Skip anonymous class hidden this$ - parameter. - * typeck.c (build_java_signature): Use TYPE_SIGNATURE and - MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC. - (set_java_signature): Likewise. - -2000-01-18 Joerg Brunsmann - - * gjavah.c: Delete ACC_VISIBILITY define. - * jcf.h: Add ACC_VISIBILITY define. - * parse.y: final: rule tagged . - (java_check_regular_methods): Use ACC_VISIBILITY define for - default package access check. - (local_variable_declaration_statement): Use final: rule. - -2000-01-17 Joerg Brunsmann - - * parse.y (format_parameter:): Use final: rule instead of modifiers:. - (final:): New rule. - -2000-01-17 Tom Tromey - - * gjavah.c (print_field_info): Allow non-static final fields. - -2000-01-14 Alexandre Petit-Bianco - - * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'. - * parse.y (patch_anonymous_class): New function. - (create_anonymous_class): Register incomplete type when the - class/interface to extends/implement isn't known yet. - (parser_check_super_interface): Simplify argument to CLASS_INTERFACE. - (verify_constructor_super): Tuned error message. - -2000-01-14 Alexandre Petit-Bianco - - * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P. - (ANONYMOUS_CLASS_P): New macro. - (TYPE_SIGNATURE, TYPE_JCF): New macros. - (INNER_CLASS_TYPE_P): Fixed typo in leading comment. - * parse.y (create_class): Added leading argument. - (maybe_create_class_interface_decl, - check_class_interface_creation): Likewise. - (craft_constructor): New function. - (verify_constructor_super): Added argument in prototype. - (class_declaration:): Inserted leading argument. - (for_begin:): Use FOR_LOOP_P. - (anonymous_class_creation): Create WFL of the anonymous class to - instantiate. Call build_new_invocation. Added comments. - (check_class_interface_creation): Handle parameter `anonymous' in - verbose mode class creation announce. - (link_nested_class_to_enclosing): Exclude anonymous classes. - (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on - anonymous class, even though they appear to have an enclosing - context. - (create_interface): Pass extra argument to - check_class_interface_creation. - (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1. - (create_class): Call check_class_interface_creation and - maybe_create_class_interface_decl with extra new argument. Don't - add private this$ to anonymous classes. - (method_declarator): Insert hidden this$ to anonymous class - constructors. - (java_fix_constructors): Deleted code creating default - constructor. Call craft_constructor instead. - (java_check_regular_methods): Set `saw_constructor' to 1 for - anonymous classes. - (fix_constructors): Pass extra argument to verify_constructor_super. - (verify_constructor_super): New local `sdecl', use it. Search for - matching constructor (possibly featuring arguments) in super - class. - (lookup_method_invoke): Craft constructor according to arguments - list when dealing with anonymous class constructors. - (build_super_invocation): Pass arguments to anonymous class super - constructors. - (search_loop): Use FOR_LOOP_P. - (labeled_block_contains_loop_p): Likewise. - -2000-01-12 Alexandre Petit-Bianco - - * class.c (set_super_info): Set CLASS_STATIC when appropriate. - (enclosing_context_p): New function. - (get_access_flags_from_decl): Handle CLASS_STATIC. - (maybe_layout_super_class): Extra first argument passed to - do_resolve_class. - (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and - ID_INIT_P. - * decl.c (access0_identifier_node): New global. - (init_decl_processing): access0_identifier_node initialized. - (pushdecl): Set DECL_CONTEXT only on non type decls. - * expr.c (lookup_field): Lookup inner class fields in enclosing - contexts. - (expand_invoke): Use ID_INIT_P. - (expand_java_field_op): Use DECL_CLINIT_P. - * java-tree.def (CLASS_LITERAL): New tree code. - * java-tree.h (DECL_FUNCTION_ACCESS_DECL, - DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros. - (struct lang_decl): New field `inner_access'. - (enclosing_context_p): Prototyped. - (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P, - ID_CLINIT_P): New macros. - (CLASS_STATIC): New macro. - (CLASS_ACCESS0_GENERATED_P): New macro. - (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P, - TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P, - INNER_CLASS_P): New macros. - (DECL_INNER_CLASS_LIST): New macro. - * jcf-parse.c (yyparse): Avoid the use of ANSI string - concatenation. - * jcf-write.c (generate_bytecode_insns): binop: Change the type of - the shift value to int. Fixed typo in comment. - * lex.c (inst_id, wpv_id): Initialize. - * mangle.c (unicode_mangling_length): Take `$' into account. - * parse.h (DRECOVER, RECOVER): Terminate properly. - (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro. - (typedef struct _jdep): New field `enclosing'. - (JDEP_ENCLOSING): New macro. - (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.) - (struct parser_ctxt): New fields `marker_beginning', `marked_end'. - (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE, - GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC, - GET_ENCLOSING_CPC_CONTEXT): New macros. - (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros. - (do_resolve_class): Added extra argument in prototype. - * parse.y (resolve_class): Added extra argument in prototype. - (maybe_create_class_interface_decl): Likewise. - (maybe_use_access_method, build_wfl_wrap): New functions. - (java_complete_expand_classes, java_complete_expand_class): - Likewise. - (java_parser_context_push_initialized_field, - java_parser_context_suspend, java_parser_context_resume): - Likewise. - (maybe_make_nested_class_name, make_nested_class_name, - set_nested_class_simple_name_value, - link_nested_class_to_enclosing, find_as_inner_class, - find_as_inner_class_do, check_inner_class_redefinition, - build_thisn_assign, build_current_thisn, build_access_to_thisn, - maybe_build_thisn_access_method, build_outer_field_access, - build_outer_field_access_methods, build_outer_field_access_expr, - build_outer_method_access_method, build_new_access_id, - build_outer_field_access_method, outer_field_access_p, - outer_field_expanded_access_p, outer_field_access_fix, - build_incomplete_class_ref, patch_incomplete_class_ref, - create_anonymous_class): Likewise. - (inst_id, wpv_id): New static global variables. - (synchronized:): New rule, tagged . - (type_declaration:): No longer tagged . Call POP_CPC in sub - rules. - (anonymous_class_creation:): New rule, tagged . - (NEW_TK): Tagged . - (type_literals, array_type_literal): New rules, tagged . - (class_declaration:): Removed action when reducing by class_body: - (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value - using GET_CPC in sub-rules. - (class_member_declaration): Handle inner classes. - (method_declaration): When reducing method_header:, reset - current_function_decl when appropriate. - (method_declarator:): Set the number of formal parameter to 0 for - method declared without arguments. - (constructor_declarator:): Likewise. - (static_initializer:): List of elements kept in a list. - (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct - use of the keyword `static' for type declarations. - (block_statement:): Handle inner class declarations. - (primary_no_new_array:): Use type_literals:. Fixed comment. Handle - type qualified `this'. - (class_instance_creation_expression): Use anonymous_class_creation: - to handle inner class instances creation. Handle qualified `new'. - (something_dot_new): Added appropriate actions. - (create_new_parser_context): New function. - (java_push_parser_context, java_parser_context_save_global, - java_parser_context_suspend): Use create_new_parser_context. - (check_modifiers): Changed leading comment. - (check_class_interface_creation): Handle interclasses. - (add_superinterfaces): Fixed comment. - (create_interface): Build qualified name from the raw_name instead - of its matching WFL. Push the initialized fields list. raw_name added - as an extra argument to maybe_create_class_interface_decl. - (create_class): Build qualified name from the raw_name instead of - its matching WFL. Removed assignment to current_parsed_class_un. - Call PUSH_ERROR before returning an error. Suspend the current - parser context when processing an inner class. Push the - initialized fields list. raw_name added as an extra argument to - maybe_create_class_interface_decl. Add the private this$ - field. - (duplicate_declaration_error_p): Use GET_CPC when calling find_field. - (register_fields): Get the class type from GET_CPC and handle - previous errors. Added code to handle the creation of static - fields in inner classes. Initialized fields initialization - statements kept in a list of lists. - (maybe_generate_finit): Initialized fields initialization - statements kept in a list of lists. Use GET_CPC. - (maybe_generate_clinit): Likewise. - (method_header): Use GET_CPC and GET_CPC_UN. - (parser_qualified_classname): Handle inner classes. - (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC. - (java_fix_constructors): Hide pointer to enclosing context - instance in constructor list when dealing with inner classes. - (jdep_resolve_class): Call resolve_class with extra first argument - JDEP_ENCLOSING. - (resolve_class): Add enclosing context as a first extra argument - to do_resolve_class. - (do_resolve_class): Call find_as_inner_class. Handle WFLs - properly. - (resolve_no_layout): Extra argument added to resolve_class - invocation. - (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P. - (java_get_real_method_name): Use GET_CPC_UN. - (check_abstract_method_definitions): Use DECL_CLINIT_P. - (java_check_abstract_methods): Handle static method declared in - inner classes by an error. - (java_check_regular_methods): Use DECL_CLINIT_P. - (source_start_java_method): Also set DECL_MAX_LOCALS. - (create_artificial_method): Call java_parser_context_save_global - and java_parser_context_restore_global instead of saving/restoring - the context by hand. - (expand_start_java_method): Improved verbose mode message. - (java_complete_expand_methods): Fixed leading comment. Use - DECL_CLINIT_P. - (fix_constructors): Added assignment to this$ if necessary. - (java_expand_classes): Call java_complete_expand_classes instead - of java_complete_expand_methods. - (make_qualified_primary): Simplified. - (merge_qualified_name): Optimized for missing left or right parts. - (resolve_expression_name): Handle access to outer class fields from - interclasses. - (resolve_qualified_expression_name): New macro - RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner - classes. Report error on non appropriate qualification of - `new'. Handle qualified `this'. - (not_accessible_p): Allow access to outer class private fields from - inner classes. - (patch_method_invocation): Handle method invocations through - access methods and inner class constructor invocations. - (find_applicable_accessible_methods_list): Search enclosing - contexts of an inner class. - (search_applicable_methods_list): Fixed typo. - (argument_types_convertible): Handle inner class constructors' - hidden outer context reference argument. - (qualify_ambiguous_name): Handle qualified `this'. - (java_complete_lhs): Handle use of field accessed through - artificial access methods in various cases of assignments. Handle - CLASS_LITERAL node. - (check_final_assignment): Use DECL_CLINIT_P. - (valid_ref_assignconv_cast_p): Handle the destination being an - enclosing context of the source. - (patch_unaryop): Handle use of field accessed through artificial - access methods. - (patch_return): Use DECL_CLINIT_P. - (patch_throw_statement): Use DECL_CLINIT_P. - (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P. - * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and - ID_INIT_P. - -2000-01-16 Anthony Green - - * parse.y (build_string_concatenation): Only use - StringBuffer(String) shortcut if String arg is constant. - -2000-01-12 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): binop: Change the type of - the shift value to int. Fixed typo in comment. - -2000-01-11 Mumit Khan - - * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros. - * jcf-write.c: Likewise. - * parse.y: Likewise. - * parse.c: Regenerate. - -2000-01-09 Anthony Green - - * jcf-write.c (generate_bytecode_insns): Emit invokeinterface - bytecodes in the correct order. - -2000-01-09 Kaveh R. Ghazi - - * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS). - -2000-01-06 Anthony Green - - * expr.c (java_lang_expand_expr): Switch to permanent obstack - before building constant array decl. - -2000-01-06 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_conditional): Fixed indentation in - method invocation and typo in conditional expression. - (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue - the appropriate NOTE_POP. - * parse.y (patch_binop): Shift value mask to feature the right - type. - -1999-12-30 Kaveh R. Ghazi - - * class.c (assume_compiled, assume_compiled_node): Add static - prototype. - (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup. - - * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch. - - * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN. - - * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier' - to `__modifier' to avoid stringifying it. - - * parse.y (verify_constructor_circularity): Don't call a variadic - function with a non-literal format string. - (java_check_abstract_methods): Move unreachable code inside - `continue' statement. - (lookup_method_invoke): Call xstrdup, not strdup. - - * expr.c (expand_java_field_op): Avoid the use of ANSI string - concatenation. - - * jcf-parse.c (yyparse): Likewise. - - * jv-scan.c (main): Likewise. - -1999-12-30 Kaveh R. Ghazi - - * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, - ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, - ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string - concatenation. - - * parse.y (synchronized, variable_redefinition_error, - check_class_interface_creation, create_interface, create_class, - method_header, finish_method_declaration, - check_modifiers_consistency, method_declarator, - complete_class_report_errors, check_abstract_method_definitions, - java_check_regular_methods, check_throws_clauses, - java_check_abstract_methods, read_import_dir, - check_pkg_class_access, declare_local_variables, fix_constructors, - cut_identifier_in_qualified, resolve_expression_name, - resolve_qualified_expression_name, patch_method_invocation, - java_complete_lhs, patch_assignment, try_builtin_assignconv, - patch_binop, patch_array_ref, patch_newarray, build_labeled_block, - patch_exit_expr, patch_exit_expr, patch_switch_statement, - patch_try_statement, patch_synchronized_statement, - patch_throw_statement, check_thrown_exceptions, - patch_conditional_expr): Likewise. - -1999-12-24 Alexandre Petit-Bianco - - * Makefile.in (LIBDEPS): Added gcc's errors.o - (../jcf-dump$(exeext):): Link with gcc's errors.o - (../gcjh$(exeext):): Likewise. - * expr.c (expand_java_NEW): Layout the entire target type instead of - laying out its methods only. - (lookup_field): Layout the class after having loaded it. - * java-tree.h (java_debug_context): Declared. - * jcf-io.c (toplev.h): Included. - (find_class): Removed assignment to jcf's outofsynch - field. Force source file to be read if newer than its matching - class file. Tweaked debug messages. - * jcf-parse.c (jcf_out_of_synch): Deleted. - (read_class): Call to jcf_out_of_synch removed. - * jcf.h (typedef struct JCF): Field `outofsynch' deleted. - (jcf_out_of_synch): Prototype deleted. - * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag', - `deprecated' and `class_err': integer turned into bit-fields. - New bit-fields `saved_data_ctx' and `saved_data'. Fixed comments. - * parse.y (package_list): New global. - (package_declaration:): Record newly parsed package name. - (extra_ctxp_pushed_p): Static global deleted. - (java_parser_context_save_global): Create buffer context for the - purpose of saving globals, if necessary. - (java_parser_context_restore_global): Pop context pushed for the - purpose of saving globals, if necessary. - (java_debug_context_do): New prototype and function. - (java_debug_context): Likewise. - (do_resolve_class): Use already parsed package names to qualify - and lookup class candidate. - (java_pre_expand_clinit): Removed unnecessary local variable. - -1999-12-17 Tom Tromey - - * gjavah.c (decode_signature_piece): Print "::" in JArray<>. This - fixes PR gcj/119. - (process_file): Use `\n\' at end of each line in string. - -1999-12-16 Alexandre Petit-Bianco - - * expr.c (expand_invoke): Layout the loaded class before - attempting to use it. - (expand_java_field_op): Allow final field assignments to take - place in $finit$. - * typeck.c (convert): Return error_mark_node if expr is null. - -1999-12-14 Alexandre Petit-Bianco - - * class.c (class_depth): Return -1 if the class doesn't load - properly. - * expr.c (can_widen_reference_to): Check for errors during depth - computation and return 0 accordingly. - * jcf-parse.c (parse_source_file): Call java_fix_constructors to - create default constructors and add an other error check. - * parse.h (java_fix_constructors): Prototyped. - * parse.y (java_pre_expand_clinit): Likewise. - (build_super_invocation): Re-prototyped to feature one argument. - (java_check_circular_reference): Directly use `current'. - (java_fix_constructors): New function. - (java_check_regular_methods): Don't create default constructors - here, but abort if none were found. - (java_complete_expand_methods): Pre-process calling - java_pre_expand_clinit. - (java_pre_expand_clinit): New function. - (fix_constructors): build_super_invocation invoked with the - current method declaration as an argument. - (build_super_invocation): Use the context of the processed method - decl argument instead of current_class. - * typeck.c (lookup_java_method): Take WFLs in method names into - account. - -1999-12-14 Per Bothner - - * class.c (make_class_data): flag_keep_inline_functions to keep - private methods in the method array. - -1999-12-15 Anthony Green - - * check-init.c (check_init): Take into account both types of - `throw's when checking for uninitialized variables. - -1999-12-10 Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): Force conversion of array - dimensions to int_type_node, that's what runtime's ABI expects. - -1999-12-10 Alexandre Petit-Bianco - - * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third - operand of a WFL, until the Java front-end gets fixed with regard - to Mark Mitchell's gcc/tree.h patch (1999-12-04.) - -1999-12-10 Andrew Haley - - * parse.h (BUILD_THROW): Add support for sjlj-exceptions. - decl.c (init_decl_processing): Add _Jv_Sjlj_Throw. - expr.c (build_java_athrow): Add support for sjlj-exceptions. - java-tree.h: Ditto. - jcf-write.c: Ditto. - -1999-12-08 Alexandre Petit-Bianco - - * expr.c (java_lang_expand_expr): Switch to permanent obstack - before calling expand_eh_region_start and expand_start_all_catch. - * except.c (expand_start_java_handler): Switch to permanent - obstack before calling expand_eh_region_start. - (expand_end_java_handler): Switch to permanent obstack before - calling expand_start_all_catch. - -1999-12-5 Anthony Green - - * decl.c (init_decl_processing): Mark throw_node as a noreturn - function with side effects. - (init_decl_processing): Mark all memory allocating DECLs with - DECL_IS_MALLOC. - -1999-12-01 Alexandre Petit-Bianco - - * except.c (expand_end_java_handler): Call - expand_resume_after_catch and end_catch_handler. - -1999-11-30 Anthony Green - - * verify.c (verify_jvm_instructions): Create new return label - chain if non existent (don't rely on the verified state of the jsr - target.) - -1999-11-30 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): Fixed indentation for - COMPOUND_EXPR and FIX_TRUNC_EXPR cases. - - * parse.y (patch_assignment): Removed bogus final class test on - lhs when checking on whether to emit an ArrayStoreException runtime - check. - * expr.c (expand_java_arraystore): Likewise. - -1999-11-28 Anthony Green - - * decl.c (find_local_variable): Reuse single slot decls when - appropriate. - -1999-11-24 Alexandre Petit-Bianco - - * jcf-parse.c (saw_java_source): Global variable removed. - (read_class): Don't use `saw_java_source'. Added extra braces. - (yyparse): Code setting `saw_java_source' removed. - -1999-11-24 Mark Mitchell - - * except.c (emit_handlers): Zero catch_clauses after emitting them. - -1999-11-23 Alexandre Petit-Bianco - - * verify.c (merge_type_state): Non verified subroutines being - considered more than once to trigger passive type merge. - -1999-11-23 Alexandre Petit-Bianco - - * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE - in case of error. Error message tuned. - -1999-11-21 Anthony Green - - * constants.c (find_methodref_index): Unwrap method names before - inserting them in the constant pool. - - * jcf-parse.c (jcf_parse): Display `interface' when appropriate. - - * class.c (assume_compiled_node): New typedef. - (assume_compiled_tree): New static data. - (find_assume_compiled_node): New function. - (add_assume_compiled): New function. - (assume_compiled): New function. - * class.c (make_class_data): Use assume_compiled. - (is_compiled_class): Use assume_compiled. - - * java-tree.h (add_assume_compiled): Declare. - - * lang.c (lang_decode_option): Parse new options. - -1999-11-17 Alexandre Petit-Bianco - - * class.c (layout_class): Always convert TYPE_SIZE_UNIT to - int_type_node: that's what `_Jv_AllocObject' expects. - -1999-11-11 Alexandre Petit-Bianco - - * parse.y (lookup_method_invoke): Use lang_printable_name to - reliably build the type name during error report. Fixes PR gcj/97. - -1999-11-09 Tom Tromey - - * jcf-path.c: Include . - (jcf_path_init): Search for libjava.zip. Fixes PR gcj/84. - (DIR_UP): New macro. - -1999-11-09 Alexandre Petit-Bianco - - * parse.y (source_end_java_method): Resume permanent allocation, - reversing Apr 27 1998 patch. - (patch_string_cst): Pop obstacks after having pushed the permanent - ones. - -1999-11-05 Tom Tromey - - * class.c (finish_class): Emit inlined methods if any native - methods exist in the class. Fixes PR gcj/85. - -1999-11-04 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR. - (qualify_ambiguous_name): Likewise. - -1999-11-03 Godmar Back - - * typeck.c: (lookup_java_method): search all inherited - interfaces when looking up interface method. - -1999-11-01 Alexandre Petit-Bianco - - * parse.y (method_header:): Issue error message for rule `type - error'. - (synchronized:): Error report when not using synchronized. - -1999-11-01 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Prevent `this' from - being used before the superclass constructor has been called. - (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P - instead of `CALL_THIS_CONSTRUCTOR_P'. - -1999-10-30 Todd T. Fries - - * check-init.c: Fix typo in comment. - -1999-10-29 Alexandre Petit-Bianco - - * class.c (add_method_1): Set DECL_INLINE to 1 for private, static - and final method. - -1999-10-29 Alexandre Petit-Bianco - - * parse.y (expression_statement:): Call function to report - improper invocation of a constructor. - (parse_ctor_invocation_error): New function. - -1999-10-26 Mark Mitchell - - * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call - remember_end_note. - -1999-10-21 Tom Tromey - - * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set - in generated `main'. - -1999-10-21 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR. - (qualify_ambiguous_name): Likewise. - -1999-10-20 Alexandre Petit-Bianco - - * parse.y (java_complete_tree): fold_constant_for_init to work on - permanent_obstack. - (java_complete_lhs): Likewise. - (array_constructor_check_entry): Complete an initializer element - on permanent_obstack. - -1999-10-19 Tom Tromey - - * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file. - From Mike Moreton . - -1999-10-15 Greg McGary - - * java-tree.h (flag_bounds_check): Remove extern decl. - * lang.c (flag_bounds_check): Remove global variable. - (lang_f_options): Remove "bounds-check" entry. - (lang_init_options): Default flag_bounds_check to "on". - -1999-10-14 Tom Tromey - - * jvgenmain.c (usage): New function. - (main): Use it. Also, handle `-D' options. - * jvspec.c (lang_specific_driver): Recognize -D. - (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation. - - * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'. - -1999-10-14 Kaveh R. Ghazi - - * jcf-dump.c (print_constant, disassemble_method): Don't call a - variadic function with a non-literal format string. - - * parse-scan.y (report_main_declaration): Likewise. - - * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise. - - * parse.y (read_import_dir, patch_assignment, patch_binop, - patch_array_ref): Likewise. - - * typeck.c (build_java_array_type): Likewise. - - * verify.c (verify_jvm_instructions): Likewise. - -1999-10-12 Alexandre Petit-Bianco - - * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1. - -1999-10-07 Anthony Green - - * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases - where CHECK_PUT may fail for valid reasons. - - * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3, - UNSAFE_PUTN): New macros. - -1999-10-04 Tom Tromey - - * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as - well. Fixes Java PR gcj/59. - * parse-scan.y (yyerror): Report errors. - -1999-09-24 Glenn Chambers - - * decl.c (insert_block): Remove unconditional `abort'. - -1999-09-24 Bernd Schmidt - - * decl.c (builtin_function): No longer static. New arg CLASS. Arg - FUNCTION_CODE now of type int. All callers changed. - Set the builtin's DECL_BUILT_IN_CLASS. - -1999-09-23 Tom Tromey - - * jvspec.c (lang_specific_driver): Don't read spec file if - -fsyntax-only given. - -1999-09-22 Tom Tromey - - * lang-specs.h: Added `%(jc1)' to the jc1 spec. - - * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally. - (WORDS_TO_LONG): Likewise. - (WORDS_TO_DOUBLE): Likewise. - -1999-09-14 Alexandre Petit-Bianco - - * jcf-write.c (RELOCATION_VALUE_0): New macro. - (RELOCATION_VALUE_1): Likewise. - (emit_iinc, emit_reloc, push_constant1, push_constant2, - push_in_const, push_long_const): Prototyped. - (push_constant1): Argument `index' is of type HOST_WIDE_INT. - (push_constant2): Likewise. - (push_int_const): Cast find_constant1's integer arguments to `jword'. - (find_constant_wide): Cast find_constant2's integer arguments to - `jword'. - (find_constant_index): Cast find_constant2's and find_constant2's - integer arguments to `jword'. - (emit_pop): Argument `value' is of type HOST_WIDE_INT. - (emit_switch_reloc): Use RELOCATION_VALUE_0. - (emit_if): Use RELOCATION_VALUE_1. - (emit_goto): Likewise. - (emit_jsr): Likewise. - (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second - argument to push_long_const to HOST_WIDE_INT. - -1999-09-15 Andreas Schwab - - * Makefile.in (parse.o): Depend on $(JAVA_TREE_H). - -1999-09-20 Nick Clifton - - * lang.c (lang_decode_option): Extend comment. - -1999-09-16 Alexandre Petit-Bianco - - * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK - instead of fndecl. - -1999-09-16 Kaveh R. Ghazi - - * gjavah.c (get_field_name, print_method_info, print_include, - add_namelet): Use xmalloc, not malloc. - - * jcf-depend.c (add_entry): Likewise. Use xstrdup, not strdup. - (munge): Use xrealloc, not realloc, trust xrealloc to handle a - NULL pointer. - - * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup. - - * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise. - - * jcf-path.c (add_entry): Likewise. - - * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc. - - * jv-scan.c (xmalloc): Remove definition. - - * jvgenmain.c (xmalloc): Likewise. - - * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero. - - * lex.c (java_store_unicode): Use xrealloc, not realloc. - - * parse-scan.y: Use concat, not of xmalloc/assign/strcpy. Use - concat, not xmalloc/sprintf. - (java_push_parser_context): Use xcalloc, not xmalloc/bzero. - (xstrdup): Remove definition. - - * parse.y (duplicate_declaration_error_p, - constructor_circularity_msg, verify_constructor_circularity, - check_abstract_method_definitions, java_check_regular_methods, - java_check_abstract_methods, patch_method_invocation, - check_for_static_method_reference, patch_assignment, patch_binop, - patch_cast, array_constructor_check_entry, patch_return, - patch_conditional_expr): Use xstrdup, not strdup. - - * zextract.c (ALLOC): Use xmalloc, not malloc. - -1999-09-12 Kaveh R. Ghazi - - * Make-lang.in (jvspec.o): Depend on system.h and gcc.h. - - * jvspec.c: Include gcc.h. Don't include gansidecl.h. - (do_spec, lang_specific_pre_link, lang_specific_driver, - input_filename, input_filename_length): Don't declare. - (main_class_name, jvgenmain_spec, lang_specific_driver): - Constify a char*. - (lang_specific_driver): All calls to the function pointer - parameter now explicitly call `fatal'. - -1999-09-11 Alexandre Petit-Bianco - - * parse.y (find_applicable_accessible_methods_list): Search - abstract classes as interfaces. - -1999-09-09 Alexandre Petit-Bianco - - * class.c (finish_class): We're now outside a valid method - declaration. Tell the rest of gcc so. - -1999-09-08 Bruce Korb autogen@linuxbox.com - - * Makefile.in: Give the gperf user a hint about why "gperf -F" fails. - -1999-09-07 Tom Tromey - - * gjavah.c (add_class_decl): Generate include for gcj/array.h, not - java-array.h. - (decode_signature_piece): Don't emit "::" in JArray<>. - (print_namelet): Only print trailing `;' when printing a class. - -1999-09-10 Bernd Schmidt - - * java-tree.h: Delete declarations for all tree nodes now moved to - global_trees. - * decl.c: Delete their definitions. - -1999-09-04 Mark Mitchell - - * Make-lang.in (jc1): Depend on ggc-callbacks.o. - * Makefile.in (OBJS): Add ggc-callbacks.o. - (OBJDEPS): Likewise. - -1999-09-03 Tom Tromey - - * parse.y (strip_out_static_field_access_decl): Return operand if - it satisfies JDECL_P. - -1999-09-02 Tom Tromey - - * gjavah.c (decode_signature_piece): Emit "::" in JArray<>. - Handle nested arrays, like `[[I'. - -1999-09-02 Kaveh R. Ghazi - - * class.c (finish_class): Remove unused parameter, all callers - changed. - - * expr.c (build_java_athrow): Change return type to void. - (java_lang_expand_expr): Make sure each case in switch returns a - value. - - * java-tree.h (finish_class): Fix prototype to take void args. - - * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN. - (main): Issue return from main, not exit. - - * jcf-parse.c (parse_class_file): Fix call to `finish_class'. - - * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN. - - * jv-scan.c (main): Issue return from main, not exit. - - * parse.y (check_abstract_method_definitions, - java_check_abstract_method_definitions): Add static prototypes. - (java_complete_expand_methods): Fix call to `finish_class'. - - * verify.c (verify_jvm_instructions): Initialize variables `oldpc' - and `prevpc'. - -1999-08-30 Kaveh R. Ghazi - - * lang.c (language_string): Constify. - -1999-08-30 Kaveh R. Ghazi - - * Makefile.in (LIBS): Fix definition so we link with $(CLIB). - Remove hacks for stuff which comes from libiberty. - - * Make-lang.in: Likewise. - -1999-08-30 Hans-Peter Nilsson - - * Makefile.in (xref.o): Depend on xref.c explicitly. - -1999-08-29 Kaveh R. Ghazi - - * java-tree.h (lang_printable_name): Constify a char*. - - * lang.c (lang_printable_name): Likewise. - -1999-08-27 Jeffrey A Law (law@cygnus.com) - - * gjavah.c, jcf-write.c, verify.c: Do not use C++ style - comments in C code. - -1999-08-26 Tom Tromey - - * gjavah.c (print_cxx_classname): Print "::" before qualified - name. - -1999-08-26 Alexandre Petit-Bianco - - * parse.y (lookup_cl): Changed leading comment. Now does its best - to set the column number. - (qualify_ambiguous_name): Take WFL wrappers into account. - -1999-08-25 Gregg Townsend - - * verify.c (verify_jvm_instructions): Don't check instruction - validity beyond end of method. - -1999-08-25 Tom Tromey - - * jvspec.c (lang_specific_driver): Correctly handle --help again. - -1999-08-25 Kaveh R. Ghazi - - * gjavah.c (print_name, print_base_classname, utf8_cmp, - cxx_keyword_subst, generate_access, name_is_method_p, - get_field_name, print_field_name, super_class_name, print_include, - decode_signature_piece, print_class_decls, usage, help, - java_no_argument, version, add_namelet, print_namelet): Add static - prototype. - (print_base_classname, utf8_cmp, cxx_keyword_subst, - name_is_method_p): Constify a char*. - (get_field_name): Likewise. Prefer xstrdup over malloc/strcpy. - Provide a final else clause in an if-else-if. - (print_field_info): Add missing final arg in function call to - `print_field_name'. - (print_method_info, decompile_method, decode_signature_piece, - print_c_decl, print_full_cxx_name, print_stub, - print_mangled_classname, super_class_name, print_include, - add_namelet, add_class_decl, print_class_decls, process_file, - help): Constify a char*. - - * jcf-write.c (jcf_handler, push_constant1, push_constant2, - push_int_const, find_constant_wide, find_constant_index, - push_long_const, field_op, maybe_wide, emit_dup, emit_pop, - emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop, - emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc, - emit_if, emit_goto, emit_jsr, call_cleanups, - make_class_file_name): Add static prototypes. - (generate_bytecode_return, generate_bytecode_insns): Pass a - NULL_PTR, not a NULL_TREE. - - * jv-scan.c: Include "jcf.h". - (main): Declare using DEFUN macro. - - * jvspec.c (find_spec_file, lang_specific_pre_link, - lang_specific_driver): Add prototypes. - (find_spec_file): Constify a char*. - - * keyword.gperf (hash, java_keyword): Add prototypes. - - * lang.c (lang_print_error): Add static prototype. - (lang_init): Prefer memcpy over bcopy to avoid casts. - - * lex.c (yylex): Add static prototype. - - * parse-scan.y: Include "lex.c" earlier. - - * parse.h: Remove redundant declaration for `yylex'. - - * parse.y (java_decl_equiv, binop_compound_p, search_loop, - labeled_block_contains_loop_p): Add static prototypes. - (not_accessible_p): Make static to match prototype. - - * verify.c (start_pc_cmp): Don't needlessly cast away const. - -1999-08-22 Alexandre Petit-Bianco - - * parse.y (check_method_redefinition): Changed leading comment. - (check_abstract_method_definitions): New function. - (java_check_abstract_method_definitions): New function. - (java_check_regular_methods): Call it. - (verify_constructor_super): Fixed indentation. - (lookup_method_invoke): Likewise. - -1999-08-19 Alexandre Petit-Bianco - - * parse.y (method_header): Return a null pointer if the current - class node is null. - (finish_method_declaration): Return if the current function decl - is null. - (source_start_java_method): Likewise. - (java_method_add_stmt): Likewise. - -1999-08-18 Alexandre Petit-Bianco - - * class.c (emit_register_class): Removed unnecessary call to - start_sequence. - * parse.y (labeled_block_contains_loop_p): Removed unused local - variable. - -1999-08-17 Alexandre Petit-Bianco - - * parse.y (java_refold): Added prototype. - -1999-08-17 Alexandre Petit-Bianco - - * parse.y (BINOP_COMPOUND_CANDIDATES): New macro. - (java_stabilize_reference): Removed unnecessary `else'. - (java_complete_lhs): Set flag to remember boolean. Call - java_refold. Added comments. - (java_decl_equiv): New function. - (binop_compound_p): Likewise. - (java_refold): Likewise. - (patch_unaryop): Striped static field access assigned to decl and - op. Changed promotion scheme for ++/-- operators. - (search_loop): New function. - (labeled_block_contains_loop_p): Likewise. - (patch_loop_statement): Call labeled_block_contains_loop_p. Added - comment. - (patch_bc_statement): Call search_loop. Fixed comment. - -1999-08-14 Anthony Green - - * expr.c (java_lang_expand_expr): Mark static array data as - referenced. - -1999-08-10 Rainer Orth - - * jvgenmain.c (main): NUL-terminate name_obstack. - -1999-08-10 Kaveh R. Ghazi - - * check-init.c (check_bool2_init, done_alternative): Add static - prototypes. - - * class.c (add_interface_do, maybe_layout_super_class): Likewise. - (add_method, build_utf8_ref, build_class_ref, - append_gpp_mangled_type, layout_class_method): Constify a char*. - - * decl.c (push_promoted_type, make_binding_level): Add static - prototypes. - (push_promoted_type, pushdecl): Constify a char*. - - * except.c (find_handler_in_range, link_handler, - check_start_handlers): Add static prototypes. - - * expr.c (process_jvm_instruction): Constify a char*. - - * gjavah.c (main): Constify a char*. - - * java-tree.h (verify_jvm_instructions, process_jvm_instruction): - Constify a char*. - - * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add - static prototypes. - (add_entry, jcf_dependency_set_target, jcf_dependency_add_target, - munge, print_ents): Constify a char*. - - * jcf-dump.c (disassemble_method): Constify a char*. - (print_constant_pool, print_exception_table): Add static prototypes. - (print_constant, print_exception_table, main, disassemble_method): - Constify a char*. - - * jcf-io.c (find_classfile, find_class): Likewise. - - * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise. - (set_source_filename, predefined_filename_p): Add static prototypes. - (set_source_filename, get_constant, get_class_constant, - find_in_current_zip): Constify a char*. - - * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add - static prototypes. - (add_entry, add_path, jcf_path_classpath_arg, - jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*. - - * jcf-reader.c (get_attribute, jcf_parse_preamble, - jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields, - jcf_parse_one_method, jcf_parse_methods, - jcf_parse_final_attributes): Add static prototypes. - (get_attribute): Constify a char*. - - * jcf.h (find_class, find_classfile, jcf_dependency_set_target, - jcf_dependency_add_target, jcf_path_classpath_arg, - jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*. - - * jv-scan.c (main): Constify a char*. - (gcc_obstack_init): Add prototype arguments. - - * jvgenmain.c (gcc_obstack_init): Likewise. - (main): Constify a char*. - - * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add - static prototypes. - (put_decl_string, lang_print_error): Constify a char*. - (lang_init): Remove redundant extern prototype. - - * mangle.c (emit_unicode_mangled_name): Constify a char*. - - * typeck.c (convert_ieee_real_to_integer, parse_signature_type): - Add static prototypes. - (get_type_from_signature): Constify a char*. - - * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ): - Add static prototypes. - (start_pc_cmp): Prefer PTR over GENERIC_PTR. - (verify_jvm_instructions): Constify a char*. - - * xref.c (xref_flag_value): Likewise. - - * xref.h (xref_flag_value): Likewise. - - * zextract.c (makeword, makelong): Add static prototypes. - (makeword, makelong): Constify a uch*. - -1999-08-09 Kaveh R. Ghazi - - * lang.c (java_dummy_print): Constify a char*. - (lang_print_error): Likewise. - (lang_init): Remove redundant prototype for `print_error_function'. - (lang_init_source): Likewise. - (lang_identify): Constify a char*. - -1999-08-09 Tom Tromey - - * javaop.h (WORD_TO_FLOAT): only inline if building with gcc. - (WORDS_TO_LONG): Likewise. - (WORDS_TO_DOUBLE): Likewise. - -1999-08-04 Kaveh R. Ghazi - - * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H). - - * expr.c (java_stack_pop, java_array_data_offset, - build_java_throw_out_of_bounds_exception, case_identity, - build_java_check_indexed_type): Add static prototypes. - (linenumber_table, expand_invoke, expand_java_field_op, - build_primtype_type_ref, expand_byte_code): Constify a char*. - - * java-tree.h (build_primtype_type_ref, linenumber_table): - Constify a char*. - (java_lang_expand_expr): Add prototype. - - * lang.c: Include rtl.h and expr.h. Remove extern prototype for - `java_lang_expand_expr'. - - * lex.c (java_lex_error): Constify a char*. - (java_get_unicode, java_read_char, java_allocate_new_line, - java_unget_unicode, java_sneak_unicode): Prototype. - - * parse-scan.y (current_class, package_name, method_declarator, - report_class_declaration, yyerror): Constify a char*. - - * parse.h (java_report_errors): Prototype. - (yyerror): Constify a char*. - - * parse.y (classitf_redefinition_error, check_modifiers, - parse_jdk1_1_error, lookup_package_type, - lookup_package_type_and_set_next, get_printable_method_name, - purify_type_name): Constify a char*. - (build_super_invocation, maybe_generate_finit, - verify_constructor_super, parser_add_interface, - add_superinterfaces, jdep_resolve_class, note_possible_classname, - java_complete_expand_methods, java_expand_finals, - cut_identifier_in_qualified, java_stabilize_reference, - do_unary_numeric_promotion, operator_string, do_merge_string_cste, - merge_string_cste): Prototype. - (single_type_import_declaration, yyerror, - variable_redefinition_error, build_array_from_name, - build_unresolved_array_type, check_class_interface_creation, - resolve_class, complete_class_report_errors, - note_possible_classname, read_import_dir, - find_in_imports_on_demand, resolve_package, fix_constructors, - check_deprecation, lookup_method_invoke, - maybe_build_primttype_type_ref, array_constructor_check_entry): - Constify a char*. - (java_complete_expand_methods, java_expand_finals): Make static. - (convert_narrow): Remove static prototype. - -1999-08-03 J"orn Rennecke - - * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h. - -1999-08-02 Richard Henderson - - * decl.c: Include defaults.h instead of expr.h. - * parse.y: Likewise. - -1999-08-02 Jakub Jelinek - - * java/decl.c (start_java_method): Change all uses of - PROMOTE_PROTOTYPES, so that it tests it as a C expression. - Ensure expr.h is included. - * java/expr.c (pop_arguments): Ditto. - * java/parse.y (expand_start_java_method): Ditto. - -1999-08-01 Kaveh R. Ghazi - - * Makefile.in (ALL_CFLAGS): Add '-W -Wall'. - -1999-07-31 Bernd Schmidt - - * decl.c: Include "function.h". - * except.c: Likewise. - * parse.y: Likewise. - * Makefile.in: Update dependencies. - -1999-07-30 Kaveh R. Ghazi - - * expr.c (build_java_soft_divmod): Provide a default case in switch. - (java_lang_expand_expr): Mark parameters `target', `tmode' and - `modifier' with ATTRIBUTE_UNUSED. - - * gjavah.c (process_file): Add braces around ambiguous `else'. - - * jcf-dump.c (print_access_flags, localvar_free): Change return - type to void. - - * parse.y (java_complete_expand_method): Initialize variable - `exception_copy'. - (resolve_qualified_expression_name): Likewise for `field_decl'. - (patch_method_invocation): Likewise for `class_to_search'. - (qualify_ambiguous_name): Likewise for `name' and `ptr_type'. - (patch_assignment): Likewise for `lhs_type'. - - * verify.c (verify_jvm_instructions): Remove unused variable - `caller'. - -1999-07-25 Richard Henderson - - * decl.c (va_list_type_node): New. - -1999-07-25 Anthony Green - - * gjavah.c (print_stub): New function. - (METHOD_IS_NATIVE): New macro. - (print_mangled_classname): Make static. - (HANDLE_END_FIELD): Don't emit fields during stub generation. - (process_file): Perform stub generation. - (HANDLE_METHOD): Don't emit class decls during stub - generation. - (HANDLE_END_METHOD): Take into account stub generation. - (print_method_info): Handle stub generation. - (print_stub): New function. - (print_cxx_classname): Make signature consistant with others. - (help): Describe -stubs option. - (main): Create stub file. - (version): Use version.c. - (print_full_cxx_name): New function. - (print_c_decl): Use print_full_cxx_name. - -1999-07-22 Alexandre Petit-Bianco - - * check-init.c (check_init): Handle MAX_EXPR. - -1999-07-15 Andrew Haley - - * lang.c (flag_use_divide_subroutine): New variable. - * typeck.c: (convert_ieee_real_to_integer): Bounds check - fp-to-integer conversion. - (convert): Call convert_ieee_real_to_integer when flag_fast_math - is not set. - - * expr.c (build_java_soft_divmod): New function. - (build_java_binop): Call build_java_soft_divmod if - flag_use_divide_subroutine is set. - * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree - soft_lrem_node: new builtin functions. - (init_decl_processing) Initialize the new builtins. - * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree - soft_lrem_node: new builtin functions. - (build_java_soft_divmod): New function. - * parse.y: Call build_java_soft_divmod if - flag_use_divide_subroutine is set. - * parse.c: Rebuilt. - - * jvspec.c (lang_specific_driver): Always allow an extra arg (for - a --specs= arg) even if not linking. - * lang-options.h (DEFINE_LANG_NAME ("Java")): Add - -fuse-divide-subroutine - -1999-07-20 Alexandre Petit-Bianco - - * parse.y (resolve_and_layout): Check methods only once. - (resolve_qualified_expression_name): Verify thrown exceptions - compatibility. - (check_thrown_exceptions): Reject exceptions thrown in - initializer. Error message tuned. - -1999-07-14 Andrew Haley - - * expr.c (expand_expr): Do not return the last statement in a - block as the block's value. - -1999-07-03 Alexandre Petit-Bianco - - * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed - CALL_EXPR, to avoid order of evaluation changes. - -1999-07-02 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Do not use - IDENTIFIER_LOCAL_VALUE when name is a STRING_CST. - -1999-07-01 Alexandre Petit-Bianco - - * check-init.c (check_init): Handle MAX_EXPR. - * expr.c (force_evaluation_order): Force method call arguments to - be evaluated in left-to-right order. - * parse.y (qualify_ambiguous_name): Loop again to qualify - NEW_ARRAY_EXPR properly. - -1999-06-30 Alexandre Petit-Bianco - - * parse.y (patch_invoke): Resolve unresolved invoked method - returned type. - (qualify_ambiguous_name): STRING_CST to qualify expression for - type name resolution. - -1999-06-24 Andrew Haley - - * class.c (finish_class): Whenever a deferred method is - output, rescan the list of methods to see if a new candidate for - output can be found. - -1999-06-28 Tom Tromey - - * jvspec.c (lang_specific_driver): Recognize --help. - -1999-06-25 Alexandre Petit-Bianco - - * parse.y (resolve_package): Fixed bogus return statement. - (patch_method_invocation): Resolve method invocation beginning with - a package name qualifier. - -1999-06-25 Kaveh R. Ghazi - - * Make-lang.in (java.stage1): Depend on stage1-start. - (java.stage2): Likewise for stage2-start. - (java.stage3): Likewise for stage3-start. - (java.stage4): Likewise for stage4-start. - -1999-06-24 Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): When doing cross referencing, don't - try to keep file location on a WFL expanded as a CALL_EXPR. - -1999-06-23 Alexandre Petit-Bianco - - * parse.y (finish_method_declaration): Insert a RETURN_EXPR when - compiling to class file a void method with an empty method body. - As a side effect, the bytecode backend will generate the - appropriate `return' instruction. - -1999-06-22 Alexandre Petit-Bianco - - * parse.y (lookup_package_type_and_set_next): New function prototype. - (resolve_package): Search current and imported packages. - (lookup_package_type_and_set_next): New function. - -1999-06-22 Andrew Haley - - * verify.c (verify_jvm_instructions): Check for pending blocks - before invalid PC test and opcode switch, not after. - -1999-06-21 Andrew Haley - - * except.c (find_handler_in_range): The upper limit for exception - ranges is exclusive, not inclusive: (start <= pc < end). - (link_handler): find child pointer which points to outer by - searching sibling list: previous code incorrectly assumed that - outer->outer->first_child must point to outer. - * verify.c (verify_jvm_instructions): FIXME added to code for - `athrow'. - (verify_jvm_instructions): Do not assume that the last block - processed in a subroutine is a block which ends with a `ret' - instruction. With some control flows it is possible that the last - block ends with an `athrow'. - -1999-06-14 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Reorganized the post - evaluation of non WFL leading expression nodes. - -1999-06-11 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after - CONVERT_EXPR. - -1999-06-10 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Handle qualified expression - beginning with a STRING_CST. - -1999-06-10 Alexandre Petit-Bianco - - * parse.y (register_fields): Set DECL_INITIAL on both - pre-initialized static and public fields. - (resolve_field_access): Static field access expressions to always - use pointer types. - (qualify_ambiguous_name): Work out buried CALL_EXPR for proper - qualification. CONVERT_EXPR to be resolved as an expression name. - (java_complete_lhs): Identify and access qualified final - initialized field in switch statement case expression. - (fold_constant_for_init): Pre-initialized field decl constant to - be folded. - -1999-06-07 Alexandre Petit-Bianco - - * parse.y (note_possible_classname): Mark returned node with - QUALIFIED_P only if the original class name contained a '/'. - -1999-06-05 Anthony Green - - * Make-lang.in (gcjh): More parallel build fixes. - -1999-06-03 Mike Stump - - * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds. - -1999-06-02 Anthony Green - - * except.c (link_handler): Chain exception handlers in order. - -1999-06-02 Anthony Green - - * expr.c (expand_byte_code): Fill unreachable bytecode regions - with nops and process as usual in order to always set correct EH - ranges. Emit detailed warnings about unreachable bytecodes. - -1999-06-02 Anthony Green - - * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as - constant. - -1999-05-28 Alexandre Petit-Bianco - - * parse.y (lookup_field_wrapper): Unified returned value to NULL - or the searched field decl. - -1999-05-28 Alexandre Petit-Bianco - - * parse.y (fold_constant_for_init): Convert numerical constant - values to the type of the assigned field. - -1999-05-27 Alexandre Petit-Bianco - - * expr.c (lookup_field): Relaxed the test on class loading error - detection. - * parse.y (fold_constant_for_init): Enabeled old code. - -1999-05-26 Alexandre Petit-Bianco - - * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast' - decide the validity of the cast of a java.lang.Cloneable reference - to an array. - (patch_conditional_expr): Fixed first argument passed to - binary_numeric_promotion. - -1999-05-26 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Take into account that a - CONVERT_EXPR might specify a type as a WFL. - -1999-05-25 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Save the rhs before using it as an - argument to _Jv_CheckArrayStore. - -1999-05-25 Alexandre Petit-Bianco - - * lex.c (java_parse_doc_section): Fixed `tag' buffer size. - -1999-05-24 Alexandre Petit-Bianco - - * lex.c (java_lex): Accepts `+' or `-' after the beginning of a - floating point literal only when the exponent indicator has been - parsed. - -1999-05-22 Alexandre Petit-Bianco - - * parse.y (formal_parameter:): Construct argument tree list - element even if a yet unsupported final parameter was encountered. - -1999-05-18 Alexandre Petit-Bianco - - * parse.y (finish_method_declaration): Issue errors for native or - abstract methods declared with a method body, as well as for non - native or non abstract methods with no method body. - -1999-05-19 Kaveh R. Ghazi - - * class.c (build_utf8_ref): Initialize variable `field'. - - * decl.c (init_decl_processing): Initialize variable `field'. - - * expr.c (build_known_method_ref): Mark parameters `method_type', - `method_signature' and `arg_list' with ATTRIBUTE_UNUSED. - (process_jvm_instruction): Likewise for parameter `length'. - - * jvspec.c (lang_specific_driver): Mark variables `saw_math', - `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with - ATTRIBUTE_UNUSED. - - * parse.y (maybe_generate_clinit): Remove unused variable - `has_non_primitive_fields'. - (find_in_imports_on_demand): Initialize variables `node_to_use' - and `cl'. - (patch_binop): Likewise for variable `prom_type'. - (patch_unaryop): Likewise for variable `prom_type'. - - * verify.c (verify_jvm_instructions): Likewise for variable `last'. - - * xref.c (xref_table): Add missing initializer. - -1999-05-14 Tom Tromey - - * java-except.h (struct eh_range): Removed unused `next' member. - * verify.c (verify_jvm_instructions): Call check_nested_ranges - after adding all exception handlers. Sort exception ranges in - order of start PC. - (struct pc_index): New structure. - (start_pc_cmp): New function. - * except.c (add_handler): Return `void'. Don't call link_handler; - instead construct an ordinary linked list and do range - coalescing. - (check_nested_ranges): New function. - (link_handler): Changed interface to allow merging of eh_ranges. - Split overlapping ranges. Return `void'. - -1999-05-17 Alexandre Petit-Bianco - - * parse.y (constructor_block_end:): New rule, tagged . - (constructor_body:): Use `constructor_block_end' instead of - `block_end'. - -1999-05-17 Alexandre Petit-Bianco - - * parse.y (statement_nsi:): Pop `for' statement block. - (java_complete_lhs): Labeled blocks containing no statement are - marked as completing normally. - -1999-05-14 Alexandre Petit-Bianco - - * xref.c (xref_set_current_fp): New function, defined. - * xref.h (xref_set_current_fp): New function, prototyped. - -1999-05-14 Alexandre Petit-Bianco - - * check-init.c (check_init): Take into account that - LABELED_BLOCK_STMT can be empty. - -1999-05-13 Alexandre Petit-Bianco - - * parse.y (java_check_regular_methods): Warning check on not - overriding methods with default access in other packages does not - apply to `'. - (java_complete_lhs): If block body is an empty_stmt_node, replace - it by NULL_TREE. This prevents gcc from generating an irrelevant - warning. - -1999-05-13 Alexandre Petit-Bianco - - * check-init.c (check_init): Removed code accepting to see things - falling through default:, when doing xrefs. - * java-tree.h (do_not_fold): New global variable, declared. - * parse.y (do_not_fold): New global variable, defined. - (java_complete_expand_method): Set `do_not_fold' to the value of - `flag_emit_xref'. When doing xrefs: copy the thrown exceptions, - and reinstall them after them have been purged; do not check for - initializations; do not issue missing return errors. - (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes - when doing xrefs. - (patch_binop): Skip the fold part when doing xrefs. - (build_string_concatenation): Skip the concatenation part when - doing xrefs. - (patch_synchronized_statement): Do not generate a try-finally when - doing xrefs. - (patch_throw_statement): When doing xrefs, do not call BUILD_THROW - and keep the location where the throw was seen. - * typeck.c (convert): When `do_not_fold' is set, do not attempt - any treatment on the converted node an simply return a NOP_EXPR of - the targeted type. - * xref.c (xref_get_data): New function, defined. - * xref.h (xref_get_data): New function, declared. - (XREF_GET_DATA): Use xref_get_data. - -1999-05-13 Kaveh R. Ghazi - - * gjavah.c (print_include): Cast the result of `strlen' to int - when comparing against a signed value. - (add_namelet): Likewise. - -1999-05-12 Kaveh R. Ghazi - - * expr.c (expand_invoke): Mark parameter `nargs' with - ATTRIBUTE_UNUSED. - (PRE_LOOKUP_SWITCH): Likewise for variable `match'. - - * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with - ATTRIBUTE_UNUSED. - - * jcf-reader.c (get_attribute): Cast a value to long - when comparing against a signed expression. Likewise. - - * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or - HOST_BITS_PER_CHAR. - -1999-05-11 Andrew Haley - - * parse.y (source_end_java_method): If the current method contains - any exception handlers, force asynchronous_exceptions: this is - necessary because signal handlers in libjava may throw exceptions. - * decl.c (end_java_method): Ditto. - -1999-05-11 Tom Tromey - - * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x - flags. - * jvspec.c (THREAD_NAME): Removed. - (GC_NAME): Likewise. - (MATHLIB): Likewise. - (WITHLIBC): Likewise. - (GCLIB): Likewise. - (THREADLIB): Likewise. - (MATH_LIBRARY): Likewise. - (lang_specific_driver): Don't add `-l' options to command line. - Instead, add a single --specs option. Recognize `-L' options and - use them to search for spec file. - (find_spec_file): New function. - (SPEC_FILE): New define. - -1999-05-11 Dave Brolley - - * lang-options.h: -MD, -MMD, -M and -MM not needed here for - cpplib-enabled build. - -1999-05-05 Per Bothner - - * class.c (make_field_value): DECL_INITIAL may be a string literal; - temporarily zero it while calling rest_of_decl_compilation. - - * java-tree.h (string_ptr_type_node): Add declaration. - * decl.c: Define and initialize string_ptr_type_node. - * parse.y (patch_string_cst): Use string_ptr_type_node. - - * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P): Removed. - * parse.y (for_statement): Now unconditionally exit_block. - (finish_labeled_statement): No longer exit_block if for-loop. - (patch_loop_statement): Check harder if the loop is already labeled. - - * parse.y (patch_initialized_static_field): Removed function. - (maybe_generate_clinit): Removed special handling for interfaces. - (java_complete_expand_methods): Do a preliminary java_complete_tree - on to determine if it can be removed. - (java_complete_expand_method): Remove special handling for . - (java_complete_lhs): For BLOCK and EXPR_WITH_FILE_LOCATION - optimize if we get back empty_stmt_node. - For MODIFY_EXPR, re-do checking of static initializers. - (fold_constant_for_init): Don't return immediate if VAR_DECL. - For VAR_DECL, pass correct context. - - * verify.c (verify_jvm_instructions): Better error messages. - -1999-05-03 Tom Tromey - - * parse-scan.y (interface_declaration): Call - report_class_declaration for interfaces. - -1999-04-30 20:54 -0400 Zack Weinberg - - * Makefile.in: Remove -v from bison command lines. - -1999-04-30 Alexandre Petit-Bianco - - * check-init.c (check_init): Exclude a case of error when doing - xrefs. - * class.c (layout_class_method): Don't generate the error message - twice when compiling from source. - * lang-options.h: Added `-Wredundant-modifers' and - `-Wunusupported-jdk11' flags and help text. - * lang.c (lang_decode_option): Added support for - `-Wunsupported-jdk11' and `-Wredundant-modifiers'. - flag_static_local_jdk11 and flag_redundant set accordingly. - * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK. - * parse.h (EXPR_WFL_ADD_COL): New macro. - (DECL_END_SOURCE_LINE): Likewise. - (DECL_INHERITED_SOURCE_LINE): Likewise. - * parse.y (static_ref_err): New function, prototyped. - (CCB_TK): Now tagged . - (class_body:): Remember the location of the closing '}' of a class - definition when doing xrefs. - (block:): Likewise. - (block_end:): Likewise. - (create_class): Remember the location of the inherited class - identifier when doing xrefs. - (register_fields): Added test on first operand of `init' before - testing it TREE_CODE. - (method_header): Store the location of the class identifier in the - class decl when doing xrefs. - (finish_method_declaration): Don't combine first/last method line - when doing xref. - (java_check_regular_methods): Warning check on not overriding - methods with default access on other packages move before check on - static methods. Initialization of `aflags' also moved up. - (resolve_expression_name): Call static_ref_err to report the error. - (static_ref_err): New function, implemented. - (resolve_field_access): Returned simplified static field access - when doing xrefs. - (resolve_qualified_expression_name): Check for illegal use of - static fields in a non static context. Call static_ref_err to - report error in various places. - (java_complete_tree): Do not fold initialized static fields when - doing xrefs. - (java_complete_lhs): Likewise. - -1999-04-29 Anthony Green - - * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to - create internal labels. - (lookup_label): Ditto. - -1999-04-24 Alexandre Petit-Bianco - - * class.c (layout_class_method): Generate 's rtl for - interfaces. - * decl.c (complete_start_java_method): Don't call _Jv_InitClass - for interfaces' . - * expr.c (lookup_field): Search for fields in interfaces. - (expand_invoke): Fixed indentation. - (expand_java_field_op): Likewise. Use IS_CLINIT. - * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed. - (IS_CLINIT): New macro. - * parse.y (type_declaration:): Call maybe_generate_clinit after an - interface was parsed. - (maybe_generate_clinit): Don't generate if the current class is an - interface with only fields of primitive types. - (reset_method_name): Use IS_CLINIT. - (java_complete_expand_method): Expand when it exists for - interfaces. Use IS_CLINIT. - (resolve_expression_name): Use DECL_CONTEXT instead of - current_class to build static field references. - (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on - ARRAY_REF when doing xreferencing. - (check_final_assignment): Fixed typo in leading comment. Use - IS_CLINIT. - (patch_array_ref): Don't fully expand array references when - xreferencing. - (patch_return): Use IS_CLINIT. - (patch_throw_statement): Likewise. - -1999-04-22 Tom Tromey - - * Make-lang.in (JAVA_SRCS): Added check-init.c. - -1999-04-21 Alexandre Petit-Bianco - - * decl.c (predef_filenames, predef_filenames_size): New globals - (init_decl_processing): predef_filenames and predef_filenames_size - initialized. - * java-tree.h (predef_filenames, predef_filenames_size): Declared - extern. - * jcf-parse.c (predefined_filename_p): New function. - (yyparse): Check that files on the command line are specified only - once and issue a warning otherwise. - * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro. - * parse.y (source_end_java_method): Nullify NOP method bodies, to - avoid a gcc warning with -W -Wall turned on. - (java_expand_classes): Abort if errors were encountered. - (java_complete_lhs): If the cross reference flag is set, wrap - field DECL node around a WFL when resolving expression name. - -1999-04-19 Alexandre Petit-Bianco - - * lang.c (lang_decode_option): Fixed returned value when parsing - `-fxref=...' and `-Wall'. - * parse.y (source_end_java_method): Do not generate code when - flag_emit_xref is set. - (resolve_expression_name): Do not build static field access when - flag_emit_xref is set. - (resolve_field_access): No special treatment on `length' when - flag_emit_xref is set. Do not build qualified static field access - when flag_emit_xref is set. - (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR - when flag_emit_xref is set. - (patch_assignment): Do not generate array store runtime check when - flag_emit_xref is set. - * xref.c (xref_flag_value): Fixed function declaration - indentation. - (xset_set_data): New function. - * xref.h (xref_set_data): Added prototype for new function. - (typedef struct xref_flag_table): New field data. - (XREF_GET_DATA): New macro. - -1999-04-19 Tom Tromey - - * xref.h (enum): Removed trailing comma. - - * parse.y (resolve_qualified_expression_name): Added missing - `break'. - -1999-04-15 Anthony Green - - * gjavah.c: New prototypes for java_float_finite and - java_double_finite. - -1999-04-12 Alexandre Petit-Bianco - - * parse.y (patch_unaryop): Fixed ++/-- operator check on array - references. - -1999-04-06 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (TREE_H): Add tree-check.h. - (RTL_H): Add genrtl.h. - -1999-04-06 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Added ArrayStoreException runtime - check. - -1999-04-06 Per Bothner - - * expr.c (pop_type_0): New function. - (pop_type): Use pop_type_0. - * java-tree.h (pop_type_0): New declaration. - * verify.c (verify_jvm_instructions): Check return instructions. - - * parse.y (patch_binop): Don't fold if non-constant and emiting - class files. - -1999-04-05 Kaveh R. Ghazi - - * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H). - - * gjavah.c: Include math.h earlier. Include tree.h/java-tree.h. - (main_jcf): Don't define. - (process_file): Don't set `main_jcf'. - - * java-tree.h (main_jcf): Don't declare. - - * jcf-parse.c (main_jcf): Add static definition. - - * lang.c (main_jcf): Don't define. - -1999-04-05 Kaveh R. Ghazi - - * class.c (add_method_1): Cast the argument of `bzero' to PTR. - - * decl.c (copy_lang_decl): Likewise for `bcopy'. - - * jcf-depend.c: Include "config.h", not . - - * jcf-parse.c (jcf_figure_file_type): Cast the arguments of - `bcopy' to PTR. - - * jcf-path.c: Include "config.h", not . - - * lex.c: Don't include various system header files. - (java_init_lex): Cast the argument of `bzero' to PTR - - * parse-scan.y (java_push_parser_context): Likewise. - - * parse.y (java_push_parser_context): Likewise. - (patch_bc_statement): Match format specifier to variable argument. - - * xref.c: Don't include . - -1999-04-05 Alexandre Petit-Bianco - - * parse.y (struct parser_ctxt *ctxp): Now global. - (declare_local_variables): Use WFL compound value for the - declaration source line value, when doing cross-referencing. - -1999-03-31 Tom Tromey - - * gjavah.c (print_field_info): Allow constants of other types. - (print_include): Generate include when new name is proper prefix - of already printed name. - (add_namelet): Likewise. - (cxx_keyword_subst): New function. - (print_method_info): Use it. - (print_field_name): New function. - (get_field_name): New function. - (print_field_info): Use get_field_name and print_field_name. - -1999-03-31 Kaveh R. Ghazi - - * Makefile.in (keyword.h): Generate using gperf language 'C', not - 'KR-C', so gperf uses the `const' keyword on strings. - - * keyword.gperf (java_keyword): Const-ify a char*. - -1999-03-30 Alexandre Petit-Bianco - - * parse.y (patch_bc_statement): Fixed identation and a bogus - `printf' format. - -1999-03-30 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Allow static variables in other - classes to be assigned. - -1999-03-28 Kaveh R. Ghazi - - * class.c (maybe_add_interface): Remove unused variable - `interface_binfo'. - (make_class_data): Use = for assignment, not ==. Likewise. - (emit_register_classes): Remove unused variable `decl'. - - * lex.c: Fix comment so as not to contain an embedded `/*'. - - * verify.c (verify_jvm_instructions): Remove unused variable - `self_type'. - -1999-03-27 Per Bothner - - * parse.y (complete_loop_body): Rename to finish_loop_body. - (complete_labeled_statement): Rename to finish_labeled_statement. - (complete_for_loop): Rename to finish_for_loop. - (complete_method_declaration): Rename to finish_method_declaration. - - * java-tree.h (continue_identifier_node): New global node. - * decl.c: Define and initialize continue_identifier_node. - * parse.y (generate_labeled_block): Remove - no longer needed. - (build_loop_body): Use continue_identifier_node for continue block. - (finish_labeled_statement): Also do pop_labeled_block actions. - (java_complete_lhs): POP_LOOP even if error. - (build_labeled_block): Special handling for continue_identifier_node. - (patch_loop_statement): Re-organize. - (patch_bc_statement): Re-write. - -1999-03-27 Alexandre Petit-Bianco - - * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count - using a WFL compound value. - * parse.y (xref.h): Include. - (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the - WFL compound value. - (register_fields): Set WFL compound value to lineno if doing - xrefs. - (java_complete_expand_method): Call expand_xref if flag_emit_xref - is set. - * xref.c (system.h, jcf.h, parse.h, obstack.h): Include. - * xref.h (expand_xref): Prototype renamed from xref_generate. - -1999-03-27 Alexandre Petit-Bianco - - * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK. - (GET_CURRENT_BLOCK): New macro. - * parse.y (current_static_block): New global variable. - (method_body:): Define action. - (complete_method_declaration): Set current_function_decl to NULL - when work on the current method is done. - (declare_local_variables): Use GET_CURRENT_BLOCK. - (java_method_add_stmt): Likewise. - (java_complete_expand_method): Disable the use of `this' when - expanding . - (enter_a_block): If no current method exist, use - current_static_block to link static initializer blocks. - (exit_block): Rewritten to use current_static_block when no current - method decl exists. - (lookup_name_in_blocks): Use GET_CURRENT_BLOCK. - (patch_return): Forbid the use of `return' in static initializers. - (patch_throw_statement): Fixed indentation. Issue specific error - for uncaught thrown checked exception in static initializer - blocks. Removed FIXME. - -1999-03-25 Zack Weinberg - - * java/Make-lang.in: Remove all references to gcj.o/gcj.c. - Link gcj from gcc.o. - -1999-03-23 Alexandre Petit-Bianco - - * parse.y (find_applicable_accessible_methods_list): When dealing - with interface: ensure that a given interface or java.lang.Object - are searched only once. - -1999-03-23 Kaveh R. Ghazi - - * gjavah.c (print_c_decl): Remove unused argument `flags'. - - * jcf-dump.c (print_access_flags): Add braces around if-else. - - * jvspec.c (lang_specific_driver): Wrap variable `len' in macro - COMBINE_INPUTS. - - * lex.c (build_wfl_node): Add static prototype. - - * lex.h (build_wfl_node): Remove static prototype. - - * parse.y: Include lex.c early enough to declare everything needed. - Ensure calls to `build_wfl_node' pass the proper arguments. - (create_class): Remove unused variable `super_decl'. - (get_printable_method_name): Initialize variable `name'. - -1999-03-22 Alexandre Petit-Bianco - - * Changelog: Fixed 1999-03-22 typos. - * lang.c (lang_decode_option): Fixed typo in error string in the - XARG section. - -1999-03-22 Alexandre Petit-Bianco - - * Makefile.in (JAVA_OBJS): Added entry xref.o. - (xref.o): New rule. - * java-tree.h (flag_emit_xref): Declared extern. - * lang.c (xref.h): Included. - (flag_emit_xref): New global variable. - (lang_decode_option): Added support for -fxref. - * xref.c: Created. - * xref.h: Likewise. - -1999-03-21 Manfred Hollstein - - * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be - linked with. - -1999-03-21 Kaveh R. Ghazi - - * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H) - $(srcdir)/../system.h and $(JAVA_TREE_H). - (jcf-io.o): Depend on $(JAVA_TREE_H). - (mangle.o): Likewise. - - * check-init.c (check_cond_init): Add static prototype. - - * class.c (build_java_method_type, hashUtf8String, - make_field_value, get_dispatch_vector, get_dispatch_table, - append_gpp_mangled_type, mangle_static_field): Likewise. - (strLengthUtf8): Hide unused definition. - (hashUtf8String): Const-ify. - (make_field_value): Un-ANSI-fy. - - * constants.c: Move inclusion of jcf.h above java-tree.h. - (set_constant_entry, find_class_or_string_constant, - find_name_and_type_constant, get_tag_node, - build_constant_data_ref): Add static prototype. - - * decl.c (push_jvm_slot, builtin_function, - lookup_name_current_level): Likewise. - (builtin_function): Const-ify. - - * except.c (expand_start_java_handler, expand_end_java_handler): - Add static prototype. - - * expr.c (flush_quick_stack, push_value, pop_value, - java_stack_swap, java_stack_dup, build_java_athrow, - build_java_jsr, build_java_ret, expand_java_multianewarray, - expand_java_arraystore, expand_java_arrayload, - expand_java_array_length, build_java_monitor, expand_java_pushc, - expand_java_return, expand_java_NEW, expand_java_INSTANCEOF, - expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label, - expand_compare, expand_test, expand_cond, expand_java_goto, - expand_java_call, expand_java_ret, pop_arguments, expand_invoke, - expand_java_field_op, java_push_constant_from_pool): Likewise. - - (decode_newarray_type, expand_iinc): Un-ANSI-fy. - (build_java_arraynull_check): Mark parameters `node' and `type' - with ATTRIBUTE_UNUSED. - (note_label): Likewise for parameter `current_pc'. - (expand_java_call, expand_java_ret): Hide unused definition. - - * java-tree.h (make_class, build_constants_constructor, - java_set_exception_lang_code, pop_labeled_block, emit_handlers, - init_outgoing_cpool, register_class, emit_register_classes, - java_layout_seen_class_methods): Prototype. - (unicode_mangling_length): Const-ify. - (append_gpp_mangled_name, append_gpp_mangled_classtype, - emit_unicode_mangled_name, format_int, format_uint, - jcf_trim_old_input, jcf_print_utf8, jcf_print_char, - jcf_print_utf8_replace, open_class): Prototype. - - * jcf-dump.c: Include "config.h", not . Don't include - . Include tree.h/java-tree.h. - (utf8_equal_string usage, process_class): Add static prototype. - (open_class): Don't prototype this here. - (utf8_equal_string): Match arguments to format specifiers. - (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH, - TABLE_SWITCH, disassemble_method): Likewise. - - * jcf-io.c: Include tree.h/java-tree.h. - (open_class, find_classfile, jcf_print_utf8, - jcf_print_utf8_replace): Const-ify. - - * jcf-parse.c (parse_zip_file_entries, process_zip_dir, - parse_class_file): Add static prototype. - (find_in_current_zip): Match definition to existing static - prototype. - - * jcf-write.c: Include jcf.h before tree.h/java-tree.h. - (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label, - finish_jcf_block, define_jcf_label, get_jcf_label_here, - put_linenumber, localvar_alloc, localvar_free, get_access_flags, - write_chunks, adjust_typed_op, generate_bytecode_conditional, - generate_bytecode_return, perform_relocations, init_jcf_state, - init_jcf_method, release_jcf_state, generate_classfile): - Add static prototype. - (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED. - (make_class_file_name): Const-ify. - - * jcf.h (find_classfile): Const-ify. - - * jv-scan.c (reset_report): Remove prototype. - - * jvgenmain.c: Include jcf.h/tree.h/java-tree.h. - (error): Rewrite to allow varargs. - - * lang.c (lang_f_options): Const-ify. - - * lex.c (java_parse_escape_sequence): Add static prototype. - (java_allocate_new_line): Match definition to existing static - prototype. - - * mangle.c Include tree.h/java-tree.h. - (unicode_mangling_length, emit_unicode_mangled_name, - append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify. - - * parse.h (jdep_code): Remove trailing comma in enumeration. - (java_get_line_col): Move prototype outside of !JC1_LITE test. - (reset_report): Add prototype. - - * verify.c (push_pending_label, merge_types): Add static - prototypes. - - * zipfile.h (opendir_in_zip, open_in_zip): Prototype. - -1999-03-19 Alexandre Petit-Bianco - - * parse.y (find_applicable_accessible_methods_list): Extend the - search to superinterfaces when relevant. - (search_applicable_methods_list): New function. - -1999-03-18 Alexandre Petit-Bianco - - * class.c (unmangle_classname): Implemented stricter testing - before setting the QUALIFIED_P flag on an identifier. - -1999-03-16 Per Bothner - - * parse.y (java_complete_lhs): Call force_evaluation_order - after patch_newarray. - (patch_binop): Don't call fold if there are side effects. - -1999-03-16 Alexandre Petit-Bianco - - * parse.y (java_stabilize_reference): Use save_expr instead of - building a SAVE_EXPR node. - (java_complete_lhs): Patch the resulting string of the `+=' - operator (if necessary) and complete the RHS after having built - the cast. - -1999-03-15 Per Bothner - - * class.c (make_class): Don't set CLASS_P here (because - this function is also called by build_java_array_type). - (push_class): Set CLASS_P here instead. - * parse.h (TYPE_CLASS_P): Check for TYPE_ARRAY_P is redundant. - - * jcf-dump.c (print_access_flags): Take extra parameter to indicate - context. If the context is class, perfer "super" over "synchronized". - * jcf-write.c (generate_classfile): Don't add ACC_SUPER if interface. - - * parse.y (create_class): Don't call parser_check_super here; - it is not robust. Always wait until later. - - * parse.y (method_header): For interfaces, set ACC_ABSTRACT (to - match what JDK 1.2 does), but don't set ACC_PUBLIC. - -1999-03-13 Per Bothner - - * lex.c (java_read_char): UNGET invalid non-initial utf8 character. - * lex.h (UNGETC): Change misleading macro. - -1999-03-12 Alexandre Petit-Bianco - - * parse.y (java_stabilize_reference): Return NODE when patching a - COMPOUND_EXPR. - (java_complete_lhs): Put parenthesis around truth values. - -1999-03-12 Alexandre Petit-Bianco - - * class.c (layout_class_method): Don't make rtl for interface - methods. - * parse.h (GET_TYPE_NAME): New macro. - * parse.y (if_then_statement:): Fixed indentation. - (if_then_else_statement:): Likewise. - (for_statement:): Fixed spacing. - (try_statement:): Fixed indentation. - (create_interface): Don't force interfaces to be abstract. - (method_header): Abstract methods are OK in interfaces. - (declare_local_variables): Fixed typo in comment. - (java_complete_expand_method): Fixed indentation. - (resolve_qualified_expression_name): Use GET_TYPE_NAME to report - non accessible fields. - (java_stabilize_reference): New function. - (java_complete_lhs): Fixed indentation. Use - java_stabilize_reference in compound assignment. Insert the - cast. If not processing `+' fix string constants before processing - binop. - -1999-03-12 Kaveh R. Ghazi - - * constants.c (find_class_or_string_constant): Cast variable `j' - to a `jword' when comparing against one. - - * expr.c (java_lang_expand_expr): Remove unused variables - `has_finally_p' and `op0'. - - * gjavah.c (print_field_info): Cast a value to jint when comparing - against one. Likewise for a jlong. - (add_namelet): Likewise cast a `sizeof' to an int when comparing - against a signed quantity. - - * jcf-dump.c (print_signature_type): Remove unused variable `digit'. - (print_signature): Don't needlessly dereference variable `str' - - * jcf-reader.c (get_attribute): Mark variables `max_stack' and - `max_locals' with ATTRIBUTE_UNUSED. - (jcf_parse_class): Likewise for variable `index'. - - * parse.h (reverse_jdep_list): Remove static prototype. - - * parse.y (build_jump_to_finally): Remove prototype and definition. - (reverse_jdep_list): Add static prototype. - - * typeck.c (convert_ieee_real_to_integer): Remove unused variables - `assignment' and `expr_decl'. - - * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'. - -1999-03-12 Andrew Haley - - * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes; - we'll need a directory separator and a null character. - -1999-03-10 Per Bothner - - * jcf-write.c (generate_bytecode_insns): Handle __builtin_fmod, for %. - -Tue Mar 9 11:52:08 1999 Alexandre Petit-Bianco - - * parse.y (method_header): Don't set ACC_ABSTRACT flags on - interfaces. - -1999-03-05 Per Bothner - - * lex.c (java_parse_end_comment): Take extra parameter (next char). - - * class.c (build_utf8_ref): Fix possible name class/ambiguity. - - * class.c (layout_class_method): A static method in a base class - is never overridden, so treat it like it doesn't exist. - However, do complain about private non-static method overriding - public static method. - - * parse.y: Don't set unused INITIALIZED_P flag. - * java-tree.h (INITIALIZED_P): Removed no-longer needed flag. - - * parse.y (find_expr_with_wfl): Optimize tail-calls. - (build_array_from_name): Re-order &index[string] to &string[index]. - - * parse.y (java_complete_lhs): Don't call patch_assignment if rhs is - error_mark (it might catch more errors, but it is more likely to lose). - -1999-03-06 Kaveh R. Ghazi - - * Makefile.in (jcf-parse.o): Depend on $(PARSE_H). - (parse-scan.o): Depend on toplev.h. - - * class.c (make_method_value): Add prototype. Make it static. - Remove unused second argument, caller changed. - - * expr.c (java_lang_expand_expr): Remove unused variable - `return_label'. - - * java-tree.h: Don't prototype find_in_current_zip. - Add prototypes for verify_constant_pool, start_java_method, - end_java_method, give_name_to_locals, expand_byte_code, - open_in_zip, set_constant_value, find_constant1, find_constant2, - find_utf8_constant, find_string_constant, find_class_constant, - find_fieldref_index, find_methodref_index, write_constant_pool, - count_constant_pool_bytes and encode_newarray_type. - - * jcf-dump.c: Remove unused variable `LONG_temp'. - - * jcf-parse.c: Include parse.h. - (jcf_parse_source): Remove unused parameter, all callers changed. - (jcf_figure_file_type): Add static prototype. - (find_in_current_zip): Likewise. Also remove unused parameter, - all callers changed. - (read_class): Initialize variable `saved_pos'. - - * jcf-reader.c (jcf_parse_preamble): Mark variables - `minor_version' and `major_version' with ATTRIBUTE_UNUSED. - - * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE. - (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE. - (java_parse_doc_section): Initialize variable `seen_star'. - (java_lex): Wrap variable `number_beginning' in !JC1_LITE. - (java_lex_error): Mark parameters `msg' and `forward' with - ATTRIBUTE_UNUSED. - (java_get_line_col): Mark parameters `filename' and `line' with - ATTRIBUTE_UNUSED. - - * parse-scan.y: Include toplev.h. - (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED. - - * parse.h: use `struct JCF', not plain `JCF'. - (java_parser_context_save_global, java_expand_classes - java_parser_context_restore_global, java_parse): Add prototypes. - - * typeck.c (convert_ieee_real_to_integer): Remove unused variable - `node'. - -1999-02-24 Per Bothner - - * check-init.c (check_init): COPYN takes word count, not bit count. - -1999-02-26 Per Bothner - - * typeck.c (convert_ieee_real_to_integer): Use save_expr instead of - explicit build_decl. (Avoids crash in reload when optimizing.) - -1999-02-25 Per Bothner - - * decl.c (complete_start_java_method): Handle synchronized method - even when compiling from bytecode. - -1999-02-26 Tom Tromey - - * gjavah.c (add_class_decl): Only generate `#include' if outer - class is not the name of the class we are processing. Correctly - append `.h' in #include. - (process_file): Clean up newlines around generated `#include's. - (decode_signature_piece): Correctly handle inner classes. - (struct include): New structure. - (all_includes): New global. - (print_include): New function. - (add_class_decl): Use it. - (process_file): Likewise. - (add_class_decl): Generate include for java-array.h if array - seen. - (process_file): Don't generate java-array.h include. - - * gjavah.c (add_namelet): Check for standard package names here. - (add_class_decl): Don't check for standard package names here. - -1999-02-25 Tom Tromey - - * parse.y (read_import_dir): Use `|=', not `+=', to set `found'. - When reading a zip file, only use strncmp if both strings are - bigger than the buffer length. Initialize `k' when looping - through zip file. - -1999-02-24 Tom Tromey - - * gjavah.c (struct namelet): New structure. - (add_namelet): New function. - (print_namelet): New function. - (print_class_decls): Use add_namelet and print_namelet to generate - namespaces and not classes. - (method_printed): New global. - (HANDLE_END_METHOD): Examine method_printed. - (print_method_info): Set method_printed when required. Print - error if function to be ignored is marked virtual. Handle $finit$ - method. - (METHOD_IS_FINAL): New macro. - (print_field_info): Use it. - (HANDLE_METHOD): Clear method_printed. - (method_pass): New global. - (HANDLE_END_FIELD): Call add_class_decl on the first pass. - (process_file): Do two passes over both fields and methods. - (HANDLE_METHOD): Examine method_pass. - (root): New global. - (add_class_decl): New function. - (print_class_decls): Don't scan over entire constant pool. - -1999-02-23 Tom Tromey - - * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and - disable linking in that case. - -1999-02-20 Tom Tromey - - * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f, - not 0x1f. - -1999-02-21 Per Bothner - - * decl.c (build_result_decl), java-tree.h: New method. - (complete_start_java_method): Handle synchronized methods. - Don't build DECL_RESULT here. (Ordering dependency problem.) - (start_java_method): Call build_result_decl here instead ... - * parse.y (java_complete_expand_method): ... and here. - (expand_start_java_method): Don't call complete_start_java_method here. - (java_complete_expand_method): Call it here instead. - * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Moved to .. - * java-tree.h: ... here. - - * expr.c (force_evaluation_order): Fix typo, don't handle ARRAY_REF. - * parse.y (java_complete_lhs): Don't call force_evaluation_order - for ARRAY_REF - it doesn't work when array bounds are checked. - (patch_array_ref): Handle it here instead. - - * jcf-write.c (generate_classfile): Emit "Exceptions" attribute. - -1999-02-19 Per Bothner - - Force left-to-right evaluation of binary operations etc. - * expr.c (force_evaluation_order), java-tree.h: New function. - * parse.y (java_complete_lhs): Pass binary operations, procedure - calls, and ARRAY_REFs to force_evaluation_order. - (various): Set TREE_SIDE_EFFECTS more carefully. - - Tolerate random (non-UTF8) encoding in comments without complaining. - * lex.c (java_read_char): Return 0xFFFE if bad UTF8 encoding. - (java_is_eol): Handle '\r' followed by '\n' instead of vice versa. - - * parse.y (resolve_qualified_expression_name): Handle error_mark. - (java_complete_node case EXPR_WITH_FILE_LOCATION): Likewise. - - * parse.y (java_complete_lhs): Ignore an empty statement in a - COMPOUND_EXPR. Don't complain about empty statement after return. - -1999-02-19 Per Bothner - - * parse.y (obtain_incomplete_type): Don't wrap unknown types - in TREE_LIST - just chain the POINTER_TYPEs together. - (resolve_class): If type already resolved, return decl. - After resolving, update TREE_TYPE(class_type), and name (if array). - * parse.h (do_resolve_class), parse.y: Make non-static. - * class.c (maybe_layout_super_class): Take this_class argument. - Do do_resolve_class if necessary. - (layout_class, layout_class_methods): Adjust calls appropriately. - * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED, - JDEP_RESOLVED_P): Redefined for new TREE_LIST-less convention. - * typeck.c (build_java_array_type): Don't call layout_class. - -1999-02-17 Alexandre Petit-Bianco - - * parse.y (check_pkg_class_access): Allow private class access - within the same package. - (strip_out_static_field_access_decl): New function. - (patch_unaryop): Call strip_out_static_field_access_decl on ++/-- - operator argument before testing its nature. - -1999-02-03 Per Bothner - - * java-tree.def (FINALLY_EXPR): Removed. (Now uses TRY_FINALLY_EXPR.) - (TRY_EXPR): Simplify - it no longer has a finally clause. - * check-init.c (check_init): Handle TRY_FINALLY_EXPR. - Simpler handling of TRY_EXPR, which no longer has a finally clause. - * expr.c (java_lang_expand_expr): Likewise. - * java-tree.h (CATCH_EXPR_GET_EXPR): Removed - no longer needed. - * parse.h (java_get_catch_block), parse.y: Removed - no longer needed. - * parse.y (java_complete_lhs): Add support for TRY_FIANLLY_EXPR. - (build_try_statement): Remove finally parameter and handling. - (build_try_finally_statement): New function. - (patch_try_statement): No longer need to support finally clause. - (try_statement): Update grammar action rules. - * jcf-write.c (generate_bytecode_insns): Handle TRY_FINALLY_EXPR. - Simpler handling of TRY_EXPR, which no longer has a finally clause. - -1998-11-26 Andrew Haley - - * jcf-parse.c (get_constant): Add braces around computation of 'd' - when REAL_ARITHMETIC is not defined. [Oct 26 fix got overwritten -PB] - -1999-02-17 Andrew Haley - - * class.c (build_utf8_ref): Back out broken patch which was - intended to to output signatures using '.' as a separator. - - * class.c (make_class_data): Output signatures using '.' as a - separator, rather than '/'. - (mangled_classname): Likewise. - (make_field_value): Likewise. - (make_method_value): Likewise. - * constants.c (alloc_class_constant): Likewise. - * expr.c (build_invokeinterface): Likewise. - -1999-02-11 Alexandre Petit-Bianco - - * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid - of an ancient workaround. - -1999-02-10 Jeffrey A Law (law@cygnus.com) - - * jvspec.c (xmalloc): Kill the prototype. It does not belong - here anymore. - -1999-02-10 Alexandre Petit-Bianco - - * lex.c (yylex): Encode \0 as UTF8. - -1999-02-10 Tom Tromey - - * jvspec.c (lang_specific_driver): Use libgcj, not libjava. - * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE. - (libgcj_zip): Renamed. - * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not - LIBJAVA_ZIP_FILE. - (jcf_path_init): Use LIBGCJ_ZIP_FILE. - - * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop. - (GC_NAME): Renamed -lgc to -lgcjgc. - -1999-02-09 Alexandre Petit-Bianco - - * lex.c (java_lang_cloneable): Initialize. - * parse.y (java_lang_cloneable): New static variable. - (qualify_ambiguous_name): Take CONVERT_EXPR into account when - doing one more qualification round. - (valid_ref_assignconv_cast_p): Reject null source or - destination. Allow an array to be cast into java.lang.Cloneable. - (patch_cast): Swapped two first arguments to first call to - valid_ref_assignconv_cast_p. - -1999-02-08 Alexandre Petit-Bianco - - * parse.h: DECL_P renamed JDECL_P. - * parse.y: DECL_P replaced by JDECL_P. - (build_array_from_name): Always use pointer's type. - (patch_bc_statement): Extra code to search continue target in a - for loop. Fixed comments. Continue target is current loop when - unlabeled. - -1999-02-05 Andrew Haley - - * class.c (make_class_data): The superclass of an interface should - be null, not class Object. - - * lex.c (java_lex): Sign extend hex literals. - -1999-02-04 Andrew Haley - - * class.c (build_utf8_ref): Output signatures using '.' as a - separator, rather than '/'. - (make_class_data): Likewise. - -1999-02-03 Marc Espie - - * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and - mkstemp.o. Get them from libiberty now. - -1999-02-02 Jeffrey A Law (law@cygnus.com) - - * jcf-io.c: Do not include sys/stat.h or sys/wait.h - -1999-02-02 Kaveh R. Ghazi - - * jvspec.c (xmalloc): Fix the prototype to match the one obtained - from libiberty.h - -1999-02-02 Per Bothner - - Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'. - * jcf-write.c (generate_bytecode_return): New function. - (generate_bytecode_insns): Use it, for RETURN_EXPR. - - * jcf-write.c (generate_bytecode_insns): For REAL_CST that is 0 or 1, - generate special [fd]const_[01] instructions. - - * jcf-parse.c (yyparse): Don't emit_register_classes if -fsyntax-only. - - * verify.c (verify_jvm_instructions): Do INVALIDATE_PC after - handling OPCODE_lookupswitch or OPCODE_tableswitch. - -1999-02-01 Per Bothner - - * parse.y (patch_method_invocation): Handle calling static methods, - even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS). - - * parse.y (java_complete_lhs): Don't complain about unreachable - exit condition in a do-while statement. - -1999-01-29 Alexandre Petit-Bianco - - * lex.c (java_read_char): Fixed utf8 decoding. - (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff - range. - * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed - comments. Local variable `all_primitive' is gone. Broadened - acceptance of `0' to floating point targets. `long' can now be - widened to `double' or `float'. - (valid_method_invocation_conversion_p): Added leading - comment. Fixed tabulation. - (build_string_concatenation): Optimize out left or right empty - string constants. - -1999-01-28 Per Bothner - - * jcf-write.c (localvar_alloc): Only emit entry for - LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE. - (generate_bytecode_insns): Only call put_linenumber if - debug_info_level > DINFO_LEVEL_NONE. - * jvspec.c (lang_specific_driver): If no -O* or -g* option - is specified, add -g1 (for compatibility wih javac). - -1999-01-28 Hans-Peter Nilsson - - * java/Makefile.in: Add missing dependencies for jcf-dump.o, - gjavah.o, check-init.o, jv-scan.o - -1999-02-01 Kaveh R. Ghazi - - * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h. - - * gjavah.c: Include config.h and system.h. - - * javaop.h (inline): Don't define, its handled by system.h. - (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these - from `inline' to `static inline'. - - * jcf.h (inline): Don't define, its handled by system.h. - - * lex.c (inline): Likewise. - -1999-01-31 Zack Weinberg - - * lang-specs.h: Map -Qn to -fno-ident. - -1999-01-29 Richard Henderson - - * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo. - -1999-01-29 Tom Tromey - - * parse.h (BUILD_APPEND): If ARG is a non-String object reference, - then cast it to Object before calling `append' method. - -1999-01-28 Per Bothner - - * check-init.c (check_bool2_init, check_bool_init, check_init): - Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR. - * jcf-write.c (generate_bytecode_insns): Likewise. - -1999-01-28 Alexandre Petit-Bianco - - * jcf-parse.c (jcf_parse): Don't parse the same class file twice. - * parse.y (patch_cast): Allow a boolean to be cast into a - boolean. - -1999-01-27 Alexandre Petit-Bianco - - * parse.y: (class_declaration:): Fixed indentation. - (class_member_declaration:): Extra `;' after field declaration now - accepted. - (interface_declaration:): Removed debug messages in error reports. - (patch_binop): Nodes created and returned inherit the orignal - node's COMPOUND_ASSIGN_P flag value. - (patch_cast): Fix cast from char to floating point. - -1999-01-25 Andrew Haley - - * except.c, java-except.h (expand_resume_after_catch): new - function. - * expr.c (java_lang_expand_expr): call expand_resume_after_catch - to branch back to main flow of control after a catch block. - -1999-01-23 Kaveh R. Ghazi - - * Makefile.in (parse.o): Depend on $(CONFIG_H) and - $(srcdir)/../system.h. - (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h. - (jcf-parse.o): Depend on $(srcdir)/../toplev.h. - (jcf-write.o): Likewise. - (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. - (mangle.o): Depend on $(srcdir)/../toplev.h. - (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. - (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. - - * class.c: Include output.h and parse.h. - (mangled_classname): Add the `const' keyword to a char*. - (find_named_method): Hide unused function definition. - (build_utf8_ref): Change type of variable `c' to unsigned char. - Use ISALPHA/ISDIGIT instead of isalpha/isdigit. - (build_class_ref): Add the `const' keyword to a char*. - (layout_class_method): Remove unused variable `buf'. - - * decl.c (find_local_variable): Remove unused variable `rtl'. - (pushdecl): Likewise for variables `different_binding_level' and - `oldglobal'. - (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED. - (maybe_build_cleanup): Likewise for parameter `decl'. - - * except.c (expand_start_java_handler): Mark parameter `range' - with ATTRIBUTE_UNUSED. - - * expr.c: Include except.h. - (pop_type): Remove unused variable `i'. - (pop_value): Likewise for variables `n_words' and `i'. - (expand_java_arrayload): Likewise for variable `convert'. - (java_lang_expand_expr): Likewise for variables `op0', `type', - `mode', `unsignedp', `node' and `elements'. - (expand_byte_code): Likewise for variables `prev_eh_ranges' and - `eh_ranges'. - (process_jvm_instruction): Add a `const' qualifier to a char*. - - * gjavah.c (output_directory): Add the `const' keyword to a char*. - (temp_directory): Likewise. - (print_c_decl): Likewise. - (print_method_info): Likewise. - (decode_signature_piece): Likewise. - (print_mangled_classname): Likewise. - - * java-except.h: Provide prototypes for maybe_start_try, - maybe_end_try and add_handler. - - * java-tree.h (mangled_classname): Add the `const' keyword to a char*. - (parse_error_context): Likewise. Also add ATTRIBUTE_PRINTF_2. - (pushdecl_top_level, alloc_class_constant, unicode_mangling_length, - init_expr_processing, push_super_field, init_class_processing, - can_widen_reference_to, class_depth, verify_jvm_instructions, - maybe_pushlevels, maybe_poplevels, process_jvm_instruction, - set_local_type, merge_type_state, push_type, load_type_state, - add_interface, find_in_current_zip, append_gpp_mangled_classtype, - emit_unicode_mangled_name): Add prototypes. - - * jcf-dump.c (print_constant): Add the `const' keyword to a char*. - (print_signature_type): Use ISDIGIT, not isdigit. - (print_signature): Remove unused variable `j'. - - * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to - int when comparing against one. - - * jcf-parse.c: Include toplev.h. - - * jcf-write.c: Likewise. Don't include or . - (localvar_free): Remove unused variable `i'. - (generate_bytecode_conditional): Likewise for variable `kind'. - - * jv-scan.c: Include config.h and system.h. Remove redundant - OS header and gansidecl.h includes. - (warning): Add the `const' keyword to a char*. Also add - ATTRIBUTE_PRINTF_1 to the prototype. Check ANSI_PROTOTYPES, not - __STDC__, when determining whether to use ANSI-isms. - (fatal): Likewise. Also add ATTRIBUTE_UNUSED. - (xmalloc): Don't redundantly prototype here. - (main): Remove unused parameter `envp'. Also fix the arguments - passed to function `fatal' to match the format specifier. - - * lang.c (java_tree_code_name): Add the `const' keyword to a char*. - - * mangle.c: Include toplev.h. - (emit_unicode_mangled_name): Declare parameter `len'. - - * parse.y (parse_warning_context): Add the `const' keyword to a - char*. Also add ATTRIBUTE_PRINTF_2 to the prototype. Check - `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms. - (issue_warning_error_from_context): Add the `const' keyword to - a char*. - (parse_error_context): Likewise. Also check `ANSI_PROTOTYPES' - not `__STDC__' for whether to use ANSI-isms. - - * typeck.c (incomplete_type_error): Mark parameters `value' and - `type' with ATTRIBUTE_UNUSED. - (parse_signature_type): Use ISDIGIT, not isdigit. - - * verify.c (check_pending_block): Add the `const' keyword to a char*. - (verify_jvm_instructions): Likewise. Remove unused variables - `field_name' and `default_val'. - - * zextract.c: Include config.h and system.h. Remove redundant - OS header includes. - - * zipfile.h: Prototype `read_zip_archive'. - -1999-01-21 Andrew Haley - - * typeck.c (convert): Allow conversions to void type: some - optimizations in gcc do this. - -1999-01-21 Andrew Haley - - * typeck.c (convert_ieee_real_to_integer): New function. - (convert): When not using fast-math and using hardware fp, convert - an IEEE NaN to zero. - -1999-01-18 Andrew Haley - - * parse.y (patch_binop): Do a type conversion from signed to - unsigned and then back to signed when a ">>>" is found. - -1999-01-17 Alexandre Petit-Bianco - - * java-tree.h: (check_for_initialization): Added prototype. - * lex.c (java_parse_doc_section): `\n' breaks the `*/' string. - * parse.y (do_resolve_class): Removed unused locals. - (read_import_dir): Likewise. - (resolve_qualified_expression_name): Array creation - expressions are valid primary expressions. - (qualify_ambiguous_name): Likewise. - (patch_synchronized_statement): Removed unused local. - -1999-01-17 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (zextract.o): Add dependencies. - - * Makefile.in: Do not put ^Ls at the start of a line. - -1999-01-15 Per Bothner - - * expr.c (process_jvm_instruction): Coerce to correct Throwable - sub-type the result of the call that gets the exception value. - - * parse.y (java_complete_expand_methods): If flags_syntax_only, - don't call finish_class. - - * parse.y (java_check_regular_methods): If METHOD_PRIVATE, - clear found before continuing. - - * verify.c (verify_jvm_instructions): On an array load, allow - and handle top of stack to be TYPE_NULL. - - * gjavah.c (generate_access): Translate Java package private or - protected access to C++ public, but with a comment. - -1999-01-13 Andrew Haley - - * expr.c (generate_name): Name prefix changed to avoid clashes - with assembler temp labels. - - * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on - MODIFY_EXPR. Without this, code for the assignment may not be - generated at all and the synchronized statement will read an - uninitialized variable. - -1999-01-13 Alexandre Petit-Bianco - - * class.c (maybe_layout_super_class): Fixed returned value. - * lex.c: Added 1999 to the copyright. - (java_init_lex): Initialize java_lang_imported. - * lex.h: Added 1999 to the copyright. - * parse.h: Added 1999 to the copyright. - (REGISTER_IMPORT): Fixed typo in trailing macro. - (CURRENT_OSB): New macro. - (struct parser_ctxt): New fields osb_depth, osb_limit. - * parse.y (java_lang_id): New global variable. - (type_import_on_demand_declaration): Don't import java.lang.* twice. - (array_creation_expression:): Use CURRENT_OSB. - (dims:): Uses a stack to keep track of array dimensions. - (cast_expression:): Use CURRENT_OSB. - (find_expr_with_wfl): Return NULL if node found doesn't meet the - conditions. - (register_fields): Fixed typos in comment. - (check_method_redefinition): Fixed comment indentation. - (java_check_regular_methods): Set saved found wfl to NULL after - having reinstalled it in the previously found DECL_NAME. - -1999-01-10 Richard Henderson - - * gjavah.c (java_float_finite): Use a union to do type punning. - (java_double_finite): Likewise. - -1999-01-09 Per Bothner - - * parse.y (build_new_array_init): Don't set EXPR_WFL_LINECOL - on CONSTRUCTOR (since that trashes TREE_CST_RTL). - (patch_new_array_init): Clear TREE_CONSTANT also if INDIRECT_REF. - (register_fields): Set TREE_STATIC on NEW_ARRAY_INIT, not on - CONSTRUCTOR (which causes expand_expr to call output_constant_def). - * expr.c (java_lang_expand_expr): Check TREE_STATIC of NEW_ARRAY_INIT. - -1999-01-08 Per Bothner - - * check-init.c (check_init): If compiling to native, we don't - see THROW_EXPR. Instead, look for a call to throw_node (_Jv_Throw). - -1999-01-08 Tom Tromey - - * parse-scan.y (variable_declarator_id): Set or increment - bracket_count. - (bracket_count): New global. - (formal_parameter): Handle case where bracket pairs trail variable - declarator id. - -1999-01-07 Andrew Haley - - * jcf-parse.c (yyparse): variable len changed from a char to an - int to prevent overflow. - -1999-01-06 Per Bothner - - * java-tree.h: Declare read_class. - * jcf-parse.c (read_class): New function. - (load_class): Now just call read_class. - - * java-tree.h (java_parse_abort_on_error): Only return if new errors. - * jcf-parse.c (parse_source_file): Declare save_error_count, - which is needed by java_parse_abort_on_error macro, - * parse.y (java_layout_classes, java_expand_classes): Likewise. - - * parse.y (register_fields): Set TREE_STATIC flag of NEW_ARRAY_INIT - constructor, if initializing a static field. - (patch_new_array_init): Set TREE_CONSTANT if it is. - * expr.c (java_lang_expand_expr): For a static array constructor - of primitive elements, allocate the array itself statically. - Disabled until we can set the vtable field statically. - - * check-init.c: New file. Checks for definite assignment. - * Makefile.in (JAVA_OBJS): Add check-init.o. - * parse.y (java_complete_expand_method): Call check_for_initialization. - * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY): Moved to java-tree.h. - -1999-01-06 Graham - - * parse.y : include system.h instead of including - standard headers directly with the exception of . - -1999-01-06 Per Bothner - - * lex.h: Moved static function declarations to lex.c, - to shut up some -Wall warnings. - * lex.c: Static function declarations moved here. - * jcf-dump.c: Small fixes to shut up -Wall warnings. - -1999-01-05 Kaveh R. Ghazi - - * Make-lang.in ($(GCJ).o): Depend on prefix.h. - -1998-12-22 Per Bothner - - * expr.c (process_jvm_instruction): Do load_type_state after JSR. - * verify.c (verify_jvm_instructions): Fix off-by-one error. - - * jcf-write.c (CHECK_PUT): Add (void) cast to avoid -Wall warnings. - (localvar_alloc): Change return type to void, - (emit_unop): Remove unused variable size. - - * jcf-write.c (struct jcf_block): Add new union. - (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC): New macros. - (call_cleanups): New functions. - (struct jcf_partial): New fields num_finalizers and return_value_decl. - (generate_bytecode_insns): Support CLEANUP_POINT_EXPR and - WITH_CLEANUP_EXPR. Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR. - * lang.c (lang_init): Call using_eh_for_cleanups. - * parse.y (java_complete_lhs): For SYNCHRONIZED_EXPR, defer - completing operands to patch_synchronized_statement. - Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR. - (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and - WITH_CLEANUP_EXPR instead of TRY_EXPR. - -1998-12-20 John F. Carr - - * Make-lang.in: Comment out control-Ls; they upset some makes. - -1998-12-18 Tom Tromey - - * parse.y (check_class_interface_creation): Use DIR_SEPARATOR - consistently. - -1998-12-17 Tom Tromey - - * parse.y (DIR_SEPARATOR): New define. - (check_class_interface_creation): Use it. - - * parse-scan.y (report_main_declaration): Recognize - `java.lang.String' in argument to main. - -1998-12-16 Per Bothner - - * parse.y (create_interface): Remove bogus test. - -1998-12-16 Per Bothner - - * jcf-parse.c (get_constant): Set TREE_TYPE for string constants. - (HANDLE_CONSTANTVALUE): If flag_emit_class_files, call get_constant. - -1998-12-16 Tom Tromey - - * parse-scan.y (qualified_name): Use correct sprintf format. - -1998-12-15 Tom Tromey - - * gjavah.c (print_field_info): Changed how most negative number is - printed. - -1998-12-14 Per Bothner - - * parse.y (fold_constant_for_init): New function. - (resolve_expression_name): Don't replace static final - constant-initialized fields by its value. - (java_complete_lhs): New. Same as java_complete_tree, except does - not replace static final constant-initialized fields by their values. - (register_fields): If there is an initializer, set DECL_INITIAL and - MODIFY_EXPR_FROM_INITIALIZATION_P. - (java_complete_tree): For MODIFY_EXPR, use java_complete_lhs for lhs. - Only call patch_initialized_static_field if - MODIFY_EXPR_FROM_INITIALIZATION_P. - (patch_initialized_static_field): If not valid constant, clear - DECL_INITIAL. - - * parse.y (lookup_field_wrapper): Fix thinko. - - * parse.y (java_complete_tree): In EXPR_WITH_FILE_LOCATION, - set and restore global lineno. - -1998-12-14 Tom Tromey - - * gjavah.c (print_field_info): If value to print is the smallest - value of its size, then print as hex to avoid later warnings from - C++ compiler. - -1998-12-14 Tom Tromey - - * gjavah.c (decompile_method): Decompile `return null'. - (process_file): Generate `#pragma interface'. - (method_declared): New global. - (print_method_info): Set it. - (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set. - (print_method_info): Handle abstract methods. - -1998-12-13 Per Bothner - - * parse.y (patch_method_invocation): If class_decl is null - (e.g. an array type), use original type. - - * parse.y (check_thrown_exceptions): Temporary hack to suppress - errors about uncaught exception from clone (of array, specifically). - -1998-12-13 Tom Tromey - - * gjavah.c (decompile_method): Handle all types of `return' - opcode. Decompile `return this' and `return'. - (method_access): New global. - (print_method_info): Set it. - (decompile_method): Don't decompile a synchronized method. - -1998-12-13 Tom Tromey - - * jcf-reader.c (jcf_parse_one_method): Recognize - HANDLE_END_METHOD. - * gjavah.c (HANDLE_END_METHOD): New macro. - (HANDLE_CODE_ATTRIBUTE): New macro. - (decompile_method): New function. - (print_method_info): Don't print `;\n' at end of function decl. - Include java-opcodes.h. - (decompiled): New global. - -1998-12-12 Per Bothner - - * class.c (build_class_ref): Handle PRIMTYPE.class if - flag_emit_class_files. - * expr.c (expand_java_field_op): Don't optimize java.lang.XXX.TYPE - if flag_emit_class_files. - * parse.y (java_complete_tree): Pre-liminary support for - COMPONENT_REF - only to handle PRIMCLASS.TYPE. - - * parse.y (patch_synchronized_statement): Don't call monitorexit - unless block CAN_COMPLETE_NORMALLY. Propagate that flag properly. - - * java-tree.h (DECL_LOCAL_STATIC_VALUE): Removed - no longer used. - - * zipfile.h (opendir_in_zip): New declaration. - * jcf-io.c (saw_java_source): Moved to jcf-parse.c. - (opendir_in_zip): New function, using code from open_in_zip. - (open_in_zip): Call opendir_in_zip. - (find_class): Remove no-longer-used do_class_file parameter, - but add source_ok parameter. Change logic so if we find a .java file, - we don't look for .class in later classpath emtries. - * jcf-parse.c (load_class): Pass saw_java_source to find_class. - (jcf_figure_file_type): Only call open_in_zip if correct magic number. - * gjavah.c: Update call to find_class. - * jcf-dump.c: Likewise. - - * jcf-write.c (put_linenumber): Handle duplicate line numbers. - (generate_bytecode_insns): For EXPR_WITH_FILE_LOCATION, do - nothing if body is empty_stmt_node. - Various little fixes so SP gets correctly adjusted. - For NEW_ARRAY_INIT, handle IGNORE_TARGET. - For CALL_EXPR, test if static first. - (generate_classfile): Ignore fields that are DECL_ARTIFICIAL, - such as the ones we create for Object and Class. - Set and restore current_function_decl. - * parse.y: Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir. - (note_possible_classname): New function. - (read_import_entry): Removed. Merged with read_import_dir. - (read_import_dir): Don't call find_class - that only gives us - the first classpath entry having the needed package. - Use the struct buffer data structure from buffer.h. - (read_import_dir, find_in_imports_on_demand): The remembered - class names now use '.' (not '/') as package separator. - - * parse.y (java_complete_expand_methods): Call write_classfile - here, and not in java_expand_classes (which only gets first class). - -1998-12-12 Alexandre Petit-Bianco - - * parse.y (): Do maybe_generate_clinit last. - (register_fields): If a static fields has an initializer, just - chain it on ctxp->static_initialized, and handle later. - (java_complete_expand_methods): Force first. - (resolve_expression_name, resolve_field_access): Just get DECL_INITIAL - - it's already been completed. - (patch_initialized_static_field): New function. - (java_complete_field): Call it. - -1998-12-12 Per Bothner - - * expr.c (encode_newarray_type, build_new_array): New functions. - * java-tree.h: Declare build_new_array. - * jcf-write.c (patch_newarray): Use build_new_array. - - * expr.c (java_lang_expand_exp): Support NEW_ARRAY_INIT. - * jcf-write.c (generate_bytecode_insns): Support NEW_ARRAY_INIT. - - * parse.y (patch_new_array_init): Re-organize. - Now is passed the actual array (pointer) type of the value. - Set the type of the CONSTRUCTOR to be an ARRAY_TYPE. - (patch_array_constructor): Removed - merged into patch_new_array_init. - (java_complete_tree): Update patch_new_array_init. - - * jcf-write.c (find_constant_index): New function. - (generate_bytecode_insns): Use find_constant_index. - (generate_classfile): Use find_constant_index for ConstantValue. - -1998-12-11 Tom Tromey - - * expr.c (invoke_build_dtable): Renamed dtable -> vtable. - * decl.c (init_decl_processing): Renamed dtable -> vtable. - * class.c (make_class_data): Renamed dtable -> vtable, and - dtable_method_count -> vtable_method_count. - -1998-12-10 Alexandre Petit-Bianco - - * decl.c (long_zero_node, float_zero_node, double_zero_node): New - global variables, initialized. - * java-tree.h (long_zero_node, float_zero_node, double_zero_node): - Declared new global variables. - * lex.c (java_lex): Return long_zero_node, float_zero_node, - double_zero_node, integer_zero_node upon direct matching. - * parse.y (purify_type_name): Added function prototype. - (duplicate_declaration_error_p): Consider new_type as potentially - being a incomplete type. Use purify_type_name on type string. - (method_header): saved_type: unused variable removed. Don't figure - return type if method name is invalid. - (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was - processed by patch_unaryop. - (patch_unaryop): Fixed typo in comment. Re-convert pre/post - increment/decrement node into its original type after binary - numeric promotion on its operands. - -1998-12-10 Alexandre Petit-Bianco - - * parse.y (array_initializer:): Array init operand is NULL_TREE - instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is - now an error. Fixed indentation problems. - (patch_string): Handle error_mark_node as an argument. - (patch_new_array_init): Fixed indentation problems. - (array_constructor_check_entry): Removed check on null wfl_value. - Return an error if wfl_value's walk returns an error. - -1998-12-09 Alexandre Petit-Bianco - - * java-tree.def (NEW_ARRAY_INIT): New Java tree code. - * lex.c (java_lex): Remember column position before advancing one - token. Retain location information on OCB_TK. - * lex.h (typedef struct java_lc): Added new field. - * parse.h (GET_SKIP_TYPE): New macro. - (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE. - * parse.y (build_new_array_init, patch_new_array_init, - patch_array_constructor, maybe_build_array_element_wfl, - array_constructor_check_entry): New function prototypes. - (switch_block:): Tagged . - (OCB_TK): Tagged . - (array_initializer:): Installed actions. - (variable_initializer): Build location information on element if - necessary. - (switch_statement:): Fixed indentation typo. - (switch_block:): Redefined default action. - (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:. - (patch_assignment): Removed duplicate code. - (maybe_build_array_element_wfl, build_new_array_init, - patch_new_array_init, patch_array_constructor, - array_constructor_check_entry): New functions. - -1998-12-07 Alexandre Petit-Bianco - - * parse.y (array_initializer): Tagged . - (variable_initializer:): Use default rule. - (array_initializer:): Defined actions. - (variable_initializers:): Likewise. - (resolve_qualified_expression_name): Use DECL_CONTEXT to build - non-static field accesses. - (patch_invoke): Fixed indentation typo. - (java_complete_tree): Likewise. - (build_labeled_block): Changed leading comment. Generate an error - in case of duplicate loop labels. - (patch_conditional_expr): Patch results of string concatenation - operations. - -1998-12-06 Per Bothner - - * constants.c (find_methodref_index): When the class is an interface, - generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef. - - * decl.c (finit_identifier_node): Use "$finit$", rather than - "" (which Sun's verifier rejects). - * parse.y (maybe_generate_finit): Leave out meaningless final flag. - (generate_field_initialization_code): Removed. - (fix_constructors) Don't add call to $finit$ here (wrong order). - (patch_method_invocation): Add $finit$ call here. - - * java-tree.h (CALL_USING_SUPER): New macro. - * parse.y (patch_invoke): Remove im local variable. - (patch_method_invocation, patch_invoke): Don't pass super parameter. - (patch_invoke): Use CALL_USING_SUPER instead of from_super parameter. - (resolve_qualified_expression_name): Maybe set CALL_USING_SUPER. - - * jcf-write.c (get_access_flags): Fix typo ACC_PUBLIC -> ACC_FINAL. - - * parse.y (java_complete_tree): Don't complain about unreachable - statement if it is empty_stmt_node. - - * jcf-write.c (find_constant_wide): New function. - (push_long_const): Use find_constant_wide. - - * jcf-write.c (generate_bytecode_insn): Fix bug in switch handling. - (generate_bytecode_insn): Use correct dup variant for MODIFY_EXPR. - Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set. - Emit invokeinterface when calling an interface method. - Emit invokespecial also when calling super or private methods. - - * jcf-write.c (generate_classfile): Emit ConstantValue attributes. - -1998-12-06 Per Bothner - - * jcf-dump.c (INVOKE): If invokeinterface, print number of args. - -1998-12-03 Alexandre Petit-Bianco - - * java-tree.h (java_layout_seen_class_methods): New function - prototype. - (LAYOUT_SEEN_CLASS_METHODS): Macro removed. - * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods. - * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro. - * parse.y (method_declarator:): Defined action. - (issue_warning_error_from_context): input_filename saved, set to - the appropriate value and restored after java_error is called. - (build_unresolved_array_type): Fixed comment. - (register_fields): Use PROMOTE_RECORD_IF_COMPLETE. - (method_header): Deal with return type the same way type are - handled for fields and method's parameters and local variables - types are handled. - (check_method_redefinition): Removed extra CR. - (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE. - (java_layout_seen_class_methods): New function. - (java_layout_classes): Call java_layout_seen_class_methods. - -1998-12-03 Per Bothner - - * parse,y (patch_synchronized_statement): Set CAN_COMPLETE_NORMALLY. - -1998-12-03 Per Bothner - - * jcf-dump.c (main): Fix error message. - * jcf-path.c (add_entry): Style fix. - -1998-12-02 Alexandre Petit-Bianco - - * class.c (layout_class_method): Call build_java_argument_signature - on constructors too. - * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE. - (patch_method_invocation): Define a primary when resolving an - expression name. Augmented comment on code checking illegal `this' - usage. Loosened it test by accepting NEW_CLASS_EXPR. - -1998-12-01 Alexandre Petit-Bianco - - * class.c (layout_class_method): Don't report error on non-static - overriding static if the method is private. - * java-tree.h (finish_class): Prototype added. - * lex.c (java_get_line_col): Handle col argument -2 value. - * parse.h: All static method declarations moved to parse.y. - * parse.y: Now contains all static method declarations previously - found in parse.h. - (find_expr_with_wfl, missing_return_error, - unreachable_stmt_error): New functions. - (java_get_real_method_name): Identify constructors bearing class - names in source code compiled classes only. - (java_complete_expand_methods): Call missing_return_error. - (invocation_mode): Private methods invoked as static methods. - (java_complete_tree): Call unreachable_stmt_error. - -1998-12-01 Tom Tromey - - * Makefile.in (+target): Removed. - (+xmake_file): Likewise. - (+tmake_file): Likewise. - (.NOEXPORT): Removed duplicate. - -1998-11-27 Kaveh R. Ghazi - - * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK). - - * jv-scan.c: Fix xmalloc prototype. Provide an xmalloc definition. - - * jvgenmain.c: Remove the xmalloc prototype, we get it from - libiberty.h. Provide an xmalloc definition. - - * jvspec.c: Remove the xmalloc prototype. - - * parse-scan.y: Include config.h and system.h. Don't include - OS headers or gansidecl.h. Don't prototype xmalloc/xstrdup. - Provide an xstrdup definition. - -1998-11-26 Alexandre Oliva - - * jcf-path.c (add_entry): Recognize ".jar" too. - * lang-specs.h: Likewise. - -1998-11-26 Per Bothner - - * jcf-write.c (generate_bytecode_insns): In Call_EXPR, handle - soft_monitorenter_node, soft_monitorexit_node, throw_node. - - * jcf-write.c (generate_bytecode_insns): - Handle pre/post-increment/decrement of long. - - * jcf-write.c (generate_bytecode_insns): - Handle missing exception handler (finally for synchronized). - -1998-11-25 Per Bothner - - * java-tree.h (end_params_node): Declare global. - * decl.c (end_params_node): New global. - (init_decl_processing, start_java_method): Use end_params_node for - end of list of parameter types. Follows correct gcc conventions. - * expr.c (pop_argument_types, pop_arguments): Likewise. - * lang.c (put_decl_node): Likewise. - * typeck.c (various places): Likewise. - * class.y (various places): Likewise. - * parse.y (various places): Likewise. - - * parse.y (java_complete_tree): Move CAN_COMPLETE_NORMALLY. - (build_jump_to_finally): Add missing CAN_COMPLETE_NORMALLY. - - * class.c: Add #include flags.h, remove no-longer needed declaration. - - * class.c (layout_class_method): Remove commented-out code, re-format. - Don't add vtable entry (or index) for private methods. - * expr.c (expand_invoke): A private method is implicitly final. - * class.c (make_class_data): If inlining or optimizing, - skip private methods. - - * class.c (finish_class): New function. Calls existing methods, - but alls emits deferred inline functions. - * jcf-parse.c (parse_class_file): Call finish_class. - * parse.y (java_complete_expand_methods): Likewise. - - * expr.c (build_java_binop): Explicit default, to silence -Wall. - - * expr.c (CHECK_PC_IN_RANGE): Add void cast to kill warnings. - -1998-11-25 Marc Espie - - * jcf-write.c (generate_bytecode_conditional): Fix typo. - -1998-11-24 Per Bothner - - * (generate_classfile): Always write class access flag with - ACC_SUPER set. - -1998-11-24 Alexandre Petit-Bianco - - * class.c (maybe_layout_super_class): New function. - (layout_class): Reorganized. Loop on class methods dispatched into - a new function. Call maybe_layout_super_class. - (layout_class_methods, layout_class_method): New functions. - * expr.c (expand_java_NEW): Call layout_class_methods on loaded - class. - (expand_invoke): Likewise. - * java-tree.h (all_class_list): New global variable declared. - (layout_class_methods, layout_class_method): New function - prototypes. - (LAYOUT_SEEN_CLASS_METHODS): New macro. - * jcf-parse.c (all_class_list): New global variable. - (load_class): Extended what class_or_name can be. Use parser - context mechanism to save globals before calling jcf_parse. - (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P - is set on the file name. - (jcf_parse): Layout class methods when Object is loaded, otherwise - record class in all_class_list for delayed method layout. - (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS. - * lang.c (put_decl_node): Decode into the decl context - class name. - * lex.c (java_allocate_new_line): Use xmalloc. - * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete - pointers, not TREE_LIST elements. - (struct parser_ctxt): Fixed comment indentations, added comments - and reordered some fields. - (java_check_methods): Function prototype removed. - * parse.y (java_push_parser_context): Use xmalloc. - (java_parser_context_restore_global): Pop extra pushed ctxp only - when there's nothing next. - (maybe_create_class_interface_decl): Fixed comment, add new - created class decl to all_class_list. - (method_header): Use GET_REAL_TYPE on argument's types. - (method_declarator): Use GET_REAL_TYPE, change type to the real - type in TREE_LIST dependency node. Build argument list with the - real type. - (create_jdep_list): Use xmalloc. Removed allocation error message. - (obtain_incomplete_type): Fixed leading comment. Broadened - incoming argument meaning. - (register_incomplete_type): Use xmalloc. Removed allocation error - message. - (safe_layout_class): Fixed leading comment. - (jdep_resolve_class): Reversed if statement condition and switch - if and else bodies. - (resolve_and_layout): Fixed leading comment. Broadened incoming - argument meaning. - (complete_class_report_errors): New local variable name, for - clarity. purify_type_name used for all error cases. - (java_get_real_method_name): Stricter check on constructors. - (java_check_regular_methods): Reverse methods list only if not - already laid out. Layout artificial constructor. - (java_check_methods): Deleted. - (source_start_java_method): Obtain incomplete type for patchable - method arguments. - (java_layout_classes): Fixed leading comment. Use - LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else - statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS - before returning. Fixed comments. - (java_expand_classes): Check for errors up front. - (patch_method_invocation): Class to search is resolved and laid - out. - -1998-11-24 Per Bothner - - * expr.c (java_lang_expand_expr): Add missing emit_queue. - - * javaop.h (int8): Removed - not used. - (jbyte): Redefine portably with correct signedness. - - * jcf-write.c (generate_bytecode_insns): Don't free sw_state.cases. - - * jcf-write.c (generate_bytecode_insns): Fix typo - OPCODE_getstatic to OPCODE_getfield. - - * java-tree.def (CASE_EXPR, DEFAULT_EXPR): Kind is 'x', not '1'. - * parse.y (java_complete_tree): For CASE_EXPR and DEFAULT_EXPR, - set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them). - -1998-11-19 Alexandre Petit-Bianco - - * jcf-parse.c (jcf_parse_source): Function returned type is - void. Added prototype. - (jcf_parse): Function returned type is void. - (yyparse): Remove call to fclose on the last parsed file. - - * java-tree.h (jcf_parse): Changed jcf_parse prototype. - -1998-11-18 Alexandre Petit-Bianco - - * class.c (unmangle_classname): Set QUALIFIED_P when appropriate. - (layout_class): Cope with methods featuring WFL in decl names. - * decl.c (unqualified_object_id_node): New global variable, - initialized. - (build_decl_no_layout): Removed. - * expr.c (build_primtype_type_ref): Handle Double. - (java_lang_expand_expr): Fixed indentations. - * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted. - (flag_wall, flag_redundant, flag_not_overriding, - flag_static_local_jdk1_1, unqualified_object_id_node): Global - variable declarations. - (build_decl_no_layout): Removed prototype. - (java_get_real_method_name): Added prototype. - (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P. - (java_parse_abort_on_error): Macro now just returns. - * jcf-parse.c (jcf_parse_source): Check fclose returned - value. Call emit_register_classes if java_report_errors returns - zero. - * lanc.c (flag_wall, flag_redundant, flag_not_overriding, - flag_static_local_jdk1_1): New integer flags. - (lang_decode_option): New flags set here. - * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros. - (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to - the flag_redundant variable. - (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object - when parsing java.lang.Object class. - (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal - NULL_TREE to build. - (resolve_qualified_expression_name): Fixed indentation. - (patch_array_ref): Changed prototype. - (not_initialized_as_it_should_p): Prototype removed. - (java_report_errors): Added function prototype. - * parse.y (formal_parameter:): Changed error message for not yet - supported final parameters. - (class_type_list:): Set both PURPOSE and VALUE of created - TREE_LIST to be class_type. - (primary_no_new_array:): Handle class literals on primitive types. - (parse_warning_context): Reinstalled correct force_error and - do_warning flags setups. - (java_report_errors): Changed prototype. Return java_error_count - value. - (variable_redefinition_error): Consider treating variable type as - a fake pointer. - (create_interface): Warn about redundant abstract modifier if - flag_redundant is set. Changed error message. - (lookup_field_wrapper): Save/restore globals before/after looking - up field. - (duplicate_declaration_error_p): Consider treating declaration - type as a fake pointer. - (register_fields): Extract real type from dependency node. Check - for duplicate field declaration after type adjustment. Use - DECL_INITIAL to store static final initialized values. - (method_header): Extract real function type from dependency node. - (check_abstract_method_header): Use GET_METHOD_NAME. - (obtain_incomplete_type): Layout fake pointer type. - (safe_layout_class): Don't try to check for methods before layout. - (java_complete_class): Don't check for correct throws clause - elements inheritance here. - (resolve_and_layout): Broadened name parameter meaning. - (reset_method_name): Use GET_METHOD_NAME. - (java_get_real_method_name): New function. - (java_check_regular_methods): Don't check methods in - java.lang.Object. Verify lineage of throws clause elements. Use - flag_no_overriding in warning report. - (check_throws_clauses): Don't check if class was from - bytecode. Use IS_UNCHECKED_EXCEPTION_P macro. - (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag. - (declare_local_variables): Use flag_static_local_jdk1_1 to report - warning on unsupported final local variables. Use build_decl - instead of build_decl_no_layout. Get real local variable type from - dependency node. - (source_start_java_method): Get real parameter type from - dependency node. Call build_decl instead of build_decl_no_layout. - (java_layout_classes): Reverse tree and layout type and class as - required. Mark class as loaded when done. - (resolve_field_access): Fixed indentation. Restricted condition - leading to static field access code generation. Set field_type - decl's TREE_TYPE if QUAL_DECL_TYPE not available. - (resolve_qualified_expression_name): Initialize type_found to - null. Handle static field resolved during qualification. Fixed - layout on non primitive field decl types. - (not_accessible_p): Fixed typo in comment. - (patch_method_invocation): Resolve and layout class to search from - type. - (lookup_method_invoke): Keep integer constant 0 as is. Resolve and - layout non primitive type, if necessary. Make method node only to - report errors. - (find_applicable_accessible_methods_list): Consider WFL'ed method - decl names. Fixed indentation. - (argument_types_convertible): Resolve and layout target type if - necessary. - (java_complete_tree): Fixed indentation problems. Rewrote - CALL_EXPR thrown exceptions check. Re-installed further processing - of the assignment in certain cases. - (patch_assignment): Call maybe_build_primttype_type_ref to perform - inlining on class literals. - (valid_builtin_assignconv_identity_widening_p): Cope with constant - 0 literal. - (valid_method_invocation_conversion_p): Likewise. - (patch_string): Temporary disable forbidden use of `this' in - explicit constructor invocations when doing string concatenation - within their scope. - (patch_unaryop): Added comment. Reinstalled code to disable - further check on assignment operation with cast expression RHS. - (patch_switch_statement): Fixed indentation. - (build_try_statement): Call build_decl instead of - build_decl_no_layout. - (patch_synchronized_statement): Likewise. - (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of - IS_UNCHECKED_EXPRESSION_P. - (check_thrown_exceptions_do): Changed leading comment. Resolve and - layout argument exception type. - (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead - of IS_UNCHECKED_EXPRESSION_P. - -1998-11-18 Anthony Green - - * jcf-parse.c (yyparse): Open class file in binary mode. - -1998-11-15 Per Bothner - - * jvgenmain.c: Need to #include "gansidecl.h" (to get PROTO). - - * jcf-write.c (perform_relocations): Move check out one loop. - -1998-11-15 Anthony Green - - * Make-lang.in: Fix reference to srcdir. - * jv-scan.c: Add missing xmalloc prototype. - * jvgenmain.c: Ditto. - -1998-11-15 Per Bothner - - * decl.c (error_mark_node), java-tree.h: New global. - * parse.y: Use empty_stmt_node instead of size_zero_node. - (build_if_else_statement): If missing else, use empty_stmt_node. - - * parse.y (not_initialized_as_it_should_p): Removed, with its callers. - (java_complete_expand_method): Complain if return is missing. - (java_check_regular_methods): Comment out incorrect error check. - (not_accessible_p): Fix incorrect handling of protected methods. - (patch_method_invocation): Pass correct context to not_accessible_p. - (find_applicable_accessible_methods_list): Likewise. - (qualify_ambiguous_name): If ARRAY_REF, it's an expression name. - (java_complete_tree): For CASE_EXPR and DEFAULT_EXPR, set - TREE_TYPE (to void_type_node); otherwise expand_expr crashes. - (patch_if_else_statement): Fix setting of CAN_COMPLETE_NORMALLY. - - * jcf-write.c (CHECK_OP, CHECK_PUT): Add some error checking. - (push_int_const): Remove reundant NOTE_PUSH. - (generate_bytecode_insns - case STRING_CST): Do NOTE_PUSH. - (- case SWITCH_EXPR): Fix code generation bug. - (- case PREDECREMENT_EXPR etc): Remove redundant NOTE_PUSH. - (generate_classfile): More robust for abstract methods. - -1998-11-15 Anthony Green - - * Makefile.in: jv-scan and jvgenmain all require libiberty. - * Make-lang.in: Ditto. - - * jv-scan.c: Remove xmalloc and xstrdup definitions. - * jvgenmain: Ditto. - -1998-11-15 Per Bothner - - * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): New macro. - - * jcf-io.c (find_class): Simpler/cleaner structure fixes a bug. - -1998-11-14 Per Bothner - - Allow uses of interface types to verify. This is not really - type-safe, but it matches what Sun does, and is OK as long as - there are appropriate run-time checks. - * verify.c (merge_types): If merging two interface types, - just set the result to java.lang.Object. - * expr.c (pop_type): Any interface is matches by java.lang.Object. - -1998-11-13 Tom Tromey - - * gjavah.c (main): Handle --output-class-directory argument. - * jvspec.c (lang_specific_driver): Translate `-d' into - -foutput-class-dir. - * jcf.h (jcf_write_base_directory): Declare. - * lang.c (lang_decode_option): Recognize -foutput-class-dir. - * lang-options.h: Mention -foutput-class-dir. - * jcf-write.c (jcf_write_base_directory): New global. - (make_class_file_name): Put generated .class file into `-d' - directory, or into source directory if -d not given. Function now - static. - (write_classfile): Free class file name. Handle case where class - file name is NULL. - (DIR_SEPARATOR): New macro. - Include - - * Makefile.in (prefix): New macro. - -1998-11-12 Per Bothner - - * parse.y (patch_invoke): Do less if flag_emit_class_files. - * expr.c (build_known_method_ref): Don't check flag_emit_class_files - here (done in patch_invoke instead). - (case_identity): Moved here from parse.y. - - * java-tree.h (CAN_COMPLETE_NORMALLY): New macro. - * parse.y (java_complete_tree etc): Maybe set CAN_COMPLETE_NORMALLY. - * parse.y (java_complete_tree): Re-order COMPOUND_EXPR in BLOCK - so they can be efficiently scanned without recursion. - Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR. - * expr.c (java_lang_expand_expr): Expand statements of COMPOUND_EXPR - in BLOCK iteratively, rather than recursively. - - * parse.y (do_unary_numeric_promotion): New function. - (patch_unaryop, patch_binop, patch_array_ref): Use it. - - * parse.y (patch_newarray): Various fixes. - - Re-do handling of switch statements (for proper block scoping). - * parse.y: Add just a single block for the enture switch block, - but don't create any "case blocks". - (group_of_labels): Rmeoved unneeded non-terminal. - CASE_EXPR and DEFAULT_EXPR are added to current block. - * expr.c (java_lang_expand_expr): Inline SWITCH_EXPR here. - Now also need to handle CASE_EXPR and DEFAULT_EXPR. - * java-tree.h (SWITCH_HAS_DEFAULT): New macro. - * parse.y (wfl_operator, print_int_node): Make non-static. - (java_complete_tree): CASE_EXPR and DEFAULT_EXPR are now processed - as part of recursive scan of block. - (java_expand_switch ): Removed - inlined into java_lang_expand_expr. - (patch_switch_statement): Most tests move dinto java_complete_tree. - - * parse.y: Make various production be non-typed (void). - * parse.y (parse_error): Merged into issue_warning_error_from_context. - * parse.y (add_stmt_to_compound): Don't create/change extra node. - (patch_method_invocation_stmt): Renamed to patch_method_invocation. - - * jcf-write.c (struct jcf_handler): New type. - (struct jcf_switch_state): New type. - (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC): New relocation kinds. - (alloc_handler, emit_unop, emit_reloc): New functions. - (adjust_typed_op): Add extra parameter ("max type" offset). - (emit_switch_reloc, emit_case-reloc): New function. - (generate_bytecode_conditional): Handle REAL_TYPE comparisons. - (generate_bytecode_insns): Support REAL_CST, switch statements, - exception handling, method calls, object/array creation, and more. - - * class.c: Remove some unused variables. - * constants.c (find_string_constant): New function. - (count_constant_pool_bytes): Fix to correctly handle wide constants. - * decl.c (complete_start_java_method): Don't _Jv_InitClass - if flag_emit_class_files. - -1998-11-12 Tom Tromey - - * jcf-io.c (find_class): Added explanatory comment. - - * jcf-path.c (add_entry): Look for `.zip' at end of filename. Add - trailing slash to `.zip' entries. - - * jvspec.c (lang_specific_driver): Correctly handle case where - GC_NAME not defined. - -1998-11-11 Tom Tromey - - * jvspec.c (GC_NAME): New define. - (lang_specific_driver): Use GC_NAME. Add GC_NAME to command line - if required. - * Make-lang.in (jvspec.o): Define WITH_GC_. - -1998-11-11 Per Bothner - - * jcf-dump.c (TABLE_SWITCH): Fix typos. - -1998-11-11 Tom Tromey - - * jcf-dump.c (main): Correctly recognize `--'-style long options. - -1998-11-10 Alexandre Petit-Bianco - - * class.c (is_compiled_class): Call safe_layout_class for class - compiled from source. - * conver.h (convert_to_integer, convert_to_real, - convert_to_pointer): Added prototypes. - * decl.c (init_decl_processing): Non longer push the decls of - `methodtable', `constants', `Class', `Field', `dispatchTable' - `jexception' and `Method'. - * expr.c (build_invokeinterface): New function. - (expand_invoke): static variable CLASS_IDENT now in - build_invokeinterface. Use build_invokeinterface. - (expand_java_field_op): Moved code to inline - java.lang.PRIMTYPE.TYPE into a function. - (build_primtype_type_ref): New function. - * java-tree.def (INSTANCEOF_EXPR): New tree code. - * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED, - FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros. - (DECL_CONSTRUCTOR_P): Fixed typo in comment. - (DECL_LOCAL_STATIC_VALUE): New macro. - (build_invokeinterface, build_primtype_type_ref): New function - prototypes. - (java_parse_abort_on_error): Macro rewritten. - * jcf-parse.c (current_method): Add comment to declaration. - (parse_zip_file_entries, process_zip_dir, void parse_source_file): - Function prototypes fixed. - (jcf_parse_source): push/pop parser context. save/restore global. - (parse_source_file): Fixed leading comment. Now take a - IDENTIFIER_NODE as an argument. Doesn't check methods, layout - classes and pop the parser context anymore. - (yyparse): Push parser context, save globals, parse the source - file, restore globals and pop the parser context when processing a - source file. - * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define. - * lex.c (java_parse_doc_section): New function. - (java_lex): Call java_parse_doc_section when appropriate. Build an - operator around INSTANCEOF_TK. - * lex.h (java_lineterminator, java_sprint_unicode, - java_unicode_2_utf8, java_lex_error, java_store_unicode): - Prototypes rewritten. - (java_parse_escape_sequence, java_letter_or_digit_p, - java_parse_doc_section, java_parse_end_comment, java_get_unicode, - java_read_unicode, java_store_unicode, java_read_char, - java_allocate_new_line, java_unget_unicode, java_sneak_unicode): - Added function prototypes. - * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG - define. - (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT): - New macros - (struct parser_ctxt): New fields: deprecated, - current_parsed_class_un, gclass_list. - (fix_method_argument_names, issue_warning_error_from_context, - resolve_package, lookup_package_type): New function prototypes. - (resolve_expression_name): Fixed function prototype. - (find_applicable_accessible_methods_list): Fixed indentation, added - extra argument in prototype. - (check_final_assignment, build_null_of_type, check_deprecation, - check_method_redefinition, reset_method_name, - java_check_regular_methods, java_check_abstract_methods, - maybe_build_primttype_type_ref): New function prototype. - * parse.y (conver.h): Include. - (INSTANCEOF_TK): Tagged . - (single_type_import_declaration): Use REGISTER_IMPORT macro. - (relational_expression:): Build binop for instanceof. - (java_push_parser_context): Remember ctxp->gclass_list across - contexts. - (java_pop_parser_context): Simply return if no context - exists. Remember gclass_list across contexts. - (issue_warning_error_from_context): New function. - (parse_error_context): Don't setup ctxp->elc here. Call - issue_warning_error_from_context instead. - (parse_warning_context): Likewise. - (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL - setup. Link new class/interface to ctxp->gclass_list. - (add_superinterfaces): Register interface as incomplete if not - loaded. - (create_class): Remember class unqualified name in - ctxp->current_parsed_class_un. Check class deprecation. - (register_fields): Check field deprecation. Remember static final - field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part - processing INIT. - (method_header): New local variable ORIG_ARG. Use unqualified - current class name for check on constructor errors. Promote return - type if of record type. Argument list fix moved in - fix_method_argument_names, called here. Check method deprecation. - (fix_method_argument_names): New function. - (method_declarator): Promote record typed arguments. - (safe_layout_class): Check class methods before layout. - (java_complete_class): Compute field layout when patched. - (do_resolve_class): Try to load class after having it renamed - after the package name. - (get_printable_method_name): Use DECL_CONTEXT. - (reset_method_name): New function. - (check_method_redefinition): Use reset_method_name. - (java_check_regular_methods): New local variable - SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method - names for error report. Check for compile-time error when method - found has default (package) access. - (java_check_abstract_methods): Now takes an interface DECL node as - an argument. Also reinstall real name on unchecked - overriding/hiding methods for error report. - (java_check_methods): Fixed leading comment. Get classes to verify - from ctxp->gclass_list. Use CHECK_METHODS macro and set - CLASS_METHOD_CHECKED_P on class verification. - (lookup_java_method2): Get real method name if necessary. - (find_in_imports): Don't check package class access here. - (resolve_package, lookup_package_type): New functions. - (java_layout_classes): Fixed leading comment. Take classes to be - laid out from ctxp->gclass_list. - (java_complete_expand_methods): Don't expand native and abstract - methods. - (java_expand_classes): New function. - (resolve_expression_name): Use additional argument ORIG. Retrieve - values of static final field of primitive types. - (resolve_field_access): Handles static final field of promotive - type. - (resolve_qualified_expression_name): Handle STRING_CST as - primaries and package name resolution. Check deprecation on found - decls. Set where_found and type_found on non static field resolved - during qualification. Layout non primitive field decl types. - (check_deprecation): New function. - (maybe_access_field): Simplified. - (patch_method_invocation_stmt): Local variable CLASS_TYPE - removed. Reverse method's argument when primary is a type. Don't - use CLASS_TYPE to report problems, use IDENTIFIER_WFL - instead. Include abstract class in the list of class searchable - for constructors. Use DECL_CONTEXT of found method for access - checks. Check method deprecation. - (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when - converting arguments. Handle INVOKE_INTERFACE. - (lookup_method_invoke): Search constructor using existing - infrastructure (don't rely on lookup_java_constructor anymore). - (find_applicable_accessible_methods_list): Extra argument flag - LC. Now include constructor in the search. - (qualify_ambiguous_name): Conditional expression are primaries. - (not_initialized_as_it_should_p): static final are always - initialized. - (java_complete_tree): Pass extra NULL argument to - resolve_expression_name. Stricter test to carry on patching - assignments. New case for INSTANCEOF_EXPR. - (complete_function_arguments): Inline PRIMTYPE.TYPE read access. - (check_final_assignment, maybe_build_primttype_type_ref): New - functions. - (patch_assignment): Detect resolved static finals and carry normal - assignment error check on them. Inline PRIMTYPE.TYPE read access. - (try_builtin_assignconv): Access constant 0 on all primitive - types. - (valid_builtin_assignconv_identity_widening_p): Accept identical - types. Accept all promoted type on int type. - (valid_ref_assignconv_cast_p): Accept a null pointer to be - assigned to a reference. - (valid_method_invocation_conversion_p): Accept to check null - pointers. - (build_binop): Merge declaration and initialization of local - variable BINOP. - (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all - numeric types. Improved validity test for qualify operators on - references. - (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR - and PREINCREMENT_EXPR. Also detect resolved static finals of a - primitive type and issue the appropriate error message. - (resolve_type_during_patch): Mark class loaded when resolved. - (patch_cast): Allow null to be cased to reference types. - (build_null_of_type): New function. - (patch_array_ref): Handle array on references correctly. - (patch_return): Removed unused local variable MODIFY. Force - boolean to be returned as integers. Allows null to be returned by - a function returning a reference. - * typeck.c (convert_to_integer, convert_to_real, - convert_to_pointer): Prototypes moved to convert.h - (lookup_argument_method): Use method real name, if necessary. - -1998-10-30 Tom Tromey - - * class.c (build_class_ref): Changed name of primitive classes to - start with `_Jv_'. - - * class.c (make_class_data): Renamed fields: nmethods to - method_count, method_count to dtable_method_count. Always set - `state' field to 0. - * decl.c (init_decl_processing): Likewise. - -1998-10-28 Alexandre Petit-Bianco - - * class.c (layout_class): Don't mangle , produce - __finit instead. Don't verify artificial methods. - * decl.c (finit_identifier_node): New declared global. - (init_decl_processing): finit_identifier_node initialized. - * java-tree.def (CONDITIONAL_EXPR): New Java tree code. - * java-tree.h (finit_identifier_node): Declared as extern. - (struct lang_decl): New field called_constructor. - (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor. - (CLASS_HAS_FINIT_P): New macro. - (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks - explicit constructor invocation. - (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P, - CALL_SUPER_CONSTRUCTOR_P): New macros. - (write_classfile): Added prototype. - * jcf-parse.c (jcf_parse_source): Parse and remember for - generation if the file was seen on the command line. - (parse_source_file): Don't write the class file here. - (yyparse): Loop on files rewritten. Set current_jcf. - (parse_zip_file_entries): Parse class file only if it was found. - * lang.c (init_parse): Don't open command line provided filename - here. - (lang_parse): Don't set main_jcf anymore. - * parse.h (ABSTRAC_CHECK): Capitalized arguments. - (JCONSTRUCTOR_CHECK): New macro. - (JBSC_TYPE_P): New macro. - (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment. - (COMPLETE_CHECK_OP_2): New macro. - (struct parse_ctxt): New field explicit_constructor_p. - (check_class_interface_creation): Fixed prototype indentation. - (patch_method_invocation_stmt): Prototype reflects added argument. - (patch_invoke): Likewise. - (complete_method_declaration, build_super_invocation, - verify_constructor_circularity, - build_this_super_qualified_invocation, get_printable_method_name, - patch_conditional_expr, maybe_generate_finit, fix_constructors, - verify_constructor_super, create_artificial_method, - start_artificial_method_body, end_artificial_method_body, - generate_field_initialization_code): New function prototypes. - * parse.y: Fixed leading comment - (constructor_header:, constructor_body:, block_end:): Rules tagged - . - (type_declaration:): Call maybe_generate_finit. - (method_declaration:): Action for method_body: placed in new - function complete_method_declaration, called here. - (constructor_declaration:): Defined actions. Removed leading - FIXME. - (constructor_header:): New rule with action. - (constructor_body:): Rule rewritten using block_begin: and - block_end:. Defined actions. - (constructor_declarator:, explicit_constructor_invocation:): - Defined actions. - (block:): Use new rules block_begin: block_end:. - (block_begin:, block_end:): New rules and actions. - (block_statements:): Fixed error message for explicit - constructors. - (method_invocation:): Call build_this_super_qualified_invocation - if primary is `this' or `super' was seen. - (conditional_expression:): Action defined. - (extra_ctxp_pushed_p): New static global flag. - (java_parser_context_save_global): Create parser context if - necessary. Use extra_ctxp_pushed_p to remember it. - (java_parser_context_restore_global): Pop extra parser context if - one exists. - (build_array_from_name): Array on primitive types are marked - loaded. - (register_fields): Restore new name in field initializer - expression if type was altered. Non static fields initialized upon - declaration marked initialized. - (maybe_generate_finit): New function. - (maybe_generate_clinit): Use create_artificial_method, - start_artificial_method_body, end_artificial_method_body. Generate - debug info for enclosed initialization statements. - (method_header): Fixed leading comment. Check constructor - flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P - accordingly. - (complete_method_declaration, constructor_circularity_msg, - verify_constructor_circularity): New functions. - (get_printable_method_name): New function. - (check_method_redefinition): Don't rename methods. Fix - declared constructor names. Error message for - constructors modified. - (java_check_regular_methods): Local variable seen_constructor - renamed saw_constructor. Skip verification on constructors. Create - default constructor with create_artificial_method. - (java_check_methods): Removed unnecessary empty line. - (create_artificial_method, start_artificial_method_body, - end_artificial_method_body): New functions. - (java_layout_classes): Changed leading comment. Reverse fields - list if necessary. Always layout java.lang.Object if being - defined. - (java_complete_expand_methods): Verify constructor circularity. - (java_complete_expand_method): Call fix_constructor on - constructors. Local variable no_ac_found removed. Restore - bindings if method body expansion failed. - (fix_constructors, verify_constructor_super, - generate_field_initialization_code): New function. - (java_expand_classes): Fixed leading comment. Write class file - here. - (resolve_expression_name): Check for illegal instance variable - usage within the argument scope of an explicit constructor - invocation. - (resolve_qualified_expression_name): Pass extra from_super flag - when invoking patch_method_invocation_stmt. New case for - conditional expression when used as a primary. Check for error - when acquiring super. - (patch_method_invocation_stmt): Added extra argument super. New - local variable is_static_flag. Set class_to_search according to - the nature of the constructor invocation. Don't add `this' - argument when expanding NEW_CLASS_EXPR. Check for illegal method - invocation within the argument scope of explicit constructor - invocation. Set is_static according to is_static_flag. Provide - extra `super' argument to patch_invoke invocation. - (patch_invoke): New argument from_super. Loop on arguments - indentation fixed. Pass from_super to invocation_mode. New switch - case INVOKE_SUPER. Fixed error message in switch default case. - Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node - value. - (invocation_mode): Return INVOKE_SUPER mode when appropriate. - (lookup_method_invoke): Fixed prototypes in candidates list. Error - message takes constructors into account. - (find_applicable_accessible_methods_list): Fixed indentation. - (qualify_ambiguous_name): Take explicit constructor invocation - into account. Deal with a conditional expression as a primary to - a method call. - (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR - case. Added extra argument to patch_method_invocation_stmt. - Register calls made to explicit constructor `this'. Don't call - save_expr in ARRAY_REF case when emitting class files. Check for - illegal use of this when expanding explicit constructor invocation - arguments. - (complete_function_arguments): Set and reset parser context - explicit_constructor_p field value when appropriate. - (build_super_invocation, build_this_super_qualified_invocation): - New functions. - (patch_assignment): Fixed typo. - (patch_unaryop): Check on final fields occurs only when a decl - exits. - (patch_return): Take constructors into account. - (patch_conditional_expr): New function. - * typeck.c (build_java_signature): Removed unnecessary empty line. - -1998-10-28 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too. - -1998-10-28 Tom Tromey - - * decl.c (init_decl_processing): Renamed fields. - * class.c (make_class_data): Renamed bfsize, nfields, nsfields, - interface_len, msize fields. - - * class.c (make_class_data): Removed subclass_head and - subclass_next fields. - * decl.c (init_decl_processing): Removed subclass_head and - subclass_next fields. - -1998-10-28 Jeffrey A Law (law@cygnus.com) - - * jcf-write.c (emit_load_or_store): Avoid implicit int arguments. - * mangle.c (emit_unicode_mangled_name): Similarly. - -1998-10-26 Nick Clifton - - * jcf-parse.c (get_constant): Place braces around code to compute - 'd' when REAL_ARITHMETIC is not defined. - -1998-10-25 H.J. Lu (hjl@gnu.org) - - * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to - dependency. - -1998-10-23 Tom Tromey - - * lang-specs.h: `.zip' files are input to jc1. - -1998-10-22 Per Bothner - - * jvspecs.c: Add (but don't enable) support for combining multiple - .class and .java input filenames to a single jc1 invocation. - Add support for -C flag (copile to .class files). - Translate -classpath and -CLASSPATH arguments. - * lang-specs.h: Don't set %2 spec. - -1998-10-22 Tom Tromey - - * jcf-path.c (add_entry): Don't add trailing separator if entry is - a .zip file. - (add_path): Don't add trailing separator to non-empty path - elements. - - * lang.c (lang_decode_option): Check for -fclasspath and - -fCLASSPATH before examining other `-f' options. - - * java-tree.h (finalize_identifier_node): Don't declare. - * class.c (make_class_data): Don't push "final" field. - * decl.c (init_decl_processing): Don't push "final" field. - (finalize_identifier_node): Removed. - (init_decl_processing): Don't set finalize_identifier_node. - - * config-lang.in (stagestuff): Added jcf-dump and jv-scan. - -1998-10-11 Anthony Green - - * Make-lang.in (java): Depend on jcf-dump and jv-scan. - (JV_SCAN_SOURCES): New macro. - (JCF_DUMP_SOURCES): Likewise. - (jcf-dump$(exeext)): New target. - (jv-scan$(exeext)): New target. - -1998-10-22 Tom Tromey - - * Makefile.in (LEX): Removed. - (LEXFLAGS): Likewise. - (SET_BISON): New macro. - (BISON): Removed. - ($(PARSE_C)): Use SET_BISON. Run bison from srcdir to avoid - spurious diffs in parse.c. - ($(PARSE_SCAN_C)): Likewise. - (PARSE_DIR): New macro. - (PARSE_C): Use it. - (PARSE_SCAN_C): Likewise. - (PARSE_RELDIR): New macro. - - * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c. - - * jcf-io.c (find_class): Use saw_java_source to determine when to - look for `.java' file. - * jcf-parse.c (saw_java_source): New global. - (yyparse): Set it if `.java' file seen. - - * Make-lang.in (JAVA_SRCS): Added jcf-path.c. - (GCJH_SOURCES): Likewise. - * Makefile.in (datadir): New macro. - (libjava_zip): Likewise. - (JAVA_OBJS): Added jcf-path.o. - (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o. - (../gcjh$(exeext)): Likewise. - (jcf-path.o): New target. - * java-tree.h (fix_classpath): Removed decl. - * jcf-parse.c (fix_classpath): Removed. - (load_class): Don't call fix_classpath. - * parse.y (read_import_dir): Don't call fix_classpath. - * lex.h: Don't mention classpath. - * lex.c (java_init_lex): Don't initialize classpath. - * jcf-io.c (classpath): Removed global. - (find_class): Use jcf_path iteration functions. Correctly search - class path for .java file. - (open_in_zip): New argument `is_system'. - * jcf-dump.c (main): Call jcf_path_init. Recognize all new - classpath-related options. - * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH, - and -I. - (lang_init): Call jcf_path_init. - * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH. - * lang-specs.h: Handle -I. Minor cleanup to -M options. - Correctly put braces around second string in each entry. - * gjavah.c (main): Call jcf_path_init. Recognize all the new - classpath-related options. - (help): Updated for new options. - * jcf.h: Declare functions from jcf-path.c. Don't mention - `classpath' global. - * jcf-path.c: New file. - - * jcf-depend.c: Include jcf.h. - - * jcf-write.c (localvar_alloc): Returns `void'. - (localvar_free): Removed unused variable. - - * lang.c (OBJECT_SUFFIX): Define if not already defined. - (init_parse): Use OBJECT_SUFFIX, not ".o". - -1998-10-21 Alexandre Petit-Bianco - - * class.c (emit_register_classes): Renamed from - emit_register_class. - * java-tree.h (emit_register_classes): Prototype renamed from - emit_register_class. - * jcf-parse.c (yyparse): Call emit_register_classes once before - returning. - * parse.y (java_expand_classes): No longer register classes. - -1998-10-20 Alexandre Petit-Bianco - - * class.c (is_compiled_class): New local variable - seen_in_zip. Identify classes found in currently compiled source - file(s). - * decl.c (complete_start_java_method): Fixed typo. - * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P, - HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros. - (CLASS_P): Moved around. - (java_parse_abort_on_error): Macro moved from jcf-parse.c - * jcf-parse.c (java_parse_abort_on_error): Macro moved to - java-tree.h - (jcf_parse_source): Changed leading comment. Removed unnecessary - fclose and CLASS_FROM_SOURCE_P marking. - (parse_source_file): New local variables remember_for_generation - and filename. Mark parsed file name identifier node. Removed block - executed when parse_only was null. Set remember_for_generation. - Use it as an argument to java_pop_parser_context. - (yyparse): New local variables several_files, list, next node and - current_file_list. Split ampersand separated file names into - current_file_list. Iterate through the list and parse accordingly. - * parse.h (java_pop_parser_context): New function prototype. - * parse.y (ctxp_for_generation): New static global variable. - (java_pop_parser_context): New argument generate. Link popped ctxp - to ctxp_for_generation list accordingly. - (java_complete_expand_methods): Fixed indentation. - (java_expand_classes): New function. - -1998-10-17 Per Bothner - - * Makefile.in: Link with libiberty.a instead of memmove.o. - -1998-10-16 Alexandre Petit-Bianco - - * lex.c (setjmp.h): No longer included. - * lex.h (setjmp.h): Included. - * parse.h (SET_TYPE_FOR_RESOLUTION): New macro. - (duplicate_declaration_error_p): Renamed from - duplicate_declaration_error. - (build_array_from_name): New function prototype. - * parse.y (setjmp.h): No longer included. - (variable_declarator_id): Define action. - (build_array_from_name): New function. - (duplicate_declaration_error_p): Renamed from - duplicate_declaration_error. Fixed leading comment. - (register_fields): Main `for' loop reorganized. Uses - SET_TYPE_FOR_RESOLUTION and build_array_from_name. - (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call - build_array_from_name. - (resolve_class): Set CLASS_LOADED_P on newly build array dimension - types. - (read_import_dir): Don't try to skip `.' and `..'. - (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and - build_array_from_name. Main `for' loop reorganized. - (resolve_qualified_expression_name): When building access to a - field, use the type where the field was found, not its own type. - (maybe_access_field): Use field DECL_CONTEXT if the type where the - field was found is null. - (qualify_ambiguous_name): Sweep through all successive array - dimensions. - -1998-10-14 Alexandre Petit-Bianco - - * java-tree.h (pop_labeled_block, lang_printable_name, - maybe_add_interface, set_super_info, get_access_flags_from_decl, - interface_of_p, inherits_from_p, fix_classpath, - complete_start_java_method, emit_handlers, init_outgoing_cpool, - make_class_data, register_class, alloc_name_constant): New - function prototypes. - * lang.c (lang_decode_option): Set argc argument unused. Fixed - indentation. Added cast to remove warning. - (lang_printable_name): Set v argument unused. - (lang_print_error): Added argument to lang_printable_name call. - (java_dummy_print, print_lang_decl, print_lang_type, - print_lang_identifier, lang_print_xnode): All argument marked - unused. - * lex.c (java_unget_unicode): Removed unnecessary argument. - (java_allocate_new_line): Unused local variable is gone. - (java_read_char): Added parenthesis in expressions to remove - warnings. Added final return statement. - (java_read_unicode): Added parenthesis in expression to remove - warning. - (java_parse_end_comment): Fixed java_unget_unicode invocation. - (java_parse_escape_sequence): Likewise. - (java_lex): Unused local variables are gone. Fixed - java_unget_unicode invocation. - * lex.h (set_float_handler): Prototype added when JC1_LITE not - defined. - * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed - lang_printable_name invocation in macro. - (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL): - Likewise. - (duplicate_declaration_error): Suppressed unused argument in - prototype. - (identical_subpath_p): Function declaration is gone. - (patch_invoke): Suppressed unused argument in prototype. - (patch_cast, build_labeled_block, check_thrown_exceptions): - Likewise. - * parse.y (setjmp.h): Included - (toplev.h): Likewise. - (field_declaration:): Suppressed unused local - (label_decl:): Fixed build_labeled_block invocation. - (java_pop_parser_context): Put extra parenthesis around assignment - in if. - (yyerror): Suppressed unused local variables. - (variable_redefinition_error): Fixed lang_printable_name - invocation. - (create_interface): Suppressed unused local variables. - (create_class): Likewise. - (duplicate_declaration_error): Suppressed unused argument. Fixed - lang_printable_name invocation. - (register_fields): Suppressed unused local variable. Fixed - duplicate_declaration_error invocation. - (method_header): Suppressed unused local variable. - (method_declarator, parser_check_super): Likewise. - (java_complete_class): Suppressed unused local variable. Fixed - fatal error message. - (complete_class_report_errors): Added default: in switch. - (java_check_regular_methods): Fixed lang_printable_name - invocations. - (check_throws_clauses): Likewise. - (java_check_abstract_methods): Suppressed unused local - variable. Fixed lang_printable_name invocation. - (read_import_entry): Added supplemental return statement. - (read_import_dir): Suppressed unused local variables. - (check_pkg_class_access, declare_local_variables): Likewise. - (source_start_java_method): Suppressed unused extern variable - declarations - (expand_start_java_method): Suppressed unused extern and local - variable declarations. - (java_complete_expand_methods): Likewise. - (java_complete_expand_method): Suppressed unused local variables. - (make_qualified_name): Likewise. - (resolve_qualified_expression_name): Added default: in - switch. Fixed lang_printable_name invocation. - (class_instance_creation_expression): Added parenthesis around - expressions. - (patch_method_invocation_stmt): Fixed lang_printable_name and - patch_invoke invocations. - (check_for_static_method_reference): Fixed lang_printable_name - invocation. - (patch_invoke): Suppressed unused arguments and local variables. - (lookup_method_invoke): Suppressed unused local variables. - (qualify_ambiguous_name): Added default: in switch. - (identical_subpath_p): Function removed. - (patch_assignment): Suppressed unused local variables. Suppressed - unnecessary if statement. Fixed lang_printable_name invocations. - (try_builtin_assignconv): Fixed lang_printable_name invocations. - (valid_ref_assignconv_cast_p): Parenthesis around - expression. Suppressed unused local variables. - (build_binop): Suppressed unused local variables. fixed - lang_printable_name invocations. - (string_constant_concatenation): Suppressed unused local - variables. - (patch_unaryop): Fixed lang_printable_name invocation. - (patch_cast): Suppressed unnecessary argument. Fixed - lang_printable_name invocation. - (patch_array_ref): Fixed lang_printable_name invocation. - (patch_newarray, patch_return, patch_if_else_statement): Likewise. - (build_labeled_block): Suppressed unused argument. - (generate_labeled_block): Fixed build_labeled_block invocation. - (build_loop_body): Suppressed unused local variables. - (patch_loop_statement): Likewise. - (patch_exit): Fixed lang_printable_name invocation. - (patch_switch_statement): Likewise. - (case_identity): First argument marked unused. - (patch_try_statement): Fixed lang_printable_name invocations. - (patch_synchronized_statement, patch_throw_statement): Likewise. - (check_thrown_exceptions): Fixed check_thrown_exceptions and - lang_printable_name invocations. - (check_thrown_exceptions_do): Suppressed unused argument. - -1998-10-14 Tom Tromey - - * jcf-write.c (write_classfile): Add output class file as target. - * lang-options.h: Added -MD, -MMD, -M, and -MM. - * jcf.h: Added declarations for dependency-tracking functions. - * lang-specs.h: Handle -M, -MM, MD, and -MMD. - * lang.c (lang_decode_option): Recognize -MD and -MMD. - (finish_parse): Call jcf_dependency_write. - (dependency_tracking): New global. - (DEPEND_SET_FILE): New define. - (DEPEND_ENABLE): New define. - (init_parse): Enable dependency tracking if required. - Include "flags.h". - * Makefile.in (JAVA_OBJS): Added jcf-depend.o. - (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o. - (../gcjh$(exeext)): Likewise. - (jcf-depend.o): New target. - * Make-lang.in (JAVA_SRCS): Added jcf-depend.c. - (GCJH_SOURCES): Likewise. - * jcf-io.c (open_class): Call jcf_dependency_add_file. Added - dep_name argument. - (find_classfile): Added dep_name argument. - (find_class): Compute name of dependency. - (open_in_zip): Call jcf_dependency_add_file. - * gjavah.c (output_file): No longer global. - (usage): Don't mention "gjavah". - (help): Likewise. - (java_no_argument): Likewise. - (version): Likewise. - (main): Recognize and handle -M family of options. - (print_mangled_classname): Return is void. - (process_file): Handle case where output is suppressed. - (HANDLE_END_FIELD): Likewise. - (HANDLE_METHOD): Likewise. - * jcf-depend.c: New file. - -1998-10-13 Jeffrey A Law (law@cygnus.com) - - * java-tree.def: Add missing newline at EOF. - -1998-10-13 Tom Tromey - - * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1. - (main): Likewise. Exit with SUCCESS_EXIT_CODE at end of - function. - Include and "system.h". - (disassemble_method): Undefine RET to avoid clash with - config/i386/i386.h. - -1998-10-13 Alexandre Petit-Bianco - - * decl.c (runtime_exception_type_node, error_exception_type_node): - New global variables. - (init_decl_processing): Initialized. - * expr.c (java_lang_expand_expr): Set caught exception type to - null if catch handler argument doesn't exit. - * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific - tree codes. - * java-tree.h (runtime_exception_type_node, - error_exception_type_node): Global variables declared. - (DECL_FUNCTION_THROWS): New macro. - (DECL_FUNCTION_BODY): Modified comment. - (DECL_SPECIFIC_COUNT): Likewise. - (struct lang_decl): New field throws_list. - (IS_UNCHECKED_EXPRESSION_P): New macro. - * lex.c (java_lex): Generate location information for THROW_TK. - * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P, - EXCEPTIONS_P): New macros. - (enum jdep_code): New value JDEP_EXCEPTION. - (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT, - BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR, - PATCH_METHOD_RETURN_ERROR): New macros. - (patch_method_invocation_stmt): Added new argument to prototype. - (patch_synchronized_statement, patch_throw_statement, - check_thrown_exceptions, check_thrown_exceptions_do, - purge_unchecked_exceptions, check_throws_clauses): New function - prototypes. - * parse.y Fixed typo in keyword section. - (throw:): Rule tagged . - (THROW_TK): Keyword tagged . - (method_header:): Last argument to call to method_header passed - from throws: rule. - (throws:, class_type_list:, throw_statement:, - synchronized_statement:, synchronized:): Defined actions. - (method_header): New local variable current. Register exceptions - from throws clause. - (java_complete_tree): Complete and verify exceptions from throws - clause. - (complete_class_report_errors): Error message on exceptions not - found - (java_check_regular_methods): Fixed typo. Shortcut on private - overriding methods. Changed error message on method - redefinition. Check for throws clause compatibility. - (check_throws_clauses): New function. - (java_check_abstract_methods): Use DECL_NAME for wfl or current - method. Changed error message on method redefinition. - (currently_caught_type_list): New static variable. - (java_complete_expand_methods): Purge unchecked exceptions from - throws clause list. Call PUSH_EXCEPTIONS before walk and - POP_EXCEPTIONS after. - (resolve_qualified_expression_name): Pass new argument as NULL to - patch_method_invocation_stmt. - (patch_method_invocation_stmt): New argument ref_decl. Invoke - PATCH_METHOD_RETURN_ERROR when returning with error. Reverse - argument list when appropriate. Use new argument if non null to - store selected method decl. - (patch_invoke): Convert if necessary args of builtin types before - forming CALL_EXPR. Argument list no longer reversed here. - (invocation_mode): Treat final methods as static methods. - (java_complete_tree): New cases for THROW_EXPR: and - SYNCHRONIZED_EXPR:. Check thrown exceptions when completing - function call. - (complete_function_arguments): No more RECORD_TYPE - conversion. Function parameter nodes no longer saved. - (valid_ref_assignconv_cast_p): Avoid handling null type. - (patch_binop): Fixed null constant reference handling. - (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and - BUILD_THROW macros. - (patch_try_statement): Fixed comments. Record caught types in - list, push the list, expand try block and pop the list. - (patch_synchronized_statement, patch_throw_statement, - check_thrown_exceptions, check_thrown_exceptions_do, - purge_unchecked_exceptions): New functions. - * typeck.c (lookup_argument_method): Allow WFL in place of method - DECL_NAME during method definition check - -1998-10-09 Tom Tromey - - * gjavah.c (decode_signature_piece): New function. - (print_c_decl): Use it. Added `name_override' argument. - (print_method_info): Use name_override argument to print_c_decl. - (seen_fields): Removed. - (print_field_info): Don't update seen_fields. - (struct method_name): New structure. - (method_name_list): New global. - (print_method_info): Add new method to list of methods. - (name_is_method_p): New function. - (print_field_info): If field name has same name as method, then - change field name. - (process_file): Parse methods before fields. - (field_pass): New global. - (HANDLE_END_FIELD): Take field_pass into account. - -1998-10-07 Kaveh R. Ghazi - - * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf. - (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs). - -1998-10-03 Anthony Green - - * jvspec.c: Fix bug in jvgenmain_spec patch. - -1998-10-02 Alexandre Petit-Bianco - - * Makefile.in (lang.o:): Install dependency on java-tree.def. - * decl.c (soft_exceptioninfo_call_node): New global variable. - (init_decl_processing): Fixed indentation. soft_badarrayindex_node - takes extra integer argument. soft_exceptioninfo_call_node - initialized. - * except.c (java_set_exception_lang_code): New function - (method_init_exceptions): Called here. - (prepare_eh_table_type): New function. - (expand_end_java_handler): Called here. - * expr.c (build_java_throw_out_of_bounds_exception): Now features - one argument. Modified generation of call to - soft_badarrayindex_node to use new argument. - (build_java_arrayaccess): Pass faulty index value to - build_java_throw_out_of_bounds_exception. - (generate_name): New function. - (java_lang_expand_expr): New local variables node, current, - has_finally_p. Expand TRY_EXPR node. - (process_jvm_instruction): Replace top of the stack with thrown - object reference when entering exception handler. - * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java - specific tree codes. - * java-tree.h (soft_exceptioninfo_call_node): Declaration of new - global. - (DECL_SPECIFIC_COUNT): New macro. - (prepare_eh_table_type, java_set_exception_lang_code, - generate_name): New function declarations. - (match_java_method): Declaration deleted. - (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New - macros. - * lex.c (TRY_TK, CATCH_TK): Generate location information. - * parse.h (redefinition_error, refine_accessible_methods_list, - can_cast_to_p): Function declaration removed. - (classitf_redefinition_error, variable_redefinition_error, - parse_jdk1_1_error, find_applicable_accessible_methods_list, - find_most_specific_methods_list, argument_types_convertible, - enter_a_block, valid_builtin_assignconv_identity_widening_p, - valid_cast_to_p, valid_method_invocation_conversion_p, - try_reference_assignconv, add_stmt_to_compound, - build_jump_to_finally, build_tree_list, patch_try_statement, - java_get_catch_block): New function declarations. - * parse.y (string_buffer_type): Global variable deleted. - (group_of_labels, catches, catch_clause, catch_clause_parameter, - finally): Rules tagged . - (TRY_TK, CATCH_TK): Token tagged . - (class_body_declaration:, class_member_declaration:, - formal_parameter:, explicit_constructor_invocation:, - interface_member_declaration:, constant_declaration:, - primary_no_new_array:, class_instance_creation_expression:, - array_creation_expression:): Issue error on unsuported JDK1.1 - features. - (try_statement:, catches:, finally:): Define actions. - (catch_clause_parameter): New rule. - (catch_clause:): Use new rule catch_clause_parameter. - (parse_jdk1_1_error): New function. - (redefinition_error): Renamed classitf_redefinition_error. - (variable_redefinition_error): New function. - (check_class_interface_creation): Call - classitf_redefinition_error. - (java_complete_tree): Added error message on JDEP_TYPE: case. - (complete_class_report_errors): Fixed indentation. - (declare_local_variables): Call variable_redefinition_error. - (source_end_java_method): Call java_set_exception_lang_code and - emit_handlers where appropriate. - (java_method_add_stmt): Call add_stmt_to_block. - (add_stmt_to_block): New function. - (lookup_method_invoke): Fixed outside comment. new local variable - candicates. Call find_applicable_accessible_methods_list and - find_most_specific_methods_list when searching for a - method. Modified error report to list possible candidates when - applicable. - (find_applicable_accessible_methods_list, - find_most_specific_methods_list, argument_types_convertible): New - function. - (refine_accessible_methods_list): Function deleted. - (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save - expr (if applicable) before calling patch_array_ref. - (build_expr_block): Fixed BLOCK_EXPR_BODY assignment. - (enter_block): Fixed comment. - (enter_a_block): New function. - (patch_assignment): Reorganized. Call try_reference_assignconv for - references. Call valid_cast_to_p instead of can_cast_to_p. - (try_reference_assignconv, - valid_builtin_assignconv_identity_widening_p): New functions. - (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL. - (valid_cast_to_p, valid_method_invocation_conversion_p): New - functions. - (build_string_concatenation): Don't resolve StringBuffer. - (patch_cast): Fixed inverted arguments. - (patch_array_ref): Code to save array expr deleted. Call - valid_cast_to_p instead of can_cast_to_p. - (generate_labeled_block): Call generate_name. - (build_jump_to_finally, build_try_statement, java_get_catch_block, - patch_try_statement): New functions. - * typeck.c (match_java_method): Function deleted. - -1998-10-02 Anthony Green - - * jvspec.c: jvgenmain_spec uses different temporary file names. - -1998-10-02 Anthony Green - - * jvspec.c (lang_specific_driver): Fail if user specifies - --main= when not linking. - -1998-09-28 Tom Tromey - - * class.c (make_class_data): Push value for `thread' field. - * decl.c (init_decl_processing): Added `thread' field to class. - - * class.c (add_field): Always make static fields externally - visible. - -1998-09-26 Anthony Green - - * expr.c (build_java_athrow, - build_java_throw_out_of_bounds_exception, expand_invoke, - build_newarray, expand_java_multianewarray, build_java_monitor): - Update comments to reflect _Jv_* function names. - -1998-09-25 Per Bothner - - * decl.c (complete_start_java_method): DECL_RESULT is always promoted. - * decl.c (start_java_method): Handle PROMOTE_PROTOTYPES target macro. - * parse.y (expand_start_java_method): Likewise. - -1998-09-24 Per Bothner - - * expr.c (pop_arguments): Handle PROMOTE_PROTOTYPES target macro. - - * class.c (push_class): IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE. - (add_field): No longer need to convert from RECORD_TYPE to pointer, - * expr.c: Remove no-longer-needed calls to promote_type. - * decl.c (give_name_to_locals): Liekwise. - * jcf-parse.c (get_class_constant): Compensate for new signatures. - * parse.y: Add/remove promote_type calls as appropriate. - * typeck.c (parse_signature_type): Returns POINTER_TYPE for objects. - (parse_signature_string): Likewise. - (build_java_array_type): Fix for now signature convenions. - - * lex.c (java_lex): Fix (from Alex) for JC1_LITE problem. - -1998-09-23 Tom Tromey - - * class.c (init_class_processing): libjava function renamed to - _Jv_RegisterClass. - -1998-09-22 Alexandre Petit-Bianco - - * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR. - * java-tree.def: Fixed DEFTREECODE third argument. - (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR, - CASE_EXPR, DEFAULT_EXPR): New tree codes for Java. - * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro. - (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, - JAVA_THIS_EXPR): Now replaced by tree code definitions. - (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR. - * lang.c (java_tree_code_type, java_tree_code_length, - java_tree_code_name): New arrays. - (lang_init): Append Java tree node definitions to Gcc ones. - * lex.c (expression_obstack): Declared as extern when JC1_LITE - defined. - (java_init_lex): Initialize wfl_append, wfl_string_buffer, - wfl_to_string. - (java_lex): Allow declaration of empty string constants. Retain - location information on CASE_TK and DEFAULT_TK. - * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P, - JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P): - Modified to be more robust. - (BUILD_APPEND, BUILD_STRING_BUFFER): New macros. - (build_new_invocation, try_builtin_assignconv, - patch_switch_statement, string_constant_concatenation, - build_string_concatenation, patch_string_cst, patch_string, - java_expand_switch): New function declarations. - * parse.y: Rules related to switch and EH tagged . - (label_id): Set to NULL_TREE - (wfl_string_buffer, wfl_append, wfl_to_string): New static global - tree nodes. - (this_or_super:): Fixed indentation. - (statement:, statement_nsi:, statement_without_trailing_substatement:, - statement_expression:): Removed call to RULE on all sub-rules. - (switch_expression:, switch_labels:): New rules. - (switch_statement:, switch_block:, switch_block_statement_groups:, - switch_block_statement_group:, switch_labels:, switch_label:): - Defined actions. - (throw_statement:, synchronized_statement:, try_statement:): - Defined temporary actions. - (class_instance_creation_expression:): Call - build_new_invocation. Fixed indentation. - (field_access): Fixed indentation. - (method_invocation): Likewise. - (make_qualified_primary): Use THIS_EXPR. - (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When - resolving from SUPER, set *type_found. - (qualify_ambiguous_name): Use NEW_CLASS_EXPR. - (java_complete_tree): Removed unused local variable `location'. Case - for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR, - NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling - on MODIFY_EXPR: and all binary operator tree code cases. Removed - STRING_CST: case. default: checks for patchable strings. - (complete_function_arguments): Transform string constant or - crafted StringBuffer if necessary. - (build_method_invocation): Fixed comments. - (build_new_invocation): New function. - (patch_assignment): Call try_builtin_assignconv to figure a valid - assignment conversion between builtin types. - (try_builtin_assignconv): New function. - (build_binop): Use URSHIFT_EXPR directly to call build. - (operator_string): Use UNARY_PLUS_EXPR. - (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation - operator. - (do_merge_string_cste, merge_string_cste, - string_constant_concatenation, build_string_concatenation, - patch_string, patch_string_cst): New function. - (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR. - (patch_unaryop): Likewise. New test of valid ++/-- operands. - (build_newarray_node): Use NEW_ARRAY_EXPR. - (build_this): Use THIS_EXPR. - (build_return): Enable debug information on return statement. - (build_if_else_statement): Likewise. - (complete_labeled_statement): Fixed related comment. - (build_loop_body): Fixed comment. - (build_bc_statement): Enable debug information on break/continue - statements. - (patch_bc_statement): Fixed typos. Handle SWITCH statement - context. - (patch_switch_statement, case_identity, java_expand_switch): New - functions. - -1998-09-21 Per Bothner - - * buffer.h (BUFFER_INIT): New macro. - * jcf-write.c (struct jcf_partial): New type. Put global stuff here. - Pass (struct jcf_partial *state) to most functions. - (jcf_block, jcf_relocation): New types. - Support labels, branches, conditionals, loops. - -1998-09-21 Tom Tromey - - * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined. - -1998-09-21 Per Bothner - - * decl.c (integer_type_node): Make it have INT_TYPE_SIZE. - * verify.c (verify_jvm_instructions): Use int_type_not (32 bits), - not integer_type_node (INT_TYPE_SIZ bits). - - * parse.y (patch_if_else_statement): Accept promoted_boolean_type_node. - - * jcf-reader.c (get_attribute): New HANDLE_EXCEPTION_TABLE hook. - * jcf-dump.c (print_exception_table): New function. - (disassemble_method): Better handling of wide instructions. - Make more robust for bad input. - -1998-09-30 Jeffrey A Law (law@cygnus.com) - - * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on - FreeBSD. - -1998-09-17 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too. - -1998-09-17 Tom Tromey - - * Makefile.in ($(PARSE_H)): Removed target. - -1998-09-17 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (JAVA_OBJS): Add memmove.o - (memmove.o): New target & rules. - -1998-09-15 Tom Tromey - - * expr.c (expand_invoke): Don't generate a call to the class init - code. - -1998-09-14 Jeffrey A Law (law@cygnus.com) - - * Makefile.in: Add many missing dependencies. - * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h - as appropriate. - * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise. - * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise. - -1998-09-11 Per Bothner - - * decl.c (complete_start_java_method): If method is static (and - not private) call _Jv_InitClass. - * expr.c (expand_invoke): Don't call build_class_init. - - * jvspec.c (jvgenmain_spec): Fix spec for generated .o file. - -1998-09-10 Jeffrey A Law (law@cygnus.com) - - * Make-lang.in (GCJ): Define before using. - -1998-09-09 Jeffrey A Law (law@cygnus.com) - - * gjavah.c (java_no_argument): Renamed from no_argument to avoid - losing due to namespace pollution in GNU getopt.h - -1998-09-09 Tom Tromey - - * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh. - (java.all.cross): Likewise. - (java.rest.encap): Likewise. - -1998-09-08 Jeffrey A Law (law@cygnus.com) - - * gjavah.c (print_class_decls): Fix thinko in arglist - * jcv-io.c (find_classfile): Similarly. - -1998-09-07 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (INCLUDES): Update for recent toplevel gcc changes. - -1998-09-05 Tom Tromey - - * Make-lang.in (java.maintainer-clean): Don't remove parse.h. - (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h. - * Makefile.in (PARSE_C): New macro. - (PARSE_H): Likewise. - (PARSE_SCAN_C): Likewise. - ($(PARSE_C)): Target renamed from parse.c. - ($(PARSE_SCAN_C)): Target renamed from parse-scan.c. - (clean): Remove parse-scan.c as well. - (parse.o): Depend on $(PARSE_C). - -1998-09-05 Anthony Green - - * README, license.terms: Removed. - - * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c, - decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h, - javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c, - jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c, - keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c, - lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c, - verify.c, zextract.c, zipfile.h: Fixed copyright assignment, - and Java trademark attribution. - -1998-09-04 Tom Tromey - - * Makefile.in: Use gcjh, not gjavah. - * config-lang.in (stagestuff): Use gcjh, not gjavah. - * Make-lang.in: Changed gjavah to gcjh everywhere. - -1998-09-03 Per Bothner - - * gjavah.c: Support new -prepend -add -append flags. - (print_method_info): Method is not virtual if class is final. - -1998-09-03 Alexandre Petit-Bianco - - * jv-scan.c: Fixed copyright assignment. - * keyword.gperf: Likewise. - * keyword.h: Likewise. - * lex.c: Fixed copyright assignment. - (java_lex): Push unicode back when parsing '<'. - * lex.h: Fixed copyright assignment. - * parse-scan.y: Likewise. - * parse.h: Fixed copyright assignment. - (build_debugable_stmt, complete_for_loop): New function prototypes. - * parse.y: Fixed copyright assignment. - (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be - size_zero_node when completing a loop with no exit condition. - (for_statement_nsi:): Define action. - (for_init:, for_update:): Return size_zero_node when empty. - (declare_local_variables): Call build_debugable_stmt. - (build_debugable_stmt): New function. - (build_loop_body): Build debugable statement around loop - condition part. - (complete_loop_body): Take into account the debugable statement - around the EXIT_EXPR. - (complete_loop_body): New function. - (patch_exit_expr): Fixed condition inversion. - -1998-09-02 Tom Tromey - - * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct - name of thread define. - * jvspec.c (THREAD_NAME): New macro. - (GCLIB): Likewise. - (THREADLIB): Likewise. - (lang_specific_driver): Recognize attempt to link with thread - library or gc library. Recognize -ljava on command line so it - isn't linked against more than once. - -1998-09-02 Alexandre Petit-Bianco - - * parse-scan.y (report_main_declaration): Name of the class - containing `main' can be a qualified name. - -1998-08-31 Tom Tromey - - * config-lang.in: Changed gjavac to gjc everywhere. - * Make-lang.in: Changed gjavac to gjc everywhere. - -1998-08-27 Alexandre Petit-Bianco - - * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable. - (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS - and install the files. - * Makefile.in (JAVA_OBJS_LITE): New variable. - (compiler:): Now include jv-scan as a dependency. - (../jv-scan$(exeext), parse-scan.c): New targets. - (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before. - * config-lang.in (compilers): Removed gcj, gjavah from the list. - * jcf-parse.c (parse_source_file): Call java_layout_classes and - check for errors even if parse_only. - * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is - defined. - (yylex): New function. Uses java_lex body. - (java_lex): Removed commented out statement. Remove local variable - literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where - appropriate. Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE, - DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF, - SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST - if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use - SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER - where appropriate. - (java_lex_error): Empty if JC1_LITE is defined. - (java_get_line_col): Return 0 if JC1_LITE is defined. - * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, - SET_MODIFIER_CTX): Moved into the section containing the macros - conditionally defined by JC1_LITE. - (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN - argument if JC1_LITE is defined. - (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF, - REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE - is defined. - (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF, - FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION, - SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set - to different values according to JC1_LITE. - * parse.h (int_fits_type_p, stabilize_reference): Prototype not - declared if JC1_LITE set. - (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not - defined if JC1_LITE not set. - (struct parser_ctx): Reorganized and skip the jc1 front end part - if JC1_LITE set. - (java_layout_classes): New function definition. - (java_push_parser_context, java_init_lex, yyparse, yylex, - yyerror): Prototype always declared. All other static function - prototypes declared only if JC1_LITE is not set. - * parse.y (yyparse, yylex, yyerror): No longer declared here. Now - declared in parse.h. - (java_layout_classes): New function. - (java_complete_expand_methods): No longer layout the class here. - * parse-scan.y: New file. - * jv-scan.c: New file. - -1998-08-25 Tom Tromey - - * gjavah.c (main): Handle -friend option. - (friend_specs): New global. - (generate_access): Handle friend_specs. - (process_file): Likewise. - (MAX_FRIENDS): New macro. - (friend_count): New global. - (print_cxx_classname): Added `prefix' argument. Ignore arrays. - Changed all callers. - -1998-08-24 Per Bothner - - * jcf-dump.c (process_class): Move JCF_FINISH use to main, - (main): Handle processing all the entries of a named .zip archive. - * jcf-io.c (jcf_trim_old_input): New function. - * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le): New macros. - -1998-08-24 Per Bothner - - * lang.c (flag_assume_compiled): Make default be on. - -1998-08-21 Per Bothner - - * jcf-dump.c: Add bunches of flags to control output more. - (process_class): New function; support printing more than one class. - (main): Support new --print-main and --javap flags. - * jcf-reader.c (IGNORE_ATTRIBUTE): New hook. - * jcf.h (CPOOL_INDEX_IN_RANGE): New macro. - -1998-08-20 Per Bothner - - Change mangling of dispatch table to match C++ vtable (w/thunks). - * class.c (build_dtable_decl), java-tree.h: New function. - (make_class_data): Call it. - * decl.c (init_decl_processing): Likewise. - -1998-08-19 Warren Levy - - * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not - soft_anewarray; adjust args passed. - * expr.c (build_anewarray): Adjust args for soft_anewarray_node to - match _Jv_NewObjectArray. - -1998-08-19 Alexandre Petit-Bianco - - * decl.c (push_labeled_block, pop_labeled_block): New functions. - * expr.c (loopup_label): Call create_label_decl. - (create_label_decl): New function. - (java_lang_expand_expr): Call expand_start_bindings with argument - set to zero. - * java-tree.h Added space after PROTO in function declarations - when necessary. - (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros. - (create_label_decl, push_labeled_block): New function - declarations. - * lex.c (label_id): Initialize. - (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final - switch. - * parse.h Added space after PROTO in function declarations when - necessary. - (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK, - LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY, - LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P, - PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New - macros. - (struct parser_ctxt): New fields current_loop, - current_labeled_block. - (build_if_else_statement, patch_if_else_statement, - add_stmt_to_compound, patch_exit_expr, build_labeled_block, - generate_labeled_block, complete_labeled_statement, - build_bc_statement, patch_bc_statement, patch_loop_statement, - build_new_loop, build_loop_body, complete_loop_body): New function - declarations. - * parse.y (java_warning_count): New global variable. - (label_id): New static variable. - (BREAK_TK, CONTINUE_TK): Token tagged . - (block:): Return size_zero_node when block is empty. - (empty_statement:): Return size_zero_node. - (statement:): Implement supplemental action when for_statement: is - reduced. - (label_decl:): New rule. - (labeled_statement:): Rewritten using label_decl. Actions - implemented. - (labeled_statement_nsi:): Likewise. - (if_then_statement): Actions implemented. - (while_expression): New rule. - (while_statement:): Rewritten using while_expression. Actions - implemented. - (while_statement_nsi:): Likewise. - (do_statement_begin:): New rule. - (do_statement:): Rewritten using do_statement_begin. Actions - implemented. - (for_statement:): Rewritten using for_begin. Actions implemented. - (for_statement_nsi:): Likewise. - (for_header:, for_begin:): New rules. - (for_init:): Actions implemented. - (statement_expression_list:, break_statement:, - continue_statement:): Likewise. - (yyerror): Count number of issued warning(s). - (java_report_errors): Report error(s) and/or warning(s). - (java_complete_class): Use build_java_argument_signature to - recompute completed method signature. - (java_check_regular_methods): New locals method_wfl and aflags. - Use method_wfl instead of lookup_cl during error reports. Fixed - indentation and modified some error messages. Use - lang_printable_name in method instead of the DECL_NAME. New code - to issue warnings on methods not overriding corresponding methods - private to a different package. - (java_method_add_stmt): Call add_stmt_to_compound. - (add_stmt_to_compound): New function. - (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, - LOOP_EXPR, EXIT_EXPR and COND_EXPR. - (build_if_else_statement, patch_if_else_statement, - build_labeled_block, generate_labeled_block, - complete_labeled_statement, build_new_loop, build_loop_body, - complete_loop_body, patch_loop_statement, build_bc_statement, - patch_bc_statement, patch_exit_expr): New functions. - * typeck.c (build_java_signature): Build argument signature before - enclosing it in between parenthesis. - -1998-08-17 Warren Levy - - * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in - (JAVA_OBJS): Added reminder comment - -1998-08-13 Nick Clifton - - * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to - be interpreted as a long long. - -1998-08-13 Warren Levy - - * decl.c (init_decl_processing): Use _Jv_InitClass, not - soft_initialise_class. Use _Jv_NewMultiArray, not - soft_multianewarray. Use _Jv_ThrowBadArrayIndex, not - soft_badarrayindex. Use _Jv_CheckCast, not soft_checkcast. Use - _Jv_CheckArrayStore, not soft_checkarraystore. Use - _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod. - -1998-08-12 Per Bothner - - * decl.c, java-tree.h (this_identifier_node, super_identifier_node, - length_identifier_node): New global tree node constants. - * parse.y (kw_super, kw_this, kw_length): Removed globals. - Replace uses by super_identifier_node etc. - * lex.c (kw_super, kw_this, kw_length): Don't initialize. - - * parse.y (resolve_field_access): Don't special-case ".length" if - flag_emit_class_files. - (patch_array_ref): Leave as ARRAY_REF if flag_emit_class_files. - * jcf-write.c (generate_bytecode_insns): Handle ARRAY_REF opcode - and ARRAY.length. - -1998-08-11 Per Bothner - - * decl.c (init_decl_processing): Remove unused method_type_node fields. - * class.c (make_method_value): Remove init for removed fields. - - * class.c (layout_class): Use build_java_argument_signature. - * java-tree.h (TYPE_ARGUMENT_SIGNATURE): New macro. - - * typeck.c (push_java_argument_signature): Removed. Merged into ... - (build_java_argument_signature): Use TYPE_ARGUMENT_SIGNATURE cache. - (build_java_signature): Don't use push_java_argument_signature. - - * typeck.c (lookup_argument_method): New function. - * parse.y (java_check_regular_methods): Use lookup_argument_method - instead of lookup_java_method2 followed by lookup_java_method. - - * parse.y (check_method_redefinition): Minor optimization. - - * jcf-write.c (generate_bytecode_insns): Handle RETURN_EXPR, - MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR. - -1998-08-10 Tom Tromey - - * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or - c-pragma.o. - - * gjavah.c (java_float_finite): Use K&R-style definition. - (java_double_finite): Likewise. - (generate_access): Now returns void. Changed all callers. - (last_access_generated): Removed. - (process_file): Only make a single pass over the .class file. - -1998-07-29 Per Bothner - - * class.c (get_dispatch_table): Add extra dummy vtable entry, - for compatibility for G++ (with -fvtable-thunks). - * expr.c (build_invokevirtual): Add one for extra dummy vtable entry. - - * gjavah.c (process_file): Use public inheritance for super-class. - -1998-07-29 Alexandre Petit-Bianco - - * lex.c (java_init_lex): Initialize ctxp->package. - * parse.h (struct parser_ctxt): package and package_len replaced - by tree package, an identifier node. Field method_decl_list is - gone. Fixed comments. - (lookup_field_wrapper, merge_qualified_name, not_accessible, - class_in_current_package): New function prototypes. - * parse.y (array_type:): Set class loaded flag on primitive type - arrays. - (package_declaration:): Assign ctxp->package to the - identifier node. - (method_invocation:): Handle invocation of method qualified by - `super'. - (single_type_import_declaration:): Removed ambiguity check. - (java_pop_parser_context): New local variable `next'. Reset and - set IMPORT_CLASSFILE_NAME flags on current and previous import - list. - (java_accstring_lookup): Use new local macro COPY_RETURN. - (lookup_field_wrapper): New function. - (parser_qualified_classname): Use merge_qualified_name. - (parser_check_super_interface): Broaden error message. - (do_resolve_class): Check for qualified class name in the current - compilation unit if appropriate. - (process_imports): Check for already defined classes. - (check_pkg_class_access): Got rid of call to - get_access_flags_from_decl. - (java_complete_expand_methods): Call safe_layout_class based on - the current class size. - (make_qualified_primary): Build a WFL qualification on primary if - none exists. - (merge_qualified_name): New function. - (make_qualified_name): Use merge_qualified_name. - (resolve_expression_name): Use safe_lookup_field. - (resolve_field_access): Got rid of call to get_access_flags_from_decl. - (resolve_qualified_expression_name): Likewise. Check on resolved - element accessibility. - (not_accessible_p, class_in_current_package): New functions. - (maybe_access_field): Got rid of call to get_access_flags_from_decl. - (patch_method_invocation_stmt): Merged common pieces. Check - accessibility of invoked method. - (check_for_static_method_reference): Add returned type in error - message. - (invocation_mode): Get rid of bogus check on PRIVATE methods. - (refine_accessible_methods_list): Merged two conditions in test. - (java_complete_class): Sanity check on stabilize_ref gone. - * zextract.c (read_zip_archive): Cast lseek second argument to long. - -1998-07-28 Per Bothner - - * class.c (hashUtf8String): Fix - use new JavaSoft specification. - -1998-07-24 Tom Tromey - - * gjavah.c (F_NAN): Removed. - (F_NAN_MASK): New macro. - (F_POSITIVE_INFINITY): Removed. - (F_NEGATIVE_INFINITY): Likewise. - (java_float_finite): Rewrote. - (D_NAN_MASK): Renamed. - (java_double_finite): Rewrote. - (D_POSITIVE_INFINITY): Removed. - (D_NEGATIVE_INFINITY): Likewise. - - * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float] - If verbose, print underlying representation of value in hex. - -1998-07-24 Per Bothner - - * buffer.h, buffer.c: New files. - * Makefile.in (JAVA_OBJS): Add buffer.o. - - Support locals variables and writing their debug entries to .class. - * jcf-write.c: Simplify some by user new buffer type. - (vode_buffer_grow): Removed. - (struct localvar_info): New type. - (localsvars, localvartable): New buffers. - (localvar_alloc, localvar_free): New functions. - (generate_bytecode_insns): Handle local variables. - (generate_classfile): Write LocalVariableTable attribute. - -1998-07-24 Alexandre Petit-Bianco - - * jcf-io.c (open_in_zip): Check the zipfile magic number. - * zipfile.h (ZIPMAGIC): New macro. - -1998-07-24 Tom Tromey - - * Makefile.in (gjavah.o): Updated dependencies. - (jcf-dump.o): Likewise. - (all.indirect): Use ../gjavah. - (../gjavah$(exeext)): Likewise. - (clean): Don't remove gjavah. - (clean): Remove parse.c, not java/parse.c. - * Make-lang.in (java): Added gjavah. - (gjavah$(exeext)): New target. - (GJAVAH_SOURCES): New macro. - (java.all.build): Added gjavah. - (java.all.cross): Likewise. - (java.rest.encap): Likewise. - * config-lang.in (compilers, stagestuff): Added gjavah. - -1998-07-23 Tom Tromey - - * gjavah.c (java_float_finite): New function. - (java_double_finite): Likewise. - (F_POSITIVE_INFINITY): New macro. - (F_NEGATIVE_INFINITY): Likewise. - (F_NAN): Likewise. - (D_POSITIVE_INFINITY): Likewise. - (D_NEGATIVE_INFINITY): Likewise. - (D_NAN): Likewise. - (print_field_info): Use java_float_finite and java_double_finite. - -1998-07-23 Per Bothner - - * parse.y (method_header): Name "this" implicit argument. - -1998-07-22 Per Bothner - - * jcf-write.c: Write out LineNumberTable attribute in .class file. - (linenumber_buffer, linenumber_ptr, linenumber_limit): New statics. - (put_linenumber): New function. - (generate_bytecode_insns, generate_classfile): Write line numbers. - -1998-07-22 Alexandre Petit-Bianco - - * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P. - (lookup_name, build_known_method_ref, build_class_init, - build_invokevirtual, invoke_build_dtable, match_java_method, - build_field_ref, pushdecl_force_head, build_java_binop, - binary_numeric_promotion, build_decl_no_layout, - build_java_arrayaccess, build_newarray, build_anewarray, - build_java_array_length_access, build_java_arraynull_check): New - extern function prototypes. - (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, - JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in - java-tree.h. - * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref - to NULL - * jcf.h (jcf_out_of_synch): New extern function prototype. - * parse.h: Static/global function implemented in parse.y - prototyped and declarations moved at the end of the file. - (DECL_P): Check that the argument isn't null. - (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, - JAVA_THIS_EXPR): No longer defined here. See java-tree.h - (QUAL_DECL_TYPE): New macro. - (PARAMS): Macro definition removed. - * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS. - (return_statement:): Call build_return. - (field_access:): Call make_qualified_primary in sub rule. - (method_invocation:): Build method invocation and call - make_qualified_primary when processing primaries. - (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling - get_type_from_signature. - (java_check_regular_method): Extra integer 0 argument when calling - lookup_java_method2. - (lookup_java_interface_method2): Extra method DECL argument when - calling lookup_java_interface_method2. - (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created - COMPOUND_EXPR node. - (java_complete_expand_method): Layout current class iff not - already done. Don't process interface's methods. - (java_complete_expand_method): Use super class only if it - exists. Use current class otherwise. - (make_qualified_primary): New function. - (resolve_expression_name): Process qualified expression or - expression from primary the same way. - (resolve_expression_name): Two last arguments to - resolve_field_access are now NULL_TREEs. - (resolve_field_access): New variable is_static. Local field must - be DECLs. is_static computed on field DECLs only. Append code in - where_found to the field access if necessary. Use QUAL_DECL_TYPE - to initialize field_type. - (resolve_qualified_expression_name): New local variable, - previous_call_static and is_static. Handle primaries with function - calls, casts, array references and `this'. `super' now handled as - `(super_class)this'. Use is_static to clarify boolean expressions. - Added code to handle case where a proper handle is required to - access a field. Use QUAL_DECL_TYPE where applicable. - (maybe_access_field): New function. - (patch_method_invocation_stmt): New arguments primary, where, - is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P - deleted. Use `where' as a type to search from if specified. Check - for static method reference where forbidden. Append primary or - current_this to the argument list if not calling constructor nor - static methods. - (check_for_static_method_reference): New function. - (patch_invoke): Layout the class on which new is done if - necessary. - (lookup_method_invoke): Changed format to report errors on - methods. - (qualify_ambiguous_name): New local variable this_found. Now - handle things from primaries. Method call are considered - expression names. - (identical_subpath_p): NULL_TREE arguments to breakdown_qualified - changed into NULLs. - (not_initialized_as_it_should_p): Comply with the new DECL_P. - (java_complete_tree): New case fo RETURN_EXPR. Process function - call arguments in separate function. - (complete_function_arguments): New function. - (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P - anymore. - (patch_assignment): Take the return function slot into account as - a RHS. Distinguish assignment from a return. - (valid_ref_assignconv_cast_p): Use build_java_argument_signature - when checking methods in interfaces. - (resolve_type_during_patch): NULL argument to unresolve_type_p - instead of NULL_TREE. - (patch_newarray): Fixed typo in comment. - (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL. - (build_return, patch_return): New functions. - * typeck.c (lookup_java_constructor): Fixed typo in comment. - -1998-07-21 Per Bothner - - * constants.c (find_name_and_type_constant, find_fieldref_index, - find_methodref_index): New methods. - * expr.c (build_invoke_non_interface): If flag_emit_class_files, - just return given method. Also, rename to build_known_method_ref. - (expand_invoke): Rename call to build_invoke_non_interface. - * java-tree.h, parse.h: Update prototype. - * parse.y, decl.c, jcf-parse.c: Suppress calls to back-end functions - (such as expand_expr_stmt) if flag_emit_class_files. - * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP, - STACK_TARGET, IGNORE_TARGET): New macros. - (code_buffer, code_ptr, code_limit, code_S, code_SP_max): New globals. - (generate_bytecode_insn): New function to generate method's bytecode. - (generate_classfile): Node generate Code attribute for a method. - (code_buffer_grow, push_constant1, push_constant2, push_int_const, - push_long_const, field_op, adjust_typed_op, maybe_wide): - New functions used by generate_bytecode_insn. - - * typeck.c (signature_include_return): Remove variable. - (push_java_argument_signature, build_java_argument_signature): New. - (build_java_signature): Use push_java_argument_signature. - * parse.y: Use build_java_argument_signature instead of fiddling - with signature_include_return. - -1998-07-17 Tom Tromey - - * gjavah.c (print_c_decl): Always generate JArray<>* for array - types. - - * Makefile.in (all.indirect): Added gjavah$(exeext). - (gjavah$(exeext)): Added $(exeext). - (clean): Likewise. - -1998-07-16 Alexandre Petit-Bianco - - * class.c (layout_class): Call to java_layout_parsed_class replace - by safe_layout_class. - * expr.c (build_java_array_length_access): Removed static storage - class in the function definition. - (build_java_arraynull_check): Likewise. - Also fixed typos in two comments. - * lex.c (java_init_lex): Initialize static global kw_length. - (java_lex): Use BUILD_OPERATOR on RETURN_TK. - * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to - java_lex_error. - (JAVA_INTEGRAL_RANGE_ERROR): Likewise. - * parse.h (resolve_no_layout): New static function declaration. - (get_identifier_in_static): Declaration removed. - (java_layout_parsed_class): Function name declaration changed to - safe_layout_class. - (build_newarray_node, patch_newarray, resolve_type_during_patch, - not_initialized_as_it_should_p, build_this): New static function - declarations. - (pushdecl_force_head, build_java_binop, int_fits_type_p, - binary_numeric_promotion, stabilize_reference, - build_decl_no_layout, build_java_arrayaccess): Extern function - declarations moved into their own section. - (build_newarray, build_anewarray, build_java_array_length_access, - build_java_arraynull_check): New extern function declarations. - (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR. - (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New - fake tree codes. - (CALL_CONSTRUCTOR_P): New macro. - * parse.y (kw_length): New static global tree node. - (return_statement): Tagged . - (RETURN_TK): Tagged . - (variable_declarator_id:): Build variable declaration with an - empty initialization value if a syntax error was found in the - initialization part of the variable declaration. - (statement_without_trailing_substatement:): return_statement: now - uses the default rule. - (return_statement:): Temporarily fixed to return NULL_TREE. - (primary_no_new_array:): Call build_this when THIS_TK was parsed. - (class_instance_creation_expression:): Class creation rules now - call build_method_invocation upon reduction. - (array_creation_expression:): Rules call build_newarray_node upon - reduction. - (dim_exprs:): Build a list of dimension expressions. - (dim_expr:): Store location of the OSB_TK in the dimension - expression node. - (method_invocation:): Added a new error rule. - (build_unresolved_array_type): WFL argument may also be an array - on a primitive type. Name of the argument changed to reflect this. - (method_declarator): Insert argument type at the beginning of the - argument type list and later reverse the list. - (unresolved_type_p): Argument 'returned' may be optionally - NULL_TREE. - (java_layout_class_from_source): Function renamed - safe_layout_class. - (resolve_and_layout): Now call resolve_no_layout and - safe_layout_class. - (resolve_no_layout): New function. - (purify_type_name): New function. - (complete_class_report_errors): Call purify_type_name during error - report on a type not found. - (process_imports): error_found local variable doesn't need to be - initialized to zero. - (declare_local_variables): New local type_wfl. Fixed typo in error - message. type_wfl assigned to unresolved type and used to register - incomplete type. Build a WFL around the variable initialization - statement so that debug info can be generated on it. - (source_start_java_method): Reverse argument list after they've - been processed. - (current_this): New static global variable. - (java_complete_expand_methods): Set current_this when appropriate. - (resolve_expression_name): Build correct static and non static - field access bearing a simple name. - (resolve_field_access): Resolve the length field of arrays. Handle - f.m() cases. - (patch_method_invocation_stmt): Set the type of the method - invocation to error_mark_node. This value is later overridden by a - valid type, if any. Don't handle qualified constructor invocation - as qualified method invocation. Call lookup_method_invoke with its - new flag. It's no longer necessary to access the selected method - as the value of a tree list. Handle constructor invocation. - (patch_invoke): Reverse argument list when invoking non interface - methods. Insert call to new as the first argument of the - constructor. - (invocation_mode): Return a INVOKE_STATIC is the invoked method is - defined within a final class. Return INVOKE_STATIC if the invoked - method is a constructor. - (lookup_method_invoke): New lc argument is a flag to indicate a - constructor lookup. Now handle constructor lookup. Choose the most - specific method in case several were matching the invocation - requirements. Return a method decl instead of a tree list featuring - one single method decl element. - (refine_accessible_methods_list): New lc flag argument to - indicate that a constructor is being looked up. - (not_initialized_as_it_should_p): New function. - (java_complete_tree): Now process fake tree codes - JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call - save_expr on resolved function call arguments. Case on - UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR. - (patch_assignment): LHS can be a field access expression. When - dealing with reference, lhs_type is the promoted type of the - rhs_type, not the RHS. Use not_initialized_as_it_should_p where - applicable. - (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR. - (patch_binop): Use not_initialized_as_it_should_p where - applicable. - (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR. - (patch_unaryop): Likewise. And use not_initialized_as_it_should_p - where applicable. - (resolve_type_during_patch): New function. - (patch_cast): Call resolve_type_during_patch to resolve type and - report error accordingly. - (patch_array_ref): Use not_initialized_as_it_should_p where - applicable. Array base expression is saved before being - used. Promote the type of an array elements if it contains non - builtin types. - (build_newarray_node, patch_newarray, build_this): New functions. - -1998-07-16 Tom Tromey - - * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't - increment it in `for' statement. - (print_field_info): If number is inf or nan, don't print it. - (print_method_info): If method name is `delete', just ignore it. - (print_c_decl): Special-case jstringArray. - - * gjavah.c (help): New function. - (no_argument): New function. - (usage): Changed text. - (main): Rewrote argument handling. Now handles -v, --help, - --version. - (version): New function. - (found_error): New global. - (main): Return found_error. - (generate_access): Set found_error. - (print_c_decl): Likewise. - -1998-07-15 Tom Tromey - - * gjavah.c (print_c_decl): Don't print "," when examining field. - Skip type name when looking at "[L" types. - (process_file): Now static. - (generate_access): Now returns int. - (last_access_generated): New global. - (process_file): Clear last_access_generated; make multiple passes - over the class. - (print_field_info): Just return if generate_access returns true. - (print_method_info): Likewise. Also, allow functions to - pass through. - (print_c_decl): Added is_init argument. Print constructors - properly. - (print_cxx_classname): Use UTF8_GET to extract characters from - string. - (print_base_classname): New function. - (print_class_decls): New function. - (process_file): Use it. - (utf8_cmp): New function. - -1998-07-13 Nick Clifton - - * lang-options.h: Format changed to match changes in gcc/toplev.c - to implement a --help option. - -1998-07-10 Brendan Kehoe - - * decl.c (init_decl_processing): Revert change to dtable_type. - -1998-07-09 Per Bothner - - * java-tree.h (CLASS_P): Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4. - -1998-07-08 Brendan Kehoe - - * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type. - - * lang.c (lang_init): Default flag_exceptions to 1, without - checking to see if it's 2 first. - -1998-07-08 Jeffrey A Law (law@cygnus.com) - - * constants.c: Include "system.h". - * decl.c: Likewise. - * lang.c (flag_new_exceptions): Get via extern now. - (lang_init_options): New functions. Turn on flag_new_exceptions. - -1998-07-07 Alexandre Petit-Bianco - - * lex.c (java_lex): Return 0 when we see an invalid character in - the input. - - * lex.c (java_read_char): Specify extra argument when calling - java_lex_error. - (java_read_unicode, java_parse_end_comment, - java_parse_escape_sequence): Likewise, - (java_lex): Specify extra argument when calling - java_lex_error. Test that IDs are beginning with a legal character - for IDs. Handle invalid characters with an error message and a - call to java_lex_error. - (java_lex_error): Adjust column position by new argument - `forward'. Issue an error even if in the middle of reporting an - other error. - -1998-07-07 Brendan Kehoe - - * jcf-io.c (find_class): Zero out BUFFER before we use it, since - we don't explicitly put a null pointer when we're copying it. - -1998-07-07 Tom Tromey - - * gjavah.c (print_cxx_classname): New function. - (super_class_name): Likewise. - (print_super_fields): Removed. - (in_super): Removed. - (print_field_info): Never generate #defines. - (print_c_decl): Changed generated types to match JNI. No longer - print class name before method name. - (print_method_info): Print "static" before static methods. - Print "virtual" before non-final methods. - (usage): Use exit(1), not exit(-1). - (main): Likewise. - (print_field_info): Use %.17g to print a double. - (last_access): New globals. - (process_file): Initialize last_access. - (usage): Now static. - (ACC_VISIBILITY): New define. - (generate_access): New function. - (print_field_info): Call it. - (print_method_info): Likewise. Also, generate information for all - methods, not just native methods. Return void. - (print_c_decl): Return void. - (print_field_info): Return void. - -1998-07-02 Alexandre Petit-Bianco - - * Makefile.in (JAVABISONFLAGS): Specific flag for bison when - processing the jc1 grammar file. Prefix bison functions and - variables with java_. - (parse.c): Dependencies on parse.h and lex.h - * expr.c (build_java_arrayaccess): Function now global. - * java-tree.h: Comment reorganized to carry on previous - classification effort. - (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P, - RESOLVE_TYPE_NAME_P): New flags on WFLs. - * jcf-parse.c (parse_source_file): java_parse_source_file renamed - java_parse (new prefix java_ generated by bison). - (java_layout_parsed_class, java_register_parsed_class): Function - call removed. - (yyparse): Removed unnecessary call to init_outgoing_cpool. - * lex.c (static tree wfl_op): Variable deleted. - (java_init_lex): Initialize kw_super and kw_this. Initialize more - ctxp fields to NULL_TREE. - (java_lex): No longer create WFL for operators. Filename caching - mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings - created as STRING_CST and later expanded. Removed extra argument - to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS - and SUPER. - (build_wfl_node): Removed code in comments. - * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but - store token and location data in the current bison token. - * parse.h: Removed pre-processor based symbol prefixes hack. Moved - static/extern function declaration at the beginning of the file. - (struct qualification): Data structure definition deleted. - (RESOLVE_CHAIN_REMAINDER): Macro definition deleted. - (qualify_ambiguous_name): Function declaration modified. Function - now returns nothing. - (build_array_ref, patch_array_ref, make_qualified_name, - resolve_qualified_expression_name, maybe_generate_clinit, - resolve_field_access): New static function declarations. - (build_java_arrayaccess): New extern function declaration. - (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted. - (CALL_EXPR_PRIMARY): Macro deleted. - (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros. - (struct parser_ctxt): Field initialized_final - removed. non_static_initialized, static_initialized: New fields. - * parse.y (static tree kw_super, static tree kw_this): New global - static. - (%union): tree wfl field of operator member replaced by int - location. WFLs are non longer created for operators. - (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged . - (qualified_name:): Now calls make_qualified_name to build the - identifier. - (type_declaration:): Consider generating when class - parsing completed. - (variable_declarator:): Directly build an assignment node when the - variable is initialized when declared. - (this_or_super:): Build a WFL and set current location when THIS - or SUPER are parsed. - (expression_statement:): Wrap statement around a WFL. - (primary_no_new_array:): Fixed typo. Changed value returned by - THIS_TK because of its new type (temporary). - (dim_exprs:): Temporary fix because of OSB_TK's new type. - (field_access:): Build qualified name with SUPER. - (method_invocation:): Fixed returned value because of SUPER's new - type. - (array_access:): Use OSB_TK location information. - (post_increment_expression:, post_decrement_expression:, - unary_expression:, pre_increment_expression:, - pre_decrement_expression:, unary_expression_not_plus_minus:, - cast_expression:, multiplicative_expression:, - additive_expression:, shift_expression:, relational_expression:, - equality_expression:, and_expression:, exclusive_or_expression:, - inclusive_or_expression:, conditional_and_expression:, - conditional_or_expression:, assignment:): Use new location/token - information available on operators. - (create_class): Set super_decl_type to NULL_TREE when processing - java.lang.Object. - (register_fields): Field initialization is now a MODIFY_EXPR - node. Chain initialization code to the matching lists (according - to the field declaration modifiers). - (maybe_generate_clinit): New function. - (method_header): Don't set method's DECL_NAME to a WFL when adding - methods to java.lang.Object. - (resolve_and_layout): Now can return NULL_TREE if the type - resolution fails. Otherwise, return the class DECL instead of its - TYPE. - (check_method_redefinition): Don't patch method DECL_NAME if it - belongs to java.lang.Object. - (process_imports): Simply assign error_found to the value returned - by check_pkg_class_access. - (declare_local_variables): Don't use their init statements (if - any) when parsing error were previously found. Reuse MODIFY_EXPR - build during parsing as an init statement. - (java_method_add_stmt): Now return the current method body. - (java_layout_parsed_class, java_register_parsed_class): Functions - removed. - (java_complete_expand_methods): Initialize the constant pool on a - per class basis. Layout the classes before expanding their method - bodies. Don't try expand artificial constructor code if error were - found. Make the classes data and register them if no error were - found. - (java_complete_expand_method): Retrieve an artificial constructor - argument list before entering its body. Assign the top block to - the artificial constructor function body and set types of declared - blocks and compound statements to void. Walk method body if not an - artificial constructor. - (make_qualified_name, cut_identifier_in_qualified): New functions. - (resolve_expression_name): Fixed comments. Save/restore the - current class CLASS_LOADED_P flag value. Build non qualified - static field access and handle qualified expression names. - (resolve_field_access, resolve_qualified_expression_name): New - functions. - (patch_method_invocation_stmt): Use the new expression resolution - scheme, calling resolve_field_access when the function call is - resolved as an expression. - (qualify_ambiguous_name): Function rewritten to work on qualified - expression produced by make_qualified_name. - (java_complete_tree): Promote type when function's argument are - RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch - the assignment to discover further errors if RHS is a expression - name that fails to evaluate. Declare LHS initialized even though - the assignment failed. Don't use the location variable and removed - extra argument in patch function calls. Now handle the ARRAY_REF - case and build internal string representation when STRING_CSTs are - walked. - (build_method_invocation): Don't wrap function call around a WFL. - (build_assignment): Likewise. Use the operator location - information. - (patch_assignment): Handle array access LHSs. Handle error - provenance, resulting in a better error report. - (build_binop): Use op_location from operator as binop location - information. - (build_unaryop, build_incdec, build_cast): Likewise. - (patch_binop): Extract location information from the node. Fixed - typo in error message. - (patch_unary_op): Extract location information from the node. - (build_array_ref, patch_array_ref): New functions. - -1998-07-01 Tom Tromey - - * expr.c (expand_java_INSTANCEOF): Changed calling convention to - match _Jv_IsInstanceOf. - * decl.c (init_decl_processing): Use _Jv_NewArray, not - soft_newarray. Use _Jv_IsInstanceOf, not soft_instanceof. - -1998-06-30 Tom Tromey - - * decl.c (init_decl_processing): Functions are now named - _Jv_MonitorEnter and _Jv_MonitorExit, and return jint. - -1998-06-29 Per Bothner - - * java-tree.h (load_class): Add prototype. - * class.c (is_compiled_class): Add missing arg to load_class. - * expr.c (expand_java_NEW): Call load_class. - * parse.y (process_import): Removed bogus use of void return value. - -1998-06-25 Per Bothner - - * decl.c, java-tree.h (soft_athrow_node): Renamed to soft_node. - Function name is "_Jv_Throw" instead of "soft_athrow". - * decl.c, java-tree.h (soft_new_node): Renamed to alloc_object_node. - Function name is "_Jv_AllocObject" instead of "soft_new". - Takes an extra parameter (object size). - * expr.c: Update calls. - -1998-06-24 Per Bothner - - * lex.c (java_get_line_col): Handle end-of-file. - * except.c (expand_end_java_handler): Handle null type (i.e. finally). - -1998-06-24 Andrew MacLeod - - * lang.c (lang_init): Make -fexceptions the default. - * except.c (maybe_start_try, maybe_end_try): Don't do anything if - exception handling is not turned on. - -1998-06-23 Andrew MacLeod - - * lang.c (flag_new_exceptions): Make this this default. - * decl.c (end_java_method): Call emit_handlers. - * except.c (method_init_exceptions): Set language code and version. - (expand_start_java_handler): Enable exception, and call - expand_eh_region_start. - (expand_end_java_handler): Enable exception, and set up catch blocks. - (emit_handlers): New routine to generate the saved handlers. - * java-except.h (emit_handlers): Add prototype. - -1998-06-12 Per Bothner - - We used to have three different representations of the constant pool: - the CPool structure, the tree_constant_pool, and the constructures - used to build the Class object (which may need class and string - constants) in compiled code. None were appropriate for compiling - to .class files, so I did a major overhaul. - - First, the tree_constant_pool array was removed. Things were - modified to the CPool structure in the JCF could be used. - Second, a "capacity" field was added to the CPool, and functions - written to search for a matching constant, adding one if not found. - The code that generated the Class object was changed to use a CPool. - The actual TREE_LISTs used to build the CONSTRUCTORs used for - the static Class object are now only in build_constants_constructor. - Finally, I wrote code which can generate a .class file (including its - constant pool) from the RECORD_TYPE of a class. This is a big step - on the way to compiling Java source into .class files. - - * jcf-write.c: New file. Writes out a RECORD_TYPE as a .class file. - * Makefile.in (JAVA_OBJS): Added jcf-write.o. - - * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag, - CONSTANT_ResolvedString, CONSTANT_ResolvedClass): New macros. - (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME, - COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined. - (COMPONENT_REF_CLASS): Replaced by COMPONENT_REF_CLASS_INDEX. - (lang_type): Removed constant_pool field. - * jcf.h (CPool): Renamed size to count. Added field capacity. - (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2, - CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT): New macros. - Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros. - - * constants.c (current_constant_pool_tags, current_constant_pool_data, - current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool. - * constants.c (build_constants_constructor): Use new outgoing_cpool. - (set_constant_entry, find_constant1, find_constant2, - find_class_constant, count_constant_pool_bytes, write_constant_pool, - find_utf8_constant, find_class_or_string_constant): New functions. - - * jcf-parse.c (load_class): Don't save/restore tree-constant_pool. - (get_constant): Use current_jcf.cpool instead of tree_constant_pool. - (give_name_to_class, get_class_constant): Likewise. - * jcf-parse.c, java-tree.h (tree_constant_pool): Removed. - (get_name_and_type_constant, get_ref_constant): Removed. - * parse.h (parser_ctxt): Remove field tree_constant_pool. - * parse.y: Don't save/restore tree_constant_pool. - * verify.c (verify_jvm_instructions): Update for new approach. - * expr.c (expand_invoke, expand_java_field_op): Likewise. - - * lang-options.h: Added -femit-class-file, -femit-class-files. - * lang.c (flag_emit_class_files), java-tree.h: New flag. - (lang_f_options): Added "emit-class-file(s)". - - * expr.c (build_java_arrayaccess): Generate more efficient array - bounds checking, by using unsigned compare. - - * expr.c (expand_invoke): Re-arrange error checks to make more robust. - -1998-06-10 Alexandre Petit-Bianco - - * parse.h: New comment on the handling of unresolved type - identifiers. JDEPs are now part of the jdep_code enum. - (typedef struct jdep): Now use enum jdep_code or int, depending on - availability. Both are narrowed down to an 8 bits bitfield. - (CALL_EXPR_PRIMARY): Fixed comment. - -1998-06-10 Tom Tromey - - * Make-lang.in (java): Added gjavac and jvgenmain. - (java.start.encap): Depend on gjavac. - (java.rest.encap): Depend on jvgenmain. - - * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++. - (JAVA_CROSS_NAME): Likewise. - (java.all.build): Depend on jvgenmain and gjavac. - (java.all.cross): Depend on jvgenmain and gjavac-cross. - (jvgenmain$(exeext)): New target. - (java.install-common): Wrote. - * config-lang.in (compilers, stagestuff): Added gjavac and - jvgenmain. - -1998-06-10 Dave Brolley - - * lang.c (lang_decode_option): New argc/argv interface. - -1998-06-09 Alexandre Petit-Bianco - - * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard. - * decl.c (build_decl_no_layout): New function. - * expr.c (java_lang_expand_expr): Layout declarations found in - blocks before they're pushed. - * jcf-parse.c (load_class): Save current line when parsing class - file. - (parse_source_file): Register class before expanding their - methods. - * lang.c (put_decl_node): Produce `null' when `void *' is - processed. - * lex.c (static tree wfl_op): New static global, for error report - on casts. - (java_init_lex): wfl_operator and wfl_op initialized - here. Filename caching added for wfl_op. Return wfl_op when `(' is - parsed. - * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast, - patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p, - build_unresolved_array_type): New static function definitions. - (build_decl_no_layout): New extern function declared. - (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the - faulty modifier exists. - (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros. - (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned. - (UNARY_PLUS_EXPR): New fake operator. - (struct parser_ctxt): New field osb_number. - * parse.y (static tree wfl_operator): New static WFL for operator - bound error messages. - (DECR_TK, INCR_TK): Moved. - (OP_TK): Tagged . - (array_type:): Now call build_unresolved_array_type. - (dim_expr:): Count the number of '[' seen. - (post_increment_expression, post_decrement_expression, - pre_increment_expression, pre_decrement_expression, - unary_expression_not_plus_minus, unary_expression:): Actions are - now building the corresponding unary expressions. - (cast_expression:): Actions are now building cast expressions. - (build_unresolved_array_type): New function. - (create_interface): Reset the number of declared interfaces. - (create_class): Likewise. - (method_header): Methods declared within the scope of an interface - are now implicitly set public and abstract. - (java_complete_class): Variable's and parameter's type are patched - with a promoted type. - (declare_local_variables): Resolved non builtin types are promoted - before being used to build a variable decl. Removed type patch - posted on variable initialization statement. - (source_start_java_method): Use build_decl_no_layout to build the - decl of a parameter of incomplete type. - (java_register_parsed_class): Process interfaces too. Call - rest_of_decl_compilation on each processed class declarations. - (java_complete_expand_methods): Don't attempt to expand things in - interfaces. - (java_complete_tree): Process CONVERT_EXPR, even though it always - has a type. Propagate error_mark_node to node's type too. Promote - method's call argument type and return error_mark_node if - argument's completion didn't work. MODIFY_EXPR can have a WFL as a - RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now - handle unary operator nodes. - (build_assignment): Added comment. - (print_int_node): New function. - (patch_assignment): New second argument. New error handling. Use - print_int_node. Handle references. Use can_cast_to_p to issue - different error message according to the context and check upon - the initialization of the RHS. - (can_cast_to_p, valid_ref_assignconv_cast_p): New functions. - (operator_string): Handle more operators. - (patch_binop): No longer use a function static - wfl_operator. Improved error message on shift distance. - (build_unaryop, build_incdec, build_cast, patch_unaryop, - patch_cast): New functions. - -1998-06-05 Per Bothner - - * jvspec.c: New file. - * Make-lang.in: New rules to build gjavac from jvspec.c and ../gcc.c. - - * java-tree.h (identifier_subst): Add declaration. - -1998-06-04 Tom Tromey - - * jvgenmain.c (main): Generate call to JvRunMain. - - * class.c (make_class_data): Push value for "sync_info" field. - * decl.c (init_decl_processing): Push "sync_info" field. - -1998-06-03 Per Bothner - - * typeck.c (build_java_array_type): Set TYPE_NAME to actual - Java (source) name, not signature. - Set TYPE_ALIGN to (at least) that of element_type. - -1998-06-02 Per Bothner - - * class.c: Moved classname-mangling-rekated code to ... - * mangle.c: ... this new file. - * jvgenmain.c: New program (needs mangle.c) to generate main program. - * Makefile.in: Update for above changes. - -1998-06-01 Alexandre Petit-Bianco - - * expr.c (truthvalue_conversion): Convert integer and floating - point value to their truth value. - * lex.c (java_lex): Handle the `null' literal. - * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros. - (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, - ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED): - New macros. - - * parse.y: Reorganization/documentation on token declaration. - (binop_lookup[]): New added new tree codes. - (relational_expression): Build corresponding binary operators. - (equality_expression, conditional_and_expression, - conditional_or_expression): Likewise. - (java_complete_class): Fix crash in debug message. - (java_complete_tree): Check initialization of method call - arguments. Further bogus node evaluation to detect more error - during assignments. Handles more binary operators. - (patch_assignment): Use DECL_P. - (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree - code. - (operator_string): Handle more case. Compacted source. - (patch_binop): Changed function comment. Checking for - uninitialized first operand takes the compound assignment into - account and uses DECL_P. Checking for uninitialized second operand - delayed to routine's end. Use macros to issue type bound error - messages and issue messages on both operands if their types are - different. Force fixed type into node. Handle all binary - operators. - -1998-05-27 Alexandre Petit-Bianco - - * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros. - * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to - build operator node and return tokens. - * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros. - * parse.h (java_complete_tree): Changed returned type in prototype. - (build_method_invocation, build_assignment, patch_assignment, - patch_binop): New static function declarations. - (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P, - BUILD_EXPR_WFL): New macros. - * parse.y (enum tree_code binop_lookup[]): New static for token to - TREE_CODE lookup. - (%union): Parser union has new sub-structure `operator'. - (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK, - PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK, - ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK, - ASSIGN_ANY_TK): Tokens tagged `operator'. - (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK, - AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK, - MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK, - REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'. - (assignment_operator:): Rule tagged `operator'. - (expression_statement:): Re-installed default rule. - (method_invocation:): Sub rules call build_method_invocation. - (postfix_expression:): Don't attempt to resolve name here. Just - return an ID. - (multiplicative_expression:): Sub-rules build corresponding binop - expression node. - (additive_expression:, shift_expression:, and_expression:, - exclusive_or_expression:, inclusive_or_expression:): Likewise. - (assignment:): Sub rule invoke build_assignment. - (assignment_operator:): Default rules on sub rules. - (force_error): Added documentation on this variable. - (declare_local_variables): Build initialization calling - build_assignment. - (expand_start_java_method): Removed unused rtx declaration. Mark - arguments as already initialized. - (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL. - (java_complete_expand_methods): Don't process next method if - completion of the previous one triggered errors. - (java_complete_expand_method): Call source_end_java_method if no - error were found during completion. - (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve - locals declaratilon. Handle names found within a class. Return - error_mark_node when things aren't found. - (patch_method_invocation_stmt): Return error_mark_node on failures. - (patch_invoke): Removed unused local. Return the correct node. - (java_complete_tree): Now returns a value. The BLOCK section binds - local identifiers and the type of a BLOCK is now void. Assign the - result of operand completion on COMPOUND_EXPR. Assign the - encapsulated node of a WFL to the result of its completion, except - when the node is an identifier. Now handle MODIFY_EXPR and several - binary operators. Return error_mark_node on errors. - (build_method_invocation, build_assignment, patch_assignment, - build_binop, operator_string, patch_binop): New functions. - * typeck.c (binary_numeric_promotion): New function. - -1998-05-21 Per Bothner - - * class.c (identifier_subst): New convenience wrapper for ident_subst. - Replace most uses of ident_subst by identifier_subst. - - * class.c (push_class_static_dummy_field): Removed function. - (build_class_ref): Find Class object decl by looking up "CNAME.class", - instead of looking got "class" static field. Create that decl here. - (class_identifier_node): Removed; no longer needed. - (init_class_processing): Don't init class_identifier_node. - * jcf-parse.c (jcf_parse): Don't call push_class_static_dummy_field. - Do nreverse 0 times (instead of twice) for Object and Class. - * parse.y (java_layout_parsed_class): No push_class_static_dummy_field. - -1998-05-20 Per Bothner - - * jcf-parse.c (parse_class-file): Set lino to smallest line number, - while initializing linenumber_count and linenumber_table. - Do it before init_function_start (which calls emit_line_note). - * expr.c (expand_byte_code): Don't need to clear lineno here. - -1998-05-18 Tom Tromey - - * class.c (append_gpp_mangled_type): If `qualifications' is >=9, - then mangle number as _N_. - - * class.c (mangle_class_field): New function. - (build_class_ref): Set assembler name of class reference using - mangle_class_field. - (push_class_static_dummy_field): Likewise. - -1998-05-17 Michael Tiemann - - * parse.y (source_start_java_method): Use TREE_SET_CODE instead - of assigning to TREE_CODE. The latter method exploits a feature - of GCC that is not ANSI compliant. - -1998-05-12 Alexandre Petit-Bianco - - * decl.c (pushdecl_force_head): New function. - (pushlevel): Removed conditional printf. - (complete_start_java_method): Don't enter local variable scope if - function is compiled from source code. - * expr.c: parse.h now included - (java_lang_expand_expr): New function. - * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of - printf. Terminate buffer when doing directories. - * jcf-parse.c (parse_source_file): Call lang_init_source before - parsing and before code generation. - * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally - use printf if the macro is defined. - * lang.c (lang_init): Install lang_expand_expr hook on - java_lang_expand_expr. - (java_dummy_print): New function. - (lang_init_source): New function. - * lex.c (java_lex): Remember location of an opening brace at the - second nesting level. - (java_is_eol): Unget character seen after a CR if it is EOF. - * parse.h: Now includes lex.h - (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use - printf if the macro is defined. - (expand_start_java_method, build_expr_block, enter_block, - exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks): - New static function declarations. - (pushdecl_force_head): New extern function declaration. - (INCOMPLETE_TYPE_P): New macro. - (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum. - (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY, - BLOCK_EXPR_ORIGIN): New macros. - (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST, - DECL_SOURCE_LINE_LAST): New macros. - (struct parser_ctxt): Removed field current_method_decl, redundant - with the field current_function_decl. Added fields - first_ccb_indent1 and pending_block. - * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK, - BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules - tagged - (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs. - (compilation_unit:): Cosmetic on sub rule. - (type_declaration:): Cosmetic on sub rules. Added an error rule. - (variable_initializer:): Installed default rule on expression:. - (method_declaration:): method_header: starts a new - method. method_body: installs the function body, absorbs blocks - emitted for temporary variable scopings, pops function's body block - and merges function's last statement lineno in DECL_SOURCE_LINE. - (method_body:): Installed default rules. - (block:): Call enter_block when an opening brace is seen. Absorb - scoping blocks and call exit_block when a closing brace is seen. - (block_statement:): Cosmetic changes. - (method_invocation:): Create WFL around CALL_EXPR node. - (patch_stage): Added comment around definition. - (method_header): Try to use first_ccb_indent1 as the first line of - the method, so BP debug info are emitted at the first opening - brace of the function. If the function has no body, use the - location of the function's name. Override currently defined method - name with the matching WFL so we can point redefinition errors - using the location where the function's name was declared. - (check_abstract_method_header): Interprets DECL_NAME as an - identifier or as a WFL, accordingly. - (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM. - (check_method_redefinition): Use DECL_NAME as a WFL. Extract - location and name information out of it and reinstall DECL_NAME to - its original identifier node value. - (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the - function's source code). - (read_import_dir): Test the value returned by find_class and issue - a fatal accordingly. - (declare_local_variables): Push a new block for the scope of the - new variable(s) if code has been already generated at that nesting - level. Pinpoint redefinition errors using the variable id - WFLs. Generate initialization code if necessary. If the variable - type is incomplete, register a patch on its decl. - (source_start_java_method): Rewritten. Define a new block for the - function's parameters. Build parameter decl out of function's - arguments and register them for a patch if their types are - incomplete. - (expand_start_java_method): Includes the part of - source_start_java_method that was pushing the parameter decls and - completing the method start code. - (source_end_java_method): Removed call the expand_end_bindings and - poplevel (already taken care of). Reinstall function's arguments - and get function's last line of code before calling - expand_function_end. - (java_method_add_stmt): New comment before the function's - code. Complement the second operand of the current COMPOUND_EXPR - if necessary. - (java_complete_expand_methods): Don't generate debug info on line - zero when expanding a generated constructor. - (java_complete_expand_method): Set start and end line numbers for - a artificially generated constructor to one and manually call - enter_block and exit_block when defining it. For all methods: - expand function's start calling the new expand_start_java_method - and invoke java_complete_tree on the effective method's body, if - any. - (resolve_expression_name): Now use lookup_name_in_blocks to search - local variable decls and print out an error when variables are - undefined. - (patch_method_invocation_stmt): Inserted comment before the - function's code. - (lookup_method_invoke): Chain method's arguments using chainon - with the current arg list as a second argument. Inserted missing - IDENTIFIER_POINTER when reporting an error on methods not found. - (refine_accessible_methods_list): Don't retain constructors. - (patch_arguments): Function removed. - (java_complete_tree): Inserted comment before the function's - code. New case for BLOCKs. Moved the WFL case a bit - further. Complete function's arguments. - (build_expr_block, enter_block, exit_block, lookup_name_in_blocks, - maybe_absorb_scoping_blocks): New functions. - -1998-04-27 Alexandre Petit-Bianco - - * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if - previously set. - * jcf-parse.c (parse_source_file, java_error_count): New forward - and extern declarations. - (java_parse_abort_on_error): Macro moved. - (jcf_parse_source): fatal called if fopen fails. Now calls - parse_source_file. - (parse_source_file): New parse_only parameter. Reflects the - elimination of the second pass. - (yyparse): parse_source_file called with argument set to 0. - * jcf.h (JCF_ZERO): Sets java_source to zero. - * lex.c (java_init_lex): pass argument is gone. Function modified - to be called once during the analysis of a file. - (java_unget_unicode): Fixed typo in fatal message. - (java_get_line_col): Likewise. - (java_lval): Likewise. String literals no longer built during - second pass. - * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into - account. - * parse.h (MODIFIER_WFL): New macro. - (parse_check_super, parser_check_super_interface): Now return int. - (parser_chain_incomplete_item, not_builtin_p, - complete_method_decl): Declarations removed. - (build_method_invocation_stmt, build_invoke): Renamed using the - `patch' instead of `build' - (register-incomplete_type, obtain_incomplete_type, - java_complete_tree, java_complete_expand_method, - unresolved_type_p, create_jdep_list): New function declarations. - (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS, - END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted. - (jdep): New typedef on new struct _jdep. - (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL, - JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN, - JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED, - JDEP_RESOLVED_P): New macros. - (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD, - JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE, - JDEP_VARIABLE): New enum values and jdep kinds. - (jdeplist): New typedef on struct _jdeplist. - (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New - macros. - (CALL_EXPR_PRIMARY): New macro. - (struct parser_ctxt): Fields java_pass, current_method_decl, - method_decl_list deleted. New field jdeplist. - (INCOMPLETE_P): Macro deleted. - * parse.y (single_type_import_declaration:): Removed pass switch. - (type_import_on_demand_declaration): Likewise. - (field_declaration:): Removed pass switch on all sub rules. - (class_declaration:): Call the complete_class_decl removed on - class_body rules. - (method_declaration:): Removed second pass switch. No longer chain - methods decl when method_header reduced. - (method_header:): Sub rules no longer depend on pass switch. - (method_declarator:): Likewise. - (method_body:): Likewise. - (abstract_method_declaration:): Likewise. - (block_statement:): Likewise. - (local_variable_declaration:): Likewise. - (argument_list:): Likewise. - (method_invocation:): Likewise. Call to build_method_invocation_stmt - removed. Partial CLASS_EXPR tree node built instead. - (postfix_expression:): Removed pass switch on all sub rules. - (java_pop_parser_context): Free classd_list content. - (yyerror): Call obstrack_grow0 to finalize error message. - (check_class_interface_creation): Comment modified to reflect new - returned value meaning. Removed second pass switch. Return 1 if an - error was found, 0 otherwise. Adjust pointer on filename if a - leading path separator was found. - (maybe_create_class_interface_decl): Removed first pass switch - when linking the class decl to the class_list. Install a new - jdep_list for the class. - (add_superinterfaces): List of unresolved interfaces is - gone. Unresolved interfaces are directly added to the current - dependencies list. - (create_interface): Second pass shortcut removed. - ctpx->modifier_ctx access through MODIFIER_WFL. - (create_class): Second pass shortcut removed. Call to - register_incomplete_type replaces the call to - parser_chain_incomplete_item. - (complete_class_decl): Function removed. - (duplicate_declaration_error): New way of retrieving redeclared - item type. - (register_fields): Call to lookup_modifier_cl replaced by - MODIFIER_WFL. New way of handling unresolved type, using - unresolved_type_p and obtain_incomplete_type. - register_incomplete_type replaces call to parser_chain_incomplete_item. - (patch_stage): New static global variable. - (method_header): New way of handling unresolved type, using - unresolved_type_p and obtain_incomplete_type. patch_stage used to - indicates that the method decl needs to be patched. - (check_abstract_method_header): Call to lookup_modifier_cl - replaced by MODIFIER_WFL. - (method_declarator): Incomplete argument type are registered - calling register_incomplete_type. Patch on the declared method is - issued in that case. - (unresolved_type_p): New function. - (parser_check_super_interface): New comment to reflect function's - modified returned type (int). Function and has a new argument - this_wfl. Call to parse_error_context uses this_wfl instead of - relying on lookup_cl. - (parser_check_super): Comment reflects function's new returned - type (int). Function returns nonzero value on error. - (create_jdep_list, reverse_jdep_list, obtain_incomplete_type, - register_incomplete_type, jdep_resolve_class): New functions to - handle incomplete types in declarations. - (java_complete_class): Rewritten to work with the new incomplete - type handling scheme. - (complete_class_report_errors): Likewise. - (complete_method_decl): Removed: it jobs is now handled by - java_complete_class. - (do_resolve_class): Class loaded in not already loaded and not - found in Java source code. - (java_check_regular_methods, java_check_abstract_methods): Don't - call complete_method_decl anymore. - (lookup_modifier_cl, not_builtin_p): Functions deleted. - (read_import_dir): Got rid of the pass number dependency. - (declare_local_variables): New handling of unresolved types (patch - issued). - (source_start_java_method): New parameter level. Function called - with level set to 1 when argument types are potentially - unresolved. Called to complete the job with level set to 2 once - types are complete. - (source_end_java_method): Call to permanent_allocation - removed. Waiting to be replaced by a more suitable obstack - management. - (java_complete_expand_methods, java_complete_expand_method, - java_expand_finals): New functions. - (build_method_invocation_stmt): Renamed - patch_method_invocation_stmt. Extracts function call expression - (wfl) and arguments (args) from CALL_EXPR tree operands. - (build_invoke): Renamed patch_invoke. Fixed typo in fatal - call. Patch the function and argument operand of the CALL_EXPR - tree argument. - (patch_argument, java_complete_tree): New functions. - -1998-04-20 Per Bothner - - Recover from missing fields and methods (i.e. error instead of fatal). - * decl.c, java-tree.h (TYPE_identifier_node): New global constant. - * expr.c (expand_invoke): Recover from missing method. - (expand_java_field_op): Recover from missing field. - Inline references to java.lang.{Integer,Char,...}.TYPE. - * typeck.c (get_type_from_signature), java-tree.h: New function. - * class.c (add_method): Use get_type_from_signature. - (build_class_ref): Handle a class that was not found. - * typeck.c (convert): Handle conversion to pointers (for convenience). - * verify.c (verify_jvm_instructions): Use get_type_from_signature - instead of lookup_field to handle missing fields. - - * jcf-parse.c (process_zip_dir): Set java_source. - -1998-04-20 Brendan Kehoe - - * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME. - -1998-04-14 Alexandre Petit-Bianco - - * jcf-parse.c (load_class): Don't change input_filename before - calling jcf_parse_source (but still do it before calling - jcf_parse). - (jcf_parse_source): Assign input_filename after having saved the - parser context. - * lex.c (java_init_lex): Chain a WFL node to the import on demand - list. ctxp->modifier_ctx zeroed according to its new - definition. ctxp->filename initialized. Removed - JAVA_MODIFIER_CTX_UNMARK. - (java_unget_unicode): Update the character based column position. - (java_allocate_new_line): ref_count not used anymore. Always free - ctxp->p_line. Initialize c_line->char_col to 0. - (java_get_unicode): Update the character based column position. - (java_lex): Use ctxp->elc to store current position in source - file, at the beginning of the parsed token. Set modifier_ctx entry - corresponding to the parse modifier to a WFL node. Return a WFL - node when an identifier is parsed. - (java_lex_error): Now uses ctxp->elc to store current position in - source. - (build_wfl_node, java_is_eol, java_get_line_col): New functions. - * lex.h (build_wfl_node): New function definitions. - (struct java_line): ref_count and next fields are gone. New field - char_col. - (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN, - JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted. - (JAVA_COLUMN_DELTA): New macro. - (java_lc): New typedef on new struct _java_lc. - * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types. - (parse_error_context, parse_warning_context): Changed prototypes. - (java_get_line_col): Added as an available global function. - (JAVA_MODIFIER_CTX_UNMARK): Macro removed. - (IC_DECL): Replaced by macro IC_TYPE - (DEPEND_WFL): New macro. - (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first - wrong modifier. - (exit_java_complete_class): Removed a commented out statement. - (struct parser_ctxt): Added comments on fields. modifier_ctx is - now an array of tree nodes. Deleted fields line_list and - e_line. New field elc, to replace e_line. - * parse.y (array_type:): Build WFL node. - (qualified_name:): Build a single WFL node out of two. Retain - the location information of the first node in the resulting node. - (package_declaration:): Use package name as a WFL node - (single_type_import_declaration:): Use imported name as a WFL node. - (type_import_on_demand_declaration:): Use root of the imported - packages as a WFL node. - (field_declaration:): Removed unused local variable cl. - (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK. - (yyerror): New static elc. Removed static error_line, error_pos. - New local code_from_source. Save ctxp->elc into elc at the first - pass. Call java_get_line_col to get a string of the line where - the error occurred. - (debug_line): Removed static function. - (parse_error_context, parse_warning_context): Parameter cl is now - a WFL node. Use its value to initialize ctxp->elc. - (redefinition_error): Parameter cl is now a WFL node. - (parse_add_interface): New parameter wfl. No longer call - lookup_cl, use wfl instead. - (check_class_interface_creation): Parameter cl is now a WFL node. - (maybe_create_class_interface_decl): Likewise. - (add_superinterfaces): New function. - (create_interface): Removed local cl, node, super_decl, - super_decl_type. Function now uses id as a WFL node. Better - warning/error report on obsolete or forbidden mix of - modifiers. Now calls add_superinterfaces to register interfaces. - (create_class): Removed local cl, node. Local variable id is used - as a WFL node. Better error report on forbidden modifier - mix. Uses add_superinterfaces to register interfaces. - (find_field): Argument cl is now a WFL node. Now store the WFL - node of a fields that needs to be checked for their - initialization. - (method_header): Local variable node non longer used. Local - variable id replaces cl. - (check_modifiers_consistency): Local variable cl is now a WFL - node. - (method_declarator): Local variable cl replaced by parameter id. - (parser_qualified_name): Now uses parameter name as a WFL node. - (parser_check_super_interface): New parameter wfl, for achieve - greater accuracy during error reports. - (parser_chain_incomplete_item): New parameter named location. Used, - along the decl, to construct the incomplete item node. - (java_complete_class): resolve_class now uses WFL node extracted - from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE - where appropriate. - (complete_method_decl): Unresolved function's argument types are WFL. - (resolve_class): Parameter cl is now a WFL node. - (resolve_and_layout): Likewise. - (do_resolve_class): Likewise. Try first to use cl and then do the - lookup on the decl when calling check_pkg_class_access. - (complete_class_report_errors): Use IC_TYPE in place of - TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency - instead of doing a lookup over the decl. - (java_check_final): Use WFL info from field tree list. - (lookup_cl): Rewritten and returns a statically defined WFL node. - (lookup_modifier_cl): Now uses information from WFL nodes. - (process_imports): Likewise. - (read_import_dir): name and cl arguments replaced by a single WFL - node. Function modified accordingly. - (find_in_imports_on_demand): Now uses WFL node. - (check_pkg_class_access): cl argument is now a WFL node. - (declare_local_variables): Fixed to use WFL nodes. - (resolve_expression_name): Likewise. - (build_method_invocation_stmt): name_combo argument renamed - wfl. Function modified to use WFL nodes. - (build_invoke): cl used as a WFL node when calling build_expr_wfl. - (lookup_method_invoke): cl is now a WFL node. Added missing - IDENTIFIER_POINTER to class type decl name. - -1998-04-14 Dave Brolley - - * lang.c (init_parse): Now returns char* containing the filename. - -1998-04-10 Per Bothner - - * class.c (layout_class): Mangle repeated arg types to match cc1plus. - - * decl.c, java-tree.h (integer_four_node): New INTEGER_CST node. - * class.c (make_class_data): If flag_assume_compiled, initial class - state is CSTATE_PREPARED; make superclass and interfaces direct - references, rather than constant pool indexes. - -1998-04-09 Alexandre Petit-Bianco - - * parser.y: Include flags.h. Removed debug variable pl. - (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl. - (block:): Likewise. - (labeled_statement_nsi:): Generate debug info when reducing - expression_statement:. - (check_pkg_class_access): get_access_flags_from_decl invocation - fixed for new CLASS_* flags location. - (source_end_java_method): Save/restore parser context when - entering/leaving this routine. Restore lineno to its right value - before calling expand_end_bindings. - (build_method_invocation_stmt): build_invoke called with the - current line information. - (build_invoke): New argument cl. Wrap the function call around a - wfl node. - (refine_accessible_methods_list): Changed comment, removed - unnecessary code. - * parse.h: Fixed typo in comments. - (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location. - (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro. - (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1, - parser_ccb_indent. - * lex.c (java_lex): Record the last closing curly bracket of a - function. - * jcf-parse.c (jcf_parse_source): Now calls - java_check_methods. Clarified comment, fixed typo. - -1998-04-09 Dave Brolley - - * lang.c (init_parse): Expose for non USE_CPPLIB builds. - (finish_parse): Expose for non USE_CPPLIB builds. - -1998-04-08 Jeffrey A Law (law@cygnus.com) - - * lang.c (lang_print_xnode): New function. - -1998-04-03 Per Bothner - - * decl.c (class_dtable_decl), java-tree.h: New tree node. - * class.c (get_dispatch_vector, get_dispatch_table): New functions - used to build a class's dispatch table. - (make_class_data): Generate dispatch table if flag_assume_compiled. - Set dtable of class object to address of class_dtable_decl. - - * decl.c (int_decl_processing): Make soft_badarrayindex_node - be volatile and have side effects - generates better code. - - * class.c, expr.c, parse.y: CLASS_INTERFACE, CLASS_FINAL, etc: - These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs. - - * expr.c (expand_invoke): If class is final, method is - effectively final, so can call it directly. - - * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE): New macros. - - * Makefile.in, Make-lang.in: Add missing $(exeext)s. - -1998-03-19 Alexandre Petit-Bianco - - * parse.y (build_method_invocation_stmt): Removed extra argument - to build_invoke. - -1998-03-16 Alexandre Petit-Bianco - - * expr.c (dtable_indent): Now static global. - (expand_invoke): Now call invoke_build_dtable and - build_invokevirtual. - (invoke_build_dtable, build_invokevirtual): New functions. - * jcf-io.c (find_class): Defer issuing a warning by setting - jcf->outofsynch to 1. - * jcf-parse.c (jcf_out_of_synch): New function. - (load_class): Test this_jcf.outofsynch flag and call - jcf_out_of_synch accordingly. - * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in - comment indentation. - * lex.c (java_get_unicode): Fixed code indentation. - (java_lex): Create string literal. Fixed typo. Removed several - premature obstack_free. - * parse.h: New enums for name resolution and invocation mode. - (struct qualification): New data structure. - (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros. - (do_resolve_class, build_method_invocation_stmt, - breakdown_qualified, qualify_ambiguous_name, resolve_and_layout, - debug_line, identical_subpath_p, invocation_mode, - refine_accessible_methods_list, build_invoke, - lookup_method_invoke): New functions declared. - (build_invokevirtual, invoke_build_dtable, match_java_method, - build_field_ref, jcf_out_of_synch): New references to external - functions. - (struct parse_ctxt): Removed artificial_constructor field. - * parse.y: (array_type:): Type defined for this rule. - (class_type:): Installed default rule for interface_type:. - (array_type:): Now build Java array type. - (qualified_name:): Now use obstack_grow0. - (method_declaration:): Skip the artificial constructor added to - the list, if any. - (abstract_method_declaration:): Execute the code only during pass 1. - (block:): Installed default rule in block_statements:. - (block_statement:): Add the statement to the method during pass 2. - (statement_expression): Installed default rule for - method_invocation:. - (argument_list:): Added code to build the argument list. - (method_invocation:): Added call to create the method invocation - node. - (yyerror): Now use obstack_grow0. Removed bogus obstack_free. - (debug_line): New function for debug. - (complete_class_decl): No longer do something during pass 1. - (method_header): Use BUILD_PTR_FROM_NAME. - (parser_qualified_classname): Use obstack_grow0. Removed bogus - obstack_free. - (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified - function's main comment. - (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete - classes. - (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types. - (resolve_class): Now works with arrays. - (do_resolve_class, resolve_and_layout): New functions. - (java_check_regular_methods): Reverse method list before and after - having processed it. No longer set ctxp->artificial_constructor. - (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch - accordingly. Fixed typo in issued error message. Now use - obstack_grow0. - (find_in_imports_on_demand): Now use obstack_grow0. - (declare_local_variables): Use BUILD_PTR_FROM_NAME. - (source_end_java_method): Call expand_expr_stmt instead of - expand_expr. Calls it before calling expand_function_end. - (java_method_add_stmt): Do nothing if errors were found during - parsing. - (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo. - (build_method_invocation_stmt, build_invoke, invocation_mode, - lookup_method_invoke, refine_accessible_methods_list, - qualify_ambiguous_name, breakdown_qualified, identical_subpath_p): - New functions. - * typeck.c (build_java_signature): Properly end method signature - if return type skipped. - (match_java_method): New function. - -1998-03-16 Per Bothner - - * jcf-io.c (find_classfile): If USE_JCF_STDIO, fopen in binary mode. - -1998-02-25 Alexandre Petit-Bianco - - * expr.c (build_invoke_non_interface): New function. - (methods_ident, ncode_ident): Now static globals. - (expand_invoke): Use build_invoke_non_interface. - * java-tree.h (struct lang_decl): New field function_decl_body. - (DECL_FUNCTION_BODY): New macro. - * jcf-parse.c (jcf_parse_source): Deeper check before setting - CLASS_FROM_SOURCE_P. - (parse_source_file): Fixed typos. Call java_layout_parsed_class - before starting pass 2. Call to java_generate_parsed_class replaced - by java_register_parsed_class. - * lex.c: Fixed typo in header. Some line width related formating. - * lex.h: Some line width related formating. - * parse.h (source_end_java_method, resolve_expression_name, - complete_class_decl, maybe_create_class_interface_decl, - check_class_interface_creation): New static function declarations. - (java_layout_parsed_class, java_method_add_stmt): New function - declarations. - (struct parser_ctxt): Field mark_class_generate removed. New - fields class_list and artificial_constructor. - * parse.y: Fixed typo in header. - (class_declaration:): Call complete_class_decl when class body - parsed. - (method_declaration:): Call source_end_java_method in pass 2 when - the method body is defined. - (postfix_expression:): Do expression name resolution on sub-rule - name during pass 2. - (create_class, create_interface): Merged common pieces. - (check_class_interface_creation, maybe_create_class_interface_decl): - New functions. - (complete_class_decl): New function. - (register_fields): Fixed line width related typo. - (method_header): Correctly skip first argument when fixing - argument line. Changed the loop. - (java_check_circular_reference): Now use ctxp->class_list. - (java_complete_class): Removed start/stop marking. - (java_check_regular_methods): Now takes a class decl as an - argument. Add default constructor if none were encountered. - (java_check_methods): Now use ctxp->class_list. Changed call to - java_check_regular_methods. - (source_start_java_method): Set DECL_ARG_TYPE for each function - arguments. - (source_end_java_method, java_method_add_stmt): New functions. - (java_generate_parsed_class): No longer exists. - (java_layout_parsed_class, java_register_parsed_class): New functions. - (resolve_expression_name): New function. - -1998-02-12 Alexandre Petit-Bianco - - * jcf-parse.c: (parse_source_file): Check on errors after init lex. - * lex.c: (java_init_lex): Defer ctxp->java_pass initialization - until pass initializations are done. Call read_import_dir with - pass set to 0. - * parse.h: (lookup_modifier_cl): New function declared. - (INTERFACE_FIELD_MODIFIERS): New macro. - (OBSOLETE_MODIFIER_WARNING): New macro. - * parse.y: (register_fields): Class type and current field name in - local variables. Check modifier(s) if adding field(s) to an interface. - (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING - and report errors using the faulty modifier line context. - (lookup_modifier_cl): New function. - (read_import_dir): Detect and report default import processing - failure. - -1998-02-11 Brendan Kehoe - - Add a pair of -fassume-compiled/-fno-assume-compiled options. - * class.c (is_compiled_class): Return 1 after making sure it - qualifies as loaded, if FLAG_ASSUME_COMPILED is set. - * lang-options.h: Add -fassume-compiled/-fno-assume-compiled. - * java-tree.h (flag_assume_compiled): Add decl. - * lang.c (lang_f_options): Add the flag. - (flag_assume_compiled): Add decl, default to 0. - -1998-02-11 Alexandre Petit-Bianco - - * class.c (class_depth): Call to load_class uses extra VERBOSE arg. - (is_compiled_class): Likewise. - (layout_class): Likewise. - (layout_class): Detect and lay out classes defined in source code. - (interface_of_p, add_interface_do, may_add_interface): New - function. - (add_interface): Now use add_interface_do. - (add_method_1): New function. - (add_method): Now use add_method_1. - (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG. - (complete_start_java_method): New function. - (start_java_mehod): Now call complete_start_java_method. - * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg. - (expand_invoke): Likewise and fixed typo. - *gjava.c: (print_super_field): Use new argument to find_class - DO_CLASS_FILE. - (main): Likewise. - *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE. - (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME, - QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on - IDENTIFIER_NODE. - (CLASS_COMPLETE_P): New flag on TYPE_DECL. - (add_method_1, push_class): New prototypes. - *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument. - *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip - directory where the class was found. - (find_class): New argument DO_CLASS_FILE. Function find_class - modified accordingly. - *jcf-parse.c: (fix_class_path): New function. - (load_class): Use new VERBOSE argument. load_class now finds and - loads/parses .class/.java files. Save read_state of current_jcf - if necessary. - (java_parser_abort_on_error): New macro. - (jcf_parse_source, parse_source_file): New function. - (jcf_parse): Fixed typo. - (yyparse): Call parse_source_file () only. - (process_zip_dir): Fixed typo, fix zdir->filename_length when - writing the real class name back in the zip directory entry. - (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null. - (jcf_figure_file_type): Fixed bogus alloc and bcopy. - *jcf.h: (typedef struct JCF): New fields java_source and zipd. - (find_class): Prototype fixed. - *lex.c: Added 1998 time stamp. - Removed all static global variables, moved into the parser - context data structure.. Now include unistd.h if SEEK_SET not - defined. - (java_init_lex): Rewritten. - (java_sneak_unicode): Modified current unicode access in current line. - (java_unget_unicode): Likewise. - (java_allocate_new_line): New allocation management. - (java_read_char): Modified access and storage of unget_utf8_value. - New way of processing current unicode. - (java_store_unicode, java_read_unicode): Fixed typo in declaration. - (java_get_unicode): Now use the parser context. - (java_lineterminator): Likewise. - (java_lex): Now used java_lval argument (pointer to YYSTYPE), part - of the reentrant parser implementation. Function now use the - parser context data structure and java_lval. Fixed production of - the float and double constant "out of range" error message. Fixed - obstack use. Return integer value when hitting a modifier. Now - return type for TRUE, FALSE and other predefined types. Return - identifier as a TREE_LIST list containing the current line context - as the TREE_VALUE sub-node. - (java_unicode_2_utf8): Fixed typo in declaration. - (java_lex_error): Now use the parser context data structure. - *lex.h: Added 1998 time stamp. - (struct java_line): New fields ref_count and next. - (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN, - JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros. - (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed. - *parse.h: Added 1998 time stamp. - (java_parse_source_file): Renamed from parse_source_file. - (YYERROR_NOW, YYNOT_TWICE): Fixed. - (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS, - INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS, - JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL, - THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS, - END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class, - CLASS_OR_INTERFACE, INCOMPLETE_P): New macros. - (struct parser_ctxt): New data structure to keep the parser context. - *parse.y: Added 1998 time stamp, got rid of static global variables. - (java_error_count, ctxp): New global variables. - (%union): New value field. - (numeric_type, integral_type): Rules removed. - (primitive_type): Rule defined to handle integral, float, double and - boolean types. - (qualified_name, package_declaration, - single_type_import_declaration, type_import_on_demand_declaration, - modifiers, class_declaration, super, interfaces, - interface_type_list, class_body, field_declaration, - field_declaration, variable_declarators, variable_declarator, - variable_declarator_id, method_declaration, method_header, - formal_parameter_list, formal_parameter, method_body, block, - static, interface_declaration, extends_interfaces, - abstract_method_declaration, local_variable_declarators): Rules now - define actions. - (force_error, do_warning): New global statics. - (push_parser_context, parser_context_save_global, - parser_context_restore_global, pop_parser_context): New functions. - (yyerror): Now uses the global parser context. Fixed use of obstack. - (parse_error, parse_error_context, parse_warning_context, - java_accstring_lookup, redefinition_error, check_modifiers, - parser_add_interface, create_interface, create_class, find_field, - duplicate_declaration_error, register_fields, method_header, - check_modifiers_consistency, check_abstract_method_header, - method_declarator, parser_qualified_classname, - parser_check_super_interface, parser_check_super, - parser_chain_incomplete_item, java_check_circular_reference, - layout_class_from_source, java_complete_class, - complete_method_decl, resolve_class, complete_class_report_errors, - java_check_final, check_method_redefinition, - java_check_regular_methods, java_check_abstract_methods, - java_check_methods, lookup_java_interface_method2, - lookup_java_method2, lookup_cl, find_name_in_single_imports, - process_imports, find_in_imports, read_import_entry, - read_import_dir, find_in_imports_on_demand, - check_pkg_class_access, not_builtin_p, declare_local_variables, - source_start_java_method, java_generate_parsed_class): New - functions. - *typeck.c: (signature_include_return): New global variable. - (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether - to add the function returned type in the signature. - -1998-02-09 Brendan Kehoe - - * jcf-io.c (open_in_zip): Use strncmp and LEN. - -1998-01-29 Dave Brolley - - * Make-lang.in (java.info): Added. - (java.install-info): Added - -1998-01-27 Brendan Kehoe - - * Makefile.in (clean): Also remove java/parse.c. - -1998-01-26 Brendan Kehoe - - Add a pair of -fbounds-check/-fno-bounds-check options. - * lang.c (lang_decode_option): Add code to grok arguments. - (flag_bounds_check): Add decl. - (lang_f_options): New array w/ the option in it. - * java-tree.h (flag_bounds_check): Add decl. - * lang-options.h: New file. - * expr.c (build_java_arrayaccess): Use flag_bounds_check instead - of a static macro value. - (JAVA_ARRAY_EXCEPTION): Delete macro. - -1998-01-23 Per Bothner - - * typeck.c (build_java_array_type): Fix two bugs in previous change. - * expr.c (build_anewarray): Add missing promote_type. - -1998-01-22 Per Bothner - - Add array types with known length to optimize bounds checking. - * typeck.c (build_java_array_type): Take length parameter. - (java_array_type_length, build_prim_array_type): New functions. - * java-tree.h: Update for new functions. - * expr.c, typeck.c, verify.c: Update build_java_array_type calls. - * class.c: Use build_prim_array_type. - * expr.c (can_widen_reference_to): Handle known-length array types. - (verify_jvm_instructions): Keep track of integer push instructions - followed by newarray/anewarray, so we can build known-length arrays. - (JAVA_ARRAY_DATA_OFFSET): Replace by ... - (java_array_data_offset): New function. - (build_java_array_length_access): New function. Optimize if constant. - (build_java_arrayaccess): Constant fold bounds check. - (expand_java_newarray, expand_java_anewarray): Replaced by ... - (build_newarray, build_anewarray): New functions. - (ARRAY_NEW_NUM, ARRAY_NEW_PTR): Use build_{a,}newarray. - * verify.c (merge_types): Handle known-lengh array types. - -1998-01-19 Per Bothner - - * expr.c (expand_byte_code): Fix performace bug, which caused - searching linenumber_table to be linear rather than constant. - -1997-12-12 Per Bothner - - * Makefile.in (BISON, BISONFLAGS): Add missing macros. - - * decl.c, java-tree.h (soft_fmod_node): New global. - * decl.c (init_decl_processing): Define __builtin_fmod. - * expr.c (build_java_binop): Implement TRUNC_MOD_EXPR for REAL_TYPE - using __builtin_fmod. - -1997-12-04 Alexandre Petit-Bianco - - * keyword.h: New file, output of keyword.gperf as processed by - gperf. - * lex.c (java_lex_init): Initialize java_error_flag. - * parse.c (YYERROR_NOW): Uses java_error_flag. - * parse.y: New static java_error_flag. Useless definition of - buffer_error gone. - * parse.y (java_error): Portable error recovery using - java_error_flag (not yet completely tuned). - -1997-12-04 Brendan Kehoe - - * Makefile.in (parse.c): Use $(srcdir) for parse.y. - -1997-12-03 Alexandre Petit-Bianco - - * Makefile.in: (JAVA_OBJS): New object jcf-parse.o. - (parse.c, lex.c, keyword.h): New rules for Java source code - front-end. - * parse.c: Renamed into jcf-parse.c. - * jcf-parse.c (yyparse): Invoke the parser to process Java source code. - * keyword.gperf: New file, Java keywords. - * parse.y: New file, Java language grammar. - * parse.h: New file, Java language grammar definitions. - * lex.c: New file, Java language lexer. - * lex.h: New file, Java language lexer definitions. - -1997-12-03 Per Bothner - - * decl.c (clinit_identifier_node), java-tree.h: New global. - * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P): Removed. - * verify.c (verify_jvm_instructions): Inline use of removed macros. - * expr.c (expand_java_field_op): Check for invalid assignment - to final field. - - * jcf-reader.c (get_attribute): Test for wrong attribute length. - -1997-10-27 Per Bothner - - * verify.c (verify_jvm_instructions): When processing a handler, - attempt to set the current_subr to the right value. - (More complicated code combines Sep 17 and Oct 22 versions.) - -1997-10-24 Per Bothner - - * class.c (push_class): Figure out (guess) name of source file. - * parse.c (set_source_filename): Set DECL_SOURCE_FILE of class decl. - (give_name_to_class): Don't guess source name; use DECL_SOURCE_FILE. - (parse_class_file): Change return type from int to void. - Call debug_start_source_file/debug_end_source_file. - - * expr.c (build_java_binop): Fix masking 2nd operand. - * decl.c (init_decl_processing): Set sizetype first. - -1997-10-22 Per Bothner - - * verify.c (verify_jvm_instructions): Don't set current_subr to NULL. - (Revert Sep 17 change.) - -1997-10-21 Alexandre Petit-Bianco - - * parse.c (process_zip_dir): Skip ZIP entries not bearing the - .class extension in their name and fix thing so we don't process - them parse_zip_file_entries(). - (parse_zip_file_entries): Cleaned unused local variables. - -1997-10-20 Per Bothner - - * expr.c (can_widen_reference_to): Allows equal array element types. - (expand_byte_code): PRE_RET must expand OPERAND_VALUE (to get index). - * jcf-dump.c (RET): Get (and print) index. - - * verify.c (verify_jvm_instructions case OPCODE_anewarray): - Promote element type to POINTER_TYPE. - -1997-10-20 Alexandre Petit-Bianco - - * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir, - find_in_current_zip, jcf_figure_file_type): Moved from - jcf-reader.c to parse.c. - * zextract.c: (read_zip_archive): takes file_comment_length possible - field into account. - -1997-10-20 Per Bothner - - * verify.c (verify_jvm_instructions): Var can also be promoted to int. - - * verify.c (merge_types): Handle array types even better ... - -1997-10-17 Per Bothner - - * expr.c (java_stack_pop): Fix use of NULL_TREE for TYPE_SECOND. - - * java-tree.h (PUSH_FIELD): Set DECL_ARTIFICIAL. - * class.c (make_class_data): Don't build fields_decl if no fields. - When building fields_decl, skip if DECL_ARTIFICIAL. - - * expr.c (java_stack_swap): Update stack_type_map. - * verify.c (merge_types): Handle array types better. - -1997-10-15 Per Bothner - - * class.c (add_field): Don't promote short integral fields to - int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't. - * expr.c (push_value): Promote and convert short integral values. - - * decl.c, java-tree.h (integer_two_node): New constant node. - * verify.c (merge_types): Check for TYPE_RETURN_ADDR. - -1997-10-15 Alexandre Petit-Bianco - - * class.c (append_gpp_mangled_type): Use function argument - unpromoted type to generate mangled name. - -1997-10-13 Alexandre Petit-Bianco - - * constants.c (build_constant_data_ref): Now uses current_class - instead of main_class. - (build_constants_constructor): Now uses current_class instead of - main_class. - * zipfile.h: (struct ZipFileCache): Now defined here. Declaration - of the global variable SeepZipFiles done here. - * zextract.c (read_zip_archive): extra_field optional field taken - into account while computing the position of the class file in the - archive. - * verify.c (verify_jvm_instructions): Use current_jcf to search - the constant pool. - * parse.c (load_class): First search for the class to load in the - current zip file. Saves current_jcf (restored before returning - from that function). Don't call JCF_FINISH in the class was found - in the current ZIP file. - (jcf_parse): If the class was found in the current ZIP file, save - its tree_constant_pool (for later reuse). - (parse_class_file): New function. Process each method defined in - the current class and record the class as to be later registered. - (yyparse): Rewritten. Figure the type of the current file and switch - accordingly. - * lang.c: New global variable current_jcf. - (lang_init): Removed compiling_from_source test (done later, in - yyparse). Removed call the jcf_parse (). - * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values. - (typedef struct JCF): New fields seen_in_zip (to mark a class found - in the current ZIP file) and zip_offset (offset to the class data in - the current zip file). - * jcf-reader.c: zipfile.h included. - localToFile: New ZipFileCache static global variable - (parse_zip_file_entries): New function. Browse the current ZIP - file directory and process each class found. - (process_zip_dir): New function. Register each class found in the - ZIP file directory. The class aren't parsed but a valid JCF is - link to each of them. - (find_in_current_zip): New function. Search for a class in the - current ZIP file directory. If found, prepare the class so that it - can be loaded. - (jcf_figure_file_type): New function. Examine the file structure - to figure a class file, a ZIP file. If none of these categories are - matched, a source file is assumed. - * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h). - SeenZipFile: New global variable. - (open_in_zip): Use zipmember's length to accelerate the search for - a member. If zipmember was NULL and zip file successfully read, - return 0. - * java-tree.h: New global variable current_jcf declared. Added - declaration for current_constant_pool_tags, current_constant_pool_data, - current_constant_pool_length, current_constant_pool_data_ref. - (struct lang_type): Augmented with two fields. struct JCF *jcf (to - store the JCF of classes seen in a zip file) and tree *constant_pool - (to save a loaded class constant pool). current_class declared here. - * expr.c (expand_invoke): Use current_jcf instead of main_jcf to - retrieve method_ref_constant. - (PUSHC): java_push_constant_from_pool now uses current_jcf. - (OBJECT): get_class_constant now uses current_jcf. - (ARRAY_NEW_PTR): get_class_constant now uses current_jcf. - (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf. - (expand_invoke): Now uses current_class instead of main_class - (build_class_init): Now uses current_class instead of main_class - * class.c: New static global variable registered_class. - (register_class): New function. - (emit_register_class): Modified to use registered_class instead of - main_class - (is_compiled_class): Now take into account class seen in the archive. - -1997-10-06 Per Bothner - - * except.h: Renamed to: java-except.h. - * parse.c, except.c, expr.c, verify.c: Update #include accordingly. - * except.c: Add semi-working (commented out) implementation. - - * expr.c (expand_iinc): Add needed flush_quick_stack. - * parse.c (set_source_filename): New function. - (give_name_to_class): Set input_filename from package.classname.java. - - * jcf-io.c (find_class): Don't look first in ".". - -1997-10-01 Alexandre Petit-Bianco - - * zextract.c (read_zip_archive): Now takes into account the - extra_field field. - * expr.c (can_widen_reference_to): Modified to handle sub-interfaces. - -1997-09-20 Per Bothner - - * constants.c, java-tree.h (build_internal_class_name): New function. - (alloc_class_constant): Re-implement using build_internal_class_name. - * class.c (make_class_data): Likewise. - * class.c (hashUtf8String): Make hash algorithm match String.hashCode. - -1997-09-17 Per Bothner - - * verify.c (verify_jvm_instructions): Temporarily set current_subr - to NULL before pushing an exception handler target. - - * expr.c (flush_quick_stack): Save from low stack indexes to high. - (java_stack_swap, java_stack_dup): Re-write to be safe from - clobbering registers. - (build_class_init): New function. - -1997-09-17 Alexandre Petit-Bianco - - * typeck.c (build_java_array_type): Temporary use - permanent_obstack to create the array 'length' field. - * expr.c (lookup_label): Temporay use permanent_obstack to create - label if not found. - * class.c (push_super_field): Tempory use permanent_obstack. - -1997-09-15 Alexandre Petit-Bianco - - * typeck.c (type_for_mode): Now handles double_type_node and - float_type_node. - * verify.c (verify_jvm_instructions): The instruction following - the wide bytecode is checked. OPCODE_ret added to the list of - wide. - -1997-09-11 Alexandre Petit-Bianco - - * class.c (make_class): Temporary use permanent_obstack. Set the - class CLASS_P field to 1. - (push_class): Temporary use permanent_obstack. - (set_super_info): Temporary use permanent_obstack. - (add_method): Temporary use permanent_obstack, set - METHOD_TRANSIENT(). - (add_field): Temporary use permanent_obstack. Sets - FIELD_VOLATILE() and FIELD_TRANSIENT(). - (build_class_ref): Temporary use permanent_obstack if the class - isn't compiled. - (build_static_field_ref): Temporary use permanent_obstack when - creating field's rtl. - (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT, - ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods - and fields. Function finalized, as far as flag handling. - (push_class_static_dummy_field): Temporary use permanent_obstack. - (emit_register_class): Force generation of class registration at - -O3 or deeper. - * decl.c (end_java_method): Call permanent_allocation() before - returning. - * expr.c (can_widen_reference_to): Added comment to interface - handling, fixed typo. - (lookup_field): Now uses CLASS_P() to correct FIXME - (expand_invoke): Verification on public && !static && - !abstract moved into soft_lookupinterfacemethod (kaffe). - Use Object class dtable if objectref is an array when expanding - invokeinterface. - (java_push_constant_from_pool): Temporary use permanent_obstack - for CONSTANT_string - * parse.c (get_ref_constant): Temporary use permanent_obstack to - create constant references. - (get_constant): Temporary use permanent_obstack to create constant. - (load_class): Temporary use permanent_obstack to load class. - (jcf_parse): Temporary use permanent_obstack to perform class - layout. - * typeck.c: (parse_signature_string): Temporary use permanent_obstack. - (build_java_signature): Temporary use permanent_obstack. - * verify.c: (verify_jvm_instruction): removed unnecessary verification - on ACC_SUPER flag. - * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined. - (FIELD_VOLATILE, FIELD_TRANSIENT): Defined. - (CLASS_P): Defined - -1997-09-11 Per Bothner - - * class.c (append_gpp_mangled_type): Fix typo. - (emit_register_class): Use main_class to get class object, rather - than looking for no-longer-existing static decl starting with _CL. - * typeck.c (parse_signature_type): Promote array element type - if it is a RECORD_TYPE. - -1997-09-10 Per Bothner - - * class.c (push_class_static_dummy_field): New function. - (mangle_static_field): New. Do G++-style mangling of static fields. - (layout_class): Mandle static fields here, not in add_field. - (build_class_ref): The class object is now a dummy static field. - * decl.c (find_local_variable): Look for best, instead of first match. - * expr.c (push_type): Always promote_type, not just for RECORD_TYPE. - (build_java_athrow): Don't check here if exception is Throwable. - * java-tree.h (TYPE_UNSET): Renamed to TYPE_UNKNOWN. - (TYPE_USED): Removed. No longer used ... - * parse.c (jcf_parse): Call push_class_static_dummy_field. - * verify.c (push_pending_label): New function. - (push_pending_block): Renamed to check_pending_block. - (merge_types): Remove unneeded suuport for TYPE_UNUSED. - (verify_jvm_instructions): Only reset prev_eh_ranges (to force - re-checking possible handlers) after a store (less wasted work). - Check for null handler (finally) before calling add_handler. - Various changes to (finally?) correctly handle try/finally. - -1997-09-09 Brendan Kehoe - - * class.c: Include stdio.h. - -1997-09-04 Per Bothner - - * expr.c (expand_invoke): Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS) - to make sure class is initialized before static/special invoke. - - * verify.c (verify_jvm_instructions): On a store instruction, - call find_local_variable to force pre-allocation of decl and rtx. - * decl.c (push_jvm_slot): Set DECL_REGISTER on stack slots. - -1997-09-03 Per Bothner - - * class.c (build_class_ref): Strip off "promoted_" if need be. - (make_field_value): Call build_java_signature when needed. - (layout_class): Don't make_function_rtl if METHOD_ABSTRACT. - * expr.c (build_java_athrow): Don't push_value of exception. - (build_java_binop): Implement COMPARE_L_EXPR and COMPARE_G_EXPR to - match specification of [fd]cmp[lg] for NaNs. - (expand_byte_code): Add support for exception handler ranges. - * except.c: Add skeleton for EH code-generation. - * verify.c (merge_types): Treat all promoted integral types as equal. - * constants.c (build_constants_constructor): To force creation of - current_constant_pool_data_ref, call build_constant_data_ref. - - * javaop.def (lload): Fix typo. - * jcf-dump.c (main): Clear filename to prevent possibly-bad free. - -1997-09-02 Brendan Kehoe - - * parse.c: Don't include function.h. - -1997-08-27 Per Bothner - - * except.[ch]: New files. - * Makefile.in (JAVA_OBJS): Add except.o - * expr.c: Temporary warning about unimplemented exceptions. - * verify.c: Verify exception handlers. - - * jcf-dump.c (disassemble_method): Print exception table. - -1997-08-27 Alexandre Petit-Bianco - - * expr.c (verify_jvm_instructions): Started a thorough - verification of invoke* bytecodes. - (expand_byte_code): flush quick stack if PC is the target of a - branch. and undef RET (conflicting with config/i386/i386.h). - (expand_java_arrayload): Fixed bogus cast, when Boolean type is - used. - (expand_invoke): Now handles invokeinterface and do more - verification according to the bytecode. - (lookup_field): Don't try to load the class if processing - dtable_type. - (can_widen_reference_to): Now handles interfaces. - * decl.c (init_decl_processing): New global variable - soft_lookupinterfacemethod_node, declared in java-tree.h. - Call set_super_info on string_type_node. - * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now - defined. - * class.c (set_super_info): Fills the CLASS_* flags according to - access_flags. - (get_access_flags_from_decl): Handles all class flags. - -1997-08-26 Per Bothner - - * class.c (add_method): Zero out newly-allocated DECL_LANG_SPECIFIC. - * parse.c (yyparse): Check for abstract method, and missing code. - * expr.c (expand_byte_code): Change interface. - * lang.c (put_decl_node): Print promoted types prettier. - * verify.c (verify_jvm_instruction): Change interface. - Partial support for scanning exception table. - For load instructions, handle promoted integral types. - -1997-08-21 Per Bothner - - * verify.c: New file, with contents moved from expr.c. - * expr.c: Bunch of stuff (mostly verification) moved to verify.c. - * typeck.c (is_array_type_p): Moved here from expr.c. - * java-tree.h: Add some now-needed function declarations. - * Makefile.in (JAVA_OBJS): Added verify.o. - -1997-08-20 Alexandre Petit-Bianco - - * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the - METHOD_ABSTRACT flag. - - * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4. - (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros. - (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5 - - * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global - variables. - (start_java_method): Hook for SYNCHRONIZED methods. - - * expr.c (build_java_jsr, build_java_ret): New functions - (JSR,PRE): New macros - (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured. - (verify_jvm_instructions): tableswitch, lookupswitch, - monitorenter, monitorexit, goto_w: verified. - (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label - (build_java_monitor): New function. - (MONITOR_OPERATION): Modified to call build_java_monitor() - (verify_jvm_instructions): Started a thorough verification of - invoke* bytecodes. - -1997-08-19 Per Bothner - - Support verification of jsr/ret subroutines (used for try/finally). - * decl.c (return_address_type_node): New type node. - * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE, - RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR, - LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED): New macros. - (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED, - TYPE_USED): New macros for special types in type_map. - - * java-tree.h (BCODE_JUMP_TARGET): Renamed to BCODE_TARGET. - (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET): Replaced by - BCODE_JUMP_TARGET. - * expr.c (expand_byte_code): Fix logic to warn of unused instructions. - - * expr.c (can_widen_reference_to): New function. - (pop_type): Use it. - (merge_type_state): Support handling start of subroutine. - (push_pending_block): Return char* error message, instead of calling - fatal on an error. Also handle subroutines. - (verify_jvm_instructions): Handle errors from push_poending_block. - Support jsr and ret instructions. - -1997-08-19 Per Bothner - - * jcf-io.c (find_classfile): Fix thinko. - * jcf-dump.c: Add CONVERT2 (to match changed javaop.def). - -1997-08-12 Jason Merrill - - * Makefile.in (BISON): Remove. - -1997-08-07 Per Bothner - - * Makefile.in: Convert to autoconf. - * config-lang.in (outputs): Added java/Makefile. - - * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in: - Rename cc1java to jc1. - - * lang.c (init_parse, finihs_parse): New functions #ifdef USE_CPPLIB. - * Makefile.in (INTERNAL_CFLAGS): Add @extra_c_flags. - - * class.c (class_depth): Do load_class if needed. - - Mostly better verification. - * decl.c (pushdecl): Set TYPE_STUB_DECL for a type. - (init_decl_processing): Change return type of soft_checkcast. - * expr.c (expand_java_CHECKCAST): Do push_value of the "casted" value. - * lang.c (put_decl_string, put_decl_node, lang_printable_name, - lang_print_error): New functions. - (lang_init): Set global hook print_error_function to lang_print_error. - * expr.c: In the type_map ptr_type_node is only used for null now. - (pop_type, merge_types): Hence ptr_type_node matches any reference. - (merge_types): Dererence pointer to record types before comparing. - (decode_newarray_type, merge_types): On error just return NULL. - (build_java_binop): Add preliminary implementation (with warning) - for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]). - (lookup_label): Set DECL_IGNORED_P (for dwarf2out). - (expand_compare, expand_java_goto, expand_java_call): Don't - push_pending_block, since that only makes sense when verifying. - (merge_type_state): Different return codes. - (push_pending_block): A block may need to be verified more than once. - (expand_byte_code): Warn about unused code at code generation time. - (verify_jvm_instruction): Changed logic, since code may need to be - re-verified if type-state has changed. Also, better error handling. - Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof. - Improve newarray, anewarray, ?aload, athrow, - * java-tree.h (LABEL_CHANGED): New macro. - -1997-08-05 Alexandre Petit-Bianco - - * decl.c (soft_athrow_node): New global variable initialized. - * javaop.def (i2b, i2c, i2s): Invoke CONVERT2 - * typeck.c (convert): Added support for REAL_TYPE. - (convert_to_char): New function. - (convert): Handle CHAR_TYPE. - * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/ - SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT. - (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to - promoted type. - (verify_jvm_instructions): Added break a the end of bogus unop: label. - (OPCODE_astore): Pop an int operand from the type stack - (OPCODE_astore): Push the promoted type onto the stack - (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b. - (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified - to Use The Right Things. - (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as - compatible with INT. BOOLEAN is made equivalent to BYTE. - (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull, - OPCODE_ifnonnull): Now supported. - (build_java_athrow): New function. - -1997-08-04 Per Bothner - - Rename method name to match G++ (and fix mangling). - * class.c (layout_class): Replace method name of by class name. - (make_method_value): Do inverse renaming of constructor from . - * java-tree.h (DECL_CONSTRUCTOR_P): New macro. - * typeck.c (lookup_java_constructor): New function. - * expr.c (expand_invoke): If method_name is , call - lookup_java_constructor to find constructor. - - * parse.c (get_constant): Handle CONSTANT_Float and CONSTANT_Double. - -1997-08-01 Alexandre Petit-Bianco - - * parse.c (get_class_constant): Modified to handle array "classes" - * typeck.c (set_local_type): Bug fixed when filling type_map[] with - wide type. - (convert): Modified to handle real type. - * java-tree.h (soft_badarrayindex_node, soft_anewarray_node, - soft_multianewarray, soft_newarray_node, soft_throw_node): New global - variables declared. - * decl.c (soft_badarrayindex_node, soft_anewarray_node, - soft_multianewarray, soft_newarray_node, soft_throw_node): New - global variables initialized. - (find_local_variable): Handles the case of a pointer - (end_java_method): Restore the use of one more scope - * expr.c (build_java_arraynull_check, build_java_arrayaccess, - build_java_array_length_access, expand_java_arrayload, - expand_java_arraystore, expand_java_array_length, - expand_java_multianewarray, expand_java_anewarray, - build_java_check_indexed_type, is_array_type_p, - build_java_throw_out_of_bound_exception): New functions. - (STORE_INTERNAL): Now forces type of the decl to be type of the value. - (OPCODE_arraylength, OPCODE_newarray, OPCODE_astore, - OPCODE_aload): Implemented code for verification. - (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM - ARRAY_NEW_MULTI): Macro defined. - (CONVERT): Modified to invoke convert(). - (case OPCODE_aload2): Fixed index typo from 2 to 1. - -1997-07-31 Per Bothner - - * class.c (push_class): Set DECL_ARTIFICIAL (for dbxout.c). - (build_class_ref, is_compiled_class): Handle pointer-to-record types. - (make_class_data): Field name needs '/' as package prefix. - * expr.c (type_stack_dup, java_stack_dup): Fix fencepost errors. - -1997-07-25 Per Bothner - - Implement debug information for local variables. - * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT, - DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC, - DECL_LOCAL_SLOT_CHAIN): New macros. - (struct lang_decl_var): New type. - * parse.c (give_name_to_locals): Move to decl.c. - * decl.c (give_name_to_locals): Re-written to Do The Right Thing. - (start_java_method): Re-write parameter handling. - (pending_local_decls): New global variable. - (push_jvm_slot, maybe_pushlevels, maybe_poplevels): New functions. - (find_local_variable): Accept pc so we can skips decls not in range. - (struct binding_level): Add end_pc field. - * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels. - (various): Change so current pc gets passed to find_local_variable. - - * decl.c (init_decl_processing): Re-arrange fields in - class_type_node and and method_type_node to match kaffe 0.9.1. - * class.c (make_method_value, make_class_data): Update - initializations to match. - -1997-07-16 Per Bothner - - * class.c (unicode_mangling_length, emit_unicode_mangled_name, - append_gpp_mangled_name, append_gpp_mangled_type): New functions. - (push_super_field): New function. - (make_class_data): Handle inheritance of class static initializer. - (layout_class): New name mangling. - * constants.c (build_constant_data_ref): Init type of data array - to a one-element array. - (build_constants_constructor): Set DECL_SIZE from complete array type. - * decl.c: Rename class_type, object_type etc to class_type_node, - object_type_node etc. Make former inherit from latter. - * expr.c (expand_invoke): Add cast of function address. - * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE): New. - * parse.c (yyparse): Don't call layout_class here. - * typeck.c (build_java_array_type): Set TYPE_ARRAY_ELEMENT. - -1997-06-14 Per Bothner - - * decl.c, class.c: Update method type to match latest Kaffe snapshot. - * constants.c (lookup_name_constant): Renamed to alloc_name_constant. - (alloc_class_constant): New. - * expr.c (expand_invoke): Make sure method's class is initialized. - * class.c (interits_from_p, emit_register_class): New functions. - * parse.c (yyparse): Call emit_register_class. - -1997-06-09 Per Bothner - - * constants.c: New file, to handle constant pool. - * Makefile.in (JAVA_OBJS): Add constants.o. - * decl.c (init_decl_processing): Update, fix, finish various structs. - (pushdecl_top_level): New. - * parse.c (layout_class): Moved to class.c. - * expr.c (java_push_constant_from_pool): New function. - * class.c (build_class_ref): Make work fully - (make_class_data): Emit super-class, constant pool, interface vector. - -1997-06-03 Per Bothner - - java-tree.h (DECL_SIGNATURE, BCODE_EMITTED): Remove. - (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P): New. - * class.c (class_depth): New function. - (lookup_named_class): Replaced by new function lookup_class. - * decl.c (object_type_node, string_type_node): New. - Remove various types that we no longer need. - * expr.c (verify_jvm_instructions): New separate verifier pass. - (push_type, pop_type): New functions for verifier. - (type_stack_dup, pop_argument_types, merge_types): Likewise. - (expand_byte_code): Simplify, since we assume already verified. - (expand_invoke): Now mostly works. - * javaop.def: Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w. - * lang.c (main_class): Move to parse.c. Don't make_class yet. - * parse.c: Wait to allocate class object until we know its name. - (layout_class): Calculate DECL_VINDEX for each virtual method. - * typeck.c (get_array_type): Rename to ... - (build_java_array_type): ... and provide working implementation. - (build_java_signature): New function - build Java signature of type. - (set_java_signature): New function - cache signature with type. - (lookup_java_method): New function. - -1997-05-06 Per Bothner - - * class.c (ident_subst): Take extra SUFFIX parameter. - (add_field): Set DECL_ASSEMBLER_NAME of static fields; more. - (set_constant_value, build_static_field_ref, is_compiled_class): New. - (build_class_ref): Actually implement. - * decl.c, java-tree.h: Renamed some xx_type to xx_type_node. - * decl.c (builtin_function): New. - (init_decl_processing): Update for current Kaffe. Declare some - builtin Kaffe functions. - * expr.c (build_address_of): New. - (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST): - Renamed (from expand_java_new etc), and added working implementations. - (build_field_ref): Now also handle static fields. - (expand_invoke): Implement invokestatic, and start implement rest. - * java-opcodes.h: Use javaop.def to avoid duplicated list. - * javaop.def: Rename invokevirt -> invokevirtual. - * lang.c (use_handles): Removed. - * parse.c: Add support for ConstantValue attribute. - Handle nested loading of a class. (JPOOL_UTF): New. - -1997-03-11 Per Bothner - - * expr.c (expand_java_pushc): Support #ifndef REAL_ARITHMETIC case. - -1997-02-27 Per Bothner - - * Make-lang.in (java.install-man): New empty rule. - * typeck.c (set_local_type): New function. - * expr.c (STORE_INTERNAL): Call find_local_variable, - not find_stack_slot. Call set_local_type. - -1997-02-12 Per Bothner - - * java-tree.h: Various new macros for constructing RECORD_TYPEs, - and building RECORD_TYPE CONSTRUCTORs. - Also support for creating Utf8Const objects from an INDETIFIER_NODE. - - * lang.c (use_handles): Change the default to 0. - * decl.c: Define and build class_type, field_type, utf8const_type. - * class.c (make_class_data, make_field_value, - get_access_flags_from_decl, build_class_ref, build_utf8_ref, - hashUtf8String, strLengthUtf8, mangled_classname: - Functions to build reflective data structures. - * parse.c (yyparse): Call make_class_data. - - * jcf-io.c (open_class, find_classfile): New functions. - * jcf-dump.c: Support reading classfile from explicitly-named - class file (without CLASSPATH searching). - -1996-10-24 Per Bothner - - * jcf-reader.c: Add parameter list to HANDLE_CONSTANT_Utf8. - * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8): - Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here. - (get_constant): Now trivial for CONSTANT_Utf8. - - * jcf.h: Make NEW_CPOOL the default. - * jcf.h, jcf-reader.c, parse.c: Remove support for !NEW_CPOOL. - -1996-10-24 Per Bothner - - New directory. - + * gcj.texi: Bump @copying's copyright year. -Copyright (C) 1996-2013 Free Software Foundation, Inc. +Copyright (C) 2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/java/ChangeLog-2013 b/gcc/java/ChangeLog-2013 new file mode 100644 index 00000000000..5ab19210cb7 --- /dev/null +++ b/gcc/java/ChangeLog-2013 @@ -0,0 +1,22898 @@ +2013-12-19 Jakub Jelinek + + PR other/59545 + * class.c (hashUtf8String): Compute hash in unsigned type. + * javaop.h (WORD_TO_INT): Avoid signed integer overflow. + +2013-11-22 Andrew MacLeod + + * java-gimplify.c: Add required include files from gimple.h. + +2013-11-22 David Malcolm + + * class.c (maybe_layout_super_class): Update comment. + * decl.c (java_add_stmt): Remove use of input_filename macro. + * jcf-parse.c (set_source_filename): Remove use of + input_filename macro. + (parse_class_file): Remove use of input_line and input_filename + macros. + (java_parse_file): Remove use of input_filename macro. + +2013-11-18 Richard Sandiford + + * class.c, expr.c: Replace tree_low_cst (..., 0) with tree_to_shwi + throughout. + +2013-11-18 Richard Sandiford + + * class.c, expr.c: Replace host_integerp (..., 0) with + tree_fits_shwi_p throughout. + +2013-11-14 Andrew MacLeod + + * java-gimplify.c: Include only gimplify.h and gimple.h as needed. + +2013-11-14 Diego Novillo + + * builtins.c: Include stor-layout.h. + Include stringpool.h. + * class.c: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + * constants.c: Include stringpool.h. + Include stor-layout.h. + * decl.c: Include stor-layout.h. + Include stringpool.h. + Include varasm.h. + * except.c: Include stringpool.h. + Include stor-layout.h. + * expr.c: Include stringpool.h. + Include stor-layout.h. + * jcf-parse.c: Include stringpool.h. + * mangle.c: Include stringpool.h. + * resource.c: Include stringpool.h. + Include stor-layout.h. + * typeck.c: Include stor-layout.h. + Include stringpool.h. + * verify-glue.c: Include stringpool.h. + +2013-11-12 Andrew MacLeod + + * java-gimplify.c: Include gimplify.h. + +2013-11-07 Jeff Law + + * builtins.c (initialize_builtins): Provide __builtin_trap. + +2013-10-29 David Malcolm + + Patch autogenerated by refactor_symtab.py from + https://github.com/davidmalcolm/gcc-refactoring-scripts + revision 58bb219cc090b2f4516a9297d868c245495ee622 + + * decl.c (java_mark_decl_local): Update for conversion of symtab types + to a true class hierarchy. + +2013-10-14 David Malcolm + + * lang.c (java_handle_option): Update for introduction of + gcc::dump_manager. + +2013-09-25 Tom Tromey + + * Make-lang.in (jvspec.o): Remove. + (CFLAGS-java/jvspec.o): New variable. + ($(XGCJ)$(exeext), java_OBJS): Use java/jvspec.o + (java/jvspec.o-warn): Rename from jvspec.o-warn. + (JAVA_TREE_H, java/jcf-dump.o, java/boehm.o, java/builtins.o) + (java/class.o, java/constants.o, java/decl.o, java/except.o) + (java/expr.o, java/jcf-depend.o, java/jcf-parse.o) + (java/jvgenmain.o, java/lang.o, java/mangle.o, java/mangle_name.o) + (java/resource.o java/typeck.o, java/win32-host.o) + (java/verify-glue.o, java/verify-impl.o, java/zextract.o) + (java/java-gimplify.o, java/jcf-io.o, java/jcf-path.o): Remove. + +2013-09-25 Tom Tromey + + * Make-lang.in (jvspec.o): Don't use subshell. + +2013-06-05 Jan Hubicka + + * class.c (emit_register_classes_in_jcr_section): Use DECL_PRESERVE_P + instead of mark_decl_referenced. + +2013-05-29 Jan Hubicka + + * decl.c (java_mark_decl_local): Update for new symtab flags. + +2013-05-22 Matthias Klose + + * jvspec.c (jvgenmain_spec): Add %I to cc1 call. + +2013-05-16 Jason Merrill + + * Make-lang.in (jc1$(exeext)): Use link mutex. + +2013-05-06 Jakub Jelinek + + PR libgcj/57074 + * class.c (emit_symbol_table): Use array type of the + right size for the_syms_decl and its DECL_INITIAL, instead + of symbols_array_type. Set TREE_TYPE (the_syms_decl) to it. + (emit_assertion_table): Use array type of the right size + for table_decl and its DECL_INITIAL. + +2013-04-15 Gerald Pfeifer + + * gcj.texi (Configure-time Options): Refer to GCC, not gcc. + (Resources): Adjust reference to Mauve. + Remove link to java.sun.com. + Refer to GCC, not gcc. + +2013-04-09 Richard Biener + + * expr.c (build_java_binop): Pass a type to build_int_cst. + +2013-03-22 Kai Tietz + + * lang.c (put_decl_node): Don't iterate over end_params_node. + +2013-01-03 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2012-11-16 Diego Novillo + + Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec) + + * boehm.c: Use new vec API in vec.h. + * class.c: Likewise. + * constants.c: Likewise. + * decl.c: Likewise. + * expr.c: Likewise. + * java-tree.h: Likewise. + * jcf-parse.c: Likewise. + * resource.c: Likewise. + * verify-glue.c: Likewise. + +2012-11-15 Jan Hubicka + + * builtins.c (define_builtin): Accept ECF flags and + use set_call_expr_flags. + (initialize_builtins): Update. + +2012-10-01 Lawrence Crowl + + * Make-lang.in (JAVA_OBJS): Add dependence on hash-table.o. + (JCFDUMP_OBJS): Add dependence on hash-table.o. + (jcf-io.o): Add dependence on hash-table.h. + * jcf-io.c (memoized_class_lookups): Change to use type-safe hash table. + +2012-09-24 Lawrence Crowl + + * decl.c (java_init_decl_processing): Change to new double_int API. + * jcf-parse.c (get_constant): Likewise. + * boehm.c (mark_reference_fields): Likewise. + (get_boehm_type_descriptor): Likewise. + +2012-07-30 Laurynas Biveinis + + * jcf.h (CPool): Use the "atomic" GTY option for the tags field. + (bootstrap_method): Likewise for the bootstrap_arguments field. + +2012-07-16 Steven Bosscher + + * java-gimplify.c: Include dumpfile.h instead of tree-dump.h + * Make-lang.in: Fix dependencies. + +2012-07-11 Steven Bosscher + + * java-tree.h (force_evaluation_order): Remove prototype. + * expr.c (force_evaluation_order): Remove unused function. + +2012-07-11 Steven Bosscher + + * decl.c: Do not include libfuncs.h. + * class.c: Do not include defaults.h. + * jvgenmain.c: Likewise. + * magnle.c: Likewise. + * Make-lang.in (decl.o): Fix dependencies. + +2012-07-08 Steven Bosscher + + * verify.h: Do not include system.h and coretypes.h here. + * verify-impl.c: Include them here instead. + +2012-07-05 Uros Bizjak + + * jcf-io.c (read_zip_member): Initialize d_stream. + +2012-05-31 Steven Bosscher + + * resource.c: Do not include output.h. + +2012-05-21 John David Anglin + + PR java/52815 + * class.c (emit_register_classes_in_jcr_section): Revise placement + of #ifdef JCR_SECTION_NAME. + +2012-04-22 Jan Hubicka + + * class.c (build_utf8_ref): Do not mark varpool node as needed. + +2012-04-20 Jan Hubicka + + * class.c (make_local_function_alias): Do not mark symbol referenced. + +2012-04-11 Rainer Orth + + * jcf-dump.c (print_constant): Cast JPOOL_USHORT2, JPOOL_USHORT1 + results to long to match formats. + +2012-04-11 Andrew Haley + + * jcf-reader.c (jcf_parse_bootstrap_methods): Add + ATTRIBUTE_UNUSED. + +2012-04-11 Andrew Haley + + * jcf.h (bootstrap_method): New. + (BootstrapMethods): New. + (JCF): Add BootstrapMethods. + (enum cpool_tag): Add MethodHandle, MethodType, and InvokeDynamic. + * jcf-reader.c (jcf_parse_bootstrap_methods): New. + (jcf_parse_constant_pool): Handlers for MethodHandle, MethodType, + and InvokeDynamic. + (jcf_parse_bootstrap_methods): New. + * javaop.def (invokedynamic): New opcode. + * jcf-parse.c (get_constant): An unknown constant type should not + be an internal error, but a fatal one. Make it so. + * jcf-dump.c (HANDLE_BOOTSTRAP_METHODS_ATTRIBUTE): New. + (HANDLE_END_BOOTSTRAP_METHODS): New. + (print_constant): Handlers for MethodHandle, MethodType, and + InvokeDynamic. + +2012-04-02 Rainer Orth + + * class.c (emit_register_classes_in_jcr_section): Set DECL_USER_ALIGN. + Clear TREE_READONLY. + +2012-03-29 Steven Bosscher + + PR java/52730 + * class.c (emit_register_classes_in_jcr_section): New function. + (emit_Jv_RegisterClass_calls): New function, split out from ... + (emit_register_classes): ... here. Reorganize. Do not call + output_constant. + +2012-01-23 Andreas Schwab + + * lang.c (java_init_options_struct): Set + frontend_set_flag_trapping_math. + +2012-01-01 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2011-12-03 Matthias Klose + + * expr.c (SPECIAL_WIDE): Fix typo in message. + +2011-11-23 Jeffrey A Law (law@cygnus.com) + + * lang.c (java_init_options_struct): Disable optimizations + which assume a NULL pointer dereference will cause a fault. + +2011-11-07 Richard Henderson + + * builtins.c (compareAndSwapInt_builtin): Use can_compare_and_swap_p. + (compareAndSwapLong_builtin): Likewise. + (compareAndSwapObject_builtin): Likewise. + (VMSupportsCS8_builtin): Likewise. + +2011-11-02 Rainer Orth + + * Make-lang.in (jvspec.o): Pass SHLIB instead of SHLIB_LINK. + +2011-10-15 Tom Tromey + Dodji Seketeli + + * jcf-parse.c (set_source_filename): Adjust to the new map API. + +2011-10-11 Michael Meissner + + * class.c (build_static_field_ref): Delete old interface with two + parallel arrays to hold standard builtin declarations, and replace + it with a function based interface that can support creating + builtins on the fly in the future. Change all uses, and poison + the old names. Make sure 0 is not a legitimate builtin index. + * decl.c (java_init_decl_processing): Ditto. + * except.c (compareAndSwapLong_builtin): Ditto. + (compareAndSwapObject_builtin): Ditto. + (putVolatile_builtin): Ditto. + (define_builtin): Ditto. + (check_for_builtin): Ditto. + * expr.c (rewrite_arglist_getcaller): Ditto. + (expand_java_field_op): Ditto. + +2011-08-24 Joseph Myers + + * Make-lang.in (CFLAGS-java/jcf-io.o, CFLAGS-java/jcf-path.o): + New. + (java/jcf-io.o, java/jcf-path.o): Remove explicit compilation + rules. + +2011-08-18 Peter Collingbourne + + * expr.c (expand_invoke) Use the type of the method rewrite + target. + +2011-08-10 Rainer Orth + + * jcf-dump.c (print_constant): Cast first frexp arg. + +2011-08-08 Rainer Orth + + * Make-lang.in ($(XGCJ)$(exeext)): Add $(EXTRA_GCC_LIBS). + +2011-07-19 Richard Guenther + + * builtins.c (static): Use fold_build_pointer_plus. + * class.c (make_class_data): Likewise. + (build_symbol_entry): Likewise. + * except.c (build_exception_object_ref): Likewise. + * expr.c (build_java_arrayaccess): Likewise. + (build_field_ref): Likewise. + (build_known_method_ref): Likewise. + (build_invokevirtual): Likewise. + +2011-07-06 Richard Guenther + + * decl.c (java_init_decl_processing): + Merge calls to build_common_tree_nodes and build_common_tree_nodes_2. + +2011-06-21 Andrew MacLeod + + * builtins.c: Add sync_ or SYNC__ to builtin names. + * expr.c: Add sync_ or SYNC__ to builtin names. + +2011-06-07 Richard Guenther + + * decl.c (java_init_decl_processing): Call build_common_nodes, + build_common_nodes_2 at the beginning. Remove then duplicate + initializations. + +2011-06-07 Richard Guenther + + * decl.c (java_init_decl_processing): Properly initialize + size_type_node. + +2011-05-30 Joern Rennecke + + PR middle-end/46500 + * expr.c: Include "tm.h" . + +2011-05-26 Nathan Froyd + + * decl.c (poplevel): Don't access TREE_TYPE of BLOCKs. + * expr.c (build_jni_stub): Likewise. + +2011-05-24 Joseph Myers + + * Make-lang.in ($(XGCJ)$(exeext)): Use libcommon-target.a instead + of prefix.o. + +2011-05-20 Joseph Myers + + * Make-lang.in ($(XGCJ)$(exeext)): Don't explicitly use intl.o and + version.o. + (JCFDUMP_OBJS): Remove errors.o, version.o and intl.o. + (JVGENMAIN_OBJS): Remove errors.o and intl.o. + (java/jcf-dump.o, java/jvgenmain.o): Depend in $(DIAGNOSTIC_H). + * jcf-dump.c: Include diagnostic.h. + (main): Initialize diagnostics. + * jvgenmain.c: Include diagnostic.h. + (main): Initialize diagnostics. + +2011-05-11 Nathan Froyd + + * java-tree.h (TYPE_ARGUMENT_SIGNATURE): Use TYPE_MINVAL. + +2011-05-07 Eric Botcazou + + * java-tree.h (global_bindings_p): Adjust prototype. + * decl.c (global_bindings_p): Return bool. + +2011-05-05 Nathan Froyd + + * expr.c (expand_java_switch): Call build_case_label. + (expand_java_add_case): Likewise. + +2011-04-29 Richard Guenther + + PR middle-end/48819 + * constants.c (build_constants_constructor): Use ptr_type_node for + temp. + +2011-04-20 Jim Meyering + + * jcf-parse.c (java_parse_file): Remove useless if-before-free. + +2011-04-18 Jim Meyering + + * jcf-parse.c: Fix typo in comment. + +2011-04-14 Nathan Froyd + + * decl.c (poplevel): Use BLOCK_CHAIN and block_chainon. + +2011-04-12 Nathan Froyd + + * java-tree.h (union lang_tree_node): Check for TS_COMMON before + calling TREE_CHAIN. + +2011-04-11 Martin Jambor + + * decl.c (java_mark_decl_local): Call cgraph_get_node instead of + cgraph_node and handle returned NULL. + +2011-03-25 Kai Tietz + + * jcf-parse.c (java_read_sourcefilenames): Use filename_cmp + instead of strcmp. + (set_source_filename): Likewise. + * win32-host.c (jcf_open_exact_case): Likewise. + +2011-03-21 Kai Tietz + + PR target/12171 + * lang.c (java_attribute_table): Adjust table. + +2011-02-13 Joseph Myers + + * jvspec.c (jvgenmain_spec): Remove %{a*}. + +2011-01-21 Kai Tietz + + PR bootstrap/47215 + * decl.c (java_init_decl_processing): Remove + va_list_type_node related type initializations. + +2011-01-11 Kai Tietz + + PR bootstrap/47215 + * decl.c (java_init_decl_processing): Initialize + long_integer_type_node. + +2011-01-07 Kai Tietz + + PR bootstrap/47215 + * decl.c (java_init_decl_processing): Initialize unsigned_type_node. + +2011-01-07 Kai Tietz + + * decl.c (java_init_decl_processing): Setup va_list_type_node. + +2011-01-03 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2010-12-15 Dave Korn + + * decl.c (java_init_decl_processing): Initialise integer_three_node. + * lang.c (put_decl_node): Handle nested function decls. + +2010-12-07 Joseph Myers + + * jcf-parse.c: Don't include assert.h. + (java_parse_file): Use gcc_assert. + +2010-12-03 Joseph Myers + + * lang.opt (static-libgcj): New option. + +2010-12-01 Joseph Myers + + * jcf-parse.c: Don't include toplev.h. + * Make-lang.in (java/jcf-parse.o): Don't depend on toplev.h. + +2010-11-30 Joseph Myers + + * boehm.c: Don't include toplev.h. + * Make-lang.in (java/boehm.o): Don't depend on toplev.h. + +2010-11-30 Joseph Myers + + * expr.c, lang.c, mangle.c, mangle_name.c, typeck.c, + verify-glue.c: Don't include toplev.h. + * Make-lang.in: Dependencies for above files changed to remove + toplev.h. + +2010-11-29 Joseph Myers + + * boehm.c: Include "config.h" instead of . + * builtins.c: Don't include . + * class.c: Don't include "stdio.h". + (O_BINARY): Don't define here. + * jcf-depend.c: Don't include . + (jcf_dependency_set_dep_file, jcf_dependency_init, + jcf_dependency_write): Use gcc_assert. + * jcf-io.c (O_BINARY): Don't define here. + * jcf-path.c: Don't include "tm.h". + (jcf_path_init): Use getenv instead of GET_ENVIRONMENT. + * resource.c: Don't include "stdio.h". + (O_BINARY): Don't define here. + * verify-impl.c: Don't include . + +2010-11-17 Joseph Myers + + * jcf-parse.c (java_parse_file): Take no arguments. + * java-tree.h (java_parse_file): Update prototype. + +2010-11-09 Joern Rennecke + Andrew Haley + + PR java/46386 + * config/pdp11/t-pdp11 (java/constants.o-warn): Remove. + +2010-11-12 Joseph Myers + + * Make-lang.in (jvspec.o, java/lang.o): Use $(OPTS_H). + * lang.c (java_handle_option): Take location_t parameter. + +2010-11-10 Joseph Myers + + * expr.c (expand_java_field_op): Use %' in diagnostic. + * jcf-parse.c (java_parse_file): Use %' in diagnostics. + * jvspec.c (lang_specific_driver): Use %' in diagnostic. + * lang.c (java_post_options): Use %' in diagnostics. + +2010-11-06 Joern Rennecke + + PR middle-end/46314 + * class.c: Include target.h. + (make_local_function_alias): + Use targetm.asm_out.generate_internal_label. + * expr.c (lookup_label, generate_name): Likewise. + +2010-11-03 Joern Rennecke + + PR bootstrap/44335 + * jfc-parse.c (target.h): Include. + (handle_constant): Use targetm.words_big_endian and + targetm.float_words_big_endian. + (get_constant): Use targetm.float_words_big_endian. + +2010-10-13 Richard Henderson + + * lang.c (java_eh_personality): Update call to + build_personality_function. + +2010-10-12 Joseph Myers + + * Make-lang.in (java/lang.o): Use $(OPTIONS_H) instead of + options.h. + +2010-10-11 Nathan Froyd + + * decl.c (java_init_decl_processing): Use build_function_type_list + instead of build_function_type. + * jcf-parse.c (java_emit_static_constructor): Likewise. + * builtins.c (initialize_builtins): Likewise. + +2010-10-08 Joseph Myers + + * lang.c (java_init_options_struct): New. Split out from + java_init_options. + (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define. + +2010-10-04 Andi Kleen + + * Make-lang.in (xgcj, jc1, jcf-dump, jvgenmain): + Add + to build rule. + +2010-09-29 Joseph Myers + + * lang.opt: Don't use VarExists. + +2010-09-29 Joseph Myers + + * java-tree.h (flag_filelist_file, flag_assert, flag_jni, + flag_force_classes_archive_check, flag_redundant, flag_newer, + flag_use_divide_subroutine, flag_use_atomic_builtins, + flag_use_boehm_gc, flag_hash_synchronization, + flag_check_references, flag_optimize_sci, flag_indirect_classes, + flag_indirect_dispatch, flag_store_check, + flag_reduced_reflection): Remove. + * jcf-dump.c (flag_newer): Remove. + * jcf.h (quiet_flag): Remove. + * parse.h (quiet_flag): Remove. + +2010-09-28 Richard Henderson + + * lang.c: Include "target.h". + (java_eh_personality): Use targetm.except_unwind_info. + * Make-lang.in (lang.o): Update deps. + +2010-09-27 Andrew Haley + + PR java/45773 + * jvgenmain.c (main): Fix arg processing. + +2010-09-22 Joseph Myers + + * jvspec.c (lang_specific_driver): Handle OPT__help instead of + OPT_fhelp. + * lang.opt (-CLASSPATH, -all-warnings, -bootclasspath, -classpath, + -dependencies, -encoding, -extdirs, -include-directory, + -include-directory=, -output-class-directory, + -output-class-directory=, -resource, -resource=, + -user-dependencies): New. + +2010-09-16 Richard Guenther + + * jcf-parse.c (current_file_list): Remove. + (java_parse_file): Use build_translation_unit_decl. Adjust. + +2010-09-03 Joseph Myers + + * lang.opt (d): New. + +2010-09-03 H.J. Lu + + PR java/45504 + * jvgenmain.c (main): Check "-D XXX=YYY". + +2010-09-02 Joseph Myers + + * jvspec.c (jvgenmain_spec): Don't handle -fnew-verifier. + +2010-09-02 Joseph Myers + + * lang.opt (CLASSPATH, bootclasspath, classpath, encoding, + fCLASSPATH=): Mark as Java options and as aliases. + * jvspec.c (jvgenmain_spec): Don't handle -fCLASSPATH*. + (lang_specific_driver): Don't handle options marked as aliases. + * lang.c (java_handle_option): Don't handle OPT_fCLASSPATH_. + +2010-08-22 Joseph Myers + + * Make-lang.in (jvspec.o): Update dependencies. + * jvspec.c: Include opts.h. + (PARAM_ARG): Remove. + (find_spec_file): Do not add leading -specs=. + (lang_specific_driver): Use cl_decoded_option structures. + * lang.opt (C, CLASSPATH, D, bootclasspath, classpath, encoding, + extdirs, fmain=, s-bc-abi): New options. + +2010-08-20 Nathan Froyd + + * class.c: Use FOR_EACH_VEC_ELT. + * expr.c: Likewise. + * jcf-parse.c: Likewise. + * resource.c: Likewise. + +2010-08-16 Joseph Myers + + * lang.opt (MD_, MMD_, version): Mark RejectDriver. + +2010-08-05 David Daney + + * class.c (build_utf8_ref): Fix code formatting from previous commit. + +2010-08-05 David Daney + + * class.c (build_utf8_ref): Make decl DECL_USER_ALIGN. + +2010-07-27 Joseph Myers + + * lang.c (java_handle_option): Update prototype and return value + type. + +2010-07-27 Joseph Myers + + * lang.c (java_option_lang_mask): New. + (java_init_options): Update prototype. + (LANG_HOOKS_OPTION_LANG_MASK): Define. + +2010-07-15 Nathan Froyd + + * java-tree.h: Carefully replace TREE_CHAIN with DECL_CHAIN. + * boehm.c: Likewise. + * class.c: Likewise. + * decl.c: Likewise. + * expr.c: Likewise. + * jcf-parse.c: Likewise. + * typeck.c: Likewise. + * verify-glue.c: Likewise. + +2010-07-08 Manuel López-Ibáñez + + * boehm.c: Include diagnostic-core.h in every file that includes + toplev.h. + * class.c: Likewise. + * constants.c: Likewise. + * decl.c: Likewise. + * except.c: Likewise. + * expr.c: Likewise. + * jcf-parse.c: Likewise. + * mangle.c: Likewise. + * mangle_name.c: Likewise. + * resource.c: Likewise. + * typeck.c: Likewise. + * verify-glue.c: Likewise. + +2010-07-05 Nathan Froyd + + PR bootstrap/44825 + * class.c (make_class_data): Cast result of VEC_length calls to int. + +2010-07-05 Nathan Froyd + + * constants.c (build_constants_constructor): Use build_constructor + instead of build_constructor_from_list. + * class.c (make_method_value): Likewise. + (get_dispatch_table): Likewise. + (make_class_data): Likewise. + (emit_indirect_register_classes): Likewise. + (emit_symbol_table): Likewise. + (add_assertion_table_entry): Likewise. + (emit_assertion_table): Likewise. + (make_field_value): Use build_constructor_single instead of + build_constructor_from_list. + +2010-06-28 Nathan Froyd + + * java-tree.h (struct lang_type) [catch_classes]: Change type to a + VEC. + * except.c (prepare_eh_table_type): Call CONSTRUCTOR_APPEND_ELT + instead of tree_cons. + * class.c (make_class): Add dummy entry to TYPE_CATCH_CLASSES. + (emit_catch_table): Adjust for new type of TYPE_CATCH_CLASSES. + +2010-06-28 Steven Bosscher + + * lang.c: Do not include except.h + * except.c: Likewise. + (doing_eh): New, moved from except.c (in gcc/) but removed the + do_warning flag. + (maybe_start_try): Update doing_eh call. + * Make-lang.in: Update dependencies. + +2010-06-23 Anatoly Sokolov + + * decl.c (java_init_decl_processing): Use double_int_to_tree instead + of build_int_cst_wide. + * boehm.c (set_bit): Remove. + (mark_reference_fields): Use double_int type for 'mask' argument. + Use double_int_setbit instead of set_bit. + (get_boehm_type_descriptor): Use double_int_setbit instead of + set_bit. Use double_int_to_tree instead of build_int_cst_wide. + +2010-06-10 Gerald Pfeifer + + * gcj.texi: Move to GFDL version 1.3. Fix copyright years. + +2010-06-08 Laurynas Biveinis + + * jcf-reader.c (jcf_parse_constant_pool): Use typed GC allocation. + + * jcf-parse.c (java_parse_file): Likewise. + (process_zip_dir): Likewise. + + * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Likewise. + (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Likewise. + + * expr.c (add_type_assertion): Likewise. + + * decl.c (make_binding_level): Likewise. + (java_dup_lang_specific_decl): Likewise. + + * constants.c (set_constant_entry): Likewise. + (cpool_for_class): Likewise. + + * class.c (add_method_1): Likewise. + (java_treetreehash_new): Likewise. + + * java-tree.h (struct lang_type): Add variable_size GTY option. + (struct lang_decl): Likewise. + + * jch.h (struct cpool_entry): Likewise. + + * java-tree.h (java_treetreehash_create): Remove parameter ggc. + + * except.c (prepare_eh_table_type): Update + java_treetreehash_create call. + + * class.c (add_method_1): Update java_treetreehash_create call. + (java_treetreehash_create): Remove parameter gc. Use + htab_create_ggc. + +2010-06-04 Joseph Myers + + * jvspec.c (lang_specific_driver): Use GCC-specific formats in + diagnostics. + +2010-05-30 Steven Bosscher + + * except.c: Include tm.h. + +2010-05-28 Joseph Myers + + * jvspec.c (lang_specific_driver): Use fatal_error instead of + fatal. Use warning instead of error for warnings. + +2010-05-28 Nathan Froyd + + * expr.c (get_symbol_table_index): Add spaces in expression. + +2010-05-28 Nathan Froyd + + * java-tree.h (method_entry): Declare. Declare VECs containing it. + (struct lang_type): Change type of otable_methods, atable_methods, and + itable_methods to VECs. Fix comment for atable_methods. + (emit_symbol_table): Take a VEC instead of a tree. + (get_symbol_table_index): Take a VEC * instead of a tree *. + * class.c (add_table_and_syms): Take a VEC instead of a tree. + (emit_symbol_table): Update for changed parameter type. + * expr.c (get_symbol_table_index): Likewise. + +2010-05-27 Steven Bosscher + + * buildings.c: Pretend to be a backend file by undefining + IN_GCC_FRONTEND (still need rtl.h here). + +2010-05-26 Nathan Froyd + + * java-tree.h (struct lang_decl_func): Change type of throws_list + field to a VEC. + * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): Adjust for changed type + of DECL_FUNCTION_THROWS. + * class.c (make_method_value): Likewise. + +2010-05-26 Nathan Froyd + + * class.c (utf8_decl_list): Delete. + (build_utf8_ref): Remove references to it. + * java-tree.h (all_class_list): Delete. + (predef_filenames): Delete. + (enum java_tree_index) [JTI ALL_CLASS_LIST,JTI_PREDEF_FILENAMES]: + Delete. + * jcf-parse.c (parse_roots): Decrease size to 2. + (current_file_list): Convert to a VEC. + (all_class_list): Declare. + (jcf_parse): Adjust for new type of all_class_list. + (java_layout_seen_class_methods): Likewise. + (predefined_filenames): Declare. + (add_predefined_file): Use it. + (predefined_filename_p): Likewise. + (java_parse_file): Adjust for new type of current_file_list. + +2010-05-25 Jakub Jelinek + + * lang.c (java_classify_record): Return RECORD_IS_INTERFACE + for interfaces. + + PR debug/43260 + * java-tree.h (pending_static_fields): New extern declaration. + (java_write_globals): New prototype. + * lang.c (LANG_HOOKS_WRITE_GLOBALS): Define. + * decl.c (java_mark_class_local): When clearing DECL_EXTERNAL + of a static field push it into pending_static_fields vector. + * class.c (pending_static_fields): New variable. + (add_field): If static field is not DECL_EXTERNAL, push it into + pending_static_fields vector. + (java_write_globals): New function. + +2010-05-24 Nathan Froyd + + * expr.c (quick_stack): Change type to a VEC. Update comment. + (tree_list_free_list): Delete. + (flush_quick_stack): Update for quick_stack type change. + (push_value): Likewise. + (pop_value): Likewise. + +2010-05-23 Steven Bosscher + + * java-gimplify.c: Do not include tm.h, toplev.h. + * typeck.c: Do not include tm.h. + * mangle_name.c: Do not include tm.h. + * jcf-dump.c: Do not include tm.h, ggc.h. + * class.c: Do not include rtl.h, tm_p.h, target.h, except.h, cgraph.h. + * decl.c: Do not include tm.h, rtl.h, function.h, expr.h, except.h, + and timevar.h. + * jcf-parse.c: Do not include tm.h and tm_p.h. + * resource.c: Do not include tm.h, rtl.h, flags.h, obstack.h, + target.h, and expr.h. + * except.c: Do not include tm.h, rtl.h, function.h. + * builtins.c: Do not include convert.h. Explain why RTL headers + have to be included here. + * verify-glue.c: Do not include tm.h. + * jcf-depend.c: Do not include tm.h. + * jcf-reader.c: Include ggc.h. + * jcf-io.c: Do not include tm.h, toplev.h. + * expr.c: Do not include tm.h, rtl.h, expr.h, except.h, tm_p.h, + gimple.h. + * lang.c: Do not include rtl.h, expr.h. + * Make-lang.in: Update dependencies. + +2010-05-23 Steven Bosscher + + * jcf-parse.c: Include bitmap.h. + * Make-lang.in: Update dependencies. + +2010-05-20 Jakub Jelinek + + PR debug/43521 + * decl.c (start_java_method): Set DECL_ARTIFICIAL on the 'this' + PARM_DECL. + +2010-05-19 Anatoly Sokolov + + * jcf-parse.c (get_constant): Use double_int_to_tree instead of + build_int_cst_wide_type. + +2010-05-18 Nathan Froyd + + * expr.c (pop_arguments): Fix use of undeclared variable. + +2010-05-18 Nathan Froyd + + * expr.c (expand_java_multianewarray): Use build_call_vec instead of + build_call_list. + (pop_arguments): Return a VEC instead of a tree. Take a method type + rather than a list of argument types. + (rewrite_rule): Change signature. of rewrite_arglist member. + (rewrite_arglist_getcaller): Update signature. + (rewrite_arglist_getclass): Likewise. + (maybe_rewrite_invocation): Update for rewrite_arglist change. + (build_known_method_ref): Take a VEC instead of a tree. + (invoke_build_dtable): Likewise. + (expand_invoke): Update calls to pop_arguments. Use build_call_vec + instead of build_call_list. + (build_jni_stub): Use build_call_vec instead of build_call_list. + * java-tree.h (maybe_rewrite_invocation): Update declaration. + (build_known_method_ref): Likewise. + (invoke_build_dtable): Likewise. + +2010-05-14 Nathan Froyd + + PR 44103 + * java-tree.h (START_RECORD_CONSTRUCTOR): Change first argument to a + vector. Move call to build_constructor... + (FINISH_RECORD_CONSTRUCTOR): ...here. Add necessary arguments. Clear + TREE_CONSTANT on the constructor. + (PUSH_SUPER_VALUE): Change first argument to a vector. + (PUSH_FIELD_VALUE): Likewise. + * resource.c (compile_resource_data): Update calls to above macros. + * constants.c (build_constants_constructor): Likewise. + * class.c (build_utf8_ref): Likewise. + (make_field_value): Likewise. + (make_method_value): Likewise. + (add_table_and_syms): New function. + (make_class_data): Call it. Update calls to above macros. + (build_symbol_table_entry): New function. + (build_symbol_entry): Call it. Update calls to above macros. + (emit_symbol_table): Likewise. + (make_catch_class_record): Update calls to above macros. + (build_assertion_table_entry): New function. + (add_assertion_table_entry): Call it. + (emit_assertion_table): Likewise. + +2010-05-06 Manuel López-Ibáñez + + PR 40989 + * lang.c (java_handle_option): Add argument kind. + +2010-04-18 Eric Botcazou + + * decl.c (java_init_decl_processing): Remove argument in call to + initialize_sizetypes + +2010-04-07 Jakub Jelinek + + * exception.cc (_Jv_Throw): Avoid set but not used warning. + * include/java-assert.h (JvAssertMessage, JvAssert): Use argument in + sizeof to avoid set but not used warnings. + +2010-01-20 Joern Rennecke + + * lang.c (java_post_options): Constify variable "dot". + + * jcf-parse.c (set_source_filename): Constify variable "dot". + (load_class): Constify variable "separator". + Use get_identifier_with_length. + + * jvspec.c (lang_specific_driver): Constify two variables named "p". + +2010-01-09 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2009-11-28 Jakub Jelinek + + * jvspec.c (lang_specific_driver): Remove unused + saw_verbose_flag variable. + * jcf-dump.c (main): Remove unused general_purpose_bits + variable. + * builtins.c (initialize_builtins): Remove unused float_ftype_float + variable. + * expr.c (java_stack_pop): Remove unused val variable. + (build_jni_stub): Remove unused res_type variable. + * verify-impl.c (check_field_constant): Remove unused len variable. + +2009-10-20 Joel Dice + + PR java/28474 + * mangle_name.c (append_unicode_mangled_name): Fix mangling + of names with multiple underscores and "U". + (unicode_mangling_length): Likewise. + +2009-10-03 Simon Baldwin + + * config-lang.in (lang_dirs): Remove zlib. + +2009-09-28 Richard Henderson + + * builtins.c (initialize_builtins): Update call to + build_common_builtin_nodes. + * lang.c (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New. + +2009-09-14 Richard Henderson + + * builtins.c (initialize_builtins): Update call to + build_common_builtin_nodes. + * decl.c (java_init_decl_processing): Don't call + default_init_unwind_resume_libfunc. + * except.c: Include tree-iterator.h. + (build_exception_object_var): New. + (build_exception_object_ref): Use it. + (expand_end_java_handler): Initialize it from __builtin_eh_pointer. + Attach all CATCH_EXPRs to a single TRY_CATCH_EXPR. + * java-tree.h (DECL_FUNCTION_EXC_OBJ): New. + +2009-09-13 Richard Guenther + Rafael Avila de Espindola + + * decl.c (do_nothing): Remove. + (java_init_decl_processing): Do not set lang_eh_runtime_type. + * Make-lang.in (lang.o): Add $(EXCEPT_H) dependency. + * lang.c (java_eh_personality): New. + (java_eh_personality_decl): Likewise. + (LANG_HOOKS_EH_PERSONALITY): Define. + +2009-09-03 Diego Novillo + + * lang.c (lang_hooks): Remove const qualifier. + +2009-09-01 Jakub Jelinek + + * boehm.c (mark_reference_fields): Compute % in HOST_WIDE_INT + type. + +2009-09-01 Richard Guenther + + * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Remove. + * java-tree.h (java_mark_addressable): Likewise. + * typeck.c (java_mark_addressable): Likewise. + +2009-08-17 Ralf Wildenhues + + * Make-lang.in (java.install-pdf): Install gcj.pdf in + $(pdfdir)/gcc, alongside the other manuals. + +2009-08-12 Andrew Haley + + * builtins.c (compareAndSwapInt_builtin): Use + flag_use_atomic_builtins. + (compareAndSwapLong_builtin): Likewise. + (compareAndSwapObject_builtin): Likewise. + * jvspec.c: Add flag_use_atomic_builtins. + * gcj.texi: Likewise. + * java-tree.h: Likewise. + * lang.opt: Likewise. + +2009-08-11 Dodji Seketeli + + PR debug/40990 + * lang.c (put_decl_node): Outputs different level of information + depending on the verbosity level. + +2009-07-31 Andrew Haley + + PR java/40867 + * decl.c (java_replace_references): Set EXPR_LOCATION on all + generated expressions. + (binding_level.loc): new field. + (clear_binding_level): Initialize loc. + (set_input_location): New function. + (pushlevel): Set new binding_level.loc. + (poplevel): Set EXPR_LOCATION on the new BIND_EXPR_BODY. + (start_java_method): Set DECL_SOURCE_LOCATION of this new method. + (java_add_stmt): Set the EXPR_LOCATION on all subtrees of new_stmt. + +2009-07-17 Richard Guenther + + PR c/40401 + * java-gimplify.c (java_genericize): Do not gimplify here. + But replace all local references. + (java_gimplify_expr): Do not replace local references here. + (java_gimplify_modify_expr): Likewise. + * jcf-parse.c (java_parse_file): Do not finalize the CU or + optimize the cgraph here. + * decl.c (java_replace_reference): Make static. + (java_replace_references): New function. + (end_java_method): Clear base_decl_map. + * java-tree.h (java_replace_references): Declare. + (java_replace_reference): Remove. + +2009-07-14 Taras Glek + Rafael Espindola + + * Make-lang.in (java.install-plugin): New target for + installing plugin headers. + +2009-07-07 Manuel López-Ibáñez + + * class.c: Replace %J by an explicit location. Update all calls. + +2009-07-07 Manuel López-Ibáñez + + * jcf-parse.c: Replace %H by an explicit location. Update all calls. + +2009-06-29 Andrew Haley + + PR java/40590 + * java-tree.h (cxx_keyword_p): New declaration. + * mangle_name.c (utf8_cmp): Move here from mangle.c. + (cxx_keywords): Likewise. + (cxx_keyword_p): Likewise. + (MANGLE_CXX_KEYWORDS): New macro. + (append_gpp_mangled_name): Use MANGLE_CXX_KEYWORDS. + (append_gpp_mangled_name): Likewise. + * mangle.c: Move code to mangle_name.c. + (mangle_member_name): Don't call cxx_keyword_p. + +2009-06-12 Aldy Hernandez + + * java-gimplify.c (java_gimplify_block): New argument to + build_empty_stmt. + * expr.c (force_evaluation_order): Same. + * typeck.c: Add location to build_decl or PUSH_FIELD calls. + * class.c: Same. + * decl.c: Same. + * jcf-parse.c: Same. + * constants.c: Same. + * resource.c: Same. + * except.c: Same. + * builtins.c: Same. + * expr.c: Same. + * java-tree.h (PUSH_FIELD): Add location field. + +2009-06-09 Ian Lance Taylor + + * verify.h: Remove extern "C". + +2009-06-07 Ian Lance Taylor + + * jcf-parse.c (handle_constant): Change local variable 'kind' to + unsigned int. + +2009-06-01 Ian Lance Taylor + + * jcf-io.c (find_class): Use CONST_CAST. + +2009-05-27 Ian Lance Taylor + + * Make-lang.in ($(XGCJ)$(exeext)): Change $(COMPILER) to + $(LINKER). + (jc1$(exeext), jcf-dump$(exeext), jvgenmain$(exeext)): Likewise. + +2009-05-26 Ian Lance Taylor + + * Make-lang.in (jvspec.o): Use $(COMPILER). + ($(XGCJ)$(exeext), jc1$(exeext), jcf-dump$(exeext)): Likewise. + (jvgenmain$(exeext), java/jcf-io.o, java/jcf-path.o): Likewise. + +2009-05-12 Alexandre Oliva + + * Make-lang.in (GCJ): Renamed to... + (XGCJ): ... this. + +2009-04-27 Ian Lance Taylor + + * builtins.c (java_builtins): Add casts to enum type. + * verify-impl.c (check_class_constant): Add cast to enum type. + (check_constant, check_wide_constant): Likewise. + +2009-04-27 Richard Guenther + + PR java/38374 + * constants.c (build_constants_constructor): Retain the old + pointer type as valid TYPE_POINTER_TO after patching the + type of the constant pool decl. + +2009-04-24 Ian Lance Taylor + + * jcf-parse.c (handle_constant): Add cast to enum type. + +2009-04-21 Taras Glek + + * builtins.c: Update GTY annotations to new syntax + * decl.c: Likewise + * java-tree.h: Likewise + * jcf.h: Likewise + * lang.c: Likewise + +2009-04-21 Joseph Myers + + * ChangeLog, ChangeLog.ptr, ChangeLog.tree-ssa: Add copyright and + license notices. + +2009-04-18 Ian Lance Taylor + + * verify-impl.c (verify_instructions_0): Add cast to enum type. + +2009-04-09 Paolo Bonzini + + * builtins.c (compareAndSwapLong_builtin, + compareAndSwapInt_builtin, compareAndSwapObject_builtin, + VMSupportsCS8_builtin): Do not look at sync_compare_and_swap_cc. + +2009-03-31 Richard Guenther + + * java-gimplify.c (java_gimplify_expr): Do not manually gimplify + the first operand of binary and comaprison expressions. + +2009-03-30 Joseph Myers + + PR rtl-optimization/323 + * lang.c (java_post_options): Set flag_excess_precision_cmdline. + Give an error for -fexcess-precision=standard for processors where + the option is significant. + +2009-03-18 Ralf Wildenhues + + * lang.opt: Unify help text for -Wdeprecated. + +2009-02-03 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2009-01-16 Richard Guenther + + PR tree-optimization/38835 + PR middle-end/36227 + * builtins.c (build_addr_sum): Use POINTER_PLUS_EXPR. + +2008-12-05 Sebastian Pop + + PR bootstrap/38262 + * Make-lang.in (jc1): Add BACKENDLIBS, remove GMPLIBS. + +2008-11-04 Andrew Haley + + PR java/37068 + * jcf-parse.c (java_emit_static_constructor): Don't call + cgraph_build_static_cdtor. Rewrite. + +2008-10-24 Jakub Jelinek + + * Make-lang.in (check-java-subtargets): New target. + +2008-10-16 David Edelsohn + + PR target/35483 + * Make-lang.in (class.o): Depend on $(TM_P_H). + (expr.o): Same. + * class.c: Include tm_p.h. + * expr.c: Include tm_p.h. + +2008-10-14 Andrew Haley + + * constants.c (build_constant_data_ref): Make sure we only build + one copy of the decl for the constant pool. + +2008-09-22 Andrew Haley + + * expr.c (rules): Add new rule for + gnu.java.lang.VMCPStringBuilder.toString. + (rewrite_rule.new_classname): New field. + (maybe_rewrite_invocation): Use new_classname field instead of + DECL_CONTEXT (*method_p). + Allow rewrite_arglist to be NULL. + +2008-09-17 Andrew Pinski + + * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): Don't define. + (java_get_callee_fndecl): Kill. + +2008-09-17 Jan Hubicka + + PR c++/18071 + * class.c (add_method_1): Do not initialize DECL_INLINE. + (make_local_function_alias): Likewise. + * expr.c (rewrite_arglist_getcaller): Set DECL_UNINLINABLE. + * lang.c (java_decl_ok_for_sibcall): Use DECL_UNINLINABLE. + +2008-09-09 Richard Guenther + + * decl.c (build_result_decl): Remove no longer applicable + promotion. + +2008-09-05 David Daney + + * gcj.texi (-freduced-reflection): Clarify option's restrictions. + +2008-08-21 David Daney + + * class.c (make_class_data): Don't add field_index when + flag_reduced_reflection set. + +2008-08-12 Ulrich Weigand + + * typeck.c (convert): Do not check for TARGET_FLOAT_FORMAT. + +2008-08-08 Manuel Lopez-Ibanez + + PR 28875 + * lang.c (java_handle_option): Replace set_Wunused with + warn_unused. + +2008-07-30 Ralf Wildenhues + + * gcj.texi: Update copyright years. Do not list GPL as + Invariant Section. + +2008-07-29 Jakub Jelinek + + * class.c (build_utf8_ref): Set DECL_SIZE and DECL_SIZE_UNIT + from ctype's sizes. + + * class.c (build_utf8_ref): Pad initializer string to utf8const_type's + alignment. + +2008-07-29 Jan Hubicka + + * lang.c (java_post_options): Remove handling of flag_no_inline. + +2008-07-28 Richard Guenther + + Merge from gimple-tuples-branch. + + 2008-07-18 Richard Guenther + + * expr.c: Include tree-iterator.h. + * Make-lang.in (expr.o): Add tree-iterator.h dependency. + + 2008-07-18 Aldy Hernandez + + * java-gimplify.c: Include gimple.h instead of tree-gimple.h. + * expr.c: Same. + + 2008-07-14 Aldy Hernandez + + * java-gimplify.c (java_gimplify_expr): Same. + (java_gimplify_modify_expr): Same. + * java-tree.h: Rename GENERIC_NEXT to TREE_CHAIN. + + 2008-05-02 Diego Novillo + + * expr.c (build_java_throw_out_of_bounds_exception): Fix + mixed declarations and code. + + 2008-05-02 Doug Kwan + + * expr.c (build_java_throw_out_of_bounds_exception ): Wrap call to + _Jv_ThrowBadArrayIndex with a COMPOUND_EXPR to return 0. + + 2008-02-19 Diego Novillo + + http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00804.html + + * java-gimplify.c (java_gimplify_self_mod_expr): Change + gimple_seq arguments to gimple_seq *. Update all users. + + 2007-11-26 Aldy Hernandez + + * java-gimplify.c (java_gimplify_expr): Make pre_p and post_p + sequences. + (java_gimplify_self_mod_expr): Same. + * java-tree.h (java_gimplify_expr): Make pre_p and post_p + sequences. + +2008-07-24 Jan Hubicka + + * java/decl.c: Include cgraph.h + (end_java_method): Remove non-unit-at-a-time code. + (java_mark_decl_local): Likewise; sanity check that we don't touch + finalized nodes. + +2008-07-15 Jan Hubicka + + * lang.c (java_init_options): Enable unit-at-a-time by default. + +2008-07-14 Ralf Wildenhues + + * Make-lang.in (jvspec.o): Fix dependencies. + +2008-07-06 Tom Tromey + + * Make-lang.in (java/parse.o-warn): Remove. + (java/jcf-io.o-warn): Remove. + +2008-07-05 Tom Tromey + + * jcf-io.c: Don't include fnmatch.h. Don't use JCF_USE_SCANDIR. + (compare_path): Remove. + (java_or_class_file): Likewise. + (memoized_dirlist_entry): Likewise. + (memoized_dirlist_hash): Likewise. + (memoized_dirlist_lookup_eq): Likewise. + (memoized_dirlists): Likewise. + (caching_stat): Likewise. + (find_class): Use stat. + * jcf.h (JCF_USE_SCANDIR): Remove. + +2008-06-30 Joshua Sumali + + * Make-lang.in (JAVA_MANFILES): Add doc/aot-compile.1 and + doc/rebuild-gcj-db.1 + (java.uninstall): Likewise. + (java.maintainer-clean): Likewise. + (aot-compile.pod): New rule. + (rebuild-gcj-db.pod): New rule. + (java.install-man): Install doc/aot-compile.1 and doc/rebuild-gcj-db.1 + * gcj.texi: Add new sections for aot-compile and rebuild-gcj-db. + +2008-06-29 Kaveh R. Ghazi + + * Make-lang.in (java/jcf-io.o-warn): New. + +2008-06-24 Tom Tromey + + * jcf-path.c (jcf_path_init): Don't name variable 'try'. + * expr.c (add_type_assertion): Rename argument. + (build_java_arrayaccess): Don't name variable 'throw'. + (ARRAY_NEW_MULTI): Don't name variable 'class'. + * jcf-io.c (find_class): Don't name variable 'class'. + * mangle.c (compression_table_add): Don't name variable 'new'. + * constants.c (cpool_for_class): Rename argument. + (alloc_constant_fieldref): Likewise. + * jcf-parse.c (handle_innerclass_attribute): Don't name variable + 'class'. + (read_class): Likewise. + (parse_zip_file_entries): Likewise. + (process_zip_dir): Likewise. + * decl.c (java_mark_class_local): Rename argument. + * class.c (GEN_TABLE): Use type_name, not typename. + (gen_indirect_dispatch_tables): Likewise. + (add_field): Rename argument. + (is_compiled_class): Likewise. + (safe_layout_class): Likewise. + (emit_assertion_table): Likewise. + * typeck.c (has_method): Rename argument. + +2008-06-19 Kaveh R. Ghazi + + * class.c (ident_subst, mangled_classname, unmangle_classname, + gen_indirect_dispatch_tables, add_method_1, + build_fieldref_cache_entry, make_local_function_alias, + layout_class, java_treetreehash_find, java_treetreehash_new, + split_qualified_name): Fix for -Wc++-compat. + * constants.c (set_constant_entry, cpool_for_class): Likewise. + * decl.c (make_binding_level, java_dup_lang_specific_decl, + start_java_method): Likewise. + * except.c (prepare_eh_table_type): Likewise. + * expr.c (type_assertion_hash, note_instructions): Likewise. + * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC, + MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Likewise. + * jcf-io.c (jcf_filbuf_from_stdio, opendir_in_zip, find_class): + Likewise. + * jcf-parse.c (reverse, java_read_sourcefilenames, + annotation_grow, rewrite_reflection_indexes, java_parse_file, + process_zip_dir): Likewise. + * jcf-path.c (add_entry, add_path, jcf_path_init, + jcf_path_extdirs_arg): Likewise. + * jcf-reader.c (jcf_parse_constant_pool): Likewise. + * jvgenmain.c (do_mangle_classname): Likewise. + * lang.c (put_decl_string): Likewise. + * verify-impl.c (make_state_copy, make_state, add_new_state): + Likewise. + +2008-06-15 Ralf Wildenhues + + * gcj.texi: Expand TABs, remove whitespace from blank lines. + +2008-06-14 Tom Tromey + + PR java/36247: + * class.c (build_class_ref): Initialize this_classdollar when + needed. + +2008-05-23 Andrew Haley + + * jcf-parse.c (give_name_to_class): Call find_sourcefile to find full + pathname of source file. + +2008-05-12 Aaron W. LaFramboise + + * jcf-dump.c (print_constant): Use + HOST_LONG_LONG_FORMAT. + +2008-05-07 Kenneth Zadeck + + * decl.c (java_init_decl_processing): Change DECL_IS_PURE to + DECL_PURE_P. + +2008-04-23 Paolo Bonzini + + * class.c (build_utf8_ref): Don't set TREE_INVARIANT. + (build_classdollar_field): Don't set TREE_INVARIANT. + (get_dispatch_table): Don't set TREE_INVARIANT. + (make_class_data): Don't set TREE_INVARIANT. + (build_symbol_entry): Don't set TREE_INVARIANT. + (emit_symbol_table): Don't set TREE_INVARIANT. + * constants.c (build_constant_data_ref): Don't set TREE_INVARIANT. + (build_ref_from_constant_pool): Don't set TREE_INVARIANT. + * resource.c (compile_resource_data): Don't set TREE_INVARIANT. + * expr.c (cache_cpool_data_ref): Don't set TREE_INVARIANT. + +2008-04-03 Tom Tromey + + * Make-lang.in (java_OBJS): New variable. + +2008-04-03 Paolo Bonzini + + * java-tree.h (insert_block): Kill. + * decl.c (insert_block): Kill. + +2008-04-01 Joseph Myers + + * gcj.texi: Include gpl_v3.texi instead of gpl.texi + * Make-lang.in (TEXI_JAVA_FILES): Include gpl_v3.texi instead of + gpl.texi. + +2008-03-27 Tom Tromey + + * Make-lang.in: Revert automatic dependency patch. + +2008-03-25 Tom Tromey + + * Make-lang.in: Removed most explicit .o targets. + (java/jvspec.o): Reduce to variable setting. Moved to java/. + ($(GCJ)$(exeext)): Update. + (JAVA_OBJS): New variable. + (JCFDUMP_OBJS): Reformat. + (java_OBJS): New variable. + (java/jvspec.o-warn): Update. + (java/parse.o-warn): Remove. + (JAVA_TREE_H): Remove. + (java/jcf-io.o): Reduce to variable setting. + (ALL_CPPFLAGS): Likewise. + +2008-03-12 Paolo Bonzini + + * mangle.c (java_mangle_decl): Remove dead check. + +2008-03-11 Paolo Bonzini + + * jcf-parse.c (java_parse_file): Assert binding levels are + left in order. + * lang.c (LANG_HOOKS_CLEAR_BINDING_STACK, java_clear_binding_stack): + Delete. + +2008-03-02 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2008-02-29 Tom Tromey + + * expr.c (expand_byte_code): Set DECL_FUNCTION_LAST_LINE on + method. + * java-tree.h (struct lang_decl_func): Remove obsolete comment. + +2008-02-26 Tom Tromey + + * lang.c (java_post_options): Remove conditional. + * expr.c (expand_byte_code): Remove old location code. + * jcf-parse.c (set_source_filename): Remove old location code. + (give_name_to_class): Likewise. + (jcf_parse): Likewise. + (duplicate_class_warning): Likewise. + (parse_class_file): Likewise. + (java_parse_file): Likewise. + * decl.c (finish_method): Remove old location code. + * class.c (push_class): Remove old location code. + +2008-02-06 Kaveh R. Ghazi + + PR other/35107 + * Make-lang.in (jc1): Add $(GMPLIBS). + +2008-01-23 David Daney + + * class.c (hide) Rename to... + (java_hide_decl) ... this throughout, and make public. + * resource.c (Jr_count): Remove. + (compile_resource_data): Call java_mangle_resource_name to generate + decl name. Make resource decl public and hidden. + * mangle.c (java_mangle_resource_name): New function. + * java-tree.h (java_hide_decl, java_mangle_resource_name): Declare + functions. + +2008-01-04 Andrew Haley + + PR java/17779 + * jcf-parse.c (parse_zip_file_entries): Move decl to compile on + C90. + +2008-01-03 Andrew Haley + + PR java/17779 + * jcf-parse.c (parse_zip_file_entries): Unset TYPE_ALIAS_SET if + we're about to re-layout the type. + +2007-12-20 Alexandre Oliva + + * lang.c (java_classify_record): Don't return + RECORD_IS_INTERFACE for now. + +2007-12-18 Andrew Haley + + PR java/27643 + * jcf-parse.c (java_parse_file): Remove call to + java_mark_class_local. + (parse_class_file): Reinstate call to java_mark_class_local here. + * decl.c (java_mark_cni_decl_local): If the ASSEMBLER_NAME is + already set, call java_mangle_decl() and make_decl_rtl() to + rewrite its name as a hidden alias. + +2007-12-15 Alexandre Oliva + + PR debug/7081 + * lang.c (java_classify_record): New. + (LANG_HOOKS_CLASSIFY_RECORD): Override. + +2007-11-26 Andreas Krebbel + + PR 34081/C++ + * decl.c (finish_method): Pass 'false' for the new + allocate_struct_function parameter. + +2007-11-26 Alexandre Oliva + + * expr.c (build_jni_stub): Use the computed jni func type for + variable meth. + +2007-11-26 Alexandre Oliva + + * class.c (JAVA_TREEHASHHASH_H): Use TYPE_UID. + +2007-11-26 Alexandre Oliva + + * expr.c (type_assertion_hash): Hash type uids rather than + tree pointers. + +2007-11-17 David Daney + Andrew Haley + + * constants.c (build_constants_constructor): Use POINTER_SIZE + insead of BITS_PER_WORD in big-endian work around. + +2007-11-07 Tom Tromey + + PR java/34019: + * gcj.texi (Input Options): Add missing noun. + +2007-11-02 Tom Tromey + + PR java/33765: + * jcf-parse.c (java_parse_file): Ignore ZIPEMPTYMAGIC files. + * zipfile.h (ZIPEMPTYMAGIC): New define. + +2007-11-01 Tom Tromey + + * Make-lang.in (java/jcf-dump.o): Depend on zipfile.h. + (java/jcf-parse.o): Depend on jcf-reader.c, zipfile.h, and jcf.h. + (java/jcf-io.o): Depend on zipfile.h. + +2007-10-17 Richard Guenther + + * Make-lang.in (java/builtins.o): Add $(OPTABS_H) and $(EXPR_H) + dependencies. + +2007-10-03 Andrew Haley + + PR java/33639 + * class.c (mangled_classname): Detect and replace illegal + characters in assembly language symbols. + (gen_indirect_dispatch_tables): Call mangled_classname() on + the type. + +2007-09-27 Jakub Jelinek + + * lang.c (java_print_error_function): Add third argument. + +2007-09-15 Tom Tromey + + * java-tree.h (struct lang_decl_func) : + Remove. + : Likewise. + * lang.c (java_dump_tree): Update. + * java-tree.h (DECL_FUNCTION_BODY): Remove. + +2007-09-11 Jan Hubicka + + * decl.c (java_expand_body): Kill. + (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill. + +2007-09-06 Tom Tromey + + * jcf-parse.c (parse_class_file): Re-enter the current file. + +2007-09-07 Roman Zippel + + * boehm.c (mark_reference_fields): Move misaligned pointer check + after JREFERENCE_TYPE_P test + +2007-09-06 Roman Zippel + + * boehm.c (mark_reference_fields): Don't use bitmap as gc_descr + if pointer is misaligned. + +2007-09-06 Tom Tromey + + * lang.c (java_post_options): Update. + * jcf-parse.c (set_source_filename): Update. + (give_name_to_class): Update. + (jcf_parse): Update. + (duplicate_class_warning): Update. + (parse_class_file): Update. + (java_parse_file): Update. + * expr.c (expand_byte_code): Update. + +2007-09-05 Sandra Loosemore + + * decl.c (finish_method): Use set_cfun. + +2007-09-04 Andrew Haley + + * decl.c (java_init_decl_processing): Call "__cxa_end_cleanup" + when using the ARM EABI. + +2007-09-03 Daniel Jacobowitz + + * Make-lang.in (jvspec.o): Remove SHLIB_MULTILIB. + +2007-09-03 Kaveh R. Ghazi + + * jcf-parse.c (read_class, java_parse_file): Supply a TYPE for + CONST_CAST. + * jcf.h (JCF_FINISH): Likewise. + +2007-08-28 Tom Tromey + + * Make-lang.in (java.tags): Don't tag '*.y' files. + +2007-08-25 Kaveh R. Ghazi + + * lang.c (java_decl_ok_for_sibcall): Likewise. + +2007-08-21 Paul Brook + Nathan Sidwell + Mark Mitchell + Joseph Myers + + * jcf-dump.c (version): Use pkgversion_string. Update copyright + date. + +2007-08-20 Richard Guenther + + * lang.c (java_tree_inlining_walk_subtrees): Remove. + (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Remove. + +2007-08-17 Tom Tromey + + * typeck.c (find_method_in_interfaces): Update. + * jcf-parse.c (load_class): Update. + * java-gimplify.c (java_gimplify_component_ref): Removed. + (java_gimplify_modify_expr): Update. Removed pre_p and post_p + arguments. + (java_gimplify_expr): Update. + * decl.c (java_init_decl_processing): Update. + * class.c (set_constant_value): Update. + (make_class_data): Update. + (finish_class): Update. + (build_static_field_ref): Update. + (is_compiled_class): Update. + (maybe_layout_super_class): Update. + (layout_class): Update. + (layout_class_method): Update. + * java-tree.h (CAN_COMPLETE_NORMALLY): Removed. + (lang_decl_var) : Removed fields. + (lang_decl_func) : Removed field. + (lang_type) : Removed fields. + (FIELD_NESTED_ACCESS): Removed. + (FIELD_NESTED_ACCESS_P): Removed. + (DECL_FIELD_FINAL_IUD): Removed. + (DECL_LOCAL_FINAL_IUD): Removed + (LOCAL_FINAL_P): Removed. + (FINAL_VARIABLE_P): Removed. + (CLASS_FINAL_VARIABLE_P): Removed. + (DECL_BIT_INDEX): Removed. + (DECL_INIT_CALLS_THIS): Removed. + (FIELD_LOCAL_ALIAS): Removed. + (FIELD_LOCAL_ALIAS_USED): Removed. + (FIELD_THISN): Removed. + (DECL_FUNCTION_INIT_TEST_CLASS): Removed. + (LOCAL_CLASS_INITIALIZATION_FLAG): Removed. + (LOCAL_CLASS_INITIALIZATION_FLAG_P): Removed. + (TYPE_DOT_CLASS): Removed. + (TYPE_VERIFY_METHOD): Removed. + (ID_CLASSDOLLAR_P): Removed. + (enum java_tree_index) : + Removed. + (classdollar_identifier_node): Removed. + (TYPE_UNKNOWN): Removed. + (CLASS_FROM_SOURCE_P): Removed. + * expr.c (build_jni_stub): Update. + (force_evaluation_order): Update. + (build_java_empty_stmt): Update. + (build_class_init): Update. + (java_stack_swap): Update. + (build_jni_stub): Update. + +2007-08-17 Tom Tromey + + * java-tree.h (LABEL_TYPE_STATE): Removed. + (load_type_state): Removed. + (LABEL_PC): Removed. + (LABEL_VERIFIED): Removed. + (type_states): Declare. + * expr.c (type_states): New global. + (load_type_state): Now static. Use type_states. Changed + argument. + (lookup_label): Don't set LABEL_PC. + (expand_byte_code): Don't use LABEL_VERIFIED. + (note_instructions): Initialize type_states. + * verify-glue.c (vfy_note_stack_depth): Rewrote. + (vfy_note_stack_type): Use type_states. + (vfy_note_local_type): Likewise. + +2007-08-10 Kaveh R. Ghazi + + * jcf-parse.c (read_class, java_parse_file): Use CONST_CAST. + * jcf.h (JCF_FINISH): Likewise. + +2007-07-31 Nick Clifton + + * java-gimplify.c: Change copyright header to refer to version 3 + of the GNU General Public License and to point readers at the + COPYING3 file and the FSF's license web page. + * typeck.c, lang-specs.h, mangle_name.c, jcf-dump.c, class.c, + decl.c, config-lang.in, jcf-parse.c, constants.c, Make-lang.in, + resource.c, except.c, builtins.c, jvspec.c, java-tree.def, + javaop.def, jcf-path.c, verify-glue.c, jcf-depend.c, lang.opt, + jcf-reader.c, mangle.c, zextract.c, jcf-io.c, jcf.h, zipfile.h, + verify.h, java-except.h, win32-host.c, expr.c, jvgenmain.c, + parse.h, lang.c, java-tree.h, javaop.h, boehm.c: Likewise. + +2007-07-30 Kaveh R. Ghazi + + * jcf-io.c (find_class): Fix -Wcast-qual warnings. + +2007-07-29 Kaveh R. Ghazi + + * lang.c (java_get_callee_fndecl): Constify. + +2007-07-27 Kaveh R. Ghazi + + * mangle.c (set_type_package_list): Constify. + * verify-glue.c (vfy_make_string): Delete. + * verify.h (vfy_make_string): Likewise. + +2007-07-26 Tom Tromey + + * java-tree.h (push_labeled_block, pop_labeled_block): Remove. + (LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, + EXIT_BLOCK_LABELED_BLOCK): Likewise. + * lang.c (java_tree_inlining_walk_subtrees): Update. + (java_dump_tree): Likewise. + * java-tree.def (LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, TRY_EXPR): + Remove. + * decl.c (push_labeled_block, pop_labeled_block): Remove. + * java-gimplify.c (java_gimplify_labeled_block_expr, + java_gimplify_exit_block_expr, java_gimplify_try_expr): Remove. + (java_gimplify_expr): Update. + +2007-07-25 Kaveh R. Ghazi + + * class.c (java_treetreehash_hash, java_treetreehash_compare): + Constify. + * expr.c (type_assertion_eq): Likewise. + * jcf-io.c (compare_path): Likewise. + * jcf-parse.c (cmpstringp): Likewise. + * verify-impl.c (get_one_type, compute_argument_types, + compute_return_type): Likewise. + +2007-07-16 Rainer Orth + + PR target/32462 + PR libgcj/32465 + * class.c (hide): Wrap in HAVE_GAS_HIDDEN. + +2007-07-12 Richard Guenther + + * expr.c (expand_java_return): RETURN_EXPR has void type. + (build_jni_stub): Likewise. Use a comparison against zero + for null-pointer test in COND_EXPR. + (build_field_ref): Build POINTER_PLUS_EXPR with correct + type. Convert result instead. + (build_invokevirtual): Likewise. + +2007-07-09 Geoffrey Keating + + PR 32617 + * lang.c (java_init): Remove setting of force_align_functions_log. + * class.c (add_method_1): Set DECL_ALIGN of non-static method + to cope with ptrmemfunc_vbit_in_pfn. + +2007-07-03 David Daney + + * java/Make-lang.in (doc/gcj.info): Add $(gcc_docdir) to + include path. + (doc/gcj.dvi): Same. + (doc/gcj.pdf): Same. + (java/index.html): Same. + +2007-06-15 Andrew Pinski + + * class.c (make_class_data): Build the index in sizetype. + Use POINTER_PLUS_EXPR instead of PLUS_EXPR when + adding to a pointer type. + (build_symbol_entry): Likewise. + * expr.c (build_java_arrayaccess): Likewise. + (build_field_ref): Likewise. + (build_known_method_ref): Likewise. + (build_invokevirtual): Likewise. + * except.c (build_exception_object_ref): Do a + NEGATIVE and then a POINTER_PLUS_EXPR instead + of a MINUS_EXPR. + +2007-06-11 Rafael Ávila de Espíndola + + * typeck.c (java_signed_type): Remove. + * lang.c (LANG_HOOKS_SIGNED_TYPE): Remove. + * java-tree.h (java_signed_type): Remove. + +2007-05-18 Geoffrey Keating + + * jcf-dump.c (HANDLE_MAGIC): Use 'unsigned long' for %lx. + (print_constant): Likewise. + +2007-05-14 Rafael Ávila de Espíndola + + * expr.c (build_java_binop): Use unsigned_type_for instead of + java_unsigned_type. + * java-tree.h (java_unsigned_type): Remove. + * lang.c (LANG_HOOKS_UNSIGNED_TYPE): Remove. + * typeck.c (java_unsigned_type): Remove. + +2007-04-21 Andrew Pinski + + * java-tree.h (lang_tree_node): Use GENERIC_NEXT + instead of checking GIMPLE_STMT_P in chain_next. + +2007-04-06 Colin Walters + + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161701 + * jcf-io.c (open_class): Copy 'filename'. + +2007-04-03 Andrew Haley + + * jvgenmain.c (main): Change main to use class$, not class$$. + (do_mangle_classname): Likewise. + * class.c (hide): New function. + (add_field): Hide everything that shouldn't be visible outside a + DSO. + (build_static_class_ref): Likewise. + (build_classdollar_field): Likewise. + (make_class_data): Likewise. + (layout_class_method): Likewise. + * expr.c (special_method_p): New function. + + * class.c (push_class): Don't bogusly guess the source filename. + * jcf-parse.c (give_name_to_class): Don't set input_location from + DECL_ARTIFICIAL decls. + +2007-03-30 Rafael Ávila de Espíndola + + * typeck.c (java_signed_or_unsigned_type): Removed. + (java_signed_type): use get_signed_or_unsigned_type instead of + java_signed_or_unsigned_type. + (java_unsigned_type): Ditto. + * lang.c (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Removed. + * java-tree.h (java_signed_or_unsigned_type): Removed. + +2007-03-26 Tom Tromey + + * Make-lang.in (JAVA_MANFILES): Removed grmiregistry.1. + (java.maintainer-clean): Likewise. + (java.install-man): Likewise. + (.INTERMEDIATE): Removed grmiregistry.pod. + (grmiregistry.pod): Removed. + * gcj.texi (Invoking gcjh): Removed. + (Invoking gjnih): Likewise. + (Invoking grmiregistry): Likewise. + (direntry): Updated. + (Top): Likewise. + (which-gcj): Removed. + +2007-03-01 Brooks Moses + + * Make-lang.in: Add install-pdf target as copied from + automake v1.10 rules. + +2007-02-27 Brooks Moses + + * gcj.texi: Standardize title page. + +2007-02-18 Kazu Hirata + + * class.c: Fix a comment typo. + +2007-02-15 Sandra Loosemore + Brooks Moses + Lee Millward + + * java-tree.h (BUILD_MONITOR_ENTER): Use build_call_nary instead + of build3. + (BUILD_MONITOR_EXIT): Likewise. + + * java-gimplify.c (java_gimplify_component_ref): Use build_call_expr. + (java_gimplify_modify_expr): Likewise. + + * class.c (cache_this_class_ref): Use build_call_expr. + (build_static_field_ref): Likewise. + (emit_indirect_register_classes): Likewise. + (emit_register_classes): Likewise. + + * resource.c (write_resource_constructor): Use build_call_expr. + + * builtins.c (builtin_creator_function): Change interpretation of + the second parameter to be the whole CALL_EXPR instead of the arglist. + (max_builtin): Tweak parameter list. Use new CALL_EXPR accessors. + (min_builtin): Likewise. + (abs_builtin): Likewise. + (java_build_function_call_expr): Likewise. + (convert_real): Likewise. + (UNMARSHAL3): Likewise. + (UNMARSHAL4): Likewise. + (UNMARSHAL5): Likewise. + (build_arglist_for_builtin): Delete. Fix callers to use + build_call_expr instead. + (putObject_builtin): Tweak parameter list. Use new CALL_EXPR + accessors. + (compareAndSwapInt_builtin): Likewise. + (compareAndSwapLong_builtin): Likewise. + (compareAndSwapObject_builtin): Likewise. + (putVolatile_builtin): Likewise. + (getVolatile_builtin): Likewise. + (VMSupportsCS8_builtin): Likewise. + (check_for_builtin): Pass entire CALL_EXPR to builtin expander + instead of arglist. + + * expr.c (build_java_athrow): Use build_call_nary instead of build3. + (build_java_throw_out_of_bounds_exception): Likewise. + (java_check_reference): Likewise. + (build_java_arraystore_check): Likewise. + (build_newarray): Likewise. + (build_anewarray): Likewise. + (expand_java_multinewarray): Use build_call_list instead of build3. + (build_java_monitor): Use build_call_nary instead of build3. + (java_create_object): Likewise. + (expand_java_NEW): Likewise. + (build_instanceof): Likewise. + (expand_java_CHECKCAST): Likewise. + (build_java_soft_divmod): Likewise. + (build_java_binop): Likewise. + (build_field_ref): Likewise. + (build_class_init): Likewise. + (rewrite_arglist_getcaller): Use build_call_expr. + (build_invokeinterface): Use build_call_nary instead of build3. + (expand_invoke): Use build_call_list instead of build3. + (build_jni_stub): Use build_call_nary, build_call_list, or + build_call_expr instead of build3. + (expand_java_field_op): Use build_call_expr instead of build3. + (force_evaluation_order): Use new CALL_EXPR accessors. + + * lang.c (java_get_callee_fndecl): Use new CALL_EXPR accessors. + +2007-02-15 David Daney + + * Make-lang.in (JAVA_MANFILES): Add doc/gc-analyze.1. + (java.maintainer-clean):Add gc-analyze.1. + (.INTERMEDIATE): Add gc-analyze.pod. + (gc-analyze.pod): New rule. + (java.install-man): Install gc-analyze.1 + * gcj.texi: Add new section for the gc-analyze program. + +2007-02-07 Andrew Haley + + * class.c (uncache_this_class_ref): New. + * expr.c (build_jni_stub): Initialize the class. + (expand_byte_code): Call uncache_this_class_ref after generating + code. + +2007-02-06 Tom Tromey + + PR java/30714: + * jvspec.c (lang_specific_driver): Check for the '-' in '-I'. + +2007-02-03 Kazu Hirata + + * java-tree.h, javaop.def, jcf-parse.c: Fix comment typos. + +2007-02-02 Andrew Haley + + * expr.c (expand_byte_code): Call cache_this_class_ref() and + cache_cpool_data_ref(). + Set TYPE_CPOOL_DATA_REF. + (cache_cpool_data_ref): New function. + * constants.c (build_ref_from_constant_pool): Remove special-case + code for flag_indirect_classes. + (build_constant_data_ref): Move special-case code for + flag_indirect_classes here from build_ref_from_constant_pool. + * decl.c (finish_method): Move class initialization from here to + cache_this_class_ref. + * class.c (cache_this_class_ref): New function. + (build_class_ref): Use this_classdollar for the ouput class. + +2007-02-02 David Daney + + * class.c (is_compiled_class): Move check to avoid reloading + current class. + (layout_class_method): Don't calculate DECL_EXTERNAL if it is + already set. + +2007-02-01 Andrew Haley + + PR java/30641 + * jcf-parse.c (jcf_parse): Clear the field_offsets bitmap. + +2007-01-31 Kazu Hirata + + * class.c, jcf-parse.c: Fix comment typos. + +2007-01-30 Tom Tromey + + * gcj.texi (Strings): Fix documentation for JvNewString. + +2007-01-30 Ralf Wildenhues + + * gcj.texi (Invoking gcjh, Invoking gjnih, Arrays): Fix some + typos. + +2007-01-30 Ben Elliston + + * jvspec.c (lang_specific_driver): Remove unused classpath_args. + +2007-01-29 Tom Tromey + + PR java/30607: + * jvspec.c (lang_specific_driver): Handle separate -I argument. + * lang.opt (-I): Add 'Separate'. + +2007-01-29 Andrew Haley + + * class.c (add_method_1): Mark fndecl as external unless we are + compiling it into this object file. + +2007-01-24 Andrew Haley + + * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): current_class is a + type node, not a decl, so use TYPE_SYNTHETIC not CLASS_SYNTHETIC. + +2007-01-22 Andrew Haley + + * builtins.c (VMSupportsCS8_builtin): New function. + +2007-01-23 Andrew Pinski + + PR java/30454 + * jcf-io.c (opendir_in_zip): Close the file + and free zipf before returning after an error. + +2007-01-16 Tom Tromey + + * java-tree.def: Added copyright header. + +2007-01-15 Tom Tromey + + * lang.c (dump_compound_expr) : Removed + case. + * java-gimplify.c (java_gimplify_expr) : + Removed case. + * java-tree.h (EXPR_WFL_EMIT_LINE_NOTE): Removed. + (EXPR_WFL_NODE): Likewise. + (EXPR_WFL_LINECOL): Likewise. + (EXPR_WFL_FILENAME): Likewise. + (EXPR_WFL_LINENO): Likewise. + (build_expr_wfl, expr_add_location): Don't declare. + (build_unknown_wfl): Removed. + (EXPR_WFL_FILENAME_NODE): Removed. + (EXPR_WFL_COLNO): Removed. + (EXPR_WFL_SET_LINECOL): Removed. + (DECL_FUNCTION_WFL): Removed. + (DECL_FIELD_FINAL_WFL): Removed. + (struct lang_decl_func) : Removed field. + : Likewise. + : Likewise. + (struct lang_decl_var) : Removed field. + (DECL_CONSTRUCTOR_CALLS): Removed. + (DECL_FUNCTION_ACCESS_DECL): Likewise. + (DECL_FUNCTION_INNER_ACCESS): Likewise. + (DECL_SPECIFIC_COUNT): Likewise. + * java-tree.def (EXPR_WITH_FILE_LOCATION): Removed. + * expr.c (build_expr_wfl): Removed. + (expr_add_location): Likewise. + +2007-01-12 Tom Tromey + + * jcf-dump.c (main): Updated call to find_class. + * lang.c (java_init): Removed dead code. + * jcf-parse.c (read_class): Don't use java_source field. Removed + dead code. + (parse_zip_file_entries): Don't use java_source field. + (process_zip_dir): Likewise. + (jcf_parse): Removed dead code. + (java_parse_file): Likewise. + (read_class): Updated call to find_class. + * jcf-io.c (find_class): Don't use java_source field. Removed + 'source_ok' argument, .java logic. + * jcf.h (JCF) : Removed field. + (JCF_ZERO): Updated. (find_class): Updated. + * decl.c: Removed dead code. + * class.c: Removed dead code. + +2007-01-11 Tom Tromey + + * typeck.c (convert): Don't use flag_emit_class_files. + * lang.c (java_post_options): Don't use flag_emit_class_files. + (java_handle_option): Don't use flag_extraneous_semicolon or + flag_redundant. + * jcf-parse.c (HANDLE_CONSTANTVALUE): Don't use + flag_emit_class_files. + (load_class): Likewise. + * java-tree.h (flag_emit_class_files): Don't declare. + (STATIC_CLASS_INIT_OPT_P): Don't use flag_emit_class_files. + (flag_extraneous_semicolon): Don't declare. + (flag_not_overriding): Likewise. + (flag_static_local_jdk1_1): Likewise. + (flag_redundant): Likewise. + * expr.c (build_newarray): Don't use flag_emit_class_files. + * class.c (DEFAULT_ENABLE_ASSERT): Don't use + flag_emit_class_files. + (build_class_ref): Likewise. + * builtins.c (check_for_builtin): Don't use + flag_emit_class_files. + +2007-01-10 Tom Tromey + + * lang.c (java_can_use_bit_fields_p): Removed. + (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed. + +2007-01-09 Andrew Haley + + * expr.c (build_java_arrayaccess): Rewrite to generate array + access in canonical form. + (expand_java_arraystore): Use build_fold_addr_expr() on address of + array access. + +2007-01-03 Andrew Haley + + PR java/28754 + * expr.c (expand_java_field_op): If we're initializing a field's + declaring interface we should not also initialize the class + context in which it was referenced. + +2007-01-02 Tom Tromey + + * java-tree.h (compiling_from_source, current_encoding, + JTI_FINIT_IDENTIFIER_NODE, JTI_INSTINIT_IDENTIFIER_NODE, + JTI_LENGTH_IDENTIFIER_NODE, JTI_SUPER_IDENTIFIER_NODE, + JTI_CONTINUE_IDENTIFIER_NODE, JTI_ACCESS0_IDENTIFIER_NODE, + JTI_WFL_OPERATOR): Removed + (finit_identifier_node, instinit_identifier_node, + length_identifier_node, super_identifier_node, + continue_identifier_node, access0_identifier_node, wfl_operator): + Removed. + (cyclic_inheritance_report, + DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND, + DECL_FUNCTION_NAP, DECL_FUNCTION_SYNTHETIC_CTOR, + DECL_FIXED_CONSTRUCTOR_P): Removed. + (struct lang_decl_func) : + Removed. + (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST, TYPE_II_STMT_LIST, + TYPE_IMPORT_LIST, TYPE_IMPORT_DEMAND_LIST): Removed. + (struct lang_type) : Removed. + (java_layout_seen_class_methods, init_jcf_parse, init_src_parse, + cxx_keyword_p): Removed. + (DECL_FINIT_P, DECL_INSTINIT_P, ID_FINIT_P, ID_INSTINIT_P, + TYPE_UNUSED, TYPE_UNDERFLOW, TYPE_UNEXPECTED, + CLASS_ACCESS0_GENERATED_P, CLASS_HAS_FINIT_P, + IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME, + IS_AN_IMPORT_ON_DEMAND_P, COMPOUND_ASSIGN_P, SWITCH_HAS_DEFAULT, + PRIMARY_P, MODIFY_EXPR_FROM_INITIALIZATION_P, + CLASS_METHOD_CHECKED_P, FOR_LOOP_P, ANONYMOUS_CLASS_P, + LOCAL_CLASS_P, ARG_FINAL_P, SUPPRESS_UNREACHABLE_ERROR, + RESOLVE_PACKAGE_NAME_P, RESOLVE_TYPE_NAME_P, IS_BREAK_STMT_P, + IS_CRAFTED_STRING_BUFFER_P, IS_INIT_CHECKED, CALL_USING_SUPER, + NESTED_FIELD_ACCESS_IDENTIFIER_P, TOPLEVEL_CLASS_DECL_P, + PURE_INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P, + CALL_CONSTRUCTOR_P, CALL_EXPLICIT_CONSTRUCTOR_P, + CALL_THIS_CONSTRUCTOR_P, CALL_SUPER_CONSTRUCTOR_P, + FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, BLOCK_IS_IMPLICIT, + BLOCK_EMPTY_P, IS_UNCHECKED_EXCEPTION_P, java_error_count, + java_parse_abort_on_error, extract_field_decl): Removed. + (finput): Declare. + * lang.c: (compiling_from_source, current_encoding): Removed. + (java_handle_option): Ignore -fencoding. + * parse.h: Don't include lex.h. + (java_error_count, int_fits_type_p, stabilize_reference, RULE, + RECOVERED, DRECOVERED, RECOVER, DRECOVER, YYERROR_NOW, + YYNOT_TWICE, CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS, + INTERFACE_MODIFIERS, INTERFACE_INNER_MODIFIERS, + INTERFACE_METHOD_MODIFIERS, INTERFACE_FIELD_MODIFIERS, + MODIFIER_WFL, THIS_MODIFIER_ONLY, parse_error_context, + ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, exit_java_complete_class, + CLASS_OR_INTERFACE, GET_REAL_TYPE, GET_TYPE_NAME, + OBSOLETE_MODIFIER_WARNING, OBSOLETE_MODIFIER_WARNING2, + BUILD_PTR_FROM_NAME, INCOMPLETE_TYPE_P, + JAVA_MAYBE_GENERATE_DEBUG_INFO, JBSC_TYPE_P, JSTRING_P, + JNULLP_TYPE_P, JDECL_P, TYPE_INTERFACE_P, TYPE_CLASS_P, + IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS, + MANGLE_OUTER_LOCAL_VARIABLE_NAME, + MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID, + MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING, + SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS, + UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP, + AIPL_FUNCTION_CREATION, AIPL_FUNCTION_DECLARATION, + AIPL_FUNCTION_CTOR_INVOCATION, AIPL_FUNCTION_FINIT_INVOCATION, + ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, + ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED, + LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK, + LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY, + LOOP_EXPR_BODY_BODY_EXPR, PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, + PUSH_LOOP, POP_LOOP, PUSH_EXCEPTIONS, POP_EXCEPTIONS, + IN_TRY_BLOCK_P, EXCEPTIONS_P, ANONYMOUS_ARRAY_BASE_TYPE, + ANONYMOUS_ARRAY_DIMS_SIG, ANONYMOUS_ARRAY_INITIALIZER, + INVOKE_STATIC, INVOKE_NONVIRTUAL, INVOKE_SUPER, INVOKE_INTERFACE, + INVOKE_VIRTUAL, jdep_code, struct _jdep, JDEP_DECL, JDEP_DECL_WFL, + JDEP_KIND, JDEP_WFL, JDEP_MISC, JDEP_ENCLOSING, JDEP_CLASS, + JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN, JDEP_TO_RESOLVE, + JDEP_RESOLVED_DECL, JDEP_RESOLVED, JDEP_RESOLVED_P, struct + jdeplist_s, jdeplists, CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, + JDEP_INSERT, SET_TYPE_FOR_RESOLUTION, WFL_STRIP_BRACKET, + STRING_STRIP_BRACKETS, PROMOTE_RECORD_IF_COMPLETE, + BLOCK_CHAIN_DECL, GET_CURRENT_BLOCK, EXPR_WFL_GET_LINECOL, + EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION, QUAL_DECL_TYPE, + GET_SKIP_TYPE, COMPLETE_CHECK_OP, COMPLETE_CHECK_OP_0, + COMPLETE_CHECK_OP_1, COMPLETE_CHECK_OP_2, BUILD_APPEND, + BUILD_STRING_BUFFER, BUILD_THROW, SET_WFL_OPERATOR, + PATCH_METHOD_RETURN_ERROR, CHECK_METHODS, CLEAR_DEPRECATED, + CHECK_DEPRECATED_NO_RESET, CHECK_DEPRECATED, REGISTER_IMPORT, + CURRENT_OSB, struct parser_ctxt, GET_CPC_LIST, CPC_INNER_P, + GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE, GET_CPC_DECL_NODE, + GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC, + GET_ENCLOSING_CPC_CONTEXT, INNER_ENCLOSING_SCOPE_CHECK, PUSH_CPC, + PUSH_ERROR, POP_CPC, DEBUG_CPC, CPC_INITIALIZER_LIST, + CPC_STATIC_INITIALIZER_LIST, CPC_INSTANCE_INITIALIZER_LIST, + CPC_INITIALIZER_STMT, CPC_STATIC_INITIALIZER_STMT, + CPC_INSTANCE_INITIALIZER_STMT, SET_CPC_INITIALIZER_STMT, + SET_CPC_STATIC_INITIALIZER_STMT, + SET_CPC_INSTANCE_INITIALIZER_STMT, JAVA_NOT_RADIX10_FLAG, + java_complete_class, java_check_circular_reference, + java_fix_constructors, java_layout_classes, java_reorder_fields, + java_method_add_stmt, java_get_line_col, reset_report, + java_init_lex, yyparse, java_parse, yyerror, java_expand_classes, + java_finish_classes, ctxp, ctxp_for_generation, + ctxp_for_generation_last): Removed. + * expr.c (force_evaluation_order): Don't mention NEW_CLASS_EXPR. + * mangle.c (utf8_cmp): New function. + (cxx_keywords): New global. + (cxx_keyword_p): New function. + * jvspec.c (JAVA_START_CHAR): Removed obsolete comment. + * java-tree.def (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, + NEW_ANONYMOUS_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR, + CASE_EXPR, DEFAULT_EXPR, JAVA_CATCH_EXPR, SYNCHRONIZED_EXPR, + THROW_EXPR, CONDITIONAL_EXPR, INSTANCEOF_EXPR, NEW_ARRAY_INIT, + CLASS_LITERAL, JAVA_EXC_OBJ_EXPR): Removed. + * Make-lang.in (java.srcextra): Do nothing. + (parse.c, keyword.h, gt-java-parse.h): Removed targets. + (JAVA_OBJS): Don't mention deleted files. + (java.mostlyclean): Likewise. + (java.clean): Likewise. + (JAVA_LEX_C): Removed. + (buffer.o, check-init.o, parse.o): Remove unused targets. + (typeck.o): Updated. + * jcf-parse.c (read_class): Comment out unused code. + (java_layout_seen_class_methods): New function. + (parse_source_file_1, parse_source_file_2, parse_source_file_3): + Removed. + (java_parse_file): Comment out unused code. Don't use 'ctxp'. + (init_jcf_parse): Removed. + * config-lang.in (gtfiles): Remove deleted files. + * decl.c (java_init_decl_processing): Don't initialize + finit_identifier_node, instinit_identifier_node, + length_identifier_node, super_identifier_node, + continue_identifier_node, access0_identifier_node. Don't call + init_jcf_parse. + * class.c (cyclic_inheritance_report): New global. + (add_method_1): Don't use + DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND. + (maybe_layout_super_class): Comment out code. + (safe_layout_class): New function. + * java-gimplify.c (java_gimplify_expr): Removed CASE_EXPR, + DEFAULT_EXPR, NEW_ARRAY_INIT, JAVA_CATCH_EXPR, JAVA_EXC_OBJ_EXPR, + UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_ANONYMOUS_ARRAY_EXPR, + NEW_CLASS_EXPR, SYNCHRONIZED_EXPR, CONDITIONAL_EXPR, + INSTANCEOF_EXPR, CLASS_LITERAL, THIS_EXPR. + (java_gimplify_case_expr): Removed. + (java_gimplify_default_expr): Likewise. + (java_gimplify_new_array_init): Likewise. + * parse.y: Removed. + * keyword.gperf, keyword.h: Removed. + * chartables.h: Removed. + * check-init.c: Removed. + * buffer.c, buffer.h: Removed. + * convert.h: Removed. + * gen-table.pl: Removed. + * lex.c, lex.h: Removed. + +2007-01-02 Andrew Haley + + * expr.c (expand_java_arraystore): Make sure we perform a bounds + check at runtime before we perform a type check. + +2006-12-19 Andrew Haley + + * decl.c: Bump minor BC ABI version. + +2006-12-13 Gary Benson + + * jcf-depend.c (jcf_dependency_add_file): Mark filename unused. + +2006-12-12 Tom Tromey + + * lang-specs.h: Pass -M options to jc1. + * jcf-depend.c (jcf_dependency_add_file): Don't emit + dependencies. + +2006-12-07 Mohan Embar + + * jcf-path.c (jcf_path_compute): Use platform PATH_SEPARATOR. + +2006-12-06 Mohan Embar + + * lang-specs.h: Pass '%U'-based options as separate arguments. + +2006-12-05 Tom Tromey + + PR java/29495: + * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Mark fields and + classes as well. + * class.c (add_field): Handle ACC_SYNTHETIC. + (add_method_1): Likewise. Handle bridge and varargs. + (get_access_flags_from_decl): Handle synthetic, bridge, varargs, + annotation. + (set_class_decl_access_flags): Handle synthetic and annotation. + * java-tree.h (METHOD_BRIDGE): New macro. + (METHOD_VARARGS): Likewise. + (TYPE_SYNTHETIC): Likewise. + (TYPE_ANNOTATION): Likewise. + (lang_type): New fields 'synthetic' and 'annotation'. + (lang_decl_func): New fields 'varargs' and 'bridge'. + +2006-12-04 Andrew Haley + + * jcf-parse.c (rewrite_reflection_indexes): Don't do anything if + there's no map. + +2006-11-29 Gary Benson + + * expr.c (rewrite_arglist_getcaller): Reorder. + +2006-11-29 Andrew Haley + + * expr.c (rewrite_arglist_getcaller): Remove DECL_INLINE. + * lang.c (java_decl_ok_for_sibcall): Check for DECL_INLINE. + +2006-11-23 Andrew Haley + + * expr.c (rewrite_arglist_getcaller): New. + (rewrite_arglist_getclass): Fix indentation. + (rules): Add gnu.classpath.VMStackWalker.getCallingClass() and + gnu.classpath.VMStackWalker.getCallingClassLoader(). + * builtins.c (initialize_builtins): Remove duplicate def'n of + __sync_synchronize. + Add __builtin_return_address. + +2006-11-22 Andrew Haley + + * jcf-reader.c (get_attribute): Mark attr_type unused. + + * builtins.c (compareAndSwapObject_builtin): Fix declaration. + +2007-01-08 Richard Guenther + + * lex.c (do_java_lex): Use build_int_cst_wide_type. + * jcf-parse.c (get_constant): Likewise. + +2006-11-12 Jan Hubicka + + * resource.c (compile_resource_data): Update for new varpool names. + * java/class.c (build_utf8_ref): Likewise. + +2006-11-12 David Daney + + PR java/29805 + * typeck.c (build_java_array_type): Increase buffer sizes. + +2006-11-11 Richard Guenther + + * check-init.c (check_init): Remove handling of FIX_CEIL_EXPR, + FIX_FLOOR_EXPR and FIX_ROUND_EXPR. + +2006-11-06 Andrew Haley + + * java-tree.h (CONSTANT_LazyFlag): New. + * constants.c (build_constants_constructor): Mask CONSTANT_LazyFlag. + * jcf-parse.c (handle_innerclass_attribute): Write attribute to + reflection_data. + (handle_constant): Return 0 for dummy cpool entries. + Handle constants of kind Class. + Handle constants of kind NameAndType. + (handle_enclosingmethod_attribute): New. + (handle_signature_attribute): New. + (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New. + (HANDLE_SIGNATURE_ATTRIBUTE): New. + (handle_constant): Use unmangle_classname()rather than calling + identifier_subst() directly. + +2006-11-02 Andrew Haley + + * java-tree.h (FIELD_ENUM): New. + (lang_decl_var.field_enum): New. + (lang_type.enum_class): New. + (CLASS_ENUM): New. + * class.c (set_class_decl_access_flags): Handle enum types. + (add_field): Handle enum fields. + (get_access_flags_from_decl): Likewise. + + * class.c (make_class_data): Put reflection_data into rodata. + +2006-11-01 Andrew Haley + + * jcf-parse.c (field_offsets, bit_obstack): New variables. + (jcf_parse): Write end marker to annotation_data. + (java_parse_file): Create field_offsets bitmap. Destroy it. + (annotation_grow, annotation_rewrite_byte) + (annotation_rewrite_short, annotation_rewrite_int) + (annotation_read_short, annotation_write_byte) + (annotation_write_short, annotation_write_int) + (handle_long_constant, handle_constant, handle_element_value) + (handle_annotation, handle_annotations) + (handle_annotation_attribute, rewrite_reflection_indexes) + (handle_member_annotations, handle_parameter_annotations) + (handle_default_annotation): New functions. + (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE) + (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE) + (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) + (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) + (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): New definitions. + * java-tree.h (enum jv_attr_type, enum jv_attr_kind): New. + (TYPE_REFLECTION_DATA): New. + (TYPE_REFLECTION_DATASIZE): New. + * jcf.h (enum cpool_tag): Convert a bunch of #define constants to + an enum. + * jcf-reader.c (get_attribute): Pass field/method index and + attribute type to get_attribute(). + * constants.c (find_class_or_string_constant): Make nonstatic. + (cpool_for_class): Likewise. + (build_constants_constructor): Separate string and scalar types. + * class.c (make_class_data): Generate field_indexes permutation. + Pass it to rewrite_reflection_indexes(). + (make_class_data): Generate constructor for reflection_data field. + +2006-10-20 Tom Tromey + + * gcj.texi (Top): Don't mention jv-scan. + (Invoking gcj): Likewise. + (Invoking gcjh): Likewise. + (Invoking gjnih): Likewise. + (Invoking gij): Likewise. + (Invoking gcj-dbtool): Likewise. + (Invoking jv-scan): Removed. + * parse-scan.y: Removed. + * jv-scan.c: Removed. + * config-lang.in (stagestuff): Don't mention jv-scan. + * Make-lang.in (java): Removed jv-scan. + (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. + (JVSCAN_OBJS): Removed. + (jv-scan$(exeext)): Likewise. + (JAVA_MANFILES): Removed jv-scan.1. + (java.uninstall): Don't mention jv-scan. + (java.mostlyclean): Likewise. + (java.maintainer-clean): Likewise. + (.INTERMEDIATE): Likewise. + (java/jv-scan.o): Removed. + (jv-scan.pod): Likewise. + (java.srcextra): Don't mention parse-scan.c. + (java.mostlyclean): Likewise. + (java/parse-scan.c): Removed. + (java/parse-scan.o-warn): Removed. + (java/parse-scan.o): Removed. + +2006-10-20 Tom Tromey + + * lang.c (java_handle_option): Don't use + jcf_write_base_directory. + * jcf.h (jcf_write_base_directory): Removed. + * parse.y (java_expand_classes): Don't call write_classfile. + * config-lang.in (gtfiles): Removed jcf-write.c. + * Make-lang.in (JAVA_OBJS): Removed jcf-write.o. + (java/jcf-write.o): Removed. + * jcf-parse.c (parse_class_file): Don't call write_classfile. + * java-tree.h (write_classfile): Removed declaration. + * jcf-write.c: Removed. + +2006-10-20 Tom Tromey + + * Make-lang.in (java): Removed gjnih, gcjh. + (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. + (GCJH_OBJS): Removed. + (GJNIH_OBJS): Likewise. + (gjnih$(exeext)): Likewise. + (gcjh$(exeext)): Likewise. + (JAVA_MANFILES): Removed gcjh.1, gjnih.1. + (java.install-common): Don't special case gcjh. + (java.uninstall): Don't mention gcjh, gjnih. + (java.mostlyclean): Likewise. + (java.maintainer-clean): Likewise. + (.INTERMEDIATE): Likewise. + (gcjh.pod): Removed. + (gjnih.pod): Likewise. + (GCJH_TARGET_INSTALL_NAME): Removed. + (java/gjavah-jni.o): Removed. + (java/gjavah.o): Likewise. + * config-lang.in (stagestuff): Removed gjnih, gcjh. + * gjavah.c: Removed. + +2006-10-17 Tom Tromey + + * jcf-dump.c (print_element_value): Expect a utf8 constant in the + "string" case. + +2006-10-17 Tom Tromey + + * jvgenmain.c (main): Handle -findirect-dispatch. + * jvspec.c (jvgenmain_spec): Pass -findirect-dispatch to + jvgenmain. + +2006-10-06 Andrew Haley + + * builtins.c (compareAndSwapInt_builtin): Check that we really do + have a compare_and_swap builtin. + (compareAndSwapLong_builtin): Likewise. + (compareAndSwapObject_builtin): Likewise. + +2006-10-04 Andrew Haley + + * builtins.c (java_builtins): Add compareAndSwapInt, + compareAndSwapLong, compareAndSwapObject, putOrderedInt, + putOrderedLong, putOrderedObject, putIntVolatile, putLongVolatile, + putObjectVolatile, getObjectVolatile, getIntVolatile, + getLongVolatile, getLong. + (UNMARSHAL3): New macro. + (UNMARSHAL4): Likewise. + (UNMARSHAL5): Likewise. + (build_arglist_for_builtin): New function. + (build_addr_sum, build_check_this): New functions. + (putObject_builtin. compareAndSwapInt_builtin, + compareAndSwapLong_builtin, compareAndSwapObject_builtin, + putVolatile_builtin, getVolatile_builtin): New builtins. + +2006-06-08 Andrew Haley + + * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to + get_symbol_table_index(). + (maybe_rewrite_invocation): Set SPECIAL if we need to access a + private method. + (build_known_method_ref): New arg: special. Pass it to + get_symbol_table_index. + (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of + the method list. + (build_invokevirtual): New arg: special. Pass it to + get_symbol_table_index. + (expand_invoke): New variable: special. + Pass it to maybe_rewrite_invocation(). + Pass it to build_known_method_ref(). + * class.c (build_symbol_entry): Add new arg: special. Use it to + build the symbol table conbstructor. + (emit_symbol_table): Extract SPECIAL from the method list and pass + it to build_symbol_entry(). + * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set + special accordingly. + +2006-09-08 Andrew Haley + + * class.c (layout_class_method): Use build_java_signature, not + build_java_argument_signature. Use lookup_java_method, not + lookup_argument_method. + +2006-08-16 Jakub Jelinek + Bryce McKinlay + + * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed. + +2006-07-18 Tom Tromey + + * lang.opt: Added missing -W options. + +2006-07-12 Tom Tromey + + PR java/28329: + * lang-specs.h: Pass '%U'-based options as separate arguments. + Use -faux-classpath. + * lang.c (java_handle_option): Handle OPT_faux_classpath. + * lang.opt (faux-classpath): New option. + +2006-07-07 Tom Tromey + + * class.c (make_class_data): Set value for reflection_data field. + * decl.c (java_init_decl_processing): Add reflection_data field. + +2006-07-07 Tom Tromey + + * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): Declare locals + earlier. + (HANDLE_SIGNATURE_ATTRIBUTE): Likewise. + +2006-07-07 Andrew Haley + + * jcf-parse.c (set_source_filename): Don't check for + CLASS_FROM_CURRENTLY_COMPILED_P. + Remove // comments. + +2006-07-07 Andrew Haley + + * java-tree.h (java_read_sourcefilenames): Declare. + * lang.c (java_handle_option): Call java_read_sourcefilenames(). + * lang.opt (fsource-filename): New opt. + * lang-specs.h: Add -fsource-filename. + * jcf-parse.c (num_files, filenames): New variables. + (reverse, cmpstringp, java_read_sourcefilenames, + find_sourcefile): New. + (set_source_filename): Call find_sourcefile to find the real name + of a source file. + +2006-06-27 Tom Tromey + + * jcf-reader.c (get_attribute): Handle EnclosingMethod, + Signature, LocalVariableTypeTable, annotation attributes. + * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New macro. + (HANDLE_SIGNATURE_ATTRIBUTE): Likewise. + (HANDLE_START_FIELD): Mention 'descriptor', not 'signature'. + (HANDLE_METHOD): Likewise. + (HANDLE_LOCALVARIABLETYPETABLE_ATTRIBUTE): New macro. + (print_annotation): New function. + (print_element_value): Likewise. + (indent): Likewise. + (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE): New macro. + (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE): Likewise. + (print_parameter_annotations): New function. + (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE): New macro. + (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE): + Likewise. + (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): Likewise. + (print_annotations): New function. + +2006-06-23 Tom Tromey + + * lang-specs.h: Default -fsource and -ftarget to 1.5. If + emitting class files, always use 1.5. + * gcj.texi (Input Options): Document -fsource. + (Code Generation): Document -ftarget. + +2006-06-21 Tom Tromey + + PR java/28089: + * expr.c (expand_java_field_op): Initialize field's declaring + class. + +2006-06-20 Tom Tromey + + * expr.c (push_value): Always flush quick stack. + +2006-06-19 Tom Tromey + + * expr.c (push_value): Also flush quick stack if value is a + component_ref. + +2006-06-19 Tom Tromey + + * expr.c (push_value): Flush quick stack if value has side + effects. + +2006-06-13 Tom Tromey + + * class.c (is_compiled_class): Explicitly check for current + class. + +2006-06-09 Tom Tromey + + * gjavah.c (decompile_method): Don't decompile a static field + accessor method. + +2006-06-06 Tom Tromey + + * lang-specs.h : Add .jar file to command line if + -fsaw-java-file. Also, remove -ffilelist-file in this case. + +2006-06-05 Tom Tromey + + * jcf-dump.c (print_access_flags): Handle varargs, bridge, + synthetic, enum, annotation. + * jcf.h (ACC_BRIDGE): New macro. + (ACC_VARARGS): Likewise. + (ACC_SYNTHETIC): Likewise. + (ACC_ENUM): Likewise. + (ACC_ANNOTATION): Likewise. + +2006-06-04 Tom Tromey + + * lang.opt (-fsaw-java-file, -fsource, -ftarget): New options. + * jvspec.c (jvgenmain_spec): Remove -fsaw-java-file, -fsource, + and -ftarget. + (lang_specific_driver): Removed dead code. Add -fsaw-java-file + when needed. Handle classpath-setting. + * Make-lang.in ($(GCJ)$(exeext)): Link in jcf-path.o. + * lang-specs.h: Rewrote. + +2006-06-04 Tom Tromey + + * jcf-io.c (find_class): Set source_ok to 0. + * jcf-parse.c (jcf_parse): Disable gnu.gcj.gcj-compiled warning. + (parse_class_file): Don't call java_mark_class_local. + (java_parse_file): Skip .java files. Call java_mark_class_local + before lowering any code. + (parse_zip_file_entries): Don't call duplicate_class_warning + here. + (process_zip_dir): ... call it here. + * class.c (add_field): Don't mark field external if it is being + compiled into this object. + (make_class_data): Handle situation where class_dtable_decl is + created before Class is compiled. + (is_compiled_class): Don't assume files in zip are compiled into + this object. + (layout_class_method): Don't mark method external if it is being + compiled into this object. + +2006-06-04 Tom Tromey + + * jcf-path.c (jcf_path_compute): New function. + * jcf.h (jcf_path_compute): Declare. + +2006-10-23 Rafael Ávila de Espíndola + + * decl.c: Include langhooks.h. + (builtin_function): Remove. + (java_init_decl_processing): Replace calls to builtin_function + with add_builtin_function. + * Make-lang.in (jc1$(exeext)): Depend on and link with attribs.o. + (java/decl.o): Depend on langhooks.h. + * java-tree.h (builtin_function): Remove. + +2006-10-10 Brooks Moses + + * Make-lang.in: Added "java.pdf", "gcj.pdf" target support. + +2006-09-12 Tom Tromey + + * expr.c (push_value): Always flush quick stack. + +2006-09-12 Tom Tromey + + PR java/29013: + * jcf-write.c (generate_bytecode_insns) : Always note + the push of the called method's return result. + +2006-09-12 Tom Tromey + + * jvspec.c (lang_specific_driver): Read spec file even if + -fsyntax-only. + +2006-09-12 Tom Tromey + + PR java/28754: + * expr.c (expand_java_field_op): Initialize field's declaring + interface if necessary. + +2006-09-12 Tom Tromey + + PR java/28892: + * expr.c (expand_java_field_op): No error for assignments not in + class initializer or constructor. + +2006-08-22 Andrew Haley + + * decl.c (java_add_stmt): Give the statement list a type. + +2006-08-16 Jakub Jelinek + Bryce McKinlay + + * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed. + +2006-08-10 Simon Martin + + PR java/8923 + * parse.y (build_incdec): Emit an error instead of an ICE if '++' + or '--' is used with a constant operand. + (java_complete_lhs): When processing a '++' or '--' expression, + don't call java_complete_tree but java_complete_lhs, so that a + static final variable operand is never replaced by its value. This + avoids an ICE later on. + (patch_unaryop): Fixed typo in comment. + +2006-07-28 Volker Reichelt + + * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies. + +2006-07-12 Bryce McKinlay + + * builtins.c (check_for_builtin): If a builtin could result in a + direct call being generated, don't use it if flag_indirect_dispatch + is set. + +2006-07-12 Bryce McKinlay + + * gcj.texi (Invocation): Corrections for Invocation API example. + +2006-07-04 Andrew Haley + + * class.c (build_fieldref_cache_entry): Set DECL_IGNORED_P on the + entry. + +2006-06-21 Andrew Haley + + * java-tree.h (update_aliases): Remove + * expr.c (expand_iinc): Remove call to update_aliases(). + (STORE_INTERNAL): Likewise. + * decl.c (update_aliases, initialize_local_variable) + (maybe_pushlevels): Set DECL_VALUE_EXPR for debugging decls. + +2006-06-19 Andrew Haley + + PR java/1305 + PR java/27908 + * expr.c (java_modify_addr_for_volatile): New function. + (expand_java_field_op): Handle volatile fields. + * java-gimplify.c (java_gimplify_component_ref): Call + java_modify_addr_for_volatile to give the field_ref the correct + volatile type. + (java_gimplify_modify_expr): Likewise. + * java-tree.h (java_modify_addr_for_volatile): New decl. + +2006-06-17 Karl Berry + + * gcj.texi (@dircategory): Use "Software development" instead + of "Programming", following the Free Software Directory. + +2006-06-16 Andrew Haley + + * class.c (make_class_data): When using flag_indirect_classes, + don't initialize the vtable of Class instances. + +2006-06-09 Andrew Haley + + PR java/1305 + PR java/27908 + * builtins.c (initialize_builtins): Add __sync_synchronize(). + * class.c (add_field): Mark volatile fields. + * java-gimplify.c (java_gimplify_expr): Call new functions to + handle self-modifying exprs and COMPONENT_REFs. + (java_gimplify_component_ref): New. + (java_gimplify_modify_expr): Add handling for volatiles. + +2006-06-08 Tom Tromey + + * gcj.texi (libgcj Runtime Properties): Document + gnu.gcj.user.realname. + +2006-06-08 Andrew Haley + + * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to + get_symbol_table_index(). + (maybe_rewrite_invocation): Set SPECIAL if we need to access a + private method. + (build_known_method_ref): New arg: special. Pass it to + get_symbol_table_index. + (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of + the method list. + (build_invokevirtual): New arg: special. Pass it to + get_symbol_table_index. + (expand_invoke): New variable: special. + Pass it to maybe_rewrite_invocation(). + Pass it to build_known_method_ref(). + * class.c (build_symbol_entry): Add new arg: special. Use it to + build the symbol table conbstructor. + (emit_symbol_table): Extract SPECIAL from the method list and pass + it to build_symbol_entry(). + * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set + special accordingly. + +2006-06-06 David Daney + + * gcj.texi (libgcj Runtime Properties): Document + gnu.gcj.runtime.NameFinder.show_raw and + gnu.gcj.runtime.NameFinder.remove_unknown. + +2006-06-06 Tom Tromey + + * jcf-dump.c (print_access_flags): Handle varargs, bridge, + synthetic, enum, annotation. + * jcf.h (ACC_BRIDGE): New macro. + (ACC_VARARGS): Likewise. + (ACC_SYNTHETIC): Likewise. + (ACC_ENUM): Likewise. + (ACC_ANNOTATION): Likewise. + +2006-06-06 Mike Stump + + * Make-lang.in: Rename to htmldir to build_htmldir to avoid + installing during build. + +2006-05-31 Thomas Fitzsimmons + + * gcj.texi (Extensions): Document the new gcj-dbtool-based + classname-to-library resolution mechanism. + Declare the old gnu.gcj.runtime.VMClassLoader.library_control + mechanism deprecated. + (libgcj Runtime Properties): Document + gnu.gcj.runtime.VMClassLoader.library_control's new default. + +2006-05-29 Jakub Jelinek + + * javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64) + bit wide type. + (jword): Define to uint64 on 64-bit arches. + * jcf-dump.c (print_constant): Cast JPOOL_UINT to long. + +2006-05-28 Kazu Hirata + + * class.c, except.c, expr.c, java-gimplify.c: Fix comment + typos. + +2006-05-26 Tom Tromey + + * expr.c (java_push_constant_from_pool): Handle 'ldc class'. + * verify-glue.c (vfy_class_type): New function. + * verify-impl.c (check_constant): Allow 'ldc class'. + * verify.h (vfy_class_type): Declare. + +2006-05-25 Andrew Haley + + PR java/27756 + * decl.c (maybe_pushlevels): When variable ranges are non-nested + update all lifetimes, not just the first one. + +2006-05-24 Tom Tromey + + * java-tree.h: Fixed flag documentation. + +2006-05-24 Tom Tromey + + PR libgcj/27729: + * jcf.h (ACC_INVISIBLE): Changed value. + +2006-05-24 Andrew Haley + + PR java/27754 + * decl.c (java_add_stmt): Use a STATEMENT_LIST rather than a + COMPOUND_EXPR. + +2006-05-16 H.J. Lu + + * lang.opt (femit-class-file): Remove VarExists. + +2006-05-16 Tom Tromey + + * verify-impl.c (verify_instructions_0) : Special case + for Object.. + +2006-05-16 H.J. Lu + + PR driver/26885 + * Make-lang.in ($(GCJ)$(exeext)): Replace gcc.o with + $(GCC_OBJS). + +2006-05-14 H.J. Lu + + * Make-lang.in (java/decl.o): Add dependency on $(TARGET_H). + (java/expr.o): Replace target.h with $(TARGET_H). + (java/parse.o): Likewise. + +2006-05-10 Andrew Haley + + * class.c (emit_indirect_register_classes): Fix comment. + +2006-05-04 Tom Tromey + + * java-tree.h (uses_jv_markobj_p): Declare. + * class.c (uses_jv_markobj_p): Removed. + * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): New define. + (get_boehm_type_descriptor): Use it. + (uses_jv_markobj_p): Moved from class.c. Return bool. + +2006-05-04 Tom Tromey + + * java-tree.def (THIS_EXPR): Now a tcc_expression. + +2006-05-04 Andrew Haley + + * class.c (make_field_value): Always build_address_of fdecl if + there is an initializer. + +2006-05-03 Andrew Haley + + PR libgcj/27352 + * expr.c (maybe_rewrite_invocation): New function. + (rewrite_arglist_getclass): Likewise. + (rules): New. + (expand_invoke): Call maybe_rewrite_invocation. + * parse.y (patch_invoke): Likewise. + * java-tree.h: (maybe_rewrite_invocation): New function. + +2006-04-21 Andrew Haley + + * lang.c (java_init): Handle flag_indirect_classes. + * jvgenmain.c: Use "class$$" instead of "class$". + * mangle.c (java_mangle_decl): Accept RECORD_TYPEs sw well as + DECLs. + (mangle_class_field): Special case "class$$" as well as "class$". + * constants.c (build_ref_from_constant_pool): If + flag_indirect_classes, generate a ref into the heap. + * decl.c (constants_field_decl_node, + constants_data_field_decl_node): New. + * class.c (build_static_class_ref): New. + (build_classdollar_field): Factor out from build_class_ref(). + (make_field_value): Handle static fields in heap. + (make_class_data): Make sure we get a static ref to class. + Make class initializer const if flag_indirect_classes. + (register_class): Build a class_ref for initialization if + flag_indirect_classes. + (emit_indirect_register_classes): New. + +2006-04-08 Kazu Hirata + + * expr.c, gjavah.c: Fix comment typos. + +2006-04-03 Andrew Haley + + PR java/26858 + * expr.c (build_field_ref): Don't check the field offset if + flag_syntax_only. + +2006-03-30 Andrew Haley + + PR java/26858 + * lang.c (java_attribute_table): New. + (LANG_HOOKS_ATTRIBUTE_TABLE): Define. + * expr.c (build_field_ref): Add a null pointer check for all + fields of offset > 4k. Don't do so for accesses via the this + pointer, which we know can never be null. + * class.c (build_java_method_type): Mark arg 1 of all nonstatic + methods nonnull. + +2006-03-30 Carlos O'Donell + + * Make-lang.in: Rename docdir to gcc_docdir. + +2006-03-30 Tom Tromey + + PR java/26042: + * parse.y (java_reorder_fields): Reset superclass field's size as + well. + +2006-03-28 Tom Tromey + + PR java/26390: + * parse.y (find_most_specific_methods_list): Added 'class' + argument. + (lookup_method_invoke): Updated. + +2006-03-15 Tom Tromey + + * jcf-write.c (generate_bytecode_insns): Use qualifying type for + non-static method calls. + +2006-03-15 David Daney + + * java-tree.h : Moved comment for TYPE_DOT_CLASS adjacent to its + declaration. + +2006-03-15 David Daney + + * lang.opt (-freduced-reflection): New option. + * lang.c (java_post_options): Generate an error if + -freduced-reflection used with -fjni or -findirect-dispatch. + * java-tree.h (flag_reduced_reflection): Declare new variable. + * boehm.c (get_boehm_type_descriptor): Indicate all pointers + if bitmap overflows and flag_reduced_reflection set. + * class.c (uses_jv_markobj_p): New function. + (make_class_data): Moved generation of vtable to before + reflection data, generate less reflection data if + flag_reduced_reflection set. + * gcj.texi: Document -freduced-reflection. + +2006-03-15 Tom Tromey + + PR java/26638: + * class.c (get_interface_method_index): Don't put into + interface table. + +2006-03-15 Tom Tromey + + * parse.y (analyze_clinit_body): Ignore empty statements. + +2006-03-08 David Daney + + * gcj.texi: Document -static-libgcj option. + +2006-02-20 Andrew Haley + + * jcf-parse.c (parse_class_file): Set input_location from + current_class. + +2006-02-15 Andrew Haley + + * class.c (GEN_TABLE): Don't pushdecl *_SYMS_DECL here. + (make_class_data): pushdecl_top_level TYPE_OTABLE_SYMS_DECL, + TYPE_ATABLE_SYMS_DECL, TYPE_ITABLE_SYMS_DECL here. + +2006-02-09 Andrew Haley + + PR java/26192 + * expr.c (expand_invoke): Allow methods in arrays to be resolved + in their superclass. + + * typeck.c (build_java_array_type): Generate TYPE_STUB_DECLs for + array types. + +2006-02-08 Tom Tromey + + PR java/22578: + * check-init.c (check_init): Handle VIEW_CONVERT_EXPR. + * builtins.c (convert_real): New function. + (java_builtins): Handle Float.intBitsToFloat, + Float.floatToRawIntBits, Double.longBitsToDouble, + Double.doubleToRawLongBits. + +2006-02-07 Andrew Haley + + * expr.c (expand_invoke): (BC mode.) If we find a method in a + class other than the one in which we expected to find it, ignore + the result. + + PR java/25535 + * constants.c (build_constants_constructor): move initializer into + first halfword on a 64-bit big-endian machine. + +2006-02-04 Tom Tromey + + PR java/25676: + * builtins.c (max_builtin): Skip floating point 'max'. + (min_builtin): Skip floating point 'min'. + (check_for_builtin): Never return NULL_TREE. + +2006-02-04 Tom Tromey + + PR java/26097: + * expr.c (push_type): Avoid side effect in gcc_assert. + +2006-02-04 Roger Sayle + + * decl.c (java_init_decl_processing): Create char_type_node as a + regular INTEGER_TYPE node. + (push_promoted_type): Preserve TYPE_STRING_FLAG on types. + * typeck.c (convert): No longer check for CHAR_TYPEs but instead + test for char_type_node and promoted_char_type_node as special + instances of INTEGER_TYPE tree codes. + (promote_type,build_java_signature): Likewise. + * jcf-write.c (adjust_typed_op): Likewise. + * mangle.c (mangle_type): Likewise. + * parse.y (do_unary_numeric_promotion): No longer handle CHAR_TYPE. + * parse.h (JINTEGRAL_TYPE_P): Likewise. + +2006-02-04 Andreas Tobler + + * expr.c (java_stack_swap): Revert gcc_assert patch. + +2006-02-03 Ben Elliston + + * java-gimplify.c: Use gcc_assert and gcc_unreachable throughout. + * typeck.c: Likewise. + * verify-impl.c: Likewise. + * class.c: Likewise. + * decl.c: Likewise. + * jcf-parse.c: Likewise. + * constants.c: Likewise. + * check-init.c: Likewise. + * jcf-write.c: Likewise. + * verify-glue.c: Likewise. + * mangle.c: Likewise. + * expr.c: Likewise. + * lang.c: Likewise. + * boehm.c: Likewise. + +2006-02-01 Jan Hubicka + + * decl.c (end_java_method): Kill hack disabling unit-at-a-time. + * lang.c (java_init_options): Set no_unit_at_a_time_default. + +2006-01-30 Andrew Haley + + PR java/21428 + * parse.y: (source_start_java_method): Mark DECL_ARTIFICIAL("this"). + +2006-01-21 Joseph S. Myers + + * jv-scan.c (version), jcf-dump.c (version), gjavah.c (version): + Update copyright notice dates. + +2006-01-16 Rafael Ávila de Espíndola + + * jvspec.c (lang_specific_spec_functions): Remove. + +2006-01-06 Tom Tromey + + * gcj.texi (Arrays): Added more documentation for + JvNewObjectArray. + (Primitive types): Correct information about primitive classes. + (Reference types): New node. + (Index): New node. + +2005-12-16 Alexandre Oliva + + * jcf-parse.c (set_source_filename): Set the decl source location + even when returning early. + +2005-12-15 Tom Tromey + Andrew Haley + + PR java/25429 + * parse.y (resolve_expression_name): Don't generate accessor + methods for constant fields. + +2005-12-13 Andrew Haley + + PR java/25366 + PR java/25368 + * class.c (maybe_layout_super_class): Update current_class before + calling do_resolve_class. + +2005-12-12 H.J. Lu + + PR java/25330 + * jcf-write.c (write_classfile): Use PID in temporary class + file. Save/restore errno when reporting error. + +2005-12-10 Terry Laurenzo + + PR java/9861 + * mangle.c (mangle_method_decl): Mangle Java methods by prepending 'J' + to bare_function_type and including the return type + * builtins.c (initialize_builtins) : Change builtin mangled name + constants to conform to new mangling scheme + +2005-12-08 Andrew Haley + + PR libgcj/25265 + * java-tree.h (enum java_tree_index): Add JTI_SOFT_NOSUCHFIELD_NODE. + (soft_abstractmethod_node): New. + * expr.c (build_field_ref): Add in-line check for missing field. + * decl.c (java_init_decl_processing): Add soft_nosuchfield_node. + +2005-12-07 Rafael Ávila de Espíndola + + * Make-lang.in (java.all.build, java.install-normal): Remove. + +2005-12-07 Rafael Ávila de Espíndola + + * Make-lang.in: Remove all dependencies on s-gtype, except for + gt-java-parse.h. + +2005-12-07 Richard Sandiford + + * class.c (build_utf8_ref, emit_register_classes): Use + switch_to_section and get_section. + +2005-12-06 Tom Tromey + + PR java/25283: + * parse.y (patch_new_array_init): Revert previous patch. + (lookup_method_invoke): Use size-less array type when creating an + anonymous constructor. + +2005-12-05 Tom Tromey + + * parse.y (patch_new_array_init): Don't set length on array. + +2005-12-02 Richard Guenther + + * java-gimplify.c (java_gimplify_labeled_block_expr): Use + buildN instead of build. + * class.c (finish_class): Likewise. + * expr.c (java_create_object): Likewise. + +2005-11-28 Tom Tromey + + PR java/18278: + * expr.c (build_jni_stub): Unwrap the return value. + * java-tree.h (soft_unwrapjni_node): New define. + (enum java_tree_index): Added JTI_SOFT_UNWRAPJNI_NODE. + * decl.c (java_init_decl_processing): Initialize + soft_unwrapjni_node. + +2005-11-24 Bryce McKinlay + + * gcj.texi (gij options): Add -Xss documentation. + +2005-11-08 Wil Mahan + + PR java/23617 + * zextract.c (read_zip_archive): Fix out of memory error when + reading jar files with zip-style comments. + +2005-11-07 Terry Laurenzo + + * gjavah.c (HANDLE_CODE_ATTRIBUTE): Only define for ELF Object + formats. + * gjavah.c (decompile_method): Add ATTRIBUTE_UNUSED + +2005-10-12 Nathan Sidwell + Wil Mahan + + PR java/23620 + * class.c (make_class): Create empty binfo here. + (set_super_info): Only create binfo if we have superclasses. + +2005-10-03 Ranjit Mathew + + PR java/24127 + * parse.y (method_header): Make the result of the rule a NULL_TREE + when a parsing error occurs. + +2005-09-29 Tom Tromey + + PR java/24120: + * jcf-io.c (memoized_dirlist_hash): New function. + (caching_stat): Use it. + +2005-09-21 Ranjit Mathew + + PR java/21418 + * class.c (inherits_from_p): Try to lay out super class + if it is not already laid out. + (maybe_layout_super_class): Handle the case where SUPER_CLASS + is a NULL_TREE. + +2005-09-18 James A. Morrison + + * builtins.c (max_builtin, min_builtin, abs_builtin, + java_build_function_call_expr): Use fold_buildN. + * class.c (layout_class_method): Likewise. + * expr.c (java_truthvalue_conversion, build_java_jsr, + build_java_arrayaccess, expand_java_arrayload, expand_iinc, + build_java_binop, build_field_ref, expand_compare, + build_known_method_ref, build_invokevirtual, + process_jvm_instruction): Likewise. + * parse.y (patch_binop, patch_exit_expr): Likewise. + * typeck.c (convert_ieee_real_to_integer): Likewise. + (convert): Don't call fold after convert_ieee_real_to_integer. + +2005-09-14 Bryce McKinlay + + PR java/23891 + * parse.y (maybe_create_class_interface_decl): Set TYPE_PACKAGE for + the newly created type. Set import lists here, not in create_class. + (jdep_resolve_class): Set current_class. + (do_resolve_class): Use current_class's TYPE_PACKAGE to determine + the current package context, not ctxp->package. + (cicp_cache): Removed. + (class_in_current_package): Simplify implementation using TYPE_PACKAGE. + * jcf-parse.c (give_name_to_class): Set TYPE_PACKAGE. + * java-tree.h (TYPE_PACKAGE): New macro. + (struct lang_type): New member 'package'. + +2005-09-09 Andrew Haley + + PR libgcj/23182 + * expr.c (pop_type_0): If the expected type is object or ptr + (i.e. void*), return the type of the object we just popped from + the stack. + +2005-09-06 Andrew Pinski + + * java-gimplify.c (java_gimplify_block): NULL out the old BLOCK's + BLOCK_EXPR_BODY before returning the new BIND_EXPR. + +2005-09-06 Kazu Hirata + + * check-init.c, decl.c, expr.c, gcj.texi, java-tree.h, + jcf-parse.c, jcf.h, parse.h, parse.y, typeck.c: Fix comment + typos. Follow spelling conventions. + +2005-09-05 Ranjit Mathew + + PR java/23431 + * typeck.c (lookup_do): Look up interfaces for the original class, + not the base class. + * parse.y (java_check_regular_methods): Fix diagnostic message for + more restrictive overriding of a method from an interface. + +2005-08-16 Tom Tromey + + * class.c (make_class_data): Always emit JV_STATE_PRELOADING for + class' initial state. + +2005-08-16 Ranjit Mathew + + PR java/22113 + * lex.c (do_java_lex): Define MAX_TOKEN_LEN. Avoid overflowing + `literal_token' for large numeric input tokens. + +2005-08-16 Ranjit Mathew + + PR java/19870 + * parse.y (nested_field_access_p): Rename to nested_member_access_p + and expand to handle method accesses across nested classes. + (build_outer_method_access_method): Rename to + build_nested_method_access_method. Minor adjustments to comments. + (resolve_expression_name): Use the newly-renamed + nested_member_access_p method. + (resolve_qualified_expression_name): Likewise. + (patch_method_invocation): Also consider static methods for access + method generation. Minor adjustments to comments. + (maybe_use_access_method): Use the more general + nested_memeber_access_p to determine access across nested class + boundaries. Allow THIS_ARG to be NULL (for static methods). + +2005-08-15 Tom Tromey + + PR java/23300. + * expr.c (build_field_ref): Don't generate otable reference when + DECL_FIELD_OFFSET is 0. + * class.c (maybe_layout_super_class): Pass outer class to + do_resolve_class. + +2005-08-15 Tom Tromey + + * java-tree.h (LABEL_IN_SUBR): Removed. + (LABEL_IN_SUBR): Likewise. + (LABEL_IS_SUBR_START): Likewise. + (LABEL_SUBR_START): Likewise. + (LABEL_SUBR_CONTEXT): Likewise. + (LABEL_CHANGED): Likewise. + (LABEL_RETURN_LABEL): Likewise. + (LABEL_RETURN_TYPE_STATE): Likewise. + (LABEL_RETURN_LABELS): Likewise. + (RETURN_MAP_ADJUSTED): Likewise. + (LABEL_PENDING_CHAIN): Likewise. + +2005-08-15 Tom Tromey + + * Make-lang.in (JAVA_OBJS): Removed verify.o + (java/verify.o): Removed. + * verify.c: Removed. + * lang.c (flag_new_verifier): Removed. + (java_post_options): Updated. + * java-tree.h (flag_new_verifier): Removed. + (verify_jvm_instructions): Removed. + * expr.c (pop_type_0): Assume flag_new_verifier is true. + (build_java_check_indexed_type): Likewise. + (expand_java_arraystore): Likewise. + (expand_java_arrayload): Likewise. + (pop_arguments): Likewise. + (expand_byte_code): Likewise. + (process_jvm_instruction): Likewise. + +2005-08-10 Andrew Haley + + * java-gimplify.c (java_gimplify_modify_expr): Fix any pointer + type mismatches to make legal GIMPLE. + +2005-08-10 Robin Green + + PR java/23230: + * parse.y (maybe_use_access_method): Generalize check from + java.lang.Object to any superclass of current_class + +2005-08-08 Nathan Sidwell + + * class.c (build_class_ref): Wrap the primary class type in a + NOP_EXPR. + * parse.y (java_complete_lhs) : Extract the + primary class type from the NOP_EXPR in which it was placed. + +2005-07-28 Diego Novillo + + * expr.c (expand_load_internal): Fix missing parens in + predicate. + +2005-07-28 Andrew Haley + + * expr.c (expand_load_internal): Convert to destination type. + +2005-07-22 Manfred Hollstein + + * verify-impl.c (check_class_constant): Fix uninitialised warnings. + (check_constant): Likewise. + (check_wide_constant): Likewise. + +2005-07-20 Giovanni Bajo + + Make CONSTRUCTOR use VEC to store initializers. + * check-init.c (check_init): Update to cope with VEC in + CONSTRUCTOR_ELTS. + * class.c (make_field_value, make_method_value, get_dispatch_table, + make_class_data, emit_symbol_table, emit_catch_table, + emit_assertion_table): Use build_constructor_from_list instead of + build_constructor. + * constants.c (build_constants_constructor): Likewise. + * java-gimplify.c (java_gimplify_new_array_init): Update to cope with + VEC in CONSTRUCTOR_ELTS. + * java-tree.h (START_RECORD_CONSTRUCTOR, PUSH_SUPER_VALUE, + PUSH_FIELD_VALUE, FINISH_RECORD_CONSTRUCTOR): Create a VEC instead + of a TREE_LIST. + * jcf-write.c (generate_bytecode_insns): Update to cope with VEC in + CONSTRUCTOR_ELTS. + * parse.y (build_new_array_init): Use build_constructor_from_list + instead of build_constructor. + (patch_new_array_init): Update to cope with VEC in + CONSTRUCTOR_ELTS. + (array_constructor_check_entry): Likewise. + +2005-07-12 Tom Tromey + + * jvspec.c (lang_specific_driver): Put filelist_filename first on + command line. + +2005-07-12 Tom Tromey + + PR java/19674: + * parse-scan.y (interface_member_declaration): Added + empty_statement. + +2005-07-08 Daniel Berlin + + * java-tree.h (LABEL_RETURN_LABELS): Use decl_non_common. + (LABEL_PENDING_CHAIN): Ditto. + (LABEL_PC): Ditto. + (DECL_BIT_INDEX): Ditto. + +2005-07-07 Bryce McKinlay + + PR java/18119 + * parse.y (inner_class_accessible): New function. Logic moved from + check_inner_class_access. + (check_inner_class_access): Use inner_class_accessible. + (resolve_inner_class): Simplify arguments. Create circularity hash + here. Keep looking for classes if we found one that was inaccessible. + Return the inaccessible class only if there is no other match. + (do_resolve_class): Update for new resolve_inner_class arguments. + Don't create circularity_hash here. + +2005-07-07 Bryce McKinlay + + PR java/21045 + * parse.y (add_exception_to_throws): New function. + (purge_unchecked_exceptions): Removed. + (get_constructor_super): Renamed from verify_constructor_super. Now + returns the super constructor after verification. + (java_complete_expand_method): Don't use purge_unchecked_exceptions + or save/restore the exception list. + (check_thrown_exceptions): Add uncaught exceptions in anonymous + class initializers and constructors to the throws clause of the method. + +2005-07-05 Bryce McKinlay + + PR java/19674 + * parse.y (interface_member_declaration): Allow empty statements in + interface declarations. + +2005-07-05 Paolo Bonzini + + * Makefile.in (parse.o): Adjust dependencies. + * parse.y: Include tree-dump.h. + +2005-07-02 Joseph S. Myers + + * class.c, decl.c, expr.c: Use '+' flag instead of %J. Use 'q' + flag for quoting. + +2005-07-01 Andrew Pinski + + * parse.y (issue_warning_error_from_context): Call + pp_output_formatted_text to be able to get the buffer. + +2005-06-30 Andrew Pinski + + * parse.y (issue_warning_error_from_context): Update for the + renaming of pp_format_text to pp_format. + +2005-06-28 Paul Brook + + * decl.c (java_init_decl_processing): Call + default_init_unwind_resume_libfunc. + +2005-06-27 Tom Tromey + + PR java/21540, PR java/13788: + * parse.y (java_complete_lhs) : Use + fold_constant_for_init. + (patch_binop): Added 'folding' argument. Updated all callers. + (patch_unaryop) : New case. + (fold_constant_for_init) : Likewise. + (fold_constant_for_init) : Fix sense of test. + +2005-06-25 Jan Hubicka + + * builtins.c (define_builtin): Accept new flags parameter. + (initialize_builtins): Mark the builtins const and nothrow accordingly. + +2005-06-25 Kelley Cook + + * all files: Update FSF address in copyright headers. + +2005-06-24 Tom Tromey + + * verify-impl.c (verify_instructions_0): Correctly handle + situation where PC falls off end. + +2005-06-23 Bryce McKinlay + + PR java/20697 + * parse.y (find_most_specific_methods_list): Remove special case for + inner classes. + +2005-06-15 Tom Tromey + + PR libgcj/21906: + * class.c (make_method_value): Use soft_abstractmethod_node for + abstract method. + * java-tree.h (soft_abstractmethod_node): New define. + (JTI_SOFT_ABSTRACTMETHOD_NODE): New enum constant. + * decl.c (java_init_decl_processing): Initialize + soft_abstractmethod_node. + +2005-06-13 Geoffrey Keating + + * Make-lang.in (rule for installing gcj.1): Depends on installdirs. + +2005-06-13 Per Bothner + + * expr.c (int highest_label_pc_this_method, + start_label_pc_this_method): New globals. + (lookup_label): Add start_label_pc_this_method to pc for label, and + update highest_label_pc_this_method. This prevents conflicts between + labels from different methods. + * java-tree.h: Declare new globals. + * jcf-parse.c (parse_class_file): If needed bump + start_label_pc_this_method and reset highest_label_pc_this_method. + +2005-06-13 Tom Tromey + + PR java/21844: + * parse.y (nested_field_access_p): Handle case where outer field + is inherited by enclosing class. + +2005-06-12 Per Bothner + + * class.c (inherits_from_p): Do load_class if needed. + +2005-06-09 Kaveh R. Ghazi + + * gjavah.c (error): Add ATTRIBUTE_PRINTF_1. + * java-tree.h (parse_error_context): Move... + * parse.h (parse_error_context): ... here, add ATTRIBUTE_GCC_DIAG. + * parse.y (parse_warning_context): Add ATTRIBUTE_GCC_DIAG. + * verify-impl.c (debug_print): Add ATTRIBUTE_PRINTF_1. + +2005-06-08 Roger Sayle + + * typeck.c (convert): Only clear TREE_OVERFLOW on INTEGER_CST nodes. + +2005-06-06 Jakub Jelinek + + * jv-scan.c (fatal_error, warning, warning0): Use gmsgid instead of + msgid for argument name. + * gjavah.c (error): Likewise. + * java-tree.h (parse_error_context): Likewise. + * parse.y (parse_error_context, parse_warning_context, + issue_warning_error_from_context): Likewise. + +2005-06-01 Tom Tromey + + PR java/21722: + * class.c (build_static_field_ref): Don't fold constant fields if + current class is from a .class file and we're using indirect + dispatch. + +2005-05-31 Kaveh R. Ghazi + + * java/verify-glue.c: Don't include errors.h and include toplev.h. + * java/Make-lang.in: Updates dependencies. + +2005-05-26 Ranjit Mathew + + PR java/19870. + * java-tree.h (OUTER_FIELD_ACCESS_IDENTIFIER_P): Rename to + NESTED_FIELD_ACCESS_IDENTIFIER_P. + (FIELD_INNER_ACCESS): Rename to FIELD_NESTED_ACCESS. + (FIELD_INNER_ACCESS_P): Rename to FIELD_NESTED_ACCESS_P. + * jcf-write.c (generate_classfile): Use + NESTED_FIELD_ACCESS_IDENTIFIER_P instead of + OUTER_FIELD_ACCESS_IDENTIFIER_P. + * parse.y (build_outer_field_access): Rename to + build_nested_field_access. Support static fields and outer-to-inner + class accesses. + (outer_field_access_p): Rename to nested_field_access_p. Support + static fields and generalise to outer-to-inner class and sibling + inner class accesses. + (outer_field_expanded_access_p): Rename to + nested_field_expanded_access_p and support static fields. + (outer_field_access_fix): Rename to nested_field_access_fix and + support static fields. + (build_outer_field_access_expr): Rename to + build_nested_field_access_expr and support static fields. + (build_outer_field_access_methods): Rename to + build_nested_field_access_methods and support static fields. For + static fields, generate accessors without class instance parameters. + (build_outer_field_access_method): Rename to + build_nested_field_access_method and support static fields. + (build_outer_method_access_method): Use + NESTED_FIELD_ACCESS_IDENTIFIER_P instead of + OUTER_FIELD_ACCESS_IDENTIFIER_P. + (resolve_expression_name): Consider static field accesses across + nested classes. + (resolve_qualified_expression_name): Likewise. + (java_complete_lhs): Use nested_field_access_fix instead of + outer_field_access_fix. + (patch_unary_op): Rename outer_field_flag to nested_field_flag. + Use nested_field_expanded_access_p instead of + outer_field_expanded_access_p. Use nested_field_access_fix instead + of outer_field_access_fix. + (check_thrown_exceptions): Use NESTED_FIELD_ACCESS_IDENTIFIER_P + instead of OUTER_FIELD_ACCESS_IDENTIFIER_P. + +2005-05-26 Bryce McKinlay + + * decl.c (GCJ_BINARYCOMPAT_ADDITION, + GCJ_BOOTSTRAP_LOADER_ADDITION): Removed. + (FLAG_BINARYCOMPAT_ABI, FLAG_BOOTSTRAP_LOADER, + MINOR_BINARYCOMPAT_ABI_VERSION): New. + (GCJ_CURRENT_BC_ABI_VERSION): Use new method to calculate version ID. + (parse_version): Calculate version ID using new method. Use bit-flags + for flag_indirect_dispatch and flag_bootstrap_classes. + +2005-05-25 Richard Henderson + + PR libgcj/21692 + * Make-lang.in (java/mangle.o): Depend on LANGHOOKS_DEF_H. + * class.c (build_class_ref): Set DECL_CLASS_FIELD_P and + DECL_CONTEXT; avoid pushdecl_top_level. + (build_dtable_decl): Set DECL_VTABLE_P and DECL_CONTEXT. + (layout_class): Don't SET_DECL_ASSEMBLER_NAME. + (layout_class_method): Likewise. + * decl.c (java_mark_cni_decl_local): New. + (java_mark_class_local): Use it. + * java-tree.h (DECL_LOCAL_CNI_METHOD_P): New. + (DECL_CLASS_FIELD_P, DECL_VTABLE_P): New. + (struct lang_decl_func): Add local_cni; + (struct lang_decl_var): Add class_field, vtable. + (java_mangle_decl): Declare. + * lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): New. + * mangle.c: Remove dup obstack.h; include langhooks-def.h. + (mangle_obstack_1): New. + (java_mangle_decl): Remove obstack argument. Call mangle_class_field, + mangle_vtable, and mangle_local_cni_method_decl. Fall back to + lhd_set_decl_assembler_name for things that don't need mangling. + (mangle_class_field): Rename from java_mangle_class_field, make + static, don't call init_mangling or finish_mangling. + (mangle_vtable): Similarly. + (mangle_local_cni_method_decl): New. + (init_mangling): Remove obstack argument. Use &mangle_obstack_1, + gcc_assert, and MANGLE_RAW_STRING. + (finish_mangling): Use gcc_assert, remove if 0 debugging code. + +2005-05-25 DJ Delorie + + * class.c (set_constant_value): Move warning control from if() to + warning(OPT_*). + +2005-05-24 Richard Henderson + + * builtins.c (define_builtin): Don't call make_decl_rtl. + * constants.c (build_constant_data_ref): Likewise. + * class.c (build_utf8_ref): Likewise. + (build_fieldref_cache_entry, build_static_field_ref): Likewise. + (get_dispatch_table, layout_class_method): Likewise. + (build_class_ref): Likewise. Don't set DECL_SIZE or DECL_SIZE_UNIT + by hand. + (make_local_function_alias): Don't SET_DECL_ASSEMBLER_NAME. + (make_method_value): Use METHOD_ABSTRACT instead of DECL_RTL_SET_P + to determine if we need a non-zero address. + * decl.c (builtin_function): Don't call make_decl_rtl. + (give_name_to_locals): Don't SET_DECL_ASSEMBLER_NAME. + * expr.c (build_known_method_ref): Don't call make_decl_rtl. + * resource.c (compile_resource_data): Likewise. + * parse.y (resolve_field_access): Re-word comment to avoid + building DECL_RTL. + +2005-05-24 Richard Henderson + + * class.c (registered_class): Take it out of class_roots; turn into + a vec of trees. + (register_class): Make static. Don't duplicate decl node. Use + VEC_safe_push. + (emit_register_classes): Use VEC_iterate. Use output_constant + instead of assemble_integer. Don't call mark_decl_referenced + directly. + * java-tree.h (register_class): Remove decl. + +2005-05-19 Paolo Bonzini + + PR java/17845 + + * parse.y (register_package, package_list): Remove. + (package_declaration): Do not call register_package. + (do_resolve_class): Do not use package_list. + +2005-05-15 Gerald Pfeifer + + * jcf-write.c (generate_bytecode_insns) : Remove + unused variable. + +2005-05-15 Tom Tromey + + PR java/21519: + * jcf-write.c (generate_bytecode_insns) : Don't call + NOTE_PUSH. + +2005-05-12 Aaron Luchko + + * gcj.texi: Add '-verify', '-noverify', and '-verifyremote'. + +2005-05-11 Tom Tromey + + * gcj.texi (Code Generation): Document -fbootstrap-classes. + * decl.c (GCJ_BOOTSTRAP_LOADER_ADDITION): New macro. + (parse_version): Use it. + * lang.opt (-fbootstrap-classes): New option. + +2005-05-10 Paolo Bonzini + + PR java/21436 + * class.c (maybe_layout_super_class): Look for imports in this_class. + * parse.h (ctxp_for_generation_last): New. + (do_resolve_class): Add a parameter. + * parse.y (ctxp_for_generation_last): New. + (java_pop_parser_context): Add at end of list. + (find_in_imports, find_in_imports_on_demand): Look in ctxp + if the TYPE_IMPORT_LIST or respectively the TYPE_IMPORT_DEMAND_LIST of + the given type are NULL. + (do_resolve_class): Look into the imports of the new second parameter. + Adjust recursive calls. + (resolve_class, resolve_inner_class, find_as_inner_class): Adjust + calls to do_resolve_class. + (create_class): Set the TYPE_IMPORT_LIST and TYPE_IMPORT_DEMAND_LIST. + (java_complete_class): Do not do that here. + +2005-05-03 Thomas Fitzsimmons + + PR java/20309 + * Make-lang.in (java): Add gjnih. + (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. + (GJNIH_OBJS): New variable. + (gjnih$(exeext)): New target. + (JAVA_MANFILES): Add gjnih.1. + (java.uninstall): Add gjnih.1. + (java.mostlyclean): Add gjnih. + (java.maintainer-clean): Add gjnih.1. + (java/gjavah-jni.o): New target. + (.INTERMEDIATE): Add gjnih.pod. + (gjnih.pod): New target. + * config-lang.in (stagestuff): Add gjnih. + * gcj.texi (Top): Add gjnih node. + (Invoking gcjh): Add descriptions of -force, -old, -trace, -J and + -bootclasspath options. + (Invoking gjnih): New node. + * gjavah.c Initialize flag_jni to 1 if JNI_DEFAULT is defined. + (TOOLNAME): New macro. + (error): Replace hard-coded gcjh with TOOLNAME. + (process_file): Likewise. + (usage): Likewise. + (version): Likewise. + (help): Likewise. Add help output for -force, -old, -trace and -J + options. + (OPT_FORCE, OPT_OLD, OPT_TRACE): New macros. + (options): Add force, old, trace and J fields. + (main): Handle -force, -old, -trace and -J options. + +2005-05-03 Tom Tromey + + PR java/21245: + * gjavah.c (main): Unlink output file on error. + +2005-05-03 Kazu Hirata + + * constants.c, jvgenmain.c, lang.opt, resource.c: Update + copyright. + +2005-04-29 Tom Tromey + + * expr.c (build_jni_stub): Updated for change to build_block. + +2005-04-29 Andrew Pinski + + * expr.c (force_evaluation_order): Declare 'saved' earlier. + +2005-04-28 Andrew Haley + + PR java/19285 + * java-tree.h (soft_resolvepoolentry_node): New. + (alloc_constant_fieldref): Declare. + * expr.c (expand_java_field_op): Don't call class_init for + accesses to static fields with indirect dispatch. + * builtins.c (initialize_builtins): Add "__builtin_expect". + * decl.c (soft_resolvepoolentry_node): New variable. + (java_init_decl_processing): Create a decl for + "_Jv_ResolvePoolEntry". + * class.c (build_fieldref_cache_entry): New function. + (build_static_field_ref): Rewrite for indirect dispatch. + * constants.c (find_name_and_type_constant_tree): New function. + (alloc_constant_fieldref): Likewise. + (build_constants_constructor): Handle CONSTANT_Fieldref and + CONSTANT_NameAndType. + + PR java/21115 + * expr.c (force_evaluation_order): Convert outgoing args smaller + than integer. + +2005-04-27 Bryce McKinlay + + * gcj.texi (libgcj Runtime Properties): Remove obsolete + gnu.gcj.runtime.NameFinder.* system properties. Update documentation + for gnu.gcj.runtime.NameFinder.use_addr2line and gnu.gcj.progname. + +2005-04-25 Kaveh R. Ghazi + + * gjavah.c, jcf-dump.c, jv-scan.c, jvgenmain.c: Replace calls + to `unlock_stream' with `unlock_std_streams'. + +2005-04-25 Jakub Jelinek + + * Make-lang.in (java/decl.o, java/resource.o): Depend on $(EXPR_H) + instead of just expr.h. + +2005-04-24 Kaveh R. Ghazi + + * gjavah.c (main): Unlock the stdio streams. + * jcf-dump.c (main): Likewise. + * jv-scan.c (main): Likewise. + * jvgenmain.c (main): Likewise. + +2005-04-23 DJ Delorie + + * class.c, decl.c, expr.c, jcf-io.c, jcf-parse.c, jv-scan.c, + parse.y: Adjust warning() callers. + +2005-04-21 Bryce McKinlay + + * gcj.texi (Object fields): Change "Integer" to "Int" in example + contructor. + +2005-04-20 Bryce McKinlay + + * gcj.texi: Fix typos and bogus example. + +2005-04-19 Kazu Hirata + + * except.c: Fix a comment typo. + +2005-04-19 Julian Brown + + * decl.c (finish_method): Revert patch from 2005-04-13 for breaking + indirect dispatch with PIC. + +2005-04-18 Andrew Haley + + * java-except.h (struct eh_range.handler): Remove unused field. + (handle_nested_ranges): Remove function declaration. + (sanity_check_exception_range): Add function declaration. + * verify.c (verify_jvm_instructions): Remove call to + handle_nested_ranges. + * verify-glue.c (verify_jvm_instructions_new): Call + sanity_check_exception_range. + * except.c (link_handler, eh_range_freelist, link_handler, + handle_nested_ranges): Remove. + (add_handler): Rewrite. + (sanity_check_exception_range): New function. + (print_ranges): New function. + +2005-04-13 Julian Brown + + * decl.c (finish_method): Give methods once-only linkage. + +2005-04-11 Richard Sandiford + + * lang.opt: Refer to the GCC internals documentation instead of c.opt. + +2005-04-07 Kaveh R. Ghazi + + * java-tree.h: Don't use PARAMS(). + +2005-04-07 Per Bothner + + * class.c (push_class): By default, suppress debug output. + (finish_class): Enable debug output for classes we're emitting. + +2005-04-07 Andrew Haley + + * gcj.texi: Correct gcj-dbtool instructions. + +2005-04-04 Kazu Hirata + + * gcj.texi: Fix a typo. + * lang.c: Fix a comment typo. + +2005-04-01 Thomas Fitzsimmons + + * gcj.texi (Invoking gij): Add descriptions of new -X options. + Mention recognized-and-ignored compatibility options. + (Memory allocation): Add descriptions of JvMalloc, JvRealloc and + JvFree. + (About CNI): Add Memory allocation section. + +2005-04-01 Tom Tromey + + * decl.c (java_init_decl_processing): Fix types of + _Jv_MonitorEnter, _Jv_MonitorExit, _Jv_AllocObject, + _Jv_AllocObjectNoFinalizer, _Jv_Throw, _Jv_NewPrimArray, + _Jv_JNI_PopSystemFrame, _Jv_divI, _Jv_remI, _Jv_divJ, _Jv_remJ. + +2005-03-31 Jan Hubicka + + * Make-lang.in (class.o, decl.o): Depend on cgraph.h. + * class.c: Include cgraph.h + (make_local_functoin_alias): Mark aslias as needed. + * resource.c: Include cgraph.h + (compile_resource_data): Go via cgraph interface. + +2005-03-30 Ian Lance Taylor + + * parse.y (maybe_yank_clinit): Don't crash if bbody is NULL. + +2005-03-30 Tom Tromey + + * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): Handle cases where + inner_class_info_index==0 or outer_class_info_index==0. + +2005-03-29 Tom Tromey + + * gcj.texi (libgcj Runtime Properties): Document + gnu.gcj.runtime.endorsed.dirs. + +2005-03-24 Anthony Green + + * gcj.texi (Invoking gcj-dbtool): Document new LIBDIR option to + 'gcj-dbtool -p'. + +2005-03-23 Tom Tromey + + * decl.c (GCJ_CURRENT_BC_ABI_VERSION): New define. + (parse_version): Use it. + +2005-03-23 Joseph S. Myers + + * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove. + +2005-03-18 Andrew Haley + + PR java/20522 + * decl.c (update_aliases): Don't update variables that are about + to die. + (maybe_poplevels): Add comment. + +2005-03-17 Bryce McKinlay + + PR java/20502 + * jcf-parse.c (duplicate_class_warning): New function. + (java_parse_file): Call duplicate_class_warning if + CLASS_FROM_CURRENTLY_COMPILED_P is already set. + (parse_zip_file_entries): Likewise. Also set + CLASS_FROM_CURRENTLY_COMPILED_P. + +2005-03-16 Andrew Haley + + * expr.c (expand_java_arrayload): Don't generate a + NullPointerException based on the type of the node. + (build_java_array_length_access): Likewise. + +2005-03-15 Zack Weinberg + + * Make-lang.in (TEXI_JAVA_FILES): Add gcc-vers.texi. + +2005-03-11 Tom Tromey + + * gcj.texi (Invoking gcj-dbtool): Document 'gcj-dbtool -p'. + (libgcj Runtime Properties): Document the default .db. + +2005-03-10 Ranjit Mathew + + PR java/20312 + * parse.y (checks_throws_clauses): Check exceptions list even when + the base class does not come from a source file being compiled. + (java_complete_lhs): Remove unused variable 'wfl'. + +2005-03-09 Ranjit Mathew + + PR java/20338 + * decl.c (finish_method): Emit _Jv_InitClass for private static + methods inside inner classes as well. + +2005-03-08 Julian Brown + * Revert patch from 2005-03-08 for causing bootstrap failure on + ppc-darwin. + +2005-03-08 Julian Brown + + * decl.c (finish_method): Give methods once-only linkage. + +2005-03-07 Ranjit Mathew + + * lang.c (flag_new_verifier): Enable by default, regardless of ABI. + +2005-03-07 Bryce McKinlay + + * verify-glue.c (vfy_is_assignable_from): Perform static check using + can_widen_reference_to if the C++ ABI is in use. + (vfy_get_interface_count, vfy_get_interface): Remove unused functions. + * verify-impl.c (debug_print, make_utf8_const, init_type, copy_type, + type_isresolved, init_state, set_pc, state_get_pc, + _Jv_BytecodeVerifier): Clean up unused and disabled functions. + (verify_fail): Report the current PC from the verifier context. + (free_state): Remove #if 0 block to enable this function. + (free_verifier_context): Call free_state on state_list iterator + values before freeing them. + * expr.c (pop_type_0): Pop correct type for error message when stack + contains a multi-word type. + +2005-03-07 Ranjit Mathew + + * expr.c (build_java_array_length_access): Remove !flag_new_verifier + for known NULL array length access. + +2005-03-07 Tom Tromey + + * gcj.texi (Invoking gcj-dbtool): Document '-f'. + +2005-03-06 Kazu Hirata + + * jcf-dump.c, jcf-io.c, jcf-reader.c, lang.c, parse.h, + typeck.c: Update copyright. + +2005-03-06 Ranjit Mathew + + Remove xref code. + * xref.c, xref.h: Remove file. + * Make-lang.in (java/xref.o): Remove. + * java-tree.h (flag_emit_xref, do_not_fold): Remove declaration. + * lang.c (flag_emit_xref): Remove definition. + * parse.h (DECL_END_SOURCE_LINE, DECL_INHERITED_SOURCE_LINE): Remove. + * typeck.c (convert): Remove use of do_not_fold. + * parse.y (do_not_fold): Remove definition. + (parser grammar): Remove xref code. + (maybe_create_class_interface_decl, create_class): Likewise. + (register_fields, method_header, finish_method_declaration): Likewise. + (declare_local_variables, source_end_java_method): Likewise. + (java_complete_expand_classes): Do not set do_not_fold. + (java_complete_expand_method): Remove xref code. + (java_expand_classes, resolve_field_access, patch_invoke): Likewise. + (java_complete_tree, java_complete_lhs, patch_assignment): Likewise. + (patch_binop, build_string_concatenation, patch_array_ref): Likewise. + (patch_synchronized_statement, patch_throw_statement): Likewise. + (maybe_build_class_init_for_field): Likewise. + +2005-03-05 Kazu Hirata + + * expr.c (build_expr_wfl, expr_add_location): Use TYPE_P + instead of IS_NON_TYPE_CODE_CLASS. + +2005-03-04 Andrew Haley + + PR java/18362 + * class.c (set_method_index): Don't set method_index if it is + NULL_TREE. + (layout_class_method): Don't complain about "non-static method foo + overrides static method" in the case of indirect dispatch. + +2005-03-02 Kaveh R. Ghazi + + * jcf-io.c (caching_stat): Use __extension__ to avoid pedantic + warning. + * Make-lang.in: Don't elide warnings in jcf-io.c. + +2005-03-01 Per Bothner + + PR java/8608 + * check-init.c (wfl): Remove static. + (final_assign_error, check_init): Replace calls to parse_error_context + by plain error. + (check_init): Save, set, and restore input_location for each exp. + +2005-03-01 Per Bothner + + * jcf-reader.c (get_attribute): Handle SourceDebugExtension (JSR 45) + if HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE is defined. + * jcf-dump.c (HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE): Print contents. + +2005-03-01 Per Bothner + + * java-tree.h (IDENTIFIER_HANDLECLASS_VALUE): Remove ancient macro. + +2005-02-23 Thomas Fitzsimmons + + PR libgcj/16923 + * gcj.texi (Invocation): Add descriptions of JvVMInitArgs and + JvVMOption. + +2005-02-22 Tom Tromey + + PR java/20056: + * verify-impl.c (EITHER): New define. + (types_compatible): Handle it. + (check_field_constant): Use it. + +2005-02-18 Tom Tromey + + PR java/20056: + * verify-impl.c (types_equal): Fixed test. + + PR java/20056: + * verify-glue.c (vfy_class_has_field): New function. + * verify.h (vfy_class_has_field): Declare. + * verify-impl.c (check_field_constant): Added 'putfield' + argument. + (verify_instructions_0): Updated. + (types_equal): New function. + +2005-02-14 Tom Tromey + + PR java/19921: + * jcf-write.c (generate_bytecode_insns) : Note the + stack effect of multianewarray. + +2005-02-14 Andrew Haley + + PR java/19907 + * expr.c (expand_byte_code): Call promote_arguments(). + (promote_arguments): New function. + * decl.c (check_local_unnamed_variable): Remove special case for + new verifier. + (find_local_variable): Promote all boolean types to int + when searching for local variable decls. + +2005-02-12 Kazu Hirata + + * builtins.c, java-except.h, jcf-parse.c, jv-scan.c, lex.c, + parse-scan.y: Update copyright. + +2005-02-11 Per Bothner + + PR java/15543 + * parse-scan.y (input_location): Remove variable. + (main_input_filename): New - replaces input_filename, which isn't + settable if USE_MAPPED_LOCATION. + * lex.c (java_init_lex): Wrap some more places in #ifndef JC1-LITE, + so we don't reference input_location or wfl_operator in that case. + * jv-scan.c (expand_location): Remove - no longer used. + (main): Set main_input_filename rather than input_filename. + +2005-02-09 Richard Henderson + + * builtins.c (initialize_builtins): Call build_common_builtin_nodes. + * decl.c (java_init_decl_processing): Initialize const_ptr_type_node. + +2005-02-08 Marcin Dalecki + + * expr.c (add_type_assertion): Use the proper enumeration type, + since this is what htab_find_slot() is expecting. + +2005-02-06 Joseph S. Myers + + * gcj.texi: Update copyright dates. + +2005-02-02 Tom Tromey + + * gcj.texi (libgcj Runtime Properties): Default library_control + to 'cache'. + +2005-02-02 Ranjit Mathew + + PR java/15543 + * parse-scan.y (formal_parameter): Use $2 (type) instead of $$ + (modifiers) when square brackets are present in a declaration for + a final paramter. + * jv-scan.c (main): Set input_filename and input_line. + +2005-02-01 Tom Tromey + + PR java/19742: + * gjavah.c (get_field_name): Don't override name for JNI header. + +2005-02-01 Roger Sayle + + * jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR + of unsigned types using iushr and lushr JVM bytecodes. + +2005-02-01 Ranjit Mathew + + PR java/19738 + * gjavah.c (jni_print_float): Do not emit floating-point + initialiser for a static final field. + (jni_print_double): Likewise. + +2005-02-01 Mark Mitchell + + Revert: + 2005-01-31 Mark Mitchell + * gjavah.c (print_field_info): Mark static data members of + floating-point type with "__extension__". + +2005-01-31 Mark Mitchell + + * gjavah.c (print_field_info): Mark static data members of + floating-point type with "__extension__". + +2005-02-01 Ranjit Mathew + + PR java/9157 + * parse.y (build_string_concatenation): Remove redundant if. + (patch_conditional_expr): Attempt to patch_string() the condition + of a ?: as well, in addition to its other operands. + +2005-01-25 Tom Tromey + + * Make-lang.in (java/java-tree-inline.o): Removed. + +2005-01-25 Ranjit Mathew + + PR java/19070 + * parse.y (patch_binop): Allow comparisons against NULL only + if the other operand is of a reference type. + +2005-01-24 Tom Tromey + + * java-tree.h (gcj_abi_version): Declare. + * class.c (make_class_data): Push gcj_abi_version into "next" + field. Renamed field. + * decl.c (gcj_abi_version): New global. + (parse_version): New function. + (java_init_decl_processing): Call it. Renamed 'next' field. + Include version.h. + (GCJ_BINARYCOMPAT_ADDITION): New define. + +2005-01-24 Roger Sayle + + PR java/19295 + * jcf-write.c (generate_bytecode_insns): Conversions between + integer types of the same precision shouldn't generate widening + or narrowing conversion bytecodes. + +2005-01-22 Kazu Hirata + + * java-except.h, java-tree.h: Remove unused prototypes. + +2005-01-20 Andrew Pinski + + PR java/18091: + * jcf-write.c (perform_relocations): Don't call memcpy if source + and destination are the same. + +2005-01-17 Tom Tromey + + * verify-impl.c (get_short): Sign extend. + (get_int): Likewise. + +2005-01-12 Ranjit Mathew + + * expr.c (build_jni_stub): Replace mistaken use of TYPE_SIZE_UNIT + with TYPE_SIZE. + +2005-01-10 Ranjit Mathew + + * verify.c: Revert to the version before the BC-ABI merge. + +2005-01-10 Ranjit Mathew + + PR java/19277 + * check-init.c (check_init): Take care of references that do not + have an explicit final variable declaration (e.g. array length + access) for pre/post in/de-crement operators. + +2005-01-08 Mark Wielaard + + * parse.y (process_imports): Allocate (and free) original_name only + when not already defined. + * jcf-parse.c (read_class): Free results of find_class() and + lrealpath(). + (java_parse_file): Keep pointer to head of file_list and free when + done. Free result of lrealpath(). + +2005-01-05 Tom Tromey + + * gcj.texi (Standard Properties): java.ext.dirs is now used. + +2004-12-20 Andrew Haley + + * typeck.c: Use fold_convert for ints and booleans. + +2004-12-17 Andrew Haley + + PR java/18931 + * typeck.c (convert): Use a CONVERT_EXPR when converting to + BOOLEAN_TYPE or CHAR_TYPE. + (convert_to_boolean, convert_to_char) : Remove. + * convert.h (convert_to_boolean, convert_to_char) : Remove. + * expr.c (expand_load_internal): Do type conversion if type is not + as required. + +2004-12-13 Danny Smith + + PR target/18459 + * class.c (emit_register_classes): Use TARGET_USE_JCR_SECTION. + Update comment. + +2004-12-07 Andrew Haley + + PR java/18811: + * jcf-parse.c (load_class): Remove sanity test for missing inner + class file. + +2004-12-06 Tom Tromey + + * Make-lang.in (JAVA_MANFILES): Added gcj-dbtool. + (java.uninstall): Likewise. + (java.maintainer-clean): Likewise. + (.INTERMEDIATE): Likewise. + (java.install-man): Likewise. + (gcj-dbtool.pod): New target. + * gcj.texi (Code Generation): Document -findirect-dispatch. + (libgcj Runtime Properties): Document + gnu.gcj.precompiled.db.path. + (Top): Link to "Invoking gcj-dbtool". + +2004-12-06 Tom Tromey + + PR java/14853: + * java-tree.h (extract_field_decl): Declare. + * parse.y (extract_field_decl): Renamed from + strip_out_static_field_access_decl. No longer static. + * check-init.c (get_variable_decl): Unwrap COMPOUND_EXPRs. + +2004-12-03 Tom Tromey + + * lang.c (flag_new_verifier): Define. + (java_post_options): Set flag_new_verifier if indirect dispatch + is being used. + * lang.opt (fnew-verifier): Removed. + +2004-12-03 Tom Tromey + + PR bootstrap/14614: + * Make-lang.in (java.install-common): Only install transformed + gcjh if gcj-cross exists. + +2004-12-03 Andrew Haley + + PR java/18812 + * except.c (link_handler): Patch 'outer' field of siblings of the + range we're demoting. + +2004-12-03 Andrew Haley + + PR java/18697 + * class.c (layout_class_method): Don't fail to override a method + simply because it has DECL_ARTIFICIAL set. + +2004-12-02 Tom Tromey + + PR java/16675: + * parse.y (craft_constructor): Special case null_pointer_node. + +2004-12-02 Tom Tromey + + PR java/18741: + * java-gimplify.c (java_gimplify_expr): Don't call + SET_EXPR_LOCATION unless wrapped tree is an expression. + +2004-11-27 Per Bothner + + * jcf-parse.c (set_source_filename): Improvement to Andrew's fix: + Fix fencepost error in 'i', which got executed one too many times. + Also, fold memcpy into explicit loop, as originally intended. + Also, free temporary 'buf' which otherwise leaks. + +2004-11-27 Per Bothner + + * expr.c (build_expr_wfl): Only declare last_file and last_filenode + local static variables if not USE_MAPPED_LOCATION. + +2004-11-27 Kazu Hirata + + * class.c, decl.c, expr.c: Fix comment typos. + +2004-11-26 Andrew Pinski + + PR java/18305 + * decl.c (end_java_method): Call + attach_init_test_initialization_flags on all the init_decls. + * parse.y (attach_init_test_initialization_flags): Move to ... + * expr.c (attach_init_test_initialization_flags): here and + support BIND_EXPR also. + * java-tree.h (attach_init_test_initialization_flags): Prototype. + * jcf-parse.c (parse_class_file): Don't disable class init + optimization. + +2004-11-25 Joseph S. Myers + + * gjavah.c, jcf-dump.c, jv-scan.c, jvspec.c: Avoid ` as left quote + in diagnostics. + +2004-11-24 Richard Henderson + + * verify-glue.c (vfy_init_name, vfy_clinit_name, vfy_object_type, + vfy_string_type, vfy_throwable_type): Use ANSI declaration form. + +2004-11-24 Tom Tromey + + * verify.c (defer_merging): Don't use C++-style comment. + * verify.h (java_opcode): Added java_opcode_end. + * class.c (build_class_ref): Remove C++ comment and old FIXME. + + * verify-impl.c (vfy_push_type): Removed bogus "return". + (initialize_stack): Use vfy_alloc and vfy_free. + (verify_instructions_0): Likewise. + + * Merged gcj-abi-2-dev-branch to trunk. + +2004-11-24 Andrew Haley + + * jcf-parse.c (parse_class_file): Set file_start_location. + +2004-11-10 Tom Tromey + + * class.c (make_field_value): Don't call build_static_field_ref. + (build_static_field_ref): Don't emit direct references when using + indirect dispatch. + + * gcj.texi (Invoking gij): Document -verbose. Put -verbose and + -verbose:class into man page synopsis. + +2004-11-09 Tom Tromey + + * expr.c (build_java_arraystore_check): Still generate check if + element type is itself an array. + +2004-11-08 Tom Tromey + + * java-tree.h (soft_check_assignment_node): Removed. + (enum java_tree_index): Removed JTI_SOFT_CHECK_ASSIGNMENT_NODE. + * decl.c (java_init_decl_processing): Don't initialize + soft_check_assignment_node. + +2004-11-05 Tom Tromey + + * class.c (layout_class_methods): Don't add Miranda methods when + using indirect dispatch. + +2004-11-05 Bryce McKinlay + + * class.c (make_class_data): Call emit_assertion_table to set the + 'assertion_table' field. + (build_signature_for_libgcj): Move here from expr.c. + (add_assertion_table_entry): New function. Callback for assertion + hashtable traversal. + (emit_assertion_table): New. Take class argument, and generate + assertion table DECL based on the TYPE_ASSERTIONS hashtable. + * decl.c (init_decl_processing): Define assertion_entry_type record. + Push 'assertion_table' class field instead of 'verify'. + * expr.c (type_assertion_eq): Compare 'assertion_code' field. + (type_assertion_hash): Include 'assertion_code' in hash. + (add_type_assertion): Rewritten. Take class and assertion_code + arguments. Add assertions to the TYPE_ASSERTIONS hashtable. + (can_widen_reference_to): Use new add_type_assertion() arguments. + * java-tree.h (java_tree_index): Add JTI_ASSERTION_ENTRY_TYPE, + JTI_ASSERTION_TABLE_TYPE. Remove JTI_VERIFY_IDENTIFIER_NODE. + (verify_identifier_node): Removed. + (assertion_entry_type, assertion_table_type): New. + (ASSERTION_TYPES_COMPATIBLE, ASSERTION_IS_INSTANTIABLE): New. Type + assertion code definitions. + (struct type_assertion): Add assertion_code. Rename 'source_type' and + 'target_type' to 'op1' and 'op2'. + (add_type_assertion): Declare. + (lang_printable_name_wls): Remove unused definition. + * verify-glue.c: (vfy_is_assignable_from): New. Call add_type_assertion + to emit runtime assertion. + (vfy_note_stack_type): Clean up non-C90 declarations. + (vfy_note_local_type): Likewise. + * verify.h (vfy_is_assignable_from): Declare. + * verify-impl.c (is_assignable_from_slow): Remove unused function. + (ref_compatible): Rename arguments. Call vfy_is_assignable_from() + instead of is_assignable_from_slow(). + (types_compatible): Reinstate ref_compatible() call. + +2004-11-04 Tom Tromey + + * class.c (build_static_field_ref): Reverted previous patch. + + * class.c (build_static_field_ref): Don't emit direct references + when using indirect dispatch. + +2004-11-03 Tom Tromey + + * expr.c (expand_java_arrayload): Set lhs_type_node. + (expand_java_arraystore): Set rhs_type_node. + +2004-11-02 Tom Tromey + + * jcf-parse.c (compute_class_name): Use filename length from zip + directory, not strlen. + + * expr.c (expand_invoke): Mark new interface methods as abstract. + +2004-11-01 Tom Tromey + + * verify-impl.c (push_jump): Removed check for uninitialized + objects. + (push_exception_jump): Likewise. + (handle_ret_insn): Likewise. + (handle_jsr_insn): Likewise. + (state_check_no_uninitialized_objects): Removed. + + * decl.c (check_local_unnamed_variable): Recognize + promoted-to-int parameters when using the new verifier. + * expr.c (expand_java_arraystore): Explicitly request array type + when using new verifier. + (expand_java_arrayload): Likewise. + (invoke_build_dtable): Don't pass object_type_node as + expression argument to build_java_indirect_ref. + (build_java_check_indexed_type): Do nothing. + (build_java_arraystore_check): Handle case where array doesn't + have array type. + (build_java_array_length_access): Likewise. + (expand_invoke): Handle case where interface overrides a method + from Object. + (pop_type_0): Always succeed for reference types. + (process_jvm_instruction): Don't pop a value in a dead + exception handler. + (pop_arguments): Convert arguments to correct types. + +2004-10-29 Andrew Haley + + * jcf-parse.c (give_name_to_class): Remove line that was + incorrectly merged. + +2004-10-29 Andrew Haley + + * jcf-parse.c (set_source_filename): Add code to build new sfname. + +2004-10-20 Andrew Haley + + * decl.c (end_java_method): Don't expand if flag_syntax_only. + +2004-10-26 Tom Tromey + + * verify.h (vfy_notify_verified): Removed. + * verify-glue.c (vfy_notify_verified): Removed. + +2004-10-26 Tom Tromey + + * verify-impl.c (debug_print_state): Declare `i' before code. + (merge_types): Modify `t' when it is null_type. + +2004-10-26 Tom Tromey + + * verify-impl.c (type_print): Renamed from print. Now static and + takes an argument. + (debug_print_state): Use type_print. + +2004-10-25 Tom Tromey + + * expr.c (build_invokeinterface): Compute correct offset for + index into interface methods. + +2004-10-20 Tom Tromey + + * java-tree.h (verify_jvm_instructions_new): Declare. + + * jvspec.c (jvgenmain_spec): Remove -fnew-verifier from cc1 + command line. + + * verify-impl.c (verify_instructions): Correctly handle wide + types on the stack. + * verify-glue.c (vfy_get_class_name): Use DECL_NAME. + (vfy_get_component_type): Strip pointer types. + (vfy_find_class): Use get_type_from_signature. Strip pointer + types. + Include java-except.h. + +2004-10-20 Bryce McKinlay + + * verify-impl.c (type_array_elementpop_raw, vfy_pop_type_t, + vfy_push_type_t, set_variable, add_new_state, merge_into, + handle_jsr_insn, branch_prepass, check_class_constant, + check_wide_constant, get_one_type, compute_static_types, + verify_instructions_0): Clean up C99 declarations after statements. + +2004-10-20 Tom Tromey + + * verify-impl.c (merge_refs): Compare reference against iterator, + not ref2. + + * verify-glue.c (vfy_tag): Mask off resolved flag. + +2004-10-19 Tom Tromey + + * verify-impl.c (verify_instructions): Call vfy_note_local_type. + (init_state_with_stack): Initialize `this_type' in state. + (verify_method): Use debug_print. + * verify-glue.c (vfy_is_primitive): Removed debugging print. + (vfy_note_stack_depth): Reverted last patch. + (vfy_note_stack_type): Note pointer to Object, not Object. + (vfy_note_local_type): Likewise. + + * verify.h (vfy_note_instruction_seen): Declare. + * verify-glue.c (verify_jvm_instructions_new): Set + BCODE_EXCEPTION_TARGET on target instruction. + (vfy_note_instruction_seen): New function. + * verify-impl.c (FLAG_INSN_SEEN): New define. + (verify_instructions_0): Set flag on instruction. Save state for + PC=0 later. + (verify_instructions): Call vfy_note_instruction_seen. + + * verify-glue.c (vfy_note_stack_depth): Fix off-by-one error. + (verify_jvm_instructions_new): Call method_init_exceptions, + add_handler, and handle_nested_ranges. + * verify-impl.c (verify_method): Return 1 on success. + (verify_instructions_0): Save the state at PC=0. + + * verify-impl.c (init_type_from_class): Set is_resolved and + ref_next on new ref_intersection. + (init_type_from_string): Likewise. + +2004-10-15 Bryce McKinlay + + * expr.c (expand_bytecode): Use verify_jvm_instructions_new + if flag_new_verifier is set. + * java-tree.h (flag_new_verifier): Declare. + * lang.opt (fnew-verifier): New option. + * verify-impl.c: Work around namespace pollution by undef'ing + 'current_class'. + (struct verifier_context): Make 'bytecode' const. + (verify_fail_pc): Pass -1 PC argument to vfy_fail. + (types_compatible): For the BC-ABI, always consider reference types + compatible. + (check_class_constant): Use vfr->current_class. + (check_constant): Likewise. + (check_wide_constant): Likewise. + (check_field_constant): Check for 'L' at start of type name. + (get_one_type): Return pointer instead of type. Set type result in + caller via passed type pointer. + (compute_argument_types): Update to use new get_one_type arguments. + (compute_return_type): Likewise. + (make_verifier_context): New. Allocate and initialize 'vfr'. + (free_verifier_context): New. Free 'vfr' and its contents. + (verify_method): Remove ATTRIBUTE_UNUSED. Call make_verifier_context + and free_verifier_context. + +2004-10-15 Tom Tromey + + * verify-glue.c (vfy_note_local_type): Mark argument as unused. + * verify.h (vfy_fail): Fixed formatting. + + * verify-impl.c (vfr): Fixed comment formatting. + (collapse_type): New function. + (verify_instructions): Notify compiler about type map. + * verify.h (vfy_note_stack_depth): Updated. + (vfy_note_stack_type): Likewise. + (vfy_note_local_type): Likewise. + (vfy_unsuitable_type, vfy_return_address_type, vfy_null_type): + Declare. + * verify-glue.c (vfy_note_stack_depth): Correctly size type + state. Added `method' argument. + (vfy_note_stack_type): Renamed from vfy_note_type. Added `method' + argument. + (vfy_note_local_type): New function. + (vfy_unsuitable_type): Likewise. + (vfy_return_address_type): Likewise. + (vfy_null_type): Likewise. + + * verify.h (VFY_IN_GCC): Removed. + (VFY_WANT_TYPEMAP): Removed. + * verify-impl.c (verify_instructions_0): Removed useless "\". + (struct state) : Uncomment. + +2004-10-13 Bryce McKinlay + + * verify-impl.c: Formatting fixes. Reformat C++-style comments to + C-style. + +2004-10-06 Bryce McKinlay + + * Make-lang.in (verify.o): Re-enabled this target. + * verify-glue.c (vfy_get_interface_count): Add ATTRIBUTE_UNUSED. + (vfy_get_interface): Likewise. + (verify_jvm_instructions_new): Renamed from verify_jvm_instructions. + * verify.h (verify_jvm_instructions_new): Declare. + * verify-impl.c (free_state): Temporarily comment out unused + function. + +2004-10-06 Tom Tromey + + * java-tree.h (JV_STATE_READ): New enum value. + +2004-10-06 Bryce McKinlay + + * verify.h: New file. + +2004-10-05 Bryce McKinlay + + * verify-impl.c, verify-glue.c, verify.h: New files. + * Make-lang.in: Add rules for verify-impl.o and verify-glue.o. + +2004-09-24 Andrew Haley + + * decl.c (check_local_unnamed_variable): Always use the PARM_DECL + for a slot if it's of pointer type. + +2004-09-14 Tom Tromey + + * class.c (make_class_data): Correctly initialize "state" field. + Initialize "engine" field. + * decl.c (java_init_decl_processing): Add "engine" field. + +2004-09-10 Andrew Haley + + PR java/12760 + * expr.c (build_invokeinterface): Use fast method for interface + dispatch. + * java-tree.h (enum java_tree_index): Add JTI_ITABLE_TYPE, + JTI_ITABLE_PTR_TYPE. + (struct lang_type): Add itable_methods, itable_decl, itable_syms_decl. + (emit_symbol_table): Add new arg, element_size. + * decl.c (java_init_decl_processing): Initialize Class.itable. + * class.c (GEN_TABLE): New macro. + (gen_indirect_dispatch_tables): Use it. Add itable. + (make_class_data): Add new arg for emit_symbol_table(). + Emit itable. + (add_miranda_methods): Make sure search_class has been parsed. + (emit_symbol_table): Add new arg, element_size. + +2004-09-06 Andrew Haley + + * verify.c (merge_types): Return Object for all merges of + interfaces. + * expr.c (add_type_assertion): Don't generate assertions when + source type is array of Object. + +2004-09-03 Andrew Haley + + * class.c (finish_class): Nullify TYPE_VERIFY_METHOD. + + * lang.c (java_post_options): Force flag_verify_invocations if + we're not using indirect dispatch. + + * expr.c (pop_type_0): Move test for interfaces before call to + can_widen_reference_to(). + (build_signature_for_libgcj): Remove generation of canonical array + type. + (add_type_assertion): Canonicalize both arrays. + Don't assert that type X can be assigned to Object. + Don't assert that type X an be assigned to type X. + Don't assert that Object can be assigned to type X. + (can_widen_reference_to): Warn whenever we generate an assertion. + (process_jvm_instruction): Use throwable_type_node for the type of + an exception class. + +2004-09-01 Andrew Haley + + * decl.c (java_init_decl_processing): Change + verify_identifier_node to "__verify". + * expr.c (add_type_assertion): Use verify_identifier_node for name. + * java-tree.h (verify_identifier_node): Change to "__verify". + + * expr.c (build_signature_for_libgcj): New function. + (add_type_assertion): Use it to construct signatures for + source_type and target_type. + +2004-08-27 Andrew Haley + + * java-tree.h (enum java_tree_index): Add JTI_VERIFY_IDENTIFIER_NODE. + (verify_identifier_node): New. + (TYPE_VERIFY_METHOD): New. + (struct type_assertion): New type. + * expr.c (type_assertion_eq): New function. + (type_assertion_hash): New function. + (add_type_assertion): New function. + (can_widen_reference_to): Call add_type_assertion(). + * decl.c (java_init_decl_processing): Add verify_identifier_node. + * class.c (make_class_data): Initialize TYPE_VERIFY_METHOD (type). + (finish_class): Output TYPE_VERIFY_METHOD (type). + + * decl.c (end_java_method): Nullify unused fields. + +2004-08-17 Andrew Haley + + * verify.c (defer_merging): Quieten. + * jcf-parse.c (load_class): Only try to open a class file if it's + java.lang.Object or if it's part of the current compilation. + Check that the class we just tried to load is the class we just + loaded. Quieten. + (java_parse_file): Set flag_verify_invocations off if we're + compiling from .class. + (parse_zip_file_entries): Abort if we try to read a dummy class. + * expr.c (can_widen_reference_to): Quieten. + (build_invokevirtual): Abort if we try to invokevirtual an + interface. + (expand_invoke): Don't build a non-interface call to an interface. + (build_instanceof): Don't do premature optimization if + flag_verify_invocations is not set. + * class.c (set_super_info): Disable code that inherits TYPE_DUMMY + from superclass. + (build_static_field_ref): Add correct type conversion for + field_address. + (add_miranda_methods): Disable generation of Miranda methods for + dummy classes. + (layout_class_method): Don't complain about non-static method + overrides static method with dummy classes. + +2004-08-13 Tom Tromey + + * class.c (build_static_field_ref): Re-enable atable lookups for + static fields. + + * parse.y (strip_out_static_field_access_decl): Indentation fix. + +2004-08-11 Tom Tromey + + * gcj.texi (libgcj Runtime Properties): Document new properties. + +2004-08-06 Andrew Haley + + * jcf-parse.c (load_class): Check that we really have loaded the + class we're looking for. + +2004-07-19 Andrew Haley + + * verify.c (verify_jvm_instructions): Comment change only. + + * typeck.c (build_java_array_type): Add size field to array name. + + * java-tree.h (LOCAL_SLOT_P): New. + (update_aliases): Add PC argument. + (pushdecl_function_level): New function. + + * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL, + MODIFY_EXPR, and SAVE_EXPR. + (java_gimplify_modify_expr): New function. + + * expr.c (push_type_0): Call find_stack_slot() to create temporary. + (expand_iinc): Pass PC to update_aliases(). + (STORE_INTERNAL): Likewise. + (process_jvm_instruction): Likewise. + + * decl.c (base_decl_map): New variable. + (uniq): New variable. + (update_aliases): Rewrite with more thorough checking. + (debug_variable_p): New function. + (push_jvm_slot): Don't initialize local variable. Don't pushdecl. + (check_local_named_variable): Delete whole function. + (initialize_local_variable): New function. + (check_local_unnamed_variable): Add checks and comments. + (find_local_variable): Rewrite. + (java_replace_reference): New function. + (function_binding_level): New variable. + (pushdecl_function_level): New function. + (maybe_pushlevels): Set DECL_LOCAL_END_PC. + (maybe_pushlevels): Call pushdecl() on each of the new decls. + (start_java_method): Reset uniq. Create base_decl_map. Set + function_binding_level. + (end_java_method): Null unused fields to save memory. + +2004-06-29 Andrew Haley + + * except.c (expand_start_java_handler): Push a new binding level. + Don't build a TRY_CATCH_EXPR now, we'll do it later. Call + register_exception_range() to register where we'll do it. + (expand_end_java_handler): Remove old bogus code. Replace with + new logic that simply builds TRY_CATCH_EXPRs and inserts them at + the top of the expression we're curently building. + (maybe_end_try): Delete. + * decl.c (binding_level.exception_range): New field. + (clear_binding_level): Add field exception_range. Reformat. + (poplevel): Call expand_end_java_handler(). + (poplevel): Call java_add_stmt only if functionbody is false. + (maybe_poplevels): Don't call maybe_end_try() from here. + (end_java_method): Clear no longer used trees in function decl. + (register_exception_range): New function. + * java-tree.h (register_exception_range, struct eh_range): Declare. + +2004-06-22 Andrew Haley + + * class.c (gen_indirect_dispatch_tables): Set the DECL_OWNER of + the otable. + * check-init.c (get_variable_decl): Teach check-init about + FIELD_DECLs addressed via the otable. + * jcf-parse.c (load_class): Check CLASS_LOADED_P, not + CLASS_PARSED_P. + +2004-05-28 Andrew Haley + + * jcf-parse.c (load_class): Don't try to read a class that we've + already read. + + * expr.c (build_invokeinterface): Use the old-fashioned way of + doing indirect dispatch: look up interfaces by name. + * java-tree.h (enum java_tree_index): Add + JTI_SOFT_LOOKUPINTERFACEMETHODBYNAME_NODE + * decl.c (java_init_decl_processing): Add + soft_lookupinterfacemethodbyname_node. + + * gjavah.c (print_method_info): Final methods have vtable entries, + so gjavah needs to output them. + * class.c (layout_class_method): Generate vtable entries for final + methods. + * parse.y (invocation_mode): Use INVOKE_VIRTUAL for indirect + dispatch, even if a method is final. + +2004-05-25 Andrew Haley + + * class.c (build_symbol_entry): Convert the names of constructors + to init_identifier_node when generating an entry for the indirect + dispatch table. + + * expr.c (build_known_method_ref): Generate indirect calls for + all methods marked DECL_EXTERNAL or TREE_PUBLIC. + +2004-05-24 Andrew Haley + + * expr.c (build_known_method_ref): Make sure ARRAY_REF access to + atable element is of the right type. + + * class.c (build_static_field_ref): Cast pointer to correct type + for field. + +2004-04-20 Bryce McKinlay + + * Merged with HEAD as of 20040514. Diff against + gcj-abi-2-merge-20040514. + +2004-04-16 Andrew Haley + + * verify.c (check_pending_block): Disable subroutine checks. + (defer_merging): New function. + (merge_types): If types are dummy, use defer_merging to combine them. + (verify_jvm_instructions): If invocation is invokeinterface and + target is dummy, assume target really is an interface. + + * parse.y (patch_invoke): Break out call to java_create_object. + + * lang.c (flag_verify_invocations): New. + + * jcf-parse.c (load_class): If we've already failed to load a + class, don't try again. + (load_class): If we can't find a .class file, don't fail, but emit + a warning. + (parse_class_file): Don't act on dummy methods. + + * java-tree.h (flag_verify_invocations): New. + (TYPE_DUMMY): New. + (lang_type.dummy_class): New field. + (java_create_object): New function. + (METHOD_DUMMY): New. + + * expr.c (build_field_ref): Widen field offset. + (pop_type_0): If the type in stack_type_map is a TREE_LIST, check + that each of its elements is compatible with the one we're + popping. + (pop_type_0): Issue a warning to say that we need to generate a + runtime check. + (java_create_object): New function. + (build_field_ref): Only generate hard refs if we're not using + indirect dispatch. + (expand_java_field_op): If we're using !verify_invocations and we + see a missing field, generate a decl for it. + + (expand_invoke): If a class doesn't have the method we seek and + we're using !flag_verify_invocations, generate a decl for the + method now. + + (build_known_method_ref): Always use indirect dispatch via the + atable for static methods. + + (expand_java_NEW): Break out object creation into new function, + java_create_object. + + (can_widen_reference_to): Issue a warning to say that we need to + generate a runtime check. + + * class.c (set_super_info): Inherit TYPE_DUMMY from sureclass. + (make_method_value): Also use index for interfaces. + (make_class_data): Skip dummy field for inherited data. + Don't build method array for dummy methods. + Set size_in_byte to -1 when using inirect dispatch + Don't build a hard class ref if we don't have a hard ref to our + superclass, or if we're using inirect dispatch. + Null out dispatch tables. + + (layout_class_method): Don't complain about non-static method + overrides static method is method is artificial. + + (build_static_field_ref): Disable atable references to static + fields for the time being. + + (layout_class_methods): Check for CLASS_INTERFACE as + well as CLASS_ABSTRACT. + +2004-11-24 Steven Bosscher + + * class.c (make_class_data): Don't check flag_inline_functions. + * lang.c (flag_really_inline): Remove unused flag. + (java_handle_option): Don't set it here. Remove special handling + of flag_inline_functions for Java. + (java_init): Don't set flag_inline_trees here. Already done... + (java_post_options): ...here. Don't clear flag_inline_functions. + +2004-11-24 Steven Bosscher + + * java-gimplify.c (java_gimplify_labeled_block_expr): New function. + (java_gimplify_exit_block_expr): New function. + (java_gimplify_expr): Use them to gimplify EXIT_BLOCK_EXPR and + LABELED_BLOCK_EXPR. + * java-tree.def (LABELED_BLOCK_EXPR): Moved from tree.def. + (EXIT_BLOCK_EXPR): Likewise. + * java-tree.h (LABELED_BLOCK_LABEL): Moved from tree.h. + (LABELED_BLOCK_BODY): Likewise. + (EXIT_BLOCK_LABELED_BLOCK): Likewise. + * jcf-write.c (generate_bytecode_insns): Don't handle the unused + EXIT_BLOCK_RETURN operand. Use EXIT_BLOCK_LABELED_BLOCK instead of + TREE_OPERAND. + * lang.c (java_tree_inlining_walk_subtrees): Handle EXIT_BLOCK_EXPR. + (java_dump_tree): Use LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, and + EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND. Don't handle the + second operand of EXIT_BLOCK_EXPR. + * parse.y (find_expr_with_wfl): Use LABELED_BLOCK_BODY instead of + TREE_OPERAND. + (build_bc_statement): Use build1 to build EXIT_BLOCK_EXPR nodes. + +2004-11-23 Ben Elliston + + * xref.h (xref_flag_value): Remove. + (xref_set_data, xref_get_data): Likewise. + (xref_set_current_fp): Likewise. + (XREF_NONE): Likewise. + (XREF_GET_DATA): Likewise. + * xref.c (xref_flag_value): Remove. + (xref_set_data, xref_get_data): Likewise. + (xref_set_current_fp): Likewise. + +2004-11-23 Ben Elliston + + * gjavah.c (output_directory): Make static. + (temp_directory): Likewise. + +2004-11-15 Tom Tromey + + * decl.c (instn_ptr_type_node): Removed. + (lineNumbers_ptr_type_node): Removed. + (jint_type): Removed. + (jint_ptr_type): Removed. + +2004-11-09 Andrew Pinski + + PR java/15576 + * check-init.c (check_init): Ignore DECL_EXPR. + * expr.c (always_initialize_class_p): Reenable. + (build_class_init): Use a variable to store the decl. Also use + boolean_false_node instead of integer_zero_node. + * parse.y (attach_init_test_initialization_flags): Add a decl_expr + to the block. + +2004-11-08 Tom Tromey + + PR java/16843: + * gjavah.c (HANDLE_END_FIELD): Call print_field_info when + generating a JNI header. + (print_field_info): Handle JNI headers. + (jni_print_float): Likewise. + (jni_print_double): Likewise. + +2004-11-08 Andrew Pinski + + * decl.c (end_java_method): Remove duplicated code. + +2004-11-06 Zack Weinberg + Gerald Pfeifer + + * lex.h (HAVE_ICONV): Undefine if we do not have HAVE_ICONV_H + as well. + +2004-11-02 Bryce McKinlay + + PR java/17265 + * class.c: Reinstate 2004-08-18 patch. + (make_local_function_alias): Don't create an alias for extern (native) + functions. + +2004-10-22 Eric Botcazou + + PR java/17265 + * class.c (make_local_function_alias): Revert 2004-08-18 change. + (make_method_value): Likewise. + +2004-10-21 Andrew Haley + + PR java/18091: + * jcf-parse.c (set_source_filename): Add code to build new sfname. + +2004-10-20 Andrew Haley + + * decl.c (end_java_method): Don't expand if flag_syntax_only. + Remove duplicated code block. + +2004-10-18 Steven Bosscher + + * Make-lang.in (java/parse.o-warn, java/parse-scan.o-warn): + New rules to work around old Bison warnings. + +2004-10-17 Steven Bosscher + + * class.c (ident_subst): Always alloca buffer. + * java-opcodes.h (LAST_AND_UNUSED_JAVA_OPCODE): Add this dummy + opcode after including javaop.def. + * jcf-dump.c (CHECK_PC_IN_RANGE): Return 0 from the arm of the + conditional expression that exits, to avoid warnings. + * verify.c (CHECK_PC_IN_RANGE): Mark the __GNUC__ definition as + a user of an extension. + * win32-host.c: Move check down to have non-empty file when + WIN32 is not defined. + + * Make-lang.in (java-warn): Add STRICT_WARN. + (java/jcf-io.o-warn): Don't have Werror for this file. + * jcf-io.c (caching_stat): Add FIXME for non-POSIX scandir use. + +2004-10-16 Hans-Peter Nilsson + + * expr.c (expr_add_location): Move declaration to before all + statements. + * parse.y (java_expand_classes): Ditto. + * lex.c (java_peek_unicode): Ditto. + +2004-10-16 Ranjit Mathew + + * check-init.c: Use %<, %> and %q for quoting in diagnostics, + if possible, else convert `foo' to 'foo'. + * class.c: Likewise. + * decl.c: Likewise. + * expr.c: Likewise. + * jcf-io.c: Likewise. + * jcf-parse.c: Likewise. + * lang.c: Likewise. + * lex.c: Likewise. + * parse.h: Likewise. + +2004-10-16 Ranjit Mathew + + * parse.y (parse_warning_context): Remove ATTRIBUTE_PRINTF_2 and + rename parameter 'msg' to 'msgid' in function declaration. + (issue_warning_error_from_context): Likewise. + (yyerror): Rename parameter 'msg' to 'msgid'. + (all over): Use new quoting style for diagnostics. + +2004-10-15 Kazu Hirata + + * boehm.c, builtins.c, java-except.h, jcf-io.c, jcf-path.c, + jcf.h, lang-specs.h, lex.c, lex.h, resource.c, win32-host.c: + Update copyright. + +2004-10-14 Matt Austern + + * lang.c (java_tree_inlining_walk_subtrees): Last arg is struct + pointer_set_t* now. + +2004-10-13 Tom Tromey + + PR java/15578: + * lang.opt (--extdirs): Document. + * jvspec.c (lang_specific_driver): Recognize -encoding and + -extdirs. + +2004-10-06 Ulrich Weigand + + * parse.y (issue_warning_error_from_context): Use va_list * + instead of va_list parameter. + (parse_error_context): Update call. + (parse_warning_context): Likewise. + +2004-10-05 Zack Weinberg + + * parse.y, parse-scan.y: Add list of diagnostic messages to + insulate translation template from version of yacc/bison used + to compile the grammar. + +2004-10-05 Ranjit Mathew + + Prepare for %q, %< and %> in diagnostic message strings. + * java-tree.h (parse_error_context): remove ATTRIBUTE_PRINTF_2. + Name second parameter 'msgid'. + * parse.y: Additionally include pretty-print.h and diagnostic.h. + (issue_warning_error_from_context): Use pretty-printer functions + instead of vsprintf for constructing formatted messages. Rename + parameter 'msg' to 'msgid'. + (parse_error_context): Rename parameter 'msg' to 'msgid'. + (parse_warning_context): Likewise. + +2004-10-05 Andrew Haley + + PR java/17779 + * jcf-parse.c (parse_zip_file_entries): If a class has a + superclass and a TYPE_SIZE of zero, lay it out. + +2004-09-30 Andrew Haley + + PR java/17733 + * jcf-parse.c (compute_class_name): Rewrite. + +2004-10-01 Jan Hubicka + + * java.c (java_expand_body): Update call of tree_rest_of_compilation. + +2004-10-01 Kazu Hirata + + * lex.c: Fix a comment typo. + +2004-10-01 Kazu Hirata + + * java-tree.h: Fix a comment typo. + +2004-09-30 Per Bothner + + Simplify lexer. Implement --enable-mapped-location support. + * jcf-parse.c (parse_class_file): Use linemap_line_start. + (parse_source_file_1): Pass filename as extra parameter, so we can call + linemap_add and set input_location here, rather than in both callers. + (read_class): Pass copied filename to parse_source_file_1. + Don't initialize wfl_operator - only needed for source compilation. + (read_class, jcf_parse): Call linemap_add with LC_LEAVE. + * lex.h: Remove a bunch of debugging macros. + * lex.h (struct_java_line, struct java_error): Remove types. + (JAVA_COLUMN_DELTA): Remove - use java_lexer.next_colums instead. + (struct java_lc_s): Remove prev_col field. + (struct java_lexer): New fields next_unicode, next_columns, and + avail_unicode. New position field, and maybe token_start field. + Don't need hit_eof field - use next_unicode == -1 instead. + (JAVA_INTEGERAL_RANGE_ERROR): Rename to JAVA_RANGE_ERROR. + (JAVA_RANGE_ERROR, JAVA_FLOAT_ANGE_ERROR): Update accordingly. + * parse.h: Various changes for USE_MAPPED_LOCATION. + (EXPR_WFL_EMIT_LINE_NOTE): XXX + (BUILD_EXPR_WFL, EXPR_WFL_ADD_COL): Remove no-longer-used macros. + (struct parser_ctxt): New file_start_location field. + Remove p_line, c_line fields since we no longer save lines. + Remove elc, lineno, and current_jcf fields - no longer used. + * parse.y: Updates for USE_MAPPED_LOCATION and new lexer. + Don't use EXPR_WFL_ADD_COL since that isn't trivial with + source_location and is probably not needed anymore anyway. + Use new expr_add_Location function. + (SET_EXPR_LOCATION_FROM_TOKEN): New convenience macro. + (java_pop_parser_context): Minor cleanup. + (java_parser_context_save_global, java_parser_context_restore_global, + java_pop_parser_context): Save/restore input_location as a unit. + (issue_warning_error_from_context): If USE_MAPPED_LOCATION take + a source_location instead of a wfl context node. + (check_class_interface_creation): input_filename is not addressable. + (create_artificial_method): Calling java_parser_context_save_global + and java_parser_context_restore_global is overkill. Instead, + temporarily set input_location from class decl. + (java_layout_seen_class_methods): Set input_location from method decl. + (fix_constructors): Make more robust if no EXPR_WITH_FILE_LOCATION. + (finish_loop_body): Likewise. + * lex.c: Updates for USE_MAPPED_LOCATION. Use build_unknwon_wfl. + (java_sprint_unicode): Take a character, not index in line. + (java_sneak_uncode): Replaced by java_peek_unicode. + (java_unget_unicode): No longer used. + (java_allocate_new_line. java_store_unicode): Removed, since we + no longer remember "lines". + (java_new_lexer): Update for new data structures. + (java_read_char): Move unget_value checking to java_read_unicode. + (java_get_unicode, java_peek_unicode, java_next_unicode): New more + efficient functions that are used directly when lexing. + (java_read_unicode_collapsing_terminators): No longer needed. + (java_parse_end_comment, java_parse_escape_sequence, do_java_lex): + Re-organize to use java_peek_unicode to avoid java_unget_unicode. + (java_parse_escape_sequence): Rewrite to be simpler / more efficient. + (do_java_lex): Lots of movings around to avoid java_unget_unicode, + combine switch branches, and test for common token kinds earlier. + (java_lex_error): Rewrite. + * jv-scan.c (expand_location): New function, copied from tree.c. + (main): Set ctxp->filename instead of setting input_filename directly. + +2004-09-30 Per Bothner + + More cleanup for --enable-mapped-location. + * class.c (push_class): If USE_MAPPED_LOCATION don't set + input_location here. Instead do it in give_name_to_class. + (build_class_ref): Set DECL_ARTIFICIAL, for the sake of dwarf2out. + * expr.c (expand_byte_code): Call linemap_line_start. + * expr.c (build_expr_wfl): If USE_MAPPED_LOCATION, change final + parameters to a source_location. Don't need EXPR_WFL_FILENAME_NODE. + (expr_add_location): New function, if USE_MAPPED_LOCATION. + * class.c (maybe_layout_super_class): Adjust build_expr_wfl call + to USE_MAPPED_LOCATION case. + + * java-tree.h (JAVA_FILE_P, ZIP_FILE_P): Remove unused macros. + * jcf-parse.c (java_parse_file): Don't set input_filename. + Use IS_A_COMMAND_LINE_FILENAME_P to check for duplicate filenames. + Create a list of TRANSLATION_UNIT_DECL. + (current_file_list): Is now a TRANSLATION_UNIT_DECL chain. The + reason is so we can set a DECL_SOURCE_LOCATION for each file. + (java_parse_file): Don't set unused ZIP_FILE_P, JAVA_FILE_P.. + Create line-map LC_ENTER/LC_LEAVE entries for archive itself. + (file_start_location): New static. + (set_source_filename): Avoid extra access to input_filename macro. + Concatenate new name with class's package prefix. + (set_source_filename, give_name_to_class): Update. + (give_name_to_class): Set class's "line 0" input_location here. + (parse_class_file): Set input_location as a unit. + + * jcf-parse.c (load_class): Sanity test if missing inner class file. + +2004-09-29 Per Bothner + + * java-tree.h: Redefine some macros and add some declaration + to handle the USE_MAPPED_LOCATION case. + * parse.h (EXPR_WFL_QUALIFICATION): Use operand 1, not 2. + * java-tree.h (EXPR_WFL_FILENAME_NODE): Use operand 2, not 1. + * java-tree.def (EXPR_WITH_FILE_LOCATION): Only need two operands in + USE_MAPPED_LOCATION case, since EXPR_WFL_FILENAME_NODE is gone. + + * check-init.c (check_init): Handle USE_MAPPED_LOCATION case. + * decl.c (finish_method, java_add_stmt): Likewise. + * java-gimplify.c (java-gimplify.c): Likewise. + * jcf-write.c (generate_bytecode_insns): Likewise. + * lang.c (java_post_options): Likewise - call linemap_add. + +2004-09-29 Andrew Haley + + PR java/17007 + * parse.y (patch_binop): Don't mess with the TREE_SIDE_EFFECTS of the + result of TRUNC_MOD_EXPR. + (patch_unaryop): Likewise for CONVERT_EXPR, which may throw. + * decl.c (java_init_decl_processing): Mark + soft_lookupinterfacemethod_node and soft_instanceof_node pure. + +2004-09-28 Tom Tromey + + PR java/15710: + * class.c (add_miranda_methods): Load superinterface if not + already loaded. + +2004-09-28 Andrew Haley + + PR java/17586 + * jcf-parse.c (load_class): Don't try to read a class that we've + already read. + +2004-09-28 Andrew Haley + + * jcf-parse.c (load_class): Back out previous broken patch. + +2004-09-28 Andrew Haley + + PR java/17586 + * jcf-parse.c (load_class): Don't try to read a class that we've + already read. + Check that we really did read the right class. + +2004-09-25 Tom Tromey + + PR java/17500: + * parse.y (create_artificial_method): Use add_method_1. + +2004-09-25 Kazu Hirata + + * expr.c, jcf-dump.c, parse-scan.y, parse.y: Fix + comment typos. + * gcj.texi: Fix typos. + +2004-09-24 Tom Tromey + + PR java/15656: + * parse.y (class_instance_creation_expression): Set `$$' to NULL + in error parts of rule. + (unary_expression): Don't call error_if_numeric_overflow when $1 + is NULL. + +2004-09-24 Tom Tromey + + PR java/16789: + * parse.y (resolve_qualified_expression_name): Set + CAN_COMPLETE_NORMALLY on first call when chaining static calls. + * expr.c (force_evaluation_order): Check for empty argument list + after stripping COMPOUND_EXPR. + +2004-09-23 Andrew Haley + + PR java/16927: + * parse.y (java_complete_lhs): Call patch_string() on Operand 1 of + COND_EXPRs. + +2004-09-23 Tom Tromey + + PR java/17329: + * java-gimplify.c (java_gimplify_expr) : Ignore case + where operand is null. + +2004-09-23 Tom Tromey + + PR java/17380: + * parse.y (not_accessible_p): Allow access to protected members + even when class is not static. + +2004-09-22 Kelley Cook + + * Make-lang.in: Revert the gcc-none.o change. + +2004-09-22 Nathan Sidwell + + * parse.y (patch_anonymous_class): VEC_space returns true if there + is space. + +2004-09-21 Matt Austern + + Fix bootstrap. + * gjavah.c (free_method_name_list): Fix function definition so + it's a proper C prototype. + +2004-09-21 Tom Tromey + + PR java/17575: + * gjavah.c (free_method_name_list): New method. + (main): Call it. + +2004-09-17 Jeffrey D. Oldham + Zack Weinberg + + * java-tree.def: Use tree_code_class enumeration constants + instead of code letters. + * java-gimplify.c, jcf-write.c, lang.c, parse.y: Update for + new tree-class enumeration constants. + +2004-09-13 Tom Tromey + + PR java/17216: + * class.c (layout_class_method): Put synthetic methods into the + vtable. + +2004-09-11 Andrew Pinski + + * Make-lang.in (java/ggc-none.c): Change dependency + for ggc.h into $(GGC_H). + +2004-09-11 Mohan Embar + + * Make-lang.in (java/win32-host.o): Add dependency on + coretypes.h. + * win32-host.c: Add includes for coretypes.h, jcf.h + +2004-09-11 Mohan Embar + + * Make-lang.in (GCJH_OBJS): Change dependency from + ggc-none.o to java/ggc-none.o + (JCFDUMP_OBJS): Likewise. + (java/ggc-none.o): New target. + +2004-08-25 Nathan Sidwell + + * boehm.c (get_boehm_type_descriptor): Adjust build_int_cst calls. + * class.c (build_utf8_ref, build_static_field_ref, + make_field_value, make_method_value, get_dispatch_table, + make_class_data, emit_symbol_table, emit_catch_table): Likewise. + * constants.c (get_tag_node, build_ref_from_constant_pool, + build_constants_constructor): Likewise. + * decl.c (java_init_decl_processing): Likewise. + * expr.c (build_java_array_length_access, build_newarray, + expand_java_multianewarray, expand_java_pushc, expand_iinc, + build_java_binop, build_field_ref, expand_java_add_case, + expand_java_call, build_known_method_ref, build_invokevirtual, + build_invokeinterface, build_jni_stub): Likewise. + * java-gimplify.c (java_gimplify_new_array_init): Likewise. + * jcf-parse.c (get_constant): Likewise. + * lex.c (do_java_lex): Likewise. + * parse.y (patch_binop, patch_unaryop, patch_cast, + build_newarray_node, patch_newarray): Likewise. + * resource.c (compile_resource_data): Likewise. + * typeck.c (build_prim_array_type): Likewise. + +2004-08-24 Nathan Sidwell + + * decl.c (java_init_decl_processing): Adjust + initialize_sizetypes call. + +2004-08-23 Nathan Sidwell + + * jv-scan.c (fancy_abort): Add. + +2004-08-20 Nathan Sidwell + + * expr.c (build_java_arrayaccess): Use convert to change + len's type. + +2004-08-19 Bryce McKinlay + + * class.c (make_local_function_alias): Allocate extra space for 'L' + in name buffer. Reported by Thomas Neumann. + +2004-08-19 Nathan Sidwell + + * parse.h (JAVA_RADIX10_FLAG): Rename to ... + (JAVA_NOT_RADIX10_FLAG): ... here. Invert meaning. + * lex.c (do_java_lex): Adjust. + (error_if_numeric_overflow): Likewise. + +2004-08-18 Andrew Pinski + + * class.c (make_local_function_alias): Only make a new decl if we + support alias attribute on all decls. + +2004-08-18 Bryce McKinlay + + * class.c (make_local_function_alias): New function. Create local + alias for public method DECL. + (make_method_value): Use make_local_function_alias. + * parse.y (craft_constructor): Don't special-case anonymous classes. + Always set ctor_name to init_identifier_node. + (lookup_method_invoke): Call layout_class_method when creating + anonymous class constructor. + +2004-08-18 Richard Henderson + + * java-gimplify.c (java_gimplify_expr): Move '2' handling into + default case. Treat '<' similarly. Update for + is_gimple_formal_tmp_var name change. + +2004-08-17 Andrew Haley + + * lang.c (lang_printable_name): Obey verbose flag. + * parse.y (constructor_circularity_msg): Set VERBOSE arg for + lang_printable_name(). + (verify_constructor_circularity, get_printable_method_name, + check_abstract_method_definitions, java_check_regular_methods, + java_check_abstract_methods, check_inner_class_access, + fix_constructors, patch_method_invocation, patch_return): + Likewise. + * expr.c (pop_type_0): Likewise. + + * java-tree.h (lang_printable_name_wls): Delete. + +2004-08-16 Tom Tromey + + PR java/8473: + * parse.y (primary): Changed for initialized and uninitialized + array creations. + (array_access): Handle array_creation_initialized. + (array_creation_expression): Split into + array_creation_initialized and array_creation_uninitialized. + +2004-08-16 Andrew Haley + + * jcf-write.c (find_constant_index): Canonicalize NaNs when + generating bytecode. + +2004-08-16 Elliot Lee + + PR java/9677 + * jcf-parse.c (java_parse_file): Handle filenames with embedded + spaces, and quoted filelists. + +2004-08-15 Nathan Sidwell + + * boehm.c (get_boehm_type_descriptor): Use build_int_cst. + * class.c (build_utf8_ref, build_static_field_ref, + make_field_value, make_method_value, get_dispatch_table, + make_class_data, emit_symbol_table, emit_catch_table): Likewise. + * constants.c (get_tag_node, build_ref_from_constant_pool, + build_constants_constructor): Likewise. + * decl.c (java_init_decl_processing): Likewise. + * expr.c (build_java_array_length_access, build_newarray, + expand_java_multianewarray, expand_java_pushc, expand_iinc, + build_java_binop, build_field_ref, expand_java_add_case, + expand_java_call, build_known_method_ref, build_invokevirtual, + build_invokeinterface, build_jni_stub): Likewise. + * java-gimplify.c (java_gimplify_new_array_init): Likewise. + * jcf-parse.c (get_constant): Likewise. + * lex.c (do_java_lex): Likewise. + * parse.y (patch_binop, patch_unaryop, patch_cast, + build_null_of_type, patch_newarray): Likewise. + * resource.c (compile_resource_data): Likewise. + * typeck.c (build_prim_array_type): Likewise. + +2004-08-10 Bryce McKinlay + + * java-gimplify.c (java_gimplify_new_array_init): Use create_tmp_var. + Don't create BLOCK here or call java_gimplify_block. + +2004-08-09 H.J. Lu + + * java-tree.h (flag_deprecated): Removed. + * lang.opt (Wdeprecated): Use existing Var(warn_deprecated). + * parse.y (check_deprecation): Check warn_deprecated instead of + flag_deprecated. + +2004-08-06 Kelley Cook + + * lang.c (flag_emit_class_files, flag_filelist_file, flag_redundant, + flag_use_divide_subroutine, flag_use_boehm_gc, flag_store_check, + flag_hash_synchronization, flag_assert, flag_jni, flag_newer, + flag_check_references, flag_extraneous_semicolon, flag_deprecated, + flag_force_classes_archive_check, flag_optimize_sci, + flag_indirect_dispatch): Remove explicit declarations. + * lang.opt: Add implicit declare/define/assign. Remove obsolete + final comment. + +2004-08-05 Michael Chastain + + PR bootstrap/14893 + * Make-lang.in (java.install-man): Install from either build + tree or source tree, whichever has the file first. + +2004-08-05 Nathan Sidwell + + * jcf-parse.c (get_constant): Adjust force_fit_type call. + * lex.h (SET_LVAL_NODE_TYPE): Remove. + * lex.c (java_perform_atof): Use SET_LVAL_NODE directly. + (do_java_lex): Likewise. Adjust force_fit_type call. + +2004-08-04 Roger Sayle + Andrew Haley + + * typeck.c (convert_ieee_real_to_integer): Call fold on the range + checking trees as they're being built. + (convert): Call convert_ieee_real_to_integer if we're + converting a constant, even if we're writing a class file. + +2004-08-02 Bryce McKinlay + + PR java/16701 + * parse.y (fold_constant_for_init): Call resolve_field_access with + correct current_class context. + +2004-08-01 Roger Sayle + + * decl.c (update_aliases, initialize_local_variable): Replace calls + to build with calls to buildN. + * java-gimplify.c (java_gimplify_modify_expr): Likewise. + * java-tree.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Likewise. + * parse.h (BUILD_THROW): Likewise. + * parse.y (switch_expression, synchronized_statement, + catch_clause_parameter, array_creation_expression, + conditional_expression, make_qualified_name, + resolve_qualified_expression_name, patch_method_invocation, + patch_invoke, build_method_invocation, build_new_invocation, + build_assignment, patch_assignment, build_binop, patch_binop, + build_string_concatenation, build_incdec, patch_unaryop, + patch_cast, build_array_ref, build_newarray_node, patch_newarray, + patch_return, build_if_else_statement, build_labeled_block, + build_new_loop, build_loop_body, build_bc_statement, + build_assertion, encapsulate_with_try_catch, build_try_statement, + build_try_finally_statement, patch_synchronized_statement, + emit_test_initialization): Likewise, replace build with buildN. + +2004-07-28 Eric Christopher + + * lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete. + (java_unsafe_for_reeval): Ditto. + +2004-07-26 + + * parse.y (build_super_invocation): Adjust declaration order to + avoid declaration after statement. + +2004-07-25 Bernardo Innocenti + + * decl.c: Rename all identifiers named `class' to `cl'. + +2004-07-25 Richard Henderson + + * decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P. + +2004-07-23 Mike Stump + + * boehm.c (set_bit): Improve type safety wrt unsignedness. + * gjavah.c (throwable_p, decode_signature_piece, + print_full_cxx_name, print_include, add_namelet, add_class_decl, + process_file): Likewise. + * jcf-dump.c (main): Likewise. + * jcf-io.c (read_zip_member): Likewise. + * jcf-parse.c (HANDLE_CONSTANT_Utf8, get_constant, + give_name_to_class, get_class_constant): Likewise. + * jcf-write.c (find_constant_wide, push_long_const, + generate_classfile): Likewise. + * lex.c (java_new_lexer, java_read_char, cxx_keyword_p): Likewise. + * parse.y (read_import_dir): Likewise. + * typeck.c (parse_signature_type): Likewise. + * verify.c (verify_jvm_instructions): Likewise. + * zextract.c (find_zip_file_start, read_zip_archive): Likewise. + +2004-07-23 Thomas Fitzsimmons + + * Make-lang.in: Replace rmic and rmiregistry references with + grmic and grmiregistry. + * gcj.texi: Likewise. + +2004-07-20 Andrew Haley + + PR java/16431. + * verify.c (verify_jvm_instructions): Comment change only. + + * typeck.c (build_java_array_type): Add size field to array name. + + * java-tree.h (LOCAL_SLOT_P): New. + (update_aliases): Add PC argument. + (pushdecl_function_level): New function. + + * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL, + MODIFY_EXPR, and SAVE_EXPR. + (java_gimplify_modify_expr): New function. + + * expr.c (push_type_0): Call find_stack_slot() to create temporary. + (expand_iinc): Pass PC to update_aliases(). + (STORE_INTERNAL): Likewise. + (process_jvm_instruction): Likewise. + + * decl.c (base_decl_map): New variable. + (uniq): New variable. + (update_aliases): Rewrite with more thorough checking. + (debug_variable_p): New function. + (push_jvm_slot): Don't initialize local variable. Don't pushdecl. + (check_local_named_variable): Delete whole function. + (initialize_local_variable): New function. + (check_local_unnamed_variable): Add checks and comments. + (find_local_variable): Rewrite. + (java_replace_reference): New function. + (function_binding_level): New variable. + (pushdecl_function_level): New function. + (maybe_pushlevels): Set DECL_LOCAL_END_PC. + (maybe_pushlevels): Call pushdecl() on each of the new decls. + (start_java_method): Reset uniq. Create base_decl_map. Set + function_binding_level. + (end_java_method): Null unused fields to save memory. + +2004-07-20 Nathan Sidwell + + * class.c (add_interface_do): Remove. + (set_super_info, interface_of_p, maybe_add_interface, + add_interface, make_class_data, layout_class, + add_miranda_methods): Adjust BINFO accessors and addition. + * expr.c (can_widen_reference_to, lookup_field): Adjust BINFO + accessors. + * jcf-write.c (generate_classfile): Likewise. + * parse.y (patch_anonymous_class, check_inner_circular_reference, + check_circular_reference, java_complete_class, + check_abstract_method_definitions, + java_check_abstract_method_definitions, + check_interface_throws_clauses, java_check_abstract_methods, + lookup_java_interface_method2, + find_applicable_accessible_methods_list): Adjust BINFO accessors + and addition. + * typeck.c (find_method_in_interfaces): Adjust BINFO accessors. + +2004-07-18 Roger Sayle + + * builtins.c (max_builtin, min_builtin, + java_build_function_call_expr): Replace calls to build with buildN. + * class.c (build_class_ref, build_static_field_ref, + get_dispatch_table, make_class_data, layout_class_method): Likewise. + * constants.c (build_ref_from_constant_pool): Likewise. + * decl.c (update_aliases, push_jvm_slot, poplevel, finish_method, + add_stmt_to_compound): Likewise. + * except.c (build_exception_object_ref, expand_end_java_handler): + Likewise. + * java-gimplify.c (java_gimplify_case_expr, + java_gimplify_default_expr, java_gimplify_block, + java_gimplify_new_array_init, java_gimplify_try_expr): Likewise. + * jcf-write.c (generate_bytecode_insns): Likewise. + * typeck.c (convert_ieee_real_to_integer): Likewise. + +2004-07-17 Joseph S. Myers + + * java-tree.h (builtin_function): Declare. + +2004-07-16 Steven Bosscher + + * parse.y (java_complete_expand_methods, java_expand_classes): Don't + abuse restore_line_number_status. + +2004-07-15 Frank Ch. Eigler + + g++/15861 + * jcf-parse.c (java_emit_static_constructor): Specify default + priority. + +2004-07-13 Per Bothner + + * java-tree.h (all_class_filename): Remove useless macro. + (enum java_tree_index): Remove JTI_ALL_CLASS_FILENAME constant. + (BUILD_FILENAME_IDENTIFIER_NODE): Remove useless macro. + * parse.y (java_parser_context_restore_global): Replace + BUILD_FILENAME_IDENTIFIER_NODE by plain get_identifier. + * jcf-parse.c (read_class, java_parse_file): Likewise. + +2004-07-12 Bryce McKinlay + + PR java/16474 + gjavah.c (print_field_info): Emit constant only if field is static. + +2004-07-11 Roger Sayle + + * expr.c (java_truthvalue_conversion, flush_quick_stack, + java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr, + build_java_ret, build_java_throw_out_of_bounds_exception, + build_java_array_length_access, java_check_reference, + build_java_arrayaccess, build_java_arraystore_check, build_newarray, + build_anewarray, expand_java_multianewarray, expand_java_arraystore, + expand_java_arrayload, build_java_monitor, expand_java_return, + expand_load_internal, expand_java_NEW, build_get_class, + build_instanceof, expand_java_CHECKCAST, expand_iinc, + build_java_soft_divmod, build_java_binop, build_field_ref, + expand_compare, expand_java_goto, expand_java_switch, + expand_java_add_case, build_class_init, build_known_method_ref, + invoke_build_dtable, build_invokevirtual, build_invokeinterface, + expand_invoke, build_jni_stub, expand_java_field_op, + java_expand_expr, expand_byte_code, STORE_INTERNAL, + force_evaluation_order, emit_init_test_initialization): Convert + calls to "build" into calls to the prefered "buildN" functions. + +2004-07-11 Joseph S. Myers + + * java-tree.h (set_block): Remove. + * lang.c (java_clear_binding_stack): New. + (LANG_HOOKS_CLEAR_BINDING_STACK): Define. + * decl.c (struct binding_level): Remove this_block. + (clear_binding_level): Likewise. + (poplevel): Don't handle this_block. + (set_block): Remove. + +2004-07-10 Bryce McKinlay + + * class.c (common_enclosing_context_p): Remove statement with no + side-effects. + +2004-07-09 Bryce McKinlay + + PR java/8618 + * parse.y (create_anonymous_class): Remove 'location' argument. Use + the WFL from TYPE_NAME to get line number for the decl. Fix comment. + (craft_constructor): Inherit access flags for implicit constructor + from the enclosing class. + (create_class): Fix comment typo. + (resolve_qualified_expression_name): Pass type of qualifier to + not_accessible_p, not the type in which target field was found. + (not_accessible_p): Handle inner classes. Expand protected + qualifier-subtype check to enclosing instances, but don't apply this + check to static members. Allow protected access to inner classes + of a subtype. Allow private access within common enclosing context. + (build_super_invocation): Get WFL line number info from current + class decl. + (build_incomplete_class_ref): Update for new create_anonymous_class + signature. + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Use + common_enclosing_instance_p. + * class.c (common_enclosing_context_p): New. Determine if types + share a common enclosing context, even across static contexts. + (common_enclosing_instance_p): Renamed from + common_enclosing_context_p. Determines if types share a common + non-static enclosing instance. + * java-tree.h (common_enclosing_instance_p): Declare. + * jcf-write.c (get_method_access_flags): New. Surpress private flag + for inner class constructors. + (generate_classfile): Use get_method_access_flags. + +2004-07-09 Bryce McKinlay + + * class.c (interface_of_p): Check for null TYPE_BINFO. + +2004-07-09 Nathan Sidwell + + * class.c (make_class): Do not create binfo here. + (set_super_info): Create it here. + * java-tree.h (CLASS_HAS_SUPER): Cope with lack of a binfo. + +2004-07-08 Richard Henderson + + * expr.c (case_identity, get_primitive_array_vtable, + java_expand_expr, emit_init_test_initialization): Remove. + * java-tree.h (java_expand_expr): Remove. + * lang.c (LANG_HOOKS_EXPAND_EXPR): Remove. + +2004-07-07 Per Bothner + + * class.c (build_static_field_ref): Add a NOP_EXPR; otherwise we + get internal error due to mismatched types. + + * gcj.texi (Invoking gij): Document new -verbose:class flag. + + * gcj.texi (Linking): New node. Document -lgij usage. + +2004-07-07 Nathan Sidwell + + * java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros. + (TYPE_NVIRTUALS, TYPE_VTABLE): Likewise. + * java/class.c (set_super_info, class_depth, interface_of_p, + maybe_add_interface, add_interface, make_class_data, + layout_class, add_miranda_methods): Adjust BINFO macros. + * expr.c (can_widen_reference_to, lookup_field): Likewise. + * jcf-write.c (generate_classfile): Likewise. + * parse.y (patch_anonymous_class, + check_inner_circular_reference, check_circular_reference, + java_complete_class, check_abstract_method_definitions, + java_check_abstract_method_definitions, + check_interface_throws_clauses, java_check_abstract_methods, + lookup_java_interface_method2, + find_applicable_accessible_methods_list): Likewise. + * typeck.c (find_method_in_interface): Likewise. + * verify.c (merge_types): Likewise. + +2004-07-06 Nathan Sidwell + + * java-tree.h (CLASS_HAS_SUPER_FLAG): Use BINFO_FLAG_1. + * class.c (add_interface_do): Use BINFO_VIRTUAL_P. + +2004-07-05 Nathan Sidwell + + * class.c (make_class): Use make_tree_binfo. + (set_super_info, add_interface_do): Likewise. + * java-tree.h (CLASS_HAS_SUPER_FLAG): Expect a BINFO. + +2004-07-04 Ranjit Mathew + + * verify.c: Correct array element access formatting thinko. + +2004-07-04 Ranjit Mathew + + * verify.c: Insert a short blurb at the start referring to the JVMS. + (merge_type_state): Remove redundant nested if statement. + (verify_jvm_instructions): Ensure current_subr is initialised to + NULL_TREE. + Minor formatting fixes all over the place. + +2004-07-02 Richard Henderson + + * jcf-write.c (generate_bytecode_insns ): Rewrite. + +2004-07-01 Richard Henderson + + * class.c (registerClass_libfunc): Remove. + (init_class_processing): Don't set it. + (emit_register_classes): Take list_p parameter. Fill it in + with _Jv_RegisterClass calls. + * decl.c (java_init_decl_processing): Don't call + init_resource_processing. + * jcf-parse.c (java_emit_static_constructor): New. + (java_parse_file): Call it. + * resource.c (registerResource_libfunc): Remove. + (init_resource_processing): Remove. + (write_resource_constructor): Take list_p parameter. Fill it in + with _Jv_RegisterResource calls. + * java-tree.h: Update prototypes. + +2004-06-29 Bryce McKinlay + + PR java/1262 + * class.c (layout_class_method): Do not override package-private + method if its in a different package. + (split_qualified_name): Move here from parse.y. Rename from + breakdown_qualified. Add comment. + (in_same_package): Move here from parse.y. Add comment. + * java-tree.h (break_down_qualified, in_same_package): Declare. + (in_same_package): Likewise. + * parse.y (breakdown_qualified, in_same_package): Moved to class.c. + Callers updated. + +2004-06-29 Andrew Haley + + * except.c (expand_start_java_handler): Push a new binding level. + Don't build a TRY_CATCH_EXPR now, we'll do it later. Call + register_exception_range() to register where we'll do it. + (expand_end_java_handler): Remove old bogus code. Replace with + new logic that simply builds TRY_CATCH_EXPRs and inserts them at + the top of the expression we're curently building. + (maybe_end_try): Delete. + * decl.c (binding_level.exception_range): New field. + (clear_binding_level): Add field exception_range. Reformat. + (poplevel): Call expand_end_java_handler(). + (poplevel): Call java_add_stmt only if functionbody is false. + (maybe_poplevels): Don't call maybe_end_try() from here. + (end_java_method): Clear no longer used trees in function decl. + (register_exception_range): New function. + * java-tree.h (register_exception_range, struct eh_range): Declare. + +2004-06-28 Bryce McKinlay + + * jcf-write.c (get_classfile_modifiers): Formatting fixes. + +2004-06-27 Ranjit Mathew + + Formatting fixes. + * expr.c (class_has_finalize_method): Fix method name indentation. + (expand_java_call): Remove K&R style parameter declaration. + (expand_invoke): Fix statement indentation. + (expand_java_field_op): Likewise. + * parse-scan.y: Fix typo. + (reset_report): Fix method name indentation. + * parse.y (unresolved_type_p, build_expr_block): Remove extra blank + line. Fix typos. + * verify.c (verify_jvm_instructions): Document parameters, insert + page break. + * lang.c (lang_init_source): Fix method name indentation. + * class.c (common_enclosing_context_p): Likewise. + (emit_symbol_table): Fix parameter list indentation. + * decl.c (add_stmt_to_compound, java_add_stmt): Remove K&R style + parameter declaration. + * constants.c: Fix copyright notice indentation. + * typeck.c (find_method_in_superclasses): Fix parameter list + indentation. + (find_method_in_interfaces): Likewise. + * zextract.c (makelong): Fix method name indentation. + +2004-06-26 Bryce McKinlay + + PR java/15715. + * parse.y (create_interface): Set correct access modifiers for + interfaces. + * jcf-write.c (get_classfile_modifiers): New function. + (generate_classfile): Use get_classfile_modifiers, not + get_access_flags. + +2004-06-26 Bryce McKinlay + + * parse.y (register_incomplete_type): Set JDEP_ENCLOSING for "super" + dependency to current parser context, not NULL_TREE, for top-level + classes. + (jdep_resolve_class): Enable member access check for all inner + class dependencies. + +2004-06-26 Bryce McKinlay + + * parse.y (qualify_and_find): Pass type decl, not identifier, to + load_class. + +2004-06-26 Bryce McKinlay + + PR java/15734 + * expr.c (expand_java_field_op): Ensure that target class for static + field access has been loaded. + +2004-06-26 Bryce McKinlay + Ranjit Mathew + + PR java/1207, java/16178 + * jcf-parse.c (load_class): Return immediately if passed a type decl + where CLASS_FROM_SOURCE_P is set. Remove FIXME. + * parse.y (do_resolve_class): Remove checks for CLASS_FROM_SOURCE_P + before calling load_class. + (qualify_and_find): Likewise. + (find_in_imports_on_demand): Likewise. + (find_applicable_accessible_methods_list): Likewise. + +2004-06-24 Bryce McKinlay + + * parse.y (java_layout_seen_class_methods): Don't call load_class + on class defined by source parser. + +2004-06-23 Bryce McKinlay + + * parse.y (set_nested_class_simple_name_value): Removed. + (java_complete_expand_class): Remove calls to + set_nested_class_simple_name_value. + +2004-06-22 Andrew Haley + Ranjit Mathew + + Fixes PR java/16113. + * decl.c (force_poplevels): Remove call to expand_end_bindings. + +2004-06-22 Ranjit Mathew + + * parse.y (create_class): Correct diagnostic message about + java.lang.Object extending anything else. + +2004-06-21 Richard Kenner + + * class.c (build_class_ref): Add new operand for COMPONENT_REF. + (build_static_field_ref): Likewise and add new operands for ARRAY_REF. + * constants.c (build_ref_from_constant_pool): Likewise. + * expr.c (build_java_array_length_access): Likewise. + (build_get_class, build_field_ref, build_known_method_ref): Likewise. + (invoke_build_dtable, build_invokevirtual): Likewise. + (build_invokeinterface, java_expand_expr): Likewise. + (emit_init_test_initialization): Likewise. + * java-gimplify.c (java_gimplify_new_array_init): Likewise. + * parse.y (make_qualifed_name, build_array_ref): Likewise. + +2004-06-21 Andrew Haley + + * java-gimplify.c (java_gimplify_block): set TREE_USED on the new + block. + +2004-06-21 Joseph S. Myers + + * jcf.h (struct JCF): Change java_source, right_zip and finished + to unsigned int. + * lex.h (struct java_lexer): Change hit_eof, read_anything, + byte_swap and use_fallback to unsigned int. + * parse.h (struct _jdep): Change flag0 to unsigned int. + +2004-06-17 Ranjit Mathew + + Fixes PR java/13948 + * parse.y (java_layout_seen_class_methods): Ensure class is loaded + before trying to lay out its methods. + * jcf-parse.c (read_class): Track parsed files using canonical paths + obtained via lrealpath from libiberty. + (java_parse_file): Likewise. + (parse_source_file_1): Rename formal parameter to reflect its + modified purpose. Minor formatting fix. + +2004-06-15 Paolo Bonzini + + * class.c (emit_register_classes): Make the function uninlinable, + do not set current_function_cannot_inline. + * resource.c (write_resource_constructor): Do not reset + flag_inline_functions around rest_of_compilation. + +2004-06-08 Andrew Pinski + + PR java/15769 + * expr.c (java_truthvalue_conversion): Handle + UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR, + ORDERED_EXPR, and UNORDERED_EXPR as comparison operators, + i.e. return the expression. + +2004-06-03 Mark G. Adams + + * gjavah.c: Include version.h + +2004-05-31 Bryce McKinlay + + * jcf-write.c (generate_bytecode_conditional): Correct handling + of unordered conditionals. Add comment. + +2004-05-29 Ranjit Mathew + Per Bothner + + * java-tree.h (DECL_LOCAL_FINAL_IUD): New macro to test if a + local variable was initialised upon declaration. + * parse.y (declare_local_variables): Set DECL_LOCAL_FINAL_IUD if + variable was final and initialised upon declaration. + * check-init.c (check_final_reassigned): Give error only if a blank + final is not definitely unassigned or if an initialised final is + reassigned. + (check_bool_init): Respect JLS2 16.1.7 requirements for boolean + assignment expressions. Remove case MODIFY_EXPR, label do_default. + (check_init): Perform initialised-variable-removing-optimisation + only on non-final local variables. + +2004-05-28 Bryce McKinlay + + * jcf-write.c (generate_bytecode_conditional): Handle binops + UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, + and LTGT_EXPR. + (generate_bytecode_insns): Likewise. + +2004-05-28 Bryce McKinlay + + * check-init.c (check_init): Handle binops UNLT_EXPR, UNLE_EXPR, + UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, and LTGT_EXPR. + +2004-05-28 Bryce McKinlay + + * gcj.texi (Object allocation): Remove _Jv_AllocBytes. + (Mixing with C++): Document JvAllocBytes and RawDataManaged. + +2004-05-26 Bryce McKinlay + + * decl.c (struct binding_level): Add GTY marker. Compile + binding_depth unconditionally. + (current_binding_level, free_binding_level, global_binding_level): + Likewise. + (clear_binding_level): Unconditionally set binding_depth. + (make_binding_level): Use ggc_alloc_cleared, not xmalloc. + +2004-05-26 Bryce McKinlay + + * lex.c (java_new_lexer): Set 'encoding'. + (java_read_char): Improve error message for unrecognized characters. + * lex.h (struct java_lexer): New field 'encoding'. + +2004-05-23 Paolo Bonzini + + * Make-lang.in: Link in $(LIBCPP) instead of mkdeps.o. + +2004-05-21 Mark Wielaard + + * gjavah.c (print_stub_or_jni): Mark functions only JNIEXPORT, not + extern. + +2004-05-19 Paolo Bonzini + + * typeck.c: Remove non-printable character 160. + +2004-05-17 Ranjit Mathew + + * check-init.c: Correct minor typos. + +2004-05-13 Diego Novillo + + * Make-lang.in, expr.c, java-gimplify.c: Rename + tree-simple.[ch] to tree-gimple.[ch]. + +2004-05-14 Ranjit Mathew + + * java-gimplify.c (java_gimplify_expr): Correct minor typos. + +2004-05-13 Diego Novillo + + Merge from tree-ssa-20020619-branch. See + ChangeLog.tree-ssa for details. + + * Make-lang.in, builtins.c, check-init.c, class.c, + constants.c, decl.c, except.c, expr.c, java-except.h, + java-tree.def, java-tree.h, jcf-parse.c, jcf-write.c, + lang.c, lang.opt, parse.y, resource.c: Merged. + * java-gimplify.c: New file. + +2004-05-10 Andrew Haley + + * parse.y (create_class): Set TYPE_VFIELD. + * decl.c (java_init_decl_processing): Likewise. + + * expr.c (build_invokevirtual): Remove DECL_VINDEX offset adjustment. + * class.c (make_method_value): Replace DECL_VINDEX with call to + get_method_index(). + (get_dispatch_vector): Likewise. + (layout_class_method): Likewise. + Replace set of DECL_VINDEX with call to set_method_index(). + (set_method_index): New function. + (get_method_index): New function. + * java-tree.h (set_method_index): New function decl. + (get_method_index): New function decl. + +2004-05-10 Andrew Pinski + + * parse.y (check_pkg_class_access): Add new argument + and use it when cl is NULL to call lookup_cl on it. + (parser_check_super_interface): Do not call lookup_cl. + Pass this_decl to check_pkg_class_access and NULL + instead of lookup_cl. + (parser_check_super): Update for change in + check_pkg_class_access. + (do_resolve_class): Likewise. + (process_imports): Likewise. + (find_in_imports_on_demand): Likewise. + (resolve_qualified_expression_name): Likewise. + +2004-05-06 Ranjit Mathew + + Fixes PR java/9685, PR java/15073 + * parse.y (accessibility_string): New method. + (not_accessible_field_error): Use accessibility_string() + instead of java_accstring_lookup(). + (resolve_qualified_expression_name): Check with + check_pkg_class_access() before allowing access using + qualified names. + Fix comment typo. + Use check_pkg_class_access() instead of not_accessible_p() + for unqualified types. + (not_accessible_p): Use DECL_CONTEXT (member) instead of + REFERENCE for package-private access checking. + (patch_method_invocation): Use accessibility_string() instead + of java_accstring_lookup(). + +2004-04-30 Ranjit Mathew + + Fixes PR java/15133 + * gjavah.c (struct method_name): Add member is_native. + (overloaded_jni_method_exists_p): Match candidate method only if + it is native. + (print_method_info): Initialise is_native flag from the method's + access flags. + +2004-04-30 Roger Sayle + + * builtins.c (java_builtins): Add acos, asin, ceil and floor. + (initialize_builtins): Likewise, define acos, asin, ceil and floor. + +2004-04-22 Roger Sayle + + * resource.c (write_resource_constructor): Guard call to possibly + NULL targetm.asm_out.constructor with targetm.have_ctors_dtors. + +2004-04-19 Bryce McKinlay + + * class.c (make_class_data): Add new field aux_info. + * decl.c (java_init_decl_processing): Push type and decl for + `aux_info'. + +2004-04-15 Bryce McKinlay + + * expr.c (expand_java_NEW): Don't use size argument for + _Jv_AllocObject calls. + * parse.y (patch_invoke): Likewise. + +2004-04-12 Bryce McKinlay + + * expr.c (build_invokeinterface): Remove unused variables to + fix warnings. + +2004-04-12 Bryce McKinlay + + * class.c (get_interface_method_index): New function. Return dispatch + index for interface method. + (make_method_value): For interface methods, set index field to + iface dispatch index, not DECL_VINDEX. + * expr.c (build_invokeinterface): Use get_interface_method_index. + +2004-03-31 Richard Kenner + + * jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED. + +2004-03-31 Andrew Haley + + PR java/14104 + * jcf-io.c (opendir_in_zip): Tidy up error handling. + +2004-03-30 Zack Weinberg + + * builtins.c, expr.c, jcf.h, parse.h: Use new shorter + form of GTY markers. + +2004-03-25 Marcus Meissner + + PR java/14689: + * jcf-path.c (jcf_path_extdirs_arg): Add missing closedir. + +2004-03-23 Tom Tromey + + PR java/14315: + * jcf-write.c (make_class_file_name): Don't report if mkdir + failed with EEXIST. + +2004-03-23 Tom Tromey + + * gcj.texi (Extensions): Document GCJ_PROPERTIES. + +2004-03-20 Kazu Hirata + + * class.c, gjavah.c, lang.c: Fix comment typos. + * gcj.texi: Fix typos. + +2004-03-19 Per Bothner + + * gcj.texi (Code Generation): Document new flags and assert defaults. + + * class.c (assume_compiled_node_struct): Rename type to + class_flag_node_struct, as it is now also used for enable_assertions. + Rename assume_compiled_node typedef. Rename excludep field to value. + (find_assume_compiled_node): Rename function to find_class_flag_node. + Minor optimization - avoid needless strlen. + (add_assume_compiled): Some tweaking and optimization. + Rename and generalize to add_class_flag takem an extra parameter. + (add_assume_compled): New just calls add_class_flag. + (add_enable_assert, enable_assertions): New functions. + (enable_assert_tree): New static. + * java-tree.h (add_enable_assert, enable_assertions): New declarations. + * lang.opt (fenable-assertions, fenable-assertions=, + fdisable-assertions, fdisable-assertions=): New options. + * lang.c (java_handle_option): Handle new options. + * parse.y (build_incomplete_class_ref): Handle class$ in an inner + class in an interface - create helper class nested in outer interface. + (build_assertion): Short-circuit if enable_assertions is false. + +2004-03-18 Richard Kenner + + * java-tree.h: Changes throughout to add checking to macros + and numerous whitespace changes. + (VAR_OR_FIELD_CHECK): New macro. + * jcf-write.c (get_access_flags): Use FIELD_PUBLIC, METHOD_PUBLIC, + FIELD_FINAL, and METHOD_FINAL instead of CLASS_PUBLIC and CLASS_FINAL. + +2004-03-16 Per Bothner + + * jcf-jump.c (options): New --print-constants option. + * gcj.texi (Invoking jcf-dump): Document --print-constants. + + * jcf-dump.c (flag_print_constant_pool): Default to off. + (print_constant_terse_with_index): New helper function. + (various places): Check flag_print_constant_pool where missing. + (main): If verbose set flag_print_constant_pool. + (HANDLE_INNERCLASSES_ATTRIBUTE): Null inner class name is anonymous. + +2004-03-15 Andrew Haley + + PR java/14581 + * parse.y (java_complete_lhs): Check that final variable has an + initializer. + +2004-03-12 Andrew Haley + + PR java/14551 + * typeck.c (convert): Clear TREE_OVERFLOW after an integer + conversion. + +2004-02-29 Roger Sayle + + * jcf-parse.c (java_parse_file): Handle the case that input_filename + is NULL. + +2004-02-27 Per Bothner + + * parse.y (build_assertion): Re-do 02-25 change following Jeff Sturm + suggestion: Use build_incomplete_class_ref. + This fixes PR java/13508, java/11714. + +2004-02-27 Kazu Hirata + + * java/parse.h: Update copyright. + +2004-02-26 Andrew Haley + + PR java/14231: + * parse.y (check_interface_throws_clauses): Check for + !METHOD_INVISIBLE (iface_method). + * class.c (layout_class_methods): Check for CLASS_INTERFACE as + well as CLASS_ABSTRACT. + +2004-02-25 Per Bothner + + * parse.y (build_assertion): If we're in an inner class, create the + class$ helper routine in the outer class. + +2004-02-19 Richard Henderson + + * parse.y (switch_label): Use make_node for DEFAULT_EXPR. + +2004-02-16 Geoffrey Keating + + * Make-lang.in (java.install-man): Add extra dependencies. + +2004-02-13 Geoffrey Keating + + * Make-lang.in: Install man pages under the same names + (possibly transformed) as the program they document. + +2004-02-10 Joseph S. Myers + + * gjavah.c: Include "intl.h". + (error): New function. + (main): Call gcc_init_libintl. + (get_field_name, throwable_p, print_c_decl, print_full_cxx_name, + print_stub_or_jni, process_file, main): Use error rather than + fprintf. + (print_method_info, usage, help, version, main): Mark strings for + translation with _. Avoid splitting up sentences. Send + information messages to stdout. + * jcf-dump.c: Include "intl.h". + (main): Call gcc_init_libintl. + (process_class, usage, help, version, main, CHECK_PC_IN_RANGE): + Mark error, usage and version messages for translation with _. + Avoid splitting up sentences. + * jv-scan.c: Include "intl.h". + (fatal_error, warning): Change parameter s to msgid. Translate + messages. + (main): Call gcc_init_libintl. + (usage, help, version): Mark error, usage and version messages for + translation with _. Avoid splitting up sentences. + * jvgenmain.c: Include "intl.h". + (main): Call gcc_init_libintl. + (usage, main): Mark error messages for translation with _. + * Make-lang.in (GCJH_OBJS, JVSCAN_OBJS, JCFDUMP_OBJS, + JVGENMAIN_OBJS): Add intl.o. + (java/jcf-dump.o, java/gjavah.o, java/jv-scan.o, + java/jvgenmain.o): Update dependencies. + +2004-02-08 Per Bothner + + * parse.y (resolve_qualified_expression_name): In case of inaccessible + class don't use not_accessible_field_error, which can get confused. + +2004-02-05 Kelley Cook + + Make-lang.in (po-generated): Delete. + +2004-02-05 Kazu Hirata + + * Make-lang.in (java/decl.o, java/expr.o, java/parse.o): + Depend on target.h. + * decl.c: Include target.h. + (start_java_method): Replace PROMOTE_PROTOTYPES with + targetm.calls.promote_prototypes. + * expr.c: Include target.h. + (pop_arguments): Replace PROMOTE_PROTOTYPES with + targetm.calls.promote_prototypes. + * parse.y: Include target.h. + (start_complete_expand_method): Replace PROMOTE_PROTOTYPES + with targetm.calls.promote_prototypes. + +2004-02-04 Kazu Hirata + + * typeck.c: Update copyright. + +2004-02-02 Tom Tromey + + * decl.c (java_init_decl_processing): Remove duplicate + gnu/gcj/RawData. + +2004-01-30 Kelley Cook + + * Make-lang.in (doc/gcj.dvi): Use $(abs_docdir). + +2004-01-28 Andrew Pinski + + * expr.c (build_field_ref): Move variable + definition up. + +2004-01-28 Andrew Haley + + * expr.c (build_field_ref): Widen field offset. + +2004-01-27 Andrew Haley + + java/13273 + * parse.y (check_interface_throws_clauses): Make sure class_decl + has been loaded. + +2004-01-22 Jeff Sturm + + PR java/13733 + * parse.y (patch_assignment): Don't modify lhs_type for + reference assignments. + +2004-01-20 Kelley Cook + + * Make-lang.in: Replace $(docdir) with doc. + (java.info, java.srcinfo, java.man, java.srcman): New rules. + (java.install-man): Revamp rule. + +2004-01-20 Kelley Cook + + * Make-lang.in (JAVA_INSTALL_NAME, JAVA_TARGET_INSTALL_NAME, + GCJH_TARGET_INSTALL_NAME): Define via a immediate $(shell) + instead of deferred backquote. + +2004-01-16 Andrew Pinski + + * typeck.c (find_method_in_interfaces): Move variable + definition up. + +2004-01-16 Andrew Haley + + PR java/13273: + * typeck.c (shallow_find_method): New. + (find_method_in_superclasses): New. + (find_method_in_interfaces): New. + (lookup_do): Rewrite. + * java-tree.h (SEARCH_ONLY_INTERFACE): Delete. + + * jcf-parse.c (read_class): Save and restore output_class. + * decl.c (java_expand_body): Set output_class from fndecl. + +2004-01-15 Michael Chastain + + * class.c (gen_indirect_dispatch_tables): Fix string length + calculations. + +2004-01-15 Kelley Cook + + * Make-lang.in (parse.c, parse-scan.c): Always build in doc directory. + (java.srcextra): Copy above back to source directory if requested. + (po-generated): Delete reference to $(parsedir). + (java/parse.o, java/parse-scan.o): Delete reference to $(parsedir). + Use implicit rule. + +2004-01-14 Jan Hubicka + + * lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost + estimation. + +2004-01-09 Mark Mitchell + + * java-tree.h (java_expand_expr): Change prototype. + * expr.c (java_expand_expr): Add alt_rtl parameter. + +2004-01-09 Andrew Haley + + PR java/12755: + * parse.y (java_fix_constructors): Set output_class. + (java_reorder_fields): Likewise. + (java_layout_classes): Likewise. + (java_expand_classes): Generate indirect dispatch tables. + (java_expand_classes): Set output_class. + (java_finish_classes): Likewise. + * lang.c (java_init): Turn on always_initialize_class_p if we're + using indirect dis[atch. + (java_decl_ok_for_sibcall): Use output_class, not current_class. + (java_get_callee_fndecl): Use class local atable. + * jcf-parse.c + (always_initialize_class_p): Decl moved to java-tree.h. + (HANDLE_CLASS_INFO): Set output_class. + (read_class): Likewise. + (parse_class_file): Call gen_indirect_dispatch_tables. + (parse_zip_file_entries): Set output_class. + (java_parse_file): Set output_class. Don't emit symbol tables. + * java-tree.h (output_class): New. + Remove global declarations for otable, atable, and ctable. + (always_initialize_class_p): moved here from decl.c. + (DECL_OWNER): New. + (TYPE_ATABLE_METHODS, TYPE_ATABLE_SYMS_DECL, TYPE_ATABLE_DECL, + TYPE_OTABLE_METHODS, TYPE_OTABLE_SYMS_DECL, TYPE_OTABLE_DECL, + TYPE_CTABLE_DECL, TYPE_CATCH_CLASSES): New. + (struct lang_type): Add otable_methods, otable_decl, + otable_syms_decl, atable_methods, atable_decl, atable_syms_decl, + ctable_decl, catch_classes, type_to_runtime_map. + * expr.c (build_field_ref): Make otable, atable, and ctable class + local rather than global. + (build_known_method_ref): Likewise. + (build_invokeinterface): Likewise. + (java_expand_expr): Pass runtime type (rather than actual type) to + expand_start_catch. + * except.c (prepare_eh_table_type): Create TYPE_TO_RUNTIME_MAP for + this class. Look up each class in that map to delete duplicates. + (expand_end_java_handler): Pass runtime type (rather than actual + type) to expand_start_catch. + * decl.c: (always_initialize_class_p): Decl moved to java-tree.h. + (do_nothing): New. + (java_init_decl_processing): Rearrange things. Remove global + declarations of otable, atable, and ctable. + (java_init_decl_processing): Make lang_eh_runtime_type do_nothing. + (java_expand_body): Set output_class. + * constants.c (build_constant_data_ref): Use output_class, not + current_class. + (alloc_name_constant): Likewise. + * class.c (gen_indirect_dispatch_tables): New. + (build_class_ref): Generate hard reference to superclass, even if + using indirect dispatch. + (build_static_field_ref): Use class local atable. + (make_class_data): Generate hard reference to superclass, even if + using indirect dispatch. + Generate symbolic references to interfaces when using indirect + dispatch. + (make_class_data): Emit otable, atable, and ctable. + Make otable, atable, and ctable class local rather than global. + (emit_catch_table): Make otable, atable, and ctable class local + rather than global. + +2003-12-25 Andrew Pinski + + * parse.y (catch_clause_parameter): Fix typo. + + PR java/13404 + * parse.y: (catch_clause_parameter): Return early if $3, aka + formal_parameter, is null. + +2003-12-20 Kazu Hirata + + * class.c: Remove uses of "register" specifier in + declarations of arguments and local variables. + * decl.c: Likewise. + * expr.c: Likewise. + * gjavah.c: Likewise. + * jcf-dump.c: Likewise. + * jcf-io.c: Likewise. + * jcf-parse.c: Likewise. + * jcf-write.c: Likewise. + * keyword.h: Likewise. + * parse.y: Likewise. + * typeck.c: Likewise. + * verify.c: Likewise. + +2003-12-06 Kelley Cook + + * Make-lang.in (GCJ_CROSS_NAME): Delete. + (java.install_common, java.install-man): Adjust for above. + (java.uninstall): Likewise. + +2003-12-03 Michael Koch + + * class.c (make_class_data): + Push field value to 'hack_signers' instead of 'signers'. + * decl.c (java_init_decl_processing): + Push field 'hack_signers' instead of 'signers'. + +2003-12-03 Zack Weinberg + + * lex.h: Check both HAVE_ICONV and HAVE_ICONV_H before + including iconv.h. + +2003-12-03 Ralph Loader + + PR java/12374: + * parse.y (qualify_ambiguous_name): Remove lots of broken + field access processing - there's no need to do that here, + because we have resolve_field_access. Remove + RESOLVE_EXPRESSION_NAME_P as it isn't used anywhere else. + * java-tree.h: Remove RESOLVE_EXPRESSION_NAME_P as it isn't + used. + +2003-12-01 Jeff Sturm + + Fix PR java/13237 + * parse.y (java_complete_lhs): Save location prior to patching + CALL_EXPR. + +2003-11-25 Mohan Embar + + PR java/12548 + * resource.c (write_resource_constructor): Append + "_resource" to constructor identifier name. + +2003-11-25 Jeff Sturm + + Fix PR java/13183. + * constants.c (cpool_for_class): New function. + (outgoing_cpool): Remove global variable. + (alloc_name_constant): Use cpool_for_class. + (build_constants_constructor): Likewise. + * decl.c (java_expand_body): Set current_class. + * java-tree.h (outgoing_cpool) Remove declaration. + (init_outgoing_cpool): Likewise. + * jcf-parse.c (init_outgoing_cpool): Remove function. + (parse_class_file): Don't call init_outgoing_cpool. + * parse.y (java_complete_expand_methods): Don't call + init_outgoing_cpool. Don't save outgoing_cpool. + (java_expand_classes): Don't restore outgoing_cpool. + (java_finish_classes): Likewise. + +2003-11-24 Mohan Embar + + * Make-lang.in: (java.install-common) Add + symlink for $(target_noncanonical)-gcjh for + native builds. + +2003-11-20 Joseph S. Myers + + * Make-lang.in (java.extraclean): Delete. + +2003-11-20 Joseph S. Myers + + * Make-lang.in (check-java): Add. + +2003-11-19 Jeff Sturm + + Fix PR java/13024. + * except.c (prepare_eh_table_type): Allocate variable-sized + buffer `buf' with alloca. + +2003-11-17 Jeff Sturm + + Fix PR java/12857. + + decl.c (java_init_decl_processing): Don't initialize + class_not_found_type_node, no_class_def_found_type_node. + + java-tree.h (JTI_CLASS_NOT_FOUND_TYPE_NODE, + JTI_NO_CLASS_DEF_FOUND_TYPE_NODE): Remove from java_tree_index. + (class_not_found_type_node, no_class_def_found_type_node): + Don't define. + + parse.y (build_dot_class_method_invocation): Add this_class + argument. Qualify method invocations to a different class. + (create_new_parser_context): Initialize saved_data_ctx to 0. + (java_parser_context_save_global): Initialize saved_data_ctx to 1. + (build_dot_class_method): Don't load classes. Register + incomplete types. + (build_incomplete_class_ref): Special cases for interfaces + and inner classes. Move build_dot_class_method call to here... + (patch_incomplete_class_ref): ...from here. Pass current_class + to build_dot_class_method_invocation. + (build_assertion): Pass class_type to + build_dot_class_method_invocation. + (encapsulate_with_try_catch): Handle EXPR_WITH_FILE_LOCATION node. + +2003-11-17 Jeff Sturm + + Fix PR java/12739. + * java-tree.h (BLOCK_EMPTY_P): Define. + * parse.y (java_complete_lhs): Check for empty blocks + in TRY_FINALLY_EXPR case. + +2003-11-17 Andrew Haley + + * java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New. + (struct lang_decl_var:freed): New variable. + * decl.c (poplevel): Mark local vars that have gone out of scope. + (push_jvm_slot): Don't use the RTL of a var that has gone out of + scope. + +2003-11-16 Jason Merrill + + * Make-lang.in (java.tags): Create TAGS.sub files in each directory + and TAGS files that include them for each front end. + +2003-11-15 Tom Tromey + + * gjavah.c (print_stub_or_jni): Pass `env' to FatalError. + +2003-11-12 Jason Merrill + + PR optimization/12547 + * lang.c (java_tree_inlining_walk_subtrees): Just walk + BLOCK_EXPR_BODY directly. + +2003-11-12 Andrew Haley + + PR java/11045 + * parse.y (fold_constant_for_init): Check that we really do have a + constant. + + PR java/11533 + * lang.c (merge_init_test_initialization): Clear DECL_INITIAL for + init_test_decls being inlined. + + PR java/12890: + * parse.y (do_resolve_class): Check return value from + breakdown_qualified(). + +2003-11-11 Tom Tromey + + PR java/12915: + * parse.y (merge_string_cste): Handle case where we have a + pointer that happens to be zero, not null_pointer_node. + +2003-11-10 Tom Tromey + + * jcf-parse.c (classify_zip_file): Correctly compare + filename_length against length of manifest file's name. + +2003-11-08 Tom Tromey + + PR java/12894: + * jcf-parse.c (classify_zip_file): Only skip MANIFEST.MF file. + +2003-11-06 Andrew Haley + + * expr.c (java_stack_swap): Make sure destination stack slots are + of the correct type. + +2003-11-03 Kelley Cook + + * Make-lang.in (dvi): Move targets to $(docobjdir). + (gcj.dvi): Simplify rule and adjust target. + (gcj.info): Simplify rule. + (gcj.pod): New intermediate rule. + (gcjh.pod): Likewise. + (jv-scan.pod): Likewise. + (jcf-dump.pod): Likewise. + (gij.pod): Likewise. + (jv-convert.pod): Likewise. + (rmic.pod): Likewise. + (rmiregistry.pod): Likewise. + (gcj.1): Delete. + (gcjh.1): Delete. + (jv-scan.1): Delete. + (jcf-dump.1): Delete. + (gij.1): Delete. + (jv-convert.1): Delete. + (rmic.1): Delete. + (rmiregistry.1): Delete. + +2003-11-02 Jeff Sturm + + Fixes PR java/12866. + * parse.y (resolve_qualified_expression_name): Move test + for outer field access methods from here... + (check_thrown_exceptions) ...to here. + +2003-11-01 Kelley Cook + + * .cvsignore: Delete. + +2003-10-28 Frank Ch. Eigler + + * verify.c (verify_jvm_instructions): Don't warn about legal + eh binding regions generated for example by jdk 1.4.1. + +2003-10-24 David S. Miller + + * jcf-parse.c (jcf_parse): Fix args to fatal_error(). + +2003-10-22 Andrew Haley + + * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New. + (java_get_callee_fndecl): New. + + * jcf-parse.c (java_parse_file): Call emit_catch_table(). + + * java-tree.h (ctable_decl): New. + (catch_classes): New. + (java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES. + + * decl.c (java_init_decl_processing): Add catch_class_type. + Add ctable_decl. + Add catch_classes field. + + * class.c (build_indirect_class_ref): Break out from + build_class_ref. + (make_field_value): Check flag_indirect_dispatch. + (make_class_data): Ditto. + Tidy uses of PUSH_FIELD_VALUE. + Add field catch_classes. + (make_catch_class_record): New. + + * java-tree.h (PUSH_FIELD_VALUE): Tidy. + +2003-10-22 Kazu Hirata + + * jcf-write.c: Follow spelling conventions. + * parse.y: Likewise. + +2003-10-22 Kazu Hirata + + * ChangeLog: Fix typos. + * expr.c: Fix comment typos. + * jcf-write.c: Likewise. + * lang.c: Likewise. + * lex.c: Likewise. + * mangle.c: Likewise. + * parse-scan.y: Likewise. + * parse.y: Likewise. + +2003-10-22 Tom Tromey + + * expr.c (expand_byte_code): Only warn about dead bytecode when + extra_warnings is set. + +2003-10-22 Bryce McKinlay + + Fix for PR java/12586. + * mangle.c (find_compression_record_match): Don't iterate through + package namespace elements unless they all match compression_table + entries. + +2003-10-20 Kelley Cook + + * Make-lang.in (info): Honor $(parsedir) and $(docobjdir). + (generate-manpages): Likewise. + (java.maintainer-clean): Likewise. + (gcj.info): Likewise. + (gcj.1): Likewise. + (gcjh.1): Likewise. + (jv-scan.1): Likewise. + (jcf-dump.1): Likewise. + (gij.1): Likewise. + (jv-convert.1): Likewise. + (rmic.1): Likewise. + (rmiregistry.1): Likewise. + (java.install-man): Likewise. + (parse-scan.o): Move and define complete compile line. + (parse.o): Likewise. + (jcf-tree-inline.o): Move. + +2003-10-20 Mark Mitchell + + * Make-lang.in (info): Update dependencies. + (java.install-info): Remove. + ($(srcdir)/java/gcj.info): Replace with ... + ($(docobjdir)/gcj.info): ... this. + +2003-10-14 Nathanael Nerode + + * Make-lang.in: Replace uses of $(target_alias) with + $(target_noncanonical). + +2003-10-09 Tom Tromey + + * decl.c (java_init_decl_processing): Declare signers field. + * class.c (make_class_data): Set signers field. + +2003-10-09 Jason Merrill + + * parse.y (patch_assignment): Use make_node to create a BLOCK. + * parse.h (BUILD_PTR_FROM_NAME): Use make_node to create a + POINTER_TYPE. + +2003-10-06 Mark Mitchell + + * Make-lang.in (java.info): Replace with ... + (info): ... this. + (java.dvi): Replace with ... + (dvi): ... this. + (java.generated-manpages): Replace with ... + +2003-10-03 Kelley Cook + + * builtins.c, jcf.h, jvspec.c: Remove PARAMS macros. + +2003-10-01 Andrew Haley + + * jcf-parse.c (java_parse_file): Write otable and atable. + * java-tree.h (atable_methods): New. + (atable_decl): New. + (atable_syms_decl): New. + (enum java_tree_index): Add JTI_ATABLE_METHODS, JTI_ATABLE_DECL, + JTI_ATABLE_SYMS_DECL. Rename JTI_METHOD_SYMBOL* to JTI_SYMBOL*. + (symbol_*type): Rename method_symbol* to symbol*type. + (emit_offset_symbol_table): Delete. + (emit_symbol_table): New. + (get_symbol_table_index): New. + (atable_type): New. + * expr.c (build_field_ref): Handle flag_indirect_dispatch. + (build_known_method_ref): Likewise. + (get_symbol_table_index): Rename from get_offset_table_index. + Parameterize to allow re-use by differing types of symbol table. + (build_invokevirtual): Pass table to get_offset_table_index. + * decl.c (java_init_decl_processing): Push types and decls for + atable and atable_syyms. + * class.c (build_static_field_ref): Handle flag_indirect_dispatch. + (make_class_data): Add new fields atable and atable_syms. + (emit_symbol_table): Rename from emit_offset_symbol_table. + Parameterize to allow re-use by different types of symbol table. + (build_symbol_entry): Renamed from build_method_symbols_entry. + +2003-09-30 Roger Sayle + + * jcf-write.c (generate_bytecode_insns): Implement evaluate-once + semantics for SAVE_EXPR, by caching the result in a temporary. + +2003-09-28 Richard Henderson + + * check-init.c (check_init): Save and restore input_location + instead of file and line separately. + * decl.c (java_expand_body): Likewise. + * jcf-write.c (generate_bytecode_insns): Likewise. + * parse.y (safe_layout_class): Likewise. + * jcf-parse.c (read_class, parse_class_file): Likewise. + (java_parse_file): Use %H for warning locator. + +2003-09-28 Roger Sayle + + * expr.c (java_check_reference): Use the semantics of COND_EXPRs + with void-type branches instead of using a COMPOUND_EXPR. + +2003-09-28 Jeff Sturm + + * decl.c (java_optimize_inline, dump_function): Remove. + * java-tree.h (java_optimize_inline): Remove declaration. + * jcf-parse.c (java_parse_file): Assume flag_unit_at_a_time is set. + * parse.y (source_end_java_method, java_expand_classes): + Likewise. Remove dead code. + +2003-09-27 Roger Sayle + + * lang.c (java_init_options): Set flag_evaluation_order. + * expr.c (force_evaluation_order): Don't attempt to force + evaluation order of binary operations using save_expr. + * parse.y (java_complete_lhs): No longer need to call + force_evaluation_order when constructing binary operators. + +2003-09-27 Alexandre Petit-Bianco + Bryce McKinlay + + PR java/1333: + * parse.y (not_accessible_field_error): New function. + (resolve_expression_name): Check field access permissions. + (resolve_qualified_expression_name): Use + not_accessible_field_error. + (resolve_qualified_expression_name): Likewise. + +2003-09-24 Rainer Orth + + * class.c (build_utf8_ref): Test for HAVE_GAS_SHF_MERGE value. + +2003-09-23 Roger Sayle + + * jcf-write.c (generate_bytecode_insns): Optimize binary operations + with equal operands without side-effects. + +2003-09-22 Jeff Sturm + + * decl.c (java_init_decl_processing): Don't emit otable decls + if flag_indirect_dispatch is not set. + +2003-09-21 Richard Henderson + + * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y, + resource.c: Revert. + +2003-09-21 Richard Henderson + + * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y, + resource.c: Update for DECL_SOURCE_LOCATION rename and change to const. + +2003-09-20 Richard Henderson + + * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics. + +2003-09-18 Roger Sayle + + * expr.c (java_truthvalue_conversion): Remove FFS_EXPR case. + * check-init.c (check_init): Likewise. + +2003-09-18 Roger Sayle + + * jcf-write.c (generate_bytecode_insns): Add support for fconst_2. + +2003-09-16 Andrew Haley + + * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR. + +2003-09-17 Ranjit Mathew + + Fixes PR java/9577 + * mangle.c (find_compression_record_match): Skip + over a "6JArray" (the array template mangled string) + IDENTIFIER_NODE. + (mangle_array_type): Correct minor typo. + (atms): Move definition to the beginning. + +2003-09-16 Bryce McKinlay + + * class.c (add_miranda_methods): Ensure super-interfaces are laid + out. Fix for PR java/12254. + +2003-09-11 Richard Henderson + + * parse.y (source_end_java_method): Update for new + cgraph_finalize_function argument. + +2003-09-09 Richard Henderson + + * parse.y (source_end_java_method): Update call to + cgraph_finalize_function. + +2003-09-03 Jeff Sturm + + * decl.c (java_expand_body): New function. + * expr.c (build_class_init): Set DECL_IGNORED_P. + * java-tree.h (start_complete_expand_method, + java_expand_body): Declare. + * jcf-parse.c (cgraph.h): Include. + (java_parse_file): Handle flag_unit_at_a_time. + * lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING, + LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define. + (java_estimate_num_insns): Use walk_tree_without_duplicates. + (java_start_inlining): New function. + * parse.h (java_finish_classes): Declare. + * parse.y: Include cgraph.h. + (block): Don't special-case empty block production. + (craft_constructor): Set DECL_INLINE. + (source_end_java_method): Handle flag_unit_at_a_time. + Replace inline code with call to java_expand_body. + (start_complete_expand_method): Remove static modifier. + (java_expand_method_bodies): Patch function tree for + class initialization and/or synchronization as needed. + Don't begin RTL expansion yet. + (java_expand_classes): Check flag_unit_at_a_time before + calling finish_class. + (java_finish_classes): New function. + (java_complete_lhs): Ensure COMPOUND_EXPR has non-NULL type. + (patch_assignment): Set DECL_CONTEXT on temporary variable. + (emit_test_initialization): Set DECL_IGNORED_P. + +2003-09-03 Roger Sayle + + * builtins.c (enum builtin_type): Delete unused enumeration. + * Make-lang.in (java/builtins.o): Remove built-types.def dependency. + +2003-08-28 Tom Tromey + + * gcj.texi (Extensions): Document gcjlib URLs. + +2003-08-20 Tom Tromey + + * gcj.texi (Extensions): Added xref. + (libgcj Runtime Properties): Document + gnu.gcj.runtime.VMClassLoader.library_control. + +2003-08-20 Andrew Haley + + * except.c (prepare_eh_table_type): Use new encoding for exception + handlers when using -fno-assume-compiled. + +2003-08-13 Tom Tromey + + * gcj.texi (Invoking gij): Document -X and -?. + +2003-08-13 Mohan Embar + + * Make-lang.in: Added missing win32-host.o to JAVA_OBJS, + GCJH_OBJS, JCFDUMP_OBJS + * win32-host.c: Removed the unnecessary and broken dependency + on jcf.h + +2003-08-11 Tom Tromey + + * parse.y (java_check_regular_methods): Typo fixes. Call + check_interface_throws_clauses. Use + check_concrete_throws_clauses. + (check_interface_throws_clauses): New function. + (check_concrete_throws_clauses): New function. + (hack_is_accessible_p): New function. + (find_most_specific_methods_list): Added FIXME. + * typeck.c (lookup_do): Use `flags' argument to decide what to + do. Reimplemented. + (lookup_argument_method_generic): New function. + (lookup_argument_method2): Removed. + * jcf.h (ACC_INVISIBLE): New define. + * jcf-write.c (generate_classfile): Skip invisible methods. + * class.c (add_miranda_methods): New function. + (layout_class_methods): Use it. + (get_access_flags_from_decl): Use ACC_INVISIBLE. + * java-tree.h (METHOD_INVISIBLE): New define. + (lang_decl_func) [invisible]: New field. + (lookup_argument_method_generic): Declare. + (SEARCH_INTERFACE): New define. + (SEARCH_SUPER): Likewise. + (SEARCH_ONLY_INTERFACE): Likewise. + (SEARCH_VISIBLE): Likewise. + (lookup_argument_method2): Removed declaration. + +2003-08-05 Tom Tromey + + Fix for PR java/11600: + * parse.y (java_complete_lhs): See whether we're calling a method + on an array. + (check_thrown_exceptions): Added `is_array_call' argument; + fixed `clone' checking; updated all callers. + +2003-08-05 Steven Bosscher + + * java-tree.h (DECL_ESTIMATED_INSNS): Remove (moved to tree.h). + +2003-08-03 Tom Tromey + + * java-tree.h (METHOD_TRANSIENT): Removed. + * decl.c (pushdecl): Removed some dead code. + * class.c (get_access_flags_from_decl): Can't have transient + method. + (add_method_1): Can't have a transient method. + +2003-07-28 Andreas Jaeger + + * jvspec.c: Convert to ISO C90 prototypes. + +2003-07-25 Nathan Sidwell + + * decl.c (force_poplevels): Fix warning call. + +2003-07-25 Gabriel Dos Reis + + * expr.c (expand_java_field_op): Don't use xxx_with_decl + (expand_java_field_op): Likewise. + * class.c (layout_class_method): Likewise + (emit_register_classes): Likewise. + * decl.c (pushdecl): Likewise. + (poplevel): Likewise. + (force_poplevels): Likewise. + (give_name_to_locals): Likewise. + * check-init.c (check_for_initialization): Likewise. + +2003-07-24 Jason Merrill + + * java-tree.h: Move boolean_type_node et al to the back end. + +2003-07-19 Kaveh R. Ghazi + + * class.c java-tree.h jcf-write.c jvspec.c: Remove unnecessary + casts. + +2003-07-19 Neil Booth + + * lang.opt: Don't show -MD_ and -MDD_. + +2003-07-18 Neil Booth + + * lang-options.h: Remove. + * lang.opt: Add help text. + +2003-07-15 Kazu Hirata + + * expr.c: Remove the last argument to expand_assignment(). + +2003-07-09 Jan Hubicka + + * java-tree.h (DECL_NUM_STMTS): Rename to... + (DECL_ESTIMATED_INSNS): ... this. + * lang.c (java_estimate_num_insns, java_estimate_num_insns_1): + New static functions. + (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define. + * parser.y (add_stmt_to_compound): Do not account statements. + +2003-07-08 Mark Wielaard + + * gcj.texi: CNI now expands to Compiled Native Interface. + +2003-07-08 Rainer Orth + + * Make-lang.in (java/gcj.dvi): Use PWD_COMMAND. + +2003-07-07 Nathan Sidwell + + * expr.c (expand_byte_code): Adjist emit_line_note call. + +2003-07-06 Neil Booth + + * lang.c (java_handle_option): Don't handle filenames. + +2003-07-02 Zack Weinberg + + * jcf-path.c: Don't default-define PATH_SEPARATOR nor + DIR_SEPARATOR. + Use FILENAME_CMP. + * jcf-write.c: Don't default-define DIR_SEPARATOR. + * jcf.h: Delete COMPARE_FILENAMES definition. + +2003-07-02 Neil Booth + + * lang.c (java_init_options): Update prototype. + +2003-07-01 Nathan Sidwell + + * decl.c (poplevel): Adjust define_label call. + +2003-06-27 Zack Weinberg + + * gjavah.c (flag_jni): Make non-static. + * parse-scan.y (ctxp): Make non-static. + + * class.c (build_method_symbols_entry) + * expr.c (get_offset_table_index) + * jcf-parse.c (jcf_parse): + Mark the definition static, matching the forward declaration. + +2003-06-26 Neil Booth + + * lang.c (java_handle_option): Don't check for missing arguments. + +2003-06-20 Nathan Sidwell + + * class.c (push_class): Use a location_t to save place. + (emit_register_classes): Set input_location. Adjust + expand_function_end call. + * resource.c (write_resource_constructor): Likewise. + * decl.c (end_java_method): Adjust expand_function_end call. + * parse.y (source_end_java_method): Likewise. + +2003-06-17 Robert Abeles + + * lang.c (java_handle_option): Likewise. + +2003-06-16 Neil Booth + + * lang.c (java_handle_option): Special-casing of optional + joined arguments no longer needed. + * lang.opt: Update switches that take optional argument. + +2003-06-15 Neil Booth + + * lang.opt: Declare Java. + * lang.c (java_init_options): Update. + +2003-06-15 Neil Booth + + * lang.c (version_flag): Rename to v_flag to avoid clash w/ toplev.h. + +2003-06-14 Neil Booth + + * lang-specs.h: Rewrite -MD and -MMD to append an underscore. + * lang.c (java_handle_option): -MD and -MMD have an underscore. + * lang.opt: -MD and -MMD have an underscore. + +2003-06-14 Nathan Sidwell + + * class.c (emit_register_classes): Adjust init_function_start + call. + * decl.c (complete_start_java_method): Likewise. + * resource.c (write_resource_constructor): Likewise. + +2003-06-14 Neil Booth + + * Make-lang.in: Update to use options.c and options.h. + * lang.c: Include options.h not j-options.h. + (java_handle_option): Abort on unrecognized option. + (java_init_options): Request Java switches. + +2003-06-11 Neil Booth + + * Make-lang.in: Handle mostlyclean. + +2003-06-11 Tom Tromey + + * lang.c (java_handle_option): Update dependency_tracking for + OPT_MF case. + + * lang.c (java_handle_option): OPT_fbootclasspath_ can take an + empty argument. + +2003-06-10 Andrew Haley + + * resource.c (write_resource_constructor): Use expand_expr to + generate the address of the label attached to a resource. + * Make-lang.in (java/resource.o): Add expr.h + +2003-06-10 Andrew Haley + + * lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New. + (java_decl_ok_for_sibcall): New. + +2003-06-09 Neil Booth + + * Make-lang.in (JAVA_OBJS, java/lang.o): Update. + (java/j-options.c, java/j-options.h): New. + * java-tree.h (resource_name, compile_resource_file, + compile_resource_data): Constify. + * jcf-write.c (jcf_write_base_directory): Similarly. + * jcf.h (jcf_write_base_directory): Similarly. + * lang.c: Include j-options.h. + (cl_options_count, cl_options, string_option, java_decode_option, + lang_f_options, lang_W_options, LANG_HOOKS_DECODE_OPTION, + process_option_with_no): Remove. + (resource_name): Constify. + (LANG_HOOKS_HANDLE_OPTION): Override. + (java_handle_option): New. + (java_init): Don't call jcf_path_init. + (java_init_options): Call jcf_path_init. + * lang.opt: New. + * resource.c (compile_resource_data, compile_resource_file): Constify. + +2003-06-09 Nathan Sidwell + + * java-tree.h (DECL_FUNCTION_LAST_LINE): New. + (struct lang_decl_func): Add last_line field. + * parse.h (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST, + DECL_SOURCE_LINE_LAST): Remove. + * parse.y (missing_return_error, finish_method_declaration, + lookup_cl, start_artificial_method_body, source_end_java_method, + start_complete_expand_method): Adjust. + +2003-06-08 Tom Tromey + + * jvspec.c (jvgenmain_spec): Added `*' after fassume-compiled and + fno-assume-compiled. + +2003-06-08 Roger Sayle + + * builtins.c (define_builtin_type, builtin_types): Delete. + (define_builtin): Rewritten to take just the built-in code, + the function's name, type and fallback library function name. + All built-ins used by Java are implicit and BUILT_IN_NORMAL. + (initialize_builtins): Overhaul to define the GCC builtins + used by gcj manually, providing the Java run-time's + implementations as the fallback library function. + +2003-06-08 Anthony Green + + * parse.y (patch_cast): Fix conversions from floating-point to + integral types. + +2003-06-08 Neil Booth + + * Make-lang.in: Update. + * lang.c: Include opts.h. Define cl_options_count and cl_options. + +2003-06-07 Neil Booth + + * lang.c (java_init_options): Update. + +2003-06-05 Jan Hubicka + + * Make-lang.in: Add support for stageprofile and stagefeedback + +2003-05-31 Roger Sayle + + * lang.c (java_init_options): Prescribe wrap-around two's + complement arithmetic overflow by setting flag_wrapv. + +2003-05-29 Roger Sayle + + * builtins.c (cos_builtin, sin_builtin, sqrt_builtin): Delete. + (builtin_record): Add an additional builtin_code field to + record which GCC built-in corresponds to the Java function. + (java_builtins): Add new entries for atan, atan2, exp, log, + pow and tan. + (max_builtin, min_builtin, abs_builtin): Perform constant + folding on the resulting tree. + (java_build_function_call_expr): Likewise, perform constant + folding on the resulting tree. + (initialize_builtins): The NULL creators are now allowed in + the java_builtins table, which is now terminated by an entry + with builtin_code == END_BUILTINS. + (check_for_builtin): Likewise. If the matching creator is + NULL, construct the call using java_build_function_call_expr + directly with the decl for the corresponding builtin_code. + +2003-05-23 Nathanael Nerode + + * win32-host.c: Normalize copyright boilerplate. + +2003-05-16 Kaveh R. Ghazi + + * parse.y (print_int_node): Use string concatentation on + HOST_WIDE_INT_PRINT_* format specifier to collapse multiple + function calls into one. + +2003-05-13 Zack Weinberg + + * jcf-parse.c, jcf-write.c, lex.c: Replace all calls to + fatal_io_error with calls to fatal_error; add ": %m" to the end of + all the affected error messages. + +2003-05-13 Richard Henderson + + * class.c (layout_class_method): Set DECL_EXTERNAL. + * decl.c (java_mark_decl_local, java_mark_class_local): New. + * java-tree.h (java_mark_class_local): Declare. + * jcf-parse.c (parse_class_file): Use it. + * parse.y (java_expand_classes): Likewise. + +2003-05-04 Nathan Sidwell + + * Make-lang.in (java/parse.o, java/parse-scan.o): Depend on input.h. + * lex.h: #include input.h. + * jv-scan.c (input_filename): Remove. + +2003-05-02 Tom Tromey + + PR java/10491: + * gjavah.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. + (handle_inner_classes): New function. + +2003-05-01 Tom Tromey + + PR java/10459: + * parse.y (finish_for_loop): Do nothing if update expression is a + EXPR_WFL_NODE wrapping nothing. + (java_complete_lhs) : Likewise. + +2003-05-02 Nathan Sidwell + + * lex.h (input_lineno): Remove declaration. + * parse-scan.y: #include input.h. + (input_filename): Remove declaration. + (input_location): Add definition. + (input_line): Remove definition. + +2003-05-01 Nathan Sidwell + + * lex.h (lineno): Rename to ... + (input_line): ... here + * parse-scan.y (lineno): Rename to ... + (input_line): ... here. + (reset_report): Rename lineno to input_line. + * check-init.c (check_init): Likewise. + * class.c (push_class): Likewise. + * decl.c (complete_start_java_method, end_java_method): Likewise. + * expr.c (expand_byte_code): Likewise. + * jcf-parse.c (give_name_to_class, parse_class_file): Likewise. + * jcf-write.c (generate_bytecode_insns): Likewise. + * lex.c (java_init_lex, java_allocate_new_line, + do_java_lex): Likewise. + * parse.h (YYNOT_TWICE): Likewise. + * parse.y (empty_statement, expression_statement, + java_pop_parser_context, java_parser_context_save_global, + yyerror, register_fields, method_header, safe_layout_class, + find_in_imports_on_demand, create_artificial_method, + source_end_java_method, start_complete_expand_method, + build_thisn_assign, java_complete_lhs, + maybe_absorb_scoping_block): Likewise. + +2003-04-20 Mohan Embar + + * jcf-io.c (find_class): use DIR_SEPARATOR instead of + '/' when computing java source filename + +2003-04-13 Tom Tromey + + * gjavah.c (print_c_decl): Indentation fix. + +2003-04-12 Zack Weinberg + + * class.c (make_field_value, make_method_value, get_dispatch_table) + (make_class_data, emit_offset_symbol_table) + * constants.c (build_constants_constructor) + * java-tree.h (START_RECORD_CONSTRUCTOR) + * parse.y (maybe_build_array_element_wfl): + Use build_constructor. + +2003-04-10 Eric Blake + + PR java/10253: + * parse.y (string_convert_int_cst): Always use at least one digit + in string conversion. Remove ASCII dependence. + (merge_string_cste): Fix merging of 3-byte UTF-8 characters. + +2003-03-16 Mohan Embar + + * Make-lang.in: added win32-host.c + * jcf.h: defined macro JCF_OPEN_EXACT_CASE which + resolves to open() on non-Win32 platforms and + Win32-specific jcf_open_exact_case() on Win32 + * jcf-io.c (find_class): use JCF_OPEN_EXACT_CASE + when trying .java and .class files + * win32-host.c: added to repository. Defines + Win32-specific jcf_open_exact_case() + +2003-04-10 Andrew Haley + + * jcf-write.c (struct jcf_partial): num_jsrs: new field. + (maybe_free_localvar): Renamed from localvar_free. + Add new arg, really. + (generate_bytecode_insns): Set new variable, jsrs. + Only free local vars if no jsr insns have been emittted. + Call maybe_free_localvar, not localvar_free. + +2003-03-30 Joseph S. Myers + + * gcj.texi: Remove @ at start of file. + +2003-03-25 Tom Tromey + + * parse.y (create_interface): Call CHECK_DEPRECATED. + +2003-03-23 Zack Weinberg + + * Make-lang.in: Link jcf-dump against $(LDEXP_LIB). + +2003-03-21 Zack Weinberg + + * javaop.h (jfloat, jdouble): Make them structures mirroring + the bit fields of IEEE float and double respectively. + (JFLOAT_FINITE, JFLOAT_QNAN_MASK, JFLOAT_EXP_BIAS, + JDOUBLE_FINITE, JDOUBLE_QNAN_MASK, JDOUBLE_EXP_BIAS): New. + (union Word, union DWord): Delete. + (WORD_TO_FLOAT, WORDS_TO_DOUBLE): Update to match. + + * gjavah.c (java_float_finite, java_double_finite, F_NAN_MASK, + D_NAN_MASK): Delete. + (jni_print_float, jni_print_double): New. Generate + hexadecimal floating constants. + (print_field_info): Use jni_print_float/double. + + * jcf-dump.c: Include math.h. Use ldexp/frexp to assemble + finite floating point numbers for output; special case + non-finite floats. + +2003-03-19 Nathanael Nerode + + * lang.c (java_dump_tree): Change return type from 'int' to 'bool'. + Replace 0 and 1 with true and false in return statements. + +2003-03-19 Tom Tromey + + * lex.c (do_java_lex): Renamed from java_lex. + (java_lex): New function. + Include timevar.h. + +2003-03-13 Tom Tromey + + * parse.y (resolve_inner_class): Error if qualifier is a primitive + type. + +2003-03-04 Andrew Haley + + * gjavah.c (is_first_data_member): New global variable. + (print_c_decl): If it's the first data member, align it as the + superclass. + (process_file): Set is_first_data_member. + +2003-03-11 Tom Tromey + + * parse.y (resolve_field_access): Initialize class if field is + found in another static field. + * expr.c (build_class_init): Don't optimize out initialization of + implemented interface. + +2003-03-11 Andrew Haley + + * jcf-io.c (caching_stat): Initialize origsep to remove compiler + warning. + +2003-03-10 Ranjit Mathew + + * jcf-io.c (caching_stat): Account for both DIR_SEPARATOR + and DIR_SEPARATOR_2 for a target. + Correct minor typos. + + * jcf-write.c (make_class_file_name): Take both DIR_SEPARATOR + and DIR_SEPARATOR_2 for a target into account. + +2003-03-08 Neil Booth + + * lang.c (java_init): Update prototype, move code to java_post_options. + (java_post_options): Similarly. + +2003-03-05 Ranjit Mathew + + * jcf.h (COMPARE_FILENAMES): New macro similar to "strcmp" to + compare file name components depending on the case-sensitivity + or otherwise of the host file system. + + * jcf-path.c (add_entry): Use COMPARE_FILENAMES instead of + "strcmp" to compare file name components. + Use IS_DIR_SEPARATOR instead of comparing directly against + DIR_SEPARATOR. + (jcf_path_extdirs_arg): Use IS_DIR_SEPARATOR instead of + comparing directly against DIR_SEPARATOR. + +2003-03-04 Tom Tromey + + * Make-lang.in (java.tags): New target. + +2003-03-01 Roger Sayle + + * java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3. + (initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3. + +2003-03-01 Tom Tromey + + * parse.y (jdep_resolve_class): Only check deprecation if we found + a decl. + +2003-02-28 Tom Tromey + + PR java/9695: + * class.c (maybe_layout_super_class): Always pass a WFL to + do_resolve_class. + * parse.y (do_resolve_class): Updated comment to explain + parameters. + +2003-02-26 Tom Tromey + + * jcf-write.c (generate_classfile): Check whether class is + deprecated before writing attribute count. + +2003-02-25 Roger Sayle + + * java/decl.c (java_init_decl_processing): Get soft_fmod_node from + built_in_decls[BUILT_IN_FMOD] rather than define it ourselves. + +2003-02-23 Tom Tromey + + * lang-options.h: Added -Wdeprecated. + * gcj.texi (Warnings): Document -Wdeprecated. + * java-tree.h (flag_deprecated): Declare. + * lang.c (lang_W_options): Added deprecated. + (flag_deprecated): New global. + * chartables.h: Rebuilt. + * gen-table.pl (process_one): Look at whitespace. + (print_tables): Define LETTER_SPACE, LETTER_MASK. + * parse.h (CLEAR_DEPRECATED): New macro. + (CHECK_DEPRECATED_NO_RESET): New macro. + * jcf-parse.c (handle_deprecated): New function. + (HANDLE_DEPRECATED_ATTRIBUTE): New define. + * jcf-reader.c (get_attribute): Handle Deprecated attribute. + * parse.y (resolve_type_during_patch): Check deprecation. + (jdep_resolve_class): Likewise. + (process_imports): Likewise. + (resolve_expression_name): Likewise. + (check_deprecation): Strip arrays from decl. Check + flag_deprecated. + (patch_method_invocation): Also check the particular constructor + for deprecation. + (register_fields): Use CHECK_DEPRECATED_NO_RESET in loop. + * jcf-write.c (append_deprecated_attribute): New function. + (generate_classfile): Generate deprecated attribute when + appropriate. + * lex.c (java_parse_doc_section): Return type now void. Rewrote. + (java_lex) [case '*']: Simplify logic. + (java_start_char_p): Use LETTER_MASK. + (java_part_char_p): Likewise. + (java_space_char_p): New function. + +2003-02-20 Nathan Sidwell + + Change base class access representation. + * java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC. + (add_interface_do): Likewise. + +2003-02-12 Ranjit Mathew + + * decl.c (java_init_decl_processing): Change + soft_lookupjnimethod_node to reflect the change in + signature of _Jv_LookupJNIMethod in libjava/jni.cc + * expr.c (build_jni_stub): Calculate and pass the size + on the stack of the arguments to a JNI function. Use + new target macro MODIFY_JNI_METHOD_CALL to allow a + target to modify the call to a JNI method. + +2003-02-08 Roger Sayle + + * jcf-io.c (java_or_class_file): Use libiberty's lbasename + instead of basename to avoid compiler warnings on Tru64. + +2003-02-04 Joseph S. Myers + + * gcj.texi: Update to GFDL 1.2. + +2003-01-31 Andrew Haley + + * parse.y (java_expand_classes): Scan the whole class list looking + for access methods that haven't yet been expanded. + +2003-01-31 Adrian Bunk + + Fix for java/4269: + + * jv-scan.c: Use HAVE_LANGINFO_CODESET instead of HAVE_NL_LANGINFO + to fix bootstrap on sparc-unknown-netbsdelf1.5. + * jcf-parse.c: Likewise. + +2003-01-31 Mark Wielaard + + * gjavah.c (throwable_p): Allocate 1 more byte for string. + +2003-01-31 Nathan Sidwell + + * class.c (make_class): Use BINFO_ELTS. + (set_super_info): Likewse. + (add_interface_do): Likewise. + +2003-01-30 Tom Tromey + + * jcf-parse.c (read_class): Update identifier's class value if it + changed during parsing. + +2003-01-30 Loren James Rittle + + * Make-lang.in (po-generated): Find the targets in $(parsedir). + Propagate change to all other rules as required. + (java/parse-scan.o): Add explicit dependency on + $(parsedir)/java/parse-scan.c . + +2003-01-29 Tom Tromey + + * parse.y (patch_assignment): Only transform the rhs of an + assignment when compiling to native. + +2003-01-28 Tom Tromey + + * jcf-write.c (generate_bytecode_conditional): Typo fixes. + +2003-01-28 Tom Tromey + + * lex.c (java_lex): Don't include UEOF as part of token. + (java_read_unicode): Error if \u sequence prematurely terminated. + +2003-01-27 Tom Tromey + + * parse.y (java_check_regular_methods): Check for construct after + checking types in throws clause. + +2003-01-24 Tom Tromey + + * class.c (build_static_field_ref): Only a String or numeric field + can fold to a constant. + +2003-01-23 Tom Tromey + + * jcf-parse.c (parse_zip_file_entries): Overwrite trailing \0 of + file name in resource buffer. + +2003-01-23 Tom Tromey + + * expr.c (build_known_method_ref): Use method's context to find + method table index. + +2003-01-23 Tom Tromey + + * constants.c (set_constant_entry): Allocated cleared memory. + +2003-01-22 Tom Tromey + + * java-tree.h: Don't use PARAMS. + * resource.c: Add prototypes for all functions. + (write_resource_constructor): Use `const char *' to avoid + warning. + +2003-01-22 Nathanael Nerode + + * jcf-parse.c (process_zip_dir): Remove unused variable. + +2003-01-22 Tom Tromey + + * expr.c (build_invokeinterface): Abort if method's context is not + an interface. + +2003-01-22 Tom Tromey + + * gcj.texi (Input and output files): Mention non-class entries. + * decl.c (java_init_decl_processing): Call + init_resource_processing. + * java-tree.h (compile_resource_data, write_resource_constructor, + compile_resource_file, init_resource_processing): Declare. + * config-lang.in (gtfiles): Added resource.c. + * Make-lang.in (gt-java-resource.h): New target. + (JAVA_OBJS): Added resource.o. + (java/resource.o): New target. + * resource.c: New file. + * class.c (compile_resource_file): Moved to resource.c. + (registerResource_libfunc): Likewise. + (utf8_decl_list): Mark with GTY; now static. + * jcf-parse.c (classify_zip_file): New function. + (parse_zip_file_entries): Use it; compile .properties files. + (process_zip_dir): Use classify_zip_file and compute_class_name. + Don't write class name into zip directory. + (java_parse_file): Call write_resource_constructor. + (compute_class_name): New function. + * jcf-io.c (read_zip_member): Reindented. + +2003-01-21 Tom Tromey + + * class.c (supers_all_compiled): New function. + (make_class_data): Use it. + +2003-01-21 Tom Tromey + + * parse.y (method_header): Native method can't be strictfp. + No method can be transient or volatile. + +2003-01-21 Kaveh R. Ghazi + + Make-lang.in (jvspec.o-warn): Add -Wno-error. + +2003-01-18 Kazu Hirata + + * check-init.c: Fix comment typos. + * class.c: Likewise. + * constants.c: Likewise. + * decl.c: Likewise. + * except.c: Likewise. + * expr.c: Likewise. + * java-except.h: Likewise. + * java-tree.h: Likewise. + * javaop.h: Likewise. + * jcf-dump.c: Likewise. + * jcf-io.c: Likewise. + * jcf-parse.c: Likewise. + * jcf-write.c: Likewise. + * lang.c: Likewise. + * mangle.c: Likewise. + * typeck.c: Likewise. + * verify.c: Likewise. + +2003-01-18 Kaveh R. Ghazi + + * Make-lang.in (java/jcf-write.o): Depend on $(TM_P_H). + * jcf-write.c: Include "tm_p.h". + +2003-01-17 Kaveh R. Ghazi + + * jcf-io.c (caching_stat): Cast the 3rd arg of scandir to void*. + +2003-01-16 Kaveh R. Ghazi + + * builtins.c (java_build_function_call_expr): Renamed from + build_function_call_expr. All callers changed. + + * Make-lang.in (java/jcf-parse.o): Depend on $(TM_P_H). + * jcf-parse.c: Include tm_p.h. + + * jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned + warning. + +2003-01-14 Tom Tromey + + * class.c (make_class_data): Check that super is compiled before + building class reference to it. + +2003-01-14 Andrew Haley + + * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a + varargs function -- correct. + +2003-01-14 Andrew Haley + + * decl.c (java_init_decl_processing): Temporarily back out previous patch. + +2003-01-14 Andrew Haley + + * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a + varargs function -- correct. + + * parse.y (patch_assignment): Copy the rhs of an assignment into a + temporary if the RHS is a reference. + +2003-01-11 Kaveh R. Ghazi + + * Make-lang.in (keyword.h): Pass "-L ANSI-C" to gperf. + * keyword.h: Regenerated. + + * All Files: Convert to ISO C style function definitions. + +2003-01-09 Nathanael Nerode + + * parse.y (check_pkg_class_access): ANSIfy definition. + +2003-01-09 Kaveh R. Ghazi + + * decl.c, parse-scan.y, parse.y: Don't cast return value of + xmalloc et al. + + * class.c, gjavah.c, parse.y, verify.c: Don't use PTR. + +2003-01-09 Geoffrey Keating + + Merge from pch-branch: + + 2002-12-02 Geoffrey Keating + + * Make-lang.in (java/gjavah.o): Update dependencies. + * gjavah.c: Include ggc.h. + + 2002-08-16 Geoffrey Keating + + * Make-lang.in (GCJH_OBJS): Add ggc-none.o. + (JCFDUMP_OBJS): Add ggc-none.o. + (java/jcf-dump.o): Depend on GGC_H. + * jcf-reader.c (jcf_parse_constant_pool): Use ggc_alloc to allocate + CPool substructures. + * jcf-parse.c (process_zip_dir): Use ggc_alloc to allocate JCFs. + * jcf-dump.c: Include ggc.h. + + 2002-08-08 Geoffrey Keating + + * jcf.h (union cpool_entry): New. + (struct CPool): Use gengtype to mark. Change field 'data' to be + an array of unions. + (struct JCF): Use gengtype to mark. + (CPOOL_UINT): Update for new cpool_entry type. + (CPOOL_USHORT1): Likewise. + (CPOOL_USHORT2): Likewise. + (CPOOL_FINISH): Use GC to free cpool subfields. + * parse.h (struct parser_ctxt): Mark field current_jcf. + * lex.c (java_init_lex): Use GC to allocate struct JCF. + * jcf-parse.c (HANDLE_CONSTANT_Utf8): Update for new cpool_entry type. + (main_jcf): Use gengtype to mark. + (ggc_mark_jcf): Delete. + (get_constant): Update for new cpool_entry type. + (give_name_to_class): Likewise. + (get_class_constant): Likewise. + (init_outgoing_cpool): Use GGC to allocate struct CPool. + (java_parse_file): Use GGC to allocate struct JCF. + (init_jcf_parse): Don't call ggc_add_root. + * jcf-reader.c (jcf_parse_constant_pool): Update for new + cpool_entry type. + * java-tree.h (current_jcf): Use gengtype to mark. + (CPOOL_UTF): Update for new cpool_entry type. + (outgoing_cpool): Use gengtype to mark. + (struct lang_type): GC struct JCF and struct CPool. + * config-lang.in (gtfiles): Add jcf.h. + * constants.c (find_tree_constant): New. + (set_constant_entry): Allocate cpool subfields using GGC. Update + for new cpool_entry type. + (find_constant1): Update for new cpool_entry type. + (find_constant2): Likewise. + (find_utf8_constant): Use find_tree_constant. + (find_class_or_string_constant): Remove unnecessary cast to jword. + Update for new cpool_entry type. + (count_constant_pool_bytes): Update for new cpool_entry type. + (write_constant_pool): Likewise. + (alloc_name_constant): Use find_tree_constant. + (build_constants_constructor): Update for new cpool_entry type. + + 2002-08-08 Geoffrey Keating + + * parse.y (mark_parser_ctxt): Delete. + (goal): Don't use ggc_add_root. + (create_new_parser_context): Use GC to allocate struct parser_ctxt. + (java_pop_parser_context): Let GC free parser_ctxt. + (java_parser_context_resume): Likewise. + * parse.h (struct parser_ctxt): Use gengtype to mark. + (ctxp): Likewise. + (ctxp_for_generation): Likewise. + * lex.h (struct java_lc_s): Mark for gengtype. + (java_lexer): Rearrange for gengtype. + * config-lang.in (gtfiles): Add lex.h, parse.h. + +2003-01-09 Kaveh R. Ghazi + + * All Files: Remove PARAMS macro. + + * expr.c, gjavah.c, javaop.h, jcf-dump.c, jcf-io.c, jcf-reader.c, + jcf-write.c, jcf.h, jv-scan.c: Don't rely on the `DEFUN', `AND' or + `__STDC__' macros. + + * jv-scan.c, parse.y: Remove VPARAMS, VA_OPEN, VA_FIXEDARG and + VA_CLOSE. + +2003-01-09 Christian Cornelssen + + * Make-lang.in (java.install-common, java.uninstall, + java.install-info, java.install-man): Prepend $(DESTDIR) + to destination paths in all (un)installation commands. + (java.install-common): Rewrite $(LN) command to support + DESTDIR with "ln" as well as with "ln -s". + +2003-01-08 Nathanael Nerode + + * java-tree.h: Protect against multiple inclusion. + +2003-01-07 Tom Tromey + + * class.c (add_assume_compiled): Don't adjust parent if we're + already at the root of tree. + +2003-01-05 Kaveh R. Ghazi + + * lang.c (dump_compound_expr): Prototype. + +2003-01-03 Tom Tromey + + Fix for PR java/8712: + * expr.c (build_instanceof): Build an NE_EXPR, not a COND_EXPR, + when simply checking against `null'. + +2003-01-03 Tom Tromey + + * gcj.texi (Standard Properties): Document http.proxyHost and + http.proxyPort. + + * gcj.texi (GNU Classpath Properties): Document new properties. + +2003-01-02 Steven Bosscher + + * java/jcf-reader.c, java/jvgenmain.c, java/keyword.gperf, + java/lang-options.h, java/mangle.c, java/mangle_name.c, + java/xref.c, java/zextract.c,java/zipfile.h: Fix copyright years. + +2003-01-01 Steven Bosscher + + * Make-lang.in, boehm.c, buffer.c, + buffer.h, builtins.c, class.c, + config-lang.in, constants.c, + convert.h, decl.c, except.c, + expr.c, java-except.h, + java-tree.h, javaop.def, + jcf-parse.c, jcf-write.c, + jv-scan.c, jvgenmain.c, + jvspec.c, keyword.gperf, + keyword.h, lang-options.h, + lang-specs.h, lang.c, lex.c, + lex.h, mangle.c, mangle_name.c, + parse-scan.y, parse.h, parse.y, + typeck.c, verify.c, xref.c, + xref.h: Replace "GNU CC" with + "GCC" in the copyright header. + + * check-init.c, gjavah.c, javaop.h, + jcf-depend.c, jcf-dump.c, jcf-io.c, + jcf-path.c, jcf-reader.c, jcf.h, + zextract.c, zipfile.h: These files are + "part of GCC". Also say "GCC" not "GNU CC". + +2002-12-30 DJ Delorie + + * Make-lang.in: Protect against texi2pod/pod2man failing. + +2002-12-28 Joseph S. Myers + + * gcj.texi: Use @copying. + +2002-12-27 Mark Mitchell + + * gjavah.c (print_name_for_stub_or_jni): Adjust call to + print_cxx_classname. + (print_cxx_classname): Add add_scope parameter. + (print_class_decls): Do not emit a semicolon after the extern + "Java" block. + (process_file): Adjust calls to print_cxx_classname. + +2002-12-23 Joseph S. Myers + + * gcj.texi: Include Cover Texts in man page. + +2002-12-23 Jeff Sturm + + * class.c (build_static_field_ref): Check FIELD_FINAL. + + * constants.c (alloc_class_constant): Use TYPE_CPOOL_DATA_REF + instead of current_constant_pool_data_ref. + * java-tree.h (current_constant_pool_data_ref): Undefine. + (JTI_CURRENT_CONSTANT_POOL_DATA_REF): Remove. + * jcf-parse.c (init_outgoing_cpool): Don't initialize + current_constant_pool_data_ref. + + * except.c (prepare_eh_table_type ): Use DECL_NAME of class type, + not build_internal_class_name. + + * parse.y (patch_incomplete_class_ref): Always emit `class$' method. + Use it when class ref isn't certain to be compiled. + +2002-12-23 Joseph S. Myers + + * gcj.texi: Include gcc-common.texi. + * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on + $(srcdir)/doc/include/gcc-common.texi. + +2002-12-22 Anthony Green + + * gcj.texi (Limitations): Add note about org.xml.sax and + org.w3c.dom. + +2002-12-20 Tom Tromey + + * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case + where minimum case value is Integer.MIN_VALUE. + Fixes PR java/8955. + +2002-12-18 Andrew Haley + + * parse.y (patch_invoke): Force evaluation order when `check' is + set. For PR libgcj/8945. + +2002-12-16 Mark Mitchell + + * gcj.texi: Change version number to 3.4. + +2002-12-05 Ranjit Mathew + Andrew Haley + + * parse.y (source_end_java_method): Remove custom encoding of line + numbers for a function decl before passing it to the back end. + +2002-12-03 Andrew Haley + + * class.c (make_class_data): New field, "chain". + * decl.c (java_init_decl_processing): Likewise. + +2002-12-02 Tom Tromey + + For PR java/8740: + * parse.y (do_resolve_class): Handle qualified name via + recursion. + +2002-11-30 Zack Weinberg + + * boehm.c, buffer.c, builtins.c, check-init.c, class.c, + constants.c, decl.c, except.c, expr.c, gjavah.c, jcf-depend.c, + jcf-dump.c, jcf-io.c, jcf-parse.c, jcf-path.c, jcf-write.c, + jv-scan.c, jvgenmain.c, jvspec.c, lang.c, mangle.c, mangle_name.c, + parse-scan.y, parse.y, typeck.c, verify.c, xref.c, zextract.c: + Include coretypes.h and tm.h. + * Make-lang.in: Update dependencies. + +2002-11-27 Kaveh R. Ghazi + + * decl.c (java_init_decl_processing): Use `LL' on 64-bit constant. + +2002-11-25 Diego Novillo + + * jcf-reader.c: Don't expand JCF_readu4 inside the + expansion of JCF_SKIP. + +2002-11-25 Diego Novillo + + * jcf-reader.c: Don't expand JCF_readu4 inside the + expansion of JCF_SKIP. + +2002-11-22 Tom Tromey + + * parse.y (patch_binop): Cast right hand side of shift expression + to `int'. Fixes PR java/8676. + +2002-11-22 Ranjit Mathew + Andrew Haley + + * gcc/java/jcf-write.c (write_classfile): Remove target + class file, if it exists, before renaming the temporary + class file to it. + +2002-11-19 Jason Thorpe + + * jvspec.c (lang_specific_spec_functions): New. + +2002-11-18 Tom Tromey + + Fix for PR java/7912: + * expr.c (can_widen_reference_to): Allow cast of array to + Cloneable or Serializable. + * java-tree.h (java_lang_cloneable_identifier_node): Declare. + (java_io_serializable_identifier_node): Likewise. + * parse.y (java_lang_cloneable, java_io_serializable): Removed. + (valid_ref_assignconv_cast_p): Use new identifier nodes. + * lex.c (java_init_lex): Don't initialize java_lang_cloneable and + java_io_serializable. + * decl.c (java_init_decl_processing): Initialize + java_lang_cloneable_identifier_node and + java_io_serializable_identifier_node. + (java_lang_cloneable_identifier_node): New global. + (java_io_serializable_identifier_node): Likewise. + +2002-11-14 Jens-Michael Hoffmann + + * buffer.c: Remove unnecessary casts. + * check-init.c: Likewise. + * class.c: Likewise. + * constants.c: Likewise. + * decl.c: Likewise. + * except.c: Likewise. + * gjavah.c: Likewise. + * jcf-io.c: Likewise. + * jcf-parse.c: Likewise. + * jcf-path.c: Likewise. + * jvspec.c: Likewise. + * lang.c: Likewise. + * lex.c: Likewise. + * verify.c: Likewise. + +2002-11-06 Tom Tromey + + * gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in + a JNI header. + +2002-11-05 Tom Tromey + + Fix for PR java/6388. + * lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while. + * java-tree.h (enum java_tree_index): New values + JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE. + (decimal_int_max, decimal_long_max): New defines. + * lex.c (yylex): Rewrote range checking. Sign extend literals. + (error_if_numeric_overflow): Rewrote range checking. + * decl.c (java_init_decl_processing): Initialize decimal_int_max, + decimal_long_max. + +2002-11-02 Tom Tromey + + * java-tree.h: Move JV_STATE_ERROR before JV_STATE_DONE. + + * class.c (make_method_value): Put class name, not signature, into + `throws' field. For PR java/8415. + +2002-10-24 Tom Tromey + + * gcj.texi (Invoking gij): Document --showversion. + (Standard Properties): java.library.path now set. + +2002-10-23 Tom Tromey + + * gjavah.c (decode_signature_piece): In JNI mode, print + `jobjectArray' when array depth is nonzero. + Fixes PR java/8296. + +2002-10-15 Andrew Haley + + * parse.y (patch_invoke): Call force_evaluation_order on a static + arg list. + (resolve_qualified_expression_name): Call force_evaluation_order + on a arg list that is part of a Qualified Expression Name. + + * lang.c (dump_compound_expr): New. + (java_dump_tree): New. + +2002-10-20 Ranjit Mathew + + * gcj.texi: Added item describing the GCJ runtime property + "gnu.gcj.progname". + +2002-10-15 Richard Henderson + + * jcf-parse.c (get_constant): Fix type warning. + +2002-10-15 Andrew Haley + + * java-tree.h (java_inlining_merge_static_initializers): Declare. + (java_inlining_map_static_initializers): Declare. + +2002-10-14 Andrew Haley + + * tree-inline.c (remap_block): All local class initialization + flags go in the outermost scope. + (expand_call_inline): Call java_inlining_map_static_initializers. + (expand_call_inline): Call java_inlining_merge_static_initializers. + * java/lang.c (merge_init_test_initialization): New. + (java_inlining_merge_static_initializers): New. + (inline_init_test_initialization): New. + (java_inlining_map_static_initializers): New. + +2002-10-11 Mark Wielaard + + * gcj.texi (Compatibility): Add Limitations and Extensions section. + +2002-10-10 Kaveh R. Ghazi + + * class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer. + +2002-10-09 Kaveh R. Ghazi + + * parse.y (merge_string_cste): Add parentheses around & within |. + +2002-10-08 Tom Tromey + + * parse.y (variable_declarator_id): Simplify error path for + array declarator error. For PR java/8003. + +2002-10-08 Zack Weinberg + + * gjavah.c, jcf-dump.c, jv-scan.c: Globally replace GCCBUGURL with + bug_report_url. + +2002-10-08 Andrew Haley + + * parse.y (attach_init_test_initialization_flags): Check for + error_mark_node. + +2002-10-07 Anthony Green + + * parse.y (merge_string_cste): Fix bug in string concatenation. + +2002-10-03 Michael Koch + + * gcj.texi (Standard properties): + Change default of java.awt.toolkit to gnu.awt.gtk.GtkToolkit. + +2002-10-02 Roger Sayle + + PR optimization/6627 + * lang.c (java_init): If storing the vbit in function + pointers, ensure that force_align_functions_log is atleast + one to aid compatability with g++ vtables. + +2002-10-01 Nathan Sidwell + + * jcf-dump.c (print_constant, case CONSTANT_float): Don't fall + foul of type-based aliasing. + +2002-09-30 Anthony Green + + * gcj.texi (Invoking jv-scan): Fix texinfo. + +2002-09-28 Anthony Green + + * gcj.texi (Invoking jv-scan): Add --no-assert documentation. + (Code Generation): Add -fno-assert documentation. + * jv-scan.c (flag_assert): New global. + (options): Add assert option. + (help): Add --no-assert documentation. + * parse-scan.y (flag_assert): New global. + * lang.c (lang_f_options): Add -fassert/-fno-assert support. + (flag_assert): New global. + * java-tree.h (flag_assert): New global. + * lex.c (java_lex): Obey flag_assert. + * jvspec.c (jvgenmain_spec): Strip -fassert/-fno-assert when + calling cc1. + +2002-09-26 Andrew Haley + + * expr.c (build_java_array_length_access): Check for null pointer. + * expr.c (expand_java_arrayload): Likewise. + +2002-09-21 Richard Henderson + + * jcf-parse.c (get_constant): Decode from IEEE no matter + what the target format. + +2002-09-20 Kazu Hirata + + * ChangeLog: Follow spelling conventions. + * class.c: Likewise. + * decl.c: Likewise. + * expr.c: Likewise. + * gjavah.c: Likewise. + * java-tree.h: Likewise. + * jcf-dump.c: Likewise. + * jcf-parse.c: Likewise. + * jvspec.c: Likewise. + * lang.c: Likewise. + * mangle.c: Likewise. + * parse.y: Likewise. + +2002-09-17 Tom Tromey + + * lex.c (java_read_unicode_collapsing_terminators): Handle case + where \r appears at EOF. Fixes PR java/7950. + +2002-09-16 Volker Reichelt + + * jvspec.c (lang_specific_driver): Remove unused variable. + +2002-09-16 Geoffrey Keating + + * java-tree.h (union lang_tree_node): Add chain_next option. + +2002-09-16 Richard Henderson + + * jcf-parse.c (get_constant): Runtime check for IEEE format; + use new real.h interface. + * jcf-write.c (find_constant_index): Use new real.h interface. + * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL. + +2002-09-15 Kazu Hirata + + * lang.c: Follow spelling conventions. + +2002-09-11 Per Bothner + + * parse.y (fold_constant_for_init): If a VAR_DECL, convert numerical + constant to the type of the field. + (java_complete_tree): Remove now-redundant code. + + * parse.y (fold_constant_for_init): 'null' is not a constant expr. + +2002-09-03 Jesse Rosenstock + + For PR java/5794: + * verify.c (verify_jvm_instructions) [OPCODE_jsr]: Only push the + return label if a ret instruction for the jsr has been reached. + +2002-09-09 Ranjit Mathew + + * parse.y (DIR_SEPARATOR): Don't define. + (check_class_interface_creation): Use IS_DIR_SEPARATOR. + +2002-08-28 Andrew Haley + + * verify.c (verify_jvm_instructions): Allow exception handler + inside code that is being protected, but generate a warning. + * except.c (link_handler): Initialize `expanded' in new eh_range. + (binding_depth, is_class_level, current_pc): Declare extern. + +2002-09-01 Mark Wielaard + + * gcj.texi: Add chapter about system properties. + Fixed some typos. + +2002-08-26 Tom Tromey + + * parse.y (try_builtin_assignconv): Allow narrowing primitive + conversion if RHS_TYPE is byte, short, or char. + +2002-08-22 Tom Tromey + + * gcj.texi (Invoking gij): Document -cp and -classpath. + +2002-08-21 Tom Tromey + + * Make-lang.in (java/jcf-path.o): Use $(datadir), not + $(prefix)/share. For PR libgcj/7633. + + For PR java/6005 and PR java/7611: + * lang.c (LANG_HOOKS_CAN_USE_BITFIELDS_P): New define. + (java_can_use_bit_fields_p): New function. + +2002-08-16 Tom Tromey + + * gcj.texi (Class Initialization): Mention class initialization of + arrays. + +2002-07-30 Andrew Haley + + * Make-lang.in (java-tree-inline.o): New. + (JAVA_OBJS): Add java-tree-inline.o. + * parse.y (source_end_java_method): Call java_optimize_inline. + (java_expand_method_bodies): Save method's tree in + DECL_SAVED_TREE. + (add_stmt_to_compound): Keep track of the number of statments. + * lang.c (java_init): Enable flag_inline_trees. + (java_post_options): If flag_inline_functions is on, enable + flag_inline_trees instread. + (decl_constant_value): New. + (java_tree_inlining_walk_subtrees): New. + * java-tree.h (DECL_NUM_STMTS): New macro. + (java_optimize_inline): Declare. + * expr.c (java_expand_expr): Allow a BLOCK to return a value. + Handle a LABEL_EXPR. + * decl.c (build_result_decl): If we already have a DECL_RESULT + don't make another. + (dump_function): New. + (java_optimize_inline): New. + (dump_function): New. + +2002-08-13 Jesse Rosenstock + + For PR java/7483: + * parse.y (build_assertion): Invert return from + desiredAssertionStatus. + +2002-08-08 Bryce McKinlay + + * jcf-write.c (get_access_flags): Return correct access flags for + private and protected inner classes. + +2002-08-08 Nathan Sidwell + + * java/Make-lang.in (java.mostlyclean): Remove coverage files. + +2002-08-05 Geoffrey Keating + + * mangle_name.c: Don't include obstack.h twice. + * xref.c: Don't include obstack.h. + +2002-08-04 Geoffrey Keating + + * class.c: (permanent_obstack): Delete declaration. + * constants.c: (permanent_obstack): Delete declaration. + * except.c: (permanent_obstack): Delete declaration. + * expr.c: (permanent_obstack): Delete declaration. + * jcf-parse.c: (permanent_obstack): Delete declaration. + (saveable_obstack): Delete declaration. + * parse.h: (permanent_obstack): Delete declaration. + * typeck.c: (permanent_obstack): Delete declaration. + +2002-08-04 Joseph S. Myers + + * gcj.texi (version-gcc): Increase to 3.3. + +2002-07-22 Tom Tromey + + * lex.c (java_lex): Check for `e' or `E' after 0. + +2002-07-21 Richard Henderson + + * lang.c (java_unsafe_for_reeval): New. + (LANG_HOOKS_UNSAFE_FOR_REEVAL): New. + +2002-07-21 Neil Booth + + * jcf-path.c (GET_ENV_PATH_LIST): Remove. + (jcf_path_init): Use GET_ENVIRONMENT. + +2002-07-10 Roger Sayle + Zack Weinberg + + * builtins.c (initialize_builtins): Remove defines that + handled C/C++ specific junk hereby removed from builtins.def. + +2002-07-07 Neil Booth + + * lang.c (java_post_options): Update prototype. + +2002-07-05 Roger Sayle + + * builtins.c (initialize_builtins): Ignore the additional + parameter to DEF_BUILTIN. Handle more C/C++ specific junk in + the builtins.def file. + +2002-07-01 Tom Tromey + + For PR libgcj/7073: + * parse.y (patch_incomplete_class_ref): Handle VOID_TYPE + specially. + +2002-07-01 Roger Sayle + + * java/decl.c (builtin_function): Accept additional parameter. + (java_init_decl_processing): Pass an additional NULL_TREE + argument to builtin_function. + +2002-06-29 T.J. Mather + + * gcj.texi: Fixed gcj invocation example so that it compiles. + +2002-06-26 Kaveh R. Ghazi + + * lex.c (java_init_lex): Avoid incorrect hardcoded constant 11. + * parse.y (mark_parser_ctxt): Likewise. + (check_modifiers, declare_local_variables): Avoid incorrect + hardcoded constant 10. + + * lex.c (java_read_char): Avoid "comparison is always true" + warning. + +2002-06-25 Andreas Schwab + + * expr.c (JSR): Avoid undefined operation on PC. + +2002-06-21 Kaveh R. Ghazi + + * decl.c (clear_binding_level): Const-ify. + +2002-06-13 Akim Demaille + + * parse.y (class_declaration, interface_declaration): Make sure + all their rules have an action, in order to avoid meaningless `$$ + = $1' and their type clashes. + +2002-06-11 Tom Tromey + + * jcf-write.c (generate_classfile): Use FIELD_SYNTHETIC. + * parse-scan.y (statement_without_trailing_substatement): Added + assert_statement. + (assert_statement): New rule. + * java-tree.h (struct lang_type) [assertions]: New field. + (TYPE_USES_ASSERTIONS): New macro. + (CLASS_USES_ASSERTIONS): Likewise. + (FIELD_SYNTHETIC): New define. + * lex.c (java_lval;): Added ASSERT_TK. + * parse.y (ASSERT_TK): Added. + (statement_without_trailing_substatement): Added assert_statement. + (assert_statement): New rule. + (build_assertion): New function. + (maybe_generate_pre_expand_clinit): Create and initialize + $assertionsDisabled. + (lookup_package_type): Removed decl. + * keyword.h: Rebuilt. + * keyword.gperf (assert): New token. + +2002-06-10 Akim Demaille + + * parse.y (interface_type_list, class_member_declaration) + (unary_expression_not_plus_minus): Remove duplicate %type. + Whitespace changes. + +2002-06-09 Tom Tromey + + * Make-lang.in (java/lang.o): Use LANGHOOKS_DEF_H. + + * parse.y (method_header): Give error message in all cases. + Fixes PR java/6865. + +2002-06-10 Bryce McKinlay + + Don't use RTL inlining. Fix for PR java/6820. + * lang.c (LANG_HOOKS_POST_OPTIONS): Define. + (flag_really_inline): New. + (java_decode_option): Set flag_really_inline if -finline-functions + is seen. + (java_post_options): New function. Turn off inlining unless + flag_really_inline is set. + +2002-06-10 Bryce McKinlay + + * gjavah.c (throwable_p): Accept argument as either a classname or + signature fragment. Create null-terminated classname string for super + when calling itself recursively. + (decode_signature_piece): Skip first character from class name + signature when calling throwable_p. + +2002-06-08 H.J. Lu (hjl@gnu.org) + + * jcf-path.c (jcf_path_init): Allocate 1 more byte for string. + +2002-06-04 Tom Tromey + + * jcf-write.c (perform_relocations): Optmize a goto to a goto. + +2002-06-04 Michael Koch + + * gcj.texi (Input Options): Fixed typo. + +2002-06-04 Zack Weinberg + + * java-tree.h, class.c, expr.c, jcf-parse.c, parse.y, + typeck.c, verify.c: Remove all #if JAVA_USE_HANDLES blocks, + all mention of CLASS_TO_HANDLE_TYPE or HANDLE_TO_CLASS_TYPE, + and all now-pointless local variables. Rename other local + variables to reflect their not being handles. + + * java-tree.h, jcf-dump.c, jcf-io.c: Remove all + #if JCF_USE_STDIO blocks. + + * parse.y: Add missing semicolon at end of rule. + +2002-06-03 Geoffrey Keating + + * check-init.c (attach_initialized_static_class): Delete, unused. + * parse.y: Use htab_t instead of struct hashtable, update + all uses. + * java-tree.h: Include hashtab.h instead of hash.h. + (struct lang_decl_func): Use htab_t, set up for gengtype. + (struct init_test_hash_entry): Delete. + (struct treetreehash_entry): New. + (java_treetreehash_find): New + (java_treetreehash_new): New prototype. + (java_treetreehash_create): New prototype. + (java_mark_tree): Delete prototype. + (java_hash_hash_tree_node): Delete prototype. + (java_hash_compare_tree_node): Delete prototype. + (attach_initialized_static_class): Delete prototype. + * expr.c (build_class_init): Update to use java_treetreehash + functions. + (java_expand_expr): Update to use htab_t. + (emit_init_test_initialization): Likewise. + * decl.c (java_mark_tree): Delete. + * class.c (init_test_hash_newfunc): Delete. + (java_hash_hash_tree_node): Delete. + (java_hash_compare_tree_node): Delete. + (add_method_1): Update to use java_treetreehash functions. + (JAVA_TREEHASHHASH_H): New macro. + (java_treetreehash_hash): New function. + (java_treetreehash_compare): New function. + (java_treetreehash_find): New function. + (java_treetreehash_new): New function. + (java_treetreehash_create): New function. + * Make-lang.in (JAVA_TREE_H): Replace hash.h by HASHTAB_H. + + * Make-lang.in (java/parse.o): Depend on debug.h. + * java-tree.h (struct lang_identifier): Use gengtype. + (union lang_tree_node): New. + (struct lang_decl_func): Use gengtype. + (struct lang_decl_var): Likewise. + (struct lang_decl): Likewise. + * parse.y: Include debug.h. + * lang.c (LANG_HOOKS_MARK_TREE): Delete. + + * lang.c (struct language_function): New dummy structure. + + * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Set + descriminator for DECL_LANG_SPECIFIC. + (struct lang_decl_func): Rename from struct lang_decl. + (enum lang_decl_desc): New. + (struct lang_decl): Make it a union. Update all the accessor macros. + (struct lang_type): Use gengtype. + * class.c (add_method_1): Set descriminator for DECL_LANG_SPECIFIC. + * decl.c (java_dup_lang_specific_decl): All lang_decl structures + are now the same size. + (lang_mark_tree): Use gengtype to mark TYPE_LANG_SPECIFIC; + use discriminator to mark DECL_LANG_SPECIFIC. + + * Make-lang.in (gt-java-builtins.h): New rule. + (java/builtins.o): Add dependency on gt-.h. + * builtins.c: Use gengtype for roots. + (union string_or_tree): Use gengtype. + (struct builtin_record): Use gengtype. + * config-lang.in (gtfiles): Add builtins.c. + + * Make-lang.in (gt-java-class.h, gt-java-constants.h, + gt-java-decl.h, gt-java-expr.h, gt-java-jcf-parse.h, + gt-java-jcf-write.h, gt-java-lang.h, gt-java-mangle.h, + gt-java-parse.h, gtype-java.h): Add rules to generate. + (parse.o): Add dependency on gt-java-parse.h, gt-java.h. + (class.o): Add dependency on gt-*.h. + (constants.o): Likewise. + (decl.o): Likewise. + (expr.o): Likewise. + (jcf-parse.o): Likewise. + (jcf-write.o): Likewise. + (lang.o): Likewise. + * config-lang.in (gtfiles): New. + * class.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. + * constants.c: Replace uses of ggc_add_* with GTY markers. + Include gt-*.h. + * decl.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. + * expr.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. + * java-tree.h: Replace uses of ggc_add_* with GTY markers. + * jcf-parse.c: Replace uses of ggc_add_* with GTY markers. + Include gt-*.h. + * jcf-write.c: Replace uses of ggc_add_* with GTY markers. + Include gt-*.h. + * lang.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. + * mangle.c: Replace uses of ggc_add_* with GTY markers. Include + gt-*.h. + * parse.y: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. + Include gtype-java.h. + +2002-06-02 Tom Tromey + + Fix for PR java/5913: + * parse.y (patch_binop): Call patch_string on op1. + +2002-06-02 Tom Tromey + + Fix for PR java/1343, PR java/6336: + * parse.y (make_nested_class_name): Remove extraneous `else'; fix + formatting. Changed return type. + (anonymous_class_counter): Moved to top of file. + (maybe_make_nested_class_name): Append number to class name for + function-local classes. + +2002-05-28 Zack Weinberg + + * decl.c, jcf-parse.c, parse.y, typeck.c: Include real.h. + * Make-lang.in: Update dependency lists. + +2002-05-18 Mark Mitchell + + * gjavah.c (throwable_p): Do not free the name of the class after + passing it to find_class. + * java-tree.h (CLASS_BEING_LAIDOUT): Remove duplicate definition. + * jcf-io.c (dirent.h): Include it. + (fnmatch.h): Likewise. + (compare_path): New function. + (java_or_class_file): Likewise. + (memoized_dirlist_entry): New type. + (memoized_dirlist_lookup_eq): New function. + (memoized_dirlists): New variable. + (caching_stat): New function. + (memoized_class_lookup_eq): New function. + (memoized_class_lookups): Likewise. + (find_class): Use memoized_class_lookups and caching_stat. + * jcf.h (JCF_USE_SCANDIR): Define. + * parse.y (java_expand_classes): Write the class files in reverse + order. + +2002-05-16 Rainer Orth + + * Make-lang.in: Allow for PWDCMD to override hardcoded pwd. + +2002-05-13 Mark Mitchell + + * jcf-write.c (write_classfile): Unlink the temporary file if it + cannot be renamed. Use concat to build up the name of the + temporary file. + +2002-05-08 Mark Mitchell + + * jcf-write.c (write_classfile): Write the file to a + temporary file and then rename it. + +2002-05-07 Tom Tromey + + * gjavah.c (throwable_p): Use xstrdup, not strdup. + + Fix for PR java/1200: + * gjavah.c (throwable_p): New function. + (decode_signature_piece): Use it. A `WeakReference' isn't the + same as a `jweak'. + Include hashtab.h. + (gcjh_streq): New function. + +2002-05-07 Andreas Jaeger + + * parse.y (finish_for_loop): Fix if statement. + +2002-05-06 Tom Tromey + + Fix for PR java/5941: + * parse.y (finish_for_loop): Set SUPPRESS_UNREACHABLE_ERROR for + loop update expression. + (java_complete_lhs): Use SUPPRESS_UNREACHABLE_ERROR. + * java-tree.h (SUPPRESS_UNREACHABLE_ERROR): New macro. + +2002-05-04 Mark Wielaard + + For PR java/6519: + * parse.y (build_string_concatenation): Return just op1 only when op2 + is null and op1 is a STRING_CST, otherwise always construct a + StringBuffer. + +2002-04-27 Tom Tromey + + For PR java/6382: + * parse.y (string_convert_int_cst): New function. + (merge_string_cste): Use it. + +2002-04-25 Neil Booth + + * java-tree.h (java_parse_file): Update. + (java_set_yydebug): Remove. + * jcf-parse.c (yydebug): Remove. + (java_set_yydebug): Die. + (java_parse_file): Update. + * lang.c (LANG_HOOKS_SET_YYDEBUG): Remove. + +2002-04-24 Tom Tromey + + For PR java/6425: + * parse.y (qualify_ambiguous_name) [case CALL_EXPR]: Always choose + EXPR_WFL_QUALIFICATION of qual_wfl. + +2002-04-23 Per Bothner + + * expr.c (PRE_JSR): Call NOTE_LABEL for return address. + * java-tree.h (BCODE_RETURN_TARGET): Removed - never set. + (BCODE_TARGET): Remove BCODE_RETURN_TARGET. + +2002-04-23 Tom Tromey + + For PR java/6314: + * jvspec.c (lang_specific_driver): Use --resource, not -R. Also + recognize `-fcompile-resource='. + * gcj.texi (Invoking gcj): Use --resource, not -R. Expanded text + a bit. + +2002-04-22 Alexandre Petit-Bianco + + * jcf-parse.c: (yyparse): Don't prepend "./" to relative + paths. Fixes PR java/2791. + +2002-04-19 Andrew Haley + + * jcf-write.c (push_long_const): lo, hi: New variables. + Use rshift_double to extract the high part of a 64-bit long. + Use WORD_TO_INT to extract the low part. + + * jcf-parse.c (get_constant): CONSTANT_Integer: Use an unsigned + HOST_WIDE_INT for num. Use JPOOL_UINT to get it. + CONSTANT_Double: Use JPOOL_UINT to get both halve of a double. + +2002-04-18 Neil Booth + + * typeck.c (incomplete_type_error): Remove. + +2002-04-18 Bryce McKinlay + + * class.c (make_class_data): Set DECL_ALIGN on static class data, + for hash synchronization. + * expr.c (java_expand_expr): Set DECL_ALIGN on static array objects. + * decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for + class_type_node. + +2002-04-16 Mark Wielaard + + * jcf-write.c (generate_bytecode_insns): Only write const_0 if not + negative zero. + +2002-04-16 Bryce McKinlay + + Fix for PR java/6294: + * parse.h (INNER_INTERFACE_MODIFIERS): Allow ACC_PRIVATE for inner + interfaces. + +2002-04-15 Bryce McKinlay + + Fix for PR java/6085: + * parse.y (patch_method_invocation): Always use build_access_to_thisn + to get enclosing "this" argument for inner-class constructor + invocation. Pass correct arguments to build_access_to_thisn. + +2002-04-10 Andreas Jaeger + + * gcj.texi (Input Options): Fix extdirs patch. + +2002-04-10 Anthony Green + + * jcf-path.c (jcf_path_init) : Clean up local extdirs declaration. + +2002-04-09 Anthony Green + + * gcj.texi (Input Options): Add --extdirs documentation. + * jcf-dump.c (OPT_extdirs): New macro. + (options): Add extdirs option. + (help): Describe --extdirs. + (main): Handle OPT_extdirs. + * gjavah.c (OPT_extdirs): New macro. + (options): Add extdirs option. + (help): Describe --extdirs. + (main): Handle OPT_extdirs. + * jcf-path.c (jcf_path_init): Add extdirs support. + (jcf_path_extdirs_arg): New function. + (extensions): New variable to hold extensions path entries. + * jvspec.c: Remove -fextdirs= when compiling main(). + * lang.c (java_decode_option): Handle -fextdirs=. + * jcf.h (jcf_path_extdirs_arg): Declare new function. + * Make-lang.in: Compile jcf-path with version info for use in + identifying the appropriate libgcj.jar. + +2002-04-08 Tom Tromey + + For PR libgcj/5303: + * .cvsignore: Added rmic.1 and rmiregistry.1. + * gcj.texi (Top): Link to new nodes. + (Invoking rmic): New node. + (Invoking rmiregistry): Likewise. + * Make-lang.in (java.generated-manpages): Added rmic.1 and + rmiregistry.1. + (java.maintainer-clean): Likewise. + ($(srcdir)/java/rmic.1): New target. + ($(srcdir)/java/rmiregistry.1): Likewise. + (java.install-man): Handle rmic.1 and rmiregistry.1. + +2002-04-08 Bryce McKinlay + + * gcj.texi (Invocation): Update JvAttachCurrentThread documentation. + Add note about handling uncaught exceptions. Add an exception handler + to example. + +2002-04-08 Bryce McKinlay + + * parse.y (resolve_qualified_expression_name): Clear "from_super" flag + after using it to patch CALL_EXPR. + +2002-04-08 Bryce McKinlay + + * gcj.texi (Invocation): Document CNI invocation API. + +2002-04-04 Neil Booth + + * expr.c (truthvalue_conversion): Rename. Update. + (expand_compare): Update. + * java-tree.h (java_truthvalue_conversion): New. + * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine. + +2002-04-01 Neil Booth + + * java-tree.h (java_mark_addressable): New. + * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine. + * typeck.c (mark_addressable): Rename, update. + +2002-04-01 Neil Booth + + * expr.c (build_java_binop): Update. + * java-tree.h (java_signed_type, java_unsigned_type, + java_signed_or_unsigned_type): Update. + * lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE, + LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New. + * parse.y (patch_binop): Update. + * typeck.c (signed_or_unsigned_type, unsigned_type, + signed_type): Update. + +2002-03-31 Neil Booth + + * lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine. + (java_dummy_print): Remove. + (lang_print_error): Rename. Exit early if inhibiting output. + (inhibit_error_printing_function): New. + (java_init): Don't set hook. + (lang_init_source): Use new boolean. + +2002-03-29 Martin Kahlert + + * parse.y (do_resolve_class): Fix infinite recursion. + +2002-03-29 Tom Tromey + + * parse.y (check_inner_circular_reference): Ignore incomplete + types. + +2002-03-29 Neil Booth + + * Make-lang.in (builtins.o): Update. + * boehm.c (get_boehm_type_descriptor): Update. + * builtins.c: Include langhooks.h. + * decl.c (java_init_decl_processing): Update. + * java-tree.h (java_type_for_mode, java_type_for_size): New. + * lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE): + Redefine. + * typeck.c (type_for_mode, type_for_size): Update. + +2002-03-29 Martin Kahlert + + * lex.c (java_new_lexer): Alias "646" to DEFAULT_ENCODING. + +2002-03-28 Tom Tromey + + * except.c (expand_end_java_handler): If the handler type is NULL, + use java.lang.Throwable. Fixes PR java/5986. + +2002-03-28 Alexandre Petit-Bianco + + Fix for PR java/4715: + * jcf-parse.c (parse_source_file_3): New function. + (read_class): Call it. + (java_parse_file): Likewise. + +2002-03-28 Jan Hubicka + + * java/lang.c (java_init_options): Set flag_trapping_math to 0. + +2002-03-28 Bryce McKinlay + + * parse.y (resolve_package): Initialize "decl". + (lookup_package_type): Remove unused function. + +2002-03-28 Bryce McKinlay + + Fix for PR java/5993: + * parse.y (resolve_package): Return the decl if resolution was + successful. Don't special case "java.lang" and "java.lang.reflect" + packages. Set type_name to the merged identifier. + (resolved_qualified_expression_name): Print error using "name" if + resolve_package returns NULL_TREE. + +2002-03-27 Tom Tromey + + * expr.c (expand_invoke): Don't generate null pointer check if + we're calling . + +2002-03-27 Neil Booth + + * expr.c (java_lang_expand_expr): Rename java_expand_expr, + fix prototype. + * java-tree.h (java_lang_expand_expr): Similarly. + * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. + (java_init): Don't set hook. + +2002-03-27 Bryce McKinlay + + Fix for PR java/5850: + * parse.y (lookup_field_wrapper): Call itself recursively for enclosing + context if field was not found in the current scope. + * expr.c (lookup_field): Don't look in enclosing contexts. + +2002-03-26 Tom Tromey + + Fix for PR java/5942: + * parse.y (init_src_parse): Added sanity check. + * parse.h (struct parser_ctxt) [modifier_ctx]: Array has 12 + elements, not 11. + +2002-03-26 Neil Booth + + * decl.c (lang_mark_tree): Rename java_mark_tree. + * java-tree.h (java_mark_tree): New. + * java-lang.c (LANG_HOOKS_MARK_TREE): Redefine. + +2002-03-25 Zack Weinberg + + * lex.c: Change java_perform_atof to take normal parameters + instead of a pointer to a parameter block. Call it directly + from java_lex. + +2002-03-22 Mark Wielaard + + Fix for PR java/5368: + * parse.y (resolve_qualified_expression_name): Use decl not field_decl + when printing error message. + +2002-03-25 Neil Booth + + * decl.c (maybe_build_cleanup): Remove. + +2002-03-22 Tom Tromey + + Andrew Haley + + * expr.c (build_field_ref): Don't build a check if the field is a + member of `this'. + +2002-03-21 Eric Blake + + Fix for PR java/6026: + * lex.c (java_lex): Fix parsing of consecutive floats. + +2002-03-21 Tom Tromey + + * parse.y (build_access_to_thisn): Stop when FROM is not an inner + class. + +2002-03-21 Neil Booth + + * cp-tree.h (pushdecl, pushlevel, poplevel, set_block, + insert_block, getdecls, kept_level_p, global_bindings_p): New. + +2002-03-20 Nic Ferrier + + * gcj.texi: @code{gcj} becomes @command{gcj}. + @code{gcc} becomes @command{gcc}. + GcjRaw changed to gnu.gcc.RawData. + +2002-03-20 Neil Booth + + * decl.c (start_java_method): Use new hook. + * lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine. + (java_init): Remove old hook. + +2002-03-18 Alexandre Petit-Bianco + + * builtins.c (define_builtin): Do nothing if `type' is null. + Fixes PR java/5876. + +2002-03-18 Bryce McKinlay + + * parse.y (parser_check_super_interface): Fix error message + grammar/order. + +2002-03-17 Kaveh R. Ghazi + + * jcf-parse.c (get_constant): Delete unused variables. + +2002-03-17 Neil Booth + + * java-tree.h (java_parse_file): New. + * jcf-parse.c (yyparse): Rename java_parse_file. + * lang.c (LANG_HOOKS_PARSE_FILE): Redefine. + +2002-03-16 Bryce McKinlay + + * parse.y (craft_constructor): Return the constructor decl. + (java_expand_classes): Update comments. + (lookup_method_invoke): Call fix_constructors immediately for + anonymous class. Fixes PR java/5935. + +2002-03-15 Anthony Green + + * jcf-parse.c (yyparse): Don't emit class registration + constructor when compiling resource files. + +2002-03-12 Kaveh R. Ghazi + + * lang.c (java_tree_code_type, java_tree_code_length, + tree_code_name): Delete. + (tree_code_type, tree_code_length, tree_code_name): Define. + (java_init): Don't try to copy into the various tree_code + arrays. + +2002-03-12 Tom Tromey + + * jcf-parse.c (get_constant) [CONSTANT_String]: String values are + UTF-8, not UCS-2. Fixes PR java/5923. + + * parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is + a call_expr wrapped in a convert. Fixes PR java/5848. + +2002-03-12 Bryce McKinlay + + * jcf-write.c (write_classfile): Improve error strings. + +2002-03-11 Eric Blake + + * lex.c: Adjust comments to GNU standards. + +2002-03-11 Eric Blake + + Fix for PR java/5902: + * lex.c (java_lex): Fix parsing of literals. + +2002-03-11 Bryce McKinlay + + * parse.y (patch_assignment): Wrap the right-hand-side with a save_expr + to prevent it getting evaluated twice in the store checking case. + * expr.c (build_java_arraystore_check): Unwrap SAVE_EXPR's when + examining OBJECT. + +2002-03-09 Bryce McKinlay + + * decl.c (java_init_decl_processing): Make sure class_type_node + alignment is not less than 64 bits if hash synchronization is enabled. + +2002-03-08 Per Bothner + + * parse.y (java_complete_lhs): Check if patch_assignment + returned an error-mark. + + * parse.y (try_builtin_assignconv): Don't special-case zero. + +2002-03-08 Per Bothner + + Fix for PR java/5812. + * expr.c (build_java_jsr): Take pc arguments, and do lookup_label + here instead of in JSR macro. Likewise with load_type_state call. + Do the latter on if the return_pc has been verified (the jsr returns). + (JSR): Now just call build_java_jsr. + +2002-03-07 Jeff Sturm + + * java/Make-lang.in (JAVA_TARGET_INSTALL_NAME): Define. + (java.install-common): Link native driver to + JAVA_TARGET_INSTALL_NAME. + +2002-03-05 David Billinghurst + + * builtins.c(cos_builtin): method_return_type ATTRIBUTE_UNUSED + * builtins.c(sin_builtin): Likewise + * builtins.c(sqrt_builtin): Likewise + +2002-03-03 Zack Weinberg + + * java/expr.c, java/jcf-parse.c, java/lex.c: + Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef + REAL_ARITHMETIC blocks unconditional. Delete some further + #ifdef blocks predicated on REAL_ARITHMETIC. + +2002-03-03 Kaveh R. Ghazi + + * class.c (init_class_processing): Use ARRAY_SIZE in lieu of + explicit sizeof/sizeof. + * decl.c (java_init_decl_processing): Likewise. + * jcf-parse.c (init_jcf_parse): Likewise. + * parse.y (init_src_parse): Likewise. + +2002-03-02 Per Bothner + + Make --CLASSPATH by a synonym for --classpath and -classpath. + Implement --bootclasspath. + * jcf-path.c (classpath_u): Rename static variable to classpath_user. + (classpath_l): Remove. + (jcf_path_CLASSPATH_arg): Remove. + (jcf_path_bootclasspath_arg): New function. + (jcf_path_seal): Simplify accordingly. + + * jcf.h (jcf_path_bootclasspath_arg): New declarations. + (jcf_path_CLASSPATH): Remove declaration. + * jvspec.c (jvgenmain_spec): Also accept -fbootclasspath*. + (lang_specific_driver): Translate -bootclasspath. + * lang-options.h: Add --bootclasspath. Update --CLASSPATH. + * lang.c (decode_lang_options): Do jcf_path_init first. + Handle -fCLASSPATH same as -fclasspath. Also process -fbootclasspath. + * gjavah.c: Also handle --bootclasspath. + Handle --CLASSPATH as a synonum for --classpath. + * jcf-dump.c: Likewise. + + "." is not part of system path, but is the default for --classpath. + * jcf-path.c (jcf_path_init): Don't add "." to sys_dirs. + (jcf_path_seal): Add "." if no CLASSPATH specified. + + * gcj.texi: Document changes. + +2002-03-01 Bryce McKinlay + + * expr.c (build_java_arraystore_check): Fix formatting. + +2002-02-28 Alexandre Petit-Bianco + + Fix for PR java/5758, java/5632: + * jcf-parse.c (load_class): Renamed local variable, consider `.' an + inner-class separator too. + * parse.y (do_resolve_class): New local `decl_result.' + Progressively build a name for what can have been loaded. + +2002-02-28 Bryce McKinlay + + * expr.c (java_array_data_offset): Removed function. + (JAVA_ARRAY_LENGTH_OFFSET): Removed macro. + (build_java_array_length_access): Obtain "length" value using a + COMPONENT_REF, instead of INDIRECT_REF and arithmetic. + (build_java_arrayaccess): Correct comment. Access "data" using a + COMPONENT_REF, and return an ARRAY_REF instead of an INDIRECT_REF. + (build_java_arraystore_check): New function. + (expand_java_arraystore): Use build_java_arraystore_check. + * parse.y (patch_assignment): Simplify code to insert a store check + when lvalue is an ARRAY_REF. Use build_java_arraystore_check. + * check-init.c (check_init): Update to reflect that an array length + access is now a COMPONENT_REF. + * gcj.texi (Code Generation): Improve documentation of + -fno-bounds-check. Add documentation for -fno-store-check. + * java-tree.h (flag_store_check): Declare. + (build_java_arraystore_check): Declare. + * lang.c (flag_store_check): Initialize to 1. + (lang_f_options): Add store-check option. + * jvspec.c: Don't pass store-check option to jvgenmain. + * lang-options.h: Add help string for -fno-store-check. + +2002-02-28 Neil Booth + + * decl.c (copy_lang_decl): Rename java_dup_lang_specific_decl. + * java-tree.h (java_dup_lang_specific_decl): New. + * lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine. + +2002-02-27 Zack Weinberg + + * builtins.c, decl.c: Delete traditional-mode-related code + copied from the C front end but not used, or used only to + permit the compiler to link. + +2002-02-22 Tom Tromey + + Fix for PR java/2369: + * jvspec.c (verify_class_name): New function. + (lang_specific_driver): Call it. + (JAVA_START_CHAR_P): New macro. + (JAVA_PART_CHAR_P): Likewise. + +2002-02-22 Per Bothner + + * class.c: Change vtable to be more compatible with g++ v3 abi. + (get_dispatch_table): Prepend offset-to-top (always 0) and + type_info pointer (currently unimplemented hence NULL) to vtable. + Specifically, prepend offset-to-top and typeinfo ptr (currently null). + (make_class_data): Variable dtable_start_offset is sizeof 2 pointers. + Adjust vtable pointers by dtable_start_offse - i.e. skip new words. + (build_dtable_decl): Add declarations for new fields. + +2002-02-20 Per Bothner + + * parse.y (patch_method_invocation): Set CAN_COMPLETE_NORMALLY on call + to finit$ (otherwise generate_bytecode_insns drops it). However, we + don't need to set it on the COMPOUND_EXPR - the caller does that. + +2002-02-20 Nic Ferrier + + * gcj.texi: Option `--classpath' becomes `--CLASSPATH.'Option + `--CLASSPATH' becomes `--classpath.' + * gjavah.c: Likewise. + * jcf-dump.c: Likewise. + * lang-options.h: Likewise. + * lang.c: Likewise. + * jcf-path.c: Updated comment. + (jcf_path_classpath_arg): Renamed `jcf_path_CLASSPATH_arg.' + (jcf_path_CLASSPATH_arg): Renamed `jcf_path_classpath_arg.' + * jcf.h (jcf_path_CLASSPATH_arg): Ditto. + (jcf_path_CLASSPATH_arg): Ditto. + (classpath_u): Updated leading comment. + +2002-02-20 Per Bothner + + * builtins.c (check_for_builtin): New function. + (build_call_or_builtin): Remove. + * java-tree.h: Update accordingly. + * expr.c (expand_invoke): Use build + check_for_builtin instead + of build_call_or_builtin. + * parse.y (patch_invoke): Likewise. This avoids needlessly creating + a new CALL_EXPR node, which means we don't lose the CALL_USING_SUPER + flag (which had caused jcf-write to incorrectly emit invokevirtual). + +2002-02-17 Tom Tromey + + * java-tree.h (TYPE_STRICTFP): New macro. + (struct lang_type) [strictfp]: New field. + (CLASS_STRICTFP): New macro. + (METHOD_STRICTFP): New macro. + (struct lang_decl) [strictfp]: New field. + * parse.y (method_header): Disallow strictfp constructor or + abstract method. + (STRICT_TK): Move before MODIFIER_TK. + * parse.h (CLASS_MODIFIERS): Added ACC_STRICT. + (METHOD_MODIFIERS): Likewise. + (INTERFACE_MODIFIERS): Likewise. + * jcf-write.c (get_access_flags): Likewise. + * class.c (set_class_decl_access_flags): Recognize ACC_STRICT. + (add_method_1): Likewise. + (get_access_flags_from_decl): Likewise. + * jcf-dump.c (print_access_flags): Print in standard order. Also, + recognize strictfp flag. + * jcf.h (ACC_STRICT): New define. + +2002-02-12 David Billinghurst + + * class.c(build_utf8_ref): Move declaration of decl_size + +2002-02-07 Tom Tromey + + * gcj.texi (Input Options): --CLASSPATH does not suppress system + path. + +2002-02-04 Anthony Green + + * class.c (build_utf8_ref): Put UTF-8 constants into merged + sections if available. + +2002-02-04 Bryce McKinlay + + * parse.y (java_expand_classes): Fix typo in static field loop. + +2002-02-02 Richard Henderson + + * class.c (add_field): Mark static fields external. + (build_class_ref): Remove redundant set. + * parse.y (java_expand_classes): Mark static fields of classes + to be compiled as local. + * jcf-parse.c (parse_class_file): Likewise. + +2002-02-02 Nic Ferrier + + * gcj.texi (About CNI): New node. + +2002-02-01 Craig Rodrigues + + PR java/5080 + * jcf-parse.c : Check for HAVE_LOCALE_H before using + setlocale() with LC_CTYPE as a parameter. + * jv-scan.c: Same. + +2002-01-31 Joseph S. Myers + + * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version): + Follow GNU Coding Standards for --version. + +2002-01-28 Tom Tromey + + * expr.c (build_jni_stub): Ensure storage for `meth' is + generated. + * parse.y (java_complete_expand_methods): Set + current_function_decl before building JNI stub. + +2002-01-26 Andreas Tobler + + * gcc/java/builtins.c (sqrt_builtin): Use BUILT_IN_SQRT, not + BUILT_IN_SQRTF. + +2002-01-22 Tom Tromey + + * decl.c (java_init_decl_processing): Use add_predefined_file. + Predefine RawData.java. + (predef_filenames): Removed. + (java_init_decl_processing): Don't register predef_filenames. + * jcf-parse.c (add_predefined_file): New function. + (predefined_filename_p): Rewrote. + (predefined_filename_p): No longer static. + * decl.c (java_init_decl_processing): Call initialize_builtins. + * Make-lang.in (JAVA_OBJS): Added builtins.o. + (java/builtins.o): New target. + * builtins.c: New file. + * parse.y (patch_invoke): Use build_call_or_builtin. + * java-tree.h (build_call_or_builtin): Declare. + (initialize_builtins): Declare. + (java_set_exception_lang_code): Removed unused declaration. + (PREDEF_FILENAMES_SIZE): Removed. + (java_tree_index): Added JTI_PREDEF_FILENAMES. + (predef_filenames): New define. + (add_predefined_file): Declare. + (predefined_filename_p): Declare. + * expr.c (expand_invoke): Use build_call_or_builtin. + +2002-01-22 Kaveh R. Ghazi + + * parse.y (patch_switch_statement): Fix format specifier. + +2002-01-16 Tom Tromey + + More for PR java/5365: + * gjavah.c (print_stub_or_jni): Cause exception to be thrown by + default. + (process_file): Generate include for + java.lang.UnsupportedOperationExceptions. + +2002-01-15 Andreas Jaeger + + * .cvsignore: Add man pages. + +2002-01-15 Tom Tromey + + Fix for PR java/5365: + * gjavah.c (process_file): Turn class name into a file name. + +2002-01-14 Matthias Klose + + * gcj.texi: Fix whitespace and formatting errors in the + synopsis of the man pages. Update copyright. + +2002-01-14 Tom Tromey + + For PR libgcj/5303: + * Make-lang.in (java.install-man): Handle jv-convert man page. + (java.generated-manpages): Added jv-convert.1. + (java.uninstall): Remove jv-convert.1. + (java.maintainer-clean): Likewise. + ($(srcdir)/java/jv-convert.1): New target. + * gcj.texi (Top): Link to jv-convert node. + (Individual utilities): Likewise. + (Invoking jv-convert): New node. + +2001-01-10 Jeff Sturm + Martin Kahlert + + * jcf-parse.c (get_constant): Don't swap lo/hi for big + endian targets when HOST_BITS_PER_WIDE_INT >= 64. + +2002-01-03 Graham Stott + + * class.c (compile_resource_file): Update copyright date. + Constify filename parameter. + (java-tree.h): Update copyright date. + (compile_resource_file): Constify filename parameter. + +2002-01-03 Graham Stott + + * gcc/jcf-parse.c: Update copyright date. + (yyparse): Constify resource_filename. + +2002-01-02 Kaveh R. Ghazi + + * parse.y (src_parse_roots): Don't needlessly zero init. + +2001-12-31 Tom Tromey + + * parse.y (dump_java_tree): New function. + (source_end_java_method): Call it. + (end_class_declaration): Likewise. + * lang.c (java_decode_option): Call dump_switch_p. + +2001-12-28 Tom Tromey + + * gen-table.pl: Don't process characters after \uffff. Added + comment pointing to input file. + +2001-12-28 Kaveh R. Ghazi + + * gen-table.pl: Const-ify output. Document the location of a + suitable unicode input file. + + * chartables.h: Regenerate. + +2001-12-26 Kaveh R. Ghazi + + * chartables.h: Const-ify. + * gjavah.c (options): Likewise. + * jcf-dump.c (options): Likewise. + * jv-scan.c (options): Likewise. + * lex.c (java_start_char_p, java_part_char_p): Likewise. + * parse.y (binop_lookup): Likewise. + +2001-12-23 Kaveh R. Ghazi + + * Make-lang.in (keyword.h): Pass -C to gperf to const-ify + the static arrays that are output. + * jvspec.c (jvgenmain_spec): Make static. + * keyword.gperf (struct java_keyword, java_keyword): Const-ify. + * keyword.h: Regenerate. + * lang.c (string_option, process_option_with_no, lang_f_options, + lang_W_options): Const-ify. + * lex.c (java_lex): Likewise. + +2001-12-21 Richard Henderson + + * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Merge into .. + (get_boehm_type_descriptor): ... here. Arrange for the + TREE_TYPE to get set properly. + +2001-12-21 Richard Henderson + + * class.c (compile_resource_file): Set TREE_PUBLIC on the constructor + only if the target requires collect2. + + * class.c (build_class_ref): Mark _Jv_fooClass DECL_EXTERNAL. + +2001-12-20 Tom Tromey + + For PR java/4509: + * parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute + CAN_COMPLETE_NORMALLY for the node. + * jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't + generate code for second branch if first branch can't complete + normally. + (generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to + the loop head if the loop body can't complete normally. + +2001-12-20 Tom Tromey + + For PR java/4766: + * jcf-write.c (generate_bytecode_insns) [TRY_FINALLY_EXPR]: Handle + case where `finally' clause can't complete normally. + +2001-12-20 Tom Tromey + + Fixes PR java/5057: + * parse.y (analyze_clinit_body): Added this_class parameter. + Check for more cases where we must keep . + (maybe_yank_clinit): Cleaned up flow control. + +2001-12-20 Bryce McKinlay + + * decl.c (java_init_decl_processing): Don't initialize + finit_leg_identifier_node. + * java-tree.h (java_tree_index): Remove JTI_FINIT_LEG_IDENTIFIER_NODE. + (finit_leg_identifier_node): Remove. + (ID_FINIT_P): Don't check for JTI_FINIT_LEG_IDENTIFIER_NODE. + +2001-12-20 Bryce McKinlay + + * mangle.c (mangle_member_name): Don't special-case for + NO_DOLLAR_IN_LABEL. + * mangle_name.c (unicode_mangling_length): Likewise. + (append_unicode_mangled_name): Likewise. + * parse.y (make_nested_class_name): Remove dead NO_DOLLAR_IN_LABEL + code. + +2001-12-20 Bryce McKinlay + + * expr.c (build_java_array_length_access): Don't force null pointer + check unless flag_check_references is set. + +2001-12-20 Tom Tromey + + Fix for PR java/3417: + * parse.y (patch_assignment): Added special processing for + `return'. + (patch_return): Don't convert booleans to integers, and don't + special-case `null'. + +2001-12-20 Joseph S. Myers + + * config-lang.in (diff_excludes): Remove. + +2001-12-17 Joseph S. Myers + + * gcj.texi: Update link to GCC manual. + +2001-12-17 Tom Tromey + + * parse.y (link_nested_class_to_enclosing): Removed useless + statement. + +2001-12-16 Tom Tromey + + * mangle.c (mangle_method_decl): Never emit `C2' constructor. + Fixes PR java/5088. + +2001-12-16 Joseph S. Myers + + * ChangeLog, Make-lang.in, class.c, expr.c, gcj.texi, java-tree.h, + jcf-parse.c, jcf-write.c, lex.c, parse.h, parse.y, verify.c: Fix + spelling errors. + +2001-12-16 Kaveh R. Ghazi + + * lex.c (java_read_unicode, java_lex): Use hex_p/hex_value. + +2001-12-16 Bryce McKinlay + + * decl.c (java_init_decl_processing): Build otable_type correctly. + otable_decl is an otable_type. + +2001-12-15 Bryce McKinlay + + * java-tree.h (otable_methods, otable_decl, otable_syms_decl, + otable_type, otable_ptr_type, method_symbol_type, + method_symbols_array_type, method_symbols_array_ptr_type): New + field/global tree definitions. + (flag_indirect_dispatch): New flag. + * decl.c (java_init_decl_processing): Initialize new otable and + otable_syms type nodes and decls. Add new field "index" to + method_type_node. + * class.c (build_method_symbols_entry): New function. + (make_method_value): Set "index" to to method's vtable index for + virtual methods when indirect-dispatch is not used. + (make_class_data): For indirect-dispatch, don't emit the dtable_decl, + and set vtable_method_count to -1. Set otable and otable_syms field + if indirect-dispatch is used and there was something to put in them. + (build_method_symbols_entry): New function. + (emit_offset_symbol_table): New function. + * expr.c (get_offset_table_index): New function. + (build_invokevirtual): Build array reference to otable at the index + returned by get_offset_table_index, and use the result as the vtable + offset. + (build_invokeinterface): Similar. + * jcf-parse.c (yyparse): If indirect-dispatch, call + emit_offset_symbol_table at the end of compilation, after all classes + have been generated. + * jvspec.c: Don't pass findirect-dispatch to jvgenmain. + * lang.c (flag_indirect_dispatch): Define. + (lang_f_options): Add indirect-dispatch flag. + +2001-12-14 Matthias Klose + + * gcj.texi: Markup for man page generation. Document missing + options printed by --help. + Terminate description of gij's -ms option with a dot. + * Make-lang.in ($(srcdir)/java/*.1): New targets. + (java.generated-manpages java.install-man, java.uninstall, + java-maintainer-clean) Updated. + +2001-12-14 Hans Boehm + + * class.c (get_dispatch_table): Fix java vtable layout + for TARGET_VTABLE_USES_DESCRIPTORS. + * decl.c (java_init_decl_processing): Initialize + alloc_no_finalizer_node, finalize_identifier_node. + * expr.c (class_has_finalize_method): New function. + (expand_java_NEW): Generate calls for finalizer-free allocation. + (build_invokevirtual): Fix java vtable layout for + TARGET_VTABLE_USES_DESCRIPTORS. + * java-tree.h (enum java_tree_index): New entries: + JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE. + (alloc_no_finalizer_node, finalize_deintifier_node): New macros. + (class_has_finalize_method): declare. + (HAS_FINALIZER_P): New macro. + * parse.y (patch_invoke): Generate calls for finalizer-free + allocation. + +2001-12-12 Matthias Klose + + * Make-lang.in: JAVA_INSTALL_NAME, JAVA_CROSS_NAME: Remove + whitespace at end of line. + +2001-12-11 Tom Tromey + + * lex.c (java_init_lex): Define wfl_to_string as + gnu.gcj.runtime.StringBuffer unless generating bytecode. + +2001-12-11 Jeff Sturm + + * class.c (make_method_value): Use null_pointer_node to + represent empty exception table. + +2001-12-10 Tom Tromey + + * check-init.c (check_init) [SWITCH_EXPR]: Use SWITCH_HAS_DEFAULT. + +2001-12-10 Douglas B. Rupp + + * Make-lang.in (jvspec.o): Add $(OUTPUT_OPTION). + +2001-12-09 Per Bothner + + * check-init.c (current_switch_has_default): New static field. + (check_init): Case DEFAULT_EXPR: Set current_switch_has_default. + Case SWITCH_EXPR: Save/restore current_switch_has_default. If no + DEFAULT_EXPR seen, simulate a default alternative that copies state. + +2001-12-09 Tom Tromey + + * check-init.c (check_init): Don't allow pre- or post- increment + or decrement of final variable. + (final_assign_error): Minor error message rewording. + +2001-12-08 Tom Tromey + + * java-tree.h: Fixed typo. + + * gjavah.c (decompile_method): Don't decompile to `return this' + for static methods. + + * gjavah.c (cxx_keywords): Re-sorted. + * lex.c (cxx_keywords): Re-sorted. + + * gjavah.c (HANDLE_METHOD): Set `decompiled' before doing anything + else. + + * gjavah.c (print_namelet): Clear subnamelets. + (HANDLE_METHOD): Set `method_printed' earlier. + +2001-12-07 Tom Tromey + + * lang.c (lang_f_options): Added + optimize-static-class-initialization. + (java_decode_option): Removed special case. + +2001-12-07 Per Bothner + + * check-init.c (check_init): Fix typo freeing memory twice. + +2001-12-05 Per Bothner + + Restore support for static class initialization optimization. + * java-tree.h (STATIC_CLASS_INIT_OPT_P): Re-enable. + * check-init.c (check_int): At end of BLOCK handle initialization + blocks, which used to be done in java_complete_expand_method but did + not handle the case where check_for_initialization might allocate + more than a word of bits. + * decl.c (lang_make_tree): The smic field is now a tree. + * expr.c (build_class_init): Set DECL_FUNCTION_INIT_TEST_CLASS field. + * java-tree.h (DECL_FUNCTION_INIT_TEST_TABLE): New macro. + + * parse.y (emit_test_initialization): Combine hash_lookup calls. + + * java-tree.h (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): + Change from a hash table to a list. + (struct_lang_decl): Change field 'smic' to match. + * class.c (add_method_1): Initialize + DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND to null list. + * parse.y (adjust_init_test_initialization): Removed - inlined into - + (java_expand_method_bodies): -here, since 'smic' is now a list. + (patch_invoke): Add to 'smic' list, instead of hash_lookup. + + * check-init.c (WORD_SIZE): Use BITS_PER_UNIT. + + * class.c (java_hash_compare_tree_node): Fix casts. + +2001-12-04 Per Bothner + + * check-init.c: Handle definite unassignment to finals in addition + to definite assignment. + (loop_current_locals): New field. + (num_current_locals, int start_current_locals, num_current_words): + Make static. + (SET_P, CLEAR_P, SET_BIT): Add needed but missing parentheses. + (ASSIGNED_P, UNASSIGNED_P, SET_ASSIGNED, SET_UNASSIGNED, + CLEAR_ASSIGNED, CLEAR_UNASSIGNED): New macros. + (get_variable_decl, check_final_reassigned): New functions. + (check_init, check_bool_init): Modify as needed for checking finals. + (check_for_initialization): Take extra parameter and return void. + Do extra start-up logic to check final fields for assignment. + * parse.y (check_static_final_variable_assignment_flag, + reset_static_final_variable_assignment_flag, check_final_assignment, + check_final_variable_local_assignment_flag, + reset_final_variable_indirect_assignment_flag, + reset_final_variable_global_assignment_flag): Remove functions. + (java_complete_expand_methods, outer_field_access_fix, + patch_assignment): Remove no-longer used logic. + * java-tree.h (DECL_FIELD_FINAL_IUD): Change usage and comments. + * parse.y (register_fields, java_complete_tree): Update accordingly. + + * check-init.c (ALLOC_WORDS/FREE_WORDS): Use xmalloc/free, not alloca. + (DECLARE_BUFFERS, RELEASE_BUFFERS, ALLOC_BUFFER, FREE_BUFFER): New. + (check_cond_init, check_bool2_init): Use DECLARE_BUFFERS. + + * java-tree.h (STATIC_CLASS_INIT_OPT_P): Temporarily turn off. + + * java-tree.h (DECL FINAL): New bit-field. + (METHOD_FINAL, FIELD_FINAL, CLASS_FINAL): Define as DECL_FINAL. + (LOCAL_FINAL_P): Use DECL_FINAL rather than old LOCAL_FINAL. + (DECL_INIT_CALLS_THIS): New macro. + (struct lang_decl): New bit-field init_calls_this. + (DECL_FUNCTION_ALL_FINAL_INITIALIZED, DECL_FIELD_FINAL_LIIC, + DECL_FIELD_FINAL_IERR, LOCAL_FINAL, TYPE_HAS_FINAL_VARIABLE + (DECL_BIT_INDEX): Change to use pointer_alias_set since we now + use it for both local variables and final fields. + (struct lang_decl_var): Remove bit-fields final_liic, final_ierr, + and local_final. + (struct lang_type): Remove hfv bit-field. + (check_for_initialization): Change to return void. + + * java-tree.h (IS_ARRAY_LENGTH_ACCESS): New macros. + * expr.c (build_java_array_length_access): Set IS_ARRAY_LENGTH_ACCESS. + * check-init.c (final_assign_error): New helper function. + (check_final_reassigned, check_init): Use it. + (check_init): Also check IS_ARRAY_LENGTH_ACCESS for ARRAY.length. + + * java-tree.h (struct lang_decl, struct lang_decl_var): Change all + bit-fields to unsigned. + +2001-12-03 Per Bothner + + * parse.y (patch_binop): Minor constant folding. + + * parse.y (build_current_thisn): Shorter 'buffer'. + +2001-12-03 Per Bothner + + * decl.c (complete_start_java_method): Now generate TRY_FINALLY_EXPR + instead of CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR. + * jcf-write.c (generate_bytecode_insns): Remove support for + CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR as they are no longer used. + * check-init.c (check_init): Likewise. + +2001-12-03 Per Bothner + + * verify.c (subroutine_nesting): New function. + (verify_jvm_instructions): Use it to fix logic for checking that + we're done with the current subroutine. + + * verify.c (verify_jvm_instruction): For OPCODE_checkcast and + OPCODE_instanceof use POP_TYPE macro for better diagnostics. + +2001-12-03 Per Bothner + + * jcf.h: Fix obvious typo in comment. + * typeck.c (build_null_signature): Add comment. + +2001-12-03 Neil Booth + + * expr.c: Remove leading capital from diagnostic messages, as + per GNU coding standards. + * jcf-io.c: Similarly. + * jcf-parse.c: Similarly. + * jv-scan.c: Similarly. + * jvspec.c: Similarly. + * mangle.c: Similarly. + +2001-12-02 Tang Ching-Hui + Alexandre Petit-Bianco + + * expr.c (build_java_arrayaccess): Call save_expr on array for + correct evaluation order, modified comment, fixed indentation. + * parse.y: (patch_assignment): Correctly extract the array base + from the tree generate by build_java_arrayaccess, added comments. + (patch_array_ref): Remove SAVE_EXPR on ARRAY_REF. + Fixes PR java/3096, PR java/3803, PR java/3965. + +2001-12-01 Neil Booth + + * expr.c (expand_byte_code): Remove trailing periods from messages. + * jcf-parse.c (load_class, jcf_parse): Similarly. + * jcf-write.c (generate_classfile): Similarly. + * lex.c (java_lex): Similarly. + +2001-11-30 Bryce McKinlay + + * class.c (add_interface_do): Set BINFO_VPTR_FIELD. + +2001-11-29 Joseph S. Myers + + * Make-lang.in (java.generated-manpages): New dummy target. + +2001-11-27 Rainer Orth + + * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks + ASM_FINAL_SPEC. + (lang_specific_pre_link): Use set_input to set input_filename. + Append `main' here. + * jvgenmain.c (usage): Append literal `main' to CLASSNAME. + (main): Fix definition. + Strip `main' from classname. + Fixes PR java/227. + +2001-11-18 Roger Sayle + + * parse.h (java_expand_switch): Remove old prototype. + +2001-11-18 Tom Tromey + + Fix for PR java/1401: + * jcf-write.c (generate_bytecode_insns) [binop]: Handle case where + arg0 is null. + (generate_bytecode_insns) [MODIFY_EXPR]: Handle `OP=' case + correctly. + +2001-11-18 Neil Booth + + * lang.c (finish_parse): Rename to java_finish. + (LANG_HOOKS_FINISH, java_finish): New. + +2001-11-15 Neil Booth + + * decl.c (init_decl_processing): Rename java_init_decl_processing. + * java-tree.h: New prototype. + * lang.c (java_init): Update prototype. Combine with old init_parse. + +2001-11-13 Tom Tromey + + * gjavah.c (method_signature): New global. + (HANDLE_METHOD): Set it. + (decompile_return_statement): New function. + (decompile_method): Use it. + (print_method_info): Removed `synth' argument. + +2001-11-09 Neil Booth + + * java-tree.h (java_set_yydebug): New. + * jcf-parse.c (set_yydebug): Rename java_set_yydebug. + * lang.c (LANG_HOOKS_SET_YYDEBUG): Override. + (print_lang_decl, print_lang_type, print_lang_identifier, + print_lang_statistics, lang_print_xnode): Remove. + +2001-11-09 Neil Booth + + * jcf-parse.c (init_lex): Remove. + * lang.c (language_string, lang_identify): Remove. + (struct lang_hooks): Constify. + (LANG_HOOKS_NAME): Override. + (init_parse): Update. + +2001-11-08 Andreas Franck + + * Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle + program_transform_name the way suggested by autoconf. + (java.install-common): Also transform auxiliary program names with + program_transform_name. + +2001-11-08 Tom Tromey + + * parse.y (trap_overflow_corner_case): New rule. + (unary_expression): Use it. + * lex.c (java_init_lex): Don't set minus_seen. + (yylex): Don't use minus_seen. Communicate overflow to parser for + it to handle. + (error_if_numeric_overflow): New function. + * parse.h (minus_seen): Removed field. + (JAVA_RADIX10_FLAG): New define. + +2001-11-07 Tom Tromey + + Patch for PR java/1414: + * parse.y (case_label_list): New global. + (goal): Register case_label_list with GC. + (java_complete_lhs): Save new case on case_label_list. + (patch_switch_statement): Check for duplicate case labels. + +2001-11-07 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Removed unused third argument. + (java_complete_lhs): Removed unused third argument to patch_assignment. + +2001-11-06 Neil Booth + + * lang.c: Include langhooks-def.h. + * Make-lang.in: Update. + +2001-10-31 Zack Weinberg + + * Make-lang.in: Replace $(INTL_TARGETS) with po-generated. + +2001-10-29 Bryce McKinlay + + * mangle.c (find_compression_record_match): Don't match compression + records for package name elements unless they occur at the start of + the name. Fix for PR java/4717. + +2001-10-25 Bryce McKinlay + + * expr.c (expand_java_field_op): Don't special-case references to + java.lang.PRIMTYPE.TYPE. + (build_primtype_type_ref): Removed. + * java-tree.h (build_primtype_type_ref): Remove prototype. + * parse.y (maybe_build_primttype_type_ref): Removed. + (complete_function_arguments): Don't special-case references to + java.lang.PRIMTYPE.TYPE. + (patch_assignment): Likewise. + (array_constructor_check_entry): Likewise. + +2001-10-24 Alexandre Petit-Bianco + + * mangle.c (static tree compression_table): Fixed leading comment. + * parse.h (struct parser_ctxt): Fixed field comment. + * parse.y (check_pkg_class_access): New prototype, fixed leading + comment, new parameter used to emit error only if passed as true. + (parse_check_super): Pass extra argument to check_pkg_class_access. + (do_resolve_class): Likewise. + (process_imports): Likewise. + (read_import_dir): Fixed indentation. + (find_in_imports_on_demand): New local class_type_name. Local + node_to_use deleted. while loop changed into for loop. Report + multiple definition only for accessible classes. Improved error + message. + (start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS + assigned to parameter list, fixed indentation. while loop changed + into for loop, restore TREE_CHAIN on local `tem' before the next + iteration. + +2001-10-23 Richard Kenner + + * lang.c (lang_get_alias_set): Deleted. + +2001-10-21 Kaveh R. Ghazi + + * gjavah.c (jni_print_char): Fix thinko in last change. + + * gjavah.c (jni_print_char, decode_signature_piece): Use + safe-ctype macros and/or fold extra calls into fewer ones. + * lex.c (java_read_unicode, java_lex): Likewise. + * lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT, + JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise. + * mangle_name.c (append_unicode_mangled_name, + unicode_mangling_length): Likewise. + +2001-10-17 Richard Henderson + + * Make-lang.in (java/lang.o): Depend on langhooks.h. + +2001-10-15 Alexandre Petit-Bianco + + * lang.c (langhooks.h): Included. + (LANG_HOOKS_INIT): Redefined. + (LANG_HOOKS_INIT_OPTIONS): Likewise. + (LANG_HOOKS_DECODE_OPTION): Likewise. + (struct lang_hooks lang_hooks): New initialization. + +2001-10-11 Per Bothner + + * parse.y (patch_synchronized_statement): Use a TRY_FINALLY_EXPR + rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair. + The former is simpler, and jcf-write.c handles it better. + (java_complete_lhs): No longer need to handle CLEANUP_POINT_EXPR + or WITH_CLEANUP_EXPR. + * jcf-write.c: Revert Alex's change from 2000-10-18. It is no + longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine. + + * parse.y (patch_if_else_statement): If the condition is constant, + optimize away the test. + +2001-10-09 Alexandre Petit-Bianco + + * parse.y (patch_cast): Call patch_string on the first operand of + the incoming node, update it if necessary. Fixes PR java/4510. + +2001-10-09 Bryce McKinlay + + * parse.y (find_as_inner_class): Don't disregard the enclosing scope + when name qualifier matches a package name. + +2001-10-08 Tom Tromey + + Fix for PR java/4489: + * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always + force a new label when computing `body_block'. + +2001-10-07 Kaveh R. Ghazi + + * jcf-io.c (format_uint): Const-ify. + * lang.c (java_tree_code_type, java_tree_code_length): Likewise. + * lex.c (java_get_line_col): Likewise. + * parse.y (build_incdec): Likewise. + +2001-10-05 Alexandre Petit-Bianco + + * parse.y (register_incomplete_type): Set JDEP_SUPER to be given + a NULL enclosing context if appropriate. Fixes PR java/4466. + +2001-10-03 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Use lvalue's original TYPE when + building the final COMPOUND_EXPR. + (try_reference_assignconv): Fixed leading comment. + +2001-09-26 Alexandre Petit-Bianco + + * parse.y (check_final_variable_indirect_assignment): For + COMPOUND_EXPR, return only if finals were found initialized + properly, if not, keep on checking. + (check_final_variable_global_assignment_flag): New local + error_found, set when appropriate and used to decide whether to + report uninitialized finals. Fixed typo in comment. + +2001-09-22 Alexandre Petit-Bianco + + * decl.c (init_decl_processing): Fixed typo in predef_filenames + last three initializations. Fixes PR java/4360. + +2001-09-21 Richard Henderson + + * class.c (get_dispatch_table): Handle function descriptors. + (build_dtable_decl): Likewise. + * expr.c (build_invokevirtual): Likewise. + +2001-09-20 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Build class initialization + when static finals are used to qualify method invocation. + Fixes PR java/4366. + +2001-09-19 Alexandre Petit-Bianco + + * parse.h: (WFL_STRIP_BRACKET): Re-written using + build_type_name_from_array_name. + (STRING_STRIP_BRACKETS): New macro. + * parse.y (build_type_name_from_array_name): New function. + (array_creation_expression:): Accumulate []s instead of [s. + (cast_expression:): Accumulate []s instead of [s after cast type + name. + (build_array_from_name): Local string deleted, use + build_type_name_from_array_name. + (build_unresolved_array_type): Accumulate []s instead of [s after + type name. + (register_fields): Fixed comment. + (resolve_class): Local name, base deleted, new locals tname and + array_dims. Use build_type_name_from_array_name. Use array_dims to + build array type. + (purify_type_name): Use STRING_STRIP_BRACKETS. + +2001-09-18 Andreas Jaeger + + * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout. + * jv-scan.c: Likewise. + +2001-09-17 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Inner class creation context + check not enforced within constructors. Fixes PR java/1873. + +2001-09-16 Tom Tromey + + * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call + NOTE_PUSH for single-case push. Fixes PR java/4189. + +2001-09-13 Alexandre Petit-Bianco + + * java-tree.h (TYPE_IMPORT_LIST): New macro. + (TYPE_IMPORT_DEMAND_LIST): Likewise. + (struct lang_type): New fields import_list and import_demand_list. + * parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and + TYPE_IMPORT_DEMAND_LIST with ctxp counterparts. + (do_resolve_class): New local saved_enclosing_type, initialized, + passed as parameter to find_in_imports and find_in_imports_on_demand. + (find_in_imports): Added paramater enclosing_type, use its + TYPE_IMPORT_LIST when applicable. + (find_in_imports_on_demand): Added parameter enclosing_type, use + its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals + declaration and initialization. + (fold_constant_for_init): Switch/restore current_class to the + appropriate context. + +2001-09-13 Mark Mitchell + + * verify.c (verify_jvm_instructions): Fix typo. + +2001-09-13 Kaveh R. Ghazi + + * expr.c (expand_invoke): Const-ification. + * parse.y (patch_method_invocation): Likewise. + +2001-09-12 Kaveh R. Ghazi + + * gjavah.c (cxx_keywords): Const-ification. + * keyword.gperf (java_keyword): Likewise. + * lang.c (java_tree_code_name): Likewise. + * lex.c (cxx_keywords): Likewise. + * parse.y (java_parser_context_suspend, merge_string_cste): Likewise. + +2001-09-11 Richard Henderson + + * parse.h (ctxp_for_generation): Mark extern. + +2001-09-10 Richard Henderson + + * class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl. + +2001-09-07 Matt Kraai + + * typeck.c (java_array_type_length, build_prim_array_type): + Represent empty arrays by NULL index. + +2001-09-06 Alexandre Petit-Bianco + + * java-tree.h (compile_resource_file): Grouped with other prototypes. + * jvspec.c (lang_specific_driver): Removed unused local `ptr.' + +2001-09-06 Anthony Green + + * class.c (O_BINARY): Define if necessary. + (registerResource_libfunc): Declare. + (init_class_processing): Initilize registerResource_libfunc. + (compile_resource_file): New function. + * java-tree.h (resource_name): Declare. + (compile_resource_file): Declare. + * jcf-parse.c (yyparse): Handle compiling java resource files. + * lang.c (java_decode_option): Handle -fcompile-resource option. + * jvspec.c (lang_specific_driver): Handle -R flag for compiling + resource files. + * gcj.texi (Code Generation): Add documentation for -R flag. + +2001-09-05 Alexandre Petit-Bianco + + * jcf-write.c (generate_classfile): Issue an error in case of + field/initial value mismatch. + * parse.y (analyze_clinit_body): Keep if an array is + being initialized and we're generating bytecode. + (java_complete_lhs): In MODIFY_EXPR section: added comments, + set DECL_INITIAL properly when appropriate. + Fixes PR java/4230 + Fixes PR java/4204 + +2001-09-01 Per Bothner + + * parse.y (maybe_yank_clinit): A field without an initializer is not + relevant. All initializers except static final and constant require + , regardless of flag_emit_class_files. + +2001-08-31 Per Bothner + + * class.c (set_constant_value): When not emitting class files, then a + String ConstantValue is a utf8const_ptr_type. + +2001-08-30 Per Bothner + + * jcf-write.c (generate_classfile): Check that field is primitive + or string before emitting ConstantValue attribute. + +2001-08-30 Per Bothner + + * parse.y (resolve_qualified_expression_name): If creating a + COMPOUND_EXPR, set it's type correctly. + +2001-08-30 Per Bothner + + * jcf-io.c (open_class): Set filename field. + + * jcf-parse,c (parse_class_file): Set current_function_decl + for better error message when Code attribute is missing. + + * lang.c (put_decl_node, lang_print_error): Re-arrange for + better diagnostics, especially for constructors. + +2001-08-30 Per Bothner + + * jcf-write.c (generate_classfile): Don't write ConstantValue + attribute if field is not final, for compatibility with jdk. + + * jcf-write.c (generate_classfile): Convert ConstantValue values + to correct type. Work-around for front-end bug. + * class.c (set_constant_value): Error if constant has wrong type. + +2001-08-30 Per Bothner + + * jcf-dump.c (print_constant): Fix fencepost error so "Float" and + "Double" are printed at verbosity 1. + + * jcf-dump.c (main): Disable flag_print_attributes if --javap. + + * jcf-dump.c (SPECIAL_IINC): Remove unneeded casts to long. + +2001-08-30 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Don't verify final re-assignment here. + (java_complete_lhs): Verify assignments to finals calling + patch_assignment. Verify re-assignments to finals before calling + patch_assignment. + +2001-08-29 Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs. + Fixes PR java/1413 + +2001-08-28 Alexandre Petit-Bianco + + * lex.c (java_lex): new local found_hex_digits. Set and then used + in test to reject invalid hexadecimal numbers. + * parse.y (java_complete_tree): Prevent unwanted cast with + initialized floating point finals. + (patch_binop): Emit a warning when detecting a division by zero, + mark result not constant, don't simplify non integer division. + +2001-08-28 Per Bothner + + * jcf-write.c (generate_bytecode_insns): For increments and + decrements just recurse to push constant. Improvement on Mark's patch. + +2001-08-28 Mark Mitchell + + * jcf-write.c (generate_bytecode_insns): Generate an integer to + real conversion for increments and decrements of reals. + +2001-08-27 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Handle unresolved + qualified expressions, prevent numerical qualifiers, fixed typo. + Fixes PR java/4141 + +2001-08-24 Alexandre Petit-Bianco + + * parse.y (check_deprecation): Handle TYPE_DECL in a special case, + don't report anything but deprecated class when marked so. Handle + VAR_DECL. + (patch_method_invocation): Check deprecation on methods and types. + (patch_binop): code becomes an enum tree_code, added default: to + switch to handle that. Detect division by zero, try to fold and + return before using a subroutine. + +2001-08-23 Alexandre Petit-Bianco + + * jcf-parse.c (yyparse): Set magic to 0, don't issue error for a + file smaller than 4 bytes. + * parse.y (check_inner_circular_reference): New function. + (check_circular_reference): Likewise. + (array_initializer:): Accept {,}. + (java_check_circular_reference): Rewritten using + check_circular_reference and check_inner_circular_reference. + (java_complete_expand_method): Unconditionally save and restore + the unpurged exception list. + (build_dot_class_method_invocation): Unmangle signature parameter. + +2001-08-21 Tom Tromey + + * decl.c (init_decl_processing): Add `throws' field to method + descriptor. + * class.c (make_method_value): Compute `throws' field for method. + +2001-08-22 Alexandre Petit-Bianco + + * parse.y (resolve_inner_class): Keep local_enclosing to NULL if + circularity is detected. + (ctors_unchecked_throws_clause_p): Fixed leading comment. + +2001-08-17 Richard Henderson + + * class.c (emit_register_classes): Add align parameter to + call to assemble_integer. + +2001-08-16 Alexandre Petit-Bianco + + * jcf-parse.c (load_class): New locals saved and class_loaded. If + loading a class_or_name fails, try considering an innerclass name + and load the enclosing context. + * parse.y (resolve_inner_class): New function. + (find_as_inner_class): Added leading comment. + (register_incomplete_type): Keep the current context as enclosing + context for JDEP_FIELD dependencies. + (do_resolve_class): Locals new_class_decl and super initialized to + NULL. Call resolve_inner_class, explore the enclosing context + superclass if necessary. + Fixes PR java/4007 + +2001-08-16 Tom Tromey + + * jcf-dump.c (main): Updated for change to jcf_path_seal. + * gjavah.c (main): Updated for change to jcf_path_seal. + * lang.c (version_flag): New global. + (java_decode_option): Recognize `-version'. + (java_init): Update for change to jcf_path_seal. + * jcf.h (jcf_path_seal): Added `print' argument. + * jcf-path.c (jcf_path_seal): Added `print' argument. + +2001-08-13 Zack Weinberg + + * Make-lang.in (java/decl.o): Update dependencies. + * decl.c: Include libfuncs.h, don't include toplev.h. + +2001-08-12 Alexandre Petit-Bianco + + * decl.c (init_decl_processing): exception_type_node, + class_not_found_type_node, and no_class_def_found_type_node + initialized. predef_filenames augmented accordingly. + instinit_identifier_node initialized. + * java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed. + * java-tree.h (enum java_tree_index): New entries + JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE, + JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE. + (exception_type_node): New macro. + (class_not_found_type_node): Likewise. + (no_class_def_found_type_node): Likewise. + (instinit_identifier_node): Likewise. + (PREDEF_FILENAMES_SIZE): Adjusted. + (TYPE_HAS_FINAL_VARIABLE): Fixed typo. + (struct lang_type): Fixed typo in bitfield name. + (DECL_INSTINIT_P): New macro. + (ID_INSTINIT_P): Likewise. + * jcf-write.c (generate_classfile): instinit$ bears the Synthetic + attribute. + * parse.y (encapsulate_with_try_catch): New function. + (generate_instinit): Likewise. + (build_instinit_invocation): Likewise. + (ctors_unchecked_throws_clause_p): Likewise. + (add_instance_initializer): Deleted. + (build_instance_initializer): Likewise. + (in_instance_initializer): Likewise. + (check_method_redefinition): instinit$ not to be verified. + (java_complete_expand_methods): Generate instinit$, simplified code. + (build_dot_class_method): Eliminated unnecessary locals. Use + encapsulate_with_try_catch, removed unnecessary code. + (fix_constructors): New local iii. Use build_instinit_invocation. + (patch_method_invocation): Added comment. + (maybe_use_access_method): Don't consider instinit$. + (find_applicable_accessible_methods_list): Shorten the search for + instinit$ too. + (java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed. + (patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer. + (patch_throw_statement): Likewise. Fixed typo. + +2001-08-12 David Edelsohn + + Revert: + 2001-08-02 Rainer Orth + * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks + ASM_FINAL_SPEC. + (lang_specific_pre_link): Use set_input to set input_filename. + Append `main' here. + * jvgenmain.c (usage): Append literal `main' to CLASSNAME. + (main): Fix definition. + Strip `main' from classname. + Fixes PR java/227. + +2001-08-11 Zack Weinberg + + * lex.h: Don't include setjmp.h. Don't define + SET_FLOAT_HANDLER or prototype set_float_handler. + +2001-08-09 Alexandre Petit-Bianco + + * expr.c (java_lang_expand_expr): Call `expand_end_bindings' and + `poplevel' in the right order. + +2001-08-09 Richard Henderson + + * Make-lang.in (class.o): Depend on TARGET_H. + * class.c (emit_register_classes): Use target hooks instead of + assemble_constructor and assemble_destructor. + +2001-08-08 Alexandre Petit-Bianco + + * check-init.c (flags.h): Include + (check_init): Don't report uninitialized static class + initialization flags, don't free bit index when doing static class + initialization optimization. + (check_for_initialization): Return type changed to `unsigned int.' + (attach_initialized_static_class): New function. + * class.c (add_method_1): Create the initialized static class + table if necessary. + (finish_class): Always emit deferred inline methods. + * decl.c (emit_init_test_initialization): Moved to expr.c + (complete_start_java_method): Don't traverse + DECL_FUNCTION_INIT_TEST_TABLE. + (lang_mark_tree): Mark hash tables in function decls. + * expr.c (emit_init_test_initialization): Moved from decl.c. + (build_class_init): Create LAG_DECL_SPECIFIC for the static class + initialization flag, set DECL_CONTEXT and + LOCAL_CLASS_INITIALIZATION_FLAG. + (java_lang_expand_expr): Emit initialization code for static class + initialized flags when entering block, if necessary. + * gcj.texi (-fno-optimize-static-class-initialization): Documented. + * java-tree.h (flag_optimize_sci): New global variable declaration. + (DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro. + (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise. + (LOCAL_FINAL_P): Fixed typo in comment. + (FINAL_VARIABLE_P): Likewise. + (LOCAL_CLASS_INITIALIZATIO_FLAG): New macro. + (LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise. + (struct lang_decl): New fields `ict', `smic' and `cif.' + (check_for_initialization): New returned value for global. + (attach_initialized_static_class): New global function. + (STATIC_CLASS_INIT_OPT_P): New macro. + * lang-options.h (-fno-optimize-static-class-initialization): New flag. + * lang.c (java_decode_option): Handle + `-fno-optimize-static-class-initialization' + * parse.y (start_complete_expand_method): New function. + (java_expand_method_bodies): Likewise. + (attach_init_test_initialization_flags): Likewise. + (adjust_init_test_initialization): Likewise. + (emit_test_initialization): Likewise. + (java_complete_expand_methods): Nullify abstract and native method + bodies. + (java_complete_expand_method): New locals `fbody', `block_body' + and `exception_copy.' Reorganized: directly return on empty method + bodies, call `start_complete_expand_method', remember definitely + initialized static class in function, don't expand method bodies. + (java_expand_classes): Call `java_expand_method_bodies' before + `finish_class' when compiling to native. + (resolve_expression_name): Use `orig' after building outer class + field access. + (patch_invoke): Remember static method invocations. + +2001-08-06 Richard Henderson + + * class.c (emit_register_classes): Pass a symbol_ref and priority + to assemble_constructor. + +2001-08-02 Alexandre Petit-Bianco + + * java-tree.h (all_class_filename): New macro. + (enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.' + (BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link + newly created IDENTIFIER_NODE to `all_class_filename.' + +2001-08-01 Jeff Sturm + + * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): + Use ggc_add_tree_root to register roots. + +2001-07-31 Alexandre Petit-Bianco + + * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its + second operand calling check_init. + * decl.c (complete_start_java_method): Swaped second and third + arguments while creating WITH_CLEANUP_EXPR node. + * jcf-write.c (generate_bytecode_insns): Use second operand + instead of third when handling WITH_CLEANUP_EXPR. + * parse.y (java_complete_lhs): Expand second operand of + WITH_CLEANUP_EXPR nodes. + (patch_synchronized_statement): Swaped second and third arguments + while creating WITH_CLEANUP_EXPR node. + +2001-07-18 Alexandre Petit-Bianco + + * parse.y (create_interface): Avoid cyclic inheritance report when + syntax error encountered during class definition. + Fixes PR java/2956 + +2001-08-02 Rainer Orth + + * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks + ASM_FINAL_SPEC. + (lang_specific_pre_link): Use set_input to set input_filename. + Append `main' here. + * jvgenmain.c (usage): Append literal `main' to CLASSNAME. + (main): Fix definition. + Strip `main' from classname. + Fixes PR java/227. + +2001-07-18 Tom Tromey + + For PR java/2812: + * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H. + * lex.c (java_new_lexer): Use ICONV_CONST. + (java_read_char): Likewise. + * Make-lang.in (jc1$(exeext)): Link against LIBICONV. + (jv-scan$(exeext)): Likewise. + +2001-07-17 Alexandre Petit-Bianco + + * parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.' + * parse.y (check_class_interface_creation): Allow `private' if the + enclosing is not an interface. + (create_interface): Interface tagged public if the enclosing + context is an interface. + (create_class): Class tagged public if the enclosing context + is an interface. + Fixes PR java/2959 + +2001-07-17 Alexandre Petit-Bianco + + * class.c (push_class): Set DECL_SIZE to `integer_zero_node.' + Fixes PR java/2665 + +2001-07-14 Tim Josling + + * check-init.c (check_init): Remove references to EXPON_EXPR. + +2001-07-13 Alexandre Petit-Bianco + + * parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset + TREE_CONSTANT_OVERFLOW of CASE_EXPR value. + Fixes PR java/3602 + +2001-07-13 Tom Tromey + + * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1 + invocation. + +2001-07-12 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Don't override primary if one + is already provided, but let this$ be built. Fixed comment. + +2001-07-12 Alexandre Petit-Bianco + + * parse.y (empty_statement:): Report empty statement error only + when found at class declaration level. + Fixes PR java/3635 + +2001-07-12 Tom Tromey + + * expr.c (expand_load_internal): New function. + (LOAD_INTERNAL): Use it. + +2001-07-11 Alexandre Petit-Bianco + + * parse.y (verify_constructor_super): Compare anonymous class ctor + args with `valid_method_invocation_conversion_p.' + Fixes PR java/3285 + +2001-07-10 Alexandre Petit-Bianco + + * lang-specs.h: Forbit the use if `-femit-class-file{s}' without + `-fsyntax-only.' Fixes PR java/3248 + +2001-07-10 Alexandre Petit-Bianco + + * jcf-io.c (find_class): Clarified error message. Fixes PR java/2603 + +2001-07-10 Alexandre Petit-Bianco + + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the + current function is static. Fixes PR java/1970 + +2001-07-09 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Add enclosing context to ctor + calls if necessary. Fixes PR java/2953 + +2001-07-09 Alexandre Petit-Bianco + + * parse.y (resolve_package): Abort if qualified expression member + isn't right. + (qualify_ambiguous_name): Don't qualify as type if `this' in use. + Fixes PR java/1391 + +2001-07-07 Zack Weinberg + + * verify.c: Don't use // comments. + +2001-07-05 Tom Tromey + + * lang.c (flag_assume_compiled): Removed. + * java-tree.h (flag_assume_compiled): Removed. + * lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc, + -fhash-synchronization, -fuse-divide-subroutine, + -fcheck-references, -femit-class-file, -femit-class-files, + -fassume-compiled. Updated --encoding information. Changed + -foutput-class-dir to `-d'. + +2001-07-04 Daniel Berlin + + * jcf-parse.c (parse_class_file): Add lineno parameter to + debug_start_source_file call. + +2001-07-04 Joseph S. Myers + + * gcj.texi: Use gpl.texi. + * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update + dependencies and use doc/include in search path. + +2001-07-03 Jeff Sturm + + * parse.y (fix_constructors): Test if a CALL_EXPR invokes + `this'. If so, don't build instance initializers. + +2001-07-03 Alexandre Petit-Bianco + + * parse.y (resolve_expression_name): Improved error message for + inner class cases. Fixes PR java/1958 + +2001-06-28 Gabriel Dos Reis + + * lang.c: #include diagnostic.h + (lang_print_error): Add a `diagnostic_context *' parameter. + (java_dummy_print): Likewise. + * Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h + +2001-06-27 Alexandre Petit-Bianco + + * jcf-parse.c (gcc_mark_jcf): Test for a finished JCF. + * jcf.h (typedef struct JCF): New bitfield `finished.' + (JCF_FINISH): Set `finished.' + (JCF_ZERO): Reset `finished.' + Fixes PR java/2633 + +2001-06-27 Alexandre Petit-Bianco + + * parse.y (class_body_declaration:): Don't install empty instance + initializers. + Fixes PR java/1314 + +2001-06-27 Alexandre Petit-Bianco + + * class.c (set_super_info): Call `set_class_decl_access_flags.' + (set_class_decl_access_flags): New function. + * java-tree.h (set_class_decl_access_flags): New prototype. + * jcf-parse.c (handle_innerclass_attribute): Read and set access flags. + (parse_class_file): New local `decl_max_locals.' Take wide types + into account to compute DECL_MAX_LOCALS. + * parse.y (type_import_on_demand_declaration:): Ignore duplicate + imports on demand. + +2001-06-22 Jan van Male + + * zipfile.h: Use GCC_JCF_H instead of JCF_H. + +2001-06-20 Alexandre Petit-Bianco + + * class.c (java_hash_tree_node): Fixed indentation in leading comment. + * parse.y (do_resolve_class): Moved comments out to leading comment + section. Removed local `start', New local `_ht' and + `circularity_hash.' Record `enclosing' in hash table and search + it to detect circularity. Use `enclosing' as an argument to + `lookup_cl.' Free the hash table when done. + +2001-06-19 Tom Tromey + + * lex.c (java_read_char): Disallow invalid and overlong + sequences. Fixes PR java/2319. + +2001-06-05 Jeff Sturm + + * decl.c (create_primitive_vtable): Don't call make_decl_rtl. + +2001-06-04 Alexandre Petit-Bianco + + * expr.c (force_evaluation_order): Match wrapped ctor calls, locate + arguments accordingly. + +2001-06-02 Joseph S. Myers + + * gcj.texi: Move contents to just after title page. + +2001-06-01 Alexandre Petit-Bianco + + * parse.y (type_literals:): Use `build_incomplete_class_ref' with + builtin type. + (patch_incomplete_class_ref): Build the class ref, build the class + init if necessary, complete the tree. + Fixes PR java/2605 + +2001-05-31 Alexandre Petit-Bianco + + * parse.y (lookup_field_wrapper): Test `name' code. + (resolve_qualified_expression_name): Test `qual_wfl' code. + (qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation, + handle `qual_wfl' by code. + (maybe_build_primttype_type_ref): Test `wfl' code. + +2001-05-23 Theodore Papadopoulo + + * Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on + fdl.texi. + (java/gcj.dvi): Use TEXI2DVI instead of custom tex calls. Create + the dvi file in the java directory. + +2001-05-25 Sam TH + + * gen-table.pl javaop.h jcf.h lex.h, + parse.h: Fix header include guards. + +2001-05-23 Joseph S. Myers + + * jv-scan.c (version): Update copyright year. + +2001-05-21 Per Bothner + + * jcf-parse.c (read_class): If class is from .class or .zip file + and it's already been read, don't push/pop parser context. + +2001-05-18 Per Bothner + + * jvspec.c (lang_specific_pre_link): Re-arrange the linker + command line so the jvgenmain-generated main program comes first. + +2001-05-15 Tom Tromey + + * class.c (build_utf8_ref): Don't generate identifier based on + utf8const contents. + +2001-05-12 Richard Henderson + + * java-tree.def (JAVA_EXC_OBJ_EXPR): New. + * expr.c (java_lang_expand_expr): Expand it. + (process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of + calling build_exception_object_ref. + * parse.y (catch_clause_parameter): Likewise. + (build_dot_class_method): Likewise. + (try_reference_assignconv): Likewise. + * check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR. + * jcf-write.c (generate_bytecode_insns): Likewise. + +2001-05-07 Alexandre Petit-Bianco + + * parse.y (build_unresolved_array_type): Set + EXPR_WFL_QUALIFICATION on the newly created wfl. + Fixes PR java/2538. Fixes PR java/2535. + +2001-05-07 Alexandre Petit-Bianco + + * parse.y (fix_constructors): Removed unnecessary assignment to + local. Moved assignment to `this$', fixed comments and + indentation. + (build_wfl_wrap): Fixed indentation. + Fixes PR java/2598, java/2579 and java/2658. + +2001-05-03 Mo DeJong + + * lex.c (java_new_lexer): Call iconv_close on temp handle used to + check for byte swap. + +2000-05-02 Jeff Sturm + + * expr.c (build_class_init): Move MODIFY_EXPR + outside of COND_EXPR. Remove variable `call'. + +2001-05-02 Kaveh R. Ghazi + + * decl.c: NULL_PTR -> NULL. + * jcf-write.c: Likewise. + +2001-05-01 Tom Tromey + + * Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'. + (java/gcj.dvi): Added $(srcdir) to TEXINPUTS. + * gcj.texi: Updated copyright text. Include fdl.texi. + (Top): Link to new node. + +2001-05-01 Per Bothner + + * parse.h (REGISTER_IMPORT): Use tree_cons instead of chainon. + +2001-05-01 Per Bothner + + * parse.y (java_pop_parser_context): The TREE_VALUE of a link in the + import_list contains the name, not the TREE_PURPOSE. + +2001-04-29 Kaveh R. Ghazi + + * jcf-io.c (read_zip_member): Cast to long in comparison with + signed value. + + * jvspec.c (lang_specific_driver): Initialize variables. + + * mangle.c (find_compression_record_match): Likewise. + + * typeck.c (build_null_signature): Provide static prototype. Mark + parameter with ATTRIBUTE_UNUSED. + + * verify.c (verify_jvm_instructions): Initialize variable. + +2001-04-27 Bryce McKinlay + + * parse.y (do_resolve_class): Check for cyclic inheritance during + inner class resolution. + +2001-04-27 Per Bothner + + * parse.y (java_expand_classes): Don't change ctxp_for_generation + while iterating, since that could cause gc to lose stuff. + +2001-04-26 Per Bothner + + Fix method search wrt scope of inner classes to match JLS2. + * typeck.c (build_null_signature): New static function. + (has_method): New function. Uses build_null_signature and lookup_do. + * java-tree.h (has_method): New declaration. + * parse.y (find_applicable_accessible_methods_list): Do not search + context of inner classes here. + (patch_method_invocation): Search scope, ie. current and outer clases, + for method matching simple name, to find class. + +2001-04-26 Per Bothner + + * jcf-write.c (generate_bytecode_insns case SWITCH_EXPR): + Fix thinko: If a single case, use if_icmpeq, not ifeq. + + * constants.c (find_methodref_with_class_index): New function. + (find_methodref_index): Use find_methodref_with_class_index. + * java-tree.h (find_methodref_with_class_index): New declaration. + * jcf-write.c (generate_bytecode_insns case CALL_EXPR): Don't change + DECL_CONTEXT, instead use new find_methodref_with_class_index function. + If context changed from interface to class, don't use invokeinterface. + +2001-04-25 Per Bothner + + * verify.c (verify_jvm_instructions): For field instructions, + check that field index is valid. For invoke instructions, check that + method index is valid. + +2001-04-25 Alexandre Oliva + + * config-lang.in (target_libs): Copy from $libgcj_saved. + +2001-04-25 Bryce McKinlay + + * decl.c (init_decl_processing): Add new class "protectionDomain" + field. + * class.c (make_class_data): Set initial value for "protectionDomain". + +2001-04-22 Kaveh R. Ghazi + + * jvspec.c (lang_specific_driver): Fix memory allocation + deficit, by using concat in lieu of xmalloc/sprintf. + +2001-04-20 Per Bothner + + Fixes to compile multiple .class files at once. + * decl.c (init_decl_processing): Don't set CLASS_LOADED_P. + * java-tree.h (CLASS_PARSED_P): New macro. + (CLASS_LOADED_P): Re-define to use TYPE_SIZE and CLASS_PARSED_P. + * jcf-parse.c (jcf_parse_source): Inline into read_class. + (read_class): Avoid some code duplication. + Don't call JCF_FINISH for a .class file - might be needed later. + (jcf_parse): Don't call layout_class here. Check/set CLASS_PARSED_P + rather than CLASS_LOADED_P, since latter implies class laid out. + (yyparse): Do layout_class and JCF_FINISh here instead, in pass 2. + * parse.y: Don't need to set CLASS_LOADED_P for array types. + +2001-04-11 Kaveh R. Ghazi + + * Make-lang.in (java/boehm.o): Depend on toplev.h. + + * boehm.c: Include toplev.h. + +2001-04-06 Tom Tromey + Alexandre Petit-Bianco + + Fix for PR gcj/1404 and PR gcj/2332: + * parse.y (build_array_from_name): If we use the type_wfl then + accumulate dimensions from the original type as well. + (build_unresolved_array_type): Don't modify TYPE_OR_WFL in place. + +2001-04-06 Tom Tromey + + * parse.y (analyze_clinit_body): Return true if the second operand + of a METHOD_EXPR is nonzero. + +2001-04-06 Tom Tromey + + * Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build + directory. + ($(srcdir)/java/parse.c): Likewise. + +2001-04-05 Alexandre Petit-Bianco + + * gcj.texi: Use `which-gcj' instead of `which-g77.' + (version-gcc): Initialized. + (which-gcj): Likewise. + +2001-04-04 Alexandre Petit-Bianco + + * java-tree.h (struct lang_decl): New macro + `DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.' + * parse.y (build_instance_initializer): New function. + (add_instance_initializer): Use it. + (java_fix_constructors): Set `current_class' before fix pass. + (fix_constructors): Just return if already fixed. Move `super()' + invocation ahead. Use `build_instance_initializer.' + Fixes PR java/1315. + +2001-04-04 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Pass field's + DECL_CONTEXT to `not_accessible_p.' + (not_accessible_p): Changed parameters order in `inherits_from_p' + invocation. + +2001-03-27 Andrew Haley + + * lang-options.h: Add flag_check_references. + +2001-04-04 Per Bothner + + * java-tree.h (CONSTANT_VALUE_P): New macro. + * jcf-write.c (generate_classfile): Use CONSTANT_VALUE_P. + * parse.y (maybe_build_class_init_for_field): New static function. + (resolve_expression_name, resolve_field_access): Use + maybe_build_class_init_for_field instead of build_class_init + This does not do the init if the field is compile-time-constant. + (resolve_field_access): Simplify. + + * parse.y (fold_constant_for_init): Merge test into switch. + +2001-04-03 Zack Weinberg + + * Make-lang.in (buffer.o, check-init.o, class.o): Don't depend + on gansidecl.h. + * buffer.c, jvgenmain.c: Don't include gansidecl.h. + +2001-04-02 Zack Weinberg + + * expr.c (pop_type_0): Save the result of the first + lang_printable_name call in a scratch buffer, so it + won't be clobbered by the second call. + +2001-03-30 Alexandre Petit-Bianco + + * parse-scan.y (array_type:): Rewritten. + (type_declaration:): `empty_statement' replaces `SC_TK.' + (class_member_declaration:): `empty statement' added. + (method_body:): Simplified. + (static_initializer:): Likewise. + (primary_no_new_array:): Use `type_literals.' + (type_literals:): New rule. + (dims:): Set and update `bracket_count.' + Fixes PR java/1074. Fixes PR java/2412. + +2001-03-28 Hans Boehm + + * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.' + (get_boehm_type_descriptor): Set type on returned value to be a + pointer length integer. + +2001-03-28 Kaveh R. Ghazi + + * expr.c (pop_type_0): Call `concat' rather than building the + string manually. + (pop_type): Add format specifier in call to `error'. + + * parse.y (patch_method_invocation): Avoid casting away + const-ness. + +2001-03-28 Jeffrey Oldham + + * jvgenmain.c (do_mangle_classname): End string constant with '\0'. + +2001-03-28 Richard Henderson + + IA-64 ABI Exception Handling: + * Make-lang.in (except.o): Don't depend on eh-common.h. + * check-init.c (check_init): Handle EXC_PTR_EXPR. + * decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw. + [soft_exceptioninfo_call_node]: Remove. + [eh_personality_libfunc, lang_eh_runtime_type]: New. + (end_java_method): No emit_handlers. + * except.c (java_set_exception_lang_code): Remove. + (method_init_exceptions): Don't call it. + (prepare_eh_table_type): No CATCH_ALL_TYPE. + (build_exception_object_ref): New. + (expand_end_java_handler): Update for except.h name changes. + (emit_handlers, expand_resume_after_catch): Remove. + * expr.c (java_lang_expand_expr): Update for except.h name changes. + (process_jvm_instruction): Use build_exception_object_ref. + * java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove. + (soft_exceptioninfo_call_node): Remove. + (build_exception_object_ref): Declare. + * jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No + soft_exceptioninfo_call_node. Move processing ... + [EXC_PTR_EXPR]: ... here. + * parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code. + * parse.y (catch_clause_parameter): Use build_exception_object_ref. + (source_end_java_method): No java_set_exception_lang_code or + emit_handlers. + (build_dot_class_method): Use build_exception_object_ref. + (try_reference_assignconv): Check EXC_PTR_EXPR not + soft_exceptioninfo_call_node. + +2001-03-28 Richard Henderson + + * java-tree.h (throw_node): Define as a single member of + java_global_trees instead of a separate array. + (JTI_THROW_NODE): New. + * decl.c (throw_node): Don't declare. + (init_decl_processing): Init a scalar throw_node. + Don't register it for gc. + * check-init.c (check_init): Reference scalar throw_node. + * expr.c (build_java_athrow): Likewise. + * jcf-write.c (generate_bytecode_insns): Likewise. + * parse.h (BUILD_THROW): Likewise. + +2001-03-28 Richard Henderson + + * decl.c (end_java_method): Do not save and restore + flag_non_call_exceptions. + * parse.y (source_end_java_method): Likewise. + * lang.c (flag_exceptions): Don't declare. + (java_init_options): Set flag_non_call_exceptions. Set + flag_exceptions here ... + (java_init): ... not here. + +2001-03-27 Richard Henderson + + * expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of + exceptions_via_longjmp. + + * lang.c (flag_new_exceptions): Don't declare it. + (java_init_options): Or set it. + +2001-03-27 Richard Henderson + + * decl.c (end_java_method): Rename asynchronous_exceptions to + flag_non_call_exceptions. + * parse.y (source_end_java_method): Likewise. + +2001-03-27 Kaveh R. Ghazi + + * Make-lang.in: Depend on $(SYSTEM_H), not system.h. + +2001-03-26 Mark Mitchell + + * parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE. + +2001-03-26 Alexandre Petit-Bianco + + * parse.y (find_as_inner_class): Follow current package + indications not to mistakingly load an unrelated class. + +2001-03-25 Kaveh R. Ghazi + + * constants.c (PUTN): Use memcpy, not bcopy. + + * lex.c (java_read_char): Use memmove, not bcopy. + + * parse.y (java_parser_context_resume): Use memcpy, not bcopy. + +2001-03-23 Per Bothner + + * verify.c (verify_jvm_instructions): Replace 3 pop_type by POP_TYPE + macro for better error pin-pointing. + * java-tree.h: Fix typo in comment. + + * jcf-write.c (generate_bytecode_insns): Changes to TRY_FINALLY_EXPR. + Don't include jsr/goto in exception range. + Check if start and end of exception range are the same (also TRY_EXPR). + Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false. + However, do emit the following goto even if try_block is empty. + Defer freeing exception_decl until after the finalizer, to make + sure the local isn't reused in the finalizer. Fixes PR java/1208. + + * parse.y (java_complete_lhs): If the try-clause is empty, just + return the finally-clause and vice versa. + +2001-03-23 Alexandre Petit-Bianco + + * gcj.texi (Input Options): documented the check for attribute + `gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag. + * java-tree.h (flag_force_classes_archive_check): Declared extern. + * jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro. + (jcf_parse): Check for the right classes archive if necessary. + * jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it. + (jcf_parse_fields): Fixed indentation. + * jcf-write.c (append_gcj_attribute): New function. + (generate_classfile): Compute the attribute count, invoke + `append_gcj_attribute'. + * jcf.h (typedef struct JCF): `seen_in_zip' and `java_source' + turned into bit-fields. New bit-field `right_zip.' + (JCF_ZERO): Set `right_zip' to zero. + * lang-options.h (-fforce-classes-archive-check): Added flag. + * lang.c (flag_force_classes_archive_check): New flag. + (lang_f_options): New entry `force-classes-archive-check.' + Fixes PR java/1213. + +2001-02-07 Andrew Haley + + * gcj.texi (Configure-time Options): Add -fcheck-references. + * expr.c (build_java_indirect_ref): New function. + (java_check_reference): New function. + (build_java_array_length_access): Use build_java_indirect_ref to + check for null references. + (build_java_arrayaccess): Likewise. + (build_get_class): Likewise. + (build_field_ref): Likewise. + (invoke_build_dtable): Likewise. + (build_invokeinterface): Likewise. + * lang.c (lang_f_options): Add flag_check_references. + * jvspec.c (jvgenmain_spec): Add flag_check_references. + * java-tree.h (flag_check_references): New variable. + * lang.c (flag_check_references): Likewise. + * parse.y (patch_invoke): Use java_check_reference. + (patch_assignment): Allow for extra nesting in + _Jv_CheckArrayStore. + +2001-03-23 Bryce McKinlay + + * gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c. + * lex.c (cxx_keywords): Likewise. + +2001-03-21 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Broaden `length' + recognition. Help MODIFY_EXPR be resolved as expression names. + Fixes PR java/2066. Fixes PR java/2400. + +2001-03-21 Bryce McKinlay + + * gjavah.c (process_file): Mark interface definitions with + "__attribute__ ((java_interface))". + +2001-03-21 Alexandre Petit-Bianco + + * class.c (layout_class): Fixed push_super_field's second + argument. Fixes PR java/2333. + (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's + too early to lay innerclasses out. + +2001-03-20 Tom Tromey + Alexandre Petit-Bianco + + * parse.y (patch_assignment): Handle the case of a SAVE_EXPR + inside an array reference. Insertion of the array store check + rewritten. Fixes PR java/2299. + +2001-03-20 Tom Tromey + + * lex.c (java_read_unicode): Only accept leading `u's. + +2001-03-20 Tom Tromey + + * jcf-parse.c (read_class): Initialize `class'. + +2001-03-20 Matt Kraai + + * jcf_parse.c (jcf_parse): Eliminate unused variable. + +2001-03-19 Mark Mitchell + + * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME. + (layout_class): Likewise. + (layout_class_method): Likewise. + (emit_register_classes): Likewise. + * decl.c (builtin_function): Likewise. + (give_name_to_locals): Likewise. + +2001-03-19 Per Bothner + + * jcf-parse.c (load_inner_classes): Check CLASS_LOADED_P + before trying to load an inner class. + + Fixes to process to command-line .class files in two passes. + * java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P): New flags. + (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P): Rename to .. + (CLASS_FROM_CURRENTLY_COMPILED_P): ... because it is more general now. + * class.c (is_compiled_class): Fix for renamed flag. + * parse.y (maybe_create_class_interface_decl): Likewise. + * jcf-parse.c (yyparse): Also set if compiling .class files. + * jcf-parse.c (read_class); Read current_class. + (jcf_parse): Make static. + (load_inner_classes): New function, with code moved from jcf_parse, + because we need to inner classes after the command-line files are read. + (yyparse): Set finput to NULL when it doesn't need to be closed. + Reduce use of main_jcf (basically only for archive) and + use finput instead of main_jcf->read_state. + Inline jcf_figure_file_type into yyparse. + Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name. + Defer load_inner_classes and parse_class_file to a second pass, + after we've correctly mapped command-line .clas fiels to classes. + (jcf_figure_file_type): Removed. + * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): Removed flags. + (JCF_ZERO): Also clear zipd field. + * zipfile.h: Conditionalize on JCF_H insread of JCF_ZIP. + +2001-03-18 Matt Kraai + + * jcf-parse.c (yyparse): Change ch from char * to char. + +2001-03-19 Per Bothner + + * jvspec.c (lang_specific_driver): Check for .zip and .jar files. + Add constructed filelist-file at end, following -xjava. Thus any .o + and library files are not affected by the -xjava. Also wrap + explicit @FILE with -xjava and -xnone. + +2001-03-19 Andrew Haley + + * class.c (build_static_field_ref): Call make_decl_rtl() after + setting the DECL_EXTERNAL flag. + +2001-03-17 Per Bothner + + * decl.c (clear_binding_level): Fix initializer (broke 03-15). + + * jcf-write.c (generate_bytecode_insns): Handle emitting iinc + when result is is needed (target is STACK_TARGET). + + * parse.h (JDEP_SOLV): Removed. + * parse.y (register_incomplete_type): Use JDEP_TO_RESOLVE instead. + + * parse.y (incomplete_class_list): Removed. + (obtain_incomplete_type): Don't use or set incomplete_class_list. + It doesn't work if resolve_class changes the name of an array type + that is on the list and then someone else looks for the modified name. + Also, seems liable to break when compiling multiple source files at + once. So the simplest is to just remove incomplete_class_list - + it is only a minor space win and it is not even clear it saves time. + + * parse.y (resolve_class): Remove unneeded promote_type. + +2001-03-15 Per Bothner + + * java-tree.h (BLOCK_IS_IMPLICIT): New flag. + * parse.h (BLOCK_EXPR_ORIGIN): Removed macro. + * parse.y (declare_local_variables, maybe_absorb_scoping_blocks): + Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN. + + * jcf-parse.c (yyparse): Set/reset input_filename for source file. + * parse.y (java_expand_classes): Likewise. + + * parse.y (expand_start_java_method): Was only called once and had a + misleading name, so inline in caller java_complete_expand_method. + (enter_a_block): Likewise inline in enter_block and remove. + + Remove junk from when gcc/java was created (by copying from C/C++). + * decl.c (keep_next_level_flag, keep_next_if_subblocks): Remove. + (struct binding_level): Remove fields keep, keep_if_subblocks, + more_cleanups_ok, have_cleanups (which have never been used). + (pushlevel, poplevel): Remove related useless code. + + * class.c (make_class_data): The class_dtable_decl (i.e. the + vtable for Class) should be external, except when compiling Class. + + * jvspec.c (lang_specific_driver): Fix -C handling. + Check -save-temps to see if temp @FILE should be deleted. + Follow-up to/fix for February 16 patch. + + * verify.c (verify_jvm_instructions): Better error msgs for dup. + (type_stack_dup): Remove no-longer neded error check. + +2001-03-15 Bryce McKinlay + + * mangle.c (mangle_record_type): Rename 'from_pointer' argument + to 'for_pointer'. If this type is for a pointer (argument) mangling, + don't surround the element with 'N..E' if the type name is + unqualified. + +2001-03-14 Mark Mitchell + + * class.c (build_static_field_ref): Use COPY_DECL_RTL, + DECL_RTL_SET_P, etc. + (make_method_value): Likewise. + (get_dispatch_table): Likewise. + + * decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc. + +2001-03-07 Tom Tromey + + * config-lang.in (lang_requires): Define. + +2001-03-07 Brad Lucier + + * typeck.c (convert): Check flag_unsafe_math_optimizations, + not flag_fast_math. + +2001-03-05 Per Bothner + + Fix a problem where rest_of_decl_compilation applied to + class_dtable_decl causes problems because it was done too early, + before output file was opened. + * decl.c (init_decl_processing): Remove init of class_dtable_decl. + * class.c (class_dtable_decl): Add macro - element of class_roots. + (make_class_data): Define class_dtable_decl. + * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl): Removed. + +2001-03-01 Zack Weinberg + + * java/class.c, java/decl.c, java/java-tree.h: Replace all + uses of 'boolean' with 'bool'. + +2001-03-01 Zack Weinberg + + * lang-specs.h: Add zero initializer for cpp_spec field to all + array elements. + +2001-02-16 Per Bothner + + Handle compiling multiple input files at once, and @FILE syntax. + * gcj.texi: Updated documentation to match. + * java-tree.h (flag_filelist_file, init_src_parse): New declarations. + * jcf-parse.c (parse_source_file): Split into ... + (parse_source_file_1): New function - and: + (parse_source_file_2): New function. + (yyparse): On -ffilelist-file, open and scan named file. + On first pass over files, only do parse_source_file_1. + A new second pass calls parse_source_file_2 for each file to compile. + (init_jcf_parse): Call init_src_parse. + * jvspec.c (INDIRECT_FILE_ARG): New flag. + (lang_specific_driver): Support @FILELIST-FILE syntax, as well + as multiple input file combined in one compilation. + * lang-options.h: Add -ffilelist-file + * lang.c (flag_filelist_file): New flag variable. + (lang_f_options): Handle -ffilelist-file. + * lex.c (java_init_lex): Don't clear ctxp->incomplete_class. + * parse.h (struct parse_ctxt): Remove fields incomplete_class and + gclass_list - use global fields of src_parse_roots instead. + * parse.y (src_parse_roots): New array. + (incomplete_class_list, gclass_list): New macros. + (push_parser_context, java_pop_parser_context, + java_parser_context_resume): Don't fiddle with deleted fields. + (various): Use incomplete_class gclass_list and global macros + instead of parse_ctxt fields - the lists are global. + (init_src_parse): New function. + +2001-02-23 Richard Kenner + + * decl.c (set_block): Set NAMES and BLOCKS from BLOCK. + +2001-02-20 Alexandre Petit-Bianco + + * parse.y (check_inner_class_access): Moved declaration of local + `enclosing_decl_type' to the right location. + +2001-02-19 Bryce McKinlay + + * parse.y (parser_check_super_interface): Don't call + check_pkg_class_access for an inner interface. + (parser_check_super): Don't call check_pkg_class_access for inner + class. + (do_resolve_class): Simplify enclosing type loop. Don't call + check_pkg_class_access if CL and DECL are not set. + (find_in_imports_on_demand): Set DECL if class_type needed to be + loaded. Don't call check_pkg_class_access for an inner class. + (check_inner_class_access): Rewritten to implement member access + rules as per spec 6.6.1. + (check_pkg_class_access): Handle the empty package correctly. + (in_same_package): New function. Determine if two classes are in the + same package. + +2001-02-18 Bryce McKinlay + + * typeck.c (build_java_array_type): Don't try to poke a public `clone' + method into array types. + * parse.y (patch_method_invocation): Bypass access check on clone call + to array instance. + +2001-02-15 Alexandre Petit-Bianco + + * expr.c (build_instanceof): Check for arrays when trying fold to + false. + +2001-02-15 Jim Meyering + + * Make-lang.in (java.install-common): Depend on `installdirs'. + (java.install-info): Likewise. + +2001-02-15 Bryce McKinlay + + * Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o. + +2001-02-14 Tom Tromey + Alexandre Petit-Bianco + + Fix for PR java/1261. + * typeck.c (build_java_array_type): Add public `clone' method to + arrays. + * parse.y (resolve_qualified_expression_name): Use current_class + when checking for inaccessibility. + (patch_method_invocation): Fixed error message when accessibility + denied. Added `from_super' argument. + +2001-02-14 Alexandre Petit-Bianco + + * parse.y (resolve_class): Don't build a fake decl. Use the one + already built. + * typeck.c (build_java_array_type): Build and assign decl to array + type. + +2001-02-14 Alexandre Petit-Bianco + + * parse.y (not_accessible_p): Changed leading comment. Added extra + `where' argument. Use it to enforce protected access rules. + (resolve_qualified_expression_name): Added extra argument to + not_accessible_p. + (patch_method_invocation): Use argument `primary' to provide + not_accessible_p with an extra argument. + (lookup_method_invoke): Added extra argument to not_accessible_p. + (search_applicable_method_list): Likewise. + +2001-02-13 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Try to resolve as + an inner class access only if `decl' is a TYPE_DECL. + +2001-02-13 Alexandre Petit-Bianco + + * decl.c (classdollar_identifier_node): Initialize. + * java-tree.h (enum java_tree_index): New entry + `JTI_CLASSDOLLAR_IDENTIFIER_NODE.' + (classdollar_identifier_node): New macro. + (ID_CLASSDOLLAR_P): Likewise. + * parse.y (build_dot_class_method): Use `classdollar_identifier_node.' + (build_dot_class_method_invocation): Likewise. + (find_applicable_accessible_methods_list): `class$' can't be + inherited. + +2001-02-09 Raja R Harinath + + * Make-lang.in (java/mangle_name.o): Add 'make' prereqs. + +2001-02-09 Alexandre Petit-Bianco + + * Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o' + * jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now + gone. + +2001-02-09 Alexandre Petit-Bianco + + * mangle_name (append_unicode_mangled_name): Emit `_' or `U' + outside of the `__U' sequence too. + (unicode_mangling_length): Count `_' or `U' outside of the `__U' + sequence too. + +2001-02-09 Alexandre Petit-Bianco + + * jvgenmain.c (error): Reversed 2001-02-01 deletion. + +2001-02-08 Alexandre Petit-Bianco + + * Make-lang.in (JAVA_OBJS): Added java/mangle_name.o + (JVGENMAIN_OBJS): Likewise. + * java-tree.h (append_gpp_mangled_name): New prototype. + * jcf-parse.c (ggc_mark_jcf): Argument now `void *.' + Removed cast calling `gcc_add_root.' + * jvgenmain.c (mangle_obstack): New global, initialized. + (main): Use it. + (do_mangle_class): Constify local `ptr.' + Removed macro `MANGLE_NAME.' Removed cast in `for.' Call + append_gpp_mangle_name and update `count' if necessary. + Use `mangle_obstack.' + * mangle.c (append_unicode_mangled_name): Removed. + (append_gpp_mangled_name): Likewise. + (unicode_mangling_length): Likewise. + (mangle_member_name): Return type set to `void.' + (mangle_field_decl): Don't append `U' in escaped names. + (mangle_method_decl): Likewise. + (mangle_member_name): Just use `append_gpp_mangled_name.' + * mangle_name.c: New file. + +2001-02-07 Per Bothner + + * check-init.c (check_init): Fix TRY_FINALLY_EXPR logic. + + * check-init.c (check_init): Don't call done_alternative after + processing loop code, as a LOOP_EXPR never terminates normally. + +2001-02-08 Joseph S. Myers + + * gcj.texi: Change sources.redhat.com reference to gcc.gnu.org. + +2001-02-07 Alexandre Petit-Bianco + + * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field + DECLs. + +2001-02-06 Tom Tromey + + * lex.c (java_new_lexer): Longer error message. + +2001-02-05 Jeff Sturm + Alexandre Petit-Bianco + + * typeck.c (build_prim_array_type): Added leading comment. + (build_java_array_type): Moved locals out of + block. Always create the `data' field, fixed alignment to match + C++. + +2001-02-04 Tom Tromey + + * expr.c (java_lang_expand_expr): Don't bother recomputing + `length'. Use rest_of_decl_compilation, not make_decl_rtl. + Fixes PR java/1866. + +2001-02-05 Alexandre Petit-Bianco + + * parse.y (process_imports): Save the original name of the import + for better error report. + +2001-02-04 Bryce McKinlay + + * Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list + of macros used when compiling jvspec.c. + * jvspec.c (lang_specific_driver): Link with the shared + libgcc by default. + +2001-02-04 Richard Kenner + + * check-init.c (check_init): Call internal_error instead of fatal. + * expr.c (java_lang_expand_expr): Likewise. + * jcf-parse.c (get_constant): Likewise. + * mangle.c (java_mangle_decl): Likewise. + * parse.y (make_nested_class_name, java_complete_lhs): Likewise. + (operator_string): Likewise. + * check-init.c (check_init): Call abort instead of fatal. + * class.c (build_class_ref): Likewise. + * constants.c (write_constant_pool): Likewise. + * decl.c (start_java_method): Likewise. + * expr.c (push_type, java_stack_pop, java_stack_swap): Likewise. + (java_stack_dup, encode_newarray_type): Likewise. + (build_java_array_length_access): Likewise. + (build_java_check_indexed_type, expand_java_pushc): Likewise. + (build_java_soft_divmod, build_invokeinterface): Likewise. + * java-tree.h (INNER_CLASS_P): Likewise. + * jcf-parse.c (parse_signature, get_name_constant): Likewise. + (give_name_to_class, get_class_constant): Likewise. + * jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise. + (find_constant_index, generate_bytecode_conditional): Likewise. + (generate_bytecode_insns, perform_relocations): Likewise. + * lex.c (java_unget_unicode, java_lex): Likewise. + * mangle.c (mangle_type, mangle_record_type): Likewise. + (mangle_pointer_type, mangle_array_type, init_mangling): Likewise. + (finish_mangling): Likewise. + * parse.h (MARK_FINAL_PARMS): Likewise. + * parse.y (pop_current_osb, unreachable_stmt_error): Likewise. + (obtain_incomplete_type, java_complete_class): Likewise. + (java_check_regular_methods, java_complete_expand_method): Likewise. + (cut_identifier_in_qualified, check_deprecation): Likewise. + (patch_invoke, find_applicable_accessible_methods_list): Likewise. + (java_complete_lhs, lookup_name_in_blocks): Likewise. + (check_final_variable_indirect_assignment, build_unaryop): Likewise. + * typeck.c (set_local_type, parse_signature_type): Likewise. + (parse_signature_string, build_java_signature): Likewise; + (set_java_signature): Likewise. + * verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise. + * class.c (add_method): Call fatal_error instead of fatal. + (build_static_field_ref): Likewise. + * expr.c (build_known_method_ref, expand_invoke): Likewise. + * jcf-parse.c (get_constant, jcf_parse): Likewise. + * lex.c (java_new_new_lexer): Likewise. + * jv-scan.c (main): Likewise. + (fatal_error): Renamed from fatal. + * jcf-parse.c (yyparse): Call fatal_io_error instead of + pfatal_with_name. + * jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal. + (yyparse): Likewise. + * jcf-write.c (make_class_file_name, write_classfile): Likewise. + * lex.c (java_get_line_col): Likewise. + * jcf-parse.c (load_class): Make errors non-fatal. + * lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV. + +2001-02-01 Bryce McKinlay + + * jvgenmain.c (class_mangling_suffix): Remove unused string. + (error): Remove unused function. + (main): Don't use "__attribute__ alias" on generated class symbol. + +2001-01-30 Alexandre Petit-Bianco + + * jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last + argument. + * parse.y (finish_method_declaration): Code accounting for WFLed + method DECL_NAMEs deleted. + (check_abstract_method_definitions): Likewise. + (resolve_type_during_patch): Layout resolved type. + * typeck.c (lookup_do): Removed unused local. + +2001-01-30 Bryce McKinlay + + * java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE. + * decl.c (init_decl_processing): Use integer_minus_one_node, not + integer_negative_one_node. + * expr.c (build_java_binop): Likewise. + +2001-01-24 Jeff Sturm + + * zextract.c (read_zip_archive): Read file_offset before writing + zipd and consequently clobbering the header contents. + +2001-01-27 Kaveh R. Ghazi + + * Make-lang.in: Remove all dependencies on defaults.h. + * decl.c: Don't include defaults.h. + * expr.c: Likewise. + * parse.y: Likewise. + +2001-01-25 Alexandre Petit-Bianco + + * ChangeLog (2001-01-21): Fixed typo. + * class.c (layout_class_method): Code accounting for WFLed + method DECL_NAMEs deleted. + * constant.c (find_methodref_index): Likewise. + * decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl. + * java-tree.h (DECL_FUNCTION_WFL): New macro. + (struct lang_decl): New field `wfl'. + (java_get_real_method_name): Prototype deleted. + * mangle.c (mangle_method_decl): Code accounting for WFLed + method DECL_NAMEs deleted. + * parse.h (GET_METHOD_NAME): Macro deleted. + * parse.y (reset_method_name): Deleted. + (method_header): Set DECL_FUNCTION_WFL. + (check_abstract_method_header): Code accounting for WFLed method + DECL_NAMEs deleted. + (java_get_real_method_name): Deleted. + (check_method_redefinition): Code accounting for WFLed method + DECL_NAMEs deleted. Use DECL_FUNCTION_WFL. + (java_check_regular_methods): Likewise. + (java_check_abstract_methods): Likewise. + (java_expand_classes): Don't call `reset_method_name.' + (search_applicable_method_list): Use DECL_NAMEs instead of + GET_METHOD_NAME. + * typeck.c (lookup_do): Code accounting for WFLed method + DECL_NAMEs deleted. + +2001-01-25 Richard Earnshaw + + * lex.c (java_read_char): Check for EOF from getc first. + +2001-01-23 Alexandre Petit-Bianco + + * class.c (layout_class): Don't lay the superclass out if it's + already being laid out. + * jcf-parse.c (handle_innerclass_attribute): New function. + (HANDLE_INNERCLASSES_ATTRIBUTE): Invoke + handle_innerclasses_attribute. + (jcf_parse): Don't load an innerclasses if it's already being + laid out. + * jcf-write.c (append_innerclass_attribute_entry): Static + `anonymous_name' and its initialization deleted. `ocii' and `ini' + to be zero for anonymous classes. + +2001-01-23 Alexandre Petit-Bianco + + * class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if + necessary. + * jcf-parse.c (set_source_filename): Use + MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary. + +2001-01-23 Alexandre Petit-Bianco + + * expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it + gets a unique asm name. + +2001-01-23 Alexandre Petit-Bianco + + * jcf-parse.c (HANDLE_END_METHODS): Nullify current_method. + (HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC + if necessary. + (HANDLE_SYNTHETIC_ATTRIBUTE): New macro. + * jcf-reader.c (get_attribute): Handle `Synthetic' attribute. + * parse.y (lookup_package_type_and_set_next): Deleted. + (resolve_package): Removed unnecessary code. + (find_applicable_accessible_methods_list): `finit$' can't be + inherited. + * verify.c (pop_argument_types): Added missing prototype. + +2001-01-23 Bryce McKinlay + + * config-lang.in: Disable java by default. + +2001-01-23 Tom Tromey + + * gcj.texi (Copying): New node. + Added copyright information. + +2001-01-21 Per Bothner + + Various fixes to allow compiling a compressed .jar/.zip archive. + * zipfile.h (struct ZipFileCache): Replace by struct ZipFile. + (struct ZipFile): Add fields name and next (from ZipFileCache). + (struct ZipDirectory): New field zipf points to owning ZipFile. + * jcf.h (struct ZipDirectory): Add forward declaration. + (struct JCF): Declare zipd field to have type struct ZipDirectory. + Remove seen_in_zip and zip_offset fields. + (JCF_SEEN_IN_ZIP): New macro. + * zextract.c (read_zip_archive): Set ZipDirectory's zipf field. + * jcf-io.c: Change all ZipFileCache to ZipFile. + (read_zip_member): New function. + (open_in_zip): Call read_zip_member. + * jcf-parse.c (find_in_current_zip): Remove function. + (read_class): Merge in find_in_current_zip functionality. + Call read_zip_member if needed. + (parse_zip_file_entries): Use read_zip_member. + (process_zip_dir): Update for removed and added JCF fields. + (jcf_figure_file_type): Re-use, don't copy initial ZipFile struct. + +2001-01-21 Per Bothner + + Minor optimization of static ggc roots. + * jcf-parse.c (parse_roots): New static field. + (current_field, current_method, current_file_list): Replace by macros + naming fields of parse_roots. + (init_jcf_parse): Combine 3 ggc_add_tree_root calls to 1. + * class.c (class_roots): New static field. + (registered_class, fields_ident, info_ident, class_list): + New macros naming fields of parse_roots. + (build_static_field_ref): Don't register roots here. + (layout_class): Static field list replaced by macro class_list. + (init_class_processing): Call ggc_add_tree_root for 4 roots. + Initialize fields_ident and info_ident here. + +2001-01-21 Per Bothner + + * jcf-parse.c (ggc_mark_jcf): New function. + (init_jcf_parse): Register current_jcf as ggc root. + +2001-01-21 Per Bothner + + * lang.c (put_decl_node): Print method's name. + +2001-01-21 Per Bothner + + * verify.c (VERIFICATION_ERROR_WITH_INDEX): New macro. + (verify_jvm_instructions): Use it, for better error messages on loads. + +2001-01-21 Per Bothner + + * verify.c (merge_type_state): Still may have to merge even if + LABEL_VERIFIED (label). + +2001-01-21 Per Bothner + + * parse.y (method_header): Don't set the DECL_NAME of a FUNCTION_DECL + to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong. + +2001-01-19 Per Bothner + + * expr.c (pop_type_0): Only return object_ptr_type_node on mismatch + if expeting an interface type. Refines Tom's change of 2000-09-12. + +2001-01-18 Per Bothner + + * gcj.texi (Input Options): Mention .java files. + +2001-01-17 Alexandre Petit-Bianco + + * lang-options.h (-Wunsupported-jdk11): Removed. + * lang.c (flag_not_overriding): Deleted. + (flag_static_local_jdk1_1): Likewise. + (lang_W_options): Removed "unsupported-jdk11" entry. + * parse.y (java_check_methods): Removed dead code. + +2001-01-17 Tom Tromey + + Changes suggested by Per Bothner: + * gcj.texi (Input Options): Don't mention input files. + (Code Generation): Updated --main information. + (Invoking jcf-dump): Mention that --javap is incomplete. + From Alexandre Petit-Bianco: + (Warnings): Don't mention -Wunsupported-jdk11. + My stuff: + (Compatibility): Mention JDK 1.2-ness of libraries. + (Resources): Mention resources used when writing gcj. + +2001-01-17 Tom Tromey + + * gcj.texi: New file. + * Make-lang.in ($(srcdir)/java/gcj.info): New target. + (java.info): Depend on gcj.info. + (java/gcj.dvi): New target. + (java.dvi): Depend on gcj.dvi. + (java.install-info): Wrote. + +2001-01-16 Jeff Sturm + + * expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after + having called make_decl_rtl. + +2001-01-14 Per Bothner + + Various patches to emit better messages on verification errors. + * expr.c (push_type_0): Return error indication on stack overflow, + instead of callinfg fatal. + (push_type): Now just call push_type_0 (nd fatal on overflow). + (pop_type_0): Return detailed error message (in a char** argument). + (pop_type): If pop_type_0 fails, print error message. + (pop_argument_types): Moved to verify.c. + * verify.c (pop_argument_types): Moved from expr.c. + Return a (possible) error message, rather than void. + (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING): New macros. + (verify_jvm_instruction): Use new macros, improving error messages. + For case OPCODE_astore use object_ptr_type_node. + * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED): New macros. + (pop_type_0, push_type_0, pop_argument_types): Update accordingly. + + * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is + constant, return body without wrapper. (Improves constant folding.) + * lex.c (build_wfl_node): Clear TREE_TYPE from returned node. + +2001-01-13 Per Bothner + + * expr.c (expand_java_field_op): Assigning to a final field outside + an initializer does not violate JVM spec, so should be warning, not + error. (Sun's verifier does not complain - though MicroSoft's does.) + +2001-01-12 Joseph S. Myers + + * gjavah.c (version), jcf-dump.c (version): Update copyright year + to 2001. + +2001-01-11 Bryce McKinlay + + * parse.y (resolve_expression_name): Permit instance variables from + enclosing context in super constructor call. + (resolve_qualified_expression_name): Permit enclosing class's qualified + "this" in super constructor call. + +2001-01-10 Mark Mitchell + + * class.c (build_utf8_ref): Remove last argument in call to + make_decl_rtl; use make_function_rtl instead of make_decl_rtl. + (build_class_ref): Likewise. + (build_static_field_ref): Likewise. + (get_dispatch_table): Likewise. + (layout_class_method): Likewise. + (emit_register_classes): Likewise. + * constants.c (build_constant_data_ref): Likewise. + * decl.c (builtin_function): Likewise. + (create_primitive_vtable): Likewise. + * expr.c (build_known_method_def): Likewise. + (build_jni_stub): Likewise. + (java_lang_expand_expr): Likewise. + +2001-01-10 Tom Tromey + + * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation. + +2001-01-08 Alexandre Petit-Bianco + + * java-tree.h (lang_printable_name_wls): New prototype. + * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT + rather than `current_class' to print type name. Don't prepend type + names when printing constructor names. + (lang_printable_name_wls): New function. + * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to + `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE. + * parse.y (patch_method_invocation): Message tuned for constructors. + (not_accessible_p): Grant `private' access from within + enclosing contexts. + +2001-01-07 Alexandre Petit-Bianco + + All files with updated copyright when applicable. + * Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o. + * class.c (mangle_class_field): Function removed. + (append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise. + (utf8_cmp, cxx_keyword_p): Moved to lex.c. + (build_class_ref): Call `java_mangle_class_field' instead of + `mangle_class_field.' + (build_dtable_decl): Rewritten to call `java_mangle_vtable.' + (layout_class): Call `java_mangle_decl' instead of + `mangle_static_field.' + (cxx_keywords): Initialized static array moved to `lex.c.' + (layout_class_method): Changed leading comment. Simplified to + call `java_mangle_decl.' Local `ptr' moved in for loop body. + * decl.c (lang_mark_tree): Mark field `package_list.' + * java-tree.h (TYPE_PACKAGE_LIST): New macro. + (struct lang_type): New field `package_list.' + (unicode_mangling_length): Prototype removed. + (append_gpp_mangled_name, append_gpp_mangled_classtype, + emit_unicode_mangled_name): Likewise. + (cxx_keyword_p): New prototype. + (java_mangle_decl, java_mangle_class_field, + java_mangle_class_field_from_string, java_mangle_vtable): Likewise. + * jcf-parse.c (jcf_parse_source): Constify `file' argument to + `build_expr_wfl.' + * jvgenmain.c (main_method_prefix): Global variable removed. + (main_method_suffix): Likewise. + (do_mangle_classname): New function. + (main): Call it. Format changed to accommodate new mangling scheme. + * lex.c: (utf8_cmp): Conditionally prototyped. + (cxx_keywords): Moved from class.c, conditionally defined. + (utf8_cmp, cxx_keyword_p): Likewise. + * mangle.c (obstack.h, ggc.h): Included. + (mangle_field_decl): New function. + (mangle_method_decl, mangle_type, mangle_pointer_type, + mangle_array_type, mangle_record_type, + find_compression_pointer_match, find_compression_array_match, + find_compression_record_match, + find_compression_array_template_match, set_type_package_list, + entry_match_pointer_p, emit_compression_string, init_mangling, + finish_mangling, compression_table_add, mangle_member_name): Likewise. + (mangle_obstack): New global. + (MANGLE_RAW_STRING): New macro. + (unicode_mangling_length): Turned static. + (append_unicode_mangled_name): Renamed from + `emit_unicode_mangled_name.' Turned static. `mangle_obstack' + replaces `obstack', removed from the parameter list. + (append_gpp_mangled_name): Turned static. `mangle_obstack' + replaces parameter `obstack', removed from the parameter list. Call + `append_unicode_mangled_name' instead of `emit_unicode_mangled_name. + (append_gpp_mangled_classtype): Removed. + (compression_table, compression_next): New static variables. + * parse.y (temporary_obstack): Extern declaration removed. + +2001-01-05 Alexandre Petit-Bianco + + * parse.y (patch_binop): Compute missing type in error situations. + +2001-01-05 Bryce McKinlay + + * class.c (make_class_data): Push initial value for "arrayclass". + * decl.c (init_decl_processing): Add new class field "arrayclass". + +2001-01-05 Bryce McKinlay + + From patha@softlab.ericsson.se: + * parse.y (switch_label): Use build, not build1, to construct + DEFAULT_EXPR. + +2001-01-04 Neil Booth + + * lang.c (lang_decode_option): Change -MA to -MP. + * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target): + Update to new prototype; do quote targets. + (jcf_dependency_write): Update. + +2000-12-22 Bryce McKinlay + + Shorten primitive array allocation path: + * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray + to create new primitive arrays. + * expr.c (build_newarray): If generating native code, call + soft_newarray_node with a reference to the primitive TYPE identifier + instead of type_value. + +2000-12-17 Bryce McKinlay + + Fix for PRs gcj/312 and gcj/253: + * parse.y (valid_ref_assignconv_cast_p): Load classes for source and + dest if they arn't already. + * class.c (layout_class): Call maybe_layout_super_class on + superinterfaces also, but only if compiling from bytecode. + + Fix for PR gcj/373: + * parse.y (create_class): Set ACC_STATIC if class is declared in an + interface. + +2000-12-15 Tom Tromey + + * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already + set. + +2000-12-14 Andrew Haley + + * boehm.c (mark_reference_fields): Change test to correctly detect + bitmap overflow. + +2000-12-15 Andreas Jaeger + + * config-lang.in (lang_dirs): Added. + +2000-12-15 Alexandre Petit-Bianco + + * parse.y (end_artificial_method_body): Fixed undefined behavior. + Credits go to rth for finding it. + +2000-12-13 Mike Stump + + * parse.y (check_static_final_variable_assignment_flag): Fix spelling. + +2000-11-07 Tom Tromey + + * Make-lang.in (JAVA_LEX_C): Added chartables.h. + * lex.c (java_ignorable_control_p): Removed. + (java_letter_or_digit_p): Removed. + (java_start_char_p): New function. + (java_read_char): Return `int', not `unicode_t'. Changed + callers. + (java_read_unicode): Likewise. + (java_read_unicode_collapsing_terminators): Likewise. + (java_get_unicode): Likewise. + (java_new_lexer): Initialize hit_eof. + (java_parse_end_comment): Take `int' argument. + (java_parse_doc_section): Likewise. + (java_parse_escape_sequence): Don't allow backlash-newline. + Return `int'. + * lex.h (JAVA_DIGIT_P): Removed. + (_JAVA_LETTER_OR_DIGIT_P): Removed. + (_JAVA_IDENTIFIER_IGNORABLE): Removed. + (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P. + (JAVA_PART_CHAR_P): New macro. + (UEOF): Now -1. + (JAVA_CHAR_ERROR): Now -2. + (java_lexer): New field `hit_eof'. + * chartables.h: New file. + * gen-table.pl: new file. + +2000-11-20 Tom Tromey + Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): Only allow compound assignment of + reference type if type is String. + +2000-12-09 Alexandre Petit-Bianco + + * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip. + jcf-path.c: Likewise. + +2000-12-09 Anthony Green + + * zipfile.h (ZipDirectory): Declare size, uncompressed_size, + filestart and filename_length as int values. + +2000-12-07 Mo DeJong + + * jcf-io.c (find_class): Correct the logic that tests to see if a + .java file is newer than its .class file. The compiler was + incorrectly printing a warning when file mod times were equal. + +2000-12-07 Zack Weinberg + + * jvgenmain.c: Use ISPRINT not isascii. + +2000-12-06 Alexandre Petit-Bianco + + * parse.y (end_artificial_method_body): Fixed typo. + +2000-12-04 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Pick the correct enclosing + context when creating inner class instances. + Fixes gcj/332. + +2000-11-26 Joseph S. Myers + + * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version): + Update copyright year to 2000. + +2000-11-23 Anthony Green + + * jcf-parse.c (init_jcf_parse): Register current_file_list root. + Move current_file_list out of yyparse and make it static. + + * expr.c: Declare quick_stack and tree_list_free_list as static + (init_expr_processing): Register quick_stack and + tree_list_free_list roots. + +2000-11-22 Alexandre Petit-Bianco + + * parse.y (build_outer_field_access): New local `decl_ctx', use + it. Check for field's context and current class immediate outer + context inheritance. + (outer_field_access_p): Consider fields inherited from the last + enclosing context. + (build_access_to_thisn): Stop at the last enclosing context if + necessary. + Fixes gcj/367. + +2000-11-23 J"orn Rennecke + + * Make-lang.in (jvspec.o): Depend on $(CONFIG_H). + +2000-11-22 Bryce McKinlay + + * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the + scratch buffer. + +2000-11-20 Tom Tromey + + * jv-scan.c (help): Document --complexity. + (options): Added --complexity. + (flag_complexity): New global. + (main): Call `report'. + * parse-scan.y (complexity): New global. + (if_then_statement, if_then_else_statement, + if_then_else_statement_nsi, switch_block_statement_group, + while_expression, do_statement, for_begin, continue_statement, + throw_statement, catch_clause, finally, method_invocation, + conditional_and_expression, conditional_or_expression, + conditional_expression): Update complexity. + (reset_report): Reset complexity. + (report): New function. + +2000-11-20 Tom Tromey + + * lex.c (yylex): Added STRICT_TK case. + * parse.y (STRICT_TK): Added. + * parse-scan.y (STRICT_TK): Added. + * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and + `;'. Use 4, not 3, with -k option. Correctly rename resulting + file. + * keyword.h: Rebuilt. + * keyword.gperf (strictfp): Added. + +2000-11-20 Tom Tromey + + * lex.c (yylex): Recognize floating point constants with leading + 0. + +2000-11-19 Kaveh R. Ghazi + + * java-tree.h (cyclic_inheritance_report): Constify. + * parse.y (cyclic_inheritance_report): Likewise. + +2000-11-17 Zack Weinberg + + * parse.y (goal): Remove call to ggc_add_string_root. + +2000-11-16 Zack Weinberg + + * jcf-parse.c (get_constant), parse.y (do_merge_string_cste): + Create string in scratch buffer, then pass to build_string. + +2000-11-13 Joseph S. Myers + + * parse.y (issue_warning_error_from_context): Add + ATTRIBUTE_PRINTF. + +2000-11-11 Anthony Green + + * jcf-parse.c (process_zip_dir): Add finput parameter. + (jcf_figure_file_type): Call process_zip_dir with appropriate + argument. + +2000-11-10 Kaveh R. Ghazi + + * decl.c (copy_lang_decl): Use memcpy, not bcopy. + * jcf-parse.c (jcf_figure_file_type): Likewise. + +2000-11-09 Joseph S. Myers + + * parse.y (create_new_parser_context): Use memset () instead of + bzero (). + +2000-11-08 Tom Tromey + + * gjavah.c (process_file): Only include gcj/cni.h when generating + CNI stubs. + +2000-11-07 Joseph S. Myers + + * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c + (init_outgoing_cpool), lex.c (java_init_lex): Use memset () + instead of bzero (). + +2000-11-05 Tom Tromey + + * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix. + * lex.c (IS_ZERO): New define. + (java_perform_atof): Error on floating point underflow. + +2000-11-04 Tom Tromey + + * lex.c (java_parse_escape_sequence): Only read two octal + characters if the first one is greater than 3. Don't allow + "octal" numbers to include the digits 8 or 9. + +2000-11-05 Joseph S. Myers + + * Make-lang.in (java.distdir): Remove. + +2000-11-03 Tom Tromey + + * Make-lang.in (java.dvi): New target. + Partial fix for PR other/567. + + * lang-options.h: Mention -Wout-of-date. + * jcf-dump.c (flag_newer): New global. + * gjavah.c (flag_newer): New global. + * jcf-io.c (find_class): Only warn when flag_newer set. + * lang.c (flag_newer): New global. + (struct string_option): New declaration. + (lang_W_options): New global. + (process_option_with_no): New function. + (lang_decode_option): Use it. + + * class.c (cxx_keyword_p): Accept keywords with trailing `$'s. + * gjavah.c (cxx_keyword_subst): Handle any number of trailing + `$'. + + * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro. + (JAVA_ID_CHAR_P): Also try java_ignorable_control_p. + * lex.c (java_read_unicode): Removed `term_context' argument. + Recognize any number of `u' in `\u'. + (java_read_unicode_collapsing_terminators): New function. + (java_get_unicode): Use it. + (java_lineterminator): Removed. + (yylex): Produce error if character literal is newline or single + quote. Return if eof found in middle of `//' comment. EOF in + `//' comment is only an error if pedantic. + (java_ignorable_control_p): New function. + (java_parse_end_comment): Return if eof found in middle of + comment. + Include flags.h. + * jv-scan.c (pedantic): New global. + +2000-10-31 Alexandre Petit-Bianco + + * parse.y (outer_field_access_p): Inherited fields aren't + consider outer fields. + (maybe_build_thisn_access_method): Use + PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P. + (resolve_expression_name): Trigger an error if a static field + is being accessed as an outer field. + +2000-10-29 Alexandre Petit-Bianco + + * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'. + Fixes gcj/365. + +2000-10-27 Zack Weinberg + + * Make-lang.in: Move all build rules here from Makefile.in, + adapt to new context. Wrap all rules that change the current + directory in parentheses. Expunge all references to $(P). + When one command depends on another and they're run all at + once, use && to separate them, not ;. Add OUTPUT_OPTION to + all object-file generation rules. Delete obsolete variables. + + * Makefile.in: Delete. + * config-lang.in: Delete outputs= line. + +2000-10-25 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): NULLify this_arg when already + inserted. + (maybe_use_access_method): Handle call to methods unrelated to the + current class. Fixed comment. + Fixes gcj/361. + +2000-10-24 Alexandre Petit-Bianco + + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in + scope. + +2000-10-24 Tom Tromey + + * lex.c (java_new_lexer): Initialize new fields. Work around + broken iconv() implementations. + (java_read_char): Swap bytes if required. Use fallback decoder if + required. + (byteswap_init, need_byteswap): New globals. + (java_destroy_lexer): Only close iconv handle if it is in use. + * lex.h (java_lexer): New fields read_anything, byte_swap, + use_fallback. + Made out_buffer unsigned. + +2000-10-24 Alexandre Petit-Bianco + + * parse.y (register_incomplete_type): Include JDEP_FIELD as a case + where an enclosing context can be set on the jdep. + (do_resolve_class): Fixed identation. + +2000-10-21 Kaveh R. Ghazi + + * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define + + * jcf-reader.c (peek_attribute, skip_attribute): Only define + when requested. + + * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN. + + * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void. + +2000-10-18 Alexandre Petit-Bianco + + * jcf-write.c (OP1): Update `last_bc'. + (struct jcf_block): Fixed indentation and typo in comments. New + field `last_bc'. + (generate_bytecode_insns): Insert `nop' if `jsr' immediately + follows `monitorenter'. + * parse.y (patch_synchronized_statement): New local `tmp'. Call + `patch_string'. + Fixes gcj/232. + +2000-10-16 Tom Tromey + + * jvspec.c (lang_specific_driver): Recognize -MF and -MT. + * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}. + * lang-options.h: Added -MA, -MT, -MF.. + * lang.c (lang_decode_option): Recognize -MA, -MT, -MF. + (DEPEND_TARGET_SET): New macro. + (DEPEND_FILE_ALREADY_SET): Likewise. + (init_parse): Handle new flags. + * jcf.h (jcf_dependency_print_dummies): Declare. + * Make-lang.in (s-java): Added mkdeps.o. + * Makefile.in (BACKEND): Added mkdeps.o. + (../gcjh$(exeext)): Added mkdeps.o. + (../jcf-dump$(exeext)): Added mkdeps.o. + * jcf-depend.c: Include mkdeps.h. + (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS, + add_entry): Removed. + (jcf_dependency_reset): Rewrote. + (dependencies): New global. + (jcf_dependency_set_target): Rewrote. + (jcf_dependency_add_target): Likewise. + (jcf_dependency_add_file): Likewise. + (munge): Removed. + (print_ents): Removed. + (jcf_dependency_write): Rewrote. + (print_dummies): New global. + (jcf_dependency_print_dummies): New function + (jcf_dependency_write): Call deps_dummy_targets if required. + +2000-10-18 Alexandre Petit-Bianco + + * gjavah.c (add_class_decl): Removed unused variables `tname', + `tlen' and `name_index'. + * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro. + * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME + in `wfl_operator' with value. + (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE. + (jcf_figure_file_type): Fixed identation. + * lex.c (java_get_line_col): Use EOF. Tuned `^' placement. + * parse.y (analyze_clinit_body): New function. + (static_initializer:): Reset `current_static_block'. + (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in + `wfl_operator' with new value. + (lookup_cl): Use EXPR_WFL_FILENAME. + (maybe_yank_clinit): Handle bogus bodies, call + analyze_clinit_body. + (build_outer_field_access): Access to this$ built from + current_class, not its outer context. + (build_access_to_thisn): Fixed leading comment. Tidied things up. + (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'. + (patch_method_invocation): Use `is_static_flag' when already + initialized. + (patch_newarray): Removed assignment in ternary operator. + +2000-10-17 Alexandre Petit-Bianco + + * except.c (free_eh_ranges): Don't free `whole_range'. + +2000-10-15 Anthony Green + + * decl.c (init_decl_processing): Call init_class_processing before + anything else. + +2000-10-13 Alexandre Petit-Bianco + + * check-init.c (check_init): Fixed leading comment. Use + LOCAL_FINAL_P. + * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. + (give_name_to_locals): Likewise. + (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl' + fields in lang_decl_var. + * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR, + DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros. + (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten. + (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC, + DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros. + (LOCAL_FINAL): Rewritten. + (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P + MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros. + (struct lang_decl): Fixed comments. Added `synthetic_ctor' and + `init_final' fields. + (struct lang_decl_var): Fixed leading comment. Added `am', `wfl', + `final_uid', `final_liic', `final_ierr' and `local_final' fields. + (TYPE_HAS_FINAL_VARIABLE): New macro. + (struct lang_type): Added `afv' field. + * parse.y (check_static_final_variable_assignment_flag): New function. + (reset_static_final_variable_assignment_flag): Likewise. + (check_final_variable_local_assignment_flag): Likewise. + (reset_final_variable_local_assignment_flag): Likewise. + (check_final_variable_indirect_assignment): Likewise. + (check_final_variable_global_assignment_flag): Likewise. + (add_inner_class_fields): Use LOCAL_FINAL_P. + (register_fields): Handle local finals and final variables. + (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR. + (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. + (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC + on local finals. + (java_complete_expand_methods): Loop to set + TYPE_HAS_FINAL_VARIABLE. Call + `reset_final_variable_local_assignment_flag' and + `check_final_variable_local_assignment_flag' accordingly before + and after constructor expansion. Call + `reset_static_final_variable_assignment_flag' + before expanding and after call + `check_static_final_variable_assignment_flag' if the + current_class isn't an interface. After all methods have been + expanded, call `check_final_variable_global_assignment_flag' and + `check_static_final_variable_assignment_flag' if the current class + is an interface. + (maybe_yank_clinit): Fixed typo in comment. + (build_outer_field_access_methods): Removed old sanity check. Use + FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. + Don't create access methods for finals. + (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'. + (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if + existing DECL_INIT has been processed. + (java_complete_lhs): Likewise. + (check_final_assignment): Filter input on `lvalue''s TREE_CODE. + Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new + logic. + (patch_assignment): Use LOCAL_FINAL_P. + (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if + DECL_INITIAL is nullified. + Fixes gcj/163. + +2000-10-13 Kaveh R. Ghazi + + * Make-lang.in (parse.c, parse-scan.c): Create atomically. + + * Makefile.in (parse.c, parse-scan.c): Likewise. + +2000-10-12 Mark Mitchell + + * class.c (temporary_obstack): Remove. + (make_class): Don't mess with obstascks. + (push_class): Likewise. + (set_super_info): Likewise. + (add_method_1): Likewise. + (add_method): Likewise. + (add_field): Likewise. + (build_utf8_ref): Likewise. + (build_class_ref): Likewise. + (build_static_field_ref): Likewise. + (finish_class): Likewise. + (push_super_field): Likewise. + (layout_class): Likewise. + (layout_class_methods): Likewise. + (init_class_processing): Likewise. + * constants.c (get_tag_node): Likewise. + (build_constant_data_ref): Likewise. + * decl.c (ggc_p): Remove. + (copy_lang_decl): Use ggc_alloc. + (complete_start_java_method): Don't mess with obstacks. + (start_java_method): Likewise. + (end_java_method): Likewise. + * except.c (link_handler): Use xmalloc. + (free_eh_ranges): New function. + (method_init_exceptions): Use it. + (add_handler): Use xmalloc. + (expand_start_java_handler): Don't mess with obstacks. + (prepare_eh_table_type): Likewise. + (expand_end_java_handler): Likewise. + * expr.c (push_value): Likewise. + (create_label_decl): Likewise. + (build_jni_stub): Likewise. + (java_lang_expand_expr): Likewise. + (note_instructions): Use xrealloc. + (java_push_constant_from_pool): Don't mess with obstacks. + (process_jvm_instruction): Likewise. + * java-tree.h (cyclic_inheritance_report): Remove duplicate + declaration. + * jcf-parse.c (get_constant): Don't mess with obstacks. + (read_class): Likewise. + (jcf_parse): Likewise. + * lex.c (expression_obstack): Remove. + (java_lex): Don't use obstack_free. + * parse.h (exit_java_complete_class): Don't mess with obstacks. + (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust. + (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise. + (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise. + * parse.y (gaol): Add more GC roots. + (add_inner_class_fields): Adjust calls to MANGLE_* macros. + (lookup_field_wrapper): Likewise. + (obtain_incomplete_type): Don't mess with obstacks. + (build_alias_initializer_parameter_list): Adjust calls to MANGLE_* + macros. + (craft_constructor): Don't mess with obstacks. + (safe_layout_class): Likewise. + (java_complete_class): Likewise. + (source_end_java_method): Likewise. + (build_outer_field_access_methods): Likewise. + (build_outer_method_access_method): Likewise. + (maybe_build_thisn_access_method): Likewise. + (build_dot_class_method_invocation): Likewise. + (java_complete_tree): Likewise. + (java_complete_lhs): Likewise. + (do_merge_string_cste): Likewise. + (patch_string_cst): Likewise. + (array_constructor_check_entry): Likewise. + * typeck.c (build_java_array_type): Likewise. + (parse_signature_string): Likewise. + (build_java_signature): Likewise. + +2000-10-12 Tom Tromey + + Fix for PR gcj/356: + * gjavah.c (add_class_decl): Don't special-case inner classes. + (add_namelet): Likewise. + +2000-10-11 Rodney Brown + + * java-tree.h: Constify current_encoding. + * lang.c: Constify current_encoding. + +2000-10-10 Jeff Sturm + + * jvgenmain.c (class_mangling_suffix): Omit `.'. + (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'. + +2000-10-10 Alexandre Petit-Bianco + + * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's + patch. Fixes gcj/340. + +2000-10-10 Tom Tromey + + * lex.c (java_new_lexer): Initialize out_first and out_last + fields. + * lex.h (java_lexer): Added out_buffer, out_first, out_last. + +2000-10-09 Alexandre Petit-Bianco + + * parse.y (pop_current_osb): New function. + (array_type:): Use `dims:', changed actions + accordingly. Suggested by Anthony Green. + (array_creation_expression:): Used pop_current_osb. + (cast_expression:): Likewise. + (search_applicable_method_list): Fixed indentation. + +2000-10-08 Anthony Green + + * parse.y (array_type_literal): Remove production. + (type_literals): Refer to array_type, not array_type_literal. + +2000-10-07 Alexandre Petit-Bianco + + Patch contributed by Corey Minyard. + * decl.c (check_local_named_variable): New function. + (tree check_local_unnamed_variable): Likewise. + (find_local_variable): Splitted. Call check_local_{un}named_variable. + +2000-10-07 Anthony Green + + * class.c (layout_class): Handle case where superclass can't be + layed out yet. + +2000-10-07 Joseph S. Myers + + * Makefile.in (keyword.h): Refer to GNU FTP site for updated + gperf. + +2000-10-05 Tom Tromey + + * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'. + * jvgenmain.c (class_mangling_prefix): Removed. + (class_mangling_suffix): New global. + (main): Use it. + * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending + `$'. + (print_method_info): Handle overrides for static and final + methods. + (process_file): Generate declaration for class object field. + * class.c (cxx_keywords): New array. + (utf8_cmp): New function. + (cxx_keyword_p): New function. + (layout_class_method): Mangle C++ keywords by appending `$'. + (mangle_field): New function. + (mangle_class_field): Use mangle_field. Mangle class name as + `class$'. + (mangle_static_field): Use mangle_field. + +2000-10-03 Alexandre Petit-Bianco + + * decl.c (find_local_variable): Removed uncessary type check and + fixed range check typo. From Corey Minyard. + +2000-09-13 Alexandre Petit-Bianco + + * decl.c (give_name_to_locals): New local `code_offset'. Call + `maybe_adjust_start_pc'. + * expr.c (note_instructions): New function. + (expand_byte_code): Don't collect insn starts here. + (peek_opcode_at_pc): New function. + (maybe_adjust_start_pc): Likewise. + * java-tree.h (maybe_adjust_start_pc): Declare. + (note_instructions): Likewise. + * jcf-parse.c (parse_class_file): Call `note_instructions'. + +2000-09-13 Alexandre Petit-Bianco + + * parse.y (field_access:): Fixed indentation. + (qualify_ambiguous_name): Properly qualify `this.a[b].c'. + +2000-09-07 Tom Tromey + + Fix for PR gcj/307: + * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not + JPRIMITIVE_TYPE_P, for arithmetic operators. + (patch_method_invocation): Indentation fix. + (try_builtin_assignconv): Handle boolean specially. Fixed typo. + (valid_builtin_assignconv_identity_widening_p): Handle boolean. + (do_unary_numeric_promotion): Cleaned up code. + (valid_cast_to_p): Handle boolean correctly. + +2000-09-27 Tom Tromey + + * lex.c (java_read_unicode): Reset bs_count when finished with + `\u' sequence. + +2000-10-01 Mark Mitchell + + Convert to GC. + * Make-lang.in (s-java): Don't depend on ggc-callbacks.o. + * Makefile.in (BACKEND): Don't include ggc-callbacks.o. + (typeck.o): Depend on ggc.h. + * class.c (add_method_1): Use GC functions for allocation. + (init_class_processing): Register roots. + * decl.c (ggc_p): Set to 1. + (pending_local_decls): Make it static. + (push_jvm_slot): Use GC functions for allocation. + (init_decl_processing): Register roots. + (give_name_to_locals): Use GC functions for allocation. + (lang_mark_tree): New function. + * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC + functions for allocation. + * jcf-parse.c (jcf_parse_source): Use ggc_strdup. + * lex.c (java_lex): Use build_string, rather than replicating it + inline. + * parse.y (goal): Add more roots. + (mark_parser_ctxt): New function. + * typeck.c: Include ggc.h. + +2000-09-29 Alexandre Petit-Bianco + + * parse.y (maybe_yank_clinit): Also keep if its body + contains something else than MODIFY_EXPR. + +2000-09-23 Mark Mitchell + + * Make-lang.in (JAVA_SRCS): Include java-tree.h. + * Makefile.in (parse.o): Depend on ggc.h. + (class.o): Likewise. + (constants.o): Likewise. + (decl.o): Likewise. + (expr.o): Likewise. + (jcf-parse.o): Likewise. + (jcf-write.o): Likewise. + (mangle.o): Likewise. + * class.c: Include ggc.h. + (build_static_field_ref): Register GC roots. + (layout_class): Likewise. + (init_class_processing): Likewise. + * constants.c: Include ggc.h. + (current_constant_pool_data_ref): Remove. + (tag_nodes): Move it to ... + (get_tag_node): ... here. Register GC roots. + * decl.c: Include ggc.h. Remove many global tree definitions. + (throw_node): Define. + (java_global_trees): Likewise. + (predef_filenames): Make the size a constant. + (init_decl_processing): Adjust accordingly. + (init_decl_processing): Call init_jcf_parse. Register GC roots. + * expr.c: Include ggc.h. + (init_expr_processing): Register GC roots. + (build_invokeinterface): Likewise. + * java-tree.h: Replace extern tree declarations with macros. + (java_global_trees): New variable. + (java_tree_index): New enumeration. + (init_jcf_parse): Declare. + * jcf-parse.c: Include ggc.h. + (current_class): Remove declaration. + (main_class): Likewise. + (all_class_list): Likewise. + (predefined_filename_p): Adjust for constant size of + predef_filenames. + (init_jcf_parse): New function. + * jcf-write.c: Include ggc.h. + (generate_classfile): Register GC roots. + (append_synthetic_attribute): Likewise. + (append_innerclass_attribute_entry): Likewise. + * lang.c: Include ggc.h. + (lang_print_error): Register GC roots. + * parse.h (struct parser_ctxt): Rename fields to avoid conflicts + with macros. + * parse.y: Include ggc.h. + (wfl_operator): Remove. + (goal): Register GC roots. + (java_pop_parser_context): Adjust for new field names. + (java_parser_context_save_global): Likewse. + (java_parser_context_restore_global): Likewise. + (java_parser_context_suspend): Likewise. + (java_parser_context_resume): Likewise. + (verify_constructor_circularity): Register GC roots. + (lookup_cl): Likewise. + (java_reorder_fields): Likewise. + (build_current_this): Likewise. + (class_in_current_package): Likewise. + (argument_types_convertible): Likewise. + (patch_cast): Rename wfl_op parameter to avoid macro conflicts. + +2000-09-14 Tom Tromey + + * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV. + +2000-09-13 Tom Tromey + + * jcf-parse.c: Include . + * jv-scan.c: Include . + +2000-09-12 Tom Tromey + + * expr.c (pop_type_0): Return `Object' if trying to merge two + interface types. + * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for + interface types; `Object' is always a valid supertype. + +2000-09-12 Tom Tromey + + Fix for PR gcj/33: + * jv-scan.c (help): Document --encoding. + (options): Added `encoding' entry. + (OPT_ENCODING): New define. + (main): Handle --encoding. + Include if nl_langinfo exists. + * lang-options.h: Document --classpath, --CLASSPATH, --main, and + --encoding. + * jcf-parse.c Include if we have nl_langinfo. + (parse_source_file): Correctly call java_init_lex. Added `finput' + argument. Use nl_langinfo to determine default encoding. + * java-tree.h (current_encoding): Declare. + * parse.y (java_parser_context_restore_global): Don't restore + `finput'. + (java_parser_context_save_global): Don't set `finput' field. + (java_pop_parser_context): Don't restore `finput'. Free old lexer + if required. + * lang.c (current_encoding): New global. + (lang_decode_option): Recognize `-fencoding='. + (finish_parse): Don't close finput. + * parse.h (struct parser_ctxt): Removed `finput' and + `unget_utf8_value' fields. Added `lexer' field. + (java_init_lex): Fixed declaration. + * lex.c (java_new_lexer): New function. + (java_destroy_lexer): Likewise. + (java_read_char): Added `lex' argument. Handle iconv case. + (java_read_unicode): Added `lex' argument. Count backslashes in + lexer structure. + (java_init_lex): Added `finput' and `encoding' arguments. Set + `lexer' field in ctxp. + (BAD_UTF8_VALUE): Removed. + (java_lex): Handle seeing UEOF in the middle of a string literal. + * lex.h: Include if HAVE_ICONV defined. + (java_lexer): New structure. + (UNGETC): Removed. + (GETC): Removed. + (DEFAULT_ENCODING): New define. + (java_destroy_lexer): Declare. + +2000-09-12 Tom Tromey + + Fix for PR gcj/343: + * lex.c (java_init_lex): Initialize java_io_serializable. + * parse.y (java_io_serializable): New global. + (valid_ref_assignconv_cast_p): An array can be cast to + serializable. + +2000-09-10 Zack Weinberg + + * decl.c, expr.c: Include defaults.h if not already included. + Don't define the *_TYPE_SIZE macros. + +2000-09-09 Geoffrey Keating + + * typeck.c (build_java_array_type): Correct first parameter + in ADJUST_FIELD_ALIGN invocation. + +2000-09-06 Tom Tromey + + * lang-specs.h: Also recognize `-femit-class-files'. + +2000-09-05 Alexandre Petit-Bianco + + * verify.c (merge_types): Load the types to merge if necessary. + +2000-09-02 Anthony Green + + * jcf-io.c: Include zlib.h. + (open_in_zip): Read compressed class file archives. + * zipfile.h (ZipDirectory): Add uncompressed_size and + compression_method fields. + * zextract.c (read_zip_archive): Collect file compression info. + +2000-08-15 Bryce McKinlay + + * parse.y (do_resolve_class): Also explore superclasses of + intermediate enclosing contexts when searching for inner classes. + +2000-08-11 Alexandre Petit-Bianco + + * parse.y (variable_declarator_id:): Better error message. + (expression_statement:): Use YYNOT_TWICE. + (cast_expression:): Likewise. + (assignment:): Likewise. + +2000-08-11 Alexandre Petit-Bianco + + * parse.y (do_merge_string_cste): New locals. Create new + STRING_CSTs each time, use memcpy. Fixes gcj/311. + +2000-08-07 Hans Boehm + + * boehm.c (mark_reference_fields): Set marking bits for all words in + a multiple-word record. + (get_boehm_type_descriptor): Use the procedure marking descriptor for + java.lang.Class. + +2000-08-31 Mike Stump + + * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext), + jcf-dump$(exeext)): Make parallel safe. + +2000-08-29 Zack Weinberg + + * jcf-parse.c (set_source_filename): Constify a char *. + * jcf-write.c (append_innerclasses_attribute, + make_class_file_name): Constify a char *. Don't recycle a + variable for an unrelated purpose. + * parse.y: (build_alias_initializer_parameter_list): Constify a char *. + (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings. + +2000-08-29 Alexandre Petit-Bianco + + * expr.c (can_widen_reference_to): Fixed indentation. + * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment. + * parse.y: `finit$' replaces `$finit$' in comments. + (try_builtin_assignconv): Fixed leading comment. + +2000-08-25 Greg McGary + + * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE. + +2000-08-24 Greg McGary + + * lang.c (lang_decode_option): Use ARRAY_SIZE. + * parse.y (BINOP_LOOKUP): Likewise. + +2000-08-22 Andrew Haley + + * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before + sign extending. Fixes gcj/321. + * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before + combining to make a jlong. Fixes gcj/321. + +2000-08-21 Nix + + * lang-specs.h: Do not process -o or run the assembler if + -fsyntax-only. + +2000-08-16 Andrew Haley + + * typeck.c (build_java_array_type): Rewrite code to do array + alignment. Take into account back-end macros when aligning array + data. Remove setting of TYPE_USER_ALIGN; Java doesn't allow the + user to set alignment. Fixes gcj/252 and 160. + +2000-08-09 Tom Tromey + + * parse.y (check_abstract_method_definitions): Now return `int'. + Check implemented interfaces. Fixes PR gcj/305. + + * parse.y (patch_switch_statement): Disallow `long' in switch + expressions. Fixes PR gcj/310. + +2000-08-15 Alexandre Petit-Bianco + + * decl.c (finit_leg_identifier_node): New global. + (init_decl_processing): Use `finit$' to initialize + finit_identifier_node. Use `$finit$' to initialize + finit_leg_identifier_node. + * expr.c (expand_java_field_op): Use ID_FINIT_P. + * java-tree.h (finit_identifier_node): Changed attached comment. + (finit_leg_identifier_node): New declaration. + (ID_FINIT_P): Take finit_identifier_node and + finit_leg_identifier_node into account. This is a backward + compatibility hack. + +2000-08-14 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_conditional): Re-installed lost + Jan 6 2000 patch. + (generate_bytecode_insns): Check `nargs' before emitting it. + * verify.c (merge_type_state): Fixed typo. + * ChangeLog: Fixed typo in some jcf-write.c entries mentioning + generate_bytecode_{conditional,insns}. + +2000-08-13 Anthony Green + + * check-init.c (check_init): Add case for BIT_FIELD_REF (required + for -pg builds). + +2000-08-10 Alexandre Petit-Bianco + + * class.c (maybe_layout_super_class): Fixed indentation. + * java-tree.h (CLASS_METHOD_CHECKED_P): New macro. + (java_check_methods): New function declaration. + * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str' + instead of `str_ptr'. + * jcf-write.c (generate_bytecode_insns): Emit number the of args + of a `invokeinterface' at the right time. + * parse.h (WFL_STRIP_BRACKET): New macro. + (SET_TYPE_FOR_RESOLUTION): Use it. + * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'. + (check_class_interface_creation): Don't check for cross package + innerclass name clashes. + (method_header): Behave properly if MDECL is `error_mark_node'. + (method_declarator): Return `error_mark_node' if bogus current + class. + (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary. + (resolve_and_layout): New local `decl_type', set and used. Call + java_check_methods. + (java_check_methods): New method. + (java_layout_classes): Use it. + (resolve_qualified_expression_name): No EH check necessary in + access$. + (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating + `case' statement. + (patch_assignment): Set DECL_INITIAL on integral final local. + +2000-08-08 Alexandre Petit-Bianco + + * java-tree.h (flag_extraneous_semicolon): New extern. + * lang-options.h: (-Wextraneous-semicolon): New option. + * lang.c (flag_redundant): Fixed typo in leading comment. + (flag_extraneous_semicolon): New global. + (lang_decode_option): Set `flag_extraneous_semicolon' when + -Wall. Decode `-Wextraneous-semicolon'. + * parse.y (type_declaration:): Removed `SC_TK' hack, added + `empty_statement' rule. + (class_body_declaration): Likewise. + (method_body:): Accept `;' as a method body. + (static_initializer:): Removed `SC_TK' hack. + (constructor_block_end:): Likewise. + (empty_statement:): Report deprecated empty declaration. Fixes + gcj/295 + +2000-08-07 Alexandre Petit-Bianco + + * parse.y (build_dot_class_method_invocation): Changed parameter + name to `type'. Build signature from `type' and convert it to a + STRING_CST if it's an array. + (patch_incomplete_class_ref): `build_dot_class_method_invocation' + to use `ref_type' directly. + +2000-08-06 Ovidiu Predescu + + * lang-options.h: Added a comma after the last element to avoid + syntax errors when other languages define additional options. + +2000-08-04 Zack Weinberg + + * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist. + * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS. + (jc1): Link with $(BACKEND). + (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND). + +2000-08-02 Zack Weinberg + + * jvspec.c: Adjust type of second argument to + lang_specific_driver, and update code as necessary. + + * class.c (build_dtable_decl): Initialize dummy. + +2000-08-01 Alexandre Petit-Bianco + + * parse.y (maybe_yank_clinit): When generating bytecode: non empty + method bodies not to rule out discarding `'; don't use + to initialize static fields with constant initializers. + +2000-08-01 Alexandre Petit-Bianco + + * gjavah.c (print_method_info): Added `synth' parameter. Skip + synthetic methods. + (method_synthetic): New global. + (HANDLE_METHOD): Recognize synthetic method and tell + `print_method_info' about it. + (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're + processing a synthetic method. + * jcf-reader.c (skip_attribute): New function. + ( skip_attribute): Likewise. + +2000-08-01 Alexandre Petit-Bianco + + * parse.y (build_outer_field_access): Fixed comments. + (fix_constructors): Emit the initialization of this$ before + calling $finit$. + (resolve_qualified_expression_name): Build an access to `decl' if + necessary. + +2000-07-31 Alexandre Petit-Bianco + + * parse-scan.y (curent_class): Non longer const. + (inner_qualifier, inner_qualifier_length): Deleted. + (current_class_length): New global. + (bracket_count): Fixed typo in leading comment. + (anonymous_count): New global. + (class_instance_creation_expression:): Handle anonymous classes. + (anonymous_class_creation:): New rule. + (push_class_context): Rewritten. + (pop_class_context): Likewise. + (INNER_QUALIFIER): Macro deleted. + (report_class_declaration): call `push_class_context' when + entering the function. `fprintf' format modified not to use + INNER_QUALIFIER. + (report_class_declaration): Assign `package_name' and + `current_class' to NULL separately. + +2000-07-31 Alexandre Petit-Bianco + + * expr.c (build_invokeinterface): Call layout_class_methods on + target interface. + +2000-07-27 Tom Tromey + Anthony Green + Alexandre Petit-Bianco + + * class.c (make_class_data): Create vtable for abstract classes. + (get_dispatch_table): Changed to cope with abstract classes. + +2000-07-27 Tom Tromey + + * parse.y (patch_method_invocation): Don't reverse the argument + list when dealing with anonymous class constructors. Fixed typo in + comment. + +2000-07-27 Alexandre Petit-Bianco + + * parse.y (build_alias_initializer_parameter_list): Reverse + crafted list when building aliases for anonymous class + constructors. + +2000-07-25 Alexandre Petit-Bianco + + * parse.y (jdep_resolve_class): Don't bother checking potential + innerclass access if `decl' is NULL. + (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the + WFL. + +2000-07-25 Alexandre Petit-Bianco + + * parse.c: Remove (again.) + +2000-07-24 Alexandre Petit-Bianco + + * parse.y (find_as_inner_class): Removed 2000-07-19 patches. + * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved + outside the `if' statement, alias to innerclass removed, `decl' + used to mark the class complete. + +2000-07-21 Alexandre Petit-Bianco + + * parse.y (simple_name:): Fixed typo in error message. + +2000-07-21 Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node + or its first operand can be error marks. + +2000-07-20 Alexandre Petit-Bianco + + * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC. + * parse.y (method_header): Likewise. + +2000-07-19 Alexandre Petit-Bianco + + * parse.y (process_imports): Consider that one might be trying to + import an innerclass. Fixes gcj/254 + +2000-07-19 Alexandre Petit-Bianco + + * parse.y (find_as_inner_class): Handle the case where the + enclosing context of an innerclass has been loaded as bytecode. + +2000-07-19 Alexandre Petit-Bianco + + * parse.y (simple_name:): Reject `$' in type names. + (resolve_type_during_patch): Use `type' as a second + argument to resolve_no_layout. Fixes gcj/257. + +2000-07-18 Bryce McKinlay + + * parse.y (find_most_specific_methods_list): Select the only + non-abstract method even if max has been set. + Fixes gcj/285, gcj/298. + +2000-07-18 Jeff Sturm + + * lang-specs.h: Added %(jc1) to java compiler options. + +2000-07-14 Zack Weinberg + + * .cvsignore: New file. + +2000-07-13 Alexandre Petit-Bianco + + * parse.y (not_accessible_p): Access granted to innerclasses + (indirectly) extending the reference type. Fixes gcj/249. + +2000-07-13 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Fixed comment. + (maybe_use_access_method): Build this$s to the context of the + target method, or a type that extends it. Fixes gcj/242. + +2000-07-13 Mark Mitchell + + * parse.c: Remove. + +2000-07-13 Alexandre Petit-Bianco + + * parse.y (fold_constant_for_init): Avoid bullish conversion. + +2000-07-13 Tom Tromey + + * lang-specs.h: Added %{I*}. + +2000-07-13 Zack Weinberg + + * lang-specs.h: Use the new named specs. Remove unnecessary braces. + +2000-07-12 Mark Mitchell + + * parse-scan.c: Remove. + +2000-07-10 Alexandre Petit-Bianco + + * class.c (set_super_info): Handled protected inner classes. + (common_enclosing_context_p): Bail early if arguments aren't both + inner classes. + (get_access_flags_from_decl): Handle private and protected inner + classes. + * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro. + (CLASS_PROTECTED): Likewise. + (struct lang_type): New bitfield `poic'. + * parse.y (jdep_resolve_class): Call check_inner_class_access on + inner classes only. + (check_inner_class_access): Renamed arguments, added + comments. Handles protected inner classes (fixes gcj/225) + (not_accessible_p): Fixed comments. Avoid handling inner classes. + +2000-07-10 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Verify qualified + access to `this'. Fixes gcj/239. + +2000-07-10 Alexandre Petit-Bianco + + * jcf-write.c (generate_classfile): Don't install ConstantValue + for null pointers. + +2000-07-07 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Handle inner class + access. Fixes gcj/256. + +2000-07-07 Alexandre Petit-Bianco + + * jcf-write.c (generate_classfile): Properly install the + ConstantValue attribute and the initial value constant pool index + on string constants. + * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting + class files. + +2000-07-06 Alexandre Petit-Bianco + + * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while + construct. + * parse.y (find_as_inner_class): Fixed typo. + (do_resolve_class): Explore enclosing contexts when searching for + innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME. + (check_inner_class_access): Check `decl' which can be null in case + of previous errors. + +2000-07-05 Alexandre Petit-Bianco + + * java-tree.h (java_debug_context): Declared `extern'. + (safe_layout_class): Likewise. + * parse.y (resolve_field_access): Field must be `static' in order + to be replaced by its initial value. Added comments. + (find_applicable_accessible_methods_list): Fixed typo. + (find_most_specific_methods_list): Methods found in innerclasses + take over methods founds in the enclosing contexts. + (java_complete_tree): Loosen restrictions on the type of DECLs + that can be replaced by their initialization values. + (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'. + +2000-07-05 Tom Tromey + + * Make-lang.in (PARSE_DIR): New macro. + (PARSE_RELDIR): Likewise. + (PARSE_C): Likewise. + (PARSE_SCAN_C): Likewise. + ($(PARSE_C)): New target. + ($(PARSE_SCAN_C)): Likewise. + (SET_BISON): New macro. + (BISONFLAGS): Likewise. + (JAVABISONFLAGS): Likewise. + +2000-07-02 Bryce McKinlay + + * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream + argument on the first pass for CNI as well as JNI. + (print_method_info): Set up method name on the first pass only. + +2000-07-01 Alexandre Petit-Bianco + + * parse.y (parser_qualified_classname): Removed parameter + `is_static'. + (create_interface): Removed first passed parameter to + parser_qualified_classname. + (create_class): Likewise. Don't install alias on static + innerclasses. Fixes gcj/275. + +2000-07-01 Alexandre Petit-Bianco + + * parse.y (maybe_generate_pre_expand_clinit): Don't build a + debugable statement with empty_stmt_node. Fixes gcj/272 + +2000-07-01 Alexandre Petit-Bianco + + * expr.c (build_instanceof): Layout type after it's loaded. Fixes + gcj/271. + +2000-06-29 Alexandre Petit-Bianco + + * jcf-write.c (push_long_const): Appropriately cast short negative + constant to jword. + +2000-06-29 Alexandre Petit-Bianco + + * parse.y (verify_constructor_super): Use loop variable + `m_arg_type' initialized with `mdecl_arg_type'. + +2000-06-29 Tom Tromey + + * parse.y (resolve_field_access): Handle case where `type_found' + is NULL. + +2000-06-27 Alexandre Petit-Bianco + + * expr.c (lookup_field): The same field can be found through two + different interface. Don't declare it ambiguous in that case. + +2000-06-27 Tom Tromey + + * lex.c (java_lineterminator): Don't recognize \r after \n. If \r + follows \r, then unget it at a lower level. + +2000-06-26 Tom Tromey + + * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to + java_complete_tree. + +2000-06-25 Tom Tromey + + * parse.y (for_statement): Wrap expression in a WFL if it is a + constant. For PR gcj/268. + +2000-06-25 Alexandre Petit-Bianco + + * parse.y (do_resolve_class): Minor optimiztion in the package + list search. Removed unnecessary test and return statement. + (valid_ref_assignconv_cast_p): Order of arguments to + enclosing_context_p fixed. + +2000-06-24 Tom Tromey + + * expr.c (lookup_field): Print error and return error_mark_node if + field reference is ambiguous. + + * parse.y (check_abstract_method_definitions): Also check if + `other_method' is abstract. + +2000-06-23 Alexandre Petit-Bianco + + * class.c (set_super_info): Handle ACC_PRIVATE for (inner) + classes. + * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro. + (struct lang_type): New field `pic'. + (CLASS_PRIVATE): New macro. + * parse.y (check_inner_class_access): New function. + (jdep_resolve_class): Call it. + +2000-06-23 Tom Tromey + + * parse.y (patch_incomplete_class_ref): Initialize the returned + class. For PR gcj/260. + +2000-06-21 Alexandre Petit-Bianco + + * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'. + +2000-06-20 Alexandre Petit-Bianco + + * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for + Java specific checks. + * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage + screened by DECL_P. + * java-tree.def (CASE_EXPR): Marked 'e'. + (DEFAULT_EXPR): Likewise. + * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage + screened by DECL_P. + * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for + Java specific checks. + (generate_bytecode_insns): Test try_block for BLOCK before using + BLOCK_EXPR_BODY. + * parse.y (build_wfl_wrap): Added `location' argument. Set + EXPR_WFL_LINECOL accordingly. + (dim_expr:): Wrap constants with WFLs. + (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC. + (resolve_package): Check for `stmt' not being a BLOCK before + building a debuggable statement with it. + (make_qualified_primary): Added extra parameter to build_wfl_wrap + invocation. + (resolve_field_access): Make sure `decl' is a DECL before treating + it as such. + (maybe_build_primttype_type_ref): Make sure `wfl''s node is an + IDENTIFIER_NODE before treating it as such. + (patch_new_array_init): Make sure `elt' is a TREE_LIST before + treating it as such. + (find_applicable_accessible_methods_list): CLASS_INTERFACE macro + to be applied only on non array types. + +2000-06-16 Per Bothner + + * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN): Don't + define in terms of DECL_RESULT, as that fails when --enable-checking. + +2000-06-15 Kaveh R. Ghazi + + * jcf-write.c (CHECK_PUT): Add static prototype. Make pointer + types the same in comparison. + (CHECK_OP): Add static prototype. + +2000-06-13 Jakub Jelinek + + * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN. + * parse.y (java_complete_class): Set DECL_USER_ALIGN. + * parse.c: Rebuilt. + +2000-06-11 Kaveh R. Ghazi + + * decl.c (create_primitive_vtable): Prototype. + + * jcf-write.c (generate_bytecode_insns): Initialize variable + `saved_context'. + + * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED. + +2000-06-09 Bryce McKinlay + + * parse.y (find_applicable_accessible_methods_list): Use a hashtable + to track searched classes, and do not search the same class more than + once. Call find_applicable_accessible_methods_list on immediate + superclass, instead of search_applicable_method_list on all ancestors. + Fix for PR gcj/238. + +2000-06-09 Bryce McKinlay + + * parse.y (register_fields): Permit static fields in inner classes + if they are final. Fix for PR gcj/255. + +2000-06-06 Alexandre Petit-Bianco + + * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries. + * parse.y (find_in_imports): Returned type changed to void, + leading comment fixed. + (register_package): New function. + (qualify_and_find): Likewise. + (package_declaration:): Use `register_package'. + (single_type_import_declaration:): Removed local variable + `node'. Added missing `;' for consistency. + (type_import_on_demand_declaration:): Use `chainon' to link new + entries. + (lookup_field_wrapper): Lookup local variables defined in outer + contexts first. + (java_complete_class): Don't reverse the list of imported on demand. + (do_resolve_class): Reorganized. Removed local variable + `original_name'. Call `qualify_and_find' with the current package + name, invoke `find_in_imports_on_demand' right after. Call + `qualify_and_find' with the packages we've seen so far. Fixed + operations numbering in comments. + (java_expand_class): Don't reverse `package_list'. + (find_most_specific_methods_list): New local variables `abstract' + and `candidates'. Use them to pick the right method. + +2000-06-06 Tom Tromey + + * parse.y (check_modifiers_consistency): Don't subtract out + `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY. + +2000-06-04 Philipp Thomas + + * Makefile.in (INTLLIBS): New. + (LIBS): Add above. + (DEPLIBS): Ditto. + +2000-06-02 Alexandre Petit-Bianco + + * class.c (get_dispatch_table): Build the vtable dummy entry list + element with a null purpose. Fixed leading comment. + (build_dtable_decl): Build an accurate dtable type when appropriate + and use it. + +2000-06-02 Richard Henderson + + * lang.c (lang_get_alias_set): New. + +2000-05-31 Alexandre Petit-Bianco + + * parse.y (resolve_field_access): Complete the DECL_INITIAL tree + before using it as the accessed field. + +2000-05-31 Tom Tromey + + * java-tree.h (boolean_array_vtable, byte_array_vtable, + char_array_vtable, short_array_vtable, int_array_vtable, + long_array_vtable, float_array_vtable, double_array_vtable): + Declare. + * expr.c (get_primitive_array_vtable): New function. + (create_primitive_vtable): New function. + (java_lang_expand_expr): Enable code to statically generate + arrays. + * decl.c (init_decl_processing): Create primitive vtables. + (boolean_array_vtable, byte_array_vtable, char_array_vtable, + short_array_vtable, int_array_vtable, long_array_vtable, + float_array_vtable, double_array_vtable): Define. + +2000-05-26 Zack Weinberg + + * java/parse.y (find_applicable_accessible_methods_list): + Don't add an uninitialized value to the list. + +2000-05-25 Tom Tromey + + * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC + when trying to see if field's class should be initialized. Always + initialize field's declaring class, not qualified class. + For PR gcj/162. + + * parse.y (array_constructor_check_entry): Pass `wfl_value', not + `wfl_operator', to maybe_build_primttype_type_ref. + Fixes PR gcj/235. + +2000-05-23 Bryce McKinlay + + * parse.y (patch_method_invocation): Don't try to lookup methods + in primitive types. + +2000-05-02 Alexandre Petit-Bianco + + * parse.y (resolve_field_access): Call the appropriate + before accessing the length of a static array. Craft a decl for + the field while its time. Fixes PR gcj/129. + +2000-05-01 Alexandre Petit-Bianco + + * parse.y (resolve_package): Correctly set `*next' (was off by + one.) + (resolve_qualified_expression_name): Fixed comment. + +2000-04-27 Alexandre Petit-Bianco + + * jcf-parse.c (jcf_parse_source): Reset current_class and + current_function_decl to NULL before parsing a new file. + +2000-04-27 Alexandre Petit-Bianco + + * parse.y (block_end:): If the collected block doesn't feature a + statement, insert an empty statement. + +2000-04-17 Alexandre Petit-Bianco + + * parse.y (maybe_yank_clinit): New function. + (maybe_generate_pre_expand_clinit): Always link at the + end of the list of methods belonging to a class. + (java_complete_expand_method): Check whether is really + necessary and expand it accordingly. + +2000-04-17 Alexandre Petit-Bianco + + * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be + processed by the method's switch statement. + +2000-05-19 Tom Tromey + + * java-tree.h: Added init state enum. + * decl.c (emit_init_test_initialization): Initialize class + initialization check variable by looking at class' state. + +2000-05-19 Tom Tromey + + * java-tree.h (build_instanceof): Declare. + (build_get_class): Declare. + * parse.y (patch_binop): Use build_instanceof. + * expr.c (build_instanceof): New function. If class is final, + don't make a function call. + (expand_java_INSTANCEOF): Use it. + (build_get_class): New function. + +2000-05-18 Alexandre Oliva + + * jcf-write.c (generate_classfile): Scan the source_file for + slashes with the right pointer variable. + +2000-05-17 Andrew Cagney + + * lang.c (lang_decode_option): Update -Wunused flags by calling + set_Wunused. + * decl.c (poplevel): Replace warn_unused with warn_unused_label. + +2000-05-09 Zack Weinberg + + * check_init.c (check_init): Constify local char *. + * class.c (push_class): Constify local char *. + * java_tree.h: Update prototypes. + * jcf-io.c (open_class): Constify filename parameter and + return value. + (find_class): Remove redundant string copy. Cast return from + open_class. + * jcf-parse.c (read_class, parse_class_file, yyparse): + Constify local char *. + * jcf-write.c (generate_bytecode_insns, generate_classfile): + Constify local char *. + * jcf.h (JCF): Constify filename and classname. + (JCF_FINISH): Cast args to FREE to char * when appropriate. + * lang.c (init_parse): Constify parameter and return value. + * lex.c (java_get_line_col): Constify filename parameter. + * parse.h: Constify parser_ctxt.filename. Update prototypes. + * parse.y (java_parser_context_suspend, + issue_warning_error_from_context, safe_layout_class): Constify + local char *. + * parse.c: Regenerate. + +2000-05-08 Tom Tromey + + * expr.c (build_jni_stub): Cache the result of + _Jv_LookupJNIMethod. + +2000-05-05 Alexandre Petit-Bianco + + * decl.c (predef_filenames_size): Now 7. + (predef_filenames): New seventh entry. + +2000-05-04 Tom Tromey + + * boehm.c (mark_reference_fields): Don't mark RawData fields. + Keep track of when we've seen a reference field after a + non-reference field. + (get_boehm_type_descriptor): Handle case where we see + non-reference fields but no trailing reference field. + * decl.c (rawdata_ptr_type_node): Define. + (init_decl_processing): Initialize rawdata_ptr_type_node. + * java-tree.h (rawdata_ptr_type_node): Declare. + +2000-05-04 Kaveh R. Ghazi + + * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format + specifiers in calls to fprintf. + +2000-05-03 Andrew Haley + + * expr.c (build_java_jsr): Use emit_jump, not expand_goto. + + * javaop.h (WORD_TO_INT): New function. + (IMMEDIATE_s4): Use WORD_TO_INT. + * jcf.h (JPOOL_INT): Ditto. + + * gjavah.c (decode_signature_piece): Don't treat `$' as namespace + separator. + +2000-04-19 Tom Tromey + + * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE + on native function. + * jcf-parse.c (parse_class_file): Call build_jni_stub for native + JNI methods. + * expr.c (build_jni_stub): New function. + * lang-specs.h: -fjni and -femit-class-file are incompatible. + * parse.c: Rebuilt. + * parse.y (java_complete_expand_methods): Expand a native method + and call build_jni_stub if -fjni given. + * lang-options.h: Document -fjni. + * lang.c (flag_jni): New global. + (lang_f_options): Added `jni' entry. + * java-tree.h (soft_lookupjnimethod_node, + soft_getjnienvnewframe_node, soft_jnipopsystemframe_node): + Declare. + (flag_jni): Declare. + (build_jni_stub): Declare. + (struct lang_decl): Added `native' flag. + (METHOD_NATIVE): Redefined to use `native' field of lang specific + structure. + * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node, + soft_jnipopsystemframe_node): New globals. + (init_decl_processing): Set them. _Jv_InitClass only takes one + argument. + + * java-tree.def: Put into `C' mode. + +2000-04-27 Tom Tromey + + Fix for PR gcj/2: + * expr.c (expand_invoke): Generate check to see if object pointer + is null in nonvirtual invocation case. + * java-tree.h (soft_nullpointer_node): Declare. + * decl.c (soft_nullpointer_node): New global. + (init_decl_processing): Initialize soft_nullpointer_node. + * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final' + or `private' methods. + (patch_invoke): Handle INVOKE_NONVIRTUAL case. + +2000-04-26 Alexandre Petit-Bianco + + * decl.c (complete_start_java_method): Don't call _Jv_InitClass + from + +2000-04-26 Tom Tromey + + * zextract.c (find_zip_file_start): New function. + (read_zip_archive): Use it. + +2000-04-25 Alexandre Petit-Bianco + + * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS. + +2000-04-24 Alexandre Petit-Bianco + + * class.c (common_enclosing_context_p): New function. + * java-tree.h (common_enclosing_context_p): Added prototype. + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow + classes sharing an outer context with the current instance. + * parse.y (build_access_to_thisn): Fixed leading comment. + (verify_constructor_super): New local `supper_inner'. Skip + enclosing context argument in the case of inner class constructors. + (patch_method_invocation): Insert proper context as second + parameter to pure inner class constructor super invocations. + +2000-04-24 Alexandre Petit-Bianco + + * parse.y (end_class_declaration): Reset the interface number + counter. + +2000-04-24 Alexandre Petit-Bianco + + * parse.y (source_start_java_method): Deleted unnecessary code. + (patch_method_invocation): Fixed comment. + +2000-04-24 Robert Lipe + + * parse.h (_jdep): Member `kind' now ENUM_BITFIELD. + +2000-04-23 Tom Tromey + + * boehm.c (mark_reference_fields): Use int_byte_position. + +2000-04-22 Tom Tromey + + * boehm.c (mark_reference_fields): Only call byte_position on + non-static fields. + +2000-04-22 Tom Tromey + + * boehm.c (mark_reference_fields): Added `last_view_index' + argument. Use DECL_FIELD_OFFSET to determine field's offset. + +2000-04-20 Mo DeJong + + * parse.h (INTERFACE_INNER_MODIFIERS): New macro. + * parse.y (check_class_interface_creation): Fixed comments. Select + permitted modifiers for (inner) interfaces. Changed error message + to report rejected modifiers used with local classes. + +2000-04-20 Alexandre Petit-Bianco + + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes + of directly inherited type considered in scope. + * parse.y (do_resolve_class): Search inherited classes for inner + classes. + +2000-04-20 Tom Tromey + + * parse.y (not_accessible_p): Use member's class, not current + class, when doing inheritance check for protected reference. + Fixes PR gcj/124. + +2000-04-20 Jason Schroeder + + * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction. + +2000-04-19 Alexandre Petit-Bianco + + * parse.y (lookup_field_wrapper): Search for final local aliases. + (resolve_expression_name): Let lookup_field_wrapper search for + final local aliases. Force the value of `name' if one is found. + (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have + an expression name. Fixed comments. + +2000-04-19 Alexandre Petit-Bianco + + * parse.y (yyerror): `msg' can be null, don't use it in that case. + +2000-04-19 Tom Tromey + + * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop. + +2000-04-18 Alexandre Petit-Bianco + + * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'. + +2000-04-18 Tom Tromey + + PR gcj/211: + * gjavah.c (utf8_cmp): Changed return value. + (cxx_keyword_subst): Handle all C++ keywords. Allocate new return + result. + (cxx_keywords): New global. + (get_field_name): Handle new result of cxx_keyword_subst. + (print_method_info): Likewise. + +2000-04-17 Bryce McKinlay + + * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names + with a newline, for CNI. + (print_stub_or_jni): Print a space or newline before method name for + CNI as well as JNI. + (print_cxx_classname): Don't write leading "::" in CNI stub method. + (process_file): Include gcj/cni.h if generating CNI stubs. + +2000-04-16 Tom Tromey + + * gjavah.c (decompile_method): Use print_field_name. + Fixes PR gcj/205. + +2000-04-14 Alexandre Petit-Bianco + + * parse.y (java_expand_classes): Reverse the package list once. + (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string + reduction. + (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of + the `==' and `!=' operators. + +2000-04-05 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): At invocation time, + always relate an interface method to the type of its selector. + +2000-04-05 Tom Tromey + + Fix for PR gcj/2: + * expr.c (expand_invoke): Generate check to see if object pointer + is null in nonvirtual invocation case. + * java-tree.h (soft_nullpointer_node): Declare. + * decl.c (soft_nullpointer_node): New global. + (init_decl_processing): Initialize soft_nullpointer_node. + * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final' + or `private' methods. + (patch_invoke): Handle INVOKE_NONVIRTUAL case. + +2000-04-05 Tom Tromey + + Fix for PR gcj/140: + * parse.y (check_final_assignment): Recognize assignments to the + `length' field of an array when generating class files. + +2000-04-05 Alexandre Petit-Bianco + + * class.c (decl_hash): Prototype removed. + (decl_compare): Likewise. + +2000-04-05 Tom Tromey + + * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter. + * parse.y (check_modifiers_consistency): Check for final/volatile + clash. Fixes PR gcj/164. + +2000-04-05 Alexandre Petit-Bianco + + * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash', + made global. + (java_hash_compare_tree_node): Renamed from `decl_compare, made + global. + (add_method_1): Use `java_hash_hash_tree_node' and + `java_hash_compare_tree_node'. + * java-tree.h: (java_hash_hash_tree_node): Prototyped. + (java_hash_compare_tree_node): Likewise. + * parse.y (find_applicable_accessible_methods_list): Create, + delete and use a hash table to remember already searched interfaces. + +2000-04-03 Matt Welsh + + * jcf-depend.c (add_entry): Fixed bug where list was always replaced + with latest entry. + +2000-04-04 Kaveh R. Ghazi + + * boehm.c (mark_reference_fields, set_bit): Prototype. + (set_bit): Un-ANSI-fy definition. + + * class.c (init_test_hash_newfunc, decl_hash, decl_compare): + Prototype. + + * decl.c (emit_init_test_initialization): Likewise. + + * gjavah.c (jni_print_char): Likewise. + + * parse.y (create_new_parser_context): Likewise. + +2000-03-30 Alexandre Petit-Bianco + + * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000 + patch missing hunk. Fixed indentation. + +2000-03-30 Tom Tromey + + * gjavah.c (D_NAN_MASK): Only define as word-reversed when + HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree. + +2000-03-28 Alexandre Petit-Bianco + + * parse-scan.y (pop_class_context): Reset `inner_qualifier_length' + when negative *before* using it as an array index. + * ChangeLog: Fixed typo. + +2000-03-28 Alexandre Petit-Bianco + + * parse-scan.y (pop_class_context): Reset `inner_qualifier_length' + to 0 when it reaches -1. + +2000-03-27 Alexandre Petit-Bianco + + * jcf-parse.c (get_constant): Properly cast `num' during the + invocation of `add_double'. + * jcf-write.c (push_long_const): Properly cast `lo' before + comparing it to short bounds. + * parse-scan.y (interface_declaration:): Rule re-arrange so that + `interface_body:' is reduced after the current interface is + pushed. + +2000-03-26 Tom Tromey + + * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each + Java-specific `-f' option. + +2000-03-26 Richard Kenner + + * decl.c (init_decl_processing): Only call initialize_sizetypes once. + Adjust order of making types. + Make bitsize_*_node values. + +2000-03-25 Richard Kenner + + * class.c (make_field_value): Use byte_position. + * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position. + (java_array_data_offset): Likewise. + * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to + bzero call. + +2000-03-22 Alexandre Petit-Bianco + + * parse.y (check_abstract_method_definitions): New local + `end_type_reached'. Make sure we also consider `end_type'. + (java_check_abstract_method_definitions): Make sure we eventually + consider `java.lang.Object'. + (maybe_use_access_method): Don't use access method if not in the + context of a pure inner class or if the method's context is right. + (find_applicable_accessible_methods_list): New static flag + `object_done'. Don't search abstract classes as interfaces. Fixed + indentation. Fixed the `java.lang.Object' only search. Search + class interface(s) first, then fully search enclosing contexts. + (find_most_specific_methods_list): Pick the closest candidate when + they're all abstract. + +2000-03-20 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR: + properly initialize `finished_label'. Don't emit gotos for empty + try statements. + +2000-03-19 Martin v. Löwis + + * except.c (emit_handlers): Clear catch_clauses_last. + +2000-03-17 Alexandre Petit-Bianco + + * parse.y (check_method_types_complete): New function. + (create_class): Reset anonymous class counter only when seeing an + non inner classe. + (java_complete_class): JDEP_METHOD: Don't recompute signature + if incomplete. + +2000-03-17 Alexandre Petit-Bianco + + * class.c (build_static_ref): Fixed indentation in comment. + * java-tree.def (TRY_EXPR): Fixed typo in name. + (CLASS_LITERAL): Likewise. + * java-tree.h: (TYPE_DOT_CLASS): New macro. + (struct lang_type): New field `dot_class'. + * jcf-write.c (generate_bytecode_insns): Fixed error message. + (generate_classfile): Method `class$' is synthetic. + * parse.y (build_do_class_method): New function. + (build_dot_class_method_invocation): Likewise. + (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary. + (resolve_qualified_expression_name): Handle CLASS_LITERAL. + (qualify_ambiguous_name): Likewise. + (patch_incomplete_class_ref): Invoke synthetic method if necessary. + (build_try_statement): Fixed leading comment. + +2000-03-17 Richard Kenner + + * class.c (make_field_value): Properly handle sizes. + (get_dispatch_vector): Use tree_low_cst and host_integerp. + (layout_class_method): Count using trees. + * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node. + * expr.c (java_array_data_offset): Use int_bit_position. + (build_newarray, build_anewarray): Use host_integerp and tree_low_cst. + (build_invokevirtual): Use tree_low_cst and do computations with trees. + +2000-03-16 Tom Tromey + + * lang.c (flag_hash_synchronization): New global. + (lang_f_options): Added `hash-synchronization'. + * lang-options.h: Mention -fhash-synchronization. + * java-tree.h (flag_hash_synchronization): Declare. + * expr.c (java_lang_expand_expr): Only push `sync_info' value when + hash table synchronization is disabled. + * decl.c (init_decl_processing): Only push `sync_info' value when + hash table synchronization is disabled. + * class.c (make_class_data): Only push `sync_info' field when hash + table synchronization is disabled. Removed dead code. + +2000-03-16 Tom Tromey + + * lang.c (lang_decode_option): Enable -Wunused when -Wall given. + +2000-03-15 Alexandre Petit-Bianco + + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous + classes. + * parse.y (patch_method_invocation): Handle anonymous classes + creation in static context. + +2000-03-15 Alexandre Petit-Bianco + + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro. + * parse.y (resolve_qualified_expression_name): Use it. + (patch_method_invocation): Likewise. + +2000-03-15 Alexandre Petit-Bianco + + * parse.y (register_incomplete_type): JDEP_ENCLOSING set + depending on the type of dependency which dictates what the + current class is. + (unresolved_type_p): Resolved types limited to the current class. + +2000-03-15 Tom Tromey + + * decl.c (init_decl_processing): Set type of `sync_info' to be + pointer to Object. + + * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'. + Correctly compute bit number for current slot. Zero `high' and + `low' in DS_LENGTH case. Don't skip inherited fields. Use + mark_reference_fields. + (mark_reference_fields): New function. + +2000-03-14 Alexandre Petit-Bianco + + * parse.y (register_incomplete_type): Fixed initialization of + JDEP_ENCLOSING. + +2000-02-28 Alexandre Petit-Bianco + + * parse-scan.y (inner_qualifier, inner_qualifier_length): New + static globals. + (push_class_context, pop_class_context): New function. + (class_body:): Call pop_class_context. + (interface_body:): Likewise. + (INNER_QUALIFIER): New macro. + (report_class_declaration): Changed output format and use + INNER_QUALIFIER. Call push_class_context. + +2000-02-14 Andrew Haley + + * check-init.c (check_init): Add new cases for unary and binary + tree nodes. + +2000-03-13 Alexandre Petit-Bianco + + * parse.y (resolve_package): Set `next' once a type name has been + progressively discovered. + (resolve_qualified_expression_name): Propagate resolution only if + there are remaining qualifiers. Take into account `q' might have + been cleared after re-qualification. + * parse.y (patch_method_invocation): New local `resolved'. + Section dealing with qualified expression rewritten to use + resolve_field_access. + +2000-03-13 Alexandre Petit-Bianco + + * parse.h (PUSH_CPC): Fixed indentation. + (DEBUG_CPC): New macro. + (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT, + SET_CPC_INSTANCE_INITIALIZER_STMT): New macros. + * parse.y (class_body_declaration:): Use + SET_CPC_INSTANCE_INITIALIZER_STMT. + (method_declaration:): Check for null current_function_decl. + (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT. + (java_parser_context_pop_initialized_field): Better handling of + empty lists. + (maybe_make_nested_class_name): Mark nested class name as + qualified when necessary. + (end_class_declaration): Don't call java_parse_context_resume when + one or more error occurred. + (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT. + (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and + SET_CPC_INITIALIZER_STMT. + (method_header): Check for inner classes declaring static methods. + (resolve_qualified_expression_name): Handle situation where `this' + is implied. + +2000-03-13 Hans Boehm + + * typeck.c (build_prim_array_type): Correctly set the high word too. + +2000-03-09 Alexandre Petit-Bianco + + * parse.y (java_complete_expand_methods): Leave out of + ordinary methods. + (maybe_generate_pre_expand_clinit): Put at the end of the + list of methods for interfaces. + +2000-03-07 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Properly handle expressions + using `null'. + +2000-03-07 Alexandre Petit-Bianco + + * parse.y (check_final_assignment): Extended to process + COMPOUND_EXPR. + (patch_assignment): Have check_final_assignment called only once. + +2000-03-07 Alexandre Petit-Bianco + + * java-tree.h (IS_INIT_CHECKED): New flag. + * check-init.c (check_init): Test and set IS_INIT_CHECKED. + * parse.y (patch_string): Call force_evaluation_order on the + completed string concatenation tree. + * expr.c (force_evaluation_order): Call force_evaluation_order on + function's arguments too. + +2000-03-06 Richard Kenner + + * decl.c (emit_init_test_initialization): Mark KEY as unused. + * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT. + (build_anewarray): Likewise. + * parse.y (patch_newarray): Likewise. + * parse.c: Regenerated. + +2000-03-06 Bryce McKinlay + + * decl.c (init_decl_processing): Added new class fields `depth', + `ancestors', and `idt' to class_type_node. Use + _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node. + * class.c (make_class_data): Push initial values for new fields. + * java-tree.h: Updated prototype for `build_invokeinterface'. + * expr.c (build_invokeinterface): Changed parameters to accept + `method' tree. Calculate index of `method' in its declaring + interface. Build call to _Jv_LookupInterfaceMethodIdx. + (expand_invoke): Call `build_invokeinterface' with new parameters. + * parse.y (patch_invoke): Call `build_invokeinterface' with new + parameters. + +2000-03-06 Bryce McKinlay + + * typeck.c (lookup_do): Search superinterfaces first + when looking up an interface method. From Godmar Back + + +2000-03-06 Tom Tromey + + * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c. + +2000-03-02 Alexandre Petit-Bianco + + * java-tree.h (lookup_argument_method2): Declared. + (safe_layout_class): Prototype moved from parse.h. + * parse.h (safe_layout_class): Prototype moved to java-tree.h. + * parse.y (java_check_regular_methods): Local `super_class' gone. + Call lookup_argument_method2 instead of lookup_argument_method. + Perform modifier match for methods found declared in implemented + interfaces. Fixed indentation problem. Overriding/hiding error + report to take place only for methods found in classes. + * typeck.c (lookup_argument_method): Changed leading + comment. Re-written by calling lookup_do. + (lookup_argument_method2): New function. + (lookup_java_method): Re-written by calling lookup_do. + (lookup_do): New function. + +2000-03-02 Alexandre Petit-Bianco + + * check-init.c (check_init): Removed dead code. Handle (blank) + final variables. + * parse.y (declare_local_variables): New local `final_p', set it + and use it to initialize LOCAL_FINAL. + (check_final_assignment): Only check FIELD_DECLs. + +2000-02-17 Tom Tromey + + * Makefile.in (JAVA_OBJS): Added boehm.o. + (boehm.o): New target. + * Make-lang.in (JAVA_SRCS): Added boehm.c. + * java-tree.h (flag_use_boehm_gc): Declare. + (get_boehm_type_descriptor): Declare. + * lang.c (lang_f_options): Added `use-boehm-gc'. + (flag_use_boehm_gc): New global. + * lang-options.h: Added -fuse-boehm-gc. + * boehm.c: New file. + * class.c (get_dispatch_table): If class uses a Boehm type + descriptor, put it in the vtable. + (make_class_data): Removed dead code. + +2000-03-03 Per Bothner + + * decl.c (init_decl_processing): Initialize sizetype properly. + +2000-03-01 Alexandre Petit-Bianco + + * java-tree.h (LOCAL_CLASS_P): New flag usage and macro. + (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros. + * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. + * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise. + (jcf_parse): New local `current'. Load innerclasses seen in outer + context being processed. + * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. + * jcf-write.c (append_innerclasses_attribute): New function. + (append_innerclasses_attribute_entry): Likewise. + (get_access_flags): Handle static classes. Set anonymous and local + classes to be private. + (generate_classfile): Attribute count adjusted. Call + append_innerclasses_attribute. + * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use + PURE_INNER_CLASS_TYPE_P. + * parse.y (parser_qualified_classname): New parameter `is_static', + produce non qualified name accordingly. + (block_statement:): Set LOCAL_CLASS_P when declaring local class. + (create_interface): Added argument to parser_qualified_classname. + (create_class): Added argument to parser_qualified_classname. Setup + alias for top level classes. Use PURE_INNER_CLASS_DECP_P. + (add_inner_class_fields): Fixed indentation. + (method_declarator): Use PURE_INNER_CLASS_DECP_P. + (method_declarator): Fixed typo in comment. + (craft_constructor): Use PURE_INNER_CLASS_DECP_P. + (build_current_thisn): Likewise. + (patch_method_invocation): Likewise. + +2000-03-01 Martin von Löwis + + * decl.c (current_function_decl): Move to toplev.c. + +2000-02-28 Richard Kenner + + * java-tree.h (LABEL_PC): Relect name changes in ../tree.h. + (DECL_BIT_INDEX): Use underlying representation. + * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise. + +2000-02-27 Richard Kenner + + * expr.c (build_java_ret): Pass proper type to size_binop. + +2000-02-25 Anthony Green + + * expr.c (build_class_init): Mark the decl to be ignored by + check_init. + * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c + * check-init.c: Move DECL_BIT_INDEX to java-tree.h + * class.c (init_test_hash_newfunc): New function. + (decl_hash): New function. + (decl_compare): New function. + * decl.c (emit_init_test_initialization): New function. + (complete_start_java_method): Traverse the init test hashtable, + calling emit_init_test_initialization. + (always_initialize_class_p): Define. + * expr.c (build_class_init): Use initialization tests when + emitting class initialization code. + (always_initialize_class_p): Declare. + * jcf-parse.c (parse_class_file): Set always_initialize_class_p to + 1. + * java-tree.h: Include hash.h. + (DECL_FUNCTION_INIT_TEST_TABLE): Define. + (struct lang_decl): Add init_test_table field. + (init_test_hash_entry): Define. + +2000-02-25 Alexandre Petit-Bianco + + * gjavah.c (main): Avoid using `argi' to report unimplemented + options. + +2000-02-25 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR: + initialize locals to avoid warnings. Local `exception_type' moved + into if statement. + +2000-02-25 Alexandre Petit-Bianco + + * parse.y (resolve_expression_name): Use `orig' as a second + argument to resolve_field_access. + (resolve_field_access): Removed unnecessary code when dealing with + static fields. + +2000-02-23 Alexandre Petit-Bianco + + * class.c (push_super_field): Don't push the field twice. + * jcf-parse.c (parse_source_file): Call java_reorder_fields. + * parse.h (java_reorder_fields): Prototyped. + * parse.y (java_reorder_fields): New function. + (java_layout_class): Simplified not to worry about re-ordering. + +2000-02-23 Tom Tromey + + * gjavah.c (print_name): In JNI case, correctly quote string. + (print_method_info): Don't handle overrides in JNI mode. + +2000-02-22 Alexandre Petit-Bianco + + * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned + value type set to `boolean_type_node'. + +2000-01-18 Joerg Brunsmann + + * jcf-dump.c (main): Test for correct condition after + output file creation. + +2000-02-19 Anthony Green + + * jcf-depend.c (add_entry): Fix test for first list entry. + +2000-02-19 Richard Kenner + + * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT. + * constants.c (build_constants_constructor): Likewise. + +2000-02-19 Anthony Green + + * jcf-depend.c (add_entry): Add entries to the end of the list. + +1999-11-03 Pekka Nikander + + * decl.c (INT_TYPE_SIZE): Define if necessary. + (expand_java_return): Handle the case of a native integer smaller + than a JVM integer. + +2000-02-18 Martin von Löwis + + * gjavah.c (help): Use GCCBUGURL. + * jv-scan.c (help): Likewise. + * jcf-dump.c (help): Likewise. + +2000-02-17 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): Don't generate empty + `finally' clauses. + +2000-02-17 Alexandre Petit-Bianco + + * jcf-parse.c (load_class): Call `fatal' if no file containing + the target class are found. + +2000-02-16 Zack Weinberg + + * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on + lex.c, lex.h, and PARSE_H to... + (parse.o, parse-scan.o): ...here, respectively. + + * lex.c: Split out code that may trigger SIGFPE from yylex() + to its own function. + * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value. + +2000-02-16 Kaveh R. Ghazi + + * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h. + +2000-02-15 Alexandre Petit-Bianco + + * parse.y (outer_field_access_p): Stop in time when outer contexts + are exhausted. + (resolve_qualified_expression_name): Properly qualify *everything* + after a package.type to be resoled as expression names. + (find_applicable_accessible_methods_list): Save/restore `class' to + isolate it from a possible outer context search. + +2000-02-15 Tom Tromey + + * gjavah.c (jni_print_char): New function. + (print_full_cxx_name): Use it. + (decode_signature_piece): Likewise. + (print_cxx_classname): Likewise. + +2000-02-15 Kaveh R. Ghazi + + * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with + version.o. + (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h. + + * gjavah.c: Include version.h. + + * jcf-dump.c: Likewise. + + * jv-scan.c: Likewise. + +2000-02-12 Alexandre Petit-Bianco + + * parse.y (outer_field_access_fix): First parameter now a tree + node. Check for assignment to final. First argument to + build_outer_field_access_fix modified to accommodate prototype. + (build_outer_field_access): Don't check for assignment to final + here. + (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node' + possibly returned by outer_field_access_fix. Changed + outer_field_access_fix's first argument. + (check_final_assignment): $finit$'s context is OK. + (patch_unaryop): Use node instead of its line/column value when + calling outer_field_access_fix. + +2000-02-11 Alexandre Petit-Bianco + + * parse.y (interface_declaration:): No longer tagged + . Re-installed default action. + (class_member_declaration:): Handle inner interfaces. + (interface_member_declaration): Handle inner interfaces and + classes. + (create_interface): Push error if one seen. Suspend parsing + context when processing an inner interface. + (register_fields): Inner class static field limitations not to + apply to inner interfaces. + +2000-02-10 Alexandre Petit-Bianco + + * jcf-parse.c (load_class): Update `java_error_count' when a + class' file can't be found. + (parse.y): Avoid (byte)code generation when errors seen. + +2000-02-10 Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal' + decodes a valid node. + (patch_binop): Handle TRUNC_DIV_EXPR. + +2000-02-10 Alexandre Petit-Bianco + + * parse.y (resolve_package): New local `acc'. Try to progressively + build and guess a package and type name. + +2000-02-10 Alexandre Petit-Bianco + + * parse.y (find_applicable_accessible_methods_list): Load and + layout the search class if necessary. + (java_complete_tree): Keep to original type of the folded initial + value. + +2000-02-09 Alexandre Petit-Bianco + + * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT. + Generate error message if circularity is detected. New static + local `list'. + * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro. * + * jcf-write.c (generate_bytecode_insns): Very simply handle + SAVE_EXPR. + * parse.y (java_check_circular_reference): Use + `cyclic_inheritance_report' during report, if necessary. + (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid + walking NEW_ARRAY_INIT twice. + +2000-02-09 Tom Tromey + + * parse.y (check_class_interface_creation): Allow inner classes to + be `private' or `protected', check modifiers' consistency. Prevent + block local classes from bearing any modifiers. + +2000-02-10 Kaveh R. Ghazi + + * except.c (check_start_handlers): Re-add prototype lost in last + patch. + (maybe_start_try): Remove excess argument to `check_start_handlers'. + +2000-02-09 Andrew Haley + + * decl.c (clear_binding_level): Remove excess initializer. + (maybe_poplevels): Remove unused variable. + (force_poplevels): Ditto. + (struct binding_level): Add comment. + +2000-02-07 Alexandre Petit-Bianco + + * jcf-write.c (generate_classfile): Don't consider + pre-initialization with reference value (use instead.) + * parse.y (java_fix_constructors): No generated constructor for + interfaces. + (build_outer_field_access): Removed debug message. + (outer_field_expanded_access_p): Adapted to bytecode generation. + (build_outer_field_access_method): Use fix_method_argument_names. + (build_outer_method_access_method): Fixed indentation. Added + comment. Handle access method generation for static and also void + methods. + (build_access_to_thisn): Inserted debug message. + (maybe_build_thisn_access_method): Use fix_method_argument_names. + (resolve_qualified_expression_name): Fixed comment. + (not_accessible_p): Adapted to bytecode generation. Added comment. + (patch_method_invocation): Added comment. + (maybe_use_access_method): Fixed leading comment. Handle static + methods. + (java_complete_lhs): Don't shortcut handling of initialized upon + declaration String type static fields when generating bytecode. + (patch_unaryop): Handle outer field access when generating + bytecode. + +2000-02-03 Alexandre Petit-Bianco + + * java-tree.h (FIELD_THISN): New macro. + * jcf-write.c (append_synthetic_attribute): New function. + (generate_classfile): Set "Synthetic" attribute on this$, + val$ fields, access$ and $finit$ methods. Fixed indentation. + * parse.y (add_inner_class_fields): Set FIELD_THISN for created + this$ fields. + (build_outer_field_access): Turned on access functions usage and + generation when compiling to bytecode. + (maybe_use_access_method): Likewise. + +2000-01-25 Andrew Haley + + * java-except.h (struct eh_range): Add `expanded' field. + (maybe_start_try): Add end_pc arg. + (maybe_end_try): Ditto. + * java-tree.h (force_poplevels): new function. + * expr.c (expand_byte_code): Don't call maybe_start_try or + maybe_end_try. + * except.c (add_handler): Reset expanded. + (expand_start_java_handler): Set expanded. + (check_start_handlers): Don't expand a start handler that's + already been expanded. + (maybe_start_try): Add end_pc arg. Only expand a handler which + ends after end_pc. + (expand_end_java_handler): call force_poplevels. + (force_poplevels): new function. + * decl.c (binding_level): Add start_pc of binding level. + (maybe_pushlevels): Call maybe_start_try when pushing binding + levels. + (maybe_poplevels): Call maybe_end_try when popping binding levels. + (LARGEST_PC): Define. + (clear_binding_level): Use LARGEST_PC. + + * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define. + * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define. + (binding_depth, is_class_level, current_pc): new variables. + (struct binding_level): ditto. + (indent): new function. + (push_jvm_slot): add debugging info. + (maybe_pushlevels): ditto. + (maybe_poplevels): ditto. + (pushlevel): ditto. + (poplevel): ditto. + (start_java_method): ditto. + (give_name_to_locals): comment only. + * except.c (binding_depth, is_class_level, current_pc): + new variables. + (expand_start_java_handler): add debugging info. + (expand_end_java_handler): ditto. + +2000-02-05 Kaveh R. Ghazi + + * gjavah.c (overloaded_jni_method_exists_p): Add prototype. + (print_name_for_stub_or_jni, process_file): Constify a char*. + +2000-02-03 Tom Tromey + + * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input. + +2000-01-31 Scott Bambrough + + * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to + assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is + defined to be 1. + +2000-02-02 Alexandre Petit-Bianco + + * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code. + * java-tree.h (TYPE_II_STMT_LIST): New macro. + (struct lang_type): New field `ii_block'. + * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST, + CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST. + * parse.h (struct parser_ctxt): New field `instance_initializers'. + (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST, + CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT, + CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New + macros. + * parse.y (add_instance_initializer): New function. + (in_instance_initializer): New static global. + (class_body_declaration:): Link instance initializer block. + (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT. + (array_creation_expression:): Remove unused local. + (java_parser_context_push_initialized_field): Fixed leading + comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and + CPC_INSTANCE_INITIALIZER_LIST. + (java_parser_context_pop_initialized_field): Likewise. + (add_inner_class_fields): Use CPC_INITIALIZER_STMT. + (register_fields): Use CPC_STATIC_INITIALIZER_STMT and + CPC_INITIALIZER_STMT. + (fix_constructors): New local `class_type'. Use it. Call + add_instance_initializer. + (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR. + (patch_return): Forbid return in instance initializers. + (patch_throw_statement): Enforce exception handling in the context + of instance initializers. + +2000-02-03 Tom Tromey + + * Make-lang.in (java.mostlyclean): Remove executables in + `mostlyclean'. + +2000-01-31 Scott Bambrough + + * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when + HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1. + (java_float_finite): Convert to use union Word from javaop.h. + (java_double_finite): Convert to use union DWord from javaop.h. + +2000-02-02 Tom Tromey + + * gjavah.c (options): Added `jni' entry. + (help): Document -jni. + (flag_jni): New global. + (process_file): Handle JNI output. Don't print text from + -prepend, -add, etc, when generating stubs. Only remove `.class' + suffix if it actually exists. + (main): Create a `.c' file when run with `--jni --stubs'. Create + correct output file name with `--jni'. + (print_include): Mangle header name differently in JNI case. + (HANDLE_METHOD): In JNI mode, call print_method_info to generate + method list. + (print_method_info): Handle JNI case. Put signature info into + method name. Handle case when STREAM is NULL. + (print_name_for_stub_or_jni): New function. + (print_stub_or_jni): Renamed from `print_stub'. Handle JNI. + (print_cxx_classname): Handle JNI. + (print_full_cxx_name): Likewise. + (decode_signature_piece): Likewise. + (overloaded_jni_method_exists_p): New function. + (struct method_name): Added `signature' and `sig_length' fields. + (HANDLE_END_FIELD): Do nothing in JNI mode. + +2000-02-02 Tom Tromey + + * jv-scan.c: Include version.c, . + (LONG_OPT, OPT_HELP, OPT_VERSION): New macros. + (options): New array. + (usage): New function. + (version): New function. + (main): Use getopt_long to parse command line. + * jcf-dump.c: Include version.c, . + (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION, + OPT_JAVAP): New macros. + (options): New array. + (usage): Return `void'. Changed message. + (help): New function. + (version): New function. + (main): Use getopt_long_only to parse command line. + * gjavah.c: Include . + (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP, + OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M, + OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros. + (options): New array. + (java_no_argument): Removed. + (help): Updated with missing options. + (main): Use getopt_long_only to parse command line. + (usage): Changed message. + +2000-02-01 Alexandre Petit-Bianco + + * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code. + * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG, + ANONYMOUS_ARRAY_INITIALIZER): New access macros. + * parse.y (array_creation_expression:): Handle anonymous arrays. + (build_array_from_name): Don't set `ret_name' if null. + (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR. + (qualify_ambiguous_name): Likewise. + (java_complete_expand_class): Likewise. + +2000-02-01 Alexandre Petit-Bianco + + * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo. + * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro. + (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise. + (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P. + (AIPL_FUNCTION_FINIT_INVOCATION): Replaces + AIPL_FUNCTION_COMPLETED_INVOCATION. + (AIPL_FUNCTION_CTOR_INVOCATION): Replaces + AIPL_FUNCTION_INVOCATION_READY. + (AIPL_FUNCTION_DECLARATION): New enum entry. + * parse.y (reorder_static_initialized): New function. + (java_parser_context_pop_initialized_field): Use it. + (add_inner_class_fields): Use + MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment + augmented. Install marker after last alias initializer, if any. + (generate_finit): Fixed typo. Don't try to retain only the used + fields. + (method_header): Compute and set DECL_FUNCTION_NAP. + (method_declarator): Fixed comment. Insert alias initializer in + parameter list. + (build_alias_initializer_parameter_list): Fixed leading + comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value + replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. + (java_complete_expand_class): Code to retain only used aliases + removed. + (java_complete_expand_methods): New local `first_decl'. Generate + $finit$ first, then expand the constructors, regular methods and + . + (java_complete_expand_method): Don't report error on missing + return statement if previously detected bogus. + (fix_constructors): Don't patch constructor parameters list. + (patch_method_invocation): Use new AIPL enum values. Reverse + alias initializer list for anonymous classes. + +2000-01-30 Anthony Green + + * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to + determine how many stack slots to pop. + +2000-01-29 Alexandre Petit-Bianco + + * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better + error handling/recovery. + * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment. + +2000-01-28 Alexandre Petit-Bianco + + * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS, + FIELD_LOCAL_ALIAS_USED): New macros. + (DECL_FUNCTION_NAP): New macro. + (struct lang_decl): New field `nap'. + (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros. + (struct lang_type): New fields `finit_stmt_list' and + `clinit_stmt_list'. + (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST. + * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro. + (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS, + UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros. + (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION, + AIPL_FUNCTION_INVOCATION_READY): New enum fields. + (BUILD_THROW): Macro line separator re-indented. + * parse.y (end_class_declaration): New function. + (maybe_generate_pre_expand_clinit): New name for + java_pre_expand_clinit. Create off TYPE_CLINIT_STMT_LIST, + pre-expand static fields. + (maybe_generate_clinit): Function deleted. + (check_for_static_method_reference): Prototype's parameter list + indented. + (generate_finit): New name for maybe_generate_finit. Changed + leading comment. Function rewritten to use + TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list. + (build_alias_initializer_parameter_list): New function. + (java_parser_context_pop_initialized_field): Likewise. + (add_inner_class_fields): Likewise. + (type_declaration:): Call end_class_declaration. + (class_member_declaration:): Likewise. + (formal_parameter_list:): Fixed typos. + (formal_parameter:): Use ARG_FINAL_P to mark created tree list + element. Improved error handling. + (block_statement:): Call end_class_declaration. + (anonymous_class_creation:): Likewise. + (create_anonymous_class): Fixed comments. + (create_class): Call add_inner_class_fields. + (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P. + (method_header): Use MARK_FINAL_PARMS. + (finish_method_declaration): Use UNMARK_FINAL_PARMS. + (method_declarator): Propagate final argument flag. + (craft_constructor): New local `artificial'. Call + build_alias_initializer_parameter_list. Use + CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP. + (source_start_java_method): Mark parm decls with LOCAL_FINAL if + necessary. + (complete_expand_class): Get rid of unused outer context local + alias fields. + (java_complete_expand_methods): Fixed leading + comment. Generate/pre-expand first. Changed method + expansion order to regular, $finit$, constructors, . + (java_complete_expand_method): Set current_function_decl. + (fix_constructors): Fix constructor parameter list to account for + outer context local alias initializers. + (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS. + (resolve_expression_name): Lookup outer context local aliases. New + local `access', use it. + (patch_method_invocation): Patch inner class ctor invocation with + outer context local aliases initialization values. $finit$ + invocation patching now includes things generated with + build_alias_initializer_parameter_list. + (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS. + (build_super_invocation): Likewise. + (patch_assignment): Changed comment. + +2000-01-27 Andrew Haley + + * jcf-write.c (emit_goto): RESERVE 3 bytes for insn. + (emit_if): Ditto. + (emit_jsr): Ditto. + +2000-01-25 Kaveh R. Ghazi + + * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string + concatenation. + (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args. + + * parse.y (register_fields): Don't pass a format specifier to + OBSOLETE_MODIFIER_WARNING. + (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2 + instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format + specifier. + (check_modifiers): Change function into a macro. + (check_class_interface_creation): Pass a literal format string. + +2000-01-21 Kaveh R. Ghazi + + * buffer.h: PROTO -> PARAMS. + * check-init.c: Likewise. + * class.c: Likewise. + * constants.c: Likewise. + * convert.h: Likewise. + * decl.c: Likewise. + * except.c: Likewise. + * expr.c: Likewise. + * gjavah.c: Likewise. + * java-except.h: Likewise. + * java-tree.h: Likewise. + * jcf-depend.c: Likewise. + * jcf-dump.c: Likewise. + * jcf-parse.c: Likewise. + * jcf-path.c: Likewise. + * jcf-reader.c: Likewise. + * jcf-write.c: Likewise. + * jcf.h: Likewise. + * jv-scan.c: Likewise. + * jvgenmain.c: Likewise. + * jvspec.c: Likewise. + * lang.c: Likewise. + * lex.c: Likewise. + * lex.h: Likewise. + * parse-scan.y: Likewise. + * parse.h: Likewise. + * parse.y: Likewise. + * typeck.c: Likewise. + * verify.c: Likewise. + * xref.c: Likewise. + * xref.h: Likewise. + * zextract.c: Likewise. + * zipfile.h: Likewise. + +2000-01-18 Alexandre Petit-Bianco + + * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC. + (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF. + * constants.c (build_constant_data_ref): Check for cached + current_constant_pool_data_ref. Cache current_constant_pool_data_ref + in TYPE_CPOOL_DATE_REF. + * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF, + MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros. + (struct lang_type): New fields `cpool' and `cpool_data_ref'. + (LOCAL_FINAL): New macro. + * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing + constant pool -- don't try to reuse. + (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate + TYPE_LANG_SPECIFIC. + (find_in_current_zip): Use TYPE_JCF. + * parse.h (java_check_final): Prototype removed. + * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch. + (maybe_create_class_interface_decl, + check_class_interface_creation): Likewise. + (java_expand_finals): Function removed. + (class_declaration:): Reversed Jan 12, 2000 extra argument patch. + (block_statement:): Fixed comment. + (anonymous_class_creation:): Likewise. + (check_class_interface_creation): Reversed Jan 12, 2000 extra + argument patch. + (check_class_interface_creation): Loosened error report on (inner) + public class declarations. CPC_INNER_P replaces GET_CPC_LIST. + (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch. + (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra + argument patch. + (create_interface): Likewise. + (anonymous_class_counter): New static global. + (create_anonymous_class): Reversed Jan 12, 2000 extra argument + patch. Fixed comments. + (create_class): Reversed Jan 12, 2000 extra argument patch. Reset + anonymous_class_counter when declaring a toplevel class. + (craft_constructor): Fixed constructor name when handling + anonymous classes. Anonymous class constructors to feature hidden + this$ parameter. + (java_fix_constructors): Added comment. + (java_check_final): Function removed. + (java_complete_expand_methods): Fixed comment. Don't generate + class data, save its outgoing constant pool instead. + (verify_constructor_super): Skip anonymous class constructor + hidden this$ parameter. + (java_expand_classes): New local `saved_ctxp'. Removed call to + java_expand_finals and java_check_final. Expand anonymous class + constructors. Generate class data. + (build_super_invocation): Skip anonymous class hidden this$ + parameter. + * typeck.c (build_java_signature): Use TYPE_SIGNATURE and + MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC. + (set_java_signature): Likewise. + +2000-01-18 Joerg Brunsmann + + * gjavah.c: Delete ACC_VISIBILITY define. + * jcf.h: Add ACC_VISIBILITY define. + * parse.y: final: rule tagged . + (java_check_regular_methods): Use ACC_VISIBILITY define for + default package access check. + (local_variable_declaration_statement): Use final: rule. + +2000-01-17 Joerg Brunsmann + + * parse.y (format_parameter:): Use final: rule instead of modifiers:. + (final:): New rule. + +2000-01-17 Tom Tromey + + * gjavah.c (print_field_info): Allow non-static final fields. + +2000-01-14 Alexandre Petit-Bianco + + * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'. + * parse.y (patch_anonymous_class): New function. + (create_anonymous_class): Register incomplete type when the + class/interface to extends/implement isn't known yet. + (parser_check_super_interface): Simplify argument to CLASS_INTERFACE. + (verify_constructor_super): Tuned error message. + +2000-01-14 Alexandre Petit-Bianco + + * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P. + (ANONYMOUS_CLASS_P): New macro. + (TYPE_SIGNATURE, TYPE_JCF): New macros. + (INNER_CLASS_TYPE_P): Fixed typo in leading comment. + * parse.y (create_class): Added leading argument. + (maybe_create_class_interface_decl, + check_class_interface_creation): Likewise. + (craft_constructor): New function. + (verify_constructor_super): Added argument in prototype. + (class_declaration:): Inserted leading argument. + (for_begin:): Use FOR_LOOP_P. + (anonymous_class_creation): Create WFL of the anonymous class to + instantiate. Call build_new_invocation. Added comments. + (check_class_interface_creation): Handle parameter `anonymous' in + verbose mode class creation announce. + (link_nested_class_to_enclosing): Exclude anonymous classes. + (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on + anonymous class, even though they appear to have an enclosing + context. + (create_interface): Pass extra argument to + check_class_interface_creation. + (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1. + (create_class): Call check_class_interface_creation and + maybe_create_class_interface_decl with extra new argument. Don't + add private this$ to anonymous classes. + (method_declarator): Insert hidden this$ to anonymous class + constructors. + (java_fix_constructors): Deleted code creating default + constructor. Call craft_constructor instead. + (java_check_regular_methods): Set `saw_constructor' to 1 for + anonymous classes. + (fix_constructors): Pass extra argument to verify_constructor_super. + (verify_constructor_super): New local `sdecl', use it. Search for + matching constructor (possibly featuring arguments) in super + class. + (lookup_method_invoke): Craft constructor according to arguments + list when dealing with anonymous class constructors. + (build_super_invocation): Pass arguments to anonymous class super + constructors. + (search_loop): Use FOR_LOOP_P. + (labeled_block_contains_loop_p): Likewise. + +2000-01-12 Alexandre Petit-Bianco + + * class.c (set_super_info): Set CLASS_STATIC when appropriate. + (enclosing_context_p): New function. + (get_access_flags_from_decl): Handle CLASS_STATIC. + (maybe_layout_super_class): Extra first argument passed to + do_resolve_class. + (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and + ID_INIT_P. + * decl.c (access0_identifier_node): New global. + (init_decl_processing): access0_identifier_node initialized. + (pushdecl): Set DECL_CONTEXT only on non type decls. + * expr.c (lookup_field): Lookup inner class fields in enclosing + contexts. + (expand_invoke): Use ID_INIT_P. + (expand_java_field_op): Use DECL_CLINIT_P. + * java-tree.def (CLASS_LITERAL): New tree code. + * java-tree.h (DECL_FUNCTION_ACCESS_DECL, + DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros. + (struct lang_decl): New field `inner_access'. + (enclosing_context_p): Prototyped. + (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P, + ID_CLINIT_P): New macros. + (CLASS_STATIC): New macro. + (CLASS_ACCESS0_GENERATED_P): New macro. + (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P, + TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P, + INNER_CLASS_P): New macros. + (DECL_INNER_CLASS_LIST): New macro. + * jcf-parse.c (yyparse): Avoid the use of ANSI string + concatenation. + * jcf-write.c (generate_bytecode_insns): binop: Change the type of + the shift value to int. Fixed typo in comment. + * lex.c (inst_id, wpv_id): Initialize. + * mangle.c (unicode_mangling_length): Take `$' into account. + * parse.h (DRECOVER, RECOVER): Terminate properly. + (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro. + (typedef struct _jdep): New field `enclosing'. + (JDEP_ENCLOSING): New macro. + (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.) + (struct parser_ctxt): New fields `marker_beginning', `marked_end'. + (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE, + GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC, + GET_ENCLOSING_CPC_CONTEXT): New macros. + (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros. + (do_resolve_class): Added extra argument in prototype. + * parse.y (resolve_class): Added extra argument in prototype. + (maybe_create_class_interface_decl): Likewise. + (maybe_use_access_method, build_wfl_wrap): New functions. + (java_complete_expand_classes, java_complete_expand_class): + Likewise. + (java_parser_context_push_initialized_field, + java_parser_context_suspend, java_parser_context_resume): + Likewise. + (maybe_make_nested_class_name, make_nested_class_name, + set_nested_class_simple_name_value, + link_nested_class_to_enclosing, find_as_inner_class, + find_as_inner_class_do, check_inner_class_redefinition, + build_thisn_assign, build_current_thisn, build_access_to_thisn, + maybe_build_thisn_access_method, build_outer_field_access, + build_outer_field_access_methods, build_outer_field_access_expr, + build_outer_method_access_method, build_new_access_id, + build_outer_field_access_method, outer_field_access_p, + outer_field_expanded_access_p, outer_field_access_fix, + build_incomplete_class_ref, patch_incomplete_class_ref, + create_anonymous_class): Likewise. + (inst_id, wpv_id): New static global variables. + (synchronized:): New rule, tagged . + (type_declaration:): No longer tagged . Call POP_CPC in sub + rules. + (anonymous_class_creation:): New rule, tagged . + (NEW_TK): Tagged . + (type_literals, array_type_literal): New rules, tagged . + (class_declaration:): Removed action when reducing by class_body: + (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value + using GET_CPC in sub-rules. + (class_member_declaration): Handle inner classes. + (method_declaration): When reducing method_header:, reset + current_function_decl when appropriate. + (method_declarator:): Set the number of formal parameter to 0 for + method declared without arguments. + (constructor_declarator:): Likewise. + (static_initializer:): List of elements kept in a list. + (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct + use of the keyword `static' for type declarations. + (block_statement:): Handle inner class declarations. + (primary_no_new_array:): Use type_literals:. Fixed comment. Handle + type qualified `this'. + (class_instance_creation_expression): Use anonymous_class_creation: + to handle inner class instances creation. Handle qualified `new'. + (something_dot_new): Added appropriate actions. + (create_new_parser_context): New function. + (java_push_parser_context, java_parser_context_save_global, + java_parser_context_suspend): Use create_new_parser_context. + (check_modifiers): Changed leading comment. + (check_class_interface_creation): Handle interclasses. + (add_superinterfaces): Fixed comment. + (create_interface): Build qualified name from the raw_name instead + of its matching WFL. Push the initialized fields list. raw_name added + as an extra argument to maybe_create_class_interface_decl. + (create_class): Build qualified name from the raw_name instead of + its matching WFL. Removed assignment to current_parsed_class_un. + Call PUSH_ERROR before returning an error. Suspend the current + parser context when processing an inner class. Push the + initialized fields list. raw_name added as an extra argument to + maybe_create_class_interface_decl. Add the private this$ + field. + (duplicate_declaration_error_p): Use GET_CPC when calling find_field. + (register_fields): Get the class type from GET_CPC and handle + previous errors. Added code to handle the creation of static + fields in inner classes. Initialized fields initialization + statements kept in a list of lists. + (maybe_generate_finit): Initialized fields initialization + statements kept in a list of lists. Use GET_CPC. + (maybe_generate_clinit): Likewise. + (method_header): Use GET_CPC and GET_CPC_UN. + (parser_qualified_classname): Handle inner classes. + (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC. + (java_fix_constructors): Hide pointer to enclosing context + instance in constructor list when dealing with inner classes. + (jdep_resolve_class): Call resolve_class with extra first argument + JDEP_ENCLOSING. + (resolve_class): Add enclosing context as a first extra argument + to do_resolve_class. + (do_resolve_class): Call find_as_inner_class. Handle WFLs + properly. + (resolve_no_layout): Extra argument added to resolve_class + invocation. + (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P. + (java_get_real_method_name): Use GET_CPC_UN. + (check_abstract_method_definitions): Use DECL_CLINIT_P. + (java_check_abstract_methods): Handle static method declared in + inner classes by an error. + (java_check_regular_methods): Use DECL_CLINIT_P. + (source_start_java_method): Also set DECL_MAX_LOCALS. + (create_artificial_method): Call java_parser_context_save_global + and java_parser_context_restore_global instead of saving/restoring + the context by hand. + (expand_start_java_method): Improved verbose mode message. + (java_complete_expand_methods): Fixed leading comment. Use + DECL_CLINIT_P. + (fix_constructors): Added assignment to this$ if necessary. + (java_expand_classes): Call java_complete_expand_classes instead + of java_complete_expand_methods. + (make_qualified_primary): Simplified. + (merge_qualified_name): Optimized for missing left or right parts. + (resolve_expression_name): Handle access to outer class fields from + interclasses. + (resolve_qualified_expression_name): New macro + RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner + classes. Report error on non appropriate qualification of + `new'. Handle qualified `this'. + (not_accessible_p): Allow access to outer class private fields from + inner classes. + (patch_method_invocation): Handle method invocations through + access methods and inner class constructor invocations. + (find_applicable_accessible_methods_list): Search enclosing + contexts of an inner class. + (search_applicable_methods_list): Fixed typo. + (argument_types_convertible): Handle inner class constructors' + hidden outer context reference argument. + (qualify_ambiguous_name): Handle qualified `this'. + (java_complete_lhs): Handle use of field accessed through + artificial access methods in various cases of assignments. Handle + CLASS_LITERAL node. + (check_final_assignment): Use DECL_CLINIT_P. + (valid_ref_assignconv_cast_p): Handle the destination being an + enclosing context of the source. + (patch_unaryop): Handle use of field accessed through artificial + access methods. + (patch_return): Use DECL_CLINIT_P. + (patch_throw_statement): Use DECL_CLINIT_P. + (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P. + * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and + ID_INIT_P. + +2000-01-16 Anthony Green + + * parse.y (build_string_concatenation): Only use + StringBuffer(String) shortcut if String arg is constant. + +2000-01-12 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): binop: Change the type of + the shift value to int. Fixed typo in comment. + +2000-01-11 Mumit Khan + + * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros. + * jcf-write.c: Likewise. + * parse.y: Likewise. + * parse.c: Regenerate. + +2000-01-09 Anthony Green + + * jcf-write.c (generate_bytecode_insns): Emit invokeinterface + bytecodes in the correct order. + +2000-01-09 Kaveh R. Ghazi + + * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS). + +2000-01-06 Anthony Green + + * expr.c (java_lang_expand_expr): Switch to permanent obstack + before building constant array decl. + +2000-01-06 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_conditional): Fixed indentation in + method invocation and typo in conditional expression. + (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue + the appropriate NOTE_POP. + * parse.y (patch_binop): Shift value mask to feature the right + type. + +1999-12-30 Kaveh R. Ghazi + + * class.c (assume_compiled, assume_compiled_node): Add static + prototype. + (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup. + + * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch. + + * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN. + + * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier' + to `__modifier' to avoid stringifying it. + + * parse.y (verify_constructor_circularity): Don't call a variadic + function with a non-literal format string. + (java_check_abstract_methods): Move unreachable code inside + `continue' statement. + (lookup_method_invoke): Call xstrdup, not strdup. + + * expr.c (expand_java_field_op): Avoid the use of ANSI string + concatenation. + + * jcf-parse.c (yyparse): Likewise. + + * jv-scan.c (main): Likewise. + +1999-12-30 Kaveh R. Ghazi + + * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, + ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, + ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string + concatenation. + + * parse.y (synchronized, variable_redefinition_error, + check_class_interface_creation, create_interface, create_class, + method_header, finish_method_declaration, + check_modifiers_consistency, method_declarator, + complete_class_report_errors, check_abstract_method_definitions, + java_check_regular_methods, check_throws_clauses, + java_check_abstract_methods, read_import_dir, + check_pkg_class_access, declare_local_variables, fix_constructors, + cut_identifier_in_qualified, resolve_expression_name, + resolve_qualified_expression_name, patch_method_invocation, + java_complete_lhs, patch_assignment, try_builtin_assignconv, + patch_binop, patch_array_ref, patch_newarray, build_labeled_block, + patch_exit_expr, patch_exit_expr, patch_switch_statement, + patch_try_statement, patch_synchronized_statement, + patch_throw_statement, check_thrown_exceptions, + patch_conditional_expr): Likewise. + +1999-12-24 Alexandre Petit-Bianco + + * Makefile.in (LIBDEPS): Added gcc's errors.o + (../jcf-dump$(exeext):): Link with gcc's errors.o + (../gcjh$(exeext):): Likewise. + * expr.c (expand_java_NEW): Layout the entire target type instead of + laying out its methods only. + (lookup_field): Layout the class after having loaded it. + * java-tree.h (java_debug_context): Declared. + * jcf-io.c (toplev.h): Included. + (find_class): Removed assignment to jcf's outofsynch + field. Force source file to be read if newer than its matching + class file. Tweaked debug messages. + * jcf-parse.c (jcf_out_of_synch): Deleted. + (read_class): Call to jcf_out_of_synch removed. + * jcf.h (typedef struct JCF): Field `outofsynch' deleted. + (jcf_out_of_synch): Prototype deleted. + * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag', + `deprecated' and `class_err': integer turned into bit-fields. + New bit-fields `saved_data_ctx' and `saved_data'. Fixed comments. + * parse.y (package_list): New global. + (package_declaration:): Record newly parsed package name. + (extra_ctxp_pushed_p): Static global deleted. + (java_parser_context_save_global): Create buffer context for the + purpose of saving globals, if necessary. + (java_parser_context_restore_global): Pop context pushed for the + purpose of saving globals, if necessary. + (java_debug_context_do): New prototype and function. + (java_debug_context): Likewise. + (do_resolve_class): Use already parsed package names to qualify + and lookup class candidate. + (java_pre_expand_clinit): Removed unnecessary local variable. + +1999-12-17 Tom Tromey + + * gjavah.c (decode_signature_piece): Print "::" in JArray<>. This + fixes PR gcj/119. + (process_file): Use `\n\' at end of each line in string. + +1999-12-16 Alexandre Petit-Bianco + + * expr.c (expand_invoke): Layout the loaded class before + attempting to use it. + (expand_java_field_op): Allow final field assignments to take + place in $finit$. + * typeck.c (convert): Return error_mark_node if expr is null. + +1999-12-14 Alexandre Petit-Bianco + + * class.c (class_depth): Return -1 if the class doesn't load + properly. + * expr.c (can_widen_reference_to): Check for errors during depth + computation and return 0 accordingly. + * jcf-parse.c (parse_source_file): Call java_fix_constructors to + create default constructors and add an other error check. + * parse.h (java_fix_constructors): Prototyped. + * parse.y (java_pre_expand_clinit): Likewise. + (build_super_invocation): Re-prototyped to feature one argument. + (java_check_circular_reference): Directly use `current'. + (java_fix_constructors): New function. + (java_check_regular_methods): Don't create default constructors + here, but abort if none were found. + (java_complete_expand_methods): Pre-process calling + java_pre_expand_clinit. + (java_pre_expand_clinit): New function. + (fix_constructors): build_super_invocation invoked with the + current method declaration as an argument. + (build_super_invocation): Use the context of the processed method + decl argument instead of current_class. + * typeck.c (lookup_java_method): Take WFLs in method names into + account. + +1999-12-14 Per Bothner + + * class.c (make_class_data): flag_keep_inline_functions to keep + private methods in the method array. + +1999-12-15 Anthony Green + + * check-init.c (check_init): Take into account both types of + `throw's when checking for uninitialized variables. + +1999-12-10 Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): Force conversion of array + dimensions to int_type_node, that's what runtime's ABI expects. + +1999-12-10 Alexandre Petit-Bianco + + * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third + operand of a WFL, until the Java front-end gets fixed with regard + to Mark Mitchell's gcc/tree.h patch (1999-12-04.) + +1999-12-10 Andrew Haley + + * parse.h (BUILD_THROW): Add support for sjlj-exceptions. + decl.c (init_decl_processing): Add _Jv_Sjlj_Throw. + expr.c (build_java_athrow): Add support for sjlj-exceptions. + java-tree.h: Ditto. + jcf-write.c: Ditto. + +1999-12-08 Alexandre Petit-Bianco + + * expr.c (java_lang_expand_expr): Switch to permanent obstack + before calling expand_eh_region_start and expand_start_all_catch. + * except.c (expand_start_java_handler): Switch to permanent + obstack before calling expand_eh_region_start. + (expand_end_java_handler): Switch to permanent obstack before + calling expand_start_all_catch. + +1999-12-5 Anthony Green + + * decl.c (init_decl_processing): Mark throw_node as a noreturn + function with side effects. + (init_decl_processing): Mark all memory allocating DECLs with + DECL_IS_MALLOC. + +1999-12-01 Alexandre Petit-Bianco + + * except.c (expand_end_java_handler): Call + expand_resume_after_catch and end_catch_handler. + +1999-11-30 Anthony Green + + * verify.c (verify_jvm_instructions): Create new return label + chain if non existent (don't rely on the verified state of the jsr + target.) + +1999-11-30 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): Fixed indentation for + COMPOUND_EXPR and FIX_TRUNC_EXPR cases. + + * parse.y (patch_assignment): Removed bogus final class test on + lhs when checking on whether to emit an ArrayStoreException runtime + check. + * expr.c (expand_java_arraystore): Likewise. + +1999-11-28 Anthony Green + + * decl.c (find_local_variable): Reuse single slot decls when + appropriate. + +1999-11-24 Alexandre Petit-Bianco + + * jcf-parse.c (saw_java_source): Global variable removed. + (read_class): Don't use `saw_java_source'. Added extra braces. + (yyparse): Code setting `saw_java_source' removed. + +1999-11-24 Mark Mitchell + + * except.c (emit_handlers): Zero catch_clauses after emitting them. + +1999-11-23 Alexandre Petit-Bianco + + * verify.c (merge_type_state): Non verified subroutines being + considered more than once to trigger passive type merge. + +1999-11-23 Alexandre Petit-Bianco + + * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE + in case of error. Error message tuned. + +1999-11-21 Anthony Green + + * constants.c (find_methodref_index): Unwrap method names before + inserting them in the constant pool. + + * jcf-parse.c (jcf_parse): Display `interface' when appropriate. + + * class.c (assume_compiled_node): New typedef. + (assume_compiled_tree): New static data. + (find_assume_compiled_node): New function. + (add_assume_compiled): New function. + (assume_compiled): New function. + * class.c (make_class_data): Use assume_compiled. + (is_compiled_class): Use assume_compiled. + + * java-tree.h (add_assume_compiled): Declare. + + * lang.c (lang_decode_option): Parse new options. + +1999-11-17 Alexandre Petit-Bianco + + * class.c (layout_class): Always convert TYPE_SIZE_UNIT to + int_type_node: that's what `_Jv_AllocObject' expects. + +1999-11-11 Alexandre Petit-Bianco + + * parse.y (lookup_method_invoke): Use lang_printable_name to + reliably build the type name during error report. Fixes PR gcj/97. + +1999-11-09 Tom Tromey + + * jcf-path.c: Include . + (jcf_path_init): Search for libjava.zip. Fixes PR gcj/84. + (DIR_UP): New macro. + +1999-11-09 Alexandre Petit-Bianco + + * parse.y (source_end_java_method): Resume permanent allocation, + reversing Apr 27 1998 patch. + (patch_string_cst): Pop obstacks after having pushed the permanent + ones. + +1999-11-05 Tom Tromey + + * class.c (finish_class): Emit inlined methods if any native + methods exist in the class. Fixes PR gcj/85. + +1999-11-04 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR. + (qualify_ambiguous_name): Likewise. + +1999-11-03 Godmar Back + + * typeck.c: (lookup_java_method): search all inherited + interfaces when looking up interface method. + +1999-11-01 Alexandre Petit-Bianco + + * parse.y (method_header:): Issue error message for rule `type + error'. + (synchronized:): Error report when not using synchronized. + +1999-11-01 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Prevent `this' from + being used before the superclass constructor has been called. + (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P + instead of `CALL_THIS_CONSTRUCTOR_P'. + +1999-10-30 Todd T. Fries + + * check-init.c: Fix typo in comment. + +1999-10-29 Alexandre Petit-Bianco + + * class.c (add_method_1): Set DECL_INLINE to 1 for private, static + and final method. + +1999-10-29 Alexandre Petit-Bianco + + * parse.y (expression_statement:): Call function to report + improper invocation of a constructor. + (parse_ctor_invocation_error): New function. + +1999-10-26 Mark Mitchell + + * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call + remember_end_note. + +1999-10-21 Tom Tromey + + * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set + in generated `main'. + +1999-10-21 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR. + (qualify_ambiguous_name): Likewise. + +1999-10-20 Alexandre Petit-Bianco + + * parse.y (java_complete_tree): fold_constant_for_init to work on + permanent_obstack. + (java_complete_lhs): Likewise. + (array_constructor_check_entry): Complete an initializer element + on permanent_obstack. + +1999-10-19 Tom Tromey + + * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file. + From Mike Moreton . + +1999-10-15 Greg McGary + + * java-tree.h (flag_bounds_check): Remove extern decl. + * lang.c (flag_bounds_check): Remove global variable. + (lang_f_options): Remove "bounds-check" entry. + (lang_init_options): Default flag_bounds_check to "on". + +1999-10-14 Tom Tromey + + * jvgenmain.c (usage): New function. + (main): Use it. Also, handle `-D' options. + * jvspec.c (lang_specific_driver): Recognize -D. + (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation. + + * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'. + +1999-10-14 Kaveh R. Ghazi + + * jcf-dump.c (print_constant, disassemble_method): Don't call a + variadic function with a non-literal format string. + + * parse-scan.y (report_main_declaration): Likewise. + + * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise. + + * parse.y (read_import_dir, patch_assignment, patch_binop, + patch_array_ref): Likewise. + + * typeck.c (build_java_array_type): Likewise. + + * verify.c (verify_jvm_instructions): Likewise. + +1999-10-12 Alexandre Petit-Bianco + + * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1. + +1999-10-07 Anthony Green + + * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases + where CHECK_PUT may fail for valid reasons. + + * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3, + UNSAFE_PUTN): New macros. + +1999-10-04 Tom Tromey + + * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as + well. Fixes Java PR gcj/59. + * parse-scan.y (yyerror): Report errors. + +1999-09-24 Glenn Chambers + + * decl.c (insert_block): Remove unconditional `abort'. + +1999-09-24 Bernd Schmidt + + * decl.c (builtin_function): No longer static. New arg CLASS. Arg + FUNCTION_CODE now of type int. All callers changed. + Set the builtin's DECL_BUILT_IN_CLASS. + +1999-09-23 Tom Tromey + + * jvspec.c (lang_specific_driver): Don't read spec file if + -fsyntax-only given. + +1999-09-22 Tom Tromey + + * lang-specs.h: Added `%(jc1)' to the jc1 spec. + + * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally. + (WORDS_TO_LONG): Likewise. + (WORDS_TO_DOUBLE): Likewise. + +1999-09-14 Alexandre Petit-Bianco + + * jcf-write.c (RELOCATION_VALUE_0): New macro. + (RELOCATION_VALUE_1): Likewise. + (emit_iinc, emit_reloc, push_constant1, push_constant2, + push_in_const, push_long_const): Prototyped. + (push_constant1): Argument `index' is of type HOST_WIDE_INT. + (push_constant2): Likewise. + (push_int_const): Cast find_constant1's integer arguments to `jword'. + (find_constant_wide): Cast find_constant2's integer arguments to + `jword'. + (find_constant_index): Cast find_constant2's and find_constant2's + integer arguments to `jword'. + (emit_pop): Argument `value' is of type HOST_WIDE_INT. + (emit_switch_reloc): Use RELOCATION_VALUE_0. + (emit_if): Use RELOCATION_VALUE_1. + (emit_goto): Likewise. + (emit_jsr): Likewise. + (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second + argument to push_long_const to HOST_WIDE_INT. + +1999-09-15 Andreas Schwab + + * Makefile.in (parse.o): Depend on $(JAVA_TREE_H). + +1999-09-20 Nick Clifton + + * lang.c (lang_decode_option): Extend comment. + +1999-09-16 Alexandre Petit-Bianco + + * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK + instead of fndecl. + +1999-09-16 Kaveh R. Ghazi + + * gjavah.c (get_field_name, print_method_info, print_include, + add_namelet): Use xmalloc, not malloc. + + * jcf-depend.c (add_entry): Likewise. Use xstrdup, not strdup. + (munge): Use xrealloc, not realloc, trust xrealloc to handle a + NULL pointer. + + * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup. + + * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise. + + * jcf-path.c (add_entry): Likewise. + + * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc. + + * jv-scan.c (xmalloc): Remove definition. + + * jvgenmain.c (xmalloc): Likewise. + + * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero. + + * lex.c (java_store_unicode): Use xrealloc, not realloc. + + * parse-scan.y: Use concat, not of xmalloc/assign/strcpy. Use + concat, not xmalloc/sprintf. + (java_push_parser_context): Use xcalloc, not xmalloc/bzero. + (xstrdup): Remove definition. + + * parse.y (duplicate_declaration_error_p, + constructor_circularity_msg, verify_constructor_circularity, + check_abstract_method_definitions, java_check_regular_methods, + java_check_abstract_methods, patch_method_invocation, + check_for_static_method_reference, patch_assignment, patch_binop, + patch_cast, array_constructor_check_entry, patch_return, + patch_conditional_expr): Use xstrdup, not strdup. + + * zextract.c (ALLOC): Use xmalloc, not malloc. + +1999-09-12 Kaveh R. Ghazi + + * Make-lang.in (jvspec.o): Depend on system.h and gcc.h. + + * jvspec.c: Include gcc.h. Don't include gansidecl.h. + (do_spec, lang_specific_pre_link, lang_specific_driver, + input_filename, input_filename_length): Don't declare. + (main_class_name, jvgenmain_spec, lang_specific_driver): + Constify a char*. + (lang_specific_driver): All calls to the function pointer + parameter now explicitly call `fatal'. + +1999-09-11 Alexandre Petit-Bianco + + * parse.y (find_applicable_accessible_methods_list): Search + abstract classes as interfaces. + +1999-09-09 Alexandre Petit-Bianco + + * class.c (finish_class): We're now outside a valid method + declaration. Tell the rest of gcc so. + +1999-09-08 Bruce Korb autogen@linuxbox.com + + * Makefile.in: Give the gperf user a hint about why "gperf -F" fails. + +1999-09-07 Tom Tromey + + * gjavah.c (add_class_decl): Generate include for gcj/array.h, not + java-array.h. + (decode_signature_piece): Don't emit "::" in JArray<>. + (print_namelet): Only print trailing `;' when printing a class. + +1999-09-10 Bernd Schmidt + + * java-tree.h: Delete declarations for all tree nodes now moved to + global_trees. + * decl.c: Delete their definitions. + +1999-09-04 Mark Mitchell + + * Make-lang.in (jc1): Depend on ggc-callbacks.o. + * Makefile.in (OBJS): Add ggc-callbacks.o. + (OBJDEPS): Likewise. + +1999-09-03 Tom Tromey + + * parse.y (strip_out_static_field_access_decl): Return operand if + it satisfies JDECL_P. + +1999-09-02 Tom Tromey + + * gjavah.c (decode_signature_piece): Emit "::" in JArray<>. + Handle nested arrays, like `[[I'. + +1999-09-02 Kaveh R. Ghazi + + * class.c (finish_class): Remove unused parameter, all callers + changed. + + * expr.c (build_java_athrow): Change return type to void. + (java_lang_expand_expr): Make sure each case in switch returns a + value. + + * java-tree.h (finish_class): Fix prototype to take void args. + + * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN. + (main): Issue return from main, not exit. + + * jcf-parse.c (parse_class_file): Fix call to `finish_class'. + + * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN. + + * jv-scan.c (main): Issue return from main, not exit. + + * parse.y (check_abstract_method_definitions, + java_check_abstract_method_definitions): Add static prototypes. + (java_complete_expand_methods): Fix call to `finish_class'. + + * verify.c (verify_jvm_instructions): Initialize variables `oldpc' + and `prevpc'. + +1999-08-30 Kaveh R. Ghazi + + * lang.c (language_string): Constify. + +1999-08-30 Kaveh R. Ghazi + + * Makefile.in (LIBS): Fix definition so we link with $(CLIB). + Remove hacks for stuff which comes from libiberty. + + * Make-lang.in: Likewise. + +1999-08-30 Hans-Peter Nilsson + + * Makefile.in (xref.o): Depend on xref.c explicitly. + +1999-08-29 Kaveh R. Ghazi + + * java-tree.h (lang_printable_name): Constify a char*. + + * lang.c (lang_printable_name): Likewise. + +1999-08-27 Jeffrey A Law (law@cygnus.com) + + * gjavah.c, jcf-write.c, verify.c: Do not use C++ style + comments in C code. + +1999-08-26 Tom Tromey + + * gjavah.c (print_cxx_classname): Print "::" before qualified + name. + +1999-08-26 Alexandre Petit-Bianco + + * parse.y (lookup_cl): Changed leading comment. Now does its best + to set the column number. + (qualify_ambiguous_name): Take WFL wrappers into account. + +1999-08-25 Gregg Townsend + + * verify.c (verify_jvm_instructions): Don't check instruction + validity beyond end of method. + +1999-08-25 Tom Tromey + + * jvspec.c (lang_specific_driver): Correctly handle --help again. + +1999-08-25 Kaveh R. Ghazi + + * gjavah.c (print_name, print_base_classname, utf8_cmp, + cxx_keyword_subst, generate_access, name_is_method_p, + get_field_name, print_field_name, super_class_name, print_include, + decode_signature_piece, print_class_decls, usage, help, + java_no_argument, version, add_namelet, print_namelet): Add static + prototype. + (print_base_classname, utf8_cmp, cxx_keyword_subst, + name_is_method_p): Constify a char*. + (get_field_name): Likewise. Prefer xstrdup over malloc/strcpy. + Provide a final else clause in an if-else-if. + (print_field_info): Add missing final arg in function call to + `print_field_name'. + (print_method_info, decompile_method, decode_signature_piece, + print_c_decl, print_full_cxx_name, print_stub, + print_mangled_classname, super_class_name, print_include, + add_namelet, add_class_decl, print_class_decls, process_file, + help): Constify a char*. + + * jcf-write.c (jcf_handler, push_constant1, push_constant2, + push_int_const, find_constant_wide, find_constant_index, + push_long_const, field_op, maybe_wide, emit_dup, emit_pop, + emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop, + emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc, + emit_if, emit_goto, emit_jsr, call_cleanups, + make_class_file_name): Add static prototypes. + (generate_bytecode_return, generate_bytecode_insns): Pass a + NULL_PTR, not a NULL_TREE. + + * jv-scan.c: Include "jcf.h". + (main): Declare using DEFUN macro. + + * jvspec.c (find_spec_file, lang_specific_pre_link, + lang_specific_driver): Add prototypes. + (find_spec_file): Constify a char*. + + * keyword.gperf (hash, java_keyword): Add prototypes. + + * lang.c (lang_print_error): Add static prototype. + (lang_init): Prefer memcpy over bcopy to avoid casts. + + * lex.c (yylex): Add static prototype. + + * parse-scan.y: Include "lex.c" earlier. + + * parse.h: Remove redundant declaration for `yylex'. + + * parse.y (java_decl_equiv, binop_compound_p, search_loop, + labeled_block_contains_loop_p): Add static prototypes. + (not_accessible_p): Make static to match prototype. + + * verify.c (start_pc_cmp): Don't needlessly cast away const. + +1999-08-22 Alexandre Petit-Bianco + + * parse.y (check_method_redefinition): Changed leading comment. + (check_abstract_method_definitions): New function. + (java_check_abstract_method_definitions): New function. + (java_check_regular_methods): Call it. + (verify_constructor_super): Fixed indentation. + (lookup_method_invoke): Likewise. + +1999-08-19 Alexandre Petit-Bianco + + * parse.y (method_header): Return a null pointer if the current + class node is null. + (finish_method_declaration): Return if the current function decl + is null. + (source_start_java_method): Likewise. + (java_method_add_stmt): Likewise. + +1999-08-18 Alexandre Petit-Bianco + + * class.c (emit_register_class): Removed unnecessary call to + start_sequence. + * parse.y (labeled_block_contains_loop_p): Removed unused local + variable. + +1999-08-17 Alexandre Petit-Bianco + + * parse.y (java_refold): Added prototype. + +1999-08-17 Alexandre Petit-Bianco + + * parse.y (BINOP_COMPOUND_CANDIDATES): New macro. + (java_stabilize_reference): Removed unnecessary `else'. + (java_complete_lhs): Set flag to remember boolean. Call + java_refold. Added comments. + (java_decl_equiv): New function. + (binop_compound_p): Likewise. + (java_refold): Likewise. + (patch_unaryop): Striped static field access assigned to decl and + op. Changed promotion scheme for ++/-- operators. + (search_loop): New function. + (labeled_block_contains_loop_p): Likewise. + (patch_loop_statement): Call labeled_block_contains_loop_p. Added + comment. + (patch_bc_statement): Call search_loop. Fixed comment. + +1999-08-14 Anthony Green + + * expr.c (java_lang_expand_expr): Mark static array data as + referenced. + +1999-08-10 Rainer Orth + + * jvgenmain.c (main): NUL-terminate name_obstack. + +1999-08-10 Kaveh R. Ghazi + + * check-init.c (check_bool2_init, done_alternative): Add static + prototypes. + + * class.c (add_interface_do, maybe_layout_super_class): Likewise. + (add_method, build_utf8_ref, build_class_ref, + append_gpp_mangled_type, layout_class_method): Constify a char*. + + * decl.c (push_promoted_type, make_binding_level): Add static + prototypes. + (push_promoted_type, pushdecl): Constify a char*. + + * except.c (find_handler_in_range, link_handler, + check_start_handlers): Add static prototypes. + + * expr.c (process_jvm_instruction): Constify a char*. + + * gjavah.c (main): Constify a char*. + + * java-tree.h (verify_jvm_instructions, process_jvm_instruction): + Constify a char*. + + * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add + static prototypes. + (add_entry, jcf_dependency_set_target, jcf_dependency_add_target, + munge, print_ents): Constify a char*. + + * jcf-dump.c (disassemble_method): Constify a char*. + (print_constant_pool, print_exception_table): Add static prototypes. + (print_constant, print_exception_table, main, disassemble_method): + Constify a char*. + + * jcf-io.c (find_classfile, find_class): Likewise. + + * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise. + (set_source_filename, predefined_filename_p): Add static prototypes. + (set_source_filename, get_constant, get_class_constant, + find_in_current_zip): Constify a char*. + + * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add + static prototypes. + (add_entry, add_path, jcf_path_classpath_arg, + jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*. + + * jcf-reader.c (get_attribute, jcf_parse_preamble, + jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields, + jcf_parse_one_method, jcf_parse_methods, + jcf_parse_final_attributes): Add static prototypes. + (get_attribute): Constify a char*. + + * jcf.h (find_class, find_classfile, jcf_dependency_set_target, + jcf_dependency_add_target, jcf_path_classpath_arg, + jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*. + + * jv-scan.c (main): Constify a char*. + (gcc_obstack_init): Add prototype arguments. + + * jvgenmain.c (gcc_obstack_init): Likewise. + (main): Constify a char*. + + * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add + static prototypes. + (put_decl_string, lang_print_error): Constify a char*. + (lang_init): Remove redundant extern prototype. + + * mangle.c (emit_unicode_mangled_name): Constify a char*. + + * typeck.c (convert_ieee_real_to_integer, parse_signature_type): + Add static prototypes. + (get_type_from_signature): Constify a char*. + + * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ): + Add static prototypes. + (start_pc_cmp): Prefer PTR over GENERIC_PTR. + (verify_jvm_instructions): Constify a char*. + + * xref.c (xref_flag_value): Likewise. + + * xref.h (xref_flag_value): Likewise. + + * zextract.c (makeword, makelong): Add static prototypes. + (makeword, makelong): Constify a uch*. + +1999-08-09 Kaveh R. Ghazi + + * lang.c (java_dummy_print): Constify a char*. + (lang_print_error): Likewise. + (lang_init): Remove redundant prototype for `print_error_function'. + (lang_init_source): Likewise. + (lang_identify): Constify a char*. + +1999-08-09 Tom Tromey + + * javaop.h (WORD_TO_FLOAT): only inline if building with gcc. + (WORDS_TO_LONG): Likewise. + (WORDS_TO_DOUBLE): Likewise. + +1999-08-04 Kaveh R. Ghazi + + * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H). + + * expr.c (java_stack_pop, java_array_data_offset, + build_java_throw_out_of_bounds_exception, case_identity, + build_java_check_indexed_type): Add static prototypes. + (linenumber_table, expand_invoke, expand_java_field_op, + build_primtype_type_ref, expand_byte_code): Constify a char*. + + * java-tree.h (build_primtype_type_ref, linenumber_table): + Constify a char*. + (java_lang_expand_expr): Add prototype. + + * lang.c: Include rtl.h and expr.h. Remove extern prototype for + `java_lang_expand_expr'. + + * lex.c (java_lex_error): Constify a char*. + (java_get_unicode, java_read_char, java_allocate_new_line, + java_unget_unicode, java_sneak_unicode): Prototype. + + * parse-scan.y (current_class, package_name, method_declarator, + report_class_declaration, yyerror): Constify a char*. + + * parse.h (java_report_errors): Prototype. + (yyerror): Constify a char*. + + * parse.y (classitf_redefinition_error, check_modifiers, + parse_jdk1_1_error, lookup_package_type, + lookup_package_type_and_set_next, get_printable_method_name, + purify_type_name): Constify a char*. + (build_super_invocation, maybe_generate_finit, + verify_constructor_super, parser_add_interface, + add_superinterfaces, jdep_resolve_class, note_possible_classname, + java_complete_expand_methods, java_expand_finals, + cut_identifier_in_qualified, java_stabilize_reference, + do_unary_numeric_promotion, operator_string, do_merge_string_cste, + merge_string_cste): Prototype. + (single_type_import_declaration, yyerror, + variable_redefinition_error, build_array_from_name, + build_unresolved_array_type, check_class_interface_creation, + resolve_class, complete_class_report_errors, + note_possible_classname, read_import_dir, + find_in_imports_on_demand, resolve_package, fix_constructors, + check_deprecation, lookup_method_invoke, + maybe_build_primttype_type_ref, array_constructor_check_entry): + Constify a char*. + (java_complete_expand_methods, java_expand_finals): Make static. + (convert_narrow): Remove static prototype. + +1999-08-03 J"orn Rennecke + + * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h. + +1999-08-02 Richard Henderson + + * decl.c: Include defaults.h instead of expr.h. + * parse.y: Likewise. + +1999-08-02 Jakub Jelinek + + * java/decl.c (start_java_method): Change all uses of + PROMOTE_PROTOTYPES, so that it tests it as a C expression. + Ensure expr.h is included. + * java/expr.c (pop_arguments): Ditto. + * java/parse.y (expand_start_java_method): Ditto. + +1999-08-01 Kaveh R. Ghazi + + * Makefile.in (ALL_CFLAGS): Add '-W -Wall'. + +1999-07-31 Bernd Schmidt + + * decl.c: Include "function.h". + * except.c: Likewise. + * parse.y: Likewise. + * Makefile.in: Update dependencies. + +1999-07-30 Kaveh R. Ghazi + + * expr.c (build_java_soft_divmod): Provide a default case in switch. + (java_lang_expand_expr): Mark parameters `target', `tmode' and + `modifier' with ATTRIBUTE_UNUSED. + + * gjavah.c (process_file): Add braces around ambiguous `else'. + + * jcf-dump.c (print_access_flags, localvar_free): Change return + type to void. + + * parse.y (java_complete_expand_method): Initialize variable + `exception_copy'. + (resolve_qualified_expression_name): Likewise for `field_decl'. + (patch_method_invocation): Likewise for `class_to_search'. + (qualify_ambiguous_name): Likewise for `name' and `ptr_type'. + (patch_assignment): Likewise for `lhs_type'. + + * verify.c (verify_jvm_instructions): Remove unused variable + `caller'. + +1999-07-25 Richard Henderson + + * decl.c (va_list_type_node): New. + +1999-07-25 Anthony Green + + * gjavah.c (print_stub): New function. + (METHOD_IS_NATIVE): New macro. + (print_mangled_classname): Make static. + (HANDLE_END_FIELD): Don't emit fields during stub generation. + (process_file): Perform stub generation. + (HANDLE_METHOD): Don't emit class decls during stub + generation. + (HANDLE_END_METHOD): Take into account stub generation. + (print_method_info): Handle stub generation. + (print_stub): New function. + (print_cxx_classname): Make signature consistant with others. + (help): Describe -stubs option. + (main): Create stub file. + (version): Use version.c. + (print_full_cxx_name): New function. + (print_c_decl): Use print_full_cxx_name. + +1999-07-22 Alexandre Petit-Bianco + + * check-init.c (check_init): Handle MAX_EXPR. + +1999-07-15 Andrew Haley + + * lang.c (flag_use_divide_subroutine): New variable. + * typeck.c: (convert_ieee_real_to_integer): Bounds check + fp-to-integer conversion. + (convert): Call convert_ieee_real_to_integer when flag_fast_math + is not set. + + * expr.c (build_java_soft_divmod): New function. + (build_java_binop): Call build_java_soft_divmod if + flag_use_divide_subroutine is set. + * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree + soft_lrem_node: new builtin functions. + (init_decl_processing) Initialize the new builtins. + * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree + soft_lrem_node: new builtin functions. + (build_java_soft_divmod): New function. + * parse.y: Call build_java_soft_divmod if + flag_use_divide_subroutine is set. + * parse.c: Rebuilt. + + * jvspec.c (lang_specific_driver): Always allow an extra arg (for + a --specs= arg) even if not linking. + * lang-options.h (DEFINE_LANG_NAME ("Java")): Add + -fuse-divide-subroutine + +1999-07-20 Alexandre Petit-Bianco + + * parse.y (resolve_and_layout): Check methods only once. + (resolve_qualified_expression_name): Verify thrown exceptions + compatibility. + (check_thrown_exceptions): Reject exceptions thrown in + initializer. Error message tuned. + +1999-07-14 Andrew Haley + + * expr.c (expand_expr): Do not return the last statement in a + block as the block's value. + +1999-07-03 Alexandre Petit-Bianco + + * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed + CALL_EXPR, to avoid order of evaluation changes. + +1999-07-02 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Do not use + IDENTIFIER_LOCAL_VALUE when name is a STRING_CST. + +1999-07-01 Alexandre Petit-Bianco + + * check-init.c (check_init): Handle MAX_EXPR. + * expr.c (force_evaluation_order): Force method call arguments to + be evaluated in left-to-right order. + * parse.y (qualify_ambiguous_name): Loop again to qualify + NEW_ARRAY_EXPR properly. + +1999-06-30 Alexandre Petit-Bianco + + * parse.y (patch_invoke): Resolve unresolved invoked method + returned type. + (qualify_ambiguous_name): STRING_CST to qualify expression for + type name resolution. + +1999-06-24 Andrew Haley + + * class.c (finish_class): Whenever a deferred method is + output, rescan the list of methods to see if a new candidate for + output can be found. + +1999-06-28 Tom Tromey + + * jvspec.c (lang_specific_driver): Recognize --help. + +1999-06-25 Alexandre Petit-Bianco + + * parse.y (resolve_package): Fixed bogus return statement. + (patch_method_invocation): Resolve method invocation beginning with + a package name qualifier. + +1999-06-25 Kaveh R. Ghazi + + * Make-lang.in (java.stage1): Depend on stage1-start. + (java.stage2): Likewise for stage2-start. + (java.stage3): Likewise for stage3-start. + (java.stage4): Likewise for stage4-start. + +1999-06-24 Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): When doing cross referencing, don't + try to keep file location on a WFL expanded as a CALL_EXPR. + +1999-06-23 Alexandre Petit-Bianco + + * parse.y (finish_method_declaration): Insert a RETURN_EXPR when + compiling to class file a void method with an empty method body. + As a side effect, the bytecode backend will generate the + appropriate `return' instruction. + +1999-06-22 Alexandre Petit-Bianco + + * parse.y (lookup_package_type_and_set_next): New function prototype. + (resolve_package): Search current and imported packages. + (lookup_package_type_and_set_next): New function. + +1999-06-22 Andrew Haley + + * verify.c (verify_jvm_instructions): Check for pending blocks + before invalid PC test and opcode switch, not after. + +1999-06-21 Andrew Haley + + * except.c (find_handler_in_range): The upper limit for exception + ranges is exclusive, not inclusive: (start <= pc < end). + (link_handler): find child pointer which points to outer by + searching sibling list: previous code incorrectly assumed that + outer->outer->first_child must point to outer. + * verify.c (verify_jvm_instructions): FIXME added to code for + `athrow'. + (verify_jvm_instructions): Do not assume that the last block + processed in a subroutine is a block which ends with a `ret' + instruction. With some control flows it is possible that the last + block ends with an `athrow'. + +1999-06-14 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Reorganized the post + evaluation of non WFL leading expression nodes. + +1999-06-11 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after + CONVERT_EXPR. + +1999-06-10 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Handle qualified expression + beginning with a STRING_CST. + +1999-06-10 Alexandre Petit-Bianco + + * parse.y (register_fields): Set DECL_INITIAL on both + pre-initialized static and public fields. + (resolve_field_access): Static field access expressions to always + use pointer types. + (qualify_ambiguous_name): Work out buried CALL_EXPR for proper + qualification. CONVERT_EXPR to be resolved as an expression name. + (java_complete_lhs): Identify and access qualified final + initialized field in switch statement case expression. + (fold_constant_for_init): Pre-initialized field decl constant to + be folded. + +1999-06-07 Alexandre Petit-Bianco + + * parse.y (note_possible_classname): Mark returned node with + QUALIFIED_P only if the original class name contained a '/'. + +1999-06-05 Anthony Green + + * Make-lang.in (gcjh): More parallel build fixes. + +1999-06-03 Mike Stump + + * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds. + +1999-06-02 Anthony Green + + * except.c (link_handler): Chain exception handlers in order. + +1999-06-02 Anthony Green + + * expr.c (expand_byte_code): Fill unreachable bytecode regions + with nops and process as usual in order to always set correct EH + ranges. Emit detailed warnings about unreachable bytecodes. + +1999-06-02 Anthony Green + + * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as + constant. + +1999-05-28 Alexandre Petit-Bianco + + * parse.y (lookup_field_wrapper): Unified returned value to NULL + or the searched field decl. + +1999-05-28 Alexandre Petit-Bianco + + * parse.y (fold_constant_for_init): Convert numerical constant + values to the type of the assigned field. + +1999-05-27 Alexandre Petit-Bianco + + * expr.c (lookup_field): Relaxed the test on class loading error + detection. + * parse.y (fold_constant_for_init): Enabeled old code. + +1999-05-26 Alexandre Petit-Bianco + + * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast' + decide the validity of the cast of a java.lang.Cloneable reference + to an array. + (patch_conditional_expr): Fixed first argument passed to + binary_numeric_promotion. + +1999-05-26 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Take into account that a + CONVERT_EXPR might specify a type as a WFL. + +1999-05-25 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Save the rhs before using it as an + argument to _Jv_CheckArrayStore. + +1999-05-25 Alexandre Petit-Bianco + + * lex.c (java_parse_doc_section): Fixed `tag' buffer size. + +1999-05-24 Alexandre Petit-Bianco + + * lex.c (java_lex): Accepts `+' or `-' after the beginning of a + floating point literal only when the exponent indicator has been + parsed. + +1999-05-22 Alexandre Petit-Bianco + + * parse.y (formal_parameter:): Construct argument tree list + element even if a yet unsupported final parameter was encountered. + +1999-05-18 Alexandre Petit-Bianco + + * parse.y (finish_method_declaration): Issue errors for native or + abstract methods declared with a method body, as well as for non + native or non abstract methods with no method body. + +1999-05-19 Kaveh R. Ghazi + + * class.c (build_utf8_ref): Initialize variable `field'. + + * decl.c (init_decl_processing): Initialize variable `field'. + + * expr.c (build_known_method_ref): Mark parameters `method_type', + `method_signature' and `arg_list' with ATTRIBUTE_UNUSED. + (process_jvm_instruction): Likewise for parameter `length'. + + * jvspec.c (lang_specific_driver): Mark variables `saw_math', + `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with + ATTRIBUTE_UNUSED. + + * parse.y (maybe_generate_clinit): Remove unused variable + `has_non_primitive_fields'. + (find_in_imports_on_demand): Initialize variables `node_to_use' + and `cl'. + (patch_binop): Likewise for variable `prom_type'. + (patch_unaryop): Likewise for variable `prom_type'. + + * verify.c (verify_jvm_instructions): Likewise for variable `last'. + + * xref.c (xref_table): Add missing initializer. + +1999-05-14 Tom Tromey + + * java-except.h (struct eh_range): Removed unused `next' member. + * verify.c (verify_jvm_instructions): Call check_nested_ranges + after adding all exception handlers. Sort exception ranges in + order of start PC. + (struct pc_index): New structure. + (start_pc_cmp): New function. + * except.c (add_handler): Return `void'. Don't call link_handler; + instead construct an ordinary linked list and do range + coalescing. + (check_nested_ranges): New function. + (link_handler): Changed interface to allow merging of eh_ranges. + Split overlapping ranges. Return `void'. + +1999-05-17 Alexandre Petit-Bianco + + * parse.y (constructor_block_end:): New rule, tagged . + (constructor_body:): Use `constructor_block_end' instead of + `block_end'. + +1999-05-17 Alexandre Petit-Bianco + + * parse.y (statement_nsi:): Pop `for' statement block. + (java_complete_lhs): Labeled blocks containing no statement are + marked as completing normally. + +1999-05-14 Alexandre Petit-Bianco + + * xref.c (xref_set_current_fp): New function, defined. + * xref.h (xref_set_current_fp): New function, prototyped. + +1999-05-14 Alexandre Petit-Bianco + + * check-init.c (check_init): Take into account that + LABELED_BLOCK_STMT can be empty. + +1999-05-13 Alexandre Petit-Bianco + + * parse.y (java_check_regular_methods): Warning check on not + overriding methods with default access in other packages does not + apply to `'. + (java_complete_lhs): If block body is an empty_stmt_node, replace + it by NULL_TREE. This prevents gcc from generating an irrelevant + warning. + +1999-05-13 Alexandre Petit-Bianco + + * check-init.c (check_init): Removed code accepting to see things + falling through default:, when doing xrefs. + * java-tree.h (do_not_fold): New global variable, declared. + * parse.y (do_not_fold): New global variable, defined. + (java_complete_expand_method): Set `do_not_fold' to the value of + `flag_emit_xref'. When doing xrefs: copy the thrown exceptions, + and reinstall them after them have been purged; do not check for + initializations; do not issue missing return errors. + (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes + when doing xrefs. + (patch_binop): Skip the fold part when doing xrefs. + (build_string_concatenation): Skip the concatenation part when + doing xrefs. + (patch_synchronized_statement): Do not generate a try-finally when + doing xrefs. + (patch_throw_statement): When doing xrefs, do not call BUILD_THROW + and keep the location where the throw was seen. + * typeck.c (convert): When `do_not_fold' is set, do not attempt + any treatment on the converted node an simply return a NOP_EXPR of + the targeted type. + * xref.c (xref_get_data): New function, defined. + * xref.h (xref_get_data): New function, declared. + (XREF_GET_DATA): Use xref_get_data. + +1999-05-13 Kaveh R. Ghazi + + * gjavah.c (print_include): Cast the result of `strlen' to int + when comparing against a signed value. + (add_namelet): Likewise. + +1999-05-12 Kaveh R. Ghazi + + * expr.c (expand_invoke): Mark parameter `nargs' with + ATTRIBUTE_UNUSED. + (PRE_LOOKUP_SWITCH): Likewise for variable `match'. + + * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with + ATTRIBUTE_UNUSED. + + * jcf-reader.c (get_attribute): Cast a value to long + when comparing against a signed expression. Likewise. + + * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or + HOST_BITS_PER_CHAR. + +1999-05-11 Andrew Haley + + * parse.y (source_end_java_method): If the current method contains + any exception handlers, force asynchronous_exceptions: this is + necessary because signal handlers in libjava may throw exceptions. + * decl.c (end_java_method): Ditto. + +1999-05-11 Tom Tromey + + * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x + flags. + * jvspec.c (THREAD_NAME): Removed. + (GC_NAME): Likewise. + (MATHLIB): Likewise. + (WITHLIBC): Likewise. + (GCLIB): Likewise. + (THREADLIB): Likewise. + (MATH_LIBRARY): Likewise. + (lang_specific_driver): Don't add `-l' options to command line. + Instead, add a single --specs option. Recognize `-L' options and + use them to search for spec file. + (find_spec_file): New function. + (SPEC_FILE): New define. + +1999-05-11 Dave Brolley + + * lang-options.h: -MD, -MMD, -M and -MM not needed here for + cpplib-enabled build. + +1999-05-05 Per Bothner + + * class.c (make_field_value): DECL_INITIAL may be a string literal; + temporarily zero it while calling rest_of_decl_compilation. + + * java-tree.h (string_ptr_type_node): Add declaration. + * decl.c: Define and initialize string_ptr_type_node. + * parse.y (patch_string_cst): Use string_ptr_type_node. + + * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P): Removed. + * parse.y (for_statement): Now unconditionally exit_block. + (finish_labeled_statement): No longer exit_block if for-loop. + (patch_loop_statement): Check harder if the loop is already labeled. + + * parse.y (patch_initialized_static_field): Removed function. + (maybe_generate_clinit): Removed special handling for interfaces. + (java_complete_expand_methods): Do a preliminary java_complete_tree + on to determine if it can be removed. + (java_complete_expand_method): Remove special handling for . + (java_complete_lhs): For BLOCK and EXPR_WITH_FILE_LOCATION + optimize if we get back empty_stmt_node. + For MODIFY_EXPR, re-do checking of static initializers. + (fold_constant_for_init): Don't return immediate if VAR_DECL. + For VAR_DECL, pass correct context. + + * verify.c (verify_jvm_instructions): Better error messages. + +1999-05-03 Tom Tromey + + * parse-scan.y (interface_declaration): Call + report_class_declaration for interfaces. + +1999-04-30 20:54 -0400 Zack Weinberg + + * Makefile.in: Remove -v from bison command lines. + +1999-04-30 Alexandre Petit-Bianco + + * check-init.c (check_init): Exclude a case of error when doing + xrefs. + * class.c (layout_class_method): Don't generate the error message + twice when compiling from source. + * lang-options.h: Added `-Wredundant-modifers' and + `-Wunusupported-jdk11' flags and help text. + * lang.c (lang_decode_option): Added support for + `-Wunsupported-jdk11' and `-Wredundant-modifiers'. + flag_static_local_jdk11 and flag_redundant set accordingly. + * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK. + * parse.h (EXPR_WFL_ADD_COL): New macro. + (DECL_END_SOURCE_LINE): Likewise. + (DECL_INHERITED_SOURCE_LINE): Likewise. + * parse.y (static_ref_err): New function, prototyped. + (CCB_TK): Now tagged . + (class_body:): Remember the location of the closing '}' of a class + definition when doing xrefs. + (block:): Likewise. + (block_end:): Likewise. + (create_class): Remember the location of the inherited class + identifier when doing xrefs. + (register_fields): Added test on first operand of `init' before + testing it TREE_CODE. + (method_header): Store the location of the class identifier in the + class decl when doing xrefs. + (finish_method_declaration): Don't combine first/last method line + when doing xref. + (java_check_regular_methods): Warning check on not overriding + methods with default access on other packages move before check on + static methods. Initialization of `aflags' also moved up. + (resolve_expression_name): Call static_ref_err to report the error. + (static_ref_err): New function, implemented. + (resolve_field_access): Returned simplified static field access + when doing xrefs. + (resolve_qualified_expression_name): Check for illegal use of + static fields in a non static context. Call static_ref_err to + report error in various places. + (java_complete_tree): Do not fold initialized static fields when + doing xrefs. + (java_complete_lhs): Likewise. + +1999-04-29 Anthony Green + + * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to + create internal labels. + (lookup_label): Ditto. + +1999-04-24 Alexandre Petit-Bianco + + * class.c (layout_class_method): Generate 's rtl for + interfaces. + * decl.c (complete_start_java_method): Don't call _Jv_InitClass + for interfaces' . + * expr.c (lookup_field): Search for fields in interfaces. + (expand_invoke): Fixed indentation. + (expand_java_field_op): Likewise. Use IS_CLINIT. + * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed. + (IS_CLINIT): New macro. + * parse.y (type_declaration:): Call maybe_generate_clinit after an + interface was parsed. + (maybe_generate_clinit): Don't generate if the current class is an + interface with only fields of primitive types. + (reset_method_name): Use IS_CLINIT. + (java_complete_expand_method): Expand when it exists for + interfaces. Use IS_CLINIT. + (resolve_expression_name): Use DECL_CONTEXT instead of + current_class to build static field references. + (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on + ARRAY_REF when doing xreferencing. + (check_final_assignment): Fixed typo in leading comment. Use + IS_CLINIT. + (patch_array_ref): Don't fully expand array references when + xreferencing. + (patch_return): Use IS_CLINIT. + (patch_throw_statement): Likewise. + +1999-04-22 Tom Tromey + + * Make-lang.in (JAVA_SRCS): Added check-init.c. + +1999-04-21 Alexandre Petit-Bianco + + * decl.c (predef_filenames, predef_filenames_size): New globals + (init_decl_processing): predef_filenames and predef_filenames_size + initialized. + * java-tree.h (predef_filenames, predef_filenames_size): Declared + extern. + * jcf-parse.c (predefined_filename_p): New function. + (yyparse): Check that files on the command line are specified only + once and issue a warning otherwise. + * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro. + * parse.y (source_end_java_method): Nullify NOP method bodies, to + avoid a gcc warning with -W -Wall turned on. + (java_expand_classes): Abort if errors were encountered. + (java_complete_lhs): If the cross reference flag is set, wrap + field DECL node around a WFL when resolving expression name. + +1999-04-19 Alexandre Petit-Bianco + + * lang.c (lang_decode_option): Fixed returned value when parsing + `-fxref=...' and `-Wall'. + * parse.y (source_end_java_method): Do not generate code when + flag_emit_xref is set. + (resolve_expression_name): Do not build static field access when + flag_emit_xref is set. + (resolve_field_access): No special treatment on `length' when + flag_emit_xref is set. Do not build qualified static field access + when flag_emit_xref is set. + (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR + when flag_emit_xref is set. + (patch_assignment): Do not generate array store runtime check when + flag_emit_xref is set. + * xref.c (xref_flag_value): Fixed function declaration + indentation. + (xset_set_data): New function. + * xref.h (xref_set_data): Added prototype for new function. + (typedef struct xref_flag_table): New field data. + (XREF_GET_DATA): New macro. + +1999-04-19 Tom Tromey + + * xref.h (enum): Removed trailing comma. + + * parse.y (resolve_qualified_expression_name): Added missing + `break'. + +1999-04-15 Anthony Green + + * gjavah.c: New prototypes for java_float_finite and + java_double_finite. + +1999-04-12 Alexandre Petit-Bianco + + * parse.y (patch_unaryop): Fixed ++/-- operator check on array + references. + +1999-04-06 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (TREE_H): Add tree-check.h. + (RTL_H): Add genrtl.h. + +1999-04-06 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Added ArrayStoreException runtime + check. + +1999-04-06 Per Bothner + + * expr.c (pop_type_0): New function. + (pop_type): Use pop_type_0. + * java-tree.h (pop_type_0): New declaration. + * verify.c (verify_jvm_instructions): Check return instructions. + + * parse.y (patch_binop): Don't fold if non-constant and emiting + class files. + +1999-04-05 Kaveh R. Ghazi + + * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H). + + * gjavah.c: Include math.h earlier. Include tree.h/java-tree.h. + (main_jcf): Don't define. + (process_file): Don't set `main_jcf'. + + * java-tree.h (main_jcf): Don't declare. + + * jcf-parse.c (main_jcf): Add static definition. + + * lang.c (main_jcf): Don't define. + +1999-04-05 Kaveh R. Ghazi + + * class.c (add_method_1): Cast the argument of `bzero' to PTR. + + * decl.c (copy_lang_decl): Likewise for `bcopy'. + + * jcf-depend.c: Include "config.h", not . + + * jcf-parse.c (jcf_figure_file_type): Cast the arguments of + `bcopy' to PTR. + + * jcf-path.c: Include "config.h", not . + + * lex.c: Don't include various system header files. + (java_init_lex): Cast the argument of `bzero' to PTR + + * parse-scan.y (java_push_parser_context): Likewise. + + * parse.y (java_push_parser_context): Likewise. + (patch_bc_statement): Match format specifier to variable argument. + + * xref.c: Don't include . + +1999-04-05 Alexandre Petit-Bianco + + * parse.y (struct parser_ctxt *ctxp): Now global. + (declare_local_variables): Use WFL compound value for the + declaration source line value, when doing cross-referencing. + +1999-03-31 Tom Tromey + + * gjavah.c (print_field_info): Allow constants of other types. + (print_include): Generate include when new name is proper prefix + of already printed name. + (add_namelet): Likewise. + (cxx_keyword_subst): New function. + (print_method_info): Use it. + (print_field_name): New function. + (get_field_name): New function. + (print_field_info): Use get_field_name and print_field_name. + +1999-03-31 Kaveh R. Ghazi + + * Makefile.in (keyword.h): Generate using gperf language 'C', not + 'KR-C', so gperf uses the `const' keyword on strings. + + * keyword.gperf (java_keyword): Const-ify a char*. + +1999-03-30 Alexandre Petit-Bianco + + * parse.y (patch_bc_statement): Fixed identation and a bogus + `printf' format. + +1999-03-30 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Allow static variables in other + classes to be assigned. + +1999-03-28 Kaveh R. Ghazi + + * class.c (maybe_add_interface): Remove unused variable + `interface_binfo'. + (make_class_data): Use = for assignment, not ==. Likewise. + (emit_register_classes): Remove unused variable `decl'. + + * lex.c: Fix comment so as not to contain an embedded `/*'. + + * verify.c (verify_jvm_instructions): Remove unused variable + `self_type'. + +1999-03-27 Per Bothner + + * parse.y (complete_loop_body): Rename to finish_loop_body. + (complete_labeled_statement): Rename to finish_labeled_statement. + (complete_for_loop): Rename to finish_for_loop. + (complete_method_declaration): Rename to finish_method_declaration. + + * java-tree.h (continue_identifier_node): New global node. + * decl.c: Define and initialize continue_identifier_node. + * parse.y (generate_labeled_block): Remove - no longer needed. + (build_loop_body): Use continue_identifier_node for continue block. + (finish_labeled_statement): Also do pop_labeled_block actions. + (java_complete_lhs): POP_LOOP even if error. + (build_labeled_block): Special handling for continue_identifier_node. + (patch_loop_statement): Re-organize. + (patch_bc_statement): Re-write. + +1999-03-27 Alexandre Petit-Bianco + + * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count + using a WFL compound value. + * parse.y (xref.h): Include. + (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the + WFL compound value. + (register_fields): Set WFL compound value to lineno if doing + xrefs. + (java_complete_expand_method): Call expand_xref if flag_emit_xref + is set. + * xref.c (system.h, jcf.h, parse.h, obstack.h): Include. + * xref.h (expand_xref): Prototype renamed from xref_generate. + +1999-03-27 Alexandre Petit-Bianco + + * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK. + (GET_CURRENT_BLOCK): New macro. + * parse.y (current_static_block): New global variable. + (method_body:): Define action. + (complete_method_declaration): Set current_function_decl to NULL + when work on the current method is done. + (declare_local_variables): Use GET_CURRENT_BLOCK. + (java_method_add_stmt): Likewise. + (java_complete_expand_method): Disable the use of `this' when + expanding . + (enter_a_block): If no current method exist, use + current_static_block to link static initializer blocks. + (exit_block): Rewritten to use current_static_block when no current + method decl exists. + (lookup_name_in_blocks): Use GET_CURRENT_BLOCK. + (patch_return): Forbid the use of `return' in static initializers. + (patch_throw_statement): Fixed indentation. Issue specific error + for uncaught thrown checked exception in static initializer + blocks. Removed FIXME. + +1999-03-25 Zack Weinberg + + * java/Make-lang.in: Remove all references to gcj.o/gcj.c. + Link gcj from gcc.o. + +1999-03-23 Alexandre Petit-Bianco + + * parse.y (find_applicable_accessible_methods_list): When dealing + with interface: ensure that a given interface or java.lang.Object + are searched only once. + +1999-03-23 Kaveh R. Ghazi + + * gjavah.c (print_c_decl): Remove unused argument `flags'. + + * jcf-dump.c (print_access_flags): Add braces around if-else. + + * jvspec.c (lang_specific_driver): Wrap variable `len' in macro + COMBINE_INPUTS. + + * lex.c (build_wfl_node): Add static prototype. + + * lex.h (build_wfl_node): Remove static prototype. + + * parse.y: Include lex.c early enough to declare everything needed. + Ensure calls to `build_wfl_node' pass the proper arguments. + (create_class): Remove unused variable `super_decl'. + (get_printable_method_name): Initialize variable `name'. + +1999-03-22 Alexandre Petit-Bianco + + * Changelog: Fixed 1999-03-22 typos. + * lang.c (lang_decode_option): Fixed typo in error string in the + XARG section. + +1999-03-22 Alexandre Petit-Bianco + + * Makefile.in (JAVA_OBJS): Added entry xref.o. + (xref.o): New rule. + * java-tree.h (flag_emit_xref): Declared extern. + * lang.c (xref.h): Included. + (flag_emit_xref): New global variable. + (lang_decode_option): Added support for -fxref. + * xref.c: Created. + * xref.h: Likewise. + +1999-03-21 Manfred Hollstein + + * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be + linked with. + +1999-03-21 Kaveh R. Ghazi + + * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H) + $(srcdir)/../system.h and $(JAVA_TREE_H). + (jcf-io.o): Depend on $(JAVA_TREE_H). + (mangle.o): Likewise. + + * check-init.c (check_cond_init): Add static prototype. + + * class.c (build_java_method_type, hashUtf8String, + make_field_value, get_dispatch_vector, get_dispatch_table, + append_gpp_mangled_type, mangle_static_field): Likewise. + (strLengthUtf8): Hide unused definition. + (hashUtf8String): Const-ify. + (make_field_value): Un-ANSI-fy. + + * constants.c: Move inclusion of jcf.h above java-tree.h. + (set_constant_entry, find_class_or_string_constant, + find_name_and_type_constant, get_tag_node, + build_constant_data_ref): Add static prototype. + + * decl.c (push_jvm_slot, builtin_function, + lookup_name_current_level): Likewise. + (builtin_function): Const-ify. + + * except.c (expand_start_java_handler, expand_end_java_handler): + Add static prototype. + + * expr.c (flush_quick_stack, push_value, pop_value, + java_stack_swap, java_stack_dup, build_java_athrow, + build_java_jsr, build_java_ret, expand_java_multianewarray, + expand_java_arraystore, expand_java_arrayload, + expand_java_array_length, build_java_monitor, expand_java_pushc, + expand_java_return, expand_java_NEW, expand_java_INSTANCEOF, + expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label, + expand_compare, expand_test, expand_cond, expand_java_goto, + expand_java_call, expand_java_ret, pop_arguments, expand_invoke, + expand_java_field_op, java_push_constant_from_pool): Likewise. + + (decode_newarray_type, expand_iinc): Un-ANSI-fy. + (build_java_arraynull_check): Mark parameters `node' and `type' + with ATTRIBUTE_UNUSED. + (note_label): Likewise for parameter `current_pc'. + (expand_java_call, expand_java_ret): Hide unused definition. + + * java-tree.h (make_class, build_constants_constructor, + java_set_exception_lang_code, pop_labeled_block, emit_handlers, + init_outgoing_cpool, register_class, emit_register_classes, + java_layout_seen_class_methods): Prototype. + (unicode_mangling_length): Const-ify. + (append_gpp_mangled_name, append_gpp_mangled_classtype, + emit_unicode_mangled_name, format_int, format_uint, + jcf_trim_old_input, jcf_print_utf8, jcf_print_char, + jcf_print_utf8_replace, open_class): Prototype. + + * jcf-dump.c: Include "config.h", not . Don't include + . Include tree.h/java-tree.h. + (utf8_equal_string usage, process_class): Add static prototype. + (open_class): Don't prototype this here. + (utf8_equal_string): Match arguments to format specifiers. + (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH, + TABLE_SWITCH, disassemble_method): Likewise. + + * jcf-io.c: Include tree.h/java-tree.h. + (open_class, find_classfile, jcf_print_utf8, + jcf_print_utf8_replace): Const-ify. + + * jcf-parse.c (parse_zip_file_entries, process_zip_dir, + parse_class_file): Add static prototype. + (find_in_current_zip): Match definition to existing static + prototype. + + * jcf-write.c: Include jcf.h before tree.h/java-tree.h. + (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label, + finish_jcf_block, define_jcf_label, get_jcf_label_here, + put_linenumber, localvar_alloc, localvar_free, get_access_flags, + write_chunks, adjust_typed_op, generate_bytecode_conditional, + generate_bytecode_return, perform_relocations, init_jcf_state, + init_jcf_method, release_jcf_state, generate_classfile): + Add static prototype. + (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED. + (make_class_file_name): Const-ify. + + * jcf.h (find_classfile): Const-ify. + + * jv-scan.c (reset_report): Remove prototype. + + * jvgenmain.c: Include jcf.h/tree.h/java-tree.h. + (error): Rewrite to allow varargs. + + * lang.c (lang_f_options): Const-ify. + + * lex.c (java_parse_escape_sequence): Add static prototype. + (java_allocate_new_line): Match definition to existing static + prototype. + + * mangle.c Include tree.h/java-tree.h. + (unicode_mangling_length, emit_unicode_mangled_name, + append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify. + + * parse.h (jdep_code): Remove trailing comma in enumeration. + (java_get_line_col): Move prototype outside of !JC1_LITE test. + (reset_report): Add prototype. + + * verify.c (push_pending_label, merge_types): Add static + prototypes. + + * zipfile.h (opendir_in_zip, open_in_zip): Prototype. + +1999-03-19 Alexandre Petit-Bianco + + * parse.y (find_applicable_accessible_methods_list): Extend the + search to superinterfaces when relevant. + (search_applicable_methods_list): New function. + +1999-03-18 Alexandre Petit-Bianco + + * class.c (unmangle_classname): Implemented stricter testing + before setting the QUALIFIED_P flag on an identifier. + +1999-03-16 Per Bothner + + * parse.y (java_complete_lhs): Call force_evaluation_order + after patch_newarray. + (patch_binop): Don't call fold if there are side effects. + +1999-03-16 Alexandre Petit-Bianco + + * parse.y (java_stabilize_reference): Use save_expr instead of + building a SAVE_EXPR node. + (java_complete_lhs): Patch the resulting string of the `+=' + operator (if necessary) and complete the RHS after having built + the cast. + +1999-03-15 Per Bothner + + * class.c (make_class): Don't set CLASS_P here (because + this function is also called by build_java_array_type). + (push_class): Set CLASS_P here instead. + * parse.h (TYPE_CLASS_P): Check for TYPE_ARRAY_P is redundant. + + * jcf-dump.c (print_access_flags): Take extra parameter to indicate + context. If the context is class, perfer "super" over "synchronized". + * jcf-write.c (generate_classfile): Don't add ACC_SUPER if interface. + + * parse.y (create_class): Don't call parser_check_super here; + it is not robust. Always wait until later. + + * parse.y (method_header): For interfaces, set ACC_ABSTRACT (to + match what JDK 1.2 does), but don't set ACC_PUBLIC. + +1999-03-13 Per Bothner + + * lex.c (java_read_char): UNGET invalid non-initial utf8 character. + * lex.h (UNGETC): Change misleading macro. + +1999-03-12 Alexandre Petit-Bianco + + * parse.y (java_stabilize_reference): Return NODE when patching a + COMPOUND_EXPR. + (java_complete_lhs): Put parenthesis around truth values. + +1999-03-12 Alexandre Petit-Bianco + + * class.c (layout_class_method): Don't make rtl for interface + methods. + * parse.h (GET_TYPE_NAME): New macro. + * parse.y (if_then_statement:): Fixed indentation. + (if_then_else_statement:): Likewise. + (for_statement:): Fixed spacing. + (try_statement:): Fixed indentation. + (create_interface): Don't force interfaces to be abstract. + (method_header): Abstract methods are OK in interfaces. + (declare_local_variables): Fixed typo in comment. + (java_complete_expand_method): Fixed indentation. + (resolve_qualified_expression_name): Use GET_TYPE_NAME to report + non accessible fields. + (java_stabilize_reference): New function. + (java_complete_lhs): Fixed indentation. Use + java_stabilize_reference in compound assignment. Insert the + cast. If not processing `+' fix string constants before processing + binop. + +1999-03-12 Kaveh R. Ghazi + + * constants.c (find_class_or_string_constant): Cast variable `j' + to a `jword' when comparing against one. + + * expr.c (java_lang_expand_expr): Remove unused variables + `has_finally_p' and `op0'. + + * gjavah.c (print_field_info): Cast a value to jint when comparing + against one. Likewise for a jlong. + (add_namelet): Likewise cast a `sizeof' to an int when comparing + against a signed quantity. + + * jcf-dump.c (print_signature_type): Remove unused variable `digit'. + (print_signature): Don't needlessly dereference variable `str' + + * jcf-reader.c (get_attribute): Mark variables `max_stack' and + `max_locals' with ATTRIBUTE_UNUSED. + (jcf_parse_class): Likewise for variable `index'. + + * parse.h (reverse_jdep_list): Remove static prototype. + + * parse.y (build_jump_to_finally): Remove prototype and definition. + (reverse_jdep_list): Add static prototype. + + * typeck.c (convert_ieee_real_to_integer): Remove unused variables + `assignment' and `expr_decl'. + + * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'. + +1999-03-12 Andrew Haley + + * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes; + we'll need a directory separator and a null character. + +1999-03-10 Per Bothner + + * jcf-write.c (generate_bytecode_insns): Handle __builtin_fmod, for %. + +Tue Mar 9 11:52:08 1999 Alexandre Petit-Bianco + + * parse.y (method_header): Don't set ACC_ABSTRACT flags on + interfaces. + +1999-03-05 Per Bothner + + * lex.c (java_parse_end_comment): Take extra parameter (next char). + + * class.c (build_utf8_ref): Fix possible name class/ambiguity. + + * class.c (layout_class_method): A static method in a base class + is never overridden, so treat it like it doesn't exist. + However, do complain about private non-static method overriding + public static method. + + * parse.y: Don't set unused INITIALIZED_P flag. + * java-tree.h (INITIALIZED_P): Removed no-longer needed flag. + + * parse.y (find_expr_with_wfl): Optimize tail-calls. + (build_array_from_name): Re-order &index[string] to &string[index]. + + * parse.y (java_complete_lhs): Don't call patch_assignment if rhs is + error_mark (it might catch more errors, but it is more likely to lose). + +1999-03-06 Kaveh R. Ghazi + + * Makefile.in (jcf-parse.o): Depend on $(PARSE_H). + (parse-scan.o): Depend on toplev.h. + + * class.c (make_method_value): Add prototype. Make it static. + Remove unused second argument, caller changed. + + * expr.c (java_lang_expand_expr): Remove unused variable + `return_label'. + + * java-tree.h: Don't prototype find_in_current_zip. + Add prototypes for verify_constant_pool, start_java_method, + end_java_method, give_name_to_locals, expand_byte_code, + open_in_zip, set_constant_value, find_constant1, find_constant2, + find_utf8_constant, find_string_constant, find_class_constant, + find_fieldref_index, find_methodref_index, write_constant_pool, + count_constant_pool_bytes and encode_newarray_type. + + * jcf-dump.c: Remove unused variable `LONG_temp'. + + * jcf-parse.c: Include parse.h. + (jcf_parse_source): Remove unused parameter, all callers changed. + (jcf_figure_file_type): Add static prototype. + (find_in_current_zip): Likewise. Also remove unused parameter, + all callers changed. + (read_class): Initialize variable `saved_pos'. + + * jcf-reader.c (jcf_parse_preamble): Mark variables + `minor_version' and `major_version' with ATTRIBUTE_UNUSED. + + * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE. + (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE. + (java_parse_doc_section): Initialize variable `seen_star'. + (java_lex): Wrap variable `number_beginning' in !JC1_LITE. + (java_lex_error): Mark parameters `msg' and `forward' with + ATTRIBUTE_UNUSED. + (java_get_line_col): Mark parameters `filename' and `line' with + ATTRIBUTE_UNUSED. + + * parse-scan.y: Include toplev.h. + (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED. + + * parse.h: use `struct JCF', not plain `JCF'. + (java_parser_context_save_global, java_expand_classes + java_parser_context_restore_global, java_parse): Add prototypes. + + * typeck.c (convert_ieee_real_to_integer): Remove unused variable + `node'. + +1999-02-24 Per Bothner + + * check-init.c (check_init): COPYN takes word count, not bit count. + +1999-02-26 Per Bothner + + * typeck.c (convert_ieee_real_to_integer): Use save_expr instead of + explicit build_decl. (Avoids crash in reload when optimizing.) + +1999-02-25 Per Bothner + + * decl.c (complete_start_java_method): Handle synchronized method + even when compiling from bytecode. + +1999-02-26 Tom Tromey + + * gjavah.c (add_class_decl): Only generate `#include' if outer + class is not the name of the class we are processing. Correctly + append `.h' in #include. + (process_file): Clean up newlines around generated `#include's. + (decode_signature_piece): Correctly handle inner classes. + (struct include): New structure. + (all_includes): New global. + (print_include): New function. + (add_class_decl): Use it. + (process_file): Likewise. + (add_class_decl): Generate include for java-array.h if array + seen. + (process_file): Don't generate java-array.h include. + + * gjavah.c (add_namelet): Check for standard package names here. + (add_class_decl): Don't check for standard package names here. + +1999-02-25 Tom Tromey + + * parse.y (read_import_dir): Use `|=', not `+=', to set `found'. + When reading a zip file, only use strncmp if both strings are + bigger than the buffer length. Initialize `k' when looping + through zip file. + +1999-02-24 Tom Tromey + + * gjavah.c (struct namelet): New structure. + (add_namelet): New function. + (print_namelet): New function. + (print_class_decls): Use add_namelet and print_namelet to generate + namespaces and not classes. + (method_printed): New global. + (HANDLE_END_METHOD): Examine method_printed. + (print_method_info): Set method_printed when required. Print + error if function to be ignored is marked virtual. Handle $finit$ + method. + (METHOD_IS_FINAL): New macro. + (print_field_info): Use it. + (HANDLE_METHOD): Clear method_printed. + (method_pass): New global. + (HANDLE_END_FIELD): Call add_class_decl on the first pass. + (process_file): Do two passes over both fields and methods. + (HANDLE_METHOD): Examine method_pass. + (root): New global. + (add_class_decl): New function. + (print_class_decls): Don't scan over entire constant pool. + +1999-02-23 Tom Tromey + + * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and + disable linking in that case. + +1999-02-20 Tom Tromey + + * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f, + not 0x1f. + +1999-02-21 Per Bothner + + * decl.c (build_result_decl), java-tree.h: New method. + (complete_start_java_method): Handle synchronized methods. + Don't build DECL_RESULT here. (Ordering dependency problem.) + (start_java_method): Call build_result_decl here instead ... + * parse.y (java_complete_expand_method): ... and here. + (expand_start_java_method): Don't call complete_start_java_method here. + (java_complete_expand_method): Call it here instead. + * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Moved to .. + * java-tree.h: ... here. + + * expr.c (force_evaluation_order): Fix typo, don't handle ARRAY_REF. + * parse.y (java_complete_lhs): Don't call force_evaluation_order + for ARRAY_REF - it doesn't work when array bounds are checked. + (patch_array_ref): Handle it here instead. + + * jcf-write.c (generate_classfile): Emit "Exceptions" attribute. + +1999-02-19 Per Bothner + + Force left-to-right evaluation of binary operations etc. + * expr.c (force_evaluation_order), java-tree.h: New function. + * parse.y (java_complete_lhs): Pass binary operations, procedure + calls, and ARRAY_REFs to force_evaluation_order. + (various): Set TREE_SIDE_EFFECTS more carefully. + + Tolerate random (non-UTF8) encoding in comments without complaining. + * lex.c (java_read_char): Return 0xFFFE if bad UTF8 encoding. + (java_is_eol): Handle '\r' followed by '\n' instead of vice versa. + + * parse.y (resolve_qualified_expression_name): Handle error_mark. + (java_complete_node case EXPR_WITH_FILE_LOCATION): Likewise. + + * parse.y (java_complete_lhs): Ignore an empty statement in a + COMPOUND_EXPR. Don't complain about empty statement after return. + +1999-02-19 Per Bothner + + * parse.y (obtain_incomplete_type): Don't wrap unknown types + in TREE_LIST - just chain the POINTER_TYPEs together. + (resolve_class): If type already resolved, return decl. + After resolving, update TREE_TYPE(class_type), and name (if array). + * parse.h (do_resolve_class), parse.y: Make non-static. + * class.c (maybe_layout_super_class): Take this_class argument. + Do do_resolve_class if necessary. + (layout_class, layout_class_methods): Adjust calls appropriately. + * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED, + JDEP_RESOLVED_P): Redefined for new TREE_LIST-less convention. + * typeck.c (build_java_array_type): Don't call layout_class. + +1999-02-17 Alexandre Petit-Bianco + + * parse.y (check_pkg_class_access): Allow private class access + within the same package. + (strip_out_static_field_access_decl): New function. + (patch_unaryop): Call strip_out_static_field_access_decl on ++/-- + operator argument before testing its nature. + +1999-02-03 Per Bothner + + * java-tree.def (FINALLY_EXPR): Removed. (Now uses TRY_FINALLY_EXPR.) + (TRY_EXPR): Simplify - it no longer has a finally clause. + * check-init.c (check_init): Handle TRY_FINALLY_EXPR. + Simpler handling of TRY_EXPR, which no longer has a finally clause. + * expr.c (java_lang_expand_expr): Likewise. + * java-tree.h (CATCH_EXPR_GET_EXPR): Removed - no longer needed. + * parse.h (java_get_catch_block), parse.y: Removed - no longer needed. + * parse.y (java_complete_lhs): Add support for TRY_FIANLLY_EXPR. + (build_try_statement): Remove finally parameter and handling. + (build_try_finally_statement): New function. + (patch_try_statement): No longer need to support finally clause. + (try_statement): Update grammar action rules. + * jcf-write.c (generate_bytecode_insns): Handle TRY_FINALLY_EXPR. + Simpler handling of TRY_EXPR, which no longer has a finally clause. + +1998-11-26 Andrew Haley + + * jcf-parse.c (get_constant): Add braces around computation of 'd' + when REAL_ARITHMETIC is not defined. [Oct 26 fix got overwritten -PB] + +1999-02-17 Andrew Haley + + * class.c (build_utf8_ref): Back out broken patch which was + intended to to output signatures using '.' as a separator. + + * class.c (make_class_data): Output signatures using '.' as a + separator, rather than '/'. + (mangled_classname): Likewise. + (make_field_value): Likewise. + (make_method_value): Likewise. + * constants.c (alloc_class_constant): Likewise. + * expr.c (build_invokeinterface): Likewise. + +1999-02-11 Alexandre Petit-Bianco + + * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid + of an ancient workaround. + +1999-02-10 Jeffrey A Law (law@cygnus.com) + + * jvspec.c (xmalloc): Kill the prototype. It does not belong + here anymore. + +1999-02-10 Alexandre Petit-Bianco + + * lex.c (yylex): Encode \0 as UTF8. + +1999-02-10 Tom Tromey + + * jvspec.c (lang_specific_driver): Use libgcj, not libjava. + * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE. + (libgcj_zip): Renamed. + * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not + LIBJAVA_ZIP_FILE. + (jcf_path_init): Use LIBGCJ_ZIP_FILE. + + * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop. + (GC_NAME): Renamed -lgc to -lgcjgc. + +1999-02-09 Alexandre Petit-Bianco + + * lex.c (java_lang_cloneable): Initialize. + * parse.y (java_lang_cloneable): New static variable. + (qualify_ambiguous_name): Take CONVERT_EXPR into account when + doing one more qualification round. + (valid_ref_assignconv_cast_p): Reject null source or + destination. Allow an array to be cast into java.lang.Cloneable. + (patch_cast): Swapped two first arguments to first call to + valid_ref_assignconv_cast_p. + +1999-02-08 Alexandre Petit-Bianco + + * parse.h: DECL_P renamed JDECL_P. + * parse.y: DECL_P replaced by JDECL_P. + (build_array_from_name): Always use pointer's type. + (patch_bc_statement): Extra code to search continue target in a + for loop. Fixed comments. Continue target is current loop when + unlabeled. + +1999-02-05 Andrew Haley + + * class.c (make_class_data): The superclass of an interface should + be null, not class Object. + + * lex.c (java_lex): Sign extend hex literals. + +1999-02-04 Andrew Haley + + * class.c (build_utf8_ref): Output signatures using '.' as a + separator, rather than '/'. + (make_class_data): Likewise. + +1999-02-03 Marc Espie + + * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and + mkstemp.o. Get them from libiberty now. + +1999-02-02 Jeffrey A Law (law@cygnus.com) + + * jcf-io.c: Do not include sys/stat.h or sys/wait.h + +1999-02-02 Kaveh R. Ghazi + + * jvspec.c (xmalloc): Fix the prototype to match the one obtained + from libiberty.h + +1999-02-02 Per Bothner + + Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'. + * jcf-write.c (generate_bytecode_return): New function. + (generate_bytecode_insns): Use it, for RETURN_EXPR. + + * jcf-write.c (generate_bytecode_insns): For REAL_CST that is 0 or 1, + generate special [fd]const_[01] instructions. + + * jcf-parse.c (yyparse): Don't emit_register_classes if -fsyntax-only. + + * verify.c (verify_jvm_instructions): Do INVALIDATE_PC after + handling OPCODE_lookupswitch or OPCODE_tableswitch. + +1999-02-01 Per Bothner + + * parse.y (patch_method_invocation): Handle calling static methods, + even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS). + + * parse.y (java_complete_lhs): Don't complain about unreachable + exit condition in a do-while statement. + +1999-01-29 Alexandre Petit-Bianco + + * lex.c (java_read_char): Fixed utf8 decoding. + (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff + range. + * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed + comments. Local variable `all_primitive' is gone. Broadened + acceptance of `0' to floating point targets. `long' can now be + widened to `double' or `float'. + (valid_method_invocation_conversion_p): Added leading + comment. Fixed tabulation. + (build_string_concatenation): Optimize out left or right empty + string constants. + +1999-01-28 Per Bothner + + * jcf-write.c (localvar_alloc): Only emit entry for + LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE. + (generate_bytecode_insns): Only call put_linenumber if + debug_info_level > DINFO_LEVEL_NONE. + * jvspec.c (lang_specific_driver): If no -O* or -g* option + is specified, add -g1 (for compatibility wih javac). + +1999-01-28 Hans-Peter Nilsson + + * java/Makefile.in: Add missing dependencies for jcf-dump.o, + gjavah.o, check-init.o, jv-scan.o + +1999-02-01 Kaveh R. Ghazi + + * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h. + + * gjavah.c: Include config.h and system.h. + + * javaop.h (inline): Don't define, its handled by system.h. + (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these + from `inline' to `static inline'. + + * jcf.h (inline): Don't define, its handled by system.h. + + * lex.c (inline): Likewise. + +1999-01-31 Zack Weinberg + + * lang-specs.h: Map -Qn to -fno-ident. + +1999-01-29 Richard Henderson + + * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo. + +1999-01-29 Tom Tromey + + * parse.h (BUILD_APPEND): If ARG is a non-String object reference, + then cast it to Object before calling `append' method. + +1999-01-28 Per Bothner + + * check-init.c (check_bool2_init, check_bool_init, check_init): + Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR. + * jcf-write.c (generate_bytecode_insns): Likewise. + +1999-01-28 Alexandre Petit-Bianco + + * jcf-parse.c (jcf_parse): Don't parse the same class file twice. + * parse.y (patch_cast): Allow a boolean to be cast into a + boolean. + +1999-01-27 Alexandre Petit-Bianco + + * parse.y: (class_declaration:): Fixed indentation. + (class_member_declaration:): Extra `;' after field declaration now + accepted. + (interface_declaration:): Removed debug messages in error reports. + (patch_binop): Nodes created and returned inherit the orignal + node's COMPOUND_ASSIGN_P flag value. + (patch_cast): Fix cast from char to floating point. + +1999-01-25 Andrew Haley + + * except.c, java-except.h (expand_resume_after_catch): new + function. + * expr.c (java_lang_expand_expr): call expand_resume_after_catch + to branch back to main flow of control after a catch block. + +1999-01-23 Kaveh R. Ghazi + + * Makefile.in (parse.o): Depend on $(CONFIG_H) and + $(srcdir)/../system.h. + (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h. + (jcf-parse.o): Depend on $(srcdir)/../toplev.h. + (jcf-write.o): Likewise. + (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. + (mangle.o): Depend on $(srcdir)/../toplev.h. + (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. + (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. + + * class.c: Include output.h and parse.h. + (mangled_classname): Add the `const' keyword to a char*. + (find_named_method): Hide unused function definition. + (build_utf8_ref): Change type of variable `c' to unsigned char. + Use ISALPHA/ISDIGIT instead of isalpha/isdigit. + (build_class_ref): Add the `const' keyword to a char*. + (layout_class_method): Remove unused variable `buf'. + + * decl.c (find_local_variable): Remove unused variable `rtl'. + (pushdecl): Likewise for variables `different_binding_level' and + `oldglobal'. + (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED. + (maybe_build_cleanup): Likewise for parameter `decl'. + + * except.c (expand_start_java_handler): Mark parameter `range' + with ATTRIBUTE_UNUSED. + + * expr.c: Include except.h. + (pop_type): Remove unused variable `i'. + (pop_value): Likewise for variables `n_words' and `i'. + (expand_java_arrayload): Likewise for variable `convert'. + (java_lang_expand_expr): Likewise for variables `op0', `type', + `mode', `unsignedp', `node' and `elements'. + (expand_byte_code): Likewise for variables `prev_eh_ranges' and + `eh_ranges'. + (process_jvm_instruction): Add a `const' qualifier to a char*. + + * gjavah.c (output_directory): Add the `const' keyword to a char*. + (temp_directory): Likewise. + (print_c_decl): Likewise. + (print_method_info): Likewise. + (decode_signature_piece): Likewise. + (print_mangled_classname): Likewise. + + * java-except.h: Provide prototypes for maybe_start_try, + maybe_end_try and add_handler. + + * java-tree.h (mangled_classname): Add the `const' keyword to a char*. + (parse_error_context): Likewise. Also add ATTRIBUTE_PRINTF_2. + (pushdecl_top_level, alloc_class_constant, unicode_mangling_length, + init_expr_processing, push_super_field, init_class_processing, + can_widen_reference_to, class_depth, verify_jvm_instructions, + maybe_pushlevels, maybe_poplevels, process_jvm_instruction, + set_local_type, merge_type_state, push_type, load_type_state, + add_interface, find_in_current_zip, append_gpp_mangled_classtype, + emit_unicode_mangled_name): Add prototypes. + + * jcf-dump.c (print_constant): Add the `const' keyword to a char*. + (print_signature_type): Use ISDIGIT, not isdigit. + (print_signature): Remove unused variable `j'. + + * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to + int when comparing against one. + + * jcf-parse.c: Include toplev.h. + + * jcf-write.c: Likewise. Don't include or . + (localvar_free): Remove unused variable `i'. + (generate_bytecode_conditional): Likewise for variable `kind'. + + * jv-scan.c: Include config.h and system.h. Remove redundant + OS header and gansidecl.h includes. + (warning): Add the `const' keyword to a char*. Also add + ATTRIBUTE_PRINTF_1 to the prototype. Check ANSI_PROTOTYPES, not + __STDC__, when determining whether to use ANSI-isms. + (fatal): Likewise. Also add ATTRIBUTE_UNUSED. + (xmalloc): Don't redundantly prototype here. + (main): Remove unused parameter `envp'. Also fix the arguments + passed to function `fatal' to match the format specifier. + + * lang.c (java_tree_code_name): Add the `const' keyword to a char*. + + * mangle.c: Include toplev.h. + (emit_unicode_mangled_name): Declare parameter `len'. + + * parse.y (parse_warning_context): Add the `const' keyword to a + char*. Also add ATTRIBUTE_PRINTF_2 to the prototype. Check + `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms. + (issue_warning_error_from_context): Add the `const' keyword to + a char*. + (parse_error_context): Likewise. Also check `ANSI_PROTOTYPES' + not `__STDC__' for whether to use ANSI-isms. + + * typeck.c (incomplete_type_error): Mark parameters `value' and + `type' with ATTRIBUTE_UNUSED. + (parse_signature_type): Use ISDIGIT, not isdigit. + + * verify.c (check_pending_block): Add the `const' keyword to a char*. + (verify_jvm_instructions): Likewise. Remove unused variables + `field_name' and `default_val'. + + * zextract.c: Include config.h and system.h. Remove redundant + OS header includes. + + * zipfile.h: Prototype `read_zip_archive'. + +1999-01-21 Andrew Haley + + * typeck.c (convert): Allow conversions to void type: some + optimizations in gcc do this. + +1999-01-21 Andrew Haley + + * typeck.c (convert_ieee_real_to_integer): New function. + (convert): When not using fast-math and using hardware fp, convert + an IEEE NaN to zero. + +1999-01-18 Andrew Haley + + * parse.y (patch_binop): Do a type conversion from signed to + unsigned and then back to signed when a ">>>" is found. + +1999-01-17 Alexandre Petit-Bianco + + * java-tree.h: (check_for_initialization): Added prototype. + * lex.c (java_parse_doc_section): `\n' breaks the `*/' string. + * parse.y (do_resolve_class): Removed unused locals. + (read_import_dir): Likewise. + (resolve_qualified_expression_name): Array creation + expressions are valid primary expressions. + (qualify_ambiguous_name): Likewise. + (patch_synchronized_statement): Removed unused local. + +1999-01-17 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (zextract.o): Add dependencies. + + * Makefile.in: Do not put ^Ls at the start of a line. + +1999-01-15 Per Bothner + + * expr.c (process_jvm_instruction): Coerce to correct Throwable + sub-type the result of the call that gets the exception value. + + * parse.y (java_complete_expand_methods): If flags_syntax_only, + don't call finish_class. + + * parse.y (java_check_regular_methods): If METHOD_PRIVATE, + clear found before continuing. + + * verify.c (verify_jvm_instructions): On an array load, allow + and handle top of stack to be TYPE_NULL. + + * gjavah.c (generate_access): Translate Java package private or + protected access to C++ public, but with a comment. + +1999-01-13 Andrew Haley + + * expr.c (generate_name): Name prefix changed to avoid clashes + with assembler temp labels. + + * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on + MODIFY_EXPR. Without this, code for the assignment may not be + generated at all and the synchronized statement will read an + uninitialized variable. + +1999-01-13 Alexandre Petit-Bianco + + * class.c (maybe_layout_super_class): Fixed returned value. + * lex.c: Added 1999 to the copyright. + (java_init_lex): Initialize java_lang_imported. + * lex.h: Added 1999 to the copyright. + * parse.h: Added 1999 to the copyright. + (REGISTER_IMPORT): Fixed typo in trailing macro. + (CURRENT_OSB): New macro. + (struct parser_ctxt): New fields osb_depth, osb_limit. + * parse.y (java_lang_id): New global variable. + (type_import_on_demand_declaration): Don't import java.lang.* twice. + (array_creation_expression:): Use CURRENT_OSB. + (dims:): Uses a stack to keep track of array dimensions. + (cast_expression:): Use CURRENT_OSB. + (find_expr_with_wfl): Return NULL if node found doesn't meet the + conditions. + (register_fields): Fixed typos in comment. + (check_method_redefinition): Fixed comment indentation. + (java_check_regular_methods): Set saved found wfl to NULL after + having reinstalled it in the previously found DECL_NAME. + +1999-01-10 Richard Henderson + + * gjavah.c (java_float_finite): Use a union to do type punning. + (java_double_finite): Likewise. + +1999-01-09 Per Bothner + + * parse.y (build_new_array_init): Don't set EXPR_WFL_LINECOL + on CONSTRUCTOR (since that trashes TREE_CST_RTL). + (patch_new_array_init): Clear TREE_CONSTANT also if INDIRECT_REF. + (register_fields): Set TREE_STATIC on NEW_ARRAY_INIT, not on + CONSTRUCTOR (which causes expand_expr to call output_constant_def). + * expr.c (java_lang_expand_expr): Check TREE_STATIC of NEW_ARRAY_INIT. + +1999-01-08 Per Bothner + + * check-init.c (check_init): If compiling to native, we don't + see THROW_EXPR. Instead, look for a call to throw_node (_Jv_Throw). + +1999-01-08 Tom Tromey + + * parse-scan.y (variable_declarator_id): Set or increment + bracket_count. + (bracket_count): New global. + (formal_parameter): Handle case where bracket pairs trail variable + declarator id. + +1999-01-07 Andrew Haley + + * jcf-parse.c (yyparse): variable len changed from a char to an + int to prevent overflow. + +1999-01-06 Per Bothner + + * java-tree.h: Declare read_class. + * jcf-parse.c (read_class): New function. + (load_class): Now just call read_class. + + * java-tree.h (java_parse_abort_on_error): Only return if new errors. + * jcf-parse.c (parse_source_file): Declare save_error_count, + which is needed by java_parse_abort_on_error macro, + * parse.y (java_layout_classes, java_expand_classes): Likewise. + + * parse.y (register_fields): Set TREE_STATIC flag of NEW_ARRAY_INIT + constructor, if initializing a static field. + (patch_new_array_init): Set TREE_CONSTANT if it is. + * expr.c (java_lang_expand_expr): For a static array constructor + of primitive elements, allocate the array itself statically. + Disabled until we can set the vtable field statically. + + * check-init.c: New file. Checks for definite assignment. + * Makefile.in (JAVA_OBJS): Add check-init.o. + * parse.y (java_complete_expand_method): Call check_for_initialization. + * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY): Moved to java-tree.h. + +1999-01-06 Graham + + * parse.y : include system.h instead of including + standard headers directly with the exception of . + +1999-01-06 Per Bothner + + * lex.h: Moved static function declarations to lex.c, + to shut up some -Wall warnings. + * lex.c: Static function declarations moved here. + * jcf-dump.c: Small fixes to shut up -Wall warnings. + +1999-01-05 Kaveh R. Ghazi + + * Make-lang.in ($(GCJ).o): Depend on prefix.h. + +1998-12-22 Per Bothner + + * expr.c (process_jvm_instruction): Do load_type_state after JSR. + * verify.c (verify_jvm_instructions): Fix off-by-one error. + + * jcf-write.c (CHECK_PUT): Add (void) cast to avoid -Wall warnings. + (localvar_alloc): Change return type to void, + (emit_unop): Remove unused variable size. + + * jcf-write.c (struct jcf_block): Add new union. + (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC): New macros. + (call_cleanups): New functions. + (struct jcf_partial): New fields num_finalizers and return_value_decl. + (generate_bytecode_insns): Support CLEANUP_POINT_EXPR and + WITH_CLEANUP_EXPR. Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR. + * lang.c (lang_init): Call using_eh_for_cleanups. + * parse.y (java_complete_lhs): For SYNCHRONIZED_EXPR, defer + completing operands to patch_synchronized_statement. + Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR. + (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and + WITH_CLEANUP_EXPR instead of TRY_EXPR. + +1998-12-20 John F. Carr + + * Make-lang.in: Comment out control-Ls; they upset some makes. + +1998-12-18 Tom Tromey + + * parse.y (check_class_interface_creation): Use DIR_SEPARATOR + consistently. + +1998-12-17 Tom Tromey + + * parse.y (DIR_SEPARATOR): New define. + (check_class_interface_creation): Use it. + + * parse-scan.y (report_main_declaration): Recognize + `java.lang.String' in argument to main. + +1998-12-16 Per Bothner + + * parse.y (create_interface): Remove bogus test. + +1998-12-16 Per Bothner + + * jcf-parse.c (get_constant): Set TREE_TYPE for string constants. + (HANDLE_CONSTANTVALUE): If flag_emit_class_files, call get_constant. + +1998-12-16 Tom Tromey + + * parse-scan.y (qualified_name): Use correct sprintf format. + +1998-12-15 Tom Tromey + + * gjavah.c (print_field_info): Changed how most negative number is + printed. + +1998-12-14 Per Bothner + + * parse.y (fold_constant_for_init): New function. + (resolve_expression_name): Don't replace static final + constant-initialized fields by its value. + (java_complete_lhs): New. Same as java_complete_tree, except does + not replace static final constant-initialized fields by their values. + (register_fields): If there is an initializer, set DECL_INITIAL and + MODIFY_EXPR_FROM_INITIALIZATION_P. + (java_complete_tree): For MODIFY_EXPR, use java_complete_lhs for lhs. + Only call patch_initialized_static_field if + MODIFY_EXPR_FROM_INITIALIZATION_P. + (patch_initialized_static_field): If not valid constant, clear + DECL_INITIAL. + + * parse.y (lookup_field_wrapper): Fix thinko. + + * parse.y (java_complete_tree): In EXPR_WITH_FILE_LOCATION, + set and restore global lineno. + +1998-12-14 Tom Tromey + + * gjavah.c (print_field_info): If value to print is the smallest + value of its size, then print as hex to avoid later warnings from + C++ compiler. + +1998-12-14 Tom Tromey + + * gjavah.c (decompile_method): Decompile `return null'. + (process_file): Generate `#pragma interface'. + (method_declared): New global. + (print_method_info): Set it. + (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set. + (print_method_info): Handle abstract methods. + +1998-12-13 Per Bothner + + * parse.y (patch_method_invocation): If class_decl is null + (e.g. an array type), use original type. + + * parse.y (check_thrown_exceptions): Temporary hack to suppress + errors about uncaught exception from clone (of array, specifically). + +1998-12-13 Tom Tromey + + * gjavah.c (decompile_method): Handle all types of `return' + opcode. Decompile `return this' and `return'. + (method_access): New global. + (print_method_info): Set it. + (decompile_method): Don't decompile a synchronized method. + +1998-12-13 Tom Tromey + + * jcf-reader.c (jcf_parse_one_method): Recognize + HANDLE_END_METHOD. + * gjavah.c (HANDLE_END_METHOD): New macro. + (HANDLE_CODE_ATTRIBUTE): New macro. + (decompile_method): New function. + (print_method_info): Don't print `;\n' at end of function decl. + Include java-opcodes.h. + (decompiled): New global. + +1998-12-12 Per Bothner + + * class.c (build_class_ref): Handle PRIMTYPE.class if + flag_emit_class_files. + * expr.c (expand_java_field_op): Don't optimize java.lang.XXX.TYPE + if flag_emit_class_files. + * parse.y (java_complete_tree): Pre-liminary support for + COMPONENT_REF - only to handle PRIMCLASS.TYPE. + + * parse.y (patch_synchronized_statement): Don't call monitorexit + unless block CAN_COMPLETE_NORMALLY. Propagate that flag properly. + + * java-tree.h (DECL_LOCAL_STATIC_VALUE): Removed - no longer used. + + * zipfile.h (opendir_in_zip): New declaration. + * jcf-io.c (saw_java_source): Moved to jcf-parse.c. + (opendir_in_zip): New function, using code from open_in_zip. + (open_in_zip): Call opendir_in_zip. + (find_class): Remove no-longer-used do_class_file parameter, + but add source_ok parameter. Change logic so if we find a .java file, + we don't look for .class in later classpath emtries. + * jcf-parse.c (load_class): Pass saw_java_source to find_class. + (jcf_figure_file_type): Only call open_in_zip if correct magic number. + * gjavah.c: Update call to find_class. + * jcf-dump.c: Likewise. + + * jcf-write.c (put_linenumber): Handle duplicate line numbers. + (generate_bytecode_insns): For EXPR_WITH_FILE_LOCATION, do + nothing if body is empty_stmt_node. + Various little fixes so SP gets correctly adjusted. + For NEW_ARRAY_INIT, handle IGNORE_TARGET. + For CALL_EXPR, test if static first. + (generate_classfile): Ignore fields that are DECL_ARTIFICIAL, + such as the ones we create for Object and Class. + Set and restore current_function_decl. + * parse.y: Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir. + (note_possible_classname): New function. + (read_import_entry): Removed. Merged with read_import_dir. + (read_import_dir): Don't call find_class - that only gives us + the first classpath entry having the needed package. + Use the struct buffer data structure from buffer.h. + (read_import_dir, find_in_imports_on_demand): The remembered + class names now use '.' (not '/') as package separator. + + * parse.y (java_complete_expand_methods): Call write_classfile + here, and not in java_expand_classes (which only gets first class). + +1998-12-12 Alexandre Petit-Bianco + + * parse.y (): Do maybe_generate_clinit last. + (register_fields): If a static fields has an initializer, just + chain it on ctxp->static_initialized, and handle later. + (java_complete_expand_methods): Force first. + (resolve_expression_name, resolve_field_access): Just get DECL_INITIAL + - it's already been completed. + (patch_initialized_static_field): New function. + (java_complete_field): Call it. + +1998-12-12 Per Bothner + + * expr.c (encode_newarray_type, build_new_array): New functions. + * java-tree.h: Declare build_new_array. + * jcf-write.c (patch_newarray): Use build_new_array. + + * expr.c (java_lang_expand_exp): Support NEW_ARRAY_INIT. + * jcf-write.c (generate_bytecode_insns): Support NEW_ARRAY_INIT. + + * parse.y (patch_new_array_init): Re-organize. + Now is passed the actual array (pointer) type of the value. + Set the type of the CONSTRUCTOR to be an ARRAY_TYPE. + (patch_array_constructor): Removed - merged into patch_new_array_init. + (java_complete_tree): Update patch_new_array_init. + + * jcf-write.c (find_constant_index): New function. + (generate_bytecode_insns): Use find_constant_index. + (generate_classfile): Use find_constant_index for ConstantValue. + +1998-12-11 Tom Tromey + + * expr.c (invoke_build_dtable): Renamed dtable -> vtable. + * decl.c (init_decl_processing): Renamed dtable -> vtable. + * class.c (make_class_data): Renamed dtable -> vtable, and + dtable_method_count -> vtable_method_count. + +1998-12-10 Alexandre Petit-Bianco + + * decl.c (long_zero_node, float_zero_node, double_zero_node): New + global variables, initialized. + * java-tree.h (long_zero_node, float_zero_node, double_zero_node): + Declared new global variables. + * lex.c (java_lex): Return long_zero_node, float_zero_node, + double_zero_node, integer_zero_node upon direct matching. + * parse.y (purify_type_name): Added function prototype. + (duplicate_declaration_error_p): Consider new_type as potentially + being a incomplete type. Use purify_type_name on type string. + (method_header): saved_type: unused variable removed. Don't figure + return type if method name is invalid. + (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was + processed by patch_unaryop. + (patch_unaryop): Fixed typo in comment. Re-convert pre/post + increment/decrement node into its original type after binary + numeric promotion on its operands. + +1998-12-10 Alexandre Petit-Bianco + + * parse.y (array_initializer:): Array init operand is NULL_TREE + instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is + now an error. Fixed indentation problems. + (patch_string): Handle error_mark_node as an argument. + (patch_new_array_init): Fixed indentation problems. + (array_constructor_check_entry): Removed check on null wfl_value. + Return an error if wfl_value's walk returns an error. + +1998-12-09 Alexandre Petit-Bianco + + * java-tree.def (NEW_ARRAY_INIT): New Java tree code. + * lex.c (java_lex): Remember column position before advancing one + token. Retain location information on OCB_TK. + * lex.h (typedef struct java_lc): Added new field. + * parse.h (GET_SKIP_TYPE): New macro. + (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE. + * parse.y (build_new_array_init, patch_new_array_init, + patch_array_constructor, maybe_build_array_element_wfl, + array_constructor_check_entry): New function prototypes. + (switch_block:): Tagged . + (OCB_TK): Tagged . + (array_initializer:): Installed actions. + (variable_initializer): Build location information on element if + necessary. + (switch_statement:): Fixed indentation typo. + (switch_block:): Redefined default action. + (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:. + (patch_assignment): Removed duplicate code. + (maybe_build_array_element_wfl, build_new_array_init, + patch_new_array_init, patch_array_constructor, + array_constructor_check_entry): New functions. + +1998-12-07 Alexandre Petit-Bianco + + * parse.y (array_initializer): Tagged . + (variable_initializer:): Use default rule. + (array_initializer:): Defined actions. + (variable_initializers:): Likewise. + (resolve_qualified_expression_name): Use DECL_CONTEXT to build + non-static field accesses. + (patch_invoke): Fixed indentation typo. + (java_complete_tree): Likewise. + (build_labeled_block): Changed leading comment. Generate an error + in case of duplicate loop labels. + (patch_conditional_expr): Patch results of string concatenation + operations. + +1998-12-06 Per Bothner + + * constants.c (find_methodref_index): When the class is an interface, + generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef. + + * decl.c (finit_identifier_node): Use "$finit$", rather than + "" (which Sun's verifier rejects). + * parse.y (maybe_generate_finit): Leave out meaningless final flag. + (generate_field_initialization_code): Removed. + (fix_constructors) Don't add call to $finit$ here (wrong order). + (patch_method_invocation): Add $finit$ call here. + + * java-tree.h (CALL_USING_SUPER): New macro. + * parse.y (patch_invoke): Remove im local variable. + (patch_method_invocation, patch_invoke): Don't pass super parameter. + (patch_invoke): Use CALL_USING_SUPER instead of from_super parameter. + (resolve_qualified_expression_name): Maybe set CALL_USING_SUPER. + + * jcf-write.c (get_access_flags): Fix typo ACC_PUBLIC -> ACC_FINAL. + + * parse.y (java_complete_tree): Don't complain about unreachable + statement if it is empty_stmt_node. + + * jcf-write.c (find_constant_wide): New function. + (push_long_const): Use find_constant_wide. + + * jcf-write.c (generate_bytecode_insn): Fix bug in switch handling. + (generate_bytecode_insn): Use correct dup variant for MODIFY_EXPR. + Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set. + Emit invokeinterface when calling an interface method. + Emit invokespecial also when calling super or private methods. + + * jcf-write.c (generate_classfile): Emit ConstantValue attributes. + +1998-12-06 Per Bothner + + * jcf-dump.c (INVOKE): If invokeinterface, print number of args. + +1998-12-03 Alexandre Petit-Bianco + + * java-tree.h (java_layout_seen_class_methods): New function + prototype. + (LAYOUT_SEEN_CLASS_METHODS): Macro removed. + * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods. + * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro. + * parse.y (method_declarator:): Defined action. + (issue_warning_error_from_context): input_filename saved, set to + the appropriate value and restored after java_error is called. + (build_unresolved_array_type): Fixed comment. + (register_fields): Use PROMOTE_RECORD_IF_COMPLETE. + (method_header): Deal with return type the same way type are + handled for fields and method's parameters and local variables + types are handled. + (check_method_redefinition): Removed extra CR. + (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE. + (java_layout_seen_class_methods): New function. + (java_layout_classes): Call java_layout_seen_class_methods. + +1998-12-03 Per Bothner + + * parse,y (patch_synchronized_statement): Set CAN_COMPLETE_NORMALLY. + +1998-12-03 Per Bothner + + * jcf-dump.c (main): Fix error message. + * jcf-path.c (add_entry): Style fix. + +1998-12-02 Alexandre Petit-Bianco + + * class.c (layout_class_method): Call build_java_argument_signature + on constructors too. + * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE. + (patch_method_invocation): Define a primary when resolving an + expression name. Augmented comment on code checking illegal `this' + usage. Loosened it test by accepting NEW_CLASS_EXPR. + +1998-12-01 Alexandre Petit-Bianco + + * class.c (layout_class_method): Don't report error on non-static + overriding static if the method is private. + * java-tree.h (finish_class): Prototype added. + * lex.c (java_get_line_col): Handle col argument -2 value. + * parse.h: All static method declarations moved to parse.y. + * parse.y: Now contains all static method declarations previously + found in parse.h. + (find_expr_with_wfl, missing_return_error, + unreachable_stmt_error): New functions. + (java_get_real_method_name): Identify constructors bearing class + names in source code compiled classes only. + (java_complete_expand_methods): Call missing_return_error. + (invocation_mode): Private methods invoked as static methods. + (java_complete_tree): Call unreachable_stmt_error. + +1998-12-01 Tom Tromey + + * Makefile.in (+target): Removed. + (+xmake_file): Likewise. + (+tmake_file): Likewise. + (.NOEXPORT): Removed duplicate. + +1998-11-27 Kaveh R. Ghazi + + * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK). + + * jv-scan.c: Fix xmalloc prototype. Provide an xmalloc definition. + + * jvgenmain.c: Remove the xmalloc prototype, we get it from + libiberty.h. Provide an xmalloc definition. + + * jvspec.c: Remove the xmalloc prototype. + + * parse-scan.y: Include config.h and system.h. Don't include + OS headers or gansidecl.h. Don't prototype xmalloc/xstrdup. + Provide an xstrdup definition. + +1998-11-26 Alexandre Oliva + + * jcf-path.c (add_entry): Recognize ".jar" too. + * lang-specs.h: Likewise. + +1998-11-26 Per Bothner + + * jcf-write.c (generate_bytecode_insns): In Call_EXPR, handle + soft_monitorenter_node, soft_monitorexit_node, throw_node. + + * jcf-write.c (generate_bytecode_insns): + Handle pre/post-increment/decrement of long. + + * jcf-write.c (generate_bytecode_insns): + Handle missing exception handler (finally for synchronized). + +1998-11-25 Per Bothner + + * java-tree.h (end_params_node): Declare global. + * decl.c (end_params_node): New global. + (init_decl_processing, start_java_method): Use end_params_node for + end of list of parameter types. Follows correct gcc conventions. + * expr.c (pop_argument_types, pop_arguments): Likewise. + * lang.c (put_decl_node): Likewise. + * typeck.c (various places): Likewise. + * class.y (various places): Likewise. + * parse.y (various places): Likewise. + + * parse.y (java_complete_tree): Move CAN_COMPLETE_NORMALLY. + (build_jump_to_finally): Add missing CAN_COMPLETE_NORMALLY. + + * class.c: Add #include flags.h, remove no-longer needed declaration. + + * class.c (layout_class_method): Remove commented-out code, re-format. + Don't add vtable entry (or index) for private methods. + * expr.c (expand_invoke): A private method is implicitly final. + * class.c (make_class_data): If inlining or optimizing, + skip private methods. + + * class.c (finish_class): New function. Calls existing methods, + but alls emits deferred inline functions. + * jcf-parse.c (parse_class_file): Call finish_class. + * parse.y (java_complete_expand_methods): Likewise. + + * expr.c (build_java_binop): Explicit default, to silence -Wall. + + * expr.c (CHECK_PC_IN_RANGE): Add void cast to kill warnings. + +1998-11-25 Marc Espie + + * jcf-write.c (generate_bytecode_conditional): Fix typo. + +1998-11-24 Per Bothner + + * (generate_classfile): Always write class access flag with + ACC_SUPER set. + +1998-11-24 Alexandre Petit-Bianco + + * class.c (maybe_layout_super_class): New function. + (layout_class): Reorganized. Loop on class methods dispatched into + a new function. Call maybe_layout_super_class. + (layout_class_methods, layout_class_method): New functions. + * expr.c (expand_java_NEW): Call layout_class_methods on loaded + class. + (expand_invoke): Likewise. + * java-tree.h (all_class_list): New global variable declared. + (layout_class_methods, layout_class_method): New function + prototypes. + (LAYOUT_SEEN_CLASS_METHODS): New macro. + * jcf-parse.c (all_class_list): New global variable. + (load_class): Extended what class_or_name can be. Use parser + context mechanism to save globals before calling jcf_parse. + (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P + is set on the file name. + (jcf_parse): Layout class methods when Object is loaded, otherwise + record class in all_class_list for delayed method layout. + (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS. + * lang.c (put_decl_node): Decode into the decl context + class name. + * lex.c (java_allocate_new_line): Use xmalloc. + * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete + pointers, not TREE_LIST elements. + (struct parser_ctxt): Fixed comment indentations, added comments + and reordered some fields. + (java_check_methods): Function prototype removed. + * parse.y (java_push_parser_context): Use xmalloc. + (java_parser_context_restore_global): Pop extra pushed ctxp only + when there's nothing next. + (maybe_create_class_interface_decl): Fixed comment, add new + created class decl to all_class_list. + (method_header): Use GET_REAL_TYPE on argument's types. + (method_declarator): Use GET_REAL_TYPE, change type to the real + type in TREE_LIST dependency node. Build argument list with the + real type. + (create_jdep_list): Use xmalloc. Removed allocation error message. + (obtain_incomplete_type): Fixed leading comment. Broadened + incoming argument meaning. + (register_incomplete_type): Use xmalloc. Removed allocation error + message. + (safe_layout_class): Fixed leading comment. + (jdep_resolve_class): Reversed if statement condition and switch + if and else bodies. + (resolve_and_layout): Fixed leading comment. Broadened incoming + argument meaning. + (complete_class_report_errors): New local variable name, for + clarity. purify_type_name used for all error cases. + (java_get_real_method_name): Stricter check on constructors. + (java_check_regular_methods): Reverse methods list only if not + already laid out. Layout artificial constructor. + (java_check_methods): Deleted. + (source_start_java_method): Obtain incomplete type for patchable + method arguments. + (java_layout_classes): Fixed leading comment. Use + LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else + statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS + before returning. Fixed comments. + (java_expand_classes): Check for errors up front. + (patch_method_invocation): Class to search is resolved and laid + out. + +1998-11-24 Per Bothner + + * expr.c (java_lang_expand_expr): Add missing emit_queue. + + * javaop.h (int8): Removed - not used. + (jbyte): Redefine portably with correct signedness. + + * jcf-write.c (generate_bytecode_insns): Don't free sw_state.cases. + + * jcf-write.c (generate_bytecode_insns): Fix typo + OPCODE_getstatic to OPCODE_getfield. + + * java-tree.def (CASE_EXPR, DEFAULT_EXPR): Kind is 'x', not '1'. + * parse.y (java_complete_tree): For CASE_EXPR and DEFAULT_EXPR, + set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them). + +1998-11-19 Alexandre Petit-Bianco + + * jcf-parse.c (jcf_parse_source): Function returned type is + void. Added prototype. + (jcf_parse): Function returned type is void. + (yyparse): Remove call to fclose on the last parsed file. + + * java-tree.h (jcf_parse): Changed jcf_parse prototype. + +1998-11-18 Alexandre Petit-Bianco + + * class.c (unmangle_classname): Set QUALIFIED_P when appropriate. + (layout_class): Cope with methods featuring WFL in decl names. + * decl.c (unqualified_object_id_node): New global variable, + initialized. + (build_decl_no_layout): Removed. + * expr.c (build_primtype_type_ref): Handle Double. + (java_lang_expand_expr): Fixed indentations. + * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted. + (flag_wall, flag_redundant, flag_not_overriding, + flag_static_local_jdk1_1, unqualified_object_id_node): Global + variable declarations. + (build_decl_no_layout): Removed prototype. + (java_get_real_method_name): Added prototype. + (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P. + (java_parse_abort_on_error): Macro now just returns. + * jcf-parse.c (jcf_parse_source): Check fclose returned + value. Call emit_register_classes if java_report_errors returns + zero. + * lanc.c (flag_wall, flag_redundant, flag_not_overriding, + flag_static_local_jdk1_1): New integer flags. + (lang_decode_option): New flags set here. + * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros. + (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to + the flag_redundant variable. + (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object + when parsing java.lang.Object class. + (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal + NULL_TREE to build. + (resolve_qualified_expression_name): Fixed indentation. + (patch_array_ref): Changed prototype. + (not_initialized_as_it_should_p): Prototype removed. + (java_report_errors): Added function prototype. + * parse.y (formal_parameter:): Changed error message for not yet + supported final parameters. + (class_type_list:): Set both PURPOSE and VALUE of created + TREE_LIST to be class_type. + (primary_no_new_array:): Handle class literals on primitive types. + (parse_warning_context): Reinstalled correct force_error and + do_warning flags setups. + (java_report_errors): Changed prototype. Return java_error_count + value. + (variable_redefinition_error): Consider treating variable type as + a fake pointer. + (create_interface): Warn about redundant abstract modifier if + flag_redundant is set. Changed error message. + (lookup_field_wrapper): Save/restore globals before/after looking + up field. + (duplicate_declaration_error_p): Consider treating declaration + type as a fake pointer. + (register_fields): Extract real type from dependency node. Check + for duplicate field declaration after type adjustment. Use + DECL_INITIAL to store static final initialized values. + (method_header): Extract real function type from dependency node. + (check_abstract_method_header): Use GET_METHOD_NAME. + (obtain_incomplete_type): Layout fake pointer type. + (safe_layout_class): Don't try to check for methods before layout. + (java_complete_class): Don't check for correct throws clause + elements inheritance here. + (resolve_and_layout): Broadened name parameter meaning. + (reset_method_name): Use GET_METHOD_NAME. + (java_get_real_method_name): New function. + (java_check_regular_methods): Don't check methods in + java.lang.Object. Verify lineage of throws clause elements. Use + flag_no_overriding in warning report. + (check_throws_clauses): Don't check if class was from + bytecode. Use IS_UNCHECKED_EXCEPTION_P macro. + (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag. + (declare_local_variables): Use flag_static_local_jdk1_1 to report + warning on unsupported final local variables. Use build_decl + instead of build_decl_no_layout. Get real local variable type from + dependency node. + (source_start_java_method): Get real parameter type from + dependency node. Call build_decl instead of build_decl_no_layout. + (java_layout_classes): Reverse tree and layout type and class as + required. Mark class as loaded when done. + (resolve_field_access): Fixed indentation. Restricted condition + leading to static field access code generation. Set field_type + decl's TREE_TYPE if QUAL_DECL_TYPE not available. + (resolve_qualified_expression_name): Initialize type_found to + null. Handle static field resolved during qualification. Fixed + layout on non primitive field decl types. + (not_accessible_p): Fixed typo in comment. + (patch_method_invocation): Resolve and layout class to search from + type. + (lookup_method_invoke): Keep integer constant 0 as is. Resolve and + layout non primitive type, if necessary. Make method node only to + report errors. + (find_applicable_accessible_methods_list): Consider WFL'ed method + decl names. Fixed indentation. + (argument_types_convertible): Resolve and layout target type if + necessary. + (java_complete_tree): Fixed indentation problems. Rewrote + CALL_EXPR thrown exceptions check. Re-installed further processing + of the assignment in certain cases. + (patch_assignment): Call maybe_build_primttype_type_ref to perform + inlining on class literals. + (valid_builtin_assignconv_identity_widening_p): Cope with constant + 0 literal. + (valid_method_invocation_conversion_p): Likewise. + (patch_string): Temporary disable forbidden use of `this' in + explicit constructor invocations when doing string concatenation + within their scope. + (patch_unaryop): Added comment. Reinstalled code to disable + further check on assignment operation with cast expression RHS. + (patch_switch_statement): Fixed indentation. + (build_try_statement): Call build_decl instead of + build_decl_no_layout. + (patch_synchronized_statement): Likewise. + (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of + IS_UNCHECKED_EXPRESSION_P. + (check_thrown_exceptions_do): Changed leading comment. Resolve and + layout argument exception type. + (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead + of IS_UNCHECKED_EXPRESSION_P. + +1998-11-18 Anthony Green + + * jcf-parse.c (yyparse): Open class file in binary mode. + +1998-11-15 Per Bothner + + * jvgenmain.c: Need to #include "gansidecl.h" (to get PROTO). + + * jcf-write.c (perform_relocations): Move check out one loop. + +1998-11-15 Anthony Green + + * Make-lang.in: Fix reference to srcdir. + * jv-scan.c: Add missing xmalloc prototype. + * jvgenmain.c: Ditto. + +1998-11-15 Per Bothner + + * decl.c (error_mark_node), java-tree.h: New global. + * parse.y: Use empty_stmt_node instead of size_zero_node. + (build_if_else_statement): If missing else, use empty_stmt_node. + + * parse.y (not_initialized_as_it_should_p): Removed, with its callers. + (java_complete_expand_method): Complain if return is missing. + (java_check_regular_methods): Comment out incorrect error check. + (not_accessible_p): Fix incorrect handling of protected methods. + (patch_method_invocation): Pass correct context to not_accessible_p. + (find_applicable_accessible_methods_list): Likewise. + (qualify_ambiguous_name): If ARRAY_REF, it's an expression name. + (java_complete_tree): For CASE_EXPR and DEFAULT_EXPR, set + TREE_TYPE (to void_type_node); otherwise expand_expr crashes. + (patch_if_else_statement): Fix setting of CAN_COMPLETE_NORMALLY. + + * jcf-write.c (CHECK_OP, CHECK_PUT): Add some error checking. + (push_int_const): Remove reundant NOTE_PUSH. + (generate_bytecode_insns - case STRING_CST): Do NOTE_PUSH. + (- case SWITCH_EXPR): Fix code generation bug. + (- case PREDECREMENT_EXPR etc): Remove redundant NOTE_PUSH. + (generate_classfile): More robust for abstract methods. + +1998-11-15 Anthony Green + + * Makefile.in: jv-scan and jvgenmain all require libiberty. + * Make-lang.in: Ditto. + + * jv-scan.c: Remove xmalloc and xstrdup definitions. + * jvgenmain: Ditto. + +1998-11-15 Per Bothner + + * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): New macro. + + * jcf-io.c (find_class): Simpler/cleaner structure fixes a bug. + +1998-11-14 Per Bothner + + Allow uses of interface types to verify. This is not really + type-safe, but it matches what Sun does, and is OK as long as + there are appropriate run-time checks. + * verify.c (merge_types): If merging two interface types, + just set the result to java.lang.Object. + * expr.c (pop_type): Any interface is matches by java.lang.Object. + +1998-11-13 Tom Tromey + + * gjavah.c (main): Handle --output-class-directory argument. + * jvspec.c (lang_specific_driver): Translate `-d' into + -foutput-class-dir. + * jcf.h (jcf_write_base_directory): Declare. + * lang.c (lang_decode_option): Recognize -foutput-class-dir. + * lang-options.h: Mention -foutput-class-dir. + * jcf-write.c (jcf_write_base_directory): New global. + (make_class_file_name): Put generated .class file into `-d' + directory, or into source directory if -d not given. Function now + static. + (write_classfile): Free class file name. Handle case where class + file name is NULL. + (DIR_SEPARATOR): New macro. + Include + + * Makefile.in (prefix): New macro. + +1998-11-12 Per Bothner + + * parse.y (patch_invoke): Do less if flag_emit_class_files. + * expr.c (build_known_method_ref): Don't check flag_emit_class_files + here (done in patch_invoke instead). + (case_identity): Moved here from parse.y. + + * java-tree.h (CAN_COMPLETE_NORMALLY): New macro. + * parse.y (java_complete_tree etc): Maybe set CAN_COMPLETE_NORMALLY. + * parse.y (java_complete_tree): Re-order COMPOUND_EXPR in BLOCK + so they can be efficiently scanned without recursion. + Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR. + * expr.c (java_lang_expand_expr): Expand statements of COMPOUND_EXPR + in BLOCK iteratively, rather than recursively. + + * parse.y (do_unary_numeric_promotion): New function. + (patch_unaryop, patch_binop, patch_array_ref): Use it. + + * parse.y (patch_newarray): Various fixes. + + Re-do handling of switch statements (for proper block scoping). + * parse.y: Add just a single block for the enture switch block, + but don't create any "case blocks". + (group_of_labels): Rmeoved unneeded non-terminal. + CASE_EXPR and DEFAULT_EXPR are added to current block. + * expr.c (java_lang_expand_expr): Inline SWITCH_EXPR here. + Now also need to handle CASE_EXPR and DEFAULT_EXPR. + * java-tree.h (SWITCH_HAS_DEFAULT): New macro. + * parse.y (wfl_operator, print_int_node): Make non-static. + (java_complete_tree): CASE_EXPR and DEFAULT_EXPR are now processed + as part of recursive scan of block. + (java_expand_switch ): Removed - inlined into java_lang_expand_expr. + (patch_switch_statement): Most tests move dinto java_complete_tree. + + * parse.y: Make various production be non-typed (void). + * parse.y (parse_error): Merged into issue_warning_error_from_context. + * parse.y (add_stmt_to_compound): Don't create/change extra node. + (patch_method_invocation_stmt): Renamed to patch_method_invocation. + + * jcf-write.c (struct jcf_handler): New type. + (struct jcf_switch_state): New type. + (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC): New relocation kinds. + (alloc_handler, emit_unop, emit_reloc): New functions. + (adjust_typed_op): Add extra parameter ("max type" offset). + (emit_switch_reloc, emit_case-reloc): New function. + (generate_bytecode_conditional): Handle REAL_TYPE comparisons. + (generate_bytecode_insns): Support REAL_CST, switch statements, + exception handling, method calls, object/array creation, and more. + + * class.c: Remove some unused variables. + * constants.c (find_string_constant): New function. + (count_constant_pool_bytes): Fix to correctly handle wide constants. + * decl.c (complete_start_java_method): Don't _Jv_InitClass + if flag_emit_class_files. + +1998-11-12 Tom Tromey + + * jcf-io.c (find_class): Added explanatory comment. + + * jcf-path.c (add_entry): Look for `.zip' at end of filename. Add + trailing slash to `.zip' entries. + + * jvspec.c (lang_specific_driver): Correctly handle case where + GC_NAME not defined. + +1998-11-11 Tom Tromey + + * jvspec.c (GC_NAME): New define. + (lang_specific_driver): Use GC_NAME. Add GC_NAME to command line + if required. + * Make-lang.in (jvspec.o): Define WITH_GC_. + +1998-11-11 Per Bothner + + * jcf-dump.c (TABLE_SWITCH): Fix typos. + +1998-11-11 Tom Tromey + + * jcf-dump.c (main): Correctly recognize `--'-style long options. + +1998-11-10 Alexandre Petit-Bianco + + * class.c (is_compiled_class): Call safe_layout_class for class + compiled from source. + * conver.h (convert_to_integer, convert_to_real, + convert_to_pointer): Added prototypes. + * decl.c (init_decl_processing): Non longer push the decls of + `methodtable', `constants', `Class', `Field', `dispatchTable' + `jexception' and `Method'. + * expr.c (build_invokeinterface): New function. + (expand_invoke): static variable CLASS_IDENT now in + build_invokeinterface. Use build_invokeinterface. + (expand_java_field_op): Moved code to inline + java.lang.PRIMTYPE.TYPE into a function. + (build_primtype_type_ref): New function. + * java-tree.def (INSTANCEOF_EXPR): New tree code. + * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED, + FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros. + (DECL_CONSTRUCTOR_P): Fixed typo in comment. + (DECL_LOCAL_STATIC_VALUE): New macro. + (build_invokeinterface, build_primtype_type_ref): New function + prototypes. + (java_parse_abort_on_error): Macro rewritten. + * jcf-parse.c (current_method): Add comment to declaration. + (parse_zip_file_entries, process_zip_dir, void parse_source_file): + Function prototypes fixed. + (jcf_parse_source): push/pop parser context. save/restore global. + (parse_source_file): Fixed leading comment. Now take a + IDENTIFIER_NODE as an argument. Doesn't check methods, layout + classes and pop the parser context anymore. + (yyparse): Push parser context, save globals, parse the source + file, restore globals and pop the parser context when processing a + source file. + * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define. + * lex.c (java_parse_doc_section): New function. + (java_lex): Call java_parse_doc_section when appropriate. Build an + operator around INSTANCEOF_TK. + * lex.h (java_lineterminator, java_sprint_unicode, + java_unicode_2_utf8, java_lex_error, java_store_unicode): + Prototypes rewritten. + (java_parse_escape_sequence, java_letter_or_digit_p, + java_parse_doc_section, java_parse_end_comment, java_get_unicode, + java_read_unicode, java_store_unicode, java_read_char, + java_allocate_new_line, java_unget_unicode, java_sneak_unicode): + Added function prototypes. + * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG + define. + (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT): + New macros + (struct parser_ctxt): New fields: deprecated, + current_parsed_class_un, gclass_list. + (fix_method_argument_names, issue_warning_error_from_context, + resolve_package, lookup_package_type): New function prototypes. + (resolve_expression_name): Fixed function prototype. + (find_applicable_accessible_methods_list): Fixed indentation, added + extra argument in prototype. + (check_final_assignment, build_null_of_type, check_deprecation, + check_method_redefinition, reset_method_name, + java_check_regular_methods, java_check_abstract_methods, + maybe_build_primttype_type_ref): New function prototype. + * parse.y (conver.h): Include. + (INSTANCEOF_TK): Tagged . + (single_type_import_declaration): Use REGISTER_IMPORT macro. + (relational_expression:): Build binop for instanceof. + (java_push_parser_context): Remember ctxp->gclass_list across + contexts. + (java_pop_parser_context): Simply return if no context + exists. Remember gclass_list across contexts. + (issue_warning_error_from_context): New function. + (parse_error_context): Don't setup ctxp->elc here. Call + issue_warning_error_from_context instead. + (parse_warning_context): Likewise. + (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL + setup. Link new class/interface to ctxp->gclass_list. + (add_superinterfaces): Register interface as incomplete if not + loaded. + (create_class): Remember class unqualified name in + ctxp->current_parsed_class_un. Check class deprecation. + (register_fields): Check field deprecation. Remember static final + field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part + processing INIT. + (method_header): New local variable ORIG_ARG. Use unqualified + current class name for check on constructor errors. Promote return + type if of record type. Argument list fix moved in + fix_method_argument_names, called here. Check method deprecation. + (fix_method_argument_names): New function. + (method_declarator): Promote record typed arguments. + (safe_layout_class): Check class methods before layout. + (java_complete_class): Compute field layout when patched. + (do_resolve_class): Try to load class after having it renamed + after the package name. + (get_printable_method_name): Use DECL_CONTEXT. + (reset_method_name): New function. + (check_method_redefinition): Use reset_method_name. + (java_check_regular_methods): New local variable + SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method + names for error report. Check for compile-time error when method + found has default (package) access. + (java_check_abstract_methods): Now takes an interface DECL node as + an argument. Also reinstall real name on unchecked + overriding/hiding methods for error report. + (java_check_methods): Fixed leading comment. Get classes to verify + from ctxp->gclass_list. Use CHECK_METHODS macro and set + CLASS_METHOD_CHECKED_P on class verification. + (lookup_java_method2): Get real method name if necessary. + (find_in_imports): Don't check package class access here. + (resolve_package, lookup_package_type): New functions. + (java_layout_classes): Fixed leading comment. Take classes to be + laid out from ctxp->gclass_list. + (java_complete_expand_methods): Don't expand native and abstract + methods. + (java_expand_classes): New function. + (resolve_expression_name): Use additional argument ORIG. Retrieve + values of static final field of primitive types. + (resolve_field_access): Handles static final field of promotive + type. + (resolve_qualified_expression_name): Handle STRING_CST as + primaries and package name resolution. Check deprecation on found + decls. Set where_found and type_found on non static field resolved + during qualification. Layout non primitive field decl types. + (check_deprecation): New function. + (maybe_access_field): Simplified. + (patch_method_invocation_stmt): Local variable CLASS_TYPE + removed. Reverse method's argument when primary is a type. Don't + use CLASS_TYPE to report problems, use IDENTIFIER_WFL + instead. Include abstract class in the list of class searchable + for constructors. Use DECL_CONTEXT of found method for access + checks. Check method deprecation. + (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when + converting arguments. Handle INVOKE_INTERFACE. + (lookup_method_invoke): Search constructor using existing + infrastructure (don't rely on lookup_java_constructor anymore). + (find_applicable_accessible_methods_list): Extra argument flag + LC. Now include constructor in the search. + (qualify_ambiguous_name): Conditional expression are primaries. + (not_initialized_as_it_should_p): static final are always + initialized. + (java_complete_tree): Pass extra NULL argument to + resolve_expression_name. Stricter test to carry on patching + assignments. New case for INSTANCEOF_EXPR. + (complete_function_arguments): Inline PRIMTYPE.TYPE read access. + (check_final_assignment, maybe_build_primttype_type_ref): New + functions. + (patch_assignment): Detect resolved static finals and carry normal + assignment error check on them. Inline PRIMTYPE.TYPE read access. + (try_builtin_assignconv): Access constant 0 on all primitive + types. + (valid_builtin_assignconv_identity_widening_p): Accept identical + types. Accept all promoted type on int type. + (valid_ref_assignconv_cast_p): Accept a null pointer to be + assigned to a reference. + (valid_method_invocation_conversion_p): Accept to check null + pointers. + (build_binop): Merge declaration and initialization of local + variable BINOP. + (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all + numeric types. Improved validity test for qualify operators on + references. + (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR + and PREINCREMENT_EXPR. Also detect resolved static finals of a + primitive type and issue the appropriate error message. + (resolve_type_during_patch): Mark class loaded when resolved. + (patch_cast): Allow null to be cased to reference types. + (build_null_of_type): New function. + (patch_array_ref): Handle array on references correctly. + (patch_return): Removed unused local variable MODIFY. Force + boolean to be returned as integers. Allows null to be returned by + a function returning a reference. + * typeck.c (convert_to_integer, convert_to_real, + convert_to_pointer): Prototypes moved to convert.h + (lookup_argument_method): Use method real name, if necessary. + +1998-10-30 Tom Tromey + + * class.c (build_class_ref): Changed name of primitive classes to + start with `_Jv_'. + + * class.c (make_class_data): Renamed fields: nmethods to + method_count, method_count to dtable_method_count. Always set + `state' field to 0. + * decl.c (init_decl_processing): Likewise. + +1998-10-28 Alexandre Petit-Bianco + + * class.c (layout_class): Don't mangle , produce + __finit instead. Don't verify artificial methods. + * decl.c (finit_identifier_node): New declared global. + (init_decl_processing): finit_identifier_node initialized. + * java-tree.def (CONDITIONAL_EXPR): New Java tree code. + * java-tree.h (finit_identifier_node): Declared as extern. + (struct lang_decl): New field called_constructor. + (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor. + (CLASS_HAS_FINIT_P): New macro. + (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks + explicit constructor invocation. + (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P, + CALL_SUPER_CONSTRUCTOR_P): New macros. + (write_classfile): Added prototype. + * jcf-parse.c (jcf_parse_source): Parse and remember for + generation if the file was seen on the command line. + (parse_source_file): Don't write the class file here. + (yyparse): Loop on files rewritten. Set current_jcf. + (parse_zip_file_entries): Parse class file only if it was found. + * lang.c (init_parse): Don't open command line provided filename + here. + (lang_parse): Don't set main_jcf anymore. + * parse.h (ABSTRAC_CHECK): Capitalized arguments. + (JCONSTRUCTOR_CHECK): New macro. + (JBSC_TYPE_P): New macro. + (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment. + (COMPLETE_CHECK_OP_2): New macro. + (struct parse_ctxt): New field explicit_constructor_p. + (check_class_interface_creation): Fixed prototype indentation. + (patch_method_invocation_stmt): Prototype reflects added argument. + (patch_invoke): Likewise. + (complete_method_declaration, build_super_invocation, + verify_constructor_circularity, + build_this_super_qualified_invocation, get_printable_method_name, + patch_conditional_expr, maybe_generate_finit, fix_constructors, + verify_constructor_super, create_artificial_method, + start_artificial_method_body, end_artificial_method_body, + generate_field_initialization_code): New function prototypes. + * parse.y: Fixed leading comment + (constructor_header:, constructor_body:, block_end:): Rules tagged + . + (type_declaration:): Call maybe_generate_finit. + (method_declaration:): Action for method_body: placed in new + function complete_method_declaration, called here. + (constructor_declaration:): Defined actions. Removed leading + FIXME. + (constructor_header:): New rule with action. + (constructor_body:): Rule rewritten using block_begin: and + block_end:. Defined actions. + (constructor_declarator:, explicit_constructor_invocation:): + Defined actions. + (block:): Use new rules block_begin: block_end:. + (block_begin:, block_end:): New rules and actions. + (block_statements:): Fixed error message for explicit + constructors. + (method_invocation:): Call build_this_super_qualified_invocation + if primary is `this' or `super' was seen. + (conditional_expression:): Action defined. + (extra_ctxp_pushed_p): New static global flag. + (java_parser_context_save_global): Create parser context if + necessary. Use extra_ctxp_pushed_p to remember it. + (java_parser_context_restore_global): Pop extra parser context if + one exists. + (build_array_from_name): Array on primitive types are marked + loaded. + (register_fields): Restore new name in field initializer + expression if type was altered. Non static fields initialized upon + declaration marked initialized. + (maybe_generate_finit): New function. + (maybe_generate_clinit): Use create_artificial_method, + start_artificial_method_body, end_artificial_method_body. Generate + debug info for enclosed initialization statements. + (method_header): Fixed leading comment. Check constructor + flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P + accordingly. + (complete_method_declaration, constructor_circularity_msg, + verify_constructor_circularity): New functions. + (get_printable_method_name): New function. + (check_method_redefinition): Don't rename methods. Fix + declared constructor names. Error message for + constructors modified. + (java_check_regular_methods): Local variable seen_constructor + renamed saw_constructor. Skip verification on constructors. Create + default constructor with create_artificial_method. + (java_check_methods): Removed unnecessary empty line. + (create_artificial_method, start_artificial_method_body, + end_artificial_method_body): New functions. + (java_layout_classes): Changed leading comment. Reverse fields + list if necessary. Always layout java.lang.Object if being + defined. + (java_complete_expand_methods): Verify constructor circularity. + (java_complete_expand_method): Call fix_constructor on + constructors. Local variable no_ac_found removed. Restore + bindings if method body expansion failed. + (fix_constructors, verify_constructor_super, + generate_field_initialization_code): New function. + (java_expand_classes): Fixed leading comment. Write class file + here. + (resolve_expression_name): Check for illegal instance variable + usage within the argument scope of an explicit constructor + invocation. + (resolve_qualified_expression_name): Pass extra from_super flag + when invoking patch_method_invocation_stmt. New case for + conditional expression when used as a primary. Check for error + when acquiring super. + (patch_method_invocation_stmt): Added extra argument super. New + local variable is_static_flag. Set class_to_search according to + the nature of the constructor invocation. Don't add `this' + argument when expanding NEW_CLASS_EXPR. Check for illegal method + invocation within the argument scope of explicit constructor + invocation. Set is_static according to is_static_flag. Provide + extra `super' argument to patch_invoke invocation. + (patch_invoke): New argument from_super. Loop on arguments + indentation fixed. Pass from_super to invocation_mode. New switch + case INVOKE_SUPER. Fixed error message in switch default case. + Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node + value. + (invocation_mode): Return INVOKE_SUPER mode when appropriate. + (lookup_method_invoke): Fixed prototypes in candidates list. Error + message takes constructors into account. + (find_applicable_accessible_methods_list): Fixed indentation. + (qualify_ambiguous_name): Take explicit constructor invocation + into account. Deal with a conditional expression as a primary to + a method call. + (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR + case. Added extra argument to patch_method_invocation_stmt. + Register calls made to explicit constructor `this'. Don't call + save_expr in ARRAY_REF case when emitting class files. Check for + illegal use of this when expanding explicit constructor invocation + arguments. + (complete_function_arguments): Set and reset parser context + explicit_constructor_p field value when appropriate. + (build_super_invocation, build_this_super_qualified_invocation): + New functions. + (patch_assignment): Fixed typo. + (patch_unaryop): Check on final fields occurs only when a decl + exits. + (patch_return): Take constructors into account. + (patch_conditional_expr): New function. + * typeck.c (build_java_signature): Removed unnecessary empty line. + +1998-10-28 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too. + +1998-10-28 Tom Tromey + + * decl.c (init_decl_processing): Renamed fields. + * class.c (make_class_data): Renamed bfsize, nfields, nsfields, + interface_len, msize fields. + + * class.c (make_class_data): Removed subclass_head and + subclass_next fields. + * decl.c (init_decl_processing): Removed subclass_head and + subclass_next fields. + +1998-10-28 Jeffrey A Law (law@cygnus.com) + + * jcf-write.c (emit_load_or_store): Avoid implicit int arguments. + * mangle.c (emit_unicode_mangled_name): Similarly. + +1998-10-26 Nick Clifton + + * jcf-parse.c (get_constant): Place braces around code to compute + 'd' when REAL_ARITHMETIC is not defined. + +1998-10-25 H.J. Lu (hjl@gnu.org) + + * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to + dependency. + +1998-10-23 Tom Tromey + + * lang-specs.h: `.zip' files are input to jc1. + +1998-10-22 Per Bothner + + * jvspecs.c: Add (but don't enable) support for combining multiple + .class and .java input filenames to a single jc1 invocation. + Add support for -C flag (copile to .class files). + Translate -classpath and -CLASSPATH arguments. + * lang-specs.h: Don't set %2 spec. + +1998-10-22 Tom Tromey + + * jcf-path.c (add_entry): Don't add trailing separator if entry is + a .zip file. + (add_path): Don't add trailing separator to non-empty path + elements. + + * lang.c (lang_decode_option): Check for -fclasspath and + -fCLASSPATH before examining other `-f' options. + + * java-tree.h (finalize_identifier_node): Don't declare. + * class.c (make_class_data): Don't push "final" field. + * decl.c (init_decl_processing): Don't push "final" field. + (finalize_identifier_node): Removed. + (init_decl_processing): Don't set finalize_identifier_node. + + * config-lang.in (stagestuff): Added jcf-dump and jv-scan. + +1998-10-11 Anthony Green + + * Make-lang.in (java): Depend on jcf-dump and jv-scan. + (JV_SCAN_SOURCES): New macro. + (JCF_DUMP_SOURCES): Likewise. + (jcf-dump$(exeext)): New target. + (jv-scan$(exeext)): New target. + +1998-10-22 Tom Tromey + + * Makefile.in (LEX): Removed. + (LEXFLAGS): Likewise. + (SET_BISON): New macro. + (BISON): Removed. + ($(PARSE_C)): Use SET_BISON. Run bison from srcdir to avoid + spurious diffs in parse.c. + ($(PARSE_SCAN_C)): Likewise. + (PARSE_DIR): New macro. + (PARSE_C): Use it. + (PARSE_SCAN_C): Likewise. + (PARSE_RELDIR): New macro. + + * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c. + + * jcf-io.c (find_class): Use saw_java_source to determine when to + look for `.java' file. + * jcf-parse.c (saw_java_source): New global. + (yyparse): Set it if `.java' file seen. + + * Make-lang.in (JAVA_SRCS): Added jcf-path.c. + (GCJH_SOURCES): Likewise. + * Makefile.in (datadir): New macro. + (libjava_zip): Likewise. + (JAVA_OBJS): Added jcf-path.o. + (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o. + (../gcjh$(exeext)): Likewise. + (jcf-path.o): New target. + * java-tree.h (fix_classpath): Removed decl. + * jcf-parse.c (fix_classpath): Removed. + (load_class): Don't call fix_classpath. + * parse.y (read_import_dir): Don't call fix_classpath. + * lex.h: Don't mention classpath. + * lex.c (java_init_lex): Don't initialize classpath. + * jcf-io.c (classpath): Removed global. + (find_class): Use jcf_path iteration functions. Correctly search + class path for .java file. + (open_in_zip): New argument `is_system'. + * jcf-dump.c (main): Call jcf_path_init. Recognize all new + classpath-related options. + * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH, + and -I. + (lang_init): Call jcf_path_init. + * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH. + * lang-specs.h: Handle -I. Minor cleanup to -M options. + Correctly put braces around second string in each entry. + * gjavah.c (main): Call jcf_path_init. Recognize all the new + classpath-related options. + (help): Updated for new options. + * jcf.h: Declare functions from jcf-path.c. Don't mention + `classpath' global. + * jcf-path.c: New file. + + * jcf-depend.c: Include jcf.h. + + * jcf-write.c (localvar_alloc): Returns `void'. + (localvar_free): Removed unused variable. + + * lang.c (OBJECT_SUFFIX): Define if not already defined. + (init_parse): Use OBJECT_SUFFIX, not ".o". + +1998-10-21 Alexandre Petit-Bianco + + * class.c (emit_register_classes): Renamed from + emit_register_class. + * java-tree.h (emit_register_classes): Prototype renamed from + emit_register_class. + * jcf-parse.c (yyparse): Call emit_register_classes once before + returning. + * parse.y (java_expand_classes): No longer register classes. + +1998-10-20 Alexandre Petit-Bianco + + * class.c (is_compiled_class): New local variable + seen_in_zip. Identify classes found in currently compiled source + file(s). + * decl.c (complete_start_java_method): Fixed typo. + * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P, + HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros. + (CLASS_P): Moved around. + (java_parse_abort_on_error): Macro moved from jcf-parse.c + * jcf-parse.c (java_parse_abort_on_error): Macro moved to + java-tree.h + (jcf_parse_source): Changed leading comment. Removed unnecessary + fclose and CLASS_FROM_SOURCE_P marking. + (parse_source_file): New local variables remember_for_generation + and filename. Mark parsed file name identifier node. Removed block + executed when parse_only was null. Set remember_for_generation. + Use it as an argument to java_pop_parser_context. + (yyparse): New local variables several_files, list, next node and + current_file_list. Split ampersand separated file names into + current_file_list. Iterate through the list and parse accordingly. + * parse.h (java_pop_parser_context): New function prototype. + * parse.y (ctxp_for_generation): New static global variable. + (java_pop_parser_context): New argument generate. Link popped ctxp + to ctxp_for_generation list accordingly. + (java_complete_expand_methods): Fixed indentation. + (java_expand_classes): New function. + +1998-10-17 Per Bothner + + * Makefile.in: Link with libiberty.a instead of memmove.o. + +1998-10-16 Alexandre Petit-Bianco + + * lex.c (setjmp.h): No longer included. + * lex.h (setjmp.h): Included. + * parse.h (SET_TYPE_FOR_RESOLUTION): New macro. + (duplicate_declaration_error_p): Renamed from + duplicate_declaration_error. + (build_array_from_name): New function prototype. + * parse.y (setjmp.h): No longer included. + (variable_declarator_id): Define action. + (build_array_from_name): New function. + (duplicate_declaration_error_p): Renamed from + duplicate_declaration_error. Fixed leading comment. + (register_fields): Main `for' loop reorganized. Uses + SET_TYPE_FOR_RESOLUTION and build_array_from_name. + (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call + build_array_from_name. + (resolve_class): Set CLASS_LOADED_P on newly build array dimension + types. + (read_import_dir): Don't try to skip `.' and `..'. + (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and + build_array_from_name. Main `for' loop reorganized. + (resolve_qualified_expression_name): When building access to a + field, use the type where the field was found, not its own type. + (maybe_access_field): Use field DECL_CONTEXT if the type where the + field was found is null. + (qualify_ambiguous_name): Sweep through all successive array + dimensions. + +1998-10-14 Alexandre Petit-Bianco + + * java-tree.h (pop_labeled_block, lang_printable_name, + maybe_add_interface, set_super_info, get_access_flags_from_decl, + interface_of_p, inherits_from_p, fix_classpath, + complete_start_java_method, emit_handlers, init_outgoing_cpool, + make_class_data, register_class, alloc_name_constant): New + function prototypes. + * lang.c (lang_decode_option): Set argc argument unused. Fixed + indentation. Added cast to remove warning. + (lang_printable_name): Set v argument unused. + (lang_print_error): Added argument to lang_printable_name call. + (java_dummy_print, print_lang_decl, print_lang_type, + print_lang_identifier, lang_print_xnode): All argument marked + unused. + * lex.c (java_unget_unicode): Removed unnecessary argument. + (java_allocate_new_line): Unused local variable is gone. + (java_read_char): Added parenthesis in expressions to remove + warnings. Added final return statement. + (java_read_unicode): Added parenthesis in expression to remove + warning. + (java_parse_end_comment): Fixed java_unget_unicode invocation. + (java_parse_escape_sequence): Likewise. + (java_lex): Unused local variables are gone. Fixed + java_unget_unicode invocation. + * lex.h (set_float_handler): Prototype added when JC1_LITE not + defined. + * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed + lang_printable_name invocation in macro. + (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL): + Likewise. + (duplicate_declaration_error): Suppressed unused argument in + prototype. + (identical_subpath_p): Function declaration is gone. + (patch_invoke): Suppressed unused argument in prototype. + (patch_cast, build_labeled_block, check_thrown_exceptions): + Likewise. + * parse.y (setjmp.h): Included + (toplev.h): Likewise. + (field_declaration:): Suppressed unused local + (label_decl:): Fixed build_labeled_block invocation. + (java_pop_parser_context): Put extra parenthesis around assignment + in if. + (yyerror): Suppressed unused local variables. + (variable_redefinition_error): Fixed lang_printable_name + invocation. + (create_interface): Suppressed unused local variables. + (create_class): Likewise. + (duplicate_declaration_error): Suppressed unused argument. Fixed + lang_printable_name invocation. + (register_fields): Suppressed unused local variable. Fixed + duplicate_declaration_error invocation. + (method_header): Suppressed unused local variable. + (method_declarator, parser_check_super): Likewise. + (java_complete_class): Suppressed unused local variable. Fixed + fatal error message. + (complete_class_report_errors): Added default: in switch. + (java_check_regular_methods): Fixed lang_printable_name + invocations. + (check_throws_clauses): Likewise. + (java_check_abstract_methods): Suppressed unused local + variable. Fixed lang_printable_name invocation. + (read_import_entry): Added supplemental return statement. + (read_import_dir): Suppressed unused local variables. + (check_pkg_class_access, declare_local_variables): Likewise. + (source_start_java_method): Suppressed unused extern variable + declarations + (expand_start_java_method): Suppressed unused extern and local + variable declarations. + (java_complete_expand_methods): Likewise. + (java_complete_expand_method): Suppressed unused local variables. + (make_qualified_name): Likewise. + (resolve_qualified_expression_name): Added default: in + switch. Fixed lang_printable_name invocation. + (class_instance_creation_expression): Added parenthesis around + expressions. + (patch_method_invocation_stmt): Fixed lang_printable_name and + patch_invoke invocations. + (check_for_static_method_reference): Fixed lang_printable_name + invocation. + (patch_invoke): Suppressed unused arguments and local variables. + (lookup_method_invoke): Suppressed unused local variables. + (qualify_ambiguous_name): Added default: in switch. + (identical_subpath_p): Function removed. + (patch_assignment): Suppressed unused local variables. Suppressed + unnecessary if statement. Fixed lang_printable_name invocations. + (try_builtin_assignconv): Fixed lang_printable_name invocations. + (valid_ref_assignconv_cast_p): Parenthesis around + expression. Suppressed unused local variables. + (build_binop): Suppressed unused local variables. fixed + lang_printable_name invocations. + (string_constant_concatenation): Suppressed unused local + variables. + (patch_unaryop): Fixed lang_printable_name invocation. + (patch_cast): Suppressed unnecessary argument. Fixed + lang_printable_name invocation. + (patch_array_ref): Fixed lang_printable_name invocation. + (patch_newarray, patch_return, patch_if_else_statement): Likewise. + (build_labeled_block): Suppressed unused argument. + (generate_labeled_block): Fixed build_labeled_block invocation. + (build_loop_body): Suppressed unused local variables. + (patch_loop_statement): Likewise. + (patch_exit): Fixed lang_printable_name invocation. + (patch_switch_statement): Likewise. + (case_identity): First argument marked unused. + (patch_try_statement): Fixed lang_printable_name invocations. + (patch_synchronized_statement, patch_throw_statement): Likewise. + (check_thrown_exceptions): Fixed check_thrown_exceptions and + lang_printable_name invocations. + (check_thrown_exceptions_do): Suppressed unused argument. + +1998-10-14 Tom Tromey + + * jcf-write.c (write_classfile): Add output class file as target. + * lang-options.h: Added -MD, -MMD, -M, and -MM. + * jcf.h: Added declarations for dependency-tracking functions. + * lang-specs.h: Handle -M, -MM, MD, and -MMD. + * lang.c (lang_decode_option): Recognize -MD and -MMD. + (finish_parse): Call jcf_dependency_write. + (dependency_tracking): New global. + (DEPEND_SET_FILE): New define. + (DEPEND_ENABLE): New define. + (init_parse): Enable dependency tracking if required. + Include "flags.h". + * Makefile.in (JAVA_OBJS): Added jcf-depend.o. + (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o. + (../gcjh$(exeext)): Likewise. + (jcf-depend.o): New target. + * Make-lang.in (JAVA_SRCS): Added jcf-depend.c. + (GCJH_SOURCES): Likewise. + * jcf-io.c (open_class): Call jcf_dependency_add_file. Added + dep_name argument. + (find_classfile): Added dep_name argument. + (find_class): Compute name of dependency. + (open_in_zip): Call jcf_dependency_add_file. + * gjavah.c (output_file): No longer global. + (usage): Don't mention "gjavah". + (help): Likewise. + (java_no_argument): Likewise. + (version): Likewise. + (main): Recognize and handle -M family of options. + (print_mangled_classname): Return is void. + (process_file): Handle case where output is suppressed. + (HANDLE_END_FIELD): Likewise. + (HANDLE_METHOD): Likewise. + * jcf-depend.c: New file. + +1998-10-13 Jeffrey A Law (law@cygnus.com) + + * java-tree.def: Add missing newline at EOF. + +1998-10-13 Tom Tromey + + * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1. + (main): Likewise. Exit with SUCCESS_EXIT_CODE at end of + function. + Include and "system.h". + (disassemble_method): Undefine RET to avoid clash with + config/i386/i386.h. + +1998-10-13 Alexandre Petit-Bianco + + * decl.c (runtime_exception_type_node, error_exception_type_node): + New global variables. + (init_decl_processing): Initialized. + * expr.c (java_lang_expand_expr): Set caught exception type to + null if catch handler argument doesn't exit. + * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific + tree codes. + * java-tree.h (runtime_exception_type_node, + error_exception_type_node): Global variables declared. + (DECL_FUNCTION_THROWS): New macro. + (DECL_FUNCTION_BODY): Modified comment. + (DECL_SPECIFIC_COUNT): Likewise. + (struct lang_decl): New field throws_list. + (IS_UNCHECKED_EXPRESSION_P): New macro. + * lex.c (java_lex): Generate location information for THROW_TK. + * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P, + EXCEPTIONS_P): New macros. + (enum jdep_code): New value JDEP_EXCEPTION. + (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT, + BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR, + PATCH_METHOD_RETURN_ERROR): New macros. + (patch_method_invocation_stmt): Added new argument to prototype. + (patch_synchronized_statement, patch_throw_statement, + check_thrown_exceptions, check_thrown_exceptions_do, + purge_unchecked_exceptions, check_throws_clauses): New function + prototypes. + * parse.y Fixed typo in keyword section. + (throw:): Rule tagged . + (THROW_TK): Keyword tagged . + (method_header:): Last argument to call to method_header passed + from throws: rule. + (throws:, class_type_list:, throw_statement:, + synchronized_statement:, synchronized:): Defined actions. + (method_header): New local variable current. Register exceptions + from throws clause. + (java_complete_tree): Complete and verify exceptions from throws + clause. + (complete_class_report_errors): Error message on exceptions not + found + (java_check_regular_methods): Fixed typo. Shortcut on private + overriding methods. Changed error message on method + redefinition. Check for throws clause compatibility. + (check_throws_clauses): New function. + (java_check_abstract_methods): Use DECL_NAME for wfl or current + method. Changed error message on method redefinition. + (currently_caught_type_list): New static variable. + (java_complete_expand_methods): Purge unchecked exceptions from + throws clause list. Call PUSH_EXCEPTIONS before walk and + POP_EXCEPTIONS after. + (resolve_qualified_expression_name): Pass new argument as NULL to + patch_method_invocation_stmt. + (patch_method_invocation_stmt): New argument ref_decl. Invoke + PATCH_METHOD_RETURN_ERROR when returning with error. Reverse + argument list when appropriate. Use new argument if non null to + store selected method decl. + (patch_invoke): Convert if necessary args of builtin types before + forming CALL_EXPR. Argument list no longer reversed here. + (invocation_mode): Treat final methods as static methods. + (java_complete_tree): New cases for THROW_EXPR: and + SYNCHRONIZED_EXPR:. Check thrown exceptions when completing + function call. + (complete_function_arguments): No more RECORD_TYPE + conversion. Function parameter nodes no longer saved. + (valid_ref_assignconv_cast_p): Avoid handling null type. + (patch_binop): Fixed null constant reference handling. + (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and + BUILD_THROW macros. + (patch_try_statement): Fixed comments. Record caught types in + list, push the list, expand try block and pop the list. + (patch_synchronized_statement, patch_throw_statement, + check_thrown_exceptions, check_thrown_exceptions_do, + purge_unchecked_exceptions): New functions. + * typeck.c (lookup_argument_method): Allow WFL in place of method + DECL_NAME during method definition check + +1998-10-09 Tom Tromey + + * gjavah.c (decode_signature_piece): New function. + (print_c_decl): Use it. Added `name_override' argument. + (print_method_info): Use name_override argument to print_c_decl. + (seen_fields): Removed. + (print_field_info): Don't update seen_fields. + (struct method_name): New structure. + (method_name_list): New global. + (print_method_info): Add new method to list of methods. + (name_is_method_p): New function. + (print_field_info): If field name has same name as method, then + change field name. + (process_file): Parse methods before fields. + (field_pass): New global. + (HANDLE_END_FIELD): Take field_pass into account. + +1998-10-07 Kaveh R. Ghazi + + * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf. + (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs). + +1998-10-03 Anthony Green + + * jvspec.c: Fix bug in jvgenmain_spec patch. + +1998-10-02 Alexandre Petit-Bianco + + * Makefile.in (lang.o:): Install dependency on java-tree.def. + * decl.c (soft_exceptioninfo_call_node): New global variable. + (init_decl_processing): Fixed indentation. soft_badarrayindex_node + takes extra integer argument. soft_exceptioninfo_call_node + initialized. + * except.c (java_set_exception_lang_code): New function + (method_init_exceptions): Called here. + (prepare_eh_table_type): New function. + (expand_end_java_handler): Called here. + * expr.c (build_java_throw_out_of_bounds_exception): Now features + one argument. Modified generation of call to + soft_badarrayindex_node to use new argument. + (build_java_arrayaccess): Pass faulty index value to + build_java_throw_out_of_bounds_exception. + (generate_name): New function. + (java_lang_expand_expr): New local variables node, current, + has_finally_p. Expand TRY_EXPR node. + (process_jvm_instruction): Replace top of the stack with thrown + object reference when entering exception handler. + * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java + specific tree codes. + * java-tree.h (soft_exceptioninfo_call_node): Declaration of new + global. + (DECL_SPECIFIC_COUNT): New macro. + (prepare_eh_table_type, java_set_exception_lang_code, + generate_name): New function declarations. + (match_java_method): Declaration deleted. + (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New + macros. + * lex.c (TRY_TK, CATCH_TK): Generate location information. + * parse.h (redefinition_error, refine_accessible_methods_list, + can_cast_to_p): Function declaration removed. + (classitf_redefinition_error, variable_redefinition_error, + parse_jdk1_1_error, find_applicable_accessible_methods_list, + find_most_specific_methods_list, argument_types_convertible, + enter_a_block, valid_builtin_assignconv_identity_widening_p, + valid_cast_to_p, valid_method_invocation_conversion_p, + try_reference_assignconv, add_stmt_to_compound, + build_jump_to_finally, build_tree_list, patch_try_statement, + java_get_catch_block): New function declarations. + * parse.y (string_buffer_type): Global variable deleted. + (group_of_labels, catches, catch_clause, catch_clause_parameter, + finally): Rules tagged . + (TRY_TK, CATCH_TK): Token tagged . + (class_body_declaration:, class_member_declaration:, + formal_parameter:, explicit_constructor_invocation:, + interface_member_declaration:, constant_declaration:, + primary_no_new_array:, class_instance_creation_expression:, + array_creation_expression:): Issue error on unsuported JDK1.1 + features. + (try_statement:, catches:, finally:): Define actions. + (catch_clause_parameter): New rule. + (catch_clause:): Use new rule catch_clause_parameter. + (parse_jdk1_1_error): New function. + (redefinition_error): Renamed classitf_redefinition_error. + (variable_redefinition_error): New function. + (check_class_interface_creation): Call + classitf_redefinition_error. + (java_complete_tree): Added error message on JDEP_TYPE: case. + (complete_class_report_errors): Fixed indentation. + (declare_local_variables): Call variable_redefinition_error. + (source_end_java_method): Call java_set_exception_lang_code and + emit_handlers where appropriate. + (java_method_add_stmt): Call add_stmt_to_block. + (add_stmt_to_block): New function. + (lookup_method_invoke): Fixed outside comment. new local variable + candicates. Call find_applicable_accessible_methods_list and + find_most_specific_methods_list when searching for a + method. Modified error report to list possible candidates when + applicable. + (find_applicable_accessible_methods_list, + find_most_specific_methods_list, argument_types_convertible): New + function. + (refine_accessible_methods_list): Function deleted. + (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save + expr (if applicable) before calling patch_array_ref. + (build_expr_block): Fixed BLOCK_EXPR_BODY assignment. + (enter_block): Fixed comment. + (enter_a_block): New function. + (patch_assignment): Reorganized. Call try_reference_assignconv for + references. Call valid_cast_to_p instead of can_cast_to_p. + (try_reference_assignconv, + valid_builtin_assignconv_identity_widening_p): New functions. + (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL. + (valid_cast_to_p, valid_method_invocation_conversion_p): New + functions. + (build_string_concatenation): Don't resolve StringBuffer. + (patch_cast): Fixed inverted arguments. + (patch_array_ref): Code to save array expr deleted. Call + valid_cast_to_p instead of can_cast_to_p. + (generate_labeled_block): Call generate_name. + (build_jump_to_finally, build_try_statement, java_get_catch_block, + patch_try_statement): New functions. + * typeck.c (match_java_method): Function deleted. + +1998-10-02 Anthony Green + + * jvspec.c: jvgenmain_spec uses different temporary file names. + +1998-10-02 Anthony Green + + * jvspec.c (lang_specific_driver): Fail if user specifies + --main= when not linking. + +1998-09-28 Tom Tromey + + * class.c (make_class_data): Push value for `thread' field. + * decl.c (init_decl_processing): Added `thread' field to class. + + * class.c (add_field): Always make static fields externally + visible. + +1998-09-26 Anthony Green + + * expr.c (build_java_athrow, + build_java_throw_out_of_bounds_exception, expand_invoke, + build_newarray, expand_java_multianewarray, build_java_monitor): + Update comments to reflect _Jv_* function names. + +1998-09-25 Per Bothner + + * decl.c (complete_start_java_method): DECL_RESULT is always promoted. + * decl.c (start_java_method): Handle PROMOTE_PROTOTYPES target macro. + * parse.y (expand_start_java_method): Likewise. + +1998-09-24 Per Bothner + + * expr.c (pop_arguments): Handle PROMOTE_PROTOTYPES target macro. + + * class.c (push_class): IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE. + (add_field): No longer need to convert from RECORD_TYPE to pointer, + * expr.c: Remove no-longer-needed calls to promote_type. + * decl.c (give_name_to_locals): Liekwise. + * jcf-parse.c (get_class_constant): Compensate for new signatures. + * parse.y: Add/remove promote_type calls as appropriate. + * typeck.c (parse_signature_type): Returns POINTER_TYPE for objects. + (parse_signature_string): Likewise. + (build_java_array_type): Fix for now signature convenions. + + * lex.c (java_lex): Fix (from Alex) for JC1_LITE problem. + +1998-09-23 Tom Tromey + + * class.c (init_class_processing): libjava function renamed to + _Jv_RegisterClass. + +1998-09-22 Alexandre Petit-Bianco + + * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR. + * java-tree.def: Fixed DEFTREECODE third argument. + (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR, + CASE_EXPR, DEFAULT_EXPR): New tree codes for Java. + * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro. + (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, + JAVA_THIS_EXPR): Now replaced by tree code definitions. + (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR. + * lang.c (java_tree_code_type, java_tree_code_length, + java_tree_code_name): New arrays. + (lang_init): Append Java tree node definitions to Gcc ones. + * lex.c (expression_obstack): Declared as extern when JC1_LITE + defined. + (java_init_lex): Initialize wfl_append, wfl_string_buffer, + wfl_to_string. + (java_lex): Allow declaration of empty string constants. Retain + location information on CASE_TK and DEFAULT_TK. + * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P, + JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P): + Modified to be more robust. + (BUILD_APPEND, BUILD_STRING_BUFFER): New macros. + (build_new_invocation, try_builtin_assignconv, + patch_switch_statement, string_constant_concatenation, + build_string_concatenation, patch_string_cst, patch_string, + java_expand_switch): New function declarations. + * parse.y: Rules related to switch and EH tagged . + (label_id): Set to NULL_TREE + (wfl_string_buffer, wfl_append, wfl_to_string): New static global + tree nodes. + (this_or_super:): Fixed indentation. + (statement:, statement_nsi:, statement_without_trailing_substatement:, + statement_expression:): Removed call to RULE on all sub-rules. + (switch_expression:, switch_labels:): New rules. + (switch_statement:, switch_block:, switch_block_statement_groups:, + switch_block_statement_group:, switch_labels:, switch_label:): + Defined actions. + (throw_statement:, synchronized_statement:, try_statement:): + Defined temporary actions. + (class_instance_creation_expression:): Call + build_new_invocation. Fixed indentation. + (field_access): Fixed indentation. + (method_invocation): Likewise. + (make_qualified_primary): Use THIS_EXPR. + (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When + resolving from SUPER, set *type_found. + (qualify_ambiguous_name): Use NEW_CLASS_EXPR. + (java_complete_tree): Removed unused local variable `location'. Case + for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR, + NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling + on MODIFY_EXPR: and all binary operator tree code cases. Removed + STRING_CST: case. default: checks for patchable strings. + (complete_function_arguments): Transform string constant or + crafted StringBuffer if necessary. + (build_method_invocation): Fixed comments. + (build_new_invocation): New function. + (patch_assignment): Call try_builtin_assignconv to figure a valid + assignment conversion between builtin types. + (try_builtin_assignconv): New function. + (build_binop): Use URSHIFT_EXPR directly to call build. + (operator_string): Use UNARY_PLUS_EXPR. + (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation + operator. + (do_merge_string_cste, merge_string_cste, + string_constant_concatenation, build_string_concatenation, + patch_string, patch_string_cst): New function. + (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR. + (patch_unaryop): Likewise. New test of valid ++/-- operands. + (build_newarray_node): Use NEW_ARRAY_EXPR. + (build_this): Use THIS_EXPR. + (build_return): Enable debug information on return statement. + (build_if_else_statement): Likewise. + (complete_labeled_statement): Fixed related comment. + (build_loop_body): Fixed comment. + (build_bc_statement): Enable debug information on break/continue + statements. + (patch_bc_statement): Fixed typos. Handle SWITCH statement + context. + (patch_switch_statement, case_identity, java_expand_switch): New + functions. + +1998-09-21 Per Bothner + + * buffer.h (BUFFER_INIT): New macro. + * jcf-write.c (struct jcf_partial): New type. Put global stuff here. + Pass (struct jcf_partial *state) to most functions. + (jcf_block, jcf_relocation): New types. + Support labels, branches, conditionals, loops. + +1998-09-21 Tom Tromey + + * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined. + +1998-09-21 Per Bothner + + * decl.c (integer_type_node): Make it have INT_TYPE_SIZE. + * verify.c (verify_jvm_instructions): Use int_type_not (32 bits), + not integer_type_node (INT_TYPE_SIZ bits). + + * parse.y (patch_if_else_statement): Accept promoted_boolean_type_node. + + * jcf-reader.c (get_attribute): New HANDLE_EXCEPTION_TABLE hook. + * jcf-dump.c (print_exception_table): New function. + (disassemble_method): Better handling of wide instructions. + Make more robust for bad input. + +1998-09-30 Jeffrey A Law (law@cygnus.com) + + * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on + FreeBSD. + +1998-09-17 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too. + +1998-09-17 Tom Tromey + + * Makefile.in ($(PARSE_H)): Removed target. + +1998-09-17 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (JAVA_OBJS): Add memmove.o + (memmove.o): New target & rules. + +1998-09-15 Tom Tromey + + * expr.c (expand_invoke): Don't generate a call to the class init + code. + +1998-09-14 Jeffrey A Law (law@cygnus.com) + + * Makefile.in: Add many missing dependencies. + * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h + as appropriate. + * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise. + * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise. + +1998-09-11 Per Bothner + + * decl.c (complete_start_java_method): If method is static (and + not private) call _Jv_InitClass. + * expr.c (expand_invoke): Don't call build_class_init. + + * jvspec.c (jvgenmain_spec): Fix spec for generated .o file. + +1998-09-10 Jeffrey A Law (law@cygnus.com) + + * Make-lang.in (GCJ): Define before using. + +1998-09-09 Jeffrey A Law (law@cygnus.com) + + * gjavah.c (java_no_argument): Renamed from no_argument to avoid + losing due to namespace pollution in GNU getopt.h + +1998-09-09 Tom Tromey + + * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh. + (java.all.cross): Likewise. + (java.rest.encap): Likewise. + +1998-09-08 Jeffrey A Law (law@cygnus.com) + + * gjavah.c (print_class_decls): Fix thinko in arglist + * jcv-io.c (find_classfile): Similarly. + +1998-09-07 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (INCLUDES): Update for recent toplevel gcc changes. + +1998-09-05 Tom Tromey + + * Make-lang.in (java.maintainer-clean): Don't remove parse.h. + (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h. + * Makefile.in (PARSE_C): New macro. + (PARSE_H): Likewise. + (PARSE_SCAN_C): Likewise. + ($(PARSE_C)): Target renamed from parse.c. + ($(PARSE_SCAN_C)): Target renamed from parse-scan.c. + (clean): Remove parse-scan.c as well. + (parse.o): Depend on $(PARSE_C). + +1998-09-05 Anthony Green + + * README, license.terms: Removed. + + * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c, + decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h, + javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c, + jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c, + keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c, + lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c, + verify.c, zextract.c, zipfile.h: Fixed copyright assignment, + and Java trademark attribution. + +1998-09-04 Tom Tromey + + * Makefile.in: Use gcjh, not gjavah. + * config-lang.in (stagestuff): Use gcjh, not gjavah. + * Make-lang.in: Changed gjavah to gcjh everywhere. + +1998-09-03 Per Bothner + + * gjavah.c: Support new -prepend -add -append flags. + (print_method_info): Method is not virtual if class is final. + +1998-09-03 Alexandre Petit-Bianco + + * jv-scan.c: Fixed copyright assignment. + * keyword.gperf: Likewise. + * keyword.h: Likewise. + * lex.c: Fixed copyright assignment. + (java_lex): Push unicode back when parsing '<'. + * lex.h: Fixed copyright assignment. + * parse-scan.y: Likewise. + * parse.h: Fixed copyright assignment. + (build_debugable_stmt, complete_for_loop): New function prototypes. + * parse.y: Fixed copyright assignment. + (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be + size_zero_node when completing a loop with no exit condition. + (for_statement_nsi:): Define action. + (for_init:, for_update:): Return size_zero_node when empty. + (declare_local_variables): Call build_debugable_stmt. + (build_debugable_stmt): New function. + (build_loop_body): Build debugable statement around loop + condition part. + (complete_loop_body): Take into account the debugable statement + around the EXIT_EXPR. + (complete_loop_body): New function. + (patch_exit_expr): Fixed condition inversion. + +1998-09-02 Tom Tromey + + * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct + name of thread define. + * jvspec.c (THREAD_NAME): New macro. + (GCLIB): Likewise. + (THREADLIB): Likewise. + (lang_specific_driver): Recognize attempt to link with thread + library or gc library. Recognize -ljava on command line so it + isn't linked against more than once. + +1998-09-02 Alexandre Petit-Bianco + + * parse-scan.y (report_main_declaration): Name of the class + containing `main' can be a qualified name. + +1998-08-31 Tom Tromey + + * config-lang.in: Changed gjavac to gjc everywhere. + * Make-lang.in: Changed gjavac to gjc everywhere. + +1998-08-27 Alexandre Petit-Bianco + + * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable. + (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS + and install the files. + * Makefile.in (JAVA_OBJS_LITE): New variable. + (compiler:): Now include jv-scan as a dependency. + (../jv-scan$(exeext), parse-scan.c): New targets. + (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before. + * config-lang.in (compilers): Removed gcj, gjavah from the list. + * jcf-parse.c (parse_source_file): Call java_layout_classes and + check for errors even if parse_only. + * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is + defined. + (yylex): New function. Uses java_lex body. + (java_lex): Removed commented out statement. Remove local variable + literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where + appropriate. Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE, + DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF, + SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST + if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use + SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER + where appropriate. + (java_lex_error): Empty if JC1_LITE is defined. + (java_get_line_col): Return 0 if JC1_LITE is defined. + * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, + SET_MODIFIER_CTX): Moved into the section containing the macros + conditionally defined by JC1_LITE. + (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN + argument if JC1_LITE is defined. + (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF, + REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE + is defined. + (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF, + FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION, + SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set + to different values according to JC1_LITE. + * parse.h (int_fits_type_p, stabilize_reference): Prototype not + declared if JC1_LITE set. + (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not + defined if JC1_LITE not set. + (struct parser_ctx): Reorganized and skip the jc1 front end part + if JC1_LITE set. + (java_layout_classes): New function definition. + (java_push_parser_context, java_init_lex, yyparse, yylex, + yyerror): Prototype always declared. All other static function + prototypes declared only if JC1_LITE is not set. + * parse.y (yyparse, yylex, yyerror): No longer declared here. Now + declared in parse.h. + (java_layout_classes): New function. + (java_complete_expand_methods): No longer layout the class here. + * parse-scan.y: New file. + * jv-scan.c: New file. + +1998-08-25 Tom Tromey + + * gjavah.c (main): Handle -friend option. + (friend_specs): New global. + (generate_access): Handle friend_specs. + (process_file): Likewise. + (MAX_FRIENDS): New macro. + (friend_count): New global. + (print_cxx_classname): Added `prefix' argument. Ignore arrays. + Changed all callers. + +1998-08-24 Per Bothner + + * jcf-dump.c (process_class): Move JCF_FINISH use to main, + (main): Handle processing all the entries of a named .zip archive. + * jcf-io.c (jcf_trim_old_input): New function. + * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le): New macros. + +1998-08-24 Per Bothner + + * lang.c (flag_assume_compiled): Make default be on. + +1998-08-21 Per Bothner + + * jcf-dump.c: Add bunches of flags to control output more. + (process_class): New function; support printing more than one class. + (main): Support new --print-main and --javap flags. + * jcf-reader.c (IGNORE_ATTRIBUTE): New hook. + * jcf.h (CPOOL_INDEX_IN_RANGE): New macro. + +1998-08-20 Per Bothner + + Change mangling of dispatch table to match C++ vtable (w/thunks). + * class.c (build_dtable_decl), java-tree.h: New function. + (make_class_data): Call it. + * decl.c (init_decl_processing): Likewise. + +1998-08-19 Warren Levy + + * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not + soft_anewarray; adjust args passed. + * expr.c (build_anewarray): Adjust args for soft_anewarray_node to + match _Jv_NewObjectArray. + +1998-08-19 Alexandre Petit-Bianco + + * decl.c (push_labeled_block, pop_labeled_block): New functions. + * expr.c (loopup_label): Call create_label_decl. + (create_label_decl): New function. + (java_lang_expand_expr): Call expand_start_bindings with argument + set to zero. + * java-tree.h Added space after PROTO in function declarations + when necessary. + (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros. + (create_label_decl, push_labeled_block): New function + declarations. + * lex.c (label_id): Initialize. + (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final + switch. + * parse.h Added space after PROTO in function declarations when + necessary. + (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK, + LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY, + LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P, + PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New + macros. + (struct parser_ctxt): New fields current_loop, + current_labeled_block. + (build_if_else_statement, patch_if_else_statement, + add_stmt_to_compound, patch_exit_expr, build_labeled_block, + generate_labeled_block, complete_labeled_statement, + build_bc_statement, patch_bc_statement, patch_loop_statement, + build_new_loop, build_loop_body, complete_loop_body): New function + declarations. + * parse.y (java_warning_count): New global variable. + (label_id): New static variable. + (BREAK_TK, CONTINUE_TK): Token tagged . + (block:): Return size_zero_node when block is empty. + (empty_statement:): Return size_zero_node. + (statement:): Implement supplemental action when for_statement: is + reduced. + (label_decl:): New rule. + (labeled_statement:): Rewritten using label_decl. Actions + implemented. + (labeled_statement_nsi:): Likewise. + (if_then_statement): Actions implemented. + (while_expression): New rule. + (while_statement:): Rewritten using while_expression. Actions + implemented. + (while_statement_nsi:): Likewise. + (do_statement_begin:): New rule. + (do_statement:): Rewritten using do_statement_begin. Actions + implemented. + (for_statement:): Rewritten using for_begin. Actions implemented. + (for_statement_nsi:): Likewise. + (for_header:, for_begin:): New rules. + (for_init:): Actions implemented. + (statement_expression_list:, break_statement:, + continue_statement:): Likewise. + (yyerror): Count number of issued warning(s). + (java_report_errors): Report error(s) and/or warning(s). + (java_complete_class): Use build_java_argument_signature to + recompute completed method signature. + (java_check_regular_methods): New locals method_wfl and aflags. + Use method_wfl instead of lookup_cl during error reports. Fixed + indentation and modified some error messages. Use + lang_printable_name in method instead of the DECL_NAME. New code + to issue warnings on methods not overriding corresponding methods + private to a different package. + (java_method_add_stmt): Call add_stmt_to_compound. + (add_stmt_to_compound): New function. + (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, + LOOP_EXPR, EXIT_EXPR and COND_EXPR. + (build_if_else_statement, patch_if_else_statement, + build_labeled_block, generate_labeled_block, + complete_labeled_statement, build_new_loop, build_loop_body, + complete_loop_body, patch_loop_statement, build_bc_statement, + patch_bc_statement, patch_exit_expr): New functions. + * typeck.c (build_java_signature): Build argument signature before + enclosing it in between parenthesis. + +1998-08-17 Warren Levy + + * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in + (JAVA_OBJS): Added reminder comment + +1998-08-13 Nick Clifton + + * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to + be interpreted as a long long. + +1998-08-13 Warren Levy + + * decl.c (init_decl_processing): Use _Jv_InitClass, not + soft_initialise_class. Use _Jv_NewMultiArray, not + soft_multianewarray. Use _Jv_ThrowBadArrayIndex, not + soft_badarrayindex. Use _Jv_CheckCast, not soft_checkcast. Use + _Jv_CheckArrayStore, not soft_checkarraystore. Use + _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod. + +1998-08-12 Per Bothner + + * decl.c, java-tree.h (this_identifier_node, super_identifier_node, + length_identifier_node): New global tree node constants. + * parse.y (kw_super, kw_this, kw_length): Removed globals. + Replace uses by super_identifier_node etc. + * lex.c (kw_super, kw_this, kw_length): Don't initialize. + + * parse.y (resolve_field_access): Don't special-case ".length" if + flag_emit_class_files. + (patch_array_ref): Leave as ARRAY_REF if flag_emit_class_files. + * jcf-write.c (generate_bytecode_insns): Handle ARRAY_REF opcode + and ARRAY.length. + +1998-08-11 Per Bothner + + * decl.c (init_decl_processing): Remove unused method_type_node fields. + * class.c (make_method_value): Remove init for removed fields. + + * class.c (layout_class): Use build_java_argument_signature. + * java-tree.h (TYPE_ARGUMENT_SIGNATURE): New macro. + + * typeck.c (push_java_argument_signature): Removed. Merged into ... + (build_java_argument_signature): Use TYPE_ARGUMENT_SIGNATURE cache. + (build_java_signature): Don't use push_java_argument_signature. + + * typeck.c (lookup_argument_method): New function. + * parse.y (java_check_regular_methods): Use lookup_argument_method + instead of lookup_java_method2 followed by lookup_java_method. + + * parse.y (check_method_redefinition): Minor optimization. + + * jcf-write.c (generate_bytecode_insns): Handle RETURN_EXPR, + MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR. + +1998-08-10 Tom Tromey + + * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or + c-pragma.o. + + * gjavah.c (java_float_finite): Use K&R-style definition. + (java_double_finite): Likewise. + (generate_access): Now returns void. Changed all callers. + (last_access_generated): Removed. + (process_file): Only make a single pass over the .class file. + +1998-07-29 Per Bothner + + * class.c (get_dispatch_table): Add extra dummy vtable entry, + for compatibility for G++ (with -fvtable-thunks). + * expr.c (build_invokevirtual): Add one for extra dummy vtable entry. + + * gjavah.c (process_file): Use public inheritance for super-class. + +1998-07-29 Alexandre Petit-Bianco + + * lex.c (java_init_lex): Initialize ctxp->package. + * parse.h (struct parser_ctxt): package and package_len replaced + by tree package, an identifier node. Field method_decl_list is + gone. Fixed comments. + (lookup_field_wrapper, merge_qualified_name, not_accessible, + class_in_current_package): New function prototypes. + * parse.y (array_type:): Set class loaded flag on primitive type + arrays. + (package_declaration:): Assign ctxp->package to the + identifier node. + (method_invocation:): Handle invocation of method qualified by + `super'. + (single_type_import_declaration:): Removed ambiguity check. + (java_pop_parser_context): New local variable `next'. Reset and + set IMPORT_CLASSFILE_NAME flags on current and previous import + list. + (java_accstring_lookup): Use new local macro COPY_RETURN. + (lookup_field_wrapper): New function. + (parser_qualified_classname): Use merge_qualified_name. + (parser_check_super_interface): Broaden error message. + (do_resolve_class): Check for qualified class name in the current + compilation unit if appropriate. + (process_imports): Check for already defined classes. + (check_pkg_class_access): Got rid of call to + get_access_flags_from_decl. + (java_complete_expand_methods): Call safe_layout_class based on + the current class size. + (make_qualified_primary): Build a WFL qualification on primary if + none exists. + (merge_qualified_name): New function. + (make_qualified_name): Use merge_qualified_name. + (resolve_expression_name): Use safe_lookup_field. + (resolve_field_access): Got rid of call to get_access_flags_from_decl. + (resolve_qualified_expression_name): Likewise. Check on resolved + element accessibility. + (not_accessible_p, class_in_current_package): New functions. + (maybe_access_field): Got rid of call to get_access_flags_from_decl. + (patch_method_invocation_stmt): Merged common pieces. Check + accessibility of invoked method. + (check_for_static_method_reference): Add returned type in error + message. + (invocation_mode): Get rid of bogus check on PRIVATE methods. + (refine_accessible_methods_list): Merged two conditions in test. + (java_complete_class): Sanity check on stabilize_ref gone. + * zextract.c (read_zip_archive): Cast lseek second argument to long. + +1998-07-28 Per Bothner + + * class.c (hashUtf8String): Fix - use new JavaSoft specification. + +1998-07-24 Tom Tromey + + * gjavah.c (F_NAN): Removed. + (F_NAN_MASK): New macro. + (F_POSITIVE_INFINITY): Removed. + (F_NEGATIVE_INFINITY): Likewise. + (java_float_finite): Rewrote. + (D_NAN_MASK): Renamed. + (java_double_finite): Rewrote. + (D_POSITIVE_INFINITY): Removed. + (D_NEGATIVE_INFINITY): Likewise. + + * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float] + If verbose, print underlying representation of value in hex. + +1998-07-24 Per Bothner + + * buffer.h, buffer.c: New files. + * Makefile.in (JAVA_OBJS): Add buffer.o. + + Support locals variables and writing their debug entries to .class. + * jcf-write.c: Simplify some by user new buffer type. + (vode_buffer_grow): Removed. + (struct localvar_info): New type. + (localsvars, localvartable): New buffers. + (localvar_alloc, localvar_free): New functions. + (generate_bytecode_insns): Handle local variables. + (generate_classfile): Write LocalVariableTable attribute. + +1998-07-24 Alexandre Petit-Bianco + + * jcf-io.c (open_in_zip): Check the zipfile magic number. + * zipfile.h (ZIPMAGIC): New macro. + +1998-07-24 Tom Tromey + + * Makefile.in (gjavah.o): Updated dependencies. + (jcf-dump.o): Likewise. + (all.indirect): Use ../gjavah. + (../gjavah$(exeext)): Likewise. + (clean): Don't remove gjavah. + (clean): Remove parse.c, not java/parse.c. + * Make-lang.in (java): Added gjavah. + (gjavah$(exeext)): New target. + (GJAVAH_SOURCES): New macro. + (java.all.build): Added gjavah. + (java.all.cross): Likewise. + (java.rest.encap): Likewise. + * config-lang.in (compilers, stagestuff): Added gjavah. + +1998-07-23 Tom Tromey + + * gjavah.c (java_float_finite): New function. + (java_double_finite): Likewise. + (F_POSITIVE_INFINITY): New macro. + (F_NEGATIVE_INFINITY): Likewise. + (F_NAN): Likewise. + (D_POSITIVE_INFINITY): Likewise. + (D_NEGATIVE_INFINITY): Likewise. + (D_NAN): Likewise. + (print_field_info): Use java_float_finite and java_double_finite. + +1998-07-23 Per Bothner + + * parse.y (method_header): Name "this" implicit argument. + +1998-07-22 Per Bothner + + * jcf-write.c: Write out LineNumberTable attribute in .class file. + (linenumber_buffer, linenumber_ptr, linenumber_limit): New statics. + (put_linenumber): New function. + (generate_bytecode_insns, generate_classfile): Write line numbers. + +1998-07-22 Alexandre Petit-Bianco + + * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P. + (lookup_name, build_known_method_ref, build_class_init, + build_invokevirtual, invoke_build_dtable, match_java_method, + build_field_ref, pushdecl_force_head, build_java_binop, + binary_numeric_promotion, build_decl_no_layout, + build_java_arrayaccess, build_newarray, build_anewarray, + build_java_array_length_access, build_java_arraynull_check): New + extern function prototypes. + (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, + JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in + java-tree.h. + * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref + to NULL + * jcf.h (jcf_out_of_synch): New extern function prototype. + * parse.h: Static/global function implemented in parse.y + prototyped and declarations moved at the end of the file. + (DECL_P): Check that the argument isn't null. + (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, + JAVA_THIS_EXPR): No longer defined here. See java-tree.h + (QUAL_DECL_TYPE): New macro. + (PARAMS): Macro definition removed. + * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS. + (return_statement:): Call build_return. + (field_access:): Call make_qualified_primary in sub rule. + (method_invocation:): Build method invocation and call + make_qualified_primary when processing primaries. + (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling + get_type_from_signature. + (java_check_regular_method): Extra integer 0 argument when calling + lookup_java_method2. + (lookup_java_interface_method2): Extra method DECL argument when + calling lookup_java_interface_method2. + (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created + COMPOUND_EXPR node. + (java_complete_expand_method): Layout current class iff not + already done. Don't process interface's methods. + (java_complete_expand_method): Use super class only if it + exists. Use current class otherwise. + (make_qualified_primary): New function. + (resolve_expression_name): Process qualified expression or + expression from primary the same way. + (resolve_expression_name): Two last arguments to + resolve_field_access are now NULL_TREEs. + (resolve_field_access): New variable is_static. Local field must + be DECLs. is_static computed on field DECLs only. Append code in + where_found to the field access if necessary. Use QUAL_DECL_TYPE + to initialize field_type. + (resolve_qualified_expression_name): New local variable, + previous_call_static and is_static. Handle primaries with function + calls, casts, array references and `this'. `super' now handled as + `(super_class)this'. Use is_static to clarify boolean expressions. + Added code to handle case where a proper handle is required to + access a field. Use QUAL_DECL_TYPE where applicable. + (maybe_access_field): New function. + (patch_method_invocation_stmt): New arguments primary, where, + is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P + deleted. Use `where' as a type to search from if specified. Check + for static method reference where forbidden. Append primary or + current_this to the argument list if not calling constructor nor + static methods. + (check_for_static_method_reference): New function. + (patch_invoke): Layout the class on which new is done if + necessary. + (lookup_method_invoke): Changed format to report errors on + methods. + (qualify_ambiguous_name): New local variable this_found. Now + handle things from primaries. Method call are considered + expression names. + (identical_subpath_p): NULL_TREE arguments to breakdown_qualified + changed into NULLs. + (not_initialized_as_it_should_p): Comply with the new DECL_P. + (java_complete_tree): New case fo RETURN_EXPR. Process function + call arguments in separate function. + (complete_function_arguments): New function. + (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P + anymore. + (patch_assignment): Take the return function slot into account as + a RHS. Distinguish assignment from a return. + (valid_ref_assignconv_cast_p): Use build_java_argument_signature + when checking methods in interfaces. + (resolve_type_during_patch): NULL argument to unresolve_type_p + instead of NULL_TREE. + (patch_newarray): Fixed typo in comment. + (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL. + (build_return, patch_return): New functions. + * typeck.c (lookup_java_constructor): Fixed typo in comment. + +1998-07-21 Per Bothner + + * constants.c (find_name_and_type_constant, find_fieldref_index, + find_methodref_index): New methods. + * expr.c (build_invoke_non_interface): If flag_emit_class_files, + just return given method. Also, rename to build_known_method_ref. + (expand_invoke): Rename call to build_invoke_non_interface. + * java-tree.h, parse.h: Update prototype. + * parse.y, decl.c, jcf-parse.c: Suppress calls to back-end functions + (such as expand_expr_stmt) if flag_emit_class_files. + * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP, + STACK_TARGET, IGNORE_TARGET): New macros. + (code_buffer, code_ptr, code_limit, code_S, code_SP_max): New globals. + (generate_bytecode_insn): New function to generate method's bytecode. + (generate_classfile): Node generate Code attribute for a method. + (code_buffer_grow, push_constant1, push_constant2, push_int_const, + push_long_const, field_op, adjust_typed_op, maybe_wide): + New functions used by generate_bytecode_insn. + + * typeck.c (signature_include_return): Remove variable. + (push_java_argument_signature, build_java_argument_signature): New. + (build_java_signature): Use push_java_argument_signature. + * parse.y: Use build_java_argument_signature instead of fiddling + with signature_include_return. + +1998-07-17 Tom Tromey + + * gjavah.c (print_c_decl): Always generate JArray<>* for array + types. + + * Makefile.in (all.indirect): Added gjavah$(exeext). + (gjavah$(exeext)): Added $(exeext). + (clean): Likewise. + +1998-07-16 Alexandre Petit-Bianco + + * class.c (layout_class): Call to java_layout_parsed_class replace + by safe_layout_class. + * expr.c (build_java_array_length_access): Removed static storage + class in the function definition. + (build_java_arraynull_check): Likewise. + Also fixed typos in two comments. + * lex.c (java_init_lex): Initialize static global kw_length. + (java_lex): Use BUILD_OPERATOR on RETURN_TK. + * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to + java_lex_error. + (JAVA_INTEGRAL_RANGE_ERROR): Likewise. + * parse.h (resolve_no_layout): New static function declaration. + (get_identifier_in_static): Declaration removed. + (java_layout_parsed_class): Function name declaration changed to + safe_layout_class. + (build_newarray_node, patch_newarray, resolve_type_during_patch, + not_initialized_as_it_should_p, build_this): New static function + declarations. + (pushdecl_force_head, build_java_binop, int_fits_type_p, + binary_numeric_promotion, stabilize_reference, + build_decl_no_layout, build_java_arrayaccess): Extern function + declarations moved into their own section. + (build_newarray, build_anewarray, build_java_array_length_access, + build_java_arraynull_check): New extern function declarations. + (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR. + (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New + fake tree codes. + (CALL_CONSTRUCTOR_P): New macro. + * parse.y (kw_length): New static global tree node. + (return_statement): Tagged . + (RETURN_TK): Tagged . + (variable_declarator_id:): Build variable declaration with an + empty initialization value if a syntax error was found in the + initialization part of the variable declaration. + (statement_without_trailing_substatement:): return_statement: now + uses the default rule. + (return_statement:): Temporarily fixed to return NULL_TREE. + (primary_no_new_array:): Call build_this when THIS_TK was parsed. + (class_instance_creation_expression:): Class creation rules now + call build_method_invocation upon reduction. + (array_creation_expression:): Rules call build_newarray_node upon + reduction. + (dim_exprs:): Build a list of dimension expressions. + (dim_expr:): Store location of the OSB_TK in the dimension + expression node. + (method_invocation:): Added a new error rule. + (build_unresolved_array_type): WFL argument may also be an array + on a primitive type. Name of the argument changed to reflect this. + (method_declarator): Insert argument type at the beginning of the + argument type list and later reverse the list. + (unresolved_type_p): Argument 'returned' may be optionally + NULL_TREE. + (java_layout_class_from_source): Function renamed + safe_layout_class. + (resolve_and_layout): Now call resolve_no_layout and + safe_layout_class. + (resolve_no_layout): New function. + (purify_type_name): New function. + (complete_class_report_errors): Call purify_type_name during error + report on a type not found. + (process_imports): error_found local variable doesn't need to be + initialized to zero. + (declare_local_variables): New local type_wfl. Fixed typo in error + message. type_wfl assigned to unresolved type and used to register + incomplete type. Build a WFL around the variable initialization + statement so that debug info can be generated on it. + (source_start_java_method): Reverse argument list after they've + been processed. + (current_this): New static global variable. + (java_complete_expand_methods): Set current_this when appropriate. + (resolve_expression_name): Build correct static and non static + field access bearing a simple name. + (resolve_field_access): Resolve the length field of arrays. Handle + f.m() cases. + (patch_method_invocation_stmt): Set the type of the method + invocation to error_mark_node. This value is later overridden by a + valid type, if any. Don't handle qualified constructor invocation + as qualified method invocation. Call lookup_method_invoke with its + new flag. It's no longer necessary to access the selected method + as the value of a tree list. Handle constructor invocation. + (patch_invoke): Reverse argument list when invoking non interface + methods. Insert call to new as the first argument of the + constructor. + (invocation_mode): Return a INVOKE_STATIC is the invoked method is + defined within a final class. Return INVOKE_STATIC if the invoked + method is a constructor. + (lookup_method_invoke): New lc argument is a flag to indicate a + constructor lookup. Now handle constructor lookup. Choose the most + specific method in case several were matching the invocation + requirements. Return a method decl instead of a tree list featuring + one single method decl element. + (refine_accessible_methods_list): New lc flag argument to + indicate that a constructor is being looked up. + (not_initialized_as_it_should_p): New function. + (java_complete_tree): Now process fake tree codes + JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call + save_expr on resolved function call arguments. Case on + UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR. + (patch_assignment): LHS can be a field access expression. When + dealing with reference, lhs_type is the promoted type of the + rhs_type, not the RHS. Use not_initialized_as_it_should_p where + applicable. + (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR. + (patch_binop): Use not_initialized_as_it_should_p where + applicable. + (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR. + (patch_unaryop): Likewise. And use not_initialized_as_it_should_p + where applicable. + (resolve_type_during_patch): New function. + (patch_cast): Call resolve_type_during_patch to resolve type and + report error accordingly. + (patch_array_ref): Use not_initialized_as_it_should_p where + applicable. Array base expression is saved before being + used. Promote the type of an array elements if it contains non + builtin types. + (build_newarray_node, patch_newarray, build_this): New functions. + +1998-07-16 Tom Tromey + + * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't + increment it in `for' statement. + (print_field_info): If number is inf or nan, don't print it. + (print_method_info): If method name is `delete', just ignore it. + (print_c_decl): Special-case jstringArray. + + * gjavah.c (help): New function. + (no_argument): New function. + (usage): Changed text. + (main): Rewrote argument handling. Now handles -v, --help, + --version. + (version): New function. + (found_error): New global. + (main): Return found_error. + (generate_access): Set found_error. + (print_c_decl): Likewise. + +1998-07-15 Tom Tromey + + * gjavah.c (print_c_decl): Don't print "," when examining field. + Skip type name when looking at "[L" types. + (process_file): Now static. + (generate_access): Now returns int. + (last_access_generated): New global. + (process_file): Clear last_access_generated; make multiple passes + over the class. + (print_field_info): Just return if generate_access returns true. + (print_method_info): Likewise. Also, allow functions to + pass through. + (print_c_decl): Added is_init argument. Print constructors + properly. + (print_cxx_classname): Use UTF8_GET to extract characters from + string. + (print_base_classname): New function. + (print_class_decls): New function. + (process_file): Use it. + (utf8_cmp): New function. + +1998-07-13 Nick Clifton + + * lang-options.h: Format changed to match changes in gcc/toplev.c + to implement a --help option. + +1998-07-10 Brendan Kehoe + + * decl.c (init_decl_processing): Revert change to dtable_type. + +1998-07-09 Per Bothner + + * java-tree.h (CLASS_P): Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4. + +1998-07-08 Brendan Kehoe + + * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type. + + * lang.c (lang_init): Default flag_exceptions to 1, without + checking to see if it's 2 first. + +1998-07-08 Jeffrey A Law (law@cygnus.com) + + * constants.c: Include "system.h". + * decl.c: Likewise. + * lang.c (flag_new_exceptions): Get via extern now. + (lang_init_options): New functions. Turn on flag_new_exceptions. + +1998-07-07 Alexandre Petit-Bianco + + * lex.c (java_lex): Return 0 when we see an invalid character in + the input. + + * lex.c (java_read_char): Specify extra argument when calling + java_lex_error. + (java_read_unicode, java_parse_end_comment, + java_parse_escape_sequence): Likewise, + (java_lex): Specify extra argument when calling + java_lex_error. Test that IDs are beginning with a legal character + for IDs. Handle invalid characters with an error message and a + call to java_lex_error. + (java_lex_error): Adjust column position by new argument + `forward'. Issue an error even if in the middle of reporting an + other error. + +1998-07-07 Brendan Kehoe + + * jcf-io.c (find_class): Zero out BUFFER before we use it, since + we don't explicitly put a null pointer when we're copying it. + +1998-07-07 Tom Tromey + + * gjavah.c (print_cxx_classname): New function. + (super_class_name): Likewise. + (print_super_fields): Removed. + (in_super): Removed. + (print_field_info): Never generate #defines. + (print_c_decl): Changed generated types to match JNI. No longer + print class name before method name. + (print_method_info): Print "static" before static methods. + Print "virtual" before non-final methods. + (usage): Use exit(1), not exit(-1). + (main): Likewise. + (print_field_info): Use %.17g to print a double. + (last_access): New globals. + (process_file): Initialize last_access. + (usage): Now static. + (ACC_VISIBILITY): New define. + (generate_access): New function. + (print_field_info): Call it. + (print_method_info): Likewise. Also, generate information for all + methods, not just native methods. Return void. + (print_c_decl): Return void. + (print_field_info): Return void. + +1998-07-02 Alexandre Petit-Bianco + + * Makefile.in (JAVABISONFLAGS): Specific flag for bison when + processing the jc1 grammar file. Prefix bison functions and + variables with java_. + (parse.c): Dependencies on parse.h and lex.h + * expr.c (build_java_arrayaccess): Function now global. + * java-tree.h: Comment reorganized to carry on previous + classification effort. + (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P, + RESOLVE_TYPE_NAME_P): New flags on WFLs. + * jcf-parse.c (parse_source_file): java_parse_source_file renamed + java_parse (new prefix java_ generated by bison). + (java_layout_parsed_class, java_register_parsed_class): Function + call removed. + (yyparse): Removed unnecessary call to init_outgoing_cpool. + * lex.c (static tree wfl_op): Variable deleted. + (java_init_lex): Initialize kw_super and kw_this. Initialize more + ctxp fields to NULL_TREE. + (java_lex): No longer create WFL for operators. Filename caching + mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings + created as STRING_CST and later expanded. Removed extra argument + to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS + and SUPER. + (build_wfl_node): Removed code in comments. + * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but + store token and location data in the current bison token. + * parse.h: Removed pre-processor based symbol prefixes hack. Moved + static/extern function declaration at the beginning of the file. + (struct qualification): Data structure definition deleted. + (RESOLVE_CHAIN_REMAINDER): Macro definition deleted. + (qualify_ambiguous_name): Function declaration modified. Function + now returns nothing. + (build_array_ref, patch_array_ref, make_qualified_name, + resolve_qualified_expression_name, maybe_generate_clinit, + resolve_field_access): New static function declarations. + (build_java_arrayaccess): New extern function declaration. + (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted. + (CALL_EXPR_PRIMARY): Macro deleted. + (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros. + (struct parser_ctxt): Field initialized_final + removed. non_static_initialized, static_initialized: New fields. + * parse.y (static tree kw_super, static tree kw_this): New global + static. + (%union): tree wfl field of operator member replaced by int + location. WFLs are non longer created for operators. + (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged . + (qualified_name:): Now calls make_qualified_name to build the + identifier. + (type_declaration:): Consider generating when class + parsing completed. + (variable_declarator:): Directly build an assignment node when the + variable is initialized when declared. + (this_or_super:): Build a WFL and set current location when THIS + or SUPER are parsed. + (expression_statement:): Wrap statement around a WFL. + (primary_no_new_array:): Fixed typo. Changed value returned by + THIS_TK because of its new type (temporary). + (dim_exprs:): Temporary fix because of OSB_TK's new type. + (field_access:): Build qualified name with SUPER. + (method_invocation:): Fixed returned value because of SUPER's new + type. + (array_access:): Use OSB_TK location information. + (post_increment_expression:, post_decrement_expression:, + unary_expression:, pre_increment_expression:, + pre_decrement_expression:, unary_expression_not_plus_minus:, + cast_expression:, multiplicative_expression:, + additive_expression:, shift_expression:, relational_expression:, + equality_expression:, and_expression:, exclusive_or_expression:, + inclusive_or_expression:, conditional_and_expression:, + conditional_or_expression:, assignment:): Use new location/token + information available on operators. + (create_class): Set super_decl_type to NULL_TREE when processing + java.lang.Object. + (register_fields): Field initialization is now a MODIFY_EXPR + node. Chain initialization code to the matching lists (according + to the field declaration modifiers). + (maybe_generate_clinit): New function. + (method_header): Don't set method's DECL_NAME to a WFL when adding + methods to java.lang.Object. + (resolve_and_layout): Now can return NULL_TREE if the type + resolution fails. Otherwise, return the class DECL instead of its + TYPE. + (check_method_redefinition): Don't patch method DECL_NAME if it + belongs to java.lang.Object. + (process_imports): Simply assign error_found to the value returned + by check_pkg_class_access. + (declare_local_variables): Don't use their init statements (if + any) when parsing error were previously found. Reuse MODIFY_EXPR + build during parsing as an init statement. + (java_method_add_stmt): Now return the current method body. + (java_layout_parsed_class, java_register_parsed_class): Functions + removed. + (java_complete_expand_methods): Initialize the constant pool on a + per class basis. Layout the classes before expanding their method + bodies. Don't try expand artificial constructor code if error were + found. Make the classes data and register them if no error were + found. + (java_complete_expand_method): Retrieve an artificial constructor + argument list before entering its body. Assign the top block to + the artificial constructor function body and set types of declared + blocks and compound statements to void. Walk method body if not an + artificial constructor. + (make_qualified_name, cut_identifier_in_qualified): New functions. + (resolve_expression_name): Fixed comments. Save/restore the + current class CLASS_LOADED_P flag value. Build non qualified + static field access and handle qualified expression names. + (resolve_field_access, resolve_qualified_expression_name): New + functions. + (patch_method_invocation_stmt): Use the new expression resolution + scheme, calling resolve_field_access when the function call is + resolved as an expression. + (qualify_ambiguous_name): Function rewritten to work on qualified + expression produced by make_qualified_name. + (java_complete_tree): Promote type when function's argument are + RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch + the assignment to discover further errors if RHS is a expression + name that fails to evaluate. Declare LHS initialized even though + the assignment failed. Don't use the location variable and removed + extra argument in patch function calls. Now handle the ARRAY_REF + case and build internal string representation when STRING_CSTs are + walked. + (build_method_invocation): Don't wrap function call around a WFL. + (build_assignment): Likewise. Use the operator location + information. + (patch_assignment): Handle array access LHSs. Handle error + provenance, resulting in a better error report. + (build_binop): Use op_location from operator as binop location + information. + (build_unaryop, build_incdec, build_cast): Likewise. + (patch_binop): Extract location information from the node. Fixed + typo in error message. + (patch_unary_op): Extract location information from the node. + (build_array_ref, patch_array_ref): New functions. + +1998-07-01 Tom Tromey + + * expr.c (expand_java_INSTANCEOF): Changed calling convention to + match _Jv_IsInstanceOf. + * decl.c (init_decl_processing): Use _Jv_NewArray, not + soft_newarray. Use _Jv_IsInstanceOf, not soft_instanceof. + +1998-06-30 Tom Tromey + + * decl.c (init_decl_processing): Functions are now named + _Jv_MonitorEnter and _Jv_MonitorExit, and return jint. + +1998-06-29 Per Bothner + + * java-tree.h (load_class): Add prototype. + * class.c (is_compiled_class): Add missing arg to load_class. + * expr.c (expand_java_NEW): Call load_class. + * parse.y (process_import): Removed bogus use of void return value. + +1998-06-25 Per Bothner + + * decl.c, java-tree.h (soft_athrow_node): Renamed to soft_node. + Function name is "_Jv_Throw" instead of "soft_athrow". + * decl.c, java-tree.h (soft_new_node): Renamed to alloc_object_node. + Function name is "_Jv_AllocObject" instead of "soft_new". + Takes an extra parameter (object size). + * expr.c: Update calls. + +1998-06-24 Per Bothner + + * lex.c (java_get_line_col): Handle end-of-file. + * except.c (expand_end_java_handler): Handle null type (i.e. finally). + +1998-06-24 Andrew MacLeod + + * lang.c (lang_init): Make -fexceptions the default. + * except.c (maybe_start_try, maybe_end_try): Don't do anything if + exception handling is not turned on. + +1998-06-23 Andrew MacLeod + + * lang.c (flag_new_exceptions): Make this this default. + * decl.c (end_java_method): Call emit_handlers. + * except.c (method_init_exceptions): Set language code and version. + (expand_start_java_handler): Enable exception, and call + expand_eh_region_start. + (expand_end_java_handler): Enable exception, and set up catch blocks. + (emit_handlers): New routine to generate the saved handlers. + * java-except.h (emit_handlers): Add prototype. + +1998-06-12 Per Bothner + + We used to have three different representations of the constant pool: + the CPool structure, the tree_constant_pool, and the constructures + used to build the Class object (which may need class and string + constants) in compiled code. None were appropriate for compiling + to .class files, so I did a major overhaul. + + First, the tree_constant_pool array was removed. Things were + modified to the CPool structure in the JCF could be used. + Second, a "capacity" field was added to the CPool, and functions + written to search for a matching constant, adding one if not found. + The code that generated the Class object was changed to use a CPool. + The actual TREE_LISTs used to build the CONSTRUCTORs used for + the static Class object are now only in build_constants_constructor. + Finally, I wrote code which can generate a .class file (including its + constant pool) from the RECORD_TYPE of a class. This is a big step + on the way to compiling Java source into .class files. + + * jcf-write.c: New file. Writes out a RECORD_TYPE as a .class file. + * Makefile.in (JAVA_OBJS): Added jcf-write.o. + + * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag, + CONSTANT_ResolvedString, CONSTANT_ResolvedClass): New macros. + (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME, + COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined. + (COMPONENT_REF_CLASS): Replaced by COMPONENT_REF_CLASS_INDEX. + (lang_type): Removed constant_pool field. + * jcf.h (CPool): Renamed size to count. Added field capacity. + (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2, + CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT): New macros. + Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros. + + * constants.c (current_constant_pool_tags, current_constant_pool_data, + current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool. + * constants.c (build_constants_constructor): Use new outgoing_cpool. + (set_constant_entry, find_constant1, find_constant2, + find_class_constant, count_constant_pool_bytes, write_constant_pool, + find_utf8_constant, find_class_or_string_constant): New functions. + + * jcf-parse.c (load_class): Don't save/restore tree-constant_pool. + (get_constant): Use current_jcf.cpool instead of tree_constant_pool. + (give_name_to_class, get_class_constant): Likewise. + * jcf-parse.c, java-tree.h (tree_constant_pool): Removed. + (get_name_and_type_constant, get_ref_constant): Removed. + * parse.h (parser_ctxt): Remove field tree_constant_pool. + * parse.y: Don't save/restore tree_constant_pool. + * verify.c (verify_jvm_instructions): Update for new approach. + * expr.c (expand_invoke, expand_java_field_op): Likewise. + + * lang-options.h: Added -femit-class-file, -femit-class-files. + * lang.c (flag_emit_class_files), java-tree.h: New flag. + (lang_f_options): Added "emit-class-file(s)". + + * expr.c (build_java_arrayaccess): Generate more efficient array + bounds checking, by using unsigned compare. + + * expr.c (expand_invoke): Re-arrange error checks to make more robust. + +1998-06-10 Alexandre Petit-Bianco + + * parse.h: New comment on the handling of unresolved type + identifiers. JDEPs are now part of the jdep_code enum. + (typedef struct jdep): Now use enum jdep_code or int, depending on + availability. Both are narrowed down to an 8 bits bitfield. + (CALL_EXPR_PRIMARY): Fixed comment. + +1998-06-10 Tom Tromey + + * Make-lang.in (java): Added gjavac and jvgenmain. + (java.start.encap): Depend on gjavac. + (java.rest.encap): Depend on jvgenmain. + + * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++. + (JAVA_CROSS_NAME): Likewise. + (java.all.build): Depend on jvgenmain and gjavac. + (java.all.cross): Depend on jvgenmain and gjavac-cross. + (jvgenmain$(exeext)): New target. + (java.install-common): Wrote. + * config-lang.in (compilers, stagestuff): Added gjavac and + jvgenmain. + +1998-06-10 Dave Brolley + + * lang.c (lang_decode_option): New argc/argv interface. + +1998-06-09 Alexandre Petit-Bianco + + * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard. + * decl.c (build_decl_no_layout): New function. + * expr.c (java_lang_expand_expr): Layout declarations found in + blocks before they're pushed. + * jcf-parse.c (load_class): Save current line when parsing class + file. + (parse_source_file): Register class before expanding their + methods. + * lang.c (put_decl_node): Produce `null' when `void *' is + processed. + * lex.c (static tree wfl_op): New static global, for error report + on casts. + (java_init_lex): wfl_operator and wfl_op initialized + here. Filename caching added for wfl_op. Return wfl_op when `(' is + parsed. + * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast, + patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p, + build_unresolved_array_type): New static function definitions. + (build_decl_no_layout): New extern function declared. + (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the + faulty modifier exists. + (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros. + (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned. + (UNARY_PLUS_EXPR): New fake operator. + (struct parser_ctxt): New field osb_number. + * parse.y (static tree wfl_operator): New static WFL for operator + bound error messages. + (DECR_TK, INCR_TK): Moved. + (OP_TK): Tagged . + (array_type:): Now call build_unresolved_array_type. + (dim_expr:): Count the number of '[' seen. + (post_increment_expression, post_decrement_expression, + pre_increment_expression, pre_decrement_expression, + unary_expression_not_plus_minus, unary_expression:): Actions are + now building the corresponding unary expressions. + (cast_expression:): Actions are now building cast expressions. + (build_unresolved_array_type): New function. + (create_interface): Reset the number of declared interfaces. + (create_class): Likewise. + (method_header): Methods declared within the scope of an interface + are now implicitly set public and abstract. + (java_complete_class): Variable's and parameter's type are patched + with a promoted type. + (declare_local_variables): Resolved non builtin types are promoted + before being used to build a variable decl. Removed type patch + posted on variable initialization statement. + (source_start_java_method): Use build_decl_no_layout to build the + decl of a parameter of incomplete type. + (java_register_parsed_class): Process interfaces too. Call + rest_of_decl_compilation on each processed class declarations. + (java_complete_expand_methods): Don't attempt to expand things in + interfaces. + (java_complete_tree): Process CONVERT_EXPR, even though it always + has a type. Propagate error_mark_node to node's type too. Promote + method's call argument type and return error_mark_node if + argument's completion didn't work. MODIFY_EXPR can have a WFL as a + RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now + handle unary operator nodes. + (build_assignment): Added comment. + (print_int_node): New function. + (patch_assignment): New second argument. New error handling. Use + print_int_node. Handle references. Use can_cast_to_p to issue + different error message according to the context and check upon + the initialization of the RHS. + (can_cast_to_p, valid_ref_assignconv_cast_p): New functions. + (operator_string): Handle more operators. + (patch_binop): No longer use a function static + wfl_operator. Improved error message on shift distance. + (build_unaryop, build_incdec, build_cast, patch_unaryop, + patch_cast): New functions. + +1998-06-05 Per Bothner + + * jvspec.c: New file. + * Make-lang.in: New rules to build gjavac from jvspec.c and ../gcc.c. + + * java-tree.h (identifier_subst): Add declaration. + +1998-06-04 Tom Tromey + + * jvgenmain.c (main): Generate call to JvRunMain. + + * class.c (make_class_data): Push value for "sync_info" field. + * decl.c (init_decl_processing): Push "sync_info" field. + +1998-06-03 Per Bothner + + * typeck.c (build_java_array_type): Set TYPE_NAME to actual + Java (source) name, not signature. + Set TYPE_ALIGN to (at least) that of element_type. + +1998-06-02 Per Bothner + + * class.c: Moved classname-mangling-rekated code to ... + * mangle.c: ... this new file. + * jvgenmain.c: New program (needs mangle.c) to generate main program. + * Makefile.in: Update for above changes. + +1998-06-01 Alexandre Petit-Bianco + + * expr.c (truthvalue_conversion): Convert integer and floating + point value to their truth value. + * lex.c (java_lex): Handle the `null' literal. + * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros. + (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, + ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED): + New macros. + + * parse.y: Reorganization/documentation on token declaration. + (binop_lookup[]): New added new tree codes. + (relational_expression): Build corresponding binary operators. + (equality_expression, conditional_and_expression, + conditional_or_expression): Likewise. + (java_complete_class): Fix crash in debug message. + (java_complete_tree): Check initialization of method call + arguments. Further bogus node evaluation to detect more error + during assignments. Handles more binary operators. + (patch_assignment): Use DECL_P. + (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree + code. + (operator_string): Handle more case. Compacted source. + (patch_binop): Changed function comment. Checking for + uninitialized first operand takes the compound assignment into + account and uses DECL_P. Checking for uninitialized second operand + delayed to routine's end. Use macros to issue type bound error + messages and issue messages on both operands if their types are + different. Force fixed type into node. Handle all binary + operators. + +1998-05-27 Alexandre Petit-Bianco + + * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros. + * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to + build operator node and return tokens. + * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros. + * parse.h (java_complete_tree): Changed returned type in prototype. + (build_method_invocation, build_assignment, patch_assignment, + patch_binop): New static function declarations. + (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P, + BUILD_EXPR_WFL): New macros. + * parse.y (enum tree_code binop_lookup[]): New static for token to + TREE_CODE lookup. + (%union): Parser union has new sub-structure `operator'. + (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK, + PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK, + ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK, + ASSIGN_ANY_TK): Tokens tagged `operator'. + (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK, + AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK, + MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK, + REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'. + (assignment_operator:): Rule tagged `operator'. + (expression_statement:): Re-installed default rule. + (method_invocation:): Sub rules call build_method_invocation. + (postfix_expression:): Don't attempt to resolve name here. Just + return an ID. + (multiplicative_expression:): Sub-rules build corresponding binop + expression node. + (additive_expression:, shift_expression:, and_expression:, + exclusive_or_expression:, inclusive_or_expression:): Likewise. + (assignment:): Sub rule invoke build_assignment. + (assignment_operator:): Default rules on sub rules. + (force_error): Added documentation on this variable. + (declare_local_variables): Build initialization calling + build_assignment. + (expand_start_java_method): Removed unused rtx declaration. Mark + arguments as already initialized. + (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL. + (java_complete_expand_methods): Don't process next method if + completion of the previous one triggered errors. + (java_complete_expand_method): Call source_end_java_method if no + error were found during completion. + (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve + locals declaratilon. Handle names found within a class. Return + error_mark_node when things aren't found. + (patch_method_invocation_stmt): Return error_mark_node on failures. + (patch_invoke): Removed unused local. Return the correct node. + (java_complete_tree): Now returns a value. The BLOCK section binds + local identifiers and the type of a BLOCK is now void. Assign the + result of operand completion on COMPOUND_EXPR. Assign the + encapsulated node of a WFL to the result of its completion, except + when the node is an identifier. Now handle MODIFY_EXPR and several + binary operators. Return error_mark_node on errors. + (build_method_invocation, build_assignment, patch_assignment, + build_binop, operator_string, patch_binop): New functions. + * typeck.c (binary_numeric_promotion): New function. + +1998-05-21 Per Bothner + + * class.c (identifier_subst): New convenience wrapper for ident_subst. + Replace most uses of ident_subst by identifier_subst. + + * class.c (push_class_static_dummy_field): Removed function. + (build_class_ref): Find Class object decl by looking up "CNAME.class", + instead of looking got "class" static field. Create that decl here. + (class_identifier_node): Removed; no longer needed. + (init_class_processing): Don't init class_identifier_node. + * jcf-parse.c (jcf_parse): Don't call push_class_static_dummy_field. + Do nreverse 0 times (instead of twice) for Object and Class. + * parse.y (java_layout_parsed_class): No push_class_static_dummy_field. + +1998-05-20 Per Bothner + + * jcf-parse.c (parse_class-file): Set lino to smallest line number, + while initializing linenumber_count and linenumber_table. + Do it before init_function_start (which calls emit_line_note). + * expr.c (expand_byte_code): Don't need to clear lineno here. + +1998-05-18 Tom Tromey + + * class.c (append_gpp_mangled_type): If `qualifications' is >=9, + then mangle number as _N_. + + * class.c (mangle_class_field): New function. + (build_class_ref): Set assembler name of class reference using + mangle_class_field. + (push_class_static_dummy_field): Likewise. + +1998-05-17 Michael Tiemann + + * parse.y (source_start_java_method): Use TREE_SET_CODE instead + of assigning to TREE_CODE. The latter method exploits a feature + of GCC that is not ANSI compliant. + +1998-05-12 Alexandre Petit-Bianco + + * decl.c (pushdecl_force_head): New function. + (pushlevel): Removed conditional printf. + (complete_start_java_method): Don't enter local variable scope if + function is compiled from source code. + * expr.c: parse.h now included + (java_lang_expand_expr): New function. + * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of + printf. Terminate buffer when doing directories. + * jcf-parse.c (parse_source_file): Call lang_init_source before + parsing and before code generation. + * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally + use printf if the macro is defined. + * lang.c (lang_init): Install lang_expand_expr hook on + java_lang_expand_expr. + (java_dummy_print): New function. + (lang_init_source): New function. + * lex.c (java_lex): Remember location of an opening brace at the + second nesting level. + (java_is_eol): Unget character seen after a CR if it is EOF. + * parse.h: Now includes lex.h + (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use + printf if the macro is defined. + (expand_start_java_method, build_expr_block, enter_block, + exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks): + New static function declarations. + (pushdecl_force_head): New extern function declaration. + (INCOMPLETE_TYPE_P): New macro. + (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum. + (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY, + BLOCK_EXPR_ORIGIN): New macros. + (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST, + DECL_SOURCE_LINE_LAST): New macros. + (struct parser_ctxt): Removed field current_method_decl, redundant + with the field current_function_decl. Added fields + first_ccb_indent1 and pending_block. + * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK, + BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules + tagged + (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs. + (compilation_unit:): Cosmetic on sub rule. + (type_declaration:): Cosmetic on sub rules. Added an error rule. + (variable_initializer:): Installed default rule on expression:. + (method_declaration:): method_header: starts a new + method. method_body: installs the function body, absorbs blocks + emitted for temporary variable scopings, pops function's body block + and merges function's last statement lineno in DECL_SOURCE_LINE. + (method_body:): Installed default rules. + (block:): Call enter_block when an opening brace is seen. Absorb + scoping blocks and call exit_block when a closing brace is seen. + (block_statement:): Cosmetic changes. + (method_invocation:): Create WFL around CALL_EXPR node. + (patch_stage): Added comment around definition. + (method_header): Try to use first_ccb_indent1 as the first line of + the method, so BP debug info are emitted at the first opening + brace of the function. If the function has no body, use the + location of the function's name. Override currently defined method + name with the matching WFL so we can point redefinition errors + using the location where the function's name was declared. + (check_abstract_method_header): Interprets DECL_NAME as an + identifier or as a WFL, accordingly. + (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM. + (check_method_redefinition): Use DECL_NAME as a WFL. Extract + location and name information out of it and reinstall DECL_NAME to + its original identifier node value. + (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the + function's source code). + (read_import_dir): Test the value returned by find_class and issue + a fatal accordingly. + (declare_local_variables): Push a new block for the scope of the + new variable(s) if code has been already generated at that nesting + level. Pinpoint redefinition errors using the variable id + WFLs. Generate initialization code if necessary. If the variable + type is incomplete, register a patch on its decl. + (source_start_java_method): Rewritten. Define a new block for the + function's parameters. Build parameter decl out of function's + arguments and register them for a patch if their types are + incomplete. + (expand_start_java_method): Includes the part of + source_start_java_method that was pushing the parameter decls and + completing the method start code. + (source_end_java_method): Removed call the expand_end_bindings and + poplevel (already taken care of). Reinstall function's arguments + and get function's last line of code before calling + expand_function_end. + (java_method_add_stmt): New comment before the function's + code. Complement the second operand of the current COMPOUND_EXPR + if necessary. + (java_complete_expand_methods): Don't generate debug info on line + zero when expanding a generated constructor. + (java_complete_expand_method): Set start and end line numbers for + a artificially generated constructor to one and manually call + enter_block and exit_block when defining it. For all methods: + expand function's start calling the new expand_start_java_method + and invoke java_complete_tree on the effective method's body, if + any. + (resolve_expression_name): Now use lookup_name_in_blocks to search + local variable decls and print out an error when variables are + undefined. + (patch_method_invocation_stmt): Inserted comment before the + function's code. + (lookup_method_invoke): Chain method's arguments using chainon + with the current arg list as a second argument. Inserted missing + IDENTIFIER_POINTER when reporting an error on methods not found. + (refine_accessible_methods_list): Don't retain constructors. + (patch_arguments): Function removed. + (java_complete_tree): Inserted comment before the function's + code. New case for BLOCKs. Moved the WFL case a bit + further. Complete function's arguments. + (build_expr_block, enter_block, exit_block, lookup_name_in_blocks, + maybe_absorb_scoping_blocks): New functions. + +1998-04-27 Alexandre Petit-Bianco + + * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if + previously set. + * jcf-parse.c (parse_source_file, java_error_count): New forward + and extern declarations. + (java_parse_abort_on_error): Macro moved. + (jcf_parse_source): fatal called if fopen fails. Now calls + parse_source_file. + (parse_source_file): New parse_only parameter. Reflects the + elimination of the second pass. + (yyparse): parse_source_file called with argument set to 0. + * jcf.h (JCF_ZERO): Sets java_source to zero. + * lex.c (java_init_lex): pass argument is gone. Function modified + to be called once during the analysis of a file. + (java_unget_unicode): Fixed typo in fatal message. + (java_get_line_col): Likewise. + (java_lval): Likewise. String literals no longer built during + second pass. + * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into + account. + * parse.h (MODIFIER_WFL): New macro. + (parse_check_super, parser_check_super_interface): Now return int. + (parser_chain_incomplete_item, not_builtin_p, + complete_method_decl): Declarations removed. + (build_method_invocation_stmt, build_invoke): Renamed using the + `patch' instead of `build' + (register-incomplete_type, obtain_incomplete_type, + java_complete_tree, java_complete_expand_method, + unresolved_type_p, create_jdep_list): New function declarations. + (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS, + END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted. + (jdep): New typedef on new struct _jdep. + (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL, + JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN, + JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED, + JDEP_RESOLVED_P): New macros. + (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD, + JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE, + JDEP_VARIABLE): New enum values and jdep kinds. + (jdeplist): New typedef on struct _jdeplist. + (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New + macros. + (CALL_EXPR_PRIMARY): New macro. + (struct parser_ctxt): Fields java_pass, current_method_decl, + method_decl_list deleted. New field jdeplist. + (INCOMPLETE_P): Macro deleted. + * parse.y (single_type_import_declaration:): Removed pass switch. + (type_import_on_demand_declaration): Likewise. + (field_declaration:): Removed pass switch on all sub rules. + (class_declaration:): Call the complete_class_decl removed on + class_body rules. + (method_declaration:): Removed second pass switch. No longer chain + methods decl when method_header reduced. + (method_header:): Sub rules no longer depend on pass switch. + (method_declarator:): Likewise. + (method_body:): Likewise. + (abstract_method_declaration:): Likewise. + (block_statement:): Likewise. + (local_variable_declaration:): Likewise. + (argument_list:): Likewise. + (method_invocation:): Likewise. Call to build_method_invocation_stmt + removed. Partial CLASS_EXPR tree node built instead. + (postfix_expression:): Removed pass switch on all sub rules. + (java_pop_parser_context): Free classd_list content. + (yyerror): Call obstrack_grow0 to finalize error message. + (check_class_interface_creation): Comment modified to reflect new + returned value meaning. Removed second pass switch. Return 1 if an + error was found, 0 otherwise. Adjust pointer on filename if a + leading path separator was found. + (maybe_create_class_interface_decl): Removed first pass switch + when linking the class decl to the class_list. Install a new + jdep_list for the class. + (add_superinterfaces): List of unresolved interfaces is + gone. Unresolved interfaces are directly added to the current + dependencies list. + (create_interface): Second pass shortcut removed. + ctpx->modifier_ctx access through MODIFIER_WFL. + (create_class): Second pass shortcut removed. Call to + register_incomplete_type replaces the call to + parser_chain_incomplete_item. + (complete_class_decl): Function removed. + (duplicate_declaration_error): New way of retrieving redeclared + item type. + (register_fields): Call to lookup_modifier_cl replaced by + MODIFIER_WFL. New way of handling unresolved type, using + unresolved_type_p and obtain_incomplete_type. + register_incomplete_type replaces call to parser_chain_incomplete_item. + (patch_stage): New static global variable. + (method_header): New way of handling unresolved type, using + unresolved_type_p and obtain_incomplete_type. patch_stage used to + indicates that the method decl needs to be patched. + (check_abstract_method_header): Call to lookup_modifier_cl + replaced by MODIFIER_WFL. + (method_declarator): Incomplete argument type are registered + calling register_incomplete_type. Patch on the declared method is + issued in that case. + (unresolved_type_p): New function. + (parser_check_super_interface): New comment to reflect function's + modified returned type (int). Function and has a new argument + this_wfl. Call to parse_error_context uses this_wfl instead of + relying on lookup_cl. + (parser_check_super): Comment reflects function's new returned + type (int). Function returns nonzero value on error. + (create_jdep_list, reverse_jdep_list, obtain_incomplete_type, + register_incomplete_type, jdep_resolve_class): New functions to + handle incomplete types in declarations. + (java_complete_class): Rewritten to work with the new incomplete + type handling scheme. + (complete_class_report_errors): Likewise. + (complete_method_decl): Removed: it jobs is now handled by + java_complete_class. + (do_resolve_class): Class loaded in not already loaded and not + found in Java source code. + (java_check_regular_methods, java_check_abstract_methods): Don't + call complete_method_decl anymore. + (lookup_modifier_cl, not_builtin_p): Functions deleted. + (read_import_dir): Got rid of the pass number dependency. + (declare_local_variables): New handling of unresolved types (patch + issued). + (source_start_java_method): New parameter level. Function called + with level set to 1 when argument types are potentially + unresolved. Called to complete the job with level set to 2 once + types are complete. + (source_end_java_method): Call to permanent_allocation + removed. Waiting to be replaced by a more suitable obstack + management. + (java_complete_expand_methods, java_complete_expand_method, + java_expand_finals): New functions. + (build_method_invocation_stmt): Renamed + patch_method_invocation_stmt. Extracts function call expression + (wfl) and arguments (args) from CALL_EXPR tree operands. + (build_invoke): Renamed patch_invoke. Fixed typo in fatal + call. Patch the function and argument operand of the CALL_EXPR + tree argument. + (patch_argument, java_complete_tree): New functions. + +1998-04-20 Per Bothner + + Recover from missing fields and methods (i.e. error instead of fatal). + * decl.c, java-tree.h (TYPE_identifier_node): New global constant. + * expr.c (expand_invoke): Recover from missing method. + (expand_java_field_op): Recover from missing field. + Inline references to java.lang.{Integer,Char,...}.TYPE. + * typeck.c (get_type_from_signature), java-tree.h: New function. + * class.c (add_method): Use get_type_from_signature. + (build_class_ref): Handle a class that was not found. + * typeck.c (convert): Handle conversion to pointers (for convenience). + * verify.c (verify_jvm_instructions): Use get_type_from_signature + instead of lookup_field to handle missing fields. + + * jcf-parse.c (process_zip_dir): Set java_source. + +1998-04-20 Brendan Kehoe + + * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME. + +1998-04-14 Alexandre Petit-Bianco + + * jcf-parse.c (load_class): Don't change input_filename before + calling jcf_parse_source (but still do it before calling + jcf_parse). + (jcf_parse_source): Assign input_filename after having saved the + parser context. + * lex.c (java_init_lex): Chain a WFL node to the import on demand + list. ctxp->modifier_ctx zeroed according to its new + definition. ctxp->filename initialized. Removed + JAVA_MODIFIER_CTX_UNMARK. + (java_unget_unicode): Update the character based column position. + (java_allocate_new_line): ref_count not used anymore. Always free + ctxp->p_line. Initialize c_line->char_col to 0. + (java_get_unicode): Update the character based column position. + (java_lex): Use ctxp->elc to store current position in source + file, at the beginning of the parsed token. Set modifier_ctx entry + corresponding to the parse modifier to a WFL node. Return a WFL + node when an identifier is parsed. + (java_lex_error): Now uses ctxp->elc to store current position in + source. + (build_wfl_node, java_is_eol, java_get_line_col): New functions. + * lex.h (build_wfl_node): New function definitions. + (struct java_line): ref_count and next fields are gone. New field + char_col. + (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN, + JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted. + (JAVA_COLUMN_DELTA): New macro. + (java_lc): New typedef on new struct _java_lc. + * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types. + (parse_error_context, parse_warning_context): Changed prototypes. + (java_get_line_col): Added as an available global function. + (JAVA_MODIFIER_CTX_UNMARK): Macro removed. + (IC_DECL): Replaced by macro IC_TYPE + (DEPEND_WFL): New macro. + (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first + wrong modifier. + (exit_java_complete_class): Removed a commented out statement. + (struct parser_ctxt): Added comments on fields. modifier_ctx is + now an array of tree nodes. Deleted fields line_list and + e_line. New field elc, to replace e_line. + * parse.y (array_type:): Build WFL node. + (qualified_name:): Build a single WFL node out of two. Retain + the location information of the first node in the resulting node. + (package_declaration:): Use package name as a WFL node + (single_type_import_declaration:): Use imported name as a WFL node. + (type_import_on_demand_declaration:): Use root of the imported + packages as a WFL node. + (field_declaration:): Removed unused local variable cl. + (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK. + (yyerror): New static elc. Removed static error_line, error_pos. + New local code_from_source. Save ctxp->elc into elc at the first + pass. Call java_get_line_col to get a string of the line where + the error occurred. + (debug_line): Removed static function. + (parse_error_context, parse_warning_context): Parameter cl is now + a WFL node. Use its value to initialize ctxp->elc. + (redefinition_error): Parameter cl is now a WFL node. + (parse_add_interface): New parameter wfl. No longer call + lookup_cl, use wfl instead. + (check_class_interface_creation): Parameter cl is now a WFL node. + (maybe_create_class_interface_decl): Likewise. + (add_superinterfaces): New function. + (create_interface): Removed local cl, node, super_decl, + super_decl_type. Function now uses id as a WFL node. Better + warning/error report on obsolete or forbidden mix of + modifiers. Now calls add_superinterfaces to register interfaces. + (create_class): Removed local cl, node. Local variable id is used + as a WFL node. Better error report on forbidden modifier + mix. Uses add_superinterfaces to register interfaces. + (find_field): Argument cl is now a WFL node. Now store the WFL + node of a fields that needs to be checked for their + initialization. + (method_header): Local variable node non longer used. Local + variable id replaces cl. + (check_modifiers_consistency): Local variable cl is now a WFL + node. + (method_declarator): Local variable cl replaced by parameter id. + (parser_qualified_name): Now uses parameter name as a WFL node. + (parser_check_super_interface): New parameter wfl, for achieve + greater accuracy during error reports. + (parser_chain_incomplete_item): New parameter named location. Used, + along the decl, to construct the incomplete item node. + (java_complete_class): resolve_class now uses WFL node extracted + from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE + where appropriate. + (complete_method_decl): Unresolved function's argument types are WFL. + (resolve_class): Parameter cl is now a WFL node. + (resolve_and_layout): Likewise. + (do_resolve_class): Likewise. Try first to use cl and then do the + lookup on the decl when calling check_pkg_class_access. + (complete_class_report_errors): Use IC_TYPE in place of + TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency + instead of doing a lookup over the decl. + (java_check_final): Use WFL info from field tree list. + (lookup_cl): Rewritten and returns a statically defined WFL node. + (lookup_modifier_cl): Now uses information from WFL nodes. + (process_imports): Likewise. + (read_import_dir): name and cl arguments replaced by a single WFL + node. Function modified accordingly. + (find_in_imports_on_demand): Now uses WFL node. + (check_pkg_class_access): cl argument is now a WFL node. + (declare_local_variables): Fixed to use WFL nodes. + (resolve_expression_name): Likewise. + (build_method_invocation_stmt): name_combo argument renamed + wfl. Function modified to use WFL nodes. + (build_invoke): cl used as a WFL node when calling build_expr_wfl. + (lookup_method_invoke): cl is now a WFL node. Added missing + IDENTIFIER_POINTER to class type decl name. + +1998-04-14 Dave Brolley + + * lang.c (init_parse): Now returns char* containing the filename. + +1998-04-10 Per Bothner + + * class.c (layout_class): Mangle repeated arg types to match cc1plus. + + * decl.c, java-tree.h (integer_four_node): New INTEGER_CST node. + * class.c (make_class_data): If flag_assume_compiled, initial class + state is CSTATE_PREPARED; make superclass and interfaces direct + references, rather than constant pool indexes. + +1998-04-09 Alexandre Petit-Bianco + + * parser.y: Include flags.h. Removed debug variable pl. + (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl. + (block:): Likewise. + (labeled_statement_nsi:): Generate debug info when reducing + expression_statement:. + (check_pkg_class_access): get_access_flags_from_decl invocation + fixed for new CLASS_* flags location. + (source_end_java_method): Save/restore parser context when + entering/leaving this routine. Restore lineno to its right value + before calling expand_end_bindings. + (build_method_invocation_stmt): build_invoke called with the + current line information. + (build_invoke): New argument cl. Wrap the function call around a + wfl node. + (refine_accessible_methods_list): Changed comment, removed + unnecessary code. + * parse.h: Fixed typo in comments. + (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location. + (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro. + (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1, + parser_ccb_indent. + * lex.c (java_lex): Record the last closing curly bracket of a + function. + * jcf-parse.c (jcf_parse_source): Now calls + java_check_methods. Clarified comment, fixed typo. + +1998-04-09 Dave Brolley + + * lang.c (init_parse): Expose for non USE_CPPLIB builds. + (finish_parse): Expose for non USE_CPPLIB builds. + +1998-04-08 Jeffrey A Law (law@cygnus.com) + + * lang.c (lang_print_xnode): New function. + +1998-04-03 Per Bothner + + * decl.c (class_dtable_decl), java-tree.h: New tree node. + * class.c (get_dispatch_vector, get_dispatch_table): New functions + used to build a class's dispatch table. + (make_class_data): Generate dispatch table if flag_assume_compiled. + Set dtable of class object to address of class_dtable_decl. + + * decl.c (int_decl_processing): Make soft_badarrayindex_node + be volatile and have side effects - generates better code. + + * class.c, expr.c, parse.y: CLASS_INTERFACE, CLASS_FINAL, etc: + These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs. + + * expr.c (expand_invoke): If class is final, method is + effectively final, so can call it directly. + + * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE): New macros. + + * Makefile.in, Make-lang.in: Add missing $(exeext)s. + +1998-03-19 Alexandre Petit-Bianco + + * parse.y (build_method_invocation_stmt): Removed extra argument + to build_invoke. + +1998-03-16 Alexandre Petit-Bianco + + * expr.c (dtable_indent): Now static global. + (expand_invoke): Now call invoke_build_dtable and + build_invokevirtual. + (invoke_build_dtable, build_invokevirtual): New functions. + * jcf-io.c (find_class): Defer issuing a warning by setting + jcf->outofsynch to 1. + * jcf-parse.c (jcf_out_of_synch): New function. + (load_class): Test this_jcf.outofsynch flag and call + jcf_out_of_synch accordingly. + * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in + comment indentation. + * lex.c (java_get_unicode): Fixed code indentation. + (java_lex): Create string literal. Fixed typo. Removed several + premature obstack_free. + * parse.h: New enums for name resolution and invocation mode. + (struct qualification): New data structure. + (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros. + (do_resolve_class, build_method_invocation_stmt, + breakdown_qualified, qualify_ambiguous_name, resolve_and_layout, + debug_line, identical_subpath_p, invocation_mode, + refine_accessible_methods_list, build_invoke, + lookup_method_invoke): New functions declared. + (build_invokevirtual, invoke_build_dtable, match_java_method, + build_field_ref, jcf_out_of_synch): New references to external + functions. + (struct parse_ctxt): Removed artificial_constructor field. + * parse.y: (array_type:): Type defined for this rule. + (class_type:): Installed default rule for interface_type:. + (array_type:): Now build Java array type. + (qualified_name:): Now use obstack_grow0. + (method_declaration:): Skip the artificial constructor added to + the list, if any. + (abstract_method_declaration:): Execute the code only during pass 1. + (block:): Installed default rule in block_statements:. + (block_statement:): Add the statement to the method during pass 2. + (statement_expression): Installed default rule for + method_invocation:. + (argument_list:): Added code to build the argument list. + (method_invocation:): Added call to create the method invocation + node. + (yyerror): Now use obstack_grow0. Removed bogus obstack_free. + (debug_line): New function for debug. + (complete_class_decl): No longer do something during pass 1. + (method_header): Use BUILD_PTR_FROM_NAME. + (parser_qualified_classname): Use obstack_grow0. Removed bogus + obstack_free. + (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified + function's main comment. + (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete + classes. + (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types. + (resolve_class): Now works with arrays. + (do_resolve_class, resolve_and_layout): New functions. + (java_check_regular_methods): Reverse method list before and after + having processed it. No longer set ctxp->artificial_constructor. + (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch + accordingly. Fixed typo in issued error message. Now use + obstack_grow0. + (find_in_imports_on_demand): Now use obstack_grow0. + (declare_local_variables): Use BUILD_PTR_FROM_NAME. + (source_end_java_method): Call expand_expr_stmt instead of + expand_expr. Calls it before calling expand_function_end. + (java_method_add_stmt): Do nothing if errors were found during + parsing. + (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo. + (build_method_invocation_stmt, build_invoke, invocation_mode, + lookup_method_invoke, refine_accessible_methods_list, + qualify_ambiguous_name, breakdown_qualified, identical_subpath_p): + New functions. + * typeck.c (build_java_signature): Properly end method signature + if return type skipped. + (match_java_method): New function. + +1998-03-16 Per Bothner + + * jcf-io.c (find_classfile): If USE_JCF_STDIO, fopen in binary mode. + +1998-02-25 Alexandre Petit-Bianco + + * expr.c (build_invoke_non_interface): New function. + (methods_ident, ncode_ident): Now static globals. + (expand_invoke): Use build_invoke_non_interface. + * java-tree.h (struct lang_decl): New field function_decl_body. + (DECL_FUNCTION_BODY): New macro. + * jcf-parse.c (jcf_parse_source): Deeper check before setting + CLASS_FROM_SOURCE_P. + (parse_source_file): Fixed typos. Call java_layout_parsed_class + before starting pass 2. Call to java_generate_parsed_class replaced + by java_register_parsed_class. + * lex.c: Fixed typo in header. Some line width related formating. + * lex.h: Some line width related formating. + * parse.h (source_end_java_method, resolve_expression_name, + complete_class_decl, maybe_create_class_interface_decl, + check_class_interface_creation): New static function declarations. + (java_layout_parsed_class, java_method_add_stmt): New function + declarations. + (struct parser_ctxt): Field mark_class_generate removed. New + fields class_list and artificial_constructor. + * parse.y: Fixed typo in header. + (class_declaration:): Call complete_class_decl when class body + parsed. + (method_declaration:): Call source_end_java_method in pass 2 when + the method body is defined. + (postfix_expression:): Do expression name resolution on sub-rule + name during pass 2. + (create_class, create_interface): Merged common pieces. + (check_class_interface_creation, maybe_create_class_interface_decl): + New functions. + (complete_class_decl): New function. + (register_fields): Fixed line width related typo. + (method_header): Correctly skip first argument when fixing + argument line. Changed the loop. + (java_check_circular_reference): Now use ctxp->class_list. + (java_complete_class): Removed start/stop marking. + (java_check_regular_methods): Now takes a class decl as an + argument. Add default constructor if none were encountered. + (java_check_methods): Now use ctxp->class_list. Changed call to + java_check_regular_methods. + (source_start_java_method): Set DECL_ARG_TYPE for each function + arguments. + (source_end_java_method, java_method_add_stmt): New functions. + (java_generate_parsed_class): No longer exists. + (java_layout_parsed_class, java_register_parsed_class): New functions. + (resolve_expression_name): New function. + +1998-02-12 Alexandre Petit-Bianco + + * jcf-parse.c: (parse_source_file): Check on errors after init lex. + * lex.c: (java_init_lex): Defer ctxp->java_pass initialization + until pass initializations are done. Call read_import_dir with + pass set to 0. + * parse.h: (lookup_modifier_cl): New function declared. + (INTERFACE_FIELD_MODIFIERS): New macro. + (OBSOLETE_MODIFIER_WARNING): New macro. + * parse.y: (register_fields): Class type and current field name in + local variables. Check modifier(s) if adding field(s) to an interface. + (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING + and report errors using the faulty modifier line context. + (lookup_modifier_cl): New function. + (read_import_dir): Detect and report default import processing + failure. + +1998-02-11 Brendan Kehoe + + Add a pair of -fassume-compiled/-fno-assume-compiled options. + * class.c (is_compiled_class): Return 1 after making sure it + qualifies as loaded, if FLAG_ASSUME_COMPILED is set. + * lang-options.h: Add -fassume-compiled/-fno-assume-compiled. + * java-tree.h (flag_assume_compiled): Add decl. + * lang.c (lang_f_options): Add the flag. + (flag_assume_compiled): Add decl, default to 0. + +1998-02-11 Alexandre Petit-Bianco + + * class.c (class_depth): Call to load_class uses extra VERBOSE arg. + (is_compiled_class): Likewise. + (layout_class): Likewise. + (layout_class): Detect and lay out classes defined in source code. + (interface_of_p, add_interface_do, may_add_interface): New + function. + (add_interface): Now use add_interface_do. + (add_method_1): New function. + (add_method): Now use add_method_1. + (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG. + (complete_start_java_method): New function. + (start_java_mehod): Now call complete_start_java_method. + * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg. + (expand_invoke): Likewise and fixed typo. + *gjava.c: (print_super_field): Use new argument to find_class + DO_CLASS_FILE. + (main): Likewise. + *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE. + (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME, + QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on + IDENTIFIER_NODE. + (CLASS_COMPLETE_P): New flag on TYPE_DECL. + (add_method_1, push_class): New prototypes. + *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument. + *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip + directory where the class was found. + (find_class): New argument DO_CLASS_FILE. Function find_class + modified accordingly. + *jcf-parse.c: (fix_class_path): New function. + (load_class): Use new VERBOSE argument. load_class now finds and + loads/parses .class/.java files. Save read_state of current_jcf + if necessary. + (java_parser_abort_on_error): New macro. + (jcf_parse_source, parse_source_file): New function. + (jcf_parse): Fixed typo. + (yyparse): Call parse_source_file () only. + (process_zip_dir): Fixed typo, fix zdir->filename_length when + writing the real class name back in the zip directory entry. + (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null. + (jcf_figure_file_type): Fixed bogus alloc and bcopy. + *jcf.h: (typedef struct JCF): New fields java_source and zipd. + (find_class): Prototype fixed. + *lex.c: Added 1998 time stamp. + Removed all static global variables, moved into the parser + context data structure.. Now include unistd.h if SEEK_SET not + defined. + (java_init_lex): Rewritten. + (java_sneak_unicode): Modified current unicode access in current line. + (java_unget_unicode): Likewise. + (java_allocate_new_line): New allocation management. + (java_read_char): Modified access and storage of unget_utf8_value. + New way of processing current unicode. + (java_store_unicode, java_read_unicode): Fixed typo in declaration. + (java_get_unicode): Now use the parser context. + (java_lineterminator): Likewise. + (java_lex): Now used java_lval argument (pointer to YYSTYPE), part + of the reentrant parser implementation. Function now use the + parser context data structure and java_lval. Fixed production of + the float and double constant "out of range" error message. Fixed + obstack use. Return integer value when hitting a modifier. Now + return type for TRUE, FALSE and other predefined types. Return + identifier as a TREE_LIST list containing the current line context + as the TREE_VALUE sub-node. + (java_unicode_2_utf8): Fixed typo in declaration. + (java_lex_error): Now use the parser context data structure. + *lex.h: Added 1998 time stamp. + (struct java_line): New fields ref_count and next. + (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN, + JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros. + (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed. + *parse.h: Added 1998 time stamp. + (java_parse_source_file): Renamed from parse_source_file. + (YYERROR_NOW, YYNOT_TWICE): Fixed. + (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS, + INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS, + JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL, + THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS, + END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class, + CLASS_OR_INTERFACE, INCOMPLETE_P): New macros. + (struct parser_ctxt): New data structure to keep the parser context. + *parse.y: Added 1998 time stamp, got rid of static global variables. + (java_error_count, ctxp): New global variables. + (%union): New value field. + (numeric_type, integral_type): Rules removed. + (primitive_type): Rule defined to handle integral, float, double and + boolean types. + (qualified_name, package_declaration, + single_type_import_declaration, type_import_on_demand_declaration, + modifiers, class_declaration, super, interfaces, + interface_type_list, class_body, field_declaration, + field_declaration, variable_declarators, variable_declarator, + variable_declarator_id, method_declaration, method_header, + formal_parameter_list, formal_parameter, method_body, block, + static, interface_declaration, extends_interfaces, + abstract_method_declaration, local_variable_declarators): Rules now + define actions. + (force_error, do_warning): New global statics. + (push_parser_context, parser_context_save_global, + parser_context_restore_global, pop_parser_context): New functions. + (yyerror): Now uses the global parser context. Fixed use of obstack. + (parse_error, parse_error_context, parse_warning_context, + java_accstring_lookup, redefinition_error, check_modifiers, + parser_add_interface, create_interface, create_class, find_field, + duplicate_declaration_error, register_fields, method_header, + check_modifiers_consistency, check_abstract_method_header, + method_declarator, parser_qualified_classname, + parser_check_super_interface, parser_check_super, + parser_chain_incomplete_item, java_check_circular_reference, + layout_class_from_source, java_complete_class, + complete_method_decl, resolve_class, complete_class_report_errors, + java_check_final, check_method_redefinition, + java_check_regular_methods, java_check_abstract_methods, + java_check_methods, lookup_java_interface_method2, + lookup_java_method2, lookup_cl, find_name_in_single_imports, + process_imports, find_in_imports, read_import_entry, + read_import_dir, find_in_imports_on_demand, + check_pkg_class_access, not_builtin_p, declare_local_variables, + source_start_java_method, java_generate_parsed_class): New + functions. + *typeck.c: (signature_include_return): New global variable. + (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether + to add the function returned type in the signature. + +1998-02-09 Brendan Kehoe + + * jcf-io.c (open_in_zip): Use strncmp and LEN. + +1998-01-29 Dave Brolley + + * Make-lang.in (java.info): Added. + (java.install-info): Added + +1998-01-27 Brendan Kehoe + + * Makefile.in (clean): Also remove java/parse.c. + +1998-01-26 Brendan Kehoe + + Add a pair of -fbounds-check/-fno-bounds-check options. + * lang.c (lang_decode_option): Add code to grok arguments. + (flag_bounds_check): Add decl. + (lang_f_options): New array w/ the option in it. + * java-tree.h (flag_bounds_check): Add decl. + * lang-options.h: New file. + * expr.c (build_java_arrayaccess): Use flag_bounds_check instead + of a static macro value. + (JAVA_ARRAY_EXCEPTION): Delete macro. + +1998-01-23 Per Bothner + + * typeck.c (build_java_array_type): Fix two bugs in previous change. + * expr.c (build_anewarray): Add missing promote_type. + +1998-01-22 Per Bothner + + Add array types with known length to optimize bounds checking. + * typeck.c (build_java_array_type): Take length parameter. + (java_array_type_length, build_prim_array_type): New functions. + * java-tree.h: Update for new functions. + * expr.c, typeck.c, verify.c: Update build_java_array_type calls. + * class.c: Use build_prim_array_type. + * expr.c (can_widen_reference_to): Handle known-length array types. + (verify_jvm_instructions): Keep track of integer push instructions + followed by newarray/anewarray, so we can build known-length arrays. + (JAVA_ARRAY_DATA_OFFSET): Replace by ... + (java_array_data_offset): New function. + (build_java_array_length_access): New function. Optimize if constant. + (build_java_arrayaccess): Constant fold bounds check. + (expand_java_newarray, expand_java_anewarray): Replaced by ... + (build_newarray, build_anewarray): New functions. + (ARRAY_NEW_NUM, ARRAY_NEW_PTR): Use build_{a,}newarray. + * verify.c (merge_types): Handle known-lengh array types. + +1998-01-19 Per Bothner + + * expr.c (expand_byte_code): Fix performace bug, which caused + searching linenumber_table to be linear rather than constant. + +1997-12-12 Per Bothner + + * Makefile.in (BISON, BISONFLAGS): Add missing macros. + + * decl.c, java-tree.h (soft_fmod_node): New global. + * decl.c (init_decl_processing): Define __builtin_fmod. + * expr.c (build_java_binop): Implement TRUNC_MOD_EXPR for REAL_TYPE + using __builtin_fmod. + +1997-12-04 Alexandre Petit-Bianco + + * keyword.h: New file, output of keyword.gperf as processed by + gperf. + * lex.c (java_lex_init): Initialize java_error_flag. + * parse.c (YYERROR_NOW): Uses java_error_flag. + * parse.y: New static java_error_flag. Useless definition of + buffer_error gone. + * parse.y (java_error): Portable error recovery using + java_error_flag (not yet completely tuned). + +1997-12-04 Brendan Kehoe + + * Makefile.in (parse.c): Use $(srcdir) for parse.y. + +1997-12-03 Alexandre Petit-Bianco + + * Makefile.in: (JAVA_OBJS): New object jcf-parse.o. + (parse.c, lex.c, keyword.h): New rules for Java source code + front-end. + * parse.c: Renamed into jcf-parse.c. + * jcf-parse.c (yyparse): Invoke the parser to process Java source code. + * keyword.gperf: New file, Java keywords. + * parse.y: New file, Java language grammar. + * parse.h: New file, Java language grammar definitions. + * lex.c: New file, Java language lexer. + * lex.h: New file, Java language lexer definitions. + +1997-12-03 Per Bothner + + * decl.c (clinit_identifier_node), java-tree.h: New global. + * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P): Removed. + * verify.c (verify_jvm_instructions): Inline use of removed macros. + * expr.c (expand_java_field_op): Check for invalid assignment + to final field. + + * jcf-reader.c (get_attribute): Test for wrong attribute length. + +1997-10-27 Per Bothner + + * verify.c (verify_jvm_instructions): When processing a handler, + attempt to set the current_subr to the right value. + (More complicated code combines Sep 17 and Oct 22 versions.) + +1997-10-24 Per Bothner + + * class.c (push_class): Figure out (guess) name of source file. + * parse.c (set_source_filename): Set DECL_SOURCE_FILE of class decl. + (give_name_to_class): Don't guess source name; use DECL_SOURCE_FILE. + (parse_class_file): Change return type from int to void. + Call debug_start_source_file/debug_end_source_file. + + * expr.c (build_java_binop): Fix masking 2nd operand. + * decl.c (init_decl_processing): Set sizetype first. + +1997-10-22 Per Bothner + + * verify.c (verify_jvm_instructions): Don't set current_subr to NULL. + (Revert Sep 17 change.) + +1997-10-21 Alexandre Petit-Bianco + + * parse.c (process_zip_dir): Skip ZIP entries not bearing the + .class extension in their name and fix thing so we don't process + them parse_zip_file_entries(). + (parse_zip_file_entries): Cleaned unused local variables. + +1997-10-20 Per Bothner + + * expr.c (can_widen_reference_to): Allows equal array element types. + (expand_byte_code): PRE_RET must expand OPERAND_VALUE (to get index). + * jcf-dump.c (RET): Get (and print) index. + + * verify.c (verify_jvm_instructions case OPCODE_anewarray): + Promote element type to POINTER_TYPE. + +1997-10-20 Alexandre Petit-Bianco + + * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir, + find_in_current_zip, jcf_figure_file_type): Moved from + jcf-reader.c to parse.c. + * zextract.c: (read_zip_archive): takes file_comment_length possible + field into account. + +1997-10-20 Per Bothner + + * verify.c (verify_jvm_instructions): Var can also be promoted to int. + + * verify.c (merge_types): Handle array types even better ... + +1997-10-17 Per Bothner + + * expr.c (java_stack_pop): Fix use of NULL_TREE for TYPE_SECOND. + + * java-tree.h (PUSH_FIELD): Set DECL_ARTIFICIAL. + * class.c (make_class_data): Don't build fields_decl if no fields. + When building fields_decl, skip if DECL_ARTIFICIAL. + + * expr.c (java_stack_swap): Update stack_type_map. + * verify.c (merge_types): Handle array types better. + +1997-10-15 Per Bothner + + * class.c (add_field): Don't promote short integral fields to + int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't. + * expr.c (push_value): Promote and convert short integral values. + + * decl.c, java-tree.h (integer_two_node): New constant node. + * verify.c (merge_types): Check for TYPE_RETURN_ADDR. + +1997-10-15 Alexandre Petit-Bianco + + * class.c (append_gpp_mangled_type): Use function argument + unpromoted type to generate mangled name. + +1997-10-13 Alexandre Petit-Bianco + + * constants.c (build_constant_data_ref): Now uses current_class + instead of main_class. + (build_constants_constructor): Now uses current_class instead of + main_class. + * zipfile.h: (struct ZipFileCache): Now defined here. Declaration + of the global variable SeepZipFiles done here. + * zextract.c (read_zip_archive): extra_field optional field taken + into account while computing the position of the class file in the + archive. + * verify.c (verify_jvm_instructions): Use current_jcf to search + the constant pool. + * parse.c (load_class): First search for the class to load in the + current zip file. Saves current_jcf (restored before returning + from that function). Don't call JCF_FINISH in the class was found + in the current ZIP file. + (jcf_parse): If the class was found in the current ZIP file, save + its tree_constant_pool (for later reuse). + (parse_class_file): New function. Process each method defined in + the current class and record the class as to be later registered. + (yyparse): Rewritten. Figure the type of the current file and switch + accordingly. + * lang.c: New global variable current_jcf. + (lang_init): Removed compiling_from_source test (done later, in + yyparse). Removed call the jcf_parse (). + * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values. + (typedef struct JCF): New fields seen_in_zip (to mark a class found + in the current ZIP file) and zip_offset (offset to the class data in + the current zip file). + * jcf-reader.c: zipfile.h included. + localToFile: New ZipFileCache static global variable + (parse_zip_file_entries): New function. Browse the current ZIP + file directory and process each class found. + (process_zip_dir): New function. Register each class found in the + ZIP file directory. The class aren't parsed but a valid JCF is + link to each of them. + (find_in_current_zip): New function. Search for a class in the + current ZIP file directory. If found, prepare the class so that it + can be loaded. + (jcf_figure_file_type): New function. Examine the file structure + to figure a class file, a ZIP file. If none of these categories are + matched, a source file is assumed. + * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h). + SeenZipFile: New global variable. + (open_in_zip): Use zipmember's length to accelerate the search for + a member. If zipmember was NULL and zip file successfully read, + return 0. + * java-tree.h: New global variable current_jcf declared. Added + declaration for current_constant_pool_tags, current_constant_pool_data, + current_constant_pool_length, current_constant_pool_data_ref. + (struct lang_type): Augmented with two fields. struct JCF *jcf (to + store the JCF of classes seen in a zip file) and tree *constant_pool + (to save a loaded class constant pool). current_class declared here. + * expr.c (expand_invoke): Use current_jcf instead of main_jcf to + retrieve method_ref_constant. + (PUSHC): java_push_constant_from_pool now uses current_jcf. + (OBJECT): get_class_constant now uses current_jcf. + (ARRAY_NEW_PTR): get_class_constant now uses current_jcf. + (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf. + (expand_invoke): Now uses current_class instead of main_class + (build_class_init): Now uses current_class instead of main_class + * class.c: New static global variable registered_class. + (register_class): New function. + (emit_register_class): Modified to use registered_class instead of + main_class + (is_compiled_class): Now take into account class seen in the archive. + +1997-10-06 Per Bothner + + * except.h: Renamed to: java-except.h. + * parse.c, except.c, expr.c, verify.c: Update #include accordingly. + * except.c: Add semi-working (commented out) implementation. + + * expr.c (expand_iinc): Add needed flush_quick_stack. + * parse.c (set_source_filename): New function. + (give_name_to_class): Set input_filename from package.classname.java. + + * jcf-io.c (find_class): Don't look first in ".". + +1997-10-01 Alexandre Petit-Bianco + + * zextract.c (read_zip_archive): Now takes into account the + extra_field field. + * expr.c (can_widen_reference_to): Modified to handle sub-interfaces. + +1997-09-20 Per Bothner + + * constants.c, java-tree.h (build_internal_class_name): New function. + (alloc_class_constant): Re-implement using build_internal_class_name. + * class.c (make_class_data): Likewise. + * class.c (hashUtf8String): Make hash algorithm match String.hashCode. + +1997-09-17 Per Bothner + + * verify.c (verify_jvm_instructions): Temporarily set current_subr + to NULL before pushing an exception handler target. + + * expr.c (flush_quick_stack): Save from low stack indexes to high. + (java_stack_swap, java_stack_dup): Re-write to be safe from + clobbering registers. + (build_class_init): New function. + +1997-09-17 Alexandre Petit-Bianco + + * typeck.c (build_java_array_type): Temporary use + permanent_obstack to create the array 'length' field. + * expr.c (lookup_label): Temporay use permanent_obstack to create + label if not found. + * class.c (push_super_field): Tempory use permanent_obstack. + +1997-09-15 Alexandre Petit-Bianco + + * typeck.c (type_for_mode): Now handles double_type_node and + float_type_node. + * verify.c (verify_jvm_instructions): The instruction following + the wide bytecode is checked. OPCODE_ret added to the list of + wide. + +1997-09-11 Alexandre Petit-Bianco + + * class.c (make_class): Temporary use permanent_obstack. Set the + class CLASS_P field to 1. + (push_class): Temporary use permanent_obstack. + (set_super_info): Temporary use permanent_obstack. + (add_method): Temporary use permanent_obstack, set + METHOD_TRANSIENT(). + (add_field): Temporary use permanent_obstack. Sets + FIELD_VOLATILE() and FIELD_TRANSIENT(). + (build_class_ref): Temporary use permanent_obstack if the class + isn't compiled. + (build_static_field_ref): Temporary use permanent_obstack when + creating field's rtl. + (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT, + ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods + and fields. Function finalized, as far as flag handling. + (push_class_static_dummy_field): Temporary use permanent_obstack. + (emit_register_class): Force generation of class registration at + -O3 or deeper. + * decl.c (end_java_method): Call permanent_allocation() before + returning. + * expr.c (can_widen_reference_to): Added comment to interface + handling, fixed typo. + (lookup_field): Now uses CLASS_P() to correct FIXME + (expand_invoke): Verification on public && !static && + !abstract moved into soft_lookupinterfacemethod (kaffe). + Use Object class dtable if objectref is an array when expanding + invokeinterface. + (java_push_constant_from_pool): Temporary use permanent_obstack + for CONSTANT_string + * parse.c (get_ref_constant): Temporary use permanent_obstack to + create constant references. + (get_constant): Temporary use permanent_obstack to create constant. + (load_class): Temporary use permanent_obstack to load class. + (jcf_parse): Temporary use permanent_obstack to perform class + layout. + * typeck.c: (parse_signature_string): Temporary use permanent_obstack. + (build_java_signature): Temporary use permanent_obstack. + * verify.c: (verify_jvm_instruction): removed unnecessary verification + on ACC_SUPER flag. + * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined. + (FIELD_VOLATILE, FIELD_TRANSIENT): Defined. + (CLASS_P): Defined + +1997-09-11 Per Bothner + + * class.c (append_gpp_mangled_type): Fix typo. + (emit_register_class): Use main_class to get class object, rather + than looking for no-longer-existing static decl starting with _CL. + * typeck.c (parse_signature_type): Promote array element type + if it is a RECORD_TYPE. + +1997-09-10 Per Bothner + + * class.c (push_class_static_dummy_field): New function. + (mangle_static_field): New. Do G++-style mangling of static fields. + (layout_class): Mandle static fields here, not in add_field. + (build_class_ref): The class object is now a dummy static field. + * decl.c (find_local_variable): Look for best, instead of first match. + * expr.c (push_type): Always promote_type, not just for RECORD_TYPE. + (build_java_athrow): Don't check here if exception is Throwable. + * java-tree.h (TYPE_UNSET): Renamed to TYPE_UNKNOWN. + (TYPE_USED): Removed. No longer used ... + * parse.c (jcf_parse): Call push_class_static_dummy_field. + * verify.c (push_pending_label): New function. + (push_pending_block): Renamed to check_pending_block. + (merge_types): Remove unneeded suuport for TYPE_UNUSED. + (verify_jvm_instructions): Only reset prev_eh_ranges (to force + re-checking possible handlers) after a store (less wasted work). + Check for null handler (finally) before calling add_handler. + Various changes to (finally?) correctly handle try/finally. + +1997-09-09 Brendan Kehoe + + * class.c: Include stdio.h. + +1997-09-04 Per Bothner + + * expr.c (expand_invoke): Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS) + to make sure class is initialized before static/special invoke. + + * verify.c (verify_jvm_instructions): On a store instruction, + call find_local_variable to force pre-allocation of decl and rtx. + * decl.c (push_jvm_slot): Set DECL_REGISTER on stack slots. + +1997-09-03 Per Bothner + + * class.c (build_class_ref): Strip off "promoted_" if need be. + (make_field_value): Call build_java_signature when needed. + (layout_class): Don't make_function_rtl if METHOD_ABSTRACT. + * expr.c (build_java_athrow): Don't push_value of exception. + (build_java_binop): Implement COMPARE_L_EXPR and COMPARE_G_EXPR to + match specification of [fd]cmp[lg] for NaNs. + (expand_byte_code): Add support for exception handler ranges. + * except.c: Add skeleton for EH code-generation. + * verify.c (merge_types): Treat all promoted integral types as equal. + * constants.c (build_constants_constructor): To force creation of + current_constant_pool_data_ref, call build_constant_data_ref. + + * javaop.def (lload): Fix typo. + * jcf-dump.c (main): Clear filename to prevent possibly-bad free. + +1997-09-02 Brendan Kehoe + + * parse.c: Don't include function.h. + +1997-08-27 Per Bothner + + * except.[ch]: New files. + * Makefile.in (JAVA_OBJS): Add except.o + * expr.c: Temporary warning about unimplemented exceptions. + * verify.c: Verify exception handlers. + + * jcf-dump.c (disassemble_method): Print exception table. + +1997-08-27 Alexandre Petit-Bianco + + * expr.c (verify_jvm_instructions): Started a thorough + verification of invoke* bytecodes. + (expand_byte_code): flush quick stack if PC is the target of a + branch. and undef RET (conflicting with config/i386/i386.h). + (expand_java_arrayload): Fixed bogus cast, when Boolean type is + used. + (expand_invoke): Now handles invokeinterface and do more + verification according to the bytecode. + (lookup_field): Don't try to load the class if processing + dtable_type. + (can_widen_reference_to): Now handles interfaces. + * decl.c (init_decl_processing): New global variable + soft_lookupinterfacemethod_node, declared in java-tree.h. + Call set_super_info on string_type_node. + * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now + defined. + * class.c (set_super_info): Fills the CLASS_* flags according to + access_flags. + (get_access_flags_from_decl): Handles all class flags. + +1997-08-26 Per Bothner + + * class.c (add_method): Zero out newly-allocated DECL_LANG_SPECIFIC. + * parse.c (yyparse): Check for abstract method, and missing code. + * expr.c (expand_byte_code): Change interface. + * lang.c (put_decl_node): Print promoted types prettier. + * verify.c (verify_jvm_instruction): Change interface. + Partial support for scanning exception table. + For load instructions, handle promoted integral types. + +1997-08-21 Per Bothner + + * verify.c: New file, with contents moved from expr.c. + * expr.c: Bunch of stuff (mostly verification) moved to verify.c. + * typeck.c (is_array_type_p): Moved here from expr.c. + * java-tree.h: Add some now-needed function declarations. + * Makefile.in (JAVA_OBJS): Added verify.o. + +1997-08-20 Alexandre Petit-Bianco + + * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the + METHOD_ABSTRACT flag. + + * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4. + (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros. + (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5 + + * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global + variables. + (start_java_method): Hook for SYNCHRONIZED methods. + + * expr.c (build_java_jsr, build_java_ret): New functions + (JSR,PRE): New macros + (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured. + (verify_jvm_instructions): tableswitch, lookupswitch, + monitorenter, monitorexit, goto_w: verified. + (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label + (build_java_monitor): New function. + (MONITOR_OPERATION): Modified to call build_java_monitor() + (verify_jvm_instructions): Started a thorough verification of + invoke* bytecodes. + +1997-08-19 Per Bothner + + Support verification of jsr/ret subroutines (used for try/finally). + * decl.c (return_address_type_node): New type node. + * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE, + RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR, + LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED): New macros. + (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED, + TYPE_USED): New macros for special types in type_map. + + * java-tree.h (BCODE_JUMP_TARGET): Renamed to BCODE_TARGET. + (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET): Replaced by + BCODE_JUMP_TARGET. + * expr.c (expand_byte_code): Fix logic to warn of unused instructions. + + * expr.c (can_widen_reference_to): New function. + (pop_type): Use it. + (merge_type_state): Support handling start of subroutine. + (push_pending_block): Return char* error message, instead of calling + fatal on an error. Also handle subroutines. + (verify_jvm_instructions): Handle errors from push_poending_block. + Support jsr and ret instructions. + +1997-08-19 Per Bothner + + * jcf-io.c (find_classfile): Fix thinko. + * jcf-dump.c: Add CONVERT2 (to match changed javaop.def). + +1997-08-12 Jason Merrill + + * Makefile.in (BISON): Remove. + +1997-08-07 Per Bothner + + * Makefile.in: Convert to autoconf. + * config-lang.in (outputs): Added java/Makefile. + + * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in: + Rename cc1java to jc1. + + * lang.c (init_parse, finihs_parse): New functions #ifdef USE_CPPLIB. + * Makefile.in (INTERNAL_CFLAGS): Add @extra_c_flags. + + * class.c (class_depth): Do load_class if needed. + + Mostly better verification. + * decl.c (pushdecl): Set TYPE_STUB_DECL for a type. + (init_decl_processing): Change return type of soft_checkcast. + * expr.c (expand_java_CHECKCAST): Do push_value of the "casted" value. + * lang.c (put_decl_string, put_decl_node, lang_printable_name, + lang_print_error): New functions. + (lang_init): Set global hook print_error_function to lang_print_error. + * expr.c: In the type_map ptr_type_node is only used for null now. + (pop_type, merge_types): Hence ptr_type_node matches any reference. + (merge_types): Dererence pointer to record types before comparing. + (decode_newarray_type, merge_types): On error just return NULL. + (build_java_binop): Add preliminary implementation (with warning) + for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]). + (lookup_label): Set DECL_IGNORED_P (for dwarf2out). + (expand_compare, expand_java_goto, expand_java_call): Don't + push_pending_block, since that only makes sense when verifying. + (merge_type_state): Different return codes. + (push_pending_block): A block may need to be verified more than once. + (expand_byte_code): Warn about unused code at code generation time. + (verify_jvm_instruction): Changed logic, since code may need to be + re-verified if type-state has changed. Also, better error handling. + Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof. + Improve newarray, anewarray, ?aload, athrow, + * java-tree.h (LABEL_CHANGED): New macro. + +1997-08-05 Alexandre Petit-Bianco + + * decl.c (soft_athrow_node): New global variable initialized. + * javaop.def (i2b, i2c, i2s): Invoke CONVERT2 + * typeck.c (convert): Added support for REAL_TYPE. + (convert_to_char): New function. + (convert): Handle CHAR_TYPE. + * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/ + SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT. + (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to + promoted type. + (verify_jvm_instructions): Added break a the end of bogus unop: label. + (OPCODE_astore): Pop an int operand from the type stack + (OPCODE_astore): Push the promoted type onto the stack + (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b. + (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified + to Use The Right Things. + (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as + compatible with INT. BOOLEAN is made equivalent to BYTE. + (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull, + OPCODE_ifnonnull): Now supported. + (build_java_athrow): New function. + +1997-08-04 Per Bothner + + Rename method name to match G++ (and fix mangling). + * class.c (layout_class): Replace method name of by class name. + (make_method_value): Do inverse renaming of constructor from . + * java-tree.h (DECL_CONSTRUCTOR_P): New macro. + * typeck.c (lookup_java_constructor): New function. + * expr.c (expand_invoke): If method_name is , call + lookup_java_constructor to find constructor. + + * parse.c (get_constant): Handle CONSTANT_Float and CONSTANT_Double. + +1997-08-01 Alexandre Petit-Bianco + + * parse.c (get_class_constant): Modified to handle array "classes" + * typeck.c (set_local_type): Bug fixed when filling type_map[] with + wide type. + (convert): Modified to handle real type. + * java-tree.h (soft_badarrayindex_node, soft_anewarray_node, + soft_multianewarray, soft_newarray_node, soft_throw_node): New global + variables declared. + * decl.c (soft_badarrayindex_node, soft_anewarray_node, + soft_multianewarray, soft_newarray_node, soft_throw_node): New + global variables initialized. + (find_local_variable): Handles the case of a pointer + (end_java_method): Restore the use of one more scope + * expr.c (build_java_arraynull_check, build_java_arrayaccess, + build_java_array_length_access, expand_java_arrayload, + expand_java_arraystore, expand_java_array_length, + expand_java_multianewarray, expand_java_anewarray, + build_java_check_indexed_type, is_array_type_p, + build_java_throw_out_of_bound_exception): New functions. + (STORE_INTERNAL): Now forces type of the decl to be type of the value. + (OPCODE_arraylength, OPCODE_newarray, OPCODE_astore, + OPCODE_aload): Implemented code for verification. + (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM + ARRAY_NEW_MULTI): Macro defined. + (CONVERT): Modified to invoke convert(). + (case OPCODE_aload2): Fixed index typo from 2 to 1. + +1997-07-31 Per Bothner + + * class.c (push_class): Set DECL_ARTIFICIAL (for dbxout.c). + (build_class_ref, is_compiled_class): Handle pointer-to-record types. + (make_class_data): Field name needs '/' as package prefix. + * expr.c (type_stack_dup, java_stack_dup): Fix fencepost errors. + +1997-07-25 Per Bothner + + Implement debug information for local variables. + * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT, + DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC, + DECL_LOCAL_SLOT_CHAIN): New macros. + (struct lang_decl_var): New type. + * parse.c (give_name_to_locals): Move to decl.c. + * decl.c (give_name_to_locals): Re-written to Do The Right Thing. + (start_java_method): Re-write parameter handling. + (pending_local_decls): New global variable. + (push_jvm_slot, maybe_pushlevels, maybe_poplevels): New functions. + (find_local_variable): Accept pc so we can skips decls not in range. + (struct binding_level): Add end_pc field. + * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels. + (various): Change so current pc gets passed to find_local_variable. + + * decl.c (init_decl_processing): Re-arrange fields in + class_type_node and and method_type_node to match kaffe 0.9.1. + * class.c (make_method_value, make_class_data): Update + initializations to match. + +1997-07-16 Per Bothner + + * class.c (unicode_mangling_length, emit_unicode_mangled_name, + append_gpp_mangled_name, append_gpp_mangled_type): New functions. + (push_super_field): New function. + (make_class_data): Handle inheritance of class static initializer. + (layout_class): New name mangling. + * constants.c (build_constant_data_ref): Init type of data array + to a one-element array. + (build_constants_constructor): Set DECL_SIZE from complete array type. + * decl.c: Rename class_type, object_type etc to class_type_node, + object_type_node etc. Make former inherit from latter. + * expr.c (expand_invoke): Add cast of function address. + * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE): New. + * parse.c (yyparse): Don't call layout_class here. + * typeck.c (build_java_array_type): Set TYPE_ARRAY_ELEMENT. + +1997-06-14 Per Bothner + + * decl.c, class.c: Update method type to match latest Kaffe snapshot. + * constants.c (lookup_name_constant): Renamed to alloc_name_constant. + (alloc_class_constant): New. + * expr.c (expand_invoke): Make sure method's class is initialized. + * class.c (interits_from_p, emit_register_class): New functions. + * parse.c (yyparse): Call emit_register_class. + +1997-06-09 Per Bothner + + * constants.c: New file, to handle constant pool. + * Makefile.in (JAVA_OBJS): Add constants.o. + * decl.c (init_decl_processing): Update, fix, finish various structs. + (pushdecl_top_level): New. + * parse.c (layout_class): Moved to class.c. + * expr.c (java_push_constant_from_pool): New function. + * class.c (build_class_ref): Make work fully + (make_class_data): Emit super-class, constant pool, interface vector. + +1997-06-03 Per Bothner + + java-tree.h (DECL_SIGNATURE, BCODE_EMITTED): Remove. + (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P): New. + * class.c (class_depth): New function. + (lookup_named_class): Replaced by new function lookup_class. + * decl.c (object_type_node, string_type_node): New. + Remove various types that we no longer need. + * expr.c (verify_jvm_instructions): New separate verifier pass. + (push_type, pop_type): New functions for verifier. + (type_stack_dup, pop_argument_types, merge_types): Likewise. + (expand_byte_code): Simplify, since we assume already verified. + (expand_invoke): Now mostly works. + * javaop.def: Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w. + * lang.c (main_class): Move to parse.c. Don't make_class yet. + * parse.c: Wait to allocate class object until we know its name. + (layout_class): Calculate DECL_VINDEX for each virtual method. + * typeck.c (get_array_type): Rename to ... + (build_java_array_type): ... and provide working implementation. + (build_java_signature): New function - build Java signature of type. + (set_java_signature): New function - cache signature with type. + (lookup_java_method): New function. + +1997-05-06 Per Bothner + + * class.c (ident_subst): Take extra SUFFIX parameter. + (add_field): Set DECL_ASSEMBLER_NAME of static fields; more. + (set_constant_value, build_static_field_ref, is_compiled_class): New. + (build_class_ref): Actually implement. + * decl.c, java-tree.h: Renamed some xx_type to xx_type_node. + * decl.c (builtin_function): New. + (init_decl_processing): Update for current Kaffe. Declare some + builtin Kaffe functions. + * expr.c (build_address_of): New. + (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST): + Renamed (from expand_java_new etc), and added working implementations. + (build_field_ref): Now also handle static fields. + (expand_invoke): Implement invokestatic, and start implement rest. + * java-opcodes.h: Use javaop.def to avoid duplicated list. + * javaop.def: Rename invokevirt -> invokevirtual. + * lang.c (use_handles): Removed. + * parse.c: Add support for ConstantValue attribute. + Handle nested loading of a class. (JPOOL_UTF): New. + +1997-03-11 Per Bothner + + * expr.c (expand_java_pushc): Support #ifndef REAL_ARITHMETIC case. + +1997-02-27 Per Bothner + + * Make-lang.in (java.install-man): New empty rule. + * typeck.c (set_local_type): New function. + * expr.c (STORE_INTERNAL): Call find_local_variable, + not find_stack_slot. Call set_local_type. + +1997-02-12 Per Bothner + + * java-tree.h: Various new macros for constructing RECORD_TYPEs, + and building RECORD_TYPE CONSTRUCTORs. + Also support for creating Utf8Const objects from an INDETIFIER_NODE. + + * lang.c (use_handles): Change the default to 0. + * decl.c: Define and build class_type, field_type, utf8const_type. + * class.c (make_class_data, make_field_value, + get_access_flags_from_decl, build_class_ref, build_utf8_ref, + hashUtf8String, strLengthUtf8, mangled_classname: + Functions to build reflective data structures. + * parse.c (yyparse): Call make_class_data. + + * jcf-io.c (open_class, find_classfile): New functions. + * jcf-dump.c: Support reading classfile from explicitly-named + class file (without CLASSPATH searching). + +1996-10-24 Per Bothner + + * jcf-reader.c: Add parameter list to HANDLE_CONSTANT_Utf8. + * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8): + Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here. + (get_constant): Now trivial for CONSTANT_Utf8. + + * jcf.h: Make NEW_CPOOL the default. + * jcf.h, jcf-reader.c, parse.c: Remove support for !NEW_CPOOL. + +1996-10-24 Per Bothner + + New directory. + + +Copyright (C) 1996-2013 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/java/gcj.texi b/gcc/java/gcj.texi index efa24ea79b7..eb5472aa0c7 100644 --- a/gcc/java/gcj.texi +++ b/gcc/java/gcj.texi @@ -17,7 +17,7 @@ @c the word ``Java'. @c When this manual is copyrighted. -@set copyrights-gcj 2001-2013 +@set copyrights-gcj 2001-2014 @copying @c man begin COPYRIGHT diff --git a/gcc/java/jcf-dump.c b/gcc/java/jcf-dump.c index 7438174abaf..0a9cce162d4 100644 --- a/gcc/java/jcf-dump.c +++ b/gcc/java/jcf-dump.c @@ -1,7 +1,7 @@ /* Program to dump out a Java(TM) .class file. Functionally similar to Sun's javap. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. @@ -1227,7 +1227,7 @@ static void version (void) { printf ("jcf-dump %s%s\n\n", pkgversion_string, version_string); - printf ("Copyright %s 2013 Free Software Foundation, Inc.\n", _("(C)")); + printf ("Copyright %s 2014 Free Software Foundation, Inc.\n", _("(C)")); printf (_("This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n")); exit (0); -- cgit v1.2.1 From f07ffb7fed73e941a95f605cddf71ee9f5e7c3b3 Mon Sep 17 00:00:00 2001 From: jakub Date: Thu, 2 Jan 2014 21:56:58 +0000 Subject: Small ChangeLog fixes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206287 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/ChangeLog | 750 +- gcc/go/ChangeLog-2013 | 745 -- gcc/java/ChangeLog | 22895 ++++++++++++++++++++++++++++++++++++++++++++- gcc/java/ChangeLog-2013 | 22898 ---------------------------------------------- 4 files changed, 23642 insertions(+), 23646 deletions(-) delete mode 100644 gcc/go/ChangeLog-2013 delete mode 100644 gcc/java/ChangeLog-2013 (limited to 'gcc') diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index 28f97433886..d1e2f4b5d70 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,8 +1,754 @@ 2014-01-02 Tobias Burnus - * gcc/go/gccgo.texi: Ditto. + * gccgo.texi: Bump @copying's copyright year. + +2013-12-16 Chris Manghane + + * go-gcc.cc (Gcc_backend::struct_field_expression): New function. + +2013-12-11 Ian Lance Taylor + + * go-lang.c (go_langhook_post_options): Disable sibling calls by + default. + +2013-12-10 Ian Lance Taylor + + * Make-lang.in (check_go_parallelize): Test go-test.exp r* tests + separately. + +2013-12-05 Ian Lance Taylor + + Revert this change; no longer required. + 2013-11-06 Ian Lance Taylor + + * go-lang.c (go_langhook_post_options): If + -fisolate-erroneous-paths was turned on by an optimization option, + turn it off. + +2013-11-23 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::function_type): Add result_struct + parameter. + +2013-11-22 Andrew MacLeod + + * go-gcc.cc: Add required include files from gimple.h. + * go-lang.c: Likewise + +2013-11-18 Richard Sandiford + + * gofrontend/expressions.cc: Replace tree_low_cst (..., 0) with + tree_to_shwi throughout. + +2013-11-18 Richard Sandiford + + * gofrontend/expressions.cc: Replace host_integerp (..., 0) with + tree_fits_shwi_p throughout. + +2013-11-14 Andrew MacLeod + + * go-lang.c: Include only gimplify.h and gimple.h as needed. + +2013-11-14 Diego Novillo + + * go-backend.c: Include stor-layout.h. + * go-gcc.cc: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + * go-lang.c: Include stor-layout.h. + +2013-11-12 Andrew MacLeod + + * go-lang.c: Include gimplify.h. + +2013-11-06 Ian Lance Taylor + + * go-lang.c (go_langhook_post_options): If + -fisolate-erroneous-paths was turned on by an optimization option, + turn it off. + +2013-10-14 Chris Manghane + + * go-gcc.cc (Gcc_backend::address_expression): New function. + +2013-10-11 Chris Manghane + + * go-gcc.cc (Gcc_backend::function_code_expression): New + function. + +2013-10-10 Chris Manghane + + * go-gcc.cc (Gcc_backend::error_function): New function. + (Gcc_backend::function): New function. + (Gcc_backend::make_function): New function. + (function_to_tree): New function. + +2013-10-04 Chris Manghane + + * go-gcc.cc (Gcc_backend::convert_expression): New function. + +2013-10-02 Chris Manghane + + * go-gcc.cc: Include "real.h" and "realmpfr.h". + (Gcc_backend::integer_constant_expression): New function. + (Gcc_backend::float_constant_expression): New function. + (Gcc_backend::complex_constant_expression): New function. + +2013-09-30 Chris Manghane + + * go-gcc.cc (Gcc_backend::error_expression): New function. + (Gcc_backend::var_expression): New function. + (Gcc_backend::indirect_expression): New function. + +2013-09-25 Tom Tromey + + * Make-lang.in (gospec.o): Remove. + (CFLAGS-go/gospec.o): New variable. + (GCCGO_OBJS): Update to use go/gospec.o. + (go_OBJS): Define. + (GO_SYSTEM_H, GO_C_H, GO_LINEMAP_H, GO_LEX_H, GO_PARSE_H) + (GO_GOGO_H, GO_TYPES_H, GO_STATEMENTS_H, GO_EXPRESSIONS_H) + (GO_EXPORT_H, GO_IMPORT_H, GO_RUNTIME_H, GO_AST_DUMP_H) + (go/go-backend.o, go/go-lang.o, go/go-gcc.o, go/go-linemap.o) + (go/ast-dump.o, go/dataflow.o, go/export.o, go/expressions.o) + (go/go.o, go/go-dump.o, go/go-optimize.o, go/gogo-tree.o) + (go/gogo.o, go/import.o, go/import-archive.o, go/lex.o) + (go/parse.o, go/runtime.o, go/statements.o, go/types.o) + (go/unsafe.o): Remove. + (CFLAGS-go/go-gcc.o, CFLAGS-go/go-linemap.o): New variables. + (go/%.o: go/gofrontend/%.cc): Use COMPILE and POSTCOMPILE. + +2013-09-25 Tom Tromey + + * Make-lang.in (gospec.o): Don't use subshell. + +2013-08-28 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::immutable_struct): Set TREE_PUBLIC if + the struct is not hidden. + (Gcc_backend::immutable_struct_set_init): Don't set TREE_PUBLIC. + +2013-08-06 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::immutable_struct_set_init): Use + compute_reloc_for_constant. + +2013-08-02 Ian Lance Taylor + + * go-gcc.cc (immutable_struct_set_init): Always call + resolve_unique_section. + +2013-07-24 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::non_zero_size_type): If a struct has a + fields, recreate those fields with the first one with a non-zero + size. + +2013-07-23 Ian Lance Taylor + + * go-backend.c: Don't #include "rtl.h". + (go_imported_unsafe): Don't call init_varasm_once. + * Make-lang.in (go/go-backend.o): Don't depend on $(RTL_H). + +2013-07-23 Ian Lance Taylor + + * go-lang.c: Don't #include "except.h". + * Make-lang.in (go/go-lang.o): Don't depend on $(EXCEPT_H). + +2013-06-18 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::immutable_struct): Add is_hidden + parameter. + (Gcc_backend::immutable_struct_set_init): Likewise. + +2013-05-16 Jason Merrill + + * Make-lang.in (go1$(exeext)): Use link mutex. + +2013-01-16 Shenghou Ma + + * gospec.c: pass -u pthread_create to linker when static linking. + +2012-12-21 Ian Lance Taylor + + PR bootstrap/54659 + * go-system.h: Don't include . + +2012-12-18 Ian Lance Taylor + + PR go/55201 + * gospec.c: Revert last patch. + +2012-12-18 Andreas Schwab + + PR go/55201 + * gospec.c (LIBATOMIC): Define. + (LIBATOMIC_PROFILE): Define. + (lang_specific_driver): Add LIBATOMIC[_PROFILE] option. + +2012-11-29 Ian Lance Taylor + + * go-gcc.cc: Include "output.h". + (global_variable): Add is_unique_section parameter. + (global_variable_set_init): Adjust unique section if necessary. + * Make-lang.in (go/go-gcc.o): Add dependency on output.h. + +2012-11-17 Diego Novillo + + Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec) + + * go-lang.c: Use new vec API in vec.h. + +2012-11-16 Ian Lance Taylor + + * Make-lang.in (gccgo$(exeext)): Add + at start of command. + (go1$(exeext)): Likewise. + +2012-10-30 Ian Lance Taylor + + * lang.opt (-fgo-relative-import-path): New option. + * go-lang.c (go_relative_import_path): New static variable. + (go_langhook_init): Pass go_relative_import_path to + go_create_gogo. + (go_langhook_handle_option): Handle -fgo-relative-import-path. + * go-c.h (go_create_gogo): Update declaration. + * gccgo.texi (Invoking gccgo): Document + -fgo-relative-import-path. + +2012-09-17 Ian Lance Taylor + + * config-lang.in (target_libs): Add target-libbacktrace. + +2012-09-16 Ian Lance Taylor + + * Make-lang.in (go/gogo.o): Depend on filenames.h. + +2012-08-14 Diego Novillo + + Merge from cxx-conversion branch. Configury. + + * go-c.h: Remove all handlers of ENABLE_BUILD_WITH_CXX. + * go-gcc.cc: Likewise. + * go-system.h: Likewise. + +2012-07-24 Uros Bizjak + + * go-lang.c (lang_decl): Add variable_size GTY option. + +2012-05-09 Ian Lance Taylor + + * lang.opt: Add -fgo-pkgpath. + * go-lang.c (go_pkgpath): New static variable. + (go_prefix): New static variable. + (go_langhook_init): Pass go_pkgpath and go_prefix to + go_create_gogo. + (go_langhook_handle_option): Handle -fgo-pkgpath. Change + -fgo-prefix handling to just set go_prefix. + * go-c.h (go_set_prefix): Don't declare. + (go_create_gogo): Add pkgpath and prefix to declaration. + * go-gcc.cc (Gcc_backend::global_variable): Change unique_prefix + to pkgpath. Don't include the package name in the asm name. + * gccgo.texi (Invoking gccgo): Document -fgo-pkgpath. Update the + docs for -fgo-prefix. + +2012-04-23 Ian Lance Taylor + + * go-lang.c (go_langhook_init): Set MPFR precision to 256. + +2012-04-20 Ian Lance Taylor + + * lang.opt: Add -fgo-check-divide-zero and + -fgo-check-divide-overflow. + * gccgo.texi (Invoking gccgo): Document new options. + +2012-04-18 Steven Bosscher + + * go-gcc.cc (Gcc_backend::switch_statement): Build SWITCH_EXPR + with NULL_TREE type instead of void_type_node. + +2012-03-09 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::assignment_statement): Convert the rhs + to the lhs type if necessary. + +2012-03-08 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::init_statement): Don't initialize a + zero-sized variable. + (go_non_zero_struct): New global variable. + (Gcc_backend::non_zero_size_type): New function. + (Gcc_backend::global_variable): Don't build an assignment for a + zero-sized value. + * go-c.h (go_non_zero_struct): Declare. + * config-lang.in (gtfiles): Add go-c.h. + +2012-02-29 Ian Lance Taylor + + * go-gcc.cc (class Gcc_tree): Add set_tree method. + (set_placeholder_pointer_type): When setting to a pointer to + error, set to error_mark_node. + +2012-02-23 Richard Guenther + + * go-gcc.cc (Gcc_backend::placeholder_pointer_type): Use + build_distinct_type_copy. + +2012-02-17 Ian Lance Taylor + + * Make-lang.in (go/import.o): Add dependency on $(GO_LEX_H). + +2012-02-17 Ian Lance Taylor + + * gospec.c (lang_specific_driver): If linking, and no -o option + was used, add one. + +2012-02-14 Ian Lance Taylor + + PR go/48411 + * Make-lang.in (gccgo-cross$(exeext)): New target. + (go.all.cross): Depend on gccgo-cross$(exeext) instead of + gccgo$(exeext). + (go.install-common): Only install GCCGO_TARGET_INSTALL_NAME if + gccgo-cross$(exeext) does not exist. + +2012-02-07 Ian Lance Taylor + + * gccgo.texi (Function Names): Document //extern instead of + __asm__. + +2012-02-01 Jakub Jelinek + + PR target/52079 + * go-lang.c (go_langhook_type_for_mode): For TImode and 64-bit HWI + return build_nonstandard_integer_type result if possible. + +2012-01-21 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::type_size): Check for error_mark_node. + (Gcc_backend::type_alignment): Likewise. + (Gcc_backend::type_field_alignment): Likewise. + (Gcc_backend::type_field_offset): Likewise. + +2012-01-20 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::placeholder_struct_type): Permit name to + be empty. + (Gcc_backend::set_placeholder_struct_type): Likewise. + +2012-01-17 Ian Lance Taylor + + * gospec.c (lang_specific_driver): If we see -S without -o, add -o + BASE.s rather than -o BASE.o. + +2012-01-11 Ian Lance Taylor + + * go-lang.c (go_langhook_init): Initialize void_list_node before + calling go_create_gogo. + +2012-01-10 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::type_size): New function. + (Gcc_backend::type_alignment): New function. + (Gcc_backend::type_field_alignment): New function. + (Gcc_backend::type_field_offset): New function. + * go-backend.c (go_type_alignment): Remove. + * go-c.h (go_type_alignment): Don't declare. + +2011-12-27 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::set_placeholder_struct_type): Use + build_distinct_type_copy rather than build_variant_type_copy. + (Gcc_backend::set_placeholder_array_type): Likewise. + (Gcc_backend::named_type): Add special handling for builtin + basic types. + +2011-12-22 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::set_placeholder_pointer_type): Arrange + for the type name to have a DECL_ORIGINAL_TYPE as gcc expects. + (Gcc_backend::set_placeholder_struct_type): Likewise. + (Gcc_backend::set_placeholder_array_type): Likewise. + (Gcc_backend::named_type): Set DECL_ORIGINAL_TYPE. + +2011-12-13 Ian Lance Taylor + + * go-backend.c: #include "simple-object.h" and "intl.h". + (GO_EXPORT_SEGMENT_NAME): Define if not defined. + (GO_EXPORT_SECTION_NAME): Likewise. + (go_write_export_data): Use GO_EXPORT_SECTION_NAME. + (go_read_export_data): New function. + * go-c.h (go_read_export_data): Declare. + +2011-11-29 Sanjoy Das + Ian Lance Taylor + + * go-location.h: New file. + * go-linemap.cc: New file. + * go-gcc.cc: Change all uses of source_location to Location. + * Make-lang.in (GO_OBJS): Add go/go-linemap.o. + (GO_LINEMAP_H): New variable. + (GO_LEX_H): Use $(GO_LINEMAP_H). + (GO_GOGO_H, GO_TYPES_H, GO_IMPORT_H): Likewise. + (go/go-linemap.o): New target. + +2011-11-02 Rainer Orth + + * Make-lang.in (gospec.o): Pass SHLIB instead of SHLIB_LINK. + +2011-08-24 Roberto Lublinerman + + * lang.opt: Add fgo-optimize-. + * go-lang.c (go_langhook_handle_option): Handle OPT_fgo_optimize. + * go-c.h (go_enable_optimize): Declare. + * Make-lang.in (GO_OBJS): Add go/go-optimize.o. + (GO_EXPORT_H): Define. + (GO_IMPORT_H): Add $(GO_EXPORT_H). + (GO_AST_DUMP_H): Define. + (go/ast-dump.o, go/statements.o): Use GO_AST_DUMP_H. + (go/export.o, go/gogo.o, go/import.o): Use GO_EXPORT_H. + (go/types.o): Likewise. + (go/expressions.o): Use GO_AST_DUMP_H and GO_EXPORT_H. + (go/go-optimize.o): New target. + +2011-08-24 Joseph Myers + + * Make-lang.in (CFLAGS-go/go-lang.o): New. + (go/go-lang.o): Remove explicit compilation rule. + +2011-08-08 Rainer Orth + + * Make-lang.in (gccgo$(exeext)): Add $(EXTRA_GCC_LIBS). + +2011-08-02 Roberto Lublinerman + + * Make-lang.in (GO_OBJS): Add go/ast-dump.o. + (go/ast-dump.o): New target. + (go/expressions.o): Depend on go/gofrontend/ast-dump.h. + (go/statements.o): Likewise. + +2011-07-06 Richard Guenther + + * go-lang.c (go_langhook_init): + Merge calls to build_common_tree_nodes and build_common_tree_nodes_2. + +2011-06-14 Joseph Myers + + * Make-lang.in (go/go-lang.o, go/go-backend.o): Update + dependencies. + * go-backend.c: Include common/common-target.h. + (go_write_export_data): Use targetm_common.have_named_sections. + * go-lang.c: Include common/common-target.h. + (go_langhook_init_options_struct): Use + targetm_common.supports_split_stack. + +2011-06-13 Ian Lance Taylor + + * Make-lang.in (go/expressions.o): Depend on $(GO_RUNTIME_H). + +2011-06-10 Ian Lance Taylor + + * go-gcc.cc: Include "toplev.h". + (Gcc_backend::immutable_struct): New function. + (Gcc_backend::immutable_struct_set_init): New function. + (Gcc_backend::immutable_struct_reference): New function. + * Make-lang.in (go/go-gcc.o): Depend on toplev.h. + +2011-06-09 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::zero_expression): New function. + +2011-06-07 Richard Guenther + + * go-lang.c (go_langhook_init): Do not set + size_type_node or call set_sizetype. + +2011-05-27 Ian Lance Taylor + + * go-backend.c: Include "output.h". + (go_write_export_data): New function. + * go-c.h (go_write_export_data): Declare. + * Make-lang.in (go/go-backend.o): Depend on output.h. + (go/export.o): Depend on $(GO_C_H). Do not depend on + $(MACHMODE_H), output.h, or $(TARGET_H). + +2011-05-24 Joseph Myers + + * Make-lang.in (GCCGO_OBJS): Remove prefix.o. + (gccgo$(exeext)): Use libcommon-target.a. + +2011-05-20 Joseph Myers + + * Make-lang.in (GCCGO_OBJS): Remove intl.o and version.o. + +2011-05-13 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::function_type): When building a struct + for multiple results, check that all fields types have a size. + (Gcc_backend::placeholder_pointer_type): Permit name to be empty. + +2011-05-12 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::local_variable): Add is_address_taken + parameter. + (Gcc_backend::parameter_variable): Likewise. + +2011-05-07 Eric Botcazou + + * go-lang.c (global_bindings_p): Return bool and simplify. + +2011-05-05 Nathan Froyd + + * go-gcc.cc (Gcc_backend::switch_statement): Call build_case_label. + +2011-05-04 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::struct_type): Call fill_in_struct. + (Gcc_backend::fill_in_struct): New function. + (Gcc_backend::array_type): Implement. + (Gcc_backend::fill_in_array): New function. + (Gcc_backend::placeholder_pointer_type): New function. + (Gcc_backend::set_placeholder_pointer_type): New function. + (Gcc_backend::set_placeholder_function_type): New function. + (Gcc_backend::placeholder_struct_type): New function. + (Gcc_backend::set_placeholder_struct_type): New function. + (Gcc_backend::placeholder_array_type): New function. + (Gcc_backend::set_placeholder_array_type): New function. + (Gcc_backend::named_type): New function. + (Gcc_backend::circular_pointer_type): New function. + (Gcc_backend::is_circular_pointer_type): New function. + +2011-04-26 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::struct_type): Implement. + +2011-04-25 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::error_type): Implement. + (Gcc_backend::string_type): Remove. + (Gcc_backend::function_type): Change signature and implement. + (Gcc_backend::struct_type): Change signature. + (Gcc_backend::slice_type, Gcc_backend::map_type): Remove. + (Gcc_backend::channel_type, Gcc_backend::interface_type): Remove. + (Gcc_backend::pointer_type): Check for error. + * Make-lang.in (go/types.o): Depend on go/gofrontend/backend.h. + +2011-04-25 Evan Shaw + + * go-gcc.c (class Gcc_tree): Make get_tree const. + (Gcc_backend::void_type): Implement. + (Gcc_backend::bool_type): Implement. + (Gcc_backend::integer_type): Implement. + (Gcc_backend::float_type): Implement. + (Gcc_backend::complex_type): New function. + (Gcc_backend::pointer_type): New function. + (Gcc_backend::make_type): New function. + (type_to_tree): New function. + +2011-04-21 Ian Lance Taylor + + * go-system.h (go_assert, go_unreachable): Define. + +2011-04-19 Ian Lance Taylor + + * go-system.h: Include "intl.h". + * Make-lang.in (GO_SYSTEM_H): Add intl.h. + (go/statements.o): Remove dependencies on intl.h $(TREE_H) + $(GIMPLE_H) convert.h tree-iterator.h $(TREE_FLOW_H) $(REAL_H). + +2011-04-19 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::temporary_variable): New function. + +2011-04-19 Ian Lance Taylor + + * go-gcc.cc (class Bblock): Define. + (Gcc_backend::if_statement): Change then_block and else_block to + Bblock*. + (Gcc_backend::block): New function. + (Gcc_backend::block_add_statements): New function. + (Gcc_backend::block_statement): New function. + (tree_to_block, block_to_tree): New functions. + +2011-04-18 Ian Lance Taylor + + * go-gcc.cc: Include "go-c.h". + (class Bvariable): Define. + (Gcc_backend::init_statement): New function. + (Gcc_backend::global_variable): New function. + (Gcc_backend::global_variable_set_init): New function. + (Gcc_backend::local_variable): New function. + (Gcc_backend::parameter_variable): New function. + (tree_to_type, var_to_tree): New functions. + * Make-lang.in (go/go-gcc.o): Depend on $(GO_C_H). + * (go/gogo-tree.o): Depend on go/gofrontend/backend.h. + +2011-04-15 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::compound_statement): New function. + (Gcc_backend::assignment_statement): Use error_statement. + (Gcc_backend::return_statement): Likewise. + (Gcc_backend::if_statement): Likewise. + (Gcc_backend::switch_statement): Likewise. + (Gcc_backend::statement_list): Likewise. + +2011-04-14 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::error_statement): New function. + +2011-04-13 Ian Lance Taylor + + * Make-lang.in (go/gogo-tree.o): depend on $(GO_RUNTIME_H). + +2011-04-13 Ian Lance Taylor + + * Make-lang.in (GO_OBJS): Add go/runtime.o. + (GO_RUNTIME_H): New variable. + (go/runtime.o): New target. + (go/gogo.o): Depend on $(GO_RUNTIME_H). + (go/statements.o): Likewise. + +2011-04-12 Nathan Froyd + + * go-lang.c (union lang_tree_node): Check for TS_COMMON before + calling TREE_CHAIN. + +2011-04-06 Ian Lance Taylor + + * go-gcc.cc (if_statement): Use build3_loc. + (Gcc_backend::switch_statement): New function. + (Gcc_backend::statement_list): New function. + +2011-04-06 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::if_statement): New function. + (tree_to_stat): New function. + (expr_to_tree): Renamed from expression_to_tree. + (stat_to_tree): Renamed from statement_to_tree. + +2011-04-06 Ian Lance Taylor + + * go-gcc.cc (Gcc_backend::expression_statement): New function. + +2011-04-04 Ian Lance Taylor + + * go-gcc.c (class Blabel): Define. + (Gcc_backend::make_expression): New function. + (get_identifier_from_string): New function. + (Gcc_backend::label): New function. + (Gcc_backend::label_definition_statement): New function. + (Gcc_backend::goto_statement): New function. + (Gcc_backend::label_address): New function. + (expression_to_tree): New function. + * Make-lang.in (go/expressions.o): Depend on + go/gofrontend/backend.h. + (go/gogo.o): Likewise. + +2011-04-04 Ian Lance Taylor + + * go-gcc.cc: #include "tree-iterator.h", "gimple.h", and "gogo.h". + (class Bfunction): Define. + (Gcc_backend::assignment_statement): Rename from assignment. + Check for errors. + (Gcc_backend::return_statement): New function. + (tree_to_function): New function. + * Make-lang.in (go/go-gcc.o): Depend on tree-iterator.h, + $(GIMPLE_H), and $(GO_GOGO_H). + +2011-04-03 Ian Lance Taylor + + * go-gcc.cc: New file. + * Make-lang.in (GO_OBJS): Add go/go-gcc.o. + (go/go-gcc.o): New target. + (go/go.o): Depend on go/gofrontend/backend.h. + (go/statements.o): Likewise. + +2011-02-14 Ralf Wildenhues + + * gccgo.texi (Top, Import and Export): Fix a typo and a markup nit. + +2011-02-08 Ian Lance Taylor + + * go-lang.c (go_langhook_init_options_struct): Set + frontend_set_flag_errno_math. Don't set x_flag_trapping_math. + +2011-01-31 Rainer Orth + + * gospec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use + LD_STATIC_OPTION, LD_DYNAMIC_OPTION. + +2011-01-21 Ian Lance Taylor + + * go-lang.c (go_langhook_init): Omit float_type_size when calling + go_create_gogo. + * go-c.h: Update declaration of go_create_gogo. + +2011-01-13 Ian Lance Taylor + + * go-backend.c: Include "rtl.h" and "target.h". + (go_imported_unsafe): New function. + * go-c.h (go_imported_unsafe): Declare. + * Make-lang.in (go/go-backend.o): Depend on $(RTL_H). + (go/gogo-tree.o): Remove dependency on $(RTL_H). + (go/unsafe.o): Depend on $(GO_C_H). + +2010-12-31 Joern Rennecke + + PR go/47113 + * go-backend.c: (go_field_alignment): Add ATTRIBUTE_UNUSED to + variable ‘field’ . + +2010-12-21 Ian Lance Taylor + + * Make-lang.in (check-go): Remove. + (lang_checks_parallelized): Add check-go. + (check_go_parallelize): Set. + +2010-12-13 Ian Lance Taylor + + * gospec.c (lang_specific_driver): Add a -o option if not linking + and there is no -o option already. + +2010-12-07 Ian Lance Taylor + + PR tree-optimization/46805 + PR tree-optimization/46833 + * go-lang.c (go_langhook_type_for_mode): Handle vector modes. + +2010-12-06 Ian Lance Taylor + + PR other/46789 + PR bootstrap/46812 + * go-lang.c (go_char_p): Define type and vectors. + (go_search_dirs): New static variable. + (go_langhook_handle_option): Use version and version/machine + directories for -L. + (go_langhook_post_options): Add non-specific -L paths. + * Make-lang.in (go/go-lang.o): Define DEFAULT_TARGET_VERSION and + DEFAULT_TARGET_MACHINE when compiling. + * gccgo.texi (Invoking gccgo): Only document -L for linking. + (Import and Export): Don't mention -L for finding import files. + +2010-12-03 Ian Lance Taylor + + PR bootstrap/46776 + * go-backend.c: New file. + * go-c.h (go_type_alignment): Declare. + (go_field_alignment, go_trampoline_info): Declare. + * Make-lang.in (GO_OBJS): Add go/go-backend.o. + (go/go-backend.o): New target. + (go/go-lang.o): Make dependencies match source file. + (go/expressions.o): Don't depend on $(TM_H) $(TM_P_H). + (go/gogo-tree.o): Don't depend on $(TM_H). + +2010-12-03 Ian Lance Taylor + + * config-lang.in (build_by_default): Set to no. + +2010-12-02 Ian Lance Taylor + + Go frontend added to gcc repository. -Copyright (C) 2014 Free Software Foundation, Inc. +Copyright (C) 2010-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/go/ChangeLog-2013 b/gcc/go/ChangeLog-2013 deleted file mode 100644 index f6e6599bda3..00000000000 --- a/gcc/go/ChangeLog-2013 +++ /dev/null @@ -1,745 +0,0 @@ -2013-12-16 Chris Manghane - - * go-gcc.cc (Gcc_backend::struct_field_expression): New function. - -2013-12-11 Ian Lance Taylor - - * go-lang.c (go_langhook_post_options): Disable sibling calls by - default. - -2013-12-10 Ian Lance Taylor - - * Make-lang.in (check_go_parallelize): Test go-test.exp r* tests - separately. - -2013-12-05 Ian Lance Taylor - - Revert this change; no longer required. - 2013-11-06 Ian Lance Taylor - - * go-lang.c (go_langhook_post_options): If - -fisolate-erroneous-paths was turned on by an optimization option, - turn it off. - -2013-11-23 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::function_type): Add result_struct - parameter. - -2013-11-22 Andrew MacLeod - - * go-gcc.cc: Add required include files from gimple.h. - * go-lang.c: Likewise - -2013-11-18 Richard Sandiford - - * gofrontend/expressions.cc: Replace tree_low_cst (..., 0) with - tree_to_shwi throughout. - -2013-11-18 Richard Sandiford - - * gofrontend/expressions.cc: Replace host_integerp (..., 0) with - tree_fits_shwi_p throughout. - -2013-11-14 Andrew MacLeod - - * go-lang.c: Include only gimplify.h and gimple.h as needed. - -2013-11-14 Diego Novillo - - * go-backend.c: Include stor-layout.h. - * go-gcc.cc: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - * go-lang.c: Include stor-layout.h. - -2013-11-12 Andrew MacLeod - - * go-lang.c: Include gimplify.h. - -2013-11-06 Ian Lance Taylor - - * go-lang.c (go_langhook_post_options): If - -fisolate-erroneous-paths was turned on by an optimization option, - turn it off. - -2013-10-14 Chris Manghane - - * go-gcc.cc (Gcc_backend::address_expression): New function. - -2013-10-11 Chris Manghane - - * go-gcc.cc (Gcc_backend::function_code_expression): New - function. - -2013-10-10 Chris Manghane - - * go-gcc.cc (Gcc_backend::error_function): New function. - (Gcc_backend::function): New function. - (Gcc_backend::make_function): New function. - (function_to_tree): New function. - -2013-10-04 Chris Manghane - - * go-gcc.cc (Gcc_backend::convert_expression): New function. - -2013-10-02 Chris Manghane - - * go-gcc.cc: Include "real.h" and "realmpfr.h". - (Gcc_backend::integer_constant_expression): New function. - (Gcc_backend::float_constant_expression): New function. - (Gcc_backend::complex_constant_expression): New function. - -2013-09-30 Chris Manghane - - * go-gcc.cc (Gcc_backend::error_expression): New function. - (Gcc_backend::var_expression): New function. - (Gcc_backend::indirect_expression): New function. - -2013-09-25 Tom Tromey - - * Make-lang.in (gospec.o): Remove. - (CFLAGS-go/gospec.o): New variable. - (GCCGO_OBJS): Update to use go/gospec.o. - (go_OBJS): Define. - (GO_SYSTEM_H, GO_C_H, GO_LINEMAP_H, GO_LEX_H, GO_PARSE_H) - (GO_GOGO_H, GO_TYPES_H, GO_STATEMENTS_H, GO_EXPRESSIONS_H) - (GO_EXPORT_H, GO_IMPORT_H, GO_RUNTIME_H, GO_AST_DUMP_H) - (go/go-backend.o, go/go-lang.o, go/go-gcc.o, go/go-linemap.o) - (go/ast-dump.o, go/dataflow.o, go/export.o, go/expressions.o) - (go/go.o, go/go-dump.o, go/go-optimize.o, go/gogo-tree.o) - (go/gogo.o, go/import.o, go/import-archive.o, go/lex.o) - (go/parse.o, go/runtime.o, go/statements.o, go/types.o) - (go/unsafe.o): Remove. - (CFLAGS-go/go-gcc.o, CFLAGS-go/go-linemap.o): New variables. - (go/%.o: go/gofrontend/%.cc): Use COMPILE and POSTCOMPILE. - -2013-09-25 Tom Tromey - - * Make-lang.in (gospec.o): Don't use subshell. - -2013-08-28 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::immutable_struct): Set TREE_PUBLIC if - the struct is not hidden. - (Gcc_backend::immutable_struct_set_init): Don't set TREE_PUBLIC. - -2013-08-06 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::immutable_struct_set_init): Use - compute_reloc_for_constant. - -2013-08-02 Ian Lance Taylor - - * go-gcc.cc (immutable_struct_set_init): Always call - resolve_unique_section. - -2013-07-24 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::non_zero_size_type): If a struct has a - fields, recreate those fields with the first one with a non-zero - size. - -2013-07-23 Ian Lance Taylor - - * go-backend.c: Don't #include "rtl.h". - (go_imported_unsafe): Don't call init_varasm_once. - * Make-lang.in (go/go-backend.o): Don't depend on $(RTL_H). - -2013-07-23 Ian Lance Taylor - - * go-lang.c: Don't #include "except.h". - * Make-lang.in (go/go-lang.o): Don't depend on $(EXCEPT_H). - -2013-06-18 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::immutable_struct): Add is_hidden - parameter. - (Gcc_backend::immutable_struct_set_init): Likewise. - -2013-05-16 Jason Merrill - - * Make-lang.in (go1$(exeext)): Use link mutex. - -2013-01-16 Shenghou Ma - - * gospec.c: pass -u pthread_create to linker when static linking. - -2012-12-21 Ian Lance Taylor - - PR bootstrap/54659 - * go-system.h: Don't include . - -2012-12-18 Ian Lance Taylor - - PR go/55201 - * gospec.c: Revert last patch. - -2012-12-18 Andreas Schwab - - PR go/55201 - * gospec.c (LIBATOMIC): Define. - (LIBATOMIC_PROFILE): Define. - (lang_specific_driver): Add LIBATOMIC[_PROFILE] option. - -2012-11-29 Ian Lance Taylor - - * go-gcc.cc: Include "output.h". - (global_variable): Add is_unique_section parameter. - (global_variable_set_init): Adjust unique section if necessary. - * Make-lang.in (go/go-gcc.o): Add dependency on output.h. - -2012-11-17 Diego Novillo - - Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec) - - * go-lang.c: Use new vec API in vec.h. - -2012-11-16 Ian Lance Taylor - - * Make-lang.in (gccgo$(exeext)): Add + at start of command. - (go1$(exeext)): Likewise. - -2012-10-30 Ian Lance Taylor - - * lang.opt (-fgo-relative-import-path): New option. - * go-lang.c (go_relative_import_path): New static variable. - (go_langhook_init): Pass go_relative_import_path to - go_create_gogo. - (go_langhook_handle_option): Handle -fgo-relative-import-path. - * go-c.h (go_create_gogo): Update declaration. - * gccgo.texi (Invoking gccgo): Document - -fgo-relative-import-path. - -2012-09-17 Ian Lance Taylor - - * config-lang.in (target_libs): Add target-libbacktrace. - -2012-09-16 Ian Lance Taylor - - * Make-lang.in (go/gogo.o): Depend on filenames.h. - -2012-08-14 Diego Novillo - - Merge from cxx-conversion branch. Configury. - - * go-c.h: Remove all handlers of ENABLE_BUILD_WITH_CXX. - * go-gcc.cc: Likewise. - * go-system.h: Likewise. - -2012-07-24 Uros Bizjak - - * go-lang.c (lang_decl): Add variable_size GTY option. - -2012-05-09 Ian Lance Taylor - - * lang.opt: Add -fgo-pkgpath. - * go-lang.c (go_pkgpath): New static variable. - (go_prefix): New static variable. - (go_langhook_init): Pass go_pkgpath and go_prefix to - go_create_gogo. - (go_langhook_handle_option): Handle -fgo-pkgpath. Change - -fgo-prefix handling to just set go_prefix. - * go-c.h (go_set_prefix): Don't declare. - (go_create_gogo): Add pkgpath and prefix to declaration. - * go-gcc.cc (Gcc_backend::global_variable): Change unique_prefix - to pkgpath. Don't include the package name in the asm name. - * gccgo.texi (Invoking gccgo): Document -fgo-pkgpath. Update the - docs for -fgo-prefix. - -2012-04-23 Ian Lance Taylor - - * go-lang.c (go_langhook_init): Set MPFR precision to 256. - -2012-04-20 Ian Lance Taylor - - * lang.opt: Add -fgo-check-divide-zero and - -fgo-check-divide-overflow. - * gccgo.texi (Invoking gccgo): Document new options. - -2012-04-18 Steven Bosscher - - * go-gcc.cc (Gcc_backend::switch_statement): Build SWITCH_EXPR - with NULL_TREE type instead of void_type_node. - -2012-03-09 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::assignment_statement): Convert the rhs - to the lhs type if necessary. - -2012-03-08 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::init_statement): Don't initialize a - zero-sized variable. - (go_non_zero_struct): New global variable. - (Gcc_backend::non_zero_size_type): New function. - (Gcc_backend::global_variable): Don't build an assignment for a - zero-sized value. - * go-c.h (go_non_zero_struct): Declare. - * config-lang.in (gtfiles): Add go-c.h. - -2012-02-29 Ian Lance Taylor - - * go-gcc.cc (class Gcc_tree): Add set_tree method. - (set_placeholder_pointer_type): When setting to a pointer to - error, set to error_mark_node. - -2012-02-23 Richard Guenther - - * go-gcc.cc (Gcc_backend::placeholder_pointer_type): Use - build_distinct_type_copy. - -2012-02-17 Ian Lance Taylor - - * Make-lang.in (go/import.o): Add dependency on $(GO_LEX_H). - -2012-02-17 Ian Lance Taylor - - * gospec.c (lang_specific_driver): If linking, and no -o option - was used, add one. - -2012-02-14 Ian Lance Taylor - - PR go/48411 - * Make-lang.in (gccgo-cross$(exeext)): New target. - (go.all.cross): Depend on gccgo-cross$(exeext) instead of - gccgo$(exeext). - (go.install-common): Only install GCCGO_TARGET_INSTALL_NAME if - gccgo-cross$(exeext) does not exist. - -2012-02-07 Ian Lance Taylor - - * gccgo.texi (Function Names): Document //extern instead of - __asm__. - -2012-02-01 Jakub Jelinek - - PR target/52079 - * go-lang.c (go_langhook_type_for_mode): For TImode and 64-bit HWI - return build_nonstandard_integer_type result if possible. - -2012-01-21 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::type_size): Check for error_mark_node. - (Gcc_backend::type_alignment): Likewise. - (Gcc_backend::type_field_alignment): Likewise. - (Gcc_backend::type_field_offset): Likewise. - -2012-01-20 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::placeholder_struct_type): Permit name to - be empty. - (Gcc_backend::set_placeholder_struct_type): Likewise. - -2012-01-17 Ian Lance Taylor - - * gospec.c (lang_specific_driver): If we see -S without -o, add -o - BASE.s rather than -o BASE.o. - -2012-01-11 Ian Lance Taylor - - * go-lang.c (go_langhook_init): Initialize void_list_node before - calling go_create_gogo. - -2012-01-10 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::type_size): New function. - (Gcc_backend::type_alignment): New function. - (Gcc_backend::type_field_alignment): New function. - (Gcc_backend::type_field_offset): New function. - * go-backend.c (go_type_alignment): Remove. - * go-c.h (go_type_alignment): Don't declare. - -2011-12-27 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::set_placeholder_struct_type): Use - build_distinct_type_copy rather than build_variant_type_copy. - (Gcc_backend::set_placeholder_array_type): Likewise. - (Gcc_backend::named_type): Add special handling for builtin - basic types. - -2011-12-22 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::set_placeholder_pointer_type): Arrange - for the type name to have a DECL_ORIGINAL_TYPE as gcc expects. - (Gcc_backend::set_placeholder_struct_type): Likewise. - (Gcc_backend::set_placeholder_array_type): Likewise. - (Gcc_backend::named_type): Set DECL_ORIGINAL_TYPE. - -2011-12-13 Ian Lance Taylor - - * go-backend.c: #include "simple-object.h" and "intl.h". - (GO_EXPORT_SEGMENT_NAME): Define if not defined. - (GO_EXPORT_SECTION_NAME): Likewise. - (go_write_export_data): Use GO_EXPORT_SECTION_NAME. - (go_read_export_data): New function. - * go-c.h (go_read_export_data): Declare. - -2011-11-29 Sanjoy Das - Ian Lance Taylor - - * go-location.h: New file. - * go-linemap.cc: New file. - * go-gcc.cc: Change all uses of source_location to Location. - * Make-lang.in (GO_OBJS): Add go/go-linemap.o. - (GO_LINEMAP_H): New variable. - (GO_LEX_H): Use $(GO_LINEMAP_H). - (GO_GOGO_H, GO_TYPES_H, GO_IMPORT_H): Likewise. - (go/go-linemap.o): New target. - -2011-11-02 Rainer Orth - - * Make-lang.in (gospec.o): Pass SHLIB instead of SHLIB_LINK. - -2011-08-24 Roberto Lublinerman - - * lang.opt: Add fgo-optimize-. - * go-lang.c (go_langhook_handle_option): Handle OPT_fgo_optimize. - * go-c.h (go_enable_optimize): Declare. - * Make-lang.in (GO_OBJS): Add go/go-optimize.o. - (GO_EXPORT_H): Define. - (GO_IMPORT_H): Add $(GO_EXPORT_H). - (GO_AST_DUMP_H): Define. - (go/ast-dump.o, go/statements.o): Use GO_AST_DUMP_H. - (go/export.o, go/gogo.o, go/import.o): Use GO_EXPORT_H. - (go/types.o): Likewise. - (go/expressions.o): Use GO_AST_DUMP_H and GO_EXPORT_H. - (go/go-optimize.o): New target. - -2011-08-24 Joseph Myers - - * Make-lang.in (CFLAGS-go/go-lang.o): New. - (go/go-lang.o): Remove explicit compilation rule. - -2011-08-08 Rainer Orth - - * Make-lang.in (gccgo$(exeext)): Add $(EXTRA_GCC_LIBS). - -2011-08-02 Roberto Lublinerman - - * Make-lang.in (GO_OBJS): Add go/ast-dump.o. - (go/ast-dump.o): New target. - (go/expressions.o): Depend on go/gofrontend/ast-dump.h. - (go/statements.o): Likewise. - -2011-07-06 Richard Guenther - - * go-lang.c (go_langhook_init): - Merge calls to build_common_tree_nodes and build_common_tree_nodes_2. - -2011-06-14 Joseph Myers - - * Make-lang.in (go/go-lang.o, go/go-backend.o): Update - dependencies. - * go-backend.c: Include common/common-target.h. - (go_write_export_data): Use targetm_common.have_named_sections. - * go-lang.c: Include common/common-target.h. - (go_langhook_init_options_struct): Use - targetm_common.supports_split_stack. - -2011-06-13 Ian Lance Taylor - - * Make-lang.in (go/expressions.o): Depend on $(GO_RUNTIME_H). - -2011-06-10 Ian Lance Taylor - - * go-gcc.cc: Include "toplev.h". - (Gcc_backend::immutable_struct): New function. - (Gcc_backend::immutable_struct_set_init): New function. - (Gcc_backend::immutable_struct_reference): New function. - * Make-lang.in (go/go-gcc.o): Depend on toplev.h. - -2011-06-09 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::zero_expression): New function. - -2011-06-07 Richard Guenther - - * go-lang.c (go_langhook_init): Do not set - size_type_node or call set_sizetype. - -2011-05-27 Ian Lance Taylor - - * go-backend.c: Include "output.h". - (go_write_export_data): New function. - * go-c.h (go_write_export_data): Declare. - * Make-lang.in (go/go-backend.o): Depend on output.h. - (go/export.o): Depend on $(GO_C_H). Do not depend on - $(MACHMODE_H), output.h, or $(TARGET_H). - -2011-05-24 Joseph Myers - - * Make-lang.in (GCCGO_OBJS): Remove prefix.o. - (gccgo$(exeext)): Use libcommon-target.a. - -2011-05-20 Joseph Myers - - * Make-lang.in (GCCGO_OBJS): Remove intl.o and version.o. - -2011-05-13 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::function_type): When building a struct - for multiple results, check that all fields types have a size. - (Gcc_backend::placeholder_pointer_type): Permit name to be empty. - -2011-05-12 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::local_variable): Add is_address_taken - parameter. - (Gcc_backend::parameter_variable): Likewise. - -2011-05-07 Eric Botcazou - - * go-lang.c (global_bindings_p): Return bool and simplify. - -2011-05-05 Nathan Froyd - - * go-gcc.cc (Gcc_backend::switch_statement): Call build_case_label. - -2011-05-04 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::struct_type): Call fill_in_struct. - (Gcc_backend::fill_in_struct): New function. - (Gcc_backend::array_type): Implement. - (Gcc_backend::fill_in_array): New function. - (Gcc_backend::placeholder_pointer_type): New function. - (Gcc_backend::set_placeholder_pointer_type): New function. - (Gcc_backend::set_placeholder_function_type): New function. - (Gcc_backend::placeholder_struct_type): New function. - (Gcc_backend::set_placeholder_struct_type): New function. - (Gcc_backend::placeholder_array_type): New function. - (Gcc_backend::set_placeholder_array_type): New function. - (Gcc_backend::named_type): New function. - (Gcc_backend::circular_pointer_type): New function. - (Gcc_backend::is_circular_pointer_type): New function. - -2011-04-26 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::struct_type): Implement. - -2011-04-25 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::error_type): Implement. - (Gcc_backend::string_type): Remove. - (Gcc_backend::function_type): Change signature and implement. - (Gcc_backend::struct_type): Change signature. - (Gcc_backend::slice_type, Gcc_backend::map_type): Remove. - (Gcc_backend::channel_type, Gcc_backend::interface_type): Remove. - (Gcc_backend::pointer_type): Check for error. - * Make-lang.in (go/types.o): Depend on go/gofrontend/backend.h. - -2011-04-25 Evan Shaw - - * go-gcc.c (class Gcc_tree): Make get_tree const. - (Gcc_backend::void_type): Implement. - (Gcc_backend::bool_type): Implement. - (Gcc_backend::integer_type): Implement. - (Gcc_backend::float_type): Implement. - (Gcc_backend::complex_type): New function. - (Gcc_backend::pointer_type): New function. - (Gcc_backend::make_type): New function. - (type_to_tree): New function. - -2011-04-21 Ian Lance Taylor - - * go-system.h (go_assert, go_unreachable): Define. - -2011-04-19 Ian Lance Taylor - - * go-system.h: Include "intl.h". - * Make-lang.in (GO_SYSTEM_H): Add intl.h. - (go/statements.o): Remove dependencies on intl.h $(TREE_H) - $(GIMPLE_H) convert.h tree-iterator.h $(TREE_FLOW_H) $(REAL_H). - -2011-04-19 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::temporary_variable): New function. - -2011-04-19 Ian Lance Taylor - - * go-gcc.cc (class Bblock): Define. - (Gcc_backend::if_statement): Change then_block and else_block to - Bblock*. - (Gcc_backend::block): New function. - (Gcc_backend::block_add_statements): New function. - (Gcc_backend::block_statement): New function. - (tree_to_block, block_to_tree): New functions. - -2011-04-18 Ian Lance Taylor - - * go-gcc.cc: Include "go-c.h". - (class Bvariable): Define. - (Gcc_backend::init_statement): New function. - (Gcc_backend::global_variable): New function. - (Gcc_backend::global_variable_set_init): New function. - (Gcc_backend::local_variable): New function. - (Gcc_backend::parameter_variable): New function. - (tree_to_type, var_to_tree): New functions. - * Make-lang.in (go/go-gcc.o): Depend on $(GO_C_H). - * (go/gogo-tree.o): Depend on go/gofrontend/backend.h. - -2011-04-15 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::compound_statement): New function. - (Gcc_backend::assignment_statement): Use error_statement. - (Gcc_backend::return_statement): Likewise. - (Gcc_backend::if_statement): Likewise. - (Gcc_backend::switch_statement): Likewise. - (Gcc_backend::statement_list): Likewise. - -2011-04-14 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::error_statement): New function. - -2011-04-13 Ian Lance Taylor - - * Make-lang.in (go/gogo-tree.o): depend on $(GO_RUNTIME_H). - -2011-04-13 Ian Lance Taylor - - * Make-lang.in (GO_OBJS): Add go/runtime.o. - (GO_RUNTIME_H): New variable. - (go/runtime.o): New target. - (go/gogo.o): Depend on $(GO_RUNTIME_H). - (go/statements.o): Likewise. - -2011-04-12 Nathan Froyd - - * go-lang.c (union lang_tree_node): Check for TS_COMMON before - calling TREE_CHAIN. - -2011-04-06 Ian Lance Taylor - - * go-gcc.cc (if_statement): Use build3_loc. - (Gcc_backend::switch_statement): New function. - (Gcc_backend::statement_list): New function. - -2011-04-06 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::if_statement): New function. - (tree_to_stat): New function. - (expr_to_tree): Renamed from expression_to_tree. - (stat_to_tree): Renamed from statement_to_tree. - -2011-04-06 Ian Lance Taylor - - * go-gcc.cc (Gcc_backend::expression_statement): New function. - -2011-04-04 Ian Lance Taylor - - * go-gcc.c (class Blabel): Define. - (Gcc_backend::make_expression): New function. - (get_identifier_from_string): New function. - (Gcc_backend::label): New function. - (Gcc_backend::label_definition_statement): New function. - (Gcc_backend::goto_statement): New function. - (Gcc_backend::label_address): New function. - (expression_to_tree): New function. - * Make-lang.in (go/expressions.o): Depend on - go/gofrontend/backend.h. - (go/gogo.o): Likewise. - -2011-04-04 Ian Lance Taylor - - * go-gcc.cc: #include "tree-iterator.h", "gimple.h", and "gogo.h". - (class Bfunction): Define. - (Gcc_backend::assignment_statement): Rename from assignment. - Check for errors. - (Gcc_backend::return_statement): New function. - (tree_to_function): New function. - * Make-lang.in (go/go-gcc.o): Depend on tree-iterator.h, - $(GIMPLE_H), and $(GO_GOGO_H). - -2011-04-03 Ian Lance Taylor - - * go-gcc.cc: New file. - * Make-lang.in (GO_OBJS): Add go/go-gcc.o. - (go/go-gcc.o): New target. - (go/go.o): Depend on go/gofrontend/backend.h. - (go/statements.o): Likewise. - -2011-02-14 Ralf Wildenhues - - * gccgo.texi (Top, Import and Export): Fix a typo and a markup nit. - -2011-02-08 Ian Lance Taylor - - * go-lang.c (go_langhook_init_options_struct): Set - frontend_set_flag_errno_math. Don't set x_flag_trapping_math. - -2011-01-31 Rainer Orth - - * gospec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use - LD_STATIC_OPTION, LD_DYNAMIC_OPTION. - -2011-01-21 Ian Lance Taylor - - * go-lang.c (go_langhook_init): Omit float_type_size when calling - go_create_gogo. - * go-c.h: Update declaration of go_create_gogo. - -2011-01-13 Ian Lance Taylor - - * go-backend.c: Include "rtl.h" and "target.h". - (go_imported_unsafe): New function. - * go-c.h (go_imported_unsafe): Declare. - * Make-lang.in (go/go-backend.o): Depend on $(RTL_H). - (go/gogo-tree.o): Remove dependency on $(RTL_H). - (go/unsafe.o): Depend on $(GO_C_H). - -2010-12-31 Joern Rennecke - - PR go/47113 - * go-backend.c: (go_field_alignment): Add ATTRIBUTE_UNUSED to - variable ‘field’ . - -2010-12-21 Ian Lance Taylor - - * Make-lang.in (check-go): Remove. - (lang_checks_parallelized): Add check-go. - (check_go_parallelize): Set. - -2010-12-13 Ian Lance Taylor - - * gospec.c (lang_specific_driver): Add a -o option if not linking - and there is no -o option already. - -2010-12-07 Ian Lance Taylor - - PR tree-optimization/46805 - PR tree-optimization/46833 - * go-lang.c (go_langhook_type_for_mode): Handle vector modes. - -2010-12-06 Ian Lance Taylor - - PR other/46789 - PR bootstrap/46812 - * go-lang.c (go_char_p): Define type and vectors. - (go_search_dirs): New static variable. - (go_langhook_handle_option): Use version and version/machine - directories for -L. - (go_langhook_post_options): Add non-specific -L paths. - * Make-lang.in (go/go-lang.o): Define DEFAULT_TARGET_VERSION and - DEFAULT_TARGET_MACHINE when compiling. - * gccgo.texi (Invoking gccgo): Only document -L for linking. - (Import and Export): Don't mention -L for finding import files. - -2010-12-03 Ian Lance Taylor - - PR bootstrap/46776 - * go-backend.c: New file. - * go-c.h (go_type_alignment): Declare. - (go_field_alignment, go_trampoline_info): Declare. - * Make-lang.in (GO_OBJS): Add go/go-backend.o. - (go/go-backend.o): New target. - (go/go-lang.o): Make dependencies match source file. - (go/expressions.o): Don't depend on $(TM_H) $(TM_P_H). - (go/gogo-tree.o): Don't depend on $(TM_H). - -2010-12-03 Ian Lance Taylor - - * config-lang.in (build_by_default): Set to no. - -2010-12-02 Ian Lance Taylor - - Go frontend added to gcc repository. diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index a9d272878cc..f0c32920e96 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -2,8 +2,22901 @@ * jcf-dump.c (version): Update copyright notice dates. * gcj.texi: Bump @copying's copyright year. + +2013-12-19 Jakub Jelinek + + PR other/59545 + * class.c (hashUtf8String): Compute hash in unsigned type. + * javaop.h (WORD_TO_INT): Avoid signed integer overflow. + +2013-11-22 Andrew MacLeod + + * java-gimplify.c: Add required include files from gimple.h. + +2013-11-22 David Malcolm + + * class.c (maybe_layout_super_class): Update comment. + * decl.c (java_add_stmt): Remove use of input_filename macro. + * jcf-parse.c (set_source_filename): Remove use of + input_filename macro. + (parse_class_file): Remove use of input_line and input_filename + macros. + (java_parse_file): Remove use of input_filename macro. + +2013-11-18 Richard Sandiford + + * class.c, expr.c: Replace tree_low_cst (..., 0) with tree_to_shwi + throughout. + +2013-11-18 Richard Sandiford + + * class.c, expr.c: Replace host_integerp (..., 0) with + tree_fits_shwi_p throughout. + +2013-11-14 Andrew MacLeod + + * java-gimplify.c: Include only gimplify.h and gimple.h as needed. + +2013-11-14 Diego Novillo + + * builtins.c: Include stor-layout.h. + Include stringpool.h. + * class.c: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + * constants.c: Include stringpool.h. + Include stor-layout.h. + * decl.c: Include stor-layout.h. + Include stringpool.h. + Include varasm.h. + * except.c: Include stringpool.h. + Include stor-layout.h. + * expr.c: Include stringpool.h. + Include stor-layout.h. + * jcf-parse.c: Include stringpool.h. + * mangle.c: Include stringpool.h. + * resource.c: Include stringpool.h. + Include stor-layout.h. + * typeck.c: Include stor-layout.h. + Include stringpool.h. + * verify-glue.c: Include stringpool.h. + +2013-11-12 Andrew MacLeod + + * java-gimplify.c: Include gimplify.h. + +2013-11-07 Jeff Law + + * builtins.c (initialize_builtins): Provide __builtin_trap. + +2013-10-29 David Malcolm + + Patch autogenerated by refactor_symtab.py from + https://github.com/davidmalcolm/gcc-refactoring-scripts + revision 58bb219cc090b2f4516a9297d868c245495ee622 + + * decl.c (java_mark_decl_local): Update for conversion of symtab types + to a true class hierarchy. + +2013-10-14 David Malcolm + + * lang.c (java_handle_option): Update for introduction of + gcc::dump_manager. + +2013-09-25 Tom Tromey + + * Make-lang.in (jvspec.o): Remove. + (CFLAGS-java/jvspec.o): New variable. + ($(XGCJ)$(exeext), java_OBJS): Use java/jvspec.o + (java/jvspec.o-warn): Rename from jvspec.o-warn. + (JAVA_TREE_H, java/jcf-dump.o, java/boehm.o, java/builtins.o) + (java/class.o, java/constants.o, java/decl.o, java/except.o) + (java/expr.o, java/jcf-depend.o, java/jcf-parse.o) + (java/jvgenmain.o, java/lang.o, java/mangle.o, java/mangle_name.o) + (java/resource.o java/typeck.o, java/win32-host.o) + (java/verify-glue.o, java/verify-impl.o, java/zextract.o) + (java/java-gimplify.o, java/jcf-io.o, java/jcf-path.o): Remove. + +2013-09-25 Tom Tromey + + * Make-lang.in (jvspec.o): Don't use subshell. + +2013-06-05 Jan Hubicka + + * class.c (emit_register_classes_in_jcr_section): Use DECL_PRESERVE_P + instead of mark_decl_referenced. + +2013-05-29 Jan Hubicka + + * decl.c (java_mark_decl_local): Update for new symtab flags. + +2013-05-22 Matthias Klose + + * jvspec.c (jvgenmain_spec): Add %I to cc1 call. + +2013-05-16 Jason Merrill + + * Make-lang.in (jc1$(exeext)): Use link mutex. + +2013-05-06 Jakub Jelinek + + PR libgcj/57074 + * class.c (emit_symbol_table): Use array type of the + right size for the_syms_decl and its DECL_INITIAL, instead + of symbols_array_type. Set TREE_TYPE (the_syms_decl) to it. + (emit_assertion_table): Use array type of the right size + for table_decl and its DECL_INITIAL. + +2013-04-15 Gerald Pfeifer + + * gcj.texi (Configure-time Options): Refer to GCC, not gcc. + (Resources): Adjust reference to Mauve. + Remove link to java.sun.com. + Refer to GCC, not gcc. + +2013-04-09 Richard Biener + + * expr.c (build_java_binop): Pass a type to build_int_cst. + +2013-03-22 Kai Tietz + + * lang.c (put_decl_node): Don't iterate over end_params_node. + +2013-01-03 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2012-11-16 Diego Novillo + + Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec) + + * boehm.c: Use new vec API in vec.h. + * class.c: Likewise. + * constants.c: Likewise. + * decl.c: Likewise. + * expr.c: Likewise. + * java-tree.h: Likewise. + * jcf-parse.c: Likewise. + * resource.c: Likewise. + * verify-glue.c: Likewise. + +2012-11-15 Jan Hubicka + + * builtins.c (define_builtin): Accept ECF flags and + use set_call_expr_flags. + (initialize_builtins): Update. + +2012-10-01 Lawrence Crowl + + * Make-lang.in (JAVA_OBJS): Add dependence on hash-table.o. + (JCFDUMP_OBJS): Add dependence on hash-table.o. + (jcf-io.o): Add dependence on hash-table.h. + * jcf-io.c (memoized_class_lookups): Change to use type-safe hash table. + +2012-09-24 Lawrence Crowl + + * decl.c (java_init_decl_processing): Change to new double_int API. + * jcf-parse.c (get_constant): Likewise. + * boehm.c (mark_reference_fields): Likewise. + (get_boehm_type_descriptor): Likewise. + +2012-07-30 Laurynas Biveinis + + * jcf.h (CPool): Use the "atomic" GTY option for the tags field. + (bootstrap_method): Likewise for the bootstrap_arguments field. + +2012-07-16 Steven Bosscher + + * java-gimplify.c: Include dumpfile.h instead of tree-dump.h + * Make-lang.in: Fix dependencies. + +2012-07-11 Steven Bosscher + + * java-tree.h (force_evaluation_order): Remove prototype. + * expr.c (force_evaluation_order): Remove unused function. + +2012-07-11 Steven Bosscher + + * decl.c: Do not include libfuncs.h. + * class.c: Do not include defaults.h. + * jvgenmain.c: Likewise. + * magnle.c: Likewise. + * Make-lang.in (decl.o): Fix dependencies. + +2012-07-08 Steven Bosscher + + * verify.h: Do not include system.h and coretypes.h here. + * verify-impl.c: Include them here instead. + +2012-07-05 Uros Bizjak + + * jcf-io.c (read_zip_member): Initialize d_stream. + +2012-05-31 Steven Bosscher + + * resource.c: Do not include output.h. + +2012-05-21 John David Anglin + + PR java/52815 + * class.c (emit_register_classes_in_jcr_section): Revise placement + of #ifdef JCR_SECTION_NAME. + +2012-04-22 Jan Hubicka + + * class.c (build_utf8_ref): Do not mark varpool node as needed. + +2012-04-20 Jan Hubicka + + * class.c (make_local_function_alias): Do not mark symbol referenced. + +2012-04-11 Rainer Orth + + * jcf-dump.c (print_constant): Cast JPOOL_USHORT2, JPOOL_USHORT1 + results to long to match formats. + +2012-04-11 Andrew Haley + + * jcf-reader.c (jcf_parse_bootstrap_methods): Add + ATTRIBUTE_UNUSED. + +2012-04-11 Andrew Haley + + * jcf.h (bootstrap_method): New. + (BootstrapMethods): New. + (JCF): Add BootstrapMethods. + (enum cpool_tag): Add MethodHandle, MethodType, and InvokeDynamic. + * jcf-reader.c (jcf_parse_bootstrap_methods): New. + (jcf_parse_constant_pool): Handlers for MethodHandle, MethodType, + and InvokeDynamic. + (jcf_parse_bootstrap_methods): New. + * javaop.def (invokedynamic): New opcode. + * jcf-parse.c (get_constant): An unknown constant type should not + be an internal error, but a fatal one. Make it so. + * jcf-dump.c (HANDLE_BOOTSTRAP_METHODS_ATTRIBUTE): New. + (HANDLE_END_BOOTSTRAP_METHODS): New. + (print_constant): Handlers for MethodHandle, MethodType, and + InvokeDynamic. + +2012-04-02 Rainer Orth + + * class.c (emit_register_classes_in_jcr_section): Set DECL_USER_ALIGN. + Clear TREE_READONLY. + +2012-03-29 Steven Bosscher + + PR java/52730 + * class.c (emit_register_classes_in_jcr_section): New function. + (emit_Jv_RegisterClass_calls): New function, split out from ... + (emit_register_classes): ... here. Reorganize. Do not call + output_constant. + +2012-01-23 Andreas Schwab + + * lang.c (java_init_options_struct): Set + frontend_set_flag_trapping_math. + +2012-01-01 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2011-12-03 Matthias Klose + + * expr.c (SPECIAL_WIDE): Fix typo in message. + +2011-11-23 Jeffrey A Law (law@cygnus.com) + + * lang.c (java_init_options_struct): Disable optimizations + which assume a NULL pointer dereference will cause a fault. + +2011-11-07 Richard Henderson + + * builtins.c (compareAndSwapInt_builtin): Use can_compare_and_swap_p. + (compareAndSwapLong_builtin): Likewise. + (compareAndSwapObject_builtin): Likewise. + (VMSupportsCS8_builtin): Likewise. + +2011-11-02 Rainer Orth + + * Make-lang.in (jvspec.o): Pass SHLIB instead of SHLIB_LINK. + +2011-10-15 Tom Tromey + Dodji Seketeli + + * jcf-parse.c (set_source_filename): Adjust to the new map API. + +2011-10-11 Michael Meissner + + * class.c (build_static_field_ref): Delete old interface with two + parallel arrays to hold standard builtin declarations, and replace + it with a function based interface that can support creating + builtins on the fly in the future. Change all uses, and poison + the old names. Make sure 0 is not a legitimate builtin index. + * decl.c (java_init_decl_processing): Ditto. + * except.c (compareAndSwapLong_builtin): Ditto. + (compareAndSwapObject_builtin): Ditto. + (putVolatile_builtin): Ditto. + (define_builtin): Ditto. + (check_for_builtin): Ditto. + * expr.c (rewrite_arglist_getcaller): Ditto. + (expand_java_field_op): Ditto. + +2011-08-24 Joseph Myers + + * Make-lang.in (CFLAGS-java/jcf-io.o, CFLAGS-java/jcf-path.o): + New. + (java/jcf-io.o, java/jcf-path.o): Remove explicit compilation + rules. + +2011-08-18 Peter Collingbourne + + * expr.c (expand_invoke) Use the type of the method rewrite + target. + +2011-08-10 Rainer Orth + + * jcf-dump.c (print_constant): Cast first frexp arg. + +2011-08-08 Rainer Orth + + * Make-lang.in ($(XGCJ)$(exeext)): Add $(EXTRA_GCC_LIBS). + +2011-07-19 Richard Guenther + + * builtins.c (static): Use fold_build_pointer_plus. + * class.c (make_class_data): Likewise. + (build_symbol_entry): Likewise. + * except.c (build_exception_object_ref): Likewise. + * expr.c (build_java_arrayaccess): Likewise. + (build_field_ref): Likewise. + (build_known_method_ref): Likewise. + (build_invokevirtual): Likewise. + +2011-07-06 Richard Guenther + + * decl.c (java_init_decl_processing): + Merge calls to build_common_tree_nodes and build_common_tree_nodes_2. + +2011-06-21 Andrew MacLeod + + * builtins.c: Add sync_ or SYNC__ to builtin names. + * expr.c: Add sync_ or SYNC__ to builtin names. + +2011-06-07 Richard Guenther + + * decl.c (java_init_decl_processing): Call build_common_nodes, + build_common_nodes_2 at the beginning. Remove then duplicate + initializations. + +2011-06-07 Richard Guenther + + * decl.c (java_init_decl_processing): Properly initialize + size_type_node. + +2011-05-30 Joern Rennecke + + PR middle-end/46500 + * expr.c: Include "tm.h" . + +2011-05-26 Nathan Froyd + + * decl.c (poplevel): Don't access TREE_TYPE of BLOCKs. + * expr.c (build_jni_stub): Likewise. + +2011-05-24 Joseph Myers + + * Make-lang.in ($(XGCJ)$(exeext)): Use libcommon-target.a instead + of prefix.o. + +2011-05-20 Joseph Myers + + * Make-lang.in ($(XGCJ)$(exeext)): Don't explicitly use intl.o and + version.o. + (JCFDUMP_OBJS): Remove errors.o, version.o and intl.o. + (JVGENMAIN_OBJS): Remove errors.o and intl.o. + (java/jcf-dump.o, java/jvgenmain.o): Depend in $(DIAGNOSTIC_H). + * jcf-dump.c: Include diagnostic.h. + (main): Initialize diagnostics. + * jvgenmain.c: Include diagnostic.h. + (main): Initialize diagnostics. + +2011-05-11 Nathan Froyd + + * java-tree.h (TYPE_ARGUMENT_SIGNATURE): Use TYPE_MINVAL. + +2011-05-07 Eric Botcazou + + * java-tree.h (global_bindings_p): Adjust prototype. + * decl.c (global_bindings_p): Return bool. + +2011-05-05 Nathan Froyd + + * expr.c (expand_java_switch): Call build_case_label. + (expand_java_add_case): Likewise. + +2011-04-29 Richard Guenther + + PR middle-end/48819 + * constants.c (build_constants_constructor): Use ptr_type_node for + temp. + +2011-04-20 Jim Meyering + + * jcf-parse.c (java_parse_file): Remove useless if-before-free. + +2011-04-18 Jim Meyering + + * jcf-parse.c: Fix typo in comment. + +2011-04-14 Nathan Froyd + + * decl.c (poplevel): Use BLOCK_CHAIN and block_chainon. + +2011-04-12 Nathan Froyd + + * java-tree.h (union lang_tree_node): Check for TS_COMMON before + calling TREE_CHAIN. + +2011-04-11 Martin Jambor + + * decl.c (java_mark_decl_local): Call cgraph_get_node instead of + cgraph_node and handle returned NULL. + +2011-03-25 Kai Tietz + + * jcf-parse.c (java_read_sourcefilenames): Use filename_cmp + instead of strcmp. + (set_source_filename): Likewise. + * win32-host.c (jcf_open_exact_case): Likewise. + +2011-03-21 Kai Tietz + + PR target/12171 + * lang.c (java_attribute_table): Adjust table. + +2011-02-13 Joseph Myers + + * jvspec.c (jvgenmain_spec): Remove %{a*}. + +2011-01-21 Kai Tietz + + PR bootstrap/47215 + * decl.c (java_init_decl_processing): Remove + va_list_type_node related type initializations. + +2011-01-11 Kai Tietz + + PR bootstrap/47215 + * decl.c (java_init_decl_processing): Initialize + long_integer_type_node. + +2011-01-07 Kai Tietz + + PR bootstrap/47215 + * decl.c (java_init_decl_processing): Initialize unsigned_type_node. + +2011-01-07 Kai Tietz + + * decl.c (java_init_decl_processing): Setup va_list_type_node. + +2011-01-03 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2010-12-15 Dave Korn + + * decl.c (java_init_decl_processing): Initialise integer_three_node. + * lang.c (put_decl_node): Handle nested function decls. + +2010-12-07 Joseph Myers + + * jcf-parse.c: Don't include assert.h. + (java_parse_file): Use gcc_assert. + +2010-12-03 Joseph Myers + + * lang.opt (static-libgcj): New option. + +2010-12-01 Joseph Myers + + * jcf-parse.c: Don't include toplev.h. + * Make-lang.in (java/jcf-parse.o): Don't depend on toplev.h. + +2010-11-30 Joseph Myers + + * boehm.c: Don't include toplev.h. + * Make-lang.in (java/boehm.o): Don't depend on toplev.h. + +2010-11-30 Joseph Myers + + * expr.c, lang.c, mangle.c, mangle_name.c, typeck.c, + verify-glue.c: Don't include toplev.h. + * Make-lang.in: Dependencies for above files changed to remove + toplev.h. + +2010-11-29 Joseph Myers + + * boehm.c: Include "config.h" instead of . + * builtins.c: Don't include . + * class.c: Don't include "stdio.h". + (O_BINARY): Don't define here. + * jcf-depend.c: Don't include . + (jcf_dependency_set_dep_file, jcf_dependency_init, + jcf_dependency_write): Use gcc_assert. + * jcf-io.c (O_BINARY): Don't define here. + * jcf-path.c: Don't include "tm.h". + (jcf_path_init): Use getenv instead of GET_ENVIRONMENT. + * resource.c: Don't include "stdio.h". + (O_BINARY): Don't define here. + * verify-impl.c: Don't include . + +2010-11-17 Joseph Myers + + * jcf-parse.c (java_parse_file): Take no arguments. + * java-tree.h (java_parse_file): Update prototype. + +2010-11-09 Joern Rennecke + Andrew Haley + + PR java/46386 + * config/pdp11/t-pdp11 (java/constants.o-warn): Remove. + +2010-11-12 Joseph Myers + + * Make-lang.in (jvspec.o, java/lang.o): Use $(OPTS_H). + * lang.c (java_handle_option): Take location_t parameter. + +2010-11-10 Joseph Myers + + * expr.c (expand_java_field_op): Use %' in diagnostic. + * jcf-parse.c (java_parse_file): Use %' in diagnostics. + * jvspec.c (lang_specific_driver): Use %' in diagnostic. + * lang.c (java_post_options): Use %' in diagnostics. + +2010-11-06 Joern Rennecke + + PR middle-end/46314 + * class.c: Include target.h. + (make_local_function_alias): + Use targetm.asm_out.generate_internal_label. + * expr.c (lookup_label, generate_name): Likewise. + +2010-11-03 Joern Rennecke + + PR bootstrap/44335 + * jfc-parse.c (target.h): Include. + (handle_constant): Use targetm.words_big_endian and + targetm.float_words_big_endian. + (get_constant): Use targetm.float_words_big_endian. + +2010-10-13 Richard Henderson + + * lang.c (java_eh_personality): Update call to + build_personality_function. + +2010-10-12 Joseph Myers + + * Make-lang.in (java/lang.o): Use $(OPTIONS_H) instead of + options.h. + +2010-10-11 Nathan Froyd + + * decl.c (java_init_decl_processing): Use build_function_type_list + instead of build_function_type. + * jcf-parse.c (java_emit_static_constructor): Likewise. + * builtins.c (initialize_builtins): Likewise. + +2010-10-08 Joseph Myers + + * lang.c (java_init_options_struct): New. Split out from + java_init_options. + (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define. + +2010-10-04 Andi Kleen + + * Make-lang.in (xgcj, jc1, jcf-dump, jvgenmain): + Add + to build rule. + +2010-09-29 Joseph Myers + + * lang.opt: Don't use VarExists. + +2010-09-29 Joseph Myers + + * java-tree.h (flag_filelist_file, flag_assert, flag_jni, + flag_force_classes_archive_check, flag_redundant, flag_newer, + flag_use_divide_subroutine, flag_use_atomic_builtins, + flag_use_boehm_gc, flag_hash_synchronization, + flag_check_references, flag_optimize_sci, flag_indirect_classes, + flag_indirect_dispatch, flag_store_check, + flag_reduced_reflection): Remove. + * jcf-dump.c (flag_newer): Remove. + * jcf.h (quiet_flag): Remove. + * parse.h (quiet_flag): Remove. + +2010-09-28 Richard Henderson + + * lang.c: Include "target.h". + (java_eh_personality): Use targetm.except_unwind_info. + * Make-lang.in (lang.o): Update deps. + +2010-09-27 Andrew Haley + + PR java/45773 + * jvgenmain.c (main): Fix arg processing. + +2010-09-22 Joseph Myers + + * jvspec.c (lang_specific_driver): Handle OPT__help instead of + OPT_fhelp. + * lang.opt (-CLASSPATH, -all-warnings, -bootclasspath, -classpath, + -dependencies, -encoding, -extdirs, -include-directory, + -include-directory=, -output-class-directory, + -output-class-directory=, -resource, -resource=, + -user-dependencies): New. + +2010-09-16 Richard Guenther + + * jcf-parse.c (current_file_list): Remove. + (java_parse_file): Use build_translation_unit_decl. Adjust. + +2010-09-03 Joseph Myers + + * lang.opt (d): New. + +2010-09-03 H.J. Lu + + PR java/45504 + * jvgenmain.c (main): Check "-D XXX=YYY". + +2010-09-02 Joseph Myers + + * jvspec.c (jvgenmain_spec): Don't handle -fnew-verifier. + +2010-09-02 Joseph Myers + + * lang.opt (CLASSPATH, bootclasspath, classpath, encoding, + fCLASSPATH=): Mark as Java options and as aliases. + * jvspec.c (jvgenmain_spec): Don't handle -fCLASSPATH*. + (lang_specific_driver): Don't handle options marked as aliases. + * lang.c (java_handle_option): Don't handle OPT_fCLASSPATH_. + +2010-08-22 Joseph Myers + + * Make-lang.in (jvspec.o): Update dependencies. + * jvspec.c: Include opts.h. + (PARAM_ARG): Remove. + (find_spec_file): Do not add leading -specs=. + (lang_specific_driver): Use cl_decoded_option structures. + * lang.opt (C, CLASSPATH, D, bootclasspath, classpath, encoding, + extdirs, fmain=, s-bc-abi): New options. + +2010-08-20 Nathan Froyd + + * class.c: Use FOR_EACH_VEC_ELT. + * expr.c: Likewise. + * jcf-parse.c: Likewise. + * resource.c: Likewise. + +2010-08-16 Joseph Myers + + * lang.opt (MD_, MMD_, version): Mark RejectDriver. + +2010-08-05 David Daney + + * class.c (build_utf8_ref): Fix code formatting from previous commit. + +2010-08-05 David Daney + + * class.c (build_utf8_ref): Make decl DECL_USER_ALIGN. + +2010-07-27 Joseph Myers + + * lang.c (java_handle_option): Update prototype and return value + type. + +2010-07-27 Joseph Myers + + * lang.c (java_option_lang_mask): New. + (java_init_options): Update prototype. + (LANG_HOOKS_OPTION_LANG_MASK): Define. + +2010-07-15 Nathan Froyd + + * java-tree.h: Carefully replace TREE_CHAIN with DECL_CHAIN. + * boehm.c: Likewise. + * class.c: Likewise. + * decl.c: Likewise. + * expr.c: Likewise. + * jcf-parse.c: Likewise. + * typeck.c: Likewise. + * verify-glue.c: Likewise. + +2010-07-08 Manuel López-Ibáñez + + * boehm.c: Include diagnostic-core.h in every file that includes + toplev.h. + * class.c: Likewise. + * constants.c: Likewise. + * decl.c: Likewise. + * except.c: Likewise. + * expr.c: Likewise. + * jcf-parse.c: Likewise. + * mangle.c: Likewise. + * mangle_name.c: Likewise. + * resource.c: Likewise. + * typeck.c: Likewise. + * verify-glue.c: Likewise. + +2010-07-05 Nathan Froyd + + PR bootstrap/44825 + * class.c (make_class_data): Cast result of VEC_length calls to int. + +2010-07-05 Nathan Froyd + + * constants.c (build_constants_constructor): Use build_constructor + instead of build_constructor_from_list. + * class.c (make_method_value): Likewise. + (get_dispatch_table): Likewise. + (make_class_data): Likewise. + (emit_indirect_register_classes): Likewise. + (emit_symbol_table): Likewise. + (add_assertion_table_entry): Likewise. + (emit_assertion_table): Likewise. + (make_field_value): Use build_constructor_single instead of + build_constructor_from_list. + +2010-06-28 Nathan Froyd + + * java-tree.h (struct lang_type) [catch_classes]: Change type to a + VEC. + * except.c (prepare_eh_table_type): Call CONSTRUCTOR_APPEND_ELT + instead of tree_cons. + * class.c (make_class): Add dummy entry to TYPE_CATCH_CLASSES. + (emit_catch_table): Adjust for new type of TYPE_CATCH_CLASSES. + +2010-06-28 Steven Bosscher + + * lang.c: Do not include except.h + * except.c: Likewise. + (doing_eh): New, moved from except.c (in gcc/) but removed the + do_warning flag. + (maybe_start_try): Update doing_eh call. + * Make-lang.in: Update dependencies. + +2010-06-23 Anatoly Sokolov + + * decl.c (java_init_decl_processing): Use double_int_to_tree instead + of build_int_cst_wide. + * boehm.c (set_bit): Remove. + (mark_reference_fields): Use double_int type for 'mask' argument. + Use double_int_setbit instead of set_bit. + (get_boehm_type_descriptor): Use double_int_setbit instead of + set_bit. Use double_int_to_tree instead of build_int_cst_wide. + +2010-06-10 Gerald Pfeifer + + * gcj.texi: Move to GFDL version 1.3. Fix copyright years. + +2010-06-08 Laurynas Biveinis + + * jcf-reader.c (jcf_parse_constant_pool): Use typed GC allocation. + + * jcf-parse.c (java_parse_file): Likewise. + (process_zip_dir): Likewise. + + * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Likewise. + (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Likewise. + + * expr.c (add_type_assertion): Likewise. + + * decl.c (make_binding_level): Likewise. + (java_dup_lang_specific_decl): Likewise. + + * constants.c (set_constant_entry): Likewise. + (cpool_for_class): Likewise. + + * class.c (add_method_1): Likewise. + (java_treetreehash_new): Likewise. + + * java-tree.h (struct lang_type): Add variable_size GTY option. + (struct lang_decl): Likewise. + + * jch.h (struct cpool_entry): Likewise. + + * java-tree.h (java_treetreehash_create): Remove parameter ggc. + + * except.c (prepare_eh_table_type): Update + java_treetreehash_create call. + + * class.c (add_method_1): Update java_treetreehash_create call. + (java_treetreehash_create): Remove parameter gc. Use + htab_create_ggc. + +2010-06-04 Joseph Myers + + * jvspec.c (lang_specific_driver): Use GCC-specific formats in + diagnostics. + +2010-05-30 Steven Bosscher + + * except.c: Include tm.h. + +2010-05-28 Joseph Myers + + * jvspec.c (lang_specific_driver): Use fatal_error instead of + fatal. Use warning instead of error for warnings. + +2010-05-28 Nathan Froyd + + * expr.c (get_symbol_table_index): Add spaces in expression. + +2010-05-28 Nathan Froyd + + * java-tree.h (method_entry): Declare. Declare VECs containing it. + (struct lang_type): Change type of otable_methods, atable_methods, and + itable_methods to VECs. Fix comment for atable_methods. + (emit_symbol_table): Take a VEC instead of a tree. + (get_symbol_table_index): Take a VEC * instead of a tree *. + * class.c (add_table_and_syms): Take a VEC instead of a tree. + (emit_symbol_table): Update for changed parameter type. + * expr.c (get_symbol_table_index): Likewise. + +2010-05-27 Steven Bosscher + + * buildings.c: Pretend to be a backend file by undefining + IN_GCC_FRONTEND (still need rtl.h here). + +2010-05-26 Nathan Froyd + + * java-tree.h (struct lang_decl_func): Change type of throws_list + field to a VEC. + * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): Adjust for changed type + of DECL_FUNCTION_THROWS. + * class.c (make_method_value): Likewise. + +2010-05-26 Nathan Froyd + + * class.c (utf8_decl_list): Delete. + (build_utf8_ref): Remove references to it. + * java-tree.h (all_class_list): Delete. + (predef_filenames): Delete. + (enum java_tree_index) [JTI ALL_CLASS_LIST,JTI_PREDEF_FILENAMES]: + Delete. + * jcf-parse.c (parse_roots): Decrease size to 2. + (current_file_list): Convert to a VEC. + (all_class_list): Declare. + (jcf_parse): Adjust for new type of all_class_list. + (java_layout_seen_class_methods): Likewise. + (predefined_filenames): Declare. + (add_predefined_file): Use it. + (predefined_filename_p): Likewise. + (java_parse_file): Adjust for new type of current_file_list. + +2010-05-25 Jakub Jelinek + + * lang.c (java_classify_record): Return RECORD_IS_INTERFACE + for interfaces. + + PR debug/43260 + * java-tree.h (pending_static_fields): New extern declaration. + (java_write_globals): New prototype. + * lang.c (LANG_HOOKS_WRITE_GLOBALS): Define. + * decl.c (java_mark_class_local): When clearing DECL_EXTERNAL + of a static field push it into pending_static_fields vector. + * class.c (pending_static_fields): New variable. + (add_field): If static field is not DECL_EXTERNAL, push it into + pending_static_fields vector. + (java_write_globals): New function. + +2010-05-24 Nathan Froyd + + * expr.c (quick_stack): Change type to a VEC. Update comment. + (tree_list_free_list): Delete. + (flush_quick_stack): Update for quick_stack type change. + (push_value): Likewise. + (pop_value): Likewise. + +2010-05-23 Steven Bosscher + + * java-gimplify.c: Do not include tm.h, toplev.h. + * typeck.c: Do not include tm.h. + * mangle_name.c: Do not include tm.h. + * jcf-dump.c: Do not include tm.h, ggc.h. + * class.c: Do not include rtl.h, tm_p.h, target.h, except.h, cgraph.h. + * decl.c: Do not include tm.h, rtl.h, function.h, expr.h, except.h, + and timevar.h. + * jcf-parse.c: Do not include tm.h and tm_p.h. + * resource.c: Do not include tm.h, rtl.h, flags.h, obstack.h, + target.h, and expr.h. + * except.c: Do not include tm.h, rtl.h, function.h. + * builtins.c: Do not include convert.h. Explain why RTL headers + have to be included here. + * verify-glue.c: Do not include tm.h. + * jcf-depend.c: Do not include tm.h. + * jcf-reader.c: Include ggc.h. + * jcf-io.c: Do not include tm.h, toplev.h. + * expr.c: Do not include tm.h, rtl.h, expr.h, except.h, tm_p.h, + gimple.h. + * lang.c: Do not include rtl.h, expr.h. + * Make-lang.in: Update dependencies. + +2010-05-23 Steven Bosscher + + * jcf-parse.c: Include bitmap.h. + * Make-lang.in: Update dependencies. + +2010-05-20 Jakub Jelinek + + PR debug/43521 + * decl.c (start_java_method): Set DECL_ARTIFICIAL on the 'this' + PARM_DECL. + +2010-05-19 Anatoly Sokolov + + * jcf-parse.c (get_constant): Use double_int_to_tree instead of + build_int_cst_wide_type. + +2010-05-18 Nathan Froyd + + * expr.c (pop_arguments): Fix use of undeclared variable. + +2010-05-18 Nathan Froyd + + * expr.c (expand_java_multianewarray): Use build_call_vec instead of + build_call_list. + (pop_arguments): Return a VEC instead of a tree. Take a method type + rather than a list of argument types. + (rewrite_rule): Change signature. of rewrite_arglist member. + (rewrite_arglist_getcaller): Update signature. + (rewrite_arglist_getclass): Likewise. + (maybe_rewrite_invocation): Update for rewrite_arglist change. + (build_known_method_ref): Take a VEC instead of a tree. + (invoke_build_dtable): Likewise. + (expand_invoke): Update calls to pop_arguments. Use build_call_vec + instead of build_call_list. + (build_jni_stub): Use build_call_vec instead of build_call_list. + * java-tree.h (maybe_rewrite_invocation): Update declaration. + (build_known_method_ref): Likewise. + (invoke_build_dtable): Likewise. + +2010-05-14 Nathan Froyd + + PR 44103 + * java-tree.h (START_RECORD_CONSTRUCTOR): Change first argument to a + vector. Move call to build_constructor... + (FINISH_RECORD_CONSTRUCTOR): ...here. Add necessary arguments. Clear + TREE_CONSTANT on the constructor. + (PUSH_SUPER_VALUE): Change first argument to a vector. + (PUSH_FIELD_VALUE): Likewise. + * resource.c (compile_resource_data): Update calls to above macros. + * constants.c (build_constants_constructor): Likewise. + * class.c (build_utf8_ref): Likewise. + (make_field_value): Likewise. + (make_method_value): Likewise. + (add_table_and_syms): New function. + (make_class_data): Call it. Update calls to above macros. + (build_symbol_table_entry): New function. + (build_symbol_entry): Call it. Update calls to above macros. + (emit_symbol_table): Likewise. + (make_catch_class_record): Update calls to above macros. + (build_assertion_table_entry): New function. + (add_assertion_table_entry): Call it. + (emit_assertion_table): Likewise. + +2010-05-06 Manuel López-Ibáñez + + PR 40989 + * lang.c (java_handle_option): Add argument kind. + +2010-04-18 Eric Botcazou + + * decl.c (java_init_decl_processing): Remove argument in call to + initialize_sizetypes + +2010-04-07 Jakub Jelinek + + * exception.cc (_Jv_Throw): Avoid set but not used warning. + * include/java-assert.h (JvAssertMessage, JvAssert): Use argument in + sizeof to avoid set but not used warnings. + +2010-01-20 Joern Rennecke + + * lang.c (java_post_options): Constify variable "dot". + + * jcf-parse.c (set_source_filename): Constify variable "dot". + (load_class): Constify variable "separator". + Use get_identifier_with_length. + + * jvspec.c (lang_specific_driver): Constify two variables named "p". + +2010-01-09 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2009-11-28 Jakub Jelinek + + * jvspec.c (lang_specific_driver): Remove unused + saw_verbose_flag variable. + * jcf-dump.c (main): Remove unused general_purpose_bits + variable. + * builtins.c (initialize_builtins): Remove unused float_ftype_float + variable. + * expr.c (java_stack_pop): Remove unused val variable. + (build_jni_stub): Remove unused res_type variable. + * verify-impl.c (check_field_constant): Remove unused len variable. + +2009-10-20 Joel Dice + + PR java/28474 + * mangle_name.c (append_unicode_mangled_name): Fix mangling + of names with multiple underscores and "U". + (unicode_mangling_length): Likewise. + +2009-10-03 Simon Baldwin + + * config-lang.in (lang_dirs): Remove zlib. + +2009-09-28 Richard Henderson + + * builtins.c (initialize_builtins): Update call to + build_common_builtin_nodes. + * lang.c (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New. + +2009-09-14 Richard Henderson + + * builtins.c (initialize_builtins): Update call to + build_common_builtin_nodes. + * decl.c (java_init_decl_processing): Don't call + default_init_unwind_resume_libfunc. + * except.c: Include tree-iterator.h. + (build_exception_object_var): New. + (build_exception_object_ref): Use it. + (expand_end_java_handler): Initialize it from __builtin_eh_pointer. + Attach all CATCH_EXPRs to a single TRY_CATCH_EXPR. + * java-tree.h (DECL_FUNCTION_EXC_OBJ): New. + +2009-09-13 Richard Guenther + Rafael Avila de Espindola + + * decl.c (do_nothing): Remove. + (java_init_decl_processing): Do not set lang_eh_runtime_type. + * Make-lang.in (lang.o): Add $(EXCEPT_H) dependency. + * lang.c (java_eh_personality): New. + (java_eh_personality_decl): Likewise. + (LANG_HOOKS_EH_PERSONALITY): Define. + +2009-09-03 Diego Novillo + + * lang.c (lang_hooks): Remove const qualifier. + +2009-09-01 Jakub Jelinek + + * boehm.c (mark_reference_fields): Compute % in HOST_WIDE_INT + type. + +2009-09-01 Richard Guenther + + * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Remove. + * java-tree.h (java_mark_addressable): Likewise. + * typeck.c (java_mark_addressable): Likewise. + +2009-08-17 Ralf Wildenhues + + * Make-lang.in (java.install-pdf): Install gcj.pdf in + $(pdfdir)/gcc, alongside the other manuals. + +2009-08-12 Andrew Haley + + * builtins.c (compareAndSwapInt_builtin): Use + flag_use_atomic_builtins. + (compareAndSwapLong_builtin): Likewise. + (compareAndSwapObject_builtin): Likewise. + * jvspec.c: Add flag_use_atomic_builtins. + * gcj.texi: Likewise. + * java-tree.h: Likewise. + * lang.opt: Likewise. + +2009-08-11 Dodji Seketeli + + PR debug/40990 + * lang.c (put_decl_node): Outputs different level of information + depending on the verbosity level. + +2009-07-31 Andrew Haley + + PR java/40867 + * decl.c (java_replace_references): Set EXPR_LOCATION on all + generated expressions. + (binding_level.loc): new field. + (clear_binding_level): Initialize loc. + (set_input_location): New function. + (pushlevel): Set new binding_level.loc. + (poplevel): Set EXPR_LOCATION on the new BIND_EXPR_BODY. + (start_java_method): Set DECL_SOURCE_LOCATION of this new method. + (java_add_stmt): Set the EXPR_LOCATION on all subtrees of new_stmt. + +2009-07-17 Richard Guenther + + PR c/40401 + * java-gimplify.c (java_genericize): Do not gimplify here. + But replace all local references. + (java_gimplify_expr): Do not replace local references here. + (java_gimplify_modify_expr): Likewise. + * jcf-parse.c (java_parse_file): Do not finalize the CU or + optimize the cgraph here. + * decl.c (java_replace_reference): Make static. + (java_replace_references): New function. + (end_java_method): Clear base_decl_map. + * java-tree.h (java_replace_references): Declare. + (java_replace_reference): Remove. + +2009-07-14 Taras Glek + Rafael Espindola + + * Make-lang.in (java.install-plugin): New target for + installing plugin headers. + +2009-07-07 Manuel López-Ibáñez + + * class.c: Replace %J by an explicit location. Update all calls. + +2009-07-07 Manuel López-Ibáñez + + * jcf-parse.c: Replace %H by an explicit location. Update all calls. + +2009-06-29 Andrew Haley + + PR java/40590 + * java-tree.h (cxx_keyword_p): New declaration. + * mangle_name.c (utf8_cmp): Move here from mangle.c. + (cxx_keywords): Likewise. + (cxx_keyword_p): Likewise. + (MANGLE_CXX_KEYWORDS): New macro. + (append_gpp_mangled_name): Use MANGLE_CXX_KEYWORDS. + (append_gpp_mangled_name): Likewise. + * mangle.c: Move code to mangle_name.c. + (mangle_member_name): Don't call cxx_keyword_p. + +2009-06-12 Aldy Hernandez + + * java-gimplify.c (java_gimplify_block): New argument to + build_empty_stmt. + * expr.c (force_evaluation_order): Same. + * typeck.c: Add location to build_decl or PUSH_FIELD calls. + * class.c: Same. + * decl.c: Same. + * jcf-parse.c: Same. + * constants.c: Same. + * resource.c: Same. + * except.c: Same. + * builtins.c: Same. + * expr.c: Same. + * java-tree.h (PUSH_FIELD): Add location field. + +2009-06-09 Ian Lance Taylor + + * verify.h: Remove extern "C". + +2009-06-07 Ian Lance Taylor + + * jcf-parse.c (handle_constant): Change local variable 'kind' to + unsigned int. + +2009-06-01 Ian Lance Taylor + + * jcf-io.c (find_class): Use CONST_CAST. + +2009-05-27 Ian Lance Taylor + + * Make-lang.in ($(XGCJ)$(exeext)): Change $(COMPILER) to + $(LINKER). + (jc1$(exeext), jcf-dump$(exeext), jvgenmain$(exeext)): Likewise. + +2009-05-26 Ian Lance Taylor + + * Make-lang.in (jvspec.o): Use $(COMPILER). + ($(XGCJ)$(exeext), jc1$(exeext), jcf-dump$(exeext)): Likewise. + (jvgenmain$(exeext), java/jcf-io.o, java/jcf-path.o): Likewise. + +2009-05-12 Alexandre Oliva + + * Make-lang.in (GCJ): Renamed to... + (XGCJ): ... this. + +2009-04-27 Ian Lance Taylor + + * builtins.c (java_builtins): Add casts to enum type. + * verify-impl.c (check_class_constant): Add cast to enum type. + (check_constant, check_wide_constant): Likewise. + +2009-04-27 Richard Guenther + + PR java/38374 + * constants.c (build_constants_constructor): Retain the old + pointer type as valid TYPE_POINTER_TO after patching the + type of the constant pool decl. + +2009-04-24 Ian Lance Taylor + + * jcf-parse.c (handle_constant): Add cast to enum type. + +2009-04-21 Taras Glek + + * builtins.c: Update GTY annotations to new syntax + * decl.c: Likewise + * java-tree.h: Likewise + * jcf.h: Likewise + * lang.c: Likewise + +2009-04-21 Joseph Myers + + * ChangeLog, ChangeLog.ptr, ChangeLog.tree-ssa: Add copyright and + license notices. + +2009-04-18 Ian Lance Taylor + + * verify-impl.c (verify_instructions_0): Add cast to enum type. + +2009-04-09 Paolo Bonzini + + * builtins.c (compareAndSwapLong_builtin, + compareAndSwapInt_builtin, compareAndSwapObject_builtin, + VMSupportsCS8_builtin): Do not look at sync_compare_and_swap_cc. + +2009-03-31 Richard Guenther + + * java-gimplify.c (java_gimplify_expr): Do not manually gimplify + the first operand of binary and comaprison expressions. + +2009-03-30 Joseph Myers + + PR rtl-optimization/323 + * lang.c (java_post_options): Set flag_excess_precision_cmdline. + Give an error for -fexcess-precision=standard for processors where + the option is significant. + +2009-03-18 Ralf Wildenhues + + * lang.opt: Unify help text for -Wdeprecated. + +2009-02-03 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2009-01-16 Richard Guenther + + PR tree-optimization/38835 + PR middle-end/36227 + * builtins.c (build_addr_sum): Use POINTER_PLUS_EXPR. + +2008-12-05 Sebastian Pop + + PR bootstrap/38262 + * Make-lang.in (jc1): Add BACKENDLIBS, remove GMPLIBS. + +2008-11-04 Andrew Haley + + PR java/37068 + * jcf-parse.c (java_emit_static_constructor): Don't call + cgraph_build_static_cdtor. Rewrite. + +2008-10-24 Jakub Jelinek + + * Make-lang.in (check-java-subtargets): New target. + +2008-10-16 David Edelsohn + + PR target/35483 + * Make-lang.in (class.o): Depend on $(TM_P_H). + (expr.o): Same. + * class.c: Include tm_p.h. + * expr.c: Include tm_p.h. + +2008-10-14 Andrew Haley + + * constants.c (build_constant_data_ref): Make sure we only build + one copy of the decl for the constant pool. + +2008-09-22 Andrew Haley + + * expr.c (rules): Add new rule for + gnu.java.lang.VMCPStringBuilder.toString. + (rewrite_rule.new_classname): New field. + (maybe_rewrite_invocation): Use new_classname field instead of + DECL_CONTEXT (*method_p). + Allow rewrite_arglist to be NULL. + +2008-09-17 Andrew Pinski + + * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): Don't define. + (java_get_callee_fndecl): Kill. + +2008-09-17 Jan Hubicka + + PR c++/18071 + * class.c (add_method_1): Do not initialize DECL_INLINE. + (make_local_function_alias): Likewise. + * expr.c (rewrite_arglist_getcaller): Set DECL_UNINLINABLE. + * lang.c (java_decl_ok_for_sibcall): Use DECL_UNINLINABLE. + +2008-09-09 Richard Guenther + + * decl.c (build_result_decl): Remove no longer applicable + promotion. + +2008-09-05 David Daney + + * gcj.texi (-freduced-reflection): Clarify option's restrictions. + +2008-08-21 David Daney + + * class.c (make_class_data): Don't add field_index when + flag_reduced_reflection set. + +2008-08-12 Ulrich Weigand + + * typeck.c (convert): Do not check for TARGET_FLOAT_FORMAT. + +2008-08-08 Manuel Lopez-Ibanez + + PR 28875 + * lang.c (java_handle_option): Replace set_Wunused with + warn_unused. + +2008-07-30 Ralf Wildenhues + + * gcj.texi: Update copyright years. Do not list GPL as + Invariant Section. + +2008-07-29 Jakub Jelinek + + * class.c (build_utf8_ref): Set DECL_SIZE and DECL_SIZE_UNIT + from ctype's sizes. + + * class.c (build_utf8_ref): Pad initializer string to utf8const_type's + alignment. + +2008-07-29 Jan Hubicka + + * lang.c (java_post_options): Remove handling of flag_no_inline. + +2008-07-28 Richard Guenther + + Merge from gimple-tuples-branch. + + 2008-07-18 Richard Guenther + + * expr.c: Include tree-iterator.h. + * Make-lang.in (expr.o): Add tree-iterator.h dependency. + + 2008-07-18 Aldy Hernandez + + * java-gimplify.c: Include gimple.h instead of tree-gimple.h. + * expr.c: Same. + + 2008-07-14 Aldy Hernandez + + * java-gimplify.c (java_gimplify_expr): Same. + (java_gimplify_modify_expr): Same. + * java-tree.h: Rename GENERIC_NEXT to TREE_CHAIN. + + 2008-05-02 Diego Novillo + + * expr.c (build_java_throw_out_of_bounds_exception): Fix + mixed declarations and code. + + 2008-05-02 Doug Kwan + + * expr.c (build_java_throw_out_of_bounds_exception ): Wrap call to + _Jv_ThrowBadArrayIndex with a COMPOUND_EXPR to return 0. + + 2008-02-19 Diego Novillo + + http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00804.html + + * java-gimplify.c (java_gimplify_self_mod_expr): Change + gimple_seq arguments to gimple_seq *. Update all users. + + 2007-11-26 Aldy Hernandez + + * java-gimplify.c (java_gimplify_expr): Make pre_p and post_p + sequences. + (java_gimplify_self_mod_expr): Same. + * java-tree.h (java_gimplify_expr): Make pre_p and post_p + sequences. + +2008-07-24 Jan Hubicka + + * java/decl.c: Include cgraph.h + (end_java_method): Remove non-unit-at-a-time code. + (java_mark_decl_local): Likewise; sanity check that we don't touch + finalized nodes. + +2008-07-15 Jan Hubicka + + * lang.c (java_init_options): Enable unit-at-a-time by default. + +2008-07-14 Ralf Wildenhues + + * Make-lang.in (jvspec.o): Fix dependencies. + +2008-07-06 Tom Tromey + + * Make-lang.in (java/parse.o-warn): Remove. + (java/jcf-io.o-warn): Remove. + +2008-07-05 Tom Tromey + + * jcf-io.c: Don't include fnmatch.h. Don't use JCF_USE_SCANDIR. + (compare_path): Remove. + (java_or_class_file): Likewise. + (memoized_dirlist_entry): Likewise. + (memoized_dirlist_hash): Likewise. + (memoized_dirlist_lookup_eq): Likewise. + (memoized_dirlists): Likewise. + (caching_stat): Likewise. + (find_class): Use stat. + * jcf.h (JCF_USE_SCANDIR): Remove. + +2008-06-30 Joshua Sumali + + * Make-lang.in (JAVA_MANFILES): Add doc/aot-compile.1 and + doc/rebuild-gcj-db.1 + (java.uninstall): Likewise. + (java.maintainer-clean): Likewise. + (aot-compile.pod): New rule. + (rebuild-gcj-db.pod): New rule. + (java.install-man): Install doc/aot-compile.1 and doc/rebuild-gcj-db.1 + * gcj.texi: Add new sections for aot-compile and rebuild-gcj-db. + +2008-06-29 Kaveh R. Ghazi + + * Make-lang.in (java/jcf-io.o-warn): New. + +2008-06-24 Tom Tromey + + * jcf-path.c (jcf_path_init): Don't name variable 'try'. + * expr.c (add_type_assertion): Rename argument. + (build_java_arrayaccess): Don't name variable 'throw'. + (ARRAY_NEW_MULTI): Don't name variable 'class'. + * jcf-io.c (find_class): Don't name variable 'class'. + * mangle.c (compression_table_add): Don't name variable 'new'. + * constants.c (cpool_for_class): Rename argument. + (alloc_constant_fieldref): Likewise. + * jcf-parse.c (handle_innerclass_attribute): Don't name variable + 'class'. + (read_class): Likewise. + (parse_zip_file_entries): Likewise. + (process_zip_dir): Likewise. + * decl.c (java_mark_class_local): Rename argument. + * class.c (GEN_TABLE): Use type_name, not typename. + (gen_indirect_dispatch_tables): Likewise. + (add_field): Rename argument. + (is_compiled_class): Likewise. + (safe_layout_class): Likewise. + (emit_assertion_table): Likewise. + * typeck.c (has_method): Rename argument. + +2008-06-19 Kaveh R. Ghazi + + * class.c (ident_subst, mangled_classname, unmangle_classname, + gen_indirect_dispatch_tables, add_method_1, + build_fieldref_cache_entry, make_local_function_alias, + layout_class, java_treetreehash_find, java_treetreehash_new, + split_qualified_name): Fix for -Wc++-compat. + * constants.c (set_constant_entry, cpool_for_class): Likewise. + * decl.c (make_binding_level, java_dup_lang_specific_decl, + start_java_method): Likewise. + * except.c (prepare_eh_table_type): Likewise. + * expr.c (type_assertion_hash, note_instructions): Likewise. + * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC, + MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Likewise. + * jcf-io.c (jcf_filbuf_from_stdio, opendir_in_zip, find_class): + Likewise. + * jcf-parse.c (reverse, java_read_sourcefilenames, + annotation_grow, rewrite_reflection_indexes, java_parse_file, + process_zip_dir): Likewise. + * jcf-path.c (add_entry, add_path, jcf_path_init, + jcf_path_extdirs_arg): Likewise. + * jcf-reader.c (jcf_parse_constant_pool): Likewise. + * jvgenmain.c (do_mangle_classname): Likewise. + * lang.c (put_decl_string): Likewise. + * verify-impl.c (make_state_copy, make_state, add_new_state): + Likewise. + +2008-06-15 Ralf Wildenhues + + * gcj.texi: Expand TABs, remove whitespace from blank lines. + +2008-06-14 Tom Tromey + + PR java/36247: + * class.c (build_class_ref): Initialize this_classdollar when + needed. + +2008-05-23 Andrew Haley + + * jcf-parse.c (give_name_to_class): Call find_sourcefile to find full + pathname of source file. + +2008-05-12 Aaron W. LaFramboise + + * jcf-dump.c (print_constant): Use + HOST_LONG_LONG_FORMAT. + +2008-05-07 Kenneth Zadeck + + * decl.c (java_init_decl_processing): Change DECL_IS_PURE to + DECL_PURE_P. + +2008-04-23 Paolo Bonzini + + * class.c (build_utf8_ref): Don't set TREE_INVARIANT. + (build_classdollar_field): Don't set TREE_INVARIANT. + (get_dispatch_table): Don't set TREE_INVARIANT. + (make_class_data): Don't set TREE_INVARIANT. + (build_symbol_entry): Don't set TREE_INVARIANT. + (emit_symbol_table): Don't set TREE_INVARIANT. + * constants.c (build_constant_data_ref): Don't set TREE_INVARIANT. + (build_ref_from_constant_pool): Don't set TREE_INVARIANT. + * resource.c (compile_resource_data): Don't set TREE_INVARIANT. + * expr.c (cache_cpool_data_ref): Don't set TREE_INVARIANT. + +2008-04-03 Tom Tromey + + * Make-lang.in (java_OBJS): New variable. + +2008-04-03 Paolo Bonzini + + * java-tree.h (insert_block): Kill. + * decl.c (insert_block): Kill. + +2008-04-01 Joseph Myers + + * gcj.texi: Include gpl_v3.texi instead of gpl.texi + * Make-lang.in (TEXI_JAVA_FILES): Include gpl_v3.texi instead of + gpl.texi. + +2008-03-27 Tom Tromey + + * Make-lang.in: Revert automatic dependency patch. + +2008-03-25 Tom Tromey + + * Make-lang.in: Removed most explicit .o targets. + (java/jvspec.o): Reduce to variable setting. Moved to java/. + ($(GCJ)$(exeext)): Update. + (JAVA_OBJS): New variable. + (JCFDUMP_OBJS): Reformat. + (java_OBJS): New variable. + (java/jvspec.o-warn): Update. + (java/parse.o-warn): Remove. + (JAVA_TREE_H): Remove. + (java/jcf-io.o): Reduce to variable setting. + (ALL_CPPFLAGS): Likewise. + +2008-03-12 Paolo Bonzini + + * mangle.c (java_mangle_decl): Remove dead check. + +2008-03-11 Paolo Bonzini + + * jcf-parse.c (java_parse_file): Assert binding levels are + left in order. + * lang.c (LANG_HOOKS_CLEAR_BINDING_STACK, java_clear_binding_stack): + Delete. + +2008-03-02 Jakub Jelinek + + * jcf-dump.c (version): Update copyright notice dates. + +2008-02-29 Tom Tromey + + * expr.c (expand_byte_code): Set DECL_FUNCTION_LAST_LINE on + method. + * java-tree.h (struct lang_decl_func): Remove obsolete comment. + +2008-02-26 Tom Tromey + + * lang.c (java_post_options): Remove conditional. + * expr.c (expand_byte_code): Remove old location code. + * jcf-parse.c (set_source_filename): Remove old location code. + (give_name_to_class): Likewise. + (jcf_parse): Likewise. + (duplicate_class_warning): Likewise. + (parse_class_file): Likewise. + (java_parse_file): Likewise. + * decl.c (finish_method): Remove old location code. + * class.c (push_class): Remove old location code. + +2008-02-06 Kaveh R. Ghazi + + PR other/35107 + * Make-lang.in (jc1): Add $(GMPLIBS). + +2008-01-23 David Daney + + * class.c (hide) Rename to... + (java_hide_decl) ... this throughout, and make public. + * resource.c (Jr_count): Remove. + (compile_resource_data): Call java_mangle_resource_name to generate + decl name. Make resource decl public and hidden. + * mangle.c (java_mangle_resource_name): New function. + * java-tree.h (java_hide_decl, java_mangle_resource_name): Declare + functions. + +2008-01-04 Andrew Haley + + PR java/17779 + * jcf-parse.c (parse_zip_file_entries): Move decl to compile on + C90. + +2008-01-03 Andrew Haley + + PR java/17779 + * jcf-parse.c (parse_zip_file_entries): Unset TYPE_ALIAS_SET if + we're about to re-layout the type. + +2007-12-20 Alexandre Oliva + + * lang.c (java_classify_record): Don't return + RECORD_IS_INTERFACE for now. + +2007-12-18 Andrew Haley + + PR java/27643 + * jcf-parse.c (java_parse_file): Remove call to + java_mark_class_local. + (parse_class_file): Reinstate call to java_mark_class_local here. + * decl.c (java_mark_cni_decl_local): If the ASSEMBLER_NAME is + already set, call java_mangle_decl() and make_decl_rtl() to + rewrite its name as a hidden alias. + +2007-12-15 Alexandre Oliva + + PR debug/7081 + * lang.c (java_classify_record): New. + (LANG_HOOKS_CLASSIFY_RECORD): Override. + +2007-11-26 Andreas Krebbel + + PR 34081/C++ + * decl.c (finish_method): Pass 'false' for the new + allocate_struct_function parameter. + +2007-11-26 Alexandre Oliva + + * expr.c (build_jni_stub): Use the computed jni func type for + variable meth. + +2007-11-26 Alexandre Oliva + + * class.c (JAVA_TREEHASHHASH_H): Use TYPE_UID. + +2007-11-26 Alexandre Oliva + + * expr.c (type_assertion_hash): Hash type uids rather than + tree pointers. + +2007-11-17 David Daney + Andrew Haley + + * constants.c (build_constants_constructor): Use POINTER_SIZE + insead of BITS_PER_WORD in big-endian work around. + +2007-11-07 Tom Tromey + + PR java/34019: + * gcj.texi (Input Options): Add missing noun. + +2007-11-02 Tom Tromey + + PR java/33765: + * jcf-parse.c (java_parse_file): Ignore ZIPEMPTYMAGIC files. + * zipfile.h (ZIPEMPTYMAGIC): New define. + +2007-11-01 Tom Tromey + + * Make-lang.in (java/jcf-dump.o): Depend on zipfile.h. + (java/jcf-parse.o): Depend on jcf-reader.c, zipfile.h, and jcf.h. + (java/jcf-io.o): Depend on zipfile.h. + +2007-10-17 Richard Guenther + + * Make-lang.in (java/builtins.o): Add $(OPTABS_H) and $(EXPR_H) + dependencies. + +2007-10-03 Andrew Haley + + PR java/33639 + * class.c (mangled_classname): Detect and replace illegal + characters in assembly language symbols. + (gen_indirect_dispatch_tables): Call mangled_classname() on + the type. + +2007-09-27 Jakub Jelinek + + * lang.c (java_print_error_function): Add third argument. + +2007-09-15 Tom Tromey + + * java-tree.h (struct lang_decl_func) : + Remove. + : Likewise. + * lang.c (java_dump_tree): Update. + * java-tree.h (DECL_FUNCTION_BODY): Remove. + +2007-09-11 Jan Hubicka + + * decl.c (java_expand_body): Kill. + (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill. + +2007-09-06 Tom Tromey + + * jcf-parse.c (parse_class_file): Re-enter the current file. + +2007-09-07 Roman Zippel + + * boehm.c (mark_reference_fields): Move misaligned pointer check + after JREFERENCE_TYPE_P test + +2007-09-06 Roman Zippel + + * boehm.c (mark_reference_fields): Don't use bitmap as gc_descr + if pointer is misaligned. + +2007-09-06 Tom Tromey + + * lang.c (java_post_options): Update. + * jcf-parse.c (set_source_filename): Update. + (give_name_to_class): Update. + (jcf_parse): Update. + (duplicate_class_warning): Update. + (parse_class_file): Update. + (java_parse_file): Update. + * expr.c (expand_byte_code): Update. + +2007-09-05 Sandra Loosemore + + * decl.c (finish_method): Use set_cfun. + +2007-09-04 Andrew Haley + + * decl.c (java_init_decl_processing): Call "__cxa_end_cleanup" + when using the ARM EABI. + +2007-09-03 Daniel Jacobowitz + + * Make-lang.in (jvspec.o): Remove SHLIB_MULTILIB. + +2007-09-03 Kaveh R. Ghazi + + * jcf-parse.c (read_class, java_parse_file): Supply a TYPE for + CONST_CAST. + * jcf.h (JCF_FINISH): Likewise. + +2007-08-28 Tom Tromey + + * Make-lang.in (java.tags): Don't tag '*.y' files. + +2007-08-25 Kaveh R. Ghazi + + * lang.c (java_decl_ok_for_sibcall): Likewise. + +2007-08-21 Paul Brook + Nathan Sidwell + Mark Mitchell + Joseph Myers + + * jcf-dump.c (version): Use pkgversion_string. Update copyright + date. + +2007-08-20 Richard Guenther + + * lang.c (java_tree_inlining_walk_subtrees): Remove. + (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Remove. + +2007-08-17 Tom Tromey + + * typeck.c (find_method_in_interfaces): Update. + * jcf-parse.c (load_class): Update. + * java-gimplify.c (java_gimplify_component_ref): Removed. + (java_gimplify_modify_expr): Update. Removed pre_p and post_p + arguments. + (java_gimplify_expr): Update. + * decl.c (java_init_decl_processing): Update. + * class.c (set_constant_value): Update. + (make_class_data): Update. + (finish_class): Update. + (build_static_field_ref): Update. + (is_compiled_class): Update. + (maybe_layout_super_class): Update. + (layout_class): Update. + (layout_class_method): Update. + * java-tree.h (CAN_COMPLETE_NORMALLY): Removed. + (lang_decl_var) : Removed fields. + (lang_decl_func) : Removed field. + (lang_type) : Removed fields. + (FIELD_NESTED_ACCESS): Removed. + (FIELD_NESTED_ACCESS_P): Removed. + (DECL_FIELD_FINAL_IUD): Removed. + (DECL_LOCAL_FINAL_IUD): Removed + (LOCAL_FINAL_P): Removed. + (FINAL_VARIABLE_P): Removed. + (CLASS_FINAL_VARIABLE_P): Removed. + (DECL_BIT_INDEX): Removed. + (DECL_INIT_CALLS_THIS): Removed. + (FIELD_LOCAL_ALIAS): Removed. + (FIELD_LOCAL_ALIAS_USED): Removed. + (FIELD_THISN): Removed. + (DECL_FUNCTION_INIT_TEST_CLASS): Removed. + (LOCAL_CLASS_INITIALIZATION_FLAG): Removed. + (LOCAL_CLASS_INITIALIZATION_FLAG_P): Removed. + (TYPE_DOT_CLASS): Removed. + (TYPE_VERIFY_METHOD): Removed. + (ID_CLASSDOLLAR_P): Removed. + (enum java_tree_index) : + Removed. + (classdollar_identifier_node): Removed. + (TYPE_UNKNOWN): Removed. + (CLASS_FROM_SOURCE_P): Removed. + * expr.c (build_jni_stub): Update. + (force_evaluation_order): Update. + (build_java_empty_stmt): Update. + (build_class_init): Update. + (java_stack_swap): Update. + (build_jni_stub): Update. + +2007-08-17 Tom Tromey + + * java-tree.h (LABEL_TYPE_STATE): Removed. + (load_type_state): Removed. + (LABEL_PC): Removed. + (LABEL_VERIFIED): Removed. + (type_states): Declare. + * expr.c (type_states): New global. + (load_type_state): Now static. Use type_states. Changed + argument. + (lookup_label): Don't set LABEL_PC. + (expand_byte_code): Don't use LABEL_VERIFIED. + (note_instructions): Initialize type_states. + * verify-glue.c (vfy_note_stack_depth): Rewrote. + (vfy_note_stack_type): Use type_states. + (vfy_note_local_type): Likewise. + +2007-08-10 Kaveh R. Ghazi + + * jcf-parse.c (read_class, java_parse_file): Use CONST_CAST. + * jcf.h (JCF_FINISH): Likewise. + +2007-07-31 Nick Clifton + + * java-gimplify.c: Change copyright header to refer to version 3 + of the GNU General Public License and to point readers at the + COPYING3 file and the FSF's license web page. + * typeck.c, lang-specs.h, mangle_name.c, jcf-dump.c, class.c, + decl.c, config-lang.in, jcf-parse.c, constants.c, Make-lang.in, + resource.c, except.c, builtins.c, jvspec.c, java-tree.def, + javaop.def, jcf-path.c, verify-glue.c, jcf-depend.c, lang.opt, + jcf-reader.c, mangle.c, zextract.c, jcf-io.c, jcf.h, zipfile.h, + verify.h, java-except.h, win32-host.c, expr.c, jvgenmain.c, + parse.h, lang.c, java-tree.h, javaop.h, boehm.c: Likewise. + +2007-07-30 Kaveh R. Ghazi + + * jcf-io.c (find_class): Fix -Wcast-qual warnings. + +2007-07-29 Kaveh R. Ghazi + + * lang.c (java_get_callee_fndecl): Constify. + +2007-07-27 Kaveh R. Ghazi + + * mangle.c (set_type_package_list): Constify. + * verify-glue.c (vfy_make_string): Delete. + * verify.h (vfy_make_string): Likewise. + +2007-07-26 Tom Tromey + + * java-tree.h (push_labeled_block, pop_labeled_block): Remove. + (LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, + EXIT_BLOCK_LABELED_BLOCK): Likewise. + * lang.c (java_tree_inlining_walk_subtrees): Update. + (java_dump_tree): Likewise. + * java-tree.def (LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, TRY_EXPR): + Remove. + * decl.c (push_labeled_block, pop_labeled_block): Remove. + * java-gimplify.c (java_gimplify_labeled_block_expr, + java_gimplify_exit_block_expr, java_gimplify_try_expr): Remove. + (java_gimplify_expr): Update. + +2007-07-25 Kaveh R. Ghazi + + * class.c (java_treetreehash_hash, java_treetreehash_compare): + Constify. + * expr.c (type_assertion_eq): Likewise. + * jcf-io.c (compare_path): Likewise. + * jcf-parse.c (cmpstringp): Likewise. + * verify-impl.c (get_one_type, compute_argument_types, + compute_return_type): Likewise. + +2007-07-16 Rainer Orth + + PR target/32462 + PR libgcj/32465 + * class.c (hide): Wrap in HAVE_GAS_HIDDEN. + +2007-07-12 Richard Guenther + + * expr.c (expand_java_return): RETURN_EXPR has void type. + (build_jni_stub): Likewise. Use a comparison against zero + for null-pointer test in COND_EXPR. + (build_field_ref): Build POINTER_PLUS_EXPR with correct + type. Convert result instead. + (build_invokevirtual): Likewise. + +2007-07-09 Geoffrey Keating + + PR 32617 + * lang.c (java_init): Remove setting of force_align_functions_log. + * class.c (add_method_1): Set DECL_ALIGN of non-static method + to cope with ptrmemfunc_vbit_in_pfn. + +2007-07-03 David Daney + + * java/Make-lang.in (doc/gcj.info): Add $(gcc_docdir) to + include path. + (doc/gcj.dvi): Same. + (doc/gcj.pdf): Same. + (java/index.html): Same. + +2007-06-15 Andrew Pinski + + * class.c (make_class_data): Build the index in sizetype. + Use POINTER_PLUS_EXPR instead of PLUS_EXPR when + adding to a pointer type. + (build_symbol_entry): Likewise. + * expr.c (build_java_arrayaccess): Likewise. + (build_field_ref): Likewise. + (build_known_method_ref): Likewise. + (build_invokevirtual): Likewise. + * except.c (build_exception_object_ref): Do a + NEGATIVE and then a POINTER_PLUS_EXPR instead + of a MINUS_EXPR. + +2007-06-11 Rafael Ávila de Espíndola + + * typeck.c (java_signed_type): Remove. + * lang.c (LANG_HOOKS_SIGNED_TYPE): Remove. + * java-tree.h (java_signed_type): Remove. + +2007-05-18 Geoffrey Keating + + * jcf-dump.c (HANDLE_MAGIC): Use 'unsigned long' for %lx. + (print_constant): Likewise. + +2007-05-14 Rafael Ávila de Espíndola + + * expr.c (build_java_binop): Use unsigned_type_for instead of + java_unsigned_type. + * java-tree.h (java_unsigned_type): Remove. + * lang.c (LANG_HOOKS_UNSIGNED_TYPE): Remove. + * typeck.c (java_unsigned_type): Remove. + +2007-04-21 Andrew Pinski + + * java-tree.h (lang_tree_node): Use GENERIC_NEXT + instead of checking GIMPLE_STMT_P in chain_next. + +2007-04-06 Colin Walters + + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161701 + * jcf-io.c (open_class): Copy 'filename'. + +2007-04-03 Andrew Haley + + * jvgenmain.c (main): Change main to use class$, not class$$. + (do_mangle_classname): Likewise. + * class.c (hide): New function. + (add_field): Hide everything that shouldn't be visible outside a + DSO. + (build_static_class_ref): Likewise. + (build_classdollar_field): Likewise. + (make_class_data): Likewise. + (layout_class_method): Likewise. + * expr.c (special_method_p): New function. + + * class.c (push_class): Don't bogusly guess the source filename. + * jcf-parse.c (give_name_to_class): Don't set input_location from + DECL_ARTIFICIAL decls. + +2007-03-30 Rafael Ávila de Espíndola + + * typeck.c (java_signed_or_unsigned_type): Removed. + (java_signed_type): use get_signed_or_unsigned_type instead of + java_signed_or_unsigned_type. + (java_unsigned_type): Ditto. + * lang.c (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Removed. + * java-tree.h (java_signed_or_unsigned_type): Removed. + +2007-03-26 Tom Tromey + + * Make-lang.in (JAVA_MANFILES): Removed grmiregistry.1. + (java.maintainer-clean): Likewise. + (java.install-man): Likewise. + (.INTERMEDIATE): Removed grmiregistry.pod. + (grmiregistry.pod): Removed. + * gcj.texi (Invoking gcjh): Removed. + (Invoking gjnih): Likewise. + (Invoking grmiregistry): Likewise. + (direntry): Updated. + (Top): Likewise. + (which-gcj): Removed. + +2007-03-01 Brooks Moses + + * Make-lang.in: Add install-pdf target as copied from + automake v1.10 rules. + +2007-02-27 Brooks Moses + + * gcj.texi: Standardize title page. + +2007-02-18 Kazu Hirata + + * class.c: Fix a comment typo. + +2007-02-15 Sandra Loosemore + Brooks Moses + Lee Millward + + * java-tree.h (BUILD_MONITOR_ENTER): Use build_call_nary instead + of build3. + (BUILD_MONITOR_EXIT): Likewise. + + * java-gimplify.c (java_gimplify_component_ref): Use build_call_expr. + (java_gimplify_modify_expr): Likewise. + + * class.c (cache_this_class_ref): Use build_call_expr. + (build_static_field_ref): Likewise. + (emit_indirect_register_classes): Likewise. + (emit_register_classes): Likewise. + + * resource.c (write_resource_constructor): Use build_call_expr. + + * builtins.c (builtin_creator_function): Change interpretation of + the second parameter to be the whole CALL_EXPR instead of the arglist. + (max_builtin): Tweak parameter list. Use new CALL_EXPR accessors. + (min_builtin): Likewise. + (abs_builtin): Likewise. + (java_build_function_call_expr): Likewise. + (convert_real): Likewise. + (UNMARSHAL3): Likewise. + (UNMARSHAL4): Likewise. + (UNMARSHAL5): Likewise. + (build_arglist_for_builtin): Delete. Fix callers to use + build_call_expr instead. + (putObject_builtin): Tweak parameter list. Use new CALL_EXPR + accessors. + (compareAndSwapInt_builtin): Likewise. + (compareAndSwapLong_builtin): Likewise. + (compareAndSwapObject_builtin): Likewise. + (putVolatile_builtin): Likewise. + (getVolatile_builtin): Likewise. + (VMSupportsCS8_builtin): Likewise. + (check_for_builtin): Pass entire CALL_EXPR to builtin expander + instead of arglist. + + * expr.c (build_java_athrow): Use build_call_nary instead of build3. + (build_java_throw_out_of_bounds_exception): Likewise. + (java_check_reference): Likewise. + (build_java_arraystore_check): Likewise. + (build_newarray): Likewise. + (build_anewarray): Likewise. + (expand_java_multinewarray): Use build_call_list instead of build3. + (build_java_monitor): Use build_call_nary instead of build3. + (java_create_object): Likewise. + (expand_java_NEW): Likewise. + (build_instanceof): Likewise. + (expand_java_CHECKCAST): Likewise. + (build_java_soft_divmod): Likewise. + (build_java_binop): Likewise. + (build_field_ref): Likewise. + (build_class_init): Likewise. + (rewrite_arglist_getcaller): Use build_call_expr. + (build_invokeinterface): Use build_call_nary instead of build3. + (expand_invoke): Use build_call_list instead of build3. + (build_jni_stub): Use build_call_nary, build_call_list, or + build_call_expr instead of build3. + (expand_java_field_op): Use build_call_expr instead of build3. + (force_evaluation_order): Use new CALL_EXPR accessors. + + * lang.c (java_get_callee_fndecl): Use new CALL_EXPR accessors. + +2007-02-15 David Daney + + * Make-lang.in (JAVA_MANFILES): Add doc/gc-analyze.1. + (java.maintainer-clean):Add gc-analyze.1. + (.INTERMEDIATE): Add gc-analyze.pod. + (gc-analyze.pod): New rule. + (java.install-man): Install gc-analyze.1 + * gcj.texi: Add new section for the gc-analyze program. + +2007-02-07 Andrew Haley + + * class.c (uncache_this_class_ref): New. + * expr.c (build_jni_stub): Initialize the class. + (expand_byte_code): Call uncache_this_class_ref after generating + code. + +2007-02-06 Tom Tromey + + PR java/30714: + * jvspec.c (lang_specific_driver): Check for the '-' in '-I'. + +2007-02-03 Kazu Hirata + + * java-tree.h, javaop.def, jcf-parse.c: Fix comment typos. + +2007-02-02 Andrew Haley + + * expr.c (expand_byte_code): Call cache_this_class_ref() and + cache_cpool_data_ref(). + Set TYPE_CPOOL_DATA_REF. + (cache_cpool_data_ref): New function. + * constants.c (build_ref_from_constant_pool): Remove special-case + code for flag_indirect_classes. + (build_constant_data_ref): Move special-case code for + flag_indirect_classes here from build_ref_from_constant_pool. + * decl.c (finish_method): Move class initialization from here to + cache_this_class_ref. + * class.c (cache_this_class_ref): New function. + (build_class_ref): Use this_classdollar for the ouput class. + +2007-02-02 David Daney + + * class.c (is_compiled_class): Move check to avoid reloading + current class. + (layout_class_method): Don't calculate DECL_EXTERNAL if it is + already set. + +2007-02-01 Andrew Haley + + PR java/30641 + * jcf-parse.c (jcf_parse): Clear the field_offsets bitmap. + +2007-01-31 Kazu Hirata + + * class.c, jcf-parse.c: Fix comment typos. + +2007-01-30 Tom Tromey + + * gcj.texi (Strings): Fix documentation for JvNewString. + +2007-01-30 Ralf Wildenhues + + * gcj.texi (Invoking gcjh, Invoking gjnih, Arrays): Fix some + typos. + +2007-01-30 Ben Elliston + + * jvspec.c (lang_specific_driver): Remove unused classpath_args. + +2007-01-29 Tom Tromey + + PR java/30607: + * jvspec.c (lang_specific_driver): Handle separate -I argument. + * lang.opt (-I): Add 'Separate'. + +2007-01-29 Andrew Haley + + * class.c (add_method_1): Mark fndecl as external unless we are + compiling it into this object file. + +2007-01-24 Andrew Haley + + * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): current_class is a + type node, not a decl, so use TYPE_SYNTHETIC not CLASS_SYNTHETIC. + +2007-01-22 Andrew Haley + + * builtins.c (VMSupportsCS8_builtin): New function. + +2007-01-23 Andrew Pinski + + PR java/30454 + * jcf-io.c (opendir_in_zip): Close the file + and free zipf before returning after an error. + +2007-01-16 Tom Tromey + + * java-tree.def: Added copyright header. + +2007-01-15 Tom Tromey + + * lang.c (dump_compound_expr) : Removed + case. + * java-gimplify.c (java_gimplify_expr) : + Removed case. + * java-tree.h (EXPR_WFL_EMIT_LINE_NOTE): Removed. + (EXPR_WFL_NODE): Likewise. + (EXPR_WFL_LINECOL): Likewise. + (EXPR_WFL_FILENAME): Likewise. + (EXPR_WFL_LINENO): Likewise. + (build_expr_wfl, expr_add_location): Don't declare. + (build_unknown_wfl): Removed. + (EXPR_WFL_FILENAME_NODE): Removed. + (EXPR_WFL_COLNO): Removed. + (EXPR_WFL_SET_LINECOL): Removed. + (DECL_FUNCTION_WFL): Removed. + (DECL_FIELD_FINAL_WFL): Removed. + (struct lang_decl_func) : Removed field. + : Likewise. + : Likewise. + (struct lang_decl_var) : Removed field. + (DECL_CONSTRUCTOR_CALLS): Removed. + (DECL_FUNCTION_ACCESS_DECL): Likewise. + (DECL_FUNCTION_INNER_ACCESS): Likewise. + (DECL_SPECIFIC_COUNT): Likewise. + * java-tree.def (EXPR_WITH_FILE_LOCATION): Removed. + * expr.c (build_expr_wfl): Removed. + (expr_add_location): Likewise. + +2007-01-12 Tom Tromey + + * jcf-dump.c (main): Updated call to find_class. + * lang.c (java_init): Removed dead code. + * jcf-parse.c (read_class): Don't use java_source field. Removed + dead code. + (parse_zip_file_entries): Don't use java_source field. + (process_zip_dir): Likewise. + (jcf_parse): Removed dead code. + (java_parse_file): Likewise. + (read_class): Updated call to find_class. + * jcf-io.c (find_class): Don't use java_source field. Removed + 'source_ok' argument, .java logic. + * jcf.h (JCF) : Removed field. + (JCF_ZERO): Updated. (find_class): Updated. + * decl.c: Removed dead code. + * class.c: Removed dead code. + +2007-01-11 Tom Tromey + + * typeck.c (convert): Don't use flag_emit_class_files. + * lang.c (java_post_options): Don't use flag_emit_class_files. + (java_handle_option): Don't use flag_extraneous_semicolon or + flag_redundant. + * jcf-parse.c (HANDLE_CONSTANTVALUE): Don't use + flag_emit_class_files. + (load_class): Likewise. + * java-tree.h (flag_emit_class_files): Don't declare. + (STATIC_CLASS_INIT_OPT_P): Don't use flag_emit_class_files. + (flag_extraneous_semicolon): Don't declare. + (flag_not_overriding): Likewise. + (flag_static_local_jdk1_1): Likewise. + (flag_redundant): Likewise. + * expr.c (build_newarray): Don't use flag_emit_class_files. + * class.c (DEFAULT_ENABLE_ASSERT): Don't use + flag_emit_class_files. + (build_class_ref): Likewise. + * builtins.c (check_for_builtin): Don't use + flag_emit_class_files. + +2007-01-10 Tom Tromey + + * lang.c (java_can_use_bit_fields_p): Removed. + (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed. + +2007-01-09 Andrew Haley + + * expr.c (build_java_arrayaccess): Rewrite to generate array + access in canonical form. + (expand_java_arraystore): Use build_fold_addr_expr() on address of + array access. + +2007-01-03 Andrew Haley + + PR java/28754 + * expr.c (expand_java_field_op): If we're initializing a field's + declaring interface we should not also initialize the class + context in which it was referenced. + +2007-01-02 Tom Tromey + + * java-tree.h (compiling_from_source, current_encoding, + JTI_FINIT_IDENTIFIER_NODE, JTI_INSTINIT_IDENTIFIER_NODE, + JTI_LENGTH_IDENTIFIER_NODE, JTI_SUPER_IDENTIFIER_NODE, + JTI_CONTINUE_IDENTIFIER_NODE, JTI_ACCESS0_IDENTIFIER_NODE, + JTI_WFL_OPERATOR): Removed + (finit_identifier_node, instinit_identifier_node, + length_identifier_node, super_identifier_node, + continue_identifier_node, access0_identifier_node, wfl_operator): + Removed. + (cyclic_inheritance_report, + DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND, + DECL_FUNCTION_NAP, DECL_FUNCTION_SYNTHETIC_CTOR, + DECL_FIXED_CONSTRUCTOR_P): Removed. + (struct lang_decl_func) : + Removed. + (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST, TYPE_II_STMT_LIST, + TYPE_IMPORT_LIST, TYPE_IMPORT_DEMAND_LIST): Removed. + (struct lang_type) : Removed. + (java_layout_seen_class_methods, init_jcf_parse, init_src_parse, + cxx_keyword_p): Removed. + (DECL_FINIT_P, DECL_INSTINIT_P, ID_FINIT_P, ID_INSTINIT_P, + TYPE_UNUSED, TYPE_UNDERFLOW, TYPE_UNEXPECTED, + CLASS_ACCESS0_GENERATED_P, CLASS_HAS_FINIT_P, + IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME, + IS_AN_IMPORT_ON_DEMAND_P, COMPOUND_ASSIGN_P, SWITCH_HAS_DEFAULT, + PRIMARY_P, MODIFY_EXPR_FROM_INITIALIZATION_P, + CLASS_METHOD_CHECKED_P, FOR_LOOP_P, ANONYMOUS_CLASS_P, + LOCAL_CLASS_P, ARG_FINAL_P, SUPPRESS_UNREACHABLE_ERROR, + RESOLVE_PACKAGE_NAME_P, RESOLVE_TYPE_NAME_P, IS_BREAK_STMT_P, + IS_CRAFTED_STRING_BUFFER_P, IS_INIT_CHECKED, CALL_USING_SUPER, + NESTED_FIELD_ACCESS_IDENTIFIER_P, TOPLEVEL_CLASS_DECL_P, + PURE_INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P, + CALL_CONSTRUCTOR_P, CALL_EXPLICIT_CONSTRUCTOR_P, + CALL_THIS_CONSTRUCTOR_P, CALL_SUPER_CONSTRUCTOR_P, + FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, BLOCK_IS_IMPLICIT, + BLOCK_EMPTY_P, IS_UNCHECKED_EXCEPTION_P, java_error_count, + java_parse_abort_on_error, extract_field_decl): Removed. + (finput): Declare. + * lang.c: (compiling_from_source, current_encoding): Removed. + (java_handle_option): Ignore -fencoding. + * parse.h: Don't include lex.h. + (java_error_count, int_fits_type_p, stabilize_reference, RULE, + RECOVERED, DRECOVERED, RECOVER, DRECOVER, YYERROR_NOW, + YYNOT_TWICE, CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS, + INTERFACE_MODIFIERS, INTERFACE_INNER_MODIFIERS, + INTERFACE_METHOD_MODIFIERS, INTERFACE_FIELD_MODIFIERS, + MODIFIER_WFL, THIS_MODIFIER_ONLY, parse_error_context, + ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, exit_java_complete_class, + CLASS_OR_INTERFACE, GET_REAL_TYPE, GET_TYPE_NAME, + OBSOLETE_MODIFIER_WARNING, OBSOLETE_MODIFIER_WARNING2, + BUILD_PTR_FROM_NAME, INCOMPLETE_TYPE_P, + JAVA_MAYBE_GENERATE_DEBUG_INFO, JBSC_TYPE_P, JSTRING_P, + JNULLP_TYPE_P, JDECL_P, TYPE_INTERFACE_P, TYPE_CLASS_P, + IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS, + MANGLE_OUTER_LOCAL_VARIABLE_NAME, + MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID, + MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING, + SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS, + UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP, + AIPL_FUNCTION_CREATION, AIPL_FUNCTION_DECLARATION, + AIPL_FUNCTION_CTOR_INVOCATION, AIPL_FUNCTION_FINIT_INVOCATION, + ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, + ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED, + LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK, + LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY, + LOOP_EXPR_BODY_BODY_EXPR, PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, + PUSH_LOOP, POP_LOOP, PUSH_EXCEPTIONS, POP_EXCEPTIONS, + IN_TRY_BLOCK_P, EXCEPTIONS_P, ANONYMOUS_ARRAY_BASE_TYPE, + ANONYMOUS_ARRAY_DIMS_SIG, ANONYMOUS_ARRAY_INITIALIZER, + INVOKE_STATIC, INVOKE_NONVIRTUAL, INVOKE_SUPER, INVOKE_INTERFACE, + INVOKE_VIRTUAL, jdep_code, struct _jdep, JDEP_DECL, JDEP_DECL_WFL, + JDEP_KIND, JDEP_WFL, JDEP_MISC, JDEP_ENCLOSING, JDEP_CLASS, + JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN, JDEP_TO_RESOLVE, + JDEP_RESOLVED_DECL, JDEP_RESOLVED, JDEP_RESOLVED_P, struct + jdeplist_s, jdeplists, CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, + JDEP_INSERT, SET_TYPE_FOR_RESOLUTION, WFL_STRIP_BRACKET, + STRING_STRIP_BRACKETS, PROMOTE_RECORD_IF_COMPLETE, + BLOCK_CHAIN_DECL, GET_CURRENT_BLOCK, EXPR_WFL_GET_LINECOL, + EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION, QUAL_DECL_TYPE, + GET_SKIP_TYPE, COMPLETE_CHECK_OP, COMPLETE_CHECK_OP_0, + COMPLETE_CHECK_OP_1, COMPLETE_CHECK_OP_2, BUILD_APPEND, + BUILD_STRING_BUFFER, BUILD_THROW, SET_WFL_OPERATOR, + PATCH_METHOD_RETURN_ERROR, CHECK_METHODS, CLEAR_DEPRECATED, + CHECK_DEPRECATED_NO_RESET, CHECK_DEPRECATED, REGISTER_IMPORT, + CURRENT_OSB, struct parser_ctxt, GET_CPC_LIST, CPC_INNER_P, + GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE, GET_CPC_DECL_NODE, + GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC, + GET_ENCLOSING_CPC_CONTEXT, INNER_ENCLOSING_SCOPE_CHECK, PUSH_CPC, + PUSH_ERROR, POP_CPC, DEBUG_CPC, CPC_INITIALIZER_LIST, + CPC_STATIC_INITIALIZER_LIST, CPC_INSTANCE_INITIALIZER_LIST, + CPC_INITIALIZER_STMT, CPC_STATIC_INITIALIZER_STMT, + CPC_INSTANCE_INITIALIZER_STMT, SET_CPC_INITIALIZER_STMT, + SET_CPC_STATIC_INITIALIZER_STMT, + SET_CPC_INSTANCE_INITIALIZER_STMT, JAVA_NOT_RADIX10_FLAG, + java_complete_class, java_check_circular_reference, + java_fix_constructors, java_layout_classes, java_reorder_fields, + java_method_add_stmt, java_get_line_col, reset_report, + java_init_lex, yyparse, java_parse, yyerror, java_expand_classes, + java_finish_classes, ctxp, ctxp_for_generation, + ctxp_for_generation_last): Removed. + * expr.c (force_evaluation_order): Don't mention NEW_CLASS_EXPR. + * mangle.c (utf8_cmp): New function. + (cxx_keywords): New global. + (cxx_keyword_p): New function. + * jvspec.c (JAVA_START_CHAR): Removed obsolete comment. + * java-tree.def (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, + NEW_ANONYMOUS_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR, + CASE_EXPR, DEFAULT_EXPR, JAVA_CATCH_EXPR, SYNCHRONIZED_EXPR, + THROW_EXPR, CONDITIONAL_EXPR, INSTANCEOF_EXPR, NEW_ARRAY_INIT, + CLASS_LITERAL, JAVA_EXC_OBJ_EXPR): Removed. + * Make-lang.in (java.srcextra): Do nothing. + (parse.c, keyword.h, gt-java-parse.h): Removed targets. + (JAVA_OBJS): Don't mention deleted files. + (java.mostlyclean): Likewise. + (java.clean): Likewise. + (JAVA_LEX_C): Removed. + (buffer.o, check-init.o, parse.o): Remove unused targets. + (typeck.o): Updated. + * jcf-parse.c (read_class): Comment out unused code. + (java_layout_seen_class_methods): New function. + (parse_source_file_1, parse_source_file_2, parse_source_file_3): + Removed. + (java_parse_file): Comment out unused code. Don't use 'ctxp'. + (init_jcf_parse): Removed. + * config-lang.in (gtfiles): Remove deleted files. + * decl.c (java_init_decl_processing): Don't initialize + finit_identifier_node, instinit_identifier_node, + length_identifier_node, super_identifier_node, + continue_identifier_node, access0_identifier_node. Don't call + init_jcf_parse. + * class.c (cyclic_inheritance_report): New global. + (add_method_1): Don't use + DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND. + (maybe_layout_super_class): Comment out code. + (safe_layout_class): New function. + * java-gimplify.c (java_gimplify_expr): Removed CASE_EXPR, + DEFAULT_EXPR, NEW_ARRAY_INIT, JAVA_CATCH_EXPR, JAVA_EXC_OBJ_EXPR, + UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_ANONYMOUS_ARRAY_EXPR, + NEW_CLASS_EXPR, SYNCHRONIZED_EXPR, CONDITIONAL_EXPR, + INSTANCEOF_EXPR, CLASS_LITERAL, THIS_EXPR. + (java_gimplify_case_expr): Removed. + (java_gimplify_default_expr): Likewise. + (java_gimplify_new_array_init): Likewise. + * parse.y: Removed. + * keyword.gperf, keyword.h: Removed. + * chartables.h: Removed. + * check-init.c: Removed. + * buffer.c, buffer.h: Removed. + * convert.h: Removed. + * gen-table.pl: Removed. + * lex.c, lex.h: Removed. + +2007-01-02 Andrew Haley + + * expr.c (expand_java_arraystore): Make sure we perform a bounds + check at runtime before we perform a type check. + +2006-12-19 Andrew Haley + + * decl.c: Bump minor BC ABI version. + +2006-12-13 Gary Benson + + * jcf-depend.c (jcf_dependency_add_file): Mark filename unused. + +2006-12-12 Tom Tromey + + * lang-specs.h: Pass -M options to jc1. + * jcf-depend.c (jcf_dependency_add_file): Don't emit + dependencies. + +2006-12-07 Mohan Embar + + * jcf-path.c (jcf_path_compute): Use platform PATH_SEPARATOR. + +2006-12-06 Mohan Embar + + * lang-specs.h: Pass '%U'-based options as separate arguments. + +2006-12-05 Tom Tromey + + PR java/29495: + * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Mark fields and + classes as well. + * class.c (add_field): Handle ACC_SYNTHETIC. + (add_method_1): Likewise. Handle bridge and varargs. + (get_access_flags_from_decl): Handle synthetic, bridge, varargs, + annotation. + (set_class_decl_access_flags): Handle synthetic and annotation. + * java-tree.h (METHOD_BRIDGE): New macro. + (METHOD_VARARGS): Likewise. + (TYPE_SYNTHETIC): Likewise. + (TYPE_ANNOTATION): Likewise. + (lang_type): New fields 'synthetic' and 'annotation'. + (lang_decl_func): New fields 'varargs' and 'bridge'. + +2006-12-04 Andrew Haley + + * jcf-parse.c (rewrite_reflection_indexes): Don't do anything if + there's no map. + +2006-11-29 Gary Benson + + * expr.c (rewrite_arglist_getcaller): Reorder. + +2006-11-29 Andrew Haley + + * expr.c (rewrite_arglist_getcaller): Remove DECL_INLINE. + * lang.c (java_decl_ok_for_sibcall): Check for DECL_INLINE. + +2006-11-23 Andrew Haley + + * expr.c (rewrite_arglist_getcaller): New. + (rewrite_arglist_getclass): Fix indentation. + (rules): Add gnu.classpath.VMStackWalker.getCallingClass() and + gnu.classpath.VMStackWalker.getCallingClassLoader(). + * builtins.c (initialize_builtins): Remove duplicate def'n of + __sync_synchronize. + Add __builtin_return_address. + +2006-11-22 Andrew Haley + + * jcf-reader.c (get_attribute): Mark attr_type unused. + + * builtins.c (compareAndSwapObject_builtin): Fix declaration. + +2007-01-08 Richard Guenther + + * lex.c (do_java_lex): Use build_int_cst_wide_type. + * jcf-parse.c (get_constant): Likewise. + +2006-11-12 Jan Hubicka + + * resource.c (compile_resource_data): Update for new varpool names. + * java/class.c (build_utf8_ref): Likewise. + +2006-11-12 David Daney + + PR java/29805 + * typeck.c (build_java_array_type): Increase buffer sizes. + +2006-11-11 Richard Guenther + + * check-init.c (check_init): Remove handling of FIX_CEIL_EXPR, + FIX_FLOOR_EXPR and FIX_ROUND_EXPR. + +2006-11-06 Andrew Haley + + * java-tree.h (CONSTANT_LazyFlag): New. + * constants.c (build_constants_constructor): Mask CONSTANT_LazyFlag. + * jcf-parse.c (handle_innerclass_attribute): Write attribute to + reflection_data. + (handle_constant): Return 0 for dummy cpool entries. + Handle constants of kind Class. + Handle constants of kind NameAndType. + (handle_enclosingmethod_attribute): New. + (handle_signature_attribute): New. + (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New. + (HANDLE_SIGNATURE_ATTRIBUTE): New. + (handle_constant): Use unmangle_classname()rather than calling + identifier_subst() directly. + +2006-11-02 Andrew Haley + + * java-tree.h (FIELD_ENUM): New. + (lang_decl_var.field_enum): New. + (lang_type.enum_class): New. + (CLASS_ENUM): New. + * class.c (set_class_decl_access_flags): Handle enum types. + (add_field): Handle enum fields. + (get_access_flags_from_decl): Likewise. + + * class.c (make_class_data): Put reflection_data into rodata. + +2006-11-01 Andrew Haley + + * jcf-parse.c (field_offsets, bit_obstack): New variables. + (jcf_parse): Write end marker to annotation_data. + (java_parse_file): Create field_offsets bitmap. Destroy it. + (annotation_grow, annotation_rewrite_byte) + (annotation_rewrite_short, annotation_rewrite_int) + (annotation_read_short, annotation_write_byte) + (annotation_write_short, annotation_write_int) + (handle_long_constant, handle_constant, handle_element_value) + (handle_annotation, handle_annotations) + (handle_annotation_attribute, rewrite_reflection_indexes) + (handle_member_annotations, handle_parameter_annotations) + (handle_default_annotation): New functions. + (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE) + (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE) + (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) + (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) + (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): New definitions. + * java-tree.h (enum jv_attr_type, enum jv_attr_kind): New. + (TYPE_REFLECTION_DATA): New. + (TYPE_REFLECTION_DATASIZE): New. + * jcf.h (enum cpool_tag): Convert a bunch of #define constants to + an enum. + * jcf-reader.c (get_attribute): Pass field/method index and + attribute type to get_attribute(). + * constants.c (find_class_or_string_constant): Make nonstatic. + (cpool_for_class): Likewise. + (build_constants_constructor): Separate string and scalar types. + * class.c (make_class_data): Generate field_indexes permutation. + Pass it to rewrite_reflection_indexes(). + (make_class_data): Generate constructor for reflection_data field. + +2006-10-20 Tom Tromey + + * gcj.texi (Top): Don't mention jv-scan. + (Invoking gcj): Likewise. + (Invoking gcjh): Likewise. + (Invoking gjnih): Likewise. + (Invoking gij): Likewise. + (Invoking gcj-dbtool): Likewise. + (Invoking jv-scan): Removed. + * parse-scan.y: Removed. + * jv-scan.c: Removed. + * config-lang.in (stagestuff): Don't mention jv-scan. + * Make-lang.in (java): Removed jv-scan. + (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. + (JVSCAN_OBJS): Removed. + (jv-scan$(exeext)): Likewise. + (JAVA_MANFILES): Removed jv-scan.1. + (java.uninstall): Don't mention jv-scan. + (java.mostlyclean): Likewise. + (java.maintainer-clean): Likewise. + (.INTERMEDIATE): Likewise. + (java/jv-scan.o): Removed. + (jv-scan.pod): Likewise. + (java.srcextra): Don't mention parse-scan.c. + (java.mostlyclean): Likewise. + (java/parse-scan.c): Removed. + (java/parse-scan.o-warn): Removed. + (java/parse-scan.o): Removed. + +2006-10-20 Tom Tromey + + * lang.c (java_handle_option): Don't use + jcf_write_base_directory. + * jcf.h (jcf_write_base_directory): Removed. + * parse.y (java_expand_classes): Don't call write_classfile. + * config-lang.in (gtfiles): Removed jcf-write.c. + * Make-lang.in (JAVA_OBJS): Removed jcf-write.o. + (java/jcf-write.o): Removed. + * jcf-parse.c (parse_class_file): Don't call write_classfile. + * java-tree.h (write_classfile): Removed declaration. + * jcf-write.c: Removed. + +2006-10-20 Tom Tromey + + * Make-lang.in (java): Removed gjnih, gcjh. + (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. + (GCJH_OBJS): Removed. + (GJNIH_OBJS): Likewise. + (gjnih$(exeext)): Likewise. + (gcjh$(exeext)): Likewise. + (JAVA_MANFILES): Removed gcjh.1, gjnih.1. + (java.install-common): Don't special case gcjh. + (java.uninstall): Don't mention gcjh, gjnih. + (java.mostlyclean): Likewise. + (java.maintainer-clean): Likewise. + (.INTERMEDIATE): Likewise. + (gcjh.pod): Removed. + (gjnih.pod): Likewise. + (GCJH_TARGET_INSTALL_NAME): Removed. + (java/gjavah-jni.o): Removed. + (java/gjavah.o): Likewise. + * config-lang.in (stagestuff): Removed gjnih, gcjh. + * gjavah.c: Removed. + +2006-10-17 Tom Tromey + + * jcf-dump.c (print_element_value): Expect a utf8 constant in the + "string" case. + +2006-10-17 Tom Tromey + + * jvgenmain.c (main): Handle -findirect-dispatch. + * jvspec.c (jvgenmain_spec): Pass -findirect-dispatch to + jvgenmain. + +2006-10-06 Andrew Haley + + * builtins.c (compareAndSwapInt_builtin): Check that we really do + have a compare_and_swap builtin. + (compareAndSwapLong_builtin): Likewise. + (compareAndSwapObject_builtin): Likewise. + +2006-10-04 Andrew Haley + + * builtins.c (java_builtins): Add compareAndSwapInt, + compareAndSwapLong, compareAndSwapObject, putOrderedInt, + putOrderedLong, putOrderedObject, putIntVolatile, putLongVolatile, + putObjectVolatile, getObjectVolatile, getIntVolatile, + getLongVolatile, getLong. + (UNMARSHAL3): New macro. + (UNMARSHAL4): Likewise. + (UNMARSHAL5): Likewise. + (build_arglist_for_builtin): New function. + (build_addr_sum, build_check_this): New functions. + (putObject_builtin. compareAndSwapInt_builtin, + compareAndSwapLong_builtin, compareAndSwapObject_builtin, + putVolatile_builtin, getVolatile_builtin): New builtins. + +2006-06-08 Andrew Haley + + * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to + get_symbol_table_index(). + (maybe_rewrite_invocation): Set SPECIAL if we need to access a + private method. + (build_known_method_ref): New arg: special. Pass it to + get_symbol_table_index. + (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of + the method list. + (build_invokevirtual): New arg: special. Pass it to + get_symbol_table_index. + (expand_invoke): New variable: special. + Pass it to maybe_rewrite_invocation(). + Pass it to build_known_method_ref(). + * class.c (build_symbol_entry): Add new arg: special. Use it to + build the symbol table conbstructor. + (emit_symbol_table): Extract SPECIAL from the method list and pass + it to build_symbol_entry(). + * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set + special accordingly. + +2006-09-08 Andrew Haley + + * class.c (layout_class_method): Use build_java_signature, not + build_java_argument_signature. Use lookup_java_method, not + lookup_argument_method. + +2006-08-16 Jakub Jelinek + Bryce McKinlay + + * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed. + +2006-07-18 Tom Tromey + + * lang.opt: Added missing -W options. + +2006-07-12 Tom Tromey + + PR java/28329: + * lang-specs.h: Pass '%U'-based options as separate arguments. + Use -faux-classpath. + * lang.c (java_handle_option): Handle OPT_faux_classpath. + * lang.opt (faux-classpath): New option. + +2006-07-07 Tom Tromey + + * class.c (make_class_data): Set value for reflection_data field. + * decl.c (java_init_decl_processing): Add reflection_data field. + +2006-07-07 Tom Tromey + + * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): Declare locals + earlier. + (HANDLE_SIGNATURE_ATTRIBUTE): Likewise. + +2006-07-07 Andrew Haley + + * jcf-parse.c (set_source_filename): Don't check for + CLASS_FROM_CURRENTLY_COMPILED_P. + Remove // comments. + +2006-07-07 Andrew Haley + + * java-tree.h (java_read_sourcefilenames): Declare. + * lang.c (java_handle_option): Call java_read_sourcefilenames(). + * lang.opt (fsource-filename): New opt. + * lang-specs.h: Add -fsource-filename. + * jcf-parse.c (num_files, filenames): New variables. + (reverse, cmpstringp, java_read_sourcefilenames, + find_sourcefile): New. + (set_source_filename): Call find_sourcefile to find the real name + of a source file. + +2006-06-27 Tom Tromey + + * jcf-reader.c (get_attribute): Handle EnclosingMethod, + Signature, LocalVariableTypeTable, annotation attributes. + * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New macro. + (HANDLE_SIGNATURE_ATTRIBUTE): Likewise. + (HANDLE_START_FIELD): Mention 'descriptor', not 'signature'. + (HANDLE_METHOD): Likewise. + (HANDLE_LOCALVARIABLETYPETABLE_ATTRIBUTE): New macro. + (print_annotation): New function. + (print_element_value): Likewise. + (indent): Likewise. + (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE): New macro. + (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE): Likewise. + (print_parameter_annotations): New function. + (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE): New macro. + (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE): + Likewise. + (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): Likewise. + (print_annotations): New function. + +2006-06-23 Tom Tromey + + * lang-specs.h: Default -fsource and -ftarget to 1.5. If + emitting class files, always use 1.5. + * gcj.texi (Input Options): Document -fsource. + (Code Generation): Document -ftarget. + +2006-06-21 Tom Tromey + + PR java/28089: + * expr.c (expand_java_field_op): Initialize field's declaring + class. + +2006-06-20 Tom Tromey + + * expr.c (push_value): Always flush quick stack. + +2006-06-19 Tom Tromey + + * expr.c (push_value): Also flush quick stack if value is a + component_ref. + +2006-06-19 Tom Tromey + + * expr.c (push_value): Flush quick stack if value has side + effects. + +2006-06-13 Tom Tromey + + * class.c (is_compiled_class): Explicitly check for current + class. + +2006-06-09 Tom Tromey + + * gjavah.c (decompile_method): Don't decompile a static field + accessor method. + +2006-06-06 Tom Tromey + + * lang-specs.h : Add .jar file to command line if + -fsaw-java-file. Also, remove -ffilelist-file in this case. + +2006-06-05 Tom Tromey + + * jcf-dump.c (print_access_flags): Handle varargs, bridge, + synthetic, enum, annotation. + * jcf.h (ACC_BRIDGE): New macro. + (ACC_VARARGS): Likewise. + (ACC_SYNTHETIC): Likewise. + (ACC_ENUM): Likewise. + (ACC_ANNOTATION): Likewise. + +2006-06-04 Tom Tromey + + * lang.opt (-fsaw-java-file, -fsource, -ftarget): New options. + * jvspec.c (jvgenmain_spec): Remove -fsaw-java-file, -fsource, + and -ftarget. + (lang_specific_driver): Removed dead code. Add -fsaw-java-file + when needed. Handle classpath-setting. + * Make-lang.in ($(GCJ)$(exeext)): Link in jcf-path.o. + * lang-specs.h: Rewrote. + +2006-06-04 Tom Tromey + + * jcf-io.c (find_class): Set source_ok to 0. + * jcf-parse.c (jcf_parse): Disable gnu.gcj.gcj-compiled warning. + (parse_class_file): Don't call java_mark_class_local. + (java_parse_file): Skip .java files. Call java_mark_class_local + before lowering any code. + (parse_zip_file_entries): Don't call duplicate_class_warning + here. + (process_zip_dir): ... call it here. + * class.c (add_field): Don't mark field external if it is being + compiled into this object. + (make_class_data): Handle situation where class_dtable_decl is + created before Class is compiled. + (is_compiled_class): Don't assume files in zip are compiled into + this object. + (layout_class_method): Don't mark method external if it is being + compiled into this object. + +2006-06-04 Tom Tromey + + * jcf-path.c (jcf_path_compute): New function. + * jcf.h (jcf_path_compute): Declare. + +2006-10-23 Rafael Ávila de Espíndola + + * decl.c: Include langhooks.h. + (builtin_function): Remove. + (java_init_decl_processing): Replace calls to builtin_function + with add_builtin_function. + * Make-lang.in (jc1$(exeext)): Depend on and link with attribs.o. + (java/decl.o): Depend on langhooks.h. + * java-tree.h (builtin_function): Remove. + +2006-10-10 Brooks Moses + + * Make-lang.in: Added "java.pdf", "gcj.pdf" target support. + +2006-09-12 Tom Tromey + + * expr.c (push_value): Always flush quick stack. + +2006-09-12 Tom Tromey + + PR java/29013: + * jcf-write.c (generate_bytecode_insns) : Always note + the push of the called method's return result. + +2006-09-12 Tom Tromey + + * jvspec.c (lang_specific_driver): Read spec file even if + -fsyntax-only. + +2006-09-12 Tom Tromey + + PR java/28754: + * expr.c (expand_java_field_op): Initialize field's declaring + interface if necessary. + +2006-09-12 Tom Tromey + + PR java/28892: + * expr.c (expand_java_field_op): No error for assignments not in + class initializer or constructor. + +2006-08-22 Andrew Haley + + * decl.c (java_add_stmt): Give the statement list a type. + +2006-08-16 Jakub Jelinek + Bryce McKinlay + + * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed. + +2006-08-10 Simon Martin + + PR java/8923 + * parse.y (build_incdec): Emit an error instead of an ICE if '++' + or '--' is used with a constant operand. + (java_complete_lhs): When processing a '++' or '--' expression, + don't call java_complete_tree but java_complete_lhs, so that a + static final variable operand is never replaced by its value. This + avoids an ICE later on. + (patch_unaryop): Fixed typo in comment. + +2006-07-28 Volker Reichelt + + * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies. + +2006-07-12 Bryce McKinlay + + * builtins.c (check_for_builtin): If a builtin could result in a + direct call being generated, don't use it if flag_indirect_dispatch + is set. + +2006-07-12 Bryce McKinlay + + * gcj.texi (Invocation): Corrections for Invocation API example. + +2006-07-04 Andrew Haley + + * class.c (build_fieldref_cache_entry): Set DECL_IGNORED_P on the + entry. + +2006-06-21 Andrew Haley + + * java-tree.h (update_aliases): Remove + * expr.c (expand_iinc): Remove call to update_aliases(). + (STORE_INTERNAL): Likewise. + * decl.c (update_aliases, initialize_local_variable) + (maybe_pushlevels): Set DECL_VALUE_EXPR for debugging decls. + +2006-06-19 Andrew Haley + + PR java/1305 + PR java/27908 + * expr.c (java_modify_addr_for_volatile): New function. + (expand_java_field_op): Handle volatile fields. + * java-gimplify.c (java_gimplify_component_ref): Call + java_modify_addr_for_volatile to give the field_ref the correct + volatile type. + (java_gimplify_modify_expr): Likewise. + * java-tree.h (java_modify_addr_for_volatile): New decl. + +2006-06-17 Karl Berry + + * gcj.texi (@dircategory): Use "Software development" instead + of "Programming", following the Free Software Directory. + +2006-06-16 Andrew Haley + + * class.c (make_class_data): When using flag_indirect_classes, + don't initialize the vtable of Class instances. + +2006-06-09 Andrew Haley + + PR java/1305 + PR java/27908 + * builtins.c (initialize_builtins): Add __sync_synchronize(). + * class.c (add_field): Mark volatile fields. + * java-gimplify.c (java_gimplify_expr): Call new functions to + handle self-modifying exprs and COMPONENT_REFs. + (java_gimplify_component_ref): New. + (java_gimplify_modify_expr): Add handling for volatiles. + +2006-06-08 Tom Tromey + + * gcj.texi (libgcj Runtime Properties): Document + gnu.gcj.user.realname. + +2006-06-08 Andrew Haley + + * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to + get_symbol_table_index(). + (maybe_rewrite_invocation): Set SPECIAL if we need to access a + private method. + (build_known_method_ref): New arg: special. Pass it to + get_symbol_table_index. + (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of + the method list. + (build_invokevirtual): New arg: special. Pass it to + get_symbol_table_index. + (expand_invoke): New variable: special. + Pass it to maybe_rewrite_invocation(). + Pass it to build_known_method_ref(). + * class.c (build_symbol_entry): Add new arg: special. Use it to + build the symbol table conbstructor. + (emit_symbol_table): Extract SPECIAL from the method list and pass + it to build_symbol_entry(). + * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set + special accordingly. + +2006-06-06 David Daney + + * gcj.texi (libgcj Runtime Properties): Document + gnu.gcj.runtime.NameFinder.show_raw and + gnu.gcj.runtime.NameFinder.remove_unknown. + +2006-06-06 Tom Tromey + + * jcf-dump.c (print_access_flags): Handle varargs, bridge, + synthetic, enum, annotation. + * jcf.h (ACC_BRIDGE): New macro. + (ACC_VARARGS): Likewise. + (ACC_SYNTHETIC): Likewise. + (ACC_ENUM): Likewise. + (ACC_ANNOTATION): Likewise. + +2006-06-06 Mike Stump + + * Make-lang.in: Rename to htmldir to build_htmldir to avoid + installing during build. + +2006-05-31 Thomas Fitzsimmons + + * gcj.texi (Extensions): Document the new gcj-dbtool-based + classname-to-library resolution mechanism. + Declare the old gnu.gcj.runtime.VMClassLoader.library_control + mechanism deprecated. + (libgcj Runtime Properties): Document + gnu.gcj.runtime.VMClassLoader.library_control's new default. + +2006-05-29 Jakub Jelinek + + * javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64) + bit wide type. + (jword): Define to uint64 on 64-bit arches. + * jcf-dump.c (print_constant): Cast JPOOL_UINT to long. + +2006-05-28 Kazu Hirata + + * class.c, except.c, expr.c, java-gimplify.c: Fix comment + typos. + +2006-05-26 Tom Tromey + + * expr.c (java_push_constant_from_pool): Handle 'ldc class'. + * verify-glue.c (vfy_class_type): New function. + * verify-impl.c (check_constant): Allow 'ldc class'. + * verify.h (vfy_class_type): Declare. + +2006-05-25 Andrew Haley + + PR java/27756 + * decl.c (maybe_pushlevels): When variable ranges are non-nested + update all lifetimes, not just the first one. + +2006-05-24 Tom Tromey + + * java-tree.h: Fixed flag documentation. + +2006-05-24 Tom Tromey + + PR libgcj/27729: + * jcf.h (ACC_INVISIBLE): Changed value. + +2006-05-24 Andrew Haley + + PR java/27754 + * decl.c (java_add_stmt): Use a STATEMENT_LIST rather than a + COMPOUND_EXPR. + +2006-05-16 H.J. Lu + + * lang.opt (femit-class-file): Remove VarExists. + +2006-05-16 Tom Tromey + + * verify-impl.c (verify_instructions_0) : Special case + for Object.. + +2006-05-16 H.J. Lu + + PR driver/26885 + * Make-lang.in ($(GCJ)$(exeext)): Replace gcc.o with + $(GCC_OBJS). + +2006-05-14 H.J. Lu + + * Make-lang.in (java/decl.o): Add dependency on $(TARGET_H). + (java/expr.o): Replace target.h with $(TARGET_H). + (java/parse.o): Likewise. + +2006-05-10 Andrew Haley + + * class.c (emit_indirect_register_classes): Fix comment. + +2006-05-04 Tom Tromey + + * java-tree.h (uses_jv_markobj_p): Declare. + * class.c (uses_jv_markobj_p): Removed. + * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): New define. + (get_boehm_type_descriptor): Use it. + (uses_jv_markobj_p): Moved from class.c. Return bool. + +2006-05-04 Tom Tromey + + * java-tree.def (THIS_EXPR): Now a tcc_expression. + +2006-05-04 Andrew Haley + + * class.c (make_field_value): Always build_address_of fdecl if + there is an initializer. + +2006-05-03 Andrew Haley + + PR libgcj/27352 + * expr.c (maybe_rewrite_invocation): New function. + (rewrite_arglist_getclass): Likewise. + (rules): New. + (expand_invoke): Call maybe_rewrite_invocation. + * parse.y (patch_invoke): Likewise. + * java-tree.h: (maybe_rewrite_invocation): New function. + +2006-04-21 Andrew Haley + + * lang.c (java_init): Handle flag_indirect_classes. + * jvgenmain.c: Use "class$$" instead of "class$". + * mangle.c (java_mangle_decl): Accept RECORD_TYPEs sw well as + DECLs. + (mangle_class_field): Special case "class$$" as well as "class$". + * constants.c (build_ref_from_constant_pool): If + flag_indirect_classes, generate a ref into the heap. + * decl.c (constants_field_decl_node, + constants_data_field_decl_node): New. + * class.c (build_static_class_ref): New. + (build_classdollar_field): Factor out from build_class_ref(). + (make_field_value): Handle static fields in heap. + (make_class_data): Make sure we get a static ref to class. + Make class initializer const if flag_indirect_classes. + (register_class): Build a class_ref for initialization if + flag_indirect_classes. + (emit_indirect_register_classes): New. + +2006-04-08 Kazu Hirata + + * expr.c, gjavah.c: Fix comment typos. + +2006-04-03 Andrew Haley + + PR java/26858 + * expr.c (build_field_ref): Don't check the field offset if + flag_syntax_only. + +2006-03-30 Andrew Haley + + PR java/26858 + * lang.c (java_attribute_table): New. + (LANG_HOOKS_ATTRIBUTE_TABLE): Define. + * expr.c (build_field_ref): Add a null pointer check for all + fields of offset > 4k. Don't do so for accesses via the this + pointer, which we know can never be null. + * class.c (build_java_method_type): Mark arg 1 of all nonstatic + methods nonnull. + +2006-03-30 Carlos O'Donell + + * Make-lang.in: Rename docdir to gcc_docdir. + +2006-03-30 Tom Tromey + + PR java/26042: + * parse.y (java_reorder_fields): Reset superclass field's size as + well. + +2006-03-28 Tom Tromey + + PR java/26390: + * parse.y (find_most_specific_methods_list): Added 'class' + argument. + (lookup_method_invoke): Updated. + +2006-03-15 Tom Tromey + + * jcf-write.c (generate_bytecode_insns): Use qualifying type for + non-static method calls. + +2006-03-15 David Daney + + * java-tree.h : Moved comment for TYPE_DOT_CLASS adjacent to its + declaration. + +2006-03-15 David Daney + + * lang.opt (-freduced-reflection): New option. + * lang.c (java_post_options): Generate an error if + -freduced-reflection used with -fjni or -findirect-dispatch. + * java-tree.h (flag_reduced_reflection): Declare new variable. + * boehm.c (get_boehm_type_descriptor): Indicate all pointers + if bitmap overflows and flag_reduced_reflection set. + * class.c (uses_jv_markobj_p): New function. + (make_class_data): Moved generation of vtable to before + reflection data, generate less reflection data if + flag_reduced_reflection set. + * gcj.texi: Document -freduced-reflection. + +2006-03-15 Tom Tromey + + PR java/26638: + * class.c (get_interface_method_index): Don't put into + interface table. + +2006-03-15 Tom Tromey + + * parse.y (analyze_clinit_body): Ignore empty statements. + +2006-03-08 David Daney + + * gcj.texi: Document -static-libgcj option. + +2006-02-20 Andrew Haley + + * jcf-parse.c (parse_class_file): Set input_location from + current_class. + +2006-02-15 Andrew Haley + + * class.c (GEN_TABLE): Don't pushdecl *_SYMS_DECL here. + (make_class_data): pushdecl_top_level TYPE_OTABLE_SYMS_DECL, + TYPE_ATABLE_SYMS_DECL, TYPE_ITABLE_SYMS_DECL here. + +2006-02-09 Andrew Haley + + PR java/26192 + * expr.c (expand_invoke): Allow methods in arrays to be resolved + in their superclass. + + * typeck.c (build_java_array_type): Generate TYPE_STUB_DECLs for + array types. + +2006-02-08 Tom Tromey + + PR java/22578: + * check-init.c (check_init): Handle VIEW_CONVERT_EXPR. + * builtins.c (convert_real): New function. + (java_builtins): Handle Float.intBitsToFloat, + Float.floatToRawIntBits, Double.longBitsToDouble, + Double.doubleToRawLongBits. + +2006-02-07 Andrew Haley + + * expr.c (expand_invoke): (BC mode.) If we find a method in a + class other than the one in which we expected to find it, ignore + the result. + + PR java/25535 + * constants.c (build_constants_constructor): move initializer into + first halfword on a 64-bit big-endian machine. + +2006-02-04 Tom Tromey + + PR java/25676: + * builtins.c (max_builtin): Skip floating point 'max'. + (min_builtin): Skip floating point 'min'. + (check_for_builtin): Never return NULL_TREE. + +2006-02-04 Tom Tromey + + PR java/26097: + * expr.c (push_type): Avoid side effect in gcc_assert. + +2006-02-04 Roger Sayle + + * decl.c (java_init_decl_processing): Create char_type_node as a + regular INTEGER_TYPE node. + (push_promoted_type): Preserve TYPE_STRING_FLAG on types. + * typeck.c (convert): No longer check for CHAR_TYPEs but instead + test for char_type_node and promoted_char_type_node as special + instances of INTEGER_TYPE tree codes. + (promote_type,build_java_signature): Likewise. + * jcf-write.c (adjust_typed_op): Likewise. + * mangle.c (mangle_type): Likewise. + * parse.y (do_unary_numeric_promotion): No longer handle CHAR_TYPE. + * parse.h (JINTEGRAL_TYPE_P): Likewise. + +2006-02-04 Andreas Tobler + + * expr.c (java_stack_swap): Revert gcc_assert patch. + +2006-02-03 Ben Elliston + + * java-gimplify.c: Use gcc_assert and gcc_unreachable throughout. + * typeck.c: Likewise. + * verify-impl.c: Likewise. + * class.c: Likewise. + * decl.c: Likewise. + * jcf-parse.c: Likewise. + * constants.c: Likewise. + * check-init.c: Likewise. + * jcf-write.c: Likewise. + * verify-glue.c: Likewise. + * mangle.c: Likewise. + * expr.c: Likewise. + * lang.c: Likewise. + * boehm.c: Likewise. + +2006-02-01 Jan Hubicka + + * decl.c (end_java_method): Kill hack disabling unit-at-a-time. + * lang.c (java_init_options): Set no_unit_at_a_time_default. + +2006-01-30 Andrew Haley + + PR java/21428 + * parse.y: (source_start_java_method): Mark DECL_ARTIFICIAL("this"). + +2006-01-21 Joseph S. Myers + + * jv-scan.c (version), jcf-dump.c (version), gjavah.c (version): + Update copyright notice dates. + +2006-01-16 Rafael Ávila de Espíndola + + * jvspec.c (lang_specific_spec_functions): Remove. + +2006-01-06 Tom Tromey + + * gcj.texi (Arrays): Added more documentation for + JvNewObjectArray. + (Primitive types): Correct information about primitive classes. + (Reference types): New node. + (Index): New node. + +2005-12-16 Alexandre Oliva + + * jcf-parse.c (set_source_filename): Set the decl source location + even when returning early. + +2005-12-15 Tom Tromey + Andrew Haley + + PR java/25429 + * parse.y (resolve_expression_name): Don't generate accessor + methods for constant fields. + +2005-12-13 Andrew Haley + + PR java/25366 + PR java/25368 + * class.c (maybe_layout_super_class): Update current_class before + calling do_resolve_class. + +2005-12-12 H.J. Lu + + PR java/25330 + * jcf-write.c (write_classfile): Use PID in temporary class + file. Save/restore errno when reporting error. + +2005-12-10 Terry Laurenzo + + PR java/9861 + * mangle.c (mangle_method_decl): Mangle Java methods by prepending 'J' + to bare_function_type and including the return type + * builtins.c (initialize_builtins) : Change builtin mangled name + constants to conform to new mangling scheme + +2005-12-08 Andrew Haley + + PR libgcj/25265 + * java-tree.h (enum java_tree_index): Add JTI_SOFT_NOSUCHFIELD_NODE. + (soft_abstractmethod_node): New. + * expr.c (build_field_ref): Add in-line check for missing field. + * decl.c (java_init_decl_processing): Add soft_nosuchfield_node. + +2005-12-07 Rafael Ávila de Espíndola + + * Make-lang.in (java.all.build, java.install-normal): Remove. + +2005-12-07 Rafael Ávila de Espíndola + + * Make-lang.in: Remove all dependencies on s-gtype, except for + gt-java-parse.h. + +2005-12-07 Richard Sandiford + + * class.c (build_utf8_ref, emit_register_classes): Use + switch_to_section and get_section. + +2005-12-06 Tom Tromey + + PR java/25283: + * parse.y (patch_new_array_init): Revert previous patch. + (lookup_method_invoke): Use size-less array type when creating an + anonymous constructor. + +2005-12-05 Tom Tromey + + * parse.y (patch_new_array_init): Don't set length on array. + +2005-12-02 Richard Guenther + + * java-gimplify.c (java_gimplify_labeled_block_expr): Use + buildN instead of build. + * class.c (finish_class): Likewise. + * expr.c (java_create_object): Likewise. + +2005-11-28 Tom Tromey + + PR java/18278: + * expr.c (build_jni_stub): Unwrap the return value. + * java-tree.h (soft_unwrapjni_node): New define. + (enum java_tree_index): Added JTI_SOFT_UNWRAPJNI_NODE. + * decl.c (java_init_decl_processing): Initialize + soft_unwrapjni_node. + +2005-11-24 Bryce McKinlay + + * gcj.texi (gij options): Add -Xss documentation. + +2005-11-08 Wil Mahan + + PR java/23617 + * zextract.c (read_zip_archive): Fix out of memory error when + reading jar files with zip-style comments. + +2005-11-07 Terry Laurenzo + + * gjavah.c (HANDLE_CODE_ATTRIBUTE): Only define for ELF Object + formats. + * gjavah.c (decompile_method): Add ATTRIBUTE_UNUSED + +2005-10-12 Nathan Sidwell + Wil Mahan + + PR java/23620 + * class.c (make_class): Create empty binfo here. + (set_super_info): Only create binfo if we have superclasses. + +2005-10-03 Ranjit Mathew + + PR java/24127 + * parse.y (method_header): Make the result of the rule a NULL_TREE + when a parsing error occurs. + +2005-09-29 Tom Tromey + + PR java/24120: + * jcf-io.c (memoized_dirlist_hash): New function. + (caching_stat): Use it. + +2005-09-21 Ranjit Mathew + + PR java/21418 + * class.c (inherits_from_p): Try to lay out super class + if it is not already laid out. + (maybe_layout_super_class): Handle the case where SUPER_CLASS + is a NULL_TREE. + +2005-09-18 James A. Morrison + + * builtins.c (max_builtin, min_builtin, abs_builtin, + java_build_function_call_expr): Use fold_buildN. + * class.c (layout_class_method): Likewise. + * expr.c (java_truthvalue_conversion, build_java_jsr, + build_java_arrayaccess, expand_java_arrayload, expand_iinc, + build_java_binop, build_field_ref, expand_compare, + build_known_method_ref, build_invokevirtual, + process_jvm_instruction): Likewise. + * parse.y (patch_binop, patch_exit_expr): Likewise. + * typeck.c (convert_ieee_real_to_integer): Likewise. + (convert): Don't call fold after convert_ieee_real_to_integer. + +2005-09-14 Bryce McKinlay + + PR java/23891 + * parse.y (maybe_create_class_interface_decl): Set TYPE_PACKAGE for + the newly created type. Set import lists here, not in create_class. + (jdep_resolve_class): Set current_class. + (do_resolve_class): Use current_class's TYPE_PACKAGE to determine + the current package context, not ctxp->package. + (cicp_cache): Removed. + (class_in_current_package): Simplify implementation using TYPE_PACKAGE. + * jcf-parse.c (give_name_to_class): Set TYPE_PACKAGE. + * java-tree.h (TYPE_PACKAGE): New macro. + (struct lang_type): New member 'package'. + +2005-09-09 Andrew Haley + + PR libgcj/23182 + * expr.c (pop_type_0): If the expected type is object or ptr + (i.e. void*), return the type of the object we just popped from + the stack. + +2005-09-06 Andrew Pinski + + * java-gimplify.c (java_gimplify_block): NULL out the old BLOCK's + BLOCK_EXPR_BODY before returning the new BIND_EXPR. + +2005-09-06 Kazu Hirata + + * check-init.c, decl.c, expr.c, gcj.texi, java-tree.h, + jcf-parse.c, jcf.h, parse.h, parse.y, typeck.c: Fix comment + typos. Follow spelling conventions. + +2005-09-05 Ranjit Mathew + + PR java/23431 + * typeck.c (lookup_do): Look up interfaces for the original class, + not the base class. + * parse.y (java_check_regular_methods): Fix diagnostic message for + more restrictive overriding of a method from an interface. + +2005-08-16 Tom Tromey + + * class.c (make_class_data): Always emit JV_STATE_PRELOADING for + class' initial state. + +2005-08-16 Ranjit Mathew + + PR java/22113 + * lex.c (do_java_lex): Define MAX_TOKEN_LEN. Avoid overflowing + `literal_token' for large numeric input tokens. + +2005-08-16 Ranjit Mathew + + PR java/19870 + * parse.y (nested_field_access_p): Rename to nested_member_access_p + and expand to handle method accesses across nested classes. + (build_outer_method_access_method): Rename to + build_nested_method_access_method. Minor adjustments to comments. + (resolve_expression_name): Use the newly-renamed + nested_member_access_p method. + (resolve_qualified_expression_name): Likewise. + (patch_method_invocation): Also consider static methods for access + method generation. Minor adjustments to comments. + (maybe_use_access_method): Use the more general + nested_memeber_access_p to determine access across nested class + boundaries. Allow THIS_ARG to be NULL (for static methods). + +2005-08-15 Tom Tromey + + PR java/23300. + * expr.c (build_field_ref): Don't generate otable reference when + DECL_FIELD_OFFSET is 0. + * class.c (maybe_layout_super_class): Pass outer class to + do_resolve_class. + +2005-08-15 Tom Tromey + + * java-tree.h (LABEL_IN_SUBR): Removed. + (LABEL_IN_SUBR): Likewise. + (LABEL_IS_SUBR_START): Likewise. + (LABEL_SUBR_START): Likewise. + (LABEL_SUBR_CONTEXT): Likewise. + (LABEL_CHANGED): Likewise. + (LABEL_RETURN_LABEL): Likewise. + (LABEL_RETURN_TYPE_STATE): Likewise. + (LABEL_RETURN_LABELS): Likewise. + (RETURN_MAP_ADJUSTED): Likewise. + (LABEL_PENDING_CHAIN): Likewise. + +2005-08-15 Tom Tromey + + * Make-lang.in (JAVA_OBJS): Removed verify.o + (java/verify.o): Removed. + * verify.c: Removed. + * lang.c (flag_new_verifier): Removed. + (java_post_options): Updated. + * java-tree.h (flag_new_verifier): Removed. + (verify_jvm_instructions): Removed. + * expr.c (pop_type_0): Assume flag_new_verifier is true. + (build_java_check_indexed_type): Likewise. + (expand_java_arraystore): Likewise. + (expand_java_arrayload): Likewise. + (pop_arguments): Likewise. + (expand_byte_code): Likewise. + (process_jvm_instruction): Likewise. + +2005-08-10 Andrew Haley + + * java-gimplify.c (java_gimplify_modify_expr): Fix any pointer + type mismatches to make legal GIMPLE. + +2005-08-10 Robin Green + + PR java/23230: + * parse.y (maybe_use_access_method): Generalize check from + java.lang.Object to any superclass of current_class + +2005-08-08 Nathan Sidwell + + * class.c (build_class_ref): Wrap the primary class type in a + NOP_EXPR. + * parse.y (java_complete_lhs) : Extract the + primary class type from the NOP_EXPR in which it was placed. + +2005-07-28 Diego Novillo + + * expr.c (expand_load_internal): Fix missing parens in + predicate. + +2005-07-28 Andrew Haley + + * expr.c (expand_load_internal): Convert to destination type. + +2005-07-22 Manfred Hollstein + + * verify-impl.c (check_class_constant): Fix uninitialised warnings. + (check_constant): Likewise. + (check_wide_constant): Likewise. + +2005-07-20 Giovanni Bajo + + Make CONSTRUCTOR use VEC to store initializers. + * check-init.c (check_init): Update to cope with VEC in + CONSTRUCTOR_ELTS. + * class.c (make_field_value, make_method_value, get_dispatch_table, + make_class_data, emit_symbol_table, emit_catch_table, + emit_assertion_table): Use build_constructor_from_list instead of + build_constructor. + * constants.c (build_constants_constructor): Likewise. + * java-gimplify.c (java_gimplify_new_array_init): Update to cope with + VEC in CONSTRUCTOR_ELTS. + * java-tree.h (START_RECORD_CONSTRUCTOR, PUSH_SUPER_VALUE, + PUSH_FIELD_VALUE, FINISH_RECORD_CONSTRUCTOR): Create a VEC instead + of a TREE_LIST. + * jcf-write.c (generate_bytecode_insns): Update to cope with VEC in + CONSTRUCTOR_ELTS. + * parse.y (build_new_array_init): Use build_constructor_from_list + instead of build_constructor. + (patch_new_array_init): Update to cope with VEC in + CONSTRUCTOR_ELTS. + (array_constructor_check_entry): Likewise. + +2005-07-12 Tom Tromey + + * jvspec.c (lang_specific_driver): Put filelist_filename first on + command line. + +2005-07-12 Tom Tromey + + PR java/19674: + * parse-scan.y (interface_member_declaration): Added + empty_statement. + +2005-07-08 Daniel Berlin + + * java-tree.h (LABEL_RETURN_LABELS): Use decl_non_common. + (LABEL_PENDING_CHAIN): Ditto. + (LABEL_PC): Ditto. + (DECL_BIT_INDEX): Ditto. + +2005-07-07 Bryce McKinlay + + PR java/18119 + * parse.y (inner_class_accessible): New function. Logic moved from + check_inner_class_access. + (check_inner_class_access): Use inner_class_accessible. + (resolve_inner_class): Simplify arguments. Create circularity hash + here. Keep looking for classes if we found one that was inaccessible. + Return the inaccessible class only if there is no other match. + (do_resolve_class): Update for new resolve_inner_class arguments. + Don't create circularity_hash here. + +2005-07-07 Bryce McKinlay + + PR java/21045 + * parse.y (add_exception_to_throws): New function. + (purge_unchecked_exceptions): Removed. + (get_constructor_super): Renamed from verify_constructor_super. Now + returns the super constructor after verification. + (java_complete_expand_method): Don't use purge_unchecked_exceptions + or save/restore the exception list. + (check_thrown_exceptions): Add uncaught exceptions in anonymous + class initializers and constructors to the throws clause of the method. + +2005-07-05 Bryce McKinlay + + PR java/19674 + * parse.y (interface_member_declaration): Allow empty statements in + interface declarations. + +2005-07-05 Paolo Bonzini + + * Makefile.in (parse.o): Adjust dependencies. + * parse.y: Include tree-dump.h. + +2005-07-02 Joseph S. Myers + + * class.c, decl.c, expr.c: Use '+' flag instead of %J. Use 'q' + flag for quoting. + +2005-07-01 Andrew Pinski + + * parse.y (issue_warning_error_from_context): Call + pp_output_formatted_text to be able to get the buffer. + +2005-06-30 Andrew Pinski + + * parse.y (issue_warning_error_from_context): Update for the + renaming of pp_format_text to pp_format. + +2005-06-28 Paul Brook + + * decl.c (java_init_decl_processing): Call + default_init_unwind_resume_libfunc. + +2005-06-27 Tom Tromey + + PR java/21540, PR java/13788: + * parse.y (java_complete_lhs) : Use + fold_constant_for_init. + (patch_binop): Added 'folding' argument. Updated all callers. + (patch_unaryop) : New case. + (fold_constant_for_init) : Likewise. + (fold_constant_for_init) : Fix sense of test. + +2005-06-25 Jan Hubicka + + * builtins.c (define_builtin): Accept new flags parameter. + (initialize_builtins): Mark the builtins const and nothrow accordingly. + +2005-06-25 Kelley Cook + + * all files: Update FSF address in copyright headers. + +2005-06-24 Tom Tromey + + * verify-impl.c (verify_instructions_0): Correctly handle + situation where PC falls off end. + +2005-06-23 Bryce McKinlay + + PR java/20697 + * parse.y (find_most_specific_methods_list): Remove special case for + inner classes. + +2005-06-15 Tom Tromey + + PR libgcj/21906: + * class.c (make_method_value): Use soft_abstractmethod_node for + abstract method. + * java-tree.h (soft_abstractmethod_node): New define. + (JTI_SOFT_ABSTRACTMETHOD_NODE): New enum constant. + * decl.c (java_init_decl_processing): Initialize + soft_abstractmethod_node. + +2005-06-13 Geoffrey Keating + + * Make-lang.in (rule for installing gcj.1): Depends on installdirs. + +2005-06-13 Per Bothner + + * expr.c (int highest_label_pc_this_method, + start_label_pc_this_method): New globals. + (lookup_label): Add start_label_pc_this_method to pc for label, and + update highest_label_pc_this_method. This prevents conflicts between + labels from different methods. + * java-tree.h: Declare new globals. + * jcf-parse.c (parse_class_file): If needed bump + start_label_pc_this_method and reset highest_label_pc_this_method. + +2005-06-13 Tom Tromey + + PR java/21844: + * parse.y (nested_field_access_p): Handle case where outer field + is inherited by enclosing class. + +2005-06-12 Per Bothner + + * class.c (inherits_from_p): Do load_class if needed. + +2005-06-09 Kaveh R. Ghazi + + * gjavah.c (error): Add ATTRIBUTE_PRINTF_1. + * java-tree.h (parse_error_context): Move... + * parse.h (parse_error_context): ... here, add ATTRIBUTE_GCC_DIAG. + * parse.y (parse_warning_context): Add ATTRIBUTE_GCC_DIAG. + * verify-impl.c (debug_print): Add ATTRIBUTE_PRINTF_1. + +2005-06-08 Roger Sayle + + * typeck.c (convert): Only clear TREE_OVERFLOW on INTEGER_CST nodes. + +2005-06-06 Jakub Jelinek + + * jv-scan.c (fatal_error, warning, warning0): Use gmsgid instead of + msgid for argument name. + * gjavah.c (error): Likewise. + * java-tree.h (parse_error_context): Likewise. + * parse.y (parse_error_context, parse_warning_context, + issue_warning_error_from_context): Likewise. + +2005-06-01 Tom Tromey + + PR java/21722: + * class.c (build_static_field_ref): Don't fold constant fields if + current class is from a .class file and we're using indirect + dispatch. + +2005-05-31 Kaveh R. Ghazi + + * java/verify-glue.c: Don't include errors.h and include toplev.h. + * java/Make-lang.in: Updates dependencies. + +2005-05-26 Ranjit Mathew + + PR java/19870. + * java-tree.h (OUTER_FIELD_ACCESS_IDENTIFIER_P): Rename to + NESTED_FIELD_ACCESS_IDENTIFIER_P. + (FIELD_INNER_ACCESS): Rename to FIELD_NESTED_ACCESS. + (FIELD_INNER_ACCESS_P): Rename to FIELD_NESTED_ACCESS_P. + * jcf-write.c (generate_classfile): Use + NESTED_FIELD_ACCESS_IDENTIFIER_P instead of + OUTER_FIELD_ACCESS_IDENTIFIER_P. + * parse.y (build_outer_field_access): Rename to + build_nested_field_access. Support static fields and outer-to-inner + class accesses. + (outer_field_access_p): Rename to nested_field_access_p. Support + static fields and generalise to outer-to-inner class and sibling + inner class accesses. + (outer_field_expanded_access_p): Rename to + nested_field_expanded_access_p and support static fields. + (outer_field_access_fix): Rename to nested_field_access_fix and + support static fields. + (build_outer_field_access_expr): Rename to + build_nested_field_access_expr and support static fields. + (build_outer_field_access_methods): Rename to + build_nested_field_access_methods and support static fields. For + static fields, generate accessors without class instance parameters. + (build_outer_field_access_method): Rename to + build_nested_field_access_method and support static fields. + (build_outer_method_access_method): Use + NESTED_FIELD_ACCESS_IDENTIFIER_P instead of + OUTER_FIELD_ACCESS_IDENTIFIER_P. + (resolve_expression_name): Consider static field accesses across + nested classes. + (resolve_qualified_expression_name): Likewise. + (java_complete_lhs): Use nested_field_access_fix instead of + outer_field_access_fix. + (patch_unary_op): Rename outer_field_flag to nested_field_flag. + Use nested_field_expanded_access_p instead of + outer_field_expanded_access_p. Use nested_field_access_fix instead + of outer_field_access_fix. + (check_thrown_exceptions): Use NESTED_FIELD_ACCESS_IDENTIFIER_P + instead of OUTER_FIELD_ACCESS_IDENTIFIER_P. + +2005-05-26 Bryce McKinlay + + * decl.c (GCJ_BINARYCOMPAT_ADDITION, + GCJ_BOOTSTRAP_LOADER_ADDITION): Removed. + (FLAG_BINARYCOMPAT_ABI, FLAG_BOOTSTRAP_LOADER, + MINOR_BINARYCOMPAT_ABI_VERSION): New. + (GCJ_CURRENT_BC_ABI_VERSION): Use new method to calculate version ID. + (parse_version): Calculate version ID using new method. Use bit-flags + for flag_indirect_dispatch and flag_bootstrap_classes. + +2005-05-25 Richard Henderson + + PR libgcj/21692 + * Make-lang.in (java/mangle.o): Depend on LANGHOOKS_DEF_H. + * class.c (build_class_ref): Set DECL_CLASS_FIELD_P and + DECL_CONTEXT; avoid pushdecl_top_level. + (build_dtable_decl): Set DECL_VTABLE_P and DECL_CONTEXT. + (layout_class): Don't SET_DECL_ASSEMBLER_NAME. + (layout_class_method): Likewise. + * decl.c (java_mark_cni_decl_local): New. + (java_mark_class_local): Use it. + * java-tree.h (DECL_LOCAL_CNI_METHOD_P): New. + (DECL_CLASS_FIELD_P, DECL_VTABLE_P): New. + (struct lang_decl_func): Add local_cni; + (struct lang_decl_var): Add class_field, vtable. + (java_mangle_decl): Declare. + * lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): New. + * mangle.c: Remove dup obstack.h; include langhooks-def.h. + (mangle_obstack_1): New. + (java_mangle_decl): Remove obstack argument. Call mangle_class_field, + mangle_vtable, and mangle_local_cni_method_decl. Fall back to + lhd_set_decl_assembler_name for things that don't need mangling. + (mangle_class_field): Rename from java_mangle_class_field, make + static, don't call init_mangling or finish_mangling. + (mangle_vtable): Similarly. + (mangle_local_cni_method_decl): New. + (init_mangling): Remove obstack argument. Use &mangle_obstack_1, + gcc_assert, and MANGLE_RAW_STRING. + (finish_mangling): Use gcc_assert, remove if 0 debugging code. + +2005-05-25 DJ Delorie + + * class.c (set_constant_value): Move warning control from if() to + warning(OPT_*). + +2005-05-24 Richard Henderson + + * builtins.c (define_builtin): Don't call make_decl_rtl. + * constants.c (build_constant_data_ref): Likewise. + * class.c (build_utf8_ref): Likewise. + (build_fieldref_cache_entry, build_static_field_ref): Likewise. + (get_dispatch_table, layout_class_method): Likewise. + (build_class_ref): Likewise. Don't set DECL_SIZE or DECL_SIZE_UNIT + by hand. + (make_local_function_alias): Don't SET_DECL_ASSEMBLER_NAME. + (make_method_value): Use METHOD_ABSTRACT instead of DECL_RTL_SET_P + to determine if we need a non-zero address. + * decl.c (builtin_function): Don't call make_decl_rtl. + (give_name_to_locals): Don't SET_DECL_ASSEMBLER_NAME. + * expr.c (build_known_method_ref): Don't call make_decl_rtl. + * resource.c (compile_resource_data): Likewise. + * parse.y (resolve_field_access): Re-word comment to avoid + building DECL_RTL. + +2005-05-24 Richard Henderson + + * class.c (registered_class): Take it out of class_roots; turn into + a vec of trees. + (register_class): Make static. Don't duplicate decl node. Use + VEC_safe_push. + (emit_register_classes): Use VEC_iterate. Use output_constant + instead of assemble_integer. Don't call mark_decl_referenced + directly. + * java-tree.h (register_class): Remove decl. + +2005-05-19 Paolo Bonzini + + PR java/17845 + + * parse.y (register_package, package_list): Remove. + (package_declaration): Do not call register_package. + (do_resolve_class): Do not use package_list. + +2005-05-15 Gerald Pfeifer + + * jcf-write.c (generate_bytecode_insns) : Remove + unused variable. + +2005-05-15 Tom Tromey + + PR java/21519: + * jcf-write.c (generate_bytecode_insns) : Don't call + NOTE_PUSH. + +2005-05-12 Aaron Luchko + + * gcj.texi: Add '-verify', '-noverify', and '-verifyremote'. + +2005-05-11 Tom Tromey + + * gcj.texi (Code Generation): Document -fbootstrap-classes. + * decl.c (GCJ_BOOTSTRAP_LOADER_ADDITION): New macro. + (parse_version): Use it. + * lang.opt (-fbootstrap-classes): New option. + +2005-05-10 Paolo Bonzini + + PR java/21436 + * class.c (maybe_layout_super_class): Look for imports in this_class. + * parse.h (ctxp_for_generation_last): New. + (do_resolve_class): Add a parameter. + * parse.y (ctxp_for_generation_last): New. + (java_pop_parser_context): Add at end of list. + (find_in_imports, find_in_imports_on_demand): Look in ctxp + if the TYPE_IMPORT_LIST or respectively the TYPE_IMPORT_DEMAND_LIST of + the given type are NULL. + (do_resolve_class): Look into the imports of the new second parameter. + Adjust recursive calls. + (resolve_class, resolve_inner_class, find_as_inner_class): Adjust + calls to do_resolve_class. + (create_class): Set the TYPE_IMPORT_LIST and TYPE_IMPORT_DEMAND_LIST. + (java_complete_class): Do not do that here. + +2005-05-03 Thomas Fitzsimmons + + PR java/20309 + * Make-lang.in (java): Add gjnih. + (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. + (GJNIH_OBJS): New variable. + (gjnih$(exeext)): New target. + (JAVA_MANFILES): Add gjnih.1. + (java.uninstall): Add gjnih.1. + (java.mostlyclean): Add gjnih. + (java.maintainer-clean): Add gjnih.1. + (java/gjavah-jni.o): New target. + (.INTERMEDIATE): Add gjnih.pod. + (gjnih.pod): New target. + * config-lang.in (stagestuff): Add gjnih. + * gcj.texi (Top): Add gjnih node. + (Invoking gcjh): Add descriptions of -force, -old, -trace, -J and + -bootclasspath options. + (Invoking gjnih): New node. + * gjavah.c Initialize flag_jni to 1 if JNI_DEFAULT is defined. + (TOOLNAME): New macro. + (error): Replace hard-coded gcjh with TOOLNAME. + (process_file): Likewise. + (usage): Likewise. + (version): Likewise. + (help): Likewise. Add help output for -force, -old, -trace and -J + options. + (OPT_FORCE, OPT_OLD, OPT_TRACE): New macros. + (options): Add force, old, trace and J fields. + (main): Handle -force, -old, -trace and -J options. + +2005-05-03 Tom Tromey + + PR java/21245: + * gjavah.c (main): Unlink output file on error. + +2005-05-03 Kazu Hirata + + * constants.c, jvgenmain.c, lang.opt, resource.c: Update + copyright. + +2005-04-29 Tom Tromey + + * expr.c (build_jni_stub): Updated for change to build_block. + +2005-04-29 Andrew Pinski + + * expr.c (force_evaluation_order): Declare 'saved' earlier. + +2005-04-28 Andrew Haley + + PR java/19285 + * java-tree.h (soft_resolvepoolentry_node): New. + (alloc_constant_fieldref): Declare. + * expr.c (expand_java_field_op): Don't call class_init for + accesses to static fields with indirect dispatch. + * builtins.c (initialize_builtins): Add "__builtin_expect". + * decl.c (soft_resolvepoolentry_node): New variable. + (java_init_decl_processing): Create a decl for + "_Jv_ResolvePoolEntry". + * class.c (build_fieldref_cache_entry): New function. + (build_static_field_ref): Rewrite for indirect dispatch. + * constants.c (find_name_and_type_constant_tree): New function. + (alloc_constant_fieldref): Likewise. + (build_constants_constructor): Handle CONSTANT_Fieldref and + CONSTANT_NameAndType. + + PR java/21115 + * expr.c (force_evaluation_order): Convert outgoing args smaller + than integer. + +2005-04-27 Bryce McKinlay + + * gcj.texi (libgcj Runtime Properties): Remove obsolete + gnu.gcj.runtime.NameFinder.* system properties. Update documentation + for gnu.gcj.runtime.NameFinder.use_addr2line and gnu.gcj.progname. + +2005-04-25 Kaveh R. Ghazi + + * gjavah.c, jcf-dump.c, jv-scan.c, jvgenmain.c: Replace calls + to `unlock_stream' with `unlock_std_streams'. + +2005-04-25 Jakub Jelinek + + * Make-lang.in (java/decl.o, java/resource.o): Depend on $(EXPR_H) + instead of just expr.h. + +2005-04-24 Kaveh R. Ghazi + + * gjavah.c (main): Unlock the stdio streams. + * jcf-dump.c (main): Likewise. + * jv-scan.c (main): Likewise. + * jvgenmain.c (main): Likewise. + +2005-04-23 DJ Delorie + + * class.c, decl.c, expr.c, jcf-io.c, jcf-parse.c, jv-scan.c, + parse.y: Adjust warning() callers. + +2005-04-21 Bryce McKinlay + + * gcj.texi (Object fields): Change "Integer" to "Int" in example + contructor. + +2005-04-20 Bryce McKinlay + + * gcj.texi: Fix typos and bogus example. + +2005-04-19 Kazu Hirata + + * except.c: Fix a comment typo. + +2005-04-19 Julian Brown + + * decl.c (finish_method): Revert patch from 2005-04-13 for breaking + indirect dispatch with PIC. + +2005-04-18 Andrew Haley + + * java-except.h (struct eh_range.handler): Remove unused field. + (handle_nested_ranges): Remove function declaration. + (sanity_check_exception_range): Add function declaration. + * verify.c (verify_jvm_instructions): Remove call to + handle_nested_ranges. + * verify-glue.c (verify_jvm_instructions_new): Call + sanity_check_exception_range. + * except.c (link_handler, eh_range_freelist, link_handler, + handle_nested_ranges): Remove. + (add_handler): Rewrite. + (sanity_check_exception_range): New function. + (print_ranges): New function. + +2005-04-13 Julian Brown + + * decl.c (finish_method): Give methods once-only linkage. + +2005-04-11 Richard Sandiford + + * lang.opt: Refer to the GCC internals documentation instead of c.opt. + +2005-04-07 Kaveh R. Ghazi + + * java-tree.h: Don't use PARAMS(). + +2005-04-07 Per Bothner + + * class.c (push_class): By default, suppress debug output. + (finish_class): Enable debug output for classes we're emitting. + +2005-04-07 Andrew Haley + + * gcj.texi: Correct gcj-dbtool instructions. + +2005-04-04 Kazu Hirata + + * gcj.texi: Fix a typo. + * lang.c: Fix a comment typo. + +2005-04-01 Thomas Fitzsimmons + + * gcj.texi (Invoking gij): Add descriptions of new -X options. + Mention recognized-and-ignored compatibility options. + (Memory allocation): Add descriptions of JvMalloc, JvRealloc and + JvFree. + (About CNI): Add Memory allocation section. + +2005-04-01 Tom Tromey + + * decl.c (java_init_decl_processing): Fix types of + _Jv_MonitorEnter, _Jv_MonitorExit, _Jv_AllocObject, + _Jv_AllocObjectNoFinalizer, _Jv_Throw, _Jv_NewPrimArray, + _Jv_JNI_PopSystemFrame, _Jv_divI, _Jv_remI, _Jv_divJ, _Jv_remJ. + +2005-03-31 Jan Hubicka + + * Make-lang.in (class.o, decl.o): Depend on cgraph.h. + * class.c: Include cgraph.h + (make_local_functoin_alias): Mark aslias as needed. + * resource.c: Include cgraph.h + (compile_resource_data): Go via cgraph interface. + +2005-03-30 Ian Lance Taylor + + * parse.y (maybe_yank_clinit): Don't crash if bbody is NULL. + +2005-03-30 Tom Tromey + + * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): Handle cases where + inner_class_info_index==0 or outer_class_info_index==0. + +2005-03-29 Tom Tromey + + * gcj.texi (libgcj Runtime Properties): Document + gnu.gcj.runtime.endorsed.dirs. + +2005-03-24 Anthony Green + + * gcj.texi (Invoking gcj-dbtool): Document new LIBDIR option to + 'gcj-dbtool -p'. + +2005-03-23 Tom Tromey + + * decl.c (GCJ_CURRENT_BC_ABI_VERSION): New define. + (parse_version): Use it. + +2005-03-23 Joseph S. Myers + + * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove. + +2005-03-18 Andrew Haley + + PR java/20522 + * decl.c (update_aliases): Don't update variables that are about + to die. + (maybe_poplevels): Add comment. + +2005-03-17 Bryce McKinlay + + PR java/20502 + * jcf-parse.c (duplicate_class_warning): New function. + (java_parse_file): Call duplicate_class_warning if + CLASS_FROM_CURRENTLY_COMPILED_P is already set. + (parse_zip_file_entries): Likewise. Also set + CLASS_FROM_CURRENTLY_COMPILED_P. + +2005-03-16 Andrew Haley + + * expr.c (expand_java_arrayload): Don't generate a + NullPointerException based on the type of the node. + (build_java_array_length_access): Likewise. + +2005-03-15 Zack Weinberg + + * Make-lang.in (TEXI_JAVA_FILES): Add gcc-vers.texi. + +2005-03-11 Tom Tromey + + * gcj.texi (Invoking gcj-dbtool): Document 'gcj-dbtool -p'. + (libgcj Runtime Properties): Document the default .db. + +2005-03-10 Ranjit Mathew + + PR java/20312 + * parse.y (checks_throws_clauses): Check exceptions list even when + the base class does not come from a source file being compiled. + (java_complete_lhs): Remove unused variable 'wfl'. + +2005-03-09 Ranjit Mathew + + PR java/20338 + * decl.c (finish_method): Emit _Jv_InitClass for private static + methods inside inner classes as well. + +2005-03-08 Julian Brown + * Revert patch from 2005-03-08 for causing bootstrap failure on + ppc-darwin. + +2005-03-08 Julian Brown + + * decl.c (finish_method): Give methods once-only linkage. + +2005-03-07 Ranjit Mathew + + * lang.c (flag_new_verifier): Enable by default, regardless of ABI. + +2005-03-07 Bryce McKinlay + + * verify-glue.c (vfy_is_assignable_from): Perform static check using + can_widen_reference_to if the C++ ABI is in use. + (vfy_get_interface_count, vfy_get_interface): Remove unused functions. + * verify-impl.c (debug_print, make_utf8_const, init_type, copy_type, + type_isresolved, init_state, set_pc, state_get_pc, + _Jv_BytecodeVerifier): Clean up unused and disabled functions. + (verify_fail): Report the current PC from the verifier context. + (free_state): Remove #if 0 block to enable this function. + (free_verifier_context): Call free_state on state_list iterator + values before freeing them. + * expr.c (pop_type_0): Pop correct type for error message when stack + contains a multi-word type. + +2005-03-07 Ranjit Mathew + + * expr.c (build_java_array_length_access): Remove !flag_new_verifier + for known NULL array length access. + +2005-03-07 Tom Tromey + + * gcj.texi (Invoking gcj-dbtool): Document '-f'. + +2005-03-06 Kazu Hirata + + * jcf-dump.c, jcf-io.c, jcf-reader.c, lang.c, parse.h, + typeck.c: Update copyright. + +2005-03-06 Ranjit Mathew + + Remove xref code. + * xref.c, xref.h: Remove file. + * Make-lang.in (java/xref.o): Remove. + * java-tree.h (flag_emit_xref, do_not_fold): Remove declaration. + * lang.c (flag_emit_xref): Remove definition. + * parse.h (DECL_END_SOURCE_LINE, DECL_INHERITED_SOURCE_LINE): Remove. + * typeck.c (convert): Remove use of do_not_fold. + * parse.y (do_not_fold): Remove definition. + (parser grammar): Remove xref code. + (maybe_create_class_interface_decl, create_class): Likewise. + (register_fields, method_header, finish_method_declaration): Likewise. + (declare_local_variables, source_end_java_method): Likewise. + (java_complete_expand_classes): Do not set do_not_fold. + (java_complete_expand_method): Remove xref code. + (java_expand_classes, resolve_field_access, patch_invoke): Likewise. + (java_complete_tree, java_complete_lhs, patch_assignment): Likewise. + (patch_binop, build_string_concatenation, patch_array_ref): Likewise. + (patch_synchronized_statement, patch_throw_statement): Likewise. + (maybe_build_class_init_for_field): Likewise. + +2005-03-05 Kazu Hirata + + * expr.c (build_expr_wfl, expr_add_location): Use TYPE_P + instead of IS_NON_TYPE_CODE_CLASS. + +2005-03-04 Andrew Haley + + PR java/18362 + * class.c (set_method_index): Don't set method_index if it is + NULL_TREE. + (layout_class_method): Don't complain about "non-static method foo + overrides static method" in the case of indirect dispatch. + +2005-03-02 Kaveh R. Ghazi + + * jcf-io.c (caching_stat): Use __extension__ to avoid pedantic + warning. + * Make-lang.in: Don't elide warnings in jcf-io.c. + +2005-03-01 Per Bothner + + PR java/8608 + * check-init.c (wfl): Remove static. + (final_assign_error, check_init): Replace calls to parse_error_context + by plain error. + (check_init): Save, set, and restore input_location for each exp. + +2005-03-01 Per Bothner + + * jcf-reader.c (get_attribute): Handle SourceDebugExtension (JSR 45) + if HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE is defined. + * jcf-dump.c (HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE): Print contents. + +2005-03-01 Per Bothner + + * java-tree.h (IDENTIFIER_HANDLECLASS_VALUE): Remove ancient macro. + +2005-02-23 Thomas Fitzsimmons + + PR libgcj/16923 + * gcj.texi (Invocation): Add descriptions of JvVMInitArgs and + JvVMOption. + +2005-02-22 Tom Tromey + + PR java/20056: + * verify-impl.c (EITHER): New define. + (types_compatible): Handle it. + (check_field_constant): Use it. + +2005-02-18 Tom Tromey + + PR java/20056: + * verify-impl.c (types_equal): Fixed test. + + PR java/20056: + * verify-glue.c (vfy_class_has_field): New function. + * verify.h (vfy_class_has_field): Declare. + * verify-impl.c (check_field_constant): Added 'putfield' + argument. + (verify_instructions_0): Updated. + (types_equal): New function. + +2005-02-14 Tom Tromey + + PR java/19921: + * jcf-write.c (generate_bytecode_insns) : Note the + stack effect of multianewarray. + +2005-02-14 Andrew Haley + + PR java/19907 + * expr.c (expand_byte_code): Call promote_arguments(). + (promote_arguments): New function. + * decl.c (check_local_unnamed_variable): Remove special case for + new verifier. + (find_local_variable): Promote all boolean types to int + when searching for local variable decls. + +2005-02-12 Kazu Hirata + + * builtins.c, java-except.h, jcf-parse.c, jv-scan.c, lex.c, + parse-scan.y: Update copyright. + +2005-02-11 Per Bothner + + PR java/15543 + * parse-scan.y (input_location): Remove variable. + (main_input_filename): New - replaces input_filename, which isn't + settable if USE_MAPPED_LOCATION. + * lex.c (java_init_lex): Wrap some more places in #ifndef JC1-LITE, + so we don't reference input_location or wfl_operator in that case. + * jv-scan.c (expand_location): Remove - no longer used. + (main): Set main_input_filename rather than input_filename. + +2005-02-09 Richard Henderson + + * builtins.c (initialize_builtins): Call build_common_builtin_nodes. + * decl.c (java_init_decl_processing): Initialize const_ptr_type_node. + +2005-02-08 Marcin Dalecki + + * expr.c (add_type_assertion): Use the proper enumeration type, + since this is what htab_find_slot() is expecting. + +2005-02-06 Joseph S. Myers + + * gcj.texi: Update copyright dates. + +2005-02-02 Tom Tromey + + * gcj.texi (libgcj Runtime Properties): Default library_control + to 'cache'. + +2005-02-02 Ranjit Mathew + + PR java/15543 + * parse-scan.y (formal_parameter): Use $2 (type) instead of $$ + (modifiers) when square brackets are present in a declaration for + a final paramter. + * jv-scan.c (main): Set input_filename and input_line. + +2005-02-01 Tom Tromey + + PR java/19742: + * gjavah.c (get_field_name): Don't override name for JNI header. + +2005-02-01 Roger Sayle + + * jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR + of unsigned types using iushr and lushr JVM bytecodes. + +2005-02-01 Ranjit Mathew + + PR java/19738 + * gjavah.c (jni_print_float): Do not emit floating-point + initialiser for a static final field. + (jni_print_double): Likewise. + +2005-02-01 Mark Mitchell + + Revert: + 2005-01-31 Mark Mitchell + * gjavah.c (print_field_info): Mark static data members of + floating-point type with "__extension__". + +2005-01-31 Mark Mitchell + + * gjavah.c (print_field_info): Mark static data members of + floating-point type with "__extension__". + +2005-02-01 Ranjit Mathew + + PR java/9157 + * parse.y (build_string_concatenation): Remove redundant if. + (patch_conditional_expr): Attempt to patch_string() the condition + of a ?: as well, in addition to its other operands. + +2005-01-25 Tom Tromey + + * Make-lang.in (java/java-tree-inline.o): Removed. + +2005-01-25 Ranjit Mathew + + PR java/19070 + * parse.y (patch_binop): Allow comparisons against NULL only + if the other operand is of a reference type. + +2005-01-24 Tom Tromey + + * java-tree.h (gcj_abi_version): Declare. + * class.c (make_class_data): Push gcj_abi_version into "next" + field. Renamed field. + * decl.c (gcj_abi_version): New global. + (parse_version): New function. + (java_init_decl_processing): Call it. Renamed 'next' field. + Include version.h. + (GCJ_BINARYCOMPAT_ADDITION): New define. + +2005-01-24 Roger Sayle + + PR java/19295 + * jcf-write.c (generate_bytecode_insns): Conversions between + integer types of the same precision shouldn't generate widening + or narrowing conversion bytecodes. + +2005-01-22 Kazu Hirata + + * java-except.h, java-tree.h: Remove unused prototypes. + +2005-01-20 Andrew Pinski + + PR java/18091: + * jcf-write.c (perform_relocations): Don't call memcpy if source + and destination are the same. + +2005-01-17 Tom Tromey + + * verify-impl.c (get_short): Sign extend. + (get_int): Likewise. + +2005-01-12 Ranjit Mathew + + * expr.c (build_jni_stub): Replace mistaken use of TYPE_SIZE_UNIT + with TYPE_SIZE. + +2005-01-10 Ranjit Mathew + + * verify.c: Revert to the version before the BC-ABI merge. + +2005-01-10 Ranjit Mathew + + PR java/19277 + * check-init.c (check_init): Take care of references that do not + have an explicit final variable declaration (e.g. array length + access) for pre/post in/de-crement operators. + +2005-01-08 Mark Wielaard + + * parse.y (process_imports): Allocate (and free) original_name only + when not already defined. + * jcf-parse.c (read_class): Free results of find_class() and + lrealpath(). + (java_parse_file): Keep pointer to head of file_list and free when + done. Free result of lrealpath(). + +2005-01-05 Tom Tromey + + * gcj.texi (Standard Properties): java.ext.dirs is now used. + +2004-12-20 Andrew Haley + + * typeck.c: Use fold_convert for ints and booleans. + +2004-12-17 Andrew Haley + + PR java/18931 + * typeck.c (convert): Use a CONVERT_EXPR when converting to + BOOLEAN_TYPE or CHAR_TYPE. + (convert_to_boolean, convert_to_char) : Remove. + * convert.h (convert_to_boolean, convert_to_char) : Remove. + * expr.c (expand_load_internal): Do type conversion if type is not + as required. + +2004-12-13 Danny Smith + + PR target/18459 + * class.c (emit_register_classes): Use TARGET_USE_JCR_SECTION. + Update comment. + +2004-12-07 Andrew Haley + + PR java/18811: + * jcf-parse.c (load_class): Remove sanity test for missing inner + class file. + +2004-12-06 Tom Tromey + + * Make-lang.in (JAVA_MANFILES): Added gcj-dbtool. + (java.uninstall): Likewise. + (java.maintainer-clean): Likewise. + (.INTERMEDIATE): Likewise. + (java.install-man): Likewise. + (gcj-dbtool.pod): New target. + * gcj.texi (Code Generation): Document -findirect-dispatch. + (libgcj Runtime Properties): Document + gnu.gcj.precompiled.db.path. + (Top): Link to "Invoking gcj-dbtool". + +2004-12-06 Tom Tromey + + PR java/14853: + * java-tree.h (extract_field_decl): Declare. + * parse.y (extract_field_decl): Renamed from + strip_out_static_field_access_decl. No longer static. + * check-init.c (get_variable_decl): Unwrap COMPOUND_EXPRs. + +2004-12-03 Tom Tromey + + * lang.c (flag_new_verifier): Define. + (java_post_options): Set flag_new_verifier if indirect dispatch + is being used. + * lang.opt (fnew-verifier): Removed. + +2004-12-03 Tom Tromey + + PR bootstrap/14614: + * Make-lang.in (java.install-common): Only install transformed + gcjh if gcj-cross exists. + +2004-12-03 Andrew Haley + + PR java/18812 + * except.c (link_handler): Patch 'outer' field of siblings of the + range we're demoting. + +2004-12-03 Andrew Haley + + PR java/18697 + * class.c (layout_class_method): Don't fail to override a method + simply because it has DECL_ARTIFICIAL set. + +2004-12-02 Tom Tromey + + PR java/16675: + * parse.y (craft_constructor): Special case null_pointer_node. + +2004-12-02 Tom Tromey + + PR java/18741: + * java-gimplify.c (java_gimplify_expr): Don't call + SET_EXPR_LOCATION unless wrapped tree is an expression. + +2004-11-27 Per Bothner + + * jcf-parse.c (set_source_filename): Improvement to Andrew's fix: + Fix fencepost error in 'i', which got executed one too many times. + Also, fold memcpy into explicit loop, as originally intended. + Also, free temporary 'buf' which otherwise leaks. + +2004-11-27 Per Bothner + + * expr.c (build_expr_wfl): Only declare last_file and last_filenode + local static variables if not USE_MAPPED_LOCATION. + +2004-11-27 Kazu Hirata + + * class.c, decl.c, expr.c: Fix comment typos. + +2004-11-26 Andrew Pinski + + PR java/18305 + * decl.c (end_java_method): Call + attach_init_test_initialization_flags on all the init_decls. + * parse.y (attach_init_test_initialization_flags): Move to ... + * expr.c (attach_init_test_initialization_flags): here and + support BIND_EXPR also. + * java-tree.h (attach_init_test_initialization_flags): Prototype. + * jcf-parse.c (parse_class_file): Don't disable class init + optimization. + +2004-11-25 Joseph S. Myers + + * gjavah.c, jcf-dump.c, jv-scan.c, jvspec.c: Avoid ` as left quote + in diagnostics. + +2004-11-24 Richard Henderson + + * verify-glue.c (vfy_init_name, vfy_clinit_name, vfy_object_type, + vfy_string_type, vfy_throwable_type): Use ANSI declaration form. + +2004-11-24 Tom Tromey + + * verify.c (defer_merging): Don't use C++-style comment. + * verify.h (java_opcode): Added java_opcode_end. + * class.c (build_class_ref): Remove C++ comment and old FIXME. + + * verify-impl.c (vfy_push_type): Removed bogus "return". + (initialize_stack): Use vfy_alloc and vfy_free. + (verify_instructions_0): Likewise. + + * Merged gcj-abi-2-dev-branch to trunk. + +2004-11-24 Andrew Haley + + * jcf-parse.c (parse_class_file): Set file_start_location. + +2004-11-10 Tom Tromey + + * class.c (make_field_value): Don't call build_static_field_ref. + (build_static_field_ref): Don't emit direct references when using + indirect dispatch. + + * gcj.texi (Invoking gij): Document -verbose. Put -verbose and + -verbose:class into man page synopsis. + +2004-11-09 Tom Tromey + + * expr.c (build_java_arraystore_check): Still generate check if + element type is itself an array. + +2004-11-08 Tom Tromey + + * java-tree.h (soft_check_assignment_node): Removed. + (enum java_tree_index): Removed JTI_SOFT_CHECK_ASSIGNMENT_NODE. + * decl.c (java_init_decl_processing): Don't initialize + soft_check_assignment_node. + +2004-11-05 Tom Tromey + + * class.c (layout_class_methods): Don't add Miranda methods when + using indirect dispatch. + +2004-11-05 Bryce McKinlay + + * class.c (make_class_data): Call emit_assertion_table to set the + 'assertion_table' field. + (build_signature_for_libgcj): Move here from expr.c. + (add_assertion_table_entry): New function. Callback for assertion + hashtable traversal. + (emit_assertion_table): New. Take class argument, and generate + assertion table DECL based on the TYPE_ASSERTIONS hashtable. + * decl.c (init_decl_processing): Define assertion_entry_type record. + Push 'assertion_table' class field instead of 'verify'. + * expr.c (type_assertion_eq): Compare 'assertion_code' field. + (type_assertion_hash): Include 'assertion_code' in hash. + (add_type_assertion): Rewritten. Take class and assertion_code + arguments. Add assertions to the TYPE_ASSERTIONS hashtable. + (can_widen_reference_to): Use new add_type_assertion() arguments. + * java-tree.h (java_tree_index): Add JTI_ASSERTION_ENTRY_TYPE, + JTI_ASSERTION_TABLE_TYPE. Remove JTI_VERIFY_IDENTIFIER_NODE. + (verify_identifier_node): Removed. + (assertion_entry_type, assertion_table_type): New. + (ASSERTION_TYPES_COMPATIBLE, ASSERTION_IS_INSTANTIABLE): New. Type + assertion code definitions. + (struct type_assertion): Add assertion_code. Rename 'source_type' and + 'target_type' to 'op1' and 'op2'. + (add_type_assertion): Declare. + (lang_printable_name_wls): Remove unused definition. + * verify-glue.c: (vfy_is_assignable_from): New. Call add_type_assertion + to emit runtime assertion. + (vfy_note_stack_type): Clean up non-C90 declarations. + (vfy_note_local_type): Likewise. + * verify.h (vfy_is_assignable_from): Declare. + * verify-impl.c (is_assignable_from_slow): Remove unused function. + (ref_compatible): Rename arguments. Call vfy_is_assignable_from() + instead of is_assignable_from_slow(). + (types_compatible): Reinstate ref_compatible() call. + +2004-11-04 Tom Tromey + + * class.c (build_static_field_ref): Reverted previous patch. + + * class.c (build_static_field_ref): Don't emit direct references + when using indirect dispatch. + +2004-11-03 Tom Tromey + + * expr.c (expand_java_arrayload): Set lhs_type_node. + (expand_java_arraystore): Set rhs_type_node. + +2004-11-02 Tom Tromey + + * jcf-parse.c (compute_class_name): Use filename length from zip + directory, not strlen. + + * expr.c (expand_invoke): Mark new interface methods as abstract. + +2004-11-01 Tom Tromey + + * verify-impl.c (push_jump): Removed check for uninitialized + objects. + (push_exception_jump): Likewise. + (handle_ret_insn): Likewise. + (handle_jsr_insn): Likewise. + (state_check_no_uninitialized_objects): Removed. + + * decl.c (check_local_unnamed_variable): Recognize + promoted-to-int parameters when using the new verifier. + * expr.c (expand_java_arraystore): Explicitly request array type + when using new verifier. + (expand_java_arrayload): Likewise. + (invoke_build_dtable): Don't pass object_type_node as + expression argument to build_java_indirect_ref. + (build_java_check_indexed_type): Do nothing. + (build_java_arraystore_check): Handle case where array doesn't + have array type. + (build_java_array_length_access): Likewise. + (expand_invoke): Handle case where interface overrides a method + from Object. + (pop_type_0): Always succeed for reference types. + (process_jvm_instruction): Don't pop a value in a dead + exception handler. + (pop_arguments): Convert arguments to correct types. + +2004-10-29 Andrew Haley + + * jcf-parse.c (give_name_to_class): Remove line that was + incorrectly merged. + +2004-10-29 Andrew Haley + + * jcf-parse.c (set_source_filename): Add code to build new sfname. + +2004-10-20 Andrew Haley + + * decl.c (end_java_method): Don't expand if flag_syntax_only. + +2004-10-26 Tom Tromey + + * verify.h (vfy_notify_verified): Removed. + * verify-glue.c (vfy_notify_verified): Removed. + +2004-10-26 Tom Tromey + + * verify-impl.c (debug_print_state): Declare `i' before code. + (merge_types): Modify `t' when it is null_type. + +2004-10-26 Tom Tromey + + * verify-impl.c (type_print): Renamed from print. Now static and + takes an argument. + (debug_print_state): Use type_print. + +2004-10-25 Tom Tromey + + * expr.c (build_invokeinterface): Compute correct offset for + index into interface methods. + +2004-10-20 Tom Tromey + + * java-tree.h (verify_jvm_instructions_new): Declare. + + * jvspec.c (jvgenmain_spec): Remove -fnew-verifier from cc1 + command line. + + * verify-impl.c (verify_instructions): Correctly handle wide + types on the stack. + * verify-glue.c (vfy_get_class_name): Use DECL_NAME. + (vfy_get_component_type): Strip pointer types. + (vfy_find_class): Use get_type_from_signature. Strip pointer + types. + Include java-except.h. + +2004-10-20 Bryce McKinlay + + * verify-impl.c (type_array_elementpop_raw, vfy_pop_type_t, + vfy_push_type_t, set_variable, add_new_state, merge_into, + handle_jsr_insn, branch_prepass, check_class_constant, + check_wide_constant, get_one_type, compute_static_types, + verify_instructions_0): Clean up C99 declarations after statements. + +2004-10-20 Tom Tromey + + * verify-impl.c (merge_refs): Compare reference against iterator, + not ref2. + + * verify-glue.c (vfy_tag): Mask off resolved flag. + +2004-10-19 Tom Tromey + + * verify-impl.c (verify_instructions): Call vfy_note_local_type. + (init_state_with_stack): Initialize `this_type' in state. + (verify_method): Use debug_print. + * verify-glue.c (vfy_is_primitive): Removed debugging print. + (vfy_note_stack_depth): Reverted last patch. + (vfy_note_stack_type): Note pointer to Object, not Object. + (vfy_note_local_type): Likewise. + + * verify.h (vfy_note_instruction_seen): Declare. + * verify-glue.c (verify_jvm_instructions_new): Set + BCODE_EXCEPTION_TARGET on target instruction. + (vfy_note_instruction_seen): New function. + * verify-impl.c (FLAG_INSN_SEEN): New define. + (verify_instructions_0): Set flag on instruction. Save state for + PC=0 later. + (verify_instructions): Call vfy_note_instruction_seen. + + * verify-glue.c (vfy_note_stack_depth): Fix off-by-one error. + (verify_jvm_instructions_new): Call method_init_exceptions, + add_handler, and handle_nested_ranges. + * verify-impl.c (verify_method): Return 1 on success. + (verify_instructions_0): Save the state at PC=0. + + * verify-impl.c (init_type_from_class): Set is_resolved and + ref_next on new ref_intersection. + (init_type_from_string): Likewise. + +2004-10-15 Bryce McKinlay + + * expr.c (expand_bytecode): Use verify_jvm_instructions_new + if flag_new_verifier is set. + * java-tree.h (flag_new_verifier): Declare. + * lang.opt (fnew-verifier): New option. + * verify-impl.c: Work around namespace pollution by undef'ing + 'current_class'. + (struct verifier_context): Make 'bytecode' const. + (verify_fail_pc): Pass -1 PC argument to vfy_fail. + (types_compatible): For the BC-ABI, always consider reference types + compatible. + (check_class_constant): Use vfr->current_class. + (check_constant): Likewise. + (check_wide_constant): Likewise. + (check_field_constant): Check for 'L' at start of type name. + (get_one_type): Return pointer instead of type. Set type result in + caller via passed type pointer. + (compute_argument_types): Update to use new get_one_type arguments. + (compute_return_type): Likewise. + (make_verifier_context): New. Allocate and initialize 'vfr'. + (free_verifier_context): New. Free 'vfr' and its contents. + (verify_method): Remove ATTRIBUTE_UNUSED. Call make_verifier_context + and free_verifier_context. + +2004-10-15 Tom Tromey + + * verify-glue.c (vfy_note_local_type): Mark argument as unused. + * verify.h (vfy_fail): Fixed formatting. + + * verify-impl.c (vfr): Fixed comment formatting. + (collapse_type): New function. + (verify_instructions): Notify compiler about type map. + * verify.h (vfy_note_stack_depth): Updated. + (vfy_note_stack_type): Likewise. + (vfy_note_local_type): Likewise. + (vfy_unsuitable_type, vfy_return_address_type, vfy_null_type): + Declare. + * verify-glue.c (vfy_note_stack_depth): Correctly size type + state. Added `method' argument. + (vfy_note_stack_type): Renamed from vfy_note_type. Added `method' + argument. + (vfy_note_local_type): New function. + (vfy_unsuitable_type): Likewise. + (vfy_return_address_type): Likewise. + (vfy_null_type): Likewise. + + * verify.h (VFY_IN_GCC): Removed. + (VFY_WANT_TYPEMAP): Removed. + * verify-impl.c (verify_instructions_0): Removed useless "\". + (struct state) : Uncomment. + +2004-10-13 Bryce McKinlay + + * verify-impl.c: Formatting fixes. Reformat C++-style comments to + C-style. + +2004-10-06 Bryce McKinlay + + * Make-lang.in (verify.o): Re-enabled this target. + * verify-glue.c (vfy_get_interface_count): Add ATTRIBUTE_UNUSED. + (vfy_get_interface): Likewise. + (verify_jvm_instructions_new): Renamed from verify_jvm_instructions. + * verify.h (verify_jvm_instructions_new): Declare. + * verify-impl.c (free_state): Temporarily comment out unused + function. + +2004-10-06 Tom Tromey + + * java-tree.h (JV_STATE_READ): New enum value. + +2004-10-06 Bryce McKinlay + + * verify.h: New file. + +2004-10-05 Bryce McKinlay + + * verify-impl.c, verify-glue.c, verify.h: New files. + * Make-lang.in: Add rules for verify-impl.o and verify-glue.o. + +2004-09-24 Andrew Haley + + * decl.c (check_local_unnamed_variable): Always use the PARM_DECL + for a slot if it's of pointer type. + +2004-09-14 Tom Tromey + + * class.c (make_class_data): Correctly initialize "state" field. + Initialize "engine" field. + * decl.c (java_init_decl_processing): Add "engine" field. + +2004-09-10 Andrew Haley + + PR java/12760 + * expr.c (build_invokeinterface): Use fast method for interface + dispatch. + * java-tree.h (enum java_tree_index): Add JTI_ITABLE_TYPE, + JTI_ITABLE_PTR_TYPE. + (struct lang_type): Add itable_methods, itable_decl, itable_syms_decl. + (emit_symbol_table): Add new arg, element_size. + * decl.c (java_init_decl_processing): Initialize Class.itable. + * class.c (GEN_TABLE): New macro. + (gen_indirect_dispatch_tables): Use it. Add itable. + (make_class_data): Add new arg for emit_symbol_table(). + Emit itable. + (add_miranda_methods): Make sure search_class has been parsed. + (emit_symbol_table): Add new arg, element_size. + +2004-09-06 Andrew Haley + + * verify.c (merge_types): Return Object for all merges of + interfaces. + * expr.c (add_type_assertion): Don't generate assertions when + source type is array of Object. + +2004-09-03 Andrew Haley + + * class.c (finish_class): Nullify TYPE_VERIFY_METHOD. + + * lang.c (java_post_options): Force flag_verify_invocations if + we're not using indirect dispatch. + + * expr.c (pop_type_0): Move test for interfaces before call to + can_widen_reference_to(). + (build_signature_for_libgcj): Remove generation of canonical array + type. + (add_type_assertion): Canonicalize both arrays. + Don't assert that type X can be assigned to Object. + Don't assert that type X an be assigned to type X. + Don't assert that Object can be assigned to type X. + (can_widen_reference_to): Warn whenever we generate an assertion. + (process_jvm_instruction): Use throwable_type_node for the type of + an exception class. + +2004-09-01 Andrew Haley + + * decl.c (java_init_decl_processing): Change + verify_identifier_node to "__verify". + * expr.c (add_type_assertion): Use verify_identifier_node for name. + * java-tree.h (verify_identifier_node): Change to "__verify". + + * expr.c (build_signature_for_libgcj): New function. + (add_type_assertion): Use it to construct signatures for + source_type and target_type. + +2004-08-27 Andrew Haley + + * java-tree.h (enum java_tree_index): Add JTI_VERIFY_IDENTIFIER_NODE. + (verify_identifier_node): New. + (TYPE_VERIFY_METHOD): New. + (struct type_assertion): New type. + * expr.c (type_assertion_eq): New function. + (type_assertion_hash): New function. + (add_type_assertion): New function. + (can_widen_reference_to): Call add_type_assertion(). + * decl.c (java_init_decl_processing): Add verify_identifier_node. + * class.c (make_class_data): Initialize TYPE_VERIFY_METHOD (type). + (finish_class): Output TYPE_VERIFY_METHOD (type). + + * decl.c (end_java_method): Nullify unused fields. + +2004-08-17 Andrew Haley + + * verify.c (defer_merging): Quieten. + * jcf-parse.c (load_class): Only try to open a class file if it's + java.lang.Object or if it's part of the current compilation. + Check that the class we just tried to load is the class we just + loaded. Quieten. + (java_parse_file): Set flag_verify_invocations off if we're + compiling from .class. + (parse_zip_file_entries): Abort if we try to read a dummy class. + * expr.c (can_widen_reference_to): Quieten. + (build_invokevirtual): Abort if we try to invokevirtual an + interface. + (expand_invoke): Don't build a non-interface call to an interface. + (build_instanceof): Don't do premature optimization if + flag_verify_invocations is not set. + * class.c (set_super_info): Disable code that inherits TYPE_DUMMY + from superclass. + (build_static_field_ref): Add correct type conversion for + field_address. + (add_miranda_methods): Disable generation of Miranda methods for + dummy classes. + (layout_class_method): Don't complain about non-static method + overrides static method with dummy classes. + +2004-08-13 Tom Tromey + + * class.c (build_static_field_ref): Re-enable atable lookups for + static fields. + + * parse.y (strip_out_static_field_access_decl): Indentation fix. + +2004-08-11 Tom Tromey + + * gcj.texi (libgcj Runtime Properties): Document new properties. + +2004-08-06 Andrew Haley + + * jcf-parse.c (load_class): Check that we really have loaded the + class we're looking for. + +2004-07-19 Andrew Haley + + * verify.c (verify_jvm_instructions): Comment change only. + + * typeck.c (build_java_array_type): Add size field to array name. + + * java-tree.h (LOCAL_SLOT_P): New. + (update_aliases): Add PC argument. + (pushdecl_function_level): New function. + + * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL, + MODIFY_EXPR, and SAVE_EXPR. + (java_gimplify_modify_expr): New function. + + * expr.c (push_type_0): Call find_stack_slot() to create temporary. + (expand_iinc): Pass PC to update_aliases(). + (STORE_INTERNAL): Likewise. + (process_jvm_instruction): Likewise. + + * decl.c (base_decl_map): New variable. + (uniq): New variable. + (update_aliases): Rewrite with more thorough checking. + (debug_variable_p): New function. + (push_jvm_slot): Don't initialize local variable. Don't pushdecl. + (check_local_named_variable): Delete whole function. + (initialize_local_variable): New function. + (check_local_unnamed_variable): Add checks and comments. + (find_local_variable): Rewrite. + (java_replace_reference): New function. + (function_binding_level): New variable. + (pushdecl_function_level): New function. + (maybe_pushlevels): Set DECL_LOCAL_END_PC. + (maybe_pushlevels): Call pushdecl() on each of the new decls. + (start_java_method): Reset uniq. Create base_decl_map. Set + function_binding_level. + (end_java_method): Null unused fields to save memory. + +2004-06-29 Andrew Haley + + * except.c (expand_start_java_handler): Push a new binding level. + Don't build a TRY_CATCH_EXPR now, we'll do it later. Call + register_exception_range() to register where we'll do it. + (expand_end_java_handler): Remove old bogus code. Replace with + new logic that simply builds TRY_CATCH_EXPRs and inserts them at + the top of the expression we're curently building. + (maybe_end_try): Delete. + * decl.c (binding_level.exception_range): New field. + (clear_binding_level): Add field exception_range. Reformat. + (poplevel): Call expand_end_java_handler(). + (poplevel): Call java_add_stmt only if functionbody is false. + (maybe_poplevels): Don't call maybe_end_try() from here. + (end_java_method): Clear no longer used trees in function decl. + (register_exception_range): New function. + * java-tree.h (register_exception_range, struct eh_range): Declare. + +2004-06-22 Andrew Haley + + * class.c (gen_indirect_dispatch_tables): Set the DECL_OWNER of + the otable. + * check-init.c (get_variable_decl): Teach check-init about + FIELD_DECLs addressed via the otable. + * jcf-parse.c (load_class): Check CLASS_LOADED_P, not + CLASS_PARSED_P. + +2004-05-28 Andrew Haley + + * jcf-parse.c (load_class): Don't try to read a class that we've + already read. + + * expr.c (build_invokeinterface): Use the old-fashioned way of + doing indirect dispatch: look up interfaces by name. + * java-tree.h (enum java_tree_index): Add + JTI_SOFT_LOOKUPINTERFACEMETHODBYNAME_NODE + * decl.c (java_init_decl_processing): Add + soft_lookupinterfacemethodbyname_node. + + * gjavah.c (print_method_info): Final methods have vtable entries, + so gjavah needs to output them. + * class.c (layout_class_method): Generate vtable entries for final + methods. + * parse.y (invocation_mode): Use INVOKE_VIRTUAL for indirect + dispatch, even if a method is final. + +2004-05-25 Andrew Haley + + * class.c (build_symbol_entry): Convert the names of constructors + to init_identifier_node when generating an entry for the indirect + dispatch table. + + * expr.c (build_known_method_ref): Generate indirect calls for + all methods marked DECL_EXTERNAL or TREE_PUBLIC. + +2004-05-24 Andrew Haley + + * expr.c (build_known_method_ref): Make sure ARRAY_REF access to + atable element is of the right type. + + * class.c (build_static_field_ref): Cast pointer to correct type + for field. + +2004-04-20 Bryce McKinlay + + * Merged with HEAD as of 20040514. Diff against + gcj-abi-2-merge-20040514. + +2004-04-16 Andrew Haley + + * verify.c (check_pending_block): Disable subroutine checks. + (defer_merging): New function. + (merge_types): If types are dummy, use defer_merging to combine them. + (verify_jvm_instructions): If invocation is invokeinterface and + target is dummy, assume target really is an interface. + + * parse.y (patch_invoke): Break out call to java_create_object. + + * lang.c (flag_verify_invocations): New. + + * jcf-parse.c (load_class): If we've already failed to load a + class, don't try again. + (load_class): If we can't find a .class file, don't fail, but emit + a warning. + (parse_class_file): Don't act on dummy methods. + + * java-tree.h (flag_verify_invocations): New. + (TYPE_DUMMY): New. + (lang_type.dummy_class): New field. + (java_create_object): New function. + (METHOD_DUMMY): New. + + * expr.c (build_field_ref): Widen field offset. + (pop_type_0): If the type in stack_type_map is a TREE_LIST, check + that each of its elements is compatible with the one we're + popping. + (pop_type_0): Issue a warning to say that we need to generate a + runtime check. + (java_create_object): New function. + (build_field_ref): Only generate hard refs if we're not using + indirect dispatch. + (expand_java_field_op): If we're using !verify_invocations and we + see a missing field, generate a decl for it. + + (expand_invoke): If a class doesn't have the method we seek and + we're using !flag_verify_invocations, generate a decl for the + method now. + + (build_known_method_ref): Always use indirect dispatch via the + atable for static methods. + + (expand_java_NEW): Break out object creation into new function, + java_create_object. + + (can_widen_reference_to): Issue a warning to say that we need to + generate a runtime check. + + * class.c (set_super_info): Inherit TYPE_DUMMY from sureclass. + (make_method_value): Also use index for interfaces. + (make_class_data): Skip dummy field for inherited data. + Don't build method array for dummy methods. + Set size_in_byte to -1 when using inirect dispatch + Don't build a hard class ref if we don't have a hard ref to our + superclass, or if we're using inirect dispatch. + Null out dispatch tables. + + (layout_class_method): Don't complain about non-static method + overrides static method is method is artificial. + + (build_static_field_ref): Disable atable references to static + fields for the time being. + + (layout_class_methods): Check for CLASS_INTERFACE as + well as CLASS_ABSTRACT. + +2004-11-24 Steven Bosscher + + * class.c (make_class_data): Don't check flag_inline_functions. + * lang.c (flag_really_inline): Remove unused flag. + (java_handle_option): Don't set it here. Remove special handling + of flag_inline_functions for Java. + (java_init): Don't set flag_inline_trees here. Already done... + (java_post_options): ...here. Don't clear flag_inline_functions. + +2004-11-24 Steven Bosscher + + * java-gimplify.c (java_gimplify_labeled_block_expr): New function. + (java_gimplify_exit_block_expr): New function. + (java_gimplify_expr): Use them to gimplify EXIT_BLOCK_EXPR and + LABELED_BLOCK_EXPR. + * java-tree.def (LABELED_BLOCK_EXPR): Moved from tree.def. + (EXIT_BLOCK_EXPR): Likewise. + * java-tree.h (LABELED_BLOCK_LABEL): Moved from tree.h. + (LABELED_BLOCK_BODY): Likewise. + (EXIT_BLOCK_LABELED_BLOCK): Likewise. + * jcf-write.c (generate_bytecode_insns): Don't handle the unused + EXIT_BLOCK_RETURN operand. Use EXIT_BLOCK_LABELED_BLOCK instead of + TREE_OPERAND. + * lang.c (java_tree_inlining_walk_subtrees): Handle EXIT_BLOCK_EXPR. + (java_dump_tree): Use LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, and + EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND. Don't handle the + second operand of EXIT_BLOCK_EXPR. + * parse.y (find_expr_with_wfl): Use LABELED_BLOCK_BODY instead of + TREE_OPERAND. + (build_bc_statement): Use build1 to build EXIT_BLOCK_EXPR nodes. + +2004-11-23 Ben Elliston + + * xref.h (xref_flag_value): Remove. + (xref_set_data, xref_get_data): Likewise. + (xref_set_current_fp): Likewise. + (XREF_NONE): Likewise. + (XREF_GET_DATA): Likewise. + * xref.c (xref_flag_value): Remove. + (xref_set_data, xref_get_data): Likewise. + (xref_set_current_fp): Likewise. + +2004-11-23 Ben Elliston + + * gjavah.c (output_directory): Make static. + (temp_directory): Likewise. + +2004-11-15 Tom Tromey + + * decl.c (instn_ptr_type_node): Removed. + (lineNumbers_ptr_type_node): Removed. + (jint_type): Removed. + (jint_ptr_type): Removed. + +2004-11-09 Andrew Pinski + + PR java/15576 + * check-init.c (check_init): Ignore DECL_EXPR. + * expr.c (always_initialize_class_p): Reenable. + (build_class_init): Use a variable to store the decl. Also use + boolean_false_node instead of integer_zero_node. + * parse.y (attach_init_test_initialization_flags): Add a decl_expr + to the block. + +2004-11-08 Tom Tromey + + PR java/16843: + * gjavah.c (HANDLE_END_FIELD): Call print_field_info when + generating a JNI header. + (print_field_info): Handle JNI headers. + (jni_print_float): Likewise. + (jni_print_double): Likewise. + +2004-11-08 Andrew Pinski + + * decl.c (end_java_method): Remove duplicated code. + +2004-11-06 Zack Weinberg + Gerald Pfeifer + + * lex.h (HAVE_ICONV): Undefine if we do not have HAVE_ICONV_H + as well. + +2004-11-02 Bryce McKinlay + + PR java/17265 + * class.c: Reinstate 2004-08-18 patch. + (make_local_function_alias): Don't create an alias for extern (native) + functions. + +2004-10-22 Eric Botcazou + + PR java/17265 + * class.c (make_local_function_alias): Revert 2004-08-18 change. + (make_method_value): Likewise. + +2004-10-21 Andrew Haley + + PR java/18091: + * jcf-parse.c (set_source_filename): Add code to build new sfname. + +2004-10-20 Andrew Haley + + * decl.c (end_java_method): Don't expand if flag_syntax_only. + Remove duplicated code block. + +2004-10-18 Steven Bosscher + + * Make-lang.in (java/parse.o-warn, java/parse-scan.o-warn): + New rules to work around old Bison warnings. + +2004-10-17 Steven Bosscher + + * class.c (ident_subst): Always alloca buffer. + * java-opcodes.h (LAST_AND_UNUSED_JAVA_OPCODE): Add this dummy + opcode after including javaop.def. + * jcf-dump.c (CHECK_PC_IN_RANGE): Return 0 from the arm of the + conditional expression that exits, to avoid warnings. + * verify.c (CHECK_PC_IN_RANGE): Mark the __GNUC__ definition as + a user of an extension. + * win32-host.c: Move check down to have non-empty file when + WIN32 is not defined. + + * Make-lang.in (java-warn): Add STRICT_WARN. + (java/jcf-io.o-warn): Don't have Werror for this file. + * jcf-io.c (caching_stat): Add FIXME for non-POSIX scandir use. + +2004-10-16 Hans-Peter Nilsson + + * expr.c (expr_add_location): Move declaration to before all + statements. + * parse.y (java_expand_classes): Ditto. + * lex.c (java_peek_unicode): Ditto. + +2004-10-16 Ranjit Mathew + + * check-init.c: Use %<, %> and %q for quoting in diagnostics, + if possible, else convert `foo' to 'foo'. + * class.c: Likewise. + * decl.c: Likewise. + * expr.c: Likewise. + * jcf-io.c: Likewise. + * jcf-parse.c: Likewise. + * lang.c: Likewise. + * lex.c: Likewise. + * parse.h: Likewise. + +2004-10-16 Ranjit Mathew + + * parse.y (parse_warning_context): Remove ATTRIBUTE_PRINTF_2 and + rename parameter 'msg' to 'msgid' in function declaration. + (issue_warning_error_from_context): Likewise. + (yyerror): Rename parameter 'msg' to 'msgid'. + (all over): Use new quoting style for diagnostics. + +2004-10-15 Kazu Hirata + + * boehm.c, builtins.c, java-except.h, jcf-io.c, jcf-path.c, + jcf.h, lang-specs.h, lex.c, lex.h, resource.c, win32-host.c: + Update copyright. + +2004-10-14 Matt Austern + + * lang.c (java_tree_inlining_walk_subtrees): Last arg is struct + pointer_set_t* now. + +2004-10-13 Tom Tromey + + PR java/15578: + * lang.opt (--extdirs): Document. + * jvspec.c (lang_specific_driver): Recognize -encoding and + -extdirs. + +2004-10-06 Ulrich Weigand + + * parse.y (issue_warning_error_from_context): Use va_list * + instead of va_list parameter. + (parse_error_context): Update call. + (parse_warning_context): Likewise. + +2004-10-05 Zack Weinberg + + * parse.y, parse-scan.y: Add list of diagnostic messages to + insulate translation template from version of yacc/bison used + to compile the grammar. + +2004-10-05 Ranjit Mathew + + Prepare for %q, %< and %> in diagnostic message strings. + * java-tree.h (parse_error_context): remove ATTRIBUTE_PRINTF_2. + Name second parameter 'msgid'. + * parse.y: Additionally include pretty-print.h and diagnostic.h. + (issue_warning_error_from_context): Use pretty-printer functions + instead of vsprintf for constructing formatted messages. Rename + parameter 'msg' to 'msgid'. + (parse_error_context): Rename parameter 'msg' to 'msgid'. + (parse_warning_context): Likewise. + +2004-10-05 Andrew Haley + + PR java/17779 + * jcf-parse.c (parse_zip_file_entries): If a class has a + superclass and a TYPE_SIZE of zero, lay it out. + +2004-09-30 Andrew Haley + + PR java/17733 + * jcf-parse.c (compute_class_name): Rewrite. + +2004-10-01 Jan Hubicka + + * java.c (java_expand_body): Update call of tree_rest_of_compilation. + +2004-10-01 Kazu Hirata + + * lex.c: Fix a comment typo. + +2004-10-01 Kazu Hirata + + * java-tree.h: Fix a comment typo. + +2004-09-30 Per Bothner + + Simplify lexer. Implement --enable-mapped-location support. + * jcf-parse.c (parse_class_file): Use linemap_line_start. + (parse_source_file_1): Pass filename as extra parameter, so we can call + linemap_add and set input_location here, rather than in both callers. + (read_class): Pass copied filename to parse_source_file_1. + Don't initialize wfl_operator - only needed for source compilation. + (read_class, jcf_parse): Call linemap_add with LC_LEAVE. + * lex.h: Remove a bunch of debugging macros. + * lex.h (struct_java_line, struct java_error): Remove types. + (JAVA_COLUMN_DELTA): Remove - use java_lexer.next_colums instead. + (struct java_lc_s): Remove prev_col field. + (struct java_lexer): New fields next_unicode, next_columns, and + avail_unicode. New position field, and maybe token_start field. + Don't need hit_eof field - use next_unicode == -1 instead. + (JAVA_INTEGERAL_RANGE_ERROR): Rename to JAVA_RANGE_ERROR. + (JAVA_RANGE_ERROR, JAVA_FLOAT_ANGE_ERROR): Update accordingly. + * parse.h: Various changes for USE_MAPPED_LOCATION. + (EXPR_WFL_EMIT_LINE_NOTE): XXX + (BUILD_EXPR_WFL, EXPR_WFL_ADD_COL): Remove no-longer-used macros. + (struct parser_ctxt): New file_start_location field. + Remove p_line, c_line fields since we no longer save lines. + Remove elc, lineno, and current_jcf fields - no longer used. + * parse.y: Updates for USE_MAPPED_LOCATION and new lexer. + Don't use EXPR_WFL_ADD_COL since that isn't trivial with + source_location and is probably not needed anymore anyway. + Use new expr_add_Location function. + (SET_EXPR_LOCATION_FROM_TOKEN): New convenience macro. + (java_pop_parser_context): Minor cleanup. + (java_parser_context_save_global, java_parser_context_restore_global, + java_pop_parser_context): Save/restore input_location as a unit. + (issue_warning_error_from_context): If USE_MAPPED_LOCATION take + a source_location instead of a wfl context node. + (check_class_interface_creation): input_filename is not addressable. + (create_artificial_method): Calling java_parser_context_save_global + and java_parser_context_restore_global is overkill. Instead, + temporarily set input_location from class decl. + (java_layout_seen_class_methods): Set input_location from method decl. + (fix_constructors): Make more robust if no EXPR_WITH_FILE_LOCATION. + (finish_loop_body): Likewise. + * lex.c: Updates for USE_MAPPED_LOCATION. Use build_unknwon_wfl. + (java_sprint_unicode): Take a character, not index in line. + (java_sneak_uncode): Replaced by java_peek_unicode. + (java_unget_unicode): No longer used. + (java_allocate_new_line. java_store_unicode): Removed, since we + no longer remember "lines". + (java_new_lexer): Update for new data structures. + (java_read_char): Move unget_value checking to java_read_unicode. + (java_get_unicode, java_peek_unicode, java_next_unicode): New more + efficient functions that are used directly when lexing. + (java_read_unicode_collapsing_terminators): No longer needed. + (java_parse_end_comment, java_parse_escape_sequence, do_java_lex): + Re-organize to use java_peek_unicode to avoid java_unget_unicode. + (java_parse_escape_sequence): Rewrite to be simpler / more efficient. + (do_java_lex): Lots of movings around to avoid java_unget_unicode, + combine switch branches, and test for common token kinds earlier. + (java_lex_error): Rewrite. + * jv-scan.c (expand_location): New function, copied from tree.c. + (main): Set ctxp->filename instead of setting input_filename directly. + +2004-09-30 Per Bothner + + More cleanup for --enable-mapped-location. + * class.c (push_class): If USE_MAPPED_LOCATION don't set + input_location here. Instead do it in give_name_to_class. + (build_class_ref): Set DECL_ARTIFICIAL, for the sake of dwarf2out. + * expr.c (expand_byte_code): Call linemap_line_start. + * expr.c (build_expr_wfl): If USE_MAPPED_LOCATION, change final + parameters to a source_location. Don't need EXPR_WFL_FILENAME_NODE. + (expr_add_location): New function, if USE_MAPPED_LOCATION. + * class.c (maybe_layout_super_class): Adjust build_expr_wfl call + to USE_MAPPED_LOCATION case. + + * java-tree.h (JAVA_FILE_P, ZIP_FILE_P): Remove unused macros. + * jcf-parse.c (java_parse_file): Don't set input_filename. + Use IS_A_COMMAND_LINE_FILENAME_P to check for duplicate filenames. + Create a list of TRANSLATION_UNIT_DECL. + (current_file_list): Is now a TRANSLATION_UNIT_DECL chain. The + reason is so we can set a DECL_SOURCE_LOCATION for each file. + (java_parse_file): Don't set unused ZIP_FILE_P, JAVA_FILE_P.. + Create line-map LC_ENTER/LC_LEAVE entries for archive itself. + (file_start_location): New static. + (set_source_filename): Avoid extra access to input_filename macro. + Concatenate new name with class's package prefix. + (set_source_filename, give_name_to_class): Update. + (give_name_to_class): Set class's "line 0" input_location here. + (parse_class_file): Set input_location as a unit. + + * jcf-parse.c (load_class): Sanity test if missing inner class file. + +2004-09-29 Per Bothner + + * java-tree.h: Redefine some macros and add some declaration + to handle the USE_MAPPED_LOCATION case. + * parse.h (EXPR_WFL_QUALIFICATION): Use operand 1, not 2. + * java-tree.h (EXPR_WFL_FILENAME_NODE): Use operand 2, not 1. + * java-tree.def (EXPR_WITH_FILE_LOCATION): Only need two operands in + USE_MAPPED_LOCATION case, since EXPR_WFL_FILENAME_NODE is gone. + + * check-init.c (check_init): Handle USE_MAPPED_LOCATION case. + * decl.c (finish_method, java_add_stmt): Likewise. + * java-gimplify.c (java-gimplify.c): Likewise. + * jcf-write.c (generate_bytecode_insns): Likewise. + * lang.c (java_post_options): Likewise - call linemap_add. + +2004-09-29 Andrew Haley + + PR java/17007 + * parse.y (patch_binop): Don't mess with the TREE_SIDE_EFFECTS of the + result of TRUNC_MOD_EXPR. + (patch_unaryop): Likewise for CONVERT_EXPR, which may throw. + * decl.c (java_init_decl_processing): Mark + soft_lookupinterfacemethod_node and soft_instanceof_node pure. + +2004-09-28 Tom Tromey + + PR java/15710: + * class.c (add_miranda_methods): Load superinterface if not + already loaded. + +2004-09-28 Andrew Haley + + PR java/17586 + * jcf-parse.c (load_class): Don't try to read a class that we've + already read. + +2004-09-28 Andrew Haley + + * jcf-parse.c (load_class): Back out previous broken patch. + +2004-09-28 Andrew Haley + + PR java/17586 + * jcf-parse.c (load_class): Don't try to read a class that we've + already read. + Check that we really did read the right class. + +2004-09-25 Tom Tromey + + PR java/17500: + * parse.y (create_artificial_method): Use add_method_1. + +2004-09-25 Kazu Hirata + + * expr.c, jcf-dump.c, parse-scan.y, parse.y: Fix + comment typos. + * gcj.texi: Fix typos. + +2004-09-24 Tom Tromey + + PR java/15656: + * parse.y (class_instance_creation_expression): Set `$$' to NULL + in error parts of rule. + (unary_expression): Don't call error_if_numeric_overflow when $1 + is NULL. + +2004-09-24 Tom Tromey + + PR java/16789: + * parse.y (resolve_qualified_expression_name): Set + CAN_COMPLETE_NORMALLY on first call when chaining static calls. + * expr.c (force_evaluation_order): Check for empty argument list + after stripping COMPOUND_EXPR. + +2004-09-23 Andrew Haley + + PR java/16927: + * parse.y (java_complete_lhs): Call patch_string() on Operand 1 of + COND_EXPRs. + +2004-09-23 Tom Tromey + + PR java/17329: + * java-gimplify.c (java_gimplify_expr) : Ignore case + where operand is null. + +2004-09-23 Tom Tromey + + PR java/17380: + * parse.y (not_accessible_p): Allow access to protected members + even when class is not static. + +2004-09-22 Kelley Cook + + * Make-lang.in: Revert the gcc-none.o change. + +2004-09-22 Nathan Sidwell + + * parse.y (patch_anonymous_class): VEC_space returns true if there + is space. + +2004-09-21 Matt Austern + + Fix bootstrap. + * gjavah.c (free_method_name_list): Fix function definition so + it's a proper C prototype. + +2004-09-21 Tom Tromey + + PR java/17575: + * gjavah.c (free_method_name_list): New method. + (main): Call it. + +2004-09-17 Jeffrey D. Oldham + Zack Weinberg + + * java-tree.def: Use tree_code_class enumeration constants + instead of code letters. + * java-gimplify.c, jcf-write.c, lang.c, parse.y: Update for + new tree-class enumeration constants. + +2004-09-13 Tom Tromey + + PR java/17216: + * class.c (layout_class_method): Put synthetic methods into the + vtable. + +2004-09-11 Andrew Pinski + + * Make-lang.in (java/ggc-none.c): Change dependency + for ggc.h into $(GGC_H). + +2004-09-11 Mohan Embar + + * Make-lang.in (java/win32-host.o): Add dependency on + coretypes.h. + * win32-host.c: Add includes for coretypes.h, jcf.h + +2004-09-11 Mohan Embar + + * Make-lang.in (GCJH_OBJS): Change dependency from + ggc-none.o to java/ggc-none.o + (JCFDUMP_OBJS): Likewise. + (java/ggc-none.o): New target. + +2004-08-25 Nathan Sidwell + + * boehm.c (get_boehm_type_descriptor): Adjust build_int_cst calls. + * class.c (build_utf8_ref, build_static_field_ref, + make_field_value, make_method_value, get_dispatch_table, + make_class_data, emit_symbol_table, emit_catch_table): Likewise. + * constants.c (get_tag_node, build_ref_from_constant_pool, + build_constants_constructor): Likewise. + * decl.c (java_init_decl_processing): Likewise. + * expr.c (build_java_array_length_access, build_newarray, + expand_java_multianewarray, expand_java_pushc, expand_iinc, + build_java_binop, build_field_ref, expand_java_add_case, + expand_java_call, build_known_method_ref, build_invokevirtual, + build_invokeinterface, build_jni_stub): Likewise. + * java-gimplify.c (java_gimplify_new_array_init): Likewise. + * jcf-parse.c (get_constant): Likewise. + * lex.c (do_java_lex): Likewise. + * parse.y (patch_binop, patch_unaryop, patch_cast, + build_newarray_node, patch_newarray): Likewise. + * resource.c (compile_resource_data): Likewise. + * typeck.c (build_prim_array_type): Likewise. + +2004-08-24 Nathan Sidwell + + * decl.c (java_init_decl_processing): Adjust + initialize_sizetypes call. + +2004-08-23 Nathan Sidwell + + * jv-scan.c (fancy_abort): Add. + +2004-08-20 Nathan Sidwell + + * expr.c (build_java_arrayaccess): Use convert to change + len's type. + +2004-08-19 Bryce McKinlay + + * class.c (make_local_function_alias): Allocate extra space for 'L' + in name buffer. Reported by Thomas Neumann. + +2004-08-19 Nathan Sidwell + + * parse.h (JAVA_RADIX10_FLAG): Rename to ... + (JAVA_NOT_RADIX10_FLAG): ... here. Invert meaning. + * lex.c (do_java_lex): Adjust. + (error_if_numeric_overflow): Likewise. + +2004-08-18 Andrew Pinski + + * class.c (make_local_function_alias): Only make a new decl if we + support alias attribute on all decls. + +2004-08-18 Bryce McKinlay + + * class.c (make_local_function_alias): New function. Create local + alias for public method DECL. + (make_method_value): Use make_local_function_alias. + * parse.y (craft_constructor): Don't special-case anonymous classes. + Always set ctor_name to init_identifier_node. + (lookup_method_invoke): Call layout_class_method when creating + anonymous class constructor. + +2004-08-18 Richard Henderson + + * java-gimplify.c (java_gimplify_expr): Move '2' handling into + default case. Treat '<' similarly. Update for + is_gimple_formal_tmp_var name change. + +2004-08-17 Andrew Haley + + * lang.c (lang_printable_name): Obey verbose flag. + * parse.y (constructor_circularity_msg): Set VERBOSE arg for + lang_printable_name(). + (verify_constructor_circularity, get_printable_method_name, + check_abstract_method_definitions, java_check_regular_methods, + java_check_abstract_methods, check_inner_class_access, + fix_constructors, patch_method_invocation, patch_return): + Likewise. + * expr.c (pop_type_0): Likewise. + + * java-tree.h (lang_printable_name_wls): Delete. + +2004-08-16 Tom Tromey + + PR java/8473: + * parse.y (primary): Changed for initialized and uninitialized + array creations. + (array_access): Handle array_creation_initialized. + (array_creation_expression): Split into + array_creation_initialized and array_creation_uninitialized. + +2004-08-16 Andrew Haley + + * jcf-write.c (find_constant_index): Canonicalize NaNs when + generating bytecode. + +2004-08-16 Elliot Lee + + PR java/9677 + * jcf-parse.c (java_parse_file): Handle filenames with embedded + spaces, and quoted filelists. + +2004-08-15 Nathan Sidwell + + * boehm.c (get_boehm_type_descriptor): Use build_int_cst. + * class.c (build_utf8_ref, build_static_field_ref, + make_field_value, make_method_value, get_dispatch_table, + make_class_data, emit_symbol_table, emit_catch_table): Likewise. + * constants.c (get_tag_node, build_ref_from_constant_pool, + build_constants_constructor): Likewise. + * decl.c (java_init_decl_processing): Likewise. + * expr.c (build_java_array_length_access, build_newarray, + expand_java_multianewarray, expand_java_pushc, expand_iinc, + build_java_binop, build_field_ref, expand_java_add_case, + expand_java_call, build_known_method_ref, build_invokevirtual, + build_invokeinterface, build_jni_stub): Likewise. + * java-gimplify.c (java_gimplify_new_array_init): Likewise. + * jcf-parse.c (get_constant): Likewise. + * lex.c (do_java_lex): Likewise. + * parse.y (patch_binop, patch_unaryop, patch_cast, + build_null_of_type, patch_newarray): Likewise. + * resource.c (compile_resource_data): Likewise. + * typeck.c (build_prim_array_type): Likewise. + +2004-08-10 Bryce McKinlay + + * java-gimplify.c (java_gimplify_new_array_init): Use create_tmp_var. + Don't create BLOCK here or call java_gimplify_block. + +2004-08-09 H.J. Lu + + * java-tree.h (flag_deprecated): Removed. + * lang.opt (Wdeprecated): Use existing Var(warn_deprecated). + * parse.y (check_deprecation): Check warn_deprecated instead of + flag_deprecated. + +2004-08-06 Kelley Cook + + * lang.c (flag_emit_class_files, flag_filelist_file, flag_redundant, + flag_use_divide_subroutine, flag_use_boehm_gc, flag_store_check, + flag_hash_synchronization, flag_assert, flag_jni, flag_newer, + flag_check_references, flag_extraneous_semicolon, flag_deprecated, + flag_force_classes_archive_check, flag_optimize_sci, + flag_indirect_dispatch): Remove explicit declarations. + * lang.opt: Add implicit declare/define/assign. Remove obsolete + final comment. + +2004-08-05 Michael Chastain + + PR bootstrap/14893 + * Make-lang.in (java.install-man): Install from either build + tree or source tree, whichever has the file first. + +2004-08-05 Nathan Sidwell + + * jcf-parse.c (get_constant): Adjust force_fit_type call. + * lex.h (SET_LVAL_NODE_TYPE): Remove. + * lex.c (java_perform_atof): Use SET_LVAL_NODE directly. + (do_java_lex): Likewise. Adjust force_fit_type call. + +2004-08-04 Roger Sayle + Andrew Haley + + * typeck.c (convert_ieee_real_to_integer): Call fold on the range + checking trees as they're being built. + (convert): Call convert_ieee_real_to_integer if we're + converting a constant, even if we're writing a class file. + +2004-08-02 Bryce McKinlay + + PR java/16701 + * parse.y (fold_constant_for_init): Call resolve_field_access with + correct current_class context. + +2004-08-01 Roger Sayle + + * decl.c (update_aliases, initialize_local_variable): Replace calls + to build with calls to buildN. + * java-gimplify.c (java_gimplify_modify_expr): Likewise. + * java-tree.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Likewise. + * parse.h (BUILD_THROW): Likewise. + * parse.y (switch_expression, synchronized_statement, + catch_clause_parameter, array_creation_expression, + conditional_expression, make_qualified_name, + resolve_qualified_expression_name, patch_method_invocation, + patch_invoke, build_method_invocation, build_new_invocation, + build_assignment, patch_assignment, build_binop, patch_binop, + build_string_concatenation, build_incdec, patch_unaryop, + patch_cast, build_array_ref, build_newarray_node, patch_newarray, + patch_return, build_if_else_statement, build_labeled_block, + build_new_loop, build_loop_body, build_bc_statement, + build_assertion, encapsulate_with_try_catch, build_try_statement, + build_try_finally_statement, patch_synchronized_statement, + emit_test_initialization): Likewise, replace build with buildN. + +2004-07-28 Eric Christopher + + * lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete. + (java_unsafe_for_reeval): Ditto. + +2004-07-26 + + * parse.y (build_super_invocation): Adjust declaration order to + avoid declaration after statement. + +2004-07-25 Bernardo Innocenti + + * decl.c: Rename all identifiers named `class' to `cl'. + +2004-07-25 Richard Henderson + + * decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P. + +2004-07-23 Mike Stump + + * boehm.c (set_bit): Improve type safety wrt unsignedness. + * gjavah.c (throwable_p, decode_signature_piece, + print_full_cxx_name, print_include, add_namelet, add_class_decl, + process_file): Likewise. + * jcf-dump.c (main): Likewise. + * jcf-io.c (read_zip_member): Likewise. + * jcf-parse.c (HANDLE_CONSTANT_Utf8, get_constant, + give_name_to_class, get_class_constant): Likewise. + * jcf-write.c (find_constant_wide, push_long_const, + generate_classfile): Likewise. + * lex.c (java_new_lexer, java_read_char, cxx_keyword_p): Likewise. + * parse.y (read_import_dir): Likewise. + * typeck.c (parse_signature_type): Likewise. + * verify.c (verify_jvm_instructions): Likewise. + * zextract.c (find_zip_file_start, read_zip_archive): Likewise. + +2004-07-23 Thomas Fitzsimmons + + * Make-lang.in: Replace rmic and rmiregistry references with + grmic and grmiregistry. + * gcj.texi: Likewise. + +2004-07-20 Andrew Haley + + PR java/16431. + * verify.c (verify_jvm_instructions): Comment change only. + + * typeck.c (build_java_array_type): Add size field to array name. + + * java-tree.h (LOCAL_SLOT_P): New. + (update_aliases): Add PC argument. + (pushdecl_function_level): New function. + + * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL, + MODIFY_EXPR, and SAVE_EXPR. + (java_gimplify_modify_expr): New function. + + * expr.c (push_type_0): Call find_stack_slot() to create temporary. + (expand_iinc): Pass PC to update_aliases(). + (STORE_INTERNAL): Likewise. + (process_jvm_instruction): Likewise. + + * decl.c (base_decl_map): New variable. + (uniq): New variable. + (update_aliases): Rewrite with more thorough checking. + (debug_variable_p): New function. + (push_jvm_slot): Don't initialize local variable. Don't pushdecl. + (check_local_named_variable): Delete whole function. + (initialize_local_variable): New function. + (check_local_unnamed_variable): Add checks and comments. + (find_local_variable): Rewrite. + (java_replace_reference): New function. + (function_binding_level): New variable. + (pushdecl_function_level): New function. + (maybe_pushlevels): Set DECL_LOCAL_END_PC. + (maybe_pushlevels): Call pushdecl() on each of the new decls. + (start_java_method): Reset uniq. Create base_decl_map. Set + function_binding_level. + (end_java_method): Null unused fields to save memory. + +2004-07-20 Nathan Sidwell + + * class.c (add_interface_do): Remove. + (set_super_info, interface_of_p, maybe_add_interface, + add_interface, make_class_data, layout_class, + add_miranda_methods): Adjust BINFO accessors and addition. + * expr.c (can_widen_reference_to, lookup_field): Adjust BINFO + accessors. + * jcf-write.c (generate_classfile): Likewise. + * parse.y (patch_anonymous_class, check_inner_circular_reference, + check_circular_reference, java_complete_class, + check_abstract_method_definitions, + java_check_abstract_method_definitions, + check_interface_throws_clauses, java_check_abstract_methods, + lookup_java_interface_method2, + find_applicable_accessible_methods_list): Adjust BINFO accessors + and addition. + * typeck.c (find_method_in_interfaces): Adjust BINFO accessors. + +2004-07-18 Roger Sayle + + * builtins.c (max_builtin, min_builtin, + java_build_function_call_expr): Replace calls to build with buildN. + * class.c (build_class_ref, build_static_field_ref, + get_dispatch_table, make_class_data, layout_class_method): Likewise. + * constants.c (build_ref_from_constant_pool): Likewise. + * decl.c (update_aliases, push_jvm_slot, poplevel, finish_method, + add_stmt_to_compound): Likewise. + * except.c (build_exception_object_ref, expand_end_java_handler): + Likewise. + * java-gimplify.c (java_gimplify_case_expr, + java_gimplify_default_expr, java_gimplify_block, + java_gimplify_new_array_init, java_gimplify_try_expr): Likewise. + * jcf-write.c (generate_bytecode_insns): Likewise. + * typeck.c (convert_ieee_real_to_integer): Likewise. + +2004-07-17 Joseph S. Myers + + * java-tree.h (builtin_function): Declare. + +2004-07-16 Steven Bosscher + + * parse.y (java_complete_expand_methods, java_expand_classes): Don't + abuse restore_line_number_status. + +2004-07-15 Frank Ch. Eigler + + g++/15861 + * jcf-parse.c (java_emit_static_constructor): Specify default + priority. + +2004-07-13 Per Bothner + + * java-tree.h (all_class_filename): Remove useless macro. + (enum java_tree_index): Remove JTI_ALL_CLASS_FILENAME constant. + (BUILD_FILENAME_IDENTIFIER_NODE): Remove useless macro. + * parse.y (java_parser_context_restore_global): Replace + BUILD_FILENAME_IDENTIFIER_NODE by plain get_identifier. + * jcf-parse.c (read_class, java_parse_file): Likewise. + +2004-07-12 Bryce McKinlay + + PR java/16474 + gjavah.c (print_field_info): Emit constant only if field is static. + +2004-07-11 Roger Sayle + + * expr.c (java_truthvalue_conversion, flush_quick_stack, + java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr, + build_java_ret, build_java_throw_out_of_bounds_exception, + build_java_array_length_access, java_check_reference, + build_java_arrayaccess, build_java_arraystore_check, build_newarray, + build_anewarray, expand_java_multianewarray, expand_java_arraystore, + expand_java_arrayload, build_java_monitor, expand_java_return, + expand_load_internal, expand_java_NEW, build_get_class, + build_instanceof, expand_java_CHECKCAST, expand_iinc, + build_java_soft_divmod, build_java_binop, build_field_ref, + expand_compare, expand_java_goto, expand_java_switch, + expand_java_add_case, build_class_init, build_known_method_ref, + invoke_build_dtable, build_invokevirtual, build_invokeinterface, + expand_invoke, build_jni_stub, expand_java_field_op, + java_expand_expr, expand_byte_code, STORE_INTERNAL, + force_evaluation_order, emit_init_test_initialization): Convert + calls to "build" into calls to the prefered "buildN" functions. + +2004-07-11 Joseph S. Myers + + * java-tree.h (set_block): Remove. + * lang.c (java_clear_binding_stack): New. + (LANG_HOOKS_CLEAR_BINDING_STACK): Define. + * decl.c (struct binding_level): Remove this_block. + (clear_binding_level): Likewise. + (poplevel): Don't handle this_block. + (set_block): Remove. + +2004-07-10 Bryce McKinlay + + * class.c (common_enclosing_context_p): Remove statement with no + side-effects. + +2004-07-09 Bryce McKinlay + + PR java/8618 + * parse.y (create_anonymous_class): Remove 'location' argument. Use + the WFL from TYPE_NAME to get line number for the decl. Fix comment. + (craft_constructor): Inherit access flags for implicit constructor + from the enclosing class. + (create_class): Fix comment typo. + (resolve_qualified_expression_name): Pass type of qualifier to + not_accessible_p, not the type in which target field was found. + (not_accessible_p): Handle inner classes. Expand protected + qualifier-subtype check to enclosing instances, but don't apply this + check to static members. Allow protected access to inner classes + of a subtype. Allow private access within common enclosing context. + (build_super_invocation): Get WFL line number info from current + class decl. + (build_incomplete_class_ref): Update for new create_anonymous_class + signature. + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Use + common_enclosing_instance_p. + * class.c (common_enclosing_context_p): New. Determine if types + share a common enclosing context, even across static contexts. + (common_enclosing_instance_p): Renamed from + common_enclosing_context_p. Determines if types share a common + non-static enclosing instance. + * java-tree.h (common_enclosing_instance_p): Declare. + * jcf-write.c (get_method_access_flags): New. Surpress private flag + for inner class constructors. + (generate_classfile): Use get_method_access_flags. + +2004-07-09 Bryce McKinlay + + * class.c (interface_of_p): Check for null TYPE_BINFO. + +2004-07-09 Nathan Sidwell + + * class.c (make_class): Do not create binfo here. + (set_super_info): Create it here. + * java-tree.h (CLASS_HAS_SUPER): Cope with lack of a binfo. + +2004-07-08 Richard Henderson + + * expr.c (case_identity, get_primitive_array_vtable, + java_expand_expr, emit_init_test_initialization): Remove. + * java-tree.h (java_expand_expr): Remove. + * lang.c (LANG_HOOKS_EXPAND_EXPR): Remove. + +2004-07-07 Per Bothner + + * class.c (build_static_field_ref): Add a NOP_EXPR; otherwise we + get internal error due to mismatched types. + + * gcj.texi (Invoking gij): Document new -verbose:class flag. + + * gcj.texi (Linking): New node. Document -lgij usage. + +2004-07-07 Nathan Sidwell + + * java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros. + (TYPE_NVIRTUALS, TYPE_VTABLE): Likewise. + * java/class.c (set_super_info, class_depth, interface_of_p, + maybe_add_interface, add_interface, make_class_data, + layout_class, add_miranda_methods): Adjust BINFO macros. + * expr.c (can_widen_reference_to, lookup_field): Likewise. + * jcf-write.c (generate_classfile): Likewise. + * parse.y (patch_anonymous_class, + check_inner_circular_reference, check_circular_reference, + java_complete_class, check_abstract_method_definitions, + java_check_abstract_method_definitions, + check_interface_throws_clauses, java_check_abstract_methods, + lookup_java_interface_method2, + find_applicable_accessible_methods_list): Likewise. + * typeck.c (find_method_in_interface): Likewise. + * verify.c (merge_types): Likewise. + +2004-07-06 Nathan Sidwell + + * java-tree.h (CLASS_HAS_SUPER_FLAG): Use BINFO_FLAG_1. + * class.c (add_interface_do): Use BINFO_VIRTUAL_P. + +2004-07-05 Nathan Sidwell + + * class.c (make_class): Use make_tree_binfo. + (set_super_info, add_interface_do): Likewise. + * java-tree.h (CLASS_HAS_SUPER_FLAG): Expect a BINFO. + +2004-07-04 Ranjit Mathew + + * verify.c: Correct array element access formatting thinko. + +2004-07-04 Ranjit Mathew + + * verify.c: Insert a short blurb at the start referring to the JVMS. + (merge_type_state): Remove redundant nested if statement. + (verify_jvm_instructions): Ensure current_subr is initialised to + NULL_TREE. + Minor formatting fixes all over the place. + +2004-07-02 Richard Henderson + + * jcf-write.c (generate_bytecode_insns ): Rewrite. + +2004-07-01 Richard Henderson + + * class.c (registerClass_libfunc): Remove. + (init_class_processing): Don't set it. + (emit_register_classes): Take list_p parameter. Fill it in + with _Jv_RegisterClass calls. + * decl.c (java_init_decl_processing): Don't call + init_resource_processing. + * jcf-parse.c (java_emit_static_constructor): New. + (java_parse_file): Call it. + * resource.c (registerResource_libfunc): Remove. + (init_resource_processing): Remove. + (write_resource_constructor): Take list_p parameter. Fill it in + with _Jv_RegisterResource calls. + * java-tree.h: Update prototypes. + +2004-06-29 Bryce McKinlay + + PR java/1262 + * class.c (layout_class_method): Do not override package-private + method if its in a different package. + (split_qualified_name): Move here from parse.y. Rename from + breakdown_qualified. Add comment. + (in_same_package): Move here from parse.y. Add comment. + * java-tree.h (break_down_qualified, in_same_package): Declare. + (in_same_package): Likewise. + * parse.y (breakdown_qualified, in_same_package): Moved to class.c. + Callers updated. + +2004-06-29 Andrew Haley + + * except.c (expand_start_java_handler): Push a new binding level. + Don't build a TRY_CATCH_EXPR now, we'll do it later. Call + register_exception_range() to register where we'll do it. + (expand_end_java_handler): Remove old bogus code. Replace with + new logic that simply builds TRY_CATCH_EXPRs and inserts them at + the top of the expression we're curently building. + (maybe_end_try): Delete. + * decl.c (binding_level.exception_range): New field. + (clear_binding_level): Add field exception_range. Reformat. + (poplevel): Call expand_end_java_handler(). + (poplevel): Call java_add_stmt only if functionbody is false. + (maybe_poplevels): Don't call maybe_end_try() from here. + (end_java_method): Clear no longer used trees in function decl. + (register_exception_range): New function. + * java-tree.h (register_exception_range, struct eh_range): Declare. + +2004-06-28 Bryce McKinlay + + * jcf-write.c (get_classfile_modifiers): Formatting fixes. + +2004-06-27 Ranjit Mathew + + Formatting fixes. + * expr.c (class_has_finalize_method): Fix method name indentation. + (expand_java_call): Remove K&R style parameter declaration. + (expand_invoke): Fix statement indentation. + (expand_java_field_op): Likewise. + * parse-scan.y: Fix typo. + (reset_report): Fix method name indentation. + * parse.y (unresolved_type_p, build_expr_block): Remove extra blank + line. Fix typos. + * verify.c (verify_jvm_instructions): Document parameters, insert + page break. + * lang.c (lang_init_source): Fix method name indentation. + * class.c (common_enclosing_context_p): Likewise. + (emit_symbol_table): Fix parameter list indentation. + * decl.c (add_stmt_to_compound, java_add_stmt): Remove K&R style + parameter declaration. + * constants.c: Fix copyright notice indentation. + * typeck.c (find_method_in_superclasses): Fix parameter list + indentation. + (find_method_in_interfaces): Likewise. + * zextract.c (makelong): Fix method name indentation. + +2004-06-26 Bryce McKinlay + + PR java/15715. + * parse.y (create_interface): Set correct access modifiers for + interfaces. + * jcf-write.c (get_classfile_modifiers): New function. + (generate_classfile): Use get_classfile_modifiers, not + get_access_flags. + +2004-06-26 Bryce McKinlay + + * parse.y (register_incomplete_type): Set JDEP_ENCLOSING for "super" + dependency to current parser context, not NULL_TREE, for top-level + classes. + (jdep_resolve_class): Enable member access check for all inner + class dependencies. + +2004-06-26 Bryce McKinlay + + * parse.y (qualify_and_find): Pass type decl, not identifier, to + load_class. + +2004-06-26 Bryce McKinlay + + PR java/15734 + * expr.c (expand_java_field_op): Ensure that target class for static + field access has been loaded. + +2004-06-26 Bryce McKinlay + Ranjit Mathew + + PR java/1207, java/16178 + * jcf-parse.c (load_class): Return immediately if passed a type decl + where CLASS_FROM_SOURCE_P is set. Remove FIXME. + * parse.y (do_resolve_class): Remove checks for CLASS_FROM_SOURCE_P + before calling load_class. + (qualify_and_find): Likewise. + (find_in_imports_on_demand): Likewise. + (find_applicable_accessible_methods_list): Likewise. + +2004-06-24 Bryce McKinlay + + * parse.y (java_layout_seen_class_methods): Don't call load_class + on class defined by source parser. + +2004-06-23 Bryce McKinlay + + * parse.y (set_nested_class_simple_name_value): Removed. + (java_complete_expand_class): Remove calls to + set_nested_class_simple_name_value. + +2004-06-22 Andrew Haley + Ranjit Mathew + + Fixes PR java/16113. + * decl.c (force_poplevels): Remove call to expand_end_bindings. + +2004-06-22 Ranjit Mathew + + * parse.y (create_class): Correct diagnostic message about + java.lang.Object extending anything else. + +2004-06-21 Richard Kenner + + * class.c (build_class_ref): Add new operand for COMPONENT_REF. + (build_static_field_ref): Likewise and add new operands for ARRAY_REF. + * constants.c (build_ref_from_constant_pool): Likewise. + * expr.c (build_java_array_length_access): Likewise. + (build_get_class, build_field_ref, build_known_method_ref): Likewise. + (invoke_build_dtable, build_invokevirtual): Likewise. + (build_invokeinterface, java_expand_expr): Likewise. + (emit_init_test_initialization): Likewise. + * java-gimplify.c (java_gimplify_new_array_init): Likewise. + * parse.y (make_qualifed_name, build_array_ref): Likewise. + +2004-06-21 Andrew Haley + + * java-gimplify.c (java_gimplify_block): set TREE_USED on the new + block. + +2004-06-21 Joseph S. Myers + + * jcf.h (struct JCF): Change java_source, right_zip and finished + to unsigned int. + * lex.h (struct java_lexer): Change hit_eof, read_anything, + byte_swap and use_fallback to unsigned int. + * parse.h (struct _jdep): Change flag0 to unsigned int. + +2004-06-17 Ranjit Mathew + + Fixes PR java/13948 + * parse.y (java_layout_seen_class_methods): Ensure class is loaded + before trying to lay out its methods. + * jcf-parse.c (read_class): Track parsed files using canonical paths + obtained via lrealpath from libiberty. + (java_parse_file): Likewise. + (parse_source_file_1): Rename formal parameter to reflect its + modified purpose. Minor formatting fix. + +2004-06-15 Paolo Bonzini + + * class.c (emit_register_classes): Make the function uninlinable, + do not set current_function_cannot_inline. + * resource.c (write_resource_constructor): Do not reset + flag_inline_functions around rest_of_compilation. + +2004-06-08 Andrew Pinski + + PR java/15769 + * expr.c (java_truthvalue_conversion): Handle + UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR, + ORDERED_EXPR, and UNORDERED_EXPR as comparison operators, + i.e. return the expression. + +2004-06-03 Mark G. Adams + + * gjavah.c: Include version.h + +2004-05-31 Bryce McKinlay + + * jcf-write.c (generate_bytecode_conditional): Correct handling + of unordered conditionals. Add comment. + +2004-05-29 Ranjit Mathew + Per Bothner + + * java-tree.h (DECL_LOCAL_FINAL_IUD): New macro to test if a + local variable was initialised upon declaration. + * parse.y (declare_local_variables): Set DECL_LOCAL_FINAL_IUD if + variable was final and initialised upon declaration. + * check-init.c (check_final_reassigned): Give error only if a blank + final is not definitely unassigned or if an initialised final is + reassigned. + (check_bool_init): Respect JLS2 16.1.7 requirements for boolean + assignment expressions. Remove case MODIFY_EXPR, label do_default. + (check_init): Perform initialised-variable-removing-optimisation + only on non-final local variables. + +2004-05-28 Bryce McKinlay + + * jcf-write.c (generate_bytecode_conditional): Handle binops + UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, + and LTGT_EXPR. + (generate_bytecode_insns): Likewise. + +2004-05-28 Bryce McKinlay + + * check-init.c (check_init): Handle binops UNLT_EXPR, UNLE_EXPR, + UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, and LTGT_EXPR. + +2004-05-28 Bryce McKinlay + + * gcj.texi (Object allocation): Remove _Jv_AllocBytes. + (Mixing with C++): Document JvAllocBytes and RawDataManaged. + +2004-05-26 Bryce McKinlay + + * decl.c (struct binding_level): Add GTY marker. Compile + binding_depth unconditionally. + (current_binding_level, free_binding_level, global_binding_level): + Likewise. + (clear_binding_level): Unconditionally set binding_depth. + (make_binding_level): Use ggc_alloc_cleared, not xmalloc. + +2004-05-26 Bryce McKinlay + + * lex.c (java_new_lexer): Set 'encoding'. + (java_read_char): Improve error message for unrecognized characters. + * lex.h (struct java_lexer): New field 'encoding'. + +2004-05-23 Paolo Bonzini + + * Make-lang.in: Link in $(LIBCPP) instead of mkdeps.o. + +2004-05-21 Mark Wielaard + + * gjavah.c (print_stub_or_jni): Mark functions only JNIEXPORT, not + extern. + +2004-05-19 Paolo Bonzini + + * typeck.c: Remove non-printable character 160. + +2004-05-17 Ranjit Mathew + + * check-init.c: Correct minor typos. + +2004-05-13 Diego Novillo + + * Make-lang.in, expr.c, java-gimplify.c: Rename + tree-simple.[ch] to tree-gimple.[ch]. + +2004-05-14 Ranjit Mathew + + * java-gimplify.c (java_gimplify_expr): Correct minor typos. + +2004-05-13 Diego Novillo + + Merge from tree-ssa-20020619-branch. See + ChangeLog.tree-ssa for details. + + * Make-lang.in, builtins.c, check-init.c, class.c, + constants.c, decl.c, except.c, expr.c, java-except.h, + java-tree.def, java-tree.h, jcf-parse.c, jcf-write.c, + lang.c, lang.opt, parse.y, resource.c: Merged. + * java-gimplify.c: New file. + +2004-05-10 Andrew Haley + + * parse.y (create_class): Set TYPE_VFIELD. + * decl.c (java_init_decl_processing): Likewise. + + * expr.c (build_invokevirtual): Remove DECL_VINDEX offset adjustment. + * class.c (make_method_value): Replace DECL_VINDEX with call to + get_method_index(). + (get_dispatch_vector): Likewise. + (layout_class_method): Likewise. + Replace set of DECL_VINDEX with call to set_method_index(). + (set_method_index): New function. + (get_method_index): New function. + * java-tree.h (set_method_index): New function decl. + (get_method_index): New function decl. + +2004-05-10 Andrew Pinski + + * parse.y (check_pkg_class_access): Add new argument + and use it when cl is NULL to call lookup_cl on it. + (parser_check_super_interface): Do not call lookup_cl. + Pass this_decl to check_pkg_class_access and NULL + instead of lookup_cl. + (parser_check_super): Update for change in + check_pkg_class_access. + (do_resolve_class): Likewise. + (process_imports): Likewise. + (find_in_imports_on_demand): Likewise. + (resolve_qualified_expression_name): Likewise. + +2004-05-06 Ranjit Mathew + + Fixes PR java/9685, PR java/15073 + * parse.y (accessibility_string): New method. + (not_accessible_field_error): Use accessibility_string() + instead of java_accstring_lookup(). + (resolve_qualified_expression_name): Check with + check_pkg_class_access() before allowing access using + qualified names. + Fix comment typo. + Use check_pkg_class_access() instead of not_accessible_p() + for unqualified types. + (not_accessible_p): Use DECL_CONTEXT (member) instead of + REFERENCE for package-private access checking. + (patch_method_invocation): Use accessibility_string() instead + of java_accstring_lookup(). + +2004-04-30 Ranjit Mathew + + Fixes PR java/15133 + * gjavah.c (struct method_name): Add member is_native. + (overloaded_jni_method_exists_p): Match candidate method only if + it is native. + (print_method_info): Initialise is_native flag from the method's + access flags. + +2004-04-30 Roger Sayle + + * builtins.c (java_builtins): Add acos, asin, ceil and floor. + (initialize_builtins): Likewise, define acos, asin, ceil and floor. + +2004-04-22 Roger Sayle + + * resource.c (write_resource_constructor): Guard call to possibly + NULL targetm.asm_out.constructor with targetm.have_ctors_dtors. + +2004-04-19 Bryce McKinlay + + * class.c (make_class_data): Add new field aux_info. + * decl.c (java_init_decl_processing): Push type and decl for + `aux_info'. + +2004-04-15 Bryce McKinlay + + * expr.c (expand_java_NEW): Don't use size argument for + _Jv_AllocObject calls. + * parse.y (patch_invoke): Likewise. + +2004-04-12 Bryce McKinlay + + * expr.c (build_invokeinterface): Remove unused variables to + fix warnings. + +2004-04-12 Bryce McKinlay + + * class.c (get_interface_method_index): New function. Return dispatch + index for interface method. + (make_method_value): For interface methods, set index field to + iface dispatch index, not DECL_VINDEX. + * expr.c (build_invokeinterface): Use get_interface_method_index. + +2004-03-31 Richard Kenner + + * jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED. + +2004-03-31 Andrew Haley + + PR java/14104 + * jcf-io.c (opendir_in_zip): Tidy up error handling. + +2004-03-30 Zack Weinberg + + * builtins.c, expr.c, jcf.h, parse.h: Use new shorter + form of GTY markers. + +2004-03-25 Marcus Meissner + + PR java/14689: + * jcf-path.c (jcf_path_extdirs_arg): Add missing closedir. + +2004-03-23 Tom Tromey + + PR java/14315: + * jcf-write.c (make_class_file_name): Don't report if mkdir + failed with EEXIST. + +2004-03-23 Tom Tromey + + * gcj.texi (Extensions): Document GCJ_PROPERTIES. + +2004-03-20 Kazu Hirata + + * class.c, gjavah.c, lang.c: Fix comment typos. + * gcj.texi: Fix typos. + +2004-03-19 Per Bothner + + * gcj.texi (Code Generation): Document new flags and assert defaults. + + * class.c (assume_compiled_node_struct): Rename type to + class_flag_node_struct, as it is now also used for enable_assertions. + Rename assume_compiled_node typedef. Rename excludep field to value. + (find_assume_compiled_node): Rename function to find_class_flag_node. + Minor optimization - avoid needless strlen. + (add_assume_compiled): Some tweaking and optimization. + Rename and generalize to add_class_flag takem an extra parameter. + (add_assume_compled): New just calls add_class_flag. + (add_enable_assert, enable_assertions): New functions. + (enable_assert_tree): New static. + * java-tree.h (add_enable_assert, enable_assertions): New declarations. + * lang.opt (fenable-assertions, fenable-assertions=, + fdisable-assertions, fdisable-assertions=): New options. + * lang.c (java_handle_option): Handle new options. + * parse.y (build_incomplete_class_ref): Handle class$ in an inner + class in an interface - create helper class nested in outer interface. + (build_assertion): Short-circuit if enable_assertions is false. + +2004-03-18 Richard Kenner + + * java-tree.h: Changes throughout to add checking to macros + and numerous whitespace changes. + (VAR_OR_FIELD_CHECK): New macro. + * jcf-write.c (get_access_flags): Use FIELD_PUBLIC, METHOD_PUBLIC, + FIELD_FINAL, and METHOD_FINAL instead of CLASS_PUBLIC and CLASS_FINAL. + +2004-03-16 Per Bothner + + * jcf-jump.c (options): New --print-constants option. + * gcj.texi (Invoking jcf-dump): Document --print-constants. + + * jcf-dump.c (flag_print_constant_pool): Default to off. + (print_constant_terse_with_index): New helper function. + (various places): Check flag_print_constant_pool where missing. + (main): If verbose set flag_print_constant_pool. + (HANDLE_INNERCLASSES_ATTRIBUTE): Null inner class name is anonymous. + +2004-03-15 Andrew Haley + + PR java/14581 + * parse.y (java_complete_lhs): Check that final variable has an + initializer. + +2004-03-12 Andrew Haley + + PR java/14551 + * typeck.c (convert): Clear TREE_OVERFLOW after an integer + conversion. + +2004-02-29 Roger Sayle + + * jcf-parse.c (java_parse_file): Handle the case that input_filename + is NULL. + +2004-02-27 Per Bothner + + * parse.y (build_assertion): Re-do 02-25 change following Jeff Sturm + suggestion: Use build_incomplete_class_ref. + This fixes PR java/13508, java/11714. + +2004-02-27 Kazu Hirata + + * java/parse.h: Update copyright. + +2004-02-26 Andrew Haley + + PR java/14231: + * parse.y (check_interface_throws_clauses): Check for + !METHOD_INVISIBLE (iface_method). + * class.c (layout_class_methods): Check for CLASS_INTERFACE as + well as CLASS_ABSTRACT. + +2004-02-25 Per Bothner + + * parse.y (build_assertion): If we're in an inner class, create the + class$ helper routine in the outer class. + +2004-02-19 Richard Henderson + + * parse.y (switch_label): Use make_node for DEFAULT_EXPR. + +2004-02-16 Geoffrey Keating + + * Make-lang.in (java.install-man): Add extra dependencies. + +2004-02-13 Geoffrey Keating + + * Make-lang.in: Install man pages under the same names + (possibly transformed) as the program they document. + +2004-02-10 Joseph S. Myers + + * gjavah.c: Include "intl.h". + (error): New function. + (main): Call gcc_init_libintl. + (get_field_name, throwable_p, print_c_decl, print_full_cxx_name, + print_stub_or_jni, process_file, main): Use error rather than + fprintf. + (print_method_info, usage, help, version, main): Mark strings for + translation with _. Avoid splitting up sentences. Send + information messages to stdout. + * jcf-dump.c: Include "intl.h". + (main): Call gcc_init_libintl. + (process_class, usage, help, version, main, CHECK_PC_IN_RANGE): + Mark error, usage and version messages for translation with _. + Avoid splitting up sentences. + * jv-scan.c: Include "intl.h". + (fatal_error, warning): Change parameter s to msgid. Translate + messages. + (main): Call gcc_init_libintl. + (usage, help, version): Mark error, usage and version messages for + translation with _. Avoid splitting up sentences. + * jvgenmain.c: Include "intl.h". + (main): Call gcc_init_libintl. + (usage, main): Mark error messages for translation with _. + * Make-lang.in (GCJH_OBJS, JVSCAN_OBJS, JCFDUMP_OBJS, + JVGENMAIN_OBJS): Add intl.o. + (java/jcf-dump.o, java/gjavah.o, java/jv-scan.o, + java/jvgenmain.o): Update dependencies. + +2004-02-08 Per Bothner + + * parse.y (resolve_qualified_expression_name): In case of inaccessible + class don't use not_accessible_field_error, which can get confused. + +2004-02-05 Kelley Cook + + Make-lang.in (po-generated): Delete. + +2004-02-05 Kazu Hirata + + * Make-lang.in (java/decl.o, java/expr.o, java/parse.o): + Depend on target.h. + * decl.c: Include target.h. + (start_java_method): Replace PROMOTE_PROTOTYPES with + targetm.calls.promote_prototypes. + * expr.c: Include target.h. + (pop_arguments): Replace PROMOTE_PROTOTYPES with + targetm.calls.promote_prototypes. + * parse.y: Include target.h. + (start_complete_expand_method): Replace PROMOTE_PROTOTYPES + with targetm.calls.promote_prototypes. + +2004-02-04 Kazu Hirata + + * typeck.c: Update copyright. + +2004-02-02 Tom Tromey + + * decl.c (java_init_decl_processing): Remove duplicate + gnu/gcj/RawData. + +2004-01-30 Kelley Cook + + * Make-lang.in (doc/gcj.dvi): Use $(abs_docdir). + +2004-01-28 Andrew Pinski + + * expr.c (build_field_ref): Move variable + definition up. + +2004-01-28 Andrew Haley + + * expr.c (build_field_ref): Widen field offset. + +2004-01-27 Andrew Haley + + java/13273 + * parse.y (check_interface_throws_clauses): Make sure class_decl + has been loaded. + +2004-01-22 Jeff Sturm + + PR java/13733 + * parse.y (patch_assignment): Don't modify lhs_type for + reference assignments. + +2004-01-20 Kelley Cook + + * Make-lang.in: Replace $(docdir) with doc. + (java.info, java.srcinfo, java.man, java.srcman): New rules. + (java.install-man): Revamp rule. + +2004-01-20 Kelley Cook + + * Make-lang.in (JAVA_INSTALL_NAME, JAVA_TARGET_INSTALL_NAME, + GCJH_TARGET_INSTALL_NAME): Define via a immediate $(shell) + instead of deferred backquote. + +2004-01-16 Andrew Pinski + + * typeck.c (find_method_in_interfaces): Move variable + definition up. + +2004-01-16 Andrew Haley + + PR java/13273: + * typeck.c (shallow_find_method): New. + (find_method_in_superclasses): New. + (find_method_in_interfaces): New. + (lookup_do): Rewrite. + * java-tree.h (SEARCH_ONLY_INTERFACE): Delete. + + * jcf-parse.c (read_class): Save and restore output_class. + * decl.c (java_expand_body): Set output_class from fndecl. + +2004-01-15 Michael Chastain + + * class.c (gen_indirect_dispatch_tables): Fix string length + calculations. + +2004-01-15 Kelley Cook + + * Make-lang.in (parse.c, parse-scan.c): Always build in doc directory. + (java.srcextra): Copy above back to source directory if requested. + (po-generated): Delete reference to $(parsedir). + (java/parse.o, java/parse-scan.o): Delete reference to $(parsedir). + Use implicit rule. + +2004-01-14 Jan Hubicka + + * lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost + estimation. + +2004-01-09 Mark Mitchell + + * java-tree.h (java_expand_expr): Change prototype. + * expr.c (java_expand_expr): Add alt_rtl parameter. + +2004-01-09 Andrew Haley + + PR java/12755: + * parse.y (java_fix_constructors): Set output_class. + (java_reorder_fields): Likewise. + (java_layout_classes): Likewise. + (java_expand_classes): Generate indirect dispatch tables. + (java_expand_classes): Set output_class. + (java_finish_classes): Likewise. + * lang.c (java_init): Turn on always_initialize_class_p if we're + using indirect dis[atch. + (java_decl_ok_for_sibcall): Use output_class, not current_class. + (java_get_callee_fndecl): Use class local atable. + * jcf-parse.c + (always_initialize_class_p): Decl moved to java-tree.h. + (HANDLE_CLASS_INFO): Set output_class. + (read_class): Likewise. + (parse_class_file): Call gen_indirect_dispatch_tables. + (parse_zip_file_entries): Set output_class. + (java_parse_file): Set output_class. Don't emit symbol tables. + * java-tree.h (output_class): New. + Remove global declarations for otable, atable, and ctable. + (always_initialize_class_p): moved here from decl.c. + (DECL_OWNER): New. + (TYPE_ATABLE_METHODS, TYPE_ATABLE_SYMS_DECL, TYPE_ATABLE_DECL, + TYPE_OTABLE_METHODS, TYPE_OTABLE_SYMS_DECL, TYPE_OTABLE_DECL, + TYPE_CTABLE_DECL, TYPE_CATCH_CLASSES): New. + (struct lang_type): Add otable_methods, otable_decl, + otable_syms_decl, atable_methods, atable_decl, atable_syms_decl, + ctable_decl, catch_classes, type_to_runtime_map. + * expr.c (build_field_ref): Make otable, atable, and ctable class + local rather than global. + (build_known_method_ref): Likewise. + (build_invokeinterface): Likewise. + (java_expand_expr): Pass runtime type (rather than actual type) to + expand_start_catch. + * except.c (prepare_eh_table_type): Create TYPE_TO_RUNTIME_MAP for + this class. Look up each class in that map to delete duplicates. + (expand_end_java_handler): Pass runtime type (rather than actual + type) to expand_start_catch. + * decl.c: (always_initialize_class_p): Decl moved to java-tree.h. + (do_nothing): New. + (java_init_decl_processing): Rearrange things. Remove global + declarations of otable, atable, and ctable. + (java_init_decl_processing): Make lang_eh_runtime_type do_nothing. + (java_expand_body): Set output_class. + * constants.c (build_constant_data_ref): Use output_class, not + current_class. + (alloc_name_constant): Likewise. + * class.c (gen_indirect_dispatch_tables): New. + (build_class_ref): Generate hard reference to superclass, even if + using indirect dispatch. + (build_static_field_ref): Use class local atable. + (make_class_data): Generate hard reference to superclass, even if + using indirect dispatch. + Generate symbolic references to interfaces when using indirect + dispatch. + (make_class_data): Emit otable, atable, and ctable. + Make otable, atable, and ctable class local rather than global. + (emit_catch_table): Make otable, atable, and ctable class local + rather than global. + +2003-12-25 Andrew Pinski + + * parse.y (catch_clause_parameter): Fix typo. + + PR java/13404 + * parse.y: (catch_clause_parameter): Return early if $3, aka + formal_parameter, is null. + +2003-12-20 Kazu Hirata + + * class.c: Remove uses of "register" specifier in + declarations of arguments and local variables. + * decl.c: Likewise. + * expr.c: Likewise. + * gjavah.c: Likewise. + * jcf-dump.c: Likewise. + * jcf-io.c: Likewise. + * jcf-parse.c: Likewise. + * jcf-write.c: Likewise. + * keyword.h: Likewise. + * parse.y: Likewise. + * typeck.c: Likewise. + * verify.c: Likewise. + +2003-12-06 Kelley Cook + + * Make-lang.in (GCJ_CROSS_NAME): Delete. + (java.install_common, java.install-man): Adjust for above. + (java.uninstall): Likewise. + +2003-12-03 Michael Koch + + * class.c (make_class_data): + Push field value to 'hack_signers' instead of 'signers'. + * decl.c (java_init_decl_processing): + Push field 'hack_signers' instead of 'signers'. + +2003-12-03 Zack Weinberg + + * lex.h: Check both HAVE_ICONV and HAVE_ICONV_H before + including iconv.h. + +2003-12-03 Ralph Loader + + PR java/12374: + * parse.y (qualify_ambiguous_name): Remove lots of broken + field access processing - there's no need to do that here, + because we have resolve_field_access. Remove + RESOLVE_EXPRESSION_NAME_P as it isn't used anywhere else. + * java-tree.h: Remove RESOLVE_EXPRESSION_NAME_P as it isn't + used. + +2003-12-01 Jeff Sturm + + Fix PR java/13237 + * parse.y (java_complete_lhs): Save location prior to patching + CALL_EXPR. + +2003-11-25 Mohan Embar + + PR java/12548 + * resource.c (write_resource_constructor): Append + "_resource" to constructor identifier name. + +2003-11-25 Jeff Sturm + + Fix PR java/13183. + * constants.c (cpool_for_class): New function. + (outgoing_cpool): Remove global variable. + (alloc_name_constant): Use cpool_for_class. + (build_constants_constructor): Likewise. + * decl.c (java_expand_body): Set current_class. + * java-tree.h (outgoing_cpool) Remove declaration. + (init_outgoing_cpool): Likewise. + * jcf-parse.c (init_outgoing_cpool): Remove function. + (parse_class_file): Don't call init_outgoing_cpool. + * parse.y (java_complete_expand_methods): Don't call + init_outgoing_cpool. Don't save outgoing_cpool. + (java_expand_classes): Don't restore outgoing_cpool. + (java_finish_classes): Likewise. + +2003-11-24 Mohan Embar + + * Make-lang.in: (java.install-common) Add + symlink for $(target_noncanonical)-gcjh for + native builds. + +2003-11-20 Joseph S. Myers + + * Make-lang.in (java.extraclean): Delete. + +2003-11-20 Joseph S. Myers + + * Make-lang.in (check-java): Add. + +2003-11-19 Jeff Sturm + + Fix PR java/13024. + * except.c (prepare_eh_table_type): Allocate variable-sized + buffer `buf' with alloca. + +2003-11-17 Jeff Sturm + + Fix PR java/12857. + + decl.c (java_init_decl_processing): Don't initialize + class_not_found_type_node, no_class_def_found_type_node. + + java-tree.h (JTI_CLASS_NOT_FOUND_TYPE_NODE, + JTI_NO_CLASS_DEF_FOUND_TYPE_NODE): Remove from java_tree_index. + (class_not_found_type_node, no_class_def_found_type_node): + Don't define. + + parse.y (build_dot_class_method_invocation): Add this_class + argument. Qualify method invocations to a different class. + (create_new_parser_context): Initialize saved_data_ctx to 0. + (java_parser_context_save_global): Initialize saved_data_ctx to 1. + (build_dot_class_method): Don't load classes. Register + incomplete types. + (build_incomplete_class_ref): Special cases for interfaces + and inner classes. Move build_dot_class_method call to here... + (patch_incomplete_class_ref): ...from here. Pass current_class + to build_dot_class_method_invocation. + (build_assertion): Pass class_type to + build_dot_class_method_invocation. + (encapsulate_with_try_catch): Handle EXPR_WITH_FILE_LOCATION node. + +2003-11-17 Jeff Sturm + + Fix PR java/12739. + * java-tree.h (BLOCK_EMPTY_P): Define. + * parse.y (java_complete_lhs): Check for empty blocks + in TRY_FINALLY_EXPR case. + +2003-11-17 Andrew Haley + + * java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New. + (struct lang_decl_var:freed): New variable. + * decl.c (poplevel): Mark local vars that have gone out of scope. + (push_jvm_slot): Don't use the RTL of a var that has gone out of + scope. + +2003-11-16 Jason Merrill + + * Make-lang.in (java.tags): Create TAGS.sub files in each directory + and TAGS files that include them for each front end. + +2003-11-15 Tom Tromey + + * gjavah.c (print_stub_or_jni): Pass `env' to FatalError. + +2003-11-12 Jason Merrill + + PR optimization/12547 + * lang.c (java_tree_inlining_walk_subtrees): Just walk + BLOCK_EXPR_BODY directly. + +2003-11-12 Andrew Haley + + PR java/11045 + * parse.y (fold_constant_for_init): Check that we really do have a + constant. + + PR java/11533 + * lang.c (merge_init_test_initialization): Clear DECL_INITIAL for + init_test_decls being inlined. + + PR java/12890: + * parse.y (do_resolve_class): Check return value from + breakdown_qualified(). + +2003-11-11 Tom Tromey + + PR java/12915: + * parse.y (merge_string_cste): Handle case where we have a + pointer that happens to be zero, not null_pointer_node. + +2003-11-10 Tom Tromey + + * jcf-parse.c (classify_zip_file): Correctly compare + filename_length against length of manifest file's name. + +2003-11-08 Tom Tromey + + PR java/12894: + * jcf-parse.c (classify_zip_file): Only skip MANIFEST.MF file. + +2003-11-06 Andrew Haley + + * expr.c (java_stack_swap): Make sure destination stack slots are + of the correct type. + +2003-11-03 Kelley Cook + + * Make-lang.in (dvi): Move targets to $(docobjdir). + (gcj.dvi): Simplify rule and adjust target. + (gcj.info): Simplify rule. + (gcj.pod): New intermediate rule. + (gcjh.pod): Likewise. + (jv-scan.pod): Likewise. + (jcf-dump.pod): Likewise. + (gij.pod): Likewise. + (jv-convert.pod): Likewise. + (rmic.pod): Likewise. + (rmiregistry.pod): Likewise. + (gcj.1): Delete. + (gcjh.1): Delete. + (jv-scan.1): Delete. + (jcf-dump.1): Delete. + (gij.1): Delete. + (jv-convert.1): Delete. + (rmic.1): Delete. + (rmiregistry.1): Delete. + +2003-11-02 Jeff Sturm + + Fixes PR java/12866. + * parse.y (resolve_qualified_expression_name): Move test + for outer field access methods from here... + (check_thrown_exceptions) ...to here. + +2003-11-01 Kelley Cook + + * .cvsignore: Delete. + +2003-10-28 Frank Ch. Eigler + + * verify.c (verify_jvm_instructions): Don't warn about legal + eh binding regions generated for example by jdk 1.4.1. + +2003-10-24 David S. Miller + + * jcf-parse.c (jcf_parse): Fix args to fatal_error(). + +2003-10-22 Andrew Haley + + * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New. + (java_get_callee_fndecl): New. + + * jcf-parse.c (java_parse_file): Call emit_catch_table(). + + * java-tree.h (ctable_decl): New. + (catch_classes): New. + (java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES. + + * decl.c (java_init_decl_processing): Add catch_class_type. + Add ctable_decl. + Add catch_classes field. + + * class.c (build_indirect_class_ref): Break out from + build_class_ref. + (make_field_value): Check flag_indirect_dispatch. + (make_class_data): Ditto. + Tidy uses of PUSH_FIELD_VALUE. + Add field catch_classes. + (make_catch_class_record): New. + + * java-tree.h (PUSH_FIELD_VALUE): Tidy. + +2003-10-22 Kazu Hirata + + * jcf-write.c: Follow spelling conventions. + * parse.y: Likewise. + +2003-10-22 Kazu Hirata + + * ChangeLog: Fix typos. + * expr.c: Fix comment typos. + * jcf-write.c: Likewise. + * lang.c: Likewise. + * lex.c: Likewise. + * mangle.c: Likewise. + * parse-scan.y: Likewise. + * parse.y: Likewise. + +2003-10-22 Tom Tromey + + * expr.c (expand_byte_code): Only warn about dead bytecode when + extra_warnings is set. + +2003-10-22 Bryce McKinlay + + Fix for PR java/12586. + * mangle.c (find_compression_record_match): Don't iterate through + package namespace elements unless they all match compression_table + entries. + +2003-10-20 Kelley Cook + + * Make-lang.in (info): Honor $(parsedir) and $(docobjdir). + (generate-manpages): Likewise. + (java.maintainer-clean): Likewise. + (gcj.info): Likewise. + (gcj.1): Likewise. + (gcjh.1): Likewise. + (jv-scan.1): Likewise. + (jcf-dump.1): Likewise. + (gij.1): Likewise. + (jv-convert.1): Likewise. + (rmic.1): Likewise. + (rmiregistry.1): Likewise. + (java.install-man): Likewise. + (parse-scan.o): Move and define complete compile line. + (parse.o): Likewise. + (jcf-tree-inline.o): Move. + +2003-10-20 Mark Mitchell + + * Make-lang.in (info): Update dependencies. + (java.install-info): Remove. + ($(srcdir)/java/gcj.info): Replace with ... + ($(docobjdir)/gcj.info): ... this. + +2003-10-14 Nathanael Nerode + + * Make-lang.in: Replace uses of $(target_alias) with + $(target_noncanonical). + +2003-10-09 Tom Tromey + + * decl.c (java_init_decl_processing): Declare signers field. + * class.c (make_class_data): Set signers field. + +2003-10-09 Jason Merrill + + * parse.y (patch_assignment): Use make_node to create a BLOCK. + * parse.h (BUILD_PTR_FROM_NAME): Use make_node to create a + POINTER_TYPE. + +2003-10-06 Mark Mitchell + + * Make-lang.in (java.info): Replace with ... + (info): ... this. + (java.dvi): Replace with ... + (dvi): ... this. + (java.generated-manpages): Replace with ... + +2003-10-03 Kelley Cook + + * builtins.c, jcf.h, jvspec.c: Remove PARAMS macros. + +2003-10-01 Andrew Haley + + * jcf-parse.c (java_parse_file): Write otable and atable. + * java-tree.h (atable_methods): New. + (atable_decl): New. + (atable_syms_decl): New. + (enum java_tree_index): Add JTI_ATABLE_METHODS, JTI_ATABLE_DECL, + JTI_ATABLE_SYMS_DECL. Rename JTI_METHOD_SYMBOL* to JTI_SYMBOL*. + (symbol_*type): Rename method_symbol* to symbol*type. + (emit_offset_symbol_table): Delete. + (emit_symbol_table): New. + (get_symbol_table_index): New. + (atable_type): New. + * expr.c (build_field_ref): Handle flag_indirect_dispatch. + (build_known_method_ref): Likewise. + (get_symbol_table_index): Rename from get_offset_table_index. + Parameterize to allow re-use by differing types of symbol table. + (build_invokevirtual): Pass table to get_offset_table_index. + * decl.c (java_init_decl_processing): Push types and decls for + atable and atable_syyms. + * class.c (build_static_field_ref): Handle flag_indirect_dispatch. + (make_class_data): Add new fields atable and atable_syms. + (emit_symbol_table): Rename from emit_offset_symbol_table. + Parameterize to allow re-use by different types of symbol table. + (build_symbol_entry): Renamed from build_method_symbols_entry. + +2003-09-30 Roger Sayle + + * jcf-write.c (generate_bytecode_insns): Implement evaluate-once + semantics for SAVE_EXPR, by caching the result in a temporary. + +2003-09-28 Richard Henderson + + * check-init.c (check_init): Save and restore input_location + instead of file and line separately. + * decl.c (java_expand_body): Likewise. + * jcf-write.c (generate_bytecode_insns): Likewise. + * parse.y (safe_layout_class): Likewise. + * jcf-parse.c (read_class, parse_class_file): Likewise. + (java_parse_file): Use %H for warning locator. + +2003-09-28 Roger Sayle + + * expr.c (java_check_reference): Use the semantics of COND_EXPRs + with void-type branches instead of using a COMPOUND_EXPR. + +2003-09-28 Jeff Sturm + + * decl.c (java_optimize_inline, dump_function): Remove. + * java-tree.h (java_optimize_inline): Remove declaration. + * jcf-parse.c (java_parse_file): Assume flag_unit_at_a_time is set. + * parse.y (source_end_java_method, java_expand_classes): + Likewise. Remove dead code. + +2003-09-27 Roger Sayle + + * lang.c (java_init_options): Set flag_evaluation_order. + * expr.c (force_evaluation_order): Don't attempt to force + evaluation order of binary operations using save_expr. + * parse.y (java_complete_lhs): No longer need to call + force_evaluation_order when constructing binary operators. + +2003-09-27 Alexandre Petit-Bianco + Bryce McKinlay + + PR java/1333: + * parse.y (not_accessible_field_error): New function. + (resolve_expression_name): Check field access permissions. + (resolve_qualified_expression_name): Use + not_accessible_field_error. + (resolve_qualified_expression_name): Likewise. + +2003-09-24 Rainer Orth + + * class.c (build_utf8_ref): Test for HAVE_GAS_SHF_MERGE value. + +2003-09-23 Roger Sayle + + * jcf-write.c (generate_bytecode_insns): Optimize binary operations + with equal operands without side-effects. + +2003-09-22 Jeff Sturm + + * decl.c (java_init_decl_processing): Don't emit otable decls + if flag_indirect_dispatch is not set. + +2003-09-21 Richard Henderson + + * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y, + resource.c: Revert. + +2003-09-21 Richard Henderson + + * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y, + resource.c: Update for DECL_SOURCE_LOCATION rename and change to const. + +2003-09-20 Richard Henderson + + * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics. + +2003-09-18 Roger Sayle + + * expr.c (java_truthvalue_conversion): Remove FFS_EXPR case. + * check-init.c (check_init): Likewise. + +2003-09-18 Roger Sayle + + * jcf-write.c (generate_bytecode_insns): Add support for fconst_2. + +2003-09-16 Andrew Haley + + * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR. + +2003-09-17 Ranjit Mathew + + Fixes PR java/9577 + * mangle.c (find_compression_record_match): Skip + over a "6JArray" (the array template mangled string) + IDENTIFIER_NODE. + (mangle_array_type): Correct minor typo. + (atms): Move definition to the beginning. + +2003-09-16 Bryce McKinlay + + * class.c (add_miranda_methods): Ensure super-interfaces are laid + out. Fix for PR java/12254. + +2003-09-11 Richard Henderson + + * parse.y (source_end_java_method): Update for new + cgraph_finalize_function argument. + +2003-09-09 Richard Henderson + + * parse.y (source_end_java_method): Update call to + cgraph_finalize_function. + +2003-09-03 Jeff Sturm + + * decl.c (java_expand_body): New function. + * expr.c (build_class_init): Set DECL_IGNORED_P. + * java-tree.h (start_complete_expand_method, + java_expand_body): Declare. + * jcf-parse.c (cgraph.h): Include. + (java_parse_file): Handle flag_unit_at_a_time. + * lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING, + LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define. + (java_estimate_num_insns): Use walk_tree_without_duplicates. + (java_start_inlining): New function. + * parse.h (java_finish_classes): Declare. + * parse.y: Include cgraph.h. + (block): Don't special-case empty block production. + (craft_constructor): Set DECL_INLINE. + (source_end_java_method): Handle flag_unit_at_a_time. + Replace inline code with call to java_expand_body. + (start_complete_expand_method): Remove static modifier. + (java_expand_method_bodies): Patch function tree for + class initialization and/or synchronization as needed. + Don't begin RTL expansion yet. + (java_expand_classes): Check flag_unit_at_a_time before + calling finish_class. + (java_finish_classes): New function. + (java_complete_lhs): Ensure COMPOUND_EXPR has non-NULL type. + (patch_assignment): Set DECL_CONTEXT on temporary variable. + (emit_test_initialization): Set DECL_IGNORED_P. + +2003-09-03 Roger Sayle + + * builtins.c (enum builtin_type): Delete unused enumeration. + * Make-lang.in (java/builtins.o): Remove built-types.def dependency. + +2003-08-28 Tom Tromey + + * gcj.texi (Extensions): Document gcjlib URLs. + +2003-08-20 Tom Tromey + + * gcj.texi (Extensions): Added xref. + (libgcj Runtime Properties): Document + gnu.gcj.runtime.VMClassLoader.library_control. + +2003-08-20 Andrew Haley + + * except.c (prepare_eh_table_type): Use new encoding for exception + handlers when using -fno-assume-compiled. + +2003-08-13 Tom Tromey + + * gcj.texi (Invoking gij): Document -X and -?. + +2003-08-13 Mohan Embar + + * Make-lang.in: Added missing win32-host.o to JAVA_OBJS, + GCJH_OBJS, JCFDUMP_OBJS + * win32-host.c: Removed the unnecessary and broken dependency + on jcf.h + +2003-08-11 Tom Tromey + + * parse.y (java_check_regular_methods): Typo fixes. Call + check_interface_throws_clauses. Use + check_concrete_throws_clauses. + (check_interface_throws_clauses): New function. + (check_concrete_throws_clauses): New function. + (hack_is_accessible_p): New function. + (find_most_specific_methods_list): Added FIXME. + * typeck.c (lookup_do): Use `flags' argument to decide what to + do. Reimplemented. + (lookup_argument_method_generic): New function. + (lookup_argument_method2): Removed. + * jcf.h (ACC_INVISIBLE): New define. + * jcf-write.c (generate_classfile): Skip invisible methods. + * class.c (add_miranda_methods): New function. + (layout_class_methods): Use it. + (get_access_flags_from_decl): Use ACC_INVISIBLE. + * java-tree.h (METHOD_INVISIBLE): New define. + (lang_decl_func) [invisible]: New field. + (lookup_argument_method_generic): Declare. + (SEARCH_INTERFACE): New define. + (SEARCH_SUPER): Likewise. + (SEARCH_ONLY_INTERFACE): Likewise. + (SEARCH_VISIBLE): Likewise. + (lookup_argument_method2): Removed declaration. + +2003-08-05 Tom Tromey + + Fix for PR java/11600: + * parse.y (java_complete_lhs): See whether we're calling a method + on an array. + (check_thrown_exceptions): Added `is_array_call' argument; + fixed `clone' checking; updated all callers. + +2003-08-05 Steven Bosscher + + * java-tree.h (DECL_ESTIMATED_INSNS): Remove (moved to tree.h). + +2003-08-03 Tom Tromey + + * java-tree.h (METHOD_TRANSIENT): Removed. + * decl.c (pushdecl): Removed some dead code. + * class.c (get_access_flags_from_decl): Can't have transient + method. + (add_method_1): Can't have a transient method. + +2003-07-28 Andreas Jaeger + + * jvspec.c: Convert to ISO C90 prototypes. + +2003-07-25 Nathan Sidwell + + * decl.c (force_poplevels): Fix warning call. + +2003-07-25 Gabriel Dos Reis + + * expr.c (expand_java_field_op): Don't use xxx_with_decl + (expand_java_field_op): Likewise. + * class.c (layout_class_method): Likewise + (emit_register_classes): Likewise. + * decl.c (pushdecl): Likewise. + (poplevel): Likewise. + (force_poplevels): Likewise. + (give_name_to_locals): Likewise. + * check-init.c (check_for_initialization): Likewise. + +2003-07-24 Jason Merrill + + * java-tree.h: Move boolean_type_node et al to the back end. + +2003-07-19 Kaveh R. Ghazi + + * class.c java-tree.h jcf-write.c jvspec.c: Remove unnecessary + casts. + +2003-07-19 Neil Booth + + * lang.opt: Don't show -MD_ and -MDD_. + +2003-07-18 Neil Booth + + * lang-options.h: Remove. + * lang.opt: Add help text. + +2003-07-15 Kazu Hirata + + * expr.c: Remove the last argument to expand_assignment(). + +2003-07-09 Jan Hubicka + + * java-tree.h (DECL_NUM_STMTS): Rename to... + (DECL_ESTIMATED_INSNS): ... this. + * lang.c (java_estimate_num_insns, java_estimate_num_insns_1): + New static functions. + (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define. + * parser.y (add_stmt_to_compound): Do not account statements. + +2003-07-08 Mark Wielaard + + * gcj.texi: CNI now expands to Compiled Native Interface. + +2003-07-08 Rainer Orth + + * Make-lang.in (java/gcj.dvi): Use PWD_COMMAND. + +2003-07-07 Nathan Sidwell + + * expr.c (expand_byte_code): Adjist emit_line_note call. + +2003-07-06 Neil Booth + + * lang.c (java_handle_option): Don't handle filenames. + +2003-07-02 Zack Weinberg + + * jcf-path.c: Don't default-define PATH_SEPARATOR nor + DIR_SEPARATOR. + Use FILENAME_CMP. + * jcf-write.c: Don't default-define DIR_SEPARATOR. + * jcf.h: Delete COMPARE_FILENAMES definition. + +2003-07-02 Neil Booth + + * lang.c (java_init_options): Update prototype. + +2003-07-01 Nathan Sidwell + + * decl.c (poplevel): Adjust define_label call. + +2003-06-27 Zack Weinberg + + * gjavah.c (flag_jni): Make non-static. + * parse-scan.y (ctxp): Make non-static. + + * class.c (build_method_symbols_entry) + * expr.c (get_offset_table_index) + * jcf-parse.c (jcf_parse): + Mark the definition static, matching the forward declaration. + +2003-06-26 Neil Booth + + * lang.c (java_handle_option): Don't check for missing arguments. + +2003-06-20 Nathan Sidwell + + * class.c (push_class): Use a location_t to save place. + (emit_register_classes): Set input_location. Adjust + expand_function_end call. + * resource.c (write_resource_constructor): Likewise. + * decl.c (end_java_method): Adjust expand_function_end call. + * parse.y (source_end_java_method): Likewise. + +2003-06-17 Robert Abeles + + * lang.c (java_handle_option): Likewise. + +2003-06-16 Neil Booth + + * lang.c (java_handle_option): Special-casing of optional + joined arguments no longer needed. + * lang.opt: Update switches that take optional argument. + +2003-06-15 Neil Booth + + * lang.opt: Declare Java. + * lang.c (java_init_options): Update. + +2003-06-15 Neil Booth + + * lang.c (version_flag): Rename to v_flag to avoid clash w/ toplev.h. + +2003-06-14 Neil Booth + + * lang-specs.h: Rewrite -MD and -MMD to append an underscore. + * lang.c (java_handle_option): -MD and -MMD have an underscore. + * lang.opt: -MD and -MMD have an underscore. + +2003-06-14 Nathan Sidwell + + * class.c (emit_register_classes): Adjust init_function_start + call. + * decl.c (complete_start_java_method): Likewise. + * resource.c (write_resource_constructor): Likewise. + +2003-06-14 Neil Booth + + * Make-lang.in: Update to use options.c and options.h. + * lang.c: Include options.h not j-options.h. + (java_handle_option): Abort on unrecognized option. + (java_init_options): Request Java switches. + +2003-06-11 Neil Booth + + * Make-lang.in: Handle mostlyclean. + +2003-06-11 Tom Tromey + + * lang.c (java_handle_option): Update dependency_tracking for + OPT_MF case. + + * lang.c (java_handle_option): OPT_fbootclasspath_ can take an + empty argument. + +2003-06-10 Andrew Haley + + * resource.c (write_resource_constructor): Use expand_expr to + generate the address of the label attached to a resource. + * Make-lang.in (java/resource.o): Add expr.h + +2003-06-10 Andrew Haley + + * lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New. + (java_decl_ok_for_sibcall): New. + +2003-06-09 Neil Booth + + * Make-lang.in (JAVA_OBJS, java/lang.o): Update. + (java/j-options.c, java/j-options.h): New. + * java-tree.h (resource_name, compile_resource_file, + compile_resource_data): Constify. + * jcf-write.c (jcf_write_base_directory): Similarly. + * jcf.h (jcf_write_base_directory): Similarly. + * lang.c: Include j-options.h. + (cl_options_count, cl_options, string_option, java_decode_option, + lang_f_options, lang_W_options, LANG_HOOKS_DECODE_OPTION, + process_option_with_no): Remove. + (resource_name): Constify. + (LANG_HOOKS_HANDLE_OPTION): Override. + (java_handle_option): New. + (java_init): Don't call jcf_path_init. + (java_init_options): Call jcf_path_init. + * lang.opt: New. + * resource.c (compile_resource_data, compile_resource_file): Constify. + +2003-06-09 Nathan Sidwell + + * java-tree.h (DECL_FUNCTION_LAST_LINE): New. + (struct lang_decl_func): Add last_line field. + * parse.h (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST, + DECL_SOURCE_LINE_LAST): Remove. + * parse.y (missing_return_error, finish_method_declaration, + lookup_cl, start_artificial_method_body, source_end_java_method, + start_complete_expand_method): Adjust. + +2003-06-08 Tom Tromey + + * jvspec.c (jvgenmain_spec): Added `*' after fassume-compiled and + fno-assume-compiled. + +2003-06-08 Roger Sayle + + * builtins.c (define_builtin_type, builtin_types): Delete. + (define_builtin): Rewritten to take just the built-in code, + the function's name, type and fallback library function name. + All built-ins used by Java are implicit and BUILT_IN_NORMAL. + (initialize_builtins): Overhaul to define the GCC builtins + used by gcj manually, providing the Java run-time's + implementations as the fallback library function. + +2003-06-08 Anthony Green + + * parse.y (patch_cast): Fix conversions from floating-point to + integral types. + +2003-06-08 Neil Booth + + * Make-lang.in: Update. + * lang.c: Include opts.h. Define cl_options_count and cl_options. + +2003-06-07 Neil Booth + + * lang.c (java_init_options): Update. + +2003-06-05 Jan Hubicka + + * Make-lang.in: Add support for stageprofile and stagefeedback + +2003-05-31 Roger Sayle + + * lang.c (java_init_options): Prescribe wrap-around two's + complement arithmetic overflow by setting flag_wrapv. + +2003-05-29 Roger Sayle + + * builtins.c (cos_builtin, sin_builtin, sqrt_builtin): Delete. + (builtin_record): Add an additional builtin_code field to + record which GCC built-in corresponds to the Java function. + (java_builtins): Add new entries for atan, atan2, exp, log, + pow and tan. + (max_builtin, min_builtin, abs_builtin): Perform constant + folding on the resulting tree. + (java_build_function_call_expr): Likewise, perform constant + folding on the resulting tree. + (initialize_builtins): The NULL creators are now allowed in + the java_builtins table, which is now terminated by an entry + with builtin_code == END_BUILTINS. + (check_for_builtin): Likewise. If the matching creator is + NULL, construct the call using java_build_function_call_expr + directly with the decl for the corresponding builtin_code. + +2003-05-23 Nathanael Nerode + + * win32-host.c: Normalize copyright boilerplate. + +2003-05-16 Kaveh R. Ghazi + + * parse.y (print_int_node): Use string concatentation on + HOST_WIDE_INT_PRINT_* format specifier to collapse multiple + function calls into one. + +2003-05-13 Zack Weinberg + + * jcf-parse.c, jcf-write.c, lex.c: Replace all calls to + fatal_io_error with calls to fatal_error; add ": %m" to the end of + all the affected error messages. + +2003-05-13 Richard Henderson + + * class.c (layout_class_method): Set DECL_EXTERNAL. + * decl.c (java_mark_decl_local, java_mark_class_local): New. + * java-tree.h (java_mark_class_local): Declare. + * jcf-parse.c (parse_class_file): Use it. + * parse.y (java_expand_classes): Likewise. + +2003-05-04 Nathan Sidwell + + * Make-lang.in (java/parse.o, java/parse-scan.o): Depend on input.h. + * lex.h: #include input.h. + * jv-scan.c (input_filename): Remove. + +2003-05-02 Tom Tromey + + PR java/10491: + * gjavah.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. + (handle_inner_classes): New function. + +2003-05-01 Tom Tromey + + PR java/10459: + * parse.y (finish_for_loop): Do nothing if update expression is a + EXPR_WFL_NODE wrapping nothing. + (java_complete_lhs) : Likewise. + +2003-05-02 Nathan Sidwell + + * lex.h (input_lineno): Remove declaration. + * parse-scan.y: #include input.h. + (input_filename): Remove declaration. + (input_location): Add definition. + (input_line): Remove definition. + +2003-05-01 Nathan Sidwell + + * lex.h (lineno): Rename to ... + (input_line): ... here + * parse-scan.y (lineno): Rename to ... + (input_line): ... here. + (reset_report): Rename lineno to input_line. + * check-init.c (check_init): Likewise. + * class.c (push_class): Likewise. + * decl.c (complete_start_java_method, end_java_method): Likewise. + * expr.c (expand_byte_code): Likewise. + * jcf-parse.c (give_name_to_class, parse_class_file): Likewise. + * jcf-write.c (generate_bytecode_insns): Likewise. + * lex.c (java_init_lex, java_allocate_new_line, + do_java_lex): Likewise. + * parse.h (YYNOT_TWICE): Likewise. + * parse.y (empty_statement, expression_statement, + java_pop_parser_context, java_parser_context_save_global, + yyerror, register_fields, method_header, safe_layout_class, + find_in_imports_on_demand, create_artificial_method, + source_end_java_method, start_complete_expand_method, + build_thisn_assign, java_complete_lhs, + maybe_absorb_scoping_block): Likewise. + +2003-04-20 Mohan Embar + + * jcf-io.c (find_class): use DIR_SEPARATOR instead of + '/' when computing java source filename + +2003-04-13 Tom Tromey + + * gjavah.c (print_c_decl): Indentation fix. + +2003-04-12 Zack Weinberg + + * class.c (make_field_value, make_method_value, get_dispatch_table) + (make_class_data, emit_offset_symbol_table) + * constants.c (build_constants_constructor) + * java-tree.h (START_RECORD_CONSTRUCTOR) + * parse.y (maybe_build_array_element_wfl): + Use build_constructor. + +2003-04-10 Eric Blake + + PR java/10253: + * parse.y (string_convert_int_cst): Always use at least one digit + in string conversion. Remove ASCII dependence. + (merge_string_cste): Fix merging of 3-byte UTF-8 characters. + +2003-03-16 Mohan Embar + + * Make-lang.in: added win32-host.c + * jcf.h: defined macro JCF_OPEN_EXACT_CASE which + resolves to open() on non-Win32 platforms and + Win32-specific jcf_open_exact_case() on Win32 + * jcf-io.c (find_class): use JCF_OPEN_EXACT_CASE + when trying .java and .class files + * win32-host.c: added to repository. Defines + Win32-specific jcf_open_exact_case() + +2003-04-10 Andrew Haley + + * jcf-write.c (struct jcf_partial): num_jsrs: new field. + (maybe_free_localvar): Renamed from localvar_free. + Add new arg, really. + (generate_bytecode_insns): Set new variable, jsrs. + Only free local vars if no jsr insns have been emittted. + Call maybe_free_localvar, not localvar_free. + +2003-03-30 Joseph S. Myers + + * gcj.texi: Remove @ at start of file. + +2003-03-25 Tom Tromey + + * parse.y (create_interface): Call CHECK_DEPRECATED. + +2003-03-23 Zack Weinberg + + * Make-lang.in: Link jcf-dump against $(LDEXP_LIB). + +2003-03-21 Zack Weinberg + + * javaop.h (jfloat, jdouble): Make them structures mirroring + the bit fields of IEEE float and double respectively. + (JFLOAT_FINITE, JFLOAT_QNAN_MASK, JFLOAT_EXP_BIAS, + JDOUBLE_FINITE, JDOUBLE_QNAN_MASK, JDOUBLE_EXP_BIAS): New. + (union Word, union DWord): Delete. + (WORD_TO_FLOAT, WORDS_TO_DOUBLE): Update to match. + + * gjavah.c (java_float_finite, java_double_finite, F_NAN_MASK, + D_NAN_MASK): Delete. + (jni_print_float, jni_print_double): New. Generate + hexadecimal floating constants. + (print_field_info): Use jni_print_float/double. + + * jcf-dump.c: Include math.h. Use ldexp/frexp to assemble + finite floating point numbers for output; special case + non-finite floats. + +2003-03-19 Nathanael Nerode + + * lang.c (java_dump_tree): Change return type from 'int' to 'bool'. + Replace 0 and 1 with true and false in return statements. + +2003-03-19 Tom Tromey + + * lex.c (do_java_lex): Renamed from java_lex. + (java_lex): New function. + Include timevar.h. + +2003-03-13 Tom Tromey + + * parse.y (resolve_inner_class): Error if qualifier is a primitive + type. + +2003-03-04 Andrew Haley + + * gjavah.c (is_first_data_member): New global variable. + (print_c_decl): If it's the first data member, align it as the + superclass. + (process_file): Set is_first_data_member. + +2003-03-11 Tom Tromey + + * parse.y (resolve_field_access): Initialize class if field is + found in another static field. + * expr.c (build_class_init): Don't optimize out initialization of + implemented interface. + +2003-03-11 Andrew Haley + + * jcf-io.c (caching_stat): Initialize origsep to remove compiler + warning. + +2003-03-10 Ranjit Mathew + + * jcf-io.c (caching_stat): Account for both DIR_SEPARATOR + and DIR_SEPARATOR_2 for a target. + Correct minor typos. + + * jcf-write.c (make_class_file_name): Take both DIR_SEPARATOR + and DIR_SEPARATOR_2 for a target into account. + +2003-03-08 Neil Booth + + * lang.c (java_init): Update prototype, move code to java_post_options. + (java_post_options): Similarly. + +2003-03-05 Ranjit Mathew + + * jcf.h (COMPARE_FILENAMES): New macro similar to "strcmp" to + compare file name components depending on the case-sensitivity + or otherwise of the host file system. + + * jcf-path.c (add_entry): Use COMPARE_FILENAMES instead of + "strcmp" to compare file name components. + Use IS_DIR_SEPARATOR instead of comparing directly against + DIR_SEPARATOR. + (jcf_path_extdirs_arg): Use IS_DIR_SEPARATOR instead of + comparing directly against DIR_SEPARATOR. + +2003-03-04 Tom Tromey + + * Make-lang.in (java.tags): New target. + +2003-03-01 Roger Sayle + + * java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3. + (initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3. + +2003-03-01 Tom Tromey + + * parse.y (jdep_resolve_class): Only check deprecation if we found + a decl. + +2003-02-28 Tom Tromey + + PR java/9695: + * class.c (maybe_layout_super_class): Always pass a WFL to + do_resolve_class. + * parse.y (do_resolve_class): Updated comment to explain + parameters. + +2003-02-26 Tom Tromey + + * jcf-write.c (generate_classfile): Check whether class is + deprecated before writing attribute count. + +2003-02-25 Roger Sayle + + * java/decl.c (java_init_decl_processing): Get soft_fmod_node from + built_in_decls[BUILT_IN_FMOD] rather than define it ourselves. + +2003-02-23 Tom Tromey + + * lang-options.h: Added -Wdeprecated. + * gcj.texi (Warnings): Document -Wdeprecated. + * java-tree.h (flag_deprecated): Declare. + * lang.c (lang_W_options): Added deprecated. + (flag_deprecated): New global. + * chartables.h: Rebuilt. + * gen-table.pl (process_one): Look at whitespace. + (print_tables): Define LETTER_SPACE, LETTER_MASK. + * parse.h (CLEAR_DEPRECATED): New macro. + (CHECK_DEPRECATED_NO_RESET): New macro. + * jcf-parse.c (handle_deprecated): New function. + (HANDLE_DEPRECATED_ATTRIBUTE): New define. + * jcf-reader.c (get_attribute): Handle Deprecated attribute. + * parse.y (resolve_type_during_patch): Check deprecation. + (jdep_resolve_class): Likewise. + (process_imports): Likewise. + (resolve_expression_name): Likewise. + (check_deprecation): Strip arrays from decl. Check + flag_deprecated. + (patch_method_invocation): Also check the particular constructor + for deprecation. + (register_fields): Use CHECK_DEPRECATED_NO_RESET in loop. + * jcf-write.c (append_deprecated_attribute): New function. + (generate_classfile): Generate deprecated attribute when + appropriate. + * lex.c (java_parse_doc_section): Return type now void. Rewrote. + (java_lex) [case '*']: Simplify logic. + (java_start_char_p): Use LETTER_MASK. + (java_part_char_p): Likewise. + (java_space_char_p): New function. + +2003-02-20 Nathan Sidwell + + Change base class access representation. + * java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC. + (add_interface_do): Likewise. + +2003-02-12 Ranjit Mathew + + * decl.c (java_init_decl_processing): Change + soft_lookupjnimethod_node to reflect the change in + signature of _Jv_LookupJNIMethod in libjava/jni.cc + * expr.c (build_jni_stub): Calculate and pass the size + on the stack of the arguments to a JNI function. Use + new target macro MODIFY_JNI_METHOD_CALL to allow a + target to modify the call to a JNI method. + +2003-02-08 Roger Sayle + + * jcf-io.c (java_or_class_file): Use libiberty's lbasename + instead of basename to avoid compiler warnings on Tru64. + +2003-02-04 Joseph S. Myers + + * gcj.texi: Update to GFDL 1.2. + +2003-01-31 Andrew Haley + + * parse.y (java_expand_classes): Scan the whole class list looking + for access methods that haven't yet been expanded. + +2003-01-31 Adrian Bunk + + Fix for java/4269: + + * jv-scan.c: Use HAVE_LANGINFO_CODESET instead of HAVE_NL_LANGINFO + to fix bootstrap on sparc-unknown-netbsdelf1.5. + * jcf-parse.c: Likewise. + +2003-01-31 Mark Wielaard + + * gjavah.c (throwable_p): Allocate 1 more byte for string. + +2003-01-31 Nathan Sidwell + + * class.c (make_class): Use BINFO_ELTS. + (set_super_info): Likewse. + (add_interface_do): Likewise. + +2003-01-30 Tom Tromey + + * jcf-parse.c (read_class): Update identifier's class value if it + changed during parsing. + +2003-01-30 Loren James Rittle + + * Make-lang.in (po-generated): Find the targets in $(parsedir). + Propagate change to all other rules as required. + (java/parse-scan.o): Add explicit dependency on + $(parsedir)/java/parse-scan.c . + +2003-01-29 Tom Tromey + + * parse.y (patch_assignment): Only transform the rhs of an + assignment when compiling to native. + +2003-01-28 Tom Tromey + + * jcf-write.c (generate_bytecode_conditional): Typo fixes. + +2003-01-28 Tom Tromey + + * lex.c (java_lex): Don't include UEOF as part of token. + (java_read_unicode): Error if \u sequence prematurely terminated. + +2003-01-27 Tom Tromey + + * parse.y (java_check_regular_methods): Check for construct after + checking types in throws clause. + +2003-01-24 Tom Tromey + + * class.c (build_static_field_ref): Only a String or numeric field + can fold to a constant. + +2003-01-23 Tom Tromey + + * jcf-parse.c (parse_zip_file_entries): Overwrite trailing \0 of + file name in resource buffer. + +2003-01-23 Tom Tromey + + * expr.c (build_known_method_ref): Use method's context to find + method table index. + +2003-01-23 Tom Tromey + + * constants.c (set_constant_entry): Allocated cleared memory. + +2003-01-22 Tom Tromey + + * java-tree.h: Don't use PARAMS. + * resource.c: Add prototypes for all functions. + (write_resource_constructor): Use `const char *' to avoid + warning. + +2003-01-22 Nathanael Nerode + + * jcf-parse.c (process_zip_dir): Remove unused variable. + +2003-01-22 Tom Tromey + + * expr.c (build_invokeinterface): Abort if method's context is not + an interface. + +2003-01-22 Tom Tromey + + * gcj.texi (Input and output files): Mention non-class entries. + * decl.c (java_init_decl_processing): Call + init_resource_processing. + * java-tree.h (compile_resource_data, write_resource_constructor, + compile_resource_file, init_resource_processing): Declare. + * config-lang.in (gtfiles): Added resource.c. + * Make-lang.in (gt-java-resource.h): New target. + (JAVA_OBJS): Added resource.o. + (java/resource.o): New target. + * resource.c: New file. + * class.c (compile_resource_file): Moved to resource.c. + (registerResource_libfunc): Likewise. + (utf8_decl_list): Mark with GTY; now static. + * jcf-parse.c (classify_zip_file): New function. + (parse_zip_file_entries): Use it; compile .properties files. + (process_zip_dir): Use classify_zip_file and compute_class_name. + Don't write class name into zip directory. + (java_parse_file): Call write_resource_constructor. + (compute_class_name): New function. + * jcf-io.c (read_zip_member): Reindented. + +2003-01-21 Tom Tromey + + * class.c (supers_all_compiled): New function. + (make_class_data): Use it. + +2003-01-21 Tom Tromey + + * parse.y (method_header): Native method can't be strictfp. + No method can be transient or volatile. + +2003-01-21 Kaveh R. Ghazi + + Make-lang.in (jvspec.o-warn): Add -Wno-error. + +2003-01-18 Kazu Hirata + + * check-init.c: Fix comment typos. + * class.c: Likewise. + * constants.c: Likewise. + * decl.c: Likewise. + * except.c: Likewise. + * expr.c: Likewise. + * java-except.h: Likewise. + * java-tree.h: Likewise. + * javaop.h: Likewise. + * jcf-dump.c: Likewise. + * jcf-io.c: Likewise. + * jcf-parse.c: Likewise. + * jcf-write.c: Likewise. + * lang.c: Likewise. + * mangle.c: Likewise. + * typeck.c: Likewise. + * verify.c: Likewise. + +2003-01-18 Kaveh R. Ghazi + + * Make-lang.in (java/jcf-write.o): Depend on $(TM_P_H). + * jcf-write.c: Include "tm_p.h". + +2003-01-17 Kaveh R. Ghazi + + * jcf-io.c (caching_stat): Cast the 3rd arg of scandir to void*. + +2003-01-16 Kaveh R. Ghazi + + * builtins.c (java_build_function_call_expr): Renamed from + build_function_call_expr. All callers changed. + + * Make-lang.in (java/jcf-parse.o): Depend on $(TM_P_H). + * jcf-parse.c: Include tm_p.h. + + * jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned + warning. + +2003-01-14 Tom Tromey + + * class.c (make_class_data): Check that super is compiled before + building class reference to it. + +2003-01-14 Andrew Haley + + * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a + varargs function -- correct. + +2003-01-14 Andrew Haley + + * decl.c (java_init_decl_processing): Temporarily back out previous patch. + +2003-01-14 Andrew Haley + + * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a + varargs function -- correct. + + * parse.y (patch_assignment): Copy the rhs of an assignment into a + temporary if the RHS is a reference. + +2003-01-11 Kaveh R. Ghazi + + * Make-lang.in (keyword.h): Pass "-L ANSI-C" to gperf. + * keyword.h: Regenerated. + + * All Files: Convert to ISO C style function definitions. + +2003-01-09 Nathanael Nerode + + * parse.y (check_pkg_class_access): ANSIfy definition. + +2003-01-09 Kaveh R. Ghazi + + * decl.c, parse-scan.y, parse.y: Don't cast return value of + xmalloc et al. + + * class.c, gjavah.c, parse.y, verify.c: Don't use PTR. + +2003-01-09 Geoffrey Keating + + Merge from pch-branch: + + 2002-12-02 Geoffrey Keating + + * Make-lang.in (java/gjavah.o): Update dependencies. + * gjavah.c: Include ggc.h. + + 2002-08-16 Geoffrey Keating + + * Make-lang.in (GCJH_OBJS): Add ggc-none.o. + (JCFDUMP_OBJS): Add ggc-none.o. + (java/jcf-dump.o): Depend on GGC_H. + * jcf-reader.c (jcf_parse_constant_pool): Use ggc_alloc to allocate + CPool substructures. + * jcf-parse.c (process_zip_dir): Use ggc_alloc to allocate JCFs. + * jcf-dump.c: Include ggc.h. + + 2002-08-08 Geoffrey Keating + + * jcf.h (union cpool_entry): New. + (struct CPool): Use gengtype to mark. Change field 'data' to be + an array of unions. + (struct JCF): Use gengtype to mark. + (CPOOL_UINT): Update for new cpool_entry type. + (CPOOL_USHORT1): Likewise. + (CPOOL_USHORT2): Likewise. + (CPOOL_FINISH): Use GC to free cpool subfields. + * parse.h (struct parser_ctxt): Mark field current_jcf. + * lex.c (java_init_lex): Use GC to allocate struct JCF. + * jcf-parse.c (HANDLE_CONSTANT_Utf8): Update for new cpool_entry type. + (main_jcf): Use gengtype to mark. + (ggc_mark_jcf): Delete. + (get_constant): Update for new cpool_entry type. + (give_name_to_class): Likewise. + (get_class_constant): Likewise. + (init_outgoing_cpool): Use GGC to allocate struct CPool. + (java_parse_file): Use GGC to allocate struct JCF. + (init_jcf_parse): Don't call ggc_add_root. + * jcf-reader.c (jcf_parse_constant_pool): Update for new + cpool_entry type. + * java-tree.h (current_jcf): Use gengtype to mark. + (CPOOL_UTF): Update for new cpool_entry type. + (outgoing_cpool): Use gengtype to mark. + (struct lang_type): GC struct JCF and struct CPool. + * config-lang.in (gtfiles): Add jcf.h. + * constants.c (find_tree_constant): New. + (set_constant_entry): Allocate cpool subfields using GGC. Update + for new cpool_entry type. + (find_constant1): Update for new cpool_entry type. + (find_constant2): Likewise. + (find_utf8_constant): Use find_tree_constant. + (find_class_or_string_constant): Remove unnecessary cast to jword. + Update for new cpool_entry type. + (count_constant_pool_bytes): Update for new cpool_entry type. + (write_constant_pool): Likewise. + (alloc_name_constant): Use find_tree_constant. + (build_constants_constructor): Update for new cpool_entry type. + + 2002-08-08 Geoffrey Keating + + * parse.y (mark_parser_ctxt): Delete. + (goal): Don't use ggc_add_root. + (create_new_parser_context): Use GC to allocate struct parser_ctxt. + (java_pop_parser_context): Let GC free parser_ctxt. + (java_parser_context_resume): Likewise. + * parse.h (struct parser_ctxt): Use gengtype to mark. + (ctxp): Likewise. + (ctxp_for_generation): Likewise. + * lex.h (struct java_lc_s): Mark for gengtype. + (java_lexer): Rearrange for gengtype. + * config-lang.in (gtfiles): Add lex.h, parse.h. + +2003-01-09 Kaveh R. Ghazi + + * All Files: Remove PARAMS macro. + + * expr.c, gjavah.c, javaop.h, jcf-dump.c, jcf-io.c, jcf-reader.c, + jcf-write.c, jcf.h, jv-scan.c: Don't rely on the `DEFUN', `AND' or + `__STDC__' macros. + + * jv-scan.c, parse.y: Remove VPARAMS, VA_OPEN, VA_FIXEDARG and + VA_CLOSE. + +2003-01-09 Christian Cornelssen + + * Make-lang.in (java.install-common, java.uninstall, + java.install-info, java.install-man): Prepend $(DESTDIR) + to destination paths in all (un)installation commands. + (java.install-common): Rewrite $(LN) command to support + DESTDIR with "ln" as well as with "ln -s". + +2003-01-08 Nathanael Nerode + + * java-tree.h: Protect against multiple inclusion. + +2003-01-07 Tom Tromey + + * class.c (add_assume_compiled): Don't adjust parent if we're + already at the root of tree. + +2003-01-05 Kaveh R. Ghazi + + * lang.c (dump_compound_expr): Prototype. + +2003-01-03 Tom Tromey + + Fix for PR java/8712: + * expr.c (build_instanceof): Build an NE_EXPR, not a COND_EXPR, + when simply checking against `null'. + +2003-01-03 Tom Tromey + + * gcj.texi (Standard Properties): Document http.proxyHost and + http.proxyPort. + + * gcj.texi (GNU Classpath Properties): Document new properties. + +2003-01-02 Steven Bosscher + + * java/jcf-reader.c, java/jvgenmain.c, java/keyword.gperf, + java/lang-options.h, java/mangle.c, java/mangle_name.c, + java/xref.c, java/zextract.c,java/zipfile.h: Fix copyright years. + +2003-01-01 Steven Bosscher + + * Make-lang.in, boehm.c, buffer.c, + buffer.h, builtins.c, class.c, + config-lang.in, constants.c, + convert.h, decl.c, except.c, + expr.c, java-except.h, + java-tree.h, javaop.def, + jcf-parse.c, jcf-write.c, + jv-scan.c, jvgenmain.c, + jvspec.c, keyword.gperf, + keyword.h, lang-options.h, + lang-specs.h, lang.c, lex.c, + lex.h, mangle.c, mangle_name.c, + parse-scan.y, parse.h, parse.y, + typeck.c, verify.c, xref.c, + xref.h: Replace "GNU CC" with + "GCC" in the copyright header. + + * check-init.c, gjavah.c, javaop.h, + jcf-depend.c, jcf-dump.c, jcf-io.c, + jcf-path.c, jcf-reader.c, jcf.h, + zextract.c, zipfile.h: These files are + "part of GCC". Also say "GCC" not "GNU CC". + +2002-12-30 DJ Delorie + + * Make-lang.in: Protect against texi2pod/pod2man failing. + +2002-12-28 Joseph S. Myers + + * gcj.texi: Use @copying. + +2002-12-27 Mark Mitchell + + * gjavah.c (print_name_for_stub_or_jni): Adjust call to + print_cxx_classname. + (print_cxx_classname): Add add_scope parameter. + (print_class_decls): Do not emit a semicolon after the extern + "Java" block. + (process_file): Adjust calls to print_cxx_classname. + +2002-12-23 Joseph S. Myers + + * gcj.texi: Include Cover Texts in man page. + +2002-12-23 Jeff Sturm + + * class.c (build_static_field_ref): Check FIELD_FINAL. + + * constants.c (alloc_class_constant): Use TYPE_CPOOL_DATA_REF + instead of current_constant_pool_data_ref. + * java-tree.h (current_constant_pool_data_ref): Undefine. + (JTI_CURRENT_CONSTANT_POOL_DATA_REF): Remove. + * jcf-parse.c (init_outgoing_cpool): Don't initialize + current_constant_pool_data_ref. + + * except.c (prepare_eh_table_type ): Use DECL_NAME of class type, + not build_internal_class_name. + + * parse.y (patch_incomplete_class_ref): Always emit `class$' method. + Use it when class ref isn't certain to be compiled. + +2002-12-23 Joseph S. Myers + + * gcj.texi: Include gcc-common.texi. + * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on + $(srcdir)/doc/include/gcc-common.texi. + +2002-12-22 Anthony Green + + * gcj.texi (Limitations): Add note about org.xml.sax and + org.w3c.dom. + +2002-12-20 Tom Tromey + + * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case + where minimum case value is Integer.MIN_VALUE. + Fixes PR java/8955. + +2002-12-18 Andrew Haley + + * parse.y (patch_invoke): Force evaluation order when `check' is + set. For PR libgcj/8945. + +2002-12-16 Mark Mitchell + + * gcj.texi: Change version number to 3.4. + +2002-12-05 Ranjit Mathew + Andrew Haley + + * parse.y (source_end_java_method): Remove custom encoding of line + numbers for a function decl before passing it to the back end. + +2002-12-03 Andrew Haley + + * class.c (make_class_data): New field, "chain". + * decl.c (java_init_decl_processing): Likewise. + +2002-12-02 Tom Tromey + + For PR java/8740: + * parse.y (do_resolve_class): Handle qualified name via + recursion. + +2002-11-30 Zack Weinberg + + * boehm.c, buffer.c, builtins.c, check-init.c, class.c, + constants.c, decl.c, except.c, expr.c, gjavah.c, jcf-depend.c, + jcf-dump.c, jcf-io.c, jcf-parse.c, jcf-path.c, jcf-write.c, + jv-scan.c, jvgenmain.c, jvspec.c, lang.c, mangle.c, mangle_name.c, + parse-scan.y, parse.y, typeck.c, verify.c, xref.c, zextract.c: + Include coretypes.h and tm.h. + * Make-lang.in: Update dependencies. + +2002-11-27 Kaveh R. Ghazi + + * decl.c (java_init_decl_processing): Use `LL' on 64-bit constant. + +2002-11-25 Diego Novillo + + * jcf-reader.c: Don't expand JCF_readu4 inside the + expansion of JCF_SKIP. + +2002-11-25 Diego Novillo + + * jcf-reader.c: Don't expand JCF_readu4 inside the + expansion of JCF_SKIP. + +2002-11-22 Tom Tromey + + * parse.y (patch_binop): Cast right hand side of shift expression + to `int'. Fixes PR java/8676. + +2002-11-22 Ranjit Mathew + Andrew Haley + + * gcc/java/jcf-write.c (write_classfile): Remove target + class file, if it exists, before renaming the temporary + class file to it. + +2002-11-19 Jason Thorpe + + * jvspec.c (lang_specific_spec_functions): New. + +2002-11-18 Tom Tromey + + Fix for PR java/7912: + * expr.c (can_widen_reference_to): Allow cast of array to + Cloneable or Serializable. + * java-tree.h (java_lang_cloneable_identifier_node): Declare. + (java_io_serializable_identifier_node): Likewise. + * parse.y (java_lang_cloneable, java_io_serializable): Removed. + (valid_ref_assignconv_cast_p): Use new identifier nodes. + * lex.c (java_init_lex): Don't initialize java_lang_cloneable and + java_io_serializable. + * decl.c (java_init_decl_processing): Initialize + java_lang_cloneable_identifier_node and + java_io_serializable_identifier_node. + (java_lang_cloneable_identifier_node): New global. + (java_io_serializable_identifier_node): Likewise. + +2002-11-14 Jens-Michael Hoffmann + + * buffer.c: Remove unnecessary casts. + * check-init.c: Likewise. + * class.c: Likewise. + * constants.c: Likewise. + * decl.c: Likewise. + * except.c: Likewise. + * gjavah.c: Likewise. + * jcf-io.c: Likewise. + * jcf-parse.c: Likewise. + * jcf-path.c: Likewise. + * jvspec.c: Likewise. + * lang.c: Likewise. + * lex.c: Likewise. + * verify.c: Likewise. + +2002-11-06 Tom Tromey + + * gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in + a JNI header. + +2002-11-05 Tom Tromey + + Fix for PR java/6388. + * lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while. + * java-tree.h (enum java_tree_index): New values + JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE. + (decimal_int_max, decimal_long_max): New defines. + * lex.c (yylex): Rewrote range checking. Sign extend literals. + (error_if_numeric_overflow): Rewrote range checking. + * decl.c (java_init_decl_processing): Initialize decimal_int_max, + decimal_long_max. + +2002-11-02 Tom Tromey + + * java-tree.h: Move JV_STATE_ERROR before JV_STATE_DONE. + + * class.c (make_method_value): Put class name, not signature, into + `throws' field. For PR java/8415. + +2002-10-24 Tom Tromey + + * gcj.texi (Invoking gij): Document --showversion. + (Standard Properties): java.library.path now set. + +2002-10-23 Tom Tromey + + * gjavah.c (decode_signature_piece): In JNI mode, print + `jobjectArray' when array depth is nonzero. + Fixes PR java/8296. + +2002-10-15 Andrew Haley + + * parse.y (patch_invoke): Call force_evaluation_order on a static + arg list. + (resolve_qualified_expression_name): Call force_evaluation_order + on a arg list that is part of a Qualified Expression Name. + + * lang.c (dump_compound_expr): New. + (java_dump_tree): New. + +2002-10-20 Ranjit Mathew + + * gcj.texi: Added item describing the GCJ runtime property + "gnu.gcj.progname". + +2002-10-15 Richard Henderson + + * jcf-parse.c (get_constant): Fix type warning. + +2002-10-15 Andrew Haley + + * java-tree.h (java_inlining_merge_static_initializers): Declare. + (java_inlining_map_static_initializers): Declare. + +2002-10-14 Andrew Haley + + * tree-inline.c (remap_block): All local class initialization + flags go in the outermost scope. + (expand_call_inline): Call java_inlining_map_static_initializers. + (expand_call_inline): Call java_inlining_merge_static_initializers. + * java/lang.c (merge_init_test_initialization): New. + (java_inlining_merge_static_initializers): New. + (inline_init_test_initialization): New. + (java_inlining_map_static_initializers): New. + +2002-10-11 Mark Wielaard + + * gcj.texi (Compatibility): Add Limitations and Extensions section. + +2002-10-10 Kaveh R. Ghazi + + * class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer. + +2002-10-09 Kaveh R. Ghazi + + * parse.y (merge_string_cste): Add parentheses around & within |. + +2002-10-08 Tom Tromey + + * parse.y (variable_declarator_id): Simplify error path for + array declarator error. For PR java/8003. + +2002-10-08 Zack Weinberg + + * gjavah.c, jcf-dump.c, jv-scan.c: Globally replace GCCBUGURL with + bug_report_url. + +2002-10-08 Andrew Haley + + * parse.y (attach_init_test_initialization_flags): Check for + error_mark_node. + +2002-10-07 Anthony Green + + * parse.y (merge_string_cste): Fix bug in string concatenation. + +2002-10-03 Michael Koch + + * gcj.texi (Standard properties): + Change default of java.awt.toolkit to gnu.awt.gtk.GtkToolkit. + +2002-10-02 Roger Sayle + + PR optimization/6627 + * lang.c (java_init): If storing the vbit in function + pointers, ensure that force_align_functions_log is atleast + one to aid compatability with g++ vtables. + +2002-10-01 Nathan Sidwell + + * jcf-dump.c (print_constant, case CONSTANT_float): Don't fall + foul of type-based aliasing. + +2002-09-30 Anthony Green + + * gcj.texi (Invoking jv-scan): Fix texinfo. + +2002-09-28 Anthony Green + + * gcj.texi (Invoking jv-scan): Add --no-assert documentation. + (Code Generation): Add -fno-assert documentation. + * jv-scan.c (flag_assert): New global. + (options): Add assert option. + (help): Add --no-assert documentation. + * parse-scan.y (flag_assert): New global. + * lang.c (lang_f_options): Add -fassert/-fno-assert support. + (flag_assert): New global. + * java-tree.h (flag_assert): New global. + * lex.c (java_lex): Obey flag_assert. + * jvspec.c (jvgenmain_spec): Strip -fassert/-fno-assert when + calling cc1. + +2002-09-26 Andrew Haley + + * expr.c (build_java_array_length_access): Check for null pointer. + * expr.c (expand_java_arrayload): Likewise. + +2002-09-21 Richard Henderson + + * jcf-parse.c (get_constant): Decode from IEEE no matter + what the target format. + +2002-09-20 Kazu Hirata + + * ChangeLog: Follow spelling conventions. + * class.c: Likewise. + * decl.c: Likewise. + * expr.c: Likewise. + * gjavah.c: Likewise. + * java-tree.h: Likewise. + * jcf-dump.c: Likewise. + * jcf-parse.c: Likewise. + * jvspec.c: Likewise. + * lang.c: Likewise. + * mangle.c: Likewise. + * parse.y: Likewise. + +2002-09-17 Tom Tromey + + * lex.c (java_read_unicode_collapsing_terminators): Handle case + where \r appears at EOF. Fixes PR java/7950. + +2002-09-16 Volker Reichelt + + * jvspec.c (lang_specific_driver): Remove unused variable. + +2002-09-16 Geoffrey Keating + + * java-tree.h (union lang_tree_node): Add chain_next option. + +2002-09-16 Richard Henderson + + * jcf-parse.c (get_constant): Runtime check for IEEE format; + use new real.h interface. + * jcf-write.c (find_constant_index): Use new real.h interface. + * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL. + +2002-09-15 Kazu Hirata + + * lang.c: Follow spelling conventions. + +2002-09-11 Per Bothner + + * parse.y (fold_constant_for_init): If a VAR_DECL, convert numerical + constant to the type of the field. + (java_complete_tree): Remove now-redundant code. + + * parse.y (fold_constant_for_init): 'null' is not a constant expr. + +2002-09-03 Jesse Rosenstock + + For PR java/5794: + * verify.c (verify_jvm_instructions) [OPCODE_jsr]: Only push the + return label if a ret instruction for the jsr has been reached. + +2002-09-09 Ranjit Mathew + + * parse.y (DIR_SEPARATOR): Don't define. + (check_class_interface_creation): Use IS_DIR_SEPARATOR. + +2002-08-28 Andrew Haley + + * verify.c (verify_jvm_instructions): Allow exception handler + inside code that is being protected, but generate a warning. + * except.c (link_handler): Initialize `expanded' in new eh_range. + (binding_depth, is_class_level, current_pc): Declare extern. + +2002-09-01 Mark Wielaard + + * gcj.texi: Add chapter about system properties. + Fixed some typos. + +2002-08-26 Tom Tromey + + * parse.y (try_builtin_assignconv): Allow narrowing primitive + conversion if RHS_TYPE is byte, short, or char. + +2002-08-22 Tom Tromey + + * gcj.texi (Invoking gij): Document -cp and -classpath. + +2002-08-21 Tom Tromey + + * Make-lang.in (java/jcf-path.o): Use $(datadir), not + $(prefix)/share. For PR libgcj/7633. + + For PR java/6005 and PR java/7611: + * lang.c (LANG_HOOKS_CAN_USE_BITFIELDS_P): New define. + (java_can_use_bit_fields_p): New function. + +2002-08-16 Tom Tromey + + * gcj.texi (Class Initialization): Mention class initialization of + arrays. + +2002-07-30 Andrew Haley + + * Make-lang.in (java-tree-inline.o): New. + (JAVA_OBJS): Add java-tree-inline.o. + * parse.y (source_end_java_method): Call java_optimize_inline. + (java_expand_method_bodies): Save method's tree in + DECL_SAVED_TREE. + (add_stmt_to_compound): Keep track of the number of statments. + * lang.c (java_init): Enable flag_inline_trees. + (java_post_options): If flag_inline_functions is on, enable + flag_inline_trees instread. + (decl_constant_value): New. + (java_tree_inlining_walk_subtrees): New. + * java-tree.h (DECL_NUM_STMTS): New macro. + (java_optimize_inline): Declare. + * expr.c (java_expand_expr): Allow a BLOCK to return a value. + Handle a LABEL_EXPR. + * decl.c (build_result_decl): If we already have a DECL_RESULT + don't make another. + (dump_function): New. + (java_optimize_inline): New. + (dump_function): New. + +2002-08-13 Jesse Rosenstock + + For PR java/7483: + * parse.y (build_assertion): Invert return from + desiredAssertionStatus. + +2002-08-08 Bryce McKinlay + + * jcf-write.c (get_access_flags): Return correct access flags for + private and protected inner classes. + +2002-08-08 Nathan Sidwell + + * java/Make-lang.in (java.mostlyclean): Remove coverage files. + +2002-08-05 Geoffrey Keating + + * mangle_name.c: Don't include obstack.h twice. + * xref.c: Don't include obstack.h. + +2002-08-04 Geoffrey Keating + + * class.c: (permanent_obstack): Delete declaration. + * constants.c: (permanent_obstack): Delete declaration. + * except.c: (permanent_obstack): Delete declaration. + * expr.c: (permanent_obstack): Delete declaration. + * jcf-parse.c: (permanent_obstack): Delete declaration. + (saveable_obstack): Delete declaration. + * parse.h: (permanent_obstack): Delete declaration. + * typeck.c: (permanent_obstack): Delete declaration. + +2002-08-04 Joseph S. Myers + + * gcj.texi (version-gcc): Increase to 3.3. + +2002-07-22 Tom Tromey + + * lex.c (java_lex): Check for `e' or `E' after 0. + +2002-07-21 Richard Henderson + + * lang.c (java_unsafe_for_reeval): New. + (LANG_HOOKS_UNSAFE_FOR_REEVAL): New. + +2002-07-21 Neil Booth + + * jcf-path.c (GET_ENV_PATH_LIST): Remove. + (jcf_path_init): Use GET_ENVIRONMENT. + +2002-07-10 Roger Sayle + Zack Weinberg + + * builtins.c (initialize_builtins): Remove defines that + handled C/C++ specific junk hereby removed from builtins.def. + +2002-07-07 Neil Booth + + * lang.c (java_post_options): Update prototype. + +2002-07-05 Roger Sayle + + * builtins.c (initialize_builtins): Ignore the additional + parameter to DEF_BUILTIN. Handle more C/C++ specific junk in + the builtins.def file. + +2002-07-01 Tom Tromey + + For PR libgcj/7073: + * parse.y (patch_incomplete_class_ref): Handle VOID_TYPE + specially. + +2002-07-01 Roger Sayle + + * java/decl.c (builtin_function): Accept additional parameter. + (java_init_decl_processing): Pass an additional NULL_TREE + argument to builtin_function. + +2002-06-29 T.J. Mather + + * gcj.texi: Fixed gcj invocation example so that it compiles. + +2002-06-26 Kaveh R. Ghazi + + * lex.c (java_init_lex): Avoid incorrect hardcoded constant 11. + * parse.y (mark_parser_ctxt): Likewise. + (check_modifiers, declare_local_variables): Avoid incorrect + hardcoded constant 10. + + * lex.c (java_read_char): Avoid "comparison is always true" + warning. + +2002-06-25 Andreas Schwab + + * expr.c (JSR): Avoid undefined operation on PC. + +2002-06-21 Kaveh R. Ghazi + + * decl.c (clear_binding_level): Const-ify. + +2002-06-13 Akim Demaille + + * parse.y (class_declaration, interface_declaration): Make sure + all their rules have an action, in order to avoid meaningless `$$ + = $1' and their type clashes. + +2002-06-11 Tom Tromey + + * jcf-write.c (generate_classfile): Use FIELD_SYNTHETIC. + * parse-scan.y (statement_without_trailing_substatement): Added + assert_statement. + (assert_statement): New rule. + * java-tree.h (struct lang_type) [assertions]: New field. + (TYPE_USES_ASSERTIONS): New macro. + (CLASS_USES_ASSERTIONS): Likewise. + (FIELD_SYNTHETIC): New define. + * lex.c (java_lval;): Added ASSERT_TK. + * parse.y (ASSERT_TK): Added. + (statement_without_trailing_substatement): Added assert_statement. + (assert_statement): New rule. + (build_assertion): New function. + (maybe_generate_pre_expand_clinit): Create and initialize + $assertionsDisabled. + (lookup_package_type): Removed decl. + * keyword.h: Rebuilt. + * keyword.gperf (assert): New token. + +2002-06-10 Akim Demaille + + * parse.y (interface_type_list, class_member_declaration) + (unary_expression_not_plus_minus): Remove duplicate %type. + Whitespace changes. + +2002-06-09 Tom Tromey + + * Make-lang.in (java/lang.o): Use LANGHOOKS_DEF_H. + + * parse.y (method_header): Give error message in all cases. + Fixes PR java/6865. + +2002-06-10 Bryce McKinlay + + Don't use RTL inlining. Fix for PR java/6820. + * lang.c (LANG_HOOKS_POST_OPTIONS): Define. + (flag_really_inline): New. + (java_decode_option): Set flag_really_inline if -finline-functions + is seen. + (java_post_options): New function. Turn off inlining unless + flag_really_inline is set. + +2002-06-10 Bryce McKinlay + + * gjavah.c (throwable_p): Accept argument as either a classname or + signature fragment. Create null-terminated classname string for super + when calling itself recursively. + (decode_signature_piece): Skip first character from class name + signature when calling throwable_p. + +2002-06-08 H.J. Lu (hjl@gnu.org) + + * jcf-path.c (jcf_path_init): Allocate 1 more byte for string. + +2002-06-04 Tom Tromey + + * jcf-write.c (perform_relocations): Optmize a goto to a goto. + +2002-06-04 Michael Koch + + * gcj.texi (Input Options): Fixed typo. + +2002-06-04 Zack Weinberg + + * java-tree.h, class.c, expr.c, jcf-parse.c, parse.y, + typeck.c, verify.c: Remove all #if JAVA_USE_HANDLES blocks, + all mention of CLASS_TO_HANDLE_TYPE or HANDLE_TO_CLASS_TYPE, + and all now-pointless local variables. Rename other local + variables to reflect their not being handles. + + * java-tree.h, jcf-dump.c, jcf-io.c: Remove all + #if JCF_USE_STDIO blocks. + + * parse.y: Add missing semicolon at end of rule. + +2002-06-03 Geoffrey Keating + + * check-init.c (attach_initialized_static_class): Delete, unused. + * parse.y: Use htab_t instead of struct hashtable, update + all uses. + * java-tree.h: Include hashtab.h instead of hash.h. + (struct lang_decl_func): Use htab_t, set up for gengtype. + (struct init_test_hash_entry): Delete. + (struct treetreehash_entry): New. + (java_treetreehash_find): New + (java_treetreehash_new): New prototype. + (java_treetreehash_create): New prototype. + (java_mark_tree): Delete prototype. + (java_hash_hash_tree_node): Delete prototype. + (java_hash_compare_tree_node): Delete prototype. + (attach_initialized_static_class): Delete prototype. + * expr.c (build_class_init): Update to use java_treetreehash + functions. + (java_expand_expr): Update to use htab_t. + (emit_init_test_initialization): Likewise. + * decl.c (java_mark_tree): Delete. + * class.c (init_test_hash_newfunc): Delete. + (java_hash_hash_tree_node): Delete. + (java_hash_compare_tree_node): Delete. + (add_method_1): Update to use java_treetreehash functions. + (JAVA_TREEHASHHASH_H): New macro. + (java_treetreehash_hash): New function. + (java_treetreehash_compare): New function. + (java_treetreehash_find): New function. + (java_treetreehash_new): New function. + (java_treetreehash_create): New function. + * Make-lang.in (JAVA_TREE_H): Replace hash.h by HASHTAB_H. + + * Make-lang.in (java/parse.o): Depend on debug.h. + * java-tree.h (struct lang_identifier): Use gengtype. + (union lang_tree_node): New. + (struct lang_decl_func): Use gengtype. + (struct lang_decl_var): Likewise. + (struct lang_decl): Likewise. + * parse.y: Include debug.h. + * lang.c (LANG_HOOKS_MARK_TREE): Delete. + + * lang.c (struct language_function): New dummy structure. + + * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Set + descriminator for DECL_LANG_SPECIFIC. + (struct lang_decl_func): Rename from struct lang_decl. + (enum lang_decl_desc): New. + (struct lang_decl): Make it a union. Update all the accessor macros. + (struct lang_type): Use gengtype. + * class.c (add_method_1): Set descriminator for DECL_LANG_SPECIFIC. + * decl.c (java_dup_lang_specific_decl): All lang_decl structures + are now the same size. + (lang_mark_tree): Use gengtype to mark TYPE_LANG_SPECIFIC; + use discriminator to mark DECL_LANG_SPECIFIC. + + * Make-lang.in (gt-java-builtins.h): New rule. + (java/builtins.o): Add dependency on gt-.h. + * builtins.c: Use gengtype for roots. + (union string_or_tree): Use gengtype. + (struct builtin_record): Use gengtype. + * config-lang.in (gtfiles): Add builtins.c. + + * Make-lang.in (gt-java-class.h, gt-java-constants.h, + gt-java-decl.h, gt-java-expr.h, gt-java-jcf-parse.h, + gt-java-jcf-write.h, gt-java-lang.h, gt-java-mangle.h, + gt-java-parse.h, gtype-java.h): Add rules to generate. + (parse.o): Add dependency on gt-java-parse.h, gt-java.h. + (class.o): Add dependency on gt-*.h. + (constants.o): Likewise. + (decl.o): Likewise. + (expr.o): Likewise. + (jcf-parse.o): Likewise. + (jcf-write.o): Likewise. + (lang.o): Likewise. + * config-lang.in (gtfiles): New. + * class.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. + * constants.c: Replace uses of ggc_add_* with GTY markers. + Include gt-*.h. + * decl.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. + * expr.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. + * java-tree.h: Replace uses of ggc_add_* with GTY markers. + * jcf-parse.c: Replace uses of ggc_add_* with GTY markers. + Include gt-*.h. + * jcf-write.c: Replace uses of ggc_add_* with GTY markers. + Include gt-*.h. + * lang.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. + * mangle.c: Replace uses of ggc_add_* with GTY markers. Include + gt-*.h. + * parse.y: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. + Include gtype-java.h. + +2002-06-02 Tom Tromey + + Fix for PR java/5913: + * parse.y (patch_binop): Call patch_string on op1. + +2002-06-02 Tom Tromey + + Fix for PR java/1343, PR java/6336: + * parse.y (make_nested_class_name): Remove extraneous `else'; fix + formatting. Changed return type. + (anonymous_class_counter): Moved to top of file. + (maybe_make_nested_class_name): Append number to class name for + function-local classes. + +2002-05-28 Zack Weinberg + + * decl.c, jcf-parse.c, parse.y, typeck.c: Include real.h. + * Make-lang.in: Update dependency lists. + +2002-05-18 Mark Mitchell + + * gjavah.c (throwable_p): Do not free the name of the class after + passing it to find_class. + * java-tree.h (CLASS_BEING_LAIDOUT): Remove duplicate definition. + * jcf-io.c (dirent.h): Include it. + (fnmatch.h): Likewise. + (compare_path): New function. + (java_or_class_file): Likewise. + (memoized_dirlist_entry): New type. + (memoized_dirlist_lookup_eq): New function. + (memoized_dirlists): New variable. + (caching_stat): New function. + (memoized_class_lookup_eq): New function. + (memoized_class_lookups): Likewise. + (find_class): Use memoized_class_lookups and caching_stat. + * jcf.h (JCF_USE_SCANDIR): Define. + * parse.y (java_expand_classes): Write the class files in reverse + order. + +2002-05-16 Rainer Orth + + * Make-lang.in: Allow for PWDCMD to override hardcoded pwd. + +2002-05-13 Mark Mitchell + + * jcf-write.c (write_classfile): Unlink the temporary file if it + cannot be renamed. Use concat to build up the name of the + temporary file. + +2002-05-08 Mark Mitchell + + * jcf-write.c (write_classfile): Write the file to a + temporary file and then rename it. + +2002-05-07 Tom Tromey + + * gjavah.c (throwable_p): Use xstrdup, not strdup. + + Fix for PR java/1200: + * gjavah.c (throwable_p): New function. + (decode_signature_piece): Use it. A `WeakReference' isn't the + same as a `jweak'. + Include hashtab.h. + (gcjh_streq): New function. + +2002-05-07 Andreas Jaeger + + * parse.y (finish_for_loop): Fix if statement. + +2002-05-06 Tom Tromey + + Fix for PR java/5941: + * parse.y (finish_for_loop): Set SUPPRESS_UNREACHABLE_ERROR for + loop update expression. + (java_complete_lhs): Use SUPPRESS_UNREACHABLE_ERROR. + * java-tree.h (SUPPRESS_UNREACHABLE_ERROR): New macro. + +2002-05-04 Mark Wielaard + + For PR java/6519: + * parse.y (build_string_concatenation): Return just op1 only when op2 + is null and op1 is a STRING_CST, otherwise always construct a + StringBuffer. + +2002-04-27 Tom Tromey + + For PR java/6382: + * parse.y (string_convert_int_cst): New function. + (merge_string_cste): Use it. + +2002-04-25 Neil Booth + + * java-tree.h (java_parse_file): Update. + (java_set_yydebug): Remove. + * jcf-parse.c (yydebug): Remove. + (java_set_yydebug): Die. + (java_parse_file): Update. + * lang.c (LANG_HOOKS_SET_YYDEBUG): Remove. + +2002-04-24 Tom Tromey + + For PR java/6425: + * parse.y (qualify_ambiguous_name) [case CALL_EXPR]: Always choose + EXPR_WFL_QUALIFICATION of qual_wfl. + +2002-04-23 Per Bothner + + * expr.c (PRE_JSR): Call NOTE_LABEL for return address. + * java-tree.h (BCODE_RETURN_TARGET): Removed - never set. + (BCODE_TARGET): Remove BCODE_RETURN_TARGET. + +2002-04-23 Tom Tromey + + For PR java/6314: + * jvspec.c (lang_specific_driver): Use --resource, not -R. Also + recognize `-fcompile-resource='. + * gcj.texi (Invoking gcj): Use --resource, not -R. Expanded text + a bit. + +2002-04-22 Alexandre Petit-Bianco + + * jcf-parse.c: (yyparse): Don't prepend "./" to relative + paths. Fixes PR java/2791. + +2002-04-19 Andrew Haley + + * jcf-write.c (push_long_const): lo, hi: New variables. + Use rshift_double to extract the high part of a 64-bit long. + Use WORD_TO_INT to extract the low part. + + * jcf-parse.c (get_constant): CONSTANT_Integer: Use an unsigned + HOST_WIDE_INT for num. Use JPOOL_UINT to get it. + CONSTANT_Double: Use JPOOL_UINT to get both halve of a double. + +2002-04-18 Neil Booth + + * typeck.c (incomplete_type_error): Remove. + +2002-04-18 Bryce McKinlay + + * class.c (make_class_data): Set DECL_ALIGN on static class data, + for hash synchronization. + * expr.c (java_expand_expr): Set DECL_ALIGN on static array objects. + * decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for + class_type_node. + +2002-04-16 Mark Wielaard + + * jcf-write.c (generate_bytecode_insns): Only write const_0 if not + negative zero. + +2002-04-16 Bryce McKinlay + + Fix for PR java/6294: + * parse.h (INNER_INTERFACE_MODIFIERS): Allow ACC_PRIVATE for inner + interfaces. + +2002-04-15 Bryce McKinlay + + Fix for PR java/6085: + * parse.y (patch_method_invocation): Always use build_access_to_thisn + to get enclosing "this" argument for inner-class constructor + invocation. Pass correct arguments to build_access_to_thisn. + +2002-04-10 Andreas Jaeger + + * gcj.texi (Input Options): Fix extdirs patch. + +2002-04-10 Anthony Green + + * jcf-path.c (jcf_path_init) : Clean up local extdirs declaration. + +2002-04-09 Anthony Green + + * gcj.texi (Input Options): Add --extdirs documentation. + * jcf-dump.c (OPT_extdirs): New macro. + (options): Add extdirs option. + (help): Describe --extdirs. + (main): Handle OPT_extdirs. + * gjavah.c (OPT_extdirs): New macro. + (options): Add extdirs option. + (help): Describe --extdirs. + (main): Handle OPT_extdirs. + * jcf-path.c (jcf_path_init): Add extdirs support. + (jcf_path_extdirs_arg): New function. + (extensions): New variable to hold extensions path entries. + * jvspec.c: Remove -fextdirs= when compiling main(). + * lang.c (java_decode_option): Handle -fextdirs=. + * jcf.h (jcf_path_extdirs_arg): Declare new function. + * Make-lang.in: Compile jcf-path with version info for use in + identifying the appropriate libgcj.jar. + +2002-04-08 Tom Tromey + + For PR libgcj/5303: + * .cvsignore: Added rmic.1 and rmiregistry.1. + * gcj.texi (Top): Link to new nodes. + (Invoking rmic): New node. + (Invoking rmiregistry): Likewise. + * Make-lang.in (java.generated-manpages): Added rmic.1 and + rmiregistry.1. + (java.maintainer-clean): Likewise. + ($(srcdir)/java/rmic.1): New target. + ($(srcdir)/java/rmiregistry.1): Likewise. + (java.install-man): Handle rmic.1 and rmiregistry.1. + +2002-04-08 Bryce McKinlay + + * gcj.texi (Invocation): Update JvAttachCurrentThread documentation. + Add note about handling uncaught exceptions. Add an exception handler + to example. + +2002-04-08 Bryce McKinlay + + * parse.y (resolve_qualified_expression_name): Clear "from_super" flag + after using it to patch CALL_EXPR. + +2002-04-08 Bryce McKinlay + + * gcj.texi (Invocation): Document CNI invocation API. + +2002-04-04 Neil Booth + + * expr.c (truthvalue_conversion): Rename. Update. + (expand_compare): Update. + * java-tree.h (java_truthvalue_conversion): New. + * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine. + +2002-04-01 Neil Booth + + * java-tree.h (java_mark_addressable): New. + * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine. + * typeck.c (mark_addressable): Rename, update. + +2002-04-01 Neil Booth + + * expr.c (build_java_binop): Update. + * java-tree.h (java_signed_type, java_unsigned_type, + java_signed_or_unsigned_type): Update. + * lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE, + LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New. + * parse.y (patch_binop): Update. + * typeck.c (signed_or_unsigned_type, unsigned_type, + signed_type): Update. + +2002-03-31 Neil Booth + + * lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine. + (java_dummy_print): Remove. + (lang_print_error): Rename. Exit early if inhibiting output. + (inhibit_error_printing_function): New. + (java_init): Don't set hook. + (lang_init_source): Use new boolean. + +2002-03-29 Martin Kahlert + + * parse.y (do_resolve_class): Fix infinite recursion. + +2002-03-29 Tom Tromey + + * parse.y (check_inner_circular_reference): Ignore incomplete + types. + +2002-03-29 Neil Booth + + * Make-lang.in (builtins.o): Update. + * boehm.c (get_boehm_type_descriptor): Update. + * builtins.c: Include langhooks.h. + * decl.c (java_init_decl_processing): Update. + * java-tree.h (java_type_for_mode, java_type_for_size): New. + * lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE): + Redefine. + * typeck.c (type_for_mode, type_for_size): Update. + +2002-03-29 Martin Kahlert + + * lex.c (java_new_lexer): Alias "646" to DEFAULT_ENCODING. + +2002-03-28 Tom Tromey + + * except.c (expand_end_java_handler): If the handler type is NULL, + use java.lang.Throwable. Fixes PR java/5986. + +2002-03-28 Alexandre Petit-Bianco + + Fix for PR java/4715: + * jcf-parse.c (parse_source_file_3): New function. + (read_class): Call it. + (java_parse_file): Likewise. + +2002-03-28 Jan Hubicka + + * java/lang.c (java_init_options): Set flag_trapping_math to 0. + +2002-03-28 Bryce McKinlay + + * parse.y (resolve_package): Initialize "decl". + (lookup_package_type): Remove unused function. + +2002-03-28 Bryce McKinlay + + Fix for PR java/5993: + * parse.y (resolve_package): Return the decl if resolution was + successful. Don't special case "java.lang" and "java.lang.reflect" + packages. Set type_name to the merged identifier. + (resolved_qualified_expression_name): Print error using "name" if + resolve_package returns NULL_TREE. + +2002-03-27 Tom Tromey + + * expr.c (expand_invoke): Don't generate null pointer check if + we're calling . + +2002-03-27 Neil Booth + + * expr.c (java_lang_expand_expr): Rename java_expand_expr, + fix prototype. + * java-tree.h (java_lang_expand_expr): Similarly. + * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. + (java_init): Don't set hook. + +2002-03-27 Bryce McKinlay + + Fix for PR java/5850: + * parse.y (lookup_field_wrapper): Call itself recursively for enclosing + context if field was not found in the current scope. + * expr.c (lookup_field): Don't look in enclosing contexts. + +2002-03-26 Tom Tromey + + Fix for PR java/5942: + * parse.y (init_src_parse): Added sanity check. + * parse.h (struct parser_ctxt) [modifier_ctx]: Array has 12 + elements, not 11. + +2002-03-26 Neil Booth + + * decl.c (lang_mark_tree): Rename java_mark_tree. + * java-tree.h (java_mark_tree): New. + * java-lang.c (LANG_HOOKS_MARK_TREE): Redefine. + +2002-03-25 Zack Weinberg + + * lex.c: Change java_perform_atof to take normal parameters + instead of a pointer to a parameter block. Call it directly + from java_lex. + +2002-03-22 Mark Wielaard + + Fix for PR java/5368: + * parse.y (resolve_qualified_expression_name): Use decl not field_decl + when printing error message. + +2002-03-25 Neil Booth + + * decl.c (maybe_build_cleanup): Remove. + +2002-03-22 Tom Tromey + + Andrew Haley + + * expr.c (build_field_ref): Don't build a check if the field is a + member of `this'. + +2002-03-21 Eric Blake + + Fix for PR java/6026: + * lex.c (java_lex): Fix parsing of consecutive floats. + +2002-03-21 Tom Tromey + + * parse.y (build_access_to_thisn): Stop when FROM is not an inner + class. + +2002-03-21 Neil Booth + + * cp-tree.h (pushdecl, pushlevel, poplevel, set_block, + insert_block, getdecls, kept_level_p, global_bindings_p): New. + +2002-03-20 Nic Ferrier + + * gcj.texi: @code{gcj} becomes @command{gcj}. + @code{gcc} becomes @command{gcc}. + GcjRaw changed to gnu.gcc.RawData. + +2002-03-20 Neil Booth + + * decl.c (start_java_method): Use new hook. + * lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine. + (java_init): Remove old hook. + +2002-03-18 Alexandre Petit-Bianco + + * builtins.c (define_builtin): Do nothing if `type' is null. + Fixes PR java/5876. + +2002-03-18 Bryce McKinlay + + * parse.y (parser_check_super_interface): Fix error message + grammar/order. + +2002-03-17 Kaveh R. Ghazi + + * jcf-parse.c (get_constant): Delete unused variables. + +2002-03-17 Neil Booth + + * java-tree.h (java_parse_file): New. + * jcf-parse.c (yyparse): Rename java_parse_file. + * lang.c (LANG_HOOKS_PARSE_FILE): Redefine. + +2002-03-16 Bryce McKinlay + + * parse.y (craft_constructor): Return the constructor decl. + (java_expand_classes): Update comments. + (lookup_method_invoke): Call fix_constructors immediately for + anonymous class. Fixes PR java/5935. + +2002-03-15 Anthony Green + + * jcf-parse.c (yyparse): Don't emit class registration + constructor when compiling resource files. + +2002-03-12 Kaveh R. Ghazi + + * lang.c (java_tree_code_type, java_tree_code_length, + tree_code_name): Delete. + (tree_code_type, tree_code_length, tree_code_name): Define. + (java_init): Don't try to copy into the various tree_code + arrays. + +2002-03-12 Tom Tromey + + * jcf-parse.c (get_constant) [CONSTANT_String]: String values are + UTF-8, not UCS-2. Fixes PR java/5923. + + * parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is + a call_expr wrapped in a convert. Fixes PR java/5848. + +2002-03-12 Bryce McKinlay + + * jcf-write.c (write_classfile): Improve error strings. + +2002-03-11 Eric Blake + + * lex.c: Adjust comments to GNU standards. + +2002-03-11 Eric Blake + + Fix for PR java/5902: + * lex.c (java_lex): Fix parsing of literals. + +2002-03-11 Bryce McKinlay + + * parse.y (patch_assignment): Wrap the right-hand-side with a save_expr + to prevent it getting evaluated twice in the store checking case. + * expr.c (build_java_arraystore_check): Unwrap SAVE_EXPR's when + examining OBJECT. + +2002-03-09 Bryce McKinlay + + * decl.c (java_init_decl_processing): Make sure class_type_node + alignment is not less than 64 bits if hash synchronization is enabled. + +2002-03-08 Per Bothner + + * parse.y (java_complete_lhs): Check if patch_assignment + returned an error-mark. + + * parse.y (try_builtin_assignconv): Don't special-case zero. + +2002-03-08 Per Bothner + + Fix for PR java/5812. + * expr.c (build_java_jsr): Take pc arguments, and do lookup_label + here instead of in JSR macro. Likewise with load_type_state call. + Do the latter on if the return_pc has been verified (the jsr returns). + (JSR): Now just call build_java_jsr. + +2002-03-07 Jeff Sturm + + * java/Make-lang.in (JAVA_TARGET_INSTALL_NAME): Define. + (java.install-common): Link native driver to + JAVA_TARGET_INSTALL_NAME. + +2002-03-05 David Billinghurst + + * builtins.c(cos_builtin): method_return_type ATTRIBUTE_UNUSED + * builtins.c(sin_builtin): Likewise + * builtins.c(sqrt_builtin): Likewise + +2002-03-03 Zack Weinberg + + * java/expr.c, java/jcf-parse.c, java/lex.c: + Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef + REAL_ARITHMETIC blocks unconditional. Delete some further + #ifdef blocks predicated on REAL_ARITHMETIC. + +2002-03-03 Kaveh R. Ghazi + + * class.c (init_class_processing): Use ARRAY_SIZE in lieu of + explicit sizeof/sizeof. + * decl.c (java_init_decl_processing): Likewise. + * jcf-parse.c (init_jcf_parse): Likewise. + * parse.y (init_src_parse): Likewise. + +2002-03-02 Per Bothner + + Make --CLASSPATH by a synonym for --classpath and -classpath. + Implement --bootclasspath. + * jcf-path.c (classpath_u): Rename static variable to classpath_user. + (classpath_l): Remove. + (jcf_path_CLASSPATH_arg): Remove. + (jcf_path_bootclasspath_arg): New function. + (jcf_path_seal): Simplify accordingly. + + * jcf.h (jcf_path_bootclasspath_arg): New declarations. + (jcf_path_CLASSPATH): Remove declaration. + * jvspec.c (jvgenmain_spec): Also accept -fbootclasspath*. + (lang_specific_driver): Translate -bootclasspath. + * lang-options.h: Add --bootclasspath. Update --CLASSPATH. + * lang.c (decode_lang_options): Do jcf_path_init first. + Handle -fCLASSPATH same as -fclasspath. Also process -fbootclasspath. + * gjavah.c: Also handle --bootclasspath. + Handle --CLASSPATH as a synonum for --classpath. + * jcf-dump.c: Likewise. + + "." is not part of system path, but is the default for --classpath. + * jcf-path.c (jcf_path_init): Don't add "." to sys_dirs. + (jcf_path_seal): Add "." if no CLASSPATH specified. + + * gcj.texi: Document changes. + +2002-03-01 Bryce McKinlay + + * expr.c (build_java_arraystore_check): Fix formatting. + +2002-02-28 Alexandre Petit-Bianco + + Fix for PR java/5758, java/5632: + * jcf-parse.c (load_class): Renamed local variable, consider `.' an + inner-class separator too. + * parse.y (do_resolve_class): New local `decl_result.' + Progressively build a name for what can have been loaded. + +2002-02-28 Bryce McKinlay + + * expr.c (java_array_data_offset): Removed function. + (JAVA_ARRAY_LENGTH_OFFSET): Removed macro. + (build_java_array_length_access): Obtain "length" value using a + COMPONENT_REF, instead of INDIRECT_REF and arithmetic. + (build_java_arrayaccess): Correct comment. Access "data" using a + COMPONENT_REF, and return an ARRAY_REF instead of an INDIRECT_REF. + (build_java_arraystore_check): New function. + (expand_java_arraystore): Use build_java_arraystore_check. + * parse.y (patch_assignment): Simplify code to insert a store check + when lvalue is an ARRAY_REF. Use build_java_arraystore_check. + * check-init.c (check_init): Update to reflect that an array length + access is now a COMPONENT_REF. + * gcj.texi (Code Generation): Improve documentation of + -fno-bounds-check. Add documentation for -fno-store-check. + * java-tree.h (flag_store_check): Declare. + (build_java_arraystore_check): Declare. + * lang.c (flag_store_check): Initialize to 1. + (lang_f_options): Add store-check option. + * jvspec.c: Don't pass store-check option to jvgenmain. + * lang-options.h: Add help string for -fno-store-check. + +2002-02-28 Neil Booth + + * decl.c (copy_lang_decl): Rename java_dup_lang_specific_decl. + * java-tree.h (java_dup_lang_specific_decl): New. + * lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine. + +2002-02-27 Zack Weinberg + + * builtins.c, decl.c: Delete traditional-mode-related code + copied from the C front end but not used, or used only to + permit the compiler to link. + +2002-02-22 Tom Tromey + + Fix for PR java/2369: + * jvspec.c (verify_class_name): New function. + (lang_specific_driver): Call it. + (JAVA_START_CHAR_P): New macro. + (JAVA_PART_CHAR_P): Likewise. + +2002-02-22 Per Bothner + + * class.c: Change vtable to be more compatible with g++ v3 abi. + (get_dispatch_table): Prepend offset-to-top (always 0) and + type_info pointer (currently unimplemented hence NULL) to vtable. + Specifically, prepend offset-to-top and typeinfo ptr (currently null). + (make_class_data): Variable dtable_start_offset is sizeof 2 pointers. + Adjust vtable pointers by dtable_start_offse - i.e. skip new words. + (build_dtable_decl): Add declarations for new fields. + +2002-02-20 Per Bothner + + * parse.y (patch_method_invocation): Set CAN_COMPLETE_NORMALLY on call + to finit$ (otherwise generate_bytecode_insns drops it). However, we + don't need to set it on the COMPOUND_EXPR - the caller does that. + +2002-02-20 Nic Ferrier + + * gcj.texi: Option `--classpath' becomes `--CLASSPATH.'Option + `--CLASSPATH' becomes `--classpath.' + * gjavah.c: Likewise. + * jcf-dump.c: Likewise. + * lang-options.h: Likewise. + * lang.c: Likewise. + * jcf-path.c: Updated comment. + (jcf_path_classpath_arg): Renamed `jcf_path_CLASSPATH_arg.' + (jcf_path_CLASSPATH_arg): Renamed `jcf_path_classpath_arg.' + * jcf.h (jcf_path_CLASSPATH_arg): Ditto. + (jcf_path_CLASSPATH_arg): Ditto. + (classpath_u): Updated leading comment. + +2002-02-20 Per Bothner + + * builtins.c (check_for_builtin): New function. + (build_call_or_builtin): Remove. + * java-tree.h: Update accordingly. + * expr.c (expand_invoke): Use build + check_for_builtin instead + of build_call_or_builtin. + * parse.y (patch_invoke): Likewise. This avoids needlessly creating + a new CALL_EXPR node, which means we don't lose the CALL_USING_SUPER + flag (which had caused jcf-write to incorrectly emit invokevirtual). + +2002-02-17 Tom Tromey + + * java-tree.h (TYPE_STRICTFP): New macro. + (struct lang_type) [strictfp]: New field. + (CLASS_STRICTFP): New macro. + (METHOD_STRICTFP): New macro. + (struct lang_decl) [strictfp]: New field. + * parse.y (method_header): Disallow strictfp constructor or + abstract method. + (STRICT_TK): Move before MODIFIER_TK. + * parse.h (CLASS_MODIFIERS): Added ACC_STRICT. + (METHOD_MODIFIERS): Likewise. + (INTERFACE_MODIFIERS): Likewise. + * jcf-write.c (get_access_flags): Likewise. + * class.c (set_class_decl_access_flags): Recognize ACC_STRICT. + (add_method_1): Likewise. + (get_access_flags_from_decl): Likewise. + * jcf-dump.c (print_access_flags): Print in standard order. Also, + recognize strictfp flag. + * jcf.h (ACC_STRICT): New define. + +2002-02-12 David Billinghurst + + * class.c(build_utf8_ref): Move declaration of decl_size + +2002-02-07 Tom Tromey + + * gcj.texi (Input Options): --CLASSPATH does not suppress system + path. + +2002-02-04 Anthony Green + + * class.c (build_utf8_ref): Put UTF-8 constants into merged + sections if available. + +2002-02-04 Bryce McKinlay + + * parse.y (java_expand_classes): Fix typo in static field loop. + +2002-02-02 Richard Henderson + + * class.c (add_field): Mark static fields external. + (build_class_ref): Remove redundant set. + * parse.y (java_expand_classes): Mark static fields of classes + to be compiled as local. + * jcf-parse.c (parse_class_file): Likewise. + +2002-02-02 Nic Ferrier + + * gcj.texi (About CNI): New node. + +2002-02-01 Craig Rodrigues + + PR java/5080 + * jcf-parse.c : Check for HAVE_LOCALE_H before using + setlocale() with LC_CTYPE as a parameter. + * jv-scan.c: Same. + +2002-01-31 Joseph S. Myers + + * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version): + Follow GNU Coding Standards for --version. + +2002-01-28 Tom Tromey + + * expr.c (build_jni_stub): Ensure storage for `meth' is + generated. + * parse.y (java_complete_expand_methods): Set + current_function_decl before building JNI stub. + +2002-01-26 Andreas Tobler + + * gcc/java/builtins.c (sqrt_builtin): Use BUILT_IN_SQRT, not + BUILT_IN_SQRTF. + +2002-01-22 Tom Tromey + + * decl.c (java_init_decl_processing): Use add_predefined_file. + Predefine RawData.java. + (predef_filenames): Removed. + (java_init_decl_processing): Don't register predef_filenames. + * jcf-parse.c (add_predefined_file): New function. + (predefined_filename_p): Rewrote. + (predefined_filename_p): No longer static. + * decl.c (java_init_decl_processing): Call initialize_builtins. + * Make-lang.in (JAVA_OBJS): Added builtins.o. + (java/builtins.o): New target. + * builtins.c: New file. + * parse.y (patch_invoke): Use build_call_or_builtin. + * java-tree.h (build_call_or_builtin): Declare. + (initialize_builtins): Declare. + (java_set_exception_lang_code): Removed unused declaration. + (PREDEF_FILENAMES_SIZE): Removed. + (java_tree_index): Added JTI_PREDEF_FILENAMES. + (predef_filenames): New define. + (add_predefined_file): Declare. + (predefined_filename_p): Declare. + * expr.c (expand_invoke): Use build_call_or_builtin. + +2002-01-22 Kaveh R. Ghazi + + * parse.y (patch_switch_statement): Fix format specifier. + +2002-01-16 Tom Tromey + + More for PR java/5365: + * gjavah.c (print_stub_or_jni): Cause exception to be thrown by + default. + (process_file): Generate include for + java.lang.UnsupportedOperationExceptions. + +2002-01-15 Andreas Jaeger + + * .cvsignore: Add man pages. + +2002-01-15 Tom Tromey + + Fix for PR java/5365: + * gjavah.c (process_file): Turn class name into a file name. + +2002-01-14 Matthias Klose + + * gcj.texi: Fix whitespace and formatting errors in the + synopsis of the man pages. Update copyright. + +2002-01-14 Tom Tromey + + For PR libgcj/5303: + * Make-lang.in (java.install-man): Handle jv-convert man page. + (java.generated-manpages): Added jv-convert.1. + (java.uninstall): Remove jv-convert.1. + (java.maintainer-clean): Likewise. + ($(srcdir)/java/jv-convert.1): New target. + * gcj.texi (Top): Link to jv-convert node. + (Individual utilities): Likewise. + (Invoking jv-convert): New node. + +2001-01-10 Jeff Sturm + Martin Kahlert + + * jcf-parse.c (get_constant): Don't swap lo/hi for big + endian targets when HOST_BITS_PER_WIDE_INT >= 64. + +2002-01-03 Graham Stott + + * class.c (compile_resource_file): Update copyright date. + Constify filename parameter. + (java-tree.h): Update copyright date. + (compile_resource_file): Constify filename parameter. + +2002-01-03 Graham Stott + + * gcc/jcf-parse.c: Update copyright date. + (yyparse): Constify resource_filename. + +2002-01-02 Kaveh R. Ghazi + + * parse.y (src_parse_roots): Don't needlessly zero init. + +2001-12-31 Tom Tromey + + * parse.y (dump_java_tree): New function. + (source_end_java_method): Call it. + (end_class_declaration): Likewise. + * lang.c (java_decode_option): Call dump_switch_p. + +2001-12-28 Tom Tromey + + * gen-table.pl: Don't process characters after \uffff. Added + comment pointing to input file. + +2001-12-28 Kaveh R. Ghazi + + * gen-table.pl: Const-ify output. Document the location of a + suitable unicode input file. + + * chartables.h: Regenerate. + +2001-12-26 Kaveh R. Ghazi + + * chartables.h: Const-ify. + * gjavah.c (options): Likewise. + * jcf-dump.c (options): Likewise. + * jv-scan.c (options): Likewise. + * lex.c (java_start_char_p, java_part_char_p): Likewise. + * parse.y (binop_lookup): Likewise. + +2001-12-23 Kaveh R. Ghazi + + * Make-lang.in (keyword.h): Pass -C to gperf to const-ify + the static arrays that are output. + * jvspec.c (jvgenmain_spec): Make static. + * keyword.gperf (struct java_keyword, java_keyword): Const-ify. + * keyword.h: Regenerate. + * lang.c (string_option, process_option_with_no, lang_f_options, + lang_W_options): Const-ify. + * lex.c (java_lex): Likewise. + +2001-12-21 Richard Henderson + + * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Merge into .. + (get_boehm_type_descriptor): ... here. Arrange for the + TREE_TYPE to get set properly. + +2001-12-21 Richard Henderson + + * class.c (compile_resource_file): Set TREE_PUBLIC on the constructor + only if the target requires collect2. + + * class.c (build_class_ref): Mark _Jv_fooClass DECL_EXTERNAL. + +2001-12-20 Tom Tromey + + For PR java/4509: + * parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute + CAN_COMPLETE_NORMALLY for the node. + * jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't + generate code for second branch if first branch can't complete + normally. + (generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to + the loop head if the loop body can't complete normally. + +2001-12-20 Tom Tromey + + For PR java/4766: + * jcf-write.c (generate_bytecode_insns) [TRY_FINALLY_EXPR]: Handle + case where `finally' clause can't complete normally. + +2001-12-20 Tom Tromey + + Fixes PR java/5057: + * parse.y (analyze_clinit_body): Added this_class parameter. + Check for more cases where we must keep . + (maybe_yank_clinit): Cleaned up flow control. + +2001-12-20 Bryce McKinlay + + * decl.c (java_init_decl_processing): Don't initialize + finit_leg_identifier_node. + * java-tree.h (java_tree_index): Remove JTI_FINIT_LEG_IDENTIFIER_NODE. + (finit_leg_identifier_node): Remove. + (ID_FINIT_P): Don't check for JTI_FINIT_LEG_IDENTIFIER_NODE. + +2001-12-20 Bryce McKinlay + + * mangle.c (mangle_member_name): Don't special-case for + NO_DOLLAR_IN_LABEL. + * mangle_name.c (unicode_mangling_length): Likewise. + (append_unicode_mangled_name): Likewise. + * parse.y (make_nested_class_name): Remove dead NO_DOLLAR_IN_LABEL + code. + +2001-12-20 Bryce McKinlay + + * expr.c (build_java_array_length_access): Don't force null pointer + check unless flag_check_references is set. + +2001-12-20 Tom Tromey + + Fix for PR java/3417: + * parse.y (patch_assignment): Added special processing for + `return'. + (patch_return): Don't convert booleans to integers, and don't + special-case `null'. + +2001-12-20 Joseph S. Myers + + * config-lang.in (diff_excludes): Remove. + +2001-12-17 Joseph S. Myers + + * gcj.texi: Update link to GCC manual. + +2001-12-17 Tom Tromey + + * parse.y (link_nested_class_to_enclosing): Removed useless + statement. + +2001-12-16 Tom Tromey + + * mangle.c (mangle_method_decl): Never emit `C2' constructor. + Fixes PR java/5088. + +2001-12-16 Joseph S. Myers + + * ChangeLog, Make-lang.in, class.c, expr.c, gcj.texi, java-tree.h, + jcf-parse.c, jcf-write.c, lex.c, parse.h, parse.y, verify.c: Fix + spelling errors. + +2001-12-16 Kaveh R. Ghazi + + * lex.c (java_read_unicode, java_lex): Use hex_p/hex_value. + +2001-12-16 Bryce McKinlay + + * decl.c (java_init_decl_processing): Build otable_type correctly. + otable_decl is an otable_type. + +2001-12-15 Bryce McKinlay + + * java-tree.h (otable_methods, otable_decl, otable_syms_decl, + otable_type, otable_ptr_type, method_symbol_type, + method_symbols_array_type, method_symbols_array_ptr_type): New + field/global tree definitions. + (flag_indirect_dispatch): New flag. + * decl.c (java_init_decl_processing): Initialize new otable and + otable_syms type nodes and decls. Add new field "index" to + method_type_node. + * class.c (build_method_symbols_entry): New function. + (make_method_value): Set "index" to to method's vtable index for + virtual methods when indirect-dispatch is not used. + (make_class_data): For indirect-dispatch, don't emit the dtable_decl, + and set vtable_method_count to -1. Set otable and otable_syms field + if indirect-dispatch is used and there was something to put in them. + (build_method_symbols_entry): New function. + (emit_offset_symbol_table): New function. + * expr.c (get_offset_table_index): New function. + (build_invokevirtual): Build array reference to otable at the index + returned by get_offset_table_index, and use the result as the vtable + offset. + (build_invokeinterface): Similar. + * jcf-parse.c (yyparse): If indirect-dispatch, call + emit_offset_symbol_table at the end of compilation, after all classes + have been generated. + * jvspec.c: Don't pass findirect-dispatch to jvgenmain. + * lang.c (flag_indirect_dispatch): Define. + (lang_f_options): Add indirect-dispatch flag. + +2001-12-14 Matthias Klose + + * gcj.texi: Markup for man page generation. Document missing + options printed by --help. + Terminate description of gij's -ms option with a dot. + * Make-lang.in ($(srcdir)/java/*.1): New targets. + (java.generated-manpages java.install-man, java.uninstall, + java-maintainer-clean) Updated. + +2001-12-14 Hans Boehm + + * class.c (get_dispatch_table): Fix java vtable layout + for TARGET_VTABLE_USES_DESCRIPTORS. + * decl.c (java_init_decl_processing): Initialize + alloc_no_finalizer_node, finalize_identifier_node. + * expr.c (class_has_finalize_method): New function. + (expand_java_NEW): Generate calls for finalizer-free allocation. + (build_invokevirtual): Fix java vtable layout for + TARGET_VTABLE_USES_DESCRIPTORS. + * java-tree.h (enum java_tree_index): New entries: + JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE. + (alloc_no_finalizer_node, finalize_deintifier_node): New macros. + (class_has_finalize_method): declare. + (HAS_FINALIZER_P): New macro. + * parse.y (patch_invoke): Generate calls for finalizer-free + allocation. + +2001-12-12 Matthias Klose + + * Make-lang.in: JAVA_INSTALL_NAME, JAVA_CROSS_NAME: Remove + whitespace at end of line. + +2001-12-11 Tom Tromey + + * lex.c (java_init_lex): Define wfl_to_string as + gnu.gcj.runtime.StringBuffer unless generating bytecode. + +2001-12-11 Jeff Sturm + + * class.c (make_method_value): Use null_pointer_node to + represent empty exception table. + +2001-12-10 Tom Tromey + + * check-init.c (check_init) [SWITCH_EXPR]: Use SWITCH_HAS_DEFAULT. + +2001-12-10 Douglas B. Rupp + + * Make-lang.in (jvspec.o): Add $(OUTPUT_OPTION). + +2001-12-09 Per Bothner + + * check-init.c (current_switch_has_default): New static field. + (check_init): Case DEFAULT_EXPR: Set current_switch_has_default. + Case SWITCH_EXPR: Save/restore current_switch_has_default. If no + DEFAULT_EXPR seen, simulate a default alternative that copies state. + +2001-12-09 Tom Tromey + + * check-init.c (check_init): Don't allow pre- or post- increment + or decrement of final variable. + (final_assign_error): Minor error message rewording. + +2001-12-08 Tom Tromey + + * java-tree.h: Fixed typo. + + * gjavah.c (decompile_method): Don't decompile to `return this' + for static methods. + + * gjavah.c (cxx_keywords): Re-sorted. + * lex.c (cxx_keywords): Re-sorted. + + * gjavah.c (HANDLE_METHOD): Set `decompiled' before doing anything + else. + + * gjavah.c (print_namelet): Clear subnamelets. + (HANDLE_METHOD): Set `method_printed' earlier. + +2001-12-07 Tom Tromey + + * lang.c (lang_f_options): Added + optimize-static-class-initialization. + (java_decode_option): Removed special case. + +2001-12-07 Per Bothner + + * check-init.c (check_init): Fix typo freeing memory twice. + +2001-12-05 Per Bothner + + Restore support for static class initialization optimization. + * java-tree.h (STATIC_CLASS_INIT_OPT_P): Re-enable. + * check-init.c (check_int): At end of BLOCK handle initialization + blocks, which used to be done in java_complete_expand_method but did + not handle the case where check_for_initialization might allocate + more than a word of bits. + * decl.c (lang_make_tree): The smic field is now a tree. + * expr.c (build_class_init): Set DECL_FUNCTION_INIT_TEST_CLASS field. + * java-tree.h (DECL_FUNCTION_INIT_TEST_TABLE): New macro. + + * parse.y (emit_test_initialization): Combine hash_lookup calls. + + * java-tree.h (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): + Change from a hash table to a list. + (struct_lang_decl): Change field 'smic' to match. + * class.c (add_method_1): Initialize + DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND to null list. + * parse.y (adjust_init_test_initialization): Removed - inlined into - + (java_expand_method_bodies): -here, since 'smic' is now a list. + (patch_invoke): Add to 'smic' list, instead of hash_lookup. + + * check-init.c (WORD_SIZE): Use BITS_PER_UNIT. + + * class.c (java_hash_compare_tree_node): Fix casts. + +2001-12-04 Per Bothner + + * check-init.c: Handle definite unassignment to finals in addition + to definite assignment. + (loop_current_locals): New field. + (num_current_locals, int start_current_locals, num_current_words): + Make static. + (SET_P, CLEAR_P, SET_BIT): Add needed but missing parentheses. + (ASSIGNED_P, UNASSIGNED_P, SET_ASSIGNED, SET_UNASSIGNED, + CLEAR_ASSIGNED, CLEAR_UNASSIGNED): New macros. + (get_variable_decl, check_final_reassigned): New functions. + (check_init, check_bool_init): Modify as needed for checking finals. + (check_for_initialization): Take extra parameter and return void. + Do extra start-up logic to check final fields for assignment. + * parse.y (check_static_final_variable_assignment_flag, + reset_static_final_variable_assignment_flag, check_final_assignment, + check_final_variable_local_assignment_flag, + reset_final_variable_indirect_assignment_flag, + reset_final_variable_global_assignment_flag): Remove functions. + (java_complete_expand_methods, outer_field_access_fix, + patch_assignment): Remove no-longer used logic. + * java-tree.h (DECL_FIELD_FINAL_IUD): Change usage and comments. + * parse.y (register_fields, java_complete_tree): Update accordingly. + + * check-init.c (ALLOC_WORDS/FREE_WORDS): Use xmalloc/free, not alloca. + (DECLARE_BUFFERS, RELEASE_BUFFERS, ALLOC_BUFFER, FREE_BUFFER): New. + (check_cond_init, check_bool2_init): Use DECLARE_BUFFERS. + + * java-tree.h (STATIC_CLASS_INIT_OPT_P): Temporarily turn off. + + * java-tree.h (DECL FINAL): New bit-field. + (METHOD_FINAL, FIELD_FINAL, CLASS_FINAL): Define as DECL_FINAL. + (LOCAL_FINAL_P): Use DECL_FINAL rather than old LOCAL_FINAL. + (DECL_INIT_CALLS_THIS): New macro. + (struct lang_decl): New bit-field init_calls_this. + (DECL_FUNCTION_ALL_FINAL_INITIALIZED, DECL_FIELD_FINAL_LIIC, + DECL_FIELD_FINAL_IERR, LOCAL_FINAL, TYPE_HAS_FINAL_VARIABLE + (DECL_BIT_INDEX): Change to use pointer_alias_set since we now + use it for both local variables and final fields. + (struct lang_decl_var): Remove bit-fields final_liic, final_ierr, + and local_final. + (struct lang_type): Remove hfv bit-field. + (check_for_initialization): Change to return void. + + * java-tree.h (IS_ARRAY_LENGTH_ACCESS): New macros. + * expr.c (build_java_array_length_access): Set IS_ARRAY_LENGTH_ACCESS. + * check-init.c (final_assign_error): New helper function. + (check_final_reassigned, check_init): Use it. + (check_init): Also check IS_ARRAY_LENGTH_ACCESS for ARRAY.length. + + * java-tree.h (struct lang_decl, struct lang_decl_var): Change all + bit-fields to unsigned. + +2001-12-03 Per Bothner + + * parse.y (patch_binop): Minor constant folding. + + * parse.y (build_current_thisn): Shorter 'buffer'. + +2001-12-03 Per Bothner + + * decl.c (complete_start_java_method): Now generate TRY_FINALLY_EXPR + instead of CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR. + * jcf-write.c (generate_bytecode_insns): Remove support for + CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR as they are no longer used. + * check-init.c (check_init): Likewise. + +2001-12-03 Per Bothner + + * verify.c (subroutine_nesting): New function. + (verify_jvm_instructions): Use it to fix logic for checking that + we're done with the current subroutine. + + * verify.c (verify_jvm_instruction): For OPCODE_checkcast and + OPCODE_instanceof use POP_TYPE macro for better diagnostics. + +2001-12-03 Per Bothner + + * jcf.h: Fix obvious typo in comment. + * typeck.c (build_null_signature): Add comment. + +2001-12-03 Neil Booth + + * expr.c: Remove leading capital from diagnostic messages, as + per GNU coding standards. + * jcf-io.c: Similarly. + * jcf-parse.c: Similarly. + * jv-scan.c: Similarly. + * jvspec.c: Similarly. + * mangle.c: Similarly. + +2001-12-02 Tang Ching-Hui + Alexandre Petit-Bianco + + * expr.c (build_java_arrayaccess): Call save_expr on array for + correct evaluation order, modified comment, fixed indentation. + * parse.y: (patch_assignment): Correctly extract the array base + from the tree generate by build_java_arrayaccess, added comments. + (patch_array_ref): Remove SAVE_EXPR on ARRAY_REF. + Fixes PR java/3096, PR java/3803, PR java/3965. + +2001-12-01 Neil Booth + + * expr.c (expand_byte_code): Remove trailing periods from messages. + * jcf-parse.c (load_class, jcf_parse): Similarly. + * jcf-write.c (generate_classfile): Similarly. + * lex.c (java_lex): Similarly. + +2001-11-30 Bryce McKinlay + + * class.c (add_interface_do): Set BINFO_VPTR_FIELD. + +2001-11-29 Joseph S. Myers + + * Make-lang.in (java.generated-manpages): New dummy target. + +2001-11-27 Rainer Orth + + * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks + ASM_FINAL_SPEC. + (lang_specific_pre_link): Use set_input to set input_filename. + Append `main' here. + * jvgenmain.c (usage): Append literal `main' to CLASSNAME. + (main): Fix definition. + Strip `main' from classname. + Fixes PR java/227. + +2001-11-18 Roger Sayle + + * parse.h (java_expand_switch): Remove old prototype. + +2001-11-18 Tom Tromey + + Fix for PR java/1401: + * jcf-write.c (generate_bytecode_insns) [binop]: Handle case where + arg0 is null. + (generate_bytecode_insns) [MODIFY_EXPR]: Handle `OP=' case + correctly. + +2001-11-18 Neil Booth + + * lang.c (finish_parse): Rename to java_finish. + (LANG_HOOKS_FINISH, java_finish): New. + +2001-11-15 Neil Booth + + * decl.c (init_decl_processing): Rename java_init_decl_processing. + * java-tree.h: New prototype. + * lang.c (java_init): Update prototype. Combine with old init_parse. + +2001-11-13 Tom Tromey + + * gjavah.c (method_signature): New global. + (HANDLE_METHOD): Set it. + (decompile_return_statement): New function. + (decompile_method): Use it. + (print_method_info): Removed `synth' argument. + +2001-11-09 Neil Booth + + * java-tree.h (java_set_yydebug): New. + * jcf-parse.c (set_yydebug): Rename java_set_yydebug. + * lang.c (LANG_HOOKS_SET_YYDEBUG): Override. + (print_lang_decl, print_lang_type, print_lang_identifier, + print_lang_statistics, lang_print_xnode): Remove. + +2001-11-09 Neil Booth + + * jcf-parse.c (init_lex): Remove. + * lang.c (language_string, lang_identify): Remove. + (struct lang_hooks): Constify. + (LANG_HOOKS_NAME): Override. + (init_parse): Update. + +2001-11-08 Andreas Franck + + * Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle + program_transform_name the way suggested by autoconf. + (java.install-common): Also transform auxiliary program names with + program_transform_name. + +2001-11-08 Tom Tromey + + * parse.y (trap_overflow_corner_case): New rule. + (unary_expression): Use it. + * lex.c (java_init_lex): Don't set minus_seen. + (yylex): Don't use minus_seen. Communicate overflow to parser for + it to handle. + (error_if_numeric_overflow): New function. + * parse.h (minus_seen): Removed field. + (JAVA_RADIX10_FLAG): New define. + +2001-11-07 Tom Tromey + + Patch for PR java/1414: + * parse.y (case_label_list): New global. + (goal): Register case_label_list with GC. + (java_complete_lhs): Save new case on case_label_list. + (patch_switch_statement): Check for duplicate case labels. + +2001-11-07 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Removed unused third argument. + (java_complete_lhs): Removed unused third argument to patch_assignment. + +2001-11-06 Neil Booth + + * lang.c: Include langhooks-def.h. + * Make-lang.in: Update. + +2001-10-31 Zack Weinberg + + * Make-lang.in: Replace $(INTL_TARGETS) with po-generated. + +2001-10-29 Bryce McKinlay + + * mangle.c (find_compression_record_match): Don't match compression + records for package name elements unless they occur at the start of + the name. Fix for PR java/4717. + +2001-10-25 Bryce McKinlay + + * expr.c (expand_java_field_op): Don't special-case references to + java.lang.PRIMTYPE.TYPE. + (build_primtype_type_ref): Removed. + * java-tree.h (build_primtype_type_ref): Remove prototype. + * parse.y (maybe_build_primttype_type_ref): Removed. + (complete_function_arguments): Don't special-case references to + java.lang.PRIMTYPE.TYPE. + (patch_assignment): Likewise. + (array_constructor_check_entry): Likewise. + +2001-10-24 Alexandre Petit-Bianco + + * mangle.c (static tree compression_table): Fixed leading comment. + * parse.h (struct parser_ctxt): Fixed field comment. + * parse.y (check_pkg_class_access): New prototype, fixed leading + comment, new parameter used to emit error only if passed as true. + (parse_check_super): Pass extra argument to check_pkg_class_access. + (do_resolve_class): Likewise. + (process_imports): Likewise. + (read_import_dir): Fixed indentation. + (find_in_imports_on_demand): New local class_type_name. Local + node_to_use deleted. while loop changed into for loop. Report + multiple definition only for accessible classes. Improved error + message. + (start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS + assigned to parameter list, fixed indentation. while loop changed + into for loop, restore TREE_CHAIN on local `tem' before the next + iteration. + +2001-10-23 Richard Kenner + + * lang.c (lang_get_alias_set): Deleted. + +2001-10-21 Kaveh R. Ghazi + + * gjavah.c (jni_print_char): Fix thinko in last change. + + * gjavah.c (jni_print_char, decode_signature_piece): Use + safe-ctype macros and/or fold extra calls into fewer ones. + * lex.c (java_read_unicode, java_lex): Likewise. + * lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT, + JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise. + * mangle_name.c (append_unicode_mangled_name, + unicode_mangling_length): Likewise. + +2001-10-17 Richard Henderson + + * Make-lang.in (java/lang.o): Depend on langhooks.h. + +2001-10-15 Alexandre Petit-Bianco + + * lang.c (langhooks.h): Included. + (LANG_HOOKS_INIT): Redefined. + (LANG_HOOKS_INIT_OPTIONS): Likewise. + (LANG_HOOKS_DECODE_OPTION): Likewise. + (struct lang_hooks lang_hooks): New initialization. + +2001-10-11 Per Bothner + + * parse.y (patch_synchronized_statement): Use a TRY_FINALLY_EXPR + rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair. + The former is simpler, and jcf-write.c handles it better. + (java_complete_lhs): No longer need to handle CLEANUP_POINT_EXPR + or WITH_CLEANUP_EXPR. + * jcf-write.c: Revert Alex's change from 2000-10-18. It is no + longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine. + + * parse.y (patch_if_else_statement): If the condition is constant, + optimize away the test. + +2001-10-09 Alexandre Petit-Bianco + + * parse.y (patch_cast): Call patch_string on the first operand of + the incoming node, update it if necessary. Fixes PR java/4510. + +2001-10-09 Bryce McKinlay + + * parse.y (find_as_inner_class): Don't disregard the enclosing scope + when name qualifier matches a package name. + +2001-10-08 Tom Tromey + + Fix for PR java/4489: + * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always + force a new label when computing `body_block'. + +2001-10-07 Kaveh R. Ghazi + + * jcf-io.c (format_uint): Const-ify. + * lang.c (java_tree_code_type, java_tree_code_length): Likewise. + * lex.c (java_get_line_col): Likewise. + * parse.y (build_incdec): Likewise. + +2001-10-05 Alexandre Petit-Bianco + + * parse.y (register_incomplete_type): Set JDEP_SUPER to be given + a NULL enclosing context if appropriate. Fixes PR java/4466. + +2001-10-03 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Use lvalue's original TYPE when + building the final COMPOUND_EXPR. + (try_reference_assignconv): Fixed leading comment. + +2001-09-26 Alexandre Petit-Bianco + + * parse.y (check_final_variable_indirect_assignment): For + COMPOUND_EXPR, return only if finals were found initialized + properly, if not, keep on checking. + (check_final_variable_global_assignment_flag): New local + error_found, set when appropriate and used to decide whether to + report uninitialized finals. Fixed typo in comment. + +2001-09-22 Alexandre Petit-Bianco + + * decl.c (init_decl_processing): Fixed typo in predef_filenames + last three initializations. Fixes PR java/4360. + +2001-09-21 Richard Henderson + + * class.c (get_dispatch_table): Handle function descriptors. + (build_dtable_decl): Likewise. + * expr.c (build_invokevirtual): Likewise. + +2001-09-20 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Build class initialization + when static finals are used to qualify method invocation. + Fixes PR java/4366. + +2001-09-19 Alexandre Petit-Bianco + + * parse.h: (WFL_STRIP_BRACKET): Re-written using + build_type_name_from_array_name. + (STRING_STRIP_BRACKETS): New macro. + * parse.y (build_type_name_from_array_name): New function. + (array_creation_expression:): Accumulate []s instead of [s. + (cast_expression:): Accumulate []s instead of [s after cast type + name. + (build_array_from_name): Local string deleted, use + build_type_name_from_array_name. + (build_unresolved_array_type): Accumulate []s instead of [s after + type name. + (register_fields): Fixed comment. + (resolve_class): Local name, base deleted, new locals tname and + array_dims. Use build_type_name_from_array_name. Use array_dims to + build array type. + (purify_type_name): Use STRING_STRIP_BRACKETS. + +2001-09-18 Andreas Jaeger + + * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout. + * jv-scan.c: Likewise. + +2001-09-17 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Inner class creation context + check not enforced within constructors. Fixes PR java/1873. + +2001-09-16 Tom Tromey + + * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call + NOTE_PUSH for single-case push. Fixes PR java/4189. + +2001-09-13 Alexandre Petit-Bianco + + * java-tree.h (TYPE_IMPORT_LIST): New macro. + (TYPE_IMPORT_DEMAND_LIST): Likewise. + (struct lang_type): New fields import_list and import_demand_list. + * parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and + TYPE_IMPORT_DEMAND_LIST with ctxp counterparts. + (do_resolve_class): New local saved_enclosing_type, initialized, + passed as parameter to find_in_imports and find_in_imports_on_demand. + (find_in_imports): Added paramater enclosing_type, use its + TYPE_IMPORT_LIST when applicable. + (find_in_imports_on_demand): Added parameter enclosing_type, use + its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals + declaration and initialization. + (fold_constant_for_init): Switch/restore current_class to the + appropriate context. + +2001-09-13 Mark Mitchell + + * verify.c (verify_jvm_instructions): Fix typo. + +2001-09-13 Kaveh R. Ghazi + + * expr.c (expand_invoke): Const-ification. + * parse.y (patch_method_invocation): Likewise. + +2001-09-12 Kaveh R. Ghazi + + * gjavah.c (cxx_keywords): Const-ification. + * keyword.gperf (java_keyword): Likewise. + * lang.c (java_tree_code_name): Likewise. + * lex.c (cxx_keywords): Likewise. + * parse.y (java_parser_context_suspend, merge_string_cste): Likewise. + +2001-09-11 Richard Henderson + + * parse.h (ctxp_for_generation): Mark extern. + +2001-09-10 Richard Henderson + + * class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl. + +2001-09-07 Matt Kraai + + * typeck.c (java_array_type_length, build_prim_array_type): + Represent empty arrays by NULL index. + +2001-09-06 Alexandre Petit-Bianco + + * java-tree.h (compile_resource_file): Grouped with other prototypes. + * jvspec.c (lang_specific_driver): Removed unused local `ptr.' + +2001-09-06 Anthony Green + + * class.c (O_BINARY): Define if necessary. + (registerResource_libfunc): Declare. + (init_class_processing): Initilize registerResource_libfunc. + (compile_resource_file): New function. + * java-tree.h (resource_name): Declare. + (compile_resource_file): Declare. + * jcf-parse.c (yyparse): Handle compiling java resource files. + * lang.c (java_decode_option): Handle -fcompile-resource option. + * jvspec.c (lang_specific_driver): Handle -R flag for compiling + resource files. + * gcj.texi (Code Generation): Add documentation for -R flag. + +2001-09-05 Alexandre Petit-Bianco + + * jcf-write.c (generate_classfile): Issue an error in case of + field/initial value mismatch. + * parse.y (analyze_clinit_body): Keep if an array is + being initialized and we're generating bytecode. + (java_complete_lhs): In MODIFY_EXPR section: added comments, + set DECL_INITIAL properly when appropriate. + Fixes PR java/4230 + Fixes PR java/4204 + +2001-09-01 Per Bothner + + * parse.y (maybe_yank_clinit): A field without an initializer is not + relevant. All initializers except static final and constant require + , regardless of flag_emit_class_files. + +2001-08-31 Per Bothner + + * class.c (set_constant_value): When not emitting class files, then a + String ConstantValue is a utf8const_ptr_type. + +2001-08-30 Per Bothner + + * jcf-write.c (generate_classfile): Check that field is primitive + or string before emitting ConstantValue attribute. + +2001-08-30 Per Bothner + + * parse.y (resolve_qualified_expression_name): If creating a + COMPOUND_EXPR, set it's type correctly. + +2001-08-30 Per Bothner + + * jcf-io.c (open_class): Set filename field. + + * jcf-parse,c (parse_class_file): Set current_function_decl + for better error message when Code attribute is missing. + + * lang.c (put_decl_node, lang_print_error): Re-arrange for + better diagnostics, especially for constructors. + +2001-08-30 Per Bothner + + * jcf-write.c (generate_classfile): Don't write ConstantValue + attribute if field is not final, for compatibility with jdk. + + * jcf-write.c (generate_classfile): Convert ConstantValue values + to correct type. Work-around for front-end bug. + * class.c (set_constant_value): Error if constant has wrong type. + +2001-08-30 Per Bothner + + * jcf-dump.c (print_constant): Fix fencepost error so "Float" and + "Double" are printed at verbosity 1. + + * jcf-dump.c (main): Disable flag_print_attributes if --javap. + + * jcf-dump.c (SPECIAL_IINC): Remove unneeded casts to long. + +2001-08-30 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Don't verify final re-assignment here. + (java_complete_lhs): Verify assignments to finals calling + patch_assignment. Verify re-assignments to finals before calling + patch_assignment. + +2001-08-29 Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs. + Fixes PR java/1413 + +2001-08-28 Alexandre Petit-Bianco + + * lex.c (java_lex): new local found_hex_digits. Set and then used + in test to reject invalid hexadecimal numbers. + * parse.y (java_complete_tree): Prevent unwanted cast with + initialized floating point finals. + (patch_binop): Emit a warning when detecting a division by zero, + mark result not constant, don't simplify non integer division. + +2001-08-28 Per Bothner + + * jcf-write.c (generate_bytecode_insns): For increments and + decrements just recurse to push constant. Improvement on Mark's patch. + +2001-08-28 Mark Mitchell + + * jcf-write.c (generate_bytecode_insns): Generate an integer to + real conversion for increments and decrements of reals. + +2001-08-27 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Handle unresolved + qualified expressions, prevent numerical qualifiers, fixed typo. + Fixes PR java/4141 + +2001-08-24 Alexandre Petit-Bianco + + * parse.y (check_deprecation): Handle TYPE_DECL in a special case, + don't report anything but deprecated class when marked so. Handle + VAR_DECL. + (patch_method_invocation): Check deprecation on methods and types. + (patch_binop): code becomes an enum tree_code, added default: to + switch to handle that. Detect division by zero, try to fold and + return before using a subroutine. + +2001-08-23 Alexandre Petit-Bianco + + * jcf-parse.c (yyparse): Set magic to 0, don't issue error for a + file smaller than 4 bytes. + * parse.y (check_inner_circular_reference): New function. + (check_circular_reference): Likewise. + (array_initializer:): Accept {,}. + (java_check_circular_reference): Rewritten using + check_circular_reference and check_inner_circular_reference. + (java_complete_expand_method): Unconditionally save and restore + the unpurged exception list. + (build_dot_class_method_invocation): Unmangle signature parameter. + +2001-08-21 Tom Tromey + + * decl.c (init_decl_processing): Add `throws' field to method + descriptor. + * class.c (make_method_value): Compute `throws' field for method. + +2001-08-22 Alexandre Petit-Bianco + + * parse.y (resolve_inner_class): Keep local_enclosing to NULL if + circularity is detected. + (ctors_unchecked_throws_clause_p): Fixed leading comment. + +2001-08-17 Richard Henderson + + * class.c (emit_register_classes): Add align parameter to + call to assemble_integer. + +2001-08-16 Alexandre Petit-Bianco + + * jcf-parse.c (load_class): New locals saved and class_loaded. If + loading a class_or_name fails, try considering an innerclass name + and load the enclosing context. + * parse.y (resolve_inner_class): New function. + (find_as_inner_class): Added leading comment. + (register_incomplete_type): Keep the current context as enclosing + context for JDEP_FIELD dependencies. + (do_resolve_class): Locals new_class_decl and super initialized to + NULL. Call resolve_inner_class, explore the enclosing context + superclass if necessary. + Fixes PR java/4007 + +2001-08-16 Tom Tromey + + * jcf-dump.c (main): Updated for change to jcf_path_seal. + * gjavah.c (main): Updated for change to jcf_path_seal. + * lang.c (version_flag): New global. + (java_decode_option): Recognize `-version'. + (java_init): Update for change to jcf_path_seal. + * jcf.h (jcf_path_seal): Added `print' argument. + * jcf-path.c (jcf_path_seal): Added `print' argument. + +2001-08-13 Zack Weinberg + + * Make-lang.in (java/decl.o): Update dependencies. + * decl.c: Include libfuncs.h, don't include toplev.h. + +2001-08-12 Alexandre Petit-Bianco + + * decl.c (init_decl_processing): exception_type_node, + class_not_found_type_node, and no_class_def_found_type_node + initialized. predef_filenames augmented accordingly. + instinit_identifier_node initialized. + * java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed. + * java-tree.h (enum java_tree_index): New entries + JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE, + JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE. + (exception_type_node): New macro. + (class_not_found_type_node): Likewise. + (no_class_def_found_type_node): Likewise. + (instinit_identifier_node): Likewise. + (PREDEF_FILENAMES_SIZE): Adjusted. + (TYPE_HAS_FINAL_VARIABLE): Fixed typo. + (struct lang_type): Fixed typo in bitfield name. + (DECL_INSTINIT_P): New macro. + (ID_INSTINIT_P): Likewise. + * jcf-write.c (generate_classfile): instinit$ bears the Synthetic + attribute. + * parse.y (encapsulate_with_try_catch): New function. + (generate_instinit): Likewise. + (build_instinit_invocation): Likewise. + (ctors_unchecked_throws_clause_p): Likewise. + (add_instance_initializer): Deleted. + (build_instance_initializer): Likewise. + (in_instance_initializer): Likewise. + (check_method_redefinition): instinit$ not to be verified. + (java_complete_expand_methods): Generate instinit$, simplified code. + (build_dot_class_method): Eliminated unnecessary locals. Use + encapsulate_with_try_catch, removed unnecessary code. + (fix_constructors): New local iii. Use build_instinit_invocation. + (patch_method_invocation): Added comment. + (maybe_use_access_method): Don't consider instinit$. + (find_applicable_accessible_methods_list): Shorten the search for + instinit$ too. + (java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed. + (patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer. + (patch_throw_statement): Likewise. Fixed typo. + +2001-08-12 David Edelsohn + + Revert: + 2001-08-02 Rainer Orth + * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks + ASM_FINAL_SPEC. + (lang_specific_pre_link): Use set_input to set input_filename. + Append `main' here. + * jvgenmain.c (usage): Append literal `main' to CLASSNAME. + (main): Fix definition. + Strip `main' from classname. + Fixes PR java/227. + +2001-08-11 Zack Weinberg + + * lex.h: Don't include setjmp.h. Don't define + SET_FLOAT_HANDLER or prototype set_float_handler. + +2001-08-09 Alexandre Petit-Bianco + + * expr.c (java_lang_expand_expr): Call `expand_end_bindings' and + `poplevel' in the right order. + +2001-08-09 Richard Henderson + + * Make-lang.in (class.o): Depend on TARGET_H. + * class.c (emit_register_classes): Use target hooks instead of + assemble_constructor and assemble_destructor. + +2001-08-08 Alexandre Petit-Bianco + + * check-init.c (flags.h): Include + (check_init): Don't report uninitialized static class + initialization flags, don't free bit index when doing static class + initialization optimization. + (check_for_initialization): Return type changed to `unsigned int.' + (attach_initialized_static_class): New function. + * class.c (add_method_1): Create the initialized static class + table if necessary. + (finish_class): Always emit deferred inline methods. + * decl.c (emit_init_test_initialization): Moved to expr.c + (complete_start_java_method): Don't traverse + DECL_FUNCTION_INIT_TEST_TABLE. + (lang_mark_tree): Mark hash tables in function decls. + * expr.c (emit_init_test_initialization): Moved from decl.c. + (build_class_init): Create LAG_DECL_SPECIFIC for the static class + initialization flag, set DECL_CONTEXT and + LOCAL_CLASS_INITIALIZATION_FLAG. + (java_lang_expand_expr): Emit initialization code for static class + initialized flags when entering block, if necessary. + * gcj.texi (-fno-optimize-static-class-initialization): Documented. + * java-tree.h (flag_optimize_sci): New global variable declaration. + (DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro. + (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise. + (LOCAL_FINAL_P): Fixed typo in comment. + (FINAL_VARIABLE_P): Likewise. + (LOCAL_CLASS_INITIALIZATIO_FLAG): New macro. + (LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise. + (struct lang_decl): New fields `ict', `smic' and `cif.' + (check_for_initialization): New returned value for global. + (attach_initialized_static_class): New global function. + (STATIC_CLASS_INIT_OPT_P): New macro. + * lang-options.h (-fno-optimize-static-class-initialization): New flag. + * lang.c (java_decode_option): Handle + `-fno-optimize-static-class-initialization' + * parse.y (start_complete_expand_method): New function. + (java_expand_method_bodies): Likewise. + (attach_init_test_initialization_flags): Likewise. + (adjust_init_test_initialization): Likewise. + (emit_test_initialization): Likewise. + (java_complete_expand_methods): Nullify abstract and native method + bodies. + (java_complete_expand_method): New locals `fbody', `block_body' + and `exception_copy.' Reorganized: directly return on empty method + bodies, call `start_complete_expand_method', remember definitely + initialized static class in function, don't expand method bodies. + (java_expand_classes): Call `java_expand_method_bodies' before + `finish_class' when compiling to native. + (resolve_expression_name): Use `orig' after building outer class + field access. + (patch_invoke): Remember static method invocations. + +2001-08-06 Richard Henderson + + * class.c (emit_register_classes): Pass a symbol_ref and priority + to assemble_constructor. + +2001-08-02 Alexandre Petit-Bianco + + * java-tree.h (all_class_filename): New macro. + (enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.' + (BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link + newly created IDENTIFIER_NODE to `all_class_filename.' + +2001-08-01 Jeff Sturm + + * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): + Use ggc_add_tree_root to register roots. + +2001-07-31 Alexandre Petit-Bianco + + * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its + second operand calling check_init. + * decl.c (complete_start_java_method): Swaped second and third + arguments while creating WITH_CLEANUP_EXPR node. + * jcf-write.c (generate_bytecode_insns): Use second operand + instead of third when handling WITH_CLEANUP_EXPR. + * parse.y (java_complete_lhs): Expand second operand of + WITH_CLEANUP_EXPR nodes. + (patch_synchronized_statement): Swaped second and third arguments + while creating WITH_CLEANUP_EXPR node. + +2001-07-18 Alexandre Petit-Bianco + + * parse.y (create_interface): Avoid cyclic inheritance report when + syntax error encountered during class definition. + Fixes PR java/2956 + +2001-08-02 Rainer Orth + + * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks + ASM_FINAL_SPEC. + (lang_specific_pre_link): Use set_input to set input_filename. + Append `main' here. + * jvgenmain.c (usage): Append literal `main' to CLASSNAME. + (main): Fix definition. + Strip `main' from classname. + Fixes PR java/227. + +2001-07-18 Tom Tromey + + For PR java/2812: + * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H. + * lex.c (java_new_lexer): Use ICONV_CONST. + (java_read_char): Likewise. + * Make-lang.in (jc1$(exeext)): Link against LIBICONV. + (jv-scan$(exeext)): Likewise. + +2001-07-17 Alexandre Petit-Bianco + + * parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.' + * parse.y (check_class_interface_creation): Allow `private' if the + enclosing is not an interface. + (create_interface): Interface tagged public if the enclosing + context is an interface. + (create_class): Class tagged public if the enclosing context + is an interface. + Fixes PR java/2959 + +2001-07-17 Alexandre Petit-Bianco + + * class.c (push_class): Set DECL_SIZE to `integer_zero_node.' + Fixes PR java/2665 + +2001-07-14 Tim Josling + + * check-init.c (check_init): Remove references to EXPON_EXPR. + +2001-07-13 Alexandre Petit-Bianco + + * parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset + TREE_CONSTANT_OVERFLOW of CASE_EXPR value. + Fixes PR java/3602 + +2001-07-13 Tom Tromey + + * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1 + invocation. + +2001-07-12 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Don't override primary if one + is already provided, but let this$ be built. Fixed comment. + +2001-07-12 Alexandre Petit-Bianco + + * parse.y (empty_statement:): Report empty statement error only + when found at class declaration level. + Fixes PR java/3635 + +2001-07-12 Tom Tromey + + * expr.c (expand_load_internal): New function. + (LOAD_INTERNAL): Use it. + +2001-07-11 Alexandre Petit-Bianco + + * parse.y (verify_constructor_super): Compare anonymous class ctor + args with `valid_method_invocation_conversion_p.' + Fixes PR java/3285 + +2001-07-10 Alexandre Petit-Bianco + + * lang-specs.h: Forbit the use if `-femit-class-file{s}' without + `-fsyntax-only.' Fixes PR java/3248 + +2001-07-10 Alexandre Petit-Bianco + + * jcf-io.c (find_class): Clarified error message. Fixes PR java/2603 + +2001-07-10 Alexandre Petit-Bianco + + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the + current function is static. Fixes PR java/1970 + +2001-07-09 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Add enclosing context to ctor + calls if necessary. Fixes PR java/2953 + +2001-07-09 Alexandre Petit-Bianco + + * parse.y (resolve_package): Abort if qualified expression member + isn't right. + (qualify_ambiguous_name): Don't qualify as type if `this' in use. + Fixes PR java/1391 + +2001-07-07 Zack Weinberg + + * verify.c: Don't use // comments. + +2001-07-05 Tom Tromey + + * lang.c (flag_assume_compiled): Removed. + * java-tree.h (flag_assume_compiled): Removed. + * lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc, + -fhash-synchronization, -fuse-divide-subroutine, + -fcheck-references, -femit-class-file, -femit-class-files, + -fassume-compiled. Updated --encoding information. Changed + -foutput-class-dir to `-d'. + +2001-07-04 Daniel Berlin + + * jcf-parse.c (parse_class_file): Add lineno parameter to + debug_start_source_file call. + +2001-07-04 Joseph S. Myers + + * gcj.texi: Use gpl.texi. + * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update + dependencies and use doc/include in search path. + +2001-07-03 Jeff Sturm + + * parse.y (fix_constructors): Test if a CALL_EXPR invokes + `this'. If so, don't build instance initializers. + +2001-07-03 Alexandre Petit-Bianco + + * parse.y (resolve_expression_name): Improved error message for + inner class cases. Fixes PR java/1958 + +2001-06-28 Gabriel Dos Reis + + * lang.c: #include diagnostic.h + (lang_print_error): Add a `diagnostic_context *' parameter. + (java_dummy_print): Likewise. + * Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h + +2001-06-27 Alexandre Petit-Bianco + + * jcf-parse.c (gcc_mark_jcf): Test for a finished JCF. + * jcf.h (typedef struct JCF): New bitfield `finished.' + (JCF_FINISH): Set `finished.' + (JCF_ZERO): Reset `finished.' + Fixes PR java/2633 + +2001-06-27 Alexandre Petit-Bianco + + * parse.y (class_body_declaration:): Don't install empty instance + initializers. + Fixes PR java/1314 + +2001-06-27 Alexandre Petit-Bianco + + * class.c (set_super_info): Call `set_class_decl_access_flags.' + (set_class_decl_access_flags): New function. + * java-tree.h (set_class_decl_access_flags): New prototype. + * jcf-parse.c (handle_innerclass_attribute): Read and set access flags. + (parse_class_file): New local `decl_max_locals.' Take wide types + into account to compute DECL_MAX_LOCALS. + * parse.y (type_import_on_demand_declaration:): Ignore duplicate + imports on demand. + +2001-06-22 Jan van Male + + * zipfile.h: Use GCC_JCF_H instead of JCF_H. + +2001-06-20 Alexandre Petit-Bianco + + * class.c (java_hash_tree_node): Fixed indentation in leading comment. + * parse.y (do_resolve_class): Moved comments out to leading comment + section. Removed local `start', New local `_ht' and + `circularity_hash.' Record `enclosing' in hash table and search + it to detect circularity. Use `enclosing' as an argument to + `lookup_cl.' Free the hash table when done. + +2001-06-19 Tom Tromey + + * lex.c (java_read_char): Disallow invalid and overlong + sequences. Fixes PR java/2319. + +2001-06-05 Jeff Sturm + + * decl.c (create_primitive_vtable): Don't call make_decl_rtl. + +2001-06-04 Alexandre Petit-Bianco + + * expr.c (force_evaluation_order): Match wrapped ctor calls, locate + arguments accordingly. + +2001-06-02 Joseph S. Myers + + * gcj.texi: Move contents to just after title page. + +2001-06-01 Alexandre Petit-Bianco + + * parse.y (type_literals:): Use `build_incomplete_class_ref' with + builtin type. + (patch_incomplete_class_ref): Build the class ref, build the class + init if necessary, complete the tree. + Fixes PR java/2605 + +2001-05-31 Alexandre Petit-Bianco + + * parse.y (lookup_field_wrapper): Test `name' code. + (resolve_qualified_expression_name): Test `qual_wfl' code. + (qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation, + handle `qual_wfl' by code. + (maybe_build_primttype_type_ref): Test `wfl' code. + +2001-05-23 Theodore Papadopoulo + + * Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on + fdl.texi. + (java/gcj.dvi): Use TEXI2DVI instead of custom tex calls. Create + the dvi file in the java directory. + +2001-05-25 Sam TH + + * gen-table.pl javaop.h jcf.h lex.h, + parse.h: Fix header include guards. + +2001-05-23 Joseph S. Myers + + * jv-scan.c (version): Update copyright year. + +2001-05-21 Per Bothner + + * jcf-parse.c (read_class): If class is from .class or .zip file + and it's already been read, don't push/pop parser context. + +2001-05-18 Per Bothner + + * jvspec.c (lang_specific_pre_link): Re-arrange the linker + command line so the jvgenmain-generated main program comes first. + +2001-05-15 Tom Tromey + + * class.c (build_utf8_ref): Don't generate identifier based on + utf8const contents. + +2001-05-12 Richard Henderson + + * java-tree.def (JAVA_EXC_OBJ_EXPR): New. + * expr.c (java_lang_expand_expr): Expand it. + (process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of + calling build_exception_object_ref. + * parse.y (catch_clause_parameter): Likewise. + (build_dot_class_method): Likewise. + (try_reference_assignconv): Likewise. + * check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR. + * jcf-write.c (generate_bytecode_insns): Likewise. + +2001-05-07 Alexandre Petit-Bianco + + * parse.y (build_unresolved_array_type): Set + EXPR_WFL_QUALIFICATION on the newly created wfl. + Fixes PR java/2538. Fixes PR java/2535. + +2001-05-07 Alexandre Petit-Bianco + + * parse.y (fix_constructors): Removed unnecessary assignment to + local. Moved assignment to `this$', fixed comments and + indentation. + (build_wfl_wrap): Fixed indentation. + Fixes PR java/2598, java/2579 and java/2658. + +2001-05-03 Mo DeJong + + * lex.c (java_new_lexer): Call iconv_close on temp handle used to + check for byte swap. + +2000-05-02 Jeff Sturm + + * expr.c (build_class_init): Move MODIFY_EXPR + outside of COND_EXPR. Remove variable `call'. + +2001-05-02 Kaveh R. Ghazi + + * decl.c: NULL_PTR -> NULL. + * jcf-write.c: Likewise. + +2001-05-01 Tom Tromey + + * Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'. + (java/gcj.dvi): Added $(srcdir) to TEXINPUTS. + * gcj.texi: Updated copyright text. Include fdl.texi. + (Top): Link to new node. + +2001-05-01 Per Bothner + + * parse.h (REGISTER_IMPORT): Use tree_cons instead of chainon. + +2001-05-01 Per Bothner + + * parse.y (java_pop_parser_context): The TREE_VALUE of a link in the + import_list contains the name, not the TREE_PURPOSE. + +2001-04-29 Kaveh R. Ghazi + + * jcf-io.c (read_zip_member): Cast to long in comparison with + signed value. + + * jvspec.c (lang_specific_driver): Initialize variables. + + * mangle.c (find_compression_record_match): Likewise. + + * typeck.c (build_null_signature): Provide static prototype. Mark + parameter with ATTRIBUTE_UNUSED. + + * verify.c (verify_jvm_instructions): Initialize variable. + +2001-04-27 Bryce McKinlay + + * parse.y (do_resolve_class): Check for cyclic inheritance during + inner class resolution. + +2001-04-27 Per Bothner + + * parse.y (java_expand_classes): Don't change ctxp_for_generation + while iterating, since that could cause gc to lose stuff. + +2001-04-26 Per Bothner + + Fix method search wrt scope of inner classes to match JLS2. + * typeck.c (build_null_signature): New static function. + (has_method): New function. Uses build_null_signature and lookup_do. + * java-tree.h (has_method): New declaration. + * parse.y (find_applicable_accessible_methods_list): Do not search + context of inner classes here. + (patch_method_invocation): Search scope, ie. current and outer clases, + for method matching simple name, to find class. + +2001-04-26 Per Bothner + + * jcf-write.c (generate_bytecode_insns case SWITCH_EXPR): + Fix thinko: If a single case, use if_icmpeq, not ifeq. + + * constants.c (find_methodref_with_class_index): New function. + (find_methodref_index): Use find_methodref_with_class_index. + * java-tree.h (find_methodref_with_class_index): New declaration. + * jcf-write.c (generate_bytecode_insns case CALL_EXPR): Don't change + DECL_CONTEXT, instead use new find_methodref_with_class_index function. + If context changed from interface to class, don't use invokeinterface. + +2001-04-25 Per Bothner + + * verify.c (verify_jvm_instructions): For field instructions, + check that field index is valid. For invoke instructions, check that + method index is valid. + +2001-04-25 Alexandre Oliva + + * config-lang.in (target_libs): Copy from $libgcj_saved. + +2001-04-25 Bryce McKinlay + + * decl.c (init_decl_processing): Add new class "protectionDomain" + field. + * class.c (make_class_data): Set initial value for "protectionDomain". + +2001-04-22 Kaveh R. Ghazi + + * jvspec.c (lang_specific_driver): Fix memory allocation + deficit, by using concat in lieu of xmalloc/sprintf. + +2001-04-20 Per Bothner + + Fixes to compile multiple .class files at once. + * decl.c (init_decl_processing): Don't set CLASS_LOADED_P. + * java-tree.h (CLASS_PARSED_P): New macro. + (CLASS_LOADED_P): Re-define to use TYPE_SIZE and CLASS_PARSED_P. + * jcf-parse.c (jcf_parse_source): Inline into read_class. + (read_class): Avoid some code duplication. + Don't call JCF_FINISH for a .class file - might be needed later. + (jcf_parse): Don't call layout_class here. Check/set CLASS_PARSED_P + rather than CLASS_LOADED_P, since latter implies class laid out. + (yyparse): Do layout_class and JCF_FINISh here instead, in pass 2. + * parse.y: Don't need to set CLASS_LOADED_P for array types. + +2001-04-11 Kaveh R. Ghazi + + * Make-lang.in (java/boehm.o): Depend on toplev.h. + + * boehm.c: Include toplev.h. + +2001-04-06 Tom Tromey + Alexandre Petit-Bianco + + Fix for PR gcj/1404 and PR gcj/2332: + * parse.y (build_array_from_name): If we use the type_wfl then + accumulate dimensions from the original type as well. + (build_unresolved_array_type): Don't modify TYPE_OR_WFL in place. + +2001-04-06 Tom Tromey + + * parse.y (analyze_clinit_body): Return true if the second operand + of a METHOD_EXPR is nonzero. + +2001-04-06 Tom Tromey + + * Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build + directory. + ($(srcdir)/java/parse.c): Likewise. + +2001-04-05 Alexandre Petit-Bianco + + * gcj.texi: Use `which-gcj' instead of `which-g77.' + (version-gcc): Initialized. + (which-gcj): Likewise. + +2001-04-04 Alexandre Petit-Bianco + + * java-tree.h (struct lang_decl): New macro + `DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.' + * parse.y (build_instance_initializer): New function. + (add_instance_initializer): Use it. + (java_fix_constructors): Set `current_class' before fix pass. + (fix_constructors): Just return if already fixed. Move `super()' + invocation ahead. Use `build_instance_initializer.' + Fixes PR java/1315. + +2001-04-04 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Pass field's + DECL_CONTEXT to `not_accessible_p.' + (not_accessible_p): Changed parameters order in `inherits_from_p' + invocation. + +2001-03-27 Andrew Haley + + * lang-options.h: Add flag_check_references. + +2001-04-04 Per Bothner + + * java-tree.h (CONSTANT_VALUE_P): New macro. + * jcf-write.c (generate_classfile): Use CONSTANT_VALUE_P. + * parse.y (maybe_build_class_init_for_field): New static function. + (resolve_expression_name, resolve_field_access): Use + maybe_build_class_init_for_field instead of build_class_init + This does not do the init if the field is compile-time-constant. + (resolve_field_access): Simplify. + + * parse.y (fold_constant_for_init): Merge test into switch. + +2001-04-03 Zack Weinberg + + * Make-lang.in (buffer.o, check-init.o, class.o): Don't depend + on gansidecl.h. + * buffer.c, jvgenmain.c: Don't include gansidecl.h. + +2001-04-02 Zack Weinberg + + * expr.c (pop_type_0): Save the result of the first + lang_printable_name call in a scratch buffer, so it + won't be clobbered by the second call. + +2001-03-30 Alexandre Petit-Bianco + + * parse-scan.y (array_type:): Rewritten. + (type_declaration:): `empty_statement' replaces `SC_TK.' + (class_member_declaration:): `empty statement' added. + (method_body:): Simplified. + (static_initializer:): Likewise. + (primary_no_new_array:): Use `type_literals.' + (type_literals:): New rule. + (dims:): Set and update `bracket_count.' + Fixes PR java/1074. Fixes PR java/2412. + +2001-03-28 Hans Boehm + + * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.' + (get_boehm_type_descriptor): Set type on returned value to be a + pointer length integer. + +2001-03-28 Kaveh R. Ghazi + + * expr.c (pop_type_0): Call `concat' rather than building the + string manually. + (pop_type): Add format specifier in call to `error'. + + * parse.y (patch_method_invocation): Avoid casting away + const-ness. + +2001-03-28 Jeffrey Oldham + + * jvgenmain.c (do_mangle_classname): End string constant with '\0'. + +2001-03-28 Richard Henderson + + IA-64 ABI Exception Handling: + * Make-lang.in (except.o): Don't depend on eh-common.h. + * check-init.c (check_init): Handle EXC_PTR_EXPR. + * decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw. + [soft_exceptioninfo_call_node]: Remove. + [eh_personality_libfunc, lang_eh_runtime_type]: New. + (end_java_method): No emit_handlers. + * except.c (java_set_exception_lang_code): Remove. + (method_init_exceptions): Don't call it. + (prepare_eh_table_type): No CATCH_ALL_TYPE. + (build_exception_object_ref): New. + (expand_end_java_handler): Update for except.h name changes. + (emit_handlers, expand_resume_after_catch): Remove. + * expr.c (java_lang_expand_expr): Update for except.h name changes. + (process_jvm_instruction): Use build_exception_object_ref. + * java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove. + (soft_exceptioninfo_call_node): Remove. + (build_exception_object_ref): Declare. + * jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No + soft_exceptioninfo_call_node. Move processing ... + [EXC_PTR_EXPR]: ... here. + * parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code. + * parse.y (catch_clause_parameter): Use build_exception_object_ref. + (source_end_java_method): No java_set_exception_lang_code or + emit_handlers. + (build_dot_class_method): Use build_exception_object_ref. + (try_reference_assignconv): Check EXC_PTR_EXPR not + soft_exceptioninfo_call_node. + +2001-03-28 Richard Henderson + + * java-tree.h (throw_node): Define as a single member of + java_global_trees instead of a separate array. + (JTI_THROW_NODE): New. + * decl.c (throw_node): Don't declare. + (init_decl_processing): Init a scalar throw_node. + Don't register it for gc. + * check-init.c (check_init): Reference scalar throw_node. + * expr.c (build_java_athrow): Likewise. + * jcf-write.c (generate_bytecode_insns): Likewise. + * parse.h (BUILD_THROW): Likewise. + +2001-03-28 Richard Henderson + + * decl.c (end_java_method): Do not save and restore + flag_non_call_exceptions. + * parse.y (source_end_java_method): Likewise. + * lang.c (flag_exceptions): Don't declare. + (java_init_options): Set flag_non_call_exceptions. Set + flag_exceptions here ... + (java_init): ... not here. + +2001-03-27 Richard Henderson + + * expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of + exceptions_via_longjmp. + + * lang.c (flag_new_exceptions): Don't declare it. + (java_init_options): Or set it. + +2001-03-27 Richard Henderson + + * decl.c (end_java_method): Rename asynchronous_exceptions to + flag_non_call_exceptions. + * parse.y (source_end_java_method): Likewise. + +2001-03-27 Kaveh R. Ghazi + + * Make-lang.in: Depend on $(SYSTEM_H), not system.h. + +2001-03-26 Mark Mitchell + + * parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE. + +2001-03-26 Alexandre Petit-Bianco + + * parse.y (find_as_inner_class): Follow current package + indications not to mistakingly load an unrelated class. + +2001-03-25 Kaveh R. Ghazi + + * constants.c (PUTN): Use memcpy, not bcopy. + + * lex.c (java_read_char): Use memmove, not bcopy. + + * parse.y (java_parser_context_resume): Use memcpy, not bcopy. + +2001-03-23 Per Bothner + + * verify.c (verify_jvm_instructions): Replace 3 pop_type by POP_TYPE + macro for better error pin-pointing. + * java-tree.h: Fix typo in comment. + + * jcf-write.c (generate_bytecode_insns): Changes to TRY_FINALLY_EXPR. + Don't include jsr/goto in exception range. + Check if start and end of exception range are the same (also TRY_EXPR). + Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false. + However, do emit the following goto even if try_block is empty. + Defer freeing exception_decl until after the finalizer, to make + sure the local isn't reused in the finalizer. Fixes PR java/1208. + + * parse.y (java_complete_lhs): If the try-clause is empty, just + return the finally-clause and vice versa. + +2001-03-23 Alexandre Petit-Bianco + + * gcj.texi (Input Options): documented the check for attribute + `gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag. + * java-tree.h (flag_force_classes_archive_check): Declared extern. + * jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro. + (jcf_parse): Check for the right classes archive if necessary. + * jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it. + (jcf_parse_fields): Fixed indentation. + * jcf-write.c (append_gcj_attribute): New function. + (generate_classfile): Compute the attribute count, invoke + `append_gcj_attribute'. + * jcf.h (typedef struct JCF): `seen_in_zip' and `java_source' + turned into bit-fields. New bit-field `right_zip.' + (JCF_ZERO): Set `right_zip' to zero. + * lang-options.h (-fforce-classes-archive-check): Added flag. + * lang.c (flag_force_classes_archive_check): New flag. + (lang_f_options): New entry `force-classes-archive-check.' + Fixes PR java/1213. + +2001-02-07 Andrew Haley + + * gcj.texi (Configure-time Options): Add -fcheck-references. + * expr.c (build_java_indirect_ref): New function. + (java_check_reference): New function. + (build_java_array_length_access): Use build_java_indirect_ref to + check for null references. + (build_java_arrayaccess): Likewise. + (build_get_class): Likewise. + (build_field_ref): Likewise. + (invoke_build_dtable): Likewise. + (build_invokeinterface): Likewise. + * lang.c (lang_f_options): Add flag_check_references. + * jvspec.c (jvgenmain_spec): Add flag_check_references. + * java-tree.h (flag_check_references): New variable. + * lang.c (flag_check_references): Likewise. + * parse.y (patch_invoke): Use java_check_reference. + (patch_assignment): Allow for extra nesting in + _Jv_CheckArrayStore. + +2001-03-23 Bryce McKinlay + + * gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c. + * lex.c (cxx_keywords): Likewise. + +2001-03-21 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Broaden `length' + recognition. Help MODIFY_EXPR be resolved as expression names. + Fixes PR java/2066. Fixes PR java/2400. + +2001-03-21 Bryce McKinlay + + * gjavah.c (process_file): Mark interface definitions with + "__attribute__ ((java_interface))". + +2001-03-21 Alexandre Petit-Bianco + + * class.c (layout_class): Fixed push_super_field's second + argument. Fixes PR java/2333. + (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's + too early to lay innerclasses out. + +2001-03-20 Tom Tromey + Alexandre Petit-Bianco + + * parse.y (patch_assignment): Handle the case of a SAVE_EXPR + inside an array reference. Insertion of the array store check + rewritten. Fixes PR java/2299. + +2001-03-20 Tom Tromey + + * lex.c (java_read_unicode): Only accept leading `u's. + +2001-03-20 Tom Tromey + + * jcf-parse.c (read_class): Initialize `class'. + +2001-03-20 Matt Kraai + + * jcf_parse.c (jcf_parse): Eliminate unused variable. + +2001-03-19 Mark Mitchell + + * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME. + (layout_class): Likewise. + (layout_class_method): Likewise. + (emit_register_classes): Likewise. + * decl.c (builtin_function): Likewise. + (give_name_to_locals): Likewise. + +2001-03-19 Per Bothner + + * jcf-parse.c (load_inner_classes): Check CLASS_LOADED_P + before trying to load an inner class. + + Fixes to process to command-line .class files in two passes. + * java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P): New flags. + (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P): Rename to .. + (CLASS_FROM_CURRENTLY_COMPILED_P): ... because it is more general now. + * class.c (is_compiled_class): Fix for renamed flag. + * parse.y (maybe_create_class_interface_decl): Likewise. + * jcf-parse.c (yyparse): Also set if compiling .class files. + * jcf-parse.c (read_class); Read current_class. + (jcf_parse): Make static. + (load_inner_classes): New function, with code moved from jcf_parse, + because we need to inner classes after the command-line files are read. + (yyparse): Set finput to NULL when it doesn't need to be closed. + Reduce use of main_jcf (basically only for archive) and + use finput instead of main_jcf->read_state. + Inline jcf_figure_file_type into yyparse. + Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name. + Defer load_inner_classes and parse_class_file to a second pass, + after we've correctly mapped command-line .clas fiels to classes. + (jcf_figure_file_type): Removed. + * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): Removed flags. + (JCF_ZERO): Also clear zipd field. + * zipfile.h: Conditionalize on JCF_H insread of JCF_ZIP. + +2001-03-18 Matt Kraai + + * jcf-parse.c (yyparse): Change ch from char * to char. + +2001-03-19 Per Bothner + + * jvspec.c (lang_specific_driver): Check for .zip and .jar files. + Add constructed filelist-file at end, following -xjava. Thus any .o + and library files are not affected by the -xjava. Also wrap + explicit @FILE with -xjava and -xnone. + +2001-03-19 Andrew Haley + + * class.c (build_static_field_ref): Call make_decl_rtl() after + setting the DECL_EXTERNAL flag. + +2001-03-17 Per Bothner + + * decl.c (clear_binding_level): Fix initializer (broke 03-15). + + * jcf-write.c (generate_bytecode_insns): Handle emitting iinc + when result is is needed (target is STACK_TARGET). + + * parse.h (JDEP_SOLV): Removed. + * parse.y (register_incomplete_type): Use JDEP_TO_RESOLVE instead. + + * parse.y (incomplete_class_list): Removed. + (obtain_incomplete_type): Don't use or set incomplete_class_list. + It doesn't work if resolve_class changes the name of an array type + that is on the list and then someone else looks for the modified name. + Also, seems liable to break when compiling multiple source files at + once. So the simplest is to just remove incomplete_class_list - + it is only a minor space win and it is not even clear it saves time. + + * parse.y (resolve_class): Remove unneeded promote_type. + +2001-03-15 Per Bothner + + * java-tree.h (BLOCK_IS_IMPLICIT): New flag. + * parse.h (BLOCK_EXPR_ORIGIN): Removed macro. + * parse.y (declare_local_variables, maybe_absorb_scoping_blocks): + Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN. + + * jcf-parse.c (yyparse): Set/reset input_filename for source file. + * parse.y (java_expand_classes): Likewise. + + * parse.y (expand_start_java_method): Was only called once and had a + misleading name, so inline in caller java_complete_expand_method. + (enter_a_block): Likewise inline in enter_block and remove. + + Remove junk from when gcc/java was created (by copying from C/C++). + * decl.c (keep_next_level_flag, keep_next_if_subblocks): Remove. + (struct binding_level): Remove fields keep, keep_if_subblocks, + more_cleanups_ok, have_cleanups (which have never been used). + (pushlevel, poplevel): Remove related useless code. + + * class.c (make_class_data): The class_dtable_decl (i.e. the + vtable for Class) should be external, except when compiling Class. + + * jvspec.c (lang_specific_driver): Fix -C handling. + Check -save-temps to see if temp @FILE should be deleted. + Follow-up to/fix for February 16 patch. + + * verify.c (verify_jvm_instructions): Better error msgs for dup. + (type_stack_dup): Remove no-longer neded error check. + +2001-03-15 Bryce McKinlay + + * mangle.c (mangle_record_type): Rename 'from_pointer' argument + to 'for_pointer'. If this type is for a pointer (argument) mangling, + don't surround the element with 'N..E' if the type name is + unqualified. + +2001-03-14 Mark Mitchell + + * class.c (build_static_field_ref): Use COPY_DECL_RTL, + DECL_RTL_SET_P, etc. + (make_method_value): Likewise. + (get_dispatch_table): Likewise. + + * decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc. + +2001-03-07 Tom Tromey + + * config-lang.in (lang_requires): Define. + +2001-03-07 Brad Lucier + + * typeck.c (convert): Check flag_unsafe_math_optimizations, + not flag_fast_math. + +2001-03-05 Per Bothner + + Fix a problem where rest_of_decl_compilation applied to + class_dtable_decl causes problems because it was done too early, + before output file was opened. + * decl.c (init_decl_processing): Remove init of class_dtable_decl. + * class.c (class_dtable_decl): Add macro - element of class_roots. + (make_class_data): Define class_dtable_decl. + * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl): Removed. + +2001-03-01 Zack Weinberg + + * java/class.c, java/decl.c, java/java-tree.h: Replace all + uses of 'boolean' with 'bool'. + +2001-03-01 Zack Weinberg + + * lang-specs.h: Add zero initializer for cpp_spec field to all + array elements. + +2001-02-16 Per Bothner + + Handle compiling multiple input files at once, and @FILE syntax. + * gcj.texi: Updated documentation to match. + * java-tree.h (flag_filelist_file, init_src_parse): New declarations. + * jcf-parse.c (parse_source_file): Split into ... + (parse_source_file_1): New function - and: + (parse_source_file_2): New function. + (yyparse): On -ffilelist-file, open and scan named file. + On first pass over files, only do parse_source_file_1. + A new second pass calls parse_source_file_2 for each file to compile. + (init_jcf_parse): Call init_src_parse. + * jvspec.c (INDIRECT_FILE_ARG): New flag. + (lang_specific_driver): Support @FILELIST-FILE syntax, as well + as multiple input file combined in one compilation. + * lang-options.h: Add -ffilelist-file + * lang.c (flag_filelist_file): New flag variable. + (lang_f_options): Handle -ffilelist-file. + * lex.c (java_init_lex): Don't clear ctxp->incomplete_class. + * parse.h (struct parse_ctxt): Remove fields incomplete_class and + gclass_list - use global fields of src_parse_roots instead. + * parse.y (src_parse_roots): New array. + (incomplete_class_list, gclass_list): New macros. + (push_parser_context, java_pop_parser_context, + java_parser_context_resume): Don't fiddle with deleted fields. + (various): Use incomplete_class gclass_list and global macros + instead of parse_ctxt fields - the lists are global. + (init_src_parse): New function. + +2001-02-23 Richard Kenner + + * decl.c (set_block): Set NAMES and BLOCKS from BLOCK. + +2001-02-20 Alexandre Petit-Bianco + + * parse.y (check_inner_class_access): Moved declaration of local + `enclosing_decl_type' to the right location. + +2001-02-19 Bryce McKinlay + + * parse.y (parser_check_super_interface): Don't call + check_pkg_class_access for an inner interface. + (parser_check_super): Don't call check_pkg_class_access for inner + class. + (do_resolve_class): Simplify enclosing type loop. Don't call + check_pkg_class_access if CL and DECL are not set. + (find_in_imports_on_demand): Set DECL if class_type needed to be + loaded. Don't call check_pkg_class_access for an inner class. + (check_inner_class_access): Rewritten to implement member access + rules as per spec 6.6.1. + (check_pkg_class_access): Handle the empty package correctly. + (in_same_package): New function. Determine if two classes are in the + same package. + +2001-02-18 Bryce McKinlay + + * typeck.c (build_java_array_type): Don't try to poke a public `clone' + method into array types. + * parse.y (patch_method_invocation): Bypass access check on clone call + to array instance. + +2001-02-15 Alexandre Petit-Bianco + + * expr.c (build_instanceof): Check for arrays when trying fold to + false. + +2001-02-15 Jim Meyering + + * Make-lang.in (java.install-common): Depend on `installdirs'. + (java.install-info): Likewise. + +2001-02-15 Bryce McKinlay + + * Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o. + +2001-02-14 Tom Tromey + Alexandre Petit-Bianco + + Fix for PR java/1261. + * typeck.c (build_java_array_type): Add public `clone' method to + arrays. + * parse.y (resolve_qualified_expression_name): Use current_class + when checking for inaccessibility. + (patch_method_invocation): Fixed error message when accessibility + denied. Added `from_super' argument. + +2001-02-14 Alexandre Petit-Bianco + + * parse.y (resolve_class): Don't build a fake decl. Use the one + already built. + * typeck.c (build_java_array_type): Build and assign decl to array + type. + +2001-02-14 Alexandre Petit-Bianco + + * parse.y (not_accessible_p): Changed leading comment. Added extra + `where' argument. Use it to enforce protected access rules. + (resolve_qualified_expression_name): Added extra argument to + not_accessible_p. + (patch_method_invocation): Use argument `primary' to provide + not_accessible_p with an extra argument. + (lookup_method_invoke): Added extra argument to not_accessible_p. + (search_applicable_method_list): Likewise. + +2001-02-13 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Try to resolve as + an inner class access only if `decl' is a TYPE_DECL. + +2001-02-13 Alexandre Petit-Bianco + + * decl.c (classdollar_identifier_node): Initialize. + * java-tree.h (enum java_tree_index): New entry + `JTI_CLASSDOLLAR_IDENTIFIER_NODE.' + (classdollar_identifier_node): New macro. + (ID_CLASSDOLLAR_P): Likewise. + * parse.y (build_dot_class_method): Use `classdollar_identifier_node.' + (build_dot_class_method_invocation): Likewise. + (find_applicable_accessible_methods_list): `class$' can't be + inherited. + +2001-02-09 Raja R Harinath + + * Make-lang.in (java/mangle_name.o): Add 'make' prereqs. + +2001-02-09 Alexandre Petit-Bianco + + * Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o' + * jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now + gone. + +2001-02-09 Alexandre Petit-Bianco + + * mangle_name (append_unicode_mangled_name): Emit `_' or `U' + outside of the `__U' sequence too. + (unicode_mangling_length): Count `_' or `U' outside of the `__U' + sequence too. + +2001-02-09 Alexandre Petit-Bianco + + * jvgenmain.c (error): Reversed 2001-02-01 deletion. + +2001-02-08 Alexandre Petit-Bianco + + * Make-lang.in (JAVA_OBJS): Added java/mangle_name.o + (JVGENMAIN_OBJS): Likewise. + * java-tree.h (append_gpp_mangled_name): New prototype. + * jcf-parse.c (ggc_mark_jcf): Argument now `void *.' + Removed cast calling `gcc_add_root.' + * jvgenmain.c (mangle_obstack): New global, initialized. + (main): Use it. + (do_mangle_class): Constify local `ptr.' + Removed macro `MANGLE_NAME.' Removed cast in `for.' Call + append_gpp_mangle_name and update `count' if necessary. + Use `mangle_obstack.' + * mangle.c (append_unicode_mangled_name): Removed. + (append_gpp_mangled_name): Likewise. + (unicode_mangling_length): Likewise. + (mangle_member_name): Return type set to `void.' + (mangle_field_decl): Don't append `U' in escaped names. + (mangle_method_decl): Likewise. + (mangle_member_name): Just use `append_gpp_mangled_name.' + * mangle_name.c: New file. + +2001-02-07 Per Bothner + + * check-init.c (check_init): Fix TRY_FINALLY_EXPR logic. + + * check-init.c (check_init): Don't call done_alternative after + processing loop code, as a LOOP_EXPR never terminates normally. + +2001-02-08 Joseph S. Myers + + * gcj.texi: Change sources.redhat.com reference to gcc.gnu.org. + +2001-02-07 Alexandre Petit-Bianco + + * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field + DECLs. + +2001-02-06 Tom Tromey + + * lex.c (java_new_lexer): Longer error message. + +2001-02-05 Jeff Sturm + Alexandre Petit-Bianco + + * typeck.c (build_prim_array_type): Added leading comment. + (build_java_array_type): Moved locals out of + block. Always create the `data' field, fixed alignment to match + C++. + +2001-02-04 Tom Tromey + + * expr.c (java_lang_expand_expr): Don't bother recomputing + `length'. Use rest_of_decl_compilation, not make_decl_rtl. + Fixes PR java/1866. + +2001-02-05 Alexandre Petit-Bianco + + * parse.y (process_imports): Save the original name of the import + for better error report. + +2001-02-04 Bryce McKinlay + + * Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list + of macros used when compiling jvspec.c. + * jvspec.c (lang_specific_driver): Link with the shared + libgcc by default. + +2001-02-04 Richard Kenner + + * check-init.c (check_init): Call internal_error instead of fatal. + * expr.c (java_lang_expand_expr): Likewise. + * jcf-parse.c (get_constant): Likewise. + * mangle.c (java_mangle_decl): Likewise. + * parse.y (make_nested_class_name, java_complete_lhs): Likewise. + (operator_string): Likewise. + * check-init.c (check_init): Call abort instead of fatal. + * class.c (build_class_ref): Likewise. + * constants.c (write_constant_pool): Likewise. + * decl.c (start_java_method): Likewise. + * expr.c (push_type, java_stack_pop, java_stack_swap): Likewise. + (java_stack_dup, encode_newarray_type): Likewise. + (build_java_array_length_access): Likewise. + (build_java_check_indexed_type, expand_java_pushc): Likewise. + (build_java_soft_divmod, build_invokeinterface): Likewise. + * java-tree.h (INNER_CLASS_P): Likewise. + * jcf-parse.c (parse_signature, get_name_constant): Likewise. + (give_name_to_class, get_class_constant): Likewise. + * jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise. + (find_constant_index, generate_bytecode_conditional): Likewise. + (generate_bytecode_insns, perform_relocations): Likewise. + * lex.c (java_unget_unicode, java_lex): Likewise. + * mangle.c (mangle_type, mangle_record_type): Likewise. + (mangle_pointer_type, mangle_array_type, init_mangling): Likewise. + (finish_mangling): Likewise. + * parse.h (MARK_FINAL_PARMS): Likewise. + * parse.y (pop_current_osb, unreachable_stmt_error): Likewise. + (obtain_incomplete_type, java_complete_class): Likewise. + (java_check_regular_methods, java_complete_expand_method): Likewise. + (cut_identifier_in_qualified, check_deprecation): Likewise. + (patch_invoke, find_applicable_accessible_methods_list): Likewise. + (java_complete_lhs, lookup_name_in_blocks): Likewise. + (check_final_variable_indirect_assignment, build_unaryop): Likewise. + * typeck.c (set_local_type, parse_signature_type): Likewise. + (parse_signature_string, build_java_signature): Likewise; + (set_java_signature): Likewise. + * verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise. + * class.c (add_method): Call fatal_error instead of fatal. + (build_static_field_ref): Likewise. + * expr.c (build_known_method_ref, expand_invoke): Likewise. + * jcf-parse.c (get_constant, jcf_parse): Likewise. + * lex.c (java_new_new_lexer): Likewise. + * jv-scan.c (main): Likewise. + (fatal_error): Renamed from fatal. + * jcf-parse.c (yyparse): Call fatal_io_error instead of + pfatal_with_name. + * jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal. + (yyparse): Likewise. + * jcf-write.c (make_class_file_name, write_classfile): Likewise. + * lex.c (java_get_line_col): Likewise. + * jcf-parse.c (load_class): Make errors non-fatal. + * lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV. + +2001-02-01 Bryce McKinlay + + * jvgenmain.c (class_mangling_suffix): Remove unused string. + (error): Remove unused function. + (main): Don't use "__attribute__ alias" on generated class symbol. + +2001-01-30 Alexandre Petit-Bianco + + * jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last + argument. + * parse.y (finish_method_declaration): Code accounting for WFLed + method DECL_NAMEs deleted. + (check_abstract_method_definitions): Likewise. + (resolve_type_during_patch): Layout resolved type. + * typeck.c (lookup_do): Removed unused local. + +2001-01-30 Bryce McKinlay + + * java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE. + * decl.c (init_decl_processing): Use integer_minus_one_node, not + integer_negative_one_node. + * expr.c (build_java_binop): Likewise. + +2001-01-24 Jeff Sturm + + * zextract.c (read_zip_archive): Read file_offset before writing + zipd and consequently clobbering the header contents. + +2001-01-27 Kaveh R. Ghazi + + * Make-lang.in: Remove all dependencies on defaults.h. + * decl.c: Don't include defaults.h. + * expr.c: Likewise. + * parse.y: Likewise. + +2001-01-25 Alexandre Petit-Bianco + + * ChangeLog (2001-01-21): Fixed typo. + * class.c (layout_class_method): Code accounting for WFLed + method DECL_NAMEs deleted. + * constant.c (find_methodref_index): Likewise. + * decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl. + * java-tree.h (DECL_FUNCTION_WFL): New macro. + (struct lang_decl): New field `wfl'. + (java_get_real_method_name): Prototype deleted. + * mangle.c (mangle_method_decl): Code accounting for WFLed + method DECL_NAMEs deleted. + * parse.h (GET_METHOD_NAME): Macro deleted. + * parse.y (reset_method_name): Deleted. + (method_header): Set DECL_FUNCTION_WFL. + (check_abstract_method_header): Code accounting for WFLed method + DECL_NAMEs deleted. + (java_get_real_method_name): Deleted. + (check_method_redefinition): Code accounting for WFLed method + DECL_NAMEs deleted. Use DECL_FUNCTION_WFL. + (java_check_regular_methods): Likewise. + (java_check_abstract_methods): Likewise. + (java_expand_classes): Don't call `reset_method_name.' + (search_applicable_method_list): Use DECL_NAMEs instead of + GET_METHOD_NAME. + * typeck.c (lookup_do): Code accounting for WFLed method + DECL_NAMEs deleted. + +2001-01-25 Richard Earnshaw + + * lex.c (java_read_char): Check for EOF from getc first. + +2001-01-23 Alexandre Petit-Bianco + + * class.c (layout_class): Don't lay the superclass out if it's + already being laid out. + * jcf-parse.c (handle_innerclass_attribute): New function. + (HANDLE_INNERCLASSES_ATTRIBUTE): Invoke + handle_innerclasses_attribute. + (jcf_parse): Don't load an innerclasses if it's already being + laid out. + * jcf-write.c (append_innerclass_attribute_entry): Static + `anonymous_name' and its initialization deleted. `ocii' and `ini' + to be zero for anonymous classes. + +2001-01-23 Alexandre Petit-Bianco + + * class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if + necessary. + * jcf-parse.c (set_source_filename): Use + MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary. + +2001-01-23 Alexandre Petit-Bianco + + * expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it + gets a unique asm name. + +2001-01-23 Alexandre Petit-Bianco + + * jcf-parse.c (HANDLE_END_METHODS): Nullify current_method. + (HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC + if necessary. + (HANDLE_SYNTHETIC_ATTRIBUTE): New macro. + * jcf-reader.c (get_attribute): Handle `Synthetic' attribute. + * parse.y (lookup_package_type_and_set_next): Deleted. + (resolve_package): Removed unnecessary code. + (find_applicable_accessible_methods_list): `finit$' can't be + inherited. + * verify.c (pop_argument_types): Added missing prototype. + +2001-01-23 Bryce McKinlay + + * config-lang.in: Disable java by default. + +2001-01-23 Tom Tromey + + * gcj.texi (Copying): New node. + Added copyright information. + +2001-01-21 Per Bothner + + Various fixes to allow compiling a compressed .jar/.zip archive. + * zipfile.h (struct ZipFileCache): Replace by struct ZipFile. + (struct ZipFile): Add fields name and next (from ZipFileCache). + (struct ZipDirectory): New field zipf points to owning ZipFile. + * jcf.h (struct ZipDirectory): Add forward declaration. + (struct JCF): Declare zipd field to have type struct ZipDirectory. + Remove seen_in_zip and zip_offset fields. + (JCF_SEEN_IN_ZIP): New macro. + * zextract.c (read_zip_archive): Set ZipDirectory's zipf field. + * jcf-io.c: Change all ZipFileCache to ZipFile. + (read_zip_member): New function. + (open_in_zip): Call read_zip_member. + * jcf-parse.c (find_in_current_zip): Remove function. + (read_class): Merge in find_in_current_zip functionality. + Call read_zip_member if needed. + (parse_zip_file_entries): Use read_zip_member. + (process_zip_dir): Update for removed and added JCF fields. + (jcf_figure_file_type): Re-use, don't copy initial ZipFile struct. + +2001-01-21 Per Bothner + + Minor optimization of static ggc roots. + * jcf-parse.c (parse_roots): New static field. + (current_field, current_method, current_file_list): Replace by macros + naming fields of parse_roots. + (init_jcf_parse): Combine 3 ggc_add_tree_root calls to 1. + * class.c (class_roots): New static field. + (registered_class, fields_ident, info_ident, class_list): + New macros naming fields of parse_roots. + (build_static_field_ref): Don't register roots here. + (layout_class): Static field list replaced by macro class_list. + (init_class_processing): Call ggc_add_tree_root for 4 roots. + Initialize fields_ident and info_ident here. + +2001-01-21 Per Bothner + + * jcf-parse.c (ggc_mark_jcf): New function. + (init_jcf_parse): Register current_jcf as ggc root. + +2001-01-21 Per Bothner + + * lang.c (put_decl_node): Print method's name. + +2001-01-21 Per Bothner + + * verify.c (VERIFICATION_ERROR_WITH_INDEX): New macro. + (verify_jvm_instructions): Use it, for better error messages on loads. + +2001-01-21 Per Bothner + + * verify.c (merge_type_state): Still may have to merge even if + LABEL_VERIFIED (label). + +2001-01-21 Per Bothner + + * parse.y (method_header): Don't set the DECL_NAME of a FUNCTION_DECL + to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong. + +2001-01-19 Per Bothner + + * expr.c (pop_type_0): Only return object_ptr_type_node on mismatch + if expeting an interface type. Refines Tom's change of 2000-09-12. + +2001-01-18 Per Bothner + + * gcj.texi (Input Options): Mention .java files. + +2001-01-17 Alexandre Petit-Bianco + + * lang-options.h (-Wunsupported-jdk11): Removed. + * lang.c (flag_not_overriding): Deleted. + (flag_static_local_jdk1_1): Likewise. + (lang_W_options): Removed "unsupported-jdk11" entry. + * parse.y (java_check_methods): Removed dead code. + +2001-01-17 Tom Tromey + + Changes suggested by Per Bothner: + * gcj.texi (Input Options): Don't mention input files. + (Code Generation): Updated --main information. + (Invoking jcf-dump): Mention that --javap is incomplete. + From Alexandre Petit-Bianco: + (Warnings): Don't mention -Wunsupported-jdk11. + My stuff: + (Compatibility): Mention JDK 1.2-ness of libraries. + (Resources): Mention resources used when writing gcj. + +2001-01-17 Tom Tromey + + * gcj.texi: New file. + * Make-lang.in ($(srcdir)/java/gcj.info): New target. + (java.info): Depend on gcj.info. + (java/gcj.dvi): New target. + (java.dvi): Depend on gcj.dvi. + (java.install-info): Wrote. + +2001-01-16 Jeff Sturm + + * expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after + having called make_decl_rtl. + +2001-01-14 Per Bothner + + Various patches to emit better messages on verification errors. + * expr.c (push_type_0): Return error indication on stack overflow, + instead of callinfg fatal. + (push_type): Now just call push_type_0 (nd fatal on overflow). + (pop_type_0): Return detailed error message (in a char** argument). + (pop_type): If pop_type_0 fails, print error message. + (pop_argument_types): Moved to verify.c. + * verify.c (pop_argument_types): Moved from expr.c. + Return a (possible) error message, rather than void. + (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING): New macros. + (verify_jvm_instruction): Use new macros, improving error messages. + For case OPCODE_astore use object_ptr_type_node. + * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED): New macros. + (pop_type_0, push_type_0, pop_argument_types): Update accordingly. + + * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is + constant, return body without wrapper. (Improves constant folding.) + * lex.c (build_wfl_node): Clear TREE_TYPE from returned node. + +2001-01-13 Per Bothner + + * expr.c (expand_java_field_op): Assigning to a final field outside + an initializer does not violate JVM spec, so should be warning, not + error. (Sun's verifier does not complain - though MicroSoft's does.) + +2001-01-12 Joseph S. Myers + + * gjavah.c (version), jcf-dump.c (version): Update copyright year + to 2001. + +2001-01-11 Bryce McKinlay + + * parse.y (resolve_expression_name): Permit instance variables from + enclosing context in super constructor call. + (resolve_qualified_expression_name): Permit enclosing class's qualified + "this" in super constructor call. + +2001-01-10 Mark Mitchell + + * class.c (build_utf8_ref): Remove last argument in call to + make_decl_rtl; use make_function_rtl instead of make_decl_rtl. + (build_class_ref): Likewise. + (build_static_field_ref): Likewise. + (get_dispatch_table): Likewise. + (layout_class_method): Likewise. + (emit_register_classes): Likewise. + * constants.c (build_constant_data_ref): Likewise. + * decl.c (builtin_function): Likewise. + (create_primitive_vtable): Likewise. + * expr.c (build_known_method_def): Likewise. + (build_jni_stub): Likewise. + (java_lang_expand_expr): Likewise. + +2001-01-10 Tom Tromey + + * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation. + +2001-01-08 Alexandre Petit-Bianco + + * java-tree.h (lang_printable_name_wls): New prototype. + * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT + rather than `current_class' to print type name. Don't prepend type + names when printing constructor names. + (lang_printable_name_wls): New function. + * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to + `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE. + * parse.y (patch_method_invocation): Message tuned for constructors. + (not_accessible_p): Grant `private' access from within + enclosing contexts. + +2001-01-07 Alexandre Petit-Bianco + + All files with updated copyright when applicable. + * Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o. + * class.c (mangle_class_field): Function removed. + (append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise. + (utf8_cmp, cxx_keyword_p): Moved to lex.c. + (build_class_ref): Call `java_mangle_class_field' instead of + `mangle_class_field.' + (build_dtable_decl): Rewritten to call `java_mangle_vtable.' + (layout_class): Call `java_mangle_decl' instead of + `mangle_static_field.' + (cxx_keywords): Initialized static array moved to `lex.c.' + (layout_class_method): Changed leading comment. Simplified to + call `java_mangle_decl.' Local `ptr' moved in for loop body. + * decl.c (lang_mark_tree): Mark field `package_list.' + * java-tree.h (TYPE_PACKAGE_LIST): New macro. + (struct lang_type): New field `package_list.' + (unicode_mangling_length): Prototype removed. + (append_gpp_mangled_name, append_gpp_mangled_classtype, + emit_unicode_mangled_name): Likewise. + (cxx_keyword_p): New prototype. + (java_mangle_decl, java_mangle_class_field, + java_mangle_class_field_from_string, java_mangle_vtable): Likewise. + * jcf-parse.c (jcf_parse_source): Constify `file' argument to + `build_expr_wfl.' + * jvgenmain.c (main_method_prefix): Global variable removed. + (main_method_suffix): Likewise. + (do_mangle_classname): New function. + (main): Call it. Format changed to accommodate new mangling scheme. + * lex.c: (utf8_cmp): Conditionally prototyped. + (cxx_keywords): Moved from class.c, conditionally defined. + (utf8_cmp, cxx_keyword_p): Likewise. + * mangle.c (obstack.h, ggc.h): Included. + (mangle_field_decl): New function. + (mangle_method_decl, mangle_type, mangle_pointer_type, + mangle_array_type, mangle_record_type, + find_compression_pointer_match, find_compression_array_match, + find_compression_record_match, + find_compression_array_template_match, set_type_package_list, + entry_match_pointer_p, emit_compression_string, init_mangling, + finish_mangling, compression_table_add, mangle_member_name): Likewise. + (mangle_obstack): New global. + (MANGLE_RAW_STRING): New macro. + (unicode_mangling_length): Turned static. + (append_unicode_mangled_name): Renamed from + `emit_unicode_mangled_name.' Turned static. `mangle_obstack' + replaces `obstack', removed from the parameter list. + (append_gpp_mangled_name): Turned static. `mangle_obstack' + replaces parameter `obstack', removed from the parameter list. Call + `append_unicode_mangled_name' instead of `emit_unicode_mangled_name. + (append_gpp_mangled_classtype): Removed. + (compression_table, compression_next): New static variables. + * parse.y (temporary_obstack): Extern declaration removed. + +2001-01-05 Alexandre Petit-Bianco + + * parse.y (patch_binop): Compute missing type in error situations. + +2001-01-05 Bryce McKinlay + + * class.c (make_class_data): Push initial value for "arrayclass". + * decl.c (init_decl_processing): Add new class field "arrayclass". + +2001-01-05 Bryce McKinlay + + From patha@softlab.ericsson.se: + * parse.y (switch_label): Use build, not build1, to construct + DEFAULT_EXPR. + +2001-01-04 Neil Booth + + * lang.c (lang_decode_option): Change -MA to -MP. + * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target): + Update to new prototype; do quote targets. + (jcf_dependency_write): Update. + +2000-12-22 Bryce McKinlay + + Shorten primitive array allocation path: + * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray + to create new primitive arrays. + * expr.c (build_newarray): If generating native code, call + soft_newarray_node with a reference to the primitive TYPE identifier + instead of type_value. + +2000-12-17 Bryce McKinlay + + Fix for PRs gcj/312 and gcj/253: + * parse.y (valid_ref_assignconv_cast_p): Load classes for source and + dest if they arn't already. + * class.c (layout_class): Call maybe_layout_super_class on + superinterfaces also, but only if compiling from bytecode. + + Fix for PR gcj/373: + * parse.y (create_class): Set ACC_STATIC if class is declared in an + interface. + +2000-12-15 Tom Tromey + + * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already + set. + +2000-12-14 Andrew Haley + + * boehm.c (mark_reference_fields): Change test to correctly detect + bitmap overflow. + +2000-12-15 Andreas Jaeger + + * config-lang.in (lang_dirs): Added. + +2000-12-15 Alexandre Petit-Bianco + + * parse.y (end_artificial_method_body): Fixed undefined behavior. + Credits go to rth for finding it. + +2000-12-13 Mike Stump + + * parse.y (check_static_final_variable_assignment_flag): Fix spelling. + +2000-11-07 Tom Tromey + + * Make-lang.in (JAVA_LEX_C): Added chartables.h. + * lex.c (java_ignorable_control_p): Removed. + (java_letter_or_digit_p): Removed. + (java_start_char_p): New function. + (java_read_char): Return `int', not `unicode_t'. Changed + callers. + (java_read_unicode): Likewise. + (java_read_unicode_collapsing_terminators): Likewise. + (java_get_unicode): Likewise. + (java_new_lexer): Initialize hit_eof. + (java_parse_end_comment): Take `int' argument. + (java_parse_doc_section): Likewise. + (java_parse_escape_sequence): Don't allow backlash-newline. + Return `int'. + * lex.h (JAVA_DIGIT_P): Removed. + (_JAVA_LETTER_OR_DIGIT_P): Removed. + (_JAVA_IDENTIFIER_IGNORABLE): Removed. + (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P. + (JAVA_PART_CHAR_P): New macro. + (UEOF): Now -1. + (JAVA_CHAR_ERROR): Now -2. + (java_lexer): New field `hit_eof'. + * chartables.h: New file. + * gen-table.pl: new file. + +2000-11-20 Tom Tromey + Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): Only allow compound assignment of + reference type if type is String. + +2000-12-09 Alexandre Petit-Bianco + + * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip. + jcf-path.c: Likewise. + +2000-12-09 Anthony Green + + * zipfile.h (ZipDirectory): Declare size, uncompressed_size, + filestart and filename_length as int values. + +2000-12-07 Mo DeJong + + * jcf-io.c (find_class): Correct the logic that tests to see if a + .java file is newer than its .class file. The compiler was + incorrectly printing a warning when file mod times were equal. + +2000-12-07 Zack Weinberg + + * jvgenmain.c: Use ISPRINT not isascii. + +2000-12-06 Alexandre Petit-Bianco + + * parse.y (end_artificial_method_body): Fixed typo. + +2000-12-04 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Pick the correct enclosing + context when creating inner class instances. + Fixes gcj/332. + +2000-11-26 Joseph S. Myers + + * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version): + Update copyright year to 2000. + +2000-11-23 Anthony Green + + * jcf-parse.c (init_jcf_parse): Register current_file_list root. + Move current_file_list out of yyparse and make it static. + + * expr.c: Declare quick_stack and tree_list_free_list as static + (init_expr_processing): Register quick_stack and + tree_list_free_list roots. + +2000-11-22 Alexandre Petit-Bianco + + * parse.y (build_outer_field_access): New local `decl_ctx', use + it. Check for field's context and current class immediate outer + context inheritance. + (outer_field_access_p): Consider fields inherited from the last + enclosing context. + (build_access_to_thisn): Stop at the last enclosing context if + necessary. + Fixes gcj/367. + +2000-11-23 J"orn Rennecke + + * Make-lang.in (jvspec.o): Depend on $(CONFIG_H). + +2000-11-22 Bryce McKinlay + + * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the + scratch buffer. + +2000-11-20 Tom Tromey + + * jv-scan.c (help): Document --complexity. + (options): Added --complexity. + (flag_complexity): New global. + (main): Call `report'. + * parse-scan.y (complexity): New global. + (if_then_statement, if_then_else_statement, + if_then_else_statement_nsi, switch_block_statement_group, + while_expression, do_statement, for_begin, continue_statement, + throw_statement, catch_clause, finally, method_invocation, + conditional_and_expression, conditional_or_expression, + conditional_expression): Update complexity. + (reset_report): Reset complexity. + (report): New function. + +2000-11-20 Tom Tromey + + * lex.c (yylex): Added STRICT_TK case. + * parse.y (STRICT_TK): Added. + * parse-scan.y (STRICT_TK): Added. + * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and + `;'. Use 4, not 3, with -k option. Correctly rename resulting + file. + * keyword.h: Rebuilt. + * keyword.gperf (strictfp): Added. + +2000-11-20 Tom Tromey + + * lex.c (yylex): Recognize floating point constants with leading + 0. + +2000-11-19 Kaveh R. Ghazi + + * java-tree.h (cyclic_inheritance_report): Constify. + * parse.y (cyclic_inheritance_report): Likewise. + +2000-11-17 Zack Weinberg + + * parse.y (goal): Remove call to ggc_add_string_root. + +2000-11-16 Zack Weinberg + + * jcf-parse.c (get_constant), parse.y (do_merge_string_cste): + Create string in scratch buffer, then pass to build_string. + +2000-11-13 Joseph S. Myers + + * parse.y (issue_warning_error_from_context): Add + ATTRIBUTE_PRINTF. + +2000-11-11 Anthony Green + + * jcf-parse.c (process_zip_dir): Add finput parameter. + (jcf_figure_file_type): Call process_zip_dir with appropriate + argument. + +2000-11-10 Kaveh R. Ghazi + + * decl.c (copy_lang_decl): Use memcpy, not bcopy. + * jcf-parse.c (jcf_figure_file_type): Likewise. + +2000-11-09 Joseph S. Myers + + * parse.y (create_new_parser_context): Use memset () instead of + bzero (). + +2000-11-08 Tom Tromey + + * gjavah.c (process_file): Only include gcj/cni.h when generating + CNI stubs. + +2000-11-07 Joseph S. Myers + + * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c + (init_outgoing_cpool), lex.c (java_init_lex): Use memset () + instead of bzero (). + +2000-11-05 Tom Tromey + + * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix. + * lex.c (IS_ZERO): New define. + (java_perform_atof): Error on floating point underflow. + +2000-11-04 Tom Tromey + + * lex.c (java_parse_escape_sequence): Only read two octal + characters if the first one is greater than 3. Don't allow + "octal" numbers to include the digits 8 or 9. + +2000-11-05 Joseph S. Myers + + * Make-lang.in (java.distdir): Remove. + +2000-11-03 Tom Tromey + + * Make-lang.in (java.dvi): New target. + Partial fix for PR other/567. + + * lang-options.h: Mention -Wout-of-date. + * jcf-dump.c (flag_newer): New global. + * gjavah.c (flag_newer): New global. + * jcf-io.c (find_class): Only warn when flag_newer set. + * lang.c (flag_newer): New global. + (struct string_option): New declaration. + (lang_W_options): New global. + (process_option_with_no): New function. + (lang_decode_option): Use it. + + * class.c (cxx_keyword_p): Accept keywords with trailing `$'s. + * gjavah.c (cxx_keyword_subst): Handle any number of trailing + `$'. + + * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro. + (JAVA_ID_CHAR_P): Also try java_ignorable_control_p. + * lex.c (java_read_unicode): Removed `term_context' argument. + Recognize any number of `u' in `\u'. + (java_read_unicode_collapsing_terminators): New function. + (java_get_unicode): Use it. + (java_lineterminator): Removed. + (yylex): Produce error if character literal is newline or single + quote. Return if eof found in middle of `//' comment. EOF in + `//' comment is only an error if pedantic. + (java_ignorable_control_p): New function. + (java_parse_end_comment): Return if eof found in middle of + comment. + Include flags.h. + * jv-scan.c (pedantic): New global. + +2000-10-31 Alexandre Petit-Bianco + + * parse.y (outer_field_access_p): Inherited fields aren't + consider outer fields. + (maybe_build_thisn_access_method): Use + PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P. + (resolve_expression_name): Trigger an error if a static field + is being accessed as an outer field. + +2000-10-29 Alexandre Petit-Bianco + + * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'. + Fixes gcj/365. + +2000-10-27 Zack Weinberg + + * Make-lang.in: Move all build rules here from Makefile.in, + adapt to new context. Wrap all rules that change the current + directory in parentheses. Expunge all references to $(P). + When one command depends on another and they're run all at + once, use && to separate them, not ;. Add OUTPUT_OPTION to + all object-file generation rules. Delete obsolete variables. + + * Makefile.in: Delete. + * config-lang.in: Delete outputs= line. + +2000-10-25 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): NULLify this_arg when already + inserted. + (maybe_use_access_method): Handle call to methods unrelated to the + current class. Fixed comment. + Fixes gcj/361. + +2000-10-24 Alexandre Petit-Bianco + + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in + scope. + +2000-10-24 Tom Tromey + + * lex.c (java_new_lexer): Initialize new fields. Work around + broken iconv() implementations. + (java_read_char): Swap bytes if required. Use fallback decoder if + required. + (byteswap_init, need_byteswap): New globals. + (java_destroy_lexer): Only close iconv handle if it is in use. + * lex.h (java_lexer): New fields read_anything, byte_swap, + use_fallback. + Made out_buffer unsigned. + +2000-10-24 Alexandre Petit-Bianco + + * parse.y (register_incomplete_type): Include JDEP_FIELD as a case + where an enclosing context can be set on the jdep. + (do_resolve_class): Fixed identation. + +2000-10-21 Kaveh R. Ghazi + + * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define + + * jcf-reader.c (peek_attribute, skip_attribute): Only define + when requested. + + * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN. + + * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void. + +2000-10-18 Alexandre Petit-Bianco + + * jcf-write.c (OP1): Update `last_bc'. + (struct jcf_block): Fixed indentation and typo in comments. New + field `last_bc'. + (generate_bytecode_insns): Insert `nop' if `jsr' immediately + follows `monitorenter'. + * parse.y (patch_synchronized_statement): New local `tmp'. Call + `patch_string'. + Fixes gcj/232. + +2000-10-16 Tom Tromey + + * jvspec.c (lang_specific_driver): Recognize -MF and -MT. + * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}. + * lang-options.h: Added -MA, -MT, -MF.. + * lang.c (lang_decode_option): Recognize -MA, -MT, -MF. + (DEPEND_TARGET_SET): New macro. + (DEPEND_FILE_ALREADY_SET): Likewise. + (init_parse): Handle new flags. + * jcf.h (jcf_dependency_print_dummies): Declare. + * Make-lang.in (s-java): Added mkdeps.o. + * Makefile.in (BACKEND): Added mkdeps.o. + (../gcjh$(exeext)): Added mkdeps.o. + (../jcf-dump$(exeext)): Added mkdeps.o. + * jcf-depend.c: Include mkdeps.h. + (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS, + add_entry): Removed. + (jcf_dependency_reset): Rewrote. + (dependencies): New global. + (jcf_dependency_set_target): Rewrote. + (jcf_dependency_add_target): Likewise. + (jcf_dependency_add_file): Likewise. + (munge): Removed. + (print_ents): Removed. + (jcf_dependency_write): Rewrote. + (print_dummies): New global. + (jcf_dependency_print_dummies): New function + (jcf_dependency_write): Call deps_dummy_targets if required. + +2000-10-18 Alexandre Petit-Bianco + + * gjavah.c (add_class_decl): Removed unused variables `tname', + `tlen' and `name_index'. + * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro. + * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME + in `wfl_operator' with value. + (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE. + (jcf_figure_file_type): Fixed identation. + * lex.c (java_get_line_col): Use EOF. Tuned `^' placement. + * parse.y (analyze_clinit_body): New function. + (static_initializer:): Reset `current_static_block'. + (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in + `wfl_operator' with new value. + (lookup_cl): Use EXPR_WFL_FILENAME. + (maybe_yank_clinit): Handle bogus bodies, call + analyze_clinit_body. + (build_outer_field_access): Access to this$ built from + current_class, not its outer context. + (build_access_to_thisn): Fixed leading comment. Tidied things up. + (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'. + (patch_method_invocation): Use `is_static_flag' when already + initialized. + (patch_newarray): Removed assignment in ternary operator. + +2000-10-17 Alexandre Petit-Bianco + + * except.c (free_eh_ranges): Don't free `whole_range'. + +2000-10-15 Anthony Green + + * decl.c (init_decl_processing): Call init_class_processing before + anything else. + +2000-10-13 Alexandre Petit-Bianco + + * check-init.c (check_init): Fixed leading comment. Use + LOCAL_FINAL_P. + * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. + (give_name_to_locals): Likewise. + (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl' + fields in lang_decl_var. + * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR, + DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros. + (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten. + (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC, + DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros. + (LOCAL_FINAL): Rewritten. + (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P + MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros. + (struct lang_decl): Fixed comments. Added `synthetic_ctor' and + `init_final' fields. + (struct lang_decl_var): Fixed leading comment. Added `am', `wfl', + `final_uid', `final_liic', `final_ierr' and `local_final' fields. + (TYPE_HAS_FINAL_VARIABLE): New macro. + (struct lang_type): Added `afv' field. + * parse.y (check_static_final_variable_assignment_flag): New function. + (reset_static_final_variable_assignment_flag): Likewise. + (check_final_variable_local_assignment_flag): Likewise. + (reset_final_variable_local_assignment_flag): Likewise. + (check_final_variable_indirect_assignment): Likewise. + (check_final_variable_global_assignment_flag): Likewise. + (add_inner_class_fields): Use LOCAL_FINAL_P. + (register_fields): Handle local finals and final variables. + (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR. + (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. + (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC + on local finals. + (java_complete_expand_methods): Loop to set + TYPE_HAS_FINAL_VARIABLE. Call + `reset_final_variable_local_assignment_flag' and + `check_final_variable_local_assignment_flag' accordingly before + and after constructor expansion. Call + `reset_static_final_variable_assignment_flag' + before expanding and after call + `check_static_final_variable_assignment_flag' if the + current_class isn't an interface. After all methods have been + expanded, call `check_final_variable_global_assignment_flag' and + `check_static_final_variable_assignment_flag' if the current class + is an interface. + (maybe_yank_clinit): Fixed typo in comment. + (build_outer_field_access_methods): Removed old sanity check. Use + FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. + Don't create access methods for finals. + (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'. + (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if + existing DECL_INIT has been processed. + (java_complete_lhs): Likewise. + (check_final_assignment): Filter input on `lvalue''s TREE_CODE. + Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new + logic. + (patch_assignment): Use LOCAL_FINAL_P. + (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if + DECL_INITIAL is nullified. + Fixes gcj/163. + +2000-10-13 Kaveh R. Ghazi + + * Make-lang.in (parse.c, parse-scan.c): Create atomically. + + * Makefile.in (parse.c, parse-scan.c): Likewise. + +2000-10-12 Mark Mitchell + + * class.c (temporary_obstack): Remove. + (make_class): Don't mess with obstascks. + (push_class): Likewise. + (set_super_info): Likewise. + (add_method_1): Likewise. + (add_method): Likewise. + (add_field): Likewise. + (build_utf8_ref): Likewise. + (build_class_ref): Likewise. + (build_static_field_ref): Likewise. + (finish_class): Likewise. + (push_super_field): Likewise. + (layout_class): Likewise. + (layout_class_methods): Likewise. + (init_class_processing): Likewise. + * constants.c (get_tag_node): Likewise. + (build_constant_data_ref): Likewise. + * decl.c (ggc_p): Remove. + (copy_lang_decl): Use ggc_alloc. + (complete_start_java_method): Don't mess with obstacks. + (start_java_method): Likewise. + (end_java_method): Likewise. + * except.c (link_handler): Use xmalloc. + (free_eh_ranges): New function. + (method_init_exceptions): Use it. + (add_handler): Use xmalloc. + (expand_start_java_handler): Don't mess with obstacks. + (prepare_eh_table_type): Likewise. + (expand_end_java_handler): Likewise. + * expr.c (push_value): Likewise. + (create_label_decl): Likewise. + (build_jni_stub): Likewise. + (java_lang_expand_expr): Likewise. + (note_instructions): Use xrealloc. + (java_push_constant_from_pool): Don't mess with obstacks. + (process_jvm_instruction): Likewise. + * java-tree.h (cyclic_inheritance_report): Remove duplicate + declaration. + * jcf-parse.c (get_constant): Don't mess with obstacks. + (read_class): Likewise. + (jcf_parse): Likewise. + * lex.c (expression_obstack): Remove. + (java_lex): Don't use obstack_free. + * parse.h (exit_java_complete_class): Don't mess with obstacks. + (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust. + (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise. + (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise. + * parse.y (gaol): Add more GC roots. + (add_inner_class_fields): Adjust calls to MANGLE_* macros. + (lookup_field_wrapper): Likewise. + (obtain_incomplete_type): Don't mess with obstacks. + (build_alias_initializer_parameter_list): Adjust calls to MANGLE_* + macros. + (craft_constructor): Don't mess with obstacks. + (safe_layout_class): Likewise. + (java_complete_class): Likewise. + (source_end_java_method): Likewise. + (build_outer_field_access_methods): Likewise. + (build_outer_method_access_method): Likewise. + (maybe_build_thisn_access_method): Likewise. + (build_dot_class_method_invocation): Likewise. + (java_complete_tree): Likewise. + (java_complete_lhs): Likewise. + (do_merge_string_cste): Likewise. + (patch_string_cst): Likewise. + (array_constructor_check_entry): Likewise. + * typeck.c (build_java_array_type): Likewise. + (parse_signature_string): Likewise. + (build_java_signature): Likewise. + +2000-10-12 Tom Tromey + + Fix for PR gcj/356: + * gjavah.c (add_class_decl): Don't special-case inner classes. + (add_namelet): Likewise. + +2000-10-11 Rodney Brown + + * java-tree.h: Constify current_encoding. + * lang.c: Constify current_encoding. + +2000-10-10 Jeff Sturm + + * jvgenmain.c (class_mangling_suffix): Omit `.'. + (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'. + +2000-10-10 Alexandre Petit-Bianco + + * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's + patch. Fixes gcj/340. + +2000-10-10 Tom Tromey + + * lex.c (java_new_lexer): Initialize out_first and out_last + fields. + * lex.h (java_lexer): Added out_buffer, out_first, out_last. + +2000-10-09 Alexandre Petit-Bianco + + * parse.y (pop_current_osb): New function. + (array_type:): Use `dims:', changed actions + accordingly. Suggested by Anthony Green. + (array_creation_expression:): Used pop_current_osb. + (cast_expression:): Likewise. + (search_applicable_method_list): Fixed indentation. + +2000-10-08 Anthony Green + + * parse.y (array_type_literal): Remove production. + (type_literals): Refer to array_type, not array_type_literal. + +2000-10-07 Alexandre Petit-Bianco + + Patch contributed by Corey Minyard. + * decl.c (check_local_named_variable): New function. + (tree check_local_unnamed_variable): Likewise. + (find_local_variable): Splitted. Call check_local_{un}named_variable. + +2000-10-07 Anthony Green + + * class.c (layout_class): Handle case where superclass can't be + layed out yet. + +2000-10-07 Joseph S. Myers + + * Makefile.in (keyword.h): Refer to GNU FTP site for updated + gperf. + +2000-10-05 Tom Tromey + + * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'. + * jvgenmain.c (class_mangling_prefix): Removed. + (class_mangling_suffix): New global. + (main): Use it. + * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending + `$'. + (print_method_info): Handle overrides for static and final + methods. + (process_file): Generate declaration for class object field. + * class.c (cxx_keywords): New array. + (utf8_cmp): New function. + (cxx_keyword_p): New function. + (layout_class_method): Mangle C++ keywords by appending `$'. + (mangle_field): New function. + (mangle_class_field): Use mangle_field. Mangle class name as + `class$'. + (mangle_static_field): Use mangle_field. + +2000-10-03 Alexandre Petit-Bianco + + * decl.c (find_local_variable): Removed uncessary type check and + fixed range check typo. From Corey Minyard. + +2000-09-13 Alexandre Petit-Bianco + + * decl.c (give_name_to_locals): New local `code_offset'. Call + `maybe_adjust_start_pc'. + * expr.c (note_instructions): New function. + (expand_byte_code): Don't collect insn starts here. + (peek_opcode_at_pc): New function. + (maybe_adjust_start_pc): Likewise. + * java-tree.h (maybe_adjust_start_pc): Declare. + (note_instructions): Likewise. + * jcf-parse.c (parse_class_file): Call `note_instructions'. + +2000-09-13 Alexandre Petit-Bianco + + * parse.y (field_access:): Fixed indentation. + (qualify_ambiguous_name): Properly qualify `this.a[b].c'. + +2000-09-07 Tom Tromey + + Fix for PR gcj/307: + * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not + JPRIMITIVE_TYPE_P, for arithmetic operators. + (patch_method_invocation): Indentation fix. + (try_builtin_assignconv): Handle boolean specially. Fixed typo. + (valid_builtin_assignconv_identity_widening_p): Handle boolean. + (do_unary_numeric_promotion): Cleaned up code. + (valid_cast_to_p): Handle boolean correctly. + +2000-09-27 Tom Tromey + + * lex.c (java_read_unicode): Reset bs_count when finished with + `\u' sequence. + +2000-10-01 Mark Mitchell + + Convert to GC. + * Make-lang.in (s-java): Don't depend on ggc-callbacks.o. + * Makefile.in (BACKEND): Don't include ggc-callbacks.o. + (typeck.o): Depend on ggc.h. + * class.c (add_method_1): Use GC functions for allocation. + (init_class_processing): Register roots. + * decl.c (ggc_p): Set to 1. + (pending_local_decls): Make it static. + (push_jvm_slot): Use GC functions for allocation. + (init_decl_processing): Register roots. + (give_name_to_locals): Use GC functions for allocation. + (lang_mark_tree): New function. + * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC + functions for allocation. + * jcf-parse.c (jcf_parse_source): Use ggc_strdup. + * lex.c (java_lex): Use build_string, rather than replicating it + inline. + * parse.y (goal): Add more roots. + (mark_parser_ctxt): New function. + * typeck.c: Include ggc.h. + +2000-09-29 Alexandre Petit-Bianco + + * parse.y (maybe_yank_clinit): Also keep if its body + contains something else than MODIFY_EXPR. + +2000-09-23 Mark Mitchell + + * Make-lang.in (JAVA_SRCS): Include java-tree.h. + * Makefile.in (parse.o): Depend on ggc.h. + (class.o): Likewise. + (constants.o): Likewise. + (decl.o): Likewise. + (expr.o): Likewise. + (jcf-parse.o): Likewise. + (jcf-write.o): Likewise. + (mangle.o): Likewise. + * class.c: Include ggc.h. + (build_static_field_ref): Register GC roots. + (layout_class): Likewise. + (init_class_processing): Likewise. + * constants.c: Include ggc.h. + (current_constant_pool_data_ref): Remove. + (tag_nodes): Move it to ... + (get_tag_node): ... here. Register GC roots. + * decl.c: Include ggc.h. Remove many global tree definitions. + (throw_node): Define. + (java_global_trees): Likewise. + (predef_filenames): Make the size a constant. + (init_decl_processing): Adjust accordingly. + (init_decl_processing): Call init_jcf_parse. Register GC roots. + * expr.c: Include ggc.h. + (init_expr_processing): Register GC roots. + (build_invokeinterface): Likewise. + * java-tree.h: Replace extern tree declarations with macros. + (java_global_trees): New variable. + (java_tree_index): New enumeration. + (init_jcf_parse): Declare. + * jcf-parse.c: Include ggc.h. + (current_class): Remove declaration. + (main_class): Likewise. + (all_class_list): Likewise. + (predefined_filename_p): Adjust for constant size of + predef_filenames. + (init_jcf_parse): New function. + * jcf-write.c: Include ggc.h. + (generate_classfile): Register GC roots. + (append_synthetic_attribute): Likewise. + (append_innerclass_attribute_entry): Likewise. + * lang.c: Include ggc.h. + (lang_print_error): Register GC roots. + * parse.h (struct parser_ctxt): Rename fields to avoid conflicts + with macros. + * parse.y: Include ggc.h. + (wfl_operator): Remove. + (goal): Register GC roots. + (java_pop_parser_context): Adjust for new field names. + (java_parser_context_save_global): Likewse. + (java_parser_context_restore_global): Likewise. + (java_parser_context_suspend): Likewise. + (java_parser_context_resume): Likewise. + (verify_constructor_circularity): Register GC roots. + (lookup_cl): Likewise. + (java_reorder_fields): Likewise. + (build_current_this): Likewise. + (class_in_current_package): Likewise. + (argument_types_convertible): Likewise. + (patch_cast): Rename wfl_op parameter to avoid macro conflicts. + +2000-09-14 Tom Tromey + + * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV. + +2000-09-13 Tom Tromey + + * jcf-parse.c: Include . + * jv-scan.c: Include . + +2000-09-12 Tom Tromey + + * expr.c (pop_type_0): Return `Object' if trying to merge two + interface types. + * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for + interface types; `Object' is always a valid supertype. + +2000-09-12 Tom Tromey + + Fix for PR gcj/33: + * jv-scan.c (help): Document --encoding. + (options): Added `encoding' entry. + (OPT_ENCODING): New define. + (main): Handle --encoding. + Include if nl_langinfo exists. + * lang-options.h: Document --classpath, --CLASSPATH, --main, and + --encoding. + * jcf-parse.c Include if we have nl_langinfo. + (parse_source_file): Correctly call java_init_lex. Added `finput' + argument. Use nl_langinfo to determine default encoding. + * java-tree.h (current_encoding): Declare. + * parse.y (java_parser_context_restore_global): Don't restore + `finput'. + (java_parser_context_save_global): Don't set `finput' field. + (java_pop_parser_context): Don't restore `finput'. Free old lexer + if required. + * lang.c (current_encoding): New global. + (lang_decode_option): Recognize `-fencoding='. + (finish_parse): Don't close finput. + * parse.h (struct parser_ctxt): Removed `finput' and + `unget_utf8_value' fields. Added `lexer' field. + (java_init_lex): Fixed declaration. + * lex.c (java_new_lexer): New function. + (java_destroy_lexer): Likewise. + (java_read_char): Added `lex' argument. Handle iconv case. + (java_read_unicode): Added `lex' argument. Count backslashes in + lexer structure. + (java_init_lex): Added `finput' and `encoding' arguments. Set + `lexer' field in ctxp. + (BAD_UTF8_VALUE): Removed. + (java_lex): Handle seeing UEOF in the middle of a string literal. + * lex.h: Include if HAVE_ICONV defined. + (java_lexer): New structure. + (UNGETC): Removed. + (GETC): Removed. + (DEFAULT_ENCODING): New define. + (java_destroy_lexer): Declare. + +2000-09-12 Tom Tromey + + Fix for PR gcj/343: + * lex.c (java_init_lex): Initialize java_io_serializable. + * parse.y (java_io_serializable): New global. + (valid_ref_assignconv_cast_p): An array can be cast to + serializable. + +2000-09-10 Zack Weinberg + + * decl.c, expr.c: Include defaults.h if not already included. + Don't define the *_TYPE_SIZE macros. + +2000-09-09 Geoffrey Keating + + * typeck.c (build_java_array_type): Correct first parameter + in ADJUST_FIELD_ALIGN invocation. + +2000-09-06 Tom Tromey + + * lang-specs.h: Also recognize `-femit-class-files'. + +2000-09-05 Alexandre Petit-Bianco + + * verify.c (merge_types): Load the types to merge if necessary. + +2000-09-02 Anthony Green + + * jcf-io.c: Include zlib.h. + (open_in_zip): Read compressed class file archives. + * zipfile.h (ZipDirectory): Add uncompressed_size and + compression_method fields. + * zextract.c (read_zip_archive): Collect file compression info. + +2000-08-15 Bryce McKinlay + + * parse.y (do_resolve_class): Also explore superclasses of + intermediate enclosing contexts when searching for inner classes. + +2000-08-11 Alexandre Petit-Bianco + + * parse.y (variable_declarator_id:): Better error message. + (expression_statement:): Use YYNOT_TWICE. + (cast_expression:): Likewise. + (assignment:): Likewise. + +2000-08-11 Alexandre Petit-Bianco + + * parse.y (do_merge_string_cste): New locals. Create new + STRING_CSTs each time, use memcpy. Fixes gcj/311. + +2000-08-07 Hans Boehm + + * boehm.c (mark_reference_fields): Set marking bits for all words in + a multiple-word record. + (get_boehm_type_descriptor): Use the procedure marking descriptor for + java.lang.Class. + +2000-08-31 Mike Stump + + * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext), + jcf-dump$(exeext)): Make parallel safe. + +2000-08-29 Zack Weinberg + + * jcf-parse.c (set_source_filename): Constify a char *. + * jcf-write.c (append_innerclasses_attribute, + make_class_file_name): Constify a char *. Don't recycle a + variable for an unrelated purpose. + * parse.y: (build_alias_initializer_parameter_list): Constify a char *. + (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings. + +2000-08-29 Alexandre Petit-Bianco + + * expr.c (can_widen_reference_to): Fixed indentation. + * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment. + * parse.y: `finit$' replaces `$finit$' in comments. + (try_builtin_assignconv): Fixed leading comment. + +2000-08-25 Greg McGary + + * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE. + +2000-08-24 Greg McGary + + * lang.c (lang_decode_option): Use ARRAY_SIZE. + * parse.y (BINOP_LOOKUP): Likewise. + +2000-08-22 Andrew Haley + + * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before + sign extending. Fixes gcj/321. + * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before + combining to make a jlong. Fixes gcj/321. + +2000-08-21 Nix + + * lang-specs.h: Do not process -o or run the assembler if + -fsyntax-only. + +2000-08-16 Andrew Haley + + * typeck.c (build_java_array_type): Rewrite code to do array + alignment. Take into account back-end macros when aligning array + data. Remove setting of TYPE_USER_ALIGN; Java doesn't allow the + user to set alignment. Fixes gcj/252 and 160. + +2000-08-09 Tom Tromey + + * parse.y (check_abstract_method_definitions): Now return `int'. + Check implemented interfaces. Fixes PR gcj/305. + + * parse.y (patch_switch_statement): Disallow `long' in switch + expressions. Fixes PR gcj/310. + +2000-08-15 Alexandre Petit-Bianco + + * decl.c (finit_leg_identifier_node): New global. + (init_decl_processing): Use `finit$' to initialize + finit_identifier_node. Use `$finit$' to initialize + finit_leg_identifier_node. + * expr.c (expand_java_field_op): Use ID_FINIT_P. + * java-tree.h (finit_identifier_node): Changed attached comment. + (finit_leg_identifier_node): New declaration. + (ID_FINIT_P): Take finit_identifier_node and + finit_leg_identifier_node into account. This is a backward + compatibility hack. + +2000-08-14 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_conditional): Re-installed lost + Jan 6 2000 patch. + (generate_bytecode_insns): Check `nargs' before emitting it. + * verify.c (merge_type_state): Fixed typo. + * ChangeLog: Fixed typo in some jcf-write.c entries mentioning + generate_bytecode_{conditional,insns}. + +2000-08-13 Anthony Green + + * check-init.c (check_init): Add case for BIT_FIELD_REF (required + for -pg builds). + +2000-08-10 Alexandre Petit-Bianco + + * class.c (maybe_layout_super_class): Fixed indentation. + * java-tree.h (CLASS_METHOD_CHECKED_P): New macro. + (java_check_methods): New function declaration. + * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str' + instead of `str_ptr'. + * jcf-write.c (generate_bytecode_insns): Emit number the of args + of a `invokeinterface' at the right time. + * parse.h (WFL_STRIP_BRACKET): New macro. + (SET_TYPE_FOR_RESOLUTION): Use it. + * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'. + (check_class_interface_creation): Don't check for cross package + innerclass name clashes. + (method_header): Behave properly if MDECL is `error_mark_node'. + (method_declarator): Return `error_mark_node' if bogus current + class. + (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary. + (resolve_and_layout): New local `decl_type', set and used. Call + java_check_methods. + (java_check_methods): New method. + (java_layout_classes): Use it. + (resolve_qualified_expression_name): No EH check necessary in + access$. + (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating + `case' statement. + (patch_assignment): Set DECL_INITIAL on integral final local. + +2000-08-08 Alexandre Petit-Bianco + + * java-tree.h (flag_extraneous_semicolon): New extern. + * lang-options.h: (-Wextraneous-semicolon): New option. + * lang.c (flag_redundant): Fixed typo in leading comment. + (flag_extraneous_semicolon): New global. + (lang_decode_option): Set `flag_extraneous_semicolon' when + -Wall. Decode `-Wextraneous-semicolon'. + * parse.y (type_declaration:): Removed `SC_TK' hack, added + `empty_statement' rule. + (class_body_declaration): Likewise. + (method_body:): Accept `;' as a method body. + (static_initializer:): Removed `SC_TK' hack. + (constructor_block_end:): Likewise. + (empty_statement:): Report deprecated empty declaration. Fixes + gcj/295 + +2000-08-07 Alexandre Petit-Bianco + + * parse.y (build_dot_class_method_invocation): Changed parameter + name to `type'. Build signature from `type' and convert it to a + STRING_CST if it's an array. + (patch_incomplete_class_ref): `build_dot_class_method_invocation' + to use `ref_type' directly. + +2000-08-06 Ovidiu Predescu + + * lang-options.h: Added a comma after the last element to avoid + syntax errors when other languages define additional options. + +2000-08-04 Zack Weinberg + + * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist. + * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS. + (jc1): Link with $(BACKEND). + (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND). + +2000-08-02 Zack Weinberg + + * jvspec.c: Adjust type of second argument to + lang_specific_driver, and update code as necessary. + + * class.c (build_dtable_decl): Initialize dummy. + +2000-08-01 Alexandre Petit-Bianco + + * parse.y (maybe_yank_clinit): When generating bytecode: non empty + method bodies not to rule out discarding `'; don't use + to initialize static fields with constant initializers. + +2000-08-01 Alexandre Petit-Bianco + + * gjavah.c (print_method_info): Added `synth' parameter. Skip + synthetic methods. + (method_synthetic): New global. + (HANDLE_METHOD): Recognize synthetic method and tell + `print_method_info' about it. + (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're + processing a synthetic method. + * jcf-reader.c (skip_attribute): New function. + ( skip_attribute): Likewise. + +2000-08-01 Alexandre Petit-Bianco + + * parse.y (build_outer_field_access): Fixed comments. + (fix_constructors): Emit the initialization of this$ before + calling $finit$. + (resolve_qualified_expression_name): Build an access to `decl' if + necessary. + +2000-07-31 Alexandre Petit-Bianco + + * parse-scan.y (curent_class): Non longer const. + (inner_qualifier, inner_qualifier_length): Deleted. + (current_class_length): New global. + (bracket_count): Fixed typo in leading comment. + (anonymous_count): New global. + (class_instance_creation_expression:): Handle anonymous classes. + (anonymous_class_creation:): New rule. + (push_class_context): Rewritten. + (pop_class_context): Likewise. + (INNER_QUALIFIER): Macro deleted. + (report_class_declaration): call `push_class_context' when + entering the function. `fprintf' format modified not to use + INNER_QUALIFIER. + (report_class_declaration): Assign `package_name' and + `current_class' to NULL separately. + +2000-07-31 Alexandre Petit-Bianco + + * expr.c (build_invokeinterface): Call layout_class_methods on + target interface. + +2000-07-27 Tom Tromey + Anthony Green + Alexandre Petit-Bianco + + * class.c (make_class_data): Create vtable for abstract classes. + (get_dispatch_table): Changed to cope with abstract classes. + +2000-07-27 Tom Tromey + + * parse.y (patch_method_invocation): Don't reverse the argument + list when dealing with anonymous class constructors. Fixed typo in + comment. + +2000-07-27 Alexandre Petit-Bianco + + * parse.y (build_alias_initializer_parameter_list): Reverse + crafted list when building aliases for anonymous class + constructors. + +2000-07-25 Alexandre Petit-Bianco + + * parse.y (jdep_resolve_class): Don't bother checking potential + innerclass access if `decl' is NULL. + (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the + WFL. + +2000-07-25 Alexandre Petit-Bianco + + * parse.c: Remove (again.) + +2000-07-24 Alexandre Petit-Bianco + + * parse.y (find_as_inner_class): Removed 2000-07-19 patches. + * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved + outside the `if' statement, alias to innerclass removed, `decl' + used to mark the class complete. + +2000-07-21 Alexandre Petit-Bianco + + * parse.y (simple_name:): Fixed typo in error message. + +2000-07-21 Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node + or its first operand can be error marks. + +2000-07-20 Alexandre Petit-Bianco + + * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC. + * parse.y (method_header): Likewise. + +2000-07-19 Alexandre Petit-Bianco + + * parse.y (process_imports): Consider that one might be trying to + import an innerclass. Fixes gcj/254 + +2000-07-19 Alexandre Petit-Bianco + + * parse.y (find_as_inner_class): Handle the case where the + enclosing context of an innerclass has been loaded as bytecode. + +2000-07-19 Alexandre Petit-Bianco + + * parse.y (simple_name:): Reject `$' in type names. + (resolve_type_during_patch): Use `type' as a second + argument to resolve_no_layout. Fixes gcj/257. + +2000-07-18 Bryce McKinlay + + * parse.y (find_most_specific_methods_list): Select the only + non-abstract method even if max has been set. + Fixes gcj/285, gcj/298. + +2000-07-18 Jeff Sturm + + * lang-specs.h: Added %(jc1) to java compiler options. + +2000-07-14 Zack Weinberg + + * .cvsignore: New file. + +2000-07-13 Alexandre Petit-Bianco + + * parse.y (not_accessible_p): Access granted to innerclasses + (indirectly) extending the reference type. Fixes gcj/249. + +2000-07-13 Alexandre Petit-Bianco + + * parse.y (patch_method_invocation): Fixed comment. + (maybe_use_access_method): Build this$s to the context of the + target method, or a type that extends it. Fixes gcj/242. + +2000-07-13 Mark Mitchell + + * parse.c: Remove. + +2000-07-13 Alexandre Petit-Bianco + + * parse.y (fold_constant_for_init): Avoid bullish conversion. + +2000-07-13 Tom Tromey + + * lang-specs.h: Added %{I*}. + +2000-07-13 Zack Weinberg + + * lang-specs.h: Use the new named specs. Remove unnecessary braces. + +2000-07-12 Mark Mitchell + + * parse-scan.c: Remove. + +2000-07-10 Alexandre Petit-Bianco + + * class.c (set_super_info): Handled protected inner classes. + (common_enclosing_context_p): Bail early if arguments aren't both + inner classes. + (get_access_flags_from_decl): Handle private and protected inner + classes. + * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro. + (CLASS_PROTECTED): Likewise. + (struct lang_type): New bitfield `poic'. + * parse.y (jdep_resolve_class): Call check_inner_class_access on + inner classes only. + (check_inner_class_access): Renamed arguments, added + comments. Handles protected inner classes (fixes gcj/225) + (not_accessible_p): Fixed comments. Avoid handling inner classes. + +2000-07-10 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Verify qualified + access to `this'. Fixes gcj/239. + +2000-07-10 Alexandre Petit-Bianco + + * jcf-write.c (generate_classfile): Don't install ConstantValue + for null pointers. + +2000-07-07 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Handle inner class + access. Fixes gcj/256. + +2000-07-07 Alexandre Petit-Bianco + + * jcf-write.c (generate_classfile): Properly install the + ConstantValue attribute and the initial value constant pool index + on string constants. + * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting + class files. + +2000-07-06 Alexandre Petit-Bianco + + * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while + construct. + * parse.y (find_as_inner_class): Fixed typo. + (do_resolve_class): Explore enclosing contexts when searching for + innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME. + (check_inner_class_access): Check `decl' which can be null in case + of previous errors. + +2000-07-05 Alexandre Petit-Bianco + + * java-tree.h (java_debug_context): Declared `extern'. + (safe_layout_class): Likewise. + * parse.y (resolve_field_access): Field must be `static' in order + to be replaced by its initial value. Added comments. + (find_applicable_accessible_methods_list): Fixed typo. + (find_most_specific_methods_list): Methods found in innerclasses + take over methods founds in the enclosing contexts. + (java_complete_tree): Loosen restrictions on the type of DECLs + that can be replaced by their initialization values. + (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'. + +2000-07-05 Tom Tromey + + * Make-lang.in (PARSE_DIR): New macro. + (PARSE_RELDIR): Likewise. + (PARSE_C): Likewise. + (PARSE_SCAN_C): Likewise. + ($(PARSE_C)): New target. + ($(PARSE_SCAN_C)): Likewise. + (SET_BISON): New macro. + (BISONFLAGS): Likewise. + (JAVABISONFLAGS): Likewise. + +2000-07-02 Bryce McKinlay + + * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream + argument on the first pass for CNI as well as JNI. + (print_method_info): Set up method name on the first pass only. + +2000-07-01 Alexandre Petit-Bianco + + * parse.y (parser_qualified_classname): Removed parameter + `is_static'. + (create_interface): Removed first passed parameter to + parser_qualified_classname. + (create_class): Likewise. Don't install alias on static + innerclasses. Fixes gcj/275. + +2000-07-01 Alexandre Petit-Bianco + + * parse.y (maybe_generate_pre_expand_clinit): Don't build a + debugable statement with empty_stmt_node. Fixes gcj/272 + +2000-07-01 Alexandre Petit-Bianco + + * expr.c (build_instanceof): Layout type after it's loaded. Fixes + gcj/271. + +2000-06-29 Alexandre Petit-Bianco + + * jcf-write.c (push_long_const): Appropriately cast short negative + constant to jword. + +2000-06-29 Alexandre Petit-Bianco + + * parse.y (verify_constructor_super): Use loop variable + `m_arg_type' initialized with `mdecl_arg_type'. + +2000-06-29 Tom Tromey + + * parse.y (resolve_field_access): Handle case where `type_found' + is NULL. + +2000-06-27 Alexandre Petit-Bianco + + * expr.c (lookup_field): The same field can be found through two + different interface. Don't declare it ambiguous in that case. + +2000-06-27 Tom Tromey + + * lex.c (java_lineterminator): Don't recognize \r after \n. If \r + follows \r, then unget it at a lower level. + +2000-06-26 Tom Tromey + + * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to + java_complete_tree. + +2000-06-25 Tom Tromey + + * parse.y (for_statement): Wrap expression in a WFL if it is a + constant. For PR gcj/268. + +2000-06-25 Alexandre Petit-Bianco + + * parse.y (do_resolve_class): Minor optimiztion in the package + list search. Removed unnecessary test and return statement. + (valid_ref_assignconv_cast_p): Order of arguments to + enclosing_context_p fixed. + +2000-06-24 Tom Tromey + + * expr.c (lookup_field): Print error and return error_mark_node if + field reference is ambiguous. + + * parse.y (check_abstract_method_definitions): Also check if + `other_method' is abstract. + +2000-06-23 Alexandre Petit-Bianco + + * class.c (set_super_info): Handle ACC_PRIVATE for (inner) + classes. + * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro. + (struct lang_type): New field `pic'. + (CLASS_PRIVATE): New macro. + * parse.y (check_inner_class_access): New function. + (jdep_resolve_class): Call it. + +2000-06-23 Tom Tromey + + * parse.y (patch_incomplete_class_ref): Initialize the returned + class. For PR gcj/260. + +2000-06-21 Alexandre Petit-Bianco + + * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'. + +2000-06-20 Alexandre Petit-Bianco + + * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for + Java specific checks. + * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage + screened by DECL_P. + * java-tree.def (CASE_EXPR): Marked 'e'. + (DEFAULT_EXPR): Likewise. + * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage + screened by DECL_P. + * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for + Java specific checks. + (generate_bytecode_insns): Test try_block for BLOCK before using + BLOCK_EXPR_BODY. + * parse.y (build_wfl_wrap): Added `location' argument. Set + EXPR_WFL_LINECOL accordingly. + (dim_expr:): Wrap constants with WFLs. + (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC. + (resolve_package): Check for `stmt' not being a BLOCK before + building a debuggable statement with it. + (make_qualified_primary): Added extra parameter to build_wfl_wrap + invocation. + (resolve_field_access): Make sure `decl' is a DECL before treating + it as such. + (maybe_build_primttype_type_ref): Make sure `wfl''s node is an + IDENTIFIER_NODE before treating it as such. + (patch_new_array_init): Make sure `elt' is a TREE_LIST before + treating it as such. + (find_applicable_accessible_methods_list): CLASS_INTERFACE macro + to be applied only on non array types. + +2000-06-16 Per Bothner + + * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN): Don't + define in terms of DECL_RESULT, as that fails when --enable-checking. + +2000-06-15 Kaveh R. Ghazi + + * jcf-write.c (CHECK_PUT): Add static prototype. Make pointer + types the same in comparison. + (CHECK_OP): Add static prototype. + +2000-06-13 Jakub Jelinek + + * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN. + * parse.y (java_complete_class): Set DECL_USER_ALIGN. + * parse.c: Rebuilt. + +2000-06-11 Kaveh R. Ghazi + + * decl.c (create_primitive_vtable): Prototype. + + * jcf-write.c (generate_bytecode_insns): Initialize variable + `saved_context'. + + * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED. + +2000-06-09 Bryce McKinlay + + * parse.y (find_applicable_accessible_methods_list): Use a hashtable + to track searched classes, and do not search the same class more than + once. Call find_applicable_accessible_methods_list on immediate + superclass, instead of search_applicable_method_list on all ancestors. + Fix for PR gcj/238. + +2000-06-09 Bryce McKinlay + + * parse.y (register_fields): Permit static fields in inner classes + if they are final. Fix for PR gcj/255. + +2000-06-06 Alexandre Petit-Bianco + + * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries. + * parse.y (find_in_imports): Returned type changed to void, + leading comment fixed. + (register_package): New function. + (qualify_and_find): Likewise. + (package_declaration:): Use `register_package'. + (single_type_import_declaration:): Removed local variable + `node'. Added missing `;' for consistency. + (type_import_on_demand_declaration:): Use `chainon' to link new + entries. + (lookup_field_wrapper): Lookup local variables defined in outer + contexts first. + (java_complete_class): Don't reverse the list of imported on demand. + (do_resolve_class): Reorganized. Removed local variable + `original_name'. Call `qualify_and_find' with the current package + name, invoke `find_in_imports_on_demand' right after. Call + `qualify_and_find' with the packages we've seen so far. Fixed + operations numbering in comments. + (java_expand_class): Don't reverse `package_list'. + (find_most_specific_methods_list): New local variables `abstract' + and `candidates'. Use them to pick the right method. + +2000-06-06 Tom Tromey + + * parse.y (check_modifiers_consistency): Don't subtract out + `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY. + +2000-06-04 Philipp Thomas + + * Makefile.in (INTLLIBS): New. + (LIBS): Add above. + (DEPLIBS): Ditto. + +2000-06-02 Alexandre Petit-Bianco + + * class.c (get_dispatch_table): Build the vtable dummy entry list + element with a null purpose. Fixed leading comment. + (build_dtable_decl): Build an accurate dtable type when appropriate + and use it. + +2000-06-02 Richard Henderson + + * lang.c (lang_get_alias_set): New. + +2000-05-31 Alexandre Petit-Bianco + + * parse.y (resolve_field_access): Complete the DECL_INITIAL tree + before using it as the accessed field. + +2000-05-31 Tom Tromey + + * java-tree.h (boolean_array_vtable, byte_array_vtable, + char_array_vtable, short_array_vtable, int_array_vtable, + long_array_vtable, float_array_vtable, double_array_vtable): + Declare. + * expr.c (get_primitive_array_vtable): New function. + (create_primitive_vtable): New function. + (java_lang_expand_expr): Enable code to statically generate + arrays. + * decl.c (init_decl_processing): Create primitive vtables. + (boolean_array_vtable, byte_array_vtable, char_array_vtable, + short_array_vtable, int_array_vtable, long_array_vtable, + float_array_vtable, double_array_vtable): Define. + +2000-05-26 Zack Weinberg + + * java/parse.y (find_applicable_accessible_methods_list): + Don't add an uninitialized value to the list. + +2000-05-25 Tom Tromey + + * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC + when trying to see if field's class should be initialized. Always + initialize field's declaring class, not qualified class. + For PR gcj/162. + + * parse.y (array_constructor_check_entry): Pass `wfl_value', not + `wfl_operator', to maybe_build_primttype_type_ref. + Fixes PR gcj/235. + +2000-05-23 Bryce McKinlay + + * parse.y (patch_method_invocation): Don't try to lookup methods + in primitive types. + +2000-05-02 Alexandre Petit-Bianco + + * parse.y (resolve_field_access): Call the appropriate + before accessing the length of a static array. Craft a decl for + the field while its time. Fixes PR gcj/129. + +2000-05-01 Alexandre Petit-Bianco + + * parse.y (resolve_package): Correctly set `*next' (was off by + one.) + (resolve_qualified_expression_name): Fixed comment. + +2000-04-27 Alexandre Petit-Bianco + + * jcf-parse.c (jcf_parse_source): Reset current_class and + current_function_decl to NULL before parsing a new file. + +2000-04-27 Alexandre Petit-Bianco + + * parse.y (block_end:): If the collected block doesn't feature a + statement, insert an empty statement. + +2000-04-17 Alexandre Petit-Bianco + + * parse.y (maybe_yank_clinit): New function. + (maybe_generate_pre_expand_clinit): Always link at the + end of the list of methods belonging to a class. + (java_complete_expand_method): Check whether is really + necessary and expand it accordingly. + +2000-04-17 Alexandre Petit-Bianco + + * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be + processed by the method's switch statement. + +2000-05-19 Tom Tromey + + * java-tree.h: Added init state enum. + * decl.c (emit_init_test_initialization): Initialize class + initialization check variable by looking at class' state. + +2000-05-19 Tom Tromey + + * java-tree.h (build_instanceof): Declare. + (build_get_class): Declare. + * parse.y (patch_binop): Use build_instanceof. + * expr.c (build_instanceof): New function. If class is final, + don't make a function call. + (expand_java_INSTANCEOF): Use it. + (build_get_class): New function. + +2000-05-18 Alexandre Oliva + + * jcf-write.c (generate_classfile): Scan the source_file for + slashes with the right pointer variable. + +2000-05-17 Andrew Cagney + + * lang.c (lang_decode_option): Update -Wunused flags by calling + set_Wunused. + * decl.c (poplevel): Replace warn_unused with warn_unused_label. + +2000-05-09 Zack Weinberg + + * check_init.c (check_init): Constify local char *. + * class.c (push_class): Constify local char *. + * java_tree.h: Update prototypes. + * jcf-io.c (open_class): Constify filename parameter and + return value. + (find_class): Remove redundant string copy. Cast return from + open_class. + * jcf-parse.c (read_class, parse_class_file, yyparse): + Constify local char *. + * jcf-write.c (generate_bytecode_insns, generate_classfile): + Constify local char *. + * jcf.h (JCF): Constify filename and classname. + (JCF_FINISH): Cast args to FREE to char * when appropriate. + * lang.c (init_parse): Constify parameter and return value. + * lex.c (java_get_line_col): Constify filename parameter. + * parse.h: Constify parser_ctxt.filename. Update prototypes. + * parse.y (java_parser_context_suspend, + issue_warning_error_from_context, safe_layout_class): Constify + local char *. + * parse.c: Regenerate. + +2000-05-08 Tom Tromey + + * expr.c (build_jni_stub): Cache the result of + _Jv_LookupJNIMethod. + +2000-05-05 Alexandre Petit-Bianco + + * decl.c (predef_filenames_size): Now 7. + (predef_filenames): New seventh entry. + +2000-05-04 Tom Tromey + + * boehm.c (mark_reference_fields): Don't mark RawData fields. + Keep track of when we've seen a reference field after a + non-reference field. + (get_boehm_type_descriptor): Handle case where we see + non-reference fields but no trailing reference field. + * decl.c (rawdata_ptr_type_node): Define. + (init_decl_processing): Initialize rawdata_ptr_type_node. + * java-tree.h (rawdata_ptr_type_node): Declare. + +2000-05-04 Kaveh R. Ghazi + + * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format + specifiers in calls to fprintf. + +2000-05-03 Andrew Haley + + * expr.c (build_java_jsr): Use emit_jump, not expand_goto. + + * javaop.h (WORD_TO_INT): New function. + (IMMEDIATE_s4): Use WORD_TO_INT. + * jcf.h (JPOOL_INT): Ditto. + + * gjavah.c (decode_signature_piece): Don't treat `$' as namespace + separator. + +2000-04-19 Tom Tromey + + * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE + on native function. + * jcf-parse.c (parse_class_file): Call build_jni_stub for native + JNI methods. + * expr.c (build_jni_stub): New function. + * lang-specs.h: -fjni and -femit-class-file are incompatible. + * parse.c: Rebuilt. + * parse.y (java_complete_expand_methods): Expand a native method + and call build_jni_stub if -fjni given. + * lang-options.h: Document -fjni. + * lang.c (flag_jni): New global. + (lang_f_options): Added `jni' entry. + * java-tree.h (soft_lookupjnimethod_node, + soft_getjnienvnewframe_node, soft_jnipopsystemframe_node): + Declare. + (flag_jni): Declare. + (build_jni_stub): Declare. + (struct lang_decl): Added `native' flag. + (METHOD_NATIVE): Redefined to use `native' field of lang specific + structure. + * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node, + soft_jnipopsystemframe_node): New globals. + (init_decl_processing): Set them. _Jv_InitClass only takes one + argument. + + * java-tree.def: Put into `C' mode. + +2000-04-27 Tom Tromey + + Fix for PR gcj/2: + * expr.c (expand_invoke): Generate check to see if object pointer + is null in nonvirtual invocation case. + * java-tree.h (soft_nullpointer_node): Declare. + * decl.c (soft_nullpointer_node): New global. + (init_decl_processing): Initialize soft_nullpointer_node. + * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final' + or `private' methods. + (patch_invoke): Handle INVOKE_NONVIRTUAL case. + +2000-04-26 Alexandre Petit-Bianco + + * decl.c (complete_start_java_method): Don't call _Jv_InitClass + from + +2000-04-26 Tom Tromey + + * zextract.c (find_zip_file_start): New function. + (read_zip_archive): Use it. + +2000-04-25 Alexandre Petit-Bianco + + * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS. + +2000-04-24 Alexandre Petit-Bianco + + * class.c (common_enclosing_context_p): New function. + * java-tree.h (common_enclosing_context_p): Added prototype. + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow + classes sharing an outer context with the current instance. + * parse.y (build_access_to_thisn): Fixed leading comment. + (verify_constructor_super): New local `supper_inner'. Skip + enclosing context argument in the case of inner class constructors. + (patch_method_invocation): Insert proper context as second + parameter to pure inner class constructor super invocations. + +2000-04-24 Alexandre Petit-Bianco + + * parse.y (end_class_declaration): Reset the interface number + counter. + +2000-04-24 Alexandre Petit-Bianco + + * parse.y (source_start_java_method): Deleted unnecessary code. + (patch_method_invocation): Fixed comment. + +2000-04-24 Robert Lipe + + * parse.h (_jdep): Member `kind' now ENUM_BITFIELD. + +2000-04-23 Tom Tromey + + * boehm.c (mark_reference_fields): Use int_byte_position. + +2000-04-22 Tom Tromey + + * boehm.c (mark_reference_fields): Only call byte_position on + non-static fields. + +2000-04-22 Tom Tromey + + * boehm.c (mark_reference_fields): Added `last_view_index' + argument. Use DECL_FIELD_OFFSET to determine field's offset. + +2000-04-20 Mo DeJong + + * parse.h (INTERFACE_INNER_MODIFIERS): New macro. + * parse.y (check_class_interface_creation): Fixed comments. Select + permitted modifiers for (inner) interfaces. Changed error message + to report rejected modifiers used with local classes. + +2000-04-20 Alexandre Petit-Bianco + + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes + of directly inherited type considered in scope. + * parse.y (do_resolve_class): Search inherited classes for inner + classes. + +2000-04-20 Tom Tromey + + * parse.y (not_accessible_p): Use member's class, not current + class, when doing inheritance check for protected reference. + Fixes PR gcj/124. + +2000-04-20 Jason Schroeder + + * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction. + +2000-04-19 Alexandre Petit-Bianco + + * parse.y (lookup_field_wrapper): Search for final local aliases. + (resolve_expression_name): Let lookup_field_wrapper search for + final local aliases. Force the value of `name' if one is found. + (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have + an expression name. Fixed comments. + +2000-04-19 Alexandre Petit-Bianco + + * parse.y (yyerror): `msg' can be null, don't use it in that case. + +2000-04-19 Tom Tromey + + * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop. + +2000-04-18 Alexandre Petit-Bianco + + * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'. + +2000-04-18 Tom Tromey + + PR gcj/211: + * gjavah.c (utf8_cmp): Changed return value. + (cxx_keyword_subst): Handle all C++ keywords. Allocate new return + result. + (cxx_keywords): New global. + (get_field_name): Handle new result of cxx_keyword_subst. + (print_method_info): Likewise. + +2000-04-17 Bryce McKinlay + + * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names + with a newline, for CNI. + (print_stub_or_jni): Print a space or newline before method name for + CNI as well as JNI. + (print_cxx_classname): Don't write leading "::" in CNI stub method. + (process_file): Include gcj/cni.h if generating CNI stubs. + +2000-04-16 Tom Tromey + + * gjavah.c (decompile_method): Use print_field_name. + Fixes PR gcj/205. + +2000-04-14 Alexandre Petit-Bianco + + * parse.y (java_expand_classes): Reverse the package list once. + (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string + reduction. + (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of + the `==' and `!=' operators. + +2000-04-05 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): At invocation time, + always relate an interface method to the type of its selector. + +2000-04-05 Tom Tromey + + Fix for PR gcj/2: + * expr.c (expand_invoke): Generate check to see if object pointer + is null in nonvirtual invocation case. + * java-tree.h (soft_nullpointer_node): Declare. + * decl.c (soft_nullpointer_node): New global. + (init_decl_processing): Initialize soft_nullpointer_node. + * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final' + or `private' methods. + (patch_invoke): Handle INVOKE_NONVIRTUAL case. + +2000-04-05 Tom Tromey + + Fix for PR gcj/140: + * parse.y (check_final_assignment): Recognize assignments to the + `length' field of an array when generating class files. + +2000-04-05 Alexandre Petit-Bianco + + * class.c (decl_hash): Prototype removed. + (decl_compare): Likewise. + +2000-04-05 Tom Tromey + + * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter. + * parse.y (check_modifiers_consistency): Check for final/volatile + clash. Fixes PR gcj/164. + +2000-04-05 Alexandre Petit-Bianco + + * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash', + made global. + (java_hash_compare_tree_node): Renamed from `decl_compare, made + global. + (add_method_1): Use `java_hash_hash_tree_node' and + `java_hash_compare_tree_node'. + * java-tree.h: (java_hash_hash_tree_node): Prototyped. + (java_hash_compare_tree_node): Likewise. + * parse.y (find_applicable_accessible_methods_list): Create, + delete and use a hash table to remember already searched interfaces. + +2000-04-03 Matt Welsh + + * jcf-depend.c (add_entry): Fixed bug where list was always replaced + with latest entry. + +2000-04-04 Kaveh R. Ghazi + + * boehm.c (mark_reference_fields, set_bit): Prototype. + (set_bit): Un-ANSI-fy definition. + + * class.c (init_test_hash_newfunc, decl_hash, decl_compare): + Prototype. + + * decl.c (emit_init_test_initialization): Likewise. + + * gjavah.c (jni_print_char): Likewise. + + * parse.y (create_new_parser_context): Likewise. + +2000-03-30 Alexandre Petit-Bianco + + * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000 + patch missing hunk. Fixed indentation. + +2000-03-30 Tom Tromey + + * gjavah.c (D_NAN_MASK): Only define as word-reversed when + HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree. + +2000-03-28 Alexandre Petit-Bianco + + * parse-scan.y (pop_class_context): Reset `inner_qualifier_length' + when negative *before* using it as an array index. + * ChangeLog: Fixed typo. + +2000-03-28 Alexandre Petit-Bianco + + * parse-scan.y (pop_class_context): Reset `inner_qualifier_length' + to 0 when it reaches -1. + +2000-03-27 Alexandre Petit-Bianco + + * jcf-parse.c (get_constant): Properly cast `num' during the + invocation of `add_double'. + * jcf-write.c (push_long_const): Properly cast `lo' before + comparing it to short bounds. + * parse-scan.y (interface_declaration:): Rule re-arrange so that + `interface_body:' is reduced after the current interface is + pushed. + +2000-03-26 Tom Tromey + + * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each + Java-specific `-f' option. + +2000-03-26 Richard Kenner + + * decl.c (init_decl_processing): Only call initialize_sizetypes once. + Adjust order of making types. + Make bitsize_*_node values. + +2000-03-25 Richard Kenner + + * class.c (make_field_value): Use byte_position. + * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position. + (java_array_data_offset): Likewise. + * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to + bzero call. + +2000-03-22 Alexandre Petit-Bianco + + * parse.y (check_abstract_method_definitions): New local + `end_type_reached'. Make sure we also consider `end_type'. + (java_check_abstract_method_definitions): Make sure we eventually + consider `java.lang.Object'. + (maybe_use_access_method): Don't use access method if not in the + context of a pure inner class or if the method's context is right. + (find_applicable_accessible_methods_list): New static flag + `object_done'. Don't search abstract classes as interfaces. Fixed + indentation. Fixed the `java.lang.Object' only search. Search + class interface(s) first, then fully search enclosing contexts. + (find_most_specific_methods_list): Pick the closest candidate when + they're all abstract. + +2000-03-20 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR: + properly initialize `finished_label'. Don't emit gotos for empty + try statements. + +2000-03-19 Martin v. Löwis + + * except.c (emit_handlers): Clear catch_clauses_last. + +2000-03-17 Alexandre Petit-Bianco + + * parse.y (check_method_types_complete): New function. + (create_class): Reset anonymous class counter only when seeing an + non inner classe. + (java_complete_class): JDEP_METHOD: Don't recompute signature + if incomplete. + +2000-03-17 Alexandre Petit-Bianco + + * class.c (build_static_ref): Fixed indentation in comment. + * java-tree.def (TRY_EXPR): Fixed typo in name. + (CLASS_LITERAL): Likewise. + * java-tree.h: (TYPE_DOT_CLASS): New macro. + (struct lang_type): New field `dot_class'. + * jcf-write.c (generate_bytecode_insns): Fixed error message. + (generate_classfile): Method `class$' is synthetic. + * parse.y (build_do_class_method): New function. + (build_dot_class_method_invocation): Likewise. + (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary. + (resolve_qualified_expression_name): Handle CLASS_LITERAL. + (qualify_ambiguous_name): Likewise. + (patch_incomplete_class_ref): Invoke synthetic method if necessary. + (build_try_statement): Fixed leading comment. + +2000-03-17 Richard Kenner + + * class.c (make_field_value): Properly handle sizes. + (get_dispatch_vector): Use tree_low_cst and host_integerp. + (layout_class_method): Count using trees. + * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node. + * expr.c (java_array_data_offset): Use int_bit_position. + (build_newarray, build_anewarray): Use host_integerp and tree_low_cst. + (build_invokevirtual): Use tree_low_cst and do computations with trees. + +2000-03-16 Tom Tromey + + * lang.c (flag_hash_synchronization): New global. + (lang_f_options): Added `hash-synchronization'. + * lang-options.h: Mention -fhash-synchronization. + * java-tree.h (flag_hash_synchronization): Declare. + * expr.c (java_lang_expand_expr): Only push `sync_info' value when + hash table synchronization is disabled. + * decl.c (init_decl_processing): Only push `sync_info' value when + hash table synchronization is disabled. + * class.c (make_class_data): Only push `sync_info' field when hash + table synchronization is disabled. Removed dead code. + +2000-03-16 Tom Tromey + + * lang.c (lang_decode_option): Enable -Wunused when -Wall given. + +2000-03-15 Alexandre Petit-Bianco + + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous + classes. + * parse.y (patch_method_invocation): Handle anonymous classes + creation in static context. + +2000-03-15 Alexandre Petit-Bianco + + * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro. + * parse.y (resolve_qualified_expression_name): Use it. + (patch_method_invocation): Likewise. + +2000-03-15 Alexandre Petit-Bianco + + * parse.y (register_incomplete_type): JDEP_ENCLOSING set + depending on the type of dependency which dictates what the + current class is. + (unresolved_type_p): Resolved types limited to the current class. + +2000-03-15 Tom Tromey + + * decl.c (init_decl_processing): Set type of `sync_info' to be + pointer to Object. + + * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'. + Correctly compute bit number for current slot. Zero `high' and + `low' in DS_LENGTH case. Don't skip inherited fields. Use + mark_reference_fields. + (mark_reference_fields): New function. + +2000-03-14 Alexandre Petit-Bianco + + * parse.y (register_incomplete_type): Fixed initialization of + JDEP_ENCLOSING. + +2000-02-28 Alexandre Petit-Bianco + + * parse-scan.y (inner_qualifier, inner_qualifier_length): New + static globals. + (push_class_context, pop_class_context): New function. + (class_body:): Call pop_class_context. + (interface_body:): Likewise. + (INNER_QUALIFIER): New macro. + (report_class_declaration): Changed output format and use + INNER_QUALIFIER. Call push_class_context. + +2000-02-14 Andrew Haley + + * check-init.c (check_init): Add new cases for unary and binary + tree nodes. + +2000-03-13 Alexandre Petit-Bianco + + * parse.y (resolve_package): Set `next' once a type name has been + progressively discovered. + (resolve_qualified_expression_name): Propagate resolution only if + there are remaining qualifiers. Take into account `q' might have + been cleared after re-qualification. + * parse.y (patch_method_invocation): New local `resolved'. + Section dealing with qualified expression rewritten to use + resolve_field_access. + +2000-03-13 Alexandre Petit-Bianco + + * parse.h (PUSH_CPC): Fixed indentation. + (DEBUG_CPC): New macro. + (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT, + SET_CPC_INSTANCE_INITIALIZER_STMT): New macros. + * parse.y (class_body_declaration:): Use + SET_CPC_INSTANCE_INITIALIZER_STMT. + (method_declaration:): Check for null current_function_decl. + (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT. + (java_parser_context_pop_initialized_field): Better handling of + empty lists. + (maybe_make_nested_class_name): Mark nested class name as + qualified when necessary. + (end_class_declaration): Don't call java_parse_context_resume when + one or more error occurred. + (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT. + (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and + SET_CPC_INITIALIZER_STMT. + (method_header): Check for inner classes declaring static methods. + (resolve_qualified_expression_name): Handle situation where `this' + is implied. + +2000-03-13 Hans Boehm + + * typeck.c (build_prim_array_type): Correctly set the high word too. + +2000-03-09 Alexandre Petit-Bianco + + * parse.y (java_complete_expand_methods): Leave out of + ordinary methods. + (maybe_generate_pre_expand_clinit): Put at the end of the + list of methods for interfaces. + +2000-03-07 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Properly handle expressions + using `null'. + +2000-03-07 Alexandre Petit-Bianco + + * parse.y (check_final_assignment): Extended to process + COMPOUND_EXPR. + (patch_assignment): Have check_final_assignment called only once. + +2000-03-07 Alexandre Petit-Bianco + + * java-tree.h (IS_INIT_CHECKED): New flag. + * check-init.c (check_init): Test and set IS_INIT_CHECKED. + * parse.y (patch_string): Call force_evaluation_order on the + completed string concatenation tree. + * expr.c (force_evaluation_order): Call force_evaluation_order on + function's arguments too. + +2000-03-06 Richard Kenner + + * decl.c (emit_init_test_initialization): Mark KEY as unused. + * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT. + (build_anewarray): Likewise. + * parse.y (patch_newarray): Likewise. + * parse.c: Regenerated. + +2000-03-06 Bryce McKinlay + + * decl.c (init_decl_processing): Added new class fields `depth', + `ancestors', and `idt' to class_type_node. Use + _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node. + * class.c (make_class_data): Push initial values for new fields. + * java-tree.h: Updated prototype for `build_invokeinterface'. + * expr.c (build_invokeinterface): Changed parameters to accept + `method' tree. Calculate index of `method' in its declaring + interface. Build call to _Jv_LookupInterfaceMethodIdx. + (expand_invoke): Call `build_invokeinterface' with new parameters. + * parse.y (patch_invoke): Call `build_invokeinterface' with new + parameters. + +2000-03-06 Bryce McKinlay + + * typeck.c (lookup_do): Search superinterfaces first + when looking up an interface method. From Godmar Back + + +2000-03-06 Tom Tromey + + * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c. + +2000-03-02 Alexandre Petit-Bianco + + * java-tree.h (lookup_argument_method2): Declared. + (safe_layout_class): Prototype moved from parse.h. + * parse.h (safe_layout_class): Prototype moved to java-tree.h. + * parse.y (java_check_regular_methods): Local `super_class' gone. + Call lookup_argument_method2 instead of lookup_argument_method. + Perform modifier match for methods found declared in implemented + interfaces. Fixed indentation problem. Overriding/hiding error + report to take place only for methods found in classes. + * typeck.c (lookup_argument_method): Changed leading + comment. Re-written by calling lookup_do. + (lookup_argument_method2): New function. + (lookup_java_method): Re-written by calling lookup_do. + (lookup_do): New function. + +2000-03-02 Alexandre Petit-Bianco + + * check-init.c (check_init): Removed dead code. Handle (blank) + final variables. + * parse.y (declare_local_variables): New local `final_p', set it + and use it to initialize LOCAL_FINAL. + (check_final_assignment): Only check FIELD_DECLs. + +2000-02-17 Tom Tromey + + * Makefile.in (JAVA_OBJS): Added boehm.o. + (boehm.o): New target. + * Make-lang.in (JAVA_SRCS): Added boehm.c. + * java-tree.h (flag_use_boehm_gc): Declare. + (get_boehm_type_descriptor): Declare. + * lang.c (lang_f_options): Added `use-boehm-gc'. + (flag_use_boehm_gc): New global. + * lang-options.h: Added -fuse-boehm-gc. + * boehm.c: New file. + * class.c (get_dispatch_table): If class uses a Boehm type + descriptor, put it in the vtable. + (make_class_data): Removed dead code. + +2000-03-03 Per Bothner + + * decl.c (init_decl_processing): Initialize sizetype properly. + +2000-03-01 Alexandre Petit-Bianco + + * java-tree.h (LOCAL_CLASS_P): New flag usage and macro. + (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros. + * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. + * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise. + (jcf_parse): New local `current'. Load innerclasses seen in outer + context being processed. + * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. + * jcf-write.c (append_innerclasses_attribute): New function. + (append_innerclasses_attribute_entry): Likewise. + (get_access_flags): Handle static classes. Set anonymous and local + classes to be private. + (generate_classfile): Attribute count adjusted. Call + append_innerclasses_attribute. + * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use + PURE_INNER_CLASS_TYPE_P. + * parse.y (parser_qualified_classname): New parameter `is_static', + produce non qualified name accordingly. + (block_statement:): Set LOCAL_CLASS_P when declaring local class. + (create_interface): Added argument to parser_qualified_classname. + (create_class): Added argument to parser_qualified_classname. Setup + alias for top level classes. Use PURE_INNER_CLASS_DECP_P. + (add_inner_class_fields): Fixed indentation. + (method_declarator): Use PURE_INNER_CLASS_DECP_P. + (method_declarator): Fixed typo in comment. + (craft_constructor): Use PURE_INNER_CLASS_DECP_P. + (build_current_thisn): Likewise. + (patch_method_invocation): Likewise. + +2000-03-01 Martin von Löwis + + * decl.c (current_function_decl): Move to toplev.c. + +2000-02-28 Richard Kenner + + * java-tree.h (LABEL_PC): Relect name changes in ../tree.h. + (DECL_BIT_INDEX): Use underlying representation. + * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise. + +2000-02-27 Richard Kenner + + * expr.c (build_java_ret): Pass proper type to size_binop. + +2000-02-25 Anthony Green + + * expr.c (build_class_init): Mark the decl to be ignored by + check_init. + * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c + * check-init.c: Move DECL_BIT_INDEX to java-tree.h + * class.c (init_test_hash_newfunc): New function. + (decl_hash): New function. + (decl_compare): New function. + * decl.c (emit_init_test_initialization): New function. + (complete_start_java_method): Traverse the init test hashtable, + calling emit_init_test_initialization. + (always_initialize_class_p): Define. + * expr.c (build_class_init): Use initialization tests when + emitting class initialization code. + (always_initialize_class_p): Declare. + * jcf-parse.c (parse_class_file): Set always_initialize_class_p to + 1. + * java-tree.h: Include hash.h. + (DECL_FUNCTION_INIT_TEST_TABLE): Define. + (struct lang_decl): Add init_test_table field. + (init_test_hash_entry): Define. + +2000-02-25 Alexandre Petit-Bianco + + * gjavah.c (main): Avoid using `argi' to report unimplemented + options. + +2000-02-25 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR: + initialize locals to avoid warnings. Local `exception_type' moved + into if statement. + +2000-02-25 Alexandre Petit-Bianco + + * parse.y (resolve_expression_name): Use `orig' as a second + argument to resolve_field_access. + (resolve_field_access): Removed unnecessary code when dealing with + static fields. + +2000-02-23 Alexandre Petit-Bianco + + * class.c (push_super_field): Don't push the field twice. + * jcf-parse.c (parse_source_file): Call java_reorder_fields. + * parse.h (java_reorder_fields): Prototyped. + * parse.y (java_reorder_fields): New function. + (java_layout_class): Simplified not to worry about re-ordering. + +2000-02-23 Tom Tromey + + * gjavah.c (print_name): In JNI case, correctly quote string. + (print_method_info): Don't handle overrides in JNI mode. + +2000-02-22 Alexandre Petit-Bianco + + * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned + value type set to `boolean_type_node'. + +2000-01-18 Joerg Brunsmann + + * jcf-dump.c (main): Test for correct condition after + output file creation. + +2000-02-19 Anthony Green + + * jcf-depend.c (add_entry): Fix test for first list entry. + +2000-02-19 Richard Kenner + + * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT. + * constants.c (build_constants_constructor): Likewise. + +2000-02-19 Anthony Green + + * jcf-depend.c (add_entry): Add entries to the end of the list. + +1999-11-03 Pekka Nikander + + * decl.c (INT_TYPE_SIZE): Define if necessary. + (expand_java_return): Handle the case of a native integer smaller + than a JVM integer. + +2000-02-18 Martin von Löwis + + * gjavah.c (help): Use GCCBUGURL. + * jv-scan.c (help): Likewise. + * jcf-dump.c (help): Likewise. + +2000-02-17 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): Don't generate empty + `finally' clauses. + +2000-02-17 Alexandre Petit-Bianco + + * jcf-parse.c (load_class): Call `fatal' if no file containing + the target class are found. + +2000-02-16 Zack Weinberg + + * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on + lex.c, lex.h, and PARSE_H to... + (parse.o, parse-scan.o): ...here, respectively. + + * lex.c: Split out code that may trigger SIGFPE from yylex() + to its own function. + * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value. + +2000-02-16 Kaveh R. Ghazi + + * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h. + +2000-02-15 Alexandre Petit-Bianco + + * parse.y (outer_field_access_p): Stop in time when outer contexts + are exhausted. + (resolve_qualified_expression_name): Properly qualify *everything* + after a package.type to be resoled as expression names. + (find_applicable_accessible_methods_list): Save/restore `class' to + isolate it from a possible outer context search. + +2000-02-15 Tom Tromey + + * gjavah.c (jni_print_char): New function. + (print_full_cxx_name): Use it. + (decode_signature_piece): Likewise. + (print_cxx_classname): Likewise. + +2000-02-15 Kaveh R. Ghazi + + * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with + version.o. + (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h. + + * gjavah.c: Include version.h. + + * jcf-dump.c: Likewise. + + * jv-scan.c: Likewise. + +2000-02-12 Alexandre Petit-Bianco + + * parse.y (outer_field_access_fix): First parameter now a tree + node. Check for assignment to final. First argument to + build_outer_field_access_fix modified to accommodate prototype. + (build_outer_field_access): Don't check for assignment to final + here. + (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node' + possibly returned by outer_field_access_fix. Changed + outer_field_access_fix's first argument. + (check_final_assignment): $finit$'s context is OK. + (patch_unaryop): Use node instead of its line/column value when + calling outer_field_access_fix. + +2000-02-11 Alexandre Petit-Bianco + + * parse.y (interface_declaration:): No longer tagged + . Re-installed default action. + (class_member_declaration:): Handle inner interfaces. + (interface_member_declaration): Handle inner interfaces and + classes. + (create_interface): Push error if one seen. Suspend parsing + context when processing an inner interface. + (register_fields): Inner class static field limitations not to + apply to inner interfaces. + +2000-02-10 Alexandre Petit-Bianco + + * jcf-parse.c (load_class): Update `java_error_count' when a + class' file can't be found. + (parse.y): Avoid (byte)code generation when errors seen. + +2000-02-10 Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal' + decodes a valid node. + (patch_binop): Handle TRUNC_DIV_EXPR. + +2000-02-10 Alexandre Petit-Bianco + + * parse.y (resolve_package): New local `acc'. Try to progressively + build and guess a package and type name. + +2000-02-10 Alexandre Petit-Bianco + + * parse.y (find_applicable_accessible_methods_list): Load and + layout the search class if necessary. + (java_complete_tree): Keep to original type of the folded initial + value. + +2000-02-09 Alexandre Petit-Bianco + + * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT. + Generate error message if circularity is detected. New static + local `list'. + * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro. * + * jcf-write.c (generate_bytecode_insns): Very simply handle + SAVE_EXPR. + * parse.y (java_check_circular_reference): Use + `cyclic_inheritance_report' during report, if necessary. + (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid + walking NEW_ARRAY_INIT twice. + +2000-02-09 Tom Tromey + + * parse.y (check_class_interface_creation): Allow inner classes to + be `private' or `protected', check modifiers' consistency. Prevent + block local classes from bearing any modifiers. + +2000-02-10 Kaveh R. Ghazi + + * except.c (check_start_handlers): Re-add prototype lost in last + patch. + (maybe_start_try): Remove excess argument to `check_start_handlers'. + +2000-02-09 Andrew Haley + + * decl.c (clear_binding_level): Remove excess initializer. + (maybe_poplevels): Remove unused variable. + (force_poplevels): Ditto. + (struct binding_level): Add comment. + +2000-02-07 Alexandre Petit-Bianco + + * jcf-write.c (generate_classfile): Don't consider + pre-initialization with reference value (use instead.) + * parse.y (java_fix_constructors): No generated constructor for + interfaces. + (build_outer_field_access): Removed debug message. + (outer_field_expanded_access_p): Adapted to bytecode generation. + (build_outer_field_access_method): Use fix_method_argument_names. + (build_outer_method_access_method): Fixed indentation. Added + comment. Handle access method generation for static and also void + methods. + (build_access_to_thisn): Inserted debug message. + (maybe_build_thisn_access_method): Use fix_method_argument_names. + (resolve_qualified_expression_name): Fixed comment. + (not_accessible_p): Adapted to bytecode generation. Added comment. + (patch_method_invocation): Added comment. + (maybe_use_access_method): Fixed leading comment. Handle static + methods. + (java_complete_lhs): Don't shortcut handling of initialized upon + declaration String type static fields when generating bytecode. + (patch_unaryop): Handle outer field access when generating + bytecode. + +2000-02-03 Alexandre Petit-Bianco + + * java-tree.h (FIELD_THISN): New macro. + * jcf-write.c (append_synthetic_attribute): New function. + (generate_classfile): Set "Synthetic" attribute on this$, + val$ fields, access$ and $finit$ methods. Fixed indentation. + * parse.y (add_inner_class_fields): Set FIELD_THISN for created + this$ fields. + (build_outer_field_access): Turned on access functions usage and + generation when compiling to bytecode. + (maybe_use_access_method): Likewise. + +2000-01-25 Andrew Haley + + * java-except.h (struct eh_range): Add `expanded' field. + (maybe_start_try): Add end_pc arg. + (maybe_end_try): Ditto. + * java-tree.h (force_poplevels): new function. + * expr.c (expand_byte_code): Don't call maybe_start_try or + maybe_end_try. + * except.c (add_handler): Reset expanded. + (expand_start_java_handler): Set expanded. + (check_start_handlers): Don't expand a start handler that's + already been expanded. + (maybe_start_try): Add end_pc arg. Only expand a handler which + ends after end_pc. + (expand_end_java_handler): call force_poplevels. + (force_poplevels): new function. + * decl.c (binding_level): Add start_pc of binding level. + (maybe_pushlevels): Call maybe_start_try when pushing binding + levels. + (maybe_poplevels): Call maybe_end_try when popping binding levels. + (LARGEST_PC): Define. + (clear_binding_level): Use LARGEST_PC. + + * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define. + * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define. + (binding_depth, is_class_level, current_pc): new variables. + (struct binding_level): ditto. + (indent): new function. + (push_jvm_slot): add debugging info. + (maybe_pushlevels): ditto. + (maybe_poplevels): ditto. + (pushlevel): ditto. + (poplevel): ditto. + (start_java_method): ditto. + (give_name_to_locals): comment only. + * except.c (binding_depth, is_class_level, current_pc): + new variables. + (expand_start_java_handler): add debugging info. + (expand_end_java_handler): ditto. + +2000-02-05 Kaveh R. Ghazi + + * gjavah.c (overloaded_jni_method_exists_p): Add prototype. + (print_name_for_stub_or_jni, process_file): Constify a char*. + +2000-02-03 Tom Tromey + + * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input. + +2000-01-31 Scott Bambrough + + * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to + assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is + defined to be 1. + +2000-02-02 Alexandre Petit-Bianco + + * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code. + * java-tree.h (TYPE_II_STMT_LIST): New macro. + (struct lang_type): New field `ii_block'. + * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST, + CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST. + * parse.h (struct parser_ctxt): New field `instance_initializers'. + (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST, + CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT, + CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New + macros. + * parse.y (add_instance_initializer): New function. + (in_instance_initializer): New static global. + (class_body_declaration:): Link instance initializer block. + (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT. + (array_creation_expression:): Remove unused local. + (java_parser_context_push_initialized_field): Fixed leading + comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and + CPC_INSTANCE_INITIALIZER_LIST. + (java_parser_context_pop_initialized_field): Likewise. + (add_inner_class_fields): Use CPC_INITIALIZER_STMT. + (register_fields): Use CPC_STATIC_INITIALIZER_STMT and + CPC_INITIALIZER_STMT. + (fix_constructors): New local `class_type'. Use it. Call + add_instance_initializer. + (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR. + (patch_return): Forbid return in instance initializers. + (patch_throw_statement): Enforce exception handling in the context + of instance initializers. + +2000-02-03 Tom Tromey + + * Make-lang.in (java.mostlyclean): Remove executables in + `mostlyclean'. + +2000-01-31 Scott Bambrough + + * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when + HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1. + (java_float_finite): Convert to use union Word from javaop.h. + (java_double_finite): Convert to use union DWord from javaop.h. + +2000-02-02 Tom Tromey + + * gjavah.c (options): Added `jni' entry. + (help): Document -jni. + (flag_jni): New global. + (process_file): Handle JNI output. Don't print text from + -prepend, -add, etc, when generating stubs. Only remove `.class' + suffix if it actually exists. + (main): Create a `.c' file when run with `--jni --stubs'. Create + correct output file name with `--jni'. + (print_include): Mangle header name differently in JNI case. + (HANDLE_METHOD): In JNI mode, call print_method_info to generate + method list. + (print_method_info): Handle JNI case. Put signature info into + method name. Handle case when STREAM is NULL. + (print_name_for_stub_or_jni): New function. + (print_stub_or_jni): Renamed from `print_stub'. Handle JNI. + (print_cxx_classname): Handle JNI. + (print_full_cxx_name): Likewise. + (decode_signature_piece): Likewise. + (overloaded_jni_method_exists_p): New function. + (struct method_name): Added `signature' and `sig_length' fields. + (HANDLE_END_FIELD): Do nothing in JNI mode. + +2000-02-02 Tom Tromey + + * jv-scan.c: Include version.c, . + (LONG_OPT, OPT_HELP, OPT_VERSION): New macros. + (options): New array. + (usage): New function. + (version): New function. + (main): Use getopt_long to parse command line. + * jcf-dump.c: Include version.c, . + (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION, + OPT_JAVAP): New macros. + (options): New array. + (usage): Return `void'. Changed message. + (help): New function. + (version): New function. + (main): Use getopt_long_only to parse command line. + * gjavah.c: Include . + (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP, + OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M, + OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros. + (options): New array. + (java_no_argument): Removed. + (help): Updated with missing options. + (main): Use getopt_long_only to parse command line. + (usage): Changed message. + +2000-02-01 Alexandre Petit-Bianco + + * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code. + * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG, + ANONYMOUS_ARRAY_INITIALIZER): New access macros. + * parse.y (array_creation_expression:): Handle anonymous arrays. + (build_array_from_name): Don't set `ret_name' if null. + (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR. + (qualify_ambiguous_name): Likewise. + (java_complete_expand_class): Likewise. + +2000-02-01 Alexandre Petit-Bianco + + * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo. + * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro. + (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise. + (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P. + (AIPL_FUNCTION_FINIT_INVOCATION): Replaces + AIPL_FUNCTION_COMPLETED_INVOCATION. + (AIPL_FUNCTION_CTOR_INVOCATION): Replaces + AIPL_FUNCTION_INVOCATION_READY. + (AIPL_FUNCTION_DECLARATION): New enum entry. + * parse.y (reorder_static_initialized): New function. + (java_parser_context_pop_initialized_field): Use it. + (add_inner_class_fields): Use + MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment + augmented. Install marker after last alias initializer, if any. + (generate_finit): Fixed typo. Don't try to retain only the used + fields. + (method_header): Compute and set DECL_FUNCTION_NAP. + (method_declarator): Fixed comment. Insert alias initializer in + parameter list. + (build_alias_initializer_parameter_list): Fixed leading + comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value + replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. + (java_complete_expand_class): Code to retain only used aliases + removed. + (java_complete_expand_methods): New local `first_decl'. Generate + $finit$ first, then expand the constructors, regular methods and + . + (java_complete_expand_method): Don't report error on missing + return statement if previously detected bogus. + (fix_constructors): Don't patch constructor parameters list. + (patch_method_invocation): Use new AIPL enum values. Reverse + alias initializer list for anonymous classes. + +2000-01-30 Anthony Green + + * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to + determine how many stack slots to pop. + +2000-01-29 Alexandre Petit-Bianco + + * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better + error handling/recovery. + * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment. + +2000-01-28 Alexandre Petit-Bianco + + * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS, + FIELD_LOCAL_ALIAS_USED): New macros. + (DECL_FUNCTION_NAP): New macro. + (struct lang_decl): New field `nap'. + (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros. + (struct lang_type): New fields `finit_stmt_list' and + `clinit_stmt_list'. + (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST. + * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro. + (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS, + UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros. + (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION, + AIPL_FUNCTION_INVOCATION_READY): New enum fields. + (BUILD_THROW): Macro line separator re-indented. + * parse.y (end_class_declaration): New function. + (maybe_generate_pre_expand_clinit): New name for + java_pre_expand_clinit. Create off TYPE_CLINIT_STMT_LIST, + pre-expand static fields. + (maybe_generate_clinit): Function deleted. + (check_for_static_method_reference): Prototype's parameter list + indented. + (generate_finit): New name for maybe_generate_finit. Changed + leading comment. Function rewritten to use + TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list. + (build_alias_initializer_parameter_list): New function. + (java_parser_context_pop_initialized_field): Likewise. + (add_inner_class_fields): Likewise. + (type_declaration:): Call end_class_declaration. + (class_member_declaration:): Likewise. + (formal_parameter_list:): Fixed typos. + (formal_parameter:): Use ARG_FINAL_P to mark created tree list + element. Improved error handling. + (block_statement:): Call end_class_declaration. + (anonymous_class_creation:): Likewise. + (create_anonymous_class): Fixed comments. + (create_class): Call add_inner_class_fields. + (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P. + (method_header): Use MARK_FINAL_PARMS. + (finish_method_declaration): Use UNMARK_FINAL_PARMS. + (method_declarator): Propagate final argument flag. + (craft_constructor): New local `artificial'. Call + build_alias_initializer_parameter_list. Use + CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP. + (source_start_java_method): Mark parm decls with LOCAL_FINAL if + necessary. + (complete_expand_class): Get rid of unused outer context local + alias fields. + (java_complete_expand_methods): Fixed leading + comment. Generate/pre-expand first. Changed method + expansion order to regular, $finit$, constructors, . + (java_complete_expand_method): Set current_function_decl. + (fix_constructors): Fix constructor parameter list to account for + outer context local alias initializers. + (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS. + (resolve_expression_name): Lookup outer context local aliases. New + local `access', use it. + (patch_method_invocation): Patch inner class ctor invocation with + outer context local aliases initialization values. $finit$ + invocation patching now includes things generated with + build_alias_initializer_parameter_list. + (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS. + (build_super_invocation): Likewise. + (patch_assignment): Changed comment. + +2000-01-27 Andrew Haley + + * jcf-write.c (emit_goto): RESERVE 3 bytes for insn. + (emit_if): Ditto. + (emit_jsr): Ditto. + +2000-01-25 Kaveh R. Ghazi + + * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string + concatenation. + (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args. + + * parse.y (register_fields): Don't pass a format specifier to + OBSOLETE_MODIFIER_WARNING. + (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2 + instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format + specifier. + (check_modifiers): Change function into a macro. + (check_class_interface_creation): Pass a literal format string. + +2000-01-21 Kaveh R. Ghazi + + * buffer.h: PROTO -> PARAMS. + * check-init.c: Likewise. + * class.c: Likewise. + * constants.c: Likewise. + * convert.h: Likewise. + * decl.c: Likewise. + * except.c: Likewise. + * expr.c: Likewise. + * gjavah.c: Likewise. + * java-except.h: Likewise. + * java-tree.h: Likewise. + * jcf-depend.c: Likewise. + * jcf-dump.c: Likewise. + * jcf-parse.c: Likewise. + * jcf-path.c: Likewise. + * jcf-reader.c: Likewise. + * jcf-write.c: Likewise. + * jcf.h: Likewise. + * jv-scan.c: Likewise. + * jvgenmain.c: Likewise. + * jvspec.c: Likewise. + * lang.c: Likewise. + * lex.c: Likewise. + * lex.h: Likewise. + * parse-scan.y: Likewise. + * parse.h: Likewise. + * parse.y: Likewise. + * typeck.c: Likewise. + * verify.c: Likewise. + * xref.c: Likewise. + * xref.h: Likewise. + * zextract.c: Likewise. + * zipfile.h: Likewise. + +2000-01-18 Alexandre Petit-Bianco + + * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC. + (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF. + * constants.c (build_constant_data_ref): Check for cached + current_constant_pool_data_ref. Cache current_constant_pool_data_ref + in TYPE_CPOOL_DATE_REF. + * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF, + MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros. + (struct lang_type): New fields `cpool' and `cpool_data_ref'. + (LOCAL_FINAL): New macro. + * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing + constant pool -- don't try to reuse. + (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate + TYPE_LANG_SPECIFIC. + (find_in_current_zip): Use TYPE_JCF. + * parse.h (java_check_final): Prototype removed. + * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch. + (maybe_create_class_interface_decl, + check_class_interface_creation): Likewise. + (java_expand_finals): Function removed. + (class_declaration:): Reversed Jan 12, 2000 extra argument patch. + (block_statement:): Fixed comment. + (anonymous_class_creation:): Likewise. + (check_class_interface_creation): Reversed Jan 12, 2000 extra + argument patch. + (check_class_interface_creation): Loosened error report on (inner) + public class declarations. CPC_INNER_P replaces GET_CPC_LIST. + (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch. + (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra + argument patch. + (create_interface): Likewise. + (anonymous_class_counter): New static global. + (create_anonymous_class): Reversed Jan 12, 2000 extra argument + patch. Fixed comments. + (create_class): Reversed Jan 12, 2000 extra argument patch. Reset + anonymous_class_counter when declaring a toplevel class. + (craft_constructor): Fixed constructor name when handling + anonymous classes. Anonymous class constructors to feature hidden + this$ parameter. + (java_fix_constructors): Added comment. + (java_check_final): Function removed. + (java_complete_expand_methods): Fixed comment. Don't generate + class data, save its outgoing constant pool instead. + (verify_constructor_super): Skip anonymous class constructor + hidden this$ parameter. + (java_expand_classes): New local `saved_ctxp'. Removed call to + java_expand_finals and java_check_final. Expand anonymous class + constructors. Generate class data. + (build_super_invocation): Skip anonymous class hidden this$ + parameter. + * typeck.c (build_java_signature): Use TYPE_SIGNATURE and + MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC. + (set_java_signature): Likewise. + +2000-01-18 Joerg Brunsmann + + * gjavah.c: Delete ACC_VISIBILITY define. + * jcf.h: Add ACC_VISIBILITY define. + * parse.y: final: rule tagged . + (java_check_regular_methods): Use ACC_VISIBILITY define for + default package access check. + (local_variable_declaration_statement): Use final: rule. + +2000-01-17 Joerg Brunsmann + + * parse.y (format_parameter:): Use final: rule instead of modifiers:. + (final:): New rule. + +2000-01-17 Tom Tromey + + * gjavah.c (print_field_info): Allow non-static final fields. + +2000-01-14 Alexandre Petit-Bianco + + * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'. + * parse.y (patch_anonymous_class): New function. + (create_anonymous_class): Register incomplete type when the + class/interface to extends/implement isn't known yet. + (parser_check_super_interface): Simplify argument to CLASS_INTERFACE. + (verify_constructor_super): Tuned error message. + +2000-01-14 Alexandre Petit-Bianco + + * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P. + (ANONYMOUS_CLASS_P): New macro. + (TYPE_SIGNATURE, TYPE_JCF): New macros. + (INNER_CLASS_TYPE_P): Fixed typo in leading comment. + * parse.y (create_class): Added leading argument. + (maybe_create_class_interface_decl, + check_class_interface_creation): Likewise. + (craft_constructor): New function. + (verify_constructor_super): Added argument in prototype. + (class_declaration:): Inserted leading argument. + (for_begin:): Use FOR_LOOP_P. + (anonymous_class_creation): Create WFL of the anonymous class to + instantiate. Call build_new_invocation. Added comments. + (check_class_interface_creation): Handle parameter `anonymous' in + verbose mode class creation announce. + (link_nested_class_to_enclosing): Exclude anonymous classes. + (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on + anonymous class, even though they appear to have an enclosing + context. + (create_interface): Pass extra argument to + check_class_interface_creation. + (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1. + (create_class): Call check_class_interface_creation and + maybe_create_class_interface_decl with extra new argument. Don't + add private this$ to anonymous classes. + (method_declarator): Insert hidden this$ to anonymous class + constructors. + (java_fix_constructors): Deleted code creating default + constructor. Call craft_constructor instead. + (java_check_regular_methods): Set `saw_constructor' to 1 for + anonymous classes. + (fix_constructors): Pass extra argument to verify_constructor_super. + (verify_constructor_super): New local `sdecl', use it. Search for + matching constructor (possibly featuring arguments) in super + class. + (lookup_method_invoke): Craft constructor according to arguments + list when dealing with anonymous class constructors. + (build_super_invocation): Pass arguments to anonymous class super + constructors. + (search_loop): Use FOR_LOOP_P. + (labeled_block_contains_loop_p): Likewise. + +2000-01-12 Alexandre Petit-Bianco + + * class.c (set_super_info): Set CLASS_STATIC when appropriate. + (enclosing_context_p): New function. + (get_access_flags_from_decl): Handle CLASS_STATIC. + (maybe_layout_super_class): Extra first argument passed to + do_resolve_class. + (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and + ID_INIT_P. + * decl.c (access0_identifier_node): New global. + (init_decl_processing): access0_identifier_node initialized. + (pushdecl): Set DECL_CONTEXT only on non type decls. + * expr.c (lookup_field): Lookup inner class fields in enclosing + contexts. + (expand_invoke): Use ID_INIT_P. + (expand_java_field_op): Use DECL_CLINIT_P. + * java-tree.def (CLASS_LITERAL): New tree code. + * java-tree.h (DECL_FUNCTION_ACCESS_DECL, + DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros. + (struct lang_decl): New field `inner_access'. + (enclosing_context_p): Prototyped. + (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P, + ID_CLINIT_P): New macros. + (CLASS_STATIC): New macro. + (CLASS_ACCESS0_GENERATED_P): New macro. + (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P, + TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P, + INNER_CLASS_P): New macros. + (DECL_INNER_CLASS_LIST): New macro. + * jcf-parse.c (yyparse): Avoid the use of ANSI string + concatenation. + * jcf-write.c (generate_bytecode_insns): binop: Change the type of + the shift value to int. Fixed typo in comment. + * lex.c (inst_id, wpv_id): Initialize. + * mangle.c (unicode_mangling_length): Take `$' into account. + * parse.h (DRECOVER, RECOVER): Terminate properly. + (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro. + (typedef struct _jdep): New field `enclosing'. + (JDEP_ENCLOSING): New macro. + (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.) + (struct parser_ctxt): New fields `marker_beginning', `marked_end'. + (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE, + GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC, + GET_ENCLOSING_CPC_CONTEXT): New macros. + (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros. + (do_resolve_class): Added extra argument in prototype. + * parse.y (resolve_class): Added extra argument in prototype. + (maybe_create_class_interface_decl): Likewise. + (maybe_use_access_method, build_wfl_wrap): New functions. + (java_complete_expand_classes, java_complete_expand_class): + Likewise. + (java_parser_context_push_initialized_field, + java_parser_context_suspend, java_parser_context_resume): + Likewise. + (maybe_make_nested_class_name, make_nested_class_name, + set_nested_class_simple_name_value, + link_nested_class_to_enclosing, find_as_inner_class, + find_as_inner_class_do, check_inner_class_redefinition, + build_thisn_assign, build_current_thisn, build_access_to_thisn, + maybe_build_thisn_access_method, build_outer_field_access, + build_outer_field_access_methods, build_outer_field_access_expr, + build_outer_method_access_method, build_new_access_id, + build_outer_field_access_method, outer_field_access_p, + outer_field_expanded_access_p, outer_field_access_fix, + build_incomplete_class_ref, patch_incomplete_class_ref, + create_anonymous_class): Likewise. + (inst_id, wpv_id): New static global variables. + (synchronized:): New rule, tagged . + (type_declaration:): No longer tagged . Call POP_CPC in sub + rules. + (anonymous_class_creation:): New rule, tagged . + (NEW_TK): Tagged . + (type_literals, array_type_literal): New rules, tagged . + (class_declaration:): Removed action when reducing by class_body: + (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value + using GET_CPC in sub-rules. + (class_member_declaration): Handle inner classes. + (method_declaration): When reducing method_header:, reset + current_function_decl when appropriate. + (method_declarator:): Set the number of formal parameter to 0 for + method declared without arguments. + (constructor_declarator:): Likewise. + (static_initializer:): List of elements kept in a list. + (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct + use of the keyword `static' for type declarations. + (block_statement:): Handle inner class declarations. + (primary_no_new_array:): Use type_literals:. Fixed comment. Handle + type qualified `this'. + (class_instance_creation_expression): Use anonymous_class_creation: + to handle inner class instances creation. Handle qualified `new'. + (something_dot_new): Added appropriate actions. + (create_new_parser_context): New function. + (java_push_parser_context, java_parser_context_save_global, + java_parser_context_suspend): Use create_new_parser_context. + (check_modifiers): Changed leading comment. + (check_class_interface_creation): Handle interclasses. + (add_superinterfaces): Fixed comment. + (create_interface): Build qualified name from the raw_name instead + of its matching WFL. Push the initialized fields list. raw_name added + as an extra argument to maybe_create_class_interface_decl. + (create_class): Build qualified name from the raw_name instead of + its matching WFL. Removed assignment to current_parsed_class_un. + Call PUSH_ERROR before returning an error. Suspend the current + parser context when processing an inner class. Push the + initialized fields list. raw_name added as an extra argument to + maybe_create_class_interface_decl. Add the private this$ + field. + (duplicate_declaration_error_p): Use GET_CPC when calling find_field. + (register_fields): Get the class type from GET_CPC and handle + previous errors. Added code to handle the creation of static + fields in inner classes. Initialized fields initialization + statements kept in a list of lists. + (maybe_generate_finit): Initialized fields initialization + statements kept in a list of lists. Use GET_CPC. + (maybe_generate_clinit): Likewise. + (method_header): Use GET_CPC and GET_CPC_UN. + (parser_qualified_classname): Handle inner classes. + (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC. + (java_fix_constructors): Hide pointer to enclosing context + instance in constructor list when dealing with inner classes. + (jdep_resolve_class): Call resolve_class with extra first argument + JDEP_ENCLOSING. + (resolve_class): Add enclosing context as a first extra argument + to do_resolve_class. + (do_resolve_class): Call find_as_inner_class. Handle WFLs + properly. + (resolve_no_layout): Extra argument added to resolve_class + invocation. + (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P. + (java_get_real_method_name): Use GET_CPC_UN. + (check_abstract_method_definitions): Use DECL_CLINIT_P. + (java_check_abstract_methods): Handle static method declared in + inner classes by an error. + (java_check_regular_methods): Use DECL_CLINIT_P. + (source_start_java_method): Also set DECL_MAX_LOCALS. + (create_artificial_method): Call java_parser_context_save_global + and java_parser_context_restore_global instead of saving/restoring + the context by hand. + (expand_start_java_method): Improved verbose mode message. + (java_complete_expand_methods): Fixed leading comment. Use + DECL_CLINIT_P. + (fix_constructors): Added assignment to this$ if necessary. + (java_expand_classes): Call java_complete_expand_classes instead + of java_complete_expand_methods. + (make_qualified_primary): Simplified. + (merge_qualified_name): Optimized for missing left or right parts. + (resolve_expression_name): Handle access to outer class fields from + interclasses. + (resolve_qualified_expression_name): New macro + RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner + classes. Report error on non appropriate qualification of + `new'. Handle qualified `this'. + (not_accessible_p): Allow access to outer class private fields from + inner classes. + (patch_method_invocation): Handle method invocations through + access methods and inner class constructor invocations. + (find_applicable_accessible_methods_list): Search enclosing + contexts of an inner class. + (search_applicable_methods_list): Fixed typo. + (argument_types_convertible): Handle inner class constructors' + hidden outer context reference argument. + (qualify_ambiguous_name): Handle qualified `this'. + (java_complete_lhs): Handle use of field accessed through + artificial access methods in various cases of assignments. Handle + CLASS_LITERAL node. + (check_final_assignment): Use DECL_CLINIT_P. + (valid_ref_assignconv_cast_p): Handle the destination being an + enclosing context of the source. + (patch_unaryop): Handle use of field accessed through artificial + access methods. + (patch_return): Use DECL_CLINIT_P. + (patch_throw_statement): Use DECL_CLINIT_P. + (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P. + * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and + ID_INIT_P. + +2000-01-16 Anthony Green + + * parse.y (build_string_concatenation): Only use + StringBuffer(String) shortcut if String arg is constant. + +2000-01-12 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): binop: Change the type of + the shift value to int. Fixed typo in comment. + +2000-01-11 Mumit Khan + + * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros. + * jcf-write.c: Likewise. + * parse.y: Likewise. + * parse.c: Regenerate. + +2000-01-09 Anthony Green + + * jcf-write.c (generate_bytecode_insns): Emit invokeinterface + bytecodes in the correct order. + +2000-01-09 Kaveh R. Ghazi + + * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS). + +2000-01-06 Anthony Green + + * expr.c (java_lang_expand_expr): Switch to permanent obstack + before building constant array decl. + +2000-01-06 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_conditional): Fixed indentation in + method invocation and typo in conditional expression. + (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue + the appropriate NOTE_POP. + * parse.y (patch_binop): Shift value mask to feature the right + type. + +1999-12-30 Kaveh R. Ghazi + + * class.c (assume_compiled, assume_compiled_node): Add static + prototype. + (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup. + + * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch. + + * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN. + + * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier' + to `__modifier' to avoid stringifying it. + + * parse.y (verify_constructor_circularity): Don't call a variadic + function with a non-literal format string. + (java_check_abstract_methods): Move unreachable code inside + `continue' statement. + (lookup_method_invoke): Call xstrdup, not strdup. + + * expr.c (expand_java_field_op): Avoid the use of ANSI string + concatenation. + + * jcf-parse.c (yyparse): Likewise. + + * jv-scan.c (main): Likewise. + +1999-12-30 Kaveh R. Ghazi + + * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, + ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, + ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string + concatenation. + + * parse.y (synchronized, variable_redefinition_error, + check_class_interface_creation, create_interface, create_class, + method_header, finish_method_declaration, + check_modifiers_consistency, method_declarator, + complete_class_report_errors, check_abstract_method_definitions, + java_check_regular_methods, check_throws_clauses, + java_check_abstract_methods, read_import_dir, + check_pkg_class_access, declare_local_variables, fix_constructors, + cut_identifier_in_qualified, resolve_expression_name, + resolve_qualified_expression_name, patch_method_invocation, + java_complete_lhs, patch_assignment, try_builtin_assignconv, + patch_binop, patch_array_ref, patch_newarray, build_labeled_block, + patch_exit_expr, patch_exit_expr, patch_switch_statement, + patch_try_statement, patch_synchronized_statement, + patch_throw_statement, check_thrown_exceptions, + patch_conditional_expr): Likewise. + +1999-12-24 Alexandre Petit-Bianco + + * Makefile.in (LIBDEPS): Added gcc's errors.o + (../jcf-dump$(exeext):): Link with gcc's errors.o + (../gcjh$(exeext):): Likewise. + * expr.c (expand_java_NEW): Layout the entire target type instead of + laying out its methods only. + (lookup_field): Layout the class after having loaded it. + * java-tree.h (java_debug_context): Declared. + * jcf-io.c (toplev.h): Included. + (find_class): Removed assignment to jcf's outofsynch + field. Force source file to be read if newer than its matching + class file. Tweaked debug messages. + * jcf-parse.c (jcf_out_of_synch): Deleted. + (read_class): Call to jcf_out_of_synch removed. + * jcf.h (typedef struct JCF): Field `outofsynch' deleted. + (jcf_out_of_synch): Prototype deleted. + * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag', + `deprecated' and `class_err': integer turned into bit-fields. + New bit-fields `saved_data_ctx' and `saved_data'. Fixed comments. + * parse.y (package_list): New global. + (package_declaration:): Record newly parsed package name. + (extra_ctxp_pushed_p): Static global deleted. + (java_parser_context_save_global): Create buffer context for the + purpose of saving globals, if necessary. + (java_parser_context_restore_global): Pop context pushed for the + purpose of saving globals, if necessary. + (java_debug_context_do): New prototype and function. + (java_debug_context): Likewise. + (do_resolve_class): Use already parsed package names to qualify + and lookup class candidate. + (java_pre_expand_clinit): Removed unnecessary local variable. + +1999-12-17 Tom Tromey + + * gjavah.c (decode_signature_piece): Print "::" in JArray<>. This + fixes PR gcj/119. + (process_file): Use `\n\' at end of each line in string. + +1999-12-16 Alexandre Petit-Bianco + + * expr.c (expand_invoke): Layout the loaded class before + attempting to use it. + (expand_java_field_op): Allow final field assignments to take + place in $finit$. + * typeck.c (convert): Return error_mark_node if expr is null. + +1999-12-14 Alexandre Petit-Bianco + + * class.c (class_depth): Return -1 if the class doesn't load + properly. + * expr.c (can_widen_reference_to): Check for errors during depth + computation and return 0 accordingly. + * jcf-parse.c (parse_source_file): Call java_fix_constructors to + create default constructors and add an other error check. + * parse.h (java_fix_constructors): Prototyped. + * parse.y (java_pre_expand_clinit): Likewise. + (build_super_invocation): Re-prototyped to feature one argument. + (java_check_circular_reference): Directly use `current'. + (java_fix_constructors): New function. + (java_check_regular_methods): Don't create default constructors + here, but abort if none were found. + (java_complete_expand_methods): Pre-process calling + java_pre_expand_clinit. + (java_pre_expand_clinit): New function. + (fix_constructors): build_super_invocation invoked with the + current method declaration as an argument. + (build_super_invocation): Use the context of the processed method + decl argument instead of current_class. + * typeck.c (lookup_java_method): Take WFLs in method names into + account. + +1999-12-14 Per Bothner + + * class.c (make_class_data): flag_keep_inline_functions to keep + private methods in the method array. + +1999-12-15 Anthony Green + + * check-init.c (check_init): Take into account both types of + `throw's when checking for uninitialized variables. + +1999-12-10 Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): Force conversion of array + dimensions to int_type_node, that's what runtime's ABI expects. + +1999-12-10 Alexandre Petit-Bianco + + * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third + operand of a WFL, until the Java front-end gets fixed with regard + to Mark Mitchell's gcc/tree.h patch (1999-12-04.) + +1999-12-10 Andrew Haley + + * parse.h (BUILD_THROW): Add support for sjlj-exceptions. + decl.c (init_decl_processing): Add _Jv_Sjlj_Throw. + expr.c (build_java_athrow): Add support for sjlj-exceptions. + java-tree.h: Ditto. + jcf-write.c: Ditto. + +1999-12-08 Alexandre Petit-Bianco + + * expr.c (java_lang_expand_expr): Switch to permanent obstack + before calling expand_eh_region_start and expand_start_all_catch. + * except.c (expand_start_java_handler): Switch to permanent + obstack before calling expand_eh_region_start. + (expand_end_java_handler): Switch to permanent obstack before + calling expand_start_all_catch. + +1999-12-5 Anthony Green + + * decl.c (init_decl_processing): Mark throw_node as a noreturn + function with side effects. + (init_decl_processing): Mark all memory allocating DECLs with + DECL_IS_MALLOC. + +1999-12-01 Alexandre Petit-Bianco + + * except.c (expand_end_java_handler): Call + expand_resume_after_catch and end_catch_handler. + +1999-11-30 Anthony Green + + * verify.c (verify_jvm_instructions): Create new return label + chain if non existent (don't rely on the verified state of the jsr + target.) + +1999-11-30 Alexandre Petit-Bianco + + * jcf-write.c (generate_bytecode_insns): Fixed indentation for + COMPOUND_EXPR and FIX_TRUNC_EXPR cases. + + * parse.y (patch_assignment): Removed bogus final class test on + lhs when checking on whether to emit an ArrayStoreException runtime + check. + * expr.c (expand_java_arraystore): Likewise. + +1999-11-28 Anthony Green + + * decl.c (find_local_variable): Reuse single slot decls when + appropriate. + +1999-11-24 Alexandre Petit-Bianco + + * jcf-parse.c (saw_java_source): Global variable removed. + (read_class): Don't use `saw_java_source'. Added extra braces. + (yyparse): Code setting `saw_java_source' removed. + +1999-11-24 Mark Mitchell + + * except.c (emit_handlers): Zero catch_clauses after emitting them. + +1999-11-23 Alexandre Petit-Bianco + + * verify.c (merge_type_state): Non verified subroutines being + considered more than once to trigger passive type merge. + +1999-11-23 Alexandre Petit-Bianco + + * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE + in case of error. Error message tuned. + +1999-11-21 Anthony Green + + * constants.c (find_methodref_index): Unwrap method names before + inserting them in the constant pool. + + * jcf-parse.c (jcf_parse): Display `interface' when appropriate. + + * class.c (assume_compiled_node): New typedef. + (assume_compiled_tree): New static data. + (find_assume_compiled_node): New function. + (add_assume_compiled): New function. + (assume_compiled): New function. + * class.c (make_class_data): Use assume_compiled. + (is_compiled_class): Use assume_compiled. + + * java-tree.h (add_assume_compiled): Declare. + + * lang.c (lang_decode_option): Parse new options. + +1999-11-17 Alexandre Petit-Bianco + + * class.c (layout_class): Always convert TYPE_SIZE_UNIT to + int_type_node: that's what `_Jv_AllocObject' expects. + +1999-11-11 Alexandre Petit-Bianco + + * parse.y (lookup_method_invoke): Use lang_printable_name to + reliably build the type name during error report. Fixes PR gcj/97. + +1999-11-09 Tom Tromey + + * jcf-path.c: Include . + (jcf_path_init): Search for libjava.zip. Fixes PR gcj/84. + (DIR_UP): New macro. + +1999-11-09 Alexandre Petit-Bianco + + * parse.y (source_end_java_method): Resume permanent allocation, + reversing Apr 27 1998 patch. + (patch_string_cst): Pop obstacks after having pushed the permanent + ones. + +1999-11-05 Tom Tromey + + * class.c (finish_class): Emit inlined methods if any native + methods exist in the class. Fixes PR gcj/85. + +1999-11-04 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR. + (qualify_ambiguous_name): Likewise. + +1999-11-03 Godmar Back + + * typeck.c: (lookup_java_method): search all inherited + interfaces when looking up interface method. + +1999-11-01 Alexandre Petit-Bianco + + * parse.y (method_header:): Issue error message for rule `type + error'. + (synchronized:): Error report when not using synchronized. + +1999-11-01 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Prevent `this' from + being used before the superclass constructor has been called. + (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P + instead of `CALL_THIS_CONSTRUCTOR_P'. + +1999-10-30 Todd T. Fries + + * check-init.c: Fix typo in comment. + +1999-10-29 Alexandre Petit-Bianco + + * class.c (add_method_1): Set DECL_INLINE to 1 for private, static + and final method. + +1999-10-29 Alexandre Petit-Bianco + + * parse.y (expression_statement:): Call function to report + improper invocation of a constructor. + (parse_ctor_invocation_error): New function. + +1999-10-26 Mark Mitchell + + * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call + remember_end_note. + +1999-10-21 Tom Tromey + + * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set + in generated `main'. + +1999-10-21 Alexandre Petit-Bianco + + * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR. + (qualify_ambiguous_name): Likewise. + +1999-10-20 Alexandre Petit-Bianco + + * parse.y (java_complete_tree): fold_constant_for_init to work on + permanent_obstack. + (java_complete_lhs): Likewise. + (array_constructor_check_entry): Complete an initializer element + on permanent_obstack. + +1999-10-19 Tom Tromey + + * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file. + From Mike Moreton . + +1999-10-15 Greg McGary + + * java-tree.h (flag_bounds_check): Remove extern decl. + * lang.c (flag_bounds_check): Remove global variable. + (lang_f_options): Remove "bounds-check" entry. + (lang_init_options): Default flag_bounds_check to "on". + +1999-10-14 Tom Tromey + + * jvgenmain.c (usage): New function. + (main): Use it. Also, handle `-D' options. + * jvspec.c (lang_specific_driver): Recognize -D. + (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation. + + * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'. + +1999-10-14 Kaveh R. Ghazi + + * jcf-dump.c (print_constant, disassemble_method): Don't call a + variadic function with a non-literal format string. + + * parse-scan.y (report_main_declaration): Likewise. + + * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise. + + * parse.y (read_import_dir, patch_assignment, patch_binop, + patch_array_ref): Likewise. + + * typeck.c (build_java_array_type): Likewise. + + * verify.c (verify_jvm_instructions): Likewise. + +1999-10-12 Alexandre Petit-Bianco + + * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1. + +1999-10-07 Anthony Green + + * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases + where CHECK_PUT may fail for valid reasons. + + * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3, + UNSAFE_PUTN): New macros. + +1999-10-04 Tom Tromey + + * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as + well. Fixes Java PR gcj/59. + * parse-scan.y (yyerror): Report errors. + +1999-09-24 Glenn Chambers + + * decl.c (insert_block): Remove unconditional `abort'. + +1999-09-24 Bernd Schmidt + + * decl.c (builtin_function): No longer static. New arg CLASS. Arg + FUNCTION_CODE now of type int. All callers changed. + Set the builtin's DECL_BUILT_IN_CLASS. + +1999-09-23 Tom Tromey + + * jvspec.c (lang_specific_driver): Don't read spec file if + -fsyntax-only given. + +1999-09-22 Tom Tromey + + * lang-specs.h: Added `%(jc1)' to the jc1 spec. + + * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally. + (WORDS_TO_LONG): Likewise. + (WORDS_TO_DOUBLE): Likewise. + +1999-09-14 Alexandre Petit-Bianco + + * jcf-write.c (RELOCATION_VALUE_0): New macro. + (RELOCATION_VALUE_1): Likewise. + (emit_iinc, emit_reloc, push_constant1, push_constant2, + push_in_const, push_long_const): Prototyped. + (push_constant1): Argument `index' is of type HOST_WIDE_INT. + (push_constant2): Likewise. + (push_int_const): Cast find_constant1's integer arguments to `jword'. + (find_constant_wide): Cast find_constant2's integer arguments to + `jword'. + (find_constant_index): Cast find_constant2's and find_constant2's + integer arguments to `jword'. + (emit_pop): Argument `value' is of type HOST_WIDE_INT. + (emit_switch_reloc): Use RELOCATION_VALUE_0. + (emit_if): Use RELOCATION_VALUE_1. + (emit_goto): Likewise. + (emit_jsr): Likewise. + (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second + argument to push_long_const to HOST_WIDE_INT. + +1999-09-15 Andreas Schwab + + * Makefile.in (parse.o): Depend on $(JAVA_TREE_H). + +1999-09-20 Nick Clifton + + * lang.c (lang_decode_option): Extend comment. + +1999-09-16 Alexandre Petit-Bianco + + * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK + instead of fndecl. + +1999-09-16 Kaveh R. Ghazi + + * gjavah.c (get_field_name, print_method_info, print_include, + add_namelet): Use xmalloc, not malloc. + + * jcf-depend.c (add_entry): Likewise. Use xstrdup, not strdup. + (munge): Use xrealloc, not realloc, trust xrealloc to handle a + NULL pointer. + + * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup. + + * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise. + + * jcf-path.c (add_entry): Likewise. + + * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc. + + * jv-scan.c (xmalloc): Remove definition. + + * jvgenmain.c (xmalloc): Likewise. + + * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero. + + * lex.c (java_store_unicode): Use xrealloc, not realloc. + + * parse-scan.y: Use concat, not of xmalloc/assign/strcpy. Use + concat, not xmalloc/sprintf. + (java_push_parser_context): Use xcalloc, not xmalloc/bzero. + (xstrdup): Remove definition. + + * parse.y (duplicate_declaration_error_p, + constructor_circularity_msg, verify_constructor_circularity, + check_abstract_method_definitions, java_check_regular_methods, + java_check_abstract_methods, patch_method_invocation, + check_for_static_method_reference, patch_assignment, patch_binop, + patch_cast, array_constructor_check_entry, patch_return, + patch_conditional_expr): Use xstrdup, not strdup. + + * zextract.c (ALLOC): Use xmalloc, not malloc. + +1999-09-12 Kaveh R. Ghazi + + * Make-lang.in (jvspec.o): Depend on system.h and gcc.h. + + * jvspec.c: Include gcc.h. Don't include gansidecl.h. + (do_spec, lang_specific_pre_link, lang_specific_driver, + input_filename, input_filename_length): Don't declare. + (main_class_name, jvgenmain_spec, lang_specific_driver): + Constify a char*. + (lang_specific_driver): All calls to the function pointer + parameter now explicitly call `fatal'. + +1999-09-11 Alexandre Petit-Bianco + + * parse.y (find_applicable_accessible_methods_list): Search + abstract classes as interfaces. + +1999-09-09 Alexandre Petit-Bianco + + * class.c (finish_class): We're now outside a valid method + declaration. Tell the rest of gcc so. + +1999-09-08 Bruce Korb autogen@linuxbox.com + + * Makefile.in: Give the gperf user a hint about why "gperf -F" fails. + +1999-09-07 Tom Tromey + + * gjavah.c (add_class_decl): Generate include for gcj/array.h, not + java-array.h. + (decode_signature_piece): Don't emit "::" in JArray<>. + (print_namelet): Only print trailing `;' when printing a class. + +1999-09-10 Bernd Schmidt + + * java-tree.h: Delete declarations for all tree nodes now moved to + global_trees. + * decl.c: Delete their definitions. + +1999-09-04 Mark Mitchell + + * Make-lang.in (jc1): Depend on ggc-callbacks.o. + * Makefile.in (OBJS): Add ggc-callbacks.o. + (OBJDEPS): Likewise. + +1999-09-03 Tom Tromey + + * parse.y (strip_out_static_field_access_decl): Return operand if + it satisfies JDECL_P. + +1999-09-02 Tom Tromey + + * gjavah.c (decode_signature_piece): Emit "::" in JArray<>. + Handle nested arrays, like `[[I'. + +1999-09-02 Kaveh R. Ghazi + + * class.c (finish_class): Remove unused parameter, all callers + changed. + + * expr.c (build_java_athrow): Change return type to void. + (java_lang_expand_expr): Make sure each case in switch returns a + value. + + * java-tree.h (finish_class): Fix prototype to take void args. + + * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN. + (main): Issue return from main, not exit. + + * jcf-parse.c (parse_class_file): Fix call to `finish_class'. + + * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN. + + * jv-scan.c (main): Issue return from main, not exit. + + * parse.y (check_abstract_method_definitions, + java_check_abstract_method_definitions): Add static prototypes. + (java_complete_expand_methods): Fix call to `finish_class'. + + * verify.c (verify_jvm_instructions): Initialize variables `oldpc' + and `prevpc'. + +1999-08-30 Kaveh R. Ghazi + + * lang.c (language_string): Constify. + +1999-08-30 Kaveh R. Ghazi + + * Makefile.in (LIBS): Fix definition so we link with $(CLIB). + Remove hacks for stuff which comes from libiberty. + + * Make-lang.in: Likewise. + +1999-08-30 Hans-Peter Nilsson + + * Makefile.in (xref.o): Depend on xref.c explicitly. + +1999-08-29 Kaveh R. Ghazi + + * java-tree.h (lang_printable_name): Constify a char*. + + * lang.c (lang_printable_name): Likewise. + +1999-08-27 Jeffrey A Law (law@cygnus.com) + + * gjavah.c, jcf-write.c, verify.c: Do not use C++ style + comments in C code. + +1999-08-26 Tom Tromey + + * gjavah.c (print_cxx_classname): Print "::" before qualified + name. + +1999-08-26 Alexandre Petit-Bianco + + * parse.y (lookup_cl): Changed leading comment. Now does its best + to set the column number. + (qualify_ambiguous_name): Take WFL wrappers into account. + +1999-08-25 Gregg Townsend + + * verify.c (verify_jvm_instructions): Don't check instruction + validity beyond end of method. + +1999-08-25 Tom Tromey + + * jvspec.c (lang_specific_driver): Correctly handle --help again. + +1999-08-25 Kaveh R. Ghazi + + * gjavah.c (print_name, print_base_classname, utf8_cmp, + cxx_keyword_subst, generate_access, name_is_method_p, + get_field_name, print_field_name, super_class_name, print_include, + decode_signature_piece, print_class_decls, usage, help, + java_no_argument, version, add_namelet, print_namelet): Add static + prototype. + (print_base_classname, utf8_cmp, cxx_keyword_subst, + name_is_method_p): Constify a char*. + (get_field_name): Likewise. Prefer xstrdup over malloc/strcpy. + Provide a final else clause in an if-else-if. + (print_field_info): Add missing final arg in function call to + `print_field_name'. + (print_method_info, decompile_method, decode_signature_piece, + print_c_decl, print_full_cxx_name, print_stub, + print_mangled_classname, super_class_name, print_include, + add_namelet, add_class_decl, print_class_decls, process_file, + help): Constify a char*. + + * jcf-write.c (jcf_handler, push_constant1, push_constant2, + push_int_const, find_constant_wide, find_constant_index, + push_long_const, field_op, maybe_wide, emit_dup, emit_pop, + emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop, + emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc, + emit_if, emit_goto, emit_jsr, call_cleanups, + make_class_file_name): Add static prototypes. + (generate_bytecode_return, generate_bytecode_insns): Pass a + NULL_PTR, not a NULL_TREE. + + * jv-scan.c: Include "jcf.h". + (main): Declare using DEFUN macro. + + * jvspec.c (find_spec_file, lang_specific_pre_link, + lang_specific_driver): Add prototypes. + (find_spec_file): Constify a char*. + + * keyword.gperf (hash, java_keyword): Add prototypes. + + * lang.c (lang_print_error): Add static prototype. + (lang_init): Prefer memcpy over bcopy to avoid casts. + + * lex.c (yylex): Add static prototype. + + * parse-scan.y: Include "lex.c" earlier. + + * parse.h: Remove redundant declaration for `yylex'. + + * parse.y (java_decl_equiv, binop_compound_p, search_loop, + labeled_block_contains_loop_p): Add static prototypes. + (not_accessible_p): Make static to match prototype. + + * verify.c (start_pc_cmp): Don't needlessly cast away const. + +1999-08-22 Alexandre Petit-Bianco + + * parse.y (check_method_redefinition): Changed leading comment. + (check_abstract_method_definitions): New function. + (java_check_abstract_method_definitions): New function. + (java_check_regular_methods): Call it. + (verify_constructor_super): Fixed indentation. + (lookup_method_invoke): Likewise. + +1999-08-19 Alexandre Petit-Bianco + + * parse.y (method_header): Return a null pointer if the current + class node is null. + (finish_method_declaration): Return if the current function decl + is null. + (source_start_java_method): Likewise. + (java_method_add_stmt): Likewise. + +1999-08-18 Alexandre Petit-Bianco + + * class.c (emit_register_class): Removed unnecessary call to + start_sequence. + * parse.y (labeled_block_contains_loop_p): Removed unused local + variable. + +1999-08-17 Alexandre Petit-Bianco + + * parse.y (java_refold): Added prototype. + +1999-08-17 Alexandre Petit-Bianco + + * parse.y (BINOP_COMPOUND_CANDIDATES): New macro. + (java_stabilize_reference): Removed unnecessary `else'. + (java_complete_lhs): Set flag to remember boolean. Call + java_refold. Added comments. + (java_decl_equiv): New function. + (binop_compound_p): Likewise. + (java_refold): Likewise. + (patch_unaryop): Striped static field access assigned to decl and + op. Changed promotion scheme for ++/-- operators. + (search_loop): New function. + (labeled_block_contains_loop_p): Likewise. + (patch_loop_statement): Call labeled_block_contains_loop_p. Added + comment. + (patch_bc_statement): Call search_loop. Fixed comment. + +1999-08-14 Anthony Green + + * expr.c (java_lang_expand_expr): Mark static array data as + referenced. + +1999-08-10 Rainer Orth + + * jvgenmain.c (main): NUL-terminate name_obstack. + +1999-08-10 Kaveh R. Ghazi + + * check-init.c (check_bool2_init, done_alternative): Add static + prototypes. + + * class.c (add_interface_do, maybe_layout_super_class): Likewise. + (add_method, build_utf8_ref, build_class_ref, + append_gpp_mangled_type, layout_class_method): Constify a char*. + + * decl.c (push_promoted_type, make_binding_level): Add static + prototypes. + (push_promoted_type, pushdecl): Constify a char*. + + * except.c (find_handler_in_range, link_handler, + check_start_handlers): Add static prototypes. + + * expr.c (process_jvm_instruction): Constify a char*. + + * gjavah.c (main): Constify a char*. + + * java-tree.h (verify_jvm_instructions, process_jvm_instruction): + Constify a char*. + + * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add + static prototypes. + (add_entry, jcf_dependency_set_target, jcf_dependency_add_target, + munge, print_ents): Constify a char*. + + * jcf-dump.c (disassemble_method): Constify a char*. + (print_constant_pool, print_exception_table): Add static prototypes. + (print_constant, print_exception_table, main, disassemble_method): + Constify a char*. + + * jcf-io.c (find_classfile, find_class): Likewise. + + * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise. + (set_source_filename, predefined_filename_p): Add static prototypes. + (set_source_filename, get_constant, get_class_constant, + find_in_current_zip): Constify a char*. + + * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add + static prototypes. + (add_entry, add_path, jcf_path_classpath_arg, + jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*. + + * jcf-reader.c (get_attribute, jcf_parse_preamble, + jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields, + jcf_parse_one_method, jcf_parse_methods, + jcf_parse_final_attributes): Add static prototypes. + (get_attribute): Constify a char*. + + * jcf.h (find_class, find_classfile, jcf_dependency_set_target, + jcf_dependency_add_target, jcf_path_classpath_arg, + jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*. + + * jv-scan.c (main): Constify a char*. + (gcc_obstack_init): Add prototype arguments. + + * jvgenmain.c (gcc_obstack_init): Likewise. + (main): Constify a char*. + + * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add + static prototypes. + (put_decl_string, lang_print_error): Constify a char*. + (lang_init): Remove redundant extern prototype. + + * mangle.c (emit_unicode_mangled_name): Constify a char*. + + * typeck.c (convert_ieee_real_to_integer, parse_signature_type): + Add static prototypes. + (get_type_from_signature): Constify a char*. + + * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ): + Add static prototypes. + (start_pc_cmp): Prefer PTR over GENERIC_PTR. + (verify_jvm_instructions): Constify a char*. + + * xref.c (xref_flag_value): Likewise. + + * xref.h (xref_flag_value): Likewise. + + * zextract.c (makeword, makelong): Add static prototypes. + (makeword, makelong): Constify a uch*. + +1999-08-09 Kaveh R. Ghazi + + * lang.c (java_dummy_print): Constify a char*. + (lang_print_error): Likewise. + (lang_init): Remove redundant prototype for `print_error_function'. + (lang_init_source): Likewise. + (lang_identify): Constify a char*. + +1999-08-09 Tom Tromey + + * javaop.h (WORD_TO_FLOAT): only inline if building with gcc. + (WORDS_TO_LONG): Likewise. + (WORDS_TO_DOUBLE): Likewise. + +1999-08-04 Kaveh R. Ghazi + + * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H). + + * expr.c (java_stack_pop, java_array_data_offset, + build_java_throw_out_of_bounds_exception, case_identity, + build_java_check_indexed_type): Add static prototypes. + (linenumber_table, expand_invoke, expand_java_field_op, + build_primtype_type_ref, expand_byte_code): Constify a char*. + + * java-tree.h (build_primtype_type_ref, linenumber_table): + Constify a char*. + (java_lang_expand_expr): Add prototype. + + * lang.c: Include rtl.h and expr.h. Remove extern prototype for + `java_lang_expand_expr'. + + * lex.c (java_lex_error): Constify a char*. + (java_get_unicode, java_read_char, java_allocate_new_line, + java_unget_unicode, java_sneak_unicode): Prototype. + + * parse-scan.y (current_class, package_name, method_declarator, + report_class_declaration, yyerror): Constify a char*. + + * parse.h (java_report_errors): Prototype. + (yyerror): Constify a char*. + + * parse.y (classitf_redefinition_error, check_modifiers, + parse_jdk1_1_error, lookup_package_type, + lookup_package_type_and_set_next, get_printable_method_name, + purify_type_name): Constify a char*. + (build_super_invocation, maybe_generate_finit, + verify_constructor_super, parser_add_interface, + add_superinterfaces, jdep_resolve_class, note_possible_classname, + java_complete_expand_methods, java_expand_finals, + cut_identifier_in_qualified, java_stabilize_reference, + do_unary_numeric_promotion, operator_string, do_merge_string_cste, + merge_string_cste): Prototype. + (single_type_import_declaration, yyerror, + variable_redefinition_error, build_array_from_name, + build_unresolved_array_type, check_class_interface_creation, + resolve_class, complete_class_report_errors, + note_possible_classname, read_import_dir, + find_in_imports_on_demand, resolve_package, fix_constructors, + check_deprecation, lookup_method_invoke, + maybe_build_primttype_type_ref, array_constructor_check_entry): + Constify a char*. + (java_complete_expand_methods, java_expand_finals): Make static. + (convert_narrow): Remove static prototype. + +1999-08-03 J"orn Rennecke + + * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h. + +1999-08-02 Richard Henderson + + * decl.c: Include defaults.h instead of expr.h. + * parse.y: Likewise. + +1999-08-02 Jakub Jelinek + + * java/decl.c (start_java_method): Change all uses of + PROMOTE_PROTOTYPES, so that it tests it as a C expression. + Ensure expr.h is included. + * java/expr.c (pop_arguments): Ditto. + * java/parse.y (expand_start_java_method): Ditto. + +1999-08-01 Kaveh R. Ghazi + + * Makefile.in (ALL_CFLAGS): Add '-W -Wall'. + +1999-07-31 Bernd Schmidt + + * decl.c: Include "function.h". + * except.c: Likewise. + * parse.y: Likewise. + * Makefile.in: Update dependencies. + +1999-07-30 Kaveh R. Ghazi + + * expr.c (build_java_soft_divmod): Provide a default case in switch. + (java_lang_expand_expr): Mark parameters `target', `tmode' and + `modifier' with ATTRIBUTE_UNUSED. + + * gjavah.c (process_file): Add braces around ambiguous `else'. + + * jcf-dump.c (print_access_flags, localvar_free): Change return + type to void. + + * parse.y (java_complete_expand_method): Initialize variable + `exception_copy'. + (resolve_qualified_expression_name): Likewise for `field_decl'. + (patch_method_invocation): Likewise for `class_to_search'. + (qualify_ambiguous_name): Likewise for `name' and `ptr_type'. + (patch_assignment): Likewise for `lhs_type'. + + * verify.c (verify_jvm_instructions): Remove unused variable + `caller'. + +1999-07-25 Richard Henderson + + * decl.c (va_list_type_node): New. + +1999-07-25 Anthony Green + + * gjavah.c (print_stub): New function. + (METHOD_IS_NATIVE): New macro. + (print_mangled_classname): Make static. + (HANDLE_END_FIELD): Don't emit fields during stub generation. + (process_file): Perform stub generation. + (HANDLE_METHOD): Don't emit class decls during stub + generation. + (HANDLE_END_METHOD): Take into account stub generation. + (print_method_info): Handle stub generation. + (print_stub): New function. + (print_cxx_classname): Make signature consistant with others. + (help): Describe -stubs option. + (main): Create stub file. + (version): Use version.c. + (print_full_cxx_name): New function. + (print_c_decl): Use print_full_cxx_name. + +1999-07-22 Alexandre Petit-Bianco + + * check-init.c (check_init): Handle MAX_EXPR. + +1999-07-15 Andrew Haley + + * lang.c (flag_use_divide_subroutine): New variable. + * typeck.c: (convert_ieee_real_to_integer): Bounds check + fp-to-integer conversion. + (convert): Call convert_ieee_real_to_integer when flag_fast_math + is not set. + + * expr.c (build_java_soft_divmod): New function. + (build_java_binop): Call build_java_soft_divmod if + flag_use_divide_subroutine is set. + * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree + soft_lrem_node: new builtin functions. + (init_decl_processing) Initialize the new builtins. + * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree + soft_lrem_node: new builtin functions. + (build_java_soft_divmod): New function. + * parse.y: Call build_java_soft_divmod if + flag_use_divide_subroutine is set. + * parse.c: Rebuilt. + + * jvspec.c (lang_specific_driver): Always allow an extra arg (for + a --specs= arg) even if not linking. + * lang-options.h (DEFINE_LANG_NAME ("Java")): Add + -fuse-divide-subroutine + +1999-07-20 Alexandre Petit-Bianco + + * parse.y (resolve_and_layout): Check methods only once. + (resolve_qualified_expression_name): Verify thrown exceptions + compatibility. + (check_thrown_exceptions): Reject exceptions thrown in + initializer. Error message tuned. + +1999-07-14 Andrew Haley + + * expr.c (expand_expr): Do not return the last statement in a + block as the block's value. + +1999-07-03 Alexandre Petit-Bianco + + * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed + CALL_EXPR, to avoid order of evaluation changes. + +1999-07-02 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Do not use + IDENTIFIER_LOCAL_VALUE when name is a STRING_CST. + +1999-07-01 Alexandre Petit-Bianco + + * check-init.c (check_init): Handle MAX_EXPR. + * expr.c (force_evaluation_order): Force method call arguments to + be evaluated in left-to-right order. + * parse.y (qualify_ambiguous_name): Loop again to qualify + NEW_ARRAY_EXPR properly. + +1999-06-30 Alexandre Petit-Bianco + + * parse.y (patch_invoke): Resolve unresolved invoked method + returned type. + (qualify_ambiguous_name): STRING_CST to qualify expression for + type name resolution. + +1999-06-24 Andrew Haley + + * class.c (finish_class): Whenever a deferred method is + output, rescan the list of methods to see if a new candidate for + output can be found. + +1999-06-28 Tom Tromey + + * jvspec.c (lang_specific_driver): Recognize --help. + +1999-06-25 Alexandre Petit-Bianco + + * parse.y (resolve_package): Fixed bogus return statement. + (patch_method_invocation): Resolve method invocation beginning with + a package name qualifier. + +1999-06-25 Kaveh R. Ghazi + + * Make-lang.in (java.stage1): Depend on stage1-start. + (java.stage2): Likewise for stage2-start. + (java.stage3): Likewise for stage3-start. + (java.stage4): Likewise for stage4-start. + +1999-06-24 Alexandre Petit-Bianco + + * parse.y (java_complete_lhs): When doing cross referencing, don't + try to keep file location on a WFL expanded as a CALL_EXPR. + +1999-06-23 Alexandre Petit-Bianco + + * parse.y (finish_method_declaration): Insert a RETURN_EXPR when + compiling to class file a void method with an empty method body. + As a side effect, the bytecode backend will generate the + appropriate `return' instruction. + +1999-06-22 Alexandre Petit-Bianco + + * parse.y (lookup_package_type_and_set_next): New function prototype. + (resolve_package): Search current and imported packages. + (lookup_package_type_and_set_next): New function. + +1999-06-22 Andrew Haley + + * verify.c (verify_jvm_instructions): Check for pending blocks + before invalid PC test and opcode switch, not after. + +1999-06-21 Andrew Haley + + * except.c (find_handler_in_range): The upper limit for exception + ranges is exclusive, not inclusive: (start <= pc < end). + (link_handler): find child pointer which points to outer by + searching sibling list: previous code incorrectly assumed that + outer->outer->first_child must point to outer. + * verify.c (verify_jvm_instructions): FIXME added to code for + `athrow'. + (verify_jvm_instructions): Do not assume that the last block + processed in a subroutine is a block which ends with a `ret' + instruction. With some control flows it is possible that the last + block ends with an `athrow'. + +1999-06-14 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Reorganized the post + evaluation of non WFL leading expression nodes. + +1999-06-11 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after + CONVERT_EXPR. + +1999-06-10 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Handle qualified expression + beginning with a STRING_CST. + +1999-06-10 Alexandre Petit-Bianco + + * parse.y (register_fields): Set DECL_INITIAL on both + pre-initialized static and public fields. + (resolve_field_access): Static field access expressions to always + use pointer types. + (qualify_ambiguous_name): Work out buried CALL_EXPR for proper + qualification. CONVERT_EXPR to be resolved as an expression name. + (java_complete_lhs): Identify and access qualified final + initialized field in switch statement case expression. + (fold_constant_for_init): Pre-initialized field decl constant to + be folded. + +1999-06-07 Alexandre Petit-Bianco + + * parse.y (note_possible_classname): Mark returned node with + QUALIFIED_P only if the original class name contained a '/'. + +1999-06-05 Anthony Green + + * Make-lang.in (gcjh): More parallel build fixes. + +1999-06-03 Mike Stump + + * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds. + +1999-06-02 Anthony Green + + * except.c (link_handler): Chain exception handlers in order. + +1999-06-02 Anthony Green + + * expr.c (expand_byte_code): Fill unreachable bytecode regions + with nops and process as usual in order to always set correct EH + ranges. Emit detailed warnings about unreachable bytecodes. + +1999-06-02 Anthony Green + + * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as + constant. + +1999-05-28 Alexandre Petit-Bianco + + * parse.y (lookup_field_wrapper): Unified returned value to NULL + or the searched field decl. + +1999-05-28 Alexandre Petit-Bianco + + * parse.y (fold_constant_for_init): Convert numerical constant + values to the type of the assigned field. + +1999-05-27 Alexandre Petit-Bianco + + * expr.c (lookup_field): Relaxed the test on class loading error + detection. + * parse.y (fold_constant_for_init): Enabeled old code. + +1999-05-26 Alexandre Petit-Bianco + + * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast' + decide the validity of the cast of a java.lang.Cloneable reference + to an array. + (patch_conditional_expr): Fixed first argument passed to + binary_numeric_promotion. + +1999-05-26 Alexandre Petit-Bianco + + * parse.y (qualify_ambiguous_name): Take into account that a + CONVERT_EXPR might specify a type as a WFL. + +1999-05-25 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Save the rhs before using it as an + argument to _Jv_CheckArrayStore. + +1999-05-25 Alexandre Petit-Bianco + + * lex.c (java_parse_doc_section): Fixed `tag' buffer size. + +1999-05-24 Alexandre Petit-Bianco + + * lex.c (java_lex): Accepts `+' or `-' after the beginning of a + floating point literal only when the exponent indicator has been + parsed. + +1999-05-22 Alexandre Petit-Bianco + + * parse.y (formal_parameter:): Construct argument tree list + element even if a yet unsupported final parameter was encountered. + +1999-05-18 Alexandre Petit-Bianco + + * parse.y (finish_method_declaration): Issue errors for native or + abstract methods declared with a method body, as well as for non + native or non abstract methods with no method body. + +1999-05-19 Kaveh R. Ghazi + + * class.c (build_utf8_ref): Initialize variable `field'. + + * decl.c (init_decl_processing): Initialize variable `field'. + + * expr.c (build_known_method_ref): Mark parameters `method_type', + `method_signature' and `arg_list' with ATTRIBUTE_UNUSED. + (process_jvm_instruction): Likewise for parameter `length'. + + * jvspec.c (lang_specific_driver): Mark variables `saw_math', + `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with + ATTRIBUTE_UNUSED. + + * parse.y (maybe_generate_clinit): Remove unused variable + `has_non_primitive_fields'. + (find_in_imports_on_demand): Initialize variables `node_to_use' + and `cl'. + (patch_binop): Likewise for variable `prom_type'. + (patch_unaryop): Likewise for variable `prom_type'. + + * verify.c (verify_jvm_instructions): Likewise for variable `last'. + + * xref.c (xref_table): Add missing initializer. + +1999-05-14 Tom Tromey + + * java-except.h (struct eh_range): Removed unused `next' member. + * verify.c (verify_jvm_instructions): Call check_nested_ranges + after adding all exception handlers. Sort exception ranges in + order of start PC. + (struct pc_index): New structure. + (start_pc_cmp): New function. + * except.c (add_handler): Return `void'. Don't call link_handler; + instead construct an ordinary linked list and do range + coalescing. + (check_nested_ranges): New function. + (link_handler): Changed interface to allow merging of eh_ranges. + Split overlapping ranges. Return `void'. + +1999-05-17 Alexandre Petit-Bianco + + * parse.y (constructor_block_end:): New rule, tagged . + (constructor_body:): Use `constructor_block_end' instead of + `block_end'. + +1999-05-17 Alexandre Petit-Bianco + + * parse.y (statement_nsi:): Pop `for' statement block. + (java_complete_lhs): Labeled blocks containing no statement are + marked as completing normally. + +1999-05-14 Alexandre Petit-Bianco + + * xref.c (xref_set_current_fp): New function, defined. + * xref.h (xref_set_current_fp): New function, prototyped. + +1999-05-14 Alexandre Petit-Bianco + + * check-init.c (check_init): Take into account that + LABELED_BLOCK_STMT can be empty. + +1999-05-13 Alexandre Petit-Bianco + + * parse.y (java_check_regular_methods): Warning check on not + overriding methods with default access in other packages does not + apply to `'. + (java_complete_lhs): If block body is an empty_stmt_node, replace + it by NULL_TREE. This prevents gcc from generating an irrelevant + warning. + +1999-05-13 Alexandre Petit-Bianco + + * check-init.c (check_init): Removed code accepting to see things + falling through default:, when doing xrefs. + * java-tree.h (do_not_fold): New global variable, declared. + * parse.y (do_not_fold): New global variable, defined. + (java_complete_expand_method): Set `do_not_fold' to the value of + `flag_emit_xref'. When doing xrefs: copy the thrown exceptions, + and reinstall them after them have been purged; do not check for + initializations; do not issue missing return errors. + (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes + when doing xrefs. + (patch_binop): Skip the fold part when doing xrefs. + (build_string_concatenation): Skip the concatenation part when + doing xrefs. + (patch_synchronized_statement): Do not generate a try-finally when + doing xrefs. + (patch_throw_statement): When doing xrefs, do not call BUILD_THROW + and keep the location where the throw was seen. + * typeck.c (convert): When `do_not_fold' is set, do not attempt + any treatment on the converted node an simply return a NOP_EXPR of + the targeted type. + * xref.c (xref_get_data): New function, defined. + * xref.h (xref_get_data): New function, declared. + (XREF_GET_DATA): Use xref_get_data. + +1999-05-13 Kaveh R. Ghazi + + * gjavah.c (print_include): Cast the result of `strlen' to int + when comparing against a signed value. + (add_namelet): Likewise. + +1999-05-12 Kaveh R. Ghazi + + * expr.c (expand_invoke): Mark parameter `nargs' with + ATTRIBUTE_UNUSED. + (PRE_LOOKUP_SWITCH): Likewise for variable `match'. + + * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with + ATTRIBUTE_UNUSED. + + * jcf-reader.c (get_attribute): Cast a value to long + when comparing against a signed expression. Likewise. + + * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or + HOST_BITS_PER_CHAR. + +1999-05-11 Andrew Haley + + * parse.y (source_end_java_method): If the current method contains + any exception handlers, force asynchronous_exceptions: this is + necessary because signal handlers in libjava may throw exceptions. + * decl.c (end_java_method): Ditto. + +1999-05-11 Tom Tromey + + * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x + flags. + * jvspec.c (THREAD_NAME): Removed. + (GC_NAME): Likewise. + (MATHLIB): Likewise. + (WITHLIBC): Likewise. + (GCLIB): Likewise. + (THREADLIB): Likewise. + (MATH_LIBRARY): Likewise. + (lang_specific_driver): Don't add `-l' options to command line. + Instead, add a single --specs option. Recognize `-L' options and + use them to search for spec file. + (find_spec_file): New function. + (SPEC_FILE): New define. + +1999-05-11 Dave Brolley + + * lang-options.h: -MD, -MMD, -M and -MM not needed here for + cpplib-enabled build. + +1999-05-05 Per Bothner + + * class.c (make_field_value): DECL_INITIAL may be a string literal; + temporarily zero it while calling rest_of_decl_compilation. + + * java-tree.h (string_ptr_type_node): Add declaration. + * decl.c: Define and initialize string_ptr_type_node. + * parse.y (patch_string_cst): Use string_ptr_type_node. + + * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P): Removed. + * parse.y (for_statement): Now unconditionally exit_block. + (finish_labeled_statement): No longer exit_block if for-loop. + (patch_loop_statement): Check harder if the loop is already labeled. + + * parse.y (patch_initialized_static_field): Removed function. + (maybe_generate_clinit): Removed special handling for interfaces. + (java_complete_expand_methods): Do a preliminary java_complete_tree + on to determine if it can be removed. + (java_complete_expand_method): Remove special handling for . + (java_complete_lhs): For BLOCK and EXPR_WITH_FILE_LOCATION + optimize if we get back empty_stmt_node. + For MODIFY_EXPR, re-do checking of static initializers. + (fold_constant_for_init): Don't return immediate if VAR_DECL. + For VAR_DECL, pass correct context. + + * verify.c (verify_jvm_instructions): Better error messages. + +1999-05-03 Tom Tromey + + * parse-scan.y (interface_declaration): Call + report_class_declaration for interfaces. + +1999-04-30 20:54 -0400 Zack Weinberg + + * Makefile.in: Remove -v from bison command lines. + +1999-04-30 Alexandre Petit-Bianco + + * check-init.c (check_init): Exclude a case of error when doing + xrefs. + * class.c (layout_class_method): Don't generate the error message + twice when compiling from source. + * lang-options.h: Added `-Wredundant-modifers' and + `-Wunusupported-jdk11' flags and help text. + * lang.c (lang_decode_option): Added support for + `-Wunsupported-jdk11' and `-Wredundant-modifiers'. + flag_static_local_jdk11 and flag_redundant set accordingly. + * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK. + * parse.h (EXPR_WFL_ADD_COL): New macro. + (DECL_END_SOURCE_LINE): Likewise. + (DECL_INHERITED_SOURCE_LINE): Likewise. + * parse.y (static_ref_err): New function, prototyped. + (CCB_TK): Now tagged . + (class_body:): Remember the location of the closing '}' of a class + definition when doing xrefs. + (block:): Likewise. + (block_end:): Likewise. + (create_class): Remember the location of the inherited class + identifier when doing xrefs. + (register_fields): Added test on first operand of `init' before + testing it TREE_CODE. + (method_header): Store the location of the class identifier in the + class decl when doing xrefs. + (finish_method_declaration): Don't combine first/last method line + when doing xref. + (java_check_regular_methods): Warning check on not overriding + methods with default access on other packages move before check on + static methods. Initialization of `aflags' also moved up. + (resolve_expression_name): Call static_ref_err to report the error. + (static_ref_err): New function, implemented. + (resolve_field_access): Returned simplified static field access + when doing xrefs. + (resolve_qualified_expression_name): Check for illegal use of + static fields in a non static context. Call static_ref_err to + report error in various places. + (java_complete_tree): Do not fold initialized static fields when + doing xrefs. + (java_complete_lhs): Likewise. + +1999-04-29 Anthony Green + + * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to + create internal labels. + (lookup_label): Ditto. + +1999-04-24 Alexandre Petit-Bianco + + * class.c (layout_class_method): Generate 's rtl for + interfaces. + * decl.c (complete_start_java_method): Don't call _Jv_InitClass + for interfaces' . + * expr.c (lookup_field): Search for fields in interfaces. + (expand_invoke): Fixed indentation. + (expand_java_field_op): Likewise. Use IS_CLINIT. + * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed. + (IS_CLINIT): New macro. + * parse.y (type_declaration:): Call maybe_generate_clinit after an + interface was parsed. + (maybe_generate_clinit): Don't generate if the current class is an + interface with only fields of primitive types. + (reset_method_name): Use IS_CLINIT. + (java_complete_expand_method): Expand when it exists for + interfaces. Use IS_CLINIT. + (resolve_expression_name): Use DECL_CONTEXT instead of + current_class to build static field references. + (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on + ARRAY_REF when doing xreferencing. + (check_final_assignment): Fixed typo in leading comment. Use + IS_CLINIT. + (patch_array_ref): Don't fully expand array references when + xreferencing. + (patch_return): Use IS_CLINIT. + (patch_throw_statement): Likewise. + +1999-04-22 Tom Tromey + + * Make-lang.in (JAVA_SRCS): Added check-init.c. + +1999-04-21 Alexandre Petit-Bianco + + * decl.c (predef_filenames, predef_filenames_size): New globals + (init_decl_processing): predef_filenames and predef_filenames_size + initialized. + * java-tree.h (predef_filenames, predef_filenames_size): Declared + extern. + * jcf-parse.c (predefined_filename_p): New function. + (yyparse): Check that files on the command line are specified only + once and issue a warning otherwise. + * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro. + * parse.y (source_end_java_method): Nullify NOP method bodies, to + avoid a gcc warning with -W -Wall turned on. + (java_expand_classes): Abort if errors were encountered. + (java_complete_lhs): If the cross reference flag is set, wrap + field DECL node around a WFL when resolving expression name. + +1999-04-19 Alexandre Petit-Bianco + + * lang.c (lang_decode_option): Fixed returned value when parsing + `-fxref=...' and `-Wall'. + * parse.y (source_end_java_method): Do not generate code when + flag_emit_xref is set. + (resolve_expression_name): Do not build static field access when + flag_emit_xref is set. + (resolve_field_access): No special treatment on `length' when + flag_emit_xref is set. Do not build qualified static field access + when flag_emit_xref is set. + (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR + when flag_emit_xref is set. + (patch_assignment): Do not generate array store runtime check when + flag_emit_xref is set. + * xref.c (xref_flag_value): Fixed function declaration + indentation. + (xset_set_data): New function. + * xref.h (xref_set_data): Added prototype for new function. + (typedef struct xref_flag_table): New field data. + (XREF_GET_DATA): New macro. + +1999-04-19 Tom Tromey + + * xref.h (enum): Removed trailing comma. + + * parse.y (resolve_qualified_expression_name): Added missing + `break'. + +1999-04-15 Anthony Green + + * gjavah.c: New prototypes for java_float_finite and + java_double_finite. + +1999-04-12 Alexandre Petit-Bianco + + * parse.y (patch_unaryop): Fixed ++/-- operator check on array + references. + +1999-04-06 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (TREE_H): Add tree-check.h. + (RTL_H): Add genrtl.h. + +1999-04-06 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Added ArrayStoreException runtime + check. + +1999-04-06 Per Bothner + + * expr.c (pop_type_0): New function. + (pop_type): Use pop_type_0. + * java-tree.h (pop_type_0): New declaration. + * verify.c (verify_jvm_instructions): Check return instructions. + + * parse.y (patch_binop): Don't fold if non-constant and emiting + class files. + +1999-04-05 Kaveh R. Ghazi + + * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H). + + * gjavah.c: Include math.h earlier. Include tree.h/java-tree.h. + (main_jcf): Don't define. + (process_file): Don't set `main_jcf'. + + * java-tree.h (main_jcf): Don't declare. + + * jcf-parse.c (main_jcf): Add static definition. + + * lang.c (main_jcf): Don't define. + +1999-04-05 Kaveh R. Ghazi + + * class.c (add_method_1): Cast the argument of `bzero' to PTR. + + * decl.c (copy_lang_decl): Likewise for `bcopy'. + + * jcf-depend.c: Include "config.h", not . + + * jcf-parse.c (jcf_figure_file_type): Cast the arguments of + `bcopy' to PTR. + + * jcf-path.c: Include "config.h", not . + + * lex.c: Don't include various system header files. + (java_init_lex): Cast the argument of `bzero' to PTR + + * parse-scan.y (java_push_parser_context): Likewise. + + * parse.y (java_push_parser_context): Likewise. + (patch_bc_statement): Match format specifier to variable argument. + + * xref.c: Don't include . + +1999-04-05 Alexandre Petit-Bianco + + * parse.y (struct parser_ctxt *ctxp): Now global. + (declare_local_variables): Use WFL compound value for the + declaration source line value, when doing cross-referencing. + +1999-03-31 Tom Tromey + + * gjavah.c (print_field_info): Allow constants of other types. + (print_include): Generate include when new name is proper prefix + of already printed name. + (add_namelet): Likewise. + (cxx_keyword_subst): New function. + (print_method_info): Use it. + (print_field_name): New function. + (get_field_name): New function. + (print_field_info): Use get_field_name and print_field_name. + +1999-03-31 Kaveh R. Ghazi + + * Makefile.in (keyword.h): Generate using gperf language 'C', not + 'KR-C', so gperf uses the `const' keyword on strings. + + * keyword.gperf (java_keyword): Const-ify a char*. + +1999-03-30 Alexandre Petit-Bianco + + * parse.y (patch_bc_statement): Fixed identation and a bogus + `printf' format. + +1999-03-30 Alexandre Petit-Bianco + + * parse.y (patch_assignment): Allow static variables in other + classes to be assigned. + +1999-03-28 Kaveh R. Ghazi + + * class.c (maybe_add_interface): Remove unused variable + `interface_binfo'. + (make_class_data): Use = for assignment, not ==. Likewise. + (emit_register_classes): Remove unused variable `decl'. + + * lex.c: Fix comment so as not to contain an embedded `/*'. + + * verify.c (verify_jvm_instructions): Remove unused variable + `self_type'. + +1999-03-27 Per Bothner + + * parse.y (complete_loop_body): Rename to finish_loop_body. + (complete_labeled_statement): Rename to finish_labeled_statement. + (complete_for_loop): Rename to finish_for_loop. + (complete_method_declaration): Rename to finish_method_declaration. + + * java-tree.h (continue_identifier_node): New global node. + * decl.c: Define and initialize continue_identifier_node. + * parse.y (generate_labeled_block): Remove - no longer needed. + (build_loop_body): Use continue_identifier_node for continue block. + (finish_labeled_statement): Also do pop_labeled_block actions. + (java_complete_lhs): POP_LOOP even if error. + (build_labeled_block): Special handling for continue_identifier_node. + (patch_loop_statement): Re-organize. + (patch_bc_statement): Re-write. + +1999-03-27 Alexandre Petit-Bianco + + * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count + using a WFL compound value. + * parse.y (xref.h): Include. + (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the + WFL compound value. + (register_fields): Set WFL compound value to lineno if doing + xrefs. + (java_complete_expand_method): Call expand_xref if flag_emit_xref + is set. + * xref.c (system.h, jcf.h, parse.h, obstack.h): Include. + * xref.h (expand_xref): Prototype renamed from xref_generate. + +1999-03-27 Alexandre Petit-Bianco + + * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK. + (GET_CURRENT_BLOCK): New macro. + * parse.y (current_static_block): New global variable. + (method_body:): Define action. + (complete_method_declaration): Set current_function_decl to NULL + when work on the current method is done. + (declare_local_variables): Use GET_CURRENT_BLOCK. + (java_method_add_stmt): Likewise. + (java_complete_expand_method): Disable the use of `this' when + expanding . + (enter_a_block): If no current method exist, use + current_static_block to link static initializer blocks. + (exit_block): Rewritten to use current_static_block when no current + method decl exists. + (lookup_name_in_blocks): Use GET_CURRENT_BLOCK. + (patch_return): Forbid the use of `return' in static initializers. + (patch_throw_statement): Fixed indentation. Issue specific error + for uncaught thrown checked exception in static initializer + blocks. Removed FIXME. + +1999-03-25 Zack Weinberg + + * java/Make-lang.in: Remove all references to gcj.o/gcj.c. + Link gcj from gcc.o. + +1999-03-23 Alexandre Petit-Bianco + + * parse.y (find_applicable_accessible_methods_list): When dealing + with interface: ensure that a given interface or java.lang.Object + are searched only once. + +1999-03-23 Kaveh R. Ghazi + + * gjavah.c (print_c_decl): Remove unused argument `flags'. + + * jcf-dump.c (print_access_flags): Add braces around if-else. + + * jvspec.c (lang_specific_driver): Wrap variable `len' in macro + COMBINE_INPUTS. + + * lex.c (build_wfl_node): Add static prototype. + + * lex.h (build_wfl_node): Remove static prototype. + + * parse.y: Include lex.c early enough to declare everything needed. + Ensure calls to `build_wfl_node' pass the proper arguments. + (create_class): Remove unused variable `super_decl'. + (get_printable_method_name): Initialize variable `name'. + +1999-03-22 Alexandre Petit-Bianco + + * Changelog: Fixed 1999-03-22 typos. + * lang.c (lang_decode_option): Fixed typo in error string in the + XARG section. + +1999-03-22 Alexandre Petit-Bianco + + * Makefile.in (JAVA_OBJS): Added entry xref.o. + (xref.o): New rule. + * java-tree.h (flag_emit_xref): Declared extern. + * lang.c (xref.h): Included. + (flag_emit_xref): New global variable. + (lang_decode_option): Added support for -fxref. + * xref.c: Created. + * xref.h: Likewise. + +1999-03-21 Manfred Hollstein + + * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be + linked with. + +1999-03-21 Kaveh R. Ghazi + + * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H) + $(srcdir)/../system.h and $(JAVA_TREE_H). + (jcf-io.o): Depend on $(JAVA_TREE_H). + (mangle.o): Likewise. + + * check-init.c (check_cond_init): Add static prototype. + + * class.c (build_java_method_type, hashUtf8String, + make_field_value, get_dispatch_vector, get_dispatch_table, + append_gpp_mangled_type, mangle_static_field): Likewise. + (strLengthUtf8): Hide unused definition. + (hashUtf8String): Const-ify. + (make_field_value): Un-ANSI-fy. + + * constants.c: Move inclusion of jcf.h above java-tree.h. + (set_constant_entry, find_class_or_string_constant, + find_name_and_type_constant, get_tag_node, + build_constant_data_ref): Add static prototype. + + * decl.c (push_jvm_slot, builtin_function, + lookup_name_current_level): Likewise. + (builtin_function): Const-ify. + + * except.c (expand_start_java_handler, expand_end_java_handler): + Add static prototype. + + * expr.c (flush_quick_stack, push_value, pop_value, + java_stack_swap, java_stack_dup, build_java_athrow, + build_java_jsr, build_java_ret, expand_java_multianewarray, + expand_java_arraystore, expand_java_arrayload, + expand_java_array_length, build_java_monitor, expand_java_pushc, + expand_java_return, expand_java_NEW, expand_java_INSTANCEOF, + expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label, + expand_compare, expand_test, expand_cond, expand_java_goto, + expand_java_call, expand_java_ret, pop_arguments, expand_invoke, + expand_java_field_op, java_push_constant_from_pool): Likewise. + + (decode_newarray_type, expand_iinc): Un-ANSI-fy. + (build_java_arraynull_check): Mark parameters `node' and `type' + with ATTRIBUTE_UNUSED. + (note_label): Likewise for parameter `current_pc'. + (expand_java_call, expand_java_ret): Hide unused definition. + + * java-tree.h (make_class, build_constants_constructor, + java_set_exception_lang_code, pop_labeled_block, emit_handlers, + init_outgoing_cpool, register_class, emit_register_classes, + java_layout_seen_class_methods): Prototype. + (unicode_mangling_length): Const-ify. + (append_gpp_mangled_name, append_gpp_mangled_classtype, + emit_unicode_mangled_name, format_int, format_uint, + jcf_trim_old_input, jcf_print_utf8, jcf_print_char, + jcf_print_utf8_replace, open_class): Prototype. + + * jcf-dump.c: Include "config.h", not . Don't include + . Include tree.h/java-tree.h. + (utf8_equal_string usage, process_class): Add static prototype. + (open_class): Don't prototype this here. + (utf8_equal_string): Match arguments to format specifiers. + (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH, + TABLE_SWITCH, disassemble_method): Likewise. + + * jcf-io.c: Include tree.h/java-tree.h. + (open_class, find_classfile, jcf_print_utf8, + jcf_print_utf8_replace): Const-ify. + + * jcf-parse.c (parse_zip_file_entries, process_zip_dir, + parse_class_file): Add static prototype. + (find_in_current_zip): Match definition to existing static + prototype. + + * jcf-write.c: Include jcf.h before tree.h/java-tree.h. + (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label, + finish_jcf_block, define_jcf_label, get_jcf_label_here, + put_linenumber, localvar_alloc, localvar_free, get_access_flags, + write_chunks, adjust_typed_op, generate_bytecode_conditional, + generate_bytecode_return, perform_relocations, init_jcf_state, + init_jcf_method, release_jcf_state, generate_classfile): + Add static prototype. + (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED. + (make_class_file_name): Const-ify. + + * jcf.h (find_classfile): Const-ify. + + * jv-scan.c (reset_report): Remove prototype. + + * jvgenmain.c: Include jcf.h/tree.h/java-tree.h. + (error): Rewrite to allow varargs. + + * lang.c (lang_f_options): Const-ify. + + * lex.c (java_parse_escape_sequence): Add static prototype. + (java_allocate_new_line): Match definition to existing static + prototype. + + * mangle.c Include tree.h/java-tree.h. + (unicode_mangling_length, emit_unicode_mangled_name, + append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify. + + * parse.h (jdep_code): Remove trailing comma in enumeration. + (java_get_line_col): Move prototype outside of !JC1_LITE test. + (reset_report): Add prototype. + + * verify.c (push_pending_label, merge_types): Add static + prototypes. + + * zipfile.h (opendir_in_zip, open_in_zip): Prototype. + +1999-03-19 Alexandre Petit-Bianco + + * parse.y (find_applicable_accessible_methods_list): Extend the + search to superinterfaces when relevant. + (search_applicable_methods_list): New function. + +1999-03-18 Alexandre Petit-Bianco + + * class.c (unmangle_classname): Implemented stricter testing + before setting the QUALIFIED_P flag on an identifier. + +1999-03-16 Per Bothner + + * parse.y (java_complete_lhs): Call force_evaluation_order + after patch_newarray. + (patch_binop): Don't call fold if there are side effects. + +1999-03-16 Alexandre Petit-Bianco + + * parse.y (java_stabilize_reference): Use save_expr instead of + building a SAVE_EXPR node. + (java_complete_lhs): Patch the resulting string of the `+=' + operator (if necessary) and complete the RHS after having built + the cast. + +1999-03-15 Per Bothner + + * class.c (make_class): Don't set CLASS_P here (because + this function is also called by build_java_array_type). + (push_class): Set CLASS_P here instead. + * parse.h (TYPE_CLASS_P): Check for TYPE_ARRAY_P is redundant. + + * jcf-dump.c (print_access_flags): Take extra parameter to indicate + context. If the context is class, perfer "super" over "synchronized". + * jcf-write.c (generate_classfile): Don't add ACC_SUPER if interface. + + * parse.y (create_class): Don't call parser_check_super here; + it is not robust. Always wait until later. + + * parse.y (method_header): For interfaces, set ACC_ABSTRACT (to + match what JDK 1.2 does), but don't set ACC_PUBLIC. + +1999-03-13 Per Bothner + + * lex.c (java_read_char): UNGET invalid non-initial utf8 character. + * lex.h (UNGETC): Change misleading macro. + +1999-03-12 Alexandre Petit-Bianco + + * parse.y (java_stabilize_reference): Return NODE when patching a + COMPOUND_EXPR. + (java_complete_lhs): Put parenthesis around truth values. + +1999-03-12 Alexandre Petit-Bianco + + * class.c (layout_class_method): Don't make rtl for interface + methods. + * parse.h (GET_TYPE_NAME): New macro. + * parse.y (if_then_statement:): Fixed indentation. + (if_then_else_statement:): Likewise. + (for_statement:): Fixed spacing. + (try_statement:): Fixed indentation. + (create_interface): Don't force interfaces to be abstract. + (method_header): Abstract methods are OK in interfaces. + (declare_local_variables): Fixed typo in comment. + (java_complete_expand_method): Fixed indentation. + (resolve_qualified_expression_name): Use GET_TYPE_NAME to report + non accessible fields. + (java_stabilize_reference): New function. + (java_complete_lhs): Fixed indentation. Use + java_stabilize_reference in compound assignment. Insert the + cast. If not processing `+' fix string constants before processing + binop. + +1999-03-12 Kaveh R. Ghazi + + * constants.c (find_class_or_string_constant): Cast variable `j' + to a `jword' when comparing against one. + + * expr.c (java_lang_expand_expr): Remove unused variables + `has_finally_p' and `op0'. + + * gjavah.c (print_field_info): Cast a value to jint when comparing + against one. Likewise for a jlong. + (add_namelet): Likewise cast a `sizeof' to an int when comparing + against a signed quantity. + + * jcf-dump.c (print_signature_type): Remove unused variable `digit'. + (print_signature): Don't needlessly dereference variable `str' + + * jcf-reader.c (get_attribute): Mark variables `max_stack' and + `max_locals' with ATTRIBUTE_UNUSED. + (jcf_parse_class): Likewise for variable `index'. + + * parse.h (reverse_jdep_list): Remove static prototype. + + * parse.y (build_jump_to_finally): Remove prototype and definition. + (reverse_jdep_list): Add static prototype. + + * typeck.c (convert_ieee_real_to_integer): Remove unused variables + `assignment' and `expr_decl'. + + * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'. + +1999-03-12 Andrew Haley + + * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes; + we'll need a directory separator and a null character. + +1999-03-10 Per Bothner + + * jcf-write.c (generate_bytecode_insns): Handle __builtin_fmod, for %. + +Tue Mar 9 11:52:08 1999 Alexandre Petit-Bianco + + * parse.y (method_header): Don't set ACC_ABSTRACT flags on + interfaces. + +1999-03-05 Per Bothner + + * lex.c (java_parse_end_comment): Take extra parameter (next char). + + * class.c (build_utf8_ref): Fix possible name class/ambiguity. + + * class.c (layout_class_method): A static method in a base class + is never overridden, so treat it like it doesn't exist. + However, do complain about private non-static method overriding + public static method. + + * parse.y: Don't set unused INITIALIZED_P flag. + * java-tree.h (INITIALIZED_P): Removed no-longer needed flag. + + * parse.y (find_expr_with_wfl): Optimize tail-calls. + (build_array_from_name): Re-order &index[string] to &string[index]. + + * parse.y (java_complete_lhs): Don't call patch_assignment if rhs is + error_mark (it might catch more errors, but it is more likely to lose). + +1999-03-06 Kaveh R. Ghazi + + * Makefile.in (jcf-parse.o): Depend on $(PARSE_H). + (parse-scan.o): Depend on toplev.h. + + * class.c (make_method_value): Add prototype. Make it static. + Remove unused second argument, caller changed. + + * expr.c (java_lang_expand_expr): Remove unused variable + `return_label'. + + * java-tree.h: Don't prototype find_in_current_zip. + Add prototypes for verify_constant_pool, start_java_method, + end_java_method, give_name_to_locals, expand_byte_code, + open_in_zip, set_constant_value, find_constant1, find_constant2, + find_utf8_constant, find_string_constant, find_class_constant, + find_fieldref_index, find_methodref_index, write_constant_pool, + count_constant_pool_bytes and encode_newarray_type. + + * jcf-dump.c: Remove unused variable `LONG_temp'. + + * jcf-parse.c: Include parse.h. + (jcf_parse_source): Remove unused parameter, all callers changed. + (jcf_figure_file_type): Add static prototype. + (find_in_current_zip): Likewise. Also remove unused parameter, + all callers changed. + (read_class): Initialize variable `saved_pos'. + + * jcf-reader.c (jcf_parse_preamble): Mark variables + `minor_version' and `major_version' with ATTRIBUTE_UNUSED. + + * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE. + (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE. + (java_parse_doc_section): Initialize variable `seen_star'. + (java_lex): Wrap variable `number_beginning' in !JC1_LITE. + (java_lex_error): Mark parameters `msg' and `forward' with + ATTRIBUTE_UNUSED. + (java_get_line_col): Mark parameters `filename' and `line' with + ATTRIBUTE_UNUSED. + + * parse-scan.y: Include toplev.h. + (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED. + + * parse.h: use `struct JCF', not plain `JCF'. + (java_parser_context_save_global, java_expand_classes + java_parser_context_restore_global, java_parse): Add prototypes. + + * typeck.c (convert_ieee_real_to_integer): Remove unused variable + `node'. + +1999-02-24 Per Bothner + + * check-init.c (check_init): COPYN takes word count, not bit count. + +1999-02-26 Per Bothner + + * typeck.c (convert_ieee_real_to_integer): Use save_expr instead of + explicit build_decl. (Avoids crash in reload when optimizing.) + +1999-02-25 Per Bothner + + * decl.c (complete_start_java_method): Handle synchronized method + even when compiling from bytecode. + +1999-02-26 Tom Tromey + + * gjavah.c (add_class_decl): Only generate `#include' if outer + class is not the name of the class we are processing. Correctly + append `.h' in #include. + (process_file): Clean up newlines around generated `#include's. + (decode_signature_piece): Correctly handle inner classes. + (struct include): New structure. + (all_includes): New global. + (print_include): New function. + (add_class_decl): Use it. + (process_file): Likewise. + (add_class_decl): Generate include for java-array.h if array + seen. + (process_file): Don't generate java-array.h include. + + * gjavah.c (add_namelet): Check for standard package names here. + (add_class_decl): Don't check for standard package names here. + +1999-02-25 Tom Tromey + + * parse.y (read_import_dir): Use `|=', not `+=', to set `found'. + When reading a zip file, only use strncmp if both strings are + bigger than the buffer length. Initialize `k' when looping + through zip file. + +1999-02-24 Tom Tromey + + * gjavah.c (struct namelet): New structure. + (add_namelet): New function. + (print_namelet): New function. + (print_class_decls): Use add_namelet and print_namelet to generate + namespaces and not classes. + (method_printed): New global. + (HANDLE_END_METHOD): Examine method_printed. + (print_method_info): Set method_printed when required. Print + error if function to be ignored is marked virtual. Handle $finit$ + method. + (METHOD_IS_FINAL): New macro. + (print_field_info): Use it. + (HANDLE_METHOD): Clear method_printed. + (method_pass): New global. + (HANDLE_END_FIELD): Call add_class_decl on the first pass. + (process_file): Do two passes over both fields and methods. + (HANDLE_METHOD): Examine method_pass. + (root): New global. + (add_class_decl): New function. + (print_class_decls): Don't scan over entire constant pool. + +1999-02-23 Tom Tromey + + * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and + disable linking in that case. + +1999-02-20 Tom Tromey + + * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f, + not 0x1f. + +1999-02-21 Per Bothner + + * decl.c (build_result_decl), java-tree.h: New method. + (complete_start_java_method): Handle synchronized methods. + Don't build DECL_RESULT here. (Ordering dependency problem.) + (start_java_method): Call build_result_decl here instead ... + * parse.y (java_complete_expand_method): ... and here. + (expand_start_java_method): Don't call complete_start_java_method here. + (java_complete_expand_method): Call it here instead. + * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Moved to .. + * java-tree.h: ... here. + + * expr.c (force_evaluation_order): Fix typo, don't handle ARRAY_REF. + * parse.y (java_complete_lhs): Don't call force_evaluation_order + for ARRAY_REF - it doesn't work when array bounds are checked. + (patch_array_ref): Handle it here instead. + + * jcf-write.c (generate_classfile): Emit "Exceptions" attribute. + +1999-02-19 Per Bothner + + Force left-to-right evaluation of binary operations etc. + * expr.c (force_evaluation_order), java-tree.h: New function. + * parse.y (java_complete_lhs): Pass binary operations, procedure + calls, and ARRAY_REFs to force_evaluation_order. + (various): Set TREE_SIDE_EFFECTS more carefully. + + Tolerate random (non-UTF8) encoding in comments without complaining. + * lex.c (java_read_char): Return 0xFFFE if bad UTF8 encoding. + (java_is_eol): Handle '\r' followed by '\n' instead of vice versa. + + * parse.y (resolve_qualified_expression_name): Handle error_mark. + (java_complete_node case EXPR_WITH_FILE_LOCATION): Likewise. + + * parse.y (java_complete_lhs): Ignore an empty statement in a + COMPOUND_EXPR. Don't complain about empty statement after return. + +1999-02-19 Per Bothner + + * parse.y (obtain_incomplete_type): Don't wrap unknown types + in TREE_LIST - just chain the POINTER_TYPEs together. + (resolve_class): If type already resolved, return decl. + After resolving, update TREE_TYPE(class_type), and name (if array). + * parse.h (do_resolve_class), parse.y: Make non-static. + * class.c (maybe_layout_super_class): Take this_class argument. + Do do_resolve_class if necessary. + (layout_class, layout_class_methods): Adjust calls appropriately. + * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED, + JDEP_RESOLVED_P): Redefined for new TREE_LIST-less convention. + * typeck.c (build_java_array_type): Don't call layout_class. + +1999-02-17 Alexandre Petit-Bianco + + * parse.y (check_pkg_class_access): Allow private class access + within the same package. + (strip_out_static_field_access_decl): New function. + (patch_unaryop): Call strip_out_static_field_access_decl on ++/-- + operator argument before testing its nature. + +1999-02-03 Per Bothner + + * java-tree.def (FINALLY_EXPR): Removed. (Now uses TRY_FINALLY_EXPR.) + (TRY_EXPR): Simplify - it no longer has a finally clause. + * check-init.c (check_init): Handle TRY_FINALLY_EXPR. + Simpler handling of TRY_EXPR, which no longer has a finally clause. + * expr.c (java_lang_expand_expr): Likewise. + * java-tree.h (CATCH_EXPR_GET_EXPR): Removed - no longer needed. + * parse.h (java_get_catch_block), parse.y: Removed - no longer needed. + * parse.y (java_complete_lhs): Add support for TRY_FIANLLY_EXPR. + (build_try_statement): Remove finally parameter and handling. + (build_try_finally_statement): New function. + (patch_try_statement): No longer need to support finally clause. + (try_statement): Update grammar action rules. + * jcf-write.c (generate_bytecode_insns): Handle TRY_FINALLY_EXPR. + Simpler handling of TRY_EXPR, which no longer has a finally clause. + +1998-11-26 Andrew Haley + + * jcf-parse.c (get_constant): Add braces around computation of 'd' + when REAL_ARITHMETIC is not defined. [Oct 26 fix got overwritten -PB] + +1999-02-17 Andrew Haley + + * class.c (build_utf8_ref): Back out broken patch which was + intended to to output signatures using '.' as a separator. + + * class.c (make_class_data): Output signatures using '.' as a + separator, rather than '/'. + (mangled_classname): Likewise. + (make_field_value): Likewise. + (make_method_value): Likewise. + * constants.c (alloc_class_constant): Likewise. + * expr.c (build_invokeinterface): Likewise. + +1999-02-11 Alexandre Petit-Bianco + + * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid + of an ancient workaround. + +1999-02-10 Jeffrey A Law (law@cygnus.com) + + * jvspec.c (xmalloc): Kill the prototype. It does not belong + here anymore. + +1999-02-10 Alexandre Petit-Bianco + + * lex.c (yylex): Encode \0 as UTF8. + +1999-02-10 Tom Tromey + + * jvspec.c (lang_specific_driver): Use libgcj, not libjava. + * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE. + (libgcj_zip): Renamed. + * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not + LIBJAVA_ZIP_FILE. + (jcf_path_init): Use LIBGCJ_ZIP_FILE. + + * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop. + (GC_NAME): Renamed -lgc to -lgcjgc. + +1999-02-09 Alexandre Petit-Bianco + + * lex.c (java_lang_cloneable): Initialize. + * parse.y (java_lang_cloneable): New static variable. + (qualify_ambiguous_name): Take CONVERT_EXPR into account when + doing one more qualification round. + (valid_ref_assignconv_cast_p): Reject null source or + destination. Allow an array to be cast into java.lang.Cloneable. + (patch_cast): Swapped two first arguments to first call to + valid_ref_assignconv_cast_p. + +1999-02-08 Alexandre Petit-Bianco + + * parse.h: DECL_P renamed JDECL_P. + * parse.y: DECL_P replaced by JDECL_P. + (build_array_from_name): Always use pointer's type. + (patch_bc_statement): Extra code to search continue target in a + for loop. Fixed comments. Continue target is current loop when + unlabeled. + +1999-02-05 Andrew Haley + + * class.c (make_class_data): The superclass of an interface should + be null, not class Object. + + * lex.c (java_lex): Sign extend hex literals. + +1999-02-04 Andrew Haley + + * class.c (build_utf8_ref): Output signatures using '.' as a + separator, rather than '/'. + (make_class_data): Likewise. + +1999-02-03 Marc Espie + + * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and + mkstemp.o. Get them from libiberty now. + +1999-02-02 Jeffrey A Law (law@cygnus.com) + + * jcf-io.c: Do not include sys/stat.h or sys/wait.h + +1999-02-02 Kaveh R. Ghazi + + * jvspec.c (xmalloc): Fix the prototype to match the one obtained + from libiberty.h + +1999-02-02 Per Bothner + + Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'. + * jcf-write.c (generate_bytecode_return): New function. + (generate_bytecode_insns): Use it, for RETURN_EXPR. + + * jcf-write.c (generate_bytecode_insns): For REAL_CST that is 0 or 1, + generate special [fd]const_[01] instructions. + + * jcf-parse.c (yyparse): Don't emit_register_classes if -fsyntax-only. + + * verify.c (verify_jvm_instructions): Do INVALIDATE_PC after + handling OPCODE_lookupswitch or OPCODE_tableswitch. + +1999-02-01 Per Bothner + + * parse.y (patch_method_invocation): Handle calling static methods, + even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS). + + * parse.y (java_complete_lhs): Don't complain about unreachable + exit condition in a do-while statement. + +1999-01-29 Alexandre Petit-Bianco + + * lex.c (java_read_char): Fixed utf8 decoding. + (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff + range. + * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed + comments. Local variable `all_primitive' is gone. Broadened + acceptance of `0' to floating point targets. `long' can now be + widened to `double' or `float'. + (valid_method_invocation_conversion_p): Added leading + comment. Fixed tabulation. + (build_string_concatenation): Optimize out left or right empty + string constants. + +1999-01-28 Per Bothner + + * jcf-write.c (localvar_alloc): Only emit entry for + LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE. + (generate_bytecode_insns): Only call put_linenumber if + debug_info_level > DINFO_LEVEL_NONE. + * jvspec.c (lang_specific_driver): If no -O* or -g* option + is specified, add -g1 (for compatibility wih javac). + +1999-01-28 Hans-Peter Nilsson + + * java/Makefile.in: Add missing dependencies for jcf-dump.o, + gjavah.o, check-init.o, jv-scan.o + +1999-02-01 Kaveh R. Ghazi + + * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h. + + * gjavah.c: Include config.h and system.h. + + * javaop.h (inline): Don't define, its handled by system.h. + (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these + from `inline' to `static inline'. + + * jcf.h (inline): Don't define, its handled by system.h. + + * lex.c (inline): Likewise. + +1999-01-31 Zack Weinberg + + * lang-specs.h: Map -Qn to -fno-ident. + +1999-01-29 Richard Henderson + + * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo. + +1999-01-29 Tom Tromey + + * parse.h (BUILD_APPEND): If ARG is a non-String object reference, + then cast it to Object before calling `append' method. + +1999-01-28 Per Bothner + + * check-init.c (check_bool2_init, check_bool_init, check_init): + Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR. + * jcf-write.c (generate_bytecode_insns): Likewise. + +1999-01-28 Alexandre Petit-Bianco + + * jcf-parse.c (jcf_parse): Don't parse the same class file twice. + * parse.y (patch_cast): Allow a boolean to be cast into a + boolean. + +1999-01-27 Alexandre Petit-Bianco + + * parse.y: (class_declaration:): Fixed indentation. + (class_member_declaration:): Extra `;' after field declaration now + accepted. + (interface_declaration:): Removed debug messages in error reports. + (patch_binop): Nodes created and returned inherit the orignal + node's COMPOUND_ASSIGN_P flag value. + (patch_cast): Fix cast from char to floating point. + +1999-01-25 Andrew Haley + + * except.c, java-except.h (expand_resume_after_catch): new + function. + * expr.c (java_lang_expand_expr): call expand_resume_after_catch + to branch back to main flow of control after a catch block. + +1999-01-23 Kaveh R. Ghazi + + * Makefile.in (parse.o): Depend on $(CONFIG_H) and + $(srcdir)/../system.h. + (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h. + (jcf-parse.o): Depend on $(srcdir)/../toplev.h. + (jcf-write.o): Likewise. + (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. + (mangle.o): Depend on $(srcdir)/../toplev.h. + (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. + (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. + + * class.c: Include output.h and parse.h. + (mangled_classname): Add the `const' keyword to a char*. + (find_named_method): Hide unused function definition. + (build_utf8_ref): Change type of variable `c' to unsigned char. + Use ISALPHA/ISDIGIT instead of isalpha/isdigit. + (build_class_ref): Add the `const' keyword to a char*. + (layout_class_method): Remove unused variable `buf'. + + * decl.c (find_local_variable): Remove unused variable `rtl'. + (pushdecl): Likewise for variables `different_binding_level' and + `oldglobal'. + (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED. + (maybe_build_cleanup): Likewise for parameter `decl'. + + * except.c (expand_start_java_handler): Mark parameter `range' + with ATTRIBUTE_UNUSED. + + * expr.c: Include except.h. + (pop_type): Remove unused variable `i'. + (pop_value): Likewise for variables `n_words' and `i'. + (expand_java_arrayload): Likewise for variable `convert'. + (java_lang_expand_expr): Likewise for variables `op0', `type', + `mode', `unsignedp', `node' and `elements'. + (expand_byte_code): Likewise for variables `prev_eh_ranges' and + `eh_ranges'. + (process_jvm_instruction): Add a `const' qualifier to a char*. + + * gjavah.c (output_directory): Add the `const' keyword to a char*. + (temp_directory): Likewise. + (print_c_decl): Likewise. + (print_method_info): Likewise. + (decode_signature_piece): Likewise. + (print_mangled_classname): Likewise. + + * java-except.h: Provide prototypes for maybe_start_try, + maybe_end_try and add_handler. + + * java-tree.h (mangled_classname): Add the `const' keyword to a char*. + (parse_error_context): Likewise. Also add ATTRIBUTE_PRINTF_2. + (pushdecl_top_level, alloc_class_constant, unicode_mangling_length, + init_expr_processing, push_super_field, init_class_processing, + can_widen_reference_to, class_depth, verify_jvm_instructions, + maybe_pushlevels, maybe_poplevels, process_jvm_instruction, + set_local_type, merge_type_state, push_type, load_type_state, + add_interface, find_in_current_zip, append_gpp_mangled_classtype, + emit_unicode_mangled_name): Add prototypes. + + * jcf-dump.c (print_constant): Add the `const' keyword to a char*. + (print_signature_type): Use ISDIGIT, not isdigit. + (print_signature): Remove unused variable `j'. + + * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to + int when comparing against one. + + * jcf-parse.c: Include toplev.h. + + * jcf-write.c: Likewise. Don't include or . + (localvar_free): Remove unused variable `i'. + (generate_bytecode_conditional): Likewise for variable `kind'. + + * jv-scan.c: Include config.h and system.h. Remove redundant + OS header and gansidecl.h includes. + (warning): Add the `const' keyword to a char*. Also add + ATTRIBUTE_PRINTF_1 to the prototype. Check ANSI_PROTOTYPES, not + __STDC__, when determining whether to use ANSI-isms. + (fatal): Likewise. Also add ATTRIBUTE_UNUSED. + (xmalloc): Don't redundantly prototype here. + (main): Remove unused parameter `envp'. Also fix the arguments + passed to function `fatal' to match the format specifier. + + * lang.c (java_tree_code_name): Add the `const' keyword to a char*. + + * mangle.c: Include toplev.h. + (emit_unicode_mangled_name): Declare parameter `len'. + + * parse.y (parse_warning_context): Add the `const' keyword to a + char*. Also add ATTRIBUTE_PRINTF_2 to the prototype. Check + `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms. + (issue_warning_error_from_context): Add the `const' keyword to + a char*. + (parse_error_context): Likewise. Also check `ANSI_PROTOTYPES' + not `__STDC__' for whether to use ANSI-isms. + + * typeck.c (incomplete_type_error): Mark parameters `value' and + `type' with ATTRIBUTE_UNUSED. + (parse_signature_type): Use ISDIGIT, not isdigit. + + * verify.c (check_pending_block): Add the `const' keyword to a char*. + (verify_jvm_instructions): Likewise. Remove unused variables + `field_name' and `default_val'. + + * zextract.c: Include config.h and system.h. Remove redundant + OS header includes. + + * zipfile.h: Prototype `read_zip_archive'. + +1999-01-21 Andrew Haley + + * typeck.c (convert): Allow conversions to void type: some + optimizations in gcc do this. + +1999-01-21 Andrew Haley + + * typeck.c (convert_ieee_real_to_integer): New function. + (convert): When not using fast-math and using hardware fp, convert + an IEEE NaN to zero. + +1999-01-18 Andrew Haley + + * parse.y (patch_binop): Do a type conversion from signed to + unsigned and then back to signed when a ">>>" is found. + +1999-01-17 Alexandre Petit-Bianco + + * java-tree.h: (check_for_initialization): Added prototype. + * lex.c (java_parse_doc_section): `\n' breaks the `*/' string. + * parse.y (do_resolve_class): Removed unused locals. + (read_import_dir): Likewise. + (resolve_qualified_expression_name): Array creation + expressions are valid primary expressions. + (qualify_ambiguous_name): Likewise. + (patch_synchronized_statement): Removed unused local. + +1999-01-17 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (zextract.o): Add dependencies. + + * Makefile.in: Do not put ^Ls at the start of a line. + +1999-01-15 Per Bothner + + * expr.c (process_jvm_instruction): Coerce to correct Throwable + sub-type the result of the call that gets the exception value. + + * parse.y (java_complete_expand_methods): If flags_syntax_only, + don't call finish_class. + + * parse.y (java_check_regular_methods): If METHOD_PRIVATE, + clear found before continuing. + + * verify.c (verify_jvm_instructions): On an array load, allow + and handle top of stack to be TYPE_NULL. + + * gjavah.c (generate_access): Translate Java package private or + protected access to C++ public, but with a comment. + +1999-01-13 Andrew Haley + + * expr.c (generate_name): Name prefix changed to avoid clashes + with assembler temp labels. + + * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on + MODIFY_EXPR. Without this, code for the assignment may not be + generated at all and the synchronized statement will read an + uninitialized variable. + +1999-01-13 Alexandre Petit-Bianco + + * class.c (maybe_layout_super_class): Fixed returned value. + * lex.c: Added 1999 to the copyright. + (java_init_lex): Initialize java_lang_imported. + * lex.h: Added 1999 to the copyright. + * parse.h: Added 1999 to the copyright. + (REGISTER_IMPORT): Fixed typo in trailing macro. + (CURRENT_OSB): New macro. + (struct parser_ctxt): New fields osb_depth, osb_limit. + * parse.y (java_lang_id): New global variable. + (type_import_on_demand_declaration): Don't import java.lang.* twice. + (array_creation_expression:): Use CURRENT_OSB. + (dims:): Uses a stack to keep track of array dimensions. + (cast_expression:): Use CURRENT_OSB. + (find_expr_with_wfl): Return NULL if node found doesn't meet the + conditions. + (register_fields): Fixed typos in comment. + (check_method_redefinition): Fixed comment indentation. + (java_check_regular_methods): Set saved found wfl to NULL after + having reinstalled it in the previously found DECL_NAME. + +1999-01-10 Richard Henderson + + * gjavah.c (java_float_finite): Use a union to do type punning. + (java_double_finite): Likewise. + +1999-01-09 Per Bothner + + * parse.y (build_new_array_init): Don't set EXPR_WFL_LINECOL + on CONSTRUCTOR (since that trashes TREE_CST_RTL). + (patch_new_array_init): Clear TREE_CONSTANT also if INDIRECT_REF. + (register_fields): Set TREE_STATIC on NEW_ARRAY_INIT, not on + CONSTRUCTOR (which causes expand_expr to call output_constant_def). + * expr.c (java_lang_expand_expr): Check TREE_STATIC of NEW_ARRAY_INIT. + +1999-01-08 Per Bothner + + * check-init.c (check_init): If compiling to native, we don't + see THROW_EXPR. Instead, look for a call to throw_node (_Jv_Throw). + +1999-01-08 Tom Tromey + + * parse-scan.y (variable_declarator_id): Set or increment + bracket_count. + (bracket_count): New global. + (formal_parameter): Handle case where bracket pairs trail variable + declarator id. + +1999-01-07 Andrew Haley + + * jcf-parse.c (yyparse): variable len changed from a char to an + int to prevent overflow. + +1999-01-06 Per Bothner + + * java-tree.h: Declare read_class. + * jcf-parse.c (read_class): New function. + (load_class): Now just call read_class. + + * java-tree.h (java_parse_abort_on_error): Only return if new errors. + * jcf-parse.c (parse_source_file): Declare save_error_count, + which is needed by java_parse_abort_on_error macro, + * parse.y (java_layout_classes, java_expand_classes): Likewise. + + * parse.y (register_fields): Set TREE_STATIC flag of NEW_ARRAY_INIT + constructor, if initializing a static field. + (patch_new_array_init): Set TREE_CONSTANT if it is. + * expr.c (java_lang_expand_expr): For a static array constructor + of primitive elements, allocate the array itself statically. + Disabled until we can set the vtable field statically. + + * check-init.c: New file. Checks for definite assignment. + * Makefile.in (JAVA_OBJS): Add check-init.o. + * parse.y (java_complete_expand_method): Call check_for_initialization. + * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY): Moved to java-tree.h. + +1999-01-06 Graham + + * parse.y : include system.h instead of including + standard headers directly with the exception of . + +1999-01-06 Per Bothner + + * lex.h: Moved static function declarations to lex.c, + to shut up some -Wall warnings. + * lex.c: Static function declarations moved here. + * jcf-dump.c: Small fixes to shut up -Wall warnings. + +1999-01-05 Kaveh R. Ghazi + + * Make-lang.in ($(GCJ).o): Depend on prefix.h. + +1998-12-22 Per Bothner + + * expr.c (process_jvm_instruction): Do load_type_state after JSR. + * verify.c (verify_jvm_instructions): Fix off-by-one error. + + * jcf-write.c (CHECK_PUT): Add (void) cast to avoid -Wall warnings. + (localvar_alloc): Change return type to void, + (emit_unop): Remove unused variable size. + + * jcf-write.c (struct jcf_block): Add new union. + (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC): New macros. + (call_cleanups): New functions. + (struct jcf_partial): New fields num_finalizers and return_value_decl. + (generate_bytecode_insns): Support CLEANUP_POINT_EXPR and + WITH_CLEANUP_EXPR. Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR. + * lang.c (lang_init): Call using_eh_for_cleanups. + * parse.y (java_complete_lhs): For SYNCHRONIZED_EXPR, defer + completing operands to patch_synchronized_statement. + Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR. + (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and + WITH_CLEANUP_EXPR instead of TRY_EXPR. + +1998-12-20 John F. Carr + + * Make-lang.in: Comment out control-Ls; they upset some makes. + +1998-12-18 Tom Tromey + + * parse.y (check_class_interface_creation): Use DIR_SEPARATOR + consistently. + +1998-12-17 Tom Tromey + + * parse.y (DIR_SEPARATOR): New define. + (check_class_interface_creation): Use it. + + * parse-scan.y (report_main_declaration): Recognize + `java.lang.String' in argument to main. + +1998-12-16 Per Bothner + + * parse.y (create_interface): Remove bogus test. + +1998-12-16 Per Bothner + + * jcf-parse.c (get_constant): Set TREE_TYPE for string constants. + (HANDLE_CONSTANTVALUE): If flag_emit_class_files, call get_constant. + +1998-12-16 Tom Tromey + + * parse-scan.y (qualified_name): Use correct sprintf format. + +1998-12-15 Tom Tromey + + * gjavah.c (print_field_info): Changed how most negative number is + printed. + +1998-12-14 Per Bothner + + * parse.y (fold_constant_for_init): New function. + (resolve_expression_name): Don't replace static final + constant-initialized fields by its value. + (java_complete_lhs): New. Same as java_complete_tree, except does + not replace static final constant-initialized fields by their values. + (register_fields): If there is an initializer, set DECL_INITIAL and + MODIFY_EXPR_FROM_INITIALIZATION_P. + (java_complete_tree): For MODIFY_EXPR, use java_complete_lhs for lhs. + Only call patch_initialized_static_field if + MODIFY_EXPR_FROM_INITIALIZATION_P. + (patch_initialized_static_field): If not valid constant, clear + DECL_INITIAL. + + * parse.y (lookup_field_wrapper): Fix thinko. + + * parse.y (java_complete_tree): In EXPR_WITH_FILE_LOCATION, + set and restore global lineno. + +1998-12-14 Tom Tromey + + * gjavah.c (print_field_info): If value to print is the smallest + value of its size, then print as hex to avoid later warnings from + C++ compiler. + +1998-12-14 Tom Tromey + + * gjavah.c (decompile_method): Decompile `return null'. + (process_file): Generate `#pragma interface'. + (method_declared): New global. + (print_method_info): Set it. + (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set. + (print_method_info): Handle abstract methods. + +1998-12-13 Per Bothner + + * parse.y (patch_method_invocation): If class_decl is null + (e.g. an array type), use original type. + + * parse.y (check_thrown_exceptions): Temporary hack to suppress + errors about uncaught exception from clone (of array, specifically). + +1998-12-13 Tom Tromey + + * gjavah.c (decompile_method): Handle all types of `return' + opcode. Decompile `return this' and `return'. + (method_access): New global. + (print_method_info): Set it. + (decompile_method): Don't decompile a synchronized method. + +1998-12-13 Tom Tromey + + * jcf-reader.c (jcf_parse_one_method): Recognize + HANDLE_END_METHOD. + * gjavah.c (HANDLE_END_METHOD): New macro. + (HANDLE_CODE_ATTRIBUTE): New macro. + (decompile_method): New function. + (print_method_info): Don't print `;\n' at end of function decl. + Include java-opcodes.h. + (decompiled): New global. + +1998-12-12 Per Bothner + + * class.c (build_class_ref): Handle PRIMTYPE.class if + flag_emit_class_files. + * expr.c (expand_java_field_op): Don't optimize java.lang.XXX.TYPE + if flag_emit_class_files. + * parse.y (java_complete_tree): Pre-liminary support for + COMPONENT_REF - only to handle PRIMCLASS.TYPE. + + * parse.y (patch_synchronized_statement): Don't call monitorexit + unless block CAN_COMPLETE_NORMALLY. Propagate that flag properly. + + * java-tree.h (DECL_LOCAL_STATIC_VALUE): Removed - no longer used. + + * zipfile.h (opendir_in_zip): New declaration. + * jcf-io.c (saw_java_source): Moved to jcf-parse.c. + (opendir_in_zip): New function, using code from open_in_zip. + (open_in_zip): Call opendir_in_zip. + (find_class): Remove no-longer-used do_class_file parameter, + but add source_ok parameter. Change logic so if we find a .java file, + we don't look for .class in later classpath emtries. + * jcf-parse.c (load_class): Pass saw_java_source to find_class. + (jcf_figure_file_type): Only call open_in_zip if correct magic number. + * gjavah.c: Update call to find_class. + * jcf-dump.c: Likewise. + + * jcf-write.c (put_linenumber): Handle duplicate line numbers. + (generate_bytecode_insns): For EXPR_WITH_FILE_LOCATION, do + nothing if body is empty_stmt_node. + Various little fixes so SP gets correctly adjusted. + For NEW_ARRAY_INIT, handle IGNORE_TARGET. + For CALL_EXPR, test if static first. + (generate_classfile): Ignore fields that are DECL_ARTIFICIAL, + such as the ones we create for Object and Class. + Set and restore current_function_decl. + * parse.y: Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir. + (note_possible_classname): New function. + (read_import_entry): Removed. Merged with read_import_dir. + (read_import_dir): Don't call find_class - that only gives us + the first classpath entry having the needed package. + Use the struct buffer data structure from buffer.h. + (read_import_dir, find_in_imports_on_demand): The remembered + class names now use '.' (not '/') as package separator. + + * parse.y (java_complete_expand_methods): Call write_classfile + here, and not in java_expand_classes (which only gets first class). + +1998-12-12 Alexandre Petit-Bianco + + * parse.y (): Do maybe_generate_clinit last. + (register_fields): If a static fields has an initializer, just + chain it on ctxp->static_initialized, and handle later. + (java_complete_expand_methods): Force first. + (resolve_expression_name, resolve_field_access): Just get DECL_INITIAL + - it's already been completed. + (patch_initialized_static_field): New function. + (java_complete_field): Call it. + +1998-12-12 Per Bothner + + * expr.c (encode_newarray_type, build_new_array): New functions. + * java-tree.h: Declare build_new_array. + * jcf-write.c (patch_newarray): Use build_new_array. + + * expr.c (java_lang_expand_exp): Support NEW_ARRAY_INIT. + * jcf-write.c (generate_bytecode_insns): Support NEW_ARRAY_INIT. + + * parse.y (patch_new_array_init): Re-organize. + Now is passed the actual array (pointer) type of the value. + Set the type of the CONSTRUCTOR to be an ARRAY_TYPE. + (patch_array_constructor): Removed - merged into patch_new_array_init. + (java_complete_tree): Update patch_new_array_init. + + * jcf-write.c (find_constant_index): New function. + (generate_bytecode_insns): Use find_constant_index. + (generate_classfile): Use find_constant_index for ConstantValue. + +1998-12-11 Tom Tromey + + * expr.c (invoke_build_dtable): Renamed dtable -> vtable. + * decl.c (init_decl_processing): Renamed dtable -> vtable. + * class.c (make_class_data): Renamed dtable -> vtable, and + dtable_method_count -> vtable_method_count. + +1998-12-10 Alexandre Petit-Bianco + + * decl.c (long_zero_node, float_zero_node, double_zero_node): New + global variables, initialized. + * java-tree.h (long_zero_node, float_zero_node, double_zero_node): + Declared new global variables. + * lex.c (java_lex): Return long_zero_node, float_zero_node, + double_zero_node, integer_zero_node upon direct matching. + * parse.y (purify_type_name): Added function prototype. + (duplicate_declaration_error_p): Consider new_type as potentially + being a incomplete type. Use purify_type_name on type string. + (method_header): saved_type: unused variable removed. Don't figure + return type if method name is invalid. + (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was + processed by patch_unaryop. + (patch_unaryop): Fixed typo in comment. Re-convert pre/post + increment/decrement node into its original type after binary + numeric promotion on its operands. + +1998-12-10 Alexandre Petit-Bianco + + * parse.y (array_initializer:): Array init operand is NULL_TREE + instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is + now an error. Fixed indentation problems. + (patch_string): Handle error_mark_node as an argument. + (patch_new_array_init): Fixed indentation problems. + (array_constructor_check_entry): Removed check on null wfl_value. + Return an error if wfl_value's walk returns an error. + +1998-12-09 Alexandre Petit-Bianco + + * java-tree.def (NEW_ARRAY_INIT): New Java tree code. + * lex.c (java_lex): Remember column position before advancing one + token. Retain location information on OCB_TK. + * lex.h (typedef struct java_lc): Added new field. + * parse.h (GET_SKIP_TYPE): New macro. + (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE. + * parse.y (build_new_array_init, patch_new_array_init, + patch_array_constructor, maybe_build_array_element_wfl, + array_constructor_check_entry): New function prototypes. + (switch_block:): Tagged . + (OCB_TK): Tagged . + (array_initializer:): Installed actions. + (variable_initializer): Build location information on element if + necessary. + (switch_statement:): Fixed indentation typo. + (switch_block:): Redefined default action. + (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:. + (patch_assignment): Removed duplicate code. + (maybe_build_array_element_wfl, build_new_array_init, + patch_new_array_init, patch_array_constructor, + array_constructor_check_entry): New functions. + +1998-12-07 Alexandre Petit-Bianco + + * parse.y (array_initializer): Tagged . + (variable_initializer:): Use default rule. + (array_initializer:): Defined actions. + (variable_initializers:): Likewise. + (resolve_qualified_expression_name): Use DECL_CONTEXT to build + non-static field accesses. + (patch_invoke): Fixed indentation typo. + (java_complete_tree): Likewise. + (build_labeled_block): Changed leading comment. Generate an error + in case of duplicate loop labels. + (patch_conditional_expr): Patch results of string concatenation + operations. + +1998-12-06 Per Bothner + + * constants.c (find_methodref_index): When the class is an interface, + generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef. + + * decl.c (finit_identifier_node): Use "$finit$", rather than + "" (which Sun's verifier rejects). + * parse.y (maybe_generate_finit): Leave out meaningless final flag. + (generate_field_initialization_code): Removed. + (fix_constructors) Don't add call to $finit$ here (wrong order). + (patch_method_invocation): Add $finit$ call here. + + * java-tree.h (CALL_USING_SUPER): New macro. + * parse.y (patch_invoke): Remove im local variable. + (patch_method_invocation, patch_invoke): Don't pass super parameter. + (patch_invoke): Use CALL_USING_SUPER instead of from_super parameter. + (resolve_qualified_expression_name): Maybe set CALL_USING_SUPER. + + * jcf-write.c (get_access_flags): Fix typo ACC_PUBLIC -> ACC_FINAL. + + * parse.y (java_complete_tree): Don't complain about unreachable + statement if it is empty_stmt_node. + + * jcf-write.c (find_constant_wide): New function. + (push_long_const): Use find_constant_wide. + + * jcf-write.c (generate_bytecode_insn): Fix bug in switch handling. + (generate_bytecode_insn): Use correct dup variant for MODIFY_EXPR. + Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set. + Emit invokeinterface when calling an interface method. + Emit invokespecial also when calling super or private methods. + + * jcf-write.c (generate_classfile): Emit ConstantValue attributes. + +1998-12-06 Per Bothner + + * jcf-dump.c (INVOKE): If invokeinterface, print number of args. + +1998-12-03 Alexandre Petit-Bianco + + * java-tree.h (java_layout_seen_class_methods): New function + prototype. + (LAYOUT_SEEN_CLASS_METHODS): Macro removed. + * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods. + * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro. + * parse.y (method_declarator:): Defined action. + (issue_warning_error_from_context): input_filename saved, set to + the appropriate value and restored after java_error is called. + (build_unresolved_array_type): Fixed comment. + (register_fields): Use PROMOTE_RECORD_IF_COMPLETE. + (method_header): Deal with return type the same way type are + handled for fields and method's parameters and local variables + types are handled. + (check_method_redefinition): Removed extra CR. + (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE. + (java_layout_seen_class_methods): New function. + (java_layout_classes): Call java_layout_seen_class_methods. + +1998-12-03 Per Bothner + + * parse,y (patch_synchronized_statement): Set CAN_COMPLETE_NORMALLY. + +1998-12-03 Per Bothner + + * jcf-dump.c (main): Fix error message. + * jcf-path.c (add_entry): Style fix. + +1998-12-02 Alexandre Petit-Bianco + + * class.c (layout_class_method): Call build_java_argument_signature + on constructors too. + * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE. + (patch_method_invocation): Define a primary when resolving an + expression name. Augmented comment on code checking illegal `this' + usage. Loosened it test by accepting NEW_CLASS_EXPR. + +1998-12-01 Alexandre Petit-Bianco + + * class.c (layout_class_method): Don't report error on non-static + overriding static if the method is private. + * java-tree.h (finish_class): Prototype added. + * lex.c (java_get_line_col): Handle col argument -2 value. + * parse.h: All static method declarations moved to parse.y. + * parse.y: Now contains all static method declarations previously + found in parse.h. + (find_expr_with_wfl, missing_return_error, + unreachable_stmt_error): New functions. + (java_get_real_method_name): Identify constructors bearing class + names in source code compiled classes only. + (java_complete_expand_methods): Call missing_return_error. + (invocation_mode): Private methods invoked as static methods. + (java_complete_tree): Call unreachable_stmt_error. + +1998-12-01 Tom Tromey + + * Makefile.in (+target): Removed. + (+xmake_file): Likewise. + (+tmake_file): Likewise. + (.NOEXPORT): Removed duplicate. + +1998-11-27 Kaveh R. Ghazi + + * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK). + + * jv-scan.c: Fix xmalloc prototype. Provide an xmalloc definition. + + * jvgenmain.c: Remove the xmalloc prototype, we get it from + libiberty.h. Provide an xmalloc definition. + + * jvspec.c: Remove the xmalloc prototype. + + * parse-scan.y: Include config.h and system.h. Don't include + OS headers or gansidecl.h. Don't prototype xmalloc/xstrdup. + Provide an xstrdup definition. + +1998-11-26 Alexandre Oliva + + * jcf-path.c (add_entry): Recognize ".jar" too. + * lang-specs.h: Likewise. + +1998-11-26 Per Bothner + + * jcf-write.c (generate_bytecode_insns): In Call_EXPR, handle + soft_monitorenter_node, soft_monitorexit_node, throw_node. + + * jcf-write.c (generate_bytecode_insns): + Handle pre/post-increment/decrement of long. + + * jcf-write.c (generate_bytecode_insns): + Handle missing exception handler (finally for synchronized). + +1998-11-25 Per Bothner + + * java-tree.h (end_params_node): Declare global. + * decl.c (end_params_node): New global. + (init_decl_processing, start_java_method): Use end_params_node for + end of list of parameter types. Follows correct gcc conventions. + * expr.c (pop_argument_types, pop_arguments): Likewise. + * lang.c (put_decl_node): Likewise. + * typeck.c (various places): Likewise. + * class.y (various places): Likewise. + * parse.y (various places): Likewise. + + * parse.y (java_complete_tree): Move CAN_COMPLETE_NORMALLY. + (build_jump_to_finally): Add missing CAN_COMPLETE_NORMALLY. + + * class.c: Add #include flags.h, remove no-longer needed declaration. + + * class.c (layout_class_method): Remove commented-out code, re-format. + Don't add vtable entry (or index) for private methods. + * expr.c (expand_invoke): A private method is implicitly final. + * class.c (make_class_data): If inlining or optimizing, + skip private methods. + + * class.c (finish_class): New function. Calls existing methods, + but alls emits deferred inline functions. + * jcf-parse.c (parse_class_file): Call finish_class. + * parse.y (java_complete_expand_methods): Likewise. + + * expr.c (build_java_binop): Explicit default, to silence -Wall. + + * expr.c (CHECK_PC_IN_RANGE): Add void cast to kill warnings. + +1998-11-25 Marc Espie + + * jcf-write.c (generate_bytecode_conditional): Fix typo. + +1998-11-24 Per Bothner + + * (generate_classfile): Always write class access flag with + ACC_SUPER set. + +1998-11-24 Alexandre Petit-Bianco + + * class.c (maybe_layout_super_class): New function. + (layout_class): Reorganized. Loop on class methods dispatched into + a new function. Call maybe_layout_super_class. + (layout_class_methods, layout_class_method): New functions. + * expr.c (expand_java_NEW): Call layout_class_methods on loaded + class. + (expand_invoke): Likewise. + * java-tree.h (all_class_list): New global variable declared. + (layout_class_methods, layout_class_method): New function + prototypes. + (LAYOUT_SEEN_CLASS_METHODS): New macro. + * jcf-parse.c (all_class_list): New global variable. + (load_class): Extended what class_or_name can be. Use parser + context mechanism to save globals before calling jcf_parse. + (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P + is set on the file name. + (jcf_parse): Layout class methods when Object is loaded, otherwise + record class in all_class_list for delayed method layout. + (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS. + * lang.c (put_decl_node): Decode into the decl context + class name. + * lex.c (java_allocate_new_line): Use xmalloc. + * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete + pointers, not TREE_LIST elements. + (struct parser_ctxt): Fixed comment indentations, added comments + and reordered some fields. + (java_check_methods): Function prototype removed. + * parse.y (java_push_parser_context): Use xmalloc. + (java_parser_context_restore_global): Pop extra pushed ctxp only + when there's nothing next. + (maybe_create_class_interface_decl): Fixed comment, add new + created class decl to all_class_list. + (method_header): Use GET_REAL_TYPE on argument's types. + (method_declarator): Use GET_REAL_TYPE, change type to the real + type in TREE_LIST dependency node. Build argument list with the + real type. + (create_jdep_list): Use xmalloc. Removed allocation error message. + (obtain_incomplete_type): Fixed leading comment. Broadened + incoming argument meaning. + (register_incomplete_type): Use xmalloc. Removed allocation error + message. + (safe_layout_class): Fixed leading comment. + (jdep_resolve_class): Reversed if statement condition and switch + if and else bodies. + (resolve_and_layout): Fixed leading comment. Broadened incoming + argument meaning. + (complete_class_report_errors): New local variable name, for + clarity. purify_type_name used for all error cases. + (java_get_real_method_name): Stricter check on constructors. + (java_check_regular_methods): Reverse methods list only if not + already laid out. Layout artificial constructor. + (java_check_methods): Deleted. + (source_start_java_method): Obtain incomplete type for patchable + method arguments. + (java_layout_classes): Fixed leading comment. Use + LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else + statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS + before returning. Fixed comments. + (java_expand_classes): Check for errors up front. + (patch_method_invocation): Class to search is resolved and laid + out. + +1998-11-24 Per Bothner + + * expr.c (java_lang_expand_expr): Add missing emit_queue. + + * javaop.h (int8): Removed - not used. + (jbyte): Redefine portably with correct signedness. + + * jcf-write.c (generate_bytecode_insns): Don't free sw_state.cases. + + * jcf-write.c (generate_bytecode_insns): Fix typo + OPCODE_getstatic to OPCODE_getfield. + + * java-tree.def (CASE_EXPR, DEFAULT_EXPR): Kind is 'x', not '1'. + * parse.y (java_complete_tree): For CASE_EXPR and DEFAULT_EXPR, + set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them). + +1998-11-19 Alexandre Petit-Bianco + + * jcf-parse.c (jcf_parse_source): Function returned type is + void. Added prototype. + (jcf_parse): Function returned type is void. + (yyparse): Remove call to fclose on the last parsed file. + + * java-tree.h (jcf_parse): Changed jcf_parse prototype. + +1998-11-18 Alexandre Petit-Bianco + + * class.c (unmangle_classname): Set QUALIFIED_P when appropriate. + (layout_class): Cope with methods featuring WFL in decl names. + * decl.c (unqualified_object_id_node): New global variable, + initialized. + (build_decl_no_layout): Removed. + * expr.c (build_primtype_type_ref): Handle Double. + (java_lang_expand_expr): Fixed indentations. + * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted. + (flag_wall, flag_redundant, flag_not_overriding, + flag_static_local_jdk1_1, unqualified_object_id_node): Global + variable declarations. + (build_decl_no_layout): Removed prototype. + (java_get_real_method_name): Added prototype. + (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P. + (java_parse_abort_on_error): Macro now just returns. + * jcf-parse.c (jcf_parse_source): Check fclose returned + value. Call emit_register_classes if java_report_errors returns + zero. + * lanc.c (flag_wall, flag_redundant, flag_not_overriding, + flag_static_local_jdk1_1): New integer flags. + (lang_decode_option): New flags set here. + * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros. + (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to + the flag_redundant variable. + (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object + when parsing java.lang.Object class. + (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal + NULL_TREE to build. + (resolve_qualified_expression_name): Fixed indentation. + (patch_array_ref): Changed prototype. + (not_initialized_as_it_should_p): Prototype removed. + (java_report_errors): Added function prototype. + * parse.y (formal_parameter:): Changed error message for not yet + supported final parameters. + (class_type_list:): Set both PURPOSE and VALUE of created + TREE_LIST to be class_type. + (primary_no_new_array:): Handle class literals on primitive types. + (parse_warning_context): Reinstalled correct force_error and + do_warning flags setups. + (java_report_errors): Changed prototype. Return java_error_count + value. + (variable_redefinition_error): Consider treating variable type as + a fake pointer. + (create_interface): Warn about redundant abstract modifier if + flag_redundant is set. Changed error message. + (lookup_field_wrapper): Save/restore globals before/after looking + up field. + (duplicate_declaration_error_p): Consider treating declaration + type as a fake pointer. + (register_fields): Extract real type from dependency node. Check + for duplicate field declaration after type adjustment. Use + DECL_INITIAL to store static final initialized values. + (method_header): Extract real function type from dependency node. + (check_abstract_method_header): Use GET_METHOD_NAME. + (obtain_incomplete_type): Layout fake pointer type. + (safe_layout_class): Don't try to check for methods before layout. + (java_complete_class): Don't check for correct throws clause + elements inheritance here. + (resolve_and_layout): Broadened name parameter meaning. + (reset_method_name): Use GET_METHOD_NAME. + (java_get_real_method_name): New function. + (java_check_regular_methods): Don't check methods in + java.lang.Object. Verify lineage of throws clause elements. Use + flag_no_overriding in warning report. + (check_throws_clauses): Don't check if class was from + bytecode. Use IS_UNCHECKED_EXCEPTION_P macro. + (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag. + (declare_local_variables): Use flag_static_local_jdk1_1 to report + warning on unsupported final local variables. Use build_decl + instead of build_decl_no_layout. Get real local variable type from + dependency node. + (source_start_java_method): Get real parameter type from + dependency node. Call build_decl instead of build_decl_no_layout. + (java_layout_classes): Reverse tree and layout type and class as + required. Mark class as loaded when done. + (resolve_field_access): Fixed indentation. Restricted condition + leading to static field access code generation. Set field_type + decl's TREE_TYPE if QUAL_DECL_TYPE not available. + (resolve_qualified_expression_name): Initialize type_found to + null. Handle static field resolved during qualification. Fixed + layout on non primitive field decl types. + (not_accessible_p): Fixed typo in comment. + (patch_method_invocation): Resolve and layout class to search from + type. + (lookup_method_invoke): Keep integer constant 0 as is. Resolve and + layout non primitive type, if necessary. Make method node only to + report errors. + (find_applicable_accessible_methods_list): Consider WFL'ed method + decl names. Fixed indentation. + (argument_types_convertible): Resolve and layout target type if + necessary. + (java_complete_tree): Fixed indentation problems. Rewrote + CALL_EXPR thrown exceptions check. Re-installed further processing + of the assignment in certain cases. + (patch_assignment): Call maybe_build_primttype_type_ref to perform + inlining on class literals. + (valid_builtin_assignconv_identity_widening_p): Cope with constant + 0 literal. + (valid_method_invocation_conversion_p): Likewise. + (patch_string): Temporary disable forbidden use of `this' in + explicit constructor invocations when doing string concatenation + within their scope. + (patch_unaryop): Added comment. Reinstalled code to disable + further check on assignment operation with cast expression RHS. + (patch_switch_statement): Fixed indentation. + (build_try_statement): Call build_decl instead of + build_decl_no_layout. + (patch_synchronized_statement): Likewise. + (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of + IS_UNCHECKED_EXPRESSION_P. + (check_thrown_exceptions_do): Changed leading comment. Resolve and + layout argument exception type. + (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead + of IS_UNCHECKED_EXPRESSION_P. + +1998-11-18 Anthony Green + + * jcf-parse.c (yyparse): Open class file in binary mode. + +1998-11-15 Per Bothner + + * jvgenmain.c: Need to #include "gansidecl.h" (to get PROTO). + + * jcf-write.c (perform_relocations): Move check out one loop. + +1998-11-15 Anthony Green + + * Make-lang.in: Fix reference to srcdir. + * jv-scan.c: Add missing xmalloc prototype. + * jvgenmain.c: Ditto. + +1998-11-15 Per Bothner + + * decl.c (error_mark_node), java-tree.h: New global. + * parse.y: Use empty_stmt_node instead of size_zero_node. + (build_if_else_statement): If missing else, use empty_stmt_node. + + * parse.y (not_initialized_as_it_should_p): Removed, with its callers. + (java_complete_expand_method): Complain if return is missing. + (java_check_regular_methods): Comment out incorrect error check. + (not_accessible_p): Fix incorrect handling of protected methods. + (patch_method_invocation): Pass correct context to not_accessible_p. + (find_applicable_accessible_methods_list): Likewise. + (qualify_ambiguous_name): If ARRAY_REF, it's an expression name. + (java_complete_tree): For CASE_EXPR and DEFAULT_EXPR, set + TREE_TYPE (to void_type_node); otherwise expand_expr crashes. + (patch_if_else_statement): Fix setting of CAN_COMPLETE_NORMALLY. + + * jcf-write.c (CHECK_OP, CHECK_PUT): Add some error checking. + (push_int_const): Remove reundant NOTE_PUSH. + (generate_bytecode_insns - case STRING_CST): Do NOTE_PUSH. + (- case SWITCH_EXPR): Fix code generation bug. + (- case PREDECREMENT_EXPR etc): Remove redundant NOTE_PUSH. + (generate_classfile): More robust for abstract methods. + +1998-11-15 Anthony Green + + * Makefile.in: jv-scan and jvgenmain all require libiberty. + * Make-lang.in: Ditto. + + * jv-scan.c: Remove xmalloc and xstrdup definitions. + * jvgenmain: Ditto. + +1998-11-15 Per Bothner + + * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): New macro. + + * jcf-io.c (find_class): Simpler/cleaner structure fixes a bug. + +1998-11-14 Per Bothner + + Allow uses of interface types to verify. This is not really + type-safe, but it matches what Sun does, and is OK as long as + there are appropriate run-time checks. + * verify.c (merge_types): If merging two interface types, + just set the result to java.lang.Object. + * expr.c (pop_type): Any interface is matches by java.lang.Object. + +1998-11-13 Tom Tromey + + * gjavah.c (main): Handle --output-class-directory argument. + * jvspec.c (lang_specific_driver): Translate `-d' into + -foutput-class-dir. + * jcf.h (jcf_write_base_directory): Declare. + * lang.c (lang_decode_option): Recognize -foutput-class-dir. + * lang-options.h: Mention -foutput-class-dir. + * jcf-write.c (jcf_write_base_directory): New global. + (make_class_file_name): Put generated .class file into `-d' + directory, or into source directory if -d not given. Function now + static. + (write_classfile): Free class file name. Handle case where class + file name is NULL. + (DIR_SEPARATOR): New macro. + Include + + * Makefile.in (prefix): New macro. + +1998-11-12 Per Bothner + + * parse.y (patch_invoke): Do less if flag_emit_class_files. + * expr.c (build_known_method_ref): Don't check flag_emit_class_files + here (done in patch_invoke instead). + (case_identity): Moved here from parse.y. + + * java-tree.h (CAN_COMPLETE_NORMALLY): New macro. + * parse.y (java_complete_tree etc): Maybe set CAN_COMPLETE_NORMALLY. + * parse.y (java_complete_tree): Re-order COMPOUND_EXPR in BLOCK + so they can be efficiently scanned without recursion. + Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR. + * expr.c (java_lang_expand_expr): Expand statements of COMPOUND_EXPR + in BLOCK iteratively, rather than recursively. + + * parse.y (do_unary_numeric_promotion): New function. + (patch_unaryop, patch_binop, patch_array_ref): Use it. + + * parse.y (patch_newarray): Various fixes. + + Re-do handling of switch statements (for proper block scoping). + * parse.y: Add just a single block for the enture switch block, + but don't create any "case blocks". + (group_of_labels): Rmeoved unneeded non-terminal. + CASE_EXPR and DEFAULT_EXPR are added to current block. + * expr.c (java_lang_expand_expr): Inline SWITCH_EXPR here. + Now also need to handle CASE_EXPR and DEFAULT_EXPR. + * java-tree.h (SWITCH_HAS_DEFAULT): New macro. + * parse.y (wfl_operator, print_int_node): Make non-static. + (java_complete_tree): CASE_EXPR and DEFAULT_EXPR are now processed + as part of recursive scan of block. + (java_expand_switch ): Removed - inlined into java_lang_expand_expr. + (patch_switch_statement): Most tests move dinto java_complete_tree. + + * parse.y: Make various production be non-typed (void). + * parse.y (parse_error): Merged into issue_warning_error_from_context. + * parse.y (add_stmt_to_compound): Don't create/change extra node. + (patch_method_invocation_stmt): Renamed to patch_method_invocation. + + * jcf-write.c (struct jcf_handler): New type. + (struct jcf_switch_state): New type. + (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC): New relocation kinds. + (alloc_handler, emit_unop, emit_reloc): New functions. + (adjust_typed_op): Add extra parameter ("max type" offset). + (emit_switch_reloc, emit_case-reloc): New function. + (generate_bytecode_conditional): Handle REAL_TYPE comparisons. + (generate_bytecode_insns): Support REAL_CST, switch statements, + exception handling, method calls, object/array creation, and more. + + * class.c: Remove some unused variables. + * constants.c (find_string_constant): New function. + (count_constant_pool_bytes): Fix to correctly handle wide constants. + * decl.c (complete_start_java_method): Don't _Jv_InitClass + if flag_emit_class_files. + +1998-11-12 Tom Tromey + + * jcf-io.c (find_class): Added explanatory comment. + + * jcf-path.c (add_entry): Look for `.zip' at end of filename. Add + trailing slash to `.zip' entries. + + * jvspec.c (lang_specific_driver): Correctly handle case where + GC_NAME not defined. + +1998-11-11 Tom Tromey + + * jvspec.c (GC_NAME): New define. + (lang_specific_driver): Use GC_NAME. Add GC_NAME to command line + if required. + * Make-lang.in (jvspec.o): Define WITH_GC_. + +1998-11-11 Per Bothner + + * jcf-dump.c (TABLE_SWITCH): Fix typos. + +1998-11-11 Tom Tromey + + * jcf-dump.c (main): Correctly recognize `--'-style long options. + +1998-11-10 Alexandre Petit-Bianco + + * class.c (is_compiled_class): Call safe_layout_class for class + compiled from source. + * conver.h (convert_to_integer, convert_to_real, + convert_to_pointer): Added prototypes. + * decl.c (init_decl_processing): Non longer push the decls of + `methodtable', `constants', `Class', `Field', `dispatchTable' + `jexception' and `Method'. + * expr.c (build_invokeinterface): New function. + (expand_invoke): static variable CLASS_IDENT now in + build_invokeinterface. Use build_invokeinterface. + (expand_java_field_op): Moved code to inline + java.lang.PRIMTYPE.TYPE into a function. + (build_primtype_type_ref): New function. + * java-tree.def (INSTANCEOF_EXPR): New tree code. + * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED, + FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros. + (DECL_CONSTRUCTOR_P): Fixed typo in comment. + (DECL_LOCAL_STATIC_VALUE): New macro. + (build_invokeinterface, build_primtype_type_ref): New function + prototypes. + (java_parse_abort_on_error): Macro rewritten. + * jcf-parse.c (current_method): Add comment to declaration. + (parse_zip_file_entries, process_zip_dir, void parse_source_file): + Function prototypes fixed. + (jcf_parse_source): push/pop parser context. save/restore global. + (parse_source_file): Fixed leading comment. Now take a + IDENTIFIER_NODE as an argument. Doesn't check methods, layout + classes and pop the parser context anymore. + (yyparse): Push parser context, save globals, parse the source + file, restore globals and pop the parser context when processing a + source file. + * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define. + * lex.c (java_parse_doc_section): New function. + (java_lex): Call java_parse_doc_section when appropriate. Build an + operator around INSTANCEOF_TK. + * lex.h (java_lineterminator, java_sprint_unicode, + java_unicode_2_utf8, java_lex_error, java_store_unicode): + Prototypes rewritten. + (java_parse_escape_sequence, java_letter_or_digit_p, + java_parse_doc_section, java_parse_end_comment, java_get_unicode, + java_read_unicode, java_store_unicode, java_read_char, + java_allocate_new_line, java_unget_unicode, java_sneak_unicode): + Added function prototypes. + * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG + define. + (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT): + New macros + (struct parser_ctxt): New fields: deprecated, + current_parsed_class_un, gclass_list. + (fix_method_argument_names, issue_warning_error_from_context, + resolve_package, lookup_package_type): New function prototypes. + (resolve_expression_name): Fixed function prototype. + (find_applicable_accessible_methods_list): Fixed indentation, added + extra argument in prototype. + (check_final_assignment, build_null_of_type, check_deprecation, + check_method_redefinition, reset_method_name, + java_check_regular_methods, java_check_abstract_methods, + maybe_build_primttype_type_ref): New function prototype. + * parse.y (conver.h): Include. + (INSTANCEOF_TK): Tagged . + (single_type_import_declaration): Use REGISTER_IMPORT macro. + (relational_expression:): Build binop for instanceof. + (java_push_parser_context): Remember ctxp->gclass_list across + contexts. + (java_pop_parser_context): Simply return if no context + exists. Remember gclass_list across contexts. + (issue_warning_error_from_context): New function. + (parse_error_context): Don't setup ctxp->elc here. Call + issue_warning_error_from_context instead. + (parse_warning_context): Likewise. + (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL + setup. Link new class/interface to ctxp->gclass_list. + (add_superinterfaces): Register interface as incomplete if not + loaded. + (create_class): Remember class unqualified name in + ctxp->current_parsed_class_un. Check class deprecation. + (register_fields): Check field deprecation. Remember static final + field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part + processing INIT. + (method_header): New local variable ORIG_ARG. Use unqualified + current class name for check on constructor errors. Promote return + type if of record type. Argument list fix moved in + fix_method_argument_names, called here. Check method deprecation. + (fix_method_argument_names): New function. + (method_declarator): Promote record typed arguments. + (safe_layout_class): Check class methods before layout. + (java_complete_class): Compute field layout when patched. + (do_resolve_class): Try to load class after having it renamed + after the package name. + (get_printable_method_name): Use DECL_CONTEXT. + (reset_method_name): New function. + (check_method_redefinition): Use reset_method_name. + (java_check_regular_methods): New local variable + SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method + names for error report. Check for compile-time error when method + found has default (package) access. + (java_check_abstract_methods): Now takes an interface DECL node as + an argument. Also reinstall real name on unchecked + overriding/hiding methods for error report. + (java_check_methods): Fixed leading comment. Get classes to verify + from ctxp->gclass_list. Use CHECK_METHODS macro and set + CLASS_METHOD_CHECKED_P on class verification. + (lookup_java_method2): Get real method name if necessary. + (find_in_imports): Don't check package class access here. + (resolve_package, lookup_package_type): New functions. + (java_layout_classes): Fixed leading comment. Take classes to be + laid out from ctxp->gclass_list. + (java_complete_expand_methods): Don't expand native and abstract + methods. + (java_expand_classes): New function. + (resolve_expression_name): Use additional argument ORIG. Retrieve + values of static final field of primitive types. + (resolve_field_access): Handles static final field of promotive + type. + (resolve_qualified_expression_name): Handle STRING_CST as + primaries and package name resolution. Check deprecation on found + decls. Set where_found and type_found on non static field resolved + during qualification. Layout non primitive field decl types. + (check_deprecation): New function. + (maybe_access_field): Simplified. + (patch_method_invocation_stmt): Local variable CLASS_TYPE + removed. Reverse method's argument when primary is a type. Don't + use CLASS_TYPE to report problems, use IDENTIFIER_WFL + instead. Include abstract class in the list of class searchable + for constructors. Use DECL_CONTEXT of found method for access + checks. Check method deprecation. + (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when + converting arguments. Handle INVOKE_INTERFACE. + (lookup_method_invoke): Search constructor using existing + infrastructure (don't rely on lookup_java_constructor anymore). + (find_applicable_accessible_methods_list): Extra argument flag + LC. Now include constructor in the search. + (qualify_ambiguous_name): Conditional expression are primaries. + (not_initialized_as_it_should_p): static final are always + initialized. + (java_complete_tree): Pass extra NULL argument to + resolve_expression_name. Stricter test to carry on patching + assignments. New case for INSTANCEOF_EXPR. + (complete_function_arguments): Inline PRIMTYPE.TYPE read access. + (check_final_assignment, maybe_build_primttype_type_ref): New + functions. + (patch_assignment): Detect resolved static finals and carry normal + assignment error check on them. Inline PRIMTYPE.TYPE read access. + (try_builtin_assignconv): Access constant 0 on all primitive + types. + (valid_builtin_assignconv_identity_widening_p): Accept identical + types. Accept all promoted type on int type. + (valid_ref_assignconv_cast_p): Accept a null pointer to be + assigned to a reference. + (valid_method_invocation_conversion_p): Accept to check null + pointers. + (build_binop): Merge declaration and initialization of local + variable BINOP. + (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all + numeric types. Improved validity test for qualify operators on + references. + (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR + and PREINCREMENT_EXPR. Also detect resolved static finals of a + primitive type and issue the appropriate error message. + (resolve_type_during_patch): Mark class loaded when resolved. + (patch_cast): Allow null to be cased to reference types. + (build_null_of_type): New function. + (patch_array_ref): Handle array on references correctly. + (patch_return): Removed unused local variable MODIFY. Force + boolean to be returned as integers. Allows null to be returned by + a function returning a reference. + * typeck.c (convert_to_integer, convert_to_real, + convert_to_pointer): Prototypes moved to convert.h + (lookup_argument_method): Use method real name, if necessary. + +1998-10-30 Tom Tromey + + * class.c (build_class_ref): Changed name of primitive classes to + start with `_Jv_'. + + * class.c (make_class_data): Renamed fields: nmethods to + method_count, method_count to dtable_method_count. Always set + `state' field to 0. + * decl.c (init_decl_processing): Likewise. + +1998-10-28 Alexandre Petit-Bianco + + * class.c (layout_class): Don't mangle , produce + __finit instead. Don't verify artificial methods. + * decl.c (finit_identifier_node): New declared global. + (init_decl_processing): finit_identifier_node initialized. + * java-tree.def (CONDITIONAL_EXPR): New Java tree code. + * java-tree.h (finit_identifier_node): Declared as extern. + (struct lang_decl): New field called_constructor. + (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor. + (CLASS_HAS_FINIT_P): New macro. + (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks + explicit constructor invocation. + (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P, + CALL_SUPER_CONSTRUCTOR_P): New macros. + (write_classfile): Added prototype. + * jcf-parse.c (jcf_parse_source): Parse and remember for + generation if the file was seen on the command line. + (parse_source_file): Don't write the class file here. + (yyparse): Loop on files rewritten. Set current_jcf. + (parse_zip_file_entries): Parse class file only if it was found. + * lang.c (init_parse): Don't open command line provided filename + here. + (lang_parse): Don't set main_jcf anymore. + * parse.h (ABSTRAC_CHECK): Capitalized arguments. + (JCONSTRUCTOR_CHECK): New macro. + (JBSC_TYPE_P): New macro. + (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment. + (COMPLETE_CHECK_OP_2): New macro. + (struct parse_ctxt): New field explicit_constructor_p. + (check_class_interface_creation): Fixed prototype indentation. + (patch_method_invocation_stmt): Prototype reflects added argument. + (patch_invoke): Likewise. + (complete_method_declaration, build_super_invocation, + verify_constructor_circularity, + build_this_super_qualified_invocation, get_printable_method_name, + patch_conditional_expr, maybe_generate_finit, fix_constructors, + verify_constructor_super, create_artificial_method, + start_artificial_method_body, end_artificial_method_body, + generate_field_initialization_code): New function prototypes. + * parse.y: Fixed leading comment + (constructor_header:, constructor_body:, block_end:): Rules tagged + . + (type_declaration:): Call maybe_generate_finit. + (method_declaration:): Action for method_body: placed in new + function complete_method_declaration, called here. + (constructor_declaration:): Defined actions. Removed leading + FIXME. + (constructor_header:): New rule with action. + (constructor_body:): Rule rewritten using block_begin: and + block_end:. Defined actions. + (constructor_declarator:, explicit_constructor_invocation:): + Defined actions. + (block:): Use new rules block_begin: block_end:. + (block_begin:, block_end:): New rules and actions. + (block_statements:): Fixed error message for explicit + constructors. + (method_invocation:): Call build_this_super_qualified_invocation + if primary is `this' or `super' was seen. + (conditional_expression:): Action defined. + (extra_ctxp_pushed_p): New static global flag. + (java_parser_context_save_global): Create parser context if + necessary. Use extra_ctxp_pushed_p to remember it. + (java_parser_context_restore_global): Pop extra parser context if + one exists. + (build_array_from_name): Array on primitive types are marked + loaded. + (register_fields): Restore new name in field initializer + expression if type was altered. Non static fields initialized upon + declaration marked initialized. + (maybe_generate_finit): New function. + (maybe_generate_clinit): Use create_artificial_method, + start_artificial_method_body, end_artificial_method_body. Generate + debug info for enclosed initialization statements. + (method_header): Fixed leading comment. Check constructor + flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P + accordingly. + (complete_method_declaration, constructor_circularity_msg, + verify_constructor_circularity): New functions. + (get_printable_method_name): New function. + (check_method_redefinition): Don't rename methods. Fix + declared constructor names. Error message for + constructors modified. + (java_check_regular_methods): Local variable seen_constructor + renamed saw_constructor. Skip verification on constructors. Create + default constructor with create_artificial_method. + (java_check_methods): Removed unnecessary empty line. + (create_artificial_method, start_artificial_method_body, + end_artificial_method_body): New functions. + (java_layout_classes): Changed leading comment. Reverse fields + list if necessary. Always layout java.lang.Object if being + defined. + (java_complete_expand_methods): Verify constructor circularity. + (java_complete_expand_method): Call fix_constructor on + constructors. Local variable no_ac_found removed. Restore + bindings if method body expansion failed. + (fix_constructors, verify_constructor_super, + generate_field_initialization_code): New function. + (java_expand_classes): Fixed leading comment. Write class file + here. + (resolve_expression_name): Check for illegal instance variable + usage within the argument scope of an explicit constructor + invocation. + (resolve_qualified_expression_name): Pass extra from_super flag + when invoking patch_method_invocation_stmt. New case for + conditional expression when used as a primary. Check for error + when acquiring super. + (patch_method_invocation_stmt): Added extra argument super. New + local variable is_static_flag. Set class_to_search according to + the nature of the constructor invocation. Don't add `this' + argument when expanding NEW_CLASS_EXPR. Check for illegal method + invocation within the argument scope of explicit constructor + invocation. Set is_static according to is_static_flag. Provide + extra `super' argument to patch_invoke invocation. + (patch_invoke): New argument from_super. Loop on arguments + indentation fixed. Pass from_super to invocation_mode. New switch + case INVOKE_SUPER. Fixed error message in switch default case. + Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node + value. + (invocation_mode): Return INVOKE_SUPER mode when appropriate. + (lookup_method_invoke): Fixed prototypes in candidates list. Error + message takes constructors into account. + (find_applicable_accessible_methods_list): Fixed indentation. + (qualify_ambiguous_name): Take explicit constructor invocation + into account. Deal with a conditional expression as a primary to + a method call. + (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR + case. Added extra argument to patch_method_invocation_stmt. + Register calls made to explicit constructor `this'. Don't call + save_expr in ARRAY_REF case when emitting class files. Check for + illegal use of this when expanding explicit constructor invocation + arguments. + (complete_function_arguments): Set and reset parser context + explicit_constructor_p field value when appropriate. + (build_super_invocation, build_this_super_qualified_invocation): + New functions. + (patch_assignment): Fixed typo. + (patch_unaryop): Check on final fields occurs only when a decl + exits. + (patch_return): Take constructors into account. + (patch_conditional_expr): New function. + * typeck.c (build_java_signature): Removed unnecessary empty line. + +1998-10-28 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too. + +1998-10-28 Tom Tromey + + * decl.c (init_decl_processing): Renamed fields. + * class.c (make_class_data): Renamed bfsize, nfields, nsfields, + interface_len, msize fields. + + * class.c (make_class_data): Removed subclass_head and + subclass_next fields. + * decl.c (init_decl_processing): Removed subclass_head and + subclass_next fields. + +1998-10-28 Jeffrey A Law (law@cygnus.com) + + * jcf-write.c (emit_load_or_store): Avoid implicit int arguments. + * mangle.c (emit_unicode_mangled_name): Similarly. + +1998-10-26 Nick Clifton + + * jcf-parse.c (get_constant): Place braces around code to compute + 'd' when REAL_ARITHMETIC is not defined. + +1998-10-25 H.J. Lu (hjl@gnu.org) + + * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to + dependency. + +1998-10-23 Tom Tromey + + * lang-specs.h: `.zip' files are input to jc1. + +1998-10-22 Per Bothner + + * jvspecs.c: Add (but don't enable) support for combining multiple + .class and .java input filenames to a single jc1 invocation. + Add support for -C flag (copile to .class files). + Translate -classpath and -CLASSPATH arguments. + * lang-specs.h: Don't set %2 spec. + +1998-10-22 Tom Tromey + + * jcf-path.c (add_entry): Don't add trailing separator if entry is + a .zip file. + (add_path): Don't add trailing separator to non-empty path + elements. + + * lang.c (lang_decode_option): Check for -fclasspath and + -fCLASSPATH before examining other `-f' options. + + * java-tree.h (finalize_identifier_node): Don't declare. + * class.c (make_class_data): Don't push "final" field. + * decl.c (init_decl_processing): Don't push "final" field. + (finalize_identifier_node): Removed. + (init_decl_processing): Don't set finalize_identifier_node. + + * config-lang.in (stagestuff): Added jcf-dump and jv-scan. + +1998-10-11 Anthony Green + + * Make-lang.in (java): Depend on jcf-dump and jv-scan. + (JV_SCAN_SOURCES): New macro. + (JCF_DUMP_SOURCES): Likewise. + (jcf-dump$(exeext)): New target. + (jv-scan$(exeext)): New target. + +1998-10-22 Tom Tromey + + * Makefile.in (LEX): Removed. + (LEXFLAGS): Likewise. + (SET_BISON): New macro. + (BISON): Removed. + ($(PARSE_C)): Use SET_BISON. Run bison from srcdir to avoid + spurious diffs in parse.c. + ($(PARSE_SCAN_C)): Likewise. + (PARSE_DIR): New macro. + (PARSE_C): Use it. + (PARSE_SCAN_C): Likewise. + (PARSE_RELDIR): New macro. + + * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c. + + * jcf-io.c (find_class): Use saw_java_source to determine when to + look for `.java' file. + * jcf-parse.c (saw_java_source): New global. + (yyparse): Set it if `.java' file seen. + + * Make-lang.in (JAVA_SRCS): Added jcf-path.c. + (GCJH_SOURCES): Likewise. + * Makefile.in (datadir): New macro. + (libjava_zip): Likewise. + (JAVA_OBJS): Added jcf-path.o. + (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o. + (../gcjh$(exeext)): Likewise. + (jcf-path.o): New target. + * java-tree.h (fix_classpath): Removed decl. + * jcf-parse.c (fix_classpath): Removed. + (load_class): Don't call fix_classpath. + * parse.y (read_import_dir): Don't call fix_classpath. + * lex.h: Don't mention classpath. + * lex.c (java_init_lex): Don't initialize classpath. + * jcf-io.c (classpath): Removed global. + (find_class): Use jcf_path iteration functions. Correctly search + class path for .java file. + (open_in_zip): New argument `is_system'. + * jcf-dump.c (main): Call jcf_path_init. Recognize all new + classpath-related options. + * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH, + and -I. + (lang_init): Call jcf_path_init. + * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH. + * lang-specs.h: Handle -I. Minor cleanup to -M options. + Correctly put braces around second string in each entry. + * gjavah.c (main): Call jcf_path_init. Recognize all the new + classpath-related options. + (help): Updated for new options. + * jcf.h: Declare functions from jcf-path.c. Don't mention + `classpath' global. + * jcf-path.c: New file. + + * jcf-depend.c: Include jcf.h. + + * jcf-write.c (localvar_alloc): Returns `void'. + (localvar_free): Removed unused variable. + + * lang.c (OBJECT_SUFFIX): Define if not already defined. + (init_parse): Use OBJECT_SUFFIX, not ".o". + +1998-10-21 Alexandre Petit-Bianco + + * class.c (emit_register_classes): Renamed from + emit_register_class. + * java-tree.h (emit_register_classes): Prototype renamed from + emit_register_class. + * jcf-parse.c (yyparse): Call emit_register_classes once before + returning. + * parse.y (java_expand_classes): No longer register classes. + +1998-10-20 Alexandre Petit-Bianco + + * class.c (is_compiled_class): New local variable + seen_in_zip. Identify classes found in currently compiled source + file(s). + * decl.c (complete_start_java_method): Fixed typo. + * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P, + HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros. + (CLASS_P): Moved around. + (java_parse_abort_on_error): Macro moved from jcf-parse.c + * jcf-parse.c (java_parse_abort_on_error): Macro moved to + java-tree.h + (jcf_parse_source): Changed leading comment. Removed unnecessary + fclose and CLASS_FROM_SOURCE_P marking. + (parse_source_file): New local variables remember_for_generation + and filename. Mark parsed file name identifier node. Removed block + executed when parse_only was null. Set remember_for_generation. + Use it as an argument to java_pop_parser_context. + (yyparse): New local variables several_files, list, next node and + current_file_list. Split ampersand separated file names into + current_file_list. Iterate through the list and parse accordingly. + * parse.h (java_pop_parser_context): New function prototype. + * parse.y (ctxp_for_generation): New static global variable. + (java_pop_parser_context): New argument generate. Link popped ctxp + to ctxp_for_generation list accordingly. + (java_complete_expand_methods): Fixed indentation. + (java_expand_classes): New function. + +1998-10-17 Per Bothner + + * Makefile.in: Link with libiberty.a instead of memmove.o. + +1998-10-16 Alexandre Petit-Bianco + + * lex.c (setjmp.h): No longer included. + * lex.h (setjmp.h): Included. + * parse.h (SET_TYPE_FOR_RESOLUTION): New macro. + (duplicate_declaration_error_p): Renamed from + duplicate_declaration_error. + (build_array_from_name): New function prototype. + * parse.y (setjmp.h): No longer included. + (variable_declarator_id): Define action. + (build_array_from_name): New function. + (duplicate_declaration_error_p): Renamed from + duplicate_declaration_error. Fixed leading comment. + (register_fields): Main `for' loop reorganized. Uses + SET_TYPE_FOR_RESOLUTION and build_array_from_name. + (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call + build_array_from_name. + (resolve_class): Set CLASS_LOADED_P on newly build array dimension + types. + (read_import_dir): Don't try to skip `.' and `..'. + (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and + build_array_from_name. Main `for' loop reorganized. + (resolve_qualified_expression_name): When building access to a + field, use the type where the field was found, not its own type. + (maybe_access_field): Use field DECL_CONTEXT if the type where the + field was found is null. + (qualify_ambiguous_name): Sweep through all successive array + dimensions. + +1998-10-14 Alexandre Petit-Bianco + + * java-tree.h (pop_labeled_block, lang_printable_name, + maybe_add_interface, set_super_info, get_access_flags_from_decl, + interface_of_p, inherits_from_p, fix_classpath, + complete_start_java_method, emit_handlers, init_outgoing_cpool, + make_class_data, register_class, alloc_name_constant): New + function prototypes. + * lang.c (lang_decode_option): Set argc argument unused. Fixed + indentation. Added cast to remove warning. + (lang_printable_name): Set v argument unused. + (lang_print_error): Added argument to lang_printable_name call. + (java_dummy_print, print_lang_decl, print_lang_type, + print_lang_identifier, lang_print_xnode): All argument marked + unused. + * lex.c (java_unget_unicode): Removed unnecessary argument. + (java_allocate_new_line): Unused local variable is gone. + (java_read_char): Added parenthesis in expressions to remove + warnings. Added final return statement. + (java_read_unicode): Added parenthesis in expression to remove + warning. + (java_parse_end_comment): Fixed java_unget_unicode invocation. + (java_parse_escape_sequence): Likewise. + (java_lex): Unused local variables are gone. Fixed + java_unget_unicode invocation. + * lex.h (set_float_handler): Prototype added when JC1_LITE not + defined. + * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed + lang_printable_name invocation in macro. + (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL): + Likewise. + (duplicate_declaration_error): Suppressed unused argument in + prototype. + (identical_subpath_p): Function declaration is gone. + (patch_invoke): Suppressed unused argument in prototype. + (patch_cast, build_labeled_block, check_thrown_exceptions): + Likewise. + * parse.y (setjmp.h): Included + (toplev.h): Likewise. + (field_declaration:): Suppressed unused local + (label_decl:): Fixed build_labeled_block invocation. + (java_pop_parser_context): Put extra parenthesis around assignment + in if. + (yyerror): Suppressed unused local variables. + (variable_redefinition_error): Fixed lang_printable_name + invocation. + (create_interface): Suppressed unused local variables. + (create_class): Likewise. + (duplicate_declaration_error): Suppressed unused argument. Fixed + lang_printable_name invocation. + (register_fields): Suppressed unused local variable. Fixed + duplicate_declaration_error invocation. + (method_header): Suppressed unused local variable. + (method_declarator, parser_check_super): Likewise. + (java_complete_class): Suppressed unused local variable. Fixed + fatal error message. + (complete_class_report_errors): Added default: in switch. + (java_check_regular_methods): Fixed lang_printable_name + invocations. + (check_throws_clauses): Likewise. + (java_check_abstract_methods): Suppressed unused local + variable. Fixed lang_printable_name invocation. + (read_import_entry): Added supplemental return statement. + (read_import_dir): Suppressed unused local variables. + (check_pkg_class_access, declare_local_variables): Likewise. + (source_start_java_method): Suppressed unused extern variable + declarations + (expand_start_java_method): Suppressed unused extern and local + variable declarations. + (java_complete_expand_methods): Likewise. + (java_complete_expand_method): Suppressed unused local variables. + (make_qualified_name): Likewise. + (resolve_qualified_expression_name): Added default: in + switch. Fixed lang_printable_name invocation. + (class_instance_creation_expression): Added parenthesis around + expressions. + (patch_method_invocation_stmt): Fixed lang_printable_name and + patch_invoke invocations. + (check_for_static_method_reference): Fixed lang_printable_name + invocation. + (patch_invoke): Suppressed unused arguments and local variables. + (lookup_method_invoke): Suppressed unused local variables. + (qualify_ambiguous_name): Added default: in switch. + (identical_subpath_p): Function removed. + (patch_assignment): Suppressed unused local variables. Suppressed + unnecessary if statement. Fixed lang_printable_name invocations. + (try_builtin_assignconv): Fixed lang_printable_name invocations. + (valid_ref_assignconv_cast_p): Parenthesis around + expression. Suppressed unused local variables. + (build_binop): Suppressed unused local variables. fixed + lang_printable_name invocations. + (string_constant_concatenation): Suppressed unused local + variables. + (patch_unaryop): Fixed lang_printable_name invocation. + (patch_cast): Suppressed unnecessary argument. Fixed + lang_printable_name invocation. + (patch_array_ref): Fixed lang_printable_name invocation. + (patch_newarray, patch_return, patch_if_else_statement): Likewise. + (build_labeled_block): Suppressed unused argument. + (generate_labeled_block): Fixed build_labeled_block invocation. + (build_loop_body): Suppressed unused local variables. + (patch_loop_statement): Likewise. + (patch_exit): Fixed lang_printable_name invocation. + (patch_switch_statement): Likewise. + (case_identity): First argument marked unused. + (patch_try_statement): Fixed lang_printable_name invocations. + (patch_synchronized_statement, patch_throw_statement): Likewise. + (check_thrown_exceptions): Fixed check_thrown_exceptions and + lang_printable_name invocations. + (check_thrown_exceptions_do): Suppressed unused argument. + +1998-10-14 Tom Tromey + + * jcf-write.c (write_classfile): Add output class file as target. + * lang-options.h: Added -MD, -MMD, -M, and -MM. + * jcf.h: Added declarations for dependency-tracking functions. + * lang-specs.h: Handle -M, -MM, MD, and -MMD. + * lang.c (lang_decode_option): Recognize -MD and -MMD. + (finish_parse): Call jcf_dependency_write. + (dependency_tracking): New global. + (DEPEND_SET_FILE): New define. + (DEPEND_ENABLE): New define. + (init_parse): Enable dependency tracking if required. + Include "flags.h". + * Makefile.in (JAVA_OBJS): Added jcf-depend.o. + (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o. + (../gcjh$(exeext)): Likewise. + (jcf-depend.o): New target. + * Make-lang.in (JAVA_SRCS): Added jcf-depend.c. + (GCJH_SOURCES): Likewise. + * jcf-io.c (open_class): Call jcf_dependency_add_file. Added + dep_name argument. + (find_classfile): Added dep_name argument. + (find_class): Compute name of dependency. + (open_in_zip): Call jcf_dependency_add_file. + * gjavah.c (output_file): No longer global. + (usage): Don't mention "gjavah". + (help): Likewise. + (java_no_argument): Likewise. + (version): Likewise. + (main): Recognize and handle -M family of options. + (print_mangled_classname): Return is void. + (process_file): Handle case where output is suppressed. + (HANDLE_END_FIELD): Likewise. + (HANDLE_METHOD): Likewise. + * jcf-depend.c: New file. + +1998-10-13 Jeffrey A Law (law@cygnus.com) + + * java-tree.def: Add missing newline at EOF. + +1998-10-13 Tom Tromey + + * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1. + (main): Likewise. Exit with SUCCESS_EXIT_CODE at end of + function. + Include and "system.h". + (disassemble_method): Undefine RET to avoid clash with + config/i386/i386.h. + +1998-10-13 Alexandre Petit-Bianco + + * decl.c (runtime_exception_type_node, error_exception_type_node): + New global variables. + (init_decl_processing): Initialized. + * expr.c (java_lang_expand_expr): Set caught exception type to + null if catch handler argument doesn't exit. + * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific + tree codes. + * java-tree.h (runtime_exception_type_node, + error_exception_type_node): Global variables declared. + (DECL_FUNCTION_THROWS): New macro. + (DECL_FUNCTION_BODY): Modified comment. + (DECL_SPECIFIC_COUNT): Likewise. + (struct lang_decl): New field throws_list. + (IS_UNCHECKED_EXPRESSION_P): New macro. + * lex.c (java_lex): Generate location information for THROW_TK. + * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P, + EXCEPTIONS_P): New macros. + (enum jdep_code): New value JDEP_EXCEPTION. + (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT, + BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR, + PATCH_METHOD_RETURN_ERROR): New macros. + (patch_method_invocation_stmt): Added new argument to prototype. + (patch_synchronized_statement, patch_throw_statement, + check_thrown_exceptions, check_thrown_exceptions_do, + purge_unchecked_exceptions, check_throws_clauses): New function + prototypes. + * parse.y Fixed typo in keyword section. + (throw:): Rule tagged . + (THROW_TK): Keyword tagged . + (method_header:): Last argument to call to method_header passed + from throws: rule. + (throws:, class_type_list:, throw_statement:, + synchronized_statement:, synchronized:): Defined actions. + (method_header): New local variable current. Register exceptions + from throws clause. + (java_complete_tree): Complete and verify exceptions from throws + clause. + (complete_class_report_errors): Error message on exceptions not + found + (java_check_regular_methods): Fixed typo. Shortcut on private + overriding methods. Changed error message on method + redefinition. Check for throws clause compatibility. + (check_throws_clauses): New function. + (java_check_abstract_methods): Use DECL_NAME for wfl or current + method. Changed error message on method redefinition. + (currently_caught_type_list): New static variable. + (java_complete_expand_methods): Purge unchecked exceptions from + throws clause list. Call PUSH_EXCEPTIONS before walk and + POP_EXCEPTIONS after. + (resolve_qualified_expression_name): Pass new argument as NULL to + patch_method_invocation_stmt. + (patch_method_invocation_stmt): New argument ref_decl. Invoke + PATCH_METHOD_RETURN_ERROR when returning with error. Reverse + argument list when appropriate. Use new argument if non null to + store selected method decl. + (patch_invoke): Convert if necessary args of builtin types before + forming CALL_EXPR. Argument list no longer reversed here. + (invocation_mode): Treat final methods as static methods. + (java_complete_tree): New cases for THROW_EXPR: and + SYNCHRONIZED_EXPR:. Check thrown exceptions when completing + function call. + (complete_function_arguments): No more RECORD_TYPE + conversion. Function parameter nodes no longer saved. + (valid_ref_assignconv_cast_p): Avoid handling null type. + (patch_binop): Fixed null constant reference handling. + (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and + BUILD_THROW macros. + (patch_try_statement): Fixed comments. Record caught types in + list, push the list, expand try block and pop the list. + (patch_synchronized_statement, patch_throw_statement, + check_thrown_exceptions, check_thrown_exceptions_do, + purge_unchecked_exceptions): New functions. + * typeck.c (lookup_argument_method): Allow WFL in place of method + DECL_NAME during method definition check + +1998-10-09 Tom Tromey + + * gjavah.c (decode_signature_piece): New function. + (print_c_decl): Use it. Added `name_override' argument. + (print_method_info): Use name_override argument to print_c_decl. + (seen_fields): Removed. + (print_field_info): Don't update seen_fields. + (struct method_name): New structure. + (method_name_list): New global. + (print_method_info): Add new method to list of methods. + (name_is_method_p): New function. + (print_field_info): If field name has same name as method, then + change field name. + (process_file): Parse methods before fields. + (field_pass): New global. + (HANDLE_END_FIELD): Take field_pass into account. + +1998-10-07 Kaveh R. Ghazi + + * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf. + (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs). + +1998-10-03 Anthony Green + + * jvspec.c: Fix bug in jvgenmain_spec patch. + +1998-10-02 Alexandre Petit-Bianco + + * Makefile.in (lang.o:): Install dependency on java-tree.def. + * decl.c (soft_exceptioninfo_call_node): New global variable. + (init_decl_processing): Fixed indentation. soft_badarrayindex_node + takes extra integer argument. soft_exceptioninfo_call_node + initialized. + * except.c (java_set_exception_lang_code): New function + (method_init_exceptions): Called here. + (prepare_eh_table_type): New function. + (expand_end_java_handler): Called here. + * expr.c (build_java_throw_out_of_bounds_exception): Now features + one argument. Modified generation of call to + soft_badarrayindex_node to use new argument. + (build_java_arrayaccess): Pass faulty index value to + build_java_throw_out_of_bounds_exception. + (generate_name): New function. + (java_lang_expand_expr): New local variables node, current, + has_finally_p. Expand TRY_EXPR node. + (process_jvm_instruction): Replace top of the stack with thrown + object reference when entering exception handler. + * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java + specific tree codes. + * java-tree.h (soft_exceptioninfo_call_node): Declaration of new + global. + (DECL_SPECIFIC_COUNT): New macro. + (prepare_eh_table_type, java_set_exception_lang_code, + generate_name): New function declarations. + (match_java_method): Declaration deleted. + (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New + macros. + * lex.c (TRY_TK, CATCH_TK): Generate location information. + * parse.h (redefinition_error, refine_accessible_methods_list, + can_cast_to_p): Function declaration removed. + (classitf_redefinition_error, variable_redefinition_error, + parse_jdk1_1_error, find_applicable_accessible_methods_list, + find_most_specific_methods_list, argument_types_convertible, + enter_a_block, valid_builtin_assignconv_identity_widening_p, + valid_cast_to_p, valid_method_invocation_conversion_p, + try_reference_assignconv, add_stmt_to_compound, + build_jump_to_finally, build_tree_list, patch_try_statement, + java_get_catch_block): New function declarations. + * parse.y (string_buffer_type): Global variable deleted. + (group_of_labels, catches, catch_clause, catch_clause_parameter, + finally): Rules tagged . + (TRY_TK, CATCH_TK): Token tagged . + (class_body_declaration:, class_member_declaration:, + formal_parameter:, explicit_constructor_invocation:, + interface_member_declaration:, constant_declaration:, + primary_no_new_array:, class_instance_creation_expression:, + array_creation_expression:): Issue error on unsuported JDK1.1 + features. + (try_statement:, catches:, finally:): Define actions. + (catch_clause_parameter): New rule. + (catch_clause:): Use new rule catch_clause_parameter. + (parse_jdk1_1_error): New function. + (redefinition_error): Renamed classitf_redefinition_error. + (variable_redefinition_error): New function. + (check_class_interface_creation): Call + classitf_redefinition_error. + (java_complete_tree): Added error message on JDEP_TYPE: case. + (complete_class_report_errors): Fixed indentation. + (declare_local_variables): Call variable_redefinition_error. + (source_end_java_method): Call java_set_exception_lang_code and + emit_handlers where appropriate. + (java_method_add_stmt): Call add_stmt_to_block. + (add_stmt_to_block): New function. + (lookup_method_invoke): Fixed outside comment. new local variable + candicates. Call find_applicable_accessible_methods_list and + find_most_specific_methods_list when searching for a + method. Modified error report to list possible candidates when + applicable. + (find_applicable_accessible_methods_list, + find_most_specific_methods_list, argument_types_convertible): New + function. + (refine_accessible_methods_list): Function deleted. + (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save + expr (if applicable) before calling patch_array_ref. + (build_expr_block): Fixed BLOCK_EXPR_BODY assignment. + (enter_block): Fixed comment. + (enter_a_block): New function. + (patch_assignment): Reorganized. Call try_reference_assignconv for + references. Call valid_cast_to_p instead of can_cast_to_p. + (try_reference_assignconv, + valid_builtin_assignconv_identity_widening_p): New functions. + (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL. + (valid_cast_to_p, valid_method_invocation_conversion_p): New + functions. + (build_string_concatenation): Don't resolve StringBuffer. + (patch_cast): Fixed inverted arguments. + (patch_array_ref): Code to save array expr deleted. Call + valid_cast_to_p instead of can_cast_to_p. + (generate_labeled_block): Call generate_name. + (build_jump_to_finally, build_try_statement, java_get_catch_block, + patch_try_statement): New functions. + * typeck.c (match_java_method): Function deleted. + +1998-10-02 Anthony Green + + * jvspec.c: jvgenmain_spec uses different temporary file names. + +1998-10-02 Anthony Green + + * jvspec.c (lang_specific_driver): Fail if user specifies + --main= when not linking. + +1998-09-28 Tom Tromey + + * class.c (make_class_data): Push value for `thread' field. + * decl.c (init_decl_processing): Added `thread' field to class. + + * class.c (add_field): Always make static fields externally + visible. + +1998-09-26 Anthony Green + + * expr.c (build_java_athrow, + build_java_throw_out_of_bounds_exception, expand_invoke, + build_newarray, expand_java_multianewarray, build_java_monitor): + Update comments to reflect _Jv_* function names. + +1998-09-25 Per Bothner + + * decl.c (complete_start_java_method): DECL_RESULT is always promoted. + * decl.c (start_java_method): Handle PROMOTE_PROTOTYPES target macro. + * parse.y (expand_start_java_method): Likewise. + +1998-09-24 Per Bothner + + * expr.c (pop_arguments): Handle PROMOTE_PROTOTYPES target macro. + + * class.c (push_class): IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE. + (add_field): No longer need to convert from RECORD_TYPE to pointer, + * expr.c: Remove no-longer-needed calls to promote_type. + * decl.c (give_name_to_locals): Liekwise. + * jcf-parse.c (get_class_constant): Compensate for new signatures. + * parse.y: Add/remove promote_type calls as appropriate. + * typeck.c (parse_signature_type): Returns POINTER_TYPE for objects. + (parse_signature_string): Likewise. + (build_java_array_type): Fix for now signature convenions. + + * lex.c (java_lex): Fix (from Alex) for JC1_LITE problem. + +1998-09-23 Tom Tromey + + * class.c (init_class_processing): libjava function renamed to + _Jv_RegisterClass. + +1998-09-22 Alexandre Petit-Bianco + + * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR. + * java-tree.def: Fixed DEFTREECODE third argument. + (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR, + CASE_EXPR, DEFAULT_EXPR): New tree codes for Java. + * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro. + (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, + JAVA_THIS_EXPR): Now replaced by tree code definitions. + (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR. + * lang.c (java_tree_code_type, java_tree_code_length, + java_tree_code_name): New arrays. + (lang_init): Append Java tree node definitions to Gcc ones. + * lex.c (expression_obstack): Declared as extern when JC1_LITE + defined. + (java_init_lex): Initialize wfl_append, wfl_string_buffer, + wfl_to_string. + (java_lex): Allow declaration of empty string constants. Retain + location information on CASE_TK and DEFAULT_TK. + * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P, + JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P): + Modified to be more robust. + (BUILD_APPEND, BUILD_STRING_BUFFER): New macros. + (build_new_invocation, try_builtin_assignconv, + patch_switch_statement, string_constant_concatenation, + build_string_concatenation, patch_string_cst, patch_string, + java_expand_switch): New function declarations. + * parse.y: Rules related to switch and EH tagged . + (label_id): Set to NULL_TREE + (wfl_string_buffer, wfl_append, wfl_to_string): New static global + tree nodes. + (this_or_super:): Fixed indentation. + (statement:, statement_nsi:, statement_without_trailing_substatement:, + statement_expression:): Removed call to RULE on all sub-rules. + (switch_expression:, switch_labels:): New rules. + (switch_statement:, switch_block:, switch_block_statement_groups:, + switch_block_statement_group:, switch_labels:, switch_label:): + Defined actions. + (throw_statement:, synchronized_statement:, try_statement:): + Defined temporary actions. + (class_instance_creation_expression:): Call + build_new_invocation. Fixed indentation. + (field_access): Fixed indentation. + (method_invocation): Likewise. + (make_qualified_primary): Use THIS_EXPR. + (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When + resolving from SUPER, set *type_found. + (qualify_ambiguous_name): Use NEW_CLASS_EXPR. + (java_complete_tree): Removed unused local variable `location'. Case + for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR, + NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling + on MODIFY_EXPR: and all binary operator tree code cases. Removed + STRING_CST: case. default: checks for patchable strings. + (complete_function_arguments): Transform string constant or + crafted StringBuffer if necessary. + (build_method_invocation): Fixed comments. + (build_new_invocation): New function. + (patch_assignment): Call try_builtin_assignconv to figure a valid + assignment conversion between builtin types. + (try_builtin_assignconv): New function. + (build_binop): Use URSHIFT_EXPR directly to call build. + (operator_string): Use UNARY_PLUS_EXPR. + (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation + operator. + (do_merge_string_cste, merge_string_cste, + string_constant_concatenation, build_string_concatenation, + patch_string, patch_string_cst): New function. + (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR. + (patch_unaryop): Likewise. New test of valid ++/-- operands. + (build_newarray_node): Use NEW_ARRAY_EXPR. + (build_this): Use THIS_EXPR. + (build_return): Enable debug information on return statement. + (build_if_else_statement): Likewise. + (complete_labeled_statement): Fixed related comment. + (build_loop_body): Fixed comment. + (build_bc_statement): Enable debug information on break/continue + statements. + (patch_bc_statement): Fixed typos. Handle SWITCH statement + context. + (patch_switch_statement, case_identity, java_expand_switch): New + functions. + +1998-09-21 Per Bothner + + * buffer.h (BUFFER_INIT): New macro. + * jcf-write.c (struct jcf_partial): New type. Put global stuff here. + Pass (struct jcf_partial *state) to most functions. + (jcf_block, jcf_relocation): New types. + Support labels, branches, conditionals, loops. + +1998-09-21 Tom Tromey + + * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined. + +1998-09-21 Per Bothner + + * decl.c (integer_type_node): Make it have INT_TYPE_SIZE. + * verify.c (verify_jvm_instructions): Use int_type_not (32 bits), + not integer_type_node (INT_TYPE_SIZ bits). + + * parse.y (patch_if_else_statement): Accept promoted_boolean_type_node. + + * jcf-reader.c (get_attribute): New HANDLE_EXCEPTION_TABLE hook. + * jcf-dump.c (print_exception_table): New function. + (disassemble_method): Better handling of wide instructions. + Make more robust for bad input. + +1998-09-30 Jeffrey A Law (law@cygnus.com) + + * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on + FreeBSD. + +1998-09-17 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too. + +1998-09-17 Tom Tromey + + * Makefile.in ($(PARSE_H)): Removed target. + +1998-09-17 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (JAVA_OBJS): Add memmove.o + (memmove.o): New target & rules. + +1998-09-15 Tom Tromey + + * expr.c (expand_invoke): Don't generate a call to the class init + code. + +1998-09-14 Jeffrey A Law (law@cygnus.com) + + * Makefile.in: Add many missing dependencies. + * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h + as appropriate. + * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise. + * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise. + +1998-09-11 Per Bothner + + * decl.c (complete_start_java_method): If method is static (and + not private) call _Jv_InitClass. + * expr.c (expand_invoke): Don't call build_class_init. + + * jvspec.c (jvgenmain_spec): Fix spec for generated .o file. + +1998-09-10 Jeffrey A Law (law@cygnus.com) + + * Make-lang.in (GCJ): Define before using. + +1998-09-09 Jeffrey A Law (law@cygnus.com) + + * gjavah.c (java_no_argument): Renamed from no_argument to avoid + losing due to namespace pollution in GNU getopt.h + +1998-09-09 Tom Tromey + + * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh. + (java.all.cross): Likewise. + (java.rest.encap): Likewise. + +1998-09-08 Jeffrey A Law (law@cygnus.com) + + * gjavah.c (print_class_decls): Fix thinko in arglist + * jcv-io.c (find_classfile): Similarly. + +1998-09-07 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (INCLUDES): Update for recent toplevel gcc changes. + +1998-09-05 Tom Tromey + + * Make-lang.in (java.maintainer-clean): Don't remove parse.h. + (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h. + * Makefile.in (PARSE_C): New macro. + (PARSE_H): Likewise. + (PARSE_SCAN_C): Likewise. + ($(PARSE_C)): Target renamed from parse.c. + ($(PARSE_SCAN_C)): Target renamed from parse-scan.c. + (clean): Remove parse-scan.c as well. + (parse.o): Depend on $(PARSE_C). + +1998-09-05 Anthony Green + + * README, license.terms: Removed. + + * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c, + decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h, + javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c, + jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c, + keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c, + lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c, + verify.c, zextract.c, zipfile.h: Fixed copyright assignment, + and Java trademark attribution. + +1998-09-04 Tom Tromey + + * Makefile.in: Use gcjh, not gjavah. + * config-lang.in (stagestuff): Use gcjh, not gjavah. + * Make-lang.in: Changed gjavah to gcjh everywhere. + +1998-09-03 Per Bothner + + * gjavah.c: Support new -prepend -add -append flags. + (print_method_info): Method is not virtual if class is final. + +1998-09-03 Alexandre Petit-Bianco + + * jv-scan.c: Fixed copyright assignment. + * keyword.gperf: Likewise. + * keyword.h: Likewise. + * lex.c: Fixed copyright assignment. + (java_lex): Push unicode back when parsing '<'. + * lex.h: Fixed copyright assignment. + * parse-scan.y: Likewise. + * parse.h: Fixed copyright assignment. + (build_debugable_stmt, complete_for_loop): New function prototypes. + * parse.y: Fixed copyright assignment. + (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be + size_zero_node when completing a loop with no exit condition. + (for_statement_nsi:): Define action. + (for_init:, for_update:): Return size_zero_node when empty. + (declare_local_variables): Call build_debugable_stmt. + (build_debugable_stmt): New function. + (build_loop_body): Build debugable statement around loop + condition part. + (complete_loop_body): Take into account the debugable statement + around the EXIT_EXPR. + (complete_loop_body): New function. + (patch_exit_expr): Fixed condition inversion. + +1998-09-02 Tom Tromey + + * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct + name of thread define. + * jvspec.c (THREAD_NAME): New macro. + (GCLIB): Likewise. + (THREADLIB): Likewise. + (lang_specific_driver): Recognize attempt to link with thread + library or gc library. Recognize -ljava on command line so it + isn't linked against more than once. + +1998-09-02 Alexandre Petit-Bianco + + * parse-scan.y (report_main_declaration): Name of the class + containing `main' can be a qualified name. + +1998-08-31 Tom Tromey + + * config-lang.in: Changed gjavac to gjc everywhere. + * Make-lang.in: Changed gjavac to gjc everywhere. + +1998-08-27 Alexandre Petit-Bianco + + * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable. + (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS + and install the files. + * Makefile.in (JAVA_OBJS_LITE): New variable. + (compiler:): Now include jv-scan as a dependency. + (../jv-scan$(exeext), parse-scan.c): New targets. + (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before. + * config-lang.in (compilers): Removed gcj, gjavah from the list. + * jcf-parse.c (parse_source_file): Call java_layout_classes and + check for errors even if parse_only. + * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is + defined. + (yylex): New function. Uses java_lex body. + (java_lex): Removed commented out statement. Remove local variable + literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where + appropriate. Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE, + DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF, + SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST + if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use + SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER + where appropriate. + (java_lex_error): Empty if JC1_LITE is defined. + (java_get_line_col): Return 0 if JC1_LITE is defined. + * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, + SET_MODIFIER_CTX): Moved into the section containing the macros + conditionally defined by JC1_LITE. + (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN + argument if JC1_LITE is defined. + (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF, + REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE + is defined. + (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF, + FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION, + SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set + to different values according to JC1_LITE. + * parse.h (int_fits_type_p, stabilize_reference): Prototype not + declared if JC1_LITE set. + (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not + defined if JC1_LITE not set. + (struct parser_ctx): Reorganized and skip the jc1 front end part + if JC1_LITE set. + (java_layout_classes): New function definition. + (java_push_parser_context, java_init_lex, yyparse, yylex, + yyerror): Prototype always declared. All other static function + prototypes declared only if JC1_LITE is not set. + * parse.y (yyparse, yylex, yyerror): No longer declared here. Now + declared in parse.h. + (java_layout_classes): New function. + (java_complete_expand_methods): No longer layout the class here. + * parse-scan.y: New file. + * jv-scan.c: New file. + +1998-08-25 Tom Tromey + + * gjavah.c (main): Handle -friend option. + (friend_specs): New global. + (generate_access): Handle friend_specs. + (process_file): Likewise. + (MAX_FRIENDS): New macro. + (friend_count): New global. + (print_cxx_classname): Added `prefix' argument. Ignore arrays. + Changed all callers. + +1998-08-24 Per Bothner + + * jcf-dump.c (process_class): Move JCF_FINISH use to main, + (main): Handle processing all the entries of a named .zip archive. + * jcf-io.c (jcf_trim_old_input): New function. + * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le): New macros. + +1998-08-24 Per Bothner + + * lang.c (flag_assume_compiled): Make default be on. + +1998-08-21 Per Bothner + + * jcf-dump.c: Add bunches of flags to control output more. + (process_class): New function; support printing more than one class. + (main): Support new --print-main and --javap flags. + * jcf-reader.c (IGNORE_ATTRIBUTE): New hook. + * jcf.h (CPOOL_INDEX_IN_RANGE): New macro. + +1998-08-20 Per Bothner + + Change mangling of dispatch table to match C++ vtable (w/thunks). + * class.c (build_dtable_decl), java-tree.h: New function. + (make_class_data): Call it. + * decl.c (init_decl_processing): Likewise. + +1998-08-19 Warren Levy + + * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not + soft_anewarray; adjust args passed. + * expr.c (build_anewarray): Adjust args for soft_anewarray_node to + match _Jv_NewObjectArray. + +1998-08-19 Alexandre Petit-Bianco + + * decl.c (push_labeled_block, pop_labeled_block): New functions. + * expr.c (loopup_label): Call create_label_decl. + (create_label_decl): New function. + (java_lang_expand_expr): Call expand_start_bindings with argument + set to zero. + * java-tree.h Added space after PROTO in function declarations + when necessary. + (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros. + (create_label_decl, push_labeled_block): New function + declarations. + * lex.c (label_id): Initialize. + (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final + switch. + * parse.h Added space after PROTO in function declarations when + necessary. + (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK, + LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY, + LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P, + PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New + macros. + (struct parser_ctxt): New fields current_loop, + current_labeled_block. + (build_if_else_statement, patch_if_else_statement, + add_stmt_to_compound, patch_exit_expr, build_labeled_block, + generate_labeled_block, complete_labeled_statement, + build_bc_statement, patch_bc_statement, patch_loop_statement, + build_new_loop, build_loop_body, complete_loop_body): New function + declarations. + * parse.y (java_warning_count): New global variable. + (label_id): New static variable. + (BREAK_TK, CONTINUE_TK): Token tagged . + (block:): Return size_zero_node when block is empty. + (empty_statement:): Return size_zero_node. + (statement:): Implement supplemental action when for_statement: is + reduced. + (label_decl:): New rule. + (labeled_statement:): Rewritten using label_decl. Actions + implemented. + (labeled_statement_nsi:): Likewise. + (if_then_statement): Actions implemented. + (while_expression): New rule. + (while_statement:): Rewritten using while_expression. Actions + implemented. + (while_statement_nsi:): Likewise. + (do_statement_begin:): New rule. + (do_statement:): Rewritten using do_statement_begin. Actions + implemented. + (for_statement:): Rewritten using for_begin. Actions implemented. + (for_statement_nsi:): Likewise. + (for_header:, for_begin:): New rules. + (for_init:): Actions implemented. + (statement_expression_list:, break_statement:, + continue_statement:): Likewise. + (yyerror): Count number of issued warning(s). + (java_report_errors): Report error(s) and/or warning(s). + (java_complete_class): Use build_java_argument_signature to + recompute completed method signature. + (java_check_regular_methods): New locals method_wfl and aflags. + Use method_wfl instead of lookup_cl during error reports. Fixed + indentation and modified some error messages. Use + lang_printable_name in method instead of the DECL_NAME. New code + to issue warnings on methods not overriding corresponding methods + private to a different package. + (java_method_add_stmt): Call add_stmt_to_compound. + (add_stmt_to_compound): New function. + (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, + LOOP_EXPR, EXIT_EXPR and COND_EXPR. + (build_if_else_statement, patch_if_else_statement, + build_labeled_block, generate_labeled_block, + complete_labeled_statement, build_new_loop, build_loop_body, + complete_loop_body, patch_loop_statement, build_bc_statement, + patch_bc_statement, patch_exit_expr): New functions. + * typeck.c (build_java_signature): Build argument signature before + enclosing it in between parenthesis. + +1998-08-17 Warren Levy + + * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in + (JAVA_OBJS): Added reminder comment + +1998-08-13 Nick Clifton + + * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to + be interpreted as a long long. + +1998-08-13 Warren Levy + + * decl.c (init_decl_processing): Use _Jv_InitClass, not + soft_initialise_class. Use _Jv_NewMultiArray, not + soft_multianewarray. Use _Jv_ThrowBadArrayIndex, not + soft_badarrayindex. Use _Jv_CheckCast, not soft_checkcast. Use + _Jv_CheckArrayStore, not soft_checkarraystore. Use + _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod. + +1998-08-12 Per Bothner + + * decl.c, java-tree.h (this_identifier_node, super_identifier_node, + length_identifier_node): New global tree node constants. + * parse.y (kw_super, kw_this, kw_length): Removed globals. + Replace uses by super_identifier_node etc. + * lex.c (kw_super, kw_this, kw_length): Don't initialize. + + * parse.y (resolve_field_access): Don't special-case ".length" if + flag_emit_class_files. + (patch_array_ref): Leave as ARRAY_REF if flag_emit_class_files. + * jcf-write.c (generate_bytecode_insns): Handle ARRAY_REF opcode + and ARRAY.length. + +1998-08-11 Per Bothner + + * decl.c (init_decl_processing): Remove unused method_type_node fields. + * class.c (make_method_value): Remove init for removed fields. + + * class.c (layout_class): Use build_java_argument_signature. + * java-tree.h (TYPE_ARGUMENT_SIGNATURE): New macro. + + * typeck.c (push_java_argument_signature): Removed. Merged into ... + (build_java_argument_signature): Use TYPE_ARGUMENT_SIGNATURE cache. + (build_java_signature): Don't use push_java_argument_signature. + + * typeck.c (lookup_argument_method): New function. + * parse.y (java_check_regular_methods): Use lookup_argument_method + instead of lookup_java_method2 followed by lookup_java_method. + + * parse.y (check_method_redefinition): Minor optimization. + + * jcf-write.c (generate_bytecode_insns): Handle RETURN_EXPR, + MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR. + +1998-08-10 Tom Tromey + + * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or + c-pragma.o. + + * gjavah.c (java_float_finite): Use K&R-style definition. + (java_double_finite): Likewise. + (generate_access): Now returns void. Changed all callers. + (last_access_generated): Removed. + (process_file): Only make a single pass over the .class file. + +1998-07-29 Per Bothner + + * class.c (get_dispatch_table): Add extra dummy vtable entry, + for compatibility for G++ (with -fvtable-thunks). + * expr.c (build_invokevirtual): Add one for extra dummy vtable entry. + + * gjavah.c (process_file): Use public inheritance for super-class. + +1998-07-29 Alexandre Petit-Bianco + + * lex.c (java_init_lex): Initialize ctxp->package. + * parse.h (struct parser_ctxt): package and package_len replaced + by tree package, an identifier node. Field method_decl_list is + gone. Fixed comments. + (lookup_field_wrapper, merge_qualified_name, not_accessible, + class_in_current_package): New function prototypes. + * parse.y (array_type:): Set class loaded flag on primitive type + arrays. + (package_declaration:): Assign ctxp->package to the + identifier node. + (method_invocation:): Handle invocation of method qualified by + `super'. + (single_type_import_declaration:): Removed ambiguity check. + (java_pop_parser_context): New local variable `next'. Reset and + set IMPORT_CLASSFILE_NAME flags on current and previous import + list. + (java_accstring_lookup): Use new local macro COPY_RETURN. + (lookup_field_wrapper): New function. + (parser_qualified_classname): Use merge_qualified_name. + (parser_check_super_interface): Broaden error message. + (do_resolve_class): Check for qualified class name in the current + compilation unit if appropriate. + (process_imports): Check for already defined classes. + (check_pkg_class_access): Got rid of call to + get_access_flags_from_decl. + (java_complete_expand_methods): Call safe_layout_class based on + the current class size. + (make_qualified_primary): Build a WFL qualification on primary if + none exists. + (merge_qualified_name): New function. + (make_qualified_name): Use merge_qualified_name. + (resolve_expression_name): Use safe_lookup_field. + (resolve_field_access): Got rid of call to get_access_flags_from_decl. + (resolve_qualified_expression_name): Likewise. Check on resolved + element accessibility. + (not_accessible_p, class_in_current_package): New functions. + (maybe_access_field): Got rid of call to get_access_flags_from_decl. + (patch_method_invocation_stmt): Merged common pieces. Check + accessibility of invoked method. + (check_for_static_method_reference): Add returned type in error + message. + (invocation_mode): Get rid of bogus check on PRIVATE methods. + (refine_accessible_methods_list): Merged two conditions in test. + (java_complete_class): Sanity check on stabilize_ref gone. + * zextract.c (read_zip_archive): Cast lseek second argument to long. + +1998-07-28 Per Bothner + + * class.c (hashUtf8String): Fix - use new JavaSoft specification. + +1998-07-24 Tom Tromey + + * gjavah.c (F_NAN): Removed. + (F_NAN_MASK): New macro. + (F_POSITIVE_INFINITY): Removed. + (F_NEGATIVE_INFINITY): Likewise. + (java_float_finite): Rewrote. + (D_NAN_MASK): Renamed. + (java_double_finite): Rewrote. + (D_POSITIVE_INFINITY): Removed. + (D_NEGATIVE_INFINITY): Likewise. + + * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float] + If verbose, print underlying representation of value in hex. + +1998-07-24 Per Bothner + + * buffer.h, buffer.c: New files. + * Makefile.in (JAVA_OBJS): Add buffer.o. + + Support locals variables and writing their debug entries to .class. + * jcf-write.c: Simplify some by user new buffer type. + (vode_buffer_grow): Removed. + (struct localvar_info): New type. + (localsvars, localvartable): New buffers. + (localvar_alloc, localvar_free): New functions. + (generate_bytecode_insns): Handle local variables. + (generate_classfile): Write LocalVariableTable attribute. + +1998-07-24 Alexandre Petit-Bianco + + * jcf-io.c (open_in_zip): Check the zipfile magic number. + * zipfile.h (ZIPMAGIC): New macro. + +1998-07-24 Tom Tromey + + * Makefile.in (gjavah.o): Updated dependencies. + (jcf-dump.o): Likewise. + (all.indirect): Use ../gjavah. + (../gjavah$(exeext)): Likewise. + (clean): Don't remove gjavah. + (clean): Remove parse.c, not java/parse.c. + * Make-lang.in (java): Added gjavah. + (gjavah$(exeext)): New target. + (GJAVAH_SOURCES): New macro. + (java.all.build): Added gjavah. + (java.all.cross): Likewise. + (java.rest.encap): Likewise. + * config-lang.in (compilers, stagestuff): Added gjavah. + +1998-07-23 Tom Tromey + + * gjavah.c (java_float_finite): New function. + (java_double_finite): Likewise. + (F_POSITIVE_INFINITY): New macro. + (F_NEGATIVE_INFINITY): Likewise. + (F_NAN): Likewise. + (D_POSITIVE_INFINITY): Likewise. + (D_NEGATIVE_INFINITY): Likewise. + (D_NAN): Likewise. + (print_field_info): Use java_float_finite and java_double_finite. + +1998-07-23 Per Bothner + + * parse.y (method_header): Name "this" implicit argument. + +1998-07-22 Per Bothner + + * jcf-write.c: Write out LineNumberTable attribute in .class file. + (linenumber_buffer, linenumber_ptr, linenumber_limit): New statics. + (put_linenumber): New function. + (generate_bytecode_insns, generate_classfile): Write line numbers. + +1998-07-22 Alexandre Petit-Bianco + + * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P. + (lookup_name, build_known_method_ref, build_class_init, + build_invokevirtual, invoke_build_dtable, match_java_method, + build_field_ref, pushdecl_force_head, build_java_binop, + binary_numeric_promotion, build_decl_no_layout, + build_java_arrayaccess, build_newarray, build_anewarray, + build_java_array_length_access, build_java_arraynull_check): New + extern function prototypes. + (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, + JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in + java-tree.h. + * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref + to NULL + * jcf.h (jcf_out_of_synch): New extern function prototype. + * parse.h: Static/global function implemented in parse.y + prototyped and declarations moved at the end of the file. + (DECL_P): Check that the argument isn't null. + (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, + JAVA_THIS_EXPR): No longer defined here. See java-tree.h + (QUAL_DECL_TYPE): New macro. + (PARAMS): Macro definition removed. + * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS. + (return_statement:): Call build_return. + (field_access:): Call make_qualified_primary in sub rule. + (method_invocation:): Build method invocation and call + make_qualified_primary when processing primaries. + (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling + get_type_from_signature. + (java_check_regular_method): Extra integer 0 argument when calling + lookup_java_method2. + (lookup_java_interface_method2): Extra method DECL argument when + calling lookup_java_interface_method2. + (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created + COMPOUND_EXPR node. + (java_complete_expand_method): Layout current class iff not + already done. Don't process interface's methods. + (java_complete_expand_method): Use super class only if it + exists. Use current class otherwise. + (make_qualified_primary): New function. + (resolve_expression_name): Process qualified expression or + expression from primary the same way. + (resolve_expression_name): Two last arguments to + resolve_field_access are now NULL_TREEs. + (resolve_field_access): New variable is_static. Local field must + be DECLs. is_static computed on field DECLs only. Append code in + where_found to the field access if necessary. Use QUAL_DECL_TYPE + to initialize field_type. + (resolve_qualified_expression_name): New local variable, + previous_call_static and is_static. Handle primaries with function + calls, casts, array references and `this'. `super' now handled as + `(super_class)this'. Use is_static to clarify boolean expressions. + Added code to handle case where a proper handle is required to + access a field. Use QUAL_DECL_TYPE where applicable. + (maybe_access_field): New function. + (patch_method_invocation_stmt): New arguments primary, where, + is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P + deleted. Use `where' as a type to search from if specified. Check + for static method reference where forbidden. Append primary or + current_this to the argument list if not calling constructor nor + static methods. + (check_for_static_method_reference): New function. + (patch_invoke): Layout the class on which new is done if + necessary. + (lookup_method_invoke): Changed format to report errors on + methods. + (qualify_ambiguous_name): New local variable this_found. Now + handle things from primaries. Method call are considered + expression names. + (identical_subpath_p): NULL_TREE arguments to breakdown_qualified + changed into NULLs. + (not_initialized_as_it_should_p): Comply with the new DECL_P. + (java_complete_tree): New case fo RETURN_EXPR. Process function + call arguments in separate function. + (complete_function_arguments): New function. + (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P + anymore. + (patch_assignment): Take the return function slot into account as + a RHS. Distinguish assignment from a return. + (valid_ref_assignconv_cast_p): Use build_java_argument_signature + when checking methods in interfaces. + (resolve_type_during_patch): NULL argument to unresolve_type_p + instead of NULL_TREE. + (patch_newarray): Fixed typo in comment. + (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL. + (build_return, patch_return): New functions. + * typeck.c (lookup_java_constructor): Fixed typo in comment. + +1998-07-21 Per Bothner + + * constants.c (find_name_and_type_constant, find_fieldref_index, + find_methodref_index): New methods. + * expr.c (build_invoke_non_interface): If flag_emit_class_files, + just return given method. Also, rename to build_known_method_ref. + (expand_invoke): Rename call to build_invoke_non_interface. + * java-tree.h, parse.h: Update prototype. + * parse.y, decl.c, jcf-parse.c: Suppress calls to back-end functions + (such as expand_expr_stmt) if flag_emit_class_files. + * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP, + STACK_TARGET, IGNORE_TARGET): New macros. + (code_buffer, code_ptr, code_limit, code_S, code_SP_max): New globals. + (generate_bytecode_insn): New function to generate method's bytecode. + (generate_classfile): Node generate Code attribute for a method. + (code_buffer_grow, push_constant1, push_constant2, push_int_const, + push_long_const, field_op, adjust_typed_op, maybe_wide): + New functions used by generate_bytecode_insn. + + * typeck.c (signature_include_return): Remove variable. + (push_java_argument_signature, build_java_argument_signature): New. + (build_java_signature): Use push_java_argument_signature. + * parse.y: Use build_java_argument_signature instead of fiddling + with signature_include_return. + +1998-07-17 Tom Tromey + + * gjavah.c (print_c_decl): Always generate JArray<>* for array + types. + + * Makefile.in (all.indirect): Added gjavah$(exeext). + (gjavah$(exeext)): Added $(exeext). + (clean): Likewise. + +1998-07-16 Alexandre Petit-Bianco + + * class.c (layout_class): Call to java_layout_parsed_class replace + by safe_layout_class. + * expr.c (build_java_array_length_access): Removed static storage + class in the function definition. + (build_java_arraynull_check): Likewise. + Also fixed typos in two comments. + * lex.c (java_init_lex): Initialize static global kw_length. + (java_lex): Use BUILD_OPERATOR on RETURN_TK. + * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to + java_lex_error. + (JAVA_INTEGRAL_RANGE_ERROR): Likewise. + * parse.h (resolve_no_layout): New static function declaration. + (get_identifier_in_static): Declaration removed. + (java_layout_parsed_class): Function name declaration changed to + safe_layout_class. + (build_newarray_node, patch_newarray, resolve_type_during_patch, + not_initialized_as_it_should_p, build_this): New static function + declarations. + (pushdecl_force_head, build_java_binop, int_fits_type_p, + binary_numeric_promotion, stabilize_reference, + build_decl_no_layout, build_java_arrayaccess): Extern function + declarations moved into their own section. + (build_newarray, build_anewarray, build_java_array_length_access, + build_java_arraynull_check): New extern function declarations. + (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR. + (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New + fake tree codes. + (CALL_CONSTRUCTOR_P): New macro. + * parse.y (kw_length): New static global tree node. + (return_statement): Tagged . + (RETURN_TK): Tagged . + (variable_declarator_id:): Build variable declaration with an + empty initialization value if a syntax error was found in the + initialization part of the variable declaration. + (statement_without_trailing_substatement:): return_statement: now + uses the default rule. + (return_statement:): Temporarily fixed to return NULL_TREE. + (primary_no_new_array:): Call build_this when THIS_TK was parsed. + (class_instance_creation_expression:): Class creation rules now + call build_method_invocation upon reduction. + (array_creation_expression:): Rules call build_newarray_node upon + reduction. + (dim_exprs:): Build a list of dimension expressions. + (dim_expr:): Store location of the OSB_TK in the dimension + expression node. + (method_invocation:): Added a new error rule. + (build_unresolved_array_type): WFL argument may also be an array + on a primitive type. Name of the argument changed to reflect this. + (method_declarator): Insert argument type at the beginning of the + argument type list and later reverse the list. + (unresolved_type_p): Argument 'returned' may be optionally + NULL_TREE. + (java_layout_class_from_source): Function renamed + safe_layout_class. + (resolve_and_layout): Now call resolve_no_layout and + safe_layout_class. + (resolve_no_layout): New function. + (purify_type_name): New function. + (complete_class_report_errors): Call purify_type_name during error + report on a type not found. + (process_imports): error_found local variable doesn't need to be + initialized to zero. + (declare_local_variables): New local type_wfl. Fixed typo in error + message. type_wfl assigned to unresolved type and used to register + incomplete type. Build a WFL around the variable initialization + statement so that debug info can be generated on it. + (source_start_java_method): Reverse argument list after they've + been processed. + (current_this): New static global variable. + (java_complete_expand_methods): Set current_this when appropriate. + (resolve_expression_name): Build correct static and non static + field access bearing a simple name. + (resolve_field_access): Resolve the length field of arrays. Handle + f.m() cases. + (patch_method_invocation_stmt): Set the type of the method + invocation to error_mark_node. This value is later overridden by a + valid type, if any. Don't handle qualified constructor invocation + as qualified method invocation. Call lookup_method_invoke with its + new flag. It's no longer necessary to access the selected method + as the value of a tree list. Handle constructor invocation. + (patch_invoke): Reverse argument list when invoking non interface + methods. Insert call to new as the first argument of the + constructor. + (invocation_mode): Return a INVOKE_STATIC is the invoked method is + defined within a final class. Return INVOKE_STATIC if the invoked + method is a constructor. + (lookup_method_invoke): New lc argument is a flag to indicate a + constructor lookup. Now handle constructor lookup. Choose the most + specific method in case several were matching the invocation + requirements. Return a method decl instead of a tree list featuring + one single method decl element. + (refine_accessible_methods_list): New lc flag argument to + indicate that a constructor is being looked up. + (not_initialized_as_it_should_p): New function. + (java_complete_tree): Now process fake tree codes + JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call + save_expr on resolved function call arguments. Case on + UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR. + (patch_assignment): LHS can be a field access expression. When + dealing with reference, lhs_type is the promoted type of the + rhs_type, not the RHS. Use not_initialized_as_it_should_p where + applicable. + (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR. + (patch_binop): Use not_initialized_as_it_should_p where + applicable. + (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR. + (patch_unaryop): Likewise. And use not_initialized_as_it_should_p + where applicable. + (resolve_type_during_patch): New function. + (patch_cast): Call resolve_type_during_patch to resolve type and + report error accordingly. + (patch_array_ref): Use not_initialized_as_it_should_p where + applicable. Array base expression is saved before being + used. Promote the type of an array elements if it contains non + builtin types. + (build_newarray_node, patch_newarray, build_this): New functions. + +1998-07-16 Tom Tromey + + * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't + increment it in `for' statement. + (print_field_info): If number is inf or nan, don't print it. + (print_method_info): If method name is `delete', just ignore it. + (print_c_decl): Special-case jstringArray. + + * gjavah.c (help): New function. + (no_argument): New function. + (usage): Changed text. + (main): Rewrote argument handling. Now handles -v, --help, + --version. + (version): New function. + (found_error): New global. + (main): Return found_error. + (generate_access): Set found_error. + (print_c_decl): Likewise. + +1998-07-15 Tom Tromey + + * gjavah.c (print_c_decl): Don't print "," when examining field. + Skip type name when looking at "[L" types. + (process_file): Now static. + (generate_access): Now returns int. + (last_access_generated): New global. + (process_file): Clear last_access_generated; make multiple passes + over the class. + (print_field_info): Just return if generate_access returns true. + (print_method_info): Likewise. Also, allow functions to + pass through. + (print_c_decl): Added is_init argument. Print constructors + properly. + (print_cxx_classname): Use UTF8_GET to extract characters from + string. + (print_base_classname): New function. + (print_class_decls): New function. + (process_file): Use it. + (utf8_cmp): New function. + +1998-07-13 Nick Clifton + + * lang-options.h: Format changed to match changes in gcc/toplev.c + to implement a --help option. + +1998-07-10 Brendan Kehoe + + * decl.c (init_decl_processing): Revert change to dtable_type. + +1998-07-09 Per Bothner + + * java-tree.h (CLASS_P): Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4. + +1998-07-08 Brendan Kehoe + + * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type. + + * lang.c (lang_init): Default flag_exceptions to 1, without + checking to see if it's 2 first. + +1998-07-08 Jeffrey A Law (law@cygnus.com) + + * constants.c: Include "system.h". + * decl.c: Likewise. + * lang.c (flag_new_exceptions): Get via extern now. + (lang_init_options): New functions. Turn on flag_new_exceptions. + +1998-07-07 Alexandre Petit-Bianco + + * lex.c (java_lex): Return 0 when we see an invalid character in + the input. + + * lex.c (java_read_char): Specify extra argument when calling + java_lex_error. + (java_read_unicode, java_parse_end_comment, + java_parse_escape_sequence): Likewise, + (java_lex): Specify extra argument when calling + java_lex_error. Test that IDs are beginning with a legal character + for IDs. Handle invalid characters with an error message and a + call to java_lex_error. + (java_lex_error): Adjust column position by new argument + `forward'. Issue an error even if in the middle of reporting an + other error. + +1998-07-07 Brendan Kehoe + + * jcf-io.c (find_class): Zero out BUFFER before we use it, since + we don't explicitly put a null pointer when we're copying it. + +1998-07-07 Tom Tromey + + * gjavah.c (print_cxx_classname): New function. + (super_class_name): Likewise. + (print_super_fields): Removed. + (in_super): Removed. + (print_field_info): Never generate #defines. + (print_c_decl): Changed generated types to match JNI. No longer + print class name before method name. + (print_method_info): Print "static" before static methods. + Print "virtual" before non-final methods. + (usage): Use exit(1), not exit(-1). + (main): Likewise. + (print_field_info): Use %.17g to print a double. + (last_access): New globals. + (process_file): Initialize last_access. + (usage): Now static. + (ACC_VISIBILITY): New define. + (generate_access): New function. + (print_field_info): Call it. + (print_method_info): Likewise. Also, generate information for all + methods, not just native methods. Return void. + (print_c_decl): Return void. + (print_field_info): Return void. + +1998-07-02 Alexandre Petit-Bianco + + * Makefile.in (JAVABISONFLAGS): Specific flag for bison when + processing the jc1 grammar file. Prefix bison functions and + variables with java_. + (parse.c): Dependencies on parse.h and lex.h + * expr.c (build_java_arrayaccess): Function now global. + * java-tree.h: Comment reorganized to carry on previous + classification effort. + (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P, + RESOLVE_TYPE_NAME_P): New flags on WFLs. + * jcf-parse.c (parse_source_file): java_parse_source_file renamed + java_parse (new prefix java_ generated by bison). + (java_layout_parsed_class, java_register_parsed_class): Function + call removed. + (yyparse): Removed unnecessary call to init_outgoing_cpool. + * lex.c (static tree wfl_op): Variable deleted. + (java_init_lex): Initialize kw_super and kw_this. Initialize more + ctxp fields to NULL_TREE. + (java_lex): No longer create WFL for operators. Filename caching + mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings + created as STRING_CST and later expanded. Removed extra argument + to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS + and SUPER. + (build_wfl_node): Removed code in comments. + * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but + store token and location data in the current bison token. + * parse.h: Removed pre-processor based symbol prefixes hack. Moved + static/extern function declaration at the beginning of the file. + (struct qualification): Data structure definition deleted. + (RESOLVE_CHAIN_REMAINDER): Macro definition deleted. + (qualify_ambiguous_name): Function declaration modified. Function + now returns nothing. + (build_array_ref, patch_array_ref, make_qualified_name, + resolve_qualified_expression_name, maybe_generate_clinit, + resolve_field_access): New static function declarations. + (build_java_arrayaccess): New extern function declaration. + (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted. + (CALL_EXPR_PRIMARY): Macro deleted. + (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros. + (struct parser_ctxt): Field initialized_final + removed. non_static_initialized, static_initialized: New fields. + * parse.y (static tree kw_super, static tree kw_this): New global + static. + (%union): tree wfl field of operator member replaced by int + location. WFLs are non longer created for operators. + (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged . + (qualified_name:): Now calls make_qualified_name to build the + identifier. + (type_declaration:): Consider generating when class + parsing completed. + (variable_declarator:): Directly build an assignment node when the + variable is initialized when declared. + (this_or_super:): Build a WFL and set current location when THIS + or SUPER are parsed. + (expression_statement:): Wrap statement around a WFL. + (primary_no_new_array:): Fixed typo. Changed value returned by + THIS_TK because of its new type (temporary). + (dim_exprs:): Temporary fix because of OSB_TK's new type. + (field_access:): Build qualified name with SUPER. + (method_invocation:): Fixed returned value because of SUPER's new + type. + (array_access:): Use OSB_TK location information. + (post_increment_expression:, post_decrement_expression:, + unary_expression:, pre_increment_expression:, + pre_decrement_expression:, unary_expression_not_plus_minus:, + cast_expression:, multiplicative_expression:, + additive_expression:, shift_expression:, relational_expression:, + equality_expression:, and_expression:, exclusive_or_expression:, + inclusive_or_expression:, conditional_and_expression:, + conditional_or_expression:, assignment:): Use new location/token + information available on operators. + (create_class): Set super_decl_type to NULL_TREE when processing + java.lang.Object. + (register_fields): Field initialization is now a MODIFY_EXPR + node. Chain initialization code to the matching lists (according + to the field declaration modifiers). + (maybe_generate_clinit): New function. + (method_header): Don't set method's DECL_NAME to a WFL when adding + methods to java.lang.Object. + (resolve_and_layout): Now can return NULL_TREE if the type + resolution fails. Otherwise, return the class DECL instead of its + TYPE. + (check_method_redefinition): Don't patch method DECL_NAME if it + belongs to java.lang.Object. + (process_imports): Simply assign error_found to the value returned + by check_pkg_class_access. + (declare_local_variables): Don't use their init statements (if + any) when parsing error were previously found. Reuse MODIFY_EXPR + build during parsing as an init statement. + (java_method_add_stmt): Now return the current method body. + (java_layout_parsed_class, java_register_parsed_class): Functions + removed. + (java_complete_expand_methods): Initialize the constant pool on a + per class basis. Layout the classes before expanding their method + bodies. Don't try expand artificial constructor code if error were + found. Make the classes data and register them if no error were + found. + (java_complete_expand_method): Retrieve an artificial constructor + argument list before entering its body. Assign the top block to + the artificial constructor function body and set types of declared + blocks and compound statements to void. Walk method body if not an + artificial constructor. + (make_qualified_name, cut_identifier_in_qualified): New functions. + (resolve_expression_name): Fixed comments. Save/restore the + current class CLASS_LOADED_P flag value. Build non qualified + static field access and handle qualified expression names. + (resolve_field_access, resolve_qualified_expression_name): New + functions. + (patch_method_invocation_stmt): Use the new expression resolution + scheme, calling resolve_field_access when the function call is + resolved as an expression. + (qualify_ambiguous_name): Function rewritten to work on qualified + expression produced by make_qualified_name. + (java_complete_tree): Promote type when function's argument are + RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch + the assignment to discover further errors if RHS is a expression + name that fails to evaluate. Declare LHS initialized even though + the assignment failed. Don't use the location variable and removed + extra argument in patch function calls. Now handle the ARRAY_REF + case and build internal string representation when STRING_CSTs are + walked. + (build_method_invocation): Don't wrap function call around a WFL. + (build_assignment): Likewise. Use the operator location + information. + (patch_assignment): Handle array access LHSs. Handle error + provenance, resulting in a better error report. + (build_binop): Use op_location from operator as binop location + information. + (build_unaryop, build_incdec, build_cast): Likewise. + (patch_binop): Extract location information from the node. Fixed + typo in error message. + (patch_unary_op): Extract location information from the node. + (build_array_ref, patch_array_ref): New functions. + +1998-07-01 Tom Tromey + + * expr.c (expand_java_INSTANCEOF): Changed calling convention to + match _Jv_IsInstanceOf. + * decl.c (init_decl_processing): Use _Jv_NewArray, not + soft_newarray. Use _Jv_IsInstanceOf, not soft_instanceof. + +1998-06-30 Tom Tromey + + * decl.c (init_decl_processing): Functions are now named + _Jv_MonitorEnter and _Jv_MonitorExit, and return jint. + +1998-06-29 Per Bothner + + * java-tree.h (load_class): Add prototype. + * class.c (is_compiled_class): Add missing arg to load_class. + * expr.c (expand_java_NEW): Call load_class. + * parse.y (process_import): Removed bogus use of void return value. + +1998-06-25 Per Bothner + + * decl.c, java-tree.h (soft_athrow_node): Renamed to soft_node. + Function name is "_Jv_Throw" instead of "soft_athrow". + * decl.c, java-tree.h (soft_new_node): Renamed to alloc_object_node. + Function name is "_Jv_AllocObject" instead of "soft_new". + Takes an extra parameter (object size). + * expr.c: Update calls. + +1998-06-24 Per Bothner + + * lex.c (java_get_line_col): Handle end-of-file. + * except.c (expand_end_java_handler): Handle null type (i.e. finally). + +1998-06-24 Andrew MacLeod + + * lang.c (lang_init): Make -fexceptions the default. + * except.c (maybe_start_try, maybe_end_try): Don't do anything if + exception handling is not turned on. + +1998-06-23 Andrew MacLeod + + * lang.c (flag_new_exceptions): Make this this default. + * decl.c (end_java_method): Call emit_handlers. + * except.c (method_init_exceptions): Set language code and version. + (expand_start_java_handler): Enable exception, and call + expand_eh_region_start. + (expand_end_java_handler): Enable exception, and set up catch blocks. + (emit_handlers): New routine to generate the saved handlers. + * java-except.h (emit_handlers): Add prototype. + +1998-06-12 Per Bothner + + We used to have three different representations of the constant pool: + the CPool structure, the tree_constant_pool, and the constructures + used to build the Class object (which may need class and string + constants) in compiled code. None were appropriate for compiling + to .class files, so I did a major overhaul. + + First, the tree_constant_pool array was removed. Things were + modified to the CPool structure in the JCF could be used. + Second, a "capacity" field was added to the CPool, and functions + written to search for a matching constant, adding one if not found. + The code that generated the Class object was changed to use a CPool. + The actual TREE_LISTs used to build the CONSTRUCTORs used for + the static Class object are now only in build_constants_constructor. + Finally, I wrote code which can generate a .class file (including its + constant pool) from the RECORD_TYPE of a class. This is a big step + on the way to compiling Java source into .class files. + + * jcf-write.c: New file. Writes out a RECORD_TYPE as a .class file. + * Makefile.in (JAVA_OBJS): Added jcf-write.o. + + * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag, + CONSTANT_ResolvedString, CONSTANT_ResolvedClass): New macros. + (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME, + COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined. + (COMPONENT_REF_CLASS): Replaced by COMPONENT_REF_CLASS_INDEX. + (lang_type): Removed constant_pool field. + * jcf.h (CPool): Renamed size to count. Added field capacity. + (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2, + CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT): New macros. + Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros. + + * constants.c (current_constant_pool_tags, current_constant_pool_data, + current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool. + * constants.c (build_constants_constructor): Use new outgoing_cpool. + (set_constant_entry, find_constant1, find_constant2, + find_class_constant, count_constant_pool_bytes, write_constant_pool, + find_utf8_constant, find_class_or_string_constant): New functions. + + * jcf-parse.c (load_class): Don't save/restore tree-constant_pool. + (get_constant): Use current_jcf.cpool instead of tree_constant_pool. + (give_name_to_class, get_class_constant): Likewise. + * jcf-parse.c, java-tree.h (tree_constant_pool): Removed. + (get_name_and_type_constant, get_ref_constant): Removed. + * parse.h (parser_ctxt): Remove field tree_constant_pool. + * parse.y: Don't save/restore tree_constant_pool. + * verify.c (verify_jvm_instructions): Update for new approach. + * expr.c (expand_invoke, expand_java_field_op): Likewise. + + * lang-options.h: Added -femit-class-file, -femit-class-files. + * lang.c (flag_emit_class_files), java-tree.h: New flag. + (lang_f_options): Added "emit-class-file(s)". + + * expr.c (build_java_arrayaccess): Generate more efficient array + bounds checking, by using unsigned compare. + + * expr.c (expand_invoke): Re-arrange error checks to make more robust. + +1998-06-10 Alexandre Petit-Bianco + + * parse.h: New comment on the handling of unresolved type + identifiers. JDEPs are now part of the jdep_code enum. + (typedef struct jdep): Now use enum jdep_code or int, depending on + availability. Both are narrowed down to an 8 bits bitfield. + (CALL_EXPR_PRIMARY): Fixed comment. + +1998-06-10 Tom Tromey + + * Make-lang.in (java): Added gjavac and jvgenmain. + (java.start.encap): Depend on gjavac. + (java.rest.encap): Depend on jvgenmain. + + * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++. + (JAVA_CROSS_NAME): Likewise. + (java.all.build): Depend on jvgenmain and gjavac. + (java.all.cross): Depend on jvgenmain and gjavac-cross. + (jvgenmain$(exeext)): New target. + (java.install-common): Wrote. + * config-lang.in (compilers, stagestuff): Added gjavac and + jvgenmain. + +1998-06-10 Dave Brolley + + * lang.c (lang_decode_option): New argc/argv interface. + +1998-06-09 Alexandre Petit-Bianco + + * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard. + * decl.c (build_decl_no_layout): New function. + * expr.c (java_lang_expand_expr): Layout declarations found in + blocks before they're pushed. + * jcf-parse.c (load_class): Save current line when parsing class + file. + (parse_source_file): Register class before expanding their + methods. + * lang.c (put_decl_node): Produce `null' when `void *' is + processed. + * lex.c (static tree wfl_op): New static global, for error report + on casts. + (java_init_lex): wfl_operator and wfl_op initialized + here. Filename caching added for wfl_op. Return wfl_op when `(' is + parsed. + * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast, + patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p, + build_unresolved_array_type): New static function definitions. + (build_decl_no_layout): New extern function declared. + (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the + faulty modifier exists. + (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros. + (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned. + (UNARY_PLUS_EXPR): New fake operator. + (struct parser_ctxt): New field osb_number. + * parse.y (static tree wfl_operator): New static WFL for operator + bound error messages. + (DECR_TK, INCR_TK): Moved. + (OP_TK): Tagged . + (array_type:): Now call build_unresolved_array_type. + (dim_expr:): Count the number of '[' seen. + (post_increment_expression, post_decrement_expression, + pre_increment_expression, pre_decrement_expression, + unary_expression_not_plus_minus, unary_expression:): Actions are + now building the corresponding unary expressions. + (cast_expression:): Actions are now building cast expressions. + (build_unresolved_array_type): New function. + (create_interface): Reset the number of declared interfaces. + (create_class): Likewise. + (method_header): Methods declared within the scope of an interface + are now implicitly set public and abstract. + (java_complete_class): Variable's and parameter's type are patched + with a promoted type. + (declare_local_variables): Resolved non builtin types are promoted + before being used to build a variable decl. Removed type patch + posted on variable initialization statement. + (source_start_java_method): Use build_decl_no_layout to build the + decl of a parameter of incomplete type. + (java_register_parsed_class): Process interfaces too. Call + rest_of_decl_compilation on each processed class declarations. + (java_complete_expand_methods): Don't attempt to expand things in + interfaces. + (java_complete_tree): Process CONVERT_EXPR, even though it always + has a type. Propagate error_mark_node to node's type too. Promote + method's call argument type and return error_mark_node if + argument's completion didn't work. MODIFY_EXPR can have a WFL as a + RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now + handle unary operator nodes. + (build_assignment): Added comment. + (print_int_node): New function. + (patch_assignment): New second argument. New error handling. Use + print_int_node. Handle references. Use can_cast_to_p to issue + different error message according to the context and check upon + the initialization of the RHS. + (can_cast_to_p, valid_ref_assignconv_cast_p): New functions. + (operator_string): Handle more operators. + (patch_binop): No longer use a function static + wfl_operator. Improved error message on shift distance. + (build_unaryop, build_incdec, build_cast, patch_unaryop, + patch_cast): New functions. + +1998-06-05 Per Bothner + + * jvspec.c: New file. + * Make-lang.in: New rules to build gjavac from jvspec.c and ../gcc.c. + + * java-tree.h (identifier_subst): Add declaration. + +1998-06-04 Tom Tromey + + * jvgenmain.c (main): Generate call to JvRunMain. + + * class.c (make_class_data): Push value for "sync_info" field. + * decl.c (init_decl_processing): Push "sync_info" field. + +1998-06-03 Per Bothner + + * typeck.c (build_java_array_type): Set TYPE_NAME to actual + Java (source) name, not signature. + Set TYPE_ALIGN to (at least) that of element_type. + +1998-06-02 Per Bothner + + * class.c: Moved classname-mangling-rekated code to ... + * mangle.c: ... this new file. + * jvgenmain.c: New program (needs mangle.c) to generate main program. + * Makefile.in: Update for above changes. + +1998-06-01 Alexandre Petit-Bianco + + * expr.c (truthvalue_conversion): Convert integer and floating + point value to their truth value. + * lex.c (java_lex): Handle the `null' literal. + * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros. + (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, + ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED): + New macros. + + * parse.y: Reorganization/documentation on token declaration. + (binop_lookup[]): New added new tree codes. + (relational_expression): Build corresponding binary operators. + (equality_expression, conditional_and_expression, + conditional_or_expression): Likewise. + (java_complete_class): Fix crash in debug message. + (java_complete_tree): Check initialization of method call + arguments. Further bogus node evaluation to detect more error + during assignments. Handles more binary operators. + (patch_assignment): Use DECL_P. + (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree + code. + (operator_string): Handle more case. Compacted source. + (patch_binop): Changed function comment. Checking for + uninitialized first operand takes the compound assignment into + account and uses DECL_P. Checking for uninitialized second operand + delayed to routine's end. Use macros to issue type bound error + messages and issue messages on both operands if their types are + different. Force fixed type into node. Handle all binary + operators. + +1998-05-27 Alexandre Petit-Bianco + + * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros. + * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to + build operator node and return tokens. + * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros. + * parse.h (java_complete_tree): Changed returned type in prototype. + (build_method_invocation, build_assignment, patch_assignment, + patch_binop): New static function declarations. + (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P, + BUILD_EXPR_WFL): New macros. + * parse.y (enum tree_code binop_lookup[]): New static for token to + TREE_CODE lookup. + (%union): Parser union has new sub-structure `operator'. + (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK, + PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK, + ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK, + ASSIGN_ANY_TK): Tokens tagged `operator'. + (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK, + AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK, + MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK, + REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'. + (assignment_operator:): Rule tagged `operator'. + (expression_statement:): Re-installed default rule. + (method_invocation:): Sub rules call build_method_invocation. + (postfix_expression:): Don't attempt to resolve name here. Just + return an ID. + (multiplicative_expression:): Sub-rules build corresponding binop + expression node. + (additive_expression:, shift_expression:, and_expression:, + exclusive_or_expression:, inclusive_or_expression:): Likewise. + (assignment:): Sub rule invoke build_assignment. + (assignment_operator:): Default rules on sub rules. + (force_error): Added documentation on this variable. + (declare_local_variables): Build initialization calling + build_assignment. + (expand_start_java_method): Removed unused rtx declaration. Mark + arguments as already initialized. + (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL. + (java_complete_expand_methods): Don't process next method if + completion of the previous one triggered errors. + (java_complete_expand_method): Call source_end_java_method if no + error were found during completion. + (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve + locals declaratilon. Handle names found within a class. Return + error_mark_node when things aren't found. + (patch_method_invocation_stmt): Return error_mark_node on failures. + (patch_invoke): Removed unused local. Return the correct node. + (java_complete_tree): Now returns a value. The BLOCK section binds + local identifiers and the type of a BLOCK is now void. Assign the + result of operand completion on COMPOUND_EXPR. Assign the + encapsulated node of a WFL to the result of its completion, except + when the node is an identifier. Now handle MODIFY_EXPR and several + binary operators. Return error_mark_node on errors. + (build_method_invocation, build_assignment, patch_assignment, + build_binop, operator_string, patch_binop): New functions. + * typeck.c (binary_numeric_promotion): New function. + +1998-05-21 Per Bothner + + * class.c (identifier_subst): New convenience wrapper for ident_subst. + Replace most uses of ident_subst by identifier_subst. + + * class.c (push_class_static_dummy_field): Removed function. + (build_class_ref): Find Class object decl by looking up "CNAME.class", + instead of looking got "class" static field. Create that decl here. + (class_identifier_node): Removed; no longer needed. + (init_class_processing): Don't init class_identifier_node. + * jcf-parse.c (jcf_parse): Don't call push_class_static_dummy_field. + Do nreverse 0 times (instead of twice) for Object and Class. + * parse.y (java_layout_parsed_class): No push_class_static_dummy_field. + +1998-05-20 Per Bothner + + * jcf-parse.c (parse_class-file): Set lino to smallest line number, + while initializing linenumber_count and linenumber_table. + Do it before init_function_start (which calls emit_line_note). + * expr.c (expand_byte_code): Don't need to clear lineno here. + +1998-05-18 Tom Tromey + + * class.c (append_gpp_mangled_type): If `qualifications' is >=9, + then mangle number as _N_. + + * class.c (mangle_class_field): New function. + (build_class_ref): Set assembler name of class reference using + mangle_class_field. + (push_class_static_dummy_field): Likewise. + +1998-05-17 Michael Tiemann + + * parse.y (source_start_java_method): Use TREE_SET_CODE instead + of assigning to TREE_CODE. The latter method exploits a feature + of GCC that is not ANSI compliant. + +1998-05-12 Alexandre Petit-Bianco + + * decl.c (pushdecl_force_head): New function. + (pushlevel): Removed conditional printf. + (complete_start_java_method): Don't enter local variable scope if + function is compiled from source code. + * expr.c: parse.h now included + (java_lang_expand_expr): New function. + * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of + printf. Terminate buffer when doing directories. + * jcf-parse.c (parse_source_file): Call lang_init_source before + parsing and before code generation. + * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally + use printf if the macro is defined. + * lang.c (lang_init): Install lang_expand_expr hook on + java_lang_expand_expr. + (java_dummy_print): New function. + (lang_init_source): New function. + * lex.c (java_lex): Remember location of an opening brace at the + second nesting level. + (java_is_eol): Unget character seen after a CR if it is EOF. + * parse.h: Now includes lex.h + (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use + printf if the macro is defined. + (expand_start_java_method, build_expr_block, enter_block, + exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks): + New static function declarations. + (pushdecl_force_head): New extern function declaration. + (INCOMPLETE_TYPE_P): New macro. + (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum. + (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY, + BLOCK_EXPR_ORIGIN): New macros. + (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST, + DECL_SOURCE_LINE_LAST): New macros. + (struct parser_ctxt): Removed field current_method_decl, redundant + with the field current_function_decl. Added fields + first_ccb_indent1 and pending_block. + * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK, + BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules + tagged + (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs. + (compilation_unit:): Cosmetic on sub rule. + (type_declaration:): Cosmetic on sub rules. Added an error rule. + (variable_initializer:): Installed default rule on expression:. + (method_declaration:): method_header: starts a new + method. method_body: installs the function body, absorbs blocks + emitted for temporary variable scopings, pops function's body block + and merges function's last statement lineno in DECL_SOURCE_LINE. + (method_body:): Installed default rules. + (block:): Call enter_block when an opening brace is seen. Absorb + scoping blocks and call exit_block when a closing brace is seen. + (block_statement:): Cosmetic changes. + (method_invocation:): Create WFL around CALL_EXPR node. + (patch_stage): Added comment around definition. + (method_header): Try to use first_ccb_indent1 as the first line of + the method, so BP debug info are emitted at the first opening + brace of the function. If the function has no body, use the + location of the function's name. Override currently defined method + name with the matching WFL so we can point redefinition errors + using the location where the function's name was declared. + (check_abstract_method_header): Interprets DECL_NAME as an + identifier or as a WFL, accordingly. + (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM. + (check_method_redefinition): Use DECL_NAME as a WFL. Extract + location and name information out of it and reinstall DECL_NAME to + its original identifier node value. + (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the + function's source code). + (read_import_dir): Test the value returned by find_class and issue + a fatal accordingly. + (declare_local_variables): Push a new block for the scope of the + new variable(s) if code has been already generated at that nesting + level. Pinpoint redefinition errors using the variable id + WFLs. Generate initialization code if necessary. If the variable + type is incomplete, register a patch on its decl. + (source_start_java_method): Rewritten. Define a new block for the + function's parameters. Build parameter decl out of function's + arguments and register them for a patch if their types are + incomplete. + (expand_start_java_method): Includes the part of + source_start_java_method that was pushing the parameter decls and + completing the method start code. + (source_end_java_method): Removed call the expand_end_bindings and + poplevel (already taken care of). Reinstall function's arguments + and get function's last line of code before calling + expand_function_end. + (java_method_add_stmt): New comment before the function's + code. Complement the second operand of the current COMPOUND_EXPR + if necessary. + (java_complete_expand_methods): Don't generate debug info on line + zero when expanding a generated constructor. + (java_complete_expand_method): Set start and end line numbers for + a artificially generated constructor to one and manually call + enter_block and exit_block when defining it. For all methods: + expand function's start calling the new expand_start_java_method + and invoke java_complete_tree on the effective method's body, if + any. + (resolve_expression_name): Now use lookup_name_in_blocks to search + local variable decls and print out an error when variables are + undefined. + (patch_method_invocation_stmt): Inserted comment before the + function's code. + (lookup_method_invoke): Chain method's arguments using chainon + with the current arg list as a second argument. Inserted missing + IDENTIFIER_POINTER when reporting an error on methods not found. + (refine_accessible_methods_list): Don't retain constructors. + (patch_arguments): Function removed. + (java_complete_tree): Inserted comment before the function's + code. New case for BLOCKs. Moved the WFL case a bit + further. Complete function's arguments. + (build_expr_block, enter_block, exit_block, lookup_name_in_blocks, + maybe_absorb_scoping_blocks): New functions. + +1998-04-27 Alexandre Petit-Bianco + + * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if + previously set. + * jcf-parse.c (parse_source_file, java_error_count): New forward + and extern declarations. + (java_parse_abort_on_error): Macro moved. + (jcf_parse_source): fatal called if fopen fails. Now calls + parse_source_file. + (parse_source_file): New parse_only parameter. Reflects the + elimination of the second pass. + (yyparse): parse_source_file called with argument set to 0. + * jcf.h (JCF_ZERO): Sets java_source to zero. + * lex.c (java_init_lex): pass argument is gone. Function modified + to be called once during the analysis of a file. + (java_unget_unicode): Fixed typo in fatal message. + (java_get_line_col): Likewise. + (java_lval): Likewise. String literals no longer built during + second pass. + * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into + account. + * parse.h (MODIFIER_WFL): New macro. + (parse_check_super, parser_check_super_interface): Now return int. + (parser_chain_incomplete_item, not_builtin_p, + complete_method_decl): Declarations removed. + (build_method_invocation_stmt, build_invoke): Renamed using the + `patch' instead of `build' + (register-incomplete_type, obtain_incomplete_type, + java_complete_tree, java_complete_expand_method, + unresolved_type_p, create_jdep_list): New function declarations. + (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS, + END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted. + (jdep): New typedef on new struct _jdep. + (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL, + JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN, + JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED, + JDEP_RESOLVED_P): New macros. + (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD, + JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE, + JDEP_VARIABLE): New enum values and jdep kinds. + (jdeplist): New typedef on struct _jdeplist. + (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New + macros. + (CALL_EXPR_PRIMARY): New macro. + (struct parser_ctxt): Fields java_pass, current_method_decl, + method_decl_list deleted. New field jdeplist. + (INCOMPLETE_P): Macro deleted. + * parse.y (single_type_import_declaration:): Removed pass switch. + (type_import_on_demand_declaration): Likewise. + (field_declaration:): Removed pass switch on all sub rules. + (class_declaration:): Call the complete_class_decl removed on + class_body rules. + (method_declaration:): Removed second pass switch. No longer chain + methods decl when method_header reduced. + (method_header:): Sub rules no longer depend on pass switch. + (method_declarator:): Likewise. + (method_body:): Likewise. + (abstract_method_declaration:): Likewise. + (block_statement:): Likewise. + (local_variable_declaration:): Likewise. + (argument_list:): Likewise. + (method_invocation:): Likewise. Call to build_method_invocation_stmt + removed. Partial CLASS_EXPR tree node built instead. + (postfix_expression:): Removed pass switch on all sub rules. + (java_pop_parser_context): Free classd_list content. + (yyerror): Call obstrack_grow0 to finalize error message. + (check_class_interface_creation): Comment modified to reflect new + returned value meaning. Removed second pass switch. Return 1 if an + error was found, 0 otherwise. Adjust pointer on filename if a + leading path separator was found. + (maybe_create_class_interface_decl): Removed first pass switch + when linking the class decl to the class_list. Install a new + jdep_list for the class. + (add_superinterfaces): List of unresolved interfaces is + gone. Unresolved interfaces are directly added to the current + dependencies list. + (create_interface): Second pass shortcut removed. + ctpx->modifier_ctx access through MODIFIER_WFL. + (create_class): Second pass shortcut removed. Call to + register_incomplete_type replaces the call to + parser_chain_incomplete_item. + (complete_class_decl): Function removed. + (duplicate_declaration_error): New way of retrieving redeclared + item type. + (register_fields): Call to lookup_modifier_cl replaced by + MODIFIER_WFL. New way of handling unresolved type, using + unresolved_type_p and obtain_incomplete_type. + register_incomplete_type replaces call to parser_chain_incomplete_item. + (patch_stage): New static global variable. + (method_header): New way of handling unresolved type, using + unresolved_type_p and obtain_incomplete_type. patch_stage used to + indicates that the method decl needs to be patched. + (check_abstract_method_header): Call to lookup_modifier_cl + replaced by MODIFIER_WFL. + (method_declarator): Incomplete argument type are registered + calling register_incomplete_type. Patch on the declared method is + issued in that case. + (unresolved_type_p): New function. + (parser_check_super_interface): New comment to reflect function's + modified returned type (int). Function and has a new argument + this_wfl. Call to parse_error_context uses this_wfl instead of + relying on lookup_cl. + (parser_check_super): Comment reflects function's new returned + type (int). Function returns nonzero value on error. + (create_jdep_list, reverse_jdep_list, obtain_incomplete_type, + register_incomplete_type, jdep_resolve_class): New functions to + handle incomplete types in declarations. + (java_complete_class): Rewritten to work with the new incomplete + type handling scheme. + (complete_class_report_errors): Likewise. + (complete_method_decl): Removed: it jobs is now handled by + java_complete_class. + (do_resolve_class): Class loaded in not already loaded and not + found in Java source code. + (java_check_regular_methods, java_check_abstract_methods): Don't + call complete_method_decl anymore. + (lookup_modifier_cl, not_builtin_p): Functions deleted. + (read_import_dir): Got rid of the pass number dependency. + (declare_local_variables): New handling of unresolved types (patch + issued). + (source_start_java_method): New parameter level. Function called + with level set to 1 when argument types are potentially + unresolved. Called to complete the job with level set to 2 once + types are complete. + (source_end_java_method): Call to permanent_allocation + removed. Waiting to be replaced by a more suitable obstack + management. + (java_complete_expand_methods, java_complete_expand_method, + java_expand_finals): New functions. + (build_method_invocation_stmt): Renamed + patch_method_invocation_stmt. Extracts function call expression + (wfl) and arguments (args) from CALL_EXPR tree operands. + (build_invoke): Renamed patch_invoke. Fixed typo in fatal + call. Patch the function and argument operand of the CALL_EXPR + tree argument. + (patch_argument, java_complete_tree): New functions. + +1998-04-20 Per Bothner + + Recover from missing fields and methods (i.e. error instead of fatal). + * decl.c, java-tree.h (TYPE_identifier_node): New global constant. + * expr.c (expand_invoke): Recover from missing method. + (expand_java_field_op): Recover from missing field. + Inline references to java.lang.{Integer,Char,...}.TYPE. + * typeck.c (get_type_from_signature), java-tree.h: New function. + * class.c (add_method): Use get_type_from_signature. + (build_class_ref): Handle a class that was not found. + * typeck.c (convert): Handle conversion to pointers (for convenience). + * verify.c (verify_jvm_instructions): Use get_type_from_signature + instead of lookup_field to handle missing fields. + + * jcf-parse.c (process_zip_dir): Set java_source. + +1998-04-20 Brendan Kehoe + + * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME. + +1998-04-14 Alexandre Petit-Bianco + + * jcf-parse.c (load_class): Don't change input_filename before + calling jcf_parse_source (but still do it before calling + jcf_parse). + (jcf_parse_source): Assign input_filename after having saved the + parser context. + * lex.c (java_init_lex): Chain a WFL node to the import on demand + list. ctxp->modifier_ctx zeroed according to its new + definition. ctxp->filename initialized. Removed + JAVA_MODIFIER_CTX_UNMARK. + (java_unget_unicode): Update the character based column position. + (java_allocate_new_line): ref_count not used anymore. Always free + ctxp->p_line. Initialize c_line->char_col to 0. + (java_get_unicode): Update the character based column position. + (java_lex): Use ctxp->elc to store current position in source + file, at the beginning of the parsed token. Set modifier_ctx entry + corresponding to the parse modifier to a WFL node. Return a WFL + node when an identifier is parsed. + (java_lex_error): Now uses ctxp->elc to store current position in + source. + (build_wfl_node, java_is_eol, java_get_line_col): New functions. + * lex.h (build_wfl_node): New function definitions. + (struct java_line): ref_count and next fields are gone. New field + char_col. + (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN, + JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted. + (JAVA_COLUMN_DELTA): New macro. + (java_lc): New typedef on new struct _java_lc. + * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types. + (parse_error_context, parse_warning_context): Changed prototypes. + (java_get_line_col): Added as an available global function. + (JAVA_MODIFIER_CTX_UNMARK): Macro removed. + (IC_DECL): Replaced by macro IC_TYPE + (DEPEND_WFL): New macro. + (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first + wrong modifier. + (exit_java_complete_class): Removed a commented out statement. + (struct parser_ctxt): Added comments on fields. modifier_ctx is + now an array of tree nodes. Deleted fields line_list and + e_line. New field elc, to replace e_line. + * parse.y (array_type:): Build WFL node. + (qualified_name:): Build a single WFL node out of two. Retain + the location information of the first node in the resulting node. + (package_declaration:): Use package name as a WFL node + (single_type_import_declaration:): Use imported name as a WFL node. + (type_import_on_demand_declaration:): Use root of the imported + packages as a WFL node. + (field_declaration:): Removed unused local variable cl. + (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK. + (yyerror): New static elc. Removed static error_line, error_pos. + New local code_from_source. Save ctxp->elc into elc at the first + pass. Call java_get_line_col to get a string of the line where + the error occurred. + (debug_line): Removed static function. + (parse_error_context, parse_warning_context): Parameter cl is now + a WFL node. Use its value to initialize ctxp->elc. + (redefinition_error): Parameter cl is now a WFL node. + (parse_add_interface): New parameter wfl. No longer call + lookup_cl, use wfl instead. + (check_class_interface_creation): Parameter cl is now a WFL node. + (maybe_create_class_interface_decl): Likewise. + (add_superinterfaces): New function. + (create_interface): Removed local cl, node, super_decl, + super_decl_type. Function now uses id as a WFL node. Better + warning/error report on obsolete or forbidden mix of + modifiers. Now calls add_superinterfaces to register interfaces. + (create_class): Removed local cl, node. Local variable id is used + as a WFL node. Better error report on forbidden modifier + mix. Uses add_superinterfaces to register interfaces. + (find_field): Argument cl is now a WFL node. Now store the WFL + node of a fields that needs to be checked for their + initialization. + (method_header): Local variable node non longer used. Local + variable id replaces cl. + (check_modifiers_consistency): Local variable cl is now a WFL + node. + (method_declarator): Local variable cl replaced by parameter id. + (parser_qualified_name): Now uses parameter name as a WFL node. + (parser_check_super_interface): New parameter wfl, for achieve + greater accuracy during error reports. + (parser_chain_incomplete_item): New parameter named location. Used, + along the decl, to construct the incomplete item node. + (java_complete_class): resolve_class now uses WFL node extracted + from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE + where appropriate. + (complete_method_decl): Unresolved function's argument types are WFL. + (resolve_class): Parameter cl is now a WFL node. + (resolve_and_layout): Likewise. + (do_resolve_class): Likewise. Try first to use cl and then do the + lookup on the decl when calling check_pkg_class_access. + (complete_class_report_errors): Use IC_TYPE in place of + TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency + instead of doing a lookup over the decl. + (java_check_final): Use WFL info from field tree list. + (lookup_cl): Rewritten and returns a statically defined WFL node. + (lookup_modifier_cl): Now uses information from WFL nodes. + (process_imports): Likewise. + (read_import_dir): name and cl arguments replaced by a single WFL + node. Function modified accordingly. + (find_in_imports_on_demand): Now uses WFL node. + (check_pkg_class_access): cl argument is now a WFL node. + (declare_local_variables): Fixed to use WFL nodes. + (resolve_expression_name): Likewise. + (build_method_invocation_stmt): name_combo argument renamed + wfl. Function modified to use WFL nodes. + (build_invoke): cl used as a WFL node when calling build_expr_wfl. + (lookup_method_invoke): cl is now a WFL node. Added missing + IDENTIFIER_POINTER to class type decl name. + +1998-04-14 Dave Brolley + + * lang.c (init_parse): Now returns char* containing the filename. + +1998-04-10 Per Bothner + + * class.c (layout_class): Mangle repeated arg types to match cc1plus. + + * decl.c, java-tree.h (integer_four_node): New INTEGER_CST node. + * class.c (make_class_data): If flag_assume_compiled, initial class + state is CSTATE_PREPARED; make superclass and interfaces direct + references, rather than constant pool indexes. + +1998-04-09 Alexandre Petit-Bianco + + * parser.y: Include flags.h. Removed debug variable pl. + (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl. + (block:): Likewise. + (labeled_statement_nsi:): Generate debug info when reducing + expression_statement:. + (check_pkg_class_access): get_access_flags_from_decl invocation + fixed for new CLASS_* flags location. + (source_end_java_method): Save/restore parser context when + entering/leaving this routine. Restore lineno to its right value + before calling expand_end_bindings. + (build_method_invocation_stmt): build_invoke called with the + current line information. + (build_invoke): New argument cl. Wrap the function call around a + wfl node. + (refine_accessible_methods_list): Changed comment, removed + unnecessary code. + * parse.h: Fixed typo in comments. + (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location. + (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro. + (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1, + parser_ccb_indent. + * lex.c (java_lex): Record the last closing curly bracket of a + function. + * jcf-parse.c (jcf_parse_source): Now calls + java_check_methods. Clarified comment, fixed typo. + +1998-04-09 Dave Brolley + + * lang.c (init_parse): Expose for non USE_CPPLIB builds. + (finish_parse): Expose for non USE_CPPLIB builds. + +1998-04-08 Jeffrey A Law (law@cygnus.com) + + * lang.c (lang_print_xnode): New function. + +1998-04-03 Per Bothner + + * decl.c (class_dtable_decl), java-tree.h: New tree node. + * class.c (get_dispatch_vector, get_dispatch_table): New functions + used to build a class's dispatch table. + (make_class_data): Generate dispatch table if flag_assume_compiled. + Set dtable of class object to address of class_dtable_decl. + + * decl.c (int_decl_processing): Make soft_badarrayindex_node + be volatile and have side effects - generates better code. + + * class.c, expr.c, parse.y: CLASS_INTERFACE, CLASS_FINAL, etc: + These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs. + + * expr.c (expand_invoke): If class is final, method is + effectively final, so can call it directly. + + * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE): New macros. + + * Makefile.in, Make-lang.in: Add missing $(exeext)s. + +1998-03-19 Alexandre Petit-Bianco + + * parse.y (build_method_invocation_stmt): Removed extra argument + to build_invoke. + +1998-03-16 Alexandre Petit-Bianco + + * expr.c (dtable_indent): Now static global. + (expand_invoke): Now call invoke_build_dtable and + build_invokevirtual. + (invoke_build_dtable, build_invokevirtual): New functions. + * jcf-io.c (find_class): Defer issuing a warning by setting + jcf->outofsynch to 1. + * jcf-parse.c (jcf_out_of_synch): New function. + (load_class): Test this_jcf.outofsynch flag and call + jcf_out_of_synch accordingly. + * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in + comment indentation. + * lex.c (java_get_unicode): Fixed code indentation. + (java_lex): Create string literal. Fixed typo. Removed several + premature obstack_free. + * parse.h: New enums for name resolution and invocation mode. + (struct qualification): New data structure. + (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros. + (do_resolve_class, build_method_invocation_stmt, + breakdown_qualified, qualify_ambiguous_name, resolve_and_layout, + debug_line, identical_subpath_p, invocation_mode, + refine_accessible_methods_list, build_invoke, + lookup_method_invoke): New functions declared. + (build_invokevirtual, invoke_build_dtable, match_java_method, + build_field_ref, jcf_out_of_synch): New references to external + functions. + (struct parse_ctxt): Removed artificial_constructor field. + * parse.y: (array_type:): Type defined for this rule. + (class_type:): Installed default rule for interface_type:. + (array_type:): Now build Java array type. + (qualified_name:): Now use obstack_grow0. + (method_declaration:): Skip the artificial constructor added to + the list, if any. + (abstract_method_declaration:): Execute the code only during pass 1. + (block:): Installed default rule in block_statements:. + (block_statement:): Add the statement to the method during pass 2. + (statement_expression): Installed default rule for + method_invocation:. + (argument_list:): Added code to build the argument list. + (method_invocation:): Added call to create the method invocation + node. + (yyerror): Now use obstack_grow0. Removed bogus obstack_free. + (debug_line): New function for debug. + (complete_class_decl): No longer do something during pass 1. + (method_header): Use BUILD_PTR_FROM_NAME. + (parser_qualified_classname): Use obstack_grow0. Removed bogus + obstack_free. + (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified + function's main comment. + (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete + classes. + (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types. + (resolve_class): Now works with arrays. + (do_resolve_class, resolve_and_layout): New functions. + (java_check_regular_methods): Reverse method list before and after + having processed it. No longer set ctxp->artificial_constructor. + (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch + accordingly. Fixed typo in issued error message. Now use + obstack_grow0. + (find_in_imports_on_demand): Now use obstack_grow0. + (declare_local_variables): Use BUILD_PTR_FROM_NAME. + (source_end_java_method): Call expand_expr_stmt instead of + expand_expr. Calls it before calling expand_function_end. + (java_method_add_stmt): Do nothing if errors were found during + parsing. + (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo. + (build_method_invocation_stmt, build_invoke, invocation_mode, + lookup_method_invoke, refine_accessible_methods_list, + qualify_ambiguous_name, breakdown_qualified, identical_subpath_p): + New functions. + * typeck.c (build_java_signature): Properly end method signature + if return type skipped. + (match_java_method): New function. + +1998-03-16 Per Bothner + + * jcf-io.c (find_classfile): If USE_JCF_STDIO, fopen in binary mode. + +1998-02-25 Alexandre Petit-Bianco + + * expr.c (build_invoke_non_interface): New function. + (methods_ident, ncode_ident): Now static globals. + (expand_invoke): Use build_invoke_non_interface. + * java-tree.h (struct lang_decl): New field function_decl_body. + (DECL_FUNCTION_BODY): New macro. + * jcf-parse.c (jcf_parse_source): Deeper check before setting + CLASS_FROM_SOURCE_P. + (parse_source_file): Fixed typos. Call java_layout_parsed_class + before starting pass 2. Call to java_generate_parsed_class replaced + by java_register_parsed_class. + * lex.c: Fixed typo in header. Some line width related formating. + * lex.h: Some line width related formating. + * parse.h (source_end_java_method, resolve_expression_name, + complete_class_decl, maybe_create_class_interface_decl, + check_class_interface_creation): New static function declarations. + (java_layout_parsed_class, java_method_add_stmt): New function + declarations. + (struct parser_ctxt): Field mark_class_generate removed. New + fields class_list and artificial_constructor. + * parse.y: Fixed typo in header. + (class_declaration:): Call complete_class_decl when class body + parsed. + (method_declaration:): Call source_end_java_method in pass 2 when + the method body is defined. + (postfix_expression:): Do expression name resolution on sub-rule + name during pass 2. + (create_class, create_interface): Merged common pieces. + (check_class_interface_creation, maybe_create_class_interface_decl): + New functions. + (complete_class_decl): New function. + (register_fields): Fixed line width related typo. + (method_header): Correctly skip first argument when fixing + argument line. Changed the loop. + (java_check_circular_reference): Now use ctxp->class_list. + (java_complete_class): Removed start/stop marking. + (java_check_regular_methods): Now takes a class decl as an + argument. Add default constructor if none were encountered. + (java_check_methods): Now use ctxp->class_list. Changed call to + java_check_regular_methods. + (source_start_java_method): Set DECL_ARG_TYPE for each function + arguments. + (source_end_java_method, java_method_add_stmt): New functions. + (java_generate_parsed_class): No longer exists. + (java_layout_parsed_class, java_register_parsed_class): New functions. + (resolve_expression_name): New function. + +1998-02-12 Alexandre Petit-Bianco + + * jcf-parse.c: (parse_source_file): Check on errors after init lex. + * lex.c: (java_init_lex): Defer ctxp->java_pass initialization + until pass initializations are done. Call read_import_dir with + pass set to 0. + * parse.h: (lookup_modifier_cl): New function declared. + (INTERFACE_FIELD_MODIFIERS): New macro. + (OBSOLETE_MODIFIER_WARNING): New macro. + * parse.y: (register_fields): Class type and current field name in + local variables. Check modifier(s) if adding field(s) to an interface. + (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING + and report errors using the faulty modifier line context. + (lookup_modifier_cl): New function. + (read_import_dir): Detect and report default import processing + failure. + +1998-02-11 Brendan Kehoe + + Add a pair of -fassume-compiled/-fno-assume-compiled options. + * class.c (is_compiled_class): Return 1 after making sure it + qualifies as loaded, if FLAG_ASSUME_COMPILED is set. + * lang-options.h: Add -fassume-compiled/-fno-assume-compiled. + * java-tree.h (flag_assume_compiled): Add decl. + * lang.c (lang_f_options): Add the flag. + (flag_assume_compiled): Add decl, default to 0. + +1998-02-11 Alexandre Petit-Bianco + + * class.c (class_depth): Call to load_class uses extra VERBOSE arg. + (is_compiled_class): Likewise. + (layout_class): Likewise. + (layout_class): Detect and lay out classes defined in source code. + (interface_of_p, add_interface_do, may_add_interface): New + function. + (add_interface): Now use add_interface_do. + (add_method_1): New function. + (add_method): Now use add_method_1. + (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG. + (complete_start_java_method): New function. + (start_java_mehod): Now call complete_start_java_method. + * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg. + (expand_invoke): Likewise and fixed typo. + *gjava.c: (print_super_field): Use new argument to find_class + DO_CLASS_FILE. + (main): Likewise. + *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE. + (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME, + QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on + IDENTIFIER_NODE. + (CLASS_COMPLETE_P): New flag on TYPE_DECL. + (add_method_1, push_class): New prototypes. + *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument. + *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip + directory where the class was found. + (find_class): New argument DO_CLASS_FILE. Function find_class + modified accordingly. + *jcf-parse.c: (fix_class_path): New function. + (load_class): Use new VERBOSE argument. load_class now finds and + loads/parses .class/.java files. Save read_state of current_jcf + if necessary. + (java_parser_abort_on_error): New macro. + (jcf_parse_source, parse_source_file): New function. + (jcf_parse): Fixed typo. + (yyparse): Call parse_source_file () only. + (process_zip_dir): Fixed typo, fix zdir->filename_length when + writing the real class name back in the zip directory entry. + (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null. + (jcf_figure_file_type): Fixed bogus alloc and bcopy. + *jcf.h: (typedef struct JCF): New fields java_source and zipd. + (find_class): Prototype fixed. + *lex.c: Added 1998 time stamp. + Removed all static global variables, moved into the parser + context data structure.. Now include unistd.h if SEEK_SET not + defined. + (java_init_lex): Rewritten. + (java_sneak_unicode): Modified current unicode access in current line. + (java_unget_unicode): Likewise. + (java_allocate_new_line): New allocation management. + (java_read_char): Modified access and storage of unget_utf8_value. + New way of processing current unicode. + (java_store_unicode, java_read_unicode): Fixed typo in declaration. + (java_get_unicode): Now use the parser context. + (java_lineterminator): Likewise. + (java_lex): Now used java_lval argument (pointer to YYSTYPE), part + of the reentrant parser implementation. Function now use the + parser context data structure and java_lval. Fixed production of + the float and double constant "out of range" error message. Fixed + obstack use. Return integer value when hitting a modifier. Now + return type for TRUE, FALSE and other predefined types. Return + identifier as a TREE_LIST list containing the current line context + as the TREE_VALUE sub-node. + (java_unicode_2_utf8): Fixed typo in declaration. + (java_lex_error): Now use the parser context data structure. + *lex.h: Added 1998 time stamp. + (struct java_line): New fields ref_count and next. + (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN, + JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros. + (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed. + *parse.h: Added 1998 time stamp. + (java_parse_source_file): Renamed from parse_source_file. + (YYERROR_NOW, YYNOT_TWICE): Fixed. + (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS, + INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS, + JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL, + THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS, + END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class, + CLASS_OR_INTERFACE, INCOMPLETE_P): New macros. + (struct parser_ctxt): New data structure to keep the parser context. + *parse.y: Added 1998 time stamp, got rid of static global variables. + (java_error_count, ctxp): New global variables. + (%union): New value field. + (numeric_type, integral_type): Rules removed. + (primitive_type): Rule defined to handle integral, float, double and + boolean types. + (qualified_name, package_declaration, + single_type_import_declaration, type_import_on_demand_declaration, + modifiers, class_declaration, super, interfaces, + interface_type_list, class_body, field_declaration, + field_declaration, variable_declarators, variable_declarator, + variable_declarator_id, method_declaration, method_header, + formal_parameter_list, formal_parameter, method_body, block, + static, interface_declaration, extends_interfaces, + abstract_method_declaration, local_variable_declarators): Rules now + define actions. + (force_error, do_warning): New global statics. + (push_parser_context, parser_context_save_global, + parser_context_restore_global, pop_parser_context): New functions. + (yyerror): Now uses the global parser context. Fixed use of obstack. + (parse_error, parse_error_context, parse_warning_context, + java_accstring_lookup, redefinition_error, check_modifiers, + parser_add_interface, create_interface, create_class, find_field, + duplicate_declaration_error, register_fields, method_header, + check_modifiers_consistency, check_abstract_method_header, + method_declarator, parser_qualified_classname, + parser_check_super_interface, parser_check_super, + parser_chain_incomplete_item, java_check_circular_reference, + layout_class_from_source, java_complete_class, + complete_method_decl, resolve_class, complete_class_report_errors, + java_check_final, check_method_redefinition, + java_check_regular_methods, java_check_abstract_methods, + java_check_methods, lookup_java_interface_method2, + lookup_java_method2, lookup_cl, find_name_in_single_imports, + process_imports, find_in_imports, read_import_entry, + read_import_dir, find_in_imports_on_demand, + check_pkg_class_access, not_builtin_p, declare_local_variables, + source_start_java_method, java_generate_parsed_class): New + functions. + *typeck.c: (signature_include_return): New global variable. + (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether + to add the function returned type in the signature. + +1998-02-09 Brendan Kehoe + + * jcf-io.c (open_in_zip): Use strncmp and LEN. + +1998-01-29 Dave Brolley + + * Make-lang.in (java.info): Added. + (java.install-info): Added + +1998-01-27 Brendan Kehoe + + * Makefile.in (clean): Also remove java/parse.c. + +1998-01-26 Brendan Kehoe + + Add a pair of -fbounds-check/-fno-bounds-check options. + * lang.c (lang_decode_option): Add code to grok arguments. + (flag_bounds_check): Add decl. + (lang_f_options): New array w/ the option in it. + * java-tree.h (flag_bounds_check): Add decl. + * lang-options.h: New file. + * expr.c (build_java_arrayaccess): Use flag_bounds_check instead + of a static macro value. + (JAVA_ARRAY_EXCEPTION): Delete macro. + +1998-01-23 Per Bothner + + * typeck.c (build_java_array_type): Fix two bugs in previous change. + * expr.c (build_anewarray): Add missing promote_type. + +1998-01-22 Per Bothner + + Add array types with known length to optimize bounds checking. + * typeck.c (build_java_array_type): Take length parameter. + (java_array_type_length, build_prim_array_type): New functions. + * java-tree.h: Update for new functions. + * expr.c, typeck.c, verify.c: Update build_java_array_type calls. + * class.c: Use build_prim_array_type. + * expr.c (can_widen_reference_to): Handle known-length array types. + (verify_jvm_instructions): Keep track of integer push instructions + followed by newarray/anewarray, so we can build known-length arrays. + (JAVA_ARRAY_DATA_OFFSET): Replace by ... + (java_array_data_offset): New function. + (build_java_array_length_access): New function. Optimize if constant. + (build_java_arrayaccess): Constant fold bounds check. + (expand_java_newarray, expand_java_anewarray): Replaced by ... + (build_newarray, build_anewarray): New functions. + (ARRAY_NEW_NUM, ARRAY_NEW_PTR): Use build_{a,}newarray. + * verify.c (merge_types): Handle known-lengh array types. + +1998-01-19 Per Bothner + + * expr.c (expand_byte_code): Fix performace bug, which caused + searching linenumber_table to be linear rather than constant. + +1997-12-12 Per Bothner + + * Makefile.in (BISON, BISONFLAGS): Add missing macros. + + * decl.c, java-tree.h (soft_fmod_node): New global. + * decl.c (init_decl_processing): Define __builtin_fmod. + * expr.c (build_java_binop): Implement TRUNC_MOD_EXPR for REAL_TYPE + using __builtin_fmod. + +1997-12-04 Alexandre Petit-Bianco + + * keyword.h: New file, output of keyword.gperf as processed by + gperf. + * lex.c (java_lex_init): Initialize java_error_flag. + * parse.c (YYERROR_NOW): Uses java_error_flag. + * parse.y: New static java_error_flag. Useless definition of + buffer_error gone. + * parse.y (java_error): Portable error recovery using + java_error_flag (not yet completely tuned). + +1997-12-04 Brendan Kehoe + + * Makefile.in (parse.c): Use $(srcdir) for parse.y. + +1997-12-03 Alexandre Petit-Bianco + + * Makefile.in: (JAVA_OBJS): New object jcf-parse.o. + (parse.c, lex.c, keyword.h): New rules for Java source code + front-end. + * parse.c: Renamed into jcf-parse.c. + * jcf-parse.c (yyparse): Invoke the parser to process Java source code. + * keyword.gperf: New file, Java keywords. + * parse.y: New file, Java language grammar. + * parse.h: New file, Java language grammar definitions. + * lex.c: New file, Java language lexer. + * lex.h: New file, Java language lexer definitions. + +1997-12-03 Per Bothner + + * decl.c (clinit_identifier_node), java-tree.h: New global. + * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P): Removed. + * verify.c (verify_jvm_instructions): Inline use of removed macros. + * expr.c (expand_java_field_op): Check for invalid assignment + to final field. + + * jcf-reader.c (get_attribute): Test for wrong attribute length. + +1997-10-27 Per Bothner + + * verify.c (verify_jvm_instructions): When processing a handler, + attempt to set the current_subr to the right value. + (More complicated code combines Sep 17 and Oct 22 versions.) + +1997-10-24 Per Bothner + + * class.c (push_class): Figure out (guess) name of source file. + * parse.c (set_source_filename): Set DECL_SOURCE_FILE of class decl. + (give_name_to_class): Don't guess source name; use DECL_SOURCE_FILE. + (parse_class_file): Change return type from int to void. + Call debug_start_source_file/debug_end_source_file. + + * expr.c (build_java_binop): Fix masking 2nd operand. + * decl.c (init_decl_processing): Set sizetype first. + +1997-10-22 Per Bothner + + * verify.c (verify_jvm_instructions): Don't set current_subr to NULL. + (Revert Sep 17 change.) + +1997-10-21 Alexandre Petit-Bianco + + * parse.c (process_zip_dir): Skip ZIP entries not bearing the + .class extension in their name and fix thing so we don't process + them parse_zip_file_entries(). + (parse_zip_file_entries): Cleaned unused local variables. + +1997-10-20 Per Bothner + + * expr.c (can_widen_reference_to): Allows equal array element types. + (expand_byte_code): PRE_RET must expand OPERAND_VALUE (to get index). + * jcf-dump.c (RET): Get (and print) index. + + * verify.c (verify_jvm_instructions case OPCODE_anewarray): + Promote element type to POINTER_TYPE. + +1997-10-20 Alexandre Petit-Bianco + + * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir, + find_in_current_zip, jcf_figure_file_type): Moved from + jcf-reader.c to parse.c. + * zextract.c: (read_zip_archive): takes file_comment_length possible + field into account. + +1997-10-20 Per Bothner + + * verify.c (verify_jvm_instructions): Var can also be promoted to int. + + * verify.c (merge_types): Handle array types even better ... + +1997-10-17 Per Bothner + + * expr.c (java_stack_pop): Fix use of NULL_TREE for TYPE_SECOND. + + * java-tree.h (PUSH_FIELD): Set DECL_ARTIFICIAL. + * class.c (make_class_data): Don't build fields_decl if no fields. + When building fields_decl, skip if DECL_ARTIFICIAL. + + * expr.c (java_stack_swap): Update stack_type_map. + * verify.c (merge_types): Handle array types better. + +1997-10-15 Per Bothner + + * class.c (add_field): Don't promote short integral fields to + int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't. + * expr.c (push_value): Promote and convert short integral values. + + * decl.c, java-tree.h (integer_two_node): New constant node. + * verify.c (merge_types): Check for TYPE_RETURN_ADDR. + +1997-10-15 Alexandre Petit-Bianco + + * class.c (append_gpp_mangled_type): Use function argument + unpromoted type to generate mangled name. + +1997-10-13 Alexandre Petit-Bianco + + * constants.c (build_constant_data_ref): Now uses current_class + instead of main_class. + (build_constants_constructor): Now uses current_class instead of + main_class. + * zipfile.h: (struct ZipFileCache): Now defined here. Declaration + of the global variable SeepZipFiles done here. + * zextract.c (read_zip_archive): extra_field optional field taken + into account while computing the position of the class file in the + archive. + * verify.c (verify_jvm_instructions): Use current_jcf to search + the constant pool. + * parse.c (load_class): First search for the class to load in the + current zip file. Saves current_jcf (restored before returning + from that function). Don't call JCF_FINISH in the class was found + in the current ZIP file. + (jcf_parse): If the class was found in the current ZIP file, save + its tree_constant_pool (for later reuse). + (parse_class_file): New function. Process each method defined in + the current class and record the class as to be later registered. + (yyparse): Rewritten. Figure the type of the current file and switch + accordingly. + * lang.c: New global variable current_jcf. + (lang_init): Removed compiling_from_source test (done later, in + yyparse). Removed call the jcf_parse (). + * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values. + (typedef struct JCF): New fields seen_in_zip (to mark a class found + in the current ZIP file) and zip_offset (offset to the class data in + the current zip file). + * jcf-reader.c: zipfile.h included. + localToFile: New ZipFileCache static global variable + (parse_zip_file_entries): New function. Browse the current ZIP + file directory and process each class found. + (process_zip_dir): New function. Register each class found in the + ZIP file directory. The class aren't parsed but a valid JCF is + link to each of them. + (find_in_current_zip): New function. Search for a class in the + current ZIP file directory. If found, prepare the class so that it + can be loaded. + (jcf_figure_file_type): New function. Examine the file structure + to figure a class file, a ZIP file. If none of these categories are + matched, a source file is assumed. + * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h). + SeenZipFile: New global variable. + (open_in_zip): Use zipmember's length to accelerate the search for + a member. If zipmember was NULL and zip file successfully read, + return 0. + * java-tree.h: New global variable current_jcf declared. Added + declaration for current_constant_pool_tags, current_constant_pool_data, + current_constant_pool_length, current_constant_pool_data_ref. + (struct lang_type): Augmented with two fields. struct JCF *jcf (to + store the JCF of classes seen in a zip file) and tree *constant_pool + (to save a loaded class constant pool). current_class declared here. + * expr.c (expand_invoke): Use current_jcf instead of main_jcf to + retrieve method_ref_constant. + (PUSHC): java_push_constant_from_pool now uses current_jcf. + (OBJECT): get_class_constant now uses current_jcf. + (ARRAY_NEW_PTR): get_class_constant now uses current_jcf. + (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf. + (expand_invoke): Now uses current_class instead of main_class + (build_class_init): Now uses current_class instead of main_class + * class.c: New static global variable registered_class. + (register_class): New function. + (emit_register_class): Modified to use registered_class instead of + main_class + (is_compiled_class): Now take into account class seen in the archive. + +1997-10-06 Per Bothner + + * except.h: Renamed to: java-except.h. + * parse.c, except.c, expr.c, verify.c: Update #include accordingly. + * except.c: Add semi-working (commented out) implementation. + + * expr.c (expand_iinc): Add needed flush_quick_stack. + * parse.c (set_source_filename): New function. + (give_name_to_class): Set input_filename from package.classname.java. + + * jcf-io.c (find_class): Don't look first in ".". + +1997-10-01 Alexandre Petit-Bianco + + * zextract.c (read_zip_archive): Now takes into account the + extra_field field. + * expr.c (can_widen_reference_to): Modified to handle sub-interfaces. + +1997-09-20 Per Bothner + + * constants.c, java-tree.h (build_internal_class_name): New function. + (alloc_class_constant): Re-implement using build_internal_class_name. + * class.c (make_class_data): Likewise. + * class.c (hashUtf8String): Make hash algorithm match String.hashCode. + +1997-09-17 Per Bothner + + * verify.c (verify_jvm_instructions): Temporarily set current_subr + to NULL before pushing an exception handler target. + + * expr.c (flush_quick_stack): Save from low stack indexes to high. + (java_stack_swap, java_stack_dup): Re-write to be safe from + clobbering registers. + (build_class_init): New function. + +1997-09-17 Alexandre Petit-Bianco + + * typeck.c (build_java_array_type): Temporary use + permanent_obstack to create the array 'length' field. + * expr.c (lookup_label): Temporay use permanent_obstack to create + label if not found. + * class.c (push_super_field): Tempory use permanent_obstack. + +1997-09-15 Alexandre Petit-Bianco + + * typeck.c (type_for_mode): Now handles double_type_node and + float_type_node. + * verify.c (verify_jvm_instructions): The instruction following + the wide bytecode is checked. OPCODE_ret added to the list of + wide. + +1997-09-11 Alexandre Petit-Bianco + + * class.c (make_class): Temporary use permanent_obstack. Set the + class CLASS_P field to 1. + (push_class): Temporary use permanent_obstack. + (set_super_info): Temporary use permanent_obstack. + (add_method): Temporary use permanent_obstack, set + METHOD_TRANSIENT(). + (add_field): Temporary use permanent_obstack. Sets + FIELD_VOLATILE() and FIELD_TRANSIENT(). + (build_class_ref): Temporary use permanent_obstack if the class + isn't compiled. + (build_static_field_ref): Temporary use permanent_obstack when + creating field's rtl. + (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT, + ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods + and fields. Function finalized, as far as flag handling. + (push_class_static_dummy_field): Temporary use permanent_obstack. + (emit_register_class): Force generation of class registration at + -O3 or deeper. + * decl.c (end_java_method): Call permanent_allocation() before + returning. + * expr.c (can_widen_reference_to): Added comment to interface + handling, fixed typo. + (lookup_field): Now uses CLASS_P() to correct FIXME + (expand_invoke): Verification on public && !static && + !abstract moved into soft_lookupinterfacemethod (kaffe). + Use Object class dtable if objectref is an array when expanding + invokeinterface. + (java_push_constant_from_pool): Temporary use permanent_obstack + for CONSTANT_string + * parse.c (get_ref_constant): Temporary use permanent_obstack to + create constant references. + (get_constant): Temporary use permanent_obstack to create constant. + (load_class): Temporary use permanent_obstack to load class. + (jcf_parse): Temporary use permanent_obstack to perform class + layout. + * typeck.c: (parse_signature_string): Temporary use permanent_obstack. + (build_java_signature): Temporary use permanent_obstack. + * verify.c: (verify_jvm_instruction): removed unnecessary verification + on ACC_SUPER flag. + * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined. + (FIELD_VOLATILE, FIELD_TRANSIENT): Defined. + (CLASS_P): Defined + +1997-09-11 Per Bothner + + * class.c (append_gpp_mangled_type): Fix typo. + (emit_register_class): Use main_class to get class object, rather + than looking for no-longer-existing static decl starting with _CL. + * typeck.c (parse_signature_type): Promote array element type + if it is a RECORD_TYPE. + +1997-09-10 Per Bothner + + * class.c (push_class_static_dummy_field): New function. + (mangle_static_field): New. Do G++-style mangling of static fields. + (layout_class): Mandle static fields here, not in add_field. + (build_class_ref): The class object is now a dummy static field. + * decl.c (find_local_variable): Look for best, instead of first match. + * expr.c (push_type): Always promote_type, not just for RECORD_TYPE. + (build_java_athrow): Don't check here if exception is Throwable. + * java-tree.h (TYPE_UNSET): Renamed to TYPE_UNKNOWN. + (TYPE_USED): Removed. No longer used ... + * parse.c (jcf_parse): Call push_class_static_dummy_field. + * verify.c (push_pending_label): New function. + (push_pending_block): Renamed to check_pending_block. + (merge_types): Remove unneeded suuport for TYPE_UNUSED. + (verify_jvm_instructions): Only reset prev_eh_ranges (to force + re-checking possible handlers) after a store (less wasted work). + Check for null handler (finally) before calling add_handler. + Various changes to (finally?) correctly handle try/finally. + +1997-09-09 Brendan Kehoe + + * class.c: Include stdio.h. + +1997-09-04 Per Bothner + + * expr.c (expand_invoke): Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS) + to make sure class is initialized before static/special invoke. + + * verify.c (verify_jvm_instructions): On a store instruction, + call find_local_variable to force pre-allocation of decl and rtx. + * decl.c (push_jvm_slot): Set DECL_REGISTER on stack slots. + +1997-09-03 Per Bothner + + * class.c (build_class_ref): Strip off "promoted_" if need be. + (make_field_value): Call build_java_signature when needed. + (layout_class): Don't make_function_rtl if METHOD_ABSTRACT. + * expr.c (build_java_athrow): Don't push_value of exception. + (build_java_binop): Implement COMPARE_L_EXPR and COMPARE_G_EXPR to + match specification of [fd]cmp[lg] for NaNs. + (expand_byte_code): Add support for exception handler ranges. + * except.c: Add skeleton for EH code-generation. + * verify.c (merge_types): Treat all promoted integral types as equal. + * constants.c (build_constants_constructor): To force creation of + current_constant_pool_data_ref, call build_constant_data_ref. + + * javaop.def (lload): Fix typo. + * jcf-dump.c (main): Clear filename to prevent possibly-bad free. + +1997-09-02 Brendan Kehoe + + * parse.c: Don't include function.h. + +1997-08-27 Per Bothner + + * except.[ch]: New files. + * Makefile.in (JAVA_OBJS): Add except.o + * expr.c: Temporary warning about unimplemented exceptions. + * verify.c: Verify exception handlers. + + * jcf-dump.c (disassemble_method): Print exception table. + +1997-08-27 Alexandre Petit-Bianco + + * expr.c (verify_jvm_instructions): Started a thorough + verification of invoke* bytecodes. + (expand_byte_code): flush quick stack if PC is the target of a + branch. and undef RET (conflicting with config/i386/i386.h). + (expand_java_arrayload): Fixed bogus cast, when Boolean type is + used. + (expand_invoke): Now handles invokeinterface and do more + verification according to the bytecode. + (lookup_field): Don't try to load the class if processing + dtable_type. + (can_widen_reference_to): Now handles interfaces. + * decl.c (init_decl_processing): New global variable + soft_lookupinterfacemethod_node, declared in java-tree.h. + Call set_super_info on string_type_node. + * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now + defined. + * class.c (set_super_info): Fills the CLASS_* flags according to + access_flags. + (get_access_flags_from_decl): Handles all class flags. + +1997-08-26 Per Bothner + + * class.c (add_method): Zero out newly-allocated DECL_LANG_SPECIFIC. + * parse.c (yyparse): Check for abstract method, and missing code. + * expr.c (expand_byte_code): Change interface. + * lang.c (put_decl_node): Print promoted types prettier. + * verify.c (verify_jvm_instruction): Change interface. + Partial support for scanning exception table. + For load instructions, handle promoted integral types. + +1997-08-21 Per Bothner + + * verify.c: New file, with contents moved from expr.c. + * expr.c: Bunch of stuff (mostly verification) moved to verify.c. + * typeck.c (is_array_type_p): Moved here from expr.c. + * java-tree.h: Add some now-needed function declarations. + * Makefile.in (JAVA_OBJS): Added verify.o. + +1997-08-20 Alexandre Petit-Bianco + + * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the + METHOD_ABSTRACT flag. + + * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4. + (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros. + (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5 + + * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global + variables. + (start_java_method): Hook for SYNCHRONIZED methods. + + * expr.c (build_java_jsr, build_java_ret): New functions + (JSR,PRE): New macros + (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured. + (verify_jvm_instructions): tableswitch, lookupswitch, + monitorenter, monitorexit, goto_w: verified. + (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label + (build_java_monitor): New function. + (MONITOR_OPERATION): Modified to call build_java_monitor() + (verify_jvm_instructions): Started a thorough verification of + invoke* bytecodes. + +1997-08-19 Per Bothner + + Support verification of jsr/ret subroutines (used for try/finally). + * decl.c (return_address_type_node): New type node. + * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE, + RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR, + LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED): New macros. + (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED, + TYPE_USED): New macros for special types in type_map. + + * java-tree.h (BCODE_JUMP_TARGET): Renamed to BCODE_TARGET. + (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET): Replaced by + BCODE_JUMP_TARGET. + * expr.c (expand_byte_code): Fix logic to warn of unused instructions. + + * expr.c (can_widen_reference_to): New function. + (pop_type): Use it. + (merge_type_state): Support handling start of subroutine. + (push_pending_block): Return char* error message, instead of calling + fatal on an error. Also handle subroutines. + (verify_jvm_instructions): Handle errors from push_poending_block. + Support jsr and ret instructions. + +1997-08-19 Per Bothner + + * jcf-io.c (find_classfile): Fix thinko. + * jcf-dump.c: Add CONVERT2 (to match changed javaop.def). + +1997-08-12 Jason Merrill + + * Makefile.in (BISON): Remove. + +1997-08-07 Per Bothner + + * Makefile.in: Convert to autoconf. + * config-lang.in (outputs): Added java/Makefile. + + * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in: + Rename cc1java to jc1. + + * lang.c (init_parse, finihs_parse): New functions #ifdef USE_CPPLIB. + * Makefile.in (INTERNAL_CFLAGS): Add @extra_c_flags. + + * class.c (class_depth): Do load_class if needed. + + Mostly better verification. + * decl.c (pushdecl): Set TYPE_STUB_DECL for a type. + (init_decl_processing): Change return type of soft_checkcast. + * expr.c (expand_java_CHECKCAST): Do push_value of the "casted" value. + * lang.c (put_decl_string, put_decl_node, lang_printable_name, + lang_print_error): New functions. + (lang_init): Set global hook print_error_function to lang_print_error. + * expr.c: In the type_map ptr_type_node is only used for null now. + (pop_type, merge_types): Hence ptr_type_node matches any reference. + (merge_types): Dererence pointer to record types before comparing. + (decode_newarray_type, merge_types): On error just return NULL. + (build_java_binop): Add preliminary implementation (with warning) + for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]). + (lookup_label): Set DECL_IGNORED_P (for dwarf2out). + (expand_compare, expand_java_goto, expand_java_call): Don't + push_pending_block, since that only makes sense when verifying. + (merge_type_state): Different return codes. + (push_pending_block): A block may need to be verified more than once. + (expand_byte_code): Warn about unused code at code generation time. + (verify_jvm_instruction): Changed logic, since code may need to be + re-verified if type-state has changed. Also, better error handling. + Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof. + Improve newarray, anewarray, ?aload, athrow, + * java-tree.h (LABEL_CHANGED): New macro. + +1997-08-05 Alexandre Petit-Bianco + + * decl.c (soft_athrow_node): New global variable initialized. + * javaop.def (i2b, i2c, i2s): Invoke CONVERT2 + * typeck.c (convert): Added support for REAL_TYPE. + (convert_to_char): New function. + (convert): Handle CHAR_TYPE. + * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/ + SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT. + (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to + promoted type. + (verify_jvm_instructions): Added break a the end of bogus unop: label. + (OPCODE_astore): Pop an int operand from the type stack + (OPCODE_astore): Push the promoted type onto the stack + (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b. + (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified + to Use The Right Things. + (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as + compatible with INT. BOOLEAN is made equivalent to BYTE. + (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull, + OPCODE_ifnonnull): Now supported. + (build_java_athrow): New function. + +1997-08-04 Per Bothner + + Rename method name to match G++ (and fix mangling). + * class.c (layout_class): Replace method name of by class name. + (make_method_value): Do inverse renaming of constructor from . + * java-tree.h (DECL_CONSTRUCTOR_P): New macro. + * typeck.c (lookup_java_constructor): New function. + * expr.c (expand_invoke): If method_name is , call + lookup_java_constructor to find constructor. + + * parse.c (get_constant): Handle CONSTANT_Float and CONSTANT_Double. + +1997-08-01 Alexandre Petit-Bianco + + * parse.c (get_class_constant): Modified to handle array "classes" + * typeck.c (set_local_type): Bug fixed when filling type_map[] with + wide type. + (convert): Modified to handle real type. + * java-tree.h (soft_badarrayindex_node, soft_anewarray_node, + soft_multianewarray, soft_newarray_node, soft_throw_node): New global + variables declared. + * decl.c (soft_badarrayindex_node, soft_anewarray_node, + soft_multianewarray, soft_newarray_node, soft_throw_node): New + global variables initialized. + (find_local_variable): Handles the case of a pointer + (end_java_method): Restore the use of one more scope + * expr.c (build_java_arraynull_check, build_java_arrayaccess, + build_java_array_length_access, expand_java_arrayload, + expand_java_arraystore, expand_java_array_length, + expand_java_multianewarray, expand_java_anewarray, + build_java_check_indexed_type, is_array_type_p, + build_java_throw_out_of_bound_exception): New functions. + (STORE_INTERNAL): Now forces type of the decl to be type of the value. + (OPCODE_arraylength, OPCODE_newarray, OPCODE_astore, + OPCODE_aload): Implemented code for verification. + (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM + ARRAY_NEW_MULTI): Macro defined. + (CONVERT): Modified to invoke convert(). + (case OPCODE_aload2): Fixed index typo from 2 to 1. + +1997-07-31 Per Bothner + + * class.c (push_class): Set DECL_ARTIFICIAL (for dbxout.c). + (build_class_ref, is_compiled_class): Handle pointer-to-record types. + (make_class_data): Field name needs '/' as package prefix. + * expr.c (type_stack_dup, java_stack_dup): Fix fencepost errors. + +1997-07-25 Per Bothner + + Implement debug information for local variables. + * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT, + DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC, + DECL_LOCAL_SLOT_CHAIN): New macros. + (struct lang_decl_var): New type. + * parse.c (give_name_to_locals): Move to decl.c. + * decl.c (give_name_to_locals): Re-written to Do The Right Thing. + (start_java_method): Re-write parameter handling. + (pending_local_decls): New global variable. + (push_jvm_slot, maybe_pushlevels, maybe_poplevels): New functions. + (find_local_variable): Accept pc so we can skips decls not in range. + (struct binding_level): Add end_pc field. + * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels. + (various): Change so current pc gets passed to find_local_variable. + + * decl.c (init_decl_processing): Re-arrange fields in + class_type_node and and method_type_node to match kaffe 0.9.1. + * class.c (make_method_value, make_class_data): Update + initializations to match. + +1997-07-16 Per Bothner + + * class.c (unicode_mangling_length, emit_unicode_mangled_name, + append_gpp_mangled_name, append_gpp_mangled_type): New functions. + (push_super_field): New function. + (make_class_data): Handle inheritance of class static initializer. + (layout_class): New name mangling. + * constants.c (build_constant_data_ref): Init type of data array + to a one-element array. + (build_constants_constructor): Set DECL_SIZE from complete array type. + * decl.c: Rename class_type, object_type etc to class_type_node, + object_type_node etc. Make former inherit from latter. + * expr.c (expand_invoke): Add cast of function address. + * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE): New. + * parse.c (yyparse): Don't call layout_class here. + * typeck.c (build_java_array_type): Set TYPE_ARRAY_ELEMENT. + +1997-06-14 Per Bothner + + * decl.c, class.c: Update method type to match latest Kaffe snapshot. + * constants.c (lookup_name_constant): Renamed to alloc_name_constant. + (alloc_class_constant): New. + * expr.c (expand_invoke): Make sure method's class is initialized. + * class.c (interits_from_p, emit_register_class): New functions. + * parse.c (yyparse): Call emit_register_class. + +1997-06-09 Per Bothner + + * constants.c: New file, to handle constant pool. + * Makefile.in (JAVA_OBJS): Add constants.o. + * decl.c (init_decl_processing): Update, fix, finish various structs. + (pushdecl_top_level): New. + * parse.c (layout_class): Moved to class.c. + * expr.c (java_push_constant_from_pool): New function. + * class.c (build_class_ref): Make work fully + (make_class_data): Emit super-class, constant pool, interface vector. + +1997-06-03 Per Bothner + + java-tree.h (DECL_SIGNATURE, BCODE_EMITTED): Remove. + (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P): New. + * class.c (class_depth): New function. + (lookup_named_class): Replaced by new function lookup_class. + * decl.c (object_type_node, string_type_node): New. + Remove various types that we no longer need. + * expr.c (verify_jvm_instructions): New separate verifier pass. + (push_type, pop_type): New functions for verifier. + (type_stack_dup, pop_argument_types, merge_types): Likewise. + (expand_byte_code): Simplify, since we assume already verified. + (expand_invoke): Now mostly works. + * javaop.def: Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w. + * lang.c (main_class): Move to parse.c. Don't make_class yet. + * parse.c: Wait to allocate class object until we know its name. + (layout_class): Calculate DECL_VINDEX for each virtual method. + * typeck.c (get_array_type): Rename to ... + (build_java_array_type): ... and provide working implementation. + (build_java_signature): New function - build Java signature of type. + (set_java_signature): New function - cache signature with type. + (lookup_java_method): New function. + +1997-05-06 Per Bothner + + * class.c (ident_subst): Take extra SUFFIX parameter. + (add_field): Set DECL_ASSEMBLER_NAME of static fields; more. + (set_constant_value, build_static_field_ref, is_compiled_class): New. + (build_class_ref): Actually implement. + * decl.c, java-tree.h: Renamed some xx_type to xx_type_node. + * decl.c (builtin_function): New. + (init_decl_processing): Update for current Kaffe. Declare some + builtin Kaffe functions. + * expr.c (build_address_of): New. + (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST): + Renamed (from expand_java_new etc), and added working implementations. + (build_field_ref): Now also handle static fields. + (expand_invoke): Implement invokestatic, and start implement rest. + * java-opcodes.h: Use javaop.def to avoid duplicated list. + * javaop.def: Rename invokevirt -> invokevirtual. + * lang.c (use_handles): Removed. + * parse.c: Add support for ConstantValue attribute. + Handle nested loading of a class. (JPOOL_UTF): New. + +1997-03-11 Per Bothner + + * expr.c (expand_java_pushc): Support #ifndef REAL_ARITHMETIC case. + +1997-02-27 Per Bothner + + * Make-lang.in (java.install-man): New empty rule. + * typeck.c (set_local_type): New function. + * expr.c (STORE_INTERNAL): Call find_local_variable, + not find_stack_slot. Call set_local_type. + +1997-02-12 Per Bothner + + * java-tree.h: Various new macros for constructing RECORD_TYPEs, + and building RECORD_TYPE CONSTRUCTORs. + Also support for creating Utf8Const objects from an INDETIFIER_NODE. + + * lang.c (use_handles): Change the default to 0. + * decl.c: Define and build class_type, field_type, utf8const_type. + * class.c (make_class_data, make_field_value, + get_access_flags_from_decl, build_class_ref, build_utf8_ref, + hashUtf8String, strLengthUtf8, mangled_classname: + Functions to build reflective data structures. + * parse.c (yyparse): Call make_class_data. + + * jcf-io.c (open_class, find_classfile): New functions. + * jcf-dump.c: Support reading classfile from explicitly-named + class file (without CLASSPATH searching). + +1996-10-24 Per Bothner + + * jcf-reader.c: Add parameter list to HANDLE_CONSTANT_Utf8. + * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8): + Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here. + (get_constant): Now trivial for CONSTANT_Utf8. + + * jcf.h: Make NEW_CPOOL the default. + * jcf.h, jcf-reader.c, parse.c: Remove support for !NEW_CPOOL. + +1996-10-24 Per Bothner + + New directory. + -Copyright (C) 2014 Free Software Foundation, Inc. +Copyright (C) 1996-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/java/ChangeLog-2013 b/gcc/java/ChangeLog-2013 deleted file mode 100644 index 5ab19210cb7..00000000000 --- a/gcc/java/ChangeLog-2013 +++ /dev/null @@ -1,22898 +0,0 @@ -2013-12-19 Jakub Jelinek - - PR other/59545 - * class.c (hashUtf8String): Compute hash in unsigned type. - * javaop.h (WORD_TO_INT): Avoid signed integer overflow. - -2013-11-22 Andrew MacLeod - - * java-gimplify.c: Add required include files from gimple.h. - -2013-11-22 David Malcolm - - * class.c (maybe_layout_super_class): Update comment. - * decl.c (java_add_stmt): Remove use of input_filename macro. - * jcf-parse.c (set_source_filename): Remove use of - input_filename macro. - (parse_class_file): Remove use of input_line and input_filename - macros. - (java_parse_file): Remove use of input_filename macro. - -2013-11-18 Richard Sandiford - - * class.c, expr.c: Replace tree_low_cst (..., 0) with tree_to_shwi - throughout. - -2013-11-18 Richard Sandiford - - * class.c, expr.c: Replace host_integerp (..., 0) with - tree_fits_shwi_p throughout. - -2013-11-14 Andrew MacLeod - - * java-gimplify.c: Include only gimplify.h and gimple.h as needed. - -2013-11-14 Diego Novillo - - * builtins.c: Include stor-layout.h. - Include stringpool.h. - * class.c: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - * constants.c: Include stringpool.h. - Include stor-layout.h. - * decl.c: Include stor-layout.h. - Include stringpool.h. - Include varasm.h. - * except.c: Include stringpool.h. - Include stor-layout.h. - * expr.c: Include stringpool.h. - Include stor-layout.h. - * jcf-parse.c: Include stringpool.h. - * mangle.c: Include stringpool.h. - * resource.c: Include stringpool.h. - Include stor-layout.h. - * typeck.c: Include stor-layout.h. - Include stringpool.h. - * verify-glue.c: Include stringpool.h. - -2013-11-12 Andrew MacLeod - - * java-gimplify.c: Include gimplify.h. - -2013-11-07 Jeff Law - - * builtins.c (initialize_builtins): Provide __builtin_trap. - -2013-10-29 David Malcolm - - Patch autogenerated by refactor_symtab.py from - https://github.com/davidmalcolm/gcc-refactoring-scripts - revision 58bb219cc090b2f4516a9297d868c245495ee622 - - * decl.c (java_mark_decl_local): Update for conversion of symtab types - to a true class hierarchy. - -2013-10-14 David Malcolm - - * lang.c (java_handle_option): Update for introduction of - gcc::dump_manager. - -2013-09-25 Tom Tromey - - * Make-lang.in (jvspec.o): Remove. - (CFLAGS-java/jvspec.o): New variable. - ($(XGCJ)$(exeext), java_OBJS): Use java/jvspec.o - (java/jvspec.o-warn): Rename from jvspec.o-warn. - (JAVA_TREE_H, java/jcf-dump.o, java/boehm.o, java/builtins.o) - (java/class.o, java/constants.o, java/decl.o, java/except.o) - (java/expr.o, java/jcf-depend.o, java/jcf-parse.o) - (java/jvgenmain.o, java/lang.o, java/mangle.o, java/mangle_name.o) - (java/resource.o java/typeck.o, java/win32-host.o) - (java/verify-glue.o, java/verify-impl.o, java/zextract.o) - (java/java-gimplify.o, java/jcf-io.o, java/jcf-path.o): Remove. - -2013-09-25 Tom Tromey - - * Make-lang.in (jvspec.o): Don't use subshell. - -2013-06-05 Jan Hubicka - - * class.c (emit_register_classes_in_jcr_section): Use DECL_PRESERVE_P - instead of mark_decl_referenced. - -2013-05-29 Jan Hubicka - - * decl.c (java_mark_decl_local): Update for new symtab flags. - -2013-05-22 Matthias Klose - - * jvspec.c (jvgenmain_spec): Add %I to cc1 call. - -2013-05-16 Jason Merrill - - * Make-lang.in (jc1$(exeext)): Use link mutex. - -2013-05-06 Jakub Jelinek - - PR libgcj/57074 - * class.c (emit_symbol_table): Use array type of the - right size for the_syms_decl and its DECL_INITIAL, instead - of symbols_array_type. Set TREE_TYPE (the_syms_decl) to it. - (emit_assertion_table): Use array type of the right size - for table_decl and its DECL_INITIAL. - -2013-04-15 Gerald Pfeifer - - * gcj.texi (Configure-time Options): Refer to GCC, not gcc. - (Resources): Adjust reference to Mauve. - Remove link to java.sun.com. - Refer to GCC, not gcc. - -2013-04-09 Richard Biener - - * expr.c (build_java_binop): Pass a type to build_int_cst. - -2013-03-22 Kai Tietz - - * lang.c (put_decl_node): Don't iterate over end_params_node. - -2013-01-03 Jakub Jelinek - - * jcf-dump.c (version): Update copyright notice dates. - -2012-11-16 Diego Novillo - - Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec) - - * boehm.c: Use new vec API in vec.h. - * class.c: Likewise. - * constants.c: Likewise. - * decl.c: Likewise. - * expr.c: Likewise. - * java-tree.h: Likewise. - * jcf-parse.c: Likewise. - * resource.c: Likewise. - * verify-glue.c: Likewise. - -2012-11-15 Jan Hubicka - - * builtins.c (define_builtin): Accept ECF flags and - use set_call_expr_flags. - (initialize_builtins): Update. - -2012-10-01 Lawrence Crowl - - * Make-lang.in (JAVA_OBJS): Add dependence on hash-table.o. - (JCFDUMP_OBJS): Add dependence on hash-table.o. - (jcf-io.o): Add dependence on hash-table.h. - * jcf-io.c (memoized_class_lookups): Change to use type-safe hash table. - -2012-09-24 Lawrence Crowl - - * decl.c (java_init_decl_processing): Change to new double_int API. - * jcf-parse.c (get_constant): Likewise. - * boehm.c (mark_reference_fields): Likewise. - (get_boehm_type_descriptor): Likewise. - -2012-07-30 Laurynas Biveinis - - * jcf.h (CPool): Use the "atomic" GTY option for the tags field. - (bootstrap_method): Likewise for the bootstrap_arguments field. - -2012-07-16 Steven Bosscher - - * java-gimplify.c: Include dumpfile.h instead of tree-dump.h - * Make-lang.in: Fix dependencies. - -2012-07-11 Steven Bosscher - - * java-tree.h (force_evaluation_order): Remove prototype. - * expr.c (force_evaluation_order): Remove unused function. - -2012-07-11 Steven Bosscher - - * decl.c: Do not include libfuncs.h. - * class.c: Do not include defaults.h. - * jvgenmain.c: Likewise. - * magnle.c: Likewise. - * Make-lang.in (decl.o): Fix dependencies. - -2012-07-08 Steven Bosscher - - * verify.h: Do not include system.h and coretypes.h here. - * verify-impl.c: Include them here instead. - -2012-07-05 Uros Bizjak - - * jcf-io.c (read_zip_member): Initialize d_stream. - -2012-05-31 Steven Bosscher - - * resource.c: Do not include output.h. - -2012-05-21 John David Anglin - - PR java/52815 - * class.c (emit_register_classes_in_jcr_section): Revise placement - of #ifdef JCR_SECTION_NAME. - -2012-04-22 Jan Hubicka - - * class.c (build_utf8_ref): Do not mark varpool node as needed. - -2012-04-20 Jan Hubicka - - * class.c (make_local_function_alias): Do not mark symbol referenced. - -2012-04-11 Rainer Orth - - * jcf-dump.c (print_constant): Cast JPOOL_USHORT2, JPOOL_USHORT1 - results to long to match formats. - -2012-04-11 Andrew Haley - - * jcf-reader.c (jcf_parse_bootstrap_methods): Add - ATTRIBUTE_UNUSED. - -2012-04-11 Andrew Haley - - * jcf.h (bootstrap_method): New. - (BootstrapMethods): New. - (JCF): Add BootstrapMethods. - (enum cpool_tag): Add MethodHandle, MethodType, and InvokeDynamic. - * jcf-reader.c (jcf_parse_bootstrap_methods): New. - (jcf_parse_constant_pool): Handlers for MethodHandle, MethodType, - and InvokeDynamic. - (jcf_parse_bootstrap_methods): New. - * javaop.def (invokedynamic): New opcode. - * jcf-parse.c (get_constant): An unknown constant type should not - be an internal error, but a fatal one. Make it so. - * jcf-dump.c (HANDLE_BOOTSTRAP_METHODS_ATTRIBUTE): New. - (HANDLE_END_BOOTSTRAP_METHODS): New. - (print_constant): Handlers for MethodHandle, MethodType, and - InvokeDynamic. - -2012-04-02 Rainer Orth - - * class.c (emit_register_classes_in_jcr_section): Set DECL_USER_ALIGN. - Clear TREE_READONLY. - -2012-03-29 Steven Bosscher - - PR java/52730 - * class.c (emit_register_classes_in_jcr_section): New function. - (emit_Jv_RegisterClass_calls): New function, split out from ... - (emit_register_classes): ... here. Reorganize. Do not call - output_constant. - -2012-01-23 Andreas Schwab - - * lang.c (java_init_options_struct): Set - frontend_set_flag_trapping_math. - -2012-01-01 Jakub Jelinek - - * jcf-dump.c (version): Update copyright notice dates. - -2011-12-03 Matthias Klose - - * expr.c (SPECIAL_WIDE): Fix typo in message. - -2011-11-23 Jeffrey A Law (law@cygnus.com) - - * lang.c (java_init_options_struct): Disable optimizations - which assume a NULL pointer dereference will cause a fault. - -2011-11-07 Richard Henderson - - * builtins.c (compareAndSwapInt_builtin): Use can_compare_and_swap_p. - (compareAndSwapLong_builtin): Likewise. - (compareAndSwapObject_builtin): Likewise. - (VMSupportsCS8_builtin): Likewise. - -2011-11-02 Rainer Orth - - * Make-lang.in (jvspec.o): Pass SHLIB instead of SHLIB_LINK. - -2011-10-15 Tom Tromey - Dodji Seketeli - - * jcf-parse.c (set_source_filename): Adjust to the new map API. - -2011-10-11 Michael Meissner - - * class.c (build_static_field_ref): Delete old interface with two - parallel arrays to hold standard builtin declarations, and replace - it with a function based interface that can support creating - builtins on the fly in the future. Change all uses, and poison - the old names. Make sure 0 is not a legitimate builtin index. - * decl.c (java_init_decl_processing): Ditto. - * except.c (compareAndSwapLong_builtin): Ditto. - (compareAndSwapObject_builtin): Ditto. - (putVolatile_builtin): Ditto. - (define_builtin): Ditto. - (check_for_builtin): Ditto. - * expr.c (rewrite_arglist_getcaller): Ditto. - (expand_java_field_op): Ditto. - -2011-08-24 Joseph Myers - - * Make-lang.in (CFLAGS-java/jcf-io.o, CFLAGS-java/jcf-path.o): - New. - (java/jcf-io.o, java/jcf-path.o): Remove explicit compilation - rules. - -2011-08-18 Peter Collingbourne - - * expr.c (expand_invoke) Use the type of the method rewrite - target. - -2011-08-10 Rainer Orth - - * jcf-dump.c (print_constant): Cast first frexp arg. - -2011-08-08 Rainer Orth - - * Make-lang.in ($(XGCJ)$(exeext)): Add $(EXTRA_GCC_LIBS). - -2011-07-19 Richard Guenther - - * builtins.c (static): Use fold_build_pointer_plus. - * class.c (make_class_data): Likewise. - (build_symbol_entry): Likewise. - * except.c (build_exception_object_ref): Likewise. - * expr.c (build_java_arrayaccess): Likewise. - (build_field_ref): Likewise. - (build_known_method_ref): Likewise. - (build_invokevirtual): Likewise. - -2011-07-06 Richard Guenther - - * decl.c (java_init_decl_processing): - Merge calls to build_common_tree_nodes and build_common_tree_nodes_2. - -2011-06-21 Andrew MacLeod - - * builtins.c: Add sync_ or SYNC__ to builtin names. - * expr.c: Add sync_ or SYNC__ to builtin names. - -2011-06-07 Richard Guenther - - * decl.c (java_init_decl_processing): Call build_common_nodes, - build_common_nodes_2 at the beginning. Remove then duplicate - initializations. - -2011-06-07 Richard Guenther - - * decl.c (java_init_decl_processing): Properly initialize - size_type_node. - -2011-05-30 Joern Rennecke - - PR middle-end/46500 - * expr.c: Include "tm.h" . - -2011-05-26 Nathan Froyd - - * decl.c (poplevel): Don't access TREE_TYPE of BLOCKs. - * expr.c (build_jni_stub): Likewise. - -2011-05-24 Joseph Myers - - * Make-lang.in ($(XGCJ)$(exeext)): Use libcommon-target.a instead - of prefix.o. - -2011-05-20 Joseph Myers - - * Make-lang.in ($(XGCJ)$(exeext)): Don't explicitly use intl.o and - version.o. - (JCFDUMP_OBJS): Remove errors.o, version.o and intl.o. - (JVGENMAIN_OBJS): Remove errors.o and intl.o. - (java/jcf-dump.o, java/jvgenmain.o): Depend in $(DIAGNOSTIC_H). - * jcf-dump.c: Include diagnostic.h. - (main): Initialize diagnostics. - * jvgenmain.c: Include diagnostic.h. - (main): Initialize diagnostics. - -2011-05-11 Nathan Froyd - - * java-tree.h (TYPE_ARGUMENT_SIGNATURE): Use TYPE_MINVAL. - -2011-05-07 Eric Botcazou - - * java-tree.h (global_bindings_p): Adjust prototype. - * decl.c (global_bindings_p): Return bool. - -2011-05-05 Nathan Froyd - - * expr.c (expand_java_switch): Call build_case_label. - (expand_java_add_case): Likewise. - -2011-04-29 Richard Guenther - - PR middle-end/48819 - * constants.c (build_constants_constructor): Use ptr_type_node for - temp. - -2011-04-20 Jim Meyering - - * jcf-parse.c (java_parse_file): Remove useless if-before-free. - -2011-04-18 Jim Meyering - - * jcf-parse.c: Fix typo in comment. - -2011-04-14 Nathan Froyd - - * decl.c (poplevel): Use BLOCK_CHAIN and block_chainon. - -2011-04-12 Nathan Froyd - - * java-tree.h (union lang_tree_node): Check for TS_COMMON before - calling TREE_CHAIN. - -2011-04-11 Martin Jambor - - * decl.c (java_mark_decl_local): Call cgraph_get_node instead of - cgraph_node and handle returned NULL. - -2011-03-25 Kai Tietz - - * jcf-parse.c (java_read_sourcefilenames): Use filename_cmp - instead of strcmp. - (set_source_filename): Likewise. - * win32-host.c (jcf_open_exact_case): Likewise. - -2011-03-21 Kai Tietz - - PR target/12171 - * lang.c (java_attribute_table): Adjust table. - -2011-02-13 Joseph Myers - - * jvspec.c (jvgenmain_spec): Remove %{a*}. - -2011-01-21 Kai Tietz - - PR bootstrap/47215 - * decl.c (java_init_decl_processing): Remove - va_list_type_node related type initializations. - -2011-01-11 Kai Tietz - - PR bootstrap/47215 - * decl.c (java_init_decl_processing): Initialize - long_integer_type_node. - -2011-01-07 Kai Tietz - - PR bootstrap/47215 - * decl.c (java_init_decl_processing): Initialize unsigned_type_node. - -2011-01-07 Kai Tietz - - * decl.c (java_init_decl_processing): Setup va_list_type_node. - -2011-01-03 Jakub Jelinek - - * jcf-dump.c (version): Update copyright notice dates. - -2010-12-15 Dave Korn - - * decl.c (java_init_decl_processing): Initialise integer_three_node. - * lang.c (put_decl_node): Handle nested function decls. - -2010-12-07 Joseph Myers - - * jcf-parse.c: Don't include assert.h. - (java_parse_file): Use gcc_assert. - -2010-12-03 Joseph Myers - - * lang.opt (static-libgcj): New option. - -2010-12-01 Joseph Myers - - * jcf-parse.c: Don't include toplev.h. - * Make-lang.in (java/jcf-parse.o): Don't depend on toplev.h. - -2010-11-30 Joseph Myers - - * boehm.c: Don't include toplev.h. - * Make-lang.in (java/boehm.o): Don't depend on toplev.h. - -2010-11-30 Joseph Myers - - * expr.c, lang.c, mangle.c, mangle_name.c, typeck.c, - verify-glue.c: Don't include toplev.h. - * Make-lang.in: Dependencies for above files changed to remove - toplev.h. - -2010-11-29 Joseph Myers - - * boehm.c: Include "config.h" instead of . - * builtins.c: Don't include . - * class.c: Don't include "stdio.h". - (O_BINARY): Don't define here. - * jcf-depend.c: Don't include . - (jcf_dependency_set_dep_file, jcf_dependency_init, - jcf_dependency_write): Use gcc_assert. - * jcf-io.c (O_BINARY): Don't define here. - * jcf-path.c: Don't include "tm.h". - (jcf_path_init): Use getenv instead of GET_ENVIRONMENT. - * resource.c: Don't include "stdio.h". - (O_BINARY): Don't define here. - * verify-impl.c: Don't include . - -2010-11-17 Joseph Myers - - * jcf-parse.c (java_parse_file): Take no arguments. - * java-tree.h (java_parse_file): Update prototype. - -2010-11-09 Joern Rennecke - Andrew Haley - - PR java/46386 - * config/pdp11/t-pdp11 (java/constants.o-warn): Remove. - -2010-11-12 Joseph Myers - - * Make-lang.in (jvspec.o, java/lang.o): Use $(OPTS_H). - * lang.c (java_handle_option): Take location_t parameter. - -2010-11-10 Joseph Myers - - * expr.c (expand_java_field_op): Use %' in diagnostic. - * jcf-parse.c (java_parse_file): Use %' in diagnostics. - * jvspec.c (lang_specific_driver): Use %' in diagnostic. - * lang.c (java_post_options): Use %' in diagnostics. - -2010-11-06 Joern Rennecke - - PR middle-end/46314 - * class.c: Include target.h. - (make_local_function_alias): - Use targetm.asm_out.generate_internal_label. - * expr.c (lookup_label, generate_name): Likewise. - -2010-11-03 Joern Rennecke - - PR bootstrap/44335 - * jfc-parse.c (target.h): Include. - (handle_constant): Use targetm.words_big_endian and - targetm.float_words_big_endian. - (get_constant): Use targetm.float_words_big_endian. - -2010-10-13 Richard Henderson - - * lang.c (java_eh_personality): Update call to - build_personality_function. - -2010-10-12 Joseph Myers - - * Make-lang.in (java/lang.o): Use $(OPTIONS_H) instead of - options.h. - -2010-10-11 Nathan Froyd - - * decl.c (java_init_decl_processing): Use build_function_type_list - instead of build_function_type. - * jcf-parse.c (java_emit_static_constructor): Likewise. - * builtins.c (initialize_builtins): Likewise. - -2010-10-08 Joseph Myers - - * lang.c (java_init_options_struct): New. Split out from - java_init_options. - (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define. - -2010-10-04 Andi Kleen - - * Make-lang.in (xgcj, jc1, jcf-dump, jvgenmain): - Add + to build rule. - -2010-09-29 Joseph Myers - - * lang.opt: Don't use VarExists. - -2010-09-29 Joseph Myers - - * java-tree.h (flag_filelist_file, flag_assert, flag_jni, - flag_force_classes_archive_check, flag_redundant, flag_newer, - flag_use_divide_subroutine, flag_use_atomic_builtins, - flag_use_boehm_gc, flag_hash_synchronization, - flag_check_references, flag_optimize_sci, flag_indirect_classes, - flag_indirect_dispatch, flag_store_check, - flag_reduced_reflection): Remove. - * jcf-dump.c (flag_newer): Remove. - * jcf.h (quiet_flag): Remove. - * parse.h (quiet_flag): Remove. - -2010-09-28 Richard Henderson - - * lang.c: Include "target.h". - (java_eh_personality): Use targetm.except_unwind_info. - * Make-lang.in (lang.o): Update deps. - -2010-09-27 Andrew Haley - - PR java/45773 - * jvgenmain.c (main): Fix arg processing. - -2010-09-22 Joseph Myers - - * jvspec.c (lang_specific_driver): Handle OPT__help instead of - OPT_fhelp. - * lang.opt (-CLASSPATH, -all-warnings, -bootclasspath, -classpath, - -dependencies, -encoding, -extdirs, -include-directory, - -include-directory=, -output-class-directory, - -output-class-directory=, -resource, -resource=, - -user-dependencies): New. - -2010-09-16 Richard Guenther - - * jcf-parse.c (current_file_list): Remove. - (java_parse_file): Use build_translation_unit_decl. Adjust. - -2010-09-03 Joseph Myers - - * lang.opt (d): New. - -2010-09-03 H.J. Lu - - PR java/45504 - * jvgenmain.c (main): Check "-D XXX=YYY". - -2010-09-02 Joseph Myers - - * jvspec.c (jvgenmain_spec): Don't handle -fnew-verifier. - -2010-09-02 Joseph Myers - - * lang.opt (CLASSPATH, bootclasspath, classpath, encoding, - fCLASSPATH=): Mark as Java options and as aliases. - * jvspec.c (jvgenmain_spec): Don't handle -fCLASSPATH*. - (lang_specific_driver): Don't handle options marked as aliases. - * lang.c (java_handle_option): Don't handle OPT_fCLASSPATH_. - -2010-08-22 Joseph Myers - - * Make-lang.in (jvspec.o): Update dependencies. - * jvspec.c: Include opts.h. - (PARAM_ARG): Remove. - (find_spec_file): Do not add leading -specs=. - (lang_specific_driver): Use cl_decoded_option structures. - * lang.opt (C, CLASSPATH, D, bootclasspath, classpath, encoding, - extdirs, fmain=, s-bc-abi): New options. - -2010-08-20 Nathan Froyd - - * class.c: Use FOR_EACH_VEC_ELT. - * expr.c: Likewise. - * jcf-parse.c: Likewise. - * resource.c: Likewise. - -2010-08-16 Joseph Myers - - * lang.opt (MD_, MMD_, version): Mark RejectDriver. - -2010-08-05 David Daney - - * class.c (build_utf8_ref): Fix code formatting from previous commit. - -2010-08-05 David Daney - - * class.c (build_utf8_ref): Make decl DECL_USER_ALIGN. - -2010-07-27 Joseph Myers - - * lang.c (java_handle_option): Update prototype and return value - type. - -2010-07-27 Joseph Myers - - * lang.c (java_option_lang_mask): New. - (java_init_options): Update prototype. - (LANG_HOOKS_OPTION_LANG_MASK): Define. - -2010-07-15 Nathan Froyd - - * java-tree.h: Carefully replace TREE_CHAIN with DECL_CHAIN. - * boehm.c: Likewise. - * class.c: Likewise. - * decl.c: Likewise. - * expr.c: Likewise. - * jcf-parse.c: Likewise. - * typeck.c: Likewise. - * verify-glue.c: Likewise. - -2010-07-08 Manuel López-Ibáñez - - * boehm.c: Include diagnostic-core.h in every file that includes - toplev.h. - * class.c: Likewise. - * constants.c: Likewise. - * decl.c: Likewise. - * except.c: Likewise. - * expr.c: Likewise. - * jcf-parse.c: Likewise. - * mangle.c: Likewise. - * mangle_name.c: Likewise. - * resource.c: Likewise. - * typeck.c: Likewise. - * verify-glue.c: Likewise. - -2010-07-05 Nathan Froyd - - PR bootstrap/44825 - * class.c (make_class_data): Cast result of VEC_length calls to int. - -2010-07-05 Nathan Froyd - - * constants.c (build_constants_constructor): Use build_constructor - instead of build_constructor_from_list. - * class.c (make_method_value): Likewise. - (get_dispatch_table): Likewise. - (make_class_data): Likewise. - (emit_indirect_register_classes): Likewise. - (emit_symbol_table): Likewise. - (add_assertion_table_entry): Likewise. - (emit_assertion_table): Likewise. - (make_field_value): Use build_constructor_single instead of - build_constructor_from_list. - -2010-06-28 Nathan Froyd - - * java-tree.h (struct lang_type) [catch_classes]: Change type to a - VEC. - * except.c (prepare_eh_table_type): Call CONSTRUCTOR_APPEND_ELT - instead of tree_cons. - * class.c (make_class): Add dummy entry to TYPE_CATCH_CLASSES. - (emit_catch_table): Adjust for new type of TYPE_CATCH_CLASSES. - -2010-06-28 Steven Bosscher - - * lang.c: Do not include except.h - * except.c: Likewise. - (doing_eh): New, moved from except.c (in gcc/) but removed the - do_warning flag. - (maybe_start_try): Update doing_eh call. - * Make-lang.in: Update dependencies. - -2010-06-23 Anatoly Sokolov - - * decl.c (java_init_decl_processing): Use double_int_to_tree instead - of build_int_cst_wide. - * boehm.c (set_bit): Remove. - (mark_reference_fields): Use double_int type for 'mask' argument. - Use double_int_setbit instead of set_bit. - (get_boehm_type_descriptor): Use double_int_setbit instead of - set_bit. Use double_int_to_tree instead of build_int_cst_wide. - -2010-06-10 Gerald Pfeifer - - * gcj.texi: Move to GFDL version 1.3. Fix copyright years. - -2010-06-08 Laurynas Biveinis - - * jcf-reader.c (jcf_parse_constant_pool): Use typed GC allocation. - - * jcf-parse.c (java_parse_file): Likewise. - (process_zip_dir): Likewise. - - * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Likewise. - (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Likewise. - - * expr.c (add_type_assertion): Likewise. - - * decl.c (make_binding_level): Likewise. - (java_dup_lang_specific_decl): Likewise. - - * constants.c (set_constant_entry): Likewise. - (cpool_for_class): Likewise. - - * class.c (add_method_1): Likewise. - (java_treetreehash_new): Likewise. - - * java-tree.h (struct lang_type): Add variable_size GTY option. - (struct lang_decl): Likewise. - - * jch.h (struct cpool_entry): Likewise. - - * java-tree.h (java_treetreehash_create): Remove parameter ggc. - - * except.c (prepare_eh_table_type): Update - java_treetreehash_create call. - - * class.c (add_method_1): Update java_treetreehash_create call. - (java_treetreehash_create): Remove parameter gc. Use - htab_create_ggc. - -2010-06-04 Joseph Myers - - * jvspec.c (lang_specific_driver): Use GCC-specific formats in - diagnostics. - -2010-05-30 Steven Bosscher - - * except.c: Include tm.h. - -2010-05-28 Joseph Myers - - * jvspec.c (lang_specific_driver): Use fatal_error instead of - fatal. Use warning instead of error for warnings. - -2010-05-28 Nathan Froyd - - * expr.c (get_symbol_table_index): Add spaces in expression. - -2010-05-28 Nathan Froyd - - * java-tree.h (method_entry): Declare. Declare VECs containing it. - (struct lang_type): Change type of otable_methods, atable_methods, and - itable_methods to VECs. Fix comment for atable_methods. - (emit_symbol_table): Take a VEC instead of a tree. - (get_symbol_table_index): Take a VEC * instead of a tree *. - * class.c (add_table_and_syms): Take a VEC instead of a tree. - (emit_symbol_table): Update for changed parameter type. - * expr.c (get_symbol_table_index): Likewise. - -2010-05-27 Steven Bosscher - - * buildings.c: Pretend to be a backend file by undefining - IN_GCC_FRONTEND (still need rtl.h here). - -2010-05-26 Nathan Froyd - - * java-tree.h (struct lang_decl_func): Change type of throws_list - field to a VEC. - * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): Adjust for changed type - of DECL_FUNCTION_THROWS. - * class.c (make_method_value): Likewise. - -2010-05-26 Nathan Froyd - - * class.c (utf8_decl_list): Delete. - (build_utf8_ref): Remove references to it. - * java-tree.h (all_class_list): Delete. - (predef_filenames): Delete. - (enum java_tree_index) [JTI ALL_CLASS_LIST,JTI_PREDEF_FILENAMES]: - Delete. - * jcf-parse.c (parse_roots): Decrease size to 2. - (current_file_list): Convert to a VEC. - (all_class_list): Declare. - (jcf_parse): Adjust for new type of all_class_list. - (java_layout_seen_class_methods): Likewise. - (predefined_filenames): Declare. - (add_predefined_file): Use it. - (predefined_filename_p): Likewise. - (java_parse_file): Adjust for new type of current_file_list. - -2010-05-25 Jakub Jelinek - - * lang.c (java_classify_record): Return RECORD_IS_INTERFACE - for interfaces. - - PR debug/43260 - * java-tree.h (pending_static_fields): New extern declaration. - (java_write_globals): New prototype. - * lang.c (LANG_HOOKS_WRITE_GLOBALS): Define. - * decl.c (java_mark_class_local): When clearing DECL_EXTERNAL - of a static field push it into pending_static_fields vector. - * class.c (pending_static_fields): New variable. - (add_field): If static field is not DECL_EXTERNAL, push it into - pending_static_fields vector. - (java_write_globals): New function. - -2010-05-24 Nathan Froyd - - * expr.c (quick_stack): Change type to a VEC. Update comment. - (tree_list_free_list): Delete. - (flush_quick_stack): Update for quick_stack type change. - (push_value): Likewise. - (pop_value): Likewise. - -2010-05-23 Steven Bosscher - - * java-gimplify.c: Do not include tm.h, toplev.h. - * typeck.c: Do not include tm.h. - * mangle_name.c: Do not include tm.h. - * jcf-dump.c: Do not include tm.h, ggc.h. - * class.c: Do not include rtl.h, tm_p.h, target.h, except.h, cgraph.h. - * decl.c: Do not include tm.h, rtl.h, function.h, expr.h, except.h, - and timevar.h. - * jcf-parse.c: Do not include tm.h and tm_p.h. - * resource.c: Do not include tm.h, rtl.h, flags.h, obstack.h, - target.h, and expr.h. - * except.c: Do not include tm.h, rtl.h, function.h. - * builtins.c: Do not include convert.h. Explain why RTL headers - have to be included here. - * verify-glue.c: Do not include tm.h. - * jcf-depend.c: Do not include tm.h. - * jcf-reader.c: Include ggc.h. - * jcf-io.c: Do not include tm.h, toplev.h. - * expr.c: Do not include tm.h, rtl.h, expr.h, except.h, tm_p.h, - gimple.h. - * lang.c: Do not include rtl.h, expr.h. - * Make-lang.in: Update dependencies. - -2010-05-23 Steven Bosscher - - * jcf-parse.c: Include bitmap.h. - * Make-lang.in: Update dependencies. - -2010-05-20 Jakub Jelinek - - PR debug/43521 - * decl.c (start_java_method): Set DECL_ARTIFICIAL on the 'this' - PARM_DECL. - -2010-05-19 Anatoly Sokolov - - * jcf-parse.c (get_constant): Use double_int_to_tree instead of - build_int_cst_wide_type. - -2010-05-18 Nathan Froyd - - * expr.c (pop_arguments): Fix use of undeclared variable. - -2010-05-18 Nathan Froyd - - * expr.c (expand_java_multianewarray): Use build_call_vec instead of - build_call_list. - (pop_arguments): Return a VEC instead of a tree. Take a method type - rather than a list of argument types. - (rewrite_rule): Change signature. of rewrite_arglist member. - (rewrite_arglist_getcaller): Update signature. - (rewrite_arglist_getclass): Likewise. - (maybe_rewrite_invocation): Update for rewrite_arglist change. - (build_known_method_ref): Take a VEC instead of a tree. - (invoke_build_dtable): Likewise. - (expand_invoke): Update calls to pop_arguments. Use build_call_vec - instead of build_call_list. - (build_jni_stub): Use build_call_vec instead of build_call_list. - * java-tree.h (maybe_rewrite_invocation): Update declaration. - (build_known_method_ref): Likewise. - (invoke_build_dtable): Likewise. - -2010-05-14 Nathan Froyd - - PR 44103 - * java-tree.h (START_RECORD_CONSTRUCTOR): Change first argument to a - vector. Move call to build_constructor... - (FINISH_RECORD_CONSTRUCTOR): ...here. Add necessary arguments. Clear - TREE_CONSTANT on the constructor. - (PUSH_SUPER_VALUE): Change first argument to a vector. - (PUSH_FIELD_VALUE): Likewise. - * resource.c (compile_resource_data): Update calls to above macros. - * constants.c (build_constants_constructor): Likewise. - * class.c (build_utf8_ref): Likewise. - (make_field_value): Likewise. - (make_method_value): Likewise. - (add_table_and_syms): New function. - (make_class_data): Call it. Update calls to above macros. - (build_symbol_table_entry): New function. - (build_symbol_entry): Call it. Update calls to above macros. - (emit_symbol_table): Likewise. - (make_catch_class_record): Update calls to above macros. - (build_assertion_table_entry): New function. - (add_assertion_table_entry): Call it. - (emit_assertion_table): Likewise. - -2010-05-06 Manuel López-Ibáñez - - PR 40989 - * lang.c (java_handle_option): Add argument kind. - -2010-04-18 Eric Botcazou - - * decl.c (java_init_decl_processing): Remove argument in call to - initialize_sizetypes - -2010-04-07 Jakub Jelinek - - * exception.cc (_Jv_Throw): Avoid set but not used warning. - * include/java-assert.h (JvAssertMessage, JvAssert): Use argument in - sizeof to avoid set but not used warnings. - -2010-01-20 Joern Rennecke - - * lang.c (java_post_options): Constify variable "dot". - - * jcf-parse.c (set_source_filename): Constify variable "dot". - (load_class): Constify variable "separator". - Use get_identifier_with_length. - - * jvspec.c (lang_specific_driver): Constify two variables named "p". - -2010-01-09 Jakub Jelinek - - * jcf-dump.c (version): Update copyright notice dates. - -2009-11-28 Jakub Jelinek - - * jvspec.c (lang_specific_driver): Remove unused - saw_verbose_flag variable. - * jcf-dump.c (main): Remove unused general_purpose_bits - variable. - * builtins.c (initialize_builtins): Remove unused float_ftype_float - variable. - * expr.c (java_stack_pop): Remove unused val variable. - (build_jni_stub): Remove unused res_type variable. - * verify-impl.c (check_field_constant): Remove unused len variable. - -2009-10-20 Joel Dice - - PR java/28474 - * mangle_name.c (append_unicode_mangled_name): Fix mangling - of names with multiple underscores and "U". - (unicode_mangling_length): Likewise. - -2009-10-03 Simon Baldwin - - * config-lang.in (lang_dirs): Remove zlib. - -2009-09-28 Richard Henderson - - * builtins.c (initialize_builtins): Update call to - build_common_builtin_nodes. - * lang.c (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New. - -2009-09-14 Richard Henderson - - * builtins.c (initialize_builtins): Update call to - build_common_builtin_nodes. - * decl.c (java_init_decl_processing): Don't call - default_init_unwind_resume_libfunc. - * except.c: Include tree-iterator.h. - (build_exception_object_var): New. - (build_exception_object_ref): Use it. - (expand_end_java_handler): Initialize it from __builtin_eh_pointer. - Attach all CATCH_EXPRs to a single TRY_CATCH_EXPR. - * java-tree.h (DECL_FUNCTION_EXC_OBJ): New. - -2009-09-13 Richard Guenther - Rafael Avila de Espindola - - * decl.c (do_nothing): Remove. - (java_init_decl_processing): Do not set lang_eh_runtime_type. - * Make-lang.in (lang.o): Add $(EXCEPT_H) dependency. - * lang.c (java_eh_personality): New. - (java_eh_personality_decl): Likewise. - (LANG_HOOKS_EH_PERSONALITY): Define. - -2009-09-03 Diego Novillo - - * lang.c (lang_hooks): Remove const qualifier. - -2009-09-01 Jakub Jelinek - - * boehm.c (mark_reference_fields): Compute % in HOST_WIDE_INT - type. - -2009-09-01 Richard Guenther - - * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Remove. - * java-tree.h (java_mark_addressable): Likewise. - * typeck.c (java_mark_addressable): Likewise. - -2009-08-17 Ralf Wildenhues - - * Make-lang.in (java.install-pdf): Install gcj.pdf in - $(pdfdir)/gcc, alongside the other manuals. - -2009-08-12 Andrew Haley - - * builtins.c (compareAndSwapInt_builtin): Use - flag_use_atomic_builtins. - (compareAndSwapLong_builtin): Likewise. - (compareAndSwapObject_builtin): Likewise. - * jvspec.c: Add flag_use_atomic_builtins. - * gcj.texi: Likewise. - * java-tree.h: Likewise. - * lang.opt: Likewise. - -2009-08-11 Dodji Seketeli - - PR debug/40990 - * lang.c (put_decl_node): Outputs different level of information - depending on the verbosity level. - -2009-07-31 Andrew Haley - - PR java/40867 - * decl.c (java_replace_references): Set EXPR_LOCATION on all - generated expressions. - (binding_level.loc): new field. - (clear_binding_level): Initialize loc. - (set_input_location): New function. - (pushlevel): Set new binding_level.loc. - (poplevel): Set EXPR_LOCATION on the new BIND_EXPR_BODY. - (start_java_method): Set DECL_SOURCE_LOCATION of this new method. - (java_add_stmt): Set the EXPR_LOCATION on all subtrees of new_stmt. - -2009-07-17 Richard Guenther - - PR c/40401 - * java-gimplify.c (java_genericize): Do not gimplify here. - But replace all local references. - (java_gimplify_expr): Do not replace local references here. - (java_gimplify_modify_expr): Likewise. - * jcf-parse.c (java_parse_file): Do not finalize the CU or - optimize the cgraph here. - * decl.c (java_replace_reference): Make static. - (java_replace_references): New function. - (end_java_method): Clear base_decl_map. - * java-tree.h (java_replace_references): Declare. - (java_replace_reference): Remove. - -2009-07-14 Taras Glek - Rafael Espindola - - * Make-lang.in (java.install-plugin): New target for - installing plugin headers. - -2009-07-07 Manuel López-Ibáñez - - * class.c: Replace %J by an explicit location. Update all calls. - -2009-07-07 Manuel López-Ibáñez - - * jcf-parse.c: Replace %H by an explicit location. Update all calls. - -2009-06-29 Andrew Haley - - PR java/40590 - * java-tree.h (cxx_keyword_p): New declaration. - * mangle_name.c (utf8_cmp): Move here from mangle.c. - (cxx_keywords): Likewise. - (cxx_keyword_p): Likewise. - (MANGLE_CXX_KEYWORDS): New macro. - (append_gpp_mangled_name): Use MANGLE_CXX_KEYWORDS. - (append_gpp_mangled_name): Likewise. - * mangle.c: Move code to mangle_name.c. - (mangle_member_name): Don't call cxx_keyword_p. - -2009-06-12 Aldy Hernandez - - * java-gimplify.c (java_gimplify_block): New argument to - build_empty_stmt. - * expr.c (force_evaluation_order): Same. - * typeck.c: Add location to build_decl or PUSH_FIELD calls. - * class.c: Same. - * decl.c: Same. - * jcf-parse.c: Same. - * constants.c: Same. - * resource.c: Same. - * except.c: Same. - * builtins.c: Same. - * expr.c: Same. - * java-tree.h (PUSH_FIELD): Add location field. - -2009-06-09 Ian Lance Taylor - - * verify.h: Remove extern "C". - -2009-06-07 Ian Lance Taylor - - * jcf-parse.c (handle_constant): Change local variable 'kind' to - unsigned int. - -2009-06-01 Ian Lance Taylor - - * jcf-io.c (find_class): Use CONST_CAST. - -2009-05-27 Ian Lance Taylor - - * Make-lang.in ($(XGCJ)$(exeext)): Change $(COMPILER) to - $(LINKER). - (jc1$(exeext), jcf-dump$(exeext), jvgenmain$(exeext)): Likewise. - -2009-05-26 Ian Lance Taylor - - * Make-lang.in (jvspec.o): Use $(COMPILER). - ($(XGCJ)$(exeext), jc1$(exeext), jcf-dump$(exeext)): Likewise. - (jvgenmain$(exeext), java/jcf-io.o, java/jcf-path.o): Likewise. - -2009-05-12 Alexandre Oliva - - * Make-lang.in (GCJ): Renamed to... - (XGCJ): ... this. - -2009-04-27 Ian Lance Taylor - - * builtins.c (java_builtins): Add casts to enum type. - * verify-impl.c (check_class_constant): Add cast to enum type. - (check_constant, check_wide_constant): Likewise. - -2009-04-27 Richard Guenther - - PR java/38374 - * constants.c (build_constants_constructor): Retain the old - pointer type as valid TYPE_POINTER_TO after patching the - type of the constant pool decl. - -2009-04-24 Ian Lance Taylor - - * jcf-parse.c (handle_constant): Add cast to enum type. - -2009-04-21 Taras Glek - - * builtins.c: Update GTY annotations to new syntax - * decl.c: Likewise - * java-tree.h: Likewise - * jcf.h: Likewise - * lang.c: Likewise - -2009-04-21 Joseph Myers - - * ChangeLog, ChangeLog.ptr, ChangeLog.tree-ssa: Add copyright and - license notices. - -2009-04-18 Ian Lance Taylor - - * verify-impl.c (verify_instructions_0): Add cast to enum type. - -2009-04-09 Paolo Bonzini - - * builtins.c (compareAndSwapLong_builtin, - compareAndSwapInt_builtin, compareAndSwapObject_builtin, - VMSupportsCS8_builtin): Do not look at sync_compare_and_swap_cc. - -2009-03-31 Richard Guenther - - * java-gimplify.c (java_gimplify_expr): Do not manually gimplify - the first operand of binary and comaprison expressions. - -2009-03-30 Joseph Myers - - PR rtl-optimization/323 - * lang.c (java_post_options): Set flag_excess_precision_cmdline. - Give an error for -fexcess-precision=standard for processors where - the option is significant. - -2009-03-18 Ralf Wildenhues - - * lang.opt: Unify help text for -Wdeprecated. - -2009-02-03 Jakub Jelinek - - * jcf-dump.c (version): Update copyright notice dates. - -2009-01-16 Richard Guenther - - PR tree-optimization/38835 - PR middle-end/36227 - * builtins.c (build_addr_sum): Use POINTER_PLUS_EXPR. - -2008-12-05 Sebastian Pop - - PR bootstrap/38262 - * Make-lang.in (jc1): Add BACKENDLIBS, remove GMPLIBS. - -2008-11-04 Andrew Haley - - PR java/37068 - * jcf-parse.c (java_emit_static_constructor): Don't call - cgraph_build_static_cdtor. Rewrite. - -2008-10-24 Jakub Jelinek - - * Make-lang.in (check-java-subtargets): New target. - -2008-10-16 David Edelsohn - - PR target/35483 - * Make-lang.in (class.o): Depend on $(TM_P_H). - (expr.o): Same. - * class.c: Include tm_p.h. - * expr.c: Include tm_p.h. - -2008-10-14 Andrew Haley - - * constants.c (build_constant_data_ref): Make sure we only build - one copy of the decl for the constant pool. - -2008-09-22 Andrew Haley - - * expr.c (rules): Add new rule for - gnu.java.lang.VMCPStringBuilder.toString. - (rewrite_rule.new_classname): New field. - (maybe_rewrite_invocation): Use new_classname field instead of - DECL_CONTEXT (*method_p). - Allow rewrite_arglist to be NULL. - -2008-09-17 Andrew Pinski - - * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): Don't define. - (java_get_callee_fndecl): Kill. - -2008-09-17 Jan Hubicka - - PR c++/18071 - * class.c (add_method_1): Do not initialize DECL_INLINE. - (make_local_function_alias): Likewise. - * expr.c (rewrite_arglist_getcaller): Set DECL_UNINLINABLE. - * lang.c (java_decl_ok_for_sibcall): Use DECL_UNINLINABLE. - -2008-09-09 Richard Guenther - - * decl.c (build_result_decl): Remove no longer applicable - promotion. - -2008-09-05 David Daney - - * gcj.texi (-freduced-reflection): Clarify option's restrictions. - -2008-08-21 David Daney - - * class.c (make_class_data): Don't add field_index when - flag_reduced_reflection set. - -2008-08-12 Ulrich Weigand - - * typeck.c (convert): Do not check for TARGET_FLOAT_FORMAT. - -2008-08-08 Manuel Lopez-Ibanez - - PR 28875 - * lang.c (java_handle_option): Replace set_Wunused with - warn_unused. - -2008-07-30 Ralf Wildenhues - - * gcj.texi: Update copyright years. Do not list GPL as - Invariant Section. - -2008-07-29 Jakub Jelinek - - * class.c (build_utf8_ref): Set DECL_SIZE and DECL_SIZE_UNIT - from ctype's sizes. - - * class.c (build_utf8_ref): Pad initializer string to utf8const_type's - alignment. - -2008-07-29 Jan Hubicka - - * lang.c (java_post_options): Remove handling of flag_no_inline. - -2008-07-28 Richard Guenther - - Merge from gimple-tuples-branch. - - 2008-07-18 Richard Guenther - - * expr.c: Include tree-iterator.h. - * Make-lang.in (expr.o): Add tree-iterator.h dependency. - - 2008-07-18 Aldy Hernandez - - * java-gimplify.c: Include gimple.h instead of tree-gimple.h. - * expr.c: Same. - - 2008-07-14 Aldy Hernandez - - * java-gimplify.c (java_gimplify_expr): Same. - (java_gimplify_modify_expr): Same. - * java-tree.h: Rename GENERIC_NEXT to TREE_CHAIN. - - 2008-05-02 Diego Novillo - - * expr.c (build_java_throw_out_of_bounds_exception): Fix - mixed declarations and code. - - 2008-05-02 Doug Kwan - - * expr.c (build_java_throw_out_of_bounds_exception ): Wrap call to - _Jv_ThrowBadArrayIndex with a COMPOUND_EXPR to return 0. - - 2008-02-19 Diego Novillo - - http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00804.html - - * java-gimplify.c (java_gimplify_self_mod_expr): Change - gimple_seq arguments to gimple_seq *. Update all users. - - 2007-11-26 Aldy Hernandez - - * java-gimplify.c (java_gimplify_expr): Make pre_p and post_p - sequences. - (java_gimplify_self_mod_expr): Same. - * java-tree.h (java_gimplify_expr): Make pre_p and post_p - sequences. - -2008-07-24 Jan Hubicka - - * java/decl.c: Include cgraph.h - (end_java_method): Remove non-unit-at-a-time code. - (java_mark_decl_local): Likewise; sanity check that we don't touch - finalized nodes. - -2008-07-15 Jan Hubicka - - * lang.c (java_init_options): Enable unit-at-a-time by default. - -2008-07-14 Ralf Wildenhues - - * Make-lang.in (jvspec.o): Fix dependencies. - -2008-07-06 Tom Tromey - - * Make-lang.in (java/parse.o-warn): Remove. - (java/jcf-io.o-warn): Remove. - -2008-07-05 Tom Tromey - - * jcf-io.c: Don't include fnmatch.h. Don't use JCF_USE_SCANDIR. - (compare_path): Remove. - (java_or_class_file): Likewise. - (memoized_dirlist_entry): Likewise. - (memoized_dirlist_hash): Likewise. - (memoized_dirlist_lookup_eq): Likewise. - (memoized_dirlists): Likewise. - (caching_stat): Likewise. - (find_class): Use stat. - * jcf.h (JCF_USE_SCANDIR): Remove. - -2008-06-30 Joshua Sumali - - * Make-lang.in (JAVA_MANFILES): Add doc/aot-compile.1 and - doc/rebuild-gcj-db.1 - (java.uninstall): Likewise. - (java.maintainer-clean): Likewise. - (aot-compile.pod): New rule. - (rebuild-gcj-db.pod): New rule. - (java.install-man): Install doc/aot-compile.1 and doc/rebuild-gcj-db.1 - * gcj.texi: Add new sections for aot-compile and rebuild-gcj-db. - -2008-06-29 Kaveh R. Ghazi - - * Make-lang.in (java/jcf-io.o-warn): New. - -2008-06-24 Tom Tromey - - * jcf-path.c (jcf_path_init): Don't name variable 'try'. - * expr.c (add_type_assertion): Rename argument. - (build_java_arrayaccess): Don't name variable 'throw'. - (ARRAY_NEW_MULTI): Don't name variable 'class'. - * jcf-io.c (find_class): Don't name variable 'class'. - * mangle.c (compression_table_add): Don't name variable 'new'. - * constants.c (cpool_for_class): Rename argument. - (alloc_constant_fieldref): Likewise. - * jcf-parse.c (handle_innerclass_attribute): Don't name variable - 'class'. - (read_class): Likewise. - (parse_zip_file_entries): Likewise. - (process_zip_dir): Likewise. - * decl.c (java_mark_class_local): Rename argument. - * class.c (GEN_TABLE): Use type_name, not typename. - (gen_indirect_dispatch_tables): Likewise. - (add_field): Rename argument. - (is_compiled_class): Likewise. - (safe_layout_class): Likewise. - (emit_assertion_table): Likewise. - * typeck.c (has_method): Rename argument. - -2008-06-19 Kaveh R. Ghazi - - * class.c (ident_subst, mangled_classname, unmangle_classname, - gen_indirect_dispatch_tables, add_method_1, - build_fieldref_cache_entry, make_local_function_alias, - layout_class, java_treetreehash_find, java_treetreehash_new, - split_qualified_name): Fix for -Wc++-compat. - * constants.c (set_constant_entry, cpool_for_class): Likewise. - * decl.c (make_binding_level, java_dup_lang_specific_decl, - start_java_method): Likewise. - * except.c (prepare_eh_table_type): Likewise. - * expr.c (type_assertion_hash, note_instructions): Likewise. - * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC, - MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Likewise. - * jcf-io.c (jcf_filbuf_from_stdio, opendir_in_zip, find_class): - Likewise. - * jcf-parse.c (reverse, java_read_sourcefilenames, - annotation_grow, rewrite_reflection_indexes, java_parse_file, - process_zip_dir): Likewise. - * jcf-path.c (add_entry, add_path, jcf_path_init, - jcf_path_extdirs_arg): Likewise. - * jcf-reader.c (jcf_parse_constant_pool): Likewise. - * jvgenmain.c (do_mangle_classname): Likewise. - * lang.c (put_decl_string): Likewise. - * verify-impl.c (make_state_copy, make_state, add_new_state): - Likewise. - -2008-06-15 Ralf Wildenhues - - * gcj.texi: Expand TABs, remove whitespace from blank lines. - -2008-06-14 Tom Tromey - - PR java/36247: - * class.c (build_class_ref): Initialize this_classdollar when - needed. - -2008-05-23 Andrew Haley - - * jcf-parse.c (give_name_to_class): Call find_sourcefile to find full - pathname of source file. - -2008-05-12 Aaron W. LaFramboise - - * jcf-dump.c (print_constant): Use - HOST_LONG_LONG_FORMAT. - -2008-05-07 Kenneth Zadeck - - * decl.c (java_init_decl_processing): Change DECL_IS_PURE to - DECL_PURE_P. - -2008-04-23 Paolo Bonzini - - * class.c (build_utf8_ref): Don't set TREE_INVARIANT. - (build_classdollar_field): Don't set TREE_INVARIANT. - (get_dispatch_table): Don't set TREE_INVARIANT. - (make_class_data): Don't set TREE_INVARIANT. - (build_symbol_entry): Don't set TREE_INVARIANT. - (emit_symbol_table): Don't set TREE_INVARIANT. - * constants.c (build_constant_data_ref): Don't set TREE_INVARIANT. - (build_ref_from_constant_pool): Don't set TREE_INVARIANT. - * resource.c (compile_resource_data): Don't set TREE_INVARIANT. - * expr.c (cache_cpool_data_ref): Don't set TREE_INVARIANT. - -2008-04-03 Tom Tromey - - * Make-lang.in (java_OBJS): New variable. - -2008-04-03 Paolo Bonzini - - * java-tree.h (insert_block): Kill. - * decl.c (insert_block): Kill. - -2008-04-01 Joseph Myers - - * gcj.texi: Include gpl_v3.texi instead of gpl.texi - * Make-lang.in (TEXI_JAVA_FILES): Include gpl_v3.texi instead of - gpl.texi. - -2008-03-27 Tom Tromey - - * Make-lang.in: Revert automatic dependency patch. - -2008-03-25 Tom Tromey - - * Make-lang.in: Removed most explicit .o targets. - (java/jvspec.o): Reduce to variable setting. Moved to java/. - ($(GCJ)$(exeext)): Update. - (JAVA_OBJS): New variable. - (JCFDUMP_OBJS): Reformat. - (java_OBJS): New variable. - (java/jvspec.o-warn): Update. - (java/parse.o-warn): Remove. - (JAVA_TREE_H): Remove. - (java/jcf-io.o): Reduce to variable setting. - (ALL_CPPFLAGS): Likewise. - -2008-03-12 Paolo Bonzini - - * mangle.c (java_mangle_decl): Remove dead check. - -2008-03-11 Paolo Bonzini - - * jcf-parse.c (java_parse_file): Assert binding levels are - left in order. - * lang.c (LANG_HOOKS_CLEAR_BINDING_STACK, java_clear_binding_stack): - Delete. - -2008-03-02 Jakub Jelinek - - * jcf-dump.c (version): Update copyright notice dates. - -2008-02-29 Tom Tromey - - * expr.c (expand_byte_code): Set DECL_FUNCTION_LAST_LINE on - method. - * java-tree.h (struct lang_decl_func): Remove obsolete comment. - -2008-02-26 Tom Tromey - - * lang.c (java_post_options): Remove conditional. - * expr.c (expand_byte_code): Remove old location code. - * jcf-parse.c (set_source_filename): Remove old location code. - (give_name_to_class): Likewise. - (jcf_parse): Likewise. - (duplicate_class_warning): Likewise. - (parse_class_file): Likewise. - (java_parse_file): Likewise. - * decl.c (finish_method): Remove old location code. - * class.c (push_class): Remove old location code. - -2008-02-06 Kaveh R. Ghazi - - PR other/35107 - * Make-lang.in (jc1): Add $(GMPLIBS). - -2008-01-23 David Daney - - * class.c (hide) Rename to... - (java_hide_decl) ... this throughout, and make public. - * resource.c (Jr_count): Remove. - (compile_resource_data): Call java_mangle_resource_name to generate - decl name. Make resource decl public and hidden. - * mangle.c (java_mangle_resource_name): New function. - * java-tree.h (java_hide_decl, java_mangle_resource_name): Declare - functions. - -2008-01-04 Andrew Haley - - PR java/17779 - * jcf-parse.c (parse_zip_file_entries): Move decl to compile on - C90. - -2008-01-03 Andrew Haley - - PR java/17779 - * jcf-parse.c (parse_zip_file_entries): Unset TYPE_ALIAS_SET if - we're about to re-layout the type. - -2007-12-20 Alexandre Oliva - - * lang.c (java_classify_record): Don't return - RECORD_IS_INTERFACE for now. - -2007-12-18 Andrew Haley - - PR java/27643 - * jcf-parse.c (java_parse_file): Remove call to - java_mark_class_local. - (parse_class_file): Reinstate call to java_mark_class_local here. - * decl.c (java_mark_cni_decl_local): If the ASSEMBLER_NAME is - already set, call java_mangle_decl() and make_decl_rtl() to - rewrite its name as a hidden alias. - -2007-12-15 Alexandre Oliva - - PR debug/7081 - * lang.c (java_classify_record): New. - (LANG_HOOKS_CLASSIFY_RECORD): Override. - -2007-11-26 Andreas Krebbel - - PR 34081/C++ - * decl.c (finish_method): Pass 'false' for the new - allocate_struct_function parameter. - -2007-11-26 Alexandre Oliva - - * expr.c (build_jni_stub): Use the computed jni func type for - variable meth. - -2007-11-26 Alexandre Oliva - - * class.c (JAVA_TREEHASHHASH_H): Use TYPE_UID. - -2007-11-26 Alexandre Oliva - - * expr.c (type_assertion_hash): Hash type uids rather than - tree pointers. - -2007-11-17 David Daney - Andrew Haley - - * constants.c (build_constants_constructor): Use POINTER_SIZE - insead of BITS_PER_WORD in big-endian work around. - -2007-11-07 Tom Tromey - - PR java/34019: - * gcj.texi (Input Options): Add missing noun. - -2007-11-02 Tom Tromey - - PR java/33765: - * jcf-parse.c (java_parse_file): Ignore ZIPEMPTYMAGIC files. - * zipfile.h (ZIPEMPTYMAGIC): New define. - -2007-11-01 Tom Tromey - - * Make-lang.in (java/jcf-dump.o): Depend on zipfile.h. - (java/jcf-parse.o): Depend on jcf-reader.c, zipfile.h, and jcf.h. - (java/jcf-io.o): Depend on zipfile.h. - -2007-10-17 Richard Guenther - - * Make-lang.in (java/builtins.o): Add $(OPTABS_H) and $(EXPR_H) - dependencies. - -2007-10-03 Andrew Haley - - PR java/33639 - * class.c (mangled_classname): Detect and replace illegal - characters in assembly language symbols. - (gen_indirect_dispatch_tables): Call mangled_classname() on - the type. - -2007-09-27 Jakub Jelinek - - * lang.c (java_print_error_function): Add third argument. - -2007-09-15 Tom Tromey - - * java-tree.h (struct lang_decl_func) : - Remove. - : Likewise. - * lang.c (java_dump_tree): Update. - * java-tree.h (DECL_FUNCTION_BODY): Remove. - -2007-09-11 Jan Hubicka - - * decl.c (java_expand_body): Kill. - (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill. - -2007-09-06 Tom Tromey - - * jcf-parse.c (parse_class_file): Re-enter the current file. - -2007-09-07 Roman Zippel - - * boehm.c (mark_reference_fields): Move misaligned pointer check - after JREFERENCE_TYPE_P test - -2007-09-06 Roman Zippel - - * boehm.c (mark_reference_fields): Don't use bitmap as gc_descr - if pointer is misaligned. - -2007-09-06 Tom Tromey - - * lang.c (java_post_options): Update. - * jcf-parse.c (set_source_filename): Update. - (give_name_to_class): Update. - (jcf_parse): Update. - (duplicate_class_warning): Update. - (parse_class_file): Update. - (java_parse_file): Update. - * expr.c (expand_byte_code): Update. - -2007-09-05 Sandra Loosemore - - * decl.c (finish_method): Use set_cfun. - -2007-09-04 Andrew Haley - - * decl.c (java_init_decl_processing): Call "__cxa_end_cleanup" - when using the ARM EABI. - -2007-09-03 Daniel Jacobowitz - - * Make-lang.in (jvspec.o): Remove SHLIB_MULTILIB. - -2007-09-03 Kaveh R. Ghazi - - * jcf-parse.c (read_class, java_parse_file): Supply a TYPE for - CONST_CAST. - * jcf.h (JCF_FINISH): Likewise. - -2007-08-28 Tom Tromey - - * Make-lang.in (java.tags): Don't tag '*.y' files. - -2007-08-25 Kaveh R. Ghazi - - * lang.c (java_decl_ok_for_sibcall): Likewise. - -2007-08-21 Paul Brook - Nathan Sidwell - Mark Mitchell - Joseph Myers - - * jcf-dump.c (version): Use pkgversion_string. Update copyright - date. - -2007-08-20 Richard Guenther - - * lang.c (java_tree_inlining_walk_subtrees): Remove. - (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Remove. - -2007-08-17 Tom Tromey - - * typeck.c (find_method_in_interfaces): Update. - * jcf-parse.c (load_class): Update. - * java-gimplify.c (java_gimplify_component_ref): Removed. - (java_gimplify_modify_expr): Update. Removed pre_p and post_p - arguments. - (java_gimplify_expr): Update. - * decl.c (java_init_decl_processing): Update. - * class.c (set_constant_value): Update. - (make_class_data): Update. - (finish_class): Update. - (build_static_field_ref): Update. - (is_compiled_class): Update. - (maybe_layout_super_class): Update. - (layout_class): Update. - (layout_class_method): Update. - * java-tree.h (CAN_COMPLETE_NORMALLY): Removed. - (lang_decl_var) : Removed fields. - (lang_decl_func) : Removed field. - (lang_type) : Removed fields. - (FIELD_NESTED_ACCESS): Removed. - (FIELD_NESTED_ACCESS_P): Removed. - (DECL_FIELD_FINAL_IUD): Removed. - (DECL_LOCAL_FINAL_IUD): Removed - (LOCAL_FINAL_P): Removed. - (FINAL_VARIABLE_P): Removed. - (CLASS_FINAL_VARIABLE_P): Removed. - (DECL_BIT_INDEX): Removed. - (DECL_INIT_CALLS_THIS): Removed. - (FIELD_LOCAL_ALIAS): Removed. - (FIELD_LOCAL_ALIAS_USED): Removed. - (FIELD_THISN): Removed. - (DECL_FUNCTION_INIT_TEST_CLASS): Removed. - (LOCAL_CLASS_INITIALIZATION_FLAG): Removed. - (LOCAL_CLASS_INITIALIZATION_FLAG_P): Removed. - (TYPE_DOT_CLASS): Removed. - (TYPE_VERIFY_METHOD): Removed. - (ID_CLASSDOLLAR_P): Removed. - (enum java_tree_index) : - Removed. - (classdollar_identifier_node): Removed. - (TYPE_UNKNOWN): Removed. - (CLASS_FROM_SOURCE_P): Removed. - * expr.c (build_jni_stub): Update. - (force_evaluation_order): Update. - (build_java_empty_stmt): Update. - (build_class_init): Update. - (java_stack_swap): Update. - (build_jni_stub): Update. - -2007-08-17 Tom Tromey - - * java-tree.h (LABEL_TYPE_STATE): Removed. - (load_type_state): Removed. - (LABEL_PC): Removed. - (LABEL_VERIFIED): Removed. - (type_states): Declare. - * expr.c (type_states): New global. - (load_type_state): Now static. Use type_states. Changed - argument. - (lookup_label): Don't set LABEL_PC. - (expand_byte_code): Don't use LABEL_VERIFIED. - (note_instructions): Initialize type_states. - * verify-glue.c (vfy_note_stack_depth): Rewrote. - (vfy_note_stack_type): Use type_states. - (vfy_note_local_type): Likewise. - -2007-08-10 Kaveh R. Ghazi - - * jcf-parse.c (read_class, java_parse_file): Use CONST_CAST. - * jcf.h (JCF_FINISH): Likewise. - -2007-07-31 Nick Clifton - - * java-gimplify.c: Change copyright header to refer to version 3 - of the GNU General Public License and to point readers at the - COPYING3 file and the FSF's license web page. - * typeck.c, lang-specs.h, mangle_name.c, jcf-dump.c, class.c, - decl.c, config-lang.in, jcf-parse.c, constants.c, Make-lang.in, - resource.c, except.c, builtins.c, jvspec.c, java-tree.def, - javaop.def, jcf-path.c, verify-glue.c, jcf-depend.c, lang.opt, - jcf-reader.c, mangle.c, zextract.c, jcf-io.c, jcf.h, zipfile.h, - verify.h, java-except.h, win32-host.c, expr.c, jvgenmain.c, - parse.h, lang.c, java-tree.h, javaop.h, boehm.c: Likewise. - -2007-07-30 Kaveh R. Ghazi - - * jcf-io.c (find_class): Fix -Wcast-qual warnings. - -2007-07-29 Kaveh R. Ghazi - - * lang.c (java_get_callee_fndecl): Constify. - -2007-07-27 Kaveh R. Ghazi - - * mangle.c (set_type_package_list): Constify. - * verify-glue.c (vfy_make_string): Delete. - * verify.h (vfy_make_string): Likewise. - -2007-07-26 Tom Tromey - - * java-tree.h (push_labeled_block, pop_labeled_block): Remove. - (LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, - EXIT_BLOCK_LABELED_BLOCK): Likewise. - * lang.c (java_tree_inlining_walk_subtrees): Update. - (java_dump_tree): Likewise. - * java-tree.def (LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, TRY_EXPR): - Remove. - * decl.c (push_labeled_block, pop_labeled_block): Remove. - * java-gimplify.c (java_gimplify_labeled_block_expr, - java_gimplify_exit_block_expr, java_gimplify_try_expr): Remove. - (java_gimplify_expr): Update. - -2007-07-25 Kaveh R. Ghazi - - * class.c (java_treetreehash_hash, java_treetreehash_compare): - Constify. - * expr.c (type_assertion_eq): Likewise. - * jcf-io.c (compare_path): Likewise. - * jcf-parse.c (cmpstringp): Likewise. - * verify-impl.c (get_one_type, compute_argument_types, - compute_return_type): Likewise. - -2007-07-16 Rainer Orth - - PR target/32462 - PR libgcj/32465 - * class.c (hide): Wrap in HAVE_GAS_HIDDEN. - -2007-07-12 Richard Guenther - - * expr.c (expand_java_return): RETURN_EXPR has void type. - (build_jni_stub): Likewise. Use a comparison against zero - for null-pointer test in COND_EXPR. - (build_field_ref): Build POINTER_PLUS_EXPR with correct - type. Convert result instead. - (build_invokevirtual): Likewise. - -2007-07-09 Geoffrey Keating - - PR 32617 - * lang.c (java_init): Remove setting of force_align_functions_log. - * class.c (add_method_1): Set DECL_ALIGN of non-static method - to cope with ptrmemfunc_vbit_in_pfn. - -2007-07-03 David Daney - - * java/Make-lang.in (doc/gcj.info): Add $(gcc_docdir) to - include path. - (doc/gcj.dvi): Same. - (doc/gcj.pdf): Same. - (java/index.html): Same. - -2007-06-15 Andrew Pinski - - * class.c (make_class_data): Build the index in sizetype. - Use POINTER_PLUS_EXPR instead of PLUS_EXPR when - adding to a pointer type. - (build_symbol_entry): Likewise. - * expr.c (build_java_arrayaccess): Likewise. - (build_field_ref): Likewise. - (build_known_method_ref): Likewise. - (build_invokevirtual): Likewise. - * except.c (build_exception_object_ref): Do a - NEGATIVE and then a POINTER_PLUS_EXPR instead - of a MINUS_EXPR. - -2007-06-11 Rafael Ávila de Espíndola - - * typeck.c (java_signed_type): Remove. - * lang.c (LANG_HOOKS_SIGNED_TYPE): Remove. - * java-tree.h (java_signed_type): Remove. - -2007-05-18 Geoffrey Keating - - * jcf-dump.c (HANDLE_MAGIC): Use 'unsigned long' for %lx. - (print_constant): Likewise. - -2007-05-14 Rafael Ávila de Espíndola - - * expr.c (build_java_binop): Use unsigned_type_for instead of - java_unsigned_type. - * java-tree.h (java_unsigned_type): Remove. - * lang.c (LANG_HOOKS_UNSIGNED_TYPE): Remove. - * typeck.c (java_unsigned_type): Remove. - -2007-04-21 Andrew Pinski - - * java-tree.h (lang_tree_node): Use GENERIC_NEXT - instead of checking GIMPLE_STMT_P in chain_next. - -2007-04-06 Colin Walters - - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161701 - * jcf-io.c (open_class): Copy 'filename'. - -2007-04-03 Andrew Haley - - * jvgenmain.c (main): Change main to use class$, not class$$. - (do_mangle_classname): Likewise. - * class.c (hide): New function. - (add_field): Hide everything that shouldn't be visible outside a - DSO. - (build_static_class_ref): Likewise. - (build_classdollar_field): Likewise. - (make_class_data): Likewise. - (layout_class_method): Likewise. - * expr.c (special_method_p): New function. - - * class.c (push_class): Don't bogusly guess the source filename. - * jcf-parse.c (give_name_to_class): Don't set input_location from - DECL_ARTIFICIAL decls. - -2007-03-30 Rafael Ávila de Espíndola - - * typeck.c (java_signed_or_unsigned_type): Removed. - (java_signed_type): use get_signed_or_unsigned_type instead of - java_signed_or_unsigned_type. - (java_unsigned_type): Ditto. - * lang.c (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Removed. - * java-tree.h (java_signed_or_unsigned_type): Removed. - -2007-03-26 Tom Tromey - - * Make-lang.in (JAVA_MANFILES): Removed grmiregistry.1. - (java.maintainer-clean): Likewise. - (java.install-man): Likewise. - (.INTERMEDIATE): Removed grmiregistry.pod. - (grmiregistry.pod): Removed. - * gcj.texi (Invoking gcjh): Removed. - (Invoking gjnih): Likewise. - (Invoking grmiregistry): Likewise. - (direntry): Updated. - (Top): Likewise. - (which-gcj): Removed. - -2007-03-01 Brooks Moses - - * Make-lang.in: Add install-pdf target as copied from - automake v1.10 rules. - -2007-02-27 Brooks Moses - - * gcj.texi: Standardize title page. - -2007-02-18 Kazu Hirata - - * class.c: Fix a comment typo. - -2007-02-15 Sandra Loosemore - Brooks Moses - Lee Millward - - * java-tree.h (BUILD_MONITOR_ENTER): Use build_call_nary instead - of build3. - (BUILD_MONITOR_EXIT): Likewise. - - * java-gimplify.c (java_gimplify_component_ref): Use build_call_expr. - (java_gimplify_modify_expr): Likewise. - - * class.c (cache_this_class_ref): Use build_call_expr. - (build_static_field_ref): Likewise. - (emit_indirect_register_classes): Likewise. - (emit_register_classes): Likewise. - - * resource.c (write_resource_constructor): Use build_call_expr. - - * builtins.c (builtin_creator_function): Change interpretation of - the second parameter to be the whole CALL_EXPR instead of the arglist. - (max_builtin): Tweak parameter list. Use new CALL_EXPR accessors. - (min_builtin): Likewise. - (abs_builtin): Likewise. - (java_build_function_call_expr): Likewise. - (convert_real): Likewise. - (UNMARSHAL3): Likewise. - (UNMARSHAL4): Likewise. - (UNMARSHAL5): Likewise. - (build_arglist_for_builtin): Delete. Fix callers to use - build_call_expr instead. - (putObject_builtin): Tweak parameter list. Use new CALL_EXPR - accessors. - (compareAndSwapInt_builtin): Likewise. - (compareAndSwapLong_builtin): Likewise. - (compareAndSwapObject_builtin): Likewise. - (putVolatile_builtin): Likewise. - (getVolatile_builtin): Likewise. - (VMSupportsCS8_builtin): Likewise. - (check_for_builtin): Pass entire CALL_EXPR to builtin expander - instead of arglist. - - * expr.c (build_java_athrow): Use build_call_nary instead of build3. - (build_java_throw_out_of_bounds_exception): Likewise. - (java_check_reference): Likewise. - (build_java_arraystore_check): Likewise. - (build_newarray): Likewise. - (build_anewarray): Likewise. - (expand_java_multinewarray): Use build_call_list instead of build3. - (build_java_monitor): Use build_call_nary instead of build3. - (java_create_object): Likewise. - (expand_java_NEW): Likewise. - (build_instanceof): Likewise. - (expand_java_CHECKCAST): Likewise. - (build_java_soft_divmod): Likewise. - (build_java_binop): Likewise. - (build_field_ref): Likewise. - (build_class_init): Likewise. - (rewrite_arglist_getcaller): Use build_call_expr. - (build_invokeinterface): Use build_call_nary instead of build3. - (expand_invoke): Use build_call_list instead of build3. - (build_jni_stub): Use build_call_nary, build_call_list, or - build_call_expr instead of build3. - (expand_java_field_op): Use build_call_expr instead of build3. - (force_evaluation_order): Use new CALL_EXPR accessors. - - * lang.c (java_get_callee_fndecl): Use new CALL_EXPR accessors. - -2007-02-15 David Daney - - * Make-lang.in (JAVA_MANFILES): Add doc/gc-analyze.1. - (java.maintainer-clean):Add gc-analyze.1. - (.INTERMEDIATE): Add gc-analyze.pod. - (gc-analyze.pod): New rule. - (java.install-man): Install gc-analyze.1 - * gcj.texi: Add new section for the gc-analyze program. - -2007-02-07 Andrew Haley - - * class.c (uncache_this_class_ref): New. - * expr.c (build_jni_stub): Initialize the class. - (expand_byte_code): Call uncache_this_class_ref after generating - code. - -2007-02-06 Tom Tromey - - PR java/30714: - * jvspec.c (lang_specific_driver): Check for the '-' in '-I'. - -2007-02-03 Kazu Hirata - - * java-tree.h, javaop.def, jcf-parse.c: Fix comment typos. - -2007-02-02 Andrew Haley - - * expr.c (expand_byte_code): Call cache_this_class_ref() and - cache_cpool_data_ref(). - Set TYPE_CPOOL_DATA_REF. - (cache_cpool_data_ref): New function. - * constants.c (build_ref_from_constant_pool): Remove special-case - code for flag_indirect_classes. - (build_constant_data_ref): Move special-case code for - flag_indirect_classes here from build_ref_from_constant_pool. - * decl.c (finish_method): Move class initialization from here to - cache_this_class_ref. - * class.c (cache_this_class_ref): New function. - (build_class_ref): Use this_classdollar for the ouput class. - -2007-02-02 David Daney - - * class.c (is_compiled_class): Move check to avoid reloading - current class. - (layout_class_method): Don't calculate DECL_EXTERNAL if it is - already set. - -2007-02-01 Andrew Haley - - PR java/30641 - * jcf-parse.c (jcf_parse): Clear the field_offsets bitmap. - -2007-01-31 Kazu Hirata - - * class.c, jcf-parse.c: Fix comment typos. - -2007-01-30 Tom Tromey - - * gcj.texi (Strings): Fix documentation for JvNewString. - -2007-01-30 Ralf Wildenhues - - * gcj.texi (Invoking gcjh, Invoking gjnih, Arrays): Fix some - typos. - -2007-01-30 Ben Elliston - - * jvspec.c (lang_specific_driver): Remove unused classpath_args. - -2007-01-29 Tom Tromey - - PR java/30607: - * jvspec.c (lang_specific_driver): Handle separate -I argument. - * lang.opt (-I): Add 'Separate'. - -2007-01-29 Andrew Haley - - * class.c (add_method_1): Mark fndecl as external unless we are - compiling it into this object file. - -2007-01-24 Andrew Haley - - * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): current_class is a - type node, not a decl, so use TYPE_SYNTHETIC not CLASS_SYNTHETIC. - -2007-01-22 Andrew Haley - - * builtins.c (VMSupportsCS8_builtin): New function. - -2007-01-23 Andrew Pinski - - PR java/30454 - * jcf-io.c (opendir_in_zip): Close the file - and free zipf before returning after an error. - -2007-01-16 Tom Tromey - - * java-tree.def: Added copyright header. - -2007-01-15 Tom Tromey - - * lang.c (dump_compound_expr) : Removed - case. - * java-gimplify.c (java_gimplify_expr) : - Removed case. - * java-tree.h (EXPR_WFL_EMIT_LINE_NOTE): Removed. - (EXPR_WFL_NODE): Likewise. - (EXPR_WFL_LINECOL): Likewise. - (EXPR_WFL_FILENAME): Likewise. - (EXPR_WFL_LINENO): Likewise. - (build_expr_wfl, expr_add_location): Don't declare. - (build_unknown_wfl): Removed. - (EXPR_WFL_FILENAME_NODE): Removed. - (EXPR_WFL_COLNO): Removed. - (EXPR_WFL_SET_LINECOL): Removed. - (DECL_FUNCTION_WFL): Removed. - (DECL_FIELD_FINAL_WFL): Removed. - (struct lang_decl_func) : Removed field. - : Likewise. - : Likewise. - (struct lang_decl_var) : Removed field. - (DECL_CONSTRUCTOR_CALLS): Removed. - (DECL_FUNCTION_ACCESS_DECL): Likewise. - (DECL_FUNCTION_INNER_ACCESS): Likewise. - (DECL_SPECIFIC_COUNT): Likewise. - * java-tree.def (EXPR_WITH_FILE_LOCATION): Removed. - * expr.c (build_expr_wfl): Removed. - (expr_add_location): Likewise. - -2007-01-12 Tom Tromey - - * jcf-dump.c (main): Updated call to find_class. - * lang.c (java_init): Removed dead code. - * jcf-parse.c (read_class): Don't use java_source field. Removed - dead code. - (parse_zip_file_entries): Don't use java_source field. - (process_zip_dir): Likewise. - (jcf_parse): Removed dead code. - (java_parse_file): Likewise. - (read_class): Updated call to find_class. - * jcf-io.c (find_class): Don't use java_source field. Removed - 'source_ok' argument, .java logic. - * jcf.h (JCF) : Removed field. - (JCF_ZERO): Updated. (find_class): Updated. - * decl.c: Removed dead code. - * class.c: Removed dead code. - -2007-01-11 Tom Tromey - - * typeck.c (convert): Don't use flag_emit_class_files. - * lang.c (java_post_options): Don't use flag_emit_class_files. - (java_handle_option): Don't use flag_extraneous_semicolon or - flag_redundant. - * jcf-parse.c (HANDLE_CONSTANTVALUE): Don't use - flag_emit_class_files. - (load_class): Likewise. - * java-tree.h (flag_emit_class_files): Don't declare. - (STATIC_CLASS_INIT_OPT_P): Don't use flag_emit_class_files. - (flag_extraneous_semicolon): Don't declare. - (flag_not_overriding): Likewise. - (flag_static_local_jdk1_1): Likewise. - (flag_redundant): Likewise. - * expr.c (build_newarray): Don't use flag_emit_class_files. - * class.c (DEFAULT_ENABLE_ASSERT): Don't use - flag_emit_class_files. - (build_class_ref): Likewise. - * builtins.c (check_for_builtin): Don't use - flag_emit_class_files. - -2007-01-10 Tom Tromey - - * lang.c (java_can_use_bit_fields_p): Removed. - (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed. - -2007-01-09 Andrew Haley - - * expr.c (build_java_arrayaccess): Rewrite to generate array - access in canonical form. - (expand_java_arraystore): Use build_fold_addr_expr() on address of - array access. - -2007-01-03 Andrew Haley - - PR java/28754 - * expr.c (expand_java_field_op): If we're initializing a field's - declaring interface we should not also initialize the class - context in which it was referenced. - -2007-01-02 Tom Tromey - - * java-tree.h (compiling_from_source, current_encoding, - JTI_FINIT_IDENTIFIER_NODE, JTI_INSTINIT_IDENTIFIER_NODE, - JTI_LENGTH_IDENTIFIER_NODE, JTI_SUPER_IDENTIFIER_NODE, - JTI_CONTINUE_IDENTIFIER_NODE, JTI_ACCESS0_IDENTIFIER_NODE, - JTI_WFL_OPERATOR): Removed - (finit_identifier_node, instinit_identifier_node, - length_identifier_node, super_identifier_node, - continue_identifier_node, access0_identifier_node, wfl_operator): - Removed. - (cyclic_inheritance_report, - DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND, - DECL_FUNCTION_NAP, DECL_FUNCTION_SYNTHETIC_CTOR, - DECL_FIXED_CONSTRUCTOR_P): Removed. - (struct lang_decl_func) : - Removed. - (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST, TYPE_II_STMT_LIST, - TYPE_IMPORT_LIST, TYPE_IMPORT_DEMAND_LIST): Removed. - (struct lang_type) : Removed. - (java_layout_seen_class_methods, init_jcf_parse, init_src_parse, - cxx_keyword_p): Removed. - (DECL_FINIT_P, DECL_INSTINIT_P, ID_FINIT_P, ID_INSTINIT_P, - TYPE_UNUSED, TYPE_UNDERFLOW, TYPE_UNEXPECTED, - CLASS_ACCESS0_GENERATED_P, CLASS_HAS_FINIT_P, - IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME, - IS_AN_IMPORT_ON_DEMAND_P, COMPOUND_ASSIGN_P, SWITCH_HAS_DEFAULT, - PRIMARY_P, MODIFY_EXPR_FROM_INITIALIZATION_P, - CLASS_METHOD_CHECKED_P, FOR_LOOP_P, ANONYMOUS_CLASS_P, - LOCAL_CLASS_P, ARG_FINAL_P, SUPPRESS_UNREACHABLE_ERROR, - RESOLVE_PACKAGE_NAME_P, RESOLVE_TYPE_NAME_P, IS_BREAK_STMT_P, - IS_CRAFTED_STRING_BUFFER_P, IS_INIT_CHECKED, CALL_USING_SUPER, - NESTED_FIELD_ACCESS_IDENTIFIER_P, TOPLEVEL_CLASS_DECL_P, - PURE_INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P, - CALL_CONSTRUCTOR_P, CALL_EXPLICIT_CONSTRUCTOR_P, - CALL_THIS_CONSTRUCTOR_P, CALL_SUPER_CONSTRUCTOR_P, - FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, BLOCK_IS_IMPLICIT, - BLOCK_EMPTY_P, IS_UNCHECKED_EXCEPTION_P, java_error_count, - java_parse_abort_on_error, extract_field_decl): Removed. - (finput): Declare. - * lang.c: (compiling_from_source, current_encoding): Removed. - (java_handle_option): Ignore -fencoding. - * parse.h: Don't include lex.h. - (java_error_count, int_fits_type_p, stabilize_reference, RULE, - RECOVERED, DRECOVERED, RECOVER, DRECOVER, YYERROR_NOW, - YYNOT_TWICE, CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS, - INTERFACE_MODIFIERS, INTERFACE_INNER_MODIFIERS, - INTERFACE_METHOD_MODIFIERS, INTERFACE_FIELD_MODIFIERS, - MODIFIER_WFL, THIS_MODIFIER_ONLY, parse_error_context, - ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, exit_java_complete_class, - CLASS_OR_INTERFACE, GET_REAL_TYPE, GET_TYPE_NAME, - OBSOLETE_MODIFIER_WARNING, OBSOLETE_MODIFIER_WARNING2, - BUILD_PTR_FROM_NAME, INCOMPLETE_TYPE_P, - JAVA_MAYBE_GENERATE_DEBUG_INFO, JBSC_TYPE_P, JSTRING_P, - JNULLP_TYPE_P, JDECL_P, TYPE_INTERFACE_P, TYPE_CLASS_P, - IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS, - MANGLE_OUTER_LOCAL_VARIABLE_NAME, - MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID, - MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING, - SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS, - UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP, - AIPL_FUNCTION_CREATION, AIPL_FUNCTION_DECLARATION, - AIPL_FUNCTION_CTOR_INVOCATION, AIPL_FUNCTION_FINIT_INVOCATION, - ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, - ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED, - LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK, - LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY, - LOOP_EXPR_BODY_BODY_EXPR, PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, - PUSH_LOOP, POP_LOOP, PUSH_EXCEPTIONS, POP_EXCEPTIONS, - IN_TRY_BLOCK_P, EXCEPTIONS_P, ANONYMOUS_ARRAY_BASE_TYPE, - ANONYMOUS_ARRAY_DIMS_SIG, ANONYMOUS_ARRAY_INITIALIZER, - INVOKE_STATIC, INVOKE_NONVIRTUAL, INVOKE_SUPER, INVOKE_INTERFACE, - INVOKE_VIRTUAL, jdep_code, struct _jdep, JDEP_DECL, JDEP_DECL_WFL, - JDEP_KIND, JDEP_WFL, JDEP_MISC, JDEP_ENCLOSING, JDEP_CLASS, - JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN, JDEP_TO_RESOLVE, - JDEP_RESOLVED_DECL, JDEP_RESOLVED, JDEP_RESOLVED_P, struct - jdeplist_s, jdeplists, CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, - JDEP_INSERT, SET_TYPE_FOR_RESOLUTION, WFL_STRIP_BRACKET, - STRING_STRIP_BRACKETS, PROMOTE_RECORD_IF_COMPLETE, - BLOCK_CHAIN_DECL, GET_CURRENT_BLOCK, EXPR_WFL_GET_LINECOL, - EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION, QUAL_DECL_TYPE, - GET_SKIP_TYPE, COMPLETE_CHECK_OP, COMPLETE_CHECK_OP_0, - COMPLETE_CHECK_OP_1, COMPLETE_CHECK_OP_2, BUILD_APPEND, - BUILD_STRING_BUFFER, BUILD_THROW, SET_WFL_OPERATOR, - PATCH_METHOD_RETURN_ERROR, CHECK_METHODS, CLEAR_DEPRECATED, - CHECK_DEPRECATED_NO_RESET, CHECK_DEPRECATED, REGISTER_IMPORT, - CURRENT_OSB, struct parser_ctxt, GET_CPC_LIST, CPC_INNER_P, - GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE, GET_CPC_DECL_NODE, - GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC, - GET_ENCLOSING_CPC_CONTEXT, INNER_ENCLOSING_SCOPE_CHECK, PUSH_CPC, - PUSH_ERROR, POP_CPC, DEBUG_CPC, CPC_INITIALIZER_LIST, - CPC_STATIC_INITIALIZER_LIST, CPC_INSTANCE_INITIALIZER_LIST, - CPC_INITIALIZER_STMT, CPC_STATIC_INITIALIZER_STMT, - CPC_INSTANCE_INITIALIZER_STMT, SET_CPC_INITIALIZER_STMT, - SET_CPC_STATIC_INITIALIZER_STMT, - SET_CPC_INSTANCE_INITIALIZER_STMT, JAVA_NOT_RADIX10_FLAG, - java_complete_class, java_check_circular_reference, - java_fix_constructors, java_layout_classes, java_reorder_fields, - java_method_add_stmt, java_get_line_col, reset_report, - java_init_lex, yyparse, java_parse, yyerror, java_expand_classes, - java_finish_classes, ctxp, ctxp_for_generation, - ctxp_for_generation_last): Removed. - * expr.c (force_evaluation_order): Don't mention NEW_CLASS_EXPR. - * mangle.c (utf8_cmp): New function. - (cxx_keywords): New global. - (cxx_keyword_p): New function. - * jvspec.c (JAVA_START_CHAR): Removed obsolete comment. - * java-tree.def (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, - NEW_ANONYMOUS_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR, - CASE_EXPR, DEFAULT_EXPR, JAVA_CATCH_EXPR, SYNCHRONIZED_EXPR, - THROW_EXPR, CONDITIONAL_EXPR, INSTANCEOF_EXPR, NEW_ARRAY_INIT, - CLASS_LITERAL, JAVA_EXC_OBJ_EXPR): Removed. - * Make-lang.in (java.srcextra): Do nothing. - (parse.c, keyword.h, gt-java-parse.h): Removed targets. - (JAVA_OBJS): Don't mention deleted files. - (java.mostlyclean): Likewise. - (java.clean): Likewise. - (JAVA_LEX_C): Removed. - (buffer.o, check-init.o, parse.o): Remove unused targets. - (typeck.o): Updated. - * jcf-parse.c (read_class): Comment out unused code. - (java_layout_seen_class_methods): New function. - (parse_source_file_1, parse_source_file_2, parse_source_file_3): - Removed. - (java_parse_file): Comment out unused code. Don't use 'ctxp'. - (init_jcf_parse): Removed. - * config-lang.in (gtfiles): Remove deleted files. - * decl.c (java_init_decl_processing): Don't initialize - finit_identifier_node, instinit_identifier_node, - length_identifier_node, super_identifier_node, - continue_identifier_node, access0_identifier_node. Don't call - init_jcf_parse. - * class.c (cyclic_inheritance_report): New global. - (add_method_1): Don't use - DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND. - (maybe_layout_super_class): Comment out code. - (safe_layout_class): New function. - * java-gimplify.c (java_gimplify_expr): Removed CASE_EXPR, - DEFAULT_EXPR, NEW_ARRAY_INIT, JAVA_CATCH_EXPR, JAVA_EXC_OBJ_EXPR, - UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_ANONYMOUS_ARRAY_EXPR, - NEW_CLASS_EXPR, SYNCHRONIZED_EXPR, CONDITIONAL_EXPR, - INSTANCEOF_EXPR, CLASS_LITERAL, THIS_EXPR. - (java_gimplify_case_expr): Removed. - (java_gimplify_default_expr): Likewise. - (java_gimplify_new_array_init): Likewise. - * parse.y: Removed. - * keyword.gperf, keyword.h: Removed. - * chartables.h: Removed. - * check-init.c: Removed. - * buffer.c, buffer.h: Removed. - * convert.h: Removed. - * gen-table.pl: Removed. - * lex.c, lex.h: Removed. - -2007-01-02 Andrew Haley - - * expr.c (expand_java_arraystore): Make sure we perform a bounds - check at runtime before we perform a type check. - -2006-12-19 Andrew Haley - - * decl.c: Bump minor BC ABI version. - -2006-12-13 Gary Benson - - * jcf-depend.c (jcf_dependency_add_file): Mark filename unused. - -2006-12-12 Tom Tromey - - * lang-specs.h: Pass -M options to jc1. - * jcf-depend.c (jcf_dependency_add_file): Don't emit - dependencies. - -2006-12-07 Mohan Embar - - * jcf-path.c (jcf_path_compute): Use platform PATH_SEPARATOR. - -2006-12-06 Mohan Embar - - * lang-specs.h: Pass '%U'-based options as separate arguments. - -2006-12-05 Tom Tromey - - PR java/29495: - * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Mark fields and - classes as well. - * class.c (add_field): Handle ACC_SYNTHETIC. - (add_method_1): Likewise. Handle bridge and varargs. - (get_access_flags_from_decl): Handle synthetic, bridge, varargs, - annotation. - (set_class_decl_access_flags): Handle synthetic and annotation. - * java-tree.h (METHOD_BRIDGE): New macro. - (METHOD_VARARGS): Likewise. - (TYPE_SYNTHETIC): Likewise. - (TYPE_ANNOTATION): Likewise. - (lang_type): New fields 'synthetic' and 'annotation'. - (lang_decl_func): New fields 'varargs' and 'bridge'. - -2006-12-04 Andrew Haley - - * jcf-parse.c (rewrite_reflection_indexes): Don't do anything if - there's no map. - -2006-11-29 Gary Benson - - * expr.c (rewrite_arglist_getcaller): Reorder. - -2006-11-29 Andrew Haley - - * expr.c (rewrite_arglist_getcaller): Remove DECL_INLINE. - * lang.c (java_decl_ok_for_sibcall): Check for DECL_INLINE. - -2006-11-23 Andrew Haley - - * expr.c (rewrite_arglist_getcaller): New. - (rewrite_arglist_getclass): Fix indentation. - (rules): Add gnu.classpath.VMStackWalker.getCallingClass() and - gnu.classpath.VMStackWalker.getCallingClassLoader(). - * builtins.c (initialize_builtins): Remove duplicate def'n of - __sync_synchronize. - Add __builtin_return_address. - -2006-11-22 Andrew Haley - - * jcf-reader.c (get_attribute): Mark attr_type unused. - - * builtins.c (compareAndSwapObject_builtin): Fix declaration. - -2007-01-08 Richard Guenther - - * lex.c (do_java_lex): Use build_int_cst_wide_type. - * jcf-parse.c (get_constant): Likewise. - -2006-11-12 Jan Hubicka - - * resource.c (compile_resource_data): Update for new varpool names. - * java/class.c (build_utf8_ref): Likewise. - -2006-11-12 David Daney - - PR java/29805 - * typeck.c (build_java_array_type): Increase buffer sizes. - -2006-11-11 Richard Guenther - - * check-init.c (check_init): Remove handling of FIX_CEIL_EXPR, - FIX_FLOOR_EXPR and FIX_ROUND_EXPR. - -2006-11-06 Andrew Haley - - * java-tree.h (CONSTANT_LazyFlag): New. - * constants.c (build_constants_constructor): Mask CONSTANT_LazyFlag. - * jcf-parse.c (handle_innerclass_attribute): Write attribute to - reflection_data. - (handle_constant): Return 0 for dummy cpool entries. - Handle constants of kind Class. - Handle constants of kind NameAndType. - (handle_enclosingmethod_attribute): New. - (handle_signature_attribute): New. - (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New. - (HANDLE_SIGNATURE_ATTRIBUTE): New. - (handle_constant): Use unmangle_classname()rather than calling - identifier_subst() directly. - -2006-11-02 Andrew Haley - - * java-tree.h (FIELD_ENUM): New. - (lang_decl_var.field_enum): New. - (lang_type.enum_class): New. - (CLASS_ENUM): New. - * class.c (set_class_decl_access_flags): Handle enum types. - (add_field): Handle enum fields. - (get_access_flags_from_decl): Likewise. - - * class.c (make_class_data): Put reflection_data into rodata. - -2006-11-01 Andrew Haley - - * jcf-parse.c (field_offsets, bit_obstack): New variables. - (jcf_parse): Write end marker to annotation_data. - (java_parse_file): Create field_offsets bitmap. Destroy it. - (annotation_grow, annotation_rewrite_byte) - (annotation_rewrite_short, annotation_rewrite_int) - (annotation_read_short, annotation_write_byte) - (annotation_write_short, annotation_write_int) - (handle_long_constant, handle_constant, handle_element_value) - (handle_annotation, handle_annotations) - (handle_annotation_attribute, rewrite_reflection_indexes) - (handle_member_annotations, handle_parameter_annotations) - (handle_default_annotation): New functions. - (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE) - (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE) - (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) - (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) - (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): New definitions. - * java-tree.h (enum jv_attr_type, enum jv_attr_kind): New. - (TYPE_REFLECTION_DATA): New. - (TYPE_REFLECTION_DATASIZE): New. - * jcf.h (enum cpool_tag): Convert a bunch of #define constants to - an enum. - * jcf-reader.c (get_attribute): Pass field/method index and - attribute type to get_attribute(). - * constants.c (find_class_or_string_constant): Make nonstatic. - (cpool_for_class): Likewise. - (build_constants_constructor): Separate string and scalar types. - * class.c (make_class_data): Generate field_indexes permutation. - Pass it to rewrite_reflection_indexes(). - (make_class_data): Generate constructor for reflection_data field. - -2006-10-20 Tom Tromey - - * gcj.texi (Top): Don't mention jv-scan. - (Invoking gcj): Likewise. - (Invoking gcjh): Likewise. - (Invoking gjnih): Likewise. - (Invoking gij): Likewise. - (Invoking gcj-dbtool): Likewise. - (Invoking jv-scan): Removed. - * parse-scan.y: Removed. - * jv-scan.c: Removed. - * config-lang.in (stagestuff): Don't mention jv-scan. - * Make-lang.in (java): Removed jv-scan. - (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. - (JVSCAN_OBJS): Removed. - (jv-scan$(exeext)): Likewise. - (JAVA_MANFILES): Removed jv-scan.1. - (java.uninstall): Don't mention jv-scan. - (java.mostlyclean): Likewise. - (java.maintainer-clean): Likewise. - (.INTERMEDIATE): Likewise. - (java/jv-scan.o): Removed. - (jv-scan.pod): Likewise. - (java.srcextra): Don't mention parse-scan.c. - (java.mostlyclean): Likewise. - (java/parse-scan.c): Removed. - (java/parse-scan.o-warn): Removed. - (java/parse-scan.o): Removed. - -2006-10-20 Tom Tromey - - * lang.c (java_handle_option): Don't use - jcf_write_base_directory. - * jcf.h (jcf_write_base_directory): Removed. - * parse.y (java_expand_classes): Don't call write_classfile. - * config-lang.in (gtfiles): Removed jcf-write.c. - * Make-lang.in (JAVA_OBJS): Removed jcf-write.o. - (java/jcf-write.o): Removed. - * jcf-parse.c (parse_class_file): Don't call write_classfile. - * java-tree.h (write_classfile): Removed declaration. - * jcf-write.c: Removed. - -2006-10-20 Tom Tromey - - * Make-lang.in (java): Removed gjnih, gcjh. - (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. - (GCJH_OBJS): Removed. - (GJNIH_OBJS): Likewise. - (gjnih$(exeext)): Likewise. - (gcjh$(exeext)): Likewise. - (JAVA_MANFILES): Removed gcjh.1, gjnih.1. - (java.install-common): Don't special case gcjh. - (java.uninstall): Don't mention gcjh, gjnih. - (java.mostlyclean): Likewise. - (java.maintainer-clean): Likewise. - (.INTERMEDIATE): Likewise. - (gcjh.pod): Removed. - (gjnih.pod): Likewise. - (GCJH_TARGET_INSTALL_NAME): Removed. - (java/gjavah-jni.o): Removed. - (java/gjavah.o): Likewise. - * config-lang.in (stagestuff): Removed gjnih, gcjh. - * gjavah.c: Removed. - -2006-10-17 Tom Tromey - - * jcf-dump.c (print_element_value): Expect a utf8 constant in the - "string" case. - -2006-10-17 Tom Tromey - - * jvgenmain.c (main): Handle -findirect-dispatch. - * jvspec.c (jvgenmain_spec): Pass -findirect-dispatch to - jvgenmain. - -2006-10-06 Andrew Haley - - * builtins.c (compareAndSwapInt_builtin): Check that we really do - have a compare_and_swap builtin. - (compareAndSwapLong_builtin): Likewise. - (compareAndSwapObject_builtin): Likewise. - -2006-10-04 Andrew Haley - - * builtins.c (java_builtins): Add compareAndSwapInt, - compareAndSwapLong, compareAndSwapObject, putOrderedInt, - putOrderedLong, putOrderedObject, putIntVolatile, putLongVolatile, - putObjectVolatile, getObjectVolatile, getIntVolatile, - getLongVolatile, getLong. - (UNMARSHAL3): New macro. - (UNMARSHAL4): Likewise. - (UNMARSHAL5): Likewise. - (build_arglist_for_builtin): New function. - (build_addr_sum, build_check_this): New functions. - (putObject_builtin. compareAndSwapInt_builtin, - compareAndSwapLong_builtin, compareAndSwapObject_builtin, - putVolatile_builtin, getVolatile_builtin): New builtins. - -2006-06-08 Andrew Haley - - * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to - get_symbol_table_index(). - (maybe_rewrite_invocation): Set SPECIAL if we need to access a - private method. - (build_known_method_ref): New arg: special. Pass it to - get_symbol_table_index. - (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of - the method list. - (build_invokevirtual): New arg: special. Pass it to - get_symbol_table_index. - (expand_invoke): New variable: special. - Pass it to maybe_rewrite_invocation(). - Pass it to build_known_method_ref(). - * class.c (build_symbol_entry): Add new arg: special. Use it to - build the symbol table conbstructor. - (emit_symbol_table): Extract SPECIAL from the method list and pass - it to build_symbol_entry(). - * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set - special accordingly. - -2006-09-08 Andrew Haley - - * class.c (layout_class_method): Use build_java_signature, not - build_java_argument_signature. Use lookup_java_method, not - lookup_argument_method. - -2006-08-16 Jakub Jelinek - Bryce McKinlay - - * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed. - -2006-07-18 Tom Tromey - - * lang.opt: Added missing -W options. - -2006-07-12 Tom Tromey - - PR java/28329: - * lang-specs.h: Pass '%U'-based options as separate arguments. - Use -faux-classpath. - * lang.c (java_handle_option): Handle OPT_faux_classpath. - * lang.opt (faux-classpath): New option. - -2006-07-07 Tom Tromey - - * class.c (make_class_data): Set value for reflection_data field. - * decl.c (java_init_decl_processing): Add reflection_data field. - -2006-07-07 Tom Tromey - - * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): Declare locals - earlier. - (HANDLE_SIGNATURE_ATTRIBUTE): Likewise. - -2006-07-07 Andrew Haley - - * jcf-parse.c (set_source_filename): Don't check for - CLASS_FROM_CURRENTLY_COMPILED_P. - Remove // comments. - -2006-07-07 Andrew Haley - - * java-tree.h (java_read_sourcefilenames): Declare. - * lang.c (java_handle_option): Call java_read_sourcefilenames(). - * lang.opt (fsource-filename): New opt. - * lang-specs.h: Add -fsource-filename. - * jcf-parse.c (num_files, filenames): New variables. - (reverse, cmpstringp, java_read_sourcefilenames, - find_sourcefile): New. - (set_source_filename): Call find_sourcefile to find the real name - of a source file. - -2006-06-27 Tom Tromey - - * jcf-reader.c (get_attribute): Handle EnclosingMethod, - Signature, LocalVariableTypeTable, annotation attributes. - * jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New macro. - (HANDLE_SIGNATURE_ATTRIBUTE): Likewise. - (HANDLE_START_FIELD): Mention 'descriptor', not 'signature'. - (HANDLE_METHOD): Likewise. - (HANDLE_LOCALVARIABLETYPETABLE_ATTRIBUTE): New macro. - (print_annotation): New function. - (print_element_value): Likewise. - (indent): Likewise. - (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE): New macro. - (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE): Likewise. - (print_parameter_annotations): New function. - (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE): New macro. - (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE): - Likewise. - (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): Likewise. - (print_annotations): New function. - -2006-06-23 Tom Tromey - - * lang-specs.h: Default -fsource and -ftarget to 1.5. If - emitting class files, always use 1.5. - * gcj.texi (Input Options): Document -fsource. - (Code Generation): Document -ftarget. - -2006-06-21 Tom Tromey - - PR java/28089: - * expr.c (expand_java_field_op): Initialize field's declaring - class. - -2006-06-20 Tom Tromey - - * expr.c (push_value): Always flush quick stack. - -2006-06-19 Tom Tromey - - * expr.c (push_value): Also flush quick stack if value is a - component_ref. - -2006-06-19 Tom Tromey - - * expr.c (push_value): Flush quick stack if value has side - effects. - -2006-06-13 Tom Tromey - - * class.c (is_compiled_class): Explicitly check for current - class. - -2006-06-09 Tom Tromey - - * gjavah.c (decompile_method): Don't decompile a static field - accessor method. - -2006-06-06 Tom Tromey - - * lang-specs.h : Add .jar file to command line if - -fsaw-java-file. Also, remove -ffilelist-file in this case. - -2006-06-05 Tom Tromey - - * jcf-dump.c (print_access_flags): Handle varargs, bridge, - synthetic, enum, annotation. - * jcf.h (ACC_BRIDGE): New macro. - (ACC_VARARGS): Likewise. - (ACC_SYNTHETIC): Likewise. - (ACC_ENUM): Likewise. - (ACC_ANNOTATION): Likewise. - -2006-06-04 Tom Tromey - - * lang.opt (-fsaw-java-file, -fsource, -ftarget): New options. - * jvspec.c (jvgenmain_spec): Remove -fsaw-java-file, -fsource, - and -ftarget. - (lang_specific_driver): Removed dead code. Add -fsaw-java-file - when needed. Handle classpath-setting. - * Make-lang.in ($(GCJ)$(exeext)): Link in jcf-path.o. - * lang-specs.h: Rewrote. - -2006-06-04 Tom Tromey - - * jcf-io.c (find_class): Set source_ok to 0. - * jcf-parse.c (jcf_parse): Disable gnu.gcj.gcj-compiled warning. - (parse_class_file): Don't call java_mark_class_local. - (java_parse_file): Skip .java files. Call java_mark_class_local - before lowering any code. - (parse_zip_file_entries): Don't call duplicate_class_warning - here. - (process_zip_dir): ... call it here. - * class.c (add_field): Don't mark field external if it is being - compiled into this object. - (make_class_data): Handle situation where class_dtable_decl is - created before Class is compiled. - (is_compiled_class): Don't assume files in zip are compiled into - this object. - (layout_class_method): Don't mark method external if it is being - compiled into this object. - -2006-06-04 Tom Tromey - - * jcf-path.c (jcf_path_compute): New function. - * jcf.h (jcf_path_compute): Declare. - -2006-10-23 Rafael Ávila de Espíndola - - * decl.c: Include langhooks.h. - (builtin_function): Remove. - (java_init_decl_processing): Replace calls to builtin_function - with add_builtin_function. - * Make-lang.in (jc1$(exeext)): Depend on and link with attribs.o. - (java/decl.o): Depend on langhooks.h. - * java-tree.h (builtin_function): Remove. - -2006-10-10 Brooks Moses - - * Make-lang.in: Added "java.pdf", "gcj.pdf" target support. - -2006-09-12 Tom Tromey - - * expr.c (push_value): Always flush quick stack. - -2006-09-12 Tom Tromey - - PR java/29013: - * jcf-write.c (generate_bytecode_insns) : Always note - the push of the called method's return result. - -2006-09-12 Tom Tromey - - * jvspec.c (lang_specific_driver): Read spec file even if - -fsyntax-only. - -2006-09-12 Tom Tromey - - PR java/28754: - * expr.c (expand_java_field_op): Initialize field's declaring - interface if necessary. - -2006-09-12 Tom Tromey - - PR java/28892: - * expr.c (expand_java_field_op): No error for assignments not in - class initializer or constructor. - -2006-08-22 Andrew Haley - - * decl.c (java_add_stmt): Give the statement list a type. - -2006-08-16 Jakub Jelinek - Bryce McKinlay - - * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed. - -2006-08-10 Simon Martin - - PR java/8923 - * parse.y (build_incdec): Emit an error instead of an ICE if '++' - or '--' is used with a constant operand. - (java_complete_lhs): When processing a '++' or '--' expression, - don't call java_complete_tree but java_complete_lhs, so that a - static final variable operand is never replaced by its value. This - avoids an ICE later on. - (patch_unaryop): Fixed typo in comment. - -2006-07-28 Volker Reichelt - - * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies. - -2006-07-12 Bryce McKinlay - - * builtins.c (check_for_builtin): If a builtin could result in a - direct call being generated, don't use it if flag_indirect_dispatch - is set. - -2006-07-12 Bryce McKinlay - - * gcj.texi (Invocation): Corrections for Invocation API example. - -2006-07-04 Andrew Haley - - * class.c (build_fieldref_cache_entry): Set DECL_IGNORED_P on the - entry. - -2006-06-21 Andrew Haley - - * java-tree.h (update_aliases): Remove - * expr.c (expand_iinc): Remove call to update_aliases(). - (STORE_INTERNAL): Likewise. - * decl.c (update_aliases, initialize_local_variable) - (maybe_pushlevels): Set DECL_VALUE_EXPR for debugging decls. - -2006-06-19 Andrew Haley - - PR java/1305 - PR java/27908 - * expr.c (java_modify_addr_for_volatile): New function. - (expand_java_field_op): Handle volatile fields. - * java-gimplify.c (java_gimplify_component_ref): Call - java_modify_addr_for_volatile to give the field_ref the correct - volatile type. - (java_gimplify_modify_expr): Likewise. - * java-tree.h (java_modify_addr_for_volatile): New decl. - -2006-06-17 Karl Berry - - * gcj.texi (@dircategory): Use "Software development" instead - of "Programming", following the Free Software Directory. - -2006-06-16 Andrew Haley - - * class.c (make_class_data): When using flag_indirect_classes, - don't initialize the vtable of Class instances. - -2006-06-09 Andrew Haley - - PR java/1305 - PR java/27908 - * builtins.c (initialize_builtins): Add __sync_synchronize(). - * class.c (add_field): Mark volatile fields. - * java-gimplify.c (java_gimplify_expr): Call new functions to - handle self-modifying exprs and COMPONENT_REFs. - (java_gimplify_component_ref): New. - (java_gimplify_modify_expr): Add handling for volatiles. - -2006-06-08 Tom Tromey - - * gcj.texi (libgcj Runtime Properties): Document - gnu.gcj.user.realname. - -2006-06-08 Andrew Haley - - * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to - get_symbol_table_index(). - (maybe_rewrite_invocation): Set SPECIAL if we need to access a - private method. - (build_known_method_ref): New arg: special. Pass it to - get_symbol_table_index. - (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of - the method list. - (build_invokevirtual): New arg: special. Pass it to - get_symbol_table_index. - (expand_invoke): New variable: special. - Pass it to maybe_rewrite_invocation(). - Pass it to build_known_method_ref(). - * class.c (build_symbol_entry): Add new arg: special. Use it to - build the symbol table conbstructor. - (emit_symbol_table): Extract SPECIAL from the method list and pass - it to build_symbol_entry(). - * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set - special accordingly. - -2006-06-06 David Daney - - * gcj.texi (libgcj Runtime Properties): Document - gnu.gcj.runtime.NameFinder.show_raw and - gnu.gcj.runtime.NameFinder.remove_unknown. - -2006-06-06 Tom Tromey - - * jcf-dump.c (print_access_flags): Handle varargs, bridge, - synthetic, enum, annotation. - * jcf.h (ACC_BRIDGE): New macro. - (ACC_VARARGS): Likewise. - (ACC_SYNTHETIC): Likewise. - (ACC_ENUM): Likewise. - (ACC_ANNOTATION): Likewise. - -2006-06-06 Mike Stump - - * Make-lang.in: Rename to htmldir to build_htmldir to avoid - installing during build. - -2006-05-31 Thomas Fitzsimmons - - * gcj.texi (Extensions): Document the new gcj-dbtool-based - classname-to-library resolution mechanism. - Declare the old gnu.gcj.runtime.VMClassLoader.library_control - mechanism deprecated. - (libgcj Runtime Properties): Document - gnu.gcj.runtime.VMClassLoader.library_control's new default. - -2006-05-29 Jakub Jelinek - - * javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64) - bit wide type. - (jword): Define to uint64 on 64-bit arches. - * jcf-dump.c (print_constant): Cast JPOOL_UINT to long. - -2006-05-28 Kazu Hirata - - * class.c, except.c, expr.c, java-gimplify.c: Fix comment - typos. - -2006-05-26 Tom Tromey - - * expr.c (java_push_constant_from_pool): Handle 'ldc class'. - * verify-glue.c (vfy_class_type): New function. - * verify-impl.c (check_constant): Allow 'ldc class'. - * verify.h (vfy_class_type): Declare. - -2006-05-25 Andrew Haley - - PR java/27756 - * decl.c (maybe_pushlevels): When variable ranges are non-nested - update all lifetimes, not just the first one. - -2006-05-24 Tom Tromey - - * java-tree.h: Fixed flag documentation. - -2006-05-24 Tom Tromey - - PR libgcj/27729: - * jcf.h (ACC_INVISIBLE): Changed value. - -2006-05-24 Andrew Haley - - PR java/27754 - * decl.c (java_add_stmt): Use a STATEMENT_LIST rather than a - COMPOUND_EXPR. - -2006-05-16 H.J. Lu - - * lang.opt (femit-class-file): Remove VarExists. - -2006-05-16 Tom Tromey - - * verify-impl.c (verify_instructions_0) : Special case - for Object.. - -2006-05-16 H.J. Lu - - PR driver/26885 - * Make-lang.in ($(GCJ)$(exeext)): Replace gcc.o with - $(GCC_OBJS). - -2006-05-14 H.J. Lu - - * Make-lang.in (java/decl.o): Add dependency on $(TARGET_H). - (java/expr.o): Replace target.h with $(TARGET_H). - (java/parse.o): Likewise. - -2006-05-10 Andrew Haley - - * class.c (emit_indirect_register_classes): Fix comment. - -2006-05-04 Tom Tromey - - * java-tree.h (uses_jv_markobj_p): Declare. - * class.c (uses_jv_markobj_p): Removed. - * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): New define. - (get_boehm_type_descriptor): Use it. - (uses_jv_markobj_p): Moved from class.c. Return bool. - -2006-05-04 Tom Tromey - - * java-tree.def (THIS_EXPR): Now a tcc_expression. - -2006-05-04 Andrew Haley - - * class.c (make_field_value): Always build_address_of fdecl if - there is an initializer. - -2006-05-03 Andrew Haley - - PR libgcj/27352 - * expr.c (maybe_rewrite_invocation): New function. - (rewrite_arglist_getclass): Likewise. - (rules): New. - (expand_invoke): Call maybe_rewrite_invocation. - * parse.y (patch_invoke): Likewise. - * java-tree.h: (maybe_rewrite_invocation): New function. - -2006-04-21 Andrew Haley - - * lang.c (java_init): Handle flag_indirect_classes. - * jvgenmain.c: Use "class$$" instead of "class$". - * mangle.c (java_mangle_decl): Accept RECORD_TYPEs sw well as - DECLs. - (mangle_class_field): Special case "class$$" as well as "class$". - * constants.c (build_ref_from_constant_pool): If - flag_indirect_classes, generate a ref into the heap. - * decl.c (constants_field_decl_node, - constants_data_field_decl_node): New. - * class.c (build_static_class_ref): New. - (build_classdollar_field): Factor out from build_class_ref(). - (make_field_value): Handle static fields in heap. - (make_class_data): Make sure we get a static ref to class. - Make class initializer const if flag_indirect_classes. - (register_class): Build a class_ref for initialization if - flag_indirect_classes. - (emit_indirect_register_classes): New. - -2006-04-08 Kazu Hirata - - * expr.c, gjavah.c: Fix comment typos. - -2006-04-03 Andrew Haley - - PR java/26858 - * expr.c (build_field_ref): Don't check the field offset if - flag_syntax_only. - -2006-03-30 Andrew Haley - - PR java/26858 - * lang.c (java_attribute_table): New. - (LANG_HOOKS_ATTRIBUTE_TABLE): Define. - * expr.c (build_field_ref): Add a null pointer check for all - fields of offset > 4k. Don't do so for accesses via the this - pointer, which we know can never be null. - * class.c (build_java_method_type): Mark arg 1 of all nonstatic - methods nonnull. - -2006-03-30 Carlos O'Donell - - * Make-lang.in: Rename docdir to gcc_docdir. - -2006-03-30 Tom Tromey - - PR java/26042: - * parse.y (java_reorder_fields): Reset superclass field's size as - well. - -2006-03-28 Tom Tromey - - PR java/26390: - * parse.y (find_most_specific_methods_list): Added 'class' - argument. - (lookup_method_invoke): Updated. - -2006-03-15 Tom Tromey - - * jcf-write.c (generate_bytecode_insns): Use qualifying type for - non-static method calls. - -2006-03-15 David Daney - - * java-tree.h : Moved comment for TYPE_DOT_CLASS adjacent to its - declaration. - -2006-03-15 David Daney - - * lang.opt (-freduced-reflection): New option. - * lang.c (java_post_options): Generate an error if - -freduced-reflection used with -fjni or -findirect-dispatch. - * java-tree.h (flag_reduced_reflection): Declare new variable. - * boehm.c (get_boehm_type_descriptor): Indicate all pointers - if bitmap overflows and flag_reduced_reflection set. - * class.c (uses_jv_markobj_p): New function. - (make_class_data): Moved generation of vtable to before - reflection data, generate less reflection data if - flag_reduced_reflection set. - * gcj.texi: Document -freduced-reflection. - -2006-03-15 Tom Tromey - - PR java/26638: - * class.c (get_interface_method_index): Don't put into - interface table. - -2006-03-15 Tom Tromey - - * parse.y (analyze_clinit_body): Ignore empty statements. - -2006-03-08 David Daney - - * gcj.texi: Document -static-libgcj option. - -2006-02-20 Andrew Haley - - * jcf-parse.c (parse_class_file): Set input_location from - current_class. - -2006-02-15 Andrew Haley - - * class.c (GEN_TABLE): Don't pushdecl *_SYMS_DECL here. - (make_class_data): pushdecl_top_level TYPE_OTABLE_SYMS_DECL, - TYPE_ATABLE_SYMS_DECL, TYPE_ITABLE_SYMS_DECL here. - -2006-02-09 Andrew Haley - - PR java/26192 - * expr.c (expand_invoke): Allow methods in arrays to be resolved - in their superclass. - - * typeck.c (build_java_array_type): Generate TYPE_STUB_DECLs for - array types. - -2006-02-08 Tom Tromey - - PR java/22578: - * check-init.c (check_init): Handle VIEW_CONVERT_EXPR. - * builtins.c (convert_real): New function. - (java_builtins): Handle Float.intBitsToFloat, - Float.floatToRawIntBits, Double.longBitsToDouble, - Double.doubleToRawLongBits. - -2006-02-07 Andrew Haley - - * expr.c (expand_invoke): (BC mode.) If we find a method in a - class other than the one in which we expected to find it, ignore - the result. - - PR java/25535 - * constants.c (build_constants_constructor): move initializer into - first halfword on a 64-bit big-endian machine. - -2006-02-04 Tom Tromey - - PR java/25676: - * builtins.c (max_builtin): Skip floating point 'max'. - (min_builtin): Skip floating point 'min'. - (check_for_builtin): Never return NULL_TREE. - -2006-02-04 Tom Tromey - - PR java/26097: - * expr.c (push_type): Avoid side effect in gcc_assert. - -2006-02-04 Roger Sayle - - * decl.c (java_init_decl_processing): Create char_type_node as a - regular INTEGER_TYPE node. - (push_promoted_type): Preserve TYPE_STRING_FLAG on types. - * typeck.c (convert): No longer check for CHAR_TYPEs but instead - test for char_type_node and promoted_char_type_node as special - instances of INTEGER_TYPE tree codes. - (promote_type,build_java_signature): Likewise. - * jcf-write.c (adjust_typed_op): Likewise. - * mangle.c (mangle_type): Likewise. - * parse.y (do_unary_numeric_promotion): No longer handle CHAR_TYPE. - * parse.h (JINTEGRAL_TYPE_P): Likewise. - -2006-02-04 Andreas Tobler - - * expr.c (java_stack_swap): Revert gcc_assert patch. - -2006-02-03 Ben Elliston - - * java-gimplify.c: Use gcc_assert and gcc_unreachable throughout. - * typeck.c: Likewise. - * verify-impl.c: Likewise. - * class.c: Likewise. - * decl.c: Likewise. - * jcf-parse.c: Likewise. - * constants.c: Likewise. - * check-init.c: Likewise. - * jcf-write.c: Likewise. - * verify-glue.c: Likewise. - * mangle.c: Likewise. - * expr.c: Likewise. - * lang.c: Likewise. - * boehm.c: Likewise. - -2006-02-01 Jan Hubicka - - * decl.c (end_java_method): Kill hack disabling unit-at-a-time. - * lang.c (java_init_options): Set no_unit_at_a_time_default. - -2006-01-30 Andrew Haley - - PR java/21428 - * parse.y: (source_start_java_method): Mark DECL_ARTIFICIAL("this"). - -2006-01-21 Joseph S. Myers - - * jv-scan.c (version), jcf-dump.c (version), gjavah.c (version): - Update copyright notice dates. - -2006-01-16 Rafael Ávila de Espíndola - - * jvspec.c (lang_specific_spec_functions): Remove. - -2006-01-06 Tom Tromey - - * gcj.texi (Arrays): Added more documentation for - JvNewObjectArray. - (Primitive types): Correct information about primitive classes. - (Reference types): New node. - (Index): New node. - -2005-12-16 Alexandre Oliva - - * jcf-parse.c (set_source_filename): Set the decl source location - even when returning early. - -2005-12-15 Tom Tromey - Andrew Haley - - PR java/25429 - * parse.y (resolve_expression_name): Don't generate accessor - methods for constant fields. - -2005-12-13 Andrew Haley - - PR java/25366 - PR java/25368 - * class.c (maybe_layout_super_class): Update current_class before - calling do_resolve_class. - -2005-12-12 H.J. Lu - - PR java/25330 - * jcf-write.c (write_classfile): Use PID in temporary class - file. Save/restore errno when reporting error. - -2005-12-10 Terry Laurenzo - - PR java/9861 - * mangle.c (mangle_method_decl): Mangle Java methods by prepending 'J' - to bare_function_type and including the return type - * builtins.c (initialize_builtins) : Change builtin mangled name - constants to conform to new mangling scheme - -2005-12-08 Andrew Haley - - PR libgcj/25265 - * java-tree.h (enum java_tree_index): Add JTI_SOFT_NOSUCHFIELD_NODE. - (soft_abstractmethod_node): New. - * expr.c (build_field_ref): Add in-line check for missing field. - * decl.c (java_init_decl_processing): Add soft_nosuchfield_node. - -2005-12-07 Rafael Ávila de Espíndola - - * Make-lang.in (java.all.build, java.install-normal): Remove. - -2005-12-07 Rafael Ávila de Espíndola - - * Make-lang.in: Remove all dependencies on s-gtype, except for - gt-java-parse.h. - -2005-12-07 Richard Sandiford - - * class.c (build_utf8_ref, emit_register_classes): Use - switch_to_section and get_section. - -2005-12-06 Tom Tromey - - PR java/25283: - * parse.y (patch_new_array_init): Revert previous patch. - (lookup_method_invoke): Use size-less array type when creating an - anonymous constructor. - -2005-12-05 Tom Tromey - - * parse.y (patch_new_array_init): Don't set length on array. - -2005-12-02 Richard Guenther - - * java-gimplify.c (java_gimplify_labeled_block_expr): Use - buildN instead of build. - * class.c (finish_class): Likewise. - * expr.c (java_create_object): Likewise. - -2005-11-28 Tom Tromey - - PR java/18278: - * expr.c (build_jni_stub): Unwrap the return value. - * java-tree.h (soft_unwrapjni_node): New define. - (enum java_tree_index): Added JTI_SOFT_UNWRAPJNI_NODE. - * decl.c (java_init_decl_processing): Initialize - soft_unwrapjni_node. - -2005-11-24 Bryce McKinlay - - * gcj.texi (gij options): Add -Xss documentation. - -2005-11-08 Wil Mahan - - PR java/23617 - * zextract.c (read_zip_archive): Fix out of memory error when - reading jar files with zip-style comments. - -2005-11-07 Terry Laurenzo - - * gjavah.c (HANDLE_CODE_ATTRIBUTE): Only define for ELF Object - formats. - * gjavah.c (decompile_method): Add ATTRIBUTE_UNUSED - -2005-10-12 Nathan Sidwell - Wil Mahan - - PR java/23620 - * class.c (make_class): Create empty binfo here. - (set_super_info): Only create binfo if we have superclasses. - -2005-10-03 Ranjit Mathew - - PR java/24127 - * parse.y (method_header): Make the result of the rule a NULL_TREE - when a parsing error occurs. - -2005-09-29 Tom Tromey - - PR java/24120: - * jcf-io.c (memoized_dirlist_hash): New function. - (caching_stat): Use it. - -2005-09-21 Ranjit Mathew - - PR java/21418 - * class.c (inherits_from_p): Try to lay out super class - if it is not already laid out. - (maybe_layout_super_class): Handle the case where SUPER_CLASS - is a NULL_TREE. - -2005-09-18 James A. Morrison - - * builtins.c (max_builtin, min_builtin, abs_builtin, - java_build_function_call_expr): Use fold_buildN. - * class.c (layout_class_method): Likewise. - * expr.c (java_truthvalue_conversion, build_java_jsr, - build_java_arrayaccess, expand_java_arrayload, expand_iinc, - build_java_binop, build_field_ref, expand_compare, - build_known_method_ref, build_invokevirtual, - process_jvm_instruction): Likewise. - * parse.y (patch_binop, patch_exit_expr): Likewise. - * typeck.c (convert_ieee_real_to_integer): Likewise. - (convert): Don't call fold after convert_ieee_real_to_integer. - -2005-09-14 Bryce McKinlay - - PR java/23891 - * parse.y (maybe_create_class_interface_decl): Set TYPE_PACKAGE for - the newly created type. Set import lists here, not in create_class. - (jdep_resolve_class): Set current_class. - (do_resolve_class): Use current_class's TYPE_PACKAGE to determine - the current package context, not ctxp->package. - (cicp_cache): Removed. - (class_in_current_package): Simplify implementation using TYPE_PACKAGE. - * jcf-parse.c (give_name_to_class): Set TYPE_PACKAGE. - * java-tree.h (TYPE_PACKAGE): New macro. - (struct lang_type): New member 'package'. - -2005-09-09 Andrew Haley - - PR libgcj/23182 - * expr.c (pop_type_0): If the expected type is object or ptr - (i.e. void*), return the type of the object we just popped from - the stack. - -2005-09-06 Andrew Pinski - - * java-gimplify.c (java_gimplify_block): NULL out the old BLOCK's - BLOCK_EXPR_BODY before returning the new BIND_EXPR. - -2005-09-06 Kazu Hirata - - * check-init.c, decl.c, expr.c, gcj.texi, java-tree.h, - jcf-parse.c, jcf.h, parse.h, parse.y, typeck.c: Fix comment - typos. Follow spelling conventions. - -2005-09-05 Ranjit Mathew - - PR java/23431 - * typeck.c (lookup_do): Look up interfaces for the original class, - not the base class. - * parse.y (java_check_regular_methods): Fix diagnostic message for - more restrictive overriding of a method from an interface. - -2005-08-16 Tom Tromey - - * class.c (make_class_data): Always emit JV_STATE_PRELOADING for - class' initial state. - -2005-08-16 Ranjit Mathew - - PR java/22113 - * lex.c (do_java_lex): Define MAX_TOKEN_LEN. Avoid overflowing - `literal_token' for large numeric input tokens. - -2005-08-16 Ranjit Mathew - - PR java/19870 - * parse.y (nested_field_access_p): Rename to nested_member_access_p - and expand to handle method accesses across nested classes. - (build_outer_method_access_method): Rename to - build_nested_method_access_method. Minor adjustments to comments. - (resolve_expression_name): Use the newly-renamed - nested_member_access_p method. - (resolve_qualified_expression_name): Likewise. - (patch_method_invocation): Also consider static methods for access - method generation. Minor adjustments to comments. - (maybe_use_access_method): Use the more general - nested_memeber_access_p to determine access across nested class - boundaries. Allow THIS_ARG to be NULL (for static methods). - -2005-08-15 Tom Tromey - - PR java/23300. - * expr.c (build_field_ref): Don't generate otable reference when - DECL_FIELD_OFFSET is 0. - * class.c (maybe_layout_super_class): Pass outer class to - do_resolve_class. - -2005-08-15 Tom Tromey - - * java-tree.h (LABEL_IN_SUBR): Removed. - (LABEL_IN_SUBR): Likewise. - (LABEL_IS_SUBR_START): Likewise. - (LABEL_SUBR_START): Likewise. - (LABEL_SUBR_CONTEXT): Likewise. - (LABEL_CHANGED): Likewise. - (LABEL_RETURN_LABEL): Likewise. - (LABEL_RETURN_TYPE_STATE): Likewise. - (LABEL_RETURN_LABELS): Likewise. - (RETURN_MAP_ADJUSTED): Likewise. - (LABEL_PENDING_CHAIN): Likewise. - -2005-08-15 Tom Tromey - - * Make-lang.in (JAVA_OBJS): Removed verify.o - (java/verify.o): Removed. - * verify.c: Removed. - * lang.c (flag_new_verifier): Removed. - (java_post_options): Updated. - * java-tree.h (flag_new_verifier): Removed. - (verify_jvm_instructions): Removed. - * expr.c (pop_type_0): Assume flag_new_verifier is true. - (build_java_check_indexed_type): Likewise. - (expand_java_arraystore): Likewise. - (expand_java_arrayload): Likewise. - (pop_arguments): Likewise. - (expand_byte_code): Likewise. - (process_jvm_instruction): Likewise. - -2005-08-10 Andrew Haley - - * java-gimplify.c (java_gimplify_modify_expr): Fix any pointer - type mismatches to make legal GIMPLE. - -2005-08-10 Robin Green - - PR java/23230: - * parse.y (maybe_use_access_method): Generalize check from - java.lang.Object to any superclass of current_class - -2005-08-08 Nathan Sidwell - - * class.c (build_class_ref): Wrap the primary class type in a - NOP_EXPR. - * parse.y (java_complete_lhs) : Extract the - primary class type from the NOP_EXPR in which it was placed. - -2005-07-28 Diego Novillo - - * expr.c (expand_load_internal): Fix missing parens in - predicate. - -2005-07-28 Andrew Haley - - * expr.c (expand_load_internal): Convert to destination type. - -2005-07-22 Manfred Hollstein - - * verify-impl.c (check_class_constant): Fix uninitialised warnings. - (check_constant): Likewise. - (check_wide_constant): Likewise. - -2005-07-20 Giovanni Bajo - - Make CONSTRUCTOR use VEC to store initializers. - * check-init.c (check_init): Update to cope with VEC in - CONSTRUCTOR_ELTS. - * class.c (make_field_value, make_method_value, get_dispatch_table, - make_class_data, emit_symbol_table, emit_catch_table, - emit_assertion_table): Use build_constructor_from_list instead of - build_constructor. - * constants.c (build_constants_constructor): Likewise. - * java-gimplify.c (java_gimplify_new_array_init): Update to cope with - VEC in CONSTRUCTOR_ELTS. - * java-tree.h (START_RECORD_CONSTRUCTOR, PUSH_SUPER_VALUE, - PUSH_FIELD_VALUE, FINISH_RECORD_CONSTRUCTOR): Create a VEC instead - of a TREE_LIST. - * jcf-write.c (generate_bytecode_insns): Update to cope with VEC in - CONSTRUCTOR_ELTS. - * parse.y (build_new_array_init): Use build_constructor_from_list - instead of build_constructor. - (patch_new_array_init): Update to cope with VEC in - CONSTRUCTOR_ELTS. - (array_constructor_check_entry): Likewise. - -2005-07-12 Tom Tromey - - * jvspec.c (lang_specific_driver): Put filelist_filename first on - command line. - -2005-07-12 Tom Tromey - - PR java/19674: - * parse-scan.y (interface_member_declaration): Added - empty_statement. - -2005-07-08 Daniel Berlin - - * java-tree.h (LABEL_RETURN_LABELS): Use decl_non_common. - (LABEL_PENDING_CHAIN): Ditto. - (LABEL_PC): Ditto. - (DECL_BIT_INDEX): Ditto. - -2005-07-07 Bryce McKinlay - - PR java/18119 - * parse.y (inner_class_accessible): New function. Logic moved from - check_inner_class_access. - (check_inner_class_access): Use inner_class_accessible. - (resolve_inner_class): Simplify arguments. Create circularity hash - here. Keep looking for classes if we found one that was inaccessible. - Return the inaccessible class only if there is no other match. - (do_resolve_class): Update for new resolve_inner_class arguments. - Don't create circularity_hash here. - -2005-07-07 Bryce McKinlay - - PR java/21045 - * parse.y (add_exception_to_throws): New function. - (purge_unchecked_exceptions): Removed. - (get_constructor_super): Renamed from verify_constructor_super. Now - returns the super constructor after verification. - (java_complete_expand_method): Don't use purge_unchecked_exceptions - or save/restore the exception list. - (check_thrown_exceptions): Add uncaught exceptions in anonymous - class initializers and constructors to the throws clause of the method. - -2005-07-05 Bryce McKinlay - - PR java/19674 - * parse.y (interface_member_declaration): Allow empty statements in - interface declarations. - -2005-07-05 Paolo Bonzini - - * Makefile.in (parse.o): Adjust dependencies. - * parse.y: Include tree-dump.h. - -2005-07-02 Joseph S. Myers - - * class.c, decl.c, expr.c: Use '+' flag instead of %J. Use 'q' - flag for quoting. - -2005-07-01 Andrew Pinski - - * parse.y (issue_warning_error_from_context): Call - pp_output_formatted_text to be able to get the buffer. - -2005-06-30 Andrew Pinski - - * parse.y (issue_warning_error_from_context): Update for the - renaming of pp_format_text to pp_format. - -2005-06-28 Paul Brook - - * decl.c (java_init_decl_processing): Call - default_init_unwind_resume_libfunc. - -2005-06-27 Tom Tromey - - PR java/21540, PR java/13788: - * parse.y (java_complete_lhs) : Use - fold_constant_for_init. - (patch_binop): Added 'folding' argument. Updated all callers. - (patch_unaryop) : New case. - (fold_constant_for_init) : Likewise. - (fold_constant_for_init) : Fix sense of test. - -2005-06-25 Jan Hubicka - - * builtins.c (define_builtin): Accept new flags parameter. - (initialize_builtins): Mark the builtins const and nothrow accordingly. - -2005-06-25 Kelley Cook - - * all files: Update FSF address in copyright headers. - -2005-06-24 Tom Tromey - - * verify-impl.c (verify_instructions_0): Correctly handle - situation where PC falls off end. - -2005-06-23 Bryce McKinlay - - PR java/20697 - * parse.y (find_most_specific_methods_list): Remove special case for - inner classes. - -2005-06-15 Tom Tromey - - PR libgcj/21906: - * class.c (make_method_value): Use soft_abstractmethod_node for - abstract method. - * java-tree.h (soft_abstractmethod_node): New define. - (JTI_SOFT_ABSTRACTMETHOD_NODE): New enum constant. - * decl.c (java_init_decl_processing): Initialize - soft_abstractmethod_node. - -2005-06-13 Geoffrey Keating - - * Make-lang.in (rule for installing gcj.1): Depends on installdirs. - -2005-06-13 Per Bothner - - * expr.c (int highest_label_pc_this_method, - start_label_pc_this_method): New globals. - (lookup_label): Add start_label_pc_this_method to pc for label, and - update highest_label_pc_this_method. This prevents conflicts between - labels from different methods. - * java-tree.h: Declare new globals. - * jcf-parse.c (parse_class_file): If needed bump - start_label_pc_this_method and reset highest_label_pc_this_method. - -2005-06-13 Tom Tromey - - PR java/21844: - * parse.y (nested_field_access_p): Handle case where outer field - is inherited by enclosing class. - -2005-06-12 Per Bothner - - * class.c (inherits_from_p): Do load_class if needed. - -2005-06-09 Kaveh R. Ghazi - - * gjavah.c (error): Add ATTRIBUTE_PRINTF_1. - * java-tree.h (parse_error_context): Move... - * parse.h (parse_error_context): ... here, add ATTRIBUTE_GCC_DIAG. - * parse.y (parse_warning_context): Add ATTRIBUTE_GCC_DIAG. - * verify-impl.c (debug_print): Add ATTRIBUTE_PRINTF_1. - -2005-06-08 Roger Sayle - - * typeck.c (convert): Only clear TREE_OVERFLOW on INTEGER_CST nodes. - -2005-06-06 Jakub Jelinek - - * jv-scan.c (fatal_error, warning, warning0): Use gmsgid instead of - msgid for argument name. - * gjavah.c (error): Likewise. - * java-tree.h (parse_error_context): Likewise. - * parse.y (parse_error_context, parse_warning_context, - issue_warning_error_from_context): Likewise. - -2005-06-01 Tom Tromey - - PR java/21722: - * class.c (build_static_field_ref): Don't fold constant fields if - current class is from a .class file and we're using indirect - dispatch. - -2005-05-31 Kaveh R. Ghazi - - * java/verify-glue.c: Don't include errors.h and include toplev.h. - * java/Make-lang.in: Updates dependencies. - -2005-05-26 Ranjit Mathew - - PR java/19870. - * java-tree.h (OUTER_FIELD_ACCESS_IDENTIFIER_P): Rename to - NESTED_FIELD_ACCESS_IDENTIFIER_P. - (FIELD_INNER_ACCESS): Rename to FIELD_NESTED_ACCESS. - (FIELD_INNER_ACCESS_P): Rename to FIELD_NESTED_ACCESS_P. - * jcf-write.c (generate_classfile): Use - NESTED_FIELD_ACCESS_IDENTIFIER_P instead of - OUTER_FIELD_ACCESS_IDENTIFIER_P. - * parse.y (build_outer_field_access): Rename to - build_nested_field_access. Support static fields and outer-to-inner - class accesses. - (outer_field_access_p): Rename to nested_field_access_p. Support - static fields and generalise to outer-to-inner class and sibling - inner class accesses. - (outer_field_expanded_access_p): Rename to - nested_field_expanded_access_p and support static fields. - (outer_field_access_fix): Rename to nested_field_access_fix and - support static fields. - (build_outer_field_access_expr): Rename to - build_nested_field_access_expr and support static fields. - (build_outer_field_access_methods): Rename to - build_nested_field_access_methods and support static fields. For - static fields, generate accessors without class instance parameters. - (build_outer_field_access_method): Rename to - build_nested_field_access_method and support static fields. - (build_outer_method_access_method): Use - NESTED_FIELD_ACCESS_IDENTIFIER_P instead of - OUTER_FIELD_ACCESS_IDENTIFIER_P. - (resolve_expression_name): Consider static field accesses across - nested classes. - (resolve_qualified_expression_name): Likewise. - (java_complete_lhs): Use nested_field_access_fix instead of - outer_field_access_fix. - (patch_unary_op): Rename outer_field_flag to nested_field_flag. - Use nested_field_expanded_access_p instead of - outer_field_expanded_access_p. Use nested_field_access_fix instead - of outer_field_access_fix. - (check_thrown_exceptions): Use NESTED_FIELD_ACCESS_IDENTIFIER_P - instead of OUTER_FIELD_ACCESS_IDENTIFIER_P. - -2005-05-26 Bryce McKinlay - - * decl.c (GCJ_BINARYCOMPAT_ADDITION, - GCJ_BOOTSTRAP_LOADER_ADDITION): Removed. - (FLAG_BINARYCOMPAT_ABI, FLAG_BOOTSTRAP_LOADER, - MINOR_BINARYCOMPAT_ABI_VERSION): New. - (GCJ_CURRENT_BC_ABI_VERSION): Use new method to calculate version ID. - (parse_version): Calculate version ID using new method. Use bit-flags - for flag_indirect_dispatch and flag_bootstrap_classes. - -2005-05-25 Richard Henderson - - PR libgcj/21692 - * Make-lang.in (java/mangle.o): Depend on LANGHOOKS_DEF_H. - * class.c (build_class_ref): Set DECL_CLASS_FIELD_P and - DECL_CONTEXT; avoid pushdecl_top_level. - (build_dtable_decl): Set DECL_VTABLE_P and DECL_CONTEXT. - (layout_class): Don't SET_DECL_ASSEMBLER_NAME. - (layout_class_method): Likewise. - * decl.c (java_mark_cni_decl_local): New. - (java_mark_class_local): Use it. - * java-tree.h (DECL_LOCAL_CNI_METHOD_P): New. - (DECL_CLASS_FIELD_P, DECL_VTABLE_P): New. - (struct lang_decl_func): Add local_cni; - (struct lang_decl_var): Add class_field, vtable. - (java_mangle_decl): Declare. - * lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): New. - * mangle.c: Remove dup obstack.h; include langhooks-def.h. - (mangle_obstack_1): New. - (java_mangle_decl): Remove obstack argument. Call mangle_class_field, - mangle_vtable, and mangle_local_cni_method_decl. Fall back to - lhd_set_decl_assembler_name for things that don't need mangling. - (mangle_class_field): Rename from java_mangle_class_field, make - static, don't call init_mangling or finish_mangling. - (mangle_vtable): Similarly. - (mangle_local_cni_method_decl): New. - (init_mangling): Remove obstack argument. Use &mangle_obstack_1, - gcc_assert, and MANGLE_RAW_STRING. - (finish_mangling): Use gcc_assert, remove if 0 debugging code. - -2005-05-25 DJ Delorie - - * class.c (set_constant_value): Move warning control from if() to - warning(OPT_*). - -2005-05-24 Richard Henderson - - * builtins.c (define_builtin): Don't call make_decl_rtl. - * constants.c (build_constant_data_ref): Likewise. - * class.c (build_utf8_ref): Likewise. - (build_fieldref_cache_entry, build_static_field_ref): Likewise. - (get_dispatch_table, layout_class_method): Likewise. - (build_class_ref): Likewise. Don't set DECL_SIZE or DECL_SIZE_UNIT - by hand. - (make_local_function_alias): Don't SET_DECL_ASSEMBLER_NAME. - (make_method_value): Use METHOD_ABSTRACT instead of DECL_RTL_SET_P - to determine if we need a non-zero address. - * decl.c (builtin_function): Don't call make_decl_rtl. - (give_name_to_locals): Don't SET_DECL_ASSEMBLER_NAME. - * expr.c (build_known_method_ref): Don't call make_decl_rtl. - * resource.c (compile_resource_data): Likewise. - * parse.y (resolve_field_access): Re-word comment to avoid - building DECL_RTL. - -2005-05-24 Richard Henderson - - * class.c (registered_class): Take it out of class_roots; turn into - a vec of trees. - (register_class): Make static. Don't duplicate decl node. Use - VEC_safe_push. - (emit_register_classes): Use VEC_iterate. Use output_constant - instead of assemble_integer. Don't call mark_decl_referenced - directly. - * java-tree.h (register_class): Remove decl. - -2005-05-19 Paolo Bonzini - - PR java/17845 - - * parse.y (register_package, package_list): Remove. - (package_declaration): Do not call register_package. - (do_resolve_class): Do not use package_list. - -2005-05-15 Gerald Pfeifer - - * jcf-write.c (generate_bytecode_insns) : Remove - unused variable. - -2005-05-15 Tom Tromey - - PR java/21519: - * jcf-write.c (generate_bytecode_insns) : Don't call - NOTE_PUSH. - -2005-05-12 Aaron Luchko - - * gcj.texi: Add '-verify', '-noverify', and '-verifyremote'. - -2005-05-11 Tom Tromey - - * gcj.texi (Code Generation): Document -fbootstrap-classes. - * decl.c (GCJ_BOOTSTRAP_LOADER_ADDITION): New macro. - (parse_version): Use it. - * lang.opt (-fbootstrap-classes): New option. - -2005-05-10 Paolo Bonzini - - PR java/21436 - * class.c (maybe_layout_super_class): Look for imports in this_class. - * parse.h (ctxp_for_generation_last): New. - (do_resolve_class): Add a parameter. - * parse.y (ctxp_for_generation_last): New. - (java_pop_parser_context): Add at end of list. - (find_in_imports, find_in_imports_on_demand): Look in ctxp - if the TYPE_IMPORT_LIST or respectively the TYPE_IMPORT_DEMAND_LIST of - the given type are NULL. - (do_resolve_class): Look into the imports of the new second parameter. - Adjust recursive calls. - (resolve_class, resolve_inner_class, find_as_inner_class): Adjust - calls to do_resolve_class. - (create_class): Set the TYPE_IMPORT_LIST and TYPE_IMPORT_DEMAND_LIST. - (java_complete_class): Do not do that here. - -2005-05-03 Thomas Fitzsimmons - - PR java/20309 - * Make-lang.in (java): Add gjnih. - (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise. - (GJNIH_OBJS): New variable. - (gjnih$(exeext)): New target. - (JAVA_MANFILES): Add gjnih.1. - (java.uninstall): Add gjnih.1. - (java.mostlyclean): Add gjnih. - (java.maintainer-clean): Add gjnih.1. - (java/gjavah-jni.o): New target. - (.INTERMEDIATE): Add gjnih.pod. - (gjnih.pod): New target. - * config-lang.in (stagestuff): Add gjnih. - * gcj.texi (Top): Add gjnih node. - (Invoking gcjh): Add descriptions of -force, -old, -trace, -J and - -bootclasspath options. - (Invoking gjnih): New node. - * gjavah.c Initialize flag_jni to 1 if JNI_DEFAULT is defined. - (TOOLNAME): New macro. - (error): Replace hard-coded gcjh with TOOLNAME. - (process_file): Likewise. - (usage): Likewise. - (version): Likewise. - (help): Likewise. Add help output for -force, -old, -trace and -J - options. - (OPT_FORCE, OPT_OLD, OPT_TRACE): New macros. - (options): Add force, old, trace and J fields. - (main): Handle -force, -old, -trace and -J options. - -2005-05-03 Tom Tromey - - PR java/21245: - * gjavah.c (main): Unlink output file on error. - -2005-05-03 Kazu Hirata - - * constants.c, jvgenmain.c, lang.opt, resource.c: Update - copyright. - -2005-04-29 Tom Tromey - - * expr.c (build_jni_stub): Updated for change to build_block. - -2005-04-29 Andrew Pinski - - * expr.c (force_evaluation_order): Declare 'saved' earlier. - -2005-04-28 Andrew Haley - - PR java/19285 - * java-tree.h (soft_resolvepoolentry_node): New. - (alloc_constant_fieldref): Declare. - * expr.c (expand_java_field_op): Don't call class_init for - accesses to static fields with indirect dispatch. - * builtins.c (initialize_builtins): Add "__builtin_expect". - * decl.c (soft_resolvepoolentry_node): New variable. - (java_init_decl_processing): Create a decl for - "_Jv_ResolvePoolEntry". - * class.c (build_fieldref_cache_entry): New function. - (build_static_field_ref): Rewrite for indirect dispatch. - * constants.c (find_name_and_type_constant_tree): New function. - (alloc_constant_fieldref): Likewise. - (build_constants_constructor): Handle CONSTANT_Fieldref and - CONSTANT_NameAndType. - - PR java/21115 - * expr.c (force_evaluation_order): Convert outgoing args smaller - than integer. - -2005-04-27 Bryce McKinlay - - * gcj.texi (libgcj Runtime Properties): Remove obsolete - gnu.gcj.runtime.NameFinder.* system properties. Update documentation - for gnu.gcj.runtime.NameFinder.use_addr2line and gnu.gcj.progname. - -2005-04-25 Kaveh R. Ghazi - - * gjavah.c, jcf-dump.c, jv-scan.c, jvgenmain.c: Replace calls - to `unlock_stream' with `unlock_std_streams'. - -2005-04-25 Jakub Jelinek - - * Make-lang.in (java/decl.o, java/resource.o): Depend on $(EXPR_H) - instead of just expr.h. - -2005-04-24 Kaveh R. Ghazi - - * gjavah.c (main): Unlock the stdio streams. - * jcf-dump.c (main): Likewise. - * jv-scan.c (main): Likewise. - * jvgenmain.c (main): Likewise. - -2005-04-23 DJ Delorie - - * class.c, decl.c, expr.c, jcf-io.c, jcf-parse.c, jv-scan.c, - parse.y: Adjust warning() callers. - -2005-04-21 Bryce McKinlay - - * gcj.texi (Object fields): Change "Integer" to "Int" in example - contructor. - -2005-04-20 Bryce McKinlay - - * gcj.texi: Fix typos and bogus example. - -2005-04-19 Kazu Hirata - - * except.c: Fix a comment typo. - -2005-04-19 Julian Brown - - * decl.c (finish_method): Revert patch from 2005-04-13 for breaking - indirect dispatch with PIC. - -2005-04-18 Andrew Haley - - * java-except.h (struct eh_range.handler): Remove unused field. - (handle_nested_ranges): Remove function declaration. - (sanity_check_exception_range): Add function declaration. - * verify.c (verify_jvm_instructions): Remove call to - handle_nested_ranges. - * verify-glue.c (verify_jvm_instructions_new): Call - sanity_check_exception_range. - * except.c (link_handler, eh_range_freelist, link_handler, - handle_nested_ranges): Remove. - (add_handler): Rewrite. - (sanity_check_exception_range): New function. - (print_ranges): New function. - -2005-04-13 Julian Brown - - * decl.c (finish_method): Give methods once-only linkage. - -2005-04-11 Richard Sandiford - - * lang.opt: Refer to the GCC internals documentation instead of c.opt. - -2005-04-07 Kaveh R. Ghazi - - * java-tree.h: Don't use PARAMS(). - -2005-04-07 Per Bothner - - * class.c (push_class): By default, suppress debug output. - (finish_class): Enable debug output for classes we're emitting. - -2005-04-07 Andrew Haley - - * gcj.texi: Correct gcj-dbtool instructions. - -2005-04-04 Kazu Hirata - - * gcj.texi: Fix a typo. - * lang.c: Fix a comment typo. - -2005-04-01 Thomas Fitzsimmons - - * gcj.texi (Invoking gij): Add descriptions of new -X options. - Mention recognized-and-ignored compatibility options. - (Memory allocation): Add descriptions of JvMalloc, JvRealloc and - JvFree. - (About CNI): Add Memory allocation section. - -2005-04-01 Tom Tromey - - * decl.c (java_init_decl_processing): Fix types of - _Jv_MonitorEnter, _Jv_MonitorExit, _Jv_AllocObject, - _Jv_AllocObjectNoFinalizer, _Jv_Throw, _Jv_NewPrimArray, - _Jv_JNI_PopSystemFrame, _Jv_divI, _Jv_remI, _Jv_divJ, _Jv_remJ. - -2005-03-31 Jan Hubicka - - * Make-lang.in (class.o, decl.o): Depend on cgraph.h. - * class.c: Include cgraph.h - (make_local_functoin_alias): Mark aslias as needed. - * resource.c: Include cgraph.h - (compile_resource_data): Go via cgraph interface. - -2005-03-30 Ian Lance Taylor - - * parse.y (maybe_yank_clinit): Don't crash if bbody is NULL. - -2005-03-30 Tom Tromey - - * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): Handle cases where - inner_class_info_index==0 or outer_class_info_index==0. - -2005-03-29 Tom Tromey - - * gcj.texi (libgcj Runtime Properties): Document - gnu.gcj.runtime.endorsed.dirs. - -2005-03-24 Anthony Green - - * gcj.texi (Invoking gcj-dbtool): Document new LIBDIR option to - 'gcj-dbtool -p'. - -2005-03-23 Tom Tromey - - * decl.c (GCJ_CURRENT_BC_ABI_VERSION): New define. - (parse_version): Use it. - -2005-03-23 Joseph S. Myers - - * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove. - -2005-03-18 Andrew Haley - - PR java/20522 - * decl.c (update_aliases): Don't update variables that are about - to die. - (maybe_poplevels): Add comment. - -2005-03-17 Bryce McKinlay - - PR java/20502 - * jcf-parse.c (duplicate_class_warning): New function. - (java_parse_file): Call duplicate_class_warning if - CLASS_FROM_CURRENTLY_COMPILED_P is already set. - (parse_zip_file_entries): Likewise. Also set - CLASS_FROM_CURRENTLY_COMPILED_P. - -2005-03-16 Andrew Haley - - * expr.c (expand_java_arrayload): Don't generate a - NullPointerException based on the type of the node. - (build_java_array_length_access): Likewise. - -2005-03-15 Zack Weinberg - - * Make-lang.in (TEXI_JAVA_FILES): Add gcc-vers.texi. - -2005-03-11 Tom Tromey - - * gcj.texi (Invoking gcj-dbtool): Document 'gcj-dbtool -p'. - (libgcj Runtime Properties): Document the default .db. - -2005-03-10 Ranjit Mathew - - PR java/20312 - * parse.y (checks_throws_clauses): Check exceptions list even when - the base class does not come from a source file being compiled. - (java_complete_lhs): Remove unused variable 'wfl'. - -2005-03-09 Ranjit Mathew - - PR java/20338 - * decl.c (finish_method): Emit _Jv_InitClass for private static - methods inside inner classes as well. - -2005-03-08 Julian Brown - * Revert patch from 2005-03-08 for causing bootstrap failure on - ppc-darwin. - -2005-03-08 Julian Brown - - * decl.c (finish_method): Give methods once-only linkage. - -2005-03-07 Ranjit Mathew - - * lang.c (flag_new_verifier): Enable by default, regardless of ABI. - -2005-03-07 Bryce McKinlay - - * verify-glue.c (vfy_is_assignable_from): Perform static check using - can_widen_reference_to if the C++ ABI is in use. - (vfy_get_interface_count, vfy_get_interface): Remove unused functions. - * verify-impl.c (debug_print, make_utf8_const, init_type, copy_type, - type_isresolved, init_state, set_pc, state_get_pc, - _Jv_BytecodeVerifier): Clean up unused and disabled functions. - (verify_fail): Report the current PC from the verifier context. - (free_state): Remove #if 0 block to enable this function. - (free_verifier_context): Call free_state on state_list iterator - values before freeing them. - * expr.c (pop_type_0): Pop correct type for error message when stack - contains a multi-word type. - -2005-03-07 Ranjit Mathew - - * expr.c (build_java_array_length_access): Remove !flag_new_verifier - for known NULL array length access. - -2005-03-07 Tom Tromey - - * gcj.texi (Invoking gcj-dbtool): Document '-f'. - -2005-03-06 Kazu Hirata - - * jcf-dump.c, jcf-io.c, jcf-reader.c, lang.c, parse.h, - typeck.c: Update copyright. - -2005-03-06 Ranjit Mathew - - Remove xref code. - * xref.c, xref.h: Remove file. - * Make-lang.in (java/xref.o): Remove. - * java-tree.h (flag_emit_xref, do_not_fold): Remove declaration. - * lang.c (flag_emit_xref): Remove definition. - * parse.h (DECL_END_SOURCE_LINE, DECL_INHERITED_SOURCE_LINE): Remove. - * typeck.c (convert): Remove use of do_not_fold. - * parse.y (do_not_fold): Remove definition. - (parser grammar): Remove xref code. - (maybe_create_class_interface_decl, create_class): Likewise. - (register_fields, method_header, finish_method_declaration): Likewise. - (declare_local_variables, source_end_java_method): Likewise. - (java_complete_expand_classes): Do not set do_not_fold. - (java_complete_expand_method): Remove xref code. - (java_expand_classes, resolve_field_access, patch_invoke): Likewise. - (java_complete_tree, java_complete_lhs, patch_assignment): Likewise. - (patch_binop, build_string_concatenation, patch_array_ref): Likewise. - (patch_synchronized_statement, patch_throw_statement): Likewise. - (maybe_build_class_init_for_field): Likewise. - -2005-03-05 Kazu Hirata - - * expr.c (build_expr_wfl, expr_add_location): Use TYPE_P - instead of IS_NON_TYPE_CODE_CLASS. - -2005-03-04 Andrew Haley - - PR java/18362 - * class.c (set_method_index): Don't set method_index if it is - NULL_TREE. - (layout_class_method): Don't complain about "non-static method foo - overrides static method" in the case of indirect dispatch. - -2005-03-02 Kaveh R. Ghazi - - * jcf-io.c (caching_stat): Use __extension__ to avoid pedantic - warning. - * Make-lang.in: Don't elide warnings in jcf-io.c. - -2005-03-01 Per Bothner - - PR java/8608 - * check-init.c (wfl): Remove static. - (final_assign_error, check_init): Replace calls to parse_error_context - by plain error. - (check_init): Save, set, and restore input_location for each exp. - -2005-03-01 Per Bothner - - * jcf-reader.c (get_attribute): Handle SourceDebugExtension (JSR 45) - if HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE is defined. - * jcf-dump.c (HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE): Print contents. - -2005-03-01 Per Bothner - - * java-tree.h (IDENTIFIER_HANDLECLASS_VALUE): Remove ancient macro. - -2005-02-23 Thomas Fitzsimmons - - PR libgcj/16923 - * gcj.texi (Invocation): Add descriptions of JvVMInitArgs and - JvVMOption. - -2005-02-22 Tom Tromey - - PR java/20056: - * verify-impl.c (EITHER): New define. - (types_compatible): Handle it. - (check_field_constant): Use it. - -2005-02-18 Tom Tromey - - PR java/20056: - * verify-impl.c (types_equal): Fixed test. - - PR java/20056: - * verify-glue.c (vfy_class_has_field): New function. - * verify.h (vfy_class_has_field): Declare. - * verify-impl.c (check_field_constant): Added 'putfield' - argument. - (verify_instructions_0): Updated. - (types_equal): New function. - -2005-02-14 Tom Tromey - - PR java/19921: - * jcf-write.c (generate_bytecode_insns) : Note the - stack effect of multianewarray. - -2005-02-14 Andrew Haley - - PR java/19907 - * expr.c (expand_byte_code): Call promote_arguments(). - (promote_arguments): New function. - * decl.c (check_local_unnamed_variable): Remove special case for - new verifier. - (find_local_variable): Promote all boolean types to int - when searching for local variable decls. - -2005-02-12 Kazu Hirata - - * builtins.c, java-except.h, jcf-parse.c, jv-scan.c, lex.c, - parse-scan.y: Update copyright. - -2005-02-11 Per Bothner - - PR java/15543 - * parse-scan.y (input_location): Remove variable. - (main_input_filename): New - replaces input_filename, which isn't - settable if USE_MAPPED_LOCATION. - * lex.c (java_init_lex): Wrap some more places in #ifndef JC1-LITE, - so we don't reference input_location or wfl_operator in that case. - * jv-scan.c (expand_location): Remove - no longer used. - (main): Set main_input_filename rather than input_filename. - -2005-02-09 Richard Henderson - - * builtins.c (initialize_builtins): Call build_common_builtin_nodes. - * decl.c (java_init_decl_processing): Initialize const_ptr_type_node. - -2005-02-08 Marcin Dalecki - - * expr.c (add_type_assertion): Use the proper enumeration type, - since this is what htab_find_slot() is expecting. - -2005-02-06 Joseph S. Myers - - * gcj.texi: Update copyright dates. - -2005-02-02 Tom Tromey - - * gcj.texi (libgcj Runtime Properties): Default library_control - to 'cache'. - -2005-02-02 Ranjit Mathew - - PR java/15543 - * parse-scan.y (formal_parameter): Use $2 (type) instead of $$ - (modifiers) when square brackets are present in a declaration for - a final paramter. - * jv-scan.c (main): Set input_filename and input_line. - -2005-02-01 Tom Tromey - - PR java/19742: - * gjavah.c (get_field_name): Don't override name for JNI header. - -2005-02-01 Roger Sayle - - * jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR - of unsigned types using iushr and lushr JVM bytecodes. - -2005-02-01 Ranjit Mathew - - PR java/19738 - * gjavah.c (jni_print_float): Do not emit floating-point - initialiser for a static final field. - (jni_print_double): Likewise. - -2005-02-01 Mark Mitchell - - Revert: - 2005-01-31 Mark Mitchell - * gjavah.c (print_field_info): Mark static data members of - floating-point type with "__extension__". - -2005-01-31 Mark Mitchell - - * gjavah.c (print_field_info): Mark static data members of - floating-point type with "__extension__". - -2005-02-01 Ranjit Mathew - - PR java/9157 - * parse.y (build_string_concatenation): Remove redundant if. - (patch_conditional_expr): Attempt to patch_string() the condition - of a ?: as well, in addition to its other operands. - -2005-01-25 Tom Tromey - - * Make-lang.in (java/java-tree-inline.o): Removed. - -2005-01-25 Ranjit Mathew - - PR java/19070 - * parse.y (patch_binop): Allow comparisons against NULL only - if the other operand is of a reference type. - -2005-01-24 Tom Tromey - - * java-tree.h (gcj_abi_version): Declare. - * class.c (make_class_data): Push gcj_abi_version into "next" - field. Renamed field. - * decl.c (gcj_abi_version): New global. - (parse_version): New function. - (java_init_decl_processing): Call it. Renamed 'next' field. - Include version.h. - (GCJ_BINARYCOMPAT_ADDITION): New define. - -2005-01-24 Roger Sayle - - PR java/19295 - * jcf-write.c (generate_bytecode_insns): Conversions between - integer types of the same precision shouldn't generate widening - or narrowing conversion bytecodes. - -2005-01-22 Kazu Hirata - - * java-except.h, java-tree.h: Remove unused prototypes. - -2005-01-20 Andrew Pinski - - PR java/18091: - * jcf-write.c (perform_relocations): Don't call memcpy if source - and destination are the same. - -2005-01-17 Tom Tromey - - * verify-impl.c (get_short): Sign extend. - (get_int): Likewise. - -2005-01-12 Ranjit Mathew - - * expr.c (build_jni_stub): Replace mistaken use of TYPE_SIZE_UNIT - with TYPE_SIZE. - -2005-01-10 Ranjit Mathew - - * verify.c: Revert to the version before the BC-ABI merge. - -2005-01-10 Ranjit Mathew - - PR java/19277 - * check-init.c (check_init): Take care of references that do not - have an explicit final variable declaration (e.g. array length - access) for pre/post in/de-crement operators. - -2005-01-08 Mark Wielaard - - * parse.y (process_imports): Allocate (and free) original_name only - when not already defined. - * jcf-parse.c (read_class): Free results of find_class() and - lrealpath(). - (java_parse_file): Keep pointer to head of file_list and free when - done. Free result of lrealpath(). - -2005-01-05 Tom Tromey - - * gcj.texi (Standard Properties): java.ext.dirs is now used. - -2004-12-20 Andrew Haley - - * typeck.c: Use fold_convert for ints and booleans. - -2004-12-17 Andrew Haley - - PR java/18931 - * typeck.c (convert): Use a CONVERT_EXPR when converting to - BOOLEAN_TYPE or CHAR_TYPE. - (convert_to_boolean, convert_to_char) : Remove. - * convert.h (convert_to_boolean, convert_to_char) : Remove. - * expr.c (expand_load_internal): Do type conversion if type is not - as required. - -2004-12-13 Danny Smith - - PR target/18459 - * class.c (emit_register_classes): Use TARGET_USE_JCR_SECTION. - Update comment. - -2004-12-07 Andrew Haley - - PR java/18811: - * jcf-parse.c (load_class): Remove sanity test for missing inner - class file. - -2004-12-06 Tom Tromey - - * Make-lang.in (JAVA_MANFILES): Added gcj-dbtool. - (java.uninstall): Likewise. - (java.maintainer-clean): Likewise. - (.INTERMEDIATE): Likewise. - (java.install-man): Likewise. - (gcj-dbtool.pod): New target. - * gcj.texi (Code Generation): Document -findirect-dispatch. - (libgcj Runtime Properties): Document - gnu.gcj.precompiled.db.path. - (Top): Link to "Invoking gcj-dbtool". - -2004-12-06 Tom Tromey - - PR java/14853: - * java-tree.h (extract_field_decl): Declare. - * parse.y (extract_field_decl): Renamed from - strip_out_static_field_access_decl. No longer static. - * check-init.c (get_variable_decl): Unwrap COMPOUND_EXPRs. - -2004-12-03 Tom Tromey - - * lang.c (flag_new_verifier): Define. - (java_post_options): Set flag_new_verifier if indirect dispatch - is being used. - * lang.opt (fnew-verifier): Removed. - -2004-12-03 Tom Tromey - - PR bootstrap/14614: - * Make-lang.in (java.install-common): Only install transformed - gcjh if gcj-cross exists. - -2004-12-03 Andrew Haley - - PR java/18812 - * except.c (link_handler): Patch 'outer' field of siblings of the - range we're demoting. - -2004-12-03 Andrew Haley - - PR java/18697 - * class.c (layout_class_method): Don't fail to override a method - simply because it has DECL_ARTIFICIAL set. - -2004-12-02 Tom Tromey - - PR java/16675: - * parse.y (craft_constructor): Special case null_pointer_node. - -2004-12-02 Tom Tromey - - PR java/18741: - * java-gimplify.c (java_gimplify_expr): Don't call - SET_EXPR_LOCATION unless wrapped tree is an expression. - -2004-11-27 Per Bothner - - * jcf-parse.c (set_source_filename): Improvement to Andrew's fix: - Fix fencepost error in 'i', which got executed one too many times. - Also, fold memcpy into explicit loop, as originally intended. - Also, free temporary 'buf' which otherwise leaks. - -2004-11-27 Per Bothner - - * expr.c (build_expr_wfl): Only declare last_file and last_filenode - local static variables if not USE_MAPPED_LOCATION. - -2004-11-27 Kazu Hirata - - * class.c, decl.c, expr.c: Fix comment typos. - -2004-11-26 Andrew Pinski - - PR java/18305 - * decl.c (end_java_method): Call - attach_init_test_initialization_flags on all the init_decls. - * parse.y (attach_init_test_initialization_flags): Move to ... - * expr.c (attach_init_test_initialization_flags): here and - support BIND_EXPR also. - * java-tree.h (attach_init_test_initialization_flags): Prototype. - * jcf-parse.c (parse_class_file): Don't disable class init - optimization. - -2004-11-25 Joseph S. Myers - - * gjavah.c, jcf-dump.c, jv-scan.c, jvspec.c: Avoid ` as left quote - in diagnostics. - -2004-11-24 Richard Henderson - - * verify-glue.c (vfy_init_name, vfy_clinit_name, vfy_object_type, - vfy_string_type, vfy_throwable_type): Use ANSI declaration form. - -2004-11-24 Tom Tromey - - * verify.c (defer_merging): Don't use C++-style comment. - * verify.h (java_opcode): Added java_opcode_end. - * class.c (build_class_ref): Remove C++ comment and old FIXME. - - * verify-impl.c (vfy_push_type): Removed bogus "return". - (initialize_stack): Use vfy_alloc and vfy_free. - (verify_instructions_0): Likewise. - - * Merged gcj-abi-2-dev-branch to trunk. - -2004-11-24 Andrew Haley - - * jcf-parse.c (parse_class_file): Set file_start_location. - -2004-11-10 Tom Tromey - - * class.c (make_field_value): Don't call build_static_field_ref. - (build_static_field_ref): Don't emit direct references when using - indirect dispatch. - - * gcj.texi (Invoking gij): Document -verbose. Put -verbose and - -verbose:class into man page synopsis. - -2004-11-09 Tom Tromey - - * expr.c (build_java_arraystore_check): Still generate check if - element type is itself an array. - -2004-11-08 Tom Tromey - - * java-tree.h (soft_check_assignment_node): Removed. - (enum java_tree_index): Removed JTI_SOFT_CHECK_ASSIGNMENT_NODE. - * decl.c (java_init_decl_processing): Don't initialize - soft_check_assignment_node. - -2004-11-05 Tom Tromey - - * class.c (layout_class_methods): Don't add Miranda methods when - using indirect dispatch. - -2004-11-05 Bryce McKinlay - - * class.c (make_class_data): Call emit_assertion_table to set the - 'assertion_table' field. - (build_signature_for_libgcj): Move here from expr.c. - (add_assertion_table_entry): New function. Callback for assertion - hashtable traversal. - (emit_assertion_table): New. Take class argument, and generate - assertion table DECL based on the TYPE_ASSERTIONS hashtable. - * decl.c (init_decl_processing): Define assertion_entry_type record. - Push 'assertion_table' class field instead of 'verify'. - * expr.c (type_assertion_eq): Compare 'assertion_code' field. - (type_assertion_hash): Include 'assertion_code' in hash. - (add_type_assertion): Rewritten. Take class and assertion_code - arguments. Add assertions to the TYPE_ASSERTIONS hashtable. - (can_widen_reference_to): Use new add_type_assertion() arguments. - * java-tree.h (java_tree_index): Add JTI_ASSERTION_ENTRY_TYPE, - JTI_ASSERTION_TABLE_TYPE. Remove JTI_VERIFY_IDENTIFIER_NODE. - (verify_identifier_node): Removed. - (assertion_entry_type, assertion_table_type): New. - (ASSERTION_TYPES_COMPATIBLE, ASSERTION_IS_INSTANTIABLE): New. Type - assertion code definitions. - (struct type_assertion): Add assertion_code. Rename 'source_type' and - 'target_type' to 'op1' and 'op2'. - (add_type_assertion): Declare. - (lang_printable_name_wls): Remove unused definition. - * verify-glue.c: (vfy_is_assignable_from): New. Call add_type_assertion - to emit runtime assertion. - (vfy_note_stack_type): Clean up non-C90 declarations. - (vfy_note_local_type): Likewise. - * verify.h (vfy_is_assignable_from): Declare. - * verify-impl.c (is_assignable_from_slow): Remove unused function. - (ref_compatible): Rename arguments. Call vfy_is_assignable_from() - instead of is_assignable_from_slow(). - (types_compatible): Reinstate ref_compatible() call. - -2004-11-04 Tom Tromey - - * class.c (build_static_field_ref): Reverted previous patch. - - * class.c (build_static_field_ref): Don't emit direct references - when using indirect dispatch. - -2004-11-03 Tom Tromey - - * expr.c (expand_java_arrayload): Set lhs_type_node. - (expand_java_arraystore): Set rhs_type_node. - -2004-11-02 Tom Tromey - - * jcf-parse.c (compute_class_name): Use filename length from zip - directory, not strlen. - - * expr.c (expand_invoke): Mark new interface methods as abstract. - -2004-11-01 Tom Tromey - - * verify-impl.c (push_jump): Removed check for uninitialized - objects. - (push_exception_jump): Likewise. - (handle_ret_insn): Likewise. - (handle_jsr_insn): Likewise. - (state_check_no_uninitialized_objects): Removed. - - * decl.c (check_local_unnamed_variable): Recognize - promoted-to-int parameters when using the new verifier. - * expr.c (expand_java_arraystore): Explicitly request array type - when using new verifier. - (expand_java_arrayload): Likewise. - (invoke_build_dtable): Don't pass object_type_node as - expression argument to build_java_indirect_ref. - (build_java_check_indexed_type): Do nothing. - (build_java_arraystore_check): Handle case where array doesn't - have array type. - (build_java_array_length_access): Likewise. - (expand_invoke): Handle case where interface overrides a method - from Object. - (pop_type_0): Always succeed for reference types. - (process_jvm_instruction): Don't pop a value in a dead - exception handler. - (pop_arguments): Convert arguments to correct types. - -2004-10-29 Andrew Haley - - * jcf-parse.c (give_name_to_class): Remove line that was - incorrectly merged. - -2004-10-29 Andrew Haley - - * jcf-parse.c (set_source_filename): Add code to build new sfname. - -2004-10-20 Andrew Haley - - * decl.c (end_java_method): Don't expand if flag_syntax_only. - -2004-10-26 Tom Tromey - - * verify.h (vfy_notify_verified): Removed. - * verify-glue.c (vfy_notify_verified): Removed. - -2004-10-26 Tom Tromey - - * verify-impl.c (debug_print_state): Declare `i' before code. - (merge_types): Modify `t' when it is null_type. - -2004-10-26 Tom Tromey - - * verify-impl.c (type_print): Renamed from print. Now static and - takes an argument. - (debug_print_state): Use type_print. - -2004-10-25 Tom Tromey - - * expr.c (build_invokeinterface): Compute correct offset for - index into interface methods. - -2004-10-20 Tom Tromey - - * java-tree.h (verify_jvm_instructions_new): Declare. - - * jvspec.c (jvgenmain_spec): Remove -fnew-verifier from cc1 - command line. - - * verify-impl.c (verify_instructions): Correctly handle wide - types on the stack. - * verify-glue.c (vfy_get_class_name): Use DECL_NAME. - (vfy_get_component_type): Strip pointer types. - (vfy_find_class): Use get_type_from_signature. Strip pointer - types. - Include java-except.h. - -2004-10-20 Bryce McKinlay - - * verify-impl.c (type_array_elementpop_raw, vfy_pop_type_t, - vfy_push_type_t, set_variable, add_new_state, merge_into, - handle_jsr_insn, branch_prepass, check_class_constant, - check_wide_constant, get_one_type, compute_static_types, - verify_instructions_0): Clean up C99 declarations after statements. - -2004-10-20 Tom Tromey - - * verify-impl.c (merge_refs): Compare reference against iterator, - not ref2. - - * verify-glue.c (vfy_tag): Mask off resolved flag. - -2004-10-19 Tom Tromey - - * verify-impl.c (verify_instructions): Call vfy_note_local_type. - (init_state_with_stack): Initialize `this_type' in state. - (verify_method): Use debug_print. - * verify-glue.c (vfy_is_primitive): Removed debugging print. - (vfy_note_stack_depth): Reverted last patch. - (vfy_note_stack_type): Note pointer to Object, not Object. - (vfy_note_local_type): Likewise. - - * verify.h (vfy_note_instruction_seen): Declare. - * verify-glue.c (verify_jvm_instructions_new): Set - BCODE_EXCEPTION_TARGET on target instruction. - (vfy_note_instruction_seen): New function. - * verify-impl.c (FLAG_INSN_SEEN): New define. - (verify_instructions_0): Set flag on instruction. Save state for - PC=0 later. - (verify_instructions): Call vfy_note_instruction_seen. - - * verify-glue.c (vfy_note_stack_depth): Fix off-by-one error. - (verify_jvm_instructions_new): Call method_init_exceptions, - add_handler, and handle_nested_ranges. - * verify-impl.c (verify_method): Return 1 on success. - (verify_instructions_0): Save the state at PC=0. - - * verify-impl.c (init_type_from_class): Set is_resolved and - ref_next on new ref_intersection. - (init_type_from_string): Likewise. - -2004-10-15 Bryce McKinlay - - * expr.c (expand_bytecode): Use verify_jvm_instructions_new - if flag_new_verifier is set. - * java-tree.h (flag_new_verifier): Declare. - * lang.opt (fnew-verifier): New option. - * verify-impl.c: Work around namespace pollution by undef'ing - 'current_class'. - (struct verifier_context): Make 'bytecode' const. - (verify_fail_pc): Pass -1 PC argument to vfy_fail. - (types_compatible): For the BC-ABI, always consider reference types - compatible. - (check_class_constant): Use vfr->current_class. - (check_constant): Likewise. - (check_wide_constant): Likewise. - (check_field_constant): Check for 'L' at start of type name. - (get_one_type): Return pointer instead of type. Set type result in - caller via passed type pointer. - (compute_argument_types): Update to use new get_one_type arguments. - (compute_return_type): Likewise. - (make_verifier_context): New. Allocate and initialize 'vfr'. - (free_verifier_context): New. Free 'vfr' and its contents. - (verify_method): Remove ATTRIBUTE_UNUSED. Call make_verifier_context - and free_verifier_context. - -2004-10-15 Tom Tromey - - * verify-glue.c (vfy_note_local_type): Mark argument as unused. - * verify.h (vfy_fail): Fixed formatting. - - * verify-impl.c (vfr): Fixed comment formatting. - (collapse_type): New function. - (verify_instructions): Notify compiler about type map. - * verify.h (vfy_note_stack_depth): Updated. - (vfy_note_stack_type): Likewise. - (vfy_note_local_type): Likewise. - (vfy_unsuitable_type, vfy_return_address_type, vfy_null_type): - Declare. - * verify-glue.c (vfy_note_stack_depth): Correctly size type - state. Added `method' argument. - (vfy_note_stack_type): Renamed from vfy_note_type. Added `method' - argument. - (vfy_note_local_type): New function. - (vfy_unsuitable_type): Likewise. - (vfy_return_address_type): Likewise. - (vfy_null_type): Likewise. - - * verify.h (VFY_IN_GCC): Removed. - (VFY_WANT_TYPEMAP): Removed. - * verify-impl.c (verify_instructions_0): Removed useless "\". - (struct state) : Uncomment. - -2004-10-13 Bryce McKinlay - - * verify-impl.c: Formatting fixes. Reformat C++-style comments to - C-style. - -2004-10-06 Bryce McKinlay - - * Make-lang.in (verify.o): Re-enabled this target. - * verify-glue.c (vfy_get_interface_count): Add ATTRIBUTE_UNUSED. - (vfy_get_interface): Likewise. - (verify_jvm_instructions_new): Renamed from verify_jvm_instructions. - * verify.h (verify_jvm_instructions_new): Declare. - * verify-impl.c (free_state): Temporarily comment out unused - function. - -2004-10-06 Tom Tromey - - * java-tree.h (JV_STATE_READ): New enum value. - -2004-10-06 Bryce McKinlay - - * verify.h: New file. - -2004-10-05 Bryce McKinlay - - * verify-impl.c, verify-glue.c, verify.h: New files. - * Make-lang.in: Add rules for verify-impl.o and verify-glue.o. - -2004-09-24 Andrew Haley - - * decl.c (check_local_unnamed_variable): Always use the PARM_DECL - for a slot if it's of pointer type. - -2004-09-14 Tom Tromey - - * class.c (make_class_data): Correctly initialize "state" field. - Initialize "engine" field. - * decl.c (java_init_decl_processing): Add "engine" field. - -2004-09-10 Andrew Haley - - PR java/12760 - * expr.c (build_invokeinterface): Use fast method for interface - dispatch. - * java-tree.h (enum java_tree_index): Add JTI_ITABLE_TYPE, - JTI_ITABLE_PTR_TYPE. - (struct lang_type): Add itable_methods, itable_decl, itable_syms_decl. - (emit_symbol_table): Add new arg, element_size. - * decl.c (java_init_decl_processing): Initialize Class.itable. - * class.c (GEN_TABLE): New macro. - (gen_indirect_dispatch_tables): Use it. Add itable. - (make_class_data): Add new arg for emit_symbol_table(). - Emit itable. - (add_miranda_methods): Make sure search_class has been parsed. - (emit_symbol_table): Add new arg, element_size. - -2004-09-06 Andrew Haley - - * verify.c (merge_types): Return Object for all merges of - interfaces. - * expr.c (add_type_assertion): Don't generate assertions when - source type is array of Object. - -2004-09-03 Andrew Haley - - * class.c (finish_class): Nullify TYPE_VERIFY_METHOD. - - * lang.c (java_post_options): Force flag_verify_invocations if - we're not using indirect dispatch. - - * expr.c (pop_type_0): Move test for interfaces before call to - can_widen_reference_to(). - (build_signature_for_libgcj): Remove generation of canonical array - type. - (add_type_assertion): Canonicalize both arrays. - Don't assert that type X can be assigned to Object. - Don't assert that type X an be assigned to type X. - Don't assert that Object can be assigned to type X. - (can_widen_reference_to): Warn whenever we generate an assertion. - (process_jvm_instruction): Use throwable_type_node for the type of - an exception class. - -2004-09-01 Andrew Haley - - * decl.c (java_init_decl_processing): Change - verify_identifier_node to "__verify". - * expr.c (add_type_assertion): Use verify_identifier_node for name. - * java-tree.h (verify_identifier_node): Change to "__verify". - - * expr.c (build_signature_for_libgcj): New function. - (add_type_assertion): Use it to construct signatures for - source_type and target_type. - -2004-08-27 Andrew Haley - - * java-tree.h (enum java_tree_index): Add JTI_VERIFY_IDENTIFIER_NODE. - (verify_identifier_node): New. - (TYPE_VERIFY_METHOD): New. - (struct type_assertion): New type. - * expr.c (type_assertion_eq): New function. - (type_assertion_hash): New function. - (add_type_assertion): New function. - (can_widen_reference_to): Call add_type_assertion(). - * decl.c (java_init_decl_processing): Add verify_identifier_node. - * class.c (make_class_data): Initialize TYPE_VERIFY_METHOD (type). - (finish_class): Output TYPE_VERIFY_METHOD (type). - - * decl.c (end_java_method): Nullify unused fields. - -2004-08-17 Andrew Haley - - * verify.c (defer_merging): Quieten. - * jcf-parse.c (load_class): Only try to open a class file if it's - java.lang.Object or if it's part of the current compilation. - Check that the class we just tried to load is the class we just - loaded. Quieten. - (java_parse_file): Set flag_verify_invocations off if we're - compiling from .class. - (parse_zip_file_entries): Abort if we try to read a dummy class. - * expr.c (can_widen_reference_to): Quieten. - (build_invokevirtual): Abort if we try to invokevirtual an - interface. - (expand_invoke): Don't build a non-interface call to an interface. - (build_instanceof): Don't do premature optimization if - flag_verify_invocations is not set. - * class.c (set_super_info): Disable code that inherits TYPE_DUMMY - from superclass. - (build_static_field_ref): Add correct type conversion for - field_address. - (add_miranda_methods): Disable generation of Miranda methods for - dummy classes. - (layout_class_method): Don't complain about non-static method - overrides static method with dummy classes. - -2004-08-13 Tom Tromey - - * class.c (build_static_field_ref): Re-enable atable lookups for - static fields. - - * parse.y (strip_out_static_field_access_decl): Indentation fix. - -2004-08-11 Tom Tromey - - * gcj.texi (libgcj Runtime Properties): Document new properties. - -2004-08-06 Andrew Haley - - * jcf-parse.c (load_class): Check that we really have loaded the - class we're looking for. - -2004-07-19 Andrew Haley - - * verify.c (verify_jvm_instructions): Comment change only. - - * typeck.c (build_java_array_type): Add size field to array name. - - * java-tree.h (LOCAL_SLOT_P): New. - (update_aliases): Add PC argument. - (pushdecl_function_level): New function. - - * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL, - MODIFY_EXPR, and SAVE_EXPR. - (java_gimplify_modify_expr): New function. - - * expr.c (push_type_0): Call find_stack_slot() to create temporary. - (expand_iinc): Pass PC to update_aliases(). - (STORE_INTERNAL): Likewise. - (process_jvm_instruction): Likewise. - - * decl.c (base_decl_map): New variable. - (uniq): New variable. - (update_aliases): Rewrite with more thorough checking. - (debug_variable_p): New function. - (push_jvm_slot): Don't initialize local variable. Don't pushdecl. - (check_local_named_variable): Delete whole function. - (initialize_local_variable): New function. - (check_local_unnamed_variable): Add checks and comments. - (find_local_variable): Rewrite. - (java_replace_reference): New function. - (function_binding_level): New variable. - (pushdecl_function_level): New function. - (maybe_pushlevels): Set DECL_LOCAL_END_PC. - (maybe_pushlevels): Call pushdecl() on each of the new decls. - (start_java_method): Reset uniq. Create base_decl_map. Set - function_binding_level. - (end_java_method): Null unused fields to save memory. - -2004-06-29 Andrew Haley - - * except.c (expand_start_java_handler): Push a new binding level. - Don't build a TRY_CATCH_EXPR now, we'll do it later. Call - register_exception_range() to register where we'll do it. - (expand_end_java_handler): Remove old bogus code. Replace with - new logic that simply builds TRY_CATCH_EXPRs and inserts them at - the top of the expression we're curently building. - (maybe_end_try): Delete. - * decl.c (binding_level.exception_range): New field. - (clear_binding_level): Add field exception_range. Reformat. - (poplevel): Call expand_end_java_handler(). - (poplevel): Call java_add_stmt only if functionbody is false. - (maybe_poplevels): Don't call maybe_end_try() from here. - (end_java_method): Clear no longer used trees in function decl. - (register_exception_range): New function. - * java-tree.h (register_exception_range, struct eh_range): Declare. - -2004-06-22 Andrew Haley - - * class.c (gen_indirect_dispatch_tables): Set the DECL_OWNER of - the otable. - * check-init.c (get_variable_decl): Teach check-init about - FIELD_DECLs addressed via the otable. - * jcf-parse.c (load_class): Check CLASS_LOADED_P, not - CLASS_PARSED_P. - -2004-05-28 Andrew Haley - - * jcf-parse.c (load_class): Don't try to read a class that we've - already read. - - * expr.c (build_invokeinterface): Use the old-fashioned way of - doing indirect dispatch: look up interfaces by name. - * java-tree.h (enum java_tree_index): Add - JTI_SOFT_LOOKUPINTERFACEMETHODBYNAME_NODE - * decl.c (java_init_decl_processing): Add - soft_lookupinterfacemethodbyname_node. - - * gjavah.c (print_method_info): Final methods have vtable entries, - so gjavah needs to output them. - * class.c (layout_class_method): Generate vtable entries for final - methods. - * parse.y (invocation_mode): Use INVOKE_VIRTUAL for indirect - dispatch, even if a method is final. - -2004-05-25 Andrew Haley - - * class.c (build_symbol_entry): Convert the names of constructors - to init_identifier_node when generating an entry for the indirect - dispatch table. - - * expr.c (build_known_method_ref): Generate indirect calls for - all methods marked DECL_EXTERNAL or TREE_PUBLIC. - -2004-05-24 Andrew Haley - - * expr.c (build_known_method_ref): Make sure ARRAY_REF access to - atable element is of the right type. - - * class.c (build_static_field_ref): Cast pointer to correct type - for field. - -2004-04-20 Bryce McKinlay - - * Merged with HEAD as of 20040514. Diff against - gcj-abi-2-merge-20040514. - -2004-04-16 Andrew Haley - - * verify.c (check_pending_block): Disable subroutine checks. - (defer_merging): New function. - (merge_types): If types are dummy, use defer_merging to combine them. - (verify_jvm_instructions): If invocation is invokeinterface and - target is dummy, assume target really is an interface. - - * parse.y (patch_invoke): Break out call to java_create_object. - - * lang.c (flag_verify_invocations): New. - - * jcf-parse.c (load_class): If we've already failed to load a - class, don't try again. - (load_class): If we can't find a .class file, don't fail, but emit - a warning. - (parse_class_file): Don't act on dummy methods. - - * java-tree.h (flag_verify_invocations): New. - (TYPE_DUMMY): New. - (lang_type.dummy_class): New field. - (java_create_object): New function. - (METHOD_DUMMY): New. - - * expr.c (build_field_ref): Widen field offset. - (pop_type_0): If the type in stack_type_map is a TREE_LIST, check - that each of its elements is compatible with the one we're - popping. - (pop_type_0): Issue a warning to say that we need to generate a - runtime check. - (java_create_object): New function. - (build_field_ref): Only generate hard refs if we're not using - indirect dispatch. - (expand_java_field_op): If we're using !verify_invocations and we - see a missing field, generate a decl for it. - - (expand_invoke): If a class doesn't have the method we seek and - we're using !flag_verify_invocations, generate a decl for the - method now. - - (build_known_method_ref): Always use indirect dispatch via the - atable for static methods. - - (expand_java_NEW): Break out object creation into new function, - java_create_object. - - (can_widen_reference_to): Issue a warning to say that we need to - generate a runtime check. - - * class.c (set_super_info): Inherit TYPE_DUMMY from sureclass. - (make_method_value): Also use index for interfaces. - (make_class_data): Skip dummy field for inherited data. - Don't build method array for dummy methods. - Set size_in_byte to -1 when using inirect dispatch - Don't build a hard class ref if we don't have a hard ref to our - superclass, or if we're using inirect dispatch. - Null out dispatch tables. - - (layout_class_method): Don't complain about non-static method - overrides static method is method is artificial. - - (build_static_field_ref): Disable atable references to static - fields for the time being. - - (layout_class_methods): Check for CLASS_INTERFACE as - well as CLASS_ABSTRACT. - -2004-11-24 Steven Bosscher - - * class.c (make_class_data): Don't check flag_inline_functions. - * lang.c (flag_really_inline): Remove unused flag. - (java_handle_option): Don't set it here. Remove special handling - of flag_inline_functions for Java. - (java_init): Don't set flag_inline_trees here. Already done... - (java_post_options): ...here. Don't clear flag_inline_functions. - -2004-11-24 Steven Bosscher - - * java-gimplify.c (java_gimplify_labeled_block_expr): New function. - (java_gimplify_exit_block_expr): New function. - (java_gimplify_expr): Use them to gimplify EXIT_BLOCK_EXPR and - LABELED_BLOCK_EXPR. - * java-tree.def (LABELED_BLOCK_EXPR): Moved from tree.def. - (EXIT_BLOCK_EXPR): Likewise. - * java-tree.h (LABELED_BLOCK_LABEL): Moved from tree.h. - (LABELED_BLOCK_BODY): Likewise. - (EXIT_BLOCK_LABELED_BLOCK): Likewise. - * jcf-write.c (generate_bytecode_insns): Don't handle the unused - EXIT_BLOCK_RETURN operand. Use EXIT_BLOCK_LABELED_BLOCK instead of - TREE_OPERAND. - * lang.c (java_tree_inlining_walk_subtrees): Handle EXIT_BLOCK_EXPR. - (java_dump_tree): Use LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, and - EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND. Don't handle the - second operand of EXIT_BLOCK_EXPR. - * parse.y (find_expr_with_wfl): Use LABELED_BLOCK_BODY instead of - TREE_OPERAND. - (build_bc_statement): Use build1 to build EXIT_BLOCK_EXPR nodes. - -2004-11-23 Ben Elliston - - * xref.h (xref_flag_value): Remove. - (xref_set_data, xref_get_data): Likewise. - (xref_set_current_fp): Likewise. - (XREF_NONE): Likewise. - (XREF_GET_DATA): Likewise. - * xref.c (xref_flag_value): Remove. - (xref_set_data, xref_get_data): Likewise. - (xref_set_current_fp): Likewise. - -2004-11-23 Ben Elliston - - * gjavah.c (output_directory): Make static. - (temp_directory): Likewise. - -2004-11-15 Tom Tromey - - * decl.c (instn_ptr_type_node): Removed. - (lineNumbers_ptr_type_node): Removed. - (jint_type): Removed. - (jint_ptr_type): Removed. - -2004-11-09 Andrew Pinski - - PR java/15576 - * check-init.c (check_init): Ignore DECL_EXPR. - * expr.c (always_initialize_class_p): Reenable. - (build_class_init): Use a variable to store the decl. Also use - boolean_false_node instead of integer_zero_node. - * parse.y (attach_init_test_initialization_flags): Add a decl_expr - to the block. - -2004-11-08 Tom Tromey - - PR java/16843: - * gjavah.c (HANDLE_END_FIELD): Call print_field_info when - generating a JNI header. - (print_field_info): Handle JNI headers. - (jni_print_float): Likewise. - (jni_print_double): Likewise. - -2004-11-08 Andrew Pinski - - * decl.c (end_java_method): Remove duplicated code. - -2004-11-06 Zack Weinberg - Gerald Pfeifer - - * lex.h (HAVE_ICONV): Undefine if we do not have HAVE_ICONV_H - as well. - -2004-11-02 Bryce McKinlay - - PR java/17265 - * class.c: Reinstate 2004-08-18 patch. - (make_local_function_alias): Don't create an alias for extern (native) - functions. - -2004-10-22 Eric Botcazou - - PR java/17265 - * class.c (make_local_function_alias): Revert 2004-08-18 change. - (make_method_value): Likewise. - -2004-10-21 Andrew Haley - - PR java/18091: - * jcf-parse.c (set_source_filename): Add code to build new sfname. - -2004-10-20 Andrew Haley - - * decl.c (end_java_method): Don't expand if flag_syntax_only. - Remove duplicated code block. - -2004-10-18 Steven Bosscher - - * Make-lang.in (java/parse.o-warn, java/parse-scan.o-warn): - New rules to work around old Bison warnings. - -2004-10-17 Steven Bosscher - - * class.c (ident_subst): Always alloca buffer. - * java-opcodes.h (LAST_AND_UNUSED_JAVA_OPCODE): Add this dummy - opcode after including javaop.def. - * jcf-dump.c (CHECK_PC_IN_RANGE): Return 0 from the arm of the - conditional expression that exits, to avoid warnings. - * verify.c (CHECK_PC_IN_RANGE): Mark the __GNUC__ definition as - a user of an extension. - * win32-host.c: Move check down to have non-empty file when - WIN32 is not defined. - - * Make-lang.in (java-warn): Add STRICT_WARN. - (java/jcf-io.o-warn): Don't have Werror for this file. - * jcf-io.c (caching_stat): Add FIXME for non-POSIX scandir use. - -2004-10-16 Hans-Peter Nilsson - - * expr.c (expr_add_location): Move declaration to before all - statements. - * parse.y (java_expand_classes): Ditto. - * lex.c (java_peek_unicode): Ditto. - -2004-10-16 Ranjit Mathew - - * check-init.c: Use %<, %> and %q for quoting in diagnostics, - if possible, else convert `foo' to 'foo'. - * class.c: Likewise. - * decl.c: Likewise. - * expr.c: Likewise. - * jcf-io.c: Likewise. - * jcf-parse.c: Likewise. - * lang.c: Likewise. - * lex.c: Likewise. - * parse.h: Likewise. - -2004-10-16 Ranjit Mathew - - * parse.y (parse_warning_context): Remove ATTRIBUTE_PRINTF_2 and - rename parameter 'msg' to 'msgid' in function declaration. - (issue_warning_error_from_context): Likewise. - (yyerror): Rename parameter 'msg' to 'msgid'. - (all over): Use new quoting style for diagnostics. - -2004-10-15 Kazu Hirata - - * boehm.c, builtins.c, java-except.h, jcf-io.c, jcf-path.c, - jcf.h, lang-specs.h, lex.c, lex.h, resource.c, win32-host.c: - Update copyright. - -2004-10-14 Matt Austern - - * lang.c (java_tree_inlining_walk_subtrees): Last arg is struct - pointer_set_t* now. - -2004-10-13 Tom Tromey - - PR java/15578: - * lang.opt (--extdirs): Document. - * jvspec.c (lang_specific_driver): Recognize -encoding and - -extdirs. - -2004-10-06 Ulrich Weigand - - * parse.y (issue_warning_error_from_context): Use va_list * - instead of va_list parameter. - (parse_error_context): Update call. - (parse_warning_context): Likewise. - -2004-10-05 Zack Weinberg - - * parse.y, parse-scan.y: Add list of diagnostic messages to - insulate translation template from version of yacc/bison used - to compile the grammar. - -2004-10-05 Ranjit Mathew - - Prepare for %q, %< and %> in diagnostic message strings. - * java-tree.h (parse_error_context): remove ATTRIBUTE_PRINTF_2. - Name second parameter 'msgid'. - * parse.y: Additionally include pretty-print.h and diagnostic.h. - (issue_warning_error_from_context): Use pretty-printer functions - instead of vsprintf for constructing formatted messages. Rename - parameter 'msg' to 'msgid'. - (parse_error_context): Rename parameter 'msg' to 'msgid'. - (parse_warning_context): Likewise. - -2004-10-05 Andrew Haley - - PR java/17779 - * jcf-parse.c (parse_zip_file_entries): If a class has a - superclass and a TYPE_SIZE of zero, lay it out. - -2004-09-30 Andrew Haley - - PR java/17733 - * jcf-parse.c (compute_class_name): Rewrite. - -2004-10-01 Jan Hubicka - - * java.c (java_expand_body): Update call of tree_rest_of_compilation. - -2004-10-01 Kazu Hirata - - * lex.c: Fix a comment typo. - -2004-10-01 Kazu Hirata - - * java-tree.h: Fix a comment typo. - -2004-09-30 Per Bothner - - Simplify lexer. Implement --enable-mapped-location support. - * jcf-parse.c (parse_class_file): Use linemap_line_start. - (parse_source_file_1): Pass filename as extra parameter, so we can call - linemap_add and set input_location here, rather than in both callers. - (read_class): Pass copied filename to parse_source_file_1. - Don't initialize wfl_operator - only needed for source compilation. - (read_class, jcf_parse): Call linemap_add with LC_LEAVE. - * lex.h: Remove a bunch of debugging macros. - * lex.h (struct_java_line, struct java_error): Remove types. - (JAVA_COLUMN_DELTA): Remove - use java_lexer.next_colums instead. - (struct java_lc_s): Remove prev_col field. - (struct java_lexer): New fields next_unicode, next_columns, and - avail_unicode. New position field, and maybe token_start field. - Don't need hit_eof field - use next_unicode == -1 instead. - (JAVA_INTEGERAL_RANGE_ERROR): Rename to JAVA_RANGE_ERROR. - (JAVA_RANGE_ERROR, JAVA_FLOAT_ANGE_ERROR): Update accordingly. - * parse.h: Various changes for USE_MAPPED_LOCATION. - (EXPR_WFL_EMIT_LINE_NOTE): XXX - (BUILD_EXPR_WFL, EXPR_WFL_ADD_COL): Remove no-longer-used macros. - (struct parser_ctxt): New file_start_location field. - Remove p_line, c_line fields since we no longer save lines. - Remove elc, lineno, and current_jcf fields - no longer used. - * parse.y: Updates for USE_MAPPED_LOCATION and new lexer. - Don't use EXPR_WFL_ADD_COL since that isn't trivial with - source_location and is probably not needed anymore anyway. - Use new expr_add_Location function. - (SET_EXPR_LOCATION_FROM_TOKEN): New convenience macro. - (java_pop_parser_context): Minor cleanup. - (java_parser_context_save_global, java_parser_context_restore_global, - java_pop_parser_context): Save/restore input_location as a unit. - (issue_warning_error_from_context): If USE_MAPPED_LOCATION take - a source_location instead of a wfl context node. - (check_class_interface_creation): input_filename is not addressable. - (create_artificial_method): Calling java_parser_context_save_global - and java_parser_context_restore_global is overkill. Instead, - temporarily set input_location from class decl. - (java_layout_seen_class_methods): Set input_location from method decl. - (fix_constructors): Make more robust if no EXPR_WITH_FILE_LOCATION. - (finish_loop_body): Likewise. - * lex.c: Updates for USE_MAPPED_LOCATION. Use build_unknwon_wfl. - (java_sprint_unicode): Take a character, not index in line. - (java_sneak_uncode): Replaced by java_peek_unicode. - (java_unget_unicode): No longer used. - (java_allocate_new_line. java_store_unicode): Removed, since we - no longer remember "lines". - (java_new_lexer): Update for new data structures. - (java_read_char): Move unget_value checking to java_read_unicode. - (java_get_unicode, java_peek_unicode, java_next_unicode): New more - efficient functions that are used directly when lexing. - (java_read_unicode_collapsing_terminators): No longer needed. - (java_parse_end_comment, java_parse_escape_sequence, do_java_lex): - Re-organize to use java_peek_unicode to avoid java_unget_unicode. - (java_parse_escape_sequence): Rewrite to be simpler / more efficient. - (do_java_lex): Lots of movings around to avoid java_unget_unicode, - combine switch branches, and test for common token kinds earlier. - (java_lex_error): Rewrite. - * jv-scan.c (expand_location): New function, copied from tree.c. - (main): Set ctxp->filename instead of setting input_filename directly. - -2004-09-30 Per Bothner - - More cleanup for --enable-mapped-location. - * class.c (push_class): If USE_MAPPED_LOCATION don't set - input_location here. Instead do it in give_name_to_class. - (build_class_ref): Set DECL_ARTIFICIAL, for the sake of dwarf2out. - * expr.c (expand_byte_code): Call linemap_line_start. - * expr.c (build_expr_wfl): If USE_MAPPED_LOCATION, change final - parameters to a source_location. Don't need EXPR_WFL_FILENAME_NODE. - (expr_add_location): New function, if USE_MAPPED_LOCATION. - * class.c (maybe_layout_super_class): Adjust build_expr_wfl call - to USE_MAPPED_LOCATION case. - - * java-tree.h (JAVA_FILE_P, ZIP_FILE_P): Remove unused macros. - * jcf-parse.c (java_parse_file): Don't set input_filename. - Use IS_A_COMMAND_LINE_FILENAME_P to check for duplicate filenames. - Create a list of TRANSLATION_UNIT_DECL. - (current_file_list): Is now a TRANSLATION_UNIT_DECL chain. The - reason is so we can set a DECL_SOURCE_LOCATION for each file. - (java_parse_file): Don't set unused ZIP_FILE_P, JAVA_FILE_P.. - Create line-map LC_ENTER/LC_LEAVE entries for archive itself. - (file_start_location): New static. - (set_source_filename): Avoid extra access to input_filename macro. - Concatenate new name with class's package prefix. - (set_source_filename, give_name_to_class): Update. - (give_name_to_class): Set class's "line 0" input_location here. - (parse_class_file): Set input_location as a unit. - - * jcf-parse.c (load_class): Sanity test if missing inner class file. - -2004-09-29 Per Bothner - - * java-tree.h: Redefine some macros and add some declaration - to handle the USE_MAPPED_LOCATION case. - * parse.h (EXPR_WFL_QUALIFICATION): Use operand 1, not 2. - * java-tree.h (EXPR_WFL_FILENAME_NODE): Use operand 2, not 1. - * java-tree.def (EXPR_WITH_FILE_LOCATION): Only need two operands in - USE_MAPPED_LOCATION case, since EXPR_WFL_FILENAME_NODE is gone. - - * check-init.c (check_init): Handle USE_MAPPED_LOCATION case. - * decl.c (finish_method, java_add_stmt): Likewise. - * java-gimplify.c (java-gimplify.c): Likewise. - * jcf-write.c (generate_bytecode_insns): Likewise. - * lang.c (java_post_options): Likewise - call linemap_add. - -2004-09-29 Andrew Haley - - PR java/17007 - * parse.y (patch_binop): Don't mess with the TREE_SIDE_EFFECTS of the - result of TRUNC_MOD_EXPR. - (patch_unaryop): Likewise for CONVERT_EXPR, which may throw. - * decl.c (java_init_decl_processing): Mark - soft_lookupinterfacemethod_node and soft_instanceof_node pure. - -2004-09-28 Tom Tromey - - PR java/15710: - * class.c (add_miranda_methods): Load superinterface if not - already loaded. - -2004-09-28 Andrew Haley - - PR java/17586 - * jcf-parse.c (load_class): Don't try to read a class that we've - already read. - -2004-09-28 Andrew Haley - - * jcf-parse.c (load_class): Back out previous broken patch. - -2004-09-28 Andrew Haley - - PR java/17586 - * jcf-parse.c (load_class): Don't try to read a class that we've - already read. - Check that we really did read the right class. - -2004-09-25 Tom Tromey - - PR java/17500: - * parse.y (create_artificial_method): Use add_method_1. - -2004-09-25 Kazu Hirata - - * expr.c, jcf-dump.c, parse-scan.y, parse.y: Fix - comment typos. - * gcj.texi: Fix typos. - -2004-09-24 Tom Tromey - - PR java/15656: - * parse.y (class_instance_creation_expression): Set `$$' to NULL - in error parts of rule. - (unary_expression): Don't call error_if_numeric_overflow when $1 - is NULL. - -2004-09-24 Tom Tromey - - PR java/16789: - * parse.y (resolve_qualified_expression_name): Set - CAN_COMPLETE_NORMALLY on first call when chaining static calls. - * expr.c (force_evaluation_order): Check for empty argument list - after stripping COMPOUND_EXPR. - -2004-09-23 Andrew Haley - - PR java/16927: - * parse.y (java_complete_lhs): Call patch_string() on Operand 1 of - COND_EXPRs. - -2004-09-23 Tom Tromey - - PR java/17329: - * java-gimplify.c (java_gimplify_expr) : Ignore case - where operand is null. - -2004-09-23 Tom Tromey - - PR java/17380: - * parse.y (not_accessible_p): Allow access to protected members - even when class is not static. - -2004-09-22 Kelley Cook - - * Make-lang.in: Revert the gcc-none.o change. - -2004-09-22 Nathan Sidwell - - * parse.y (patch_anonymous_class): VEC_space returns true if there - is space. - -2004-09-21 Matt Austern - - Fix bootstrap. - * gjavah.c (free_method_name_list): Fix function definition so - it's a proper C prototype. - -2004-09-21 Tom Tromey - - PR java/17575: - * gjavah.c (free_method_name_list): New method. - (main): Call it. - -2004-09-17 Jeffrey D. Oldham - Zack Weinberg - - * java-tree.def: Use tree_code_class enumeration constants - instead of code letters. - * java-gimplify.c, jcf-write.c, lang.c, parse.y: Update for - new tree-class enumeration constants. - -2004-09-13 Tom Tromey - - PR java/17216: - * class.c (layout_class_method): Put synthetic methods into the - vtable. - -2004-09-11 Andrew Pinski - - * Make-lang.in (java/ggc-none.c): Change dependency - for ggc.h into $(GGC_H). - -2004-09-11 Mohan Embar - - * Make-lang.in (java/win32-host.o): Add dependency on - coretypes.h. - * win32-host.c: Add includes for coretypes.h, jcf.h - -2004-09-11 Mohan Embar - - * Make-lang.in (GCJH_OBJS): Change dependency from - ggc-none.o to java/ggc-none.o - (JCFDUMP_OBJS): Likewise. - (java/ggc-none.o): New target. - -2004-08-25 Nathan Sidwell - - * boehm.c (get_boehm_type_descriptor): Adjust build_int_cst calls. - * class.c (build_utf8_ref, build_static_field_ref, - make_field_value, make_method_value, get_dispatch_table, - make_class_data, emit_symbol_table, emit_catch_table): Likewise. - * constants.c (get_tag_node, build_ref_from_constant_pool, - build_constants_constructor): Likewise. - * decl.c (java_init_decl_processing): Likewise. - * expr.c (build_java_array_length_access, build_newarray, - expand_java_multianewarray, expand_java_pushc, expand_iinc, - build_java_binop, build_field_ref, expand_java_add_case, - expand_java_call, build_known_method_ref, build_invokevirtual, - build_invokeinterface, build_jni_stub): Likewise. - * java-gimplify.c (java_gimplify_new_array_init): Likewise. - * jcf-parse.c (get_constant): Likewise. - * lex.c (do_java_lex): Likewise. - * parse.y (patch_binop, patch_unaryop, patch_cast, - build_newarray_node, patch_newarray): Likewise. - * resource.c (compile_resource_data): Likewise. - * typeck.c (build_prim_array_type): Likewise. - -2004-08-24 Nathan Sidwell - - * decl.c (java_init_decl_processing): Adjust - initialize_sizetypes call. - -2004-08-23 Nathan Sidwell - - * jv-scan.c (fancy_abort): Add. - -2004-08-20 Nathan Sidwell - - * expr.c (build_java_arrayaccess): Use convert to change - len's type. - -2004-08-19 Bryce McKinlay - - * class.c (make_local_function_alias): Allocate extra space for 'L' - in name buffer. Reported by Thomas Neumann. - -2004-08-19 Nathan Sidwell - - * parse.h (JAVA_RADIX10_FLAG): Rename to ... - (JAVA_NOT_RADIX10_FLAG): ... here. Invert meaning. - * lex.c (do_java_lex): Adjust. - (error_if_numeric_overflow): Likewise. - -2004-08-18 Andrew Pinski - - * class.c (make_local_function_alias): Only make a new decl if we - support alias attribute on all decls. - -2004-08-18 Bryce McKinlay - - * class.c (make_local_function_alias): New function. Create local - alias for public method DECL. - (make_method_value): Use make_local_function_alias. - * parse.y (craft_constructor): Don't special-case anonymous classes. - Always set ctor_name to init_identifier_node. - (lookup_method_invoke): Call layout_class_method when creating - anonymous class constructor. - -2004-08-18 Richard Henderson - - * java-gimplify.c (java_gimplify_expr): Move '2' handling into - default case. Treat '<' similarly. Update for - is_gimple_formal_tmp_var name change. - -2004-08-17 Andrew Haley - - * lang.c (lang_printable_name): Obey verbose flag. - * parse.y (constructor_circularity_msg): Set VERBOSE arg for - lang_printable_name(). - (verify_constructor_circularity, get_printable_method_name, - check_abstract_method_definitions, java_check_regular_methods, - java_check_abstract_methods, check_inner_class_access, - fix_constructors, patch_method_invocation, patch_return): - Likewise. - * expr.c (pop_type_0): Likewise. - - * java-tree.h (lang_printable_name_wls): Delete. - -2004-08-16 Tom Tromey - - PR java/8473: - * parse.y (primary): Changed for initialized and uninitialized - array creations. - (array_access): Handle array_creation_initialized. - (array_creation_expression): Split into - array_creation_initialized and array_creation_uninitialized. - -2004-08-16 Andrew Haley - - * jcf-write.c (find_constant_index): Canonicalize NaNs when - generating bytecode. - -2004-08-16 Elliot Lee - - PR java/9677 - * jcf-parse.c (java_parse_file): Handle filenames with embedded - spaces, and quoted filelists. - -2004-08-15 Nathan Sidwell - - * boehm.c (get_boehm_type_descriptor): Use build_int_cst. - * class.c (build_utf8_ref, build_static_field_ref, - make_field_value, make_method_value, get_dispatch_table, - make_class_data, emit_symbol_table, emit_catch_table): Likewise. - * constants.c (get_tag_node, build_ref_from_constant_pool, - build_constants_constructor): Likewise. - * decl.c (java_init_decl_processing): Likewise. - * expr.c (build_java_array_length_access, build_newarray, - expand_java_multianewarray, expand_java_pushc, expand_iinc, - build_java_binop, build_field_ref, expand_java_add_case, - expand_java_call, build_known_method_ref, build_invokevirtual, - build_invokeinterface, build_jni_stub): Likewise. - * java-gimplify.c (java_gimplify_new_array_init): Likewise. - * jcf-parse.c (get_constant): Likewise. - * lex.c (do_java_lex): Likewise. - * parse.y (patch_binop, patch_unaryop, patch_cast, - build_null_of_type, patch_newarray): Likewise. - * resource.c (compile_resource_data): Likewise. - * typeck.c (build_prim_array_type): Likewise. - -2004-08-10 Bryce McKinlay - - * java-gimplify.c (java_gimplify_new_array_init): Use create_tmp_var. - Don't create BLOCK here or call java_gimplify_block. - -2004-08-09 H.J. Lu - - * java-tree.h (flag_deprecated): Removed. - * lang.opt (Wdeprecated): Use existing Var(warn_deprecated). - * parse.y (check_deprecation): Check warn_deprecated instead of - flag_deprecated. - -2004-08-06 Kelley Cook - - * lang.c (flag_emit_class_files, flag_filelist_file, flag_redundant, - flag_use_divide_subroutine, flag_use_boehm_gc, flag_store_check, - flag_hash_synchronization, flag_assert, flag_jni, flag_newer, - flag_check_references, flag_extraneous_semicolon, flag_deprecated, - flag_force_classes_archive_check, flag_optimize_sci, - flag_indirect_dispatch): Remove explicit declarations. - * lang.opt: Add implicit declare/define/assign. Remove obsolete - final comment. - -2004-08-05 Michael Chastain - - PR bootstrap/14893 - * Make-lang.in (java.install-man): Install from either build - tree or source tree, whichever has the file first. - -2004-08-05 Nathan Sidwell - - * jcf-parse.c (get_constant): Adjust force_fit_type call. - * lex.h (SET_LVAL_NODE_TYPE): Remove. - * lex.c (java_perform_atof): Use SET_LVAL_NODE directly. - (do_java_lex): Likewise. Adjust force_fit_type call. - -2004-08-04 Roger Sayle - Andrew Haley - - * typeck.c (convert_ieee_real_to_integer): Call fold on the range - checking trees as they're being built. - (convert): Call convert_ieee_real_to_integer if we're - converting a constant, even if we're writing a class file. - -2004-08-02 Bryce McKinlay - - PR java/16701 - * parse.y (fold_constant_for_init): Call resolve_field_access with - correct current_class context. - -2004-08-01 Roger Sayle - - * decl.c (update_aliases, initialize_local_variable): Replace calls - to build with calls to buildN. - * java-gimplify.c (java_gimplify_modify_expr): Likewise. - * java-tree.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Likewise. - * parse.h (BUILD_THROW): Likewise. - * parse.y (switch_expression, synchronized_statement, - catch_clause_parameter, array_creation_expression, - conditional_expression, make_qualified_name, - resolve_qualified_expression_name, patch_method_invocation, - patch_invoke, build_method_invocation, build_new_invocation, - build_assignment, patch_assignment, build_binop, patch_binop, - build_string_concatenation, build_incdec, patch_unaryop, - patch_cast, build_array_ref, build_newarray_node, patch_newarray, - patch_return, build_if_else_statement, build_labeled_block, - build_new_loop, build_loop_body, build_bc_statement, - build_assertion, encapsulate_with_try_catch, build_try_statement, - build_try_finally_statement, patch_synchronized_statement, - emit_test_initialization): Likewise, replace build with buildN. - -2004-07-28 Eric Christopher - - * lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete. - (java_unsafe_for_reeval): Ditto. - -2004-07-26 - - * parse.y (build_super_invocation): Adjust declaration order to - avoid declaration after statement. - -2004-07-25 Bernardo Innocenti - - * decl.c: Rename all identifiers named `class' to `cl'. - -2004-07-25 Richard Henderson - - * decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P. - -2004-07-23 Mike Stump - - * boehm.c (set_bit): Improve type safety wrt unsignedness. - * gjavah.c (throwable_p, decode_signature_piece, - print_full_cxx_name, print_include, add_namelet, add_class_decl, - process_file): Likewise. - * jcf-dump.c (main): Likewise. - * jcf-io.c (read_zip_member): Likewise. - * jcf-parse.c (HANDLE_CONSTANT_Utf8, get_constant, - give_name_to_class, get_class_constant): Likewise. - * jcf-write.c (find_constant_wide, push_long_const, - generate_classfile): Likewise. - * lex.c (java_new_lexer, java_read_char, cxx_keyword_p): Likewise. - * parse.y (read_import_dir): Likewise. - * typeck.c (parse_signature_type): Likewise. - * verify.c (verify_jvm_instructions): Likewise. - * zextract.c (find_zip_file_start, read_zip_archive): Likewise. - -2004-07-23 Thomas Fitzsimmons - - * Make-lang.in: Replace rmic and rmiregistry references with - grmic and grmiregistry. - * gcj.texi: Likewise. - -2004-07-20 Andrew Haley - - PR java/16431. - * verify.c (verify_jvm_instructions): Comment change only. - - * typeck.c (build_java_array_type): Add size field to array name. - - * java-tree.h (LOCAL_SLOT_P): New. - (update_aliases): Add PC argument. - (pushdecl_function_level): New function. - - * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL, - MODIFY_EXPR, and SAVE_EXPR. - (java_gimplify_modify_expr): New function. - - * expr.c (push_type_0): Call find_stack_slot() to create temporary. - (expand_iinc): Pass PC to update_aliases(). - (STORE_INTERNAL): Likewise. - (process_jvm_instruction): Likewise. - - * decl.c (base_decl_map): New variable. - (uniq): New variable. - (update_aliases): Rewrite with more thorough checking. - (debug_variable_p): New function. - (push_jvm_slot): Don't initialize local variable. Don't pushdecl. - (check_local_named_variable): Delete whole function. - (initialize_local_variable): New function. - (check_local_unnamed_variable): Add checks and comments. - (find_local_variable): Rewrite. - (java_replace_reference): New function. - (function_binding_level): New variable. - (pushdecl_function_level): New function. - (maybe_pushlevels): Set DECL_LOCAL_END_PC. - (maybe_pushlevels): Call pushdecl() on each of the new decls. - (start_java_method): Reset uniq. Create base_decl_map. Set - function_binding_level. - (end_java_method): Null unused fields to save memory. - -2004-07-20 Nathan Sidwell - - * class.c (add_interface_do): Remove. - (set_super_info, interface_of_p, maybe_add_interface, - add_interface, make_class_data, layout_class, - add_miranda_methods): Adjust BINFO accessors and addition. - * expr.c (can_widen_reference_to, lookup_field): Adjust BINFO - accessors. - * jcf-write.c (generate_classfile): Likewise. - * parse.y (patch_anonymous_class, check_inner_circular_reference, - check_circular_reference, java_complete_class, - check_abstract_method_definitions, - java_check_abstract_method_definitions, - check_interface_throws_clauses, java_check_abstract_methods, - lookup_java_interface_method2, - find_applicable_accessible_methods_list): Adjust BINFO accessors - and addition. - * typeck.c (find_method_in_interfaces): Adjust BINFO accessors. - -2004-07-18 Roger Sayle - - * builtins.c (max_builtin, min_builtin, - java_build_function_call_expr): Replace calls to build with buildN. - * class.c (build_class_ref, build_static_field_ref, - get_dispatch_table, make_class_data, layout_class_method): Likewise. - * constants.c (build_ref_from_constant_pool): Likewise. - * decl.c (update_aliases, push_jvm_slot, poplevel, finish_method, - add_stmt_to_compound): Likewise. - * except.c (build_exception_object_ref, expand_end_java_handler): - Likewise. - * java-gimplify.c (java_gimplify_case_expr, - java_gimplify_default_expr, java_gimplify_block, - java_gimplify_new_array_init, java_gimplify_try_expr): Likewise. - * jcf-write.c (generate_bytecode_insns): Likewise. - * typeck.c (convert_ieee_real_to_integer): Likewise. - -2004-07-17 Joseph S. Myers - - * java-tree.h (builtin_function): Declare. - -2004-07-16 Steven Bosscher - - * parse.y (java_complete_expand_methods, java_expand_classes): Don't - abuse restore_line_number_status. - -2004-07-15 Frank Ch. Eigler - - g++/15861 - * jcf-parse.c (java_emit_static_constructor): Specify default - priority. - -2004-07-13 Per Bothner - - * java-tree.h (all_class_filename): Remove useless macro. - (enum java_tree_index): Remove JTI_ALL_CLASS_FILENAME constant. - (BUILD_FILENAME_IDENTIFIER_NODE): Remove useless macro. - * parse.y (java_parser_context_restore_global): Replace - BUILD_FILENAME_IDENTIFIER_NODE by plain get_identifier. - * jcf-parse.c (read_class, java_parse_file): Likewise. - -2004-07-12 Bryce McKinlay - - PR java/16474 - gjavah.c (print_field_info): Emit constant only if field is static. - -2004-07-11 Roger Sayle - - * expr.c (java_truthvalue_conversion, flush_quick_stack, - java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr, - build_java_ret, build_java_throw_out_of_bounds_exception, - build_java_array_length_access, java_check_reference, - build_java_arrayaccess, build_java_arraystore_check, build_newarray, - build_anewarray, expand_java_multianewarray, expand_java_arraystore, - expand_java_arrayload, build_java_monitor, expand_java_return, - expand_load_internal, expand_java_NEW, build_get_class, - build_instanceof, expand_java_CHECKCAST, expand_iinc, - build_java_soft_divmod, build_java_binop, build_field_ref, - expand_compare, expand_java_goto, expand_java_switch, - expand_java_add_case, build_class_init, build_known_method_ref, - invoke_build_dtable, build_invokevirtual, build_invokeinterface, - expand_invoke, build_jni_stub, expand_java_field_op, - java_expand_expr, expand_byte_code, STORE_INTERNAL, - force_evaluation_order, emit_init_test_initialization): Convert - calls to "build" into calls to the prefered "buildN" functions. - -2004-07-11 Joseph S. Myers - - * java-tree.h (set_block): Remove. - * lang.c (java_clear_binding_stack): New. - (LANG_HOOKS_CLEAR_BINDING_STACK): Define. - * decl.c (struct binding_level): Remove this_block. - (clear_binding_level): Likewise. - (poplevel): Don't handle this_block. - (set_block): Remove. - -2004-07-10 Bryce McKinlay - - * class.c (common_enclosing_context_p): Remove statement with no - side-effects. - -2004-07-09 Bryce McKinlay - - PR java/8618 - * parse.y (create_anonymous_class): Remove 'location' argument. Use - the WFL from TYPE_NAME to get line number for the decl. Fix comment. - (craft_constructor): Inherit access flags for implicit constructor - from the enclosing class. - (create_class): Fix comment typo. - (resolve_qualified_expression_name): Pass type of qualifier to - not_accessible_p, not the type in which target field was found. - (not_accessible_p): Handle inner classes. Expand protected - qualifier-subtype check to enclosing instances, but don't apply this - check to static members. Allow protected access to inner classes - of a subtype. Allow private access within common enclosing context. - (build_super_invocation): Get WFL line number info from current - class decl. - (build_incomplete_class_ref): Update for new create_anonymous_class - signature. - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Use - common_enclosing_instance_p. - * class.c (common_enclosing_context_p): New. Determine if types - share a common enclosing context, even across static contexts. - (common_enclosing_instance_p): Renamed from - common_enclosing_context_p. Determines if types share a common - non-static enclosing instance. - * java-tree.h (common_enclosing_instance_p): Declare. - * jcf-write.c (get_method_access_flags): New. Surpress private flag - for inner class constructors. - (generate_classfile): Use get_method_access_flags. - -2004-07-09 Bryce McKinlay - - * class.c (interface_of_p): Check for null TYPE_BINFO. - -2004-07-09 Nathan Sidwell - - * class.c (make_class): Do not create binfo here. - (set_super_info): Create it here. - * java-tree.h (CLASS_HAS_SUPER): Cope with lack of a binfo. - -2004-07-08 Richard Henderson - - * expr.c (case_identity, get_primitive_array_vtable, - java_expand_expr, emit_init_test_initialization): Remove. - * java-tree.h (java_expand_expr): Remove. - * lang.c (LANG_HOOKS_EXPAND_EXPR): Remove. - -2004-07-07 Per Bothner - - * class.c (build_static_field_ref): Add a NOP_EXPR; otherwise we - get internal error due to mismatched types. - - * gcj.texi (Invoking gij): Document new -verbose:class flag. - - * gcj.texi (Linking): New node. Document -lgij usage. - -2004-07-07 Nathan Sidwell - - * java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros. - (TYPE_NVIRTUALS, TYPE_VTABLE): Likewise. - * java/class.c (set_super_info, class_depth, interface_of_p, - maybe_add_interface, add_interface, make_class_data, - layout_class, add_miranda_methods): Adjust BINFO macros. - * expr.c (can_widen_reference_to, lookup_field): Likewise. - * jcf-write.c (generate_classfile): Likewise. - * parse.y (patch_anonymous_class, - check_inner_circular_reference, check_circular_reference, - java_complete_class, check_abstract_method_definitions, - java_check_abstract_method_definitions, - check_interface_throws_clauses, java_check_abstract_methods, - lookup_java_interface_method2, - find_applicable_accessible_methods_list): Likewise. - * typeck.c (find_method_in_interface): Likewise. - * verify.c (merge_types): Likewise. - -2004-07-06 Nathan Sidwell - - * java-tree.h (CLASS_HAS_SUPER_FLAG): Use BINFO_FLAG_1. - * class.c (add_interface_do): Use BINFO_VIRTUAL_P. - -2004-07-05 Nathan Sidwell - - * class.c (make_class): Use make_tree_binfo. - (set_super_info, add_interface_do): Likewise. - * java-tree.h (CLASS_HAS_SUPER_FLAG): Expect a BINFO. - -2004-07-04 Ranjit Mathew - - * verify.c: Correct array element access formatting thinko. - -2004-07-04 Ranjit Mathew - - * verify.c: Insert a short blurb at the start referring to the JVMS. - (merge_type_state): Remove redundant nested if statement. - (verify_jvm_instructions): Ensure current_subr is initialised to - NULL_TREE. - Minor formatting fixes all over the place. - -2004-07-02 Richard Henderson - - * jcf-write.c (generate_bytecode_insns ): Rewrite. - -2004-07-01 Richard Henderson - - * class.c (registerClass_libfunc): Remove. - (init_class_processing): Don't set it. - (emit_register_classes): Take list_p parameter. Fill it in - with _Jv_RegisterClass calls. - * decl.c (java_init_decl_processing): Don't call - init_resource_processing. - * jcf-parse.c (java_emit_static_constructor): New. - (java_parse_file): Call it. - * resource.c (registerResource_libfunc): Remove. - (init_resource_processing): Remove. - (write_resource_constructor): Take list_p parameter. Fill it in - with _Jv_RegisterResource calls. - * java-tree.h: Update prototypes. - -2004-06-29 Bryce McKinlay - - PR java/1262 - * class.c (layout_class_method): Do not override package-private - method if its in a different package. - (split_qualified_name): Move here from parse.y. Rename from - breakdown_qualified. Add comment. - (in_same_package): Move here from parse.y. Add comment. - * java-tree.h (break_down_qualified, in_same_package): Declare. - (in_same_package): Likewise. - * parse.y (breakdown_qualified, in_same_package): Moved to class.c. - Callers updated. - -2004-06-29 Andrew Haley - - * except.c (expand_start_java_handler): Push a new binding level. - Don't build a TRY_CATCH_EXPR now, we'll do it later. Call - register_exception_range() to register where we'll do it. - (expand_end_java_handler): Remove old bogus code. Replace with - new logic that simply builds TRY_CATCH_EXPRs and inserts them at - the top of the expression we're curently building. - (maybe_end_try): Delete. - * decl.c (binding_level.exception_range): New field. - (clear_binding_level): Add field exception_range. Reformat. - (poplevel): Call expand_end_java_handler(). - (poplevel): Call java_add_stmt only if functionbody is false. - (maybe_poplevels): Don't call maybe_end_try() from here. - (end_java_method): Clear no longer used trees in function decl. - (register_exception_range): New function. - * java-tree.h (register_exception_range, struct eh_range): Declare. - -2004-06-28 Bryce McKinlay - - * jcf-write.c (get_classfile_modifiers): Formatting fixes. - -2004-06-27 Ranjit Mathew - - Formatting fixes. - * expr.c (class_has_finalize_method): Fix method name indentation. - (expand_java_call): Remove K&R style parameter declaration. - (expand_invoke): Fix statement indentation. - (expand_java_field_op): Likewise. - * parse-scan.y: Fix typo. - (reset_report): Fix method name indentation. - * parse.y (unresolved_type_p, build_expr_block): Remove extra blank - line. Fix typos. - * verify.c (verify_jvm_instructions): Document parameters, insert - page break. - * lang.c (lang_init_source): Fix method name indentation. - * class.c (common_enclosing_context_p): Likewise. - (emit_symbol_table): Fix parameter list indentation. - * decl.c (add_stmt_to_compound, java_add_stmt): Remove K&R style - parameter declaration. - * constants.c: Fix copyright notice indentation. - * typeck.c (find_method_in_superclasses): Fix parameter list - indentation. - (find_method_in_interfaces): Likewise. - * zextract.c (makelong): Fix method name indentation. - -2004-06-26 Bryce McKinlay - - PR java/15715. - * parse.y (create_interface): Set correct access modifiers for - interfaces. - * jcf-write.c (get_classfile_modifiers): New function. - (generate_classfile): Use get_classfile_modifiers, not - get_access_flags. - -2004-06-26 Bryce McKinlay - - * parse.y (register_incomplete_type): Set JDEP_ENCLOSING for "super" - dependency to current parser context, not NULL_TREE, for top-level - classes. - (jdep_resolve_class): Enable member access check for all inner - class dependencies. - -2004-06-26 Bryce McKinlay - - * parse.y (qualify_and_find): Pass type decl, not identifier, to - load_class. - -2004-06-26 Bryce McKinlay - - PR java/15734 - * expr.c (expand_java_field_op): Ensure that target class for static - field access has been loaded. - -2004-06-26 Bryce McKinlay - Ranjit Mathew - - PR java/1207, java/16178 - * jcf-parse.c (load_class): Return immediately if passed a type decl - where CLASS_FROM_SOURCE_P is set. Remove FIXME. - * parse.y (do_resolve_class): Remove checks for CLASS_FROM_SOURCE_P - before calling load_class. - (qualify_and_find): Likewise. - (find_in_imports_on_demand): Likewise. - (find_applicable_accessible_methods_list): Likewise. - -2004-06-24 Bryce McKinlay - - * parse.y (java_layout_seen_class_methods): Don't call load_class - on class defined by source parser. - -2004-06-23 Bryce McKinlay - - * parse.y (set_nested_class_simple_name_value): Removed. - (java_complete_expand_class): Remove calls to - set_nested_class_simple_name_value. - -2004-06-22 Andrew Haley - Ranjit Mathew - - Fixes PR java/16113. - * decl.c (force_poplevels): Remove call to expand_end_bindings. - -2004-06-22 Ranjit Mathew - - * parse.y (create_class): Correct diagnostic message about - java.lang.Object extending anything else. - -2004-06-21 Richard Kenner - - * class.c (build_class_ref): Add new operand for COMPONENT_REF. - (build_static_field_ref): Likewise and add new operands for ARRAY_REF. - * constants.c (build_ref_from_constant_pool): Likewise. - * expr.c (build_java_array_length_access): Likewise. - (build_get_class, build_field_ref, build_known_method_ref): Likewise. - (invoke_build_dtable, build_invokevirtual): Likewise. - (build_invokeinterface, java_expand_expr): Likewise. - (emit_init_test_initialization): Likewise. - * java-gimplify.c (java_gimplify_new_array_init): Likewise. - * parse.y (make_qualifed_name, build_array_ref): Likewise. - -2004-06-21 Andrew Haley - - * java-gimplify.c (java_gimplify_block): set TREE_USED on the new - block. - -2004-06-21 Joseph S. Myers - - * jcf.h (struct JCF): Change java_source, right_zip and finished - to unsigned int. - * lex.h (struct java_lexer): Change hit_eof, read_anything, - byte_swap and use_fallback to unsigned int. - * parse.h (struct _jdep): Change flag0 to unsigned int. - -2004-06-17 Ranjit Mathew - - Fixes PR java/13948 - * parse.y (java_layout_seen_class_methods): Ensure class is loaded - before trying to lay out its methods. - * jcf-parse.c (read_class): Track parsed files using canonical paths - obtained via lrealpath from libiberty. - (java_parse_file): Likewise. - (parse_source_file_1): Rename formal parameter to reflect its - modified purpose. Minor formatting fix. - -2004-06-15 Paolo Bonzini - - * class.c (emit_register_classes): Make the function uninlinable, - do not set current_function_cannot_inline. - * resource.c (write_resource_constructor): Do not reset - flag_inline_functions around rest_of_compilation. - -2004-06-08 Andrew Pinski - - PR java/15769 - * expr.c (java_truthvalue_conversion): Handle - UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR, - ORDERED_EXPR, and UNORDERED_EXPR as comparison operators, - i.e. return the expression. - -2004-06-03 Mark G. Adams - - * gjavah.c: Include version.h - -2004-05-31 Bryce McKinlay - - * jcf-write.c (generate_bytecode_conditional): Correct handling - of unordered conditionals. Add comment. - -2004-05-29 Ranjit Mathew - Per Bothner - - * java-tree.h (DECL_LOCAL_FINAL_IUD): New macro to test if a - local variable was initialised upon declaration. - * parse.y (declare_local_variables): Set DECL_LOCAL_FINAL_IUD if - variable was final and initialised upon declaration. - * check-init.c (check_final_reassigned): Give error only if a blank - final is not definitely unassigned or if an initialised final is - reassigned. - (check_bool_init): Respect JLS2 16.1.7 requirements for boolean - assignment expressions. Remove case MODIFY_EXPR, label do_default. - (check_init): Perform initialised-variable-removing-optimisation - only on non-final local variables. - -2004-05-28 Bryce McKinlay - - * jcf-write.c (generate_bytecode_conditional): Handle binops - UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, - and LTGT_EXPR. - (generate_bytecode_insns): Likewise. - -2004-05-28 Bryce McKinlay - - * check-init.c (check_init): Handle binops UNLT_EXPR, UNLE_EXPR, - UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, and LTGT_EXPR. - -2004-05-28 Bryce McKinlay - - * gcj.texi (Object allocation): Remove _Jv_AllocBytes. - (Mixing with C++): Document JvAllocBytes and RawDataManaged. - -2004-05-26 Bryce McKinlay - - * decl.c (struct binding_level): Add GTY marker. Compile - binding_depth unconditionally. - (current_binding_level, free_binding_level, global_binding_level): - Likewise. - (clear_binding_level): Unconditionally set binding_depth. - (make_binding_level): Use ggc_alloc_cleared, not xmalloc. - -2004-05-26 Bryce McKinlay - - * lex.c (java_new_lexer): Set 'encoding'. - (java_read_char): Improve error message for unrecognized characters. - * lex.h (struct java_lexer): New field 'encoding'. - -2004-05-23 Paolo Bonzini - - * Make-lang.in: Link in $(LIBCPP) instead of mkdeps.o. - -2004-05-21 Mark Wielaard - - * gjavah.c (print_stub_or_jni): Mark functions only JNIEXPORT, not - extern. - -2004-05-19 Paolo Bonzini - - * typeck.c: Remove non-printable character 160. - -2004-05-17 Ranjit Mathew - - * check-init.c: Correct minor typos. - -2004-05-13 Diego Novillo - - * Make-lang.in, expr.c, java-gimplify.c: Rename - tree-simple.[ch] to tree-gimple.[ch]. - -2004-05-14 Ranjit Mathew - - * java-gimplify.c (java_gimplify_expr): Correct minor typos. - -2004-05-13 Diego Novillo - - Merge from tree-ssa-20020619-branch. See - ChangeLog.tree-ssa for details. - - * Make-lang.in, builtins.c, check-init.c, class.c, - constants.c, decl.c, except.c, expr.c, java-except.h, - java-tree.def, java-tree.h, jcf-parse.c, jcf-write.c, - lang.c, lang.opt, parse.y, resource.c: Merged. - * java-gimplify.c: New file. - -2004-05-10 Andrew Haley - - * parse.y (create_class): Set TYPE_VFIELD. - * decl.c (java_init_decl_processing): Likewise. - - * expr.c (build_invokevirtual): Remove DECL_VINDEX offset adjustment. - * class.c (make_method_value): Replace DECL_VINDEX with call to - get_method_index(). - (get_dispatch_vector): Likewise. - (layout_class_method): Likewise. - Replace set of DECL_VINDEX with call to set_method_index(). - (set_method_index): New function. - (get_method_index): New function. - * java-tree.h (set_method_index): New function decl. - (get_method_index): New function decl. - -2004-05-10 Andrew Pinski - - * parse.y (check_pkg_class_access): Add new argument - and use it when cl is NULL to call lookup_cl on it. - (parser_check_super_interface): Do not call lookup_cl. - Pass this_decl to check_pkg_class_access and NULL - instead of lookup_cl. - (parser_check_super): Update for change in - check_pkg_class_access. - (do_resolve_class): Likewise. - (process_imports): Likewise. - (find_in_imports_on_demand): Likewise. - (resolve_qualified_expression_name): Likewise. - -2004-05-06 Ranjit Mathew - - Fixes PR java/9685, PR java/15073 - * parse.y (accessibility_string): New method. - (not_accessible_field_error): Use accessibility_string() - instead of java_accstring_lookup(). - (resolve_qualified_expression_name): Check with - check_pkg_class_access() before allowing access using - qualified names. - Fix comment typo. - Use check_pkg_class_access() instead of not_accessible_p() - for unqualified types. - (not_accessible_p): Use DECL_CONTEXT (member) instead of - REFERENCE for package-private access checking. - (patch_method_invocation): Use accessibility_string() instead - of java_accstring_lookup(). - -2004-04-30 Ranjit Mathew - - Fixes PR java/15133 - * gjavah.c (struct method_name): Add member is_native. - (overloaded_jni_method_exists_p): Match candidate method only if - it is native. - (print_method_info): Initialise is_native flag from the method's - access flags. - -2004-04-30 Roger Sayle - - * builtins.c (java_builtins): Add acos, asin, ceil and floor. - (initialize_builtins): Likewise, define acos, asin, ceil and floor. - -2004-04-22 Roger Sayle - - * resource.c (write_resource_constructor): Guard call to possibly - NULL targetm.asm_out.constructor with targetm.have_ctors_dtors. - -2004-04-19 Bryce McKinlay - - * class.c (make_class_data): Add new field aux_info. - * decl.c (java_init_decl_processing): Push type and decl for - `aux_info'. - -2004-04-15 Bryce McKinlay - - * expr.c (expand_java_NEW): Don't use size argument for - _Jv_AllocObject calls. - * parse.y (patch_invoke): Likewise. - -2004-04-12 Bryce McKinlay - - * expr.c (build_invokeinterface): Remove unused variables to - fix warnings. - -2004-04-12 Bryce McKinlay - - * class.c (get_interface_method_index): New function. Return dispatch - index for interface method. - (make_method_value): For interface methods, set index field to - iface dispatch index, not DECL_VINDEX. - * expr.c (build_invokeinterface): Use get_interface_method_index. - -2004-03-31 Richard Kenner - - * jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED. - -2004-03-31 Andrew Haley - - PR java/14104 - * jcf-io.c (opendir_in_zip): Tidy up error handling. - -2004-03-30 Zack Weinberg - - * builtins.c, expr.c, jcf.h, parse.h: Use new shorter - form of GTY markers. - -2004-03-25 Marcus Meissner - - PR java/14689: - * jcf-path.c (jcf_path_extdirs_arg): Add missing closedir. - -2004-03-23 Tom Tromey - - PR java/14315: - * jcf-write.c (make_class_file_name): Don't report if mkdir - failed with EEXIST. - -2004-03-23 Tom Tromey - - * gcj.texi (Extensions): Document GCJ_PROPERTIES. - -2004-03-20 Kazu Hirata - - * class.c, gjavah.c, lang.c: Fix comment typos. - * gcj.texi: Fix typos. - -2004-03-19 Per Bothner - - * gcj.texi (Code Generation): Document new flags and assert defaults. - - * class.c (assume_compiled_node_struct): Rename type to - class_flag_node_struct, as it is now also used for enable_assertions. - Rename assume_compiled_node typedef. Rename excludep field to value. - (find_assume_compiled_node): Rename function to find_class_flag_node. - Minor optimization - avoid needless strlen. - (add_assume_compiled): Some tweaking and optimization. - Rename and generalize to add_class_flag takem an extra parameter. - (add_assume_compled): New just calls add_class_flag. - (add_enable_assert, enable_assertions): New functions. - (enable_assert_tree): New static. - * java-tree.h (add_enable_assert, enable_assertions): New declarations. - * lang.opt (fenable-assertions, fenable-assertions=, - fdisable-assertions, fdisable-assertions=): New options. - * lang.c (java_handle_option): Handle new options. - * parse.y (build_incomplete_class_ref): Handle class$ in an inner - class in an interface - create helper class nested in outer interface. - (build_assertion): Short-circuit if enable_assertions is false. - -2004-03-18 Richard Kenner - - * java-tree.h: Changes throughout to add checking to macros - and numerous whitespace changes. - (VAR_OR_FIELD_CHECK): New macro. - * jcf-write.c (get_access_flags): Use FIELD_PUBLIC, METHOD_PUBLIC, - FIELD_FINAL, and METHOD_FINAL instead of CLASS_PUBLIC and CLASS_FINAL. - -2004-03-16 Per Bothner - - * jcf-jump.c (options): New --print-constants option. - * gcj.texi (Invoking jcf-dump): Document --print-constants. - - * jcf-dump.c (flag_print_constant_pool): Default to off. - (print_constant_terse_with_index): New helper function. - (various places): Check flag_print_constant_pool where missing. - (main): If verbose set flag_print_constant_pool. - (HANDLE_INNERCLASSES_ATTRIBUTE): Null inner class name is anonymous. - -2004-03-15 Andrew Haley - - PR java/14581 - * parse.y (java_complete_lhs): Check that final variable has an - initializer. - -2004-03-12 Andrew Haley - - PR java/14551 - * typeck.c (convert): Clear TREE_OVERFLOW after an integer - conversion. - -2004-02-29 Roger Sayle - - * jcf-parse.c (java_parse_file): Handle the case that input_filename - is NULL. - -2004-02-27 Per Bothner - - * parse.y (build_assertion): Re-do 02-25 change following Jeff Sturm - suggestion: Use build_incomplete_class_ref. - This fixes PR java/13508, java/11714. - -2004-02-27 Kazu Hirata - - * java/parse.h: Update copyright. - -2004-02-26 Andrew Haley - - PR java/14231: - * parse.y (check_interface_throws_clauses): Check for - !METHOD_INVISIBLE (iface_method). - * class.c (layout_class_methods): Check for CLASS_INTERFACE as - well as CLASS_ABSTRACT. - -2004-02-25 Per Bothner - - * parse.y (build_assertion): If we're in an inner class, create the - class$ helper routine in the outer class. - -2004-02-19 Richard Henderson - - * parse.y (switch_label): Use make_node for DEFAULT_EXPR. - -2004-02-16 Geoffrey Keating - - * Make-lang.in (java.install-man): Add extra dependencies. - -2004-02-13 Geoffrey Keating - - * Make-lang.in: Install man pages under the same names - (possibly transformed) as the program they document. - -2004-02-10 Joseph S. Myers - - * gjavah.c: Include "intl.h". - (error): New function. - (main): Call gcc_init_libintl. - (get_field_name, throwable_p, print_c_decl, print_full_cxx_name, - print_stub_or_jni, process_file, main): Use error rather than - fprintf. - (print_method_info, usage, help, version, main): Mark strings for - translation with _. Avoid splitting up sentences. Send - information messages to stdout. - * jcf-dump.c: Include "intl.h". - (main): Call gcc_init_libintl. - (process_class, usage, help, version, main, CHECK_PC_IN_RANGE): - Mark error, usage and version messages for translation with _. - Avoid splitting up sentences. - * jv-scan.c: Include "intl.h". - (fatal_error, warning): Change parameter s to msgid. Translate - messages. - (main): Call gcc_init_libintl. - (usage, help, version): Mark error, usage and version messages for - translation with _. Avoid splitting up sentences. - * jvgenmain.c: Include "intl.h". - (main): Call gcc_init_libintl. - (usage, main): Mark error messages for translation with _. - * Make-lang.in (GCJH_OBJS, JVSCAN_OBJS, JCFDUMP_OBJS, - JVGENMAIN_OBJS): Add intl.o. - (java/jcf-dump.o, java/gjavah.o, java/jv-scan.o, - java/jvgenmain.o): Update dependencies. - -2004-02-08 Per Bothner - - * parse.y (resolve_qualified_expression_name): In case of inaccessible - class don't use not_accessible_field_error, which can get confused. - -2004-02-05 Kelley Cook - - Make-lang.in (po-generated): Delete. - -2004-02-05 Kazu Hirata - - * Make-lang.in (java/decl.o, java/expr.o, java/parse.o): - Depend on target.h. - * decl.c: Include target.h. - (start_java_method): Replace PROMOTE_PROTOTYPES with - targetm.calls.promote_prototypes. - * expr.c: Include target.h. - (pop_arguments): Replace PROMOTE_PROTOTYPES with - targetm.calls.promote_prototypes. - * parse.y: Include target.h. - (start_complete_expand_method): Replace PROMOTE_PROTOTYPES - with targetm.calls.promote_prototypes. - -2004-02-04 Kazu Hirata - - * typeck.c: Update copyright. - -2004-02-02 Tom Tromey - - * decl.c (java_init_decl_processing): Remove duplicate - gnu/gcj/RawData. - -2004-01-30 Kelley Cook - - * Make-lang.in (doc/gcj.dvi): Use $(abs_docdir). - -2004-01-28 Andrew Pinski - - * expr.c (build_field_ref): Move variable - definition up. - -2004-01-28 Andrew Haley - - * expr.c (build_field_ref): Widen field offset. - -2004-01-27 Andrew Haley - - java/13273 - * parse.y (check_interface_throws_clauses): Make sure class_decl - has been loaded. - -2004-01-22 Jeff Sturm - - PR java/13733 - * parse.y (patch_assignment): Don't modify lhs_type for - reference assignments. - -2004-01-20 Kelley Cook - - * Make-lang.in: Replace $(docdir) with doc. - (java.info, java.srcinfo, java.man, java.srcman): New rules. - (java.install-man): Revamp rule. - -2004-01-20 Kelley Cook - - * Make-lang.in (JAVA_INSTALL_NAME, JAVA_TARGET_INSTALL_NAME, - GCJH_TARGET_INSTALL_NAME): Define via a immediate $(shell) - instead of deferred backquote. - -2004-01-16 Andrew Pinski - - * typeck.c (find_method_in_interfaces): Move variable - definition up. - -2004-01-16 Andrew Haley - - PR java/13273: - * typeck.c (shallow_find_method): New. - (find_method_in_superclasses): New. - (find_method_in_interfaces): New. - (lookup_do): Rewrite. - * java-tree.h (SEARCH_ONLY_INTERFACE): Delete. - - * jcf-parse.c (read_class): Save and restore output_class. - * decl.c (java_expand_body): Set output_class from fndecl. - -2004-01-15 Michael Chastain - - * class.c (gen_indirect_dispatch_tables): Fix string length - calculations. - -2004-01-15 Kelley Cook - - * Make-lang.in (parse.c, parse-scan.c): Always build in doc directory. - (java.srcextra): Copy above back to source directory if requested. - (po-generated): Delete reference to $(parsedir). - (java/parse.o, java/parse-scan.o): Delete reference to $(parsedir). - Use implicit rule. - -2004-01-14 Jan Hubicka - - * lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost - estimation. - -2004-01-09 Mark Mitchell - - * java-tree.h (java_expand_expr): Change prototype. - * expr.c (java_expand_expr): Add alt_rtl parameter. - -2004-01-09 Andrew Haley - - PR java/12755: - * parse.y (java_fix_constructors): Set output_class. - (java_reorder_fields): Likewise. - (java_layout_classes): Likewise. - (java_expand_classes): Generate indirect dispatch tables. - (java_expand_classes): Set output_class. - (java_finish_classes): Likewise. - * lang.c (java_init): Turn on always_initialize_class_p if we're - using indirect dis[atch. - (java_decl_ok_for_sibcall): Use output_class, not current_class. - (java_get_callee_fndecl): Use class local atable. - * jcf-parse.c - (always_initialize_class_p): Decl moved to java-tree.h. - (HANDLE_CLASS_INFO): Set output_class. - (read_class): Likewise. - (parse_class_file): Call gen_indirect_dispatch_tables. - (parse_zip_file_entries): Set output_class. - (java_parse_file): Set output_class. Don't emit symbol tables. - * java-tree.h (output_class): New. - Remove global declarations for otable, atable, and ctable. - (always_initialize_class_p): moved here from decl.c. - (DECL_OWNER): New. - (TYPE_ATABLE_METHODS, TYPE_ATABLE_SYMS_DECL, TYPE_ATABLE_DECL, - TYPE_OTABLE_METHODS, TYPE_OTABLE_SYMS_DECL, TYPE_OTABLE_DECL, - TYPE_CTABLE_DECL, TYPE_CATCH_CLASSES): New. - (struct lang_type): Add otable_methods, otable_decl, - otable_syms_decl, atable_methods, atable_decl, atable_syms_decl, - ctable_decl, catch_classes, type_to_runtime_map. - * expr.c (build_field_ref): Make otable, atable, and ctable class - local rather than global. - (build_known_method_ref): Likewise. - (build_invokeinterface): Likewise. - (java_expand_expr): Pass runtime type (rather than actual type) to - expand_start_catch. - * except.c (prepare_eh_table_type): Create TYPE_TO_RUNTIME_MAP for - this class. Look up each class in that map to delete duplicates. - (expand_end_java_handler): Pass runtime type (rather than actual - type) to expand_start_catch. - * decl.c: (always_initialize_class_p): Decl moved to java-tree.h. - (do_nothing): New. - (java_init_decl_processing): Rearrange things. Remove global - declarations of otable, atable, and ctable. - (java_init_decl_processing): Make lang_eh_runtime_type do_nothing. - (java_expand_body): Set output_class. - * constants.c (build_constant_data_ref): Use output_class, not - current_class. - (alloc_name_constant): Likewise. - * class.c (gen_indirect_dispatch_tables): New. - (build_class_ref): Generate hard reference to superclass, even if - using indirect dispatch. - (build_static_field_ref): Use class local atable. - (make_class_data): Generate hard reference to superclass, even if - using indirect dispatch. - Generate symbolic references to interfaces when using indirect - dispatch. - (make_class_data): Emit otable, atable, and ctable. - Make otable, atable, and ctable class local rather than global. - (emit_catch_table): Make otable, atable, and ctable class local - rather than global. - -2003-12-25 Andrew Pinski - - * parse.y (catch_clause_parameter): Fix typo. - - PR java/13404 - * parse.y: (catch_clause_parameter): Return early if $3, aka - formal_parameter, is null. - -2003-12-20 Kazu Hirata - - * class.c: Remove uses of "register" specifier in - declarations of arguments and local variables. - * decl.c: Likewise. - * expr.c: Likewise. - * gjavah.c: Likewise. - * jcf-dump.c: Likewise. - * jcf-io.c: Likewise. - * jcf-parse.c: Likewise. - * jcf-write.c: Likewise. - * keyword.h: Likewise. - * parse.y: Likewise. - * typeck.c: Likewise. - * verify.c: Likewise. - -2003-12-06 Kelley Cook - - * Make-lang.in (GCJ_CROSS_NAME): Delete. - (java.install_common, java.install-man): Adjust for above. - (java.uninstall): Likewise. - -2003-12-03 Michael Koch - - * class.c (make_class_data): - Push field value to 'hack_signers' instead of 'signers'. - * decl.c (java_init_decl_processing): - Push field 'hack_signers' instead of 'signers'. - -2003-12-03 Zack Weinberg - - * lex.h: Check both HAVE_ICONV and HAVE_ICONV_H before - including iconv.h. - -2003-12-03 Ralph Loader - - PR java/12374: - * parse.y (qualify_ambiguous_name): Remove lots of broken - field access processing - there's no need to do that here, - because we have resolve_field_access. Remove - RESOLVE_EXPRESSION_NAME_P as it isn't used anywhere else. - * java-tree.h: Remove RESOLVE_EXPRESSION_NAME_P as it isn't - used. - -2003-12-01 Jeff Sturm - - Fix PR java/13237 - * parse.y (java_complete_lhs): Save location prior to patching - CALL_EXPR. - -2003-11-25 Mohan Embar - - PR java/12548 - * resource.c (write_resource_constructor): Append - "_resource" to constructor identifier name. - -2003-11-25 Jeff Sturm - - Fix PR java/13183. - * constants.c (cpool_for_class): New function. - (outgoing_cpool): Remove global variable. - (alloc_name_constant): Use cpool_for_class. - (build_constants_constructor): Likewise. - * decl.c (java_expand_body): Set current_class. - * java-tree.h (outgoing_cpool) Remove declaration. - (init_outgoing_cpool): Likewise. - * jcf-parse.c (init_outgoing_cpool): Remove function. - (parse_class_file): Don't call init_outgoing_cpool. - * parse.y (java_complete_expand_methods): Don't call - init_outgoing_cpool. Don't save outgoing_cpool. - (java_expand_classes): Don't restore outgoing_cpool. - (java_finish_classes): Likewise. - -2003-11-24 Mohan Embar - - * Make-lang.in: (java.install-common) Add - symlink for $(target_noncanonical)-gcjh for - native builds. - -2003-11-20 Joseph S. Myers - - * Make-lang.in (java.extraclean): Delete. - -2003-11-20 Joseph S. Myers - - * Make-lang.in (check-java): Add. - -2003-11-19 Jeff Sturm - - Fix PR java/13024. - * except.c (prepare_eh_table_type): Allocate variable-sized - buffer `buf' with alloca. - -2003-11-17 Jeff Sturm - - Fix PR java/12857. - - decl.c (java_init_decl_processing): Don't initialize - class_not_found_type_node, no_class_def_found_type_node. - - java-tree.h (JTI_CLASS_NOT_FOUND_TYPE_NODE, - JTI_NO_CLASS_DEF_FOUND_TYPE_NODE): Remove from java_tree_index. - (class_not_found_type_node, no_class_def_found_type_node): - Don't define. - - parse.y (build_dot_class_method_invocation): Add this_class - argument. Qualify method invocations to a different class. - (create_new_parser_context): Initialize saved_data_ctx to 0. - (java_parser_context_save_global): Initialize saved_data_ctx to 1. - (build_dot_class_method): Don't load classes. Register - incomplete types. - (build_incomplete_class_ref): Special cases for interfaces - and inner classes. Move build_dot_class_method call to here... - (patch_incomplete_class_ref): ...from here. Pass current_class - to build_dot_class_method_invocation. - (build_assertion): Pass class_type to - build_dot_class_method_invocation. - (encapsulate_with_try_catch): Handle EXPR_WITH_FILE_LOCATION node. - -2003-11-17 Jeff Sturm - - Fix PR java/12739. - * java-tree.h (BLOCK_EMPTY_P): Define. - * parse.y (java_complete_lhs): Check for empty blocks - in TRY_FINALLY_EXPR case. - -2003-11-17 Andrew Haley - - * java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New. - (struct lang_decl_var:freed): New variable. - * decl.c (poplevel): Mark local vars that have gone out of scope. - (push_jvm_slot): Don't use the RTL of a var that has gone out of - scope. - -2003-11-16 Jason Merrill - - * Make-lang.in (java.tags): Create TAGS.sub files in each directory - and TAGS files that include them for each front end. - -2003-11-15 Tom Tromey - - * gjavah.c (print_stub_or_jni): Pass `env' to FatalError. - -2003-11-12 Jason Merrill - - PR optimization/12547 - * lang.c (java_tree_inlining_walk_subtrees): Just walk - BLOCK_EXPR_BODY directly. - -2003-11-12 Andrew Haley - - PR java/11045 - * parse.y (fold_constant_for_init): Check that we really do have a - constant. - - PR java/11533 - * lang.c (merge_init_test_initialization): Clear DECL_INITIAL for - init_test_decls being inlined. - - PR java/12890: - * parse.y (do_resolve_class): Check return value from - breakdown_qualified(). - -2003-11-11 Tom Tromey - - PR java/12915: - * parse.y (merge_string_cste): Handle case where we have a - pointer that happens to be zero, not null_pointer_node. - -2003-11-10 Tom Tromey - - * jcf-parse.c (classify_zip_file): Correctly compare - filename_length against length of manifest file's name. - -2003-11-08 Tom Tromey - - PR java/12894: - * jcf-parse.c (classify_zip_file): Only skip MANIFEST.MF file. - -2003-11-06 Andrew Haley - - * expr.c (java_stack_swap): Make sure destination stack slots are - of the correct type. - -2003-11-03 Kelley Cook - - * Make-lang.in (dvi): Move targets to $(docobjdir). - (gcj.dvi): Simplify rule and adjust target. - (gcj.info): Simplify rule. - (gcj.pod): New intermediate rule. - (gcjh.pod): Likewise. - (jv-scan.pod): Likewise. - (jcf-dump.pod): Likewise. - (gij.pod): Likewise. - (jv-convert.pod): Likewise. - (rmic.pod): Likewise. - (rmiregistry.pod): Likewise. - (gcj.1): Delete. - (gcjh.1): Delete. - (jv-scan.1): Delete. - (jcf-dump.1): Delete. - (gij.1): Delete. - (jv-convert.1): Delete. - (rmic.1): Delete. - (rmiregistry.1): Delete. - -2003-11-02 Jeff Sturm - - Fixes PR java/12866. - * parse.y (resolve_qualified_expression_name): Move test - for outer field access methods from here... - (check_thrown_exceptions) ...to here. - -2003-11-01 Kelley Cook - - * .cvsignore: Delete. - -2003-10-28 Frank Ch. Eigler - - * verify.c (verify_jvm_instructions): Don't warn about legal - eh binding regions generated for example by jdk 1.4.1. - -2003-10-24 David S. Miller - - * jcf-parse.c (jcf_parse): Fix args to fatal_error(). - -2003-10-22 Andrew Haley - - * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New. - (java_get_callee_fndecl): New. - - * jcf-parse.c (java_parse_file): Call emit_catch_table(). - - * java-tree.h (ctable_decl): New. - (catch_classes): New. - (java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES. - - * decl.c (java_init_decl_processing): Add catch_class_type. - Add ctable_decl. - Add catch_classes field. - - * class.c (build_indirect_class_ref): Break out from - build_class_ref. - (make_field_value): Check flag_indirect_dispatch. - (make_class_data): Ditto. - Tidy uses of PUSH_FIELD_VALUE. - Add field catch_classes. - (make_catch_class_record): New. - - * java-tree.h (PUSH_FIELD_VALUE): Tidy. - -2003-10-22 Kazu Hirata - - * jcf-write.c: Follow spelling conventions. - * parse.y: Likewise. - -2003-10-22 Kazu Hirata - - * ChangeLog: Fix typos. - * expr.c: Fix comment typos. - * jcf-write.c: Likewise. - * lang.c: Likewise. - * lex.c: Likewise. - * mangle.c: Likewise. - * parse-scan.y: Likewise. - * parse.y: Likewise. - -2003-10-22 Tom Tromey - - * expr.c (expand_byte_code): Only warn about dead bytecode when - extra_warnings is set. - -2003-10-22 Bryce McKinlay - - Fix for PR java/12586. - * mangle.c (find_compression_record_match): Don't iterate through - package namespace elements unless they all match compression_table - entries. - -2003-10-20 Kelley Cook - - * Make-lang.in (info): Honor $(parsedir) and $(docobjdir). - (generate-manpages): Likewise. - (java.maintainer-clean): Likewise. - (gcj.info): Likewise. - (gcj.1): Likewise. - (gcjh.1): Likewise. - (jv-scan.1): Likewise. - (jcf-dump.1): Likewise. - (gij.1): Likewise. - (jv-convert.1): Likewise. - (rmic.1): Likewise. - (rmiregistry.1): Likewise. - (java.install-man): Likewise. - (parse-scan.o): Move and define complete compile line. - (parse.o): Likewise. - (jcf-tree-inline.o): Move. - -2003-10-20 Mark Mitchell - - * Make-lang.in (info): Update dependencies. - (java.install-info): Remove. - ($(srcdir)/java/gcj.info): Replace with ... - ($(docobjdir)/gcj.info): ... this. - -2003-10-14 Nathanael Nerode - - * Make-lang.in: Replace uses of $(target_alias) with - $(target_noncanonical). - -2003-10-09 Tom Tromey - - * decl.c (java_init_decl_processing): Declare signers field. - * class.c (make_class_data): Set signers field. - -2003-10-09 Jason Merrill - - * parse.y (patch_assignment): Use make_node to create a BLOCK. - * parse.h (BUILD_PTR_FROM_NAME): Use make_node to create a - POINTER_TYPE. - -2003-10-06 Mark Mitchell - - * Make-lang.in (java.info): Replace with ... - (info): ... this. - (java.dvi): Replace with ... - (dvi): ... this. - (java.generated-manpages): Replace with ... - -2003-10-03 Kelley Cook - - * builtins.c, jcf.h, jvspec.c: Remove PARAMS macros. - -2003-10-01 Andrew Haley - - * jcf-parse.c (java_parse_file): Write otable and atable. - * java-tree.h (atable_methods): New. - (atable_decl): New. - (atable_syms_decl): New. - (enum java_tree_index): Add JTI_ATABLE_METHODS, JTI_ATABLE_DECL, - JTI_ATABLE_SYMS_DECL. Rename JTI_METHOD_SYMBOL* to JTI_SYMBOL*. - (symbol_*type): Rename method_symbol* to symbol*type. - (emit_offset_symbol_table): Delete. - (emit_symbol_table): New. - (get_symbol_table_index): New. - (atable_type): New. - * expr.c (build_field_ref): Handle flag_indirect_dispatch. - (build_known_method_ref): Likewise. - (get_symbol_table_index): Rename from get_offset_table_index. - Parameterize to allow re-use by differing types of symbol table. - (build_invokevirtual): Pass table to get_offset_table_index. - * decl.c (java_init_decl_processing): Push types and decls for - atable and atable_syyms. - * class.c (build_static_field_ref): Handle flag_indirect_dispatch. - (make_class_data): Add new fields atable and atable_syms. - (emit_symbol_table): Rename from emit_offset_symbol_table. - Parameterize to allow re-use by different types of symbol table. - (build_symbol_entry): Renamed from build_method_symbols_entry. - -2003-09-30 Roger Sayle - - * jcf-write.c (generate_bytecode_insns): Implement evaluate-once - semantics for SAVE_EXPR, by caching the result in a temporary. - -2003-09-28 Richard Henderson - - * check-init.c (check_init): Save and restore input_location - instead of file and line separately. - * decl.c (java_expand_body): Likewise. - * jcf-write.c (generate_bytecode_insns): Likewise. - * parse.y (safe_layout_class): Likewise. - * jcf-parse.c (read_class, parse_class_file): Likewise. - (java_parse_file): Use %H for warning locator. - -2003-09-28 Roger Sayle - - * expr.c (java_check_reference): Use the semantics of COND_EXPRs - with void-type branches instead of using a COMPOUND_EXPR. - -2003-09-28 Jeff Sturm - - * decl.c (java_optimize_inline, dump_function): Remove. - * java-tree.h (java_optimize_inline): Remove declaration. - * jcf-parse.c (java_parse_file): Assume flag_unit_at_a_time is set. - * parse.y (source_end_java_method, java_expand_classes): - Likewise. Remove dead code. - -2003-09-27 Roger Sayle - - * lang.c (java_init_options): Set flag_evaluation_order. - * expr.c (force_evaluation_order): Don't attempt to force - evaluation order of binary operations using save_expr. - * parse.y (java_complete_lhs): No longer need to call - force_evaluation_order when constructing binary operators. - -2003-09-27 Alexandre Petit-Bianco - Bryce McKinlay - - PR java/1333: - * parse.y (not_accessible_field_error): New function. - (resolve_expression_name): Check field access permissions. - (resolve_qualified_expression_name): Use - not_accessible_field_error. - (resolve_qualified_expression_name): Likewise. - -2003-09-24 Rainer Orth - - * class.c (build_utf8_ref): Test for HAVE_GAS_SHF_MERGE value. - -2003-09-23 Roger Sayle - - * jcf-write.c (generate_bytecode_insns): Optimize binary operations - with equal operands without side-effects. - -2003-09-22 Jeff Sturm - - * decl.c (java_init_decl_processing): Don't emit otable decls - if flag_indirect_dispatch is not set. - -2003-09-21 Richard Henderson - - * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y, - resource.c: Revert. - -2003-09-21 Richard Henderson - - * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y, - resource.c: Update for DECL_SOURCE_LOCATION rename and change to const. - -2003-09-20 Richard Henderson - - * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics. - -2003-09-18 Roger Sayle - - * expr.c (java_truthvalue_conversion): Remove FFS_EXPR case. - * check-init.c (check_init): Likewise. - -2003-09-18 Roger Sayle - - * jcf-write.c (generate_bytecode_insns): Add support for fconst_2. - -2003-09-16 Andrew Haley - - * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR. - -2003-09-17 Ranjit Mathew - - Fixes PR java/9577 - * mangle.c (find_compression_record_match): Skip - over a "6JArray" (the array template mangled string) - IDENTIFIER_NODE. - (mangle_array_type): Correct minor typo. - (atms): Move definition to the beginning. - -2003-09-16 Bryce McKinlay - - * class.c (add_miranda_methods): Ensure super-interfaces are laid - out. Fix for PR java/12254. - -2003-09-11 Richard Henderson - - * parse.y (source_end_java_method): Update for new - cgraph_finalize_function argument. - -2003-09-09 Richard Henderson - - * parse.y (source_end_java_method): Update call to - cgraph_finalize_function. - -2003-09-03 Jeff Sturm - - * decl.c (java_expand_body): New function. - * expr.c (build_class_init): Set DECL_IGNORED_P. - * java-tree.h (start_complete_expand_method, - java_expand_body): Declare. - * jcf-parse.c (cgraph.h): Include. - (java_parse_file): Handle flag_unit_at_a_time. - * lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING, - LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define. - (java_estimate_num_insns): Use walk_tree_without_duplicates. - (java_start_inlining): New function. - * parse.h (java_finish_classes): Declare. - * parse.y: Include cgraph.h. - (block): Don't special-case empty block production. - (craft_constructor): Set DECL_INLINE. - (source_end_java_method): Handle flag_unit_at_a_time. - Replace inline code with call to java_expand_body. - (start_complete_expand_method): Remove static modifier. - (java_expand_method_bodies): Patch function tree for - class initialization and/or synchronization as needed. - Don't begin RTL expansion yet. - (java_expand_classes): Check flag_unit_at_a_time before - calling finish_class. - (java_finish_classes): New function. - (java_complete_lhs): Ensure COMPOUND_EXPR has non-NULL type. - (patch_assignment): Set DECL_CONTEXT on temporary variable. - (emit_test_initialization): Set DECL_IGNORED_P. - -2003-09-03 Roger Sayle - - * builtins.c (enum builtin_type): Delete unused enumeration. - * Make-lang.in (java/builtins.o): Remove built-types.def dependency. - -2003-08-28 Tom Tromey - - * gcj.texi (Extensions): Document gcjlib URLs. - -2003-08-20 Tom Tromey - - * gcj.texi (Extensions): Added xref. - (libgcj Runtime Properties): Document - gnu.gcj.runtime.VMClassLoader.library_control. - -2003-08-20 Andrew Haley - - * except.c (prepare_eh_table_type): Use new encoding for exception - handlers when using -fno-assume-compiled. - -2003-08-13 Tom Tromey - - * gcj.texi (Invoking gij): Document -X and -?. - -2003-08-13 Mohan Embar - - * Make-lang.in: Added missing win32-host.o to JAVA_OBJS, - GCJH_OBJS, JCFDUMP_OBJS - * win32-host.c: Removed the unnecessary and broken dependency - on jcf.h - -2003-08-11 Tom Tromey - - * parse.y (java_check_regular_methods): Typo fixes. Call - check_interface_throws_clauses. Use - check_concrete_throws_clauses. - (check_interface_throws_clauses): New function. - (check_concrete_throws_clauses): New function. - (hack_is_accessible_p): New function. - (find_most_specific_methods_list): Added FIXME. - * typeck.c (lookup_do): Use `flags' argument to decide what to - do. Reimplemented. - (lookup_argument_method_generic): New function. - (lookup_argument_method2): Removed. - * jcf.h (ACC_INVISIBLE): New define. - * jcf-write.c (generate_classfile): Skip invisible methods. - * class.c (add_miranda_methods): New function. - (layout_class_methods): Use it. - (get_access_flags_from_decl): Use ACC_INVISIBLE. - * java-tree.h (METHOD_INVISIBLE): New define. - (lang_decl_func) [invisible]: New field. - (lookup_argument_method_generic): Declare. - (SEARCH_INTERFACE): New define. - (SEARCH_SUPER): Likewise. - (SEARCH_ONLY_INTERFACE): Likewise. - (SEARCH_VISIBLE): Likewise. - (lookup_argument_method2): Removed declaration. - -2003-08-05 Tom Tromey - - Fix for PR java/11600: - * parse.y (java_complete_lhs): See whether we're calling a method - on an array. - (check_thrown_exceptions): Added `is_array_call' argument; - fixed `clone' checking; updated all callers. - -2003-08-05 Steven Bosscher - - * java-tree.h (DECL_ESTIMATED_INSNS): Remove (moved to tree.h). - -2003-08-03 Tom Tromey - - * java-tree.h (METHOD_TRANSIENT): Removed. - * decl.c (pushdecl): Removed some dead code. - * class.c (get_access_flags_from_decl): Can't have transient - method. - (add_method_1): Can't have a transient method. - -2003-07-28 Andreas Jaeger - - * jvspec.c: Convert to ISO C90 prototypes. - -2003-07-25 Nathan Sidwell - - * decl.c (force_poplevels): Fix warning call. - -2003-07-25 Gabriel Dos Reis - - * expr.c (expand_java_field_op): Don't use xxx_with_decl - (expand_java_field_op): Likewise. - * class.c (layout_class_method): Likewise - (emit_register_classes): Likewise. - * decl.c (pushdecl): Likewise. - (poplevel): Likewise. - (force_poplevels): Likewise. - (give_name_to_locals): Likewise. - * check-init.c (check_for_initialization): Likewise. - -2003-07-24 Jason Merrill - - * java-tree.h: Move boolean_type_node et al to the back end. - -2003-07-19 Kaveh R. Ghazi - - * class.c java-tree.h jcf-write.c jvspec.c: Remove unnecessary - casts. - -2003-07-19 Neil Booth - - * lang.opt: Don't show -MD_ and -MDD_. - -2003-07-18 Neil Booth - - * lang-options.h: Remove. - * lang.opt: Add help text. - -2003-07-15 Kazu Hirata - - * expr.c: Remove the last argument to expand_assignment(). - -2003-07-09 Jan Hubicka - - * java-tree.h (DECL_NUM_STMTS): Rename to... - (DECL_ESTIMATED_INSNS): ... this. - * lang.c (java_estimate_num_insns, java_estimate_num_insns_1): - New static functions. - (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define. - * parser.y (add_stmt_to_compound): Do not account statements. - -2003-07-08 Mark Wielaard - - * gcj.texi: CNI now expands to Compiled Native Interface. - -2003-07-08 Rainer Orth - - * Make-lang.in (java/gcj.dvi): Use PWD_COMMAND. - -2003-07-07 Nathan Sidwell - - * expr.c (expand_byte_code): Adjist emit_line_note call. - -2003-07-06 Neil Booth - - * lang.c (java_handle_option): Don't handle filenames. - -2003-07-02 Zack Weinberg - - * jcf-path.c: Don't default-define PATH_SEPARATOR nor - DIR_SEPARATOR. - Use FILENAME_CMP. - * jcf-write.c: Don't default-define DIR_SEPARATOR. - * jcf.h: Delete COMPARE_FILENAMES definition. - -2003-07-02 Neil Booth - - * lang.c (java_init_options): Update prototype. - -2003-07-01 Nathan Sidwell - - * decl.c (poplevel): Adjust define_label call. - -2003-06-27 Zack Weinberg - - * gjavah.c (flag_jni): Make non-static. - * parse-scan.y (ctxp): Make non-static. - - * class.c (build_method_symbols_entry) - * expr.c (get_offset_table_index) - * jcf-parse.c (jcf_parse): - Mark the definition static, matching the forward declaration. - -2003-06-26 Neil Booth - - * lang.c (java_handle_option): Don't check for missing arguments. - -2003-06-20 Nathan Sidwell - - * class.c (push_class): Use a location_t to save place. - (emit_register_classes): Set input_location. Adjust - expand_function_end call. - * resource.c (write_resource_constructor): Likewise. - * decl.c (end_java_method): Adjust expand_function_end call. - * parse.y (source_end_java_method): Likewise. - -2003-06-17 Robert Abeles - - * lang.c (java_handle_option): Likewise. - -2003-06-16 Neil Booth - - * lang.c (java_handle_option): Special-casing of optional - joined arguments no longer needed. - * lang.opt: Update switches that take optional argument. - -2003-06-15 Neil Booth - - * lang.opt: Declare Java. - * lang.c (java_init_options): Update. - -2003-06-15 Neil Booth - - * lang.c (version_flag): Rename to v_flag to avoid clash w/ toplev.h. - -2003-06-14 Neil Booth - - * lang-specs.h: Rewrite -MD and -MMD to append an underscore. - * lang.c (java_handle_option): -MD and -MMD have an underscore. - * lang.opt: -MD and -MMD have an underscore. - -2003-06-14 Nathan Sidwell - - * class.c (emit_register_classes): Adjust init_function_start - call. - * decl.c (complete_start_java_method): Likewise. - * resource.c (write_resource_constructor): Likewise. - -2003-06-14 Neil Booth - - * Make-lang.in: Update to use options.c and options.h. - * lang.c: Include options.h not j-options.h. - (java_handle_option): Abort on unrecognized option. - (java_init_options): Request Java switches. - -2003-06-11 Neil Booth - - * Make-lang.in: Handle mostlyclean. - -2003-06-11 Tom Tromey - - * lang.c (java_handle_option): Update dependency_tracking for - OPT_MF case. - - * lang.c (java_handle_option): OPT_fbootclasspath_ can take an - empty argument. - -2003-06-10 Andrew Haley - - * resource.c (write_resource_constructor): Use expand_expr to - generate the address of the label attached to a resource. - * Make-lang.in (java/resource.o): Add expr.h - -2003-06-10 Andrew Haley - - * lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New. - (java_decl_ok_for_sibcall): New. - -2003-06-09 Neil Booth - - * Make-lang.in (JAVA_OBJS, java/lang.o): Update. - (java/j-options.c, java/j-options.h): New. - * java-tree.h (resource_name, compile_resource_file, - compile_resource_data): Constify. - * jcf-write.c (jcf_write_base_directory): Similarly. - * jcf.h (jcf_write_base_directory): Similarly. - * lang.c: Include j-options.h. - (cl_options_count, cl_options, string_option, java_decode_option, - lang_f_options, lang_W_options, LANG_HOOKS_DECODE_OPTION, - process_option_with_no): Remove. - (resource_name): Constify. - (LANG_HOOKS_HANDLE_OPTION): Override. - (java_handle_option): New. - (java_init): Don't call jcf_path_init. - (java_init_options): Call jcf_path_init. - * lang.opt: New. - * resource.c (compile_resource_data, compile_resource_file): Constify. - -2003-06-09 Nathan Sidwell - - * java-tree.h (DECL_FUNCTION_LAST_LINE): New. - (struct lang_decl_func): Add last_line field. - * parse.h (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST, - DECL_SOURCE_LINE_LAST): Remove. - * parse.y (missing_return_error, finish_method_declaration, - lookup_cl, start_artificial_method_body, source_end_java_method, - start_complete_expand_method): Adjust. - -2003-06-08 Tom Tromey - - * jvspec.c (jvgenmain_spec): Added `*' after fassume-compiled and - fno-assume-compiled. - -2003-06-08 Roger Sayle - - * builtins.c (define_builtin_type, builtin_types): Delete. - (define_builtin): Rewritten to take just the built-in code, - the function's name, type and fallback library function name. - All built-ins used by Java are implicit and BUILT_IN_NORMAL. - (initialize_builtins): Overhaul to define the GCC builtins - used by gcj manually, providing the Java run-time's - implementations as the fallback library function. - -2003-06-08 Anthony Green - - * parse.y (patch_cast): Fix conversions from floating-point to - integral types. - -2003-06-08 Neil Booth - - * Make-lang.in: Update. - * lang.c: Include opts.h. Define cl_options_count and cl_options. - -2003-06-07 Neil Booth - - * lang.c (java_init_options): Update. - -2003-06-05 Jan Hubicka - - * Make-lang.in: Add support for stageprofile and stagefeedback - -2003-05-31 Roger Sayle - - * lang.c (java_init_options): Prescribe wrap-around two's - complement arithmetic overflow by setting flag_wrapv. - -2003-05-29 Roger Sayle - - * builtins.c (cos_builtin, sin_builtin, sqrt_builtin): Delete. - (builtin_record): Add an additional builtin_code field to - record which GCC built-in corresponds to the Java function. - (java_builtins): Add new entries for atan, atan2, exp, log, - pow and tan. - (max_builtin, min_builtin, abs_builtin): Perform constant - folding on the resulting tree. - (java_build_function_call_expr): Likewise, perform constant - folding on the resulting tree. - (initialize_builtins): The NULL creators are now allowed in - the java_builtins table, which is now terminated by an entry - with builtin_code == END_BUILTINS. - (check_for_builtin): Likewise. If the matching creator is - NULL, construct the call using java_build_function_call_expr - directly with the decl for the corresponding builtin_code. - -2003-05-23 Nathanael Nerode - - * win32-host.c: Normalize copyright boilerplate. - -2003-05-16 Kaveh R. Ghazi - - * parse.y (print_int_node): Use string concatentation on - HOST_WIDE_INT_PRINT_* format specifier to collapse multiple - function calls into one. - -2003-05-13 Zack Weinberg - - * jcf-parse.c, jcf-write.c, lex.c: Replace all calls to - fatal_io_error with calls to fatal_error; add ": %m" to the end of - all the affected error messages. - -2003-05-13 Richard Henderson - - * class.c (layout_class_method): Set DECL_EXTERNAL. - * decl.c (java_mark_decl_local, java_mark_class_local): New. - * java-tree.h (java_mark_class_local): Declare. - * jcf-parse.c (parse_class_file): Use it. - * parse.y (java_expand_classes): Likewise. - -2003-05-04 Nathan Sidwell - - * Make-lang.in (java/parse.o, java/parse-scan.o): Depend on input.h. - * lex.h: #include input.h. - * jv-scan.c (input_filename): Remove. - -2003-05-02 Tom Tromey - - PR java/10491: - * gjavah.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. - (handle_inner_classes): New function. - -2003-05-01 Tom Tromey - - PR java/10459: - * parse.y (finish_for_loop): Do nothing if update expression is a - EXPR_WFL_NODE wrapping nothing. - (java_complete_lhs) : Likewise. - -2003-05-02 Nathan Sidwell - - * lex.h (input_lineno): Remove declaration. - * parse-scan.y: #include input.h. - (input_filename): Remove declaration. - (input_location): Add definition. - (input_line): Remove definition. - -2003-05-01 Nathan Sidwell - - * lex.h (lineno): Rename to ... - (input_line): ... here - * parse-scan.y (lineno): Rename to ... - (input_line): ... here. - (reset_report): Rename lineno to input_line. - * check-init.c (check_init): Likewise. - * class.c (push_class): Likewise. - * decl.c (complete_start_java_method, end_java_method): Likewise. - * expr.c (expand_byte_code): Likewise. - * jcf-parse.c (give_name_to_class, parse_class_file): Likewise. - * jcf-write.c (generate_bytecode_insns): Likewise. - * lex.c (java_init_lex, java_allocate_new_line, - do_java_lex): Likewise. - * parse.h (YYNOT_TWICE): Likewise. - * parse.y (empty_statement, expression_statement, - java_pop_parser_context, java_parser_context_save_global, - yyerror, register_fields, method_header, safe_layout_class, - find_in_imports_on_demand, create_artificial_method, - source_end_java_method, start_complete_expand_method, - build_thisn_assign, java_complete_lhs, - maybe_absorb_scoping_block): Likewise. - -2003-04-20 Mohan Embar - - * jcf-io.c (find_class): use DIR_SEPARATOR instead of - '/' when computing java source filename - -2003-04-13 Tom Tromey - - * gjavah.c (print_c_decl): Indentation fix. - -2003-04-12 Zack Weinberg - - * class.c (make_field_value, make_method_value, get_dispatch_table) - (make_class_data, emit_offset_symbol_table) - * constants.c (build_constants_constructor) - * java-tree.h (START_RECORD_CONSTRUCTOR) - * parse.y (maybe_build_array_element_wfl): - Use build_constructor. - -2003-04-10 Eric Blake - - PR java/10253: - * parse.y (string_convert_int_cst): Always use at least one digit - in string conversion. Remove ASCII dependence. - (merge_string_cste): Fix merging of 3-byte UTF-8 characters. - -2003-03-16 Mohan Embar - - * Make-lang.in: added win32-host.c - * jcf.h: defined macro JCF_OPEN_EXACT_CASE which - resolves to open() on non-Win32 platforms and - Win32-specific jcf_open_exact_case() on Win32 - * jcf-io.c (find_class): use JCF_OPEN_EXACT_CASE - when trying .java and .class files - * win32-host.c: added to repository. Defines - Win32-specific jcf_open_exact_case() - -2003-04-10 Andrew Haley - - * jcf-write.c (struct jcf_partial): num_jsrs: new field. - (maybe_free_localvar): Renamed from localvar_free. - Add new arg, really. - (generate_bytecode_insns): Set new variable, jsrs. - Only free local vars if no jsr insns have been emittted. - Call maybe_free_localvar, not localvar_free. - -2003-03-30 Joseph S. Myers - - * gcj.texi: Remove @ at start of file. - -2003-03-25 Tom Tromey - - * parse.y (create_interface): Call CHECK_DEPRECATED. - -2003-03-23 Zack Weinberg - - * Make-lang.in: Link jcf-dump against $(LDEXP_LIB). - -2003-03-21 Zack Weinberg - - * javaop.h (jfloat, jdouble): Make them structures mirroring - the bit fields of IEEE float and double respectively. - (JFLOAT_FINITE, JFLOAT_QNAN_MASK, JFLOAT_EXP_BIAS, - JDOUBLE_FINITE, JDOUBLE_QNAN_MASK, JDOUBLE_EXP_BIAS): New. - (union Word, union DWord): Delete. - (WORD_TO_FLOAT, WORDS_TO_DOUBLE): Update to match. - - * gjavah.c (java_float_finite, java_double_finite, F_NAN_MASK, - D_NAN_MASK): Delete. - (jni_print_float, jni_print_double): New. Generate - hexadecimal floating constants. - (print_field_info): Use jni_print_float/double. - - * jcf-dump.c: Include math.h. Use ldexp/frexp to assemble - finite floating point numbers for output; special case - non-finite floats. - -2003-03-19 Nathanael Nerode - - * lang.c (java_dump_tree): Change return type from 'int' to 'bool'. - Replace 0 and 1 with true and false in return statements. - -2003-03-19 Tom Tromey - - * lex.c (do_java_lex): Renamed from java_lex. - (java_lex): New function. - Include timevar.h. - -2003-03-13 Tom Tromey - - * parse.y (resolve_inner_class): Error if qualifier is a primitive - type. - -2003-03-04 Andrew Haley - - * gjavah.c (is_first_data_member): New global variable. - (print_c_decl): If it's the first data member, align it as the - superclass. - (process_file): Set is_first_data_member. - -2003-03-11 Tom Tromey - - * parse.y (resolve_field_access): Initialize class if field is - found in another static field. - * expr.c (build_class_init): Don't optimize out initialization of - implemented interface. - -2003-03-11 Andrew Haley - - * jcf-io.c (caching_stat): Initialize origsep to remove compiler - warning. - -2003-03-10 Ranjit Mathew - - * jcf-io.c (caching_stat): Account for both DIR_SEPARATOR - and DIR_SEPARATOR_2 for a target. - Correct minor typos. - - * jcf-write.c (make_class_file_name): Take both DIR_SEPARATOR - and DIR_SEPARATOR_2 for a target into account. - -2003-03-08 Neil Booth - - * lang.c (java_init): Update prototype, move code to java_post_options. - (java_post_options): Similarly. - -2003-03-05 Ranjit Mathew - - * jcf.h (COMPARE_FILENAMES): New macro similar to "strcmp" to - compare file name components depending on the case-sensitivity - or otherwise of the host file system. - - * jcf-path.c (add_entry): Use COMPARE_FILENAMES instead of - "strcmp" to compare file name components. - Use IS_DIR_SEPARATOR instead of comparing directly against - DIR_SEPARATOR. - (jcf_path_extdirs_arg): Use IS_DIR_SEPARATOR instead of - comparing directly against DIR_SEPARATOR. - -2003-03-04 Tom Tromey - - * Make-lang.in (java.tags): New target. - -2003-03-01 Roger Sayle - - * java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3. - (initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3. - -2003-03-01 Tom Tromey - - * parse.y (jdep_resolve_class): Only check deprecation if we found - a decl. - -2003-02-28 Tom Tromey - - PR java/9695: - * class.c (maybe_layout_super_class): Always pass a WFL to - do_resolve_class. - * parse.y (do_resolve_class): Updated comment to explain - parameters. - -2003-02-26 Tom Tromey - - * jcf-write.c (generate_classfile): Check whether class is - deprecated before writing attribute count. - -2003-02-25 Roger Sayle - - * java/decl.c (java_init_decl_processing): Get soft_fmod_node from - built_in_decls[BUILT_IN_FMOD] rather than define it ourselves. - -2003-02-23 Tom Tromey - - * lang-options.h: Added -Wdeprecated. - * gcj.texi (Warnings): Document -Wdeprecated. - * java-tree.h (flag_deprecated): Declare. - * lang.c (lang_W_options): Added deprecated. - (flag_deprecated): New global. - * chartables.h: Rebuilt. - * gen-table.pl (process_one): Look at whitespace. - (print_tables): Define LETTER_SPACE, LETTER_MASK. - * parse.h (CLEAR_DEPRECATED): New macro. - (CHECK_DEPRECATED_NO_RESET): New macro. - * jcf-parse.c (handle_deprecated): New function. - (HANDLE_DEPRECATED_ATTRIBUTE): New define. - * jcf-reader.c (get_attribute): Handle Deprecated attribute. - * parse.y (resolve_type_during_patch): Check deprecation. - (jdep_resolve_class): Likewise. - (process_imports): Likewise. - (resolve_expression_name): Likewise. - (check_deprecation): Strip arrays from decl. Check - flag_deprecated. - (patch_method_invocation): Also check the particular constructor - for deprecation. - (register_fields): Use CHECK_DEPRECATED_NO_RESET in loop. - * jcf-write.c (append_deprecated_attribute): New function. - (generate_classfile): Generate deprecated attribute when - appropriate. - * lex.c (java_parse_doc_section): Return type now void. Rewrote. - (java_lex) [case '*']: Simplify logic. - (java_start_char_p): Use LETTER_MASK. - (java_part_char_p): Likewise. - (java_space_char_p): New function. - -2003-02-20 Nathan Sidwell - - Change base class access representation. - * java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC. - (add_interface_do): Likewise. - -2003-02-12 Ranjit Mathew - - * decl.c (java_init_decl_processing): Change - soft_lookupjnimethod_node to reflect the change in - signature of _Jv_LookupJNIMethod in libjava/jni.cc - * expr.c (build_jni_stub): Calculate and pass the size - on the stack of the arguments to a JNI function. Use - new target macro MODIFY_JNI_METHOD_CALL to allow a - target to modify the call to a JNI method. - -2003-02-08 Roger Sayle - - * jcf-io.c (java_or_class_file): Use libiberty's lbasename - instead of basename to avoid compiler warnings on Tru64. - -2003-02-04 Joseph S. Myers - - * gcj.texi: Update to GFDL 1.2. - -2003-01-31 Andrew Haley - - * parse.y (java_expand_classes): Scan the whole class list looking - for access methods that haven't yet been expanded. - -2003-01-31 Adrian Bunk - - Fix for java/4269: - - * jv-scan.c: Use HAVE_LANGINFO_CODESET instead of HAVE_NL_LANGINFO - to fix bootstrap on sparc-unknown-netbsdelf1.5. - * jcf-parse.c: Likewise. - -2003-01-31 Mark Wielaard - - * gjavah.c (throwable_p): Allocate 1 more byte for string. - -2003-01-31 Nathan Sidwell - - * class.c (make_class): Use BINFO_ELTS. - (set_super_info): Likewse. - (add_interface_do): Likewise. - -2003-01-30 Tom Tromey - - * jcf-parse.c (read_class): Update identifier's class value if it - changed during parsing. - -2003-01-30 Loren James Rittle - - * Make-lang.in (po-generated): Find the targets in $(parsedir). - Propagate change to all other rules as required. - (java/parse-scan.o): Add explicit dependency on - $(parsedir)/java/parse-scan.c . - -2003-01-29 Tom Tromey - - * parse.y (patch_assignment): Only transform the rhs of an - assignment when compiling to native. - -2003-01-28 Tom Tromey - - * jcf-write.c (generate_bytecode_conditional): Typo fixes. - -2003-01-28 Tom Tromey - - * lex.c (java_lex): Don't include UEOF as part of token. - (java_read_unicode): Error if \u sequence prematurely terminated. - -2003-01-27 Tom Tromey - - * parse.y (java_check_regular_methods): Check for construct after - checking types in throws clause. - -2003-01-24 Tom Tromey - - * class.c (build_static_field_ref): Only a String or numeric field - can fold to a constant. - -2003-01-23 Tom Tromey - - * jcf-parse.c (parse_zip_file_entries): Overwrite trailing \0 of - file name in resource buffer. - -2003-01-23 Tom Tromey - - * expr.c (build_known_method_ref): Use method's context to find - method table index. - -2003-01-23 Tom Tromey - - * constants.c (set_constant_entry): Allocated cleared memory. - -2003-01-22 Tom Tromey - - * java-tree.h: Don't use PARAMS. - * resource.c: Add prototypes for all functions. - (write_resource_constructor): Use `const char *' to avoid - warning. - -2003-01-22 Nathanael Nerode - - * jcf-parse.c (process_zip_dir): Remove unused variable. - -2003-01-22 Tom Tromey - - * expr.c (build_invokeinterface): Abort if method's context is not - an interface. - -2003-01-22 Tom Tromey - - * gcj.texi (Input and output files): Mention non-class entries. - * decl.c (java_init_decl_processing): Call - init_resource_processing. - * java-tree.h (compile_resource_data, write_resource_constructor, - compile_resource_file, init_resource_processing): Declare. - * config-lang.in (gtfiles): Added resource.c. - * Make-lang.in (gt-java-resource.h): New target. - (JAVA_OBJS): Added resource.o. - (java/resource.o): New target. - * resource.c: New file. - * class.c (compile_resource_file): Moved to resource.c. - (registerResource_libfunc): Likewise. - (utf8_decl_list): Mark with GTY; now static. - * jcf-parse.c (classify_zip_file): New function. - (parse_zip_file_entries): Use it; compile .properties files. - (process_zip_dir): Use classify_zip_file and compute_class_name. - Don't write class name into zip directory. - (java_parse_file): Call write_resource_constructor. - (compute_class_name): New function. - * jcf-io.c (read_zip_member): Reindented. - -2003-01-21 Tom Tromey - - * class.c (supers_all_compiled): New function. - (make_class_data): Use it. - -2003-01-21 Tom Tromey - - * parse.y (method_header): Native method can't be strictfp. - No method can be transient or volatile. - -2003-01-21 Kaveh R. Ghazi - - Make-lang.in (jvspec.o-warn): Add -Wno-error. - -2003-01-18 Kazu Hirata - - * check-init.c: Fix comment typos. - * class.c: Likewise. - * constants.c: Likewise. - * decl.c: Likewise. - * except.c: Likewise. - * expr.c: Likewise. - * java-except.h: Likewise. - * java-tree.h: Likewise. - * javaop.h: Likewise. - * jcf-dump.c: Likewise. - * jcf-io.c: Likewise. - * jcf-parse.c: Likewise. - * jcf-write.c: Likewise. - * lang.c: Likewise. - * mangle.c: Likewise. - * typeck.c: Likewise. - * verify.c: Likewise. - -2003-01-18 Kaveh R. Ghazi - - * Make-lang.in (java/jcf-write.o): Depend on $(TM_P_H). - * jcf-write.c: Include "tm_p.h". - -2003-01-17 Kaveh R. Ghazi - - * jcf-io.c (caching_stat): Cast the 3rd arg of scandir to void*. - -2003-01-16 Kaveh R. Ghazi - - * builtins.c (java_build_function_call_expr): Renamed from - build_function_call_expr. All callers changed. - - * Make-lang.in (java/jcf-parse.o): Depend on $(TM_P_H). - * jcf-parse.c: Include tm_p.h. - - * jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned - warning. - -2003-01-14 Tom Tromey - - * class.c (make_class_data): Check that super is compiled before - building class reference to it. - -2003-01-14 Andrew Haley - - * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a - varargs function -- correct. - -2003-01-14 Andrew Haley - - * decl.c (java_init_decl_processing): Temporarily back out previous patch. - -2003-01-14 Andrew Haley - - * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a - varargs function -- correct. - - * parse.y (patch_assignment): Copy the rhs of an assignment into a - temporary if the RHS is a reference. - -2003-01-11 Kaveh R. Ghazi - - * Make-lang.in (keyword.h): Pass "-L ANSI-C" to gperf. - * keyword.h: Regenerated. - - * All Files: Convert to ISO C style function definitions. - -2003-01-09 Nathanael Nerode - - * parse.y (check_pkg_class_access): ANSIfy definition. - -2003-01-09 Kaveh R. Ghazi - - * decl.c, parse-scan.y, parse.y: Don't cast return value of - xmalloc et al. - - * class.c, gjavah.c, parse.y, verify.c: Don't use PTR. - -2003-01-09 Geoffrey Keating - - Merge from pch-branch: - - 2002-12-02 Geoffrey Keating - - * Make-lang.in (java/gjavah.o): Update dependencies. - * gjavah.c: Include ggc.h. - - 2002-08-16 Geoffrey Keating - - * Make-lang.in (GCJH_OBJS): Add ggc-none.o. - (JCFDUMP_OBJS): Add ggc-none.o. - (java/jcf-dump.o): Depend on GGC_H. - * jcf-reader.c (jcf_parse_constant_pool): Use ggc_alloc to allocate - CPool substructures. - * jcf-parse.c (process_zip_dir): Use ggc_alloc to allocate JCFs. - * jcf-dump.c: Include ggc.h. - - 2002-08-08 Geoffrey Keating - - * jcf.h (union cpool_entry): New. - (struct CPool): Use gengtype to mark. Change field 'data' to be - an array of unions. - (struct JCF): Use gengtype to mark. - (CPOOL_UINT): Update for new cpool_entry type. - (CPOOL_USHORT1): Likewise. - (CPOOL_USHORT2): Likewise. - (CPOOL_FINISH): Use GC to free cpool subfields. - * parse.h (struct parser_ctxt): Mark field current_jcf. - * lex.c (java_init_lex): Use GC to allocate struct JCF. - * jcf-parse.c (HANDLE_CONSTANT_Utf8): Update for new cpool_entry type. - (main_jcf): Use gengtype to mark. - (ggc_mark_jcf): Delete. - (get_constant): Update for new cpool_entry type. - (give_name_to_class): Likewise. - (get_class_constant): Likewise. - (init_outgoing_cpool): Use GGC to allocate struct CPool. - (java_parse_file): Use GGC to allocate struct JCF. - (init_jcf_parse): Don't call ggc_add_root. - * jcf-reader.c (jcf_parse_constant_pool): Update for new - cpool_entry type. - * java-tree.h (current_jcf): Use gengtype to mark. - (CPOOL_UTF): Update for new cpool_entry type. - (outgoing_cpool): Use gengtype to mark. - (struct lang_type): GC struct JCF and struct CPool. - * config-lang.in (gtfiles): Add jcf.h. - * constants.c (find_tree_constant): New. - (set_constant_entry): Allocate cpool subfields using GGC. Update - for new cpool_entry type. - (find_constant1): Update for new cpool_entry type. - (find_constant2): Likewise. - (find_utf8_constant): Use find_tree_constant. - (find_class_or_string_constant): Remove unnecessary cast to jword. - Update for new cpool_entry type. - (count_constant_pool_bytes): Update for new cpool_entry type. - (write_constant_pool): Likewise. - (alloc_name_constant): Use find_tree_constant. - (build_constants_constructor): Update for new cpool_entry type. - - 2002-08-08 Geoffrey Keating - - * parse.y (mark_parser_ctxt): Delete. - (goal): Don't use ggc_add_root. - (create_new_parser_context): Use GC to allocate struct parser_ctxt. - (java_pop_parser_context): Let GC free parser_ctxt. - (java_parser_context_resume): Likewise. - * parse.h (struct parser_ctxt): Use gengtype to mark. - (ctxp): Likewise. - (ctxp_for_generation): Likewise. - * lex.h (struct java_lc_s): Mark for gengtype. - (java_lexer): Rearrange for gengtype. - * config-lang.in (gtfiles): Add lex.h, parse.h. - -2003-01-09 Kaveh R. Ghazi - - * All Files: Remove PARAMS macro. - - * expr.c, gjavah.c, javaop.h, jcf-dump.c, jcf-io.c, jcf-reader.c, - jcf-write.c, jcf.h, jv-scan.c: Don't rely on the `DEFUN', `AND' or - `__STDC__' macros. - - * jv-scan.c, parse.y: Remove VPARAMS, VA_OPEN, VA_FIXEDARG and - VA_CLOSE. - -2003-01-09 Christian Cornelssen - - * Make-lang.in (java.install-common, java.uninstall, - java.install-info, java.install-man): Prepend $(DESTDIR) - to destination paths in all (un)installation commands. - (java.install-common): Rewrite $(LN) command to support - DESTDIR with "ln" as well as with "ln -s". - -2003-01-08 Nathanael Nerode - - * java-tree.h: Protect against multiple inclusion. - -2003-01-07 Tom Tromey - - * class.c (add_assume_compiled): Don't adjust parent if we're - already at the root of tree. - -2003-01-05 Kaveh R. Ghazi - - * lang.c (dump_compound_expr): Prototype. - -2003-01-03 Tom Tromey - - Fix for PR java/8712: - * expr.c (build_instanceof): Build an NE_EXPR, not a COND_EXPR, - when simply checking against `null'. - -2003-01-03 Tom Tromey - - * gcj.texi (Standard Properties): Document http.proxyHost and - http.proxyPort. - - * gcj.texi (GNU Classpath Properties): Document new properties. - -2003-01-02 Steven Bosscher - - * java/jcf-reader.c, java/jvgenmain.c, java/keyword.gperf, - java/lang-options.h, java/mangle.c, java/mangle_name.c, - java/xref.c, java/zextract.c,java/zipfile.h: Fix copyright years. - -2003-01-01 Steven Bosscher - - * Make-lang.in, boehm.c, buffer.c, - buffer.h, builtins.c, class.c, - config-lang.in, constants.c, - convert.h, decl.c, except.c, - expr.c, java-except.h, - java-tree.h, javaop.def, - jcf-parse.c, jcf-write.c, - jv-scan.c, jvgenmain.c, - jvspec.c, keyword.gperf, - keyword.h, lang-options.h, - lang-specs.h, lang.c, lex.c, - lex.h, mangle.c, mangle_name.c, - parse-scan.y, parse.h, parse.y, - typeck.c, verify.c, xref.c, - xref.h: Replace "GNU CC" with - "GCC" in the copyright header. - - * check-init.c, gjavah.c, javaop.h, - jcf-depend.c, jcf-dump.c, jcf-io.c, - jcf-path.c, jcf-reader.c, jcf.h, - zextract.c, zipfile.h: These files are - "part of GCC". Also say "GCC" not "GNU CC". - -2002-12-30 DJ Delorie - - * Make-lang.in: Protect against texi2pod/pod2man failing. - -2002-12-28 Joseph S. Myers - - * gcj.texi: Use @copying. - -2002-12-27 Mark Mitchell - - * gjavah.c (print_name_for_stub_or_jni): Adjust call to - print_cxx_classname. - (print_cxx_classname): Add add_scope parameter. - (print_class_decls): Do not emit a semicolon after the extern - "Java" block. - (process_file): Adjust calls to print_cxx_classname. - -2002-12-23 Joseph S. Myers - - * gcj.texi: Include Cover Texts in man page. - -2002-12-23 Jeff Sturm - - * class.c (build_static_field_ref): Check FIELD_FINAL. - - * constants.c (alloc_class_constant): Use TYPE_CPOOL_DATA_REF - instead of current_constant_pool_data_ref. - * java-tree.h (current_constant_pool_data_ref): Undefine. - (JTI_CURRENT_CONSTANT_POOL_DATA_REF): Remove. - * jcf-parse.c (init_outgoing_cpool): Don't initialize - current_constant_pool_data_ref. - - * except.c (prepare_eh_table_type ): Use DECL_NAME of class type, - not build_internal_class_name. - - * parse.y (patch_incomplete_class_ref): Always emit `class$' method. - Use it when class ref isn't certain to be compiled. - -2002-12-23 Joseph S. Myers - - * gcj.texi: Include gcc-common.texi. - * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on - $(srcdir)/doc/include/gcc-common.texi. - -2002-12-22 Anthony Green - - * gcj.texi (Limitations): Add note about org.xml.sax and - org.w3c.dom. - -2002-12-20 Tom Tromey - - * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case - where minimum case value is Integer.MIN_VALUE. - Fixes PR java/8955. - -2002-12-18 Andrew Haley - - * parse.y (patch_invoke): Force evaluation order when `check' is - set. For PR libgcj/8945. - -2002-12-16 Mark Mitchell - - * gcj.texi: Change version number to 3.4. - -2002-12-05 Ranjit Mathew - Andrew Haley - - * parse.y (source_end_java_method): Remove custom encoding of line - numbers for a function decl before passing it to the back end. - -2002-12-03 Andrew Haley - - * class.c (make_class_data): New field, "chain". - * decl.c (java_init_decl_processing): Likewise. - -2002-12-02 Tom Tromey - - For PR java/8740: - * parse.y (do_resolve_class): Handle qualified name via - recursion. - -2002-11-30 Zack Weinberg - - * boehm.c, buffer.c, builtins.c, check-init.c, class.c, - constants.c, decl.c, except.c, expr.c, gjavah.c, jcf-depend.c, - jcf-dump.c, jcf-io.c, jcf-parse.c, jcf-path.c, jcf-write.c, - jv-scan.c, jvgenmain.c, jvspec.c, lang.c, mangle.c, mangle_name.c, - parse-scan.y, parse.y, typeck.c, verify.c, xref.c, zextract.c: - Include coretypes.h and tm.h. - * Make-lang.in: Update dependencies. - -2002-11-27 Kaveh R. Ghazi - - * decl.c (java_init_decl_processing): Use `LL' on 64-bit constant. - -2002-11-25 Diego Novillo - - * jcf-reader.c: Don't expand JCF_readu4 inside the - expansion of JCF_SKIP. - -2002-11-25 Diego Novillo - - * jcf-reader.c: Don't expand JCF_readu4 inside the - expansion of JCF_SKIP. - -2002-11-22 Tom Tromey - - * parse.y (patch_binop): Cast right hand side of shift expression - to `int'. Fixes PR java/8676. - -2002-11-22 Ranjit Mathew - Andrew Haley - - * gcc/java/jcf-write.c (write_classfile): Remove target - class file, if it exists, before renaming the temporary - class file to it. - -2002-11-19 Jason Thorpe - - * jvspec.c (lang_specific_spec_functions): New. - -2002-11-18 Tom Tromey - - Fix for PR java/7912: - * expr.c (can_widen_reference_to): Allow cast of array to - Cloneable or Serializable. - * java-tree.h (java_lang_cloneable_identifier_node): Declare. - (java_io_serializable_identifier_node): Likewise. - * parse.y (java_lang_cloneable, java_io_serializable): Removed. - (valid_ref_assignconv_cast_p): Use new identifier nodes. - * lex.c (java_init_lex): Don't initialize java_lang_cloneable and - java_io_serializable. - * decl.c (java_init_decl_processing): Initialize - java_lang_cloneable_identifier_node and - java_io_serializable_identifier_node. - (java_lang_cloneable_identifier_node): New global. - (java_io_serializable_identifier_node): Likewise. - -2002-11-14 Jens-Michael Hoffmann - - * buffer.c: Remove unnecessary casts. - * check-init.c: Likewise. - * class.c: Likewise. - * constants.c: Likewise. - * decl.c: Likewise. - * except.c: Likewise. - * gjavah.c: Likewise. - * jcf-io.c: Likewise. - * jcf-parse.c: Likewise. - * jcf-path.c: Likewise. - * jvspec.c: Likewise. - * lang.c: Likewise. - * lex.c: Likewise. - * verify.c: Likewise. - -2002-11-06 Tom Tromey - - * gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in - a JNI header. - -2002-11-05 Tom Tromey - - Fix for PR java/6388. - * lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while. - * java-tree.h (enum java_tree_index): New values - JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE. - (decimal_int_max, decimal_long_max): New defines. - * lex.c (yylex): Rewrote range checking. Sign extend literals. - (error_if_numeric_overflow): Rewrote range checking. - * decl.c (java_init_decl_processing): Initialize decimal_int_max, - decimal_long_max. - -2002-11-02 Tom Tromey - - * java-tree.h: Move JV_STATE_ERROR before JV_STATE_DONE. - - * class.c (make_method_value): Put class name, not signature, into - `throws' field. For PR java/8415. - -2002-10-24 Tom Tromey - - * gcj.texi (Invoking gij): Document --showversion. - (Standard Properties): java.library.path now set. - -2002-10-23 Tom Tromey - - * gjavah.c (decode_signature_piece): In JNI mode, print - `jobjectArray' when array depth is nonzero. - Fixes PR java/8296. - -2002-10-15 Andrew Haley - - * parse.y (patch_invoke): Call force_evaluation_order on a static - arg list. - (resolve_qualified_expression_name): Call force_evaluation_order - on a arg list that is part of a Qualified Expression Name. - - * lang.c (dump_compound_expr): New. - (java_dump_tree): New. - -2002-10-20 Ranjit Mathew - - * gcj.texi: Added item describing the GCJ runtime property - "gnu.gcj.progname". - -2002-10-15 Richard Henderson - - * jcf-parse.c (get_constant): Fix type warning. - -2002-10-15 Andrew Haley - - * java-tree.h (java_inlining_merge_static_initializers): Declare. - (java_inlining_map_static_initializers): Declare. - -2002-10-14 Andrew Haley - - * tree-inline.c (remap_block): All local class initialization - flags go in the outermost scope. - (expand_call_inline): Call java_inlining_map_static_initializers. - (expand_call_inline): Call java_inlining_merge_static_initializers. - * java/lang.c (merge_init_test_initialization): New. - (java_inlining_merge_static_initializers): New. - (inline_init_test_initialization): New. - (java_inlining_map_static_initializers): New. - -2002-10-11 Mark Wielaard - - * gcj.texi (Compatibility): Add Limitations and Extensions section. - -2002-10-10 Kaveh R. Ghazi - - * class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer. - -2002-10-09 Kaveh R. Ghazi - - * parse.y (merge_string_cste): Add parentheses around & within |. - -2002-10-08 Tom Tromey - - * parse.y (variable_declarator_id): Simplify error path for - array declarator error. For PR java/8003. - -2002-10-08 Zack Weinberg - - * gjavah.c, jcf-dump.c, jv-scan.c: Globally replace GCCBUGURL with - bug_report_url. - -2002-10-08 Andrew Haley - - * parse.y (attach_init_test_initialization_flags): Check for - error_mark_node. - -2002-10-07 Anthony Green - - * parse.y (merge_string_cste): Fix bug in string concatenation. - -2002-10-03 Michael Koch - - * gcj.texi (Standard properties): - Change default of java.awt.toolkit to gnu.awt.gtk.GtkToolkit. - -2002-10-02 Roger Sayle - - PR optimization/6627 - * lang.c (java_init): If storing the vbit in function - pointers, ensure that force_align_functions_log is atleast - one to aid compatability with g++ vtables. - -2002-10-01 Nathan Sidwell - - * jcf-dump.c (print_constant, case CONSTANT_float): Don't fall - foul of type-based aliasing. - -2002-09-30 Anthony Green - - * gcj.texi (Invoking jv-scan): Fix texinfo. - -2002-09-28 Anthony Green - - * gcj.texi (Invoking jv-scan): Add --no-assert documentation. - (Code Generation): Add -fno-assert documentation. - * jv-scan.c (flag_assert): New global. - (options): Add assert option. - (help): Add --no-assert documentation. - * parse-scan.y (flag_assert): New global. - * lang.c (lang_f_options): Add -fassert/-fno-assert support. - (flag_assert): New global. - * java-tree.h (flag_assert): New global. - * lex.c (java_lex): Obey flag_assert. - * jvspec.c (jvgenmain_spec): Strip -fassert/-fno-assert when - calling cc1. - -2002-09-26 Andrew Haley - - * expr.c (build_java_array_length_access): Check for null pointer. - * expr.c (expand_java_arrayload): Likewise. - -2002-09-21 Richard Henderson - - * jcf-parse.c (get_constant): Decode from IEEE no matter - what the target format. - -2002-09-20 Kazu Hirata - - * ChangeLog: Follow spelling conventions. - * class.c: Likewise. - * decl.c: Likewise. - * expr.c: Likewise. - * gjavah.c: Likewise. - * java-tree.h: Likewise. - * jcf-dump.c: Likewise. - * jcf-parse.c: Likewise. - * jvspec.c: Likewise. - * lang.c: Likewise. - * mangle.c: Likewise. - * parse.y: Likewise. - -2002-09-17 Tom Tromey - - * lex.c (java_read_unicode_collapsing_terminators): Handle case - where \r appears at EOF. Fixes PR java/7950. - -2002-09-16 Volker Reichelt - - * jvspec.c (lang_specific_driver): Remove unused variable. - -2002-09-16 Geoffrey Keating - - * java-tree.h (union lang_tree_node): Add chain_next option. - -2002-09-16 Richard Henderson - - * jcf-parse.c (get_constant): Runtime check for IEEE format; - use new real.h interface. - * jcf-write.c (find_constant_index): Use new real.h interface. - * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL. - -2002-09-15 Kazu Hirata - - * lang.c: Follow spelling conventions. - -2002-09-11 Per Bothner - - * parse.y (fold_constant_for_init): If a VAR_DECL, convert numerical - constant to the type of the field. - (java_complete_tree): Remove now-redundant code. - - * parse.y (fold_constant_for_init): 'null' is not a constant expr. - -2002-09-03 Jesse Rosenstock - - For PR java/5794: - * verify.c (verify_jvm_instructions) [OPCODE_jsr]: Only push the - return label if a ret instruction for the jsr has been reached. - -2002-09-09 Ranjit Mathew - - * parse.y (DIR_SEPARATOR): Don't define. - (check_class_interface_creation): Use IS_DIR_SEPARATOR. - -2002-08-28 Andrew Haley - - * verify.c (verify_jvm_instructions): Allow exception handler - inside code that is being protected, but generate a warning. - * except.c (link_handler): Initialize `expanded' in new eh_range. - (binding_depth, is_class_level, current_pc): Declare extern. - -2002-09-01 Mark Wielaard - - * gcj.texi: Add chapter about system properties. - Fixed some typos. - -2002-08-26 Tom Tromey - - * parse.y (try_builtin_assignconv): Allow narrowing primitive - conversion if RHS_TYPE is byte, short, or char. - -2002-08-22 Tom Tromey - - * gcj.texi (Invoking gij): Document -cp and -classpath. - -2002-08-21 Tom Tromey - - * Make-lang.in (java/jcf-path.o): Use $(datadir), not - $(prefix)/share. For PR libgcj/7633. - - For PR java/6005 and PR java/7611: - * lang.c (LANG_HOOKS_CAN_USE_BITFIELDS_P): New define. - (java_can_use_bit_fields_p): New function. - -2002-08-16 Tom Tromey - - * gcj.texi (Class Initialization): Mention class initialization of - arrays. - -2002-07-30 Andrew Haley - - * Make-lang.in (java-tree-inline.o): New. - (JAVA_OBJS): Add java-tree-inline.o. - * parse.y (source_end_java_method): Call java_optimize_inline. - (java_expand_method_bodies): Save method's tree in - DECL_SAVED_TREE. - (add_stmt_to_compound): Keep track of the number of statments. - * lang.c (java_init): Enable flag_inline_trees. - (java_post_options): If flag_inline_functions is on, enable - flag_inline_trees instread. - (decl_constant_value): New. - (java_tree_inlining_walk_subtrees): New. - * java-tree.h (DECL_NUM_STMTS): New macro. - (java_optimize_inline): Declare. - * expr.c (java_expand_expr): Allow a BLOCK to return a value. - Handle a LABEL_EXPR. - * decl.c (build_result_decl): If we already have a DECL_RESULT - don't make another. - (dump_function): New. - (java_optimize_inline): New. - (dump_function): New. - -2002-08-13 Jesse Rosenstock - - For PR java/7483: - * parse.y (build_assertion): Invert return from - desiredAssertionStatus. - -2002-08-08 Bryce McKinlay - - * jcf-write.c (get_access_flags): Return correct access flags for - private and protected inner classes. - -2002-08-08 Nathan Sidwell - - * java/Make-lang.in (java.mostlyclean): Remove coverage files. - -2002-08-05 Geoffrey Keating - - * mangle_name.c: Don't include obstack.h twice. - * xref.c: Don't include obstack.h. - -2002-08-04 Geoffrey Keating - - * class.c: (permanent_obstack): Delete declaration. - * constants.c: (permanent_obstack): Delete declaration. - * except.c: (permanent_obstack): Delete declaration. - * expr.c: (permanent_obstack): Delete declaration. - * jcf-parse.c: (permanent_obstack): Delete declaration. - (saveable_obstack): Delete declaration. - * parse.h: (permanent_obstack): Delete declaration. - * typeck.c: (permanent_obstack): Delete declaration. - -2002-08-04 Joseph S. Myers - - * gcj.texi (version-gcc): Increase to 3.3. - -2002-07-22 Tom Tromey - - * lex.c (java_lex): Check for `e' or `E' after 0. - -2002-07-21 Richard Henderson - - * lang.c (java_unsafe_for_reeval): New. - (LANG_HOOKS_UNSAFE_FOR_REEVAL): New. - -2002-07-21 Neil Booth - - * jcf-path.c (GET_ENV_PATH_LIST): Remove. - (jcf_path_init): Use GET_ENVIRONMENT. - -2002-07-10 Roger Sayle - Zack Weinberg - - * builtins.c (initialize_builtins): Remove defines that - handled C/C++ specific junk hereby removed from builtins.def. - -2002-07-07 Neil Booth - - * lang.c (java_post_options): Update prototype. - -2002-07-05 Roger Sayle - - * builtins.c (initialize_builtins): Ignore the additional - parameter to DEF_BUILTIN. Handle more C/C++ specific junk in - the builtins.def file. - -2002-07-01 Tom Tromey - - For PR libgcj/7073: - * parse.y (patch_incomplete_class_ref): Handle VOID_TYPE - specially. - -2002-07-01 Roger Sayle - - * java/decl.c (builtin_function): Accept additional parameter. - (java_init_decl_processing): Pass an additional NULL_TREE - argument to builtin_function. - -2002-06-29 T.J. Mather - - * gcj.texi: Fixed gcj invocation example so that it compiles. - -2002-06-26 Kaveh R. Ghazi - - * lex.c (java_init_lex): Avoid incorrect hardcoded constant 11. - * parse.y (mark_parser_ctxt): Likewise. - (check_modifiers, declare_local_variables): Avoid incorrect - hardcoded constant 10. - - * lex.c (java_read_char): Avoid "comparison is always true" - warning. - -2002-06-25 Andreas Schwab - - * expr.c (JSR): Avoid undefined operation on PC. - -2002-06-21 Kaveh R. Ghazi - - * decl.c (clear_binding_level): Const-ify. - -2002-06-13 Akim Demaille - - * parse.y (class_declaration, interface_declaration): Make sure - all their rules have an action, in order to avoid meaningless `$$ - = $1' and their type clashes. - -2002-06-11 Tom Tromey - - * jcf-write.c (generate_classfile): Use FIELD_SYNTHETIC. - * parse-scan.y (statement_without_trailing_substatement): Added - assert_statement. - (assert_statement): New rule. - * java-tree.h (struct lang_type) [assertions]: New field. - (TYPE_USES_ASSERTIONS): New macro. - (CLASS_USES_ASSERTIONS): Likewise. - (FIELD_SYNTHETIC): New define. - * lex.c (java_lval;): Added ASSERT_TK. - * parse.y (ASSERT_TK): Added. - (statement_without_trailing_substatement): Added assert_statement. - (assert_statement): New rule. - (build_assertion): New function. - (maybe_generate_pre_expand_clinit): Create and initialize - $assertionsDisabled. - (lookup_package_type): Removed decl. - * keyword.h: Rebuilt. - * keyword.gperf (assert): New token. - -2002-06-10 Akim Demaille - - * parse.y (interface_type_list, class_member_declaration) - (unary_expression_not_plus_minus): Remove duplicate %type. - Whitespace changes. - -2002-06-09 Tom Tromey - - * Make-lang.in (java/lang.o): Use LANGHOOKS_DEF_H. - - * parse.y (method_header): Give error message in all cases. - Fixes PR java/6865. - -2002-06-10 Bryce McKinlay - - Don't use RTL inlining. Fix for PR java/6820. - * lang.c (LANG_HOOKS_POST_OPTIONS): Define. - (flag_really_inline): New. - (java_decode_option): Set flag_really_inline if -finline-functions - is seen. - (java_post_options): New function. Turn off inlining unless - flag_really_inline is set. - -2002-06-10 Bryce McKinlay - - * gjavah.c (throwable_p): Accept argument as either a classname or - signature fragment. Create null-terminated classname string for super - when calling itself recursively. - (decode_signature_piece): Skip first character from class name - signature when calling throwable_p. - -2002-06-08 H.J. Lu (hjl@gnu.org) - - * jcf-path.c (jcf_path_init): Allocate 1 more byte for string. - -2002-06-04 Tom Tromey - - * jcf-write.c (perform_relocations): Optmize a goto to a goto. - -2002-06-04 Michael Koch - - * gcj.texi (Input Options): Fixed typo. - -2002-06-04 Zack Weinberg - - * java-tree.h, class.c, expr.c, jcf-parse.c, parse.y, - typeck.c, verify.c: Remove all #if JAVA_USE_HANDLES blocks, - all mention of CLASS_TO_HANDLE_TYPE or HANDLE_TO_CLASS_TYPE, - and all now-pointless local variables. Rename other local - variables to reflect their not being handles. - - * java-tree.h, jcf-dump.c, jcf-io.c: Remove all - #if JCF_USE_STDIO blocks. - - * parse.y: Add missing semicolon at end of rule. - -2002-06-03 Geoffrey Keating - - * check-init.c (attach_initialized_static_class): Delete, unused. - * parse.y: Use htab_t instead of struct hashtable, update - all uses. - * java-tree.h: Include hashtab.h instead of hash.h. - (struct lang_decl_func): Use htab_t, set up for gengtype. - (struct init_test_hash_entry): Delete. - (struct treetreehash_entry): New. - (java_treetreehash_find): New - (java_treetreehash_new): New prototype. - (java_treetreehash_create): New prototype. - (java_mark_tree): Delete prototype. - (java_hash_hash_tree_node): Delete prototype. - (java_hash_compare_tree_node): Delete prototype. - (attach_initialized_static_class): Delete prototype. - * expr.c (build_class_init): Update to use java_treetreehash - functions. - (java_expand_expr): Update to use htab_t. - (emit_init_test_initialization): Likewise. - * decl.c (java_mark_tree): Delete. - * class.c (init_test_hash_newfunc): Delete. - (java_hash_hash_tree_node): Delete. - (java_hash_compare_tree_node): Delete. - (add_method_1): Update to use java_treetreehash functions. - (JAVA_TREEHASHHASH_H): New macro. - (java_treetreehash_hash): New function. - (java_treetreehash_compare): New function. - (java_treetreehash_find): New function. - (java_treetreehash_new): New function. - (java_treetreehash_create): New function. - * Make-lang.in (JAVA_TREE_H): Replace hash.h by HASHTAB_H. - - * Make-lang.in (java/parse.o): Depend on debug.h. - * java-tree.h (struct lang_identifier): Use gengtype. - (union lang_tree_node): New. - (struct lang_decl_func): Use gengtype. - (struct lang_decl_var): Likewise. - (struct lang_decl): Likewise. - * parse.y: Include debug.h. - * lang.c (LANG_HOOKS_MARK_TREE): Delete. - - * lang.c (struct language_function): New dummy structure. - - * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Set - descriminator for DECL_LANG_SPECIFIC. - (struct lang_decl_func): Rename from struct lang_decl. - (enum lang_decl_desc): New. - (struct lang_decl): Make it a union. Update all the accessor macros. - (struct lang_type): Use gengtype. - * class.c (add_method_1): Set descriminator for DECL_LANG_SPECIFIC. - * decl.c (java_dup_lang_specific_decl): All lang_decl structures - are now the same size. - (lang_mark_tree): Use gengtype to mark TYPE_LANG_SPECIFIC; - use discriminator to mark DECL_LANG_SPECIFIC. - - * Make-lang.in (gt-java-builtins.h): New rule. - (java/builtins.o): Add dependency on gt-.h. - * builtins.c: Use gengtype for roots. - (union string_or_tree): Use gengtype. - (struct builtin_record): Use gengtype. - * config-lang.in (gtfiles): Add builtins.c. - - * Make-lang.in (gt-java-class.h, gt-java-constants.h, - gt-java-decl.h, gt-java-expr.h, gt-java-jcf-parse.h, - gt-java-jcf-write.h, gt-java-lang.h, gt-java-mangle.h, - gt-java-parse.h, gtype-java.h): Add rules to generate. - (parse.o): Add dependency on gt-java-parse.h, gt-java.h. - (class.o): Add dependency on gt-*.h. - (constants.o): Likewise. - (decl.o): Likewise. - (expr.o): Likewise. - (jcf-parse.o): Likewise. - (jcf-write.o): Likewise. - (lang.o): Likewise. - * config-lang.in (gtfiles): New. - * class.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. - * constants.c: Replace uses of ggc_add_* with GTY markers. - Include gt-*.h. - * decl.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. - * expr.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. - * java-tree.h: Replace uses of ggc_add_* with GTY markers. - * jcf-parse.c: Replace uses of ggc_add_* with GTY markers. - Include gt-*.h. - * jcf-write.c: Replace uses of ggc_add_* with GTY markers. - Include gt-*.h. - * lang.c: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. - * mangle.c: Replace uses of ggc_add_* with GTY markers. Include - gt-*.h. - * parse.y: Replace uses of ggc_add_* with GTY markers. Include gt-*.h. - Include gtype-java.h. - -2002-06-02 Tom Tromey - - Fix for PR java/5913: - * parse.y (patch_binop): Call patch_string on op1. - -2002-06-02 Tom Tromey - - Fix for PR java/1343, PR java/6336: - * parse.y (make_nested_class_name): Remove extraneous `else'; fix - formatting. Changed return type. - (anonymous_class_counter): Moved to top of file. - (maybe_make_nested_class_name): Append number to class name for - function-local classes. - -2002-05-28 Zack Weinberg - - * decl.c, jcf-parse.c, parse.y, typeck.c: Include real.h. - * Make-lang.in: Update dependency lists. - -2002-05-18 Mark Mitchell - - * gjavah.c (throwable_p): Do not free the name of the class after - passing it to find_class. - * java-tree.h (CLASS_BEING_LAIDOUT): Remove duplicate definition. - * jcf-io.c (dirent.h): Include it. - (fnmatch.h): Likewise. - (compare_path): New function. - (java_or_class_file): Likewise. - (memoized_dirlist_entry): New type. - (memoized_dirlist_lookup_eq): New function. - (memoized_dirlists): New variable. - (caching_stat): New function. - (memoized_class_lookup_eq): New function. - (memoized_class_lookups): Likewise. - (find_class): Use memoized_class_lookups and caching_stat. - * jcf.h (JCF_USE_SCANDIR): Define. - * parse.y (java_expand_classes): Write the class files in reverse - order. - -2002-05-16 Rainer Orth - - * Make-lang.in: Allow for PWDCMD to override hardcoded pwd. - -2002-05-13 Mark Mitchell - - * jcf-write.c (write_classfile): Unlink the temporary file if it - cannot be renamed. Use concat to build up the name of the - temporary file. - -2002-05-08 Mark Mitchell - - * jcf-write.c (write_classfile): Write the file to a - temporary file and then rename it. - -2002-05-07 Tom Tromey - - * gjavah.c (throwable_p): Use xstrdup, not strdup. - - Fix for PR java/1200: - * gjavah.c (throwable_p): New function. - (decode_signature_piece): Use it. A `WeakReference' isn't the - same as a `jweak'. - Include hashtab.h. - (gcjh_streq): New function. - -2002-05-07 Andreas Jaeger - - * parse.y (finish_for_loop): Fix if statement. - -2002-05-06 Tom Tromey - - Fix for PR java/5941: - * parse.y (finish_for_loop): Set SUPPRESS_UNREACHABLE_ERROR for - loop update expression. - (java_complete_lhs): Use SUPPRESS_UNREACHABLE_ERROR. - * java-tree.h (SUPPRESS_UNREACHABLE_ERROR): New macro. - -2002-05-04 Mark Wielaard - - For PR java/6519: - * parse.y (build_string_concatenation): Return just op1 only when op2 - is null and op1 is a STRING_CST, otherwise always construct a - StringBuffer. - -2002-04-27 Tom Tromey - - For PR java/6382: - * parse.y (string_convert_int_cst): New function. - (merge_string_cste): Use it. - -2002-04-25 Neil Booth - - * java-tree.h (java_parse_file): Update. - (java_set_yydebug): Remove. - * jcf-parse.c (yydebug): Remove. - (java_set_yydebug): Die. - (java_parse_file): Update. - * lang.c (LANG_HOOKS_SET_YYDEBUG): Remove. - -2002-04-24 Tom Tromey - - For PR java/6425: - * parse.y (qualify_ambiguous_name) [case CALL_EXPR]: Always choose - EXPR_WFL_QUALIFICATION of qual_wfl. - -2002-04-23 Per Bothner - - * expr.c (PRE_JSR): Call NOTE_LABEL for return address. - * java-tree.h (BCODE_RETURN_TARGET): Removed - never set. - (BCODE_TARGET): Remove BCODE_RETURN_TARGET. - -2002-04-23 Tom Tromey - - For PR java/6314: - * jvspec.c (lang_specific_driver): Use --resource, not -R. Also - recognize `-fcompile-resource='. - * gcj.texi (Invoking gcj): Use --resource, not -R. Expanded text - a bit. - -2002-04-22 Alexandre Petit-Bianco - - * jcf-parse.c: (yyparse): Don't prepend "./" to relative - paths. Fixes PR java/2791. - -2002-04-19 Andrew Haley - - * jcf-write.c (push_long_const): lo, hi: New variables. - Use rshift_double to extract the high part of a 64-bit long. - Use WORD_TO_INT to extract the low part. - - * jcf-parse.c (get_constant): CONSTANT_Integer: Use an unsigned - HOST_WIDE_INT for num. Use JPOOL_UINT to get it. - CONSTANT_Double: Use JPOOL_UINT to get both halve of a double. - -2002-04-18 Neil Booth - - * typeck.c (incomplete_type_error): Remove. - -2002-04-18 Bryce McKinlay - - * class.c (make_class_data): Set DECL_ALIGN on static class data, - for hash synchronization. - * expr.c (java_expand_expr): Set DECL_ALIGN on static array objects. - * decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for - class_type_node. - -2002-04-16 Mark Wielaard - - * jcf-write.c (generate_bytecode_insns): Only write const_0 if not - negative zero. - -2002-04-16 Bryce McKinlay - - Fix for PR java/6294: - * parse.h (INNER_INTERFACE_MODIFIERS): Allow ACC_PRIVATE for inner - interfaces. - -2002-04-15 Bryce McKinlay - - Fix for PR java/6085: - * parse.y (patch_method_invocation): Always use build_access_to_thisn - to get enclosing "this" argument for inner-class constructor - invocation. Pass correct arguments to build_access_to_thisn. - -2002-04-10 Andreas Jaeger - - * gcj.texi (Input Options): Fix extdirs patch. - -2002-04-10 Anthony Green - - * jcf-path.c (jcf_path_init) : Clean up local extdirs declaration. - -2002-04-09 Anthony Green - - * gcj.texi (Input Options): Add --extdirs documentation. - * jcf-dump.c (OPT_extdirs): New macro. - (options): Add extdirs option. - (help): Describe --extdirs. - (main): Handle OPT_extdirs. - * gjavah.c (OPT_extdirs): New macro. - (options): Add extdirs option. - (help): Describe --extdirs. - (main): Handle OPT_extdirs. - * jcf-path.c (jcf_path_init): Add extdirs support. - (jcf_path_extdirs_arg): New function. - (extensions): New variable to hold extensions path entries. - * jvspec.c: Remove -fextdirs= when compiling main(). - * lang.c (java_decode_option): Handle -fextdirs=. - * jcf.h (jcf_path_extdirs_arg): Declare new function. - * Make-lang.in: Compile jcf-path with version info for use in - identifying the appropriate libgcj.jar. - -2002-04-08 Tom Tromey - - For PR libgcj/5303: - * .cvsignore: Added rmic.1 and rmiregistry.1. - * gcj.texi (Top): Link to new nodes. - (Invoking rmic): New node. - (Invoking rmiregistry): Likewise. - * Make-lang.in (java.generated-manpages): Added rmic.1 and - rmiregistry.1. - (java.maintainer-clean): Likewise. - ($(srcdir)/java/rmic.1): New target. - ($(srcdir)/java/rmiregistry.1): Likewise. - (java.install-man): Handle rmic.1 and rmiregistry.1. - -2002-04-08 Bryce McKinlay - - * gcj.texi (Invocation): Update JvAttachCurrentThread documentation. - Add note about handling uncaught exceptions. Add an exception handler - to example. - -2002-04-08 Bryce McKinlay - - * parse.y (resolve_qualified_expression_name): Clear "from_super" flag - after using it to patch CALL_EXPR. - -2002-04-08 Bryce McKinlay - - * gcj.texi (Invocation): Document CNI invocation API. - -2002-04-04 Neil Booth - - * expr.c (truthvalue_conversion): Rename. Update. - (expand_compare): Update. - * java-tree.h (java_truthvalue_conversion): New. - * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine. - -2002-04-01 Neil Booth - - * java-tree.h (java_mark_addressable): New. - * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine. - * typeck.c (mark_addressable): Rename, update. - -2002-04-01 Neil Booth - - * expr.c (build_java_binop): Update. - * java-tree.h (java_signed_type, java_unsigned_type, - java_signed_or_unsigned_type): Update. - * lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE, - LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New. - * parse.y (patch_binop): Update. - * typeck.c (signed_or_unsigned_type, unsigned_type, - signed_type): Update. - -2002-03-31 Neil Booth - - * lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine. - (java_dummy_print): Remove. - (lang_print_error): Rename. Exit early if inhibiting output. - (inhibit_error_printing_function): New. - (java_init): Don't set hook. - (lang_init_source): Use new boolean. - -2002-03-29 Martin Kahlert - - * parse.y (do_resolve_class): Fix infinite recursion. - -2002-03-29 Tom Tromey - - * parse.y (check_inner_circular_reference): Ignore incomplete - types. - -2002-03-29 Neil Booth - - * Make-lang.in (builtins.o): Update. - * boehm.c (get_boehm_type_descriptor): Update. - * builtins.c: Include langhooks.h. - * decl.c (java_init_decl_processing): Update. - * java-tree.h (java_type_for_mode, java_type_for_size): New. - * lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE): - Redefine. - * typeck.c (type_for_mode, type_for_size): Update. - -2002-03-29 Martin Kahlert - - * lex.c (java_new_lexer): Alias "646" to DEFAULT_ENCODING. - -2002-03-28 Tom Tromey - - * except.c (expand_end_java_handler): If the handler type is NULL, - use java.lang.Throwable. Fixes PR java/5986. - -2002-03-28 Alexandre Petit-Bianco - - Fix for PR java/4715: - * jcf-parse.c (parse_source_file_3): New function. - (read_class): Call it. - (java_parse_file): Likewise. - -2002-03-28 Jan Hubicka - - * java/lang.c (java_init_options): Set flag_trapping_math to 0. - -2002-03-28 Bryce McKinlay - - * parse.y (resolve_package): Initialize "decl". - (lookup_package_type): Remove unused function. - -2002-03-28 Bryce McKinlay - - Fix for PR java/5993: - * parse.y (resolve_package): Return the decl if resolution was - successful. Don't special case "java.lang" and "java.lang.reflect" - packages. Set type_name to the merged identifier. - (resolved_qualified_expression_name): Print error using "name" if - resolve_package returns NULL_TREE. - -2002-03-27 Tom Tromey - - * expr.c (expand_invoke): Don't generate null pointer check if - we're calling . - -2002-03-27 Neil Booth - - * expr.c (java_lang_expand_expr): Rename java_expand_expr, - fix prototype. - * java-tree.h (java_lang_expand_expr): Similarly. - * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine. - (java_init): Don't set hook. - -2002-03-27 Bryce McKinlay - - Fix for PR java/5850: - * parse.y (lookup_field_wrapper): Call itself recursively for enclosing - context if field was not found in the current scope. - * expr.c (lookup_field): Don't look in enclosing contexts. - -2002-03-26 Tom Tromey - - Fix for PR java/5942: - * parse.y (init_src_parse): Added sanity check. - * parse.h (struct parser_ctxt) [modifier_ctx]: Array has 12 - elements, not 11. - -2002-03-26 Neil Booth - - * decl.c (lang_mark_tree): Rename java_mark_tree. - * java-tree.h (java_mark_tree): New. - * java-lang.c (LANG_HOOKS_MARK_TREE): Redefine. - -2002-03-25 Zack Weinberg - - * lex.c: Change java_perform_atof to take normal parameters - instead of a pointer to a parameter block. Call it directly - from java_lex. - -2002-03-22 Mark Wielaard - - Fix for PR java/5368: - * parse.y (resolve_qualified_expression_name): Use decl not field_decl - when printing error message. - -2002-03-25 Neil Booth - - * decl.c (maybe_build_cleanup): Remove. - -2002-03-22 Tom Tromey - - Andrew Haley - - * expr.c (build_field_ref): Don't build a check if the field is a - member of `this'. - -2002-03-21 Eric Blake - - Fix for PR java/6026: - * lex.c (java_lex): Fix parsing of consecutive floats. - -2002-03-21 Tom Tromey - - * parse.y (build_access_to_thisn): Stop when FROM is not an inner - class. - -2002-03-21 Neil Booth - - * cp-tree.h (pushdecl, pushlevel, poplevel, set_block, - insert_block, getdecls, kept_level_p, global_bindings_p): New. - -2002-03-20 Nic Ferrier - - * gcj.texi: @code{gcj} becomes @command{gcj}. - @code{gcc} becomes @command{gcc}. - GcjRaw changed to gnu.gcc.RawData. - -2002-03-20 Neil Booth - - * decl.c (start_java_method): Use new hook. - * lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine. - (java_init): Remove old hook. - -2002-03-18 Alexandre Petit-Bianco - - * builtins.c (define_builtin): Do nothing if `type' is null. - Fixes PR java/5876. - -2002-03-18 Bryce McKinlay - - * parse.y (parser_check_super_interface): Fix error message - grammar/order. - -2002-03-17 Kaveh R. Ghazi - - * jcf-parse.c (get_constant): Delete unused variables. - -2002-03-17 Neil Booth - - * java-tree.h (java_parse_file): New. - * jcf-parse.c (yyparse): Rename java_parse_file. - * lang.c (LANG_HOOKS_PARSE_FILE): Redefine. - -2002-03-16 Bryce McKinlay - - * parse.y (craft_constructor): Return the constructor decl. - (java_expand_classes): Update comments. - (lookup_method_invoke): Call fix_constructors immediately for - anonymous class. Fixes PR java/5935. - -2002-03-15 Anthony Green - - * jcf-parse.c (yyparse): Don't emit class registration - constructor when compiling resource files. - -2002-03-12 Kaveh R. Ghazi - - * lang.c (java_tree_code_type, java_tree_code_length, - tree_code_name): Delete. - (tree_code_type, tree_code_length, tree_code_name): Define. - (java_init): Don't try to copy into the various tree_code - arrays. - -2002-03-12 Tom Tromey - - * jcf-parse.c (get_constant) [CONSTANT_String]: String values are - UTF-8, not UCS-2. Fixes PR java/5923. - - * parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is - a call_expr wrapped in a convert. Fixes PR java/5848. - -2002-03-12 Bryce McKinlay - - * jcf-write.c (write_classfile): Improve error strings. - -2002-03-11 Eric Blake - - * lex.c: Adjust comments to GNU standards. - -2002-03-11 Eric Blake - - Fix for PR java/5902: - * lex.c (java_lex): Fix parsing of literals. - -2002-03-11 Bryce McKinlay - - * parse.y (patch_assignment): Wrap the right-hand-side with a save_expr - to prevent it getting evaluated twice in the store checking case. - * expr.c (build_java_arraystore_check): Unwrap SAVE_EXPR's when - examining OBJECT. - -2002-03-09 Bryce McKinlay - - * decl.c (java_init_decl_processing): Make sure class_type_node - alignment is not less than 64 bits if hash synchronization is enabled. - -2002-03-08 Per Bothner - - * parse.y (java_complete_lhs): Check if patch_assignment - returned an error-mark. - - * parse.y (try_builtin_assignconv): Don't special-case zero. - -2002-03-08 Per Bothner - - Fix for PR java/5812. - * expr.c (build_java_jsr): Take pc arguments, and do lookup_label - here instead of in JSR macro. Likewise with load_type_state call. - Do the latter on if the return_pc has been verified (the jsr returns). - (JSR): Now just call build_java_jsr. - -2002-03-07 Jeff Sturm - - * java/Make-lang.in (JAVA_TARGET_INSTALL_NAME): Define. - (java.install-common): Link native driver to - JAVA_TARGET_INSTALL_NAME. - -2002-03-05 David Billinghurst - - * builtins.c(cos_builtin): method_return_type ATTRIBUTE_UNUSED - * builtins.c(sin_builtin): Likewise - * builtins.c(sqrt_builtin): Likewise - -2002-03-03 Zack Weinberg - - * java/expr.c, java/jcf-parse.c, java/lex.c: - Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef - REAL_ARITHMETIC blocks unconditional. Delete some further - #ifdef blocks predicated on REAL_ARITHMETIC. - -2002-03-03 Kaveh R. Ghazi - - * class.c (init_class_processing): Use ARRAY_SIZE in lieu of - explicit sizeof/sizeof. - * decl.c (java_init_decl_processing): Likewise. - * jcf-parse.c (init_jcf_parse): Likewise. - * parse.y (init_src_parse): Likewise. - -2002-03-02 Per Bothner - - Make --CLASSPATH by a synonym for --classpath and -classpath. - Implement --bootclasspath. - * jcf-path.c (classpath_u): Rename static variable to classpath_user. - (classpath_l): Remove. - (jcf_path_CLASSPATH_arg): Remove. - (jcf_path_bootclasspath_arg): New function. - (jcf_path_seal): Simplify accordingly. - - * jcf.h (jcf_path_bootclasspath_arg): New declarations. - (jcf_path_CLASSPATH): Remove declaration. - * jvspec.c (jvgenmain_spec): Also accept -fbootclasspath*. - (lang_specific_driver): Translate -bootclasspath. - * lang-options.h: Add --bootclasspath. Update --CLASSPATH. - * lang.c (decode_lang_options): Do jcf_path_init first. - Handle -fCLASSPATH same as -fclasspath. Also process -fbootclasspath. - * gjavah.c: Also handle --bootclasspath. - Handle --CLASSPATH as a synonum for --classpath. - * jcf-dump.c: Likewise. - - "." is not part of system path, but is the default for --classpath. - * jcf-path.c (jcf_path_init): Don't add "." to sys_dirs. - (jcf_path_seal): Add "." if no CLASSPATH specified. - - * gcj.texi: Document changes. - -2002-03-01 Bryce McKinlay - - * expr.c (build_java_arraystore_check): Fix formatting. - -2002-02-28 Alexandre Petit-Bianco - - Fix for PR java/5758, java/5632: - * jcf-parse.c (load_class): Renamed local variable, consider `.' an - inner-class separator too. - * parse.y (do_resolve_class): New local `decl_result.' - Progressively build a name for what can have been loaded. - -2002-02-28 Bryce McKinlay - - * expr.c (java_array_data_offset): Removed function. - (JAVA_ARRAY_LENGTH_OFFSET): Removed macro. - (build_java_array_length_access): Obtain "length" value using a - COMPONENT_REF, instead of INDIRECT_REF and arithmetic. - (build_java_arrayaccess): Correct comment. Access "data" using a - COMPONENT_REF, and return an ARRAY_REF instead of an INDIRECT_REF. - (build_java_arraystore_check): New function. - (expand_java_arraystore): Use build_java_arraystore_check. - * parse.y (patch_assignment): Simplify code to insert a store check - when lvalue is an ARRAY_REF. Use build_java_arraystore_check. - * check-init.c (check_init): Update to reflect that an array length - access is now a COMPONENT_REF. - * gcj.texi (Code Generation): Improve documentation of - -fno-bounds-check. Add documentation for -fno-store-check. - * java-tree.h (flag_store_check): Declare. - (build_java_arraystore_check): Declare. - * lang.c (flag_store_check): Initialize to 1. - (lang_f_options): Add store-check option. - * jvspec.c: Don't pass store-check option to jvgenmain. - * lang-options.h: Add help string for -fno-store-check. - -2002-02-28 Neil Booth - - * decl.c (copy_lang_decl): Rename java_dup_lang_specific_decl. - * java-tree.h (java_dup_lang_specific_decl): New. - * lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine. - -2002-02-27 Zack Weinberg - - * builtins.c, decl.c: Delete traditional-mode-related code - copied from the C front end but not used, or used only to - permit the compiler to link. - -2002-02-22 Tom Tromey - - Fix for PR java/2369: - * jvspec.c (verify_class_name): New function. - (lang_specific_driver): Call it. - (JAVA_START_CHAR_P): New macro. - (JAVA_PART_CHAR_P): Likewise. - -2002-02-22 Per Bothner - - * class.c: Change vtable to be more compatible with g++ v3 abi. - (get_dispatch_table): Prepend offset-to-top (always 0) and - type_info pointer (currently unimplemented hence NULL) to vtable. - Specifically, prepend offset-to-top and typeinfo ptr (currently null). - (make_class_data): Variable dtable_start_offset is sizeof 2 pointers. - Adjust vtable pointers by dtable_start_offse - i.e. skip new words. - (build_dtable_decl): Add declarations for new fields. - -2002-02-20 Per Bothner - - * parse.y (patch_method_invocation): Set CAN_COMPLETE_NORMALLY on call - to finit$ (otherwise generate_bytecode_insns drops it). However, we - don't need to set it on the COMPOUND_EXPR - the caller does that. - -2002-02-20 Nic Ferrier - - * gcj.texi: Option `--classpath' becomes `--CLASSPATH.'Option - `--CLASSPATH' becomes `--classpath.' - * gjavah.c: Likewise. - * jcf-dump.c: Likewise. - * lang-options.h: Likewise. - * lang.c: Likewise. - * jcf-path.c: Updated comment. - (jcf_path_classpath_arg): Renamed `jcf_path_CLASSPATH_arg.' - (jcf_path_CLASSPATH_arg): Renamed `jcf_path_classpath_arg.' - * jcf.h (jcf_path_CLASSPATH_arg): Ditto. - (jcf_path_CLASSPATH_arg): Ditto. - (classpath_u): Updated leading comment. - -2002-02-20 Per Bothner - - * builtins.c (check_for_builtin): New function. - (build_call_or_builtin): Remove. - * java-tree.h: Update accordingly. - * expr.c (expand_invoke): Use build + check_for_builtin instead - of build_call_or_builtin. - * parse.y (patch_invoke): Likewise. This avoids needlessly creating - a new CALL_EXPR node, which means we don't lose the CALL_USING_SUPER - flag (which had caused jcf-write to incorrectly emit invokevirtual). - -2002-02-17 Tom Tromey - - * java-tree.h (TYPE_STRICTFP): New macro. - (struct lang_type) [strictfp]: New field. - (CLASS_STRICTFP): New macro. - (METHOD_STRICTFP): New macro. - (struct lang_decl) [strictfp]: New field. - * parse.y (method_header): Disallow strictfp constructor or - abstract method. - (STRICT_TK): Move before MODIFIER_TK. - * parse.h (CLASS_MODIFIERS): Added ACC_STRICT. - (METHOD_MODIFIERS): Likewise. - (INTERFACE_MODIFIERS): Likewise. - * jcf-write.c (get_access_flags): Likewise. - * class.c (set_class_decl_access_flags): Recognize ACC_STRICT. - (add_method_1): Likewise. - (get_access_flags_from_decl): Likewise. - * jcf-dump.c (print_access_flags): Print in standard order. Also, - recognize strictfp flag. - * jcf.h (ACC_STRICT): New define. - -2002-02-12 David Billinghurst - - * class.c(build_utf8_ref): Move declaration of decl_size - -2002-02-07 Tom Tromey - - * gcj.texi (Input Options): --CLASSPATH does not suppress system - path. - -2002-02-04 Anthony Green - - * class.c (build_utf8_ref): Put UTF-8 constants into merged - sections if available. - -2002-02-04 Bryce McKinlay - - * parse.y (java_expand_classes): Fix typo in static field loop. - -2002-02-02 Richard Henderson - - * class.c (add_field): Mark static fields external. - (build_class_ref): Remove redundant set. - * parse.y (java_expand_classes): Mark static fields of classes - to be compiled as local. - * jcf-parse.c (parse_class_file): Likewise. - -2002-02-02 Nic Ferrier - - * gcj.texi (About CNI): New node. - -2002-02-01 Craig Rodrigues - - PR java/5080 - * jcf-parse.c : Check for HAVE_LOCALE_H before using - setlocale() with LC_CTYPE as a parameter. - * jv-scan.c: Same. - -2002-01-31 Joseph S. Myers - - * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version): - Follow GNU Coding Standards for --version. - -2002-01-28 Tom Tromey - - * expr.c (build_jni_stub): Ensure storage for `meth' is - generated. - * parse.y (java_complete_expand_methods): Set - current_function_decl before building JNI stub. - -2002-01-26 Andreas Tobler - - * gcc/java/builtins.c (sqrt_builtin): Use BUILT_IN_SQRT, not - BUILT_IN_SQRTF. - -2002-01-22 Tom Tromey - - * decl.c (java_init_decl_processing): Use add_predefined_file. - Predefine RawData.java. - (predef_filenames): Removed. - (java_init_decl_processing): Don't register predef_filenames. - * jcf-parse.c (add_predefined_file): New function. - (predefined_filename_p): Rewrote. - (predefined_filename_p): No longer static. - * decl.c (java_init_decl_processing): Call initialize_builtins. - * Make-lang.in (JAVA_OBJS): Added builtins.o. - (java/builtins.o): New target. - * builtins.c: New file. - * parse.y (patch_invoke): Use build_call_or_builtin. - * java-tree.h (build_call_or_builtin): Declare. - (initialize_builtins): Declare. - (java_set_exception_lang_code): Removed unused declaration. - (PREDEF_FILENAMES_SIZE): Removed. - (java_tree_index): Added JTI_PREDEF_FILENAMES. - (predef_filenames): New define. - (add_predefined_file): Declare. - (predefined_filename_p): Declare. - * expr.c (expand_invoke): Use build_call_or_builtin. - -2002-01-22 Kaveh R. Ghazi - - * parse.y (patch_switch_statement): Fix format specifier. - -2002-01-16 Tom Tromey - - More for PR java/5365: - * gjavah.c (print_stub_or_jni): Cause exception to be thrown by - default. - (process_file): Generate include for - java.lang.UnsupportedOperationExceptions. - -2002-01-15 Andreas Jaeger - - * .cvsignore: Add man pages. - -2002-01-15 Tom Tromey - - Fix for PR java/5365: - * gjavah.c (process_file): Turn class name into a file name. - -2002-01-14 Matthias Klose - - * gcj.texi: Fix whitespace and formatting errors in the - synopsis of the man pages. Update copyright. - -2002-01-14 Tom Tromey - - For PR libgcj/5303: - * Make-lang.in (java.install-man): Handle jv-convert man page. - (java.generated-manpages): Added jv-convert.1. - (java.uninstall): Remove jv-convert.1. - (java.maintainer-clean): Likewise. - ($(srcdir)/java/jv-convert.1): New target. - * gcj.texi (Top): Link to jv-convert node. - (Individual utilities): Likewise. - (Invoking jv-convert): New node. - -2001-01-10 Jeff Sturm - Martin Kahlert - - * jcf-parse.c (get_constant): Don't swap lo/hi for big - endian targets when HOST_BITS_PER_WIDE_INT >= 64. - -2002-01-03 Graham Stott - - * class.c (compile_resource_file): Update copyright date. - Constify filename parameter. - (java-tree.h): Update copyright date. - (compile_resource_file): Constify filename parameter. - -2002-01-03 Graham Stott - - * gcc/jcf-parse.c: Update copyright date. - (yyparse): Constify resource_filename. - -2002-01-02 Kaveh R. Ghazi - - * parse.y (src_parse_roots): Don't needlessly zero init. - -2001-12-31 Tom Tromey - - * parse.y (dump_java_tree): New function. - (source_end_java_method): Call it. - (end_class_declaration): Likewise. - * lang.c (java_decode_option): Call dump_switch_p. - -2001-12-28 Tom Tromey - - * gen-table.pl: Don't process characters after \uffff. Added - comment pointing to input file. - -2001-12-28 Kaveh R. Ghazi - - * gen-table.pl: Const-ify output. Document the location of a - suitable unicode input file. - - * chartables.h: Regenerate. - -2001-12-26 Kaveh R. Ghazi - - * chartables.h: Const-ify. - * gjavah.c (options): Likewise. - * jcf-dump.c (options): Likewise. - * jv-scan.c (options): Likewise. - * lex.c (java_start_char_p, java_part_char_p): Likewise. - * parse.y (binop_lookup): Likewise. - -2001-12-23 Kaveh R. Ghazi - - * Make-lang.in (keyword.h): Pass -C to gperf to const-ify - the static arrays that are output. - * jvspec.c (jvgenmain_spec): Make static. - * keyword.gperf (struct java_keyword, java_keyword): Const-ify. - * keyword.h: Regenerate. - * lang.c (string_option, process_option_with_no, lang_f_options, - lang_W_options): Const-ify. - * lex.c (java_lex): Likewise. - -2001-12-21 Richard Henderson - - * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Merge into .. - (get_boehm_type_descriptor): ... here. Arrange for the - TREE_TYPE to get set properly. - -2001-12-21 Richard Henderson - - * class.c (compile_resource_file): Set TREE_PUBLIC on the constructor - only if the target requires collect2. - - * class.c (build_class_ref): Mark _Jv_fooClass DECL_EXTERNAL. - -2001-12-20 Tom Tromey - - For PR java/4509: - * parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute - CAN_COMPLETE_NORMALLY for the node. - * jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't - generate code for second branch if first branch can't complete - normally. - (generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to - the loop head if the loop body can't complete normally. - -2001-12-20 Tom Tromey - - For PR java/4766: - * jcf-write.c (generate_bytecode_insns) [TRY_FINALLY_EXPR]: Handle - case where `finally' clause can't complete normally. - -2001-12-20 Tom Tromey - - Fixes PR java/5057: - * parse.y (analyze_clinit_body): Added this_class parameter. - Check for more cases where we must keep . - (maybe_yank_clinit): Cleaned up flow control. - -2001-12-20 Bryce McKinlay - - * decl.c (java_init_decl_processing): Don't initialize - finit_leg_identifier_node. - * java-tree.h (java_tree_index): Remove JTI_FINIT_LEG_IDENTIFIER_NODE. - (finit_leg_identifier_node): Remove. - (ID_FINIT_P): Don't check for JTI_FINIT_LEG_IDENTIFIER_NODE. - -2001-12-20 Bryce McKinlay - - * mangle.c (mangle_member_name): Don't special-case for - NO_DOLLAR_IN_LABEL. - * mangle_name.c (unicode_mangling_length): Likewise. - (append_unicode_mangled_name): Likewise. - * parse.y (make_nested_class_name): Remove dead NO_DOLLAR_IN_LABEL - code. - -2001-12-20 Bryce McKinlay - - * expr.c (build_java_array_length_access): Don't force null pointer - check unless flag_check_references is set. - -2001-12-20 Tom Tromey - - Fix for PR java/3417: - * parse.y (patch_assignment): Added special processing for - `return'. - (patch_return): Don't convert booleans to integers, and don't - special-case `null'. - -2001-12-20 Joseph S. Myers - - * config-lang.in (diff_excludes): Remove. - -2001-12-17 Joseph S. Myers - - * gcj.texi: Update link to GCC manual. - -2001-12-17 Tom Tromey - - * parse.y (link_nested_class_to_enclosing): Removed useless - statement. - -2001-12-16 Tom Tromey - - * mangle.c (mangle_method_decl): Never emit `C2' constructor. - Fixes PR java/5088. - -2001-12-16 Joseph S. Myers - - * ChangeLog, Make-lang.in, class.c, expr.c, gcj.texi, java-tree.h, - jcf-parse.c, jcf-write.c, lex.c, parse.h, parse.y, verify.c: Fix - spelling errors. - -2001-12-16 Kaveh R. Ghazi - - * lex.c (java_read_unicode, java_lex): Use hex_p/hex_value. - -2001-12-16 Bryce McKinlay - - * decl.c (java_init_decl_processing): Build otable_type correctly. - otable_decl is an otable_type. - -2001-12-15 Bryce McKinlay - - * java-tree.h (otable_methods, otable_decl, otable_syms_decl, - otable_type, otable_ptr_type, method_symbol_type, - method_symbols_array_type, method_symbols_array_ptr_type): New - field/global tree definitions. - (flag_indirect_dispatch): New flag. - * decl.c (java_init_decl_processing): Initialize new otable and - otable_syms type nodes and decls. Add new field "index" to - method_type_node. - * class.c (build_method_symbols_entry): New function. - (make_method_value): Set "index" to to method's vtable index for - virtual methods when indirect-dispatch is not used. - (make_class_data): For indirect-dispatch, don't emit the dtable_decl, - and set vtable_method_count to -1. Set otable and otable_syms field - if indirect-dispatch is used and there was something to put in them. - (build_method_symbols_entry): New function. - (emit_offset_symbol_table): New function. - * expr.c (get_offset_table_index): New function. - (build_invokevirtual): Build array reference to otable at the index - returned by get_offset_table_index, and use the result as the vtable - offset. - (build_invokeinterface): Similar. - * jcf-parse.c (yyparse): If indirect-dispatch, call - emit_offset_symbol_table at the end of compilation, after all classes - have been generated. - * jvspec.c: Don't pass findirect-dispatch to jvgenmain. - * lang.c (flag_indirect_dispatch): Define. - (lang_f_options): Add indirect-dispatch flag. - -2001-12-14 Matthias Klose - - * gcj.texi: Markup for man page generation. Document missing - options printed by --help. - Terminate description of gij's -ms option with a dot. - * Make-lang.in ($(srcdir)/java/*.1): New targets. - (java.generated-manpages java.install-man, java.uninstall, - java-maintainer-clean) Updated. - -2001-12-14 Hans Boehm - - * class.c (get_dispatch_table): Fix java vtable layout - for TARGET_VTABLE_USES_DESCRIPTORS. - * decl.c (java_init_decl_processing): Initialize - alloc_no_finalizer_node, finalize_identifier_node. - * expr.c (class_has_finalize_method): New function. - (expand_java_NEW): Generate calls for finalizer-free allocation. - (build_invokevirtual): Fix java vtable layout for - TARGET_VTABLE_USES_DESCRIPTORS. - * java-tree.h (enum java_tree_index): New entries: - JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE. - (alloc_no_finalizer_node, finalize_deintifier_node): New macros. - (class_has_finalize_method): declare. - (HAS_FINALIZER_P): New macro. - * parse.y (patch_invoke): Generate calls for finalizer-free - allocation. - -2001-12-12 Matthias Klose - - * Make-lang.in: JAVA_INSTALL_NAME, JAVA_CROSS_NAME: Remove - whitespace at end of line. - -2001-12-11 Tom Tromey - - * lex.c (java_init_lex): Define wfl_to_string as - gnu.gcj.runtime.StringBuffer unless generating bytecode. - -2001-12-11 Jeff Sturm - - * class.c (make_method_value): Use null_pointer_node to - represent empty exception table. - -2001-12-10 Tom Tromey - - * check-init.c (check_init) [SWITCH_EXPR]: Use SWITCH_HAS_DEFAULT. - -2001-12-10 Douglas B. Rupp - - * Make-lang.in (jvspec.o): Add $(OUTPUT_OPTION). - -2001-12-09 Per Bothner - - * check-init.c (current_switch_has_default): New static field. - (check_init): Case DEFAULT_EXPR: Set current_switch_has_default. - Case SWITCH_EXPR: Save/restore current_switch_has_default. If no - DEFAULT_EXPR seen, simulate a default alternative that copies state. - -2001-12-09 Tom Tromey - - * check-init.c (check_init): Don't allow pre- or post- increment - or decrement of final variable. - (final_assign_error): Minor error message rewording. - -2001-12-08 Tom Tromey - - * java-tree.h: Fixed typo. - - * gjavah.c (decompile_method): Don't decompile to `return this' - for static methods. - - * gjavah.c (cxx_keywords): Re-sorted. - * lex.c (cxx_keywords): Re-sorted. - - * gjavah.c (HANDLE_METHOD): Set `decompiled' before doing anything - else. - - * gjavah.c (print_namelet): Clear subnamelets. - (HANDLE_METHOD): Set `method_printed' earlier. - -2001-12-07 Tom Tromey - - * lang.c (lang_f_options): Added - optimize-static-class-initialization. - (java_decode_option): Removed special case. - -2001-12-07 Per Bothner - - * check-init.c (check_init): Fix typo freeing memory twice. - -2001-12-05 Per Bothner - - Restore support for static class initialization optimization. - * java-tree.h (STATIC_CLASS_INIT_OPT_P): Re-enable. - * check-init.c (check_int): At end of BLOCK handle initialization - blocks, which used to be done in java_complete_expand_method but did - not handle the case where check_for_initialization might allocate - more than a word of bits. - * decl.c (lang_make_tree): The smic field is now a tree. - * expr.c (build_class_init): Set DECL_FUNCTION_INIT_TEST_CLASS field. - * java-tree.h (DECL_FUNCTION_INIT_TEST_TABLE): New macro. - - * parse.y (emit_test_initialization): Combine hash_lookup calls. - - * java-tree.h (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): - Change from a hash table to a list. - (struct_lang_decl): Change field 'smic' to match. - * class.c (add_method_1): Initialize - DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND to null list. - * parse.y (adjust_init_test_initialization): Removed - inlined into - - (java_expand_method_bodies): -here, since 'smic' is now a list. - (patch_invoke): Add to 'smic' list, instead of hash_lookup. - - * check-init.c (WORD_SIZE): Use BITS_PER_UNIT. - - * class.c (java_hash_compare_tree_node): Fix casts. - -2001-12-04 Per Bothner - - * check-init.c: Handle definite unassignment to finals in addition - to definite assignment. - (loop_current_locals): New field. - (num_current_locals, int start_current_locals, num_current_words): - Make static. - (SET_P, CLEAR_P, SET_BIT): Add needed but missing parentheses. - (ASSIGNED_P, UNASSIGNED_P, SET_ASSIGNED, SET_UNASSIGNED, - CLEAR_ASSIGNED, CLEAR_UNASSIGNED): New macros. - (get_variable_decl, check_final_reassigned): New functions. - (check_init, check_bool_init): Modify as needed for checking finals. - (check_for_initialization): Take extra parameter and return void. - Do extra start-up logic to check final fields for assignment. - * parse.y (check_static_final_variable_assignment_flag, - reset_static_final_variable_assignment_flag, check_final_assignment, - check_final_variable_local_assignment_flag, - reset_final_variable_indirect_assignment_flag, - reset_final_variable_global_assignment_flag): Remove functions. - (java_complete_expand_methods, outer_field_access_fix, - patch_assignment): Remove no-longer used logic. - * java-tree.h (DECL_FIELD_FINAL_IUD): Change usage and comments. - * parse.y (register_fields, java_complete_tree): Update accordingly. - - * check-init.c (ALLOC_WORDS/FREE_WORDS): Use xmalloc/free, not alloca. - (DECLARE_BUFFERS, RELEASE_BUFFERS, ALLOC_BUFFER, FREE_BUFFER): New. - (check_cond_init, check_bool2_init): Use DECLARE_BUFFERS. - - * java-tree.h (STATIC_CLASS_INIT_OPT_P): Temporarily turn off. - - * java-tree.h (DECL FINAL): New bit-field. - (METHOD_FINAL, FIELD_FINAL, CLASS_FINAL): Define as DECL_FINAL. - (LOCAL_FINAL_P): Use DECL_FINAL rather than old LOCAL_FINAL. - (DECL_INIT_CALLS_THIS): New macro. - (struct lang_decl): New bit-field init_calls_this. - (DECL_FUNCTION_ALL_FINAL_INITIALIZED, DECL_FIELD_FINAL_LIIC, - DECL_FIELD_FINAL_IERR, LOCAL_FINAL, TYPE_HAS_FINAL_VARIABLE - (DECL_BIT_INDEX): Change to use pointer_alias_set since we now - use it for both local variables and final fields. - (struct lang_decl_var): Remove bit-fields final_liic, final_ierr, - and local_final. - (struct lang_type): Remove hfv bit-field. - (check_for_initialization): Change to return void. - - * java-tree.h (IS_ARRAY_LENGTH_ACCESS): New macros. - * expr.c (build_java_array_length_access): Set IS_ARRAY_LENGTH_ACCESS. - * check-init.c (final_assign_error): New helper function. - (check_final_reassigned, check_init): Use it. - (check_init): Also check IS_ARRAY_LENGTH_ACCESS for ARRAY.length. - - * java-tree.h (struct lang_decl, struct lang_decl_var): Change all - bit-fields to unsigned. - -2001-12-03 Per Bothner - - * parse.y (patch_binop): Minor constant folding. - - * parse.y (build_current_thisn): Shorter 'buffer'. - -2001-12-03 Per Bothner - - * decl.c (complete_start_java_method): Now generate TRY_FINALLY_EXPR - instead of CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR. - * jcf-write.c (generate_bytecode_insns): Remove support for - CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR as they are no longer used. - * check-init.c (check_init): Likewise. - -2001-12-03 Per Bothner - - * verify.c (subroutine_nesting): New function. - (verify_jvm_instructions): Use it to fix logic for checking that - we're done with the current subroutine. - - * verify.c (verify_jvm_instruction): For OPCODE_checkcast and - OPCODE_instanceof use POP_TYPE macro for better diagnostics. - -2001-12-03 Per Bothner - - * jcf.h: Fix obvious typo in comment. - * typeck.c (build_null_signature): Add comment. - -2001-12-03 Neil Booth - - * expr.c: Remove leading capital from diagnostic messages, as - per GNU coding standards. - * jcf-io.c: Similarly. - * jcf-parse.c: Similarly. - * jv-scan.c: Similarly. - * jvspec.c: Similarly. - * mangle.c: Similarly. - -2001-12-02 Tang Ching-Hui - Alexandre Petit-Bianco - - * expr.c (build_java_arrayaccess): Call save_expr on array for - correct evaluation order, modified comment, fixed indentation. - * parse.y: (patch_assignment): Correctly extract the array base - from the tree generate by build_java_arrayaccess, added comments. - (patch_array_ref): Remove SAVE_EXPR on ARRAY_REF. - Fixes PR java/3096, PR java/3803, PR java/3965. - -2001-12-01 Neil Booth - - * expr.c (expand_byte_code): Remove trailing periods from messages. - * jcf-parse.c (load_class, jcf_parse): Similarly. - * jcf-write.c (generate_classfile): Similarly. - * lex.c (java_lex): Similarly. - -2001-11-30 Bryce McKinlay - - * class.c (add_interface_do): Set BINFO_VPTR_FIELD. - -2001-11-29 Joseph S. Myers - - * Make-lang.in (java.generated-manpages): New dummy target. - -2001-11-27 Rainer Orth - - * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks - ASM_FINAL_SPEC. - (lang_specific_pre_link): Use set_input to set input_filename. - Append `main' here. - * jvgenmain.c (usage): Append literal `main' to CLASSNAME. - (main): Fix definition. - Strip `main' from classname. - Fixes PR java/227. - -2001-11-18 Roger Sayle - - * parse.h (java_expand_switch): Remove old prototype. - -2001-11-18 Tom Tromey - - Fix for PR java/1401: - * jcf-write.c (generate_bytecode_insns) [binop]: Handle case where - arg0 is null. - (generate_bytecode_insns) [MODIFY_EXPR]: Handle `OP=' case - correctly. - -2001-11-18 Neil Booth - - * lang.c (finish_parse): Rename to java_finish. - (LANG_HOOKS_FINISH, java_finish): New. - -2001-11-15 Neil Booth - - * decl.c (init_decl_processing): Rename java_init_decl_processing. - * java-tree.h: New prototype. - * lang.c (java_init): Update prototype. Combine with old init_parse. - -2001-11-13 Tom Tromey - - * gjavah.c (method_signature): New global. - (HANDLE_METHOD): Set it. - (decompile_return_statement): New function. - (decompile_method): Use it. - (print_method_info): Removed `synth' argument. - -2001-11-09 Neil Booth - - * java-tree.h (java_set_yydebug): New. - * jcf-parse.c (set_yydebug): Rename java_set_yydebug. - * lang.c (LANG_HOOKS_SET_YYDEBUG): Override. - (print_lang_decl, print_lang_type, print_lang_identifier, - print_lang_statistics, lang_print_xnode): Remove. - -2001-11-09 Neil Booth - - * jcf-parse.c (init_lex): Remove. - * lang.c (language_string, lang_identify): Remove. - (struct lang_hooks): Constify. - (LANG_HOOKS_NAME): Override. - (init_parse): Update. - -2001-11-08 Andreas Franck - - * Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle - program_transform_name the way suggested by autoconf. - (java.install-common): Also transform auxiliary program names with - program_transform_name. - -2001-11-08 Tom Tromey - - * parse.y (trap_overflow_corner_case): New rule. - (unary_expression): Use it. - * lex.c (java_init_lex): Don't set minus_seen. - (yylex): Don't use minus_seen. Communicate overflow to parser for - it to handle. - (error_if_numeric_overflow): New function. - * parse.h (minus_seen): Removed field. - (JAVA_RADIX10_FLAG): New define. - -2001-11-07 Tom Tromey - - Patch for PR java/1414: - * parse.y (case_label_list): New global. - (goal): Register case_label_list with GC. - (java_complete_lhs): Save new case on case_label_list. - (patch_switch_statement): Check for duplicate case labels. - -2001-11-07 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Removed unused third argument. - (java_complete_lhs): Removed unused third argument to patch_assignment. - -2001-11-06 Neil Booth - - * lang.c: Include langhooks-def.h. - * Make-lang.in: Update. - -2001-10-31 Zack Weinberg - - * Make-lang.in: Replace $(INTL_TARGETS) with po-generated. - -2001-10-29 Bryce McKinlay - - * mangle.c (find_compression_record_match): Don't match compression - records for package name elements unless they occur at the start of - the name. Fix for PR java/4717. - -2001-10-25 Bryce McKinlay - - * expr.c (expand_java_field_op): Don't special-case references to - java.lang.PRIMTYPE.TYPE. - (build_primtype_type_ref): Removed. - * java-tree.h (build_primtype_type_ref): Remove prototype. - * parse.y (maybe_build_primttype_type_ref): Removed. - (complete_function_arguments): Don't special-case references to - java.lang.PRIMTYPE.TYPE. - (patch_assignment): Likewise. - (array_constructor_check_entry): Likewise. - -2001-10-24 Alexandre Petit-Bianco - - * mangle.c (static tree compression_table): Fixed leading comment. - * parse.h (struct parser_ctxt): Fixed field comment. - * parse.y (check_pkg_class_access): New prototype, fixed leading - comment, new parameter used to emit error only if passed as true. - (parse_check_super): Pass extra argument to check_pkg_class_access. - (do_resolve_class): Likewise. - (process_imports): Likewise. - (read_import_dir): Fixed indentation. - (find_in_imports_on_demand): New local class_type_name. Local - node_to_use deleted. while loop changed into for loop. Report - multiple definition only for accessible classes. Improved error - message. - (start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS - assigned to parameter list, fixed indentation. while loop changed - into for loop, restore TREE_CHAIN on local `tem' before the next - iteration. - -2001-10-23 Richard Kenner - - * lang.c (lang_get_alias_set): Deleted. - -2001-10-21 Kaveh R. Ghazi - - * gjavah.c (jni_print_char): Fix thinko in last change. - - * gjavah.c (jni_print_char, decode_signature_piece): Use - safe-ctype macros and/or fold extra calls into fewer ones. - * lex.c (java_read_unicode, java_lex): Likewise. - * lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT, - JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise. - * mangle_name.c (append_unicode_mangled_name, - unicode_mangling_length): Likewise. - -2001-10-17 Richard Henderson - - * Make-lang.in (java/lang.o): Depend on langhooks.h. - -2001-10-15 Alexandre Petit-Bianco - - * lang.c (langhooks.h): Included. - (LANG_HOOKS_INIT): Redefined. - (LANG_HOOKS_INIT_OPTIONS): Likewise. - (LANG_HOOKS_DECODE_OPTION): Likewise. - (struct lang_hooks lang_hooks): New initialization. - -2001-10-11 Per Bothner - - * parse.y (patch_synchronized_statement): Use a TRY_FINALLY_EXPR - rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair. - The former is simpler, and jcf-write.c handles it better. - (java_complete_lhs): No longer need to handle CLEANUP_POINT_EXPR - or WITH_CLEANUP_EXPR. - * jcf-write.c: Revert Alex's change from 2000-10-18. It is no - longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine. - - * parse.y (patch_if_else_statement): If the condition is constant, - optimize away the test. - -2001-10-09 Alexandre Petit-Bianco - - * parse.y (patch_cast): Call patch_string on the first operand of - the incoming node, update it if necessary. Fixes PR java/4510. - -2001-10-09 Bryce McKinlay - - * parse.y (find_as_inner_class): Don't disregard the enclosing scope - when name qualifier matches a package name. - -2001-10-08 Tom Tromey - - Fix for PR java/4489: - * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always - force a new label when computing `body_block'. - -2001-10-07 Kaveh R. Ghazi - - * jcf-io.c (format_uint): Const-ify. - * lang.c (java_tree_code_type, java_tree_code_length): Likewise. - * lex.c (java_get_line_col): Likewise. - * parse.y (build_incdec): Likewise. - -2001-10-05 Alexandre Petit-Bianco - - * parse.y (register_incomplete_type): Set JDEP_SUPER to be given - a NULL enclosing context if appropriate. Fixes PR java/4466. - -2001-10-03 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Use lvalue's original TYPE when - building the final COMPOUND_EXPR. - (try_reference_assignconv): Fixed leading comment. - -2001-09-26 Alexandre Petit-Bianco - - * parse.y (check_final_variable_indirect_assignment): For - COMPOUND_EXPR, return only if finals were found initialized - properly, if not, keep on checking. - (check_final_variable_global_assignment_flag): New local - error_found, set when appropriate and used to decide whether to - report uninitialized finals. Fixed typo in comment. - -2001-09-22 Alexandre Petit-Bianco - - * decl.c (init_decl_processing): Fixed typo in predef_filenames - last three initializations. Fixes PR java/4360. - -2001-09-21 Richard Henderson - - * class.c (get_dispatch_table): Handle function descriptors. - (build_dtable_decl): Likewise. - * expr.c (build_invokevirtual): Likewise. - -2001-09-20 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Build class initialization - when static finals are used to qualify method invocation. - Fixes PR java/4366. - -2001-09-19 Alexandre Petit-Bianco - - * parse.h: (WFL_STRIP_BRACKET): Re-written using - build_type_name_from_array_name. - (STRING_STRIP_BRACKETS): New macro. - * parse.y (build_type_name_from_array_name): New function. - (array_creation_expression:): Accumulate []s instead of [s. - (cast_expression:): Accumulate []s instead of [s after cast type - name. - (build_array_from_name): Local string deleted, use - build_type_name_from_array_name. - (build_unresolved_array_type): Accumulate []s instead of [s after - type name. - (register_fields): Fixed comment. - (resolve_class): Local name, base deleted, new locals tname and - array_dims. Use build_type_name_from_array_name. Use array_dims to - build array type. - (purify_type_name): Use STRING_STRIP_BRACKETS. - -2001-09-18 Andreas Jaeger - - * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout. - * jv-scan.c: Likewise. - -2001-09-17 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Inner class creation context - check not enforced within constructors. Fixes PR java/1873. - -2001-09-16 Tom Tromey - - * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call - NOTE_PUSH for single-case push. Fixes PR java/4189. - -2001-09-13 Alexandre Petit-Bianco - - * java-tree.h (TYPE_IMPORT_LIST): New macro. - (TYPE_IMPORT_DEMAND_LIST): Likewise. - (struct lang_type): New fields import_list and import_demand_list. - * parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and - TYPE_IMPORT_DEMAND_LIST with ctxp counterparts. - (do_resolve_class): New local saved_enclosing_type, initialized, - passed as parameter to find_in_imports and find_in_imports_on_demand. - (find_in_imports): Added paramater enclosing_type, use its - TYPE_IMPORT_LIST when applicable. - (find_in_imports_on_demand): Added parameter enclosing_type, use - its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals - declaration and initialization. - (fold_constant_for_init): Switch/restore current_class to the - appropriate context. - -2001-09-13 Mark Mitchell - - * verify.c (verify_jvm_instructions): Fix typo. - -2001-09-13 Kaveh R. Ghazi - - * expr.c (expand_invoke): Const-ification. - * parse.y (patch_method_invocation): Likewise. - -2001-09-12 Kaveh R. Ghazi - - * gjavah.c (cxx_keywords): Const-ification. - * keyword.gperf (java_keyword): Likewise. - * lang.c (java_tree_code_name): Likewise. - * lex.c (cxx_keywords): Likewise. - * parse.y (java_parser_context_suspend, merge_string_cste): Likewise. - -2001-09-11 Richard Henderson - - * parse.h (ctxp_for_generation): Mark extern. - -2001-09-10 Richard Henderson - - * class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl. - -2001-09-07 Matt Kraai - - * typeck.c (java_array_type_length, build_prim_array_type): - Represent empty arrays by NULL index. - -2001-09-06 Alexandre Petit-Bianco - - * java-tree.h (compile_resource_file): Grouped with other prototypes. - * jvspec.c (lang_specific_driver): Removed unused local `ptr.' - -2001-09-06 Anthony Green - - * class.c (O_BINARY): Define if necessary. - (registerResource_libfunc): Declare. - (init_class_processing): Initilize registerResource_libfunc. - (compile_resource_file): New function. - * java-tree.h (resource_name): Declare. - (compile_resource_file): Declare. - * jcf-parse.c (yyparse): Handle compiling java resource files. - * lang.c (java_decode_option): Handle -fcompile-resource option. - * jvspec.c (lang_specific_driver): Handle -R flag for compiling - resource files. - * gcj.texi (Code Generation): Add documentation for -R flag. - -2001-09-05 Alexandre Petit-Bianco - - * jcf-write.c (generate_classfile): Issue an error in case of - field/initial value mismatch. - * parse.y (analyze_clinit_body): Keep if an array is - being initialized and we're generating bytecode. - (java_complete_lhs): In MODIFY_EXPR section: added comments, - set DECL_INITIAL properly when appropriate. - Fixes PR java/4230 - Fixes PR java/4204 - -2001-09-01 Per Bothner - - * parse.y (maybe_yank_clinit): A field without an initializer is not - relevant. All initializers except static final and constant require - , regardless of flag_emit_class_files. - -2001-08-31 Per Bothner - - * class.c (set_constant_value): When not emitting class files, then a - String ConstantValue is a utf8const_ptr_type. - -2001-08-30 Per Bothner - - * jcf-write.c (generate_classfile): Check that field is primitive - or string before emitting ConstantValue attribute. - -2001-08-30 Per Bothner - - * parse.y (resolve_qualified_expression_name): If creating a - COMPOUND_EXPR, set it's type correctly. - -2001-08-30 Per Bothner - - * jcf-io.c (open_class): Set filename field. - - * jcf-parse,c (parse_class_file): Set current_function_decl - for better error message when Code attribute is missing. - - * lang.c (put_decl_node, lang_print_error): Re-arrange for - better diagnostics, especially for constructors. - -2001-08-30 Per Bothner - - * jcf-write.c (generate_classfile): Don't write ConstantValue - attribute if field is not final, for compatibility with jdk. - - * jcf-write.c (generate_classfile): Convert ConstantValue values - to correct type. Work-around for front-end bug. - * class.c (set_constant_value): Error if constant has wrong type. - -2001-08-30 Per Bothner - - * jcf-dump.c (print_constant): Fix fencepost error so "Float" and - "Double" are printed at verbosity 1. - - * jcf-dump.c (main): Disable flag_print_attributes if --javap. - - * jcf-dump.c (SPECIAL_IINC): Remove unneeded casts to long. - -2001-08-30 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Don't verify final re-assignment here. - (java_complete_lhs): Verify assignments to finals calling - patch_assignment. Verify re-assignments to finals before calling - patch_assignment. - -2001-08-29 Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs. - Fixes PR java/1413 - -2001-08-28 Alexandre Petit-Bianco - - * lex.c (java_lex): new local found_hex_digits. Set and then used - in test to reject invalid hexadecimal numbers. - * parse.y (java_complete_tree): Prevent unwanted cast with - initialized floating point finals. - (patch_binop): Emit a warning when detecting a division by zero, - mark result not constant, don't simplify non integer division. - -2001-08-28 Per Bothner - - * jcf-write.c (generate_bytecode_insns): For increments and - decrements just recurse to push constant. Improvement on Mark's patch. - -2001-08-28 Mark Mitchell - - * jcf-write.c (generate_bytecode_insns): Generate an integer to - real conversion for increments and decrements of reals. - -2001-08-27 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Handle unresolved - qualified expressions, prevent numerical qualifiers, fixed typo. - Fixes PR java/4141 - -2001-08-24 Alexandre Petit-Bianco - - * parse.y (check_deprecation): Handle TYPE_DECL in a special case, - don't report anything but deprecated class when marked so. Handle - VAR_DECL. - (patch_method_invocation): Check deprecation on methods and types. - (patch_binop): code becomes an enum tree_code, added default: to - switch to handle that. Detect division by zero, try to fold and - return before using a subroutine. - -2001-08-23 Alexandre Petit-Bianco - - * jcf-parse.c (yyparse): Set magic to 0, don't issue error for a - file smaller than 4 bytes. - * parse.y (check_inner_circular_reference): New function. - (check_circular_reference): Likewise. - (array_initializer:): Accept {,}. - (java_check_circular_reference): Rewritten using - check_circular_reference and check_inner_circular_reference. - (java_complete_expand_method): Unconditionally save and restore - the unpurged exception list. - (build_dot_class_method_invocation): Unmangle signature parameter. - -2001-08-21 Tom Tromey - - * decl.c (init_decl_processing): Add `throws' field to method - descriptor. - * class.c (make_method_value): Compute `throws' field for method. - -2001-08-22 Alexandre Petit-Bianco - - * parse.y (resolve_inner_class): Keep local_enclosing to NULL if - circularity is detected. - (ctors_unchecked_throws_clause_p): Fixed leading comment. - -2001-08-17 Richard Henderson - - * class.c (emit_register_classes): Add align parameter to - call to assemble_integer. - -2001-08-16 Alexandre Petit-Bianco - - * jcf-parse.c (load_class): New locals saved and class_loaded. If - loading a class_or_name fails, try considering an innerclass name - and load the enclosing context. - * parse.y (resolve_inner_class): New function. - (find_as_inner_class): Added leading comment. - (register_incomplete_type): Keep the current context as enclosing - context for JDEP_FIELD dependencies. - (do_resolve_class): Locals new_class_decl and super initialized to - NULL. Call resolve_inner_class, explore the enclosing context - superclass if necessary. - Fixes PR java/4007 - -2001-08-16 Tom Tromey - - * jcf-dump.c (main): Updated for change to jcf_path_seal. - * gjavah.c (main): Updated for change to jcf_path_seal. - * lang.c (version_flag): New global. - (java_decode_option): Recognize `-version'. - (java_init): Update for change to jcf_path_seal. - * jcf.h (jcf_path_seal): Added `print' argument. - * jcf-path.c (jcf_path_seal): Added `print' argument. - -2001-08-13 Zack Weinberg - - * Make-lang.in (java/decl.o): Update dependencies. - * decl.c: Include libfuncs.h, don't include toplev.h. - -2001-08-12 Alexandre Petit-Bianco - - * decl.c (init_decl_processing): exception_type_node, - class_not_found_type_node, and no_class_def_found_type_node - initialized. predef_filenames augmented accordingly. - instinit_identifier_node initialized. - * java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed. - * java-tree.h (enum java_tree_index): New entries - JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE, - JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE. - (exception_type_node): New macro. - (class_not_found_type_node): Likewise. - (no_class_def_found_type_node): Likewise. - (instinit_identifier_node): Likewise. - (PREDEF_FILENAMES_SIZE): Adjusted. - (TYPE_HAS_FINAL_VARIABLE): Fixed typo. - (struct lang_type): Fixed typo in bitfield name. - (DECL_INSTINIT_P): New macro. - (ID_INSTINIT_P): Likewise. - * jcf-write.c (generate_classfile): instinit$ bears the Synthetic - attribute. - * parse.y (encapsulate_with_try_catch): New function. - (generate_instinit): Likewise. - (build_instinit_invocation): Likewise. - (ctors_unchecked_throws_clause_p): Likewise. - (add_instance_initializer): Deleted. - (build_instance_initializer): Likewise. - (in_instance_initializer): Likewise. - (check_method_redefinition): instinit$ not to be verified. - (java_complete_expand_methods): Generate instinit$, simplified code. - (build_dot_class_method): Eliminated unnecessary locals. Use - encapsulate_with_try_catch, removed unnecessary code. - (fix_constructors): New local iii. Use build_instinit_invocation. - (patch_method_invocation): Added comment. - (maybe_use_access_method): Don't consider instinit$. - (find_applicable_accessible_methods_list): Shorten the search for - instinit$ too. - (java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed. - (patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer. - (patch_throw_statement): Likewise. Fixed typo. - -2001-08-12 David Edelsohn - - Revert: - 2001-08-02 Rainer Orth - * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks - ASM_FINAL_SPEC. - (lang_specific_pre_link): Use set_input to set input_filename. - Append `main' here. - * jvgenmain.c (usage): Append literal `main' to CLASSNAME. - (main): Fix definition. - Strip `main' from classname. - Fixes PR java/227. - -2001-08-11 Zack Weinberg - - * lex.h: Don't include setjmp.h. Don't define - SET_FLOAT_HANDLER or prototype set_float_handler. - -2001-08-09 Alexandre Petit-Bianco - - * expr.c (java_lang_expand_expr): Call `expand_end_bindings' and - `poplevel' in the right order. - -2001-08-09 Richard Henderson - - * Make-lang.in (class.o): Depend on TARGET_H. - * class.c (emit_register_classes): Use target hooks instead of - assemble_constructor and assemble_destructor. - -2001-08-08 Alexandre Petit-Bianco - - * check-init.c (flags.h): Include - (check_init): Don't report uninitialized static class - initialization flags, don't free bit index when doing static class - initialization optimization. - (check_for_initialization): Return type changed to `unsigned int.' - (attach_initialized_static_class): New function. - * class.c (add_method_1): Create the initialized static class - table if necessary. - (finish_class): Always emit deferred inline methods. - * decl.c (emit_init_test_initialization): Moved to expr.c - (complete_start_java_method): Don't traverse - DECL_FUNCTION_INIT_TEST_TABLE. - (lang_mark_tree): Mark hash tables in function decls. - * expr.c (emit_init_test_initialization): Moved from decl.c. - (build_class_init): Create LAG_DECL_SPECIFIC for the static class - initialization flag, set DECL_CONTEXT and - LOCAL_CLASS_INITIALIZATION_FLAG. - (java_lang_expand_expr): Emit initialization code for static class - initialized flags when entering block, if necessary. - * gcj.texi (-fno-optimize-static-class-initialization): Documented. - * java-tree.h (flag_optimize_sci): New global variable declaration. - (DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro. - (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise. - (LOCAL_FINAL_P): Fixed typo in comment. - (FINAL_VARIABLE_P): Likewise. - (LOCAL_CLASS_INITIALIZATIO_FLAG): New macro. - (LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise. - (struct lang_decl): New fields `ict', `smic' and `cif.' - (check_for_initialization): New returned value for global. - (attach_initialized_static_class): New global function. - (STATIC_CLASS_INIT_OPT_P): New macro. - * lang-options.h (-fno-optimize-static-class-initialization): New flag. - * lang.c (java_decode_option): Handle - `-fno-optimize-static-class-initialization' - * parse.y (start_complete_expand_method): New function. - (java_expand_method_bodies): Likewise. - (attach_init_test_initialization_flags): Likewise. - (adjust_init_test_initialization): Likewise. - (emit_test_initialization): Likewise. - (java_complete_expand_methods): Nullify abstract and native method - bodies. - (java_complete_expand_method): New locals `fbody', `block_body' - and `exception_copy.' Reorganized: directly return on empty method - bodies, call `start_complete_expand_method', remember definitely - initialized static class in function, don't expand method bodies. - (java_expand_classes): Call `java_expand_method_bodies' before - `finish_class' when compiling to native. - (resolve_expression_name): Use `orig' after building outer class - field access. - (patch_invoke): Remember static method invocations. - -2001-08-06 Richard Henderson - - * class.c (emit_register_classes): Pass a symbol_ref and priority - to assemble_constructor. - -2001-08-02 Alexandre Petit-Bianco - - * java-tree.h (all_class_filename): New macro. - (enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.' - (BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link - newly created IDENTIFIER_NODE to `all_class_filename.' - -2001-08-01 Jeff Sturm - - * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): - Use ggc_add_tree_root to register roots. - -2001-07-31 Alexandre Petit-Bianco - - * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its - second operand calling check_init. - * decl.c (complete_start_java_method): Swaped second and third - arguments while creating WITH_CLEANUP_EXPR node. - * jcf-write.c (generate_bytecode_insns): Use second operand - instead of third when handling WITH_CLEANUP_EXPR. - * parse.y (java_complete_lhs): Expand second operand of - WITH_CLEANUP_EXPR nodes. - (patch_synchronized_statement): Swaped second and third arguments - while creating WITH_CLEANUP_EXPR node. - -2001-07-18 Alexandre Petit-Bianco - - * parse.y (create_interface): Avoid cyclic inheritance report when - syntax error encountered during class definition. - Fixes PR java/2956 - -2001-08-02 Rainer Orth - - * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks - ASM_FINAL_SPEC. - (lang_specific_pre_link): Use set_input to set input_filename. - Append `main' here. - * jvgenmain.c (usage): Append literal `main' to CLASSNAME. - (main): Fix definition. - Strip `main' from classname. - Fixes PR java/227. - -2001-07-18 Tom Tromey - - For PR java/2812: - * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H. - * lex.c (java_new_lexer): Use ICONV_CONST. - (java_read_char): Likewise. - * Make-lang.in (jc1$(exeext)): Link against LIBICONV. - (jv-scan$(exeext)): Likewise. - -2001-07-17 Alexandre Petit-Bianco - - * parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.' - * parse.y (check_class_interface_creation): Allow `private' if the - enclosing is not an interface. - (create_interface): Interface tagged public if the enclosing - context is an interface. - (create_class): Class tagged public if the enclosing context - is an interface. - Fixes PR java/2959 - -2001-07-17 Alexandre Petit-Bianco - - * class.c (push_class): Set DECL_SIZE to `integer_zero_node.' - Fixes PR java/2665 - -2001-07-14 Tim Josling - - * check-init.c (check_init): Remove references to EXPON_EXPR. - -2001-07-13 Alexandre Petit-Bianco - - * parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset - TREE_CONSTANT_OVERFLOW of CASE_EXPR value. - Fixes PR java/3602 - -2001-07-13 Tom Tromey - - * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1 - invocation. - -2001-07-12 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Don't override primary if one - is already provided, but let this$ be built. Fixed comment. - -2001-07-12 Alexandre Petit-Bianco - - * parse.y (empty_statement:): Report empty statement error only - when found at class declaration level. - Fixes PR java/3635 - -2001-07-12 Tom Tromey - - * expr.c (expand_load_internal): New function. - (LOAD_INTERNAL): Use it. - -2001-07-11 Alexandre Petit-Bianco - - * parse.y (verify_constructor_super): Compare anonymous class ctor - args with `valid_method_invocation_conversion_p.' - Fixes PR java/3285 - -2001-07-10 Alexandre Petit-Bianco - - * lang-specs.h: Forbit the use if `-femit-class-file{s}' without - `-fsyntax-only.' Fixes PR java/3248 - -2001-07-10 Alexandre Petit-Bianco - - * jcf-io.c (find_class): Clarified error message. Fixes PR java/2603 - -2001-07-10 Alexandre Petit-Bianco - - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the - current function is static. Fixes PR java/1970 - -2001-07-09 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Add enclosing context to ctor - calls if necessary. Fixes PR java/2953 - -2001-07-09 Alexandre Petit-Bianco - - * parse.y (resolve_package): Abort if qualified expression member - isn't right. - (qualify_ambiguous_name): Don't qualify as type if `this' in use. - Fixes PR java/1391 - -2001-07-07 Zack Weinberg - - * verify.c: Don't use // comments. - -2001-07-05 Tom Tromey - - * lang.c (flag_assume_compiled): Removed. - * java-tree.h (flag_assume_compiled): Removed. - * lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc, - -fhash-synchronization, -fuse-divide-subroutine, - -fcheck-references, -femit-class-file, -femit-class-files, - -fassume-compiled. Updated --encoding information. Changed - -foutput-class-dir to `-d'. - -2001-07-04 Daniel Berlin - - * jcf-parse.c (parse_class_file): Add lineno parameter to - debug_start_source_file call. - -2001-07-04 Joseph S. Myers - - * gcj.texi: Use gpl.texi. - * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update - dependencies and use doc/include in search path. - -2001-07-03 Jeff Sturm - - * parse.y (fix_constructors): Test if a CALL_EXPR invokes - `this'. If so, don't build instance initializers. - -2001-07-03 Alexandre Petit-Bianco - - * parse.y (resolve_expression_name): Improved error message for - inner class cases. Fixes PR java/1958 - -2001-06-28 Gabriel Dos Reis - - * lang.c: #include diagnostic.h - (lang_print_error): Add a `diagnostic_context *' parameter. - (java_dummy_print): Likewise. - * Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h - -2001-06-27 Alexandre Petit-Bianco - - * jcf-parse.c (gcc_mark_jcf): Test for a finished JCF. - * jcf.h (typedef struct JCF): New bitfield `finished.' - (JCF_FINISH): Set `finished.' - (JCF_ZERO): Reset `finished.' - Fixes PR java/2633 - -2001-06-27 Alexandre Petit-Bianco - - * parse.y (class_body_declaration:): Don't install empty instance - initializers. - Fixes PR java/1314 - -2001-06-27 Alexandre Petit-Bianco - - * class.c (set_super_info): Call `set_class_decl_access_flags.' - (set_class_decl_access_flags): New function. - * java-tree.h (set_class_decl_access_flags): New prototype. - * jcf-parse.c (handle_innerclass_attribute): Read and set access flags. - (parse_class_file): New local `decl_max_locals.' Take wide types - into account to compute DECL_MAX_LOCALS. - * parse.y (type_import_on_demand_declaration:): Ignore duplicate - imports on demand. - -2001-06-22 Jan van Male - - * zipfile.h: Use GCC_JCF_H instead of JCF_H. - -2001-06-20 Alexandre Petit-Bianco - - * class.c (java_hash_tree_node): Fixed indentation in leading comment. - * parse.y (do_resolve_class): Moved comments out to leading comment - section. Removed local `start', New local `_ht' and - `circularity_hash.' Record `enclosing' in hash table and search - it to detect circularity. Use `enclosing' as an argument to - `lookup_cl.' Free the hash table when done. - -2001-06-19 Tom Tromey - - * lex.c (java_read_char): Disallow invalid and overlong - sequences. Fixes PR java/2319. - -2001-06-05 Jeff Sturm - - * decl.c (create_primitive_vtable): Don't call make_decl_rtl. - -2001-06-04 Alexandre Petit-Bianco - - * expr.c (force_evaluation_order): Match wrapped ctor calls, locate - arguments accordingly. - -2001-06-02 Joseph S. Myers - - * gcj.texi: Move contents to just after title page. - -2001-06-01 Alexandre Petit-Bianco - - * parse.y (type_literals:): Use `build_incomplete_class_ref' with - builtin type. - (patch_incomplete_class_ref): Build the class ref, build the class - init if necessary, complete the tree. - Fixes PR java/2605 - -2001-05-31 Alexandre Petit-Bianco - - * parse.y (lookup_field_wrapper): Test `name' code. - (resolve_qualified_expression_name): Test `qual_wfl' code. - (qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation, - handle `qual_wfl' by code. - (maybe_build_primttype_type_ref): Test `wfl' code. - -2001-05-23 Theodore Papadopoulo - - * Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on - fdl.texi. - (java/gcj.dvi): Use TEXI2DVI instead of custom tex calls. Create - the dvi file in the java directory. - -2001-05-25 Sam TH - - * gen-table.pl javaop.h jcf.h lex.h, - parse.h: Fix header include guards. - -2001-05-23 Joseph S. Myers - - * jv-scan.c (version): Update copyright year. - -2001-05-21 Per Bothner - - * jcf-parse.c (read_class): If class is from .class or .zip file - and it's already been read, don't push/pop parser context. - -2001-05-18 Per Bothner - - * jvspec.c (lang_specific_pre_link): Re-arrange the linker - command line so the jvgenmain-generated main program comes first. - -2001-05-15 Tom Tromey - - * class.c (build_utf8_ref): Don't generate identifier based on - utf8const contents. - -2001-05-12 Richard Henderson - - * java-tree.def (JAVA_EXC_OBJ_EXPR): New. - * expr.c (java_lang_expand_expr): Expand it. - (process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of - calling build_exception_object_ref. - * parse.y (catch_clause_parameter): Likewise. - (build_dot_class_method): Likewise. - (try_reference_assignconv): Likewise. - * check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR. - * jcf-write.c (generate_bytecode_insns): Likewise. - -2001-05-07 Alexandre Petit-Bianco - - * parse.y (build_unresolved_array_type): Set - EXPR_WFL_QUALIFICATION on the newly created wfl. - Fixes PR java/2538. Fixes PR java/2535. - -2001-05-07 Alexandre Petit-Bianco - - * parse.y (fix_constructors): Removed unnecessary assignment to - local. Moved assignment to `this$', fixed comments and - indentation. - (build_wfl_wrap): Fixed indentation. - Fixes PR java/2598, java/2579 and java/2658. - -2001-05-03 Mo DeJong - - * lex.c (java_new_lexer): Call iconv_close on temp handle used to - check for byte swap. - -2000-05-02 Jeff Sturm - - * expr.c (build_class_init): Move MODIFY_EXPR - outside of COND_EXPR. Remove variable `call'. - -2001-05-02 Kaveh R. Ghazi - - * decl.c: NULL_PTR -> NULL. - * jcf-write.c: Likewise. - -2001-05-01 Tom Tromey - - * Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'. - (java/gcj.dvi): Added $(srcdir) to TEXINPUTS. - * gcj.texi: Updated copyright text. Include fdl.texi. - (Top): Link to new node. - -2001-05-01 Per Bothner - - * parse.h (REGISTER_IMPORT): Use tree_cons instead of chainon. - -2001-05-01 Per Bothner - - * parse.y (java_pop_parser_context): The TREE_VALUE of a link in the - import_list contains the name, not the TREE_PURPOSE. - -2001-04-29 Kaveh R. Ghazi - - * jcf-io.c (read_zip_member): Cast to long in comparison with - signed value. - - * jvspec.c (lang_specific_driver): Initialize variables. - - * mangle.c (find_compression_record_match): Likewise. - - * typeck.c (build_null_signature): Provide static prototype. Mark - parameter with ATTRIBUTE_UNUSED. - - * verify.c (verify_jvm_instructions): Initialize variable. - -2001-04-27 Bryce McKinlay - - * parse.y (do_resolve_class): Check for cyclic inheritance during - inner class resolution. - -2001-04-27 Per Bothner - - * parse.y (java_expand_classes): Don't change ctxp_for_generation - while iterating, since that could cause gc to lose stuff. - -2001-04-26 Per Bothner - - Fix method search wrt scope of inner classes to match JLS2. - * typeck.c (build_null_signature): New static function. - (has_method): New function. Uses build_null_signature and lookup_do. - * java-tree.h (has_method): New declaration. - * parse.y (find_applicable_accessible_methods_list): Do not search - context of inner classes here. - (patch_method_invocation): Search scope, ie. current and outer clases, - for method matching simple name, to find class. - -2001-04-26 Per Bothner - - * jcf-write.c (generate_bytecode_insns case SWITCH_EXPR): - Fix thinko: If a single case, use if_icmpeq, not ifeq. - - * constants.c (find_methodref_with_class_index): New function. - (find_methodref_index): Use find_methodref_with_class_index. - * java-tree.h (find_methodref_with_class_index): New declaration. - * jcf-write.c (generate_bytecode_insns case CALL_EXPR): Don't change - DECL_CONTEXT, instead use new find_methodref_with_class_index function. - If context changed from interface to class, don't use invokeinterface. - -2001-04-25 Per Bothner - - * verify.c (verify_jvm_instructions): For field instructions, - check that field index is valid. For invoke instructions, check that - method index is valid. - -2001-04-25 Alexandre Oliva - - * config-lang.in (target_libs): Copy from $libgcj_saved. - -2001-04-25 Bryce McKinlay - - * decl.c (init_decl_processing): Add new class "protectionDomain" - field. - * class.c (make_class_data): Set initial value for "protectionDomain". - -2001-04-22 Kaveh R. Ghazi - - * jvspec.c (lang_specific_driver): Fix memory allocation - deficit, by using concat in lieu of xmalloc/sprintf. - -2001-04-20 Per Bothner - - Fixes to compile multiple .class files at once. - * decl.c (init_decl_processing): Don't set CLASS_LOADED_P. - * java-tree.h (CLASS_PARSED_P): New macro. - (CLASS_LOADED_P): Re-define to use TYPE_SIZE and CLASS_PARSED_P. - * jcf-parse.c (jcf_parse_source): Inline into read_class. - (read_class): Avoid some code duplication. - Don't call JCF_FINISH for a .class file - might be needed later. - (jcf_parse): Don't call layout_class here. Check/set CLASS_PARSED_P - rather than CLASS_LOADED_P, since latter implies class laid out. - (yyparse): Do layout_class and JCF_FINISh here instead, in pass 2. - * parse.y: Don't need to set CLASS_LOADED_P for array types. - -2001-04-11 Kaveh R. Ghazi - - * Make-lang.in (java/boehm.o): Depend on toplev.h. - - * boehm.c: Include toplev.h. - -2001-04-06 Tom Tromey - Alexandre Petit-Bianco - - Fix for PR gcj/1404 and PR gcj/2332: - * parse.y (build_array_from_name): If we use the type_wfl then - accumulate dimensions from the original type as well. - (build_unresolved_array_type): Don't modify TYPE_OR_WFL in place. - -2001-04-06 Tom Tromey - - * parse.y (analyze_clinit_body): Return true if the second operand - of a METHOD_EXPR is nonzero. - -2001-04-06 Tom Tromey - - * Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build - directory. - ($(srcdir)/java/parse.c): Likewise. - -2001-04-05 Alexandre Petit-Bianco - - * gcj.texi: Use `which-gcj' instead of `which-g77.' - (version-gcc): Initialized. - (which-gcj): Likewise. - -2001-04-04 Alexandre Petit-Bianco - - * java-tree.h (struct lang_decl): New macro - `DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.' - * parse.y (build_instance_initializer): New function. - (add_instance_initializer): Use it. - (java_fix_constructors): Set `current_class' before fix pass. - (fix_constructors): Just return if already fixed. Move `super()' - invocation ahead. Use `build_instance_initializer.' - Fixes PR java/1315. - -2001-04-04 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Pass field's - DECL_CONTEXT to `not_accessible_p.' - (not_accessible_p): Changed parameters order in `inherits_from_p' - invocation. - -2001-03-27 Andrew Haley - - * lang-options.h: Add flag_check_references. - -2001-04-04 Per Bothner - - * java-tree.h (CONSTANT_VALUE_P): New macro. - * jcf-write.c (generate_classfile): Use CONSTANT_VALUE_P. - * parse.y (maybe_build_class_init_for_field): New static function. - (resolve_expression_name, resolve_field_access): Use - maybe_build_class_init_for_field instead of build_class_init - This does not do the init if the field is compile-time-constant. - (resolve_field_access): Simplify. - - * parse.y (fold_constant_for_init): Merge test into switch. - -2001-04-03 Zack Weinberg - - * Make-lang.in (buffer.o, check-init.o, class.o): Don't depend - on gansidecl.h. - * buffer.c, jvgenmain.c: Don't include gansidecl.h. - -2001-04-02 Zack Weinberg - - * expr.c (pop_type_0): Save the result of the first - lang_printable_name call in a scratch buffer, so it - won't be clobbered by the second call. - -2001-03-30 Alexandre Petit-Bianco - - * parse-scan.y (array_type:): Rewritten. - (type_declaration:): `empty_statement' replaces `SC_TK.' - (class_member_declaration:): `empty statement' added. - (method_body:): Simplified. - (static_initializer:): Likewise. - (primary_no_new_array:): Use `type_literals.' - (type_literals:): New rule. - (dims:): Set and update `bracket_count.' - Fixes PR java/1074. Fixes PR java/2412. - -2001-03-28 Hans Boehm - - * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.' - (get_boehm_type_descriptor): Set type on returned value to be a - pointer length integer. - -2001-03-28 Kaveh R. Ghazi - - * expr.c (pop_type_0): Call `concat' rather than building the - string manually. - (pop_type): Add format specifier in call to `error'. - - * parse.y (patch_method_invocation): Avoid casting away - const-ness. - -2001-03-28 Jeffrey Oldham - - * jvgenmain.c (do_mangle_classname): End string constant with '\0'. - -2001-03-28 Richard Henderson - - IA-64 ABI Exception Handling: - * Make-lang.in (except.o): Don't depend on eh-common.h. - * check-init.c (check_init): Handle EXC_PTR_EXPR. - * decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw. - [soft_exceptioninfo_call_node]: Remove. - [eh_personality_libfunc, lang_eh_runtime_type]: New. - (end_java_method): No emit_handlers. - * except.c (java_set_exception_lang_code): Remove. - (method_init_exceptions): Don't call it. - (prepare_eh_table_type): No CATCH_ALL_TYPE. - (build_exception_object_ref): New. - (expand_end_java_handler): Update for except.h name changes. - (emit_handlers, expand_resume_after_catch): Remove. - * expr.c (java_lang_expand_expr): Update for except.h name changes. - (process_jvm_instruction): Use build_exception_object_ref. - * java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove. - (soft_exceptioninfo_call_node): Remove. - (build_exception_object_ref): Declare. - * jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No - soft_exceptioninfo_call_node. Move processing ... - [EXC_PTR_EXPR]: ... here. - * parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code. - * parse.y (catch_clause_parameter): Use build_exception_object_ref. - (source_end_java_method): No java_set_exception_lang_code or - emit_handlers. - (build_dot_class_method): Use build_exception_object_ref. - (try_reference_assignconv): Check EXC_PTR_EXPR not - soft_exceptioninfo_call_node. - -2001-03-28 Richard Henderson - - * java-tree.h (throw_node): Define as a single member of - java_global_trees instead of a separate array. - (JTI_THROW_NODE): New. - * decl.c (throw_node): Don't declare. - (init_decl_processing): Init a scalar throw_node. - Don't register it for gc. - * check-init.c (check_init): Reference scalar throw_node. - * expr.c (build_java_athrow): Likewise. - * jcf-write.c (generate_bytecode_insns): Likewise. - * parse.h (BUILD_THROW): Likewise. - -2001-03-28 Richard Henderson - - * decl.c (end_java_method): Do not save and restore - flag_non_call_exceptions. - * parse.y (source_end_java_method): Likewise. - * lang.c (flag_exceptions): Don't declare. - (java_init_options): Set flag_non_call_exceptions. Set - flag_exceptions here ... - (java_init): ... not here. - -2001-03-27 Richard Henderson - - * expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of - exceptions_via_longjmp. - - * lang.c (flag_new_exceptions): Don't declare it. - (java_init_options): Or set it. - -2001-03-27 Richard Henderson - - * decl.c (end_java_method): Rename asynchronous_exceptions to - flag_non_call_exceptions. - * parse.y (source_end_java_method): Likewise. - -2001-03-27 Kaveh R. Ghazi - - * Make-lang.in: Depend on $(SYSTEM_H), not system.h. - -2001-03-26 Mark Mitchell - - * parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE. - -2001-03-26 Alexandre Petit-Bianco - - * parse.y (find_as_inner_class): Follow current package - indications not to mistakingly load an unrelated class. - -2001-03-25 Kaveh R. Ghazi - - * constants.c (PUTN): Use memcpy, not bcopy. - - * lex.c (java_read_char): Use memmove, not bcopy. - - * parse.y (java_parser_context_resume): Use memcpy, not bcopy. - -2001-03-23 Per Bothner - - * verify.c (verify_jvm_instructions): Replace 3 pop_type by POP_TYPE - macro for better error pin-pointing. - * java-tree.h: Fix typo in comment. - - * jcf-write.c (generate_bytecode_insns): Changes to TRY_FINALLY_EXPR. - Don't include jsr/goto in exception range. - Check if start and end of exception range are the same (also TRY_EXPR). - Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false. - However, do emit the following goto even if try_block is empty. - Defer freeing exception_decl until after the finalizer, to make - sure the local isn't reused in the finalizer. Fixes PR java/1208. - - * parse.y (java_complete_lhs): If the try-clause is empty, just - return the finally-clause and vice versa. - -2001-03-23 Alexandre Petit-Bianco - - * gcj.texi (Input Options): documented the check for attribute - `gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag. - * java-tree.h (flag_force_classes_archive_check): Declared extern. - * jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro. - (jcf_parse): Check for the right classes archive if necessary. - * jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it. - (jcf_parse_fields): Fixed indentation. - * jcf-write.c (append_gcj_attribute): New function. - (generate_classfile): Compute the attribute count, invoke - `append_gcj_attribute'. - * jcf.h (typedef struct JCF): `seen_in_zip' and `java_source' - turned into bit-fields. New bit-field `right_zip.' - (JCF_ZERO): Set `right_zip' to zero. - * lang-options.h (-fforce-classes-archive-check): Added flag. - * lang.c (flag_force_classes_archive_check): New flag. - (lang_f_options): New entry `force-classes-archive-check.' - Fixes PR java/1213. - -2001-02-07 Andrew Haley - - * gcj.texi (Configure-time Options): Add -fcheck-references. - * expr.c (build_java_indirect_ref): New function. - (java_check_reference): New function. - (build_java_array_length_access): Use build_java_indirect_ref to - check for null references. - (build_java_arrayaccess): Likewise. - (build_get_class): Likewise. - (build_field_ref): Likewise. - (invoke_build_dtable): Likewise. - (build_invokeinterface): Likewise. - * lang.c (lang_f_options): Add flag_check_references. - * jvspec.c (jvgenmain_spec): Add flag_check_references. - * java-tree.h (flag_check_references): New variable. - * lang.c (flag_check_references): Likewise. - * parse.y (patch_invoke): Use java_check_reference. - (patch_assignment): Allow for extra nesting in - _Jv_CheckArrayStore. - -2001-03-23 Bryce McKinlay - - * gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c. - * lex.c (cxx_keywords): Likewise. - -2001-03-21 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Broaden `length' - recognition. Help MODIFY_EXPR be resolved as expression names. - Fixes PR java/2066. Fixes PR java/2400. - -2001-03-21 Bryce McKinlay - - * gjavah.c (process_file): Mark interface definitions with - "__attribute__ ((java_interface))". - -2001-03-21 Alexandre Petit-Bianco - - * class.c (layout_class): Fixed push_super_field's second - argument. Fixes PR java/2333. - (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's - too early to lay innerclasses out. - -2001-03-20 Tom Tromey - Alexandre Petit-Bianco - - * parse.y (patch_assignment): Handle the case of a SAVE_EXPR - inside an array reference. Insertion of the array store check - rewritten. Fixes PR java/2299. - -2001-03-20 Tom Tromey - - * lex.c (java_read_unicode): Only accept leading `u's. - -2001-03-20 Tom Tromey - - * jcf-parse.c (read_class): Initialize `class'. - -2001-03-20 Matt Kraai - - * jcf_parse.c (jcf_parse): Eliminate unused variable. - -2001-03-19 Mark Mitchell - - * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME. - (layout_class): Likewise. - (layout_class_method): Likewise. - (emit_register_classes): Likewise. - * decl.c (builtin_function): Likewise. - (give_name_to_locals): Likewise. - -2001-03-19 Per Bothner - - * jcf-parse.c (load_inner_classes): Check CLASS_LOADED_P - before trying to load an inner class. - - Fixes to process to command-line .class files in two passes. - * java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P): New flags. - (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P): Rename to .. - (CLASS_FROM_CURRENTLY_COMPILED_P): ... because it is more general now. - * class.c (is_compiled_class): Fix for renamed flag. - * parse.y (maybe_create_class_interface_decl): Likewise. - * jcf-parse.c (yyparse): Also set if compiling .class files. - * jcf-parse.c (read_class); Read current_class. - (jcf_parse): Make static. - (load_inner_classes): New function, with code moved from jcf_parse, - because we need to inner classes after the command-line files are read. - (yyparse): Set finput to NULL when it doesn't need to be closed. - Reduce use of main_jcf (basically only for archive) and - use finput instead of main_jcf->read_state. - Inline jcf_figure_file_type into yyparse. - Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name. - Defer load_inner_classes and parse_class_file to a second pass, - after we've correctly mapped command-line .clas fiels to classes. - (jcf_figure_file_type): Removed. - * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): Removed flags. - (JCF_ZERO): Also clear zipd field. - * zipfile.h: Conditionalize on JCF_H insread of JCF_ZIP. - -2001-03-18 Matt Kraai - - * jcf-parse.c (yyparse): Change ch from char * to char. - -2001-03-19 Per Bothner - - * jvspec.c (lang_specific_driver): Check for .zip and .jar files. - Add constructed filelist-file at end, following -xjava. Thus any .o - and library files are not affected by the -xjava. Also wrap - explicit @FILE with -xjava and -xnone. - -2001-03-19 Andrew Haley - - * class.c (build_static_field_ref): Call make_decl_rtl() after - setting the DECL_EXTERNAL flag. - -2001-03-17 Per Bothner - - * decl.c (clear_binding_level): Fix initializer (broke 03-15). - - * jcf-write.c (generate_bytecode_insns): Handle emitting iinc - when result is is needed (target is STACK_TARGET). - - * parse.h (JDEP_SOLV): Removed. - * parse.y (register_incomplete_type): Use JDEP_TO_RESOLVE instead. - - * parse.y (incomplete_class_list): Removed. - (obtain_incomplete_type): Don't use or set incomplete_class_list. - It doesn't work if resolve_class changes the name of an array type - that is on the list and then someone else looks for the modified name. - Also, seems liable to break when compiling multiple source files at - once. So the simplest is to just remove incomplete_class_list - - it is only a minor space win and it is not even clear it saves time. - - * parse.y (resolve_class): Remove unneeded promote_type. - -2001-03-15 Per Bothner - - * java-tree.h (BLOCK_IS_IMPLICIT): New flag. - * parse.h (BLOCK_EXPR_ORIGIN): Removed macro. - * parse.y (declare_local_variables, maybe_absorb_scoping_blocks): - Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN. - - * jcf-parse.c (yyparse): Set/reset input_filename for source file. - * parse.y (java_expand_classes): Likewise. - - * parse.y (expand_start_java_method): Was only called once and had a - misleading name, so inline in caller java_complete_expand_method. - (enter_a_block): Likewise inline in enter_block and remove. - - Remove junk from when gcc/java was created (by copying from C/C++). - * decl.c (keep_next_level_flag, keep_next_if_subblocks): Remove. - (struct binding_level): Remove fields keep, keep_if_subblocks, - more_cleanups_ok, have_cleanups (which have never been used). - (pushlevel, poplevel): Remove related useless code. - - * class.c (make_class_data): The class_dtable_decl (i.e. the - vtable for Class) should be external, except when compiling Class. - - * jvspec.c (lang_specific_driver): Fix -C handling. - Check -save-temps to see if temp @FILE should be deleted. - Follow-up to/fix for February 16 patch. - - * verify.c (verify_jvm_instructions): Better error msgs for dup. - (type_stack_dup): Remove no-longer neded error check. - -2001-03-15 Bryce McKinlay - - * mangle.c (mangle_record_type): Rename 'from_pointer' argument - to 'for_pointer'. If this type is for a pointer (argument) mangling, - don't surround the element with 'N..E' if the type name is - unqualified. - -2001-03-14 Mark Mitchell - - * class.c (build_static_field_ref): Use COPY_DECL_RTL, - DECL_RTL_SET_P, etc. - (make_method_value): Likewise. - (get_dispatch_table): Likewise. - - * decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc. - -2001-03-07 Tom Tromey - - * config-lang.in (lang_requires): Define. - -2001-03-07 Brad Lucier - - * typeck.c (convert): Check flag_unsafe_math_optimizations, - not flag_fast_math. - -2001-03-05 Per Bothner - - Fix a problem where rest_of_decl_compilation applied to - class_dtable_decl causes problems because it was done too early, - before output file was opened. - * decl.c (init_decl_processing): Remove init of class_dtable_decl. - * class.c (class_dtable_decl): Add macro - element of class_roots. - (make_class_data): Define class_dtable_decl. - * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl): Removed. - -2001-03-01 Zack Weinberg - - * java/class.c, java/decl.c, java/java-tree.h: Replace all - uses of 'boolean' with 'bool'. - -2001-03-01 Zack Weinberg - - * lang-specs.h: Add zero initializer for cpp_spec field to all - array elements. - -2001-02-16 Per Bothner - - Handle compiling multiple input files at once, and @FILE syntax. - * gcj.texi: Updated documentation to match. - * java-tree.h (flag_filelist_file, init_src_parse): New declarations. - * jcf-parse.c (parse_source_file): Split into ... - (parse_source_file_1): New function - and: - (parse_source_file_2): New function. - (yyparse): On -ffilelist-file, open and scan named file. - On first pass over files, only do parse_source_file_1. - A new second pass calls parse_source_file_2 for each file to compile. - (init_jcf_parse): Call init_src_parse. - * jvspec.c (INDIRECT_FILE_ARG): New flag. - (lang_specific_driver): Support @FILELIST-FILE syntax, as well - as multiple input file combined in one compilation. - * lang-options.h: Add -ffilelist-file - * lang.c (flag_filelist_file): New flag variable. - (lang_f_options): Handle -ffilelist-file. - * lex.c (java_init_lex): Don't clear ctxp->incomplete_class. - * parse.h (struct parse_ctxt): Remove fields incomplete_class and - gclass_list - use global fields of src_parse_roots instead. - * parse.y (src_parse_roots): New array. - (incomplete_class_list, gclass_list): New macros. - (push_parser_context, java_pop_parser_context, - java_parser_context_resume): Don't fiddle with deleted fields. - (various): Use incomplete_class gclass_list and global macros - instead of parse_ctxt fields - the lists are global. - (init_src_parse): New function. - -2001-02-23 Richard Kenner - - * decl.c (set_block): Set NAMES and BLOCKS from BLOCK. - -2001-02-20 Alexandre Petit-Bianco - - * parse.y (check_inner_class_access): Moved declaration of local - `enclosing_decl_type' to the right location. - -2001-02-19 Bryce McKinlay - - * parse.y (parser_check_super_interface): Don't call - check_pkg_class_access for an inner interface. - (parser_check_super): Don't call check_pkg_class_access for inner - class. - (do_resolve_class): Simplify enclosing type loop. Don't call - check_pkg_class_access if CL and DECL are not set. - (find_in_imports_on_demand): Set DECL if class_type needed to be - loaded. Don't call check_pkg_class_access for an inner class. - (check_inner_class_access): Rewritten to implement member access - rules as per spec 6.6.1. - (check_pkg_class_access): Handle the empty package correctly. - (in_same_package): New function. Determine if two classes are in the - same package. - -2001-02-18 Bryce McKinlay - - * typeck.c (build_java_array_type): Don't try to poke a public `clone' - method into array types. - * parse.y (patch_method_invocation): Bypass access check on clone call - to array instance. - -2001-02-15 Alexandre Petit-Bianco - - * expr.c (build_instanceof): Check for arrays when trying fold to - false. - -2001-02-15 Jim Meyering - - * Make-lang.in (java.install-common): Depend on `installdirs'. - (java.install-info): Likewise. - -2001-02-15 Bryce McKinlay - - * Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o. - -2001-02-14 Tom Tromey - Alexandre Petit-Bianco - - Fix for PR java/1261. - * typeck.c (build_java_array_type): Add public `clone' method to - arrays. - * parse.y (resolve_qualified_expression_name): Use current_class - when checking for inaccessibility. - (patch_method_invocation): Fixed error message when accessibility - denied. Added `from_super' argument. - -2001-02-14 Alexandre Petit-Bianco - - * parse.y (resolve_class): Don't build a fake decl. Use the one - already built. - * typeck.c (build_java_array_type): Build and assign decl to array - type. - -2001-02-14 Alexandre Petit-Bianco - - * parse.y (not_accessible_p): Changed leading comment. Added extra - `where' argument. Use it to enforce protected access rules. - (resolve_qualified_expression_name): Added extra argument to - not_accessible_p. - (patch_method_invocation): Use argument `primary' to provide - not_accessible_p with an extra argument. - (lookup_method_invoke): Added extra argument to not_accessible_p. - (search_applicable_method_list): Likewise. - -2001-02-13 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Try to resolve as - an inner class access only if `decl' is a TYPE_DECL. - -2001-02-13 Alexandre Petit-Bianco - - * decl.c (classdollar_identifier_node): Initialize. - * java-tree.h (enum java_tree_index): New entry - `JTI_CLASSDOLLAR_IDENTIFIER_NODE.' - (classdollar_identifier_node): New macro. - (ID_CLASSDOLLAR_P): Likewise. - * parse.y (build_dot_class_method): Use `classdollar_identifier_node.' - (build_dot_class_method_invocation): Likewise. - (find_applicable_accessible_methods_list): `class$' can't be - inherited. - -2001-02-09 Raja R Harinath - - * Make-lang.in (java/mangle_name.o): Add 'make' prereqs. - -2001-02-09 Alexandre Petit-Bianco - - * Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o' - * jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now - gone. - -2001-02-09 Alexandre Petit-Bianco - - * mangle_name (append_unicode_mangled_name): Emit `_' or `U' - outside of the `__U' sequence too. - (unicode_mangling_length): Count `_' or `U' outside of the `__U' - sequence too. - -2001-02-09 Alexandre Petit-Bianco - - * jvgenmain.c (error): Reversed 2001-02-01 deletion. - -2001-02-08 Alexandre Petit-Bianco - - * Make-lang.in (JAVA_OBJS): Added java/mangle_name.o - (JVGENMAIN_OBJS): Likewise. - * java-tree.h (append_gpp_mangled_name): New prototype. - * jcf-parse.c (ggc_mark_jcf): Argument now `void *.' - Removed cast calling `gcc_add_root.' - * jvgenmain.c (mangle_obstack): New global, initialized. - (main): Use it. - (do_mangle_class): Constify local `ptr.' - Removed macro `MANGLE_NAME.' Removed cast in `for.' Call - append_gpp_mangle_name and update `count' if necessary. - Use `mangle_obstack.' - * mangle.c (append_unicode_mangled_name): Removed. - (append_gpp_mangled_name): Likewise. - (unicode_mangling_length): Likewise. - (mangle_member_name): Return type set to `void.' - (mangle_field_decl): Don't append `U' in escaped names. - (mangle_method_decl): Likewise. - (mangle_member_name): Just use `append_gpp_mangled_name.' - * mangle_name.c: New file. - -2001-02-07 Per Bothner - - * check-init.c (check_init): Fix TRY_FINALLY_EXPR logic. - - * check-init.c (check_init): Don't call done_alternative after - processing loop code, as a LOOP_EXPR never terminates normally. - -2001-02-08 Joseph S. Myers - - * gcj.texi: Change sources.redhat.com reference to gcc.gnu.org. - -2001-02-07 Alexandre Petit-Bianco - - * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field - DECLs. - -2001-02-06 Tom Tromey - - * lex.c (java_new_lexer): Longer error message. - -2001-02-05 Jeff Sturm - Alexandre Petit-Bianco - - * typeck.c (build_prim_array_type): Added leading comment. - (build_java_array_type): Moved locals out of - block. Always create the `data' field, fixed alignment to match - C++. - -2001-02-04 Tom Tromey - - * expr.c (java_lang_expand_expr): Don't bother recomputing - `length'. Use rest_of_decl_compilation, not make_decl_rtl. - Fixes PR java/1866. - -2001-02-05 Alexandre Petit-Bianco - - * parse.y (process_imports): Save the original name of the import - for better error report. - -2001-02-04 Bryce McKinlay - - * Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list - of macros used when compiling jvspec.c. - * jvspec.c (lang_specific_driver): Link with the shared - libgcc by default. - -2001-02-04 Richard Kenner - - * check-init.c (check_init): Call internal_error instead of fatal. - * expr.c (java_lang_expand_expr): Likewise. - * jcf-parse.c (get_constant): Likewise. - * mangle.c (java_mangle_decl): Likewise. - * parse.y (make_nested_class_name, java_complete_lhs): Likewise. - (operator_string): Likewise. - * check-init.c (check_init): Call abort instead of fatal. - * class.c (build_class_ref): Likewise. - * constants.c (write_constant_pool): Likewise. - * decl.c (start_java_method): Likewise. - * expr.c (push_type, java_stack_pop, java_stack_swap): Likewise. - (java_stack_dup, encode_newarray_type): Likewise. - (build_java_array_length_access): Likewise. - (build_java_check_indexed_type, expand_java_pushc): Likewise. - (build_java_soft_divmod, build_invokeinterface): Likewise. - * java-tree.h (INNER_CLASS_P): Likewise. - * jcf-parse.c (parse_signature, get_name_constant): Likewise. - (give_name_to_class, get_class_constant): Likewise. - * jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise. - (find_constant_index, generate_bytecode_conditional): Likewise. - (generate_bytecode_insns, perform_relocations): Likewise. - * lex.c (java_unget_unicode, java_lex): Likewise. - * mangle.c (mangle_type, mangle_record_type): Likewise. - (mangle_pointer_type, mangle_array_type, init_mangling): Likewise. - (finish_mangling): Likewise. - * parse.h (MARK_FINAL_PARMS): Likewise. - * parse.y (pop_current_osb, unreachable_stmt_error): Likewise. - (obtain_incomplete_type, java_complete_class): Likewise. - (java_check_regular_methods, java_complete_expand_method): Likewise. - (cut_identifier_in_qualified, check_deprecation): Likewise. - (patch_invoke, find_applicable_accessible_methods_list): Likewise. - (java_complete_lhs, lookup_name_in_blocks): Likewise. - (check_final_variable_indirect_assignment, build_unaryop): Likewise. - * typeck.c (set_local_type, parse_signature_type): Likewise. - (parse_signature_string, build_java_signature): Likewise; - (set_java_signature): Likewise. - * verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise. - * class.c (add_method): Call fatal_error instead of fatal. - (build_static_field_ref): Likewise. - * expr.c (build_known_method_ref, expand_invoke): Likewise. - * jcf-parse.c (get_constant, jcf_parse): Likewise. - * lex.c (java_new_new_lexer): Likewise. - * jv-scan.c (main): Likewise. - (fatal_error): Renamed from fatal. - * jcf-parse.c (yyparse): Call fatal_io_error instead of - pfatal_with_name. - * jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal. - (yyparse): Likewise. - * jcf-write.c (make_class_file_name, write_classfile): Likewise. - * lex.c (java_get_line_col): Likewise. - * jcf-parse.c (load_class): Make errors non-fatal. - * lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV. - -2001-02-01 Bryce McKinlay - - * jvgenmain.c (class_mangling_suffix): Remove unused string. - (error): Remove unused function. - (main): Don't use "__attribute__ alias" on generated class symbol. - -2001-01-30 Alexandre Petit-Bianco - - * jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last - argument. - * parse.y (finish_method_declaration): Code accounting for WFLed - method DECL_NAMEs deleted. - (check_abstract_method_definitions): Likewise. - (resolve_type_during_patch): Layout resolved type. - * typeck.c (lookup_do): Removed unused local. - -2001-01-30 Bryce McKinlay - - * java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE. - * decl.c (init_decl_processing): Use integer_minus_one_node, not - integer_negative_one_node. - * expr.c (build_java_binop): Likewise. - -2001-01-24 Jeff Sturm - - * zextract.c (read_zip_archive): Read file_offset before writing - zipd and consequently clobbering the header contents. - -2001-01-27 Kaveh R. Ghazi - - * Make-lang.in: Remove all dependencies on defaults.h. - * decl.c: Don't include defaults.h. - * expr.c: Likewise. - * parse.y: Likewise. - -2001-01-25 Alexandre Petit-Bianco - - * ChangeLog (2001-01-21): Fixed typo. - * class.c (layout_class_method): Code accounting for WFLed - method DECL_NAMEs deleted. - * constant.c (find_methodref_index): Likewise. - * decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl. - * java-tree.h (DECL_FUNCTION_WFL): New macro. - (struct lang_decl): New field `wfl'. - (java_get_real_method_name): Prototype deleted. - * mangle.c (mangle_method_decl): Code accounting for WFLed - method DECL_NAMEs deleted. - * parse.h (GET_METHOD_NAME): Macro deleted. - * parse.y (reset_method_name): Deleted. - (method_header): Set DECL_FUNCTION_WFL. - (check_abstract_method_header): Code accounting for WFLed method - DECL_NAMEs deleted. - (java_get_real_method_name): Deleted. - (check_method_redefinition): Code accounting for WFLed method - DECL_NAMEs deleted. Use DECL_FUNCTION_WFL. - (java_check_regular_methods): Likewise. - (java_check_abstract_methods): Likewise. - (java_expand_classes): Don't call `reset_method_name.' - (search_applicable_method_list): Use DECL_NAMEs instead of - GET_METHOD_NAME. - * typeck.c (lookup_do): Code accounting for WFLed method - DECL_NAMEs deleted. - -2001-01-25 Richard Earnshaw - - * lex.c (java_read_char): Check for EOF from getc first. - -2001-01-23 Alexandre Petit-Bianco - - * class.c (layout_class): Don't lay the superclass out if it's - already being laid out. - * jcf-parse.c (handle_innerclass_attribute): New function. - (HANDLE_INNERCLASSES_ATTRIBUTE): Invoke - handle_innerclasses_attribute. - (jcf_parse): Don't load an innerclasses if it's already being - laid out. - * jcf-write.c (append_innerclass_attribute_entry): Static - `anonymous_name' and its initialization deleted. `ocii' and `ini' - to be zero for anonymous classes. - -2001-01-23 Alexandre Petit-Bianco - - * class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if - necessary. - * jcf-parse.c (set_source_filename): Use - MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary. - -2001-01-23 Alexandre Petit-Bianco - - * expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it - gets a unique asm name. - -2001-01-23 Alexandre Petit-Bianco - - * jcf-parse.c (HANDLE_END_METHODS): Nullify current_method. - (HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC - if necessary. - (HANDLE_SYNTHETIC_ATTRIBUTE): New macro. - * jcf-reader.c (get_attribute): Handle `Synthetic' attribute. - * parse.y (lookup_package_type_and_set_next): Deleted. - (resolve_package): Removed unnecessary code. - (find_applicable_accessible_methods_list): `finit$' can't be - inherited. - * verify.c (pop_argument_types): Added missing prototype. - -2001-01-23 Bryce McKinlay - - * config-lang.in: Disable java by default. - -2001-01-23 Tom Tromey - - * gcj.texi (Copying): New node. - Added copyright information. - -2001-01-21 Per Bothner - - Various fixes to allow compiling a compressed .jar/.zip archive. - * zipfile.h (struct ZipFileCache): Replace by struct ZipFile. - (struct ZipFile): Add fields name and next (from ZipFileCache). - (struct ZipDirectory): New field zipf points to owning ZipFile. - * jcf.h (struct ZipDirectory): Add forward declaration. - (struct JCF): Declare zipd field to have type struct ZipDirectory. - Remove seen_in_zip and zip_offset fields. - (JCF_SEEN_IN_ZIP): New macro. - * zextract.c (read_zip_archive): Set ZipDirectory's zipf field. - * jcf-io.c: Change all ZipFileCache to ZipFile. - (read_zip_member): New function. - (open_in_zip): Call read_zip_member. - * jcf-parse.c (find_in_current_zip): Remove function. - (read_class): Merge in find_in_current_zip functionality. - Call read_zip_member if needed. - (parse_zip_file_entries): Use read_zip_member. - (process_zip_dir): Update for removed and added JCF fields. - (jcf_figure_file_type): Re-use, don't copy initial ZipFile struct. - -2001-01-21 Per Bothner - - Minor optimization of static ggc roots. - * jcf-parse.c (parse_roots): New static field. - (current_field, current_method, current_file_list): Replace by macros - naming fields of parse_roots. - (init_jcf_parse): Combine 3 ggc_add_tree_root calls to 1. - * class.c (class_roots): New static field. - (registered_class, fields_ident, info_ident, class_list): - New macros naming fields of parse_roots. - (build_static_field_ref): Don't register roots here. - (layout_class): Static field list replaced by macro class_list. - (init_class_processing): Call ggc_add_tree_root for 4 roots. - Initialize fields_ident and info_ident here. - -2001-01-21 Per Bothner - - * jcf-parse.c (ggc_mark_jcf): New function. - (init_jcf_parse): Register current_jcf as ggc root. - -2001-01-21 Per Bothner - - * lang.c (put_decl_node): Print method's name. - -2001-01-21 Per Bothner - - * verify.c (VERIFICATION_ERROR_WITH_INDEX): New macro. - (verify_jvm_instructions): Use it, for better error messages on loads. - -2001-01-21 Per Bothner - - * verify.c (merge_type_state): Still may have to merge even if - LABEL_VERIFIED (label). - -2001-01-21 Per Bothner - - * parse.y (method_header): Don't set the DECL_NAME of a FUNCTION_DECL - to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong. - -2001-01-19 Per Bothner - - * expr.c (pop_type_0): Only return object_ptr_type_node on mismatch - if expeting an interface type. Refines Tom's change of 2000-09-12. - -2001-01-18 Per Bothner - - * gcj.texi (Input Options): Mention .java files. - -2001-01-17 Alexandre Petit-Bianco - - * lang-options.h (-Wunsupported-jdk11): Removed. - * lang.c (flag_not_overriding): Deleted. - (flag_static_local_jdk1_1): Likewise. - (lang_W_options): Removed "unsupported-jdk11" entry. - * parse.y (java_check_methods): Removed dead code. - -2001-01-17 Tom Tromey - - Changes suggested by Per Bothner: - * gcj.texi (Input Options): Don't mention input files. - (Code Generation): Updated --main information. - (Invoking jcf-dump): Mention that --javap is incomplete. - From Alexandre Petit-Bianco: - (Warnings): Don't mention -Wunsupported-jdk11. - My stuff: - (Compatibility): Mention JDK 1.2-ness of libraries. - (Resources): Mention resources used when writing gcj. - -2001-01-17 Tom Tromey - - * gcj.texi: New file. - * Make-lang.in ($(srcdir)/java/gcj.info): New target. - (java.info): Depend on gcj.info. - (java/gcj.dvi): New target. - (java.dvi): Depend on gcj.dvi. - (java.install-info): Wrote. - -2001-01-16 Jeff Sturm - - * expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after - having called make_decl_rtl. - -2001-01-14 Per Bothner - - Various patches to emit better messages on verification errors. - * expr.c (push_type_0): Return error indication on stack overflow, - instead of callinfg fatal. - (push_type): Now just call push_type_0 (nd fatal on overflow). - (pop_type_0): Return detailed error message (in a char** argument). - (pop_type): If pop_type_0 fails, print error message. - (pop_argument_types): Moved to verify.c. - * verify.c (pop_argument_types): Moved from expr.c. - Return a (possible) error message, rather than void. - (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING): New macros. - (verify_jvm_instruction): Use new macros, improving error messages. - For case OPCODE_astore use object_ptr_type_node. - * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED): New macros. - (pop_type_0, push_type_0, pop_argument_types): Update accordingly. - - * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is - constant, return body without wrapper. (Improves constant folding.) - * lex.c (build_wfl_node): Clear TREE_TYPE from returned node. - -2001-01-13 Per Bothner - - * expr.c (expand_java_field_op): Assigning to a final field outside - an initializer does not violate JVM spec, so should be warning, not - error. (Sun's verifier does not complain - though MicroSoft's does.) - -2001-01-12 Joseph S. Myers - - * gjavah.c (version), jcf-dump.c (version): Update copyright year - to 2001. - -2001-01-11 Bryce McKinlay - - * parse.y (resolve_expression_name): Permit instance variables from - enclosing context in super constructor call. - (resolve_qualified_expression_name): Permit enclosing class's qualified - "this" in super constructor call. - -2001-01-10 Mark Mitchell - - * class.c (build_utf8_ref): Remove last argument in call to - make_decl_rtl; use make_function_rtl instead of make_decl_rtl. - (build_class_ref): Likewise. - (build_static_field_ref): Likewise. - (get_dispatch_table): Likewise. - (layout_class_method): Likewise. - (emit_register_classes): Likewise. - * constants.c (build_constant_data_ref): Likewise. - * decl.c (builtin_function): Likewise. - (create_primitive_vtable): Likewise. - * expr.c (build_known_method_def): Likewise. - (build_jni_stub): Likewise. - (java_lang_expand_expr): Likewise. - -2001-01-10 Tom Tromey - - * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation. - -2001-01-08 Alexandre Petit-Bianco - - * java-tree.h (lang_printable_name_wls): New prototype. - * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT - rather than `current_class' to print type name. Don't prepend type - names when printing constructor names. - (lang_printable_name_wls): New function. - * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to - `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE. - * parse.y (patch_method_invocation): Message tuned for constructors. - (not_accessible_p): Grant `private' access from within - enclosing contexts. - -2001-01-07 Alexandre Petit-Bianco - - All files with updated copyright when applicable. - * Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o. - * class.c (mangle_class_field): Function removed. - (append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise. - (utf8_cmp, cxx_keyword_p): Moved to lex.c. - (build_class_ref): Call `java_mangle_class_field' instead of - `mangle_class_field.' - (build_dtable_decl): Rewritten to call `java_mangle_vtable.' - (layout_class): Call `java_mangle_decl' instead of - `mangle_static_field.' - (cxx_keywords): Initialized static array moved to `lex.c.' - (layout_class_method): Changed leading comment. Simplified to - call `java_mangle_decl.' Local `ptr' moved in for loop body. - * decl.c (lang_mark_tree): Mark field `package_list.' - * java-tree.h (TYPE_PACKAGE_LIST): New macro. - (struct lang_type): New field `package_list.' - (unicode_mangling_length): Prototype removed. - (append_gpp_mangled_name, append_gpp_mangled_classtype, - emit_unicode_mangled_name): Likewise. - (cxx_keyword_p): New prototype. - (java_mangle_decl, java_mangle_class_field, - java_mangle_class_field_from_string, java_mangle_vtable): Likewise. - * jcf-parse.c (jcf_parse_source): Constify `file' argument to - `build_expr_wfl.' - * jvgenmain.c (main_method_prefix): Global variable removed. - (main_method_suffix): Likewise. - (do_mangle_classname): New function. - (main): Call it. Format changed to accommodate new mangling scheme. - * lex.c: (utf8_cmp): Conditionally prototyped. - (cxx_keywords): Moved from class.c, conditionally defined. - (utf8_cmp, cxx_keyword_p): Likewise. - * mangle.c (obstack.h, ggc.h): Included. - (mangle_field_decl): New function. - (mangle_method_decl, mangle_type, mangle_pointer_type, - mangle_array_type, mangle_record_type, - find_compression_pointer_match, find_compression_array_match, - find_compression_record_match, - find_compression_array_template_match, set_type_package_list, - entry_match_pointer_p, emit_compression_string, init_mangling, - finish_mangling, compression_table_add, mangle_member_name): Likewise. - (mangle_obstack): New global. - (MANGLE_RAW_STRING): New macro. - (unicode_mangling_length): Turned static. - (append_unicode_mangled_name): Renamed from - `emit_unicode_mangled_name.' Turned static. `mangle_obstack' - replaces `obstack', removed from the parameter list. - (append_gpp_mangled_name): Turned static. `mangle_obstack' - replaces parameter `obstack', removed from the parameter list. Call - `append_unicode_mangled_name' instead of `emit_unicode_mangled_name. - (append_gpp_mangled_classtype): Removed. - (compression_table, compression_next): New static variables. - * parse.y (temporary_obstack): Extern declaration removed. - -2001-01-05 Alexandre Petit-Bianco - - * parse.y (patch_binop): Compute missing type in error situations. - -2001-01-05 Bryce McKinlay - - * class.c (make_class_data): Push initial value for "arrayclass". - * decl.c (init_decl_processing): Add new class field "arrayclass". - -2001-01-05 Bryce McKinlay - - From patha@softlab.ericsson.se: - * parse.y (switch_label): Use build, not build1, to construct - DEFAULT_EXPR. - -2001-01-04 Neil Booth - - * lang.c (lang_decode_option): Change -MA to -MP. - * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target): - Update to new prototype; do quote targets. - (jcf_dependency_write): Update. - -2000-12-22 Bryce McKinlay - - Shorten primitive array allocation path: - * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray - to create new primitive arrays. - * expr.c (build_newarray): If generating native code, call - soft_newarray_node with a reference to the primitive TYPE identifier - instead of type_value. - -2000-12-17 Bryce McKinlay - - Fix for PRs gcj/312 and gcj/253: - * parse.y (valid_ref_assignconv_cast_p): Load classes for source and - dest if they arn't already. - * class.c (layout_class): Call maybe_layout_super_class on - superinterfaces also, but only if compiling from bytecode. - - Fix for PR gcj/373: - * parse.y (create_class): Set ACC_STATIC if class is declared in an - interface. - -2000-12-15 Tom Tromey - - * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already - set. - -2000-12-14 Andrew Haley - - * boehm.c (mark_reference_fields): Change test to correctly detect - bitmap overflow. - -2000-12-15 Andreas Jaeger - - * config-lang.in (lang_dirs): Added. - -2000-12-15 Alexandre Petit-Bianco - - * parse.y (end_artificial_method_body): Fixed undefined behavior. - Credits go to rth for finding it. - -2000-12-13 Mike Stump - - * parse.y (check_static_final_variable_assignment_flag): Fix spelling. - -2000-11-07 Tom Tromey - - * Make-lang.in (JAVA_LEX_C): Added chartables.h. - * lex.c (java_ignorable_control_p): Removed. - (java_letter_or_digit_p): Removed. - (java_start_char_p): New function. - (java_read_char): Return `int', not `unicode_t'. Changed - callers. - (java_read_unicode): Likewise. - (java_read_unicode_collapsing_terminators): Likewise. - (java_get_unicode): Likewise. - (java_new_lexer): Initialize hit_eof. - (java_parse_end_comment): Take `int' argument. - (java_parse_doc_section): Likewise. - (java_parse_escape_sequence): Don't allow backlash-newline. - Return `int'. - * lex.h (JAVA_DIGIT_P): Removed. - (_JAVA_LETTER_OR_DIGIT_P): Removed. - (_JAVA_IDENTIFIER_IGNORABLE): Removed. - (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P. - (JAVA_PART_CHAR_P): New macro. - (UEOF): Now -1. - (JAVA_CHAR_ERROR): Now -2. - (java_lexer): New field `hit_eof'. - * chartables.h: New file. - * gen-table.pl: new file. - -2000-11-20 Tom Tromey - Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): Only allow compound assignment of - reference type if type is String. - -2000-12-09 Alexandre Petit-Bianco - - * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip. - jcf-path.c: Likewise. - -2000-12-09 Anthony Green - - * zipfile.h (ZipDirectory): Declare size, uncompressed_size, - filestart and filename_length as int values. - -2000-12-07 Mo DeJong - - * jcf-io.c (find_class): Correct the logic that tests to see if a - .java file is newer than its .class file. The compiler was - incorrectly printing a warning when file mod times were equal. - -2000-12-07 Zack Weinberg - - * jvgenmain.c: Use ISPRINT not isascii. - -2000-12-06 Alexandre Petit-Bianco - - * parse.y (end_artificial_method_body): Fixed typo. - -2000-12-04 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Pick the correct enclosing - context when creating inner class instances. - Fixes gcj/332. - -2000-11-26 Joseph S. Myers - - * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version): - Update copyright year to 2000. - -2000-11-23 Anthony Green - - * jcf-parse.c (init_jcf_parse): Register current_file_list root. - Move current_file_list out of yyparse and make it static. - - * expr.c: Declare quick_stack and tree_list_free_list as static - (init_expr_processing): Register quick_stack and - tree_list_free_list roots. - -2000-11-22 Alexandre Petit-Bianco - - * parse.y (build_outer_field_access): New local `decl_ctx', use - it. Check for field's context and current class immediate outer - context inheritance. - (outer_field_access_p): Consider fields inherited from the last - enclosing context. - (build_access_to_thisn): Stop at the last enclosing context if - necessary. - Fixes gcj/367. - -2000-11-23 J"orn Rennecke - - * Make-lang.in (jvspec.o): Depend on $(CONFIG_H). - -2000-11-22 Bryce McKinlay - - * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the - scratch buffer. - -2000-11-20 Tom Tromey - - * jv-scan.c (help): Document --complexity. - (options): Added --complexity. - (flag_complexity): New global. - (main): Call `report'. - * parse-scan.y (complexity): New global. - (if_then_statement, if_then_else_statement, - if_then_else_statement_nsi, switch_block_statement_group, - while_expression, do_statement, for_begin, continue_statement, - throw_statement, catch_clause, finally, method_invocation, - conditional_and_expression, conditional_or_expression, - conditional_expression): Update complexity. - (reset_report): Reset complexity. - (report): New function. - -2000-11-20 Tom Tromey - - * lex.c (yylex): Added STRICT_TK case. - * parse.y (STRICT_TK): Added. - * parse-scan.y (STRICT_TK): Added. - * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and - `;'. Use 4, not 3, with -k option. Correctly rename resulting - file. - * keyword.h: Rebuilt. - * keyword.gperf (strictfp): Added. - -2000-11-20 Tom Tromey - - * lex.c (yylex): Recognize floating point constants with leading - 0. - -2000-11-19 Kaveh R. Ghazi - - * java-tree.h (cyclic_inheritance_report): Constify. - * parse.y (cyclic_inheritance_report): Likewise. - -2000-11-17 Zack Weinberg - - * parse.y (goal): Remove call to ggc_add_string_root. - -2000-11-16 Zack Weinberg - - * jcf-parse.c (get_constant), parse.y (do_merge_string_cste): - Create string in scratch buffer, then pass to build_string. - -2000-11-13 Joseph S. Myers - - * parse.y (issue_warning_error_from_context): Add - ATTRIBUTE_PRINTF. - -2000-11-11 Anthony Green - - * jcf-parse.c (process_zip_dir): Add finput parameter. - (jcf_figure_file_type): Call process_zip_dir with appropriate - argument. - -2000-11-10 Kaveh R. Ghazi - - * decl.c (copy_lang_decl): Use memcpy, not bcopy. - * jcf-parse.c (jcf_figure_file_type): Likewise. - -2000-11-09 Joseph S. Myers - - * parse.y (create_new_parser_context): Use memset () instead of - bzero (). - -2000-11-08 Tom Tromey - - * gjavah.c (process_file): Only include gcj/cni.h when generating - CNI stubs. - -2000-11-07 Joseph S. Myers - - * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c - (init_outgoing_cpool), lex.c (java_init_lex): Use memset () - instead of bzero (). - -2000-11-05 Tom Tromey - - * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix. - * lex.c (IS_ZERO): New define. - (java_perform_atof): Error on floating point underflow. - -2000-11-04 Tom Tromey - - * lex.c (java_parse_escape_sequence): Only read two octal - characters if the first one is greater than 3. Don't allow - "octal" numbers to include the digits 8 or 9. - -2000-11-05 Joseph S. Myers - - * Make-lang.in (java.distdir): Remove. - -2000-11-03 Tom Tromey - - * Make-lang.in (java.dvi): New target. - Partial fix for PR other/567. - - * lang-options.h: Mention -Wout-of-date. - * jcf-dump.c (flag_newer): New global. - * gjavah.c (flag_newer): New global. - * jcf-io.c (find_class): Only warn when flag_newer set. - * lang.c (flag_newer): New global. - (struct string_option): New declaration. - (lang_W_options): New global. - (process_option_with_no): New function. - (lang_decode_option): Use it. - - * class.c (cxx_keyword_p): Accept keywords with trailing `$'s. - * gjavah.c (cxx_keyword_subst): Handle any number of trailing - `$'. - - * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro. - (JAVA_ID_CHAR_P): Also try java_ignorable_control_p. - * lex.c (java_read_unicode): Removed `term_context' argument. - Recognize any number of `u' in `\u'. - (java_read_unicode_collapsing_terminators): New function. - (java_get_unicode): Use it. - (java_lineterminator): Removed. - (yylex): Produce error if character literal is newline or single - quote. Return if eof found in middle of `//' comment. EOF in - `//' comment is only an error if pedantic. - (java_ignorable_control_p): New function. - (java_parse_end_comment): Return if eof found in middle of - comment. - Include flags.h. - * jv-scan.c (pedantic): New global. - -2000-10-31 Alexandre Petit-Bianco - - * parse.y (outer_field_access_p): Inherited fields aren't - consider outer fields. - (maybe_build_thisn_access_method): Use - PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P. - (resolve_expression_name): Trigger an error if a static field - is being accessed as an outer field. - -2000-10-29 Alexandre Petit-Bianco - - * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'. - Fixes gcj/365. - -2000-10-27 Zack Weinberg - - * Make-lang.in: Move all build rules here from Makefile.in, - adapt to new context. Wrap all rules that change the current - directory in parentheses. Expunge all references to $(P). - When one command depends on another and they're run all at - once, use && to separate them, not ;. Add OUTPUT_OPTION to - all object-file generation rules. Delete obsolete variables. - - * Makefile.in: Delete. - * config-lang.in: Delete outputs= line. - -2000-10-25 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): NULLify this_arg when already - inserted. - (maybe_use_access_method): Handle call to methods unrelated to the - current class. Fixed comment. - Fixes gcj/361. - -2000-10-24 Alexandre Petit-Bianco - - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in - scope. - -2000-10-24 Tom Tromey - - * lex.c (java_new_lexer): Initialize new fields. Work around - broken iconv() implementations. - (java_read_char): Swap bytes if required. Use fallback decoder if - required. - (byteswap_init, need_byteswap): New globals. - (java_destroy_lexer): Only close iconv handle if it is in use. - * lex.h (java_lexer): New fields read_anything, byte_swap, - use_fallback. - Made out_buffer unsigned. - -2000-10-24 Alexandre Petit-Bianco - - * parse.y (register_incomplete_type): Include JDEP_FIELD as a case - where an enclosing context can be set on the jdep. - (do_resolve_class): Fixed identation. - -2000-10-21 Kaveh R. Ghazi - - * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define - - * jcf-reader.c (peek_attribute, skip_attribute): Only define - when requested. - - * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN. - - * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void. - -2000-10-18 Alexandre Petit-Bianco - - * jcf-write.c (OP1): Update `last_bc'. - (struct jcf_block): Fixed indentation and typo in comments. New - field `last_bc'. - (generate_bytecode_insns): Insert `nop' if `jsr' immediately - follows `monitorenter'. - * parse.y (patch_synchronized_statement): New local `tmp'. Call - `patch_string'. - Fixes gcj/232. - -2000-10-16 Tom Tromey - - * jvspec.c (lang_specific_driver): Recognize -MF and -MT. - * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}. - * lang-options.h: Added -MA, -MT, -MF.. - * lang.c (lang_decode_option): Recognize -MA, -MT, -MF. - (DEPEND_TARGET_SET): New macro. - (DEPEND_FILE_ALREADY_SET): Likewise. - (init_parse): Handle new flags. - * jcf.h (jcf_dependency_print_dummies): Declare. - * Make-lang.in (s-java): Added mkdeps.o. - * Makefile.in (BACKEND): Added mkdeps.o. - (../gcjh$(exeext)): Added mkdeps.o. - (../jcf-dump$(exeext)): Added mkdeps.o. - * jcf-depend.c: Include mkdeps.h. - (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS, - add_entry): Removed. - (jcf_dependency_reset): Rewrote. - (dependencies): New global. - (jcf_dependency_set_target): Rewrote. - (jcf_dependency_add_target): Likewise. - (jcf_dependency_add_file): Likewise. - (munge): Removed. - (print_ents): Removed. - (jcf_dependency_write): Rewrote. - (print_dummies): New global. - (jcf_dependency_print_dummies): New function - (jcf_dependency_write): Call deps_dummy_targets if required. - -2000-10-18 Alexandre Petit-Bianco - - * gjavah.c (add_class_decl): Removed unused variables `tname', - `tlen' and `name_index'. - * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro. - * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME - in `wfl_operator' with value. - (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE. - (jcf_figure_file_type): Fixed identation. - * lex.c (java_get_line_col): Use EOF. Tuned `^' placement. - * parse.y (analyze_clinit_body): New function. - (static_initializer:): Reset `current_static_block'. - (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in - `wfl_operator' with new value. - (lookup_cl): Use EXPR_WFL_FILENAME. - (maybe_yank_clinit): Handle bogus bodies, call - analyze_clinit_body. - (build_outer_field_access): Access to this$ built from - current_class, not its outer context. - (build_access_to_thisn): Fixed leading comment. Tidied things up. - (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'. - (patch_method_invocation): Use `is_static_flag' when already - initialized. - (patch_newarray): Removed assignment in ternary operator. - -2000-10-17 Alexandre Petit-Bianco - - * except.c (free_eh_ranges): Don't free `whole_range'. - -2000-10-15 Anthony Green - - * decl.c (init_decl_processing): Call init_class_processing before - anything else. - -2000-10-13 Alexandre Petit-Bianco - - * check-init.c (check_init): Fixed leading comment. Use - LOCAL_FINAL_P. - * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. - (give_name_to_locals): Likewise. - (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl' - fields in lang_decl_var. - * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR, - DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros. - (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten. - (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC, - DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros. - (LOCAL_FINAL): Rewritten. - (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P - MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros. - (struct lang_decl): Fixed comments. Added `synthetic_ctor' and - `init_final' fields. - (struct lang_decl_var): Fixed leading comment. Added `am', `wfl', - `final_uid', `final_liic', `final_ierr' and `local_final' fields. - (TYPE_HAS_FINAL_VARIABLE): New macro. - (struct lang_type): Added `afv' field. - * parse.y (check_static_final_variable_assignment_flag): New function. - (reset_static_final_variable_assignment_flag): Likewise. - (check_final_variable_local_assignment_flag): Likewise. - (reset_final_variable_local_assignment_flag): Likewise. - (check_final_variable_indirect_assignment): Likewise. - (check_final_variable_global_assignment_flag): Likewise. - (add_inner_class_fields): Use LOCAL_FINAL_P. - (register_fields): Handle local finals and final variables. - (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR. - (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. - (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC - on local finals. - (java_complete_expand_methods): Loop to set - TYPE_HAS_FINAL_VARIABLE. Call - `reset_final_variable_local_assignment_flag' and - `check_final_variable_local_assignment_flag' accordingly before - and after constructor expansion. Call - `reset_static_final_variable_assignment_flag' - before expanding and after call - `check_static_final_variable_assignment_flag' if the - current_class isn't an interface. After all methods have been - expanded, call `check_final_variable_global_assignment_flag' and - `check_static_final_variable_assignment_flag' if the current class - is an interface. - (maybe_yank_clinit): Fixed typo in comment. - (build_outer_field_access_methods): Removed old sanity check. Use - FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC. - Don't create access methods for finals. - (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'. - (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if - existing DECL_INIT has been processed. - (java_complete_lhs): Likewise. - (check_final_assignment): Filter input on `lvalue''s TREE_CODE. - Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new - logic. - (patch_assignment): Use LOCAL_FINAL_P. - (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if - DECL_INITIAL is nullified. - Fixes gcj/163. - -2000-10-13 Kaveh R. Ghazi - - * Make-lang.in (parse.c, parse-scan.c): Create atomically. - - * Makefile.in (parse.c, parse-scan.c): Likewise. - -2000-10-12 Mark Mitchell - - * class.c (temporary_obstack): Remove. - (make_class): Don't mess with obstascks. - (push_class): Likewise. - (set_super_info): Likewise. - (add_method_1): Likewise. - (add_method): Likewise. - (add_field): Likewise. - (build_utf8_ref): Likewise. - (build_class_ref): Likewise. - (build_static_field_ref): Likewise. - (finish_class): Likewise. - (push_super_field): Likewise. - (layout_class): Likewise. - (layout_class_methods): Likewise. - (init_class_processing): Likewise. - * constants.c (get_tag_node): Likewise. - (build_constant_data_ref): Likewise. - * decl.c (ggc_p): Remove. - (copy_lang_decl): Use ggc_alloc. - (complete_start_java_method): Don't mess with obstacks. - (start_java_method): Likewise. - (end_java_method): Likewise. - * except.c (link_handler): Use xmalloc. - (free_eh_ranges): New function. - (method_init_exceptions): Use it. - (add_handler): Use xmalloc. - (expand_start_java_handler): Don't mess with obstacks. - (prepare_eh_table_type): Likewise. - (expand_end_java_handler): Likewise. - * expr.c (push_value): Likewise. - (create_label_decl): Likewise. - (build_jni_stub): Likewise. - (java_lang_expand_expr): Likewise. - (note_instructions): Use xrealloc. - (java_push_constant_from_pool): Don't mess with obstacks. - (process_jvm_instruction): Likewise. - * java-tree.h (cyclic_inheritance_report): Remove duplicate - declaration. - * jcf-parse.c (get_constant): Don't mess with obstacks. - (read_class): Likewise. - (jcf_parse): Likewise. - * lex.c (expression_obstack): Remove. - (java_lex): Don't use obstack_free. - * parse.h (exit_java_complete_class): Don't mess with obstacks. - (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust. - (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise. - (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise. - * parse.y (gaol): Add more GC roots. - (add_inner_class_fields): Adjust calls to MANGLE_* macros. - (lookup_field_wrapper): Likewise. - (obtain_incomplete_type): Don't mess with obstacks. - (build_alias_initializer_parameter_list): Adjust calls to MANGLE_* - macros. - (craft_constructor): Don't mess with obstacks. - (safe_layout_class): Likewise. - (java_complete_class): Likewise. - (source_end_java_method): Likewise. - (build_outer_field_access_methods): Likewise. - (build_outer_method_access_method): Likewise. - (maybe_build_thisn_access_method): Likewise. - (build_dot_class_method_invocation): Likewise. - (java_complete_tree): Likewise. - (java_complete_lhs): Likewise. - (do_merge_string_cste): Likewise. - (patch_string_cst): Likewise. - (array_constructor_check_entry): Likewise. - * typeck.c (build_java_array_type): Likewise. - (parse_signature_string): Likewise. - (build_java_signature): Likewise. - -2000-10-12 Tom Tromey - - Fix for PR gcj/356: - * gjavah.c (add_class_decl): Don't special-case inner classes. - (add_namelet): Likewise. - -2000-10-11 Rodney Brown - - * java-tree.h: Constify current_encoding. - * lang.c: Constify current_encoding. - -2000-10-10 Jeff Sturm - - * jvgenmain.c (class_mangling_suffix): Omit `.'. - (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'. - -2000-10-10 Alexandre Petit-Bianco - - * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's - patch. Fixes gcj/340. - -2000-10-10 Tom Tromey - - * lex.c (java_new_lexer): Initialize out_first and out_last - fields. - * lex.h (java_lexer): Added out_buffer, out_first, out_last. - -2000-10-09 Alexandre Petit-Bianco - - * parse.y (pop_current_osb): New function. - (array_type:): Use `dims:', changed actions - accordingly. Suggested by Anthony Green. - (array_creation_expression:): Used pop_current_osb. - (cast_expression:): Likewise. - (search_applicable_method_list): Fixed indentation. - -2000-10-08 Anthony Green - - * parse.y (array_type_literal): Remove production. - (type_literals): Refer to array_type, not array_type_literal. - -2000-10-07 Alexandre Petit-Bianco - - Patch contributed by Corey Minyard. - * decl.c (check_local_named_variable): New function. - (tree check_local_unnamed_variable): Likewise. - (find_local_variable): Splitted. Call check_local_{un}named_variable. - -2000-10-07 Anthony Green - - * class.c (layout_class): Handle case where superclass can't be - layed out yet. - -2000-10-07 Joseph S. Myers - - * Makefile.in (keyword.h): Refer to GNU FTP site for updated - gperf. - -2000-10-05 Tom Tromey - - * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'. - * jvgenmain.c (class_mangling_prefix): Removed. - (class_mangling_suffix): New global. - (main): Use it. - * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending - `$'. - (print_method_info): Handle overrides for static and final - methods. - (process_file): Generate declaration for class object field. - * class.c (cxx_keywords): New array. - (utf8_cmp): New function. - (cxx_keyword_p): New function. - (layout_class_method): Mangle C++ keywords by appending `$'. - (mangle_field): New function. - (mangle_class_field): Use mangle_field. Mangle class name as - `class$'. - (mangle_static_field): Use mangle_field. - -2000-10-03 Alexandre Petit-Bianco - - * decl.c (find_local_variable): Removed uncessary type check and - fixed range check typo. From Corey Minyard. - -2000-09-13 Alexandre Petit-Bianco - - * decl.c (give_name_to_locals): New local `code_offset'. Call - `maybe_adjust_start_pc'. - * expr.c (note_instructions): New function. - (expand_byte_code): Don't collect insn starts here. - (peek_opcode_at_pc): New function. - (maybe_adjust_start_pc): Likewise. - * java-tree.h (maybe_adjust_start_pc): Declare. - (note_instructions): Likewise. - * jcf-parse.c (parse_class_file): Call `note_instructions'. - -2000-09-13 Alexandre Petit-Bianco - - * parse.y (field_access:): Fixed indentation. - (qualify_ambiguous_name): Properly qualify `this.a[b].c'. - -2000-09-07 Tom Tromey - - Fix for PR gcj/307: - * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not - JPRIMITIVE_TYPE_P, for arithmetic operators. - (patch_method_invocation): Indentation fix. - (try_builtin_assignconv): Handle boolean specially. Fixed typo. - (valid_builtin_assignconv_identity_widening_p): Handle boolean. - (do_unary_numeric_promotion): Cleaned up code. - (valid_cast_to_p): Handle boolean correctly. - -2000-09-27 Tom Tromey - - * lex.c (java_read_unicode): Reset bs_count when finished with - `\u' sequence. - -2000-10-01 Mark Mitchell - - Convert to GC. - * Make-lang.in (s-java): Don't depend on ggc-callbacks.o. - * Makefile.in (BACKEND): Don't include ggc-callbacks.o. - (typeck.o): Depend on ggc.h. - * class.c (add_method_1): Use GC functions for allocation. - (init_class_processing): Register roots. - * decl.c (ggc_p): Set to 1. - (pending_local_decls): Make it static. - (push_jvm_slot): Use GC functions for allocation. - (init_decl_processing): Register roots. - (give_name_to_locals): Use GC functions for allocation. - (lang_mark_tree): New function. - * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC - functions for allocation. - * jcf-parse.c (jcf_parse_source): Use ggc_strdup. - * lex.c (java_lex): Use build_string, rather than replicating it - inline. - * parse.y (goal): Add more roots. - (mark_parser_ctxt): New function. - * typeck.c: Include ggc.h. - -2000-09-29 Alexandre Petit-Bianco - - * parse.y (maybe_yank_clinit): Also keep if its body - contains something else than MODIFY_EXPR. - -2000-09-23 Mark Mitchell - - * Make-lang.in (JAVA_SRCS): Include java-tree.h. - * Makefile.in (parse.o): Depend on ggc.h. - (class.o): Likewise. - (constants.o): Likewise. - (decl.o): Likewise. - (expr.o): Likewise. - (jcf-parse.o): Likewise. - (jcf-write.o): Likewise. - (mangle.o): Likewise. - * class.c: Include ggc.h. - (build_static_field_ref): Register GC roots. - (layout_class): Likewise. - (init_class_processing): Likewise. - * constants.c: Include ggc.h. - (current_constant_pool_data_ref): Remove. - (tag_nodes): Move it to ... - (get_tag_node): ... here. Register GC roots. - * decl.c: Include ggc.h. Remove many global tree definitions. - (throw_node): Define. - (java_global_trees): Likewise. - (predef_filenames): Make the size a constant. - (init_decl_processing): Adjust accordingly. - (init_decl_processing): Call init_jcf_parse. Register GC roots. - * expr.c: Include ggc.h. - (init_expr_processing): Register GC roots. - (build_invokeinterface): Likewise. - * java-tree.h: Replace extern tree declarations with macros. - (java_global_trees): New variable. - (java_tree_index): New enumeration. - (init_jcf_parse): Declare. - * jcf-parse.c: Include ggc.h. - (current_class): Remove declaration. - (main_class): Likewise. - (all_class_list): Likewise. - (predefined_filename_p): Adjust for constant size of - predef_filenames. - (init_jcf_parse): New function. - * jcf-write.c: Include ggc.h. - (generate_classfile): Register GC roots. - (append_synthetic_attribute): Likewise. - (append_innerclass_attribute_entry): Likewise. - * lang.c: Include ggc.h. - (lang_print_error): Register GC roots. - * parse.h (struct parser_ctxt): Rename fields to avoid conflicts - with macros. - * parse.y: Include ggc.h. - (wfl_operator): Remove. - (goal): Register GC roots. - (java_pop_parser_context): Adjust for new field names. - (java_parser_context_save_global): Likewse. - (java_parser_context_restore_global): Likewise. - (java_parser_context_suspend): Likewise. - (java_parser_context_resume): Likewise. - (verify_constructor_circularity): Register GC roots. - (lookup_cl): Likewise. - (java_reorder_fields): Likewise. - (build_current_this): Likewise. - (class_in_current_package): Likewise. - (argument_types_convertible): Likewise. - (patch_cast): Rename wfl_op parameter to avoid macro conflicts. - -2000-09-14 Tom Tromey - - * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV. - -2000-09-13 Tom Tromey - - * jcf-parse.c: Include . - * jv-scan.c: Include . - -2000-09-12 Tom Tromey - - * expr.c (pop_type_0): Return `Object' if trying to merge two - interface types. - * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for - interface types; `Object' is always a valid supertype. - -2000-09-12 Tom Tromey - - Fix for PR gcj/33: - * jv-scan.c (help): Document --encoding. - (options): Added `encoding' entry. - (OPT_ENCODING): New define. - (main): Handle --encoding. - Include if nl_langinfo exists. - * lang-options.h: Document --classpath, --CLASSPATH, --main, and - --encoding. - * jcf-parse.c Include if we have nl_langinfo. - (parse_source_file): Correctly call java_init_lex. Added `finput' - argument. Use nl_langinfo to determine default encoding. - * java-tree.h (current_encoding): Declare. - * parse.y (java_parser_context_restore_global): Don't restore - `finput'. - (java_parser_context_save_global): Don't set `finput' field. - (java_pop_parser_context): Don't restore `finput'. Free old lexer - if required. - * lang.c (current_encoding): New global. - (lang_decode_option): Recognize `-fencoding='. - (finish_parse): Don't close finput. - * parse.h (struct parser_ctxt): Removed `finput' and - `unget_utf8_value' fields. Added `lexer' field. - (java_init_lex): Fixed declaration. - * lex.c (java_new_lexer): New function. - (java_destroy_lexer): Likewise. - (java_read_char): Added `lex' argument. Handle iconv case. - (java_read_unicode): Added `lex' argument. Count backslashes in - lexer structure. - (java_init_lex): Added `finput' and `encoding' arguments. Set - `lexer' field in ctxp. - (BAD_UTF8_VALUE): Removed. - (java_lex): Handle seeing UEOF in the middle of a string literal. - * lex.h: Include if HAVE_ICONV defined. - (java_lexer): New structure. - (UNGETC): Removed. - (GETC): Removed. - (DEFAULT_ENCODING): New define. - (java_destroy_lexer): Declare. - -2000-09-12 Tom Tromey - - Fix for PR gcj/343: - * lex.c (java_init_lex): Initialize java_io_serializable. - * parse.y (java_io_serializable): New global. - (valid_ref_assignconv_cast_p): An array can be cast to - serializable. - -2000-09-10 Zack Weinberg - - * decl.c, expr.c: Include defaults.h if not already included. - Don't define the *_TYPE_SIZE macros. - -2000-09-09 Geoffrey Keating - - * typeck.c (build_java_array_type): Correct first parameter - in ADJUST_FIELD_ALIGN invocation. - -2000-09-06 Tom Tromey - - * lang-specs.h: Also recognize `-femit-class-files'. - -2000-09-05 Alexandre Petit-Bianco - - * verify.c (merge_types): Load the types to merge if necessary. - -2000-09-02 Anthony Green - - * jcf-io.c: Include zlib.h. - (open_in_zip): Read compressed class file archives. - * zipfile.h (ZipDirectory): Add uncompressed_size and - compression_method fields. - * zextract.c (read_zip_archive): Collect file compression info. - -2000-08-15 Bryce McKinlay - - * parse.y (do_resolve_class): Also explore superclasses of - intermediate enclosing contexts when searching for inner classes. - -2000-08-11 Alexandre Petit-Bianco - - * parse.y (variable_declarator_id:): Better error message. - (expression_statement:): Use YYNOT_TWICE. - (cast_expression:): Likewise. - (assignment:): Likewise. - -2000-08-11 Alexandre Petit-Bianco - - * parse.y (do_merge_string_cste): New locals. Create new - STRING_CSTs each time, use memcpy. Fixes gcj/311. - -2000-08-07 Hans Boehm - - * boehm.c (mark_reference_fields): Set marking bits for all words in - a multiple-word record. - (get_boehm_type_descriptor): Use the procedure marking descriptor for - java.lang.Class. - -2000-08-31 Mike Stump - - * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext), - jcf-dump$(exeext)): Make parallel safe. - -2000-08-29 Zack Weinberg - - * jcf-parse.c (set_source_filename): Constify a char *. - * jcf-write.c (append_innerclasses_attribute, - make_class_file_name): Constify a char *. Don't recycle a - variable for an unrelated purpose. - * parse.y: (build_alias_initializer_parameter_list): Constify a char *. - (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings. - -2000-08-29 Alexandre Petit-Bianco - - * expr.c (can_widen_reference_to): Fixed indentation. - * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment. - * parse.y: `finit$' replaces `$finit$' in comments. - (try_builtin_assignconv): Fixed leading comment. - -2000-08-25 Greg McGary - - * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE. - -2000-08-24 Greg McGary - - * lang.c (lang_decode_option): Use ARRAY_SIZE. - * parse.y (BINOP_LOOKUP): Likewise. - -2000-08-22 Andrew Haley - - * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before - sign extending. Fixes gcj/321. - * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before - combining to make a jlong. Fixes gcj/321. - -2000-08-21 Nix - - * lang-specs.h: Do not process -o or run the assembler if - -fsyntax-only. - -2000-08-16 Andrew Haley - - * typeck.c (build_java_array_type): Rewrite code to do array - alignment. Take into account back-end macros when aligning array - data. Remove setting of TYPE_USER_ALIGN; Java doesn't allow the - user to set alignment. Fixes gcj/252 and 160. - -2000-08-09 Tom Tromey - - * parse.y (check_abstract_method_definitions): Now return `int'. - Check implemented interfaces. Fixes PR gcj/305. - - * parse.y (patch_switch_statement): Disallow `long' in switch - expressions. Fixes PR gcj/310. - -2000-08-15 Alexandre Petit-Bianco - - * decl.c (finit_leg_identifier_node): New global. - (init_decl_processing): Use `finit$' to initialize - finit_identifier_node. Use `$finit$' to initialize - finit_leg_identifier_node. - * expr.c (expand_java_field_op): Use ID_FINIT_P. - * java-tree.h (finit_identifier_node): Changed attached comment. - (finit_leg_identifier_node): New declaration. - (ID_FINIT_P): Take finit_identifier_node and - finit_leg_identifier_node into account. This is a backward - compatibility hack. - -2000-08-14 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_conditional): Re-installed lost - Jan 6 2000 patch. - (generate_bytecode_insns): Check `nargs' before emitting it. - * verify.c (merge_type_state): Fixed typo. - * ChangeLog: Fixed typo in some jcf-write.c entries mentioning - generate_bytecode_{conditional,insns}. - -2000-08-13 Anthony Green - - * check-init.c (check_init): Add case for BIT_FIELD_REF (required - for -pg builds). - -2000-08-10 Alexandre Petit-Bianco - - * class.c (maybe_layout_super_class): Fixed indentation. - * java-tree.h (CLASS_METHOD_CHECKED_P): New macro. - (java_check_methods): New function declaration. - * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str' - instead of `str_ptr'. - * jcf-write.c (generate_bytecode_insns): Emit number the of args - of a `invokeinterface' at the right time. - * parse.h (WFL_STRIP_BRACKET): New macro. - (SET_TYPE_FOR_RESOLUTION): Use it. - * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'. - (check_class_interface_creation): Don't check for cross package - innerclass name clashes. - (method_header): Behave properly if MDECL is `error_mark_node'. - (method_declarator): Return `error_mark_node' if bogus current - class. - (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary. - (resolve_and_layout): New local `decl_type', set and used. Call - java_check_methods. - (java_check_methods): New method. - (java_layout_classes): Use it. - (resolve_qualified_expression_name): No EH check necessary in - access$. - (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating - `case' statement. - (patch_assignment): Set DECL_INITIAL on integral final local. - -2000-08-08 Alexandre Petit-Bianco - - * java-tree.h (flag_extraneous_semicolon): New extern. - * lang-options.h: (-Wextraneous-semicolon): New option. - * lang.c (flag_redundant): Fixed typo in leading comment. - (flag_extraneous_semicolon): New global. - (lang_decode_option): Set `flag_extraneous_semicolon' when - -Wall. Decode `-Wextraneous-semicolon'. - * parse.y (type_declaration:): Removed `SC_TK' hack, added - `empty_statement' rule. - (class_body_declaration): Likewise. - (method_body:): Accept `;' as a method body. - (static_initializer:): Removed `SC_TK' hack. - (constructor_block_end:): Likewise. - (empty_statement:): Report deprecated empty declaration. Fixes - gcj/295 - -2000-08-07 Alexandre Petit-Bianco - - * parse.y (build_dot_class_method_invocation): Changed parameter - name to `type'. Build signature from `type' and convert it to a - STRING_CST if it's an array. - (patch_incomplete_class_ref): `build_dot_class_method_invocation' - to use `ref_type' directly. - -2000-08-06 Ovidiu Predescu - - * lang-options.h: Added a comma after the last element to avoid - syntax errors when other languages define additional options. - -2000-08-04 Zack Weinberg - - * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist. - * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS. - (jc1): Link with $(BACKEND). - (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND). - -2000-08-02 Zack Weinberg - - * jvspec.c: Adjust type of second argument to - lang_specific_driver, and update code as necessary. - - * class.c (build_dtable_decl): Initialize dummy. - -2000-08-01 Alexandre Petit-Bianco - - * parse.y (maybe_yank_clinit): When generating bytecode: non empty - method bodies not to rule out discarding `'; don't use - to initialize static fields with constant initializers. - -2000-08-01 Alexandre Petit-Bianco - - * gjavah.c (print_method_info): Added `synth' parameter. Skip - synthetic methods. - (method_synthetic): New global. - (HANDLE_METHOD): Recognize synthetic method and tell - `print_method_info' about it. - (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're - processing a synthetic method. - * jcf-reader.c (skip_attribute): New function. - ( skip_attribute): Likewise. - -2000-08-01 Alexandre Petit-Bianco - - * parse.y (build_outer_field_access): Fixed comments. - (fix_constructors): Emit the initialization of this$ before - calling $finit$. - (resolve_qualified_expression_name): Build an access to `decl' if - necessary. - -2000-07-31 Alexandre Petit-Bianco - - * parse-scan.y (curent_class): Non longer const. - (inner_qualifier, inner_qualifier_length): Deleted. - (current_class_length): New global. - (bracket_count): Fixed typo in leading comment. - (anonymous_count): New global. - (class_instance_creation_expression:): Handle anonymous classes. - (anonymous_class_creation:): New rule. - (push_class_context): Rewritten. - (pop_class_context): Likewise. - (INNER_QUALIFIER): Macro deleted. - (report_class_declaration): call `push_class_context' when - entering the function. `fprintf' format modified not to use - INNER_QUALIFIER. - (report_class_declaration): Assign `package_name' and - `current_class' to NULL separately. - -2000-07-31 Alexandre Petit-Bianco - - * expr.c (build_invokeinterface): Call layout_class_methods on - target interface. - -2000-07-27 Tom Tromey - Anthony Green - Alexandre Petit-Bianco - - * class.c (make_class_data): Create vtable for abstract classes. - (get_dispatch_table): Changed to cope with abstract classes. - -2000-07-27 Tom Tromey - - * parse.y (patch_method_invocation): Don't reverse the argument - list when dealing with anonymous class constructors. Fixed typo in - comment. - -2000-07-27 Alexandre Petit-Bianco - - * parse.y (build_alias_initializer_parameter_list): Reverse - crafted list when building aliases for anonymous class - constructors. - -2000-07-25 Alexandre Petit-Bianco - - * parse.y (jdep_resolve_class): Don't bother checking potential - innerclass access if `decl' is NULL. - (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the - WFL. - -2000-07-25 Alexandre Petit-Bianco - - * parse.c: Remove (again.) - -2000-07-24 Alexandre Petit-Bianco - - * parse.y (find_as_inner_class): Removed 2000-07-19 patches. - * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved - outside the `if' statement, alias to innerclass removed, `decl' - used to mark the class complete. - -2000-07-21 Alexandre Petit-Bianco - - * parse.y (simple_name:): Fixed typo in error message. - -2000-07-21 Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node - or its first operand can be error marks. - -2000-07-20 Alexandre Petit-Bianco - - * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC. - * parse.y (method_header): Likewise. - -2000-07-19 Alexandre Petit-Bianco - - * parse.y (process_imports): Consider that one might be trying to - import an innerclass. Fixes gcj/254 - -2000-07-19 Alexandre Petit-Bianco - - * parse.y (find_as_inner_class): Handle the case where the - enclosing context of an innerclass has been loaded as bytecode. - -2000-07-19 Alexandre Petit-Bianco - - * parse.y (simple_name:): Reject `$' in type names. - (resolve_type_during_patch): Use `type' as a second - argument to resolve_no_layout. Fixes gcj/257. - -2000-07-18 Bryce McKinlay - - * parse.y (find_most_specific_methods_list): Select the only - non-abstract method even if max has been set. - Fixes gcj/285, gcj/298. - -2000-07-18 Jeff Sturm - - * lang-specs.h: Added %(jc1) to java compiler options. - -2000-07-14 Zack Weinberg - - * .cvsignore: New file. - -2000-07-13 Alexandre Petit-Bianco - - * parse.y (not_accessible_p): Access granted to innerclasses - (indirectly) extending the reference type. Fixes gcj/249. - -2000-07-13 Alexandre Petit-Bianco - - * parse.y (patch_method_invocation): Fixed comment. - (maybe_use_access_method): Build this$s to the context of the - target method, or a type that extends it. Fixes gcj/242. - -2000-07-13 Mark Mitchell - - * parse.c: Remove. - -2000-07-13 Alexandre Petit-Bianco - - * parse.y (fold_constant_for_init): Avoid bullish conversion. - -2000-07-13 Tom Tromey - - * lang-specs.h: Added %{I*}. - -2000-07-13 Zack Weinberg - - * lang-specs.h: Use the new named specs. Remove unnecessary braces. - -2000-07-12 Mark Mitchell - - * parse-scan.c: Remove. - -2000-07-10 Alexandre Petit-Bianco - - * class.c (set_super_info): Handled protected inner classes. - (common_enclosing_context_p): Bail early if arguments aren't both - inner classes. - (get_access_flags_from_decl): Handle private and protected inner - classes. - * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro. - (CLASS_PROTECTED): Likewise. - (struct lang_type): New bitfield `poic'. - * parse.y (jdep_resolve_class): Call check_inner_class_access on - inner classes only. - (check_inner_class_access): Renamed arguments, added - comments. Handles protected inner classes (fixes gcj/225) - (not_accessible_p): Fixed comments. Avoid handling inner classes. - -2000-07-10 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Verify qualified - access to `this'. Fixes gcj/239. - -2000-07-10 Alexandre Petit-Bianco - - * jcf-write.c (generate_classfile): Don't install ConstantValue - for null pointers. - -2000-07-07 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Handle inner class - access. Fixes gcj/256. - -2000-07-07 Alexandre Petit-Bianco - - * jcf-write.c (generate_classfile): Properly install the - ConstantValue attribute and the initial value constant pool index - on string constants. - * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting - class files. - -2000-07-06 Alexandre Petit-Bianco - - * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while - construct. - * parse.y (find_as_inner_class): Fixed typo. - (do_resolve_class): Explore enclosing contexts when searching for - innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME. - (check_inner_class_access): Check `decl' which can be null in case - of previous errors. - -2000-07-05 Alexandre Petit-Bianco - - * java-tree.h (java_debug_context): Declared `extern'. - (safe_layout_class): Likewise. - * parse.y (resolve_field_access): Field must be `static' in order - to be replaced by its initial value. Added comments. - (find_applicable_accessible_methods_list): Fixed typo. - (find_most_specific_methods_list): Methods found in innerclasses - take over methods founds in the enclosing contexts. - (java_complete_tree): Loosen restrictions on the type of DECLs - that can be replaced by their initialization values. - (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'. - -2000-07-05 Tom Tromey - - * Make-lang.in (PARSE_DIR): New macro. - (PARSE_RELDIR): Likewise. - (PARSE_C): Likewise. - (PARSE_SCAN_C): Likewise. - ($(PARSE_C)): New target. - ($(PARSE_SCAN_C)): Likewise. - (SET_BISON): New macro. - (BISONFLAGS): Likewise. - (JAVABISONFLAGS): Likewise. - -2000-07-02 Bryce McKinlay - - * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream - argument on the first pass for CNI as well as JNI. - (print_method_info): Set up method name on the first pass only. - -2000-07-01 Alexandre Petit-Bianco - - * parse.y (parser_qualified_classname): Removed parameter - `is_static'. - (create_interface): Removed first passed parameter to - parser_qualified_classname. - (create_class): Likewise. Don't install alias on static - innerclasses. Fixes gcj/275. - -2000-07-01 Alexandre Petit-Bianco - - * parse.y (maybe_generate_pre_expand_clinit): Don't build a - debugable statement with empty_stmt_node. Fixes gcj/272 - -2000-07-01 Alexandre Petit-Bianco - - * expr.c (build_instanceof): Layout type after it's loaded. Fixes - gcj/271. - -2000-06-29 Alexandre Petit-Bianco - - * jcf-write.c (push_long_const): Appropriately cast short negative - constant to jword. - -2000-06-29 Alexandre Petit-Bianco - - * parse.y (verify_constructor_super): Use loop variable - `m_arg_type' initialized with `mdecl_arg_type'. - -2000-06-29 Tom Tromey - - * parse.y (resolve_field_access): Handle case where `type_found' - is NULL. - -2000-06-27 Alexandre Petit-Bianco - - * expr.c (lookup_field): The same field can be found through two - different interface. Don't declare it ambiguous in that case. - -2000-06-27 Tom Tromey - - * lex.c (java_lineterminator): Don't recognize \r after \n. If \r - follows \r, then unget it at a lower level. - -2000-06-26 Tom Tromey - - * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to - java_complete_tree. - -2000-06-25 Tom Tromey - - * parse.y (for_statement): Wrap expression in a WFL if it is a - constant. For PR gcj/268. - -2000-06-25 Alexandre Petit-Bianco - - * parse.y (do_resolve_class): Minor optimiztion in the package - list search. Removed unnecessary test and return statement. - (valid_ref_assignconv_cast_p): Order of arguments to - enclosing_context_p fixed. - -2000-06-24 Tom Tromey - - * expr.c (lookup_field): Print error and return error_mark_node if - field reference is ambiguous. - - * parse.y (check_abstract_method_definitions): Also check if - `other_method' is abstract. - -2000-06-23 Alexandre Petit-Bianco - - * class.c (set_super_info): Handle ACC_PRIVATE for (inner) - classes. - * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro. - (struct lang_type): New field `pic'. - (CLASS_PRIVATE): New macro. - * parse.y (check_inner_class_access): New function. - (jdep_resolve_class): Call it. - -2000-06-23 Tom Tromey - - * parse.y (patch_incomplete_class_ref): Initialize the returned - class. For PR gcj/260. - -2000-06-21 Alexandre Petit-Bianco - - * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'. - -2000-06-20 Alexandre Petit-Bianco - - * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for - Java specific checks. - * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage - screened by DECL_P. - * java-tree.def (CASE_EXPR): Marked 'e'. - (DEFAULT_EXPR): Likewise. - * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage - screened by DECL_P. - * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for - Java specific checks. - (generate_bytecode_insns): Test try_block for BLOCK before using - BLOCK_EXPR_BODY. - * parse.y (build_wfl_wrap): Added `location' argument. Set - EXPR_WFL_LINECOL accordingly. - (dim_expr:): Wrap constants with WFLs. - (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC. - (resolve_package): Check for `stmt' not being a BLOCK before - building a debuggable statement with it. - (make_qualified_primary): Added extra parameter to build_wfl_wrap - invocation. - (resolve_field_access): Make sure `decl' is a DECL before treating - it as such. - (maybe_build_primttype_type_ref): Make sure `wfl''s node is an - IDENTIFIER_NODE before treating it as such. - (patch_new_array_init): Make sure `elt' is a TREE_LIST before - treating it as such. - (find_applicable_accessible_methods_list): CLASS_INTERFACE macro - to be applied only on non array types. - -2000-06-16 Per Bothner - - * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN): Don't - define in terms of DECL_RESULT, as that fails when --enable-checking. - -2000-06-15 Kaveh R. Ghazi - - * jcf-write.c (CHECK_PUT): Add static prototype. Make pointer - types the same in comparison. - (CHECK_OP): Add static prototype. - -2000-06-13 Jakub Jelinek - - * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN. - * parse.y (java_complete_class): Set DECL_USER_ALIGN. - * parse.c: Rebuilt. - -2000-06-11 Kaveh R. Ghazi - - * decl.c (create_primitive_vtable): Prototype. - - * jcf-write.c (generate_bytecode_insns): Initialize variable - `saved_context'. - - * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED. - -2000-06-09 Bryce McKinlay - - * parse.y (find_applicable_accessible_methods_list): Use a hashtable - to track searched classes, and do not search the same class more than - once. Call find_applicable_accessible_methods_list on immediate - superclass, instead of search_applicable_method_list on all ancestors. - Fix for PR gcj/238. - -2000-06-09 Bryce McKinlay - - * parse.y (register_fields): Permit static fields in inner classes - if they are final. Fix for PR gcj/255. - -2000-06-06 Alexandre Petit-Bianco - - * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries. - * parse.y (find_in_imports): Returned type changed to void, - leading comment fixed. - (register_package): New function. - (qualify_and_find): Likewise. - (package_declaration:): Use `register_package'. - (single_type_import_declaration:): Removed local variable - `node'. Added missing `;' for consistency. - (type_import_on_demand_declaration:): Use `chainon' to link new - entries. - (lookup_field_wrapper): Lookup local variables defined in outer - contexts first. - (java_complete_class): Don't reverse the list of imported on demand. - (do_resolve_class): Reorganized. Removed local variable - `original_name'. Call `qualify_and_find' with the current package - name, invoke `find_in_imports_on_demand' right after. Call - `qualify_and_find' with the packages we've seen so far. Fixed - operations numbering in comments. - (java_expand_class): Don't reverse `package_list'. - (find_most_specific_methods_list): New local variables `abstract' - and `candidates'. Use them to pick the right method. - -2000-06-06 Tom Tromey - - * parse.y (check_modifiers_consistency): Don't subtract out - `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY. - -2000-06-04 Philipp Thomas - - * Makefile.in (INTLLIBS): New. - (LIBS): Add above. - (DEPLIBS): Ditto. - -2000-06-02 Alexandre Petit-Bianco - - * class.c (get_dispatch_table): Build the vtable dummy entry list - element with a null purpose. Fixed leading comment. - (build_dtable_decl): Build an accurate dtable type when appropriate - and use it. - -2000-06-02 Richard Henderson - - * lang.c (lang_get_alias_set): New. - -2000-05-31 Alexandre Petit-Bianco - - * parse.y (resolve_field_access): Complete the DECL_INITIAL tree - before using it as the accessed field. - -2000-05-31 Tom Tromey - - * java-tree.h (boolean_array_vtable, byte_array_vtable, - char_array_vtable, short_array_vtable, int_array_vtable, - long_array_vtable, float_array_vtable, double_array_vtable): - Declare. - * expr.c (get_primitive_array_vtable): New function. - (create_primitive_vtable): New function. - (java_lang_expand_expr): Enable code to statically generate - arrays. - * decl.c (init_decl_processing): Create primitive vtables. - (boolean_array_vtable, byte_array_vtable, char_array_vtable, - short_array_vtable, int_array_vtable, long_array_vtable, - float_array_vtable, double_array_vtable): Define. - -2000-05-26 Zack Weinberg - - * java/parse.y (find_applicable_accessible_methods_list): - Don't add an uninitialized value to the list. - -2000-05-25 Tom Tromey - - * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC - when trying to see if field's class should be initialized. Always - initialize field's declaring class, not qualified class. - For PR gcj/162. - - * parse.y (array_constructor_check_entry): Pass `wfl_value', not - `wfl_operator', to maybe_build_primttype_type_ref. - Fixes PR gcj/235. - -2000-05-23 Bryce McKinlay - - * parse.y (patch_method_invocation): Don't try to lookup methods - in primitive types. - -2000-05-02 Alexandre Petit-Bianco - - * parse.y (resolve_field_access): Call the appropriate - before accessing the length of a static array. Craft a decl for - the field while its time. Fixes PR gcj/129. - -2000-05-01 Alexandre Petit-Bianco - - * parse.y (resolve_package): Correctly set `*next' (was off by - one.) - (resolve_qualified_expression_name): Fixed comment. - -2000-04-27 Alexandre Petit-Bianco - - * jcf-parse.c (jcf_parse_source): Reset current_class and - current_function_decl to NULL before parsing a new file. - -2000-04-27 Alexandre Petit-Bianco - - * parse.y (block_end:): If the collected block doesn't feature a - statement, insert an empty statement. - -2000-04-17 Alexandre Petit-Bianco - - * parse.y (maybe_yank_clinit): New function. - (maybe_generate_pre_expand_clinit): Always link at the - end of the list of methods belonging to a class. - (java_complete_expand_method): Check whether is really - necessary and expand it accordingly. - -2000-04-17 Alexandre Petit-Bianco - - * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be - processed by the method's switch statement. - -2000-05-19 Tom Tromey - - * java-tree.h: Added init state enum. - * decl.c (emit_init_test_initialization): Initialize class - initialization check variable by looking at class' state. - -2000-05-19 Tom Tromey - - * java-tree.h (build_instanceof): Declare. - (build_get_class): Declare. - * parse.y (patch_binop): Use build_instanceof. - * expr.c (build_instanceof): New function. If class is final, - don't make a function call. - (expand_java_INSTANCEOF): Use it. - (build_get_class): New function. - -2000-05-18 Alexandre Oliva - - * jcf-write.c (generate_classfile): Scan the source_file for - slashes with the right pointer variable. - -2000-05-17 Andrew Cagney - - * lang.c (lang_decode_option): Update -Wunused flags by calling - set_Wunused. - * decl.c (poplevel): Replace warn_unused with warn_unused_label. - -2000-05-09 Zack Weinberg - - * check_init.c (check_init): Constify local char *. - * class.c (push_class): Constify local char *. - * java_tree.h: Update prototypes. - * jcf-io.c (open_class): Constify filename parameter and - return value. - (find_class): Remove redundant string copy. Cast return from - open_class. - * jcf-parse.c (read_class, parse_class_file, yyparse): - Constify local char *. - * jcf-write.c (generate_bytecode_insns, generate_classfile): - Constify local char *. - * jcf.h (JCF): Constify filename and classname. - (JCF_FINISH): Cast args to FREE to char * when appropriate. - * lang.c (init_parse): Constify parameter and return value. - * lex.c (java_get_line_col): Constify filename parameter. - * parse.h: Constify parser_ctxt.filename. Update prototypes. - * parse.y (java_parser_context_suspend, - issue_warning_error_from_context, safe_layout_class): Constify - local char *. - * parse.c: Regenerate. - -2000-05-08 Tom Tromey - - * expr.c (build_jni_stub): Cache the result of - _Jv_LookupJNIMethod. - -2000-05-05 Alexandre Petit-Bianco - - * decl.c (predef_filenames_size): Now 7. - (predef_filenames): New seventh entry. - -2000-05-04 Tom Tromey - - * boehm.c (mark_reference_fields): Don't mark RawData fields. - Keep track of when we've seen a reference field after a - non-reference field. - (get_boehm_type_descriptor): Handle case where we see - non-reference fields but no trailing reference field. - * decl.c (rawdata_ptr_type_node): Define. - (init_decl_processing): Initialize rawdata_ptr_type_node. - * java-tree.h (rawdata_ptr_type_node): Declare. - -2000-05-04 Kaveh R. Ghazi - - * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format - specifiers in calls to fprintf. - -2000-05-03 Andrew Haley - - * expr.c (build_java_jsr): Use emit_jump, not expand_goto. - - * javaop.h (WORD_TO_INT): New function. - (IMMEDIATE_s4): Use WORD_TO_INT. - * jcf.h (JPOOL_INT): Ditto. - - * gjavah.c (decode_signature_piece): Don't treat `$' as namespace - separator. - -2000-04-19 Tom Tromey - - * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE - on native function. - * jcf-parse.c (parse_class_file): Call build_jni_stub for native - JNI methods. - * expr.c (build_jni_stub): New function. - * lang-specs.h: -fjni and -femit-class-file are incompatible. - * parse.c: Rebuilt. - * parse.y (java_complete_expand_methods): Expand a native method - and call build_jni_stub if -fjni given. - * lang-options.h: Document -fjni. - * lang.c (flag_jni): New global. - (lang_f_options): Added `jni' entry. - * java-tree.h (soft_lookupjnimethod_node, - soft_getjnienvnewframe_node, soft_jnipopsystemframe_node): - Declare. - (flag_jni): Declare. - (build_jni_stub): Declare. - (struct lang_decl): Added `native' flag. - (METHOD_NATIVE): Redefined to use `native' field of lang specific - structure. - * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node, - soft_jnipopsystemframe_node): New globals. - (init_decl_processing): Set them. _Jv_InitClass only takes one - argument. - - * java-tree.def: Put into `C' mode. - -2000-04-27 Tom Tromey - - Fix for PR gcj/2: - * expr.c (expand_invoke): Generate check to see if object pointer - is null in nonvirtual invocation case. - * java-tree.h (soft_nullpointer_node): Declare. - * decl.c (soft_nullpointer_node): New global. - (init_decl_processing): Initialize soft_nullpointer_node. - * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final' - or `private' methods. - (patch_invoke): Handle INVOKE_NONVIRTUAL case. - -2000-04-26 Alexandre Petit-Bianco - - * decl.c (complete_start_java_method): Don't call _Jv_InitClass - from - -2000-04-26 Tom Tromey - - * zextract.c (find_zip_file_start): New function. - (read_zip_archive): Use it. - -2000-04-25 Alexandre Petit-Bianco - - * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS. - -2000-04-24 Alexandre Petit-Bianco - - * class.c (common_enclosing_context_p): New function. - * java-tree.h (common_enclosing_context_p): Added prototype. - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow - classes sharing an outer context with the current instance. - * parse.y (build_access_to_thisn): Fixed leading comment. - (verify_constructor_super): New local `supper_inner'. Skip - enclosing context argument in the case of inner class constructors. - (patch_method_invocation): Insert proper context as second - parameter to pure inner class constructor super invocations. - -2000-04-24 Alexandre Petit-Bianco - - * parse.y (end_class_declaration): Reset the interface number - counter. - -2000-04-24 Alexandre Petit-Bianco - - * parse.y (source_start_java_method): Deleted unnecessary code. - (patch_method_invocation): Fixed comment. - -2000-04-24 Robert Lipe - - * parse.h (_jdep): Member `kind' now ENUM_BITFIELD. - -2000-04-23 Tom Tromey - - * boehm.c (mark_reference_fields): Use int_byte_position. - -2000-04-22 Tom Tromey - - * boehm.c (mark_reference_fields): Only call byte_position on - non-static fields. - -2000-04-22 Tom Tromey - - * boehm.c (mark_reference_fields): Added `last_view_index' - argument. Use DECL_FIELD_OFFSET to determine field's offset. - -2000-04-20 Mo DeJong - - * parse.h (INTERFACE_INNER_MODIFIERS): New macro. - * parse.y (check_class_interface_creation): Fixed comments. Select - permitted modifiers for (inner) interfaces. Changed error message - to report rejected modifiers used with local classes. - -2000-04-20 Alexandre Petit-Bianco - - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes - of directly inherited type considered in scope. - * parse.y (do_resolve_class): Search inherited classes for inner - classes. - -2000-04-20 Tom Tromey - - * parse.y (not_accessible_p): Use member's class, not current - class, when doing inheritance check for protected reference. - Fixes PR gcj/124. - -2000-04-20 Jason Schroeder - - * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction. - -2000-04-19 Alexandre Petit-Bianco - - * parse.y (lookup_field_wrapper): Search for final local aliases. - (resolve_expression_name): Let lookup_field_wrapper search for - final local aliases. Force the value of `name' if one is found. - (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have - an expression name. Fixed comments. - -2000-04-19 Alexandre Petit-Bianco - - * parse.y (yyerror): `msg' can be null, don't use it in that case. - -2000-04-19 Tom Tromey - - * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop. - -2000-04-18 Alexandre Petit-Bianco - - * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'. - -2000-04-18 Tom Tromey - - PR gcj/211: - * gjavah.c (utf8_cmp): Changed return value. - (cxx_keyword_subst): Handle all C++ keywords. Allocate new return - result. - (cxx_keywords): New global. - (get_field_name): Handle new result of cxx_keyword_subst. - (print_method_info): Likewise. - -2000-04-17 Bryce McKinlay - - * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names - with a newline, for CNI. - (print_stub_or_jni): Print a space or newline before method name for - CNI as well as JNI. - (print_cxx_classname): Don't write leading "::" in CNI stub method. - (process_file): Include gcj/cni.h if generating CNI stubs. - -2000-04-16 Tom Tromey - - * gjavah.c (decompile_method): Use print_field_name. - Fixes PR gcj/205. - -2000-04-14 Alexandre Petit-Bianco - - * parse.y (java_expand_classes): Reverse the package list once. - (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string - reduction. - (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of - the `==' and `!=' operators. - -2000-04-05 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): At invocation time, - always relate an interface method to the type of its selector. - -2000-04-05 Tom Tromey - - Fix for PR gcj/2: - * expr.c (expand_invoke): Generate check to see if object pointer - is null in nonvirtual invocation case. - * java-tree.h (soft_nullpointer_node): Declare. - * decl.c (soft_nullpointer_node): New global. - (init_decl_processing): Initialize soft_nullpointer_node. - * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final' - or `private' methods. - (patch_invoke): Handle INVOKE_NONVIRTUAL case. - -2000-04-05 Tom Tromey - - Fix for PR gcj/140: - * parse.y (check_final_assignment): Recognize assignments to the - `length' field of an array when generating class files. - -2000-04-05 Alexandre Petit-Bianco - - * class.c (decl_hash): Prototype removed. - (decl_compare): Likewise. - -2000-04-05 Tom Tromey - - * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter. - * parse.y (check_modifiers_consistency): Check for final/volatile - clash. Fixes PR gcj/164. - -2000-04-05 Alexandre Petit-Bianco - - * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash', - made global. - (java_hash_compare_tree_node): Renamed from `decl_compare, made - global. - (add_method_1): Use `java_hash_hash_tree_node' and - `java_hash_compare_tree_node'. - * java-tree.h: (java_hash_hash_tree_node): Prototyped. - (java_hash_compare_tree_node): Likewise. - * parse.y (find_applicable_accessible_methods_list): Create, - delete and use a hash table to remember already searched interfaces. - -2000-04-03 Matt Welsh - - * jcf-depend.c (add_entry): Fixed bug where list was always replaced - with latest entry. - -2000-04-04 Kaveh R. Ghazi - - * boehm.c (mark_reference_fields, set_bit): Prototype. - (set_bit): Un-ANSI-fy definition. - - * class.c (init_test_hash_newfunc, decl_hash, decl_compare): - Prototype. - - * decl.c (emit_init_test_initialization): Likewise. - - * gjavah.c (jni_print_char): Likewise. - - * parse.y (create_new_parser_context): Likewise. - -2000-03-30 Alexandre Petit-Bianco - - * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000 - patch missing hunk. Fixed indentation. - -2000-03-30 Tom Tromey - - * gjavah.c (D_NAN_MASK): Only define as word-reversed when - HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree. - -2000-03-28 Alexandre Petit-Bianco - - * parse-scan.y (pop_class_context): Reset `inner_qualifier_length' - when negative *before* using it as an array index. - * ChangeLog: Fixed typo. - -2000-03-28 Alexandre Petit-Bianco - - * parse-scan.y (pop_class_context): Reset `inner_qualifier_length' - to 0 when it reaches -1. - -2000-03-27 Alexandre Petit-Bianco - - * jcf-parse.c (get_constant): Properly cast `num' during the - invocation of `add_double'. - * jcf-write.c (push_long_const): Properly cast `lo' before - comparing it to short bounds. - * parse-scan.y (interface_declaration:): Rule re-arrange so that - `interface_body:' is reduced after the current interface is - pushed. - -2000-03-26 Tom Tromey - - * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each - Java-specific `-f' option. - -2000-03-26 Richard Kenner - - * decl.c (init_decl_processing): Only call initialize_sizetypes once. - Adjust order of making types. - Make bitsize_*_node values. - -2000-03-25 Richard Kenner - - * class.c (make_field_value): Use byte_position. - * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position. - (java_array_data_offset): Likewise. - * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to - bzero call. - -2000-03-22 Alexandre Petit-Bianco - - * parse.y (check_abstract_method_definitions): New local - `end_type_reached'. Make sure we also consider `end_type'. - (java_check_abstract_method_definitions): Make sure we eventually - consider `java.lang.Object'. - (maybe_use_access_method): Don't use access method if not in the - context of a pure inner class or if the method's context is right. - (find_applicable_accessible_methods_list): New static flag - `object_done'. Don't search abstract classes as interfaces. Fixed - indentation. Fixed the `java.lang.Object' only search. Search - class interface(s) first, then fully search enclosing contexts. - (find_most_specific_methods_list): Pick the closest candidate when - they're all abstract. - -2000-03-20 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR: - properly initialize `finished_label'. Don't emit gotos for empty - try statements. - -2000-03-19 Martin v. Löwis - - * except.c (emit_handlers): Clear catch_clauses_last. - -2000-03-17 Alexandre Petit-Bianco - - * parse.y (check_method_types_complete): New function. - (create_class): Reset anonymous class counter only when seeing an - non inner classe. - (java_complete_class): JDEP_METHOD: Don't recompute signature - if incomplete. - -2000-03-17 Alexandre Petit-Bianco - - * class.c (build_static_ref): Fixed indentation in comment. - * java-tree.def (TRY_EXPR): Fixed typo in name. - (CLASS_LITERAL): Likewise. - * java-tree.h: (TYPE_DOT_CLASS): New macro. - (struct lang_type): New field `dot_class'. - * jcf-write.c (generate_bytecode_insns): Fixed error message. - (generate_classfile): Method `class$' is synthetic. - * parse.y (build_do_class_method): New function. - (build_dot_class_method_invocation): Likewise. - (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary. - (resolve_qualified_expression_name): Handle CLASS_LITERAL. - (qualify_ambiguous_name): Likewise. - (patch_incomplete_class_ref): Invoke synthetic method if necessary. - (build_try_statement): Fixed leading comment. - -2000-03-17 Richard Kenner - - * class.c (make_field_value): Properly handle sizes. - (get_dispatch_vector): Use tree_low_cst and host_integerp. - (layout_class_method): Count using trees. - * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node. - * expr.c (java_array_data_offset): Use int_bit_position. - (build_newarray, build_anewarray): Use host_integerp and tree_low_cst. - (build_invokevirtual): Use tree_low_cst and do computations with trees. - -2000-03-16 Tom Tromey - - * lang.c (flag_hash_synchronization): New global. - (lang_f_options): Added `hash-synchronization'. - * lang-options.h: Mention -fhash-synchronization. - * java-tree.h (flag_hash_synchronization): Declare. - * expr.c (java_lang_expand_expr): Only push `sync_info' value when - hash table synchronization is disabled. - * decl.c (init_decl_processing): Only push `sync_info' value when - hash table synchronization is disabled. - * class.c (make_class_data): Only push `sync_info' field when hash - table synchronization is disabled. Removed dead code. - -2000-03-16 Tom Tromey - - * lang.c (lang_decode_option): Enable -Wunused when -Wall given. - -2000-03-15 Alexandre Petit-Bianco - - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous - classes. - * parse.y (patch_method_invocation): Handle anonymous classes - creation in static context. - -2000-03-15 Alexandre Petit-Bianco - - * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro. - * parse.y (resolve_qualified_expression_name): Use it. - (patch_method_invocation): Likewise. - -2000-03-15 Alexandre Petit-Bianco - - * parse.y (register_incomplete_type): JDEP_ENCLOSING set - depending on the type of dependency which dictates what the - current class is. - (unresolved_type_p): Resolved types limited to the current class. - -2000-03-15 Tom Tromey - - * decl.c (init_decl_processing): Set type of `sync_info' to be - pointer to Object. - - * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'. - Correctly compute bit number for current slot. Zero `high' and - `low' in DS_LENGTH case. Don't skip inherited fields. Use - mark_reference_fields. - (mark_reference_fields): New function. - -2000-03-14 Alexandre Petit-Bianco - - * parse.y (register_incomplete_type): Fixed initialization of - JDEP_ENCLOSING. - -2000-02-28 Alexandre Petit-Bianco - - * parse-scan.y (inner_qualifier, inner_qualifier_length): New - static globals. - (push_class_context, pop_class_context): New function. - (class_body:): Call pop_class_context. - (interface_body:): Likewise. - (INNER_QUALIFIER): New macro. - (report_class_declaration): Changed output format and use - INNER_QUALIFIER. Call push_class_context. - -2000-02-14 Andrew Haley - - * check-init.c (check_init): Add new cases for unary and binary - tree nodes. - -2000-03-13 Alexandre Petit-Bianco - - * parse.y (resolve_package): Set `next' once a type name has been - progressively discovered. - (resolve_qualified_expression_name): Propagate resolution only if - there are remaining qualifiers. Take into account `q' might have - been cleared after re-qualification. - * parse.y (patch_method_invocation): New local `resolved'. - Section dealing with qualified expression rewritten to use - resolve_field_access. - -2000-03-13 Alexandre Petit-Bianco - - * parse.h (PUSH_CPC): Fixed indentation. - (DEBUG_CPC): New macro. - (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT, - SET_CPC_INSTANCE_INITIALIZER_STMT): New macros. - * parse.y (class_body_declaration:): Use - SET_CPC_INSTANCE_INITIALIZER_STMT. - (method_declaration:): Check for null current_function_decl. - (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT. - (java_parser_context_pop_initialized_field): Better handling of - empty lists. - (maybe_make_nested_class_name): Mark nested class name as - qualified when necessary. - (end_class_declaration): Don't call java_parse_context_resume when - one or more error occurred. - (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT. - (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and - SET_CPC_INITIALIZER_STMT. - (method_header): Check for inner classes declaring static methods. - (resolve_qualified_expression_name): Handle situation where `this' - is implied. - -2000-03-13 Hans Boehm - - * typeck.c (build_prim_array_type): Correctly set the high word too. - -2000-03-09 Alexandre Petit-Bianco - - * parse.y (java_complete_expand_methods): Leave out of - ordinary methods. - (maybe_generate_pre_expand_clinit): Put at the end of the - list of methods for interfaces. - -2000-03-07 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Properly handle expressions - using `null'. - -2000-03-07 Alexandre Petit-Bianco - - * parse.y (check_final_assignment): Extended to process - COMPOUND_EXPR. - (patch_assignment): Have check_final_assignment called only once. - -2000-03-07 Alexandre Petit-Bianco - - * java-tree.h (IS_INIT_CHECKED): New flag. - * check-init.c (check_init): Test and set IS_INIT_CHECKED. - * parse.y (patch_string): Call force_evaluation_order on the - completed string concatenation tree. - * expr.c (force_evaluation_order): Call force_evaluation_order on - function's arguments too. - -2000-03-06 Richard Kenner - - * decl.c (emit_init_test_initialization): Mark KEY as unused. - * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT. - (build_anewarray): Likewise. - * parse.y (patch_newarray): Likewise. - * parse.c: Regenerated. - -2000-03-06 Bryce McKinlay - - * decl.c (init_decl_processing): Added new class fields `depth', - `ancestors', and `idt' to class_type_node. Use - _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node. - * class.c (make_class_data): Push initial values for new fields. - * java-tree.h: Updated prototype for `build_invokeinterface'. - * expr.c (build_invokeinterface): Changed parameters to accept - `method' tree. Calculate index of `method' in its declaring - interface. Build call to _Jv_LookupInterfaceMethodIdx. - (expand_invoke): Call `build_invokeinterface' with new parameters. - * parse.y (patch_invoke): Call `build_invokeinterface' with new - parameters. - -2000-03-06 Bryce McKinlay - - * typeck.c (lookup_do): Search superinterfaces first - when looking up an interface method. From Godmar Back - - -2000-03-06 Tom Tromey - - * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c. - -2000-03-02 Alexandre Petit-Bianco - - * java-tree.h (lookup_argument_method2): Declared. - (safe_layout_class): Prototype moved from parse.h. - * parse.h (safe_layout_class): Prototype moved to java-tree.h. - * parse.y (java_check_regular_methods): Local `super_class' gone. - Call lookup_argument_method2 instead of lookup_argument_method. - Perform modifier match for methods found declared in implemented - interfaces. Fixed indentation problem. Overriding/hiding error - report to take place only for methods found in classes. - * typeck.c (lookup_argument_method): Changed leading - comment. Re-written by calling lookup_do. - (lookup_argument_method2): New function. - (lookup_java_method): Re-written by calling lookup_do. - (lookup_do): New function. - -2000-03-02 Alexandre Petit-Bianco - - * check-init.c (check_init): Removed dead code. Handle (blank) - final variables. - * parse.y (declare_local_variables): New local `final_p', set it - and use it to initialize LOCAL_FINAL. - (check_final_assignment): Only check FIELD_DECLs. - -2000-02-17 Tom Tromey - - * Makefile.in (JAVA_OBJS): Added boehm.o. - (boehm.o): New target. - * Make-lang.in (JAVA_SRCS): Added boehm.c. - * java-tree.h (flag_use_boehm_gc): Declare. - (get_boehm_type_descriptor): Declare. - * lang.c (lang_f_options): Added `use-boehm-gc'. - (flag_use_boehm_gc): New global. - * lang-options.h: Added -fuse-boehm-gc. - * boehm.c: New file. - * class.c (get_dispatch_table): If class uses a Boehm type - descriptor, put it in the vtable. - (make_class_data): Removed dead code. - -2000-03-03 Per Bothner - - * decl.c (init_decl_processing): Initialize sizetype properly. - -2000-03-01 Alexandre Petit-Bianco - - * java-tree.h (LOCAL_CLASS_P): New flag usage and macro. - (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros. - * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. - * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise. - (jcf_parse): New local `current'. Load innerclasses seen in outer - context being processed. - * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro. - * jcf-write.c (append_innerclasses_attribute): New function. - (append_innerclasses_attribute_entry): Likewise. - (get_access_flags): Handle static classes. Set anonymous and local - classes to be private. - (generate_classfile): Attribute count adjusted. Call - append_innerclasses_attribute. - * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use - PURE_INNER_CLASS_TYPE_P. - * parse.y (parser_qualified_classname): New parameter `is_static', - produce non qualified name accordingly. - (block_statement:): Set LOCAL_CLASS_P when declaring local class. - (create_interface): Added argument to parser_qualified_classname. - (create_class): Added argument to parser_qualified_classname. Setup - alias for top level classes. Use PURE_INNER_CLASS_DECP_P. - (add_inner_class_fields): Fixed indentation. - (method_declarator): Use PURE_INNER_CLASS_DECP_P. - (method_declarator): Fixed typo in comment. - (craft_constructor): Use PURE_INNER_CLASS_DECP_P. - (build_current_thisn): Likewise. - (patch_method_invocation): Likewise. - -2000-03-01 Martin von Löwis - - * decl.c (current_function_decl): Move to toplev.c. - -2000-02-28 Richard Kenner - - * java-tree.h (LABEL_PC): Relect name changes in ../tree.h. - (DECL_BIT_INDEX): Use underlying representation. - * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise. - -2000-02-27 Richard Kenner - - * expr.c (build_java_ret): Pass proper type to size_binop. - -2000-02-25 Anthony Green - - * expr.c (build_class_init): Mark the decl to be ignored by - check_init. - * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c - * check-init.c: Move DECL_BIT_INDEX to java-tree.h - * class.c (init_test_hash_newfunc): New function. - (decl_hash): New function. - (decl_compare): New function. - * decl.c (emit_init_test_initialization): New function. - (complete_start_java_method): Traverse the init test hashtable, - calling emit_init_test_initialization. - (always_initialize_class_p): Define. - * expr.c (build_class_init): Use initialization tests when - emitting class initialization code. - (always_initialize_class_p): Declare. - * jcf-parse.c (parse_class_file): Set always_initialize_class_p to - 1. - * java-tree.h: Include hash.h. - (DECL_FUNCTION_INIT_TEST_TABLE): Define. - (struct lang_decl): Add init_test_table field. - (init_test_hash_entry): Define. - -2000-02-25 Alexandre Petit-Bianco - - * gjavah.c (main): Avoid using `argi' to report unimplemented - options. - -2000-02-25 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR: - initialize locals to avoid warnings. Local `exception_type' moved - into if statement. - -2000-02-25 Alexandre Petit-Bianco - - * parse.y (resolve_expression_name): Use `orig' as a second - argument to resolve_field_access. - (resolve_field_access): Removed unnecessary code when dealing with - static fields. - -2000-02-23 Alexandre Petit-Bianco - - * class.c (push_super_field): Don't push the field twice. - * jcf-parse.c (parse_source_file): Call java_reorder_fields. - * parse.h (java_reorder_fields): Prototyped. - * parse.y (java_reorder_fields): New function. - (java_layout_class): Simplified not to worry about re-ordering. - -2000-02-23 Tom Tromey - - * gjavah.c (print_name): In JNI case, correctly quote string. - (print_method_info): Don't handle overrides in JNI mode. - -2000-02-22 Alexandre Petit-Bianco - - * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned - value type set to `boolean_type_node'. - -2000-01-18 Joerg Brunsmann - - * jcf-dump.c (main): Test for correct condition after - output file creation. - -2000-02-19 Anthony Green - - * jcf-depend.c (add_entry): Fix test for first list entry. - -2000-02-19 Richard Kenner - - * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT. - * constants.c (build_constants_constructor): Likewise. - -2000-02-19 Anthony Green - - * jcf-depend.c (add_entry): Add entries to the end of the list. - -1999-11-03 Pekka Nikander - - * decl.c (INT_TYPE_SIZE): Define if necessary. - (expand_java_return): Handle the case of a native integer smaller - than a JVM integer. - -2000-02-18 Martin von Löwis - - * gjavah.c (help): Use GCCBUGURL. - * jv-scan.c (help): Likewise. - * jcf-dump.c (help): Likewise. - -2000-02-17 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): Don't generate empty - `finally' clauses. - -2000-02-17 Alexandre Petit-Bianco - - * jcf-parse.c (load_class): Call `fatal' if no file containing - the target class are found. - -2000-02-16 Zack Weinberg - - * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on - lex.c, lex.h, and PARSE_H to... - (parse.o, parse-scan.o): ...here, respectively. - - * lex.c: Split out code that may trigger SIGFPE from yylex() - to its own function. - * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value. - -2000-02-16 Kaveh R. Ghazi - - * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h. - -2000-02-15 Alexandre Petit-Bianco - - * parse.y (outer_field_access_p): Stop in time when outer contexts - are exhausted. - (resolve_qualified_expression_name): Properly qualify *everything* - after a package.type to be resoled as expression names. - (find_applicable_accessible_methods_list): Save/restore `class' to - isolate it from a possible outer context search. - -2000-02-15 Tom Tromey - - * gjavah.c (jni_print_char): New function. - (print_full_cxx_name): Use it. - (decode_signature_piece): Likewise. - (print_cxx_classname): Likewise. - -2000-02-15 Kaveh R. Ghazi - - * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with - version.o. - (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h. - - * gjavah.c: Include version.h. - - * jcf-dump.c: Likewise. - - * jv-scan.c: Likewise. - -2000-02-12 Alexandre Petit-Bianco - - * parse.y (outer_field_access_fix): First parameter now a tree - node. Check for assignment to final. First argument to - build_outer_field_access_fix modified to accommodate prototype. - (build_outer_field_access): Don't check for assignment to final - here. - (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node' - possibly returned by outer_field_access_fix. Changed - outer_field_access_fix's first argument. - (check_final_assignment): $finit$'s context is OK. - (patch_unaryop): Use node instead of its line/column value when - calling outer_field_access_fix. - -2000-02-11 Alexandre Petit-Bianco - - * parse.y (interface_declaration:): No longer tagged - . Re-installed default action. - (class_member_declaration:): Handle inner interfaces. - (interface_member_declaration): Handle inner interfaces and - classes. - (create_interface): Push error if one seen. Suspend parsing - context when processing an inner interface. - (register_fields): Inner class static field limitations not to - apply to inner interfaces. - -2000-02-10 Alexandre Petit-Bianco - - * jcf-parse.c (load_class): Update `java_error_count' when a - class' file can't be found. - (parse.y): Avoid (byte)code generation when errors seen. - -2000-02-10 Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal' - decodes a valid node. - (patch_binop): Handle TRUNC_DIV_EXPR. - -2000-02-10 Alexandre Petit-Bianco - - * parse.y (resolve_package): New local `acc'. Try to progressively - build and guess a package and type name. - -2000-02-10 Alexandre Petit-Bianco - - * parse.y (find_applicable_accessible_methods_list): Load and - layout the search class if necessary. - (java_complete_tree): Keep to original type of the folded initial - value. - -2000-02-09 Alexandre Petit-Bianco - - * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT. - Generate error message if circularity is detected. New static - local `list'. - * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro. * - * jcf-write.c (generate_bytecode_insns): Very simply handle - SAVE_EXPR. - * parse.y (java_check_circular_reference): Use - `cyclic_inheritance_report' during report, if necessary. - (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid - walking NEW_ARRAY_INIT twice. - -2000-02-09 Tom Tromey - - * parse.y (check_class_interface_creation): Allow inner classes to - be `private' or `protected', check modifiers' consistency. Prevent - block local classes from bearing any modifiers. - -2000-02-10 Kaveh R. Ghazi - - * except.c (check_start_handlers): Re-add prototype lost in last - patch. - (maybe_start_try): Remove excess argument to `check_start_handlers'. - -2000-02-09 Andrew Haley - - * decl.c (clear_binding_level): Remove excess initializer. - (maybe_poplevels): Remove unused variable. - (force_poplevels): Ditto. - (struct binding_level): Add comment. - -2000-02-07 Alexandre Petit-Bianco - - * jcf-write.c (generate_classfile): Don't consider - pre-initialization with reference value (use instead.) - * parse.y (java_fix_constructors): No generated constructor for - interfaces. - (build_outer_field_access): Removed debug message. - (outer_field_expanded_access_p): Adapted to bytecode generation. - (build_outer_field_access_method): Use fix_method_argument_names. - (build_outer_method_access_method): Fixed indentation. Added - comment. Handle access method generation for static and also void - methods. - (build_access_to_thisn): Inserted debug message. - (maybe_build_thisn_access_method): Use fix_method_argument_names. - (resolve_qualified_expression_name): Fixed comment. - (not_accessible_p): Adapted to bytecode generation. Added comment. - (patch_method_invocation): Added comment. - (maybe_use_access_method): Fixed leading comment. Handle static - methods. - (java_complete_lhs): Don't shortcut handling of initialized upon - declaration String type static fields when generating bytecode. - (patch_unaryop): Handle outer field access when generating - bytecode. - -2000-02-03 Alexandre Petit-Bianco - - * java-tree.h (FIELD_THISN): New macro. - * jcf-write.c (append_synthetic_attribute): New function. - (generate_classfile): Set "Synthetic" attribute on this$, - val$ fields, access$ and $finit$ methods. Fixed indentation. - * parse.y (add_inner_class_fields): Set FIELD_THISN for created - this$ fields. - (build_outer_field_access): Turned on access functions usage and - generation when compiling to bytecode. - (maybe_use_access_method): Likewise. - -2000-01-25 Andrew Haley - - * java-except.h (struct eh_range): Add `expanded' field. - (maybe_start_try): Add end_pc arg. - (maybe_end_try): Ditto. - * java-tree.h (force_poplevels): new function. - * expr.c (expand_byte_code): Don't call maybe_start_try or - maybe_end_try. - * except.c (add_handler): Reset expanded. - (expand_start_java_handler): Set expanded. - (check_start_handlers): Don't expand a start handler that's - already been expanded. - (maybe_start_try): Add end_pc arg. Only expand a handler which - ends after end_pc. - (expand_end_java_handler): call force_poplevels. - (force_poplevels): new function. - * decl.c (binding_level): Add start_pc of binding level. - (maybe_pushlevels): Call maybe_start_try when pushing binding - levels. - (maybe_poplevels): Call maybe_end_try when popping binding levels. - (LARGEST_PC): Define. - (clear_binding_level): Use LARGEST_PC. - - * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define. - * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define. - (binding_depth, is_class_level, current_pc): new variables. - (struct binding_level): ditto. - (indent): new function. - (push_jvm_slot): add debugging info. - (maybe_pushlevels): ditto. - (maybe_poplevels): ditto. - (pushlevel): ditto. - (poplevel): ditto. - (start_java_method): ditto. - (give_name_to_locals): comment only. - * except.c (binding_depth, is_class_level, current_pc): - new variables. - (expand_start_java_handler): add debugging info. - (expand_end_java_handler): ditto. - -2000-02-05 Kaveh R. Ghazi - - * gjavah.c (overloaded_jni_method_exists_p): Add prototype. - (print_name_for_stub_or_jni, process_file): Constify a char*. - -2000-02-03 Tom Tromey - - * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input. - -2000-01-31 Scott Bambrough - - * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to - assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is - defined to be 1. - -2000-02-02 Alexandre Petit-Bianco - - * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code. - * java-tree.h (TYPE_II_STMT_LIST): New macro. - (struct lang_type): New field `ii_block'. - * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST, - CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST. - * parse.h (struct parser_ctxt): New field `instance_initializers'. - (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST, - CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT, - CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New - macros. - * parse.y (add_instance_initializer): New function. - (in_instance_initializer): New static global. - (class_body_declaration:): Link instance initializer block. - (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT. - (array_creation_expression:): Remove unused local. - (java_parser_context_push_initialized_field): Fixed leading - comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and - CPC_INSTANCE_INITIALIZER_LIST. - (java_parser_context_pop_initialized_field): Likewise. - (add_inner_class_fields): Use CPC_INITIALIZER_STMT. - (register_fields): Use CPC_STATIC_INITIALIZER_STMT and - CPC_INITIALIZER_STMT. - (fix_constructors): New local `class_type'. Use it. Call - add_instance_initializer. - (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR. - (patch_return): Forbid return in instance initializers. - (patch_throw_statement): Enforce exception handling in the context - of instance initializers. - -2000-02-03 Tom Tromey - - * Make-lang.in (java.mostlyclean): Remove executables in - `mostlyclean'. - -2000-01-31 Scott Bambrough - - * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when - HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1. - (java_float_finite): Convert to use union Word from javaop.h. - (java_double_finite): Convert to use union DWord from javaop.h. - -2000-02-02 Tom Tromey - - * gjavah.c (options): Added `jni' entry. - (help): Document -jni. - (flag_jni): New global. - (process_file): Handle JNI output. Don't print text from - -prepend, -add, etc, when generating stubs. Only remove `.class' - suffix if it actually exists. - (main): Create a `.c' file when run with `--jni --stubs'. Create - correct output file name with `--jni'. - (print_include): Mangle header name differently in JNI case. - (HANDLE_METHOD): In JNI mode, call print_method_info to generate - method list. - (print_method_info): Handle JNI case. Put signature info into - method name. Handle case when STREAM is NULL. - (print_name_for_stub_or_jni): New function. - (print_stub_or_jni): Renamed from `print_stub'. Handle JNI. - (print_cxx_classname): Handle JNI. - (print_full_cxx_name): Likewise. - (decode_signature_piece): Likewise. - (overloaded_jni_method_exists_p): New function. - (struct method_name): Added `signature' and `sig_length' fields. - (HANDLE_END_FIELD): Do nothing in JNI mode. - -2000-02-02 Tom Tromey - - * jv-scan.c: Include version.c, . - (LONG_OPT, OPT_HELP, OPT_VERSION): New macros. - (options): New array. - (usage): New function. - (version): New function. - (main): Use getopt_long to parse command line. - * jcf-dump.c: Include version.c, . - (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION, - OPT_JAVAP): New macros. - (options): New array. - (usage): Return `void'. Changed message. - (help): New function. - (version): New function. - (main): Use getopt_long_only to parse command line. - * gjavah.c: Include . - (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP, - OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M, - OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros. - (options): New array. - (java_no_argument): Removed. - (help): Updated with missing options. - (main): Use getopt_long_only to parse command line. - (usage): Changed message. - -2000-02-01 Alexandre Petit-Bianco - - * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code. - * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG, - ANONYMOUS_ARRAY_INITIALIZER): New access macros. - * parse.y (array_creation_expression:): Handle anonymous arrays. - (build_array_from_name): Don't set `ret_name' if null. - (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR. - (qualify_ambiguous_name): Likewise. - (java_complete_expand_class): Likewise. - -2000-02-01 Alexandre Petit-Bianco - - * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo. - * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro. - (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise. - (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P. - (AIPL_FUNCTION_FINIT_INVOCATION): Replaces - AIPL_FUNCTION_COMPLETED_INVOCATION. - (AIPL_FUNCTION_CTOR_INVOCATION): Replaces - AIPL_FUNCTION_INVOCATION_READY. - (AIPL_FUNCTION_DECLARATION): New enum entry. - * parse.y (reorder_static_initialized): New function. - (java_parser_context_pop_initialized_field): Use it. - (add_inner_class_fields): Use - MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment - augmented. Install marker after last alias initializer, if any. - (generate_finit): Fixed typo. Don't try to retain only the used - fields. - (method_header): Compute and set DECL_FUNCTION_NAP. - (method_declarator): Fixed comment. Insert alias initializer in - parameter list. - (build_alias_initializer_parameter_list): Fixed leading - comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value - replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. - (java_complete_expand_class): Code to retain only used aliases - removed. - (java_complete_expand_methods): New local `first_decl'. Generate - $finit$ first, then expand the constructors, regular methods and - . - (java_complete_expand_method): Don't report error on missing - return statement if previously detected bogus. - (fix_constructors): Don't patch constructor parameters list. - (patch_method_invocation): Use new AIPL enum values. Reverse - alias initializer list for anonymous classes. - -2000-01-30 Anthony Green - - * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to - determine how many stack slots to pop. - -2000-01-29 Alexandre Petit-Bianco - - * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better - error handling/recovery. - * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment. - -2000-01-28 Alexandre Petit-Bianco - - * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS, - FIELD_LOCAL_ALIAS_USED): New macros. - (DECL_FUNCTION_NAP): New macro. - (struct lang_decl): New field `nap'. - (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros. - (struct lang_type): New fields `finit_stmt_list' and - `clinit_stmt_list'. - (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST. - * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro. - (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS, - UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros. - (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION, - AIPL_FUNCTION_INVOCATION_READY): New enum fields. - (BUILD_THROW): Macro line separator re-indented. - * parse.y (end_class_declaration): New function. - (maybe_generate_pre_expand_clinit): New name for - java_pre_expand_clinit. Create off TYPE_CLINIT_STMT_LIST, - pre-expand static fields. - (maybe_generate_clinit): Function deleted. - (check_for_static_method_reference): Prototype's parameter list - indented. - (generate_finit): New name for maybe_generate_finit. Changed - leading comment. Function rewritten to use - TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list. - (build_alias_initializer_parameter_list): New function. - (java_parser_context_pop_initialized_field): Likewise. - (add_inner_class_fields): Likewise. - (type_declaration:): Call end_class_declaration. - (class_member_declaration:): Likewise. - (formal_parameter_list:): Fixed typos. - (formal_parameter:): Use ARG_FINAL_P to mark created tree list - element. Improved error handling. - (block_statement:): Call end_class_declaration. - (anonymous_class_creation:): Likewise. - (create_anonymous_class): Fixed comments. - (create_class): Call add_inner_class_fields. - (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P. - (method_header): Use MARK_FINAL_PARMS. - (finish_method_declaration): Use UNMARK_FINAL_PARMS. - (method_declarator): Propagate final argument flag. - (craft_constructor): New local `artificial'. Call - build_alias_initializer_parameter_list. Use - CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP. - (source_start_java_method): Mark parm decls with LOCAL_FINAL if - necessary. - (complete_expand_class): Get rid of unused outer context local - alias fields. - (java_complete_expand_methods): Fixed leading - comment. Generate/pre-expand first. Changed method - expansion order to regular, $finit$, constructors, . - (java_complete_expand_method): Set current_function_decl. - (fix_constructors): Fix constructor parameter list to account for - outer context local alias initializers. - (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS. - (resolve_expression_name): Lookup outer context local aliases. New - local `access', use it. - (patch_method_invocation): Patch inner class ctor invocation with - outer context local aliases initialization values. $finit$ - invocation patching now includes things generated with - build_alias_initializer_parameter_list. - (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS. - (build_super_invocation): Likewise. - (patch_assignment): Changed comment. - -2000-01-27 Andrew Haley - - * jcf-write.c (emit_goto): RESERVE 3 bytes for insn. - (emit_if): Ditto. - (emit_jsr): Ditto. - -2000-01-25 Kaveh R. Ghazi - - * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string - concatenation. - (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args. - - * parse.y (register_fields): Don't pass a format specifier to - OBSOLETE_MODIFIER_WARNING. - (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2 - instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format - specifier. - (check_modifiers): Change function into a macro. - (check_class_interface_creation): Pass a literal format string. - -2000-01-21 Kaveh R. Ghazi - - * buffer.h: PROTO -> PARAMS. - * check-init.c: Likewise. - * class.c: Likewise. - * constants.c: Likewise. - * convert.h: Likewise. - * decl.c: Likewise. - * except.c: Likewise. - * expr.c: Likewise. - * gjavah.c: Likewise. - * java-except.h: Likewise. - * java-tree.h: Likewise. - * jcf-depend.c: Likewise. - * jcf-dump.c: Likewise. - * jcf-parse.c: Likewise. - * jcf-path.c: Likewise. - * jcf-reader.c: Likewise. - * jcf-write.c: Likewise. - * jcf.h: Likewise. - * jv-scan.c: Likewise. - * jvgenmain.c: Likewise. - * jvspec.c: Likewise. - * lang.c: Likewise. - * lex.c: Likewise. - * lex.h: Likewise. - * parse-scan.y: Likewise. - * parse.h: Likewise. - * parse.y: Likewise. - * typeck.c: Likewise. - * verify.c: Likewise. - * xref.c: Likewise. - * xref.h: Likewise. - * zextract.c: Likewise. - * zipfile.h: Likewise. - -2000-01-18 Alexandre Petit-Bianco - - * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC. - (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF. - * constants.c (build_constant_data_ref): Check for cached - current_constant_pool_data_ref. Cache current_constant_pool_data_ref - in TYPE_CPOOL_DATE_REF. - * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF, - MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros. - (struct lang_type): New fields `cpool' and `cpool_data_ref'. - (LOCAL_FINAL): New macro. - * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing - constant pool -- don't try to reuse. - (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate - TYPE_LANG_SPECIFIC. - (find_in_current_zip): Use TYPE_JCF. - * parse.h (java_check_final): Prototype removed. - * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch. - (maybe_create_class_interface_decl, - check_class_interface_creation): Likewise. - (java_expand_finals): Function removed. - (class_declaration:): Reversed Jan 12, 2000 extra argument patch. - (block_statement:): Fixed comment. - (anonymous_class_creation:): Likewise. - (check_class_interface_creation): Reversed Jan 12, 2000 extra - argument patch. - (check_class_interface_creation): Loosened error report on (inner) - public class declarations. CPC_INNER_P replaces GET_CPC_LIST. - (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch. - (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra - argument patch. - (create_interface): Likewise. - (anonymous_class_counter): New static global. - (create_anonymous_class): Reversed Jan 12, 2000 extra argument - patch. Fixed comments. - (create_class): Reversed Jan 12, 2000 extra argument patch. Reset - anonymous_class_counter when declaring a toplevel class. - (craft_constructor): Fixed constructor name when handling - anonymous classes. Anonymous class constructors to feature hidden - this$ parameter. - (java_fix_constructors): Added comment. - (java_check_final): Function removed. - (java_complete_expand_methods): Fixed comment. Don't generate - class data, save its outgoing constant pool instead. - (verify_constructor_super): Skip anonymous class constructor - hidden this$ parameter. - (java_expand_classes): New local `saved_ctxp'. Removed call to - java_expand_finals and java_check_final. Expand anonymous class - constructors. Generate class data. - (build_super_invocation): Skip anonymous class hidden this$ - parameter. - * typeck.c (build_java_signature): Use TYPE_SIGNATURE and - MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC. - (set_java_signature): Likewise. - -2000-01-18 Joerg Brunsmann - - * gjavah.c: Delete ACC_VISIBILITY define. - * jcf.h: Add ACC_VISIBILITY define. - * parse.y: final: rule tagged . - (java_check_regular_methods): Use ACC_VISIBILITY define for - default package access check. - (local_variable_declaration_statement): Use final: rule. - -2000-01-17 Joerg Brunsmann - - * parse.y (format_parameter:): Use final: rule instead of modifiers:. - (final:): New rule. - -2000-01-17 Tom Tromey - - * gjavah.c (print_field_info): Allow non-static final fields. - -2000-01-14 Alexandre Petit-Bianco - - * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'. - * parse.y (patch_anonymous_class): New function. - (create_anonymous_class): Register incomplete type when the - class/interface to extends/implement isn't known yet. - (parser_check_super_interface): Simplify argument to CLASS_INTERFACE. - (verify_constructor_super): Tuned error message. - -2000-01-14 Alexandre Petit-Bianco - - * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P. - (ANONYMOUS_CLASS_P): New macro. - (TYPE_SIGNATURE, TYPE_JCF): New macros. - (INNER_CLASS_TYPE_P): Fixed typo in leading comment. - * parse.y (create_class): Added leading argument. - (maybe_create_class_interface_decl, - check_class_interface_creation): Likewise. - (craft_constructor): New function. - (verify_constructor_super): Added argument in prototype. - (class_declaration:): Inserted leading argument. - (for_begin:): Use FOR_LOOP_P. - (anonymous_class_creation): Create WFL of the anonymous class to - instantiate. Call build_new_invocation. Added comments. - (check_class_interface_creation): Handle parameter `anonymous' in - verbose mode class creation announce. - (link_nested_class_to_enclosing): Exclude anonymous classes. - (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on - anonymous class, even though they appear to have an enclosing - context. - (create_interface): Pass extra argument to - check_class_interface_creation. - (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1. - (create_class): Call check_class_interface_creation and - maybe_create_class_interface_decl with extra new argument. Don't - add private this$ to anonymous classes. - (method_declarator): Insert hidden this$ to anonymous class - constructors. - (java_fix_constructors): Deleted code creating default - constructor. Call craft_constructor instead. - (java_check_regular_methods): Set `saw_constructor' to 1 for - anonymous classes. - (fix_constructors): Pass extra argument to verify_constructor_super. - (verify_constructor_super): New local `sdecl', use it. Search for - matching constructor (possibly featuring arguments) in super - class. - (lookup_method_invoke): Craft constructor according to arguments - list when dealing with anonymous class constructors. - (build_super_invocation): Pass arguments to anonymous class super - constructors. - (search_loop): Use FOR_LOOP_P. - (labeled_block_contains_loop_p): Likewise. - -2000-01-12 Alexandre Petit-Bianco - - * class.c (set_super_info): Set CLASS_STATIC when appropriate. - (enclosing_context_p): New function. - (get_access_flags_from_decl): Handle CLASS_STATIC. - (maybe_layout_super_class): Extra first argument passed to - do_resolve_class. - (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and - ID_INIT_P. - * decl.c (access0_identifier_node): New global. - (init_decl_processing): access0_identifier_node initialized. - (pushdecl): Set DECL_CONTEXT only on non type decls. - * expr.c (lookup_field): Lookup inner class fields in enclosing - contexts. - (expand_invoke): Use ID_INIT_P. - (expand_java_field_op): Use DECL_CLINIT_P. - * java-tree.def (CLASS_LITERAL): New tree code. - * java-tree.h (DECL_FUNCTION_ACCESS_DECL, - DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros. - (struct lang_decl): New field `inner_access'. - (enclosing_context_p): Prototyped. - (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P, - ID_CLINIT_P): New macros. - (CLASS_STATIC): New macro. - (CLASS_ACCESS0_GENERATED_P): New macro. - (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P, - TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P, - INNER_CLASS_P): New macros. - (DECL_INNER_CLASS_LIST): New macro. - * jcf-parse.c (yyparse): Avoid the use of ANSI string - concatenation. - * jcf-write.c (generate_bytecode_insns): binop: Change the type of - the shift value to int. Fixed typo in comment. - * lex.c (inst_id, wpv_id): Initialize. - * mangle.c (unicode_mangling_length): Take `$' into account. - * parse.h (DRECOVER, RECOVER): Terminate properly. - (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro. - (typedef struct _jdep): New field `enclosing'. - (JDEP_ENCLOSING): New macro. - (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.) - (struct parser_ctxt): New fields `marker_beginning', `marked_end'. - (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE, - GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC, - GET_ENCLOSING_CPC_CONTEXT): New macros. - (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros. - (do_resolve_class): Added extra argument in prototype. - * parse.y (resolve_class): Added extra argument in prototype. - (maybe_create_class_interface_decl): Likewise. - (maybe_use_access_method, build_wfl_wrap): New functions. - (java_complete_expand_classes, java_complete_expand_class): - Likewise. - (java_parser_context_push_initialized_field, - java_parser_context_suspend, java_parser_context_resume): - Likewise. - (maybe_make_nested_class_name, make_nested_class_name, - set_nested_class_simple_name_value, - link_nested_class_to_enclosing, find_as_inner_class, - find_as_inner_class_do, check_inner_class_redefinition, - build_thisn_assign, build_current_thisn, build_access_to_thisn, - maybe_build_thisn_access_method, build_outer_field_access, - build_outer_field_access_methods, build_outer_field_access_expr, - build_outer_method_access_method, build_new_access_id, - build_outer_field_access_method, outer_field_access_p, - outer_field_expanded_access_p, outer_field_access_fix, - build_incomplete_class_ref, patch_incomplete_class_ref, - create_anonymous_class): Likewise. - (inst_id, wpv_id): New static global variables. - (synchronized:): New rule, tagged . - (type_declaration:): No longer tagged . Call POP_CPC in sub - rules. - (anonymous_class_creation:): New rule, tagged . - (NEW_TK): Tagged . - (type_literals, array_type_literal): New rules, tagged . - (class_declaration:): Removed action when reducing by class_body: - (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value - using GET_CPC in sub-rules. - (class_member_declaration): Handle inner classes. - (method_declaration): When reducing method_header:, reset - current_function_decl when appropriate. - (method_declarator:): Set the number of formal parameter to 0 for - method declared without arguments. - (constructor_declarator:): Likewise. - (static_initializer:): List of elements kept in a list. - (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct - use of the keyword `static' for type declarations. - (block_statement:): Handle inner class declarations. - (primary_no_new_array:): Use type_literals:. Fixed comment. Handle - type qualified `this'. - (class_instance_creation_expression): Use anonymous_class_creation: - to handle inner class instances creation. Handle qualified `new'. - (something_dot_new): Added appropriate actions. - (create_new_parser_context): New function. - (java_push_parser_context, java_parser_context_save_global, - java_parser_context_suspend): Use create_new_parser_context. - (check_modifiers): Changed leading comment. - (check_class_interface_creation): Handle interclasses. - (add_superinterfaces): Fixed comment. - (create_interface): Build qualified name from the raw_name instead - of its matching WFL. Push the initialized fields list. raw_name added - as an extra argument to maybe_create_class_interface_decl. - (create_class): Build qualified name from the raw_name instead of - its matching WFL. Removed assignment to current_parsed_class_un. - Call PUSH_ERROR before returning an error. Suspend the current - parser context when processing an inner class. Push the - initialized fields list. raw_name added as an extra argument to - maybe_create_class_interface_decl. Add the private this$ - field. - (duplicate_declaration_error_p): Use GET_CPC when calling find_field. - (register_fields): Get the class type from GET_CPC and handle - previous errors. Added code to handle the creation of static - fields in inner classes. Initialized fields initialization - statements kept in a list of lists. - (maybe_generate_finit): Initialized fields initialization - statements kept in a list of lists. Use GET_CPC. - (maybe_generate_clinit): Likewise. - (method_header): Use GET_CPC and GET_CPC_UN. - (parser_qualified_classname): Handle inner classes. - (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC. - (java_fix_constructors): Hide pointer to enclosing context - instance in constructor list when dealing with inner classes. - (jdep_resolve_class): Call resolve_class with extra first argument - JDEP_ENCLOSING. - (resolve_class): Add enclosing context as a first extra argument - to do_resolve_class. - (do_resolve_class): Call find_as_inner_class. Handle WFLs - properly. - (resolve_no_layout): Extra argument added to resolve_class - invocation. - (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P. - (java_get_real_method_name): Use GET_CPC_UN. - (check_abstract_method_definitions): Use DECL_CLINIT_P. - (java_check_abstract_methods): Handle static method declared in - inner classes by an error. - (java_check_regular_methods): Use DECL_CLINIT_P. - (source_start_java_method): Also set DECL_MAX_LOCALS. - (create_artificial_method): Call java_parser_context_save_global - and java_parser_context_restore_global instead of saving/restoring - the context by hand. - (expand_start_java_method): Improved verbose mode message. - (java_complete_expand_methods): Fixed leading comment. Use - DECL_CLINIT_P. - (fix_constructors): Added assignment to this$ if necessary. - (java_expand_classes): Call java_complete_expand_classes instead - of java_complete_expand_methods. - (make_qualified_primary): Simplified. - (merge_qualified_name): Optimized for missing left or right parts. - (resolve_expression_name): Handle access to outer class fields from - interclasses. - (resolve_qualified_expression_name): New macro - RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner - classes. Report error on non appropriate qualification of - `new'. Handle qualified `this'. - (not_accessible_p): Allow access to outer class private fields from - inner classes. - (patch_method_invocation): Handle method invocations through - access methods and inner class constructor invocations. - (find_applicable_accessible_methods_list): Search enclosing - contexts of an inner class. - (search_applicable_methods_list): Fixed typo. - (argument_types_convertible): Handle inner class constructors' - hidden outer context reference argument. - (qualify_ambiguous_name): Handle qualified `this'. - (java_complete_lhs): Handle use of field accessed through - artificial access methods in various cases of assignments. Handle - CLASS_LITERAL node. - (check_final_assignment): Use DECL_CLINIT_P. - (valid_ref_assignconv_cast_p): Handle the destination being an - enclosing context of the source. - (patch_unaryop): Handle use of field accessed through artificial - access methods. - (patch_return): Use DECL_CLINIT_P. - (patch_throw_statement): Use DECL_CLINIT_P. - (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P. - * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and - ID_INIT_P. - -2000-01-16 Anthony Green - - * parse.y (build_string_concatenation): Only use - StringBuffer(String) shortcut if String arg is constant. - -2000-01-12 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): binop: Change the type of - the shift value to int. Fixed typo in comment. - -2000-01-11 Mumit Khan - - * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros. - * jcf-write.c: Likewise. - * parse.y: Likewise. - * parse.c: Regenerate. - -2000-01-09 Anthony Green - - * jcf-write.c (generate_bytecode_insns): Emit invokeinterface - bytecodes in the correct order. - -2000-01-09 Kaveh R. Ghazi - - * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS). - -2000-01-06 Anthony Green - - * expr.c (java_lang_expand_expr): Switch to permanent obstack - before building constant array decl. - -2000-01-06 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_conditional): Fixed indentation in - method invocation and typo in conditional expression. - (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue - the appropriate NOTE_POP. - * parse.y (patch_binop): Shift value mask to feature the right - type. - -1999-12-30 Kaveh R. Ghazi - - * class.c (assume_compiled, assume_compiled_node): Add static - prototype. - (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup. - - * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch. - - * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN. - - * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier' - to `__modifier' to avoid stringifying it. - - * parse.y (verify_constructor_circularity): Don't call a variadic - function with a non-literal format string. - (java_check_abstract_methods): Move unreachable code inside - `continue' statement. - (lookup_method_invoke): Call xstrdup, not strdup. - - * expr.c (expand_java_field_op): Avoid the use of ANSI string - concatenation. - - * jcf-parse.c (yyparse): Likewise. - - * jv-scan.c (main): Likewise. - -1999-12-30 Kaveh R. Ghazi - - * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, - ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, - ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string - concatenation. - - * parse.y (synchronized, variable_redefinition_error, - check_class_interface_creation, create_interface, create_class, - method_header, finish_method_declaration, - check_modifiers_consistency, method_declarator, - complete_class_report_errors, check_abstract_method_definitions, - java_check_regular_methods, check_throws_clauses, - java_check_abstract_methods, read_import_dir, - check_pkg_class_access, declare_local_variables, fix_constructors, - cut_identifier_in_qualified, resolve_expression_name, - resolve_qualified_expression_name, patch_method_invocation, - java_complete_lhs, patch_assignment, try_builtin_assignconv, - patch_binop, patch_array_ref, patch_newarray, build_labeled_block, - patch_exit_expr, patch_exit_expr, patch_switch_statement, - patch_try_statement, patch_synchronized_statement, - patch_throw_statement, check_thrown_exceptions, - patch_conditional_expr): Likewise. - -1999-12-24 Alexandre Petit-Bianco - - * Makefile.in (LIBDEPS): Added gcc's errors.o - (../jcf-dump$(exeext):): Link with gcc's errors.o - (../gcjh$(exeext):): Likewise. - * expr.c (expand_java_NEW): Layout the entire target type instead of - laying out its methods only. - (lookup_field): Layout the class after having loaded it. - * java-tree.h (java_debug_context): Declared. - * jcf-io.c (toplev.h): Included. - (find_class): Removed assignment to jcf's outofsynch - field. Force source file to be read if newer than its matching - class file. Tweaked debug messages. - * jcf-parse.c (jcf_out_of_synch): Deleted. - (read_class): Call to jcf_out_of_synch removed. - * jcf.h (typedef struct JCF): Field `outofsynch' deleted. - (jcf_out_of_synch): Prototype deleted. - * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag', - `deprecated' and `class_err': integer turned into bit-fields. - New bit-fields `saved_data_ctx' and `saved_data'. Fixed comments. - * parse.y (package_list): New global. - (package_declaration:): Record newly parsed package name. - (extra_ctxp_pushed_p): Static global deleted. - (java_parser_context_save_global): Create buffer context for the - purpose of saving globals, if necessary. - (java_parser_context_restore_global): Pop context pushed for the - purpose of saving globals, if necessary. - (java_debug_context_do): New prototype and function. - (java_debug_context): Likewise. - (do_resolve_class): Use already parsed package names to qualify - and lookup class candidate. - (java_pre_expand_clinit): Removed unnecessary local variable. - -1999-12-17 Tom Tromey - - * gjavah.c (decode_signature_piece): Print "::" in JArray<>. This - fixes PR gcj/119. - (process_file): Use `\n\' at end of each line in string. - -1999-12-16 Alexandre Petit-Bianco - - * expr.c (expand_invoke): Layout the loaded class before - attempting to use it. - (expand_java_field_op): Allow final field assignments to take - place in $finit$. - * typeck.c (convert): Return error_mark_node if expr is null. - -1999-12-14 Alexandre Petit-Bianco - - * class.c (class_depth): Return -1 if the class doesn't load - properly. - * expr.c (can_widen_reference_to): Check for errors during depth - computation and return 0 accordingly. - * jcf-parse.c (parse_source_file): Call java_fix_constructors to - create default constructors and add an other error check. - * parse.h (java_fix_constructors): Prototyped. - * parse.y (java_pre_expand_clinit): Likewise. - (build_super_invocation): Re-prototyped to feature one argument. - (java_check_circular_reference): Directly use `current'. - (java_fix_constructors): New function. - (java_check_regular_methods): Don't create default constructors - here, but abort if none were found. - (java_complete_expand_methods): Pre-process calling - java_pre_expand_clinit. - (java_pre_expand_clinit): New function. - (fix_constructors): build_super_invocation invoked with the - current method declaration as an argument. - (build_super_invocation): Use the context of the processed method - decl argument instead of current_class. - * typeck.c (lookup_java_method): Take WFLs in method names into - account. - -1999-12-14 Per Bothner - - * class.c (make_class_data): flag_keep_inline_functions to keep - private methods in the method array. - -1999-12-15 Anthony Green - - * check-init.c (check_init): Take into account both types of - `throw's when checking for uninitialized variables. - -1999-12-10 Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): Force conversion of array - dimensions to int_type_node, that's what runtime's ABI expects. - -1999-12-10 Alexandre Petit-Bianco - - * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third - operand of a WFL, until the Java front-end gets fixed with regard - to Mark Mitchell's gcc/tree.h patch (1999-12-04.) - -1999-12-10 Andrew Haley - - * parse.h (BUILD_THROW): Add support for sjlj-exceptions. - decl.c (init_decl_processing): Add _Jv_Sjlj_Throw. - expr.c (build_java_athrow): Add support for sjlj-exceptions. - java-tree.h: Ditto. - jcf-write.c: Ditto. - -1999-12-08 Alexandre Petit-Bianco - - * expr.c (java_lang_expand_expr): Switch to permanent obstack - before calling expand_eh_region_start and expand_start_all_catch. - * except.c (expand_start_java_handler): Switch to permanent - obstack before calling expand_eh_region_start. - (expand_end_java_handler): Switch to permanent obstack before - calling expand_start_all_catch. - -1999-12-5 Anthony Green - - * decl.c (init_decl_processing): Mark throw_node as a noreturn - function with side effects. - (init_decl_processing): Mark all memory allocating DECLs with - DECL_IS_MALLOC. - -1999-12-01 Alexandre Petit-Bianco - - * except.c (expand_end_java_handler): Call - expand_resume_after_catch and end_catch_handler. - -1999-11-30 Anthony Green - - * verify.c (verify_jvm_instructions): Create new return label - chain if non existent (don't rely on the verified state of the jsr - target.) - -1999-11-30 Alexandre Petit-Bianco - - * jcf-write.c (generate_bytecode_insns): Fixed indentation for - COMPOUND_EXPR and FIX_TRUNC_EXPR cases. - - * parse.y (patch_assignment): Removed bogus final class test on - lhs when checking on whether to emit an ArrayStoreException runtime - check. - * expr.c (expand_java_arraystore): Likewise. - -1999-11-28 Anthony Green - - * decl.c (find_local_variable): Reuse single slot decls when - appropriate. - -1999-11-24 Alexandre Petit-Bianco - - * jcf-parse.c (saw_java_source): Global variable removed. - (read_class): Don't use `saw_java_source'. Added extra braces. - (yyparse): Code setting `saw_java_source' removed. - -1999-11-24 Mark Mitchell - - * except.c (emit_handlers): Zero catch_clauses after emitting them. - -1999-11-23 Alexandre Petit-Bianco - - * verify.c (merge_type_state): Non verified subroutines being - considered more than once to trigger passive type merge. - -1999-11-23 Alexandre Petit-Bianco - - * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE - in case of error. Error message tuned. - -1999-11-21 Anthony Green - - * constants.c (find_methodref_index): Unwrap method names before - inserting them in the constant pool. - - * jcf-parse.c (jcf_parse): Display `interface' when appropriate. - - * class.c (assume_compiled_node): New typedef. - (assume_compiled_tree): New static data. - (find_assume_compiled_node): New function. - (add_assume_compiled): New function. - (assume_compiled): New function. - * class.c (make_class_data): Use assume_compiled. - (is_compiled_class): Use assume_compiled. - - * java-tree.h (add_assume_compiled): Declare. - - * lang.c (lang_decode_option): Parse new options. - -1999-11-17 Alexandre Petit-Bianco - - * class.c (layout_class): Always convert TYPE_SIZE_UNIT to - int_type_node: that's what `_Jv_AllocObject' expects. - -1999-11-11 Alexandre Petit-Bianco - - * parse.y (lookup_method_invoke): Use lang_printable_name to - reliably build the type name during error report. Fixes PR gcj/97. - -1999-11-09 Tom Tromey - - * jcf-path.c: Include . - (jcf_path_init): Search for libjava.zip. Fixes PR gcj/84. - (DIR_UP): New macro. - -1999-11-09 Alexandre Petit-Bianco - - * parse.y (source_end_java_method): Resume permanent allocation, - reversing Apr 27 1998 patch. - (patch_string_cst): Pop obstacks after having pushed the permanent - ones. - -1999-11-05 Tom Tromey - - * class.c (finish_class): Emit inlined methods if any native - methods exist in the class. Fixes PR gcj/85. - -1999-11-04 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR. - (qualify_ambiguous_name): Likewise. - -1999-11-03 Godmar Back - - * typeck.c: (lookup_java_method): search all inherited - interfaces when looking up interface method. - -1999-11-01 Alexandre Petit-Bianco - - * parse.y (method_header:): Issue error message for rule `type - error'. - (synchronized:): Error report when not using synchronized. - -1999-11-01 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Prevent `this' from - being used before the superclass constructor has been called. - (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P - instead of `CALL_THIS_CONSTRUCTOR_P'. - -1999-10-30 Todd T. Fries - - * check-init.c: Fix typo in comment. - -1999-10-29 Alexandre Petit-Bianco - - * class.c (add_method_1): Set DECL_INLINE to 1 for private, static - and final method. - -1999-10-29 Alexandre Petit-Bianco - - * parse.y (expression_statement:): Call function to report - improper invocation of a constructor. - (parse_ctor_invocation_error): New function. - -1999-10-26 Mark Mitchell - - * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call - remember_end_note. - -1999-10-21 Tom Tromey - - * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set - in generated `main'. - -1999-10-21 Alexandre Petit-Bianco - - * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR. - (qualify_ambiguous_name): Likewise. - -1999-10-20 Alexandre Petit-Bianco - - * parse.y (java_complete_tree): fold_constant_for_init to work on - permanent_obstack. - (java_complete_lhs): Likewise. - (array_constructor_check_entry): Complete an initializer element - on permanent_obstack. - -1999-10-19 Tom Tromey - - * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file. - From Mike Moreton . - -1999-10-15 Greg McGary - - * java-tree.h (flag_bounds_check): Remove extern decl. - * lang.c (flag_bounds_check): Remove global variable. - (lang_f_options): Remove "bounds-check" entry. - (lang_init_options): Default flag_bounds_check to "on". - -1999-10-14 Tom Tromey - - * jvgenmain.c (usage): New function. - (main): Use it. Also, handle `-D' options. - * jvspec.c (lang_specific_driver): Recognize -D. - (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation. - - * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'. - -1999-10-14 Kaveh R. Ghazi - - * jcf-dump.c (print_constant, disassemble_method): Don't call a - variadic function with a non-literal format string. - - * parse-scan.y (report_main_declaration): Likewise. - - * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise. - - * parse.y (read_import_dir, patch_assignment, patch_binop, - patch_array_ref): Likewise. - - * typeck.c (build_java_array_type): Likewise. - - * verify.c (verify_jvm_instructions): Likewise. - -1999-10-12 Alexandre Petit-Bianco - - * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1. - -1999-10-07 Anthony Green - - * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases - where CHECK_PUT may fail for valid reasons. - - * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3, - UNSAFE_PUTN): New macros. - -1999-10-04 Tom Tromey - - * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as - well. Fixes Java PR gcj/59. - * parse-scan.y (yyerror): Report errors. - -1999-09-24 Glenn Chambers - - * decl.c (insert_block): Remove unconditional `abort'. - -1999-09-24 Bernd Schmidt - - * decl.c (builtin_function): No longer static. New arg CLASS. Arg - FUNCTION_CODE now of type int. All callers changed. - Set the builtin's DECL_BUILT_IN_CLASS. - -1999-09-23 Tom Tromey - - * jvspec.c (lang_specific_driver): Don't read spec file if - -fsyntax-only given. - -1999-09-22 Tom Tromey - - * lang-specs.h: Added `%(jc1)' to the jc1 spec. - - * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally. - (WORDS_TO_LONG): Likewise. - (WORDS_TO_DOUBLE): Likewise. - -1999-09-14 Alexandre Petit-Bianco - - * jcf-write.c (RELOCATION_VALUE_0): New macro. - (RELOCATION_VALUE_1): Likewise. - (emit_iinc, emit_reloc, push_constant1, push_constant2, - push_in_const, push_long_const): Prototyped. - (push_constant1): Argument `index' is of type HOST_WIDE_INT. - (push_constant2): Likewise. - (push_int_const): Cast find_constant1's integer arguments to `jword'. - (find_constant_wide): Cast find_constant2's integer arguments to - `jword'. - (find_constant_index): Cast find_constant2's and find_constant2's - integer arguments to `jword'. - (emit_pop): Argument `value' is of type HOST_WIDE_INT. - (emit_switch_reloc): Use RELOCATION_VALUE_0. - (emit_if): Use RELOCATION_VALUE_1. - (emit_goto): Likewise. - (emit_jsr): Likewise. - (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second - argument to push_long_const to HOST_WIDE_INT. - -1999-09-15 Andreas Schwab - - * Makefile.in (parse.o): Depend on $(JAVA_TREE_H). - -1999-09-20 Nick Clifton - - * lang.c (lang_decode_option): Extend comment. - -1999-09-16 Alexandre Petit-Bianco - - * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK - instead of fndecl. - -1999-09-16 Kaveh R. Ghazi - - * gjavah.c (get_field_name, print_method_info, print_include, - add_namelet): Use xmalloc, not malloc. - - * jcf-depend.c (add_entry): Likewise. Use xstrdup, not strdup. - (munge): Use xrealloc, not realloc, trust xrealloc to handle a - NULL pointer. - - * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup. - - * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise. - - * jcf-path.c (add_entry): Likewise. - - * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc. - - * jv-scan.c (xmalloc): Remove definition. - - * jvgenmain.c (xmalloc): Likewise. - - * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero. - - * lex.c (java_store_unicode): Use xrealloc, not realloc. - - * parse-scan.y: Use concat, not of xmalloc/assign/strcpy. Use - concat, not xmalloc/sprintf. - (java_push_parser_context): Use xcalloc, not xmalloc/bzero. - (xstrdup): Remove definition. - - * parse.y (duplicate_declaration_error_p, - constructor_circularity_msg, verify_constructor_circularity, - check_abstract_method_definitions, java_check_regular_methods, - java_check_abstract_methods, patch_method_invocation, - check_for_static_method_reference, patch_assignment, patch_binop, - patch_cast, array_constructor_check_entry, patch_return, - patch_conditional_expr): Use xstrdup, not strdup. - - * zextract.c (ALLOC): Use xmalloc, not malloc. - -1999-09-12 Kaveh R. Ghazi - - * Make-lang.in (jvspec.o): Depend on system.h and gcc.h. - - * jvspec.c: Include gcc.h. Don't include gansidecl.h. - (do_spec, lang_specific_pre_link, lang_specific_driver, - input_filename, input_filename_length): Don't declare. - (main_class_name, jvgenmain_spec, lang_specific_driver): - Constify a char*. - (lang_specific_driver): All calls to the function pointer - parameter now explicitly call `fatal'. - -1999-09-11 Alexandre Petit-Bianco - - * parse.y (find_applicable_accessible_methods_list): Search - abstract classes as interfaces. - -1999-09-09 Alexandre Petit-Bianco - - * class.c (finish_class): We're now outside a valid method - declaration. Tell the rest of gcc so. - -1999-09-08 Bruce Korb autogen@linuxbox.com - - * Makefile.in: Give the gperf user a hint about why "gperf -F" fails. - -1999-09-07 Tom Tromey - - * gjavah.c (add_class_decl): Generate include for gcj/array.h, not - java-array.h. - (decode_signature_piece): Don't emit "::" in JArray<>. - (print_namelet): Only print trailing `;' when printing a class. - -1999-09-10 Bernd Schmidt - - * java-tree.h: Delete declarations for all tree nodes now moved to - global_trees. - * decl.c: Delete their definitions. - -1999-09-04 Mark Mitchell - - * Make-lang.in (jc1): Depend on ggc-callbacks.o. - * Makefile.in (OBJS): Add ggc-callbacks.o. - (OBJDEPS): Likewise. - -1999-09-03 Tom Tromey - - * parse.y (strip_out_static_field_access_decl): Return operand if - it satisfies JDECL_P. - -1999-09-02 Tom Tromey - - * gjavah.c (decode_signature_piece): Emit "::" in JArray<>. - Handle nested arrays, like `[[I'. - -1999-09-02 Kaveh R. Ghazi - - * class.c (finish_class): Remove unused parameter, all callers - changed. - - * expr.c (build_java_athrow): Change return type to void. - (java_lang_expand_expr): Make sure each case in switch returns a - value. - - * java-tree.h (finish_class): Fix prototype to take void args. - - * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN. - (main): Issue return from main, not exit. - - * jcf-parse.c (parse_class_file): Fix call to `finish_class'. - - * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN. - - * jv-scan.c (main): Issue return from main, not exit. - - * parse.y (check_abstract_method_definitions, - java_check_abstract_method_definitions): Add static prototypes. - (java_complete_expand_methods): Fix call to `finish_class'. - - * verify.c (verify_jvm_instructions): Initialize variables `oldpc' - and `prevpc'. - -1999-08-30 Kaveh R. Ghazi - - * lang.c (language_string): Constify. - -1999-08-30 Kaveh R. Ghazi - - * Makefile.in (LIBS): Fix definition so we link with $(CLIB). - Remove hacks for stuff which comes from libiberty. - - * Make-lang.in: Likewise. - -1999-08-30 Hans-Peter Nilsson - - * Makefile.in (xref.o): Depend on xref.c explicitly. - -1999-08-29 Kaveh R. Ghazi - - * java-tree.h (lang_printable_name): Constify a char*. - - * lang.c (lang_printable_name): Likewise. - -1999-08-27 Jeffrey A Law (law@cygnus.com) - - * gjavah.c, jcf-write.c, verify.c: Do not use C++ style - comments in C code. - -1999-08-26 Tom Tromey - - * gjavah.c (print_cxx_classname): Print "::" before qualified - name. - -1999-08-26 Alexandre Petit-Bianco - - * parse.y (lookup_cl): Changed leading comment. Now does its best - to set the column number. - (qualify_ambiguous_name): Take WFL wrappers into account. - -1999-08-25 Gregg Townsend - - * verify.c (verify_jvm_instructions): Don't check instruction - validity beyond end of method. - -1999-08-25 Tom Tromey - - * jvspec.c (lang_specific_driver): Correctly handle --help again. - -1999-08-25 Kaveh R. Ghazi - - * gjavah.c (print_name, print_base_classname, utf8_cmp, - cxx_keyword_subst, generate_access, name_is_method_p, - get_field_name, print_field_name, super_class_name, print_include, - decode_signature_piece, print_class_decls, usage, help, - java_no_argument, version, add_namelet, print_namelet): Add static - prototype. - (print_base_classname, utf8_cmp, cxx_keyword_subst, - name_is_method_p): Constify a char*. - (get_field_name): Likewise. Prefer xstrdup over malloc/strcpy. - Provide a final else clause in an if-else-if. - (print_field_info): Add missing final arg in function call to - `print_field_name'. - (print_method_info, decompile_method, decode_signature_piece, - print_c_decl, print_full_cxx_name, print_stub, - print_mangled_classname, super_class_name, print_include, - add_namelet, add_class_decl, print_class_decls, process_file, - help): Constify a char*. - - * jcf-write.c (jcf_handler, push_constant1, push_constant2, - push_int_const, find_constant_wide, find_constant_index, - push_long_const, field_op, maybe_wide, emit_dup, emit_pop, - emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop, - emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc, - emit_if, emit_goto, emit_jsr, call_cleanups, - make_class_file_name): Add static prototypes. - (generate_bytecode_return, generate_bytecode_insns): Pass a - NULL_PTR, not a NULL_TREE. - - * jv-scan.c: Include "jcf.h". - (main): Declare using DEFUN macro. - - * jvspec.c (find_spec_file, lang_specific_pre_link, - lang_specific_driver): Add prototypes. - (find_spec_file): Constify a char*. - - * keyword.gperf (hash, java_keyword): Add prototypes. - - * lang.c (lang_print_error): Add static prototype. - (lang_init): Prefer memcpy over bcopy to avoid casts. - - * lex.c (yylex): Add static prototype. - - * parse-scan.y: Include "lex.c" earlier. - - * parse.h: Remove redundant declaration for `yylex'. - - * parse.y (java_decl_equiv, binop_compound_p, search_loop, - labeled_block_contains_loop_p): Add static prototypes. - (not_accessible_p): Make static to match prototype. - - * verify.c (start_pc_cmp): Don't needlessly cast away const. - -1999-08-22 Alexandre Petit-Bianco - - * parse.y (check_method_redefinition): Changed leading comment. - (check_abstract_method_definitions): New function. - (java_check_abstract_method_definitions): New function. - (java_check_regular_methods): Call it. - (verify_constructor_super): Fixed indentation. - (lookup_method_invoke): Likewise. - -1999-08-19 Alexandre Petit-Bianco - - * parse.y (method_header): Return a null pointer if the current - class node is null. - (finish_method_declaration): Return if the current function decl - is null. - (source_start_java_method): Likewise. - (java_method_add_stmt): Likewise. - -1999-08-18 Alexandre Petit-Bianco - - * class.c (emit_register_class): Removed unnecessary call to - start_sequence. - * parse.y (labeled_block_contains_loop_p): Removed unused local - variable. - -1999-08-17 Alexandre Petit-Bianco - - * parse.y (java_refold): Added prototype. - -1999-08-17 Alexandre Petit-Bianco - - * parse.y (BINOP_COMPOUND_CANDIDATES): New macro. - (java_stabilize_reference): Removed unnecessary `else'. - (java_complete_lhs): Set flag to remember boolean. Call - java_refold. Added comments. - (java_decl_equiv): New function. - (binop_compound_p): Likewise. - (java_refold): Likewise. - (patch_unaryop): Striped static field access assigned to decl and - op. Changed promotion scheme for ++/-- operators. - (search_loop): New function. - (labeled_block_contains_loop_p): Likewise. - (patch_loop_statement): Call labeled_block_contains_loop_p. Added - comment. - (patch_bc_statement): Call search_loop. Fixed comment. - -1999-08-14 Anthony Green - - * expr.c (java_lang_expand_expr): Mark static array data as - referenced. - -1999-08-10 Rainer Orth - - * jvgenmain.c (main): NUL-terminate name_obstack. - -1999-08-10 Kaveh R. Ghazi - - * check-init.c (check_bool2_init, done_alternative): Add static - prototypes. - - * class.c (add_interface_do, maybe_layout_super_class): Likewise. - (add_method, build_utf8_ref, build_class_ref, - append_gpp_mangled_type, layout_class_method): Constify a char*. - - * decl.c (push_promoted_type, make_binding_level): Add static - prototypes. - (push_promoted_type, pushdecl): Constify a char*. - - * except.c (find_handler_in_range, link_handler, - check_start_handlers): Add static prototypes. - - * expr.c (process_jvm_instruction): Constify a char*. - - * gjavah.c (main): Constify a char*. - - * java-tree.h (verify_jvm_instructions, process_jvm_instruction): - Constify a char*. - - * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add - static prototypes. - (add_entry, jcf_dependency_set_target, jcf_dependency_add_target, - munge, print_ents): Constify a char*. - - * jcf-dump.c (disassemble_method): Constify a char*. - (print_constant_pool, print_exception_table): Add static prototypes. - (print_constant, print_exception_table, main, disassemble_method): - Constify a char*. - - * jcf-io.c (find_classfile, find_class): Likewise. - - * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise. - (set_source_filename, predefined_filename_p): Add static prototypes. - (set_source_filename, get_constant, get_class_constant, - find_in_current_zip): Constify a char*. - - * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add - static prototypes. - (add_entry, add_path, jcf_path_classpath_arg, - jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*. - - * jcf-reader.c (get_attribute, jcf_parse_preamble, - jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields, - jcf_parse_one_method, jcf_parse_methods, - jcf_parse_final_attributes): Add static prototypes. - (get_attribute): Constify a char*. - - * jcf.h (find_class, find_classfile, jcf_dependency_set_target, - jcf_dependency_add_target, jcf_path_classpath_arg, - jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*. - - * jv-scan.c (main): Constify a char*. - (gcc_obstack_init): Add prototype arguments. - - * jvgenmain.c (gcc_obstack_init): Likewise. - (main): Constify a char*. - - * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add - static prototypes. - (put_decl_string, lang_print_error): Constify a char*. - (lang_init): Remove redundant extern prototype. - - * mangle.c (emit_unicode_mangled_name): Constify a char*. - - * typeck.c (convert_ieee_real_to_integer, parse_signature_type): - Add static prototypes. - (get_type_from_signature): Constify a char*. - - * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ): - Add static prototypes. - (start_pc_cmp): Prefer PTR over GENERIC_PTR. - (verify_jvm_instructions): Constify a char*. - - * xref.c (xref_flag_value): Likewise. - - * xref.h (xref_flag_value): Likewise. - - * zextract.c (makeword, makelong): Add static prototypes. - (makeword, makelong): Constify a uch*. - -1999-08-09 Kaveh R. Ghazi - - * lang.c (java_dummy_print): Constify a char*. - (lang_print_error): Likewise. - (lang_init): Remove redundant prototype for `print_error_function'. - (lang_init_source): Likewise. - (lang_identify): Constify a char*. - -1999-08-09 Tom Tromey - - * javaop.h (WORD_TO_FLOAT): only inline if building with gcc. - (WORDS_TO_LONG): Likewise. - (WORDS_TO_DOUBLE): Likewise. - -1999-08-04 Kaveh R. Ghazi - - * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H). - - * expr.c (java_stack_pop, java_array_data_offset, - build_java_throw_out_of_bounds_exception, case_identity, - build_java_check_indexed_type): Add static prototypes. - (linenumber_table, expand_invoke, expand_java_field_op, - build_primtype_type_ref, expand_byte_code): Constify a char*. - - * java-tree.h (build_primtype_type_ref, linenumber_table): - Constify a char*. - (java_lang_expand_expr): Add prototype. - - * lang.c: Include rtl.h and expr.h. Remove extern prototype for - `java_lang_expand_expr'. - - * lex.c (java_lex_error): Constify a char*. - (java_get_unicode, java_read_char, java_allocate_new_line, - java_unget_unicode, java_sneak_unicode): Prototype. - - * parse-scan.y (current_class, package_name, method_declarator, - report_class_declaration, yyerror): Constify a char*. - - * parse.h (java_report_errors): Prototype. - (yyerror): Constify a char*. - - * parse.y (classitf_redefinition_error, check_modifiers, - parse_jdk1_1_error, lookup_package_type, - lookup_package_type_and_set_next, get_printable_method_name, - purify_type_name): Constify a char*. - (build_super_invocation, maybe_generate_finit, - verify_constructor_super, parser_add_interface, - add_superinterfaces, jdep_resolve_class, note_possible_classname, - java_complete_expand_methods, java_expand_finals, - cut_identifier_in_qualified, java_stabilize_reference, - do_unary_numeric_promotion, operator_string, do_merge_string_cste, - merge_string_cste): Prototype. - (single_type_import_declaration, yyerror, - variable_redefinition_error, build_array_from_name, - build_unresolved_array_type, check_class_interface_creation, - resolve_class, complete_class_report_errors, - note_possible_classname, read_import_dir, - find_in_imports_on_demand, resolve_package, fix_constructors, - check_deprecation, lookup_method_invoke, - maybe_build_primttype_type_ref, array_constructor_check_entry): - Constify a char*. - (java_complete_expand_methods, java_expand_finals): Make static. - (convert_narrow): Remove static prototype. - -1999-08-03 J"orn Rennecke - - * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h. - -1999-08-02 Richard Henderson - - * decl.c: Include defaults.h instead of expr.h. - * parse.y: Likewise. - -1999-08-02 Jakub Jelinek - - * java/decl.c (start_java_method): Change all uses of - PROMOTE_PROTOTYPES, so that it tests it as a C expression. - Ensure expr.h is included. - * java/expr.c (pop_arguments): Ditto. - * java/parse.y (expand_start_java_method): Ditto. - -1999-08-01 Kaveh R. Ghazi - - * Makefile.in (ALL_CFLAGS): Add '-W -Wall'. - -1999-07-31 Bernd Schmidt - - * decl.c: Include "function.h". - * except.c: Likewise. - * parse.y: Likewise. - * Makefile.in: Update dependencies. - -1999-07-30 Kaveh R. Ghazi - - * expr.c (build_java_soft_divmod): Provide a default case in switch. - (java_lang_expand_expr): Mark parameters `target', `tmode' and - `modifier' with ATTRIBUTE_UNUSED. - - * gjavah.c (process_file): Add braces around ambiguous `else'. - - * jcf-dump.c (print_access_flags, localvar_free): Change return - type to void. - - * parse.y (java_complete_expand_method): Initialize variable - `exception_copy'. - (resolve_qualified_expression_name): Likewise for `field_decl'. - (patch_method_invocation): Likewise for `class_to_search'. - (qualify_ambiguous_name): Likewise for `name' and `ptr_type'. - (patch_assignment): Likewise for `lhs_type'. - - * verify.c (verify_jvm_instructions): Remove unused variable - `caller'. - -1999-07-25 Richard Henderson - - * decl.c (va_list_type_node): New. - -1999-07-25 Anthony Green - - * gjavah.c (print_stub): New function. - (METHOD_IS_NATIVE): New macro. - (print_mangled_classname): Make static. - (HANDLE_END_FIELD): Don't emit fields during stub generation. - (process_file): Perform stub generation. - (HANDLE_METHOD): Don't emit class decls during stub - generation. - (HANDLE_END_METHOD): Take into account stub generation. - (print_method_info): Handle stub generation. - (print_stub): New function. - (print_cxx_classname): Make signature consistant with others. - (help): Describe -stubs option. - (main): Create stub file. - (version): Use version.c. - (print_full_cxx_name): New function. - (print_c_decl): Use print_full_cxx_name. - -1999-07-22 Alexandre Petit-Bianco - - * check-init.c (check_init): Handle MAX_EXPR. - -1999-07-15 Andrew Haley - - * lang.c (flag_use_divide_subroutine): New variable. - * typeck.c: (convert_ieee_real_to_integer): Bounds check - fp-to-integer conversion. - (convert): Call convert_ieee_real_to_integer when flag_fast_math - is not set. - - * expr.c (build_java_soft_divmod): New function. - (build_java_binop): Call build_java_soft_divmod if - flag_use_divide_subroutine is set. - * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree - soft_lrem_node: new builtin functions. - (init_decl_processing) Initialize the new builtins. - * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree - soft_lrem_node: new builtin functions. - (build_java_soft_divmod): New function. - * parse.y: Call build_java_soft_divmod if - flag_use_divide_subroutine is set. - * parse.c: Rebuilt. - - * jvspec.c (lang_specific_driver): Always allow an extra arg (for - a --specs= arg) even if not linking. - * lang-options.h (DEFINE_LANG_NAME ("Java")): Add - -fuse-divide-subroutine - -1999-07-20 Alexandre Petit-Bianco - - * parse.y (resolve_and_layout): Check methods only once. - (resolve_qualified_expression_name): Verify thrown exceptions - compatibility. - (check_thrown_exceptions): Reject exceptions thrown in - initializer. Error message tuned. - -1999-07-14 Andrew Haley - - * expr.c (expand_expr): Do not return the last statement in a - block as the block's value. - -1999-07-03 Alexandre Petit-Bianco - - * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed - CALL_EXPR, to avoid order of evaluation changes. - -1999-07-02 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Do not use - IDENTIFIER_LOCAL_VALUE when name is a STRING_CST. - -1999-07-01 Alexandre Petit-Bianco - - * check-init.c (check_init): Handle MAX_EXPR. - * expr.c (force_evaluation_order): Force method call arguments to - be evaluated in left-to-right order. - * parse.y (qualify_ambiguous_name): Loop again to qualify - NEW_ARRAY_EXPR properly. - -1999-06-30 Alexandre Petit-Bianco - - * parse.y (patch_invoke): Resolve unresolved invoked method - returned type. - (qualify_ambiguous_name): STRING_CST to qualify expression for - type name resolution. - -1999-06-24 Andrew Haley - - * class.c (finish_class): Whenever a deferred method is - output, rescan the list of methods to see if a new candidate for - output can be found. - -1999-06-28 Tom Tromey - - * jvspec.c (lang_specific_driver): Recognize --help. - -1999-06-25 Alexandre Petit-Bianco - - * parse.y (resolve_package): Fixed bogus return statement. - (patch_method_invocation): Resolve method invocation beginning with - a package name qualifier. - -1999-06-25 Kaveh R. Ghazi - - * Make-lang.in (java.stage1): Depend on stage1-start. - (java.stage2): Likewise for stage2-start. - (java.stage3): Likewise for stage3-start. - (java.stage4): Likewise for stage4-start. - -1999-06-24 Alexandre Petit-Bianco - - * parse.y (java_complete_lhs): When doing cross referencing, don't - try to keep file location on a WFL expanded as a CALL_EXPR. - -1999-06-23 Alexandre Petit-Bianco - - * parse.y (finish_method_declaration): Insert a RETURN_EXPR when - compiling to class file a void method with an empty method body. - As a side effect, the bytecode backend will generate the - appropriate `return' instruction. - -1999-06-22 Alexandre Petit-Bianco - - * parse.y (lookup_package_type_and_set_next): New function prototype. - (resolve_package): Search current and imported packages. - (lookup_package_type_and_set_next): New function. - -1999-06-22 Andrew Haley - - * verify.c (verify_jvm_instructions): Check for pending blocks - before invalid PC test and opcode switch, not after. - -1999-06-21 Andrew Haley - - * except.c (find_handler_in_range): The upper limit for exception - ranges is exclusive, not inclusive: (start <= pc < end). - (link_handler): find child pointer which points to outer by - searching sibling list: previous code incorrectly assumed that - outer->outer->first_child must point to outer. - * verify.c (verify_jvm_instructions): FIXME added to code for - `athrow'. - (verify_jvm_instructions): Do not assume that the last block - processed in a subroutine is a block which ends with a `ret' - instruction. With some control flows it is possible that the last - block ends with an `athrow'. - -1999-06-14 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Reorganized the post - evaluation of non WFL leading expression nodes. - -1999-06-11 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after - CONVERT_EXPR. - -1999-06-10 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Handle qualified expression - beginning with a STRING_CST. - -1999-06-10 Alexandre Petit-Bianco - - * parse.y (register_fields): Set DECL_INITIAL on both - pre-initialized static and public fields. - (resolve_field_access): Static field access expressions to always - use pointer types. - (qualify_ambiguous_name): Work out buried CALL_EXPR for proper - qualification. CONVERT_EXPR to be resolved as an expression name. - (java_complete_lhs): Identify and access qualified final - initialized field in switch statement case expression. - (fold_constant_for_init): Pre-initialized field decl constant to - be folded. - -1999-06-07 Alexandre Petit-Bianco - - * parse.y (note_possible_classname): Mark returned node with - QUALIFIED_P only if the original class name contained a '/'. - -1999-06-05 Anthony Green - - * Make-lang.in (gcjh): More parallel build fixes. - -1999-06-03 Mike Stump - - * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds. - -1999-06-02 Anthony Green - - * except.c (link_handler): Chain exception handlers in order. - -1999-06-02 Anthony Green - - * expr.c (expand_byte_code): Fill unreachable bytecode regions - with nops and process as usual in order to always set correct EH - ranges. Emit detailed warnings about unreachable bytecodes. - -1999-06-02 Anthony Green - - * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as - constant. - -1999-05-28 Alexandre Petit-Bianco - - * parse.y (lookup_field_wrapper): Unified returned value to NULL - or the searched field decl. - -1999-05-28 Alexandre Petit-Bianco - - * parse.y (fold_constant_for_init): Convert numerical constant - values to the type of the assigned field. - -1999-05-27 Alexandre Petit-Bianco - - * expr.c (lookup_field): Relaxed the test on class loading error - detection. - * parse.y (fold_constant_for_init): Enabeled old code. - -1999-05-26 Alexandre Petit-Bianco - - * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast' - decide the validity of the cast of a java.lang.Cloneable reference - to an array. - (patch_conditional_expr): Fixed first argument passed to - binary_numeric_promotion. - -1999-05-26 Alexandre Petit-Bianco - - * parse.y (qualify_ambiguous_name): Take into account that a - CONVERT_EXPR might specify a type as a WFL. - -1999-05-25 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Save the rhs before using it as an - argument to _Jv_CheckArrayStore. - -1999-05-25 Alexandre Petit-Bianco - - * lex.c (java_parse_doc_section): Fixed `tag' buffer size. - -1999-05-24 Alexandre Petit-Bianco - - * lex.c (java_lex): Accepts `+' or `-' after the beginning of a - floating point literal only when the exponent indicator has been - parsed. - -1999-05-22 Alexandre Petit-Bianco - - * parse.y (formal_parameter:): Construct argument tree list - element even if a yet unsupported final parameter was encountered. - -1999-05-18 Alexandre Petit-Bianco - - * parse.y (finish_method_declaration): Issue errors for native or - abstract methods declared with a method body, as well as for non - native or non abstract methods with no method body. - -1999-05-19 Kaveh R. Ghazi - - * class.c (build_utf8_ref): Initialize variable `field'. - - * decl.c (init_decl_processing): Initialize variable `field'. - - * expr.c (build_known_method_ref): Mark parameters `method_type', - `method_signature' and `arg_list' with ATTRIBUTE_UNUSED. - (process_jvm_instruction): Likewise for parameter `length'. - - * jvspec.c (lang_specific_driver): Mark variables `saw_math', - `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with - ATTRIBUTE_UNUSED. - - * parse.y (maybe_generate_clinit): Remove unused variable - `has_non_primitive_fields'. - (find_in_imports_on_demand): Initialize variables `node_to_use' - and `cl'. - (patch_binop): Likewise for variable `prom_type'. - (patch_unaryop): Likewise for variable `prom_type'. - - * verify.c (verify_jvm_instructions): Likewise for variable `last'. - - * xref.c (xref_table): Add missing initializer. - -1999-05-14 Tom Tromey - - * java-except.h (struct eh_range): Removed unused `next' member. - * verify.c (verify_jvm_instructions): Call check_nested_ranges - after adding all exception handlers. Sort exception ranges in - order of start PC. - (struct pc_index): New structure. - (start_pc_cmp): New function. - * except.c (add_handler): Return `void'. Don't call link_handler; - instead construct an ordinary linked list and do range - coalescing. - (check_nested_ranges): New function. - (link_handler): Changed interface to allow merging of eh_ranges. - Split overlapping ranges. Return `void'. - -1999-05-17 Alexandre Petit-Bianco - - * parse.y (constructor_block_end:): New rule, tagged . - (constructor_body:): Use `constructor_block_end' instead of - `block_end'. - -1999-05-17 Alexandre Petit-Bianco - - * parse.y (statement_nsi:): Pop `for' statement block. - (java_complete_lhs): Labeled blocks containing no statement are - marked as completing normally. - -1999-05-14 Alexandre Petit-Bianco - - * xref.c (xref_set_current_fp): New function, defined. - * xref.h (xref_set_current_fp): New function, prototyped. - -1999-05-14 Alexandre Petit-Bianco - - * check-init.c (check_init): Take into account that - LABELED_BLOCK_STMT can be empty. - -1999-05-13 Alexandre Petit-Bianco - - * parse.y (java_check_regular_methods): Warning check on not - overriding methods with default access in other packages does not - apply to `'. - (java_complete_lhs): If block body is an empty_stmt_node, replace - it by NULL_TREE. This prevents gcc from generating an irrelevant - warning. - -1999-05-13 Alexandre Petit-Bianco - - * check-init.c (check_init): Removed code accepting to see things - falling through default:, when doing xrefs. - * java-tree.h (do_not_fold): New global variable, declared. - * parse.y (do_not_fold): New global variable, defined. - (java_complete_expand_method): Set `do_not_fold' to the value of - `flag_emit_xref'. When doing xrefs: copy the thrown exceptions, - and reinstall them after them have been purged; do not check for - initializations; do not issue missing return errors. - (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes - when doing xrefs. - (patch_binop): Skip the fold part when doing xrefs. - (build_string_concatenation): Skip the concatenation part when - doing xrefs. - (patch_synchronized_statement): Do not generate a try-finally when - doing xrefs. - (patch_throw_statement): When doing xrefs, do not call BUILD_THROW - and keep the location where the throw was seen. - * typeck.c (convert): When `do_not_fold' is set, do not attempt - any treatment on the converted node an simply return a NOP_EXPR of - the targeted type. - * xref.c (xref_get_data): New function, defined. - * xref.h (xref_get_data): New function, declared. - (XREF_GET_DATA): Use xref_get_data. - -1999-05-13 Kaveh R. Ghazi - - * gjavah.c (print_include): Cast the result of `strlen' to int - when comparing against a signed value. - (add_namelet): Likewise. - -1999-05-12 Kaveh R. Ghazi - - * expr.c (expand_invoke): Mark parameter `nargs' with - ATTRIBUTE_UNUSED. - (PRE_LOOKUP_SWITCH): Likewise for variable `match'. - - * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with - ATTRIBUTE_UNUSED. - - * jcf-reader.c (get_attribute): Cast a value to long - when comparing against a signed expression. Likewise. - - * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or - HOST_BITS_PER_CHAR. - -1999-05-11 Andrew Haley - - * parse.y (source_end_java_method): If the current method contains - any exception handlers, force asynchronous_exceptions: this is - necessary because signal handlers in libjava may throw exceptions. - * decl.c (end_java_method): Ditto. - -1999-05-11 Tom Tromey - - * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x - flags. - * jvspec.c (THREAD_NAME): Removed. - (GC_NAME): Likewise. - (MATHLIB): Likewise. - (WITHLIBC): Likewise. - (GCLIB): Likewise. - (THREADLIB): Likewise. - (MATH_LIBRARY): Likewise. - (lang_specific_driver): Don't add `-l' options to command line. - Instead, add a single --specs option. Recognize `-L' options and - use them to search for spec file. - (find_spec_file): New function. - (SPEC_FILE): New define. - -1999-05-11 Dave Brolley - - * lang-options.h: -MD, -MMD, -M and -MM not needed here for - cpplib-enabled build. - -1999-05-05 Per Bothner - - * class.c (make_field_value): DECL_INITIAL may be a string literal; - temporarily zero it while calling rest_of_decl_compilation. - - * java-tree.h (string_ptr_type_node): Add declaration. - * decl.c: Define and initialize string_ptr_type_node. - * parse.y (patch_string_cst): Use string_ptr_type_node. - - * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P): Removed. - * parse.y (for_statement): Now unconditionally exit_block. - (finish_labeled_statement): No longer exit_block if for-loop. - (patch_loop_statement): Check harder if the loop is already labeled. - - * parse.y (patch_initialized_static_field): Removed function. - (maybe_generate_clinit): Removed special handling for interfaces. - (java_complete_expand_methods): Do a preliminary java_complete_tree - on to determine if it can be removed. - (java_complete_expand_method): Remove special handling for . - (java_complete_lhs): For BLOCK and EXPR_WITH_FILE_LOCATION - optimize if we get back empty_stmt_node. - For MODIFY_EXPR, re-do checking of static initializers. - (fold_constant_for_init): Don't return immediate if VAR_DECL. - For VAR_DECL, pass correct context. - - * verify.c (verify_jvm_instructions): Better error messages. - -1999-05-03 Tom Tromey - - * parse-scan.y (interface_declaration): Call - report_class_declaration for interfaces. - -1999-04-30 20:54 -0400 Zack Weinberg - - * Makefile.in: Remove -v from bison command lines. - -1999-04-30 Alexandre Petit-Bianco - - * check-init.c (check_init): Exclude a case of error when doing - xrefs. - * class.c (layout_class_method): Don't generate the error message - twice when compiling from source. - * lang-options.h: Added `-Wredundant-modifers' and - `-Wunusupported-jdk11' flags and help text. - * lang.c (lang_decode_option): Added support for - `-Wunsupported-jdk11' and `-Wredundant-modifiers'. - flag_static_local_jdk11 and flag_redundant set accordingly. - * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK. - * parse.h (EXPR_WFL_ADD_COL): New macro. - (DECL_END_SOURCE_LINE): Likewise. - (DECL_INHERITED_SOURCE_LINE): Likewise. - * parse.y (static_ref_err): New function, prototyped. - (CCB_TK): Now tagged . - (class_body:): Remember the location of the closing '}' of a class - definition when doing xrefs. - (block:): Likewise. - (block_end:): Likewise. - (create_class): Remember the location of the inherited class - identifier when doing xrefs. - (register_fields): Added test on first operand of `init' before - testing it TREE_CODE. - (method_header): Store the location of the class identifier in the - class decl when doing xrefs. - (finish_method_declaration): Don't combine first/last method line - when doing xref. - (java_check_regular_methods): Warning check on not overriding - methods with default access on other packages move before check on - static methods. Initialization of `aflags' also moved up. - (resolve_expression_name): Call static_ref_err to report the error. - (static_ref_err): New function, implemented. - (resolve_field_access): Returned simplified static field access - when doing xrefs. - (resolve_qualified_expression_name): Check for illegal use of - static fields in a non static context. Call static_ref_err to - report error in various places. - (java_complete_tree): Do not fold initialized static fields when - doing xrefs. - (java_complete_lhs): Likewise. - -1999-04-29 Anthony Green - - * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to - create internal labels. - (lookup_label): Ditto. - -1999-04-24 Alexandre Petit-Bianco - - * class.c (layout_class_method): Generate 's rtl for - interfaces. - * decl.c (complete_start_java_method): Don't call _Jv_InitClass - for interfaces' . - * expr.c (lookup_field): Search for fields in interfaces. - (expand_invoke): Fixed indentation. - (expand_java_field_op): Likewise. Use IS_CLINIT. - * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed. - (IS_CLINIT): New macro. - * parse.y (type_declaration:): Call maybe_generate_clinit after an - interface was parsed. - (maybe_generate_clinit): Don't generate if the current class is an - interface with only fields of primitive types. - (reset_method_name): Use IS_CLINIT. - (java_complete_expand_method): Expand when it exists for - interfaces. Use IS_CLINIT. - (resolve_expression_name): Use DECL_CONTEXT instead of - current_class to build static field references. - (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on - ARRAY_REF when doing xreferencing. - (check_final_assignment): Fixed typo in leading comment. Use - IS_CLINIT. - (patch_array_ref): Don't fully expand array references when - xreferencing. - (patch_return): Use IS_CLINIT. - (patch_throw_statement): Likewise. - -1999-04-22 Tom Tromey - - * Make-lang.in (JAVA_SRCS): Added check-init.c. - -1999-04-21 Alexandre Petit-Bianco - - * decl.c (predef_filenames, predef_filenames_size): New globals - (init_decl_processing): predef_filenames and predef_filenames_size - initialized. - * java-tree.h (predef_filenames, predef_filenames_size): Declared - extern. - * jcf-parse.c (predefined_filename_p): New function. - (yyparse): Check that files on the command line are specified only - once and issue a warning otherwise. - * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro. - * parse.y (source_end_java_method): Nullify NOP method bodies, to - avoid a gcc warning with -W -Wall turned on. - (java_expand_classes): Abort if errors were encountered. - (java_complete_lhs): If the cross reference flag is set, wrap - field DECL node around a WFL when resolving expression name. - -1999-04-19 Alexandre Petit-Bianco - - * lang.c (lang_decode_option): Fixed returned value when parsing - `-fxref=...' and `-Wall'. - * parse.y (source_end_java_method): Do not generate code when - flag_emit_xref is set. - (resolve_expression_name): Do not build static field access when - flag_emit_xref is set. - (resolve_field_access): No special treatment on `length' when - flag_emit_xref is set. Do not build qualified static field access - when flag_emit_xref is set. - (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR - when flag_emit_xref is set. - (patch_assignment): Do not generate array store runtime check when - flag_emit_xref is set. - * xref.c (xref_flag_value): Fixed function declaration - indentation. - (xset_set_data): New function. - * xref.h (xref_set_data): Added prototype for new function. - (typedef struct xref_flag_table): New field data. - (XREF_GET_DATA): New macro. - -1999-04-19 Tom Tromey - - * xref.h (enum): Removed trailing comma. - - * parse.y (resolve_qualified_expression_name): Added missing - `break'. - -1999-04-15 Anthony Green - - * gjavah.c: New prototypes for java_float_finite and - java_double_finite. - -1999-04-12 Alexandre Petit-Bianco - - * parse.y (patch_unaryop): Fixed ++/-- operator check on array - references. - -1999-04-06 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (TREE_H): Add tree-check.h. - (RTL_H): Add genrtl.h. - -1999-04-06 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Added ArrayStoreException runtime - check. - -1999-04-06 Per Bothner - - * expr.c (pop_type_0): New function. - (pop_type): Use pop_type_0. - * java-tree.h (pop_type_0): New declaration. - * verify.c (verify_jvm_instructions): Check return instructions. - - * parse.y (patch_binop): Don't fold if non-constant and emiting - class files. - -1999-04-05 Kaveh R. Ghazi - - * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H). - - * gjavah.c: Include math.h earlier. Include tree.h/java-tree.h. - (main_jcf): Don't define. - (process_file): Don't set `main_jcf'. - - * java-tree.h (main_jcf): Don't declare. - - * jcf-parse.c (main_jcf): Add static definition. - - * lang.c (main_jcf): Don't define. - -1999-04-05 Kaveh R. Ghazi - - * class.c (add_method_1): Cast the argument of `bzero' to PTR. - - * decl.c (copy_lang_decl): Likewise for `bcopy'. - - * jcf-depend.c: Include "config.h", not . - - * jcf-parse.c (jcf_figure_file_type): Cast the arguments of - `bcopy' to PTR. - - * jcf-path.c: Include "config.h", not . - - * lex.c: Don't include various system header files. - (java_init_lex): Cast the argument of `bzero' to PTR - - * parse-scan.y (java_push_parser_context): Likewise. - - * parse.y (java_push_parser_context): Likewise. - (patch_bc_statement): Match format specifier to variable argument. - - * xref.c: Don't include . - -1999-04-05 Alexandre Petit-Bianco - - * parse.y (struct parser_ctxt *ctxp): Now global. - (declare_local_variables): Use WFL compound value for the - declaration source line value, when doing cross-referencing. - -1999-03-31 Tom Tromey - - * gjavah.c (print_field_info): Allow constants of other types. - (print_include): Generate include when new name is proper prefix - of already printed name. - (add_namelet): Likewise. - (cxx_keyword_subst): New function. - (print_method_info): Use it. - (print_field_name): New function. - (get_field_name): New function. - (print_field_info): Use get_field_name and print_field_name. - -1999-03-31 Kaveh R. Ghazi - - * Makefile.in (keyword.h): Generate using gperf language 'C', not - 'KR-C', so gperf uses the `const' keyword on strings. - - * keyword.gperf (java_keyword): Const-ify a char*. - -1999-03-30 Alexandre Petit-Bianco - - * parse.y (patch_bc_statement): Fixed identation and a bogus - `printf' format. - -1999-03-30 Alexandre Petit-Bianco - - * parse.y (patch_assignment): Allow static variables in other - classes to be assigned. - -1999-03-28 Kaveh R. Ghazi - - * class.c (maybe_add_interface): Remove unused variable - `interface_binfo'. - (make_class_data): Use = for assignment, not ==. Likewise. - (emit_register_classes): Remove unused variable `decl'. - - * lex.c: Fix comment so as not to contain an embedded `/*'. - - * verify.c (verify_jvm_instructions): Remove unused variable - `self_type'. - -1999-03-27 Per Bothner - - * parse.y (complete_loop_body): Rename to finish_loop_body. - (complete_labeled_statement): Rename to finish_labeled_statement. - (complete_for_loop): Rename to finish_for_loop. - (complete_method_declaration): Rename to finish_method_declaration. - - * java-tree.h (continue_identifier_node): New global node. - * decl.c: Define and initialize continue_identifier_node. - * parse.y (generate_labeled_block): Remove - no longer needed. - (build_loop_body): Use continue_identifier_node for continue block. - (finish_labeled_statement): Also do pop_labeled_block actions. - (java_complete_lhs): POP_LOOP even if error. - (build_labeled_block): Special handling for continue_identifier_node. - (patch_loop_statement): Re-organize. - (patch_bc_statement): Re-write. - -1999-03-27 Alexandre Petit-Bianco - - * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count - using a WFL compound value. - * parse.y (xref.h): Include. - (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the - WFL compound value. - (register_fields): Set WFL compound value to lineno if doing - xrefs. - (java_complete_expand_method): Call expand_xref if flag_emit_xref - is set. - * xref.c (system.h, jcf.h, parse.h, obstack.h): Include. - * xref.h (expand_xref): Prototype renamed from xref_generate. - -1999-03-27 Alexandre Petit-Bianco - - * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK. - (GET_CURRENT_BLOCK): New macro. - * parse.y (current_static_block): New global variable. - (method_body:): Define action. - (complete_method_declaration): Set current_function_decl to NULL - when work on the current method is done. - (declare_local_variables): Use GET_CURRENT_BLOCK. - (java_method_add_stmt): Likewise. - (java_complete_expand_method): Disable the use of `this' when - expanding . - (enter_a_block): If no current method exist, use - current_static_block to link static initializer blocks. - (exit_block): Rewritten to use current_static_block when no current - method decl exists. - (lookup_name_in_blocks): Use GET_CURRENT_BLOCK. - (patch_return): Forbid the use of `return' in static initializers. - (patch_throw_statement): Fixed indentation. Issue specific error - for uncaught thrown checked exception in static initializer - blocks. Removed FIXME. - -1999-03-25 Zack Weinberg - - * java/Make-lang.in: Remove all references to gcj.o/gcj.c. - Link gcj from gcc.o. - -1999-03-23 Alexandre Petit-Bianco - - * parse.y (find_applicable_accessible_methods_list): When dealing - with interface: ensure that a given interface or java.lang.Object - are searched only once. - -1999-03-23 Kaveh R. Ghazi - - * gjavah.c (print_c_decl): Remove unused argument `flags'. - - * jcf-dump.c (print_access_flags): Add braces around if-else. - - * jvspec.c (lang_specific_driver): Wrap variable `len' in macro - COMBINE_INPUTS. - - * lex.c (build_wfl_node): Add static prototype. - - * lex.h (build_wfl_node): Remove static prototype. - - * parse.y: Include lex.c early enough to declare everything needed. - Ensure calls to `build_wfl_node' pass the proper arguments. - (create_class): Remove unused variable `super_decl'. - (get_printable_method_name): Initialize variable `name'. - -1999-03-22 Alexandre Petit-Bianco - - * Changelog: Fixed 1999-03-22 typos. - * lang.c (lang_decode_option): Fixed typo in error string in the - XARG section. - -1999-03-22 Alexandre Petit-Bianco - - * Makefile.in (JAVA_OBJS): Added entry xref.o. - (xref.o): New rule. - * java-tree.h (flag_emit_xref): Declared extern. - * lang.c (xref.h): Included. - (flag_emit_xref): New global variable. - (lang_decode_option): Added support for -fxref. - * xref.c: Created. - * xref.h: Likewise. - -1999-03-21 Manfred Hollstein - - * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be - linked with. - -1999-03-21 Kaveh R. Ghazi - - * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H) - $(srcdir)/../system.h and $(JAVA_TREE_H). - (jcf-io.o): Depend on $(JAVA_TREE_H). - (mangle.o): Likewise. - - * check-init.c (check_cond_init): Add static prototype. - - * class.c (build_java_method_type, hashUtf8String, - make_field_value, get_dispatch_vector, get_dispatch_table, - append_gpp_mangled_type, mangle_static_field): Likewise. - (strLengthUtf8): Hide unused definition. - (hashUtf8String): Const-ify. - (make_field_value): Un-ANSI-fy. - - * constants.c: Move inclusion of jcf.h above java-tree.h. - (set_constant_entry, find_class_or_string_constant, - find_name_and_type_constant, get_tag_node, - build_constant_data_ref): Add static prototype. - - * decl.c (push_jvm_slot, builtin_function, - lookup_name_current_level): Likewise. - (builtin_function): Const-ify. - - * except.c (expand_start_java_handler, expand_end_java_handler): - Add static prototype. - - * expr.c (flush_quick_stack, push_value, pop_value, - java_stack_swap, java_stack_dup, build_java_athrow, - build_java_jsr, build_java_ret, expand_java_multianewarray, - expand_java_arraystore, expand_java_arrayload, - expand_java_array_length, build_java_monitor, expand_java_pushc, - expand_java_return, expand_java_NEW, expand_java_INSTANCEOF, - expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label, - expand_compare, expand_test, expand_cond, expand_java_goto, - expand_java_call, expand_java_ret, pop_arguments, expand_invoke, - expand_java_field_op, java_push_constant_from_pool): Likewise. - - (decode_newarray_type, expand_iinc): Un-ANSI-fy. - (build_java_arraynull_check): Mark parameters `node' and `type' - with ATTRIBUTE_UNUSED. - (note_label): Likewise for parameter `current_pc'. - (expand_java_call, expand_java_ret): Hide unused definition. - - * java-tree.h (make_class, build_constants_constructor, - java_set_exception_lang_code, pop_labeled_block, emit_handlers, - init_outgoing_cpool, register_class, emit_register_classes, - java_layout_seen_class_methods): Prototype. - (unicode_mangling_length): Const-ify. - (append_gpp_mangled_name, append_gpp_mangled_classtype, - emit_unicode_mangled_name, format_int, format_uint, - jcf_trim_old_input, jcf_print_utf8, jcf_print_char, - jcf_print_utf8_replace, open_class): Prototype. - - * jcf-dump.c: Include "config.h", not . Don't include - . Include tree.h/java-tree.h. - (utf8_equal_string usage, process_class): Add static prototype. - (open_class): Don't prototype this here. - (utf8_equal_string): Match arguments to format specifiers. - (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH, - TABLE_SWITCH, disassemble_method): Likewise. - - * jcf-io.c: Include tree.h/java-tree.h. - (open_class, find_classfile, jcf_print_utf8, - jcf_print_utf8_replace): Const-ify. - - * jcf-parse.c (parse_zip_file_entries, process_zip_dir, - parse_class_file): Add static prototype. - (find_in_current_zip): Match definition to existing static - prototype. - - * jcf-write.c: Include jcf.h before tree.h/java-tree.h. - (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label, - finish_jcf_block, define_jcf_label, get_jcf_label_here, - put_linenumber, localvar_alloc, localvar_free, get_access_flags, - write_chunks, adjust_typed_op, generate_bytecode_conditional, - generate_bytecode_return, perform_relocations, init_jcf_state, - init_jcf_method, release_jcf_state, generate_classfile): - Add static prototype. - (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED. - (make_class_file_name): Const-ify. - - * jcf.h (find_classfile): Const-ify. - - * jv-scan.c (reset_report): Remove prototype. - - * jvgenmain.c: Include jcf.h/tree.h/java-tree.h. - (error): Rewrite to allow varargs. - - * lang.c (lang_f_options): Const-ify. - - * lex.c (java_parse_escape_sequence): Add static prototype. - (java_allocate_new_line): Match definition to existing static - prototype. - - * mangle.c Include tree.h/java-tree.h. - (unicode_mangling_length, emit_unicode_mangled_name, - append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify. - - * parse.h (jdep_code): Remove trailing comma in enumeration. - (java_get_line_col): Move prototype outside of !JC1_LITE test. - (reset_report): Add prototype. - - * verify.c (push_pending_label, merge_types): Add static - prototypes. - - * zipfile.h (opendir_in_zip, open_in_zip): Prototype. - -1999-03-19 Alexandre Petit-Bianco - - * parse.y (find_applicable_accessible_methods_list): Extend the - search to superinterfaces when relevant. - (search_applicable_methods_list): New function. - -1999-03-18 Alexandre Petit-Bianco - - * class.c (unmangle_classname): Implemented stricter testing - before setting the QUALIFIED_P flag on an identifier. - -1999-03-16 Per Bothner - - * parse.y (java_complete_lhs): Call force_evaluation_order - after patch_newarray. - (patch_binop): Don't call fold if there are side effects. - -1999-03-16 Alexandre Petit-Bianco - - * parse.y (java_stabilize_reference): Use save_expr instead of - building a SAVE_EXPR node. - (java_complete_lhs): Patch the resulting string of the `+=' - operator (if necessary) and complete the RHS after having built - the cast. - -1999-03-15 Per Bothner - - * class.c (make_class): Don't set CLASS_P here (because - this function is also called by build_java_array_type). - (push_class): Set CLASS_P here instead. - * parse.h (TYPE_CLASS_P): Check for TYPE_ARRAY_P is redundant. - - * jcf-dump.c (print_access_flags): Take extra parameter to indicate - context. If the context is class, perfer "super" over "synchronized". - * jcf-write.c (generate_classfile): Don't add ACC_SUPER if interface. - - * parse.y (create_class): Don't call parser_check_super here; - it is not robust. Always wait until later. - - * parse.y (method_header): For interfaces, set ACC_ABSTRACT (to - match what JDK 1.2 does), but don't set ACC_PUBLIC. - -1999-03-13 Per Bothner - - * lex.c (java_read_char): UNGET invalid non-initial utf8 character. - * lex.h (UNGETC): Change misleading macro. - -1999-03-12 Alexandre Petit-Bianco - - * parse.y (java_stabilize_reference): Return NODE when patching a - COMPOUND_EXPR. - (java_complete_lhs): Put parenthesis around truth values. - -1999-03-12 Alexandre Petit-Bianco - - * class.c (layout_class_method): Don't make rtl for interface - methods. - * parse.h (GET_TYPE_NAME): New macro. - * parse.y (if_then_statement:): Fixed indentation. - (if_then_else_statement:): Likewise. - (for_statement:): Fixed spacing. - (try_statement:): Fixed indentation. - (create_interface): Don't force interfaces to be abstract. - (method_header): Abstract methods are OK in interfaces. - (declare_local_variables): Fixed typo in comment. - (java_complete_expand_method): Fixed indentation. - (resolve_qualified_expression_name): Use GET_TYPE_NAME to report - non accessible fields. - (java_stabilize_reference): New function. - (java_complete_lhs): Fixed indentation. Use - java_stabilize_reference in compound assignment. Insert the - cast. If not processing `+' fix string constants before processing - binop. - -1999-03-12 Kaveh R. Ghazi - - * constants.c (find_class_or_string_constant): Cast variable `j' - to a `jword' when comparing against one. - - * expr.c (java_lang_expand_expr): Remove unused variables - `has_finally_p' and `op0'. - - * gjavah.c (print_field_info): Cast a value to jint when comparing - against one. Likewise for a jlong. - (add_namelet): Likewise cast a `sizeof' to an int when comparing - against a signed quantity. - - * jcf-dump.c (print_signature_type): Remove unused variable `digit'. - (print_signature): Don't needlessly dereference variable `str' - - * jcf-reader.c (get_attribute): Mark variables `max_stack' and - `max_locals' with ATTRIBUTE_UNUSED. - (jcf_parse_class): Likewise for variable `index'. - - * parse.h (reverse_jdep_list): Remove static prototype. - - * parse.y (build_jump_to_finally): Remove prototype and definition. - (reverse_jdep_list): Add static prototype. - - * typeck.c (convert_ieee_real_to_integer): Remove unused variables - `assignment' and `expr_decl'. - - * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'. - -1999-03-12 Andrew Haley - - * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes; - we'll need a directory separator and a null character. - -1999-03-10 Per Bothner - - * jcf-write.c (generate_bytecode_insns): Handle __builtin_fmod, for %. - -Tue Mar 9 11:52:08 1999 Alexandre Petit-Bianco - - * parse.y (method_header): Don't set ACC_ABSTRACT flags on - interfaces. - -1999-03-05 Per Bothner - - * lex.c (java_parse_end_comment): Take extra parameter (next char). - - * class.c (build_utf8_ref): Fix possible name class/ambiguity. - - * class.c (layout_class_method): A static method in a base class - is never overridden, so treat it like it doesn't exist. - However, do complain about private non-static method overriding - public static method. - - * parse.y: Don't set unused INITIALIZED_P flag. - * java-tree.h (INITIALIZED_P): Removed no-longer needed flag. - - * parse.y (find_expr_with_wfl): Optimize tail-calls. - (build_array_from_name): Re-order &index[string] to &string[index]. - - * parse.y (java_complete_lhs): Don't call patch_assignment if rhs is - error_mark (it might catch more errors, but it is more likely to lose). - -1999-03-06 Kaveh R. Ghazi - - * Makefile.in (jcf-parse.o): Depend on $(PARSE_H). - (parse-scan.o): Depend on toplev.h. - - * class.c (make_method_value): Add prototype. Make it static. - Remove unused second argument, caller changed. - - * expr.c (java_lang_expand_expr): Remove unused variable - `return_label'. - - * java-tree.h: Don't prototype find_in_current_zip. - Add prototypes for verify_constant_pool, start_java_method, - end_java_method, give_name_to_locals, expand_byte_code, - open_in_zip, set_constant_value, find_constant1, find_constant2, - find_utf8_constant, find_string_constant, find_class_constant, - find_fieldref_index, find_methodref_index, write_constant_pool, - count_constant_pool_bytes and encode_newarray_type. - - * jcf-dump.c: Remove unused variable `LONG_temp'. - - * jcf-parse.c: Include parse.h. - (jcf_parse_source): Remove unused parameter, all callers changed. - (jcf_figure_file_type): Add static prototype. - (find_in_current_zip): Likewise. Also remove unused parameter, - all callers changed. - (read_class): Initialize variable `saved_pos'. - - * jcf-reader.c (jcf_parse_preamble): Mark variables - `minor_version' and `major_version' with ATTRIBUTE_UNUSED. - - * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE. - (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE. - (java_parse_doc_section): Initialize variable `seen_star'. - (java_lex): Wrap variable `number_beginning' in !JC1_LITE. - (java_lex_error): Mark parameters `msg' and `forward' with - ATTRIBUTE_UNUSED. - (java_get_line_col): Mark parameters `filename' and `line' with - ATTRIBUTE_UNUSED. - - * parse-scan.y: Include toplev.h. - (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED. - - * parse.h: use `struct JCF', not plain `JCF'. - (java_parser_context_save_global, java_expand_classes - java_parser_context_restore_global, java_parse): Add prototypes. - - * typeck.c (convert_ieee_real_to_integer): Remove unused variable - `node'. - -1999-02-24 Per Bothner - - * check-init.c (check_init): COPYN takes word count, not bit count. - -1999-02-26 Per Bothner - - * typeck.c (convert_ieee_real_to_integer): Use save_expr instead of - explicit build_decl. (Avoids crash in reload when optimizing.) - -1999-02-25 Per Bothner - - * decl.c (complete_start_java_method): Handle synchronized method - even when compiling from bytecode. - -1999-02-26 Tom Tromey - - * gjavah.c (add_class_decl): Only generate `#include' if outer - class is not the name of the class we are processing. Correctly - append `.h' in #include. - (process_file): Clean up newlines around generated `#include's. - (decode_signature_piece): Correctly handle inner classes. - (struct include): New structure. - (all_includes): New global. - (print_include): New function. - (add_class_decl): Use it. - (process_file): Likewise. - (add_class_decl): Generate include for java-array.h if array - seen. - (process_file): Don't generate java-array.h include. - - * gjavah.c (add_namelet): Check for standard package names here. - (add_class_decl): Don't check for standard package names here. - -1999-02-25 Tom Tromey - - * parse.y (read_import_dir): Use `|=', not `+=', to set `found'. - When reading a zip file, only use strncmp if both strings are - bigger than the buffer length. Initialize `k' when looping - through zip file. - -1999-02-24 Tom Tromey - - * gjavah.c (struct namelet): New structure. - (add_namelet): New function. - (print_namelet): New function. - (print_class_decls): Use add_namelet and print_namelet to generate - namespaces and not classes. - (method_printed): New global. - (HANDLE_END_METHOD): Examine method_printed. - (print_method_info): Set method_printed when required. Print - error if function to be ignored is marked virtual. Handle $finit$ - method. - (METHOD_IS_FINAL): New macro. - (print_field_info): Use it. - (HANDLE_METHOD): Clear method_printed. - (method_pass): New global. - (HANDLE_END_FIELD): Call add_class_decl on the first pass. - (process_file): Do two passes over both fields and methods. - (HANDLE_METHOD): Examine method_pass. - (root): New global. - (add_class_decl): New function. - (print_class_decls): Don't scan over entire constant pool. - -1999-02-23 Tom Tromey - - * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and - disable linking in that case. - -1999-02-20 Tom Tromey - - * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f, - not 0x1f. - -1999-02-21 Per Bothner - - * decl.c (build_result_decl), java-tree.h: New method. - (complete_start_java_method): Handle synchronized methods. - Don't build DECL_RESULT here. (Ordering dependency problem.) - (start_java_method): Call build_result_decl here instead ... - * parse.y (java_complete_expand_method): ... and here. - (expand_start_java_method): Don't call complete_start_java_method here. - (java_complete_expand_method): Call it here instead. - * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Moved to .. - * java-tree.h: ... here. - - * expr.c (force_evaluation_order): Fix typo, don't handle ARRAY_REF. - * parse.y (java_complete_lhs): Don't call force_evaluation_order - for ARRAY_REF - it doesn't work when array bounds are checked. - (patch_array_ref): Handle it here instead. - - * jcf-write.c (generate_classfile): Emit "Exceptions" attribute. - -1999-02-19 Per Bothner - - Force left-to-right evaluation of binary operations etc. - * expr.c (force_evaluation_order), java-tree.h: New function. - * parse.y (java_complete_lhs): Pass binary operations, procedure - calls, and ARRAY_REFs to force_evaluation_order. - (various): Set TREE_SIDE_EFFECTS more carefully. - - Tolerate random (non-UTF8) encoding in comments without complaining. - * lex.c (java_read_char): Return 0xFFFE if bad UTF8 encoding. - (java_is_eol): Handle '\r' followed by '\n' instead of vice versa. - - * parse.y (resolve_qualified_expression_name): Handle error_mark. - (java_complete_node case EXPR_WITH_FILE_LOCATION): Likewise. - - * parse.y (java_complete_lhs): Ignore an empty statement in a - COMPOUND_EXPR. Don't complain about empty statement after return. - -1999-02-19 Per Bothner - - * parse.y (obtain_incomplete_type): Don't wrap unknown types - in TREE_LIST - just chain the POINTER_TYPEs together. - (resolve_class): If type already resolved, return decl. - After resolving, update TREE_TYPE(class_type), and name (if array). - * parse.h (do_resolve_class), parse.y: Make non-static. - * class.c (maybe_layout_super_class): Take this_class argument. - Do do_resolve_class if necessary. - (layout_class, layout_class_methods): Adjust calls appropriately. - * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED, - JDEP_RESOLVED_P): Redefined for new TREE_LIST-less convention. - * typeck.c (build_java_array_type): Don't call layout_class. - -1999-02-17 Alexandre Petit-Bianco - - * parse.y (check_pkg_class_access): Allow private class access - within the same package. - (strip_out_static_field_access_decl): New function. - (patch_unaryop): Call strip_out_static_field_access_decl on ++/-- - operator argument before testing its nature. - -1999-02-03 Per Bothner - - * java-tree.def (FINALLY_EXPR): Removed. (Now uses TRY_FINALLY_EXPR.) - (TRY_EXPR): Simplify - it no longer has a finally clause. - * check-init.c (check_init): Handle TRY_FINALLY_EXPR. - Simpler handling of TRY_EXPR, which no longer has a finally clause. - * expr.c (java_lang_expand_expr): Likewise. - * java-tree.h (CATCH_EXPR_GET_EXPR): Removed - no longer needed. - * parse.h (java_get_catch_block), parse.y: Removed - no longer needed. - * parse.y (java_complete_lhs): Add support for TRY_FIANLLY_EXPR. - (build_try_statement): Remove finally parameter and handling. - (build_try_finally_statement): New function. - (patch_try_statement): No longer need to support finally clause. - (try_statement): Update grammar action rules. - * jcf-write.c (generate_bytecode_insns): Handle TRY_FINALLY_EXPR. - Simpler handling of TRY_EXPR, which no longer has a finally clause. - -1998-11-26 Andrew Haley - - * jcf-parse.c (get_constant): Add braces around computation of 'd' - when REAL_ARITHMETIC is not defined. [Oct 26 fix got overwritten -PB] - -1999-02-17 Andrew Haley - - * class.c (build_utf8_ref): Back out broken patch which was - intended to to output signatures using '.' as a separator. - - * class.c (make_class_data): Output signatures using '.' as a - separator, rather than '/'. - (mangled_classname): Likewise. - (make_field_value): Likewise. - (make_method_value): Likewise. - * constants.c (alloc_class_constant): Likewise. - * expr.c (build_invokeinterface): Likewise. - -1999-02-11 Alexandre Petit-Bianco - - * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid - of an ancient workaround. - -1999-02-10 Jeffrey A Law (law@cygnus.com) - - * jvspec.c (xmalloc): Kill the prototype. It does not belong - here anymore. - -1999-02-10 Alexandre Petit-Bianco - - * lex.c (yylex): Encode \0 as UTF8. - -1999-02-10 Tom Tromey - - * jvspec.c (lang_specific_driver): Use libgcj, not libjava. - * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE. - (libgcj_zip): Renamed. - * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not - LIBJAVA_ZIP_FILE. - (jcf_path_init): Use LIBGCJ_ZIP_FILE. - - * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop. - (GC_NAME): Renamed -lgc to -lgcjgc. - -1999-02-09 Alexandre Petit-Bianco - - * lex.c (java_lang_cloneable): Initialize. - * parse.y (java_lang_cloneable): New static variable. - (qualify_ambiguous_name): Take CONVERT_EXPR into account when - doing one more qualification round. - (valid_ref_assignconv_cast_p): Reject null source or - destination. Allow an array to be cast into java.lang.Cloneable. - (patch_cast): Swapped two first arguments to first call to - valid_ref_assignconv_cast_p. - -1999-02-08 Alexandre Petit-Bianco - - * parse.h: DECL_P renamed JDECL_P. - * parse.y: DECL_P replaced by JDECL_P. - (build_array_from_name): Always use pointer's type. - (patch_bc_statement): Extra code to search continue target in a - for loop. Fixed comments. Continue target is current loop when - unlabeled. - -1999-02-05 Andrew Haley - - * class.c (make_class_data): The superclass of an interface should - be null, not class Object. - - * lex.c (java_lex): Sign extend hex literals. - -1999-02-04 Andrew Haley - - * class.c (build_utf8_ref): Output signatures using '.' as a - separator, rather than '/'. - (make_class_data): Likewise. - -1999-02-03 Marc Espie - - * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and - mkstemp.o. Get them from libiberty now. - -1999-02-02 Jeffrey A Law (law@cygnus.com) - - * jcf-io.c: Do not include sys/stat.h or sys/wait.h - -1999-02-02 Kaveh R. Ghazi - - * jvspec.c (xmalloc): Fix the prototype to match the one obtained - from libiberty.h - -1999-02-02 Per Bothner - - Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'. - * jcf-write.c (generate_bytecode_return): New function. - (generate_bytecode_insns): Use it, for RETURN_EXPR. - - * jcf-write.c (generate_bytecode_insns): For REAL_CST that is 0 or 1, - generate special [fd]const_[01] instructions. - - * jcf-parse.c (yyparse): Don't emit_register_classes if -fsyntax-only. - - * verify.c (verify_jvm_instructions): Do INVALIDATE_PC after - handling OPCODE_lookupswitch or OPCODE_tableswitch. - -1999-02-01 Per Bothner - - * parse.y (patch_method_invocation): Handle calling static methods, - even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS). - - * parse.y (java_complete_lhs): Don't complain about unreachable - exit condition in a do-while statement. - -1999-01-29 Alexandre Petit-Bianco - - * lex.c (java_read_char): Fixed utf8 decoding. - (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff - range. - * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed - comments. Local variable `all_primitive' is gone. Broadened - acceptance of `0' to floating point targets. `long' can now be - widened to `double' or `float'. - (valid_method_invocation_conversion_p): Added leading - comment. Fixed tabulation. - (build_string_concatenation): Optimize out left or right empty - string constants. - -1999-01-28 Per Bothner - - * jcf-write.c (localvar_alloc): Only emit entry for - LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE. - (generate_bytecode_insns): Only call put_linenumber if - debug_info_level > DINFO_LEVEL_NONE. - * jvspec.c (lang_specific_driver): If no -O* or -g* option - is specified, add -g1 (for compatibility wih javac). - -1999-01-28 Hans-Peter Nilsson - - * java/Makefile.in: Add missing dependencies for jcf-dump.o, - gjavah.o, check-init.o, jv-scan.o - -1999-02-01 Kaveh R. Ghazi - - * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h. - - * gjavah.c: Include config.h and system.h. - - * javaop.h (inline): Don't define, its handled by system.h. - (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these - from `inline' to `static inline'. - - * jcf.h (inline): Don't define, its handled by system.h. - - * lex.c (inline): Likewise. - -1999-01-31 Zack Weinberg - - * lang-specs.h: Map -Qn to -fno-ident. - -1999-01-29 Richard Henderson - - * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo. - -1999-01-29 Tom Tromey - - * parse.h (BUILD_APPEND): If ARG is a non-String object reference, - then cast it to Object before calling `append' method. - -1999-01-28 Per Bothner - - * check-init.c (check_bool2_init, check_bool_init, check_init): - Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR. - * jcf-write.c (generate_bytecode_insns): Likewise. - -1999-01-28 Alexandre Petit-Bianco - - * jcf-parse.c (jcf_parse): Don't parse the same class file twice. - * parse.y (patch_cast): Allow a boolean to be cast into a - boolean. - -1999-01-27 Alexandre Petit-Bianco - - * parse.y: (class_declaration:): Fixed indentation. - (class_member_declaration:): Extra `;' after field declaration now - accepted. - (interface_declaration:): Removed debug messages in error reports. - (patch_binop): Nodes created and returned inherit the orignal - node's COMPOUND_ASSIGN_P flag value. - (patch_cast): Fix cast from char to floating point. - -1999-01-25 Andrew Haley - - * except.c, java-except.h (expand_resume_after_catch): new - function. - * expr.c (java_lang_expand_expr): call expand_resume_after_catch - to branch back to main flow of control after a catch block. - -1999-01-23 Kaveh R. Ghazi - - * Makefile.in (parse.o): Depend on $(CONFIG_H) and - $(srcdir)/../system.h. - (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h. - (jcf-parse.o): Depend on $(srcdir)/../toplev.h. - (jcf-write.o): Likewise. - (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. - (mangle.o): Depend on $(srcdir)/../toplev.h. - (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. - (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h. - - * class.c: Include output.h and parse.h. - (mangled_classname): Add the `const' keyword to a char*. - (find_named_method): Hide unused function definition. - (build_utf8_ref): Change type of variable `c' to unsigned char. - Use ISALPHA/ISDIGIT instead of isalpha/isdigit. - (build_class_ref): Add the `const' keyword to a char*. - (layout_class_method): Remove unused variable `buf'. - - * decl.c (find_local_variable): Remove unused variable `rtl'. - (pushdecl): Likewise for variables `different_binding_level' and - `oldglobal'. - (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED. - (maybe_build_cleanup): Likewise for parameter `decl'. - - * except.c (expand_start_java_handler): Mark parameter `range' - with ATTRIBUTE_UNUSED. - - * expr.c: Include except.h. - (pop_type): Remove unused variable `i'. - (pop_value): Likewise for variables `n_words' and `i'. - (expand_java_arrayload): Likewise for variable `convert'. - (java_lang_expand_expr): Likewise for variables `op0', `type', - `mode', `unsignedp', `node' and `elements'. - (expand_byte_code): Likewise for variables `prev_eh_ranges' and - `eh_ranges'. - (process_jvm_instruction): Add a `const' qualifier to a char*. - - * gjavah.c (output_directory): Add the `const' keyword to a char*. - (temp_directory): Likewise. - (print_c_decl): Likewise. - (print_method_info): Likewise. - (decode_signature_piece): Likewise. - (print_mangled_classname): Likewise. - - * java-except.h: Provide prototypes for maybe_start_try, - maybe_end_try and add_handler. - - * java-tree.h (mangled_classname): Add the `const' keyword to a char*. - (parse_error_context): Likewise. Also add ATTRIBUTE_PRINTF_2. - (pushdecl_top_level, alloc_class_constant, unicode_mangling_length, - init_expr_processing, push_super_field, init_class_processing, - can_widen_reference_to, class_depth, verify_jvm_instructions, - maybe_pushlevels, maybe_poplevels, process_jvm_instruction, - set_local_type, merge_type_state, push_type, load_type_state, - add_interface, find_in_current_zip, append_gpp_mangled_classtype, - emit_unicode_mangled_name): Add prototypes. - - * jcf-dump.c (print_constant): Add the `const' keyword to a char*. - (print_signature_type): Use ISDIGIT, not isdigit. - (print_signature): Remove unused variable `j'. - - * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to - int when comparing against one. - - * jcf-parse.c: Include toplev.h. - - * jcf-write.c: Likewise. Don't include or . - (localvar_free): Remove unused variable `i'. - (generate_bytecode_conditional): Likewise for variable `kind'. - - * jv-scan.c: Include config.h and system.h. Remove redundant - OS header and gansidecl.h includes. - (warning): Add the `const' keyword to a char*. Also add - ATTRIBUTE_PRINTF_1 to the prototype. Check ANSI_PROTOTYPES, not - __STDC__, when determining whether to use ANSI-isms. - (fatal): Likewise. Also add ATTRIBUTE_UNUSED. - (xmalloc): Don't redundantly prototype here. - (main): Remove unused parameter `envp'. Also fix the arguments - passed to function `fatal' to match the format specifier. - - * lang.c (java_tree_code_name): Add the `const' keyword to a char*. - - * mangle.c: Include toplev.h. - (emit_unicode_mangled_name): Declare parameter `len'. - - * parse.y (parse_warning_context): Add the `const' keyword to a - char*. Also add ATTRIBUTE_PRINTF_2 to the prototype. Check - `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms. - (issue_warning_error_from_context): Add the `const' keyword to - a char*. - (parse_error_context): Likewise. Also check `ANSI_PROTOTYPES' - not `__STDC__' for whether to use ANSI-isms. - - * typeck.c (incomplete_type_error): Mark parameters `value' and - `type' with ATTRIBUTE_UNUSED. - (parse_signature_type): Use ISDIGIT, not isdigit. - - * verify.c (check_pending_block): Add the `const' keyword to a char*. - (verify_jvm_instructions): Likewise. Remove unused variables - `field_name' and `default_val'. - - * zextract.c: Include config.h and system.h. Remove redundant - OS header includes. - - * zipfile.h: Prototype `read_zip_archive'. - -1999-01-21 Andrew Haley - - * typeck.c (convert): Allow conversions to void type: some - optimizations in gcc do this. - -1999-01-21 Andrew Haley - - * typeck.c (convert_ieee_real_to_integer): New function. - (convert): When not using fast-math and using hardware fp, convert - an IEEE NaN to zero. - -1999-01-18 Andrew Haley - - * parse.y (patch_binop): Do a type conversion from signed to - unsigned and then back to signed when a ">>>" is found. - -1999-01-17 Alexandre Petit-Bianco - - * java-tree.h: (check_for_initialization): Added prototype. - * lex.c (java_parse_doc_section): `\n' breaks the `*/' string. - * parse.y (do_resolve_class): Removed unused locals. - (read_import_dir): Likewise. - (resolve_qualified_expression_name): Array creation - expressions are valid primary expressions. - (qualify_ambiguous_name): Likewise. - (patch_synchronized_statement): Removed unused local. - -1999-01-17 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (zextract.o): Add dependencies. - - * Makefile.in: Do not put ^Ls at the start of a line. - -1999-01-15 Per Bothner - - * expr.c (process_jvm_instruction): Coerce to correct Throwable - sub-type the result of the call that gets the exception value. - - * parse.y (java_complete_expand_methods): If flags_syntax_only, - don't call finish_class. - - * parse.y (java_check_regular_methods): If METHOD_PRIVATE, - clear found before continuing. - - * verify.c (verify_jvm_instructions): On an array load, allow - and handle top of stack to be TYPE_NULL. - - * gjavah.c (generate_access): Translate Java package private or - protected access to C++ public, but with a comment. - -1999-01-13 Andrew Haley - - * expr.c (generate_name): Name prefix changed to avoid clashes - with assembler temp labels. - - * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on - MODIFY_EXPR. Without this, code for the assignment may not be - generated at all and the synchronized statement will read an - uninitialized variable. - -1999-01-13 Alexandre Petit-Bianco - - * class.c (maybe_layout_super_class): Fixed returned value. - * lex.c: Added 1999 to the copyright. - (java_init_lex): Initialize java_lang_imported. - * lex.h: Added 1999 to the copyright. - * parse.h: Added 1999 to the copyright. - (REGISTER_IMPORT): Fixed typo in trailing macro. - (CURRENT_OSB): New macro. - (struct parser_ctxt): New fields osb_depth, osb_limit. - * parse.y (java_lang_id): New global variable. - (type_import_on_demand_declaration): Don't import java.lang.* twice. - (array_creation_expression:): Use CURRENT_OSB. - (dims:): Uses a stack to keep track of array dimensions. - (cast_expression:): Use CURRENT_OSB. - (find_expr_with_wfl): Return NULL if node found doesn't meet the - conditions. - (register_fields): Fixed typos in comment. - (check_method_redefinition): Fixed comment indentation. - (java_check_regular_methods): Set saved found wfl to NULL after - having reinstalled it in the previously found DECL_NAME. - -1999-01-10 Richard Henderson - - * gjavah.c (java_float_finite): Use a union to do type punning. - (java_double_finite): Likewise. - -1999-01-09 Per Bothner - - * parse.y (build_new_array_init): Don't set EXPR_WFL_LINECOL - on CONSTRUCTOR (since that trashes TREE_CST_RTL). - (patch_new_array_init): Clear TREE_CONSTANT also if INDIRECT_REF. - (register_fields): Set TREE_STATIC on NEW_ARRAY_INIT, not on - CONSTRUCTOR (which causes expand_expr to call output_constant_def). - * expr.c (java_lang_expand_expr): Check TREE_STATIC of NEW_ARRAY_INIT. - -1999-01-08 Per Bothner - - * check-init.c (check_init): If compiling to native, we don't - see THROW_EXPR. Instead, look for a call to throw_node (_Jv_Throw). - -1999-01-08 Tom Tromey - - * parse-scan.y (variable_declarator_id): Set or increment - bracket_count. - (bracket_count): New global. - (formal_parameter): Handle case where bracket pairs trail variable - declarator id. - -1999-01-07 Andrew Haley - - * jcf-parse.c (yyparse): variable len changed from a char to an - int to prevent overflow. - -1999-01-06 Per Bothner - - * java-tree.h: Declare read_class. - * jcf-parse.c (read_class): New function. - (load_class): Now just call read_class. - - * java-tree.h (java_parse_abort_on_error): Only return if new errors. - * jcf-parse.c (parse_source_file): Declare save_error_count, - which is needed by java_parse_abort_on_error macro, - * parse.y (java_layout_classes, java_expand_classes): Likewise. - - * parse.y (register_fields): Set TREE_STATIC flag of NEW_ARRAY_INIT - constructor, if initializing a static field. - (patch_new_array_init): Set TREE_CONSTANT if it is. - * expr.c (java_lang_expand_expr): For a static array constructor - of primitive elements, allocate the array itself statically. - Disabled until we can set the vtable field statically. - - * check-init.c: New file. Checks for definite assignment. - * Makefile.in (JAVA_OBJS): Add check-init.o. - * parse.y (java_complete_expand_method): Call check_for_initialization. - * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY): Moved to java-tree.h. - -1999-01-06 Graham - - * parse.y : include system.h instead of including - standard headers directly with the exception of . - -1999-01-06 Per Bothner - - * lex.h: Moved static function declarations to lex.c, - to shut up some -Wall warnings. - * lex.c: Static function declarations moved here. - * jcf-dump.c: Small fixes to shut up -Wall warnings. - -1999-01-05 Kaveh R. Ghazi - - * Make-lang.in ($(GCJ).o): Depend on prefix.h. - -1998-12-22 Per Bothner - - * expr.c (process_jvm_instruction): Do load_type_state after JSR. - * verify.c (verify_jvm_instructions): Fix off-by-one error. - - * jcf-write.c (CHECK_PUT): Add (void) cast to avoid -Wall warnings. - (localvar_alloc): Change return type to void, - (emit_unop): Remove unused variable size. - - * jcf-write.c (struct jcf_block): Add new union. - (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC): New macros. - (call_cleanups): New functions. - (struct jcf_partial): New fields num_finalizers and return_value_decl. - (generate_bytecode_insns): Support CLEANUP_POINT_EXPR and - WITH_CLEANUP_EXPR. Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR. - * lang.c (lang_init): Call using_eh_for_cleanups. - * parse.y (java_complete_lhs): For SYNCHRONIZED_EXPR, defer - completing operands to patch_synchronized_statement. - Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR. - (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and - WITH_CLEANUP_EXPR instead of TRY_EXPR. - -1998-12-20 John F. Carr - - * Make-lang.in: Comment out control-Ls; they upset some makes. - -1998-12-18 Tom Tromey - - * parse.y (check_class_interface_creation): Use DIR_SEPARATOR - consistently. - -1998-12-17 Tom Tromey - - * parse.y (DIR_SEPARATOR): New define. - (check_class_interface_creation): Use it. - - * parse-scan.y (report_main_declaration): Recognize - `java.lang.String' in argument to main. - -1998-12-16 Per Bothner - - * parse.y (create_interface): Remove bogus test. - -1998-12-16 Per Bothner - - * jcf-parse.c (get_constant): Set TREE_TYPE for string constants. - (HANDLE_CONSTANTVALUE): If flag_emit_class_files, call get_constant. - -1998-12-16 Tom Tromey - - * parse-scan.y (qualified_name): Use correct sprintf format. - -1998-12-15 Tom Tromey - - * gjavah.c (print_field_info): Changed how most negative number is - printed. - -1998-12-14 Per Bothner - - * parse.y (fold_constant_for_init): New function. - (resolve_expression_name): Don't replace static final - constant-initialized fields by its value. - (java_complete_lhs): New. Same as java_complete_tree, except does - not replace static final constant-initialized fields by their values. - (register_fields): If there is an initializer, set DECL_INITIAL and - MODIFY_EXPR_FROM_INITIALIZATION_P. - (java_complete_tree): For MODIFY_EXPR, use java_complete_lhs for lhs. - Only call patch_initialized_static_field if - MODIFY_EXPR_FROM_INITIALIZATION_P. - (patch_initialized_static_field): If not valid constant, clear - DECL_INITIAL. - - * parse.y (lookup_field_wrapper): Fix thinko. - - * parse.y (java_complete_tree): In EXPR_WITH_FILE_LOCATION, - set and restore global lineno. - -1998-12-14 Tom Tromey - - * gjavah.c (print_field_info): If value to print is the smallest - value of its size, then print as hex to avoid later warnings from - C++ compiler. - -1998-12-14 Tom Tromey - - * gjavah.c (decompile_method): Decompile `return null'. - (process_file): Generate `#pragma interface'. - (method_declared): New global. - (print_method_info): Set it. - (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set. - (print_method_info): Handle abstract methods. - -1998-12-13 Per Bothner - - * parse.y (patch_method_invocation): If class_decl is null - (e.g. an array type), use original type. - - * parse.y (check_thrown_exceptions): Temporary hack to suppress - errors about uncaught exception from clone (of array, specifically). - -1998-12-13 Tom Tromey - - * gjavah.c (decompile_method): Handle all types of `return' - opcode. Decompile `return this' and `return'. - (method_access): New global. - (print_method_info): Set it. - (decompile_method): Don't decompile a synchronized method. - -1998-12-13 Tom Tromey - - * jcf-reader.c (jcf_parse_one_method): Recognize - HANDLE_END_METHOD. - * gjavah.c (HANDLE_END_METHOD): New macro. - (HANDLE_CODE_ATTRIBUTE): New macro. - (decompile_method): New function. - (print_method_info): Don't print `;\n' at end of function decl. - Include java-opcodes.h. - (decompiled): New global. - -1998-12-12 Per Bothner - - * class.c (build_class_ref): Handle PRIMTYPE.class if - flag_emit_class_files. - * expr.c (expand_java_field_op): Don't optimize java.lang.XXX.TYPE - if flag_emit_class_files. - * parse.y (java_complete_tree): Pre-liminary support for - COMPONENT_REF - only to handle PRIMCLASS.TYPE. - - * parse.y (patch_synchronized_statement): Don't call monitorexit - unless block CAN_COMPLETE_NORMALLY. Propagate that flag properly. - - * java-tree.h (DECL_LOCAL_STATIC_VALUE): Removed - no longer used. - - * zipfile.h (opendir_in_zip): New declaration. - * jcf-io.c (saw_java_source): Moved to jcf-parse.c. - (opendir_in_zip): New function, using code from open_in_zip. - (open_in_zip): Call opendir_in_zip. - (find_class): Remove no-longer-used do_class_file parameter, - but add source_ok parameter. Change logic so if we find a .java file, - we don't look for .class in later classpath emtries. - * jcf-parse.c (load_class): Pass saw_java_source to find_class. - (jcf_figure_file_type): Only call open_in_zip if correct magic number. - * gjavah.c: Update call to find_class. - * jcf-dump.c: Likewise. - - * jcf-write.c (put_linenumber): Handle duplicate line numbers. - (generate_bytecode_insns): For EXPR_WITH_FILE_LOCATION, do - nothing if body is empty_stmt_node. - Various little fixes so SP gets correctly adjusted. - For NEW_ARRAY_INIT, handle IGNORE_TARGET. - For CALL_EXPR, test if static first. - (generate_classfile): Ignore fields that are DECL_ARTIFICIAL, - such as the ones we create for Object and Class. - Set and restore current_function_decl. - * parse.y: Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir. - (note_possible_classname): New function. - (read_import_entry): Removed. Merged with read_import_dir. - (read_import_dir): Don't call find_class - that only gives us - the first classpath entry having the needed package. - Use the struct buffer data structure from buffer.h. - (read_import_dir, find_in_imports_on_demand): The remembered - class names now use '.' (not '/') as package separator. - - * parse.y (java_complete_expand_methods): Call write_classfile - here, and not in java_expand_classes (which only gets first class). - -1998-12-12 Alexandre Petit-Bianco - - * parse.y (): Do maybe_generate_clinit last. - (register_fields): If a static fields has an initializer, just - chain it on ctxp->static_initialized, and handle later. - (java_complete_expand_methods): Force first. - (resolve_expression_name, resolve_field_access): Just get DECL_INITIAL - - it's already been completed. - (patch_initialized_static_field): New function. - (java_complete_field): Call it. - -1998-12-12 Per Bothner - - * expr.c (encode_newarray_type, build_new_array): New functions. - * java-tree.h: Declare build_new_array. - * jcf-write.c (patch_newarray): Use build_new_array. - - * expr.c (java_lang_expand_exp): Support NEW_ARRAY_INIT. - * jcf-write.c (generate_bytecode_insns): Support NEW_ARRAY_INIT. - - * parse.y (patch_new_array_init): Re-organize. - Now is passed the actual array (pointer) type of the value. - Set the type of the CONSTRUCTOR to be an ARRAY_TYPE. - (patch_array_constructor): Removed - merged into patch_new_array_init. - (java_complete_tree): Update patch_new_array_init. - - * jcf-write.c (find_constant_index): New function. - (generate_bytecode_insns): Use find_constant_index. - (generate_classfile): Use find_constant_index for ConstantValue. - -1998-12-11 Tom Tromey - - * expr.c (invoke_build_dtable): Renamed dtable -> vtable. - * decl.c (init_decl_processing): Renamed dtable -> vtable. - * class.c (make_class_data): Renamed dtable -> vtable, and - dtable_method_count -> vtable_method_count. - -1998-12-10 Alexandre Petit-Bianco - - * decl.c (long_zero_node, float_zero_node, double_zero_node): New - global variables, initialized. - * java-tree.h (long_zero_node, float_zero_node, double_zero_node): - Declared new global variables. - * lex.c (java_lex): Return long_zero_node, float_zero_node, - double_zero_node, integer_zero_node upon direct matching. - * parse.y (purify_type_name): Added function prototype. - (duplicate_declaration_error_p): Consider new_type as potentially - being a incomplete type. Use purify_type_name on type string. - (method_header): saved_type: unused variable removed. Don't figure - return type if method name is invalid. - (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was - processed by patch_unaryop. - (patch_unaryop): Fixed typo in comment. Re-convert pre/post - increment/decrement node into its original type after binary - numeric promotion on its operands. - -1998-12-10 Alexandre Petit-Bianco - - * parse.y (array_initializer:): Array init operand is NULL_TREE - instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is - now an error. Fixed indentation problems. - (patch_string): Handle error_mark_node as an argument. - (patch_new_array_init): Fixed indentation problems. - (array_constructor_check_entry): Removed check on null wfl_value. - Return an error if wfl_value's walk returns an error. - -1998-12-09 Alexandre Petit-Bianco - - * java-tree.def (NEW_ARRAY_INIT): New Java tree code. - * lex.c (java_lex): Remember column position before advancing one - token. Retain location information on OCB_TK. - * lex.h (typedef struct java_lc): Added new field. - * parse.h (GET_SKIP_TYPE): New macro. - (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE. - * parse.y (build_new_array_init, patch_new_array_init, - patch_array_constructor, maybe_build_array_element_wfl, - array_constructor_check_entry): New function prototypes. - (switch_block:): Tagged . - (OCB_TK): Tagged . - (array_initializer:): Installed actions. - (variable_initializer): Build location information on element if - necessary. - (switch_statement:): Fixed indentation typo. - (switch_block:): Redefined default action. - (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:. - (patch_assignment): Removed duplicate code. - (maybe_build_array_element_wfl, build_new_array_init, - patch_new_array_init, patch_array_constructor, - array_constructor_check_entry): New functions. - -1998-12-07 Alexandre Petit-Bianco - - * parse.y (array_initializer): Tagged . - (variable_initializer:): Use default rule. - (array_initializer:): Defined actions. - (variable_initializers:): Likewise. - (resolve_qualified_expression_name): Use DECL_CONTEXT to build - non-static field accesses. - (patch_invoke): Fixed indentation typo. - (java_complete_tree): Likewise. - (build_labeled_block): Changed leading comment. Generate an error - in case of duplicate loop labels. - (patch_conditional_expr): Patch results of string concatenation - operations. - -1998-12-06 Per Bothner - - * constants.c (find_methodref_index): When the class is an interface, - generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef. - - * decl.c (finit_identifier_node): Use "$finit$", rather than - "" (which Sun's verifier rejects). - * parse.y (maybe_generate_finit): Leave out meaningless final flag. - (generate_field_initialization_code): Removed. - (fix_constructors) Don't add call to $finit$ here (wrong order). - (patch_method_invocation): Add $finit$ call here. - - * java-tree.h (CALL_USING_SUPER): New macro. - * parse.y (patch_invoke): Remove im local variable. - (patch_method_invocation, patch_invoke): Don't pass super parameter. - (patch_invoke): Use CALL_USING_SUPER instead of from_super parameter. - (resolve_qualified_expression_name): Maybe set CALL_USING_SUPER. - - * jcf-write.c (get_access_flags): Fix typo ACC_PUBLIC -> ACC_FINAL. - - * parse.y (java_complete_tree): Don't complain about unreachable - statement if it is empty_stmt_node. - - * jcf-write.c (find_constant_wide): New function. - (push_long_const): Use find_constant_wide. - - * jcf-write.c (generate_bytecode_insn): Fix bug in switch handling. - (generate_bytecode_insn): Use correct dup variant for MODIFY_EXPR. - Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set. - Emit invokeinterface when calling an interface method. - Emit invokespecial also when calling super or private methods. - - * jcf-write.c (generate_classfile): Emit ConstantValue attributes. - -1998-12-06 Per Bothner - - * jcf-dump.c (INVOKE): If invokeinterface, print number of args. - -1998-12-03 Alexandre Petit-Bianco - - * java-tree.h (java_layout_seen_class_methods): New function - prototype. - (LAYOUT_SEEN_CLASS_METHODS): Macro removed. - * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods. - * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro. - * parse.y (method_declarator:): Defined action. - (issue_warning_error_from_context): input_filename saved, set to - the appropriate value and restored after java_error is called. - (build_unresolved_array_type): Fixed comment. - (register_fields): Use PROMOTE_RECORD_IF_COMPLETE. - (method_header): Deal with return type the same way type are - handled for fields and method's parameters and local variables - types are handled. - (check_method_redefinition): Removed extra CR. - (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE. - (java_layout_seen_class_methods): New function. - (java_layout_classes): Call java_layout_seen_class_methods. - -1998-12-03 Per Bothner - - * parse,y (patch_synchronized_statement): Set CAN_COMPLETE_NORMALLY. - -1998-12-03 Per Bothner - - * jcf-dump.c (main): Fix error message. - * jcf-path.c (add_entry): Style fix. - -1998-12-02 Alexandre Petit-Bianco - - * class.c (layout_class_method): Call build_java_argument_signature - on constructors too. - * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE. - (patch_method_invocation): Define a primary when resolving an - expression name. Augmented comment on code checking illegal `this' - usage. Loosened it test by accepting NEW_CLASS_EXPR. - -1998-12-01 Alexandre Petit-Bianco - - * class.c (layout_class_method): Don't report error on non-static - overriding static if the method is private. - * java-tree.h (finish_class): Prototype added. - * lex.c (java_get_line_col): Handle col argument -2 value. - * parse.h: All static method declarations moved to parse.y. - * parse.y: Now contains all static method declarations previously - found in parse.h. - (find_expr_with_wfl, missing_return_error, - unreachable_stmt_error): New functions. - (java_get_real_method_name): Identify constructors bearing class - names in source code compiled classes only. - (java_complete_expand_methods): Call missing_return_error. - (invocation_mode): Private methods invoked as static methods. - (java_complete_tree): Call unreachable_stmt_error. - -1998-12-01 Tom Tromey - - * Makefile.in (+target): Removed. - (+xmake_file): Likewise. - (+tmake_file): Likewise. - (.NOEXPORT): Removed duplicate. - -1998-11-27 Kaveh R. Ghazi - - * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK). - - * jv-scan.c: Fix xmalloc prototype. Provide an xmalloc definition. - - * jvgenmain.c: Remove the xmalloc prototype, we get it from - libiberty.h. Provide an xmalloc definition. - - * jvspec.c: Remove the xmalloc prototype. - - * parse-scan.y: Include config.h and system.h. Don't include - OS headers or gansidecl.h. Don't prototype xmalloc/xstrdup. - Provide an xstrdup definition. - -1998-11-26 Alexandre Oliva - - * jcf-path.c (add_entry): Recognize ".jar" too. - * lang-specs.h: Likewise. - -1998-11-26 Per Bothner - - * jcf-write.c (generate_bytecode_insns): In Call_EXPR, handle - soft_monitorenter_node, soft_monitorexit_node, throw_node. - - * jcf-write.c (generate_bytecode_insns): - Handle pre/post-increment/decrement of long. - - * jcf-write.c (generate_bytecode_insns): - Handle missing exception handler (finally for synchronized). - -1998-11-25 Per Bothner - - * java-tree.h (end_params_node): Declare global. - * decl.c (end_params_node): New global. - (init_decl_processing, start_java_method): Use end_params_node for - end of list of parameter types. Follows correct gcc conventions. - * expr.c (pop_argument_types, pop_arguments): Likewise. - * lang.c (put_decl_node): Likewise. - * typeck.c (various places): Likewise. - * class.y (various places): Likewise. - * parse.y (various places): Likewise. - - * parse.y (java_complete_tree): Move CAN_COMPLETE_NORMALLY. - (build_jump_to_finally): Add missing CAN_COMPLETE_NORMALLY. - - * class.c: Add #include flags.h, remove no-longer needed declaration. - - * class.c (layout_class_method): Remove commented-out code, re-format. - Don't add vtable entry (or index) for private methods. - * expr.c (expand_invoke): A private method is implicitly final. - * class.c (make_class_data): If inlining or optimizing, - skip private methods. - - * class.c (finish_class): New function. Calls existing methods, - but alls emits deferred inline functions. - * jcf-parse.c (parse_class_file): Call finish_class. - * parse.y (java_complete_expand_methods): Likewise. - - * expr.c (build_java_binop): Explicit default, to silence -Wall. - - * expr.c (CHECK_PC_IN_RANGE): Add void cast to kill warnings. - -1998-11-25 Marc Espie - - * jcf-write.c (generate_bytecode_conditional): Fix typo. - -1998-11-24 Per Bothner - - * (generate_classfile): Always write class access flag with - ACC_SUPER set. - -1998-11-24 Alexandre Petit-Bianco - - * class.c (maybe_layout_super_class): New function. - (layout_class): Reorganized. Loop on class methods dispatched into - a new function. Call maybe_layout_super_class. - (layout_class_methods, layout_class_method): New functions. - * expr.c (expand_java_NEW): Call layout_class_methods on loaded - class. - (expand_invoke): Likewise. - * java-tree.h (all_class_list): New global variable declared. - (layout_class_methods, layout_class_method): New function - prototypes. - (LAYOUT_SEEN_CLASS_METHODS): New macro. - * jcf-parse.c (all_class_list): New global variable. - (load_class): Extended what class_or_name can be. Use parser - context mechanism to save globals before calling jcf_parse. - (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P - is set on the file name. - (jcf_parse): Layout class methods when Object is loaded, otherwise - record class in all_class_list for delayed method layout. - (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS. - * lang.c (put_decl_node): Decode into the decl context - class name. - * lex.c (java_allocate_new_line): Use xmalloc. - * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete - pointers, not TREE_LIST elements. - (struct parser_ctxt): Fixed comment indentations, added comments - and reordered some fields. - (java_check_methods): Function prototype removed. - * parse.y (java_push_parser_context): Use xmalloc. - (java_parser_context_restore_global): Pop extra pushed ctxp only - when there's nothing next. - (maybe_create_class_interface_decl): Fixed comment, add new - created class decl to all_class_list. - (method_header): Use GET_REAL_TYPE on argument's types. - (method_declarator): Use GET_REAL_TYPE, change type to the real - type in TREE_LIST dependency node. Build argument list with the - real type. - (create_jdep_list): Use xmalloc. Removed allocation error message. - (obtain_incomplete_type): Fixed leading comment. Broadened - incoming argument meaning. - (register_incomplete_type): Use xmalloc. Removed allocation error - message. - (safe_layout_class): Fixed leading comment. - (jdep_resolve_class): Reversed if statement condition and switch - if and else bodies. - (resolve_and_layout): Fixed leading comment. Broadened incoming - argument meaning. - (complete_class_report_errors): New local variable name, for - clarity. purify_type_name used for all error cases. - (java_get_real_method_name): Stricter check on constructors. - (java_check_regular_methods): Reverse methods list only if not - already laid out. Layout artificial constructor. - (java_check_methods): Deleted. - (source_start_java_method): Obtain incomplete type for patchable - method arguments. - (java_layout_classes): Fixed leading comment. Use - LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else - statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS - before returning. Fixed comments. - (java_expand_classes): Check for errors up front. - (patch_method_invocation): Class to search is resolved and laid - out. - -1998-11-24 Per Bothner - - * expr.c (java_lang_expand_expr): Add missing emit_queue. - - * javaop.h (int8): Removed - not used. - (jbyte): Redefine portably with correct signedness. - - * jcf-write.c (generate_bytecode_insns): Don't free sw_state.cases. - - * jcf-write.c (generate_bytecode_insns): Fix typo - OPCODE_getstatic to OPCODE_getfield. - - * java-tree.def (CASE_EXPR, DEFAULT_EXPR): Kind is 'x', not '1'. - * parse.y (java_complete_tree): For CASE_EXPR and DEFAULT_EXPR, - set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them). - -1998-11-19 Alexandre Petit-Bianco - - * jcf-parse.c (jcf_parse_source): Function returned type is - void. Added prototype. - (jcf_parse): Function returned type is void. - (yyparse): Remove call to fclose on the last parsed file. - - * java-tree.h (jcf_parse): Changed jcf_parse prototype. - -1998-11-18 Alexandre Petit-Bianco - - * class.c (unmangle_classname): Set QUALIFIED_P when appropriate. - (layout_class): Cope with methods featuring WFL in decl names. - * decl.c (unqualified_object_id_node): New global variable, - initialized. - (build_decl_no_layout): Removed. - * expr.c (build_primtype_type_ref): Handle Double. - (java_lang_expand_expr): Fixed indentations. - * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted. - (flag_wall, flag_redundant, flag_not_overriding, - flag_static_local_jdk1_1, unqualified_object_id_node): Global - variable declarations. - (build_decl_no_layout): Removed prototype. - (java_get_real_method_name): Added prototype. - (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P. - (java_parse_abort_on_error): Macro now just returns. - * jcf-parse.c (jcf_parse_source): Check fclose returned - value. Call emit_register_classes if java_report_errors returns - zero. - * lanc.c (flag_wall, flag_redundant, flag_not_overriding, - flag_static_local_jdk1_1): New integer flags. - (lang_decode_option): New flags set here. - * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros. - (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to - the flag_redundant variable. - (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object - when parsing java.lang.Object class. - (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal - NULL_TREE to build. - (resolve_qualified_expression_name): Fixed indentation. - (patch_array_ref): Changed prototype. - (not_initialized_as_it_should_p): Prototype removed. - (java_report_errors): Added function prototype. - * parse.y (formal_parameter:): Changed error message for not yet - supported final parameters. - (class_type_list:): Set both PURPOSE and VALUE of created - TREE_LIST to be class_type. - (primary_no_new_array:): Handle class literals on primitive types. - (parse_warning_context): Reinstalled correct force_error and - do_warning flags setups. - (java_report_errors): Changed prototype. Return java_error_count - value. - (variable_redefinition_error): Consider treating variable type as - a fake pointer. - (create_interface): Warn about redundant abstract modifier if - flag_redundant is set. Changed error message. - (lookup_field_wrapper): Save/restore globals before/after looking - up field. - (duplicate_declaration_error_p): Consider treating declaration - type as a fake pointer. - (register_fields): Extract real type from dependency node. Check - for duplicate field declaration after type adjustment. Use - DECL_INITIAL to store static final initialized values. - (method_header): Extract real function type from dependency node. - (check_abstract_method_header): Use GET_METHOD_NAME. - (obtain_incomplete_type): Layout fake pointer type. - (safe_layout_class): Don't try to check for methods before layout. - (java_complete_class): Don't check for correct throws clause - elements inheritance here. - (resolve_and_layout): Broadened name parameter meaning. - (reset_method_name): Use GET_METHOD_NAME. - (java_get_real_method_name): New function. - (java_check_regular_methods): Don't check methods in - java.lang.Object. Verify lineage of throws clause elements. Use - flag_no_overriding in warning report. - (check_throws_clauses): Don't check if class was from - bytecode. Use IS_UNCHECKED_EXCEPTION_P macro. - (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag. - (declare_local_variables): Use flag_static_local_jdk1_1 to report - warning on unsupported final local variables. Use build_decl - instead of build_decl_no_layout. Get real local variable type from - dependency node. - (source_start_java_method): Get real parameter type from - dependency node. Call build_decl instead of build_decl_no_layout. - (java_layout_classes): Reverse tree and layout type and class as - required. Mark class as loaded when done. - (resolve_field_access): Fixed indentation. Restricted condition - leading to static field access code generation. Set field_type - decl's TREE_TYPE if QUAL_DECL_TYPE not available. - (resolve_qualified_expression_name): Initialize type_found to - null. Handle static field resolved during qualification. Fixed - layout on non primitive field decl types. - (not_accessible_p): Fixed typo in comment. - (patch_method_invocation): Resolve and layout class to search from - type. - (lookup_method_invoke): Keep integer constant 0 as is. Resolve and - layout non primitive type, if necessary. Make method node only to - report errors. - (find_applicable_accessible_methods_list): Consider WFL'ed method - decl names. Fixed indentation. - (argument_types_convertible): Resolve and layout target type if - necessary. - (java_complete_tree): Fixed indentation problems. Rewrote - CALL_EXPR thrown exceptions check. Re-installed further processing - of the assignment in certain cases. - (patch_assignment): Call maybe_build_primttype_type_ref to perform - inlining on class literals. - (valid_builtin_assignconv_identity_widening_p): Cope with constant - 0 literal. - (valid_method_invocation_conversion_p): Likewise. - (patch_string): Temporary disable forbidden use of `this' in - explicit constructor invocations when doing string concatenation - within their scope. - (patch_unaryop): Added comment. Reinstalled code to disable - further check on assignment operation with cast expression RHS. - (patch_switch_statement): Fixed indentation. - (build_try_statement): Call build_decl instead of - build_decl_no_layout. - (patch_synchronized_statement): Likewise. - (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of - IS_UNCHECKED_EXPRESSION_P. - (check_thrown_exceptions_do): Changed leading comment. Resolve and - layout argument exception type. - (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead - of IS_UNCHECKED_EXPRESSION_P. - -1998-11-18 Anthony Green - - * jcf-parse.c (yyparse): Open class file in binary mode. - -1998-11-15 Per Bothner - - * jvgenmain.c: Need to #include "gansidecl.h" (to get PROTO). - - * jcf-write.c (perform_relocations): Move check out one loop. - -1998-11-15 Anthony Green - - * Make-lang.in: Fix reference to srcdir. - * jv-scan.c: Add missing xmalloc prototype. - * jvgenmain.c: Ditto. - -1998-11-15 Per Bothner - - * decl.c (error_mark_node), java-tree.h: New global. - * parse.y: Use empty_stmt_node instead of size_zero_node. - (build_if_else_statement): If missing else, use empty_stmt_node. - - * parse.y (not_initialized_as_it_should_p): Removed, with its callers. - (java_complete_expand_method): Complain if return is missing. - (java_check_regular_methods): Comment out incorrect error check. - (not_accessible_p): Fix incorrect handling of protected methods. - (patch_method_invocation): Pass correct context to not_accessible_p. - (find_applicable_accessible_methods_list): Likewise. - (qualify_ambiguous_name): If ARRAY_REF, it's an expression name. - (java_complete_tree): For CASE_EXPR and DEFAULT_EXPR, set - TREE_TYPE (to void_type_node); otherwise expand_expr crashes. - (patch_if_else_statement): Fix setting of CAN_COMPLETE_NORMALLY. - - * jcf-write.c (CHECK_OP, CHECK_PUT): Add some error checking. - (push_int_const): Remove reundant NOTE_PUSH. - (generate_bytecode_insns - case STRING_CST): Do NOTE_PUSH. - (- case SWITCH_EXPR): Fix code generation bug. - (- case PREDECREMENT_EXPR etc): Remove redundant NOTE_PUSH. - (generate_classfile): More robust for abstract methods. - -1998-11-15 Anthony Green - - * Makefile.in: jv-scan and jvgenmain all require libiberty. - * Make-lang.in: Ditto. - - * jv-scan.c: Remove xmalloc and xstrdup definitions. - * jvgenmain: Ditto. - -1998-11-15 Per Bothner - - * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): New macro. - - * jcf-io.c (find_class): Simpler/cleaner structure fixes a bug. - -1998-11-14 Per Bothner - - Allow uses of interface types to verify. This is not really - type-safe, but it matches what Sun does, and is OK as long as - there are appropriate run-time checks. - * verify.c (merge_types): If merging two interface types, - just set the result to java.lang.Object. - * expr.c (pop_type): Any interface is matches by java.lang.Object. - -1998-11-13 Tom Tromey - - * gjavah.c (main): Handle --output-class-directory argument. - * jvspec.c (lang_specific_driver): Translate `-d' into - -foutput-class-dir. - * jcf.h (jcf_write_base_directory): Declare. - * lang.c (lang_decode_option): Recognize -foutput-class-dir. - * lang-options.h: Mention -foutput-class-dir. - * jcf-write.c (jcf_write_base_directory): New global. - (make_class_file_name): Put generated .class file into `-d' - directory, or into source directory if -d not given. Function now - static. - (write_classfile): Free class file name. Handle case where class - file name is NULL. - (DIR_SEPARATOR): New macro. - Include - - * Makefile.in (prefix): New macro. - -1998-11-12 Per Bothner - - * parse.y (patch_invoke): Do less if flag_emit_class_files. - * expr.c (build_known_method_ref): Don't check flag_emit_class_files - here (done in patch_invoke instead). - (case_identity): Moved here from parse.y. - - * java-tree.h (CAN_COMPLETE_NORMALLY): New macro. - * parse.y (java_complete_tree etc): Maybe set CAN_COMPLETE_NORMALLY. - * parse.y (java_complete_tree): Re-order COMPOUND_EXPR in BLOCK - so they can be efficiently scanned without recursion. - Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR. - * expr.c (java_lang_expand_expr): Expand statements of COMPOUND_EXPR - in BLOCK iteratively, rather than recursively. - - * parse.y (do_unary_numeric_promotion): New function. - (patch_unaryop, patch_binop, patch_array_ref): Use it. - - * parse.y (patch_newarray): Various fixes. - - Re-do handling of switch statements (for proper block scoping). - * parse.y: Add just a single block for the enture switch block, - but don't create any "case blocks". - (group_of_labels): Rmeoved unneeded non-terminal. - CASE_EXPR and DEFAULT_EXPR are added to current block. - * expr.c (java_lang_expand_expr): Inline SWITCH_EXPR here. - Now also need to handle CASE_EXPR and DEFAULT_EXPR. - * java-tree.h (SWITCH_HAS_DEFAULT): New macro. - * parse.y (wfl_operator, print_int_node): Make non-static. - (java_complete_tree): CASE_EXPR and DEFAULT_EXPR are now processed - as part of recursive scan of block. - (java_expand_switch ): Removed - inlined into java_lang_expand_expr. - (patch_switch_statement): Most tests move dinto java_complete_tree. - - * parse.y: Make various production be non-typed (void). - * parse.y (parse_error): Merged into issue_warning_error_from_context. - * parse.y (add_stmt_to_compound): Don't create/change extra node. - (patch_method_invocation_stmt): Renamed to patch_method_invocation. - - * jcf-write.c (struct jcf_handler): New type. - (struct jcf_switch_state): New type. - (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC): New relocation kinds. - (alloc_handler, emit_unop, emit_reloc): New functions. - (adjust_typed_op): Add extra parameter ("max type" offset). - (emit_switch_reloc, emit_case-reloc): New function. - (generate_bytecode_conditional): Handle REAL_TYPE comparisons. - (generate_bytecode_insns): Support REAL_CST, switch statements, - exception handling, method calls, object/array creation, and more. - - * class.c: Remove some unused variables. - * constants.c (find_string_constant): New function. - (count_constant_pool_bytes): Fix to correctly handle wide constants. - * decl.c (complete_start_java_method): Don't _Jv_InitClass - if flag_emit_class_files. - -1998-11-12 Tom Tromey - - * jcf-io.c (find_class): Added explanatory comment. - - * jcf-path.c (add_entry): Look for `.zip' at end of filename. Add - trailing slash to `.zip' entries. - - * jvspec.c (lang_specific_driver): Correctly handle case where - GC_NAME not defined. - -1998-11-11 Tom Tromey - - * jvspec.c (GC_NAME): New define. - (lang_specific_driver): Use GC_NAME. Add GC_NAME to command line - if required. - * Make-lang.in (jvspec.o): Define WITH_GC_. - -1998-11-11 Per Bothner - - * jcf-dump.c (TABLE_SWITCH): Fix typos. - -1998-11-11 Tom Tromey - - * jcf-dump.c (main): Correctly recognize `--'-style long options. - -1998-11-10 Alexandre Petit-Bianco - - * class.c (is_compiled_class): Call safe_layout_class for class - compiled from source. - * conver.h (convert_to_integer, convert_to_real, - convert_to_pointer): Added prototypes. - * decl.c (init_decl_processing): Non longer push the decls of - `methodtable', `constants', `Class', `Field', `dispatchTable' - `jexception' and `Method'. - * expr.c (build_invokeinterface): New function. - (expand_invoke): static variable CLASS_IDENT now in - build_invokeinterface. Use build_invokeinterface. - (expand_java_field_op): Moved code to inline - java.lang.PRIMTYPE.TYPE into a function. - (build_primtype_type_ref): New function. - * java-tree.def (INSTANCEOF_EXPR): New tree code. - * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED, - FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros. - (DECL_CONSTRUCTOR_P): Fixed typo in comment. - (DECL_LOCAL_STATIC_VALUE): New macro. - (build_invokeinterface, build_primtype_type_ref): New function - prototypes. - (java_parse_abort_on_error): Macro rewritten. - * jcf-parse.c (current_method): Add comment to declaration. - (parse_zip_file_entries, process_zip_dir, void parse_source_file): - Function prototypes fixed. - (jcf_parse_source): push/pop parser context. save/restore global. - (parse_source_file): Fixed leading comment. Now take a - IDENTIFIER_NODE as an argument. Doesn't check methods, layout - classes and pop the parser context anymore. - (yyparse): Push parser context, save globals, parse the source - file, restore globals and pop the parser context when processing a - source file. - * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define. - * lex.c (java_parse_doc_section): New function. - (java_lex): Call java_parse_doc_section when appropriate. Build an - operator around INSTANCEOF_TK. - * lex.h (java_lineterminator, java_sprint_unicode, - java_unicode_2_utf8, java_lex_error, java_store_unicode): - Prototypes rewritten. - (java_parse_escape_sequence, java_letter_or_digit_p, - java_parse_doc_section, java_parse_end_comment, java_get_unicode, - java_read_unicode, java_store_unicode, java_read_char, - java_allocate_new_line, java_unget_unicode, java_sneak_unicode): - Added function prototypes. - * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG - define. - (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT): - New macros - (struct parser_ctxt): New fields: deprecated, - current_parsed_class_un, gclass_list. - (fix_method_argument_names, issue_warning_error_from_context, - resolve_package, lookup_package_type): New function prototypes. - (resolve_expression_name): Fixed function prototype. - (find_applicable_accessible_methods_list): Fixed indentation, added - extra argument in prototype. - (check_final_assignment, build_null_of_type, check_deprecation, - check_method_redefinition, reset_method_name, - java_check_regular_methods, java_check_abstract_methods, - maybe_build_primttype_type_ref): New function prototype. - * parse.y (conver.h): Include. - (INSTANCEOF_TK): Tagged . - (single_type_import_declaration): Use REGISTER_IMPORT macro. - (relational_expression:): Build binop for instanceof. - (java_push_parser_context): Remember ctxp->gclass_list across - contexts. - (java_pop_parser_context): Simply return if no context - exists. Remember gclass_list across contexts. - (issue_warning_error_from_context): New function. - (parse_error_context): Don't setup ctxp->elc here. Call - issue_warning_error_from_context instead. - (parse_warning_context): Likewise. - (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL - setup. Link new class/interface to ctxp->gclass_list. - (add_superinterfaces): Register interface as incomplete if not - loaded. - (create_class): Remember class unqualified name in - ctxp->current_parsed_class_un. Check class deprecation. - (register_fields): Check field deprecation. Remember static final - field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part - processing INIT. - (method_header): New local variable ORIG_ARG. Use unqualified - current class name for check on constructor errors. Promote return - type if of record type. Argument list fix moved in - fix_method_argument_names, called here. Check method deprecation. - (fix_method_argument_names): New function. - (method_declarator): Promote record typed arguments. - (safe_layout_class): Check class methods before layout. - (java_complete_class): Compute field layout when patched. - (do_resolve_class): Try to load class after having it renamed - after the package name. - (get_printable_method_name): Use DECL_CONTEXT. - (reset_method_name): New function. - (check_method_redefinition): Use reset_method_name. - (java_check_regular_methods): New local variable - SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method - names for error report. Check for compile-time error when method - found has default (package) access. - (java_check_abstract_methods): Now takes an interface DECL node as - an argument. Also reinstall real name on unchecked - overriding/hiding methods for error report. - (java_check_methods): Fixed leading comment. Get classes to verify - from ctxp->gclass_list. Use CHECK_METHODS macro and set - CLASS_METHOD_CHECKED_P on class verification. - (lookup_java_method2): Get real method name if necessary. - (find_in_imports): Don't check package class access here. - (resolve_package, lookup_package_type): New functions. - (java_layout_classes): Fixed leading comment. Take classes to be - laid out from ctxp->gclass_list. - (java_complete_expand_methods): Don't expand native and abstract - methods. - (java_expand_classes): New function. - (resolve_expression_name): Use additional argument ORIG. Retrieve - values of static final field of primitive types. - (resolve_field_access): Handles static final field of promotive - type. - (resolve_qualified_expression_name): Handle STRING_CST as - primaries and package name resolution. Check deprecation on found - decls. Set where_found and type_found on non static field resolved - during qualification. Layout non primitive field decl types. - (check_deprecation): New function. - (maybe_access_field): Simplified. - (patch_method_invocation_stmt): Local variable CLASS_TYPE - removed. Reverse method's argument when primary is a type. Don't - use CLASS_TYPE to report problems, use IDENTIFIER_WFL - instead. Include abstract class in the list of class searchable - for constructors. Use DECL_CONTEXT of found method for access - checks. Check method deprecation. - (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when - converting arguments. Handle INVOKE_INTERFACE. - (lookup_method_invoke): Search constructor using existing - infrastructure (don't rely on lookup_java_constructor anymore). - (find_applicable_accessible_methods_list): Extra argument flag - LC. Now include constructor in the search. - (qualify_ambiguous_name): Conditional expression are primaries. - (not_initialized_as_it_should_p): static final are always - initialized. - (java_complete_tree): Pass extra NULL argument to - resolve_expression_name. Stricter test to carry on patching - assignments. New case for INSTANCEOF_EXPR. - (complete_function_arguments): Inline PRIMTYPE.TYPE read access. - (check_final_assignment, maybe_build_primttype_type_ref): New - functions. - (patch_assignment): Detect resolved static finals and carry normal - assignment error check on them. Inline PRIMTYPE.TYPE read access. - (try_builtin_assignconv): Access constant 0 on all primitive - types. - (valid_builtin_assignconv_identity_widening_p): Accept identical - types. Accept all promoted type on int type. - (valid_ref_assignconv_cast_p): Accept a null pointer to be - assigned to a reference. - (valid_method_invocation_conversion_p): Accept to check null - pointers. - (build_binop): Merge declaration and initialization of local - variable BINOP. - (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all - numeric types. Improved validity test for qualify operators on - references. - (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR - and PREINCREMENT_EXPR. Also detect resolved static finals of a - primitive type and issue the appropriate error message. - (resolve_type_during_patch): Mark class loaded when resolved. - (patch_cast): Allow null to be cased to reference types. - (build_null_of_type): New function. - (patch_array_ref): Handle array on references correctly. - (patch_return): Removed unused local variable MODIFY. Force - boolean to be returned as integers. Allows null to be returned by - a function returning a reference. - * typeck.c (convert_to_integer, convert_to_real, - convert_to_pointer): Prototypes moved to convert.h - (lookup_argument_method): Use method real name, if necessary. - -1998-10-30 Tom Tromey - - * class.c (build_class_ref): Changed name of primitive classes to - start with `_Jv_'. - - * class.c (make_class_data): Renamed fields: nmethods to - method_count, method_count to dtable_method_count. Always set - `state' field to 0. - * decl.c (init_decl_processing): Likewise. - -1998-10-28 Alexandre Petit-Bianco - - * class.c (layout_class): Don't mangle , produce - __finit instead. Don't verify artificial methods. - * decl.c (finit_identifier_node): New declared global. - (init_decl_processing): finit_identifier_node initialized. - * java-tree.def (CONDITIONAL_EXPR): New Java tree code. - * java-tree.h (finit_identifier_node): Declared as extern. - (struct lang_decl): New field called_constructor. - (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor. - (CLASS_HAS_FINIT_P): New macro. - (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks - explicit constructor invocation. - (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P, - CALL_SUPER_CONSTRUCTOR_P): New macros. - (write_classfile): Added prototype. - * jcf-parse.c (jcf_parse_source): Parse and remember for - generation if the file was seen on the command line. - (parse_source_file): Don't write the class file here. - (yyparse): Loop on files rewritten. Set current_jcf. - (parse_zip_file_entries): Parse class file only if it was found. - * lang.c (init_parse): Don't open command line provided filename - here. - (lang_parse): Don't set main_jcf anymore. - * parse.h (ABSTRAC_CHECK): Capitalized arguments. - (JCONSTRUCTOR_CHECK): New macro. - (JBSC_TYPE_P): New macro. - (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment. - (COMPLETE_CHECK_OP_2): New macro. - (struct parse_ctxt): New field explicit_constructor_p. - (check_class_interface_creation): Fixed prototype indentation. - (patch_method_invocation_stmt): Prototype reflects added argument. - (patch_invoke): Likewise. - (complete_method_declaration, build_super_invocation, - verify_constructor_circularity, - build_this_super_qualified_invocation, get_printable_method_name, - patch_conditional_expr, maybe_generate_finit, fix_constructors, - verify_constructor_super, create_artificial_method, - start_artificial_method_body, end_artificial_method_body, - generate_field_initialization_code): New function prototypes. - * parse.y: Fixed leading comment - (constructor_header:, constructor_body:, block_end:): Rules tagged - . - (type_declaration:): Call maybe_generate_finit. - (method_declaration:): Action for method_body: placed in new - function complete_method_declaration, called here. - (constructor_declaration:): Defined actions. Removed leading - FIXME. - (constructor_header:): New rule with action. - (constructor_body:): Rule rewritten using block_begin: and - block_end:. Defined actions. - (constructor_declarator:, explicit_constructor_invocation:): - Defined actions. - (block:): Use new rules block_begin: block_end:. - (block_begin:, block_end:): New rules and actions. - (block_statements:): Fixed error message for explicit - constructors. - (method_invocation:): Call build_this_super_qualified_invocation - if primary is `this' or `super' was seen. - (conditional_expression:): Action defined. - (extra_ctxp_pushed_p): New static global flag. - (java_parser_context_save_global): Create parser context if - necessary. Use extra_ctxp_pushed_p to remember it. - (java_parser_context_restore_global): Pop extra parser context if - one exists. - (build_array_from_name): Array on primitive types are marked - loaded. - (register_fields): Restore new name in field initializer - expression if type was altered. Non static fields initialized upon - declaration marked initialized. - (maybe_generate_finit): New function. - (maybe_generate_clinit): Use create_artificial_method, - start_artificial_method_body, end_artificial_method_body. Generate - debug info for enclosed initialization statements. - (method_header): Fixed leading comment. Check constructor - flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P - accordingly. - (complete_method_declaration, constructor_circularity_msg, - verify_constructor_circularity): New functions. - (get_printable_method_name): New function. - (check_method_redefinition): Don't rename methods. Fix - declared constructor names. Error message for - constructors modified. - (java_check_regular_methods): Local variable seen_constructor - renamed saw_constructor. Skip verification on constructors. Create - default constructor with create_artificial_method. - (java_check_methods): Removed unnecessary empty line. - (create_artificial_method, start_artificial_method_body, - end_artificial_method_body): New functions. - (java_layout_classes): Changed leading comment. Reverse fields - list if necessary. Always layout java.lang.Object if being - defined. - (java_complete_expand_methods): Verify constructor circularity. - (java_complete_expand_method): Call fix_constructor on - constructors. Local variable no_ac_found removed. Restore - bindings if method body expansion failed. - (fix_constructors, verify_constructor_super, - generate_field_initialization_code): New function. - (java_expand_classes): Fixed leading comment. Write class file - here. - (resolve_expression_name): Check for illegal instance variable - usage within the argument scope of an explicit constructor - invocation. - (resolve_qualified_expression_name): Pass extra from_super flag - when invoking patch_method_invocation_stmt. New case for - conditional expression when used as a primary. Check for error - when acquiring super. - (patch_method_invocation_stmt): Added extra argument super. New - local variable is_static_flag. Set class_to_search according to - the nature of the constructor invocation. Don't add `this' - argument when expanding NEW_CLASS_EXPR. Check for illegal method - invocation within the argument scope of explicit constructor - invocation. Set is_static according to is_static_flag. Provide - extra `super' argument to patch_invoke invocation. - (patch_invoke): New argument from_super. Loop on arguments - indentation fixed. Pass from_super to invocation_mode. New switch - case INVOKE_SUPER. Fixed error message in switch default case. - Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node - value. - (invocation_mode): Return INVOKE_SUPER mode when appropriate. - (lookup_method_invoke): Fixed prototypes in candidates list. Error - message takes constructors into account. - (find_applicable_accessible_methods_list): Fixed indentation. - (qualify_ambiguous_name): Take explicit constructor invocation - into account. Deal with a conditional expression as a primary to - a method call. - (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR - case. Added extra argument to patch_method_invocation_stmt. - Register calls made to explicit constructor `this'. Don't call - save_expr in ARRAY_REF case when emitting class files. Check for - illegal use of this when expanding explicit constructor invocation - arguments. - (complete_function_arguments): Set and reset parser context - explicit_constructor_p field value when appropriate. - (build_super_invocation, build_this_super_qualified_invocation): - New functions. - (patch_assignment): Fixed typo. - (patch_unaryop): Check on final fields occurs only when a decl - exits. - (patch_return): Take constructors into account. - (patch_conditional_expr): New function. - * typeck.c (build_java_signature): Removed unnecessary empty line. - -1998-10-28 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too. - -1998-10-28 Tom Tromey - - * decl.c (init_decl_processing): Renamed fields. - * class.c (make_class_data): Renamed bfsize, nfields, nsfields, - interface_len, msize fields. - - * class.c (make_class_data): Removed subclass_head and - subclass_next fields. - * decl.c (init_decl_processing): Removed subclass_head and - subclass_next fields. - -1998-10-28 Jeffrey A Law (law@cygnus.com) - - * jcf-write.c (emit_load_or_store): Avoid implicit int arguments. - * mangle.c (emit_unicode_mangled_name): Similarly. - -1998-10-26 Nick Clifton - - * jcf-parse.c (get_constant): Place braces around code to compute - 'd' when REAL_ARITHMETIC is not defined. - -1998-10-25 H.J. Lu (hjl@gnu.org) - - * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to - dependency. - -1998-10-23 Tom Tromey - - * lang-specs.h: `.zip' files are input to jc1. - -1998-10-22 Per Bothner - - * jvspecs.c: Add (but don't enable) support for combining multiple - .class and .java input filenames to a single jc1 invocation. - Add support for -C flag (copile to .class files). - Translate -classpath and -CLASSPATH arguments. - * lang-specs.h: Don't set %2 spec. - -1998-10-22 Tom Tromey - - * jcf-path.c (add_entry): Don't add trailing separator if entry is - a .zip file. - (add_path): Don't add trailing separator to non-empty path - elements. - - * lang.c (lang_decode_option): Check for -fclasspath and - -fCLASSPATH before examining other `-f' options. - - * java-tree.h (finalize_identifier_node): Don't declare. - * class.c (make_class_data): Don't push "final" field. - * decl.c (init_decl_processing): Don't push "final" field. - (finalize_identifier_node): Removed. - (init_decl_processing): Don't set finalize_identifier_node. - - * config-lang.in (stagestuff): Added jcf-dump and jv-scan. - -1998-10-11 Anthony Green - - * Make-lang.in (java): Depend on jcf-dump and jv-scan. - (JV_SCAN_SOURCES): New macro. - (JCF_DUMP_SOURCES): Likewise. - (jcf-dump$(exeext)): New target. - (jv-scan$(exeext)): New target. - -1998-10-22 Tom Tromey - - * Makefile.in (LEX): Removed. - (LEXFLAGS): Likewise. - (SET_BISON): New macro. - (BISON): Removed. - ($(PARSE_C)): Use SET_BISON. Run bison from srcdir to avoid - spurious diffs in parse.c. - ($(PARSE_SCAN_C)): Likewise. - (PARSE_DIR): New macro. - (PARSE_C): Use it. - (PARSE_SCAN_C): Likewise. - (PARSE_RELDIR): New macro. - - * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c. - - * jcf-io.c (find_class): Use saw_java_source to determine when to - look for `.java' file. - * jcf-parse.c (saw_java_source): New global. - (yyparse): Set it if `.java' file seen. - - * Make-lang.in (JAVA_SRCS): Added jcf-path.c. - (GCJH_SOURCES): Likewise. - * Makefile.in (datadir): New macro. - (libjava_zip): Likewise. - (JAVA_OBJS): Added jcf-path.o. - (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o. - (../gcjh$(exeext)): Likewise. - (jcf-path.o): New target. - * java-tree.h (fix_classpath): Removed decl. - * jcf-parse.c (fix_classpath): Removed. - (load_class): Don't call fix_classpath. - * parse.y (read_import_dir): Don't call fix_classpath. - * lex.h: Don't mention classpath. - * lex.c (java_init_lex): Don't initialize classpath. - * jcf-io.c (classpath): Removed global. - (find_class): Use jcf_path iteration functions. Correctly search - class path for .java file. - (open_in_zip): New argument `is_system'. - * jcf-dump.c (main): Call jcf_path_init. Recognize all new - classpath-related options. - * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH, - and -I. - (lang_init): Call jcf_path_init. - * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH. - * lang-specs.h: Handle -I. Minor cleanup to -M options. - Correctly put braces around second string in each entry. - * gjavah.c (main): Call jcf_path_init. Recognize all the new - classpath-related options. - (help): Updated for new options. - * jcf.h: Declare functions from jcf-path.c. Don't mention - `classpath' global. - * jcf-path.c: New file. - - * jcf-depend.c: Include jcf.h. - - * jcf-write.c (localvar_alloc): Returns `void'. - (localvar_free): Removed unused variable. - - * lang.c (OBJECT_SUFFIX): Define if not already defined. - (init_parse): Use OBJECT_SUFFIX, not ".o". - -1998-10-21 Alexandre Petit-Bianco - - * class.c (emit_register_classes): Renamed from - emit_register_class. - * java-tree.h (emit_register_classes): Prototype renamed from - emit_register_class. - * jcf-parse.c (yyparse): Call emit_register_classes once before - returning. - * parse.y (java_expand_classes): No longer register classes. - -1998-10-20 Alexandre Petit-Bianco - - * class.c (is_compiled_class): New local variable - seen_in_zip. Identify classes found in currently compiled source - file(s). - * decl.c (complete_start_java_method): Fixed typo. - * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P, - HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros. - (CLASS_P): Moved around. - (java_parse_abort_on_error): Macro moved from jcf-parse.c - * jcf-parse.c (java_parse_abort_on_error): Macro moved to - java-tree.h - (jcf_parse_source): Changed leading comment. Removed unnecessary - fclose and CLASS_FROM_SOURCE_P marking. - (parse_source_file): New local variables remember_for_generation - and filename. Mark parsed file name identifier node. Removed block - executed when parse_only was null. Set remember_for_generation. - Use it as an argument to java_pop_parser_context. - (yyparse): New local variables several_files, list, next node and - current_file_list. Split ampersand separated file names into - current_file_list. Iterate through the list and parse accordingly. - * parse.h (java_pop_parser_context): New function prototype. - * parse.y (ctxp_for_generation): New static global variable. - (java_pop_parser_context): New argument generate. Link popped ctxp - to ctxp_for_generation list accordingly. - (java_complete_expand_methods): Fixed indentation. - (java_expand_classes): New function. - -1998-10-17 Per Bothner - - * Makefile.in: Link with libiberty.a instead of memmove.o. - -1998-10-16 Alexandre Petit-Bianco - - * lex.c (setjmp.h): No longer included. - * lex.h (setjmp.h): Included. - * parse.h (SET_TYPE_FOR_RESOLUTION): New macro. - (duplicate_declaration_error_p): Renamed from - duplicate_declaration_error. - (build_array_from_name): New function prototype. - * parse.y (setjmp.h): No longer included. - (variable_declarator_id): Define action. - (build_array_from_name): New function. - (duplicate_declaration_error_p): Renamed from - duplicate_declaration_error. Fixed leading comment. - (register_fields): Main `for' loop reorganized. Uses - SET_TYPE_FOR_RESOLUTION and build_array_from_name. - (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call - build_array_from_name. - (resolve_class): Set CLASS_LOADED_P on newly build array dimension - types. - (read_import_dir): Don't try to skip `.' and `..'. - (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and - build_array_from_name. Main `for' loop reorganized. - (resolve_qualified_expression_name): When building access to a - field, use the type where the field was found, not its own type. - (maybe_access_field): Use field DECL_CONTEXT if the type where the - field was found is null. - (qualify_ambiguous_name): Sweep through all successive array - dimensions. - -1998-10-14 Alexandre Petit-Bianco - - * java-tree.h (pop_labeled_block, lang_printable_name, - maybe_add_interface, set_super_info, get_access_flags_from_decl, - interface_of_p, inherits_from_p, fix_classpath, - complete_start_java_method, emit_handlers, init_outgoing_cpool, - make_class_data, register_class, alloc_name_constant): New - function prototypes. - * lang.c (lang_decode_option): Set argc argument unused. Fixed - indentation. Added cast to remove warning. - (lang_printable_name): Set v argument unused. - (lang_print_error): Added argument to lang_printable_name call. - (java_dummy_print, print_lang_decl, print_lang_type, - print_lang_identifier, lang_print_xnode): All argument marked - unused. - * lex.c (java_unget_unicode): Removed unnecessary argument. - (java_allocate_new_line): Unused local variable is gone. - (java_read_char): Added parenthesis in expressions to remove - warnings. Added final return statement. - (java_read_unicode): Added parenthesis in expression to remove - warning. - (java_parse_end_comment): Fixed java_unget_unicode invocation. - (java_parse_escape_sequence): Likewise. - (java_lex): Unused local variables are gone. Fixed - java_unget_unicode invocation. - * lex.h (set_float_handler): Prototype added when JC1_LITE not - defined. - * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed - lang_printable_name invocation in macro. - (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL): - Likewise. - (duplicate_declaration_error): Suppressed unused argument in - prototype. - (identical_subpath_p): Function declaration is gone. - (patch_invoke): Suppressed unused argument in prototype. - (patch_cast, build_labeled_block, check_thrown_exceptions): - Likewise. - * parse.y (setjmp.h): Included - (toplev.h): Likewise. - (field_declaration:): Suppressed unused local - (label_decl:): Fixed build_labeled_block invocation. - (java_pop_parser_context): Put extra parenthesis around assignment - in if. - (yyerror): Suppressed unused local variables. - (variable_redefinition_error): Fixed lang_printable_name - invocation. - (create_interface): Suppressed unused local variables. - (create_class): Likewise. - (duplicate_declaration_error): Suppressed unused argument. Fixed - lang_printable_name invocation. - (register_fields): Suppressed unused local variable. Fixed - duplicate_declaration_error invocation. - (method_header): Suppressed unused local variable. - (method_declarator, parser_check_super): Likewise. - (java_complete_class): Suppressed unused local variable. Fixed - fatal error message. - (complete_class_report_errors): Added default: in switch. - (java_check_regular_methods): Fixed lang_printable_name - invocations. - (check_throws_clauses): Likewise. - (java_check_abstract_methods): Suppressed unused local - variable. Fixed lang_printable_name invocation. - (read_import_entry): Added supplemental return statement. - (read_import_dir): Suppressed unused local variables. - (check_pkg_class_access, declare_local_variables): Likewise. - (source_start_java_method): Suppressed unused extern variable - declarations - (expand_start_java_method): Suppressed unused extern and local - variable declarations. - (java_complete_expand_methods): Likewise. - (java_complete_expand_method): Suppressed unused local variables. - (make_qualified_name): Likewise. - (resolve_qualified_expression_name): Added default: in - switch. Fixed lang_printable_name invocation. - (class_instance_creation_expression): Added parenthesis around - expressions. - (patch_method_invocation_stmt): Fixed lang_printable_name and - patch_invoke invocations. - (check_for_static_method_reference): Fixed lang_printable_name - invocation. - (patch_invoke): Suppressed unused arguments and local variables. - (lookup_method_invoke): Suppressed unused local variables. - (qualify_ambiguous_name): Added default: in switch. - (identical_subpath_p): Function removed. - (patch_assignment): Suppressed unused local variables. Suppressed - unnecessary if statement. Fixed lang_printable_name invocations. - (try_builtin_assignconv): Fixed lang_printable_name invocations. - (valid_ref_assignconv_cast_p): Parenthesis around - expression. Suppressed unused local variables. - (build_binop): Suppressed unused local variables. fixed - lang_printable_name invocations. - (string_constant_concatenation): Suppressed unused local - variables. - (patch_unaryop): Fixed lang_printable_name invocation. - (patch_cast): Suppressed unnecessary argument. Fixed - lang_printable_name invocation. - (patch_array_ref): Fixed lang_printable_name invocation. - (patch_newarray, patch_return, patch_if_else_statement): Likewise. - (build_labeled_block): Suppressed unused argument. - (generate_labeled_block): Fixed build_labeled_block invocation. - (build_loop_body): Suppressed unused local variables. - (patch_loop_statement): Likewise. - (patch_exit): Fixed lang_printable_name invocation. - (patch_switch_statement): Likewise. - (case_identity): First argument marked unused. - (patch_try_statement): Fixed lang_printable_name invocations. - (patch_synchronized_statement, patch_throw_statement): Likewise. - (check_thrown_exceptions): Fixed check_thrown_exceptions and - lang_printable_name invocations. - (check_thrown_exceptions_do): Suppressed unused argument. - -1998-10-14 Tom Tromey - - * jcf-write.c (write_classfile): Add output class file as target. - * lang-options.h: Added -MD, -MMD, -M, and -MM. - * jcf.h: Added declarations for dependency-tracking functions. - * lang-specs.h: Handle -M, -MM, MD, and -MMD. - * lang.c (lang_decode_option): Recognize -MD and -MMD. - (finish_parse): Call jcf_dependency_write. - (dependency_tracking): New global. - (DEPEND_SET_FILE): New define. - (DEPEND_ENABLE): New define. - (init_parse): Enable dependency tracking if required. - Include "flags.h". - * Makefile.in (JAVA_OBJS): Added jcf-depend.o. - (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o. - (../gcjh$(exeext)): Likewise. - (jcf-depend.o): New target. - * Make-lang.in (JAVA_SRCS): Added jcf-depend.c. - (GCJH_SOURCES): Likewise. - * jcf-io.c (open_class): Call jcf_dependency_add_file. Added - dep_name argument. - (find_classfile): Added dep_name argument. - (find_class): Compute name of dependency. - (open_in_zip): Call jcf_dependency_add_file. - * gjavah.c (output_file): No longer global. - (usage): Don't mention "gjavah". - (help): Likewise. - (java_no_argument): Likewise. - (version): Likewise. - (main): Recognize and handle -M family of options. - (print_mangled_classname): Return is void. - (process_file): Handle case where output is suppressed. - (HANDLE_END_FIELD): Likewise. - (HANDLE_METHOD): Likewise. - * jcf-depend.c: New file. - -1998-10-13 Jeffrey A Law (law@cygnus.com) - - * java-tree.def: Add missing newline at EOF. - -1998-10-13 Tom Tromey - - * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1. - (main): Likewise. Exit with SUCCESS_EXIT_CODE at end of - function. - Include and "system.h". - (disassemble_method): Undefine RET to avoid clash with - config/i386/i386.h. - -1998-10-13 Alexandre Petit-Bianco - - * decl.c (runtime_exception_type_node, error_exception_type_node): - New global variables. - (init_decl_processing): Initialized. - * expr.c (java_lang_expand_expr): Set caught exception type to - null if catch handler argument doesn't exit. - * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific - tree codes. - * java-tree.h (runtime_exception_type_node, - error_exception_type_node): Global variables declared. - (DECL_FUNCTION_THROWS): New macro. - (DECL_FUNCTION_BODY): Modified comment. - (DECL_SPECIFIC_COUNT): Likewise. - (struct lang_decl): New field throws_list. - (IS_UNCHECKED_EXPRESSION_P): New macro. - * lex.c (java_lex): Generate location information for THROW_TK. - * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P, - EXCEPTIONS_P): New macros. - (enum jdep_code): New value JDEP_EXCEPTION. - (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT, - BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR, - PATCH_METHOD_RETURN_ERROR): New macros. - (patch_method_invocation_stmt): Added new argument to prototype. - (patch_synchronized_statement, patch_throw_statement, - check_thrown_exceptions, check_thrown_exceptions_do, - purge_unchecked_exceptions, check_throws_clauses): New function - prototypes. - * parse.y Fixed typo in keyword section. - (throw:): Rule tagged . - (THROW_TK): Keyword tagged . - (method_header:): Last argument to call to method_header passed - from throws: rule. - (throws:, class_type_list:, throw_statement:, - synchronized_statement:, synchronized:): Defined actions. - (method_header): New local variable current. Register exceptions - from throws clause. - (java_complete_tree): Complete and verify exceptions from throws - clause. - (complete_class_report_errors): Error message on exceptions not - found - (java_check_regular_methods): Fixed typo. Shortcut on private - overriding methods. Changed error message on method - redefinition. Check for throws clause compatibility. - (check_throws_clauses): New function. - (java_check_abstract_methods): Use DECL_NAME for wfl or current - method. Changed error message on method redefinition. - (currently_caught_type_list): New static variable. - (java_complete_expand_methods): Purge unchecked exceptions from - throws clause list. Call PUSH_EXCEPTIONS before walk and - POP_EXCEPTIONS after. - (resolve_qualified_expression_name): Pass new argument as NULL to - patch_method_invocation_stmt. - (patch_method_invocation_stmt): New argument ref_decl. Invoke - PATCH_METHOD_RETURN_ERROR when returning with error. Reverse - argument list when appropriate. Use new argument if non null to - store selected method decl. - (patch_invoke): Convert if necessary args of builtin types before - forming CALL_EXPR. Argument list no longer reversed here. - (invocation_mode): Treat final methods as static methods. - (java_complete_tree): New cases for THROW_EXPR: and - SYNCHRONIZED_EXPR:. Check thrown exceptions when completing - function call. - (complete_function_arguments): No more RECORD_TYPE - conversion. Function parameter nodes no longer saved. - (valid_ref_assignconv_cast_p): Avoid handling null type. - (patch_binop): Fixed null constant reference handling. - (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and - BUILD_THROW macros. - (patch_try_statement): Fixed comments. Record caught types in - list, push the list, expand try block and pop the list. - (patch_synchronized_statement, patch_throw_statement, - check_thrown_exceptions, check_thrown_exceptions_do, - purge_unchecked_exceptions): New functions. - * typeck.c (lookup_argument_method): Allow WFL in place of method - DECL_NAME during method definition check - -1998-10-09 Tom Tromey - - * gjavah.c (decode_signature_piece): New function. - (print_c_decl): Use it. Added `name_override' argument. - (print_method_info): Use name_override argument to print_c_decl. - (seen_fields): Removed. - (print_field_info): Don't update seen_fields. - (struct method_name): New structure. - (method_name_list): New global. - (print_method_info): Add new method to list of methods. - (name_is_method_p): New function. - (print_field_info): If field name has same name as method, then - change field name. - (process_file): Parse methods before fields. - (field_pass): New global. - (HANDLE_END_FIELD): Take field_pass into account. - -1998-10-07 Kaveh R. Ghazi - - * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf. - (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs). - -1998-10-03 Anthony Green - - * jvspec.c: Fix bug in jvgenmain_spec patch. - -1998-10-02 Alexandre Petit-Bianco - - * Makefile.in (lang.o:): Install dependency on java-tree.def. - * decl.c (soft_exceptioninfo_call_node): New global variable. - (init_decl_processing): Fixed indentation. soft_badarrayindex_node - takes extra integer argument. soft_exceptioninfo_call_node - initialized. - * except.c (java_set_exception_lang_code): New function - (method_init_exceptions): Called here. - (prepare_eh_table_type): New function. - (expand_end_java_handler): Called here. - * expr.c (build_java_throw_out_of_bounds_exception): Now features - one argument. Modified generation of call to - soft_badarrayindex_node to use new argument. - (build_java_arrayaccess): Pass faulty index value to - build_java_throw_out_of_bounds_exception. - (generate_name): New function. - (java_lang_expand_expr): New local variables node, current, - has_finally_p. Expand TRY_EXPR node. - (process_jvm_instruction): Replace top of the stack with thrown - object reference when entering exception handler. - * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java - specific tree codes. - * java-tree.h (soft_exceptioninfo_call_node): Declaration of new - global. - (DECL_SPECIFIC_COUNT): New macro. - (prepare_eh_table_type, java_set_exception_lang_code, - generate_name): New function declarations. - (match_java_method): Declaration deleted. - (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New - macros. - * lex.c (TRY_TK, CATCH_TK): Generate location information. - * parse.h (redefinition_error, refine_accessible_methods_list, - can_cast_to_p): Function declaration removed. - (classitf_redefinition_error, variable_redefinition_error, - parse_jdk1_1_error, find_applicable_accessible_methods_list, - find_most_specific_methods_list, argument_types_convertible, - enter_a_block, valid_builtin_assignconv_identity_widening_p, - valid_cast_to_p, valid_method_invocation_conversion_p, - try_reference_assignconv, add_stmt_to_compound, - build_jump_to_finally, build_tree_list, patch_try_statement, - java_get_catch_block): New function declarations. - * parse.y (string_buffer_type): Global variable deleted. - (group_of_labels, catches, catch_clause, catch_clause_parameter, - finally): Rules tagged . - (TRY_TK, CATCH_TK): Token tagged . - (class_body_declaration:, class_member_declaration:, - formal_parameter:, explicit_constructor_invocation:, - interface_member_declaration:, constant_declaration:, - primary_no_new_array:, class_instance_creation_expression:, - array_creation_expression:): Issue error on unsuported JDK1.1 - features. - (try_statement:, catches:, finally:): Define actions. - (catch_clause_parameter): New rule. - (catch_clause:): Use new rule catch_clause_parameter. - (parse_jdk1_1_error): New function. - (redefinition_error): Renamed classitf_redefinition_error. - (variable_redefinition_error): New function. - (check_class_interface_creation): Call - classitf_redefinition_error. - (java_complete_tree): Added error message on JDEP_TYPE: case. - (complete_class_report_errors): Fixed indentation. - (declare_local_variables): Call variable_redefinition_error. - (source_end_java_method): Call java_set_exception_lang_code and - emit_handlers where appropriate. - (java_method_add_stmt): Call add_stmt_to_block. - (add_stmt_to_block): New function. - (lookup_method_invoke): Fixed outside comment. new local variable - candicates. Call find_applicable_accessible_methods_list and - find_most_specific_methods_list when searching for a - method. Modified error report to list possible candidates when - applicable. - (find_applicable_accessible_methods_list, - find_most_specific_methods_list, argument_types_convertible): New - function. - (refine_accessible_methods_list): Function deleted. - (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save - expr (if applicable) before calling patch_array_ref. - (build_expr_block): Fixed BLOCK_EXPR_BODY assignment. - (enter_block): Fixed comment. - (enter_a_block): New function. - (patch_assignment): Reorganized. Call try_reference_assignconv for - references. Call valid_cast_to_p instead of can_cast_to_p. - (try_reference_assignconv, - valid_builtin_assignconv_identity_widening_p): New functions. - (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL. - (valid_cast_to_p, valid_method_invocation_conversion_p): New - functions. - (build_string_concatenation): Don't resolve StringBuffer. - (patch_cast): Fixed inverted arguments. - (patch_array_ref): Code to save array expr deleted. Call - valid_cast_to_p instead of can_cast_to_p. - (generate_labeled_block): Call generate_name. - (build_jump_to_finally, build_try_statement, java_get_catch_block, - patch_try_statement): New functions. - * typeck.c (match_java_method): Function deleted. - -1998-10-02 Anthony Green - - * jvspec.c: jvgenmain_spec uses different temporary file names. - -1998-10-02 Anthony Green - - * jvspec.c (lang_specific_driver): Fail if user specifies - --main= when not linking. - -1998-09-28 Tom Tromey - - * class.c (make_class_data): Push value for `thread' field. - * decl.c (init_decl_processing): Added `thread' field to class. - - * class.c (add_field): Always make static fields externally - visible. - -1998-09-26 Anthony Green - - * expr.c (build_java_athrow, - build_java_throw_out_of_bounds_exception, expand_invoke, - build_newarray, expand_java_multianewarray, build_java_monitor): - Update comments to reflect _Jv_* function names. - -1998-09-25 Per Bothner - - * decl.c (complete_start_java_method): DECL_RESULT is always promoted. - * decl.c (start_java_method): Handle PROMOTE_PROTOTYPES target macro. - * parse.y (expand_start_java_method): Likewise. - -1998-09-24 Per Bothner - - * expr.c (pop_arguments): Handle PROMOTE_PROTOTYPES target macro. - - * class.c (push_class): IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE. - (add_field): No longer need to convert from RECORD_TYPE to pointer, - * expr.c: Remove no-longer-needed calls to promote_type. - * decl.c (give_name_to_locals): Liekwise. - * jcf-parse.c (get_class_constant): Compensate for new signatures. - * parse.y: Add/remove promote_type calls as appropriate. - * typeck.c (parse_signature_type): Returns POINTER_TYPE for objects. - (parse_signature_string): Likewise. - (build_java_array_type): Fix for now signature convenions. - - * lex.c (java_lex): Fix (from Alex) for JC1_LITE problem. - -1998-09-23 Tom Tromey - - * class.c (init_class_processing): libjava function renamed to - _Jv_RegisterClass. - -1998-09-22 Alexandre Petit-Bianco - - * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR. - * java-tree.def: Fixed DEFTREECODE third argument. - (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR, - CASE_EXPR, DEFAULT_EXPR): New tree codes for Java. - * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro. - (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, - JAVA_THIS_EXPR): Now replaced by tree code definitions. - (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR. - * lang.c (java_tree_code_type, java_tree_code_length, - java_tree_code_name): New arrays. - (lang_init): Append Java tree node definitions to Gcc ones. - * lex.c (expression_obstack): Declared as extern when JC1_LITE - defined. - (java_init_lex): Initialize wfl_append, wfl_string_buffer, - wfl_to_string. - (java_lex): Allow declaration of empty string constants. Retain - location information on CASE_TK and DEFAULT_TK. - * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P, - JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P): - Modified to be more robust. - (BUILD_APPEND, BUILD_STRING_BUFFER): New macros. - (build_new_invocation, try_builtin_assignconv, - patch_switch_statement, string_constant_concatenation, - build_string_concatenation, patch_string_cst, patch_string, - java_expand_switch): New function declarations. - * parse.y: Rules related to switch and EH tagged . - (label_id): Set to NULL_TREE - (wfl_string_buffer, wfl_append, wfl_to_string): New static global - tree nodes. - (this_or_super:): Fixed indentation. - (statement:, statement_nsi:, statement_without_trailing_substatement:, - statement_expression:): Removed call to RULE on all sub-rules. - (switch_expression:, switch_labels:): New rules. - (switch_statement:, switch_block:, switch_block_statement_groups:, - switch_block_statement_group:, switch_labels:, switch_label:): - Defined actions. - (throw_statement:, synchronized_statement:, try_statement:): - Defined temporary actions. - (class_instance_creation_expression:): Call - build_new_invocation. Fixed indentation. - (field_access): Fixed indentation. - (method_invocation): Likewise. - (make_qualified_primary): Use THIS_EXPR. - (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When - resolving from SUPER, set *type_found. - (qualify_ambiguous_name): Use NEW_CLASS_EXPR. - (java_complete_tree): Removed unused local variable `location'. Case - for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR, - NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling - on MODIFY_EXPR: and all binary operator tree code cases. Removed - STRING_CST: case. default: checks for patchable strings. - (complete_function_arguments): Transform string constant or - crafted StringBuffer if necessary. - (build_method_invocation): Fixed comments. - (build_new_invocation): New function. - (patch_assignment): Call try_builtin_assignconv to figure a valid - assignment conversion between builtin types. - (try_builtin_assignconv): New function. - (build_binop): Use URSHIFT_EXPR directly to call build. - (operator_string): Use UNARY_PLUS_EXPR. - (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation - operator. - (do_merge_string_cste, merge_string_cste, - string_constant_concatenation, build_string_concatenation, - patch_string, patch_string_cst): New function. - (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR. - (patch_unaryop): Likewise. New test of valid ++/-- operands. - (build_newarray_node): Use NEW_ARRAY_EXPR. - (build_this): Use THIS_EXPR. - (build_return): Enable debug information on return statement. - (build_if_else_statement): Likewise. - (complete_labeled_statement): Fixed related comment. - (build_loop_body): Fixed comment. - (build_bc_statement): Enable debug information on break/continue - statements. - (patch_bc_statement): Fixed typos. Handle SWITCH statement - context. - (patch_switch_statement, case_identity, java_expand_switch): New - functions. - -1998-09-21 Per Bothner - - * buffer.h (BUFFER_INIT): New macro. - * jcf-write.c (struct jcf_partial): New type. Put global stuff here. - Pass (struct jcf_partial *state) to most functions. - (jcf_block, jcf_relocation): New types. - Support labels, branches, conditionals, loops. - -1998-09-21 Tom Tromey - - * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined. - -1998-09-21 Per Bothner - - * decl.c (integer_type_node): Make it have INT_TYPE_SIZE. - * verify.c (verify_jvm_instructions): Use int_type_not (32 bits), - not integer_type_node (INT_TYPE_SIZ bits). - - * parse.y (patch_if_else_statement): Accept promoted_boolean_type_node. - - * jcf-reader.c (get_attribute): New HANDLE_EXCEPTION_TABLE hook. - * jcf-dump.c (print_exception_table): New function. - (disassemble_method): Better handling of wide instructions. - Make more robust for bad input. - -1998-09-30 Jeffrey A Law (law@cygnus.com) - - * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on - FreeBSD. - -1998-09-17 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too. - -1998-09-17 Tom Tromey - - * Makefile.in ($(PARSE_H)): Removed target. - -1998-09-17 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (JAVA_OBJS): Add memmove.o - (memmove.o): New target & rules. - -1998-09-15 Tom Tromey - - * expr.c (expand_invoke): Don't generate a call to the class init - code. - -1998-09-14 Jeffrey A Law (law@cygnus.com) - - * Makefile.in: Add many missing dependencies. - * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h - as appropriate. - * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise. - * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise. - -1998-09-11 Per Bothner - - * decl.c (complete_start_java_method): If method is static (and - not private) call _Jv_InitClass. - * expr.c (expand_invoke): Don't call build_class_init. - - * jvspec.c (jvgenmain_spec): Fix spec for generated .o file. - -1998-09-10 Jeffrey A Law (law@cygnus.com) - - * Make-lang.in (GCJ): Define before using. - -1998-09-09 Jeffrey A Law (law@cygnus.com) - - * gjavah.c (java_no_argument): Renamed from no_argument to avoid - losing due to namespace pollution in GNU getopt.h - -1998-09-09 Tom Tromey - - * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh. - (java.all.cross): Likewise. - (java.rest.encap): Likewise. - -1998-09-08 Jeffrey A Law (law@cygnus.com) - - * gjavah.c (print_class_decls): Fix thinko in arglist - * jcv-io.c (find_classfile): Similarly. - -1998-09-07 Jeffrey A Law (law@cygnus.com) - - * Makefile.in (INCLUDES): Update for recent toplevel gcc changes. - -1998-09-05 Tom Tromey - - * Make-lang.in (java.maintainer-clean): Don't remove parse.h. - (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h. - * Makefile.in (PARSE_C): New macro. - (PARSE_H): Likewise. - (PARSE_SCAN_C): Likewise. - ($(PARSE_C)): Target renamed from parse.c. - ($(PARSE_SCAN_C)): Target renamed from parse-scan.c. - (clean): Remove parse-scan.c as well. - (parse.o): Depend on $(PARSE_C). - -1998-09-05 Anthony Green - - * README, license.terms: Removed. - - * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c, - decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h, - javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c, - jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c, - keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c, - lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c, - verify.c, zextract.c, zipfile.h: Fixed copyright assignment, - and Java trademark attribution. - -1998-09-04 Tom Tromey - - * Makefile.in: Use gcjh, not gjavah. - * config-lang.in (stagestuff): Use gcjh, not gjavah. - * Make-lang.in: Changed gjavah to gcjh everywhere. - -1998-09-03 Per Bothner - - * gjavah.c: Support new -prepend -add -append flags. - (print_method_info): Method is not virtual if class is final. - -1998-09-03 Alexandre Petit-Bianco - - * jv-scan.c: Fixed copyright assignment. - * keyword.gperf: Likewise. - * keyword.h: Likewise. - * lex.c: Fixed copyright assignment. - (java_lex): Push unicode back when parsing '<'. - * lex.h: Fixed copyright assignment. - * parse-scan.y: Likewise. - * parse.h: Fixed copyright assignment. - (build_debugable_stmt, complete_for_loop): New function prototypes. - * parse.y: Fixed copyright assignment. - (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be - size_zero_node when completing a loop with no exit condition. - (for_statement_nsi:): Define action. - (for_init:, for_update:): Return size_zero_node when empty. - (declare_local_variables): Call build_debugable_stmt. - (build_debugable_stmt): New function. - (build_loop_body): Build debugable statement around loop - condition part. - (complete_loop_body): Take into account the debugable statement - around the EXIT_EXPR. - (complete_loop_body): New function. - (patch_exit_expr): Fixed condition inversion. - -1998-09-02 Tom Tromey - - * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct - name of thread define. - * jvspec.c (THREAD_NAME): New macro. - (GCLIB): Likewise. - (THREADLIB): Likewise. - (lang_specific_driver): Recognize attempt to link with thread - library or gc library. Recognize -ljava on command line so it - isn't linked against more than once. - -1998-09-02 Alexandre Petit-Bianco - - * parse-scan.y (report_main_declaration): Name of the class - containing `main' can be a qualified name. - -1998-08-31 Tom Tromey - - * config-lang.in: Changed gjavac to gjc everywhere. - * Make-lang.in: Changed gjavac to gjc everywhere. - -1998-08-27 Alexandre Petit-Bianco - - * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable. - (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS - and install the files. - * Makefile.in (JAVA_OBJS_LITE): New variable. - (compiler:): Now include jv-scan as a dependency. - (../jv-scan$(exeext), parse-scan.c): New targets. - (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before. - * config-lang.in (compilers): Removed gcj, gjavah from the list. - * jcf-parse.c (parse_source_file): Call java_layout_classes and - check for errors even if parse_only. - * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is - defined. - (yylex): New function. Uses java_lex body. - (java_lex): Removed commented out statement. Remove local variable - literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where - appropriate. Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE, - DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF, - SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST - if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use - SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER - where appropriate. - (java_lex_error): Empty if JC1_LITE is defined. - (java_get_line_col): Return 0 if JC1_LITE is defined. - * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, - SET_MODIFIER_CTX): Moved into the section containing the macros - conditionally defined by JC1_LITE. - (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN - argument if JC1_LITE is defined. - (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF, - REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE - is defined. - (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF, - FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION, - SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set - to different values according to JC1_LITE. - * parse.h (int_fits_type_p, stabilize_reference): Prototype not - declared if JC1_LITE set. - (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not - defined if JC1_LITE not set. - (struct parser_ctx): Reorganized and skip the jc1 front end part - if JC1_LITE set. - (java_layout_classes): New function definition. - (java_push_parser_context, java_init_lex, yyparse, yylex, - yyerror): Prototype always declared. All other static function - prototypes declared only if JC1_LITE is not set. - * parse.y (yyparse, yylex, yyerror): No longer declared here. Now - declared in parse.h. - (java_layout_classes): New function. - (java_complete_expand_methods): No longer layout the class here. - * parse-scan.y: New file. - * jv-scan.c: New file. - -1998-08-25 Tom Tromey - - * gjavah.c (main): Handle -friend option. - (friend_specs): New global. - (generate_access): Handle friend_specs. - (process_file): Likewise. - (MAX_FRIENDS): New macro. - (friend_count): New global. - (print_cxx_classname): Added `prefix' argument. Ignore arrays. - Changed all callers. - -1998-08-24 Per Bothner - - * jcf-dump.c (process_class): Move JCF_FINISH use to main, - (main): Handle processing all the entries of a named .zip archive. - * jcf-io.c (jcf_trim_old_input): New function. - * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le): New macros. - -1998-08-24 Per Bothner - - * lang.c (flag_assume_compiled): Make default be on. - -1998-08-21 Per Bothner - - * jcf-dump.c: Add bunches of flags to control output more. - (process_class): New function; support printing more than one class. - (main): Support new --print-main and --javap flags. - * jcf-reader.c (IGNORE_ATTRIBUTE): New hook. - * jcf.h (CPOOL_INDEX_IN_RANGE): New macro. - -1998-08-20 Per Bothner - - Change mangling of dispatch table to match C++ vtable (w/thunks). - * class.c (build_dtable_decl), java-tree.h: New function. - (make_class_data): Call it. - * decl.c (init_decl_processing): Likewise. - -1998-08-19 Warren Levy - - * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not - soft_anewarray; adjust args passed. - * expr.c (build_anewarray): Adjust args for soft_anewarray_node to - match _Jv_NewObjectArray. - -1998-08-19 Alexandre Petit-Bianco - - * decl.c (push_labeled_block, pop_labeled_block): New functions. - * expr.c (loopup_label): Call create_label_decl. - (create_label_decl): New function. - (java_lang_expand_expr): Call expand_start_bindings with argument - set to zero. - * java-tree.h Added space after PROTO in function declarations - when necessary. - (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros. - (create_label_decl, push_labeled_block): New function - declarations. - * lex.c (label_id): Initialize. - (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final - switch. - * parse.h Added space after PROTO in function declarations when - necessary. - (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK, - LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY, - LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P, - PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New - macros. - (struct parser_ctxt): New fields current_loop, - current_labeled_block. - (build_if_else_statement, patch_if_else_statement, - add_stmt_to_compound, patch_exit_expr, build_labeled_block, - generate_labeled_block, complete_labeled_statement, - build_bc_statement, patch_bc_statement, patch_loop_statement, - build_new_loop, build_loop_body, complete_loop_body): New function - declarations. - * parse.y (java_warning_count): New global variable. - (label_id): New static variable. - (BREAK_TK, CONTINUE_TK): Token tagged . - (block:): Return size_zero_node when block is empty. - (empty_statement:): Return size_zero_node. - (statement:): Implement supplemental action when for_statement: is - reduced. - (label_decl:): New rule. - (labeled_statement:): Rewritten using label_decl. Actions - implemented. - (labeled_statement_nsi:): Likewise. - (if_then_statement): Actions implemented. - (while_expression): New rule. - (while_statement:): Rewritten using while_expression. Actions - implemented. - (while_statement_nsi:): Likewise. - (do_statement_begin:): New rule. - (do_statement:): Rewritten using do_statement_begin. Actions - implemented. - (for_statement:): Rewritten using for_begin. Actions implemented. - (for_statement_nsi:): Likewise. - (for_header:, for_begin:): New rules. - (for_init:): Actions implemented. - (statement_expression_list:, break_statement:, - continue_statement:): Likewise. - (yyerror): Count number of issued warning(s). - (java_report_errors): Report error(s) and/or warning(s). - (java_complete_class): Use build_java_argument_signature to - recompute completed method signature. - (java_check_regular_methods): New locals method_wfl and aflags. - Use method_wfl instead of lookup_cl during error reports. Fixed - indentation and modified some error messages. Use - lang_printable_name in method instead of the DECL_NAME. New code - to issue warnings on methods not overriding corresponding methods - private to a different package. - (java_method_add_stmt): Call add_stmt_to_compound. - (add_stmt_to_compound): New function. - (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, - LOOP_EXPR, EXIT_EXPR and COND_EXPR. - (build_if_else_statement, patch_if_else_statement, - build_labeled_block, generate_labeled_block, - complete_labeled_statement, build_new_loop, build_loop_body, - complete_loop_body, patch_loop_statement, build_bc_statement, - patch_bc_statement, patch_exit_expr): New functions. - * typeck.c (build_java_signature): Build argument signature before - enclosing it in between parenthesis. - -1998-08-17 Warren Levy - - * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in - (JAVA_OBJS): Added reminder comment - -1998-08-13 Nick Clifton - - * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to - be interpreted as a long long. - -1998-08-13 Warren Levy - - * decl.c (init_decl_processing): Use _Jv_InitClass, not - soft_initialise_class. Use _Jv_NewMultiArray, not - soft_multianewarray. Use _Jv_ThrowBadArrayIndex, not - soft_badarrayindex. Use _Jv_CheckCast, not soft_checkcast. Use - _Jv_CheckArrayStore, not soft_checkarraystore. Use - _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod. - -1998-08-12 Per Bothner - - * decl.c, java-tree.h (this_identifier_node, super_identifier_node, - length_identifier_node): New global tree node constants. - * parse.y (kw_super, kw_this, kw_length): Removed globals. - Replace uses by super_identifier_node etc. - * lex.c (kw_super, kw_this, kw_length): Don't initialize. - - * parse.y (resolve_field_access): Don't special-case ".length" if - flag_emit_class_files. - (patch_array_ref): Leave as ARRAY_REF if flag_emit_class_files. - * jcf-write.c (generate_bytecode_insns): Handle ARRAY_REF opcode - and ARRAY.length. - -1998-08-11 Per Bothner - - * decl.c (init_decl_processing): Remove unused method_type_node fields. - * class.c (make_method_value): Remove init for removed fields. - - * class.c (layout_class): Use build_java_argument_signature. - * java-tree.h (TYPE_ARGUMENT_SIGNATURE): New macro. - - * typeck.c (push_java_argument_signature): Removed. Merged into ... - (build_java_argument_signature): Use TYPE_ARGUMENT_SIGNATURE cache. - (build_java_signature): Don't use push_java_argument_signature. - - * typeck.c (lookup_argument_method): New function. - * parse.y (java_check_regular_methods): Use lookup_argument_method - instead of lookup_java_method2 followed by lookup_java_method. - - * parse.y (check_method_redefinition): Minor optimization. - - * jcf-write.c (generate_bytecode_insns): Handle RETURN_EXPR, - MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR. - -1998-08-10 Tom Tromey - - * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or - c-pragma.o. - - * gjavah.c (java_float_finite): Use K&R-style definition. - (java_double_finite): Likewise. - (generate_access): Now returns void. Changed all callers. - (last_access_generated): Removed. - (process_file): Only make a single pass over the .class file. - -1998-07-29 Per Bothner - - * class.c (get_dispatch_table): Add extra dummy vtable entry, - for compatibility for G++ (with -fvtable-thunks). - * expr.c (build_invokevirtual): Add one for extra dummy vtable entry. - - * gjavah.c (process_file): Use public inheritance for super-class. - -1998-07-29 Alexandre Petit-Bianco - - * lex.c (java_init_lex): Initialize ctxp->package. - * parse.h (struct parser_ctxt): package and package_len replaced - by tree package, an identifier node. Field method_decl_list is - gone. Fixed comments. - (lookup_field_wrapper, merge_qualified_name, not_accessible, - class_in_current_package): New function prototypes. - * parse.y (array_type:): Set class loaded flag on primitive type - arrays. - (package_declaration:): Assign ctxp->package to the - identifier node. - (method_invocation:): Handle invocation of method qualified by - `super'. - (single_type_import_declaration:): Removed ambiguity check. - (java_pop_parser_context): New local variable `next'. Reset and - set IMPORT_CLASSFILE_NAME flags on current and previous import - list. - (java_accstring_lookup): Use new local macro COPY_RETURN. - (lookup_field_wrapper): New function. - (parser_qualified_classname): Use merge_qualified_name. - (parser_check_super_interface): Broaden error message. - (do_resolve_class): Check for qualified class name in the current - compilation unit if appropriate. - (process_imports): Check for already defined classes. - (check_pkg_class_access): Got rid of call to - get_access_flags_from_decl. - (java_complete_expand_methods): Call safe_layout_class based on - the current class size. - (make_qualified_primary): Build a WFL qualification on primary if - none exists. - (merge_qualified_name): New function. - (make_qualified_name): Use merge_qualified_name. - (resolve_expression_name): Use safe_lookup_field. - (resolve_field_access): Got rid of call to get_access_flags_from_decl. - (resolve_qualified_expression_name): Likewise. Check on resolved - element accessibility. - (not_accessible_p, class_in_current_package): New functions. - (maybe_access_field): Got rid of call to get_access_flags_from_decl. - (patch_method_invocation_stmt): Merged common pieces. Check - accessibility of invoked method. - (check_for_static_method_reference): Add returned type in error - message. - (invocation_mode): Get rid of bogus check on PRIVATE methods. - (refine_accessible_methods_list): Merged two conditions in test. - (java_complete_class): Sanity check on stabilize_ref gone. - * zextract.c (read_zip_archive): Cast lseek second argument to long. - -1998-07-28 Per Bothner - - * class.c (hashUtf8String): Fix - use new JavaSoft specification. - -1998-07-24 Tom Tromey - - * gjavah.c (F_NAN): Removed. - (F_NAN_MASK): New macro. - (F_POSITIVE_INFINITY): Removed. - (F_NEGATIVE_INFINITY): Likewise. - (java_float_finite): Rewrote. - (D_NAN_MASK): Renamed. - (java_double_finite): Rewrote. - (D_POSITIVE_INFINITY): Removed. - (D_NEGATIVE_INFINITY): Likewise. - - * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float] - If verbose, print underlying representation of value in hex. - -1998-07-24 Per Bothner - - * buffer.h, buffer.c: New files. - * Makefile.in (JAVA_OBJS): Add buffer.o. - - Support locals variables and writing their debug entries to .class. - * jcf-write.c: Simplify some by user new buffer type. - (vode_buffer_grow): Removed. - (struct localvar_info): New type. - (localsvars, localvartable): New buffers. - (localvar_alloc, localvar_free): New functions. - (generate_bytecode_insns): Handle local variables. - (generate_classfile): Write LocalVariableTable attribute. - -1998-07-24 Alexandre Petit-Bianco - - * jcf-io.c (open_in_zip): Check the zipfile magic number. - * zipfile.h (ZIPMAGIC): New macro. - -1998-07-24 Tom Tromey - - * Makefile.in (gjavah.o): Updated dependencies. - (jcf-dump.o): Likewise. - (all.indirect): Use ../gjavah. - (../gjavah$(exeext)): Likewise. - (clean): Don't remove gjavah. - (clean): Remove parse.c, not java/parse.c. - * Make-lang.in (java): Added gjavah. - (gjavah$(exeext)): New target. - (GJAVAH_SOURCES): New macro. - (java.all.build): Added gjavah. - (java.all.cross): Likewise. - (java.rest.encap): Likewise. - * config-lang.in (compilers, stagestuff): Added gjavah. - -1998-07-23 Tom Tromey - - * gjavah.c (java_float_finite): New function. - (java_double_finite): Likewise. - (F_POSITIVE_INFINITY): New macro. - (F_NEGATIVE_INFINITY): Likewise. - (F_NAN): Likewise. - (D_POSITIVE_INFINITY): Likewise. - (D_NEGATIVE_INFINITY): Likewise. - (D_NAN): Likewise. - (print_field_info): Use java_float_finite and java_double_finite. - -1998-07-23 Per Bothner - - * parse.y (method_header): Name "this" implicit argument. - -1998-07-22 Per Bothner - - * jcf-write.c: Write out LineNumberTable attribute in .class file. - (linenumber_buffer, linenumber_ptr, linenumber_limit): New statics. - (put_linenumber): New function. - (generate_bytecode_insns, generate_classfile): Write line numbers. - -1998-07-22 Alexandre Petit-Bianco - - * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P. - (lookup_name, build_known_method_ref, build_class_init, - build_invokevirtual, invoke_build_dtable, match_java_method, - build_field_ref, pushdecl_force_head, build_java_binop, - binary_numeric_promotion, build_decl_no_layout, - build_java_arrayaccess, build_newarray, build_anewarray, - build_java_array_length_access, build_java_arraynull_check): New - extern function prototypes. - (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, - JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in - java-tree.h. - * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref - to NULL - * jcf.h (jcf_out_of_synch): New extern function prototype. - * parse.h: Static/global function implemented in parse.y - prototyped and declarations moved at the end of the file. - (DECL_P): Check that the argument isn't null. - (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, - JAVA_THIS_EXPR): No longer defined here. See java-tree.h - (QUAL_DECL_TYPE): New macro. - (PARAMS): Macro definition removed. - * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS. - (return_statement:): Call build_return. - (field_access:): Call make_qualified_primary in sub rule. - (method_invocation:): Build method invocation and call - make_qualified_primary when processing primaries. - (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling - get_type_from_signature. - (java_check_regular_method): Extra integer 0 argument when calling - lookup_java_method2. - (lookup_java_interface_method2): Extra method DECL argument when - calling lookup_java_interface_method2. - (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created - COMPOUND_EXPR node. - (java_complete_expand_method): Layout current class iff not - already done. Don't process interface's methods. - (java_complete_expand_method): Use super class only if it - exists. Use current class otherwise. - (make_qualified_primary): New function. - (resolve_expression_name): Process qualified expression or - expression from primary the same way. - (resolve_expression_name): Two last arguments to - resolve_field_access are now NULL_TREEs. - (resolve_field_access): New variable is_static. Local field must - be DECLs. is_static computed on field DECLs only. Append code in - where_found to the field access if necessary. Use QUAL_DECL_TYPE - to initialize field_type. - (resolve_qualified_expression_name): New local variable, - previous_call_static and is_static. Handle primaries with function - calls, casts, array references and `this'. `super' now handled as - `(super_class)this'. Use is_static to clarify boolean expressions. - Added code to handle case where a proper handle is required to - access a field. Use QUAL_DECL_TYPE where applicable. - (maybe_access_field): New function. - (patch_method_invocation_stmt): New arguments primary, where, - is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P - deleted. Use `where' as a type to search from if specified. Check - for static method reference where forbidden. Append primary or - current_this to the argument list if not calling constructor nor - static methods. - (check_for_static_method_reference): New function. - (patch_invoke): Layout the class on which new is done if - necessary. - (lookup_method_invoke): Changed format to report errors on - methods. - (qualify_ambiguous_name): New local variable this_found. Now - handle things from primaries. Method call are considered - expression names. - (identical_subpath_p): NULL_TREE arguments to breakdown_qualified - changed into NULLs. - (not_initialized_as_it_should_p): Comply with the new DECL_P. - (java_complete_tree): New case fo RETURN_EXPR. Process function - call arguments in separate function. - (complete_function_arguments): New function. - (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P - anymore. - (patch_assignment): Take the return function slot into account as - a RHS. Distinguish assignment from a return. - (valid_ref_assignconv_cast_p): Use build_java_argument_signature - when checking methods in interfaces. - (resolve_type_during_patch): NULL argument to unresolve_type_p - instead of NULL_TREE. - (patch_newarray): Fixed typo in comment. - (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL. - (build_return, patch_return): New functions. - * typeck.c (lookup_java_constructor): Fixed typo in comment. - -1998-07-21 Per Bothner - - * constants.c (find_name_and_type_constant, find_fieldref_index, - find_methodref_index): New methods. - * expr.c (build_invoke_non_interface): If flag_emit_class_files, - just return given method. Also, rename to build_known_method_ref. - (expand_invoke): Rename call to build_invoke_non_interface. - * java-tree.h, parse.h: Update prototype. - * parse.y, decl.c, jcf-parse.c: Suppress calls to back-end functions - (such as expand_expr_stmt) if flag_emit_class_files. - * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP, - STACK_TARGET, IGNORE_TARGET): New macros. - (code_buffer, code_ptr, code_limit, code_S, code_SP_max): New globals. - (generate_bytecode_insn): New function to generate method's bytecode. - (generate_classfile): Node generate Code attribute for a method. - (code_buffer_grow, push_constant1, push_constant2, push_int_const, - push_long_const, field_op, adjust_typed_op, maybe_wide): - New functions used by generate_bytecode_insn. - - * typeck.c (signature_include_return): Remove variable. - (push_java_argument_signature, build_java_argument_signature): New. - (build_java_signature): Use push_java_argument_signature. - * parse.y: Use build_java_argument_signature instead of fiddling - with signature_include_return. - -1998-07-17 Tom Tromey - - * gjavah.c (print_c_decl): Always generate JArray<>* for array - types. - - * Makefile.in (all.indirect): Added gjavah$(exeext). - (gjavah$(exeext)): Added $(exeext). - (clean): Likewise. - -1998-07-16 Alexandre Petit-Bianco - - * class.c (layout_class): Call to java_layout_parsed_class replace - by safe_layout_class. - * expr.c (build_java_array_length_access): Removed static storage - class in the function definition. - (build_java_arraynull_check): Likewise. - Also fixed typos in two comments. - * lex.c (java_init_lex): Initialize static global kw_length. - (java_lex): Use BUILD_OPERATOR on RETURN_TK. - * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to - java_lex_error. - (JAVA_INTEGRAL_RANGE_ERROR): Likewise. - * parse.h (resolve_no_layout): New static function declaration. - (get_identifier_in_static): Declaration removed. - (java_layout_parsed_class): Function name declaration changed to - safe_layout_class. - (build_newarray_node, patch_newarray, resolve_type_during_patch, - not_initialized_as_it_should_p, build_this): New static function - declarations. - (pushdecl_force_head, build_java_binop, int_fits_type_p, - binary_numeric_promotion, stabilize_reference, - build_decl_no_layout, build_java_arrayaccess): Extern function - declarations moved into their own section. - (build_newarray, build_anewarray, build_java_array_length_access, - build_java_arraynull_check): New extern function declarations. - (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR. - (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New - fake tree codes. - (CALL_CONSTRUCTOR_P): New macro. - * parse.y (kw_length): New static global tree node. - (return_statement): Tagged . - (RETURN_TK): Tagged . - (variable_declarator_id:): Build variable declaration with an - empty initialization value if a syntax error was found in the - initialization part of the variable declaration. - (statement_without_trailing_substatement:): return_statement: now - uses the default rule. - (return_statement:): Temporarily fixed to return NULL_TREE. - (primary_no_new_array:): Call build_this when THIS_TK was parsed. - (class_instance_creation_expression:): Class creation rules now - call build_method_invocation upon reduction. - (array_creation_expression:): Rules call build_newarray_node upon - reduction. - (dim_exprs:): Build a list of dimension expressions. - (dim_expr:): Store location of the OSB_TK in the dimension - expression node. - (method_invocation:): Added a new error rule. - (build_unresolved_array_type): WFL argument may also be an array - on a primitive type. Name of the argument changed to reflect this. - (method_declarator): Insert argument type at the beginning of the - argument type list and later reverse the list. - (unresolved_type_p): Argument 'returned' may be optionally - NULL_TREE. - (java_layout_class_from_source): Function renamed - safe_layout_class. - (resolve_and_layout): Now call resolve_no_layout and - safe_layout_class. - (resolve_no_layout): New function. - (purify_type_name): New function. - (complete_class_report_errors): Call purify_type_name during error - report on a type not found. - (process_imports): error_found local variable doesn't need to be - initialized to zero. - (declare_local_variables): New local type_wfl. Fixed typo in error - message. type_wfl assigned to unresolved type and used to register - incomplete type. Build a WFL around the variable initialization - statement so that debug info can be generated on it. - (source_start_java_method): Reverse argument list after they've - been processed. - (current_this): New static global variable. - (java_complete_expand_methods): Set current_this when appropriate. - (resolve_expression_name): Build correct static and non static - field access bearing a simple name. - (resolve_field_access): Resolve the length field of arrays. Handle - f.m() cases. - (patch_method_invocation_stmt): Set the type of the method - invocation to error_mark_node. This value is later overridden by a - valid type, if any. Don't handle qualified constructor invocation - as qualified method invocation. Call lookup_method_invoke with its - new flag. It's no longer necessary to access the selected method - as the value of a tree list. Handle constructor invocation. - (patch_invoke): Reverse argument list when invoking non interface - methods. Insert call to new as the first argument of the - constructor. - (invocation_mode): Return a INVOKE_STATIC is the invoked method is - defined within a final class. Return INVOKE_STATIC if the invoked - method is a constructor. - (lookup_method_invoke): New lc argument is a flag to indicate a - constructor lookup. Now handle constructor lookup. Choose the most - specific method in case several were matching the invocation - requirements. Return a method decl instead of a tree list featuring - one single method decl element. - (refine_accessible_methods_list): New lc flag argument to - indicate that a constructor is being looked up. - (not_initialized_as_it_should_p): New function. - (java_complete_tree): Now process fake tree codes - JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call - save_expr on resolved function call arguments. Case on - UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR. - (patch_assignment): LHS can be a field access expression. When - dealing with reference, lhs_type is the promoted type of the - rhs_type, not the RHS. Use not_initialized_as_it_should_p where - applicable. - (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR. - (patch_binop): Use not_initialized_as_it_should_p where - applicable. - (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR. - (patch_unaryop): Likewise. And use not_initialized_as_it_should_p - where applicable. - (resolve_type_during_patch): New function. - (patch_cast): Call resolve_type_during_patch to resolve type and - report error accordingly. - (patch_array_ref): Use not_initialized_as_it_should_p where - applicable. Array base expression is saved before being - used. Promote the type of an array elements if it contains non - builtin types. - (build_newarray_node, patch_newarray, build_this): New functions. - -1998-07-16 Tom Tromey - - * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't - increment it in `for' statement. - (print_field_info): If number is inf or nan, don't print it. - (print_method_info): If method name is `delete', just ignore it. - (print_c_decl): Special-case jstringArray. - - * gjavah.c (help): New function. - (no_argument): New function. - (usage): Changed text. - (main): Rewrote argument handling. Now handles -v, --help, - --version. - (version): New function. - (found_error): New global. - (main): Return found_error. - (generate_access): Set found_error. - (print_c_decl): Likewise. - -1998-07-15 Tom Tromey - - * gjavah.c (print_c_decl): Don't print "," when examining field. - Skip type name when looking at "[L" types. - (process_file): Now static. - (generate_access): Now returns int. - (last_access_generated): New global. - (process_file): Clear last_access_generated; make multiple passes - over the class. - (print_field_info): Just return if generate_access returns true. - (print_method_info): Likewise. Also, allow functions to - pass through. - (print_c_decl): Added is_init argument. Print constructors - properly. - (print_cxx_classname): Use UTF8_GET to extract characters from - string. - (print_base_classname): New function. - (print_class_decls): New function. - (process_file): Use it. - (utf8_cmp): New function. - -1998-07-13 Nick Clifton - - * lang-options.h: Format changed to match changes in gcc/toplev.c - to implement a --help option. - -1998-07-10 Brendan Kehoe - - * decl.c (init_decl_processing): Revert change to dtable_type. - -1998-07-09 Per Bothner - - * java-tree.h (CLASS_P): Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4. - -1998-07-08 Brendan Kehoe - - * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type. - - * lang.c (lang_init): Default flag_exceptions to 1, without - checking to see if it's 2 first. - -1998-07-08 Jeffrey A Law (law@cygnus.com) - - * constants.c: Include "system.h". - * decl.c: Likewise. - * lang.c (flag_new_exceptions): Get via extern now. - (lang_init_options): New functions. Turn on flag_new_exceptions. - -1998-07-07 Alexandre Petit-Bianco - - * lex.c (java_lex): Return 0 when we see an invalid character in - the input. - - * lex.c (java_read_char): Specify extra argument when calling - java_lex_error. - (java_read_unicode, java_parse_end_comment, - java_parse_escape_sequence): Likewise, - (java_lex): Specify extra argument when calling - java_lex_error. Test that IDs are beginning with a legal character - for IDs. Handle invalid characters with an error message and a - call to java_lex_error. - (java_lex_error): Adjust column position by new argument - `forward'. Issue an error even if in the middle of reporting an - other error. - -1998-07-07 Brendan Kehoe - - * jcf-io.c (find_class): Zero out BUFFER before we use it, since - we don't explicitly put a null pointer when we're copying it. - -1998-07-07 Tom Tromey - - * gjavah.c (print_cxx_classname): New function. - (super_class_name): Likewise. - (print_super_fields): Removed. - (in_super): Removed. - (print_field_info): Never generate #defines. - (print_c_decl): Changed generated types to match JNI. No longer - print class name before method name. - (print_method_info): Print "static" before static methods. - Print "virtual" before non-final methods. - (usage): Use exit(1), not exit(-1). - (main): Likewise. - (print_field_info): Use %.17g to print a double. - (last_access): New globals. - (process_file): Initialize last_access. - (usage): Now static. - (ACC_VISIBILITY): New define. - (generate_access): New function. - (print_field_info): Call it. - (print_method_info): Likewise. Also, generate information for all - methods, not just native methods. Return void. - (print_c_decl): Return void. - (print_field_info): Return void. - -1998-07-02 Alexandre Petit-Bianco - - * Makefile.in (JAVABISONFLAGS): Specific flag for bison when - processing the jc1 grammar file. Prefix bison functions and - variables with java_. - (parse.c): Dependencies on parse.h and lex.h - * expr.c (build_java_arrayaccess): Function now global. - * java-tree.h: Comment reorganized to carry on previous - classification effort. - (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P, - RESOLVE_TYPE_NAME_P): New flags on WFLs. - * jcf-parse.c (parse_source_file): java_parse_source_file renamed - java_parse (new prefix java_ generated by bison). - (java_layout_parsed_class, java_register_parsed_class): Function - call removed. - (yyparse): Removed unnecessary call to init_outgoing_cpool. - * lex.c (static tree wfl_op): Variable deleted. - (java_init_lex): Initialize kw_super and kw_this. Initialize more - ctxp fields to NULL_TREE. - (java_lex): No longer create WFL for operators. Filename caching - mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings - created as STRING_CST and later expanded. Removed extra argument - to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS - and SUPER. - (build_wfl_node): Removed code in comments. - * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but - store token and location data in the current bison token. - * parse.h: Removed pre-processor based symbol prefixes hack. Moved - static/extern function declaration at the beginning of the file. - (struct qualification): Data structure definition deleted. - (RESOLVE_CHAIN_REMAINDER): Macro definition deleted. - (qualify_ambiguous_name): Function declaration modified. Function - now returns nothing. - (build_array_ref, patch_array_ref, make_qualified_name, - resolve_qualified_expression_name, maybe_generate_clinit, - resolve_field_access): New static function declarations. - (build_java_arrayaccess): New extern function declaration. - (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted. - (CALL_EXPR_PRIMARY): Macro deleted. - (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros. - (struct parser_ctxt): Field initialized_final - removed. non_static_initialized, static_initialized: New fields. - * parse.y (static tree kw_super, static tree kw_this): New global - static. - (%union): tree wfl field of operator member replaced by int - location. WFLs are non longer created for operators. - (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged . - (qualified_name:): Now calls make_qualified_name to build the - identifier. - (type_declaration:): Consider generating when class - parsing completed. - (variable_declarator:): Directly build an assignment node when the - variable is initialized when declared. - (this_or_super:): Build a WFL and set current location when THIS - or SUPER are parsed. - (expression_statement:): Wrap statement around a WFL. - (primary_no_new_array:): Fixed typo. Changed value returned by - THIS_TK because of its new type (temporary). - (dim_exprs:): Temporary fix because of OSB_TK's new type. - (field_access:): Build qualified name with SUPER. - (method_invocation:): Fixed returned value because of SUPER's new - type. - (array_access:): Use OSB_TK location information. - (post_increment_expression:, post_decrement_expression:, - unary_expression:, pre_increment_expression:, - pre_decrement_expression:, unary_expression_not_plus_minus:, - cast_expression:, multiplicative_expression:, - additive_expression:, shift_expression:, relational_expression:, - equality_expression:, and_expression:, exclusive_or_expression:, - inclusive_or_expression:, conditional_and_expression:, - conditional_or_expression:, assignment:): Use new location/token - information available on operators. - (create_class): Set super_decl_type to NULL_TREE when processing - java.lang.Object. - (register_fields): Field initialization is now a MODIFY_EXPR - node. Chain initialization code to the matching lists (according - to the field declaration modifiers). - (maybe_generate_clinit): New function. - (method_header): Don't set method's DECL_NAME to a WFL when adding - methods to java.lang.Object. - (resolve_and_layout): Now can return NULL_TREE if the type - resolution fails. Otherwise, return the class DECL instead of its - TYPE. - (check_method_redefinition): Don't patch method DECL_NAME if it - belongs to java.lang.Object. - (process_imports): Simply assign error_found to the value returned - by check_pkg_class_access. - (declare_local_variables): Don't use their init statements (if - any) when parsing error were previously found. Reuse MODIFY_EXPR - build during parsing as an init statement. - (java_method_add_stmt): Now return the current method body. - (java_layout_parsed_class, java_register_parsed_class): Functions - removed. - (java_complete_expand_methods): Initialize the constant pool on a - per class basis. Layout the classes before expanding their method - bodies. Don't try expand artificial constructor code if error were - found. Make the classes data and register them if no error were - found. - (java_complete_expand_method): Retrieve an artificial constructor - argument list before entering its body. Assign the top block to - the artificial constructor function body and set types of declared - blocks and compound statements to void. Walk method body if not an - artificial constructor. - (make_qualified_name, cut_identifier_in_qualified): New functions. - (resolve_expression_name): Fixed comments. Save/restore the - current class CLASS_LOADED_P flag value. Build non qualified - static field access and handle qualified expression names. - (resolve_field_access, resolve_qualified_expression_name): New - functions. - (patch_method_invocation_stmt): Use the new expression resolution - scheme, calling resolve_field_access when the function call is - resolved as an expression. - (qualify_ambiguous_name): Function rewritten to work on qualified - expression produced by make_qualified_name. - (java_complete_tree): Promote type when function's argument are - RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch - the assignment to discover further errors if RHS is a expression - name that fails to evaluate. Declare LHS initialized even though - the assignment failed. Don't use the location variable and removed - extra argument in patch function calls. Now handle the ARRAY_REF - case and build internal string representation when STRING_CSTs are - walked. - (build_method_invocation): Don't wrap function call around a WFL. - (build_assignment): Likewise. Use the operator location - information. - (patch_assignment): Handle array access LHSs. Handle error - provenance, resulting in a better error report. - (build_binop): Use op_location from operator as binop location - information. - (build_unaryop, build_incdec, build_cast): Likewise. - (patch_binop): Extract location information from the node. Fixed - typo in error message. - (patch_unary_op): Extract location information from the node. - (build_array_ref, patch_array_ref): New functions. - -1998-07-01 Tom Tromey - - * expr.c (expand_java_INSTANCEOF): Changed calling convention to - match _Jv_IsInstanceOf. - * decl.c (init_decl_processing): Use _Jv_NewArray, not - soft_newarray. Use _Jv_IsInstanceOf, not soft_instanceof. - -1998-06-30 Tom Tromey - - * decl.c (init_decl_processing): Functions are now named - _Jv_MonitorEnter and _Jv_MonitorExit, and return jint. - -1998-06-29 Per Bothner - - * java-tree.h (load_class): Add prototype. - * class.c (is_compiled_class): Add missing arg to load_class. - * expr.c (expand_java_NEW): Call load_class. - * parse.y (process_import): Removed bogus use of void return value. - -1998-06-25 Per Bothner - - * decl.c, java-tree.h (soft_athrow_node): Renamed to soft_node. - Function name is "_Jv_Throw" instead of "soft_athrow". - * decl.c, java-tree.h (soft_new_node): Renamed to alloc_object_node. - Function name is "_Jv_AllocObject" instead of "soft_new". - Takes an extra parameter (object size). - * expr.c: Update calls. - -1998-06-24 Per Bothner - - * lex.c (java_get_line_col): Handle end-of-file. - * except.c (expand_end_java_handler): Handle null type (i.e. finally). - -1998-06-24 Andrew MacLeod - - * lang.c (lang_init): Make -fexceptions the default. - * except.c (maybe_start_try, maybe_end_try): Don't do anything if - exception handling is not turned on. - -1998-06-23 Andrew MacLeod - - * lang.c (flag_new_exceptions): Make this this default. - * decl.c (end_java_method): Call emit_handlers. - * except.c (method_init_exceptions): Set language code and version. - (expand_start_java_handler): Enable exception, and call - expand_eh_region_start. - (expand_end_java_handler): Enable exception, and set up catch blocks. - (emit_handlers): New routine to generate the saved handlers. - * java-except.h (emit_handlers): Add prototype. - -1998-06-12 Per Bothner - - We used to have three different representations of the constant pool: - the CPool structure, the tree_constant_pool, and the constructures - used to build the Class object (which may need class and string - constants) in compiled code. None were appropriate for compiling - to .class files, so I did a major overhaul. - - First, the tree_constant_pool array was removed. Things were - modified to the CPool structure in the JCF could be used. - Second, a "capacity" field was added to the CPool, and functions - written to search for a matching constant, adding one if not found. - The code that generated the Class object was changed to use a CPool. - The actual TREE_LISTs used to build the CONSTRUCTORs used for - the static Class object are now only in build_constants_constructor. - Finally, I wrote code which can generate a .class file (including its - constant pool) from the RECORD_TYPE of a class. This is a big step - on the way to compiling Java source into .class files. - - * jcf-write.c: New file. Writes out a RECORD_TYPE as a .class file. - * Makefile.in (JAVA_OBJS): Added jcf-write.o. - - * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag, - CONSTANT_ResolvedString, CONSTANT_ResolvedClass): New macros. - (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME, - COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined. - (COMPONENT_REF_CLASS): Replaced by COMPONENT_REF_CLASS_INDEX. - (lang_type): Removed constant_pool field. - * jcf.h (CPool): Renamed size to count. Added field capacity. - (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2, - CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT): New macros. - Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros. - - * constants.c (current_constant_pool_tags, current_constant_pool_data, - current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool. - * constants.c (build_constants_constructor): Use new outgoing_cpool. - (set_constant_entry, find_constant1, find_constant2, - find_class_constant, count_constant_pool_bytes, write_constant_pool, - find_utf8_constant, find_class_or_string_constant): New functions. - - * jcf-parse.c (load_class): Don't save/restore tree-constant_pool. - (get_constant): Use current_jcf.cpool instead of tree_constant_pool. - (give_name_to_class, get_class_constant): Likewise. - * jcf-parse.c, java-tree.h (tree_constant_pool): Removed. - (get_name_and_type_constant, get_ref_constant): Removed. - * parse.h (parser_ctxt): Remove field tree_constant_pool. - * parse.y: Don't save/restore tree_constant_pool. - * verify.c (verify_jvm_instructions): Update for new approach. - * expr.c (expand_invoke, expand_java_field_op): Likewise. - - * lang-options.h: Added -femit-class-file, -femit-class-files. - * lang.c (flag_emit_class_files), java-tree.h: New flag. - (lang_f_options): Added "emit-class-file(s)". - - * expr.c (build_java_arrayaccess): Generate more efficient array - bounds checking, by using unsigned compare. - - * expr.c (expand_invoke): Re-arrange error checks to make more robust. - -1998-06-10 Alexandre Petit-Bianco - - * parse.h: New comment on the handling of unresolved type - identifiers. JDEPs are now part of the jdep_code enum. - (typedef struct jdep): Now use enum jdep_code or int, depending on - availability. Both are narrowed down to an 8 bits bitfield. - (CALL_EXPR_PRIMARY): Fixed comment. - -1998-06-10 Tom Tromey - - * Make-lang.in (java): Added gjavac and jvgenmain. - (java.start.encap): Depend on gjavac. - (java.rest.encap): Depend on jvgenmain. - - * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++. - (JAVA_CROSS_NAME): Likewise. - (java.all.build): Depend on jvgenmain and gjavac. - (java.all.cross): Depend on jvgenmain and gjavac-cross. - (jvgenmain$(exeext)): New target. - (java.install-common): Wrote. - * config-lang.in (compilers, stagestuff): Added gjavac and - jvgenmain. - -1998-06-10 Dave Brolley - - * lang.c (lang_decode_option): New argc/argv interface. - -1998-06-09 Alexandre Petit-Bianco - - * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard. - * decl.c (build_decl_no_layout): New function. - * expr.c (java_lang_expand_expr): Layout declarations found in - blocks before they're pushed. - * jcf-parse.c (load_class): Save current line when parsing class - file. - (parse_source_file): Register class before expanding their - methods. - * lang.c (put_decl_node): Produce `null' when `void *' is - processed. - * lex.c (static tree wfl_op): New static global, for error report - on casts. - (java_init_lex): wfl_operator and wfl_op initialized - here. Filename caching added for wfl_op. Return wfl_op when `(' is - parsed. - * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast, - patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p, - build_unresolved_array_type): New static function definitions. - (build_decl_no_layout): New extern function declared. - (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the - faulty modifier exists. - (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros. - (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned. - (UNARY_PLUS_EXPR): New fake operator. - (struct parser_ctxt): New field osb_number. - * parse.y (static tree wfl_operator): New static WFL for operator - bound error messages. - (DECR_TK, INCR_TK): Moved. - (OP_TK): Tagged . - (array_type:): Now call build_unresolved_array_type. - (dim_expr:): Count the number of '[' seen. - (post_increment_expression, post_decrement_expression, - pre_increment_expression, pre_decrement_expression, - unary_expression_not_plus_minus, unary_expression:): Actions are - now building the corresponding unary expressions. - (cast_expression:): Actions are now building cast expressions. - (build_unresolved_array_type): New function. - (create_interface): Reset the number of declared interfaces. - (create_class): Likewise. - (method_header): Methods declared within the scope of an interface - are now implicitly set public and abstract. - (java_complete_class): Variable's and parameter's type are patched - with a promoted type. - (declare_local_variables): Resolved non builtin types are promoted - before being used to build a variable decl. Removed type patch - posted on variable initialization statement. - (source_start_java_method): Use build_decl_no_layout to build the - decl of a parameter of incomplete type. - (java_register_parsed_class): Process interfaces too. Call - rest_of_decl_compilation on each processed class declarations. - (java_complete_expand_methods): Don't attempt to expand things in - interfaces. - (java_complete_tree): Process CONVERT_EXPR, even though it always - has a type. Propagate error_mark_node to node's type too. Promote - method's call argument type and return error_mark_node if - argument's completion didn't work. MODIFY_EXPR can have a WFL as a - RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now - handle unary operator nodes. - (build_assignment): Added comment. - (print_int_node): New function. - (patch_assignment): New second argument. New error handling. Use - print_int_node. Handle references. Use can_cast_to_p to issue - different error message according to the context and check upon - the initialization of the RHS. - (can_cast_to_p, valid_ref_assignconv_cast_p): New functions. - (operator_string): Handle more operators. - (patch_binop): No longer use a function static - wfl_operator. Improved error message on shift distance. - (build_unaryop, build_incdec, build_cast, patch_unaryop, - patch_cast): New functions. - -1998-06-05 Per Bothner - - * jvspec.c: New file. - * Make-lang.in: New rules to build gjavac from jvspec.c and ../gcc.c. - - * java-tree.h (identifier_subst): Add declaration. - -1998-06-04 Tom Tromey - - * jvgenmain.c (main): Generate call to JvRunMain. - - * class.c (make_class_data): Push value for "sync_info" field. - * decl.c (init_decl_processing): Push "sync_info" field. - -1998-06-03 Per Bothner - - * typeck.c (build_java_array_type): Set TYPE_NAME to actual - Java (source) name, not signature. - Set TYPE_ALIGN to (at least) that of element_type. - -1998-06-02 Per Bothner - - * class.c: Moved classname-mangling-rekated code to ... - * mangle.c: ... this new file. - * jvgenmain.c: New program (needs mangle.c) to generate main program. - * Makefile.in: Update for above changes. - -1998-06-01 Alexandre Petit-Bianco - - * expr.c (truthvalue_conversion): Convert integer and floating - point value to their truth value. - * lex.c (java_lex): Handle the `null' literal. - * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros. - (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, - ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED): - New macros. - - * parse.y: Reorganization/documentation on token declaration. - (binop_lookup[]): New added new tree codes. - (relational_expression): Build corresponding binary operators. - (equality_expression, conditional_and_expression, - conditional_or_expression): Likewise. - (java_complete_class): Fix crash in debug message. - (java_complete_tree): Check initialization of method call - arguments. Further bogus node evaluation to detect more error - during assignments. Handles more binary operators. - (patch_assignment): Use DECL_P. - (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree - code. - (operator_string): Handle more case. Compacted source. - (patch_binop): Changed function comment. Checking for - uninitialized first operand takes the compound assignment into - account and uses DECL_P. Checking for uninitialized second operand - delayed to routine's end. Use macros to issue type bound error - messages and issue messages on both operands if their types are - different. Force fixed type into node. Handle all binary - operators. - -1998-05-27 Alexandre Petit-Bianco - - * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros. - * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to - build operator node and return tokens. - * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros. - * parse.h (java_complete_tree): Changed returned type in prototype. - (build_method_invocation, build_assignment, patch_assignment, - patch_binop): New static function declarations. - (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P, - BUILD_EXPR_WFL): New macros. - * parse.y (enum tree_code binop_lookup[]): New static for token to - TREE_CODE lookup. - (%union): Parser union has new sub-structure `operator'. - (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK, - PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK, - ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK, - ASSIGN_ANY_TK): Tokens tagged `operator'. - (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK, - AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK, - MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK, - REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'. - (assignment_operator:): Rule tagged `operator'. - (expression_statement:): Re-installed default rule. - (method_invocation:): Sub rules call build_method_invocation. - (postfix_expression:): Don't attempt to resolve name here. Just - return an ID. - (multiplicative_expression:): Sub-rules build corresponding binop - expression node. - (additive_expression:, shift_expression:, and_expression:, - exclusive_or_expression:, inclusive_or_expression:): Likewise. - (assignment:): Sub rule invoke build_assignment. - (assignment_operator:): Default rules on sub rules. - (force_error): Added documentation on this variable. - (declare_local_variables): Build initialization calling - build_assignment. - (expand_start_java_method): Removed unused rtx declaration. Mark - arguments as already initialized. - (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL. - (java_complete_expand_methods): Don't process next method if - completion of the previous one triggered errors. - (java_complete_expand_method): Call source_end_java_method if no - error were found during completion. - (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve - locals declaratilon. Handle names found within a class. Return - error_mark_node when things aren't found. - (patch_method_invocation_stmt): Return error_mark_node on failures. - (patch_invoke): Removed unused local. Return the correct node. - (java_complete_tree): Now returns a value. The BLOCK section binds - local identifiers and the type of a BLOCK is now void. Assign the - result of operand completion on COMPOUND_EXPR. Assign the - encapsulated node of a WFL to the result of its completion, except - when the node is an identifier. Now handle MODIFY_EXPR and several - binary operators. Return error_mark_node on errors. - (build_method_invocation, build_assignment, patch_assignment, - build_binop, operator_string, patch_binop): New functions. - * typeck.c (binary_numeric_promotion): New function. - -1998-05-21 Per Bothner - - * class.c (identifier_subst): New convenience wrapper for ident_subst. - Replace most uses of ident_subst by identifier_subst. - - * class.c (push_class_static_dummy_field): Removed function. - (build_class_ref): Find Class object decl by looking up "CNAME.class", - instead of looking got "class" static field. Create that decl here. - (class_identifier_node): Removed; no longer needed. - (init_class_processing): Don't init class_identifier_node. - * jcf-parse.c (jcf_parse): Don't call push_class_static_dummy_field. - Do nreverse 0 times (instead of twice) for Object and Class. - * parse.y (java_layout_parsed_class): No push_class_static_dummy_field. - -1998-05-20 Per Bothner - - * jcf-parse.c (parse_class-file): Set lino to smallest line number, - while initializing linenumber_count and linenumber_table. - Do it before init_function_start (which calls emit_line_note). - * expr.c (expand_byte_code): Don't need to clear lineno here. - -1998-05-18 Tom Tromey - - * class.c (append_gpp_mangled_type): If `qualifications' is >=9, - then mangle number as _N_. - - * class.c (mangle_class_field): New function. - (build_class_ref): Set assembler name of class reference using - mangle_class_field. - (push_class_static_dummy_field): Likewise. - -1998-05-17 Michael Tiemann - - * parse.y (source_start_java_method): Use TREE_SET_CODE instead - of assigning to TREE_CODE. The latter method exploits a feature - of GCC that is not ANSI compliant. - -1998-05-12 Alexandre Petit-Bianco - - * decl.c (pushdecl_force_head): New function. - (pushlevel): Removed conditional printf. - (complete_start_java_method): Don't enter local variable scope if - function is compiled from source code. - * expr.c: parse.h now included - (java_lang_expand_expr): New function. - * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of - printf. Terminate buffer when doing directories. - * jcf-parse.c (parse_source_file): Call lang_init_source before - parsing and before code generation. - * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally - use printf if the macro is defined. - * lang.c (lang_init): Install lang_expand_expr hook on - java_lang_expand_expr. - (java_dummy_print): New function. - (lang_init_source): New function. - * lex.c (java_lex): Remember location of an opening brace at the - second nesting level. - (java_is_eol): Unget character seen after a CR if it is EOF. - * parse.h: Now includes lex.h - (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use - printf if the macro is defined. - (expand_start_java_method, build_expr_block, enter_block, - exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks): - New static function declarations. - (pushdecl_force_head): New extern function declaration. - (INCOMPLETE_TYPE_P): New macro. - (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum. - (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY, - BLOCK_EXPR_ORIGIN): New macros. - (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST, - DECL_SOURCE_LINE_LAST): New macros. - (struct parser_ctxt): Removed field current_method_decl, redundant - with the field current_function_decl. Added fields - first_ccb_indent1 and pending_block. - * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK, - BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules - tagged - (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs. - (compilation_unit:): Cosmetic on sub rule. - (type_declaration:): Cosmetic on sub rules. Added an error rule. - (variable_initializer:): Installed default rule on expression:. - (method_declaration:): method_header: starts a new - method. method_body: installs the function body, absorbs blocks - emitted for temporary variable scopings, pops function's body block - and merges function's last statement lineno in DECL_SOURCE_LINE. - (method_body:): Installed default rules. - (block:): Call enter_block when an opening brace is seen. Absorb - scoping blocks and call exit_block when a closing brace is seen. - (block_statement:): Cosmetic changes. - (method_invocation:): Create WFL around CALL_EXPR node. - (patch_stage): Added comment around definition. - (method_header): Try to use first_ccb_indent1 as the first line of - the method, so BP debug info are emitted at the first opening - brace of the function. If the function has no body, use the - location of the function's name. Override currently defined method - name with the matching WFL so we can point redefinition errors - using the location where the function's name was declared. - (check_abstract_method_header): Interprets DECL_NAME as an - identifier or as a WFL, accordingly. - (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM. - (check_method_redefinition): Use DECL_NAME as a WFL. Extract - location and name information out of it and reinstall DECL_NAME to - its original identifier node value. - (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the - function's source code). - (read_import_dir): Test the value returned by find_class and issue - a fatal accordingly. - (declare_local_variables): Push a new block for the scope of the - new variable(s) if code has been already generated at that nesting - level. Pinpoint redefinition errors using the variable id - WFLs. Generate initialization code if necessary. If the variable - type is incomplete, register a patch on its decl. - (source_start_java_method): Rewritten. Define a new block for the - function's parameters. Build parameter decl out of function's - arguments and register them for a patch if their types are - incomplete. - (expand_start_java_method): Includes the part of - source_start_java_method that was pushing the parameter decls and - completing the method start code. - (source_end_java_method): Removed call the expand_end_bindings and - poplevel (already taken care of). Reinstall function's arguments - and get function's last line of code before calling - expand_function_end. - (java_method_add_stmt): New comment before the function's - code. Complement the second operand of the current COMPOUND_EXPR - if necessary. - (java_complete_expand_methods): Don't generate debug info on line - zero when expanding a generated constructor. - (java_complete_expand_method): Set start and end line numbers for - a artificially generated constructor to one and manually call - enter_block and exit_block when defining it. For all methods: - expand function's start calling the new expand_start_java_method - and invoke java_complete_tree on the effective method's body, if - any. - (resolve_expression_name): Now use lookup_name_in_blocks to search - local variable decls and print out an error when variables are - undefined. - (patch_method_invocation_stmt): Inserted comment before the - function's code. - (lookup_method_invoke): Chain method's arguments using chainon - with the current arg list as a second argument. Inserted missing - IDENTIFIER_POINTER when reporting an error on methods not found. - (refine_accessible_methods_list): Don't retain constructors. - (patch_arguments): Function removed. - (java_complete_tree): Inserted comment before the function's - code. New case for BLOCKs. Moved the WFL case a bit - further. Complete function's arguments. - (build_expr_block, enter_block, exit_block, lookup_name_in_blocks, - maybe_absorb_scoping_blocks): New functions. - -1998-04-27 Alexandre Petit-Bianco - - * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if - previously set. - * jcf-parse.c (parse_source_file, java_error_count): New forward - and extern declarations. - (java_parse_abort_on_error): Macro moved. - (jcf_parse_source): fatal called if fopen fails. Now calls - parse_source_file. - (parse_source_file): New parse_only parameter. Reflects the - elimination of the second pass. - (yyparse): parse_source_file called with argument set to 0. - * jcf.h (JCF_ZERO): Sets java_source to zero. - * lex.c (java_init_lex): pass argument is gone. Function modified - to be called once during the analysis of a file. - (java_unget_unicode): Fixed typo in fatal message. - (java_get_line_col): Likewise. - (java_lval): Likewise. String literals no longer built during - second pass. - * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into - account. - * parse.h (MODIFIER_WFL): New macro. - (parse_check_super, parser_check_super_interface): Now return int. - (parser_chain_incomplete_item, not_builtin_p, - complete_method_decl): Declarations removed. - (build_method_invocation_stmt, build_invoke): Renamed using the - `patch' instead of `build' - (register-incomplete_type, obtain_incomplete_type, - java_complete_tree, java_complete_expand_method, - unresolved_type_p, create_jdep_list): New function declarations. - (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS, - END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted. - (jdep): New typedef on new struct _jdep. - (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL, - JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN, - JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED, - JDEP_RESOLVED_P): New macros. - (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD, - JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE, - JDEP_VARIABLE): New enum values and jdep kinds. - (jdeplist): New typedef on struct _jdeplist. - (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New - macros. - (CALL_EXPR_PRIMARY): New macro. - (struct parser_ctxt): Fields java_pass, current_method_decl, - method_decl_list deleted. New field jdeplist. - (INCOMPLETE_P): Macro deleted. - * parse.y (single_type_import_declaration:): Removed pass switch. - (type_import_on_demand_declaration): Likewise. - (field_declaration:): Removed pass switch on all sub rules. - (class_declaration:): Call the complete_class_decl removed on - class_body rules. - (method_declaration:): Removed second pass switch. No longer chain - methods decl when method_header reduced. - (method_header:): Sub rules no longer depend on pass switch. - (method_declarator:): Likewise. - (method_body:): Likewise. - (abstract_method_declaration:): Likewise. - (block_statement:): Likewise. - (local_variable_declaration:): Likewise. - (argument_list:): Likewise. - (method_invocation:): Likewise. Call to build_method_invocation_stmt - removed. Partial CLASS_EXPR tree node built instead. - (postfix_expression:): Removed pass switch on all sub rules. - (java_pop_parser_context): Free classd_list content. - (yyerror): Call obstrack_grow0 to finalize error message. - (check_class_interface_creation): Comment modified to reflect new - returned value meaning. Removed second pass switch. Return 1 if an - error was found, 0 otherwise. Adjust pointer on filename if a - leading path separator was found. - (maybe_create_class_interface_decl): Removed first pass switch - when linking the class decl to the class_list. Install a new - jdep_list for the class. - (add_superinterfaces): List of unresolved interfaces is - gone. Unresolved interfaces are directly added to the current - dependencies list. - (create_interface): Second pass shortcut removed. - ctpx->modifier_ctx access through MODIFIER_WFL. - (create_class): Second pass shortcut removed. Call to - register_incomplete_type replaces the call to - parser_chain_incomplete_item. - (complete_class_decl): Function removed. - (duplicate_declaration_error): New way of retrieving redeclared - item type. - (register_fields): Call to lookup_modifier_cl replaced by - MODIFIER_WFL. New way of handling unresolved type, using - unresolved_type_p and obtain_incomplete_type. - register_incomplete_type replaces call to parser_chain_incomplete_item. - (patch_stage): New static global variable. - (method_header): New way of handling unresolved type, using - unresolved_type_p and obtain_incomplete_type. patch_stage used to - indicates that the method decl needs to be patched. - (check_abstract_method_header): Call to lookup_modifier_cl - replaced by MODIFIER_WFL. - (method_declarator): Incomplete argument type are registered - calling register_incomplete_type. Patch on the declared method is - issued in that case. - (unresolved_type_p): New function. - (parser_check_super_interface): New comment to reflect function's - modified returned type (int). Function and has a new argument - this_wfl. Call to parse_error_context uses this_wfl instead of - relying on lookup_cl. - (parser_check_super): Comment reflects function's new returned - type (int). Function returns nonzero value on error. - (create_jdep_list, reverse_jdep_list, obtain_incomplete_type, - register_incomplete_type, jdep_resolve_class): New functions to - handle incomplete types in declarations. - (java_complete_class): Rewritten to work with the new incomplete - type handling scheme. - (complete_class_report_errors): Likewise. - (complete_method_decl): Removed: it jobs is now handled by - java_complete_class. - (do_resolve_class): Class loaded in not already loaded and not - found in Java source code. - (java_check_regular_methods, java_check_abstract_methods): Don't - call complete_method_decl anymore. - (lookup_modifier_cl, not_builtin_p): Functions deleted. - (read_import_dir): Got rid of the pass number dependency. - (declare_local_variables): New handling of unresolved types (patch - issued). - (source_start_java_method): New parameter level. Function called - with level set to 1 when argument types are potentially - unresolved. Called to complete the job with level set to 2 once - types are complete. - (source_end_java_method): Call to permanent_allocation - removed. Waiting to be replaced by a more suitable obstack - management. - (java_complete_expand_methods, java_complete_expand_method, - java_expand_finals): New functions. - (build_method_invocation_stmt): Renamed - patch_method_invocation_stmt. Extracts function call expression - (wfl) and arguments (args) from CALL_EXPR tree operands. - (build_invoke): Renamed patch_invoke. Fixed typo in fatal - call. Patch the function and argument operand of the CALL_EXPR - tree argument. - (patch_argument, java_complete_tree): New functions. - -1998-04-20 Per Bothner - - Recover from missing fields and methods (i.e. error instead of fatal). - * decl.c, java-tree.h (TYPE_identifier_node): New global constant. - * expr.c (expand_invoke): Recover from missing method. - (expand_java_field_op): Recover from missing field. - Inline references to java.lang.{Integer,Char,...}.TYPE. - * typeck.c (get_type_from_signature), java-tree.h: New function. - * class.c (add_method): Use get_type_from_signature. - (build_class_ref): Handle a class that was not found. - * typeck.c (convert): Handle conversion to pointers (for convenience). - * verify.c (verify_jvm_instructions): Use get_type_from_signature - instead of lookup_field to handle missing fields. - - * jcf-parse.c (process_zip_dir): Set java_source. - -1998-04-20 Brendan Kehoe - - * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME. - -1998-04-14 Alexandre Petit-Bianco - - * jcf-parse.c (load_class): Don't change input_filename before - calling jcf_parse_source (but still do it before calling - jcf_parse). - (jcf_parse_source): Assign input_filename after having saved the - parser context. - * lex.c (java_init_lex): Chain a WFL node to the import on demand - list. ctxp->modifier_ctx zeroed according to its new - definition. ctxp->filename initialized. Removed - JAVA_MODIFIER_CTX_UNMARK. - (java_unget_unicode): Update the character based column position. - (java_allocate_new_line): ref_count not used anymore. Always free - ctxp->p_line. Initialize c_line->char_col to 0. - (java_get_unicode): Update the character based column position. - (java_lex): Use ctxp->elc to store current position in source - file, at the beginning of the parsed token. Set modifier_ctx entry - corresponding to the parse modifier to a WFL node. Return a WFL - node when an identifier is parsed. - (java_lex_error): Now uses ctxp->elc to store current position in - source. - (build_wfl_node, java_is_eol, java_get_line_col): New functions. - * lex.h (build_wfl_node): New function definitions. - (struct java_line): ref_count and next fields are gone. New field - char_col. - (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN, - JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted. - (JAVA_COLUMN_DELTA): New macro. - (java_lc): New typedef on new struct _java_lc. - * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types. - (parse_error_context, parse_warning_context): Changed prototypes. - (java_get_line_col): Added as an available global function. - (JAVA_MODIFIER_CTX_UNMARK): Macro removed. - (IC_DECL): Replaced by macro IC_TYPE - (DEPEND_WFL): New macro. - (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first - wrong modifier. - (exit_java_complete_class): Removed a commented out statement. - (struct parser_ctxt): Added comments on fields. modifier_ctx is - now an array of tree nodes. Deleted fields line_list and - e_line. New field elc, to replace e_line. - * parse.y (array_type:): Build WFL node. - (qualified_name:): Build a single WFL node out of two. Retain - the location information of the first node in the resulting node. - (package_declaration:): Use package name as a WFL node - (single_type_import_declaration:): Use imported name as a WFL node. - (type_import_on_demand_declaration:): Use root of the imported - packages as a WFL node. - (field_declaration:): Removed unused local variable cl. - (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK. - (yyerror): New static elc. Removed static error_line, error_pos. - New local code_from_source. Save ctxp->elc into elc at the first - pass. Call java_get_line_col to get a string of the line where - the error occurred. - (debug_line): Removed static function. - (parse_error_context, parse_warning_context): Parameter cl is now - a WFL node. Use its value to initialize ctxp->elc. - (redefinition_error): Parameter cl is now a WFL node. - (parse_add_interface): New parameter wfl. No longer call - lookup_cl, use wfl instead. - (check_class_interface_creation): Parameter cl is now a WFL node. - (maybe_create_class_interface_decl): Likewise. - (add_superinterfaces): New function. - (create_interface): Removed local cl, node, super_decl, - super_decl_type. Function now uses id as a WFL node. Better - warning/error report on obsolete or forbidden mix of - modifiers. Now calls add_superinterfaces to register interfaces. - (create_class): Removed local cl, node. Local variable id is used - as a WFL node. Better error report on forbidden modifier - mix. Uses add_superinterfaces to register interfaces. - (find_field): Argument cl is now a WFL node. Now store the WFL - node of a fields that needs to be checked for their - initialization. - (method_header): Local variable node non longer used. Local - variable id replaces cl. - (check_modifiers_consistency): Local variable cl is now a WFL - node. - (method_declarator): Local variable cl replaced by parameter id. - (parser_qualified_name): Now uses parameter name as a WFL node. - (parser_check_super_interface): New parameter wfl, for achieve - greater accuracy during error reports. - (parser_chain_incomplete_item): New parameter named location. Used, - along the decl, to construct the incomplete item node. - (java_complete_class): resolve_class now uses WFL node extracted - from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE - where appropriate. - (complete_method_decl): Unresolved function's argument types are WFL. - (resolve_class): Parameter cl is now a WFL node. - (resolve_and_layout): Likewise. - (do_resolve_class): Likewise. Try first to use cl and then do the - lookup on the decl when calling check_pkg_class_access. - (complete_class_report_errors): Use IC_TYPE in place of - TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency - instead of doing a lookup over the decl. - (java_check_final): Use WFL info from field tree list. - (lookup_cl): Rewritten and returns a statically defined WFL node. - (lookup_modifier_cl): Now uses information from WFL nodes. - (process_imports): Likewise. - (read_import_dir): name and cl arguments replaced by a single WFL - node. Function modified accordingly. - (find_in_imports_on_demand): Now uses WFL node. - (check_pkg_class_access): cl argument is now a WFL node. - (declare_local_variables): Fixed to use WFL nodes. - (resolve_expression_name): Likewise. - (build_method_invocation_stmt): name_combo argument renamed - wfl. Function modified to use WFL nodes. - (build_invoke): cl used as a WFL node when calling build_expr_wfl. - (lookup_method_invoke): cl is now a WFL node. Added missing - IDENTIFIER_POINTER to class type decl name. - -1998-04-14 Dave Brolley - - * lang.c (init_parse): Now returns char* containing the filename. - -1998-04-10 Per Bothner - - * class.c (layout_class): Mangle repeated arg types to match cc1plus. - - * decl.c, java-tree.h (integer_four_node): New INTEGER_CST node. - * class.c (make_class_data): If flag_assume_compiled, initial class - state is CSTATE_PREPARED; make superclass and interfaces direct - references, rather than constant pool indexes. - -1998-04-09 Alexandre Petit-Bianco - - * parser.y: Include flags.h. Removed debug variable pl. - (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl. - (block:): Likewise. - (labeled_statement_nsi:): Generate debug info when reducing - expression_statement:. - (check_pkg_class_access): get_access_flags_from_decl invocation - fixed for new CLASS_* flags location. - (source_end_java_method): Save/restore parser context when - entering/leaving this routine. Restore lineno to its right value - before calling expand_end_bindings. - (build_method_invocation_stmt): build_invoke called with the - current line information. - (build_invoke): New argument cl. Wrap the function call around a - wfl node. - (refine_accessible_methods_list): Changed comment, removed - unnecessary code. - * parse.h: Fixed typo in comments. - (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location. - (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro. - (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1, - parser_ccb_indent. - * lex.c (java_lex): Record the last closing curly bracket of a - function. - * jcf-parse.c (jcf_parse_source): Now calls - java_check_methods. Clarified comment, fixed typo. - -1998-04-09 Dave Brolley - - * lang.c (init_parse): Expose for non USE_CPPLIB builds. - (finish_parse): Expose for non USE_CPPLIB builds. - -1998-04-08 Jeffrey A Law (law@cygnus.com) - - * lang.c (lang_print_xnode): New function. - -1998-04-03 Per Bothner - - * decl.c (class_dtable_decl), java-tree.h: New tree node. - * class.c (get_dispatch_vector, get_dispatch_table): New functions - used to build a class's dispatch table. - (make_class_data): Generate dispatch table if flag_assume_compiled. - Set dtable of class object to address of class_dtable_decl. - - * decl.c (int_decl_processing): Make soft_badarrayindex_node - be volatile and have side effects - generates better code. - - * class.c, expr.c, parse.y: CLASS_INTERFACE, CLASS_FINAL, etc: - These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs. - - * expr.c (expand_invoke): If class is final, method is - effectively final, so can call it directly. - - * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE): New macros. - - * Makefile.in, Make-lang.in: Add missing $(exeext)s. - -1998-03-19 Alexandre Petit-Bianco - - * parse.y (build_method_invocation_stmt): Removed extra argument - to build_invoke. - -1998-03-16 Alexandre Petit-Bianco - - * expr.c (dtable_indent): Now static global. - (expand_invoke): Now call invoke_build_dtable and - build_invokevirtual. - (invoke_build_dtable, build_invokevirtual): New functions. - * jcf-io.c (find_class): Defer issuing a warning by setting - jcf->outofsynch to 1. - * jcf-parse.c (jcf_out_of_synch): New function. - (load_class): Test this_jcf.outofsynch flag and call - jcf_out_of_synch accordingly. - * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in - comment indentation. - * lex.c (java_get_unicode): Fixed code indentation. - (java_lex): Create string literal. Fixed typo. Removed several - premature obstack_free. - * parse.h: New enums for name resolution and invocation mode. - (struct qualification): New data structure. - (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros. - (do_resolve_class, build_method_invocation_stmt, - breakdown_qualified, qualify_ambiguous_name, resolve_and_layout, - debug_line, identical_subpath_p, invocation_mode, - refine_accessible_methods_list, build_invoke, - lookup_method_invoke): New functions declared. - (build_invokevirtual, invoke_build_dtable, match_java_method, - build_field_ref, jcf_out_of_synch): New references to external - functions. - (struct parse_ctxt): Removed artificial_constructor field. - * parse.y: (array_type:): Type defined for this rule. - (class_type:): Installed default rule for interface_type:. - (array_type:): Now build Java array type. - (qualified_name:): Now use obstack_grow0. - (method_declaration:): Skip the artificial constructor added to - the list, if any. - (abstract_method_declaration:): Execute the code only during pass 1. - (block:): Installed default rule in block_statements:. - (block_statement:): Add the statement to the method during pass 2. - (statement_expression): Installed default rule for - method_invocation:. - (argument_list:): Added code to build the argument list. - (method_invocation:): Added call to create the method invocation - node. - (yyerror): Now use obstack_grow0. Removed bogus obstack_free. - (debug_line): New function for debug. - (complete_class_decl): No longer do something during pass 1. - (method_header): Use BUILD_PTR_FROM_NAME. - (parser_qualified_classname): Use obstack_grow0. Removed bogus - obstack_free. - (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified - function's main comment. - (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete - classes. - (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types. - (resolve_class): Now works with arrays. - (do_resolve_class, resolve_and_layout): New functions. - (java_check_regular_methods): Reverse method list before and after - having processed it. No longer set ctxp->artificial_constructor. - (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch - accordingly. Fixed typo in issued error message. Now use - obstack_grow0. - (find_in_imports_on_demand): Now use obstack_grow0. - (declare_local_variables): Use BUILD_PTR_FROM_NAME. - (source_end_java_method): Call expand_expr_stmt instead of - expand_expr. Calls it before calling expand_function_end. - (java_method_add_stmt): Do nothing if errors were found during - parsing. - (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo. - (build_method_invocation_stmt, build_invoke, invocation_mode, - lookup_method_invoke, refine_accessible_methods_list, - qualify_ambiguous_name, breakdown_qualified, identical_subpath_p): - New functions. - * typeck.c (build_java_signature): Properly end method signature - if return type skipped. - (match_java_method): New function. - -1998-03-16 Per Bothner - - * jcf-io.c (find_classfile): If USE_JCF_STDIO, fopen in binary mode. - -1998-02-25 Alexandre Petit-Bianco - - * expr.c (build_invoke_non_interface): New function. - (methods_ident, ncode_ident): Now static globals. - (expand_invoke): Use build_invoke_non_interface. - * java-tree.h (struct lang_decl): New field function_decl_body. - (DECL_FUNCTION_BODY): New macro. - * jcf-parse.c (jcf_parse_source): Deeper check before setting - CLASS_FROM_SOURCE_P. - (parse_source_file): Fixed typos. Call java_layout_parsed_class - before starting pass 2. Call to java_generate_parsed_class replaced - by java_register_parsed_class. - * lex.c: Fixed typo in header. Some line width related formating. - * lex.h: Some line width related formating. - * parse.h (source_end_java_method, resolve_expression_name, - complete_class_decl, maybe_create_class_interface_decl, - check_class_interface_creation): New static function declarations. - (java_layout_parsed_class, java_method_add_stmt): New function - declarations. - (struct parser_ctxt): Field mark_class_generate removed. New - fields class_list and artificial_constructor. - * parse.y: Fixed typo in header. - (class_declaration:): Call complete_class_decl when class body - parsed. - (method_declaration:): Call source_end_java_method in pass 2 when - the method body is defined. - (postfix_expression:): Do expression name resolution on sub-rule - name during pass 2. - (create_class, create_interface): Merged common pieces. - (check_class_interface_creation, maybe_create_class_interface_decl): - New functions. - (complete_class_decl): New function. - (register_fields): Fixed line width related typo. - (method_header): Correctly skip first argument when fixing - argument line. Changed the loop. - (java_check_circular_reference): Now use ctxp->class_list. - (java_complete_class): Removed start/stop marking. - (java_check_regular_methods): Now takes a class decl as an - argument. Add default constructor if none were encountered. - (java_check_methods): Now use ctxp->class_list. Changed call to - java_check_regular_methods. - (source_start_java_method): Set DECL_ARG_TYPE for each function - arguments. - (source_end_java_method, java_method_add_stmt): New functions. - (java_generate_parsed_class): No longer exists. - (java_layout_parsed_class, java_register_parsed_class): New functions. - (resolve_expression_name): New function. - -1998-02-12 Alexandre Petit-Bianco - - * jcf-parse.c: (parse_source_file): Check on errors after init lex. - * lex.c: (java_init_lex): Defer ctxp->java_pass initialization - until pass initializations are done. Call read_import_dir with - pass set to 0. - * parse.h: (lookup_modifier_cl): New function declared. - (INTERFACE_FIELD_MODIFIERS): New macro. - (OBSOLETE_MODIFIER_WARNING): New macro. - * parse.y: (register_fields): Class type and current field name in - local variables. Check modifier(s) if adding field(s) to an interface. - (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING - and report errors using the faulty modifier line context. - (lookup_modifier_cl): New function. - (read_import_dir): Detect and report default import processing - failure. - -1998-02-11 Brendan Kehoe - - Add a pair of -fassume-compiled/-fno-assume-compiled options. - * class.c (is_compiled_class): Return 1 after making sure it - qualifies as loaded, if FLAG_ASSUME_COMPILED is set. - * lang-options.h: Add -fassume-compiled/-fno-assume-compiled. - * java-tree.h (flag_assume_compiled): Add decl. - * lang.c (lang_f_options): Add the flag. - (flag_assume_compiled): Add decl, default to 0. - -1998-02-11 Alexandre Petit-Bianco - - * class.c (class_depth): Call to load_class uses extra VERBOSE arg. - (is_compiled_class): Likewise. - (layout_class): Likewise. - (layout_class): Detect and lay out classes defined in source code. - (interface_of_p, add_interface_do, may_add_interface): New - function. - (add_interface): Now use add_interface_do. - (add_method_1): New function. - (add_method): Now use add_method_1. - (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG. - (complete_start_java_method): New function. - (start_java_mehod): Now call complete_start_java_method. - * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg. - (expand_invoke): Likewise and fixed typo. - *gjava.c: (print_super_field): Use new argument to find_class - DO_CLASS_FILE. - (main): Likewise. - *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE. - (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME, - QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on - IDENTIFIER_NODE. - (CLASS_COMPLETE_P): New flag on TYPE_DECL. - (add_method_1, push_class): New prototypes. - *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument. - *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip - directory where the class was found. - (find_class): New argument DO_CLASS_FILE. Function find_class - modified accordingly. - *jcf-parse.c: (fix_class_path): New function. - (load_class): Use new VERBOSE argument. load_class now finds and - loads/parses .class/.java files. Save read_state of current_jcf - if necessary. - (java_parser_abort_on_error): New macro. - (jcf_parse_source, parse_source_file): New function. - (jcf_parse): Fixed typo. - (yyparse): Call parse_source_file () only. - (process_zip_dir): Fixed typo, fix zdir->filename_length when - writing the real class name back in the zip directory entry. - (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null. - (jcf_figure_file_type): Fixed bogus alloc and bcopy. - *jcf.h: (typedef struct JCF): New fields java_source and zipd. - (find_class): Prototype fixed. - *lex.c: Added 1998 time stamp. - Removed all static global variables, moved into the parser - context data structure.. Now include unistd.h if SEEK_SET not - defined. - (java_init_lex): Rewritten. - (java_sneak_unicode): Modified current unicode access in current line. - (java_unget_unicode): Likewise. - (java_allocate_new_line): New allocation management. - (java_read_char): Modified access and storage of unget_utf8_value. - New way of processing current unicode. - (java_store_unicode, java_read_unicode): Fixed typo in declaration. - (java_get_unicode): Now use the parser context. - (java_lineterminator): Likewise. - (java_lex): Now used java_lval argument (pointer to YYSTYPE), part - of the reentrant parser implementation. Function now use the - parser context data structure and java_lval. Fixed production of - the float and double constant "out of range" error message. Fixed - obstack use. Return integer value when hitting a modifier. Now - return type for TRUE, FALSE and other predefined types. Return - identifier as a TREE_LIST list containing the current line context - as the TREE_VALUE sub-node. - (java_unicode_2_utf8): Fixed typo in declaration. - (java_lex_error): Now use the parser context data structure. - *lex.h: Added 1998 time stamp. - (struct java_line): New fields ref_count and next. - (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN, - JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros. - (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed. - *parse.h: Added 1998 time stamp. - (java_parse_source_file): Renamed from parse_source_file. - (YYERROR_NOW, YYNOT_TWICE): Fixed. - (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS, - INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS, - JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL, - THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS, - END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class, - CLASS_OR_INTERFACE, INCOMPLETE_P): New macros. - (struct parser_ctxt): New data structure to keep the parser context. - *parse.y: Added 1998 time stamp, got rid of static global variables. - (java_error_count, ctxp): New global variables. - (%union): New value field. - (numeric_type, integral_type): Rules removed. - (primitive_type): Rule defined to handle integral, float, double and - boolean types. - (qualified_name, package_declaration, - single_type_import_declaration, type_import_on_demand_declaration, - modifiers, class_declaration, super, interfaces, - interface_type_list, class_body, field_declaration, - field_declaration, variable_declarators, variable_declarator, - variable_declarator_id, method_declaration, method_header, - formal_parameter_list, formal_parameter, method_body, block, - static, interface_declaration, extends_interfaces, - abstract_method_declaration, local_variable_declarators): Rules now - define actions. - (force_error, do_warning): New global statics. - (push_parser_context, parser_context_save_global, - parser_context_restore_global, pop_parser_context): New functions. - (yyerror): Now uses the global parser context. Fixed use of obstack. - (parse_error, parse_error_context, parse_warning_context, - java_accstring_lookup, redefinition_error, check_modifiers, - parser_add_interface, create_interface, create_class, find_field, - duplicate_declaration_error, register_fields, method_header, - check_modifiers_consistency, check_abstract_method_header, - method_declarator, parser_qualified_classname, - parser_check_super_interface, parser_check_super, - parser_chain_incomplete_item, java_check_circular_reference, - layout_class_from_source, java_complete_class, - complete_method_decl, resolve_class, complete_class_report_errors, - java_check_final, check_method_redefinition, - java_check_regular_methods, java_check_abstract_methods, - java_check_methods, lookup_java_interface_method2, - lookup_java_method2, lookup_cl, find_name_in_single_imports, - process_imports, find_in_imports, read_import_entry, - read_import_dir, find_in_imports_on_demand, - check_pkg_class_access, not_builtin_p, declare_local_variables, - source_start_java_method, java_generate_parsed_class): New - functions. - *typeck.c: (signature_include_return): New global variable. - (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether - to add the function returned type in the signature. - -1998-02-09 Brendan Kehoe - - * jcf-io.c (open_in_zip): Use strncmp and LEN. - -1998-01-29 Dave Brolley - - * Make-lang.in (java.info): Added. - (java.install-info): Added - -1998-01-27 Brendan Kehoe - - * Makefile.in (clean): Also remove java/parse.c. - -1998-01-26 Brendan Kehoe - - Add a pair of -fbounds-check/-fno-bounds-check options. - * lang.c (lang_decode_option): Add code to grok arguments. - (flag_bounds_check): Add decl. - (lang_f_options): New array w/ the option in it. - * java-tree.h (flag_bounds_check): Add decl. - * lang-options.h: New file. - * expr.c (build_java_arrayaccess): Use flag_bounds_check instead - of a static macro value. - (JAVA_ARRAY_EXCEPTION): Delete macro. - -1998-01-23 Per Bothner - - * typeck.c (build_java_array_type): Fix two bugs in previous change. - * expr.c (build_anewarray): Add missing promote_type. - -1998-01-22 Per Bothner - - Add array types with known length to optimize bounds checking. - * typeck.c (build_java_array_type): Take length parameter. - (java_array_type_length, build_prim_array_type): New functions. - * java-tree.h: Update for new functions. - * expr.c, typeck.c, verify.c: Update build_java_array_type calls. - * class.c: Use build_prim_array_type. - * expr.c (can_widen_reference_to): Handle known-length array types. - (verify_jvm_instructions): Keep track of integer push instructions - followed by newarray/anewarray, so we can build known-length arrays. - (JAVA_ARRAY_DATA_OFFSET): Replace by ... - (java_array_data_offset): New function. - (build_java_array_length_access): New function. Optimize if constant. - (build_java_arrayaccess): Constant fold bounds check. - (expand_java_newarray, expand_java_anewarray): Replaced by ... - (build_newarray, build_anewarray): New functions. - (ARRAY_NEW_NUM, ARRAY_NEW_PTR): Use build_{a,}newarray. - * verify.c (merge_types): Handle known-lengh array types. - -1998-01-19 Per Bothner - - * expr.c (expand_byte_code): Fix performace bug, which caused - searching linenumber_table to be linear rather than constant. - -1997-12-12 Per Bothner - - * Makefile.in (BISON, BISONFLAGS): Add missing macros. - - * decl.c, java-tree.h (soft_fmod_node): New global. - * decl.c (init_decl_processing): Define __builtin_fmod. - * expr.c (build_java_binop): Implement TRUNC_MOD_EXPR for REAL_TYPE - using __builtin_fmod. - -1997-12-04 Alexandre Petit-Bianco - - * keyword.h: New file, output of keyword.gperf as processed by - gperf. - * lex.c (java_lex_init): Initialize java_error_flag. - * parse.c (YYERROR_NOW): Uses java_error_flag. - * parse.y: New static java_error_flag. Useless definition of - buffer_error gone. - * parse.y (java_error): Portable error recovery using - java_error_flag (not yet completely tuned). - -1997-12-04 Brendan Kehoe - - * Makefile.in (parse.c): Use $(srcdir) for parse.y. - -1997-12-03 Alexandre Petit-Bianco - - * Makefile.in: (JAVA_OBJS): New object jcf-parse.o. - (parse.c, lex.c, keyword.h): New rules for Java source code - front-end. - * parse.c: Renamed into jcf-parse.c. - * jcf-parse.c (yyparse): Invoke the parser to process Java source code. - * keyword.gperf: New file, Java keywords. - * parse.y: New file, Java language grammar. - * parse.h: New file, Java language grammar definitions. - * lex.c: New file, Java language lexer. - * lex.h: New file, Java language lexer definitions. - -1997-12-03 Per Bothner - - * decl.c (clinit_identifier_node), java-tree.h: New global. - * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P): Removed. - * verify.c (verify_jvm_instructions): Inline use of removed macros. - * expr.c (expand_java_field_op): Check for invalid assignment - to final field. - - * jcf-reader.c (get_attribute): Test for wrong attribute length. - -1997-10-27 Per Bothner - - * verify.c (verify_jvm_instructions): When processing a handler, - attempt to set the current_subr to the right value. - (More complicated code combines Sep 17 and Oct 22 versions.) - -1997-10-24 Per Bothner - - * class.c (push_class): Figure out (guess) name of source file. - * parse.c (set_source_filename): Set DECL_SOURCE_FILE of class decl. - (give_name_to_class): Don't guess source name; use DECL_SOURCE_FILE. - (parse_class_file): Change return type from int to void. - Call debug_start_source_file/debug_end_source_file. - - * expr.c (build_java_binop): Fix masking 2nd operand. - * decl.c (init_decl_processing): Set sizetype first. - -1997-10-22 Per Bothner - - * verify.c (verify_jvm_instructions): Don't set current_subr to NULL. - (Revert Sep 17 change.) - -1997-10-21 Alexandre Petit-Bianco - - * parse.c (process_zip_dir): Skip ZIP entries not bearing the - .class extension in their name and fix thing so we don't process - them parse_zip_file_entries(). - (parse_zip_file_entries): Cleaned unused local variables. - -1997-10-20 Per Bothner - - * expr.c (can_widen_reference_to): Allows equal array element types. - (expand_byte_code): PRE_RET must expand OPERAND_VALUE (to get index). - * jcf-dump.c (RET): Get (and print) index. - - * verify.c (verify_jvm_instructions case OPCODE_anewarray): - Promote element type to POINTER_TYPE. - -1997-10-20 Alexandre Petit-Bianco - - * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir, - find_in_current_zip, jcf_figure_file_type): Moved from - jcf-reader.c to parse.c. - * zextract.c: (read_zip_archive): takes file_comment_length possible - field into account. - -1997-10-20 Per Bothner - - * verify.c (verify_jvm_instructions): Var can also be promoted to int. - - * verify.c (merge_types): Handle array types even better ... - -1997-10-17 Per Bothner - - * expr.c (java_stack_pop): Fix use of NULL_TREE for TYPE_SECOND. - - * java-tree.h (PUSH_FIELD): Set DECL_ARTIFICIAL. - * class.c (make_class_data): Don't build fields_decl if no fields. - When building fields_decl, skip if DECL_ARTIFICIAL. - - * expr.c (java_stack_swap): Update stack_type_map. - * verify.c (merge_types): Handle array types better. - -1997-10-15 Per Bothner - - * class.c (add_field): Don't promote short integral fields to - int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't. - * expr.c (push_value): Promote and convert short integral values. - - * decl.c, java-tree.h (integer_two_node): New constant node. - * verify.c (merge_types): Check for TYPE_RETURN_ADDR. - -1997-10-15 Alexandre Petit-Bianco - - * class.c (append_gpp_mangled_type): Use function argument - unpromoted type to generate mangled name. - -1997-10-13 Alexandre Petit-Bianco - - * constants.c (build_constant_data_ref): Now uses current_class - instead of main_class. - (build_constants_constructor): Now uses current_class instead of - main_class. - * zipfile.h: (struct ZipFileCache): Now defined here. Declaration - of the global variable SeepZipFiles done here. - * zextract.c (read_zip_archive): extra_field optional field taken - into account while computing the position of the class file in the - archive. - * verify.c (verify_jvm_instructions): Use current_jcf to search - the constant pool. - * parse.c (load_class): First search for the class to load in the - current zip file. Saves current_jcf (restored before returning - from that function). Don't call JCF_FINISH in the class was found - in the current ZIP file. - (jcf_parse): If the class was found in the current ZIP file, save - its tree_constant_pool (for later reuse). - (parse_class_file): New function. Process each method defined in - the current class and record the class as to be later registered. - (yyparse): Rewritten. Figure the type of the current file and switch - accordingly. - * lang.c: New global variable current_jcf. - (lang_init): Removed compiling_from_source test (done later, in - yyparse). Removed call the jcf_parse (). - * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values. - (typedef struct JCF): New fields seen_in_zip (to mark a class found - in the current ZIP file) and zip_offset (offset to the class data in - the current zip file). - * jcf-reader.c: zipfile.h included. - localToFile: New ZipFileCache static global variable - (parse_zip_file_entries): New function. Browse the current ZIP - file directory and process each class found. - (process_zip_dir): New function. Register each class found in the - ZIP file directory. The class aren't parsed but a valid JCF is - link to each of them. - (find_in_current_zip): New function. Search for a class in the - current ZIP file directory. If found, prepare the class so that it - can be loaded. - (jcf_figure_file_type): New function. Examine the file structure - to figure a class file, a ZIP file. If none of these categories are - matched, a source file is assumed. - * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h). - SeenZipFile: New global variable. - (open_in_zip): Use zipmember's length to accelerate the search for - a member. If zipmember was NULL and zip file successfully read, - return 0. - * java-tree.h: New global variable current_jcf declared. Added - declaration for current_constant_pool_tags, current_constant_pool_data, - current_constant_pool_length, current_constant_pool_data_ref. - (struct lang_type): Augmented with two fields. struct JCF *jcf (to - store the JCF of classes seen in a zip file) and tree *constant_pool - (to save a loaded class constant pool). current_class declared here. - * expr.c (expand_invoke): Use current_jcf instead of main_jcf to - retrieve method_ref_constant. - (PUSHC): java_push_constant_from_pool now uses current_jcf. - (OBJECT): get_class_constant now uses current_jcf. - (ARRAY_NEW_PTR): get_class_constant now uses current_jcf. - (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf. - (expand_invoke): Now uses current_class instead of main_class - (build_class_init): Now uses current_class instead of main_class - * class.c: New static global variable registered_class. - (register_class): New function. - (emit_register_class): Modified to use registered_class instead of - main_class - (is_compiled_class): Now take into account class seen in the archive. - -1997-10-06 Per Bothner - - * except.h: Renamed to: java-except.h. - * parse.c, except.c, expr.c, verify.c: Update #include accordingly. - * except.c: Add semi-working (commented out) implementation. - - * expr.c (expand_iinc): Add needed flush_quick_stack. - * parse.c (set_source_filename): New function. - (give_name_to_class): Set input_filename from package.classname.java. - - * jcf-io.c (find_class): Don't look first in ".". - -1997-10-01 Alexandre Petit-Bianco - - * zextract.c (read_zip_archive): Now takes into account the - extra_field field. - * expr.c (can_widen_reference_to): Modified to handle sub-interfaces. - -1997-09-20 Per Bothner - - * constants.c, java-tree.h (build_internal_class_name): New function. - (alloc_class_constant): Re-implement using build_internal_class_name. - * class.c (make_class_data): Likewise. - * class.c (hashUtf8String): Make hash algorithm match String.hashCode. - -1997-09-17 Per Bothner - - * verify.c (verify_jvm_instructions): Temporarily set current_subr - to NULL before pushing an exception handler target. - - * expr.c (flush_quick_stack): Save from low stack indexes to high. - (java_stack_swap, java_stack_dup): Re-write to be safe from - clobbering registers. - (build_class_init): New function. - -1997-09-17 Alexandre Petit-Bianco - - * typeck.c (build_java_array_type): Temporary use - permanent_obstack to create the array 'length' field. - * expr.c (lookup_label): Temporay use permanent_obstack to create - label if not found. - * class.c (push_super_field): Tempory use permanent_obstack. - -1997-09-15 Alexandre Petit-Bianco - - * typeck.c (type_for_mode): Now handles double_type_node and - float_type_node. - * verify.c (verify_jvm_instructions): The instruction following - the wide bytecode is checked. OPCODE_ret added to the list of - wide. - -1997-09-11 Alexandre Petit-Bianco - - * class.c (make_class): Temporary use permanent_obstack. Set the - class CLASS_P field to 1. - (push_class): Temporary use permanent_obstack. - (set_super_info): Temporary use permanent_obstack. - (add_method): Temporary use permanent_obstack, set - METHOD_TRANSIENT(). - (add_field): Temporary use permanent_obstack. Sets - FIELD_VOLATILE() and FIELD_TRANSIENT(). - (build_class_ref): Temporary use permanent_obstack if the class - isn't compiled. - (build_static_field_ref): Temporary use permanent_obstack when - creating field's rtl. - (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT, - ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods - and fields. Function finalized, as far as flag handling. - (push_class_static_dummy_field): Temporary use permanent_obstack. - (emit_register_class): Force generation of class registration at - -O3 or deeper. - * decl.c (end_java_method): Call permanent_allocation() before - returning. - * expr.c (can_widen_reference_to): Added comment to interface - handling, fixed typo. - (lookup_field): Now uses CLASS_P() to correct FIXME - (expand_invoke): Verification on public && !static && - !abstract moved into soft_lookupinterfacemethod (kaffe). - Use Object class dtable if objectref is an array when expanding - invokeinterface. - (java_push_constant_from_pool): Temporary use permanent_obstack - for CONSTANT_string - * parse.c (get_ref_constant): Temporary use permanent_obstack to - create constant references. - (get_constant): Temporary use permanent_obstack to create constant. - (load_class): Temporary use permanent_obstack to load class. - (jcf_parse): Temporary use permanent_obstack to perform class - layout. - * typeck.c: (parse_signature_string): Temporary use permanent_obstack. - (build_java_signature): Temporary use permanent_obstack. - * verify.c: (verify_jvm_instruction): removed unnecessary verification - on ACC_SUPER flag. - * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined. - (FIELD_VOLATILE, FIELD_TRANSIENT): Defined. - (CLASS_P): Defined - -1997-09-11 Per Bothner - - * class.c (append_gpp_mangled_type): Fix typo. - (emit_register_class): Use main_class to get class object, rather - than looking for no-longer-existing static decl starting with _CL. - * typeck.c (parse_signature_type): Promote array element type - if it is a RECORD_TYPE. - -1997-09-10 Per Bothner - - * class.c (push_class_static_dummy_field): New function. - (mangle_static_field): New. Do G++-style mangling of static fields. - (layout_class): Mandle static fields here, not in add_field. - (build_class_ref): The class object is now a dummy static field. - * decl.c (find_local_variable): Look for best, instead of first match. - * expr.c (push_type): Always promote_type, not just for RECORD_TYPE. - (build_java_athrow): Don't check here if exception is Throwable. - * java-tree.h (TYPE_UNSET): Renamed to TYPE_UNKNOWN. - (TYPE_USED): Removed. No longer used ... - * parse.c (jcf_parse): Call push_class_static_dummy_field. - * verify.c (push_pending_label): New function. - (push_pending_block): Renamed to check_pending_block. - (merge_types): Remove unneeded suuport for TYPE_UNUSED. - (verify_jvm_instructions): Only reset prev_eh_ranges (to force - re-checking possible handlers) after a store (less wasted work). - Check for null handler (finally) before calling add_handler. - Various changes to (finally?) correctly handle try/finally. - -1997-09-09 Brendan Kehoe - - * class.c: Include stdio.h. - -1997-09-04 Per Bothner - - * expr.c (expand_invoke): Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS) - to make sure class is initialized before static/special invoke. - - * verify.c (verify_jvm_instructions): On a store instruction, - call find_local_variable to force pre-allocation of decl and rtx. - * decl.c (push_jvm_slot): Set DECL_REGISTER on stack slots. - -1997-09-03 Per Bothner - - * class.c (build_class_ref): Strip off "promoted_" if need be. - (make_field_value): Call build_java_signature when needed. - (layout_class): Don't make_function_rtl if METHOD_ABSTRACT. - * expr.c (build_java_athrow): Don't push_value of exception. - (build_java_binop): Implement COMPARE_L_EXPR and COMPARE_G_EXPR to - match specification of [fd]cmp[lg] for NaNs. - (expand_byte_code): Add support for exception handler ranges. - * except.c: Add skeleton for EH code-generation. - * verify.c (merge_types): Treat all promoted integral types as equal. - * constants.c (build_constants_constructor): To force creation of - current_constant_pool_data_ref, call build_constant_data_ref. - - * javaop.def (lload): Fix typo. - * jcf-dump.c (main): Clear filename to prevent possibly-bad free. - -1997-09-02 Brendan Kehoe - - * parse.c: Don't include function.h. - -1997-08-27 Per Bothner - - * except.[ch]: New files. - * Makefile.in (JAVA_OBJS): Add except.o - * expr.c: Temporary warning about unimplemented exceptions. - * verify.c: Verify exception handlers. - - * jcf-dump.c (disassemble_method): Print exception table. - -1997-08-27 Alexandre Petit-Bianco - - * expr.c (verify_jvm_instructions): Started a thorough - verification of invoke* bytecodes. - (expand_byte_code): flush quick stack if PC is the target of a - branch. and undef RET (conflicting with config/i386/i386.h). - (expand_java_arrayload): Fixed bogus cast, when Boolean type is - used. - (expand_invoke): Now handles invokeinterface and do more - verification according to the bytecode. - (lookup_field): Don't try to load the class if processing - dtable_type. - (can_widen_reference_to): Now handles interfaces. - * decl.c (init_decl_processing): New global variable - soft_lookupinterfacemethod_node, declared in java-tree.h. - Call set_super_info on string_type_node. - * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now - defined. - * class.c (set_super_info): Fills the CLASS_* flags according to - access_flags. - (get_access_flags_from_decl): Handles all class flags. - -1997-08-26 Per Bothner - - * class.c (add_method): Zero out newly-allocated DECL_LANG_SPECIFIC. - * parse.c (yyparse): Check for abstract method, and missing code. - * expr.c (expand_byte_code): Change interface. - * lang.c (put_decl_node): Print promoted types prettier. - * verify.c (verify_jvm_instruction): Change interface. - Partial support for scanning exception table. - For load instructions, handle promoted integral types. - -1997-08-21 Per Bothner - - * verify.c: New file, with contents moved from expr.c. - * expr.c: Bunch of stuff (mostly verification) moved to verify.c. - * typeck.c (is_array_type_p): Moved here from expr.c. - * java-tree.h: Add some now-needed function declarations. - * Makefile.in (JAVA_OBJS): Added verify.o. - -1997-08-20 Alexandre Petit-Bianco - - * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the - METHOD_ABSTRACT flag. - - * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4. - (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros. - (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5 - - * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global - variables. - (start_java_method): Hook for SYNCHRONIZED methods. - - * expr.c (build_java_jsr, build_java_ret): New functions - (JSR,PRE): New macros - (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured. - (verify_jvm_instructions): tableswitch, lookupswitch, - monitorenter, monitorexit, goto_w: verified. - (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label - (build_java_monitor): New function. - (MONITOR_OPERATION): Modified to call build_java_monitor() - (verify_jvm_instructions): Started a thorough verification of - invoke* bytecodes. - -1997-08-19 Per Bothner - - Support verification of jsr/ret subroutines (used for try/finally). - * decl.c (return_address_type_node): New type node. - * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE, - RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR, - LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED): New macros. - (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED, - TYPE_USED): New macros for special types in type_map. - - * java-tree.h (BCODE_JUMP_TARGET): Renamed to BCODE_TARGET. - (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET): Replaced by - BCODE_JUMP_TARGET. - * expr.c (expand_byte_code): Fix logic to warn of unused instructions. - - * expr.c (can_widen_reference_to): New function. - (pop_type): Use it. - (merge_type_state): Support handling start of subroutine. - (push_pending_block): Return char* error message, instead of calling - fatal on an error. Also handle subroutines. - (verify_jvm_instructions): Handle errors from push_poending_block. - Support jsr and ret instructions. - -1997-08-19 Per Bothner - - * jcf-io.c (find_classfile): Fix thinko. - * jcf-dump.c: Add CONVERT2 (to match changed javaop.def). - -1997-08-12 Jason Merrill - - * Makefile.in (BISON): Remove. - -1997-08-07 Per Bothner - - * Makefile.in: Convert to autoconf. - * config-lang.in (outputs): Added java/Makefile. - - * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in: - Rename cc1java to jc1. - - * lang.c (init_parse, finihs_parse): New functions #ifdef USE_CPPLIB. - * Makefile.in (INTERNAL_CFLAGS): Add @extra_c_flags. - - * class.c (class_depth): Do load_class if needed. - - Mostly better verification. - * decl.c (pushdecl): Set TYPE_STUB_DECL for a type. - (init_decl_processing): Change return type of soft_checkcast. - * expr.c (expand_java_CHECKCAST): Do push_value of the "casted" value. - * lang.c (put_decl_string, put_decl_node, lang_printable_name, - lang_print_error): New functions. - (lang_init): Set global hook print_error_function to lang_print_error. - * expr.c: In the type_map ptr_type_node is only used for null now. - (pop_type, merge_types): Hence ptr_type_node matches any reference. - (merge_types): Dererence pointer to record types before comparing. - (decode_newarray_type, merge_types): On error just return NULL. - (build_java_binop): Add preliminary implementation (with warning) - for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]). - (lookup_label): Set DECL_IGNORED_P (for dwarf2out). - (expand_compare, expand_java_goto, expand_java_call): Don't - push_pending_block, since that only makes sense when verifying. - (merge_type_state): Different return codes. - (push_pending_block): A block may need to be verified more than once. - (expand_byte_code): Warn about unused code at code generation time. - (verify_jvm_instruction): Changed logic, since code may need to be - re-verified if type-state has changed. Also, better error handling. - Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof. - Improve newarray, anewarray, ?aload, athrow, - * java-tree.h (LABEL_CHANGED): New macro. - -1997-08-05 Alexandre Petit-Bianco - - * decl.c (soft_athrow_node): New global variable initialized. - * javaop.def (i2b, i2c, i2s): Invoke CONVERT2 - * typeck.c (convert): Added support for REAL_TYPE. - (convert_to_char): New function. - (convert): Handle CHAR_TYPE. - * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/ - SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT. - (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to - promoted type. - (verify_jvm_instructions): Added break a the end of bogus unop: label. - (OPCODE_astore): Pop an int operand from the type stack - (OPCODE_astore): Push the promoted type onto the stack - (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b. - (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified - to Use The Right Things. - (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as - compatible with INT. BOOLEAN is made equivalent to BYTE. - (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull, - OPCODE_ifnonnull): Now supported. - (build_java_athrow): New function. - -1997-08-04 Per Bothner - - Rename method name to match G++ (and fix mangling). - * class.c (layout_class): Replace method name of by class name. - (make_method_value): Do inverse renaming of constructor from . - * java-tree.h (DECL_CONSTRUCTOR_P): New macro. - * typeck.c (lookup_java_constructor): New function. - * expr.c (expand_invoke): If method_name is , call - lookup_java_constructor to find constructor. - - * parse.c (get_constant): Handle CONSTANT_Float and CONSTANT_Double. - -1997-08-01 Alexandre Petit-Bianco - - * parse.c (get_class_constant): Modified to handle array "classes" - * typeck.c (set_local_type): Bug fixed when filling type_map[] with - wide type. - (convert): Modified to handle real type. - * java-tree.h (soft_badarrayindex_node, soft_anewarray_node, - soft_multianewarray, soft_newarray_node, soft_throw_node): New global - variables declared. - * decl.c (soft_badarrayindex_node, soft_anewarray_node, - soft_multianewarray, soft_newarray_node, soft_throw_node): New - global variables initialized. - (find_local_variable): Handles the case of a pointer - (end_java_method): Restore the use of one more scope - * expr.c (build_java_arraynull_check, build_java_arrayaccess, - build_java_array_length_access, expand_java_arrayload, - expand_java_arraystore, expand_java_array_length, - expand_java_multianewarray, expand_java_anewarray, - build_java_check_indexed_type, is_array_type_p, - build_java_throw_out_of_bound_exception): New functions. - (STORE_INTERNAL): Now forces type of the decl to be type of the value. - (OPCODE_arraylength, OPCODE_newarray, OPCODE_astore, - OPCODE_aload): Implemented code for verification. - (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM - ARRAY_NEW_MULTI): Macro defined. - (CONVERT): Modified to invoke convert(). - (case OPCODE_aload2): Fixed index typo from 2 to 1. - -1997-07-31 Per Bothner - - * class.c (push_class): Set DECL_ARTIFICIAL (for dbxout.c). - (build_class_ref, is_compiled_class): Handle pointer-to-record types. - (make_class_data): Field name needs '/' as package prefix. - * expr.c (type_stack_dup, java_stack_dup): Fix fencepost errors. - -1997-07-25 Per Bothner - - Implement debug information for local variables. - * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT, - DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC, - DECL_LOCAL_SLOT_CHAIN): New macros. - (struct lang_decl_var): New type. - * parse.c (give_name_to_locals): Move to decl.c. - * decl.c (give_name_to_locals): Re-written to Do The Right Thing. - (start_java_method): Re-write parameter handling. - (pending_local_decls): New global variable. - (push_jvm_slot, maybe_pushlevels, maybe_poplevels): New functions. - (find_local_variable): Accept pc so we can skips decls not in range. - (struct binding_level): Add end_pc field. - * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels. - (various): Change so current pc gets passed to find_local_variable. - - * decl.c (init_decl_processing): Re-arrange fields in - class_type_node and and method_type_node to match kaffe 0.9.1. - * class.c (make_method_value, make_class_data): Update - initializations to match. - -1997-07-16 Per Bothner - - * class.c (unicode_mangling_length, emit_unicode_mangled_name, - append_gpp_mangled_name, append_gpp_mangled_type): New functions. - (push_super_field): New function. - (make_class_data): Handle inheritance of class static initializer. - (layout_class): New name mangling. - * constants.c (build_constant_data_ref): Init type of data array - to a one-element array. - (build_constants_constructor): Set DECL_SIZE from complete array type. - * decl.c: Rename class_type, object_type etc to class_type_node, - object_type_node etc. Make former inherit from latter. - * expr.c (expand_invoke): Add cast of function address. - * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE): New. - * parse.c (yyparse): Don't call layout_class here. - * typeck.c (build_java_array_type): Set TYPE_ARRAY_ELEMENT. - -1997-06-14 Per Bothner - - * decl.c, class.c: Update method type to match latest Kaffe snapshot. - * constants.c (lookup_name_constant): Renamed to alloc_name_constant. - (alloc_class_constant): New. - * expr.c (expand_invoke): Make sure method's class is initialized. - * class.c (interits_from_p, emit_register_class): New functions. - * parse.c (yyparse): Call emit_register_class. - -1997-06-09 Per Bothner - - * constants.c: New file, to handle constant pool. - * Makefile.in (JAVA_OBJS): Add constants.o. - * decl.c (init_decl_processing): Update, fix, finish various structs. - (pushdecl_top_level): New. - * parse.c (layout_class): Moved to class.c. - * expr.c (java_push_constant_from_pool): New function. - * class.c (build_class_ref): Make work fully - (make_class_data): Emit super-class, constant pool, interface vector. - -1997-06-03 Per Bothner - - java-tree.h (DECL_SIGNATURE, BCODE_EMITTED): Remove. - (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P): New. - * class.c (class_depth): New function. - (lookup_named_class): Replaced by new function lookup_class. - * decl.c (object_type_node, string_type_node): New. - Remove various types that we no longer need. - * expr.c (verify_jvm_instructions): New separate verifier pass. - (push_type, pop_type): New functions for verifier. - (type_stack_dup, pop_argument_types, merge_types): Likewise. - (expand_byte_code): Simplify, since we assume already verified. - (expand_invoke): Now mostly works. - * javaop.def: Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w. - * lang.c (main_class): Move to parse.c. Don't make_class yet. - * parse.c: Wait to allocate class object until we know its name. - (layout_class): Calculate DECL_VINDEX for each virtual method. - * typeck.c (get_array_type): Rename to ... - (build_java_array_type): ... and provide working implementation. - (build_java_signature): New function - build Java signature of type. - (set_java_signature): New function - cache signature with type. - (lookup_java_method): New function. - -1997-05-06 Per Bothner - - * class.c (ident_subst): Take extra SUFFIX parameter. - (add_field): Set DECL_ASSEMBLER_NAME of static fields; more. - (set_constant_value, build_static_field_ref, is_compiled_class): New. - (build_class_ref): Actually implement. - * decl.c, java-tree.h: Renamed some xx_type to xx_type_node. - * decl.c (builtin_function): New. - (init_decl_processing): Update for current Kaffe. Declare some - builtin Kaffe functions. - * expr.c (build_address_of): New. - (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST): - Renamed (from expand_java_new etc), and added working implementations. - (build_field_ref): Now also handle static fields. - (expand_invoke): Implement invokestatic, and start implement rest. - * java-opcodes.h: Use javaop.def to avoid duplicated list. - * javaop.def: Rename invokevirt -> invokevirtual. - * lang.c (use_handles): Removed. - * parse.c: Add support for ConstantValue attribute. - Handle nested loading of a class. (JPOOL_UTF): New. - -1997-03-11 Per Bothner - - * expr.c (expand_java_pushc): Support #ifndef REAL_ARITHMETIC case. - -1997-02-27 Per Bothner - - * Make-lang.in (java.install-man): New empty rule. - * typeck.c (set_local_type): New function. - * expr.c (STORE_INTERNAL): Call find_local_variable, - not find_stack_slot. Call set_local_type. - -1997-02-12 Per Bothner - - * java-tree.h: Various new macros for constructing RECORD_TYPEs, - and building RECORD_TYPE CONSTRUCTORs. - Also support for creating Utf8Const objects from an INDETIFIER_NODE. - - * lang.c (use_handles): Change the default to 0. - * decl.c: Define and build class_type, field_type, utf8const_type. - * class.c (make_class_data, make_field_value, - get_access_flags_from_decl, build_class_ref, build_utf8_ref, - hashUtf8String, strLengthUtf8, mangled_classname: - Functions to build reflective data structures. - * parse.c (yyparse): Call make_class_data. - - * jcf-io.c (open_class, find_classfile): New functions. - * jcf-dump.c: Support reading classfile from explicitly-named - class file (without CLASSPATH searching). - -1996-10-24 Per Bothner - - * jcf-reader.c: Add parameter list to HANDLE_CONSTANT_Utf8. - * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8): - Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here. - (get_constant): Now trivial for CONSTANT_Utf8. - - * jcf.h: Make NEW_CPOOL the default. - * jcf.h, jcf-reader.c, parse.c: Remove support for !NEW_CPOOL. - -1996-10-24 Per Bothner - - New directory. - - -Copyright (C) 1996-2013 Free Software Foundation, Inc. - -Copying and distribution of this file, with or without modification, -are permitted in any medium without royalty provided the copyright -notice and this notice are preserved. -- cgit v1.2.1 From e4f22041750b1c96906e3b990bec301b7caa3690 Mon Sep 17 00:00:00 2001 From: rsandifo Date: Thu, 2 Jan 2014 22:09:02 +0000 Subject: gcc/ * common/config/arc/arc-common.c, config/arc/arc-modes.def, config/arc/arc-protos.h, config/arc/arc.c, config/arc/arc.h, config/arc/arc.md, config/arc/arc.opt, config/arm/arm_neon_builtins.def, config/arm/crypto.def, config/i386/avx512cdintrin.h, config/i386/avx512erintrin.h, config/i386/avx512fintrin.h, config/i386/avx512pfintrin.h, config/i386/btver2.md, config/i386/shaintrin.h, config/i386/slm.md, config/linux-protos.h, config/linux.c, config/winnt-c.c, diagnostic-color.c, diagnostic-color.h, gimple-ssa-isolate-paths.c, vtable-verify.c, vtable-verify.h: Use the standard form for the copyright notice. gcc/c-family/ * array-notation-common.c, c-cilkplus.c: Use the standard form for the copyright notice. gcc/c/ * c-array-notation.c: Use the standard form for the copyright notice. gcc/cp/ * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use the standard form for the copyright notice. gcc/testsuite/ * gcc.target/arc/arc.exp: Use the standard form for the copyright notice. libgcc/ * config/arc/asm.h, config/arc/crtg.S, config/arc/crtgend.S, config/arc/crti.S, config/arc/crtn.S, config/arc/divtab-arc700.c, config/arc/dp-hack.h, config/arc/fp-hack.h, config/arc/ieee-754/adddf3.S, config/arc/ieee-754/addsf3.S, config/arc/ieee-754/arc600-dsp/divdf3.S, config/arc/ieee-754/arc600-dsp/divsf3.S, config/arc/ieee-754/arc600-dsp/muldf3.S, config/arc/ieee-754/arc600-dsp/mulsf3.S, config/arc/ieee-754/arc600-mul64/divdf3.S, config/arc/ieee-754/arc600-mul64/divsf3.S, config/arc/ieee-754/arc600-mul64/muldf3.S, config/arc/ieee-754/arc600-mul64/mulsf3.S, config/arc/ieee-754/arc600/divsf3.S, config/arc/ieee-754/arc600/mulsf3.S, config/arc/ieee-754/divdf3.S, config/arc/ieee-754/divsf3-stdmul.S, config/arc/ieee-754/divsf3.S, config/arc/ieee-754/divtab-arc-df.c, config/arc/ieee-754/divtab-arc-sf.c, config/arc/ieee-754/eqdf2.S, config/arc/ieee-754/eqsf2.S, config/arc/ieee-754/extendsfdf2.S, config/arc/ieee-754/fixdfsi.S, config/arc/ieee-754/fixsfsi.S, config/arc/ieee-754/fixunsdfsi.S, config/arc/ieee-754/floatsidf.S, config/arc/ieee-754/floatsisf.S, config/arc/ieee-754/floatunsidf.S, config/arc/ieee-754/gedf2.S, config/arc/ieee-754/gesf2.S, config/arc/ieee-754/gtdf2.S, config/arc/ieee-754/gtsf2.S, config/arc/ieee-754/muldf3.S, config/arc/ieee-754/mulsf3.S, config/arc/ieee-754/orddf2.S, config/arc/ieee-754/ordsf2.S, config/arc/ieee-754/truncdfsf2.S, config/arc/ieee-754/uneqdf2.S, config/arc/ieee-754/uneqsf2.S, config/arc/initfini.c, config/arc/lib1funcs.S, config/arc/t-arc, config/arc/t-arc-newlib, config/cris/umulsidi3.S, config/msp430/cmpsi2.S, config/msp430/epilogue.S, config/msp430/lib2bitcountHI.c, config/msp430/lib2divHI.c, config/msp430/lib2divQI.c, config/msp430/lib2divSI.c, config/msp430/lib2mul.c, config/msp430/msp430-divmod.h, config/msp430/msp430-mul.h, config/msp430/slli.S, config/msp430/srai.S, config/msp430/srli.S, config/rl78/divmodhi.S, config/rl78/divmodqi.S, config/rl78/divmodsi.S, config/rl78/signbit.S, vtv_end.c, vtv_end_preinit.c, vtv_start.c, vtv_start_preinit.c: Use the standard form for the copyright notice. libgomp/ * hashtab.h: Use the standard form for the copyright notice. libstdc++-v3/ * testsuite/18_support/new_handler.cc, testsuite/18_support/terminate_handler.cc, testsuite/18_support/unexpected_handler.cc: Use the standard form for the copyright notice. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206288 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 13 +++++++++++++ gcc/c-family/ChangeLog | 5 +++++ gcc/c-family/array-notation-common.c | 2 +- gcc/c-family/c-cilkplus.c | 2 +- gcc/c/ChangeLog | 4 ++++ gcc/c/c-array-notation.c | 2 +- gcc/common/config/arc/arc-common.c | 3 +-- gcc/config/arc/arc-modes.def | 2 +- gcc/config/arc/arc-protos.h | 2 +- gcc/config/arc/arc.c | 3 +-- gcc/config/arc/arc.h | 3 +-- gcc/config/arc/arc.md | 3 +-- gcc/config/arc/arc.opt | 2 +- gcc/config/arm/arm_neon_builtins.def | 3 +-- gcc/config/arm/crypto.def | 3 +-- gcc/config/i386/avx512cdintrin.h | 3 +-- gcc/config/i386/avx512erintrin.h | 3 +-- gcc/config/i386/avx512fintrin.h | 3 +-- gcc/config/i386/avx512pfintrin.h | 3 +-- gcc/config/i386/btver2.md | 2 +- gcc/config/i386/shaintrin.h | 3 +-- gcc/config/i386/slm.md | 2 +- gcc/config/linux-protos.h | 3 +-- gcc/config/linux.c | 3 +-- gcc/config/winnt-c.c | 3 +-- gcc/cp/ChangeLog | 5 +++++ gcc/cp/cp-array-notation.c | 2 +- gcc/cp/cp-cilkplus.c | 2 +- gcc/cp/vtable-class-hierarchy.c | 2 +- gcc/diagnostic-color.c | 2 +- gcc/diagnostic-color.h | 2 +- gcc/gimple-ssa-isolate-paths.c | 3 +-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/arc/arc.exp | 2 +- gcc/vtable-verify.c | 3 +-- gcc/vtable-verify.h | 3 +-- 36 files changed, 63 insertions(+), 48 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f9699173985..7a6602c2208 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2014-01-02 Richard Sandiford + + * common/config/arc/arc-common.c, config/arc/arc-modes.def, + config/arc/arc-protos.h, config/arc/arc.c, config/arc/arc.h, + config/arc/arc.md, config/arc/arc.opt, config/arm/arm_neon_builtins.def, + config/arm/crypto.def, config/i386/avx512cdintrin.h, + config/i386/avx512erintrin.h, config/i386/avx512fintrin.h, + config/i386/avx512pfintrin.h, config/i386/btver2.md, + config/i386/shaintrin.h, config/i386/slm.md, config/linux-protos.h, + config/linux.c, config/winnt-c.c, diagnostic-color.c, + diagnostic-color.h, gimple-ssa-isolate-paths.c, vtable-verify.c, + vtable-verify.h: Use the standard form for the copyright notice. + 2014-01-02 Tobias Burnus * gcc.c (process_command): Update copyright notice dates. diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 5895ed37604..054dfdcb9fd 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2014-01-02 Richard Sandiford + + * array-notation-common.c, c-cilkplus.c: Use the standard form for + the copyright notice. + 2013-12-28 Eric Botcazou * c-ada-spec.c (print_constructor): New function. diff --git a/gcc/c-family/array-notation-common.c b/gcc/c-family/array-notation-common.c index c54f444f757..4e77fad252b 100644 --- a/gcc/c-family/array-notation-common.c +++ b/gcc/c-family/array-notation-common.c @@ -1,7 +1,7 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support This file contains the builtin functions for Array notations. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013 Free Software Foundation, Inc. Contributed by Balaji V. Iyer , Intel Corporation diff --git a/gcc/c-family/c-cilkplus.c b/gcc/c-family/c-cilkplus.c index 6fa979d652d..2cc2dd9d287 100644 --- a/gcc/c-family/c-cilkplus.c +++ b/gcc/c-family/c-cilkplus.c @@ -1,7 +1,7 @@ /* This file contains routines to construct and validate Cilk Plus constructs within the C and C++ front ends. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013 Free Software Foundation, Inc. Contributed by Aldy Hernandez . This file is part of GCC. diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 58631eeea09..61cb2304a97 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + * c-array-notation.c: Use the standard form for the copyright notice. + 2013-12-18 Balaji V. Iyer * c-parser.c (struct c_parser::cilk_simd_fn_tokens): Added new field. diff --git a/gcc/c/c-array-notation.c b/gcc/c/c-array-notation.c index 5747bcb5ca8..f85f95f703d 100644 --- a/gcc/c/c-array-notation.c +++ b/gcc/c/c-array-notation.c @@ -1,7 +1,7 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support This file contains routines to handle Array Notation expression handling routines in the C Compiler. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013 Free Software Foundation, Inc. Contributed by Balaji V. Iyer , Intel Corporation. diff --git a/gcc/common/config/arc/arc-common.c b/gcc/common/config/arc/arc-common.c index 36e60ebc9d8..32064914588 100644 --- a/gcc/common/config/arc/arc-common.c +++ b/gcc/common/config/arc/arc-common.c @@ -1,6 +1,5 @@ /* Common hooks for Synopsys DesignWare ARC - Copyright (C) 1994, 1995, 1997, 1998, 2007-2013 - Free Software Foundation, Inc. + Copyright (C) 1994-2013 Free Software Foundation, Inc. Contributor: Joern Rennecke on behalf of Synopsys Inc. diff --git a/gcc/config/arc/arc-modes.def b/gcc/config/arc/arc-modes.def index 8c738dda497..14d97ab174a 100644 --- a/gcc/config/arc/arc-modes.def +++ b/gcc/config/arc/arc-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu. - Copyright (C) 2002, 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2013 Free Software Foundation, Inc. Contributor: Joern Rennecke on behalf of Synopsys Inc. diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h index 0939bc04bb4..7559a5af49f 100644 --- a/gcc/config/arc/arc-protos.h +++ b/gcc/config/arc/arc-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu. - Copyright (C) 2000, 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 77932ce567c..e75ae59604b 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -1,6 +1,5 @@ /* Subroutines used for code generation on the Synopsys DesignWare ARC cpu. - Copyright (C) 1994, 1995, 1997, 2004, 2007-2013 - Free Software Foundation, Inc. + Copyright (C) 1994-2013 Free Software Foundation, Inc. Sources derived from work done by Sankhya Technologies (www.sankhya.com) on behalf of Synopsys Inc. diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h index 88102f0a532..18c8fb2ccd7 100644 --- a/gcc/config/arc/arc.h +++ b/gcc/config/arc/arc.h @@ -1,6 +1,5 @@ /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu. - Copyright (C) 1994, 1995, 1997, 1998, 2007-2013 - Free Software Foundation, Inc. + Copyright (C) 1994-2013 Free Software Foundation, Inc. Sources derived from work done by Sankhya Technologies (www.sankhya.com) on behalf of Synopsys Inc. diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md index 64b4162a877..ffb7123563c 100644 --- a/gcc/config/arc/arc.md +++ b/gcc/config/arc/arc.md @@ -1,6 +1,5 @@ ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler -;; Copyright (C) 1994, 1997, 1999, 2006-2013 -;; Free Software Foundation, Inc. +;; Copyright (C) 1994-2013 Free Software Foundation, Inc. ;; Sources derived from work done by Sankhya Technologies (www.sankhya.com) on ;; behalf of Synopsys Inc. diff --git a/gcc/config/arc/arc.opt b/gcc/config/arc/arc.opt index 26e0de43fda..3837c7a7e28 100644 --- a/gcc/config/arc/arc.opt +++ b/gcc/config/arc/arc.opt @@ -1,6 +1,6 @@ ; Options for the Synopsys DesignWare ARC port of the compiler ; -; Copyright (C) 2005, 2007-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2013 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/arm/arm_neon_builtins.def b/gcc/config/arm/arm_neon_builtins.def index 5fa17bd0bf1..50688819806 100644 --- a/gcc/config/arm/arm_neon_builtins.def +++ b/gcc/config/arm/arm_neon_builtins.def @@ -1,6 +1,5 @@ /* NEON builtin definitions for ARM. - Copyright (C) 2013 - Free Software Foundation, Inc. + Copyright (C) 2013 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/arm/crypto.def b/gcc/config/arm/crypto.def index 0b3a395b452..b2cb567212d 100644 --- a/gcc/config/arm/crypto.def +++ b/gcc/config/arm/crypto.def @@ -1,6 +1,5 @@ /* Cryptographic instruction builtin definitions. - Copyright (C) 2013 - Free Software Foundation, Inc. + Copyright (C) 2013 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/i386/avx512cdintrin.h b/gcc/config/i386/avx512cdintrin.h index 6186e06bdbe..4afd5559969 100644 --- a/gcc/config/i386/avx512cdintrin.h +++ b/gcc/config/i386/avx512cdintrin.h @@ -1,5 +1,4 @@ -/* Copyright (C) 2013 - Free Software Foundation, Inc. +/* Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/avx512erintrin.h b/gcc/config/i386/avx512erintrin.h index 4583d690378..87e03dfce06 100644 --- a/gcc/config/i386/avx512erintrin.h +++ b/gcc/config/i386/avx512erintrin.h @@ -1,5 +1,4 @@ -/* Copyright (C) 2013 - Free Software Foundation, Inc. +/* Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/avx512fintrin.h b/gcc/config/i386/avx512fintrin.h index 40e82134273..1917811bba0 100644 --- a/gcc/config/i386/avx512fintrin.h +++ b/gcc/config/i386/avx512fintrin.h @@ -1,5 +1,4 @@ -/* Copyright (C) 2013 - Free Software Foundation, Inc. +/* Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/avx512pfintrin.h b/gcc/config/i386/avx512pfintrin.h index 4dba640458d..f4211a5dfc4 100644 --- a/gcc/config/i386/avx512pfintrin.h +++ b/gcc/config/i386/avx512pfintrin.h @@ -1,5 +1,4 @@ -/* Copyright (C) 2013 - Free Software Foundation, Inc. +/* Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/btver2.md b/gcc/config/i386/btver2.md index e872d602f58..7ba2583b713 100644 --- a/gcc/config/i386/btver2.md +++ b/gcc/config/i386/btver2.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2012, Free Software Foundation, Inc. +;; Copyright (C) 2012 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/shaintrin.h b/gcc/config/i386/shaintrin.h index 58c5c5d1206..7eede49df81 100644 --- a/gcc/config/i386/shaintrin.h +++ b/gcc/config/i386/shaintrin.h @@ -1,5 +1,4 @@ -/* Copyright (C) 2013 - Free Software Foundation, Inc. +/* Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/slm.md b/gcc/config/i386/slm.md index 3ac919e372c..16e9b0a73a6 100644 --- a/gcc/config/i386/slm.md +++ b/gcc/config/i386/slm.md @@ -1,5 +1,5 @@ ;; Slivermont(SLM) Scheduling -;; Copyright (C) 2009, 2010 Free Software Foundation, Inc. +;; Copyright (C) 2009-2010 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/linux-protos.h b/gcc/config/linux-protos.h index cfc660ab4df..0a8f674d03b 100644 --- a/gcc/config/linux-protos.h +++ b/gcc/config/linux-protos.h @@ -1,6 +1,5 @@ /* Prototypes. - Copyright (C) 2013. - Free Software Foundation, Inc. + Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/linux.c b/gcc/config/linux.c index ffaf614bc1a..13de1a9ae77 100644 --- a/gcc/config/linux.c +++ b/gcc/config/linux.c @@ -1,6 +1,5 @@ /* Functions for Linux Android as target machine for GNU C compiler. - Copyright (C) 2013. - Free Software Foundation, Inc. + Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/winnt-c.c b/gcc/config/winnt-c.c index d52db62afd2..3d5958f91ff 100644 --- a/gcc/config/winnt-c.c +++ b/gcc/config/winnt-c.c @@ -1,6 +1,5 @@ /* Default C-family target hooks initializer. - Copyright (C) 2013 - Free Software Foundation, Inc. + Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 146e67c589a..67c6d8e2273 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2014-01-02 Richard Sandiford + + * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use + the standard form for the copyright notice. + 2013-12-23 Jason Merrill PR c++/59271 diff --git a/gcc/cp/cp-array-notation.c b/gcc/cp/cp-array-notation.c index e1fb0ee99ad..f551706eb2c 100644 --- a/gcc/cp/cp-array-notation.c +++ b/gcc/cp/cp-array-notation.c @@ -1,7 +1,7 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support It contains routines to handle Array Notation expression handling routines in the C++ Compiler. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013 Free Software Foundation, Inc. Contributed by Balaji V. Iyer , Intel Corporation diff --git a/gcc/cp/cp-cilkplus.c b/gcc/cp/cp-cilkplus.c index d3f3323721e..c1edb436953 100644 --- a/gcc/cp/cp-cilkplus.c +++ b/gcc/cp/cp-cilkplus.c @@ -1,7 +1,7 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support This file contains routines to handle Cilk Plus specific routines for the C++ Compiler. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013 Free Software Foundation, Inc. Contributed by Aldy Hernandez . This file is part of GCC. diff --git a/gcc/cp/vtable-class-hierarchy.c b/gcc/cp/vtable-class-hierarchy.c index 4eb78eee4be..5289bdab1d4 100644 --- a/gcc/cp/vtable-class-hierarchy.c +++ b/gcc/cp/vtable-class-hierarchy.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/diagnostic-color.c b/gcc/diagnostic-color.c index a1c508a0735..8abb6975bc9 100644 --- a/gcc/diagnostic-color.c +++ b/gcc/diagnostic-color.c @@ -1,5 +1,5 @@ /* Output colorization. - Copyright 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2013 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/gcc/diagnostic-color.h b/gcc/diagnostic-color.h index e643e5188c0..b4951e7a8f0 100644 --- a/gcc/diagnostic-color.h +++ b/gcc/diagnostic-color.h @@ -19,7 +19,7 @@ along with GCC; see the file COPYING3. If not see /* Based on code from: */ /* grep.c - main driver file for grep. - Copyright (C) 1992, 1997-2002, 2004-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2013 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/gcc/gimple-ssa-isolate-paths.c b/gcc/gimple-ssa-isolate-paths.c index dd1f4f85025..36830eae99f 100644 --- a/gcc/gimple-ssa-isolate-paths.c +++ b/gcc/gimple-ssa-isolate-paths.c @@ -1,8 +1,7 @@ /* Detect paths through the CFG which can never be executed in a conforming program and isolate them. - Copyright (C) 2013 - Free Software Foundation, Inc. + Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 17ea414fc76..85d7c866e5e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-01-02 Richard Sandiford + + * gcc.target/arc/arc.exp: Use the standard form for the copyright + notice. + 2014-01-02 Janus Weil PR fortran/59654 diff --git a/gcc/testsuite/gcc.target/arc/arc.exp b/gcc/testsuite/gcc.target/arc/arc.exp index 83e2762e64a..a8b9641b411 100644 --- a/gcc/testsuite/gcc.target/arc/arc.exp +++ b/gcc/testsuite/gcc.target/arc/arc.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2007, 2011, 2012 Free Software Foundation, Inc. +# Copyright (C) 2007-2012 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/vtable-verify.c b/gcc/vtable-verify.c index af61e930b20..27b7bc8b08c 100644 --- a/gcc/vtable-verify.c +++ b/gcc/vtable-verify.c @@ -1,5 +1,4 @@ -/* Copyright (C) 2013 - Free Software Foundation, Inc. +/* Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/vtable-verify.h b/gcc/vtable-verify.h index 7ac487bef52..c4465fef425 100644 --- a/gcc/vtable-verify.h +++ b/gcc/vtable-verify.h @@ -1,5 +1,4 @@ -/* Copyright (C) 2013 - Free Software Foundation, Inc. +/* Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GCC. -- cgit v1.2.1 From 3aea1f79290f0b8428a0af7d9d18dc1d3f1d799a Mon Sep 17 00:00:00 2001 From: rsandifo Date: Thu, 2 Jan 2014 22:23:26 +0000 Subject: Update copyright years in gcc/ git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206289 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ABOUT-GCC-NLS | 2 +- gcc/ChangeLog | 4 ++++ gcc/LANGUAGES | 2 +- gcc/Makefile.in | 2 +- gcc/README.Portability | 2 +- gcc/acinclude.m4 | 2 +- gcc/addresses.h | 2 +- gcc/alias.c | 2 +- gcc/alias.h | 2 +- gcc/alloc-pool.c | 2 +- gcc/alloc-pool.h | 2 +- gcc/asan.c | 2 +- gcc/asan.h | 2 +- gcc/attribs.c | 2 +- gcc/attribs.h | 2 +- gcc/auto-inc-dec.c | 2 +- gcc/basic-block.h | 2 +- gcc/bb-reorder.c | 2 +- gcc/bb-reorder.h | 2 +- gcc/bitmap.c | 2 +- gcc/bitmap.h | 2 +- gcc/bt-load.c | 2 +- gcc/builtin-attrs.def | 2 +- gcc/builtin-types.def | 2 +- gcc/builtins.c | 2 +- gcc/builtins.def | 2 +- gcc/builtins.h | 2 +- gcc/c-family/ChangeLog | 6 +++++- gcc/c-family/array-notation-common.c | 2 +- gcc/c-family/c-ada-spec.c | 2 +- gcc/c-family/c-ada-spec.h | 2 +- gcc/c-family/c-cilkplus.c | 2 +- gcc/c-family/c-common.c | 2 +- gcc/c-family/c-common.def | 2 +- gcc/c-family/c-common.h | 2 +- gcc/c-family/c-cppbuiltin.c | 2 +- gcc/c-family/c-dump.c | 2 +- gcc/c-family/c-format.c | 2 +- gcc/c-family/c-format.h | 2 +- gcc/c-family/c-gimplify.c | 2 +- gcc/c-family/c-lex.c | 2 +- gcc/c-family/c-objc.h | 2 +- gcc/c-family/c-omp.c | 2 +- gcc/c-family/c-opts.c | 2 +- gcc/c-family/c-pch.c | 2 +- gcc/c-family/c-ppoutput.c | 2 +- gcc/c-family/c-pragma.c | 2 +- gcc/c-family/c-pragma.h | 2 +- gcc/c-family/c-pretty-print.c | 2 +- gcc/c-family/c-pretty-print.h | 2 +- gcc/c-family/c-semantics.c | 2 +- gcc/c-family/c-target-def.h | 2 +- gcc/c-family/c-target.def | 2 +- gcc/c-family/c-target.h | 2 +- gcc/c-family/c-ubsan.c | 2 +- gcc/c-family/c-ubsan.h | 2 +- gcc/c-family/c.opt | 2 +- gcc/c-family/cilk.c | 2 +- gcc/c-family/cppspec.c | 2 +- gcc/c-family/stub-objc.c | 2 +- gcc/c/ChangeLog | 6 +++++- gcc/c/Make-lang.in | 2 +- gcc/c/c-array-notation.c | 2 +- gcc/c/c-aux-info.c | 2 +- gcc/c/c-convert.c | 2 +- gcc/c/c-decl.c | 2 +- gcc/c/c-errors.c | 2 +- gcc/c/c-lang.c | 2 +- gcc/c/c-lang.h | 2 +- gcc/c/c-objc-common.c | 2 +- gcc/c/c-objc-common.h | 2 +- gcc/c/c-parser.c | 2 +- gcc/c/c-tree.h | 2 +- gcc/c/c-typeck.c | 2 +- gcc/c/config-lang.in | 2 +- gcc/c/gccspec.c | 2 +- gcc/caller-save.c | 2 +- gcc/calls.c | 2 +- gcc/calls.h | 2 +- gcc/cfg-flags.def | 2 +- gcc/cfg.c | 2 +- gcc/cfganal.c | 2 +- gcc/cfgbuild.c | 2 +- gcc/cfgcleanup.c | 2 +- gcc/cfgexpand.c | 2 +- gcc/cfgexpand.h | 2 +- gcc/cfghooks.c | 2 +- gcc/cfghooks.h | 2 +- gcc/cfgloop.c | 2 +- gcc/cfgloop.h | 2 +- gcc/cfgloopanal.c | 2 +- gcc/cfgloopmanip.c | 2 +- gcc/cfgrtl.c | 2 +- gcc/cgraph.c | 2 +- gcc/cgraph.h | 2 +- gcc/cgraphbuild.c | 2 +- gcc/cgraphclones.c | 2 +- gcc/cgraphunit.c | 2 +- gcc/cif-code.def | 2 +- gcc/cilk-builtins.def | 2 +- gcc/cilk-common.c | 2 +- gcc/cilk.h | 2 +- gcc/cilkplus.def | 2 +- gcc/collect2-aix.c | 2 +- gcc/collect2-aix.h | 2 +- gcc/collect2.c | 2 +- gcc/collect2.h | 2 +- gcc/combine-stack-adj.c | 2 +- gcc/combine.c | 2 +- gcc/common.opt | 2 +- gcc/common/common-target-def.h | 2 +- gcc/common/common-target.def | 2 +- gcc/common/common-target.h | 2 +- gcc/common/common-targhooks.c | 2 +- gcc/common/common-targhooks.h | 2 +- gcc/common/config/aarch64/aarch64-common.c | 2 +- gcc/common/config/alpha/alpha-common.c | 2 +- gcc/common/config/arc/arc-common.c | 2 +- gcc/common/config/arm/arm-common.c | 2 +- gcc/common/config/avr/avr-common.c | 2 +- gcc/common/config/bfin/bfin-common.c | 2 +- gcc/common/config/c6x/c6x-common.c | 2 +- gcc/common/config/cr16/cr16-common.c | 2 +- gcc/common/config/cris/cris-common.c | 2 +- gcc/common/config/default-common.c | 2 +- gcc/common/config/epiphany/epiphany-common.c | 2 +- gcc/common/config/fr30/fr30-common.c | 2 +- gcc/common/config/frv/frv-common.c | 2 +- gcc/common/config/h8300/h8300-common.c | 2 +- gcc/common/config/i386/i386-common.c | 2 +- gcc/common/config/ia64/ia64-common.c | 2 +- gcc/common/config/iq2000/iq2000-common.c | 2 +- gcc/common/config/lm32/lm32-common.c | 2 +- gcc/common/config/m32r/m32r-common.c | 2 +- gcc/common/config/m68k/m68k-common.c | 2 +- gcc/common/config/mcore/mcore-common.c | 2 +- gcc/common/config/mep/mep-common.c | 2 +- gcc/common/config/microblaze/microblaze-common.c | 2 +- gcc/common/config/mips/mips-common.c | 2 +- gcc/common/config/mmix/mmix-common.c | 2 +- gcc/common/config/mn10300/mn10300-common.c | 2 +- gcc/common/config/nds32/nds32-common.c | 2 +- gcc/common/config/nios2/nios2-common.c | 2 +- gcc/common/config/pa/pa-common.c | 2 +- gcc/common/config/pdp11/pdp11-common.c | 2 +- gcc/common/config/picochip/picochip-common.c | 2 +- gcc/common/config/rs6000/rs6000-common.c | 2 +- gcc/common/config/rx/rx-common.c | 2 +- gcc/common/config/s390/s390-common.c | 2 +- gcc/common/config/score/score-common.c | 2 +- gcc/common/config/sh/sh-common.c | 2 +- gcc/common/config/sparc/sparc-common.c | 2 +- gcc/common/config/spu/spu-common.c | 2 +- gcc/common/config/tilegx/tilegx-common.c | 2 +- gcc/common/config/tilepro/tilepro-common.c | 2 +- gcc/common/config/v850/v850-common.c | 2 +- gcc/common/config/vax/vax-common.c | 2 +- gcc/common/config/xstormy16/xstormy16-common.c | 2 +- gcc/common/config/xtensa/xtensa-common.c | 2 +- gcc/compare-elim.c | 2 +- gcc/conditions.h | 2 +- gcc/config.build | 2 +- gcc/config.gcc | 2 +- gcc/config.host | 2 +- gcc/config/aarch64/aarch64-arches.def | 2 +- gcc/config/aarch64/aarch64-builtins.c | 2 +- gcc/config/aarch64/aarch64-cores.def | 2 +- gcc/config/aarch64/aarch64-elf-raw.h | 2 +- gcc/config/aarch64/aarch64-elf.h | 2 +- gcc/config/aarch64/aarch64-linux.h | 2 +- gcc/config/aarch64/aarch64-modes.def | 2 +- gcc/config/aarch64/aarch64-option-extensions.def | 2 +- gcc/config/aarch64/aarch64-opts.h | 2 +- gcc/config/aarch64/aarch64-protos.h | 2 +- gcc/config/aarch64/aarch64-simd-builtins.def | 2 +- gcc/config/aarch64/aarch64-simd.md | 2 +- gcc/config/aarch64/aarch64.c | 2 +- gcc/config/aarch64/aarch64.h | 2 +- gcc/config/aarch64/aarch64.md | 2 +- gcc/config/aarch64/aarch64.opt | 2 +- gcc/config/aarch64/arm_neon.h | 2 +- gcc/config/aarch64/atomics.md | 2 +- gcc/config/aarch64/biarchilp32.h | 2 +- gcc/config/aarch64/biarchlp64.h | 2 +- gcc/config/aarch64/constraints.md | 2 +- gcc/config/aarch64/gentune.sh | 2 +- gcc/config/aarch64/iterators.md | 2 +- gcc/config/aarch64/predicates.md | 2 +- gcc/config/aarch64/t-aarch64 | 2 +- gcc/config/aarch64/t-aarch64-linux | 2 +- gcc/config/alpha/alpha-modes.def | 2 +- gcc/config/alpha/alpha-protos.h | 2 +- gcc/config/alpha/alpha.c | 2 +- gcc/config/alpha/alpha.h | 2 +- gcc/config/alpha/alpha.md | 2 +- gcc/config/alpha/alpha.opt | 2 +- gcc/config/alpha/constraints.md | 2 +- gcc/config/alpha/driver-alpha.c | 2 +- gcc/config/alpha/elf.h | 2 +- gcc/config/alpha/elf.opt | 2 +- gcc/config/alpha/ev4.md | 2 +- gcc/config/alpha/ev5.md | 2 +- gcc/config/alpha/ev6.md | 2 +- gcc/config/alpha/freebsd.h | 2 +- gcc/config/alpha/linux-elf.h | 2 +- gcc/config/alpha/linux.h | 2 +- gcc/config/alpha/netbsd.h | 2 +- gcc/config/alpha/openbsd.h | 2 +- gcc/config/alpha/predicates.md | 2 +- gcc/config/alpha/sync.md | 2 +- gcc/config/alpha/t-vms | 2 +- gcc/config/alpha/vms.h | 2 +- gcc/config/arc/arc-modes.def | 2 +- gcc/config/arc/arc-opts.h | 2 +- gcc/config/arc/arc-protos.h | 2 +- gcc/config/arc/arc-simd.h | 2 +- gcc/config/arc/arc.c | 2 +- gcc/config/arc/arc.h | 2 +- gcc/config/arc/arc.md | 2 +- gcc/config/arc/arc.opt | 2 +- gcc/config/arc/arc600.md | 2 +- gcc/config/arc/arc700.md | 2 +- gcc/config/arc/constraints.md | 2 +- gcc/config/arc/fpx.md | 2 +- gcc/config/arc/predicates.md | 2 +- gcc/config/arc/simdext.md | 2 +- gcc/config/arc/t-arc-newlib | 2 +- gcc/config/arc/t-arc-uClibc | 2 +- gcc/config/arm/README-interworking | 2 +- gcc/config/arm/aarch-common-protos.h | 2 +- gcc/config/arm/aarch-common.c | 2 +- gcc/config/arm/aarch-cost-tables.h | 2 +- gcc/config/arm/aout.h | 2 +- gcc/config/arm/arm-arches.def | 2 +- gcc/config/arm/arm-c.c | 2 +- gcc/config/arm/arm-cores.def | 2 +- gcc/config/arm/arm-fixed.md | 2 +- gcc/config/arm/arm-fpus.def | 2 +- gcc/config/arm/arm-generic.md | 2 +- gcc/config/arm/arm-ldmstm.ml | 4 ++-- gcc/config/arm/arm-modes.def | 2 +- gcc/config/arm/arm-opts.h | 2 +- gcc/config/arm/arm-protos.h | 2 +- gcc/config/arm/arm-tables.opt | 2 +- gcc/config/arm/arm.c | 2 +- gcc/config/arm/arm.h | 2 +- gcc/config/arm/arm.md | 2 +- gcc/config/arm/arm.opt | 2 +- gcc/config/arm/arm1020e.md | 2 +- gcc/config/arm/arm1026ejs.md | 2 +- gcc/config/arm/arm1136jfs.md | 2 +- gcc/config/arm/arm926ejs.md | 2 +- gcc/config/arm/arm_acle.h | 2 +- gcc/config/arm/arm_neon.h | 2 +- gcc/config/arm/arm_neon_builtins.def | 2 +- gcc/config/arm/bpabi.h | 2 +- gcc/config/arm/coff.h | 2 +- gcc/config/arm/constraints.md | 2 +- gcc/config/arm/cortex-a15-neon.md | 2 +- gcc/config/arm/cortex-a15.md | 2 +- gcc/config/arm/cortex-a5.md | 2 +- gcc/config/arm/cortex-a53.md | 2 +- gcc/config/arm/cortex-a7.md | 2 +- gcc/config/arm/cortex-a8-neon.md | 2 +- gcc/config/arm/cortex-a8.md | 2 +- gcc/config/arm/cortex-a9-neon.md | 2 +- gcc/config/arm/cortex-a9.md | 2 +- gcc/config/arm/cortex-m4-fpu.md | 2 +- gcc/config/arm/cortex-m4.md | 2 +- gcc/config/arm/cortex-r4.md | 2 +- gcc/config/arm/cortex-r4f.md | 2 +- gcc/config/arm/crypto.def | 2 +- gcc/config/arm/crypto.md | 2 +- gcc/config/arm/driver-arm.c | 2 +- gcc/config/arm/elf.h | 2 +- gcc/config/arm/fa526.md | 2 +- gcc/config/arm/fa606te.md | 2 +- gcc/config/arm/fa626te.md | 2 +- gcc/config/arm/fa726te.md | 2 +- gcc/config/arm/fmp626.md | 2 +- gcc/config/arm/genopt.sh | 4 ++-- gcc/config/arm/gentune.sh | 2 +- gcc/config/arm/iterators.md | 2 +- gcc/config/arm/iwmmxt.md | 2 +- gcc/config/arm/iwmmxt2.md | 2 +- gcc/config/arm/ldmstm.md | 2 +- gcc/config/arm/ldrdstrd.md | 2 +- gcc/config/arm/linux-eabi.h | 2 +- gcc/config/arm/linux-elf.h | 2 +- gcc/config/arm/linux-gas.h | 2 +- gcc/config/arm/marvell-f-iwmmxt.md | 2 +- gcc/config/arm/marvell-pj4.md | 2 +- gcc/config/arm/mmintrin.h | 2 +- gcc/config/arm/neon-docgen.ml | 4 ++-- gcc/config/arm/neon-gen.ml | 4 ++-- gcc/config/arm/neon-testgen.ml | 2 +- gcc/config/arm/neon.md | 2 +- gcc/config/arm/neon.ml | 2 +- gcc/config/arm/netbsd-elf.h | 2 +- gcc/config/arm/predicates.md | 2 +- gcc/config/arm/rtems-eabi.h | 2 +- gcc/config/arm/semi.h | 2 +- gcc/config/arm/symbian.h | 2 +- gcc/config/arm/sync.md | 2 +- gcc/config/arm/t-aprofile | 2 +- gcc/config/arm/t-arm | 2 +- gcc/config/arm/t-arm-elf | 2 +- gcc/config/arm/t-linux-eabi | 2 +- gcc/config/arm/t-symbian | 2 +- gcc/config/arm/t-vxworks | 2 +- gcc/config/arm/thumb2.md | 2 +- gcc/config/arm/types.md | 2 +- gcc/config/arm/uclinux-eabi.h | 2 +- gcc/config/arm/uclinux-elf.h | 2 +- gcc/config/arm/unknown-elf.h | 2 +- gcc/config/arm/unspecs.md | 2 +- gcc/config/arm/vec-common.md | 2 +- gcc/config/arm/vfp.md | 2 +- gcc/config/arm/vfp11.md | 2 +- gcc/config/arm/vxworks.h | 2 +- gcc/config/arm/vxworks.opt | 2 +- gcc/config/avr/avr-arch.h | 2 +- gcc/config/avr/avr-c.c | 2 +- gcc/config/avr/avr-devices.c | 2 +- gcc/config/avr/avr-dimode.md | 2 +- gcc/config/avr/avr-fixed.md | 2 +- gcc/config/avr/avr-log.c | 2 +- gcc/config/avr/avr-mcus.def | 2 +- gcc/config/avr/avr-modes.def | 2 +- gcc/config/avr/avr-protos.h | 2 +- gcc/config/avr/avr-stdint.h | 2 +- gcc/config/avr/avr-tables.opt | 2 +- gcc/config/avr/avr.c | 2 +- gcc/config/avr/avr.h | 2 +- gcc/config/avr/avr.md | 2 +- gcc/config/avr/avr.opt | 2 +- gcc/config/avr/avrlibc.h | 2 +- gcc/config/avr/builtins.def | 2 +- gcc/config/avr/constraints.md | 2 +- gcc/config/avr/driver-avr.c | 2 +- gcc/config/avr/elf.h | 2 +- gcc/config/avr/gen-avr-mmcu-texi.c | 4 ++-- gcc/config/avr/genmultilib.awk | 2 +- gcc/config/avr/genopt.sh | 4 ++-- gcc/config/avr/predicates.md | 2 +- gcc/config/avr/rtems.h | 2 +- gcc/config/avr/stdfix.h | 2 +- gcc/config/avr/t-avr | 2 +- gcc/config/avr/t-multilib | 2 +- gcc/config/bfin/bfin-modes.def | 2 +- gcc/config/bfin/bfin-opts.h | 2 +- gcc/config/bfin/bfin-protos.h | 2 +- gcc/config/bfin/bfin.c | 2 +- gcc/config/bfin/bfin.h | 2 +- gcc/config/bfin/bfin.md | 2 +- gcc/config/bfin/bfin.opt | 2 +- gcc/config/bfin/constraints.md | 2 +- gcc/config/bfin/elf.h | 2 +- gcc/config/bfin/linux.h | 2 +- gcc/config/bfin/predicates.md | 2 +- gcc/config/bfin/print-sysroot-suffix.sh | 2 +- gcc/config/bfin/rtems.h | 2 +- gcc/config/bfin/sync.md | 2 +- gcc/config/bfin/t-bfin-elf | 2 +- gcc/config/bfin/t-bfin-linux | 2 +- gcc/config/bfin/t-bfin-uclinux | 2 +- gcc/config/bfin/uclinux.h | 2 +- gcc/config/c6x/c6x-isas.def | 2 +- gcc/config/c6x/c6x-modes.def | 2 +- gcc/config/c6x/c6x-mult.md | 4 ++-- gcc/config/c6x/c6x-mult.md.in | 2 +- gcc/config/c6x/c6x-opts.h | 2 +- gcc/config/c6x/c6x-protos.h | 2 +- gcc/config/c6x/c6x-sched.md | 8 ++++---- gcc/config/c6x/c6x-sched.md.in | 2 +- gcc/config/c6x/c6x-tables.opt | 2 +- gcc/config/c6x/c6x.c | 2 +- gcc/config/c6x/c6x.h | 2 +- gcc/config/c6x/c6x.md | 2 +- gcc/config/c6x/c6x.opt | 2 +- gcc/config/c6x/c6x_intrinsics.h | 2 +- gcc/config/c6x/constraints.md | 2 +- gcc/config/c6x/elf-common.h | 2 +- gcc/config/c6x/elf.h | 2 +- gcc/config/c6x/genmult.sh | 2 +- gcc/config/c6x/genopt.sh | 4 ++-- gcc/config/c6x/gensched.sh | 2 +- gcc/config/c6x/predicates.md | 2 +- gcc/config/c6x/sync.md | 2 +- gcc/config/c6x/t-c6x | 2 +- gcc/config/c6x/t-c6x-elf | 2 +- gcc/config/c6x/uclinux-elf.h | 2 +- gcc/config/cr16/constraints.md | 2 +- gcc/config/cr16/cr16-protos.h | 2 +- gcc/config/cr16/cr16.c | 2 +- gcc/config/cr16/cr16.h | 2 +- gcc/config/cr16/cr16.md | 2 +- gcc/config/cr16/cr16.opt | 2 +- gcc/config/cr16/predicates.md | 2 +- gcc/config/cr16/t-cr16 | 2 +- gcc/config/cris/constraints.md | 2 +- gcc/config/cris/cris-protos.h | 2 +- gcc/config/cris/cris.c | 2 +- gcc/config/cris/cris.h | 2 +- gcc/config/cris/cris.md | 2 +- gcc/config/cris/cris.opt | 2 +- gcc/config/cris/elf.opt | 2 +- gcc/config/cris/linux.h | 2 +- gcc/config/cris/linux.opt | 2 +- gcc/config/cris/predicates.md | 2 +- gcc/config/cris/sync.md | 2 +- gcc/config/cris/t-cris | 2 +- gcc/config/cris/t-elfmulti | 2 +- gcc/config/darwin-c.c | 2 +- gcc/config/darwin-driver.c | 2 +- gcc/config/darwin-f.c | 2 +- gcc/config/darwin-ppc-ldouble-patch.def | 2 +- gcc/config/darwin-protos.h | 2 +- gcc/config/darwin-sections.def | 2 +- gcc/config/darwin.c | 2 +- gcc/config/darwin.h | 2 +- gcc/config/darwin.opt | 2 +- gcc/config/darwin10.h | 2 +- gcc/config/darwin9.h | 2 +- gcc/config/dbx.h | 2 +- gcc/config/dbxcoff.h | 2 +- gcc/config/dbxelf.h | 2 +- gcc/config/default-c.c | 2 +- gcc/config/elfos.h | 2 +- gcc/config/epiphany/constraints.md | 2 +- gcc/config/epiphany/epiphany-modes.def | 2 +- gcc/config/epiphany/epiphany-protos.h | 2 +- gcc/config/epiphany/epiphany-sched.md | 2 +- gcc/config/epiphany/epiphany.c | 2 +- gcc/config/epiphany/epiphany.h | 2 +- gcc/config/epiphany/epiphany.md | 2 +- gcc/config/epiphany/epiphany.opt | 2 +- gcc/config/epiphany/epiphany_intrinsics.h | 2 +- gcc/config/epiphany/mode-switch-use.c | 2 +- gcc/config/epiphany/predicates.md | 2 +- gcc/config/epiphany/resolve-sw-modes.c | 2 +- gcc/config/epiphany/t-epiphany | 2 +- gcc/config/flat.h | 2 +- gcc/config/fr30/constraints.md | 2 +- gcc/config/fr30/fr30-protos.h | 2 +- gcc/config/fr30/fr30.c | 2 +- gcc/config/fr30/fr30.h | 2 +- gcc/config/fr30/fr30.md | 2 +- gcc/config/fr30/fr30.opt | 2 +- gcc/config/fr30/predicates.md | 2 +- gcc/config/freebsd-nthr.h | 2 +- gcc/config/freebsd-spec.h | 2 +- gcc/config/freebsd-stdint.h | 2 +- gcc/config/freebsd.h | 2 +- gcc/config/freebsd.opt | 2 +- gcc/config/frv/constraints.md | 2 +- gcc/config/frv/frv-asm.h | 2 +- gcc/config/frv/frv-modes.def | 2 +- gcc/config/frv/frv-opts.h | 2 +- gcc/config/frv/frv-protos.h | 2 +- gcc/config/frv/frv.c | 2 +- gcc/config/frv/frv.h | 2 +- gcc/config/frv/frv.md | 2 +- gcc/config/frv/frv.opt | 2 +- gcc/config/frv/linux.h | 2 +- gcc/config/frv/predicates.md | 2 +- gcc/config/frv/t-frv | 2 +- gcc/config/frv/t-linux | 2 +- gcc/config/fused-madd.opt | 2 +- gcc/config/g.opt | 2 +- gcc/config/glibc-c.c | 2 +- gcc/config/glibc-stdint.h | 2 +- gcc/config/gnu-user.h | 2 +- gcc/config/gnu-user.opt | 2 +- gcc/config/gnu.h | 2 +- gcc/config/h8300/constraints.md | 2 +- gcc/config/h8300/elf.h | 2 +- gcc/config/h8300/genmova.sh | 4 ++-- gcc/config/h8300/h8300-protos.h | 2 +- gcc/config/h8300/h8300.c | 2 +- gcc/config/h8300/h8300.h | 2 +- gcc/config/h8300/h8300.md | 2 +- gcc/config/h8300/h8300.opt | 2 +- gcc/config/h8300/mova.md | 2 +- gcc/config/h8300/predicates.md | 2 +- gcc/config/h8300/rtems.h | 2 +- gcc/config/h8300/t-h8300 | 2 +- gcc/config/host-darwin.c | 2 +- gcc/config/host-darwin.h | 2 +- gcc/config/host-hpux.c | 2 +- gcc/config/host-linux.c | 2 +- gcc/config/host-openbsd.c | 2 +- gcc/config/host-solaris.c | 2 +- gcc/config/hpux11.opt | 2 +- gcc/config/i386/adxintrin.h | 2 +- gcc/config/i386/ammintrin.h | 2 +- gcc/config/i386/athlon.md | 2 +- gcc/config/i386/atom.md | 2 +- gcc/config/i386/att.h | 2 +- gcc/config/i386/avx2intrin.h | 2 +- gcc/config/i386/avx512cdintrin.h | 2 +- gcc/config/i386/avx512erintrin.h | 2 +- gcc/config/i386/avx512fintrin.h | 2 +- gcc/config/i386/avx512pfintrin.h | 2 +- gcc/config/i386/avxintrin.h | 2 +- gcc/config/i386/avxmath.h | 2 +- gcc/config/i386/bdver1.md | 2 +- gcc/config/i386/bdver3.md | 2 +- gcc/config/i386/biarch64.h | 2 +- gcc/config/i386/biarchx32.h | 2 +- gcc/config/i386/bmi2intrin.h | 2 +- gcc/config/i386/bmiintrin.h | 2 +- gcc/config/i386/bmmintrin.h | 2 +- gcc/config/i386/bsd.h | 2 +- gcc/config/i386/btver2.md | 2 +- gcc/config/i386/constraints.md | 2 +- gcc/config/i386/core2.md | 2 +- gcc/config/i386/cpuid.h | 2 +- gcc/config/i386/cross-stdarg.h | 2 +- gcc/config/i386/crtdll.h | 2 +- gcc/config/i386/cygming.h | 2 +- gcc/config/i386/cygming.opt | 2 +- gcc/config/i386/cygwin-stdint.h | 2 +- gcc/config/i386/cygwin-w64.h | 2 +- gcc/config/i386/cygwin.h | 2 +- gcc/config/i386/darwin.h | 2 +- gcc/config/i386/darwin64.h | 2 +- gcc/config/i386/djgpp-stdint.h | 2 +- gcc/config/i386/djgpp.h | 2 +- gcc/config/i386/djgpp.opt | 2 +- gcc/config/i386/driver-i386.c | 2 +- gcc/config/i386/emmintrin.h | 2 +- gcc/config/i386/f16cintrin.h | 2 +- gcc/config/i386/fma4intrin.h | 2 +- gcc/config/i386/fmaintrin.h | 2 +- gcc/config/i386/freebsd.h | 2 +- gcc/config/i386/freebsd64.h | 2 +- gcc/config/i386/fxsrintrin.h | 2 +- gcc/config/i386/gas.h | 2 +- gcc/config/i386/geode.md | 2 +- gcc/config/i386/gmm_malloc.h | 2 +- gcc/config/i386/gnu-user-common.h | 2 +- gcc/config/i386/gnu-user.h | 2 +- gcc/config/i386/gnu-user64.h | 2 +- gcc/config/i386/gnu.h | 2 +- gcc/config/i386/host-cygwin.c | 2 +- gcc/config/i386/host-i386-darwin.c | 2 +- gcc/config/i386/host-mingw32.c | 2 +- gcc/config/i386/i386-builtin-types.awk | 2 +- gcc/config/i386/i386-c.c | 2 +- gcc/config/i386/i386-interix.h | 2 +- gcc/config/i386/i386-modes.def | 2 +- gcc/config/i386/i386-opts.h | 2 +- gcc/config/i386/i386-protos.h | 2 +- gcc/config/i386/i386.c | 2 +- gcc/config/i386/i386.h | 2 +- gcc/config/i386/i386.md | 2 +- gcc/config/i386/i386.opt | 2 +- gcc/config/i386/i386elf.h | 2 +- gcc/config/i386/ia32intrin.h | 2 +- gcc/config/i386/immintrin.h | 2 +- gcc/config/i386/interix.opt | 2 +- gcc/config/i386/k6.md | 2 +- gcc/config/i386/kfreebsd-gnu.h | 2 +- gcc/config/i386/kfreebsd-gnu64.h | 2 +- gcc/config/i386/knetbsd-gnu.h | 2 +- gcc/config/i386/kopensolaris-gnu.h | 2 +- gcc/config/i386/linux-common.h | 2 +- gcc/config/i386/linux.h | 2 +- gcc/config/i386/linux64.h | 2 +- gcc/config/i386/lwpintrin.h | 2 +- gcc/config/i386/lynx.h | 2 +- gcc/config/i386/lzcntintrin.h | 2 +- gcc/config/i386/mingw-pthread.h | 2 +- gcc/config/i386/mingw-stdint.h | 2 +- gcc/config/i386/mingw-w64.h | 2 +- gcc/config/i386/mingw-w64.opt | 2 +- gcc/config/i386/mingw.opt | 2 +- gcc/config/i386/mingw32.h | 2 +- gcc/config/i386/mm3dnow.h | 2 +- gcc/config/i386/mmintrin.h | 2 +- gcc/config/i386/mmx.md | 2 +- gcc/config/i386/msformat-c.c | 2 +- gcc/config/i386/netbsd-elf.h | 2 +- gcc/config/i386/netbsd64.h | 2 +- gcc/config/i386/nmmintrin.h | 2 +- gcc/config/i386/nto.h | 2 +- gcc/config/i386/nto.opt | 2 +- gcc/config/i386/openbsd.h | 2 +- gcc/config/i386/openbsdelf.h | 2 +- gcc/config/i386/pentium.md | 2 +- gcc/config/i386/pmm_malloc.h | 2 +- gcc/config/i386/pmmintrin.h | 2 +- gcc/config/i386/popcntintrin.h | 2 +- gcc/config/i386/ppro.md | 2 +- gcc/config/i386/predicates.md | 2 +- gcc/config/i386/prfchwintrin.h | 2 +- gcc/config/i386/rdos.h | 2 +- gcc/config/i386/rdos64.h | 2 +- gcc/config/i386/rdseedintrin.h | 2 +- gcc/config/i386/rtemself.h | 2 +- gcc/config/i386/rtmintrin.h | 2 +- gcc/config/i386/shaintrin.h | 2 +- gcc/config/i386/slm.md | 2 +- gcc/config/i386/smmintrin.h | 2 +- gcc/config/i386/sol2-bi.h | 2 +- gcc/config/i386/sol2.h | 2 +- gcc/config/i386/sse.md | 2 +- gcc/config/i386/ssemath.h | 2 +- gcc/config/i386/stringop.def | 2 +- gcc/config/i386/stringop.opt | 2 +- gcc/config/i386/subst.md | 2 +- gcc/config/i386/sync.md | 2 +- gcc/config/i386/sysv4.h | 2 +- gcc/config/i386/t-cygming | 2 +- gcc/config/i386/t-i386 | 2 +- gcc/config/i386/t-interix | 2 +- gcc/config/i386/t-linux64 | 2 +- gcc/config/i386/t-rtems | 2 +- gcc/config/i386/t-sol2-64 | 2 +- gcc/config/i386/tbmintrin.h | 2 +- gcc/config/i386/tmmintrin.h | 2 +- gcc/config/i386/unix.h | 2 +- gcc/config/i386/vx-common.h | 2 +- gcc/config/i386/vxworks.h | 2 +- gcc/config/i386/vxworksae.h | 2 +- gcc/config/i386/winnt-cxx.c | 2 +- gcc/config/i386/winnt-stubs.c | 2 +- gcc/config/i386/winnt.c | 2 +- gcc/config/i386/wmmintrin.h | 2 +- gcc/config/i386/x-mingw32 | 2 +- gcc/config/i386/x86-64.h | 2 +- gcc/config/i386/x86-tune.def | 2 +- gcc/config/i386/x86intrin.h | 2 +- gcc/config/i386/xm-cygwin.h | 2 +- gcc/config/i386/xm-djgpp.h | 2 +- gcc/config/i386/xm-mingw32.h | 2 +- gcc/config/i386/xmmintrin.h | 2 +- gcc/config/i386/xopintrin.h | 2 +- gcc/config/i386/xsaveintrin.h | 2 +- gcc/config/i386/xsaveoptintrin.h | 2 +- gcc/config/i386/xtestintrin.h | 2 +- gcc/config/ia64/constraints.md | 2 +- gcc/config/ia64/div.md | 2 +- gcc/config/ia64/elf.h | 2 +- gcc/config/ia64/freebsd.h | 2 +- gcc/config/ia64/hpux.h | 2 +- gcc/config/ia64/ia64-c.c | 2 +- gcc/config/ia64/ia64-modes.def | 2 +- gcc/config/ia64/ia64-opts.h | 2 +- gcc/config/ia64/ia64-protos.h | 2 +- gcc/config/ia64/ia64.c | 2 +- gcc/config/ia64/ia64.h | 2 +- gcc/config/ia64/ia64.md | 2 +- gcc/config/ia64/ia64.opt | 2 +- gcc/config/ia64/itanium2.md | 2 +- gcc/config/ia64/linux.h | 2 +- gcc/config/ia64/predicates.md | 2 +- gcc/config/ia64/sync.md | 2 +- gcc/config/ia64/sysv4.h | 2 +- gcc/config/ia64/t-hpux | 2 +- gcc/config/ia64/t-ia64 | 2 +- gcc/config/ia64/vect.md | 2 +- gcc/config/ia64/vms.h | 2 +- gcc/config/ia64/vms.opt | 2 +- gcc/config/initfini-array.h | 2 +- gcc/config/iq2000/abi | 2 +- gcc/config/iq2000/constraints.md | 2 +- gcc/config/iq2000/iq2000-opts.h | 2 +- gcc/config/iq2000/iq2000-protos.h | 2 +- gcc/config/iq2000/iq2000.c | 2 +- gcc/config/iq2000/iq2000.h | 2 +- gcc/config/iq2000/iq2000.md | 2 +- gcc/config/iq2000/iq2000.opt | 2 +- gcc/config/iq2000/predicates.md | 2 +- gcc/config/kfreebsd-gnu.h | 2 +- gcc/config/knetbsd-gnu.h | 2 +- gcc/config/kopensolaris-gnu.h | 2 +- gcc/config/linux-android.h | 2 +- gcc/config/linux-android.opt | 2 +- gcc/config/linux-protos.h | 2 +- gcc/config/linux.c | 2 +- gcc/config/linux.h | 2 +- gcc/config/linux.opt | 2 +- gcc/config/lm32/constraints.md | 2 +- gcc/config/lm32/lm32-protos.h | 2 +- gcc/config/lm32/lm32.c | 2 +- gcc/config/lm32/lm32.h | 2 +- gcc/config/lm32/lm32.md | 2 +- gcc/config/lm32/lm32.opt | 2 +- gcc/config/lm32/predicates.md | 2 +- gcc/config/lm32/rtems.h | 2 +- gcc/config/lm32/uclinux-elf.h | 2 +- gcc/config/lynx.h | 2 +- gcc/config/lynx.opt | 2 +- gcc/config/m32c/addsub.md | 2 +- gcc/config/m32c/bitops.md | 2 +- gcc/config/m32c/blkmov.md | 2 +- gcc/config/m32c/cond.md | 2 +- gcc/config/m32c/constraints.md | 2 +- gcc/config/m32c/jump.md | 2 +- gcc/config/m32c/m32c-modes.def | 2 +- gcc/config/m32c/m32c-pragma.c | 2 +- gcc/config/m32c/m32c-protos.h | 2 +- gcc/config/m32c/m32c.abi | 2 +- gcc/config/m32c/m32c.c | 2 +- gcc/config/m32c/m32c.h | 2 +- gcc/config/m32c/m32c.md | 2 +- gcc/config/m32c/m32c.opt | 2 +- gcc/config/m32c/minmax.md | 2 +- gcc/config/m32c/mov.md | 2 +- gcc/config/m32c/muldiv.md | 2 +- gcc/config/m32c/predicates.md | 2 +- gcc/config/m32c/prologue.md | 2 +- gcc/config/m32c/rtems.h | 2 +- gcc/config/m32c/shift.md | 2 +- gcc/config/m32c/t-m32c | 2 +- gcc/config/m32r/constraints.md | 2 +- gcc/config/m32r/linux.h | 2 +- gcc/config/m32r/little.h | 2 +- gcc/config/m32r/m32r-opts.h | 2 +- gcc/config/m32r/m32r-protos.h | 2 +- gcc/config/m32r/m32r.c | 2 +- gcc/config/m32r/m32r.h | 2 +- gcc/config/m32r/m32r.md | 2 +- gcc/config/m32r/m32r.opt | 2 +- gcc/config/m32r/predicates.md | 2 +- gcc/config/m32r/rtems.h | 2 +- gcc/config/m32r/t-linux | 2 +- gcc/config/m32r/t-m32r | 2 +- gcc/config/m68k/cf.md | 2 +- gcc/config/m68k/constraints.md | 2 +- gcc/config/m68k/genopt.sh | 4 ++-- gcc/config/m68k/ieee.opt | 2 +- gcc/config/m68k/linux.h | 2 +- gcc/config/m68k/m68020-elf.h | 2 +- gcc/config/m68k/m68k-devices.def | 2 +- gcc/config/m68k/m68k-isas.def | 2 +- gcc/config/m68k/m68k-microarchs.def | 2 +- gcc/config/m68k/m68k-modes.def | 2 +- gcc/config/m68k/m68k-none.h | 2 +- gcc/config/m68k/m68k-opts.h | 2 +- gcc/config/m68k/m68k-protos.h | 2 +- gcc/config/m68k/m68k-tables.opt | 2 +- gcc/config/m68k/m68k.c | 2 +- gcc/config/m68k/m68k.h | 2 +- gcc/config/m68k/m68k.md | 2 +- gcc/config/m68k/m68k.opt | 2 +- gcc/config/m68k/m68kelf.h | 2 +- gcc/config/m68k/m68kemb.h | 2 +- gcc/config/m68k/netbsd-elf.h | 2 +- gcc/config/m68k/openbsd.h | 2 +- gcc/config/m68k/predicates.md | 2 +- gcc/config/m68k/print-sysroot-suffix.sh | 2 +- gcc/config/m68k/rtemself.h | 2 +- gcc/config/m68k/sync.md | 2 +- gcc/config/m68k/t-linux | 2 +- gcc/config/m68k/t-mlibs | 2 +- gcc/config/m68k/t-uclinux | 2 +- gcc/config/m68k/uclinux.h | 2 +- gcc/config/m68k/uclinux.opt | 2 +- gcc/config/mcore/constraints.md | 2 +- gcc/config/mcore/mcore-elf.h | 2 +- gcc/config/mcore/mcore-protos.h | 2 +- gcc/config/mcore/mcore.c | 2 +- gcc/config/mcore/mcore.h | 2 +- gcc/config/mcore/mcore.md | 2 +- gcc/config/mcore/mcore.opt | 2 +- gcc/config/mcore/predicates.md | 2 +- gcc/config/mcore/t-mcore | 2 +- gcc/config/mep/constraints.md | 2 +- gcc/config/mep/mep-c5.cpu | 2 +- gcc/config/mep/mep-core.cpu | 2 +- gcc/config/mep/mep-default.cpu | 2 +- gcc/config/mep/mep-ext-cop.cpu | 2 +- gcc/config/mep/mep-ivc2.cpu | 2 +- gcc/config/mep/mep-pragma.c | 2 +- gcc/config/mep/mep-protos.h | 2 +- gcc/config/mep/mep.c | 2 +- gcc/config/mep/mep.cpu | 2 +- gcc/config/mep/mep.h | 2 +- gcc/config/mep/mep.md | 2 +- gcc/config/mep/mep.opt | 2 +- gcc/config/mep/predicates.md | 2 +- gcc/config/mep/t-mep | 2 +- gcc/config/microblaze/constraints.md | 2 +- gcc/config/microblaze/linux.h | 2 +- gcc/config/microblaze/microblaze-c.c | 2 +- gcc/config/microblaze/microblaze-protos.h | 2 +- gcc/config/microblaze/microblaze.c | 2 +- gcc/config/microblaze/microblaze.h | 2 +- gcc/config/microblaze/microblaze.md | 2 +- gcc/config/microblaze/microblaze.opt | 2 +- gcc/config/microblaze/predicates.md | 2 +- gcc/config/microblaze/rtems.h | 2 +- gcc/config/microblaze/sync.md | 2 +- gcc/config/mips/10000.md | 2 +- gcc/config/mips/20kc.md | 2 +- gcc/config/mips/24k.md | 2 +- gcc/config/mips/3000.md | 2 +- gcc/config/mips/4000.md | 2 +- gcc/config/mips/4100.md | 2 +- gcc/config/mips/4130.md | 2 +- gcc/config/mips/4300.md | 2 +- gcc/config/mips/4600.md | 2 +- gcc/config/mips/4k.md | 2 +- gcc/config/mips/5000.md | 2 +- gcc/config/mips/5400.md | 2 +- gcc/config/mips/5500.md | 2 +- gcc/config/mips/5k.md | 2 +- gcc/config/mips/6000.md | 2 +- gcc/config/mips/7000.md | 2 +- gcc/config/mips/74k.md | 2 +- gcc/config/mips/9000.md | 2 +- gcc/config/mips/constraints.md | 2 +- gcc/config/mips/driver-native.c | 2 +- gcc/config/mips/elf.h | 2 +- gcc/config/mips/elfoabi.h | 2 +- gcc/config/mips/elforion.h | 2 +- gcc/config/mips/generic.md | 2 +- gcc/config/mips/genopt.sh | 4 ++-- gcc/config/mips/gnu-user.h | 2 +- gcc/config/mips/gnu-user64.h | 2 +- gcc/config/mips/linux-common.h | 2 +- gcc/config/mips/linux.h | 2 +- gcc/config/mips/linux64.h | 2 +- gcc/config/mips/loongson.h | 2 +- gcc/config/mips/loongson.md | 2 +- gcc/config/mips/loongson2ef.md | 2 +- gcc/config/mips/loongson3a.md | 2 +- gcc/config/mips/micromips.md | 2 +- gcc/config/mips/mips-cpus.def | 2 +- gcc/config/mips/mips-dsp.md | 2 +- gcc/config/mips/mips-dspr2.md | 2 +- gcc/config/mips/mips-fixed.md | 2 +- gcc/config/mips/mips-ftypes.def | 2 +- gcc/config/mips/mips-modes.def | 2 +- gcc/config/mips/mips-opts.h | 2 +- gcc/config/mips/mips-protos.h | 2 +- gcc/config/mips/mips-ps-3d.md | 2 +- gcc/config/mips/mips-tables.opt | 2 +- gcc/config/mips/mips.c | 2 +- gcc/config/mips/mips.h | 2 +- gcc/config/mips/mips.md | 2 +- gcc/config/mips/mips.opt | 2 +- gcc/config/mips/mti-elf.h | 2 +- gcc/config/mips/mti-linux.h | 2 +- gcc/config/mips/n32-elf.h | 2 +- gcc/config/mips/netbsd.h | 2 +- gcc/config/mips/octeon.md | 2 +- gcc/config/mips/predicates.md | 2 +- gcc/config/mips/r3900.h | 2 +- gcc/config/mips/rtems.h | 2 +- gcc/config/mips/sb1.md | 2 +- gcc/config/mips/sde.h | 2 +- gcc/config/mips/sde.opt | 2 +- gcc/config/mips/sdemtk.h | 2 +- gcc/config/mips/sr71k.md | 2 +- gcc/config/mips/st.h | 2 +- gcc/config/mips/sync.md | 2 +- gcc/config/mips/t-elf | 2 +- gcc/config/mips/t-isa3264 | 2 +- gcc/config/mips/t-linux64 | 2 +- gcc/config/mips/t-mips | 2 +- gcc/config/mips/t-mti-elf | 2 +- gcc/config/mips/t-mti-linux | 2 +- gcc/config/mips/t-r3900 | 2 +- gcc/config/mips/t-rtems | 2 +- gcc/config/mips/t-sb1 | 2 +- gcc/config/mips/t-sde | 2 +- gcc/config/mips/t-sdemtk | 2 +- gcc/config/mips/t-sr71k | 2 +- gcc/config/mips/t-st | 2 +- gcc/config/mips/t-vr | 2 +- gcc/config/mips/t-vxworks | 2 +- gcc/config/mips/vr.h | 2 +- gcc/config/mips/vxworks.h | 2 +- gcc/config/mips/xlp.md | 2 +- gcc/config/mips/xlr.md | 2 +- gcc/config/mmix/constraints.md | 2 +- gcc/config/mmix/mmix-modes.def | 2 +- gcc/config/mmix/mmix-protos.h | 2 +- gcc/config/mmix/mmix.c | 2 +- gcc/config/mmix/mmix.h | 2 +- gcc/config/mmix/mmix.md | 2 +- gcc/config/mmix/mmix.opt | 2 +- gcc/config/mmix/predicates.md | 2 +- gcc/config/mmix/t-mmix | 2 +- gcc/config/mn10300/constraints.md | 2 +- gcc/config/mn10300/linux.h | 2 +- gcc/config/mn10300/mn10300-modes.def | 2 +- gcc/config/mn10300/mn10300-opts.h | 2 +- gcc/config/mn10300/mn10300-protos.h | 2 +- gcc/config/mn10300/mn10300.c | 2 +- gcc/config/mn10300/mn10300.h | 2 +- gcc/config/mn10300/mn10300.md | 2 +- gcc/config/mn10300/mn10300.opt | 2 +- gcc/config/mn10300/predicates.md | 2 +- gcc/config/mn10300/t-mn10300 | 2 +- gcc/config/moxie/constraints.md | 2 +- gcc/config/moxie/moxie-protos.h | 2 +- gcc/config/moxie/moxie.c | 2 +- gcc/config/moxie/moxie.h | 2 +- gcc/config/moxie/moxie.md | 2 +- gcc/config/moxie/moxie.opt | 2 +- gcc/config/moxie/predicates.md | 2 +- gcc/config/moxie/rtems.h | 2 +- gcc/config/moxie/t-moxie | 2 +- gcc/config/moxie/uclinux.h | 2 +- gcc/config/msp430/constraints.md | 2 +- gcc/config/msp430/msp430-c.c | 2 +- gcc/config/msp430/msp430-protos.h | 2 +- gcc/config/msp430/msp430.c | 2 +- gcc/config/msp430/msp430.h | 2 +- gcc/config/msp430/msp430.md | 2 +- gcc/config/msp430/predicates.md | 2 +- gcc/config/msp430/t-msp430 | 2 +- gcc/config/nds32/constants.md | 2 +- gcc/config/nds32/constraints.md | 2 +- gcc/config/nds32/iterators.md | 2 +- gcc/config/nds32/nds32-doubleword.md | 2 +- gcc/config/nds32/nds32-intrinsic.md | 2 +- gcc/config/nds32/nds32-modes.def | 2 +- gcc/config/nds32/nds32-multiple.md | 2 +- gcc/config/nds32/nds32-opts.h | 2 +- gcc/config/nds32/nds32-peephole2.md | 2 +- gcc/config/nds32/nds32-protos.h | 2 +- gcc/config/nds32/nds32.c | 2 +- gcc/config/nds32/nds32.h | 2 +- gcc/config/nds32/nds32.md | 2 +- gcc/config/nds32/nds32.opt | 2 +- gcc/config/nds32/nds32_intrinsic.h | 2 +- gcc/config/nds32/pipelines.md | 2 +- gcc/config/nds32/predicates.md | 2 +- gcc/config/nds32/t-mlibs | 2 +- gcc/config/netbsd-elf.h | 2 +- gcc/config/netbsd-elf.opt | 2 +- gcc/config/netbsd.h | 2 +- gcc/config/netbsd.opt | 2 +- gcc/config/newlib-stdint.h | 2 +- gcc/config/nios2/constraints.md | 2 +- gcc/config/nios2/elf.h | 2 +- gcc/config/nios2/elf.opt | 2 +- gcc/config/nios2/linux.h | 2 +- gcc/config/nios2/nios2-opts.h | 2 +- gcc/config/nios2/nios2-protos.h | 2 +- gcc/config/nios2/nios2.c | 2 +- gcc/config/nios2/nios2.h | 2 +- gcc/config/nios2/nios2.md | 2 +- gcc/config/nios2/nios2.opt | 2 +- gcc/config/nios2/predicates.md | 2 +- gcc/config/nios2/t-nios2 | 2 +- gcc/config/openbsd-libpthread.h | 2 +- gcc/config/openbsd-oldgas.h | 2 +- gcc/config/openbsd.h | 2 +- gcc/config/openbsd.opt | 2 +- gcc/config/pa/constraints.md | 2 +- gcc/config/pa/elf.h | 2 +- gcc/config/pa/pa-64.h | 2 +- gcc/config/pa/pa-hpux.h | 2 +- gcc/config/pa/pa-hpux.opt | 2 +- gcc/config/pa/pa-hpux10.h | 2 +- gcc/config/pa/pa-hpux10.opt | 2 +- gcc/config/pa/pa-hpux1010.h | 2 +- gcc/config/pa/pa-hpux1010.opt | 2 +- gcc/config/pa/pa-hpux11.h | 2 +- gcc/config/pa/pa-hpux1111.h | 2 +- gcc/config/pa/pa-hpux1111.opt | 2 +- gcc/config/pa/pa-hpux1131.h | 2 +- gcc/config/pa/pa-hpux1131.opt | 2 +- gcc/config/pa/pa-linux.h | 2 +- gcc/config/pa/pa-modes.def | 2 +- gcc/config/pa/pa-openbsd.h | 2 +- gcc/config/pa/pa-opts.h | 2 +- gcc/config/pa/pa-protos.h | 2 +- gcc/config/pa/pa.c | 2 +- gcc/config/pa/pa.h | 2 +- gcc/config/pa/pa.md | 2 +- gcc/config/pa/pa.opt | 2 +- gcc/config/pa/pa32-linux.h | 2 +- gcc/config/pa/pa32-openbsd.h | 2 +- gcc/config/pa/pa32-regs.h | 2 +- gcc/config/pa/pa64-hpux.h | 2 +- gcc/config/pa/pa64-hpux.opt | 2 +- gcc/config/pa/pa64-linux.h | 2 +- gcc/config/pa/pa64-regs.h | 2 +- gcc/config/pa/predicates.md | 2 +- gcc/config/pa/som.h | 2 +- gcc/config/pdp11/constraints.md | 2 +- gcc/config/pdp11/pdp11-modes.def | 2 +- gcc/config/pdp11/pdp11-protos.h | 2 +- gcc/config/pdp11/pdp11.c | 2 +- gcc/config/pdp11/pdp11.h | 2 +- gcc/config/pdp11/pdp11.md | 2 +- gcc/config/pdp11/pdp11.opt | 2 +- gcc/config/pdp11/predicates.md | 2 +- gcc/config/pdp11/t-pdp11 | 2 +- gcc/config/picochip/constraints.md | 2 +- gcc/config/picochip/dfa_space.md | 2 +- gcc/config/picochip/dfa_speed.md | 2 +- gcc/config/picochip/picochip-protos.h | 2 +- gcc/config/picochip/picochip.c | 2 +- gcc/config/picochip/picochip.h | 2 +- gcc/config/picochip/picochip.md | 2 +- gcc/config/picochip/picochip.opt | 2 +- gcc/config/picochip/predicates.md | 2 +- gcc/config/picochip/t-picochip | 2 +- gcc/config/print-sysroot-suffix.sh | 2 +- gcc/config/rl78/constraints.md | 2 +- gcc/config/rl78/predicates.md | 2 +- gcc/config/rl78/rl78-c.c | 2 +- gcc/config/rl78/rl78-expand.md | 2 +- gcc/config/rl78/rl78-opts.h | 2 +- gcc/config/rl78/rl78-protos.h | 2 +- gcc/config/rl78/rl78-real.md | 2 +- gcc/config/rl78/rl78-virt.md | 2 +- gcc/config/rl78/rl78.c | 2 +- gcc/config/rl78/rl78.h | 2 +- gcc/config/rl78/rl78.md | 2 +- gcc/config/rl78/rl78.opt | 2 +- gcc/config/rl78/t-rl78 | 2 +- gcc/config/rpath.opt | 2 +- gcc/config/rs6000/40x.md | 2 +- gcc/config/rs6000/440.md | 2 +- gcc/config/rs6000/476.h | 2 +- gcc/config/rs6000/476.md | 2 +- gcc/config/rs6000/476.opt | 2 +- gcc/config/rs6000/601.md | 2 +- gcc/config/rs6000/603.md | 2 +- gcc/config/rs6000/6xx.md | 2 +- gcc/config/rs6000/7450.md | 2 +- gcc/config/rs6000/750cl.h | 2 +- gcc/config/rs6000/7xx.md | 2 +- gcc/config/rs6000/8540.md | 2 +- gcc/config/rs6000/a2.md | 2 +- gcc/config/rs6000/aix-stdint.h | 2 +- gcc/config/rs6000/aix.h | 2 +- gcc/config/rs6000/aix43.h | 2 +- gcc/config/rs6000/aix51.h | 2 +- gcc/config/rs6000/aix52.h | 2 +- gcc/config/rs6000/aix53.h | 2 +- gcc/config/rs6000/aix61.h | 2 +- gcc/config/rs6000/aix64.opt | 2 +- gcc/config/rs6000/altivec.h | 2 +- gcc/config/rs6000/altivec.md | 2 +- gcc/config/rs6000/biarch64.h | 2 +- gcc/config/rs6000/cell.md | 2 +- gcc/config/rs6000/constraints.md | 2 +- gcc/config/rs6000/crypto.md | 2 +- gcc/config/rs6000/darwin.h | 2 +- gcc/config/rs6000/darwin.md | 2 +- gcc/config/rs6000/darwin.opt | 2 +- gcc/config/rs6000/darwin64.h | 2 +- gcc/config/rs6000/darwin7.h | 2 +- gcc/config/rs6000/darwin8.h | 2 +- gcc/config/rs6000/default64.h | 2 +- gcc/config/rs6000/dfp.md | 2 +- gcc/config/rs6000/driver-rs6000.c | 2 +- gcc/config/rs6000/e300c2c3.md | 2 +- gcc/config/rs6000/e500.h | 2 +- gcc/config/rs6000/e500mc.md | 2 +- gcc/config/rs6000/e500mc64.md | 2 +- gcc/config/rs6000/e5500.md | 2 +- gcc/config/rs6000/e6500.md | 2 +- gcc/config/rs6000/eabi.h | 2 +- gcc/config/rs6000/eabialtivec.h | 2 +- gcc/config/rs6000/eabisim.h | 2 +- gcc/config/rs6000/eabispe.h | 2 +- gcc/config/rs6000/freebsd.h | 2 +- gcc/config/rs6000/freebsd64.h | 2 +- gcc/config/rs6000/genopt.sh | 4 ++-- gcc/config/rs6000/host-darwin.c | 2 +- gcc/config/rs6000/host-ppc64-darwin.c | 2 +- gcc/config/rs6000/htm.md | 2 +- gcc/config/rs6000/htmintrin.h | 2 +- gcc/config/rs6000/htmxlintrin.h | 2 +- gcc/config/rs6000/linux.h | 2 +- gcc/config/rs6000/linux64.h | 2 +- gcc/config/rs6000/linux64.opt | 2 +- gcc/config/rs6000/linuxaltivec.h | 2 +- gcc/config/rs6000/linuxspe.h | 2 +- gcc/config/rs6000/lynx.h | 2 +- gcc/config/rs6000/mpc.md | 2 +- gcc/config/rs6000/netbsd.h | 2 +- gcc/config/rs6000/option-defaults.h | 2 +- gcc/config/rs6000/paired.h | 2 +- gcc/config/rs6000/paired.md | 2 +- gcc/config/rs6000/power4.md | 2 +- gcc/config/rs6000/power5.md | 2 +- gcc/config/rs6000/power6.md | 2 +- gcc/config/rs6000/power7.md | 2 +- gcc/config/rs6000/power8.md | 2 +- gcc/config/rs6000/ppc-asm.h | 2 +- gcc/config/rs6000/ppu_intrinsics.h | 2 +- gcc/config/rs6000/predicates.md | 2 +- gcc/config/rs6000/rs6000-builtin.def | 2 +- gcc/config/rs6000/rs6000-c.c | 2 +- gcc/config/rs6000/rs6000-cpus.def | 2 +- gcc/config/rs6000/rs6000-linux.c | 2 +- gcc/config/rs6000/rs6000-modes.def | 2 +- gcc/config/rs6000/rs6000-opts.h | 2 +- gcc/config/rs6000/rs6000-protos.h | 2 +- gcc/config/rs6000/rs6000-tables.opt | 2 +- gcc/config/rs6000/rs6000.c | 2 +- gcc/config/rs6000/rs6000.h | 2 +- gcc/config/rs6000/rs6000.md | 2 +- gcc/config/rs6000/rs6000.opt | 2 +- gcc/config/rs6000/rs64.md | 2 +- gcc/config/rs6000/rtems.h | 2 +- gcc/config/rs6000/secureplt.h | 2 +- gcc/config/rs6000/si2vmx.h | 2 +- gcc/config/rs6000/singlefp.h | 2 +- gcc/config/rs6000/spe.h | 2 +- gcc/config/rs6000/spe.md | 2 +- gcc/config/rs6000/spu2vmx.h | 2 +- gcc/config/rs6000/sync.md | 2 +- gcc/config/rs6000/sysv4.h | 2 +- gcc/config/rs6000/sysv4.opt | 2 +- gcc/config/rs6000/sysv4le.h | 2 +- gcc/config/rs6000/t-aix43 | 2 +- gcc/config/rs6000/t-aix52 | 2 +- gcc/config/rs6000/t-fprules | 2 +- gcc/config/rs6000/t-freebsd64 | 2 +- gcc/config/rs6000/t-linux64 | 2 +- gcc/config/rs6000/t-lynx | 2 +- gcc/config/rs6000/t-netbsd | 2 +- gcc/config/rs6000/t-ppccomm | 2 +- gcc/config/rs6000/t-ppcendian | 2 +- gcc/config/rs6000/t-ppcgas | 2 +- gcc/config/rs6000/t-rs6000 | 2 +- gcc/config/rs6000/t-rtems | 2 +- gcc/config/rs6000/t-spe | 2 +- gcc/config/rs6000/t-vxworks | 2 +- gcc/config/rs6000/t-xilinx | 2 +- gcc/config/rs6000/titan.md | 2 +- gcc/config/rs6000/vec_types.h | 2 +- gcc/config/rs6000/vector.md | 2 +- gcc/config/rs6000/vsx.md | 2 +- gcc/config/rs6000/vxworks.h | 2 +- gcc/config/rs6000/xcoff.h | 2 +- gcc/config/rs6000/xfpu.h | 2 +- gcc/config/rs6000/xfpu.md | 2 +- gcc/config/rs6000/xilinx.h | 2 +- gcc/config/rs6000/xilinx.opt | 2 +- gcc/config/rtems.h | 2 +- gcc/config/rtems.opt | 2 +- gcc/config/rx/constraints.md | 2 +- gcc/config/rx/predicates.md | 2 +- gcc/config/rx/rx-modes.def | 2 +- gcc/config/rx/rx-opts.h | 2 +- gcc/config/rx/rx-protos.h | 2 +- gcc/config/rx/rx.c | 2 +- gcc/config/rx/rx.h | 2 +- gcc/config/rx/rx.md | 2 +- gcc/config/rx/rx.opt | 2 +- gcc/config/rx/t-rx | 2 +- gcc/config/s390/2064.md | 2 +- gcc/config/s390/2084.md | 2 +- gcc/config/s390/2097.md | 2 +- gcc/config/s390/2817.md | 2 +- gcc/config/s390/2827.md | 2 +- gcc/config/s390/constraints.md | 2 +- gcc/config/s390/htmintrin.h | 2 +- gcc/config/s390/htmxlintrin.h | 2 +- gcc/config/s390/linux.h | 2 +- gcc/config/s390/predicates.md | 2 +- gcc/config/s390/s390-modes.def | 2 +- gcc/config/s390/s390-opts.h | 2 +- gcc/config/s390/s390-protos.h | 2 +- gcc/config/s390/s390.c | 2 +- gcc/config/s390/s390.h | 2 +- gcc/config/s390/s390.md | 2 +- gcc/config/s390/s390.opt | 2 +- gcc/config/s390/s390intrin.h | 2 +- gcc/config/s390/s390x.h | 2 +- gcc/config/s390/tpf.h | 2 +- gcc/config/s390/tpf.md | 2 +- gcc/config/s390/tpf.opt | 2 +- gcc/config/score/constraints.md | 2 +- gcc/config/score/elf.h | 2 +- gcc/config/score/predicates.md | 2 +- gcc/config/score/score-conv.h | 2 +- gcc/config/score/score-generic.md | 2 +- gcc/config/score/score-modes.def | 2 +- gcc/config/score/score-protos.h | 2 +- gcc/config/score/score.c | 2 +- gcc/config/score/score.h | 2 +- gcc/config/score/score.md | 2 +- gcc/config/score/score.opt | 2 +- gcc/config/sh/constraints.md | 2 +- gcc/config/sh/divcost-analysis | 2 +- gcc/config/sh/divtab-sh4-300.c | 2 +- gcc/config/sh/divtab-sh4.c | 2 +- gcc/config/sh/divtab.c | 2 +- gcc/config/sh/elf.h | 2 +- gcc/config/sh/embed-elf.h | 2 +- gcc/config/sh/iterators.md | 2 +- gcc/config/sh/linux.h | 2 +- gcc/config/sh/little.h | 2 +- gcc/config/sh/netbsd-elf.h | 2 +- gcc/config/sh/newlib.h | 2 +- gcc/config/sh/predicates.md | 2 +- gcc/config/sh/rtems.h | 2 +- gcc/config/sh/rtemself.h | 2 +- gcc/config/sh/sh-c.c | 2 +- gcc/config/sh/sh-mem.cc | 2 +- gcc/config/sh/sh-modes.def | 2 +- gcc/config/sh/sh-protos.h | 2 +- gcc/config/sh/sh.c | 2 +- gcc/config/sh/sh.h | 2 +- gcc/config/sh/sh.md | 2 +- gcc/config/sh/sh.opt | 2 +- gcc/config/sh/sh1.md | 2 +- gcc/config/sh/sh4-300.md | 2 +- gcc/config/sh/sh4.md | 2 +- gcc/config/sh/sh4a.md | 2 +- gcc/config/sh/sh64.h | 2 +- gcc/config/sh/sh_optimize_sett_clrt.cc | 2 +- gcc/config/sh/sh_treg_combine.cc | 2 +- gcc/config/sh/shmedia.h | 2 +- gcc/config/sh/shmedia.md | 2 +- gcc/config/sh/sshmedia.h | 2 +- gcc/config/sh/superh.h | 2 +- gcc/config/sh/sync.md | 2 +- gcc/config/sh/t-sh | 2 +- gcc/config/sh/t-sh64 | 2 +- gcc/config/sh/ushmedia.h | 2 +- gcc/config/sh/vxworks.h | 2 +- gcc/config/sol2-10.h | 2 +- gcc/config/sol2-bi.h | 2 +- gcc/config/sol2-c.c | 2 +- gcc/config/sol2-cxx.c | 2 +- gcc/config/sol2-protos.h | 2 +- gcc/config/sol2-stubs.c | 2 +- gcc/config/sol2.c | 2 +- gcc/config/sol2.h | 2 +- gcc/config/sol2.opt | 2 +- gcc/config/sparc/biarch64.h | 2 +- gcc/config/sparc/constraints.md | 2 +- gcc/config/sparc/cypress.md | 2 +- gcc/config/sparc/default-64.h | 2 +- gcc/config/sparc/driver-sparc.c | 2 +- gcc/config/sparc/freebsd.h | 2 +- gcc/config/sparc/hypersparc.md | 2 +- gcc/config/sparc/leon.md | 2 +- gcc/config/sparc/linux.h | 2 +- gcc/config/sparc/linux64.h | 2 +- gcc/config/sparc/long-double-switch.opt | 2 +- gcc/config/sparc/netbsd-elf.h | 2 +- gcc/config/sparc/niagara.md | 2 +- gcc/config/sparc/niagara2.md | 2 +- gcc/config/sparc/niagara4.md | 2 +- gcc/config/sparc/openbsd1-64.h | 2 +- gcc/config/sparc/openbsd64.h | 2 +- gcc/config/sparc/predicates.md | 2 +- gcc/config/sparc/rtemself.h | 2 +- gcc/config/sparc/sol2.h | 2 +- gcc/config/sparc/sp-elf.h | 2 +- gcc/config/sparc/sp64-elf.h | 2 +- gcc/config/sparc/sparc-c.c | 2 +- gcc/config/sparc/sparc-modes.def | 2 +- gcc/config/sparc/sparc-opts.h | 2 +- gcc/config/sparc/sparc-protos.h | 2 +- gcc/config/sparc/sparc.c | 2 +- gcc/config/sparc/sparc.h | 2 +- gcc/config/sparc/sparc.md | 2 +- gcc/config/sparc/sparc.opt | 2 +- gcc/config/sparc/sparclet.md | 2 +- gcc/config/sparc/supersparc.md | 2 +- gcc/config/sparc/sync.md | 2 +- gcc/config/sparc/sysv4.h | 2 +- gcc/config/sparc/t-elf | 2 +- gcc/config/sparc/t-leon | 2 +- gcc/config/sparc/t-leon3 | 2 +- gcc/config/sparc/t-linux64 | 2 +- gcc/config/sparc/t-rtems | 2 +- gcc/config/sparc/t-rtems-64 | 2 +- gcc/config/sparc/t-sparc | 2 +- gcc/config/sparc/tso.h | 2 +- gcc/config/sparc/ultra1_2.md | 2 +- gcc/config/sparc/ultra3.md | 2 +- gcc/config/sparc/visintrin.h | 2 +- gcc/config/sparc/vxworks.h | 2 +- gcc/config/spu/constraints.md | 2 +- gcc/config/spu/predicates.md | 2 +- gcc/config/spu/spu-builtins.def | 2 +- gcc/config/spu/spu-builtins.md | 2 +- gcc/config/spu/spu-c.c | 2 +- gcc/config/spu/spu-elf.h | 2 +- gcc/config/spu/spu-modes.def | 2 +- gcc/config/spu/spu-protos.h | 2 +- gcc/config/spu/spu.c | 2 +- gcc/config/spu/spu.h | 2 +- gcc/config/spu/spu.md | 2 +- gcc/config/spu/spu.opt | 2 +- gcc/config/spu/spu_cache.h | 2 +- gcc/config/spu/spu_internals.h | 2 +- gcc/config/spu/spu_intrinsics.h | 2 +- gcc/config/spu/spu_mfcio.h | 2 +- gcc/config/spu/t-spu-elf | 2 +- gcc/config/spu/vec_types.h | 2 +- gcc/config/spu/vmx2spu.h | 2 +- gcc/config/stormy16/constraints.md | 2 +- gcc/config/stormy16/predicates.md | 2 +- gcc/config/stormy16/stormy-abi | 2 +- gcc/config/stormy16/stormy16-protos.h | 2 +- gcc/config/stormy16/stormy16.c | 2 +- gcc/config/stormy16/stormy16.h | 2 +- gcc/config/stormy16/stormy16.md | 2 +- gcc/config/stormy16/stormy16.opt | 2 +- gcc/config/t-darwin | 2 +- gcc/config/t-glibc | 2 +- gcc/config/t-libunwind | 2 +- gcc/config/t-linux | 2 +- gcc/config/t-lynx | 2 +- gcc/config/t-pnt16-warn | 2 +- gcc/config/t-sol2 | 2 +- gcc/config/t-vxworks | 2 +- gcc/config/t-winnt | 2 +- gcc/config/tilegx/constraints.md | 2 +- gcc/config/tilegx/linux.h | 2 +- gcc/config/tilegx/mul-tables.c | 2 +- gcc/config/tilegx/predicates.md | 2 +- gcc/config/tilegx/sync.md | 2 +- gcc/config/tilegx/tilegx-builtins.h | 2 +- gcc/config/tilegx/tilegx-c.c | 2 +- gcc/config/tilegx/tilegx-generic.md | 2 +- gcc/config/tilegx/tilegx-modes.def | 2 +- gcc/config/tilegx/tilegx-multiply.h | 2 +- gcc/config/tilegx/tilegx-opts.h | 2 +- gcc/config/tilegx/tilegx-protos.h | 2 +- gcc/config/tilegx/tilegx.c | 2 +- gcc/config/tilegx/tilegx.h | 2 +- gcc/config/tilegx/tilegx.md | 2 +- gcc/config/tilegx/tilegx.opt | 2 +- gcc/config/tilepro/constraints.md | 2 +- gcc/config/tilepro/gen-mul-tables.cc | 4 ++-- gcc/config/tilepro/linux.h | 2 +- gcc/config/tilepro/mul-tables.c | 2 +- gcc/config/tilepro/predicates.md | 2 +- gcc/config/tilepro/tilepro-builtins.h | 2 +- gcc/config/tilepro/tilepro-c.c | 2 +- gcc/config/tilepro/tilepro-generic.md | 2 +- gcc/config/tilepro/tilepro-modes.def | 2 +- gcc/config/tilepro/tilepro-multiply.h | 2 +- gcc/config/tilepro/tilepro-protos.h | 2 +- gcc/config/tilepro/tilepro.c | 2 +- gcc/config/tilepro/tilepro.h | 2 +- gcc/config/tilepro/tilepro.md | 2 +- gcc/config/tilepro/tilepro.opt | 2 +- gcc/config/usegas.h | 2 +- gcc/config/v850/constraints.md | 2 +- gcc/config/v850/predicates.md | 2 +- gcc/config/v850/rtems.h | 2 +- gcc/config/v850/t-v850 | 2 +- gcc/config/v850/v850-c.c | 2 +- gcc/config/v850/v850-modes.def | 2 +- gcc/config/v850/v850-opts.h | 2 +- gcc/config/v850/v850-protos.h | 2 +- gcc/config/v850/v850.c | 2 +- gcc/config/v850/v850.h | 2 +- gcc/config/v850/v850.md | 2 +- gcc/config/v850/v850.opt | 2 +- gcc/config/vax/builtins.md | 2 +- gcc/config/vax/constraints.md | 2 +- gcc/config/vax/elf.h | 2 +- gcc/config/vax/elf.opt | 2 +- gcc/config/vax/linux.h | 2 +- gcc/config/vax/netbsd-elf.h | 2 +- gcc/config/vax/openbsd.h | 2 +- gcc/config/vax/openbsd1.h | 2 +- gcc/config/vax/predicates.md | 2 +- gcc/config/vax/vax-modes.def | 2 +- gcc/config/vax/vax-protos.h | 2 +- gcc/config/vax/vax.c | 2 +- gcc/config/vax/vax.h | 2 +- gcc/config/vax/vax.md | 2 +- gcc/config/vax/vax.opt | 2 +- gcc/config/vms/make-crtlmap.awk | 2 +- gcc/config/vms/t-vms | 2 +- gcc/config/vms/t-vmsnative | 2 +- gcc/config/vms/vms-ar.c | 2 +- gcc/config/vms/vms-c.c | 2 +- gcc/config/vms/vms-f.c | 2 +- gcc/config/vms/vms-ld.c | 2 +- gcc/config/vms/vms-opts.h | 2 +- gcc/config/vms/vms-protos.h | 2 +- gcc/config/vms/vms-stdint.h | 2 +- gcc/config/vms/vms.c | 2 +- gcc/config/vms/vms.h | 2 +- gcc/config/vms/vms.opt | 2 +- gcc/config/vms/x-vms | 2 +- gcc/config/vms/xm-vms.h | 2 +- gcc/config/vx-common.h | 2 +- gcc/config/vxworks-dummy.h | 2 +- gcc/config/vxworks.c | 2 +- gcc/config/vxworks.h | 2 +- gcc/config/vxworks.opt | 2 +- gcc/config/vxworksae.h | 2 +- gcc/config/winnt-c.c | 2 +- gcc/config/xtensa/constraints.md | 2 +- gcc/config/xtensa/elf.h | 2 +- gcc/config/xtensa/elf.opt | 2 +- gcc/config/xtensa/linux.h | 2 +- gcc/config/xtensa/predicates.md | 2 +- gcc/config/xtensa/t-xtensa | 2 +- gcc/config/xtensa/xtensa-protos.h | 2 +- gcc/config/xtensa/xtensa.c | 2 +- gcc/config/xtensa/xtensa.h | 2 +- gcc/config/xtensa/xtensa.md | 2 +- gcc/config/xtensa/xtensa.opt | 2 +- gcc/configure.ac | 2 +- gcc/context.c | 2 +- gcc/context.h | 2 +- gcc/convert.c | 2 +- gcc/convert.h | 2 +- gcc/coretypes.h | 2 +- gcc/coverage.c | 2 +- gcc/coverage.h | 2 +- gcc/cp/ChangeLog | 6 +++++- gcc/cp/Make-lang.in | 2 +- gcc/cp/NEWS | 2 +- gcc/cp/call.c | 2 +- gcc/cp/cfns.gperf | 2 +- gcc/cp/cfns.h | 2 +- gcc/cp/class.c | 2 +- gcc/cp/config-lang.in | 2 +- gcc/cp/cp-array-notation.c | 2 +- gcc/cp/cp-cilkplus.c | 2 +- gcc/cp/cp-gimplify.c | 2 +- gcc/cp/cp-lang.c | 2 +- gcc/cp/cp-objcp-common.c | 2 +- gcc/cp/cp-objcp-common.h | 2 +- gcc/cp/cp-tree.def | 2 +- gcc/cp/cp-tree.h | 2 +- gcc/cp/cvt.c | 2 +- gcc/cp/cxx-pretty-print.c | 2 +- gcc/cp/cxx-pretty-print.h | 2 +- gcc/cp/decl.c | 2 +- gcc/cp/decl.h | 2 +- gcc/cp/decl2.c | 2 +- gcc/cp/dump.c | 2 +- gcc/cp/error.c | 2 +- gcc/cp/except.c | 2 +- gcc/cp/expr.c | 2 +- gcc/cp/friend.c | 2 +- gcc/cp/g++spec.c | 2 +- gcc/cp/init.c | 2 +- gcc/cp/lambda.c | 2 +- gcc/cp/lang-specs.h | 2 +- gcc/cp/lex.c | 2 +- gcc/cp/mangle.c | 2 +- gcc/cp/method.c | 2 +- gcc/cp/name-lookup.c | 2 +- gcc/cp/name-lookup.h | 2 +- gcc/cp/operators.def | 2 +- gcc/cp/optimize.c | 2 +- gcc/cp/parser.c | 2 +- gcc/cp/parser.h | 2 +- gcc/cp/pt.c | 2 +- gcc/cp/ptree.c | 2 +- gcc/cp/repo.c | 2 +- gcc/cp/rtti.c | 2 +- gcc/cp/search.c | 2 +- gcc/cp/semantics.c | 2 +- gcc/cp/tree.c | 2 +- gcc/cp/type-utils.h | 2 +- gcc/cp/typeck.c | 2 +- gcc/cp/typeck2.c | 2 +- gcc/cp/vtable-class-hierarchy.c | 2 +- gcc/cppbuiltin.c | 2 +- gcc/cppbuiltin.h | 2 +- gcc/cppdefault.c | 2 +- gcc/cppdefault.h | 2 +- gcc/cprop.c | 2 +- gcc/cse.c | 2 +- gcc/cselib.c | 2 +- gcc/cselib.h | 2 +- gcc/data-streamer-in.c | 2 +- gcc/data-streamer-out.c | 2 +- gcc/data-streamer.c | 2 +- gcc/data-streamer.h | 2 +- gcc/dbgcnt.c | 2 +- gcc/dbgcnt.def | 2 +- gcc/dbgcnt.h | 2 +- gcc/dbxout.c | 2 +- gcc/dbxout.h | 2 +- gcc/dce.c | 2 +- gcc/dce.h | 2 +- gcc/ddg.c | 2 +- gcc/ddg.h | 2 +- gcc/debug.c | 2 +- gcc/debug.h | 2 +- gcc/defaults.h | 2 +- gcc/df-core.c | 2 +- gcc/df-problems.c | 2 +- gcc/df-scan.c | 2 +- gcc/df.h | 2 +- gcc/dfp.c | 2 +- gcc/dfp.h | 2 +- gcc/diagnostic-color.c | 2 +- gcc/diagnostic-color.h | 4 ++-- gcc/diagnostic-core.h | 2 +- gcc/diagnostic.c | 2 +- gcc/diagnostic.def | 2 +- gcc/diagnostic.h | 2 +- gcc/doc/arm-acle-intrinsics.texi | 2 +- gcc/doc/arm-neon-intrinsics.texi | 2 +- gcc/doc/avr-mmcu.texi | 2 +- gcc/doc/bugreport.texi | 2 +- gcc/doc/cfg.texi | 2 +- gcc/doc/collect2.texi | 2 +- gcc/doc/compat.texi | 2 +- gcc/doc/configfiles.texi | 2 +- gcc/doc/configterms.texi | 2 +- gcc/doc/contrib.texi | 2 +- gcc/doc/contribute.texi | 2 +- gcc/doc/cppenv.texi | 2 +- gcc/doc/cppopts.texi | 2 +- gcc/doc/extend.texi | 2 +- gcc/doc/fragments.texi | 2 +- gcc/doc/frontends.texi | 2 +- gcc/doc/gcov.texi | 2 +- gcc/doc/generic.texi | 2 +- gcc/doc/gimple.texi | 2 +- gcc/doc/gty.texi | 2 +- gcc/doc/headerdirs.texi | 2 +- gcc/doc/hostconfig.texi | 2 +- gcc/doc/implement-c.texi | 2 +- gcc/doc/implement-cxx.texi | 2 +- gcc/doc/include/gcc-common.texi | 2 +- gcc/doc/install-old.texi | 2 +- gcc/doc/install.texi2html | 2 +- gcc/doc/interface.texi | 2 +- gcc/doc/invoke.texi | 2 +- gcc/doc/languages.texi | 2 +- gcc/doc/libgcc.texi | 2 +- gcc/doc/loop.texi | 2 +- gcc/doc/lto.texi | 2 +- gcc/doc/makefile.texi | 2 +- gcc/doc/md.texi | 2 +- gcc/doc/objc.texi | 2 +- gcc/doc/optinfo.texi | 2 +- gcc/doc/options.texi | 2 +- gcc/doc/passes.texi | 2 +- gcc/doc/plugins.texi | 2 +- gcc/doc/portability.texi | 2 +- gcc/doc/rtl.texi | 2 +- gcc/doc/service.texi | 2 +- gcc/doc/sourcebuild.texi | 2 +- gcc/doc/standards.texi | 2 +- gcc/doc/tm.texi | 2 +- gcc/doc/tm.texi.in | 2 +- gcc/doc/tree-ssa.texi | 2 +- gcc/doc/trouble.texi | 2 +- gcc/dojump.c | 2 +- gcc/dominance.c | 2 +- gcc/domwalk.c | 2 +- gcc/domwalk.h | 2 +- gcc/double-int.c | 2 +- gcc/double-int.h | 2 +- gcc/dse.c | 2 +- gcc/dumpfile.c | 2 +- gcc/dumpfile.h | 2 +- gcc/dwarf2asm.c | 2 +- gcc/dwarf2asm.h | 2 +- gcc/dwarf2cfi.c | 2 +- gcc/dwarf2out.c | 2 +- gcc/dwarf2out.h | 2 +- gcc/emit-rtl.c | 2 +- gcc/emit-rtl.h | 2 +- gcc/errors.c | 2 +- gcc/errors.h | 2 +- gcc/et-forest.c | 2 +- gcc/et-forest.h | 2 +- gcc/except.c | 2 +- gcc/except.h | 2 +- gcc/exec-tool.in | 2 +- gcc/explow.c | 2 +- gcc/expmed.c | 2 +- gcc/expmed.h | 2 +- gcc/expr.c | 2 +- gcc/expr.h | 2 +- gcc/file-find.c | 2 +- gcc/file-find.h | 2 +- gcc/final.c | 2 +- gcc/fixed-value.c | 2 +- gcc/fixed-value.h | 2 +- gcc/flag-types.h | 2 +- gcc/flags.h | 2 +- gcc/fold-const.c | 2 +- gcc/fold-const.h | 2 +- gcc/fortran/ChangeLog | 4 ++++ gcc/fortran/Make-lang.in | 2 +- gcc/fortran/arith.c | 2 +- gcc/fortran/arith.h | 2 +- gcc/fortran/array.c | 2 +- gcc/fortran/bbt.c | 2 +- gcc/fortran/check.c | 2 +- gcc/fortran/class.c | 2 +- gcc/fortran/config-lang.in | 2 +- gcc/fortran/constructor.c | 2 +- gcc/fortran/constructor.h | 2 +- gcc/fortran/convert.c | 2 +- gcc/fortran/cpp.c | 2 +- gcc/fortran/cpp.h | 2 +- gcc/fortran/data.c | 2 +- gcc/fortran/data.h | 2 +- gcc/fortran/decl.c | 2 +- gcc/fortran/dependency.c | 2 +- gcc/fortran/dependency.h | 2 +- gcc/fortran/dump-parse-tree.c | 2 +- gcc/fortran/error.c | 2 +- gcc/fortran/expr.c | 2 +- gcc/fortran/f95-lang.c | 2 +- gcc/fortran/frontend-passes.c | 2 +- gcc/fortran/gfortran.h | 2 +- gcc/fortran/interface.c | 2 +- gcc/fortran/intrinsic.c | 2 +- gcc/fortran/intrinsic.h | 2 +- gcc/fortran/io.c | 2 +- gcc/fortran/ioparm.def | 2 +- gcc/fortran/iresolve.c | 2 +- gcc/fortran/iso-c-binding.def | 2 +- gcc/fortran/iso-fortran-env.def | 2 +- gcc/fortran/lang-specs.h | 2 +- gcc/fortran/lang.opt | 2 +- gcc/fortran/libgfortran.h | 2 +- gcc/fortran/match.c | 2 +- gcc/fortran/match.h | 2 +- gcc/fortran/matchexp.c | 2 +- gcc/fortran/mathbuiltins.def | 2 +- gcc/fortran/misc.c | 2 +- gcc/fortran/module.c | 2 +- gcc/fortran/openmp.c | 2 +- gcc/fortran/options.c | 2 +- gcc/fortran/parse.c | 2 +- gcc/fortran/parse.h | 2 +- gcc/fortran/primary.c | 2 +- gcc/fortran/resolve.c | 2 +- gcc/fortran/scanner.c | 2 +- gcc/fortran/scanner.h | 2 +- gcc/fortran/simplify.c | 2 +- gcc/fortran/st.c | 2 +- gcc/fortran/symbol.c | 2 +- gcc/fortran/target-memory.c | 2 +- gcc/fortran/target-memory.h | 2 +- gcc/fortran/trans-array.c | 2 +- gcc/fortran/trans-array.h | 2 +- gcc/fortran/trans-common.c | 2 +- gcc/fortran/trans-const.c | 2 +- gcc/fortran/trans-const.h | 2 +- gcc/fortran/trans-decl.c | 2 +- gcc/fortran/trans-expr.c | 2 +- gcc/fortran/trans-intrinsic.c | 2 +- gcc/fortran/trans-io.c | 2 +- gcc/fortran/trans-openmp.c | 2 +- gcc/fortran/trans-stmt.c | 2 +- gcc/fortran/trans-stmt.h | 2 +- gcc/fortran/trans-types.c | 2 +- gcc/fortran/trans-types.h | 2 +- gcc/fortran/trans.c | 2 +- gcc/fortran/trans.h | 2 +- gcc/fortran/types.def | 2 +- gcc/fp-test.c | 2 +- gcc/function.c | 2 +- gcc/function.h | 2 +- gcc/fwprop.c | 2 +- gcc/gcc-ar.c | 2 +- gcc/gcc-plugin.h | 2 +- gcc/gcc-symtab.h | 2 +- gcc/gcc.h | 2 +- gcc/gcov-io.c | 2 +- gcc/gcov-io.h | 2 +- gcc/gcov-iov.c | 2 +- gcc/gcse.c | 2 +- gcc/gcse.h | 2 +- gcc/gdbhooks.py | 2 +- gcc/gdbinit.in | 2 +- gcc/gen-pass-instances.awk | 2 +- gcc/genattr-common.c | 2 +- gcc/genattr.c | 2 +- gcc/genattrtab.c | 2 +- gcc/genautomata.c | 2 +- gcc/gencheck.c | 2 +- gcc/genchecksum.c | 2 +- gcc/gencodes.c | 2 +- gcc/genconditions.c | 2 +- gcc/genconfig.c | 2 +- gcc/genconstants.c | 2 +- gcc/genemit.c | 2 +- gcc/genenums.c | 2 +- gcc/genextract.c | 2 +- gcc/genflags.c | 2 +- gcc/gengenrtl.c | 2 +- gcc/gengtype-lex.l | 2 +- gcc/gengtype-parse.c | 2 +- gcc/gengtype-state.c | 2 +- gcc/gengtype.c | 4 ++-- gcc/gengtype.h | 2 +- gcc/genhooks.c | 2 +- gcc/genmddeps.c | 2 +- gcc/genmddump.c | 2 +- gcc/genmodes.c | 2 +- gcc/genmultilib | 2 +- gcc/genopinit.c | 2 +- gcc/genoutput.c | 2 +- gcc/genpeep.c | 2 +- gcc/genpreds.c | 2 +- gcc/genrecog.c | 2 +- gcc/gensupport.c | 2 +- gcc/gensupport.h | 2 +- gcc/ggc-common.c | 2 +- gcc/ggc-internal.h | 2 +- gcc/ggc-none.c | 2 +- gcc/ggc-page.c | 2 +- gcc/ggc.h | 2 +- gcc/gimple-builder.c | 2 +- gcc/gimple-builder.h | 2 +- gcc/gimple-expr.c | 2 +- gcc/gimple-expr.h | 2 +- gcc/gimple-fold.c | 2 +- gcc/gimple-fold.h | 2 +- gcc/gimple-iterator.c | 2 +- gcc/gimple-iterator.h | 2 +- gcc/gimple-low.c | 2 +- gcc/gimple-low.h | 2 +- gcc/gimple-pretty-print.c | 2 +- gcc/gimple-pretty-print.h | 2 +- gcc/gimple-ssa-isolate-paths.c | 2 +- gcc/gimple-ssa-strength-reduction.c | 2 +- gcc/gimple-ssa.h | 2 +- gcc/gimple-streamer-in.c | 2 +- gcc/gimple-streamer-out.c | 2 +- gcc/gimple-streamer.h | 2 +- gcc/gimple-walk.c | 2 +- gcc/gimple-walk.h | 2 +- gcc/gimple.c | 2 +- gcc/gimple.def | 2 +- gcc/gimple.h | 2 +- gcc/gimplify-me.c | 2 +- gcc/gimplify-me.h | 2 +- gcc/gimplify.c | 2 +- gcc/gimplify.h | 2 +- gcc/ginclude/float.h | 2 +- gcc/ginclude/iso646.h | 2 +- gcc/ginclude/stdalign.h | 2 +- gcc/ginclude/stdarg.h | 2 +- gcc/ginclude/stdatomic.h | 2 +- gcc/ginclude/stdbool.h | 2 +- gcc/ginclude/stddef.h | 2 +- gcc/ginclude/stdfix.h | 2 +- gcc/ginclude/stdint-gcc.h | 2 +- gcc/ginclude/stdnoreturn.h | 2 +- gcc/ginclude/tgmath.h | 2 +- gcc/ginclude/unwind-arm-common.h | 2 +- gcc/glimits.h | 2 +- gcc/go/ChangeLog | 4 ++++ gcc/go/Make-lang.in | 2 +- gcc/go/config-lang.in | 2 +- gcc/go/go-backend.c | 2 +- gcc/go/go-c.h | 2 +- gcc/go/go-gcc.cc | 2 +- gcc/go/go-lang.c | 2 +- gcc/go/go-system.h | 2 +- gcc/go/gospec.c | 2 +- gcc/go/lang-specs.h | 2 +- gcc/go/lang.opt | 2 +- gcc/godump.c | 2 +- gcc/graph.c | 2 +- gcc/graph.h | 2 +- gcc/graphds.c | 2 +- gcc/graphds.h | 2 +- gcc/graphite-blocking.c | 2 +- gcc/graphite-clast-to-gimple.c | 2 +- gcc/graphite-clast-to-gimple.h | 2 +- gcc/graphite-dependences.c | 2 +- gcc/graphite-htab.h | 2 +- gcc/graphite-interchange.c | 2 +- gcc/graphite-optimize-isl.c | 2 +- gcc/graphite-poly.c | 2 +- gcc/graphite-poly.h | 2 +- gcc/graphite-scop-detection.c | 2 +- gcc/graphite-scop-detection.h | 2 +- gcc/graphite-sese-to-poly.c | 2 +- gcc/graphite-sese-to-poly.h | 2 +- gcc/graphite.c | 2 +- gcc/gsstruct.def | 2 +- gcc/gstab.h | 2 +- gcc/gsyms.h | 2 +- gcc/haifa-sched.c | 2 +- gcc/hard-reg-set.h | 2 +- gcc/hash-table.c | 2 +- gcc/hash-table.h | 2 +- gcc/highlev-plugin-common.h | 2 +- gcc/hooks.c | 2 +- gcc/hooks.h | 2 +- gcc/host-default.c | 2 +- gcc/hosthooks-def.h | 2 +- gcc/hosthooks.h | 2 +- gcc/hw-doloop.c | 2 +- gcc/hw-doloop.h | 2 +- gcc/hwint.c | 2 +- gcc/hwint.h | 2 +- gcc/ifcvt.c | 2 +- gcc/incpath.c | 2 +- gcc/incpath.h | 2 +- gcc/init-regs.c | 2 +- gcc/input.c | 2 +- gcc/input.h | 2 +- gcc/insn-addr.h | 2 +- gcc/insn-notes.def | 2 +- gcc/internal-fn.c | 2 +- gcc/internal-fn.def | 2 +- gcc/internal-fn.h | 2 +- gcc/intl.c | 2 +- gcc/intl.h | 2 +- gcc/ipa-cp.c | 2 +- gcc/ipa-devirt.c | 2 +- gcc/ipa-inline-analysis.c | 2 +- gcc/ipa-inline-transform.c | 2 +- gcc/ipa-inline.c | 2 +- gcc/ipa-inline.h | 2 +- gcc/ipa-profile.c | 2 +- gcc/ipa-prop.c | 2 +- gcc/ipa-prop.h | 2 +- gcc/ipa-pure-const.c | 2 +- gcc/ipa-ref-inline.h | 2 +- gcc/ipa-ref.c | 2 +- gcc/ipa-ref.h | 2 +- gcc/ipa-reference.c | 2 +- gcc/ipa-reference.h | 2 +- gcc/ipa-split.c | 2 +- gcc/ipa-utils.c | 2 +- gcc/ipa-utils.h | 2 +- gcc/ipa.c | 2 +- gcc/ira-build.c | 2 +- gcc/ira-color.c | 2 +- gcc/ira-conflicts.c | 2 +- gcc/ira-costs.c | 2 +- gcc/ira-emit.c | 2 +- gcc/ira-int.h | 2 +- gcc/ira-lives.c | 2 +- gcc/ira.c | 2 +- gcc/ira.h | 2 +- gcc/is-a.h | 2 +- gcc/java/ChangeLog | 4 ++++ gcc/java/Make-lang.in | 2 +- gcc/java/boehm.c | 2 +- gcc/java/builtins.c | 2 +- gcc/java/class.c | 2 +- gcc/java/config-lang.in | 2 +- gcc/java/constants.c | 2 +- gcc/java/decl.c | 2 +- gcc/java/except.c | 2 +- gcc/java/expr.c | 2 +- gcc/java/java-except.h | 2 +- gcc/java/java-gimplify.c | 2 +- gcc/java/java-tree.def | 2 +- gcc/java/java-tree.h | 2 +- gcc/java/javaop.def | 2 +- gcc/java/javaop.h | 2 +- gcc/java/jcf-depend.c | 2 +- gcc/java/jcf-io.c | 2 +- gcc/java/jcf-parse.c | 2 +- gcc/java/jcf-path.c | 2 +- gcc/java/jcf-reader.c | 2 +- gcc/java/jcf.h | 2 +- gcc/java/jvgenmain.c | 2 +- gcc/java/jvspec.c | 2 +- gcc/java/lang-specs.h | 2 +- gcc/java/lang.c | 2 +- gcc/java/lang.opt | 2 +- gcc/java/mangle.c | 2 +- gcc/java/mangle_name.c | 2 +- gcc/java/parse.h | 2 +- gcc/java/resource.c | 2 +- gcc/java/typeck.c | 2 +- gcc/java/verify-glue.c | 2 +- gcc/java/verify-impl.c | 2 +- gcc/java/verify.h | 2 +- gcc/java/win32-host.c | 2 +- gcc/java/zextract.c | 2 +- gcc/java/zipfile.h | 2 +- gcc/jump.c | 2 +- gcc/langhooks-def.h | 2 +- gcc/langhooks.c | 2 +- gcc/langhooks.h | 2 +- gcc/lcm.c | 2 +- gcc/libfuncs.h | 2 +- gcc/limitx.h | 2 +- gcc/lists.c | 2 +- gcc/loop-doloop.c | 2 +- gcc/loop-init.c | 2 +- gcc/loop-invariant.c | 2 +- gcc/loop-iv.c | 2 +- gcc/loop-unroll.c | 2 +- gcc/loop-unswitch.c | 2 +- gcc/lower-subreg.c | 2 +- gcc/lower-subreg.h | 2 +- gcc/lra-assigns.c | 2 +- gcc/lra-coalesce.c | 2 +- gcc/lra-constraints.c | 2 +- gcc/lra-eliminations.c | 2 +- gcc/lra-int.h | 2 +- gcc/lra-lives.c | 2 +- gcc/lra-spills.c | 2 +- gcc/lra.c | 2 +- gcc/lra.h | 2 +- gcc/lto-cgraph.c | 2 +- gcc/lto-compress.c | 2 +- gcc/lto-compress.h | 2 +- gcc/lto-opts.c | 2 +- gcc/lto-section-in.c | 2 +- gcc/lto-section-out.c | 2 +- gcc/lto-streamer-in.c | 2 +- gcc/lto-streamer-out.c | 2 +- gcc/lto-streamer.c | 2 +- gcc/lto-streamer.h | 2 +- gcc/lto-wrapper.c | 2 +- gcc/lto/ChangeLog | 4 ++++ gcc/lto/Make-lang.in | 2 +- gcc/lto/common.c | 2 +- gcc/lto/common.h | 2 +- gcc/lto/config-lang.in | 2 +- gcc/lto/lang-specs.h | 2 +- gcc/lto/lang.opt | 2 +- gcc/lto/lto-lang.c | 2 +- gcc/lto/lto-object.c | 2 +- gcc/lto/lto-partition.c | 2 +- gcc/lto/lto-partition.h | 2 +- gcc/lto/lto-symtab.c | 2 +- gcc/lto/lto-tree.h | 2 +- gcc/lto/lto.c | 2 +- gcc/lto/lto.h | 2 +- gcc/machmode.def | 2 +- gcc/machmode.h | 2 +- gcc/main.c | 2 +- gcc/mcf.c | 2 +- gcc/mkconfig.sh | 2 +- gcc/mode-classes.def | 2 +- gcc/mode-switching.c | 2 +- gcc/modulo-sched.c | 2 +- gcc/objc/ChangeLog | 6 +++++- gcc/objc/Make-lang.in | 2 +- gcc/objc/config-lang.in | 2 +- gcc/objc/lang-specs.h | 2 +- gcc/objc/objc-act.c | 2 +- gcc/objc/objc-act.h | 2 +- gcc/objc/objc-encoding.c | 2 +- gcc/objc/objc-encoding.h | 2 +- gcc/objc/objc-gnu-runtime-abi-01.c | 2 +- gcc/objc/objc-lang.c | 2 +- gcc/objc/objc-map.c | 2 +- gcc/objc/objc-map.h | 2 +- gcc/objc/objc-next-metadata-tags.h | 2 +- gcc/objc/objc-next-runtime-abi-01.c | 2 +- gcc/objc/objc-next-runtime-abi-02.c | 2 +- gcc/objc/objc-runtime-hooks.h | 2 +- gcc/objc/objc-runtime-shared-support.c | 2 +- gcc/objc/objc-runtime-shared-support.h | 2 +- gcc/objc/objc-tree.def | 2 +- gcc/objcp/ChangeLog | 6 +++++- gcc/objcp/Make-lang.in | 2 +- gcc/objcp/config-lang.in | 2 +- gcc/objcp/lang-specs.h | 2 +- gcc/objcp/objcp-decl.c | 2 +- gcc/objcp/objcp-decl.h | 2 +- gcc/objcp/objcp-lang.c | 2 +- gcc/omega.c | 2 +- gcc/omega.h | 2 +- gcc/omp-builtins.def | 2 +- gcc/omp-low.c | 2 +- gcc/omp-low.h | 2 +- gcc/opt-functions.awk | 2 +- gcc/opt-gather.awk | 2 +- gcc/opt-include.awk | 2 +- gcc/opt-read.awk | 2 +- gcc/optabs.c | 2 +- gcc/optabs.def | 2 +- gcc/optabs.h | 2 +- gcc/optc-gen.awk | 2 +- gcc/optc-save-gen.awk | 2 +- gcc/opth-gen.awk | 2 +- gcc/opts-common.c | 2 +- gcc/opts-diagnostic.h | 2 +- gcc/opts-global.c | 2 +- gcc/opts.c | 2 +- gcc/opts.h | 2 +- gcc/output.h | 2 +- gcc/params.c | 2 +- gcc/params.def | 2 +- gcc/params.h | 2 +- gcc/pass_manager.h | 2 +- gcc/passes.c | 2 +- gcc/passes.def | 2 +- gcc/plugin.c | 2 +- gcc/plugin.def | 2 +- gcc/plugin.h | 2 +- gcc/po/ChangeLog | 6 +++++- gcc/po/EXCLUDES | 2 +- gcc/po/exgettext | 2 +- gcc/pointer-set.c | 2 +- gcc/pointer-set.h | 2 +- gcc/postreload-gcse.c | 2 +- gcc/postreload.c | 2 +- gcc/predict.c | 2 +- gcc/predict.def | 2 +- gcc/predict.h | 2 +- gcc/prefix.c | 2 +- gcc/prefix.h | 2 +- gcc/pretty-print.c | 2 +- gcc/pretty-print.h | 2 +- gcc/print-rtl.c | 2 +- gcc/print-rtl.h | 2 +- gcc/print-tree.c | 2 +- gcc/print-tree.h | 2 +- gcc/profile.c | 2 +- gcc/profile.h | 2 +- gcc/read-md.c | 2 +- gcc/read-md.h | 2 +- gcc/read-rtl.c | 2 +- gcc/real.c | 2 +- gcc/real.h | 2 +- gcc/realmpfr.c | 2 +- gcc/realmpfr.h | 2 +- gcc/recog.c | 2 +- gcc/recog.h | 2 +- gcc/ree.c | 2 +- gcc/reg-notes.def | 2 +- gcc/reg-stack.c | 2 +- gcc/regcprop.c | 2 +- gcc/reginfo.c | 2 +- gcc/regrename.c | 2 +- gcc/regrename.h | 2 +- gcc/regs.h | 2 +- gcc/regset.h | 2 +- gcc/regstat.c | 2 +- gcc/reload.c | 2 +- gcc/reload.h | 2 +- gcc/reload1.c | 2 +- gcc/reorg.c | 2 +- gcc/resource.c | 2 +- gcc/resource.h | 2 +- gcc/rtl-error.c | 2 +- gcc/rtl-error.h | 2 +- gcc/rtl.c | 2 +- gcc/rtl.def | 2 +- gcc/rtl.h | 2 +- gcc/rtlanal.c | 2 +- gcc/rtlhooks-def.h | 2 +- gcc/rtlhooks.c | 2 +- gcc/sanitizer.def | 2 +- gcc/sbitmap.c | 2 +- gcc/sbitmap.h | 2 +- gcc/sched-deps.c | 2 +- gcc/sched-ebb.c | 2 +- gcc/sched-int.h | 2 +- gcc/sched-rgn.c | 2 +- gcc/sched-vis.c | 2 +- gcc/sdbout.c | 2 +- gcc/sdbout.h | 2 +- gcc/sel-sched-dump.c | 2 +- gcc/sel-sched-dump.h | 2 +- gcc/sel-sched-ir.c | 2 +- gcc/sel-sched-ir.h | 2 +- gcc/sel-sched.c | 2 +- gcc/sel-sched.h | 2 +- gcc/sese.c | 2 +- gcc/sese.h | 2 +- gcc/simplify-rtx.c | 2 +- gcc/sparseset.c | 2 +- gcc/sparseset.h | 2 +- gcc/sreal.c | 2 +- gcc/sreal.h | 2 +- gcc/ssa-iterators.h | 2 +- gcc/stab.def | 2 +- gcc/stack-ptr-mod.c | 2 +- gcc/statistics.c | 2 +- gcc/statistics.h | 2 +- gcc/stmt.c | 2 +- gcc/stmt.h | 2 +- gcc/stor-layout.c | 2 +- gcc/stor-layout.h | 2 +- gcc/store-motion.c | 2 +- gcc/streamer-hooks.c | 2 +- gcc/streamer-hooks.h | 2 +- gcc/stringpool.c | 2 +- gcc/stringpool.h | 2 +- gcc/symtab.c | 2 +- gcc/sync-builtins.def | 2 +- gcc/system.h | 2 +- gcc/target-def.h | 2 +- gcc/target-globals.c | 2 +- gcc/target-globals.h | 2 +- gcc/target-hooks-macros.h | 2 +- gcc/target.def | 2 +- gcc/target.h | 2 +- gcc/targhooks.c | 2 +- gcc/targhooks.h | 2 +- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/README | 2 +- gcc/testsuite/README.compat | 2 +- gcc/testsuite/README.gcc | 2 +- gcc/testsuite/config/default.exp | 2 +- gcc/testsuite/g++.dg/README | 2 +- gcc/testsuite/g++.dg/asan/asan.exp | 2 +- gcc/testsuite/g++.dg/bprob/bprob.exp | 2 +- gcc/testsuite/g++.dg/charset/charset.exp | 2 +- gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp | 2 +- gcc/testsuite/g++.dg/compat/break/README | 2 +- gcc/testsuite/g++.dg/compat/compat.exp | 2 +- gcc/testsuite/g++.dg/compat/struct-layout-1.exp | 2 +- gcc/testsuite/g++.dg/debug/debug.exp | 2 +- gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp | 2 +- gcc/testsuite/g++.dg/dfp/dfp.exp | 2 +- gcc/testsuite/g++.dg/dg.exp | 2 +- gcc/testsuite/g++.dg/gcov/gcov.exp | 2 +- gcc/testsuite/g++.dg/gomp/gomp.exp | 2 +- gcc/testsuite/g++.dg/graphite/graphite.exp | 2 +- gcc/testsuite/g++.dg/lto/lto.exp | 2 +- gcc/testsuite/g++.dg/pch/pch.exp | 2 +- gcc/testsuite/g++.dg/plugin/plugin.exp | 2 +- gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp | 2 +- gcc/testsuite/g++.dg/special/ecos.exp | 2 +- gcc/testsuite/g++.dg/tls/tls.exp | 2 +- gcc/testsuite/g++.dg/tm/tm.exp | 2 +- gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp | 2 +- gcc/testsuite/g++.dg/tree-prof/tree-prof.exp | 2 +- gcc/testsuite/g++.dg/tsan/tsan.exp | 2 +- gcc/testsuite/g++.dg/ubsan/ubsan.exp | 2 +- gcc/testsuite/g++.dg/vect/vect.exp | 2 +- gcc/testsuite/g++.old-deja/g++.brendan/README | 2 +- gcc/testsuite/g++.old-deja/g++.robertl/README | 2 +- gcc/testsuite/g++.old-deja/old-deja.exp | 2 +- gcc/testsuite/gcc.c-torture/compile/compile.exp | 2 +- gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp | 2 +- gcc/testsuite/gcc.c-torture/execute/execute.exp | 2 +- gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp | 2 +- gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp | 2 +- gcc/testsuite/gcc.dg/README | 2 +- gcc/testsuite/gcc.dg/asan/asan.exp | 2 +- gcc/testsuite/gcc.dg/atomic/atomic.exp | 2 +- gcc/testsuite/gcc.dg/autopar/autopar.exp | 2 +- gcc/testsuite/gcc.dg/charset/charset.exp | 2 +- gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp | 2 +- gcc/testsuite/gcc.dg/compat/compat.exp | 2 +- gcc/testsuite/gcc.dg/compat/struct-layout-1.exp | 2 +- gcc/testsuite/gcc.dg/cpp/assembl2.S | 2 +- gcc/testsuite/gcc.dg/cpp/cpp.exp | 2 +- gcc/testsuite/gcc.dg/cpp/trad/trad.exp | 2 +- gcc/testsuite/gcc.dg/debug/debug.exp | 2 +- gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp | 2 +- gcc/testsuite/gcc.dg/dfp/dfp.exp | 2 +- gcc/testsuite/gcc.dg/dg.exp | 2 +- gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp | 2 +- gcc/testsuite/gcc.dg/format/format.exp | 2 +- gcc/testsuite/gcc.dg/gomp/gomp.exp | 2 +- gcc/testsuite/gcc.dg/graphite/graphite.exp | 2 +- gcc/testsuite/gcc.dg/ipa/ipa.exp | 2 +- gcc/testsuite/gcc.dg/lto/lto.exp | 2 +- gcc/testsuite/gcc.dg/noncompile/noncompile.exp | 2 +- gcc/testsuite/gcc.dg/pch/pch.exp | 2 +- gcc/testsuite/gcc.dg/plugin/plugin.exp | 2 +- gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp | 2 +- gcc/testsuite/gcc.dg/special/mips-abi.exp | 2 +- gcc/testsuite/gcc.dg/special/special.exp | 2 +- gcc/testsuite/gcc.dg/tls/tls.exp | 2 +- gcc/testsuite/gcc.dg/tm/tm.exp | 2 +- gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp | 2 +- gcc/testsuite/gcc.dg/torture/tls/tls.exp | 2 +- gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp | 2 +- gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp | 2 +- gcc/testsuite/gcc.dg/tsan/tsan.exp | 2 +- gcc/testsuite/gcc.dg/ubsan/ubsan.exp | 2 +- gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp | 2 +- gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp | 2 +- gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp | 2 +- .../gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp | 2 +- gcc/testsuite/gcc.dg/vect/vect.exp | 2 +- gcc/testsuite/gcc.dg/vmx/vmx.exp | 2 +- gcc/testsuite/gcc.dg/vxworks/vxworks.exp | 2 +- gcc/testsuite/gcc.dg/weak/weak.exp | 2 +- gcc/testsuite/gcc.misc-tests/acker1.exp | 2 +- gcc/testsuite/gcc.misc-tests/arm-isr.exp | 2 +- gcc/testsuite/gcc.misc-tests/bprob.exp | 2 +- gcc/testsuite/gcc.misc-tests/dectest.exp | 2 +- gcc/testsuite/gcc.misc-tests/dhry.exp | 2 +- gcc/testsuite/gcc.misc-tests/gcov.exp | 2 +- gcc/testsuite/gcc.misc-tests/help.exp | 2 +- gcc/testsuite/gcc.misc-tests/i386-prefetch.exp | 2 +- gcc/testsuite/gcc.misc-tests/linkage.exp | 2 +- gcc/testsuite/gcc.misc-tests/matrix1.exp | 2 +- gcc/testsuite/gcc.misc-tests/mg-2.exp | 2 +- gcc/testsuite/gcc.misc-tests/mg.exp | 2 +- gcc/testsuite/gcc.misc-tests/options.exp | 2 +- gcc/testsuite/gcc.misc-tests/sieve.exp | 2 +- gcc/testsuite/gcc.misc-tests/sort2.exp | 2 +- gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp | 2 +- gcc/testsuite/gcc.target/aarch64/aarch64.exp | 2 +- gcc/testsuite/gcc.target/alpha/alpha.exp | 2 +- gcc/testsuite/gcc.target/arc/arc.exp | 2 +- gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp | 2 +- gcc/testsuite/gcc.target/arm/acle/acle.exp | 2 +- gcc/testsuite/gcc.target/arm/arm.exp | 2 +- gcc/testsuite/gcc.target/arm/neon/neon.exp | 2 +- gcc/testsuite/gcc.target/avr/avr.exp | 2 +- gcc/testsuite/gcc.target/avr/torture/avr-torture.exp | 2 +- gcc/testsuite/gcc.target/bfin/bfin.exp | 2 +- gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp | 2 +- gcc/testsuite/gcc.target/cris/cris.exp | 2 +- gcc/testsuite/gcc.target/cris/torture/cris-torture.exp | 2 +- gcc/testsuite/gcc.target/epiphany/epiphany.exp | 2 +- gcc/testsuite/gcc.target/frv/frv.exp | 2 +- gcc/testsuite/gcc.target/h8300/h8300.exp | 4 ++-- gcc/testsuite/gcc.target/i386/i386.exp | 2 +- gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp | 2 +- gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp | 2 +- gcc/testsuite/gcc.target/ia64/ia64.exp | 2 +- gcc/testsuite/gcc.target/m68k/m68k.exp | 2 +- gcc/testsuite/gcc.target/microblaze/microblaze.exp | 2 +- gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp | 2 +- gcc/testsuite/gcc.target/mips/mips-nonpic/README | 2 +- gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp | 2 +- gcc/testsuite/gcc.target/mips/mips.exp | 2 +- gcc/testsuite/gcc.target/nds32/nds32.exp | 2 +- gcc/testsuite/gcc.target/nios2/nios2.exp | 2 +- gcc/testsuite/gcc.target/powerpc/powerpc.exp | 2 +- gcc/testsuite/gcc.target/rx/rx.exp | 2 +- gcc/testsuite/gcc.target/s390/s390.exp | 2 +- gcc/testsuite/gcc.target/sh/sh.exp | 2 +- gcc/testsuite/gcc.target/sh/torture/sh-torture.exp | 2 +- gcc/testsuite/gcc.target/sparc/sparc.exp | 2 +- gcc/testsuite/gcc.target/spu/ea/ea.exp | 2 +- gcc/testsuite/gcc.target/spu/spu.exp | 2 +- gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp | 2 +- gcc/testsuite/gcc.target/tic6x/tic6x.exp | 2 +- gcc/testsuite/gcc.target/vax/vax.exp | 2 +- gcc/testsuite/gcc.target/x86_64/abi/README.gcc | 2 +- gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp | 2 +- gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp | 2 +- gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp | 2 +- gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp | 2 +- gcc/testsuite/gcc.target/xstormy16/xstormy16.exp | 2 +- gcc/testsuite/gcc.test-framework/README | 2 +- gcc/testsuite/gcc.test-framework/gen_directive_tests | 2 +- gcc/testsuite/gcc.test-framework/test-framework.awk | 2 +- gcc/testsuite/gcc.test-framework/test-framework.exp | 2 +- gcc/testsuite/gfortran.dg/coarray/caf.exp | 2 +- gcc/testsuite/gfortran.dg/debug/debug.exp | 2 +- gcc/testsuite/gfortran.dg/dg.exp | 2 +- gcc/testsuite/gfortran.dg/g77/README | 2 +- gcc/testsuite/gfortran.dg/gomp/gomp.exp | 2 +- gcc/testsuite/gfortran.dg/graphite/graphite.exp | 2 +- gcc/testsuite/gfortran.dg/lto/lto.exp | 2 +- gcc/testsuite/gfortran.dg/vect/vect.exp | 2 +- gcc/testsuite/gfortran.fortran-torture/compile/compile.exp | 2 +- gcc/testsuite/gfortran.fortran-torture/execute/execute.exp | 2 +- gcc/testsuite/gnat.dg/dg.exp | 2 +- gcc/testsuite/gnat.dg/specs/specs.exp | 2 +- gcc/testsuite/go.dg/dg.exp | 2 +- gcc/testsuite/go.go-torture/execute/execute.exp | 2 +- gcc/testsuite/go.test/go-test.exp | 2 +- gcc/testsuite/lib/asan-dg.exp | 2 +- gcc/testsuite/lib/atomic-dg.exp | 2 +- gcc/testsuite/lib/c-compat.exp | 2 +- gcc/testsuite/lib/c-torture.exp | 2 +- gcc/testsuite/lib/compat.exp | 2 +- gcc/testsuite/lib/copy-file.exp | 2 +- gcc/testsuite/lib/dejapatches.exp | 2 +- gcc/testsuite/lib/dg-pch.exp | 2 +- gcc/testsuite/lib/file-format.exp | 2 +- gcc/testsuite/lib/fortran-modules.exp | 2 +- gcc/testsuite/lib/fortran-torture.exp | 2 +- gcc/testsuite/lib/g++-dg.exp | 2 +- gcc/testsuite/lib/g++.exp | 2 +- gcc/testsuite/lib/gcc-defs.exp | 2 +- gcc/testsuite/lib/gcc-dg.exp | 2 +- gcc/testsuite/lib/gcc-gdb-test.exp | 2 +- gcc/testsuite/lib/gcc-simulate-thread.exp | 2 +- gcc/testsuite/lib/gcc.exp | 2 +- gcc/testsuite/lib/gcov.exp | 2 +- gcc/testsuite/lib/gfortran-dg.exp | 2 +- gcc/testsuite/lib/gfortran.exp | 2 +- gcc/testsuite/lib/gnat-dg.exp | 2 +- gcc/testsuite/lib/gnat.exp | 2 +- gcc/testsuite/lib/go-dg.exp | 2 +- gcc/testsuite/lib/go-torture.exp | 2 +- gcc/testsuite/lib/go.exp | 2 +- gcc/testsuite/lib/lto.exp | 2 +- gcc/testsuite/lib/mike-g++.exp | 2 +- gcc/testsuite/lib/mike-gcc.exp | 2 +- gcc/testsuite/lib/obj-c++-dg.exp | 2 +- gcc/testsuite/lib/obj-c++.exp | 2 +- gcc/testsuite/lib/objc-dg.exp | 2 +- gcc/testsuite/lib/objc-torture.exp | 2 +- gcc/testsuite/lib/objc.exp | 2 +- gcc/testsuite/lib/options.exp | 2 +- gcc/testsuite/lib/plugin-support.exp | 2 +- gcc/testsuite/lib/profopt.exp | 2 +- gcc/testsuite/lib/prune.exp | 2 +- gcc/testsuite/lib/scanasm.exp | 2 +- gcc/testsuite/lib/scandump.exp | 2 +- gcc/testsuite/lib/scanipa.exp | 2 +- gcc/testsuite/lib/scanrtl.exp | 2 +- gcc/testsuite/lib/scantree.exp | 2 +- gcc/testsuite/lib/target-libpath.exp | 2 +- gcc/testsuite/lib/target-supports-dg.exp | 2 +- gcc/testsuite/lib/target-supports.exp | 2 +- gcc/testsuite/lib/timeout-dg.exp | 2 +- gcc/testsuite/lib/timeout.exp | 2 +- gcc/testsuite/lib/torture-options.exp | 2 +- gcc/testsuite/lib/tsan-dg.exp | 2 +- gcc/testsuite/lib/ubsan-dg.exp | 2 +- gcc/testsuite/lib/wrapper.exp | 2 +- gcc/testsuite/obj-c++.dg/attributes/attributes.exp | 2 +- gcc/testsuite/obj-c++.dg/dg.exp | 2 +- gcc/testsuite/obj-c++.dg/lto/lto.exp | 2 +- gcc/testsuite/obj-c++.dg/property/property.exp | 2 +- gcc/testsuite/obj-c++.dg/strings/strings.exp | 2 +- gcc/testsuite/obj-c++.dg/torture/strings/strings.exp | 2 +- gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m | 2 +- gcc/testsuite/objc.dg/attributes/attributes.exp | 2 +- gcc/testsuite/objc.dg/dg.exp | 2 +- gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp | 2 +- gcc/testsuite/objc.dg/lto/lto.exp | 2 +- gcc/testsuite/objc.dg/pch/pch.exp | 2 +- gcc/testsuite/objc.dg/property/property.exp | 2 +- gcc/testsuite/objc.dg/special/special.exp | 2 +- gcc/testsuite/objc.dg/strings/strings.exp | 2 +- gcc/testsuite/objc.dg/torture/strings/strings.exp | 2 +- gcc/testsuite/objc/compile/compile.exp | 2 +- gcc/testsuite/objc/execute/exceptions/exceptions.exp | 2 +- gcc/testsuite/objc/execute/execute.exp | 2 +- gcc/timevar.c | 2 +- gcc/timevar.def | 2 +- gcc/timevar.h | 2 +- gcc/tlink.c | 2 +- gcc/toplev.c | 2 +- gcc/toplev.h | 2 +- gcc/tracer.c | 2 +- gcc/trans-mem.c | 2 +- gcc/trans-mem.h | 2 +- gcc/tree-affine.c | 2 +- gcc/tree-affine.h | 2 +- gcc/tree-browser.c | 2 +- gcc/tree-browser.def | 2 +- gcc/tree-call-cdce.c | 2 +- gcc/tree-cfg.c | 2 +- gcc/tree-cfg.h | 2 +- gcc/tree-cfgcleanup.c | 2 +- gcc/tree-cfgcleanup.h | 2 +- gcc/tree-chrec.c | 2 +- gcc/tree-chrec.h | 2 +- gcc/tree-complex.c | 2 +- gcc/tree-core.h | 2 +- gcc/tree-data-ref.c | 2 +- gcc/tree-data-ref.h | 2 +- gcc/tree-dfa.c | 2 +- gcc/tree-dfa.h | 2 +- gcc/tree-diagnostic.c | 2 +- gcc/tree-diagnostic.h | 2 +- gcc/tree-dump.c | 2 +- gcc/tree-dump.h | 2 +- gcc/tree-eh.c | 2 +- gcc/tree-eh.h | 2 +- gcc/tree-emutls.c | 2 +- gcc/tree-hasher.h | 2 +- gcc/tree-if-conv.c | 2 +- gcc/tree-inline.c | 2 +- gcc/tree-inline.h | 2 +- gcc/tree-into-ssa.c | 2 +- gcc/tree-into-ssa.h | 2 +- gcc/tree-iterator.c | 2 +- gcc/tree-iterator.h | 2 +- gcc/tree-loop-distribution.c | 2 +- gcc/tree-nested.c | 2 +- gcc/tree-nested.h | 2 +- gcc/tree-nrv.c | 2 +- gcc/tree-object-size.c | 2 +- gcc/tree-object-size.h | 2 +- gcc/tree-outof-ssa.c | 2 +- gcc/tree-outof-ssa.h | 2 +- gcc/tree-parloops.c | 2 +- gcc/tree-parloops.h | 2 +- gcc/tree-pass.h | 2 +- gcc/tree-phinodes.c | 2 +- gcc/tree-phinodes.h | 2 +- gcc/tree-predcom.c | 2 +- gcc/tree-pretty-print.c | 2 +- gcc/tree-pretty-print.h | 2 +- gcc/tree-profile.c | 2 +- gcc/tree-scalar-evolution.c | 2 +- gcc/tree-scalar-evolution.h | 2 +- gcc/tree-sra.c | 2 +- gcc/tree-ssa-address.c | 2 +- gcc/tree-ssa-address.h | 2 +- gcc/tree-ssa-alias.c | 2 +- gcc/tree-ssa-alias.h | 2 +- gcc/tree-ssa-ccp.c | 2 +- gcc/tree-ssa-coalesce.c | 2 +- gcc/tree-ssa-coalesce.h | 2 +- gcc/tree-ssa-copy.c | 2 +- gcc/tree-ssa-copyrename.c | 2 +- gcc/tree-ssa-dce.c | 2 +- gcc/tree-ssa-dom.c | 2 +- gcc/tree-ssa-dom.h | 2 +- gcc/tree-ssa-dse.c | 2 +- gcc/tree-ssa-forwprop.c | 2 +- gcc/tree-ssa-ifcombine.c | 2 +- gcc/tree-ssa-live.c | 2 +- gcc/tree-ssa-live.h | 2 +- gcc/tree-ssa-loop-ch.c | 2 +- gcc/tree-ssa-loop-im.c | 2 +- gcc/tree-ssa-loop-ivcanon.c | 2 +- gcc/tree-ssa-loop-ivopts.c | 2 +- gcc/tree-ssa-loop-ivopts.h | 2 +- gcc/tree-ssa-loop-manip.c | 2 +- gcc/tree-ssa-loop-manip.h | 2 +- gcc/tree-ssa-loop-niter.c | 2 +- gcc/tree-ssa-loop-niter.h | 2 +- gcc/tree-ssa-loop-prefetch.c | 2 +- gcc/tree-ssa-loop-unswitch.c | 2 +- gcc/tree-ssa-loop.c | 2 +- gcc/tree-ssa-loop.h | 2 +- gcc/tree-ssa-math-opts.c | 2 +- gcc/tree-ssa-operands.c | 2 +- gcc/tree-ssa-operands.h | 2 +- gcc/tree-ssa-phiopt.c | 2 +- gcc/tree-ssa-phiprop.c | 2 +- gcc/tree-ssa-pre.c | 2 +- gcc/tree-ssa-propagate.c | 2 +- gcc/tree-ssa-propagate.h | 2 +- gcc/tree-ssa-reassoc.c | 2 +- gcc/tree-ssa-sccvn.c | 2 +- gcc/tree-ssa-sccvn.h | 2 +- gcc/tree-ssa-sink.c | 2 +- gcc/tree-ssa-strlen.c | 2 +- gcc/tree-ssa-structalias.c | 2 +- gcc/tree-ssa-tail-merge.c | 2 +- gcc/tree-ssa-ter.c | 2 +- gcc/tree-ssa-ter.h | 2 +- gcc/tree-ssa-threadedge.c | 2 +- gcc/tree-ssa-threadedge.h | 2 +- gcc/tree-ssa-threadupdate.c | 2 +- gcc/tree-ssa-threadupdate.h | 2 +- gcc/tree-ssa-uncprop.c | 2 +- gcc/tree-ssa-uninit.c | 2 +- gcc/tree-ssa.c | 2 +- gcc/tree-ssa.h | 2 +- gcc/tree-ssanames.c | 2 +- gcc/tree-ssanames.h | 2 +- gcc/tree-stdarg.c | 2 +- gcc/tree-stdarg.h | 2 +- gcc/tree-streamer-in.c | 2 +- gcc/tree-streamer-out.c | 2 +- gcc/tree-streamer.c | 2 +- gcc/tree-streamer.h | 2 +- gcc/tree-switch-conversion.c | 2 +- gcc/tree-tailcall.c | 2 +- gcc/tree-vect-data-refs.c | 2 +- gcc/tree-vect-generic.c | 2 +- gcc/tree-vect-loop-manip.c | 2 +- gcc/tree-vect-loop.c | 2 +- gcc/tree-vect-patterns.c | 2 +- gcc/tree-vect-slp.c | 2 +- gcc/tree-vect-stmts.c | 2 +- gcc/tree-vectorizer.c | 2 +- gcc/tree-vectorizer.h | 2 +- gcc/tree-vrp.c | 2 +- gcc/tree.c | 2 +- gcc/tree.def | 2 +- gcc/tree.h | 2 +- gcc/treestruct.def | 2 +- gcc/tsan.c | 2 +- gcc/tsan.h | 2 +- gcc/tsystem.h | 2 +- gcc/typeclass.h | 2 +- gcc/ubsan.c | 2 +- gcc/ubsan.h | 2 +- gcc/valtrack.c | 2 +- gcc/valtrack.h | 2 +- gcc/value-prof.c | 2 +- gcc/value-prof.h | 2 +- gcc/var-tracking.c | 2 +- gcc/varasm.c | 2 +- gcc/varasm.h | 2 +- gcc/varpool.c | 2 +- gcc/vec.c | 2 +- gcc/vec.h | 2 +- gcc/version.c | 2 +- gcc/vmsdbg.h | 2 +- gcc/vmsdbgout.c | 2 +- gcc/vtable-verify.c | 2 +- gcc/vtable-verify.h | 2 +- gcc/web.c | 2 +- gcc/xcoff.h | 2 +- gcc/xcoffout.c | 2 +- gcc/xcoffout.h | 2 +- 2499 files changed, 2560 insertions(+), 2512 deletions(-) (limited to 'gcc') diff --git a/gcc/ABOUT-GCC-NLS b/gcc/ABOUT-GCC-NLS index c46aa85fbe9..9511bbc21c5 100644 --- a/gcc/ABOUT-GCC-NLS +++ b/gcc/ABOUT-GCC-NLS @@ -49,7 +49,7 @@ configure GCC with --enable-maintainer-mode to get the master catalog rebuilt. -Copyright (C) 1998-2013 Free Software Foundation, Inc. +Copyright (C) 1998-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7a6602c2208..4c2595d5919 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2014-01-02 Richard Sandiford * common/config/arc/arc-common.c, config/arc/arc-modes.def, diff --git a/gcc/LANGUAGES b/gcc/LANGUAGES index 274ad90091c..b54de86e7ba 100644 --- a/gcc/LANGUAGES +++ b/gcc/LANGUAGES @@ -57,7 +57,7 @@ Feb 1, 1998: DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0) -Copyright (C) 1998-2013 Free Software Foundation, Inc. +Copyright (C) 1998-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/Makefile.in b/gcc/Makefile.in index d824551b081..459b1baf22b 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1,7 +1,7 @@ # Makefile for GNU Compiler Collection # Run 'configure' to generate Makefile from Makefile.in -# Copyright (C) 1987-2013 Free Software Foundation, Inc. +# Copyright (C) 1987-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/README.Portability b/gcc/README.Portability index 2787a2beba9..1c9bf4fcd20 100644 --- a/gcc/README.Portability +++ b/gcc/README.Portability @@ -1,4 +1,4 @@ -Copyright (C) 2000-2013 Free Software Foundation, Inc. +Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is intended to contain a few notes about writing C code within GCC so that it compiles without error on the full range of diff --git a/gcc/acinclude.m4 b/gcc/acinclude.m4 index 34de2075bf2..58daa444619 100644 --- a/gcc/acinclude.m4 +++ b/gcc/acinclude.m4 @@ -1,4 +1,4 @@ -dnl Copyright (C) 2005-2013 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2014 Free Software Foundation, Inc. dnl dnl This file is part of GCC. dnl diff --git a/gcc/addresses.h b/gcc/addresses.h index 244d7a35b03..e323b588794 100644 --- a/gcc/addresses.h +++ b/gcc/addresses.h @@ -1,5 +1,5 @@ /* Inline functions to test validity of reg classes for addressing modes. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/alias.c b/gcc/alias.c index 6290c832ddc..434ae7ad304 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -1,5 +1,5 @@ /* Alias analysis for GNU C - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. Contributed by John Carr (jfc@mit.edu). This file is part of GCC. diff --git a/gcc/alias.h b/gcc/alias.h index ff190eb094e..58fda9d0e1f 100644 --- a/gcc/alias.h +++ b/gcc/alias.h @@ -1,5 +1,5 @@ /* Exported functions from alias.c - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/alloc-pool.c b/gcc/alloc-pool.c index 64535685de0..dfb13ce55fb 100644 --- a/gcc/alloc-pool.c +++ b/gcc/alloc-pool.c @@ -1,5 +1,5 @@ /* Functions to support a pool of allocatable objects. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Contributed by Daniel Berlin This file is part of GCC. diff --git a/gcc/alloc-pool.h b/gcc/alloc-pool.h index 194612576a9..ab99cc65017 100644 --- a/gcc/alloc-pool.h +++ b/gcc/alloc-pool.h @@ -1,5 +1,5 @@ /* Functions to support a pool of allocatable objects - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. Contributed by Daniel Berlin This file is part of GCC. diff --git a/gcc/asan.c b/gcc/asan.c index d4059d6e7dd..e077153a969 100644 --- a/gcc/asan.c +++ b/gcc/asan.c @@ -1,5 +1,5 @@ /* AddressSanitizer, a fast memory error detector. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Kostya Serebryany This file is part of GCC. diff --git a/gcc/asan.h b/gcc/asan.h index 8ffd90e94f4..08d5063c9e1 100644 --- a/gcc/asan.h +++ b/gcc/asan.h @@ -1,5 +1,5 @@ /* AddressSanitizer, a fast memory error detector. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Kostya Serebryany This file is part of GCC. diff --git a/gcc/attribs.c b/gcc/attribs.c index 19b697d416f..54373eb52ff 100644 --- a/gcc/attribs.c +++ b/gcc/attribs.c @@ -1,5 +1,5 @@ /* Functions dealing with attribute handling, used by most front ends. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/attribs.h b/gcc/attribs.h index 042e112ea8e..421110d1ee3 100644 --- a/gcc/attribs.h +++ b/gcc/attribs.h @@ -1,5 +1,5 @@ /* Declarations and definitions dealing with attribute handling. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/auto-inc-dec.c b/gcc/auto-inc-dec.c index be7fdf81f18..47f516dd33d 100644 --- a/gcc/auto-inc-dec.c +++ b/gcc/auto-inc-dec.c @@ -1,5 +1,5 @@ /* Discovery of auto-inc and auto-dec instructions. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck This file is part of GCC. diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 3fa319b4d4c..82729b4c810 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -1,5 +1,5 @@ /* Define control flow data structures for the CFG. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index 7b8584f8ff9..9f03f5b9c3e 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -1,5 +1,5 @@ /* Basic block reordering routines for the GNU compiler. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/bb-reorder.h b/gcc/bb-reorder.h index 025300ca481..4dbb56f1e80 100644 --- a/gcc/bb-reorder.h +++ b/gcc/bb-reorder.h @@ -1,5 +1,5 @@ /* Basic block reordering routines for the GNU compiler. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/bitmap.c b/gcc/bitmap.c index f1a845915f9..4855a6691ea 100644 --- a/gcc/bitmap.c +++ b/gcc/bitmap.c @@ -1,5 +1,5 @@ /* Functions to support general ended bitmaps. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/bitmap.h b/gcc/bitmap.h index 2c14080e089..6fa25abdc77 100644 --- a/gcc/bitmap.h +++ b/gcc/bitmap.h @@ -1,5 +1,5 @@ /* Functions to support general ended bitmaps. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/bt-load.c b/gcc/bt-load.c index 83b3ebabee2..4fa68f11e98 100644 --- a/gcc/bt-load.c +++ b/gcc/bt-load.c @@ -1,6 +1,6 @@ /* Perform branch target register load optimizations. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/builtin-attrs.def b/gcc/builtin-attrs.def index 7939727015a..593df2d3922 100644 --- a/gcc/builtin-attrs.def +++ b/gcc/builtin-attrs.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2001-2013 Free Software Foundation, Inc. +/* Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Joseph Myers . This file is part of GCC. diff --git a/gcc/builtin-types.def b/gcc/builtin-types.def index e1054088cee..30f06d208bc 100644 --- a/gcc/builtin-types.def +++ b/gcc/builtin-types.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2001-2013 Free Software Foundation, Inc. +/* Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/builtins.c b/gcc/builtins.c index 5b6d39a8b60..d963c667f0e 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -1,5 +1,5 @@ /* Expand builtin functions. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/builtins.def b/gcc/builtins.def index 3e3deaa5780..5a4012d3c81 100644 --- a/gcc/builtins.def +++ b/gcc/builtins.def @@ -1,6 +1,6 @@ /* This file contains the definitions and documentation for the builtins used in the GNU compiler. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/builtins.h b/gcc/builtins.h index 0ed9479bdbf..5eb930369d4 100644 --- a/gcc/builtins.h +++ b/gcc/builtins.h @@ -1,5 +1,5 @@ /* Expand builtin functions. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 054dfdcb9fd..defc0030a64 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2014-01-02 Richard Sandiford * array-notation-common.c, c-cilkplus.c: Use the standard form for @@ -3373,7 +3377,7 @@ * c-common.c: Include gt-c-family-c-common.h. * c-pragma.c: Include gt-c-family-c-pragma.h. -Copyright (C) 2010-2013 Free Software Foundation, Inc. +Copyright (C) 2010-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/c-family/array-notation-common.c b/gcc/c-family/array-notation-common.c index 4e77fad252b..c0100398a8b 100644 --- a/gcc/c-family/array-notation-common.c +++ b/gcc/c-family/array-notation-common.c @@ -1,7 +1,7 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support This file contains the builtin functions for Array notations. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Balaji V. Iyer , Intel Corporation diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index 27fb9d76527..df4a1f232b9 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -1,6 +1,6 @@ /* Print GENERIC declaration (functions, variables, types) trees coming from the C and C++ front-ends as well as macros in Ada syntax. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Adapted from tree-pretty-print.c by Arnaud Charlet This file is part of GCC. diff --git a/gcc/c-family/c-ada-spec.h b/gcc/c-family/c-ada-spec.h index 64f0ecd4b22..3d1f1655dfb 100644 --- a/gcc/c-family/c-ada-spec.h +++ b/gcc/c-family/c-ada-spec.h @@ -1,5 +1,5 @@ /* Interface for -fdump-ada-spec capability. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/c-cilkplus.c b/gcc/c-family/c-cilkplus.c index 2cc2dd9d287..1a16f6690b0 100644 --- a/gcc/c-family/c-cilkplus.c +++ b/gcc/c-family/c-cilkplus.c @@ -1,7 +1,7 @@ /* This file contains routines to construct and validate Cilk Plus constructs within the C and C++ front ends. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez . This file is part of GCC. diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 229f8fa22e8..40d12bca809 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -1,5 +1,5 @@ /* Subroutines shared by all languages that are variants of C. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/c-common.def b/gcc/c-family/c-common.def index fac50e23777..a181475bc51 100644 --- a/gcc/c-family/c-common.def +++ b/gcc/c-family/c-common.def @@ -1,7 +1,7 @@ /* This file contains the definitions and documentation for the additional tree codes used in the GNU C compiler (see tree.def for the standard codes). - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Written by Benjamin Chelf This file is part of GCC. diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h index 4357d1fab93..7e3ece6a691 100644 --- a/gcc/c-family/c-common.h +++ b/gcc/c-family/c-common.h @@ -1,5 +1,5 @@ /* Definitions for c-common.c. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c index eb96b8338b0..2f2e7bae824 100644 --- a/gcc/c-family/c-cppbuiltin.c +++ b/gcc/c-family/c-cppbuiltin.c @@ -1,5 +1,5 @@ /* Define builtin-in macros for the C family front ends. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/c-dump.c b/gcc/c-family/c-dump.c index 3954331b1a2..b1b0c820143 100644 --- a/gcc/c-family/c-dump.c +++ b/gcc/c-family/c-dump.c @@ -1,5 +1,5 @@ /* Tree-dumping functionality for C-family languages. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Written by Mark Mitchell This file is part of GCC. diff --git a/gcc/c-family/c-format.c b/gcc/c-family/c-format.c index 0552c84464f..cdc09c44b86 100644 --- a/gcc/c-family/c-format.c +++ b/gcc/c-family/c-format.c @@ -1,5 +1,5 @@ /* Check calls to formatted I/O functions (-Wformat). - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/c-format.h b/gcc/c-family/c-format.h index f1cf71e8c80..821a2cc7b7b 100644 --- a/gcc/c-family/c-format.h +++ b/gcc/c-family/c-format.h @@ -1,5 +1,5 @@ /* Check calls to formatted I/O functions (-Wformat). - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/c-gimplify.c b/gcc/c-family/c-gimplify.c index b919737b8ee..737be4d7290 100644 --- a/gcc/c-family/c-gimplify.c +++ b/gcc/c-family/c-gimplify.c @@ -2,7 +2,7 @@ by the C-based front ends. The structure of gimplified, or language-independent, trees is dictated by the grammar described in this file. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Lowering of expressions contributed by Sebastian Pop Re-written to support lowering of whole function trees, documentation and miscellaneous cleanups by Diego Novillo diff --git a/gcc/c-family/c-lex.c b/gcc/c-family/c-lex.c index 2130296a390..e3e1da240d8 100644 --- a/gcc/c-family/c-lex.c +++ b/gcc/c-family/c-lex.c @@ -1,5 +1,5 @@ /* Mainly the interface between cpplib and the C front ends. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/c-objc.h b/gcc/c-family/c-objc.h index bf4e3d536d6..f7fc9c4b489 100644 --- a/gcc/c-family/c-objc.h +++ b/gcc/c-family/c-objc.h @@ -1,5 +1,5 @@ /* Definitions of Objective-C front-end entry points used for C and C++. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/c-omp.c b/gcc/c-family/c-omp.c index 3ccf8f91521..ac380ee7e1d 100644 --- a/gcc/c-family/c-omp.c +++ b/gcc/c-family/c-omp.c @@ -1,7 +1,7 @@ /* This file contains routines to construct GNU OpenMP constructs, called from parsing in the C and C++ front ends. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Richard Henderson , Diego Novillo . diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c index 3576f7d57c1..b7478f3a2d6 100644 --- a/gcc/c-family/c-opts.c +++ b/gcc/c-family/c-opts.c @@ -1,5 +1,5 @@ /* C/ObjC/C++ command line option handling. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Neil Booth. This file is part of GCC. diff --git a/gcc/c-family/c-pch.c b/gcc/c-family/c-pch.c index 7b0eca7fde1..e51d5b9409e 100644 --- a/gcc/c-family/c-pch.c +++ b/gcc/c-family/c-pch.c @@ -1,5 +1,5 @@ /* Precompiled header implementation for the C languages. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/c-ppoutput.c b/gcc/c-family/c-ppoutput.c index 03b88170520..f3b5fa4487d 100644 --- a/gcc/c-family/c-ppoutput.c +++ b/gcc/c-family/c-ppoutput.c @@ -1,5 +1,5 @@ /* Preprocess only, using cpplib. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Written by Per Bothner, 1994-95. This program is free software; you can redistribute it and/or modify it diff --git a/gcc/c-family/c-pragma.c b/gcc/c-family/c-pragma.c index 64a5b667499..af280856999 100644 --- a/gcc/c-family/c-pragma.c +++ b/gcc/c-family/c-pragma.c @@ -1,5 +1,5 @@ /* Handle #pragma, system V.4 style. Supports #pragma weak and #pragma pack. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/c-pragma.h b/gcc/c-family/c-pragma.h index 683b3f8aca9..6f1bf74c2a9 100644 --- a/gcc/c-family/c-pragma.h +++ b/gcc/c-family/c-pragma.h @@ -1,5 +1,5 @@ /* Pragma related interfaces. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/c-pretty-print.c b/gcc/c-family/c-pretty-print.c index d1b588033dd..62a00306fba 100644 --- a/gcc/c-family/c-pretty-print.c +++ b/gcc/c-family/c-pretty-print.c @@ -1,5 +1,5 @@ /* Subroutines common to both C and C++ pretty-printers. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/c-family/c-pretty-print.h b/gcc/c-family/c-pretty-print.h index aa046e51dad..7ad6dfb760c 100644 --- a/gcc/c-family/c-pretty-print.h +++ b/gcc/c-family/c-pretty-print.h @@ -1,5 +1,5 @@ /* Various declarations for the C and C++ pretty-printers. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/c-family/c-semantics.c b/gcc/c-family/c-semantics.c index 44dc0bf7e7a..f25805a79b0 100644 --- a/gcc/c-family/c-semantics.c +++ b/gcc/c-family/c-semantics.c @@ -1,5 +1,5 @@ /* This file contains subroutine used by the C front-end to construct GENERIC. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Written by Benjamin Chelf (chelf@codesourcery.com). This file is part of GCC. diff --git a/gcc/c-family/c-target-def.h b/gcc/c-family/c-target-def.h index e33396916d7..2b2eed2fd49 100644 --- a/gcc/c-family/c-target-def.h +++ b/gcc/c-family/c-target-def.h @@ -1,5 +1,5 @@ /* Default initializers for C-family target hooks. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/c-family/c-target.def b/gcc/c-family/c-target.def index 925dbd14cc4..b55dda88095 100644 --- a/gcc/c-family/c-target.def +++ b/gcc/c-family/c-target.def @@ -1,5 +1,5 @@ /* Target hook definitions for C-family front ends. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/c-family/c-target.h b/gcc/c-family/c-target.h index 176f3fa0705..321e8ce4ac0 100644 --- a/gcc/c-family/c-target.h +++ b/gcc/c-family/c-target.h @@ -1,5 +1,5 @@ /* Data structure definitions for target-specific C-family behavior. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/c-family/c-ubsan.c b/gcc/c-family/c-ubsan.c index a2769352be4..610c010bdde 100644 --- a/gcc/c-family/c-ubsan.c +++ b/gcc/c-family/c-ubsan.c @@ -1,5 +1,5 @@ /* UndefinedBehaviorSanitizer, undefined behavior detector. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Marek Polacek This file is part of GCC. diff --git a/gcc/c-family/c-ubsan.h b/gcc/c-family/c-ubsan.h index 9b91bad8cdc..e504b908fc6 100644 --- a/gcc/c-family/c-ubsan.h +++ b/gcc/c-family/c-ubsan.h @@ -1,5 +1,5 @@ /* UndefinedBehaviorSanitizer, undefined behavior detector. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Marek Polacek This file is part of GCC. diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index d270f77ae6b..38ae58efdb8 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -1,5 +1,5 @@ ; Options for the C, ObjC, C++ and ObjC++ front ends. -; Copyright (C) 2003-2013 Free Software Foundation, Inc. +; Copyright (C) 2003-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/c-family/cilk.c b/gcc/c-family/cilk.c index 1b451723847..f2179dfc128 100644 --- a/gcc/c-family/cilk.c +++ b/gcc/c-family/cilk.c @@ -1,6 +1,6 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support This file contains the CilkPlus Intrinsics - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Balaji V. Iyer , Intel Corporation diff --git a/gcc/c-family/cppspec.c b/gcc/c-family/cppspec.c index 21d0b730b5b..442a3a3c012 100644 --- a/gcc/c-family/cppspec.c +++ b/gcc/c-family/cppspec.c @@ -1,5 +1,5 @@ /* Specific flags and argument handling of the C preprocessor. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c-family/stub-objc.c b/gcc/c-family/stub-objc.c index a2dbe491122..40866cc3972 100644 --- a/gcc/c-family/stub-objc.c +++ b/gcc/c-family/stub-objc.c @@ -1,7 +1,7 @@ /* Stub functions for Objective-C and Objective-C++ routines that are called from within the C and C++ front-ends, respectively. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 61cb2304a97..6cb79c0fa6f 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2014-01-02 Richard Sandiford * c-array-notation.c: Use the standard form for the copyright notice. @@ -925,7 +929,7 @@ * c-decl.c: Likewise. Include gt-c-c-decl.h, not gt-c-decl.h. * c-parser.c: Likewise. Include gt-c-c-parser.h, not gt-c-parser.h. -Copyright (C) 2012-2013 Free Software Foundation, Inc. +Copyright (C) 2012-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/c/Make-lang.in b/gcc/c/Make-lang.in index e68000a8246..8b9991009fc 100644 --- a/gcc/c/Make-lang.in +++ b/gcc/c/Make-lang.in @@ -1,5 +1,5 @@ # Top level -*- makefile -*- fragment for GNU C - C language. -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/c/c-array-notation.c b/gcc/c/c-array-notation.c index f85f95f703d..5526ee9a98c 100644 --- a/gcc/c/c-array-notation.c +++ b/gcc/c/c-array-notation.c @@ -1,7 +1,7 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support This file contains routines to handle Array Notation expression handling routines in the C Compiler. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Balaji V. Iyer , Intel Corporation. diff --git a/gcc/c/c-aux-info.c b/gcc/c/c-aux-info.c index 823a3c49f6f..4b6b2d0f2bc 100644 --- a/gcc/c/c-aux-info.c +++ b/gcc/c/c-aux-info.c @@ -1,7 +1,7 @@ /* Generate information regarding function declarations and definitions based on information stored in GCC's tree structure. This code implements the -aux-info option. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. Contributed by Ron Guilmette (rfg@segfault.us.com). This file is part of GCC. diff --git a/gcc/c/c-convert.c b/gcc/c/c-convert.c index 3951ef549bd..38bacdaa4df 100644 --- a/gcc/c/c-convert.c +++ b/gcc/c/c-convert.c @@ -1,5 +1,5 @@ /* Language-level data type conversion for GNU C. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index 3dbe9cbe596..21a07e211fe 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -1,5 +1,5 @@ /* Process declarations and variables for C compiler. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c/c-errors.c b/gcc/c/c-errors.c index 0d2754084d0..92136e7466d 100644 --- a/gcc/c/c-errors.c +++ b/gcc/c/c-errors.c @@ -1,5 +1,5 @@ /* Various diagnostic subroutines for the GNU C language. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/c/c-lang.c b/gcc/c/c-lang.c index 8b0dca601e9..97c044362f6 100644 --- a/gcc/c/c-lang.c +++ b/gcc/c/c-lang.c @@ -1,5 +1,5 @@ /* Language-specific hook definitions for C front end. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c/c-lang.h b/gcc/c/c-lang.h index cbd5d1fa643..7fcf333b78f 100644 --- a/gcc/c/c-lang.h +++ b/gcc/c/c-lang.h @@ -1,5 +1,5 @@ /* Definitions for C language specific types. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c/c-objc-common.c b/gcc/c/c-objc-common.c index e6be6ac89fd..73bb297d423 100644 --- a/gcc/c/c-objc-common.c +++ b/gcc/c/c-objc-common.c @@ -1,5 +1,5 @@ /* Some code common to C and ObjC front ends. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c/c-objc-common.h b/gcc/c/c-objc-common.h index 4b7987d0d2b..92cf60f2e48 100644 --- a/gcc/c/c-objc-common.h +++ b/gcc/c/c-objc-common.h @@ -1,5 +1,5 @@ /* Language hooks common to C and ObjC front ends. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Ziemowit Laski This file is part of GCC. diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index 5dd953d7a2f..f73df0894ba 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -1,5 +1,5 @@ /* Parser for C and Objective-C. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Parser actions based on the old Bison parser; structure somewhat influenced by and fragments based on the C++ parser. diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h index c4dfc3baf36..add1405f21a 100644 --- a/gcc/c/c-tree.h +++ b/gcc/c/c-tree.h @@ -1,5 +1,5 @@ /* Definitions for C parsing and type checking. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index 5674ac3c1a1..d9dc69495e3 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -1,5 +1,5 @@ /* Build expressions with type checking for C compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/c/config-lang.in b/gcc/c/config-lang.in index 86c7850a113..ac3ff9ea0e8 100644 --- a/gcc/c/config-lang.in +++ b/gcc/c/config-lang.in @@ -1,5 +1,5 @@ # Top level configure fragment for GNU C - C language. -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/c/gccspec.c b/gcc/c/gccspec.c index 44fc71dfa9f..34a057ff9ca 100644 --- a/gcc/c/gccspec.c +++ b/gcc/c/gccspec.c @@ -1,5 +1,5 @@ /* Specific flags and argument handling of the C front-end. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/caller-save.c b/gcc/caller-save.c index 628fc0b3e3e..59917a856d2 100644 --- a/gcc/caller-save.c +++ b/gcc/caller-save.c @@ -1,5 +1,5 @@ /* Save and restore call-clobbered registers which are live across a call. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/calls.c b/gcc/calls.c index 501474b8b6d..d574a95b928 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1,5 +1,5 @@ /* Convert function calls to rtl insns, for GNU C compiler. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/calls.h b/gcc/calls.h index 8e727382905..e6435cc0ba2 100644 --- a/gcc/calls.h +++ b/gcc/calls.h @@ -1,5 +1,5 @@ /* Declarations anda data types for RTL call insn generation. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfg-flags.def b/gcc/cfg-flags.def index de127d60e87..8422c2b1cdd 100644 --- a/gcc/cfg-flags.def +++ b/gcc/cfg-flags.def @@ -1,5 +1,5 @@ /* Flags on basic blocks and edges. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfg.c b/gcc/cfg.c index d4d00a48424..a281c0fb823 100644 --- a/gcc/cfg.c +++ b/gcc/cfg.c @@ -1,5 +1,5 @@ /* Control flow graph manipulation code for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfganal.c b/gcc/cfganal.c index d7e03822fb8..4118857608a 100644 --- a/gcc/cfganal.c +++ b/gcc/cfganal.c @@ -1,5 +1,5 @@ /* Control flow graph analysis code for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c index acfc73be640..ae1f1147f7c 100644 --- a/gcc/cfgbuild.c +++ b/gcc/cfgbuild.c @@ -1,5 +1,5 @@ /* Control flow graph building code for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 684ab0fa22a..e2e407bd2de 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -1,5 +1,5 @@ /* Control flow optimization code for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 7a939753fdf..2ba1cf4e36e 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -1,5 +1,5 @@ /* A pass for lowering trees to RTL. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfgexpand.h b/gcc/cfgexpand.h index 04517a3e3f9..6314b83e6db 100644 --- a/gcc/cfgexpand.h +++ b/gcc/cfgexpand.h @@ -1,5 +1,5 @@ /* Header file for lowering trees to RTL. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c index 7a16887e458..7cf3cd50a66 100644 --- a/gcc/cfghooks.c +++ b/gcc/cfghooks.c @@ -1,5 +1,5 @@ /* Hooks for cfg representation specific functions. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/cfghooks.h b/gcc/cfghooks.h index ec595a5123b..8ff808c5ffa 100644 --- a/gcc/cfghooks.h +++ b/gcc/cfghooks.h @@ -1,5 +1,5 @@ /* Hooks for cfg representation specific functions. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/cfgloop.c b/gcc/cfgloop.c index 5639e7ae856..70744d83d19 100644 --- a/gcc/cfgloop.c +++ b/gcc/cfgloop.c @@ -1,5 +1,5 @@ /* Natural loop discovery code for GNU compiler. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h index 5dbefaf1194..4b7c3d3985a 100644 --- a/gcc/cfgloop.h +++ b/gcc/cfgloop.h @@ -1,5 +1,5 @@ /* Natural loop functions - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c index 5e89cb1cd79..e01b9ccbec4 100644 --- a/gcc/cfgloopanal.c +++ b/gcc/cfgloopanal.c @@ -1,5 +1,5 @@ /* Natural loop analysis code for GNU compiler. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c index 2bb8b6a2c75..afbe85d4add 100644 --- a/gcc/cfgloopmanip.c +++ b/gcc/cfgloopmanip.c @@ -1,5 +1,5 @@ /* Loop manipulation code for GNU compiler. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 18e65bd6730..60b0c069f44 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -1,5 +1,5 @@ /* Control flow graph manipulation code for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cgraph.c b/gcc/cgraph.c index ccd150c8145..09fb4cb3a51 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -1,5 +1,5 @@ /* Callgraph handling code. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/cgraph.h b/gcc/cgraph.h index 69b97a7e703..8b25d947511 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -1,5 +1,5 @@ /* Callgraph handling code. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/cgraphbuild.c b/gcc/cgraphbuild.c index bf790b0fe61..19961e27df3 100644 --- a/gcc/cgraphbuild.c +++ b/gcc/cgraphbuild.c @@ -1,5 +1,5 @@ /* Callgraph construction. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c index 80ed17047d7..a87f77c628a 100644 --- a/gcc/cgraphclones.c +++ b/gcc/cgraphclones.c @@ -1,5 +1,5 @@ /* Callgraph clones - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 679c9eca818..d22265a9a3f 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -1,5 +1,5 @@ /* Driver of optimization process - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/cif-code.def b/gcc/cif-code.def index be4af6a0a5d..f1df5a04cc0 100644 --- a/gcc/cif-code.def +++ b/gcc/cif-code.def @@ -1,7 +1,7 @@ /* This file contains the definitions of the cgraph_inline_failed_t enums used in GCC. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Doug Kwan This file is part of GCC. diff --git a/gcc/cilk-builtins.def b/gcc/cilk-builtins.def index 8634194d722..9f3240a892f 100644 --- a/gcc/cilk-builtins.def +++ b/gcc/cilk-builtins.def @@ -1,6 +1,6 @@ /* This file contains the definitions and documentation for the Cilk Plus builtins used in the GNU compiler. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Balaji V. Iyer Intel Corporation. diff --git a/gcc/cilk-common.c b/gcc/cilk-common.c index 52b37852273..afe88c95e6b 100644 --- a/gcc/cilk-common.c +++ b/gcc/cilk-common.c @@ -1,6 +1,6 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support This file contains the CilkPlus Intrinsics - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Balaji V. Iyer , Intel Corporation diff --git a/gcc/cilk.h b/gcc/cilk.h index e990992cf27..d2ae9314994 100644 --- a/gcc/cilk.h +++ b/gcc/cilk.h @@ -1,6 +1,6 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support This file contains Cilk Support files. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Balaji V. Iyer , Intel Corporation diff --git a/gcc/cilkplus.def b/gcc/cilkplus.def index cb3824f4ee6..ddf93f291f0 100644 --- a/gcc/cilkplus.def +++ b/gcc/cilkplus.def @@ -1,6 +1,6 @@ /* This file contains the definitions and documentation for the CilkPlus builtins used in the GNU compiler. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/collect2-aix.c b/gcc/collect2-aix.c index 689cdd223c0..eaa54751c88 100644 --- a/gcc/collect2-aix.c +++ b/gcc/collect2-aix.c @@ -1,5 +1,5 @@ /* AIX cross support for collect2. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/collect2-aix.h b/gcc/collect2-aix.h index f67669b959f..953b8778422 100644 --- a/gcc/collect2-aix.h +++ b/gcc/collect2-aix.h @@ -1,5 +1,5 @@ /* AIX cross support for collect2. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/collect2.c b/gcc/collect2.c index 1d8ea4f9173..38d3421c0df 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -1,6 +1,6 @@ /* Collect static initialization info into data structures that can be traversed by C++ initialization and finalization routines. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Chris Smith (csmith@convex.com). Heavily modified by Michael Meissner (meissner@cygnus.com), Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com). diff --git a/gcc/collect2.h b/gcc/collect2.h index 2385e4a9813..bbfd6761caa 100644 --- a/gcc/collect2.h +++ b/gcc/collect2.h @@ -1,5 +1,5 @@ /* Header file for collect/tlink routines. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/combine-stack-adj.c b/gcc/combine-stack-adj.c index 5c897cf106d..69fd5ea77e3 100644 --- a/gcc/combine-stack-adj.c +++ b/gcc/combine-stack-adj.c @@ -1,5 +1,5 @@ /* Combine stack adjustments. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/combine.c b/gcc/combine.c index ed1dac9d053..fd4294bdd63 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -1,5 +1,5 @@ /* Optimize by combining instructions for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common.opt b/gcc/common.opt index 76e4447217d..03f9b9b75d6 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -1,6 +1,6 @@ ; Options for the language- and target-independent parts of the compiler. -; Copyright (C) 2003-2013 Free Software Foundation, Inc. +; Copyright (C) 2003-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/common/common-target-def.h b/gcc/common/common-target-def.h index 34a12212ac4..996e0ed71b1 100644 --- a/gcc/common/common-target-def.h +++ b/gcc/common/common-target-def.h @@ -1,5 +1,5 @@ /* Default initializers for common target hooks. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/common/common-target.def b/gcc/common/common-target.def index 9b793c2185e..61f78a256cb 100644 --- a/gcc/common/common-target.def +++ b/gcc/common/common-target.def @@ -1,5 +1,5 @@ /* Target hook definitions for common hooks. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/common/common-target.h b/gcc/common/common-target.h index 027b335b6be..a04e90f6cc7 100644 --- a/gcc/common/common-target.h +++ b/gcc/common/common-target.h @@ -1,5 +1,5 @@ /* Data structure definitions for common hooks. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/common/common-targhooks.c b/gcc/common/common-targhooks.c index 40dc144dad2..78e5a384ddb 100644 --- a/gcc/common/common-targhooks.c +++ b/gcc/common/common-targhooks.c @@ -1,5 +1,5 @@ /* Default common target hook functions. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/common-targhooks.h b/gcc/common/common-targhooks.h index eb305c1f2a8..71923523f39 100644 --- a/gcc/common/common-targhooks.h +++ b/gcc/common/common-targhooks.h @@ -1,5 +1,5 @@ /* Default common target hook functions. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/aarch64/aarch64-common.c b/gcc/common/config/aarch64/aarch64-common.c index 19acce1087c..135a9bcbdd2 100644 --- a/gcc/common/config/aarch64/aarch64-common.c +++ b/gcc/common/config/aarch64/aarch64-common.c @@ -1,5 +1,5 @@ /* Common hooks for AArch64. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/common/config/alpha/alpha-common.c b/gcc/common/config/alpha/alpha-common.c index a0c2a6baec4..a103bb8b436 100644 --- a/gcc/common/config/alpha/alpha-common.c +++ b/gcc/common/config/alpha/alpha-common.c @@ -1,5 +1,5 @@ /* Common hooks for DEC Alpha. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/arc/arc-common.c b/gcc/common/config/arc/arc-common.c index 32064914588..03986806a7e 100644 --- a/gcc/common/config/arc/arc-common.c +++ b/gcc/common/config/arc/arc-common.c @@ -1,5 +1,5 @@ /* Common hooks for Synopsys DesignWare ARC - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Contributor: Joern Rennecke on behalf of Synopsys Inc. diff --git a/gcc/common/config/arm/arm-common.c b/gcc/common/config/arm/arm-common.c index 87f18ecea77..065de7d8d0a 100644 --- a/gcc/common/config/arm/arm-common.c +++ b/gcc/common/config/arm/arm-common.c @@ -1,5 +1,5 @@ /* Common hooks for ARM. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/avr/avr-common.c b/gcc/common/config/avr/avr-common.c index f485de70b6f..231ed57a160 100644 --- a/gcc/common/config/avr/avr-common.c +++ b/gcc/common/config/avr/avr-common.c @@ -1,5 +1,5 @@ /* Common hooks for ATMEL AVR. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/bfin/bfin-common.c b/gcc/common/config/bfin/bfin-common.c index 8859c88e8e3..65edc2f54a1 100644 --- a/gcc/common/config/bfin/bfin-common.c +++ b/gcc/common/config/bfin/bfin-common.c @@ -1,5 +1,5 @@ /* Common hooks for Blackfin. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/c6x/c6x-common.c b/gcc/common/config/c6x/c6x-common.c index ee982910d27..8547a71bdf8 100644 --- a/gcc/common/config/c6x/c6x-common.c +++ b/gcc/common/config/c6x/c6x-common.c @@ -1,5 +1,5 @@ /* TI C6X common hooks. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/cr16/cr16-common.c b/gcc/common/config/cr16/cr16-common.c index 33fb9405565..2317216f978 100644 --- a/gcc/common/config/cr16/cr16-common.c +++ b/gcc/common/config/cr16/cr16-common.c @@ -1,5 +1,5 @@ /* Common hooks for CR16. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/cris/cris-common.c b/gcc/common/config/cris/cris-common.c index 1cd186555dc..d605ac69b40 100644 --- a/gcc/common/config/cris/cris-common.c +++ b/gcc/common/config/cris/cris-common.c @@ -1,5 +1,5 @@ /* Common hooks for CRIS. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/default-common.c b/gcc/common/config/default-common.c index 6c8f505d0db..d2424fdc380 100644 --- a/gcc/common/config/default-common.c +++ b/gcc/common/config/default-common.c @@ -1,5 +1,5 @@ /* Default common target hooks initializer. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/epiphany/epiphany-common.c b/gcc/common/config/epiphany/epiphany-common.c index 291a7fca352..725dfb8356d 100644 --- a/gcc/common/config/epiphany/epiphany-common.c +++ b/gcc/common/config/epiphany/epiphany-common.c @@ -1,5 +1,5 @@ /* Common hooks for Adapteva Epiphany - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Contributed by Embecosm on behalf of Adapteva, Inc. This file is part of GCC. diff --git a/gcc/common/config/fr30/fr30-common.c b/gcc/common/config/fr30/fr30-common.c index 1f46d824919..ade8705e519 100644 --- a/gcc/common/config/fr30/fr30-common.c +++ b/gcc/common/config/fr30/fr30-common.c @@ -1,5 +1,5 @@ /* Common hooks for FR30. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/frv/frv-common.c b/gcc/common/config/frv/frv-common.c index d196f8de3d4..1b4fe3726cf 100644 --- a/gcc/common/config/frv/frv-common.c +++ b/gcc/common/config/frv/frv-common.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997-2013 Free Software Foundation, Inc. +/* Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/h8300/h8300-common.c b/gcc/common/config/h8300/h8300-common.c index 0dd1a5c4b01..01a9092426a 100644 --- a/gcc/common/config/h8300/h8300-common.c +++ b/gcc/common/config/h8300/h8300-common.c @@ -1,5 +1,5 @@ /* Common hooks for Renesas H8/300. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/i386/i386-common.c b/gcc/common/config/i386/i386-common.c index 3d87a62f0f7..b7f9ff6b642 100644 --- a/gcc/common/config/i386/i386-common.c +++ b/gcc/common/config/i386/i386-common.c @@ -1,5 +1,5 @@ /* IA-32 common hooks. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/ia64/ia64-common.c b/gcc/common/config/ia64/ia64-common.c index 677ca4529d1..44cfa316af2 100644 --- a/gcc/common/config/ia64/ia64-common.c +++ b/gcc/common/config/ia64/ia64-common.c @@ -1,5 +1,5 @@ /* Common hooks for IA64. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/iq2000/iq2000-common.c b/gcc/common/config/iq2000/iq2000-common.c index f660ac587c9..4644a2b1602 100644 --- a/gcc/common/config/iq2000/iq2000-common.c +++ b/gcc/common/config/iq2000/iq2000-common.c @@ -1,5 +1,5 @@ /* Common hooks for Vitesse IQ2000. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/lm32/lm32-common.c b/gcc/common/config/lm32/lm32-common.c index df78e6b86d0..a4839431491 100644 --- a/gcc/common/config/lm32/lm32-common.c +++ b/gcc/common/config/lm32/lm32-common.c @@ -1,6 +1,6 @@ /* Common hooks for Lattice Mico32. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/m32r/m32r-common.c b/gcc/common/config/m32r/m32r-common.c index f8df5a847fd..4e5f1352a58 100644 --- a/gcc/common/config/m32r/m32r-common.c +++ b/gcc/common/config/m32r/m32r-common.c @@ -1,5 +1,5 @@ /* Common hooks for Renesas M32R. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/m68k/m68k-common.c b/gcc/common/config/m68k/m68k-common.c index 0c95f405cbc..6db1f8bc9a7 100644 --- a/gcc/common/config/m68k/m68k-common.c +++ b/gcc/common/config/m68k/m68k-common.c @@ -1,5 +1,5 @@ /* Common hooks for Motorola 68000 family. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/mcore/mcore-common.c b/gcc/common/config/mcore/mcore-common.c index 11e50f3028b..bbdcb59d715 100644 --- a/gcc/common/config/mcore/mcore-common.c +++ b/gcc/common/config/mcore/mcore-common.c @@ -1,5 +1,5 @@ /* Common hooks for Motorola MCore. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/mep/mep-common.c b/gcc/common/config/mep/mep-common.c index a6376831a2a..5c2bd803104 100644 --- a/gcc/common/config/mep/mep-common.c +++ b/gcc/common/config/mep/mep-common.c @@ -1,5 +1,5 @@ /* Common hooks for Toshiba Media Processor. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/microblaze/microblaze-common.c b/gcc/common/config/microblaze/microblaze-common.c index 07a71fb0025..108c040427f 100644 --- a/gcc/common/config/microblaze/microblaze-common.c +++ b/gcc/common/config/microblaze/microblaze-common.c @@ -1,5 +1,5 @@ /* Common hooks for Xilinx MicroBlaze. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/mips/mips-common.c b/gcc/common/config/mips/mips-common.c index b9de63da877..cece4ae3b65 100644 --- a/gcc/common/config/mips/mips-common.c +++ b/gcc/common/config/mips/mips-common.c @@ -1,5 +1,5 @@ /* Common hooks for MIPS. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/mmix/mmix-common.c b/gcc/common/config/mmix/mmix-common.c index 54acb4d892b..fe1fba25be6 100644 --- a/gcc/common/config/mmix/mmix-common.c +++ b/gcc/common/config/mmix/mmix-common.c @@ -1,5 +1,5 @@ /* Common hooks for MMIX. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/mn10300/mn10300-common.c b/gcc/common/config/mn10300/mn10300-common.c index 0a03d66c5d5..e1226f20fcb 100644 --- a/gcc/common/config/mn10300/mn10300-common.c +++ b/gcc/common/config/mn10300/mn10300-common.c @@ -1,5 +1,5 @@ /* Common hooks for Matsushita MN10300 series. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/nds32/nds32-common.c b/gcc/common/config/nds32/nds32-common.c index 6a2ef81a1fa..7d9bf6704b1 100644 --- a/gcc/common/config/nds32/nds32-common.c +++ b/gcc/common/config/nds32/nds32-common.c @@ -1,5 +1,5 @@ /* Common hooks of Andes NDS32 cpu for GNU compiler - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Andes Technology Corporation. This file is part of GCC. diff --git a/gcc/common/config/nios2/nios2-common.c b/gcc/common/config/nios2/nios2-common.c index a27f1b0802b..333591a979c 100644 --- a/gcc/common/config/nios2/nios2-common.c +++ b/gcc/common/config/nios2/nios2-common.c @@ -1,5 +1,5 @@ /* Common hooks for Altera Nios II. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/pa/pa-common.c b/gcc/common/config/pa/pa-common.c index e61b8ca944a..3ada756628c 100644 --- a/gcc/common/config/pa/pa-common.c +++ b/gcc/common/config/pa/pa-common.c @@ -1,5 +1,5 @@ /* HPPA common hooks. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/pdp11/pdp11-common.c b/gcc/common/config/pdp11/pdp11-common.c index 4cc32bfd826..3ad5a1fee59 100644 --- a/gcc/common/config/pdp11/pdp11-common.c +++ b/gcc/common/config/pdp11/pdp11-common.c @@ -1,5 +1,5 @@ /* Common hooks for pdp11. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/picochip/picochip-common.c b/gcc/common/config/picochip/picochip-common.c index 09c8ff50593..e6fdccfa98a 100644 --- a/gcc/common/config/picochip/picochip-common.c +++ b/gcc/common/config/picochip/picochip-common.c @@ -1,5 +1,5 @@ /* Common hooks for picoChip. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/rs6000/rs6000-common.c b/gcc/common/config/rs6000/rs6000-common.c index 8ec43f10935..a3df590aa8a 100644 --- a/gcc/common/config/rs6000/rs6000-common.c +++ b/gcc/common/config/rs6000/rs6000-common.c @@ -1,5 +1,5 @@ /* Common hooks for IBM RS/6000. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/rx/rx-common.c b/gcc/common/config/rx/rx-common.c index 4186148318e..7a35b09b04f 100644 --- a/gcc/common/config/rx/rx-common.c +++ b/gcc/common/config/rx/rx-common.c @@ -1,5 +1,5 @@ /* Common hooks for Renesas RX. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/s390/s390-common.c b/gcc/common/config/s390/s390-common.c index c2031b74b1f..b65a71fb545 100644 --- a/gcc/common/config/s390/s390-common.c +++ b/gcc/common/config/s390/s390-common.c @@ -1,5 +1,5 @@ /* Common hooks for IBM S/390 and zSeries. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/score/score-common.c b/gcc/common/config/score/score-common.c index b3769879101..51bd9553ae4 100644 --- a/gcc/common/config/score/score-common.c +++ b/gcc/common/config/score/score-common.c @@ -1,5 +1,5 @@ /* Common hooks for Sunplus S+CORE. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/sh/sh-common.c b/gcc/common/config/sh/sh-common.c index cd4295a1138..70663f48f84 100644 --- a/gcc/common/config/sh/sh-common.c +++ b/gcc/common/config/sh/sh-common.c @@ -1,5 +1,5 @@ /* Common hooks for Renesas / SuperH SH. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/sparc/sparc-common.c b/gcc/common/config/sparc/sparc-common.c index 14bfbfd0cb2..a2af6c11740 100644 --- a/gcc/common/config/sparc/sparc-common.c +++ b/gcc/common/config/sparc/sparc-common.c @@ -1,5 +1,5 @@ /* Common hooks for SPARC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/spu/spu-common.c b/gcc/common/config/spu/spu-common.c index 71beacf9c15..d622925f7dc 100644 --- a/gcc/common/config/spu/spu-common.c +++ b/gcc/common/config/spu/spu-common.c @@ -1,5 +1,5 @@ /* Common hooks for SPU. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/common/config/tilegx/tilegx-common.c b/gcc/common/config/tilegx/tilegx-common.c index a16d58d06cd..6294f7ddcda 100644 --- a/gcc/common/config/tilegx/tilegx-common.c +++ b/gcc/common/config/tilegx/tilegx-common.c @@ -1,5 +1,5 @@ /* Common hooks for TILE-Gx. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/common/config/tilepro/tilepro-common.c b/gcc/common/config/tilepro/tilepro-common.c index dc7ea978e40..a9604aefba6 100644 --- a/gcc/common/config/tilepro/tilepro-common.c +++ b/gcc/common/config/tilepro/tilepro-common.c @@ -1,5 +1,5 @@ /* Common hooks for TILEPro. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/common/config/v850/v850-common.c b/gcc/common/config/v850/v850-common.c index c5035aefb60..a59d1dff3f9 100644 --- a/gcc/common/config/v850/v850-common.c +++ b/gcc/common/config/v850/v850-common.c @@ -1,5 +1,5 @@ /* Common hooks for NEC V850 series. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/vax/vax-common.c b/gcc/common/config/vax/vax-common.c index 6b48e6661e4..921ce841d26 100644 --- a/gcc/common/config/vax/vax-common.c +++ b/gcc/common/config/vax/vax-common.c @@ -1,5 +1,5 @@ /* Common hooks for VAX. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/xstormy16/xstormy16-common.c b/gcc/common/config/xstormy16/xstormy16-common.c index e89ea739b1b..aee3a388328 100644 --- a/gcc/common/config/xstormy16/xstormy16-common.c +++ b/gcc/common/config/xstormy16/xstormy16-common.c @@ -1,5 +1,5 @@ /* Common hooks for Xstormy16. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/common/config/xtensa/xtensa-common.c b/gcc/common/config/xtensa/xtensa-common.c index 39c036a678d..f5f200a66b8 100644 --- a/gcc/common/config/xtensa/xtensa-common.c +++ b/gcc/common/config/xtensa/xtensa-common.c @@ -1,5 +1,5 @@ /* Common hooks for Tensilica's Xtensa architecture. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/compare-elim.c b/gcc/compare-elim.c index 847c89128b4..3fbe140b80c 100644 --- a/gcc/compare-elim.c +++ b/gcc/compare-elim.c @@ -1,5 +1,5 @@ /* Post-reload compare elimination. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/conditions.h b/gcc/conditions.h index 0798bc62a5e..837fff30b10 100644 --- a/gcc/conditions.h +++ b/gcc/conditions.h @@ -1,5 +1,5 @@ /* Definitions for condition code handling in final.c and output routines. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config.build b/gcc/config.build index 12d52480f10..50fb64fff61 100644 --- a/gcc/config.build +++ b/gcc/config.build @@ -1,5 +1,5 @@ # GCC build-specific configuration file. -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/config.gcc b/gcc/config.gcc index db7f68411b7..bd0fb635960 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1,5 +1,5 @@ # GCC target-specific configuration file. -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/config.host b/gcc/config.host index 9c2a771e911..bea17bcdd10 100644 --- a/gcc/config.host +++ b/gcc/config.host @@ -1,5 +1,5 @@ # GCC host-specific configuration file. -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-arches.def b/gcc/config/aarch64/aarch64-arches.def index 683c34c1ec4..5028f61bd0d 100644 --- a/gcc/config/aarch64/aarch64-arches.def +++ b/gcc/config/aarch64/aarch64-arches.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2013 Free Software Foundation, Inc. +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c index 439c3f4d820..ebab2ce8347 100644 --- a/gcc/config/aarch64/aarch64-builtins.c +++ b/gcc/config/aarch64/aarch64-builtins.c @@ -1,5 +1,5 @@ /* Builtins' description for AArch64 SIMD architecture. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-cores.def b/gcc/config/aarch64/aarch64-cores.def index 430cc569295..a41d7d9150b 100644 --- a/gcc/config/aarch64/aarch64-cores.def +++ b/gcc/config/aarch64/aarch64-cores.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2013 Free Software Foundation, Inc. +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h index dfaa9f4b817..adec7e7bad8 100644 --- a/gcc/config/aarch64/aarch64-elf-raw.h +++ b/gcc/config/aarch64/aarch64-elf-raw.h @@ -1,5 +1,5 @@ /* Machine description for AArch64 architecture. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-elf.h b/gcc/config/aarch64/aarch64-elf.h index 97e1fb5ddb7..7bcdc13d140 100644 --- a/gcc/config/aarch64/aarch64-elf.h +++ b/gcc/config/aarch64/aarch64-elf.h @@ -1,5 +1,5 @@ /* Machine description for AArch64 architecture. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h index 83efad447f1..15272b8a217 100644 --- a/gcc/config/aarch64/aarch64-linux.h +++ b/gcc/config/aarch64/aarch64-linux.h @@ -1,5 +1,5 @@ /* Machine description for AArch64 architecture. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-modes.def b/gcc/config/aarch64/aarch64-modes.def index fc547c890ea..3a56d622a82 100644 --- a/gcc/config/aarch64/aarch64-modes.def +++ b/gcc/config/aarch64/aarch64-modes.def @@ -1,5 +1,5 @@ /* Machine description for AArch64 architecture. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-option-extensions.def b/gcc/config/aarch64/aarch64-option-extensions.def index 371e74c7f94..1aa65d32adf 100644 --- a/gcc/config/aarch64/aarch64-option-extensions.def +++ b/gcc/config/aarch64/aarch64-option-extensions.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h index 62751127e8e..370931536cc 100644 --- a/gcc/config/aarch64/aarch64-opts.h +++ b/gcc/config/aarch64/aarch64-opts.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2013 Free Software Foundation, Inc. +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 6ac059b2f38..3883329f401 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -1,5 +1,5 @@ /* Machine description for AArch64 architecture. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def index 705d33ac6c3..034afbf515e 100644 --- a/gcc/config/aarch64/aarch64-simd-builtins.def +++ b/gcc/config/aarch64/aarch64-simd-builtins.def @@ -1,5 +1,5 @@ /* Machine description for AArch64 architecture. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 53457592800..bc47a291de4 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -1,5 +1,5 @@ ;; Machine description for AArch64 AdvSIMD architecture. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by ARM Ltd. ;; ;; This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 3d32ea5ee91..186db9dca70 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -1,5 +1,5 @@ /* Machine description for AArch64 architecture. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index 693aca56962..4aa1bfd80ec 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -1,5 +1,5 @@ /* Machine description for AArch64 architecture. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index c83622d6cad..4e838ee847b 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -1,5 +1,5 @@ ;; Machine description for AArch64 architecture. -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by ARM Ltd. ;; ;; This file is part of GCC. diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt index 3b3e6c3b94d..163f34b83b0 100644 --- a/gcc/config/aarch64/aarch64.opt +++ b/gcc/config/aarch64/aarch64.opt @@ -1,5 +1,5 @@ ; Machine description for AArch64 architecture. -; Copyright (C) 2009-2013 Free Software Foundation, Inc. +; Copyright (C) 2009-2014 Free Software Foundation, Inc. ; Contributed by ARM Ltd. ; ; This file is part of GCC. diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h index e33a684aa27..ac87d7065d1 100644 --- a/gcc/config/aarch64/arm_neon.h +++ b/gcc/config/aarch64/arm_neon.h @@ -1,6 +1,6 @@ /* ARM NEON intrinsics include file. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/atomics.md b/gcc/config/aarch64/atomics.md index e576166c900..bffa465defc 100644 --- a/gcc/config/aarch64/atomics.md +++ b/gcc/config/aarch64/atomics.md @@ -1,5 +1,5 @@ ;; Machine description for AArch64 processor synchronization primitives. -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by ARM Ltd. ;; ;; This file is part of GCC. diff --git a/gcc/config/aarch64/biarchilp32.h b/gcc/config/aarch64/biarchilp32.h index fe13837f59c..579673cede3 100644 --- a/gcc/config/aarch64/biarchilp32.h +++ b/gcc/config/aarch64/biarchilp32.h @@ -1,7 +1,7 @@ /* Make configure files to produce biarch compiler defaulting to ilp32 ABI. This file must be included very first, while the OS specific file later to overwrite otherwise wrong defaults. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/biarchlp64.h b/gcc/config/aarch64/biarchlp64.h index 86803af27dc..03dd35508ec 100644 --- a/gcc/config/aarch64/biarchlp64.h +++ b/gcc/config/aarch64/biarchlp64.h @@ -1,7 +1,7 @@ /* Make configure files to produce biarch compiler defaulting to ilp64 ABI. This file must be included very first, while the OS specific file later to overwrite otherwise wrong defaults. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/aarch64/constraints.md b/gcc/config/aarch64/constraints.md index 7cafc08fdd9..12ab570c05e 100644 --- a/gcc/config/aarch64/constraints.md +++ b/gcc/config/aarch64/constraints.md @@ -1,5 +1,5 @@ ;; Machine description for AArch64 architecture. -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by ARM Ltd. ;; ;; This file is part of GCC. diff --git a/gcc/config/aarch64/gentune.sh b/gcc/config/aarch64/gentune.sh index 1d414bc8b2a..c0f2e794f44 100644 --- a/gcc/config/aarch64/gentune.sh +++ b/gcc/config/aarch64/gentune.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # Contributed by ARM Ltd. # # This file is part of GCC. diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index c4f95dc4fee..f1339b8cc80 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -1,5 +1,5 @@ ;; Machine description for AArch64 architecture. -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by ARM Ltd. ;; ;; This file is part of GCC. diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md index dbc90826665..45fcdc97176 100644 --- a/gcc/config/aarch64/predicates.md +++ b/gcc/config/aarch64/predicates.md @@ -1,5 +1,5 @@ ;; Machine description for AArch64 architecture. -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by ARM Ltd. ;; ;; This file is part of GCC. diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64 index 98a30d86acd..158fbb5789c 100644 --- a/gcc/config/aarch64/t-aarch64 +++ b/gcc/config/aarch64/t-aarch64 @@ -1,5 +1,5 @@ # Machine description for AArch64 architecture. -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # Contributed by ARM Ltd. # # This file is part of GCC. diff --git a/gcc/config/aarch64/t-aarch64-linux b/gcc/config/aarch64/t-aarch64-linux index ca1525e9046..147452b0425 100644 --- a/gcc/config/aarch64/t-aarch64-linux +++ b/gcc/config/aarch64/t-aarch64-linux @@ -1,5 +1,5 @@ # Machine description for AArch64 architecture. -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # Contributed by ARM Ltd. # # This file is part of GCC. diff --git a/gcc/config/alpha/alpha-modes.def b/gcc/config/alpha/alpha-modes.def index fad5b968de2..dbfbed0b7ee 100644 --- a/gcc/config/alpha/alpha-modes.def +++ b/gcc/config/alpha/alpha-modes.def @@ -1,5 +1,5 @@ /* Alpha extra machine modes. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/alpha/alpha-protos.h b/gcc/config/alpha/alpha-protos.h index 97cc4131554..753a762a575 100644 --- a/gcc/config/alpha/alpha-protos.h +++ b/gcc/config/alpha/alpha-protos.h @@ -1,5 +1,5 @@ /* Prototypes for alpha.c functions used in the md file & elsewhere. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 4c55c16197b..df4cc1b1c91 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on the DEC Alpha. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index 2e7c0789d55..0ff793f14a9 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for DEC Alpha. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index b020b457df2..795b4df3fbf 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -1,5 +1,5 @@ ;; Machine description for DEC Alpha for GNU C compiler -;; Copyright (C) 1992-2013 Free Software Foundation, Inc. +;; Copyright (C) 1992-2014 Free Software Foundation, Inc. ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) ;; ;; This file is part of GCC. diff --git a/gcc/config/alpha/alpha.opt b/gcc/config/alpha/alpha.opt index 2a9b2de0a81..dc937ac66a1 100644 --- a/gcc/config/alpha/alpha.opt +++ b/gcc/config/alpha/alpha.opt @@ -1,6 +1,6 @@ ; Options for the DEC Alpha port of the compiler ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/alpha/constraints.md b/gcc/config/alpha/constraints.md index 463aac8f36a..e67c9a9a0fc 100644 --- a/gcc/config/alpha/constraints.md +++ b/gcc/config/alpha/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for DEC Alpha. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/alpha/driver-alpha.c b/gcc/config/alpha/driver-alpha.c index f259a65e638..1981d0e6d7d 100644 --- a/gcc/config/alpha/driver-alpha.c +++ b/gcc/config/alpha/driver-alpha.c @@ -1,5 +1,5 @@ /* Subroutines for the gcc driver. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Arthur Loiret This file is part of GCC. diff --git a/gcc/config/alpha/elf.h b/gcc/config/alpha/elf.h index ee44105f725..5a6803abab8 100644 --- a/gcc/config/alpha/elf.h +++ b/gcc/config/alpha/elf.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for DEC Alpha w/ELF. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Richard Henderson (rth@tamu.edu). This file is part of GCC. diff --git a/gcc/config/alpha/elf.opt b/gcc/config/alpha/elf.opt index 88ef1e92001..6803790339a 100644 --- a/gcc/config/alpha/elf.opt +++ b/gcc/config/alpha/elf.opt @@ -1,6 +1,6 @@ ; Alpha ELF options. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/alpha/ev4.md b/gcc/config/alpha/ev4.md index e4a3a74ea40..89d6c98e3d7 100644 --- a/gcc/config/alpha/ev4.md +++ b/gcc/config/alpha/ev4.md @@ -1,5 +1,5 @@ ;; Scheduling description for Alpha EV4. -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/alpha/ev5.md b/gcc/config/alpha/ev5.md index 25e8b4ea74d..9d1871ea920 100644 --- a/gcc/config/alpha/ev5.md +++ b/gcc/config/alpha/ev5.md @@ -1,5 +1,5 @@ ;; Scheduling description for Alpha EV5. -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/alpha/ev6.md b/gcc/config/alpha/ev6.md index c02d6ea78d5..e0612a411a9 100644 --- a/gcc/config/alpha/ev6.md +++ b/gcc/config/alpha/ev6.md @@ -1,5 +1,5 @@ ;; Scheduling description for Alpha EV6. -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/alpha/freebsd.h b/gcc/config/alpha/freebsd.h index f00c9f62424..9e52d33e40d 100644 --- a/gcc/config/alpha/freebsd.h +++ b/gcc/config/alpha/freebsd.h @@ -1,5 +1,5 @@ /* Definitions for DEC Alpha/AXP running FreeBSD using the ELF format - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by David E. O'Brien and BSDi. This file is part of GCC. diff --git a/gcc/config/alpha/linux-elf.h b/gcc/config/alpha/linux-elf.h index 84e05962ded..bdefe237fde 100644 --- a/gcc/config/alpha/linux-elf.h +++ b/gcc/config/alpha/linux-elf.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler for Alpha Linux-based GNU systems using ELF. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Richard Henderson. This file is part of GCC. diff --git a/gcc/config/alpha/linux.h b/gcc/config/alpha/linux.h index f1e058d8f39..966e9b2d01b 100644 --- a/gcc/config/alpha/linux.h +++ b/gcc/config/alpha/linux.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for Alpha Linux-based GNU systems. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Richard Henderson. This file is part of GCC. diff --git a/gcc/config/alpha/netbsd.h b/gcc/config/alpha/netbsd.h index 180085931c1..7c3ace6ddec 100644 --- a/gcc/config/alpha/netbsd.h +++ b/gcc/config/alpha/netbsd.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for Alpha NetBSD systems. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/alpha/openbsd.h b/gcc/config/alpha/openbsd.h index 21399e5f41b..74f16e134d2 100644 --- a/gcc/config/alpha/openbsd.h +++ b/gcc/config/alpha/openbsd.h @@ -1,5 +1,5 @@ /* Configuration file for an alpha OpenBSD target. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/alpha/predicates.md b/gcc/config/alpha/predicates.md index 8a2166c1e03..c68e83a7013 100644 --- a/gcc/config/alpha/predicates.md +++ b/gcc/config/alpha/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for DEC Alpha. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/alpha/sync.md b/gcc/config/alpha/sync.md index 609e9a2d058..2145fdf2bbb 100644 --- a/gcc/config/alpha/sync.md +++ b/gcc/config/alpha/sync.md @@ -1,5 +1,5 @@ ;; GCC machine description for Alpha synchronization instructions. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/alpha/t-vms b/gcc/config/alpha/t-vms index 1c1e8be61de..12a702125bc 100644 --- a/gcc/config/alpha/t-vms +++ b/gcc/config/alpha/t-vms @@ -1,4 +1,4 @@ -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/alpha/vms.h b/gcc/config/alpha/vms.h index 78cd5661fd5..b2977784b28 100644 --- a/gcc/config/alpha/vms.h +++ b/gcc/config/alpha/vms.h @@ -1,5 +1,5 @@ /* Output variables, constants and external declarations, for GNU compiler. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/arc/arc-modes.def b/gcc/config/arc/arc-modes.def index 14d97ab174a..f279e3c7261 100644 --- a/gcc/config/arc/arc-modes.def +++ b/gcc/config/arc/arc-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributor: Joern Rennecke on behalf of Synopsys Inc. diff --git a/gcc/config/arc/arc-opts.h b/gcc/config/arc/arc-opts.h index 5933e9fbbcd..f2f1bc72be6 100644 --- a/gcc/config/arc/arc-opts.h +++ b/gcc/config/arc/arc-opts.h @@ -1,6 +1,6 @@ /* GCC option-handling definitions for the Synopsys DesignWare ARC architecture. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h index 7559a5af49f..dd54fa8bdb9 100644 --- a/gcc/config/arc/arc-protos.h +++ b/gcc/config/arc/arc-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/arc/arc-simd.h b/gcc/config/arc/arc-simd.h index 2e15a912baa..768e35b956a 100644 --- a/gcc/config/arc/arc-simd.h +++ b/gcc/config/arc/arc-simd.h @@ -1,5 +1,5 @@ /* Synopsys DesignWare ARC SIMD include file. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Written by Saurabh Verma (saurabh.verma@celunite.com) on behalf os Synopsys Inc. diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index e75ae59604b..e5ac866a1b6 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on the Synopsys DesignWare ARC cpu. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Sources derived from work done by Sankhya Technologies (www.sankhya.com) on behalf of Synopsys Inc. diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h index 18c8fb2ccd7..8c7350f3ecf 100644 --- a/gcc/config/arc/arc.h +++ b/gcc/config/arc/arc.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Sources derived from work done by Sankhya Technologies (www.sankhya.com) on behalf of Synopsys Inc. diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md index ffb7123563c..f1715796dfd 100644 --- a/gcc/config/arc/arc.md +++ b/gcc/config/arc/arc.md @@ -1,5 +1,5 @@ ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler -;; Copyright (C) 1994-2013 Free Software Foundation, Inc. +;; Copyright (C) 1994-2014 Free Software Foundation, Inc. ;; Sources derived from work done by Sankhya Technologies (www.sankhya.com) on ;; behalf of Synopsys Inc. diff --git a/gcc/config/arc/arc.opt b/gcc/config/arc/arc.opt index 3837c7a7e28..5755bbf7ecc 100644 --- a/gcc/config/arc/arc.opt +++ b/gcc/config/arc/arc.opt @@ -1,6 +1,6 @@ ; Options for the Synopsys DesignWare ARC port of the compiler ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/arc/arc600.md b/gcc/config/arc/arc600.md index f5665178322..8255e244df2 100644 --- a/gcc/config/arc/arc600.md +++ b/gcc/config/arc/arc600.md @@ -1,6 +1,6 @@ ;; DFA scheduling description of the Synopsys DesignWare ARC600 cpu ;; for GNU C compiler -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; Contributor: Joern Rennecke ;; on behalf of Synopsys Inc. diff --git a/gcc/config/arc/arc700.md b/gcc/config/arc/arc700.md index b5cb68a9bbf..8e80b4f7c2e 100644 --- a/gcc/config/arc/arc700.md +++ b/gcc/config/arc/arc700.md @@ -5,7 +5,7 @@ ;; Ramana Radhakrishnan(ramana.radhakrishnan@codito.com) ;; Factoring out and improvement of ARC700 Scheduling by ;; Joern Rennecke (joern.rennecke@embecosm.com) -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/arc/constraints.md b/gcc/config/arc/constraints.md index 795045377dd..d01e156c6f5 100644 --- a/gcc/config/arc/constraints.md +++ b/gcc/config/arc/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Synopsys DesignWare ARC. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/arc/fpx.md b/gcc/config/arc/fpx.md index 10a5dcd3b66..4eee6aff9ec 100644 --- a/gcc/config/arc/fpx.md +++ b/gcc/config/arc/fpx.md @@ -1,6 +1,6 @@ ;; Machine description of the Synopsys DesignWare ARC cpu Floating Point ;; extensions for GNU C compiler -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/arc/predicates.md b/gcc/config/arc/predicates.md index 241fb23ee36..779af443517 100644 --- a/gcc/config/arc/predicates.md +++ b/gcc/config/arc/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Synopsys DesignWare ARC. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/arc/simdext.md b/gcc/config/arc/simdext.md index 65dbafd50ec..13e268c1147 100644 --- a/gcc/config/arc/simdext.md +++ b/gcc/config/arc/simdext.md @@ -1,5 +1,5 @@ ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/arc/t-arc-newlib b/gcc/config/arc/t-arc-newlib index b70b139e478..5c1cb26b67b 100644 --- a/gcc/config/arc/t-arc-newlib +++ b/gcc/config/arc/t-arc-newlib @@ -1,6 +1,6 @@ # GCC Makefile fragment for Synopsys DesignWare ARC with newlib. -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2014 Free Software Foundation, Inc. # This file is part of GCC. diff --git a/gcc/config/arc/t-arc-uClibc b/gcc/config/arc/t-arc-uClibc index 23baf7c0dd3..704a3aa676c 100644 --- a/gcc/config/arc/t-arc-uClibc +++ b/gcc/config/arc/t-arc-uClibc @@ -1,6 +1,6 @@ # GCC Makefile fragment for Synopsys DesignWare ARC with uClibc -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2014 Free Software Foundation, Inc. # This file is part of GCC. diff --git a/gcc/config/arm/README-interworking b/gcc/config/arm/README-interworking index fe322d5437c..3e36f12a832 100644 --- a/gcc/config/arm/README-interworking +++ b/gcc/config/arm/README-interworking @@ -742,7 +742,7 @@ used. interworking as the --support-old-code switch has taken care if this. -Copyright (C) 1998-2013 Free Software Foundation, Inc. +Copyright (C) 1998-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/config/arm/aarch-common-protos.h b/gcc/config/arm/aarch-common-protos.h index c3652a72c81..056fe56fc5d 100644 --- a/gcc/config/arm/aarch-common-protos.h +++ b/gcc/config/arm/aarch-common-protos.h @@ -1,6 +1,6 @@ /* Functions and structures shared between arm and aarch64. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/arm/aarch-common.c b/gcc/config/arm/aarch-common.c index a46e6751a7b..c11f7e9544c 100644 --- a/gcc/config/arm/aarch-common.c +++ b/gcc/config/arm/aarch-common.c @@ -1,7 +1,7 @@ /* Dependency checks for instruction scheduling, shared between ARM and AARCH64. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/arm/aarch-cost-tables.h b/gcc/config/arm/aarch-cost-tables.h index d3e7dd2d799..a41ee8a3db6 100644 --- a/gcc/config/arm/aarch-cost-tables.h +++ b/gcc/config/arm/aarch-cost-tables.h @@ -1,6 +1,6 @@ /* RTX cost tables shared between arm and aarch64. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/arm/aout.h b/gcc/config/arm/aout.h index e9854bb32b7..51d32a9d461 100644 --- a/gcc/config/arm/aout.h +++ b/gcc/config/arm/aout.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for ARM with a.out - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rearnsha@armltd.co.uk). This file is part of GCC. diff --git a/gcc/config/arm/arm-arches.def b/gcc/config/arm/arm-arches.def index 9b7d20c2e23..ac543ee62ad 100644 --- a/gcc/config/arm/arm-arches.def +++ b/gcc/config/arm/arm-arches.def @@ -1,5 +1,5 @@ /* ARM CPU architectures. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/arm/arm-c.c b/gcc/config/arm/arm-c.c index 6d17cf44fec..af64f7a1f8a 100644 --- a/gcc/config/arm/arm-c.c +++ b/gcc/config/arm/arm-c.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2013 Free Software Foundation, Inc. +/* Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def index 806cd7fdcf9..d961e250e46 100644 --- a/gcc/config/arm/arm-cores.def +++ b/gcc/config/arm/arm-cores.def @@ -1,5 +1,5 @@ /* ARM CPU Cores - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Written by CodeSourcery, LLC This file is part of GCC. diff --git a/gcc/config/arm/arm-fixed.md b/gcc/config/arm/arm-fixed.md index 3972a850990..4ab9d3597ce 100644 --- a/gcc/config/arm/arm-fixed.md +++ b/gcc/config/arm/arm-fixed.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/arm/arm-fpus.def b/gcc/config/arm/arm-fpus.def index 6543942b539..85d9693c1fe 100644 --- a/gcc/config/arm/arm-fpus.def +++ b/gcc/config/arm/arm-fpus.def @@ -1,5 +1,5 @@ /* ARM FPU variants. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/arm/arm-generic.md b/gcc/config/arm/arm-generic.md index 8a3335055d1..b26c72c4431 100644 --- a/gcc/config/arm/arm-generic.md +++ b/gcc/config/arm/arm-generic.md @@ -1,5 +1,5 @@ ;; Generic ARM Pipeline Description -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/arm/arm-ldmstm.ml b/gcc/config/arm/arm-ldmstm.ml index 682aa2c8ee3..2d8f9e26756 100644 --- a/gcc/config/arm/arm-ldmstm.ml +++ b/gcc/config/arm/arm-ldmstm.ml @@ -1,5 +1,5 @@ (* Auto-generate ARM ldm/stm patterns - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by CodeSourcery. This file is part of GCC. @@ -322,7 +322,7 @@ let _ = "/* ARM ldm/stm instruction patterns. This file was automatically generated"; " using arm-ldmstm.ml. Please do not edit manually."; ""; -" Copyright (C) 2010-2013 Free Software Foundation, Inc."; +" Copyright (C) 2010-2014 Free Software Foundation, Inc."; " Contributed by CodeSourcery."; ""; " This file is part of GCC."; diff --git a/gcc/config/arm/arm-modes.def b/gcc/config/arm/arm-modes.def index cb17ed9f389..882aa55c53e 100644 --- a/gcc/config/arm/arm-modes.def +++ b/gcc/config/arm/arm-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for ARM. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl) and Martin Simmons (@harleqn.co.uk). More major hacks by Richard Earnshaw (rearnsha@arm.com) diff --git a/gcc/config/arm/arm-opts.h b/gcc/config/arm/arm-opts.h index dab308ee3c3..a8393975a61 100644 --- a/gcc/config/arm/arm-opts.h +++ b/gcc/config/arm/arm-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for ARM. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h index 62741cbd161..13874ee6e50 100644 --- a/gcc/config/arm/arm-protos.h +++ b/gcc/config/arm/arm-protos.h @@ -1,5 +1,5 @@ /* Prototypes for exported functions defined in arm.c and pe.c - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rearnsha@arm.com) Minor hacks by Nick Clifton (nickc@cygnus.com) diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt index 3a17c2c730b..4f674541de8 100644 --- a/gcc/config/arm/arm-tables.opt +++ b/gcc/config/arm/arm-tables.opt @@ -2,7 +2,7 @@ ; Generated automatically by genopt.sh from arm-cores.def, arm-arches.def ; and arm-fpus.def. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 39d23ccb251..e82e0691fbb 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -1,5 +1,5 @@ /* Output routines for GCC for ARM. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl) and Martin Simmons (@harleqn.co.uk). More major hacks by Richard Earnshaw (rearnsha@arm.com). diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 288ff8b2fc8..409589d2dac 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for ARM. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl) and Martin Simmons (@harleqn.co.uk). More major hacks by Richard Earnshaw (rearnsha@arm.com) diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 9e114b49d2f..2ddda020863 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -1,5 +1,5 @@ ;;- Machine description for ARM for GNU compiler -;; Copyright (C) 1991-2013 Free Software Foundation, Inc. +;; Copyright (C) 1991-2014 Free Software Foundation, Inc. ;; Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl) ;; and Martin Simmons (@harleqn.co.uk). ;; More major hacks by Richard Earnshaw (rearnsha@arm.com). diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt index 5fbac7becf2..8bcf199b6ba 100644 --- a/gcc/config/arm/arm.opt +++ b/gcc/config/arm/arm.opt @@ -1,6 +1,6 @@ ; Options for the ARM port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/arm/arm1020e.md b/gcc/config/arm/arm1020e.md index 7df84d52481..0206ea2af4d 100644 --- a/gcc/config/arm/arm1020e.md +++ b/gcc/config/arm/arm1020e.md @@ -1,5 +1,5 @@ ;; ARM 1020E & ARM 1022E Pipeline Description -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Richard Earnshaw (richard.earnshaw@arm.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/arm1026ejs.md b/gcc/config/arm/arm1026ejs.md index f5a0447f5da..3f290b475e0 100644 --- a/gcc/config/arm/arm1026ejs.md +++ b/gcc/config/arm/arm1026ejs.md @@ -1,5 +1,5 @@ ;; ARM 1026EJ-S Pipeline Description -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; Written by CodeSourcery, LLC. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/arm1136jfs.md b/gcc/config/arm/arm1136jfs.md index f6e0b8da8b6..9e941da765b 100644 --- a/gcc/config/arm/arm1136jfs.md +++ b/gcc/config/arm/arm1136jfs.md @@ -1,5 +1,5 @@ ;; ARM 1136J[F]-S Pipeline Description -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; Written by CodeSourcery, LLC. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/arm926ejs.md b/gcc/config/arm/arm926ejs.md index d2b0e9e3cf8..883935dcf62 100644 --- a/gcc/config/arm/arm926ejs.md +++ b/gcc/config/arm/arm926ejs.md @@ -1,5 +1,5 @@ ;; ARM 926EJ-S Pipeline Description -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; Written by CodeSourcery, LLC. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/arm_acle.h b/gcc/config/arm/arm_acle.h index a14f043a445..aaa7affeeb7 100644 --- a/gcc/config/arm/arm_acle.h +++ b/gcc/config/arm/arm_acle.h @@ -1,6 +1,6 @@ /* ARM Non-NEON ACLE intrinsics include file. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h index 1abbba2256c..37a6e611b48 100644 --- a/gcc/config/arm/arm_neon.h +++ b/gcc/config/arm/arm_neon.h @@ -1,7 +1,7 @@ /* ARM NEON intrinsics include file. This file is generated automatically using neon-gen.ml. Please do not edit manually. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by CodeSourcery. This file is part of GCC. diff --git a/gcc/config/arm/arm_neon_builtins.def b/gcc/config/arm/arm_neon_builtins.def index 50688819806..a00951ab65b 100644 --- a/gcc/config/arm/arm_neon_builtins.def +++ b/gcc/config/arm/arm_neon_builtins.def @@ -1,5 +1,5 @@ /* NEON builtin definitions for ARM. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h index 5cfaeb88986..0c0be67fb3f 100644 --- a/gcc/config/arm/bpabi.h +++ b/gcc/config/arm/bpabi.h @@ -1,5 +1,5 @@ /* Configuration file for ARM BPABI targets. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, LLC This file is part of GCC. diff --git a/gcc/config/arm/coff.h b/gcc/config/arm/coff.h index aaaebac4e45..7deb2389804 100644 --- a/gcc/config/arm/coff.h +++ b/gcc/config/arm/coff.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler. For ARM with COFF object format. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Doug Evans (devans@cygnus.com). This file is part of GCC. diff --git a/gcc/config/arm/constraints.md b/gcc/config/arm/constraints.md index 59ca4b62440..85dd116cec0 100644 --- a/gcc/config/arm/constraints.md +++ b/gcc/config/arm/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for ARM and Thumb -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; Contributed by ARM Ltd. ;; This file is part of GCC. diff --git a/gcc/config/arm/cortex-a15-neon.md b/gcc/config/arm/cortex-a15-neon.md index ebb6b66f782..02d4a530b2b 100644 --- a/gcc/config/arm/cortex-a15-neon.md +++ b/gcc/config/arm/cortex-a15-neon.md @@ -1,5 +1,5 @@ ;; ARM Cortex-A15 NEON pipeline description -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/arm/cortex-a15.md b/gcc/config/arm/cortex-a15.md index 5a31a097918..b3f126a7228 100644 --- a/gcc/config/arm/cortex-a15.md +++ b/gcc/config/arm/cortex-a15.md @@ -1,5 +1,5 @@ ;; ARM Cortex-A15 pipeline description -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; ;; Written by Matthew Gretton-Dann diff --git a/gcc/config/arm/cortex-a5.md b/gcc/config/arm/cortex-a5.md index 22e0a08f38e..eed098ef92a 100644 --- a/gcc/config/arm/cortex-a5.md +++ b/gcc/config/arm/cortex-a5.md @@ -1,5 +1,5 @@ ;; ARM Cortex-A5 pipeline description -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by CodeSourcery. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/cortex-a53.md b/gcc/config/arm/cortex-a53.md index 48d0d03853f..deae8eba522 100644 --- a/gcc/config/arm/cortex-a53.md +++ b/gcc/config/arm/cortex-a53.md @@ -1,5 +1,5 @@ ;; ARM Cortex-A53 pipeline description -;; Copyright (C) 2013 Free Software Foundation, Inc. +;; Copyright (C) 2013-2014 Free Software Foundation, Inc. ;; ;; Contributed by ARM Ltd. ;; diff --git a/gcc/config/arm/cortex-a7.md b/gcc/config/arm/cortex-a7.md index 7db6c5b24fb..8291d7fa928 100644 --- a/gcc/config/arm/cortex-a7.md +++ b/gcc/config/arm/cortex-a7.md @@ -1,5 +1,5 @@ ;; ARM Cortex-A7 pipeline description -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; ;; Contributed by ARM Ltd. ;; Based on cortex-a5.md which was originally contributed by CodeSourcery. diff --git a/gcc/config/arm/cortex-a8-neon.md b/gcc/config/arm/cortex-a8-neon.md index 6adfd136569..1bb0ab2377e 100644 --- a/gcc/config/arm/cortex-a8-neon.md +++ b/gcc/config/arm/cortex-a8-neon.md @@ -1,5 +1,5 @@ ;; ARM Cortex-A8 NEON scheduling description. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; Contributed by CodeSourcery. ;; This file is part of GCC. diff --git a/gcc/config/arm/cortex-a8.md b/gcc/config/arm/cortex-a8.md index 1eade5e1244..b272472e0ce 100644 --- a/gcc/config/arm/cortex-a8.md +++ b/gcc/config/arm/cortex-a8.md @@ -1,5 +1,5 @@ ;; ARM Cortex-A8 scheduling description. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; Contributed by CodeSourcery. ;; This file is part of GCC. diff --git a/gcc/config/arm/cortex-a9-neon.md b/gcc/config/arm/cortex-a9-neon.md index cd6b7a4fd36..3ff93f92402 100644 --- a/gcc/config/arm/cortex-a9-neon.md +++ b/gcc/config/arm/cortex-a9-neon.md @@ -1,5 +1,5 @@ ;; ARM Cortex-A9 pipeline description -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; ;; Neon pipeline description contributed by ARM Ltd. ;; diff --git a/gcc/config/arm/cortex-a9.md b/gcc/config/arm/cortex-a9.md index 7c62d8489ae..a888896c5d4 100644 --- a/gcc/config/arm/cortex-a9.md +++ b/gcc/config/arm/cortex-a9.md @@ -1,5 +1,5 @@ ;; ARM Cortex-A9 pipeline description -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Originally written by CodeSourcery for VFP. ;; ;; Rewritten by Ramana Radhakrishnan diff --git a/gcc/config/arm/cortex-m4-fpu.md b/gcc/config/arm/cortex-m4-fpu.md index 2190938b65c..aa81e52efaf 100644 --- a/gcc/config/arm/cortex-m4-fpu.md +++ b/gcc/config/arm/cortex-m4-fpu.md @@ -1,5 +1,5 @@ ;; ARM Cortex-M4 FPU pipeline description -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by CodeSourcery. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/cortex-m4.md b/gcc/config/arm/cortex-m4.md index 9ae4cc3143b..690ce751fb3 100644 --- a/gcc/config/arm/cortex-m4.md +++ b/gcc/config/arm/cortex-m4.md @@ -1,5 +1,5 @@ ;; ARM Cortex-M4 pipeline description -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by CodeSourcery. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/cortex-r4.md b/gcc/config/arm/cortex-r4.md index 7a3ceeb15d7..f000124cb6f 100644 --- a/gcc/config/arm/cortex-r4.md +++ b/gcc/config/arm/cortex-r4.md @@ -1,5 +1,5 @@ ;; ARM Cortex-R4 scheduling description. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; Contributed by CodeSourcery. ;; This file is part of GCC. diff --git a/gcc/config/arm/cortex-r4f.md b/gcc/config/arm/cortex-r4f.md index 1bc4249d4d1..25d949789cc 100644 --- a/gcc/config/arm/cortex-r4f.md +++ b/gcc/config/arm/cortex-r4f.md @@ -1,5 +1,5 @@ ;; ARM Cortex-R4F VFP pipeline description -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; Written by CodeSourcery. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/crypto.def b/gcc/config/arm/crypto.def index b2cb567212d..dc805d9ec64 100644 --- a/gcc/config/arm/crypto.def +++ b/gcc/config/arm/crypto.def @@ -1,5 +1,5 @@ /* Cryptographic instruction builtin definitions. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GCC. diff --git a/gcc/config/arm/crypto.md b/gcc/config/arm/crypto.md index e365cf85281..9f249803d22 100644 --- a/gcc/config/arm/crypto.md +++ b/gcc/config/arm/crypto.md @@ -1,5 +1,5 @@ ;; ARMv8-A crypto patterns. -;; Copyright (C) 2013 Free Software Foundation, Inc. +;; Copyright (C) 2013-2014 Free Software Foundation, Inc. ;; Contributed by ARM Ltd. ;; This file is part of GCC. diff --git a/gcc/config/arm/driver-arm.c b/gcc/config/arm/driver-arm.c index 7ec4996ed55..7460aee438d 100644 --- a/gcc/config/arm/driver-arm.c +++ b/gcc/config/arm/driver-arm.c @@ -1,5 +1,5 @@ /* Subroutines for the gcc driver. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/arm/elf.h b/gcc/config/arm/elf.h index 5e21a084286..2ac8c8d048c 100644 --- a/gcc/config/arm/elf.h +++ b/gcc/config/arm/elf.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler. For ARM with ELF obj format. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Philip Blundell and Catherine Moore diff --git a/gcc/config/arm/fa526.md b/gcc/config/arm/fa526.md index 401abd3c0a0..c345fdf65e5 100644 --- a/gcc/config/arm/fa526.md +++ b/gcc/config/arm/fa526.md @@ -1,5 +1,5 @@ ;; Faraday FA526 Pipeline Description -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description. ;; This file is part of GCC. diff --git a/gcc/config/arm/fa606te.md b/gcc/config/arm/fa606te.md index 88347bc2d96..01ecfc88c3c 100644 --- a/gcc/config/arm/fa606te.md +++ b/gcc/config/arm/fa606te.md @@ -1,5 +1,5 @@ ;; Faraday FA606TE Pipeline Description -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/fa626te.md b/gcc/config/arm/fa626te.md index e6790a21215..e615bae3764 100644 --- a/gcc/config/arm/fa626te.md +++ b/gcc/config/arm/fa626te.md @@ -1,5 +1,5 @@ ;; Faraday FA626TE Pipeline Description -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/fa726te.md b/gcc/config/arm/fa726te.md index d0a03981eec..225b2cfdd74 100644 --- a/gcc/config/arm/fa726te.md +++ b/gcc/config/arm/fa726te.md @@ -1,5 +1,5 @@ ;; Faraday FA726TE Pipeline Description -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/fmp626.md b/gcc/config/arm/fmp626.md index ffb68570e37..439054da647 100644 --- a/gcc/config/arm/fmp626.md +++ b/gcc/config/arm/fmp626.md @@ -1,5 +1,5 @@ ;; Faraday FA626TE Pipeline Description -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/genopt.sh b/gcc/config/arm/genopt.sh index aaf34678331..68fdb564c12 100755 --- a/gcc/config/arm/genopt.sh +++ b/gcc/config/arm/genopt.sh @@ -1,6 +1,6 @@ #!/bin/sh # Generate arm-tables.opt from the lists in *.def. -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -23,7 +23,7 @@ cat < diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h index 232c38d28ff..f1f3448f1b5 100644 --- a/gcc/config/arm/linux-eabi.h +++ b/gcc/config/arm/linux-eabi.h @@ -1,5 +1,5 @@ /* Configuration file for ARM GNU/Linux EABI targets. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, LLC This file is part of GCC. diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h index 475e22079fc..5dc3328e839 100644 --- a/gcc/config/arm/linux-elf.h +++ b/gcc/config/arm/linux-elf.h @@ -1,5 +1,5 @@ /* Definitions for ARM running Linux-based GNU systems using ELF - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. Contributed by Philip Blundell This file is part of GCC. diff --git a/gcc/config/arm/linux-gas.h b/gcc/config/arm/linux-gas.h index 3312703e3a7..52a739c2674 100644 --- a/gcc/config/arm/linux-gas.h +++ b/gcc/config/arm/linux-gas.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler. ARM Linux-based GNU systems version. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. Contributed by Russell King . This file is part of GCC. diff --git a/gcc/config/arm/marvell-f-iwmmxt.md b/gcc/config/arm/marvell-f-iwmmxt.md index 395549fd434..9968803ca98 100644 --- a/gcc/config/arm/marvell-f-iwmmxt.md +++ b/gcc/config/arm/marvell-f-iwmmxt.md @@ -1,5 +1,5 @@ ;; Marvell WMMX2 pipeline description -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Written by Marvell, Inc. ;; This file is part of GCC. diff --git a/gcc/config/arm/marvell-pj4.md b/gcc/config/arm/marvell-pj4.md index 880789600e0..0b9d6ebada1 100644 --- a/gcc/config/arm/marvell-pj4.md +++ b/gcc/config/arm/marvell-pj4.md @@ -1,5 +1,5 @@ ;; Marvell ARM Processor Pipeline Description -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Marvell. ;; This file is part of GCC. diff --git a/gcc/config/arm/mmintrin.h b/gcc/config/arm/mmintrin.h index 7e0360f823f..b906faca447 100644 --- a/gcc/config/arm/mmintrin.h +++ b/gcc/config/arm/mmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2013 Free Software Foundation, Inc. +/* Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/arm/neon-docgen.ml b/gcc/config/arm/neon-docgen.ml index 46cae14fdc2..5788a533e19 100644 --- a/gcc/config/arm/neon-docgen.ml +++ b/gcc/config/arm/neon-docgen.ml @@ -1,6 +1,6 @@ (* ARM NEON documentation generator. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by CodeSourcery. This file is part of GCC. @@ -322,7 +322,7 @@ let document_group chan (group_title, group_extractor) = let gnu_header chan = List.iter (fun s -> Printf.fprintf chan "%s\n" s) [ - "@c Copyright (C) 2006-2013 Free Software Foundation, Inc."; + "@c Copyright (C) 2006-2014 Free Software Foundation, Inc."; "@c This is part of the GCC manual."; "@c For copying conditions, see the file gcc.texi."; ""; diff --git a/gcc/config/arm/neon-gen.ml b/gcc/config/arm/neon-gen.ml index e5da658687f..f3dd86b0ace 100644 --- a/gcc/config/arm/neon-gen.ml +++ b/gcc/config/arm/neon-gen.ml @@ -1,5 +1,5 @@ (* Auto-generate ARM Neon intrinsics header file. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by CodeSourcery. This file is part of GCC. @@ -467,7 +467,7 @@ let _ = "/* ARM NEON intrinsics include file. This file is generated automatically"; " using neon-gen.ml. Please do not edit manually."; ""; -" Copyright (C) 2006-2013 Free Software Foundation, Inc."; +" Copyright (C) 2006-2014 Free Software Foundation, Inc."; " Contributed by CodeSourcery."; ""; " This file is part of GCC."; diff --git a/gcc/config/arm/neon-testgen.ml b/gcc/config/arm/neon-testgen.ml index e1e4e250787..df429f59e27 100644 --- a/gcc/config/arm/neon-testgen.ml +++ b/gcc/config/arm/neon-testgen.ml @@ -1,5 +1,5 @@ (* Auto-generate ARM Neon intrinsics tests. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by CodeSourcery. This file is part of GCC. diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index 5e9b4410662..2f06e42ed31 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -1,5 +1,5 @@ ;; ARM NEON coprocessor Machine Description -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; Written by CodeSourcery. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/neon.ml b/gcc/config/arm/neon.ml index 738ee066bb0..4289b8ce005 100644 --- a/gcc/config/arm/neon.ml +++ b/gcc/config/arm/neon.ml @@ -1,7 +1,7 @@ (* Common code for ARM NEON header file, documentation and test case generators. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by CodeSourcery. This file is part of GCC. diff --git a/gcc/config/arm/netbsd-elf.h b/gcc/config/arm/netbsd-elf.h index 26d4f8e7362..9deda96791f 100644 --- a/gcc/config/arm/netbsd-elf.h +++ b/gcc/config/arm/netbsd-elf.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, NetBSD/arm ELF version. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Wasabi Systems, Inc. This file is part of GCC. diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md index 641228612f5..ce5c9a830cd 100644 --- a/gcc/config/arm/predicates.md +++ b/gcc/config/arm/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for ARM and Thumb -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; Contributed by ARM Ltd. ;; This file is part of GCC. diff --git a/gcc/config/arm/rtems-eabi.h b/gcc/config/arm/rtems-eabi.h index 77fcf1a8b2d..4bdcf0d87ba 100644 --- a/gcc/config/arm/rtems-eabi.h +++ b/gcc/config/arm/rtems-eabi.h @@ -1,5 +1,5 @@ /* Definitions for RTEMS based ARM systems using EABI. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/arm/semi.h b/gcc/config/arm/semi.h index b06c0af72eb..f937e47b9e7 100644 --- a/gcc/config/arm/semi.h +++ b/gcc/config/arm/semi.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler. ARM on semi-hosted platform - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Contributed by Richard Earnshaw (richard.earnshaw@arm.com) This file is part of GCC. diff --git a/gcc/config/arm/symbian.h b/gcc/config/arm/symbian.h index 8c121bec4ab..777742d6e01 100644 --- a/gcc/config/arm/symbian.h +++ b/gcc/config/arm/symbian.h @@ -1,5 +1,5 @@ /* Configuration file for Symbian OS on ARM processors. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, LLC This file is part of GCC. diff --git a/gcc/config/arm/sync.md b/gcc/config/arm/sync.md index 8f7bd71c317..aa8e9abcf77 100644 --- a/gcc/config/arm/sync.md +++ b/gcc/config/arm/sync.md @@ -1,5 +1,5 @@ ;; Machine description for ARM processor synchronization primitives. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Written by Marcus Shawcroft (marcus.shawcroft@arm.com) ;; 64bit Atomics by Dave Gilbert (david.gilbert@linaro.org) ;; diff --git a/gcc/config/arm/t-aprofile b/gcc/config/arm/t-aprofile index 5c5ee0c2589..ad7ccd187be 100644 --- a/gcc/config/arm/t-aprofile +++ b/gcc/config/arm/t-aprofile @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/arm/t-arm b/gcc/config/arm/t-arm index 20e79ef2680..99bd696e411 100644 --- a/gcc/config/arm/t-arm +++ b/gcc/config/arm/t-arm @@ -1,6 +1,6 @@ # Rules common to all arm targets # -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf index 60747d335f6..8ef6b04ffbe 100644 --- a/gcc/config/arm/t-arm-elf +++ b/gcc/config/arm/t-arm-elf @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2013 Free Software Foundation, Inc. +# Copyright (C) 1998-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/arm/t-linux-eabi b/gcc/config/arm/t-linux-eabi index 07e32b38de8..1087914b527 100644 --- a/gcc/config/arm/t-linux-eabi +++ b/gcc/config/arm/t-linux-eabi @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/arm/t-symbian b/gcc/config/arm/t-symbian index c4c6bb6aaab..35ee0288969 100644 --- a/gcc/config/arm/t-symbian +++ b/gcc/config/arm/t-symbian @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/arm/t-vxworks b/gcc/config/arm/t-vxworks index d3e32c91d58..802d8e4bdde 100644 --- a/gcc/config/arm/t-vxworks +++ b/gcc/config/arm/t-vxworks @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index b8b49fe7aee..4f247f82bf4 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -1,5 +1,5 @@ ;; ARM Thumb-2 Machine Description -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; Written by CodeSourcery, LLC. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/types.md b/gcc/config/arm/types.md index 40c4a787ac3..cc39cd11f4a 100644 --- a/gcc/config/arm/types.md +++ b/gcc/config/arm/types.md @@ -1,6 +1,6 @@ ;; Instruction Classification for ARM for GNU compiler. -;; Copyright (C) 1991-2013 Free Software Foundation, Inc. +;; Copyright (C) 1991-2014 Free Software Foundation, Inc. ;; Contributed by ARM Ltd. ;; This file is part of GCC. diff --git a/gcc/config/arm/uclinux-eabi.h b/gcc/config/arm/uclinux-eabi.h index c22c1d7f348..b5055ce40bc 100644 --- a/gcc/config/arm/uclinux-eabi.h +++ b/gcc/config/arm/uclinux-eabi.h @@ -1,5 +1,5 @@ /* Definitions for ARM EABI ucLinux - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. diff --git a/gcc/config/arm/uclinux-elf.h b/gcc/config/arm/uclinux-elf.h index 74d63df4418..5cd4fe52799 100644 --- a/gcc/config/arm/uclinux-elf.h +++ b/gcc/config/arm/uclinux-elf.h @@ -1,5 +1,5 @@ /* Definitions for ARM running ucLinux using ELF - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Philip Blundell This file is part of GCC. diff --git a/gcc/config/arm/unknown-elf.h b/gcc/config/arm/unknown-elf.h index 9d776b0585d..ec6f9a48894 100644 --- a/gcc/config/arm/unknown-elf.h +++ b/gcc/config/arm/unknown-elf.h @@ -1,5 +1,5 @@ /* Definitions for non-Linux based ARM systems using ELF - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Contributed by Catherine Moore This file is part of GCC. diff --git a/gcc/config/arm/unspecs.md b/gcc/config/arm/unspecs.md index af4b832e88b..8caa953bcb9 100644 --- a/gcc/config/arm/unspecs.md +++ b/gcc/config/arm/unspecs.md @@ -1,5 +1,5 @@ ;; Unspec defintions. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by ARM Ltd. ;; This file is part of GCC. diff --git a/gcc/config/arm/vec-common.md b/gcc/config/arm/vec-common.md index 9418018dae9..ba0b5880636 100644 --- a/gcc/config/arm/vec-common.md +++ b/gcc/config/arm/vec-common.md @@ -1,5 +1,5 @@ ;; Machine Description for shared bits common to IWMMXT and Neon. -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; Written by CodeSourcery. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index 8d755fc1dfe..e1a48eeea82 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -1,5 +1,5 @@ ;; ARM VFP instruction patterns -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; Written by CodeSourcery. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/vfp11.md b/gcc/config/arm/vfp11.md index 4cfa69efc24..2dbb2010079 100644 --- a/gcc/config/arm/vfp11.md +++ b/gcc/config/arm/vfp11.md @@ -1,5 +1,5 @@ ;; ARM VFP11 pipeline description -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; Written by CodeSourcery. ;; ;; This file is part of GCC. diff --git a/gcc/config/arm/vxworks.h b/gcc/config/arm/vxworks.h index 480cc95e1f1..8bef16bc49f 100644 --- a/gcc/config/arm/vxworks.h +++ b/gcc/config/arm/vxworks.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GCC, for ARM with targeting the VXWorks run time environment. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by: Mike Stump Brought up to date by CodeSourcery, LLC. diff --git a/gcc/config/arm/vxworks.opt b/gcc/config/arm/vxworks.opt index 911b4983e31..ae83422f808 100644 --- a/gcc/config/arm/vxworks.opt +++ b/gcc/config/arm/vxworks.opt @@ -1,6 +1,6 @@ ; ARM VxWorks options. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/avr/avr-arch.h b/gcc/config/avr/avr-arch.h index 27cea736e06..6357e997cad 100644 --- a/gcc/config/avr/avr-arch.h +++ b/gcc/config/avr/avr-arch.h @@ -1,6 +1,6 @@ /* Definitions of types that are used to store AVR architecture and device information. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Georg-Johann Lay (avr@gjlay.de) This file is part of GCC. diff --git a/gcc/config/avr/avr-c.c b/gcc/config/avr/avr-c.c index 2cfb264ad20..98650e093f4 100644 --- a/gcc/config/avr/avr-c.c +++ b/gcc/config/avr/avr-c.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2009-2013 Free Software Foundation, Inc. +/* Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Anatoly Sokolov (aesok@post.ru) This file is part of GCC. diff --git a/gcc/config/avr/avr-devices.c b/gcc/config/avr/avr-devices.c index 48a952318ad..177f1961f14 100644 --- a/gcc/config/avr/avr-devices.c +++ b/gcc/config/avr/avr-devices.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2009-2013 Free Software Foundation, Inc. +/* Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Anatoly Sokolov (aesok@post.ru) This file is part of GCC. diff --git a/gcc/config/avr/avr-dimode.md b/gcc/config/avr/avr-dimode.md index c96ba6e9713..639810518c9 100644 --- a/gcc/config/avr/avr-dimode.md +++ b/gcc/config/avr/avr-dimode.md @@ -1,6 +1,6 @@ ;; Machine description for GNU compiler, ;; for Atmel AVR micro controllers. -;; Copyright (C) 1998-2013 Free Software Foundation, Inc. +;; Copyright (C) 1998-2014 Free Software Foundation, Inc. ;; Contributed by Georg Lay (avr@gjlay.de) ;; ;; This file is part of GCC. diff --git a/gcc/config/avr/avr-fixed.md b/gcc/config/avr/avr-fixed.md index b2f0b9aa144..1652415b1d0 100644 --- a/gcc/config/avr/avr-fixed.md +++ b/gcc/config/avr/avr-fixed.md @@ -1,6 +1,6 @@ ;; This file contains instructions that support fixed-point operations ;; for Atmel AVR micro controllers. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; ;; Contributed by Sean D'Epagnier (sean@depagnier.com) ;; Georg-Johann Lay (avr@gjlay.de) diff --git a/gcc/config/avr/avr-log.c b/gcc/config/avr/avr-log.c index 3d2f54d9707..8e27cec6dc3 100644 --- a/gcc/config/avr/avr-log.c +++ b/gcc/config/avr/avr-log.c @@ -1,5 +1,5 @@ /* Subroutines for log output for Atmel AVR back end. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Georg-Johann Lay (avr@gjlay.de) This file is part of GCC. diff --git a/gcc/config/avr/avr-mcus.def b/gcc/config/avr/avr-mcus.def index f277d3687b9..affd9f3d5c0 100644 --- a/gcc/config/avr/avr-mcus.def +++ b/gcc/config/avr/avr-mcus.def @@ -1,5 +1,5 @@ /* AVR MCUs. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/avr/avr-modes.def b/gcc/config/avr/avr-modes.def index 7d2886fed37..7d380b0689d 100644 --- a/gcc/config/avr/avr-modes.def +++ b/gcc/config/avr/avr-modes.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/avr/avr-protos.h b/gcc/config/avr/avr-protos.h index 21ad26a6f34..c5ce784294e 100644 --- a/gcc/config/avr/avr-protos.h +++ b/gcc/config/avr/avr-protos.h @@ -1,6 +1,6 @@ /* Prototypes for exported functions defined in avr.c - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Denis Chertykov (chertykov@gmail.com) This file is part of GCC. diff --git a/gcc/config/avr/avr-stdint.h b/gcc/config/avr/avr-stdint.h index 4137b0689a5..3ecc2689537 100644 --- a/gcc/config/avr/avr-stdint.h +++ b/gcc/config/avr/avr-stdint.h @@ -1,5 +1,5 @@ /* Definitions for types on systems using newlib. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/avr/avr-tables.opt b/gcc/config/avr/avr-tables.opt index b101e00e7e9..90de7e11aba 100644 --- a/gcc/config/avr/avr-tables.opt +++ b/gcc/config/avr/avr-tables.opt @@ -1,7 +1,7 @@ ; -*- buffer-read-only: t -*- ; Generated automatically by genopt.sh from avr-mcus.def. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 76fd7bbe27e..76d23581ea7 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -1,5 +1,5 @@ /* Subroutines for insn-output.c for ATMEL AVR micro controllers - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Contributed by Denis Chertykov (chertykov@gmail.com) This file is part of GCC. diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h index 079752ae430..75c42eeccb3 100644 --- a/gcc/config/avr/avr.h +++ b/gcc/config/avr/avr.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for ATMEL AVR at90s8515, ATmega103/103L, ATmega603/603L microcontrollers. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Contributed by Denis Chertykov (chertykov@gmail.com) This file is part of GCC. diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md index cf4e0422bb9..f2d8605cd20 100644 --- a/gcc/config/avr/avr.md +++ b/gcc/config/avr/avr.md @@ -1,6 +1,6 @@ ;; Machine description for GNU compiler, ;; for ATMEL AVR micro controllers. -;; Copyright (C) 1998-2013 Free Software Foundation, Inc. +;; Copyright (C) 1998-2014 Free Software Foundation, Inc. ;; Contributed by Denis Chertykov (chertykov@gmail.com) ;; This file is part of GCC. diff --git a/gcc/config/avr/avr.opt b/gcc/config/avr/avr.opt index 9b0f782d385..5be80aa2d3c 100644 --- a/gcc/config/avr/avr.opt +++ b/gcc/config/avr/avr.opt @@ -1,6 +1,6 @@ ; Options for the ATMEL AVR port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/avr/avrlibc.h b/gcc/config/avr/avrlibc.h index 550913460e8..fee685b6a47 100644 --- a/gcc/config/avr/avrlibc.h +++ b/gcc/config/avr/avrlibc.h @@ -1,6 +1,6 @@ /* Definitions of target machine for the GNU compiler collection for Atmel AVR micro controller if configured for AVR-Libc. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Georg-Johann Lay (avr@gjlay.de) This file is part of GCC. diff --git a/gcc/config/avr/builtins.def b/gcc/config/avr/builtins.def index 3562c6932a6..affcbaa34ac 100644 --- a/gcc/config/avr/builtins.def +++ b/gcc/config/avr/builtins.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/avr/constraints.md b/gcc/config/avr/constraints.md index 76a8ef19044..2f6e4ea1bd9 100644 --- a/gcc/config/avr/constraints.md +++ b/gcc/config/avr/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for ATMEL AVR micro controllers. -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/avr/driver-avr.c b/gcc/config/avr/driver-avr.c index e859f5f65a5..cb5dd1d1d89 100644 --- a/gcc/config/avr/driver-avr.c +++ b/gcc/config/avr/driver-avr.c @@ -1,5 +1,5 @@ /* Subroutines for the gcc driver. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Anatoly Sokolov This file is part of GCC. diff --git a/gcc/config/avr/elf.h b/gcc/config/avr/elf.h index 5e8c0eb7756..dc163e44ebb 100644 --- a/gcc/config/avr/elf.h +++ b/gcc/config/avr/elf.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2013 Free Software Foundation, Inc. +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Georg-Johann Lay (avr@gjlay.de) This file is part of GCC. diff --git a/gcc/config/avr/gen-avr-mmcu-texi.c b/gcc/config/avr/gen-avr-mmcu-texi.c index e69cd419e4e..ea3e6f1baaf 100644 --- a/gcc/config/avr/gen-avr-mmcu-texi.c +++ b/gcc/config/avr/gen-avr-mmcu-texi.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Georg-Johann Lay (avr@gjlay.de) This file is part of GCC. @@ -101,7 +101,7 @@ int main (void) size_t i, n_mcus = 0; const avr_mcu_t *mcu; - printf ("@c Copyright (C) 2012-2013 Free Software Foundation, Inc.\n"); + printf ("@c Copyright (C) 2012-2014 Free Software Foundation, Inc.\n"); printf ("@c This is part of the GCC manual.\n"); printf ("@c For copying conditions, see the file " "gcc/doc/include/fdl.texi.\n\n"); diff --git a/gcc/config/avr/genmultilib.awk b/gcc/config/avr/genmultilib.awk index 14ed6586ab3..90e5e5cfd36 100644 --- a/gcc/config/avr/genmultilib.awk +++ b/gcc/config/avr/genmultilib.awk @@ -1,4 +1,4 @@ -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/avr/genopt.sh b/gcc/config/avr/genopt.sh index ef07ad00527..9838ec25a45 100755 --- a/gcc/config/avr/genopt.sh +++ b/gcc/config/avr/genopt.sh @@ -1,6 +1,6 @@ #!/bin/sh # Generate avr-tables.opt from the list in avr-mcus.def. -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -22,7 +22,7 @@ cat < ;; Contributed by CodeSourcery. ;; @@ -424,7 +424,7 @@ ;; Multiplication patterns for TI C6X. ;; This file is processed by genmult.sh to produce two variants of each ;; pattern, a normal one and a real_mult variant for modulo scheduling. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Bernd Schmidt ;; Contributed by CodeSourcery. ;; diff --git a/gcc/config/c6x/c6x-mult.md.in b/gcc/config/c6x/c6x-mult.md.in index 32a399aee2a..f09c7c085c5 100644 --- a/gcc/config/c6x/c6x-mult.md.in +++ b/gcc/config/c6x/c6x-mult.md.in @@ -1,7 +1,7 @@ ;; Multiplication patterns for TI C6X. ;; This file is processed by genmult.sh to produce two variants of each ;; pattern, a normal one and a real_mult variant for modulo scheduling. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Bernd Schmidt ;; Contributed by CodeSourcery. ;; diff --git a/gcc/config/c6x/c6x-opts.h b/gcc/config/c6x/c6x-opts.h index 31eae390cf7..6bc3fe84699 100644 --- a/gcc/config/c6x/c6x-opts.h +++ b/gcc/config/c6x/c6x-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for TI C6X. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/c6x/c6x-protos.h b/gcc/config/c6x/c6x-protos.h index 2ec5b81b1b7..e360ebff81a 100644 --- a/gcc/config/c6x/c6x-protos.h +++ b/gcc/config/c6x/c6x-protos.h @@ -1,5 +1,5 @@ /* Prototypes for exported functions defined in c6x.c. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by CodeSourcery. This file is part of GCC. diff --git a/gcc/config/c6x/c6x-sched.md b/gcc/config/c6x/c6x-sched.md index 6dfb0af390e..d85c1a9b956 100644 --- a/gcc/config/c6x/c6x-sched.md +++ b/gcc/config/c6x/c6x-sched.md @@ -4,7 +4,7 @@ ;; Definitions for side 1, cross n ;; Scheduling description for TI C6X. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Bernd Schmidt ;; Contributed by CodeSourcery. ;; @@ -237,7 +237,7 @@ ;; Definitions for side 2, cross n ;; Scheduling description for TI C6X. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Bernd Schmidt ;; Contributed by CodeSourcery. ;; @@ -470,7 +470,7 @@ ;; Definitions for side 1, cross y ;; Scheduling description for TI C6X. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Bernd Schmidt ;; Contributed by CodeSourcery. ;; @@ -703,7 +703,7 @@ ;; Definitions for side 2, cross y ;; Scheduling description for TI C6X. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Bernd Schmidt ;; Contributed by CodeSourcery. ;; diff --git a/gcc/config/c6x/c6x-sched.md.in b/gcc/config/c6x/c6x-sched.md.in index 7bc52e429ab..2a98dddacec 100644 --- a/gcc/config/c6x/c6x-sched.md.in +++ b/gcc/config/c6x/c6x-sched.md.in @@ -1,5 +1,5 @@ ;; Scheduling description for TI C6X. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Bernd Schmidt ;; Contributed by CodeSourcery. ;; diff --git a/gcc/config/c6x/c6x-tables.opt b/gcc/config/c6x/c6x-tables.opt index 839ea8e9f26..a4eb62fabac 100644 --- a/gcc/config/c6x/c6x-tables.opt +++ b/gcc/config/c6x/c6x-tables.opt @@ -1,7 +1,7 @@ ; -*- buffer-read-only: t -*- ; Generated automatically by genopt.sh from c6x-isas.def. ; -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/c6x/c6x.c b/gcc/config/c6x/c6x.c index 6f80bc8aa4b..9ba10df73c6 100644 --- a/gcc/config/c6x/c6x.c +++ b/gcc/config/c6x/c6x.c @@ -1,5 +1,5 @@ /* Target Code for TI C6X - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Andrew Jenner Contributed by Bernd Schmidt diff --git a/gcc/config/c6x/c6x.h b/gcc/config/c6x/c6x.h index c30a9718e76..e0a60a9710b 100644 --- a/gcc/config/c6x/c6x.h +++ b/gcc/config/c6x/c6x.h @@ -1,5 +1,5 @@ /* Target Definitions for TI C6X. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Andrew Jenner Contributed by Bernd Schmidt diff --git a/gcc/config/c6x/c6x.md b/gcc/config/c6x/c6x.md index d7606965cde..53032b1f0ec 100644 --- a/gcc/config/c6x/c6x.md +++ b/gcc/config/c6x/c6x.md @@ -1,5 +1,5 @@ ;; Machine description for TI C6X. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Andrew Jenner ;; Contributed by Bernd Schmidt ;; Contributed by CodeSourcery. diff --git a/gcc/config/c6x/c6x.opt b/gcc/config/c6x/c6x.opt index 435c5d1340a..1a96f6086e9 100644 --- a/gcc/config/c6x/c6x.opt +++ b/gcc/config/c6x/c6x.opt @@ -1,5 +1,5 @@ ; Option definitions for TI C6X. -; Copyright (C) 2010-2013 Free Software Foundation, Inc. +; Copyright (C) 2010-2014 Free Software Foundation, Inc. ; Contributed by Bernd Schmidt ; Contributed by CodeSourcery. ; diff --git a/gcc/config/c6x/c6x_intrinsics.h b/gcc/config/c6x/c6x_intrinsics.h index d768046d4d5..ce0436ca7c5 100644 --- a/gcc/config/c6x/c6x_intrinsics.h +++ b/gcc/config/c6x/c6x_intrinsics.h @@ -1,6 +1,6 @@ /* Intrinsics for TI C6X. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by CodeSourcery. This file is part of GCC. diff --git a/gcc/config/c6x/constraints.md b/gcc/config/c6x/constraints.md index 154ba687a4f..e2721d9a71d 100644 --- a/gcc/config/c6x/constraints.md +++ b/gcc/config/c6x/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for TI C6X. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Andrew Jenner ;; Contributed by Bernd Schmidt ;; Contributed by CodeSourcery. diff --git a/gcc/config/c6x/elf-common.h b/gcc/config/c6x/elf-common.h index 376e719bb7f..8eef1b82e1f 100644 --- a/gcc/config/c6x/elf-common.h +++ b/gcc/config/c6x/elf-common.h @@ -1,5 +1,5 @@ /* ELF definitions for TI C6X - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Andrew Jenner Contributed by Bernd Schmidt diff --git a/gcc/config/c6x/elf.h b/gcc/config/c6x/elf.h index 190244f14df..a4189f6ae57 100644 --- a/gcc/config/c6x/elf.h +++ b/gcc/config/c6x/elf.h @@ -1,5 +1,5 @@ /* ELF definitions for TI C6X - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Andrew Jenner Contributed by Bernd Schmidt diff --git a/gcc/config/c6x/genmult.sh b/gcc/config/c6x/genmult.sh index 072a87c1bf4..dd8a086f46a 100644 --- a/gcc/config/c6x/genmult.sh +++ b/gcc/config/c6x/genmult.sh @@ -2,7 +2,7 @@ # Generate c6x-mult.md from c6x-mult.md.in # The input file is passed as an argument. -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/config/c6x/genopt.sh b/gcc/config/c6x/genopt.sh index c37bd883660..406823a7b17 100644 --- a/gcc/config/c6x/genopt.sh +++ b/gcc/config/c6x/genopt.sh @@ -1,6 +1,6 @@ #!/bin/sh # Generate c6x-tables.opt from the lists in *.def. -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -22,7 +22,7 @@ cat < Contributed by Bernd Schmidt diff --git a/gcc/config/c6x/sync.md b/gcc/config/c6x/sync.md index d750c749c29..fff6c439449 100644 --- a/gcc/config/c6x/sync.md +++ b/gcc/config/c6x/sync.md @@ -1,5 +1,5 @@ ;; GCC machine description for C6X synchronization instructions. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/c6x/t-c6x b/gcc/config/c6x/t-c6x index aba3d55f190..4cde36ce87e 100644 --- a/gcc/config/c6x/t-c6x +++ b/gcc/config/c6x/t-c6x @@ -1,5 +1,5 @@ # Target Makefile Fragment for TI C6X. -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # Contributed by CodeSourcery. # # This file is part of GCC. diff --git a/gcc/config/c6x/t-c6x-elf b/gcc/config/c6x/t-c6x-elf index 9af96a93ed6..8d7276be429 100644 --- a/gcc/config/c6x/t-c6x-elf +++ b/gcc/config/c6x/t-c6x-elf @@ -1,5 +1,5 @@ # Target Makefile Fragment for TI C6X using ELF. -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # Contributed by CodeSourcery. # # This file is part of GCC. diff --git a/gcc/config/c6x/uclinux-elf.h b/gcc/config/c6x/uclinux-elf.h index 928c2b9ec06..3f3964ba76c 100644 --- a/gcc/config/c6x/uclinux-elf.h +++ b/gcc/config/c6x/uclinux-elf.h @@ -1,5 +1,5 @@ /* Definitions for TI C6X running ucLinux using ELF - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Andrew Jenner Contributed by Bernd Schmidt diff --git a/gcc/config/cr16/constraints.md b/gcc/config/cr16/constraints.md index 17b88c06cf1..9d9789bce8e 100644 --- a/gcc/config/cr16/constraints.md +++ b/gcc/config/cr16/constraints.md @@ -1,5 +1,5 @@ ;; Predicates of machine description for CR16. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by KPIT Cummins Infosystems Limited. ;; ;; This file is part of GCC. diff --git a/gcc/config/cr16/cr16-protos.h b/gcc/config/cr16/cr16-protos.h index f6663c92869..97fcd83b63a 100644 --- a/gcc/config/cr16/cr16-protos.h +++ b/gcc/config/cr16/cr16-protos.h @@ -1,5 +1,5 @@ /* Prototypes for exported functions defined in cr16.c - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by KPIT Cummins Infosystems Limited. This file is part of GCC. diff --git a/gcc/config/cr16/cr16.c b/gcc/config/cr16/cr16.c index b3972766d5b..f5a444bec48 100644 --- a/gcc/config/cr16/cr16.c +++ b/gcc/config/cr16/cr16.c @@ -1,5 +1,5 @@ /* Output routines for CR16 processor. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by KPIT Cummins Infosystems Limited. This file is part of GCC. diff --git a/gcc/config/cr16/cr16.h b/gcc/config/cr16/cr16.h index 9e16c7e35f2..c40f7940aa4 100644 --- a/gcc/config/cr16/cr16.h +++ b/gcc/config/cr16/cr16.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for CR16. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by KPIT Cummins Infosystems Limited. This file is part of GCC. diff --git a/gcc/config/cr16/cr16.md b/gcc/config/cr16/cr16.md index b3c3a466054..fb2fc9bc52a 100644 --- a/gcc/config/cr16/cr16.md +++ b/gcc/config/cr16/cr16.md @@ -1,5 +1,5 @@ ;; GCC machine description for CR16. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by KPIT Cummins Infosystems Limited. ;; This file is part of GCC. diff --git a/gcc/config/cr16/cr16.opt b/gcc/config/cr16/cr16.opt index ccf16d2678b..e4433cb5d89 100644 --- a/gcc/config/cr16/cr16.opt +++ b/gcc/config/cr16/cr16.opt @@ -1,5 +1,5 @@ ; Options for the National Semiconductor CR16 port of the compiler. -; Copyright (C) 2012-2013 Free Software Foundation, Inc. +; Copyright (C) 2012-2014 Free Software Foundation, Inc. ; Contributed by KPIT Cummins Infosystems Limited. ; ; This file is part of GCC. diff --git a/gcc/config/cr16/predicates.md b/gcc/config/cr16/predicates.md index ff5e5b42276..d998df9da74 100644 --- a/gcc/config/cr16/predicates.md +++ b/gcc/config/cr16/predicates.md @@ -1,5 +1,5 @@ ;; Predicates of machine description for CR16. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by KPIT Cummins Infosystems Limited. ;; ;; This file is part of GCC. diff --git a/gcc/config/cr16/t-cr16 b/gcc/config/cr16/t-cr16 index 8b418f4645b..835841fc922 100644 --- a/gcc/config/cr16/t-cr16 +++ b/gcc/config/cr16/t-cr16 @@ -1,5 +1,5 @@ # CR16 Target Makefile -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # Contributed by KPIT Cummins Infosystems Limited. # # This file is part of GCC. diff --git a/gcc/config/cris/constraints.md b/gcc/config/cris/constraints.md index 4083bdff537..651fbedb0a0 100644 --- a/gcc/config/cris/constraints.md +++ b/gcc/config/cris/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for CRIS. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/cris/cris-protos.h b/gcc/config/cris/cris-protos.h index e5439228f99..0fdcafe52ca 100644 --- a/gcc/config/cris/cris-protos.h +++ b/gcc/config/cris/cris-protos.h @@ -1,5 +1,5 @@ /* Definitions for GCC. Part of the machine description for CRIS. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Contributed by Axis Communications. This file is part of GCC. diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c index 5e24c3fef4e..209f127a6ca 100644 --- a/gcc/config/cris/cris.c +++ b/gcc/config/cris/cris.c @@ -1,5 +1,5 @@ /* Definitions for GCC. Part of the machine description for CRIS. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Contributed by Axis Communications. Written by Hans-Peter Nilsson. This file is part of GCC. diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h index 23ba467afb2..37b562e5d00 100644 --- a/gcc/config/cris/cris.h +++ b/gcc/config/cris/cris.h @@ -1,5 +1,5 @@ /* Definitions for GCC. Part of the machine description for CRIS. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Contributed by Axis Communications. Written by Hans-Peter Nilsson. This file is part of GCC. diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md index b3e9f0494b8..47f64512a6f 100644 --- a/gcc/config/cris/cris.md +++ b/gcc/config/cris/cris.md @@ -1,5 +1,5 @@ ;; GCC machine description for CRIS cpu cores. -;; Copyright (C) 1998-2013 Free Software Foundation, Inc. +;; Copyright (C) 1998-2014 Free Software Foundation, Inc. ;; Contributed by Axis Communications. ;; This file is part of GCC. diff --git a/gcc/config/cris/cris.opt b/gcc/config/cris/cris.opt index ad6a2789af7..d359c89481f 100644 --- a/gcc/config/cris/cris.opt +++ b/gcc/config/cris/cris.opt @@ -1,6 +1,6 @@ ; Options for the CRIS port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/cris/elf.opt b/gcc/config/cris/elf.opt index 7147f8d469a..f759d01731c 100644 --- a/gcc/config/cris/elf.opt +++ b/gcc/config/cris/elf.opt @@ -1,6 +1,6 @@ ; ELF-specific options for the CRIS port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/cris/linux.h b/gcc/config/cris/linux.h index 8d0941c65b4..af27e10897e 100644 --- a/gcc/config/cris/linux.h +++ b/gcc/config/cris/linux.h @@ -1,5 +1,5 @@ /* Definitions for GCC. Part of the machine description for CRIS. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Axis Communications. Written by Hans-Peter Nilsson. This file is part of GCC. diff --git a/gcc/config/cris/linux.opt b/gcc/config/cris/linux.opt index bef56a01e66..b5a19e9ad6b 100644 --- a/gcc/config/cris/linux.opt +++ b/gcc/config/cris/linux.opt @@ -1,6 +1,6 @@ ; GNU/Linux-specific options for the CRIS port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/cris/predicates.md b/gcc/config/cris/predicates.md index 2acd02f8ad9..0169b0b715d 100644 --- a/gcc/config/cris/predicates.md +++ b/gcc/config/cris/predicates.md @@ -1,5 +1,5 @@ ;; Operand and operator predicates for the GCC CRIS port. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; This file is part of GCC. ;; diff --git a/gcc/config/cris/sync.md b/gcc/config/cris/sync.md index a746431fd1e..7f10aa43d0d 100644 --- a/gcc/config/cris/sync.md +++ b/gcc/config/cris/sync.md @@ -1,5 +1,5 @@ ;; GCC machine description for CRIS atomic memory sequences. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/cris/t-cris b/gcc/config/cris/t-cris index 98fd36a8485..a58566525bc 100644 --- a/gcc/config/cris/t-cris +++ b/gcc/config/cris/t-cris @@ -3,7 +3,7 @@ # # The Makefile fragment to include when compiling gcc et al for CRIS. # -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/cris/t-elfmulti b/gcc/config/cris/t-elfmulti index aff60fc3ed1..1e9cf72d01a 100644 --- a/gcc/config/cris/t-elfmulti +++ b/gcc/config/cris/t-elfmulti @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/darwin-c.c b/gcc/config/darwin-c.c index ed547b27468..892ba354786 100644 --- a/gcc/config/darwin-c.c +++ b/gcc/config/darwin-c.c @@ -1,5 +1,5 @@ /* Darwin support needed only by C/C++ frontends. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Apple Computer Inc. This file is part of GCC. diff --git a/gcc/config/darwin-driver.c b/gcc/config/darwin-driver.c index 41076002308..8b6ae93911f 100644 --- a/gcc/config/darwin-driver.c +++ b/gcc/config/darwin-driver.c @@ -1,5 +1,5 @@ /* Additional functions for the GCC driver on Darwin native. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Apple Computer Inc. This file is part of GCC. diff --git a/gcc/config/darwin-f.c b/gcc/config/darwin-f.c index ea9034b946b..736df5b08b8 100644 --- a/gcc/config/darwin-f.c +++ b/gcc/config/darwin-f.c @@ -1,5 +1,5 @@ /* Darwin support needed only by Fortran frontends. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Daniel Franke. This file is part of GCC. diff --git a/gcc/config/darwin-ppc-ldouble-patch.def b/gcc/config/darwin-ppc-ldouble-patch.def index 88431f0d5a3..dc55bb674b9 100644 --- a/gcc/config/darwin-ppc-ldouble-patch.def +++ b/gcc/config/darwin-ppc-ldouble-patch.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2013 Free Software Foundation, Inc. +/* Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/darwin-protos.h b/gcc/config/darwin-protos.h index fe43ef39aeb..20974c19ece 100644 --- a/gcc/config/darwin-protos.h +++ b/gcc/config/darwin-protos.h @@ -1,5 +1,5 @@ /* Prototypes. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/darwin-sections.def b/gcc/config/darwin-sections.def index de4ef611302..23474e12522 100644 --- a/gcc/config/darwin-sections.def +++ b/gcc/config/darwin-sections.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2005-2013 Free Software Foundation, Inc. +/* Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index 4267c89dc06..63a385c49b8 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -1,5 +1,5 @@ /* Functions for generic Darwin as target machine for GNU C compiler. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. Contributed by Apple Computer Inc. This file is part of GCC. diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index 596c9ef11f0..12636409979 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -1,5 +1,5 @@ /* Target definitions for Darwin (Mac OS X) systems. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. Contributed by Apple Computer Inc. This file is part of GCC. diff --git a/gcc/config/darwin.opt b/gcc/config/darwin.opt index ba6cbe06ec0..cedfb7a5b8c 100644 --- a/gcc/config/darwin.opt +++ b/gcc/config/darwin.opt @@ -1,6 +1,6 @@ ; Processor-independent options for Darwin. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/darwin10.h b/gcc/config/darwin10.h index cd5f421a86f..9eb60dbfbc6 100644 --- a/gcc/config/darwin10.h +++ b/gcc/config/darwin10.h @@ -1,5 +1,5 @@ /* Target definitions for Darwin (Mac OS X) systems. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Jack Howarth . This file is part of GCC. diff --git a/gcc/config/darwin9.h b/gcc/config/darwin9.h index 65efb5a3f8e..675001ceef5 100644 --- a/gcc/config/darwin9.h +++ b/gcc/config/darwin9.h @@ -1,5 +1,5 @@ /* Target definitions for Darwin (Mac OS X) systems. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Apple Inc. This file is part of GCC. diff --git a/gcc/config/dbx.h b/gcc/config/dbx.h index 4ade2d523a1..1b68bcd9a93 100644 --- a/gcc/config/dbx.h +++ b/gcc/config/dbx.h @@ -1,5 +1,5 @@ /* Prefer DBX (stabs) debugging information. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/dbxcoff.h b/gcc/config/dbxcoff.h index c37b528966c..c6a62c475ab 100644 --- a/gcc/config/dbxcoff.h +++ b/gcc/config/dbxcoff.h @@ -1,5 +1,5 @@ /* Definitions needed when using stabs embedded in COFF sections. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/dbxelf.h b/gcc/config/dbxelf.h index e45efc956b8..4819cfa79c2 100644 --- a/gcc/config/dbxelf.h +++ b/gcc/config/dbxelf.h @@ -1,5 +1,5 @@ /* Definitions needed when using stabs embedded in ELF sections. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/default-c.c b/gcc/config/default-c.c index 68c4944f272..26c41f40935 100644 --- a/gcc/config/default-c.c +++ b/gcc/config/default-c.c @@ -1,5 +1,5 @@ /* Default C-family target hooks initializer. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/elfos.h b/gcc/config/elfos.h index 9606fe0f85c..1fce7011b2b 100644 --- a/gcc/config/elfos.h +++ b/gcc/config/elfos.h @@ -1,6 +1,6 @@ /* elfos.h -- operating system specific defines to be used when targeting GCC for some generic ELF system - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Based on svr4.h contributed by Ron Guilmette (rfg@netcom.com). This file is part of GCC. diff --git a/gcc/config/epiphany/constraints.md b/gcc/config/epiphany/constraints.md index d4d6049fe67..1c463e531a3 100644 --- a/gcc/config/epiphany/constraints.md +++ b/gcc/config/epiphany/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Adaptiva epiphany -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; Contributed by Embecosm on behalf of Adapteva, Inc. ;; This file is part of GCC. diff --git a/gcc/config/epiphany/epiphany-modes.def b/gcc/config/epiphany/epiphany-modes.def index fe95ee4469e..2a31d6e1c85 100644 --- a/gcc/config/epiphany/epiphany-modes.def +++ b/gcc/config/epiphany/epiphany-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, Adapteva Epiphany cpu. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Embecosm on behalf of Adapteva, Inc. This file is part of GCC. diff --git a/gcc/config/epiphany/epiphany-protos.h b/gcc/config/epiphany/epiphany-protos.h index fc2906e765c..9121e0c3c97 100644 --- a/gcc/config/epiphany/epiphany-protos.h +++ b/gcc/config/epiphany/epiphany-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, EPIPHANY cpu. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Embecosm on behalf of Adapteva, Inc. This file is part of GCC. diff --git a/gcc/config/epiphany/epiphany-sched.md b/gcc/config/epiphany/epiphany-sched.md index 1a187878d4d..d18cba9c68a 100644 --- a/gcc/config/epiphany/epiphany-sched.md +++ b/gcc/config/epiphany/epiphany-sched.md @@ -1,5 +1,5 @@ ;; DFA scheduling description for EPIPHANY -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; Contributed by Embecosm on behalf of Adapteva, Inc. ;; This file is part of GCC. diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c index 2a6ef107401..59b24107a68 100644 --- a/gcc/config/epiphany/epiphany.c +++ b/gcc/config/epiphany/epiphany.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on the EPIPHANY cpu. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Contributed by Embecosm on behalf of Adapteva, Inc. This file is part of GCC. diff --git a/gcc/config/epiphany/epiphany.h b/gcc/config/epiphany/epiphany.h index faa255574e1..cffb00c0354 100644 --- a/gcc/config/epiphany/epiphany.h +++ b/gcc/config/epiphany/epiphany.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, Argonaut EPIPHANY cpu. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Contributed by Embecosm on behalf of Adapteva, Inc. This file is part of GCC. diff --git a/gcc/config/epiphany/epiphany.md b/gcc/config/epiphany/epiphany.md index fb7d6301adf..2844eeea773 100644 --- a/gcc/config/epiphany/epiphany.md +++ b/gcc/config/epiphany/epiphany.md @@ -1,5 +1,5 @@ ;; Machine description of the Adaptiva epiphany cpu for GNU C compiler -;; Copyright (C) 1994-2013 Free Software Foundation, Inc. +;; Copyright (C) 1994-2014 Free Software Foundation, Inc. ;; Contributed by Embecosm on behalf of Adapteva, Inc. ;; This file is part of GCC. diff --git a/gcc/config/epiphany/epiphany.opt b/gcc/config/epiphany/epiphany.opt index d0655da9c27..2acff323c2c 100644 --- a/gcc/config/epiphany/epiphany.opt +++ b/gcc/config/epiphany/epiphany.opt @@ -1,6 +1,6 @@ ; Options for the Adapteva EPIPHANY port of the compiler ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; Contributed by Embecosm on behalf of Adapteva, Inc. ; ; This file is part of GCC. diff --git a/gcc/config/epiphany/epiphany_intrinsics.h b/gcc/config/epiphany/epiphany_intrinsics.h index 4a55ca5453b..3dd89b0cd35 100644 --- a/gcc/config/epiphany/epiphany_intrinsics.h +++ b/gcc/config/epiphany/epiphany_intrinsics.h @@ -1,5 +1,5 @@ /* Epiphany intrinsic functions - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Embecosm on behalf of Adapteva, Inc. This file is part of GCC. diff --git a/gcc/config/epiphany/mode-switch-use.c b/gcc/config/epiphany/mode-switch-use.c index 8e278583215..a0aa2492557 100644 --- a/gcc/config/epiphany/mode-switch-use.c +++ b/gcc/config/epiphany/mode-switch-use.c @@ -1,6 +1,6 @@ /* Insert USEs in instructions that require mode switching. This should probably be merged into mode-switching.c . - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Embecosm on behalf of Adapteva, Inc. This file is part of GCC. diff --git a/gcc/config/epiphany/predicates.md b/gcc/config/epiphany/predicates.md index b77867cc851..fb8fd88ba7e 100644 --- a/gcc/config/epiphany/predicates.md +++ b/gcc/config/epiphany/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for code generation on the EPIPHANY cpu. -;; Copyright (C) 1994-2013 Free Software Foundation, Inc. +;; Copyright (C) 1994-2014 Free Software Foundation, Inc. ;; Contributed by Embecosm on behalf of Adapteva, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/epiphany/resolve-sw-modes.c b/gcc/config/epiphany/resolve-sw-modes.c index 30f6920aba0..16849182ced 100644 --- a/gcc/config/epiphany/resolve-sw-modes.c +++ b/gcc/config/epiphany/resolve-sw-modes.c @@ -1,5 +1,5 @@ /* Mode switching cleanup pass for the EPIPHANY cpu. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Embecosm on behalf of Adapteva, Inc. This file is part of GCC. diff --git a/gcc/config/epiphany/t-epiphany b/gcc/config/epiphany/t-epiphany index 6c60b31a560..7a329dad725 100644 --- a/gcc/config/epiphany/t-epiphany +++ b/gcc/config/epiphany/t-epiphany @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # Contributed by Embecosm on behalf of Adapteva, Inc. # # This file is part of GCC. diff --git a/gcc/config/flat.h b/gcc/config/flat.h index c3e717f11d3..3af4e57e6cf 100644 --- a/gcc/config/flat.h +++ b/gcc/config/flat.h @@ -1,5 +1,5 @@ /* Defines to be used for targets that support flat executables. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/fr30/constraints.md b/gcc/config/fr30/constraints.md index 756e671a602..dc8fa77d198 100644 --- a/gcc/config/fr30/constraints.md +++ b/gcc/config/fr30/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for the FR30. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/fr30/fr30-protos.h b/gcc/config/fr30/fr30-protos.h index 73b96f3dc70..a2a7d793f3b 100644 --- a/gcc/config/fr30/fr30-protos.h +++ b/gcc/config/fr30/fr30-protos.h @@ -1,5 +1,5 @@ /* Prototypes for fr30.c functions used in the md file & elsewhere. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/fr30/fr30.c b/gcc/config/fr30/fr30.c index caa50d9e691..65084f69c1d 100644 --- a/gcc/config/fr30/fr30.c +++ b/gcc/config/fr30/fr30.c @@ -1,5 +1,5 @@ /* FR30 specific functions. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Contributed by Cygnus Solutions. This file is part of GCC. diff --git a/gcc/config/fr30/fr30.h b/gcc/config/fr30/fr30.h index 0febaadb7be..ff3115af636 100644 --- a/gcc/config/fr30/fr30.h +++ b/gcc/config/fr30/fr30.h @@ -1,7 +1,7 @@ /*{{{ Comment. */ /* Definitions of FR30 target. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Contributed by Cygnus Solutions. This file is part of GCC. diff --git a/gcc/config/fr30/fr30.md b/gcc/config/fr30/fr30.md index 01a230291ad..8bbd77c6948 100644 --- a/gcc/config/fr30/fr30.md +++ b/gcc/config/fr30/fr30.md @@ -1,5 +1,5 @@ ;; FR30 machine description. -;; Copyright (C) 1998-2013 Free Software Foundation, Inc. +;; Copyright (C) 1998-2014 Free Software Foundation, Inc. ;; Contributed by Cygnus Solutions. ;; This file is part of GCC. diff --git a/gcc/config/fr30/fr30.opt b/gcc/config/fr30/fr30.opt index cade54cc070..c60017500b2 100644 --- a/gcc/config/fr30/fr30.opt +++ b/gcc/config/fr30/fr30.opt @@ -1,6 +1,6 @@ ; Options for the FR30 port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/fr30/predicates.md b/gcc/config/fr30/predicates.md index 4c901f509c5..26f0b6b7e85 100644 --- a/gcc/config/fr30/predicates.md +++ b/gcc/config/fr30/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for FR30. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/freebsd-nthr.h b/gcc/config/freebsd-nthr.h index e578f4481bf..cfee7aa5c3e 100644 --- a/gcc/config/freebsd-nthr.h +++ b/gcc/config/freebsd-nthr.h @@ -1,5 +1,5 @@ /* FreeBSD configuration setting for FreeBSD systems. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Loren J. Rittle This file is part of GCC. diff --git a/gcc/config/freebsd-spec.h b/gcc/config/freebsd-spec.h index e46449ce050..8e770066973 100644 --- a/gcc/config/freebsd-spec.h +++ b/gcc/config/freebsd-spec.h @@ -1,5 +1,5 @@ /* Base configuration file for all FreeBSD targets. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/freebsd-stdint.h b/gcc/config/freebsd-stdint.h index 7b5787f7480..201393e2537 100644 --- a/gcc/config/freebsd-stdint.h +++ b/gcc/config/freebsd-stdint.h @@ -1,5 +1,5 @@ /* Definitions for types for FreeBSD systems. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Gerald Pfeifer . This file is part of GCC. diff --git a/gcc/config/freebsd.h b/gcc/config/freebsd.h index da66253e660..c872a6da404 100644 --- a/gcc/config/freebsd.h +++ b/gcc/config/freebsd.h @@ -1,5 +1,5 @@ /* Base configuration file for all FreeBSD targets. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/freebsd.opt b/gcc/config/freebsd.opt index 32346a9e619..1d710f331e3 100644 --- a/gcc/config/freebsd.opt +++ b/gcc/config/freebsd.opt @@ -1,6 +1,6 @@ ; FreeBSD options. -; Copyright (C) 2010-2013 Free Software Foundation, Inc. +; Copyright (C) 2010-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/frv/constraints.md b/gcc/config/frv/constraints.md index c267f01f3d9..519bb2210bb 100644 --- a/gcc/config/frv/constraints.md +++ b/gcc/config/frv/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for FRV. -;; Copyright (C) 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 2001-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/frv/frv-asm.h b/gcc/config/frv/frv-asm.h index 568474d2de2..b7a7b7cf50a 100644 --- a/gcc/config/frv/frv-asm.h +++ b/gcc/config/frv/frv-asm.h @@ -1,5 +1,5 @@ /* Assembler Support. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/frv/frv-modes.def b/gcc/config/frv/frv-modes.def index 198872f115f..d756cd8de1c 100644 --- a/gcc/config/frv/frv-modes.def +++ b/gcc/config/frv/frv-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler for FRV. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/frv/frv-opts.h b/gcc/config/frv/frv-opts.h index 406617fd1a0..37377e7d8ed 100644 --- a/gcc/config/frv/frv-opts.h +++ b/gcc/config/frv/frv-opts.h @@ -1,5 +1,5 @@ /* Frv option-handling defitions. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/frv/frv-protos.h b/gcc/config/frv/frv-protos.h index 03033e91528..d50ca64f385 100644 --- a/gcc/config/frv/frv-protos.h +++ b/gcc/config/frv/frv-protos.h @@ -1,5 +1,5 @@ /* Frv prototypes. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/frv/frv.c b/gcc/config/frv/frv.c index 8d659fe05c2..f2dadc3d9ba 100644 --- a/gcc/config/frv/frv.c +++ b/gcc/config/frv/frv.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997-2013 Free Software Foundation, Inc. +/* Copyright (C) 1997-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/frv/frv.h b/gcc/config/frv/frv.h index 1ab1919d65d..c936fd5f356 100644 --- a/gcc/config/frv/frv.h +++ b/gcc/config/frv/frv.h @@ -1,5 +1,5 @@ /* Target macros for the FRV port of GCC. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Red Hat Inc. This file is part of GCC. diff --git a/gcc/config/frv/frv.md b/gcc/config/frv/frv.md index 05bb723363b..d6268bf257a 100644 --- a/gcc/config/frv/frv.md +++ b/gcc/config/frv/frv.md @@ -1,5 +1,5 @@ ;; Frv Machine Description -;; Copyright (C) 1999-2013 Free Software Foundation, Inc. +;; Copyright (C) 1999-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat, Inc. ;; This file is part of GCC. diff --git a/gcc/config/frv/frv.opt b/gcc/config/frv/frv.opt index 0514e6c39a2..824d6ea1d64 100644 --- a/gcc/config/frv/frv.opt +++ b/gcc/config/frv/frv.opt @@ -1,6 +1,6 @@ ; Options for the FR-V port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/frv/linux.h b/gcc/config/frv/linux.h index 2c0d35c0c6b..0fc44966c1b 100644 --- a/gcc/config/frv/linux.h +++ b/gcc/config/frv/linux.h @@ -1,5 +1,5 @@ /* Target macros for the FRV Linux port of GCC. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Red Hat Inc. This file is part of GCC. diff --git a/gcc/config/frv/predicates.md b/gcc/config/frv/predicates.md index 64c7960657c..972db999187 100644 --- a/gcc/config/frv/predicates.md +++ b/gcc/config/frv/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Frv. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/frv/t-frv b/gcc/config/frv/t-frv index acbd0186cc0..d8bf8fc86da 100644 --- a/gcc/config/frv/t-frv +++ b/gcc/config/frv/t-frv @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/frv/t-linux b/gcc/config/frv/t-linux index 40671e31414..9426c9096ce 100644 --- a/gcc/config/frv/t-linux +++ b/gcc/config/frv/t-linux @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/fused-madd.opt b/gcc/config/fused-madd.opt index 085c7a76988..0c4c2af9203 100644 --- a/gcc/config/fused-madd.opt +++ b/gcc/config/fused-madd.opt @@ -1,6 +1,6 @@ ; -mfused-madd option (some targets only). ; -; Copyright (C) 2010-2013 Free Software Foundation, Inc. +; Copyright (C) 2010-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/g.opt b/gcc/config/g.opt index 80da764bc15..3bb104586bb 100644 --- a/gcc/config/g.opt +++ b/gcc/config/g.opt @@ -1,6 +1,6 @@ ; -G option (small data, some targets only). -; Copyright (C) 2003-2013 Free Software Foundation, Inc. +; Copyright (C) 2003-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/glibc-c.c b/gcc/config/glibc-c.c index 1f3aed8d4c7..e2a10d82318 100644 --- a/gcc/config/glibc-c.c +++ b/gcc/config/glibc-c.c @@ -1,5 +1,5 @@ /* C-family target hooks initializer for targets possibly using glibc. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/glibc-stdint.h b/gcc/config/glibc-stdint.h index 54bc6300e39..7fa22a98650 100644 --- a/gcc/config/glibc-stdint.h +++ b/gcc/config/glibc-stdint.h @@ -1,5 +1,5 @@ /* Definitions for types on systems using GNU libc or uClibc. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/gnu-user.h b/gcc/config/gnu-user.h index 60eb30dd127..a1955a7e7f7 100644 --- a/gcc/config/gnu-user.h +++ b/gcc/config/gnu-user.h @@ -1,7 +1,7 @@ /* Definitions for systems using, at least optionally, a GNU (glibc-based) userspace or other userspace with libc derived from glibc (e.g. uClibc) or for which similar specs are appropriate. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Eric Youngdale. Modified for stabs-in-ELF by H.J. Lu (hjl@lucon.org). diff --git a/gcc/config/gnu-user.opt b/gcc/config/gnu-user.opt index 2f217dcd843..1a9e3cb0bf9 100644 --- a/gcc/config/gnu-user.opt +++ b/gcc/config/gnu-user.opt @@ -1,6 +1,6 @@ ; Options for systems using gnu-user.h. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/gnu.h b/gcc/config/gnu.h index 263b023a33b..6ce67beb786 100644 --- a/gcc/config/gnu.h +++ b/gcc/config/gnu.h @@ -1,7 +1,7 @@ /* Configuration common to all targets running the GNU system. */ /* -Copyright (C) 1994-2013 Free Software Foundation, Inc. +Copyright (C) 1994-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/h8300/constraints.md b/gcc/config/h8300/constraints.md index 3e811d32e43..a1d295a4787 100644 --- a/gcc/config/h8300/constraints.md +++ b/gcc/config/h8300/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Renesas H8/300. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/h8300/elf.h b/gcc/config/h8300/elf.h index 7307c481426..97e844ba234 100644 --- a/gcc/config/h8300/elf.h +++ b/gcc/config/h8300/elf.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler. Renesas H8/300 version generating elf - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Steve Chamberlain (sac@cygnus.com), Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com). diff --git a/gcc/config/h8300/genmova.sh b/gcc/config/h8300/genmova.sh index e25e862c6ff..aebc371391f 100644 --- a/gcc/config/h8300/genmova.sh +++ b/gcc/config/h8300/genmova.sh @@ -2,7 +2,7 @@ # Generate mova.md, a file containing patterns that can be implemented # using the h8sx mova instruction. -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -22,7 +22,7 @@ echo ";; -*- buffer-read-only: t -*-" echo ";; Generated automatically from genmova.sh" -echo ";; Copyright (C) 2004-2013 Free Software Foundation, Inc." +echo ";; Copyright (C) 2004-2014 Free Software Foundation, Inc." echo ";;" echo ";; This file is part of GCC." echo ";;" diff --git a/gcc/config/h8300/h8300-protos.h b/gcc/config/h8300/h8300-protos.h index 0ea158cc631..1af2cc664dd 100644 --- a/gcc/config/h8300/h8300-protos.h +++ b/gcc/config/h8300/h8300-protos.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler. Renesas H8/300 version - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Steve Chamberlain (sac@cygnus.com), Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com). diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c index f0ebca30f2c..e7ed03a6628 100644 --- a/gcc/config/h8300/h8300.c +++ b/gcc/config/h8300/h8300.c @@ -1,5 +1,5 @@ /* Subroutines for insn-output.c for Renesas H8/300. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Steve Chamberlain (sac@cygnus.com), Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com). diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h index cace08d474f..f89bbebdb3b 100644 --- a/gcc/config/h8300/h8300.h +++ b/gcc/config/h8300/h8300.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler. Renesas H8/300 (generic) - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Steve Chamberlain (sac@cygnus.com), Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com). diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index 3b07f5f8fd7..e20ed35fea4 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -1,5 +1,5 @@ ;; GCC machine description for Renesas H8/300 -;; Copyright (C) 1992-2013 Free Software Foundation, Inc. +;; Copyright (C) 1992-2014 Free Software Foundation, Inc. ;; Contributed by Steve Chamberlain (sac@cygnus.com), ;; Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com). diff --git a/gcc/config/h8300/h8300.opt b/gcc/config/h8300/h8300.opt index 30b6481ef1c..d901d01f601 100644 --- a/gcc/config/h8300/h8300.opt +++ b/gcc/config/h8300/h8300.opt @@ -1,6 +1,6 @@ ; Options for the Renesas H8/300 port of the compiler ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/h8300/mova.md b/gcc/config/h8300/mova.md index 1ef3cc87157..79d37a59b9b 100644 --- a/gcc/config/h8300/mova.md +++ b/gcc/config/h8300/mova.md @@ -1,6 +1,6 @@ ;; -*- buffer-read-only: t -*- ;; Generated automatically from genmova.sh -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/h8300/predicates.md b/gcc/config/h8300/predicates.md index fccb382182f..9f4dbea8082 100644 --- a/gcc/config/h8300/predicates.md +++ b/gcc/config/h8300/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Renesas H8/300. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/h8300/rtems.h b/gcc/config/h8300/rtems.h index 49fcfff3602..f00d4af7f19 100644 --- a/gcc/config/h8300/rtems.h +++ b/gcc/config/h8300/rtems.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting a H8 - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Joel Sherrill (joel@OARcorp.com). This file is part of GCC. diff --git a/gcc/config/h8300/t-h8300 b/gcc/config/h8300/t-h8300 index ffe3f8a62b5..d8ddcb95645 100644 --- a/gcc/config/h8300/t-h8300 +++ b/gcc/config/h8300/t-h8300 @@ -1,4 +1,4 @@ -# Copyright (C) 1993-2013 Free Software Foundation, Inc. +# Copyright (C) 1993-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/host-darwin.c b/gcc/config/host-darwin.c index 7cfa52a8d99..4a19734afc0 100644 --- a/gcc/config/host-darwin.c +++ b/gcc/config/host-darwin.c @@ -1,5 +1,5 @@ /* Darwin host-specific hook definitions. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/host-darwin.h b/gcc/config/host-darwin.h index 4cddf37c2f4..0a4d6a4c1d1 100644 --- a/gcc/config/host-darwin.h +++ b/gcc/config/host-darwin.h @@ -1,5 +1,5 @@ /* Darwin host-specific hook definitions. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/host-hpux.c b/gcc/config/host-hpux.c index 9abd13a68e9..d6218b8702d 100644 --- a/gcc/config/host-hpux.c +++ b/gcc/config/host-hpux.c @@ -1,5 +1,5 @@ /* HP-UX host-specific hook definitions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/host-linux.c b/gcc/config/host-linux.c index 1f10823e007..b18c6b67c66 100644 --- a/gcc/config/host-linux.c +++ b/gcc/config/host-linux.c @@ -1,5 +1,5 @@ /* Linux host-specific hook definitions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/host-openbsd.c b/gcc/config/host-openbsd.c index e1f755ab588..01c726308a7 100644 --- a/gcc/config/host-openbsd.c +++ b/gcc/config/host-openbsd.c @@ -1,5 +1,5 @@ /* OpenBSD host-specific hook definitions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/host-solaris.c b/gcc/config/host-solaris.c index 4666c27bc93..b6afef4f7a3 100644 --- a/gcc/config/host-solaris.c +++ b/gcc/config/host-solaris.c @@ -1,5 +1,5 @@ /* Solaris host-specific hook definitions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/hpux11.opt b/gcc/config/hpux11.opt index 89efb93525a..63d6a8fd693 100644 --- a/gcc/config/hpux11.opt +++ b/gcc/config/hpux11.opt @@ -1,6 +1,6 @@ ; HP-UX 11 options. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/i386/adxintrin.h b/gcc/config/i386/adxintrin.h index 5c0ea9fea96..611890044c4 100644 --- a/gcc/config/i386/adxintrin.h +++ b/gcc/config/i386/adxintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/ammintrin.h b/gcc/config/i386/ammintrin.h index 297b98dd0d8..a89b2046d8f 100644 --- a/gcc/config/i386/ammintrin.h +++ b/gcc/config/i386/ammintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2013 Free Software Foundation, Inc. +/* Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/athlon.md b/gcc/config/i386/athlon.md index 8bbde33dc1c..b207d882feb 100644 --- a/gcc/config/i386/athlon.md +++ b/gcc/config/i386/athlon.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/atom.md b/gcc/config/i386/atom.md index 29991fda5f4..7102df12314 100644 --- a/gcc/config/i386/atom.md +++ b/gcc/config/i386/atom.md @@ -1,5 +1,5 @@ ;; Atom Scheduling -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/att.h b/gcc/config/i386/att.h index e194c5bf401..f559a83bb6a 100644 --- a/gcc/config/i386/att.h +++ b/gcc/config/i386/att.h @@ -1,5 +1,5 @@ /* Definitions for AT&T assembler syntax for the Intel 80386. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/avx2intrin.h b/gcc/config/i386/avx2intrin.h index 4030dfe2bc2..33b12e10a3a 100644 --- a/gcc/config/i386/avx2intrin.h +++ b/gcc/config/i386/avx2intrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2013 Free Software Foundation, Inc. +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/avx512cdintrin.h b/gcc/config/i386/avx512cdintrin.h index 4afd5559969..3935b773456 100644 --- a/gcc/config/i386/avx512cdintrin.h +++ b/gcc/config/i386/avx512cdintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2013 Free Software Foundation, Inc. +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/avx512erintrin.h b/gcc/config/i386/avx512erintrin.h index 87e03dfce06..f442f2bec94 100644 --- a/gcc/config/i386/avx512erintrin.h +++ b/gcc/config/i386/avx512erintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2013 Free Software Foundation, Inc. +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/avx512fintrin.h b/gcc/config/i386/avx512fintrin.h index 1917811bba0..a2ee88ea2a3 100644 --- a/gcc/config/i386/avx512fintrin.h +++ b/gcc/config/i386/avx512fintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2013 Free Software Foundation, Inc. +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/avx512pfintrin.h b/gcc/config/i386/avx512pfintrin.h index f4211a5dfc4..b8c011032c6 100644 --- a/gcc/config/i386/avx512pfintrin.h +++ b/gcc/config/i386/avx512pfintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2013 Free Software Foundation, Inc. +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/avxintrin.h b/gcc/config/i386/avxintrin.h index 7f2109a7299..f960b76d073 100644 --- a/gcc/config/i386/avxintrin.h +++ b/gcc/config/i386/avxintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2013 Free Software Foundation, Inc. +/* Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/avxmath.h b/gcc/config/i386/avxmath.h index cc9f966844b..e444993a0eb 100644 --- a/gcc/config/i386/avxmath.h +++ b/gcc/config/i386/avxmath.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2013 Free Software Foundation, Inc. +/* Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/bdver1.md b/gcc/config/i386/bdver1.md index c32787acecd..578bb3b212a 100644 --- a/gcc/config/i386/bdver1.md +++ b/gcc/config/i386/bdver1.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/bdver3.md b/gcc/config/i386/bdver3.md index 019e9291b1b..4c85ade3176 100644 --- a/gcc/config/i386/bdver3.md +++ b/gcc/config/i386/bdver3.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/biarch64.h b/gcc/config/i386/biarch64.h index 5b5e86b03b7..c2c81640117 100644 --- a/gcc/config/i386/biarch64.h +++ b/gcc/config/i386/biarch64.h @@ -1,7 +1,7 @@ /* Make configure files to produce biarch compiler defaulting to 64bit mode. This file must be included very first, while the OS specific file later to overwrite otherwise wrong defaults. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Bo Thorsen . This file is part of GCC. diff --git a/gcc/config/i386/biarchx32.h b/gcc/config/i386/biarchx32.h index 1c919753b0d..941b93b3d4c 100644 --- a/gcc/config/i386/biarchx32.h +++ b/gcc/config/i386/biarchx32.h @@ -1,7 +1,7 @@ /* Make configure files to produce biarch compiler defaulting to x32 mode. This file must be included very first, while the OS specific file later to overwrite otherwise wrong defaults. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/bmi2intrin.h b/gcc/config/i386/bmi2intrin.h index 0c6cb9616c8..ff962962e95 100644 --- a/gcc/config/i386/bmi2intrin.h +++ b/gcc/config/i386/bmi2intrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2013 Free Software Foundation, Inc. +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/bmiintrin.h b/gcc/config/i386/bmiintrin.h index 281ebaaf4f2..b86adf179cf 100644 --- a/gcc/config/i386/bmiintrin.h +++ b/gcc/config/i386/bmiintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2013 Free Software Foundation, Inc. +/* Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/bmmintrin.h b/gcc/config/i386/bmmintrin.h index 9d68cecf326..24cf26e8522 100644 --- a/gcc/config/i386/bmmintrin.h +++ b/gcc/config/i386/bmmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2013 Free Software Foundation, Inc. +/* Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/bsd.h b/gcc/config/i386/bsd.h index 0d2a2537b46..54715a85330 100644 --- a/gcc/config/i386/bsd.h +++ b/gcc/config/i386/bsd.h @@ -1,7 +1,7 @@ /* Definitions for BSD assembler syntax for Intel 386 (actually AT&T syntax for insns and operands, adapted to BSD conventions for symbol names and debugging.) - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/btver2.md b/gcc/config/i386/btver2.md index 7ba2583b713..06a97cb9531 100644 --- a/gcc/config/i386/btver2.md +++ b/gcc/config/i386/btver2.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2012 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/constraints.md b/gcc/config/i386/constraints.md index 0bc53aabcb4..0d61c87a4e9 100644 --- a/gcc/config/i386/constraints.md +++ b/gcc/config/i386/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for IA-32 and x86-64. -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/core2.md b/gcc/config/i386/core2.md index daf7b8d5599..53df9eede83 100644 --- a/gcc/config/i386/core2.md +++ b/gcc/config/i386/core2.md @@ -1,5 +1,5 @@ ;; Scheduling for Core 2 and derived processors. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/cpuid.h b/gcc/config/i386/cpuid.h index de1a463d6b7..c7a53dd7c8b 100644 --- a/gcc/config/i386/cpuid.h +++ b/gcc/config/i386/cpuid.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Free Software Foundation, Inc. + * Copyright (C) 2007-2014 Free Software Foundation, Inc. * * This file is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the diff --git a/gcc/config/i386/cross-stdarg.h b/gcc/config/i386/cross-stdarg.h index f934cf0933b..d16cef82086 100644 --- a/gcc/config/i386/cross-stdarg.h +++ b/gcc/config/i386/cross-stdarg.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2013 Free Software Foundation, Inc. +/* Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/crtdll.h b/gcc/config/i386/crtdll.h index 99518ab56fa..b18168ee74b 100644 --- a/gcc/config/i386/crtdll.h +++ b/gcc/config/i386/crtdll.h @@ -1,7 +1,7 @@ /* Operating system specific defines to be used when targeting GCC for hosting on Windows32, using GNU tools and the Windows32 API Library. This variant uses CRTDLL.DLL instead of MSVCRTDLL.DLL. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index 9cb66d646be..039edccb979 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -1,6 +1,6 @@ /* Operating system specific defines to be used when targeting GCC for hosting on Windows32, using a Unix style C library and tools. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/cygming.opt b/gcc/config/i386/cygming.opt index 01fa0b6e46d..3437123f40e 100644 --- a/gcc/config/i386/cygming.opt +++ b/gcc/config/i386/cygming.opt @@ -1,6 +1,6 @@ ; Cygwin- and MinGW-specific options. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/i386/cygwin-stdint.h b/gcc/config/i386/cygwin-stdint.h index 2dc207b5e45..3c82cc6c35a 100644 --- a/gcc/config/i386/cygwin-stdint.h +++ b/gcc/config/i386/cygwin-stdint.h @@ -1,5 +1,5 @@ /* Definitions for types on systems using Cygwin. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/cygwin-w64.h b/gcc/config/i386/cygwin-w64.h index e39ace98ea0..06a6cd98c1b 100644 --- a/gcc/config/i386/cygwin-w64.h +++ b/gcc/config/i386/cygwin-w64.h @@ -1,7 +1,7 @@ /* Operating system specific defines to be used when targeting GCC for hosting on Windows 32/64 via Cygwin runtime, using GNU tools and the Windows API Library. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/cygwin.h b/gcc/config/i386/cygwin.h index 3fe0a011b8f..f7b9a284c12 100644 --- a/gcc/config/i386/cygwin.h +++ b/gcc/config/i386/cygwin.h @@ -1,6 +1,6 @@ /* Operating system specific defines to be used when targeting GCC for hosting on Windows32, using a Unix style C library and tools. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h index 594ec999484..5c9b073b680 100644 --- a/gcc/config/i386/darwin.h +++ b/gcc/config/i386/darwin.h @@ -1,5 +1,5 @@ /* Target definitions for x86 running Darwin. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Apple Computer Inc. This file is part of GCC. diff --git a/gcc/config/i386/darwin64.h b/gcc/config/i386/darwin64.h index 2a61f5b2475..143971136f8 100644 --- a/gcc/config/i386/darwin64.h +++ b/gcc/config/i386/darwin64.h @@ -1,5 +1,5 @@ /* Target definitions for x86_64 running Darwin. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Apple Computer Inc. This file is part of GCC. diff --git a/gcc/config/i386/djgpp-stdint.h b/gcc/config/i386/djgpp-stdint.h index 3bc465f0c16..5af1771b248 100644 --- a/gcc/config/i386/djgpp-stdint.h +++ b/gcc/config/i386/djgpp-stdint.h @@ -1,5 +1,5 @@ /* Definitions for types on systems using DJGPP. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/djgpp.h b/gcc/config/i386/djgpp.h index cc420d0a6d6..6ddd833bab7 100644 --- a/gcc/config/i386/djgpp.h +++ b/gcc/config/i386/djgpp.h @@ -1,5 +1,5 @@ /* Configuration for an i386 running MS-DOS with DJGPP. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/djgpp.opt b/gcc/config/i386/djgpp.opt index 8213fc3be78..21fc54afb75 100644 --- a/gcc/config/i386/djgpp.opt +++ b/gcc/config/i386/djgpp.opt @@ -1,6 +1,6 @@ ; DJGPP-specific options. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index 985db959aca..b6eb7e71f66 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -1,5 +1,5 @@ /* Subroutines for the gcc driver. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/emmintrin.h b/gcc/config/i386/emmintrin.h index c30f05657d6..08928fbfabd 100644 --- a/gcc/config/i386/emmintrin.h +++ b/gcc/config/i386/emmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003-2013 Free Software Foundation, Inc. +/* Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/f16cintrin.h b/gcc/config/i386/f16cintrin.h index 76f35fa1eac..229f4e3bd0a 100644 --- a/gcc/config/i386/f16cintrin.h +++ b/gcc/config/i386/f16cintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2013 Free Software Foundation, Inc. +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/fma4intrin.h b/gcc/config/i386/fma4intrin.h index e615f3e7ba0..e1bdef7b571 100644 --- a/gcc/config/i386/fma4intrin.h +++ b/gcc/config/i386/fma4intrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2013 Free Software Foundation, Inc. +/* Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/fmaintrin.h b/gcc/config/i386/fmaintrin.h index 97de93fd146..bfbb75d5988 100644 --- a/gcc/config/i386/fmaintrin.h +++ b/gcc/config/i386/fmaintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2013 Free Software Foundation, Inc. +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/freebsd.h b/gcc/config/i386/freebsd.h index b5ed55bbd63..bdca1b80b27 100644 --- a/gcc/config/i386/freebsd.h +++ b/gcc/config/i386/freebsd.h @@ -1,5 +1,5 @@ /* Definitions for Intel 386 running FreeBSD with ELF format - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Eric Youngdale. Modified for stabs-in-ELF by H.J. Lu. Adapted from GNU/Linux version by John Polstra. diff --git a/gcc/config/i386/freebsd64.h b/gcc/config/i386/freebsd64.h index b032b385419..89430c43210 100644 --- a/gcc/config/i386/freebsd64.h +++ b/gcc/config/i386/freebsd64.h @@ -1,5 +1,5 @@ /* Definitions for AMD x86-64 running FreeBSD with ELF format - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by David O'Brien This file is part of GCC. diff --git a/gcc/config/i386/fxsrintrin.h b/gcc/config/i386/fxsrintrin.h index 41d4085b010..98e73ee2742 100644 --- a/gcc/config/i386/fxsrintrin.h +++ b/gcc/config/i386/fxsrintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/gas.h b/gcc/config/i386/gas.h index 66519321dcc..edefc9aad04 100644 --- a/gcc/config/i386/gas.h +++ b/gcc/config/i386/gas.h @@ -1,5 +1,5 @@ /* Definitions for Intel 386 using GAS. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/geode.md b/gcc/config/i386/geode.md index 9daee62bb9b..7ca39ae35f4 100644 --- a/gcc/config/i386/geode.md +++ b/gcc/config/i386/geode.md @@ -1,5 +1,5 @@ ;; Geode Scheduling -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/gmm_malloc.h b/gcc/config/i386/gmm_malloc.h index 77855fe3abd..516b13b9c5e 100644 --- a/gcc/config/i386/gmm_malloc.h +++ b/gcc/config/i386/gmm_malloc.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2013 Free Software Foundation, Inc. +/* Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/gnu-user-common.h b/gcc/config/i386/gnu-user-common.h index e28483dd1dd..b34528217f1 100644 --- a/gcc/config/i386/gnu-user-common.h +++ b/gcc/config/i386/gnu-user-common.h @@ -1,5 +1,5 @@ /* Common definitions for Intel 386 and AMD x86-64 systems using - GNU userspace. Copyright (C) 2012-2013 Free Software Foundation, Inc. + GNU userspace. Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Ilya Enkovich. This file is part of GCC. diff --git a/gcc/config/i386/gnu-user.h b/gcc/config/i386/gnu-user.h index c93d9757d50..e1163c9dade 100644 --- a/gcc/config/i386/gnu-user.h +++ b/gcc/config/i386/gnu-user.h @@ -1,5 +1,5 @@ /* Definitions for Intel 386 systems using GNU userspace. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Contributed by Eric Youngdale. Modified for stabs-in-ELF by H.J. Lu. diff --git a/gcc/config/i386/gnu-user64.h b/gcc/config/i386/gnu-user64.h index 952bb5b475c..8d3348368a7 100644 --- a/gcc/config/i386/gnu-user64.h +++ b/gcc/config/i386/gnu-user64.h @@ -1,5 +1,5 @@ /* Definitions for AMD x86-64 using GNU userspace. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka , based on linux.h. This file is part of GCC. diff --git a/gcc/config/i386/gnu.h b/gcc/config/i386/gnu.h index 4a91c843685..29896e9af57 100644 --- a/gcc/config/i386/gnu.h +++ b/gcc/config/i386/gnu.h @@ -1,7 +1,7 @@ /* Configuration for an i386 running GNU with ELF as the target machine. */ /* -Copyright (C) 1994-2013 Free Software Foundation, Inc. +Copyright (C) 1994-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/host-cygwin.c b/gcc/config/i386/host-cygwin.c index 7a8152a71e4..0bc04bb5e62 100644 --- a/gcc/config/i386/host-cygwin.c +++ b/gcc/config/i386/host-cygwin.c @@ -1,5 +1,5 @@ /* Cygwin host-specific hook definitions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/host-i386-darwin.c b/gcc/config/i386/host-i386-darwin.c index 44f7db1f6df..9325e8dd34a 100644 --- a/gcc/config/i386/host-i386-darwin.c +++ b/gcc/config/i386/host-i386-darwin.c @@ -1,5 +1,5 @@ /* i386-darwin host-specific hook definitions. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/host-mingw32.c b/gcc/config/i386/host-mingw32.c index 6773fad40ab..fc01ceb243e 100644 --- a/gcc/config/i386/host-mingw32.c +++ b/gcc/config/i386/host-mingw32.c @@ -1,5 +1,5 @@ /* mingw32 host-specific hook definitions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/i386-builtin-types.awk b/gcc/config/i386/i386-builtin-types.awk index 5e3b315f59e..3fc1455ece4 100644 --- a/gcc/config/i386/i386-builtin-types.awk +++ b/gcc/config/i386/i386-builtin-types.awk @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the diff --git a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c index cc6af7ea3f7..9686382af48 100644 --- a/gcc/config/i386/i386-c.c +++ b/gcc/config/i386/i386-c.c @@ -1,5 +1,5 @@ /* Subroutines used for macro/preprocessor support on the ia-32. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/i386-interix.h b/gcc/config/i386/i386-interix.h index b99f4d9b908..9f8f7c64362 100644 --- a/gcc/config/i386/i386-interix.h +++ b/gcc/config/i386/i386-interix.h @@ -1,5 +1,5 @@ /* Target definitions for GCC for Intel 80386 running Interix - Parts Copyright (C) 1991-2013 Free Software Foundation, Inc. + Parts Copyright (C) 1991-2014 Free Software Foundation, Inc. Parts: by Douglas B. Rupp (drupp@cs.washington.edu). diff --git a/gcc/config/i386/i386-modes.def b/gcc/config/i386/i386-modes.def index 57d08fb1b68..07e572058cc 100644 --- a/gcc/config/i386/i386-modes.def +++ b/gcc/config/i386/i386-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GCC for IA-32. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/i386-opts.h b/gcc/config/i386/i386-opts.h index 5fcbd6b5776..47a34dbf781 100644 --- a/gcc/config/i386/i386-opts.h +++ b/gcc/config/i386/i386-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for IA-32. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h index 73feef25144..803a130e320 100644 --- a/gcc/config/i386/i386-protos.h +++ b/gcc/config/i386/i386-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GCC for IA-32. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index be0364d4aff..637ea655d50 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on IA-32. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index efb755194e6..cdaab3684e1 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GCC for IA-32. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index c7ed099f38a..a3f0c28e4ec 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1,5 +1,5 @@ ;; GCC machine description for IA-32 and x86-64. -;; Copyright (C) 1988-2013 Free Software Foundation, Inc. +;; Copyright (C) 1988-2014 Free Software Foundation, Inc. ;; Mostly by William Schelter. ;; x86_64 support added by Jan Hubicka ;; diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt index e86a850e74d..26cd8bb7b07 100644 --- a/gcc/config/i386/i386.opt +++ b/gcc/config/i386/i386.opt @@ -1,6 +1,6 @@ ; Options for the IA-32 and AMD64 ports of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/i386/i386elf.h b/gcc/config/i386/i386elf.h index e3adf203dd1..73e119dddd3 100644 --- a/gcc/config/i386/i386elf.h +++ b/gcc/config/i386/i386elf.h @@ -1,5 +1,5 @@ /* Target definitions for GCC for Intel 80386 using ELF - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. Derived from sysv4.h written by Ron Guilmette (rfg@netcom.com). diff --git a/gcc/config/i386/ia32intrin.h b/gcc/config/i386/ia32intrin.h index 65642e46023..5e7c893fe85 100644 --- a/gcc/config/i386/ia32intrin.h +++ b/gcc/config/i386/ia32intrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2009-2013 Free Software Foundation, Inc. +/* Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/immintrin.h b/gcc/config/i386/immintrin.h index 4fdf0000006..73b48599277 100644 --- a/gcc/config/i386/immintrin.h +++ b/gcc/config/i386/immintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2013 Free Software Foundation, Inc. +/* Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/interix.opt b/gcc/config/i386/interix.opt index af0c2381bca..a8c7230a26a 100644 --- a/gcc/config/i386/interix.opt +++ b/gcc/config/i386/interix.opt @@ -1,6 +1,6 @@ ; Interix-specific options. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/i386/k6.md b/gcc/config/i386/k6.md index 226aa396d50..dadb39201fd 100644 --- a/gcc/config/i386/k6.md +++ b/gcc/config/i386/k6.md @@ -1,5 +1,5 @@ ;; AMD K6/K6-2 Scheduling -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/kfreebsd-gnu.h b/gcc/config/i386/kfreebsd-gnu.h index 4891285a5c9..e487205a747 100644 --- a/gcc/config/i386/kfreebsd-gnu.h +++ b/gcc/config/i386/kfreebsd-gnu.h @@ -1,5 +1,5 @@ /* Definitions for Intel 386 running kFreeBSD-based GNU systems with ELF format - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Robert Millan. This file is part of GCC. diff --git a/gcc/config/i386/kfreebsd-gnu64.h b/gcc/config/i386/kfreebsd-gnu64.h index c407139b152..1c75c8eb587 100644 --- a/gcc/config/i386/kfreebsd-gnu64.h +++ b/gcc/config/i386/kfreebsd-gnu64.h @@ -1,5 +1,5 @@ /* Definitions for AMD x86-64 running kFreeBSD-based GNU systems with ELF format - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Robert Millan. This file is part of GCC. diff --git a/gcc/config/i386/knetbsd-gnu.h b/gcc/config/i386/knetbsd-gnu.h index 515854bd084..23bf1292236 100644 --- a/gcc/config/i386/knetbsd-gnu.h +++ b/gcc/config/i386/knetbsd-gnu.h @@ -1,5 +1,5 @@ /* Definitions for Intel 386 running kNetBSD-based GNU systems with ELF format - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Robert Millan. This file is part of GCC. diff --git a/gcc/config/i386/kopensolaris-gnu.h b/gcc/config/i386/kopensolaris-gnu.h index 5b128f1f5f2..73ca5518a3b 100644 --- a/gcc/config/i386/kopensolaris-gnu.h +++ b/gcc/config/i386/kopensolaris-gnu.h @@ -1,5 +1,5 @@ /* Definitions for Intel 386 running kOpenSolaris-based GNU systems with ELF format - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Robert Millan. This file is part of GCC. diff --git a/gcc/config/i386/linux-common.h b/gcc/config/i386/linux-common.h index 52f0baf202e..1eaf024a6b5 100644 --- a/gcc/config/i386/linux-common.h +++ b/gcc/config/i386/linux-common.h @@ -1,5 +1,5 @@ /* Definitions for Intel 386 running Linux-based GNU systems with ELF format. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Ilya Enkovich. This file is part of GCC. diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index 3c95ee00a45..1fb1e032177 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -1,5 +1,5 @@ /* Definitions for Intel 386 running Linux-based GNU systems with ELF format. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Contributed by Eric Youngdale. Modified for stabs-in-ELF by H.J. Lu. diff --git a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h index b793e0826c9..a90171e8c54 100644 --- a/gcc/config/i386/linux64.h +++ b/gcc/config/i386/linux64.h @@ -1,5 +1,5 @@ /* Definitions for AMD x86-64 running Linux-based GNU systems with ELF format. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka , based on linux.h. This file is part of GCC. diff --git a/gcc/config/i386/lwpintrin.h b/gcc/config/i386/lwpintrin.h index 64ba7321fd9..1cd046a9965 100644 --- a/gcc/config/i386/lwpintrin.h +++ b/gcc/config/i386/lwpintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2013 Free Software Foundation, Inc. +/* Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/lynx.h b/gcc/config/i386/lynx.h index bb48d96e66f..910930e71fd 100644 --- a/gcc/config/i386/lynx.h +++ b/gcc/config/i386/lynx.h @@ -1,5 +1,5 @@ /* Definitions for LynxOS on i386. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/lzcntintrin.h b/gcc/config/i386/lzcntintrin.h index 22b9ee7999e..b680a353910 100644 --- a/gcc/config/i386/lzcntintrin.h +++ b/gcc/config/i386/lzcntintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2009-2013 Free Software Foundation, Inc. +/* Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/mingw-pthread.h b/gcc/config/i386/mingw-pthread.h index d8fe4fc6748..99753cf0381 100644 --- a/gcc/config/i386/mingw-pthread.h +++ b/gcc/config/i386/mingw-pthread.h @@ -1,6 +1,6 @@ /* Defines that pthread library shall be enabled by default for target. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/mingw-stdint.h b/gcc/config/i386/mingw-stdint.h index 3d1bed4989b..1589d96bf6e 100644 --- a/gcc/config/i386/mingw-stdint.h +++ b/gcc/config/i386/mingw-stdint.h @@ -1,5 +1,5 @@ /* Definitions for types on systems using mingw. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/mingw-w64.h b/gcc/config/i386/mingw-w64.h index 633009baee4..b7436be0484 100644 --- a/gcc/config/i386/mingw-w64.h +++ b/gcc/config/i386/mingw-w64.h @@ -1,7 +1,7 @@ /* Operating system specific defines to be used when targeting GCC for hosting on Windows 32/64 via mingw-w64 runtime, using GNU tools and the Windows API Library. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/mingw-w64.opt b/gcc/config/i386/mingw-w64.opt index a54449e372f..90e01f3628b 100644 --- a/gcc/config/i386/mingw-w64.opt +++ b/gcc/config/i386/mingw-w64.opt @@ -1,6 +1,6 @@ ; MinGW-w64-specific options. -; Copyright (C) 2009-2013 Free Software Foundation, Inc. +; Copyright (C) 2009-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/i386/mingw.opt b/gcc/config/i386/mingw.opt index 03419043d51..44fecb0cce9 100644 --- a/gcc/config/i386/mingw.opt +++ b/gcc/config/i386/mingw.opt @@ -1,6 +1,6 @@ ; MinGW-specific options. -; Copyright (C) 2008-2013 Free Software Foundation, Inc. +; Copyright (C) 2008-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h index 1ac55441725..f5638209504 100644 --- a/gcc/config/i386/mingw32.h +++ b/gcc/config/i386/mingw32.h @@ -1,6 +1,6 @@ /* Operating system specific defines to be used when targeting GCC for hosting on Windows32, using GNU tools and the Windows32 API Library. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/mm3dnow.h b/gcc/config/i386/mm3dnow.h index 093d5e77932..bf847f939fb 100644 --- a/gcc/config/i386/mm3dnow.h +++ b/gcc/config/i386/mm3dnow.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2013 Free Software Foundation, Inc. +/* Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/mmintrin.h b/gcc/config/i386/mmintrin.h index c0729709373..b351200e569 100644 --- a/gcc/config/i386/mmintrin.h +++ b/gcc/config/i386/mmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2013 Free Software Foundation, Inc. +/* Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md index cc0db3a9d06..239e5db7105 100644 --- a/gcc/config/i386/mmx.md +++ b/gcc/config/i386/mmx.md @@ -1,5 +1,5 @@ ;; GCC machine description for MMX and 3dNOW! instructions -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/msformat-c.c b/gcc/config/i386/msformat-c.c index 34381050990..304d48f2090 100644 --- a/gcc/config/i386/msformat-c.c +++ b/gcc/config/i386/msformat-c.c @@ -1,5 +1,5 @@ /* Check calls to formatted I/O functions (-Wformat). - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/netbsd-elf.h b/gcc/config/i386/netbsd-elf.h index 14e86328ba7..e575b39cbde 100644 --- a/gcc/config/i386/netbsd-elf.h +++ b/gcc/config/i386/netbsd-elf.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GCC, for i386/ELF NetBSD systems. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by matthew green This file is part of GCC. diff --git a/gcc/config/i386/netbsd64.h b/gcc/config/i386/netbsd64.h index 7882db6c4b8..f990835bd0f 100644 --- a/gcc/config/i386/netbsd64.h +++ b/gcc/config/i386/netbsd64.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GCC, for x86-64/ELF NetBSD systems. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Wasabi Systems, Inc. This file is part of GCC. diff --git a/gcc/config/i386/nmmintrin.h b/gcc/config/i386/nmmintrin.h index aefe3ef9e90..9fc71073605 100644 --- a/gcc/config/i386/nmmintrin.h +++ b/gcc/config/i386/nmmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2013 Free Software Foundation, Inc. +/* Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/nto.h b/gcc/config/i386/nto.h index e17af0185b1..2abb9875151 100644 --- a/gcc/config/i386/nto.h +++ b/gcc/config/i386/nto.h @@ -1,5 +1,5 @@ /* Definitions for Intel 386 running QNX/Neutrino. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/nto.opt b/gcc/config/i386/nto.opt index f26964b8853..007894201c6 100644 --- a/gcc/config/i386/nto.opt +++ b/gcc/config/i386/nto.opt @@ -1,6 +1,6 @@ ; QNX options. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/i386/openbsd.h b/gcc/config/i386/openbsd.h index 97debef06eb..f313d5cd1d5 100644 --- a/gcc/config/i386/openbsd.h +++ b/gcc/config/i386/openbsd.h @@ -1,5 +1,5 @@ /* Configuration for an OpenBSD i386 target. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/openbsdelf.h b/gcc/config/i386/openbsdelf.h index ab8fa549c34..46ae0b6cdad 100644 --- a/gcc/config/i386/openbsdelf.h +++ b/gcc/config/i386/openbsdelf.h @@ -1,6 +1,6 @@ /* Configuration for an OpenBSD i386 target. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/pentium.md b/gcc/config/i386/pentium.md index b9da7a2f95d..97fc55e2aa0 100644 --- a/gcc/config/i386/pentium.md +++ b/gcc/config/i386/pentium.md @@ -1,5 +1,5 @@ ;; Pentium Scheduling -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/pmm_malloc.h b/gcc/config/i386/pmm_malloc.h index d64cb38a2e8..3be2f3545d8 100644 --- a/gcc/config/i386/pmm_malloc.h +++ b/gcc/config/i386/pmm_malloc.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2013 Free Software Foundation, Inc. +/* Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/pmmintrin.h b/gcc/config/i386/pmmintrin.h index 2447d5aa31b..6a795005c8a 100644 --- a/gcc/config/i386/pmmintrin.h +++ b/gcc/config/i386/pmmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003-2013 Free Software Foundation, Inc. +/* Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/popcntintrin.h b/gcc/config/i386/popcntintrin.h index ee3a8e0d076..41845d86827 100644 --- a/gcc/config/i386/popcntintrin.h +++ b/gcc/config/i386/popcntintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2009-2013 Free Software Foundation, Inc. +/* Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/ppro.md b/gcc/config/i386/ppro.md index b53c2a7edac..25b2a546c69 100644 --- a/gcc/config/i386/ppro.md +++ b/gcc/config/i386/ppro.md @@ -1,5 +1,5 @@ ;; Scheduling for the Intel P6 family of processors -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md index b86201924c3..9e6ea250401 100644 --- a/gcc/config/i386/predicates.md +++ b/gcc/config/i386/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for IA-32 and x86-64. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/prfchwintrin.h b/gcc/config/i386/prfchwintrin.h index 73aa4cac7af..5c07c8606b5 100644 --- a/gcc/config/i386/prfchwintrin.h +++ b/gcc/config/i386/prfchwintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/rdos.h b/gcc/config/i386/rdos.h index b7242bbc445..e8370c6c63f 100644 --- a/gcc/config/i386/rdos.h +++ b/gcc/config/i386/rdos.h @@ -1,5 +1,5 @@ /* Definitions for RDOS on i386. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/rdos64.h b/gcc/config/i386/rdos64.h index 8522ad48c18..e6f089a008c 100644 --- a/gcc/config/i386/rdos64.h +++ b/gcc/config/i386/rdos64.h @@ -1,5 +1,5 @@ /* Definitions for RDOS on x86_64. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/rdseedintrin.h b/gcc/config/i386/rdseedintrin.h index 3d040ab3af6..0ab18e55296 100644 --- a/gcc/config/i386/rdseedintrin.h +++ b/gcc/config/i386/rdseedintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/rtemself.h b/gcc/config/i386/rtemself.h index 087179191cb..7c3a19ce6eb 100644 --- a/gcc/config/i386/rtemself.h +++ b/gcc/config/i386/rtemself.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting an ix86 using ELF. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Joel Sherrill (joel@OARcorp.com). This file is part of GCC. diff --git a/gcc/config/i386/rtmintrin.h b/gcc/config/i386/rtmintrin.h index eb2812fd82e..ac40d228a4c 100644 --- a/gcc/config/i386/rtmintrin.h +++ b/gcc/config/i386/rtmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/shaintrin.h b/gcc/config/i386/shaintrin.h index 7eede49df81..d8a3da3dafd 100644 --- a/gcc/config/i386/shaintrin.h +++ b/gcc/config/i386/shaintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2013 Free Software Foundation, Inc. +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/slm.md b/gcc/config/i386/slm.md index 16e9b0a73a6..e3a8328c4e2 100644 --- a/gcc/config/i386/slm.md +++ b/gcc/config/i386/slm.md @@ -1,5 +1,5 @@ ;; Slivermont(SLM) Scheduling -;; Copyright (C) 2009-2010 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/smmintrin.h b/gcc/config/i386/smmintrin.h index 20fa2ca2f94..886ace43f3b 100644 --- a/gcc/config/i386/smmintrin.h +++ b/gcc/config/i386/smmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2013 Free Software Foundation, Inc. +/* Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/sol2-bi.h b/gcc/config/i386/sol2-bi.h index 22c972b801f..66d17801f03 100644 --- a/gcc/config/i386/sol2-bi.h +++ b/gcc/config/i386/sol2-bi.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GCC, for bi-arch Solaris 2/x86. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, LLC. This file is part of GCC. diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h index 3bf86d14be7..8a21a59109d 100644 --- a/gcc/config/i386/sol2.h +++ b/gcc/config/i386/sol2.h @@ -1,5 +1,5 @@ /* Target definitions for GCC for Intel 80386 running Solaris 2 - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. Contributed by Fred Fish (fnf@cygnus.com). This file is part of GCC. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index d8451d17468..3016ef605db 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -1,5 +1,5 @@ ;; GCC machine description for SSE instructions -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/ssemath.h b/gcc/config/i386/ssemath.h index 83abfddfeb7..ec8d74a6277 100644 --- a/gcc/config/i386/ssemath.h +++ b/gcc/config/i386/ssemath.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2013 Free Software Foundation, Inc. +/* Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/stringop.def b/gcc/config/i386/stringop.def index 1a7d1e88f65..279aa1961d9 100644 --- a/gcc/config/i386/stringop.def +++ b/gcc/config/i386/stringop.def @@ -1,5 +1,5 @@ /* Definitions for stringop strategy for IA-32. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/stringop.opt b/gcc/config/i386/stringop.opt index 5c5fc906a33..bb8d2d2b782 100644 --- a/gcc/config/i386/stringop.opt +++ b/gcc/config/i386/stringop.opt @@ -1,5 +1,5 @@ /* Definitions for stringop option handling for IA-32. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md index 487b749255b..1c177ac448e 100644 --- a/gcc/config/i386/subst.md +++ b/gcc/config/i386/subst.md @@ -1,5 +1,5 @@ ;; GCC machine description for AVX512F instructions -;; Copyright (C) 2013 Free Software Foundation, Inc. +;; Copyright (C) 2013-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/sync.md b/gcc/config/i386/sync.md index 8408a2bfe43..4cd449ebf06 100644 --- a/gcc/config/i386/sync.md +++ b/gcc/config/i386/sync.md @@ -1,5 +1,5 @@ ;; GCC machine description for i386 synchronization instructions. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/i386/sysv4.h b/gcc/config/i386/sysv4.h index ff24575d32c..011b228cad9 100644 --- a/gcc/config/i386/sysv4.h +++ b/gcc/config/i386/sysv4.h @@ -1,5 +1,5 @@ /* Target definitions for GCC for Intel 80386 running System V.4 - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Written by Ron Guilmette (rfg@netcom.com). diff --git a/gcc/config/i386/t-cygming b/gcc/config/i386/t-cygming index ba076a7f49a..9544e49144d 100644 --- a/gcc/config/i386/t-cygming +++ b/gcc/config/i386/t-cygming @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/i386/t-i386 b/gcc/config/i386/t-i386 index 1a76c4152f6..5168e6b401e 100644 --- a/gcc/config/i386/t-i386 +++ b/gcc/config/i386/t-i386 @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/i386/t-interix b/gcc/config/i386/t-interix index 4d7b5987037..24f5243f583 100644 --- a/gcc/config/i386/t-interix +++ b/gcc/config/i386/t-interix @@ -1,4 +1,4 @@ -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/i386/t-linux64 b/gcc/config/i386/t-linux64 index bcea0c68ad0..5ec8907a934 100644 --- a/gcc/config/i386/t-linux64 +++ b/gcc/config/i386/t-linux64 @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/i386/t-rtems b/gcc/config/i386/t-rtems index fef4c22e9c1..e3934179ec4 100644 --- a/gcc/config/i386/t-rtems +++ b/gcc/config/i386/t-rtems @@ -1,4 +1,4 @@ -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/i386/t-sol2-64 b/gcc/config/i386/t-sol2-64 index c456da777b5..4e70f0bed27 100644 --- a/gcc/config/i386/t-sol2-64 +++ b/gcc/config/i386/t-sol2-64 @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/i386/tbmintrin.h b/gcc/config/i386/tbmintrin.h index 9235d6c713d..871f532803c 100644 --- a/gcc/config/i386/tbmintrin.h +++ b/gcc/config/i386/tbmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2013 Free Software Foundation, Inc. +/* Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/tmmintrin.h b/gcc/config/i386/tmmintrin.h index 3f63b4f8934..89556d24b21 100644 --- a/gcc/config/i386/tmmintrin.h +++ b/gcc/config/i386/tmmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/unix.h b/gcc/config/i386/unix.h index 0eeee4d6a01..d4fdf9b4baa 100644 --- a/gcc/config/i386/unix.h +++ b/gcc/config/i386/unix.h @@ -1,5 +1,5 @@ /* Definitions for Unix assembler syntax for the Intel 80386. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/vx-common.h b/gcc/config/i386/vx-common.h index 9bf7b7ce619..136c2d9af37 100644 --- a/gcc/config/i386/vx-common.h +++ b/gcc/config/i386/vx-common.h @@ -1,5 +1,5 @@ /* IA32 VxWorks and VxWorks AE target definitions. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/vxworks.h b/gcc/config/i386/vxworks.h index 6fcd5efc841..49206e01550 100644 --- a/gcc/config/i386/vxworks.h +++ b/gcc/config/i386/vxworks.h @@ -1,5 +1,5 @@ /* IA32 VxWorks target definitions for GNU compiler. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Updated by CodeSourcery, LLC. This file is part of GCC. diff --git a/gcc/config/i386/vxworksae.h b/gcc/config/i386/vxworksae.h index 820ca93247f..bb63c079c25 100644 --- a/gcc/config/i386/vxworksae.h +++ b/gcc/config/i386/vxworksae.h @@ -1,5 +1,5 @@ /* IA32 VxWorks AE target definitions for GNU compiler. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, LLC. This file is part of GCC. diff --git a/gcc/config/i386/winnt-cxx.c b/gcc/config/i386/winnt-cxx.c index d466299abed..aa75f9157ed 100644 --- a/gcc/config/i386/winnt-cxx.c +++ b/gcc/config/i386/winnt-cxx.c @@ -1,6 +1,6 @@ /* Target support for C++ classes on Windows. Contributed by Danny Smith (dannysmith@users.sourceforge.net) - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/winnt-stubs.c b/gcc/config/i386/winnt-stubs.c index 78322654fd5..30321d0f73e 100644 --- a/gcc/config/i386/winnt-stubs.c +++ b/gcc/config/i386/winnt-stubs.c @@ -1,6 +1,6 @@ /* Dummy subroutines for language-specific support on Windows. Contributed by Danny Smith (dannysmith@users.sourceforge.net) - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c index 55b38d7b4af..bcfd48a03dc 100644 --- a/gcc/config/i386/winnt.c +++ b/gcc/config/i386/winnt.c @@ -1,6 +1,6 @@ /* Subroutines for insn-output.c for Windows NT. Contributed by Douglas Rupp (drupp@cs.washington.edu) - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/wmmintrin.h b/gcc/config/i386/wmmintrin.h index defcfd82acc..2002375c6cd 100644 --- a/gcc/config/i386/wmmintrin.h +++ b/gcc/config/i386/wmmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2013 Free Software Foundation, Inc. +/* Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/x-mingw32 b/gcc/config/i386/x-mingw32 index 4d3ec48289d..333346018ce 100644 --- a/gcc/config/i386/x-mingw32 +++ b/gcc/config/i386/x-mingw32 @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/i386/x86-64.h b/gcc/config/i386/x86-64.h index 0c62723ae22..16fc6858164 100644 --- a/gcc/config/i386/x86-64.h +++ b/gcc/config/i386/x86-64.h @@ -1,5 +1,5 @@ /* OS independent definitions for AMD x86-64. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Bo Thorsen . This file is part of GCC. diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def index 88e0402462b..ec96a4b2617 100644 --- a/gcc/config/i386/x86-tune.def +++ b/gcc/config/i386/x86-tune.def @@ -1,5 +1,5 @@ /* Definitions of x86 tunable features. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/x86intrin.h b/gcc/config/i386/x86intrin.h index 46ced969a9f..80e9e6f33de 100644 --- a/gcc/config/i386/x86intrin.h +++ b/gcc/config/i386/x86intrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2013 Free Software Foundation, Inc. +/* Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/xm-cygwin.h b/gcc/config/i386/xm-cygwin.h index 259fe18e89e..d66a46df51c 100644 --- a/gcc/config/i386/xm-cygwin.h +++ b/gcc/config/i386/xm-cygwin.h @@ -1,6 +1,6 @@ /* Configuration for GCC for hosting on Windows NT. using a unix style C library. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/xm-djgpp.h b/gcc/config/i386/xm-djgpp.h index 84470510b0c..2f7989c164f 100644 --- a/gcc/config/i386/xm-djgpp.h +++ b/gcc/config/i386/xm-djgpp.h @@ -1,5 +1,5 @@ /* Configuration for GCC for Intel 80386 running DJGPP. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/xm-mingw32.h b/gcc/config/i386/xm-mingw32.h index 3d90dec7749..b6d87a42ae8 100644 --- a/gcc/config/i386/xm-mingw32.h +++ b/gcc/config/i386/xm-mingw32.h @@ -1,6 +1,6 @@ /* Configuration for GCC for hosting on Windows32. using GNU tools and the Windows32 API Library. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/xmmintrin.h b/gcc/config/i386/xmmintrin.h index 14d1e7fe2b0..0511dcfc532 100644 --- a/gcc/config/i386/xmmintrin.h +++ b/gcc/config/i386/xmmintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2013 Free Software Foundation, Inc. +/* Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/xopintrin.h b/gcc/config/i386/xopintrin.h index 49cea8ec645..cc82bc5fa24 100644 --- a/gcc/config/i386/xopintrin.h +++ b/gcc/config/i386/xopintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2013 Free Software Foundation, Inc. +/* Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/xsaveintrin.h b/gcc/config/i386/xsaveintrin.h index 31c17b1d2c5..47be25f0c91 100644 --- a/gcc/config/i386/xsaveintrin.h +++ b/gcc/config/i386/xsaveintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/xsaveoptintrin.h b/gcc/config/i386/xsaveoptintrin.h index aa9538da33e..d7534b41c15 100644 --- a/gcc/config/i386/xsaveoptintrin.h +++ b/gcc/config/i386/xsaveoptintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/i386/xtestintrin.h b/gcc/config/i386/xtestintrin.h index a6afa896b4f..ba79e5c5ee6 100644 --- a/gcc/config/i386/xtestintrin.h +++ b/gcc/config/i386/xtestintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/ia64/constraints.md b/gcc/config/ia64/constraints.md index 61e5ac95b3a..3bf56bd37e2 100644 --- a/gcc/config/ia64/constraints.md +++ b/gcc/config/ia64/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for IA-64 -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/ia64/div.md b/gcc/config/ia64/div.md index cb486bd9b48..89242142830 100644 --- a/gcc/config/ia64/div.md +++ b/gcc/config/ia64/div.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/ia64/elf.h b/gcc/config/ia64/elf.h index 8da94927088..375238786a6 100644 --- a/gcc/config/ia64/elf.h +++ b/gcc/config/ia64/elf.h @@ -1,6 +1,6 @@ /* Definitions for embedded ia64-elf target. -Copyright (C) 2000-2013 Free Software Foundation, Inc. +Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/ia64/freebsd.h b/gcc/config/ia64/freebsd.h index f188b9f400a..505ce8ee0da 100644 --- a/gcc/config/ia64/freebsd.h +++ b/gcc/config/ia64/freebsd.h @@ -1,5 +1,5 @@ /* Definitions for Intel IA-64 running FreeBSD using the ELF format - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by David E. O'Brien and BSDi. This file is part of GCC. diff --git a/gcc/config/ia64/hpux.h b/gcc/config/ia64/hpux.h index 4fc80ee37a5..0261c7096af 100644 --- a/gcc/config/ia64/hpux.h +++ b/gcc/config/ia64/hpux.h @@ -1,5 +1,5 @@ /* Definitions of target machine GNU compiler. IA-64 version. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Steve Ellcey and Reva Cuthbertson diff --git a/gcc/config/ia64/ia64-c.c b/gcc/config/ia64/ia64-c.c index 6489668b7d9..bb39fb5ad87 100644 --- a/gcc/config/ia64/ia64-c.c +++ b/gcc/config/ia64/ia64-c.c @@ -1,5 +1,5 @@ /* Definitions of C specific functions for GNU compiler. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Steve Ellcey This file is part of GCC. diff --git a/gcc/config/ia64/ia64-modes.def b/gcc/config/ia64/ia64-modes.def index 1af55e8b994..0aa29b1a411 100644 --- a/gcc/config/ia64/ia64-modes.def +++ b/gcc/config/ia64/ia64-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine GNU compiler. IA-64 version. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by James E. Wilson and David Mosberger . diff --git a/gcc/config/ia64/ia64-opts.h b/gcc/config/ia64/ia64-opts.h index 9505cb42f12..3e070341496 100644 --- a/gcc/config/ia64/ia64-opts.h +++ b/gcc/config/ia64/ia64-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for IA-64. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/ia64/ia64-protos.h b/gcc/config/ia64/ia64-protos.h index bc62f531ad2..35fee49cc26 100644 --- a/gcc/config/ia64/ia64-protos.h +++ b/gcc/config/ia64/ia64-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler for IA-64. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 99bc094132c..41adc4adc96 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by James E. Wilson and David Mosberger . diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index ae9027c82d5..dd14b8af65f 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -1,5 +1,5 @@ /* Definitions of target machine GNU compiler. IA-64 version. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by James E. Wilson and David Mosberger . diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md index bc4e8cbfd1b..5fedc921407 100644 --- a/gcc/config/ia64/ia64.md +++ b/gcc/config/ia64/ia64.md @@ -1,5 +1,5 @@ ;; IA-64 Machine description template -;; Copyright (C) 1999-2013 Free Software Foundation, Inc. +;; Copyright (C) 1999-2014 Free Software Foundation, Inc. ;; Contributed by James E. Wilson and ;; David Mosberger . diff --git a/gcc/config/ia64/ia64.opt b/gcc/config/ia64/ia64.opt index ffa19e9182b..0fd43922685 100644 --- a/gcc/config/ia64/ia64.opt +++ b/gcc/config/ia64/ia64.opt @@ -1,4 +1,4 @@ -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/ia64/itanium2.md b/gcc/config/ia64/itanium2.md index bdfbafa61d7..9649801ff4f 100644 --- a/gcc/config/ia64/itanium2.md +++ b/gcc/config/ia64/itanium2.md @@ -1,5 +1,5 @@ ;; Itanium2 DFA descriptions for insn scheduling and bundling. -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; Contributed by Vladimir Makarov . ;; ;; This file is part of GCC. diff --git a/gcc/config/ia64/linux.h b/gcc/config/ia64/linux.h index bdd62482e61..e4a3ea750c0 100644 --- a/gcc/config/ia64/linux.h +++ b/gcc/config/ia64/linux.h @@ -1,6 +1,6 @@ /* Definitions for ia64-linux target. -Copyright (C) 2000-2013 Free Software Foundation, Inc. +Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/ia64/predicates.md b/gcc/config/ia64/predicates.md index 31530be906d..989c550e7a7 100644 --- a/gcc/config/ia64/predicates.md +++ b/gcc/config/ia64/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for IA-64. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/ia64/sync.md b/gcc/config/ia64/sync.md index a28b42f43ff..fe8d7085985 100644 --- a/gcc/config/ia64/sync.md +++ b/gcc/config/ia64/sync.md @@ -1,5 +1,5 @@ ;; GCC machine description for IA-64 synchronization instructions. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/ia64/sysv4.h b/gcc/config/ia64/sysv4.h index e55551de2a0..f0afa523818 100644 --- a/gcc/config/ia64/sysv4.h +++ b/gcc/config/ia64/sysv4.h @@ -1,6 +1,6 @@ /* Override definitions in elfos.h to be correct for IA64. -Copyright (C) 2000-2013 Free Software Foundation, Inc. +Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/ia64/t-hpux b/gcc/config/ia64/t-hpux index 0e73375c378..ae36152f990 100644 --- a/gcc/config/ia64/t-hpux +++ b/gcc/config/ia64/t-hpux @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/ia64/t-ia64 b/gcc/config/ia64/t-ia64 index b009cdf2bc5..f007d3c8266 100644 --- a/gcc/config/ia64/t-ia64 +++ b/gcc/config/ia64/t-ia64 @@ -1,4 +1,4 @@ -# Copyright (C) 2000-2013 Free Software Foundation, Inc. +# Copyright (C) 2000-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/ia64/vect.md b/gcc/config/ia64/vect.md index 864487f5390..e3ce29220ee 100644 --- a/gcc/config/ia64/vect.md +++ b/gcc/config/ia64/vect.md @@ -1,5 +1,5 @@ ;; IA-64 machine description for vector operations. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/ia64/vms.h b/gcc/config/ia64/vms.h index 9e8fe61dfa4..4e38e80f992 100644 --- a/gcc/config/ia64/vms.h +++ b/gcc/config/ia64/vms.h @@ -1,5 +1,5 @@ /* Definitions of target machine GNU compiler. IA64-VMS version. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Douglas B Rupp (rupp@gnat.com). This file is part of GCC. diff --git a/gcc/config/ia64/vms.opt b/gcc/config/ia64/vms.opt index 3ef7e67af89..5f6cff61dee 100644 --- a/gcc/config/ia64/vms.opt +++ b/gcc/config/ia64/vms.opt @@ -1,6 +1,6 @@ ; IA64 VMS options. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/initfini-array.h b/gcc/config/initfini-array.h index b14870a0741..f7ae836e6d3 100644 --- a/gcc/config/initfini-array.h +++ b/gcc/config/initfini-array.h @@ -1,6 +1,6 @@ /* Definitions for ELF systems with .init_array/.fini_array section support. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/iq2000/abi b/gcc/config/iq2000/abi index 950bed3e989..e80d280ac3b 100644 --- a/gcc/config/iq2000/abi +++ b/gcc/config/iq2000/abi @@ -232,7 +232,7 @@ caller passing as a "hidden" first argument a pointer to space allocated to receive the return value. -Copyright (C) 2003-2013 Free Software Foundation, Inc. +Copyright (C) 2003-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/config/iq2000/constraints.md b/gcc/config/iq2000/constraints.md index b0348f24756..49767d3b92e 100644 --- a/gcc/config/iq2000/constraints.md +++ b/gcc/config/iq2000/constraints.md @@ -1,5 +1,5 @@ ;; Constraints for Vitesse IQ2000 processors -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/iq2000/iq2000-opts.h b/gcc/config/iq2000/iq2000-opts.h index 9c7e5b21c16..e648e8b2f65 100644 --- a/gcc/config/iq2000/iq2000-opts.h +++ b/gcc/config/iq2000/iq2000-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for Vitesse IQ2000 processors. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/iq2000/iq2000-protos.h b/gcc/config/iq2000/iq2000-protos.h index 7a599692320..6be8da9a49c 100644 --- a/gcc/config/iq2000/iq2000-protos.h +++ b/gcc/config/iq2000/iq2000-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler for iq2000. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/iq2000/iq2000.c b/gcc/config/iq2000/iq2000.c index e6d1171ca85..ed7aecbd469 100644 --- a/gcc/config/iq2000/iq2000.c +++ b/gcc/config/iq2000/iq2000.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on Vitesse IQ2000 processors - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/iq2000/iq2000.h b/gcc/config/iq2000/iq2000.h index 01adbf4d436..602898a0845 100644 --- a/gcc/config/iq2000/iq2000.h +++ b/gcc/config/iq2000/iq2000.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler. Vitesse IQ2000 processors - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/iq2000/iq2000.md b/gcc/config/iq2000/iq2000.md index 7a516c1b508..f7c7b34e13d 100644 --- a/gcc/config/iq2000/iq2000.md +++ b/gcc/config/iq2000/iq2000.md @@ -1,5 +1,5 @@ ;; iq2000.md Machine Description for Vitesse IQ2000 processors -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/iq2000/iq2000.opt b/gcc/config/iq2000/iq2000.opt index c8e936691c8..288ff5fe75a 100644 --- a/gcc/config/iq2000/iq2000.opt +++ b/gcc/config/iq2000/iq2000.opt @@ -1,6 +1,6 @@ ; Options for the Vitesse IQ2000 port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/iq2000/predicates.md b/gcc/config/iq2000/predicates.md index 1146cdf0cc2..8ee9305ebff 100644 --- a/gcc/config/iq2000/predicates.md +++ b/gcc/config/iq2000/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Vitesse IQ2000. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/kfreebsd-gnu.h b/gcc/config/kfreebsd-gnu.h index 4f07a24c20e..34657b3cb2f 100644 --- a/gcc/config/kfreebsd-gnu.h +++ b/gcc/config/kfreebsd-gnu.h @@ -1,5 +1,5 @@ /* Definitions for kFreeBSD-based GNU systems with ELF format - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Robert Millan. This file is part of GCC. diff --git a/gcc/config/knetbsd-gnu.h b/gcc/config/knetbsd-gnu.h index 75d9e116def..6fbf9d1804e 100644 --- a/gcc/config/knetbsd-gnu.h +++ b/gcc/config/knetbsd-gnu.h @@ -1,5 +1,5 @@ /* Definitions for kNetBSD-based GNU systems with ELF format - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Robert Millan. This file is part of GCC. diff --git a/gcc/config/kopensolaris-gnu.h b/gcc/config/kopensolaris-gnu.h index 1d800bb613f..f0aaad109b7 100644 --- a/gcc/config/kopensolaris-gnu.h +++ b/gcc/config/kopensolaris-gnu.h @@ -1,5 +1,5 @@ /* Definitions for kOpenSolaris-based GNU systems with ELF format - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Robert Millan. This file is part of GCC. diff --git a/gcc/config/linux-android.h b/gcc/config/linux-android.h index 2c87c846cd7..26f1a74fd31 100644 --- a/gcc/config/linux-android.h +++ b/gcc/config/linux-android.h @@ -1,5 +1,5 @@ /* Configuration file for Linux Android targets. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Doug Kwan (dougkwan@google.com) Rewritten by CodeSourcery, Inc. diff --git a/gcc/config/linux-android.opt b/gcc/config/linux-android.opt index 35ee997472a..550af3b095f 100644 --- a/gcc/config/linux-android.opt +++ b/gcc/config/linux-android.opt @@ -1,6 +1,6 @@ ; Android specific options. -; Copyright (C) 2008-2013 Free Software Foundation, Inc. +; Copyright (C) 2008-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/linux-protos.h b/gcc/config/linux-protos.h index 0a8f674d03b..80001e95b27 100644 --- a/gcc/config/linux-protos.h +++ b/gcc/config/linux-protos.h @@ -1,5 +1,5 @@ /* Prototypes. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/linux.c b/gcc/config/linux.c index 13de1a9ae77..6242e11008d 100644 --- a/gcc/config/linux.c +++ b/gcc/config/linux.c @@ -1,5 +1,5 @@ /* Functions for Linux Android as target machine for GNU C compiler. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/linux.h b/gcc/config/linux.h index fb1a8de7dfd..d38ef81e34f 100644 --- a/gcc/config/linux.h +++ b/gcc/config/linux.h @@ -2,7 +2,7 @@ MMU, using ELF at the compiler level but possibly FLT for final linked executables and shared libraries in some no-MMU cases, and possibly with a choice of libc implementations. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Eric Youngdale. Modified for stabs-in-ELF by H.J. Lu (hjl@lucon.org). diff --git a/gcc/config/linux.opt b/gcc/config/linux.opt index 27991be4c77..435bd87d1f1 100644 --- a/gcc/config/linux.opt +++ b/gcc/config/linux.opt @@ -1,6 +1,6 @@ ; Processor-independent options for GNU/Linux. ; -; Copyright (C) 2006-2013 Free Software Foundation, Inc. +; Copyright (C) 2006-2014 Free Software Foundation, Inc. ; Contributed by CodeSourcery. ; ; This file is part of GCC. diff --git a/gcc/config/lm32/constraints.md b/gcc/config/lm32/constraints.md index 1e38319c283..00b216dc16f 100644 --- a/gcc/config/lm32/constraints.md +++ b/gcc/config/lm32/constraints.md @@ -1,7 +1,7 @@ ;; Constraint definitions for Lattice Mico32 architecture. ;; Contributed by Jon Beniston ;; -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/lm32/lm32-protos.h b/gcc/config/lm32/lm32-protos.h index 311255c8a44..898d4fd745b 100644 --- a/gcc/config/lm32/lm32-protos.h +++ b/gcc/config/lm32/lm32-protos.h @@ -1,7 +1,7 @@ /* Prototypes of target machine functions, Lattice Mico32 architecture. Contributed by Jon Beniston - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/lm32/lm32.c b/gcc/config/lm32/lm32.c index 6bddc488727..ab0c7f71ca6 100644 --- a/gcc/config/lm32/lm32.c +++ b/gcc/config/lm32/lm32.c @@ -1,7 +1,7 @@ /* Subroutines used for code generation on the Lattice Mico32 architecture. Contributed by Jon Beniston - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/lm32/lm32.h b/gcc/config/lm32/lm32.h index edb96b7b0b2..e4db519478a 100644 --- a/gcc/config/lm32/lm32.h +++ b/gcc/config/lm32/lm32.h @@ -1,7 +1,7 @@ /* Definitions of target machine for GNU compiler, Lattice Mico32 architecture. Contributed by Jon Beniston - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/lm32/lm32.md b/gcc/config/lm32/lm32.md index 77ef46e3bf6..8b687cfbbe8 100644 --- a/gcc/config/lm32/lm32.md +++ b/gcc/config/lm32/lm32.md @@ -1,7 +1,7 @@ ;; Machine description of the Lattice Mico32 architecture for GNU C compiler. ;; Contributed by Jon Beniston -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/lm32/lm32.opt b/gcc/config/lm32/lm32.opt index ed753e7b07e..d943de4e6f8 100644 --- a/gcc/config/lm32/lm32.opt +++ b/gcc/config/lm32/lm32.opt @@ -1,7 +1,7 @@ ; Options for the Lattice Mico32 port of the compiler. ; Contributed by Jon Beniston ; -; Copyright (C) 2009-2013 Free Software Foundation, Inc. +; Copyright (C) 2009-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/lm32/predicates.md b/gcc/config/lm32/predicates.md index dce6ea2682b..a1a4cb06191 100644 --- a/gcc/config/lm32/predicates.md +++ b/gcc/config/lm32/predicates.md @@ -1,7 +1,7 @@ ;; Predicate definitions for Lattice Mico32 architecture. ;; Contributed by Jon Beniston ;; -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/lm32/rtems.h b/gcc/config/lm32/rtems.h index 0457f53d633..00d80fd896a 100644 --- a/gcc/config/lm32/rtems.h +++ b/gcc/config/lm32/rtems.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting a lm32 using ELF. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/lm32/uclinux-elf.h b/gcc/config/lm32/uclinux-elf.h index f2a94f19a23..59182564477 100644 --- a/gcc/config/lm32/uclinux-elf.h +++ b/gcc/config/lm32/uclinux-elf.h @@ -1,5 +1,5 @@ /* Definitions for LM32 running Linux-based GNU systems using ELF - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. Contributed by Philip Blundell This file is part of GCC. diff --git a/gcc/config/lynx.h b/gcc/config/lynx.h index da3bb87215b..3a750317c0b 100644 --- a/gcc/config/lynx.h +++ b/gcc/config/lynx.h @@ -1,5 +1,5 @@ /* Target independent definitions for LynxOS. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/lynx.opt b/gcc/config/lynx.opt index 4dc1ebce1b4..657a1ede091 100644 --- a/gcc/config/lynx.opt +++ b/gcc/config/lynx.opt @@ -1,6 +1,6 @@ ; Processor-independent options for LynxOS. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/m32c/addsub.md b/gcc/config/m32c/addsub.md index 23fd6fe718b..68cdfefd548 100644 --- a/gcc/config/m32c/addsub.md +++ b/gcc/config/m32c/addsub.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/bitops.md b/gcc/config/m32c/bitops.md index 9f11287b78b..e727e2de710 100644 --- a/gcc/config/m32c/bitops.md +++ b/gcc/config/m32c/bitops.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/blkmov.md b/gcc/config/m32c/blkmov.md index ed096ca7170..00bc761ee37 100644 --- a/gcc/config/m32c/blkmov.md +++ b/gcc/config/m32c/blkmov.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/cond.md b/gcc/config/m32c/cond.md index 1fae01d9836..5f3fd1618c1 100644 --- a/gcc/config/m32c/cond.md +++ b/gcc/config/m32c/cond.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/constraints.md b/gcc/config/m32c/constraints.md index 834e8c31ad5..7ac0bf948e3 100644 --- a/gcc/config/m32c/constraints.md +++ b/gcc/config/m32c/constraints.md @@ -1,5 +1,5 @@ ;; m32c constraints -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/m32c/jump.md b/gcc/config/m32c/jump.md index a8effe66fdb..06ea417d46d 100644 --- a/gcc/config/m32c/jump.md +++ b/gcc/config/m32c/jump.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/m32c-modes.def b/gcc/config/m32c/m32c-modes.def index ad266fbc851..8600306f5c2 100644 --- a/gcc/config/m32c/m32c-modes.def +++ b/gcc/config/m32c/m32c-modes.def @@ -1,5 +1,5 @@ /* Target-Specific Modes for R8C/M16C/M32C - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/m32c/m32c-pragma.c b/gcc/config/m32c/m32c-pragma.c index aa16a30453d..1e9c7900d54 100644 --- a/gcc/config/m32c/m32c-pragma.c +++ b/gcc/config/m32c/m32c-pragma.c @@ -1,5 +1,5 @@ /* M32C Pragma support - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/m32c/m32c-protos.h b/gcc/config/m32c/m32c-protos.h index 48a1d1c5d3a..bec47476fc3 100644 --- a/gcc/config/m32c/m32c-protos.h +++ b/gcc/config/m32c/m32c-protos.h @@ -1,5 +1,5 @@ /* Target Prototypes for R8C/M16C/M32C - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/m32c/m32c.abi b/gcc/config/m32c/m32c.abi index 2382e3b3ce2..69e6761d14e 100644 --- a/gcc/config/m32c/m32c.abi +++ b/gcc/config/m32c/m32c.abi @@ -1,5 +1,5 @@ Target Definitions for R8C/M16C/M32C - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c index a75b43fd3e6..57cfb20ee16 100644 --- a/gcc/config/m32c/m32c.c +++ b/gcc/config/m32c/m32c.c @@ -1,5 +1,5 @@ /* Target Code for R8C/M16C/M32C - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/m32c/m32c.h b/gcc/config/m32c/m32c.h index b7b5aa46924..94865ce591a 100644 --- a/gcc/config/m32c/m32c.h +++ b/gcc/config/m32c/m32c.h @@ -1,5 +1,5 @@ /* Target Definitions for R8C/M16C/M32C - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/m32c/m32c.md b/gcc/config/m32c/m32c.md index 32af1ff49bd..b3bee2a1b4f 100644 --- a/gcc/config/m32c/m32c.md +++ b/gcc/config/m32c/m32c.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/m32c.opt b/gcc/config/m32c/m32c.opt index 6417cf0e40a..762d58c5d75 100644 --- a/gcc/config/m32c/m32c.opt +++ b/gcc/config/m32c/m32c.opt @@ -1,5 +1,5 @@ ; Target Options for R8C/M16C/M32C -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; Contributed by Red Hat. ; ; This file is part of GCC. diff --git a/gcc/config/m32c/minmax.md b/gcc/config/m32c/minmax.md index 3961693039b..14788dec23c 100644 --- a/gcc/config/m32c/minmax.md +++ b/gcc/config/m32c/minmax.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/mov.md b/gcc/config/m32c/mov.md index e9bfd6194af..90689488958 100644 --- a/gcc/config/m32c/mov.md +++ b/gcc/config/m32c/mov.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/muldiv.md b/gcc/config/m32c/muldiv.md index 7111c0f72e7..2f45272cd21 100644 --- a/gcc/config/m32c/muldiv.md +++ b/gcc/config/m32c/muldiv.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/predicates.md b/gcc/config/m32c/predicates.md index 5849f9e26c2..cdee4eb7c5f 100644 --- a/gcc/config/m32c/predicates.md +++ b/gcc/config/m32c/predicates.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/prologue.md b/gcc/config/m32c/prologue.md index 2c4a7844716..0959e2ba965 100644 --- a/gcc/config/m32c/prologue.md +++ b/gcc/config/m32c/prologue.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/rtems.h b/gcc/config/m32c/rtems.h index 0b44bcda6ff..b6b4aaca523 100644 --- a/gcc/config/m32c/rtems.h +++ b/gcc/config/m32c/rtems.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting a M32C using ELF. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Joel Sherrill (joel@OARcorp.com). This file is part of GCC. diff --git a/gcc/config/m32c/shift.md b/gcc/config/m32c/shift.md index 8637a4382bb..83ad29f61e5 100644 --- a/gcc/config/m32c/shift.md +++ b/gcc/config/m32c/shift.md @@ -1,5 +1,5 @@ ;; Machine Descriptions for R8C/M16C/M32C -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/m32c/t-m32c b/gcc/config/m32c/t-m32c index 7c056126d07..36e6a6312f8 100644 --- a/gcc/config/m32c/t-m32c +++ b/gcc/config/m32c/t-m32c @@ -1,5 +1,5 @@ # Target Makefile Fragment for R8C/M16C/M32C -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # Contributed by Red Hat. # # This file is part of GCC. diff --git a/gcc/config/m32r/constraints.md b/gcc/config/m32r/constraints.md index ce612d92af7..79ff4b52109 100644 --- a/gcc/config/m32r/constraints.md +++ b/gcc/config/m32r/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Renesas M32R cpu for GNU C compiler -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/m32r/linux.h b/gcc/config/m32r/linux.h index a6dff08dfc3..698086b3f9b 100644 --- a/gcc/config/m32r/linux.h +++ b/gcc/config/m32r/linux.h @@ -1,5 +1,5 @@ /* Definitions for Renesas M32R running Linux-based GNU systems using ELF. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/m32r/little.h b/gcc/config/m32r/little.h index 63fb120d695..7a0817e09e3 100644 --- a/gcc/config/m32r/little.h +++ b/gcc/config/m32r/little.h @@ -1,5 +1,5 @@ /* Definitions for Renesas little endian M32R cpu. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/m32r/m32r-opts.h b/gcc/config/m32r/m32r-opts.h index fa702add713..db9886f085d 100644 --- a/gcc/config/m32r/m32r-opts.h +++ b/gcc/config/m32r/m32r-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for Renesas M32R cpu. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/m32r/m32r-protos.h b/gcc/config/m32r/m32r-protos.h index 9a687d37cf4..c1b613c1bd8 100644 --- a/gcc/config/m32r/m32r-protos.h +++ b/gcc/config/m32r/m32r-protos.h @@ -1,5 +1,5 @@ /* Prototypes for m32r.c functions used in the md file & elsewhere. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/m32r/m32r.c b/gcc/config/m32r/m32r.c index 6cee5d728b3..83bc3a7bf3a 100644 --- a/gcc/config/m32r/m32r.c +++ b/gcc/config/m32r/m32r.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on the Renesas M32R cpu. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/m32r/m32r.h b/gcc/config/m32r/m32r.h index 4d13cd249d3..485137929ed 100644 --- a/gcc/config/m32r/m32r.h +++ b/gcc/config/m32r/m32r.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, Renesas M32R cpu. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/m32r/m32r.md b/gcc/config/m32r/m32r.md index 57c71cbe940..47efb910d00 100644 --- a/gcc/config/m32r/m32r.md +++ b/gcc/config/m32r/m32r.md @@ -1,5 +1,5 @@ ;; Machine description of the Renesas M32R cpu for GNU C compiler -;; Copyright (C) 1996-2013 Free Software Foundation, Inc. +;; Copyright (C) 1996-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/m32r/m32r.opt b/gcc/config/m32r/m32r.opt index 886032b119f..64afd93b861 100644 --- a/gcc/config/m32r/m32r.opt +++ b/gcc/config/m32r/m32r.opt @@ -1,6 +1,6 @@ ; Options for the Renesas M32R port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/m32r/predicates.md b/gcc/config/m32r/predicates.md index 27a685fb93c..dbe11e8dbaa 100644 --- a/gcc/config/m32r/predicates.md +++ b/gcc/config/m32r/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Renesas M32R. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/m32r/rtems.h b/gcc/config/m32r/rtems.h index a62648fd263..0fc47aad52f 100644 --- a/gcc/config/m32r/rtems.h +++ b/gcc/config/m32r/rtems.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting a M32R using ELF. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Joel Sherrill (joel@OARcorp.com). This file is part of GCC. diff --git a/gcc/config/m32r/t-linux b/gcc/config/m32r/t-linux index 9cd618a1923..3e1519997f6 100644 --- a/gcc/config/m32r/t-linux +++ b/gcc/config/m32r/t-linux @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/m32r/t-m32r b/gcc/config/m32r/t-m32r index 06bffd6a120..dc016a8d3fd 100644 --- a/gcc/config/m32r/t-m32r +++ b/gcc/config/m32r/t-m32r @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/m68k/cf.md b/gcc/config/m68k/cf.md index 61d7c32ff40..7c4e3513f75 100644 --- a/gcc/config/m68k/cf.md +++ b/gcc/config/m68k/cf.md @@ -1,5 +1,5 @@ ;; ColdFire V1, V2, V3 and V4/V4e DFA description. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; Contributed by CodeSourcery Inc., www.codesourcery.com ;; ;; This file is part of GCC. diff --git a/gcc/config/m68k/constraints.md b/gcc/config/m68k/constraints.md index 233a590829a..8c2acb0c2c2 100644 --- a/gcc/config/m68k/constraints.md +++ b/gcc/config/m68k/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for m68k -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/m68k/genopt.sh b/gcc/config/m68k/genopt.sh index da042b85af7..78ffc9655b0 100755 --- a/gcc/config/m68k/genopt.sh +++ b/gcc/config/m68k/genopt.sh @@ -1,6 +1,6 @@ #!/bin/sh # Generate m68k-tables.opt from the lists in *.def. -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -23,7 +23,7 @@ cat <, , diff --git a/gcc/config/m68k/openbsd.h b/gcc/config/m68k/openbsd.h index dd6e9842f7a..743d742c0e7 100644 --- a/gcc/config/m68k/openbsd.h +++ b/gcc/config/m68k/openbsd.h @@ -1,5 +1,5 @@ /* Configuration file for an m68k OpenBSD target. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/m68k/predicates.md b/gcc/config/m68k/predicates.md index 6f56002c29b..8d870883630 100644 --- a/gcc/config/m68k/predicates.md +++ b/gcc/config/m68k/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Motorola 68000. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/m68k/print-sysroot-suffix.sh b/gcc/config/m68k/print-sysroot-suffix.sh index f2707f4e23f..7fa9fc99276 100644 --- a/gcc/config/m68k/print-sysroot-suffix.sh +++ b/gcc/config/m68k/print-sysroot-suffix.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # This file is part of GCC. # GCC is free software; you can redistribute it and/or modify diff --git a/gcc/config/m68k/rtemself.h b/gcc/config/m68k/rtemself.h index 44958a1056e..e673d4af164 100644 --- a/gcc/config/m68k/rtemself.h +++ b/gcc/config/m68k/rtemself.h @@ -1,6 +1,6 @@ /* Definitions for rtems targeting a Motorola m68k using elf. Copyright (C) 1999, 2000, 2002 National Research Council of Canada. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Charles-Antoine Gauthier (charles.gauthier@nrc.ca). This file is part of GCC. diff --git a/gcc/config/m68k/sync.md b/gcc/config/m68k/sync.md index 0b7b56bcd89..7f2271aead1 100644 --- a/gcc/config/m68k/sync.md +++ b/gcc/config/m68k/sync.md @@ -1,5 +1,5 @@ ;; GCC machine description for m68k synchronization instructions. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/m68k/t-linux b/gcc/config/m68k/t-linux index 69abb915753..eed9d15c035 100644 --- a/gcc/config/m68k/t-linux +++ b/gcc/config/m68k/t-linux @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/m68k/t-mlibs b/gcc/config/m68k/t-mlibs index 1778d2d556b..69840893a14 100644 --- a/gcc/config/m68k/t-mlibs +++ b/gcc/config/m68k/t-mlibs @@ -1,6 +1,6 @@ # multilibs -*- mode:Makefile -*- # -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/m68k/t-uclinux b/gcc/config/m68k/t-uclinux index 920f0682449..5102d7d8b0d 100644 --- a/gcc/config/m68k/t-uclinux +++ b/gcc/config/m68k/t-uclinux @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/m68k/uclinux.h b/gcc/config/m68k/uclinux.h index 8d743126547..dc8506b7529 100644 --- a/gcc/config/m68k/uclinux.h +++ b/gcc/config/m68k/uclinux.h @@ -2,7 +2,7 @@ using ELF objects with special linker post-processing to produce FLAT executables. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/m68k/uclinux.opt b/gcc/config/m68k/uclinux.opt index 6b916a45842..d648be10976 100644 --- a/gcc/config/m68k/uclinux.opt +++ b/gcc/config/m68k/uclinux.opt @@ -1,6 +1,6 @@ ; m68k/ColdFire uClinux options. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/mcore/constraints.md b/gcc/config/mcore/constraints.md index aefe113cb27..dce46e9741d 100644 --- a/gcc/config/mcore/constraints.md +++ b/gcc/config/mcore/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for the Motorola MCore -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/mcore/mcore-elf.h b/gcc/config/mcore/mcore-elf.h index af61143e34e..bf48d64516e 100644 --- a/gcc/config/mcore/mcore-elf.h +++ b/gcc/config/mcore/mcore-elf.h @@ -1,5 +1,5 @@ /* Definitions of MCore target. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Contributed by Cygnus Solutions. This file is part of GCC. diff --git a/gcc/config/mcore/mcore-protos.h b/gcc/config/mcore/mcore-protos.h index ac8fd94fe7a..c22ffce87d1 100644 --- a/gcc/config/mcore/mcore-protos.h +++ b/gcc/config/mcore/mcore-protos.h @@ -1,5 +1,5 @@ /* Prototypes for exported functions defined in mcore.c - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Nick Clifton (nickc@redhat.com) This file is part of GCC. diff --git a/gcc/config/mcore/mcore.c b/gcc/config/mcore/mcore.c index 6bd60702fa2..b2ac47e03fe 100644 --- a/gcc/config/mcore/mcore.c +++ b/gcc/config/mcore/mcore.c @@ -1,5 +1,5 @@ /* Output routines for Motorola MCore processor - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/mcore/mcore.h b/gcc/config/mcore/mcore.h index ae21800fcf5..4f12febd79c 100644 --- a/gcc/config/mcore/mcore.h +++ b/gcc/config/mcore/mcore.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for Motorola M*CORE Processor. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/mcore/mcore.md b/gcc/config/mcore/mcore.md index 9ac68c40644..a65747d38b9 100644 --- a/gcc/config/mcore/mcore.md +++ b/gcc/config/mcore/mcore.md @@ -1,5 +1,5 @@ ;; Machine description the Motorola MCore -;; Copyright (C) 1993-2013 Free Software Foundation, Inc. +;; Copyright (C) 1993-2014 Free Software Foundation, Inc. ;; Contributed by Motorola. ;; This file is part of GCC. diff --git a/gcc/config/mcore/mcore.opt b/gcc/config/mcore/mcore.opt index 2d0be6cdc29..47f601e31cc 100644 --- a/gcc/config/mcore/mcore.opt +++ b/gcc/config/mcore/mcore.opt @@ -1,6 +1,6 @@ ; Options for the Motorola MCore port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/mcore/predicates.md b/gcc/config/mcore/predicates.md index 8e769be781a..95a1f1f24b5 100644 --- a/gcc/config/mcore/predicates.md +++ b/gcc/config/mcore/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Motorola MCore. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mcore/t-mcore b/gcc/config/mcore/t-mcore index e5f37ee741b..eb12d2e497e 100644 --- a/gcc/config/mcore/t-mcore +++ b/gcc/config/mcore/t-mcore @@ -1,4 +1,4 @@ -# Copyright (C) 2000-2013 Free Software Foundation, Inc. +# Copyright (C) 2000-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/mep/constraints.md b/gcc/config/mep/constraints.md index 8c5906f7880..391ede9610f 100644 --- a/gcc/config/mep/constraints.md +++ b/gcc/config/mep/constraints.md @@ -1,5 +1,5 @@ ;; Toshiba Media Processor Machine constraints -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mep/mep-c5.cpu b/gcc/config/mep/mep-c5.cpu index c1232ef1fa1..610afa94f67 100644 --- a/gcc/config/mep/mep-c5.cpu +++ b/gcc/config/mep/mep-c5.cpu @@ -1,5 +1,5 @@ ; Toshiba MeP C5 Core description. -*- scheme -*- -; Copyright (C) 2009-2013 Free Software Foundation, Inc. +; Copyright (C) 2009-2014 Free Software Foundation, Inc. ; Contributed by Red Hat, Inc. ; ; This file is part of GCC. diff --git a/gcc/config/mep/mep-core.cpu b/gcc/config/mep/mep-core.cpu index 21bb957824c..ea66cc985e3 100644 --- a/gcc/config/mep/mep-core.cpu +++ b/gcc/config/mep/mep-core.cpu @@ -1,5 +1,5 @@ ; Toshiba MeP Media Engine architecture description. -*- Scheme -*- -; Copyright (C) 2001-2013 Free Software Foundation, Inc. +; Copyright (C) 2001-2014 Free Software Foundation, Inc. ; Contributed by Red Hat, Inc. ; ; This file is part of GCC. diff --git a/gcc/config/mep/mep-default.cpu b/gcc/config/mep/mep-default.cpu index 0660ffc185b..d472d0d32bf 100644 --- a/gcc/config/mep/mep-default.cpu +++ b/gcc/config/mep/mep-default.cpu @@ -1,5 +1,5 @@ ; Toshiba MeP Media Engine architecture description. -*- Scheme -*- -; Copyright (C) 2001-2013 Free Software Foundation, Inc. +; Copyright (C) 2001-2014 Free Software Foundation, Inc. ; Contributed by Red Hat, Inc. ; ; This file is part of GCC. diff --git a/gcc/config/mep/mep-ext-cop.cpu b/gcc/config/mep/mep-ext-cop.cpu index 91b698da749..39b28056b48 100644 --- a/gcc/config/mep/mep-ext-cop.cpu +++ b/gcc/config/mep/mep-ext-cop.cpu @@ -1,5 +1,5 @@ ; Toshiba MeP IVC2 Coprocessor description. -*- scheme -*- -; Copyright (C) 2003-2013 Free Software Foundation, Inc. +; Copyright (C) 2003-2014 Free Software Foundation, Inc. ; Contributed by Red Hat, Inc. ; ; This file is part of GCC. diff --git a/gcc/config/mep/mep-ivc2.cpu b/gcc/config/mep/mep-ivc2.cpu index 2bbef7d86dd..dc895a369b0 100644 --- a/gcc/config/mep/mep-ivc2.cpu +++ b/gcc/config/mep/mep-ivc2.cpu @@ -1,5 +1,5 @@ ; Toshiba MeP IVC2 Coprocessor description. -*- scheme -*- -; Copyright (C) 2001-2013 Free Software Foundation, Inc. +; Copyright (C) 2001-2014 Free Software Foundation, Inc. ; Contributed by Red Hat, Inc. ; ; This file is part of GCC. diff --git a/gcc/config/mep/mep-pragma.c b/gcc/config/mep/mep-pragma.c index 45a4b4496a4..632e92da194 100644 --- a/gcc/config/mep/mep-pragma.c +++ b/gcc/config/mep/mep-pragma.c @@ -1,5 +1,5 @@ /* Definitions of Toshiba Media Processor - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/mep/mep-protos.h b/gcc/config/mep/mep-protos.h index ec37c1ad8bb..c4b74e54982 100644 --- a/gcc/config/mep/mep-protos.h +++ b/gcc/config/mep/mep-protos.h @@ -1,5 +1,5 @@ /* Prototypes for exported functions defined in mep.c - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Red Hat Inc (dj@redhat.com) This file is part of GCC. diff --git a/gcc/config/mep/mep.c b/gcc/config/mep/mep.c index 22a093e6ab7..858136b988c 100644 --- a/gcc/config/mep/mep.c +++ b/gcc/config/mep/mep.c @@ -1,5 +1,5 @@ /* Definitions for Toshiba Media Processor - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/mep/mep.cpu b/gcc/config/mep/mep.cpu index 0ce3f78325d..ecaacb4a76d 100644 --- a/gcc/config/mep/mep.cpu +++ b/gcc/config/mep/mep.cpu @@ -1,5 +1,5 @@ ; Toshiba MeP Media Engine description. -*- Scheme -*- -; Copyright (C) 2009-2013 Free Software Foundation, Inc. +; Copyright (C) 2009-2014 Free Software Foundation, Inc. ; Contributed by Red Hat, Inc. ; ; This file is part of GCC. diff --git a/gcc/config/mep/mep.h b/gcc/config/mep/mep.h index 023d73c900e..d1360b6261b 100644 --- a/gcc/config/mep/mep.h +++ b/gcc/config/mep/mep.h @@ -1,5 +1,5 @@ /* Definitions for Toshiba Media Processor - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/mep/mep.md b/gcc/config/mep/mep.md index 42542eab8bd..b6d80acd28d 100644 --- a/gcc/config/mep/mep.md +++ b/gcc/config/mep/mep.md @@ -1,5 +1,5 @@ ;; Toshiba Media Processor Machine description template -;; Copyright (C) 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 2001-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat Inc ;; ;; This file is part of GCC. diff --git a/gcc/config/mep/mep.opt b/gcc/config/mep/mep.opt index 281474ef8ba..2b26ddc01ed 100644 --- a/gcc/config/mep/mep.opt +++ b/gcc/config/mep/mep.opt @@ -1,5 +1,5 @@ ; Target specific command line options for the MEP port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; Contributed by Red Hat Inc. ; ; GCC is free software; you can redistribute it and/or modify it under diff --git a/gcc/config/mep/predicates.md b/gcc/config/mep/predicates.md index 8cecc18241c..0e13117e0f0 100644 --- a/gcc/config/mep/predicates.md +++ b/gcc/config/mep/predicates.md @@ -1,5 +1,5 @@ ;; Toshiba Media Processor Machine predicates -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat Inc. ;; This file is part of GCC. diff --git a/gcc/config/mep/t-mep b/gcc/config/mep/t-mep index b877b950dea..82ccabd739e 100644 --- a/gcc/config/mep/t-mep +++ b/gcc/config/mep/t-mep @@ -1,6 +1,6 @@ # -*- makefile -*- # GCC makefile fragment for MeP -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # Contributed by Red Hat Inc # # This file is part of GCC. diff --git a/gcc/config/microblaze/constraints.md b/gcc/config/microblaze/constraints.md index c9c164962cd..41ca4694e2a 100644 --- a/gcc/config/microblaze/constraints.md +++ b/gcc/config/microblaze/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Xilinx MicroBlaze processors. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Michael Eager . diff --git a/gcc/config/microblaze/linux.h b/gcc/config/microblaze/linux.h index a7b7a1adcfa..48038d560a9 100644 --- a/gcc/config/microblaze/linux.h +++ b/gcc/config/microblaze/linux.h @@ -1,5 +1,5 @@ /* Definitions for MicroBlaze running Linux. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/microblaze/microblaze-c.c b/gcc/config/microblaze/microblaze-c.c index a1a20b74346..339ecac44ed 100644 --- a/gcc/config/microblaze/microblaze-c.c +++ b/gcc/config/microblaze/microblaze-c.c @@ -1,5 +1,5 @@ /* Subroutines used for the C front end for Xilinx MicroBlaze. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Michael Eager . diff --git a/gcc/config/microblaze/microblaze-protos.h b/gcc/config/microblaze/microblaze-protos.h index 34be76ffa63..b03e9e126c0 100644 --- a/gcc/config/microblaze/microblaze-protos.h +++ b/gcc/config/microblaze/microblaze-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for Xilinx MicroBlaze. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c index 93dede4d189..45da3c87ee4 100644 --- a/gcc/config/microblaze/microblaze.c +++ b/gcc/config/microblaze/microblaze.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on Xilinx MicroBlaze. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Michael Eager . diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h index dcca4ac9f5f..88c0662da80 100644 --- a/gcc/config/microblaze/microblaze.h +++ b/gcc/config/microblaze/microblaze.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler for Xilinx MicroBlaze. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Michael Eager . diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md index 8a526f1d2f8..796d4c65b3c 100644 --- a/gcc/config/microblaze/microblaze.md +++ b/gcc/config/microblaze/microblaze.md @@ -1,5 +1,5 @@ ;; microblaze.md -- Machine description for Xilinx MicroBlaze processors. -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by Michael Eager . diff --git a/gcc/config/microblaze/microblaze.opt b/gcc/config/microblaze/microblaze.opt index a659166372a..ae07dced3ab 100644 --- a/gcc/config/microblaze/microblaze.opt +++ b/gcc/config/microblaze/microblaze.opt @@ -1,6 +1,6 @@ ; Options for the MicroBlaze port of the compiler ; -; Copyright (C) 2009-2013 Free Software Foundation, Inc. +; Copyright (C) 2009-2014 Free Software Foundation, Inc. ; ; Contributed by Michael Eager . ; diff --git a/gcc/config/microblaze/predicates.md b/gcc/config/microblaze/predicates.md index 5fd1bd40372..83e8e79ac46 100644 --- a/gcc/config/microblaze/predicates.md +++ b/gcc/config/microblaze/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Xilinx MicroBlaze -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; ;; Contributed by Michael Eager . ;; diff --git a/gcc/config/microblaze/rtems.h b/gcc/config/microblaze/rtems.h index 932b3445ece..4d8a29eaf9b 100644 --- a/gcc/config/microblaze/rtems.h +++ b/gcc/config/microblaze/rtems.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting a microblaze using ELF. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/microblaze/sync.md b/gcc/config/microblaze/sync.md index d880422f818..df21af9252e 100644 --- a/gcc/config/microblaze/sync.md +++ b/gcc/config/microblaze/sync.md @@ -1,5 +1,5 @@ ;; Machine description for Xilinx MicroBlaze synchronization instructions. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mips/10000.md b/gcc/config/mips/10000.md index 3919e88f2d3..74dd3eca039 100644 --- a/gcc/config/mips/10000.md +++ b/gcc/config/mips/10000.md @@ -1,5 +1,5 @@ ;; DFA-based pipeline description for the VR1x000. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mips/20kc.md b/gcc/config/mips/20kc.md index 005c3127704..c0c3feb3592 100644 --- a/gcc/config/mips/20kc.md +++ b/gcc/config/mips/20kc.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mips/24k.md b/gcc/config/mips/24k.md index 595a4987382..9ed83dd9648 100644 --- a/gcc/config/mips/24k.md +++ b/gcc/config/mips/24k.md @@ -8,7 +8,7 @@ ;; References: ;; "MIPS32 24K Processor Core Family Software User's Manual, Rev 3.04." ;; -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mips/3000.md b/gcc/config/mips/3000.md index 914140979b4..2d425038511 100644 --- a/gcc/config/mips/3000.md +++ b/gcc/config/mips/3000.md @@ -1,5 +1,5 @@ ;; R3000 and TX39 pipeline description. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mips/4000.md b/gcc/config/mips/4000.md index 71ee28d1a85..1851d831b64 100644 --- a/gcc/config/mips/4000.md +++ b/gcc/config/mips/4000.md @@ -1,5 +1,5 @@ ;; R4000 pipeline description. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mips/4100.md b/gcc/config/mips/4100.md index 964ad97237b..c816ef086be 100644 --- a/gcc/config/mips/4100.md +++ b/gcc/config/mips/4100.md @@ -1,5 +1,5 @@ ;; VR4100 and VR4120 pipeline description. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mips/4130.md b/gcc/config/mips/4130.md index 39b621b06a0..14197acf5bf 100644 --- a/gcc/config/mips/4130.md +++ b/gcc/config/mips/4130.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mips/4300.md b/gcc/config/mips/4300.md index 9760941ddf7..04a25c360fa 100644 --- a/gcc/config/mips/4300.md +++ b/gcc/config/mips/4300.md @@ -1,5 +1,5 @@ ;; VR4300 pipeline description. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mips/4600.md b/gcc/config/mips/4600.md index 675da6964be..29ec0eacd4b 100644 --- a/gcc/config/mips/4600.md +++ b/gcc/config/mips/4600.md @@ -1,5 +1,5 @@ ;; R4600, R4650, and R4700 pipeline description. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mips/4k.md b/gcc/config/mips/4k.md index ec533af3f73..9d4304b1807 100644 --- a/gcc/config/mips/4k.md +++ b/gcc/config/mips/4k.md @@ -10,7 +10,7 @@ ;; 4km - pipelined multiplier and block address translator (BAT) ;; 4kp - non-pipelined multiplier and block address translator (BAT) ;; -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mips/5000.md b/gcc/config/mips/5000.md index 05234356573..611749620f3 100644 --- a/gcc/config/mips/5000.md +++ b/gcc/config/mips/5000.md @@ -1,5 +1,5 @@ ;; VR5000 pipeline description. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mips/5400.md b/gcc/config/mips/5400.md index 61b8925bec8..f54bacef2ee 100644 --- a/gcc/config/mips/5400.md +++ b/gcc/config/mips/5400.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mips/5500.md b/gcc/config/mips/5500.md index 1875eea4ca6..23cab21a50c 100644 --- a/gcc/config/mips/5500.md +++ b/gcc/config/mips/5500.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mips/5k.md b/gcc/config/mips/5k.md index 0b7ec082629..397c74c93a5 100644 --- a/gcc/config/mips/5k.md +++ b/gcc/config/mips/5k.md @@ -10,7 +10,7 @@ ;; 5kf - Separate floating point pipe which can dual-issue with the ;; integer pipe. ;; -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mips/6000.md b/gcc/config/mips/6000.md index 59986fd8e2e..32bc31601a9 100644 --- a/gcc/config/mips/6000.md +++ b/gcc/config/mips/6000.md @@ -1,5 +1,5 @@ ;; R6000 pipeline description. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mips/7000.md b/gcc/config/mips/7000.md index e3f5cecdfa8..6f020c58ade 100644 --- a/gcc/config/mips/7000.md +++ b/gcc/config/mips/7000.md @@ -1,5 +1,5 @@ ;; DFA-based pipeline description for the RM7000. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mips/74k.md b/gcc/config/mips/74k.md index 4a455a57b6f..e07c190dbfc 100644 --- a/gcc/config/mips/74k.md +++ b/gcc/config/mips/74k.md @@ -5,7 +5,7 @@ ;; "MIPS32 74K Microarchitecure Specification Rev. 01.02 Jun 15, 2006" ;; "MIPS32 74Kf Processor Core Datasheet Jun 2, 2006" ;; -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mips/9000.md b/gcc/config/mips/9000.md index cdaf8f2062b..efc646f5a3f 100644 --- a/gcc/config/mips/9000.md +++ b/gcc/config/mips/9000.md @@ -1,5 +1,5 @@ ;; DFA-based pipeline description for the RM9000. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mips/constraints.md b/gcc/config/mips/constraints.md index 1fe6119d075..196b3e1bb02 100644 --- a/gcc/config/mips/constraints.md +++ b/gcc/config/mips/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for MIPS. -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mips/driver-native.c b/gcc/config/mips/driver-native.c index 8b7ed5b5530..3f1a8d0151d 100644 --- a/gcc/config/mips/driver-native.c +++ b/gcc/config/mips/driver-native.c @@ -1,5 +1,5 @@ /* Subroutines for the gcc driver. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/mips/elf.h b/gcc/config/mips/elf.h index e2669cb8a9d..95f107d5e27 100644 --- a/gcc/config/mips/elf.h +++ b/gcc/config/mips/elf.h @@ -1,5 +1,5 @@ /* Target macros for mips*-elf targets. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/mips/elfoabi.h b/gcc/config/mips/elfoabi.h index 704c3e8265b..d88a79c0b7d 100644 --- a/gcc/config/mips/elfoabi.h +++ b/gcc/config/mips/elfoabi.h @@ -1,6 +1,6 @@ /* Target macros for mips*-elf targets that selected between o32 and o64 based on the target architecture. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/mips/elforion.h b/gcc/config/mips/elforion.h index 0f6bd30ed2e..4ba39af6e66 100644 --- a/gcc/config/mips/elforion.h +++ b/gcc/config/mips/elforion.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler. MIPS ORION version. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/mips/generic.md b/gcc/config/mips/generic.md index 6051630c5b0..b5e2840e2e6 100644 --- a/gcc/config/mips/generic.md +++ b/gcc/config/mips/generic.md @@ -1,5 +1,5 @@ ;; Generic DFA-based pipeline description for MIPS targets -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/mips/genopt.sh b/gcc/config/mips/genopt.sh index aacdad5faa1..457d5bb8249 100755 --- a/gcc/config/mips/genopt.sh +++ b/gcc/config/mips/genopt.sh @@ -1,6 +1,6 @@ #!/bin/sh # Generate mips-tables.opt from the list of CPUs in mips-cpus.def. -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -22,7 +22,7 @@ cat < This file is part of GCC. diff --git a/gcc/config/mn10300/mn10300-modes.def b/gcc/config/mn10300/mn10300-modes.def index 2337b23d560..2ddd04e7d2b 100644 --- a/gcc/config/mn10300/mn10300-modes.def +++ b/gcc/config/mn10300/mn10300-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for MN10300. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Red Hat Inc. This file is part of GCC. diff --git a/gcc/config/mn10300/mn10300-opts.h b/gcc/config/mn10300/mn10300-opts.h index 95c2de38bc7..7cc53f1aa14 100644 --- a/gcc/config/mn10300/mn10300-opts.h +++ b/gcc/config/mn10300/mn10300-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for Matsushita MN10300 series. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/mn10300/mn10300-protos.h b/gcc/config/mn10300/mn10300-protos.h index 9044b73b871..d03a3c2257e 100644 --- a/gcc/config/mn10300/mn10300-protos.h +++ b/gcc/config/mn10300/mn10300-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler. Matsushita MN10300 series - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Jeff Law (law@cygnus.com). This file is part of GCC. diff --git a/gcc/config/mn10300/mn10300.c b/gcc/config/mn10300/mn10300.c index c23f7c7c792..68be04c9cc8 100644 --- a/gcc/config/mn10300/mn10300.c +++ b/gcc/config/mn10300/mn10300.c @@ -1,5 +1,5 @@ /* Subroutines for insn-output.c for Matsushita MN10300 series - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Jeff Law (law@cygnus.com). This file is part of GCC. diff --git a/gcc/config/mn10300/mn10300.h b/gcc/config/mn10300/mn10300.h index 626ad87159f..1d911045f4a 100644 --- a/gcc/config/mn10300/mn10300.h +++ b/gcc/config/mn10300/mn10300.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler. Matsushita MN10300 series - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Jeff Law (law@cygnus.com). This file is part of GCC. diff --git a/gcc/config/mn10300/mn10300.md b/gcc/config/mn10300/mn10300.md index 4a004b60e3f..4c3fdebcfcd 100644 --- a/gcc/config/mn10300/mn10300.md +++ b/gcc/config/mn10300/mn10300.md @@ -1,5 +1,5 @@ ;; GCC machine description for Matsushita MN10300 -;; Copyright (C) 1996-2013 Free Software Foundation, Inc. +;; Copyright (C) 1996-2014 Free Software Foundation, Inc. ;; Contributed by Jeff Law (law@cygnus.com). ;; This file is part of GCC. diff --git a/gcc/config/mn10300/mn10300.opt b/gcc/config/mn10300/mn10300.opt index bee9f3433f2..5cc8af21ed4 100644 --- a/gcc/config/mn10300/mn10300.opt +++ b/gcc/config/mn10300/mn10300.opt @@ -1,6 +1,6 @@ ; Options for the Matsushita MN10300 port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/mn10300/predicates.md b/gcc/config/mn10300/predicates.md index 6ad0c68bcd6..6ed2ecb312c 100644 --- a/gcc/config/mn10300/predicates.md +++ b/gcc/config/mn10300/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Matsushita MN10300. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/mn10300/t-mn10300 b/gcc/config/mn10300/t-mn10300 index 9dd9f84f33f..9c224faef56 100644 --- a/gcc/config/mn10300/t-mn10300 +++ b/gcc/config/mn10300/t-mn10300 @@ -1,4 +1,4 @@ -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/moxie/constraints.md b/gcc/config/moxie/constraints.md index 42c771058c5..dcca9d6e14d 100644 --- a/gcc/config/moxie/constraints.md +++ b/gcc/config/moxie/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Moxie -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by Anthony Green ;; This file is part of GCC. diff --git a/gcc/config/moxie/moxie-protos.h b/gcc/config/moxie/moxie-protos.h index 1b351fc9093..2b2a6970013 100644 --- a/gcc/config/moxie/moxie-protos.h +++ b/gcc/config/moxie/moxie-protos.h @@ -1,5 +1,5 @@ /* Prototypes for moxie.c functions used in the md file & elsewhere. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/moxie/moxie.c b/gcc/config/moxie/moxie.c index abba0aebd2d..b646a432bb2 100644 --- a/gcc/config/moxie/moxie.c +++ b/gcc/config/moxie/moxie.c @@ -1,5 +1,5 @@ /* Target Code for moxie - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Anthony Green. This file is part of GCC. diff --git a/gcc/config/moxie/moxie.h b/gcc/config/moxie/moxie.h index 5f93e7b269c..5379a431140 100644 --- a/gcc/config/moxie/moxie.h +++ b/gcc/config/moxie/moxie.h @@ -1,5 +1,5 @@ /* Target Definitions for moxie. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Anthony Green. This file is part of GCC. diff --git a/gcc/config/moxie/moxie.md b/gcc/config/moxie/moxie.md index 2e6a699e941..713f9b65dcf 100644 --- a/gcc/config/moxie/moxie.md +++ b/gcc/config/moxie/moxie.md @@ -1,5 +1,5 @@ ;; Machine description for Moxie -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by Anthony Green ;; This file is part of GCC. diff --git a/gcc/config/moxie/moxie.opt b/gcc/config/moxie/moxie.opt index ca4657284fe..0bbfde2ea2d 100644 --- a/gcc/config/moxie/moxie.opt +++ b/gcc/config/moxie/moxie.opt @@ -1,6 +1,6 @@ ; Options for the moxie compiler port. -; Copyright (C) 2012-2013 Free Software Foundation, Inc. +; Copyright (C) 2012-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/moxie/predicates.md b/gcc/config/moxie/predicates.md index 516af8dd4d8..7cb312b7e53 100644 --- a/gcc/config/moxie/predicates.md +++ b/gcc/config/moxie/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Moxie -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by Anthony Green ;; This file is part of GCC. diff --git a/gcc/config/moxie/rtems.h b/gcc/config/moxie/rtems.h index f2f886b258d..9df922ab340 100644 --- a/gcc/config/moxie/rtems.h +++ b/gcc/config/moxie/rtems.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting the Moxie core. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Anthony Green (green@moxielogic.com) This file is part of GCC. diff --git a/gcc/config/moxie/t-moxie b/gcc/config/moxie/t-moxie index de2a83aa496..2af19a6e838 100644 --- a/gcc/config/moxie/t-moxie +++ b/gcc/config/moxie/t-moxie @@ -1,5 +1,5 @@ # Target Makefile Fragment for moxie -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # Contributed by Anthony Green. # # This file is part of GCC. diff --git a/gcc/config/moxie/uclinux.h b/gcc/config/moxie/uclinux.h index a29d38075c8..2e81b16c5b5 100644 --- a/gcc/config/moxie/uclinux.h +++ b/gcc/config/moxie/uclinux.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2009-2013 Free Software Foundation, Inc. +/* Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/msp430/constraints.md b/gcc/config/msp430/constraints.md index ea53481bfdb..5b1ff4a6a33 100644 --- a/gcc/config/msp430/constraints.md +++ b/gcc/config/msp430/constraints.md @@ -1,5 +1,5 @@ ;; Machine Description for TI MSP43* processors -;; Copyright (C) 2013 Free Software Foundation, Inc. +;; Copyright (C) 2013-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; This file is part of GCC. diff --git a/gcc/config/msp430/msp430-c.c b/gcc/config/msp430/msp430-c.c index 808e02c5ffd..b637192a0a2 100644 --- a/gcc/config/msp430/msp430-c.c +++ b/gcc/config/msp430/msp430-c.c @@ -1,5 +1,5 @@ /* MSP430 C-specific support - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/msp430/msp430-protos.h b/gcc/config/msp430/msp430-protos.h index 61402e59f38..364d98c4019 100644 --- a/gcc/config/msp430/msp430-protos.h +++ b/gcc/config/msp430/msp430-protos.h @@ -1,5 +1,5 @@ /* Exported function prototypes from the TI MSP430 backend. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/msp430/msp430.c b/gcc/config/msp430/msp430.c index beee438aeb9..39e2d312377 100644 --- a/gcc/config/msp430/msp430.c +++ b/gcc/config/msp430/msp430.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on TI MSP430 processors. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/msp430/msp430.h b/gcc/config/msp430/msp430.h index 953c6387e99..db379503ef1 100644 --- a/gcc/config/msp430/msp430.h +++ b/gcc/config/msp430/msp430.h @@ -1,5 +1,5 @@ /* GCC backend definitions for the TI MSP430 Processor - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/msp430/msp430.md b/gcc/config/msp430/msp430.md index ef59beeb6c6..eea4da098d9 100644 --- a/gcc/config/msp430/msp430.md +++ b/gcc/config/msp430/msp430.md @@ -1,5 +1,5 @@ ;; Machine Description for TI MSP43* processors -;; Copyright (C) 2013 Free Software Foundation, Inc. +;; Copyright (C) 2013-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; This file is part of GCC. diff --git a/gcc/config/msp430/predicates.md b/gcc/config/msp430/predicates.md index 6f99caa94eb..9a8e2da0aa1 100644 --- a/gcc/config/msp430/predicates.md +++ b/gcc/config/msp430/predicates.md @@ -1,5 +1,5 @@ ;; Machine Description for TI MSP43* processors -;; Copyright (C) 2013 Free Software Foundation, Inc. +;; Copyright (C) 2013-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; This file is part of GCC. diff --git a/gcc/config/msp430/t-msp430 b/gcc/config/msp430/t-msp430 index 895810ff7e6..cf4730ea7fa 100644 --- a/gcc/config/msp430/t-msp430 +++ b/gcc/config/msp430/t-msp430 @@ -1,5 +1,5 @@ # Makefile fragment for building GCC for the TI MSP430 target. -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # Contributed by Red Hat. # # This file is part of GCC. diff --git a/gcc/config/nds32/constants.md b/gcc/config/nds32/constants.md index 03a21dba1b2..2c317a98e2b 100644 --- a/gcc/config/nds32/constants.md +++ b/gcc/config/nds32/constants.md @@ -1,5 +1,5 @@ ;; Constant defintions of Andes NDS32 cpu for GNU compiler -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Andes Technology Corporation. ;; ;; This file is part of GCC. diff --git a/gcc/config/nds32/constraints.md b/gcc/config/nds32/constraints.md index b4ae6c7258c..1177144a426 100644 --- a/gcc/config/nds32/constraints.md +++ b/gcc/config/nds32/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions of Andes NDS32 cpu for GNU compiler -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Andes Technology Corporation. ;; ;; This file is part of GCC. diff --git a/gcc/config/nds32/iterators.md b/gcc/config/nds32/iterators.md index 6ec519618a9..cda049038d9 100644 --- a/gcc/config/nds32/iterators.md +++ b/gcc/config/nds32/iterators.md @@ -1,6 +1,6 @@ ;; Code and mode itertator and attribute definitions ;; of Andes NDS32 cpu for GNU compiler -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Andes Technology Corporation. ;; ;; This file is part of GCC. diff --git a/gcc/config/nds32/nds32-doubleword.md b/gcc/config/nds32/nds32-doubleword.md index 4bfede4236a..e68bfece5e1 100644 --- a/gcc/config/nds32/nds32-doubleword.md +++ b/gcc/config/nds32/nds32-doubleword.md @@ -1,5 +1,5 @@ ;; DImode/DFmode patterns description of Andes NDS32 cpu for GNU compiler -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Andes Technology Corporation. ;; ;; This file is part of GCC. diff --git a/gcc/config/nds32/nds32-intrinsic.md b/gcc/config/nds32/nds32-intrinsic.md index 4ee2d851023..3c1d05e482e 100644 --- a/gcc/config/nds32/nds32-intrinsic.md +++ b/gcc/config/nds32/nds32-intrinsic.md @@ -1,5 +1,5 @@ ;; Intrinsic patterns description of Andes NDS32 cpu for GNU compiler -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Andes Technology Corporation. ;; ;; This file is part of GCC. diff --git a/gcc/config/nds32/nds32-modes.def b/gcc/config/nds32/nds32-modes.def index 9d32ada0ce8..041560eb71c 100644 --- a/gcc/config/nds32/nds32-modes.def +++ b/gcc/config/nds32/nds32-modes.def @@ -1,5 +1,5 @@ /* Extra machine modes of Andes NDS32 cpu for GNU compiler - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Andes Technology Corporation. This file is part of GCC. diff --git a/gcc/config/nds32/nds32-multiple.md b/gcc/config/nds32/nds32-multiple.md index da89a490d3a..6783cbaf88e 100644 --- a/gcc/config/nds32/nds32-multiple.md +++ b/gcc/config/nds32/nds32-multiple.md @@ -1,5 +1,5 @@ ;; Load/Store Multiple patterns description of Andes NDS32 cpu for GNU compiler -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Andes Technology Corporation.for NDS32. ;; ;; This file is part of GCC. diff --git a/gcc/config/nds32/nds32-opts.h b/gcc/config/nds32/nds32-opts.h index b38672f0e2f..b05e2d44934 100644 --- a/gcc/config/nds32/nds32-opts.h +++ b/gcc/config/nds32/nds32-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling of Andes NDS32 cpu for GNU compiler - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Andes Technology Corporation. This file is part of GCC. diff --git a/gcc/config/nds32/nds32-peephole2.md b/gcc/config/nds32/nds32-peephole2.md index dbe2d6c8a62..f9cd6dfc74b 100644 --- a/gcc/config/nds32/nds32-peephole2.md +++ b/gcc/config/nds32/nds32-peephole2.md @@ -1,5 +1,5 @@ ;; define_peephole2 optimization patterns of Andes NDS32 cpu for GNU compiler -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Andes Technology Corporation. ;; ;; This file is part of GCC. diff --git a/gcc/config/nds32/nds32-protos.h b/gcc/config/nds32/nds32-protos.h index 2bc405db0f4..6d94027bb6e 100644 --- a/gcc/config/nds32/nds32-protos.h +++ b/gcc/config/nds32/nds32-protos.h @@ -1,5 +1,5 @@ /* Prototypes for exported functions of Andes NDS32 cpu for GNU compiler - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Andes Technology Corporation. This file is part of GCC. diff --git a/gcc/config/nds32/nds32.c b/gcc/config/nds32/nds32.c index e7d1dc0b2d9..7be3ad2853e 100644 --- a/gcc/config/nds32/nds32.c +++ b/gcc/config/nds32/nds32.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation of Andes NDS32 cpu for GNU compiler - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Andes Technology Corporation. This file is part of GCC. diff --git a/gcc/config/nds32/nds32.h b/gcc/config/nds32/nds32.h index 1e798e41059..38847e5697c 100644 --- a/gcc/config/nds32/nds32.h +++ b/gcc/config/nds32/nds32.h @@ -1,5 +1,5 @@ /* Definitions of target machine of Andes NDS32 cpu for GNU compiler - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Andes Technology Corporation. This file is part of GCC. diff --git a/gcc/config/nds32/nds32.md b/gcc/config/nds32/nds32.md index 4a832eaf86b..0402cadd6b2 100644 --- a/gcc/config/nds32/nds32.md +++ b/gcc/config/nds32/nds32.md @@ -1,5 +1,5 @@ ;; Machine description of Andes NDS32 cpu for GNU compiler -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Andes Technology Corporation. ;; ;; This file is part of GCC. diff --git a/gcc/config/nds32/nds32.opt b/gcc/config/nds32/nds32.opt index b2b45bb3e02..4974f3b867b 100644 --- a/gcc/config/nds32/nds32.opt +++ b/gcc/config/nds32/nds32.opt @@ -1,5 +1,5 @@ ; Options of Andes NDS32 cpu for GNU compiler -; Copyright (C) 2012-2013 Free Software Foundation, Inc. +; Copyright (C) 2012-2014 Free Software Foundation, Inc. ; Contributed by Andes Technology Corporation. ; ; This file is part of GCC. diff --git a/gcc/config/nds32/nds32_intrinsic.h b/gcc/config/nds32/nds32_intrinsic.h index 33064a966ed..3908051f726 100644 --- a/gcc/config/nds32/nds32_intrinsic.h +++ b/gcc/config/nds32/nds32_intrinsic.h @@ -1,5 +1,5 @@ /* Intrinsic definitions of Andes NDS32 cpu for GNU compiler - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Andes Technology Corporation. This file is part of GCC. diff --git a/gcc/config/nds32/pipelines.md b/gcc/config/nds32/pipelines.md index 9c8c56bab83..18cee9b5672 100644 --- a/gcc/config/nds32/pipelines.md +++ b/gcc/config/nds32/pipelines.md @@ -1,5 +1,5 @@ ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Andes Technology Corporation. ;; ;; This file is part of GCC. diff --git a/gcc/config/nds32/predicates.md b/gcc/config/nds32/predicates.md index df4eccdb891..0a40d68b8cf 100644 --- a/gcc/config/nds32/predicates.md +++ b/gcc/config/nds32/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions of Andes NDS32 cpu for GNU compiler -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Andes Technology Corporation. ;; ;; This file is part of GCC. diff --git a/gcc/config/nds32/t-mlibs b/gcc/config/nds32/t-mlibs index ec546e48c1b..1e3785a0b53 100644 --- a/gcc/config/nds32/t-mlibs +++ b/gcc/config/nds32/t-mlibs @@ -1,5 +1,5 @@ # The multilib settings of Andes NDS32 cpu for GNU compiler -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # Contributed by Andes Technology Corporation. # # This file is part of GCC. diff --git a/gcc/config/netbsd-elf.h b/gcc/config/netbsd-elf.h index b314b124cef..d5eb83b1f3c 100644 --- a/gcc/config/netbsd-elf.h +++ b/gcc/config/netbsd-elf.h @@ -1,5 +1,5 @@ /* Common configuration file for NetBSD ELF targets. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Wasabi Systems, Inc. This file is part of GCC. diff --git a/gcc/config/netbsd-elf.opt b/gcc/config/netbsd-elf.opt index a1e1359727f..ef6646629ae 100644 --- a/gcc/config/netbsd-elf.opt +++ b/gcc/config/netbsd-elf.opt @@ -1,6 +1,6 @@ ; NetBSD ELF-only options. -; Copyright (C) 2010-2013 Free Software Foundation, Inc. +; Copyright (C) 2010-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/netbsd.h b/gcc/config/netbsd.h index dd50dcc0ec4..d40c3afe83c 100644 --- a/gcc/config/netbsd.h +++ b/gcc/config/netbsd.h @@ -1,5 +1,5 @@ /* Base configuration file for all NetBSD targets. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/netbsd.opt b/gcc/config/netbsd.opt index 0dc5b01c351..468d0b91f8a 100644 --- a/gcc/config/netbsd.opt +++ b/gcc/config/netbsd.opt @@ -1,6 +1,6 @@ ; NetBSD options. -; Copyright (C) 2010-2013 Free Software Foundation, Inc. +; Copyright (C) 2010-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/newlib-stdint.h b/gcc/config/newlib-stdint.h index be283a74cf5..f4a78a54492 100644 --- a/gcc/config/newlib-stdint.h +++ b/gcc/config/newlib-stdint.h @@ -1,5 +1,5 @@ /* Definitions for types on systems using newlib. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/nios2/constraints.md b/gcc/config/nios2/constraints.md index a1d55d30852..dbae54320e9 100644 --- a/gcc/config/nios2/constraints.md +++ b/gcc/config/nios2/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Altera Nios II. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Chung-Lin Tang ;; ;; This file is part of GCC. diff --git a/gcc/config/nios2/elf.h b/gcc/config/nios2/elf.h index 82b0aa1328f..357bf3ee8db 100644 --- a/gcc/config/nios2/elf.h +++ b/gcc/config/nios2/elf.h @@ -1,5 +1,5 @@ /* Definitions of ELF target support for Altera Nios II. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Jonah Graham (jgraham@altera.com), Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com). Contributed by Mentor Graphics, Inc. diff --git a/gcc/config/nios2/elf.opt b/gcc/config/nios2/elf.opt index 8d7bfb2a14f..b4de377772b 100644 --- a/gcc/config/nios2/elf.opt +++ b/gcc/config/nios2/elf.opt @@ -1,5 +1,5 @@ ; Options for the Altera Nios II port of the compiler. -; Copyright (C) 2012-2013 Free Software Foundation, Inc. +; Copyright (C) 2012-2014 Free Software Foundation, Inc. ; Contributed by Altera and Mentor Graphics, Inc. ; ; This file is part of GCC. diff --git a/gcc/config/nios2/linux.h b/gcc/config/nios2/linux.h index 0306335b409..47976f85b0d 100644 --- a/gcc/config/nios2/linux.h +++ b/gcc/config/nios2/linux.h @@ -1,6 +1,6 @@ /* Definitions of target support for Altera Nios II systems running GNU/Linux with ELF format. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Mentor Graphics, Inc. This file is part of GCC. diff --git a/gcc/config/nios2/nios2-opts.h b/gcc/config/nios2/nios2-opts.h index be7bc6e3080..95dbad14521 100644 --- a/gcc/config/nios2/nios2-opts.h +++ b/gcc/config/nios2/nios2-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for Nios II. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/nios2/nios2-protos.h b/gcc/config/nios2/nios2-protos.h index c256b023b51..878295446ca 100644 --- a/gcc/config/nios2/nios2-protos.h +++ b/gcc/config/nios2/nios2-protos.h @@ -1,5 +1,5 @@ /* Subroutine declarations for Altera Nios II target support. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Jonah Graham (jgraham@altera.com). Contributed by Mentor Graphics, Inc. diff --git a/gcc/config/nios2/nios2.c b/gcc/config/nios2/nios2.c index 92ecfe568ae..2116f213098 100644 --- a/gcc/config/nios2/nios2.c +++ b/gcc/config/nios2/nios2.c @@ -1,5 +1,5 @@ /* Target machine subroutines for Altera Nios II. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Jonah Graham (jgraham@altera.com), Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com). Contributed by Mentor Graphics, Inc. diff --git a/gcc/config/nios2/nios2.h b/gcc/config/nios2/nios2.h index f333be3bd6f..17148d3e5fa 100644 --- a/gcc/config/nios2/nios2.h +++ b/gcc/config/nios2/nios2.h @@ -1,5 +1,5 @@ /* Definitions of target machine for Altera Nios II. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Jonah Graham (jgraham@altera.com), Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com). Contributed by Mentor Graphics, Inc. diff --git a/gcc/config/nios2/nios2.md b/gcc/config/nios2/nios2.md index cf1559934b3..7274687621c 100644 --- a/gcc/config/nios2/nios2.md +++ b/gcc/config/nios2/nios2.md @@ -1,5 +1,5 @@ ;; Machine Description for Altera Nios II. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Jonah Graham (jgraham@altera.com) and ;; Will Reece (wreece@altera.com). ;; Contributed by Mentor Graphics, Inc. diff --git a/gcc/config/nios2/nios2.opt b/gcc/config/nios2/nios2.opt index 13aef254610..4ca8e90b779 100644 --- a/gcc/config/nios2/nios2.opt +++ b/gcc/config/nios2/nios2.opt @@ -1,5 +1,5 @@ ; Options for the Altera Nios II port of the compiler. -; Copyright (C) 2012-2013 Free Software Foundation, Inc. +; Copyright (C) 2012-2014 Free Software Foundation, Inc. ; Contributed by Altera and Mentor Graphics, Inc. ; ; This file is part of GCC. diff --git a/gcc/config/nios2/predicates.md b/gcc/config/nios2/predicates.md index 8bc18fa4f5a..1c3b2553b5e 100644 --- a/gcc/config/nios2/predicates.md +++ b/gcc/config/nios2/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Altera Nios II. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Chung-Lin Tang ;; ;; This file is part of GCC. diff --git a/gcc/config/nios2/t-nios2 b/gcc/config/nios2/t-nios2 index 09a407626aa..d5f25b35389 100644 --- a/gcc/config/nios2/t-nios2 +++ b/gcc/config/nios2/t-nios2 @@ -1,5 +1,5 @@ # Target Makefile Fragment for Altera Nios II. -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # Contributed by Altera and Mentor Graphics, Inc. # # This file is part of GCC. diff --git a/gcc/config/openbsd-libpthread.h b/gcc/config/openbsd-libpthread.h index dda55ac13ae..e933a782ed1 100644 --- a/gcc/config/openbsd-libpthread.h +++ b/gcc/config/openbsd-libpthread.h @@ -1,6 +1,6 @@ /* LIB_SPEC appropriate for OpenBSD. Include -lpthread if -pthread is specified on the command line. */ -/* Copyright (C) 2004-2013 Free Software Foundation, Inc. +/* Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/openbsd-oldgas.h b/gcc/config/openbsd-oldgas.h index 1afab3a11fb..080da5e0ed8 100644 --- a/gcc/config/openbsd-oldgas.h +++ b/gcc/config/openbsd-oldgas.h @@ -1,5 +1,5 @@ /* Generic settings for a.out OpenBSD systems. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by David E. O'Brien . This file is part of GCC. diff --git a/gcc/config/openbsd.h b/gcc/config/openbsd.h index 0d118b46328..7150d49aa9b 100644 --- a/gcc/config/openbsd.h +++ b/gcc/config/openbsd.h @@ -1,5 +1,5 @@ /* Base configuration file for all OpenBSD targets. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/openbsd.opt b/gcc/config/openbsd.opt index 87ffffd0af4..446ff9403bf 100644 --- a/gcc/config/openbsd.opt +++ b/gcc/config/openbsd.opt @@ -1,6 +1,6 @@ ; OpenBSD options. -; Copyright (C) 2010-2013 Free Software Foundation, Inc. +; Copyright (C) 2010-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/pa/constraints.md b/gcc/config/pa/constraints.md index bdc119e4d31..a9117b9889e 100644 --- a/gcc/config/pa/constraints.md +++ b/gcc/config/pa/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for pa -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/pa/elf.h b/gcc/config/pa/elf.h index e6ec38ac3f9..876e8e78b1f 100644 --- a/gcc/config/pa/elf.h +++ b/gcc/config/pa/elf.h @@ -1,5 +1,5 @@ /* Definitions for ELF assembler support. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa-64.h b/gcc/config/pa/pa-64.h index a9b0eaa36d5..14a5fb01a42 100644 --- a/gcc/config/pa/pa-64.h +++ b/gcc/config/pa/pa-64.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for HPs using the 64bit runtime model. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa-hpux.h b/gcc/config/pa/pa-hpux.h index 9685bb25a57..b303d2bda12 100644 --- a/gcc/config/pa/pa-hpux.h +++ b/gcc/config/pa/pa-hpux.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for HP-UX. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa-hpux.opt b/gcc/config/pa/pa-hpux.opt index 7144d08d963..5cc93f3b27e 100644 --- a/gcc/config/pa/pa-hpux.opt +++ b/gcc/config/pa/pa-hpux.opt @@ -1,6 +1,6 @@ ; Options for the HP PA-RISC port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/pa/pa-hpux10.h b/gcc/config/pa/pa-hpux10.h index b1c0a3c8af1..1b4d21f56e8 100644 --- a/gcc/config/pa/pa-hpux10.h +++ b/gcc/config/pa/pa-hpux10.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for HP PA-RISC - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Tim Moore (moore@defmacro.cs.utah.edu) This file is part of GCC. diff --git a/gcc/config/pa/pa-hpux10.opt b/gcc/config/pa/pa-hpux10.opt index 0faf4d90aa5..fe65c15978d 100644 --- a/gcc/config/pa/pa-hpux10.opt +++ b/gcc/config/pa/pa-hpux10.opt @@ -1,6 +1,6 @@ ; Options specific to HP-UX 10. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/pa/pa-hpux1010.h b/gcc/config/pa/pa-hpux1010.h index a876aa385d8..f4866b74a4e 100644 --- a/gcc/config/pa/pa-hpux1010.h +++ b/gcc/config/pa/pa-hpux1010.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for HP PA-RISC - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa-hpux1010.opt b/gcc/config/pa/pa-hpux1010.opt index 2ebb818d163..94962829262 100644 --- a/gcc/config/pa/pa-hpux1010.opt +++ b/gcc/config/pa/pa-hpux1010.opt @@ -1,6 +1,6 @@ ; Options for the HP PA-RISC port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/pa/pa-hpux11.h b/gcc/config/pa/pa-hpux11.h index 4da1b096a50..07f0decfa61 100644 --- a/gcc/config/pa/pa-hpux11.h +++ b/gcc/config/pa/pa-hpux11.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for HP PA-RISC - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa-hpux1111.h b/gcc/config/pa/pa-hpux1111.h index 55e1cc5065d..704d741a531 100644 --- a/gcc/config/pa/pa-hpux1111.h +++ b/gcc/config/pa/pa-hpux1111.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for HP PA-RISC - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa-hpux1111.opt b/gcc/config/pa/pa-hpux1111.opt index 241d30434f3..21b4d2d9f05 100644 --- a/gcc/config/pa/pa-hpux1111.opt +++ b/gcc/config/pa/pa-hpux1111.opt @@ -1,6 +1,6 @@ ; Options for the HP PA-RISC port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/pa/pa-hpux1131.h b/gcc/config/pa/pa-hpux1131.h index 8d7e7dfa90b..96673ae31df 100644 --- a/gcc/config/pa/pa-hpux1131.h +++ b/gcc/config/pa/pa-hpux1131.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for HP PA-RISC - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa-hpux1131.opt b/gcc/config/pa/pa-hpux1131.opt index 37b905ce7c8..6f90d464e04 100644 --- a/gcc/config/pa/pa-hpux1131.opt +++ b/gcc/config/pa/pa-hpux1131.opt @@ -1,6 +1,6 @@ ; Options for the HP PA-RISC port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/pa/pa-linux.h b/gcc/config/pa/pa-linux.h index c20c7ccd02f..399308ab43f 100644 --- a/gcc/config/pa/pa-linux.h +++ b/gcc/config/pa/pa-linux.h @@ -1,5 +1,5 @@ /* Definitions for PA_RISC with ELF format - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa-modes.def b/gcc/config/pa/pa-modes.def index f80fe074eaa..cd5af452893 100644 --- a/gcc/config/pa/pa-modes.def +++ b/gcc/config/pa/pa-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for the HP Spectrum. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for Software Science at the University of Utah. diff --git a/gcc/config/pa/pa-openbsd.h b/gcc/config/pa/pa-openbsd.h index 39b7bd23284..0c8d194541b 100644 --- a/gcc/config/pa/pa-openbsd.h +++ b/gcc/config/pa/pa-openbsd.h @@ -1,5 +1,5 @@ /* Definitions for PA_RISC with ELF format - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa-opts.h b/gcc/config/pa/pa-opts.h index d2753d4f172..44ddf06c4cd 100644 --- a/gcc/config/pa/pa-opts.h +++ b/gcc/config/pa/pa-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for HP PA. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa-protos.h b/gcc/config/pa/pa-protos.h index ab1763a5d19..2659dcdf06a 100644 --- a/gcc/config/pa/pa-protos.h +++ b/gcc/config/pa/pa-protos.h @@ -1,5 +1,5 @@ /* Prototypes for pa.c functions used in the md file & elsewhere. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 2aa63c6bd0c..2c4f6bfcace 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -1,5 +1,5 @@ /* Subroutines for insn-output.c for HPPA. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Tim Moore (moore@cs.utah.edu), based on sparc.c This file is part of GCC. diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index f32fd4042dc..36d138807ed 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for the HP Spectrum. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for Software Science at the University of Utah. diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index c990950f111..94ba162a43e 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -1,5 +1,5 @@ ;;- Machine description for HP PA-RISC architecture for GCC compiler -;; Copyright (C) 1992-2013 Free Software Foundation, Inc. +;; Copyright (C) 1992-2014 Free Software Foundation, Inc. ;; Contributed by the Center for Software Science at the University ;; of Utah. diff --git a/gcc/config/pa/pa.opt b/gcc/config/pa/pa.opt index 50198028101..ebb7578244f 100644 --- a/gcc/config/pa/pa.opt +++ b/gcc/config/pa/pa.opt @@ -1,6 +1,6 @@ ; Options for the HP PA-RISC port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/pa/pa32-linux.h b/gcc/config/pa/pa32-linux.h index b8fd9d87e09..f8ad8e84359 100644 --- a/gcc/config/pa/pa32-linux.h +++ b/gcc/config/pa/pa32-linux.h @@ -1,5 +1,5 @@ /* Definitions for PA_RISC with ELF-32 format - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa32-openbsd.h b/gcc/config/pa/pa32-openbsd.h index 119002838cf..6f169a2bcbc 100644 --- a/gcc/config/pa/pa32-openbsd.h +++ b/gcc/config/pa/pa32-openbsd.h @@ -1,5 +1,5 @@ /* Definitions for PA_RISC with ELF-32 format - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa32-regs.h b/gcc/config/pa/pa32-regs.h index 098e9bab561..a2553c6b796 100644 --- a/gcc/config/pa/pa32-regs.h +++ b/gcc/config/pa/pa32-regs.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000-2013 Free Software Foundation, Inc. +/* Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa64-hpux.h b/gcc/config/pa/pa64-hpux.h index 9efc137c89e..04b8de96e86 100644 --- a/gcc/config/pa/pa64-hpux.h +++ b/gcc/config/pa/pa64-hpux.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for HPs running HPUX using the 64bit runtime model. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa64-hpux.opt b/gcc/config/pa/pa64-hpux.opt index 453b7b4912e..d7fb410fb65 100644 --- a/gcc/config/pa/pa64-hpux.opt +++ b/gcc/config/pa/pa64-hpux.opt @@ -1,6 +1,6 @@ ; Options for the HP PA-RISC port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/pa/pa64-linux.h b/gcc/config/pa/pa64-linux.h index 135b3aa19e2..0b0d51ef8fa 100644 --- a/gcc/config/pa/pa64-linux.h +++ b/gcc/config/pa/pa64-linux.h @@ -1,5 +1,5 @@ /* Definitions for PA_RISC with ELF format on 64-bit Linux - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/pa64-regs.h b/gcc/config/pa/pa64-regs.h index 002520ab8f4..64eaaaf2a5f 100644 --- a/gcc/config/pa/pa64-regs.h +++ b/gcc/config/pa/pa64-regs.h @@ -1,5 +1,5 @@ /* Configuration for GCC-compiler for PA-RISC. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pa/predicates.md b/gcc/config/pa/predicates.md index ba105f2e8cc..8dcfce0e92b 100644 --- a/gcc/config/pa/predicates.md +++ b/gcc/config/pa/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for HP PA-RISC. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/pa/som.h b/gcc/config/pa/som.h index 2bc945bec79..aa0402aa302 100644 --- a/gcc/config/pa/som.h +++ b/gcc/config/pa/som.h @@ -1,5 +1,5 @@ /* Definitions for SOM assembler support. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/pdp11/constraints.md b/gcc/config/pdp11/constraints.md index 3eb31729336..d3b67e73e6d 100644 --- a/gcc/config/pdp11/constraints.md +++ b/gcc/config/pdp11/constraints.md @@ -1,5 +1,5 @@ ;;- Constraint definitions for the pdp11 for GNU C compiler -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at). ;; This file is part of GCC. diff --git a/gcc/config/pdp11/pdp11-modes.def b/gcc/config/pdp11/pdp11-modes.def index e780f67165b..92b13758542 100644 --- a/gcc/config/pdp11/pdp11-modes.def +++ b/gcc/config/pdp11/pdp11-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for the pdp-11 - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at). This file is part of GCC. diff --git a/gcc/config/pdp11/pdp11-protos.h b/gcc/config/pdp11/pdp11-protos.h index b79c4bf4a02..5b1b1efa25b 100644 --- a/gcc/config/pdp11/pdp11-protos.h +++ b/gcc/config/pdp11/pdp11-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for the pdp-11 - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at). This file is part of GCC. diff --git a/gcc/config/pdp11/pdp11.c b/gcc/config/pdp11/pdp11.c index 42237b5d798..677160aac3d 100644 --- a/gcc/config/pdp11/pdp11.c +++ b/gcc/config/pdp11/pdp11.c @@ -1,5 +1,5 @@ /* Subroutines for gcc2 for pdp11. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at). This file is part of GCC. diff --git a/gcc/config/pdp11/pdp11.h b/gcc/config/pdp11/pdp11.h index d4bc19a00f1..67a3e7c2c64 100644 --- a/gcc/config/pdp11/pdp11.h +++ b/gcc/config/pdp11/pdp11.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for the pdp-11 - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at). This file is part of GCC. diff --git a/gcc/config/pdp11/pdp11.md b/gcc/config/pdp11/pdp11.md index c28ae3aee19..46beb4f5e92 100644 --- a/gcc/config/pdp11/pdp11.md +++ b/gcc/config/pdp11/pdp11.md @@ -1,5 +1,5 @@ ;;- Machine description for the pdp11 for GNU C compiler -;; Copyright (C) 1994-2013 Free Software Foundation, Inc. +;; Copyright (C) 1994-2014 Free Software Foundation, Inc. ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at). ;; This file is part of GCC. diff --git a/gcc/config/pdp11/pdp11.opt b/gcc/config/pdp11/pdp11.opt index 220ca6f4dc2..028bc593a89 100644 --- a/gcc/config/pdp11/pdp11.opt +++ b/gcc/config/pdp11/pdp11.opt @@ -1,6 +1,6 @@ ; Options for the PDP11 port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/pdp11/predicates.md b/gcc/config/pdp11/predicates.md index e3b205187ae..339143b61ab 100644 --- a/gcc/config/pdp11/predicates.md +++ b/gcc/config/pdp11/predicates.md @@ -1,5 +1,5 @@ ;;- Predicate definitions for the pdp11 for GNU C compiler -;; Copyright (C) 1994-2013 Free Software Foundation, Inc. +;; Copyright (C) 1994-2014 Free Software Foundation, Inc. ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at). ;; This file is part of GCC. diff --git a/gcc/config/pdp11/t-pdp11 b/gcc/config/pdp11/t-pdp11 index 58efe5712f8..5d0a5af0be8 100644 --- a/gcc/config/pdp11/t-pdp11 +++ b/gcc/config/pdp11/t-pdp11 @@ -1,4 +1,4 @@ -# Copyright (C) 1995-2013 Free Software Foundation, Inc. +# Copyright (C) 1995-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/picochip/constraints.md b/gcc/config/picochip/constraints.md index a4197f664bd..ba7eb747552 100644 --- a/gcc/config/picochip/constraints.md +++ b/gcc/config/picochip/constraints.md @@ -1,5 +1,5 @@ ;; GCC machine description for picochip -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Picochip Ltd (http://www.picochip.com) ;; Maintained by Daniel Towner (dant@picochip.com) and Hariharan ;; Sandanagobalane (hariharan@picochip.com) diff --git a/gcc/config/picochip/dfa_space.md b/gcc/config/picochip/dfa_space.md index d31c670bce2..b4551037f3d 100644 --- a/gcc/config/picochip/dfa_space.md +++ b/gcc/config/picochip/dfa_space.md @@ -1,5 +1,5 @@ ;; GCC machine description for picochip -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Picochip Ltd (http://www.picochip.com) ;; Maintained by Daniel Towner (dant@picochip.com) and Hariharan ;; Sandanagobalane (hariharan@picochip.com) diff --git a/gcc/config/picochip/dfa_speed.md b/gcc/config/picochip/dfa_speed.md index 7ac7057c072..20b893b603f 100644 --- a/gcc/config/picochip/dfa_speed.md +++ b/gcc/config/picochip/dfa_speed.md @@ -1,5 +1,5 @@ ;; GCC machine description for picochip -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Picochip Ltd (http://www.picochip.com) ;; Maintained by Daniel Towner (dant@picochip.com) and Hariharan ;; Sandanagobalane (hariharan@picochip.com). diff --git a/gcc/config/picochip/picochip-protos.h b/gcc/config/picochip/picochip-protos.h index 2d7a50c0cc2..1f548f8f257 100644 --- a/gcc/config/picochip/picochip-protos.h +++ b/gcc/config/picochip/picochip-protos.h @@ -1,6 +1,6 @@ /* Prototypes for exported functions defined in picochip.c - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Picochip Ltd. (http://www.picochip.com) Maintained by Daniel Towner (daniel.towner@picochip.com) and Hariharan Sandanagobalane (hariharan@picochip.com). diff --git a/gcc/config/picochip/picochip.c b/gcc/config/picochip/picochip.c index 8861ffc7706..2476f7344f8 100644 --- a/gcc/config/picochip/picochip.c +++ b/gcc/config/picochip/picochip.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on picoChip processors. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Picochip Ltd. (http://www.picochip.com) Maintained by Daniel Towner (daniel.towner@picochip.com) and Hariharan Sandanagobalane (hariharan@picochip.com) diff --git a/gcc/config/picochip/picochip.h b/gcc/config/picochip/picochip.h index 3621f3d1b1c..1daf93c7ed6 100644 --- a/gcc/config/picochip/picochip.h +++ b/gcc/config/picochip/picochip.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler for picoChip - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Picochip Ltd. (http://www.picochip.com) Maintained by Daniel Towner (daniel.towner@picochip.com) and diff --git a/gcc/config/picochip/picochip.md b/gcc/config/picochip/picochip.md index 303220e9c07..f565c665a93 100644 --- a/gcc/config/picochip/picochip.md +++ b/gcc/config/picochip/picochip.md @@ -1,5 +1,5 @@ ;; GCC machine description for picochip -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Picochip Ltd (http://www.picochip.com) ;; Maintained by Daniel Towner (dant@picochip.com) and Hariharan ;; Sandanagobalane (hariharan@picochip.com) diff --git a/gcc/config/picochip/picochip.opt b/gcc/config/picochip/picochip.opt index 5e2ea4437d4..910775cf0e8 100644 --- a/gcc/config/picochip/picochip.opt +++ b/gcc/config/picochip/picochip.opt @@ -1,6 +1,6 @@ ; Options for the picoChip port of the compiler. -; Copyright (C) 2008-2013 Free Software Foundation, Inc. +; Copyright (C) 2008-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/picochip/predicates.md b/gcc/config/picochip/predicates.md index 8e713af6a57..3431a363dee 100644 --- a/gcc/config/picochip/predicates.md +++ b/gcc/config/picochip/predicates.md @@ -1,5 +1,5 @@ ;; GCC machine description for picochip -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Picochip Ltd (http://www.picochip.com) ;; Maintained by Daniel Towner (dant@picochip.com) and Hariharan ;; Sandanagobalane (hariharan@picochip.com) diff --git a/gcc/config/picochip/t-picochip b/gcc/config/picochip/t-picochip index 28d7ac88e21..ac785e51e7e 100644 --- a/gcc/config/picochip/t-picochip +++ b/gcc/config/picochip/t-picochip @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/print-sysroot-suffix.sh b/gcc/config/print-sysroot-suffix.sh index aa511487fcd..be4492b7dbb 100644 --- a/gcc/config/print-sysroot-suffix.sh +++ b/gcc/config/print-sysroot-suffix.sh @@ -2,7 +2,7 @@ # Script to generate SYSROOT_SUFFIX_SPEC equivalent to MULTILIB_OSDIRNAMES # Arguments are MULTILIB_OSDIRNAMES, MULTILIB_OPTIONS and MULTILIB_MATCHES. -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This file is part of GCC. diff --git a/gcc/config/rl78/constraints.md b/gcc/config/rl78/constraints.md index 1785c666cb3..3f5e4908502 100644 --- a/gcc/config/rl78/constraints.md +++ b/gcc/config/rl78/constraints.md @@ -1,5 +1,5 @@ ;; Machine Description for Renesas RL78 processors -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; This file is part of GCC. diff --git a/gcc/config/rl78/predicates.md b/gcc/config/rl78/predicates.md index 99ee656aad5..e564f436953 100644 --- a/gcc/config/rl78/predicates.md +++ b/gcc/config/rl78/predicates.md @@ -1,5 +1,5 @@ ;; Machine Description for Renesas RL78 processors -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; This file is part of GCC. diff --git a/gcc/config/rl78/rl78-c.c b/gcc/config/rl78/rl78-c.c index 6ac3455816d..81e84b9df35 100644 --- a/gcc/config/rl78/rl78-c.c +++ b/gcc/config/rl78/rl78-c.c @@ -1,5 +1,5 @@ /* RL78 C-specific support - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/rl78/rl78-expand.md b/gcc/config/rl78/rl78-expand.md index a662d32c181..3a29c0209ed 100644 --- a/gcc/config/rl78/rl78-expand.md +++ b/gcc/config/rl78/rl78-expand.md @@ -1,5 +1,5 @@ ;; Machine Description for Renesas RL78 processors -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; This file is part of GCC. diff --git a/gcc/config/rl78/rl78-opts.h b/gcc/config/rl78/rl78-opts.h index 90e3750d5b4..95c5278dd6e 100644 --- a/gcc/config/rl78/rl78-opts.h +++ b/gcc/config/rl78/rl78-opts.h @@ -1,5 +1,5 @@ /* GCC option-handling definitions for the Renesas RL78 processor. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rl78/rl78-protos.h b/gcc/config/rl78/rl78-protos.h index 1f30e637b72..a74bda187da 100644 --- a/gcc/config/rl78/rl78-protos.h +++ b/gcc/config/rl78/rl78-protos.h @@ -1,5 +1,5 @@ /* Prototypes for Renesas RL78 processors - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/rl78/rl78-real.md b/gcc/config/rl78/rl78-real.md index 4cf65e147a0..1b6c486ea95 100644 --- a/gcc/config/rl78/rl78-real.md +++ b/gcc/config/rl78/rl78-real.md @@ -1,5 +1,5 @@ ;; Machine Description for Renesas RL78 processors -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; This file is part of GCC. diff --git a/gcc/config/rl78/rl78-virt.md b/gcc/config/rl78/rl78-virt.md index 74affc519f9..b2b64dab2cf 100644 --- a/gcc/config/rl78/rl78-virt.md +++ b/gcc/config/rl78/rl78-virt.md @@ -1,5 +1,5 @@ ;; Machine Description for Renesas RL78 processors -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; This file is part of GCC. diff --git a/gcc/config/rl78/rl78.c b/gcc/config/rl78/rl78.c index 72aefc205a1..dd8fc55a200 100644 --- a/gcc/config/rl78/rl78.c +++ b/gcc/config/rl78/rl78.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on Renesas RL78 processors. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/rl78/rl78.h b/gcc/config/rl78/rl78.h index 3a656de626c..8dee92be941 100644 --- a/gcc/config/rl78/rl78.h +++ b/gcc/config/rl78/rl78.h @@ -1,5 +1,5 @@ /* GCC backend definitions for the Renesas RL78 processor. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/rl78/rl78.md b/gcc/config/rl78/rl78.md index a43b41b472f..eb4c468ca1e 100644 --- a/gcc/config/rl78/rl78.md +++ b/gcc/config/rl78/rl78.md @@ -1,5 +1,5 @@ ;; Machine Description for Renesas RL78 processors -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; This file is part of GCC. diff --git a/gcc/config/rl78/rl78.opt b/gcc/config/rl78/rl78.opt index ebcf903126d..4d2be5baf20 100644 --- a/gcc/config/rl78/rl78.opt +++ b/gcc/config/rl78/rl78.opt @@ -1,5 +1,5 @@ ; Command line options for the Renesas RL78 port of GCC. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; Contributed by Red Hat. ; ; This file is part of GCC. diff --git a/gcc/config/rl78/t-rl78 b/gcc/config/rl78/t-rl78 index 30705b3e5e5..8db50e1a78e 100644 --- a/gcc/config/rl78/t-rl78 +++ b/gcc/config/rl78/t-rl78 @@ -1,5 +1,5 @@ # Makefile fragment for building GCC for the Renesas RL78 target. -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # Contributed by Red Hat. # # This file is part of GCC. diff --git a/gcc/config/rpath.opt b/gcc/config/rpath.opt index 7627b88d649..5fbc6017501 100644 --- a/gcc/config/rpath.opt +++ b/gcc/config/rpath.opt @@ -1,6 +1,6 @@ ; -rpath option to the driver. -; Copyright (C) 2010-2013 Free Software Foundation, Inc. +; Copyright (C) 2010-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/rs6000/40x.md b/gcc/config/rs6000/40x.md index ab0cf0631d3..b2a83b163f7 100644 --- a/gcc/config/rs6000/40x.md +++ b/gcc/config/rs6000/40x.md @@ -1,5 +1,5 @@ ;; Scheduling description for IBM PowerPC 403 and PowerPC 405 processors. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/440.md b/gcc/config/rs6000/440.md index fe70be0fb79..7ca209b683e 100644 --- a/gcc/config/rs6000/440.md +++ b/gcc/config/rs6000/440.md @@ -1,5 +1,5 @@ ;; Scheduling description for IBM PowerPC 440 processor. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/rs6000/476.h b/gcc/config/rs6000/476.h index f0a928ff62e..43e2b8f396d 100644 --- a/gcc/config/rs6000/476.h +++ b/gcc/config/rs6000/476.h @@ -1,5 +1,5 @@ /* Enable IBM PowerPC 476 support. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Peter Bergner (bergner@vnet.ibm.com) This file is part of GCC. diff --git a/gcc/config/rs6000/476.md b/gcc/config/rs6000/476.md index 4254659d708..3921bbd9808 100644 --- a/gcc/config/rs6000/476.md +++ b/gcc/config/rs6000/476.md @@ -1,5 +1,5 @@ ;; Scheduling description for IBM PowerPC 476 processor. -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by Peter Bergner (bergner@vnet.ibm.com). ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/476.opt b/gcc/config/rs6000/476.opt index 7d01b3f19a8..761c5e52b74 100644 --- a/gcc/config/rs6000/476.opt +++ b/gcc/config/rs6000/476.opt @@ -1,6 +1,6 @@ ; IBM PowerPC 476 options. ; -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; Contributed by Peter Bergner (bergner@vnet.ibm.com) ; ; This file is part of GCC. diff --git a/gcc/config/rs6000/601.md b/gcc/config/rs6000/601.md index d9170dc8ecf..d2f6825e569 100644 --- a/gcc/config/rs6000/601.md +++ b/gcc/config/rs6000/601.md @@ -1,5 +1,5 @@ ;; Scheduling description for PowerPC 601 processor. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/603.md b/gcc/config/rs6000/603.md index 00627f9e158..1b4141c14c8 100644 --- a/gcc/config/rs6000/603.md +++ b/gcc/config/rs6000/603.md @@ -1,5 +1,5 @@ ;; Scheduling description for PowerPC 603 processor. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/6xx.md b/gcc/config/rs6000/6xx.md index 361989d43ff..65e06674ac1 100644 --- a/gcc/config/rs6000/6xx.md +++ b/gcc/config/rs6000/6xx.md @@ -1,6 +1,6 @@ ;; Scheduling description for PowerPC 604, PowerPC 604e, PowerPC 620, ;; and PowerPC 630 processors. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/7450.md b/gcc/config/rs6000/7450.md index 59fe15fdacd..7a9bbdd5f89 100644 --- a/gcc/config/rs6000/7450.md +++ b/gcc/config/rs6000/7450.md @@ -1,5 +1,5 @@ ;; Scheduling description for Motorola PowerPC 7450 processor. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/750cl.h b/gcc/config/rs6000/750cl.h index dfb5459b870..218226bb1b0 100644 --- a/gcc/config/rs6000/750cl.h +++ b/gcc/config/rs6000/750cl.h @@ -1,5 +1,5 @@ /* Enable 750cl paired single support. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Revital Eres (eres@il.ibm.com) This file is part of GCC. diff --git a/gcc/config/rs6000/7xx.md b/gcc/config/rs6000/7xx.md index 32dc20b456d..30c2d26484f 100644 --- a/gcc/config/rs6000/7xx.md +++ b/gcc/config/rs6000/7xx.md @@ -1,5 +1,5 @@ ;; Scheduling description for Motorola PowerPC 750 and PowerPC 7400 processors. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/8540.md b/gcc/config/rs6000/8540.md index 26d7ce45b6e..7913bcdd15c 100644 --- a/gcc/config/rs6000/8540.md +++ b/gcc/config/rs6000/8540.md @@ -1,5 +1,5 @@ ;; Pipeline description for Motorola PowerPC 8540 processor. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/a2.md b/gcc/config/rs6000/a2.md index 571e2565ffe..b511688987b 100644 --- a/gcc/config/rs6000/a2.md +++ b/gcc/config/rs6000/a2.md @@ -1,5 +1,5 @@ ;; Scheduling description for PowerPC A2 processors. -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by Ben Elliston (bje@au.ibm.com) ;; This file is part of GCC. diff --git a/gcc/config/rs6000/aix-stdint.h b/gcc/config/rs6000/aix-stdint.h index b62ae45b766..0f49bb0189e 100644 --- a/gcc/config/rs6000/aix-stdint.h +++ b/gcc/config/rs6000/aix-stdint.h @@ -1,5 +1,5 @@ /* Definitions for types on systems using AIX. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/aix.h b/gcc/config/rs6000/aix.h index 1a879da49cc..5ab01848643 100644 --- a/gcc/config/rs6000/aix.h +++ b/gcc/config/rs6000/aix.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for IBM RS/6000 POWER running AIX. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/aix43.h b/gcc/config/rs6000/aix43.h index b27c046021a..1274d4489c9 100644 --- a/gcc/config/rs6000/aix43.h +++ b/gcc/config/rs6000/aix43.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for IBM RS/6000 POWER running AIX version 4.3. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Contributed by David Edelsohn (edelsohn@gnu.org). This file is part of GCC. diff --git a/gcc/config/rs6000/aix51.h b/gcc/config/rs6000/aix51.h index 3837bfdc0bb..caca74bb309 100644 --- a/gcc/config/rs6000/aix51.h +++ b/gcc/config/rs6000/aix51.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for IBM RS/6000 POWER running AIX V5. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by David Edelsohn (edelsohn@gnu.org). This file is part of GCC. diff --git a/gcc/config/rs6000/aix52.h b/gcc/config/rs6000/aix52.h index 51954718b2e..a90c926b825 100644 --- a/gcc/config/rs6000/aix52.h +++ b/gcc/config/rs6000/aix52.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for IBM RS/6000 POWER running AIX V5.2. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by David Edelsohn (edelsohn@gnu.org). This file is part of GCC. diff --git a/gcc/config/rs6000/aix53.h b/gcc/config/rs6000/aix53.h index b3bd73a6988..65887c904f9 100644 --- a/gcc/config/rs6000/aix53.h +++ b/gcc/config/rs6000/aix53.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for IBM RS/6000 POWER running AIX V5.3. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by David Edelsohn (edelsohn@gnu.org). This file is part of GCC. diff --git a/gcc/config/rs6000/aix61.h b/gcc/config/rs6000/aix61.h index b0778143773..e21a23030b5 100644 --- a/gcc/config/rs6000/aix61.h +++ b/gcc/config/rs6000/aix61.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for IBM RS/6000 POWER running AIX V6.1. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by David Edelsohn (edelsohn@gnu.org). This file is part of GCC. diff --git a/gcc/config/rs6000/aix64.opt b/gcc/config/rs6000/aix64.opt index e4607d2d0ca..78a3b6cae82 100644 --- a/gcc/config/rs6000/aix64.opt +++ b/gcc/config/rs6000/aix64.opt @@ -1,6 +1,6 @@ ; Options for the 64-bit flavor of AIX. ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; Contributed by Aldy Hernandez . ; ; This file is part of GCC. diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h index 4b91c5c5e24..3bbd30000f0 100644 --- a/gcc/config/rs6000/altivec.h +++ b/gcc/config/rs6000/altivec.h @@ -1,5 +1,5 @@ /* PowerPC AltiVec include file. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez (aldyh@redhat.com). Rewritten by Paolo Bonzini (bonzini@gnu.org). diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md index 23a425e30cb..d65f6a960a6 100644 --- a/gcc/config/rs6000/altivec.md +++ b/gcc/config/rs6000/altivec.md @@ -1,5 +1,5 @@ ;; AltiVec patterns. -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; Contributed by Aldy Hernandez (aldy@quesejoda.com) ;; This file is part of GCC. diff --git a/gcc/config/rs6000/biarch64.h b/gcc/config/rs6000/biarch64.h index 69bf4ba4a3f..b4308e67e02 100644 --- a/gcc/config/rs6000/biarch64.h +++ b/gcc/config/rs6000/biarch64.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for 32/64 bit powerpc. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/cell.md b/gcc/config/rs6000/cell.md index c3ee53da7ba..642d5af71e9 100644 --- a/gcc/config/rs6000/cell.md +++ b/gcc/config/rs6000/cell.md @@ -1,5 +1,5 @@ ;; Scheduling description for cell processor. -;; Copyright (C) 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 2001-2014 Free Software Foundation, Inc. ;; Contributed by Sony Computer Entertainment, Inc., diff --git a/gcc/config/rs6000/constraints.md b/gcc/config/rs6000/constraints.md index 4467b9e3d8b..50b0e297214 100644 --- a/gcc/config/rs6000/constraints.md +++ b/gcc/config/rs6000/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for RS6000 -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/rs6000/crypto.md b/gcc/config/rs6000/crypto.md index 9f7e4a1b255..b2704a92eed 100644 --- a/gcc/config/rs6000/crypto.md +++ b/gcc/config/rs6000/crypto.md @@ -1,5 +1,5 @@ ;; Cryptographic instructions added in ISA 2.07 -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Michael Meissner (meissner@linux.vnet.ibm.com) ;; This file is part of GCC. diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h index d5919c4c71d..43a2ab514dc 100644 --- a/gcc/config/rs6000/darwin.h +++ b/gcc/config/rs6000/darwin.h @@ -1,5 +1,5 @@ /* Target definitions for PowerPC running Darwin (Mac OS X). - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. Contributed by Apple Computer Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/darwin.md b/gcc/config/rs6000/darwin.md index 2f15c5389c6..8b816b7a81d 100644 --- a/gcc/config/rs6000/darwin.md +++ b/gcc/config/rs6000/darwin.md @@ -1,5 +1,5 @@ /* Machine description patterns for PowerPC running Darwin (Mac OS X). - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Apple Computer Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/darwin.opt b/gcc/config/rs6000/darwin.opt index c9cdd104bbb..8edfdcb6f3d 100644 --- a/gcc/config/rs6000/darwin.opt +++ b/gcc/config/rs6000/darwin.opt @@ -1,6 +1,6 @@ ; Darwin options for PPC port. ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; Contributed by Aldy Hernandez . ; ; This file is part of GCC. diff --git a/gcc/config/rs6000/darwin64.h b/gcc/config/rs6000/darwin64.h index 9c10e1c9fd3..d960d5eaefd 100644 --- a/gcc/config/rs6000/darwin64.h +++ b/gcc/config/rs6000/darwin64.h @@ -1,5 +1,5 @@ /* Target definitions for PowerPC running Darwin (Mac OS X). - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Apple Computer Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/darwin7.h b/gcc/config/rs6000/darwin7.h index 8d1d2f80230..cf6204c8d58 100644 --- a/gcc/config/rs6000/darwin7.h +++ b/gcc/config/rs6000/darwin7.h @@ -1,5 +1,5 @@ /* Target definitions for Darwin 7.x (Mac OS X) systems. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/darwin8.h b/gcc/config/rs6000/darwin8.h index 391584c9318..28a12632018 100644 --- a/gcc/config/rs6000/darwin8.h +++ b/gcc/config/rs6000/darwin8.h @@ -1,5 +1,5 @@ /* Target definitions for Darwin 8.0 and above (Mac OS X) systems. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/default64.h b/gcc/config/rs6000/default64.h index 9ecd25c2723..48dcdf04ae8 100644 --- a/gcc/config/rs6000/default64.h +++ b/gcc/config/rs6000/default64.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for 64 bit powerpc linux defaulting to -m64. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/dfp.md b/gcc/config/rs6000/dfp.md index 9a846239b04..8e99bc0d787 100644 --- a/gcc/config/rs6000/dfp.md +++ b/gcc/config/rs6000/dfp.md @@ -1,5 +1,5 @@ ;; Decimal Floating Point (DFP) patterns. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; Contributed by Ben Elliston (bje@au.ibm.com) and Peter Bergner ;; (bergner@vnet.ibm.com). diff --git a/gcc/config/rs6000/driver-rs6000.c b/gcc/config/rs6000/driver-rs6000.c index e608dce184c..7df5fbaa5e1 100644 --- a/gcc/config/rs6000/driver-rs6000.c +++ b/gcc/config/rs6000/driver-rs6000.c @@ -1,5 +1,5 @@ /* Subroutines for the gcc driver. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/e300c2c3.md b/gcc/config/rs6000/e300c2c3.md index 8a9b7e1cd2e..80b84f5f296 100644 --- a/gcc/config/rs6000/e300c2c3.md +++ b/gcc/config/rs6000/e300c2c3.md @@ -1,5 +1,5 @@ ;; Pipeline description for Motorola PowerPC e300c3 core. -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Edmar Wienskoski (edmar@freescale.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/e500.h b/gcc/config/rs6000/e500.h index e42bf8e0b53..2fd1d121b81 100644 --- a/gcc/config/rs6000/e500.h +++ b/gcc/config/rs6000/e500.h @@ -1,5 +1,5 @@ /* Enable E500 support. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it diff --git a/gcc/config/rs6000/e500mc.md b/gcc/config/rs6000/e500mc.md index 8b2a826bc64..14056f7d642 100644 --- a/gcc/config/rs6000/e500mc.md +++ b/gcc/config/rs6000/e500mc.md @@ -1,5 +1,5 @@ ;; Pipeline description for Motorola PowerPC e500mc core. -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Edmar Wienskoski (edmar@freescale.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/e500mc64.md b/gcc/config/rs6000/e500mc64.md index b238335eddc..9c29a31e958 100644 --- a/gcc/config/rs6000/e500mc64.md +++ b/gcc/config/rs6000/e500mc64.md @@ -1,5 +1,5 @@ ;; Pipeline description for Freescale PowerPC e500mc64 core. -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by Edmar Wienskoski (edmar@freescale.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/e5500.md b/gcc/config/rs6000/e5500.md index 68cc369dd4c..b2547a03a41 100644 --- a/gcc/config/rs6000/e5500.md +++ b/gcc/config/rs6000/e5500.md @@ -1,5 +1,5 @@ ;; Pipeline description for Freescale PowerPC e5500 core. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Edmar Wienskoski (edmar@freescale.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/e6500.md b/gcc/config/rs6000/e6500.md index cfd4fced82f..2ed550b9264 100644 --- a/gcc/config/rs6000/e6500.md +++ b/gcc/config/rs6000/e6500.md @@ -1,5 +1,5 @@ ;; Pipeline description for Freescale PowerPC e6500 core. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Edmar Wienskoski (edmar@freescale.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/eabi.h b/gcc/config/rs6000/eabi.h index 6afc017689e..f3be1e308b9 100644 --- a/gcc/config/rs6000/eabi.h +++ b/gcc/config/rs6000/eabi.h @@ -1,6 +1,6 @@ /* Core target definitions for GNU compiler for IBM RS/6000 PowerPC targeted to embedded ELF systems. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Cygnus Support. This file is part of GCC. diff --git a/gcc/config/rs6000/eabialtivec.h b/gcc/config/rs6000/eabialtivec.h index e9738aab0c4..d65f0d52922 100644 --- a/gcc/config/rs6000/eabialtivec.h +++ b/gcc/config/rs6000/eabialtivec.h @@ -1,6 +1,6 @@ /* Core target definitions for GNU compiler for PowerPC targeted systems with AltiVec support. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez (aldyh@redhat.com). This file is part of GCC. diff --git a/gcc/config/rs6000/eabisim.h b/gcc/config/rs6000/eabisim.h index 12da21e4e33..27035dc00cd 100644 --- a/gcc/config/rs6000/eabisim.h +++ b/gcc/config/rs6000/eabisim.h @@ -1,6 +1,6 @@ /* Support for GCC on simulated PowerPC systems targeted to embedded ELF systems. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Cygnus Support. This file is part of GCC. diff --git a/gcc/config/rs6000/eabispe.h b/gcc/config/rs6000/eabispe.h index fa171c056c7..9a6a3723510 100644 --- a/gcc/config/rs6000/eabispe.h +++ b/gcc/config/rs6000/eabispe.h @@ -1,6 +1,6 @@ /* Core target definitions for GNU compiler for PowerPC embedded targeted systems with SPE support. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez (aldyh@redhat.com). This file is part of GCC. diff --git a/gcc/config/rs6000/freebsd.h b/gcc/config/rs6000/freebsd.h index d9313e8d03d..9293dcabbe7 100644 --- a/gcc/config/rs6000/freebsd.h +++ b/gcc/config/rs6000/freebsd.h @@ -1,5 +1,5 @@ /* Definitions for PowerPC running FreeBSD using the ELF format - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by David E. O'Brien and BSDi. This file is part of GCC. diff --git a/gcc/config/rs6000/freebsd64.h b/gcc/config/rs6000/freebsd64.h index b764f763dc2..4f678f6f4d1 100644 --- a/gcc/config/rs6000/freebsd64.h +++ b/gcc/config/rs6000/freebsd64.h @@ -1,5 +1,5 @@ /* Definitions for 64-bit PowerPC running FreeBSD using the ELF format - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/genopt.sh b/gcc/config/rs6000/genopt.sh index 0c227c6264e..957c5a609be 100755 --- a/gcc/config/rs6000/genopt.sh +++ b/gcc/config/rs6000/genopt.sh @@ -1,6 +1,6 @@ #!/bin/sh # Generate rs6000-tables.opt from the list of CPUs in rs6000-cpus.def. -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -22,7 +22,7 @@ cat <. ;; This file is part of GCC. diff --git a/gcc/config/rs6000/htmintrin.h b/gcc/config/rs6000/htmintrin.h index 212cc92f851..9c433c43c07 100644 --- a/gcc/config/rs6000/htmintrin.h +++ b/gcc/config/rs6000/htmintrin.h @@ -1,5 +1,5 @@ /* Hardware Transactional Memory (HTM) intrinsics. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Peter Bergner . This file is free software; you can redistribute it and/or modify it under diff --git a/gcc/config/rs6000/htmxlintrin.h b/gcc/config/rs6000/htmxlintrin.h index c2077d2a370..38dc066d30e 100644 --- a/gcc/config/rs6000/htmxlintrin.h +++ b/gcc/config/rs6000/htmxlintrin.h @@ -1,5 +1,5 @@ /* XL compiler Hardware Transactional Memory (HTM) execution intrinsics. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Peter Bergner . This file is free software; you can redistribute it and/or modify it under diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h index 694367030df..1f4579f3378 100644 --- a/gcc/config/rs6000/linux.h +++ b/gcc/config/rs6000/linux.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for PowerPC machines running Linux. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Michael Meissner (meissner@cygnus.com). This file is part of GCC. diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h index 1870c327da0..dbc9a527efa 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for 64 bit PowerPC linux. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/linux64.opt b/gcc/config/rs6000/linux64.opt index c3b5b3e4b7c..a108ca322d0 100644 --- a/gcc/config/rs6000/linux64.opt +++ b/gcc/config/rs6000/linux64.opt @@ -1,6 +1,6 @@ ; Options for 64-bit PowerPC Linux. ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; Contributed by Aldy Hernandez . ; ; This file is part of GCC. diff --git a/gcc/config/rs6000/linuxaltivec.h b/gcc/config/rs6000/linuxaltivec.h index f778dd8f737..ebd03c94ffb 100644 --- a/gcc/config/rs6000/linuxaltivec.h +++ b/gcc/config/rs6000/linuxaltivec.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for AltiVec enhanced PowerPC machines running GNU/Linux. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez (aldyh@redhat.com). This file is part of GCC. diff --git a/gcc/config/rs6000/linuxspe.h b/gcc/config/rs6000/linuxspe.h index 54b0d115950..5d9729d9f71 100644 --- a/gcc/config/rs6000/linuxspe.h +++ b/gcc/config/rs6000/linuxspe.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for PowerPC e500 machines running GNU/Linux. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez (aldy@quesejoda.com). This file is part of GCC. diff --git a/gcc/config/rs6000/lynx.h b/gcc/config/rs6000/lynx.h index 249a1426b5d..6377846cf88 100644 --- a/gcc/config/rs6000/lynx.h +++ b/gcc/config/rs6000/lynx.h @@ -1,5 +1,5 @@ /* Definitions for Rs6000 running LynxOS. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by David Henkel-Wallace, Cygnus Support (gumby@cygnus.com) Rewritten by Adam Nemet, LynuxWorks Inc. diff --git a/gcc/config/rs6000/mpc.md b/gcc/config/rs6000/mpc.md index 381db5b3e49..65cc5a4a3b9 100644 --- a/gcc/config/rs6000/mpc.md +++ b/gcc/config/rs6000/mpc.md @@ -1,5 +1,5 @@ ;; Scheduling description for Motorola PowerPC processor cores. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/rs6000/netbsd.h b/gcc/config/rs6000/netbsd.h index d811d273c54..a2be6df105d 100644 --- a/gcc/config/rs6000/netbsd.h +++ b/gcc/config/rs6000/netbsd.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for PowerPC NetBSD systems. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Wasabi Systems, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/option-defaults.h b/gcc/config/rs6000/option-defaults.h index 0d7ba1ea3ac..dc4cce0d6ce 100644 --- a/gcc/config/rs6000/option-defaults.h +++ b/gcc/config/rs6000/option-defaults.h @@ -1,5 +1,5 @@ /* Definitions of default options for config/rs6000 configurations. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/paired.h b/gcc/config/rs6000/paired.h index 0b92da6bdd1..44bcb45b380 100644 --- a/gcc/config/rs6000/paired.h +++ b/gcc/config/rs6000/paired.h @@ -1,5 +1,5 @@ /* PowerPC 750CL user include file. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Revital Eres (eres@il.ibm.com). This file is part of GCC. diff --git a/gcc/config/rs6000/paired.md b/gcc/config/rs6000/paired.md index 5cb8cf006cc..7a0ed22c3e7 100644 --- a/gcc/config/rs6000/paired.md +++ b/gcc/config/rs6000/paired.md @@ -1,5 +1,5 @@ ;; PowerPC paired single and double hummer description -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; Contributed by David Edelsohn and Revital Eres ;; diff --git a/gcc/config/rs6000/power4.md b/gcc/config/rs6000/power4.md index 468cc60cd60..196f40c261e 100644 --- a/gcc/config/rs6000/power4.md +++ b/gcc/config/rs6000/power4.md @@ -1,5 +1,5 @@ ;; Scheduling description for IBM Power4 and PowerPC 970 processors. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/rs6000/power5.md b/gcc/config/rs6000/power5.md index 0cd9d1a2faa..fcd7e8e84ae 100644 --- a/gcc/config/rs6000/power5.md +++ b/gcc/config/rs6000/power5.md @@ -1,5 +1,5 @@ ;; Scheduling description for IBM POWER5 processor. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/rs6000/power6.md b/gcc/config/rs6000/power6.md index ed33374cf32..4ed721eef16 100644 --- a/gcc/config/rs6000/power6.md +++ b/gcc/config/rs6000/power6.md @@ -1,5 +1,5 @@ ;; Scheduling description for IBM POWER6 processor. -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; Contributed by Peter Steinmetz (steinmtz@us.ibm.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/power7.md b/gcc/config/rs6000/power7.md index 52db123a403..3578c97ead4 100644 --- a/gcc/config/rs6000/power7.md +++ b/gcc/config/rs6000/power7.md @@ -1,5 +1,5 @@ ;; Scheduling description for IBM POWER7 processor. -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; ;; Contributed by Pat Haugen (pthaugen@us.ibm.com). diff --git a/gcc/config/rs6000/power8.md b/gcc/config/rs6000/power8.md index 83bf7197483..b6bb853e18c 100644 --- a/gcc/config/rs6000/power8.md +++ b/gcc/config/rs6000/power8.md @@ -1,5 +1,5 @@ ;; Scheduling description for IBM POWER8 processor. -;; Copyright (C) 2013 Free Software Foundation, Inc. +;; Copyright (C) 2013-2014 Free Software Foundation, Inc. ;; ;; Contributed by Pat Haugen (pthaugen@us.ibm.com). diff --git a/gcc/config/rs6000/ppc-asm.h b/gcc/config/rs6000/ppc-asm.h index 8108efd07f5..c26a11a980e 100644 --- a/gcc/config/rs6000/ppc-asm.h +++ b/gcc/config/rs6000/ppc-asm.h @@ -1,6 +1,6 @@ /* PowerPC asm definitions for GNU C. -Copyright (C) 2002-2013 Free Software Foundation, Inc. +Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/ppu_intrinsics.h b/gcc/config/rs6000/ppu_intrinsics.h index ca502a944c5..f572f29b015 100644 --- a/gcc/config/rs6000/ppu_intrinsics.h +++ b/gcc/config/rs6000/ppu_intrinsics.h @@ -1,5 +1,5 @@ /* PPU intrinsics as defined by the C/C++ Language extension for Cell BEA. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md index c3118beb516..0bfc85e4ead 100644 --- a/gcc/config/rs6000/predicates.md +++ b/gcc/config/rs6000/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for POWER and PowerPC. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/rs6000/rs6000-builtin.def b/gcc/config/rs6000/rs6000-builtin.def index 3dab7321cac..4bbccbd7d82 100644 --- a/gcc/config/rs6000/rs6000-builtin.def +++ b/gcc/config/rs6000/rs6000-builtin.def @@ -1,5 +1,5 @@ /* Builtin functions for rs6000/powerpc. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Michael Meissner (meissner@linux.vnet.ibm.com) This file is part of GCC. diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index 667e5a6de18..a8e581661fb 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -1,5 +1,5 @@ /* Subroutines for the C front end on the PowerPC architecture. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Zack Weinberg and Paolo Bonzini diff --git a/gcc/config/rs6000/rs6000-cpus.def b/gcc/config/rs6000/rs6000-cpus.def index 548566eee8b..bf109a0454c 100644 --- a/gcc/config/rs6000/rs6000-cpus.def +++ b/gcc/config/rs6000/rs6000-cpus.def @@ -1,5 +1,5 @@ /* IBM RS/6000 CPU names.. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. diff --git a/gcc/config/rs6000/rs6000-linux.c b/gcc/config/rs6000/rs6000-linux.c index 17b51af7ead..c41dbbd2b6a 100644 --- a/gcc/config/rs6000/rs6000-linux.c +++ b/gcc/config/rs6000/rs6000-linux.c @@ -1,5 +1,5 @@ /* Functions for Linux on PowerPC. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/rs6000-modes.def b/gcc/config/rs6000/rs6000-modes.def index a77aa26e850..3de71846bd7 100644 --- a/gcc/config/rs6000/rs6000-modes.def +++ b/gcc/config/rs6000/rs6000-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for IBM RS/6000. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. diff --git a/gcc/config/rs6000/rs6000-opts.h b/gcc/config/rs6000/rs6000-opts.h index 6d6d69379d5..72151d88403 100644 --- a/gcc/config/rs6000/rs6000-opts.h +++ b/gcc/config/rs6000/rs6000-opts.h @@ -1,6 +1,6 @@ /* Definitions of target machine needed for option handling for GNU compiler, for IBM RS/6000. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Michael Meissner (meissner@linux.vnet.ibm.com) This file is part of GCC. diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h index 2ad6f08f47d..9e91081340e 100644 --- a/gcc/config/rs6000/rs6000-protos.h +++ b/gcc/config/rs6000/rs6000-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for IBM RS/6000. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. diff --git a/gcc/config/rs6000/rs6000-tables.opt b/gcc/config/rs6000/rs6000-tables.opt index fa87c7fb419..85678d2bc6a 100644 --- a/gcc/config/rs6000/rs6000-tables.opt +++ b/gcc/config/rs6000/rs6000-tables.opt @@ -1,7 +1,7 @@ ; -*- buffer-read-only: t -*- ; Generated automatically by genopt.sh from rs6000-cpus.def. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 1db97fa0323..b9c6713c436 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on IBM RS/6000. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index eb59235ec61..c34d3d0e8a3 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for IBM RS/6000. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 2a29d821148..f9f988bca1f 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -1,5 +1,5 @@ ;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler -;; Copyright (C) 1990-2013 Free Software Foundation, Inc. +;; Copyright (C) 1990-2014 Free Software Foundation, Inc. ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) ;; This file is part of GCC. diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt index 347f76e207c..fdbc70f9cc6 100644 --- a/gcc/config/rs6000/rs6000.opt +++ b/gcc/config/rs6000/rs6000.opt @@ -1,6 +1,6 @@ ; Options for the rs6000 port of the compiler ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; Contributed by Aldy Hernandez . ; ; This file is part of GCC. diff --git a/gcc/config/rs6000/rs64.md b/gcc/config/rs6000/rs64.md index 9b9645087b2..597f3aeecaf 100644 --- a/gcc/config/rs6000/rs64.md +++ b/gcc/config/rs6000/rs64.md @@ -1,5 +1,5 @@ ;; Scheduling description for IBM RS64 processors. -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/rtems.h b/gcc/config/rs6000/rtems.h index fb22be1e8bb..2402d53364e 100644 --- a/gcc/config/rs6000/rtems.h +++ b/gcc/config/rs6000/rtems.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting a PowerPC using elf. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Joel Sherrill (joel@OARcorp.com). This file is part of GCC. diff --git a/gcc/config/rs6000/secureplt.h b/gcc/config/rs6000/secureplt.h index 39ffb8863cc..01959e3ddbe 100644 --- a/gcc/config/rs6000/secureplt.h +++ b/gcc/config/rs6000/secureplt.h @@ -1,5 +1,5 @@ /* Default to -msecure-plt. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/si2vmx.h b/gcc/config/rs6000/si2vmx.h index e6e8c68c4d8..75f98be141a 100644 --- a/gcc/config/rs6000/si2vmx.h +++ b/gcc/config/rs6000/si2vmx.h @@ -1,5 +1,5 @@ /* Cell BEA specific SPU intrinsics to PPU/VMX intrinsics - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/rs6000/singlefp.h b/gcc/config/rs6000/singlefp.h index a7f34f802d8..7922e5641b8 100644 --- a/gcc/config/rs6000/singlefp.h +++ b/gcc/config/rs6000/singlefp.h @@ -1,7 +1,7 @@ /* Definitions for PowerPC single-precision floating point unit such as Xilinx PowerPC 405/440 APU. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Michael Eager (eager@eagercon.com) This file is part of GCC. diff --git a/gcc/config/rs6000/spe.h b/gcc/config/rs6000/spe.h index adde8309242..f84741e240f 100644 --- a/gcc/config/rs6000/spe.h +++ b/gcc/config/rs6000/spe.h @@ -1,5 +1,5 @@ /* PowerPC E500 user include file. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez (aldyh@redhat.com). This file is part of GCC. diff --git a/gcc/config/rs6000/spe.md b/gcc/config/rs6000/spe.md index bf10a5dc180..ad7eaf0c34e 100644 --- a/gcc/config/rs6000/spe.md +++ b/gcc/config/rs6000/spe.md @@ -1,5 +1,5 @@ ;; e500 SPE description -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; Contributed by Aldy Hernandez (aldy@quesejoda.com) ;; This file is part of GCC. diff --git a/gcc/config/rs6000/spu2vmx.h b/gcc/config/rs6000/spu2vmx.h index 04733e921ce..1e63bf74904 100644 --- a/gcc/config/rs6000/spu2vmx.h +++ b/gcc/config/rs6000/spu2vmx.h @@ -1,5 +1,5 @@ /* Cell SPU 2 VMX intrinsics header - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/rs6000/sync.md b/gcc/config/rs6000/sync.md index 8616b3eca5f..45de1bd1328 100644 --- a/gcc/config/rs6000/sync.md +++ b/gcc/config/rs6000/sync.md @@ -1,5 +1,5 @@ ;; Machine description for PowerPC synchronization instructions. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Geoffrey Keating. ;; This file is part of GCC. diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index 73c3ec16c2c..04d988ebfe8 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -1,5 +1,5 @@ /* Target definitions for GNU compiler for PowerPC running System V.4 - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Cygnus Support. This file is part of GCC. diff --git a/gcc/config/rs6000/sysv4.opt b/gcc/config/rs6000/sysv4.opt index 55b7a4333e8..77f9ddaf86c 100644 --- a/gcc/config/rs6000/sysv4.opt +++ b/gcc/config/rs6000/sysv4.opt @@ -1,6 +1,6 @@ ; SYSV4 options for PPC port. ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; Contributed by Aldy Hernandez . ; ; This file is part of GCC. diff --git a/gcc/config/rs6000/sysv4le.h b/gcc/config/rs6000/sysv4le.h index ba56004cdfb..a8a5cbae6d0 100644 --- a/gcc/config/rs6000/sysv4le.h +++ b/gcc/config/rs6000/sysv4le.h @@ -1,6 +1,6 @@ /* Target definitions for GCC for a little endian PowerPC running System V.4 - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Cygnus Support. This file is part of GCC. diff --git a/gcc/config/rs6000/t-aix43 b/gcc/config/rs6000/t-aix43 index 1f4955cd2e1..f2d005bfb00 100644 --- a/gcc/config/rs6000/t-aix43 +++ b/gcc/config/rs6000/t-aix43 @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2013 Free Software Foundation, Inc. +# Copyright (C) 1998-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-aix52 b/gcc/config/rs6000/t-aix52 index 2ce2fdd681f..d26c0f71700 100644 --- a/gcc/config/rs6000/t-aix52 +++ b/gcc/config/rs6000/t-aix52 @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-fprules b/gcc/config/rs6000/t-fprules index 2ae04da27a3..5361ff3032a 100644 --- a/gcc/config/rs6000/t-fprules +++ b/gcc/config/rs6000/t-fprules @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-freebsd64 b/gcc/config/rs6000/t-freebsd64 index ef26892b86d..e3ba65c947c 100644 --- a/gcc/config/rs6000/t-freebsd64 +++ b/gcc/config/rs6000/t-freebsd64 @@ -1,6 +1,6 @@ #rs6000/t-freebsd64 -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-linux64 b/gcc/config/rs6000/t-linux64 index 0b17ed6a5cf..f6b1b0e7782 100644 --- a/gcc/config/rs6000/t-linux64 +++ b/gcc/config/rs6000/t-linux64 @@ -1,6 +1,6 @@ #rs6000/t-linux64 -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-lynx b/gcc/config/rs6000/t-lynx index 98dc3cd285e..739d4191132 100644 --- a/gcc/config/rs6000/t-lynx +++ b/gcc/config/rs6000/t-lynx @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-netbsd b/gcc/config/rs6000/t-netbsd index 001257c0791..ffdd509dae8 100644 --- a/gcc/config/rs6000/t-netbsd +++ b/gcc/config/rs6000/t-netbsd @@ -1,6 +1,6 @@ # Support for NetBSD PowerPC ELF targets (SVR4 ABI). # -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-ppccomm b/gcc/config/rs6000/t-ppccomm index a2274bc8b69..6be274ae8cb 100644 --- a/gcc/config/rs6000/t-ppccomm +++ b/gcc/config/rs6000/t-ppccomm @@ -1,6 +1,6 @@ # Common support for PowerPC ELF targets (both EABI and SVR4). # -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-ppcendian b/gcc/config/rs6000/t-ppcendian index 051014c56e9..6729d080233 100644 --- a/gcc/config/rs6000/t-ppcendian +++ b/gcc/config/rs6000/t-ppcendian @@ -1,6 +1,6 @@ # Multilibs for powerpc embedded ELF targets with altivec. # -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-ppcgas b/gcc/config/rs6000/t-ppcgas index d1c219b1cd7..cee220f47c3 100644 --- a/gcc/config/rs6000/t-ppcgas +++ b/gcc/config/rs6000/t-ppcgas @@ -1,6 +1,6 @@ # Multilibs for powerpc embedded ELF targets. # -# Copyright (C) 1995-2013 Free Software Foundation, Inc. +# Copyright (C) 1995-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-rs6000 b/gcc/config/rs6000/t-rs6000 index 3123521bd06..9b4baf83340 100644 --- a/gcc/config/rs6000/t-rs6000 +++ b/gcc/config/rs6000/t-rs6000 @@ -1,6 +1,6 @@ # General rules that all rs6000/ targets must have. # -# Copyright (C) 1995-2013 Free Software Foundation, Inc. +# Copyright (C) 1995-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-rtems b/gcc/config/rs6000/t-rtems index e840bbcc31a..426f75ac564 100644 --- a/gcc/config/rs6000/t-rtems +++ b/gcc/config/rs6000/t-rtems @@ -1,6 +1,6 @@ # Multilibs for powerpc RTEMS targets. # -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-spe b/gcc/config/rs6000/t-spe index 8dd3bb96eea..48980d19a08 100644 --- a/gcc/config/rs6000/t-spe +++ b/gcc/config/rs6000/t-spe @@ -1,6 +1,6 @@ # Multilibs for e500 # -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-vxworks b/gcc/config/rs6000/t-vxworks index 1899dff6c28..df727eee97b 100644 --- a/gcc/config/rs6000/t-vxworks +++ b/gcc/config/rs6000/t-vxworks @@ -1,6 +1,6 @@ # Multilibs for VxWorks. # -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/rs6000/t-xilinx b/gcc/config/rs6000/t-xilinx index 1e05215e221..3e822adac77 100644 --- a/gcc/config/rs6000/t-xilinx +++ b/gcc/config/rs6000/t-xilinx @@ -1,6 +1,6 @@ # Multilibs for Xilinx powerpc embedded ELF targets. # -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # Contributed by Michael Eager, eager@eagercon.com # # This file is part of GCC. diff --git a/gcc/config/rs6000/titan.md b/gcc/config/rs6000/titan.md index 138b712b895..c0c3155e4a9 100644 --- a/gcc/config/rs6000/titan.md +++ b/gcc/config/rs6000/titan.md @@ -1,5 +1,5 @@ ;; Pipeline description for the AppliedMicro Titan core. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Theobroma Systems Design und Consulting GmbH ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/vec_types.h b/gcc/config/rs6000/vec_types.h index 35534d3b94a..789e9c1adc3 100644 --- a/gcc/config/rs6000/vec_types.h +++ b/gcc/config/rs6000/vec_types.h @@ -1,5 +1,5 @@ /* Cell single token vector types - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/rs6000/vector.md b/gcc/config/rs6000/vector.md index 9d2bcc1ba48..49da2add797 100644 --- a/gcc/config/rs6000/vector.md +++ b/gcc/config/rs6000/vector.md @@ -3,7 +3,7 @@ ;; expander, and the actual vector instructions will be in altivec.md and ;; vsx.md -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by Michael Meissner ;; This file is part of GCC. diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md index 9eba6752e80..145bf2793d4 100644 --- a/gcc/config/rs6000/vsx.md +++ b/gcc/config/rs6000/vsx.md @@ -1,5 +1,5 @@ ;; VSX patterns. -;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009-2014 Free Software Foundation, Inc. ;; Contributed by Michael Meissner ;; This file is part of GCC. diff --git a/gcc/config/rs6000/vxworks.h b/gcc/config/rs6000/vxworks.h index 427a05102b9..7b4e9b9eba6 100644 --- a/gcc/config/rs6000/vxworks.h +++ b/gcc/config/rs6000/vxworks.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler. Vxworks PowerPC version. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, LLC. This file is part of GCC. diff --git a/gcc/config/rs6000/xcoff.h b/gcc/config/rs6000/xcoff.h index 512bcb5472e..f2b7bd07acf 100644 --- a/gcc/config/rs6000/xcoff.h +++ b/gcc/config/rs6000/xcoff.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for some generic XCOFF file format - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rs6000/xfpu.h b/gcc/config/rs6000/xfpu.h index 3bc7f21b877..841800bc025 100644 --- a/gcc/config/rs6000/xfpu.h +++ b/gcc/config/rs6000/xfpu.h @@ -1,6 +1,6 @@ /* Definitions for Xilinx PowerPC 405/440 APU. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Michael Eager (eager@eagercon.com) This file is part of GCC. diff --git a/gcc/config/rs6000/xfpu.md b/gcc/config/rs6000/xfpu.md index 5965759383c..b1e28b9fefd 100644 --- a/gcc/config/rs6000/xfpu.md +++ b/gcc/config/rs6000/xfpu.md @@ -1,5 +1,5 @@ ;; Scheduling description for the Xilinx PowerPC 405 APU Floating Point Unit. -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Michael Eager (eager@eagercon.com). ;; ;; This file is part of GCC. diff --git a/gcc/config/rs6000/xilinx.h b/gcc/config/rs6000/xilinx.h index 237c1b7af1f..7041208b259 100644 --- a/gcc/config/rs6000/xilinx.h +++ b/gcc/config/rs6000/xilinx.h @@ -1,5 +1,5 @@ /* Support for GCC on Xilinx embedded PowerPC systems - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Michael Eager, eager@eagercon.com This file is part of GCC. diff --git a/gcc/config/rs6000/xilinx.opt b/gcc/config/rs6000/xilinx.opt index f3cd85356e7..96d7962120e 100644 --- a/gcc/config/rs6000/xilinx.opt +++ b/gcc/config/rs6000/xilinx.opt @@ -1,6 +1,6 @@ ; Xilinx embedded PowerPC options. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/rtems.h b/gcc/config/rtems.h index 4d94f82bc63..3da27c57ef4 100644 --- a/gcc/config/rtems.h +++ b/gcc/config/rtems.h @@ -1,5 +1,5 @@ /* Configuration common to all targets running RTEMS. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rtems.opt b/gcc/config/rtems.opt index 0b1a3534ed1..4e96b258d23 100644 --- a/gcc/config/rtems.opt +++ b/gcc/config/rtems.opt @@ -1,6 +1,6 @@ ; RTEMS options. -; Copyright (C) 2010-2013 Free Software Foundation, Inc. +; Copyright (C) 2010-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/rx/constraints.md b/gcc/config/rx/constraints.md index c3fdcc1738e..bf0edcc97db 100644 --- a/gcc/config/rx/constraints.md +++ b/gcc/config/rx/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Renesas RX. -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/rx/predicates.md b/gcc/config/rx/predicates.md index 800e860e74b..85c9521b211 100644 --- a/gcc/config/rx/predicates.md +++ b/gcc/config/rx/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Renesas RX. -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; ;; This file is part of GCC. diff --git a/gcc/config/rx/rx-modes.def b/gcc/config/rx/rx-modes.def index f9dfdeff053..655d7575b2e 100644 --- a/gcc/config/rx/rx-modes.def +++ b/gcc/config/rx/rx-modes.def @@ -1,5 +1,5 @@ /* Definitions of target specific machine modes for the RX. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/rx/rx-opts.h b/gcc/config/rx/rx-opts.h index 4d5455e8d8d..6451dc64410 100644 --- a/gcc/config/rx/rx-opts.h +++ b/gcc/config/rx/rx-opts.h @@ -1,5 +1,5 @@ /* GCC option-handling definitions for the Renesas RX processor. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/rx/rx-protos.h b/gcc/config/rx/rx-protos.h index e50a0c14e93..189afb07ebc 100644 --- a/gcc/config/rx/rx-protos.h +++ b/gcc/config/rx/rx-protos.h @@ -1,5 +1,5 @@ /* Exported function prototypes from the Renesas RX backend. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c index 662ab9b72cc..4242c1a9717 100644 --- a/gcc/config/rx/rx.c +++ b/gcc/config/rx/rx.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on Renesas RX processors. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/rx/rx.h b/gcc/config/rx/rx.h index ec2770be161..d99b19ad202 100644 --- a/gcc/config/rx/rx.h +++ b/gcc/config/rx/rx.h @@ -1,5 +1,5 @@ /* GCC backend definitions for the Renesas RX processor. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Red Hat. This file is part of GCC. diff --git a/gcc/config/rx/rx.md b/gcc/config/rx/rx.md index 692b7d220a3..f5d86c86f4a 100644 --- a/gcc/config/rx/rx.md +++ b/gcc/config/rx/rx.md @@ -1,5 +1,5 @@ ;; Machine Description for Renesas RX processors -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat. ;; This file is part of GCC. diff --git a/gcc/config/rx/rx.opt b/gcc/config/rx/rx.opt index 12312cfef6b..53e57298707 100644 --- a/gcc/config/rx/rx.opt +++ b/gcc/config/rx/rx.opt @@ -1,5 +1,5 @@ ; Command line options for the Renesas RX port of GCC. -; Copyright (C) 2008-2013 Free Software Foundation, Inc. +; Copyright (C) 2008-2014 Free Software Foundation, Inc. ; Contributed by Red Hat. ; ; This file is part of GCC. diff --git a/gcc/config/rx/t-rx b/gcc/config/rx/t-rx index 41a3d3a98dc..e7f6e82e1fb 100644 --- a/gcc/config/rx/t-rx +++ b/gcc/config/rx/t-rx @@ -1,5 +1,5 @@ # Makefile fragment for building GCC for the Renesas RX target. -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # Contributed by Red Hat. # # This file is part of GCC. diff --git a/gcc/config/s390/2064.md b/gcc/config/s390/2064.md index fe7d69fc417..a17a8d96bad 100644 --- a/gcc/config/s390/2064.md +++ b/gcc/config/s390/2064.md @@ -1,5 +1,5 @@ ;; Scheduling description for z900 (cpu 2064). -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; Contributed by Hartmut Penner (hpenner@de.ibm.com) and ;; Ulrich Weigand (uweigand@de.ibm.com). diff --git a/gcc/config/s390/2084.md b/gcc/config/s390/2084.md index 05baa00ca1d..6a568de32ab 100644 --- a/gcc/config/s390/2084.md +++ b/gcc/config/s390/2084.md @@ -1,5 +1,5 @@ ;; Scheduling description for z990 (cpu 2084). -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; Contributed by Hartmut Penner (hpenner@de.ibm.com) and ;; Ulrich Weigand (uweigand@de.ibm.com). diff --git a/gcc/config/s390/2097.md b/gcc/config/s390/2097.md index 7df8efbe993..5c4f8a890d5 100644 --- a/gcc/config/s390/2097.md +++ b/gcc/config/s390/2097.md @@ -1,5 +1,5 @@ ;; Scheduling description for z10 (cpu 2097). -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; Contributed by Wolfgang Gellerich (gellerich@de.ibm.com). diff --git a/gcc/config/s390/2817.md b/gcc/config/s390/2817.md index e670db10879..54b30cd3943 100644 --- a/gcc/config/s390/2817.md +++ b/gcc/config/s390/2817.md @@ -1,5 +1,5 @@ ;; Scheduling description for z196 (cpu 2817). -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; Contributed by Christian Borntraeger (Christian.Borntraeger@de.ibm.com) ;; Andreas Krebbel (Andreas.Krebbel@de.ibm.com) diff --git a/gcc/config/s390/2827.md b/gcc/config/s390/2827.md index 5be7cfaabfb..913b229424a 100644 --- a/gcc/config/s390/2827.md +++ b/gcc/config/s390/2827.md @@ -1,5 +1,5 @@ ;; Scheduling description for zEC12 (cpu 2827). -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com) ;; This file is part of GCC. diff --git a/gcc/config/s390/constraints.md b/gcc/config/s390/constraints.md index 55be89cc70b..404424d9431 100644 --- a/gcc/config/s390/constraints.md +++ b/gcc/config/s390/constraints.md @@ -1,5 +1,5 @@ ;; Constraints definitions belonging to the gcc backend for IBM S/390. -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; Written by Wolfgang Gellerich, using code and information found in ;; files s390.md, s390.h, and s390.c. ;; diff --git a/gcc/config/s390/htmintrin.h b/gcc/config/s390/htmintrin.h index 7aaa9f5bf7c..827e596b7a3 100644 --- a/gcc/config/s390/htmintrin.h +++ b/gcc/config/s390/htmintrin.h @@ -1,5 +1,5 @@ /* GNU compiler hardware transactional execution intrinsics - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com) This file is part of GCC. diff --git a/gcc/config/s390/htmxlintrin.h b/gcc/config/s390/htmxlintrin.h index d1c7ec566e1..94784a014e6 100644 --- a/gcc/config/s390/htmxlintrin.h +++ b/gcc/config/s390/htmxlintrin.h @@ -1,5 +1,5 @@ /* XL compiler hardware transactional execution intrinsics - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com) This file is part of GCC. diff --git a/gcc/config/s390/linux.h b/gcc/config/s390/linux.h index 699b5dfb7e2..65ac22955e6 100644 --- a/gcc/config/s390/linux.h +++ b/gcc/config/s390/linux.h @@ -1,5 +1,5 @@ /* Definitions for Linux for S/390. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Hartmut Penner (hpenner@de.ibm.com) and Ulrich Weigand (uweigand@de.ibm.com). diff --git a/gcc/config/s390/predicates.md b/gcc/config/s390/predicates.md index 069b42489a7..0191b93f9a2 100644 --- a/gcc/config/s390/predicates.md +++ b/gcc/config/s390/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for S/390 and zSeries. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Hartmut Penner (hpenner@de.ibm.com) and ;; Ulrich Weigand (uweigand@de.ibm.com). ;; diff --git a/gcc/config/s390/s390-modes.def b/gcc/config/s390/s390-modes.def index 5e0b50cafa1..0e5f021e9b0 100644 --- a/gcc/config/s390/s390-modes.def +++ b/gcc/config/s390/s390-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for IBM S/390 - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Hartmut Penner (hpenner@de.ibm.com) and Ulrich Weigand (uweigand@de.ibm.com). diff --git a/gcc/config/s390/s390-opts.h b/gcc/config/s390/s390-opts.h index e0bb42ddbb3..5718afaaed2 100644 --- a/gcc/config/s390/s390-opts.h +++ b/gcc/config/s390/s390-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for IBM S/390. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/s390/s390-protos.h b/gcc/config/s390/s390-protos.h index 7b43ed01b65..72f8bb72a00 100644 --- a/gcc/config/s390/s390-protos.h +++ b/gcc/config/s390/s390-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for IBM S/390. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Hartmut Penner (hpenner@de.ibm.com) diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 5319a69e6e6..3d480fd631b 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on IBM S/390 and zSeries - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Hartmut Penner (hpenner@de.ibm.com) and Ulrich Weigand (uweigand@de.ibm.com) and Andreas Krebbel (Andreas.Krebbel@de.ibm.com). diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h index 75b642b4c2b..9099fc85b21 100644 --- a/gcc/config/s390/s390.h +++ b/gcc/config/s390/s390.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for IBM S/390 - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Hartmut Penner (hpenner@de.ibm.com) and Ulrich Weigand (uweigand@de.ibm.com). Andreas Krebbel (Andreas.Krebbel@de.ibm.com) diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index d537d29d24f..bccc159abc7 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -1,5 +1,5 @@ ;;- Machine description for GNU compiler -- S/390 / zSeries version. -;; Copyright (C) 1999-2013 Free Software Foundation, Inc. +;; Copyright (C) 1999-2014 Free Software Foundation, Inc. ;; Contributed by Hartmut Penner (hpenner@de.ibm.com) and ;; Ulrich Weigand (uweigand@de.ibm.com) and ;; Andreas Krebbel (Andreas.Krebbel@de.ibm.com) diff --git a/gcc/config/s390/s390.opt b/gcc/config/s390/s390.opt index ef92f465baf..7780f877c7a 100644 --- a/gcc/config/s390/s390.opt +++ b/gcc/config/s390/s390.opt @@ -1,6 +1,6 @@ ; Options for the S/390 / zSeries port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/s390/s390intrin.h b/gcc/config/s390/s390intrin.h index e1a00ce58e3..f91ea6c4f42 100644 --- a/gcc/config/s390/s390intrin.h +++ b/gcc/config/s390/s390intrin.h @@ -1,5 +1,5 @@ /* S/390 System z specific intrinsics - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com) This file is part of GCC. diff --git a/gcc/config/s390/s390x.h b/gcc/config/s390/s390x.h index ce7932c4a90..f7640f22089 100644 --- a/gcc/config/s390/s390x.h +++ b/gcc/config/s390/s390x.h @@ -1,5 +1,5 @@ /* Definitions of target machine for IBM zSeries 64-bit - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Hartmut Penner (hpenner@de.ibm.com) and Ulrich Weigand (uweigand@de.ibm.com). diff --git a/gcc/config/s390/tpf.h b/gcc/config/s390/tpf.h index a1af01b07b6..e71037479f2 100644 --- a/gcc/config/s390/tpf.h +++ b/gcc/config/s390/tpf.h @@ -1,5 +1,5 @@ /* Definitions for target OS TPF for GNU compiler, for IBM S/390 hardware - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by P.J. Darcy (darcypj@us.ibm.com), Hartmut Penner (hpenner@de.ibm.com), and Ulrich Weigand (uweigand@de.ibm.com). diff --git a/gcc/config/s390/tpf.md b/gcc/config/s390/tpf.md index db944307696..0c27247fc47 100644 --- a/gcc/config/s390/tpf.md +++ b/gcc/config/s390/tpf.md @@ -1,5 +1,5 @@ ;; S390 TPF-OS specific machine patterns -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/s390/tpf.opt b/gcc/config/s390/tpf.opt index 9750799bfe0..1dbf8ee35ed 100644 --- a/gcc/config/s390/tpf.opt +++ b/gcc/config/s390/tpf.opt @@ -1,6 +1,6 @@ ; Options for the TPF-OS port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/score/constraints.md b/gcc/config/score/constraints.md index 29e5cbec17d..50b0ebfda73 100644 --- a/gcc/config/score/constraints.md +++ b/gcc/config/score/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for S+CORE -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Sunnorth. ;; This file is part of GCC. diff --git a/gcc/config/score/elf.h b/gcc/config/score/elf.h index 4f9ec3ec201..a3fb8a9301e 100644 --- a/gcc/config/score/elf.h +++ b/gcc/config/score/elf.h @@ -1,5 +1,5 @@ /* elf.h for Sunplus S+CORE processor - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/score/predicates.md b/gcc/config/score/predicates.md index 871d97cd586..543be726049 100644 --- a/gcc/config/score/predicates.md +++ b/gcc/config/score/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Sunplus S+CORE. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/score/score-conv.h b/gcc/config/score/score-conv.h index 6f0b9ed5e08..c362d9f2db4 100644 --- a/gcc/config/score/score-conv.h +++ b/gcc/config/score/score-conv.h @@ -1,5 +1,5 @@ /* score-conv.h for Sunplus S+CORE processor - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/score/score-generic.md b/gcc/config/score/score-generic.md index 27a94696ba6..4f155f9f4fd 100644 --- a/gcc/config/score/score-generic.md +++ b/gcc/config/score/score-generic.md @@ -1,6 +1,6 @@ ;; Machine description for Sunplus S+CORE ;; Sunplus S+CORE Pipeline Description -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Sunnorth. ;; This file is part of GCC. diff --git a/gcc/config/score/score-modes.def b/gcc/config/score/score-modes.def index 92fb61d06b8..dc1b386618a 100644 --- a/gcc/config/score/score-modes.def +++ b/gcc/config/score/score-modes.def @@ -1,5 +1,5 @@ /* score-modes.def for Sunplus S+CORE processor - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/score/score-protos.h b/gcc/config/score/score-protos.h index 74c288d0c8e..8a83a532984 100644 --- a/gcc/config/score/score-protos.h +++ b/gcc/config/score/score-protos.h @@ -1,5 +1,5 @@ /* score-protos.h for Sunplus S+CORE processor - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/score/score.c b/gcc/config/score/score.c index 30b49edb8c3..e238d6d092c 100644 --- a/gcc/config/score/score.c +++ b/gcc/config/score/score.c @@ -1,5 +1,5 @@ /* Output routines for Sunplus S+CORE processor - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Sunnorth. This file is part of GCC. diff --git a/gcc/config/score/score.h b/gcc/config/score/score.h index ca73401fc59..125a209637c 100644 --- a/gcc/config/score/score.h +++ b/gcc/config/score/score.h @@ -1,5 +1,5 @@ /* score.h for Sunplus S+CORE processor - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Sunnorth. This file is part of GCC. diff --git a/gcc/config/score/score.md b/gcc/config/score/score.md index b2226d3399b..a4ffb3a2b8b 100644 --- a/gcc/config/score/score.md +++ b/gcc/config/score/score.md @@ -1,5 +1,5 @@ ;; Machine description for Sunplus S+CORE -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; Contributed by Sunnorth. ;; This file is part of GCC. diff --git a/gcc/config/score/score.opt b/gcc/config/score/score.opt index 241f1891efc..7761fe0939a 100644 --- a/gcc/config/score/score.opt +++ b/gcc/config/score/score.opt @@ -1,6 +1,6 @@ ; Options for the Sunnorth port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/sh/constraints.md b/gcc/config/sh/constraints.md index df7823764e5..17a448fc0cf 100644 --- a/gcc/config/sh/constraints.md +++ b/gcc/config/sh/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Renesas / SuperH SH. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sh/divcost-analysis b/gcc/config/sh/divcost-analysis index f4924085c3c..9fb6e6fa542 100644 --- a/gcc/config/sh/divcost-analysis +++ b/gcc/config/sh/divcost-analysis @@ -81,7 +81,7 @@ jmp @r0 ; 2 cycles worse than SFUNC_STATIC -Copyright (C) 2006-2013 Free Software Foundation, Inc. +Copyright (C) 2006-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/config/sh/divtab-sh4-300.c b/gcc/config/sh/divtab-sh4-300.c index d4a49441714..4941626a85a 100644 --- a/gcc/config/sh/divtab-sh4-300.c +++ b/gcc/config/sh/divtab-sh4-300.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2013 Free Software Foundation, Inc. +/* Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/config/sh/divtab-sh4.c b/gcc/config/sh/divtab-sh4.c index 35336fe2d36..421571e1e79 100644 --- a/gcc/config/sh/divtab-sh4.c +++ b/gcc/config/sh/divtab-sh4.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2013 Free Software Foundation, Inc. +/* Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/config/sh/divtab.c b/gcc/config/sh/divtab.c index f5f0bb436c8..40a26eb74ef 100644 --- a/gcc/config/sh/divtab.c +++ b/gcc/config/sh/divtab.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2003-2013 Free Software Foundation, Inc. +/* Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/config/sh/elf.h b/gcc/config/sh/elf.h index 253cc8805b6..24b5c981508 100644 --- a/gcc/config/sh/elf.h +++ b/gcc/config/sh/elf.h @@ -1,5 +1,5 @@ /* Definitions of target machine for gcc for Renesas / SuperH SH using ELF. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Ian Lance Taylor . This file is part of GCC. diff --git a/gcc/config/sh/embed-elf.h b/gcc/config/sh/embed-elf.h index 882e1c1f346..38042575141 100644 --- a/gcc/config/sh/embed-elf.h +++ b/gcc/config/sh/embed-elf.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler for Renesas / SuperH SH non-Linux embedded targets. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by J"orn Rennecke This file is part of GCC. diff --git a/gcc/config/sh/iterators.md b/gcc/config/sh/iterators.md index 1af06b047f0..5f020c72aa1 100644 --- a/gcc/config/sh/iterators.md +++ b/gcc/config/sh/iterators.md @@ -1,5 +1,5 @@ ;; Iterator definitions for GCC SH machine description files. -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h index 9e8f32d06d1..c0a4ebd3e47 100644 --- a/gcc/config/sh/linux.h +++ b/gcc/config/sh/linux.h @@ -1,5 +1,5 @@ /* Definitions for SH running Linux-based GNU systems using ELF - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Kazumoto Kojima This file is part of GCC. diff --git a/gcc/config/sh/little.h b/gcc/config/sh/little.h index 5f99f0dee0e..8ab61ea5a7a 100644 --- a/gcc/config/sh/little.h +++ b/gcc/config/sh/little.h @@ -1,6 +1,6 @@ /* Definition of little endian SH machine for GNU compiler. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sh/netbsd-elf.h b/gcc/config/sh/netbsd-elf.h index 807638a0f79..8100cee5d5b 100644 --- a/gcc/config/sh/netbsd-elf.h +++ b/gcc/config/sh/netbsd-elf.h @@ -1,5 +1,5 @@ /* Definitions for SH running NetBSD using ELF - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Wasabi Systems, Inc. This file is part of GCC. diff --git a/gcc/config/sh/newlib.h b/gcc/config/sh/newlib.h index 4a02f0b9e7e..d3fcf150c8b 100644 --- a/gcc/config/sh/newlib.h +++ b/gcc/config/sh/newlib.h @@ -1,5 +1,5 @@ /* Definitions of target machine for gcc for Super-H using sh-superh-elf. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GNU CC. diff --git a/gcc/config/sh/predicates.md b/gcc/config/sh/predicates.md index 2aff6ad9e84..31f2e1f5a0b 100644 --- a/gcc/config/sh/predicates.md +++ b/gcc/config/sh/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Renesas / SuperH SH. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sh/rtems.h b/gcc/config/sh/rtems.h index 70f3ea77bd4..bbedc5b3ac5 100644 --- a/gcc/config/sh/rtems.h +++ b/gcc/config/sh/rtems.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting a SH using COFF. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. Contributed by Joel Sherrill (joel@OARcorp.com). This file is part of GCC. diff --git a/gcc/config/sh/rtemself.h b/gcc/config/sh/rtemself.h index 4681853f5dc..25d8b27c421 100644 --- a/gcc/config/sh/rtemself.h +++ b/gcc/config/sh/rtemself.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting a SH using elf. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. Contributed by Joel Sherrill (joel@OARcorp.com). This file is part of GCC. diff --git a/gcc/config/sh/sh-c.c b/gcc/config/sh/sh-c.c index 0d7937f4822..43ff7ad22c2 100644 --- a/gcc/config/sh/sh-c.c +++ b/gcc/config/sh/sh-c.c @@ -1,5 +1,5 @@ /* Pragma handling for GCC for Renesas / SuperH SH. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. Contributed by Joern Rennecke . This file is part of GCC. diff --git a/gcc/config/sh/sh-mem.cc b/gcc/config/sh/sh-mem.cc index 729e848586d..3dca5f08486 100644 --- a/gcc/config/sh/sh-mem.cc +++ b/gcc/config/sh/sh-mem.cc @@ -1,5 +1,5 @@ /* Helper routines for memory move and comparison insns. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sh/sh-modes.def b/gcc/config/sh/sh-modes.def index aa56038d614..3aa3046e37f 100644 --- a/gcc/config/sh/sh-modes.def +++ b/gcc/config/sh/sh-modes.def @@ -1,5 +1,5 @@ /* SH extra machine modes. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sh/sh-protos.h b/gcc/config/sh/sh-protos.h index fade1b4c387..defc76a3243 100644 --- a/gcc/config/sh/sh-protos.h +++ b/gcc/config/sh/sh-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler for Renesas / SuperH SH. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. Contributed by Steve Chamberlain (sac@cygnus.com). Improved by Jim Wilson (wilson@cygnus.com). diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 864b04e9b0f..6d909c79ef7 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -1,5 +1,5 @@ /* Output routines for GCC for Renesas / SuperH SH. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. Contributed by Steve Chamberlain (sac@cygnus.com). Improved by Jim Wilson (wilson@cygnus.com). diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 9f07012941c..8819300116e 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler for Renesas / SuperH SH. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. Contributed by Steve Chamberlain (sac@cygnus.com). Improved by Jim Wilson (wilson@cygnus.com). diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index f79157996d6..410e9689db4 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -1,5 +1,5 @@ ;;- Machine description for Renesas / SuperH SH. -;; Copyright (C) 1993-2013 Free Software Foundation, Inc. +;; Copyright (C) 1993-2014 Free Software Foundation, Inc. ;; Contributed by Steve Chamberlain (sac@cygnus.com). ;; Improved by Jim Wilson (wilson@cygnus.com). diff --git a/gcc/config/sh/sh.opt b/gcc/config/sh/sh.opt index 2a782c0e596..1834c6bde97 100644 --- a/gcc/config/sh/sh.opt +++ b/gcc/config/sh/sh.opt @@ -1,6 +1,6 @@ ; Options for the SH port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/sh/sh1.md b/gcc/config/sh/sh1.md index 4907d9922fc..08b2124474a 100644 --- a/gcc/config/sh/sh1.md +++ b/gcc/config/sh/sh1.md @@ -1,5 +1,5 @@ ;; DFA scheduling description for Renesas / SuperH SH. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/sh/sh4-300.md b/gcc/config/sh/sh4-300.md index 05edb1b08ef..c0c0a5c554b 100644 --- a/gcc/config/sh/sh4-300.md +++ b/gcc/config/sh/sh4-300.md @@ -1,5 +1,5 @@ ;; DFA scheduling description for ST40-300. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/sh/sh4.md b/gcc/config/sh/sh4.md index a979d415d24..0ff6a0b5711 100644 --- a/gcc/config/sh/sh4.md +++ b/gcc/config/sh/sh4.md @@ -1,5 +1,5 @@ ;; DFA scheduling description for SH4. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/sh/sh4a.md b/gcc/config/sh/sh4a.md index b6fff92916b..694185181f5 100644 --- a/gcc/config/sh/sh4a.md +++ b/gcc/config/sh/sh4a.md @@ -1,5 +1,5 @@ ;; Scheduling description for Renesas SH4a -;; Copyright (C) 2003-2013 Free Software Foundation, Inc. +;; Copyright (C) 2003-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sh/sh64.h b/gcc/config/sh/sh64.h index 757119f23b1..73d91caa39d 100644 --- a/gcc/config/sh/sh64.h +++ b/gcc/config/sh/sh64.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler for SuperH SH 5. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Alexandre Oliva This file is part of GCC. diff --git a/gcc/config/sh/sh_optimize_sett_clrt.cc b/gcc/config/sh/sh_optimize_sett_clrt.cc index 8d40ce1270b..313e5b5f4c2 100644 --- a/gcc/config/sh/sh_optimize_sett_clrt.cc +++ b/gcc/config/sh/sh_optimize_sett_clrt.cc @@ -1,5 +1,5 @@ /* An SH specific RTL pass that tries to optimize clrt and sett insns. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sh/sh_treg_combine.cc b/gcc/config/sh/sh_treg_combine.cc index fc4a1c03bce..e7360402251 100644 --- a/gcc/config/sh/sh_treg_combine.cc +++ b/gcc/config/sh/sh_treg_combine.cc @@ -1,6 +1,6 @@ /* An SH specific RTL pass that tries to combine comparisons and redundant condition code register stores across multiple basic blocks. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sh/shmedia.h b/gcc/config/sh/shmedia.h index 3659dbd043e..3df9962745f 100644 --- a/gcc/config/sh/shmedia.h +++ b/gcc/config/sh/shmedia.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000-2013 Free Software Foundation, Inc. +/* Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sh/shmedia.md b/gcc/config/sh/shmedia.md index 85a23c547f2..9ca829d2deb 100644 --- a/gcc/config/sh/shmedia.md +++ b/gcc/config/sh/shmedia.md @@ -1,5 +1,5 @@ ;; DFA scheduling description for SH-5 SHmedia instructions. -;; Copyright (C) 2004-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/sh/sshmedia.h b/gcc/config/sh/sshmedia.h index 1975d1052ef..5cf16473346 100644 --- a/gcc/config/sh/sshmedia.h +++ b/gcc/config/sh/sshmedia.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000-2013 Free Software Foundation, Inc. +/* Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sh/superh.h b/gcc/config/sh/superh.h index 6b8b43e46fe..98bc197a869 100644 --- a/gcc/config/sh/superh.h +++ b/gcc/config/sh/superh.h @@ -1,5 +1,5 @@ /* Definitions of target machine for gcc for Super-H using sh-superh-elf. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GNU CC. diff --git a/gcc/config/sh/sync.md b/gcc/config/sh/sync.md index cf135ac09fb..a0a22a1f5b7 100644 --- a/gcc/config/sh/sync.md +++ b/gcc/config/sh/sync.md @@ -1,5 +1,5 @@ ;; GCC machine description for SH synchronization instructions. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sh/t-sh b/gcc/config/sh/t-sh index 405d3142253..d9f2b3d9394 100644 --- a/gcc/config/sh/t-sh +++ b/gcc/config/sh/t-sh @@ -1,4 +1,4 @@ -# Copyright (C) 1993-2013 Free Software Foundation, Inc. +# Copyright (C) 1993-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/sh/t-sh64 b/gcc/config/sh/t-sh64 index cdb3ef25e45..3222099b8a7 100644 --- a/gcc/config/sh/t-sh64 +++ b/gcc/config/sh/t-sh64 @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/sh/ushmedia.h b/gcc/config/sh/ushmedia.h index cdbab0d2b05..03064e964d5 100644 --- a/gcc/config/sh/ushmedia.h +++ b/gcc/config/sh/ushmedia.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000-2013 Free Software Foundation, Inc. +/* Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sh/vxworks.h b/gcc/config/sh/vxworks.h index 3b21e1cd11b..15dae73c725 100644 --- a/gcc/config/sh/vxworks.h +++ b/gcc/config/sh/vxworks.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GCC, for SuperH with targeting the VXWorks run time environment. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, LLC. This file is part of GCC. diff --git a/gcc/config/sol2-10.h b/gcc/config/sol2-10.h index 9df5548e4c1..4488a40cba6 100644 --- a/gcc/config/sol2-10.h +++ b/gcc/config/sol2-10.h @@ -1,6 +1,6 @@ /* Operating system specific defines to be used when targeting GCC for any Solaris 2 system starting from Solaris 10. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sol2-bi.h b/gcc/config/sol2-bi.h index d95b292fb2d..fdb2a28178c 100644 --- a/gcc/config/sol2-bi.h +++ b/gcc/config/sol2-bi.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GCC, for bi-arch Solaris 2. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sol2-c.c b/gcc/config/sol2-c.c index 8254af0fd73..f6c26047fc8 100644 --- a/gcc/config/sol2-c.c +++ b/gcc/config/sol2-c.c @@ -1,5 +1,5 @@ /* Solaris support needed only by C/C++ frontends. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, LLC. This file is part of GCC. diff --git a/gcc/config/sol2-cxx.c b/gcc/config/sol2-cxx.c index d3d79554b96..56bcec2c507 100644 --- a/gcc/config/sol2-cxx.c +++ b/gcc/config/sol2-cxx.c @@ -1,5 +1,5 @@ /* C++ specific Solaris system support. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sol2-protos.h b/gcc/config/sol2-protos.h index 410cc5ba9aa..2dc07f79f4a 100644 --- a/gcc/config/sol2-protos.h +++ b/gcc/config/sol2-protos.h @@ -1,6 +1,6 @@ /* Operating system specific prototypes to be used when targeting GCC for any Solaris 2 system. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sol2-stubs.c b/gcc/config/sol2-stubs.c index b77a6ad511a..506a9754282 100644 --- a/gcc/config/sol2-stubs.c +++ b/gcc/config/sol2-stubs.c @@ -1,5 +1,5 @@ /* Stubs for C++ specific Solaris system support. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sol2.c b/gcc/config/sol2.c index 4200e620e16..d07a9411faf 100644 --- a/gcc/config/sol2.c +++ b/gcc/config/sol2.c @@ -1,5 +1,5 @@ /* General Solaris system support. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, LLC. This file is part of GCC. diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h index abd7342aef5..a023cfed0d9 100644 --- a/gcc/config/sol2.h +++ b/gcc/config/sol2.h @@ -1,6 +1,6 @@ /* Operating system specific defines to be used when targeting GCC for any Solaris 2 system. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sol2.opt b/gcc/config/sol2.opt index 67fae60b55d..a5ae7c510ad 100644 --- a/gcc/config/sol2.opt +++ b/gcc/config/sol2.opt @@ -1,6 +1,6 @@ ; Options for the Solaris 2 port of the compiler ; -; Copyright (C) 2010-2013 Free Software Foundation, Inc. +; Copyright (C) 2010-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/sparc/biarch64.h b/gcc/config/sparc/biarch64.h index e360b3ce192..12eed3d2249 100644 --- a/gcc/config/sparc/biarch64.h +++ b/gcc/config/sparc/biarch64.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GCC, for Sun SPARC. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by David E. O'Brien . This file is part of GCC. diff --git a/gcc/config/sparc/constraints.md b/gcc/config/sparc/constraints.md index 5dec3dd5ad7..6295be0ef03 100644 --- a/gcc/config/sparc/constraints.md +++ b/gcc/config/sparc/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for SPARC. -;; Copyright (C) 2008-2013 Free Software Foundation, Inc. +;; Copyright (C) 2008-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/cypress.md b/gcc/config/sparc/cypress.md index 0b03e7d2fdb..848adca3bae 100644 --- a/gcc/config/sparc/cypress.md +++ b/gcc/config/sparc/cypress.md @@ -1,5 +1,5 @@ ;; Scheduling description for SPARC Cypress. -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/default-64.h b/gcc/config/sparc/default-64.h index 8a27fbe7b18..e4342a4a0e5 100644 --- a/gcc/config/sparc/default-64.h +++ b/gcc/config/sparc/default-64.h @@ -1,7 +1,7 @@ /* Definitions of target machine for GCC, for bi-arch SPARC, defaulting to 64-bit code generation. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sparc/driver-sparc.c b/gcc/config/sparc/driver-sparc.c index 89257446027..7896561dc83 100644 --- a/gcc/config/sparc/driver-sparc.c +++ b/gcc/config/sparc/driver-sparc.c @@ -1,5 +1,5 @@ /* Subroutines for the gcc driver. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sparc/freebsd.h b/gcc/config/sparc/freebsd.h index 999a7ff7055..371312bb4df 100644 --- a/gcc/config/sparc/freebsd.h +++ b/gcc/config/sparc/freebsd.h @@ -1,5 +1,5 @@ /* Definitions for Sun SPARC64 running FreeBSD using the ELF format - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by David E. O'Brien and BSDi. This file is part of GCC. diff --git a/gcc/config/sparc/hypersparc.md b/gcc/config/sparc/hypersparc.md index 2058cca46bc..ba10fb03714 100644 --- a/gcc/config/sparc/hypersparc.md +++ b/gcc/config/sparc/hypersparc.md @@ -1,5 +1,5 @@ ;; Scheduling description for HyperSPARC. -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/leon.md b/gcc/config/sparc/leon.md index b511397fe36..82b6a0d9633 100644 --- a/gcc/config/sparc/leon.md +++ b/gcc/config/sparc/leon.md @@ -1,5 +1,5 @@ ;; Scheduling description for LEON. -;; Copyright (C) 2010-2013 Free Software Foundation, Inc. +;; Copyright (C) 2010-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h index 49283d36774..c54ba2cb51c 100644 --- a/gcc/config/sparc/linux.h +++ b/gcc/config/sparc/linux.h @@ -1,5 +1,5 @@ /* Definitions for SPARC running Linux-based GNU systems with ELF. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Eddie C. Dost (ecd@skynet.be) This file is part of GCC. diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h index 7d48e968d8f..f00fb42ffab 100644 --- a/gcc/config/sparc/linux64.h +++ b/gcc/config/sparc/linux64.h @@ -1,5 +1,5 @@ /* Definitions for 64-bit SPARC running Linux-based GNU systems with ELF. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by David S. Miller (davem@caip.rutgers.edu) This file is part of GCC. diff --git a/gcc/config/sparc/long-double-switch.opt b/gcc/config/sparc/long-double-switch.opt index d45501c30bc..50b69834b19 100644 --- a/gcc/config/sparc/long-double-switch.opt +++ b/gcc/config/sparc/long-double-switch.opt @@ -1,6 +1,6 @@ ; Options for the SPARC port of the compiler ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/sparc/netbsd-elf.h b/gcc/config/sparc/netbsd-elf.h index 1cddc6afb96..949d333f67c 100644 --- a/gcc/config/sparc/netbsd-elf.h +++ b/gcc/config/sparc/netbsd-elf.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GCC, for ELF on NetBSD/sparc and NetBSD/sparc64. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Matthew Green (mrg@eterna.com.au). This file is part of GCC. diff --git a/gcc/config/sparc/niagara.md b/gcc/config/sparc/niagara.md index 355169165e3..d0d2d39bd06 100644 --- a/gcc/config/sparc/niagara.md +++ b/gcc/config/sparc/niagara.md @@ -1,5 +1,5 @@ ;; Scheduling description for Niagara. -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/niagara2.md b/gcc/config/sparc/niagara2.md index 73a38fdb1b5..e4aa87bd968 100644 --- a/gcc/config/sparc/niagara2.md +++ b/gcc/config/sparc/niagara2.md @@ -1,5 +1,5 @@ ;; Scheduling description for Niagara-2 and Niagara-3. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/niagara4.md b/gcc/config/sparc/niagara4.md index 335b298ed96..6e9fde5156e 100644 --- a/gcc/config/sparc/niagara4.md +++ b/gcc/config/sparc/niagara4.md @@ -1,5 +1,5 @@ ;; Scheduling description for Niagara-4 -;; Copyright (C) 2012-2013 Free Software Foundation, Inc. +;; Copyright (C) 2012-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/openbsd1-64.h b/gcc/config/sparc/openbsd1-64.h index 30dc5007164..6ff6478b78d 100644 --- a/gcc/config/sparc/openbsd1-64.h +++ b/gcc/config/sparc/openbsd1-64.h @@ -1,5 +1,5 @@ /* Configuration file for sparc64 OpenBSD target. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sparc/openbsd64.h b/gcc/config/sparc/openbsd64.h index 4545e1f0b48..e158a636b2c 100644 --- a/gcc/config/sparc/openbsd64.h +++ b/gcc/config/sparc/openbsd64.h @@ -1,5 +1,5 @@ /* Configuration file for sparc64 OpenBSD target. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sparc/predicates.md b/gcc/config/sparc/predicates.md index 073bce2adec..98ab4a3aebf 100644 --- a/gcc/config/sparc/predicates.md +++ b/gcc/config/sparc/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for SPARC. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/rtemself.h b/gcc/config/sparc/rtemself.h index 7a69dfa6943..d6c2dd68e9b 100644 --- a/gcc/config/sparc/rtemself.h +++ b/gcc/config/sparc/rtemself.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting a SPARC using ELF. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Joel Sherrill (joel@OARcorp.com). This file is part of GCC. diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h index c9a3f43fd40..b50a937b26f 100644 --- a/gcc/config/sparc/sol2.h +++ b/gcc/config/sparc/sol2.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GCC, for SPARC running Solaris 2 - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Ron Guilmette (rfg@netcom.com). Additional changes by David V. Henkel-Wallace (gumby@cygnus.com). diff --git a/gcc/config/sparc/sp-elf.h b/gcc/config/sparc/sp-elf.h index a5d561a0d67..28366e64f36 100644 --- a/gcc/config/sparc/sp-elf.h +++ b/gcc/config/sparc/sp-elf.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GCC, for SPARC running in an embedded environment using the ELF file format. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sparc/sp64-elf.h b/gcc/config/sparc/sp64-elf.h index 2d2279e806a..f0a5fe1d447 100644 --- a/gcc/config/sparc/sp64-elf.h +++ b/gcc/config/sparc/sp64-elf.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GCC, for SPARC64, ELF. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. Contributed by Doug Evans, dje@cygnus.com. This file is part of GCC. diff --git a/gcc/config/sparc/sparc-c.c b/gcc/config/sparc/sparc-c.c index 87bf25496ae..bb4e51ffb51 100644 --- a/gcc/config/sparc/sparc-c.c +++ b/gcc/config/sparc/sparc-c.c @@ -1,5 +1,5 @@ /* Subroutines used for macro/preprocessor support on SPARC. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sparc/sparc-modes.def b/gcc/config/sparc/sparc-modes.def index 6561db250c8..8dc9625b6a7 100644 --- a/gcc/config/sparc/sparc-modes.def +++ b/gcc/config/sparc/sparc-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GCC, for Sun SPARC. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com). 64 bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans, at Cygnus Support. diff --git a/gcc/config/sparc/sparc-opts.h b/gcc/config/sparc/sparc-opts.h index b5e9761af2b..13b375ae164 100644 --- a/gcc/config/sparc/sparc-opts.h +++ b/gcc/config/sparc/sparc-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for SPARC. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h index 03f83b87b28..41b4c988c9c 100644 --- a/gcc/config/sparc/sparc-protos.h +++ b/gcc/config/sparc/sparc-protos.h @@ -1,5 +1,5 @@ /* Prototypes of target machine for SPARC. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com). 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans, at Cygnus Support. diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index d7456722568..0b494bfe9bc 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -1,5 +1,5 @@ /* Subroutines for insn-output.c for SPARC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans, at Cygnus Support. diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index 7533e88491b..dd2b5ad9cf0 100644 --- a/gcc/config/sparc/sparc.h +++ b/gcc/config/sparc/sparc.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler, for Sun SPARC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com). 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans, at Cygnus Support. diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index b3fb2eb18fb..8430fb8a549 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -1,5 +1,5 @@ ;; Machine description for SPARC chip for GCC -;; Copyright (C) 1987-2013 Free Software Foundation, Inc. +;; Copyright (C) 1987-2014 Free Software Foundation, Inc. ;; Contributed by Michael Tiemann (tiemann@cygnus.com) ;; 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans, ;; at Cygnus Support. diff --git a/gcc/config/sparc/sparc.opt b/gcc/config/sparc/sparc.opt index 3ccd54fa463..c02aec59f06 100644 --- a/gcc/config/sparc/sparc.opt +++ b/gcc/config/sparc/sparc.opt @@ -1,6 +1,6 @@ ; Options for the SPARC port of the compiler ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/sparc/sparclet.md b/gcc/config/sparc/sparclet.md index f58cb5c9d33..2ee3be6950f 100644 --- a/gcc/config/sparc/sparclet.md +++ b/gcc/config/sparc/sparclet.md @@ -1,5 +1,5 @@ ;; Scheduling description for SPARClet. -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/supersparc.md b/gcc/config/sparc/supersparc.md index 28c07ed21b2..2825d55b859 100644 --- a/gcc/config/sparc/supersparc.md +++ b/gcc/config/sparc/supersparc.md @@ -1,5 +1,5 @@ ;; Scheduling description for SuperSPARC. -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/sync.md b/gcc/config/sparc/sync.md index 7b431bc6577..fd5691f73be 100644 --- a/gcc/config/sparc/sync.md +++ b/gcc/config/sparc/sync.md @@ -1,5 +1,5 @@ ;; GCC machine description for SPARC synchronization instructions. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/sysv4.h b/gcc/config/sparc/sysv4.h index 18494142f37..413d1fc150b 100644 --- a/gcc/config/sparc/sysv4.h +++ b/gcc/config/sparc/sysv4.h @@ -1,5 +1,5 @@ /* Target definitions for GNU compiler for SPARC running System V.4 - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Contributed by Ron Guilmette (rfg@monkeys.com). This file is part of GCC. diff --git a/gcc/config/sparc/t-elf b/gcc/config/sparc/t-elf index e94c7d1793a..9234a60adc1 100644 --- a/gcc/config/sparc/t-elf +++ b/gcc/config/sparc/t-elf @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/sparc/t-leon b/gcc/config/sparc/t-leon index 88c5fb9013b..16b3450fd6b 100644 --- a/gcc/config/sparc/t-leon +++ b/gcc/config/sparc/t-leon @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/sparc/t-leon3 b/gcc/config/sparc/t-leon3 index cea2679a79b..ca34ed20ce9 100644 --- a/gcc/config/sparc/t-leon3 +++ b/gcc/config/sparc/t-leon3 @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/sparc/t-linux64 b/gcc/config/sparc/t-linux64 index 42d9d18841f..cb2bce9cde5 100644 --- a/gcc/config/sparc/t-linux64 +++ b/gcc/config/sparc/t-linux64 @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2013 Free Software Foundation, Inc. +# Copyright (C) 1998-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/sparc/t-rtems b/gcc/config/sparc/t-rtems index f1a3d845e32..86a2302614c 100644 --- a/gcc/config/sparc/t-rtems +++ b/gcc/config/sparc/t-rtems @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/sparc/t-rtems-64 b/gcc/config/sparc/t-rtems-64 index d11ade650b2..b094546fc5a 100644 --- a/gcc/config/sparc/t-rtems-64 +++ b/gcc/config/sparc/t-rtems-64 @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/sparc/t-sparc b/gcc/config/sparc/t-sparc index 0f76508f516..828f9f733d2 100644 --- a/gcc/config/sparc/t-sparc +++ b/gcc/config/sparc/t-sparc @@ -1,6 +1,6 @@ # General rules that all sparc/ targets must have. # -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/sparc/tso.h b/gcc/config/sparc/tso.h index d28a5933a25..f496f0329d3 100644 --- a/gcc/config/sparc/tso.h +++ b/gcc/config/sparc/tso.h @@ -1,5 +1,5 @@ /* Include fragment for Sparc TSO operating systems. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sparc/ultra1_2.md b/gcc/config/sparc/ultra1_2.md index 86f4a1fbefa..0635d4ecbcb 100644 --- a/gcc/config/sparc/ultra1_2.md +++ b/gcc/config/sparc/ultra1_2.md @@ -1,5 +1,5 @@ ;; Scheduling description for UltraSPARC-I/II. -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/ultra3.md b/gcc/config/sparc/ultra3.md index 8691e0f3348..f3c8eb69014 100644 --- a/gcc/config/sparc/ultra3.md +++ b/gcc/config/sparc/ultra3.md @@ -1,5 +1,5 @@ ;; Scheduling description for UltraSPARC-III. -;; Copyright (C) 2002-2013 Free Software Foundation, Inc. +;; Copyright (C) 2002-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/sparc/visintrin.h b/gcc/config/sparc/visintrin.h index 37b6546a95c..7f881f7cc83 100644 --- a/gcc/config/sparc/visintrin.h +++ b/gcc/config/sparc/visintrin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2013 Free Software Foundation, Inc. +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/sparc/vxworks.h b/gcc/config/sparc/vxworks.h index 97a6dd41db6..9e093a66485 100644 --- a/gcc/config/sparc/vxworks.h +++ b/gcc/config/sparc/vxworks.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for SPARC targeting the VxWorks run time environment. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/spu/constraints.md b/gcc/config/spu/constraints.md index 3e6cf7659d4..8fd325e1999 100644 --- a/gcc/config/spu/constraints.md +++ b/gcc/config/spu/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for SPU -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; ;; This file is free software; you can redistribute it and/or modify it under ;; the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/predicates.md b/gcc/config/spu/predicates.md index b6ad5dfa3a5..d41f5fb5848 100644 --- a/gcc/config/spu/predicates.md +++ b/gcc/config/spu/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for CELL SPU -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; ;; This file is free software; you can redistribute it and/or modify it under ;; the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu-builtins.def b/gcc/config/spu/spu-builtins.def index d13ddc75c7f..babc008d355 100644 --- a/gcc/config/spu/spu-builtins.def +++ b/gcc/config/spu/spu-builtins.def @@ -1,5 +1,5 @@ /* Definitions of builtin functions for the Synergistic Processing Unit (SPU). */ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu-builtins.md b/gcc/config/spu/spu-builtins.md index 07fa50371e4..5df6fe03920 100644 --- a/gcc/config/spu/spu-builtins.md +++ b/gcc/config/spu/spu-builtins.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; This file is free software; you can redistribute it and/or modify it under ;; the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu-c.c b/gcc/config/spu/spu-c.c index 7632ec1462c..411496de713 100644 --- a/gcc/config/spu/spu-c.c +++ b/gcc/config/spu/spu-c.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu-elf.h b/gcc/config/spu/spu-elf.h index d084ef3d86c..e1dcdf0d166 100644 --- a/gcc/config/spu/spu-elf.h +++ b/gcc/config/spu/spu-elf.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu-modes.def b/gcc/config/spu/spu-modes.def index 3faddcf17bd..9b894ab52ac 100644 --- a/gcc/config/spu/spu-modes.def +++ b/gcc/config/spu/spu-modes.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu-protos.h b/gcc/config/spu/spu-protos.h index 17ceec3ac8d..c5672b632dc 100644 --- a/gcc/config/spu/spu-protos.h +++ b/gcc/config/spu/spu-protos.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c index 66209b675ad..302d7e06b6d 100644 --- a/gcc/config/spu/spu.c +++ b/gcc/config/spu/spu.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu.h b/gcc/config/spu/spu.h index ad4405ae3d9..ac05f4c7c84 100644 --- a/gcc/config/spu/spu.h +++ b/gcc/config/spu/spu.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu.md b/gcc/config/spu/spu.md index 3ca53481128..228b2285969 100644 --- a/gcc/config/spu/spu.md +++ b/gcc/config/spu/spu.md @@ -1,4 +1,4 @@ -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; This file is free software; you can redistribute it and/or modify it under ;; the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu.opt b/gcc/config/spu/spu.opt index 9cdd523ce23..3ab562c0a2e 100644 --- a/gcc/config/spu/spu.opt +++ b/gcc/config/spu/spu.opt @@ -1,5 +1,5 @@ ; Options for the SPU port of the compiler -; Copyright (C) 2006-2013 Free Software Foundation, Inc. +; Copyright (C) 2006-2014 Free Software Foundation, Inc. ; This file is free software; you can redistribute it and/or modify it under ; the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu_cache.h b/gcc/config/spu/spu_cache.h index b01b215ea2c..8433f281df0 100644 --- a/gcc/config/spu/spu_cache.h +++ b/gcc/config/spu/spu_cache.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2013 Free Software Foundation, Inc. +/* Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu_internals.h b/gcc/config/spu/spu_internals.h index 83631e215f5..91822981975 100644 --- a/gcc/config/spu/spu_internals.h +++ b/gcc/config/spu/spu_internals.h @@ -1,5 +1,5 @@ /* Definitions of Synergistic Processing Unit (SPU). */ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu_intrinsics.h b/gcc/config/spu/spu_intrinsics.h index 34e2a90a716..488b428b23a 100644 --- a/gcc/config/spu/spu_intrinsics.h +++ b/gcc/config/spu/spu_intrinsics.h @@ -1,5 +1,5 @@ /* Definitions of Synergistic Processing Unit (SPU). */ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/spu_mfcio.h b/gcc/config/spu/spu_mfcio.h index f91fac51bcd..bb3a1cb5151 100644 --- a/gcc/config/spu/spu_mfcio.h +++ b/gcc/config/spu/spu_mfcio.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/t-spu-elf b/gcc/config/spu/t-spu-elf index 9817141b0ff..4987537f8c4 100644 --- a/gcc/config/spu/t-spu-elf +++ b/gcc/config/spu/t-spu-elf @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/vec_types.h b/gcc/config/spu/vec_types.h index 2ade461afdc..93816193e9c 100644 --- a/gcc/config/spu/vec_types.h +++ b/gcc/config/spu/vec_types.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/spu/vmx2spu.h b/gcc/config/spu/vmx2spu.h index a22436ef9c7..d02690d7e7e 100644 --- a/gcc/config/spu/vmx2spu.h +++ b/gcc/config/spu/vmx2spu.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff --git a/gcc/config/stormy16/constraints.md b/gcc/config/stormy16/constraints.md index 4a2933f7d80..6eafe53d272 100644 --- a/gcc/config/stormy16/constraints.md +++ b/gcc/config/stormy16/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for XSTORMY16. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/stormy16/predicates.md b/gcc/config/stormy16/predicates.md index da659ede4bc..fc47973906a 100644 --- a/gcc/config/stormy16/predicates.md +++ b/gcc/config/stormy16/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for XSTORMY16. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/stormy16/stormy-abi b/gcc/config/stormy16/stormy-abi index f12b2f5eeb4..a9ceb3197cc 100644 --- a/gcc/config/stormy16/stormy-abi +++ b/gcc/config/stormy16/stormy-abi @@ -167,7 +167,7 @@ means that overflow is reported for either signed or unsigned overflow. -Copyright (C) 2001-2013 Free Software Foundation, Inc. +Copyright (C) 2001-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/config/stormy16/stormy16-protos.h b/gcc/config/stormy16/stormy16-protos.h index 4549189a34d..2085eb45f5c 100644 --- a/gcc/config/stormy16/stormy16-protos.h +++ b/gcc/config/stormy16/stormy16-protos.h @@ -1,5 +1,5 @@ /* Prototypes for exported functions defined in xstormy16.c - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/stormy16/stormy16.c b/gcc/config/stormy16/stormy16.c index 941595e1cca..6a64fccbe11 100644 --- a/gcc/config/stormy16/stormy16.c +++ b/gcc/config/stormy16/stormy16.c @@ -1,5 +1,5 @@ /* Xstormy16 target functions. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/stormy16/stormy16.h b/gcc/config/stormy16/stormy16.h index 41478563904..5bcc5d7e67a 100644 --- a/gcc/config/stormy16/stormy16.h +++ b/gcc/config/stormy16/stormy16.h @@ -1,5 +1,5 @@ /* Xstormy16 cpu description. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. diff --git a/gcc/config/stormy16/stormy16.md b/gcc/config/stormy16/stormy16.md index 07dfdaa95d4..9a952744d34 100644 --- a/gcc/config/stormy16/stormy16.md +++ b/gcc/config/stormy16/stormy16.md @@ -1,5 +1,5 @@ ;; XSTORMY16 Machine description template -;; Copyright (C) 1997-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997-2014 Free Software Foundation, Inc. ;; Contributed by Red Hat, Inc. ;; This file is part of GCC. diff --git a/gcc/config/stormy16/stormy16.opt b/gcc/config/stormy16/stormy16.opt index c2e6a5bdbb0..01efdca60d9 100644 --- a/gcc/config/stormy16/stormy16.opt +++ b/gcc/config/stormy16/stormy16.opt @@ -1,6 +1,6 @@ ; Options for the XSTORMY16 port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/t-darwin b/gcc/config/t-darwin index 87d5df7a935..9cb3604c932 100644 --- a/gcc/config/t-darwin +++ b/gcc/config/t-darwin @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/t-glibc b/gcc/config/t-glibc index ae7bf7abfa0..7ebb50ca8c8 100644 --- a/gcc/config/t-glibc +++ b/gcc/config/t-glibc @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/t-libunwind b/gcc/config/t-libunwind index 70b44d5daae..4a65935b124 100644 --- a/gcc/config/t-libunwind +++ b/gcc/config/t-libunwind @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/t-linux b/gcc/config/t-linux index 7451baf1ddb..617c244dfbb 100644 --- a/gcc/config/t-linux +++ b/gcc/config/t-linux @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/t-lynx b/gcc/config/t-lynx index 7f4ba7bb6f8..5d6413bd117 100644 --- a/gcc/config/t-lynx +++ b/gcc/config/t-lynx @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/t-pnt16-warn b/gcc/config/t-pnt16-warn index b354d177345..d2c427ad1de 100644 --- a/gcc/config/t-pnt16-warn +++ b/gcc/config/t-pnt16-warn @@ -1,5 +1,5 @@ # -Werror overrides for targets with 16 bit pointers -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/t-sol2 b/gcc/config/t-sol2 index 2d0bd7282a3..a4c4af4ad03 100644 --- a/gcc/config/t-sol2 +++ b/gcc/config/t-sol2 @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/t-vxworks b/gcc/config/t-vxworks index e10b61f808e..7d0697f155e 100644 --- a/gcc/config/t-vxworks +++ b/gcc/config/t-vxworks @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/t-winnt b/gcc/config/t-winnt index 1751622661b..21b6417eb80 100644 --- a/gcc/config/t-winnt +++ b/gcc/config/t-winnt @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/tilegx/constraints.md b/gcc/config/tilegx/constraints.md index 4a61164216c..ad9aff18cf4 100644 --- a/gcc/config/tilegx/constraints.md +++ b/gcc/config/tilegx/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Tilera TILE-Gx. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Walter Lee (walt@tilera.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/tilegx/linux.h b/gcc/config/tilegx/linux.h index c836fa5a224..02bc0501dfd 100644 --- a/gcc/config/tilegx/linux.h +++ b/gcc/config/tilegx/linux.h @@ -1,5 +1,5 @@ /* Definitions for TILE-Gx running Linux-based GNU systems with ELF. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilegx/mul-tables.c b/gcc/config/tilegx/mul-tables.c index 62f7efe6c38..4bcff30aea8 100644 --- a/gcc/config/tilegx/mul-tables.c +++ b/gcc/config/tilegx/mul-tables.c @@ -1,5 +1,5 @@ /* Constant multiply table for TILE-Gx. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilegx/predicates.md b/gcc/config/tilegx/predicates.md index 5e4350c78de..5bacc3debdf 100644 --- a/gcc/config/tilegx/predicates.md +++ b/gcc/config/tilegx/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Tilera TILE-Gx. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Walter Lee (walt@tilera.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/tilegx/sync.md b/gcc/config/tilegx/sync.md index a4bea6b6889..586025760f4 100644 --- a/gcc/config/tilegx/sync.md +++ b/gcc/config/tilegx/sync.md @@ -1,6 +1,6 @@ ;; GCC machine description for Tilera TILE-Gx synchronization ;; instructions. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Walter Lee (walt@tilera.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/tilegx/tilegx-builtins.h b/gcc/config/tilegx/tilegx-builtins.h index 2edf05ee77d..f2b031b085e 100644 --- a/gcc/config/tilegx/tilegx-builtins.h +++ b/gcc/config/tilegx/tilegx-builtins.h @@ -1,5 +1,5 @@ /* Enum for builtin intrinsics for TILE-Gx. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilegx/tilegx-c.c b/gcc/config/tilegx/tilegx-c.c index 3ecec6e0445..909659b1d95 100644 --- a/gcc/config/tilegx/tilegx-c.c +++ b/gcc/config/tilegx/tilegx-c.c @@ -1,5 +1,5 @@ /* Definitions of C specific functions for TILE-Gx. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilegx/tilegx-generic.md b/gcc/config/tilegx/tilegx-generic.md index 786756b7d0c..fbd16f93f36 100644 --- a/gcc/config/tilegx/tilegx-generic.md +++ b/gcc/config/tilegx/tilegx-generic.md @@ -1,5 +1,5 @@ ;; Scheduling description for Tilera TILE-Gx chip. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Walter Lee (walt@tilera.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/tilegx/tilegx-modes.def b/gcc/config/tilegx/tilegx-modes.def index de3a6608475..deaad2adb41 100644 --- a/gcc/config/tilegx/tilegx-modes.def +++ b/gcc/config/tilegx/tilegx-modes.def @@ -1,5 +1,5 @@ /* TILE-Gx extra machine modes. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilegx/tilegx-multiply.h b/gcc/config/tilegx/tilegx-multiply.h index d4ca021c834..b59d6b36ee4 100644 --- a/gcc/config/tilegx/tilegx-multiply.h +++ b/gcc/config/tilegx/tilegx-multiply.h @@ -1,5 +1,5 @@ /* Header for constant multiple table for TILE-Gx. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilegx/tilegx-opts.h b/gcc/config/tilegx/tilegx-opts.h index 0ba389238f6..3ff010477ab 100644 --- a/gcc/config/tilegx/tilegx-opts.h +++ b/gcc/config/tilegx/tilegx-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for TILE-Gx. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilegx/tilegx-protos.h b/gcc/config/tilegx/tilegx-protos.h index 8642e1bc928..0a9b461faf9 100644 --- a/gcc/config/tilegx/tilegx-protos.h +++ b/gcc/config/tilegx/tilegx-protos.h @@ -1,5 +1,5 @@ /* Prototypes of target machine for TILE-Gx. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilegx/tilegx.c b/gcc/config/tilegx/tilegx.c index eecc9a926c3..654f83666b9 100644 --- a/gcc/config/tilegx/tilegx.c +++ b/gcc/config/tilegx/tilegx.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on the Tilera TILE-Gx. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilegx/tilegx.h b/gcc/config/tilegx/tilegx.h index 6f4734537d9..68f466cbc3d 100644 --- a/gcc/config/tilegx/tilegx.h +++ b/gcc/config/tilegx/tilegx.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler for TILE-Gx. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilegx/tilegx.md b/gcc/config/tilegx/tilegx.md index 379b305a939..1e82abccba7 100644 --- a/gcc/config/tilegx/tilegx.md +++ b/gcc/config/tilegx/tilegx.md @@ -1,5 +1,5 @@ ;; Machine description for Tilera TILE-Gx chip for GCC. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Walter Lee (walt@tilera.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/tilegx/tilegx.opt b/gcc/config/tilegx/tilegx.opt index a820c8159c6..a71f54645e5 100644 --- a/gcc/config/tilegx/tilegx.opt +++ b/gcc/config/tilegx/tilegx.opt @@ -1,5 +1,5 @@ ; Options for the TILE-Gx port of the compiler. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; Contributed by Walter Lee (walt@tilera.com) ; ; This file is part of GCC. diff --git a/gcc/config/tilepro/constraints.md b/gcc/config/tilepro/constraints.md index 8908fe02812..3019ec5f3df 100644 --- a/gcc/config/tilepro/constraints.md +++ b/gcc/config/tilepro/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Tilera TILEPro chip. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Walter Lee (walt@tilera.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/tilepro/gen-mul-tables.cc b/gcc/config/tilepro/gen-mul-tables.cc index e008643a8c8..645fa32ea5e 100644 --- a/gcc/config/tilepro/gen-mul-tables.cc +++ b/gcc/config/tilepro/gen-mul-tables.cc @@ -1,5 +1,5 @@ /* Multiply table generator for tile. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. @@ -1230,7 +1230,7 @@ main () #else printf ("/* Constant multiply table for TILE-Gx.\n"); #endif - printf (" Copyright (C) 2011-2013 Free Software Foundation, Inc.\n"); + printf (" Copyright (C) 2011-2014 Free Software Foundation, Inc.\n"); printf (" Contributed by Walter Lee (walt@tilera.com)\n"); printf ("\n"); printf (" This file is part of GCC.\n"); diff --git a/gcc/config/tilepro/linux.h b/gcc/config/tilepro/linux.h index d436feed22e..5c7cd57cd6b 100644 --- a/gcc/config/tilepro/linux.h +++ b/gcc/config/tilepro/linux.h @@ -1,5 +1,5 @@ /* Definitions for TILEPro running Linux-based GNU systems with ELF. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilepro/mul-tables.c b/gcc/config/tilepro/mul-tables.c index 0c76c8ecf88..4411b6eff0a 100644 --- a/gcc/config/tilepro/mul-tables.c +++ b/gcc/config/tilepro/mul-tables.c @@ -1,5 +1,5 @@ /* Constant multiply table for TILEPro. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilepro/predicates.md b/gcc/config/tilepro/predicates.md index 1aefdd4f263..723f593e5c1 100644 --- a/gcc/config/tilepro/predicates.md +++ b/gcc/config/tilepro/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Tilera TILEPro chip. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Walter Lee (walt@tilera.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/tilepro/tilepro-builtins.h b/gcc/config/tilepro/tilepro-builtins.h index fbd8c111a73..9a85b094f2f 100644 --- a/gcc/config/tilepro/tilepro-builtins.h +++ b/gcc/config/tilepro/tilepro-builtins.h @@ -1,5 +1,5 @@ /* Enum for builtin intrinsics for TILEPro. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilepro/tilepro-c.c b/gcc/config/tilepro/tilepro-c.c index 8f7aa00d7ba..dc2e3d0066e 100644 --- a/gcc/config/tilepro/tilepro-c.c +++ b/gcc/config/tilepro/tilepro-c.c @@ -1,5 +1,5 @@ /* Definitions of C specific functions for TILEPro. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilepro/tilepro-generic.md b/gcc/config/tilepro/tilepro-generic.md index ed0c6f75bc9..44dff49e386 100644 --- a/gcc/config/tilepro/tilepro-generic.md +++ b/gcc/config/tilepro/tilepro-generic.md @@ -1,5 +1,5 @@ ;; Scheduling description for Tilera TILEPro chip. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Walter Lee (walt@tilera.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/tilepro/tilepro-modes.def b/gcc/config/tilepro/tilepro-modes.def index 92e6c95e720..49af0a05182 100644 --- a/gcc/config/tilepro/tilepro-modes.def +++ b/gcc/config/tilepro/tilepro-modes.def @@ -1,5 +1,5 @@ /* TILEPro extra machine modes. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilepro/tilepro-multiply.h b/gcc/config/tilepro/tilepro-multiply.h index 0b0bbd77ed2..b4012393ede 100644 --- a/gcc/config/tilepro/tilepro-multiply.h +++ b/gcc/config/tilepro/tilepro-multiply.h @@ -1,5 +1,5 @@ /* Header for constant multiple table for TILEPro. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilepro/tilepro-protos.h b/gcc/config/tilepro/tilepro-protos.h index 31c902cfa02..fcd29ab8280 100644 --- a/gcc/config/tilepro/tilepro-protos.h +++ b/gcc/config/tilepro/tilepro-protos.h @@ -1,5 +1,5 @@ /* Prototypes of target machine for TILEPro. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilepro/tilepro.c b/gcc/config/tilepro/tilepro.c index b2bafb4f300..615d49040bc 100644 --- a/gcc/config/tilepro/tilepro.c +++ b/gcc/config/tilepro/tilepro.c @@ -1,5 +1,5 @@ /* Subroutines used for code generation on the Tilera TILEPro. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilepro/tilepro.h b/gcc/config/tilepro/tilepro.h index 9c057d31822..0c5e87c1972 100644 --- a/gcc/config/tilepro/tilepro.h +++ b/gcc/config/tilepro/tilepro.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler for TILEPro. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is part of GCC. diff --git a/gcc/config/tilepro/tilepro.md b/gcc/config/tilepro/tilepro.md index f090f9e038b..adf49baee7a 100644 --- a/gcc/config/tilepro/tilepro.md +++ b/gcc/config/tilepro/tilepro.md @@ -1,5 +1,5 @@ ;; Machine description for Tilera TILEPro chip for GCC. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; Contributed by Walter Lee (walt@tilera.com) ;; ;; This file is part of GCC. diff --git a/gcc/config/tilepro/tilepro.opt b/gcc/config/tilepro/tilepro.opt index 0185c6883cf..fcfb20a37b7 100644 --- a/gcc/config/tilepro/tilepro.opt +++ b/gcc/config/tilepro/tilepro.opt @@ -1,5 +1,5 @@ ; Options for the TILEPro port of the compiler. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; Contributed by Walter Lee (walt@tilera.com) ; ; This file is part of GCC. diff --git a/gcc/config/usegas.h b/gcc/config/usegas.h index cf9eb90489b..5c83a73e82a 100644 --- a/gcc/config/usegas.h +++ b/gcc/config/usegas.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2001-2013 Free Software Foundation, Inc. +/* Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/v850/constraints.md b/gcc/config/v850/constraints.md index 11a97c9da2c..3b40afa9309 100644 --- a/gcc/config/v850/constraints.md +++ b/gcc/config/v850/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for V850. -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/v850/predicates.md b/gcc/config/v850/predicates.md index 10674a9d633..1e16c1cae64 100644 --- a/gcc/config/v850/predicates.md +++ b/gcc/config/v850/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for NEC V850. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/v850/rtems.h b/gcc/config/v850/rtems.h index 4281e7435d9..01dff3e52ac 100644 --- a/gcc/config/v850/rtems.h +++ b/gcc/config/v850/rtems.h @@ -1,5 +1,5 @@ /* Definitions for rtems targeting a v850 using ELF. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/v850/t-v850 b/gcc/config/v850/t-v850 index b91b5057d7d..44346f07d63 100644 --- a/gcc/config/v850/t-v850 +++ b/gcc/config/v850/t-v850 @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/v850/v850-c.c b/gcc/config/v850/v850-c.c index 25158d50e09..4c2e052cf37 100644 --- a/gcc/config/v850/v850-c.c +++ b/gcc/config/v850/v850-c.c @@ -1,5 +1,5 @@ /* v850 specific, C compiler specific functions. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Jeff Law (law@cygnus.com). This file is part of GCC. diff --git a/gcc/config/v850/v850-modes.def b/gcc/config/v850/v850-modes.def index 057d515b985..d5729cb3640 100644 --- a/gcc/config/v850/v850-modes.def +++ b/gcc/config/v850/v850-modes.def @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler. NEC V850 series - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by NEC EL This file is part of GCC. diff --git a/gcc/config/v850/v850-opts.h b/gcc/config/v850/v850-opts.h index ca60bfa440f..a91b1b05906 100644 --- a/gcc/config/v850/v850-opts.h +++ b/gcc/config/v850/v850-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for NEC V850 series. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/v850/v850-protos.h b/gcc/config/v850/v850-protos.h index be253dd5dbf..ba504cb6b15 100644 --- a/gcc/config/v850/v850-protos.h +++ b/gcc/config/v850/v850-protos.h @@ -1,5 +1,5 @@ /* Prototypes for v850.c functions used in the md file & elsewhere. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c index 32fe73b1fa6..eb193265700 100644 --- a/gcc/config/v850/v850.c +++ b/gcc/config/v850/v850.c @@ -1,5 +1,5 @@ /* Subroutines for insn-output.c for NEC V850 series - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Jeff Law (law@cygnus.com). This file is part of GCC. diff --git a/gcc/config/v850/v850.h b/gcc/config/v850/v850.h index 9b5053337f5..92db20a4405 100644 --- a/gcc/config/v850/v850.h +++ b/gcc/config/v850/v850.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler. NEC V850 series - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Jeff Law (law@cygnus.com). This file is part of GCC. diff --git a/gcc/config/v850/v850.md b/gcc/config/v850/v850.md index 213aedffa57..341aae45db0 100644 --- a/gcc/config/v850/v850.md +++ b/gcc/config/v850/v850.md @@ -1,5 +1,5 @@ ;; GCC machine description for NEC V850 -;; Copyright (C) 1996-2013 Free Software Foundation, Inc. +;; Copyright (C) 1996-2014 Free Software Foundation, Inc. ;; Contributed by Jeff Law (law@cygnus.com). ;; This file is part of GCC. diff --git a/gcc/config/v850/v850.opt b/gcc/config/v850/v850.opt index feba0ddc27a..c02750796d9 100644 --- a/gcc/config/v850/v850.opt +++ b/gcc/config/v850/v850.opt @@ -1,6 +1,6 @@ ; Options for the NEC V850 port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/vax/builtins.md b/gcc/config/vax/builtins.md index 3212d69e002..ea748638878 100644 --- a/gcc/config/vax/builtins.md +++ b/gcc/config/vax/builtins.md @@ -1,5 +1,5 @@ ;; builtin definitions for DEC VAX. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/vax/constraints.md b/gcc/config/vax/constraints.md index 66d6bf07f38..daa9eeb0bc7 100644 --- a/gcc/config/vax/constraints.md +++ b/gcc/config/vax/constraints.md @@ -1,5 +1,5 @@ ;; Constraints for the DEC VAX port. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/vax/elf.h b/gcc/config/vax/elf.h index e7fc9ae1e7d..d6041dc0657 100644 --- a/gcc/config/vax/elf.h +++ b/gcc/config/vax/elf.h @@ -1,5 +1,5 @@ /* Target definitions for GNU compiler for VAX using ELF - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Matt Thomas This file is part of GCC. diff --git a/gcc/config/vax/elf.opt b/gcc/config/vax/elf.opt index 97daf43fbcc..252060e9b06 100644 --- a/gcc/config/vax/elf.opt +++ b/gcc/config/vax/elf.opt @@ -1,6 +1,6 @@ ; VAX ELF options. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/vax/linux.h b/gcc/config/vax/linux.h index 2eff1c30795..c31fbe2ed30 100644 --- a/gcc/config/vax/linux.h +++ b/gcc/config/vax/linux.h @@ -1,5 +1,5 @@ /* Definitions for VAX running Linux-based GNU systems with ELF format. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vax/netbsd-elf.h b/gcc/config/vax/netbsd-elf.h index ffc904695ad..d2eaeb8e9bc 100644 --- a/gcc/config/vax/netbsd-elf.h +++ b/gcc/config/vax/netbsd-elf.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for NetBSD/vax ELF systems. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vax/openbsd.h b/gcc/config/vax/openbsd.h index 121dd57fef9..4ead0edbd1e 100644 --- a/gcc/config/vax/openbsd.h +++ b/gcc/config/vax/openbsd.h @@ -1,5 +1,5 @@ /* Configuration fragment for a VAX OpenBSD target. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vax/openbsd1.h b/gcc/config/vax/openbsd1.h index 7c5cdb68e8b..66c46b5e178 100644 --- a/gcc/config/vax/openbsd1.h +++ b/gcc/config/vax/openbsd1.h @@ -1,5 +1,5 @@ /* Configuration fragment for a VAX OpenBSD target. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vax/predicates.md b/gcc/config/vax/predicates.md index 73b1a90556b..0820c9d3c9f 100644 --- a/gcc/config/vax/predicates.md +++ b/gcc/config/vax/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for DEC VAX. -;; Copyright (C) 2007-2013 Free Software Foundation, Inc. +;; Copyright (C) 2007-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/vax/vax-modes.def b/gcc/config/vax/vax-modes.def index a998762e277..824f7009646 100644 --- a/gcc/config/vax/vax-modes.def +++ b/gcc/config/vax/vax-modes.def @@ -1,5 +1,5 @@ /* VAX extra machine modes. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vax/vax-protos.h b/gcc/config/vax/vax-protos.h index 5a4adc1cd6c..4e978b99bd2 100644 --- a/gcc/config/vax/vax-protos.h +++ b/gcc/config/vax/vax-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler. VAX version. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vax/vax.c b/gcc/config/vax/vax.c index 7aac7cb0554..2b152fdb494 100644 --- a/gcc/config/vax/vax.c +++ b/gcc/config/vax/vax.c @@ -1,5 +1,5 @@ /* Subroutines for insn-output.c for VAX. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vax/vax.h b/gcc/config/vax/vax.h index 2f1890b8594..29e38ccb193 100644 --- a/gcc/config/vax/vax.h +++ b/gcc/config/vax/vax.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler. VAX version. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vax/vax.md b/gcc/config/vax/vax.md index 2c05d007dae..d3929731b64 100644 --- a/gcc/config/vax/vax.md +++ b/gcc/config/vax/vax.md @@ -1,5 +1,5 @@ ;; Machine description for GNU compiler, VAX Version -;; Copyright (C) 1987-2013 Free Software Foundation, Inc. +;; Copyright (C) 1987-2014 Free Software Foundation, Inc. ;; This file is part of GCC. diff --git a/gcc/config/vax/vax.opt b/gcc/config/vax/vax.opt index 25f81f0b343..4e2947f4432 100644 --- a/gcc/config/vax/vax.opt +++ b/gcc/config/vax/vax.opt @@ -1,6 +1,6 @@ ; Options for the VAX port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/vms/make-crtlmap.awk b/gcc/config/vms/make-crtlmap.awk index fdecaa6dc3c..79c4b43c864 100644 --- a/gcc/config/vms/make-crtlmap.awk +++ b/gcc/config/vms/make-crtlmap.awk @@ -1,5 +1,5 @@ # Generate the VMS crtl map -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. BEGIN { is_first = 1; diff --git a/gcc/config/vms/t-vms b/gcc/config/vms/t-vms index 016193597ba..a34c0836901 100644 --- a/gcc/config/vms/t-vms +++ b/gcc/config/vms/t-vms @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/vms/t-vmsnative b/gcc/config/vms/t-vmsnative index de3dc143651..41848698ec8 100644 --- a/gcc/config/vms/t-vmsnative +++ b/gcc/config/vms/t-vmsnative @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/vms/vms-ar.c b/gcc/config/vms/vms-ar.c index f931ab75539..594e3fcc23e 100644 --- a/gcc/config/vms/vms-ar.c +++ b/gcc/config/vms/vms-ar.c @@ -1,5 +1,5 @@ /* VMS archive wrapper. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by AdaCore. This file is part of GCC. diff --git a/gcc/config/vms/vms-c.c b/gcc/config/vms/vms-c.c index d56ac1b8a70..6c711040f74 100644 --- a/gcc/config/vms/vms-c.c +++ b/gcc/config/vms/vms-c.c @@ -1,5 +1,5 @@ /* VMS specific, C compiler specific functions. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Tristan Gingold (gingold@adacore.com). This file is part of GCC. diff --git a/gcc/config/vms/vms-f.c b/gcc/config/vms/vms-f.c index b4a20ef6b6d..7027c0ef80f 100644 --- a/gcc/config/vms/vms-f.c +++ b/gcc/config/vms/vms-f.c @@ -1,5 +1,5 @@ /* VMS support needed only by Fortran frontends. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vms/vms-ld.c b/gcc/config/vms/vms-ld.c index c03f8a7b1ca..a66479f4688 100644 --- a/gcc/config/vms/vms-ld.c +++ b/gcc/config/vms/vms-ld.c @@ -1,5 +1,5 @@ /* VMS linker wrapper. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by AdaCore This file is part of GCC. diff --git a/gcc/config/vms/vms-opts.h b/gcc/config/vms/vms-opts.h index 9ad8919761c..261c59b6383 100644 --- a/gcc/config/vms/vms-opts.h +++ b/gcc/config/vms/vms-opts.h @@ -1,5 +1,5 @@ /* Definitions for option handling for OpenVMS. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vms/vms-protos.h b/gcc/config/vms/vms-protos.h index 565096da124..9b10159e6fa 100644 --- a/gcc/config/vms/vms-protos.h +++ b/gcc/config/vms/vms-protos.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GCC for VMS. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vms/vms-stdint.h b/gcc/config/vms/vms-stdint.h index 091e7b5ce98..469e95550c4 100644 --- a/gcc/config/vms/vms-stdint.h +++ b/gcc/config/vms/vms-stdint.h @@ -1,5 +1,5 @@ /* Definitions for types on VMS systems. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vms/vms.c b/gcc/config/vms/vms.c index 3047cfde9fe..0a8a5b894a2 100644 --- a/gcc/config/vms/vms.c +++ b/gcc/config/vms/vms.c @@ -1,5 +1,5 @@ /* Definitions of target machine GNU compiler. 32bit VMS version. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Douglas B Rupp (rupp@gnat.com). This file is part of GCC. diff --git a/gcc/config/vms/vms.h b/gcc/config/vms/vms.h index 5d0a5c6515c..dabc3518983 100644 --- a/gcc/config/vms/vms.h +++ b/gcc/config/vms/vms.h @@ -1,5 +1,5 @@ /* Definitions of target machine GNU compiler. VMS common version. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Douglas B Rupp (rupp@gnat.com). This file is part of GCC. diff --git a/gcc/config/vms/vms.opt b/gcc/config/vms/vms.opt index 78ab982ae4f..a77d024bb07 100644 --- a/gcc/config/vms/vms.opt +++ b/gcc/config/vms/vms.opt @@ -1,4 +1,4 @@ -; Copyright (C) 2009-2013 Free Software Foundation, Inc. +; Copyright (C) 2009-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/vms/x-vms b/gcc/config/vms/x-vms index 996908a0e57..8bf8796f7c9 100644 --- a/gcc/config/vms/x-vms +++ b/gcc/config/vms/x-vms @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/vms/xm-vms.h b/gcc/config/vms/xm-vms.h index 19bc02380a2..9e3800e18d4 100644 --- a/gcc/config/vms/xm-vms.h +++ b/gcc/config/vms/xm-vms.h @@ -1,6 +1,6 @@ /* Configuration for GCC for hosting on VMS using a Unix style C library. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vx-common.h b/gcc/config/vx-common.h index a9cbbb1d22b..527024fddc7 100644 --- a/gcc/config/vx-common.h +++ b/gcc/config/vx-common.h @@ -1,5 +1,5 @@ /* Target-independent configuration for VxWorks and VxWorks AE. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, LLC. This file is part of GCC. diff --git a/gcc/config/vxworks-dummy.h b/gcc/config/vxworks-dummy.h index b390edb4d2e..e9009840f4e 100644 --- a/gcc/config/vxworks-dummy.h +++ b/gcc/config/vxworks-dummy.h @@ -1,5 +1,5 @@ /* Dummy definitions of VxWorks-related macros - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/vxworks.c b/gcc/config/vxworks.c index 2940ea11933..bd5e735bf14 100644 --- a/gcc/config/vxworks.c +++ b/gcc/config/vxworks.c @@ -1,5 +1,5 @@ /* Common VxWorks target definitions for GNU compiler. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, Inc. This file is part of GCC. diff --git a/gcc/config/vxworks.h b/gcc/config/vxworks.h index 72f344b6f01..76dc430c7a2 100644 --- a/gcc/config/vxworks.h +++ b/gcc/config/vxworks.h @@ -1,5 +1,5 @@ /* Common VxWorks target definitions for GNU compiler. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Wind River Systems. Rewritten by CodeSourcery, LLC. diff --git a/gcc/config/vxworks.opt b/gcc/config/vxworks.opt index d7788752391..729ab41ee5e 100644 --- a/gcc/config/vxworks.opt +++ b/gcc/config/vxworks.opt @@ -1,6 +1,6 @@ ; Processor-independent options for VxWorks. ; -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; Contributed by CodeSourcery, LLC. ; ; This file is part of GCC. diff --git a/gcc/config/vxworksae.h b/gcc/config/vxworksae.h index 36010c3c4c3..02b89f7db00 100644 --- a/gcc/config/vxworksae.h +++ b/gcc/config/vxworksae.h @@ -1,5 +1,5 @@ /* Common VxWorks AE target definitions for GNU compiler. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, LLC. This file is part of GCC. diff --git a/gcc/config/winnt-c.c b/gcc/config/winnt-c.c index 3d5958f91ff..dfb06c76394 100644 --- a/gcc/config/winnt-c.c +++ b/gcc/config/winnt-c.c @@ -1,5 +1,5 @@ /* Default C-family target hooks initializer. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/xtensa/constraints.md b/gcc/config/xtensa/constraints.md index 53b3ebface8..9d31f984798 100644 --- a/gcc/config/xtensa/constraints.md +++ b/gcc/config/xtensa/constraints.md @@ -1,5 +1,5 @@ ;; Constraint definitions for Xtensa. -;; Copyright (C) 2006-2013 Free Software Foundation, Inc. +;; Copyright (C) 2006-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/xtensa/elf.h b/gcc/config/xtensa/elf.h index c13a3148674..34a34e22af9 100644 --- a/gcc/config/xtensa/elf.h +++ b/gcc/config/xtensa/elf.h @@ -1,6 +1,6 @@ /* Xtensa/Elf configuration. Derived from the configuration for GCC for Intel i386 running Linux. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/xtensa/elf.opt b/gcc/config/xtensa/elf.opt index 01ae937029b..8f346de9f6d 100644 --- a/gcc/config/xtensa/elf.opt +++ b/gcc/config/xtensa/elf.opt @@ -1,6 +1,6 @@ ; Xtensa ELF (bare metal) options. -; Copyright (C) 2011-2013 Free Software Foundation, Inc. +; Copyright (C) 2011-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/config/xtensa/linux.h b/gcc/config/xtensa/linux.h index 10e22a4bf97..100a8c123ef 100644 --- a/gcc/config/xtensa/linux.h +++ b/gcc/config/xtensa/linux.h @@ -1,6 +1,6 @@ /* Xtensa Linux configuration. Derived from the configuration for GCC for Intel i386 running Linux. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/config/xtensa/predicates.md b/gcc/config/xtensa/predicates.md index 3e25a686b1d..4a433418925 100644 --- a/gcc/config/xtensa/predicates.md +++ b/gcc/config/xtensa/predicates.md @@ -1,5 +1,5 @@ ;; Predicate definitions for Xtensa. -;; Copyright (C) 2005-2013 Free Software Foundation, Inc. +;; Copyright (C) 2005-2014 Free Software Foundation, Inc. ;; ;; This file is part of GCC. ;; diff --git a/gcc/config/xtensa/t-xtensa b/gcc/config/xtensa/t-xtensa index 0b294cb01fc..a8ac2d4068e 100644 --- a/gcc/config/xtensa/t-xtensa +++ b/gcc/config/xtensa/t-xtensa @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/config/xtensa/xtensa-protos.h b/gcc/config/xtensa/xtensa-protos.h index 4be2ebe60db..5f090263c95 100644 --- a/gcc/config/xtensa/xtensa-protos.h +++ b/gcc/config/xtensa/xtensa-protos.h @@ -1,5 +1,5 @@ /* Prototypes of target machine for GNU compiler for Xtensa. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. This file is part of GCC. diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c index 4564290acb2..06e1eb78ada 100644 --- a/gcc/config/xtensa/xtensa.c +++ b/gcc/config/xtensa/xtensa.c @@ -1,5 +1,5 @@ /* Subroutines for insn-output.c for Tensilica's Xtensa architecture. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. This file is part of GCC. diff --git a/gcc/config/xtensa/xtensa.h b/gcc/config/xtensa/xtensa.h index 1ffa2017dfc..c4a8f882646 100644 --- a/gcc/config/xtensa/xtensa.h +++ b/gcc/config/xtensa/xtensa.h @@ -1,5 +1,5 @@ /* Definitions of Tensilica's Xtensa target machine for GNU compiler. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. This file is part of GCC. diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md index 2363693a67a..dddc6ab792c 100644 --- a/gcc/config/xtensa/xtensa.md +++ b/gcc/config/xtensa/xtensa.md @@ -1,5 +1,5 @@ ;; GCC machine description for Tensilica's Xtensa architecture. -;; Copyright (C) 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 2001-2014 Free Software Foundation, Inc. ;; Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. ;; This file is part of GCC. diff --git a/gcc/config/xtensa/xtensa.opt b/gcc/config/xtensa/xtensa.opt index 4bdfcec074a..be5c44a0b74 100644 --- a/gcc/config/xtensa/xtensa.opt +++ b/gcc/config/xtensa/xtensa.opt @@ -1,6 +1,6 @@ ; Options for the Tensilica Xtensa port of the compiler. -; Copyright (C) 2005-2013 Free Software Foundation, Inc. +; Copyright (C) 2005-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/configure.ac b/gcc/configure.ac index f9976a209f9..0023b2a572f 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -1,7 +1,7 @@ # configure.ac for GCC # Process this file with autoconf to generate a configuration script. -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/context.c b/gcc/context.c index 3dd4526845e..5339e28a98b 100644 --- a/gcc/context.c +++ b/gcc/context.c @@ -1,5 +1,5 @@ /* context.c - Holder for global state - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/context.h b/gcc/context.h index d6555ccbd16..b8fb439f1af 100644 --- a/gcc/context.h +++ b/gcc/context.h @@ -1,5 +1,5 @@ /* context.h - Holder for global state - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/convert.c b/gcc/convert.c index 4cf500197ae..91c1da265a8 100644 --- a/gcc/convert.c +++ b/gcc/convert.c @@ -1,5 +1,5 @@ /* Utility routines for data type conversion for GCC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/convert.h b/gcc/convert.h index ddf8f6ebad5..2d9df016d94 100644 --- a/gcc/convert.h +++ b/gcc/convert.h @@ -1,5 +1,5 @@ /* Definition of functions in convert.c. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/coretypes.h b/gcc/coretypes.h index dddaa46e781..d07a6043263 100644 --- a/gcc/coretypes.h +++ b/gcc/coretypes.h @@ -1,5 +1,5 @@ /* GCC core type declarations. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/coverage.c b/gcc/coverage.c index f7a2924707a..8b62403d121 100644 --- a/gcc/coverage.c +++ b/gcc/coverage.c @@ -1,5 +1,5 @@ /* Read and write coverage files, and associated functionality. - Copyright (C) 1990-2013 Free Software Foundation, Inc. + Copyright (C) 1990-2014 Free Software Foundation, Inc. Contributed by James E. Wilson, UC Berkeley/Cygnus Support; based on some ideas from Dain Samples of UC Berkeley. Further mangling by Bob Manson, Cygnus Support. diff --git a/gcc/coverage.h b/gcc/coverage.h index 342d73e1653..81f87a6f0bb 100644 --- a/gcc/coverage.h +++ b/gcc/coverage.h @@ -1,5 +1,5 @@ /* coverage.h - Defines data exported from coverage.c - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 67c6d8e2273..d27c2a27e62 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2014-01-02 Richard Sandiford * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use @@ -4293,7 +4297,7 @@ * tree.c (build_cplus_array_type): Copy layout information to main variant if necessary. -Copyright (C) 2013 Free Software Foundation, Inc. +Copyright (C) 2013-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index 424f2e6cdc5..438148ce039 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -1,5 +1,5 @@ # Top level -*- makefile -*- fragment for GNU C++. -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/cp/NEWS b/gcc/cp/NEWS index f9956fe5fe7..d5d3d2fa624 100644 --- a/gcc/cp/NEWS +++ b/gcc/cp/NEWS @@ -401,7 +401,7 @@ the exception handling work. -Copyright (C) 1997-2013 Free Software Foundation, Inc. +Copyright (C) 1997-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 4107afa8672..f9c566d6401 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -1,5 +1,5 @@ /* Functions related to invoking methods and overloaded functions. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) and modified by Brendan Kehoe (brendan@cygnus.com). diff --git a/gcc/cp/cfns.gperf b/gcc/cp/cfns.gperf index c4c4e2af764..05ca753927e 100644 --- a/gcc/cp/cfns.gperf +++ b/gcc/cp/cfns.gperf @@ -1,5 +1,5 @@ %{ -/* Copyright (C) 2000-2013 Free Software Foundation, Inc. +/* Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/cfns.h b/gcc/cp/cfns.h index 42dd3cfc067..c845ddf08ea 100644 --- a/gcc/cp/cfns.h +++ b/gcc/cp/cfns.h @@ -30,7 +30,7 @@ #line 1 "cfns.gperf" -/* Copyright (C) 2000-2013 Free Software Foundation, Inc. +/* Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 039dbd0df3e..c961b2268e7 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -1,5 +1,5 @@ /* Functions related to building classes and their related objects. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/config-lang.in b/gcc/cp/config-lang.in index 4ea9b4d9a2b..1d0b0c44db9 100644 --- a/gcc/cp/config-lang.in +++ b/gcc/cp/config-lang.in @@ -1,5 +1,5 @@ # Top level configure fragment for GNU C++. -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/cp/cp-array-notation.c b/gcc/cp/cp-array-notation.c index f551706eb2c..65b8bcb8169 100644 --- a/gcc/cp/cp-array-notation.c +++ b/gcc/cp/cp-array-notation.c @@ -1,7 +1,7 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support It contains routines to handle Array Notation expression handling routines in the C++ Compiler. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Balaji V. Iyer , Intel Corporation diff --git a/gcc/cp/cp-cilkplus.c b/gcc/cp/cp-cilkplus.c index c1edb436953..f3a2aff048d 100644 --- a/gcc/cp/cp-cilkplus.c +++ b/gcc/cp/cp-cilkplus.c @@ -1,7 +1,7 @@ /* This file is part of the Intel(R) Cilk(TM) Plus support This file contains routines to handle Cilk Plus specific routines for the C++ Compiler. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez . This file is part of GCC. diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index 5fa564c57d1..d75b2b773d9 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -1,6 +1,6 @@ /* C++-specific tree lowering bits; see also c-gimplify.c and tree-gimple.c. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Jason Merrill This file is part of GCC. diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index a7fa8e4b1e9..c28c07a9d1f 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -1,5 +1,5 @@ /* Language-dependent hooks for C++. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Alexandre Oliva This file is part of GCC. diff --git a/gcc/cp/cp-objcp-common.c b/gcc/cp/cp-objcp-common.c index d70766f3a06..f7400ec2731 100644 --- a/gcc/cp/cp-objcp-common.c +++ b/gcc/cp/cp-objcp-common.c @@ -1,5 +1,5 @@ /* Some code common to C++ and ObjC++ front ends. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Ziemowit Laski This file is part of GCC. diff --git a/gcc/cp/cp-objcp-common.h b/gcc/cp/cp-objcp-common.h index 0a8fdeea2fc..246800eef90 100644 --- a/gcc/cp/cp-objcp-common.h +++ b/gcc/cp/cp-objcp-common.h @@ -1,5 +1,5 @@ /* Language hooks common to C++ and ObjC++ front ends. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Ziemowit Laski This file is part of GCC. diff --git a/gcc/cp/cp-tree.def b/gcc/cp/cp-tree.def index bd9bfa8ab5c..057e7ea5ef7 100644 --- a/gcc/cp/cp-tree.def +++ b/gcc/cp/cp-tree.def @@ -1,7 +1,7 @@ /* This file contains the definitions and documentation for the additional tree codes used in the GNU C++ compiler (see tree.def for the standard codes). - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 06868250a95..c2bd04ecf1c 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -1,5 +1,5 @@ /* Definitions for C++ parsing and type checking. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c index ecec24a5118..95105cdd15d 100644 --- a/gcc/cp/cvt.c +++ b/gcc/cp/cvt.c @@ -1,5 +1,5 @@ /* Language-level data type conversion for GNU C++. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c index cb97fb5d59a..c39fb7d7165 100644 --- a/gcc/cp/cxx-pretty-print.c +++ b/gcc/cp/cxx-pretty-print.c @@ -1,5 +1,5 @@ /* Implementation of subroutines for the GNU C++ pretty-printer. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/cp/cxx-pretty-print.h b/gcc/cp/cxx-pretty-print.h index 819bbacae75..2dc3f95b203 100644 --- a/gcc/cp/cxx-pretty-print.h +++ b/gcc/cp/cxx-pretty-print.h @@ -1,5 +1,5 @@ /* Interface for the GNU C++ pretty-printer. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index a184dcc0c1b..5906653f0d6 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -1,5 +1,5 @@ /* Process declarations and variables for C++ compiler. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/decl.h b/gcc/cp/decl.h index 3becc56c8df..bb36271bad6 100644 --- a/gcc/cp/decl.h +++ b/gcc/cp/decl.h @@ -1,5 +1,5 @@ /* Variables and structures for declaration processing. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index e5b98b13a36..8fa3037737a 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1,5 +1,5 @@ /* Process declarations and variables for C++ compiler. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/dump.c b/gcc/cp/dump.c index cc888339af9..70b047a9072 100644 --- a/gcc/cp/dump.c +++ b/gcc/cp/dump.c @@ -1,5 +1,5 @@ /* Tree-dumping functionality for intermediate representation. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Written by Mark Mitchell This file is part of GCC. diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 72aa936c129..35c94f25522 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1,6 +1,6 @@ /* Call-backs for C++ error reporting. This code is non-reentrant. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify diff --git a/gcc/cp/except.c b/gcc/cp/except.c index be487cd8ae8..221971ac956 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -1,5 +1,5 @@ /* Handle exceptional things in C++. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann Rewritten by Mike Stump , based upon an initial re-implementation courtesy Tad Hunt. diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c index f15b049baf8..a62e0f9b5df 100644 --- a/gcc/cp/expr.c +++ b/gcc/cp/expr.c @@ -1,6 +1,6 @@ /* Convert language-specific tree expression to rtl instructions, for GNU compiler. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/friend.c b/gcc/cp/friend.c index 779dac905d6..4fd6ffacbdf 100644 --- a/gcc/cp/friend.c +++ b/gcc/cp/friend.c @@ -1,5 +1,5 @@ /* Help friends in C++. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c index 93f94602c92..79117673be3 100644 --- a/gcc/cp/g++spec.c +++ b/gcc/cp/g++spec.c @@ -1,5 +1,5 @@ /* Specific flags and argument handling of the C++ front end. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 1e6e6915bdc..67761dcf4d7 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -1,5 +1,5 @@ /* Handle initialization things in C++. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c index bd8df1d94a9..1855716532a 100644 --- a/gcc/cp/lambda.c +++ b/gcc/cp/lambda.c @@ -3,7 +3,7 @@ building RTL. These routines are used both during actual parsing and during the instantiation of template functions. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h index a001c3e3055..79c9222b37b 100644 --- a/gcc/cp/lang-specs.h +++ b/gcc/cp/lang-specs.h @@ -1,5 +1,5 @@ /* Definitions for specs for C++. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 2d517a4c7fe..3fe275e4933 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -1,5 +1,5 @@ /* Separate lexical analyzer for GNU C++. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index d99062dcb5e..6f32a43f323 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -1,5 +1,5 @@ /* Name mangling for the 3.0 C++ ABI. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Written by Alex Samuel This file is part of GCC. diff --git a/gcc/cp/method.c b/gcc/cp/method.c index e79a9221a99..a1a10514ae9 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1,6 +1,6 @@ /* Handle the hair of processing (but not expanding) inline functions. Also manage function and variable name overloading. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index f527638e713..96850116d98 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -1,5 +1,5 @@ /* Definitions for C++ name lookup routines. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/cp/name-lookup.h b/gcc/cp/name-lookup.h index 57641a19902..29b728569f2 100644 --- a/gcc/cp/name-lookup.h +++ b/gcc/cp/name-lookup.h @@ -1,5 +1,5 @@ /* Declarations for C++ name lookup routines. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/cp/operators.def b/gcc/cp/operators.def index 4fdc5b3a04e..ee6555b60dc 100644 --- a/gcc/cp/operators.def +++ b/gcc/cp/operators.def @@ -5,7 +5,7 @@ non-overloadable operators (like the `?:' ternary operator). Written by Mark Mitchell - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c index 40494f27a55..1b3f10a11c5 100644 --- a/gcc/cp/optimize.c +++ b/gcc/cp/optimize.c @@ -1,5 +1,5 @@ /* Perform optimizations on tree structure. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Written by Mark Michell (mark@codesourcery.com). This file is part of GCC. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 4ef0f05c9be..08ae4512fb1 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -1,5 +1,5 @@ /* C++ Parser. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Written by Mark Mitchell . This file is part of GCC. diff --git a/gcc/cp/parser.h b/gcc/cp/parser.h index e26e350cd99..484a8cd5538 100644 --- a/gcc/cp/parser.h +++ b/gcc/cp/parser.h @@ -1,5 +1,5 @@ /* Data structures and function exported by the C++ Parser. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 61994787d2d..add4cc61d5d 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -1,5 +1,5 @@ /* Handle parameterized types (templates) for GNU C++. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Written by Ken Raeburn (raeburn@cygnus.com) while at Watchmaker Computing. Rewritten by Jason Merrill (jason@cygnus.com). diff --git a/gcc/cp/ptree.c b/gcc/cp/ptree.c index 3c37a2aed3e..e99f386acc0 100644 --- a/gcc/cp/ptree.c +++ b/gcc/cp/ptree.c @@ -1,5 +1,5 @@ /* Prints out trees in human readable form. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/repo.c b/gcc/cp/repo.c index 47b91986582..f076f23c8f2 100644 --- a/gcc/cp/repo.c +++ b/gcc/cp/repo.c @@ -1,5 +1,5 @@ /* Code to maintain a C++ template repository. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Jason Merrill (jason@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index 0bac87909a0..a8e6d25c844 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -1,5 +1,5 @@ /* RunTime Type Identification - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Mostly written by Jason Merrill (jason@cygnus.com). This file is part of GCC. diff --git a/gcc/cp/search.c b/gcc/cp/search.c index b700be9a7e2..c3eed90f6c3 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -1,6 +1,6 @@ /* Breadth-first and depth-first routines for searching multiple-inheritance lattice for GNU C++. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 1a5948478b4..91bdb83bbbc 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -3,7 +3,7 @@ building RTL. These routines are used both during actual parsing and during the instantiation of template functions. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Written by Mark Mitchell (mmitchell@usa.net) based on code found formerly in parse.y and pt.c. diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index cb05633b24d..7aad1eb9bd4 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1,5 +1,5 @@ /* Language-dependent node constructors for parse phase of GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/type-utils.h b/gcc/cp/type-utils.h index 2febce76075..6f115b1e798 100644 --- a/gcc/cp/type-utils.h +++ b/gcc/cp/type-utils.h @@ -1,5 +1,5 @@ /* Utilities for querying and manipulating type trees. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 01afbac7350..f45c5b9944d 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -1,5 +1,5 @@ /* Build expressions with type checking for C++ compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index 9fa201dca2c..d9c36470029 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -1,6 +1,6 @@ /* Report error messages, build initializers, and perform some front-end optimizations for C++ compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. diff --git a/gcc/cp/vtable-class-hierarchy.c b/gcc/cp/vtable-class-hierarchy.c index 5289bdab1d4..6da17c73134 100644 --- a/gcc/cp/vtable-class-hierarchy.c +++ b/gcc/cp/vtable-class-hierarchy.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2013 Free Software Foundation, Inc. +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cppbuiltin.c b/gcc/cppbuiltin.c index 0c112654cd5..f0d539b231b 100644 --- a/gcc/cppbuiltin.c +++ b/gcc/cppbuiltin.c @@ -1,5 +1,5 @@ /* Define builtin-in macros for all front ends that perform preprocessing - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cppbuiltin.h b/gcc/cppbuiltin.h index 6b68e45d176..41d7a6fe8db 100644 --- a/gcc/cppbuiltin.h +++ b/gcc/cppbuiltin.h @@ -1,5 +1,5 @@ /* Define builtin-in macros for all front ends that perform preprocessing - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c index ce6e0f9a5cc..a4fc35d09b5 100644 --- a/gcc/cppdefault.c +++ b/gcc/cppdefault.c @@ -1,5 +1,5 @@ /* CPP Library. - Copyright (C) 1986-2013 Free Software Foundation, Inc. + Copyright (C) 1986-2014 Free Software Foundation, Inc. Contributed by Per Bothner, 1994-95. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 diff --git a/gcc/cppdefault.h b/gcc/cppdefault.h index 3d5261912c2..30b6feded05 100644 --- a/gcc/cppdefault.h +++ b/gcc/cppdefault.h @@ -1,5 +1,5 @@ /* CPP Library. - Copyright (C) 1986-2013 Free Software Foundation, Inc. + Copyright (C) 1986-2014 Free Software Foundation, Inc. Contributed by Per Bothner, 1994-95. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 diff --git a/gcc/cprop.c b/gcc/cprop.c index 7d07246cd0d..c3acb05c171 100644 --- a/gcc/cprop.c +++ b/gcc/cprop.c @@ -1,5 +1,5 @@ /* Global constant/copy propagation for RTL. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cse.c b/gcc/cse.c index a58e7e9e8e9..cffa553b525 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -1,5 +1,5 @@ /* Common subexpression elimination for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cselib.c b/gcc/cselib.c index e201f5e7c49..525e717c633 100644 --- a/gcc/cselib.c +++ b/gcc/cselib.c @@ -1,5 +1,5 @@ /* Common subexpression elimination library for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/cselib.h b/gcc/cselib.h index 541db8eaba4..785f3b6d293 100644 --- a/gcc/cselib.h +++ b/gcc/cselib.h @@ -1,5 +1,5 @@ /* Common subexpression elimination for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/data-streamer-in.c b/gcc/data-streamer-in.c index 39ae5010a39..1f74278fa80 100644 --- a/gcc/data-streamer-in.c +++ b/gcc/data-streamer-in.c @@ -1,7 +1,7 @@ /* Routines for restoring various data types from a file stream. This deals with various data types like strings, integers, enums, etc. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/data-streamer-out.c b/gcc/data-streamer-out.c index 01fb36a88ae..3fe9d457aa3 100644 --- a/gcc/data-streamer-out.c +++ b/gcc/data-streamer-out.c @@ -1,7 +1,7 @@ /* Routines for saving various data types to a file stream. This deals with various data types like strings, integers, enums, etc. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/data-streamer.c b/gcc/data-streamer.c index 3b697e5b280..0e19c72162a 100644 --- a/gcc/data-streamer.c +++ b/gcc/data-streamer.c @@ -1,6 +1,6 @@ /* Generic streaming support for basic data types. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/data-streamer.h b/gcc/data-streamer.h index c18779ba30a..dc7b7207add 100644 --- a/gcc/data-streamer.h +++ b/gcc/data-streamer.h @@ -1,6 +1,6 @@ /* Generic streaming support for various data types. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/dbgcnt.c b/gcc/dbgcnt.c index 9ce80f3ed24..2a484a60c41 100644 --- a/gcc/dbgcnt.c +++ b/gcc/dbgcnt.c @@ -1,5 +1,5 @@ /* Debug counter for debugging support - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dbgcnt.def b/gcc/dbgcnt.def index 6f86253a6ed..6f8f675e540 100644 --- a/gcc/dbgcnt.def +++ b/gcc/dbgcnt.def @@ -1,5 +1,5 @@ /* This file contains the list of the debug counter for GCC. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dbgcnt.h b/gcc/dbgcnt.h index 4e671a34c2e..92d463f4365 100644 --- a/gcc/dbgcnt.h +++ b/gcc/dbgcnt.h @@ -1,5 +1,5 @@ /* Debug counter for debugging support - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dbxout.c b/gcc/dbxout.c index 6205472d7eb..7a13289ef66 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -1,5 +1,5 @@ /* Output dbx-format symbol table information from GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dbxout.h b/gcc/dbxout.h index eaddd36db99..3a9f42968f8 100644 --- a/gcc/dbxout.h +++ b/gcc/dbxout.h @@ -1,5 +1,5 @@ /* dbxout.h - Various declarations for functions found in dbxout.c - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dce.c b/gcc/dce.c index 7e8278faaf6..07592f46a0e 100644 --- a/gcc/dce.c +++ b/gcc/dce.c @@ -1,5 +1,5 @@ /* RTL dead code elimination. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dce.h b/gcc/dce.h index 961bd2eeaeb..70981bf6e74 100644 --- a/gcc/dce.h +++ b/gcc/dce.h @@ -1,5 +1,5 @@ /* RTL dead code elimination. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ddg.c b/gcc/ddg.c index 0d9089fd470..d6ee0c2e69b 100644 --- a/gcc/ddg.c +++ b/gcc/ddg.c @@ -1,5 +1,5 @@ /* DDG - Data Dependence Graph implementation. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Ayal Zaks and Mustafa Hagog This file is part of GCC. diff --git a/gcc/ddg.h b/gcc/ddg.h index 739ff030d27..432903d6e2a 100644 --- a/gcc/ddg.h +++ b/gcc/ddg.h @@ -1,5 +1,5 @@ /* DDG - Data Dependence Graph - interface. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Ayal Zaks and Mustafa Hagog This file is part of GCC. diff --git a/gcc/debug.c b/gcc/debug.c index 7ed50b47c33..17345404579 100644 --- a/gcc/debug.c +++ b/gcc/debug.c @@ -1,5 +1,5 @@ /* Do-nothing debug hooks for GCC. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/debug.h b/gcc/debug.h index 886de176f60..fc575891a2e 100644 --- a/gcc/debug.h +++ b/gcc/debug.h @@ -1,5 +1,5 @@ /* Debug hooks for GCC. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/defaults.h b/gcc/defaults.h index 1d12aef801d..f94ae17a7fe 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -1,5 +1,5 @@ /* Definitions of various defaults for tm.h macros. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Ron Guilmette (rfg@monkeys.com) This file is part of GCC. diff --git a/gcc/df-core.c b/gcc/df-core.c index 045b54f4b82..a3085c174ec 100644 --- a/gcc/df-core.c +++ b/gcc/df-core.c @@ -1,5 +1,5 @@ /* Allocation for dataflow support routines. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Originally contributed by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com) Major rewrite contributed by Danny Berlin (dberlin@dberlin.org) diff --git a/gcc/df-problems.c b/gcc/df-problems.c index 4b926b6ee74..1c06d61360a 100644 --- a/gcc/df-problems.c +++ b/gcc/df-problems.c @@ -1,5 +1,5 @@ /* Standard problems for dataflow support routines. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Originally contributed by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com) Major rewrite contributed by Danny Berlin (dberlin@dberlin.org) diff --git a/gcc/df-scan.c b/gcc/df-scan.c index a7272ce88c5..0b5b4374b7f 100644 --- a/gcc/df-scan.c +++ b/gcc/df-scan.c @@ -1,5 +1,5 @@ /* Scanning of rtl for dataflow analysis. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Originally contributed by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com) Major rewrite contributed by Danny Berlin (dberlin@dberlin.org) diff --git a/gcc/df.h b/gcc/df.h index 579712ca245..6c4b3391429 100644 --- a/gcc/df.h +++ b/gcc/df.h @@ -1,6 +1,6 @@ /* Form lists of pseudo register references for autoinc optimization for GNU compiler. This is part of flow optimization. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Originally contributed by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com) Major rewrite contributed by Danny Berlin (dberlin@dberlin.org) diff --git a/gcc/dfp.c b/gcc/dfp.c index d15ee8f8848..4f2abb195dc 100644 --- a/gcc/dfp.c +++ b/gcc/dfp.c @@ -1,5 +1,5 @@ /* Decimal floating point support. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dfp.h b/gcc/dfp.h index 3b9bb8dd889..268ceaae3ce 100644 --- a/gcc/dfp.h +++ b/gcc/dfp.h @@ -1,5 +1,5 @@ /* Decimal floating point support functions for GNU compiler. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/diagnostic-color.c b/gcc/diagnostic-color.c index 8abb6975bc9..ad7b8e8c6f1 100644 --- a/gcc/diagnostic-color.c +++ b/gcc/diagnostic-color.c @@ -1,5 +1,5 @@ /* Output colorization. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/gcc/diagnostic-color.h b/gcc/diagnostic-color.h index b4951e7a8f0..63df6921450 100644 --- a/gcc/diagnostic-color.h +++ b/gcc/diagnostic-color.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2013 Free Software Foundation, Inc. +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Manuel Lopez-Ibanez This file is part of GCC. @@ -19,7 +19,7 @@ along with GCC; see the file COPYING3. If not see /* Based on code from: */ /* grep.c - main driver file for grep. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/gcc/diagnostic-core.h b/gcc/diagnostic-core.h index a2107820e6e..2ff840492ec 100644 --- a/gcc/diagnostic-core.h +++ b/gcc/diagnostic-core.h @@ -1,7 +1,7 @@ /* Declarations of core diagnostic functionality for code that does not need to deal with diagnostic contexts or diagnostic info structures. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 36094a19c9a..819af2e0701 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -1,5 +1,5 @@ /* Language-independent diagnostic subroutines for the GNU Compiler Collection - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/diagnostic.def b/gcc/diagnostic.def index 2f1e36515ad..c45ee104f74 100644 --- a/gcc/diagnostic.def +++ b/gcc/diagnostic.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2001-2013 Free Software Foundation, Inc. +/* Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h index 49cb8c00b0e..31be6a8e26c 100644 --- a/gcc/diagnostic.h +++ b/gcc/diagnostic.h @@ -1,5 +1,5 @@ /* Various declarations for language-independent diagnostics subroutines. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/doc/arm-acle-intrinsics.texi b/gcc/doc/arm-acle-intrinsics.texi index bb6290b207d..e68f4cd2017 100644 --- a/gcc/doc/arm-acle-intrinsics.texi +++ b/gcc/doc/arm-acle-intrinsics.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2013 Free Software Foundation, Inc. +@c Copyright (C) 2013-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/arm-neon-intrinsics.texi b/gcc/doc/arm-neon-intrinsics.texi index b1468683f83..67f84e096a7 100644 --- a/gcc/doc/arm-neon-intrinsics.texi +++ b/gcc/doc/arm-neon-intrinsics.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2006-2013 Free Software Foundation, Inc. +@c Copyright (C) 2006-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/avr-mmcu.texi b/gcc/doc/avr-mmcu.texi index 838394d2bab..cd167c5e389 100644 --- a/gcc/doc/avr-mmcu.texi +++ b/gcc/doc/avr-mmcu.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2012-2013 Free Software Foundation, Inc. +@c Copyright (C) 2012-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc/doc/include/fdl.texi. diff --git a/gcc/doc/bugreport.texi b/gcc/doc/bugreport.texi index f728f176bbb..be035222597 100644 --- a/gcc/doc/bugreport.texi +++ b/gcc/doc/bugreport.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/cfg.texi b/gcc/doc/cfg.texi index 1be3f47a792..63b8dd58614 100644 --- a/gcc/doc/cfg.texi +++ b/gcc/doc/cfg.texi @@ -1,5 +1,5 @@ @c -*-texinfo-*- -@c Copyright (C) 2001-2013 Free Software Foundation, Inc. +@c Copyright (C) 2001-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/collect2.texi b/gcc/doc/collect2.texi index 4cc4ae38d53..d56c7a4f47e 100644 --- a/gcc/doc/collect2.texi +++ b/gcc/doc/collect2.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/compat.texi b/gcc/doc/compat.texi index 1bf97130b1f..c42c38de825 100644 --- a/gcc/doc/compat.texi +++ b/gcc/doc/compat.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2002-2013 Free Software Foundation, Inc. +@c Copyright (C) 2002-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/configfiles.texi b/gcc/doc/configfiles.texi index be58eca8934..5811b8fa92a 100644 --- a/gcc/doc/configfiles.texi +++ b/gcc/doc/configfiles.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/configterms.texi b/gcc/doc/configterms.texi index 383ef78a998..776b4bb8b45 100644 --- a/gcc/doc/configterms.texi +++ b/gcc/doc/configterms.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2001-2013 Free Software Foundation, Inc. +@c Copyright (C) 2001-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/contrib.texi b/gcc/doc/contrib.texi index 32a85634eb8..fb856950327 100644 --- a/gcc/doc/contrib.texi +++ b/gcc/doc/contrib.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/contribute.texi b/gcc/doc/contribute.texi index 9b3ebce3791..88cc72a10d3 100644 --- a/gcc/doc/contribute.texi +++ b/gcc/doc/contribute.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/cppenv.texi b/gcc/doc/cppenv.texi index adf2d0f194b..2116ccefd3e 100644 --- a/gcc/doc/cppenv.texi +++ b/gcc/doc/cppenv.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1999-2013 Free Software Foundation, Inc. +@c Copyright (C) 1999-2014 Free Software Foundation, Inc. @c This is part of the CPP and GCC manuals. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/cppopts.texi b/gcc/doc/cppopts.texi index 67b5c7873b9..b2127e4684c 100644 --- a/gcc/doc/cppopts.texi +++ b/gcc/doc/cppopts.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1999-2013 Free Software Foundation, Inc. +@c Copyright (C) 1999-2014 Free Software Foundation, Inc. @c This is part of the CPP and GCC manuals. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 713d4208195..23c530b2f86 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/fragments.texi b/gcc/doc/fragments.texi index b9a0c34b690..2eff7f7dca6 100644 --- a/gcc/doc/fragments.texi +++ b/gcc/doc/fragments.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/frontends.texi b/gcc/doc/frontends.texi index 6208fdc8afb..cd8f3caadd7 100644 --- a/gcc/doc/frontends.texi +++ b/gcc/doc/frontends.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi index 47972b362e1..a108e52d616 100644 --- a/gcc/doc/gcov.texi +++ b/gcc/doc/gcov.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1996-2013 Free Software Foundation, Inc. +@c Copyright (C) 1996-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/generic.texi b/gcc/doc/generic.texi index f2dd0ffae65..e85fa1d04c1 100644 --- a/gcc/doc/generic.texi +++ b/gcc/doc/generic.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2004-2013 Free Software Foundation, Inc. +@c Copyright (C) 2004-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/gimple.texi b/gcc/doc/gimple.texi index 7bd9fd51b78..714addaec7d 100644 --- a/gcc/doc/gimple.texi +++ b/gcc/doc/gimple.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2008-2013 Free Software Foundation, Inc. +@c Copyright (C) 2008-2014 Free Software Foundation, Inc. @c Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/gty.texi b/gcc/doc/gty.texi index a64d110a980..d32ac00e48e 100644 --- a/gcc/doc/gty.texi +++ b/gcc/doc/gty.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2002-2013 Free Software Foundation, Inc. +@c Copyright (C) 2002-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/headerdirs.texi b/gcc/doc/headerdirs.texi index 05422bfe902..2b936f561af 100644 --- a/gcc/doc/headerdirs.texi +++ b/gcc/doc/headerdirs.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/hostconfig.texi b/gcc/doc/hostconfig.texi index bd9a333e490..361f2ce5179 100644 --- a/gcc/doc/hostconfig.texi +++ b/gcc/doc/hostconfig.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gccint.texi. diff --git a/gcc/doc/implement-c.texi b/gcc/doc/implement-c.texi index 974546c1ca8..2ddae637dec 100644 --- a/gcc/doc/implement-c.texi +++ b/gcc/doc/implement-c.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2001-2013 Free Software Foundation, Inc. +@c Copyright (C) 2001-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/implement-cxx.texi b/gcc/doc/implement-cxx.texi index 43a8a597ab6..50efcc39b6d 100644 --- a/gcc/doc/implement-cxx.texi +++ b/gcc/doc/implement-cxx.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2009-2013 Free Software Foundation, Inc. +@c Copyright (C) 2009-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/include/gcc-common.texi b/gcc/doc/include/gcc-common.texi index 17999e5d547..7ce583e884e 100644 --- a/gcc/doc/include/gcc-common.texi +++ b/gcc/doc/include/gcc-common.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2001-2013 Free Software Foundation, Inc. +@c Copyright (C) 2001-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/install-old.texi b/gcc/doc/install-old.texi index 18e5479f8a9..5c993bdecb8 100644 --- a/gcc/doc/install-old.texi +++ b/gcc/doc/install-old.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file install.texi. diff --git a/gcc/doc/install.texi2html b/gcc/doc/install.texi2html index f664397abee..87ee6b71881 100755 --- a/gcc/doc/install.texi2html +++ b/gcc/doc/install.texi2html @@ -5,7 +5,7 @@ # $SOURCEDIR and $DESTDIR, resp., refer to the directory containing # the texinfo source and the directory to put the HTML version in. # -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # Originally by Gerald Pfeifer , June 2001. # # This file is part of GCC. diff --git a/gcc/doc/interface.texi b/gcc/doc/interface.texi index 65ca674f654..c2f25e84ad2 100644 --- a/gcc/doc/interface.texi +++ b/gcc/doc/interface.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 63bd59e63e4..ae4d5297646 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/languages.texi b/gcc/doc/languages.texi index 788a6957dc1..342314b1387 100644 --- a/gcc/doc/languages.texi +++ b/gcc/doc/languages.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2002-2013 Free Software Foundation, Inc. +@c Copyright (C) 2002-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/libgcc.texi b/gcc/doc/libgcc.texi index d9631b6c642..0dd2ff7deff 100644 --- a/gcc/doc/libgcc.texi +++ b/gcc/doc/libgcc.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2003-2013 Free Software Foundation, Inc. +@c Copyright (C) 2003-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. @c Contributed by Aldy Hernandez diff --git a/gcc/doc/loop.texi b/gcc/doc/loop.texi index b1995c125cf..caa72f2bcab 100644 --- a/gcc/doc/loop.texi +++ b/gcc/doc/loop.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2006-2013 Free Software Foundation, Inc. +@c Copyright (C) 2006-2014 Free Software Foundation, Inc. @c Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/lto.texi b/gcc/doc/lto.texi index d337f5f4bf7..f53df1e933b 100644 --- a/gcc/doc/lto.texi +++ b/gcc/doc/lto.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2010-2013 Free Software Foundation, Inc. +@c Copyright (C) 2010-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. @c Contributed by Jan Hubicka and diff --git a/gcc/doc/makefile.texi b/gcc/doc/makefile.texi index 437a02f18a2..18b1c682e81 100644 --- a/gcc/doc/makefile.texi +++ b/gcc/doc/makefile.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2001-2013 Free Software Foundation, Inc. +@c Copyright (C) 2001-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 74ba5a1d2fb..dddff7fedce 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/objc.texi b/gcc/doc/objc.texi index 5410c7a8ac0..0e73eab4172 100644 --- a/gcc/doc/objc.texi +++ b/gcc/doc/objc.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/optinfo.texi b/gcc/doc/optinfo.texi index 983d653ddbd..01095835037 100644 --- a/gcc/doc/optinfo.texi +++ b/gcc/doc/optinfo.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2013 Free Software Foundation, Inc. +@c Copyright (C) 2013-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi index 73a2a3122f0..ff80dac1921 100644 --- a/gcc/doc/options.texi +++ b/gcc/doc/options.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2003-2013 Free Software Foundation, Inc. +@c Copyright (C) 2003-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi index a1f57cc3701..2727b2c8d02 100644 --- a/gcc/doc/passes.texi +++ b/gcc/doc/passes.texi @@ -1,6 +1,6 @@ @c markers: BUG TODO -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/plugins.texi b/gcc/doc/plugins.texi index fc2d754dc0b..f1983808b06 100644 --- a/gcc/doc/plugins.texi +++ b/gcc/doc/plugins.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2009-2013 Free Software Foundation, Inc. +@c Copyright (C) 2009-2014 Free Software Foundation, Inc. @c Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/portability.texi b/gcc/doc/portability.texi index 87eb4baa76e..5c893d400f8 100644 --- a/gcc/doc/portability.texi +++ b/gcc/doc/portability.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi index 15290f23fba..20b7187fbab 100644 --- a/gcc/doc/rtl.texi +++ b/gcc/doc/rtl.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/service.texi b/gcc/doc/service.texi index 2a6d4310713..f8ab62726f3 100644 --- a/gcc/doc/service.texi +++ b/gcc/doc/service.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 2947ac8fae2..f9bc8805609 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2002-2013 Free Software Foundation, Inc. +@c Copyright (C) 2002-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/standards.texi b/gcc/doc/standards.texi index 3c1f480f3de..f5744c8473a 100644 --- a/gcc/doc/standards.texi +++ b/gcc/doc/standards.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2000-2013 Free Software Foundation, Inc. +@c Copyright (C) 2000-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 8abb3effff4..f2049367945 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index deedb41d3b2..50f412cac08 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/tree-ssa.texi b/gcc/doc/tree-ssa.texi index 17c1b0c70e4..391dba89e5d 100644 --- a/gcc/doc/tree-ssa.texi +++ b/gcc/doc/tree-ssa.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2004-2013 Free Software Foundation, Inc. +@c Copyright (C) 2004-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/doc/trouble.texi b/gcc/doc/trouble.texi index d5b056a618a..620da682d0c 100644 --- a/gcc/doc/trouble.texi +++ b/gcc/doc/trouble.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1988-2013 Free Software Foundation, Inc. +@c Copyright (C) 1988-2014 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. diff --git a/gcc/dojump.c b/gcc/dojump.c index 73df6d163d5..7846314e030 100644 --- a/gcc/dojump.c +++ b/gcc/dojump.c @@ -1,5 +1,5 @@ /* Convert tree expression to rtl instructions, for GNU compiler. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dominance.c b/gcc/dominance.c index 77f94716cf6..ff0dfe6714f 100644 --- a/gcc/dominance.c +++ b/gcc/dominance.c @@ -1,5 +1,5 @@ /* Calculate (post)dominators in slightly super-linear time. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Michael Matz (matz@ifh.de). This file is part of GCC. diff --git a/gcc/domwalk.c b/gcc/domwalk.c index e84c8f711a0..e23351535d4 100644 --- a/gcc/domwalk.c +++ b/gcc/domwalk.c @@ -1,5 +1,5 @@ /* Generic dominator tree walker - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/domwalk.h b/gcc/domwalk.h index 43c15740f7a..1e2ad2ce945 100644 --- a/gcc/domwalk.h +++ b/gcc/domwalk.h @@ -1,5 +1,5 @@ /* Generic dominator tree walker - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/double-int.c b/gcc/double-int.c index a810a050e57..454655d9049 100644 --- a/gcc/double-int.c +++ b/gcc/double-int.c @@ -1,5 +1,5 @@ /* Operations with long integers. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/double-int.h b/gcc/double-int.h index 650520ba052..5ca9ccf61f9 100644 --- a/gcc/double-int.h +++ b/gcc/double-int.h @@ -1,5 +1,5 @@ /* Operations with long integers. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dse.c b/gcc/dse.c index 958097d2d1c..f5c9c7376ea 100644 --- a/gcc/dse.c +++ b/gcc/dse.c @@ -1,5 +1,5 @@ /* RTL dead store elimination. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Richard Sandiford and Kenneth Zadeck diff --git a/gcc/dumpfile.c b/gcc/dumpfile.c index e80f9bf37e2..fd630a69933 100644 --- a/gcc/dumpfile.c +++ b/gcc/dumpfile.c @@ -1,5 +1,5 @@ /* Dump infrastructure for optimizations and intermediate representation. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dumpfile.h b/gcc/dumpfile.h index a6b377eaf8c..75949b7e7b9 100644 --- a/gcc/dumpfile.h +++ b/gcc/dumpfile.h @@ -1,5 +1,5 @@ /* Definitions for the shared dumpfile. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dwarf2asm.c b/gcc/dwarf2asm.c index fc1b0825205..1372b23adf6 100644 --- a/gcc/dwarf2asm.c +++ b/gcc/dwarf2asm.c @@ -1,5 +1,5 @@ /* Dwarf2 assembler output helper routines. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dwarf2asm.h b/gcc/dwarf2asm.h index 6edbb514477..ca76bf69083 100644 --- a/gcc/dwarf2asm.h +++ b/gcc/dwarf2asm.h @@ -1,5 +1,5 @@ /* Dwarf2 assembler output helper routines. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c index 77152990ea5..abcdeb34461 100644 --- a/gcc/dwarf2cfi.c +++ b/gcc/dwarf2cfi.c @@ -1,5 +1,5 @@ /* Dwarf2 Call Frame Information helper routines. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 86263a518d3..22282d8b1ca 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -1,5 +1,5 @@ /* Output Dwarf2 format symbol table information from GCC. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Gary Funck (gary@intrepid.com). Derived from DWARF 1 implementation of Ron Guilmette (rfg@monkeys.com). Extensively modified by Jason Merrill (jason@cygnus.com). diff --git a/gcc/dwarf2out.h b/gcc/dwarf2out.h index 28c4105affd..696fef938f1 100644 --- a/gcc/dwarf2out.h +++ b/gcc/dwarf2out.h @@ -1,5 +1,5 @@ /* dwarf2out.h - Various declarations for functions found in dwarf2out.c - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index ad63d0b8b99..bcc6ad3afb7 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -1,5 +1,5 @@ /* Emit RTL for the GCC expander. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h index 301c67b3545..fe68de94756 100644 --- a/gcc/emit-rtl.h +++ b/gcc/emit-rtl.h @@ -1,5 +1,5 @@ /* Exported functions from emit-rtl.c - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/errors.c b/gcc/errors.c index 5e0bc720e6f..be38b1f2779 100644 --- a/gcc/errors.c +++ b/gcc/errors.c @@ -1,5 +1,5 @@ /* Basic error reporting routines. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/errors.h b/gcc/errors.h index a58fdf4c211..233da630adb 100644 --- a/gcc/errors.h +++ b/gcc/errors.h @@ -1,5 +1,5 @@ /* Basic error reporting routines. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/et-forest.c b/gcc/et-forest.c index 61f35a0312e..91b0e937537 100644 --- a/gcc/et-forest.c +++ b/gcc/et-forest.c @@ -1,6 +1,6 @@ /* ET-trees data structure implementation. Contributed by Pavel Nejedly - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of the libiberty library. Libiberty is free software; you can redistribute it and/or diff --git a/gcc/et-forest.h b/gcc/et-forest.h index 23cc82043ba..b3842385120 100644 --- a/gcc/et-forest.h +++ b/gcc/et-forest.h @@ -1,5 +1,5 @@ /* Et-forest data structure implementation. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/gcc/except.c b/gcc/except.c index cf4fd149dfc..908954cbbbf 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -1,5 +1,5 @@ /* Implements exception handling. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. Contributed by Mike Stump . This file is part of GCC. diff --git a/gcc/except.h b/gcc/except.h index bc9654a7ae4..bab13e10cbe 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -1,5 +1,5 @@ /* Exception Handling interface routines. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Mike Stump . This file is part of GCC. diff --git a/gcc/exec-tool.in b/gcc/exec-tool.in index 76d0ef65ab1..b07c3b27f07 100644 --- a/gcc/exec-tool.in +++ b/gcc/exec-tool.in @@ -1,6 +1,6 @@ #! /bin/sh -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2014 Free Software Foundation, Inc. # This file is part of GCC. # GCC is free software; you can redistribute it and/or modify diff --git a/gcc/explow.c b/gcc/explow.c index bc4f805323c..f4df9df4238 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -1,5 +1,5 @@ /* Subroutines for manipulating rtx's in semantically interesting ways. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/expmed.c b/gcc/expmed.c index f672678a2d8..8f4b008d589 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -1,6 +1,6 @@ /* Medium-level subroutines: convert bit-field store and extract and shifts, multiplies and divides to rtl instructions. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/expmed.h b/gcc/expmed.h index 2301f5a6ce9..9681e41fbde 100644 --- a/gcc/expmed.h +++ b/gcc/expmed.h @@ -1,5 +1,5 @@ /* Target-dependent costs for expmed.c. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/expr.c b/gcc/expr.c index 1c5658923bd..916a8aa889a 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -1,5 +1,5 @@ /* Convert tree expression to rtl instructions, for GNU compiler. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/expr.h b/gcc/expr.h index e734ef44016..a39b98ea5ef 100644 --- a/gcc/expr.h +++ b/gcc/expr.h @@ -1,5 +1,5 @@ /* Definitions for code generation pass of GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/file-find.c b/gcc/file-find.c index 3952349e989..87d486d91d7 100644 --- a/gcc/file-find.c +++ b/gcc/file-find.c @@ -1,5 +1,5 @@ /* Utility functions for finding files relative to GCC binaries. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/file-find.h b/gcc/file-find.h index 43a2d3f28ec..b4380566daf 100644 --- a/gcc/file-find.h +++ b/gcc/file-find.h @@ -1,6 +1,6 @@ /* Prototypes and data structures used for implementing functions for finding files relative to GCC binaries. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/final.c b/gcc/final.c index 55269741211..240ca67dcf5 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -1,5 +1,5 @@ /* Convert RTL to assembler code and output it, for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fixed-value.c b/gcc/fixed-value.c index 91ec5880119..58f63ba6887 100644 --- a/gcc/fixed-value.c +++ b/gcc/fixed-value.c @@ -1,5 +1,5 @@ /* Fixed-point arithmetic support. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fixed-value.h b/gcc/fixed-value.h index f59466ad4f1..f183eab0c07 100644 --- a/gcc/fixed-value.h +++ b/gcc/fixed-value.h @@ -1,5 +1,5 @@ /* Fixed-point arithmetic support. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/flag-types.h b/gcc/flag-types.h index e4792dd3cfd..ec16faa18a3 100644 --- a/gcc/flag-types.h +++ b/gcc/flag-types.h @@ -1,5 +1,5 @@ /* Compilation switch flag type definitions for GCC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/flags.h b/gcc/flags.h index 828298937b0..475d4287e59 100644 --- a/gcc/flags.h +++ b/gcc/flags.h @@ -1,5 +1,5 @@ /* Compilation switch flag definitions for GCC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 0781bdb52c8..891c0d5151c 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -1,5 +1,5 @@ /* Fold a constant sub-tree into a single node for C-compiler - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fold-const.h b/gcc/fold-const.h index 1d458366951..f69e9f890af 100644 --- a/gcc/fold-const.h +++ b/gcc/fold-const.h @@ -1,5 +1,5 @@ /* Fold a constant sub-tree into a single node for C-compiler - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index fff53db6ce8..202c0479e42 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2014-01-02 Tobias Burnus * gfortranspec.c (lang_specific_driver): Update copyright notice diff --git a/gcc/fortran/Make-lang.in b/gcc/fortran/Make-lang.in index 41abe0f7ef2..f8287bd46b3 100644 --- a/gcc/fortran/Make-lang.in +++ b/gcc/fortran/Make-lang.in @@ -1,6 +1,6 @@ # -*- makefile -*- # Top level makefile fragment for GNU gfortran, the GNU Fortran 95 compiler. -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # Contributed by Paul Brook diff --git a/gcc/fortran/arith.c b/gcc/fortran/arith.c index 3339585988a..053cf765e59 100644 --- a/gcc/fortran/arith.c +++ b/gcc/fortran/arith.c @@ -1,5 +1,5 @@ /* Compiler arithmetic - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/arith.h b/gcc/fortran/arith.h index 332d4fb0785..ca99dbaebe3 100644 --- a/gcc/fortran/arith.h +++ b/gcc/fortran/arith.h @@ -1,5 +1,5 @@ /* Compiler arithmetic header. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Steven Bosscher This file is part of GCC. diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c index 687ae3d2f0d..ef2aa69f721 100644 --- a/gcc/fortran/array.c +++ b/gcc/fortran/array.c @@ -1,5 +1,5 @@ /* Array things - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/bbt.c b/gcc/fortran/bbt.c index 8f44050821d..2f020648a2e 100644 --- a/gcc/fortran/bbt.c +++ b/gcc/fortran/bbt.c @@ -1,5 +1,5 @@ /* Balanced binary trees using treaps. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 0064761e170..42820306e1c 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -1,5 +1,5 @@ /* Check functions - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Andy Vaught & Katherine Holcomb This file is part of GCC. diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c index 5c3a4ec37fb..47a308257eb 100644 --- a/gcc/fortran/class.c +++ b/gcc/fortran/class.c @@ -1,5 +1,5 @@ /* Implementation of Fortran 2003 Polymorphism. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Paul Richard Thomas and Janus Weil diff --git a/gcc/fortran/config-lang.in b/gcc/fortran/config-lang.in index e570fe26512..23da31c49d3 100644 --- a/gcc/fortran/config-lang.in +++ b/gcc/fortran/config-lang.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/fortran/constructor.c b/gcc/fortran/constructor.c index 74c3b3845e5..d1e39ed21ee 100644 --- a/gcc/fortran/constructor.c +++ b/gcc/fortran/constructor.c @@ -1,5 +1,5 @@ /* Array and structure constructors - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/constructor.h b/gcc/fortran/constructor.h index a7eb0de0b7e..c4e48667eb7 100644 --- a/gcc/fortran/constructor.h +++ b/gcc/fortran/constructor.h @@ -1,5 +1,5 @@ /* Array and structure constructors - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/convert.c b/gcc/fortran/convert.c index 466b48abb3b..34c52c8101d 100644 --- a/gcc/fortran/convert.c +++ b/gcc/fortran/convert.c @@ -1,5 +1,5 @@ /* Data type conversion - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c index 8417ddca163..37bc13b388e 100644 --- a/gcc/fortran/cpp.c +++ b/gcc/fortran/cpp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2013 Free Software Foundation, Inc. +/* Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/cpp.h b/gcc/fortran/cpp.h index 04e13bef93b..71fd6aa1e21 100644 --- a/gcc/fortran/cpp.h +++ b/gcc/fortran/cpp.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2013 Free Software Foundation, Inc. +/* Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/data.c b/gcc/fortran/data.c index a1c89fa1f06..8b270ac30ce 100644 --- a/gcc/fortran/data.c +++ b/gcc/fortran/data.c @@ -1,5 +1,5 @@ /* Supporting functions for resolving DATA statement. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Lifang Zeng This file is part of GCC. diff --git a/gcc/fortran/data.h b/gcc/fortran/data.h index 04114dc8817..5e23ac75fad 100644 --- a/gcc/fortran/data.h +++ b/gcc/fortran/data.h @@ -1,5 +1,5 @@ /* Header for functions resolving DATA statements. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 0a0f8e0f3b5..e8ac941a082 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1,5 +1,5 @@ /* Declaration statement matcher - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c index d85905cb6b8..a24a4709e03 100644 --- a/gcc/fortran/dependency.c +++ b/gcc/fortran/dependency.c @@ -1,5 +1,5 @@ /* Dependency analysis - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. diff --git a/gcc/fortran/dependency.h b/gcc/fortran/dependency.h index c0b697480c0..e3bbbae5c55 100644 --- a/gcc/fortran/dependency.h +++ b/gcc/fortran/dependency.h @@ -1,5 +1,5 @@ /* Header for dependency analysis - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c index 501a4ebb566..b1343bc2a86 100644 --- a/gcc/fortran/dump-parse-tree.c +++ b/gcc/fortran/dump-parse-tree.c @@ -1,5 +1,5 @@ /* Parse tree dumper - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Steven Bosscher This file is part of GCC. diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c index 35fe62706c6..e843fa5a96c 100644 --- a/gcc/fortran/error.c +++ b/gcc/fortran/error.c @@ -1,5 +1,5 @@ /* Handle errors. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught & Niels Kristian Bech Jensen This file is part of GCC. diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 00a4beff62b..818212a45af 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -1,5 +1,5 @@ /* Routines for manipulation of expression nodes. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/f95-lang.c b/gcc/fortran/f95-lang.c index 4da5e6913d2..aa49ea04656 100644 --- a/gcc/fortran/f95-lang.c +++ b/gcc/fortran/f95-lang.c @@ -1,5 +1,5 @@ /* gfortran backend interface - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Paul Brook. This file is part of GCC. diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c index e7856465367..52bd7005e17 100644 --- a/gcc/fortran/frontend-passes.c +++ b/gcc/fortran/frontend-passes.c @@ -1,5 +1,5 @@ /* Pass manager for Fortran front end. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Thomas König. This file is part of GCC. diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 03d9136d01b..77f768e5a15 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -1,5 +1,5 @@ /* gfortran header file - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 243b0f12150..67548c062eb 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -1,5 +1,5 @@ /* Deal with interfaces. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index 3da3c5365a0..3db000b6ccf 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -1,6 +1,6 @@ /* Build up a list of intrinsic subroutines and functions for the name-resolution stage. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught & Katherine Holcomb This file is part of GCC. diff --git a/gcc/fortran/intrinsic.h b/gcc/fortran/intrinsic.h index 363bf387716..d7f795400cd 100644 --- a/gcc/fortran/intrinsic.h +++ b/gcc/fortran/intrinsic.h @@ -1,6 +1,6 @@ /* Header file for intrinsics check, resolve and simplify function prototypes. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught & Katherine Holcomb This file is part of GCC. diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index cc5ce12781e..f2593b04e30 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -1,5 +1,5 @@ /* Deal with I/O statements & related stuff. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/ioparm.def b/gcc/fortran/ioparm.def index 2499c90c9a8..17b3458641c 100644 --- a/gcc/fortran/ioparm.def +++ b/gcc/fortran/ioparm.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2005-2013 Free Software Foundation, Inc. +/* Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c index f31340f5d55..630d725e173 100644 --- a/gcc/fortran/iresolve.c +++ b/gcc/fortran/iresolve.c @@ -1,5 +1,5 @@ /* Intrinsic function resolution. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught & Katherine Holcomb This file is part of GCC. diff --git a/gcc/fortran/iso-c-binding.def b/gcc/fortran/iso-c-binding.def index c36a4786083..5f4baa16c5c 100644 --- a/gcc/fortran/iso-c-binding.def +++ b/gcc/fortran/iso-c-binding.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/iso-fortran-env.def b/gcc/fortran/iso-fortran-env.def index 13ddaa31603..ebadaefb773 100644 --- a/gcc/fortran/iso-fortran-env.def +++ b/gcc/fortran/iso-fortran-env.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2013 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/lang-specs.h b/gcc/fortran/lang-specs.h index 99d7c97c983..7560ed42aae 100644 --- a/gcc/fortran/lang-specs.h +++ b/gcc/fortran/lang-specs.h @@ -1,6 +1,6 @@ /* Contribution to the specs for the GNU Compiler Collection from GNU Fortran 95 compiler. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index 0d328c84a63..59f635d0c64 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt @@ -1,5 +1,5 @@ ; Options for the Fortran 95 front end. -; Copyright (C) 2003-2013 Free Software Foundation, Inc. +; Copyright (C) 2003-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/fortran/libgfortran.h b/gcc/fortran/libgfortran.h index fce52942c88..230b6389f6f 100644 --- a/gcc/fortran/libgfortran.h +++ b/gcc/fortran/libgfortran.h @@ -1,5 +1,5 @@ /* Header file to the Fortran front-end and runtime library - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 539780aaa24..eda1bf3667b 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -1,5 +1,5 @@ /* Matching subroutines in all sizes, shapes and colors. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/match.h b/gcc/fortran/match.h index 1a701f04f39..385e84020eb 100644 --- a/gcc/fortran/match.h +++ b/gcc/fortran/match.h @@ -1,5 +1,5 @@ /* All matcher functions. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Steven Bosscher This file is part of GCC. diff --git a/gcc/fortran/matchexp.c b/gcc/fortran/matchexp.c index 46432818dbc..1320b962853 100644 --- a/gcc/fortran/matchexp.c +++ b/gcc/fortran/matchexp.c @@ -1,5 +1,5 @@ /* Expression parser. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/mathbuiltins.def b/gcc/fortran/mathbuiltins.def index 8236d5c1a1d..d5bf60dab1a 100644 --- a/gcc/fortran/mathbuiltins.def +++ b/gcc/fortran/mathbuiltins.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2013 Free Software Foundation, Inc. +/* Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fortran/misc.c b/gcc/fortran/misc.c index 9b8f31f68fc..3c0dfb459b2 100644 --- a/gcc/fortran/misc.c +++ b/gcc/fortran/misc.c @@ -1,5 +1,5 @@ /* Miscellaneous stuff that doesn't fit anywhere else. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index 98e22df9963..cad835fae37 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -1,6 +1,6 @@ /* Handle modules, which amounts to loading and saving symbols and their attendant structures. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c index f4b8d908f92..dff3ab1ad91 100644 --- a/gcc/fortran/openmp.c +++ b/gcc/fortran/openmp.c @@ -1,5 +1,5 @@ /* OpenMP directive matching and resolving. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Jakub Jelinek This file is part of GCC. diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index e05528a9223..895a7dc4d39 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -1,5 +1,5 @@ /* Parse and display command line options. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index e8b988558a8..d9af60e578b 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -1,5 +1,5 @@ /* Main parser. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/parse.h b/gcc/fortran/parse.h index acafe6c52eb..44b8f8bd114 100644 --- a/gcc/fortran/parse.h +++ b/gcc/fortran/parse.h @@ -1,5 +1,5 @@ /* Parser header - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Steven Bosscher This file is part of GCC. diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index 089ed429310..c77b4ecf7dd 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -1,5 +1,5 @@ /* Primary expression subroutines - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 6151d73827e..0e80f491abc 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -1,5 +1,5 @@ /* Perform type resolution on the various structures. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c index e0650ba7ee0..8f517342129 100644 --- a/gcc/fortran/scanner.c +++ b/gcc/fortran/scanner.c @@ -1,5 +1,5 @@ /* Character scanner. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/scanner.h b/gcc/fortran/scanner.h index 4c559fbc2f2..661cdcbc620 100644 --- a/gcc/fortran/scanner.h +++ b/gcc/fortran/scanner.h @@ -1,5 +1,5 @@ /* Character scanner header. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Janne Blomqvist This file is part of GCC. diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index dca9b7e7a9b..96d0f21f36c 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -1,5 +1,5 @@ /* Simplify intrinsic functions at compile-time. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught & Katherine Holcomb This file is part of GCC. diff --git a/gcc/fortran/st.c b/gcc/fortran/st.c index f8b341c0b6c..0e1cc705eb4 100644 --- a/gcc/fortran/st.c +++ b/gcc/fortran/st.c @@ -1,5 +1,5 @@ /* Build executable statement trees. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 07930f2916d..dad7b3368a8 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -1,5 +1,5 @@ /* Maintain binary trees of symbols. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Andy Vaught This file is part of GCC. diff --git a/gcc/fortran/target-memory.c b/gcc/fortran/target-memory.c index d0ee41a089c..3baebade84d 100644 --- a/gcc/fortran/target-memory.c +++ b/gcc/fortran/target-memory.c @@ -1,5 +1,5 @@ /* Simulate storage of variables into target memory. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Paul Thomas and Brooks Moses This file is part of GCC. diff --git a/gcc/fortran/target-memory.h b/gcc/fortran/target-memory.h index 100321a2b7a..c976be376d2 100644 --- a/gcc/fortran/target-memory.h +++ b/gcc/fortran/target-memory.h @@ -1,5 +1,5 @@ /* Simulate storage of variables into target memory, header. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Paul Thomas and Brooks Moses This file is part of GCC. diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 78b08d70951..0f5375dba95 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -1,5 +1,5 @@ /* Array translation routines - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook and Steven Bosscher diff --git a/gcc/fortran/trans-array.h b/gcc/fortran/trans-array.h index e8f207e2fb2..c4c09c1c51e 100644 --- a/gcc/fortran/trans-array.h +++ b/gcc/fortran/trans-array.h @@ -1,5 +1,5 @@ /* Header for array handling functions - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c index 2266c1bfa56..19eaddae2ce 100644 --- a/gcc/fortran/trans-common.c +++ b/gcc/fortran/trans-common.c @@ -1,5 +1,5 @@ /* Common block and equivalence list handling - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Canqun Yang This file is part of GCC. diff --git a/gcc/fortran/trans-const.c b/gcc/fortran/trans-const.c index f5a2b18ecba..a2c3e31b649 100644 --- a/gcc/fortran/trans-const.c +++ b/gcc/fortran/trans-const.c @@ -1,5 +1,5 @@ /* Translation of constants - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. diff --git a/gcc/fortran/trans-const.h b/gcc/fortran/trans-const.h index 1fe4d042dc0..42ffe6952c2 100644 --- a/gcc/fortran/trans-const.h +++ b/gcc/fortran/trans-const.h @@ -1,5 +1,5 @@ /* Header for code constant translation functions - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 4da6b62a622..bb02f43381f 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1,5 +1,5 @@ /* Backend function setup - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index d6498ae607a..1e156ff9c02 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -1,5 +1,5 @@ /* Expression translation - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook and Steven Bosscher diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 1f5d6154bef..1eb9490f783 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -1,5 +1,5 @@ /* Intrinsic translation - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook and Steven Bosscher diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index 9b46a4eef3e..ba27f810d79 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -1,5 +1,5 @@ /* IO Code translation/library interface - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. diff --git a/gcc/fortran/trans-openmp.c b/gcc/fortran/trans-openmp.c index e0c992e35f7..41020a836a7 100644 --- a/gcc/fortran/trans-openmp.c +++ b/gcc/fortran/trans-openmp.c @@ -1,5 +1,5 @@ /* OpenMP directive translation -- generate GCC trees from gfc_code. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Jakub Jelinek This file is part of GCC. diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 51d037e90f9..5dd7bafe452 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -1,5 +1,5 @@ /* Statement translation -- generate GCC trees from gfc_code. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook and Steven Bosscher diff --git a/gcc/fortran/trans-stmt.h b/gcc/fortran/trans-stmt.h index 415f76d79d8..8a57be4d577 100644 --- a/gcc/fortran/trans-stmt.h +++ b/gcc/fortran/trans-stmt.h @@ -1,5 +1,5 @@ /* Header for statement translation functions - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index 21d9f285d17..adc34ddfa9d 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -1,5 +1,5 @@ /* Backend support for Fortran 95 basic types and derived types. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook and Steven Bosscher diff --git a/gcc/fortran/trans-types.h b/gcc/fortran/trans-types.h index eaecfe1a527..e57c9d1089e 100644 --- a/gcc/fortran/trans-types.h +++ b/gcc/fortran/trans-types.h @@ -1,5 +1,5 @@ /* Header for Fortran 95 types backend support. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook and Steven Bosscher diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index 9e57058d56e..c5b3b9e40e1 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -1,5 +1,5 @@ /* Code translation -- generate GCC trees from gfc_code. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h index 424ce7aa489..e05a375bf49 100644 --- a/gcc/fortran/trans.h +++ b/gcc/fortran/trans.h @@ -1,5 +1,5 @@ /* Header for code translation functions - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is part of GCC. diff --git a/gcc/fortran/types.def b/gcc/fortran/types.def index 9bbee3504fe..78fc679f183 100644 --- a/gcc/fortran/types.def +++ b/gcc/fortran/types.def @@ -1,4 +1,4 @@ -/* Copyright (C) 2001-2013 Free Software Foundation, Inc. +/* Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fp-test.c b/gcc/fp-test.c index 5a24bdef7a3..126cf224792 100644 --- a/gcc/fp-test.c +++ b/gcc/fp-test.c @@ -1,5 +1,5 @@ /* fp-test.c - Check that all floating-point operations are available. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Ronald F. Guilmette . This file is part of GCC. diff --git a/gcc/function.c b/gcc/function.c index 13e98773eb6..8dcdb313661 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -1,5 +1,5 @@ /* Expands front end tree to back end RTL for GCC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/function.h b/gcc/function.h index c84285d75fa..c22f6614bd8 100644 --- a/gcc/function.h +++ b/gcc/function.h @@ -1,5 +1,5 @@ /* Structure for saving state for a nested function. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/fwprop.c b/gcc/fwprop.c index da40a677559..4317f51f0da 100644 --- a/gcc/fwprop.c +++ b/gcc/fwprop.c @@ -1,5 +1,5 @@ /* RTL-based forward propagation pass for GNU compiler. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Paolo Bonzini and Steven Bosscher. This file is part of GCC. diff --git a/gcc/gcc-ar.c b/gcc/gcc-ar.c index d7e05e3f35c..aebaa92bf1d 100644 --- a/gcc/gcc-ar.c +++ b/gcc/gcc-ar.c @@ -1,5 +1,5 @@ /* Wrapper for ar/ranlib/nm to pass the LTO plugin. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Andi Kleen. This file is part of GCC. diff --git a/gcc/gcc-plugin.h b/gcc/gcc-plugin.h index 85108931689..035b50b3516 100644 --- a/gcc/gcc-plugin.h +++ b/gcc/gcc-plugin.h @@ -1,5 +1,5 @@ /* Public header file for plugins to include. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gcc-symtab.h b/gcc/gcc-symtab.h index a5bbad265a3..e253561b793 100644 --- a/gcc/gcc-symtab.h +++ b/gcc/gcc-symtab.h @@ -2,7 +2,7 @@ FIXME - This file should be named symtab.h, but that name conflicts with libcpp's symtab.h. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gcc.h b/gcc/gcc.h index 8a96b9acf4a..c4a27a8d47c 100644 --- a/gcc/gcc.h +++ b/gcc/gcc.h @@ -1,5 +1,5 @@ /* Header file for modules that link with gcc.c - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gcov-io.c b/gcc/gcov-io.c index 5a21c1f0691..ef5120a0c1f 100644 --- a/gcc/gcov-io.c +++ b/gcc/gcov-io.c @@ -1,5 +1,5 @@ /* File format for coverage information - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Bob Manson . Completely remangled by Nathan Sidwell . diff --git a/gcc/gcov-io.h b/gcc/gcov-io.h index fb3857d1808..3d3fd056587 100644 --- a/gcc/gcov-io.h +++ b/gcc/gcov-io.h @@ -1,5 +1,5 @@ /* File format for coverage information - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. Contributed by Bob Manson . Completely remangled by Nathan Sidwell . diff --git a/gcc/gcov-iov.c b/gcc/gcov-iov.c index 50972e2ff0d..058388ca702 100644 --- a/gcc/gcov-iov.c +++ b/gcc/gcov-iov.c @@ -1,6 +1,6 @@ /* Generate gcov version string from version.c. See gcov-io.h for description of how the version string is generated. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Nathan Sidwell This file is part of GCC. diff --git a/gcc/gcse.c b/gcc/gcse.c index fdf0a572379..eff3715c49f 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -1,5 +1,5 @@ /* Partial redundancy elimination / Hoisting for RTL. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gcse.h b/gcc/gcse.h index e1dea21d81f..8589808dcb7 100644 --- a/gcc/gcse.h +++ b/gcc/gcse.h @@ -1,6 +1,6 @@ /* Global common subexpression elimination/Partial redundancy elimination and global constant/copy propagation for GNU compiler. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gdbhooks.py b/gcc/gdbhooks.py index f0a925c2b9c..85608dca0b0 100644 --- a/gcc/gdbhooks.py +++ b/gcc/gdbhooks.py @@ -1,5 +1,5 @@ # Python hooks for gdb for debugging GCC -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # Contributed by David Malcolm diff --git a/gcc/gdbinit.in b/gcc/gdbinit.in index 79361a5bfd1..c388f8ac704 100644 --- a/gcc/gdbinit.in +++ b/gcc/gdbinit.in @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/gen-pass-instances.awk b/gcc/gen-pass-instances.awk index a7367aeae5e..70dd0eae8d5 100644 --- a/gcc/gen-pass-instances.awk +++ b/gcc/gen-pass-instances.awk @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the diff --git a/gcc/genattr-common.c b/gcc/genattr-common.c index b0848cff7ec..d15b4becd5c 100644 --- a/gcc/genattr-common.c +++ b/gcc/genattr-common.c @@ -1,7 +1,7 @@ /* Generate attribute information shared between driver and core compilers (insn-attr-common.h) from machine description. Split out of genattr.c. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genattr.c b/gcc/genattr.c index 0b92243a86d..44550c0b637 100644 --- a/gcc/genattr.c +++ b/gcc/genattr.c @@ -1,5 +1,5 @@ /* Generate attribute information (insn-attr.h) from machine description. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c index 70f35316404..99b1b83f4cb 100644 --- a/gcc/genattrtab.c +++ b/gcc/genattrtab.c @@ -1,5 +1,5 @@ /* Generate code from machine description to compute values of attributes. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. diff --git a/gcc/genautomata.c b/gcc/genautomata.c index a66a21920a3..08fc9031c96 100644 --- a/gcc/genautomata.c +++ b/gcc/genautomata.c @@ -1,5 +1,5 @@ /* Pipeline hazard description translator. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Written by Vladimir Makarov diff --git a/gcc/gencheck.c b/gcc/gencheck.c index a25553081cc..b6dab646054 100644 --- a/gcc/gencheck.c +++ b/gcc/gencheck.c @@ -1,5 +1,5 @@ /* Generate check macros for tree codes. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genchecksum.c b/gcc/genchecksum.c index d0dc8b95d04..8dcc195bfa3 100644 --- a/gcc/genchecksum.c +++ b/gcc/genchecksum.c @@ -1,5 +1,5 @@ /* Generate checksums of executables for PCH validation - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gencodes.c b/gcc/gencodes.c index 1b08dc5bb78..b34381f9268 100644 --- a/gcc/gencodes.c +++ b/gcc/gencodes.c @@ -1,7 +1,7 @@ /* Generate from machine description: - some macros CODE_FOR_... giving the insn_code_number value for each of the defined standard insn names. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genconditions.c b/gcc/genconditions.c index ad542204426..dc22c78a42e 100644 --- a/gcc/genconditions.c +++ b/gcc/genconditions.c @@ -1,5 +1,5 @@ /* Process machine description and calculate constant conditions. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genconfig.c b/gcc/genconfig.c index 498dd72e375..cafa8d3040a 100644 --- a/gcc/genconfig.c +++ b/gcc/genconfig.c @@ -1,6 +1,6 @@ /* Generate from machine description: - some #define configuration flags. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genconstants.c b/gcc/genconstants.c index d1f8775c293..3e4a28eb2b8 100644 --- a/gcc/genconstants.c +++ b/gcc/genconstants.c @@ -2,7 +2,7 @@ a series of #define statements, one for each constant named in a (define_constants ...) pattern. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genemit.c b/gcc/genemit.c index 03831bfc9de..faaa610a529 100644 --- a/gcc/genemit.c +++ b/gcc/genemit.c @@ -1,5 +1,5 @@ /* Generate code from machine description to emit insns as rtl. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genenums.c b/gcc/genenums.c index fd055acc97c..92f012e3907 100644 --- a/gcc/genenums.c +++ b/gcc/genenums.c @@ -1,5 +1,5 @@ /* Generate from machine description the strings for each enum. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genextract.c b/gcc/genextract.c index 35fc91e8806..89d70965156 100644 --- a/gcc/genextract.c +++ b/gcc/genextract.c @@ -1,5 +1,5 @@ /* Generate code from machine description to extract operands from insn as rtl. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genflags.c b/gcc/genflags.c index 80d8315e41b..94608537c4e 100644 --- a/gcc/genflags.c +++ b/gcc/genflags.c @@ -1,7 +1,7 @@ /* Generate from machine description: - some flags HAVE_... saying which simple standard instructions are available for this machine. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gengenrtl.c b/gcc/gengenrtl.c index 4a35683c896..f1f9f16884b 100644 --- a/gcc/gengenrtl.c +++ b/gcc/gengenrtl.c @@ -1,5 +1,5 @@ /* Generate code to allocate RTL structures. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gengtype-lex.l b/gcc/gengtype-lex.l index f46cd17586c..09fbc9b85ea 100644 --- a/gcc/gengtype-lex.l +++ b/gcc/gengtype-lex.l @@ -1,6 +1,6 @@ /* -*- indented-text -*- */ /* Process source files and output type information. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gengtype-parse.c b/gcc/gengtype-parse.c index 8328e3adf6e..bb7bcf72528 100644 --- a/gcc/gengtype-parse.c +++ b/gcc/gengtype-parse.c @@ -1,5 +1,5 @@ /* Process source files and output type information. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gengtype-state.c b/gcc/gengtype-state.c index ef7713ff06a..0b925b539bc 100644 --- a/gcc/gengtype-state.c +++ b/gcc/gengtype-state.c @@ -1,7 +1,7 @@ /* Gengtype persistent state serialization & de-serialization. Useful for gengtype in plugin mode. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gengtype.c b/gcc/gengtype.c index ca7ce4d968e..031004a7b1f 100644 --- a/gcc/gengtype.c +++ b/gcc/gengtype.c @@ -1,5 +1,5 @@ /* Process source files and output type information. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. @@ -1665,7 +1665,7 @@ static outf_p create_file (const char *name, const char *oname) { static const char *const hdr[] = { - " Copyright (C) 2004-2013 Free Software Foundation, Inc.\n", + " Copyright (C) 2004-2014 Free Software Foundation, Inc.\n", "\n", "This file is part of GCC.\n", "\n", diff --git a/gcc/gengtype.h b/gcc/gengtype.h index 0c3ec964a2f..345a545d294 100644 --- a/gcc/gengtype.h +++ b/gcc/gengtype.h @@ -1,5 +1,5 @@ /* Process source files and output type information. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genhooks.c b/gcc/genhooks.c index 28bb226c232..4827ef9ec5e 100644 --- a/gcc/genhooks.c +++ b/gcc/genhooks.c @@ -1,6 +1,6 @@ /* Process target.def to create initialization macros definition in target-hooks-def.h and documentation in target-hooks.texi. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genmddeps.c b/gcc/genmddeps.c index ec9b1e09f48..f64569c2493 100644 --- a/gcc/genmddeps.c +++ b/gcc/genmddeps.c @@ -1,5 +1,5 @@ /* genmddeps.c - creates a makefile dependency fragment for the md file. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/genmddump.c b/gcc/genmddump.c index cdb4588e75a..df417513800 100644 --- a/gcc/genmddump.c +++ b/gcc/genmddump.c @@ -1,5 +1,5 @@ /* Generate code from machine description to recognize rtl as insns. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genmodes.c b/gcc/genmodes.c index d6dcd2d7d42..8cc3cdeeeb3 100644 --- a/gcc/genmodes.c +++ b/gcc/genmodes.c @@ -1,5 +1,5 @@ /* Generate the machine mode enumeration and associated tables. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genmultilib b/gcc/genmultilib index 3e6046b9627..9e5e49b69fd 100644 --- a/gcc/genmultilib +++ b/gcc/genmultilib @@ -1,6 +1,6 @@ #!/bin/sh # Generates multilib.h. -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/genopinit.c b/gcc/genopinit.c index 2e736ce687b..77932ad3545 100644 --- a/gcc/genopinit.c +++ b/gcc/genopinit.c @@ -1,5 +1,5 @@ /* Generate code to initialize optabs from machine description. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genoutput.c b/gcc/genoutput.c index de8979bc726..26fb1acfde7 100644 --- a/gcc/genoutput.c +++ b/gcc/genoutput.c @@ -1,5 +1,5 @@ /* Generate code from to output assembler insns as recognized from rtl. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genpeep.c b/gcc/genpeep.c index 8d9d25dd772..a8afadbc809 100644 --- a/gcc/genpeep.c +++ b/gcc/genpeep.c @@ -1,5 +1,5 @@ /* Generate code from machine description to perform peephole optimizations. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genpreds.c b/gcc/genpreds.c index c27ae88f1a0..eba3e1472c9 100644 --- a/gcc/genpreds.c +++ b/gcc/genpreds.c @@ -2,7 +2,7 @@ - prototype declarations for operand predicates (tm-preds.h) - function definitions of operand predicates, if defined new-style (insn-preds.c) - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/genrecog.c b/gcc/genrecog.c index 663ab601674..a7949e81587 100644 --- a/gcc/genrecog.c +++ b/gcc/genrecog.c @@ -1,5 +1,5 @@ /* Generate code from machine description to recognize rtl as insns. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gensupport.c b/gcc/gensupport.c index e6c5c23a161..33ea81363c6 100644 --- a/gcc/gensupport.c +++ b/gcc/gensupport.c @@ -1,5 +1,5 @@ /* Support routines for the various generation passes. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gensupport.h b/gcc/gensupport.h index ff79e3aa5ab..6d1fc2f229e 100644 --- a/gcc/gensupport.h +++ b/gcc/gensupport.h @@ -1,5 +1,5 @@ /* Declarations for rtx-reader support for gen* routines. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c index dcabd61433d..97c9b87fc16 100644 --- a/gcc/ggc-common.c +++ b/gcc/ggc-common.c @@ -1,5 +1,5 @@ /* Simple garbage collection for the GNU compiler. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ggc-internal.h b/gcc/ggc-internal.h index 3d1f3ddd1d2..a920ae35568 100644 --- a/gcc/ggc-internal.h +++ b/gcc/ggc-internal.h @@ -1,7 +1,7 @@ /* Garbage collection for the GNU compiler. Internal definitions for ggc-*.c and stringpool.c. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ggc-none.c b/gcc/ggc-none.c index 9a9a4e3b2e8..e6900195457 100644 --- a/gcc/ggc-none.c +++ b/gcc/ggc-none.c @@ -1,5 +1,5 @@ /* Null garbage collection for the GNU compiler. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c index f68129e4da6..ccc87eaa5be 100644 --- a/gcc/ggc-page.c +++ b/gcc/ggc-page.c @@ -1,5 +1,5 @@ /* "Bag-of-pages" garbage collector for the GNU compiler. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ggc.h b/gcc/ggc.h index f9033445270..49f0c37950d 100644 --- a/gcc/ggc.h +++ b/gcc/ggc.h @@ -1,6 +1,6 @@ /* Garbage collection for the GNU compiler. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimple-builder.c b/gcc/gimple-builder.c index a670c7ec505..ba4be26120a 100644 --- a/gcc/gimple-builder.c +++ b/gcc/gimple-builder.c @@ -1,5 +1,5 @@ /* Functions for high level gimple building routines. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimple-builder.h b/gcc/gimple-builder.h index 532c04e2189..a00d979ba12 100644 --- a/gcc/gimple-builder.h +++ b/gcc/gimple-builder.h @@ -1,5 +1,5 @@ /* Header file for high level statement building routines. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimple-expr.c b/gcc/gimple-expr.c index 45fe5c27d69..2c4da474eff 100644 --- a/gcc/gimple-expr.c +++ b/gcc/gimple-expr.c @@ -1,6 +1,6 @@ /* Gimple decl, type, and expression support functions. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez This file is part of GCC. diff --git a/gcc/gimple-expr.h b/gcc/gimple-expr.h index e74be2249df..ed8e338beca 100644 --- a/gcc/gimple-expr.h +++ b/gcc/gimple-expr.h @@ -1,5 +1,5 @@ /* Header file for gimple decl, type and expressions. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 1d9d824a5a7..dd45a4a1694 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -1,5 +1,5 @@ /* Statement simplification on GIMPLE. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Split out from tree-ssa-ccp.c. This file is part of GCC. diff --git a/gcc/gimple-fold.h b/gcc/gimple-fold.h index 7a631a9604d..a96be6329ce 100644 --- a/gcc/gimple-fold.h +++ b/gcc/gimple-fold.h @@ -1,6 +1,6 @@ /* Gimple folding definitions. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Richard Guenther This file is part of GCC. diff --git a/gcc/gimple-iterator.c b/gcc/gimple-iterator.c index 2460c616dac..1cfeb731ec5 100644 --- a/gcc/gimple-iterator.c +++ b/gcc/gimple-iterator.c @@ -1,5 +1,5 @@ /* Iterator routines for GIMPLE statements. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez This file is part of GCC. diff --git a/gcc/gimple-iterator.h b/gcc/gimple-iterator.h index 7c801e32b4e..c35dc816c3f 100644 --- a/gcc/gimple-iterator.h +++ b/gcc/gimple-iterator.h @@ -1,5 +1,5 @@ /* Header file for gimple iterators. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c index 19f2ef8c63f..8d2e71103a4 100644 --- a/gcc/gimple-low.c +++ b/gcc/gimple-low.c @@ -1,6 +1,6 @@ /* GIMPLE lowering pass. Converts High GIMPLE into Low GIMPLE. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimple-low.h b/gcc/gimple-low.h index 7e8ff6c74d8..a4efa50d93d 100644 --- a/gcc/gimple-low.h +++ b/gcc/gimple-low.h @@ -1,5 +1,5 @@ /* Header file for gimple lowering pass. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c index 42e3f5f7e7e..2d1e1c707e9 100644 --- a/gcc/gimple-pretty-print.c +++ b/gcc/gimple-pretty-print.c @@ -1,5 +1,5 @@ /* Pretty formatting of GIMPLE statements and expressions. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez and Diego Novillo diff --git a/gcc/gimple-pretty-print.h b/gcc/gimple-pretty-print.h index edb23e61c71..37db243ed77 100644 --- a/gcc/gimple-pretty-print.h +++ b/gcc/gimple-pretty-print.h @@ -1,6 +1,6 @@ /* Various declarations for pretty formatting of GIMPLE statements and expressions. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimple-ssa-isolate-paths.c b/gcc/gimple-ssa-isolate-paths.c index 36830eae99f..56fcfc84258 100644 --- a/gcc/gimple-ssa-isolate-paths.c +++ b/gcc/gimple-ssa-isolate-paths.c @@ -1,7 +1,7 @@ /* Detect paths through the CFG which can never be executed in a conforming program and isolate them. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c index f5148ea858b..9320b51cb5d 100644 --- a/gcc/gimple-ssa-strength-reduction.c +++ b/gcc/gimple-ssa-strength-reduction.c @@ -1,5 +1,5 @@ /* Straight-line strength reduction. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Bill Schmidt, IBM This file is part of GCC. diff --git a/gcc/gimple-ssa.h b/gcc/gimple-ssa.h index 8290af285fb..8bcbf6782a6 100644 --- a/gcc/gimple-ssa.h +++ b/gcc/gimple-ssa.h @@ -1,6 +1,6 @@ /* Header file for routines that straddle the border between GIMPLE and SSA in gimple. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimple-streamer-in.c b/gcc/gimple-streamer-in.c index bc85ae9a353..fad04cdd268 100644 --- a/gcc/gimple-streamer-in.c +++ b/gcc/gimple-streamer-in.c @@ -1,6 +1,6 @@ /* Routines for reading GIMPLE from a file stream. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/gimple-streamer-out.c b/gcc/gimple-streamer-out.c index 0520eb20f0a..85a79661631 100644 --- a/gcc/gimple-streamer-out.c +++ b/gcc/gimple-streamer-out.c @@ -1,6 +1,6 @@ /* Routines for emitting GIMPLE to a file stream. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/gimple-streamer.h b/gcc/gimple-streamer.h index 2884c9765be..4c4aa0ad391 100644 --- a/gcc/gimple-streamer.h +++ b/gcc/gimple-streamer.h @@ -1,6 +1,6 @@ /* Data structures and functions for streaming GIMPLE. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/gimple-walk.c b/gcc/gimple-walk.c index 1f8b2f4f0e7..b6f0495beec 100644 --- a/gcc/gimple-walk.c +++ b/gcc/gimple-walk.c @@ -1,6 +1,6 @@ /* Gimple walk support. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez This file is part of GCC. diff --git a/gcc/gimple-walk.h b/gcc/gimple-walk.h index 82982e48b1a..555eb181a08 100644 --- a/gcc/gimple-walk.h +++ b/gcc/gimple-walk.h @@ -1,5 +1,5 @@ /* Header file for gimple statement walk support. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimple.c b/gcc/gimple.c index 38e209fabc9..6075e6d5126 100644 --- a/gcc/gimple.c +++ b/gcc/gimple.c @@ -1,6 +1,6 @@ /* Gimple IR support functions. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez This file is part of GCC. diff --git a/gcc/gimple.def b/gcc/gimple.def index ff1ef4307ed..dfe4b77e16e 100644 --- a/gcc/gimple.def +++ b/gcc/gimple.def @@ -1,6 +1,6 @@ /* This file contains the definitions of the GIMPLE IR tuples used in GCC. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez This file is part of GCC. diff --git a/gcc/gimple.h b/gcc/gimple.h index a49016fcc6c..df92863699b 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -1,6 +1,6 @@ /* Gimple IR definitions. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez This file is part of GCC. diff --git a/gcc/gimplify-me.c b/gcc/gimplify-me.c index 9dce585ee61..bee6e3e3d8d 100644 --- a/gcc/gimplify-me.c +++ b/gcc/gimplify-me.c @@ -1,7 +1,7 @@ /* Tree lowering to gimple for middle end use only. This converts the GENERIC functions-as-trees tree representation into the GIMPLE form. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Major work done by Sebastian Pop , Diego Novillo and Jason Merrill . diff --git a/gcc/gimplify-me.h b/gcc/gimplify-me.h index a995af1d30e..841831d2588 100644 --- a/gcc/gimplify-me.h +++ b/gcc/gimplify-me.h @@ -1,5 +1,5 @@ /* Header file for middle end gimplification. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 1ca4ad1bb33..a6e0c75478b 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1,6 +1,6 @@ /* Tree lowering pass. This pass converts the GENERIC functions-as-trees tree representation into the GIMPLE form. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Major work done by Sebastian Pop , Diego Novillo and Jason Merrill . diff --git a/gcc/gimplify.h b/gcc/gimplify.h index 91000d1e6b7..6bc0057c30e 100644 --- a/gcc/gimplify.h +++ b/gcc/gimplify.h @@ -1,5 +1,5 @@ /* Header file for gimplification. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ginclude/float.h b/gcc/ginclude/float.h index dd461d7c871..a8e05bfcdf7 100644 --- a/gcc/ginclude/float.h +++ b/gcc/ginclude/float.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2013 Free Software Foundation, Inc. +/* Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ginclude/iso646.h b/gcc/ginclude/iso646.h index 36dec91f619..89bc8f4f311 100644 --- a/gcc/ginclude/iso646.h +++ b/gcc/ginclude/iso646.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997-2013 Free Software Foundation, Inc. +/* Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ginclude/stdalign.h b/gcc/ginclude/stdalign.h index fe545dd61b0..ee2d81fd817 100644 --- a/gcc/ginclude/stdalign.h +++ b/gcc/ginclude/stdalign.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2013 Free Software Foundation, Inc. +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ginclude/stdarg.h b/gcc/ginclude/stdarg.h index fb4e0d60939..1d4418b019c 100644 --- a/gcc/ginclude/stdarg.h +++ b/gcc/ginclude/stdarg.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1989-2013 Free Software Foundation, Inc. +/* Copyright (C) 1989-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ginclude/stdatomic.h b/gcc/ginclude/stdatomic.h index b558bf10f19..108259b4eab 100644 --- a/gcc/ginclude/stdatomic.h +++ b/gcc/ginclude/stdatomic.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2013 Free Software Foundation, Inc. +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ginclude/stdbool.h b/gcc/ginclude/stdbool.h index 7146e63a92b..f4e802fe4d6 100644 --- a/gcc/ginclude/stdbool.h +++ b/gcc/ginclude/stdbool.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2013 Free Software Foundation, Inc. +/* Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h index b04dd659abd..cfa8df3097c 100644 --- a/gcc/ginclude/stddef.h +++ b/gcc/ginclude/stddef.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1989-2013 Free Software Foundation, Inc. +/* Copyright (C) 1989-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ginclude/stdfix.h b/gcc/ginclude/stdfix.h index fdcef1ee7b2..93e759ab210 100644 --- a/gcc/ginclude/stdfix.h +++ b/gcc/ginclude/stdfix.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2013 Free Software Foundation, Inc. +/* Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ginclude/stdint-gcc.h b/gcc/ginclude/stdint-gcc.h index 97339e2f892..1470cead5e1 100644 --- a/gcc/ginclude/stdint-gcc.h +++ b/gcc/ginclude/stdint-gcc.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2013 Free Software Foundation, Inc. +/* Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ginclude/stdnoreturn.h b/gcc/ginclude/stdnoreturn.h index ce4bec99517..0134137646a 100644 --- a/gcc/ginclude/stdnoreturn.h +++ b/gcc/ginclude/stdnoreturn.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2013 Free Software Foundation, Inc. +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ginclude/tgmath.h b/gcc/ginclude/tgmath.h index b49ed6ebdbf..9c5e12a3b27 100644 --- a/gcc/ginclude/tgmath.h +++ b/gcc/ginclude/tgmath.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2013 Free Software Foundation, Inc. +/* Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Apple, Inc. This file is part of GCC. diff --git a/gcc/ginclude/unwind-arm-common.h b/gcc/ginclude/unwind-arm-common.h index 9db8af4565e..65b50bce728 100644 --- a/gcc/ginclude/unwind-arm-common.h +++ b/gcc/ginclude/unwind-arm-common.h @@ -1,5 +1,5 @@ /* Header file for the ARM EABI and C6X unwinders - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Paul Brook This file is free software; you can redistribute it and/or modify it diff --git a/gcc/glimits.h b/gcc/glimits.h index 372c2c40bf3..a817f40877e 100644 --- a/gcc/glimits.h +++ b/gcc/glimits.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2013 Free Software Foundation, Inc. +/* Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index d1e2f4b5d70..5ac09319d5c 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2014-01-02 Tobias Burnus * gccgo.texi: Bump @copying's copyright year. diff --git a/gcc/go/Make-lang.in b/gcc/go/Make-lang.in index dbb71f601a3..abcae66a21f 100644 --- a/gcc/go/Make-lang.in +++ b/gcc/go/Make-lang.in @@ -1,6 +1,6 @@ # Make-lang.in -- Top level -*- makefile -*- fragment for gcc Go frontend. -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This file is part of GCC. diff --git a/gcc/go/config-lang.in b/gcc/go/config-lang.in index fe9bb758f7c..c33e218b45e 100644 --- a/gcc/go/config-lang.in +++ b/gcc/go/config-lang.in @@ -1,6 +1,6 @@ # config-lang.in -- Top level configure fragment for gcc Go frontend. -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This file is part of GCC. diff --git a/gcc/go/go-backend.c b/gcc/go/go-backend.c index 31d01221fd1..de33601db52 100644 --- a/gcc/go/go-backend.c +++ b/gcc/go/go-backend.c @@ -1,5 +1,5 @@ /* go-backend.c -- Go frontend interface to gcc backend. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/go/go-c.h b/gcc/go/go-c.h index 5871d9003e1..cf0fbfb0a3f 100644 --- a/gcc/go/go-c.h +++ b/gcc/go/go-c.h @@ -1,5 +1,5 @@ /* go-c.h -- Header file for go frontend gcc C interface. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc index db8fd5e3355..ce6e2e1b172 100644 --- a/gcc/go/go-gcc.cc +++ b/gcc/go/go-gcc.cc @@ -1,5 +1,5 @@ // go-gcc.cc -- Go frontend to gcc IR. -// Copyright (C) 2011-2013 Free Software Foundation, Inc. +// Copyright (C) 2011-2014 Free Software Foundation, Inc. // Contributed by Ian Lance Taylor, Google. // This file is part of GCC. diff --git a/gcc/go/go-lang.c b/gcc/go/go-lang.c index ae133f7ed2e..c0f2f1f3884 100644 --- a/gcc/go/go-lang.c +++ b/gcc/go/go-lang.c @@ -1,5 +1,5 @@ /* go-lang.c -- Go frontend gcc interface. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/go/go-system.h b/gcc/go/go-system.h index cc924f1b1d6..5a3e81b216d 100644 --- a/gcc/go/go-system.h +++ b/gcc/go/go-system.h @@ -1,5 +1,5 @@ // go-system.h -- Go frontend inclusion of gcc header files -*- C++ -*- -// Copyright (C) 2009-2013 Free Software Foundation, Inc. +// Copyright (C) 2009-2014 Free Software Foundation, Inc. // This file is part of GCC. diff --git a/gcc/go/gospec.c b/gcc/go/gospec.c index 0be7716be5c..02d5842352f 100644 --- a/gcc/go/gospec.c +++ b/gcc/go/gospec.c @@ -1,5 +1,5 @@ /* gospec.c -- Specific flags and argument handling of the gcc Go front end. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/go/lang-specs.h b/gcc/go/lang-specs.h index ce1eb976194..463e05007ae 100644 --- a/gcc/go/lang-specs.h +++ b/gcc/go/lang-specs.h @@ -1,5 +1,5 @@ /* lang-specs.h -- gcc driver specs for Go frontend. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/go/lang.opt b/gcc/go/lang.opt index f7bd0b96aaf..6f6b4418ac8 100644 --- a/gcc/go/lang.opt +++ b/gcc/go/lang.opt @@ -1,6 +1,6 @@ ; lang.opt -- Options for the gcc Go front end. -; Copyright (C) 2009-2013 Free Software Foundation, Inc. +; Copyright (C) 2009-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/godump.c b/gcc/godump.c index 3efbc7c988b..04aaff00ffa 100644 --- a/gcc/godump.c +++ b/gcc/godump.c @@ -1,5 +1,5 @@ /* Output Go language descriptions of types. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Written by Ian Lance Taylor . This file is part of GCC. diff --git a/gcc/graph.c b/gcc/graph.c index 545de44a6a9..f95a525e9a9 100644 --- a/gcc/graph.c +++ b/gcc/graph.c @@ -1,5 +1,5 @@ /* Output routines for graphical representation. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. Contributed by Ulrich Drepper , 1998. Rewritten for DOT output by Steven Bosscher, 2012. diff --git a/gcc/graph.h b/gcc/graph.h index cb2fbb76533..bd347163bb5 100644 --- a/gcc/graph.h +++ b/gcc/graph.h @@ -1,5 +1,5 @@ /* Header file for graph routines. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/graphds.c b/gcc/graphds.c index d009c1375c2..e19f564f7ca 100644 --- a/gcc/graphds.c +++ b/gcc/graphds.c @@ -1,5 +1,5 @@ /* Graph representation and manipulation functions. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/graphds.h b/gcc/graphds.h index d9de5ae38e1..03f969afca5 100644 --- a/gcc/graphds.h +++ b/gcc/graphds.h @@ -1,5 +1,5 @@ /* Graph representation. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/graphite-blocking.c b/gcc/graphite-blocking.c index 38e610d6d86..20a24eb2cf3 100644 --- a/gcc/graphite-blocking.c +++ b/gcc/graphite-blocking.c @@ -1,7 +1,7 @@ /* Heuristics and transform for loop blocking and strip mining on polyhedral representation. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop and Pranav Garg . diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c index 2b9e743e730..0edeb29f15d 100644 --- a/gcc/graphite-clast-to-gimple.c +++ b/gcc/graphite-clast-to-gimple.c @@ -1,5 +1,5 @@ /* Translation of CLAST (CLooG AST) to Gimple. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop . This file is part of GCC. diff --git a/gcc/graphite-clast-to-gimple.h b/gcc/graphite-clast-to-gimple.h index e3db1e89132..fc5a679a948 100644 --- a/gcc/graphite-clast-to-gimple.h +++ b/gcc/graphite-clast-to-gimple.h @@ -1,5 +1,5 @@ /* Translation of CLAST (CLooG AST) to Gimple. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop . This file is part of GCC. diff --git a/gcc/graphite-dependences.c b/gcc/graphite-dependences.c index f16cb938b3d..b0f868077ae 100644 --- a/gcc/graphite-dependences.c +++ b/gcc/graphite-dependences.c @@ -1,5 +1,5 @@ /* Data dependence analysis for Graphite. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop and Konrad Trifunovic . diff --git a/gcc/graphite-htab.h b/gcc/graphite-htab.h index 022b7698791..d67dd0cb363 100644 --- a/gcc/graphite-htab.h +++ b/gcc/graphite-htab.h @@ -1,5 +1,5 @@ /* Translation of CLAST (CLooG AST) to Gimple. - Copyright (C) 2012 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop . This file is part of GCC. diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c index 8ec021bf52b..55e3fab897d 100644 --- a/gcc/graphite-interchange.c +++ b/gcc/graphite-interchange.c @@ -1,7 +1,7 @@ /* Interchange heuristics and transform for loop interchange on polyhedral representation. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop and Harsha Jagasia . diff --git a/gcc/graphite-optimize-isl.c b/gcc/graphite-optimize-isl.c index 19f8bd1b48a..88d6d6cc28f 100644 --- a/gcc/graphite-optimize-isl.c +++ b/gcc/graphite-optimize-isl.c @@ -1,5 +1,5 @@ /* A scheduling optimizer for Graphite - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Tobias Grosser . This file is part of GCC. diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c index 6b3cd67042f..4ca62f9afbd 100644 --- a/gcc/graphite-poly.c +++ b/gcc/graphite-poly.c @@ -1,5 +1,5 @@ /* Graphite polyhedral representation. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop and Tobias Grosser . diff --git a/gcc/graphite-poly.h b/gcc/graphite-poly.h index 9720f3f60f5..06d320eea49 100644 --- a/gcc/graphite-poly.h +++ b/gcc/graphite-poly.h @@ -1,5 +1,5 @@ /* Graphite polyhedral representation. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop and Tobias Grosser . diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index 0722ab8bbbf..1d7c7485f85 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -1,5 +1,5 @@ /* Detection of Static Control Parts (SCoP) for Graphite. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop and Tobias Grosser . diff --git a/gcc/graphite-scop-detection.h b/gcc/graphite-scop-detection.h index 11933132780..8ec7fdc0be7 100644 --- a/gcc/graphite-scop-detection.h +++ b/gcc/graphite-scop-detection.h @@ -1,5 +1,5 @@ /* Detection of Static Control Parts (SCoP) for Graphite. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop and Tobias Grosser . diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 1f54eb9816f..d4a1bb2df9a 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -1,5 +1,5 @@ /* Conversion of SESE regions to Polyhedra. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop . This file is part of GCC. diff --git a/gcc/graphite-sese-to-poly.h b/gcc/graphite-sese-to-poly.h index 008e86b9bd8..e0aef744b07 100644 --- a/gcc/graphite-sese-to-poly.h +++ b/gcc/graphite-sese-to-poly.h @@ -1,5 +1,5 @@ /* Conversion of SESE regions to Polyhedra. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop . This file is part of GCC. diff --git a/gcc/graphite.c b/gcc/graphite.c index 8af040257db..311b7e36152 100644 --- a/gcc/graphite.c +++ b/gcc/graphite.c @@ -1,5 +1,5 @@ /* Gimple Represented as Polyhedra. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop . This file is part of GCC. diff --git a/gcc/gsstruct.def b/gcc/gsstruct.def index 82f1f52a6f5..c061dcea60b 100644 --- a/gcc/gsstruct.def +++ b/gcc/gsstruct.def @@ -1,7 +1,7 @@ /* This file contains the definitions for the gimple IR structure enumeration used in GCC. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Aldy Hernandez This file is part of GCC. diff --git a/gcc/gstab.h b/gcc/gstab.h index 6150670c3de..3bab536c722 100644 --- a/gcc/gstab.h +++ b/gcc/gstab.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997-2013 Free Software Foundation, Inc. +/* Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/gsyms.h b/gcc/gsyms.h index 48a1d77e0b8..3547692e166 100644 --- a/gcc/gsyms.h +++ b/gcc/gsyms.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2013 Free Software Foundation, Inc. +/* Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 4f3b05477ce..4d51984f023 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -1,5 +1,5 @@ /* Instruction scheduling pass. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, and currently maintained by, Jim Wilson (wilson@cygnus.com) diff --git a/gcc/hard-reg-set.h b/gcc/hard-reg-set.h index ad987f9b354..b8ab3df7a15 100644 --- a/gcc/hard-reg-set.h +++ b/gcc/hard-reg-set.h @@ -1,5 +1,5 @@ /* Sets (bit vectors) of hard registers, and operations on them. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC diff --git a/gcc/hash-table.c b/gcc/hash-table.c index 1cf7b234862..749a1182f49 100644 --- a/gcc/hash-table.c +++ b/gcc/hash-table.c @@ -1,5 +1,5 @@ /* A type-safe hash table template. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Lawrence Crowl This file is part of GCC. diff --git a/gcc/hash-table.h b/gcc/hash-table.h index 5f80efb6bf4..2b04067f74a 100644 --- a/gcc/hash-table.h +++ b/gcc/hash-table.h @@ -1,5 +1,5 @@ /* A type-safe hash table template. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Lawrence Crowl This file is part of GCC. diff --git a/gcc/highlev-plugin-common.h b/gcc/highlev-plugin-common.h index 8c31e7e4657..609955c87e0 100644 --- a/gcc/highlev-plugin-common.h +++ b/gcc/highlev-plugin-common.h @@ -1,7 +1,7 @@ /* Interface for high-level plugins in GCC - Parts common between GCC, ICI and high-level plugins. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by INRIA. diff --git a/gcc/hooks.c b/gcc/hooks.c index ce59503cc07..1c67bdfec12 100644 --- a/gcc/hooks.c +++ b/gcc/hooks.c @@ -1,5 +1,5 @@ /* General-purpose hooks. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/hooks.h b/gcc/hooks.h index 43191c0ac72..896b41d8c56 100644 --- a/gcc/hooks.h +++ b/gcc/hooks.h @@ -1,5 +1,5 @@ /* General-purpose hooks. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/host-default.c b/gcc/host-default.c index 822ba913f6c..b2864ce0119 100644 --- a/gcc/host-default.c +++ b/gcc/host-default.c @@ -1,5 +1,5 @@ /* Default host-specific hook definitions. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/hosthooks-def.h b/gcc/hosthooks-def.h index 1c8c67afa20..07b0290b534 100644 --- a/gcc/hosthooks-def.h +++ b/gcc/hosthooks-def.h @@ -1,5 +1,5 @@ /* Default macros to initialize the lang_hooks data structure. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/hosthooks.h b/gcc/hosthooks.h index 61a172aa867..5dc3a8548e2 100644 --- a/gcc/hosthooks.h +++ b/gcc/hosthooks.h @@ -1,5 +1,5 @@ /* The host_hooks data structure. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/hw-doloop.c b/gcc/hw-doloop.c index 4e67760cb8b..ab4899db632 100644 --- a/gcc/hw-doloop.c +++ b/gcc/hw-doloop.c @@ -1,6 +1,6 @@ /* Code to analyze doloop loops in order for targets to perform late optimizations converting doloops to other forms of hardware loops. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/hw-doloop.h b/gcc/hw-doloop.h index d239cb6ef0a..9fc3c15e3a1 100644 --- a/gcc/hw-doloop.h +++ b/gcc/hw-doloop.h @@ -1,6 +1,6 @@ /* Code to analyze doloop loops in order for targets to perform late optimizations converting doloops to other forms of hardware loops. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/hwint.c b/gcc/hwint.c index f47be4ac5f5..9d0569b7583 100644 --- a/gcc/hwint.c +++ b/gcc/hwint.c @@ -1,5 +1,5 @@ /* Operations on HOST_WIDE_INT. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/hwint.h b/gcc/hwint.h index 77ae64224f7..229fb94b565 100644 --- a/gcc/hwint.h +++ b/gcc/hwint.h @@ -1,5 +1,5 @@ /* HOST_WIDE_INT definitions for the GNU compiler. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index db5b8a23eb8..39845354731 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -1,5 +1,5 @@ /* If-conversion support. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/incpath.c b/gcc/incpath.c index 54b636034f3..f495c0a7fc0 100644 --- a/gcc/incpath.c +++ b/gcc/incpath.c @@ -1,5 +1,5 @@ /* Set up combined include path chain for the preprocessor. - Copyright (C) 1986-2013 Free Software Foundation, Inc. + Copyright (C) 1986-2014 Free Software Foundation, Inc. Broken out of cppinit.c and cppfiles.c and rewritten Mar 2003. diff --git a/gcc/incpath.h b/gcc/incpath.h index bac0d7fde90..e86130fbc56 100644 --- a/gcc/incpath.h +++ b/gcc/incpath.h @@ -1,5 +1,5 @@ /* Set up combined include path for the preprocessor. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/init-regs.c b/gcc/init-regs.c index d26ee9bd71e..fcc6e2ca798 100644 --- a/gcc/init-regs.c +++ b/gcc/init-regs.c @@ -1,5 +1,5 @@ /* Initialization of uninitialized regs. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/input.c b/gcc/input.c index a141a92cac3..1e01bd350b2 100644 --- a/gcc/input.c +++ b/gcc/input.c @@ -1,5 +1,5 @@ /* Data and functions related to line maps and input files. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/input.h b/gcc/input.h index 55bd4260b0a..aee1f3259cd 100644 --- a/gcc/input.h +++ b/gcc/input.h @@ -1,6 +1,6 @@ /* Declarations for variables relating to reading the source file. Used by parsers, lexical analyzers, and error message routines. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/insn-addr.h b/gcc/insn-addr.h index 24ed0f4fa2d..aec09fd102c 100644 --- a/gcc/insn-addr.h +++ b/gcc/insn-addr.h @@ -1,5 +1,5 @@ /* Macros to support INSN_ADDRESSES - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/insn-notes.def b/gcc/insn-notes.def index 1a9883cefe0..33ebc09014b 100644 --- a/gcc/insn-notes.def +++ b/gcc/insn-notes.def @@ -1,5 +1,5 @@ /* Insn note definitions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/internal-fn.c b/gcc/internal-fn.c index 30d8c535731..87a42e7e32c 100644 --- a/gcc/internal-fn.c +++ b/gcc/internal-fn.c @@ -1,5 +1,5 @@ /* Internal functions. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/internal-fn.def b/gcc/internal-fn.def index fdb1812e430..ca93a0354a2 100644 --- a/gcc/internal-fn.def +++ b/gcc/internal-fn.def @@ -1,5 +1,5 @@ /* Internal functions. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/internal-fn.h b/gcc/internal-fn.h index 138a34793de..9c3215f3d5e 100644 --- a/gcc/internal-fn.h +++ b/gcc/internal-fn.h @@ -1,5 +1,5 @@ /* Internal functions. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/intl.c b/gcc/intl.c index aa443509a6f..2509c1aabab 100644 --- a/gcc/intl.c +++ b/gcc/intl.c @@ -1,5 +1,5 @@ /* Message translation utilities. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/intl.h b/gcc/intl.h index d34973e88fc..91e74408ce9 100644 --- a/gcc/intl.h +++ b/gcc/intl.h @@ -1,5 +1,5 @@ /* intl.h - internationalization - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index b484d053f16..63c50370a0a 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -1,5 +1,5 @@ /* Interprocedural constant propagation - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Razya Ladelsky and Martin Jambor diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index a3f2ad674e1..24b8ebc0353 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -1,6 +1,6 @@ /* Basic IPA utilities for type inheritance graph construction and devirtualization. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c index 21e52a193ff..ea2d0aab83f 100644 --- a/gcc/ipa-inline-analysis.c +++ b/gcc/ipa-inline-analysis.c @@ -1,5 +1,5 @@ /* Inlining decision heuristics. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/ipa-inline-transform.c b/gcc/ipa-inline-transform.c index 71d7800cea1..a24f68db38e 100644 --- a/gcc/ipa-inline-transform.c +++ b/gcc/ipa-inline-transform.c @@ -1,5 +1,5 @@ /* Callgraph transformations to handle inlining - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index f6a26a882e6..12ee84c5465 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -1,5 +1,5 @@ /* Inlining decision heuristics. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/ipa-inline.h b/gcc/ipa-inline.h index 14ee4bf7335..618189b9b5f 100644 --- a/gcc/ipa-inline.h +++ b/gcc/ipa-inline.h @@ -1,5 +1,5 @@ /* Inlining decision heuristics. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c index a84b62dca72..17de6876e6c 100644 --- a/gcc/ipa-profile.c +++ b/gcc/ipa-profile.c @@ -1,5 +1,5 @@ /* Basic IPA optimizations based on profile. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index 5a337f7ce3e..08be9199d99 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -1,5 +1,5 @@ /* Interprocedural analyses. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h index 9a987d78a04..299627b1394 100644 --- a/gcc/ipa-prop.h +++ b/gcc/ipa-prop.h @@ -1,5 +1,5 @@ /* Interprocedural analyses. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index fd10fe357f0..296f9c07bb1 100644 --- a/gcc/ipa-pure-const.c +++ b/gcc/ipa-pure-const.c @@ -1,5 +1,5 @@ /* Callgraph based analysis of static variables. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck This file is part of GCC. diff --git a/gcc/ipa-ref-inline.h b/gcc/ipa-ref-inline.h index 83901518e53..e12fce6e4bc 100644 --- a/gcc/ipa-ref-inline.h +++ b/gcc/ipa-ref-inline.h @@ -1,5 +1,5 @@ /* IPA reference lists. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/ipa-ref.c b/gcc/ipa-ref.c index c0a11a7a562..b8c3d5116d5 100644 --- a/gcc/ipa-ref.c +++ b/gcc/ipa-ref.c @@ -1,5 +1,5 @@ /* Interprocedural reference lists. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/ipa-ref.h b/gcc/ipa-ref.h index 3daede2d6b8..4ce5f8d2f5a 100644 --- a/gcc/ipa-ref.h +++ b/gcc/ipa-ref.h @@ -1,5 +1,5 @@ /* IPA reference lists. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c index 9f3626a14c3..dbe32e4371a 100644 --- a/gcc/ipa-reference.c +++ b/gcc/ipa-reference.c @@ -1,5 +1,5 @@ /* Callgraph based analysis of static variables. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck This file is part of GCC. diff --git a/gcc/ipa-reference.h b/gcc/ipa-reference.h index 317ebb02de2..c840024e4b4 100644 --- a/gcc/ipa-reference.h +++ b/gcc/ipa-reference.h @@ -1,5 +1,5 @@ /* IPA handling of references. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck This file is part of GCC. diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c index 40c8fd6f99b..38bd88365d8 100644 --- a/gcc/ipa-split.c +++ b/gcc/ipa-split.c @@ -1,5 +1,5 @@ /* Function splitting pass - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/ipa-utils.c b/gcc/ipa-utils.c index 66416268f57..328f8e5cc08 100644 --- a/gcc/ipa-utils.c +++ b/gcc/ipa-utils.c @@ -1,5 +1,5 @@ /* Utilities for ipa analysis. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck This file is part of GCC. diff --git a/gcc/ipa-utils.h b/gcc/ipa-utils.h index 480b7529bed..8e32fb22d5f 100644 --- a/gcc/ipa-utils.h +++ b/gcc/ipa-utils.h @@ -1,5 +1,5 @@ /* Utilities for ipa analysis. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck This file is part of GCC. diff --git a/gcc/ipa.c b/gcc/ipa.c index 3c19288f26c..a7e4d764786 100644 --- a/gcc/ipa.c +++ b/gcc/ipa.c @@ -1,5 +1,5 @@ /* Basic IPA optimizations and utilities. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ira-build.c b/gcc/ira-build.c index 660fb0d6eb0..0396f379f00 100644 --- a/gcc/ira-build.c +++ b/gcc/ira-build.c @@ -1,5 +1,5 @@ /* Building internal representation for IRA. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/ira-color.c b/gcc/ira-color.c index 30282aad974..c20aaf72dc6 100644 --- a/gcc/ira-color.c +++ b/gcc/ira-color.c @@ -1,5 +1,5 @@ /* IRA allocation based on graph coloring. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/ira-conflicts.c b/gcc/ira-conflicts.c index ba0e4e5fad3..c0b4f049950 100644 --- a/gcc/ira-conflicts.c +++ b/gcc/ira-conflicts.c @@ -1,5 +1,5 @@ /* IRA conflict builder. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c index 1d9e1a4e337..b348bbe46fd 100644 --- a/gcc/ira-costs.c +++ b/gcc/ira-costs.c @@ -1,5 +1,5 @@ /* IRA hard register and memory cost calculation for allocnos or pseudos. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/ira-emit.c b/gcc/ira-emit.c index 196efa02545..71dc6bcf9af 100644 --- a/gcc/ira-emit.c +++ b/gcc/ira-emit.c @@ -1,5 +1,5 @@ /* Integrated Register Allocator. Changing code and generating moves. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/ira-int.h b/gcc/ira-int.h index 690763c9810..e36bb9217d9 100644 --- a/gcc/ira-int.h +++ b/gcc/ira-int.h @@ -1,5 +1,5 @@ /* Integrated Register Allocator (IRA) intercommunication header file. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c index 59f2b21468b..906d6db58f6 100644 --- a/gcc/ira-lives.c +++ b/gcc/ira-lives.c @@ -1,5 +1,5 @@ /* IRA processing allocno lives to build allocno live ranges. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/ira.c b/gcc/ira.c index 18e2634dda0..cebacf5814d 100644 --- a/gcc/ira.c +++ b/gcc/ira.c @@ -1,5 +1,5 @@ /* Integrated Register Allocator (IRA) entry point. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/ira.h b/gcc/ira.h index 49acc4a4557..2f7dfce5fa5 100644 --- a/gcc/ira.h +++ b/gcc/ira.h @@ -1,6 +1,6 @@ /* Communication between the Integrated Register Allocator (IRA) and the rest of the compiler. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/is-a.h b/gcc/is-a.h index c47d10f20f4..bc756b15e1c 100644 --- a/gcc/is-a.h +++ b/gcc/is-a.h @@ -1,5 +1,5 @@ /* Dynamic testing for abstract is-a relationships. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Lawrence Crowl. This file is part of GCC. diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index f0c32920e96..7bdc8ca2087 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2014-01-02 Tobias Burnus * jcf-dump.c (version): Update copyright notice dates. diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in index 5ed344cc0d2..d23a39f91d4 100644 --- a/gcc/java/Make-lang.in +++ b/gcc/java/Make-lang.in @@ -1,6 +1,6 @@ # Top level -*- makefile -*- fragment for the GNU compiler for the Java(TM) # language. -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/java/boehm.c b/gcc/java/boehm.c index 5910f0322dc..ddc424b138c 100644 --- a/gcc/java/boehm.c +++ b/gcc/java/boehm.c @@ -1,5 +1,5 @@ /* Functions related to the Boehm garbage collector. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/builtins.c b/gcc/java/builtins.c index 46d1d86820c..1ce9ce5c564 100644 --- a/gcc/java/builtins.c +++ b/gcc/java/builtins.c @@ -1,5 +1,5 @@ /* Built-in and inline functions for gcj - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/class.c b/gcc/java/class.c index e5d2e6d8e8c..bbe7c863177 100644 --- a/gcc/java/class.c +++ b/gcc/java/class.c @@ -1,5 +1,5 @@ /* Functions related to building classes and their related objects. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/config-lang.in b/gcc/java/config-lang.in index 71fc29051d9..2e77f0062fe 100644 --- a/gcc/java/config-lang.in +++ b/gcc/java/config-lang.in @@ -1,6 +1,6 @@ # Top level configure fragment for the GNU compiler for the Java(TM) # language. -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/java/constants.c b/gcc/java/constants.c index 64f6e696403..7e9cf2e7552 100644 --- a/gcc/java/constants.c +++ b/gcc/java/constants.c @@ -1,5 +1,5 @@ /* Handle the constant pool of the Java(TM) Virtual Machine. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/decl.c b/gcc/java/decl.c index 39b76a5cea0..53d6f89b2d5 100644 --- a/gcc/java/decl.c +++ b/gcc/java/decl.c @@ -1,6 +1,6 @@ /* Process declarations and variables for the GNU compiler for the Java(TM) language. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/except.c b/gcc/java/except.c index 9674abac22c..47c76e8e617 100644 --- a/gcc/java/except.c +++ b/gcc/java/except.c @@ -1,5 +1,5 @@ /* Handle exceptions for GNU compiler for the Java(TM) language. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/expr.c b/gcc/java/expr.c index c62d66dba02..69f6819c7a9 100644 --- a/gcc/java/expr.c +++ b/gcc/java/expr.c @@ -1,5 +1,5 @@ /* Process expressions for the GNU compiler for the Java(TM) language. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/java-except.h b/gcc/java/java-except.h index b2e97c4a114..cc97214588b 100644 --- a/gcc/java/java-except.h +++ b/gcc/java/java-except.h @@ -1,6 +1,6 @@ /* Definitions for exception handling for use by the GNU compiler for the Java(TM) language compiler. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/java-gimplify.c b/gcc/java/java-gimplify.c index cf1f97007ed..6c7a1b629e0 100644 --- a/gcc/java/java-gimplify.c +++ b/gcc/java/java-gimplify.c @@ -1,5 +1,5 @@ /* Java(TM) language-specific gimplification routines. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/java-tree.def b/gcc/java/java-tree.def index 992d78abc5e..d0f4ce24c83 100644 --- a/gcc/java/java-tree.def +++ b/gcc/java/java-tree.def @@ -1,6 +1,6 @@ /* This file contains the definitions and documentation for the extra tree codes used by gcj. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h index d96f0f61e1b..806d2d7a54d 100644 --- a/gcc/java/java-tree.h +++ b/gcc/java/java-tree.h @@ -1,6 +1,6 @@ /* Definitions for parsing and type checking for the GNU compiler for the Java(TM) language. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/javaop.def b/gcc/java/javaop.def index 22767dfac10..2cc14a9dfdb 100644 --- a/gcc/java/javaop.def +++ b/gcc/java/javaop.def @@ -1,6 +1,6 @@ /* Table of opcodes for byte codes defined by the Java(TM) virtual machine specification. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/javaop.h b/gcc/java/javaop.h index bffa857cc3e..fed05f1b32a 100644 --- a/gcc/java/javaop.h +++ b/gcc/java/javaop.h @@ -1,6 +1,6 @@ /* Utility macros to handle Java(TM) byte codes. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/jcf-depend.c b/gcc/java/jcf-depend.c index 4b820aad5f4..89411c37750 100644 --- a/gcc/java/jcf-depend.c +++ b/gcc/java/jcf-depend.c @@ -1,6 +1,6 @@ /* Functions for handling dependency tracking when reading .class files. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/jcf-io.c b/gcc/java/jcf-io.c index 921b0992600..7491882254d 100644 --- a/gcc/java/jcf-io.c +++ b/gcc/java/jcf-io.c @@ -1,5 +1,5 @@ /* Utility routines for finding and reading Java(TM) .class files. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c index b6f099a921d..afe35f0e69a 100644 --- a/gcc/java/jcf-parse.c +++ b/gcc/java/jcf-parse.c @@ -1,5 +1,5 @@ /* Parser for Java(TM) .class files. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/jcf-path.c b/gcc/java/jcf-path.c index e4899fcecca..026bcb85160 100644 --- a/gcc/java/jcf-path.c +++ b/gcc/java/jcf-path.c @@ -1,5 +1,5 @@ /* Handle CLASSPATH, -classpath, and path searching. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/jcf-reader.c b/gcc/java/jcf-reader.c index d9d96513df4..10def13ca96 100644 --- a/gcc/java/jcf-reader.c +++ b/gcc/java/jcf-reader.c @@ -1,7 +1,7 @@ /* This file read a Java(TM) .class file. It is not stand-alone: It depends on tons of macros, and the intent is you #include this file after you've defined the macros. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/jcf.h b/gcc/java/jcf.h index 509f03120a6..8aa077e4c87 100644 --- a/gcc/java/jcf.h +++ b/gcc/java/jcf.h @@ -1,5 +1,5 @@ /* Utility macros to read Java(TM) .class files and byte codes. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/jvgenmain.c b/gcc/java/jvgenmain.c index 6ade3f38f8a..5b14258af06 100644 --- a/gcc/java/jvgenmain.c +++ b/gcc/java/jvgenmain.c @@ -1,5 +1,5 @@ /* Program to generate "main" a Java(TM) class containing a main method. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/jvspec.c b/gcc/java/jvspec.c index b66d14f522c..f37126a3a53 100644 --- a/gcc/java/jvspec.c +++ b/gcc/java/jvspec.c @@ -1,6 +1,6 @@ /* Specific flags and argument handling of the front-end of the GNU compiler for the Java(TM) language. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/lang-specs.h b/gcc/java/lang-specs.h index 5176ea3dd38..ebfbcc6b255 100644 --- a/gcc/java/lang-specs.h +++ b/gcc/java/lang-specs.h @@ -1,5 +1,5 @@ /* Definitions for specs for the GNU compiler for the Java(TM) language. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/lang.c b/gcc/java/lang.c index 6d89134debe..8a68691ccdb 100644 --- a/gcc/java/lang.c +++ b/gcc/java/lang.c @@ -1,5 +1,5 @@ /* Java(TM) language-specific utility routines. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/lang.opt b/gcc/java/lang.opt index 5965929fe2e..2968530cdc7 100644 --- a/gcc/java/lang.opt +++ b/gcc/java/lang.opt @@ -1,5 +1,5 @@ ; Options for the Java front end. -; Copyright (C) 2003-2013 Free Software Foundation, Inc. +; Copyright (C) 2003-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/java/mangle.c b/gcc/java/mangle.c index c4e088303c1..e2aa85560a6 100644 --- a/gcc/java/mangle.c +++ b/gcc/java/mangle.c @@ -1,6 +1,6 @@ /* Functions related to mangling class names for the GNU compiler for the Java(TM) language. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/mangle_name.c b/gcc/java/mangle_name.c index c23119b4f60..f58f0cb63b4 100644 --- a/gcc/java/mangle_name.c +++ b/gcc/java/mangle_name.c @@ -1,6 +1,6 @@ /* Shared functions related to mangling names for the GNU compiler for the Java(TM) language. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/parse.h b/gcc/java/parse.h index 3bd93bf93c9..2bd03ea0c78 100644 --- a/gcc/java/parse.h +++ b/gcc/java/parse.h @@ -1,5 +1,5 @@ /* Language parser definitions for the GNU compiler for the Java(TM) language. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com) This file is part of GCC. diff --git a/gcc/java/resource.c b/gcc/java/resource.c index 17155b8c362..8e5702f6fe2 100644 --- a/gcc/java/resource.c +++ b/gcc/java/resource.c @@ -1,5 +1,5 @@ /* Functions related to building resource files. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/typeck.c b/gcc/java/typeck.c index 3a0aa3960a2..574029aac40 100644 --- a/gcc/java/typeck.c +++ b/gcc/java/typeck.c @@ -1,5 +1,5 @@ /* Handle types for the GNU compiler for the Java(TM) language. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/verify-glue.c b/gcc/java/verify-glue.c index 022f4c4e058..f0e1e4f97c0 100644 --- a/gcc/java/verify-glue.c +++ b/gcc/java/verify-glue.c @@ -1,5 +1,5 @@ /* Glue to interface gcj with bytecode verifier. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/verify-impl.c b/gcc/java/verify-impl.c index 88387845a2c..e234f29cb15 100644 --- a/gcc/java/verify-impl.c +++ b/gcc/java/verify-impl.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2001-2013 Free Software Foundation, Inc. +/* Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of libgcj. diff --git a/gcc/java/verify.h b/gcc/java/verify.h index 63e5754abcd..e4490808b33 100644 --- a/gcc/java/verify.h +++ b/gcc/java/verify.h @@ -1,5 +1,5 @@ /* Declarations to interface gcj with bytecode verifier. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/win32-host.c b/gcc/java/win32-host.c index 74366333aff..6ea7f51a3b6 100644 --- a/gcc/java/win32-host.c +++ b/gcc/java/win32-host.c @@ -1,5 +1,5 @@ /* Platform-Specific Win32 Functions - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/zextract.c b/gcc/java/zextract.c index 598db84288a..6b5b8890c61 100644 --- a/gcc/java/zextract.c +++ b/gcc/java/zextract.c @@ -1,7 +1,7 @@ /* Handle a .class file embedded in a .zip archive. This extracts a member from a .zip file, but does not handle uncompression (since that is not needed for classes.zip). - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/java/zipfile.h b/gcc/java/zipfile.h index e2b5024871c..ae963346934 100644 --- a/gcc/java/zipfile.h +++ b/gcc/java/zipfile.h @@ -1,5 +1,5 @@ /* Definitions for using a zipped' archive. - Copyright (C) 1996-2013 Free Software Foundation, Inc. + Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/jump.c b/gcc/jump.c index 5eefeefbf63..c73d948990c 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -1,5 +1,5 @@ /* Optimize jump instructions, for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h index b7be47200a8..95bd3793329 100644 --- a/gcc/langhooks-def.h +++ b/gcc/langhooks-def.h @@ -1,5 +1,5 @@ /* Default macros to initialize the lang_hooks data structure. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Alexandre Oliva This file is part of GCC. diff --git a/gcc/langhooks.c b/gcc/langhooks.c index 6766ee5c022..eca0299584f 100644 --- a/gcc/langhooks.c +++ b/gcc/langhooks.c @@ -1,5 +1,5 @@ /* Default language-specific hooks. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Alexandre Oliva This file is part of GCC. diff --git a/gcc/langhooks.h b/gcc/langhooks.h index 5a5c8b6c3a7..c848b0c5911 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -1,5 +1,5 @@ /* The lang_hooks data structure. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/lcm.c b/gcc/lcm.c index b5d56e05bf8..aab64a6cda7 100644 --- a/gcc/lcm.c +++ b/gcc/lcm.c @@ -1,5 +1,5 @@ /* Generic partial redundancy elimination with lazy code motion support. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/libfuncs.h b/gcc/libfuncs.h index 04a4dc23d7d..5cc32b3dd56 100644 --- a/gcc/libfuncs.h +++ b/gcc/libfuncs.h @@ -1,5 +1,5 @@ /* Definitions for code generation pass of GNU compiler. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/limitx.h b/gcc/limitx.h index d57c329b655..e0913ad6de0 100644 --- a/gcc/limitx.h +++ b/gcc/limitx.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2013 Free Software Foundation, Inc. +/* Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/lists.c b/gcc/lists.c index cb933b35ca1..ce545cb56f3 100644 --- a/gcc/lists.c +++ b/gcc/lists.c @@ -1,5 +1,5 @@ /* List management for the GCC expander. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/loop-doloop.c b/gcc/loop-doloop.c index 24e020169eb..3e9f3ce6edb 100644 --- a/gcc/loop-doloop.c +++ b/gcc/loop-doloop.c @@ -1,5 +1,5 @@ /* Perform doloop optimizations - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Based on code by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz) This file is part of GCC. diff --git a/gcc/loop-init.c b/gcc/loop-init.c index 8c5553b983f..2c2c269b83a 100644 --- a/gcc/loop-init.c +++ b/gcc/loop-init.c @@ -1,5 +1,5 @@ /* Loop optimizer initialization routines and RTL loop optimization passes. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c index f47bd505922..b31b9268ead 100644 --- a/gcc/loop-invariant.c +++ b/gcc/loop-invariant.c @@ -1,5 +1,5 @@ /* RTL-level loop invariant motion. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/loop-iv.c b/gcc/loop-iv.c index c01ee178305..d03cc406ee2 100644 --- a/gcc/loop-iv.c +++ b/gcc/loop-iv.c @@ -1,5 +1,5 @@ /* Rtl-level induction variable analysis. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c index 24ed83ff596..4561ce8cb71 100644 --- a/gcc/loop-unroll.c +++ b/gcc/loop-unroll.c @@ -1,5 +1,5 @@ /* Loop unrolling and peeling. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/loop-unswitch.c b/gcc/loop-unswitch.c index c8f1281a0ef..fff0fd16e52 100644 --- a/gcc/loop-unswitch.c +++ b/gcc/loop-unswitch.c @@ -1,5 +1,5 @@ /* Loop unswitching for GNU compiler. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c index 0b0e397c61a..a1331c00507 100644 --- a/gcc/lower-subreg.c +++ b/gcc/lower-subreg.c @@ -1,5 +1,5 @@ /* Decompose multiword subregs. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Richard Henderson Ian Lance Taylor diff --git a/gcc/lower-subreg.h b/gcc/lower-subreg.h index 16c48bf8cd8..8f106674d5e 100644 --- a/gcc/lower-subreg.h +++ b/gcc/lower-subreg.h @@ -1,5 +1,5 @@ /* Target-dependent costs for lower-subreg.c. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/lra-assigns.c b/gcc/lra-assigns.c index 41ee28648ae..596fc6be287 100644 --- a/gcc/lra-assigns.c +++ b/gcc/lra-assigns.c @@ -1,5 +1,5 @@ /* Assign reload pseudos. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/lra-coalesce.c b/gcc/lra-coalesce.c index db8409f02a9..431b3e21048 100644 --- a/gcc/lra-coalesce.c +++ b/gcc/lra-coalesce.c @@ -1,5 +1,5 @@ /* Coalesce spilled pseudos. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index 7d09204eb8d..14018849392 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -1,5 +1,5 @@ /* Code for RTL transformations to satisfy insn constraints. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/lra-eliminations.c b/gcc/lra-eliminations.c index 6c52bb34251..abdf6973310 100644 --- a/gcc/lra-eliminations.c +++ b/gcc/lra-eliminations.c @@ -1,5 +1,5 @@ /* Code for RTL register eliminations. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/lra-int.h b/gcc/lra-int.h index 22968e18da3..b2f5cf7d05e 100644 --- a/gcc/lra-int.h +++ b/gcc/lra-int.h @@ -1,5 +1,5 @@ /* Local Register Allocator (LRA) intercommunication header file. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/lra-lives.c b/gcc/lra-lives.c index a677f86dcf5..8444adee6d8 100644 --- a/gcc/lra-lives.c +++ b/gcc/lra-lives.c @@ -1,5 +1,5 @@ /* Build live ranges for pseudos. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/lra-spills.c b/gcc/lra-spills.c index 1e5f52bd009..50f63fc3a1b 100644 --- a/gcc/lra-spills.c +++ b/gcc/lra-spills.c @@ -1,5 +1,5 @@ /* Change pseudos by memory. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/lra.c b/gcc/lra.c index ed070c7f556..d052b363ce9 100644 --- a/gcc/lra.c +++ b/gcc/lra.c @@ -1,5 +1,5 @@ /* LRA (local register allocator) driver and LRA utilities. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/lra.h b/gcc/lra.h index 31388694586..5dd8a0b8e05 100644 --- a/gcc/lra.h +++ b/gcc/lra.h @@ -1,6 +1,6 @@ /* Communication between the Local Register Allocator (LRA) and the rest of the compiler. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Vladimir Makarov . This file is part of GCC. diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c index 7834ed04160..5c774b8ee81 100644 --- a/gcc/lto-cgraph.c +++ b/gcc/lto-cgraph.c @@ -1,7 +1,7 @@ /* Write and read the cgraph to the memory mapped representation of a .o file. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck This file is part of GCC. diff --git a/gcc/lto-compress.c b/gcc/lto-compress.c index 737323fb106..4d718d5c08e 100644 --- a/gcc/lto-compress.c +++ b/gcc/lto-compress.c @@ -1,6 +1,6 @@ /* LTO IL compression streams. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Simon Baldwin This file is part of GCC. diff --git a/gcc/lto-compress.h b/gcc/lto-compress.h index ad29bebe4ae..ac21e2482c0 100644 --- a/gcc/lto-compress.h +++ b/gcc/lto-compress.h @@ -1,6 +1,6 @@ /* LTO IL compression streams. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Simon Baldwin This file is part of GCC. diff --git a/gcc/lto-opts.c b/gcc/lto-opts.c index df5d8f165fd..3f6757287d4 100644 --- a/gcc/lto-opts.c +++ b/gcc/lto-opts.c @@ -1,6 +1,6 @@ /* LTO IL options. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Simon Baldwin This file is part of GCC. diff --git a/gcc/lto-section-in.c b/gcc/lto-section-in.c index 8d778bbb0df..47f9739c4d0 100644 --- a/gcc/lto-section-in.c +++ b/gcc/lto-section-in.c @@ -1,6 +1,6 @@ /* Input functions for reading LTO sections. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck This file is part of GCC. diff --git a/gcc/lto-section-out.c b/gcc/lto-section-out.c index 2cc705c3a2a..9d6926c57cf 100644 --- a/gcc/lto-section-out.c +++ b/gcc/lto-section-out.c @@ -1,6 +1,6 @@ /* Functions for writing LTO sections. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck This file is part of GCC. diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c index 9d4466be0c5..df32a6b846a 100644 --- a/gcc/lto-streamer-in.c +++ b/gcc/lto-streamer-in.c @@ -1,6 +1,6 @@ /* Read the GIMPLE representation from a file stream. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck Re-implemented by Diego Novillo diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index a88274e89dd..5d6aed51845 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -1,6 +1,6 @@ /* Write the GIMPLE representation to a file stream. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck Re-implemented by Diego Novillo diff --git a/gcc/lto-streamer.c b/gcc/lto-streamer.c index 20192b73497..e94b7873892 100644 --- a/gcc/lto-streamer.c +++ b/gcc/lto-streamer.c @@ -1,7 +1,7 @@ /* Miscellaneous utilities for GIMPLE streaming. Things that are used in both input and output are here. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Doug Kwan This file is part of GCC. diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h index 701748ce4d4..215d4084e29 100644 --- a/gcc/lto-streamer.h +++ b/gcc/lto-streamer.h @@ -1,7 +1,7 @@ /* Data structures and declarations used for reading and writing GIMPLE to a file stream. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Doug Kwan This file is part of GCC. diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c index 335ec8fd01a..cc45e33a482 100644 --- a/gcc/lto-wrapper.c +++ b/gcc/lto-wrapper.c @@ -1,5 +1,5 @@ /* Wrapper to call lto. Used by collect2 and the linker plugin. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Factored out of collect2 by Rafael Espindola diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index a191fec01c2..ad51a4746ff 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2013-12-06 Oleg Endo * lto.c: Remove struct tags when referring to class varpool_node. diff --git a/gcc/lto/Make-lang.in b/gcc/lto/Make-lang.in index 66b0015f2bd..a3c162d2d0a 100644 --- a/gcc/lto/Make-lang.in +++ b/gcc/lto/Make-lang.in @@ -1,5 +1,5 @@ # Top level -*- makefile -*- fragment for LTO -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/lto/common.c b/gcc/lto/common.c index 9998199dbb2..7e8a74357da 100644 --- a/gcc/lto/common.c +++ b/gcc/lto/common.c @@ -1,5 +1,5 @@ /* Common code for the plugin and lto1. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by Rafael Avila de Espindola (espindola@google.com). This program is free software; you can redistribute it and/or modify diff --git a/gcc/lto/common.h b/gcc/lto/common.h index 8f76f7ce2d0..0f83bbe7cc7 100644 --- a/gcc/lto/common.h +++ b/gcc/lto/common.h @@ -1,5 +1,5 @@ /* Common code for the plugin and lto1. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Rafael Avila de Espindola (espindola@google.com). This file is part of GCC. diff --git a/gcc/lto/config-lang.in b/gcc/lto/config-lang.in index 9217c5dfbaa..7b9da471179 100644 --- a/gcc/lto/config-lang.in +++ b/gcc/lto/config-lang.in @@ -1,5 +1,5 @@ # Top level configure fragment for LTO -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/lto/lang-specs.h b/gcc/lto/lang-specs.h index a794a63137a..b31e9f096dc 100644 --- a/gcc/lto/lang-specs.h +++ b/gcc/lto/lang-specs.h @@ -1,5 +1,5 @@ /* LTO driver specs. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, Inc. This file is part of GCC. diff --git a/gcc/lto/lang.opt b/gcc/lto/lang.opt index 7a9aedeb921..74bb30bc5f4 100644 --- a/gcc/lto/lang.opt +++ b/gcc/lto/lang.opt @@ -1,5 +1,5 @@ ; Options for the LTO front end. -; Copyright (C) 2008-2013 Free Software Foundation, Inc. +; Copyright (C) 2008-2014 Free Software Foundation, Inc. ; ; This file is part of GCC. ; diff --git a/gcc/lto/lto-lang.c b/gcc/lto/lto-lang.c index 67746b27433..d29b8e52617 100644 --- a/gcc/lto/lto-lang.c +++ b/gcc/lto/lto-lang.c @@ -1,5 +1,5 @@ /* Language-dependent hooks for LTO. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, Inc. This file is part of GCC. diff --git a/gcc/lto/lto-object.c b/gcc/lto/lto-object.c index b4518bb55b9..f43fb3a30d6 100644 --- a/gcc/lto/lto-object.c +++ b/gcc/lto/lto-object.c @@ -1,5 +1,5 @@ /* LTO routines to use object files. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Written by Ian Lance Taylor, Google. This file is part of GCC. diff --git a/gcc/lto/lto-partition.c b/gcc/lto/lto-partition.c index 5e0335ea5a4..6b2d488ed09 100644 --- a/gcc/lto/lto-partition.c +++ b/gcc/lto/lto-partition.c @@ -1,5 +1,5 @@ /* LTO partitioning logic routines. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/lto/lto-partition.h b/gcc/lto/lto-partition.h index 73c131f9c16..770111d9b27 100644 --- a/gcc/lto/lto-partition.h +++ b/gcc/lto/lto-partition.h @@ -1,5 +1,5 @@ /* LTO partitioning logic routines. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/lto/lto-symtab.c b/gcc/lto/lto-symtab.c index ad0a37ca75c..f5f9d1318ee 100644 --- a/gcc/lto/lto-symtab.c +++ b/gcc/lto/lto-symtab.c @@ -1,5 +1,5 @@ /* LTO symbol table. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, Inc. This file is part of GCC. diff --git a/gcc/lto/lto-tree.h b/gcc/lto/lto-tree.h index 53c8b68b24d..d8d22333d41 100644 --- a/gcc/lto/lto-tree.h +++ b/gcc/lto/lto-tree.h @@ -1,5 +1,5 @@ /* Language-dependent trees for LTO. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, Inc. This file is part of GCC. diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index 8e5eeb3d11f..eb56e89a833 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -1,5 +1,5 @@ /* Top-level LTO routines. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, Inc. This file is part of GCC. diff --git a/gcc/lto/lto.h b/gcc/lto/lto.h index 1734fe5def1..bb8e2edfc55 100644 --- a/gcc/lto/lto.h +++ b/gcc/lto/lto.h @@ -1,5 +1,5 @@ /* LTO declarations. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. Contributed by CodeSourcery, Inc. This file is part of GCC. diff --git a/gcc/machmode.def b/gcc/machmode.def index 8c4cd73a335..38d3b01872f 100644 --- a/gcc/machmode.def +++ b/gcc/machmode.def @@ -1,6 +1,6 @@ /* This file contains the definitions and documentation for the machine modes used in the GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/machmode.h b/gcc/machmode.h index da0923a81a2..bc5d901d245 100644 --- a/gcc/machmode.h +++ b/gcc/machmode.h @@ -1,5 +1,5 @@ /* Machine mode definitions for GCC; included by rtl.h and tree.h. - Copyright (C) 1991-2013 Free Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/main.c b/gcc/main.c index 82acf951348..241d15144f2 100644 --- a/gcc/main.c +++ b/gcc/main.c @@ -1,5 +1,5 @@ /* main.c: defines main() for cc1, cc1plus, etc. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/mcf.c b/gcc/mcf.c index 146b43c1377..9a766399e32 100644 --- a/gcc/mcf.c +++ b/gcc/mcf.c @@ -1,6 +1,6 @@ /* Routines to implement minimum-cost maximal flow algorithm used to smooth basic block and edge frequency counts. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Paul Yuan (yingbo.com@gmail.com) and Vinodha Ramasamy (vinodha@google.com). diff --git a/gcc/mkconfig.sh b/gcc/mkconfig.sh index a5b116d4483..c7146edb64d 100644 --- a/gcc/mkconfig.sh +++ b/gcc/mkconfig.sh @@ -1,6 +1,6 @@ #! /bin/sh -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # This file is part of GCC. # GCC is free software; you can redistribute it and/or modify diff --git a/gcc/mode-classes.def b/gcc/mode-classes.def index 7207ef7712b..9c6a8bbc0c2 100644 --- a/gcc/mode-classes.def +++ b/gcc/mode-classes.def @@ -1,5 +1,5 @@ /* Machine mode class definitions for GCC. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/mode-switching.c b/gcc/mode-switching.c index 4f68536d622..88543b2f978 100644 --- a/gcc/mode-switching.c +++ b/gcc/mode-switching.c @@ -1,5 +1,5 @@ /* CPU mode switching - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c index ba8d02096ef..8d63e97078b 100644 --- a/gcc/modulo-sched.c +++ b/gcc/modulo-sched.c @@ -1,5 +1,5 @@ /* Swing Modulo Scheduling implementation. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Ayal Zaks and Mustafa Hagog This file is part of GCC. diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index 366bc3f5402..38403772b83 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2013-12-04 Joseph Myers PR c/52023 @@ -3438,7 +3442,7 @@ Move to c-objc-common.h. -Copyright (C) 2004-2013 Free Software Foundation, Inc. +Copyright (C) 2004-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/objc/Make-lang.in b/gcc/objc/Make-lang.in index 02e78fbfc3a..cd1fdb6281d 100644 --- a/gcc/objc/Make-lang.in +++ b/gcc/objc/Make-lang.in @@ -1,5 +1,5 @@ # Top level -*- makefile -*- fragment for GNU Objective-C -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/objc/config-lang.in b/gcc/objc/config-lang.in index f1caa721b9a..4acbb60ed83 100644 --- a/gcc/objc/config-lang.in +++ b/gcc/objc/config-lang.in @@ -1,5 +1,5 @@ # Top level configure fragment for GNU Objective-C -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. #This file is part of GCC. diff --git a/gcc/objc/lang-specs.h b/gcc/objc/lang-specs.h index 879d072cb57..a3c9a54fca2 100644 --- a/gcc/objc/lang-specs.h +++ b/gcc/objc/lang-specs.h @@ -1,5 +1,5 @@ /* Definitions for specs for Objective-C. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index 4a10f579bec..cb0b5ac6a76 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -1,5 +1,5 @@ /* Implement classes and message passing for Objective C. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Steve Naroff. This file is part of GCC. diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h index 1ec8a7e1810..0c7fa0456d3 100644 --- a/gcc/objc/objc-act.h +++ b/gcc/objc/objc-act.h @@ -1,5 +1,5 @@ /* Declarations for objc-act.c. - Copyright (C) 1990-2013 Free Software Foundation, Inc. + Copyright (C) 1990-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/objc/objc-encoding.c b/gcc/objc/objc-encoding.c index 61d722a77b0..70c2a6858e6 100644 --- a/gcc/objc/objc-encoding.c +++ b/gcc/objc/objc-encoding.c @@ -1,5 +1,5 @@ /* Routines dealing with ObjC encoding of types - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/objc/objc-encoding.h b/gcc/objc/objc-encoding.h index 2e0a04baeea..0bc33397780 100644 --- a/gcc/objc/objc-encoding.h +++ b/gcc/objc/objc-encoding.h @@ -1,5 +1,5 @@ /* Routines dealing with ObjC encoding of types - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/objc/objc-gnu-runtime-abi-01.c b/gcc/objc/objc-gnu-runtime-abi-01.c index ef2e033b6dd..570dc9323fa 100644 --- a/gcc/objc/objc-gnu-runtime-abi-01.c +++ b/gcc/objc/objc-gnu-runtime-abi-01.c @@ -1,5 +1,5 @@ /* GNU Runtime ABI version 8 - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Iain Sandoe (split from objc-act.c) This file is part of GCC. diff --git a/gcc/objc/objc-lang.c b/gcc/objc/objc-lang.c index bc0008bf563..c9c5a293a98 100644 --- a/gcc/objc/objc-lang.c +++ b/gcc/objc/objc-lang.c @@ -1,5 +1,5 @@ /* Language-dependent hooks for Objective-C. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Ziemowit Laski This file is part of GCC. diff --git a/gcc/objc/objc-map.c b/gcc/objc/objc-map.c index fa27b70cf32..386d2c5f6a8 100644 --- a/gcc/objc/objc-map.c +++ b/gcc/objc/objc-map.c @@ -1,5 +1,5 @@ /* objc-map.c -- Implementation of map data structures for ObjC compiler - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Written by Nicola Pero This program is free software; you can redistribute it and/or modify it diff --git a/gcc/objc/objc-map.h b/gcc/objc/objc-map.h index 3f6e2ff6139..c621ea0e531 100644 --- a/gcc/objc/objc-map.h +++ b/gcc/objc/objc-map.h @@ -1,5 +1,5 @@ /* objc-map.h -- Implementation of map data structures for ObjC compiler - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Written by Nicola Pero This program is free software; you can redistribute it and/or modify it diff --git a/gcc/objc/objc-next-metadata-tags.h b/gcc/objc/objc-next-metadata-tags.h index 5e189e06fb6..e16eb635b0d 100644 --- a/gcc/objc/objc-next-metadata-tags.h +++ b/gcc/objc/objc-next-metadata-tags.h @@ -1,5 +1,5 @@ /* Declarations for meta-data attribute tags. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Iain Sandoe This file is part of GCC. diff --git a/gcc/objc/objc-next-runtime-abi-01.c b/gcc/objc/objc-next-runtime-abi-01.c index 9c7bf4529b1..bf8f463e766 100644 --- a/gcc/objc/objc-next-runtime-abi-01.c +++ b/gcc/objc/objc-next-runtime-abi-01.c @@ -1,5 +1,5 @@ /* Next Runtime (ABI-0/1) private. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Iain Sandoe (split from objc-act.c) This file is part of GCC. diff --git a/gcc/objc/objc-next-runtime-abi-02.c b/gcc/objc/objc-next-runtime-abi-02.c index c7215a86682..6ba5e681e6c 100644 --- a/gcc/objc/objc-next-runtime-abi-02.c +++ b/gcc/objc/objc-next-runtime-abi-02.c @@ -1,5 +1,5 @@ /* Next Runtime (ABI-2) private. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Iain Sandoe and based, in part, on an implementation in 'branches/apple/trunk' contributed by Apple Computer Inc. diff --git a/gcc/objc/objc-runtime-hooks.h b/gcc/objc/objc-runtime-hooks.h index c6de9864cf7..826d2ae417c 100644 --- a/gcc/objc/objc-runtime-hooks.h +++ b/gcc/objc/objc-runtime-hooks.h @@ -1,5 +1,5 @@ /* Hooks to abstract the runtime meta-data generation for Objective C. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Iain Sandoe This file is part of GCC. diff --git a/gcc/objc/objc-runtime-shared-support.c b/gcc/objc/objc-runtime-shared-support.c index 9278b39e11b..bfdbb4d7db7 100644 --- a/gcc/objc/objc-runtime-shared-support.c +++ b/gcc/objc/objc-runtime-shared-support.c @@ -1,5 +1,5 @@ /* Support routines shared by all runtimes. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Iain Sandoe (partially split from objc-act.c) This file is part of GCC. diff --git a/gcc/objc/objc-runtime-shared-support.h b/gcc/objc/objc-runtime-shared-support.h index 18c5ac17341..1ea4da9cd7d 100644 --- a/gcc/objc/objc-runtime-shared-support.h +++ b/gcc/objc/objc-runtime-shared-support.h @@ -1,5 +1,5 @@ /* Support routines shared by all runtimes. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Iain Sandoe This file is part of GCC. diff --git a/gcc/objc/objc-tree.def b/gcc/objc/objc-tree.def index 52490ab19cf..5dc7df3718e 100644 --- a/gcc/objc/objc-tree.def +++ b/gcc/objc/objc-tree.def @@ -1,7 +1,7 @@ /* This file contains the definitions and documentation for the additional tree codes used in the Objective C front end (see tree.def for the standard codes). - Copyright (C) 1990-2013 Free Software Foundation, Inc. + Copyright (C) 1990-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog index af4e4b3f49d..c4183ea31d2 100644 --- a/gcc/objcp/ChangeLog +++ b/gcc/objcp/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2013-09-25 Tom Tromey * Make-lang.in (START_HDRS, cc1objplus-checksum.o) @@ -450,7 +454,7 @@ * objcp-lang.c: Likewise. -Copyright (C) 2005-2013 Free Software Foundation, Inc. +Copyright (C) 2005-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/objcp/Make-lang.in b/gcc/objcp/Make-lang.in index 439bfa223af..cb0cc5dcc55 100644 --- a/gcc/objcp/Make-lang.in +++ b/gcc/objcp/Make-lang.in @@ -1,5 +1,5 @@ # Top level -*- makefile -*- fragment for GNU Objective-C++ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # Contributed by Ziemowit Laski #This file is part of GCC. diff --git a/gcc/objcp/config-lang.in b/gcc/objcp/config-lang.in index 63eb28669f1..bc040226491 100644 --- a/gcc/objcp/config-lang.in +++ b/gcc/objcp/config-lang.in @@ -1,5 +1,5 @@ # Top level configure fragment for GNU Objective-C++. -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # Contributed by Ziemowit Laski #This file is part of GCC. diff --git a/gcc/objcp/lang-specs.h b/gcc/objcp/lang-specs.h index 72db9c85258..6cdd3297f86 100644 --- a/gcc/objcp/lang-specs.h +++ b/gcc/objcp/lang-specs.h @@ -1,5 +1,5 @@ /* Definitions for specs for Objective-C++. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Ziemowit Laski This file is part of GCC. diff --git a/gcc/objcp/objcp-decl.c b/gcc/objcp/objcp-decl.c index cc9cffd7d78..ef293493164 100644 --- a/gcc/objcp/objcp-decl.c +++ b/gcc/objcp/objcp-decl.c @@ -1,6 +1,6 @@ /* Process the ObjC-specific declarations and variables for the Objective-C++ compiler. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Ziemowit Laski This file is part of GCC. diff --git a/gcc/objcp/objcp-decl.h b/gcc/objcp/objcp-decl.h index cafce27c6bf..bcfcbdecd24 100644 --- a/gcc/objcp/objcp-decl.h +++ b/gcc/objcp/objcp-decl.h @@ -1,6 +1,6 @@ /* Process the ObjC-specific declarations and variables for the Objective-C++ compiler. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Ziemowit Laski This file is part of GCC. diff --git a/gcc/objcp/objcp-lang.c b/gcc/objcp/objcp-lang.c index f9b126f5cb2..31c9c78a349 100644 --- a/gcc/objcp/objcp-lang.c +++ b/gcc/objcp/objcp-lang.c @@ -1,5 +1,5 @@ /* Language-dependent hooks for Objective-C++. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Ziemowit Laski This file is part of GCC. diff --git a/gcc/omega.c b/gcc/omega.c index 2443ecb0307..766cb73fff6 100644 --- a/gcc/omega.c +++ b/gcc/omega.c @@ -5,7 +5,7 @@ This code has no license restrictions, and is considered public domain. - Changes copyright (C) 2005-2013 Free Software Foundation, Inc. + Changes copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/omega.h b/gcc/omega.h index 0b217a93516..903ec058fb8 100644 --- a/gcc/omega.h +++ b/gcc/omega.h @@ -5,7 +5,7 @@ This code has no license restrictions, and is considered public domain. - Changes copyright (C) 2005-2013 Free Software Foundation, Inc. + Changes copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/omp-builtins.def b/gcc/omp-builtins.def index 8fd99548e7e..08b825c843d 100644 --- a/gcc/omp-builtins.def +++ b/gcc/omp-builtins.def @@ -1,6 +1,6 @@ /* This file contains the definitions and documentation for the OpenMP builtins used in the GNU compiler. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/omp-low.c b/gcc/omp-low.c index aacee3872b2..f1ec1c6e9ae 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -3,7 +3,7 @@ marshalling to implement data sharing and copying clauses. Contributed by Diego Novillo - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/omp-low.h b/gcc/omp-low.h index 6b5a2ff304d..ce9cef9f5dd 100644 --- a/gcc/omp-low.h +++ b/gcc/omp-low.h @@ -1,5 +1,5 @@ /* Header file for openMP lowering directives. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk index dd849700432..4db2521612f 100644 --- a/gcc/opt-functions.awk +++ b/gcc/opt-functions.awk @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # Contributed by Kelley Cook, June 2004. # Original code from Neil Booth, May 2003. # diff --git a/gcc/opt-gather.awk b/gcc/opt-gather.awk index 8624ac4c173..578f9313ef6 100644 --- a/gcc/opt-gather.awk +++ b/gcc/opt-gather.awk @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # Contributed by Kelley Cook, June 2004. # Original code from Neil Booth, May 2003. # diff --git a/gcc/opt-include.awk b/gcc/opt-include.awk index 02f00151345..e69a0686624 100644 --- a/gcc/opt-include.awk +++ b/gcc/opt-include.awk @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # Contributed by Michael Meissner (meissner@linux.vnet.ibm.com) # # This program is free software; you can redistribute it and/or modify it diff --git a/gcc/opt-read.awk b/gcc/opt-read.awk index 6d1a4838345..467d5bebb87 100644 --- a/gcc/opt-read.awk +++ b/gcc/opt-read.awk @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # Contributed by Kelley Cook, June 2004. # Original code from Neil Booth, May 2003. # diff --git a/gcc/optabs.c b/gcc/optabs.c index e034b751aa4..213eaf98378 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -1,5 +1,5 @@ /* Expand the basic unary and binary arithmetic operations, for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/optabs.def b/gcc/optabs.def index f19ceba4746..decdaf31fc5 100644 --- a/gcc/optabs.def +++ b/gcc/optabs.def @@ -1,5 +1,5 @@ /* Definitions for operation tables, or "optabs". - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/optabs.h b/gcc/optabs.h index 3c40b4a0e94..8ecaa41f1dd 100644 --- a/gcc/optabs.h +++ b/gcc/optabs.h @@ -1,5 +1,5 @@ /* Definitions for code generation pass of GNU compiler. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/optc-gen.awk b/gcc/optc-gen.awk index 738cb5a26a7..a091b72af4b 100644 --- a/gcc/optc-gen.awk +++ b/gcc/optc-gen.awk @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # Contributed by Kelley Cook, June 2004. # Original code from Neil Booth, May 2003. # diff --git a/gcc/optc-save-gen.awk b/gcc/optc-save-gen.awk index b822a0b1158..a5ec7e48660 100644 --- a/gcc/optc-save-gen.awk +++ b/gcc/optc-save-gen.awk @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # Contributed by Kelley Cook, June 2004. # Original code from Neil Booth, May 2003. # diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk index 46bd570f6f7..45aee342ed3 100644 --- a/gcc/opth-gen.awk +++ b/gcc/opth-gen.awk @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # Contributed by Kelley Cook, June 2004. # Original code from Neil Booth, May 2003. # diff --git a/gcc/opts-common.c b/gcc/opts-common.c index 161ddf0122c..007a546e388 100644 --- a/gcc/opts-common.c +++ b/gcc/opts-common.c @@ -1,5 +1,5 @@ /* Command line option handling. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/opts-diagnostic.h b/gcc/opts-diagnostic.h index 68c4fe18487..e74c818d010 100644 --- a/gcc/opts-diagnostic.h +++ b/gcc/opts-diagnostic.h @@ -1,5 +1,5 @@ /* Command line option handling. Interactions with diagnostics code. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/opts-global.c b/gcc/opts-global.c index 841a79b6122..111884bb5a6 100644 --- a/gcc/opts-global.c +++ b/gcc/opts-global.c @@ -1,6 +1,6 @@ /* Command line option handling. Code involving global state that should not be shared with the driver. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/opts.c b/gcc/opts.c index 251605ceb96..bac1aff6970 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -1,5 +1,5 @@ /* Command line option handling. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Neil Booth. This file is part of GCC. diff --git a/gcc/opts.h b/gcc/opts.h index 7477647bf67..67dc28ba56a 100644 --- a/gcc/opts.h +++ b/gcc/opts.h @@ -1,5 +1,5 @@ /* Command line option handling. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/output.h b/gcc/output.h index 7b262566c2f..15a2b979fdd 100644 --- a/gcc/output.h +++ b/gcc/output.h @@ -1,6 +1,6 @@ /* Declarations for insn-output.c and other code to write to asm_out_file. These functions are defined in final.c, and varasm.c. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/params.c b/gcc/params.c index 2fc1d15bc61..3ae5ccd5cbe 100644 --- a/gcc/params.c +++ b/gcc/params.c @@ -1,5 +1,5 @@ /* params.c - Run-time parameters. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Written by Mark Mitchell . This file is part of GCC. diff --git a/gcc/params.def b/gcc/params.def index c0f962256f1..af89dd9f388 100644 --- a/gcc/params.def +++ b/gcc/params.def @@ -1,5 +1,5 @@ /* params.def - Run-time parameters. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Written by Mark Mitchell . This file is part of GCC. diff --git a/gcc/params.h b/gcc/params.h index f137e9eb5e6..82870585293 100644 --- a/gcc/params.h +++ b/gcc/params.h @@ -1,5 +1,5 @@ /* params.h - Run-time parameters. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Written by Mark Mitchell . This file is part of GCC. diff --git a/gcc/pass_manager.h b/gcc/pass_manager.h index b5e10c373cf..e1d81439acd 100644 --- a/gcc/pass_manager.h +++ b/gcc/pass_manager.h @@ -1,5 +1,5 @@ /* pass_manager.h - The pipeline of optimization passes - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/passes.c b/gcc/passes.c index bc7bf064489..3b340d3a546 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -1,5 +1,5 @@ /* Top level of GCC compilers (cc1, cc1plus, etc.) - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/passes.def b/gcc/passes.def index 1fe2003cbca..95ea8cecb2e 100644 --- a/gcc/passes.def +++ b/gcc/passes.def @@ -1,5 +1,5 @@ /* Description of pass structure - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/plugin.c b/gcc/plugin.c index 61d7fde0175..88c178097a5 100644 --- a/gcc/plugin.c +++ b/gcc/plugin.c @@ -1,5 +1,5 @@ /* Support for GCC plugin mechanism. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/plugin.def b/gcc/plugin.def index 154f01c0f80..0151fdc0bcd 100644 --- a/gcc/plugin.def +++ b/gcc/plugin.def @@ -1,5 +1,5 @@ /* This file contains the definitions for plugin events in GCC. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/plugin.h b/gcc/plugin.h index 1c5df4b3db0..88021830517 100644 --- a/gcc/plugin.h +++ b/gcc/plugin.h @@ -1,5 +1,5 @@ /* Header file for internal GCC plugin mechanism. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index d1c37c47c9b..8323ebc6e9f 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2013-07-11 Joseph Myers * fi.po: Update. @@ -1858,7 +1862,7 @@ Sun Oct 31 17:17:18 1999 Jeffrey A Law (law@cygnus.com) libiberty/include directories. -Copyright (C) 1999-2013 Free Software Foundation, Inc. +Copyright (C) 1999-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/po/EXCLUDES b/gcc/po/EXCLUDES index 342a3a25c08..158c5c9be66 100644 --- a/gcc/po/EXCLUDES +++ b/gcc/po/EXCLUDES @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/po/exgettext b/gcc/po/exgettext index c4743d2576c..fd6774f437b 100644 --- a/gcc/po/exgettext +++ b/gcc/po/exgettext @@ -1,6 +1,6 @@ #! /bin/sh # Wrapper around gettext for programs using the msgid convention. -# Copyright (C) 1998-2013 Free Software Foundation, Inc. +# Copyright (C) 1998-2014 Free Software Foundation, Inc. # Written by Paul Eggert . # Revised by Zack Weinberg for no-POTFILES operation. diff --git a/gcc/pointer-set.c b/gcc/pointer-set.c index ef44aca2d1f..8b6a73257d6 100644 --- a/gcc/pointer-set.c +++ b/gcc/pointer-set.c @@ -1,5 +1,5 @@ /* Set operations on pointers - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/pointer-set.h b/gcc/pointer-set.h index c026af78ff6..a426534ac44 100644 --- a/gcc/pointer-set.h +++ b/gcc/pointer-set.h @@ -1,5 +1,5 @@ /* Set operations on pointers - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/postreload-gcse.c b/gcc/postreload-gcse.c index a1204f9016a..5555794a321 100644 --- a/gcc/postreload-gcse.c +++ b/gcc/postreload-gcse.c @@ -1,5 +1,5 @@ /* Post reload partially redundant load elimination - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/postreload.c b/gcc/postreload.c index 478a552608f..9bfffe5f4df 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -1,5 +1,5 @@ /* Perform simple optimizations to clean up the result of reload. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/predict.c b/gcc/predict.c index 1826a0699ec..db5eed910a3 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -1,5 +1,5 @@ /* Branch prediction routines for the GNU compiler. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/predict.def b/gcc/predict.def index 2ce135c0ce0..f4eddc5f8a8 100644 --- a/gcc/predict.def +++ b/gcc/predict.def @@ -1,5 +1,5 @@ /* Definitions for the branch prediction routines in the GNU compiler. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/predict.h b/gcc/predict.h index 125245e73f4..1555f806d4c 100644 --- a/gcc/predict.h +++ b/gcc/predict.h @@ -1,5 +1,5 @@ /* Definitions for branch prediction routines in the GNU compiler. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/prefix.c b/gcc/prefix.c index 6092fbf1987..71ddf5d233e 100644 --- a/gcc/prefix.c +++ b/gcc/prefix.c @@ -1,5 +1,5 @@ /* Utility to update paths from internal to external forms. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/prefix.h b/gcc/prefix.h index 624c306e946..97bbac63e7a 100644 --- a/gcc/prefix.h +++ b/gcc/prefix.h @@ -1,5 +1,5 @@ /* Provide prototypes for functions exported from prefix.c. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/pretty-print.c b/gcc/pretty-print.c index 955a4c45f7b..b0c61829560 100644 --- a/gcc/pretty-print.c +++ b/gcc/pretty-print.c @@ -1,5 +1,5 @@ /* Various declarations for language-independent pretty-print subroutines. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h index a60be3285ea..247b25c815d 100644 --- a/gcc/pretty-print.h +++ b/gcc/pretty-print.h @@ -1,5 +1,5 @@ /* Various declarations for language-independent pretty-print subroutines. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c index a15ab5e972c..6cf339f1c80 100644 --- a/gcc/print-rtl.c +++ b/gcc/print-rtl.c @@ -1,5 +1,5 @@ /* Print RTL for GCC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/print-rtl.h b/gcc/print-rtl.h index 3cb28d656fb..28293d34d4f 100644 --- a/gcc/print-rtl.h +++ b/gcc/print-rtl.h @@ -1,5 +1,5 @@ /* Print RTL for GCC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/print-tree.c b/gcc/print-tree.c index f4a98d564ae..91b696cfa49 100644 --- a/gcc/print-tree.c +++ b/gcc/print-tree.c @@ -1,5 +1,5 @@ /* Prints out tree in human readable form - GCC - Copyright (C) 1990-2013 Free Software Foundation, Inc. + Copyright (C) 1990-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/print-tree.h b/gcc/print-tree.h index 7d1a5c82bdc..873e207b1d9 100644 --- a/gcc/print-tree.h +++ b/gcc/print-tree.h @@ -1,5 +1,5 @@ /* Declarations for printing trees in human readable form - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/profile.c b/gcc/profile.c index 62b126c4a81..e549453bfad 100644 --- a/gcc/profile.c +++ b/gcc/profile.c @@ -1,5 +1,5 @@ /* Calculate branch probabilities, and basic block execution counts. - Copyright (C) 1990-2013 Free Software Foundation, Inc. + Copyright (C) 1990-2014 Free Software Foundation, Inc. Contributed by James E. Wilson, UC Berkeley/Cygnus Support; based on some ideas from Dain Samples of UC Berkeley. Further mangling by Bob Manson, Cygnus Support. diff --git a/gcc/profile.h b/gcc/profile.h index b31cf7869b5..be609c7463f 100644 --- a/gcc/profile.h +++ b/gcc/profile.h @@ -1,6 +1,6 @@ /* Header file for minimum-cost maximal flow routines used to smooth basic block and edge frequency counts. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Paul Yuan (yingbo.com@gmail.com) and Vinodha Ramasamy (vinodha@google.com). diff --git a/gcc/read-md.c b/gcc/read-md.c index c108d51fd06..ea6f7eb0930 100644 --- a/gcc/read-md.c +++ b/gcc/read-md.c @@ -1,5 +1,5 @@ /* MD reader for GCC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/read-md.h b/gcc/read-md.h index 0788b71e5fc..be26bdd1a4d 100644 --- a/gcc/read-md.h +++ b/gcc/read-md.h @@ -1,5 +1,5 @@ /* MD reader definitions. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/read-rtl.c b/gcc/read-rtl.c index 10adf472a08..aa7c03b2060 100644 --- a/gcc/read-rtl.c +++ b/gcc/read-rtl.c @@ -1,5 +1,5 @@ /* RTL reader for GCC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/real.c b/gcc/real.c index c1af548b44f..86f88cec4b9 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -1,5 +1,5 @@ /* real.c - software floating point emulation. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. Contributed by Stephen L. Moshier (moshier@world.std.com). Re-written by Richard Henderson diff --git a/gcc/real.h b/gcc/real.h index c4e036e9ff5..ff0c523b659 100644 --- a/gcc/real.h +++ b/gcc/real.h @@ -1,5 +1,5 @@ /* Definitions of floating-point access for GNU compiler. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/realmpfr.c b/gcc/realmpfr.c index b5c11206d6c..1f529647da0 100644 --- a/gcc/realmpfr.c +++ b/gcc/realmpfr.c @@ -1,5 +1,5 @@ /* Conversion routines from GCC internal float representation to MPFR. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/realmpfr.h b/gcc/realmpfr.h index 3a3fbb2cfa4..0595f39b997 100644 --- a/gcc/realmpfr.h +++ b/gcc/realmpfr.h @@ -1,6 +1,6 @@ /* Definitions of floating-point conversion from compiler internal format to MPFR. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/recog.c b/gcc/recog.c index 37e7692ea59..b81214cf41c 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -1,5 +1,5 @@ /* Subroutines used by or related to instruction recognition. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/recog.h b/gcc/recog.h index 550a2174578..89e87a94971 100644 --- a/gcc/recog.h +++ b/gcc/recog.h @@ -1,5 +1,5 @@ /* Declarations for interface to insn recognizer and insn-output.c. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ree.c b/gcc/ree.c index 9938e98b4dc..152cc5aa914 100644 --- a/gcc/ree.c +++ b/gcc/ree.c @@ -1,5 +1,5 @@ /* Redundant Extension Elimination pass for the GNU compiler. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Ilya Enkovich (ilya.enkovich@intel.com) Based on the Redundant Zero-extension elimination pass contributed by diff --git a/gcc/reg-notes.def b/gcc/reg-notes.def index fd7e337c2d6..31cd171b542 100644 --- a/gcc/reg-notes.def +++ b/gcc/reg-notes.def @@ -1,5 +1,5 @@ /* Register note definitions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index 87b9821fbeb..a92830bf734 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -1,5 +1,5 @@ /* Register to Stack convert for GNU compiler. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/regcprop.c b/gcc/regcprop.c index 3c9ef3d3380..101de76ef10 100644 --- a/gcc/regcprop.c +++ b/gcc/regcprop.c @@ -1,5 +1,5 @@ /* Copy propagation on hard registers for the GNU compiler. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/reginfo.c b/gcc/reginfo.c index 46288ebd181..efaa0cbd754 100644 --- a/gcc/reginfo.c +++ b/gcc/reginfo.c @@ -1,5 +1,5 @@ /* Compute different info about registers. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/regrename.c b/gcc/regrename.c index 9ff94d0c0e8..6517f4e384d 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -1,5 +1,5 @@ /* Register renaming for the GNU compiler. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/regrename.h b/gcc/regrename.h index f2ceccf2b8e..9a611f016ab 100644 --- a/gcc/regrename.h +++ b/gcc/regrename.h @@ -1,5 +1,5 @@ /* This file contains definitions for the register renamer. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/regs.h b/gcc/regs.h index 9bf426cd175..006caca5611 100644 --- a/gcc/regs.h +++ b/gcc/regs.h @@ -1,5 +1,5 @@ /* Define per-register tables for data flow info and register allocation. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/regset.h b/gcc/regset.h index 731e8c65992..d3df5b14a11 100644 --- a/gcc/regset.h +++ b/gcc/regset.h @@ -1,5 +1,5 @@ /* Define regsets. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/regstat.c b/gcc/regstat.c index 6a191d8ceab..75d9cb446ba 100644 --- a/gcc/regstat.c +++ b/gcc/regstat.c @@ -1,5 +1,5 @@ /* Scanning of rtl for dataflow analysis. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Kenneth Zadeck (zadeck@naturalbridge.com). This file is part of GCC. diff --git a/gcc/reload.c b/gcc/reload.c index 96619f67820..77dc0427051 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -1,5 +1,5 @@ /* Search an insn for pseudo regs that must be in hard regs and are not. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/reload.h b/gcc/reload.h index d7b28422f64..65fa29c2bd2 100644 --- a/gcc/reload.h +++ b/gcc/reload.h @@ -1,5 +1,5 @@ /* Communication between reload.c, reload1.c and the rest of compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/reload1.c b/gcc/reload1.c index 47439ce6ec9..bb761fef7f7 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -1,5 +1,5 @@ /* Reload pseudo regs into hard regs for insns that require hard regs. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/reorg.c b/gcc/reorg.c index dc20de46bee..740da4a83c6 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -1,5 +1,5 @@ /* Perform instruction reorganizations for delay slot filling. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu). Hacked by Michael Tiemann (tiemann@cygnus.com). diff --git a/gcc/resource.c b/gcc/resource.c index 442c8523cb8..aed00edc6f4 100644 --- a/gcc/resource.c +++ b/gcc/resource.c @@ -1,5 +1,5 @@ /* Definitions for computing resource usage of specific insns. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/resource.h b/gcc/resource.h index 1b316acb601..a1a1f34fded 100644 --- a/gcc/resource.h +++ b/gcc/resource.h @@ -1,5 +1,5 @@ /* Definitions for computing resource usage of specific insns. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/rtl-error.c b/gcc/rtl-error.c index c3b750ebbea..d8d9363654f 100644 --- a/gcc/rtl-error.c +++ b/gcc/rtl-error.c @@ -1,5 +1,5 @@ /* RTL specific diagnostic subroutines for GCC - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. diff --git a/gcc/rtl-error.h b/gcc/rtl-error.h index 946e23ec709..366498f5856 100644 --- a/gcc/rtl-error.h +++ b/gcc/rtl-error.h @@ -1,5 +1,5 @@ /* RTL specific diagnostic subroutines for GCC - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/rtl.c b/gcc/rtl.c index 52b7747b693..fd794498d88 100644 --- a/gcc/rtl.c +++ b/gcc/rtl.c @@ -1,5 +1,5 @@ /* RTL utility routines. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/rtl.def b/gcc/rtl.def index 71d1ab0375e..56418c792e0 100644 --- a/gcc/rtl.def +++ b/gcc/rtl.def @@ -1,7 +1,7 @@ /* This file contains the definitions and documentation for the Register Transfer Expressions (rtx's) that make up the Register Transfer Language (rtl) used in the Back End of the GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/rtl.h b/gcc/rtl.h index e69bd37dc72..e7d60eec0ae 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -1,5 +1,5 @@ /* Register Transfer Language (RTL) definitions for GCC - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 38f9e36593d..aff8f53e6f4 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -1,5 +1,5 @@ /* Analyze RTL for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/rtlhooks-def.h b/gcc/rtlhooks-def.h index dae39832dc2..760027dfe2f 100644 --- a/gcc/rtlhooks-def.h +++ b/gcc/rtlhooks-def.h @@ -1,5 +1,5 @@ /* Default macros to initialize an rtl_hooks data structure. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/rtlhooks.c b/gcc/rtlhooks.c index 9566436974f..c977cbeb891 100644 --- a/gcc/rtlhooks.c +++ b/gcc/rtlhooks.c @@ -1,5 +1,5 @@ /* Generic hooks for the RTL middle-end. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sanitizer.def b/gcc/sanitizer.def index 43f7467fc2a..015b1d85f5f 100644 --- a/gcc/sanitizer.def +++ b/gcc/sanitizer.def @@ -1,6 +1,6 @@ /* This file contains the definitions and documentation for the Address Sanitizer and Thread Sanitizer builtins used in the GNU compiler. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sbitmap.c b/gcc/sbitmap.c index ceadd09edda..d6964ad1bf8 100644 --- a/gcc/sbitmap.c +++ b/gcc/sbitmap.c @@ -1,5 +1,5 @@ /* Simple bitmaps. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sbitmap.h b/gcc/sbitmap.h index 0dc9567f580..487e3922810 100644 --- a/gcc/sbitmap.h +++ b/gcc/sbitmap.h @@ -1,5 +1,5 @@ /* Simple bitmaps. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index f818a83ea2e..7efc9376a81 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -1,6 +1,6 @@ /* Instruction scheduling pass. This file computes dependencies between instructions. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, and currently maintained by, Jim Wilson (wilson@cygnus.com) diff --git a/gcc/sched-ebb.c b/gcc/sched-ebb.c index d4baec5a534..ce172142a13 100644 --- a/gcc/sched-ebb.c +++ b/gcc/sched-ebb.c @@ -1,5 +1,5 @@ /* Instruction scheduling pass. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, and currently maintained by, Jim Wilson (wilson@cygnus.com) diff --git a/gcc/sched-int.h b/gcc/sched-int.h index b2c77240298..3b1106fb0c1 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -1,6 +1,6 @@ /* Instruction scheduling pass. This file contains definitions used internally in the scheduler. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index 863cd1de2d0..406dc1facd6 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -1,5 +1,5 @@ /* Instruction scheduling pass. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, and currently maintained by, Jim Wilson (wilson@cygnus.com) diff --git a/gcc/sched-vis.c b/gcc/sched-vis.c index 57b28a0ca48..6a04a652fd5 100644 --- a/gcc/sched-vis.c +++ b/gcc/sched-vis.c @@ -1,5 +1,5 @@ /* Printing of RTL in "slim", mnemonic like form. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, and currently maintained by, Jim Wilson (wilson@cygnus.com) diff --git a/gcc/sdbout.c b/gcc/sdbout.c index 8af0bc5af5b..2e781c96273 100644 --- a/gcc/sdbout.c +++ b/gcc/sdbout.c @@ -1,5 +1,5 @@ /* Output sdb-format symbol table information from GNU compiler. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sdbout.h b/gcc/sdbout.h index 78913e93106..00368b6ecd6 100644 --- a/gcc/sdbout.h +++ b/gcc/sdbout.h @@ -1,5 +1,5 @@ /* sdbout.h - Various declarations for functions found in sdbout.c - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sel-sched-dump.c b/gcc/sel-sched-dump.c index 2e4677071ce..97dcb9396eb 100644 --- a/gcc/sel-sched-dump.c +++ b/gcc/sel-sched-dump.c @@ -1,5 +1,5 @@ /* Instruction scheduling pass. Log dumping infrastructure. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sel-sched-dump.h b/gcc/sel-sched-dump.h index e762c929c82..f176354a509 100644 --- a/gcc/sel-sched-dump.h +++ b/gcc/sel-sched-dump.h @@ -1,5 +1,5 @@ /* Instruction scheduling pass. Log dumping infrastructure. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index 942d909639c..2ce255a5f30 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -1,5 +1,5 @@ /* Instruction scheduling pass. Selective scheduler and pipeliner. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h index d194740b4f2..f63d5711581 100644 --- a/gcc/sel-sched-ir.h +++ b/gcc/sel-sched-ir.h @@ -1,6 +1,6 @@ /* Instruction scheduling pass. This file contains definitions used internally in the scheduler. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index 29a5f1fa1f8..ad4a0aa5020 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -1,5 +1,5 @@ /* Instruction scheduling pass. Selective scheduler and pipeliner. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sel-sched.h b/gcc/sel-sched.h index 7803293ec39..b871dd7d83e 100644 --- a/gcc/sel-sched.h +++ b/gcc/sel-sched.h @@ -1,5 +1,5 @@ /* Instruction scheduling pass. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sese.c b/gcc/sese.c index 5e47ef77d9a..342c5e864d9 100644 --- a/gcc/sese.c +++ b/gcc/sese.c @@ -1,5 +1,5 @@ /* Single entry single exit control flow regions. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Jan Sjodin and Sebastian Pop . diff --git a/gcc/sese.h b/gcc/sese.h index cc28a994a6a..af919f83d02 100644 --- a/gcc/sese.h +++ b/gcc/sese.h @@ -1,5 +1,5 @@ /* Single entry single exit control flow regions. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Jan Sjodin and Sebastian Pop . diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index 3019fd86112..04af01e6ea2 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -1,5 +1,5 @@ /* RTL simplification functions for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sparseset.c b/gcc/sparseset.c index 279c22bf72b..628a6e2801f 100644 --- a/gcc/sparseset.c +++ b/gcc/sparseset.c @@ -1,5 +1,5 @@ /* SparseSet implementation. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Peter Bergner This file is part of GCC. diff --git a/gcc/sparseset.h b/gcc/sparseset.h index c9ba09a3479..a6854e58345 100644 --- a/gcc/sparseset.h +++ b/gcc/sparseset.h @@ -1,5 +1,5 @@ /* SparseSet implementation. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Peter Bergner This file is part of GCC. diff --git a/gcc/sreal.c b/gcc/sreal.c index f7600212476..5c429c5be3a 100644 --- a/gcc/sreal.c +++ b/gcc/sreal.c @@ -1,5 +1,5 @@ /* Simple data type for positive real numbers for the GNU compiler. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/sreal.h b/gcc/sreal.h index ac7de573b9d..08d577aa218 100644 --- a/gcc/sreal.h +++ b/gcc/sreal.h @@ -1,5 +1,5 @@ /* Definitions for simple data type for positive real numbers. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ssa-iterators.h b/gcc/ssa-iterators.h index 7b13928cfb4..2c75e4a7fc5 100644 --- a/gcc/ssa-iterators.h +++ b/gcc/ssa-iterators.h @@ -1,5 +1,5 @@ /* Header file for SSA iterators. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/stab.def b/gcc/stab.def index 1db9390cd01..d7880b1adcf 100644 --- a/gcc/stab.def +++ b/gcc/stab.def @@ -1,5 +1,5 @@ /* Table of DBX symbol codes for the GNU system. - Copyright (C) 1988-2013 Free Software Foundation, Inc. + Copyright (C) 1988-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/gcc/stack-ptr-mod.c b/gcc/stack-ptr-mod.c index acca80127e1..6b78085f1d4 100644 --- a/gcc/stack-ptr-mod.c +++ b/gcc/stack-ptr-mod.c @@ -1,5 +1,5 @@ /* Discover if the stack pointer is modified in a function. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/statistics.c b/gcc/statistics.c index 51d3f3af088..6c8470924e9 100644 --- a/gcc/statistics.c +++ b/gcc/statistics.c @@ -1,5 +1,5 @@ /* Optimization statistics functions. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Richard Guenther This file is part of GCC. diff --git a/gcc/statistics.h b/gcc/statistics.h index 72aada664ff..5e87841d1fb 100644 --- a/gcc/statistics.h +++ b/gcc/statistics.h @@ -1,5 +1,5 @@ /* Memory and optimization statistics helpers. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Cygnus Solutions. This file is part of GCC. diff --git a/gcc/stmt.c b/gcc/stmt.c index 0d891b4fdfb..5d68edb73f8 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -1,5 +1,5 @@ /* Expands front end tree to back end RTL for GCC - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/stmt.h b/gcc/stmt.h index 514be23a239..3ccd1c43587 100644 --- a/gcc/stmt.h +++ b/gcc/stmt.h @@ -1,5 +1,5 @@ /* Declarations and data structures for stmt.c. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 26fa2452744..98219b4f010 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -1,5 +1,5 @@ /* C-compiler utilities for types and variables storage layout - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/stor-layout.h b/gcc/stor-layout.h index 706bed4992d..74a2c6c4412 100644 --- a/gcc/stor-layout.h +++ b/gcc/stor-layout.h @@ -1,5 +1,5 @@ /* Definitions and declarations for stor-layout.c. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/store-motion.c b/gcc/store-motion.c index 57c991aacf3..f383ca597a7 100644 --- a/gcc/store-motion.c +++ b/gcc/store-motion.c @@ -1,5 +1,5 @@ /* Store motion via Lazy Code Motion on the reverse CFG. - Copyright (C) 1997-2013 Free Software Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/streamer-hooks.c b/gcc/streamer-hooks.c index c4f8475ddd8..e4615a20615 100644 --- a/gcc/streamer-hooks.c +++ b/gcc/streamer-hooks.c @@ -1,7 +1,7 @@ /* Streamer hooks. Support for adding streamer-specific callbacks to generic streaming routines. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/streamer-hooks.h b/gcc/streamer-hooks.h index afbe0132639..04158235d64 100644 --- a/gcc/streamer-hooks.h +++ b/gcc/streamer-hooks.h @@ -1,7 +1,7 @@ /* Streamer hooks. Support for adding streamer-specific callbacks to generic streaming routines. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/stringpool.c b/gcc/stringpool.c index f4d0daebdd9..4b6900cd1b7 100644 --- a/gcc/stringpool.c +++ b/gcc/stringpool.c @@ -1,5 +1,5 @@ /* String pool for GCC. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/stringpool.h b/gcc/stringpool.h index 55592aa3957..8788f0b53f9 100644 --- a/gcc/stringpool.h +++ b/gcc/stringpool.h @@ -1,5 +1,5 @@ /* Declarations and definitons for stringpool.c. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/symtab.c b/gcc/symtab.c index 8d36cae7b27..a7312f5f9a7 100644 --- a/gcc/symtab.c +++ b/gcc/symtab.c @@ -1,5 +1,5 @@ /* Symbol table. - Copyright (C) 2012-2013 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/sync-builtins.def b/gcc/sync-builtins.def index 26c8ba09f9b..2ed5e76faf1 100644 --- a/gcc/sync-builtins.def +++ b/gcc/sync-builtins.def @@ -1,6 +1,6 @@ /* This file contains the definitions and documentation for the synchronization builtins used in the GNU compiler. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/system.h b/gcc/system.h index 87ebe3cbb04..42bc509f2cd 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -1,6 +1,6 @@ /* Get common system includes and various definitions and declarations based on autoconf macros. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/target-def.h b/gcc/target-def.h index ef512f8904f..d5aa05ab158 100644 --- a/gcc/target-def.h +++ b/gcc/target-def.h @@ -1,5 +1,5 @@ /* Default initializers for a generic GCC target. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/target-globals.c b/gcc/target-globals.c index 9d223fcbed0..2cfe257d567 100644 --- a/gcc/target-globals.c +++ b/gcc/target-globals.c @@ -1,5 +1,5 @@ /* Target-dependent globals. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/target-globals.h b/gcc/target-globals.h index 04eba530abe..b84d2902d9c 100644 --- a/gcc/target-globals.h +++ b/gcc/target-globals.h @@ -1,5 +1,5 @@ /* Target-dependent globals. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/target-hooks-macros.h b/gcc/target-hooks-macros.h index 602b2a42d28..5cf4cb1093c 100644 --- a/gcc/target-hooks-macros.h +++ b/gcc/target-hooks-macros.h @@ -1,5 +1,5 @@ /* Common macros for target hook definitions. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/target.def b/gcc/target.def index 36039660f3e..3a64cd14302 100644 --- a/gcc/target.def +++ b/gcc/target.def @@ -1,5 +1,5 @@ /* Target hook definitions. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/target.h b/gcc/target.h index 5e6e68e5b32..7c28efad9b9 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -1,5 +1,5 @@ /* Data structure definitions for a generic GCC target. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/gcc/targhooks.c b/gcc/targhooks.c index c6a19a94c10..f3b5d564899 100644 --- a/gcc/targhooks.c +++ b/gcc/targhooks.c @@ -1,5 +1,5 @@ /* Default target hook functions. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/targhooks.h b/gcc/targhooks.h index 43600275c1b..9dd4c83d697 100644 --- a/gcc/targhooks.h +++ b/gcc/targhooks.h @@ -1,5 +1,5 @@ /* Default target hook functions. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 85d7c866e5e..4a31319270f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Richard Sandiford + + Update copyright years + 2014-01-02 Richard Sandiford * gcc.target/arc/arc.exp: Use the standard form for the copyright diff --git a/gcc/testsuite/README b/gcc/testsuite/README index c14b4d5cd0e..6e137c3bfd0 100644 --- a/gcc/testsuite/README +++ b/gcc/testsuite/README @@ -61,7 +61,7 @@ where testsuite directory. -Copyright (C) 1998-2013 Free Software Foundation, Inc. +Copyright (C) 1998-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/README.compat b/gcc/testsuite/README.compat index d24a08a6814..df75eff06fd 100644 --- a/gcc/testsuite/README.compat +++ b/gcc/testsuite/README.compat @@ -85,7 +85,7 @@ Janis Johnson, October 2002 -Copyright (C) 2002-2013 Free Software Foundation, Inc. +Copyright (C) 2002-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/README.gcc b/gcc/testsuite/README.gcc index d564bd14a59..1d6f4631d90 100644 --- a/gcc/testsuite/README.gcc +++ b/gcc/testsuite/README.gcc @@ -80,7 +80,7 @@ For execution tests, put them in execute. If a test does not fit into the torture framework, use the dg framework. -Copyright (C) 1997-2013 Free Software Foundation, Inc. +Copyright (C) 1997-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/config/default.exp b/gcc/testsuite/config/default.exp index d22df7f25b8..651993d7fec 100644 --- a/gcc/testsuite/config/default.exp +++ b/gcc/testsuite/config/default.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/README b/gcc/testsuite/g++.dg/README index 6ff70ce3e4e..998f8ece6bb 100644 --- a/gcc/testsuite/g++.dg/README +++ b/gcc/testsuite/g++.dg/README @@ -33,7 +33,7 @@ special Tests that need custom expect code to run them; see special/ecos.exp for an example. -Copyright (C) 2001-2013 Free Software Foundation, Inc. +Copyright (C) 2001-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/g++.dg/asan/asan.exp b/gcc/testsuite/g++.dg/asan/asan.exp index 499be05c3e0..30fbb1d91a8 100644 --- a/gcc/testsuite/g++.dg/asan/asan.exp +++ b/gcc/testsuite/g++.dg/asan/asan.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/g++.dg/bprob/bprob.exp b/gcc/testsuite/g++.dg/bprob/bprob.exp index 8e6d13bbd8c..8b68b859ddf 100644 --- a/gcc/testsuite/g++.dg/bprob/bprob.exp +++ b/gcc/testsuite/g++.dg/bprob/bprob.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/charset/charset.exp b/gcc/testsuite/g++.dg/charset/charset.exp index bea92fb11dd..3ca071eea5e 100644 --- a/gcc/testsuite/g++.dg/charset/charset.exp +++ b/gcc/testsuite/g++.dg/charset/charset.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp b/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp index 2f7fcb763ae..e201fd227cf 100644 --- a/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp +++ b/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/compat/break/README b/gcc/testsuite/g++.dg/compat/break/README index 9100c8fa0a3..adbaf4fced9 100644 --- a/gcc/testsuite/g++.dg/compat/break/README +++ b/gcc/testsuite/g++.dg/compat/break/README @@ -11,7 +11,7 @@ ABI-compliant should also be covered by a test for -Wabi to ensure that there is a warning for the construct. -Copyright (C) 2002-2013 Free Software Foundation, Inc. +Copyright (C) 2002-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/g++.dg/compat/compat.exp b/gcc/testsuite/g++.dg/compat/compat.exp index d4e9f73217f..1a7cdb8396a 100644 --- a/gcc/testsuite/g++.dg/compat/compat.exp +++ b/gcc/testsuite/g++.dg/compat/compat.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/compat/struct-layout-1.exp b/gcc/testsuite/g++.dg/compat/struct-layout-1.exp index 04232160fe2..13211c2fa17 100644 --- a/gcc/testsuite/g++.dg/compat/struct-layout-1.exp +++ b/gcc/testsuite/g++.dg/compat/struct-layout-1.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/debug/debug.exp b/gcc/testsuite/g++.dg/debug/debug.exp index 75d19a442ba..3840f02e6c7 100644 --- a/gcc/testsuite/g++.dg/debug/debug.exp +++ b/gcc/testsuite/g++.dg/debug/debug.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp b/gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp index 027a5158e2e..d947a0eaf5b 100644 --- a/gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp +++ b/gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/dfp/dfp.exp b/gcc/testsuite/g++.dg/dfp/dfp.exp index 3c60373fefc..fceb12605a1 100644 --- a/gcc/testsuite/g++.dg/dfp/dfp.exp +++ b/gcc/testsuite/g++.dg/dfp/dfp.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/dg.exp b/gcc/testsuite/g++.dg/dg.exp index c90a7e6d1a5..aeae8f373b1 100644 --- a/gcc/testsuite/g++.dg/dg.exp +++ b/gcc/testsuite/g++.dg/dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2000-2013 Free Software Foundation, Inc. +# Copyright (C) 2000-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/gcov/gcov.exp b/gcc/testsuite/g++.dg/gcov/gcov.exp index ec0dfcf3421..892baa8274b 100644 --- a/gcc/testsuite/g++.dg/gcov/gcov.exp +++ b/gcc/testsuite/g++.dg/gcov/gcov.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/gomp/gomp.exp b/gcc/testsuite/g++.dg/gomp/gomp.exp index e783bdb0550..bcb9ae3859e 100644 --- a/gcc/testsuite/g++.dg/gomp/gomp.exp +++ b/gcc/testsuite/g++.dg/gomp/gomp.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/g++.dg/graphite/graphite.exp b/gcc/testsuite/g++.dg/graphite/graphite.exp index 75e91204ace..7079634e70b 100644 --- a/gcc/testsuite/g++.dg/graphite/graphite.exp +++ b/gcc/testsuite/g++.dg/graphite/graphite.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/lto/lto.exp b/gcc/testsuite/g++.dg/lto/lto.exp index 0c6025dd962..9145af78248 100644 --- a/gcc/testsuite/g++.dg/lto/lto.exp +++ b/gcc/testsuite/g++.dg/lto/lto.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/pch/pch.exp b/gcc/testsuite/g++.dg/pch/pch.exp index db67c24f5b9..dd7466354bd 100644 --- a/gcc/testsuite/g++.dg/pch/pch.exp +++ b/gcc/testsuite/g++.dg/pch/pch.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/plugin/plugin.exp b/gcc/testsuite/g++.dg/plugin/plugin.exp index c26b8794e10..e4ff52f6991 100644 --- a/gcc/testsuite/g++.dg/plugin/plugin.exp +++ b/gcc/testsuite/g++.dg/plugin/plugin.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp b/gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp index 8f56f267ce8..b07fbb08c67 100644 --- a/gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp +++ b/gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/special/ecos.exp b/gcc/testsuite/g++.dg/special/ecos.exp index 1e73e8afda8..6b0f5d5aee9 100644 --- a/gcc/testsuite/g++.dg/special/ecos.exp +++ b/gcc/testsuite/g++.dg/special/ecos.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/tls/tls.exp b/gcc/testsuite/g++.dg/tls/tls.exp index a52040d2d38..279fdfdcb7d 100644 --- a/gcc/testsuite/g++.dg/tls/tls.exp +++ b/gcc/testsuite/g++.dg/tls/tls.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/tm/tm.exp b/gcc/testsuite/g++.dg/tm/tm.exp index 42ecf545a69..1d1dc3c7995 100644 --- a/gcc/testsuite/g++.dg/tm/tm.exp +++ b/gcc/testsuite/g++.dg/tm/tm.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp b/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp index e6120194819..ad08fc08a3d 100644 --- a/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp +++ b/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp b/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp index a67484b0f9d..2c96ee38c1f 100644 --- a/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp +++ b/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.dg/tsan/tsan.exp b/gcc/testsuite/g++.dg/tsan/tsan.exp index 9bcf6cc8a1d..14ff02e5571 100644 --- a/gcc/testsuite/g++.dg/tsan/tsan.exp +++ b/gcc/testsuite/g++.dg/tsan/tsan.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/g++.dg/ubsan/ubsan.exp b/gcc/testsuite/g++.dg/ubsan/ubsan.exp index b2651a36a43..7d5e9ba72e1 100644 --- a/gcc/testsuite/g++.dg/ubsan/ubsan.exp +++ b/gcc/testsuite/g++.dg/ubsan/ubsan.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/g++.dg/vect/vect.exp b/gcc/testsuite/g++.dg/vect/vect.exp index 05b93b1916d..2bac8105d83 100644 --- a/gcc/testsuite/g++.dg/vect/vect.exp +++ b/gcc/testsuite/g++.dg/vect/vect.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/README b/gcc/testsuite/g++.old-deja/g++.brendan/README index 83015b5ea50..ba3bded1c2f 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/README +++ b/gcc/testsuite/g++.old-deja/g++.brendan/README @@ -40,7 +40,7 @@ visibility - access control and visibility checking warnings - warning messages -Copyright (C) 1997-2013 Free Software Foundation, Inc. +Copyright (C) 1997-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/README b/gcc/testsuite/g++.old-deja/g++.robertl/README index c6a7c362f83..b6f04a5455d 100644 --- a/gcc/testsuite/g++.old-deja/g++.robertl/README +++ b/gcc/testsuite/g++.old-deja/g++.robertl/README @@ -18,7 +18,7 @@ We'll do better now. Robert Lipe -Copyright (C) 1998-2013 Free Software Foundation, Inc. +Copyright (C) 1998-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/g++.old-deja/old-deja.exp b/gcc/testsuite/g++.old-deja/old-deja.exp index 39f8ffdaf36..ac3ed7c2ab1 100644 --- a/gcc/testsuite/g++.old-deja/old-deja.exp +++ b/gcc/testsuite/g++.old-deja/old-deja.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1988-2013 Free Software Foundation, Inc. +# Copyright (C) 1988-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.c-torture/compile/compile.exp b/gcc/testsuite/gcc.c-torture/compile/compile.exp index 82c0414f862..5fd47015e13 100644 --- a/gcc/testsuite/gcc.c-torture/compile/compile.exp +++ b/gcc/testsuite/gcc.c-torture/compile/compile.exp @@ -1,5 +1,5 @@ # Expect driver script for GCC Regression Tests -# Copyright (C) 1993-2013 Free Software Foundation, Inc. +# Copyright (C) 1993-2014 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp b/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp index d157fe392f5..147a1d1c430 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/gcc.c-torture/execute/execute.exp b/gcc/testsuite/gcc.c-torture/execute/execute.exp index e87ab518c6e..9f29ef2dc45 100644 --- a/gcc/testsuite/gcc.c-torture/execute/execute.exp +++ b/gcc/testsuite/gcc.c-torture/execute/execute.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1991-2013 Free Software Foundation, Inc. +# Copyright (C) 1991-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp index 9ad2acc08d9..33b1264fb30 100644 --- a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp +++ b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp @@ -1,6 +1,6 @@ # # Expect driver script for GCC Regression Tests -# Copyright (C) 1993-2013 Free Software Foundation, Inc. +# Copyright (C) 1993-2014 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp b/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp index bb0dd90034b..f9b7e8d8d11 100644 --- a/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp +++ b/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp @@ -1,6 +1,6 @@ # # Expect driver script for GCC Regression Tests -# Copyright (C) 1993-2013 Free Software Foundation, Inc. +# Copyright (C) 1993-2014 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/README b/gcc/testsuite/gcc.dg/README index bcecb36ca74..98c78f70945 100644 --- a/gcc/testsuite/gcc.dg/README +++ b/gcc/testsuite/gcc.dg/README @@ -16,7 +16,7 @@ Notes for testsuite/gcc.dg. 4) Send bugs, comments, etc. to dje@cygnus.com. -Copyright (C) 1997-2013 Free Software Foundation, Inc. +Copyright (C) 1997-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/gcc.dg/asan/asan.exp b/gcc/testsuite/gcc.dg/asan/asan.exp index 30ac3a450e8..9be07fca14b 100644 --- a/gcc/testsuite/gcc.dg/asan/asan.exp +++ b/gcc/testsuite/gcc.dg/asan/asan.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/gcc.dg/atomic/atomic.exp b/gcc/testsuite/gcc.dg/atomic/atomic.exp index ac2ca729d1d..9200e3198bd 100644 --- a/gcc/testsuite/gcc.dg/atomic/atomic.exp +++ b/gcc/testsuite/gcc.dg/atomic/atomic.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/gcc.dg/autopar/autopar.exp b/gcc/testsuite/gcc.dg/autopar/autopar.exp index 93df1354888..c20cc3d47f1 100644 --- a/gcc/testsuite/gcc.dg/autopar/autopar.exp +++ b/gcc/testsuite/gcc.dg/autopar/autopar.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/charset/charset.exp b/gcc/testsuite/gcc.dg/charset/charset.exp index 760d816628c..b75dfabadc6 100644 --- a/gcc/testsuite/gcc.dg/charset/charset.exp +++ b/gcc/testsuite/gcc.dg/charset/charset.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp b/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp index 51c715df2e1..c370ec645e6 100644 --- a/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp +++ b/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/compat/compat.exp b/gcc/testsuite/gcc.dg/compat/compat.exp index 479575fc0bd..ffb742ed31c 100644 --- a/gcc/testsuite/gcc.dg/compat/compat.exp +++ b/gcc/testsuite/gcc.dg/compat/compat.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp b/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp index aa9e35e106a..e49cc714cd2 100644 --- a/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp +++ b/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/cpp/assembl2.S b/gcc/testsuite/gcc.dg/cpp/assembl2.S index e9cd8b6890f..848024cff10 100644 --- a/gcc/testsuite/gcc.dg/cpp/assembl2.S +++ b/gcc/testsuite/gcc.dg/cpp/assembl2.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2000-2013 Free Software Foundation, Inc. */ +/* Copyright (C) 2000-2014 Free Software Foundation, Inc. */ /* { dg-do preprocess } */ diff --git a/gcc/testsuite/gcc.dg/cpp/cpp.exp b/gcc/testsuite/gcc.dg/cpp/cpp.exp index 2f96a5fdb51..7dd65e569d1 100644 --- a/gcc/testsuite/gcc.dg/cpp/cpp.exp +++ b/gcc/testsuite/gcc.dg/cpp/cpp.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/cpp/trad/trad.exp b/gcc/testsuite/gcc.dg/cpp/trad/trad.exp index b8723c3b813..c00a17c9bd9 100644 --- a/gcc/testsuite/gcc.dg/cpp/trad/trad.exp +++ b/gcc/testsuite/gcc.dg/cpp/trad/trad.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/debug/debug.exp b/gcc/testsuite/gcc.dg/debug/debug.exp index c45569439f7..e25d2d2b072 100644 --- a/gcc/testsuite/gcc.dg/debug/debug.exp +++ b/gcc/testsuite/gcc.dg/debug/debug.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp index 824d9947f09..a8ba0f48ef7 100644 --- a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/dfp/dfp.exp b/gcc/testsuite/gcc.dg/dfp/dfp.exp index fc7966e81a0..f96f1debd48 100644 --- a/gcc/testsuite/gcc.dg/dfp/dfp.exp +++ b/gcc/testsuite/gcc.dg/dfp/dfp.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/dg.exp b/gcc/testsuite/gcc.dg/dg.exp index 8a5cfca4875..7a56bdd29a4 100644 --- a/gcc/testsuite/gcc.dg/dg.exp +++ b/gcc/testsuite/gcc.dg/dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp b/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp index 49dbafe06c4..77e7b7201da 100644 --- a/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp +++ b/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/format/format.exp b/gcc/testsuite/gcc.dg/format/format.exp index 4191b4a73dc..9d8a289a2de 100644 --- a/gcc/testsuite/gcc.dg/format/format.exp +++ b/gcc/testsuite/gcc.dg/format/format.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/gomp/gomp.exp b/gcc/testsuite/gcc.dg/gomp/gomp.exp index cc2cd8ed089..e6e849bd2e7 100644 --- a/gcc/testsuite/gcc.dg/gomp/gomp.exp +++ b/gcc/testsuite/gcc.dg/gomp/gomp.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/gcc.dg/graphite/graphite.exp b/gcc/testsuite/gcc.dg/graphite/graphite.exp index 72db6dc4d5b..615fc258a91 100644 --- a/gcc/testsuite/gcc.dg/graphite/graphite.exp +++ b/gcc/testsuite/gcc.dg/graphite/graphite.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/ipa/ipa.exp b/gcc/testsuite/gcc.dg/ipa/ipa.exp index 3e0d458034c..3c3c600aef3 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa.exp +++ b/gcc/testsuite/gcc.dg/ipa/ipa.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/lto/lto.exp b/gcc/testsuite/gcc.dg/lto/lto.exp index 00039dcff79..25862978bda 100644 --- a/gcc/testsuite/gcc.dg/lto/lto.exp +++ b/gcc/testsuite/gcc.dg/lto/lto.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/noncompile/noncompile.exp b/gcc/testsuite/gcc.dg/noncompile/noncompile.exp index 6d11bb064a3..15460ef2bf0 100644 --- a/gcc/testsuite/gcc.dg/noncompile/noncompile.exp +++ b/gcc/testsuite/gcc.dg/noncompile/noncompile.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/pch/pch.exp b/gcc/testsuite/gcc.dg/pch/pch.exp index 7bf64df172c..818004db879 100644 --- a/gcc/testsuite/gcc.dg/pch/pch.exp +++ b/gcc/testsuite/gcc.dg/pch/pch.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/plugin/plugin.exp b/gcc/testsuite/gcc.dg/plugin/plugin.exp index 92f1f3a6069..03ca4d145b2 100644 --- a/gcc/testsuite/gcc.dg/plugin/plugin.exp +++ b/gcc/testsuite/gcc.dg/plugin/plugin.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp b/gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp index 108d6061b46..a4c2302d48a 100644 --- a/gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp +++ b/gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/special/mips-abi.exp b/gcc/testsuite/gcc.dg/special/mips-abi.exp index fe406be392e..0eba278c519 100644 --- a/gcc/testsuite/gcc.dg/special/mips-abi.exp +++ b/gcc/testsuite/gcc.dg/special/mips-abi.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/special/special.exp b/gcc/testsuite/gcc.dg/special/special.exp index 289bcdb5f0f..637f2a407bb 100644 --- a/gcc/testsuite/gcc.dg/special/special.exp +++ b/gcc/testsuite/gcc.dg/special/special.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/tls/tls.exp b/gcc/testsuite/gcc.dg/tls/tls.exp index 7d4a10e33c6..1ccdbab9ef9 100644 --- a/gcc/testsuite/gcc.dg/tls/tls.exp +++ b/gcc/testsuite/gcc.dg/tls/tls.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/tm/tm.exp b/gcc/testsuite/gcc.dg/tm/tm.exp index b90fb0d79f1..ce1ec0c3f55 100644 --- a/gcc/testsuite/gcc.dg/tm/tm.exp +++ b/gcc/testsuite/gcc.dg/tm/tm.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp b/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp index 2538797d873..8ef84fe353b 100644 --- a/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp +++ b/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/torture/tls/tls.exp b/gcc/testsuite/gcc.dg/torture/tls/tls.exp index a71ed9da360..e8404232b41 100644 --- a/gcc/testsuite/gcc.dg/torture/tls/tls.exp +++ b/gcc/testsuite/gcc.dg/torture/tls/tls.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp b/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp index 141959aae8a..454dfaeed2b 100644 --- a/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp +++ b/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp b/gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp index 220290a2127..1dd660715cb 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp +++ b/gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/tsan/tsan.exp b/gcc/testsuite/gcc.dg/tsan/tsan.exp index 2bf535a870c..f080195b739 100644 --- a/gcc/testsuite/gcc.dg/tsan/tsan.exp +++ b/gcc/testsuite/gcc.dg/tsan/tsan.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/gcc.dg/ubsan/ubsan.exp b/gcc/testsuite/gcc.dg/ubsan/ubsan.exp index d077d1da8e2..962363b614a 100644 --- a/gcc/testsuite/gcc.dg/ubsan/ubsan.exp +++ b/gcc/testsuite/gcc.dg/ubsan/ubsan.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp b/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp index 93ad2759468..80c6d299c3c 100644 --- a/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp +++ b/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp index f77caec669f..73e78d9e25c 100644 --- a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp +++ b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp b/gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp index b56e7c8a064..550ce84ecee 100644 --- a/gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp +++ b/gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp b/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp index 7afbf6a5238..2c30019a177 100644 --- a/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp +++ b/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/vect/vect.exp b/gcc/testsuite/gcc.dg/vect/vect.exp index 796f83ea4e0..b0b7e2237c3 100644 --- a/gcc/testsuite/gcc.dg/vect/vect.exp +++ b/gcc/testsuite/gcc.dg/vect/vect.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/vmx/vmx.exp b/gcc/testsuite/gcc.dg/vmx/vmx.exp index 095e12fc1e4..b3c73e85945 100644 --- a/gcc/testsuite/gcc.dg/vmx/vmx.exp +++ b/gcc/testsuite/gcc.dg/vmx/vmx.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/vxworks/vxworks.exp b/gcc/testsuite/gcc.dg/vxworks/vxworks.exp index b8c1b564f1e..43189cef476 100644 --- a/gcc/testsuite/gcc.dg/vxworks/vxworks.exp +++ b/gcc/testsuite/gcc.dg/vxworks/vxworks.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/weak/weak.exp b/gcc/testsuite/gcc.dg/weak/weak.exp index 5590033467d..8d0eaaab6ed 100644 --- a/gcc/testsuite/gcc.dg/weak/weak.exp +++ b/gcc/testsuite/gcc.dg/weak/weak.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/acker1.exp b/gcc/testsuite/gcc.misc-tests/acker1.exp index 2f97fb73c58..ca035a8f80d 100644 --- a/gcc/testsuite/gcc.misc-tests/acker1.exp +++ b/gcc/testsuite/gcc.misc-tests/acker1.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/arm-isr.exp b/gcc/testsuite/gcc.misc-tests/arm-isr.exp index 9ee904503db..6685e67e3ed 100644 --- a/gcc/testsuite/gcc.misc-tests/arm-isr.exp +++ b/gcc/testsuite/gcc.misc-tests/arm-isr.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/bprob.exp b/gcc/testsuite/gcc.misc-tests/bprob.exp index 5e559b36967..6c0c068ebe7 100644 --- a/gcc/testsuite/gcc.misc-tests/bprob.exp +++ b/gcc/testsuite/gcc.misc-tests/bprob.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/dectest.exp b/gcc/testsuite/gcc.misc-tests/dectest.exp index 7027551da66..56734cc7eb2 100644 --- a/gcc/testsuite/gcc.misc-tests/dectest.exp +++ b/gcc/testsuite/gcc.misc-tests/dectest.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/dhry.exp b/gcc/testsuite/gcc.misc-tests/dhry.exp index 53926c4216d..f698d6ba85d 100644 --- a/gcc/testsuite/gcc.misc-tests/dhry.exp +++ b/gcc/testsuite/gcc.misc-tests/dhry.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/gcov.exp b/gcc/testsuite/gcc.misc-tests/gcov.exp index 5478cbf232d..8132e7cdc87 100644 --- a/gcc/testsuite/gcc.misc-tests/gcov.exp +++ b/gcc/testsuite/gcc.misc-tests/gcov.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/help.exp b/gcc/testsuite/gcc.misc-tests/help.exp index 20153d12496..e18912cfb52 100644 --- a/gcc/testsuite/gcc.misc-tests/help.exp +++ b/gcc/testsuite/gcc.misc-tests/help.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp b/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp index 0d3952345d1..83e1045a962 100644 --- a/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp +++ b/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/linkage.exp b/gcc/testsuite/gcc.misc-tests/linkage.exp index 469020ed6a2..eeef6c25a1b 100644 --- a/gcc/testsuite/gcc.misc-tests/linkage.exp +++ b/gcc/testsuite/gcc.misc-tests/linkage.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1988-2013 Free Software Foundation, Inc. +# Copyright (C) 1988-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/matrix1.exp b/gcc/testsuite/gcc.misc-tests/matrix1.exp index 96b5bcaeb02..fe06b1f9dc0 100644 --- a/gcc/testsuite/gcc.misc-tests/matrix1.exp +++ b/gcc/testsuite/gcc.misc-tests/matrix1.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/mg-2.exp b/gcc/testsuite/gcc.misc-tests/mg-2.exp index 776d829f9e9..f2375c870b8 100644 --- a/gcc/testsuite/gcc.misc-tests/mg-2.exp +++ b/gcc/testsuite/gcc.misc-tests/mg-2.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/mg.exp b/gcc/testsuite/gcc.misc-tests/mg.exp index 789a1088ae5..ad28ee78ef3 100644 --- a/gcc/testsuite/gcc.misc-tests/mg.exp +++ b/gcc/testsuite/gcc.misc-tests/mg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/options.exp b/gcc/testsuite/gcc.misc-tests/options.exp index e255e16a548..bb619dc2b35 100644 --- a/gcc/testsuite/gcc.misc-tests/options.exp +++ b/gcc/testsuite/gcc.misc-tests/options.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/sieve.exp b/gcc/testsuite/gcc.misc-tests/sieve.exp index c473e7d42fd..7007b644c07 100644 --- a/gcc/testsuite/gcc.misc-tests/sieve.exp +++ b/gcc/testsuite/gcc.misc-tests/sieve.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.misc-tests/sort2.exp b/gcc/testsuite/gcc.misc-tests/sort2.exp index b8e461fbbb5..28bdf1f84d0 100644 --- a/gcc/testsuite/gcc.misc-tests/sort2.exp +++ b/gcc/testsuite/gcc.misc-tests/sort2.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp b/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp index b069c0a4554..195f977c2dc 100644 --- a/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp +++ b/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # Contributed by ARM Ltd. # # This file is part of GCC. diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64.exp b/gcc/testsuite/gcc.target/aarch64/aarch64.exp index 52031d414ff..2cd3b805b75 100644 --- a/gcc/testsuite/gcc.target/aarch64/aarch64.exp +++ b/gcc/testsuite/gcc.target/aarch64/aarch64.exp @@ -1,5 +1,5 @@ # Specific regression driver for AArch64. -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # Contributed by ARM Ltd. # # This file is part of GCC. diff --git a/gcc/testsuite/gcc.target/alpha/alpha.exp b/gcc/testsuite/gcc.target/alpha/alpha.exp index dcbc23c4135..bd107c8df48 100644 --- a/gcc/testsuite/gcc.target/alpha/alpha.exp +++ b/gcc/testsuite/gcc.target/alpha/alpha.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/arc/arc.exp b/gcc/testsuite/gcc.target/arc/arc.exp index a8b9641b411..ec7c7381ca3 100644 --- a/gcc/testsuite/gcc.target/arc/arc.exp +++ b/gcc/testsuite/gcc.target/arc/arc.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2012 Free Software Foundation, Inc. +# Copyright (C) 2007-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp b/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp index 4c04b301cc2..746429dadf6 100644 --- a/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp +++ b/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/arm/acle/acle.exp b/gcc/testsuite/gcc.target/arm/acle/acle.exp index a1822a199d3..c8622697ee3 100644 --- a/gcc/testsuite/gcc.target/arm/acle/acle.exp +++ b/gcc/testsuite/gcc.target/arm/acle/acle.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/arm/arm.exp b/gcc/testsuite/gcc.target/arm/arm.exp index fa7ce036253..54ff2370ab0 100644 --- a/gcc/testsuite/gcc.target/arm/arm.exp +++ b/gcc/testsuite/gcc.target/arm/arm.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/arm/neon/neon.exp b/gcc/testsuite/gcc.target/arm/neon/neon.exp index 4c04b301cc2..746429dadf6 100644 --- a/gcc/testsuite/gcc.target/arm/neon/neon.exp +++ b/gcc/testsuite/gcc.target/arm/neon/neon.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/avr/avr.exp b/gcc/testsuite/gcc.target/avr/avr.exp index 5bd182e652b..86a541a0993 100644 --- a/gcc/testsuite/gcc.target/avr/avr.exp +++ b/gcc/testsuite/gcc.target/avr/avr.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/avr/torture/avr-torture.exp b/gcc/testsuite/gcc.target/avr/torture/avr-torture.exp index c9329879d58..3e5fdfbd426 100644 --- a/gcc/testsuite/gcc.target/avr/torture/avr-torture.exp +++ b/gcc/testsuite/gcc.target/avr/torture/avr-torture.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/bfin/bfin.exp b/gcc/testsuite/gcc.target/bfin/bfin.exp index 919c66b83c7..a1b6707e299 100644 --- a/gcc/testsuite/gcc.target/bfin/bfin.exp +++ b/gcc/testsuite/gcc.target/bfin/bfin.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp b/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp index e12ac909cab..6ab9929e484 100644 --- a/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp +++ b/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/cris/cris.exp b/gcc/testsuite/gcc.target/cris/cris.exp index deb57d14ff2..4a04d1920c8 100644 --- a/gcc/testsuite/gcc.target/cris/cris.exp +++ b/gcc/testsuite/gcc.target/cris/cris.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp b/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp index 4eec2eb829e..cf517fcaf3a 100644 --- a/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp +++ b/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/epiphany/epiphany.exp b/gcc/testsuite/gcc.target/epiphany/epiphany.exp index b2e4295c4b7..59226ae158e 100644 --- a/gcc/testsuite/gcc.target/epiphany/epiphany.exp +++ b/gcc/testsuite/gcc.target/epiphany/epiphany.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/frv/frv.exp b/gcc/testsuite/gcc.target/frv/frv.exp index 5410b72ea92..b3dcc25915a 100644 --- a/gcc/testsuite/gcc.target/frv/frv.exp +++ b/gcc/testsuite/gcc.target/frv/frv.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/gcc.target/h8300/h8300.exp b/gcc/testsuite/gcc.target/h8300/h8300.exp index 474fc454ce3..8523a128572 100644 --- a/gcc/testsuite/gcc.target/h8300/h8300.exp +++ b/gcc/testsuite/gcc.target/h8300/h8300.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -39,7 +39,7 @@ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ # All done. dg-finish -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/i386/i386.exp b/gcc/testsuite/gcc.target/i386/i386.exp index a383940e715..080e302b782 100644 --- a/gcc/testsuite/gcc.target/i386/i386.exp +++ b/gcc/testsuite/gcc.target/i386/i386.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp b/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp index bea35516c73..112fb33add1 100644 --- a/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp +++ b/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp b/gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp index db7a49427b5..0e0d55bf7bc 100644 --- a/gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp +++ b/gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/ia64/ia64.exp b/gcc/testsuite/gcc.target/ia64/ia64.exp index 329fcac59aa..d70e990c392 100644 --- a/gcc/testsuite/gcc.target/ia64/ia64.exp +++ b/gcc/testsuite/gcc.target/ia64/ia64.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/m68k/m68k.exp b/gcc/testsuite/gcc.target/m68k/m68k.exp index 2ba17b9622e..a917898ab30 100644 --- a/gcc/testsuite/gcc.target/m68k/m68k.exp +++ b/gcc/testsuite/gcc.target/m68k/m68k.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/microblaze/microblaze.exp b/gcc/testsuite/gcc.target/microblaze/microblaze.exp index 7766297bd7e..f3431814159 100644 --- a/gcc/testsuite/gcc.target/microblaze/microblaze.exp +++ b/gcc/testsuite/gcc.target/microblaze/microblaze.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp b/gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp index 54631ad4c7f..cfa64b1929b 100644 --- a/gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp +++ b/gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/gcc.target/mips/mips-nonpic/README b/gcc/testsuite/gcc.target/mips/mips-nonpic/README index ddffaa59f0d..b7a46e4b006 100644 --- a/gcc/testsuite/gcc.target/mips/mips-nonpic/README +++ b/gcc/testsuite/gcc.target/mips/mips-nonpic/README @@ -20,7 +20,7 @@ main-15.c address and call address taken only Neither (* But creating a PLT entr main-16.c address and call address and call PLT entry -Copyright (C) 2008-2013 Free Software Foundation, Inc. +Copyright (C) 2008-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp b/gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp index 27c9f1d10cc..d99b3d183e8 100644 --- a/gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp +++ b/gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/mips/mips.exp b/gcc/testsuite/gcc.target/mips/mips.exp index 1f0d0d6223f..8c72cff7223 100644 --- a/gcc/testsuite/gcc.target/mips/mips.exp +++ b/gcc/testsuite/gcc.target/mips/mips.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/nds32/nds32.exp b/gcc/testsuite/gcc.target/nds32/nds32.exp index e88d0222729..14665653a93 100644 --- a/gcc/testsuite/gcc.target/nds32/nds32.exp +++ b/gcc/testsuite/gcc.target/nds32/nds32.exp @@ -1,5 +1,5 @@ # Target test cases of Andes NDS32 cpu for GNU compiler -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # Contributed by Andes Technology Corporation. # # This file is part of GCC. diff --git a/gcc/testsuite/gcc.target/nios2/nios2.exp b/gcc/testsuite/gcc.target/nios2/nios2.exp index 558da111e28..4f027048a9f 100644 --- a/gcc/testsuite/gcc.target/nios2/nios2.exp +++ b/gcc/testsuite/gcc.target/nios2/nios2.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/powerpc/powerpc.exp b/gcc/testsuite/gcc.target/powerpc/powerpc.exp index 355a397e408..bf270d58d11 100644 --- a/gcc/testsuite/gcc.target/powerpc/powerpc.exp +++ b/gcc/testsuite/gcc.target/powerpc/powerpc.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/rx/rx.exp b/gcc/testsuite/gcc.target/rx/rx.exp index 9eaf2b86613..159add18bb7 100644 --- a/gcc/testsuite/gcc.target/rx/rx.exp +++ b/gcc/testsuite/gcc.target/rx/rx.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/s390/s390.exp b/gcc/testsuite/gcc.target/s390/s390.exp index f7f9ad25607..1b6d94a2313 100644 --- a/gcc/testsuite/gcc.target/s390/s390.exp +++ b/gcc/testsuite/gcc.target/s390/s390.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/sh/sh.exp b/gcc/testsuite/gcc.target/sh/sh.exp index 0ee70c27e1a..ac428cde5b3 100644 --- a/gcc/testsuite/gcc.target/sh/sh.exp +++ b/gcc/testsuite/gcc.target/sh/sh.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp b/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp index 6e3d0981fde..8fef587f827 100644 --- a/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp +++ b/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/sparc/sparc.exp b/gcc/testsuite/gcc.target/sparc/sparc.exp index 6ec8b7fb22c..e8b59fb8616 100644 --- a/gcc/testsuite/gcc.target/sparc/sparc.exp +++ b/gcc/testsuite/gcc.target/sparc/sparc.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/spu/ea/ea.exp b/gcc/testsuite/gcc.target/spu/ea/ea.exp index 69f796da9ce..2e04f9d77b2 100644 --- a/gcc/testsuite/gcc.target/spu/ea/ea.exp +++ b/gcc/testsuite/gcc.target/spu/ea/ea.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/spu/spu.exp b/gcc/testsuite/gcc.target/spu/spu.exp index bddd9ea6059..ea99c58024e 100644 --- a/gcc/testsuite/gcc.target/spu/spu.exp +++ b/gcc/testsuite/gcc.target/spu/spu.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp b/gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp index d005a1db194..e3e99acd6a0 100644 --- a/gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp +++ b/gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/tic6x/tic6x.exp b/gcc/testsuite/gcc.target/tic6x/tic6x.exp index 60245e3a00a..52e5b83fb3f 100644 --- a/gcc/testsuite/gcc.target/tic6x/tic6x.exp +++ b/gcc/testsuite/gcc.target/tic6x/tic6x.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/vax/vax.exp b/gcc/testsuite/gcc.target/vax/vax.exp index 2aec4eec192..9a6148498c1 100644 --- a/gcc/testsuite/gcc.target/vax/vax.exp +++ b/gcc/testsuite/gcc.target/vax/vax.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/x86_64/abi/README.gcc b/gcc/testsuite/gcc.target/x86_64/abi/README.gcc index b3116a3cd46..e668a4dd8c3 100644 --- a/gcc/testsuite/gcc.target/x86_64/abi/README.gcc +++ b/gcc/testsuite/gcc.target/x86_64/abi/README.gcc @@ -18,7 +18,7 @@ The current maintainer is: matz@suse.de -Copyright (C) 2005-2013 Free Software Foundation, Inc. +Copyright (C) 2005-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp b/gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp index 2a6fcf06071..5ecfe4be8db 100644 --- a/gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp +++ b/gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp b/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp index 5d8a844cc58..d6fc1874f18 100644 --- a/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp +++ b/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp index 02143bef028..cef6fa14154 100644 --- a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp +++ b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp b/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp index c13961ab78a..930942b046f 100644 --- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp +++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp b/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp index 6d09fb705c4..c6ed370dc1c 100644 --- a/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp +++ b/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/gcc.test-framework/README b/gcc/testsuite/gcc.test-framework/README index fa649d538a7..49446c18077 100644 --- a/gcc/testsuite/gcc.test-framework/README +++ b/gcc/testsuite/gcc.test-framework/README @@ -25,7 +25,7 @@ The awk script prints unexpected results followed by the number of tests that passed and failed. -Copyright (C) 2005-2013 Free Software Foundation, Inc. +Copyright (C) 2005-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/gcc.test-framework/gen_directive_tests b/gcc/testsuite/gcc.test-framework/gen_directive_tests index 84095f3ae8b..e247fe83b5f 100755 --- a/gcc/testsuite/gcc.test-framework/gen_directive_tests +++ b/gcc/testsuite/gcc.test-framework/gen_directive_tests @@ -14,7 +14,7 @@ # This script has evolved and could be rewritten to be more compact. # # -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.test-framework/test-framework.awk b/gcc/testsuite/gcc.test-framework/test-framework.awk index 0cf29ff2cbc..7716cc064ed 100644 --- a/gcc/testsuite/gcc.test-framework/test-framework.awk +++ b/gcc/testsuite/gcc.test-framework/test-framework.awk @@ -3,7 +3,7 @@ # of passing tests. # # -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.test-framework/test-framework.exp b/gcc/testsuite/gcc.test-framework/test-framework.exp index b01e8044801..7fbfecf37b2 100644 --- a/gcc/testsuite/gcc.test-framework/test-framework.exp +++ b/gcc/testsuite/gcc.test-framework/test-framework.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gfortran.dg/coarray/caf.exp b/gcc/testsuite/gfortran.dg/coarray/caf.exp index 61bb6c1ab95..011b5c9d612 100644 --- a/gcc/testsuite/gfortran.dg/coarray/caf.exp +++ b/gcc/testsuite/gfortran.dg/coarray/caf.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gfortran.dg/debug/debug.exp b/gcc/testsuite/gfortran.dg/debug/debug.exp index 0d78414dc1b..d434750762a 100644 --- a/gcc/testsuite/gfortran.dg/debug/debug.exp +++ b/gcc/testsuite/gfortran.dg/debug/debug.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This file is part of GCC. # diff --git a/gcc/testsuite/gfortran.dg/dg.exp b/gcc/testsuite/gfortran.dg/dg.exp index 795ac8ee6b8..3019951e3fa 100644 --- a/gcc/testsuite/gfortran.dg/dg.exp +++ b/gcc/testsuite/gfortran.dg/dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gfortran.dg/g77/README b/gcc/testsuite/gfortran.dg/g77/README index 16fad09a8e4..f0c34c0fed4 100644 --- a/gcc/testsuite/gfortran.dg/g77/README +++ b/gcc/testsuite/gfortran.dg/g77/README @@ -201,7 +201,7 @@ check0.f Y select_no_compile.f Y -Copyright (C) 2004-2013 Free Software Foundation, Inc. +Copyright (C) 2004-2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/testsuite/gfortran.dg/gomp/gomp.exp b/gcc/testsuite/gfortran.dg/gomp/gomp.exp index a8d32457319..cb2e8a7247c 100644 --- a/gcc/testsuite/gfortran.dg/gomp/gomp.exp +++ b/gcc/testsuite/gfortran.dg/gomp/gomp.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2005-2013 Free Software Foundation, Inc. +# Copyright (C) 2005-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/gfortran.dg/graphite/graphite.exp b/gcc/testsuite/gfortran.dg/graphite/graphite.exp index b6f7bc317e8..c3aad13b766 100644 --- a/gcc/testsuite/gfortran.dg/graphite/graphite.exp +++ b/gcc/testsuite/gfortran.dg/graphite/graphite.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gfortran.dg/lto/lto.exp b/gcc/testsuite/gfortran.dg/lto/lto.exp index d158461d026..b848f9fdf3b 100644 --- a/gcc/testsuite/gfortran.dg/lto/lto.exp +++ b/gcc/testsuite/gfortran.dg/lto/lto.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gfortran.dg/vect/vect.exp b/gcc/testsuite/gfortran.dg/vect/vect.exp index 2d593cee35c..0827b3e2f2b 100644 --- a/gcc/testsuite/gfortran.dg/vect/vect.exp +++ b/gcc/testsuite/gfortran.dg/vect/vect.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp b/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp index df52b7b12f6..1a6d1f0cbf3 100644 --- a/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp +++ b/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp @@ -1,5 +1,5 @@ # Expect driver script for GCC Regression Tests -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp b/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp index 507f76e78af..cd6fc45adc8 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp +++ b/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gnat.dg/dg.exp b/gcc/testsuite/gnat.dg/dg.exp index 95fb4918de9..f7754cc769a 100644 --- a/gcc/testsuite/gnat.dg/dg.exp +++ b/gcc/testsuite/gnat.dg/dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gnat.dg/specs/specs.exp b/gcc/testsuite/gnat.dg/specs/specs.exp index f23fe8a3147..dbece4e0832 100644 --- a/gcc/testsuite/gnat.dg/specs/specs.exp +++ b/gcc/testsuite/gnat.dg/specs/specs.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/go.dg/dg.exp b/gcc/testsuite/go.dg/dg.exp index e30f4d001df..e1f3ee3e396 100644 --- a/gcc/testsuite/go.dg/dg.exp +++ b/gcc/testsuite/go.dg/dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/go.go-torture/execute/execute.exp b/gcc/testsuite/go.go-torture/execute/execute.exp index ae828bb7fe0..80757a37ead 100644 --- a/gcc/testsuite/go.go-torture/execute/execute.exp +++ b/gcc/testsuite/go.go-torture/execute/execute.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/go.test/go-test.exp b/gcc/testsuite/go.test/go-test.exp index 1a636573d73..0f95edc182d 100644 --- a/gcc/testsuite/go.test/go-test.exp +++ b/gcc/testsuite/go.test/go-test.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # Written by Ian Lance Taylor . # This program is free software; you can redistribute it and/or modify diff --git a/gcc/testsuite/lib/asan-dg.exp b/gcc/testsuite/lib/asan-dg.exp index ca8e8132e6e..9ba39db15e4 100644 --- a/gcc/testsuite/lib/asan-dg.exp +++ b/gcc/testsuite/lib/asan-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/atomic-dg.exp b/gcc/testsuite/lib/atomic-dg.exp index c1317e47c2f..ee31a7a7a6e 100644 --- a/gcc/testsuite/lib/atomic-dg.exp +++ b/gcc/testsuite/lib/atomic-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/c-compat.exp b/gcc/testsuite/lib/c-compat.exp index b42545dfaa4..95a1fb9d71f 100644 --- a/gcc/testsuite/lib/c-compat.exp +++ b/gcc/testsuite/lib/c-compat.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/c-torture.exp b/gcc/testsuite/lib/c-torture.exp index ccfd6f12cd7..fde76fde893 100644 --- a/gcc/testsuite/lib/c-torture.exp +++ b/gcc/testsuite/lib/c-torture.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1992-2013 Free Software Foundation, Inc. +# Copyright (C) 1992-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/compat.exp b/gcc/testsuite/lib/compat.exp index 27b04a68065..7ab85aafe50 100644 --- a/gcc/testsuite/lib/compat.exp +++ b/gcc/testsuite/lib/compat.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/copy-file.exp b/gcc/testsuite/lib/copy-file.exp index 741af670f5b..aa80d0bbf74 100644 --- a/gcc/testsuite/lib/copy-file.exp +++ b/gcc/testsuite/lib/copy-file.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/dejapatches.exp b/gcc/testsuite/lib/dejapatches.exp index e9727c4ed0f..e83c32f7136 100644 --- a/gcc/testsuite/lib/dejapatches.exp +++ b/gcc/testsuite/lib/dejapatches.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/dg-pch.exp b/gcc/testsuite/lib/dg-pch.exp index d82c6690f47..7efbdb50e71 100644 --- a/gcc/testsuite/lib/dg-pch.exp +++ b/gcc/testsuite/lib/dg-pch.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/file-format.exp b/gcc/testsuite/lib/file-format.exp index 7d74d63f7ea..70263bf0a86 100644 --- a/gcc/testsuite/lib/file-format.exp +++ b/gcc/testsuite/lib/file-format.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/fortran-modules.exp b/gcc/testsuite/lib/fortran-modules.exp index 77981f2fa41..eb880f4bf02 100644 --- a/gcc/testsuite/lib/fortran-modules.exp +++ b/gcc/testsuite/lib/fortran-modules.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/fortran-torture.exp b/gcc/testsuite/lib/fortran-torture.exp index c359c90ff92..e7abac81581 100644 --- a/gcc/testsuite/lib/fortran-torture.exp +++ b/gcc/testsuite/lib/fortran-torture.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/g++-dg.exp b/gcc/testsuite/lib/g++-dg.exp index 2f9225b5ae1..f8e92e62fc1 100644 --- a/gcc/testsuite/lib/g++-dg.exp +++ b/gcc/testsuite/lib/g++-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/g++.exp b/gcc/testsuite/lib/g++.exp index 2018ae57626..751e27bc99b 100644 --- a/gcc/testsuite/lib/g++.exp +++ b/gcc/testsuite/lib/g++.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1992-2013 Free Software Foundation, Inc. +# Copyright (C) 1992-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/gcc-defs.exp b/gcc/testsuite/lib/gcc-defs.exp index 0fe9cb28df2..69a597162b0 100644 --- a/gcc/testsuite/lib/gcc-defs.exp +++ b/gcc/testsuite/lib/gcc-defs.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index f64f4a121cf..3b06ce45420 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/gcc-gdb-test.exp b/gcc/testsuite/lib/gcc-gdb-test.exp index 026830f110d..d182d88fa56 100644 --- a/gcc/testsuite/lib/gcc-gdb-test.exp +++ b/gcc/testsuite/lib/gcc-gdb-test.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/gcc-simulate-thread.exp b/gcc/testsuite/lib/gcc-simulate-thread.exp index 4e5960df74c..100462458e5 100644 --- a/gcc/testsuite/lib/gcc-simulate-thread.exp +++ b/gcc/testsuite/lib/gcc-simulate-thread.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/gcc.exp b/gcc/testsuite/lib/gcc.exp index d9251ab44ab..49394b08eb5 100644 --- a/gcc/testsuite/lib/gcc.exp +++ b/gcc/testsuite/lib/gcc.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1992-2013 Free Software Foundation, Inc. +# Copyright (C) 1992-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/gcov.exp b/gcc/testsuite/lib/gcov.exp index 0527a706544..7e4ed6937c8 100644 --- a/gcc/testsuite/lib/gcov.exp +++ b/gcc/testsuite/lib/gcov.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/gfortran-dg.exp b/gcc/testsuite/lib/gfortran-dg.exp index dca4de45d01..f6a1dbe5a7b 100644 --- a/gcc/testsuite/lib/gfortran-dg.exp +++ b/gcc/testsuite/lib/gfortran-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/gfortran.exp b/gcc/testsuite/lib/gfortran.exp index 920403514e2..c9b5d648b87 100644 --- a/gcc/testsuite/lib/gfortran.exp +++ b/gcc/testsuite/lib/gfortran.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/gnat-dg.exp b/gcc/testsuite/lib/gnat-dg.exp index f66273cf950..24fb475c9ea 100644 --- a/gcc/testsuite/lib/gnat-dg.exp +++ b/gcc/testsuite/lib/gnat-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/gnat.exp b/gcc/testsuite/lib/gnat.exp index a821edb3074..e82f7311a48 100644 --- a/gcc/testsuite/lib/gnat.exp +++ b/gcc/testsuite/lib/gnat.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/go-dg.exp b/gcc/testsuite/lib/go-dg.exp index f93aec648f2..71b6ab8be29 100644 --- a/gcc/testsuite/lib/go-dg.exp +++ b/gcc/testsuite/lib/go-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/go-torture.exp b/gcc/testsuite/lib/go-torture.exp index a67b0817a66..d37d475874d 100644 --- a/gcc/testsuite/lib/go-torture.exp +++ b/gcc/testsuite/lib/go-torture.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/go.exp b/gcc/testsuite/lib/go.exp index 20a9fc7010e..d674f488cf4 100644 --- a/gcc/testsuite/lib/go.exp +++ b/gcc/testsuite/lib/go.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/lto.exp b/gcc/testsuite/lib/lto.exp index 8c2db333449..aa632fbb8ce 100644 --- a/gcc/testsuite/lib/lto.exp +++ b/gcc/testsuite/lib/lto.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/mike-g++.exp b/gcc/testsuite/lib/mike-g++.exp index db26fa52782..d5f31a8ecdf 100644 --- a/gcc/testsuite/lib/mike-g++.exp +++ b/gcc/testsuite/lib/mike-g++.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1988-2013 Free Software Foundation, Inc. +# Copyright (C) 1988-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/mike-gcc.exp b/gcc/testsuite/lib/mike-gcc.exp index 86e7796e450..68cca239b03 100644 --- a/gcc/testsuite/lib/mike-gcc.exp +++ b/gcc/testsuite/lib/mike-gcc.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1988-2013 Free Software Foundation, Inc. +# Copyright (C) 1988-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/obj-c++-dg.exp b/gcc/testsuite/lib/obj-c++-dg.exp index c2435e8cc4e..3b26342f524 100644 --- a/gcc/testsuite/lib/obj-c++-dg.exp +++ b/gcc/testsuite/lib/obj-c++-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/obj-c++.exp b/gcc/testsuite/lib/obj-c++.exp index 0be2ce57a07..93c7ff6b198 100644 --- a/gcc/testsuite/lib/obj-c++.exp +++ b/gcc/testsuite/lib/obj-c++.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/objc-dg.exp b/gcc/testsuite/lib/objc-dg.exp index 01709fcea55..aeb9e9e3792 100644 --- a/gcc/testsuite/lib/objc-dg.exp +++ b/gcc/testsuite/lib/objc-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/objc-torture.exp b/gcc/testsuite/lib/objc-torture.exp index 1396d134f8b..f6060653768 100644 --- a/gcc/testsuite/lib/objc-torture.exp +++ b/gcc/testsuite/lib/objc-torture.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1992-2013 Free Software Foundation, Inc. +# Copyright (C) 1992-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/objc.exp b/gcc/testsuite/lib/objc.exp index 38fe25c2f5b..5ecefa92f96 100644 --- a/gcc/testsuite/lib/objc.exp +++ b/gcc/testsuite/lib/objc.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1992-2013 Free Software Foundation, Inc. +# Copyright (C) 1992-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/options.exp b/gcc/testsuite/lib/options.exp index df0cd2abaec..d420ad93067 100644 --- a/gcc/testsuite/lib/options.exp +++ b/gcc/testsuite/lib/options.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/plugin-support.exp b/gcc/testsuite/lib/plugin-support.exp index 54c51fe686e..9be919b713a 100644 --- a/gcc/testsuite/lib/plugin-support.exp +++ b/gcc/testsuite/lib/plugin-support.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/profopt.exp b/gcc/testsuite/lib/profopt.exp index cdc6b005252..e0d849ef03e 100644 --- a/gcc/testsuite/lib/profopt.exp +++ b/gcc/testsuite/lib/profopt.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/prune.exp b/gcc/testsuite/lib/prune.exp index 78906086503..72ecde770d2 100644 --- a/gcc/testsuite/lib/prune.exp +++ b/gcc/testsuite/lib/prune.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp index bfdd2731180..788f622a715 100644 --- a/gcc/testsuite/lib/scanasm.exp +++ b/gcc/testsuite/lib/scanasm.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2000-2013 Free Software Foundation, Inc. +# Copyright (C) 2000-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/scandump.exp b/gcc/testsuite/lib/scandump.exp index a7bec962b47..b1524d44387 100644 --- a/gcc/testsuite/lib/scandump.exp +++ b/gcc/testsuite/lib/scandump.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2000-2013 Free Software Foundation, Inc. +# Copyright (C) 2000-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/scanipa.exp b/gcc/testsuite/lib/scanipa.exp index b02f5458715..47d56bf64e3 100644 --- a/gcc/testsuite/lib/scanipa.exp +++ b/gcc/testsuite/lib/scanipa.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2000-2013 Free Software Foundation, Inc. +# Copyright (C) 2000-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/scanrtl.exp b/gcc/testsuite/lib/scanrtl.exp index ac885e6f5c6..28a4685b202 100644 --- a/gcc/testsuite/lib/scanrtl.exp +++ b/gcc/testsuite/lib/scanrtl.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/scantree.exp b/gcc/testsuite/lib/scantree.exp index 4e016b5f9af..147c65f338b 100644 --- a/gcc/testsuite/lib/scantree.exp +++ b/gcc/testsuite/lib/scantree.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2000-2013 Free Software Foundation, Inc. +# Copyright (C) 2000-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/target-libpath.exp b/gcc/testsuite/lib/target-libpath.exp index d6ad0138840..603ed8ab89e 100644 --- a/gcc/testsuite/lib/target-libpath.exp +++ b/gcc/testsuite/lib/target-libpath.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/target-supports-dg.exp b/gcc/testsuite/lib/target-supports-dg.exp index 1b56536d615..171dc1b4707 100644 --- a/gcc/testsuite/lib/target-supports-dg.exp +++ b/gcc/testsuite/lib/target-supports-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index b9151583608..5166679dacd 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/timeout-dg.exp b/gcc/testsuite/lib/timeout-dg.exp index 6414abdf454..97cec143b7b 100644 --- a/gcc/testsuite/lib/timeout-dg.exp +++ b/gcc/testsuite/lib/timeout-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/timeout.exp b/gcc/testsuite/lib/timeout.exp index b393a3e5449..1a2e215e1c8 100644 --- a/gcc/testsuite/lib/timeout.exp +++ b/gcc/testsuite/lib/timeout.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/torture-options.exp b/gcc/testsuite/lib/torture-options.exp index cc01575a92f..fd7f21a905c 100644 --- a/gcc/testsuite/lib/torture-options.exp +++ b/gcc/testsuite/lib/torture-options.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# Copyright (C) 2008-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/tsan-dg.exp b/gcc/testsuite/lib/tsan-dg.exp index f39d8b5329f..8fc2c308dbb 100644 --- a/gcc/testsuite/lib/tsan-dg.exp +++ b/gcc/testsuite/lib/tsan-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/ubsan-dg.exp b/gcc/testsuite/lib/ubsan-dg.exp index aa01988f976..fecce7bf00f 100644 --- a/gcc/testsuite/lib/ubsan-dg.exp +++ b/gcc/testsuite/lib/ubsan-dg.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Free Software Foundation, Inc. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/lib/wrapper.exp b/gcc/testsuite/lib/wrapper.exp index 776b93b7f64..1291c11309b 100644 --- a/gcc/testsuite/lib/wrapper.exp +++ b/gcc/testsuite/lib/wrapper.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/obj-c++.dg/attributes/attributes.exp b/gcc/testsuite/obj-c++.dg/attributes/attributes.exp index 0e1a11dd0a7..6b5b299779d 100644 --- a/gcc/testsuite/obj-c++.dg/attributes/attributes.exp +++ b/gcc/testsuite/obj-c++.dg/attributes/attributes.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/obj-c++.dg/dg.exp b/gcc/testsuite/obj-c++.dg/dg.exp index 71ca14294b5..0581b49edbd 100644 --- a/gcc/testsuite/obj-c++.dg/dg.exp +++ b/gcc/testsuite/obj-c++.dg/dg.exp @@ -1,5 +1,5 @@ # GCC Objective-C++ testsuite that uses the `dg.exp' driver. -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/obj-c++.dg/lto/lto.exp b/gcc/testsuite/obj-c++.dg/lto/lto.exp index df4131ad84c..19cf510365c 100644 --- a/gcc/testsuite/obj-c++.dg/lto/lto.exp +++ b/gcc/testsuite/obj-c++.dg/lto/lto.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/obj-c++.dg/property/property.exp b/gcc/testsuite/obj-c++.dg/property/property.exp index 73f9feb5d68..e9b57f169aa 100644 --- a/gcc/testsuite/obj-c++.dg/property/property.exp +++ b/gcc/testsuite/obj-c++.dg/property/property.exp @@ -1,5 +1,5 @@ # GCC Objective-C++ testsuite that uses the `dg.exp' driver. -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/obj-c++.dg/strings/strings.exp b/gcc/testsuite/obj-c++.dg/strings/strings.exp index 316dbf99705..96e2c69acf2 100644 --- a/gcc/testsuite/obj-c++.dg/strings/strings.exp +++ b/gcc/testsuite/obj-c++.dg/strings/strings.exp @@ -1,6 +1,6 @@ # String tests that only need to run at default optimization. -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/obj-c++.dg/torture/strings/strings.exp b/gcc/testsuite/obj-c++.dg/torture/strings/strings.exp index 1d00ee08eaf..87d47bb8672 100644 --- a/gcc/testsuite/obj-c++.dg/torture/strings/strings.exp +++ b/gcc/testsuite/obj-c++.dg/torture/strings/strings.exp @@ -1,6 +1,6 @@ # String tests that should be run at all optimization levels. -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m b/gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m index 30090d8064e..c54f545564d 100644 --- a/gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m +++ b/gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m @@ -1,5 +1,5 @@ /* Very simple root class for writing testcases. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Nicola Pero This file is part of GCC. diff --git a/gcc/testsuite/objc.dg/attributes/attributes.exp b/gcc/testsuite/objc.dg/attributes/attributes.exp index 6f16d45b1a5..23a8462b8a5 100644 --- a/gcc/testsuite/objc.dg/attributes/attributes.exp +++ b/gcc/testsuite/objc.dg/attributes/attributes.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/objc.dg/dg.exp b/gcc/testsuite/objc.dg/dg.exp index b8ff62a49a5..3fcef7588dd 100644 --- a/gcc/testsuite/objc.dg/dg.exp +++ b/gcc/testsuite/objc.dg/dg.exp @@ -1,5 +1,5 @@ # GCC Objective-C testsuite that uses the `dg.exp' driver. -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp b/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp index 667ddf13a68..d833f92546c 100644 --- a/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp +++ b/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp @@ -1,5 +1,5 @@ # GCC Objective-C testsuite that uses the `dg.exp' driver. -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/objc.dg/lto/lto.exp b/gcc/testsuite/objc.dg/lto/lto.exp index 7f471e938e2..7b052c437e3 100644 --- a/gcc/testsuite/objc.dg/lto/lto.exp +++ b/gcc/testsuite/objc.dg/lto/lto.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/objc.dg/pch/pch.exp b/gcc/testsuite/objc.dg/pch/pch.exp index e380390bba6..bf1517980f2 100644 --- a/gcc/testsuite/objc.dg/pch/pch.exp +++ b/gcc/testsuite/objc.dg/pch/pch.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/objc.dg/property/property.exp b/gcc/testsuite/objc.dg/property/property.exp index f7ba5d4ea6b..48e83e39165 100644 --- a/gcc/testsuite/objc.dg/property/property.exp +++ b/gcc/testsuite/objc.dg/property/property.exp @@ -1,5 +1,5 @@ # GCC Objective-C testsuite that uses the `dg.exp' driver. -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/objc.dg/special/special.exp b/gcc/testsuite/objc.dg/special/special.exp index cb11fccee72..fb9bd0bec33 100644 --- a/gcc/testsuite/objc.dg/special/special.exp +++ b/gcc/testsuite/objc.dg/special/special.exp @@ -1,5 +1,5 @@ # GCC Objective-C testsuite that uses the `dg.exp' driver. -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/objc.dg/strings/strings.exp b/gcc/testsuite/objc.dg/strings/strings.exp index d871c815166..f38e6a35b82 100644 --- a/gcc/testsuite/objc.dg/strings/strings.exp +++ b/gcc/testsuite/objc.dg/strings/strings.exp @@ -1,6 +1,6 @@ # String tests that only need to run at default optimization. -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # # This file is part of GCC. # diff --git a/gcc/testsuite/objc.dg/torture/strings/strings.exp b/gcc/testsuite/objc.dg/torture/strings/strings.exp index e4d10eab98b..85c48c5859e 100644 --- a/gcc/testsuite/objc.dg/torture/strings/strings.exp +++ b/gcc/testsuite/objc.dg/torture/strings/strings.exp @@ -1,6 +1,6 @@ # String tests that should be run at all optimization levels. -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/objc/compile/compile.exp b/gcc/testsuite/objc/compile/compile.exp index 8bc5e2a1323..4bf24a42e50 100644 --- a/gcc/testsuite/objc/compile/compile.exp +++ b/gcc/testsuite/objc/compile/compile.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1991-2013 Free Software Foundation, Inc. +# Copyright (C) 1991-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/objc/execute/exceptions/exceptions.exp b/gcc/testsuite/objc/execute/exceptions/exceptions.exp index d5f5e40f0b8..1c60ce7d5b4 100644 --- a/gcc/testsuite/objc/execute/exceptions/exceptions.exp +++ b/gcc/testsuite/objc/execute/exceptions/exceptions.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1991-2013 Free Software Foundation, Inc. +# Copyright (C) 1991-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/objc/execute/execute.exp b/gcc/testsuite/objc/execute/execute.exp index 51b167d190e..320be125c3c 100644 --- a/gcc/testsuite/objc/execute/execute.exp +++ b/gcc/testsuite/objc/execute/execute.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1991-2013 Free Software Foundation, Inc. +# Copyright (C) 1991-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/timevar.c b/gcc/timevar.c index 23b71186670..c111e983cbd 100644 --- a/gcc/timevar.c +++ b/gcc/timevar.c @@ -1,5 +1,5 @@ /* Timing variables for measuring compiler performance. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Alex Samuel This file is part of GCC. diff --git a/gcc/timevar.def b/gcc/timevar.def index dd590ec385c..9faf98b7aba 100644 --- a/gcc/timevar.def +++ b/gcc/timevar.def @@ -1,6 +1,6 @@ /* This file contains the definitions for timing variables used to measure run-time performance of the compiler. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Alex Samuel This file is part of GCC. diff --git a/gcc/timevar.h b/gcc/timevar.h index dc2a8bc7f99..6703cc94475 100644 --- a/gcc/timevar.h +++ b/gcc/timevar.h @@ -1,5 +1,5 @@ /* Timing variables for measuring compiler performance. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Contributed by Alex Samuel This file is part of GCC. diff --git a/gcc/tlink.c b/gcc/tlink.c index 142023c2504..bc358b88faf 100644 --- a/gcc/tlink.c +++ b/gcc/tlink.c @@ -1,7 +1,7 @@ /* Scan linker error messages for missing template instantiations and provide them. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. Contributed by Jason Merrill (jason@cygnus.com). This file is part of GCC. diff --git a/gcc/toplev.c b/gcc/toplev.c index 042da3bcc39..38e986c1560 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1,5 +1,5 @@ /* Top level of GCC compilers (cc1, cc1plus, etc.) - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/toplev.h b/gcc/toplev.h index 84ffdb0e28b..0290be38d87 100644 --- a/gcc/toplev.h +++ b/gcc/toplev.h @@ -1,5 +1,5 @@ /* toplev.h - Various declarations for functions found in toplev.c - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tracer.c b/gcc/tracer.c index a40cbebd434..f036c193b57 100644 --- a/gcc/tracer.c +++ b/gcc/tracer.c @@ -1,7 +1,7 @@ /* The tracer pass for the GNU compiler. Contributed by Jan Hubicka, SuSE Labs. Adapted to work on GIMPLE instead of RTL by Robert Kidd, UIUC. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c index 941035bc0ba..fe6dc2886d6 100644 --- a/gcc/trans-mem.c +++ b/gcc/trans-mem.c @@ -1,5 +1,5 @@ /* Passes for transactional memory support. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/trans-mem.h b/gcc/trans-mem.h index d68171fc4ea..3d3b618aea2 100644 --- a/gcc/trans-mem.h +++ b/gcc/trans-mem.h @@ -1,5 +1,5 @@ /* Miscellaneous transactional memory support definitions. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-affine.c b/gcc/tree-affine.c index f93f186a761..91f9a9fee40 100644 --- a/gcc/tree-affine.c +++ b/gcc/tree-affine.c @@ -1,5 +1,5 @@ /* Operations with affine combinations of trees. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-affine.h b/gcc/tree-affine.h index 731c04fcbe2..52a10a4d0c8 100644 --- a/gcc/tree-affine.h +++ b/gcc/tree-affine.h @@ -1,5 +1,5 @@ /* Operations with affine combinations of trees. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-browser.c b/gcc/tree-browser.c index c3483a7b3a7..40fa2e95de0 100644 --- a/gcc/tree-browser.c +++ b/gcc/tree-browser.c @@ -1,5 +1,5 @@ /* Tree browser. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/tree-browser.def b/gcc/tree-browser.def index 052485571d8..a0c9119f0e1 100644 --- a/gcc/tree-browser.def +++ b/gcc/tree-browser.def @@ -1,5 +1,5 @@ /* Definitions and documentation for the codes used by the Tree Browser. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/tree-call-cdce.c b/gcc/tree-call-cdce.c index 5e59cad9958..4b2ad87c025 100644 --- a/gcc/tree-call-cdce.c +++ b/gcc/tree-call-cdce.c @@ -1,5 +1,5 @@ /* Conditional Dead Call Elimination pass for the GNU compiler. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Xinliang David Li This file is part of GCC. diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 03e177af58f..7daf15b28ad 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -1,5 +1,5 @@ /* Control flow functions for trees. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-cfg.h b/gcc/tree-cfg.h index c5c105dbdaa..8d045a4e2dc 100644 --- a/gcc/tree-cfg.h +++ b/gcc/tree-cfg.h @@ -1,5 +1,5 @@ /* Data and Control Flow Analysis for Trees. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c index 949b21d749d..922ae0d82a6 100644 --- a/gcc/tree-cfgcleanup.c +++ b/gcc/tree-cfgcleanup.c @@ -1,5 +1,5 @@ /* CFG cleanup for trees. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-cfgcleanup.h b/gcc/tree-cfgcleanup.h index 6bd3c3940ec..19ff170b51e 100644 --- a/gcc/tree-cfgcleanup.h +++ b/gcc/tree-cfgcleanup.h @@ -1,5 +1,5 @@ /* Header file for CFG cleanup for trees. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-chrec.c b/gcc/tree-chrec.c index 09d33721df8..b9350f015e2 100644 --- a/gcc/tree-chrec.c +++ b/gcc/tree-chrec.c @@ -1,5 +1,5 @@ /* Chains of recurrences. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/tree-chrec.h b/gcc/tree-chrec.h index 2c689d8839c..90cc7a74bc4 100644 --- a/gcc/tree-chrec.h +++ b/gcc/tree-chrec.h @@ -1,5 +1,5 @@ /* Chains of recurrences. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c index 8c9a3aa7c5a..4a657c06865 100644 --- a/gcc/tree-complex.c +++ b/gcc/tree-complex.c @@ -1,5 +1,5 @@ /* Lower complex number operations to scalar operations. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-core.h b/gcc/tree-core.h index 0822d357024..0a41b862bdc 100644 --- a/gcc/tree-core.h +++ b/gcc/tree-core.h @@ -1,5 +1,5 @@ /* Core data structures for the 'tree' type. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index 03060201649..91601effccd 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -1,5 +1,5 @@ /* Data references and dependences detectors. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/tree-data-ref.h b/gcc/tree-data-ref.h index 76e1b820801..d9eac29dbaf 100644 --- a/gcc/tree-data-ref.h +++ b/gcc/tree-data-ref.h @@ -1,5 +1,5 @@ /* Data references and dependences detectors. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index e014a719e5a..6ae38daef2c 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -1,5 +1,5 @@ /* Data flow functions for trees. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-dfa.h b/gcc/tree-dfa.h index 71f2c21965c..86590ad462d 100644 --- a/gcc/tree-dfa.h +++ b/gcc/tree-dfa.h @@ -1,5 +1,5 @@ /* Header file for tree data flow functions. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-diagnostic.c b/gcc/tree-diagnostic.c index 2942365e3cf..ee71555556f 100644 --- a/gcc/tree-diagnostic.c +++ b/gcc/tree-diagnostic.c @@ -1,7 +1,7 @@ /* Language-independent diagnostic subroutines for the GNU Compiler Collection that are only for use in the compilers proper and not the driver or other programs. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-diagnostic.h b/gcc/tree-diagnostic.h index f2706c7553d..1d30601852d 100644 --- a/gcc/tree-diagnostic.h +++ b/gcc/tree-diagnostic.h @@ -1,7 +1,7 @@ /* Various declarations for language-independent diagnostics subroutines that are only for use in the compilers proper and not the driver or other programs. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-dump.c b/gcc/tree-dump.c index 17db244da64..fec493db3cf 100644 --- a/gcc/tree-dump.c +++ b/gcc/tree-dump.c @@ -1,5 +1,5 @@ /* Tree-dumping functionality for intermediate representation. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Written by Mark Mitchell This file is part of GCC. diff --git a/gcc/tree-dump.h b/gcc/tree-dump.h index edd32e71601..0684596d1dd 100644 --- a/gcc/tree-dump.h +++ b/gcc/tree-dump.h @@ -1,5 +1,5 @@ /* Tree-dumping functionality for intermediate representation. - Copyright (C) 1999-2013 Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. Written by Mark Mitchell This file is part of GCC. diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index 9097378a989..0c8282e3754 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -1,5 +1,5 @@ /* Exception handling semantics and decomposition for trees. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-eh.h b/gcc/tree-eh.h index 308f20f77ee..cd9b40d03c2 100644 --- a/gcc/tree-eh.h +++ b/gcc/tree-eh.h @@ -1,5 +1,5 @@ /* Header file for exception handling. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-emutls.c b/gcc/tree-emutls.c index 4595b1c0dd9..3391cc3e9ae 100644 --- a/gcc/tree-emutls.c +++ b/gcc/tree-emutls.c @@ -1,5 +1,5 @@ /* Lower TLS operations to emulation functions. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-hasher.h b/gcc/tree-hasher.h index ac4bb6e17b0..6b280083514 100644 --- a/gcc/tree-hasher.h +++ b/gcc/tree-hasher.h @@ -1,5 +1,5 @@ /* Hash Table Helper for Trees - Copyright (C) 2012 Free Software Foundation, Inc. + Copyright (C) 2012-2014 Free Software Foundation, Inc. Contributed by Lawrence Crowl This file is part of GCC. diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 283f476be22..d2327761724 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -1,5 +1,5 @@ /* If-conversion for vectorizer. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Devang Patel This file is part of GCC. diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 4f14e5e10b0..22521b130c4 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -1,5 +1,5 @@ /* Tree inlining. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Alexandre Oliva This file is part of GCC. diff --git a/gcc/tree-inline.h b/gcc/tree-inline.h index 210f312b36a..13c551666dd 100644 --- a/gcc/tree-inline.h +++ b/gcc/tree-inline.h @@ -1,5 +1,5 @@ /* Tree inlining hooks and declarations. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Alexandre Oliva This file is part of GCC. diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index 8e539f2ebcf..3ca2bd10bcf 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -1,5 +1,5 @@ /* Rewrite a program in Normal form into SSA. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-into-ssa.h b/gcc/tree-into-ssa.h index c87fb63c351..977f6e7bae8 100644 --- a/gcc/tree-into-ssa.h +++ b/gcc/tree-into-ssa.h @@ -1,5 +1,5 @@ /* Header file for normal form into SSA. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-iterator.c b/gcc/tree-iterator.c index 71329089657..37ee7522ba1 100644 --- a/gcc/tree-iterator.c +++ b/gcc/tree-iterator.c @@ -1,5 +1,5 @@ /* Iterator routines for manipulating GENERIC and GIMPLE tree statements. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Andrew MacLeod This file is part of GCC. diff --git a/gcc/tree-iterator.h b/gcc/tree-iterator.h index 105f371feb5..5088facb2a7 100644 --- a/gcc/tree-iterator.h +++ b/gcc/tree-iterator.h @@ -1,5 +1,5 @@ /* Iterator routines for manipulating GENERIC tree statement list. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Andrew MacLeod This file is part of GCC. diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index c536162b5f9..9db92dbf9bf 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -1,5 +1,5 @@ /* Loop distribution. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Georges-Andre Silber and Sebastian Pop . diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c index 2d6a56dcabd..6d1b501dccd 100644 --- a/gcc/tree-nested.c +++ b/gcc/tree-nested.c @@ -1,5 +1,5 @@ /* Nested function decomposition for GIMPLE. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-nested.h b/gcc/tree-nested.h index bfaa65315d7..ca45a7d253e 100644 --- a/gcc/tree-nested.h +++ b/gcc/tree-nested.h @@ -1,5 +1,5 @@ /* Header file for Nested function decomposition for GIMPLE. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-nrv.c b/gcc/tree-nrv.c index e00463dcc60..b443388a2a9 100644 --- a/gcc/tree-nrv.c +++ b/gcc/tree-nrv.c @@ -1,5 +1,5 @@ /* Language independent return value optimizations - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c index c83345f7efd..994845b3d29 100644 --- a/gcc/tree-object-size.c +++ b/gcc/tree-object-size.c @@ -1,5 +1,5 @@ /* __builtin_object_size (ptr, object_size_type) computation - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Jakub Jelinek This file is part of GCC. diff --git a/gcc/tree-object-size.h b/gcc/tree-object-size.h index 19029d89562..70f648c5a34 100644 --- a/gcc/tree-object-size.h +++ b/gcc/tree-object-size.h @@ -1,5 +1,5 @@ /* Declarations for tree-object-size.c. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c index c5bba789637..d5a635bc623 100644 --- a/gcc/tree-outof-ssa.c +++ b/gcc/tree-outof-ssa.c @@ -1,5 +1,5 @@ /* Convert a program in SSA form into Normal form. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Andrew Macleod This file is part of GCC. diff --git a/gcc/tree-outof-ssa.h b/gcc/tree-outof-ssa.h index 69a329f8b2f..a8c31948266 100644 --- a/gcc/tree-outof-ssa.h +++ b/gcc/tree-outof-ssa.h @@ -1,5 +1,5 @@ /* Routines for expanding from SSA form to RTL. - Copyright (C) 2009-2013 Free Software Foundation, Inc. + Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index 368a05e4441..47179a967ec 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -1,5 +1,5 @@ /* Loop autoparallelization. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop Zdenek Dvorak and Razya Ladelsky . diff --git a/gcc/tree-parloops.h b/gcc/tree-parloops.h index 35926b64a63..7aabf857b46 100644 --- a/gcc/tree-parloops.h +++ b/gcc/tree-parloops.h @@ -1,5 +1,5 @@ /* Header file for loop autoparallelization. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index 308631f3dd1..3b867709811 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -1,5 +1,5 @@ /* Definitions for describing one tree-ssa optimization pass. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Richard Henderson This file is part of GCC. diff --git a/gcc/tree-phinodes.c b/gcc/tree-phinodes.c index b9c5b43ea57..9dff6ad6a4c 100644 --- a/gcc/tree-phinodes.c +++ b/gcc/tree-phinodes.c @@ -1,5 +1,5 @@ /* Generic routines for manipulating PHIs - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-phinodes.h b/gcc/tree-phinodes.h index 4dd5e1362d3..1e5df8391c2 100644 --- a/gcc/tree-phinodes.h +++ b/gcc/tree-phinodes.h @@ -1,5 +1,5 @@ /* Header file for PHI node routines - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c index 4814281fd33..92cecfabec7 100644 --- a/gcc/tree-predcom.c +++ b/gcc/tree-predcom.c @@ -1,5 +1,5 @@ /* Predictive commoning. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index 69275d0113e..0595499ec25 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -1,5 +1,5 @@ /* Pretty formatting of GENERIC trees in C syntax. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Adapted from c-pretty-print.c by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-pretty-print.h b/gcc/tree-pretty-print.h index 8754b0a2195..d2ab0b75f39 100644 --- a/gcc/tree-pretty-print.h +++ b/gcc/tree-pretty-print.h @@ -1,7 +1,7 @@ /* Various declarations for language-independent pretty-print subroutines that are only for use in the compilers proper and not the driver or other programs. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-profile.c b/gcc/tree-profile.c index 51e997ccd4f..02e9ff27ed0 100644 --- a/gcc/tree-profile.c +++ b/gcc/tree-profile.c @@ -1,5 +1,5 @@ /* Calculate branch probabilities, and basic block execution counts. - Copyright (C) 1990-2013 Free Software Foundation, Inc. + Copyright (C) 1990-2014 Free Software Foundation, Inc. Contributed by James E. Wilson, UC Berkeley/Cygnus Support; based on some ideas from Dain Samples of UC Berkeley. Further mangling by Bob Manson, Cygnus Support. diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index 27d8158e310..3f4d1cfc917 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -1,5 +1,5 @@ /* Scalar evolution detector. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/tree-scalar-evolution.h b/gcc/tree-scalar-evolution.h index d2ef4b16879..55699768468 100644 --- a/gcc/tree-scalar-evolution.h +++ b/gcc/tree-scalar-evolution.h @@ -1,5 +1,5 @@ /* Scalar evolution detector. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 47765416e68..4992b4c13bf 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -1,7 +1,7 @@ /* Scalar Replacement of Aggregates (SRA) converts some structure references into scalar references, exposing them to the scalar optimizers. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Martin Jambor This file is part of GCC. diff --git a/gcc/tree-ssa-address.c b/gcc/tree-ssa-address.c index aa5f7d79dd6..741478c4de2 100644 --- a/gcc/tree-ssa-address.c +++ b/gcc/tree-ssa-address.c @@ -1,5 +1,5 @@ /* Memory address lowering and addressing mode selection. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-address.h b/gcc/tree-ssa-address.h index a5a67c43bb2..4eabc0594a0 100644 --- a/gcc/tree-ssa-address.h +++ b/gcc/tree-ssa-address.h @@ -1,5 +1,5 @@ /* Header file for memory address lowering and mode selection. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 0fb4c447ab0..2c3583be5f4 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -1,5 +1,5 @@ /* Alias analysis for trees. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-ssa-alias.h b/gcc/tree-ssa-alias.h index 6c54ad90162..3544aafca83 100644 --- a/gcc/tree-ssa-alias.h +++ b/gcc/tree-ssa-alias.h @@ -1,5 +1,5 @@ /* Tree based alias analysis and alias oracle. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2014 Free Software Foundation, Inc. Contributed by Richard Guenther This file is part of GCC. diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 7e0777153e7..493bbcb336b 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -1,5 +1,5 @@ /* Conditional constant propagation pass for the GNU compiler. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. Adapted from original RTL SSA-CCP by Daniel Berlin Adapted to GIMPLE trees by Diego Novillo diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c index 38a40787730..86276b361a6 100644 --- a/gcc/tree-ssa-coalesce.c +++ b/gcc/tree-ssa-coalesce.c @@ -1,5 +1,5 @@ /* Coalesce SSA_NAMES together for the out-of-ssa pass. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Andrew MacLeod This file is part of GCC. diff --git a/gcc/tree-ssa-coalesce.h b/gcc/tree-ssa-coalesce.h index 6b2831fc537..6760a16a1e0 100644 --- a/gcc/tree-ssa-coalesce.h +++ b/gcc/tree-ssa-coalesce.h @@ -1,5 +1,5 @@ /* Header file for tree-ssa-coalesce.c exports. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c index 11daa5f59cb..02f474355b7 100644 --- a/gcc/tree-ssa-copy.c +++ b/gcc/tree-ssa-copy.c @@ -1,5 +1,5 @@ /* Copy propagation and SSA_NAME replacement support routines. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-copyrename.c b/gcc/tree-ssa-copyrename.c index c7d514fe0ec..bc947b608e3 100644 --- a/gcc/tree-ssa-copyrename.c +++ b/gcc/tree-ssa-copyrename.c @@ -1,5 +1,5 @@ /* Rename SSA copies. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Andrew MacLeod This file is part of GCC. diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c index 5abef5c1283..13a71ceea0b 100644 --- a/gcc/tree-ssa-dce.c +++ b/gcc/tree-ssa-dce.c @@ -1,5 +1,5 @@ /* Dead code elimination pass for the GNU compiler. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. Contributed by Ben Elliston and Andrew MacLeod Adapted to use control dependence by Steven Bosscher, SUSE Labs. diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index 2bd2a860dca..98cf60888ab 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -1,5 +1,5 @@ /* SSA Dominator optimizations for trees - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-ssa-dom.h b/gcc/tree-ssa-dom.h index 0115f9323b7..af2f128c819 100644 --- a/gcc/tree-ssa-dom.h +++ b/gcc/tree-ssa-dom.h @@ -1,5 +1,5 @@ /* Header file for SSA dominator optimizations. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c index a51f7615c72..2c2f3f7985a 100644 --- a/gcc/tree-ssa-dse.c +++ b/gcc/tree-ssa-dse.c @@ -1,5 +1,5 @@ /* Dead store elimination - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c index a77a6390cb4..ce9e42621e6 100644 --- a/gcc/tree-ssa-forwprop.c +++ b/gcc/tree-ssa-forwprop.c @@ -1,5 +1,5 @@ /* Forward propagation of expressions for single use variables. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-ifcombine.c b/gcc/tree-ssa-ifcombine.c index 3a6ea796bac..38d265f61f4 100644 --- a/gcc/tree-ssa-ifcombine.c +++ b/gcc/tree-ssa-ifcombine.c @@ -1,5 +1,5 @@ /* Combining of if-expressions on trees. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Richard Guenther This file is part of GCC. diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c index a37ef85d6fb..13e4fb0cfa4 100644 --- a/gcc/tree-ssa-live.c +++ b/gcc/tree-ssa-live.c @@ -1,5 +1,5 @@ /* Liveness for SSA trees. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Andrew MacLeod This file is part of GCC. diff --git a/gcc/tree-ssa-live.h b/gcc/tree-ssa-live.h index e8074bd425e..70024817c1c 100644 --- a/gcc/tree-ssa-live.h +++ b/gcc/tree-ssa-live.h @@ -1,5 +1,5 @@ /* Routines for liveness in SSA trees. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Andrew MacLeod This file is part of GCC. diff --git a/gcc/tree-ssa-loop-ch.c b/gcc/tree-ssa-loop-ch.c index 07da4918ce8..0a6b1c1e453 100644 --- a/gcc/tree-ssa-loop-ch.c +++ b/gcc/tree-ssa-loop-ch.c @@ -1,5 +1,5 @@ /* Loop header copying on trees. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c index cbcdc37f91d..7bd0605551c 100644 --- a/gcc/tree-ssa-loop-im.c +++ b/gcc/tree-ssa-loop-im.c @@ -1,5 +1,5 @@ /* Loop invariant motion. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop-ivcanon.c b/gcc/tree-ssa-loop-ivcanon.c index 2533971864a..b475b067bb5 100644 --- a/gcc/tree-ssa-loop-ivcanon.c +++ b/gcc/tree-ssa-loop-ivcanon.c @@ -1,5 +1,5 @@ /* Induction variable canonicalization and loop peeling. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index bc2a027a89e..483b4d003a5 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -1,5 +1,5 @@ /* Induction variable optimizations. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop-ivopts.h b/gcc/tree-ssa-loop-ivopts.h index 1af92be21a8..330bbe5eeba 100644 --- a/gcc/tree-ssa-loop-ivopts.h +++ b/gcc/tree-ssa-loop-ivopts.h @@ -1,5 +1,5 @@ /* Header file for Induction variable optimizations. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c index ed30c7b0926..9dcbc530c36 100644 --- a/gcc/tree-ssa-loop-manip.c +++ b/gcc/tree-ssa-loop-manip.c @@ -1,5 +1,5 @@ /* High-level loop manipulation functions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop-manip.h b/gcc/tree-ssa-loop-manip.h index a1dcd22193d..67f9352e652 100644 --- a/gcc/tree-ssa-loop-manip.h +++ b/gcc/tree-ssa-loop-manip.h @@ -1,5 +1,5 @@ /* Header file for High-level loop manipulation functions. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index a5a76a497c3..5a10297ba10 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -1,5 +1,5 @@ /* Functions to determine/estimate number of iterations of a loop. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop-niter.h b/gcc/tree-ssa-loop-niter.h index 194550762d8..df0d64d021b 100644 --- a/gcc/tree-ssa-loop-niter.h +++ b/gcc/tree-ssa-loop-niter.h @@ -1,5 +1,5 @@ /* Header file for loop interation estimates. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop-prefetch.c b/gcc/tree-ssa-loop-prefetch.c index 8cb74d58bb1..c0968c8f582 100644 --- a/gcc/tree-ssa-loop-prefetch.c +++ b/gcc/tree-ssa-loop-prefetch.c @@ -1,5 +1,5 @@ /* Array prefetching. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop-unswitch.c b/gcc/tree-ssa-loop-unswitch.c index 200b076c691..5031378671a 100644 --- a/gcc/tree-ssa-loop-unswitch.c +++ b/gcc/tree-ssa-loop-unswitch.c @@ -1,5 +1,5 @@ /* Loop unswitching. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c index 3bbe7bf2b93..e71519acf7b 100644 --- a/gcc/tree-ssa-loop.c +++ b/gcc/tree-ssa-loop.c @@ -1,5 +1,5 @@ /* Loop optimizations over tree-ssa. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-loop.h b/gcc/tree-ssa-loop.h index dd8397d0662..4684cda6dfa 100644 --- a/gcc/tree-ssa-loop.h +++ b/gcc/tree-ssa-loop.h @@ -1,5 +1,5 @@ /* Header file for SSA loop optimizations. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index 1c89f4519b9..8e372ede741 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -1,5 +1,5 @@ /* Global, SSA-based optimizations using mathematical identities. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index 84ec0024d5d..352ccca4e30 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -1,5 +1,5 @@ /* SSA operands management for trees. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-operands.h b/gcc/tree-ssa-operands.h index f5a779c94e4..5f9edd4e3e8 100644 --- a/gcc/tree-ssa-operands.h +++ b/gcc/tree-ssa-operands.h @@ -1,5 +1,5 @@ /* SSA operand management for trees. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index 390258f666b..95cf4d470a7 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -1,5 +1,5 @@ /* Optimization of PHI nodes by converting them into straightline code. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-phiprop.c b/gcc/tree-ssa-phiprop.c index 763d562344c..bf2dcdb4dd1 100644 --- a/gcc/tree-ssa-phiprop.c +++ b/gcc/tree-ssa-phiprop.c @@ -1,5 +1,5 @@ /* Backward propagation of indirect loads through PHIs. - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Richard Guenther This file is part of GCC. diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index c46d9ae3a9d..2de5db56839 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -1,5 +1,5 @@ /* SSA-PRE for trees. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Daniel Berlin and Steven Bosscher diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c index fc8041fd1dd..840d7e76272 100644 --- a/gcc/tree-ssa-propagate.c +++ b/gcc/tree-ssa-propagate.c @@ -1,5 +1,5 @@ /* Generic SSA value propagation engine. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-ssa-propagate.h b/gcc/tree-ssa-propagate.h index 1b8bf9042e5..2d8d8764104 100644 --- a/gcc/tree-ssa-propagate.h +++ b/gcc/tree-ssa-propagate.h @@ -1,6 +1,6 @@ /* Data structures and function declarations for the SSA value propagation engine. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c index 8106f83d4ad..b989ca55bb9 100644 --- a/gcc/tree-ssa-reassoc.c +++ b/gcc/tree-ssa-reassoc.c @@ -1,5 +1,5 @@ /* Reassociation for trees. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Daniel Berlin This file is part of GCC. diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index c27177826d5..65b8ce6b97b 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -1,5 +1,5 @@ /* SCC value numbering for trees - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Daniel Berlin This file is part of GCC. diff --git a/gcc/tree-ssa-sccvn.h b/gcc/tree-ssa-sccvn.h index 94e3603f740..f52783a68cf 100644 --- a/gcc/tree-ssa-sccvn.h +++ b/gcc/tree-ssa-sccvn.h @@ -1,5 +1,5 @@ /* Tree SCC value numbering - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Daniel Berlin This file is part of GCC. diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c index ecc1f6b91df..d2de147799d 100644 --- a/gcc/tree-ssa-sink.c +++ b/gcc/tree-ssa-sink.c @@ -1,5 +1,5 @@ /* Code sinking for trees - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Daniel Berlin This file is part of GCC. diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c index 3f88ff65c81..f55b7ee6dc8 100644 --- a/gcc/tree-ssa-strlen.c +++ b/gcc/tree-ssa-strlen.c @@ -1,5 +1,5 @@ /* String length optimization - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Jakub Jelinek This file is part of GCC. diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 924a0deec43..0ce134d9cb9 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -1,5 +1,5 @@ /* Tree based points-to analysis - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Daniel Berlin This file is part of GCC. diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c index 4e05246762d..f6b1ba08154 100644 --- a/gcc/tree-ssa-tail-merge.c +++ b/gcc/tree-ssa-tail-merge.c @@ -1,5 +1,5 @@ /* Tail merging for gimple. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Tom de Vries (tom@codesourcery.com) This file is part of GCC. diff --git a/gcc/tree-ssa-ter.c b/gcc/tree-ssa-ter.c index cefe47c6d5f..09dc3138a53 100644 --- a/gcc/tree-ssa-ter.c +++ b/gcc/tree-ssa-ter.c @@ -1,5 +1,5 @@ /* Routines for performing Temporary Expression Replacement (TER) in SSA trees. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Andrew MacLeod This file is part of GCC. diff --git a/gcc/tree-ssa-ter.h b/gcc/tree-ssa-ter.h index e71f78b492f..b9348bed07b 100644 --- a/gcc/tree-ssa-ter.h +++ b/gcc/tree-ssa-ter.h @@ -1,5 +1,5 @@ /* Header file for tree-ssa-ter.c exports. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c index e2eb471cb48..c447b72c32f 100644 --- a/gcc/tree-ssa-threadedge.c +++ b/gcc/tree-ssa-threadedge.c @@ -1,5 +1,5 @@ /* SSA Jump Threading - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Jeff Law This file is part of GCC. diff --git a/gcc/tree-ssa-threadedge.h b/gcc/tree-ssa-threadedge.h index 5cdae0e6847..f00560744c4 100644 --- a/gcc/tree-ssa-threadedge.h +++ b/gcc/tree-ssa-threadedge.h @@ -1,5 +1,5 @@ /* Header file for SSA jump threading. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-threadupdate.c b/gcc/tree-ssa-threadupdate.c index af8fd850835..c0476b48a1c 100644 --- a/gcc/tree-ssa-threadupdate.c +++ b/gcc/tree-ssa-threadupdate.c @@ -1,5 +1,5 @@ /* Thread edges through blocks and update the control flow and SSA graphs. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-threadupdate.h b/gcc/tree-ssa-threadupdate.h index 49501705235..426aca5e688 100644 --- a/gcc/tree-ssa-threadupdate.h +++ b/gcc/tree-ssa-threadupdate.h @@ -1,6 +1,6 @@ /* Communication between registering jump thread requests and updating the SSA/CFG for jump threading. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-uncprop.c b/gcc/tree-ssa-uncprop.c index 6318ec1911d..a43dd1a8441 100644 --- a/gcc/tree-ssa-uncprop.c +++ b/gcc/tree-ssa-uncprop.c @@ -1,5 +1,5 @@ /* Routines for discovering and unpropagating edge equivalences. - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c index c6b0a90f408..88fdf981a4c 100644 --- a/gcc/tree-ssa-uninit.c +++ b/gcc/tree-ssa-uninit.c @@ -1,5 +1,5 @@ /* Predicate aware uninitialized variable warning. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Xinliang David Li This file is part of GCC. diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 8c1aaf20c15..4a775fceb1c 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1,5 +1,5 @@ /* Miscellaneous SSA utility functions. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssa.h b/gcc/tree-ssa.h index 89ea5c64c76..1b1a9869062 100644 --- a/gcc/tree-ssa.h +++ b/gcc/tree-ssa.h @@ -1,5 +1,5 @@ /* Header file for any pass which requires SSA routines. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c index 4e576977235..2fc822081c8 100644 --- a/gcc/tree-ssanames.c +++ b/gcc/tree-ssanames.c @@ -1,5 +1,5 @@ /* Generic routines for manipulating SSA_NAME expressions - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-ssanames.h b/gcc/tree-ssanames.h index 3cb1bdaf4eb..bb3b5e6c1df 100644 --- a/gcc/tree-ssanames.h +++ b/gcc/tree-ssanames.h @@ -1,5 +1,5 @@ /* SSA name expresssons routines - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c index dc82340c99e..feb6eced014 100644 --- a/gcc/tree-stdarg.c +++ b/gcc/tree-stdarg.c @@ -1,5 +1,5 @@ /* Pass computing data for optimizing stdarg functions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Jakub Jelinek This file is part of GCC. diff --git a/gcc/tree-stdarg.h b/gcc/tree-stdarg.h index aecf8020f17..a4f8bf726f7 100644 --- a/gcc/tree-stdarg.h +++ b/gcc/tree-stdarg.h @@ -1,5 +1,5 @@ /* Header for a pass computing data for optimizing stdarg functions. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Jakub Jelinek This file is part of GCC. diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c index af7549f65ab..8227a01eea6 100644 --- a/gcc/tree-streamer-in.c +++ b/gcc/tree-streamer-in.c @@ -1,6 +1,6 @@ /* Routines for reading trees from a file stream. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c index b86092aef4e..a4d943bd3f4 100644 --- a/gcc/tree-streamer-out.c +++ b/gcc/tree-streamer-out.c @@ -1,6 +1,6 @@ /* Routines for emitting trees to a file stream. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-streamer.c b/gcc/tree-streamer.c index aa06b0bbfe6..af9461e7710 100644 --- a/gcc/tree-streamer.c +++ b/gcc/tree-streamer.c @@ -1,7 +1,7 @@ /* Miscellaneous utilities for tree streaming. Things that are used in both input and output are here. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-streamer.h b/gcc/tree-streamer.h index 1ed215c9792..2aca29a12b9 100644 --- a/gcc/tree-streamer.h +++ b/gcc/tree-streamer.h @@ -1,6 +1,6 @@ /* Data structures and functions for streaming trees. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Diego Novillo This file is part of GCC. diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c index efcc94ddc6a..547ac9e3b58 100644 --- a/gcc/tree-switch-conversion.c +++ b/gcc/tree-switch-conversion.c @@ -1,6 +1,6 @@ /* Lower GIMPLE_SWITCH expressions to something more efficient than a jump table. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c index 37603b2757c..ff19f639a69 100644 --- a/gcc/tree-tailcall.c +++ b/gcc/tree-tailcall.c @@ -1,5 +1,5 @@ /* Tail call optimization on trees. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 51c08b9b03a..ae9189cf476 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -1,5 +1,5 @@ /* Data References Analysis and Manipulation Utilities for Vectorization. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Dorit Naishlos and Ira Rosen diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c index 098012c15a4..d00a4b47ec3 100644 --- a/gcc/tree-vect-generic.c +++ b/gcc/tree-vect-generic.c @@ -1,5 +1,5 @@ /* Lower vector operations to scalar operations. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c index c5a3c72bc36..3eb85a5c498 100644 --- a/gcc/tree-vect-loop-manip.c +++ b/gcc/tree-vect-loop-manip.c @@ -1,5 +1,5 @@ /* Vectorizer Specific Loop Manipulations - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Dorit Naishlos and Ira Rosen diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index d13b1df85f9..69c8d219606 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -1,5 +1,5 @@ /* Loop Vectorization - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Dorit Naishlos and Ira Rosen diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index d1f8123c7a5..5db023fc40a 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -1,5 +1,5 @@ /* Analysis Utilities for Loop Vectorization. - Copyright (C) 2006-2013 Free Software Foundation, Inc. + Copyright (C) 2006-2014 Free Software Foundation, Inc. Contributed by Dorit Nuzman This file is part of GCC. diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index d1e17965165..2b075dfea96 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -1,5 +1,5 @@ /* SLP - Basic Block Vectorization - Copyright (C) 2007-2013 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. Contributed by Dorit Naishlos and Ira Rosen diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index e4f04c44760..eb615986c14 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -1,5 +1,5 @@ /* Statement Analysis and Transformation for Vectorization - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Dorit Naishlos and Ira Rosen diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index e3e552b81f2..a051dce628e 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -1,5 +1,5 @@ /* Vectorizer - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Dorit Naishlos This file is part of GCC. diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 00e56dcb388..935aab9d2b0 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -1,5 +1,5 @@ /* Vectorizer - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Dorit Naishlos This file is part of GCC. diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index d10abe953e4..f6da19252c6 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -1,5 +1,5 @@ /* Support routines for Value Range Propagation (VRP). - Copyright (C) 2005-2013 Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. Contributed by Diego Novillo . This file is part of GCC. diff --git a/gcc/tree.c b/gcc/tree.c index 4f9a1ea487c..e4e289ad201 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -1,5 +1,5 @@ /* Language-independent node constructors for parse phase of GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree.def b/gcc/tree.def index 364e510adf9..f8d64447d51 100644 --- a/gcc/tree.def +++ b/gcc/tree.def @@ -1,6 +1,6 @@ /* This file contains the definitions and documentation for the tree codes used in GCC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tree.h b/gcc/tree.h index 664bdfd3953..fa79b6fc4a9 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -1,5 +1,5 @@ /* Definitions for the ubiquitous 'tree' type for GNU compilers. - Copyright (C) 1989-2013 Free Software Foundation, Inc. + Copyright (C) 1989-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/treestruct.def b/gcc/treestruct.def index 7769615bb42..7d620fbacd3 100644 --- a/gcc/treestruct.def +++ b/gcc/treestruct.def @@ -1,7 +1,7 @@ /* This file contains the definitions for the tree structure enumeration used in GCC. -Copyright (C) 2005-2013 Free Software Foundation, Inc. +Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/tsan.c b/gcc/tsan.c index d12459fbfbf..2c053bd9e34 100644 --- a/gcc/tsan.c +++ b/gcc/tsan.c @@ -1,5 +1,5 @@ /* GCC instrumentation plugin for ThreadSanitizer. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Dmitry Vyukov This file is part of GCC. diff --git a/gcc/tsan.h b/gcc/tsan.h index 8a7ba229147..8f3bc71d357 100644 --- a/gcc/tsan.h +++ b/gcc/tsan.h @@ -1,5 +1,5 @@ /* ThreadSanitizer, a data race detector. - Copyright (C) 2011-2013 Free Software Foundation, Inc. + Copyright (C) 2011-2014 Free Software Foundation, Inc. Contributed by Dmitry Vyukov This file is part of GCC. diff --git a/gcc/tsystem.h b/gcc/tsystem.h index bc628a076d8..a46ead51f40 100644 --- a/gcc/tsystem.h +++ b/gcc/tsystem.h @@ -1,6 +1,6 @@ /* Get common system includes and various definitions and declarations based on target macros. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/typeclass.h b/gcc/typeclass.h index c431b507a56..e60802d1026 100644 --- a/gcc/typeclass.h +++ b/gcc/typeclass.h @@ -1,5 +1,5 @@ /* Type class enum - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/ubsan.c b/gcc/ubsan.c index dfc9fbc6ab6..7cc8c180ba8 100644 --- a/gcc/ubsan.c +++ b/gcc/ubsan.c @@ -1,5 +1,5 @@ /* UndefinedBehaviorSanitizer, undefined behavior detector. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Marek Polacek This file is part of GCC. diff --git a/gcc/ubsan.h b/gcc/ubsan.h index fa7698509c4..e793ee3d431 100644 --- a/gcc/ubsan.h +++ b/gcc/ubsan.h @@ -1,5 +1,5 @@ /* UndefinedBehaviorSanitizer, undefined behavior detector. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. Contributed by Marek Polacek This file is part of GCC. diff --git a/gcc/valtrack.c b/gcc/valtrack.c index c61c11704e4..91cb0d51b30 100644 --- a/gcc/valtrack.c +++ b/gcc/valtrack.c @@ -1,6 +1,6 @@ /* Infrastructure for tracking user variable locations and values throughout compilation. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Alexandre Oliva . This file is part of GCC. diff --git a/gcc/valtrack.h b/gcc/valtrack.h index 7bd2fb038c0..7ed9ae290e2 100644 --- a/gcc/valtrack.h +++ b/gcc/valtrack.h @@ -1,6 +1,6 @@ /* Infrastructure for tracking user variable locations and values throughout compilation. - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2014 Free Software Foundation, Inc. Contributed by Alexandre Oliva . This file is part of GCC. diff --git a/gcc/value-prof.c b/gcc/value-prof.c index c684835bdd8..28900934744 100644 --- a/gcc/value-prof.c +++ b/gcc/value-prof.c @@ -1,5 +1,5 @@ /* Transformations based on profile information for values. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/value-prof.h b/gcc/value-prof.h index ef77af4395e..9d2c3516d22 100644 --- a/gcc/value-prof.h +++ b/gcc/value-prof.h @@ -1,5 +1,5 @@ /* Definitions for transformations based on profile information for values. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index b0d7922ce82..ee16aed3564 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -1,5 +1,5 @@ /* Variable tracking routines for the GNU compiler. - Copyright (C) 2002-2013 Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/varasm.c b/gcc/varasm.c index 1d2c03e6fbb..24b36b6cafd 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1,5 +1,5 @@ /* Output variables, constants and external declarations, for GNU compiler. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/varasm.h b/gcc/varasm.h index d2a01a700ab..01b0850eb2c 100644 --- a/gcc/varasm.h +++ b/gcc/varasm.h @@ -1,5 +1,5 @@ /* Declarations for varasm.h. - Copyright (C) 2013 Free Software Foundation, Inc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/varpool.c b/gcc/varpool.c index 0f36cd139aa..54570343e0a 100644 --- a/gcc/varpool.c +++ b/gcc/varpool.c @@ -1,5 +1,5 @@ /* Callgraph handling code. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. diff --git a/gcc/vec.c b/gcc/vec.c index 78252e0d088..bd0af2dc4ed 100644 --- a/gcc/vec.c +++ b/gcc/vec.c @@ -1,5 +1,5 @@ /* Vector API for GNU compiler. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Nathan Sidwell Re-implemented in C++ by Diego Novillo diff --git a/gcc/vec.h b/gcc/vec.h index afde351a796..5d148f90a63 100644 --- a/gcc/vec.h +++ b/gcc/vec.h @@ -1,5 +1,5 @@ /* Vector API for GNU compiler. - Copyright (C) 2004-2013 Free Software Foundation, Inc. + Copyright (C) 2004-2014 Free Software Foundation, Inc. Contributed by Nathan Sidwell Re-implemented in C++ by Diego Novillo diff --git a/gcc/version.c b/gcc/version.c index 5b09da78c4d..8c1e39f9075 100644 --- a/gcc/version.c +++ b/gcc/version.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997-2013 Free Software Foundation, Inc. +/* Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/vmsdbg.h b/gcc/vmsdbg.h index 6158272a0b0..db1a416a8ba 100644 --- a/gcc/vmsdbg.h +++ b/gcc/vmsdbg.h @@ -1,5 +1,5 @@ /* Definitions for the data structures and codes used in VMS debugging. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/vmsdbgout.c b/gcc/vmsdbgout.c index 7972dd7a93e..3ee44bfd559 100644 --- a/gcc/vmsdbgout.c +++ b/gcc/vmsdbgout.c @@ -1,5 +1,5 @@ /* Output VMS debug format symbol table information from GCC. - Copyright (C) 1987-2013 Free Software Foundation, Inc. + Copyright (C) 1987-2014 Free Software Foundation, Inc. Contributed by Douglas B. Rupp (rupp@gnat.com). Updated by Bernard W. Giroud (bgiroud@users.sourceforge.net). diff --git a/gcc/vtable-verify.c b/gcc/vtable-verify.c index 27b7bc8b08c..4e4c21a9f4f 100644 --- a/gcc/vtable-verify.c +++ b/gcc/vtable-verify.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2013 Free Software Foundation, Inc. +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/vtable-verify.h b/gcc/vtable-verify.h index c4465fef425..14735b1ca76 100644 --- a/gcc/vtable-verify.h +++ b/gcc/vtable-verify.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2013 Free Software Foundation, Inc. +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/web.c b/gcc/web.c index d281f45b230..d67151c7139 100644 --- a/gcc/web.c +++ b/gcc/web.c @@ -1,6 +1,6 @@ /* Web construction code for GNU compiler. Contributed by Jan Hubicka. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/xcoff.h b/gcc/xcoff.h index 1e379d4bf9f..9a07173a0fb 100644 --- a/gcc/xcoff.h +++ b/gcc/xcoff.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003-2013 Free Software Foundation, Inc. +/* Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c index c14f01424f3..77589aac03d 100644 --- a/gcc/xcoffout.c +++ b/gcc/xcoffout.c @@ -1,5 +1,5 @@ /* Output xcoff-format symbol table information from GNU compiler. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GCC. diff --git a/gcc/xcoffout.h b/gcc/xcoffout.h index fdebb2e7308..3373c8e6e7a 100644 --- a/gcc/xcoffout.h +++ b/gcc/xcoffout.h @@ -1,6 +1,6 @@ /* XCOFF definitions. These are needed in dbxout.c, final.c, and xcoffout.h. - Copyright (C) 1998-2013 Free Software Foundation, Inc. + Copyright (C) 1998-2014 Free Software Foundation, Inc. This file is part of GCC. -- cgit v1.2.1 From 5a5f1b4888d9cd093b608d0f547d50d2a4928908 Mon Sep 17 00:00:00 2001 From: glisse Date: Thu, 2 Jan 2014 22:26:24 +0000 Subject: 2014-01-02 Marc Glisse PR c++/59378 gcc/cp/ * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments in templates. gcc/testsuite/ * g++.dg/ext/pr59378.C: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206300 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/typeck.c | 23 ++++++++++++++++++----- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/ext/pr59378.C | 8 ++++++++ 4 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/g++.dg/ext/pr59378.C (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d27c2a27e62..01a01ab8c43 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-01-02 Marc Glisse + + PR c++/59378 + * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments + in templates. + 2014-01-02 Richard Sandiford Update copyright years diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index f45c5b9944d..84e287e56bc 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -4944,12 +4944,25 @@ build_x_vec_perm_expr (location_t loc, tree arg0, tree arg1, tree arg2, tsubst_flags_t complain) { - if (processing_template_decl - && (type_dependent_expression_p (arg0) + tree orig_arg0 = arg0; + tree orig_arg1 = arg1; + tree orig_arg2 = arg2; + if (processing_template_decl) + { + if (type_dependent_expression_p (arg0) || type_dependent_expression_p (arg1) - || type_dependent_expression_p (arg2))) - return build_min_nt_loc (loc, VEC_PERM_EXPR, arg0, arg1, arg2); - return c_build_vec_perm_expr (loc, arg0, arg1, arg2, complain & tf_error); + || type_dependent_expression_p (arg2)) + return build_min_nt_loc (loc, VEC_PERM_EXPR, arg0, arg1, arg2); + arg0 = build_non_dependent_expr (arg0); + if (arg1) + arg1 = build_non_dependent_expr (arg1); + arg2 = build_non_dependent_expr (arg2); + } + tree exp = c_build_vec_perm_expr (loc, arg0, arg1, arg2, complain & tf_error); + if (processing_template_decl && exp != error_mark_node) + return build_min_non_dep (VEC_PERM_EXPR, exp, orig_arg0, + orig_arg1, orig_arg2); + return exp; } /* Return a tree for the sum or difference (RESULTCODE says which) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4a31319270f..fad02af88de 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-01-02 Marc Glisse + + PR c++/59378 + * g++.dg/ext/pr59378.C: New file. + 2014-01-02 Richard Sandiford Update copyright years diff --git a/gcc/testsuite/g++.dg/ext/pr59378.C b/gcc/testsuite/g++.dg/ext/pr59378.C new file mode 100644 index 00000000000..19d06b5930a --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/pr59378.C @@ -0,0 +1,8 @@ +// { dg-do compile } +typedef int v4si __attribute__ ((vector_size (4*sizeof(int)))); +template +void traverse(v4si& bounds){ + v4si m = {0,1,2,3}; + bounds = __builtin_shuffle(bounds, m); +} +template void traverse<0>(v4si&); -- cgit v1.2.1 From cdfa9d87ec6fa7c2b9c1f3681345c53d2fc34e78 Mon Sep 17 00:00:00 2001 From: glisse Date: Thu, 2 Jan 2014 22:30:43 +0000 Subject: 2014-01-02 Marc Glisse gcc/cp/ * call.c (convert_like_real): Check complain. gcc/testsuite/ * g++.dg/cpp0x/initlist-explicit-sfinae.C: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206302 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 4 ++ gcc/cp/call.c | 2 + gcc/testsuite/ChangeLog | 4 ++ .../g++.dg/cpp0x/initlist-explicit-sfinae.C | 47 ++++++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/initlist-explicit-sfinae.C (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 01a01ab8c43..97e2d74c32b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Marc Glisse + + * call.c (convert_like_real): Check complain. + 2014-01-02 Marc Glisse PR c++/59378 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index f9c566d6401..bff98714057 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -5934,6 +5934,8 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum, && !(BRACE_ENCLOSED_INITIALIZER_P (expr) && CONSTRUCTOR_IS_DIRECT_INIT (expr))) { + if (!(complain & tf_error)) + return error_mark_node; error ("converting to %qT from initializer list would use " "explicit constructor %qD", totype, convfn); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fad02af88de..12036de0e98 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Marc Glisse + + * g++.dg/cpp0x/initlist-explicit-sfinae.C: New file. + 2014-01-02 Marc Glisse PR c++/59378 diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-explicit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/initlist-explicit-sfinae.C new file mode 100644 index 00000000000..a2ced71a75e --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist-explicit-sfinae.C @@ -0,0 +1,47 @@ +// { dg-do compile } +// { dg-options -std=c++11 } +template +_Tp&& declval() noexcept; + +template +struct bt { + static constexpr bool value = b; +}; + +template +class my_is_convertible_many { + private: + template + struct indirector { + indirector(To); + }; + + template + struct tag {}; + + template + static auto test(tag) + -> decltype(indirector({declval()...}), bt()); + static auto test(...) + -> bt; + + public: + static constexpr bool value = decltype(test(tag()))::value; +}; + +struct A {}; +struct B {}; +struct C {}; + +struct Test { + Test(A, A); + //Test(B, B); + explicit Test(C, C); +}; + +int main() { + static_assert(my_is_convertible_many::value,""); // true, correct + static_assert(!my_is_convertible_many::value,""); // false, correct + static_assert(!my_is_convertible_many::value,""); // error + return 0; +} -- cgit v1.2.1 From 37c19cb6f8d23b4367e9f25f71fa397cd5362dcb Mon Sep 17 00:00:00 2001 From: glisse Date: Thu, 2 Jan 2014 22:43:24 +0000 Subject: 2014-01-02 Marc Glisse PR c++/59641 gcc/cp/ * call.c (build_conditional_expr_1): Check the return value of force_rvalue. gcc/testsuite/ * g++.dg/cpp0x/pr59641.C: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206303 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/call.c | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/cpp0x/pr59641.C | 8 ++++++++ 4 files changed, 25 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/pr59641.C (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 97e2d74c32b..c77d86facec 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-01-02 Marc Glisse + + PR c++/59641 + * call.c (build_conditional_expr_1): Check the return value of + force_rvalue. + 2014-01-02 Marc Glisse * call.c (convert_like_real): Check complain. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index bff98714057..46b3748ead5 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -4402,6 +4402,12 @@ build_conditional_expr_1 (location_t loc, tree arg1, tree arg2, tree arg3, arg2 = force_rvalue (arg2, complain); arg3 = force_rvalue (arg3, complain); + /* force_rvalue can return error_mark on valid arguments. */ + if (error_operand_p (arg1) + || error_operand_p (arg2) + || error_operand_p (arg3)) + return error_mark_node; + tree arg1_type = TREE_TYPE (arg1); arg2_type = TREE_TYPE (arg2); arg3_type = TREE_TYPE (arg3); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 12036de0e98..359421a406d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-01-02 Marc Glisse + + PR c++/59641 + * g++.dg/cpp0x/pr59641.C: New file. + 2014-01-02 Marc Glisse * g++.dg/cpp0x/initlist-explicit-sfinae.C: New file. diff --git a/gcc/testsuite/g++.dg/cpp0x/pr59641.C b/gcc/testsuite/g++.dg/cpp0x/pr59641.C new file mode 100644 index 00000000000..12e8f92861f --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/pr59641.C @@ -0,0 +1,8 @@ +// { dg-options "-std=gnu++11" } +typedef int T __attribute__((vector_size(2*sizeof(int)))); + +void foo(T& r, const T& a, const T& b) +{ + constexpr T c = a < b; // { dg-error "constant" } + r = c ? a : b; +} -- cgit v1.2.1 From 7178d1ea5422028c8acb85e283bd67c352434a7e Mon Sep 17 00:00:00 2001 From: glisse Date: Thu, 2 Jan 2014 22:45:56 +0000 Subject: 2014-01-02 Marc Glisse PR c++/59087 gcc/cp/ * parser.c (cp_parser_userdef_numeric_literal): Mention -fext-numeric-literals in the message. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206304 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/parser.c | 3 +++ 2 files changed, 9 insertions(+) (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c77d86facec..5ec2e4bdeac 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-01-02 Marc Glisse + + PR c++/59087 + * parser.c (cp_parser_userdef_numeric_literal): Mention + -fext-numeric-literals in the message. + 2014-01-02 Marc Glisse PR c++/59641 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 08ae4512fb1..35dcefd2656 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -3925,6 +3925,9 @@ cp_parser_userdef_numeric_literal (cp_parser *parser) release_tree_vector (args); error ("unable to find numeric literal operator %qD", name); + if (!cpp_get_options (parse_in)->ext_numeric_literals) + inform (token->location, "use -std=gnu++11 or -fext-numeric-literals " + "to enable more built-in suffixes"); return error_mark_node; } -- cgit v1.2.1 From b671739dfc1d97ef7970c2750a41de1914174ca4 Mon Sep 17 00:00:00 2001 From: jakub Date: Thu, 2 Jan 2014 22:52:20 +0000 Subject: Rotate cp/ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206305 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 4292 +----------------------------------------------- gcc/cp/ChangeLog-2013 | 4295 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 4296 insertions(+), 4291 deletions(-) create mode 100644 gcc/cp/ChangeLog-2013 (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5ec2e4bdeac..006c85ba8ef 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -28,4298 +28,8 @@ * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use the standard form for the copyright notice. - -2013-12-23 Jason Merrill - - PR c++/59271 - * lambda.c (build_capture_proxy): Use build_cplus_array_type. - - PR c++/59349 - * parser.c (cp_parser_lambda_introducer): Handle empty init. - -2013-12-23 Stuart Hastings - Bill Maddox - Jason Merrill - - PR c++/41090 - * optimize.c (can_alias_cdtor, populate_clone_array): Split out - from maybe_clone_body. - (maybe_thunk_body): New function. - (maybe_clone_body): Call it. - * mangle.c (write_mangled_name): Remove code to suppress - writing of mangled name for cloned constructor or destructor. - (write_special_name_constructor): Handle decloned constructor. - (write_special_name_destructor): Handle decloned destructor. - * method.c (trivial_fn_p): Handle decloning. - * semantics.c (expand_or_defer_fn_1): Clone after setting linkage. - -2013-12-23 Marek Polacek - - PR c++/59111 - * search.c (lookup_conversions): Return NULL_TREE if !CLASS_TYPE_P. - -2013-12-20 Trevor saunders - - * semantics.c (build_anon_member_initialization): Replace - stack_vec with auto_vec. - -2013-12-18 Balaji V. Iyer - - * parser.c (cp_parser_cilk_simd_clause_name): Changed cilk_clause_name - to omp_clause_name. - -2013-12-17 Thomas Schwinge - - * parser.c (cp_parser_omp_parallel): Fix description. - -2013-12-12 Jason Merrill - - PR c++/58954 - * pt.c (resolve_overloaded_unification): Use instantiate_template. - -2013-12-12 Jakub Jelinek - - PR c++/58627 - * class.c (resolve_address_of_overloaded_function): Don't call ggc_free - on targs. - -2013-12-11 Balaji V. Iyer - - * cp-tree.h (cilk_valid_spawn): New prototype. - (gimplify_cilk_spawn): Likewise. - (create_try_catch_expr): Likewise. - * decl.c (finish_function): Insert Cilk function-calls when a - _Cilk_spawn is used in a function. - * parser.c (cp_parser_postfix_expression): Added RID_CILK_SPAWN and - RID_CILK_SYNC cases. - * cp-cilkplus.c (set_cilk_except_flag): New function. - (set_cilk_except_data): Likewise. - (cilk_install_body_with_frame_cleanup): Likewise. - * except.c (create_try_catch_expr): Likewise. - * parser.h (IN_CILK_SPAWN): New #define. - * pt.c (tsubst_expr): Added CILK_SPAWN_STMT and CILK_SYNC_STMT cases. - * semantics.c (potential_constant_expression_1): Likewise. - * typeck.c (cp_build_compound_expr): Reject a spawned function in a - compound expression. - (check_return_expr): Reject a spawned function in a return expression. - * cp-gimplify.c (cp_gimplify_expr): Added a CILK_SPAWN_STMT and - CALL_EXPR case. Added handling of spawned function in MODIFY_EXPR - and INIT_EXPR. - -2013-12-09 Paolo Carlini - - PR c++/59435 - * parser.c (cp_parser_cache_defarg): sizeof ... ( p ) can - occur in a default argument too. - -2013-12-06 Caroline Tice - - Submitting patch from Stephen Checkoway, s@cs.jhu.edu - * vtable-class-hierarchy.c (init_functions): Make the libvtv - function decls externally visible. - -2013-12-06 Oleg Endo - - * decl2.c: Remove struct tags when referring to class varpool_node. - -2013-12-05 Jason Merrill - - PR c++/59044 - PR c++/59052 - * pt.c (most_specialized_class): Use the partially instantiated - template for deduction. Drop the TMPL parameter. - -2013-12-05 Paolo Carlini - - * decl.c (duplicate_decls): Replace pairs of errors and permerrors - with error + inform (permerror + inform, respectively). - -2013-12-04 Joseph Myers - - PR c/52023 - * typeck.c (cxx_sizeof_or_alignof_type): Update call to - c_sizeof_or_alignof_type. - -2013-12-04 Jakub Jelinek - - PR c++/59268 - * pt.c (tsubst_copy_and_build): Handle POINTER_PLUS_EXPR. - -2013-11-29 Marek Polacek - - PR sanitizer/59331 - * decl.c (compute_array_index_type): Don't build COMPOUND_EXPR for - instrumentation. - -2013-11-28 Jakub Jelinek - - PR c++/59297 - * semantics.c (finish_omp_atomic): Call finish_expr_stmt - rather than add_stmt. - -2013-11-28 Rainer Orth - - * g++spec.c (TIMELIB): Define. - (WITHLIBC, SKIPOPT): Adjust values. - (lang_specific_driver): Add TIME_LIBRARY if not passed explicitly. - -2013-11-28 Jakub Jelinek - - PR c/59310 - * parser.c (cp_parser_omp_target): Call keep_next_level only - if flag_openmp. - -2013-11-27 Paolo Carlini - - PR c++/58647 - * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]): - Handle function COMPONENT_REFs. - -2013-11-27 Aldy Hernandez - Jakub Jelinek - - * semantics.c (finish_omp_clauses): For #pragma omp declare simd - linear clause step call maybe_constant_value. - -2013-11-27 Tom de Vries - Marc Glisse - - PR c++/59032 - * typeck.c (cp_build_unary_op): Allow vector increment and decrement. - -2013-11-27 Tom de Vries - Marc Glisse - - PR middle-end/59037 - * semantics.c (cxx_fold_indirect_ref): Don't create out-of-bounds - BIT_FIELD_REF. - -2013-11-26 Jakub Jelinek - - PR c++/58874 - * parser.c (cp_parser_late_parsing_for_member): For OpenMP UDRs - pass 2 instead of 0 to finish_function. - -2013-11-26 Paolo Carlini - - PR c++/58700 - * decl.c (grokdeclarator): Don't try to pass declarator->id_loc - to build_lang_decl_loc when declarator is null. - -2013-11-26 Paolo Carlini - - * cvt.c (cp_convert_and_check): Avoid calling cp_convert - unnecessarily. - -2013-11-25 Paolo Carlini - - PR c++/54485 - * decl.c (duplicate_decls): Enforce 8.3.6/6 about default arguments - for member functions of class templates. - -2013-11-25 Paolo Carlini - - PR c++/58607 - * semantics.c (check_constexpr_ctor_body): Check for BIND_EXPR_VARS. - -2013-11-25 Paolo Carlini - - PR c++/58810 - * decl.c (grokdeclarator): Don't handle qualified free functions here, - leave the diagnostic to grokfndecl. - -2013-11-25 Paolo Carlini - - PR c++/59080 - * pt.c (unify): Don't call unify_array_domain with a NULL_TREE - third argument. - - PR c++/59096 - * pt.c (apply_late_template_attributes): Check that TREE_VALUE - isn't NULL_TREE in the attribute_takes_identifier_p case. - -2013-11-25 Adam Butcher - - PR c++/59112 - PR c++/59113 - * parser.c (cp_parser_parameter_declaration_clause): Disallow implicit - function templates in local functions unless defining a lambda. - -2013-11-23 Easwaran Raman - - PR c++/59031 - * call.c (build_new_method_call_1): Comnpare function context - with BASELINK_BINFO type rather than instance type before - marking the call with LOOKUP_NONVIRTUAL. - -2013-11-23 Jason Merrill - - PR c++/58868 - * init.c (build_aggr_init): Don't clobber the type of init - if we got an INIT_EXPR back from build_vec_init. - (build_vec_init): Do digest_init on trivial initialization. - -2013-11-23 Alexander Ivchenko - - PR c++/58525 - * call.c (build_operator_new_call): Add flag_exceptions check. - * decl.c (compute_array_index_type): Ditto. - * init.c (build_new_1): Ditto. - (build_vec_init): Ditto. - -2013-11-22 Jakub Jelinek - - * cp-gimplify.c: Include target.h and c-family/c-ubsan.h. - (cp_ubsan_maybe_instrument_return): New function. - (cp_genericize): Call it if -fsanitize=return. - - * decl2.c: Include asan.h. - (one_static_initialization_or_destruction): If -fsanitize=address, - init is non-NULL and guard is NULL, set - vnode->dynamically_initialized. - (do_static_initialization_or_destruction): Call - __asan_{before,after}_dynamic_init around the static initialization. - -2013-11-22 Andrew MacLeod - - * class.c: Add required include files from gimple.h. - * cp-gimplify.c: Likewise - * decl2.c: Likewise - * init.c: Likewise - * optimize.c: Likewise - * pt.c: Likewise - * semantics.c: Likewise - * tree.c: Likewise - * typeck.c: Likewise - * vtable-class-hierarchy.c: Likewise - -2013-11-22 David Malcolm - - * call.c (build_integral_nontype_arg_conv): Remove use of - EXPR_LOC_OR_HERE macro. - (convert_like_real): Likewise. - (convert_arg_to_ellipsis): Likewise. - (build_cxx_call): Likewise. - (perform_implicit_conversion_flags): Likewise. - (initialize_reference): Likewise. - * cvt.c (cp_convert_to_pointer): Likewise. - (convert_to_reference): Likewise. - (ocp_convert): Likewise. - (convert_to_void): Likewise. - * decl.c (pop_label): Update comment. - (pop_switch): Remove use of EXPR_LOC_OR_HERE macro. - (check_tag_decl): Remove use of in_system_header macro. - (make_rtl_for_nonlocal_decl): Remove use of input_filename - macro. - (compute_array_index_type): Remove use of in_system_header - macro. - (grokdeclarator): Likewise. - * error.c (dump_global_iord): Remove use of input_filename - macro. - (location_of): Remove use of EXPR_LOC_OR_HERE macro. - (maybe_warn_cpp0x): Remove use of in_system_header macro. - * init.c (build_new_1): Remove use of EXPR_LOC_OR_HERE macro. - * lex.c (handle_pragma_interface): Remove use of input_filename - macro. - (handle_pragma_implementation): Likewise. - (cxx_make_type): Likewise. - (in_main_input_context): Likewise. - * name-lookup.c (push_binding_level): Remove use of - input_line macro. - (leave_scope): Likewise. - (resume_scope): Likewise. - * parser.c (cp_parser_unqualified_id): Remove use of - in_system_header macro. - (cp_parser_cast_expression): Likewise. - (cp_parser_declaration_seq_opt): Likewise. - (cp_parser_enumerator_list): Likewise. - (cp_parser_parameter_declaration_clause): Likewise. - (cp_parser_exception_specification_opt): Likewise. - * pt.c (unify_arg_conversion): Remove use of EXPR_LOC_OR_HERE - macro. - (convert_nontype_argument): Likewise. - (push_tinst_level): Remove use of in_system_header macro. - (tsubst_copy_and_build): Remove use of EXPR_LOC_OR_HERE - macros. - (do_decl_instantiation): Remove use of in_system_header macro. - (do_type_instantiation): Likewise. - * semantics.c (finish_call_expr): Remove use of EXPR_LOC_OR_HERE - macro. - (begin_class_definition): Remove use of input_filename macro. - (cxx_eval_call_expression): Remove use of EXPR_LOC_OR_HERE - macro. - (cxx_eval_constant_expression): Likewise. - (potential_constant_expression_1): Likewise. - * typeck.c (decay_conversion): Likewise. - (rationalize_conditional_expr): Likewise. - (build_x_compound_expr_from_list): Likewise. - (convert_for_assignment): Likewise. - * typeck2.c (check_narrowing): Likewise. - -2013-11-22 Trevor Saunders - - * parser.c, semantics.c: Change some local variables from vec to - auto_vec or stack_vec. - -2013-11-18 Richard Sandiford - - * decl.c (reshape_init_array_1): Use tree_to_uhwi rather than - tree_low_cst. - (grokdeclarator): Update comment to refer to tree_to_[su]hwi rather - than tree_low_cst. - -2013-11-18 Richard Sandiford - - * call.c, class.c, decl.c, error.c: Replace tree_low_cst (..., 1) with - tree_to_uhwi throughout. - -2013-11-18 Richard Sandiford - - * class.c, dump.c, error.c, init.c, method.c, parser.c, semantics.c: - Replace tree_low_cst (..., 0) with tree_to_shwi throughout. - -2013-11-18 Richard Sandiford - - * decl.c: Replace host_integerp (..., 1) with tree_fits_uhwi_p - throughout. - -2013-11-18 Richard Sandiford - - * error.c, init.c, parser.c, semantics.c: Replace - host_integerp (..., 0) with tree_fits_shwi_p throughout. - -2013-11-17 Paolo Carlini - - PR c++/59123 - * decl.c (validate_constexpr_redeclaration): Redeclarations of - variables can differ in constexpr. - -2013-11-16 Paolo Carlini - - PR c++/29143 - * semantics.c (finish_call_expr): Ensure that for OVERLOADs too - '(&f)(...)' is the same as '(f)(...)', per 13.3.1.1. - -2013-11-15 Aldy Hernandez - - * Make-lang.in (CXX_AND_OBJCXX_OBJS): Depend on cp/cp-cilkplus.o. - * cp-cilkplus.c: New file. - * cp-tree.h (cpp_validate_cilk_plus_loop): Protoize. - * parser.c (cp_parser_cilk_simd): New. - (cp_debug_parser): Add case for IN_CILK_SIMD_FOR. - (cp_parser_jump_statement): Same. - (cp_parser_omp_for_cond): Add new argument. - Add case for NE_EXPR. - (cp_parser_omp_for_loop): Pass new argument to - cp_parser_omp_for_cond. - Handle CILK_SIMD nodes. - Abstract initilization code to.. - (cp_parser_omp_for_loop_init): ...here. - (cp_parser_pragma): Add case for PRAGMA_CILK_SIMD. - (cp_parser_cilk_simd_vectorlength): New. - (cp_parser_cilk_simd_linear): New. - (cp_parser_cilk_simd_clause_name): New. - (cp_parser_cilk_simd_all_clauses): New. - (cp_parser_cilk_simd): New. - * parser.h (IN_CILK_SIMD_FOR): New macro. - * pt.c (tsubst_expr): Add case for CILK_SIMD. - * typeck2.c (cxx_readonly_error): Pass location argument to - readonly_error. - -2013-11-14 Paolo Carlini - - PR c++/57887 - * parser.c (cp_parser_late_parsing_nsdmi): Call - maybe_begin_member_template_processing. - * pt.c (maybe_begin_member_template_processing): Handle NSDMIs. - (inline_needs_template_parms): Adjust. - -2013-11-14 Andrew MacLeod - - * class.c: Include only gimplify.h and gimple.h as needed. - * cp-gimplify.c: Likewise. - * error.c: Likewise. - * init.c: Likewise. - * optimize.c: Likewise. - * pt.c: Likewise. - * semantics.c: Likewise. - * tree.c: Likewise. - * vtable-class-hierarchy.c: Likewise. - -2013-11-14 Diego Novillo - - * call.c: Include stor-layout.h. - Include trans-mem.h. - Include stringpool.h. - * class.c: Include stringpool.h. - Include stor-layout.h. - Include attribs.h. - * cp-gimplify.c: Include stor-layout.h. - * cvt.c: Include stor-layout.h. - * decl.c: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - Include attribs.h. - Include calls.h. - * decl2.c: Include stringpool.h. - Include varasm.h. - Include attribs.h. - Include stor-layout.h. - Include calls.h. - * error.c: Include stringpool.h. - * except.c: Include stringpool.h. - Include trans-mem.h. - Include attribs.h. - * init.c: Include stringpool.h. - Include varasm.h. - * lambda.c: Include stringpool.h. - * lex.c: Include stringpool.h. - * mangle.c: Include stor-layout.h. - Include stringpool.h. - * method.c: Include stringpool.h. - Include varasm.h. - * name-lookup.c: Include stringpool.h. - Include print-tree.h. - Include attribs.h. - * optimize.c: Include stringpool.h. - * parser.c: Include print-tree.h. - Include stringpool.h. - Include attribs.h. - Include trans-mem.h. - * pt.c: Include stringpool.h. - Include varasm.h. - Include attribs.h. - Include stor-layout.h. - * ptree.c: Include print-tree.h. - * repo.c: Include stringpool.h. - * rtti.c: Include stringpool.h. - Include stor-layout.h. - * semantics.c: Include stmt.h. - Include varasm.h. - Include stor-layout.h. - Include stringpool.h. - * tree.c: Include stor-layout.h. - Include print-tree.h. - Include tree-iterator.h. - * typeck.c: Include stor-layout.h. - Include varasm.h. - * typeck2.c: Include stor-layout.h. - Include varasm.h. - * vtable-class-hierarchy.c: Include stringpool.h. - Include stor-layout.h. - -2013-11-12 Andrew MacLeod - - * class.c: Include gimplify.h. - * cp-gimplify.c: Likewise. - * error.c: Likewise. - * init.c: Likewise. - * optimize.c: Likewise. - * pt.c: Likewise. - * semantics.c: Likewise. - * tree.c: Likewise. - * vtable-class-hierarchy.c: Likewise. - * decl2.c: Don't include gimple.h. - * except.c: Likewise. - * method.c: Include pointer-set.h instead of gimple.h. - -2013-11-12 Adam Butcher - - * pt.c (convert_generic_types_to_packs): New function to transform - a range of implicitly introduced non-pack template parms to be parameter - packs. - * cp-tree.h (convert_generic_types_to_packs): Declare. - * parser.c (cp_parser_parameter_declaration_list): If a function - parameter pack contains generic types, convert them to packs prior to - grokdeclarator. - -2013-11-12 Adam Butcher - - PR c++/58534 - PR c++/58536 - PR c++/58548 - PR c++/58549 - PR c++/58637 - * parser.h (struct cp_parser): New members implicit_template_parms, - implicit_template_scope and auto_is_implicit_function_template_parm_p. - * parser.c (add_implicit_template_parms): Refactor as ... - (synthesize_implicit_template_parm): ... this to append a new template - type parm to the current template parameter list (introducing a new list - if necessary). Removed push_deferring_access_checks. - (finish_fully_implicit_template): Removed pop_deferring_access_checks. - (cp_parser_new): Initialize new cp_parser members. - (cp_parser_parameter_declaration_clause): Consider auto as implicit - template parm when parsing a parameter declaration (unless parsing an - explicit specialization). - (cp_parser_parameter_declaration_list): Remove local - implicit_template_parms counter and reset cp_parser implicit template - state when complete. - (cp_parser_lambda_expression): Reset implicit template cp_parser members - whilst generating lambda class. - (cp_parser_function_definition_after_declarator): Reset implicit - template cp_parser members whilst parsing function definition. - (make_generic_type_name): Respell '' as 'auto:N' which works - better with template diagnostics. - (cp_parser_simple_type_specifier): Synthesize implicit template parm on - parsing 'auto' if auto_is_implicit_function_template_parm_p and provide - diagnostics ... - * decl.c (grokdeclarator): ... that were previously done here. - -2013-11-12 Paolo Carlini - - PR c++/57734 - * pt.c (lookup_template_class_1): Handle alias template declarations - of enumeration types. - -2013-11-10 Paolo Carlini - - * cvt.c (cp_convert_to_pointer): Call build_ptrmemfunc before - maybe_warn_zero_as_null_pointer_constant to avoid duplicate - -Wzero-as-null-pointer-constant diagnostics. - - * typeck.c (build_ptrmemfunc): Use cp_build_c_cast. - -2013-11-06 Paolo Carlini - - PR c++/11006 - * init.c (build_new_1): Don't call build_java_class_ref on non-class - types. - -2013-11-05 Jason Merrill - - PR c++/58868 - * decl.c (check_initializer): Don't use build_vec_init for arrays - of trivial type. - -2013-11-05 Paolo Carlini - - PR c++/58724 - * name-lookup.c (handle_namespace_attrs): Use get_attribute_name. - -2013-11-05 Tobias Burnus - - * parser.c (cp_parser_omp_for, cp_parser_omp_parallel, - cp_parser_omp_distribute, cp_parser_omp_teams, cp_parser_omp_target, - cp_parser_omp_declare): Handle -fopenmp-simd. - -2013-11-04 Eric Botcazou - - * decl2.c (cpp_check): Change type of first parameter and deal with - IS_TRIVIAL. - -2013-11-03 Paolo Carlini - - PR c++/38313 - * parser.c (cp_parser_constructor_declarator_p): Check that the - class-name matches current_class_type. - -2013-11-03 Marek Polacek - - * decl.c (cp_finish_decl): Move C++1y bounds checking... - (compute_array_index_type): ...here. Add VLA instrumentation. - Call stabilize_vla_size. - (grokdeclarator): Don't call stabilize_vla_size here. - -2013-11-02 Paolo Carlini - - PR c++/29234 - PR c++/56037 - * parser.c (cp_parser_cast_expression): If we aren't looking at - a cast-expression don't call cp_parser_type_id. - (cp_parser_postfix_expression): Likewise for compound-literal. - (cp_parser_tokens_start_cast_expression): Adjust. - -2013-11-01 Edward Smith-Rowland <3dw4rd@verizon.net> - - PR c++/58708 - * parser.c (make_string_pack): Discover non-const type and size - of character and build parm pack with correct type and chars. - -2013-11-01 Trevor Saunders - - * semantics.c (build_anon_member_initialization): Convert fields to be - a stack_vec. - -2013-11-01 Marc Glisse - - PR c++/58834 - * pt.c (type_dependent_expression_p): Handle null argument. - -2013-11-01 Jakub Jelinek - - * semantics.c (finish_omp_clauses) : Go to - check_dup_generic at the end, unless remove is true. - (finish_omp_clauses) : Add break; after - remove = true;. - -2013-10-31 Jakub Jelinek - - * semantics.c (finish_omp_clauses): Diagnose aligned clause - with decl that is not pointer nor array nor reference to those. - -2013-10-31 Jason Merrill - - * semantics.c (cxx_eval_call_expression): Handle trivial - value-initialization. - * typeck2.c (store_init_value): Call maybe_constant_init after - cxx_constant_value. - - * decl.c (cxx_maybe_build_cleanup): Always set LOOKUP_NONVIRTUAL. - * decl2.c (build_cleanup): Just call cxx_maybe_build_cleanup. - - PR c++/58162 - * parser.c (cp_parser_late_parse_one_default_arg): Set - TARGET_EXPR_DIRECT_INIT_P. - - * class.c (type_build_ctor_call): Return early in C++98 mode. - (type_build_dtor_call): Likewise. - -2013-10-31 Paolo Carlini - - PR c++/58932 - Revert: - 2013-10-18 Paolo Carlini - - PR c++/58466 - * pt.c (most_specialized_class): Bump processing_template_decl for - get_class_bindings. - -2013-10-30 Paolo Carlini - - PR c++/58581 - * call.c (build_over_call): Check return value of mark_used. - -2013-10-30 Jason Merrill - - * semantics.c (finish_compound_literal): Don't create a static variable - inside cp_unevaluated_operand. - - * init.c (push_base_cleanups): Check ANON_AGGR_TYPE_P. - -2013-10-30 Tobias Burnus - - PR other/33426 - * cp-tree.h (RANGE_FOR_IVDEP): Define. - (cp_convert_range_for, finish_while_stmt_cond, finish_do_stmt, - finish_for_cond): Take 'bool ivdep' parameter. - * cp-array-notation.c (create_an_loop): Update call. - * init.c (build_vec_init): Ditto. - * pt.c (tsubst_expr): Ditto. - * parser.c (cp_parser_iteration_statement, cp_parser_for, - cp_parser_range_for, cp_convert_range_for): Update calls. - (cp_parser_pragma): Accept GCC ivdep for 'while' and 'do'. - * semantics.c (finish_while_stmt_cond, finish_do_stmt, - finish_for_cond): Optionally build ivdep annotation. - -2013-10-30 Jason Merrill - - * decl.c (cp_finish_decl): Never throw for VLA bound == 0. - -2013-10-29 David Malcolm - - Patch autogenerated by refactor_symtab.py from - https://github.com/davidmalcolm/gcc-refactoring-scripts - revision 58bb219cc090b2f4516a9297d868c245495ee622 - - * call.c (mark_versions_used): Update for conversion of symtab types - to a true class hierarchy. - * decl2.c (cp_write_global_declarations): Likewise. - (clear_decl_external): Likewise. - (build_java_method_aliases): Likewise. - (collect_candidates_for_java_method_aliases): Likewise. - (mark_needed): Likewise. - (var_finalized_p): Likewise. - (maybe_make_one_only): Likewise. - (maybe_emit_vtables): Likewise. - * lambda.c (maybe_add_lambda_conv_op): Likewise. - * method.c (use_thunk): Likewise. - * optimize.c (maybe_clone_body): Likewise. - * tree.c (cp_fix_function_decl_p): Likewise. - -2013-10-29 Paolo Carlini - - PR c++/58888 - * decl2.c (grokfield): Handle auto like NSDMI. - -2013-10-25 Paolo Carlini - - PR c++/58878 - * pt.c (check_template_shadow): Don't skip declarations in inline - member templates. - -2013-10-25 Tobias Burnus - - PR other/33426 - * parser.c (cp_parser_iteration_statement, - cp_parser_for, cp_parser_c_for, cp_parser_pragma): Handle - IVDEP pragma. - -2013-10-24 Marek Polacek - - PR c++/58705 - * typeck2.c (check_narrowing): Don't check narrowing when the scalar - initializer is empty. - -2013-10-23 Jason Merrill - - LWG 2165 - * method.c (defaulted_late_check): Delete on eh-spec mismatch. - (maybe_explain_implicit_delete): Explain it. - - * error.c (eh_spec_to_string): New. - (cp_printer): Use it for %X. - - In C++11 a trivial [cd]tor might not be callable. - * class.c (user_provided_p): A function deleted on its declation - in the class is not user-provided. - (type_build_ctor_call): Also force a ctor call if we - might have a deleted or private trivial ctor. - (type_build_dtor_call): New. - (deduce_noexcept_on_destructors): Remove obsolete code. - * cp-tree.h: Declare type_build_dtor_call. - * decl.c (expand_static_init): Make sure trivial dtors are callable. - (cxx_maybe_build_cleanup): Likewise. - * except.c (build_throw): Likewise. - * init.c (build_value_init): Handle trivial but not callable ctors. - (perform_target_ctor): Make sure trivial dtor is callable. - (perform_member_init): Likewise. - (expand_cleanup_for_base): Likewise. - (build_vec_delete_1): Likewise. - (build_delete): Likewise. - (push_base_cleanups): Likewise. - (build_new_1): Avoid redundant error. - * method.c (synthesized_method_walk): Can't ever exit early in C++11. - Always process the subobject destructor. - * semantics.c (finish_compound_literal): Make sure trivial dtor is - callable. - * typeck2.c (split_nonconstant_init): Likewise. - -2013-10-23 Edward Smith-Rowland <3dw4rd@verizon.net> - - Implement C++14 [[deprecated]] modulo [[gnu::deprecated]] bugs. - * parser.c (cp_parser_std_attribute): Interpret [[deprecated]] - as [[gnu::deprecated]]. - -2013-10-22 Paolo Carlini - - PR c++/58816 - * pt.c (apply_late_template_attributes): Use get_attribute_name, - not TREE_PURPOSE. - -2013-10-18 Paolo Carlini - - PR c++/58466 - * pt.c (most_specialized_class): Bump processing_template_decl for - get_class_bindings. - -2013-10-18 Paolo Carlini - - * parser.c (cp_parser_lookup_name): Tidy. - -2013-10-17 Andrew MacLeod - - * parser.c: Include omp-low.h. - * semantics.c: Likewise. - -2013-10-17 Paolo Carlini - - PR c++/58596 - * lambda.c (lambda_expr_this_capture): Handle NSDMIs in the - cp_unevaluated_operand case. - -2013-10-16 Jason Merrill - - * pt.c (apply_late_template_attributes): Use - attribute_takes_identifier_p. - - * error.c (dump_exception_spec): Print "noexcept" rather than - "noexcept (true)". - - Core 1591 - * pt.c (unify_array_domain): Split out from unify. - (unify): Use it for list deduction, too. - - PR c++/57850 - * decl2.c (dump_tu): Split out from... - (cp_write_global_declarations): ...here. Call it in PCH mode. - -2013-10-16 Paolo Carlini - - * pt.c (tsubst): Fix typo in last commit. - -2013-10-16 Paulo Matos - - * error.c (code_to_string): Use new wrapper get_tree_code_name. - * cxx-pretty-print.c (pp_cxx_assignment_operator): Likewise. - * pt.c (tsubst): Likewise. - * semantics.c (cxx_eval_constant_expression, - potential_constant_expression_1): Likewise. - * mangle.c (MANGLE_TRACE_TREE, dump_substitution_candidates, - add_substitution, find_substitution): Likewise. - -2013-10-15 Paolo Carlini - - PR c++/58707 - * parser.c (cp_parser_postfix_open_square_expression): Set - parser->greater_than_is_operator_p for the argument. - -2013-10-11 Paolo Carlini - - PR c++/58633 - * parser.c (cp_parser_commit_to_topmost_tentative_parse): New. - (cp_parser_pseudo_destructor_name): Use it. - -2013-10-11 Paolo Carlini - - PR c++/31671 - * pt.c (convert_nontype_argument): Set expr_type to - TREE_TYPE (probe_type). - -2013-10-11 Jakub Jelinek - - * decl.c (duplicate_decls): Error out for redeclaration of UDRs. - (declare_simd_adjust_this): New function. - (grokfndecl): If "omp declare simd" attribute is present, - call declare_simd_adjust_this if needed and - c_omp_declare_simd_clauses_to_numbers. - * cp-array-notation.c (expand_array_notation_exprs): Handle - OMP_TASKGROUP. - * cp-gimplify.c (cp_gimplify_expr): Handle OMP_SIMD and - OMP_DISTRIBUTE. Handle is_invisiref_parm decls in - OMP_CLAUSE_REDUCTION. - (cp_genericize_r): Handle OMP_SIMD and OMP_DISTRIBUTE like - OMP_FOR. - (cxx_omp_privatize_by_reference): Return true for - is_invisiref_parm decls. - (cxx_omp_finish_clause): Adjust cxx_omp_create_clause_info - caller. - * pt.c (apply_late_template_attributes): For "omp declare simd" - attribute call tsubst_omp_clauses, - c_omp_declare_simd_clauses_to_decls, finish_omp_clauses - and c_omp_declare_simd_clauses_to_numbers. - (instantiate_class_template_1): Call cp_check_omp_declare_reduction - for UDRs. - (tsubst_decl): Handle UDRs. - (tsubst_omp_clauses): Add declare_simd argument, if true don't - call finish_omp_clauses. Handle new OpenMP 4.0 clauses. - Handle non-NULL OMP_CLAUSE_REDUCTION_PLACEHOLDER on - OMP_CLAUSE_REDUCTION. - (tsubst_expr): For UDRs call pushdecl and - cp_check_omp_declare_reduction. Adjust tsubst_omp_clauses - callers. Handle OMP_SIMD, OMP_DISTRIBUTE, OMP_TEAMS, - OMP_TARGET_DATA, OMP_TARGET_UPDATE, OMP_TARGET, OMP_TASKGROUP. - Adjust finish_omp_atomic caller. - (tsubst_omp_udr): New function. - (instantiate_decl): For UDRs at block scope, don't call - start_preparsed_function/finish_function. Call tsubst_omp_udr. - * semantics.c (cxx_omp_create_clause_info): Add need_dtor argument, - use it instead of need_default_ctor || need_copy_ctor. - (struct cp_check_omp_declare_reduction_data): New type. - (handle_omp_array_sections_1, handle_omp_array_sections, - omp_reduction_id, omp_reduction_lookup, - cp_remove_omp_priv_cleanup_stmt, cp_check_omp_declare_reduction_r, - cp_check_omp_declare_reduction, clone_omp_udr, - find_omp_placeholder_r, finish_omp_reduction_clause): New functions. - (finish_omp_clauses): Handle new OpenMP 4.0 clauses and user defined - reductions. - (finish_omp_for): Add CODE argument, use it instead of hardcoded - OMP_FOR. Adjust c_finish_omp_for caller. - (finish_omp_atomic): Add seq_cst argument, adjust - c_finish_omp_atomic callers, handle seq_cst and new OpenMP 4.0 - atomic variants. - (finish_omp_cancel, finish_omp_cancellation_point): New functions. - * decl2.c (mark_used): Force immediate instantiation of - DECL_OMP_DECLARE_REDUCTION_P decls. - (is_late_template_attribute): Return true for "omp declare simd" - attribute. - (cp_omp_mappable_type): New function. - (cplus_decl_attributes): Add implicit "omp declare target" attribute - if requested. - * parser.c (cp_debug_parser): Print - parser->colon_doesnt_start_class_def_p. - (cp_ensure_no_omp_declare_simd, cp_finalize_omp_declare_simd): New - functions. - (enum pragma_context): Add pragma_member and pragma_objc_icode. - (cp_parser_binary_expression): Handle no_toplevel_fold_p - even for binary operations other than comparison. - (cp_parser_linkage_specification): Call - cp_ensure_no_omp_declare_simd if needed. - (cp_parser_namespace_definition): Likewise. - (cp_parser_init_declarator): Call cp_finalize_omp_declare_simd. - (cp_parser_direct_declarator): Pass declarator to - cp_parser_late_return_type_opt. - (cp_parser_late_return_type_opt): Add declarator argument, - call cp_parser_late_parsing_omp_declare_simd for declare simd. - (cp_parser_class_specifier_1): Call cp_ensure_no_omp_declare_simd. - Parse UDRs before all other methods. - (cp_parser_member_specification_opt): Use pragma_member instead of - pragma_external. - (cp_parser_member_declaration): Call cp_finalize_omp_declare_simd. - (cp_parser_function_definition_from_specifiers_and_declarator, - cp_parser_save_member_function_body): Likewise. - (cp_parser_late_parsing_for_member): Handle UDRs specially. - (cp_parser_next_token_starts_class_definition_p): Don't allow - CPP_COLON if colon_doesnt_start_class_def_p flag is true. - (cp_parser_objc_interstitial_code): Use pragma_objc_icode - instead of pragma_external. - (cp_parser_omp_clause_name): Parse new OpenMP 4.0 clause names. - (cp_parser_omp_var_list_no_open): Parse array sections for - OMP_CLAUSE_{DEPEND,MAP,TO,FROM} clauses. Add COLON argument, - if non-NULL, allow parsing to end with a colon rather than close - paren. - (cp_parser_omp_var_list): Adjust cp_parser_omp_var_list_no_open - caller. - (cp_parser_omp_clause_reduction): Handle user defined reductions. - (cp_parser_omp_clause_branch, cp_parser_omp_clause_cancelkind, - cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit, - cp_parser_omp_clause_aligned, cp_parser_omp_clause_linear, - cp_parser_omp_clause_safelen, cp_parser_omp_clause_simdlen, - cp_parser_omp_clause_depend, cp_parser_omp_clause_map, - cp_parser_omp_clause_device, cp_parser_omp_clause_dist_schedule, - cp_parser_omp_clause_proc_bind, cp_parser_omp_clause_to, - cp_parser_omp_clause_from, cp_parser_omp_clause_uniform): New - functions. - (cp_parser_omp_all_clauses): Add finish_p argument. Don't call - finish_omp_clauses if it is false. Handle new OpenMP 4.0 clauses. - (cp_parser_omp_atomic): Parse seq_cst clause, pass - true if it is present to finish_omp_atomic. Handle new OpenMP 4.0 - atomic forms. - (cp_parser_omp_for_loop): Add CODE argument, pass it through - to finish_omp_for. Change last argument to cclauses, - and adjust uses to grab parallel clauses from the array of all - the split clauses. - (cp_omp_split_clauses): New function. - (cp_parser_omp_simd): New function. - (cp_parser_omp_for): Add p_name, mask and cclauses arguments. - Allow the function to be called also when parsing combined constructs, - and call c_parser_omp_simd when parsing for simd. - (cp_parser_omp_sections_scope): If section-sequence doesn't start with - #pragma omp section, require exactly one structured-block instead of - sequence of statements. - (cp_parser_omp_sections): Add p_name, mask and cclauses arguments. - Allow the function to be called also when parsing combined constructs. - (cp_parser_omp_parallel): Add p_name, mask and cclauses arguments. - Allow the function to be called also when parsing combined - constructs. - (cp_parser_omp_taskgroup, cp_parser_omp_cancel, - cp_parser_omp_cancellation_point, cp_parser_omp_distribute, - cp_parser_omp_teams, cp_parser_omp_target_data, - cp_parser_omp_target_update, cp_parser_omp_target, - cp_parser_omp_declare_simd, cp_parser_late_parsing_omp_declare_simd, - cp_parser_omp_declare_target, cp_parser_omp_end_declare_target, - cp_parser_omp_declare_reduction_exprs, cp_parser_omp_declare_reduction, - cp_parser_omp_declare): New functions. - (cp_parser_omp_construct): Add p_name and mask vars. Handle - PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP, - PRAGMA_OMP_TEAMS. Adjust cp_parser_omp_for, cp_parser_omp_parallel - and cp_parser_omp_sections callers. - (cp_parser_pragma): Handle PRAGMA_OMP_CANCEL, - PRAGMA_OMP_CANCELLATION_POINT, PRAGMA_OMP_DECLARE_REDUCTION, - PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP, - PRAGMA_OMP_TEAMS, PRAGMA_OMP_TARGET, PRAGMA_OMP_END_DECLARE_TARGET. - Handle pragma_member and pragma_objc_icode like pragma_external. - (OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK, - OMP_SINGLE_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1. - (OMP_PARALLEL_CLAUSE_MASK): Likewise. Add OMP_CLAUSE_PROC_BIND. - (OMP_TASK_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1. Add - OMP_CLAUSE_DEPEND. - (OMP_SIMD_CLAUSE_MASK, OMP_CANCEL_CLAUSE_MASK, - OMP_CANCELLATION_POINT_CLAUSE_MASK, OMP_DISTRIBUTE_CLAUSE_MASK, - OMP_TEAMS_CLAUSE_MASK, OMP_TARGET_DATA_CLAUSE_MASK, - OMP_TARGET_UPDATE_CLAUSE_MASK, OMP_TARGET_CLAUSE_MASK, - OMP_DECLARE_SIMD_CLAUSE_MASK): Define. - * parser.h (struct cp_omp_declare_simd_data): New type. - (struct cp_parser): Add colon_doesnt_start_class_def_p and - omp_declare_simd fields. - * cp-objcp-common.h (LANG_HOOKS_OMP_MAPPABLE_TYPE): Define. - * cp-tree.h (struct lang_decl_fn): Add omp_declare_reduction_p - bit. - (DECL_OMP_DECLARE_REDUCTION_P): Define. - (OMP_FOR_GIMPLIFYING_P): Use OMP_LOOP_CHECK macro. - (struct saved_scope): Add omp_declare_target_attribute field. - (cp_omp_mappable_type, omp_reduction_id, - cp_remove_omp_priv_cleanup_stmt, cp_check_omp_declare_reduction, - finish_omp_cancel, finish_omp_cancellation_point): New prototypes. - (finish_omp_for): Add CODE argument. - (finish_omp_atomic): Add seq_cst argument. - (cxx_omp_create_clause_info): Add need_dtor argument. - -2013-10-09 Marek Polacek - - PR c++/58635 - * semantics.c (finish_return_stmt): Return error_mark_node - when error_operand_p of the expr is true. - (build_transaction_expr): Check for EXPR_P before setting the - expr location. - -2013-10-08 Paolo Carlini - - PR c++/58568 - * lambda.c (begin_lambda_type): Check return value of xref_tag - for error_mark_node; tidy. - * decl.c (grokdeclarator): Tweak error message. - -2013-10-08 Paolo Carlini - - PR c++/58665 - Revert: - 2013-10-04 Paolo Carlini - - PR c++/58448 - * pt.c (tsubst): Use error_operand_p on parameter t. - -2013-10-06 Paolo Carlini - - PR c++/58126 - * class.c (check_bases): Propagate CLASSTYPE_READONLY_FIELDS_NEED_INIT - and CLASSTYPE_REF_FIELDS_NEED_INIT from bases to derived. - * init.c (diagnose_uninitialized_cst_or_ref_member_1): Extend error - messages about uninitialized const and references members to mention - the base class. - -2013-10-06 Paolo Carlini - - PR c++/56060 - * pt.c (type_dependent_expression_p): Handle EXPR_PACK_EXPANSION. - -2013-10-04 Paolo Carlini - - PR c++/58560 - * typeck2.c (build_functional_cast): Use error_operand_p on exp. - -2013-10-04 Paolo Carlini - - PR c++/58503 - * parser.c (cp_parser_perform_range_for_lookup): If eventually - either *begin or *end is type-dependent, return NULL_TREE. - (do_range_for_auto_deduction): If cp_parser_perform_range_for_lookup - returns NULL_TREE, don't actually do_auto_deduction. - -2013-10-04 Paolo Carlini - - PR c++/58448 - * pt.c (tsubst): Use error_operand_p on parameter t. - -2013-10-04 Marc Glisse - - PR c++/19476 - * decl.c (cxx_init_decl_processing): Set operator_new_flag. - -2013-10-04 Paolo Carlini - - PR c++/58584 - * decl2.c (save_template_attributes): Handle error_mark_node as - *attr_p argument. - (cp_check_const_attributes): Likewise for attributes. - * parser.c (cp_parser_std_attribute_spec): When alignas_expr is an - error_mark_node call cp_parser_skip_to_end_of_statement. - -2013-10-03 Easwaran Raman - - PR c++/33911 - * parser.c (cp_parser_init_declarator): Do not drop attributes - of template member functions. - -2013-10-03 Marek Polacek - - PR c++/58510 - * init.c (sort_mem_initializers): Splice when giving an error. - -2013-10-02 Paolo Carlini - - PR c++/58535 - * parser.c (cp_parser_function_specifier_opt): Upon error about - virtual templates don't set ds_virtual. - (finish_fully_implicit_template): Reject virtual implicit templates. - -2013-10-02 Paolo Carlini - - PR c++/58565 - * semantics.c (potential_constant_expression_1): Handle LABEL_EXPR. - -2013-10-01 Paolo Carlini - - PR c++/58563 - * parser.c (cp_parser_lookup_name): Check make_typename_type return - value for error_mark_node. - -2013-09-25 Tom Tromey - - * Make-lang.in (CXX_TREE_H, CXX_PARSER_H, CXX_PRETTY_PRINT_H): - Remove. - -2013-09-25 Tom Tromey - - * Make-lang.in (g++spec.o): Remove. - (CFLAGS-cp/g++spec.o): New variable. - (GXX_OBJS): Reference cp/g++spec.o. - (cc1plus-checksum.o, cp/lex.o, cp/cp-array-notation.o) - (cp/cp-lang.o, cp/decl.o, cp/decl2.o, cp/cp-objcp-common.o) - (cp/typeck2.o, cp/typeck.o, cp/class.o, cp/call.o) - (cp/friend.o, cp/init.o, cp/method.o, cp/cvt.o, cp/search.o) - (cp/tree.o, cp/ptree.o, cp/rtti.o, cp/except.o, cp/expr.o) - (cp/pt.o, cp/error.o, cp/repo.o, cp/semantics.o, cp/dump.o) - (cp/optimize.o, cp/mangle.o, cp/parser.o, cp/cp-gimplify.o) - (cp/name-lookup.o, cp/cxx-pretty-print.o): Remove. - -2013-09-25 Tom Tromey - - * Make-lang.in (g++spec.o): Don't use subshell. - -2013-09-25 Marek Polacek - - PR c++/58516 - * semantics.c (finish_transaction_stmt): Check for EXPR_P before - setting the expr location. - -2013-09-23 Adam Butcher - - PR c++/58500 - * type-utils.h (find_type_usage): Only traverse one type level into - member function pointers. - -2013-09-23 Adam Butcher - - * parser.c (cp_parser_init_declarator): Defer calling - finish_fully_implicit_template for forward declarations until after - other decl processing is complete. Cleanup for clarity: Extract 'else' - case after 'if' containing unconditional return. - -2013-09-23 Adam Butcher - - * parser.c (make_generic_type_name): Spell generic type names '' - rather than '__GenN'. - -2013-09-23 Adam Butcher - - * lambda.c (maybe_add_lambda_conv_op): Don't check for instantiated - callop in the case of generic lambdas. - -2013-09-23 Adam Butcher - - * parser.c (make_generic_type_name): Use global count rather than - parameter and ... - (add_implicit_template_parms): ... propagate interface change here. - -2013-09-20 Paolo Carlini - - PR c++/58481 - * pt.c (tsubst_copy): Use current_nonlambda_class_type to - call tsubst_baselink. - -2013-09-18 Paolo Carlini - - PR c++/58457 - * class.c (instantiate_type): Loosen a bit the gcc_assert. - -2013-09-18 Marek Polacek - - PR sanitize/58443 - * typeck.c (cp_build_binary_op): Properly honor -fsanitize options. - Remove unnecessary check. - -2013-09-18 Marek Polacek - - PR sanitizer/58411 - * typeck.c (cp_build_binary_op): Don't sanitize function if it has the - no_sanitize_undefined attribute. - -2013-09-17 Paolo Carlini - - PR c++/58435 - * pt.c (tsubst, [BOUND_TEMPLATE_TEMPLATE_PARM]): Take into account - the cp_type_quals (r) too. - -2013-09-16 Adam Butcher - - * cp-tree.h (type_uses_auto_or_concept): Declare. - (is_auto_or_concept): Declare. - * decl.c (grokdeclarator): Allow 'auto' parameters in lambdas with - -std=gnu++1y or -std=c++1y or, as a GNU extension, in plain functions. - * type-utils.h: New header defining ... - (find_type_usage): ... this new function based on pt.c (type_uses_auto) - for searching a type tree given a predicate. - * pt.c (type_uses_auto): Reimplement via type-utils.h (find_type_usage). - (is_auto_or_concept): New function. - (type_uses_auto_or_concept): New function. - * parser.h (struct cp_parser): Add fully_implicit_function_template_p. - * parser.c (cp_parser_new): Initialize - fully_implicit_function_template_p. - (cp_parser_new): Initialize fully_implicit_function_template_p. - (cp_parser_lambda_expression): Copy and restore value of - fully_implicit_function_template_p as per other parser fields. - (cp_parser_parameter_declaration_list): Count generic - parameters and call ... - (add_implicit_template_parms): ... this new function to synthesize them - with help from type-utils.h (find_type_usage), ... - (tree_type_is_auto_or_concept): ... this new static function and ... - (make_generic_type_name): ... this new static function. - (cp_parser_direct_declarator): Account for implicit template parameters. - (cp_parser_lambda_declarator_opt): Finish fully implicit template if - necessary by calling ... - (finish_fully_implicit_template): ... this new function. - (cp_parser_init_declarator): Likewise. - (cp_parser_function_definition_after_declarator): Likewise. - (cp_parser_member_declaration): Likewise. - * Make-lang.in (cp/pt.o): Add dependency on type-utils.h. - (cp/parser.o): Likewise. - -2013-09-16 Adam Butcher - - * parser.c (cp_parser_lambda_declarator_opt): Accept template parameter - list with std=c++1y or std=gnu++1y. - (cp_parser_lambda_body): Don't call 'expand_or_defer_fn' for lambda call - operator template to avoid adding template result to symbol table. - * lambda.c (lambda_function): Return template result if call operator is - a template. - (maybe_add_lambda_conv_op): Move declarations to point of use. Refactor - operator call building in order to support conversion of a non-capturing - lambda template to a function pointer with help from ... - (prepare_op_call): ... this new function. - * decl2.c (check_member_template): Don't reject lambda call operator - template in local [lambda] class. - * pt.c (instantiate_class_template_1): Don't instantiate lambda call - operator template when instantiating lambda class. - -2013-09-16 Adam Butcher - - * pt.c (make_auto_1): Use input_location rather than BUILTINS_LOCATION. - -2013-09-15 Jason Merrill - - Core DR 904 - PR c++/41933 - * parser.c (cp_parser_lambda_introducer): Handle variadic capture. - * lambda.c (add_capture): Handle variadic capture. - (add_default_capture, lambda_capture_field_type): Likewise. - (build_capture_proxy, register_capture_members): Likewise. - * pt.c (register_specialization): Allow FIELD_DECL. - (retrieve_specialization): Likewise. - (find_parameter_packs_r): Handle FIELD_DECL and VAR_DECL. - (tsubst_pack_expansion): Handle FIELD_DECL packs. - (gen_elem_of_pack_expansion_instantiation): Likewise. - (instantiate_class_template_1): Likewise. - (tsubst_decl, tsubst_copy): Likewise. - (tsubst_expr) [DECL_EXPR]: Handle capture proxy packs. - (tsubst_copy_and_build) [VAR_DECL]: Likewise. - * semantics.c (finish_non_static_data_member): Don't try to represent - the type of a COMPOUND_REF of a FIELD_DECL pack. - - PR c++/41933 - * cp-tree.h (DECL_PACK_P): Replace FUNCTION_PARAMETER_PACK_P. - * cxx-pretty-print.c (direct_declarator): Adjust. - * decl2.c (cp_build_parm_decl): Adjust. - * pt.c (function_parameter_pack_p): Adjust. - (find_parameter_packs_r, push_template_decl_real): Adjust. - (tsubst_pack_expansion, tsubst_decl): Adjust. - (regenerate_decl_from_template, instantiate_decl): Adjust. - - * lambda.c (add_capture): Don't add DECL_LANG_SPECIFIC. - -2013-09-13 Jason Merrill - - PR c++/58273 - * pt.c (any_type_dependent_elements_p): Actually check for - type-dependence, not value-dependence. - -2013-09-13 Jacek Caban - - * decl.c: Use new cxx_implicit_extern_c hook - -2013-09-12 Brooks Moses - - PR driver/42955 - * Make-lang.in: Do not install driver binaries in $(target)/bin. - -2013-09-12 Adam Butcher - - * pt.c (instantiate_decl): Save/restore cp_unevaluated_operand and - c_inhibit_evaluation_warnings. Reset if instantiating within a - function-local template. - -2013-09-12 Paolo Carlini - - * semantics.c (finish_pseudo_destructor_expr): Add location_t - parameter. - * pt.c (unify_arg_conversion): Use EXPR_LOC_OR_HERE. - (tsubst_copy_and_build): Adjust finish_pseudo_destructor_expr - calls. - * parser.c (cp_parser_postfix_dot_deref_expression): Likewise. - (cp_parser_postfix_expression): Pass the proper location to - cp_parser_postfix_dot_deref_expression. - * cp-tree.h (finish_pseudo_destructor_expr): Update declaration. - -2013-09-10 Jan Hubicka - Paolo Carlini - - * error.c (print_instantiation_partial_context_line): If - loc == UNKNOWN_LOCATION return immediately. - -2013-09-09 Jakub Jelinek - - PR c++/58325 - * init.c (build_vec_delete): Call mark_rvalue_use on base. - -2013-09-09 Paolo Carlini - - PR c++/43452 - * init.c (build_vec_delete_1): When the type is incomplete emit a - warning, enabled by default (not an error). - (build_delete): Adjust to use OPT_Wdelete_incomplete. - -2013-09-09 Paolo Carlini - - PR c++/58362 - * error.c (location_of): Don't handle PARM_DECLs specially. - -2013-09-09 Paolo Carlini - - * error.c (dump_expr, [PSEUDO_DTOR_EXPR]): Fix. - * cxx-pretty-print.c (cxx_pretty_printer::postfix_expression): - Tweak, TREE_OPERAND (t, 1) may be null. - -2013-09-08 Caroline Tice - - PR c++/58300 - * vtable-class-hierarchy.c (vtv_generate_init_routine): In - preinit case, move call to assemble_vtv_preinit_initializer to - after call to cgraph_process_new_functions. - -2013-09-08 Tom de Vries - - PR c++/58282 - * except.c (build_must_not_throw_expr): Handle - flag_exceptions. - -2013-09-08 Joern Rennecke - - * typeck.c (cp_build_binary_op): Use vector_types_compatible_elements_p. - -2013-09-04 Paolo Carlini - - PR c++/24926 - * class.c (finish_struct_anon_r): New. - (finish_struct_anon): Use it. - -2013-09-04 Gabriel Dos Reis - - * cxx-pretty-print.h (cxx_pretty_printer::simple_type_specifier): - Declare as overrider. - * cxx-pretty-print.c (cxx_pretty_printer::simple_type_specifier): - Rename from pp_cxx_simple_type_specifier. - (cxx_pretty_printer::cxx_pretty_printer): Do not assign to - simple_type_specifier. - -2013-09-03 Paolo Carlini - - PR c++/58305 - * typeck2.c (build_functional_cast): Maybe warn_deprecated_use. - -2013-09-03 Mike Stump - - * Make-lang.in (cp/lambda.o): Add dependencies. - -2013-09-03 Gabriel Dos Reis - - * cxx-pretty-print.h (cxx_pretty_printer::type_id): Declare as - overrider. - * cxx-pretty-print.c (pp_cxx_storage_class_specifier): Remove. - (pp_cxx_userdef_literal): Tidy. - (pp_cxx_template_argument_list): Likewise. - (pp_cxx_typeid_expression): Likewise. - (pp_cxx_offsetof_expression_1): Likewise. - (cxx_pretty_printer::postfix_expression): Likewise. - (cxx_pretty_printer::unary_expression): Likewise. - (cxx_pretty_printer::statement): Likewise. - (cxx_pretty_printer::type_id): Rename from pp_cxx_type_id. - (c_pretty_printer::cxx_pretty_printer): Do not assign to type_id. - * error.c (dump_decl): Tidy. - (dump_expr): Likewise. - -2013-09-02 Paolo Carlini - - PR c++/21682, implement DR 565 - * name-lookup.c (compparms_for_decl_and_using_decl): New. - (push_overloaded_decl_1, do_nonmember_using_decl): Use it. - -2013-08-30 Marek Polacek - - * typeck.c (cp_build_binary_op): Add division by zero and shift - instrumentation. - * error.c (dump_expr): Special-case ubsan builtins. - -2013-08-30 Paolo Carlini - - PR c++/51424 - * cp-tree.h (LOOKUP_DELEGATING_CONS): Add. - * init.c (perform_target_ctor): Use it. - * call.c (build_special_member_call): Diagnose self-delegating - constructors. - -2013-08-30 Gabriel Dos Reis - - * cxx-pretty-print.h (cxx_pretty_printer::declaration): Declare as - overrider. - (cxx_pretty_printer::declaration_specifiers): Likewise. - (cxx_pretty_printer::function_specifier): Likewise. - (cxx_pretty_printer::declarator): Likewise. - (cxx_pretty_printer::direct_declarator): Likewise. - (cxx_pretty_printer::abstract_declarator): Likewise. - (cxx_pretty_printer::direct_abstract_declarator): Likewise. - (pp_cxx_declaration): Remove. - * cxx-pretty-print.c (cxx_pretty_printer::function_specifier): - Rename from pp_cxx_function_specifier. Adjust. - (cxx_pretty_printer::declaration_specifiers): Rename from - pp_cxx_decl_specifier_seq. Adjust. - (cxx_pretty_printer::direct_declarator): Rename from - pp_cxx_direct_declarator. Adjust. - (cxx_pretty_printer::declarator): Rename from pp_cxx_declarator. - Adjust. - (cxx_pretty_printer::abstract_declarator): Rename from - pp_cxx_abstract_declarator. Adjust. - (cxx_pretty_printer::direct_abstract_declarator): Rename from - pp_cxx_direct_abstract_declarator. Adjust. - (cxx_pretty_printer::declaration): Rename from - pp_cxx_declaration. Adjust. - (cxx_pretty_printer::cxx_pretty_printer): Do not assign to - declaration, declaration_specifiers, function_specifier, - declarator, direct_declarator, abstract_declarator, - direct_abstract_declarator. - * error.c (dump_decl): Adjust. - -2013-08-29 Jan Hubicka - - Correct previous patch to not mark terminate as LEAF. - * class.c (build_vtbl_initializer): Drop LEAF - * decl.c (cxx_init_decl_processing): Likewise. - (push_throw_library_fn): Likewise. - * except.c (init_exception_processing): Likewise. - (do_begin_catch): Likewise. - (do_end_catch): Likewise. - (do_allocate_exception): Likewise. - -2013-08-29 Jan Hubicka - - * class.c (build_vtbl_initializer): Make __cxa_deleted_virtual - ECF_NORETURN | ECF_LEAF - * cp-tree.h (build_library_fn_ptr, build_cp_library_fn_ptr, - push_library_fn, push_void_library_fn): Update prototype. - * decl.c (build_library_fn_1): Remove. - (push_cp_library_fn, build_cp_library_fn): Update to take ECF flags. - (cxx_init_decl_processing): Update; global_delete_fndecl is ECF_NOTROW; - __cxa_pure_virtual is ECF_NORETURN | ECF_NORETURN | ECF_LEAF. - (build_library_fn_1): Add ecf_flags argument; rename to ... - (build_library_fn): ... this one. - (build_cp_library_fn): Take ecf_flags; do not copy NOTHROW flag. - (build_library_fn_ptr): Take ecf_flags. - (build_cp_library_fn_ptr): Likewise. - (push_library_fn): Likewise. - (push_cp_library_fn): Likewise. - (push_void_library_fn): Likewise. - (push_throw_library_fn): All throws are ECF_NORETURN. - (__cxa_atexit, __cxa_thread_atexit): Add ECF_LEAF | ECF_NOTHROW attributes. - (expand_static_init): __cxa_guard_acquire, __cxa_guard_release, - __cxa_guard_abort are ECF_NOTHROW | ECF_LEAF. - * except.c (init_exception_processing): terminate is - ECF_NOTHROW | ECF_NORETURN | ECF_LEAF. - (declare_nothrow_library_fn): Add ecf_flags parameter. - (__cxa_get_exception_ptr): Is ECF_NOTHROW | ECF_PURE | ECF_LEAF | - ECF_TM_PURE. - (do_begin_catch): cxa_begin_catch and _ITM_cxa_begin_catch - are ECF_NOTHROW | ECF_LEAF. - (do_end_catch): __cxa_end_catch and _ITM_cxa_end_catch is - ECF_LEAF. - (do_allocate_exception): _cxa_allocate_exception - and _ITM_cxa_allocate_exception are ECF_NOTHROW | ECF_MALLOC - | ECF_LEAF - (do_free_exception): __cxa_free_exception is - ECF_NOTHROW | ECF_LEAF. - * rtti.c (build_dynamic_cast_1): __dynamic_cast - is ECF_LEAF | ECF_PURE | ECF_NOTHROW. - -2013-08-29 Adam Butcher - - * error.c (dump_lambda_function): New function, dependent on ... - (dump_substitution): ... this new function, factored out of ... - (subst_to_string): ... here and ... - (dump_function_decl): ... here. Updated to early-out with call to - dump_lambda_function after determining template bindings. - -2013-08-28 Paolo Carlini - - PR c++/58255 - * init.c (build_aggr_init): When init == void_type_node do not - set LOOKUP_ONLYCONVERTING. - -2013-08-27 Caroline Tice - - * vtable-class-hierarchy.c: Remove unnecessary include statements. - (MAX_SET_SIZE): Remove unnecessary constant. - (register_construction_vtables): Make vtable_ptr_array parameter - into a vector; remove num_args parameter. Change array accesses to - vector accesses. - (register_other_binfo_vtables): Ditto. - (insert_call_to_register_set): Ditto. - (insert_call_to_register_pair): Ditto. - (output_set_info): Ditto. Also change warning calls to warning_at - calls, and fix format of warning messages. - (register_all_pairs): Change vtbl_ptr_array from an array into a - vector. Remove num_vtable_args (replace with calls to vector length). - Change array stores & accesses to vector functions. Change calls to - register_construction_vtables, register_other_binfo_vtables, - insert_call_to_register_set, insert_call_to_register_pair and - output_set_info to match their new signatures. Change warning to - warning_at and fix the format of the warning message. - -2013-08-27 Jakub Jelinek - Aldy Hernandez - - * cp-tree.h (CP_OMP_CLAUSE_INFO): Adjust range for new clauses. - -2013-08-27 Paolo Carlini - - * decl.c (grokfndecl): Remove old bison hack. - -2013-08-26 Jan Hubicka - - * cp-tree.h (DECL_CONSTRUCTOR_P, DECL_DESTRUCTOR_P): Use - middle-end flag. - -2013-08-26 Gabriel Dos Reis - - * cxx-pretty-print.h (cxx_pretty_printer::unary_expression): - Declare as overrider. - (cxx_pretty_printer::multiplicative_expression): Likewise. - (cxx_pretty_printer::conditional_expression): Likewise. - (cxx_pretty_printer::assignment_expression): Likewise. - (cxx_pretty_printer::expression): Likewise. - * cxx-pretty-print.c (cxx_pretty_printer::unary_expression): - Rename from pp_cxx_unary_expression. Adjust. - (cxx_pretty_printer::multiplicative_expression): Rename from - pp_cxx_multiplicative_expression. Adjust. - (cxx_pretty_printer::conditional_expression): Rename from - pp_cxx_conditional_expression. Adjust. - (cxx_pretty_printer::assignment_expression): Rename from - pp_cxx_assignment_expression. Adjust. - (cxx_pretty_printer::expression): Rename from pp_cxx_expression. - Adjust. - (cxx_pretty_printer::cxx_pretty_printer): Dot not assign to - unary_expression, multiplicative_expression, - conditional_expression, assignment_expression, expression. - -2013-08-25 Gabriel Dos Reis - - * cxx-pretty-print.h (cxx_pretty_printer::postfix_expression): - Declare as overrider. - * cxx-pretty-print.c (cxx_pretty_printer::postfix_expression): - Rename from pp_cxx_postfix_expression. Adjust. - (pp_cxx_expression): Use pp_postfix_expression. - (cxx_pretty_printer::cxx_pretty_printer): Do not assign to - postfix_expression. - -2013-08-25 Gabriel Dos Reis - - * cxx-pretty-print.h (cxx_pretty_printer::primary_expression): Now - an overrider of c_pretty_printer::primary_expression. - * cxx-pretty-print.c (cxx_pretty_printer::primary_expression): - Rename from pp_cxx_primary_expression. Adjust. - (pp_cxx_postfix_expression): Use pp_primary_expression. - (pp_cxx_ctor_initializer): Likewise. - (cxx_pretty_printer::cxx_pretty_printer): Do not assign to - primary_expression. - -2013-08-23 Jan Hubicka - - * cp-tree.h (struct lang_type_class): Free is_final bit. - (CLASSTYPE_FINAL): Define using TYPE_FINAL_P. - (DECL_FINAL_P): Remove. - * pt.c (instantiate_class_template_1): Guard that CLASSTYPE_FINAL - is called on CLASS_TYPE_P. - -2013-08-25 Gabriel Dos Reis - - * cxx-pretty-print.c (M_): Remove. - (pp_cxx_unqualified_id): Use translate_string instead of M_. - (pp_cxx_canonical_template_parameter): Likewise. - -2013-08-24 Gabriel Dos Reis - - * cxx-pretty-print.h (cxx_pretty_printer::id_expression): Declare. - * cxx-pretty-print.c (cxx_pretty_printer::id_expression): Rename - from pp_cxx_id_expression. Adjust. - (pp_cxx_userdef_literal): Use pp_id_expression. - (pp_cxx_primary_expression): Likewise. - (pp_cxx_direct_declarator): Likewise. - (cxx_pretty_printer::cxx_pretty_printer): Do not assign to - id_expression. - -2013-08-24 Gabriel Dos Reis - - * cxx-pretty-print.h (cxx_pretty_printer::constant): Now a member - function, overriding c_pretty_printer::constant. - * cxx-pretty-print.c (cxx_pretty_printer::constant): Rename from - pp_cxx_constant. Adjust. - (cxx_pretty_printer::cxx_pretty_printer): Do not assign to constant. - -2013-08-23 Gabriel Dos Reis - - * cp-objcp-common.c (cxx_initialize_diagnostics): Call a - destructor for the early printer. - * error.c (type_to_string): Use pp_buffer. - -2013-08-22 Paolo Carlini - - PR c++/56380 - * class.c (check_field_decls): Check for const mutable and const - reference data members. - -2013-08-22 Gabriel Dos Reis - - * error.c (init_error): Remove calls to pp_construct and - pp_cxx_pretty_printer_init. Initialize cxx_pp with placement-new. - * cxx-pretty-print.h (cxx_pretty_printer::cxx_pretty_printer): Declare. - (cxx_pretty_printer_init): Remove. - * cxx-pretty-print.c (cxx_pretty_printer::cxx_pretty_printer): - Rename from cxx_pretty_printer_init. Adjust. - * cp-objcp-common.c (cxx_initialize_diagnostics): Simplify - initialization of C++ diagnostics pretty printer. - -2013-08-21 Paolo Carlini - - * call.c (build_new_method_call_1): Use INDIRECT_REF_P. - * cp-tree.h (REFERENCE_REF_P): Likewise. - * semantics.c (finish_offsetof): Likewise. - -2013-08-21 Paolo Carlini - - PR c++/56130 - * semantics.c (finish_id_expression): Handle deprecated references. - -2013-08-20 Jason Merrill - - PR c++/58119 - * cvt.c (build_expr_type_conversion): Don't complain about a - template that can't match the desired type category. - -2013-08-20 Gabriel Dos Reis - - * error.c (pp_ggc_formatted_text): New. - (type_as_string): Use it in lieu of pp_formatted_text. - (type_as_string_translate): Likewise. - (expr_as_string): Likewise. - (decl_as_string): Likewise. - (decl_as_string_translate): Likewise. - (lang_decl_name): Likewise. - (decl_to_string): Likewise. - (expr_to_string): Likewise. - (fndecl_to_string): Likewise. - (parm_to_string): Likewise. - (type_to_string): Likewise. - (args_to_string): Likewise. - (subst_to_string): Likewise. - -2013-08-19 Balaji V. Iyer - - PR c/57490 - * cp-array-notation.c (cp_expand_cond_array_notations): Added a - check for truth values. - (expand_array_notation_exprs): Added truth values case. Removed an - unwanted else. Added for-loop to walk through subtrees in default - case. - * call.c (build_cxx_call): Inherited the type of the array notation for - certain built-in array notation functions. - -2013-08-19 Paolo Carlini - - * parser.c (cp_parser_lambda_introducer, cp_parser_decltype_expr): - Use cp_parser_lookup_name_simple. - -2013-08-19 Paolo Carlini - - * name-lookup.h (pop_bindings_and_leave_scope): Declare. - * name-lookup.c (pop_bindings_and_leave_scope): Define. - * parser.c (cp_parser_lambda_declarator_opt, - cp_parser_direct_declarator, cp_parser_cache_defarg): Use it. - -2013-08-17 Jason Merrill - - PR c++/58083 - * name-lookup.c (push_class_level_binding_1): It's OK to push a - lambda type after the enclosing type is complete. - -2013-08-17 Gabriel Dos Reis - - * error.c (dump_scope): Add a cxx_pretty_printer parameter. - Adjust callers. - (dump_template_argument): Likewise. - (dump_template_argument_list): Likewise. - (dump_template_parameter): Likewise. - (dump_template_bindings): Likewise. - (dump_alias_template_specialization): Likewise. - (dump_type): Likewise. - (dump_typename): Likewise. - (dump_aggr_type): Likewise. - (dump_type_prefix): Likewise. - (dump_type_suffix): Likewise. - (dump_global_iord): Likewise. - (dump_simple_decl): Likewise. - (dump_decl): Likewise. - (dump_template_decl): Likewise. - (dump_function_decl): Likewise. - (dump_parameters): Likewise. - (dump_ref_qualifier): Likewise. - (dump_exception_spec): Likewise. - (dump_function_name): Likewise. - (dump_template_parms): Likewise. - (dump_call_expr_args): Likewise. - (dump_aggr_init_expr_args): Likewise. - (dump_expr_list): Likewise. - (dump_expr_init_vec): Likewise. - (dump_expr): Likewise. - (dump_binary_op): Likewise. - (dump_unary_op): Likewise. - -2013-08-14 Paolo Carlini - - PR c++/51912 - * cp-tree.h (LOOKUP_NO_NON_INTEGRAL): Add. - * decl.c (case_conversion): Use it. - * call.c (standard_conversion): Likewise. - (implicit_conversion): Adjust. - -2013-08-13 Adam Butcher - - * pt.c: Grammar fix in comments ("it's" to "its"). - -2013-08-12 Paolo Carlini - - * decl.c (warn_extern_redeclared_static, duplicate_decls, - check_elaborated_type_specifier): Use error + inform. - * friend.c (make_friend_class): Likewise. - * semantics.c (finish_id_expression): Likewise. - -2013-08-09 Paolo Carlini - - Revert: - 2013-08-07 Paolo Carlini - - PR c++/46206 - * name-lookup.c (lookup_name_real_1): Handle iter->type before - iter->value. - -2013-08-07 Paolo Carlini - - PR c++/46206 - * name-lookup.c (lookup_name_real_1): Handle iter->type before - iter->value. - -2013-08-06 Caroline Tice - - * Make-lang.in (*CXX_AND_OBJCXX_OBJS): Add vtable-class-hierarchy.o to - list. - (vtable-class-hierarchy.o): Add build rule. - * cp-tree.h (vtv_start_verification_constructor_init_function): New - extern function decl. - (vtv_finish_verification_constructor_init_function): New extern - function decl. - (build_vtbl_address): New extern function decl. - (get_mangled_vtable_map_var_name): New extern function decl. - (vtv_compute_class_hierarchy_transitive_closure): New extern function - decl. - (vtv_generate_init_routine): New extern function decl. - (vtv_save_class_info): New extern function decl. - (vtv_recover_class_info): New extern function decl. - (vtv_build_vtable_verify_fndecl): New extern function decl. - * class.c (finish_struct_1): Add call to vtv_save_class_info if - flag_vtable_verify is true. - * config-lang.in: Add vtable-class-hierarchy.c to gtfiles list. - * vtable-class-hierarchy.c: New file. - * mangle.c (get_mangled_vtable_map_var_name): New function. - * decl2.c (start_objects): Update function comment. - (cp_write_global_declarations): Call vtv_recover_class_info, - vtv_compute_class_hierarchy_transitive_closure and - vtv_build_vtable_verify_fndecl, before calling - finalize_compilation_unit, and call vtv_generate_init_rount after, IFF - flag_vtable_verify is true. - (vtv_start_verification_constructor_init_function): New function. - (vtv_finish_verification_constructor_init_function): New function. - * init.c (build_vtbl_address): Remove static qualifier from function. - -2013-08-06 Jason Merrill - - PR c++/57825 - * tree.c (strip_typedefs) [METHOD_TYPE]: Preserve ref-qualifier. - -2013-08-05 Paolo Carlini - - PR c++/58080 - * typeck.c (cp_pointer_int_sum): Add tsubst_flags_t parameter. - (cp_build_binary_op): Adjust. - -2013-08-04 Gabriel Dos Reis - - * cxx-pretty-print.h (pp_c_base): Remove. - (cxx_pretty_printer): Derive from c_pretty_printer. - Adjust macros using pp_c_base. - * cp-objcp-common.c (cxx_initialize_diagnostics): Do not call pp_base. - * cxx-pretty-print.c (pp_cxx_nonconsecutive_character): Likewise. - (pp_cxx_colon_colon): Likewise. - (pp_cxx_separate_with): Likewise. - (pp_cxx_storage_class_specifier): Do not call pp_c_base. - (pp_cxx_expression_list): Likewise. - (pp_cxx_space_for_pointer_operator): Likewise. - (pp_cxx_init_declarator): Likewise. - (pp_cxx_call_argument_list): Likewise. - (pp_cxx_constant): Likewise. - (pp_cxx_postfix_expression): Likewise. - (pp_cxx_new_expression): Likewise. - (pp_cxx_unary_expression): Likewise. - (pp_cxx_cast_expression): Likewise. - (pp_cxx_conditional_expression): Likewise. - (pp_cxx_assignment_expression): Likewise. - (pp_cxx_expression): Likewise. - (pp_cxx_function_specifier): Likewise. - (pp_cxx_decl_specifier_seq): Likewise. - (pp_cxx_simple_type_specifier): Likewise. - (pp_cxx_type_specifier_seq): Likewise. - (pp_cxx_ptr_operator): Likewise. - (pp_cxx_parameter_declaration_clause): Likewise. - (pp_cxx_direct_declarator): Likewise. - (pp_cxx_direct_abstract_declarator): Likewise. - (pp_cxx_type_id): Likewise. - (pp_cxx_statement): Likewise. - (pp_cxx_pretty_printer_init): Tidy. - * error.c (init_error): Do not use pp_base. - (dump_aggr_type): Likewise. - (dump_type_prefix): Likewise. - (dump_type_suffix): Likewise. - (dump_global_iord): Likewise. - (dump_decl): Likewise. - (dump_function_decl): Likewise. - (dump_ref_qualifier): Likewise. - (reinit_cxx_pp): Likewise. - (decl_as_dwarf_string): Likewise. - (lang_decl_dwarf_name): Likewise. - (type_to_string): Likewise. - (cv_to_string): Likewise. - (cxx_print_error_function): Likewise. - (cp_diagnostic_starter): Likewise. - (cp_diagnostic_finalizer): Likewise. - (cp_print_error_function): Likewise. - (print_instantiation_context): Likewise. - (cp_printer): Likewise. - -2013-08-03 Gabriel Dos Reis - - * error.c (dump_type_prefix): Use specialized pretty printer - functions instead of pp_string or operators and punctuators. - (dump_decl): Likewise. - (dump_expr): Likewise. - -2013-08-03 Jason Merrill - - DR 1286 - * pt.c (get_underlying_template): New. - (convert_template_argument, lookup_template_class_1): Use it. - - DR 1430 - PR c++/51239 - * pt.c (pack_expansion_args_count): Rename from - any_pack_expanson_args_p. - (coerce_template_parms): Reject pack expansion to - non-pack template parameter of alias template. - -2013-08-03 Gabriel Dos Reis - - * error.c (dump_aggr_type): Use specialized pretty printer - functions instead of pp_character. - (dump_type_prefix): Likewise. - (dump_simple_decl): Likewise. - (type_to_string): Likewise. - -2013-08-02 Paolo Carlini - - * cp-tree.h (finish_stmt): Do not declare. - * decl.c (finish_stmt): Do not define. - * parser.c (cp_parser_expression_statement, - cp_parser_declaration_statement, - cp_parser_transaction_cancel): Don't call finish_stmt. - * semantics.c (finish_expr_stmt, finish_if_stmt, - finish_while_stmt, finish_do_stmt, finish_return_stmt, - finish_for_stmt, finish_switch_stmt, finish_compound_stmt, - finish_transaction_stmt): Likewise. - -2013-08-01 Fabien Chêne - - PR c++/54537 - * cp-tree.h: Check OVL_USED with OVERLOAD_CHECK. - * name-lookup.c (do_nonmember_using_decl): Make sure we have an - OVERLOAD before calling OVL_USED. Call diagnose_name_conflict - instead of issuing an error without mentioning the conflicting - declaration. - -2013-07-31 Paolo Carlini - - * parser.c (cp_parser_sizeof_pack): Check cp_parser_identifier - return value for error_mark_node. - -2013-07-30 Paolo Carlini - - PR c++/57673 - * parser.c (cp_parser_cache_defarg): In an NSDMI don't stop when - token->type == CPP_ELLIPSIS. - -2013-07-30 Paolo Carlini - - PR c++/57947 - * call.c (is_std_init_list): Return false if cxx_dialect == cxx98. - -2013-07-29 Jason Merrill - - PR c++/57901 - * semantics.c (build_data_member_initialization, constexpr_fn_retval): - Use break_out_target_exprs instead of unshare_expr. - -2013-07-29 Paolo Carlini - - PR c++/57948 - * call.c (initialize_reference): Don't crash when reference_binding - returns a conv with conv->kind == ck_ambig. - -2013-07-29 Jason Merrill - - * mangle.c (write_name): Check for null context. - (write_unscoped_name): Allow PARM_DECL context. - -2013-07-25 Paolo Carlini - - PR c++/57981 - * decl.c (check_default_argument): Take a tsubst_flags_t parameter. - (grokparms): Adjust. - * parser.c (cp_parser_late_parse_one_default_arg): Likewise. - * pt.c (tsubst_default_argument, tsubst_default_arguments): Take - a tsubst_flags_t parameter. - (tsubst_decl): Adjust. - * call.c (convert_default_arg): Likewise. - * cp-tree.h (check_default_argument, tsubst_default_argument): - Update declarations. - -2013-07-25 Paolo Carlini - - PR c++/57880 - * parser.c (cp_parser_operator, case CPP_WSTRING, CPP_STRING16, - CPP_STRING32, CPP_UTF8STRING, CPP_WSTRING_USERDEF, - CPP_STRING16_USERDEF, CPP_STRING32_USERDEF, CPP_UTF8STRING_USERDEF): - Fix string_len management, tidy. - -2013-07-24 Paolo Carlini - - PR c++/57942 - * typeck.c (ptr_reasonably_similar): Use COMPARE_STRICT if either - target type is incomplete; return a bool, not an int. - * cp-tree.h (ptr_reasonably_similar): Adjust declaration. - -2013-07-22 Paolo Carlini - - * cp-tree.h (DERIVED_FROM_P): Pass tf_none to lookup_base, not - tf_warning_or_error. - -2013-07-21 Ondřej Bílka - - * class.c: Fix typos. - * cp-array-notation.c: Likewise. - * cp-objcp-common.c: Likewise. - * decl.c: Likewise. - * init.c: Likewise. - * mangle.c: Likewise. - * parser.c: Likewise. - * pt.c: Likewise. - * semantics.c: Likewise. - -2013-07-14 Adam Butcher - - * semantics.c (build_lambda_expr), - (build_lambda_object), (begin_lambda_type), (lambda_return_type), - (lambda_function), (lambda_capture_field_type), (is_capture_proxy), - (is_normal_capture_proxy), (insert_capture_proxy), - (insert_pending_capture_proxies), (lambda_proxy_type), - (build_capture_proxy), (vla_capture_type), - (register_capture_members), (add_default_capture), - (lambda_expr_this_capture), (maybe_resolve_dummy), - (nonlambda_method_basetype), (maybe_add_lambda_conv_op) and - (is_lambda_ignored_entity): Moved definitions into ... - * lambda.c: ... this new file. - -2013-07-14 Marc Glisse - - * call.c (build_conditional_expr_1): Handle the case with 1 vector - and 2 scalars. Call save_expr before building a vector. - * typeck.c (cp_build_binary_op): Check complain before complaining. - -2013-07-13 Lubos Lunak - - PR c++/55203 - * init.c (build_aggr_init): Check for warn_unused attribute. - * decl.c (poplevel): Likewise. - -2013-07-13 Jason Merrill - - PR c++/57402 - * init.c (build_vec_init): Use {} for arrays of class type. - (build_vec_delete): Don't take the address of the array. - - PR c++/57793 - * class.c (layout_class_type): Check for too-large class. - - * call.c (can_convert): Allow user-defined conversions. - (can_convert_standard): New. - * cp-tree.h: Declare it. - * cvt.c (convert_to_reference): Use it. - * pt.c (convert_nontype_argument): Likewise. - * search.c (check_final_overrider): Likewise. - Don't worry about user-defined conversions. - -2013-07-10 Paolo Carlini - - PR c++/57869 - * typeck.c (build_reinterpret_cast_1): With -Wconditionally-supported - warn about casting between pointer-to-function and pointer-to-object. - -2013-07-09 Jason Merrill - - PR c++/57402 - * init.c (build_vec_init): Don't take shortcuts when initializing - a VLA. - - PR c++/57471 - * parser.c (cp_parser_sizeof_pack): Clear parser scopes. - - PR c++/57658 - * semantics.c (finish_id_expression): Return the id for an - unevaluated outer variable. - - PR c++/57526 - * semantics.c (lambda_capture_field_type): Build a DECLTYPE_TYPE - if the variable type uses 'auto'. - - PR c++/57437 - * typeck.c (check_return_expr): Lambda proxies aren't eligible - for nrv or return by move. - - PR c++/57532 - * parser.c (cp_parser_ref_qualifier_opt): Don't tentatively parse - a ref-qualifier in C++98 mode. - - PR c++/57545 - * pt.c (convert_nontype_argument) [INTEGER_CST]: Force the - argument to have the exact type of the parameter. - - PR c++/57551 - * semantics.c (cxx_eval_indirect_ref): Don't try to look through - a POINTER_PLUS_EXPR for type punning diagnostic. - - PR c++/57831 - * pt.c (tsubst_copy): Handle USING_DECL. - -2013-07-09 Marc Glisse - - PR c++/53094 - * semantics.c (cxx_eval_bit_field_ref): Handle VECTOR_CST. - -2013-07-09 Marc Glisse - - PR c++/53000 - * call.c (build_conditional_expr_1): Preserve xvalues. - -2013-07-09 Paolo Carlini - - PR c++/51786 - * parser.c (cp_parser_simple_declaration): Before calling shadow_tag - also check declares_class_or_enum. - -2013-07-08 Jason Merrill - - PR c++/57550 - * pt.c (fn_type_unification): Only defer during substitution. - (type_unification_real): Defer during defarg substitution, - add checks parm to pass back deferred checks. - (unify, do_auto_deduction): Adjust. - * semantics.c (reopen_deferring_access_checks): New. - * cp-tree.h: Declare it. - -2013-07-06 Paolo Carlini - - PR c++/28262 - * parser.c (cp_parser_init_declarator): If we are parsing a typedef - set parser->default_arg_ok_p to false before cp_parser_declarator. - -2013-07-05 Paolo Carlini - - PR c++/14263 - * class.c (build_base_path): Improve diagnostic. - -2013-07-04 Paolo Carlini - - PR c++/38634 - * decl.c (start_preparsed_function): Return a bool, false if - push_template_decl fails. - (start_function): Adjust. - * cp-tree.h: Update. - -2013-07-03 Jakub Jelinek - - PR c++/57771 - * parser.c (cp_parser_postfix_expression) - Temporarily set parser->greater_than_is_operator_p for - cp_parser_expression and restore from saved value afterwards. - -2013-06-28 Ed Smith-Rowland <3dw4rd@verizon.net> - - * cp-tree.h (UDLIT_OP_ANSI_PREFIX): Remove space. - * parser.c (cp_parser_operator()): Parse user-defined string - literal as literal operator. - -2013-06-28 Paolo Carlini - - PR c++/57645 - * class.c (deduce_noexcept_on_destructors): Save, set, and restore - TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t) around the main loop over the - destructors. - -2013-06-28 Balaji V. Iyer - - * parser.c (cp_parser_array_notation): Removed rejection array notation - of type function pointers. Added handling of array expressions when - Cilk Plus is enabled. Took out type-checking. - (cp_parser_postfix_open_square_expression): Moved normal array expr. - parsing into cp_parser_array_notation when cilkplus is enabled. - (cp_parser_compound_statement): Removed expansion of array notations. - (cp_parser_ctor_initializer_opt_and_function_body): Likewise. - (cp_parser_function_definition_after_declarator): Likewise. - (cp_parser_selection_statement): Removed error reporting. - (cp_parser_iteration_statement): Likewise. - (cp_parser_direct_declarator): Removed error checking/reporting if - array notations are used in the declarator. - * pt.c (instantiate_decl): Likewise. - (type_unification_real): Removed a check for ARRAY_NOTATION_REF. - (cxx_eval_constant_expression): Removed ARRAY_NOTATION_REF case. - (potential_constant_expression_1): Returned false for - ARRAY_NOTATION_REF case. - * cp-gimplify.c (cp_genericize): Added expansion of array notation - expressions here. - * cp-array-notation.c (make_triplet_val_inv): Removed loc and cry - parameters. Replaced build_decls with get_temp_regvar with type as - ptrdiff. - (create_array_refs): Made the type-casting to ptrdiff_type. - (replace_invariant_var): Added a check for void return type before - creating new var. Replaced build_decl and build_min_nt_loc with - get_temp_regvar. - (expand_an_in_modify_expr): Ditto. Replaced body of redundant else - with gcc_unreachable. Removed few unwanted checks. Made induction - variable type as ptrdiff_type. Removed loc and complain arguments - passed into make_triplet_val_inv. Replaced all modify expression's - code from NOP EXPR to INIT EXPR. Replaced all forceful appending - into stmt. list with the non-forceful one. Replaced some integer - conversion and equality-checking to using tree_int_cst_equal. - (expand_sec_reduce_builtin): All changes mentioned in above function - expand_an_in_modify_expr. Made the new variable type of - SEC_REDUCE_ANY/ALL_{NON}ZERO intrinsic functions as bool. - (expand_array_notation_exprs): Removed SWITCH_EXPR case. Moved all - the error reporting from parser to this function. Removed unwanted - statements and checks from SWITCH_STMT, WHILE_STMT, and DO_STMT cases. - (cilkplus_an_triplet_types_ok_p): Removed rejection of array notation - in function pointers. - (cp_expand_cond_array_notations): Added a new if statements to check - if condition has a zero rank. If so, then just return. - (expand_return_expr): Added a check for return expressions with a rank. - Replaced get_tmp_regvar with a create_temporary_var. - (build_array_notation_ref): Simplified and removed unwanted if-stmts. - Moved common code outside if-statements. Moved type-checking from - parser to here. - * semantics.c (finish_return_stmt): Removed a check for return exprs. - with a rank. - * call.c (convert_like_real): Removed a check for array notation - expression in a function. - (build_over_call): Likewise. - (magic_varargs_p): Added a check for builtin array notation function. - Made this function non-static and removed its prototype. - * cp-tree.h (magic_varargs_p): New prototype. - * typeck.c (cp_build_function_call_vec): Removed automatic setting of - nargs to the param->length when builtin reduction function is used. - (convert_arguments): Replaced check for a constant_p function with - margic_varargs_p function call. - (cp_build_binary_op): Removed calling of the function - find_correct_array_notation_type. - (cp_build_addr_expr_1): Removed an unwanted if-statement. - (convert_for_assignment): Removed automatic return of rhs when array - notation builtin function is used. - -2013-06-28 Paolo Carlini - - PR c++/57682 - * parser.c (cp_parser_save_member_function_body): Handle correctly - curly braces in function-try-block mem-initializers. - -2013-06-27 Marc Glisse - - PR c++/57509 - * typeck.c (cp_build_vec_perm_expr): New function. - * cp-tree.h: Declare it. - * parser.c (cp_parser_postfix_expression): Call it. - * pt.c (tsubst_copy): Handle VEC_PERM_EXPR. - (tsubst_copy_and_build): Likewise. - -2013-06-27 Marc Glisse - - PR c++/57172 - * pt.c (more_specialized_fn): If both arguments are references, - give priority to an lvalue. - -2013-06-26 Jason Merrill - - * typeck2.c (store_init_value): Diagnose a non-constant - initializer for in-class static. - - PR c++/57408 - * semantics.c (add_capture): Set type to error_mark_node after - error. - -2013-06-25 Ed Smith-Rowland <3dw4rd@verizon.net> - - PR c++/57640 - * parser.c (cp_parser_unqualified_id): Add declarator_p to checks - to trigger warning, (cp_literal_operator_id): Remove bogus TODO comment. - -2013-06-22 Gabriel Dos Reis - - * call.c (null_ptr_cst_p): Use cxx11 in lieu of cxx0x. - * class.c (add_implicitly_declared_members): Likewise. - (check_field_decl): Likewise. - (finalize_literal_type_property): Likewise. - (check_bases_and_members): Likewise. - * decl.c (poplevel): Likewise. - (case_conversion): Likewise. - (check_initializer): Likewise. - (grokfndecl): Likewise. - (check_static_variable_definition): Likewise. - (compute_array_index_type): Likewise. - (grokdeclarator): Likewise. - (build_enumerator): Likewise. - * friend.c (make_friend_class): Likewise. - * lex.c (init_reswords): Likewise. - * method.c (synthesized_method_walk): Likewise. - (implicitly_declare_fn): Likewise. - * parser.c (cp_parser_diagnose_invalid_type_name): Likewise. - (cp_parser_constant_expression): Likewise. - (cp_parser_for_init_statement): Likewise. - (cp_parser_block_declaration): Likewise. - (cp_parser_type_name): Likewise. - (cp_parser_enum_specifier): Likewise. - (cp_parser_enumerator_list): Likewise. - (cp_parser_member_declaration): Likewise. - (cp_nth_tokens_can_be_std_attribute_p): Likewise. - (cp_parser_template_declaration_after_export): Likewise. - * pt.c (convert_nontype_argument_function): Likewise. - (convert_nontype_argument): Likewise. - (convert_template_argument): Likewise. - (tsubst_copy_and_build): Likewise. - (build_non_dependent_expr): Likewise. - * semantics.c (non_const_var_error): Likewise. - (potential_constant_expression_1): Likewise. - * tree.c (lvalue_kind): Likewise. - (build_vec_init_expr): Likewise. - (cast_valid_in_integral_constant_expression_p): Likewise. - * typeck.c (build_x_conditional_expr): Likewise. - * typeck2.c (check_narrowing): Likewise. - -2013-06-21 Balaji V. Iyer - - * cp-array-notation.c (cp_length_mismatch_in_expr_p): Remove. - (expand_an_in_modify_expr): Changed a function call from the above - removed function to length_mismatch_in_expr_p. - -2013-06-21 Balaji V. Iyer - - * call.c (convert_like_real): Added a check if array notation is present - in expression. If so, then no conversion of arguments is necessary. - (build_over_call): Likewise. - * typeck.c (cp_build_function_call_vec): Likewise. - (convert_for_assignment): Likewise. - (cp_build_array_ref): Reject array notations with a rank greater than 1 - as an array's index. - (cp_build_binary_op): If array notations are preent in op, then call - find_correct_array_notation_type. - (cp_build_addr_expr_1): Handle ARRAY_NOTATION_REF similar to ARRAY_REF. - * cp-array-notation.c: New file. - * cp-objcp-common.c (cp_common_init_ts): Marked ARRAY_NOTATION_REF tree - as typed. - * cp-tree.h (fix_array_notation_exprs): New prototype. - * semantics.c (finish_return_stmt): Reject array notations as - return value. - (cxx_eval_constant_expression): Added ARRAY_NOTATION_REF case. - (potential_constant_expression_1): Likewise. - * tree.c (lvalue_kind): Likewise. - * error.c (dump_decl): Likewise. - (dump_expr): Likewise. - * pt.c (ARRAY_NOTATION_REF): Likewise. - (type_unification_real): Do not unify any arguments if array notations - are found in arg. - (instantiate_decl): Added a check for array notaitons inside the - function body. If so, then expand them. - * parser.c (cp_parser_array_notation): New function. - (cp_parser_postfix_open_square_expression): Added a check for colons - inside square braces. If found, then handle the array access as an - array notation access. Also, disable auto-correction from a single - colon to scope when Cilk Plus is enabled. - (cp_parser_compound_statement): Added a check for array notations - inside the statement. If found, then expand them. - (cp_parser_ctor_initializer_opt_and_function_body): Likewise. - (cp_parser_function_definition_after_declarator): Likewise. - (cp_parser_selection_statement): Searched for array notations inside - condition. If so, then emit an error. - (cp_parser_iteration_statement): Likewise. - (cp_parser_direct_declarator): Reject array notations inside a - variable or array declaration. - * Make-lang.in (CXX_AND_OBJCXX_OBJS): Added cp/cp-array-notation.o. - -2013-06-20 Jason Merrill - - PR c++/55149 - * decl.c (compute_array_index_type): Don't reject VLAs in SFINAE - context if we're in C++14 mode. - * tree.c (array_of_runtime_bound_p): Return true for a dependent - bound that is not potentually constant. - * cp-tree.h (DECL_VLA_CAPTURE_P, REFERENCE_VLA_OK): New. - * pt.c (tsubst) [REFERENCE_TYPE]: Check REFERENCE_VLA_OK. - * semantics.c (build_lambda_object): Don't rvalue a VLA capture. - (build_capture_proxy): Set REFERENCE_VLA_OK. - (vla_capture_type): Make it a proper C++ class. - (add_capture): Set DECL_VLA_CAPTURE_P. Don't pre-digest the - initializer. - - * decl.c (compute_array_index_type): Use size_one_node. - - * pt.c (process_partial_specialization): Build a TEMPLATE_DECL for - a partial specialization. - (tsubst_decl): Don't clobber CLASSTYPE_TI_TEMPLATE of a partial - specialization. - (most_specialized_class): Adjust. - - * cp-tree.h (DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT) - (DECL_TEMPLATE_INSTANTIATIONS, DECL_TEMPLATE_SPECIALIZATIONS): Use - TEMPLATE_DECL_CHECK. - -2013-06-19 Manuel Lopez-Ibanez - - PR c++/57638 - * pt.c (unify, [TEMPLATE_PARM_INDEX]): Pass to unify_type_mismatch - TREE_TYPE (arg), not arg itself. - -2013-06-18 Paolo Carlini - - PR c++/53211 - * pt.c (type_dependent_expression_p): Handle an array of unknown - bound depending on a variadic parameter. - * parser.c (cp_parser_range_for): Revert PR56794 changes. - -2013-06-17 Richard Biener - - * cp-tree.h (ANON_AGGRNAME_FORMAT, ANON_AGGRNAME_P): Move to tree.h. - -2013-06-17 Paolo Carlini - - PR c++/16128 - * parser.c (cp_parser_expression_statement): Check whether - cp_parser_expression returns error_mark_node. - -2013-06-14 Paolo Carlini - - PR c++/51413 - * semantics.c (finish_offsetof): Handle INDIRECT_REF as expr. - -2013-06-14 Paolo Carlini - - PR c++/57599 - * rtti.c (build_dynamic_cast_1): In case of cast to an unambiguous - accessible base simply forward to build_static_cast. - -2013-06-12 Paolo Carlini - - PR c++/38958 - * decl.c (poplevel): For the benefit of -Wunused-variable see - through references. - -2013-06-12 Paolo Carlini - - * parser.c (cp_parser_nested_name_specifier_opt): Fix typo in comment. - -2013-06-12 Paolo Carlini - - PR c++/42021 - * parser.c (cp_parser_nested_name_specifier_opt): Avoid emitting - again diagnostic already emitted by cp_parser_lookup_name. - -2013-06-11 Jan Hubicka - - PR c++/57551 - * cp/pt.c (mark_decl_instantiated): Do not export explicit - instantiations of anonymous namespace templates. - -2013-06-10 Jason Merrill - - * name-lookup.c (add_decl_to_level): Add decls in an anonymous - namespace to static_decls. - -2013-06-07 Sriraman Tallam - - PR c++/57548 - * call.c (build_over_call): Check if current_function_decl is - NULL. - -2013-06-07 Paolo Carlini - - PR c++/53658 - * pt.c (lookup_template_class_1): Consistently use TYPE_MAIN_DECL, - not TYPE_STUB_DECL, to access the _DECL for a _TYPE. - -2013-06-06 Jason Merrill - - PR c++/55520 - * semantics.c (add_capture): Diagnose capture of variable-size - type that is not a C++1y array of runtime bound. - - * decl.c (grokdeclarator): Keep a decl with error type. - (grokfield, grokbitfield): Likewise. - * pt.c (instantiate_class_template_1): Likewise. - (tsubst_decl): Drop redundant error. - * class.c (walk_subobject_offsets): Handle erroneous fields. - * typeck2.c (process_init_constructor_record): Likewise. - -2013-06-05 Paolo Carlini - - PR c++/51908 - * parser.c (cp_parser_postfix_expression [RID_*CAST]): Set - parser->in_type_id_in_expr_p before calling cp_parser_type_id. - -2013-06-03 Jan Hubicka - - * decl2.c (maybe_make_one_only): Use forced_by_abi instead of - mark_decl_referenced. - (mark_needed): Likewise. - -2013-06-03 Jason Merrill - - * class.c (mark_type_abi_tags): New. - (check_abi_tags): Use it. - -2013-06-03 Paolo Carlini - - PR c++/57419 - * decl2.c (mark_used): Add overload taking a tsubst_flags_t too. - * semantics.c (finish_qualified_id_expr): Use it. - * cp-tree.h: Update. - -2013-06-01 Jan Hubicka - - * decl2.c (cp_write_global_declarations): Replace same_body_alias - by symbol.cpp_implicit_alias. - -2013-05-30 Jason Merrill - - PR c++/57404 - * cp-lang.c (cp_classify_record): Handle structs without - TYPE_LANG_SPECIFIC. - - PR c++/52377 - * class.c (common_enclosing_class): New. - * cp-tree.h: Declare it. - * init.c (sort_mem_initializers): Don't splice out a union member - with an NSDMI. - -2013-05-29 Jan Hubicka - - * tree.c (cp_fix_function_decl_p): Update for new symtab flags. - * decl2.c )var_finalized_p, cp_write_global_declarations): Likewise. - -2013-05-25 Paolo Carlini - - PR c++/25666 - * decl2.c (check_classfn): Check for destructors declared as member - templates. - -2013-05-24 Jason Merrill - - PR c++/56971 - * pt.c (any_template_arguments_need_structural_equality_p): A - TEMPLATE_TEMPLATE_PARM can require structural type comparison. - -2013-05-24 Paolo Carlini - - PR c++/19618 - * class.c (check_bitfield_decl): Warn for bool and enum bitfields - with width exceeding the type. - -2013-05-24 Jason Merrill - - PR c++/57391 - * semantics.c (cxx_eval_constant_expression): Handle FMA_EXPR. - (cxx_eval_trinary_expression): Rename from cxx_eval_vec_perm_expr. - -2013-05-23 Jason Merrill - - PR c++/57388 - * tree.c (build_ref_qualified_type): Clear - FUNCTION_RVALUE_QUALIFIED for lvalue ref-qualifier. - -2013-05-22 Jason Merrill - - PR c++/56930 - * call.c (convert_like_real): Use cp_convert_and_check. - * cvt.c (cp_convert_and_check): Use maybe_constant_value. - * semantics.c (cxx_eval_constant_expression): Handle LTGT_EXPR. - (potential_constant_expression_1): Handle OMP_ATOMIC*. - - PR c++/56915 - * semantics.c (maybe_add_lambda_conv_op): Give up if the call op - isn't defined. - -2013-05-22 Paolo Carlini - - PR c++/57352 - * parser.c (cp_parser_conversion_type_id): Set up - parser->type_definition_forbidden_message before calling - cp_parser_type_specifier_seq. - -2013-05-22 Paolo Carlini - - PR c++/57211 - * method.c (defaultable_fn_check): Avoid do_warn_unused_parameter - warnings about defaulted functions. - -2013-05-21 Paolo Carlini - - * call.c (build_conditional_expr_1): Add location_t parameter. - (build_conditional_expr): Likewise. - * typeck.c (rationalize_conditional_expr, cp_build_array_ref, - get_member_function_from_ptrfunc, build_x_conditional_expr, - cp_build_modify_expr): Update. - * init.c (build_new_1): Likewise. - * cp-tree.h: Update declaration. - -2013-05-20 Jason Merrill - - PR c++/57016 - * pt.c (instantiation_dependent_r) [TRAIT_EXPR]: Only check type2 - if there is one. - - PR c++/57102 - * decl.c (fndecl_declared_return_type): Also look in - DECL_SAVED_FUNCTION_DATA. - -2013-05-20 Paolo Carlini - - PR c++/12288 - * parser.c (cp_parser_parameter_declaration): Check return value - of cp_parser_parse_and_diagnose_invalid_type_name. - -2013-05-20 Jason Merrill - - PR c++/57319 - * class.c (vbase_has_user_provided_move_assign): New. - * method.c (synthesized_method_walk): Check it. - * cp-tree.h: Declare it. - - PR c++/57325 - * tree.c (build_cplus_array_type): Copy layout info if element - type is complete. - -2013-05-20 Paolo Carlini - - PR c++/23608 - * call.c (build_new_op_1): Propagate loc to cp_build_binary_op. - -2013-05-20 Jason Merrill - - PR c++/57317 - * decl2.c (determine_visibility): Use PRIMARY_TEMPLATE_P to decide - whether a template has its own args. - -2013-05-20 Paolo Carlini - - PR c++/57327 - * pt.c (unify_no_common_base): Swap arg and parm arguments to inform. - -2013-05-20 Paolo Carlini - - PR c++/10207 - * parser.c (cp_parser_postfix_expression): Use cp_parser_braced_list - instead of cp_parser_initializer_list for compound-literals. - -2013-05-20 Marc Glisse - - PR c++/57175 - * typeck.c (check_return_expr): Reverse the alignment comparison. - -2013-05-17 Paolo Carlini - - PR c++/18126 - * parser.c (cp_parser_sizeof_operand): As a GNU Extension, parse - correctly sizeof compound-literal; update comments. - -2013-05-16 Marc Glisse - - * call.c (build_conditional_expr_1): Use cp_build_binary_op - instead of directly calling fold_build2. - -2013-05-16 Jason Merrill - - * Make-lang.in (cc1plus$(exeext)): Use link mutex. - - PR c++/57279 - * decl.c (grokdeclarator): Allow member function qualifiers in - TYPENAME context in C++11 mode. - -2013-05-16 Dodji Seketeli - - PR c++/56782 - Regression with empty pack expansions - * pt.c (use_pack_expansion_extra_args_p): When at least a - parameter pack has an empty argument pack, and another parameter - pack has no argument pack at all, use the PACK_EXPANSION_EXTRA - mechanism. - -2013-05-15 Paolo Carlini - - * name-lookup.c (pushdecl_maybe_friend_1): Replace pairs of - warning_at and permerror with warning_at/inform and permerror/ - inform, respectively. - -2013-05-15 Paolo Carlini - - PR c++/31952 - * name-lookup.c (pushdecl_maybe_friend_1): Diagnose illegal - redeclarations. - -2013-05-14 Jason Merrill - - PR c++/57243 - * parser.c (cp_parser_range_for): Call complete_type. - - PR c++/57041 - * pt.c (tsubst_copy_and_build): Don't recur into a designator. - -2013-05-14 Paolo Carlini - - PR c++/53903 - * method.c (defaulted_late_check): Check for compatible exception - specification out of class explicitly defaulted functions too. - -2013-05-14 Jason Merrill - - PR c++/56998 - * semantics.c (potential_constant_expression_1): Make sure the - called function is potentially constant. - * call.c (null_ptr_cst_p): Revert earlier change. - -2013-05-13 Jason Merrill - - PR c++/56998 - * call.c (null_ptr_cst_p): An expression with side-effects can't - be a C++03 null pointer constant. - - PR c++/57041 - * decl.c (reshape_init_class): Handle error_mark_node. - - PR c++/57254 - * typeck.c (merge_types): Propagate ref-qualifier - in METHOD_TYPE case. - - PR c++/57253 - * decl.c (grokdeclarator): Apply ref-qualifier - in the TYPENAME case. - - PR c++/57252 - * decl.c (decls_match): Compare ref-qualifiers. - -2013-05-10 Jason Merrill - - PR c++/57196 - * pt.c (convert_template_argument): Use dependent_template_arg_p, - not uses_template_parms. - - PR c++/57047 - * semantics.c (cxx_fold_indirect_ref): Fix thinko. - - PR c++/55149 - * semantics.c (add_capture): Error rather than abort on copy - capture of VLA. - * typeck.c (maybe_warn_about_returning_address_of_local): Don't - warn about capture proxy. - -2013-05-09 Jason Merrill - - * decl.c (cp_finish_decl): Only check VLA bound in C++1y mode. - - PR c++/57222 - * pt.c (lookup_template_class_1): Handle getting a template - template parameter as D1. - - N3639 C++1y VLA diagnostics - * decl.c (grokdeclarator): Complain about reference, pointer, or - typedef to VLA. - (create_array_type_for_decl): Complain about array of VLA. - * pt.c (tsubst): Likewise. - * rtti.c (get_tinfo_decl): Talk about "array of runtime bound". - * semantics.c (finish_decltype_type): Complain about decltype of VLA. - * typeck.c (cp_build_addr_expr_1): Complain about VLA. - (cxx_sizeof_or_alignof_type): Likewise. - - N3639 C++1y VLA support - * decl.c (compute_array_index_type): Allow VLAs in C++1y mode. - (check_array_initializer): Allow VLA init. - (reshape_init_array_1): Adjust. - (cp_finish_decl): Check for invalid VLA length. - * typeck2.c (process_init_constructor_array): Adjust. - (store_init_value): Use build_vec_init for VLAs. - * semantics.c (add_capture): Capture VLA as ptr+len. - (vla_capture_type): New. - (build_capture_proxy): Rebuild the VLA. - * typeck.c (build_simple_component_ref): Split out from... - (build_ptrmemfunc_access_expr): ...here. - * tree.c (array_of_runtime_bound_p): New. - * init.c (throw_bad_array_length): New. - (build_vec_init): Use it. - * parser.c (cp_convert_range_for): When iterating over a VLA, - use it directly rather than bind a reference. - * cp-tree.h: Declare new functions. - -2013-05-08 Jason Merrill - - * except.c (is_admissible_throw_operand_or_catch_parameter): Check - variably_modified_type_p. - (expand_start_catch_block): Mark the typeinfo used here. - * semantics.c (finish_handler_parms): Not here. - - * error.c (dump_type_suffix): Try harder on VLA length. - - Core 624/N2932 - * init.c (throw_bad_array_new_length): New. - (build_new_1): Use it. Don't warn about braced-init-list. - (build_vec_init): Use it. - * call.c (build_operator_new_call): Use it. - - PR c++/57068 - * decl.c (grokdeclarator): Warn about ref-qualifiers here. - * parser.c (cp_parser_ref_qualifier_seq_opt): Not here. - * error.c (maybe_warn_cpp0x): s/0x/11/. - -2013-05-08 Paolo Carlini - - PR c++/51226 - * parser.c (cp_parser_enum_specifier): Handle nested_name_specifier - == error_mark_node. - -2013-05-06 Marc Glisse - - * typeck.c (cp_build_binary_op): Call save_expr before - build_vector_from_val. - -2013-05-06 Paolo Carlini - - PR c++/57183 - * decl.c (cp_finish_decl): After do_auto_deduction copy the - qualifers with cp_apply_type_quals_to_decl. - -2013-05-05 Paolo Carlini - - * pt.c (convert_nontype_argument): Add missing whitespace in - error message. - -2013-05-04 Paolo Carlini - - PR c++/53745 - * decl.c (build_enumerator): Improve error message. - -2013-05-03 Paolo Carlini - - PR c++/14283 - * parser.c (cp_parser_diagnose_invalid_type_name): Improve error - messages for template types and fix column numbers. - -2013-05-01 Paolo Carlini - - PR c++/57132 - * pt.c (tsubst_copy_and_build, MODOP_EXPR): Increase / decrease - c_inhibit_evaluation_warnings around build_x_modify_expr call. - -2013-05-01 Paolo Carlini - - PR c++/57092 - * semantics.c (finish_decltype_type): Handle instantiated template - non-type arguments. - -2013-04-28 Paolo Carlini - - PR c++/56450 - * semantics.c (finish_decltype_type): Handle COMPOUND_EXPR. - -2013-04-26 Jakub Jelinek - - * error.c (cp_print_error_function): Adjust file_name_as_prefix - caller. - -2013-04-25 Jason Merrill - - PR c++/56859 - * typeck.c (cxx_alignas_expr): Handle value-dependence properly. - - PR c++/50261 - * init.c (perform_member_init): Call reshape_init. - -2013-04-24 Jason Merrill - - PR c++/53721 - * parser.c (cp_parser_postfix_dot_deref_expression): Fix thinko. - -2013-04-24 Paolo Carlini - - * typeck.c (cxx_sizeof_or_alignof_type): Change -Wpointer-arith - pedwarn to simply use OPT_Wpointer_arith. - (cp_build_unary_op): Likewise. - -2013-04-24 Jason Merrill - - N3648: init-captures are named. - * semantics.c (add_capture): Don't prepend "__" to init-captures. - (build_capture_proxy): Adjust. - * error.c (dump_simple_decl): Check DECL_NORMAL_CAPTURE_P. - - N3648: Allow braced and parenthesized initializers. - * parser.c (cp_parser_lambda_introducer): Use cp_parser_initializer. - * pt.c (tsubst) [DECLTYPE_TYPE]: Handle DECLTYPE_FOR_INIT_CAPTURE. - * semantics.c (lambda_capture_field_type): Use do_auto_deduction. - (add_capture): Collapse a parenthesized initializer into a single - expression. - * cp-tree.h (DECLTYPE_FOR_INIT_CAPTURE): New. - -2013-04-24 Paolo Carlini - - PR c++/56970 - * init.c (build_offset_ref): Add tsubst_flags_t parameter. - * semantics.c (finish_qualified_id_expr): Likewise. - (finish_id_expression): Update. - * typeck.c (cp_build_addr_expr_1): Likewise. - * pt.c (tsubst_qualified_id, resolve_nondeduced_context): Likewise. - * cp-tree.h: Update declarations. - -2013-04-22 Jason Merrill - - Core 1586 - * parser.c (cp_parser_unqualified_id): Handle ~auto. - (cp_parser_pseudo_destructor_name): Likewise. - (cp_parser_postfix_dot_deref_expression): Adjust. - (cp_lexer_nth_token_is_keyword): New. - * semantics.c (finish_pseudo_destructor_expr): Handle ~auto. - * typeck.c (lookup_destructor): Handle ~auto. - - * pt.c (fn_type_unification): Push tinst level around - type_unification_real if we aren't explaining. - * cp-tree.h (TFF_NO_TEMPLATE_BINDINGS): New. - * error.c (dump_function_decl): Respect it. - (subst_to_string): Pass it. - - PR c++/48665 - * rtti.c (get_typeid): Diagnose qualified function type. - * pt.c (tsubst) [POINTER_TYPE]: Likewise. - - * error.c (dump_aggr_type): Fix lambda detection. - (dump_simple_decl): Pretty-print capture field. - - N3323 - * cvt.c (build_expr_type_conversion): Two conversions that return - the same type aren't necessarily ambiguous. - - N3648 - * parser.c (cp_parser_lambda_introducer): Make lambda capture init - pedwarn unconditional except in C++1y mode. - - * semantics.c (potential_constant_expression_1): Don't crash on - 'this' in NSDMI. - - Core 1612 - * semantics.c (finish_id_expression): Reject capture of anonymous - union member. - - Core 1609 - * decl2.c (check_default_args): Check for pack expansion. - - * mangle.c (write_type): Mangle decltype(auto). - -2013-04-19 Jason Merrill - - N3638 changes to return type deduction - * decl.c (undeduced_auto_decl): New. - (require_deduced_type): New. - (fndecl_declared_return_type): New. - (decls_match): Use it. - (duplicate_decls): Don't check for auto return. - (grokdeclarator): Reject virtual auto. - * class.c (resolve_address_of_overloaded_function): Handle - auto function templates. - * decl2.c (mark_used): Use undeduced_auto_decl, require_deduced_type. - * cp-tree.h: Declare new fns. - * error.c (dump_function_decl): Use fndecl_declared_return_type. - * search.c (check_final_overrider): Likewise. - * pt.c (make_decltype_auto): New. - (do_auto_deduction): Require plain decltype(auto). - (is_auto): Adjust. - - DR 941 - * decl.c (duplicate_decls): Don't propagate DECL_DELETED_FN to - template specializations. - -2013-04-16 Ed Smith-Rowland <3dw4rd@verizon.net> - - Implement n3599 - Literal operator templates for strings. - * parser.c (make_string_pack (tree value)): New function. - (cp_parser_userdef_string_literal (cp_token *)): Use it - to construct calls to character string literal operator templates. - (cp_parser_template_declaration_after_export): Check for new string - literal operator template parameter form. - -2013-04-15 Jason Merrill - - * pt.c (tsubst) [DECLTYPE_TYPE]: Use tsubst_copy_and_build. - - PR c++/52748 - * pt.c (tsubst) [DECLTYPE_TYPE]: If ~id is an expression - rather than a destructor name, it isn't an unqualified-name. - (tsubst_copy_and_build): Pass down decltype_flag to operator - handling code, too. - - PR c++/56388 - * semantics.c (insert_capture_proxy): Just use index 1 in the - stmt_list_stack. - -2013-04-12 Jakub Jelinek - - * error.c (cp_print_error_function, - print_instantiation_partial_context_line, - maybe_print_constexpr_context): Colorize locus strings. - -2013-04-11 Jason Merrill - - PR c++/52748 - * parser.c (complain_flags): New. - (cp_parser_postfix_expression): Use it. - (cp_parser_unary_expression): Likewise. - (cp_parser_binary_expression): Likewise. - (cp_parser_assignment_expression): Likewise. - (cp_parser_expression): Likewise. - (cp_parser_postfix_open_square_expression): Take decltype_p. - (cp_parser_builtin_offsetof): Adjust. - (cp_convert_range_for): Pass complain to finish_unary_op_expr. - * decl2.c (grok_array_decl): Add decltype_p parm. - * cp-tree.h: Adjust prototype. - * semantics.c (finish_unary_op_expr): Add complain parm. - -2013-04-11 Jakub Jelinek - - PR c++/56895 - * call.c (null_ptr_cst_p): Call fold_non_dependent_expr_sfinae before - calling maybe_constant_value for C++98. - -2013-04-11 Jason Merrill - - PR c++/56901 - * semantics.c (lambda_capture_field_type, lambda_proxy_type): - Strip references before checking WILDCARD_TYPE_P. - -2013-04-11 Paolo Carlini - - * call.c (build_conditional_expr_1, build_over_call): Protect - error calls with complain & tf_error. - * typeck.c (finish_class_member_access_expr, cp_build_binary_op, - build_x_unary_op, cp_build_unary_op, cp_build_compound_expr, - build_ptrmemfunc): Likewise. - (lookup_destructor): Take tsubst_flags_t parameter, adjust. - - * cvt.c (warn_ref_binding): Rename to diagnose_ref_binding. - (convert_to_reference): Adjust. - -2013-04-11 Jason Merrill - - * pt.c (tsubst_copy) [VAR_DECL]: Don't call tsubst for - local variables, look them up instead. - (tsubst_decl) [VAR_DECL]: Remove handling for anonymous union - proxies and substitution in unevaluated context. - (tsubst_expr) [OMP_FOR]: Instantiate OMP_FOR_PRE_BODY - before the iterators. - - PR c++/23055 - * pt.c (uses_deducible_template_parms): New. - (deducible_array_bound, deducible_expression): New. - (deducible_template_args): New. - (unify_one_argument): Call uses_deducible_template_parms. - -2013-04-11 Paolo Carlini - - PR c++/56913 - * typeck2.c (build_m_component_ref): Protect error calls with - (complain & tf_error). - -2013-04-11 Paolo Carlini - - PR c++/54216 - * parser.c (cp_parser_enum_specifier): Check for empty - anonymous enums and anonymous scoped enums. - -2013-04-10 Jakub Jelinek - - PR c++/56895 - * typeck.c (cp_build_binary_op): Call fold_non_dependent_expr_sfinae - first before calling maybe_constant_value for warn_for_div_by_zero - or invalid shift count warning purposes. - -2013-04-09 Jason Merrill - - PR c++/25466 - * rtti.c (build_typeid): Check the address of the argument - rather than looking for an INDIRECT_REF. - -2013-04-04 Jason Merrill - - PR c++/56838 - PR c++/17232 - * typeck2.c (abstract_virtuals_error_sfinae): Disable - complete_type again. - -2013-04-08 Paolo Carlini - - PR c++/56871 - * decl.c (validate_constexpr_redeclaration): Allow an explicit - specialization to be different wrt the constexpr specifier. - -2013-04-06 Jason Merrill - - * parser.c (cp_parser_std_attribute): Treat [[noreturn]] like GNU - noreturn attribute. - -2013-04-05 Ed Smith-Rowland <3dw4rd@verizon.net> - - * parser.c (cp_parser_ref_qualifier_seq_opt): Move to - cp_parser_ref_qualifier_opt. Error if more than one ref-qual found. - -2013-04-03 Jason Merrill - - * cp-tree.h (FUNCTION_OR_METHOD_TYPE_CHECK): Remove. - (TYPE_RAISES_EXCEPTIONS): Use FUNC_OR_METHOD_CHECK instead. - (FUNCTION_REF_QUALIFIED, FUNCTION_RVALUE_QUALIFIED): Likewise. - - * mangle.c (write_type): When writing a function type with - function-cv-quals, don't add the unqualified type as a - substitution candidate. - -2013-04-03 Paolo Carlini - - PR c++/56815 - * typeck.c (cp_build_unary_op): Change -Wpointer-arith permerror to - pedwarn. - -2013-04-03 Jakub Jelinek - - PR debug/56819 - * tree.c (strip_typedefs): Copy NON_DEFAULT_TEMPLATE_ARGS_COUNT - from args to new_args. - (strip_typedefs_expr): Copy NON_DEFAULT_TEMPLATE_ARGS_COUNT from t to - r instead of doing {S,G}ET_NON_DEFAULT_TEMPLATE_ARGS_COUNT. - -2013-04-02 Jason Merrill - - PR c++/56821 - * mangle.c (write_function_type): Mangle ref-qualifier. - (write_nested_name): Likewise. - (canonicalize_for_substitution): Preserve ref-qualifier. - (write_type): Likewise. - - PR c++/34949 - * decl.c (begin_destructor_body): Clobber the object in a cleanup. - -2013-04-02 Paolo Carlini - - * friend.c (do_friend): Use COMPLETE_OR_OPEN_TYPE_P. - * pt.c (find_parameter_packs_r): Use TYPE_ALIAS_P and TYPE_TI_ARGS. - (for_each_template_parm_r): Use TYPE_TI_ARGS. - -2013-04-02 Paolo Carlini - - * cp-tree.h (TAGGED_TYPE_P): Remove. - (IS_OVERLOAD_TYPE): Rename to OVERLOAD_TYPE_P, adjust. - (TYPE_ANONYMOUS_P): Adjust. - * call.c (build_new_op_1): Likewise. - * class.c (find_abi_tags_r): Likewise. - * decl.c (warn_misplaced_attr_for_class_type, start_decl, - type_is_deprecated): Likewise. - * decl2.c (grokfield, min_vis_r): Likewise. - * pt.c (get_template_info): Likewise. - * tree.c (handle_abi_tag_attribute): Likewise. - -2013-04-01 Jason Merrill - - * semantics.c (maybe_constant_value): Check - instantiation_dependent_expression_p. - * pt.c (build_non_dependent_expr): Don't check it here. - - PR c++/56772 - * init.c (build_new): Don't try to process an array initializer - at template definition time. - - PR c++/56793 - * typeck.c (finish_class_member_access_expr): Handle enum scope. - - PR c++/56794 - * parser.c (cp_parser_range_for): Don't try to do auto deduction - in a template if the type of the range is incomplete. - - * call.c (add_function_candidate): Take the address of 'this' here. - (build_over_call): And here. - (build_new_method_call_1, build_op_call_1): Not here. - (build_user_type_conversion_1): Or here. - (add_candidates): Adjust. - - * cxx-pretty-print.h (pp_cxx_cv_qualifiers): New. - * class.c (same_signature_p): Use type_memfn_quals. - * cp-tree.h (TYPE_RAISES_EXCEPTIONS): Use - FUNCTION_OR_METHOD_TYPE_CHECK. - * error.c (dump_type_suffix): Add padding before cv-qualifiers. - * pt.c (unify): Use static_fn_type. - -2013-04-01 Bronek Kozicki - Jason Merrill - - Implement N2439 (ref-qualifiers for 'this') - * cp-tree.h (FUNCTION_REF_QUALIFIED): New. - (FUNCTION_RVALUE_QUALIFIED): New. - (FUNCTION_OR_METHOD_TYPE_CHECK): New. - (cpp0x_warn_str): Add CPP0X_REF_QUALIFIER. - (cp_ref_qualifier): New enum. - (cp_declarator): Add ref_qualifier. - * parser.c (cp_parser_ref_qualifier_seq_opt): New. - (cp_parser_direct_declarator): Use it. - (make_call_declarator): Adjust. - (cp_parser_lambda_declarator_opt): Adjust. - * call.c (add_function_candidate): Handle ref-qualifier overload - resolution semantics. - (standard_conversion): Adjust. - * class.c (add_method, same_signature_p): Compare ref-qualifiers. - * decl.c (grokdeclarator): Handle ref-qualifiers. - (grokfndecl): Check for invalid ref-qualifiers. - (static_fn_type, revert_static_member_fn): Adjust. - * decl2.c (build_memfn_type): Handle ref-qualifiers. - (check_classfn): Check them. - (cp_reconstruct_complex_type): Retain them. - * error.c (dump_ref_qualifier): New. - (dump_type_suffix, dump_function_decl): Use it. - (maybe_warn_cpp0x): Handle CPP0X_REF_QUALIFIER. - * pt.c (tsubst, tsubst_function_type): Instantiate ref-quals. - (unify): Retain them. - * tree.c (cp_check_qualified_type): New. - (cp_build_qualified_type_real): Keep exception spec and ref-qual. - (build_ref_qualified_type): New. - (strip_typedefs, build_exception_variant): Keep ref-qualifier. - (cp_build_type_attribute_variant): Keep ref-qualifier. - * typeck.c (merge_types): Keep ref-qualifier. - (structural_comptypes): Compare ref-qualifier. - (type_memfn_rqual): New. - (apply_memfn_quals): Take ref-qual argument. - * typeck2.c (build_m_component_ref): Check ref-qualifier. - -2013-04-01 Paolo Carlini - - * cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): Remove. - (DECL_FUNCTION_TEMPLATE_P): Adjust. - - * cxx-pretty-print.c (pp_cxx_nested_name_specifier, - pp_cxx_qualified_id): Use get_containing_scope. - * parser.c (cp_parser_class_head): Likewise. - * pt.c (push_template_decl_real): Likewise. - - * decl2.c (import_export_decl): Use DECL_TEMPLOID_INSTANTIATION. - * pt.c (unify): Use CP_INTEGRAL_TYPE_P. - -2013-03-31 Paolo Carlini - - * decl2.c (collect_candidates_for_java_method_aliases): Use - DECL_CLASS_SCOPE_P. - * name-lookup.c (pushtag_1) Use TYPE_FUNCTION_SCOPE_P. - (pushdecl_maybe_friend_1): Use DECL_DECLARES_FUNCTION_P. - * decl.c (duplicate_decls): Likewise. - * parser.c (cp_parser_template_declaration_after_export): Likewise, - also DECL_DECLARES_TYPE_P. - * pt.c (instantiate_class_template_1): Likewise. - * search.c (lookup_field_1): Use DECL_DECLARES_TYPE_P. - (lookup_field_r): Likewise. - (friend_accessible_p): Use DECL_DECLARES_FUNCTION_P. - (lookup_fnfields_slot_nolazy): Likewise. - * semantics.c (finish_member_declaration): Likewise. - * typeck.c (convert_for_initialization): Use TYPE_REFFN_P. - -2013-03-29 Gabriel Dos Reis - - * pt.c (template_parms_to_args): Fix typo in comment. - -2013-03-29 Paolo Carlini - - * call.c (build_op_call_1): Use TYPE_PTRFN_P and TYPE_REFFN_P. - -2013-03-29 Paolo Carlini - - * call.c (add_builtin_candidate): Use TYPE_PTR_P and VOID_TYPE_P. - (build_op_call_1): Likewise. - (build_over_call): Likewise. - (compare_ics): Likewise. - * class.c (build_base_path): Likewise. - (resolve_address_of_overloaded_function): Likewise. - * cp-tree.h: Likewise. - * cvt.c (cp_convert_to_pointer): Likewise. - (convert_to_reference): Likewise. - (ocp_convert): Likewise. - (convert_force): Likewise, tidy. - * cxx-pretty-print.c (pp_cxx_postfix_expression): Likewise. - (pp_cxx_ptr_operator): Likewise. - * decl.c (duplicate_decls): Likewise. - (start_decl): Likewise. - (grok_op_properties): Likewise. - (start_preparsed_function): Likewise. - (store_parm_decls): Likewise. - (finish_function): Likewise. - * decl2.c (delete_sanity): Likewise. - (acceptable_java_type): Likewise. - (grokbitfield): Likewise. - (cp_reconstruct_complex_type): Likewise. - * error.c (dump_type_prefix): Likewise. - (dump_expr): Likewise. - * except.c (push_eh_cleanup): Likewise. - (complete_ptr_ref_or_void_ptr_p): Likewise. - (can_convert_eh): Likewise. - * init.c (build_new_1): Likewise. - (build_delete): Likewise. - (build_vec_delete): Likewise. - * mangle.c (write_type): Likewise. - * parser.c (lookup_literal_operator): Likewise. - * pt.c (convert_nontype_argument_function): Likewise. - (convert_nontype_argument): Likewise. - (tsubst): Likewise. - (unify): Likewise. - (dependent_type_p_r): Likewise. - * rtti.c (build_headof): Likewise. - (build_typeid): Likewise. - (build_dynamic_cast_1): Likewise. - (target_incomplete_p): Likewise. - (typeinfo_in_lib_p): Likewise. - * semantics.c (finish_omp_for): Likewise. - (cxx_eval_call_expression): Likewise. - (maybe_resolve_dummy): Likewise. - * tree.c (build_target_expr): Likewise. - (cp_build_qualified_type_real): Likewise. - * typeck.c (composite_pointer_type_r): Likewise. - (composite_pointer_type): Likewise. - (comp_except_types): Likewise. - (cxx_sizeof_nowarn): Likewise. - (string_conv_p): Likewise. - (cp_build_array_ref): Likewise. - (cp_build_function_call_vec): Likewise, also use TYPE_PTRFN_P. - (pointer_diff): Likewise. - (cp_build_addr_expr_1): Likewise. - (cp_build_unary_op): Likewise. - (build_static_cast_1): Likewise. - (cp_build_c_cast): Likewise. - (comp_ptr_ttypes_real): Likewise. - (ptr_reasonably_similar): Likewise. - (comp_ptr_ttypes_const): Likewise. - (casts_away_constness): Likewise. - (check_literal_operator_args): Likewise. - * typeck2.c (build_x_arrow): Likewise. - (add_exception_specifier): Likewise. - -2013-03-29 Jason Merrill - - N3582 - * cp-tree.h (AUTO_IS_DECLTYPE): New. - * parser.c (cp_parser_decltype): Handle decltype(auto). - (cp_parser_type_id_1): Allow auto without a late-specified - return in C++1y. - (cp_parser_primary_expression): Use the return value of - finish_parenthesized_expr. - (cp_parser_transaction_expression): Likewise. - * semantics.c (force_paren_expr): New. - (finish_parenthesized_expr): Use it. - * call.c (build_conditional_expr_1): Likewise. - * pt.c (do_auto_deduction): Handle decltype(auto). - (tsubst_copy): Handle PAREN_EXPR. - (tsubst_copy_and_build): Likewise. - * error.c (dump_expr): Handle PAREN_EXPR. - * cxx-pretty-print.c (pp_cxx_expression): Likewise. - * mangle.c (write_expression): Ignore PAREN_EXPR. - - * parser.c (cp_parser_decltype_expr): Split out... - (cp_parser_decltype): ...from here. - - PR c++/56774 - PR c++/35722 - * pt.c (unify_pack_expansion): Fix indexing. - -2013-03-29 Gabriel Dos Reis - - * call.c (build_java_interface_fn_ref): Likewise. - (make_temporary_var_for_ref_to_temp): Likewise. - * class.c (check_field_decls): Likewise. - (layout_class_type): Likewise. - (finish_struct_1): Likewise. - (fixed_type_or_null): Likewise. - (get_vtbl_decl_for_binfo): Likewise. - * cp-gimplify.c (omp_var_to_track): Likewise. - (cp_genericize_r): Likewise. - * cp-objcp-common.c (cxx_warn_unused_global_decl): Likewise. - * cp-tree.h (LANG_DECL_HAS_MIN): Likewise. - (DECL_DISCRIMINATOR_P): Likewise. - * decl.c (poplevel): Likewise. - (decls_match): Likewise. - (duplicate_decls): Likewise. - (decl_jump_unsafe): Likewise. - (start_decl): Likewise. - (check_for_uninitialized_const_var): Likewise. - (make_rtl_for_nonlocal_decl): Likewise. - (cp_finish_decl): Likewise. - (expand_static_init): Likewise. - (local_variable_p): Likewise. - (maybe_register_incomplete_var): Likewise. - * decl2.c (grokfield): Likewise. - (comdat_linkage): Likewise. - (determine_visibility): Likewise. - (import_export_decl): Likewise. - (prune_vars_needing_no_initialization): Likewise. - (decl_maybe_constant_var_p): Likewise. - * error.c (dump_simple_decl): Likewise. - (dump_template_decl): Likewise. - (cp_printer): Likewise. - * except.c (build_throw): Likewise. - * init.c (build_vtbl_address): Likewise. - (member_init_ok_or_else): Likewise. - (build_aggr_init): Likewise. - (expand_aggr_init_1): Likewise. - (build_offset_ref): Likewise. - (constant_value_1): Likewise. - * mangle.c (write_mangled_name): Likewise. - (write_prefix): Likewise. - * name-lookup.c (supplement_binding_1): Likewise. - (add_decl_to_level): Likewise. - (pushdecl_maybe_friend_1): Likewise. - (check_for_out_of_scope_variable): Likewise. - (validate_nonmember_using_decl): Likewise. - (lookup_name_innermost_nonclass_level_1): Likewise. - (lookup_arg_dependent_1): Likewise. - * parser.c (cp_parser_lambda_introducer): Likewise. - (cp_parser_template_argument): Likewise. - (cp_parser_single_declaration): Likewise. - * pt.c (convert_nontype_argument): Likewise. - (instantiate_class_template_1): Likewise. - (tsubst_decl): Likewise. - (tsubst_expr): Likewise. - (do_decl_instantiation): Likewise. - (do_type_instantiation): Likewise. - (regenerate_decl_from_template): Likewise. - (always_instantiate_p): Likewise. - (instantiate_decl): Likewise. - (type_dependent_expression_p): Likewise. - (build_non_dependent_expr): Likewise. - * repo.c (repo_emit_p): Likewise. - * rtti.c (build_dynamic_cast_1): Likewise. - * search.c (shared_member_p): Likewise. - * semantics.c (outer_var_p): Likewise. - (finish_id_expression): Likewise. - (finish_omp_clauses): Likewise. - (finish_decltype_type): Likewise. - (ensure_literal_type_for_constexpr_object): Likewise. - * tree.c (lvalue_kind): Likewise. - (bot_replace): Likewise. - (cp_tree_equal): Likewise. - (handle_init_priority_attribute): Likewise. - (decl_storage_duration): Likewise. - * typeck.c (cxx_sizeof_expr): Likewise. - (cxx_alignof_expr): Likewise. - (decay_conversion): Likewise. - (build_class_member_access_expr): Likewise. - (cp_build_array_ref): Likewise. - (cxx_mark_addressable): Likewise. - (maybe_warn_about_returning_address_of_local): Likewise. - (check_return_expr): Likewise. - * typeck2.c (cxx_readonly_error): Likewise. - (abstract_virtuals_error_sfinae): Likewise. - (cxx_incomplete_type_diagnostic): Likewise. - -2013-03-28 Lawrence Crowl - - * Make-lang.in - (CXX_PARSER_H): Add header dependence. - * cp-tree.h - (extern debug (cp_binding_level &)): New. - (extern debug (cp_binding_level *)): New. - * name-lookup.h - (debug (cp_binding_level &)): New. - (debug (cp_binding_level *)): New. - * parser.c - (debug (cp_parser &)): New. - (debug (cp_parser *)): New. - (debug (cp_token &)): New. - (debug (cp_token *)): New. - (debug (vec &)): New. - (debug (vec *)): New. - * parser.c: Add header dependence. - (extern debug (cp_parser &)): New. - (extern debug (cp_parser *)): New. - (extern debug (cp_token &)): New. - (extern debug (cp_token *)): New. - (extern debug (vec &)): New. - (extern debug (vec *)): New. - -2013-03-28 Jason Merrill - - PR c++/17232 - PR c++/52748 - * typeck2.c (abstract_virtuals_error_sfinae): Don't complete - the type if tf_decltype is set. - * pt.c (fn_type_unification): Add decltype_p parm. - (get_bindings): Adjust. - * cp-tree.h: Adjust. - * class.c (resolve_address_of_overloaded_function): Adjust. - * call.c (add_template_candidate_real, print_z_candidate): Adjust. - - PR c++/56679 - * parser.c (cp_parser_sizeof_pack): Split out from... - (cp_parser_sizeof_operand): ...here. Require (id). - - PR c++/56701 - * semantics.c (finish_this_expr): 'this' is an rvalue. - * typeck.c (cp_build_indirect_ref): Handle NOP_EXPR of 'this'. - - PR c++/56710 - * semantics.c (finish_member_declaration): Don't push closure - members. - - * name-lookup.c (pushdecl_maybe_friend_1): Use - nonlambda_method_basetype and current_nonlambda_class_type. - - PR c++/56728 - * semantics.c (potential_constant_expression_1) [NOP_EXPR]: Reject - conversion from integer to pointer. - (cxx_eval_constant_expression): Likewise. - (cxx_eval_indirect_ref): Use the folded operand if we still think - this might be constant. - -2013-03-28 Paolo Carlini - Manuel Lopez-Ibanez - - PR c++/56725 - * call.c (convert_like_real): Change series of two permerrors - to permerror + inform (and likewise for two errors). - (build_new_method_call_1): Likewise. - * typeck.c (convert_for_initialization): Change additional - warning or error to inform. - -2013-03-28 Gabriel Dos Reis - - * cp-tree.h (next_aggr_init_expr_arg): Remove static specifier. - (first_aggr_init_expr): Likewise. - (more_aggr_init_expr_args_p): Likewise. - (type_of_this_parm): Likewise. - (class_of_this_parm): Likewise. - * name-lookup.h (get_global_value_if_present): Likewise. - (is_typename_at_global_scope): Likewise. - -2013-03-28 Paolo Carlini - - * call.c (joust): Don't call inform for a permerror returning false. - * parser.c (cp_parser_check_class_key): Likewise. - * pt.c (tsubst_copy_and_build): Likewise. - -2013-03-27 Jason Merrill - - PR c++/56749 - * semantics.c (finish_qualified_id_expr): Return early - for enum scope. - -2013-03-26 Gabriel Dos Reis - - * call.c (build_new_method_call_1): Use INDIRECT_REF_P. - * cvt.c (convert_to_void): Likewise. - * error.c (dump_expr): Likewise. - * mangle.c (write_expression): Likewise. - * parser.c (cp_parser_template_argument): Likewise. - * pt.c (convert_nontype_argument): Likewise. - (tsubst_copy_and_build): Likewise. - * rtti.c (build_typeid): Likewise. - * semantics.c (finish_call_expr): Likewise. - (finish_decltype_type): Likewise. - (build_data_member_initialization): Likewise. - * tree.c (is_dummy_object): Likewise. - * typeck.c (decay_conversion): Likewise. - (build_class_member_access_expr): Likewise. - (cp_build_addr_expr_1): Likewise. - (unary_complex_lvalue): Likewise. - (check_return_expr): Likewise. - * typeck2.c (cxx_readonly_error): Likewise. - -2013-03-26 Jason Merrill - - PR c++/52597 - * typeck.c (invalid_nonstatic_memfn_p): Use get_first_fn. Take tree. - * semantics.c (finish_decltype_type): Check it before type_unknown_p. - * cp-tree.h: Adjust prototype. - - PR c++/45282 - * typeck2.c (build_m_component_ref): Handle prvalue object. - -2013-03-26 Gabriel Dos Reis - - * cp-gimplify.c (cp_genericize_r): Use VAR_OR_FUNCTION_DECL_P. - * decl.c (duplicate_decls): Likewise. - (cp_finish_decl): Likewise. - (check_class_member_definition_namespace): Likewise. - * decl2.c (grokfield): Likewise. - (decl_needed_p): Likewise. - (import_export_decl): Likewise. - (mark_used): Likewise. - * name-lookup.c (pushdecl_maybe_friend_1): Likewise. - * pt.c (push_access_scope): Likewise. - (instantiate_decl): Likewise. - * ptree.c (cxx_print_decl): Likewise. - * repo.c (repo_emit_p): Likewise. - * semantics.c (note_decl_for_pch): Likewise. - * tree.c (decl_linkage): Likewise. - -2013-03-26 Paolo Carlini - - PR c++/55951 - * decl.c (check_array_designated_initializer): Handle CONST_DECL - as ce->index. - -2013-03-26 Paolo Carlini - - * decl.c (grokfndecl): Handle separately and - error messages. - - * decl.c (grokdeclarator): Declare typedef_p and use it everywhere. - -2013-03-25 Jason Merrill - - PR c++/56699 - * semantics.c (maybe_resolve_dummy): Make sure that the enclosing - class is derived from the type of the object. - - PR c++/52014 - * semantics.c (lambda_expr_this_capture): Don't capture 'this' in - unevaluated context. - -2013-03-25 Paolo Carlini - - PR c++/56722 - * decl.c (cp_finish_decl): Check DECL_LANG_SPECIFIC before - DECL_TEMPLATE_INSTANTIATION. - -2013-03-22 Jason Merrill - - PR c++/56684 - * pt.c (instantiation_dependent_r): Check DECL_INITIAL of VAR_DECL - and CONST_DECL. - -2013-03-21 Gabriel Dos Reis - - * cp-tree.h (identifier_p): New. - * call.c: Throughout, call identifier_p insstead of direct - comparaison of TREE_CODE against IDENTIFIER_NODE. - * decl.c: Likewisse. - * decl2.c: Likewise. - * init.c: Likewise. - * mangle.c: Likewise. - * name-lookup.c: Likewise. - * parser.c: Likewise. - * pt.c: Likewise. - * search.c: Likewise. - * semantics.c: Likewise. - * tree.c: Likewise. - * typeck.c: Likewise. - * typeck2.c: Likewise. - -2013-03-21 Jakub Jelinek - - PR middle-end/48087 - * pt.c (convert_nontype_argument): Count werrorcount as warnings. - * call.c (build_temp): Likewise. - * method.c (synthesize_method): Likewise. - * typeck.c (convert_for_initialization): Likewise. - -2013-03-21 Marc Glisse - - * call.c (build_conditional_expr_1): Fold VEC_COND_EXPR. - -2013-03-21 Richard Biener - - * error.c (cp_printer): Use DECL_HAS_DEBUG_EXPR_P instead of - DECL_DEBUG_EXPR_IS_FROM. Guard properly. - -2013-03-20 Jason Merrill - - PR c++/56646 - * parser.c (cp_parser_late_return_type_opt): Save and restore - current_class_ptr/ref. - - PR c++/54532 - * expr.c (cplus_expand_constant): Do nothing if the class is - incomplete. - * semantics.c (reduced_constant_expression_p): Allow PTRMEM_CST. - * typeck2.c (store_init_value): Use reduced_constant_expression_p. - * decl.c (maybe_register_incomplete_var): Handle PTRMEM_CST. - (complete_vars): Likewise. - - * name-lookup.c (get_anonymous_namespace_name): Never use - get_file_function_name. - - * pt.c (retrieve_specialization): Handle null tmpl argument. - - PR c++/17232 - PR c++/56642 - * pt.c (tsubst_decl): Check return value of register_specialization. - * typeck2.c (abstract_virtuals_error_sfinae): Re-apply complete_type - change. - -2013-03-17 Jason Merrill - - PR c++/54359 - PR c++/56639 - * parser.c (cp_parser_direct_declarator): Bail if we see a - qualified-id not at namespace scope. - - PR c++/17232 - PR c++/56642 - * typeck2.c (abstract_virtuals_error_sfinae): Revert complete_type - change for now. - -2013-03-16 Jason Merrill - - * decl.c (grokdeclarator): Assert that we won't see a pointer to - METHOD_TYPE. - - PR c++/54277 - * cp-tree.h (WILDCARD_TYPE_P): Split out from... - (MAYBE_CLASS_TYPE_P): ...here. - * semantics.c (lambda_capture_field_type): Only build a - magic decltype for wildcard types. - (lambda_proxy_type): Likewise. - (finish_non_static_data_member): Get the quals from - the object. - - PR c++/55931 - * parser.c (cp_parser_template_argument): Don't - fold_non_dependent_expr. - - * parser.c (cp_parser_lambda_declarator_opt): Use - cp_parser_trailing_type_id. - - PR c++/45917 - * parser.c (cp_parser_template_id): Don't forget access checks. - - PR c++/52374 - * pt.c (tsubst_qualified_id): Use current_nonlambda_class_type. - - PR c++/54764 - PR c++/55972 - * name-lookup.h (tag_scope): Add ts_lambda. - * semantics.c (begin_lambda_type): Use it. - * decl.c (xref_tag_1): Set CLASSTYPE_LAMBDA_EXPR. - * pt.c (check_default_tmpl_args): Ignore lambdas. - (push_template_decl_real): Handle lambdas. - * tree.c (no_linkage_check): Adjust lambda check. - - PR c++/56039 - * tree.c (strip_typedefs_expr): Complain about lambda, don't abort. - - PR c++/54359 - * parser.c (cp_parser_direct_declarator): Fix late return - for out-of-class defn of member function. - - PR c++/55357 - * semantics.c (maybe_add_lambda_conv_op): Clear DECL_NAME of copied - parms to avoid duplicate -Wshadow warnings. - - * search.c (lookup_base): Handle NULL_TREE. - - PR c++/56481 - * semantics.c (potential_constant_expression_1): Use of 'this' in - a non-constexpr function makes the expression not potentially - constant. - - N3276 - PR c++/52748 - * cp-tree.h (tsubst_flags): Add tf_decltype. - * call.c (build_cxx_call): Don't build a temporary if it's set. - (build_over_call): Make sure it's only passed to build_cxx_call. - * parser.c (cp_parser_primary_expression): Add decltype_p parm. - (cp_parser_unary_expression): Likewise. - (cp_parser_cast_expression): Likewise. - (cp_parser_binary_expression): Likewise. - (cp_parser_assignment_expression): Likewise. - (cp_parser_postfix_expression): Likewise. Pass tf_decltype. - (cp_parser_expression): Add decltype_p. Force a - temporary for a call on the LHS of a comma. - (cp_parser_decltype): Pass true to decltype_p parms. - * pt.c (tsubst) [DECLTYPE_TYPE]: Pass tf_decltype. - (tsubst_copy_and_build): Pass tf_decltype down only for - CALL_EXPR and the RHS of COMPOUND_EXPR. - * tree.c (build_cplus_new): Call complete_type_or_maybe_complain. - - * cp-tree.h (abstract_class_use): New enum. - * typeck2.c (pending_abstract_type): Add use field. - (abstract_virtuals_error_sfinae): Add overloads taking - abstract_class_use instead of tree. - * typeck.c (build_static_cast_1): Call it. - * except.c (is_admissible_throw_operand_or_catch_parameter): Call it. - * pt.c: Adjust calls. - * decl.c (cp_finish_decl): Don't handle functions specially. - (grokdeclarator): Always check return type. - * init.c (build_new_1): Adjust call. - - DR 337 - PR c++/17232 - * pt.c (tsubst) [ARRAY_TYPE]: Use abstract_virtuals_error_sfinae. - * typeck2.c (abstract_virtuals_error_sfinae): Call complete_type. - - DR 657 - * pt.c (tsubst_function_type): Call abstract_virtuals_error_sfinae. - (tsubst_arg_types): Likewise. - - DR 1518 - PR c++/54835 - * call.c (convert_like_real): Check for explicit constructors - even for value-initialization. - - PR c++/54946 - * pt.c (convert_nontype_argument): Handle invalid pointer. - - * parser.c (cp_parser_lambda_expression): Use nreverse. - - PR c++/56447 - PR c++/55532 - * pt.c (instantiate_class_template_1): Instantiate lambda capture - list here. - (tsubst_copy_and_build): Not here. - - PR c++/55017 - * method.c (walk_field_subobs): Disallow copy of rvalue ref. - - PR c++/55240 - * parser.c (parsing_nsdmi): New. - * semantics.c (outer_automatic_var_p): Check it. - (finish_id_expression): Likewise. - * cp-tree.h: Declare it. - - PR c++/55241 - * error.c (dump_expr) [SIZEOF_EXPR]: Print sizeof... properly. - - * parser.c (lookup_literal_operator): Correct parm/arg naming - mixup. - - PR c++/56238 - * pt.c (fold_non_dependent_expr_sfinae): Check - instantiation_dependent_expression_p. - - PR c++/56095 - * class.c (resolve_address_of_overloaded_function): Accept a - reference to function for target_type. - (instantiate_type): Likewise. - * pt.c (convert_nontype_argument): Pass it to - convert_nontype_argument_function. - -2013-03-16 Jakub Jelinek - - * tree.c (cp_tree_equal): Fix a pasto. - - PR c++/56607 - * typeck.c (cp_build_binary_op): When calling warn_for_div_by_zero, - pass op1 through maybe_constant_value first. - -2013-03-16 Paolo Carlini - - PR c++/56582 - * semantics.c (cxx_eval_array_reference): Check for negative index. - -2013-03-14 Jason Merrill - - PR c++/56614 - * decl.c (local_variable_p_walkfn): Check DECL_ARTIFICIAL again. - - PR c++/56346 - * decl.c (register_dtor_fn): Pass null to __cxa_thread_atexit - dso_handle parm on targets without __cxa_atexit. - -2013-03-11 Jason Merrill - - PR c++/56567 - * typeck.c (check_return_expr): Disallow returning init list here. - * semantics.c (apply_deduced_return_type): Not here. - -2013-03-08 Paolo Carlini - - PR c++/51412 - * cxx-pretty-print.c (pp_cxx_expression): Handle LAMBDA_EXPR. - * error.c (dump_expr): Likewise. - -2013-03-08 Jason Merrill - - PR c++/51884 - * class.c (modify_all_vtables): Mangle the vtable name before - entering dfs_walk. - - * semantics.c (lambda_expr_this_capture): In unevaluated context, - just return the nearest 'this'. - - PR c++/51494 - PR c++/52183 - PR c++/56222 - * tree.c (maybe_dummy_object): Don't capture 'this'. - * semantics.c (maybe_resolve_dummy): New. - (finish_non_static_data_member): Use it. - (finish_qualified_id_expr): Don't test is_dummy_object. - * cp-tree.h: Declare maybe_resolve_dummy. - * call.c (build_new_method_call_1): Use it. - - PR c++/56567 - * semantics.c (apply_deduced_return_type): Don't allow returning - std::initializer_list. - -2013-03-06 Paolo Carlini - - PR c++/56534 - * parser.c (cp_parser_elaborated_type_specifier): Don't call - check_elaborated_type_specifier when TREE_CODE (decl) != TYPE_DECL. - * decl.c (check_elaborated_type_specifier): Tidy. - -2013-03-06 Jakub Jelinek - - PR c++/56543 - * tree.c (strip_typedefs): Don't copy args if they are NULL. - -2013-03-05 Jakub Jelinek - - * parser.c (cp_parser_braced_list): For {} initialize - *non_constant_p to false. - -2013-03-04 Jason Merrill - - PR c++/56464 - PR c++/54383 - * semantics.c (lambda_expr_this_capture): Handle NSDMI - and non-class scopes. - -2013-03-01 Paolo Carlini - - * decl.c (grokdeclarator): Remove dead code. - -2013-02-28 Jason Merrill - - PR c++/56481 - * semantics.c (potential_constant_expression_1): Use - cxx_eval_outermost_constant_expr rather than maybe_constant_value. - - PR c++/56243 - * call.c (build_over_call): Avoid virtual lookup in a template. - -2013-02-27 Jason Merrill - - PR c++/56358 - PR c++/56323 - * name-lookup.c (do_class_using_decl): Use ctor_identifier instead - of the base name for inheriting ctors. - (push_class_level_binding_1): Remove inheriting ctor handling. - * pt.c (tsubst_decl) [USING_DECL]: Likewise. - * class.c (add_implicitly_declared_members): Adjust. - -2013-02-26 David Binderman - - PR c++/55632 - * decl.c (grokdeclarator): Tidy publicp assignment. - -2013-02-25 Aldy Hernandez - - PR c++/56419 - * semantics.c (begin_transaction_stmt): Set TREE_SIDE_EFFECTS. - (build_transaction_expr): Same. - -2013-02-25 Jason Merrill - - PR c++/56377 - * pt.c (fn_type_unification): Wait to call push_tinst_level until - we know what args we're looking at. - - PR c++/56438 - * semantics.c (potential_constant_expression_1): In C++98, a cast - to non-integral type can't be a constant expression. - -2013-02-24 Jakub Jelinek - - PR c++/56403 - * init.c (build_zero_init_1): Use RECORD_OR_UNION_CODE_P instead - of CLASS_TYPE_P. - -2013-02-22 Jason Merrill - - PR c++/40405 - * pt.c (push_template_decl_real): Set DECL_INTERFACE_KNOWN - if we got the wrong number of template parms. - - PR c++/56377 - * pt.c (fn_type_unification): Use explicit args in template - instantiation context. - - PR c++/56359 - * call.c (can_convert_arg): Discard access checks. - - PR c++/56395 - * tree.c (strip_typedefs): Strip typedefs from TYPENAME_TYPE template - args. - -2013-02-20 Paolo Carlini - - PR c++/56373 - * tree.c (maybe_warn_zero_as_null_pointer_constant): Add. - * cvt.c (ocp_convert): Use the latter. - (cp_convert_to_pointer): Likewise. - * decl.c (check_default_argument): Likewise. - * typeck.c (cp_build_binary_op): Likewise. - * cp-tree.h (maybe_warn_zero_as_null_pointer_constant): Declare. - -2013-02-15 Jonathan Wakely - Paolo Carlini - - PR c++/51242 - * decl2.c (grokbitfield): Allow scoped enumeration types. - -2013-02-15 Jason Merrill - - PR c++/54276 - * semantics.c (finish_id_expression): Also return the identifier - for an outer local static. - - PR c++/56343 - * class.c (check_bases_and_members): Deduce noexcept after - checking bases. - - PR c++/52026 - * semantics.c (finish_id_expression): In a template, return - the identifier for a constant variable. - -2013-02-14 Jason Merrill - - PR c++/54922 - * semantics.c (build_anon_member_initialization): New. - (build_data_member_initialization): Use it. - - PR c++/55003 - * decl.c (cp_finish_decl): Force instantiation of an - auto static data member. - - PR c++/55220 - * pt.c (unify): A pack expansion that is not the last template - argument makes the entire template argument list non-deduced. - - PR c++/56323 - * name-lookup.c (do_class_using_decl): Handle typedefs with - inheriting constructors. - (push_class_level_binding_1): Allow inheriting from template - template parameter, too. - * pt.c (tsubst_decl) [USING_DECL]: Likewise. - - PR c++/55223 - * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Fix handling of - default argument scope. - * mangle.c (write_name): Likewise. - - PR c++/55232 - * error.c (find_typenames_r): Don't walk into a pack expansion. - -2013-02-13 Jason Merrill - - PR c++/55670 - * parser.c (cp_parser_member_declaration): Check the declarator - form when detecting a function declaration via typedef. - - PR c++/55680 - * pt.c (maybe_process_partial_specialization): A lambda - isn't what's being specialized. - - PR c++/55710 - * semantics.c (maybe_add_lambda_conv_op): Mark static thunk - TREE_USED. - - PR c++/55879 - * semantics.c (cxx_bind_parameters_in_call): Undo DECL_BY_REFERENCE. - - PR c++/55993 - * semantics.c (cxx_fold_indirect_ref): Handle empty bases at - non-zero offsets, too. - - PR c++/56155 - * decl.c (build_enumerator): Always convert the value to a - fixed underlying type. - - PR c++/56135 - * pt.c (tsubst_copy_and_build): Don't forget any new - captures that arose from use of dependent names. - -2013-02-13 Jakub Jelinek - - PR c++/56302 - * semantics.c (finish_asm_stmt): If input constraints allow - neither register nor memory, try maybe_constant_value to get - a constant if possible. - -2013-02-12 Jason Merrill - - PR c++/56285 - * method.c (add_one_base_init): Handle base constructor - taking rvalue reference parm. - - PR c++/56291 - * semantics.c (sort_constexpr_mem_initializers): Handle - vptr out of order. - -2013-02-09 Jason Merrill - - PR c++/56268 - * semantics.c (classtype_has_nothrow_assign_or_copy_p): Call - maybe_instantiate_noexcept. - - PR c++/56247 - * pt.c (eq_specializations): Set comparing_specializations. - * tree.c (cp_tree_equal): Check it. - * cp-tree.h: Declare it. - - * decl.c (decls_match): Check versions later. - - PR c++/56238 - * pt.c (build_non_dependent_expr): Don't try to fold - instantiation-dependent expressions. - (instantiation_dependent_r) [TRAIT_EXPR]: Split out. - [BIND_EXPR]: Treat as dependent. - -2013-02-07 Jakub Jelinek - - PR c++/56241 - * init.c (build_vec_init): Don't append NULL values into new_vec. - (build_zero_init_1): Don't push anything into v if recursive call - returned NULL_TREE. - (build_value_init_noctor): Don't push anything into v if - build_value_init call returned NULL_TREE. - - PR c++/56239 - * parser.c (cp_parser_token_starts_cast_expression): Renamed to... - (cp_parser_tokens_start_cast_expression): ... this. Change parameter - to cp_parser *, call cp_lexer_peek_token first. For CPP_OPEN_PAREN, - return true only if 2nd token isn't CPP_CLOSE_PAREN. - (cp_parser_cast_expression): Adjust caller. - - PR c++/56237 - * decl.c (push_local_name): Look at DECL_DISCRIMINATOR (t) - only if DECL_DISCRIMINATOR_SET_P (t) rather than just - DECL_LANG_SPECIFIC (t). - -2013-02-07 Jason Merrill - - PR c++/56235 - * method.c (do_build_copy_constructor): Don't bother turning - scalars from lvalues to xvalues. - (do_build_copy_assign): Likewise. - -2013-02-06 Jason Merrill - - * parser.c (cp_parser_enum_specifier): Check for error_mark_node. - -2013-02-05 Jason Merrill - - PR c++/54122 - * tree.c (lvalue_kind) [INDIRECT_REF]: Don't check for - METHOD_TYPE. - - PR c++/56177 - * decl.c (start_preparsed_function): Update restype if we change - decl1. - - PR c++/56208 - * pt.c (fn_type_unification): Discard any access checks from - substituting explicit args. - -2013-01-31 Jason Merrill - - PR c++/56162 - PR c++/56104 - * typeck.c (get_member_function_from_ptrfunc): Fix - ptrmemfunc_vbit_in_delta case. - -2013-01-29 Jason Merrill - - PR libstdc++/54314 - * class.c (build_ctor_vtbl_group): Give construction vtables - hidden visibility. - -2013-01-25 Jason Merrill - - PR c++/56095 - * pt.c (convert_nontype_argument_function): Handle invalid input. - (convert_nontype_argument): Likewise. - - PR c++/56104 - * typeck.c (get_member_function_from_ptrfunc): Optimize if the - dynamic type has no virtual functions. - -2013-01-22 Paolo Carlini - - PR c++/55944 - * decl.c (check_initializer): Use TARGET_EXPR_DIRECT_INIT_P only - on TARGET_EXPR nodes. - -2013-01-22 Jason Merrill - - PR c++/56071 - * pt.c (maybe_instantiate_noexcept): Don't defer access checks. - -2013-01-22 Dodji Seketeli - - PR c++/53609 - * pt.c (argument_pack_element_is_expansion_p) - (make_argument_pack_select, use_pack_expansion_extra_args_p) - (gen_elem_of_pack_expansion_instantiation): New static functions. - (tsubst): When looking through an ARGUMENT_PACK_SELECT tree node, - look through the possibly resulting pack expansion as well. - (tsubst_pack_expansion): Use use_pack_expansion_extra_p to - generalize when to use the PACK_EXPANSION_EXTRA_ARGS mechanism. - Use gen_elem_of_pack_expansion_instantiation to build the - instantiation piece-wise. Don't use arg_from_parm_pack_p anymore, - as gen_elem_of_pack_expansion_instantiation and the change in - tsubst above generalize this particular case. - (arg_from_parm_pack_p): Remove this for it's not used by - tsubst_pack_expansion anymore. - -2013-01-21 Jason Merrill - - PR c++/56059 - * tree.c (strip_typedefs_expr) [TREE_VEC]: Preserve non-default - template args count. - -2013-01-18 Jason Merrill - - PR target/54908 - * decl2.c (get_local_tls_init_fn): New. - (get_tls_init_fn): Handle flag_extern_tls_init. Don't bother - with aliases for internal variables. Don't use weakrefs if - the variable needs destruction. - (generate_tls_wrapper): Mark the wrapper as const if no - initialization is needed. - (handle_tls_init): Don't require aliases. - -2013-01-15 Dodji Seketeli - - PR c++/55663 - * pt.c (coerce_innermost_template_parms): New static function. - (instantiate_alias_template): Use it here. - -2013-01-09 Jason Merrill - - PR c++/55878 - * rtti.c (build_typeid, get_typeid): Add complain parm. - (get_tinfo_decl_dynamic): Likewise. - * cp-tree.h, parser.c, pt.c: Adjust. - - PR c++/55893 - * decl.c (cp_finish_decl): Clear TREE_READONLY if the variable - needs destruction. - -2013-01-09 Jakub Jelinek - - PR c/48418 - * typeck.c (cp_build_binary_op): For LSHIFT_EXPR and RSHIFT_EXPR, - call maybe_constant_value for the negative or too big shift - count warnings. - -2013-01-09 Paolo Carlini - - PR c++/55801 - * decl2.c (var_needs_tls_wrapper): Return false when error_operand_p - of the argument is true. - -2013-01-08 Joel Brobecker - - * parser.c (cp_parser_initializer_list): Move declaration - of variable non_const to start of lexical block. - -2013-01-07 Jason Merrill - - PR c++/55753 - * tree.c (build_aggr_init_expr): Do nothing in a template. - * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Strip an ADDR_EXPR off - a FUNCTION_DECL before tsubsting. - -2013-01-04 Dodji Seketeli - - PR c++/52343 - * pt.c (check_instantiated_arg): Allow type template arguments. - -2013-01-04 Jason Merrill - - PR c++/55877 - * decl.c (reset_type_linkage, bt_reset_linkage): New. - (grokdeclarator): Use reset_type_linkage. - * name-lookup.c (binding_table_foreach): Handle null table. - * tree.c (decl_anon_ns_mem_p): Check TYPE_MAIN_DECL, not TYPE_NAME. - -2013-01-04 Paolo Carlini - - PR c++/54526 (again) - * parser.c (cp_parser_template_id): Revert core of previous change - (keep adjusted inform message). - -2013-01-03 Jason Merrill - - PR c++/55419 - PR c++/55753 - * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Don't touch - TREE_CONSTANT. - - PR c++/55842 - * semantics.c (trait_expr_value): Call maybe_instantiate_noexcept. - - PR c++/55856 - * semantics.c (build_data_member_initialization): Handle DECL_EXPR. - - PR c++/53650 - * call.c (type_has_extended_temps): New. - * cp-tree.h: Declare it. - * decl.c (check_initializer): Use build_aggr_init for arrays - if it is false. - * init.c (build_vec_init): Avoid mixed signed/unsigned arithmetic. - -2013-01-02 Jason Merrill - - PR c++/54325 - * call.c (build_new_method_call_1): Don't use build_value_init for - user-provided default constructors. - - * decl.c (check_default_argument): Use LOOKUP_IMPLICIT. - - PR c++/55032 - PR c++/55245 - * tree.c (build_cplus_array_type): Copy layout information - to main variant if necessary. -Copyright (C) 2013-2014 Free Software Foundation, Inc. +Copyright (C) 2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/cp/ChangeLog-2013 b/gcc/cp/ChangeLog-2013 new file mode 100644 index 00000000000..146e67c589a --- /dev/null +++ b/gcc/cp/ChangeLog-2013 @@ -0,0 +1,4295 @@ +2013-12-23 Jason Merrill + + PR c++/59271 + * lambda.c (build_capture_proxy): Use build_cplus_array_type. + + PR c++/59349 + * parser.c (cp_parser_lambda_introducer): Handle empty init. + +2013-12-23 Stuart Hastings + Bill Maddox + Jason Merrill + + PR c++/41090 + * optimize.c (can_alias_cdtor, populate_clone_array): Split out + from maybe_clone_body. + (maybe_thunk_body): New function. + (maybe_clone_body): Call it. + * mangle.c (write_mangled_name): Remove code to suppress + writing of mangled name for cloned constructor or destructor. + (write_special_name_constructor): Handle decloned constructor. + (write_special_name_destructor): Handle decloned destructor. + * method.c (trivial_fn_p): Handle decloning. + * semantics.c (expand_or_defer_fn_1): Clone after setting linkage. + +2013-12-23 Marek Polacek + + PR c++/59111 + * search.c (lookup_conversions): Return NULL_TREE if !CLASS_TYPE_P. + +2013-12-20 Trevor saunders + + * semantics.c (build_anon_member_initialization): Replace + stack_vec with auto_vec. + +2013-12-18 Balaji V. Iyer + + * parser.c (cp_parser_cilk_simd_clause_name): Changed cilk_clause_name + to omp_clause_name. + +2013-12-17 Thomas Schwinge + + * parser.c (cp_parser_omp_parallel): Fix description. + +2013-12-12 Jason Merrill + + PR c++/58954 + * pt.c (resolve_overloaded_unification): Use instantiate_template. + +2013-12-12 Jakub Jelinek + + PR c++/58627 + * class.c (resolve_address_of_overloaded_function): Don't call ggc_free + on targs. + +2013-12-11 Balaji V. Iyer + + * cp-tree.h (cilk_valid_spawn): New prototype. + (gimplify_cilk_spawn): Likewise. + (create_try_catch_expr): Likewise. + * decl.c (finish_function): Insert Cilk function-calls when a + _Cilk_spawn is used in a function. + * parser.c (cp_parser_postfix_expression): Added RID_CILK_SPAWN and + RID_CILK_SYNC cases. + * cp-cilkplus.c (set_cilk_except_flag): New function. + (set_cilk_except_data): Likewise. + (cilk_install_body_with_frame_cleanup): Likewise. + * except.c (create_try_catch_expr): Likewise. + * parser.h (IN_CILK_SPAWN): New #define. + * pt.c (tsubst_expr): Added CILK_SPAWN_STMT and CILK_SYNC_STMT cases. + * semantics.c (potential_constant_expression_1): Likewise. + * typeck.c (cp_build_compound_expr): Reject a spawned function in a + compound expression. + (check_return_expr): Reject a spawned function in a return expression. + * cp-gimplify.c (cp_gimplify_expr): Added a CILK_SPAWN_STMT and + CALL_EXPR case. Added handling of spawned function in MODIFY_EXPR + and INIT_EXPR. + +2013-12-09 Paolo Carlini + + PR c++/59435 + * parser.c (cp_parser_cache_defarg): sizeof ... ( p ) can + occur in a default argument too. + +2013-12-06 Caroline Tice + + Submitting patch from Stephen Checkoway, s@cs.jhu.edu + * vtable-class-hierarchy.c (init_functions): Make the libvtv + function decls externally visible. + +2013-12-06 Oleg Endo + + * decl2.c: Remove struct tags when referring to class varpool_node. + +2013-12-05 Jason Merrill + + PR c++/59044 + PR c++/59052 + * pt.c (most_specialized_class): Use the partially instantiated + template for deduction. Drop the TMPL parameter. + +2013-12-05 Paolo Carlini + + * decl.c (duplicate_decls): Replace pairs of errors and permerrors + with error + inform (permerror + inform, respectively). + +2013-12-04 Joseph Myers + + PR c/52023 + * typeck.c (cxx_sizeof_or_alignof_type): Update call to + c_sizeof_or_alignof_type. + +2013-12-04 Jakub Jelinek + + PR c++/59268 + * pt.c (tsubst_copy_and_build): Handle POINTER_PLUS_EXPR. + +2013-11-29 Marek Polacek + + PR sanitizer/59331 + * decl.c (compute_array_index_type): Don't build COMPOUND_EXPR for + instrumentation. + +2013-11-28 Jakub Jelinek + + PR c++/59297 + * semantics.c (finish_omp_atomic): Call finish_expr_stmt + rather than add_stmt. + +2013-11-28 Rainer Orth + + * g++spec.c (TIMELIB): Define. + (WITHLIBC, SKIPOPT): Adjust values. + (lang_specific_driver): Add TIME_LIBRARY if not passed explicitly. + +2013-11-28 Jakub Jelinek + + PR c/59310 + * parser.c (cp_parser_omp_target): Call keep_next_level only + if flag_openmp. + +2013-11-27 Paolo Carlini + + PR c++/58647 + * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]): + Handle function COMPONENT_REFs. + +2013-11-27 Aldy Hernandez + Jakub Jelinek + + * semantics.c (finish_omp_clauses): For #pragma omp declare simd + linear clause step call maybe_constant_value. + +2013-11-27 Tom de Vries + Marc Glisse + + PR c++/59032 + * typeck.c (cp_build_unary_op): Allow vector increment and decrement. + +2013-11-27 Tom de Vries + Marc Glisse + + PR middle-end/59037 + * semantics.c (cxx_fold_indirect_ref): Don't create out-of-bounds + BIT_FIELD_REF. + +2013-11-26 Jakub Jelinek + + PR c++/58874 + * parser.c (cp_parser_late_parsing_for_member): For OpenMP UDRs + pass 2 instead of 0 to finish_function. + +2013-11-26 Paolo Carlini + + PR c++/58700 + * decl.c (grokdeclarator): Don't try to pass declarator->id_loc + to build_lang_decl_loc when declarator is null. + +2013-11-26 Paolo Carlini + + * cvt.c (cp_convert_and_check): Avoid calling cp_convert + unnecessarily. + +2013-11-25 Paolo Carlini + + PR c++/54485 + * decl.c (duplicate_decls): Enforce 8.3.6/6 about default arguments + for member functions of class templates. + +2013-11-25 Paolo Carlini + + PR c++/58607 + * semantics.c (check_constexpr_ctor_body): Check for BIND_EXPR_VARS. + +2013-11-25 Paolo Carlini + + PR c++/58810 + * decl.c (grokdeclarator): Don't handle qualified free functions here, + leave the diagnostic to grokfndecl. + +2013-11-25 Paolo Carlini + + PR c++/59080 + * pt.c (unify): Don't call unify_array_domain with a NULL_TREE + third argument. + + PR c++/59096 + * pt.c (apply_late_template_attributes): Check that TREE_VALUE + isn't NULL_TREE in the attribute_takes_identifier_p case. + +2013-11-25 Adam Butcher + + PR c++/59112 + PR c++/59113 + * parser.c (cp_parser_parameter_declaration_clause): Disallow implicit + function templates in local functions unless defining a lambda. + +2013-11-23 Easwaran Raman + + PR c++/59031 + * call.c (build_new_method_call_1): Comnpare function context + with BASELINK_BINFO type rather than instance type before + marking the call with LOOKUP_NONVIRTUAL. + +2013-11-23 Jason Merrill + + PR c++/58868 + * init.c (build_aggr_init): Don't clobber the type of init + if we got an INIT_EXPR back from build_vec_init. + (build_vec_init): Do digest_init on trivial initialization. + +2013-11-23 Alexander Ivchenko + + PR c++/58525 + * call.c (build_operator_new_call): Add flag_exceptions check. + * decl.c (compute_array_index_type): Ditto. + * init.c (build_new_1): Ditto. + (build_vec_init): Ditto. + +2013-11-22 Jakub Jelinek + + * cp-gimplify.c: Include target.h and c-family/c-ubsan.h. + (cp_ubsan_maybe_instrument_return): New function. + (cp_genericize): Call it if -fsanitize=return. + + * decl2.c: Include asan.h. + (one_static_initialization_or_destruction): If -fsanitize=address, + init is non-NULL and guard is NULL, set + vnode->dynamically_initialized. + (do_static_initialization_or_destruction): Call + __asan_{before,after}_dynamic_init around the static initialization. + +2013-11-22 Andrew MacLeod + + * class.c: Add required include files from gimple.h. + * cp-gimplify.c: Likewise + * decl2.c: Likewise + * init.c: Likewise + * optimize.c: Likewise + * pt.c: Likewise + * semantics.c: Likewise + * tree.c: Likewise + * typeck.c: Likewise + * vtable-class-hierarchy.c: Likewise + +2013-11-22 David Malcolm + + * call.c (build_integral_nontype_arg_conv): Remove use of + EXPR_LOC_OR_HERE macro. + (convert_like_real): Likewise. + (convert_arg_to_ellipsis): Likewise. + (build_cxx_call): Likewise. + (perform_implicit_conversion_flags): Likewise. + (initialize_reference): Likewise. + * cvt.c (cp_convert_to_pointer): Likewise. + (convert_to_reference): Likewise. + (ocp_convert): Likewise. + (convert_to_void): Likewise. + * decl.c (pop_label): Update comment. + (pop_switch): Remove use of EXPR_LOC_OR_HERE macro. + (check_tag_decl): Remove use of in_system_header macro. + (make_rtl_for_nonlocal_decl): Remove use of input_filename + macro. + (compute_array_index_type): Remove use of in_system_header + macro. + (grokdeclarator): Likewise. + * error.c (dump_global_iord): Remove use of input_filename + macro. + (location_of): Remove use of EXPR_LOC_OR_HERE macro. + (maybe_warn_cpp0x): Remove use of in_system_header macro. + * init.c (build_new_1): Remove use of EXPR_LOC_OR_HERE macro. + * lex.c (handle_pragma_interface): Remove use of input_filename + macro. + (handle_pragma_implementation): Likewise. + (cxx_make_type): Likewise. + (in_main_input_context): Likewise. + * name-lookup.c (push_binding_level): Remove use of + input_line macro. + (leave_scope): Likewise. + (resume_scope): Likewise. + * parser.c (cp_parser_unqualified_id): Remove use of + in_system_header macro. + (cp_parser_cast_expression): Likewise. + (cp_parser_declaration_seq_opt): Likewise. + (cp_parser_enumerator_list): Likewise. + (cp_parser_parameter_declaration_clause): Likewise. + (cp_parser_exception_specification_opt): Likewise. + * pt.c (unify_arg_conversion): Remove use of EXPR_LOC_OR_HERE + macro. + (convert_nontype_argument): Likewise. + (push_tinst_level): Remove use of in_system_header macro. + (tsubst_copy_and_build): Remove use of EXPR_LOC_OR_HERE + macros. + (do_decl_instantiation): Remove use of in_system_header macro. + (do_type_instantiation): Likewise. + * semantics.c (finish_call_expr): Remove use of EXPR_LOC_OR_HERE + macro. + (begin_class_definition): Remove use of input_filename macro. + (cxx_eval_call_expression): Remove use of EXPR_LOC_OR_HERE + macro. + (cxx_eval_constant_expression): Likewise. + (potential_constant_expression_1): Likewise. + * typeck.c (decay_conversion): Likewise. + (rationalize_conditional_expr): Likewise. + (build_x_compound_expr_from_list): Likewise. + (convert_for_assignment): Likewise. + * typeck2.c (check_narrowing): Likewise. + +2013-11-22 Trevor Saunders + + * parser.c, semantics.c: Change some local variables from vec to + auto_vec or stack_vec. + +2013-11-18 Richard Sandiford + + * decl.c (reshape_init_array_1): Use tree_to_uhwi rather than + tree_low_cst. + (grokdeclarator): Update comment to refer to tree_to_[su]hwi rather + than tree_low_cst. + +2013-11-18 Richard Sandiford + + * call.c, class.c, decl.c, error.c: Replace tree_low_cst (..., 1) with + tree_to_uhwi throughout. + +2013-11-18 Richard Sandiford + + * class.c, dump.c, error.c, init.c, method.c, parser.c, semantics.c: + Replace tree_low_cst (..., 0) with tree_to_shwi throughout. + +2013-11-18 Richard Sandiford + + * decl.c: Replace host_integerp (..., 1) with tree_fits_uhwi_p + throughout. + +2013-11-18 Richard Sandiford + + * error.c, init.c, parser.c, semantics.c: Replace + host_integerp (..., 0) with tree_fits_shwi_p throughout. + +2013-11-17 Paolo Carlini + + PR c++/59123 + * decl.c (validate_constexpr_redeclaration): Redeclarations of + variables can differ in constexpr. + +2013-11-16 Paolo Carlini + + PR c++/29143 + * semantics.c (finish_call_expr): Ensure that for OVERLOADs too + '(&f)(...)' is the same as '(f)(...)', per 13.3.1.1. + +2013-11-15 Aldy Hernandez + + * Make-lang.in (CXX_AND_OBJCXX_OBJS): Depend on cp/cp-cilkplus.o. + * cp-cilkplus.c: New file. + * cp-tree.h (cpp_validate_cilk_plus_loop): Protoize. + * parser.c (cp_parser_cilk_simd): New. + (cp_debug_parser): Add case for IN_CILK_SIMD_FOR. + (cp_parser_jump_statement): Same. + (cp_parser_omp_for_cond): Add new argument. + Add case for NE_EXPR. + (cp_parser_omp_for_loop): Pass new argument to + cp_parser_omp_for_cond. + Handle CILK_SIMD nodes. + Abstract initilization code to.. + (cp_parser_omp_for_loop_init): ...here. + (cp_parser_pragma): Add case for PRAGMA_CILK_SIMD. + (cp_parser_cilk_simd_vectorlength): New. + (cp_parser_cilk_simd_linear): New. + (cp_parser_cilk_simd_clause_name): New. + (cp_parser_cilk_simd_all_clauses): New. + (cp_parser_cilk_simd): New. + * parser.h (IN_CILK_SIMD_FOR): New macro. + * pt.c (tsubst_expr): Add case for CILK_SIMD. + * typeck2.c (cxx_readonly_error): Pass location argument to + readonly_error. + +2013-11-14 Paolo Carlini + + PR c++/57887 + * parser.c (cp_parser_late_parsing_nsdmi): Call + maybe_begin_member_template_processing. + * pt.c (maybe_begin_member_template_processing): Handle NSDMIs. + (inline_needs_template_parms): Adjust. + +2013-11-14 Andrew MacLeod + + * class.c: Include only gimplify.h and gimple.h as needed. + * cp-gimplify.c: Likewise. + * error.c: Likewise. + * init.c: Likewise. + * optimize.c: Likewise. + * pt.c: Likewise. + * semantics.c: Likewise. + * tree.c: Likewise. + * vtable-class-hierarchy.c: Likewise. + +2013-11-14 Diego Novillo + + * call.c: Include stor-layout.h. + Include trans-mem.h. + Include stringpool.h. + * class.c: Include stringpool.h. + Include stor-layout.h. + Include attribs.h. + * cp-gimplify.c: Include stor-layout.h. + * cvt.c: Include stor-layout.h. + * decl.c: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + Include attribs.h. + Include calls.h. + * decl2.c: Include stringpool.h. + Include varasm.h. + Include attribs.h. + Include stor-layout.h. + Include calls.h. + * error.c: Include stringpool.h. + * except.c: Include stringpool.h. + Include trans-mem.h. + Include attribs.h. + * init.c: Include stringpool.h. + Include varasm.h. + * lambda.c: Include stringpool.h. + * lex.c: Include stringpool.h. + * mangle.c: Include stor-layout.h. + Include stringpool.h. + * method.c: Include stringpool.h. + Include varasm.h. + * name-lookup.c: Include stringpool.h. + Include print-tree.h. + Include attribs.h. + * optimize.c: Include stringpool.h. + * parser.c: Include print-tree.h. + Include stringpool.h. + Include attribs.h. + Include trans-mem.h. + * pt.c: Include stringpool.h. + Include varasm.h. + Include attribs.h. + Include stor-layout.h. + * ptree.c: Include print-tree.h. + * repo.c: Include stringpool.h. + * rtti.c: Include stringpool.h. + Include stor-layout.h. + * semantics.c: Include stmt.h. + Include varasm.h. + Include stor-layout.h. + Include stringpool.h. + * tree.c: Include stor-layout.h. + Include print-tree.h. + Include tree-iterator.h. + * typeck.c: Include stor-layout.h. + Include varasm.h. + * typeck2.c: Include stor-layout.h. + Include varasm.h. + * vtable-class-hierarchy.c: Include stringpool.h. + Include stor-layout.h. + +2013-11-12 Andrew MacLeod + + * class.c: Include gimplify.h. + * cp-gimplify.c: Likewise. + * error.c: Likewise. + * init.c: Likewise. + * optimize.c: Likewise. + * pt.c: Likewise. + * semantics.c: Likewise. + * tree.c: Likewise. + * vtable-class-hierarchy.c: Likewise. + * decl2.c: Don't include gimple.h. + * except.c: Likewise. + * method.c: Include pointer-set.h instead of gimple.h. + +2013-11-12 Adam Butcher + + * pt.c (convert_generic_types_to_packs): New function to transform + a range of implicitly introduced non-pack template parms to be parameter + packs. + * cp-tree.h (convert_generic_types_to_packs): Declare. + * parser.c (cp_parser_parameter_declaration_list): If a function + parameter pack contains generic types, convert them to packs prior to + grokdeclarator. + +2013-11-12 Adam Butcher + + PR c++/58534 + PR c++/58536 + PR c++/58548 + PR c++/58549 + PR c++/58637 + * parser.h (struct cp_parser): New members implicit_template_parms, + implicit_template_scope and auto_is_implicit_function_template_parm_p. + * parser.c (add_implicit_template_parms): Refactor as ... + (synthesize_implicit_template_parm): ... this to append a new template + type parm to the current template parameter list (introducing a new list + if necessary). Removed push_deferring_access_checks. + (finish_fully_implicit_template): Removed pop_deferring_access_checks. + (cp_parser_new): Initialize new cp_parser members. + (cp_parser_parameter_declaration_clause): Consider auto as implicit + template parm when parsing a parameter declaration (unless parsing an + explicit specialization). + (cp_parser_parameter_declaration_list): Remove local + implicit_template_parms counter and reset cp_parser implicit template + state when complete. + (cp_parser_lambda_expression): Reset implicit template cp_parser members + whilst generating lambda class. + (cp_parser_function_definition_after_declarator): Reset implicit + template cp_parser members whilst parsing function definition. + (make_generic_type_name): Respell '' as 'auto:N' which works + better with template diagnostics. + (cp_parser_simple_type_specifier): Synthesize implicit template parm on + parsing 'auto' if auto_is_implicit_function_template_parm_p and provide + diagnostics ... + * decl.c (grokdeclarator): ... that were previously done here. + +2013-11-12 Paolo Carlini + + PR c++/57734 + * pt.c (lookup_template_class_1): Handle alias template declarations + of enumeration types. + +2013-11-10 Paolo Carlini + + * cvt.c (cp_convert_to_pointer): Call build_ptrmemfunc before + maybe_warn_zero_as_null_pointer_constant to avoid duplicate + -Wzero-as-null-pointer-constant diagnostics. + + * typeck.c (build_ptrmemfunc): Use cp_build_c_cast. + +2013-11-06 Paolo Carlini + + PR c++/11006 + * init.c (build_new_1): Don't call build_java_class_ref on non-class + types. + +2013-11-05 Jason Merrill + + PR c++/58868 + * decl.c (check_initializer): Don't use build_vec_init for arrays + of trivial type. + +2013-11-05 Paolo Carlini + + PR c++/58724 + * name-lookup.c (handle_namespace_attrs): Use get_attribute_name. + +2013-11-05 Tobias Burnus + + * parser.c (cp_parser_omp_for, cp_parser_omp_parallel, + cp_parser_omp_distribute, cp_parser_omp_teams, cp_parser_omp_target, + cp_parser_omp_declare): Handle -fopenmp-simd. + +2013-11-04 Eric Botcazou + + * decl2.c (cpp_check): Change type of first parameter and deal with + IS_TRIVIAL. + +2013-11-03 Paolo Carlini + + PR c++/38313 + * parser.c (cp_parser_constructor_declarator_p): Check that the + class-name matches current_class_type. + +2013-11-03 Marek Polacek + + * decl.c (cp_finish_decl): Move C++1y bounds checking... + (compute_array_index_type): ...here. Add VLA instrumentation. + Call stabilize_vla_size. + (grokdeclarator): Don't call stabilize_vla_size here. + +2013-11-02 Paolo Carlini + + PR c++/29234 + PR c++/56037 + * parser.c (cp_parser_cast_expression): If we aren't looking at + a cast-expression don't call cp_parser_type_id. + (cp_parser_postfix_expression): Likewise for compound-literal. + (cp_parser_tokens_start_cast_expression): Adjust. + +2013-11-01 Edward Smith-Rowland <3dw4rd@verizon.net> + + PR c++/58708 + * parser.c (make_string_pack): Discover non-const type and size + of character and build parm pack with correct type and chars. + +2013-11-01 Trevor Saunders + + * semantics.c (build_anon_member_initialization): Convert fields to be + a stack_vec. + +2013-11-01 Marc Glisse + + PR c++/58834 + * pt.c (type_dependent_expression_p): Handle null argument. + +2013-11-01 Jakub Jelinek + + * semantics.c (finish_omp_clauses) : Go to + check_dup_generic at the end, unless remove is true. + (finish_omp_clauses) : Add break; after + remove = true;. + +2013-10-31 Jakub Jelinek + + * semantics.c (finish_omp_clauses): Diagnose aligned clause + with decl that is not pointer nor array nor reference to those. + +2013-10-31 Jason Merrill + + * semantics.c (cxx_eval_call_expression): Handle trivial + value-initialization. + * typeck2.c (store_init_value): Call maybe_constant_init after + cxx_constant_value. + + * decl.c (cxx_maybe_build_cleanup): Always set LOOKUP_NONVIRTUAL. + * decl2.c (build_cleanup): Just call cxx_maybe_build_cleanup. + + PR c++/58162 + * parser.c (cp_parser_late_parse_one_default_arg): Set + TARGET_EXPR_DIRECT_INIT_P. + + * class.c (type_build_ctor_call): Return early in C++98 mode. + (type_build_dtor_call): Likewise. + +2013-10-31 Paolo Carlini + + PR c++/58932 + Revert: + 2013-10-18 Paolo Carlini + + PR c++/58466 + * pt.c (most_specialized_class): Bump processing_template_decl for + get_class_bindings. + +2013-10-30 Paolo Carlini + + PR c++/58581 + * call.c (build_over_call): Check return value of mark_used. + +2013-10-30 Jason Merrill + + * semantics.c (finish_compound_literal): Don't create a static variable + inside cp_unevaluated_operand. + + * init.c (push_base_cleanups): Check ANON_AGGR_TYPE_P. + +2013-10-30 Tobias Burnus + + PR other/33426 + * cp-tree.h (RANGE_FOR_IVDEP): Define. + (cp_convert_range_for, finish_while_stmt_cond, finish_do_stmt, + finish_for_cond): Take 'bool ivdep' parameter. + * cp-array-notation.c (create_an_loop): Update call. + * init.c (build_vec_init): Ditto. + * pt.c (tsubst_expr): Ditto. + * parser.c (cp_parser_iteration_statement, cp_parser_for, + cp_parser_range_for, cp_convert_range_for): Update calls. + (cp_parser_pragma): Accept GCC ivdep for 'while' and 'do'. + * semantics.c (finish_while_stmt_cond, finish_do_stmt, + finish_for_cond): Optionally build ivdep annotation. + +2013-10-30 Jason Merrill + + * decl.c (cp_finish_decl): Never throw for VLA bound == 0. + +2013-10-29 David Malcolm + + Patch autogenerated by refactor_symtab.py from + https://github.com/davidmalcolm/gcc-refactoring-scripts + revision 58bb219cc090b2f4516a9297d868c245495ee622 + + * call.c (mark_versions_used): Update for conversion of symtab types + to a true class hierarchy. + * decl2.c (cp_write_global_declarations): Likewise. + (clear_decl_external): Likewise. + (build_java_method_aliases): Likewise. + (collect_candidates_for_java_method_aliases): Likewise. + (mark_needed): Likewise. + (var_finalized_p): Likewise. + (maybe_make_one_only): Likewise. + (maybe_emit_vtables): Likewise. + * lambda.c (maybe_add_lambda_conv_op): Likewise. + * method.c (use_thunk): Likewise. + * optimize.c (maybe_clone_body): Likewise. + * tree.c (cp_fix_function_decl_p): Likewise. + +2013-10-29 Paolo Carlini + + PR c++/58888 + * decl2.c (grokfield): Handle auto like NSDMI. + +2013-10-25 Paolo Carlini + + PR c++/58878 + * pt.c (check_template_shadow): Don't skip declarations in inline + member templates. + +2013-10-25 Tobias Burnus + + PR other/33426 + * parser.c (cp_parser_iteration_statement, + cp_parser_for, cp_parser_c_for, cp_parser_pragma): Handle + IVDEP pragma. + +2013-10-24 Marek Polacek + + PR c++/58705 + * typeck2.c (check_narrowing): Don't check narrowing when the scalar + initializer is empty. + +2013-10-23 Jason Merrill + + LWG 2165 + * method.c (defaulted_late_check): Delete on eh-spec mismatch. + (maybe_explain_implicit_delete): Explain it. + + * error.c (eh_spec_to_string): New. + (cp_printer): Use it for %X. + + In C++11 a trivial [cd]tor might not be callable. + * class.c (user_provided_p): A function deleted on its declation + in the class is not user-provided. + (type_build_ctor_call): Also force a ctor call if we + might have a deleted or private trivial ctor. + (type_build_dtor_call): New. + (deduce_noexcept_on_destructors): Remove obsolete code. + * cp-tree.h: Declare type_build_dtor_call. + * decl.c (expand_static_init): Make sure trivial dtors are callable. + (cxx_maybe_build_cleanup): Likewise. + * except.c (build_throw): Likewise. + * init.c (build_value_init): Handle trivial but not callable ctors. + (perform_target_ctor): Make sure trivial dtor is callable. + (perform_member_init): Likewise. + (expand_cleanup_for_base): Likewise. + (build_vec_delete_1): Likewise. + (build_delete): Likewise. + (push_base_cleanups): Likewise. + (build_new_1): Avoid redundant error. + * method.c (synthesized_method_walk): Can't ever exit early in C++11. + Always process the subobject destructor. + * semantics.c (finish_compound_literal): Make sure trivial dtor is + callable. + * typeck2.c (split_nonconstant_init): Likewise. + +2013-10-23 Edward Smith-Rowland <3dw4rd@verizon.net> + + Implement C++14 [[deprecated]] modulo [[gnu::deprecated]] bugs. + * parser.c (cp_parser_std_attribute): Interpret [[deprecated]] + as [[gnu::deprecated]]. + +2013-10-22 Paolo Carlini + + PR c++/58816 + * pt.c (apply_late_template_attributes): Use get_attribute_name, + not TREE_PURPOSE. + +2013-10-18 Paolo Carlini + + PR c++/58466 + * pt.c (most_specialized_class): Bump processing_template_decl for + get_class_bindings. + +2013-10-18 Paolo Carlini + + * parser.c (cp_parser_lookup_name): Tidy. + +2013-10-17 Andrew MacLeod + + * parser.c: Include omp-low.h. + * semantics.c: Likewise. + +2013-10-17 Paolo Carlini + + PR c++/58596 + * lambda.c (lambda_expr_this_capture): Handle NSDMIs in the + cp_unevaluated_operand case. + +2013-10-16 Jason Merrill + + * pt.c (apply_late_template_attributes): Use + attribute_takes_identifier_p. + + * error.c (dump_exception_spec): Print "noexcept" rather than + "noexcept (true)". + + Core 1591 + * pt.c (unify_array_domain): Split out from unify. + (unify): Use it for list deduction, too. + + PR c++/57850 + * decl2.c (dump_tu): Split out from... + (cp_write_global_declarations): ...here. Call it in PCH mode. + +2013-10-16 Paolo Carlini + + * pt.c (tsubst): Fix typo in last commit. + +2013-10-16 Paulo Matos + + * error.c (code_to_string): Use new wrapper get_tree_code_name. + * cxx-pretty-print.c (pp_cxx_assignment_operator): Likewise. + * pt.c (tsubst): Likewise. + * semantics.c (cxx_eval_constant_expression, + potential_constant_expression_1): Likewise. + * mangle.c (MANGLE_TRACE_TREE, dump_substitution_candidates, + add_substitution, find_substitution): Likewise. + +2013-10-15 Paolo Carlini + + PR c++/58707 + * parser.c (cp_parser_postfix_open_square_expression): Set + parser->greater_than_is_operator_p for the argument. + +2013-10-11 Paolo Carlini + + PR c++/58633 + * parser.c (cp_parser_commit_to_topmost_tentative_parse): New. + (cp_parser_pseudo_destructor_name): Use it. + +2013-10-11 Paolo Carlini + + PR c++/31671 + * pt.c (convert_nontype_argument): Set expr_type to + TREE_TYPE (probe_type). + +2013-10-11 Jakub Jelinek + + * decl.c (duplicate_decls): Error out for redeclaration of UDRs. + (declare_simd_adjust_this): New function. + (grokfndecl): If "omp declare simd" attribute is present, + call declare_simd_adjust_this if needed and + c_omp_declare_simd_clauses_to_numbers. + * cp-array-notation.c (expand_array_notation_exprs): Handle + OMP_TASKGROUP. + * cp-gimplify.c (cp_gimplify_expr): Handle OMP_SIMD and + OMP_DISTRIBUTE. Handle is_invisiref_parm decls in + OMP_CLAUSE_REDUCTION. + (cp_genericize_r): Handle OMP_SIMD and OMP_DISTRIBUTE like + OMP_FOR. + (cxx_omp_privatize_by_reference): Return true for + is_invisiref_parm decls. + (cxx_omp_finish_clause): Adjust cxx_omp_create_clause_info + caller. + * pt.c (apply_late_template_attributes): For "omp declare simd" + attribute call tsubst_omp_clauses, + c_omp_declare_simd_clauses_to_decls, finish_omp_clauses + and c_omp_declare_simd_clauses_to_numbers. + (instantiate_class_template_1): Call cp_check_omp_declare_reduction + for UDRs. + (tsubst_decl): Handle UDRs. + (tsubst_omp_clauses): Add declare_simd argument, if true don't + call finish_omp_clauses. Handle new OpenMP 4.0 clauses. + Handle non-NULL OMP_CLAUSE_REDUCTION_PLACEHOLDER on + OMP_CLAUSE_REDUCTION. + (tsubst_expr): For UDRs call pushdecl and + cp_check_omp_declare_reduction. Adjust tsubst_omp_clauses + callers. Handle OMP_SIMD, OMP_DISTRIBUTE, OMP_TEAMS, + OMP_TARGET_DATA, OMP_TARGET_UPDATE, OMP_TARGET, OMP_TASKGROUP. + Adjust finish_omp_atomic caller. + (tsubst_omp_udr): New function. + (instantiate_decl): For UDRs at block scope, don't call + start_preparsed_function/finish_function. Call tsubst_omp_udr. + * semantics.c (cxx_omp_create_clause_info): Add need_dtor argument, + use it instead of need_default_ctor || need_copy_ctor. + (struct cp_check_omp_declare_reduction_data): New type. + (handle_omp_array_sections_1, handle_omp_array_sections, + omp_reduction_id, omp_reduction_lookup, + cp_remove_omp_priv_cleanup_stmt, cp_check_omp_declare_reduction_r, + cp_check_omp_declare_reduction, clone_omp_udr, + find_omp_placeholder_r, finish_omp_reduction_clause): New functions. + (finish_omp_clauses): Handle new OpenMP 4.0 clauses and user defined + reductions. + (finish_omp_for): Add CODE argument, use it instead of hardcoded + OMP_FOR. Adjust c_finish_omp_for caller. + (finish_omp_atomic): Add seq_cst argument, adjust + c_finish_omp_atomic callers, handle seq_cst and new OpenMP 4.0 + atomic variants. + (finish_omp_cancel, finish_omp_cancellation_point): New functions. + * decl2.c (mark_used): Force immediate instantiation of + DECL_OMP_DECLARE_REDUCTION_P decls. + (is_late_template_attribute): Return true for "omp declare simd" + attribute. + (cp_omp_mappable_type): New function. + (cplus_decl_attributes): Add implicit "omp declare target" attribute + if requested. + * parser.c (cp_debug_parser): Print + parser->colon_doesnt_start_class_def_p. + (cp_ensure_no_omp_declare_simd, cp_finalize_omp_declare_simd): New + functions. + (enum pragma_context): Add pragma_member and pragma_objc_icode. + (cp_parser_binary_expression): Handle no_toplevel_fold_p + even for binary operations other than comparison. + (cp_parser_linkage_specification): Call + cp_ensure_no_omp_declare_simd if needed. + (cp_parser_namespace_definition): Likewise. + (cp_parser_init_declarator): Call cp_finalize_omp_declare_simd. + (cp_parser_direct_declarator): Pass declarator to + cp_parser_late_return_type_opt. + (cp_parser_late_return_type_opt): Add declarator argument, + call cp_parser_late_parsing_omp_declare_simd for declare simd. + (cp_parser_class_specifier_1): Call cp_ensure_no_omp_declare_simd. + Parse UDRs before all other methods. + (cp_parser_member_specification_opt): Use pragma_member instead of + pragma_external. + (cp_parser_member_declaration): Call cp_finalize_omp_declare_simd. + (cp_parser_function_definition_from_specifiers_and_declarator, + cp_parser_save_member_function_body): Likewise. + (cp_parser_late_parsing_for_member): Handle UDRs specially. + (cp_parser_next_token_starts_class_definition_p): Don't allow + CPP_COLON if colon_doesnt_start_class_def_p flag is true. + (cp_parser_objc_interstitial_code): Use pragma_objc_icode + instead of pragma_external. + (cp_parser_omp_clause_name): Parse new OpenMP 4.0 clause names. + (cp_parser_omp_var_list_no_open): Parse array sections for + OMP_CLAUSE_{DEPEND,MAP,TO,FROM} clauses. Add COLON argument, + if non-NULL, allow parsing to end with a colon rather than close + paren. + (cp_parser_omp_var_list): Adjust cp_parser_omp_var_list_no_open + caller. + (cp_parser_omp_clause_reduction): Handle user defined reductions. + (cp_parser_omp_clause_branch, cp_parser_omp_clause_cancelkind, + cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit, + cp_parser_omp_clause_aligned, cp_parser_omp_clause_linear, + cp_parser_omp_clause_safelen, cp_parser_omp_clause_simdlen, + cp_parser_omp_clause_depend, cp_parser_omp_clause_map, + cp_parser_omp_clause_device, cp_parser_omp_clause_dist_schedule, + cp_parser_omp_clause_proc_bind, cp_parser_omp_clause_to, + cp_parser_omp_clause_from, cp_parser_omp_clause_uniform): New + functions. + (cp_parser_omp_all_clauses): Add finish_p argument. Don't call + finish_omp_clauses if it is false. Handle new OpenMP 4.0 clauses. + (cp_parser_omp_atomic): Parse seq_cst clause, pass + true if it is present to finish_omp_atomic. Handle new OpenMP 4.0 + atomic forms. + (cp_parser_omp_for_loop): Add CODE argument, pass it through + to finish_omp_for. Change last argument to cclauses, + and adjust uses to grab parallel clauses from the array of all + the split clauses. + (cp_omp_split_clauses): New function. + (cp_parser_omp_simd): New function. + (cp_parser_omp_for): Add p_name, mask and cclauses arguments. + Allow the function to be called also when parsing combined constructs, + and call c_parser_omp_simd when parsing for simd. + (cp_parser_omp_sections_scope): If section-sequence doesn't start with + #pragma omp section, require exactly one structured-block instead of + sequence of statements. + (cp_parser_omp_sections): Add p_name, mask and cclauses arguments. + Allow the function to be called also when parsing combined constructs. + (cp_parser_omp_parallel): Add p_name, mask and cclauses arguments. + Allow the function to be called also when parsing combined + constructs. + (cp_parser_omp_taskgroup, cp_parser_omp_cancel, + cp_parser_omp_cancellation_point, cp_parser_omp_distribute, + cp_parser_omp_teams, cp_parser_omp_target_data, + cp_parser_omp_target_update, cp_parser_omp_target, + cp_parser_omp_declare_simd, cp_parser_late_parsing_omp_declare_simd, + cp_parser_omp_declare_target, cp_parser_omp_end_declare_target, + cp_parser_omp_declare_reduction_exprs, cp_parser_omp_declare_reduction, + cp_parser_omp_declare): New functions. + (cp_parser_omp_construct): Add p_name and mask vars. Handle + PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP, + PRAGMA_OMP_TEAMS. Adjust cp_parser_omp_for, cp_parser_omp_parallel + and cp_parser_omp_sections callers. + (cp_parser_pragma): Handle PRAGMA_OMP_CANCEL, + PRAGMA_OMP_CANCELLATION_POINT, PRAGMA_OMP_DECLARE_REDUCTION, + PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP, + PRAGMA_OMP_TEAMS, PRAGMA_OMP_TARGET, PRAGMA_OMP_END_DECLARE_TARGET. + Handle pragma_member and pragma_objc_icode like pragma_external. + (OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK, + OMP_SINGLE_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1. + (OMP_PARALLEL_CLAUSE_MASK): Likewise. Add OMP_CLAUSE_PROC_BIND. + (OMP_TASK_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1. Add + OMP_CLAUSE_DEPEND. + (OMP_SIMD_CLAUSE_MASK, OMP_CANCEL_CLAUSE_MASK, + OMP_CANCELLATION_POINT_CLAUSE_MASK, OMP_DISTRIBUTE_CLAUSE_MASK, + OMP_TEAMS_CLAUSE_MASK, OMP_TARGET_DATA_CLAUSE_MASK, + OMP_TARGET_UPDATE_CLAUSE_MASK, OMP_TARGET_CLAUSE_MASK, + OMP_DECLARE_SIMD_CLAUSE_MASK): Define. + * parser.h (struct cp_omp_declare_simd_data): New type. + (struct cp_parser): Add colon_doesnt_start_class_def_p and + omp_declare_simd fields. + * cp-objcp-common.h (LANG_HOOKS_OMP_MAPPABLE_TYPE): Define. + * cp-tree.h (struct lang_decl_fn): Add omp_declare_reduction_p + bit. + (DECL_OMP_DECLARE_REDUCTION_P): Define. + (OMP_FOR_GIMPLIFYING_P): Use OMP_LOOP_CHECK macro. + (struct saved_scope): Add omp_declare_target_attribute field. + (cp_omp_mappable_type, omp_reduction_id, + cp_remove_omp_priv_cleanup_stmt, cp_check_omp_declare_reduction, + finish_omp_cancel, finish_omp_cancellation_point): New prototypes. + (finish_omp_for): Add CODE argument. + (finish_omp_atomic): Add seq_cst argument. + (cxx_omp_create_clause_info): Add need_dtor argument. + +2013-10-09 Marek Polacek + + PR c++/58635 + * semantics.c (finish_return_stmt): Return error_mark_node + when error_operand_p of the expr is true. + (build_transaction_expr): Check for EXPR_P before setting the + expr location. + +2013-10-08 Paolo Carlini + + PR c++/58568 + * lambda.c (begin_lambda_type): Check return value of xref_tag + for error_mark_node; tidy. + * decl.c (grokdeclarator): Tweak error message. + +2013-10-08 Paolo Carlini + + PR c++/58665 + Revert: + 2013-10-04 Paolo Carlini + + PR c++/58448 + * pt.c (tsubst): Use error_operand_p on parameter t. + +2013-10-06 Paolo Carlini + + PR c++/58126 + * class.c (check_bases): Propagate CLASSTYPE_READONLY_FIELDS_NEED_INIT + and CLASSTYPE_REF_FIELDS_NEED_INIT from bases to derived. + * init.c (diagnose_uninitialized_cst_or_ref_member_1): Extend error + messages about uninitialized const and references members to mention + the base class. + +2013-10-06 Paolo Carlini + + PR c++/56060 + * pt.c (type_dependent_expression_p): Handle EXPR_PACK_EXPANSION. + +2013-10-04 Paolo Carlini + + PR c++/58560 + * typeck2.c (build_functional_cast): Use error_operand_p on exp. + +2013-10-04 Paolo Carlini + + PR c++/58503 + * parser.c (cp_parser_perform_range_for_lookup): If eventually + either *begin or *end is type-dependent, return NULL_TREE. + (do_range_for_auto_deduction): If cp_parser_perform_range_for_lookup + returns NULL_TREE, don't actually do_auto_deduction. + +2013-10-04 Paolo Carlini + + PR c++/58448 + * pt.c (tsubst): Use error_operand_p on parameter t. + +2013-10-04 Marc Glisse + + PR c++/19476 + * decl.c (cxx_init_decl_processing): Set operator_new_flag. + +2013-10-04 Paolo Carlini + + PR c++/58584 + * decl2.c (save_template_attributes): Handle error_mark_node as + *attr_p argument. + (cp_check_const_attributes): Likewise for attributes. + * parser.c (cp_parser_std_attribute_spec): When alignas_expr is an + error_mark_node call cp_parser_skip_to_end_of_statement. + +2013-10-03 Easwaran Raman + + PR c++/33911 + * parser.c (cp_parser_init_declarator): Do not drop attributes + of template member functions. + +2013-10-03 Marek Polacek + + PR c++/58510 + * init.c (sort_mem_initializers): Splice when giving an error. + +2013-10-02 Paolo Carlini + + PR c++/58535 + * parser.c (cp_parser_function_specifier_opt): Upon error about + virtual templates don't set ds_virtual. + (finish_fully_implicit_template): Reject virtual implicit templates. + +2013-10-02 Paolo Carlini + + PR c++/58565 + * semantics.c (potential_constant_expression_1): Handle LABEL_EXPR. + +2013-10-01 Paolo Carlini + + PR c++/58563 + * parser.c (cp_parser_lookup_name): Check make_typename_type return + value for error_mark_node. + +2013-09-25 Tom Tromey + + * Make-lang.in (CXX_TREE_H, CXX_PARSER_H, CXX_PRETTY_PRINT_H): + Remove. + +2013-09-25 Tom Tromey + + * Make-lang.in (g++spec.o): Remove. + (CFLAGS-cp/g++spec.o): New variable. + (GXX_OBJS): Reference cp/g++spec.o. + (cc1plus-checksum.o, cp/lex.o, cp/cp-array-notation.o) + (cp/cp-lang.o, cp/decl.o, cp/decl2.o, cp/cp-objcp-common.o) + (cp/typeck2.o, cp/typeck.o, cp/class.o, cp/call.o) + (cp/friend.o, cp/init.o, cp/method.o, cp/cvt.o, cp/search.o) + (cp/tree.o, cp/ptree.o, cp/rtti.o, cp/except.o, cp/expr.o) + (cp/pt.o, cp/error.o, cp/repo.o, cp/semantics.o, cp/dump.o) + (cp/optimize.o, cp/mangle.o, cp/parser.o, cp/cp-gimplify.o) + (cp/name-lookup.o, cp/cxx-pretty-print.o): Remove. + +2013-09-25 Tom Tromey + + * Make-lang.in (g++spec.o): Don't use subshell. + +2013-09-25 Marek Polacek + + PR c++/58516 + * semantics.c (finish_transaction_stmt): Check for EXPR_P before + setting the expr location. + +2013-09-23 Adam Butcher + + PR c++/58500 + * type-utils.h (find_type_usage): Only traverse one type level into + member function pointers. + +2013-09-23 Adam Butcher + + * parser.c (cp_parser_init_declarator): Defer calling + finish_fully_implicit_template for forward declarations until after + other decl processing is complete. Cleanup for clarity: Extract 'else' + case after 'if' containing unconditional return. + +2013-09-23 Adam Butcher + + * parser.c (make_generic_type_name): Spell generic type names '' + rather than '__GenN'. + +2013-09-23 Adam Butcher + + * lambda.c (maybe_add_lambda_conv_op): Don't check for instantiated + callop in the case of generic lambdas. + +2013-09-23 Adam Butcher + + * parser.c (make_generic_type_name): Use global count rather than + parameter and ... + (add_implicit_template_parms): ... propagate interface change here. + +2013-09-20 Paolo Carlini + + PR c++/58481 + * pt.c (tsubst_copy): Use current_nonlambda_class_type to + call tsubst_baselink. + +2013-09-18 Paolo Carlini + + PR c++/58457 + * class.c (instantiate_type): Loosen a bit the gcc_assert. + +2013-09-18 Marek Polacek + + PR sanitize/58443 + * typeck.c (cp_build_binary_op): Properly honor -fsanitize options. + Remove unnecessary check. + +2013-09-18 Marek Polacek + + PR sanitizer/58411 + * typeck.c (cp_build_binary_op): Don't sanitize function if it has the + no_sanitize_undefined attribute. + +2013-09-17 Paolo Carlini + + PR c++/58435 + * pt.c (tsubst, [BOUND_TEMPLATE_TEMPLATE_PARM]): Take into account + the cp_type_quals (r) too. + +2013-09-16 Adam Butcher + + * cp-tree.h (type_uses_auto_or_concept): Declare. + (is_auto_or_concept): Declare. + * decl.c (grokdeclarator): Allow 'auto' parameters in lambdas with + -std=gnu++1y or -std=c++1y or, as a GNU extension, in plain functions. + * type-utils.h: New header defining ... + (find_type_usage): ... this new function based on pt.c (type_uses_auto) + for searching a type tree given a predicate. + * pt.c (type_uses_auto): Reimplement via type-utils.h (find_type_usage). + (is_auto_or_concept): New function. + (type_uses_auto_or_concept): New function. + * parser.h (struct cp_parser): Add fully_implicit_function_template_p. + * parser.c (cp_parser_new): Initialize + fully_implicit_function_template_p. + (cp_parser_new): Initialize fully_implicit_function_template_p. + (cp_parser_lambda_expression): Copy and restore value of + fully_implicit_function_template_p as per other parser fields. + (cp_parser_parameter_declaration_list): Count generic + parameters and call ... + (add_implicit_template_parms): ... this new function to synthesize them + with help from type-utils.h (find_type_usage), ... + (tree_type_is_auto_or_concept): ... this new static function and ... + (make_generic_type_name): ... this new static function. + (cp_parser_direct_declarator): Account for implicit template parameters. + (cp_parser_lambda_declarator_opt): Finish fully implicit template if + necessary by calling ... + (finish_fully_implicit_template): ... this new function. + (cp_parser_init_declarator): Likewise. + (cp_parser_function_definition_after_declarator): Likewise. + (cp_parser_member_declaration): Likewise. + * Make-lang.in (cp/pt.o): Add dependency on type-utils.h. + (cp/parser.o): Likewise. + +2013-09-16 Adam Butcher + + * parser.c (cp_parser_lambda_declarator_opt): Accept template parameter + list with std=c++1y or std=gnu++1y. + (cp_parser_lambda_body): Don't call 'expand_or_defer_fn' for lambda call + operator template to avoid adding template result to symbol table. + * lambda.c (lambda_function): Return template result if call operator is + a template. + (maybe_add_lambda_conv_op): Move declarations to point of use. Refactor + operator call building in order to support conversion of a non-capturing + lambda template to a function pointer with help from ... + (prepare_op_call): ... this new function. + * decl2.c (check_member_template): Don't reject lambda call operator + template in local [lambda] class. + * pt.c (instantiate_class_template_1): Don't instantiate lambda call + operator template when instantiating lambda class. + +2013-09-16 Adam Butcher + + * pt.c (make_auto_1): Use input_location rather than BUILTINS_LOCATION. + +2013-09-15 Jason Merrill + + Core DR 904 + PR c++/41933 + * parser.c (cp_parser_lambda_introducer): Handle variadic capture. + * lambda.c (add_capture): Handle variadic capture. + (add_default_capture, lambda_capture_field_type): Likewise. + (build_capture_proxy, register_capture_members): Likewise. + * pt.c (register_specialization): Allow FIELD_DECL. + (retrieve_specialization): Likewise. + (find_parameter_packs_r): Handle FIELD_DECL and VAR_DECL. + (tsubst_pack_expansion): Handle FIELD_DECL packs. + (gen_elem_of_pack_expansion_instantiation): Likewise. + (instantiate_class_template_1): Likewise. + (tsubst_decl, tsubst_copy): Likewise. + (tsubst_expr) [DECL_EXPR]: Handle capture proxy packs. + (tsubst_copy_and_build) [VAR_DECL]: Likewise. + * semantics.c (finish_non_static_data_member): Don't try to represent + the type of a COMPOUND_REF of a FIELD_DECL pack. + + PR c++/41933 + * cp-tree.h (DECL_PACK_P): Replace FUNCTION_PARAMETER_PACK_P. + * cxx-pretty-print.c (direct_declarator): Adjust. + * decl2.c (cp_build_parm_decl): Adjust. + * pt.c (function_parameter_pack_p): Adjust. + (find_parameter_packs_r, push_template_decl_real): Adjust. + (tsubst_pack_expansion, tsubst_decl): Adjust. + (regenerate_decl_from_template, instantiate_decl): Adjust. + + * lambda.c (add_capture): Don't add DECL_LANG_SPECIFIC. + +2013-09-13 Jason Merrill + + PR c++/58273 + * pt.c (any_type_dependent_elements_p): Actually check for + type-dependence, not value-dependence. + +2013-09-13 Jacek Caban + + * decl.c: Use new cxx_implicit_extern_c hook + +2013-09-12 Brooks Moses + + PR driver/42955 + * Make-lang.in: Do not install driver binaries in $(target)/bin. + +2013-09-12 Adam Butcher + + * pt.c (instantiate_decl): Save/restore cp_unevaluated_operand and + c_inhibit_evaluation_warnings. Reset if instantiating within a + function-local template. + +2013-09-12 Paolo Carlini + + * semantics.c (finish_pseudo_destructor_expr): Add location_t + parameter. + * pt.c (unify_arg_conversion): Use EXPR_LOC_OR_HERE. + (tsubst_copy_and_build): Adjust finish_pseudo_destructor_expr + calls. + * parser.c (cp_parser_postfix_dot_deref_expression): Likewise. + (cp_parser_postfix_expression): Pass the proper location to + cp_parser_postfix_dot_deref_expression. + * cp-tree.h (finish_pseudo_destructor_expr): Update declaration. + +2013-09-10 Jan Hubicka + Paolo Carlini + + * error.c (print_instantiation_partial_context_line): If + loc == UNKNOWN_LOCATION return immediately. + +2013-09-09 Jakub Jelinek + + PR c++/58325 + * init.c (build_vec_delete): Call mark_rvalue_use on base. + +2013-09-09 Paolo Carlini + + PR c++/43452 + * init.c (build_vec_delete_1): When the type is incomplete emit a + warning, enabled by default (not an error). + (build_delete): Adjust to use OPT_Wdelete_incomplete. + +2013-09-09 Paolo Carlini + + PR c++/58362 + * error.c (location_of): Don't handle PARM_DECLs specially. + +2013-09-09 Paolo Carlini + + * error.c (dump_expr, [PSEUDO_DTOR_EXPR]): Fix. + * cxx-pretty-print.c (cxx_pretty_printer::postfix_expression): + Tweak, TREE_OPERAND (t, 1) may be null. + +2013-09-08 Caroline Tice + + PR c++/58300 + * vtable-class-hierarchy.c (vtv_generate_init_routine): In + preinit case, move call to assemble_vtv_preinit_initializer to + after call to cgraph_process_new_functions. + +2013-09-08 Tom de Vries + + PR c++/58282 + * except.c (build_must_not_throw_expr): Handle + flag_exceptions. + +2013-09-08 Joern Rennecke + + * typeck.c (cp_build_binary_op): Use vector_types_compatible_elements_p. + +2013-09-04 Paolo Carlini + + PR c++/24926 + * class.c (finish_struct_anon_r): New. + (finish_struct_anon): Use it. + +2013-09-04 Gabriel Dos Reis + + * cxx-pretty-print.h (cxx_pretty_printer::simple_type_specifier): + Declare as overrider. + * cxx-pretty-print.c (cxx_pretty_printer::simple_type_specifier): + Rename from pp_cxx_simple_type_specifier. + (cxx_pretty_printer::cxx_pretty_printer): Do not assign to + simple_type_specifier. + +2013-09-03 Paolo Carlini + + PR c++/58305 + * typeck2.c (build_functional_cast): Maybe warn_deprecated_use. + +2013-09-03 Mike Stump + + * Make-lang.in (cp/lambda.o): Add dependencies. + +2013-09-03 Gabriel Dos Reis + + * cxx-pretty-print.h (cxx_pretty_printer::type_id): Declare as + overrider. + * cxx-pretty-print.c (pp_cxx_storage_class_specifier): Remove. + (pp_cxx_userdef_literal): Tidy. + (pp_cxx_template_argument_list): Likewise. + (pp_cxx_typeid_expression): Likewise. + (pp_cxx_offsetof_expression_1): Likewise. + (cxx_pretty_printer::postfix_expression): Likewise. + (cxx_pretty_printer::unary_expression): Likewise. + (cxx_pretty_printer::statement): Likewise. + (cxx_pretty_printer::type_id): Rename from pp_cxx_type_id. + (c_pretty_printer::cxx_pretty_printer): Do not assign to type_id. + * error.c (dump_decl): Tidy. + (dump_expr): Likewise. + +2013-09-02 Paolo Carlini + + PR c++/21682, implement DR 565 + * name-lookup.c (compparms_for_decl_and_using_decl): New. + (push_overloaded_decl_1, do_nonmember_using_decl): Use it. + +2013-08-30 Marek Polacek + + * typeck.c (cp_build_binary_op): Add division by zero and shift + instrumentation. + * error.c (dump_expr): Special-case ubsan builtins. + +2013-08-30 Paolo Carlini + + PR c++/51424 + * cp-tree.h (LOOKUP_DELEGATING_CONS): Add. + * init.c (perform_target_ctor): Use it. + * call.c (build_special_member_call): Diagnose self-delegating + constructors. + +2013-08-30 Gabriel Dos Reis + + * cxx-pretty-print.h (cxx_pretty_printer::declaration): Declare as + overrider. + (cxx_pretty_printer::declaration_specifiers): Likewise. + (cxx_pretty_printer::function_specifier): Likewise. + (cxx_pretty_printer::declarator): Likewise. + (cxx_pretty_printer::direct_declarator): Likewise. + (cxx_pretty_printer::abstract_declarator): Likewise. + (cxx_pretty_printer::direct_abstract_declarator): Likewise. + (pp_cxx_declaration): Remove. + * cxx-pretty-print.c (cxx_pretty_printer::function_specifier): + Rename from pp_cxx_function_specifier. Adjust. + (cxx_pretty_printer::declaration_specifiers): Rename from + pp_cxx_decl_specifier_seq. Adjust. + (cxx_pretty_printer::direct_declarator): Rename from + pp_cxx_direct_declarator. Adjust. + (cxx_pretty_printer::declarator): Rename from pp_cxx_declarator. + Adjust. + (cxx_pretty_printer::abstract_declarator): Rename from + pp_cxx_abstract_declarator. Adjust. + (cxx_pretty_printer::direct_abstract_declarator): Rename from + pp_cxx_direct_abstract_declarator. Adjust. + (cxx_pretty_printer::declaration): Rename from + pp_cxx_declaration. Adjust. + (cxx_pretty_printer::cxx_pretty_printer): Do not assign to + declaration, declaration_specifiers, function_specifier, + declarator, direct_declarator, abstract_declarator, + direct_abstract_declarator. + * error.c (dump_decl): Adjust. + +2013-08-29 Jan Hubicka + + Correct previous patch to not mark terminate as LEAF. + * class.c (build_vtbl_initializer): Drop LEAF + * decl.c (cxx_init_decl_processing): Likewise. + (push_throw_library_fn): Likewise. + * except.c (init_exception_processing): Likewise. + (do_begin_catch): Likewise. + (do_end_catch): Likewise. + (do_allocate_exception): Likewise. + +2013-08-29 Jan Hubicka + + * class.c (build_vtbl_initializer): Make __cxa_deleted_virtual + ECF_NORETURN | ECF_LEAF + * cp-tree.h (build_library_fn_ptr, build_cp_library_fn_ptr, + push_library_fn, push_void_library_fn): Update prototype. + * decl.c (build_library_fn_1): Remove. + (push_cp_library_fn, build_cp_library_fn): Update to take ECF flags. + (cxx_init_decl_processing): Update; global_delete_fndecl is ECF_NOTROW; + __cxa_pure_virtual is ECF_NORETURN | ECF_NORETURN | ECF_LEAF. + (build_library_fn_1): Add ecf_flags argument; rename to ... + (build_library_fn): ... this one. + (build_cp_library_fn): Take ecf_flags; do not copy NOTHROW flag. + (build_library_fn_ptr): Take ecf_flags. + (build_cp_library_fn_ptr): Likewise. + (push_library_fn): Likewise. + (push_cp_library_fn): Likewise. + (push_void_library_fn): Likewise. + (push_throw_library_fn): All throws are ECF_NORETURN. + (__cxa_atexit, __cxa_thread_atexit): Add ECF_LEAF | ECF_NOTHROW attributes. + (expand_static_init): __cxa_guard_acquire, __cxa_guard_release, + __cxa_guard_abort are ECF_NOTHROW | ECF_LEAF. + * except.c (init_exception_processing): terminate is + ECF_NOTHROW | ECF_NORETURN | ECF_LEAF. + (declare_nothrow_library_fn): Add ecf_flags parameter. + (__cxa_get_exception_ptr): Is ECF_NOTHROW | ECF_PURE | ECF_LEAF | + ECF_TM_PURE. + (do_begin_catch): cxa_begin_catch and _ITM_cxa_begin_catch + are ECF_NOTHROW | ECF_LEAF. + (do_end_catch): __cxa_end_catch and _ITM_cxa_end_catch is + ECF_LEAF. + (do_allocate_exception): _cxa_allocate_exception + and _ITM_cxa_allocate_exception are ECF_NOTHROW | ECF_MALLOC + | ECF_LEAF + (do_free_exception): __cxa_free_exception is + ECF_NOTHROW | ECF_LEAF. + * rtti.c (build_dynamic_cast_1): __dynamic_cast + is ECF_LEAF | ECF_PURE | ECF_NOTHROW. + +2013-08-29 Adam Butcher + + * error.c (dump_lambda_function): New function, dependent on ... + (dump_substitution): ... this new function, factored out of ... + (subst_to_string): ... here and ... + (dump_function_decl): ... here. Updated to early-out with call to + dump_lambda_function after determining template bindings. + +2013-08-28 Paolo Carlini + + PR c++/58255 + * init.c (build_aggr_init): When init == void_type_node do not + set LOOKUP_ONLYCONVERTING. + +2013-08-27 Caroline Tice + + * vtable-class-hierarchy.c: Remove unnecessary include statements. + (MAX_SET_SIZE): Remove unnecessary constant. + (register_construction_vtables): Make vtable_ptr_array parameter + into a vector; remove num_args parameter. Change array accesses to + vector accesses. + (register_other_binfo_vtables): Ditto. + (insert_call_to_register_set): Ditto. + (insert_call_to_register_pair): Ditto. + (output_set_info): Ditto. Also change warning calls to warning_at + calls, and fix format of warning messages. + (register_all_pairs): Change vtbl_ptr_array from an array into a + vector. Remove num_vtable_args (replace with calls to vector length). + Change array stores & accesses to vector functions. Change calls to + register_construction_vtables, register_other_binfo_vtables, + insert_call_to_register_set, insert_call_to_register_pair and + output_set_info to match their new signatures. Change warning to + warning_at and fix the format of the warning message. + +2013-08-27 Jakub Jelinek + Aldy Hernandez + + * cp-tree.h (CP_OMP_CLAUSE_INFO): Adjust range for new clauses. + +2013-08-27 Paolo Carlini + + * decl.c (grokfndecl): Remove old bison hack. + +2013-08-26 Jan Hubicka + + * cp-tree.h (DECL_CONSTRUCTOR_P, DECL_DESTRUCTOR_P): Use + middle-end flag. + +2013-08-26 Gabriel Dos Reis + + * cxx-pretty-print.h (cxx_pretty_printer::unary_expression): + Declare as overrider. + (cxx_pretty_printer::multiplicative_expression): Likewise. + (cxx_pretty_printer::conditional_expression): Likewise. + (cxx_pretty_printer::assignment_expression): Likewise. + (cxx_pretty_printer::expression): Likewise. + * cxx-pretty-print.c (cxx_pretty_printer::unary_expression): + Rename from pp_cxx_unary_expression. Adjust. + (cxx_pretty_printer::multiplicative_expression): Rename from + pp_cxx_multiplicative_expression. Adjust. + (cxx_pretty_printer::conditional_expression): Rename from + pp_cxx_conditional_expression. Adjust. + (cxx_pretty_printer::assignment_expression): Rename from + pp_cxx_assignment_expression. Adjust. + (cxx_pretty_printer::expression): Rename from pp_cxx_expression. + Adjust. + (cxx_pretty_printer::cxx_pretty_printer): Dot not assign to + unary_expression, multiplicative_expression, + conditional_expression, assignment_expression, expression. + +2013-08-25 Gabriel Dos Reis + + * cxx-pretty-print.h (cxx_pretty_printer::postfix_expression): + Declare as overrider. + * cxx-pretty-print.c (cxx_pretty_printer::postfix_expression): + Rename from pp_cxx_postfix_expression. Adjust. + (pp_cxx_expression): Use pp_postfix_expression. + (cxx_pretty_printer::cxx_pretty_printer): Do not assign to + postfix_expression. + +2013-08-25 Gabriel Dos Reis + + * cxx-pretty-print.h (cxx_pretty_printer::primary_expression): Now + an overrider of c_pretty_printer::primary_expression. + * cxx-pretty-print.c (cxx_pretty_printer::primary_expression): + Rename from pp_cxx_primary_expression. Adjust. + (pp_cxx_postfix_expression): Use pp_primary_expression. + (pp_cxx_ctor_initializer): Likewise. + (cxx_pretty_printer::cxx_pretty_printer): Do not assign to + primary_expression. + +2013-08-23 Jan Hubicka + + * cp-tree.h (struct lang_type_class): Free is_final bit. + (CLASSTYPE_FINAL): Define using TYPE_FINAL_P. + (DECL_FINAL_P): Remove. + * pt.c (instantiate_class_template_1): Guard that CLASSTYPE_FINAL + is called on CLASS_TYPE_P. + +2013-08-25 Gabriel Dos Reis + + * cxx-pretty-print.c (M_): Remove. + (pp_cxx_unqualified_id): Use translate_string instead of M_. + (pp_cxx_canonical_template_parameter): Likewise. + +2013-08-24 Gabriel Dos Reis + + * cxx-pretty-print.h (cxx_pretty_printer::id_expression): Declare. + * cxx-pretty-print.c (cxx_pretty_printer::id_expression): Rename + from pp_cxx_id_expression. Adjust. + (pp_cxx_userdef_literal): Use pp_id_expression. + (pp_cxx_primary_expression): Likewise. + (pp_cxx_direct_declarator): Likewise. + (cxx_pretty_printer::cxx_pretty_printer): Do not assign to + id_expression. + +2013-08-24 Gabriel Dos Reis + + * cxx-pretty-print.h (cxx_pretty_printer::constant): Now a member + function, overriding c_pretty_printer::constant. + * cxx-pretty-print.c (cxx_pretty_printer::constant): Rename from + pp_cxx_constant. Adjust. + (cxx_pretty_printer::cxx_pretty_printer): Do not assign to constant. + +2013-08-23 Gabriel Dos Reis + + * cp-objcp-common.c (cxx_initialize_diagnostics): Call a + destructor for the early printer. + * error.c (type_to_string): Use pp_buffer. + +2013-08-22 Paolo Carlini + + PR c++/56380 + * class.c (check_field_decls): Check for const mutable and const + reference data members. + +2013-08-22 Gabriel Dos Reis + + * error.c (init_error): Remove calls to pp_construct and + pp_cxx_pretty_printer_init. Initialize cxx_pp with placement-new. + * cxx-pretty-print.h (cxx_pretty_printer::cxx_pretty_printer): Declare. + (cxx_pretty_printer_init): Remove. + * cxx-pretty-print.c (cxx_pretty_printer::cxx_pretty_printer): + Rename from cxx_pretty_printer_init. Adjust. + * cp-objcp-common.c (cxx_initialize_diagnostics): Simplify + initialization of C++ diagnostics pretty printer. + +2013-08-21 Paolo Carlini + + * call.c (build_new_method_call_1): Use INDIRECT_REF_P. + * cp-tree.h (REFERENCE_REF_P): Likewise. + * semantics.c (finish_offsetof): Likewise. + +2013-08-21 Paolo Carlini + + PR c++/56130 + * semantics.c (finish_id_expression): Handle deprecated references. + +2013-08-20 Jason Merrill + + PR c++/58119 + * cvt.c (build_expr_type_conversion): Don't complain about a + template that can't match the desired type category. + +2013-08-20 Gabriel Dos Reis + + * error.c (pp_ggc_formatted_text): New. + (type_as_string): Use it in lieu of pp_formatted_text. + (type_as_string_translate): Likewise. + (expr_as_string): Likewise. + (decl_as_string): Likewise. + (decl_as_string_translate): Likewise. + (lang_decl_name): Likewise. + (decl_to_string): Likewise. + (expr_to_string): Likewise. + (fndecl_to_string): Likewise. + (parm_to_string): Likewise. + (type_to_string): Likewise. + (args_to_string): Likewise. + (subst_to_string): Likewise. + +2013-08-19 Balaji V. Iyer + + PR c/57490 + * cp-array-notation.c (cp_expand_cond_array_notations): Added a + check for truth values. + (expand_array_notation_exprs): Added truth values case. Removed an + unwanted else. Added for-loop to walk through subtrees in default + case. + * call.c (build_cxx_call): Inherited the type of the array notation for + certain built-in array notation functions. + +2013-08-19 Paolo Carlini + + * parser.c (cp_parser_lambda_introducer, cp_parser_decltype_expr): + Use cp_parser_lookup_name_simple. + +2013-08-19 Paolo Carlini + + * name-lookup.h (pop_bindings_and_leave_scope): Declare. + * name-lookup.c (pop_bindings_and_leave_scope): Define. + * parser.c (cp_parser_lambda_declarator_opt, + cp_parser_direct_declarator, cp_parser_cache_defarg): Use it. + +2013-08-17 Jason Merrill + + PR c++/58083 + * name-lookup.c (push_class_level_binding_1): It's OK to push a + lambda type after the enclosing type is complete. + +2013-08-17 Gabriel Dos Reis + + * error.c (dump_scope): Add a cxx_pretty_printer parameter. + Adjust callers. + (dump_template_argument): Likewise. + (dump_template_argument_list): Likewise. + (dump_template_parameter): Likewise. + (dump_template_bindings): Likewise. + (dump_alias_template_specialization): Likewise. + (dump_type): Likewise. + (dump_typename): Likewise. + (dump_aggr_type): Likewise. + (dump_type_prefix): Likewise. + (dump_type_suffix): Likewise. + (dump_global_iord): Likewise. + (dump_simple_decl): Likewise. + (dump_decl): Likewise. + (dump_template_decl): Likewise. + (dump_function_decl): Likewise. + (dump_parameters): Likewise. + (dump_ref_qualifier): Likewise. + (dump_exception_spec): Likewise. + (dump_function_name): Likewise. + (dump_template_parms): Likewise. + (dump_call_expr_args): Likewise. + (dump_aggr_init_expr_args): Likewise. + (dump_expr_list): Likewise. + (dump_expr_init_vec): Likewise. + (dump_expr): Likewise. + (dump_binary_op): Likewise. + (dump_unary_op): Likewise. + +2013-08-14 Paolo Carlini + + PR c++/51912 + * cp-tree.h (LOOKUP_NO_NON_INTEGRAL): Add. + * decl.c (case_conversion): Use it. + * call.c (standard_conversion): Likewise. + (implicit_conversion): Adjust. + +2013-08-13 Adam Butcher + + * pt.c: Grammar fix in comments ("it's" to "its"). + +2013-08-12 Paolo Carlini + + * decl.c (warn_extern_redeclared_static, duplicate_decls, + check_elaborated_type_specifier): Use error + inform. + * friend.c (make_friend_class): Likewise. + * semantics.c (finish_id_expression): Likewise. + +2013-08-09 Paolo Carlini + + Revert: + 2013-08-07 Paolo Carlini + + PR c++/46206 + * name-lookup.c (lookup_name_real_1): Handle iter->type before + iter->value. + +2013-08-07 Paolo Carlini + + PR c++/46206 + * name-lookup.c (lookup_name_real_1): Handle iter->type before + iter->value. + +2013-08-06 Caroline Tice + + * Make-lang.in (*CXX_AND_OBJCXX_OBJS): Add vtable-class-hierarchy.o to + list. + (vtable-class-hierarchy.o): Add build rule. + * cp-tree.h (vtv_start_verification_constructor_init_function): New + extern function decl. + (vtv_finish_verification_constructor_init_function): New extern + function decl. + (build_vtbl_address): New extern function decl. + (get_mangled_vtable_map_var_name): New extern function decl. + (vtv_compute_class_hierarchy_transitive_closure): New extern function + decl. + (vtv_generate_init_routine): New extern function decl. + (vtv_save_class_info): New extern function decl. + (vtv_recover_class_info): New extern function decl. + (vtv_build_vtable_verify_fndecl): New extern function decl. + * class.c (finish_struct_1): Add call to vtv_save_class_info if + flag_vtable_verify is true. + * config-lang.in: Add vtable-class-hierarchy.c to gtfiles list. + * vtable-class-hierarchy.c: New file. + * mangle.c (get_mangled_vtable_map_var_name): New function. + * decl2.c (start_objects): Update function comment. + (cp_write_global_declarations): Call vtv_recover_class_info, + vtv_compute_class_hierarchy_transitive_closure and + vtv_build_vtable_verify_fndecl, before calling + finalize_compilation_unit, and call vtv_generate_init_rount after, IFF + flag_vtable_verify is true. + (vtv_start_verification_constructor_init_function): New function. + (vtv_finish_verification_constructor_init_function): New function. + * init.c (build_vtbl_address): Remove static qualifier from function. + +2013-08-06 Jason Merrill + + PR c++/57825 + * tree.c (strip_typedefs) [METHOD_TYPE]: Preserve ref-qualifier. + +2013-08-05 Paolo Carlini + + PR c++/58080 + * typeck.c (cp_pointer_int_sum): Add tsubst_flags_t parameter. + (cp_build_binary_op): Adjust. + +2013-08-04 Gabriel Dos Reis + + * cxx-pretty-print.h (pp_c_base): Remove. + (cxx_pretty_printer): Derive from c_pretty_printer. + Adjust macros using pp_c_base. + * cp-objcp-common.c (cxx_initialize_diagnostics): Do not call pp_base. + * cxx-pretty-print.c (pp_cxx_nonconsecutive_character): Likewise. + (pp_cxx_colon_colon): Likewise. + (pp_cxx_separate_with): Likewise. + (pp_cxx_storage_class_specifier): Do not call pp_c_base. + (pp_cxx_expression_list): Likewise. + (pp_cxx_space_for_pointer_operator): Likewise. + (pp_cxx_init_declarator): Likewise. + (pp_cxx_call_argument_list): Likewise. + (pp_cxx_constant): Likewise. + (pp_cxx_postfix_expression): Likewise. + (pp_cxx_new_expression): Likewise. + (pp_cxx_unary_expression): Likewise. + (pp_cxx_cast_expression): Likewise. + (pp_cxx_conditional_expression): Likewise. + (pp_cxx_assignment_expression): Likewise. + (pp_cxx_expression): Likewise. + (pp_cxx_function_specifier): Likewise. + (pp_cxx_decl_specifier_seq): Likewise. + (pp_cxx_simple_type_specifier): Likewise. + (pp_cxx_type_specifier_seq): Likewise. + (pp_cxx_ptr_operator): Likewise. + (pp_cxx_parameter_declaration_clause): Likewise. + (pp_cxx_direct_declarator): Likewise. + (pp_cxx_direct_abstract_declarator): Likewise. + (pp_cxx_type_id): Likewise. + (pp_cxx_statement): Likewise. + (pp_cxx_pretty_printer_init): Tidy. + * error.c (init_error): Do not use pp_base. + (dump_aggr_type): Likewise. + (dump_type_prefix): Likewise. + (dump_type_suffix): Likewise. + (dump_global_iord): Likewise. + (dump_decl): Likewise. + (dump_function_decl): Likewise. + (dump_ref_qualifier): Likewise. + (reinit_cxx_pp): Likewise. + (decl_as_dwarf_string): Likewise. + (lang_decl_dwarf_name): Likewise. + (type_to_string): Likewise. + (cv_to_string): Likewise. + (cxx_print_error_function): Likewise. + (cp_diagnostic_starter): Likewise. + (cp_diagnostic_finalizer): Likewise. + (cp_print_error_function): Likewise. + (print_instantiation_context): Likewise. + (cp_printer): Likewise. + +2013-08-03 Gabriel Dos Reis + + * error.c (dump_type_prefix): Use specialized pretty printer + functions instead of pp_string or operators and punctuators. + (dump_decl): Likewise. + (dump_expr): Likewise. + +2013-08-03 Jason Merrill + + DR 1286 + * pt.c (get_underlying_template): New. + (convert_template_argument, lookup_template_class_1): Use it. + + DR 1430 + PR c++/51239 + * pt.c (pack_expansion_args_count): Rename from + any_pack_expanson_args_p. + (coerce_template_parms): Reject pack expansion to + non-pack template parameter of alias template. + +2013-08-03 Gabriel Dos Reis + + * error.c (dump_aggr_type): Use specialized pretty printer + functions instead of pp_character. + (dump_type_prefix): Likewise. + (dump_simple_decl): Likewise. + (type_to_string): Likewise. + +2013-08-02 Paolo Carlini + + * cp-tree.h (finish_stmt): Do not declare. + * decl.c (finish_stmt): Do not define. + * parser.c (cp_parser_expression_statement, + cp_parser_declaration_statement, + cp_parser_transaction_cancel): Don't call finish_stmt. + * semantics.c (finish_expr_stmt, finish_if_stmt, + finish_while_stmt, finish_do_stmt, finish_return_stmt, + finish_for_stmt, finish_switch_stmt, finish_compound_stmt, + finish_transaction_stmt): Likewise. + +2013-08-01 Fabien Chêne + + PR c++/54537 + * cp-tree.h: Check OVL_USED with OVERLOAD_CHECK. + * name-lookup.c (do_nonmember_using_decl): Make sure we have an + OVERLOAD before calling OVL_USED. Call diagnose_name_conflict + instead of issuing an error without mentioning the conflicting + declaration. + +2013-07-31 Paolo Carlini + + * parser.c (cp_parser_sizeof_pack): Check cp_parser_identifier + return value for error_mark_node. + +2013-07-30 Paolo Carlini + + PR c++/57673 + * parser.c (cp_parser_cache_defarg): In an NSDMI don't stop when + token->type == CPP_ELLIPSIS. + +2013-07-30 Paolo Carlini + + PR c++/57947 + * call.c (is_std_init_list): Return false if cxx_dialect == cxx98. + +2013-07-29 Jason Merrill + + PR c++/57901 + * semantics.c (build_data_member_initialization, constexpr_fn_retval): + Use break_out_target_exprs instead of unshare_expr. + +2013-07-29 Paolo Carlini + + PR c++/57948 + * call.c (initialize_reference): Don't crash when reference_binding + returns a conv with conv->kind == ck_ambig. + +2013-07-29 Jason Merrill + + * mangle.c (write_name): Check for null context. + (write_unscoped_name): Allow PARM_DECL context. + +2013-07-25 Paolo Carlini + + PR c++/57981 + * decl.c (check_default_argument): Take a tsubst_flags_t parameter. + (grokparms): Adjust. + * parser.c (cp_parser_late_parse_one_default_arg): Likewise. + * pt.c (tsubst_default_argument, tsubst_default_arguments): Take + a tsubst_flags_t parameter. + (tsubst_decl): Adjust. + * call.c (convert_default_arg): Likewise. + * cp-tree.h (check_default_argument, tsubst_default_argument): + Update declarations. + +2013-07-25 Paolo Carlini + + PR c++/57880 + * parser.c (cp_parser_operator, case CPP_WSTRING, CPP_STRING16, + CPP_STRING32, CPP_UTF8STRING, CPP_WSTRING_USERDEF, + CPP_STRING16_USERDEF, CPP_STRING32_USERDEF, CPP_UTF8STRING_USERDEF): + Fix string_len management, tidy. + +2013-07-24 Paolo Carlini + + PR c++/57942 + * typeck.c (ptr_reasonably_similar): Use COMPARE_STRICT if either + target type is incomplete; return a bool, not an int. + * cp-tree.h (ptr_reasonably_similar): Adjust declaration. + +2013-07-22 Paolo Carlini + + * cp-tree.h (DERIVED_FROM_P): Pass tf_none to lookup_base, not + tf_warning_or_error. + +2013-07-21 Ondřej Bílka + + * class.c: Fix typos. + * cp-array-notation.c: Likewise. + * cp-objcp-common.c: Likewise. + * decl.c: Likewise. + * init.c: Likewise. + * mangle.c: Likewise. + * parser.c: Likewise. + * pt.c: Likewise. + * semantics.c: Likewise. + +2013-07-14 Adam Butcher + + * semantics.c (build_lambda_expr), + (build_lambda_object), (begin_lambda_type), (lambda_return_type), + (lambda_function), (lambda_capture_field_type), (is_capture_proxy), + (is_normal_capture_proxy), (insert_capture_proxy), + (insert_pending_capture_proxies), (lambda_proxy_type), + (build_capture_proxy), (vla_capture_type), + (register_capture_members), (add_default_capture), + (lambda_expr_this_capture), (maybe_resolve_dummy), + (nonlambda_method_basetype), (maybe_add_lambda_conv_op) and + (is_lambda_ignored_entity): Moved definitions into ... + * lambda.c: ... this new file. + +2013-07-14 Marc Glisse + + * call.c (build_conditional_expr_1): Handle the case with 1 vector + and 2 scalars. Call save_expr before building a vector. + * typeck.c (cp_build_binary_op): Check complain before complaining. + +2013-07-13 Lubos Lunak + + PR c++/55203 + * init.c (build_aggr_init): Check for warn_unused attribute. + * decl.c (poplevel): Likewise. + +2013-07-13 Jason Merrill + + PR c++/57402 + * init.c (build_vec_init): Use {} for arrays of class type. + (build_vec_delete): Don't take the address of the array. + + PR c++/57793 + * class.c (layout_class_type): Check for too-large class. + + * call.c (can_convert): Allow user-defined conversions. + (can_convert_standard): New. + * cp-tree.h: Declare it. + * cvt.c (convert_to_reference): Use it. + * pt.c (convert_nontype_argument): Likewise. + * search.c (check_final_overrider): Likewise. + Don't worry about user-defined conversions. + +2013-07-10 Paolo Carlini + + PR c++/57869 + * typeck.c (build_reinterpret_cast_1): With -Wconditionally-supported + warn about casting between pointer-to-function and pointer-to-object. + +2013-07-09 Jason Merrill + + PR c++/57402 + * init.c (build_vec_init): Don't take shortcuts when initializing + a VLA. + + PR c++/57471 + * parser.c (cp_parser_sizeof_pack): Clear parser scopes. + + PR c++/57658 + * semantics.c (finish_id_expression): Return the id for an + unevaluated outer variable. + + PR c++/57526 + * semantics.c (lambda_capture_field_type): Build a DECLTYPE_TYPE + if the variable type uses 'auto'. + + PR c++/57437 + * typeck.c (check_return_expr): Lambda proxies aren't eligible + for nrv or return by move. + + PR c++/57532 + * parser.c (cp_parser_ref_qualifier_opt): Don't tentatively parse + a ref-qualifier in C++98 mode. + + PR c++/57545 + * pt.c (convert_nontype_argument) [INTEGER_CST]: Force the + argument to have the exact type of the parameter. + + PR c++/57551 + * semantics.c (cxx_eval_indirect_ref): Don't try to look through + a POINTER_PLUS_EXPR for type punning diagnostic. + + PR c++/57831 + * pt.c (tsubst_copy): Handle USING_DECL. + +2013-07-09 Marc Glisse + + PR c++/53094 + * semantics.c (cxx_eval_bit_field_ref): Handle VECTOR_CST. + +2013-07-09 Marc Glisse + + PR c++/53000 + * call.c (build_conditional_expr_1): Preserve xvalues. + +2013-07-09 Paolo Carlini + + PR c++/51786 + * parser.c (cp_parser_simple_declaration): Before calling shadow_tag + also check declares_class_or_enum. + +2013-07-08 Jason Merrill + + PR c++/57550 + * pt.c (fn_type_unification): Only defer during substitution. + (type_unification_real): Defer during defarg substitution, + add checks parm to pass back deferred checks. + (unify, do_auto_deduction): Adjust. + * semantics.c (reopen_deferring_access_checks): New. + * cp-tree.h: Declare it. + +2013-07-06 Paolo Carlini + + PR c++/28262 + * parser.c (cp_parser_init_declarator): If we are parsing a typedef + set parser->default_arg_ok_p to false before cp_parser_declarator. + +2013-07-05 Paolo Carlini + + PR c++/14263 + * class.c (build_base_path): Improve diagnostic. + +2013-07-04 Paolo Carlini + + PR c++/38634 + * decl.c (start_preparsed_function): Return a bool, false if + push_template_decl fails. + (start_function): Adjust. + * cp-tree.h: Update. + +2013-07-03 Jakub Jelinek + + PR c++/57771 + * parser.c (cp_parser_postfix_expression) + Temporarily set parser->greater_than_is_operator_p for + cp_parser_expression and restore from saved value afterwards. + +2013-06-28 Ed Smith-Rowland <3dw4rd@verizon.net> + + * cp-tree.h (UDLIT_OP_ANSI_PREFIX): Remove space. + * parser.c (cp_parser_operator()): Parse user-defined string + literal as literal operator. + +2013-06-28 Paolo Carlini + + PR c++/57645 + * class.c (deduce_noexcept_on_destructors): Save, set, and restore + TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t) around the main loop over the + destructors. + +2013-06-28 Balaji V. Iyer + + * parser.c (cp_parser_array_notation): Removed rejection array notation + of type function pointers. Added handling of array expressions when + Cilk Plus is enabled. Took out type-checking. + (cp_parser_postfix_open_square_expression): Moved normal array expr. + parsing into cp_parser_array_notation when cilkplus is enabled. + (cp_parser_compound_statement): Removed expansion of array notations. + (cp_parser_ctor_initializer_opt_and_function_body): Likewise. + (cp_parser_function_definition_after_declarator): Likewise. + (cp_parser_selection_statement): Removed error reporting. + (cp_parser_iteration_statement): Likewise. + (cp_parser_direct_declarator): Removed error checking/reporting if + array notations are used in the declarator. + * pt.c (instantiate_decl): Likewise. + (type_unification_real): Removed a check for ARRAY_NOTATION_REF. + (cxx_eval_constant_expression): Removed ARRAY_NOTATION_REF case. + (potential_constant_expression_1): Returned false for + ARRAY_NOTATION_REF case. + * cp-gimplify.c (cp_genericize): Added expansion of array notation + expressions here. + * cp-array-notation.c (make_triplet_val_inv): Removed loc and cry + parameters. Replaced build_decls with get_temp_regvar with type as + ptrdiff. + (create_array_refs): Made the type-casting to ptrdiff_type. + (replace_invariant_var): Added a check for void return type before + creating new var. Replaced build_decl and build_min_nt_loc with + get_temp_regvar. + (expand_an_in_modify_expr): Ditto. Replaced body of redundant else + with gcc_unreachable. Removed few unwanted checks. Made induction + variable type as ptrdiff_type. Removed loc and complain arguments + passed into make_triplet_val_inv. Replaced all modify expression's + code from NOP EXPR to INIT EXPR. Replaced all forceful appending + into stmt. list with the non-forceful one. Replaced some integer + conversion and equality-checking to using tree_int_cst_equal. + (expand_sec_reduce_builtin): All changes mentioned in above function + expand_an_in_modify_expr. Made the new variable type of + SEC_REDUCE_ANY/ALL_{NON}ZERO intrinsic functions as bool. + (expand_array_notation_exprs): Removed SWITCH_EXPR case. Moved all + the error reporting from parser to this function. Removed unwanted + statements and checks from SWITCH_STMT, WHILE_STMT, and DO_STMT cases. + (cilkplus_an_triplet_types_ok_p): Removed rejection of array notation + in function pointers. + (cp_expand_cond_array_notations): Added a new if statements to check + if condition has a zero rank. If so, then just return. + (expand_return_expr): Added a check for return expressions with a rank. + Replaced get_tmp_regvar with a create_temporary_var. + (build_array_notation_ref): Simplified and removed unwanted if-stmts. + Moved common code outside if-statements. Moved type-checking from + parser to here. + * semantics.c (finish_return_stmt): Removed a check for return exprs. + with a rank. + * call.c (convert_like_real): Removed a check for array notation + expression in a function. + (build_over_call): Likewise. + (magic_varargs_p): Added a check for builtin array notation function. + Made this function non-static and removed its prototype. + * cp-tree.h (magic_varargs_p): New prototype. + * typeck.c (cp_build_function_call_vec): Removed automatic setting of + nargs to the param->length when builtin reduction function is used. + (convert_arguments): Replaced check for a constant_p function with + margic_varargs_p function call. + (cp_build_binary_op): Removed calling of the function + find_correct_array_notation_type. + (cp_build_addr_expr_1): Removed an unwanted if-statement. + (convert_for_assignment): Removed automatic return of rhs when array + notation builtin function is used. + +2013-06-28 Paolo Carlini + + PR c++/57682 + * parser.c (cp_parser_save_member_function_body): Handle correctly + curly braces in function-try-block mem-initializers. + +2013-06-27 Marc Glisse + + PR c++/57509 + * typeck.c (cp_build_vec_perm_expr): New function. + * cp-tree.h: Declare it. + * parser.c (cp_parser_postfix_expression): Call it. + * pt.c (tsubst_copy): Handle VEC_PERM_EXPR. + (tsubst_copy_and_build): Likewise. + +2013-06-27 Marc Glisse + + PR c++/57172 + * pt.c (more_specialized_fn): If both arguments are references, + give priority to an lvalue. + +2013-06-26 Jason Merrill + + * typeck2.c (store_init_value): Diagnose a non-constant + initializer for in-class static. + + PR c++/57408 + * semantics.c (add_capture): Set type to error_mark_node after + error. + +2013-06-25 Ed Smith-Rowland <3dw4rd@verizon.net> + + PR c++/57640 + * parser.c (cp_parser_unqualified_id): Add declarator_p to checks + to trigger warning, (cp_literal_operator_id): Remove bogus TODO comment. + +2013-06-22 Gabriel Dos Reis + + * call.c (null_ptr_cst_p): Use cxx11 in lieu of cxx0x. + * class.c (add_implicitly_declared_members): Likewise. + (check_field_decl): Likewise. + (finalize_literal_type_property): Likewise. + (check_bases_and_members): Likewise. + * decl.c (poplevel): Likewise. + (case_conversion): Likewise. + (check_initializer): Likewise. + (grokfndecl): Likewise. + (check_static_variable_definition): Likewise. + (compute_array_index_type): Likewise. + (grokdeclarator): Likewise. + (build_enumerator): Likewise. + * friend.c (make_friend_class): Likewise. + * lex.c (init_reswords): Likewise. + * method.c (synthesized_method_walk): Likewise. + (implicitly_declare_fn): Likewise. + * parser.c (cp_parser_diagnose_invalid_type_name): Likewise. + (cp_parser_constant_expression): Likewise. + (cp_parser_for_init_statement): Likewise. + (cp_parser_block_declaration): Likewise. + (cp_parser_type_name): Likewise. + (cp_parser_enum_specifier): Likewise. + (cp_parser_enumerator_list): Likewise. + (cp_parser_member_declaration): Likewise. + (cp_nth_tokens_can_be_std_attribute_p): Likewise. + (cp_parser_template_declaration_after_export): Likewise. + * pt.c (convert_nontype_argument_function): Likewise. + (convert_nontype_argument): Likewise. + (convert_template_argument): Likewise. + (tsubst_copy_and_build): Likewise. + (build_non_dependent_expr): Likewise. + * semantics.c (non_const_var_error): Likewise. + (potential_constant_expression_1): Likewise. + * tree.c (lvalue_kind): Likewise. + (build_vec_init_expr): Likewise. + (cast_valid_in_integral_constant_expression_p): Likewise. + * typeck.c (build_x_conditional_expr): Likewise. + * typeck2.c (check_narrowing): Likewise. + +2013-06-21 Balaji V. Iyer + + * cp-array-notation.c (cp_length_mismatch_in_expr_p): Remove. + (expand_an_in_modify_expr): Changed a function call from the above + removed function to length_mismatch_in_expr_p. + +2013-06-21 Balaji V. Iyer + + * call.c (convert_like_real): Added a check if array notation is present + in expression. If so, then no conversion of arguments is necessary. + (build_over_call): Likewise. + * typeck.c (cp_build_function_call_vec): Likewise. + (convert_for_assignment): Likewise. + (cp_build_array_ref): Reject array notations with a rank greater than 1 + as an array's index. + (cp_build_binary_op): If array notations are preent in op, then call + find_correct_array_notation_type. + (cp_build_addr_expr_1): Handle ARRAY_NOTATION_REF similar to ARRAY_REF. + * cp-array-notation.c: New file. + * cp-objcp-common.c (cp_common_init_ts): Marked ARRAY_NOTATION_REF tree + as typed. + * cp-tree.h (fix_array_notation_exprs): New prototype. + * semantics.c (finish_return_stmt): Reject array notations as + return value. + (cxx_eval_constant_expression): Added ARRAY_NOTATION_REF case. + (potential_constant_expression_1): Likewise. + * tree.c (lvalue_kind): Likewise. + * error.c (dump_decl): Likewise. + (dump_expr): Likewise. + * pt.c (ARRAY_NOTATION_REF): Likewise. + (type_unification_real): Do not unify any arguments if array notations + are found in arg. + (instantiate_decl): Added a check for array notaitons inside the + function body. If so, then expand them. + * parser.c (cp_parser_array_notation): New function. + (cp_parser_postfix_open_square_expression): Added a check for colons + inside square braces. If found, then handle the array access as an + array notation access. Also, disable auto-correction from a single + colon to scope when Cilk Plus is enabled. + (cp_parser_compound_statement): Added a check for array notations + inside the statement. If found, then expand them. + (cp_parser_ctor_initializer_opt_and_function_body): Likewise. + (cp_parser_function_definition_after_declarator): Likewise. + (cp_parser_selection_statement): Searched for array notations inside + condition. If so, then emit an error. + (cp_parser_iteration_statement): Likewise. + (cp_parser_direct_declarator): Reject array notations inside a + variable or array declaration. + * Make-lang.in (CXX_AND_OBJCXX_OBJS): Added cp/cp-array-notation.o. + +2013-06-20 Jason Merrill + + PR c++/55149 + * decl.c (compute_array_index_type): Don't reject VLAs in SFINAE + context if we're in C++14 mode. + * tree.c (array_of_runtime_bound_p): Return true for a dependent + bound that is not potentually constant. + * cp-tree.h (DECL_VLA_CAPTURE_P, REFERENCE_VLA_OK): New. + * pt.c (tsubst) [REFERENCE_TYPE]: Check REFERENCE_VLA_OK. + * semantics.c (build_lambda_object): Don't rvalue a VLA capture. + (build_capture_proxy): Set REFERENCE_VLA_OK. + (vla_capture_type): Make it a proper C++ class. + (add_capture): Set DECL_VLA_CAPTURE_P. Don't pre-digest the + initializer. + + * decl.c (compute_array_index_type): Use size_one_node. + + * pt.c (process_partial_specialization): Build a TEMPLATE_DECL for + a partial specialization. + (tsubst_decl): Don't clobber CLASSTYPE_TI_TEMPLATE of a partial + specialization. + (most_specialized_class): Adjust. + + * cp-tree.h (DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT) + (DECL_TEMPLATE_INSTANTIATIONS, DECL_TEMPLATE_SPECIALIZATIONS): Use + TEMPLATE_DECL_CHECK. + +2013-06-19 Manuel Lopez-Ibanez + + PR c++/57638 + * pt.c (unify, [TEMPLATE_PARM_INDEX]): Pass to unify_type_mismatch + TREE_TYPE (arg), not arg itself. + +2013-06-18 Paolo Carlini + + PR c++/53211 + * pt.c (type_dependent_expression_p): Handle an array of unknown + bound depending on a variadic parameter. + * parser.c (cp_parser_range_for): Revert PR56794 changes. + +2013-06-17 Richard Biener + + * cp-tree.h (ANON_AGGRNAME_FORMAT, ANON_AGGRNAME_P): Move to tree.h. + +2013-06-17 Paolo Carlini + + PR c++/16128 + * parser.c (cp_parser_expression_statement): Check whether + cp_parser_expression returns error_mark_node. + +2013-06-14 Paolo Carlini + + PR c++/51413 + * semantics.c (finish_offsetof): Handle INDIRECT_REF as expr. + +2013-06-14 Paolo Carlini + + PR c++/57599 + * rtti.c (build_dynamic_cast_1): In case of cast to an unambiguous + accessible base simply forward to build_static_cast. + +2013-06-12 Paolo Carlini + + PR c++/38958 + * decl.c (poplevel): For the benefit of -Wunused-variable see + through references. + +2013-06-12 Paolo Carlini + + * parser.c (cp_parser_nested_name_specifier_opt): Fix typo in comment. + +2013-06-12 Paolo Carlini + + PR c++/42021 + * parser.c (cp_parser_nested_name_specifier_opt): Avoid emitting + again diagnostic already emitted by cp_parser_lookup_name. + +2013-06-11 Jan Hubicka + + PR c++/57551 + * cp/pt.c (mark_decl_instantiated): Do not export explicit + instantiations of anonymous namespace templates. + +2013-06-10 Jason Merrill + + * name-lookup.c (add_decl_to_level): Add decls in an anonymous + namespace to static_decls. + +2013-06-07 Sriraman Tallam + + PR c++/57548 + * call.c (build_over_call): Check if current_function_decl is + NULL. + +2013-06-07 Paolo Carlini + + PR c++/53658 + * pt.c (lookup_template_class_1): Consistently use TYPE_MAIN_DECL, + not TYPE_STUB_DECL, to access the _DECL for a _TYPE. + +2013-06-06 Jason Merrill + + PR c++/55520 + * semantics.c (add_capture): Diagnose capture of variable-size + type that is not a C++1y array of runtime bound. + + * decl.c (grokdeclarator): Keep a decl with error type. + (grokfield, grokbitfield): Likewise. + * pt.c (instantiate_class_template_1): Likewise. + (tsubst_decl): Drop redundant error. + * class.c (walk_subobject_offsets): Handle erroneous fields. + * typeck2.c (process_init_constructor_record): Likewise. + +2013-06-05 Paolo Carlini + + PR c++/51908 + * parser.c (cp_parser_postfix_expression [RID_*CAST]): Set + parser->in_type_id_in_expr_p before calling cp_parser_type_id. + +2013-06-03 Jan Hubicka + + * decl2.c (maybe_make_one_only): Use forced_by_abi instead of + mark_decl_referenced. + (mark_needed): Likewise. + +2013-06-03 Jason Merrill + + * class.c (mark_type_abi_tags): New. + (check_abi_tags): Use it. + +2013-06-03 Paolo Carlini + + PR c++/57419 + * decl2.c (mark_used): Add overload taking a tsubst_flags_t too. + * semantics.c (finish_qualified_id_expr): Use it. + * cp-tree.h: Update. + +2013-06-01 Jan Hubicka + + * decl2.c (cp_write_global_declarations): Replace same_body_alias + by symbol.cpp_implicit_alias. + +2013-05-30 Jason Merrill + + PR c++/57404 + * cp-lang.c (cp_classify_record): Handle structs without + TYPE_LANG_SPECIFIC. + + PR c++/52377 + * class.c (common_enclosing_class): New. + * cp-tree.h: Declare it. + * init.c (sort_mem_initializers): Don't splice out a union member + with an NSDMI. + +2013-05-29 Jan Hubicka + + * tree.c (cp_fix_function_decl_p): Update for new symtab flags. + * decl2.c )var_finalized_p, cp_write_global_declarations): Likewise. + +2013-05-25 Paolo Carlini + + PR c++/25666 + * decl2.c (check_classfn): Check for destructors declared as member + templates. + +2013-05-24 Jason Merrill + + PR c++/56971 + * pt.c (any_template_arguments_need_structural_equality_p): A + TEMPLATE_TEMPLATE_PARM can require structural type comparison. + +2013-05-24 Paolo Carlini + + PR c++/19618 + * class.c (check_bitfield_decl): Warn for bool and enum bitfields + with width exceeding the type. + +2013-05-24 Jason Merrill + + PR c++/57391 + * semantics.c (cxx_eval_constant_expression): Handle FMA_EXPR. + (cxx_eval_trinary_expression): Rename from cxx_eval_vec_perm_expr. + +2013-05-23 Jason Merrill + + PR c++/57388 + * tree.c (build_ref_qualified_type): Clear + FUNCTION_RVALUE_QUALIFIED for lvalue ref-qualifier. + +2013-05-22 Jason Merrill + + PR c++/56930 + * call.c (convert_like_real): Use cp_convert_and_check. + * cvt.c (cp_convert_and_check): Use maybe_constant_value. + * semantics.c (cxx_eval_constant_expression): Handle LTGT_EXPR. + (potential_constant_expression_1): Handle OMP_ATOMIC*. + + PR c++/56915 + * semantics.c (maybe_add_lambda_conv_op): Give up if the call op + isn't defined. + +2013-05-22 Paolo Carlini + + PR c++/57352 + * parser.c (cp_parser_conversion_type_id): Set up + parser->type_definition_forbidden_message before calling + cp_parser_type_specifier_seq. + +2013-05-22 Paolo Carlini + + PR c++/57211 + * method.c (defaultable_fn_check): Avoid do_warn_unused_parameter + warnings about defaulted functions. + +2013-05-21 Paolo Carlini + + * call.c (build_conditional_expr_1): Add location_t parameter. + (build_conditional_expr): Likewise. + * typeck.c (rationalize_conditional_expr, cp_build_array_ref, + get_member_function_from_ptrfunc, build_x_conditional_expr, + cp_build_modify_expr): Update. + * init.c (build_new_1): Likewise. + * cp-tree.h: Update declaration. + +2013-05-20 Jason Merrill + + PR c++/57016 + * pt.c (instantiation_dependent_r) [TRAIT_EXPR]: Only check type2 + if there is one. + + PR c++/57102 + * decl.c (fndecl_declared_return_type): Also look in + DECL_SAVED_FUNCTION_DATA. + +2013-05-20 Paolo Carlini + + PR c++/12288 + * parser.c (cp_parser_parameter_declaration): Check return value + of cp_parser_parse_and_diagnose_invalid_type_name. + +2013-05-20 Jason Merrill + + PR c++/57319 + * class.c (vbase_has_user_provided_move_assign): New. + * method.c (synthesized_method_walk): Check it. + * cp-tree.h: Declare it. + + PR c++/57325 + * tree.c (build_cplus_array_type): Copy layout info if element + type is complete. + +2013-05-20 Paolo Carlini + + PR c++/23608 + * call.c (build_new_op_1): Propagate loc to cp_build_binary_op. + +2013-05-20 Jason Merrill + + PR c++/57317 + * decl2.c (determine_visibility): Use PRIMARY_TEMPLATE_P to decide + whether a template has its own args. + +2013-05-20 Paolo Carlini + + PR c++/57327 + * pt.c (unify_no_common_base): Swap arg and parm arguments to inform. + +2013-05-20 Paolo Carlini + + PR c++/10207 + * parser.c (cp_parser_postfix_expression): Use cp_parser_braced_list + instead of cp_parser_initializer_list for compound-literals. + +2013-05-20 Marc Glisse + + PR c++/57175 + * typeck.c (check_return_expr): Reverse the alignment comparison. + +2013-05-17 Paolo Carlini + + PR c++/18126 + * parser.c (cp_parser_sizeof_operand): As a GNU Extension, parse + correctly sizeof compound-literal; update comments. + +2013-05-16 Marc Glisse + + * call.c (build_conditional_expr_1): Use cp_build_binary_op + instead of directly calling fold_build2. + +2013-05-16 Jason Merrill + + * Make-lang.in (cc1plus$(exeext)): Use link mutex. + + PR c++/57279 + * decl.c (grokdeclarator): Allow member function qualifiers in + TYPENAME context in C++11 mode. + +2013-05-16 Dodji Seketeli + + PR c++/56782 - Regression with empty pack expansions + * pt.c (use_pack_expansion_extra_args_p): When at least a + parameter pack has an empty argument pack, and another parameter + pack has no argument pack at all, use the PACK_EXPANSION_EXTRA + mechanism. + +2013-05-15 Paolo Carlini + + * name-lookup.c (pushdecl_maybe_friend_1): Replace pairs of + warning_at and permerror with warning_at/inform and permerror/ + inform, respectively. + +2013-05-15 Paolo Carlini + + PR c++/31952 + * name-lookup.c (pushdecl_maybe_friend_1): Diagnose illegal + redeclarations. + +2013-05-14 Jason Merrill + + PR c++/57243 + * parser.c (cp_parser_range_for): Call complete_type. + + PR c++/57041 + * pt.c (tsubst_copy_and_build): Don't recur into a designator. + +2013-05-14 Paolo Carlini + + PR c++/53903 + * method.c (defaulted_late_check): Check for compatible exception + specification out of class explicitly defaulted functions too. + +2013-05-14 Jason Merrill + + PR c++/56998 + * semantics.c (potential_constant_expression_1): Make sure the + called function is potentially constant. + * call.c (null_ptr_cst_p): Revert earlier change. + +2013-05-13 Jason Merrill + + PR c++/56998 + * call.c (null_ptr_cst_p): An expression with side-effects can't + be a C++03 null pointer constant. + + PR c++/57041 + * decl.c (reshape_init_class): Handle error_mark_node. + + PR c++/57254 + * typeck.c (merge_types): Propagate ref-qualifier + in METHOD_TYPE case. + + PR c++/57253 + * decl.c (grokdeclarator): Apply ref-qualifier + in the TYPENAME case. + + PR c++/57252 + * decl.c (decls_match): Compare ref-qualifiers. + +2013-05-10 Jason Merrill + + PR c++/57196 + * pt.c (convert_template_argument): Use dependent_template_arg_p, + not uses_template_parms. + + PR c++/57047 + * semantics.c (cxx_fold_indirect_ref): Fix thinko. + + PR c++/55149 + * semantics.c (add_capture): Error rather than abort on copy + capture of VLA. + * typeck.c (maybe_warn_about_returning_address_of_local): Don't + warn about capture proxy. + +2013-05-09 Jason Merrill + + * decl.c (cp_finish_decl): Only check VLA bound in C++1y mode. + + PR c++/57222 + * pt.c (lookup_template_class_1): Handle getting a template + template parameter as D1. + + N3639 C++1y VLA diagnostics + * decl.c (grokdeclarator): Complain about reference, pointer, or + typedef to VLA. + (create_array_type_for_decl): Complain about array of VLA. + * pt.c (tsubst): Likewise. + * rtti.c (get_tinfo_decl): Talk about "array of runtime bound". + * semantics.c (finish_decltype_type): Complain about decltype of VLA. + * typeck.c (cp_build_addr_expr_1): Complain about VLA. + (cxx_sizeof_or_alignof_type): Likewise. + + N3639 C++1y VLA support + * decl.c (compute_array_index_type): Allow VLAs in C++1y mode. + (check_array_initializer): Allow VLA init. + (reshape_init_array_1): Adjust. + (cp_finish_decl): Check for invalid VLA length. + * typeck2.c (process_init_constructor_array): Adjust. + (store_init_value): Use build_vec_init for VLAs. + * semantics.c (add_capture): Capture VLA as ptr+len. + (vla_capture_type): New. + (build_capture_proxy): Rebuild the VLA. + * typeck.c (build_simple_component_ref): Split out from... + (build_ptrmemfunc_access_expr): ...here. + * tree.c (array_of_runtime_bound_p): New. + * init.c (throw_bad_array_length): New. + (build_vec_init): Use it. + * parser.c (cp_convert_range_for): When iterating over a VLA, + use it directly rather than bind a reference. + * cp-tree.h: Declare new functions. + +2013-05-08 Jason Merrill + + * except.c (is_admissible_throw_operand_or_catch_parameter): Check + variably_modified_type_p. + (expand_start_catch_block): Mark the typeinfo used here. + * semantics.c (finish_handler_parms): Not here. + + * error.c (dump_type_suffix): Try harder on VLA length. + + Core 624/N2932 + * init.c (throw_bad_array_new_length): New. + (build_new_1): Use it. Don't warn about braced-init-list. + (build_vec_init): Use it. + * call.c (build_operator_new_call): Use it. + + PR c++/57068 + * decl.c (grokdeclarator): Warn about ref-qualifiers here. + * parser.c (cp_parser_ref_qualifier_seq_opt): Not here. + * error.c (maybe_warn_cpp0x): s/0x/11/. + +2013-05-08 Paolo Carlini + + PR c++/51226 + * parser.c (cp_parser_enum_specifier): Handle nested_name_specifier + == error_mark_node. + +2013-05-06 Marc Glisse + + * typeck.c (cp_build_binary_op): Call save_expr before + build_vector_from_val. + +2013-05-06 Paolo Carlini + + PR c++/57183 + * decl.c (cp_finish_decl): After do_auto_deduction copy the + qualifers with cp_apply_type_quals_to_decl. + +2013-05-05 Paolo Carlini + + * pt.c (convert_nontype_argument): Add missing whitespace in + error message. + +2013-05-04 Paolo Carlini + + PR c++/53745 + * decl.c (build_enumerator): Improve error message. + +2013-05-03 Paolo Carlini + + PR c++/14283 + * parser.c (cp_parser_diagnose_invalid_type_name): Improve error + messages for template types and fix column numbers. + +2013-05-01 Paolo Carlini + + PR c++/57132 + * pt.c (tsubst_copy_and_build, MODOP_EXPR): Increase / decrease + c_inhibit_evaluation_warnings around build_x_modify_expr call. + +2013-05-01 Paolo Carlini + + PR c++/57092 + * semantics.c (finish_decltype_type): Handle instantiated template + non-type arguments. + +2013-04-28 Paolo Carlini + + PR c++/56450 + * semantics.c (finish_decltype_type): Handle COMPOUND_EXPR. + +2013-04-26 Jakub Jelinek + + * error.c (cp_print_error_function): Adjust file_name_as_prefix + caller. + +2013-04-25 Jason Merrill + + PR c++/56859 + * typeck.c (cxx_alignas_expr): Handle value-dependence properly. + + PR c++/50261 + * init.c (perform_member_init): Call reshape_init. + +2013-04-24 Jason Merrill + + PR c++/53721 + * parser.c (cp_parser_postfix_dot_deref_expression): Fix thinko. + +2013-04-24 Paolo Carlini + + * typeck.c (cxx_sizeof_or_alignof_type): Change -Wpointer-arith + pedwarn to simply use OPT_Wpointer_arith. + (cp_build_unary_op): Likewise. + +2013-04-24 Jason Merrill + + N3648: init-captures are named. + * semantics.c (add_capture): Don't prepend "__" to init-captures. + (build_capture_proxy): Adjust. + * error.c (dump_simple_decl): Check DECL_NORMAL_CAPTURE_P. + + N3648: Allow braced and parenthesized initializers. + * parser.c (cp_parser_lambda_introducer): Use cp_parser_initializer. + * pt.c (tsubst) [DECLTYPE_TYPE]: Handle DECLTYPE_FOR_INIT_CAPTURE. + * semantics.c (lambda_capture_field_type): Use do_auto_deduction. + (add_capture): Collapse a parenthesized initializer into a single + expression. + * cp-tree.h (DECLTYPE_FOR_INIT_CAPTURE): New. + +2013-04-24 Paolo Carlini + + PR c++/56970 + * init.c (build_offset_ref): Add tsubst_flags_t parameter. + * semantics.c (finish_qualified_id_expr): Likewise. + (finish_id_expression): Update. + * typeck.c (cp_build_addr_expr_1): Likewise. + * pt.c (tsubst_qualified_id, resolve_nondeduced_context): Likewise. + * cp-tree.h: Update declarations. + +2013-04-22 Jason Merrill + + Core 1586 + * parser.c (cp_parser_unqualified_id): Handle ~auto. + (cp_parser_pseudo_destructor_name): Likewise. + (cp_parser_postfix_dot_deref_expression): Adjust. + (cp_lexer_nth_token_is_keyword): New. + * semantics.c (finish_pseudo_destructor_expr): Handle ~auto. + * typeck.c (lookup_destructor): Handle ~auto. + + * pt.c (fn_type_unification): Push tinst level around + type_unification_real if we aren't explaining. + * cp-tree.h (TFF_NO_TEMPLATE_BINDINGS): New. + * error.c (dump_function_decl): Respect it. + (subst_to_string): Pass it. + + PR c++/48665 + * rtti.c (get_typeid): Diagnose qualified function type. + * pt.c (tsubst) [POINTER_TYPE]: Likewise. + + * error.c (dump_aggr_type): Fix lambda detection. + (dump_simple_decl): Pretty-print capture field. + + N3323 + * cvt.c (build_expr_type_conversion): Two conversions that return + the same type aren't necessarily ambiguous. + + N3648 + * parser.c (cp_parser_lambda_introducer): Make lambda capture init + pedwarn unconditional except in C++1y mode. + + * semantics.c (potential_constant_expression_1): Don't crash on + 'this' in NSDMI. + + Core 1612 + * semantics.c (finish_id_expression): Reject capture of anonymous + union member. + + Core 1609 + * decl2.c (check_default_args): Check for pack expansion. + + * mangle.c (write_type): Mangle decltype(auto). + +2013-04-19 Jason Merrill + + N3638 changes to return type deduction + * decl.c (undeduced_auto_decl): New. + (require_deduced_type): New. + (fndecl_declared_return_type): New. + (decls_match): Use it. + (duplicate_decls): Don't check for auto return. + (grokdeclarator): Reject virtual auto. + * class.c (resolve_address_of_overloaded_function): Handle + auto function templates. + * decl2.c (mark_used): Use undeduced_auto_decl, require_deduced_type. + * cp-tree.h: Declare new fns. + * error.c (dump_function_decl): Use fndecl_declared_return_type. + * search.c (check_final_overrider): Likewise. + * pt.c (make_decltype_auto): New. + (do_auto_deduction): Require plain decltype(auto). + (is_auto): Adjust. + + DR 941 + * decl.c (duplicate_decls): Don't propagate DECL_DELETED_FN to + template specializations. + +2013-04-16 Ed Smith-Rowland <3dw4rd@verizon.net> + + Implement n3599 - Literal operator templates for strings. + * parser.c (make_string_pack (tree value)): New function. + (cp_parser_userdef_string_literal (cp_token *)): Use it + to construct calls to character string literal operator templates. + (cp_parser_template_declaration_after_export): Check for new string + literal operator template parameter form. + +2013-04-15 Jason Merrill + + * pt.c (tsubst) [DECLTYPE_TYPE]: Use tsubst_copy_and_build. + + PR c++/52748 + * pt.c (tsubst) [DECLTYPE_TYPE]: If ~id is an expression + rather than a destructor name, it isn't an unqualified-name. + (tsubst_copy_and_build): Pass down decltype_flag to operator + handling code, too. + + PR c++/56388 + * semantics.c (insert_capture_proxy): Just use index 1 in the + stmt_list_stack. + +2013-04-12 Jakub Jelinek + + * error.c (cp_print_error_function, + print_instantiation_partial_context_line, + maybe_print_constexpr_context): Colorize locus strings. + +2013-04-11 Jason Merrill + + PR c++/52748 + * parser.c (complain_flags): New. + (cp_parser_postfix_expression): Use it. + (cp_parser_unary_expression): Likewise. + (cp_parser_binary_expression): Likewise. + (cp_parser_assignment_expression): Likewise. + (cp_parser_expression): Likewise. + (cp_parser_postfix_open_square_expression): Take decltype_p. + (cp_parser_builtin_offsetof): Adjust. + (cp_convert_range_for): Pass complain to finish_unary_op_expr. + * decl2.c (grok_array_decl): Add decltype_p parm. + * cp-tree.h: Adjust prototype. + * semantics.c (finish_unary_op_expr): Add complain parm. + +2013-04-11 Jakub Jelinek + + PR c++/56895 + * call.c (null_ptr_cst_p): Call fold_non_dependent_expr_sfinae before + calling maybe_constant_value for C++98. + +2013-04-11 Jason Merrill + + PR c++/56901 + * semantics.c (lambda_capture_field_type, lambda_proxy_type): + Strip references before checking WILDCARD_TYPE_P. + +2013-04-11 Paolo Carlini + + * call.c (build_conditional_expr_1, build_over_call): Protect + error calls with complain & tf_error. + * typeck.c (finish_class_member_access_expr, cp_build_binary_op, + build_x_unary_op, cp_build_unary_op, cp_build_compound_expr, + build_ptrmemfunc): Likewise. + (lookup_destructor): Take tsubst_flags_t parameter, adjust. + + * cvt.c (warn_ref_binding): Rename to diagnose_ref_binding. + (convert_to_reference): Adjust. + +2013-04-11 Jason Merrill + + * pt.c (tsubst_copy) [VAR_DECL]: Don't call tsubst for + local variables, look them up instead. + (tsubst_decl) [VAR_DECL]: Remove handling for anonymous union + proxies and substitution in unevaluated context. + (tsubst_expr) [OMP_FOR]: Instantiate OMP_FOR_PRE_BODY + before the iterators. + + PR c++/23055 + * pt.c (uses_deducible_template_parms): New. + (deducible_array_bound, deducible_expression): New. + (deducible_template_args): New. + (unify_one_argument): Call uses_deducible_template_parms. + +2013-04-11 Paolo Carlini + + PR c++/56913 + * typeck2.c (build_m_component_ref): Protect error calls with + (complain & tf_error). + +2013-04-11 Paolo Carlini + + PR c++/54216 + * parser.c (cp_parser_enum_specifier): Check for empty + anonymous enums and anonymous scoped enums. + +2013-04-10 Jakub Jelinek + + PR c++/56895 + * typeck.c (cp_build_binary_op): Call fold_non_dependent_expr_sfinae + first before calling maybe_constant_value for warn_for_div_by_zero + or invalid shift count warning purposes. + +2013-04-09 Jason Merrill + + PR c++/25466 + * rtti.c (build_typeid): Check the address of the argument + rather than looking for an INDIRECT_REF. + +2013-04-04 Jason Merrill + + PR c++/56838 + PR c++/17232 + * typeck2.c (abstract_virtuals_error_sfinae): Disable + complete_type again. + +2013-04-08 Paolo Carlini + + PR c++/56871 + * decl.c (validate_constexpr_redeclaration): Allow an explicit + specialization to be different wrt the constexpr specifier. + +2013-04-06 Jason Merrill + + * parser.c (cp_parser_std_attribute): Treat [[noreturn]] like GNU + noreturn attribute. + +2013-04-05 Ed Smith-Rowland <3dw4rd@verizon.net> + + * parser.c (cp_parser_ref_qualifier_seq_opt): Move to + cp_parser_ref_qualifier_opt. Error if more than one ref-qual found. + +2013-04-03 Jason Merrill + + * cp-tree.h (FUNCTION_OR_METHOD_TYPE_CHECK): Remove. + (TYPE_RAISES_EXCEPTIONS): Use FUNC_OR_METHOD_CHECK instead. + (FUNCTION_REF_QUALIFIED, FUNCTION_RVALUE_QUALIFIED): Likewise. + + * mangle.c (write_type): When writing a function type with + function-cv-quals, don't add the unqualified type as a + substitution candidate. + +2013-04-03 Paolo Carlini + + PR c++/56815 + * typeck.c (cp_build_unary_op): Change -Wpointer-arith permerror to + pedwarn. + +2013-04-03 Jakub Jelinek + + PR debug/56819 + * tree.c (strip_typedefs): Copy NON_DEFAULT_TEMPLATE_ARGS_COUNT + from args to new_args. + (strip_typedefs_expr): Copy NON_DEFAULT_TEMPLATE_ARGS_COUNT from t to + r instead of doing {S,G}ET_NON_DEFAULT_TEMPLATE_ARGS_COUNT. + +2013-04-02 Jason Merrill + + PR c++/56821 + * mangle.c (write_function_type): Mangle ref-qualifier. + (write_nested_name): Likewise. + (canonicalize_for_substitution): Preserve ref-qualifier. + (write_type): Likewise. + + PR c++/34949 + * decl.c (begin_destructor_body): Clobber the object in a cleanup. + +2013-04-02 Paolo Carlini + + * friend.c (do_friend): Use COMPLETE_OR_OPEN_TYPE_P. + * pt.c (find_parameter_packs_r): Use TYPE_ALIAS_P and TYPE_TI_ARGS. + (for_each_template_parm_r): Use TYPE_TI_ARGS. + +2013-04-02 Paolo Carlini + + * cp-tree.h (TAGGED_TYPE_P): Remove. + (IS_OVERLOAD_TYPE): Rename to OVERLOAD_TYPE_P, adjust. + (TYPE_ANONYMOUS_P): Adjust. + * call.c (build_new_op_1): Likewise. + * class.c (find_abi_tags_r): Likewise. + * decl.c (warn_misplaced_attr_for_class_type, start_decl, + type_is_deprecated): Likewise. + * decl2.c (grokfield, min_vis_r): Likewise. + * pt.c (get_template_info): Likewise. + * tree.c (handle_abi_tag_attribute): Likewise. + +2013-04-01 Jason Merrill + + * semantics.c (maybe_constant_value): Check + instantiation_dependent_expression_p. + * pt.c (build_non_dependent_expr): Don't check it here. + + PR c++/56772 + * init.c (build_new): Don't try to process an array initializer + at template definition time. + + PR c++/56793 + * typeck.c (finish_class_member_access_expr): Handle enum scope. + + PR c++/56794 + * parser.c (cp_parser_range_for): Don't try to do auto deduction + in a template if the type of the range is incomplete. + + * call.c (add_function_candidate): Take the address of 'this' here. + (build_over_call): And here. + (build_new_method_call_1, build_op_call_1): Not here. + (build_user_type_conversion_1): Or here. + (add_candidates): Adjust. + + * cxx-pretty-print.h (pp_cxx_cv_qualifiers): New. + * class.c (same_signature_p): Use type_memfn_quals. + * cp-tree.h (TYPE_RAISES_EXCEPTIONS): Use + FUNCTION_OR_METHOD_TYPE_CHECK. + * error.c (dump_type_suffix): Add padding before cv-qualifiers. + * pt.c (unify): Use static_fn_type. + +2013-04-01 Bronek Kozicki + Jason Merrill + + Implement N2439 (ref-qualifiers for 'this') + * cp-tree.h (FUNCTION_REF_QUALIFIED): New. + (FUNCTION_RVALUE_QUALIFIED): New. + (FUNCTION_OR_METHOD_TYPE_CHECK): New. + (cpp0x_warn_str): Add CPP0X_REF_QUALIFIER. + (cp_ref_qualifier): New enum. + (cp_declarator): Add ref_qualifier. + * parser.c (cp_parser_ref_qualifier_seq_opt): New. + (cp_parser_direct_declarator): Use it. + (make_call_declarator): Adjust. + (cp_parser_lambda_declarator_opt): Adjust. + * call.c (add_function_candidate): Handle ref-qualifier overload + resolution semantics. + (standard_conversion): Adjust. + * class.c (add_method, same_signature_p): Compare ref-qualifiers. + * decl.c (grokdeclarator): Handle ref-qualifiers. + (grokfndecl): Check for invalid ref-qualifiers. + (static_fn_type, revert_static_member_fn): Adjust. + * decl2.c (build_memfn_type): Handle ref-qualifiers. + (check_classfn): Check them. + (cp_reconstruct_complex_type): Retain them. + * error.c (dump_ref_qualifier): New. + (dump_type_suffix, dump_function_decl): Use it. + (maybe_warn_cpp0x): Handle CPP0X_REF_QUALIFIER. + * pt.c (tsubst, tsubst_function_type): Instantiate ref-quals. + (unify): Retain them. + * tree.c (cp_check_qualified_type): New. + (cp_build_qualified_type_real): Keep exception spec and ref-qual. + (build_ref_qualified_type): New. + (strip_typedefs, build_exception_variant): Keep ref-qualifier. + (cp_build_type_attribute_variant): Keep ref-qualifier. + * typeck.c (merge_types): Keep ref-qualifier. + (structural_comptypes): Compare ref-qualifier. + (type_memfn_rqual): New. + (apply_memfn_quals): Take ref-qual argument. + * typeck2.c (build_m_component_ref): Check ref-qualifier. + +2013-04-01 Paolo Carlini + + * cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): Remove. + (DECL_FUNCTION_TEMPLATE_P): Adjust. + + * cxx-pretty-print.c (pp_cxx_nested_name_specifier, + pp_cxx_qualified_id): Use get_containing_scope. + * parser.c (cp_parser_class_head): Likewise. + * pt.c (push_template_decl_real): Likewise. + + * decl2.c (import_export_decl): Use DECL_TEMPLOID_INSTANTIATION. + * pt.c (unify): Use CP_INTEGRAL_TYPE_P. + +2013-03-31 Paolo Carlini + + * decl2.c (collect_candidates_for_java_method_aliases): Use + DECL_CLASS_SCOPE_P. + * name-lookup.c (pushtag_1) Use TYPE_FUNCTION_SCOPE_P. + (pushdecl_maybe_friend_1): Use DECL_DECLARES_FUNCTION_P. + * decl.c (duplicate_decls): Likewise. + * parser.c (cp_parser_template_declaration_after_export): Likewise, + also DECL_DECLARES_TYPE_P. + * pt.c (instantiate_class_template_1): Likewise. + * search.c (lookup_field_1): Use DECL_DECLARES_TYPE_P. + (lookup_field_r): Likewise. + (friend_accessible_p): Use DECL_DECLARES_FUNCTION_P. + (lookup_fnfields_slot_nolazy): Likewise. + * semantics.c (finish_member_declaration): Likewise. + * typeck.c (convert_for_initialization): Use TYPE_REFFN_P. + +2013-03-29 Gabriel Dos Reis + + * pt.c (template_parms_to_args): Fix typo in comment. + +2013-03-29 Paolo Carlini + + * call.c (build_op_call_1): Use TYPE_PTRFN_P and TYPE_REFFN_P. + +2013-03-29 Paolo Carlini + + * call.c (add_builtin_candidate): Use TYPE_PTR_P and VOID_TYPE_P. + (build_op_call_1): Likewise. + (build_over_call): Likewise. + (compare_ics): Likewise. + * class.c (build_base_path): Likewise. + (resolve_address_of_overloaded_function): Likewise. + * cp-tree.h: Likewise. + * cvt.c (cp_convert_to_pointer): Likewise. + (convert_to_reference): Likewise. + (ocp_convert): Likewise. + (convert_force): Likewise, tidy. + * cxx-pretty-print.c (pp_cxx_postfix_expression): Likewise. + (pp_cxx_ptr_operator): Likewise. + * decl.c (duplicate_decls): Likewise. + (start_decl): Likewise. + (grok_op_properties): Likewise. + (start_preparsed_function): Likewise. + (store_parm_decls): Likewise. + (finish_function): Likewise. + * decl2.c (delete_sanity): Likewise. + (acceptable_java_type): Likewise. + (grokbitfield): Likewise. + (cp_reconstruct_complex_type): Likewise. + * error.c (dump_type_prefix): Likewise. + (dump_expr): Likewise. + * except.c (push_eh_cleanup): Likewise. + (complete_ptr_ref_or_void_ptr_p): Likewise. + (can_convert_eh): Likewise. + * init.c (build_new_1): Likewise. + (build_delete): Likewise. + (build_vec_delete): Likewise. + * mangle.c (write_type): Likewise. + * parser.c (lookup_literal_operator): Likewise. + * pt.c (convert_nontype_argument_function): Likewise. + (convert_nontype_argument): Likewise. + (tsubst): Likewise. + (unify): Likewise. + (dependent_type_p_r): Likewise. + * rtti.c (build_headof): Likewise. + (build_typeid): Likewise. + (build_dynamic_cast_1): Likewise. + (target_incomplete_p): Likewise. + (typeinfo_in_lib_p): Likewise. + * semantics.c (finish_omp_for): Likewise. + (cxx_eval_call_expression): Likewise. + (maybe_resolve_dummy): Likewise. + * tree.c (build_target_expr): Likewise. + (cp_build_qualified_type_real): Likewise. + * typeck.c (composite_pointer_type_r): Likewise. + (composite_pointer_type): Likewise. + (comp_except_types): Likewise. + (cxx_sizeof_nowarn): Likewise. + (string_conv_p): Likewise. + (cp_build_array_ref): Likewise. + (cp_build_function_call_vec): Likewise, also use TYPE_PTRFN_P. + (pointer_diff): Likewise. + (cp_build_addr_expr_1): Likewise. + (cp_build_unary_op): Likewise. + (build_static_cast_1): Likewise. + (cp_build_c_cast): Likewise. + (comp_ptr_ttypes_real): Likewise. + (ptr_reasonably_similar): Likewise. + (comp_ptr_ttypes_const): Likewise. + (casts_away_constness): Likewise. + (check_literal_operator_args): Likewise. + * typeck2.c (build_x_arrow): Likewise. + (add_exception_specifier): Likewise. + +2013-03-29 Jason Merrill + + N3582 + * cp-tree.h (AUTO_IS_DECLTYPE): New. + * parser.c (cp_parser_decltype): Handle decltype(auto). + (cp_parser_type_id_1): Allow auto without a late-specified + return in C++1y. + (cp_parser_primary_expression): Use the return value of + finish_parenthesized_expr. + (cp_parser_transaction_expression): Likewise. + * semantics.c (force_paren_expr): New. + (finish_parenthesized_expr): Use it. + * call.c (build_conditional_expr_1): Likewise. + * pt.c (do_auto_deduction): Handle decltype(auto). + (tsubst_copy): Handle PAREN_EXPR. + (tsubst_copy_and_build): Likewise. + * error.c (dump_expr): Handle PAREN_EXPR. + * cxx-pretty-print.c (pp_cxx_expression): Likewise. + * mangle.c (write_expression): Ignore PAREN_EXPR. + + * parser.c (cp_parser_decltype_expr): Split out... + (cp_parser_decltype): ...from here. + + PR c++/56774 + PR c++/35722 + * pt.c (unify_pack_expansion): Fix indexing. + +2013-03-29 Gabriel Dos Reis + + * call.c (build_java_interface_fn_ref): Likewise. + (make_temporary_var_for_ref_to_temp): Likewise. + * class.c (check_field_decls): Likewise. + (layout_class_type): Likewise. + (finish_struct_1): Likewise. + (fixed_type_or_null): Likewise. + (get_vtbl_decl_for_binfo): Likewise. + * cp-gimplify.c (omp_var_to_track): Likewise. + (cp_genericize_r): Likewise. + * cp-objcp-common.c (cxx_warn_unused_global_decl): Likewise. + * cp-tree.h (LANG_DECL_HAS_MIN): Likewise. + (DECL_DISCRIMINATOR_P): Likewise. + * decl.c (poplevel): Likewise. + (decls_match): Likewise. + (duplicate_decls): Likewise. + (decl_jump_unsafe): Likewise. + (start_decl): Likewise. + (check_for_uninitialized_const_var): Likewise. + (make_rtl_for_nonlocal_decl): Likewise. + (cp_finish_decl): Likewise. + (expand_static_init): Likewise. + (local_variable_p): Likewise. + (maybe_register_incomplete_var): Likewise. + * decl2.c (grokfield): Likewise. + (comdat_linkage): Likewise. + (determine_visibility): Likewise. + (import_export_decl): Likewise. + (prune_vars_needing_no_initialization): Likewise. + (decl_maybe_constant_var_p): Likewise. + * error.c (dump_simple_decl): Likewise. + (dump_template_decl): Likewise. + (cp_printer): Likewise. + * except.c (build_throw): Likewise. + * init.c (build_vtbl_address): Likewise. + (member_init_ok_or_else): Likewise. + (build_aggr_init): Likewise. + (expand_aggr_init_1): Likewise. + (build_offset_ref): Likewise. + (constant_value_1): Likewise. + * mangle.c (write_mangled_name): Likewise. + (write_prefix): Likewise. + * name-lookup.c (supplement_binding_1): Likewise. + (add_decl_to_level): Likewise. + (pushdecl_maybe_friend_1): Likewise. + (check_for_out_of_scope_variable): Likewise. + (validate_nonmember_using_decl): Likewise. + (lookup_name_innermost_nonclass_level_1): Likewise. + (lookup_arg_dependent_1): Likewise. + * parser.c (cp_parser_lambda_introducer): Likewise. + (cp_parser_template_argument): Likewise. + (cp_parser_single_declaration): Likewise. + * pt.c (convert_nontype_argument): Likewise. + (instantiate_class_template_1): Likewise. + (tsubst_decl): Likewise. + (tsubst_expr): Likewise. + (do_decl_instantiation): Likewise. + (do_type_instantiation): Likewise. + (regenerate_decl_from_template): Likewise. + (always_instantiate_p): Likewise. + (instantiate_decl): Likewise. + (type_dependent_expression_p): Likewise. + (build_non_dependent_expr): Likewise. + * repo.c (repo_emit_p): Likewise. + * rtti.c (build_dynamic_cast_1): Likewise. + * search.c (shared_member_p): Likewise. + * semantics.c (outer_var_p): Likewise. + (finish_id_expression): Likewise. + (finish_omp_clauses): Likewise. + (finish_decltype_type): Likewise. + (ensure_literal_type_for_constexpr_object): Likewise. + * tree.c (lvalue_kind): Likewise. + (bot_replace): Likewise. + (cp_tree_equal): Likewise. + (handle_init_priority_attribute): Likewise. + (decl_storage_duration): Likewise. + * typeck.c (cxx_sizeof_expr): Likewise. + (cxx_alignof_expr): Likewise. + (decay_conversion): Likewise. + (build_class_member_access_expr): Likewise. + (cp_build_array_ref): Likewise. + (cxx_mark_addressable): Likewise. + (maybe_warn_about_returning_address_of_local): Likewise. + (check_return_expr): Likewise. + * typeck2.c (cxx_readonly_error): Likewise. + (abstract_virtuals_error_sfinae): Likewise. + (cxx_incomplete_type_diagnostic): Likewise. + +2013-03-28 Lawrence Crowl + + * Make-lang.in + (CXX_PARSER_H): Add header dependence. + * cp-tree.h + (extern debug (cp_binding_level &)): New. + (extern debug (cp_binding_level *)): New. + * name-lookup.h + (debug (cp_binding_level &)): New. + (debug (cp_binding_level *)): New. + * parser.c + (debug (cp_parser &)): New. + (debug (cp_parser *)): New. + (debug (cp_token &)): New. + (debug (cp_token *)): New. + (debug (vec &)): New. + (debug (vec *)): New. + * parser.c: Add header dependence. + (extern debug (cp_parser &)): New. + (extern debug (cp_parser *)): New. + (extern debug (cp_token &)): New. + (extern debug (cp_token *)): New. + (extern debug (vec &)): New. + (extern debug (vec *)): New. + +2013-03-28 Jason Merrill + + PR c++/17232 + PR c++/52748 + * typeck2.c (abstract_virtuals_error_sfinae): Don't complete + the type if tf_decltype is set. + * pt.c (fn_type_unification): Add decltype_p parm. + (get_bindings): Adjust. + * cp-tree.h: Adjust. + * class.c (resolve_address_of_overloaded_function): Adjust. + * call.c (add_template_candidate_real, print_z_candidate): Adjust. + + PR c++/56679 + * parser.c (cp_parser_sizeof_pack): Split out from... + (cp_parser_sizeof_operand): ...here. Require (id). + + PR c++/56701 + * semantics.c (finish_this_expr): 'this' is an rvalue. + * typeck.c (cp_build_indirect_ref): Handle NOP_EXPR of 'this'. + + PR c++/56710 + * semantics.c (finish_member_declaration): Don't push closure + members. + + * name-lookup.c (pushdecl_maybe_friend_1): Use + nonlambda_method_basetype and current_nonlambda_class_type. + + PR c++/56728 + * semantics.c (potential_constant_expression_1) [NOP_EXPR]: Reject + conversion from integer to pointer. + (cxx_eval_constant_expression): Likewise. + (cxx_eval_indirect_ref): Use the folded operand if we still think + this might be constant. + +2013-03-28 Paolo Carlini + Manuel Lopez-Ibanez + + PR c++/56725 + * call.c (convert_like_real): Change series of two permerrors + to permerror + inform (and likewise for two errors). + (build_new_method_call_1): Likewise. + * typeck.c (convert_for_initialization): Change additional + warning or error to inform. + +2013-03-28 Gabriel Dos Reis + + * cp-tree.h (next_aggr_init_expr_arg): Remove static specifier. + (first_aggr_init_expr): Likewise. + (more_aggr_init_expr_args_p): Likewise. + (type_of_this_parm): Likewise. + (class_of_this_parm): Likewise. + * name-lookup.h (get_global_value_if_present): Likewise. + (is_typename_at_global_scope): Likewise. + +2013-03-28 Paolo Carlini + + * call.c (joust): Don't call inform for a permerror returning false. + * parser.c (cp_parser_check_class_key): Likewise. + * pt.c (tsubst_copy_and_build): Likewise. + +2013-03-27 Jason Merrill + + PR c++/56749 + * semantics.c (finish_qualified_id_expr): Return early + for enum scope. + +2013-03-26 Gabriel Dos Reis + + * call.c (build_new_method_call_1): Use INDIRECT_REF_P. + * cvt.c (convert_to_void): Likewise. + * error.c (dump_expr): Likewise. + * mangle.c (write_expression): Likewise. + * parser.c (cp_parser_template_argument): Likewise. + * pt.c (convert_nontype_argument): Likewise. + (tsubst_copy_and_build): Likewise. + * rtti.c (build_typeid): Likewise. + * semantics.c (finish_call_expr): Likewise. + (finish_decltype_type): Likewise. + (build_data_member_initialization): Likewise. + * tree.c (is_dummy_object): Likewise. + * typeck.c (decay_conversion): Likewise. + (build_class_member_access_expr): Likewise. + (cp_build_addr_expr_1): Likewise. + (unary_complex_lvalue): Likewise. + (check_return_expr): Likewise. + * typeck2.c (cxx_readonly_error): Likewise. + +2013-03-26 Jason Merrill + + PR c++/52597 + * typeck.c (invalid_nonstatic_memfn_p): Use get_first_fn. Take tree. + * semantics.c (finish_decltype_type): Check it before type_unknown_p. + * cp-tree.h: Adjust prototype. + + PR c++/45282 + * typeck2.c (build_m_component_ref): Handle prvalue object. + +2013-03-26 Gabriel Dos Reis + + * cp-gimplify.c (cp_genericize_r): Use VAR_OR_FUNCTION_DECL_P. + * decl.c (duplicate_decls): Likewise. + (cp_finish_decl): Likewise. + (check_class_member_definition_namespace): Likewise. + * decl2.c (grokfield): Likewise. + (decl_needed_p): Likewise. + (import_export_decl): Likewise. + (mark_used): Likewise. + * name-lookup.c (pushdecl_maybe_friend_1): Likewise. + * pt.c (push_access_scope): Likewise. + (instantiate_decl): Likewise. + * ptree.c (cxx_print_decl): Likewise. + * repo.c (repo_emit_p): Likewise. + * semantics.c (note_decl_for_pch): Likewise. + * tree.c (decl_linkage): Likewise. + +2013-03-26 Paolo Carlini + + PR c++/55951 + * decl.c (check_array_designated_initializer): Handle CONST_DECL + as ce->index. + +2013-03-26 Paolo Carlini + + * decl.c (grokfndecl): Handle separately and + error messages. + + * decl.c (grokdeclarator): Declare typedef_p and use it everywhere. + +2013-03-25 Jason Merrill + + PR c++/56699 + * semantics.c (maybe_resolve_dummy): Make sure that the enclosing + class is derived from the type of the object. + + PR c++/52014 + * semantics.c (lambda_expr_this_capture): Don't capture 'this' in + unevaluated context. + +2013-03-25 Paolo Carlini + + PR c++/56722 + * decl.c (cp_finish_decl): Check DECL_LANG_SPECIFIC before + DECL_TEMPLATE_INSTANTIATION. + +2013-03-22 Jason Merrill + + PR c++/56684 + * pt.c (instantiation_dependent_r): Check DECL_INITIAL of VAR_DECL + and CONST_DECL. + +2013-03-21 Gabriel Dos Reis + + * cp-tree.h (identifier_p): New. + * call.c: Throughout, call identifier_p insstead of direct + comparaison of TREE_CODE against IDENTIFIER_NODE. + * decl.c: Likewisse. + * decl2.c: Likewise. + * init.c: Likewise. + * mangle.c: Likewise. + * name-lookup.c: Likewise. + * parser.c: Likewise. + * pt.c: Likewise. + * search.c: Likewise. + * semantics.c: Likewise. + * tree.c: Likewise. + * typeck.c: Likewise. + * typeck2.c: Likewise. + +2013-03-21 Jakub Jelinek + + PR middle-end/48087 + * pt.c (convert_nontype_argument): Count werrorcount as warnings. + * call.c (build_temp): Likewise. + * method.c (synthesize_method): Likewise. + * typeck.c (convert_for_initialization): Likewise. + +2013-03-21 Marc Glisse + + * call.c (build_conditional_expr_1): Fold VEC_COND_EXPR. + +2013-03-21 Richard Biener + + * error.c (cp_printer): Use DECL_HAS_DEBUG_EXPR_P instead of + DECL_DEBUG_EXPR_IS_FROM. Guard properly. + +2013-03-20 Jason Merrill + + PR c++/56646 + * parser.c (cp_parser_late_return_type_opt): Save and restore + current_class_ptr/ref. + + PR c++/54532 + * expr.c (cplus_expand_constant): Do nothing if the class is + incomplete. + * semantics.c (reduced_constant_expression_p): Allow PTRMEM_CST. + * typeck2.c (store_init_value): Use reduced_constant_expression_p. + * decl.c (maybe_register_incomplete_var): Handle PTRMEM_CST. + (complete_vars): Likewise. + + * name-lookup.c (get_anonymous_namespace_name): Never use + get_file_function_name. + + * pt.c (retrieve_specialization): Handle null tmpl argument. + + PR c++/17232 + PR c++/56642 + * pt.c (tsubst_decl): Check return value of register_specialization. + * typeck2.c (abstract_virtuals_error_sfinae): Re-apply complete_type + change. + +2013-03-17 Jason Merrill + + PR c++/54359 + PR c++/56639 + * parser.c (cp_parser_direct_declarator): Bail if we see a + qualified-id not at namespace scope. + + PR c++/17232 + PR c++/56642 + * typeck2.c (abstract_virtuals_error_sfinae): Revert complete_type + change for now. + +2013-03-16 Jason Merrill + + * decl.c (grokdeclarator): Assert that we won't see a pointer to + METHOD_TYPE. + + PR c++/54277 + * cp-tree.h (WILDCARD_TYPE_P): Split out from... + (MAYBE_CLASS_TYPE_P): ...here. + * semantics.c (lambda_capture_field_type): Only build a + magic decltype for wildcard types. + (lambda_proxy_type): Likewise. + (finish_non_static_data_member): Get the quals from + the object. + + PR c++/55931 + * parser.c (cp_parser_template_argument): Don't + fold_non_dependent_expr. + + * parser.c (cp_parser_lambda_declarator_opt): Use + cp_parser_trailing_type_id. + + PR c++/45917 + * parser.c (cp_parser_template_id): Don't forget access checks. + + PR c++/52374 + * pt.c (tsubst_qualified_id): Use current_nonlambda_class_type. + + PR c++/54764 + PR c++/55972 + * name-lookup.h (tag_scope): Add ts_lambda. + * semantics.c (begin_lambda_type): Use it. + * decl.c (xref_tag_1): Set CLASSTYPE_LAMBDA_EXPR. + * pt.c (check_default_tmpl_args): Ignore lambdas. + (push_template_decl_real): Handle lambdas. + * tree.c (no_linkage_check): Adjust lambda check. + + PR c++/56039 + * tree.c (strip_typedefs_expr): Complain about lambda, don't abort. + + PR c++/54359 + * parser.c (cp_parser_direct_declarator): Fix late return + for out-of-class defn of member function. + + PR c++/55357 + * semantics.c (maybe_add_lambda_conv_op): Clear DECL_NAME of copied + parms to avoid duplicate -Wshadow warnings. + + * search.c (lookup_base): Handle NULL_TREE. + + PR c++/56481 + * semantics.c (potential_constant_expression_1): Use of 'this' in + a non-constexpr function makes the expression not potentially + constant. + + N3276 + PR c++/52748 + * cp-tree.h (tsubst_flags): Add tf_decltype. + * call.c (build_cxx_call): Don't build a temporary if it's set. + (build_over_call): Make sure it's only passed to build_cxx_call. + * parser.c (cp_parser_primary_expression): Add decltype_p parm. + (cp_parser_unary_expression): Likewise. + (cp_parser_cast_expression): Likewise. + (cp_parser_binary_expression): Likewise. + (cp_parser_assignment_expression): Likewise. + (cp_parser_postfix_expression): Likewise. Pass tf_decltype. + (cp_parser_expression): Add decltype_p. Force a + temporary for a call on the LHS of a comma. + (cp_parser_decltype): Pass true to decltype_p parms. + * pt.c (tsubst) [DECLTYPE_TYPE]: Pass tf_decltype. + (tsubst_copy_and_build): Pass tf_decltype down only for + CALL_EXPR and the RHS of COMPOUND_EXPR. + * tree.c (build_cplus_new): Call complete_type_or_maybe_complain. + + * cp-tree.h (abstract_class_use): New enum. + * typeck2.c (pending_abstract_type): Add use field. + (abstract_virtuals_error_sfinae): Add overloads taking + abstract_class_use instead of tree. + * typeck.c (build_static_cast_1): Call it. + * except.c (is_admissible_throw_operand_or_catch_parameter): Call it. + * pt.c: Adjust calls. + * decl.c (cp_finish_decl): Don't handle functions specially. + (grokdeclarator): Always check return type. + * init.c (build_new_1): Adjust call. + + DR 337 + PR c++/17232 + * pt.c (tsubst) [ARRAY_TYPE]: Use abstract_virtuals_error_sfinae. + * typeck2.c (abstract_virtuals_error_sfinae): Call complete_type. + + DR 657 + * pt.c (tsubst_function_type): Call abstract_virtuals_error_sfinae. + (tsubst_arg_types): Likewise. + + DR 1518 + PR c++/54835 + * call.c (convert_like_real): Check for explicit constructors + even for value-initialization. + + PR c++/54946 + * pt.c (convert_nontype_argument): Handle invalid pointer. + + * parser.c (cp_parser_lambda_expression): Use nreverse. + + PR c++/56447 + PR c++/55532 + * pt.c (instantiate_class_template_1): Instantiate lambda capture + list here. + (tsubst_copy_and_build): Not here. + + PR c++/55017 + * method.c (walk_field_subobs): Disallow copy of rvalue ref. + + PR c++/55240 + * parser.c (parsing_nsdmi): New. + * semantics.c (outer_automatic_var_p): Check it. + (finish_id_expression): Likewise. + * cp-tree.h: Declare it. + + PR c++/55241 + * error.c (dump_expr) [SIZEOF_EXPR]: Print sizeof... properly. + + * parser.c (lookup_literal_operator): Correct parm/arg naming + mixup. + + PR c++/56238 + * pt.c (fold_non_dependent_expr_sfinae): Check + instantiation_dependent_expression_p. + + PR c++/56095 + * class.c (resolve_address_of_overloaded_function): Accept a + reference to function for target_type. + (instantiate_type): Likewise. + * pt.c (convert_nontype_argument): Pass it to + convert_nontype_argument_function. + +2013-03-16 Jakub Jelinek + + * tree.c (cp_tree_equal): Fix a pasto. + + PR c++/56607 + * typeck.c (cp_build_binary_op): When calling warn_for_div_by_zero, + pass op1 through maybe_constant_value first. + +2013-03-16 Paolo Carlini + + PR c++/56582 + * semantics.c (cxx_eval_array_reference): Check for negative index. + +2013-03-14 Jason Merrill + + PR c++/56614 + * decl.c (local_variable_p_walkfn): Check DECL_ARTIFICIAL again. + + PR c++/56346 + * decl.c (register_dtor_fn): Pass null to __cxa_thread_atexit + dso_handle parm on targets without __cxa_atexit. + +2013-03-11 Jason Merrill + + PR c++/56567 + * typeck.c (check_return_expr): Disallow returning init list here. + * semantics.c (apply_deduced_return_type): Not here. + +2013-03-08 Paolo Carlini + + PR c++/51412 + * cxx-pretty-print.c (pp_cxx_expression): Handle LAMBDA_EXPR. + * error.c (dump_expr): Likewise. + +2013-03-08 Jason Merrill + + PR c++/51884 + * class.c (modify_all_vtables): Mangle the vtable name before + entering dfs_walk. + + * semantics.c (lambda_expr_this_capture): In unevaluated context, + just return the nearest 'this'. + + PR c++/51494 + PR c++/52183 + PR c++/56222 + * tree.c (maybe_dummy_object): Don't capture 'this'. + * semantics.c (maybe_resolve_dummy): New. + (finish_non_static_data_member): Use it. + (finish_qualified_id_expr): Don't test is_dummy_object. + * cp-tree.h: Declare maybe_resolve_dummy. + * call.c (build_new_method_call_1): Use it. + + PR c++/56567 + * semantics.c (apply_deduced_return_type): Don't allow returning + std::initializer_list. + +2013-03-06 Paolo Carlini + + PR c++/56534 + * parser.c (cp_parser_elaborated_type_specifier): Don't call + check_elaborated_type_specifier when TREE_CODE (decl) != TYPE_DECL. + * decl.c (check_elaborated_type_specifier): Tidy. + +2013-03-06 Jakub Jelinek + + PR c++/56543 + * tree.c (strip_typedefs): Don't copy args if they are NULL. + +2013-03-05 Jakub Jelinek + + * parser.c (cp_parser_braced_list): For {} initialize + *non_constant_p to false. + +2013-03-04 Jason Merrill + + PR c++/56464 + PR c++/54383 + * semantics.c (lambda_expr_this_capture): Handle NSDMI + and non-class scopes. + +2013-03-01 Paolo Carlini + + * decl.c (grokdeclarator): Remove dead code. + +2013-02-28 Jason Merrill + + PR c++/56481 + * semantics.c (potential_constant_expression_1): Use + cxx_eval_outermost_constant_expr rather than maybe_constant_value. + + PR c++/56243 + * call.c (build_over_call): Avoid virtual lookup in a template. + +2013-02-27 Jason Merrill + + PR c++/56358 + PR c++/56323 + * name-lookup.c (do_class_using_decl): Use ctor_identifier instead + of the base name for inheriting ctors. + (push_class_level_binding_1): Remove inheriting ctor handling. + * pt.c (tsubst_decl) [USING_DECL]: Likewise. + * class.c (add_implicitly_declared_members): Adjust. + +2013-02-26 David Binderman + + PR c++/55632 + * decl.c (grokdeclarator): Tidy publicp assignment. + +2013-02-25 Aldy Hernandez + + PR c++/56419 + * semantics.c (begin_transaction_stmt): Set TREE_SIDE_EFFECTS. + (build_transaction_expr): Same. + +2013-02-25 Jason Merrill + + PR c++/56377 + * pt.c (fn_type_unification): Wait to call push_tinst_level until + we know what args we're looking at. + + PR c++/56438 + * semantics.c (potential_constant_expression_1): In C++98, a cast + to non-integral type can't be a constant expression. + +2013-02-24 Jakub Jelinek + + PR c++/56403 + * init.c (build_zero_init_1): Use RECORD_OR_UNION_CODE_P instead + of CLASS_TYPE_P. + +2013-02-22 Jason Merrill + + PR c++/40405 + * pt.c (push_template_decl_real): Set DECL_INTERFACE_KNOWN + if we got the wrong number of template parms. + + PR c++/56377 + * pt.c (fn_type_unification): Use explicit args in template + instantiation context. + + PR c++/56359 + * call.c (can_convert_arg): Discard access checks. + + PR c++/56395 + * tree.c (strip_typedefs): Strip typedefs from TYPENAME_TYPE template + args. + +2013-02-20 Paolo Carlini + + PR c++/56373 + * tree.c (maybe_warn_zero_as_null_pointer_constant): Add. + * cvt.c (ocp_convert): Use the latter. + (cp_convert_to_pointer): Likewise. + * decl.c (check_default_argument): Likewise. + * typeck.c (cp_build_binary_op): Likewise. + * cp-tree.h (maybe_warn_zero_as_null_pointer_constant): Declare. + +2013-02-15 Jonathan Wakely + Paolo Carlini + + PR c++/51242 + * decl2.c (grokbitfield): Allow scoped enumeration types. + +2013-02-15 Jason Merrill + + PR c++/54276 + * semantics.c (finish_id_expression): Also return the identifier + for an outer local static. + + PR c++/56343 + * class.c (check_bases_and_members): Deduce noexcept after + checking bases. + + PR c++/52026 + * semantics.c (finish_id_expression): In a template, return + the identifier for a constant variable. + +2013-02-14 Jason Merrill + + PR c++/54922 + * semantics.c (build_anon_member_initialization): New. + (build_data_member_initialization): Use it. + + PR c++/55003 + * decl.c (cp_finish_decl): Force instantiation of an + auto static data member. + + PR c++/55220 + * pt.c (unify): A pack expansion that is not the last template + argument makes the entire template argument list non-deduced. + + PR c++/56323 + * name-lookup.c (do_class_using_decl): Handle typedefs with + inheriting constructors. + (push_class_level_binding_1): Allow inheriting from template + template parameter, too. + * pt.c (tsubst_decl) [USING_DECL]: Likewise. + + PR c++/55223 + * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Fix handling of + default argument scope. + * mangle.c (write_name): Likewise. + + PR c++/55232 + * error.c (find_typenames_r): Don't walk into a pack expansion. + +2013-02-13 Jason Merrill + + PR c++/55670 + * parser.c (cp_parser_member_declaration): Check the declarator + form when detecting a function declaration via typedef. + + PR c++/55680 + * pt.c (maybe_process_partial_specialization): A lambda + isn't what's being specialized. + + PR c++/55710 + * semantics.c (maybe_add_lambda_conv_op): Mark static thunk + TREE_USED. + + PR c++/55879 + * semantics.c (cxx_bind_parameters_in_call): Undo DECL_BY_REFERENCE. + + PR c++/55993 + * semantics.c (cxx_fold_indirect_ref): Handle empty bases at + non-zero offsets, too. + + PR c++/56155 + * decl.c (build_enumerator): Always convert the value to a + fixed underlying type. + + PR c++/56135 + * pt.c (tsubst_copy_and_build): Don't forget any new + captures that arose from use of dependent names. + +2013-02-13 Jakub Jelinek + + PR c++/56302 + * semantics.c (finish_asm_stmt): If input constraints allow + neither register nor memory, try maybe_constant_value to get + a constant if possible. + +2013-02-12 Jason Merrill + + PR c++/56285 + * method.c (add_one_base_init): Handle base constructor + taking rvalue reference parm. + + PR c++/56291 + * semantics.c (sort_constexpr_mem_initializers): Handle + vptr out of order. + +2013-02-09 Jason Merrill + + PR c++/56268 + * semantics.c (classtype_has_nothrow_assign_or_copy_p): Call + maybe_instantiate_noexcept. + + PR c++/56247 + * pt.c (eq_specializations): Set comparing_specializations. + * tree.c (cp_tree_equal): Check it. + * cp-tree.h: Declare it. + + * decl.c (decls_match): Check versions later. + + PR c++/56238 + * pt.c (build_non_dependent_expr): Don't try to fold + instantiation-dependent expressions. + (instantiation_dependent_r) [TRAIT_EXPR]: Split out. + [BIND_EXPR]: Treat as dependent. + +2013-02-07 Jakub Jelinek + + PR c++/56241 + * init.c (build_vec_init): Don't append NULL values into new_vec. + (build_zero_init_1): Don't push anything into v if recursive call + returned NULL_TREE. + (build_value_init_noctor): Don't push anything into v if + build_value_init call returned NULL_TREE. + + PR c++/56239 + * parser.c (cp_parser_token_starts_cast_expression): Renamed to... + (cp_parser_tokens_start_cast_expression): ... this. Change parameter + to cp_parser *, call cp_lexer_peek_token first. For CPP_OPEN_PAREN, + return true only if 2nd token isn't CPP_CLOSE_PAREN. + (cp_parser_cast_expression): Adjust caller. + + PR c++/56237 + * decl.c (push_local_name): Look at DECL_DISCRIMINATOR (t) + only if DECL_DISCRIMINATOR_SET_P (t) rather than just + DECL_LANG_SPECIFIC (t). + +2013-02-07 Jason Merrill + + PR c++/56235 + * method.c (do_build_copy_constructor): Don't bother turning + scalars from lvalues to xvalues. + (do_build_copy_assign): Likewise. + +2013-02-06 Jason Merrill + + * parser.c (cp_parser_enum_specifier): Check for error_mark_node. + +2013-02-05 Jason Merrill + + PR c++/54122 + * tree.c (lvalue_kind) [INDIRECT_REF]: Don't check for + METHOD_TYPE. + + PR c++/56177 + * decl.c (start_preparsed_function): Update restype if we change + decl1. + + PR c++/56208 + * pt.c (fn_type_unification): Discard any access checks from + substituting explicit args. + +2013-01-31 Jason Merrill + + PR c++/56162 + PR c++/56104 + * typeck.c (get_member_function_from_ptrfunc): Fix + ptrmemfunc_vbit_in_delta case. + +2013-01-29 Jason Merrill + + PR libstdc++/54314 + * class.c (build_ctor_vtbl_group): Give construction vtables + hidden visibility. + +2013-01-25 Jason Merrill + + PR c++/56095 + * pt.c (convert_nontype_argument_function): Handle invalid input. + (convert_nontype_argument): Likewise. + + PR c++/56104 + * typeck.c (get_member_function_from_ptrfunc): Optimize if the + dynamic type has no virtual functions. + +2013-01-22 Paolo Carlini + + PR c++/55944 + * decl.c (check_initializer): Use TARGET_EXPR_DIRECT_INIT_P only + on TARGET_EXPR nodes. + +2013-01-22 Jason Merrill + + PR c++/56071 + * pt.c (maybe_instantiate_noexcept): Don't defer access checks. + +2013-01-22 Dodji Seketeli + + PR c++/53609 + * pt.c (argument_pack_element_is_expansion_p) + (make_argument_pack_select, use_pack_expansion_extra_args_p) + (gen_elem_of_pack_expansion_instantiation): New static functions. + (tsubst): When looking through an ARGUMENT_PACK_SELECT tree node, + look through the possibly resulting pack expansion as well. + (tsubst_pack_expansion): Use use_pack_expansion_extra_p to + generalize when to use the PACK_EXPANSION_EXTRA_ARGS mechanism. + Use gen_elem_of_pack_expansion_instantiation to build the + instantiation piece-wise. Don't use arg_from_parm_pack_p anymore, + as gen_elem_of_pack_expansion_instantiation and the change in + tsubst above generalize this particular case. + (arg_from_parm_pack_p): Remove this for it's not used by + tsubst_pack_expansion anymore. + +2013-01-21 Jason Merrill + + PR c++/56059 + * tree.c (strip_typedefs_expr) [TREE_VEC]: Preserve non-default + template args count. + +2013-01-18 Jason Merrill + + PR target/54908 + * decl2.c (get_local_tls_init_fn): New. + (get_tls_init_fn): Handle flag_extern_tls_init. Don't bother + with aliases for internal variables. Don't use weakrefs if + the variable needs destruction. + (generate_tls_wrapper): Mark the wrapper as const if no + initialization is needed. + (handle_tls_init): Don't require aliases. + +2013-01-15 Dodji Seketeli + + PR c++/55663 + * pt.c (coerce_innermost_template_parms): New static function. + (instantiate_alias_template): Use it here. + +2013-01-09 Jason Merrill + + PR c++/55878 + * rtti.c (build_typeid, get_typeid): Add complain parm. + (get_tinfo_decl_dynamic): Likewise. + * cp-tree.h, parser.c, pt.c: Adjust. + + PR c++/55893 + * decl.c (cp_finish_decl): Clear TREE_READONLY if the variable + needs destruction. + +2013-01-09 Jakub Jelinek + + PR c/48418 + * typeck.c (cp_build_binary_op): For LSHIFT_EXPR and RSHIFT_EXPR, + call maybe_constant_value for the negative or too big shift + count warnings. + +2013-01-09 Paolo Carlini + + PR c++/55801 + * decl2.c (var_needs_tls_wrapper): Return false when error_operand_p + of the argument is true. + +2013-01-08 Joel Brobecker + + * parser.c (cp_parser_initializer_list): Move declaration + of variable non_const to start of lexical block. + +2013-01-07 Jason Merrill + + PR c++/55753 + * tree.c (build_aggr_init_expr): Do nothing in a template. + * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Strip an ADDR_EXPR off + a FUNCTION_DECL before tsubsting. + +2013-01-04 Dodji Seketeli + + PR c++/52343 + * pt.c (check_instantiated_arg): Allow type template arguments. + +2013-01-04 Jason Merrill + + PR c++/55877 + * decl.c (reset_type_linkage, bt_reset_linkage): New. + (grokdeclarator): Use reset_type_linkage. + * name-lookup.c (binding_table_foreach): Handle null table. + * tree.c (decl_anon_ns_mem_p): Check TYPE_MAIN_DECL, not TYPE_NAME. + +2013-01-04 Paolo Carlini + + PR c++/54526 (again) + * parser.c (cp_parser_template_id): Revert core of previous change + (keep adjusted inform message). + +2013-01-03 Jason Merrill + + PR c++/55419 + PR c++/55753 + * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Don't touch + TREE_CONSTANT. + + PR c++/55842 + * semantics.c (trait_expr_value): Call maybe_instantiate_noexcept. + + PR c++/55856 + * semantics.c (build_data_member_initialization): Handle DECL_EXPR. + + PR c++/53650 + * call.c (type_has_extended_temps): New. + * cp-tree.h: Declare it. + * decl.c (check_initializer): Use build_aggr_init for arrays + if it is false. + * init.c (build_vec_init): Avoid mixed signed/unsigned arithmetic. + +2013-01-02 Jason Merrill + + PR c++/54325 + * call.c (build_new_method_call_1): Don't use build_value_init for + user-provided default constructors. + + * decl.c (check_default_argument): Use LOOKUP_IMPLICIT. + + PR c++/55032 + PR c++/55245 + * tree.c (build_cplus_array_type): Copy layout information + to main variant if necessary. + +Copyright (C) 2013 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. -- cgit v1.2.1 From c2e306f5efb32b7eed856a1844487cff09aa86ac Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 3 Jan 2014 00:16:50 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206308 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 215649b6a96..c88e6a62ab2 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140102 +20140103 -- cgit v1.2.1 From 37d099d8904f9374bade06e401dad12c56ad5740 Mon Sep 17 00:00:00 2001 From: davidxl Date: Fri, 3 Jan 2014 00:40:57 +0000 Subject: Fix PR/59303 -- uninit analysis enhancement git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206309 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 43 ++ gcc/tree-ssa-uninit.c | 1477 +++++++++++++++++++++++++++---------------------- 2 files changed, 868 insertions(+), 652 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4c2595d5919..bfe89d486bd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,46 @@ +2014-01-02 Xinliang David Li + + PR tree-optimization/59303 + * tree-ssa-uninit.c (is_use_properly_guarded): + Main cleanup. + (dump_predicates): Better output format. + (pred_equal_p): New function. + (is_neq_relop_p): Ditto. + (is_neq_zero_form_p): Ditto. + (pred_expr_equal_p): Ditto. + (pred_neg_p): Ditto. + (simplify_pred): Ditto. + (simplify_preds_2): Ditto. + (simplify_preds_3): Ditto. + (simplify_preds_4): Ditto. + (simplify_preds): Ditto. + (push_pred): Ditto. + (push_to_worklist): Ditto. + (get_pred_info_from_cmp): Ditto. + (is_degenerated_phi): Ditto. + (normalize_one_pred_1): Ditto. + (normalize_one_pred): Ditto. + (normalize_one_pred_chain): Ditto. + (normalize_preds): Ditto. + (normalize_cond_1): Remove function. + (normalize_cond): Ditto. + (is_gcond_subset_of): Ditto. + (is_subset_of_any): Ditto. + (is_or_set_subset_of): Ditto. + (is_and_set_subset_of): Ditto. + (is_norm_cond_subset_of): Ditto. + (pred_chain_length_cmp): Ditto. + (convert_control_dep_chain_into_preds): Type change. + (find_predicates): Ditto. + (find_def_preds): Ditto. + (destroy_predicates_vecs): Ditto. + (find_matching_predicates_in_rest_chains): Ditto. + (use_pred_not_overlap_with_undef_path_pred): Ditto. + (is_pred_expr_subset): Ditto. + (is_pred_chain_subset_of): Ditto. + (is_included_in): Ditto. + (is_superset_of): Ditto. + 2014-01-02 Richard Sandiford Update copyright years diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c index 88fdf981a4c..2b55e1077af 100644 --- a/gcc/tree-ssa-uninit.c +++ b/gcc/tree-ssa-uninit.c @@ -59,7 +59,7 @@ along with GCC; see the file COPYING3. If not see /* Pointer set of potentially undefined ssa names, i.e., ssa names that are defined by phi with operands that are not defined or potentially undefined. */ -static struct pointer_set_t *possibly_undefined_names = 0; +static pointer_set_t *possibly_undefined_names = 0; /* Bit mask handling macros. */ #define MASK_SET_BIT(mask, pos) mask |= (1 << pos) @@ -233,7 +233,7 @@ warn_uninitialized_vars (bool warn_possibly_uninitialized) continue; if (always_executed) - warn_uninit (OPT_Wuninitialized, use, + warn_uninit (OPT_Wuninitialized, use, gimple_assign_rhs1 (stmt), base, "%qE is used uninitialized in this function", stmt); @@ -249,9 +249,9 @@ warn_uninitialized_vars (bool warn_possibly_uninitialized) return 0; } -/* Checks if the operand OPND of PHI is defined by - another phi with one operand defined by this PHI, - but the rest operands are all defined. If yes, +/* Checks if the operand OPND of PHI is defined by + another phi with one operand defined by this PHI, + but the rest operands are all defined. If yes, returns true to skip this this operand as being redundant. Can be enhanced to be more general. */ @@ -411,7 +411,7 @@ compute_control_dep_chain (basic_block bb, basic_block dep_bb, if (EDGE_COUNT (bb->succs) < 2) return false; - /* Could use a set instead. */ + /* Could use a set instead. */ cur_chain_len = cur_cd_chain->length (); if (cur_chain_len > MAX_CHAIN_LEN) return false; @@ -419,7 +419,7 @@ compute_control_dep_chain (basic_block bb, basic_block dep_bb, for (i = 0; i < cur_chain_len; i++) { edge e = (*cur_cd_chain)[i]; - /* cycle detected. */ + /* Cycle detected. */ if (e->src == bb) return false; } @@ -444,7 +444,7 @@ compute_control_dep_chain (basic_block bb, basic_block dep_bb, (*num_chains)++; } found_cd_chain = true; - /* check path from next edge. */ + /* Check path from next edge. */ break; } @@ -470,30 +470,41 @@ compute_control_dep_chain (basic_block bb, basic_block dep_bb, return found_cd_chain; } -typedef struct use_pred_info +/* The type to represent a simple predicate */ + +typedef struct use_def_pred_info { - gimple cond; + tree pred_lhs; + tree pred_rhs; + enum tree_code cond_code; bool invert; -} *use_pred_info_t; +} pred_info; + +/* The type to represent a sequence of predicates grouped + with .AND. operation. */ +typedef vec pred_chain; +/* The type to represent a sequence of pred_chains grouped + with .OR. operation. */ + +typedef vec pred_chain_union; /* Converts the chains of control dependence edges into a set of predicates. A control dependence chain is represented by a vector edges. DEP_CHAINS points to an array of dependence chains. NUM_CHAINS is the size of the chain array. One edge in a dependence - chain is mapped to predicate expression represented by use_pred_info_t + chain is mapped to predicate expression represented by pred_info type. One dependence chain is converted to a composite predicate that - is the result of AND operation of use_pred_info_t mapped to each edge. - A composite predicate is presented by a vector of use_pred_info_t. On + is the result of AND operation of pred_info mapped to each edge. + A composite predicate is presented by a vector of pred_info. On return, *PREDS points to the resulting array of composite predicates. *NUM_PREDS is the number of composite predictes. */ static bool convert_control_dep_chain_into_preds (vec *dep_chains, size_t num_chains, - vec **preds, - size_t *num_preds) + pred_chain_union *preds) { bool has_valid_pred = false; size_t i, j; @@ -502,21 +513,20 @@ convert_control_dep_chain_into_preds (vec *dep_chains, /* Now convert the control dep chain into a set of predicates. */ - typedef vec vec_use_pred_info_t_heap; - *preds = XCNEWVEC (vec_use_pred_info_t_heap, num_chains); - *num_preds = num_chains; + preds->reserve (num_chains); for (i = 0; i < num_chains; i++) { vec one_cd_chain = dep_chains[i]; has_valid_pred = false; + pred_chain t_chain = vNULL; for (j = 0; j < one_cd_chain.length (); j++) { gimple cond_stmt; gimple_stmt_iterator gsi; basic_block guard_bb; - use_pred_info_t one_pred; + pred_info one_pred; edge e; e = one_cd_chain[j]; @@ -528,7 +538,7 @@ convert_control_dep_chain_into_preds (vec *dep_chains, break; } cond_stmt = gsi_stmt (gsi); - if (gimple_code (cond_stmt) == GIMPLE_CALL + if (is_gimple_call (cond_stmt) && EDGE_COUNT (e->src->succs) >= 2) { /* Ignore EH edge. Can add assertion @@ -558,15 +568,18 @@ convert_control_dep_chain_into_preds (vec *dep_chains, has_valid_pred = false; break; } - one_pred = XNEW (struct use_pred_info); - one_pred->cond = cond_stmt; - one_pred->invert = !!(e->flags & EDGE_FALSE_VALUE); - (*preds)[i].safe_push (one_pred); + one_pred.pred_lhs = gimple_cond_lhs (cond_stmt); + one_pred.pred_rhs = gimple_cond_rhs (cond_stmt); + one_pred.cond_code = gimple_cond_code (cond_stmt); + one_pred.invert = !!(e->flags & EDGE_FALSE_VALUE); + t_chain.safe_push (one_pred); has_valid_pred = true; } if (!has_valid_pred) break; + else + preds->safe_push (t_chain); } return has_valid_pred; } @@ -577,8 +590,7 @@ convert_control_dep_chain_into_preds (vec *dep_chains, the phi whose result is used in USE_BB. */ static bool -find_predicates (vec **preds, - size_t *num_preds, +find_predicates (pred_chain_union *preds, basic_block phi_bb, basic_block use_bb) { @@ -610,8 +622,7 @@ find_predicates (vec **preds, has_valid_pred = convert_control_dep_chain_into_preds (dep_chains, num_chains, - preds, - num_preds); + preds); /* Free individual chain */ cur_chain.release (); for (i = 0; i < num_chains; i++) @@ -629,7 +640,7 @@ find_predicates (vec **preds, static void collect_phi_def_edges (gimple phi, basic_block cd_root, vec *edges, - struct pointer_set_t *visited_phis) + pointer_set_t *visited_phis) { size_t i, n; edge opnd_edge; @@ -680,8 +691,7 @@ collect_phi_def_edges (gimple phi, basic_block cd_root, composite predicates pointed to by PREDS. */ static bool -find_def_preds (vec **preds, - size_t *num_preds, gimple phi) +find_def_preds (pred_chain_union *preds, gimple phi) { size_t num_chains = 0, i, n; vec *dep_chains = 0; @@ -689,7 +699,7 @@ find_def_preds (vec **preds, vec def_edges = vNULL; bool has_valid_pred = false; basic_block phi_bb, cd_root = 0; - struct pointer_set_t *visited_phis; + pointer_set_t *visited_phis; typedef vec vec_edge_heap; dep_chains = XCNEWVEC (vec_edge_heap, MAX_NUM_CHAINS); @@ -739,8 +749,7 @@ find_def_preds (vec **preds, has_valid_pred = convert_control_dep_chain_into_preds (dep_chains, num_chains, - preds, - num_preds); + preds); for (i = 0; i < num_chains; i++) dep_chains[i].release (); free (dep_chains); @@ -750,16 +759,16 @@ find_def_preds (vec **preds, /* Dumps the predicates (PREDS) for USESTMT. */ static void -dump_predicates (gimple usestmt, size_t num_preds, - vec *preds, +dump_predicates (gimple usestmt, pred_chain_union preds, const char* msg) { size_t i, j; - vec one_pred_chain; + pred_chain one_pred_chain = vNULL; fprintf (dump_file, msg); print_gimple_stmt (dump_file, usestmt, 0, 0); - fprintf (dump_file, "is guarded by :\n"); - /* do some dumping here: */ + fprintf (dump_file, "is guarded by :\n\n"); + size_t num_preds = preds.length (); + /* Do some dumping here: */ for (i = 0; i < num_preds; i++) { size_t np; @@ -769,37 +778,39 @@ dump_predicates (gimple usestmt, size_t num_preds, for (j = 0; j < np; j++) { - use_pred_info_t one_pred - = one_pred_chain[j]; - if (one_pred->invert) + pred_info one_pred = one_pred_chain[j]; + if (one_pred.invert) fprintf (dump_file, " (.NOT.) "); - print_gimple_stmt (dump_file, one_pred->cond, 0, 0); + print_generic_expr (dump_file, one_pred.pred_lhs, 0); + fprintf (dump_file, " %s ", op_symbol_code (one_pred.cond_code)); + print_generic_expr (dump_file, one_pred.pred_rhs, 0); if (j < np - 1) - fprintf (dump_file, "(.AND.)\n"); + fprintf (dump_file, " (.AND.) "); + else + fprintf (dump_file, "\n"); } if (i < num_preds - 1) fprintf (dump_file, "(.OR.)\n"); + else + fprintf (dump_file, "\n\n"); } } /* Destroys the predicate set *PREDS. */ static void -destroy_predicate_vecs (size_t n, - vec * preds) +destroy_predicate_vecs (pred_chain_union preds) { - size_t i, j; + size_t i; + + size_t n = preds.length (); for (i = 0; i < n; i++) - { - for (j = 0; j < preds[i].length (); j++) - free (preds[i][j]); - preds[i].release (); - } - free (preds); + preds[i].release (); + preds.release (); } -/* Computes the 'normalized' conditional code with operand +/* Computes the 'normalized' conditional code with operand swapping and condition inversion. */ static enum tree_code @@ -890,33 +901,33 @@ is_value_included_in (tree val, tree boundary, enum tree_code cmpc) NUM_PRED_CHAIN is the size of array PREDS. */ static bool -find_matching_predicate_in_rest_chains (use_pred_info_t pred, - vec *preds, +find_matching_predicate_in_rest_chains (pred_info pred, + pred_chain_union preds, size_t num_pred_chains) { size_t i, j, n; - /* trival case */ + /* Trival case. */ if (num_pred_chains == 1) return true; for (i = 1; i < num_pred_chains; i++) { bool found = false; - vec one_chain = preds[i]; + pred_chain one_chain = preds[i]; n = one_chain.length (); for (j = 0; j < n; j++) { - use_pred_info_t pred2 - = one_chain[j]; - /* can relax the condition comparison to not + pred_info pred2 = one_chain[j]; + /* Can relax the condition comparison to not use address comparison. However, the most common case is that multiple control dependent paths share a common path prefix, so address comparison should be ok. */ - if (pred2->cond == pred->cond - && pred2->invert == pred->invert) + if (operand_equal_p (pred2.pred_lhs, pred.pred_lhs, 0) + && operand_equal_p (pred2.pred_rhs, pred.pred_rhs, 0) + && pred2.invert == pred.invert) { found = true; break; @@ -934,7 +945,7 @@ is_use_properly_guarded (gimple use_stmt, basic_block use_bb, gimple phi, unsigned uninit_opnds, - struct pointer_set_t *visited_phis); + pointer_set_t *visited_phis); /* Returns true if all uninitialized opnds are pruned. Returns false otherwise. PHI is the phi node with uninitialized operands, @@ -971,12 +982,13 @@ is_use_properly_guarded (gimple use_stmt, */ static bool -prune_uninit_phi_opnds_in_unrealizable_paths ( - gimple phi, unsigned uninit_opnds, - gimple flag_def, tree boundary_cst, - enum tree_code cmp_code, - struct pointer_set_t *visited_phis, - bitmap *visited_flag_phis) +prune_uninit_phi_opnds_in_unrealizable_paths (gimple phi, + unsigned uninit_opnds, + gimple flag_def, + tree boundary_cst, + enum tree_code cmp_code, + pointer_set_t *visited_phis, + bitmap *visited_flag_phis) { unsigned i; @@ -1023,10 +1035,9 @@ prune_uninit_phi_opnds_in_unrealizable_paths ( /* Now recursively prune the uninitialized phi args. */ uninit_opnds_arg_phi = compute_uninit_opnds_pos (phi_arg_def); - if (!prune_uninit_phi_opnds_in_unrealizable_paths ( - phi_arg_def, uninit_opnds_arg_phi, - flag_arg_def, boundary_cst, cmp_code, - visited_phis, visited_flag_phis)) + if (!prune_uninit_phi_opnds_in_unrealizable_paths + (phi_arg_def, uninit_opnds_arg_phi, flag_arg_def, + boundary_cst, cmp_code, visited_phis, visited_flag_phis)) return false; bitmap_clear_bit (*visited_flag_phis, @@ -1144,11 +1155,9 @@ prune_uninit_phi_opnds_in_unrealizable_paths ( static bool -use_pred_not_overlap_with_undef_path_pred ( - size_t num_preds, - vec *preds, - gimple phi, unsigned uninit_opnds, - struct pointer_set_t *visited_phis) +use_pred_not_overlap_with_undef_path_pred (pred_chain_union preds, + gimple phi, unsigned uninit_opnds, + pointer_set_t *visited_phis) { unsigned int i, n; gimple flag_def = 0; @@ -1156,9 +1165,10 @@ use_pred_not_overlap_with_undef_path_pred ( enum tree_code cmp_code; bool swap_cond = false; bool invert = false; - vec the_pred_chain; + pred_chain the_pred_chain = vNULL; bitmap visited_flag_phis = NULL; bool all_pruned = false; + size_t num_preds = preds.length (); gcc_assert (num_preds > 0); /* Find within the common prefix of multiple predicate chains @@ -1168,17 +1178,14 @@ use_pred_not_overlap_with_undef_path_pred ( n = the_pred_chain.length (); for (i = 0; i < n; i++) { - gimple cond; tree cond_lhs, cond_rhs, flag = 0; - use_pred_info_t the_pred - = the_pred_chain[i]; + pred_info the_pred = the_pred_chain[i]; - cond = the_pred->cond; - invert = the_pred->invert; - cond_lhs = gimple_cond_lhs (cond); - cond_rhs = gimple_cond_rhs (cond); - cmp_code = gimple_cond_code (cond); + invert = the_pred.invert; + cond_lhs = the_pred.pred_lhs; + cond_rhs = the_pred.pred_rhs; + cmp_code = the_pred.cond_code; if (cond_lhs != NULL_TREE && TREE_CODE (cond_lhs) == SSA_NAME && cond_rhs != NULL_TREE && is_gimple_constant (cond_rhs)) @@ -1204,8 +1211,8 @@ use_pred_not_overlap_with_undef_path_pred ( if ((gimple_code (flag_def) == GIMPLE_PHI) && (gimple_bb (flag_def) == gimple_bb (phi)) - && find_matching_predicate_in_rest_chains ( - the_pred, preds, num_preds)) + && find_matching_predicate_in_rest_chains (the_pred, preds, + num_preds)) break; flag_def = 0; @@ -1235,668 +1242,847 @@ use_pred_not_overlap_with_undef_path_pred ( return all_pruned; } -/* Returns true if TC is AND or OR */ +/* The helper function returns true if two predicates X1 and X2 + are equivalent. It assumes the expressions have already + properly re-associated. */ static inline bool -is_and_or_or (enum tree_code tc, tree typ) +pred_equal_p (pred_info x1, pred_info x2) { - return (tc == BIT_IOR_EXPR - || (tc == BIT_AND_EXPR - && (typ == 0 || TREE_CODE (typ) == BOOLEAN_TYPE))); -} + enum tree_code c1, c2; + if (!operand_equal_p (x1.pred_lhs, x2.pred_lhs, 0) + || !operand_equal_p (x1.pred_rhs, x2.pred_rhs, 0)) + return false; -typedef struct norm_cond -{ - vec conds; - enum tree_code cond_code; - bool invert; -} *norm_cond_t; + c1 = x1.cond_code; + if (x1.invert != x2.invert) + c2 = invert_tree_comparison (x2.cond_code, false); + else + c2 = x2.cond_code; + return c1 == c2; +} -/* Normalizes gimple condition COND. The normalization follows - UD chains to form larger condition expression trees. NORM_COND - holds the normalized result. COND_CODE is the logical opcode - (AND or OR) of the normalized tree. */ +/* Returns true if the predication is testing !=. */ -static void -normalize_cond_1 (gimple cond, - norm_cond_t norm_cond, - enum tree_code cond_code) +static inline bool +is_neq_relop_p (pred_info pred) { - enum gimple_code gc; - enum tree_code cur_cond_code; - tree rhs1, rhs2; - - gc = gimple_code (cond); - if (gc != GIMPLE_ASSIGN) - { - norm_cond->conds.safe_push (cond); - return; - } - cur_cond_code = gimple_assign_rhs_code (cond); - rhs1 = gimple_assign_rhs1 (cond); - rhs2 = gimple_assign_rhs2 (cond); - if (cur_cond_code == NE_EXPR) - { - if (integer_zerop (rhs2) - && (TREE_CODE (rhs1) == SSA_NAME)) - normalize_cond_1 ( - SSA_NAME_DEF_STMT (rhs1), - norm_cond, cond_code); - else if (integer_zerop (rhs1) - && (TREE_CODE (rhs2) == SSA_NAME)) - normalize_cond_1 ( - SSA_NAME_DEF_STMT (rhs2), - norm_cond, cond_code); - else - norm_cond->conds.safe_push (cond); - - return; - } - - if (is_and_or_or (cur_cond_code, TREE_TYPE (rhs1)) - && (cond_code == cur_cond_code || cond_code == ERROR_MARK) - && (TREE_CODE (rhs1) == SSA_NAME && TREE_CODE (rhs2) == SSA_NAME)) - { - normalize_cond_1 (SSA_NAME_DEF_STMT (rhs1), - norm_cond, cur_cond_code); - normalize_cond_1 (SSA_NAME_DEF_STMT (rhs2), - norm_cond, cur_cond_code); - norm_cond->cond_code = cur_cond_code; - } - else - norm_cond->conds.safe_push (cond); + return (pred.cond_code == NE_EXPR && !pred.invert) + || (pred.cond_code == EQ_EXPR && pred.invert); } -/* See normalize_cond_1 for details. INVERT is a flag to indicate - if COND needs to be inverted or not. */ +/* Returns true if pred is of the form X != 0. */ -static void -normalize_cond (gimple cond, norm_cond_t norm_cond, bool invert) +static inline bool +is_neq_zero_form_p (pred_info pred) { - enum tree_code cond_code; + if (!is_neq_relop_p (pred) || !integer_zerop (pred.pred_rhs) + || TREE_CODE (pred.pred_lhs) != SSA_NAME) + return false; + return true; +} - norm_cond->cond_code = ERROR_MARK; - norm_cond->invert = false; - norm_cond->conds.create (0); - gcc_assert (gimple_code (cond) == GIMPLE_COND); - cond_code = gimple_cond_code (cond); - if (invert) - cond_code = invert_tree_comparison (cond_code, false); +/* The helper function returns true if two predicates X1 + is equivalent to X2 != 0. */ - if (cond_code == NE_EXPR) - { - if (integer_zerop (gimple_cond_rhs (cond)) - && (TREE_CODE (gimple_cond_lhs (cond)) == SSA_NAME)) - normalize_cond_1 ( - SSA_NAME_DEF_STMT (gimple_cond_lhs (cond)), - norm_cond, ERROR_MARK); - else if (integer_zerop (gimple_cond_lhs (cond)) - && (TREE_CODE (gimple_cond_rhs (cond)) == SSA_NAME)) - normalize_cond_1 ( - SSA_NAME_DEF_STMT (gimple_cond_rhs (cond)), - norm_cond, ERROR_MARK); - else - { - norm_cond->conds.safe_push (cond); - norm_cond->invert = invert; - } - } - else - { - norm_cond->conds.safe_push (cond); - norm_cond->invert = invert; - } +static inline bool +pred_expr_equal_p (pred_info x1, tree x2) +{ + if (!is_neq_zero_form_p (x1)) + return false; - gcc_assert (norm_cond->conds.length () == 1 - || is_and_or_or (norm_cond->cond_code, NULL)); + return operand_equal_p (x1.pred_lhs, x2, 0); } -/* Returns true if the domain for condition COND1 is a subset of - COND2. REVERSE is a flag. when it is true the function checks - if COND1 is a superset of COND2. INVERT1 and INVERT2 are flags - to indicate if COND1 and COND2 need to be inverted or not. */ +/* Returns true of the domain of single predicate expression + EXPR1 is a subset of that of EXPR2. Returns false if it + can not be proved. */ static bool -is_gcond_subset_of (gimple cond1, bool invert1, - gimple cond2, bool invert2, - bool reverse) +is_pred_expr_subset_of (pred_info expr1, pred_info expr2) { - enum gimple_code gc1, gc2; - enum tree_code cond1_code, cond2_code; - gimple tmp; - tree cond1_lhs, cond1_rhs, cond2_lhs, cond2_rhs; + enum tree_code code1, code2; - /* Take the short cut. */ - if (cond1 == cond2) + if (pred_equal_p (expr1, expr2)) return true; - if (reverse) - { - tmp = cond1; - cond1 = cond2; - cond2 = tmp; - } + if ((TREE_CODE (expr1.pred_rhs) != INTEGER_CST) + || (TREE_CODE (expr2.pred_rhs) != INTEGER_CST)) + return false; - gc1 = gimple_code (cond1); - gc2 = gimple_code (cond2); + if (!operand_equal_p (expr1.pred_lhs, expr2.pred_lhs, 0)) + return false; - if ((gc1 != GIMPLE_ASSIGN && gc1 != GIMPLE_COND) - || (gc2 != GIMPLE_ASSIGN && gc2 != GIMPLE_COND)) - return cond1 == cond2; + code1 = expr1.cond_code; + if (expr1.invert) + code1 = invert_tree_comparison (code1, false); + code2 = expr2.cond_code; + if (expr2.invert) + code2 = invert_tree_comparison (code2, false); - cond1_code = ((gc1 == GIMPLE_ASSIGN) - ? gimple_assign_rhs_code (cond1) - : gimple_cond_code (cond1)); + if (code1 != code2 && code2 != NE_EXPR) + return false; - cond2_code = ((gc2 == GIMPLE_ASSIGN) - ? gimple_assign_rhs_code (cond2) - : gimple_cond_code (cond2)); + if (is_value_included_in (expr1.pred_rhs, expr2.pred_rhs, code2)) + return true; - if (TREE_CODE_CLASS (cond1_code) != tcc_comparison - || TREE_CODE_CLASS (cond2_code) != tcc_comparison) - return false; + return false; +} - if (invert1) - cond1_code = invert_tree_comparison (cond1_code, false); - if (invert2) - cond2_code = invert_tree_comparison (cond2_code, false); - - cond1_lhs = ((gc1 == GIMPLE_ASSIGN) - ? gimple_assign_rhs1 (cond1) - : gimple_cond_lhs (cond1)); - cond1_rhs = ((gc1 == GIMPLE_ASSIGN) - ? gimple_assign_rhs2 (cond1) - : gimple_cond_rhs (cond1)); - cond2_lhs = ((gc2 == GIMPLE_ASSIGN) - ? gimple_assign_rhs1 (cond2) - : gimple_cond_lhs (cond2)); - cond2_rhs = ((gc2 == GIMPLE_ASSIGN) - ? gimple_assign_rhs2 (cond2) - : gimple_cond_rhs (cond2)); - - /* Assuming const operands have been swapped to the - rhs at this point of the analysis. */ - - if (cond1_lhs != cond2_lhs) - return false; +/* Returns true if the domain of PRED1 is a subset + of that of PRED2. Returns false if it can not be proved so. */ - if (!is_gimple_constant (cond1_rhs) - || TREE_CODE (cond1_rhs) != INTEGER_CST) - return (cond1_rhs == cond2_rhs); - - if (!is_gimple_constant (cond2_rhs) - || TREE_CODE (cond2_rhs) != INTEGER_CST) - return (cond1_rhs == cond2_rhs); - - if (cond1_code == EQ_EXPR) - return is_value_included_in (cond1_rhs, - cond2_rhs, cond2_code); - if (cond1_code == NE_EXPR || cond2_code == EQ_EXPR) - return ((cond2_code == cond1_code) - && tree_int_cst_equal (cond1_rhs, cond2_rhs)); - - if (((cond1_code == GE_EXPR || cond1_code == GT_EXPR) - && (cond2_code == LE_EXPR || cond2_code == LT_EXPR)) - || ((cond1_code == LE_EXPR || cond1_code == LT_EXPR) - && (cond2_code == GE_EXPR || cond2_code == GT_EXPR))) - return false; +static bool +is_pred_chain_subset_of (pred_chain pred1, + pred_chain pred2) +{ + size_t np1, np2, i1, i2; - if (cond1_code != GE_EXPR && cond1_code != GT_EXPR - && cond1_code != LE_EXPR && cond1_code != LT_EXPR) - return false; + np1 = pred1.length (); + np2 = pred2.length (); - if (cond1_code == GT_EXPR) - { - cond1_code = GE_EXPR; - cond1_rhs = fold_binary (PLUS_EXPR, TREE_TYPE (cond1_rhs), - cond1_rhs, - fold_convert (TREE_TYPE (cond1_rhs), - integer_one_node)); - } - else if (cond1_code == LT_EXPR) + for (i2 = 0; i2 < np2; i2++) { - cond1_code = LE_EXPR; - cond1_rhs = fold_binary (MINUS_EXPR, TREE_TYPE (cond1_rhs), - cond1_rhs, - fold_convert (TREE_TYPE (cond1_rhs), - integer_one_node)); + bool found = false; + pred_info info2 = pred2[i2]; + for (i1 = 0; i1 < np1; i1++) + { + pred_info info1 = pred1[i1]; + if (is_pred_expr_subset_of (info1, info2)) + { + found = true; + break; + } + } + if (!found) + return false; } - - if (!cond1_rhs) - return false; - - gcc_assert (cond1_code == GE_EXPR || cond1_code == LE_EXPR); - - if (cond2_code == GE_EXPR || cond2_code == GT_EXPR || - cond2_code == LE_EXPR || cond2_code == LT_EXPR) - return is_value_included_in (cond1_rhs, - cond2_rhs, cond2_code); - else if (cond2_code == NE_EXPR) - return - (is_value_included_in (cond1_rhs, - cond2_rhs, cond2_code) - && !is_value_included_in (cond2_rhs, - cond1_rhs, cond1_code)); - return false; + return true; } -/* Returns true if the domain of the condition expression - in COND is a subset of any of the sub-conditions - of the normalized condtion NORM_COND. INVERT is a flag - to indicate of the COND needs to be inverted. - REVERSE is a flag. When it is true, the check is reversed -- - it returns true if COND is a superset of any of the subconditions - of NORM_COND. */ +/* Returns true if the domain defined by + one pred chain ONE_PRED is a subset of the domain + of *PREDS. It returns false if ONE_PRED's domain is + not a subset of any of the sub-domains of PREDS + (corresponding to each individual chains in it), even + though it may be still be a subset of whole domain + of PREDS which is the union (ORed) of all its subdomains. + In other words, the result is conservative. */ static bool -is_subset_of_any (gimple cond, bool invert, - norm_cond_t norm_cond, bool reverse) +is_included_in (pred_chain one_pred, pred_chain_union preds) { size_t i; - size_t len = norm_cond->conds.length (); + size_t n = preds.length (); - for (i = 0; i < len; i++) + for (i = 0; i < n; i++) { - if (is_gcond_subset_of (cond, invert, - norm_cond->conds[i], - false, reverse)) + if (is_pred_chain_subset_of (one_pred, preds[i])) return true; } + return false; } -/* NORM_COND1 and NORM_COND2 are normalized logical/BIT OR - expressions (formed by following UD chains not control - dependence chains). The function returns true of domain - of and expression NORM_COND1 is a subset of NORM_COND2's. - The implementation is conservative, and it returns false if - it the inclusion relationship may not hold. */ +/* Compares two predicate sets PREDS1 and PREDS2 and returns + true if the domain defined by PREDS1 is a superset + of PREDS2's domain. N1 and N2 are array sizes of PREDS1 and + PREDS2 respectively. The implementation chooses not to build + generic trees (and relying on the folding capability of the + compiler), but instead performs brute force comparison of + individual predicate chains (won't be a compile time problem + as the chains are pretty short). When the function returns + false, it does not necessarily mean *PREDS1 is not a superset + of *PREDS2, but mean it may not be so since the analysis can + not prove it. In such cases, false warnings may still be + emitted. */ static bool -is_or_set_subset_of (norm_cond_t norm_cond1, - norm_cond_t norm_cond2) +is_superset_of (pred_chain_union preds1, pred_chain_union preds2) { - size_t i; - size_t len = norm_cond1->conds.length (); + size_t i, n2; + pred_chain one_pred_chain = vNULL; - for (i = 0; i < len; i++) + n2 = preds2.length (); + + for (i = 0; i < n2; i++) { - if (!is_subset_of_any (norm_cond1->conds[i], - false, norm_cond2, false)) + one_pred_chain = preds2[i]; + if (!is_included_in (one_pred_chain, preds1)) return false; } + return true; } -/* NORM_COND1 and NORM_COND2 are normalized logical AND - expressions (formed by following UD chains not control - dependence chains). The function returns true of domain - of and expression NORM_COND1 is a subset of NORM_COND2's. */ +/* Returns true if TC is AND or OR. */ -static bool -is_and_set_subset_of (norm_cond_t norm_cond1, - norm_cond_t norm_cond2) +static inline bool +is_and_or_or_p (enum tree_code tc, tree type) { - size_t i; - size_t len = norm_cond2->conds.length (); + return (tc == BIT_IOR_EXPR + || (tc == BIT_AND_EXPR + && (type == 0 || TREE_CODE (type) == BOOLEAN_TYPE))); +} - for (i = 0; i < len; i++) - { - if (!is_subset_of_any (norm_cond2->conds[i], - false, norm_cond1, true)) - return false; - } - return true; +/* Returns true if X1 is the negate of X2. */ + +static inline bool +pred_neg_p (pred_info x1, pred_info x2) +{ + enum tree_code c1, c2; + if (!operand_equal_p (x1.pred_lhs, x2.pred_lhs, 0) + || !operand_equal_p (x1.pred_rhs, x2.pred_rhs, 0)) + return false; + + c1 = x1.cond_code; + if (x1.invert == x2.invert) + c2 = invert_tree_comparison (x2.cond_code, false); + else + c2 = x2.cond_code; + + return c1 == c2; } -/* Returns true of the domain if NORM_COND1 is a subset - of that of NORM_COND2. Returns false if it can not be - proved to be so. */ +/* 1) ((x IOR y) != 0) AND (x != 0) is equivalent to (x != 0); + 2) (X AND Y) OR (!X AND Y) is equivalent to Y; + 3) X OR (!X AND Y) is equivalent to (X OR Y); + 4) ((x IAND y) != 0) || (x != 0 AND y != 0)) is equivalent to + (x != 0 AND y != 0) + 5) (X AND Y) OR (!X AND Z) OR (!Y AND Z) is equivalent to + (X AND Y) OR Z -static bool -is_norm_cond_subset_of (norm_cond_t norm_cond1, - norm_cond_t norm_cond2) + PREDS is the predicate chains, and N is the number of chains. */ + +/* Helper function to implement rule 1 above. ONE_CHAIN is + the AND predication to be simplified. */ + +static void +simplify_pred (pred_chain *one_chain) { - size_t i; - enum tree_code code1, code2; + size_t i, j, n; + bool simplified = false; + pred_chain s_chain = vNULL; - code1 = norm_cond1->cond_code; - code2 = norm_cond2->cond_code; + n = one_chain->length (); - if (code1 == BIT_AND_EXPR) + for (i = 0; i < n; i++) { - /* Both conditions are AND expressions. */ - if (code2 == BIT_AND_EXPR) - return is_and_set_subset_of (norm_cond1, norm_cond2); - /* NORM_COND1 is an AND expression, and NORM_COND2 is an OR - expression. In this case, returns true if any subexpression - of NORM_COND1 is a subset of any subexpression of NORM_COND2. */ - else if (code2 == BIT_IOR_EXPR) + pred_info *a_pred = &(*one_chain)[i]; + + if (!a_pred->pred_lhs) + continue; + if (!is_neq_zero_form_p (*a_pred)) + continue; + + gimple def_stmt = SSA_NAME_DEF_STMT (a_pred->pred_lhs); + if (gimple_code (def_stmt) != GIMPLE_ASSIGN) + continue; + if (gimple_assign_rhs_code (def_stmt) == BIT_IOR_EXPR) { - size_t len1; - len1 = norm_cond1->conds.length (); - for (i = 0; i < len1; i++) + for (j = 0; j < n; j++) { - gimple cond1 = norm_cond1->conds[i]; - if (is_subset_of_any (cond1, false, norm_cond2, false)) - return true; + pred_info *b_pred = &(*one_chain)[j]; + + if (!b_pred->pred_lhs) + continue; + if (!is_neq_zero_form_p (*b_pred)) + continue; + + if (pred_expr_equal_p (*b_pred, gimple_assign_rhs1 (def_stmt)) + || pred_expr_equal_p (*b_pred, gimple_assign_rhs2 (def_stmt))) + { + /* Mark a_pred for removal. */ + a_pred->pred_lhs = NULL; + a_pred->pred_rhs = NULL; + simplified = true; + break; + } } - return false; - } - else - { - gcc_assert (code2 == ERROR_MARK); - gcc_assert (norm_cond2->conds.length () == 1); - return is_subset_of_any (norm_cond2->conds[0], - norm_cond2->invert, norm_cond1, true); } } - /* NORM_COND1 is an OR expression */ - else if (code1 == BIT_IOR_EXPR) - { - if (code2 != code1) - return false; - return is_or_set_subset_of (norm_cond1, norm_cond2); - } - else - { - gcc_assert (code1 == ERROR_MARK); - gcc_assert (norm_cond1->conds.length () == 1); - /* Conservatively returns false if NORM_COND1 is non-decomposible - and NORM_COND2 is an AND expression. */ - if (code2 == BIT_AND_EXPR) - return false; - - if (code2 == BIT_IOR_EXPR) - return is_subset_of_any (norm_cond1->conds[0], - norm_cond1->invert, norm_cond2, false); + if (!simplified) + return; - gcc_assert (code2 == ERROR_MARK); - gcc_assert (norm_cond2->conds.length () == 1); - return is_gcond_subset_of (norm_cond1->conds[0], - norm_cond1->invert, - norm_cond2->conds[0], - norm_cond2->invert, false); + for (i = 0; i < n; i++) + { + pred_info *a_pred = &(*one_chain)[i]; + if (!a_pred->pred_lhs) + continue; + s_chain.safe_push (*a_pred); } + + one_chain->release (); + *one_chain = s_chain; } -/* Returns true of the domain of single predicate expression - EXPR1 is a subset of that of EXPR2. Returns false if it - can not be proved. */ +/* The helper function implements the rule 2 for the + OR predicate PREDS. + + 2) (X AND Y) OR (!X AND Y) is equivalent to Y. */ static bool -is_pred_expr_subset_of (use_pred_info_t expr1, - use_pred_info_t expr2) +simplify_preds_2 (pred_chain_union *preds) { - gimple cond1, cond2; - enum tree_code code1, code2; - struct norm_cond norm_cond1, norm_cond2; - bool is_subset = false; + size_t i, j, n; + bool simplified = false; + pred_chain_union s_preds = vNULL; - cond1 = expr1->cond; - cond2 = expr2->cond; - code1 = gimple_cond_code (cond1); - code2 = gimple_cond_code (cond2); + /* (X AND Y) OR (!X AND Y) is equivalent to Y. + (X AND Y) OR (X AND !Y) is equivalent to X. */ - if (expr1->invert) - code1 = invert_tree_comparison (code1, false); - if (expr2->invert) - code2 = invert_tree_comparison (code2, false); + n = preds->length (); + for (i = 0; i < n; i++) + { + pred_info x, y; + pred_chain *a_chain = &(*preds)[i]; - /* Fast path -- match exactly */ - if ((gimple_cond_lhs (cond1) == gimple_cond_lhs (cond2)) - && (gimple_cond_rhs (cond1) == gimple_cond_rhs (cond2)) - && (code1 == code2)) - return true; + if (a_chain->length () != 2) + continue; + + x = (*a_chain)[0]; + y = (*a_chain)[1]; + + for (j = 0; j < n; j++) + { + pred_chain *b_chain; + pred_info x2, y2; + + if (j == i) + continue; + + b_chain = &(*preds)[j]; + if (b_chain->length () != 2) + continue; - /* Normalize conditions. To keep NE_EXPR, do not invert - with both need inversion. */ - normalize_cond (cond1, &norm_cond1, (expr1->invert)); - normalize_cond (cond2, &norm_cond2, (expr2->invert)); + x2 = (*b_chain)[0]; + y2 = (*b_chain)[1]; - is_subset = is_norm_cond_subset_of (&norm_cond1, &norm_cond2); + if (pred_equal_p (x, x2) && pred_neg_p (y, y2)) + { + /* Kill a_chain. */ + a_chain->release (); + b_chain->release (); + b_chain->safe_push (x); + simplified = true; + break; + } + if (pred_neg_p (x, x2) && pred_equal_p (y, y2)) + { + /* Kill a_chain. */ + a_chain->release (); + b_chain->release (); + b_chain->safe_push (y); + simplified = true; + break; + } + } + } + /* Now clean up the chain. */ + if (simplified) + { + for (i = 0; i < n; i++) + { + if ((*preds)[i].is_empty ()) + continue; + s_preds.safe_push ((*preds)[i]); + } + preds->release (); + (*preds) = s_preds; + s_preds = vNULL; + } - /* Free memory */ - norm_cond1.conds.release (); - norm_cond2.conds.release (); - return is_subset ; + return simplified; } -/* Returns true if the domain of PRED1 is a subset - of that of PRED2. Returns false if it can not be proved so. */ +/* The helper function implements the rule 2 for the + OR predicate PREDS. + + 3) x OR (!x AND y) is equivalent to x OR y. */ static bool -is_pred_chain_subset_of (vec pred1, - vec pred2) +simplify_preds_3 (pred_chain_union *preds) { - size_t np1, np2, i1, i2; + size_t i, j, n; + bool simplified = false; - np1 = pred1.length (); - np2 = pred2.length (); + /* Now iteratively simplify X OR (!X AND Z ..) + into X OR (Z ...). */ - for (i2 = 0; i2 < np2; i2++) + n = preds->length (); + if (n < 2) + return false; + + for (i = 0; i < n; i++) { - bool found = false; - use_pred_info_t info2 - = pred2[i2]; - for (i1 = 0; i1 < np1; i1++) + pred_info x; + pred_chain *a_chain = &(*preds)[i]; + + if (a_chain->length () != 1) + continue; + + x = (*a_chain)[0]; + + for (j = 0; j < n; j++) { - use_pred_info_t info1 - = pred1[i1]; - if (is_pred_expr_subset_of (info1, info2)) + pred_chain *b_chain; + pred_info x2; + size_t k; + + if (j == i) + continue; + + b_chain = &(*preds)[j]; + if (b_chain->length () < 2) + continue; + + for (k = 0; k < b_chain->length (); k++) { - found = true; - break; + x2 = (*b_chain)[k]; + if (pred_neg_p (x, x2)) + { + b_chain->unordered_remove (k); + simplified = true; + break; + } } } - if (!found) - return false; } - return true; + return simplified; } -/* Returns true if the domain defined by - one pred chain ONE_PRED is a subset of the domain - of *PREDS. It returns false if ONE_PRED's domain is - not a subset of any of the sub-domains of PREDS ( - corresponding to each individual chains in it), even - though it may be still be a subset of whole domain - of PREDS which is the union (ORed) of all its subdomains. - In other words, the result is conservative. */ +/* The helper function implements the rule 4 for the + OR predicate PREDS. + + 2) ((x AND y) != 0) OR (x != 0 AND y != 0) is equivalent to + (x != 0 ANd y != 0). */ static bool -is_included_in (vec one_pred, - vec *preds, - size_t n) +simplify_preds_4 (pred_chain_union *preds) { - size_t i; + size_t i, j, n; + bool simplified = false; + pred_chain_union s_preds = vNULL; + gimple def_stmt; + n = preds->length (); for (i = 0; i < n; i++) { - if (is_pred_chain_subset_of (one_pred, preds[i])) - return true; + pred_info z; + pred_chain *a_chain = &(*preds)[i]; + + if (a_chain->length () != 1) + continue; + + z = (*a_chain)[0]; + + if (!is_neq_zero_form_p (z)) + continue; + + def_stmt = SSA_NAME_DEF_STMT (z.pred_lhs); + if (gimple_code (def_stmt) != GIMPLE_ASSIGN) + continue; + + if (gimple_assign_rhs_code (def_stmt) != BIT_AND_EXPR) + continue; + + for (j = 0; j < n; j++) + { + pred_chain *b_chain; + pred_info x2, y2; + + if (j == i) + continue; + + b_chain = &(*preds)[j]; + if (b_chain->length () != 2) + continue; + + x2 = (*b_chain)[0]; + y2 = (*b_chain)[1]; + if (!is_neq_zero_form_p (x2) + || !is_neq_zero_form_p (y2)) + continue; + + if ((pred_expr_equal_p (x2, gimple_assign_rhs1 (def_stmt)) + && pred_expr_equal_p (y2, gimple_assign_rhs2 (def_stmt))) + || (pred_expr_equal_p (x2, gimple_assign_rhs2 (def_stmt)) + && pred_expr_equal_p (y2, gimple_assign_rhs1 (def_stmt)))) + { + /* Kill a_chain. */ + a_chain->release (); + simplified = true; + break; + } + } + } + /* Now clean up the chain. */ + if (simplified) + { + for (i = 0; i < n; i++) + { + if ((*preds)[i].is_empty ()) + continue; + s_preds.safe_push ((*preds)[i]); + } + preds->release (); + (*preds) = s_preds; + s_preds = vNULL; } - return false; + return simplified; } -/* compares two predicate sets PREDS1 and PREDS2 and returns - true if the domain defined by PREDS1 is a superset - of PREDS2's domain. N1 and N2 are array sizes of PREDS1 and - PREDS2 respectively. The implementation chooses not to build - generic trees (and relying on the folding capability of the - compiler), but instead performs brute force comparison of - individual predicate chains (won't be a compile time problem - as the chains are pretty short). When the function returns - false, it does not necessarily mean *PREDS1 is not a superset - of *PREDS2, but mean it may not be so since the analysis can - not prove it. In such cases, false warnings may still be - emitted. */ -static bool -is_superset_of (vec *preds1, - size_t n1, - vec *preds2, - size_t n2) +/* This function simplifies predicates in PREDS. */ + +static void +simplify_preds (pred_chain_union *preds, gimple use_or_def, bool is_use) { - size_t i; - vec one_pred_chain; + size_t i, n; + bool changed = false; - for (i = 0; i < n2; i++) + if (dump_file && dump_flags & TDF_DETAILS) { - one_pred_chain = preds2[i]; - if (!is_included_in (one_pred_chain, preds1, n1)) - return false; + fprintf (dump_file, "[BEFORE SIMPLICATION -- "); + dump_predicates (use_or_def, *preds, is_use ? "[USE]:\n" : "[DEF]:\n"); } - return true; + for (i = 0; i < preds->length (); i++) + simplify_pred (&(*preds)[i]); + + n = preds->length (); + if (n < 2) + return; + + do + { + changed = false; + if (simplify_preds_2 (preds)) + changed = true; + + /* Now iteratively simplify X OR (!X AND Z ..) + into X OR (Z ...). */ + if (simplify_preds_3 (preds)) + changed = true; + + if (simplify_preds_4 (preds)) + changed = true; + + } while (changed); + + return; } -/* Comparison function used by qsort. It is used to - sort predicate chains to allow predicate - simplification. */ +/* This is a helper function which attempts to normalize predicate chains + by following UD chains. It basically builds up a big tree of either IOR + operations or AND operations, and convert the IOR tree into a + pred_chain_union or BIT_AND tree into a pred_chain. + Example: -static int -pred_chain_length_cmp (const void *p1, const void *p2) + _3 = _2 RELOP1 _1; + _6 = _5 RELOP2 _4; + _9 = _8 RELOP3 _7; + _10 = _3 | _6; + _12 = _9 | _0; + _t = _10 | _12; + + then _t != 0 will be normalized into a pred_chain_union + + (_2 RELOP1 _1) OR (_5 RELOP2 _4) OR (_8 RELOP3 _7) OR (_0 != 0) + + Similarly given, + + _3 = _2 RELOP1 _1; + _6 = _5 RELOP2 _4; + _9 = _8 RELOP3 _7; + _10 = _3 & _6; + _12 = _9 & _0; + + then _t != 0 will be normalized into a pred_chain: + (_2 RELOP1 _1) AND (_5 RELOP2 _4) AND (_8 RELOP3 _7) AND (_0 != 0) + + */ + +/* This is a helper function that stores a PRED into NORM_PREDS. */ + +inline static void +push_pred (pred_chain_union *norm_preds, pred_info pred) { - use_pred_info_t i1, i2; - vec const *chain1 - = (vec const *)p1; - vec const *chain2 - = (vec const *)p2; + pred_chain pred_chain = vNULL; + pred_chain.safe_push (pred); + norm_preds->safe_push (pred_chain); +} - if (chain1->length () != chain2->length ()) - return (chain1->length () - chain2->length ()); +/* A helper function that creates a predicate of the form + OP != 0 and push it WORK_LIST. */ - i1 = (*chain1)[0]; - i2 = (*chain2)[0]; +inline static void +push_to_worklist (tree op, vec *work_list) +{ + pred_info arg_pred; + arg_pred.pred_lhs = op; + arg_pred.pred_rhs = integer_zero_node; + arg_pred.cond_code = NE_EXPR; + arg_pred.invert = false; + work_list->safe_push (arg_pred); +} - /* Allow predicates with similar prefix come together. */ - if (!i1->invert && i2->invert) - return -1; - else if (i1->invert && !i2->invert) - return 1; +/* A helper that generates a pred_info from a gimple assignment + CMP_ASSIGN with comparison rhs. */ - return gimple_uid (i1->cond) - gimple_uid (i2->cond); +static pred_info +get_pred_info_from_cmp (gimple cmp_assign) +{ + pred_info n_pred; + n_pred.pred_lhs = gimple_assign_rhs1 (cmp_assign); + n_pred.pred_rhs = gimple_assign_rhs2 (cmp_assign); + n_pred.cond_code = gimple_assign_rhs_code (cmp_assign); + n_pred.invert = false; + return n_pred; } -/* x OR (!x AND y) is equivalent to x OR y. - This function normalizes x1 OR (!x1 AND x2) OR (!x1 AND !x2 AND x3) - into x1 OR x2 OR x3. PREDS is the predicate chains, and N is - the number of chains. Returns true if normalization happens. */ +/* Returns true if the PHI is a degenerated phi with + all args with the same value (relop). In that case, *PRED + will be updated to that value. */ static bool -normalize_preds (vec *preds, size_t *n) +is_degenerated_phi (gimple phi, pred_info *pred_p) { - size_t i, j, ll; - vec pred_chain; - vec x = vNULL; - use_pred_info_t xj = 0, nxj = 0; + int i, n; + tree op0; + gimple def0; + pred_info pred0; - if (*n < 2) + n = gimple_phi_num_args (phi); + op0 = gimple_phi_arg_def (phi, 0); + + if (TREE_CODE (op0) != SSA_NAME) return false; - /* First sort the chains in ascending order of lengths. */ - qsort (preds, *n, sizeof (void *), pred_chain_length_cmp); - pred_chain = preds[0]; - ll = pred_chain.length (); - if (ll != 1) - { - if (ll == 2) - { - use_pred_info_t xx, yy, xx2, nyy; - vec pred_chain2 = preds[1]; - if (pred_chain2.length () != 2) - return false; - - /* See if simplification x AND y OR x AND !y is possible. */ - xx = pred_chain[0]; - yy = pred_chain[1]; - xx2 = pred_chain2[0]; - nyy = pred_chain2[1]; - if (gimple_cond_lhs (xx->cond) != gimple_cond_lhs (xx2->cond) - || gimple_cond_rhs (xx->cond) != gimple_cond_rhs (xx2->cond) - || gimple_cond_code (xx->cond) != gimple_cond_code (xx2->cond) - || (xx->invert != xx2->invert)) - return false; - if (gimple_cond_lhs (yy->cond) != gimple_cond_lhs (nyy->cond) - || gimple_cond_rhs (yy->cond) != gimple_cond_rhs (nyy->cond) - || gimple_cond_code (yy->cond) != gimple_cond_code (nyy->cond) - || (yy->invert == nyy->invert)) - return false; - - /* Now merge the first two chains. */ - free (yy); - free (nyy); - free (xx2); - pred_chain.release (); - pred_chain2.release (); - pred_chain.safe_push (xx); - preds[0] = pred_chain; - for (i = 1; i < *n - 1; i++) - preds[i] = preds[i + 1]; - - preds[*n - 1].create (0); - *n = *n - 1; - } - else - return false; - } - - x.safe_push (pred_chain[0]); - - /* The loop extracts x1, x2, x3, etc from chains - x1 OR (!x1 AND x2) OR (!x1 AND !x2 AND x3) OR ... */ - for (i = 1; i < *n; i++) + def0 = SSA_NAME_DEF_STMT (op0); + if (gimple_code (def0) != GIMPLE_ASSIGN) + return false; + if (TREE_CODE_CLASS (gimple_assign_rhs_code (def0)) + != tcc_comparison) + return false; + pred0 = get_pred_info_from_cmp (def0); + + for (i = 1; i < n; ++i) { - pred_chain = preds[i]; - if (pred_chain.length () != i + 1) + gimple def; + pred_info pred; + tree op = gimple_phi_arg_def (phi, i); + + if (TREE_CODE (op) != SSA_NAME) return false; - for (j = 0; j < i; j++) + def = SSA_NAME_DEF_STMT (op); + if (gimple_code (def) != GIMPLE_ASSIGN) + return false; + if (TREE_CODE_CLASS (gimple_assign_rhs_code (def)) + != tcc_comparison) + return false; + pred = get_pred_info_from_cmp (def); + if (!pred_equal_p (pred, pred0)) + return false; + } + + *pred_p = pred0; + return true; +} + +/* Normalize one predicate PRED + 1) if PRED can no longer be normlized, put it into NORM_PREDS. + 2) otherwise if PRED is of the form x != 0, follow x's definition + and put normalized predicates into WORK_LIST. */ + +static void +normalize_one_pred_1 (pred_chain_union *norm_preds, + pred_chain *norm_chain, + pred_info pred, + enum tree_code and_or_code, + vec *work_list) +{ + if (!is_neq_zero_form_p (pred)) + { + if (and_or_code == BIT_IOR_EXPR) + push_pred (norm_preds, pred); + else + norm_chain->safe_push (pred); + return; + } + + gimple def_stmt = SSA_NAME_DEF_STMT (pred.pred_lhs); + + if (gimple_code (def_stmt) == GIMPLE_PHI + && is_degenerated_phi (def_stmt, &pred)) + work_list->safe_push (pred); + else if (gimple_code (def_stmt) == GIMPLE_PHI + && and_or_code == BIT_IOR_EXPR) + { + int i, n; + n = gimple_phi_num_args (def_stmt); + + /* If we see non zero constant, we should punt. The predicate + * should be one guarding the phi edge. */ + for (i = 0; i < n; ++i) { - xj = x[j]; - nxj = pred_chain[j]; - - /* Check if nxj is !xj */ - if (gimple_cond_lhs (xj->cond) != gimple_cond_lhs (nxj->cond) - || gimple_cond_rhs (xj->cond) != gimple_cond_rhs (nxj->cond) - || gimple_cond_code (xj->cond) != gimple_cond_code (nxj->cond) - || (xj->invert == nxj->invert)) - return false; + tree op = gimple_phi_arg_def (def_stmt, i); + if (TREE_CODE (op) == INTEGER_CST && !integer_zerop (op)) + { + push_pred (norm_preds, pred); + return; + } } - x.safe_push (pred_chain[i]); - } + for (i = 0; i < n; ++i) + { + tree op = gimple_phi_arg_def (def_stmt, i); + if (integer_zerop (op)) + continue; + + push_to_worklist (op, work_list); + } + } + else if (gimple_code (def_stmt) != GIMPLE_ASSIGN) + { + if (and_or_code == BIT_IOR_EXPR) + push_pred (norm_preds, pred); + else + norm_chain->safe_push (pred); + } + else if (gimple_assign_rhs_code (def_stmt) == and_or_code) + { + push_to_worklist (gimple_assign_rhs1 (def_stmt), + work_list); + push_to_worklist (gimple_assign_rhs2 (def_stmt), + work_list); + } + else if (TREE_CODE_CLASS (gimple_assign_rhs_code (def_stmt)) + == tcc_comparison) + { + pred_info n_pred = get_pred_info_from_cmp (def_stmt); + if (and_or_code == BIT_IOR_EXPR) + push_pred (norm_preds, n_pred); + else + norm_chain->safe_push (n_pred); + } + else + { + if (and_or_code == BIT_IOR_EXPR) + push_pred (norm_preds, pred); + else + norm_chain->safe_push (pred); + } +} + +/* Normalize PRED and store the normalized predicates into NORM_PREDS. */ + +static void +normalize_one_pred (pred_chain_union *norm_preds, + pred_info pred) +{ + vec work_list = vNULL; + enum tree_code and_or_code = ERROR_MARK; + pred_chain norm_chain = vNULL; - /* Now normalize the pred chains using the extraced x1, x2, x3 etc. */ - for (j = 0; j < *n; j++) + if (!is_neq_zero_form_p (pred)) { - use_pred_info_t t; - xj = x[j]; + push_pred (norm_preds, pred); + return; + } - t = XNEW (struct use_pred_info); - *t = *xj; + gimple def_stmt = SSA_NAME_DEF_STMT (pred.pred_lhs); + if (gimple_code (def_stmt) == GIMPLE_ASSIGN) + and_or_code = gimple_assign_rhs_code (def_stmt); + if (and_or_code != BIT_IOR_EXPR + && and_or_code != BIT_AND_EXPR) + { + if (TREE_CODE_CLASS (and_or_code) + == tcc_comparison) + { + pred_info n_pred = get_pred_info_from_cmp (def_stmt); + push_pred (norm_preds, n_pred); + } + else + push_pred (norm_preds, pred); + return; + } - x[j] = t; + work_list.safe_push (pred); + while (!work_list.is_empty ()) + { + pred_info a_pred = work_list.pop (); + normalize_one_pred_1 (norm_preds, &norm_chain, a_pred, + and_or_code, &work_list); } + if (and_or_code == BIT_AND_EXPR) + norm_preds->safe_push (norm_chain); + + work_list.release (); +} - for (i = 0; i < *n; i++) +static void +normalize_one_pred_chain (pred_chain_union *norm_preds, + pred_chain one_chain) +{ + vec work_list = vNULL; + pred_chain norm_chain = vNULL; + size_t i; + + for (i = 0; i < one_chain.length (); i++) + work_list.safe_push (one_chain[i]); + + while (!work_list.is_empty ()) { - pred_chain = preds[i]; - for (j = 0; j < pred_chain.length (); j++) - free (pred_chain[j]); - pred_chain.release (); - /* A new chain. */ - pred_chain.safe_push (x[i]); - preds[i] = pred_chain; + pred_info a_pred = work_list.pop (); + normalize_one_pred_1 (0, &norm_chain, a_pred, + BIT_AND_EXPR, &work_list); } - return true; + + norm_preds->safe_push (norm_chain); + work_list.release (); } +/* Normalize predicate chains PREDS and returns the normalized one. */ + +static pred_chain_union +normalize_preds (pred_chain_union preds, gimple use_or_def, bool is_use) +{ + pred_chain_union norm_preds = vNULL; + size_t n = preds.length (); + size_t i; + + if (dump_file && dump_flags & TDF_DETAILS) + { + fprintf (dump_file, "[BEFORE NORMALIZATION --"); + dump_predicates (use_or_def, preds, is_use ? "[USE]:\n" : "[DEF]:\n"); + } + + for (i = 0; i < n; i++) + { + if (preds[i].length () != 1) + normalize_one_pred_chain (&norm_preds, preds[i]); + else + { + normalize_one_pred (&norm_preds, preds[i][0]); + preds[i].release (); + } + } + + if (dump_file) + { + fprintf (dump_file, "[AFTER NORMALIZATION -- "); + dump_predicates (use_or_def, norm_preds, is_use ? "[USE]:\n" : "[DEF]:\n"); + } + + preds.release (); + return norm_preds; +} /* Computes the predicates that guard the use and checks @@ -1917,12 +2103,11 @@ is_use_properly_guarded (gimple use_stmt, basic_block use_bb, gimple phi, unsigned uninit_opnds, - struct pointer_set_t *visited_phis) + pointer_set_t *visited_phis) { basic_block phi_bb; - vec *preds = 0; - vec *def_preds = 0; - size_t num_preds = 0, num_def_preds = 0; + pred_chain_union preds = vNULL; + pred_chain_union def_preds = vNULL; bool has_valid_preds = false; bool is_properly_guarded = false; @@ -1934,49 +2119,44 @@ is_use_properly_guarded (gimple use_stmt, if (is_non_loop_exit_postdominating (use_bb, phi_bb)) return false; - has_valid_preds = find_predicates (&preds, &num_preds, - phi_bb, use_bb); + has_valid_preds = find_predicates (&preds, phi_bb, use_bb); if (!has_valid_preds) { - destroy_predicate_vecs (num_preds, preds); + destroy_predicate_vecs (preds); return false; } - if (dump_file) - dump_predicates (use_stmt, num_preds, preds, - "\nUse in stmt "); - - has_valid_preds = find_def_preds (&def_preds, - &num_def_preds, phi); + /* Try to prune the dead incoming phi edges. */ + is_properly_guarded + = use_pred_not_overlap_with_undef_path_pred (preds, phi, uninit_opnds, + visited_phis); - if (has_valid_preds) + if (is_properly_guarded) { - bool normed; - if (dump_file) - dump_predicates (phi, num_def_preds, def_preds, - "Operand defs of phi "); + destroy_predicate_vecs (preds); + return true; + } - normed = normalize_preds (def_preds, &num_def_preds); - if (normed && dump_file) - { - fprintf (dump_file, "\nNormalized to\n"); - dump_predicates (phi, num_def_preds, def_preds, - "Operand defs of phi "); - } - is_properly_guarded = - is_superset_of (def_preds, num_def_preds, - preds, num_preds); + has_valid_preds = find_def_preds (&def_preds, phi); + + if (!has_valid_preds) + { + destroy_predicate_vecs (preds); + destroy_predicate_vecs (def_preds); + return false; } - /* further prune the dead incoming phi edges. */ - if (!is_properly_guarded) - is_properly_guarded - = use_pred_not_overlap_with_undef_path_pred ( - num_preds, preds, phi, uninit_opnds, visited_phis); + simplify_preds (&preds, use_stmt, true); + preds = normalize_preds (preds, use_stmt, true); + + simplify_preds (&def_preds, phi, false); + def_preds = normalize_preds (def_preds, phi, false); + + is_properly_guarded = is_superset_of (def_preds, preds); - destroy_predicate_vecs (num_preds, preds); - destroy_predicate_vecs (num_def_preds, def_preds); + destroy_predicate_vecs (preds); + destroy_predicate_vecs (def_preds); return is_properly_guarded; } @@ -1992,7 +2172,7 @@ is_use_properly_guarded (gimple use_stmt, static gimple find_uninit_use (gimple phi, unsigned uninit_opnds, vec *worklist, - struct pointer_set_t *added_to_worklist) + pointer_set_t *added_to_worklist) { tree phi_result; use_operand_p use_p; @@ -2003,7 +2183,7 @@ find_uninit_use (gimple phi, unsigned uninit_opnds, FOR_EACH_IMM_USE_FAST (use_p, iter, phi_result) { - struct pointer_set_t *visited_phis; + pointer_set_t *visited_phis; basic_block use_bb; use_stmt = USE_STMT (use_p); @@ -2018,10 +2198,7 @@ find_uninit_use (gimple phi, unsigned uninit_opnds, else use_bb = gimple_bb (use_stmt); - if (is_use_properly_guarded (use_stmt, - use_bb, - phi, - uninit_opnds, + if (is_use_properly_guarded (use_stmt, use_bb, phi, uninit_opnds, visited_phis)) { pointer_set_destroy (visited_phis); @@ -2040,8 +2217,7 @@ find_uninit_use (gimple phi, unsigned uninit_opnds, /* Found a phi use that is not guarded, add the phi to the worklist. */ - if (!pointer_set_insert (added_to_worklist, - use_stmt)) + if (!pointer_set_insert (added_to_worklist, use_stmt)) { if (dump_file && (dump_flags & TDF_DETAILS)) { @@ -2067,7 +2243,7 @@ find_uninit_use (gimple phi, unsigned uninit_opnds, static void warn_uninitialized_phi (gimple phi, vec *worklist, - struct pointer_set_t *added_to_worklist) + pointer_set_t *added_to_worklist) { unsigned uninit_opnds; gimple uninit_use_stmt = 0; @@ -2115,7 +2291,7 @@ execute_late_warn_uninitialized (void) basic_block bb; gimple_stmt_iterator gsi; vec worklist = vNULL; - struct pointer_set_t *added_to_worklist; + pointer_set_t *added_to_worklist; calculate_dominance_info (CDI_DOMINATORS); calculate_dominance_info (CDI_POST_DOMINATORS); @@ -2229,8 +2405,7 @@ execute_early_warn_uninitialized (void) execute_late_warn_uninitialized only runs with optimization. With optimization we want to warn about possible uninitialized as late as possible, thus don't do it here. However, without - optimization we need to warn here about "may be uninitialized". - */ + optimization we need to warn here about "may be uninitialized". */ calculate_dominance_info (CDI_POST_DOMINATORS); warn_uninitialized_vars (/*warn_possibly_uninitialized=*/!optimize); @@ -2280,5 +2455,3 @@ make_pass_early_warn_uninitialized (gcc::context *ctxt) { return new pass_early_warn_uninitialized (ctxt); } - - -- cgit v1.2.1 From acf40e7ea585f2d89ed91fa5215ed79980323c4e Mon Sep 17 00:00:00 2001 From: jsm28 Date: Fri, 3 Jan 2014 02:05:44 +0000 Subject: libgcc: * config/rs6000/ibm-ldouble.c (__gcc_qdiv): Scale up arguments in case of small numerator and finite nonzero result. gcc/testsuite: * gcc.target/powerpc/rs6000-ldouble-3.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206310 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 359421a406d..ebc453d5901 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-01-02 Joseph Myers + + * gcc.target/powerpc/rs6000-ldouble-3.c: New test. + 2014-01-02 Marc Glisse PR c++/59641 diff --git a/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c b/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c new file mode 100644 index 00000000000..1c78052e6d7 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c @@ -0,0 +1,21 @@ +/* Test accuracy of long double division (glibc bug 15396). */ +/* { dg-do run { target powerpc*-*-linux* powerpc*-*-darwin* powerpc*-*-aix* rs6000-*-* } } */ +/* { dg-options "-mlong-double-128" } */ + +extern void exit (int); +extern void abort (void); + +volatile long double a = 0x1p-1024L; +volatile long double b = 0x3p-53L; +volatile long double r; +volatile long double expected = 0x1.55555555555555555555555555p-973L; + +int +main (void) +{ + r = a / b; + /* Allow error up to 2ulp. */ + if (__builtin_fabsl (r - expected) > 0x1p-1073L) + abort (); + exit (0); +} -- cgit v1.2.1 From 47f1b5445136fb5f8ec0de48130a3d8ded5deaac Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Fri, 3 Jan 2014 08:42:16 +0000 Subject: * gnatvsn.ads (Current_Year): Bump to 2014. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206311 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 4 ++++ gcc/ada/gnatvsn.ads | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index f7dad6cefae..153b42442f2 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2014-01-03 Eric Botcazou + + * gnatvsn.ads (Current_Year): Bump to 2014. + 2014-01-02 Tobias Burnus * gnat_ugn.texi: Bump @copying's copyright year. diff --git a/gcc/ada/gnatvsn.ads b/gcc/ada/gnatvsn.ads index c680ec2dea0..d1f95621b98 100644 --- a/gcc/ada/gnatvsn.ads +++ b/gcc/ada/gnatvsn.ads @@ -92,7 +92,7 @@ package Gnatvsn is Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version; -- Version string stored in e.g. ALI files - Current_Year : constant String := "2013"; + Current_Year : constant String := "2014"; -- Used in printing copyright messages end Gnatvsn; -- cgit v1.2.1 From ca94bc0ddf82d30bf92cd8ee4919bf1e10dc19f5 Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 3 Jan 2014 10:51:42 +0000 Subject: * config/i386/i386.md (MODE_SIZE): New mode attribute. (push splitter): Use instead of GET_MODE_SIZE (mode). (lea splitter): Use instead of GET_MODE_SIZE (mode). (mov -1, reg peephole2): Likewise. * config/i386/sse.md (*mov_internal, _storeu, _storedqu, _andnot3, *3, *andnot3, 3): Likewise. * config/i386/subst.md (mask_mode512bit_condition, sd_mask_mode512bit_condition): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206312 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 18 ++++++++++++++++-- gcc/config/i386/i386.md | 20 +++++++++++++++++--- gcc/config/i386/sse.md | 24 ++++++++++++------------ gcc/config/i386/subst.md | 4 ++-- 4 files changed, 47 insertions(+), 19 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bfe89d486bd..e4d71d700e9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,8 +1,22 @@ +2014-01-03 Jakub Jelinek + + * config/i386/i386.md (MODE_SIZE): New mode attribute. + (push splitter): Use instead of + GET_MODE_SIZE (mode). + (lea splitter): Use instead of GET_MODE_SIZE (mode). + (mov -1, reg peephole2): Likewise. + * config/i386/sse.md (*mov_internal, + _storeu, + _storedqu, _andnot3, + *3, *andnot3, + 3): Likewise. + * config/i386/subst.md (mask_mode512bit_condition, + sd_mask_mode512bit_condition): Likewise. + 2014-01-02 Xinliang David Li PR tree-optimization/59303 - * tree-ssa-uninit.c (is_use_properly_guarded): - Main cleanup. + * tree-ssa-uninit.c (is_use_properly_guarded): Main cleanup. (dump_predicates): Better output format. (pred_equal_p): New function. (is_neq_relop_p): Ditto. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index a3f0c28e4ec..de0b2dd771b 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -914,6 +914,20 @@ (define_mode_iterator DWI [(DI "!TARGET_64BIT") (TI "TARGET_64BIT")]) +;; GET_MODE_SIZE for selected modes. As GET_MODE_SIZE is not +;; compile time constant, it is faster to use than +;; GET_MODE_SIZE (mode). For XFmode which depends on +;; command line options just use GET_MODE_SIZE macro. +(define_mode_attr MODE_SIZE [(QI "1") (HI "2") (SI "4") (DI "8") (TI "16") + (SF "4") (DF "8") (XF "GET_MODE_SIZE (XFmode)") + (V16QI "16") (V32QI "32") (V64QI "64") + (V8HI "16") (V16HI "32") (V32HI "64") + (V4SI "16") (V8SI "32") (V16SI "64") + (V2DI "16") (V4DI "32") (V8DI "64") + (V1TI "16") (V2TI "32") (V4TI "64") + (V2DF "16") (V4DF "32") (V8DF "64") + (V4SF "16") (V8SF "32") (V16SF "64")]) + ;; Double word integer modes as mode attribute. (define_mode_attr DWI [(QI "HI") (HI "SI") (SI "DI") (DI "TI")]) (define_mode_attr dwi [(QI "hi") (HI "si") (SI "di") (DI "ti")]) @@ -2734,7 +2748,7 @@ "reload_completed" [(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (match_dup 2))) (set (mem:SF (reg:P SP_REG)) (match_dup 1))] - "operands[2] = GEN_INT (-GET_MODE_SIZE (mode));") + "operands[2] = GEN_INT (-);") (define_split [(set (match_operand:SF 0 "push_operand") @@ -5770,7 +5784,7 @@ enum machine_mode mode = mode; rtx pat; - if (GET_MODE_SIZE (mode) < GET_MODE_SIZE (SImode)) + if ( < GET_MODE_SIZE (SImode)) { mode = SImode; operands[0] = gen_lowpart (mode, operands[0]); @@ -17403,7 +17417,7 @@ [(parallel [(set (match_dup 0) (const_int -1)) (clobber (reg:CC FLAGS_REG))])] { - if (GET_MODE_SIZE (mode) < GET_MODE_SIZE (SImode)) + if ( < GET_MODE_SIZE (SImode)) operands[0] = gen_lowpart (SImode, operands[0]); }) diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 3016ef605db..405f9988d9b 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -669,7 +669,7 @@ /* There is no evex-encoded vmov* for sizes smaller than 64-bytes in avx512f, so we need to use workarounds, to access sse registers 16-31, which are evex-only. */ - if (TARGET_AVX512F && GET_MODE_SIZE (mode) < 64 + if (TARGET_AVX512F && < 64 && ((REG_P (operands[0]) && EXT_REX_SSE_REGNO_P (REGNO (operands[0]))) || (REG_P (operands[1]) @@ -677,18 +677,18 @@ { if (memory_operand (operands[0], mode)) { - if (GET_MODE_SIZE (mode) == 32) + if ( == 32) return "vextract64x4\t{$0x0, %g1, %0|%0, %g1, 0x0}"; - else if (GET_MODE_SIZE (mode) == 16) + else if ( == 16) return "vextract32x4\t{$0x0, %g1, %0|%0, %g1, 0x0}"; else gcc_unreachable (); } else if (memory_operand (operands[1], mode)) { - if (GET_MODE_SIZE (mode) == 32) + if ( == 32) return "vbroadcast64x4\t{%1, %g0|%g0, %1}"; - else if (GET_MODE_SIZE (mode) == 16) + else if ( == 16) return "vbroadcast32x4\t{%1, %g0|%g0, %1}"; else gcc_unreachable (); @@ -759,7 +759,7 @@ (set (attr "mode") (cond [(match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL") (const_string "") - (and (match_test "GET_MODE_SIZE (mode) == 16") + (and (match_test " == 16") (and (eq_attr "alternative" "2") (match_test "TARGET_SSE_TYPELESS_STORES"))) (const_string "") @@ -998,7 +998,7 @@ (set_attr "ssememalign" "8") (set_attr "prefix" "maybe_vex") (set (attr "mode") - (cond [(and (match_test "GET_MODE_SIZE (mode) == 16") + (cond [(and (match_test " == 16") (ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL") (match_test "TARGET_SSE_TYPELESS_STORES"))) (const_string "") @@ -1127,7 +1127,7 @@ (const_string "1"))) (set_attr "prefix" "maybe_vex") (set (attr "mode") - (cond [(and (match_test "GET_MODE_SIZE (mode) == 16") + (cond [(and (match_test " == 16") (ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL") (match_test "TARGET_SSE_TYPELESS_STORES"))) (const_string "") @@ -2363,7 +2363,7 @@ } /* There is no vandnp[sd]. Use vpandnq. */ - if (GET_MODE_SIZE (mode) == 64) + if ( == 64) { suffix = "q"; ops = "vpandn%s\t{%%2, %%1, %%0|%%0, %%1, %%2}"; @@ -2435,7 +2435,7 @@ } /* There is no vp[sd]. Use vpq. */ - if (GET_MODE_SIZE (mode) == 64) + if ( == 64) { suffix = "q"; ops = "vp%s\t{%%2, %%1, %%0|%%0, %%1, %%2}"; @@ -8940,7 +8940,7 @@ (const_string "") (match_test "TARGET_AVX") (if_then_else - (match_test "GET_MODE_SIZE (mode) > 16") + (match_test " > 16") (const_string "V8SF") (const_string "")) (ior (not (match_test "TARGET_SSE2")) @@ -9032,7 +9032,7 @@ (const_string "") (match_test "TARGET_AVX") (if_then_else - (match_test "GET_MODE_SIZE (mode) > 16") + (match_test " > 16") (const_string "V8SF") (const_string "")) (ior (not (match_test "TARGET_SSE2")) diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md index 1c177ac448e..7fd39487f96 100644 --- a/gcc/config/i386/subst.md +++ b/gcc/config/i386/subst.md @@ -51,7 +51,7 @@ (define_subst_attr "mask_operand18" "mask" "" "%{%19%}%N18") (define_subst_attr "mask_operand19" "mask" "" "%{%20%}%N19") (define_subst_attr "mask_codefor" "mask" "*" "") -(define_subst_attr "mask_mode512bit_condition" "mask" "1" "(GET_MODE_SIZE (mode) == 64)") +(define_subst_attr "mask_mode512bit_condition" "mask" "1" "( == 64)") (define_subst_attr "store_mask_constraint" "mask" "vm" "v") (define_subst_attr "store_mask_predicate" "mask" "nonimmediate_operand" "register_operand") (define_subst_attr "mask_prefix" "mask" "vex" "evex") @@ -85,7 +85,7 @@ (define_subst_attr "sd_mask_op4" "sd" "" "%{%5%}%N4") (define_subst_attr "sd_mask_op5" "sd" "" "%{%6%}%N5") (define_subst_attr "sd_mask_codefor" "sd" "*" "") -(define_subst_attr "sd_mask_mode512bit_condition" "sd" "1" "(GET_MODE_SIZE (mode) == 64)") +(define_subst_attr "sd_mask_mode512bit_condition" "sd" "1" "( == 64)") (define_subst "sd" [(set (match_operand:SUBST_V 0) -- cgit v1.2.1 From 4a7973e17f0725fa61793b53ea888d3e8d2a1cfa Mon Sep 17 00:00:00 2001 From: paolo Date: Fri, 3 Jan 2014 11:11:31 +0000 Subject: /cp 2014-01-03 Paolo Carlini Core DR 1442 PR c++/59165 * parser.c (cp_parser_perform_range_for_lookup): Don't pass true as include_std to perform_koenig_lookup. (cp_parser_postfix_expression): Adjust. * pt.c (tsubst_copy_and_build): Likewise. * semantics.c (perform_koenig_lookup): Remove bool parameter. (omp_reduction_lookup): Adjust. * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter. (lookup_arg_dependent): Likewise. (lookup_function_nonclass): Adjust. * name-lookup.h: Adjust declaration. * cp-tree.h: Likewise. /testsuite 2014-01-03 Paolo Carlini Core DR 1442 PR c++/59165 * g++.dg/cpp0x/range-for28.C: New. * g++.dg/cpp0x/range-for3.C: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206313 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 16 ++++++++++++++++ gcc/cp/cp-tree.h | 2 +- gcc/cp/name-lookup.c | 12 ++++-------- gcc/cp/name-lookup.h | 2 +- gcc/cp/parser.c | 4 ---- gcc/cp/pt.c | 3 +-- gcc/cp/semantics.c | 10 ++++------ gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/g++.dg/cpp0x/range-for28.C | 11 +++++++++++ gcc/testsuite/g++.dg/cpp0x/range-for3.C | 2 +- 10 files changed, 46 insertions(+), 23 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/range-for28.C (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 006c85ba8ef..e89bc50baa8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,19 @@ +2014-01-03 Paolo Carlini + + Core DR 1442 + PR c++/59165 + * parser.c (cp_parser_perform_range_for_lookup): Don't pass true + as include_std to perform_koenig_lookup. + (cp_parser_postfix_expression): Adjust. + * pt.c (tsubst_copy_and_build): Likewise. + * semantics.c (perform_koenig_lookup): Remove bool parameter. + (omp_reduction_lookup): Adjust. + * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter. + (lookup_arg_dependent): Likewise. + (lookup_function_nonclass): Adjust. + * name-lookup.h: Adjust declaration. + * cp-tree.h: Likewise. + 2014-01-02 Marc Glisse PR c++/59087 diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index c2bd04ecf1c..bdae500d374 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -5744,7 +5744,7 @@ extern tree finish_stmt_expr_expr (tree, tree); extern tree finish_stmt_expr (tree, bool); extern tree stmt_expr_value_expr (tree); bool empty_expr_stmt_p (tree); -extern tree perform_koenig_lookup (tree, vec *, bool, +extern tree perform_koenig_lookup (tree, vec *, tsubst_flags_t); extern tree finish_call_expr (tree, vec **, bool, bool, tsubst_flags_t); diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 96850116d98..28f998d7fd7 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -4879,7 +4879,7 @@ lookup_function_nonclass (tree name, vec *args, bool block_p) return lookup_arg_dependent (name, lookup_name_real (name, 0, 1, block_p, 0, 0), - args, false); + args); } tree @@ -5578,8 +5578,7 @@ arg_assoc (struct arg_lookup *k, tree n) are the functions found in normal lookup. */ static tree -lookup_arg_dependent_1 (tree name, tree fns, vec *args, - bool include_std) +lookup_arg_dependent_1 (tree name, tree fns, vec *args) { struct arg_lookup k; @@ -5617,8 +5616,6 @@ lookup_arg_dependent_1 (tree name, tree fns, vec *args, else k.fn_set = NULL; - if (include_std) - arg_assoc_namespace (&k, std_node); arg_assoc_args_vec (&k, args); fns = k.functions; @@ -5643,13 +5640,12 @@ lookup_arg_dependent_1 (tree name, tree fns, vec *args, /* Wrapper for lookup_arg_dependent_1. */ tree -lookup_arg_dependent (tree name, tree fns, vec *args, - bool include_std) +lookup_arg_dependent (tree name, tree fns, vec *args) { tree ret; bool subtime; subtime = timevar_cond_start (TV_NAME_LOOKUP); - ret = lookup_arg_dependent_1 (name, fns, args, include_std); + ret = lookup_arg_dependent_1 (name, fns, args); timevar_cond_stop (TV_NAME_LOOKUP, subtime); return ret; } diff --git a/gcc/cp/name-lookup.h b/gcc/cp/name-lookup.h index 29b728569f2..a63442f85c2 100644 --- a/gcc/cp/name-lookup.h +++ b/gcc/cp/name-lookup.h @@ -338,7 +338,7 @@ extern void do_toplevel_using_decl (tree, tree, tree); extern void do_local_using_decl (tree, tree, tree); extern tree do_class_using_decl (tree, tree); extern void do_using_directive (tree); -extern tree lookup_arg_dependent (tree, tree, vec *, bool); +extern tree lookup_arg_dependent (tree, tree, vec *); extern bool is_associated_namespace (tree, tree); extern void parse_using_directive (tree, tree); extern tree innermost_non_namespace_value (tree); diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 35dcefd2656..c99c1fcb645 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -6076,7 +6076,6 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p, if (!any_type_dependent_arguments_p (args)) postfix_expression = perform_koenig_lookup (postfix_expression, args, - /*include_std=*/false, complain); } else @@ -6102,7 +6101,6 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p, if (!any_type_dependent_arguments_p (args)) postfix_expression = perform_koenig_lookup (postfix_expression, args, - /*include_std=*/false, complain); } } @@ -10356,12 +10354,10 @@ cp_parser_perform_range_for_lookup (tree range, tree *begin, tree *end) vec_safe_push (vec, range); member_begin = perform_koenig_lookup (id_begin, vec, - /*include_std=*/true, tf_warning_or_error); *begin = finish_call_expr (member_begin, &vec, false, true, tf_warning_or_error); member_end = perform_koenig_lookup (id_end, vec, - /*include_std=*/true, tf_warning_or_error); *end = finish_call_expr (member_end, &vec, false, true, tf_warning_or_error); diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index add4cc61d5d..3b8f83a596c 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -14490,8 +14490,7 @@ tsubst_copy_and_build (tree t, into a non-dependent call. */ && type_dependent_expression_p_push (t) && !any_type_dependent_arguments_p (call_args)) - function = perform_koenig_lookup (function, call_args, false, - tf_none); + function = perform_koenig_lookup (function, call_args, tf_none); if (identifier_p (function) && !any_type_dependent_arguments_p (call_args)) diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 91bdb83bbbc..0bb64c7752b 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2041,12 +2041,10 @@ empty_expr_stmt_p (tree expr_stmt) /* Perform Koenig lookup. FN is the postfix-expression representing the function (or functions) to call; ARGS are the arguments to the - call; if INCLUDE_STD then the `std' namespace is automatically - considered an associated namespace (used in range-based for loops). - Returns the functions to be considered by overload resolution. */ + call. Returns the functions to be considered by overload resolution. */ tree -perform_koenig_lookup (tree fn, vec *args, bool include_std, +perform_koenig_lookup (tree fn, vec *args, tsubst_flags_t complain) { tree identifier = NULL_TREE; @@ -2083,7 +2081,7 @@ perform_koenig_lookup (tree fn, vec *args, bool include_std, if (!any_type_dependent_arguments_p (args) && !any_dependent_template_arguments_p (tmpl_args)) { - fn = lookup_arg_dependent (identifier, functions, args, include_std); + fn = lookup_arg_dependent (identifier, functions, args); if (!fn) { /* The unqualified name could not be resolved. */ @@ -4643,7 +4641,7 @@ omp_reduction_lookup (location_t loc, tree id, tree type, tree *baselinkp, { vec *args = NULL; vec_safe_push (args, build_reference_type (type)); - id = perform_koenig_lookup (id, args, false, tf_none); + id = perform_koenig_lookup (id, args, tf_none); } } else if (TREE_CODE (id) == SCOPE_REF) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ebc453d5901..0950914255e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2014-01-03 Paolo Carlini + + Core DR 1442 + PR c++/59165 + * g++.dg/cpp0x/range-for28.C: New. + * g++.dg/cpp0x/range-for3.C: Update. + 2014-01-02 Joseph Myers * gcc.target/powerpc/rs6000-ldouble-3.c: New test. diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for28.C b/gcc/testsuite/g++.dg/cpp0x/range-for28.C new file mode 100644 index 00000000000..5007349949a --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/range-for28.C @@ -0,0 +1,11 @@ +// PR c++/59165 +// { dg-require-effective-target c++11 } + +namespace std { +int* begin(int i) { return (int*)0; } +int* end(int i) { return (int*)0; } +} + +int main() { + for (int a : 10) { } // { dg-error "was not declared" } +} diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for3.C b/gcc/testsuite/g++.dg/cpp0x/range-for3.C index c2204f91758..2f1ce382651 100644 --- a/gcc/testsuite/g++.dg/cpp0x/range-for3.C +++ b/gcc/testsuite/g++.dg/cpp0x/range-for3.C @@ -36,7 +36,7 @@ namespace std int main() { container c(1,4); - for (int it : c) + for (int it : c) // { dg-error "was not declared" } { } } -- cgit v1.2.1 From 0ff576b901c1d35d382abef6472c003809bbe585 Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 3 Jan 2014 12:22:17 +0000 Subject: PR target/59625 * config/i386/i386.c (ix86_avoid_jump_mispredicts): Don't consider asm goto as jump. * gcc.target/i386/pr59625.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206314 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/config/i386/i386.c | 14 +++++++++---- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/i386/pr59625.c | 36 +++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr59625.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e4d71d700e9..09639d3cd56 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2014-01-03 Jakub Jelinek + PR target/59625 + * config/i386/i386.c (ix86_avoid_jump_mispredicts): Don't consider + asm goto as jump. + * config/i386/i386.md (MODE_SIZE): New mode attribute. (push splitter): Use instead of GET_MODE_SIZE (mode). diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 637ea655d50..d2f5b6e9fda 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -38825,7 +38825,10 @@ ix86_avoid_jump_mispredicts (void) The smallest offset in the page INSN can start is the case where START ends on the offset 0. Offset of INSN is then NBYTES - sizeof (INSN). We add p2align to 16byte window with maxskip 15 - NBYTES + sizeof (INSN). - */ + + Don't consider asm goto as jump, while it can contain a jump, it doesn't + have to, control transfer to label(s) can be performed through other + means, and also we estimate minimum length of all asm stmts as 0. */ for (insn = start; insn; insn = NEXT_INSN (insn)) { int min_size; @@ -38852,7 +38855,8 @@ ix86_avoid_jump_mispredicts (void) while (nbytes + max_skip >= 16) { start = NEXT_INSN (start); - if (JUMP_P (start) || CALL_P (start)) + if ((JUMP_P (start) && asm_noperands (PATTERN (start)) < 0) + || CALL_P (start)) njumps--, isjump = 1; else isjump = 0; @@ -38867,7 +38871,8 @@ ix86_avoid_jump_mispredicts (void) if (dump_file) fprintf (dump_file, "Insn %i estimated to %i bytes\n", INSN_UID (insn), min_size); - if (JUMP_P (insn) || CALL_P (insn)) + if ((JUMP_P (insn) && asm_noperands (PATTERN (insn)) < 0) + || CALL_P (insn)) njumps++; else continue; @@ -38875,7 +38880,8 @@ ix86_avoid_jump_mispredicts (void) while (njumps > 3) { start = NEXT_INSN (start); - if (JUMP_P (start) || CALL_P (start)) + if ((JUMP_P (start) && asm_noperands (PATTERN (start)) < 0) + || CALL_P (start)) njumps--, isjump = 1; else isjump = 0; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0950914255e..49b55f8b49e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-01-03 Jakub Jelinek + + PR target/59625 + * gcc.target/i386/pr59625.c: New test. + 2014-01-03 Paolo Carlini Core DR 1442 diff --git a/gcc/testsuite/gcc.target/i386/pr59625.c b/gcc/testsuite/gcc.target/i386/pr59625.c new file mode 100644 index 00000000000..8e1a7794bc4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59625.c @@ -0,0 +1,36 @@ +/* PR target/59625 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -mtune=atom" } */ + +int +foo (void) +{ + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + asm goto ("" : : : : lab); + return 0; +lab: + return 1; +} + +/* Verify we don't consider asm goto as a jump for four jumps limit + optimization. asm goto doesn't have to contain a jump at all, + the branching to labels can happen through different means. */ +/* { dg-final { scan-assembler-not "(p2align\[^\n\r\]*\[\n\r]*\[^\n\r\]*){8}p2align" } } */ -- cgit v1.2.1 From 1545a06d02d0079b240c843a726841936ea3b9a1 Mon Sep 17 00:00:00 2001 From: mpolacek Date: Fri, 3 Jan 2014 12:28:31 +0000 Subject: PR other/59661 * doc/extend.texi: Fix the return value of __builtin_FUNCTION and __builtin_FILE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206315 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/doc/extend.texi | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 09639d3cd56..a5e8ee2b5a2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-01-03 Marek Polacek + + PR other/59661 + * doc/extend.texi: Fix the return value of __builtin_FUNCTION and + __builtin_FILE. + 2014-01-03 Jakub Jelinek PR target/59625 diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 23c530b2f86..84fd594b605 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -8728,12 +8728,12 @@ This function is the equivalent to the preprocessor @code{__LINE__} macro and returns the line number of the invocation of the built-in. @end deftypefn -@deftypefn {Built-in Function} int __builtin_FUNCTION () +@deftypefn {Built-in Function} {const char *} __builtin_FUNCTION () This function is the equivalent to the preprocessor @code{__FUNCTION__} macro and returns the function name the invocation of the built-in is in. @end deftypefn -@deftypefn {Built-in Function} int __builtin_FILE () +@deftypefn {Built-in Function} {const char *} __builtin_FILE () This function is the equivalent to the preprocessor @code{__FILE__} macro and returns the file name the invocation of the built-in is in. @end deftypefn -- cgit v1.2.1 From 7e862b4e196dc67a46156d215ebfa5ea5c2af614 Mon Sep 17 00:00:00 2001 From: schwab Date: Fri, 3 Jan 2014 13:57:45 +0000 Subject: * config/m68k/m68k.c (handle_move_double): Handle pushes with overlapping registers also for registers other than the stack pointer. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206317 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/m68k/m68k.c | 10 +++++----- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a5e8ee2b5a2..1cb81b7aa4a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-01-03 Andreas Schwab + + * config/m68k/m68k.c (handle_move_double): Handle pushes with + overlapping registers also for registers other than the stack + pointer. + 2014-01-03 Marek Polacek PR other/59661 diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 25b8580e0d6..f20d0719cef 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -3328,12 +3328,12 @@ handle_move_double (rtx operands[2], latehalf[1] = adjust_address (operands[1], SImode, 0); } - /* If insn is effectively movd N(sp),-(sp) then we will do the - high word first. We should use the adjusted operand 1 (which is N+4(sp)) - for the low word as well, to compensate for the first decrement of sp. */ + /* If insn is effectively movd N(REG),-(REG) then we will do the high + word first. We should use the adjusted operand 1 (which is N+4(REG)) + for the low word as well, to compensate for the first decrement of + REG. */ if (optype0 == PUSHOP - && REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM - && reg_overlap_mentioned_p (stack_pointer_rtx, operands[1])) + && reg_overlap_mentioned_p (XEXP (XEXP (operands[0], 0), 0), operands[1])) operands[1] = middlehalf[1] = latehalf[1]; /* For (set (reg:DI N) (mem:DI ... (reg:SI N) ...)), -- cgit v1.2.1 From 6e984e6f0818b78ca5d3feb7005bcbdba69a6091 Mon Sep 17 00:00:00 2001 From: meibf Date: Fri, 3 Jan 2014 15:40:57 +0000 Subject: 2014-01-03 Bingfeng Mei PR tree-optimization/59651 * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): Address range for negative step should be added by TYPE_SIZE_UNIT. PR tree-optimization/59651 * gcc.dg/torture/pr59651.c: New test. * gcc.dg/vect/pr59651.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206319 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gcc.dg/torture/pr59651.c | 20 ++++++++++++++++++++ gcc/testsuite/gcc.dg/vect/pr59651.c | 4 ++++ gcc/tree-vect-loop-manip.c | 15 +++++++++++++-- 5 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr59651.c create mode 100644 gcc/testsuite/gcc.dg/vect/pr59651.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1cb81b7aa4a..cf4cfabeb82 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-01-03 Bingfeng Mei + + PR tree-optimization/59651 + * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): + Address range for negative step should be added by TYPE_SIZE_UNIT. + 2014-01-03 Andreas Schwab * config/m68k/m68k.c (handle_move_double): Handle pushes with diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 49b55f8b49e..b7639618d19 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-01-03 Bingfeng Mei + + PR tree-optimization/59651 + * gcc.dg/torture/pr59651.c: New test. + * gcc.dg/vect/pr59651.c: Ditto. + 2014-01-03 Jakub Jelinek PR target/59625 diff --git a/gcc/testsuite/gcc.dg/torture/pr59651.c b/gcc/testsuite/gcc.dg/torture/pr59651.c new file mode 100644 index 00000000000..7139ba9bf52 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr59651.c @@ -0,0 +1,20 @@ +/* PR tree-optimization/59561 */ +/* { dg-do run } */ + +extern void abort (void); +int a[] = { 0, 0, 0, 0, 0, 0, 0, 6 }; + +int b; +int +main () +{ + for (;;) + { + for (b = 7; b; --b) + a[b] = a[7] > 1; + break; + } + if (a[1] != 0) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/vect/pr59651.c b/gcc/testsuite/gcc.dg/vect/pr59651.c new file mode 100644 index 00000000000..4407785aab4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr59651.c @@ -0,0 +1,4 @@ +/* PR tree-optimization/59561 */ +#include "../torture/pr59651.c" + +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c index 3eb85a5c498..e8dbf4daf46 100644 --- a/gcc/tree-vect-loop-manip.c +++ b/gcc/tree-vect-loop-manip.c @@ -2240,13 +2240,24 @@ vect_create_cond_for_alias_checks (loop_vec_info loop_vinfo, tree * cond_expr) tree seg_a_min = addr_base_a; tree seg_a_max = fold_build_pointer_plus (addr_base_a, segment_length_a); + /* For negative step, we need to adjust address range by TYPE_SIZE_UNIT + bytes, e.g., int a[3] -> a[1] range is [a+4, a+16) instead of + [a, a+12) */ if (tree_int_cst_compare (DR_STEP (dr_a.dr), size_zero_node) < 0) - seg_a_min = seg_a_max, seg_a_max = addr_base_a; + { + tree unit_size = TYPE_SIZE_UNIT (TREE_TYPE (DR_REF (dr_a.dr))); + seg_a_min = fold_build_pointer_plus (seg_a_max, unit_size); + seg_a_max = fold_build_pointer_plus (addr_base_a, unit_size); + } tree seg_b_min = addr_base_b; tree seg_b_max = fold_build_pointer_plus (addr_base_b, segment_length_b); if (tree_int_cst_compare (DR_STEP (dr_b.dr), size_zero_node) < 0) - seg_b_min = seg_b_max, seg_b_max = addr_base_b; + { + tree unit_size = TYPE_SIZE_UNIT (TREE_TYPE (DR_REF (dr_b.dr))); + seg_b_min = fold_build_pointer_plus (seg_b_max, unit_size); + seg_b_max = fold_build_pointer_plus (addr_base_b, unit_size); + } part_cond_expr = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, -- cgit v1.2.1 From 04e0495a6da35f3b0bcedbd75908cb6e9ba8ff8f Mon Sep 17 00:00:00 2001 From: burnus Date: Fri, 3 Jan 2014 20:24:50 +0000 Subject: 2014-01-03 Tobias Burnus PR c++/58567 * pt.c (tsubst_omp_for_iterator): Early return for * error_mark_node. 2014-01-03 Tobias Burnus PR c++/58567 * g++.dg/gomp/pr58567.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206322 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/pt.c | 4 ++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/gomp/pr58567.C | 15 +++++++++++++++ 4 files changed, 29 insertions(+) create mode 100644 gcc/testsuite/g++.dg/gomp/pr58567.C (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e89bc50baa8..70211081dbf 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2014-01-03 Tobias Burnus + + PR c++/58567 + * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node. + 2014-01-03 Paolo Carlini Core DR 1442 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 3b8f83a596c..98d7365a7cc 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -13035,6 +13035,10 @@ tsubst_omp_for_iterator (tree t, int i, tree declv, tree initv, init_decl = (init && TREE_CODE (init) == DECL_EXPR); init = RECUR (init); decl = RECUR (decl); + + if (decl == error_mark_node || init == error_mark_node) + return; + if (init_decl) { gcc_assert (!processing_template_decl); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b7639618d19..ebf40341ef5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-01-03 Tobias Burnus + + PR c++/58567 + * g++.dg/gomp/pr58567.C: New. + 2014-01-03 Bingfeng Mei PR tree-optimization/59651 diff --git a/gcc/testsuite/g++.dg/gomp/pr58567.C b/gcc/testsuite/g++.dg/gomp/pr58567.C new file mode 100644 index 00000000000..35a5bb027ff --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr58567.C @@ -0,0 +1,15 @@ +/* { dg-do compile } */ + +/* PR c++/58567 - was ICEing before */ + +template void foo() +{ + #pragma omp parallel for + for (typename T::X i = 0; i < 100; ++i) /* { dg-error "'int' is not a class, struct, or union type|expected iteration declaration or initialization" } */ + ; +} + +void bar() +{ + foo(); +} -- cgit v1.2.1